Index: patches/gcc-4.8.1-branch_update-1.patch
===================================================================
--- patches/gcc-4.8.1-branch_update-1.patch	(revision be48ca7076bf987efd4c9ebec4a6049ff724098e)
+++ patches/gcc-4.8.1-branch_update-1.patch	(revision be48ca7076bf987efd4c9ebec4a6049ff724098e)
@@ -0,0 +1,193050 @@
+Submitted By: Jim Gifford (jim at cross-lfs dot org)
+Date: 08-28-2013
+Initial Package Version: 4.8.1
+Origin: Upstream
+Upstream Status: Applied
+Description: This is a branch update for gcc-4.8.1, and should be
+             rechecked periodically.
+
+This patch was made from Revision # 202050.
+
+diff -Naur gcc-4.8.1.orig/fixincludes/fixincl.x gcc-4.8.1/fixincludes/fixincl.x
+--- gcc-4.8.1.orig/fixincludes/fixincl.x	2013-01-15 22:07:20.000000000 -0600
++++ gcc-4.8.1/fixincludes/fixincl.x	2013-05-31 06:43:36.437119000 -0500
+@@ -2,11 +2,11 @@
+  * 
+  * DO NOT EDIT THIS FILE   (fixincl.x)
+  * 
+- * It has been AutoGen-ed  Saturday December 29, 2012 at 09:17:09 AM BRST
++ * It has been AutoGen-ed  Thursday May 16, 2013 at 03:34:25 PM MEST
+  * From the definitions    inclhack.def
+  * and the template file   fixincl
+  */
+-/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Dec 29 09:17:10 BRST 2012
++/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 16 15:34:25 MEST 2013
+  *
+  * You must regenerate it.  Use the ./genfixes script.
+  *
+@@ -6663,7 +6663,7 @@
+  */
+ static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
+     "format",
+-    "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
++    "#if __cplusplus < 201103L\n\
+ %0\n\
+ #endif",
+     (char*)NULL };
+diff -Naur gcc-4.8.1.orig/fixincludes/inclhack.def gcc-4.8.1/fixincludes/inclhack.def
+--- gcc-4.8.1.orig/fixincludes/inclhack.def	2013-01-15 22:07:20.000000000 -0600
++++ gcc-4.8.1/fixincludes/inclhack.def	2013-05-31 06:43:36.437119000 -0500
+@@ -3447,7 +3447,7 @@
+ 
+ 
+ /*
+- *  The pow overloads with int were removed in C++ 2011.
++ *  The pow overloads with int were removed in C++ 2011 DR 550.
+  */
+ fix = {
+     hackname  = solaris_pow_int_overload;
+@@ -3456,7 +3456,7 @@
+     select    = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
+ 		" *\\{[^{}]*\n[^{}]*\\}";
+     c_fix     = format;
+-    c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
++    c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
+ 
+     test_text =
+     "	inline long double pow(long double __X, int __Y) { return\n"
+diff -Naur gcc-4.8.1.orig/fixincludes/tests/base/iso/math_iso.h gcc-4.8.1/fixincludes/tests/base/iso/math_iso.h
+--- gcc-4.8.1.orig/fixincludes/tests/base/iso/math_iso.h	2011-08-10 03:43:38.000000000 -0500
++++ gcc-4.8.1/fixincludes/tests/base/iso/math_iso.h	2013-05-31 06:43:36.437119000 -0500
+@@ -10,7 +10,7 @@
+ 
+ 
+ #if defined( SOLARIS_POW_INT_OVERLOAD_CHECK )
+-#ifndef __GXX_EXPERIMENTAL_CXX0X__
++#if __cplusplus < 201103L
+ 	inline long double pow(long double __X, int __Y) { return
+ 		__powl(__X, (long double) (__Y)); }
+ #endif
+diff -Naur gcc-4.8.1.orig/gcc/ada/gcc-interface/ada-tree.h gcc-4.8.1/gcc/ada/gcc-interface/ada-tree.h
+--- gcc-4.8.1.orig/gcc/ada/gcc-interface/ada-tree.h	2013-02-25 13:08:51.000000000 -0600
++++ gcc-4.8.1/gcc/ada/gcc-interface/ada-tree.h	2013-06-13 02:51:32.352026000 -0500
+@@ -360,10 +360,6 @@
+    constant CONSTRUCTOR.  */
+ #define DECL_CONST_ADDRESS_P(NODE) DECL_LANG_FLAG_0 (CONST_DECL_CHECK (NODE))
+ 
+-/* Nonzero in a PARM_DECL if it is always used by double reference, i.e. a
+-   pair of INDIRECT_REFs is needed to access the object.  */
+-#define DECL_BY_DOUBLE_REF_P(NODE) DECL_LANG_FLAG_0 (PARM_DECL_CHECK (NODE))
+-
+ /* Nonzero in a FIELD_DECL if it is declared as aliased.  */
+ #define DECL_ALIASED_P(NODE) DECL_LANG_FLAG_0 (FIELD_DECL_CHECK (NODE))
+ 
+diff -Naur gcc-4.8.1.orig/gcc/ada/gcc-interface/decl.c gcc-4.8.1/gcc/ada/gcc-interface/decl.c
+--- gcc-4.8.1.orig/gcc/ada/gcc-interface/decl.c	2013-05-07 03:03:15.000000000 -0500
++++ gcc-4.8.1/gcc/ada/gcc-interface/decl.c	2013-06-13 02:51:32.352026000 -0500
+@@ -1019,7 +1019,7 @@
+ 			save_gnu_tree (gnat_entity, gnu_decl, true);
+ 			saved = true;
+ 			annotate_object (gnat_entity, gnu_type, NULL_TREE,
+-					 false, false);
++					 false);
+ 			/* This assertion will fail if the renamed object
+ 			   isn't aligned enough as to make it possible to
+ 			   honor the alignment set on the renaming.  */
+@@ -1605,7 +1605,7 @@
+ 	   type of the object and not on the object directly, and makes it
+ 	   possible to support all confirming representation clauses.  */
+ 	annotate_object (gnat_entity, TREE_TYPE (gnu_decl), gnu_object_size,
+-			 used_by_ref, false);
++			 used_by_ref);
+       }
+       break;
+ 
+@@ -5595,7 +5595,7 @@
+   /* The parameter can be indirectly modified if its address is taken.  */
+   bool ro_param = in_param && !Address_Taken (gnat_param);
+   bool by_return = false, by_component_ptr = false;
+-  bool by_ref = false, by_double_ref = false;
++  bool by_ref = false;
+   tree gnu_param;
+ 
+   /* Copy-return is used only for the first parameter of a valued procedure.
+@@ -5720,19 +5720,6 @@
+ 	gnu_param_type
+ 	  = build_qualified_type (gnu_param_type, TYPE_QUAL_RESTRICT);
+       by_ref = true;
+-
+-      /* In some ABIs, e.g. SPARC 32-bit, fat pointer types are themselves
+-	 passed by reference.  Pass them by explicit reference, this will
+-	 generate more debuggable code at -O0.  */
+-      if (TYPE_IS_FAT_POINTER_P (gnu_param_type)
+-	  && targetm.calls.pass_by_reference (pack_cumulative_args (NULL),
+-					      TYPE_MODE (gnu_param_type),
+-					      gnu_param_type,
+-					      true))
+-	{
+-	   gnu_param_type = build_reference_type (gnu_param_type);
+-	   by_double_ref = true;
+-	}
+     }
+ 
+   /* Pass In Out or Out parameters using copy-in copy-out mechanism.  */
+@@ -5775,7 +5762,6 @@
+   gnu_param = create_param_decl (gnu_param_name, gnu_param_type,
+ 				 ro_param || by_ref || by_component_ptr);
+   DECL_BY_REF_P (gnu_param) = by_ref;
+-  DECL_BY_DOUBLE_REF_P (gnu_param) = by_double_ref;
+   DECL_BY_COMPONENT_PTR_P (gnu_param) = by_component_ptr;
+   DECL_BY_DESCRIPTOR_P (gnu_param) = (mech == By_Descriptor ||
+                                       mech == By_Short_Descriptor);
+@@ -7427,18 +7413,13 @@
+ /* Given GNAT_ENTITY, an object (constant, variable, parameter, exception)
+    and GNU_TYPE, its corresponding GCC type, set Esize and Alignment to the
+    size and alignment used by Gigi.  Prefer SIZE over TYPE_SIZE if non-null.
+-   BY_REF is true if the object is used by reference and BY_DOUBLE_REF is
+-   true if the object is used by double reference.  */
++   BY_REF is true if the object is used by reference.  */
+ 
+ void
+-annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size, bool by_ref,
+-		 bool by_double_ref)
++annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size, bool by_ref)
+ {
+   if (by_ref)
+     {
+-      if (by_double_ref)
+-	gnu_type = TREE_TYPE (gnu_type);
+-
+       if (TYPE_IS_FAT_POINTER_P (gnu_type))
+ 	gnu_type = TYPE_UNCONSTRAINED_ARRAY (gnu_type);
+       else
+diff -Naur gcc-4.8.1.orig/gcc/ada/gcc-interface/gigi.h gcc-4.8.1/gcc/ada/gcc-interface/gigi.h
+--- gcc-4.8.1.orig/gcc/ada/gcc-interface/gigi.h	2013-02-06 07:19:20.000000000 -0600
++++ gcc-4.8.1/gcc/ada/gcc-interface/gigi.h	2013-06-13 02:51:32.352026000 -0500
+@@ -177,10 +177,9 @@
+ /* Given GNAT_ENTITY, an object (constant, variable, parameter, exception)
+    and GNU_TYPE, its corresponding GCC type, set Esize and Alignment to the
+    size and alignment used by Gigi.  Prefer SIZE over TYPE_SIZE if non-null.
+-   BY_REF is true if the object is used by reference and BY_DOUBLE_REF is
+-   true if the object is used by double reference.  */
++   BY_REF is true if the object is used by reference.  */
+ extern void annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size,
+-			     bool by_ref, bool by_double_ref);
++			     bool by_ref);
+ 
+ /* Return the variant part of RECORD_TYPE, if any.  Otherwise return NULL.  */
+ extern tree get_variant_part (tree record_type);
+@@ -930,11 +929,10 @@
+ 
+ /* Convert GNU_EXPR, a pointer to a VMS descriptor, to GNU_TYPE, a regular
+    pointer or fat pointer type.  GNU_EXPR_ALT_TYPE is the alternate (32-bit)
+-   pointer type of GNU_EXPR.  BY_REF is true if the result is to be used by
+-   reference.  GNAT_SUBPROG is the subprogram to which the VMS descriptor is
+-   passed.  */
++   pointer type of GNU_EXPR.  GNAT_SUBPROG is the subprogram to which the
++   descriptor is passed.  */
+ extern tree convert_vms_descriptor (tree gnu_type, tree gnu_expr,
+-				    tree gnu_expr_alt_type, bool by_ref,
++				    tree gnu_expr_alt_type,
+ 				    Entity_Id gnat_subprog);
+ 
+ /* Indicate that we need to take the address of T and that it therefore
+diff -Naur gcc-4.8.1.orig/gcc/ada/gcc-interface/trans.c gcc-4.8.1/gcc/ada/gcc-interface/trans.c
+--- gcc-4.8.1.orig/gcc/ada/gcc-interface/trans.c	2013-05-26 05:04:50.000000000 -0500
++++ gcc-4.8.1/gcc/ada/gcc-interface/trans.c	2013-08-13 10:59:03.399464000 -0500
+@@ -1075,19 +1075,6 @@
+     {
+       const bool read_only = DECL_POINTS_TO_READONLY_P (gnu_result);
+ 
+-      /* First do the first dereference if needed.  */
+-      if (TREE_CODE (gnu_result) == PARM_DECL
+-	  && DECL_BY_DOUBLE_REF_P (gnu_result))
+-	{
+-	  gnu_result = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_result);
+-	  if (TREE_CODE (gnu_result) == INDIRECT_REF)
+-	    TREE_THIS_NOTRAP (gnu_result) = 1;
+-
+-	  /* The first reference, in case of a double reference, always points
+-	     to read-only, see gnat_to_gnu_param for the rationale.  */
+-	  TREE_READONLY (gnu_result) = 1;
+-	}
+-
+       /* If it's a PARM_DECL to foreign convention subprogram, convert it.  */
+       if (TREE_CODE (gnu_result) == PARM_DECL
+ 	  && DECL_BY_COMPONENT_PTR_P (gnu_result))
+@@ -2280,7 +2267,10 @@
+   if (TREE_CODE (val) != INTEGER_CST)
+     return true;
+ 
+-  return tree_int_cst_equal (val, min_or_max_val) == 1;
++  if (max)
++    return tree_int_cst_lt (val, min_or_max_val) == 0;
++  else
++    return tree_int_cst_lt (min_or_max_val, val) == 0;
+ }
+ 
+ /* Return true if VAL (of type TYPE) can equal the minimum value of TYPE.
+@@ -3251,7 +3241,6 @@
+ 	    = convert_vms_descriptor (TREE_TYPE (gnu_subprog_param),
+ 				      gnu_stub_param,
+ 				      DECL_PARM_ALT_TYPE (gnu_stub_param),
+-				      DECL_BY_DOUBLE_REF_P (gnu_subprog_param),
+ 				      gnat_subprog);
+ 	}
+       else
+@@ -3546,8 +3535,7 @@
+       bool is_var_decl = (TREE_CODE (gnu_param) == VAR_DECL);
+ 
+       annotate_object (gnat_param, TREE_TYPE (gnu_param), NULL_TREE,
+-		       DECL_BY_REF_P (gnu_param),
+-		       !is_var_decl && DECL_BY_DOUBLE_REF_P (gnu_param));
++		       DECL_BY_REF_P (gnu_param));
+ 
+       if (is_var_decl)
+ 	save_gnu_tree (gnat_param, NULL_TREE, false);
+@@ -4009,12 +3997,6 @@
+ 	  /* The symmetry of the paths to the type of an entity is broken here
+ 	     since arguments don't know that they will be passed by ref.  */
+ 	  gnu_formal_type = TREE_TYPE (gnu_formal);
+-
+-	  if (DECL_BY_DOUBLE_REF_P (gnu_formal))
+-	    gnu_actual
+-	      = build_unary_op (ADDR_EXPR, TREE_TYPE (gnu_formal_type),
+-				gnu_actual);
+-
+ 	  gnu_actual = build_unary_op (ADDR_EXPR, gnu_formal_type, gnu_actual);
+ 	}
+       else if (is_true_formal_parm && DECL_BY_COMPONENT_PTR_P (gnu_formal))
+diff -Naur gcc-4.8.1.orig/gcc/ada/gcc-interface/utils.c gcc-4.8.1/gcc/ada/gcc-interface/utils.c
+--- gcc-4.8.1.orig/gcc/ada/gcc-interface/utils.c	2013-02-06 07:19:20.000000000 -0600
++++ gcc-4.8.1/gcc/ada/gcc-interface/utils.c	2013-06-13 02:51:32.352026000 -0500
+@@ -4073,33 +4073,25 @@
+ 
+ /* Convert GNU_EXPR, a pointer to a VMS descriptor, to GNU_TYPE, a regular
+    pointer or fat pointer type.  GNU_EXPR_ALT_TYPE is the alternate (32-bit)
+-   pointer type of GNU_EXPR.  BY_REF is true if the result is to be used by
+-   reference.  GNAT_SUBPROG is the subprogram to which the VMS descriptor is
+-   passed.  */
++   pointer type of GNU_EXPR.  GNAT_SUBPROG is the subprogram to which the
++   descriptor is passed.  */
+ 
+ tree
+ convert_vms_descriptor (tree gnu_type, tree gnu_expr, tree gnu_expr_alt_type,
+-			bool by_ref, Entity_Id gnat_subprog)
++			Entity_Id gnat_subprog)
+ {
+   tree desc_type = TREE_TYPE (TREE_TYPE (gnu_expr));
+   tree desc = build1 (INDIRECT_REF, desc_type, gnu_expr);
+   tree mbo = TYPE_FIELDS (desc_type);
+   const char *mbostr = IDENTIFIER_POINTER (DECL_NAME (mbo));
+   tree mbmo = DECL_CHAIN (DECL_CHAIN (DECL_CHAIN (mbo)));
+-  tree real_type, is64bit, gnu_expr32, gnu_expr64;
+-
+-  if (by_ref)
+-    real_type = TREE_TYPE (gnu_type);
+-  else
+-    real_type = gnu_type;
++  tree is64bit, gnu_expr32, gnu_expr64;
+ 
+   /* If the field name is not MBO, it must be 32-bit and no alternate.
+      Otherwise primary must be 64-bit and alternate 32-bit.  */
+   if (strcmp (mbostr, "MBO") != 0)
+     {
+-      tree ret = convert_vms_descriptor32 (real_type, gnu_expr, gnat_subprog);
+-      if (by_ref)
+-	ret = build_unary_op (ADDR_EXPR, gnu_type, ret);
++      tree ret = convert_vms_descriptor32 (gnu_type, gnu_expr, gnat_subprog);
+       return ret;
+     }
+ 
+@@ -4116,14 +4108,9 @@
+ 					integer_minus_one_node));
+ 
+   /* Build the 2 possible end results.  */
+-  gnu_expr64 = convert_vms_descriptor64 (real_type, gnu_expr, gnat_subprog);
+-  if (by_ref)
+-    gnu_expr64 =  build_unary_op (ADDR_EXPR, gnu_type, gnu_expr64);
++  gnu_expr64 = convert_vms_descriptor64 (gnu_type, gnu_expr, gnat_subprog);
+   gnu_expr = fold_convert (gnu_expr_alt_type, gnu_expr);
+-  gnu_expr32 = convert_vms_descriptor32 (real_type, gnu_expr, gnat_subprog);
+-  if (by_ref)
+-    gnu_expr32 =  build_unary_op (ADDR_EXPR, gnu_type, gnu_expr32);
+-
++  gnu_expr32 = convert_vms_descriptor32 (gnu_type, gnu_expr, gnat_subprog);
+   return build3 (COND_EXPR, gnu_type, is64bit, gnu_expr64, gnu_expr32);
+ }
+ 
+
+diff -Naur gcc-4.8.1.orig/gcc/ada/targparm.ads gcc-4.8.1/gcc/ada/targparm.ads
+--- gcc-4.8.1.orig/gcc/ada/targparm.ads	2013-02-06 04:35:52.000000000 -0600
++++ gcc-4.8.1/gcc/ada/targparm.ads	2013-06-13 02:51:32.352026000 -0500
+@@ -436,7 +436,7 @@
+    --  the source program may not contain explicit 64-bit shifts. In addition,
+    --  the code generated for packed arrays will avoid the use of long shifts.
+ 
+-   Support_Nondefault_SSO_On_Target : Boolean := False;
++   Support_Nondefault_SSO_On_Target : Boolean := True;
+    --  If True, the back end supports the non-default Scalar_Storage_Order
+    --  (i.e. allows non-confirming Scalar_Storage_Order attribute definition
+    --  clauses).
+diff -Naur gcc-4.8.1.orig/gcc/asan.c gcc-4.8.1/gcc/asan.c
+--- gcc-4.8.1.orig/gcc/asan.c	2013-02-28 15:23:23.000000000 -0600
++++ gcc-4.8.1/gcc/asan.c	2013-08-13 12:02:13.543712000 -0500
+@@ -1675,7 +1675,7 @@
+    access to the last byte of the argument; it uses the result of the
+    call to deduce the offset of that last byte.
+ 
+-   Upon completion, iff the call has actullay been instrumented, this
++   Upon completion, iff the call has actually been instrumented, this
+    function returns TRUE and *ITER points to the statement logically
+    following the built-in strlen function call *ITER was initially
+    pointing to.  Otherwise, the function returns FALSE and *ITER
+@@ -1706,10 +1706,10 @@
+   /* Instrument the access to the first byte of str_arg.  i.e:
+ 
+      _1 = str_arg; instrument (_1); */
++  tree cptr_type = build_pointer_type (char_type_node);
+   gimple str_arg_ssa =
+     gimple_build_assign_with_ops (NOP_EXPR,
+-				  make_ssa_name (build_pointer_type
+-						 (char_type_node), NULL),
++				  make_ssa_name (cptr_type, NULL),
+ 				  str_arg, NULL);
+   gimple_set_location (str_arg_ssa, loc);
+   gimple_stmt_iterator gsi = *iter;
+@@ -1728,8 +1728,7 @@
+      pointer_plus expr: (_1 + len).  */
+   gimple stmt =
+     gimple_build_assign_with_ops (POINTER_PLUS_EXPR,
+-				  make_ssa_name (TREE_TYPE (str_arg),
+-						 NULL),
++				  make_ssa_name (cptr_type, NULL),
+ 				  gimple_assign_lhs (str_arg_ssa),
+ 				  len);
+   gimple_set_location (stmt, loc);
+diff -Naur gcc-4.8.1.orig/gcc/c-family/c-ada-spec.c gcc-4.8.1/gcc/c-family/c-ada-spec.c
+--- gcc-4.8.1.orig/gcc/c-family/c-ada-spec.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/c-family/c-ada-spec.c	2013-08-09 05:53:01.541722000 -0500
+@@ -2900,7 +2900,7 @@
+       pp_string (buffer, "  -- ");
+       dump_sloc (buffer, t);
+ 
+-      if (is_abstract)
++      if (is_abstract || !DECL_ASSEMBLER_NAME (t))
+ 	return 1;
+ 
+       newline_and_indent (buffer, spc);
+diff -Naur gcc-4.8.1.orig/gcc/collect2.c gcc-4.8.1/gcc/collect2.c
+--- gcc-4.8.1.orig/gcc/collect2.c	2013-02-06 20:53:13.000000000 -0600
++++ gcc-4.8.1/gcc/collect2.c	2013-06-20 12:12:17.412846000 -0500
+@@ -366,8 +366,8 @@
+ 
+
+ /* Delete tempfiles and exit function.  */
+ 
+-void
+-collect_exit (int status)
++static void
++collect_atexit (void)
+ {
+   if (c_file != 0 && c_file[0])
+     maybe_unlink (c_file);
+@@ -395,13 +395,8 @@
+       maybe_unlink (lderrout);
+     }
+ 
+-  if (status != 0 && output_file != 0 && output_file[0])
+-    maybe_unlink (output_file);
+-
+   if (response_file)
+     maybe_unlink (response_file);
+-
+-  exit (status);
+ }
+ 
+ 
+
+@@ -970,6 +965,9 @@
+   signal (SIGCHLD, SIG_DFL);
+ #endif
+ 
++  if (atexit (collect_atexit) != 0)
++    fatal_error ("atexit failed");
++
+   /* Unlock the stdio streams.  */
+   unlock_std_streams ();
+ 
+@@ -1110,55 +1108,55 @@
+   if (ld_file_name == 0)
+ #endif
+ #ifdef REAL_LD_FILE_NAME
+-  ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME);
++  ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME, X_OK);
+   if (ld_file_name == 0)
+ #endif
+   /* Search the (target-specific) compiler dirs for ld'.  */
+-  ld_file_name = find_a_file (&cpath, real_ld_suffix);
++  ld_file_name = find_a_file (&cpath, real_ld_suffix, X_OK);
+   /* Likewise for `collect-ld'.  */
+   if (ld_file_name == 0)
+     {
+-      ld_file_name = find_a_file (&cpath, collect_ld_suffix);
++      ld_file_name = find_a_file (&cpath, collect_ld_suffix, X_OK);
+       use_collect_ld = ld_file_name != 0;
+     }
+   /* Search the compiler directories for `ld'.  We have protection against
+      recursive calls in find_a_file.  */
+   if (ld_file_name == 0)
+-    ld_file_name = find_a_file (&cpath, ld_suffixes[selected_linker]);
++    ld_file_name = find_a_file (&cpath, ld_suffixes[selected_linker], X_OK);
+   /* Search the ordinary system bin directories
+      for `ld' (if native linking) or `TARGET-ld' (if cross).  */
+   if (ld_file_name == 0)
+-    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker]);
++    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker], X_OK);
+ 
+ #ifdef REAL_NM_FILE_NAME
+-  nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME);
++  nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME, X_OK);
+   if (nm_file_name == 0)
+ #endif
+-  nm_file_name = find_a_file (&cpath, gnm_suffix);
++  nm_file_name = find_a_file (&cpath, gnm_suffix, X_OK);
+   if (nm_file_name == 0)
+-    nm_file_name = find_a_file (&path, full_gnm_suffix);
++    nm_file_name = find_a_file (&path, full_gnm_suffix, X_OK);
+   if (nm_file_name == 0)
+-    nm_file_name = find_a_file (&cpath, nm_suffix);
++    nm_file_name = find_a_file (&cpath, nm_suffix, X_OK);
+   if (nm_file_name == 0)
+-    nm_file_name = find_a_file (&path, full_nm_suffix);
++    nm_file_name = find_a_file (&path, full_nm_suffix, X_OK);
+ 
+ #ifdef LDD_SUFFIX
+-  ldd_file_name = find_a_file (&cpath, ldd_suffix);
++  ldd_file_name = find_a_file (&cpath, ldd_suffix, X_OK);
+   if (ldd_file_name == 0)
+-    ldd_file_name = find_a_file (&path, full_ldd_suffix);
++    ldd_file_name = find_a_file (&path, full_ldd_suffix, X_OK);
+ #endif
+ 
+ #ifdef REAL_STRIP_FILE_NAME
+-  strip_file_name = find_a_file (&path, REAL_STRIP_FILE_NAME);
++  strip_file_name = find_a_file (&path, REAL_STRIP_FILE_NAME, X_OK);
+   if (strip_file_name == 0)
+ #endif
+-  strip_file_name = find_a_file (&cpath, gstrip_suffix);
++  strip_file_name = find_a_file (&cpath, gstrip_suffix, X_OK);
+   if (strip_file_name == 0)
+-    strip_file_name = find_a_file (&path, full_gstrip_suffix);
++    strip_file_name = find_a_file (&path, full_gstrip_suffix, X_OK);
+   if (strip_file_name == 0)
+-    strip_file_name = find_a_file (&cpath, strip_suffix);
++    strip_file_name = find_a_file (&cpath, strip_suffix, X_OK);
+   if (strip_file_name == 0)
+-    strip_file_name = find_a_file (&path, full_strip_suffix);
++    strip_file_name = find_a_file (&path, full_strip_suffix, X_OK);
+ 
+   /* Determine the full path name of the C compiler to use.  */
+   c_file_name = getenv ("COLLECT_GCC");
+@@ -1171,12 +1169,12 @@
+ #endif
+     }
+ 
+-  p = find_a_file (&cpath, c_file_name);
++  p = find_a_file (&cpath, c_file_name, X_OK);
+ 
+   /* Here it should be safe to use the system search path since we should have
+      already qualified the name of the compiler when it is needed.  */
+   if (p == 0)
+-    p = find_a_file (&path, c_file_name);
++    p = find_a_file (&path, c_file_name, X_OK);
+ 
+   if (p)
+     c_file_name = p;
+@@ -1813,7 +1811,7 @@
+ 	  error ("%s terminated with signal %d [%s]%s",
+ 		 prog, sig, strsignal(sig),
+ 		 WCOREDUMP(status) ? ", core dumped" : "");
+-	  collect_exit (FATAL_EXIT_CODE);
++	  exit (FATAL_EXIT_CODE);
+ 	}
+ 
+       if (WIFEXITED (status))
+@@ -1829,7 +1827,7 @@
+   if (ret != 0)
+     {
+       error ("%s returned %d exit status", prog, ret);
+-      collect_exit (ret);
++      exit (ret);
+     }
+ 
+   if (response_file)
+diff -Naur gcc-4.8.1.orig/gcc/collect2.h gcc-4.8.1/gcc/collect2.h
+--- gcc-4.8.1.orig/gcc/collect2.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/collect2.h	2013-06-20 12:12:17.412846000 -0500
+@@ -25,8 +25,6 @@
+ extern struct pex_obj *collect_execute (const char *, char **, const char *,
+ 					const char *, int flags);
+ 
+-extern void collect_exit (int) ATTRIBUTE_NORETURN;
+-
+ extern int collect_wait (const char *, struct pex_obj *);
+ 
+ extern void dump_ld_file (const char *, FILE *);
+diff -Naur gcc-4.8.1.orig/gcc/common/config/s390/s390-common.c gcc-4.8.1/gcc/common/config/s390/s390-common.c
+--- gcc-4.8.1.orig/gcc/common/config/s390/s390-common.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/common/config/s390/s390-common.c	2013-08-02 10:41:10.548493000 -0500
+@@ -42,7 +42,7 @@
+     /* z196 */   PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+                  | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196,
+     /* zEC12 */  PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+-                 | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12
++                 | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+   };
+ 
+ /* Change optimizations to be performed, depending on the
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64-builtins.c gcc-4.8.1/gcc/config/aarch64/aarch64-builtins.c
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64-builtins.c	2013-02-28 11:19:33.000000000 -0600
++++ gcc-4.8.1/gcc/config/aarch64/aarch64-builtins.c	2013-07-17 04:06:21.894684000 -0500
+@@ -1154,6 +1154,7 @@
+       return aarch64_simd_expand_args (target, icode, 1, exp,
+ 				       SIMD_ARG_COPY_TO_REG, SIMD_ARG_STOP);
+ 
++    case AARCH64_SIMD_STORE1:
+     case AARCH64_SIMD_STORESTRUCT:
+       return aarch64_simd_expand_args (target, icode, 0, exp,
+ 				       SIMD_ARG_COPY_TO_REG,
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64.c gcc-4.8.1/gcc/config/aarch64/aarch64.c
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64.c	2013-05-02 12:00:00.000000000 -0500
++++ gcc-4.8.1/gcc/config/aarch64/aarch64.c	2013-06-03 10:33:09.355099000 -0500
+@@ -3373,7 +3373,7 @@
+ 	  output_operand_lossage ("invalid operand for '%%%c'", code);
+ 	  return;
+ 	}
+-      asm_fprintf (f, "0x%x", UINTVAL (x));
++      asm_fprintf (f, "0x%wx", UINTVAL (x));
+       break;
+ 
+     case 'w':
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64-linux.h gcc-4.8.1/gcc/config/aarch64/aarch64-linux.h
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64-linux.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/aarch64/aarch64-linux.h	2013-08-13 08:22:18.234270000 -0500
+@@ -23,6 +23,8 @@
+ 
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1"
+ 
++#define CPP_SPEC "%{pthread:-D_REENTRANT}"
++
+ #define LINUX_TARGET_LINK_SPEC  "%{h*}		\
+    %{static:-Bstatic}				\
+    %{shared:-shared}				\
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64.md gcc-4.8.1/gcc/config/aarch64/aarch64.md
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64.md	2013-04-25 12:00:44.000000000 -0500
++++ gcc-4.8.1/gcc/config/aarch64/aarch64.md	2013-06-07 06:00:38.802083000 -0500
+@@ -834,7 +834,8 @@
+    movi\\t%d0, %1"
+   [(set_attr "v8type" "move,move,move,alu,load1,store1,adr,adr,fmov,fmov,fmov,fmov")
+    (set_attr "mode" "DI")
+-   (set_attr "fp" "*,*,*,*,*,*,*,*,yes,yes,yes,yes")]
++   (set_attr "fp" "*,*,*,*,*,*,*,*,yes,yes,yes,*")
++   (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,yes")]
+ )
+ 
+ (define_insn "insv_imm<mode>"
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64-simd-builtins.def gcc-4.8.1/gcc/config/aarch64/aarch64-simd-builtins.def
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64-simd-builtins.def	2013-02-22 10:39:45.000000000 -0600
++++ gcc-4.8.1/gcc/config/aarch64/aarch64-simd-builtins.def	2013-07-17 04:06:21.894684000 -0500
+@@ -256,3 +256,10 @@
+   BUILTIN_VALL (BINOP, uzp2)
+   BUILTIN_VALL (BINOP, trn1)
+   BUILTIN_VALL (BINOP, trn2)
++
++  /* Implemented by aarch64_ld1<VALL:mode>.  */
++  BUILTIN_VALL (LOAD1, ld1)
++
++  /* Implemented by aarch64_st1<VALL:mode>.  */
++  BUILTIN_VALL (STORE1, st1)
++
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/aarch64-simd.md gcc-4.8.1/gcc/config/aarch64/aarch64-simd.md
+--- gcc-4.8.1.orig/gcc/config/aarch64/aarch64-simd.md	2013-04-11 09:14:56.000000000 -0500
++++ gcc-4.8.1/gcc/config/aarch64/aarch64-simd.md	2013-07-17 04:06:21.894684000 -0500
+@@ -3457,6 +3457,17 @@
+   DONE;
+ })
+ 
++(define_expand "aarch64_ld1<VALL:mode>"
++ [(match_operand:VALL 0 "register_operand")
++  (match_operand:DI 1 "register_operand")]
++  "TARGET_SIMD"
++{
++  enum machine_mode mode = <VALL:MODE>mode;
++  rtx mem = gen_rtx_MEM (mode, operands[1]);
++  emit_move_insn (operands[0], mem);
++  DONE;
++})
++
+ (define_expand "aarch64_ld<VSTRUCT:nregs><VQ:mode>"
+  [(match_operand:VSTRUCT 0 "register_operand" "=w")
+   (match_operand:DI 1 "register_operand" "r")
+@@ -3673,6 +3684,17 @@
+   DONE;
+ })
+ 
++(define_expand "aarch64_st1<VALL:mode>"
++ [(match_operand:DI 0 "register_operand")
++  (match_operand:VALL 1 "register_operand")]
++  "TARGET_SIMD"
++{
++  enum machine_mode mode = <VALL:MODE>mode;
++  rtx mem = gen_rtx_MEM (mode, operands[0]);
++  emit_move_insn (mem, operands[1]);
++  DONE;
++})
++
+ ;; Expander for builtins to insert vector registers into large
+ ;; opaque integer modes.
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/aarch64/arm_neon.h gcc-4.8.1/gcc/config/aarch64/arm_neon.h
+--- gcc-4.8.1.orig/gcc/config/aarch64/arm_neon.h	2013-04-24 10:47:21.000000000 -0500
++++ gcc-4.8.1/gcc/config/aarch64/arm_neon.h	2013-07-17 04:06:21.894684000 -0500
+@@ -8518,28 +8518,6 @@
+   return result;
+ }
+ 
+-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+-vld1_f32 (const float32_t * a)
+-{
+-  float32x2_t result;
+-  __asm__ ("ld1 {%0.2s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const float32x2_t *_a = (float32x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
+-vld1_f64 (const float64_t * a)
+-{
+-  float64x1_t result;
+-  __asm__ ("ld1 {%0.1d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(*a)
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+ #define vld1_lane_f32(a, b, c)                                          \
+   __extension__                                                         \
+     ({                                                                  \
+@@ -8696,116 +8674,6 @@
+        result;                                                          \
+      })
+ 
+-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
+-vld1_p8 (const poly8_t * a)
+-{
+-  poly8x8_t result;
+-  __asm__ ("ld1 {%0.8b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const poly8x8_t *_a = (poly8x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
+-vld1_p16 (const poly16_t * a)
+-{
+-  poly16x4_t result;
+-  __asm__ ("ld1 {%0.4h}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const poly16x4_t *_a = (poly16x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
+-vld1_s8 (const int8_t * a)
+-{
+-  int8x8_t result;
+-  __asm__ ("ld1 {%0.8b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int8x8_t *_a = (int8x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
+-vld1_s16 (const int16_t * a)
+-{
+-  int16x4_t result;
+-  __asm__ ("ld1 {%0.4h}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int16x4_t *_a = (int16x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
+-vld1_s32 (const int32_t * a)
+-{
+-  int32x2_t result;
+-  __asm__ ("ld1 {%0.2s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int32x2_t *_a = (int32x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+-vld1_s64 (const int64_t * a)
+-{
+-  int64x1_t result;
+-  __asm__ ("ld1 {%0.1d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(*a)
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+-vld1_u8 (const uint8_t * a)
+-{
+-  uint8x8_t result;
+-  __asm__ ("ld1 {%0.8b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint8x8_t *_a = (uint8x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
+-vld1_u16 (const uint16_t * a)
+-{
+-  uint16x4_t result;
+-  __asm__ ("ld1 {%0.4h}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint16x4_t *_a = (uint16x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
+-vld1_u32 (const uint32_t * a)
+-{
+-  uint32x2_t result;
+-  __asm__ ("ld1 {%0.2s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint32x2_t *_a = (uint32x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+-vld1_u64 (const uint64_t * a)
+-{
+-  uint64x1_t result;
+-  __asm__ ("ld1 {%0.1d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(*a)
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_dup_f32 (const float32_t * a)
+ {
+@@ -8938,28 +8806,6 @@
+   return result;
+ }
+ 
+-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+-vld1q_f32 (const float32_t * a)
+-{
+-  float32x4_t result;
+-  __asm__ ("ld1 {%0.4s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const float32x4_t *_a = (float32x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
+-vld1q_f64 (const float64_t * a)
+-{
+-  float64x2_t result;
+-  __asm__ ("ld1 {%0.2d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const float64x2_t *_a = (float64x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+ #define vld1q_lane_f32(a, b, c)                                         \
+   __extension__                                                         \
+     ({                                                                  \
+@@ -9116,116 +8962,6 @@
+        result;                                                          \
+      })
+ 
+-__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
+-vld1q_p8 (const poly8_t * a)
+-{
+-  poly8x16_t result;
+-  __asm__ ("ld1 {%0.16b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const poly8x16_t *_a = (poly8x16_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
+-vld1q_p16 (const poly16_t * a)
+-{
+-  poly16x8_t result;
+-  __asm__ ("ld1 {%0.16b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const poly16x8_t *_a = (poly16x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
+-vld1q_s8 (const int8_t * a)
+-{
+-  int8x16_t result;
+-  __asm__ ("ld1 {%0.16b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int8x16_t *_a = (int8x16_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
+-vld1q_s16 (const int16_t * a)
+-{
+-  int16x8_t result;
+-  __asm__ ("ld1 {%0.8h}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int16x8_t *_a = (int16x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
+-vld1q_s32 (const int32_t * a)
+-{
+-  int32x4_t result;
+-  __asm__ ("ld1 {%0.4s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int32x4_t *_a = (int32x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
+-vld1q_s64 (const int64_t * a)
+-{
+-  int64x2_t result;
+-  __asm__ ("ld1 {%0.2d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const int64x2_t *_a = (int64x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+-vld1q_u8 (const uint8_t * a)
+-{
+-  uint8x16_t result;
+-  __asm__ ("ld1 {%0.16b}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint8x16_t *_a = (uint8x16_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
+-vld1q_u16 (const uint16_t * a)
+-{
+-  uint16x8_t result;
+-  __asm__ ("ld1 {%0.8h}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint16x8_t *_a = (uint16x8_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+-vld1q_u32 (const uint32_t * a)
+-{
+-  uint32x4_t result;
+-  __asm__ ("ld1 {%0.4s}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint32x4_t *_a = (uint32x4_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
+-vld1q_u64 (const uint64_t * a)
+-{
+-  uint64x2_t result;
+-  __asm__ ("ld1 {%0.2d}, %1"
+-	   : "=w"(result)
+-	   : "Utv"(({const uint64x2_t *_a = (uint64x2_t *) a; *_a;}))
+-	   : /* No clobbers */);
+-  return result;
+-}
+-
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vmaxnm_f32 (float32x2_t a, float32x2_t b)
+ {
+@@ -16285,24 +16021,6 @@
+        result;                                                          \
+      })
+ 
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_f32 (float32_t * a, float32x2_t b)
+-{
+-  __asm__ ("st1 {%1.2s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_f64 (float64_t * a, float64x1_t b)
+-{
+-  __asm__ ("st1 {%1.1d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+ #define vst1_lane_f32(a, b, c)                                          \
+   __extension__                                                         \
+     ({                                                                  \
+@@ -16435,113 +16153,6 @@
+                 : "memory");                                            \
+      })
+ 
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_p8 (poly8_t * a, poly8x8_t b)
+-{
+-  __asm__ ("st1 {%1.8b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_p16 (poly16_t * a, poly16x4_t b)
+-{
+-  __asm__ ("st1 {%1.4h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_s8 (int8_t * a, int8x8_t b)
+-{
+-  __asm__ ("st1 {%1.8b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_s16 (int16_t * a, int16x4_t b)
+-{
+-  __asm__ ("st1 {%1.4h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_s32 (int32_t * a, int32x2_t b)
+-{
+-  __asm__ ("st1 {%1.2s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_s64 (int64_t * a, int64x1_t b)
+-{
+-  __asm__ ("st1 {%1.1d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_u8 (uint8_t * a, uint8x8_t b)
+-{
+-  __asm__ ("st1 {%1.8b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_u16 (uint16_t * a, uint16x4_t b)
+-{
+-  __asm__ ("st1 {%1.4h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_u32 (uint32_t * a, uint32x2_t b)
+-{
+-  __asm__ ("st1 {%1.2s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1_u64 (uint64_t * a, uint64x1_t b)
+-{
+-  __asm__ ("st1 {%1.1d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_f32 (float32_t * a, float32x4_t b)
+-{
+-  __asm__ ("st1 {%1.4s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_f64 (float64_t * a, float64x2_t b)
+-{
+-  __asm__ ("st1 {%1.2d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+ 
+ #define vst1q_lane_f32(a, b, c)                                         \
+   __extension__                                                         \
+@@ -16675,96 +16286,6 @@
+                 : "memory");                                            \
+      })
+ 
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_p8 (poly8_t * a, poly8x16_t b)
+-{
+-  __asm__ ("st1 {%1.16b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_p16 (poly16_t * a, poly16x8_t b)
+-{
+-  __asm__ ("st1 {%1.8h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_s8 (int8_t * a, int8x16_t b)
+-{
+-  __asm__ ("st1 {%1.16b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_s16 (int16_t * a, int16x8_t b)
+-{
+-  __asm__ ("st1 {%1.8h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_s32 (int32_t * a, int32x4_t b)
+-{
+-  __asm__ ("st1 {%1.4s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_s64 (int64_t * a, int64x2_t b)
+-{
+-  __asm__ ("st1 {%1.2d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_u8 (uint8_t * a, uint8x16_t b)
+-{
+-  __asm__ ("st1 {%1.16b},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_u16 (uint16_t * a, uint16x8_t b)
+-{
+-  __asm__ ("st1 {%1.8h},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_u32 (uint32_t * a, uint32x4_t b)
+-{
+-  __asm__ ("st1 {%1.4s},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+-__extension__ static __inline void __attribute__ ((__always_inline__))
+-vst1q_u64 (uint64_t * a, uint64x2_t b)
+-{
+-  __asm__ ("st1 {%1.2d},[%0]"
+-           :
+-           : "r"(a), "w"(b)
+-           : "memory");
+-}
+-
+ __extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
+ vsubhn_high_s16 (int8x8_t a, int16x8_t b, int16x8_t c)
+ {
+@@ -20537,6 +20058,165 @@
+   return (uint64x1_t) __builtin_aarch64_dup_lanedi ((int64x2_t) a, b);
+ }
+ 
++/* vld1 */
++
++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
++vld1_f32 (const float32_t *a)
++{
++  return __builtin_aarch64_ld1v2sf ((const __builtin_aarch64_simd_sf *) a);
++}
++
++__extension__ static __inline float64x1_t __attribute__ ((__always_inline__))
++vld1_f64 (const float64_t *a)
++{
++  return *a;
++}
++
++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
++vld1_p8 (const poly8_t *a)
++{
++  return (poly8x8_t)
++    __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
++vld1_p16 (const poly16_t *a)
++{
++  return (poly16x4_t)
++    __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
++vld1_s8 (const int8_t *a)
++{
++  return __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
++vld1_s16 (const int16_t *a)
++{
++  return __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
++vld1_s32 (const int32_t *a)
++{
++  return __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) a);
++}
++
++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
++vld1_s64 (const int64_t *a)
++{
++  return *a;
++}
++
++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
++vld1_u8 (const uint8_t *a)
++{
++  return (uint8x8_t)
++    __builtin_aarch64_ld1v8qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
++vld1_u16 (const uint16_t *a)
++{
++  return (uint16x4_t)
++    __builtin_aarch64_ld1v4hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
++vld1_u32 (const uint32_t *a)
++{
++  return (uint32x2_t)
++    __builtin_aarch64_ld1v2si ((const __builtin_aarch64_simd_si *) a);
++}
++
++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
++vld1_u64 (const uint64_t *a)
++{
++  return *a;
++}
++
++/* vld1q */
++
++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
++vld1q_f32 (const float32_t *a)
++{
++  return __builtin_aarch64_ld1v4sf ((const __builtin_aarch64_simd_sf *) a);
++}
++
++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
++vld1q_f64 (const float64_t *a)
++{
++  return __builtin_aarch64_ld1v2df ((const __builtin_aarch64_simd_df *) a);
++}
++
++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
++vld1q_p8 (const poly8_t *a)
++{
++  return (poly8x16_t)
++    __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
++vld1q_p16 (const poly16_t *a)
++{
++  return (poly16x8_t)
++    __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
++vld1q_s8 (const int8_t *a)
++{
++  return __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
++vld1q_s16 (const int16_t *a)
++{
++  return __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
++vld1q_s32 (const int32_t *a)
++{
++  return __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) a);
++}
++
++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
++vld1q_s64 (const int64_t *a)
++{
++  return __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a);
++}
++
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
++vld1q_u8 (const uint8_t *a)
++{
++  return (uint8x16_t)
++    __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a);
++}
++
++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
++vld1q_u16 (const uint16_t *a)
++{
++  return (uint16x8_t)
++    __builtin_aarch64_ld1v8hi ((const __builtin_aarch64_simd_hi *) a);
++}
++
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
++vld1q_u32 (const uint32_t *a)
++{
++  return (uint32x4_t)
++    __builtin_aarch64_ld1v4si ((const __builtin_aarch64_simd_si *) a);
++}
++
++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
++vld1q_u64 (const uint64_t *a)
++{
++  return (uint64x2_t)
++    __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a);
++}
++
+ /* vldn */
+ 
+ __extension__ static __inline int64x1x2_t __attribute__ ((__always_inline__))
+@@ -24307,6 +23987,165 @@
+   return (uint64x1_t) __builtin_aarch64_usri_ndi (__a, __b, __c);
+ }
+ 
++/* vst1 */
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_f32 (float32_t *a, float32x2_t b)
++{
++  __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_f64 (float64_t *a, float64x1_t b)
++{
++  *a = b;
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_p8 (poly8_t *a, poly8x8_t b)
++{
++  __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a,
++			     (int8x8_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_p16 (poly16_t *a, poly16x4_t b)
++{
++  __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a,
++			     (int16x4_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_s8 (int8_t *a, int8x8_t b)
++{
++  __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_s16 (int16_t *a, int16x4_t b)
++{
++  __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_s32 (int32_t *a, int32x2_t b)
++{
++  __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_s64 (int64_t *a, int64x1_t b)
++{
++  *a = b;
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_u8 (uint8_t *a, uint8x8_t b)
++{
++  __builtin_aarch64_st1v8qi ((__builtin_aarch64_simd_qi *) a,
++			     (int8x8_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_u16 (uint16_t *a, uint16x4_t b)
++{
++  __builtin_aarch64_st1v4hi ((__builtin_aarch64_simd_hi *) a,
++			     (int16x4_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_u32 (uint32_t *a, uint32x2_t b)
++{
++  __builtin_aarch64_st1v2si ((__builtin_aarch64_simd_si *) a,
++			     (int32x2_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_u64 (uint64_t *a, uint64x1_t b)
++{
++  *a = b;
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_f32 (float32_t *a, float32x4_t b)
++{
++  __builtin_aarch64_st1v4sf ((__builtin_aarch64_simd_sf *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_f64 (float64_t *a, float64x2_t b)
++{
++  __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df *) a, b);
++}
++
++/* vst1q */
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_p8 (poly8_t *a, poly8x16_t b)
++{
++  __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a,
++			      (int8x16_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_p16 (poly16_t *a, poly16x8_t b)
++{
++  __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a,
++			     (int16x8_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_s8 (int8_t *a, int8x16_t b)
++{
++  __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_s16 (int16_t *a, int16x8_t b)
++{
++  __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_s32 (int32_t *a, int32x4_t b)
++{
++  __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_s64 (int64_t *a, int64x2_t b)
++{
++  __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) a, b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_u8 (uint8_t *a, uint8x16_t b)
++{
++  __builtin_aarch64_st1v16qi ((__builtin_aarch64_simd_qi *) a,
++			      (int8x16_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_u16 (uint16_t *a, uint16x8_t b)
++{
++  __builtin_aarch64_st1v8hi ((__builtin_aarch64_simd_hi *) a,
++			     (int16x8_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_u32 (uint32_t *a, uint32x4_t b)
++{
++  __builtin_aarch64_st1v4si ((__builtin_aarch64_simd_si *) a,
++			     (int32x4_t) b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_u64 (uint64_t *a, uint64x2_t b)
++{
++  __builtin_aarch64_st1v2di ((__builtin_aarch64_simd_di *) a,
++			     (int64x2_t) b);
++}
++
+ /* vstn */
+ 
+ __extension__ static __inline void
+diff -Naur gcc-4.8.1.orig/gcc/config/alpha/alpha.c gcc-4.8.1/gcc/config/alpha/alpha.c
+--- gcc-4.8.1.orig/gcc/config/alpha/alpha.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/alpha/alpha.c	2013-06-10 13:36:16.739030000 -0500
+@@ -2700,12 +2700,12 @@
+       break;
+ 
+     case GE:  case GT:  case GEU:  case GTU:
+-      /* These must be swapped.  */
+-      if (op1 != CONST0_RTX (cmp_mode))
+-	{
+-	  code = swap_condition (code);
+-	  tem = op0, op0 = op1, op1 = tem;
+-	}
++      /* These normally need swapping, but for integer zero we have
++	 special patterns that recognize swapped operands.  */
++      if (cmp_mode == DImode && op1 == const0_rtx)
++	break;
++      code = swap_condition (code);
++      tem = op0, op0 = op1, op1 = tem;
+       break;
+ 
+     default:
+@@ -3067,12 +3067,9 @@
+   operands[1] = op1;
+   out = gen_reg_rtx (DImode);
+ 
+-  /* What's actually returned is -1,0,1, not a proper boolean value,
+-     so use an EXPR_LIST as with a generic libcall instead of a 
+-     comparison type expression.  */
+-  note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX);
+-  note = gen_rtx_EXPR_LIST (VOIDmode, op0, note);
+-  note = gen_rtx_EXPR_LIST (VOIDmode, func, note);
++  /* What's actually returned is -1,0,1, not a proper boolean value.  */
++  note = gen_rtx_fmt_ee (cmp_code, VOIDmode, op0, op1);
++  note = gen_rtx_UNSPEC (DImode, gen_rtvec (1, note), UNSPEC_XFLT_COMPARE);
+   alpha_emit_xfloating_libcall (func, out, operands, 2, note);
+ 
+   return out;
+diff -Naur gcc-4.8.1.orig/gcc/config/alpha/alpha.md gcc-4.8.1/gcc/config/alpha/alpha.md
+--- gcc-4.8.1.orig/gcc/config/alpha/alpha.md	2013-02-01 10:34:28.000000000 -0600
++++ gcc-4.8.1/gcc/config/alpha/alpha.md	2013-06-07 01:26:42.097053000 -0500
+@@ -23,6 +23,7 @@
+ ;; Uses of UNSPEC in this file:
+ 
+ (define_c_enum "unspec" [
++  UNSPEC_XFLT_COMPARE
+   UNSPEC_ARG_HOME
+   UNSPEC_LDGP1
+   UNSPEC_INSXH
+diff -Naur gcc-4.8.1.orig/gcc/config/arm/arm.c gcc-4.8.1/gcc/config/arm/arm.c
+--- gcc-4.8.1.orig/gcc/config/arm/arm.c	2013-05-24 10:15:44.000000000 -0500
++++ gcc-4.8.1/gcc/config/arm/arm.c	2013-08-21 10:57:02.753791000 -0500
+@@ -4459,7 +4459,9 @@
+     if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask)
+       {
+ 	pcum->aapcs_vfp_reg_alloc = mask << regno;
+-	if (mode == BLKmode || (mode == TImode && !TARGET_NEON))
++	if (mode == BLKmode
++	    || (mode == TImode && ! TARGET_NEON)
++	    || ! arm_hard_regno_mode_ok (FIRST_VFP_REGNUM + regno, mode))
+ 	  {
+ 	    int i;
+ 	    int rcount = pcum->aapcs_vfp_rcount;
+@@ -7094,7 +7096,7 @@
+ thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
+ {
+   enum machine_mode mode = GET_MODE (x);
+-  int total;
++  int total, words;
+ 
+   switch (code)
+     {
+@@ -7102,6 +7104,8 @@
+     case ASHIFTRT:
+     case LSHIFTRT:
+     case ROTATERT:
++      return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
++
+     case PLUS:
+     case MINUS:
+     case COMPARE:
+@@ -7125,7 +7129,10 @@
+       return COSTS_N_INSNS (1) + 16;
+ 
+     case SET:
+-      return (COSTS_N_INSNS (1)
++      /* A SET doesn't have a mode, so let's look at the SET_DEST to get
++	 the mode.  */
++      words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x))));
++      return (COSTS_N_INSNS (words)
+ 	      + 4 * ((MEM_P (SET_SRC (x)))
+ 		     + MEM_P (SET_DEST (x))));
+ 
+@@ -7822,6 +7829,7 @@
+ thumb1_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
+ {
+   enum machine_mode mode = GET_MODE (x);
++  int words;
+ 
+   switch (code)
+     {
+@@ -7829,8 +7837,19 @@
+     case ASHIFTRT:
+     case LSHIFTRT:
+     case ROTATERT:
++      return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
++
+     case PLUS:
+     case MINUS:
++      /* Thumb-1 needs two instructions to fulfill shiftadd/shiftsub0/shiftsub1
++	 defined by RTL expansion, especially for the expansion of
++	 multiplication.  */
++      if ((GET_CODE (XEXP (x, 0)) == MULT
++	   && power_of_two_operand (XEXP (XEXP (x,0),1), SImode))
++	  || (GET_CODE (XEXP (x, 1)) == MULT
++	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), SImode)))
++	return COSTS_N_INSNS (2);
++      /* On purpose fall through for normal RTX.  */
+     case COMPARE:
+     case NEG:
+     case NOT:
+@@ -7847,7 +7866,10 @@
+       return COSTS_N_INSNS (1);
+ 
+     case SET:
+-      return (COSTS_N_INSNS (1)
++      /* A SET doesn't have a mode, so let's look at the SET_DEST to get
++	 the mode.  */
++      words = ARM_NUM_INTS (GET_MODE_SIZE (GET_MODE (SET_DEST (x))));
++      return (COSTS_N_INSNS (words)
+               + 4 * ((MEM_P (SET_SRC (x)))
+                      + MEM_P (SET_DEST (x))));
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/arm/neon.md gcc-4.8.1/gcc/config/arm/neon.md
+--- gcc-4.8.1.orig/gcc/config/arm/neon.md	2013-04-04 09:34:01.000000000 -0500
++++ gcc-4.8.1/gcc/config/arm/neon.md	2013-08-09 01:59:01.329587000 -0500
+@@ -244,7 +244,7 @@
+   [(set (match_operand:VDQX 0 "neon_struct_or_register_operand")
+ 	(unspec:VDQX [(match_operand:VDQX 1 "neon_struct_or_register_operand")]
+ 		     UNSPEC_MISALIGNED_ACCESS))]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
++  "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
+ {
+   /* This pattern is not permitted to fail during expansion: if both arguments
+      are non-registers (e.g. memory := constant, which can be created by the
+@@ -258,7 +258,7 @@
+   [(set (match_operand:VDX 0 "neon_struct_operand"	       "=Um")
+ 	(unspec:VDX [(match_operand:VDX 1 "s_register_operand" " w")]
+ 		    UNSPEC_MISALIGNED_ACCESS))]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
++  "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vst1.<V_sz_elem>\t{%P1}, %A0"
+   [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+ 
+@@ -266,7 +266,7 @@
+   [(set (match_operand:VDX 0 "s_register_operand"		"=w")
+ 	(unspec:VDX [(match_operand:VDX 1 "neon_struct_operand" " Um")]
+ 		    UNSPEC_MISALIGNED_ACCESS))]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
++  "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vld1.<V_sz_elem>\t{%P0}, %A1"
+   [(set_attr "neon_type" "neon_vld1_1_2_regs")])
+ 
+@@ -274,7 +274,7 @@
+   [(set (match_operand:VQX 0 "neon_struct_operand"	       "=Um")
+ 	(unspec:VQX [(match_operand:VQX 1 "s_register_operand" " w")]
+ 		    UNSPEC_MISALIGNED_ACCESS))]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
++  "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vst1.<V_sz_elem>\t{%q1}, %A0"
+   [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
+ 
+@@ -282,7 +282,7 @@
+   [(set (match_operand:VQX 0 "s_register_operand"	         "=w")
+ 	(unspec:VQX [(match_operand:VQX 1 "neon_struct_operand" " Um")]
+ 		    UNSPEC_MISALIGNED_ACCESS))]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
++  "TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
+   "vld1.<V_sz_elem>\t{%q0}, %A1"
+   [(set_attr "neon_type" "neon_vld1_1_2_regs")])
+ 
+@@ -1732,6 +1732,7 @@
+ 			     ? 3 : 1;
+   rtx magic_rtx = GEN_INT (magic_word);
+   int inverse = 0;
++  int use_zero_form = 0;
+   int swap_bsl_operands = 0;
+   rtx mask = gen_reg_rtx (<V_cmp_result>mode);
+   rtx tmp = gen_reg_rtx (<V_cmp_result>mode);
+@@ -1742,12 +1743,16 @@
+   switch (GET_CODE (operands[3]))
+     {
+     case GE:
++    case GT:
+     case LE:
++    case LT:
+     case EQ:
+-      if (!REG_P (operands[5])
+-	  && (operands[5] != CONST0_RTX (<MODE>mode)))
+-	operands[5] = force_reg (<MODE>mode, operands[5]);
+-      break;
++      if (operands[5] == CONST0_RTX (<MODE>mode))
++	{
++	  use_zero_form = 1;
++	  break;
++	}
++      /* Fall through.  */
+     default:
+       if (!REG_P (operands[5]))
+ 	operands[5] = force_reg (<MODE>mode, operands[5]);
+@@ -1798,7 +1803,26 @@
+ 	 a GT b -> a GT b
+ 	 a LE b -> b GE a
+ 	 a LT b -> b GT a
+-	 a EQ b -> a EQ b  */
++	 a EQ b -> a EQ b
++	 Note that there also exist direct comparison against 0 forms,
++	 so catch those as a special case.  */
++      if (use_zero_form)
++	{
++	  inverse = 0;
++	  switch (GET_CODE (operands[3]))
++	    {
++	    case LT:
++	      base_comparison = gen_neon_vclt<mode>;
++	      break;
++	    case LE:
++	      base_comparison = gen_neon_vcle<mode>;
++	      break;
++	    default:
++	      /* Do nothing, other zero form cases already have the correct
++		 base_comparison.  */
++	      break;
++	    }
++	}
+ 
+       if (!inverse)
+ 	emit_insn (base_comparison (mask, operands[4], operands[5], magic_rtx));
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr.c gcc-4.8.1/gcc/config/avr/avr.c
+--- gcc-4.8.1.orig/gcc/config/avr/avr.c	2013-03-12 06:42:26.000000000 -0500
++++ gcc-4.8.1/gcc/config/avr/avr.c	2013-07-19 06:15:26.382992000 -0500
+@@ -584,7 +584,12 @@
+     {
+       tree args = TYPE_ARG_TYPES (TREE_TYPE (decl));
+       tree ret = TREE_TYPE (TREE_TYPE (decl));
+-      const char *name = IDENTIFIER_POINTER (DECL_NAME (decl));
++      const char *name;
++
++      name = DECL_ASSEMBLER_NAME_SET_P (decl)
++        /* Remove the leading '*' added in set_user_assembler_name.  */
++        ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))
++        : IDENTIFIER_POINTER (DECL_NAME (decl));
+ 
+       /* Silently ignore 'signal' if 'interrupt' is present.  AVR-LibC startet
+          using this when it switched from SIGNAL and INTERRUPT to ISR.  */
+@@ -1112,7 +1117,7 @@
+               leaf function and thus X has already been saved.  */
+ 
+           int irq_state = -1;
+-          HOST_WIDE_INT size_cfa = size;
++          HOST_WIDE_INT size_cfa = size, neg_size;
+           rtx fp_plus_insns, fp, my_fp;
+ 
+           gcc_assert (frame_pointer_needed
+@@ -1151,6 +1156,7 @@
+             }
+ 
+           size = trunc_int_for_mode (size, GET_MODE (my_fp));
++          neg_size = trunc_int_for_mode (-size, GET_MODE (my_fp));
+ 
+           /************  Method 1: Adjust frame pointer  ************/
+ 
+@@ -1171,7 +1177,8 @@
+             }
+ 
+           insn = emit_move_insn (my_fp, plus_constant (GET_MODE (my_fp),
+-                                                       my_fp, -size));
++                                                       my_fp, neg_size));
++
+           if (frame_pointer_needed)
+             {
+               RTX_FRAME_RELATED_P (insn) = 1;
+@@ -6225,11 +6232,14 @@
+    the subtrahend in the original insn, provided it is a compile time constant.
+    In all other cases, SIGN is 0.
+ 
+-   Return "".  */
++   If OUT_LABEL is true, print the final 0: label which is needed for
++   saturated addition / subtraction.  The only case where OUT_LABEL = false
++   is useful is for saturated addition / subtraction performed during
++   fixed-point rounding, cf. `avr_out_round'.  */
+ 
+ static void
+ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
+-                enum rtx_code code_sat = UNKNOWN, int sign = 0)
++                enum rtx_code code_sat, int sign, bool out_label)
+ {
+   /* MODE of the operation.  */
+   enum machine_mode mode = GET_MODE (xop[0]);
+@@ -6668,7 +6678,8 @@
+                      "mov %r0+5,%0", xop, plen, 4);
+     }
+ 
+-  avr_asm_len ("0:", op, plen, 0);
++  if (out_label)
++    avr_asm_len ("0:", op, plen, 0);
+ }
+ 
+ 
+@@ -6706,8 +6717,8 @@
+ 
+ /* Prepare operands of addition/subtraction to be used with avr_out_plus_1.
+ 
+-   INSN is a single_set insn with a binary operation as SET_SRC that is
+-   one of:  PLUS, SS_PLUS, US_PLUS, MINUS, SS_MINUS, US_MINUS.
++   INSN is a single_set insn or an insn pattern with a binary operation as
++   SET_SRC that is one of: PLUS, SS_PLUS, US_PLUS, MINUS, SS_MINUS, US_MINUS.
+ 
+    XOP are the operands of INSN.  In the case of 64-bit operations with
+    constant XOP[] has just one element:  The summand/subtrahend in XOP[0].
+@@ -6722,19 +6733,22 @@
+ 
+    PLEN and PCC default to NULL.
+ 
++   OUT_LABEL defaults to TRUE.  For a description, see AVR_OUT_PLUS_1.
++
+    Return ""  */
+ 
+ const char*
+-avr_out_plus (rtx insn, rtx *xop, int *plen, int *pcc)
++avr_out_plus (rtx insn, rtx *xop, int *plen, int *pcc, bool out_label)
+ {
+   int cc_plus, cc_minus, cc_dummy;
+   int len_plus, len_minus;
+   rtx op[4];
+-  rtx xdest = SET_DEST (single_set (insn));
++  rtx xpattern = INSN_P (insn) ? single_set (insn) : insn;
++  rtx xdest = SET_DEST (xpattern);
+   enum machine_mode mode = GET_MODE (xdest);
+   enum machine_mode imode = int_mode_for_mode (mode);
+   int n_bytes = GET_MODE_SIZE (mode);
+-  enum rtx_code code_sat = GET_CODE (SET_SRC (single_set (insn)));
++  enum rtx_code code_sat = GET_CODE (SET_SRC (xpattern));
+   enum rtx_code code
+     = (PLUS == code_sat || SS_PLUS == code_sat || US_PLUS == code_sat
+        ? PLUS : MINUS);
+@@ -6749,7 +6763,7 @@
+ 
+   if (n_bytes <= 4 && REG_P (xop[2]))
+     {
+-      avr_out_plus_1 (xop, plen, code, pcc, code_sat);
++      avr_out_plus_1 (xop, plen, code, pcc, code_sat, 0, out_label);
+       return "";
+     }
+ 
+@@ -6776,7 +6790,8 @@
+   /* Saturations and 64-bit operations don't have a clobber operand.
+      For the other cases, the caller will provide a proper XOP[3].  */
+ 
+-  op[3] = PARALLEL == GET_CODE (PATTERN (insn)) ? xop[3] : NULL_RTX;
++  xpattern = INSN_P (insn) ? PATTERN (insn) : insn;
++  op[3] = PARALLEL == GET_CODE (xpattern) ? xop[3] : NULL_RTX;
+ 
+   /* Saturation will need the sign of the original operand.  */
+ 
+@@ -6791,8 +6806,8 @@
+ 
+   /* Work out the shortest sequence.  */
+ 
+-  avr_out_plus_1 (op, &len_minus, MINUS, &cc_plus, code_sat, sign);
+-  avr_out_plus_1 (op, &len_plus, PLUS, &cc_minus, code_sat, sign);
++  avr_out_plus_1 (op, &len_minus, MINUS, &cc_plus, code_sat, sign, out_label);
++  avr_out_plus_1 (op, &len_plus, PLUS, &cc_minus, code_sat, sign, out_label);
+ 
+   if (plen)
+     {
+@@ -6800,9 +6815,9 @@
+       *pcc  = (len_minus <= len_plus) ? cc_minus : cc_plus;
+     }
+   else if (len_minus <= len_plus)
+-    avr_out_plus_1 (op, NULL, MINUS, pcc, code_sat, sign);
++    avr_out_plus_1 (op, NULL, MINUS, pcc, code_sat, sign, out_label);
+   else
+-    avr_out_plus_1 (op, NULL, PLUS, pcc, code_sat, sign);
++    avr_out_plus_1 (op, NULL, PLUS, pcc, code_sat, sign, out_label);
+ 
+   return "";
+ }
+@@ -6816,13 +6831,15 @@
+    and return "".  If PLEN == NULL, print assembler instructions to perform the
+    operation; otherwise, set *PLEN to the length of the instruction sequence
+    (in words) printed with PLEN == NULL.  XOP[3] is either an 8-bit clobber
+-   register or SCRATCH if no clobber register is needed for the operation.  */
++   register or SCRATCH if no clobber register is needed for the operation.
++   INSN is an INSN_P or a pattern of an insn.  */
+ 
+ const char*
+ avr_out_bitop (rtx insn, rtx *xop, int *plen)
+ {
+   /* CODE and MODE of the operation.  */
+-  enum rtx_code code = GET_CODE (SET_SRC (single_set (insn)));
++  rtx xpattern = INSN_P (insn) ? single_set (insn) : insn;
++  enum rtx_code code = GET_CODE (SET_SRC (xpattern));
+   enum machine_mode mode = GET_MODE (xop[0]);
+ 
+   /* Number of bytes to operate on.  */
+@@ -7325,6 +7342,67 @@
+ }
+ 
+ 
++/* Output fixed-point rounding.  XOP[0] = XOP[1] is the operand to round.
++   XOP[2] is the rounding point, a CONST_INT.  The function prints the
++   instruction sequence if PLEN = NULL and computes the length in words
++   of the sequence if PLEN != NULL.  Most of this function deals with
++   preparing operands for calls to `avr_out_plus' and `avr_out_bitop'.  */
++
++const char*
++avr_out_round (rtx insn ATTRIBUTE_UNUSED, rtx *xop, int *plen)
++{
++  enum machine_mode mode = GET_MODE (xop[0]);
++  enum machine_mode imode = int_mode_for_mode (mode);
++  // The smallest fractional bit not cleared by the rounding is 2^(-RP).
++  int fbit = (int) GET_MODE_FBIT (mode);
++  double_int i_add = double_int_zero.set_bit (fbit-1 - INTVAL (xop[2]));
++  // Lengths of PLUS and AND parts.
++  int len_add = 0, *plen_add = plen ? &len_add : NULL;
++  int len_and = 0, *plen_and = plen ? &len_and : NULL;
++
++  // Add-Saturate  1/2 * 2^(-RP).  Don't print the label "0:" when printing
++  // the saturated addition so that we can emit the "rjmp 1f" before the
++  // "0:" below.
++
++  rtx xadd = const_fixed_from_double_int (i_add, mode);
++  rtx xpattern, xsrc, op[4];
++
++  xsrc = SIGNED_FIXED_POINT_MODE_P (mode)
++    ? gen_rtx_SS_PLUS (mode, xop[1], xadd)
++    : gen_rtx_US_PLUS (mode, xop[1], xadd);
++  xpattern = gen_rtx_SET (VOIDmode, xop[0], xsrc);
++
++  op[0] = xop[0];
++  op[1] = xop[1];
++  op[2] = xadd;
++  avr_out_plus (xpattern, op, plen_add, NULL, false /* Don't print "0:" */);
++
++  avr_asm_len ("rjmp 1f" CR_TAB
++               "0:", NULL, plen_add, 1);
++
++  // Keep  all bits from RP and higher:   ... 2^(-RP)
++  // Clear all bits from RP+1 and lower:              2^(-RP-1) ...
++  // Rounding point                           ^^^^^^^
++  // Added above                                      ^^^^^^^^^
++  rtx xreg = simplify_gen_subreg (imode, xop[0], mode, 0);
++  rtx xmask = immed_double_int_const (-i_add - i_add, imode);
++
++  xpattern = gen_rtx_SET (VOIDmode, xreg, gen_rtx_AND (imode, xreg, xmask));
++
++  op[0] = xreg;
++  op[1] = xreg;
++  op[2] = xmask;
++  op[3] = gen_rtx_SCRATCH (QImode);
++  avr_out_bitop (xpattern, op, plen_and);
++  avr_asm_len ("1:", NULL, plen, 0);
++
++  if (plen)
++    *plen = len_add + len_and;
++
++  return "";
++}
++
++
+ /* Create RTL split patterns for byte sized rotate expressions.  This
+   produces a series of move instructions and considers overlap situations.
+   Overlapping non-HImode operands need a scratch register.  */
+@@ -7533,6 +7611,7 @@
+ 
+     case ADJUST_LEN_SFRACT: avr_out_fract (insn, op, true, &len); break;
+     case ADJUST_LEN_UFRACT: avr_out_fract (insn, op, false, &len); break;
++    case ADJUST_LEN_ROUND: avr_out_round (insn, op, &len); break;
+ 
+     case ADJUST_LEN_TSTHI: avr_out_tsthi (insn, op, &len); break;
+     case ADJUST_LEN_TSTPSI: avr_out_tstpsi (insn, op, &len); break;
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr-fixed.md gcc-4.8.1/gcc/config/avr/avr-fixed.md
+--- gcc-4.8.1.orig/gcc/config/avr/avr-fixed.md	2013-02-08 04:13:37.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/avr-fixed.md	2013-07-19 06:15:26.382992000 -0500
+@@ -447,49 +447,18 @@
+ ;; "roundqq3_const"  "rounduqq3_const"
+ ;; "roundhq3_const"  "rounduhq3_const"  "roundha3_const"  "rounduha3_const"
+ ;; "roundsq3_const"  "roundusq3_const"  "roundsa3_const"  "roundusa3_const"
+-(define_expand "round<mode>3_const"
+-  [(parallel [(match_operand:ALL124QA 0 "register_operand" "")
+-              (match_operand:ALL124QA 1 "register_operand" "")
+-              (match_operand:HI 2 "const_int_operand" "")])]
++(define_insn "round<mode>3_const"
++  [(set (match_operand:ALL124QA 0 "register_operand"                  "=d")
++        (unspec:ALL124QA [(match_operand:ALL124QA 1 "register_operand" "0")
++                          (match_operand:HI 2 "const_int_operand"      "n")
++                          (const_int 0)]
++                         UNSPEC_ROUND))]
+   ""
+   {
+-    // The rounding point RP is $2.  The smallest fractional
+-    // bit that is not cleared by the rounding is 2^(-RP).
+-
+-    enum machine_mode imode = int_mode_for_mode (<MODE>mode);
+-    int fbit = (int) GET_MODE_FBIT (<MODE>mode);
+-
+-    // Add-Saturate  1/2 * 2^(-RP)
+-
+-    double_int i_add = double_int_zero.set_bit (fbit-1 - INTVAL (operands[2]));
+-    rtx x_add = const_fixed_from_double_int (i_add, <MODE>mode);
+-
+-    if (SIGNED_FIXED_POINT_MODE_P (<MODE>mode))
+-      emit_move_insn (operands[0],
+-                      gen_rtx_SS_PLUS (<MODE>mode, operands[1], x_add));
+-    else
+-      emit_move_insn (operands[0],
+-                      gen_rtx_US_PLUS (<MODE>mode, operands[1], x_add));
+-
+-    // Keep  all bits from RP and higher:   ... 2^(-RP)
+-    // Clear all bits from RP+1 and lower:              2^(-RP-1) ...
+-    // Rounding point                           ^^^^^^^
+-    // Added above                                      ^^^^^^^^^
+-
+-    rtx xreg = simplify_gen_subreg (imode, operands[0], <MODE>mode, 0);
+-    rtx xmask = immed_double_int_const (-i_add - i_add, imode);
+-
+-    if (SImode == imode)
+-      emit_insn (gen_andsi3 (xreg, xreg, xmask));
+-    else if (HImode == imode)
+-      emit_insn (gen_andhi3 (xreg, xreg, xmask));
+-    else if (QImode == imode)
+-      emit_insn (gen_andqi3 (xreg, xreg, xmask));
+-    else
+-      gcc_unreachable();
+-
+-    DONE;
+-  })
++    return avr_out_round (insn, operands);
++  }
++  [(set_attr "cc" "clobber")
++   (set_attr "adjust_len" "round")])
+ 
+ 
+ ;; "*roundqq3.libgcc"  "*rounduqq3.libgcc"
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr-mcus.def gcc-4.8.1/gcc/config/avr/avr-mcus.def
+--- gcc-4.8.1.orig/gcc/config/avr/avr-mcus.def	2013-02-28 03:03:09.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/avr-mcus.def	2013-07-10 07:36:36.732157000 -0500
+@@ -168,7 +168,6 @@
+ AVR_MCU ("atmega169a",           ARCH_AVR5, "__AVR_ATmega169A__",        0, 0, 0x0100, 1, "m169a")
+ AVR_MCU ("atmega169p",           ARCH_AVR5, "__AVR_ATmega169P__",        0, 0, 0x0100, 1, "m169p")
+ AVR_MCU ("atmega169pa",          ARCH_AVR5, "__AVR_ATmega169PA__",       0, 0, 0x0100, 1, "m169pa")
+-AVR_MCU ("atmega16hva",          ARCH_AVR5, "__AVR_ATmega16HVA__",       0, 0, 0x0100, 1, "m16hva")
+ AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
+ AVR_MCU ("atmega16hvbrevb",      ARCH_AVR5, "__AVR_ATmega16HVBREVB__",   0, 0, 0x0100, 1, "m16hvbrevb")
+ AVR_MCU ("atmega16m1",           ARCH_AVR5, "__AVR_ATmega16M1__",        0, 0, 0x0100, 1, "m16m1")
+@@ -176,7 +175,6 @@
+ AVR_MCU ("atmega26hvg",          ARCH_AVR5, "__AVR_ATmega26HVG__",       0, 0, 0x0100, 1, "m26hvg")
+ AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
+ AVR_MCU ("atmega32",             ARCH_AVR5, "__AVR_ATmega32__",          0, 0, 0x0060, 1, "m32")
+-AVR_MCU ("atmega32a",            ARCH_AVR5, "__AVR_ATmega32A__",         0, 0, 0x0060, 1, "m32a")
+ AVR_MCU ("atmega323",            ARCH_AVR5, "__AVR_ATmega323__",         0, 0, 0x0060, 1, "m323")
+ AVR_MCU ("atmega324a",           ARCH_AVR5, "__AVR_ATmega324A__",        0, 0, 0x0100, 1, "m324a")
+ AVR_MCU ("atmega324p",           ARCH_AVR5, "__AVR_ATmega324P__",        0, 0, 0x0100, 1, "m324p")
+@@ -222,7 +220,6 @@
+ AVR_MCU ("atmega6490",           ARCH_AVR5, "__AVR_ATmega6490__",        0, 0, 0x0100, 1, "m6490")
+ AVR_MCU ("atmega16hva",          ARCH_AVR5, "__AVR_ATmega16HVA__",       0, 0, 0x0100, 1, "m16hva")
+ AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
+-AVR_MCU ("atmega16hvb",          ARCH_AVR5, "__AVR_ATmega16HVB__",       0, 0, 0x0100, 1, "m16hvb")
+ AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+ AVR_MCU ("atmega6490a",          ARCH_AVR5, "__AVR_ATmega6490A__",       0, 0, 0x0100, 1, "m6490a")
+ AVR_MCU ("atmega6490p",          ARCH_AVR5, "__AVR_ATmega6490P__",       0, 0, 0x0100, 1, "m6490p")
+@@ -231,23 +228,13 @@
+ AVR_MCU ("atmega64hve",          ARCH_AVR5, "__AVR_ATmega64HVE__",       0, 0, 0x0100, 1, "m64hve")
+ AVR_MCU ("atmega64rfa2",         ARCH_AVR5, "__AVR_ATmega64RFA2__",      0, 0, 0x0200, 1, "m64rfa2")
+ AVR_MCU ("atmega64rfr2",         ARCH_AVR5, "__AVR_ATmega64RFR2__",      0, 0, 0x0200, 1, "m64rfr2")
+-AVR_MCU ("atmega32hvb",          ARCH_AVR5, "__AVR_ATmega32HVB__",       0, 0, 0x0100, 1, "m32hvb")
+ AVR_MCU ("atmega32hvbrevb",      ARCH_AVR5, "__AVR_ATmega32HVBREVB__",   0, 0, 0x0100, 1, "m32hvbrevb")
+-AVR_MCU ("atmega16hva2",         ARCH_AVR5, "__AVR_ATmega16HVA2__",      0, 0, 0x0100, 1, "m16hva2")
+ AVR_MCU ("atmega48hvf",          ARCH_AVR5, "__AVR_ATmega48HVF__",       0, 0, 0x0100, 1, "m48hvf")
+ AVR_MCU ("at90can32",            ARCH_AVR5, "__AVR_AT90CAN32__",         0, 0, 0x0100, 1, "can32")
+ AVR_MCU ("at90can64",            ARCH_AVR5, "__AVR_AT90CAN64__",         0, 0, 0x0100, 1, "can64")
+ AVR_MCU ("at90pwm161",           ARCH_AVR5, "__AVR_AT90PWM161__",        0, 0, 0x0100, 1, "90pwm161")
+ AVR_MCU ("at90pwm216",           ARCH_AVR5, "__AVR_AT90PWM216__",        0, 0, 0x0100, 1, "90pwm216")
+ AVR_MCU ("at90pwm316",           ARCH_AVR5, "__AVR_AT90PWM316__",        0, 0, 0x0100, 1, "90pwm316")
+-AVR_MCU ("atmega32c1",           ARCH_AVR5, "__AVR_ATmega32C1__",        0, 0, 0x0100, 1, "m32c1")
+-AVR_MCU ("atmega64c1",           ARCH_AVR5, "__AVR_ATmega64C1__",        0, 0, 0x0100, 1, "m64c1")
+-AVR_MCU ("atmega16m1",           ARCH_AVR5, "__AVR_ATmega16M1__",        0, 0, 0x0100, 1, "m16m1")
+-AVR_MCU ("atmega32m1",           ARCH_AVR5, "__AVR_ATmega32M1__",        0, 0, 0x0100, 1, "m32m1")
+-AVR_MCU ("atmega64m1",           ARCH_AVR5, "__AVR_ATmega64M1__",        0, 0, 0x0100, 1, "m64m1")
+-AVR_MCU ("atmega16u4",           ARCH_AVR5, "__AVR_ATmega16U4__",        0, 0, 0x0100, 1, "m16u4")
+-AVR_MCU ("atmega32u4",           ARCH_AVR5, "__AVR_ATmega32U4__",        0, 0, 0x0100, 1, "m32u4")
+-AVR_MCU ("atmega32u6",           ARCH_AVR5, "__AVR_ATmega32U6__",        0, 0, 0x0100, 1, "m32u6")
+ AVR_MCU ("at90scr100",           ARCH_AVR5, "__AVR_AT90SCR100__",        0, 0, 0x0100, 1, "90scr100")
+ AVR_MCU ("at90usb646",           ARCH_AVR5, "__AVR_AT90USB646__",        0, 0, 0x0100, 1, "usb646")
+ AVR_MCU ("at90usb647",           ARCH_AVR5, "__AVR_AT90USB647__",        0, 0, 0x0100, 1, "usb647")
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr.md gcc-4.8.1/gcc/config/avr/avr.md
+--- gcc-4.8.1.orig/gcc/config/avr/avr.md	2013-02-08 04:13:37.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/avr.md	2013-07-19 06:15:26.382992000 -0500
+@@ -140,7 +140,7 @@
+   "out_bitop, plus, addto_sp,
+    tsthi, tstpsi, tstsi, compare, compare64, call,
+    mov8, mov16, mov24, mov32, reload_in16, reload_in24, reload_in32,
+-   ufract, sfract,
++   ufract, sfract, round,
+    xload, lpm, movmem,
+    ashlqi, ashrqi, lshrqi,
+    ashlhi, ashrhi, lshrhi,
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr.opt gcc-4.8.1/gcc/config/avr/avr.opt
+--- gcc-4.8.1.orig/gcc/config/avr/avr.opt	2013-03-12 06:42:26.000000000 -0500
++++ gcc-4.8.1/gcc/config/avr/avr.opt	2013-07-10 06:20:18.855155000 -0500
+@@ -77,4 +77,4 @@
+ 
+ Waddr-space-convert
+ Warning C Report Var(avr_warn_addr_space_convert) Init(0)
+-Warn if the address space of an address is change.
++Warn if the address space of an address is changed.
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr-protos.h gcc-4.8.1/gcc/config/avr/avr-protos.h
+--- gcc-4.8.1.orig/gcc/config/avr/avr-protos.h	2013-01-14 09:08:45.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/avr-protos.h	2013-07-19 06:15:26.382992000 -0500
+@@ -86,7 +86,8 @@
+ extern void avr_output_addr_vec_elt (FILE *stream, int value);
+ extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]);
+ extern const char* avr_out_bitop (rtx, rtx*, int*);
+-extern const char* avr_out_plus (rtx, rtx*, int* =NULL, int* =NULL);
++extern const char* avr_out_plus (rtx, rtx*, int* =NULL, int* =NULL, bool =true);
++extern const char* avr_out_round (rtx, rtx*, int* =NULL);
+ extern const char* avr_out_addto_sp (rtx*, int*);
+ extern const char* avr_out_xload (rtx, rtx*, int*);
+ extern const char* avr_out_movmem (rtx, rtx*, int*);
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/avr-tables.opt gcc-4.8.1/gcc/config/avr/avr-tables.opt
+--- gcc-4.8.1.orig/gcc/config/avr/avr-tables.opt	2013-02-28 03:03:09.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/avr-tables.opt	2013-07-10 07:36:36.732157000 -0500
+@@ -330,479 +330,440 @@
+ Enum(avr_mcu) String(atmega169pa) Value(101)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hva) Value(102)
++Enum(avr_mcu) String(atmega16hvb) Value(102)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hvb) Value(103)
++Enum(avr_mcu) String(atmega16hvbrevb) Value(103)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hvbrevb) Value(104)
++Enum(avr_mcu) String(atmega16m1) Value(104)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16m1) Value(105)
++Enum(avr_mcu) String(atmega16u4) Value(105)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16u4) Value(106)
++Enum(avr_mcu) String(atmega26hvg) Value(106)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega26hvg) Value(107)
++Enum(avr_mcu) String(atmega32a) Value(107)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32a) Value(108)
++Enum(avr_mcu) String(atmega32) Value(108)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32) Value(109)
++Enum(avr_mcu) String(atmega323) Value(109)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32a) Value(110)
++Enum(avr_mcu) String(atmega324a) Value(110)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega323) Value(111)
++Enum(avr_mcu) String(atmega324p) Value(111)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega324a) Value(112)
++Enum(avr_mcu) String(atmega324pa) Value(112)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega324p) Value(113)
++Enum(avr_mcu) String(atmega325) Value(113)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega324pa) Value(114)
++Enum(avr_mcu) String(atmega325a) Value(114)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega325) Value(115)
++Enum(avr_mcu) String(atmega325p) Value(115)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega325a) Value(116)
++Enum(avr_mcu) String(atmega3250) Value(116)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega325p) Value(117)
++Enum(avr_mcu) String(atmega3250a) Value(117)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3250) Value(118)
++Enum(avr_mcu) String(atmega3250p) Value(118)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3250a) Value(119)
++Enum(avr_mcu) String(atmega3250pa) Value(119)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3250p) Value(120)
++Enum(avr_mcu) String(atmega328) Value(120)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3250pa) Value(121)
++Enum(avr_mcu) String(atmega328p) Value(121)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega328) Value(122)
++Enum(avr_mcu) String(atmega329) Value(122)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega328p) Value(123)
++Enum(avr_mcu) String(atmega329a) Value(123)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega329) Value(124)
++Enum(avr_mcu) String(atmega329p) Value(124)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega329a) Value(125)
++Enum(avr_mcu) String(atmega329pa) Value(125)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega329p) Value(126)
++Enum(avr_mcu) String(atmega3290) Value(126)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega329pa) Value(127)
++Enum(avr_mcu) String(atmega3290a) Value(127)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3290) Value(128)
++Enum(avr_mcu) String(atmega3290p) Value(128)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3290a) Value(129)
++Enum(avr_mcu) String(atmega3290pa) Value(129)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3290p) Value(130)
++Enum(avr_mcu) String(atmega32c1) Value(130)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega3290pa) Value(131)
++Enum(avr_mcu) String(atmega32m1) Value(131)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32c1) Value(132)
++Enum(avr_mcu) String(atmega32u4) Value(132)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32m1) Value(133)
++Enum(avr_mcu) String(atmega32u6) Value(133)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32u4) Value(134)
++Enum(avr_mcu) String(atmega406) Value(134)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32u6) Value(135)
++Enum(avr_mcu) String(atmega64) Value(135)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega406) Value(136)
++Enum(avr_mcu) String(atmega64a) Value(136)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64) Value(137)
++Enum(avr_mcu) String(atmega640) Value(137)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64a) Value(138)
++Enum(avr_mcu) String(atmega644) Value(138)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega640) Value(139)
++Enum(avr_mcu) String(atmega644a) Value(139)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega644) Value(140)
++Enum(avr_mcu) String(atmega644p) Value(140)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega644a) Value(141)
++Enum(avr_mcu) String(atmega644pa) Value(141)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega644p) Value(142)
++Enum(avr_mcu) String(atmega645) Value(142)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega644pa) Value(143)
++Enum(avr_mcu) String(atmega645a) Value(143)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega645) Value(144)
++Enum(avr_mcu) String(atmega645p) Value(144)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega645a) Value(145)
++Enum(avr_mcu) String(atmega6450) Value(145)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega645p) Value(146)
++Enum(avr_mcu) String(atmega6450a) Value(146)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6450) Value(147)
++Enum(avr_mcu) String(atmega6450p) Value(147)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6450a) Value(148)
++Enum(avr_mcu) String(atmega649) Value(148)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6450p) Value(149)
++Enum(avr_mcu) String(atmega649a) Value(149)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega649) Value(150)
++Enum(avr_mcu) String(atmega649p) Value(150)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega649a) Value(151)
++Enum(avr_mcu) String(atmega6490) Value(151)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega649p) Value(152)
++Enum(avr_mcu) String(atmega16hva) Value(152)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6490) Value(153)
++Enum(avr_mcu) String(atmega16hva2) Value(153)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hva) Value(154)
++Enum(avr_mcu) String(atmega32hvb) Value(154)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hva2) Value(155)
++Enum(avr_mcu) String(atmega6490a) Value(155)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hvb) Value(156)
++Enum(avr_mcu) String(atmega6490p) Value(156)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32hvb) Value(157)
++Enum(avr_mcu) String(atmega64c1) Value(157)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6490a) Value(158)
++Enum(avr_mcu) String(atmega64m1) Value(158)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega6490p) Value(159)
++Enum(avr_mcu) String(atmega64hve) Value(159)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64c1) Value(160)
++Enum(avr_mcu) String(atmega64rfa2) Value(160)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64m1) Value(161)
++Enum(avr_mcu) String(atmega64rfr2) Value(161)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64hve) Value(162)
++Enum(avr_mcu) String(atmega32hvbrevb) Value(162)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64rfa2) Value(163)
++Enum(avr_mcu) String(atmega48hvf) Value(163)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64rfr2) Value(164)
++Enum(avr_mcu) String(at90can32) Value(164)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32hvb) Value(165)
++Enum(avr_mcu) String(at90can64) Value(165)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32hvbrevb) Value(166)
++Enum(avr_mcu) String(at90pwm161) Value(166)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16hva2) Value(167)
++Enum(avr_mcu) String(at90pwm216) Value(167)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega48hvf) Value(168)
++Enum(avr_mcu) String(at90pwm316) Value(168)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90can32) Value(169)
++Enum(avr_mcu) String(at90scr100) Value(169)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90can64) Value(170)
++Enum(avr_mcu) String(at90usb646) Value(170)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90pwm161) Value(171)
++Enum(avr_mcu) String(at90usb647) Value(171)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90pwm216) Value(172)
++Enum(avr_mcu) String(at94k) Value(172)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90pwm316) Value(173)
++Enum(avr_mcu) String(m3000) Value(173)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32c1) Value(174)
++Enum(avr_mcu) String(avr51) Value(174)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64c1) Value(175)
++Enum(avr_mcu) String(atmega128) Value(175)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16m1) Value(176)
++Enum(avr_mcu) String(atmega128a) Value(176)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32m1) Value(177)
++Enum(avr_mcu) String(atmega1280) Value(177)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega64m1) Value(178)
++Enum(avr_mcu) String(atmega1281) Value(178)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega16u4) Value(179)
++Enum(avr_mcu) String(atmega1284) Value(179)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32u4) Value(180)
++Enum(avr_mcu) String(atmega1284p) Value(180)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega32u6) Value(181)
++Enum(avr_mcu) String(atmega128rfa1) Value(181)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90scr100) Value(182)
++Enum(avr_mcu) String(at90can128) Value(182)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90usb646) Value(183)
++Enum(avr_mcu) String(at90usb1286) Value(183)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90usb647) Value(184)
++Enum(avr_mcu) String(at90usb1287) Value(184)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at94k) Value(185)
++Enum(avr_mcu) String(avr6) Value(185)
+ 
+ EnumValue
+-Enum(avr_mcu) String(m3000) Value(186)
++Enum(avr_mcu) String(atmega2560) Value(186)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avr51) Value(187)
++Enum(avr_mcu) String(atmega2561) Value(187)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega128) Value(188)
++Enum(avr_mcu) String(avrxmega2) Value(188)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega128a) Value(189)
++Enum(avr_mcu) String(atxmega16a4) Value(189)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega1280) Value(190)
++Enum(avr_mcu) String(atxmega16d4) Value(190)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega1281) Value(191)
++Enum(avr_mcu) String(atxmega16x1) Value(191)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega1284) Value(192)
++Enum(avr_mcu) String(atxmega32a4) Value(192)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega1284p) Value(193)
++Enum(avr_mcu) String(atxmega32d4) Value(193)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega128rfa1) Value(194)
++Enum(avr_mcu) String(atxmega32x1) Value(194)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90can128) Value(195)
++Enum(avr_mcu) String(atmxt112sl) Value(195)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90usb1286) Value(196)
++Enum(avr_mcu) String(atmxt224) Value(196)
+ 
+ EnumValue
+-Enum(avr_mcu) String(at90usb1287) Value(197)
++Enum(avr_mcu) String(atmxt224e) Value(197)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avr6) Value(198)
++Enum(avr_mcu) String(atmxt336s) Value(198)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega2560) Value(199)
++Enum(avr_mcu) String(atxmega16a4u) Value(199)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmega2561) Value(200)
++Enum(avr_mcu) String(atxmega16c4) Value(200)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avrxmega2) Value(201)
++Enum(avr_mcu) String(atxmega32a4u) Value(201)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega16a4) Value(202)
++Enum(avr_mcu) String(atxmega32c4) Value(202)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega16d4) Value(203)
++Enum(avr_mcu) String(atxmega32e5) Value(203)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega16x1) Value(204)
++Enum(avr_mcu) String(avrxmega4) Value(204)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32a4) Value(205)
++Enum(avr_mcu) String(atxmega64a3) Value(205)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32d4) Value(206)
++Enum(avr_mcu) String(atxmega64d3) Value(206)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32x1) Value(207)
++Enum(avr_mcu) String(atxmega64a3u) Value(207)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt112sl) Value(208)
++Enum(avr_mcu) String(atxmega64a4u) Value(208)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt224) Value(209)
++Enum(avr_mcu) String(atxmega64b1) Value(209)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt224e) Value(210)
++Enum(avr_mcu) String(atxmega64b3) Value(210)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt336s) Value(211)
++Enum(avr_mcu) String(atxmega64c3) Value(211)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega16a4u) Value(212)
++Enum(avr_mcu) String(atxmega64d4) Value(212)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega16c4) Value(213)
++Enum(avr_mcu) String(avrxmega5) Value(213)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32a4u) Value(214)
++Enum(avr_mcu) String(atxmega64a1) Value(214)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32c4) Value(215)
++Enum(avr_mcu) String(atxmega64a1u) Value(215)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega32e5) Value(216)
++Enum(avr_mcu) String(avrxmega6) Value(216)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avrxmega4) Value(217)
++Enum(avr_mcu) String(atxmega128a3) Value(217)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64a3) Value(218)
++Enum(avr_mcu) String(atxmega128d3) Value(218)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64d3) Value(219)
++Enum(avr_mcu) String(atxmega192a3) Value(219)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64a3u) Value(220)
++Enum(avr_mcu) String(atxmega192d3) Value(220)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64a4u) Value(221)
++Enum(avr_mcu) String(atxmega256a3) Value(221)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64b1) Value(222)
++Enum(avr_mcu) String(atxmega256a3b) Value(222)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64b3) Value(223)
++Enum(avr_mcu) String(atxmega256a3bu) Value(223)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64c3) Value(224)
++Enum(avr_mcu) String(atxmega256d3) Value(224)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64d4) Value(225)
++Enum(avr_mcu) String(atxmega128a3u) Value(225)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avrxmega5) Value(226)
++Enum(avr_mcu) String(atxmega128b1) Value(226)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64a1) Value(227)
++Enum(avr_mcu) String(atxmega128b3) Value(227)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega64a1u) Value(228)
++Enum(avr_mcu) String(atxmega128c3) Value(228)
+ 
+ EnumValue
+-Enum(avr_mcu) String(avrxmega6) Value(229)
++Enum(avr_mcu) String(atxmega128d4) Value(229)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128a3) Value(230)
++Enum(avr_mcu) String(atmxt540s) Value(230)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128d3) Value(231)
++Enum(avr_mcu) String(atmxt540sreva) Value(231)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega192a3) Value(232)
++Enum(avr_mcu) String(atxmega192a3u) Value(232)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega192d3) Value(233)
++Enum(avr_mcu) String(atxmega192c3) Value(233)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega256a3) Value(234)
++Enum(avr_mcu) String(atxmega256a3u) Value(234)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega256a3b) Value(235)
++Enum(avr_mcu) String(atxmega256c3) Value(235)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega256a3bu) Value(236)
++Enum(avr_mcu) String(atxmega384c3) Value(236)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega256d3) Value(237)
++Enum(avr_mcu) String(atxmega384d3) Value(237)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128a3u) Value(238)
++Enum(avr_mcu) String(avrxmega7) Value(238)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128b1) Value(239)
++Enum(avr_mcu) String(atxmega128a1) Value(239)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128b3) Value(240)
++Enum(avr_mcu) String(atxmega128a1u) Value(240)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128c3) Value(241)
++Enum(avr_mcu) String(atxmega128a4u) Value(241)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega128d4) Value(242)
++Enum(avr_mcu) String(avr1) Value(242)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt540s) Value(243)
++Enum(avr_mcu) String(at90s1200) Value(243)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atmxt540sreva) Value(244)
++Enum(avr_mcu) String(attiny11) Value(244)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega192a3u) Value(245)
++Enum(avr_mcu) String(attiny12) Value(245)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega192c3) Value(246)
++Enum(avr_mcu) String(attiny15) Value(246)
+ 
+ EnumValue
+-Enum(avr_mcu) String(atxmega256a3u) Value(247)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega256c3) Value(248)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega384c3) Value(249)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega384d3) Value(250)
+-
+-EnumValue
+-Enum(avr_mcu) String(avrxmega7) Value(251)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega128a1) Value(252)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega128a1u) Value(253)
+-
+-EnumValue
+-Enum(avr_mcu) String(atxmega128a4u) Value(254)
+-
+-EnumValue
+-Enum(avr_mcu) String(avr1) Value(255)
+-
+-EnumValue
+-Enum(avr_mcu) String(at90s1200) Value(256)
+-
+-EnumValue
+-Enum(avr_mcu) String(attiny11) Value(257)
+-
+-EnumValue
+-Enum(avr_mcu) String(attiny12) Value(258)
+-
+-EnumValue
+-Enum(avr_mcu) String(attiny15) Value(259)
+-
+-EnumValue
+-Enum(avr_mcu) String(attiny28) Value(260)
++Enum(avr_mcu) String(attiny28) Value(247)
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/gen-avr-mmcu-texi.c gcc-4.8.1/gcc/config/avr/gen-avr-mmcu-texi.c
+--- gcc-4.8.1.orig/gcc/config/avr/gen-avr-mmcu-texi.c	2013-01-14 12:09:34.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/gen-avr-mmcu-texi.c	2013-07-10 07:36:36.732157000 -0500
+@@ -68,6 +68,7 @@
+ static void
+ print_mcus (size_t n_mcus)
+ {
++  int duplicate = 0;
+   size_t i;
+     
+   if (!n_mcus)
+@@ -78,7 +79,20 @@
+   printf ("@*@var{mcu}@tie{}=");
+ 
+   for (i = 0; i < n_mcus; i++)
+-    printf (" @code{%s}%s", mcu_name[i], i == n_mcus-1 ? ".\n\n" : ",");
++    {
++      printf (" @code{%s}%s", mcu_name[i], i == n_mcus-1 ? ".\n\n" : ",");
++
++      if (i && !strcmp (mcu_name[i], mcu_name[i-1]))
++        {
++          /* Sanity-check: Fail on devices that are present more than once.  */
++
++          duplicate = 1;
++          fprintf (stderr, "error: duplicate device: %s\n", mcu_name[i]);
++        }
++    }
++
++  if (duplicate)
++    exit (1);
+ }
+ 
+ int main (void)
+diff -Naur gcc-4.8.1.orig/gcc/config/avr/t-multilib gcc-4.8.1/gcc/config/avr/t-multilib
+--- gcc-4.8.1.orig/gcc/config/avr/t-multilib	2013-02-28 03:03:09.000000000 -0600
++++ gcc-4.8.1/gcc/config/avr/t-multilib	2013-07-10 07:36:36.732157000 -0500
+@@ -135,7 +135,6 @@
+ 	mmcu?avr5=mmcu?atmega169a \
+ 	mmcu?avr5=mmcu?atmega169p \
+ 	mmcu?avr5=mmcu?atmega169pa \
+-	mmcu?avr5=mmcu?atmega16hva \
+ 	mmcu?avr5=mmcu?atmega16hvb \
+ 	mmcu?avr5=mmcu?atmega16hvbrevb \
+ 	mmcu?avr5=mmcu?atmega16m1 \
+@@ -143,7 +142,6 @@
+ 	mmcu?avr5=mmcu?atmega26hvg \
+ 	mmcu?avr5=mmcu?atmega32a \
+ 	mmcu?avr5=mmcu?atmega32 \
+-	mmcu?avr5=mmcu?atmega32a \
+ 	mmcu?avr5=mmcu?atmega323 \
+ 	mmcu?avr5=mmcu?atmega324a \
+ 	mmcu?avr5=mmcu?atmega324p \
+@@ -189,7 +187,6 @@
+ 	mmcu?avr5=mmcu?atmega6490 \
+ 	mmcu?avr5=mmcu?atmega16hva \
+ 	mmcu?avr5=mmcu?atmega16hva2 \
+-	mmcu?avr5=mmcu?atmega16hvb \
+ 	mmcu?avr5=mmcu?atmega32hvb \
+ 	mmcu?avr5=mmcu?atmega6490a \
+ 	mmcu?avr5=mmcu?atmega6490p \
+@@ -198,23 +195,13 @@
+ 	mmcu?avr5=mmcu?atmega64hve \
+ 	mmcu?avr5=mmcu?atmega64rfa2 \
+ 	mmcu?avr5=mmcu?atmega64rfr2 \
+-	mmcu?avr5=mmcu?atmega32hvb \
+ 	mmcu?avr5=mmcu?atmega32hvbrevb \
+-	mmcu?avr5=mmcu?atmega16hva2 \
+ 	mmcu?avr5=mmcu?atmega48hvf \
+ 	mmcu?avr5=mmcu?at90can32 \
+ 	mmcu?avr5=mmcu?at90can64 \
+ 	mmcu?avr5=mmcu?at90pwm161 \
+ 	mmcu?avr5=mmcu?at90pwm216 \
+ 	mmcu?avr5=mmcu?at90pwm316 \
+-	mmcu?avr5=mmcu?atmega32c1 \
+-	mmcu?avr5=mmcu?atmega64c1 \
+-	mmcu?avr5=mmcu?atmega16m1 \
+-	mmcu?avr5=mmcu?atmega32m1 \
+-	mmcu?avr5=mmcu?atmega64m1 \
+-	mmcu?avr5=mmcu?atmega16u4 \
+-	mmcu?avr5=mmcu?atmega32u4 \
+-	mmcu?avr5=mmcu?atmega32u6 \
+ 	mmcu?avr5=mmcu?at90scr100 \
+ 	mmcu?avr5=mmcu?at90usb646 \
+ 	mmcu?avr5=mmcu?at90usb647 \
+diff -Naur gcc-4.8.1.orig/gcc/config/darwin.c gcc-4.8.1/gcc/config/darwin.c
+--- gcc-4.8.1.orig/gcc/config/darwin.c	2013-02-11 16:36:23.000000000 -0600
++++ gcc-4.8.1/gcc/config/darwin.c	2013-07-22 03:57:41.322517000 -0500
+@@ -369,14 +369,13 @@
+ 
+ static GTY(()) const char * function_base_func_name;
+ static GTY(()) int current_pic_label_num;
++static GTY(()) int emitted_pic_label_num;
+ 
+-void
+-machopic_output_function_base_name (FILE *file)
++static void
++update_pic_label_number_if_needed (void)
+ {
+   const char *current_name;
+ 
+-  /* If dynamic-no-pic is on, we should not get here.  */
+-  gcc_assert (!MACHO_DYNAMIC_NO_PIC_P);
+   /* When we are generating _get_pc thunks within stubs, there is no current
+      function.  */
+   if (current_function_decl)
+@@ -394,7 +393,28 @@
+       ++current_pic_label_num;
+       function_base_func_name = "L_machopic_stub_dummy";
+     }
+-  fprintf (file, "L%011d$pb", current_pic_label_num);
++}
++
++void
++machopic_output_function_base_name (FILE *file)
++{
++  /* If dynamic-no-pic is on, we should not get here.  */
++  gcc_assert (!MACHO_DYNAMIC_NO_PIC_P);
++
++  update_pic_label_number_if_needed ();
++  fprintf (file, "L%d$pb", current_pic_label_num);
++}
++
++bool
++machopic_should_output_picbase_label (void)
++{
++  update_pic_label_number_if_needed ();
++
++  if (current_pic_label_num == emitted_pic_label_num)
++    return false;
++
++  emitted_pic_label_num = current_pic_label_num;
++  return true;
+ }
+ 
+ /* The suffix attached to non-lazy pointer symbols.  */
+diff -Naur gcc-4.8.1.orig/gcc/config/darwin-protos.h gcc-4.8.1/gcc/config/darwin-protos.h
+--- gcc-4.8.1.orig/gcc/config/darwin-protos.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/darwin-protos.h	2013-07-22 03:57:41.322517000 -0500
+@@ -25,6 +25,7 @@
+ extern void machopic_output_function_base_name (FILE *);
+ extern const char *machopic_indirection_name (rtx, bool);
+ extern const char *machopic_mcount_stub_name (void);
++extern bool machopic_should_output_picbase_label (void);
+ 
+ #ifdef RTX_CODE
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/bmiintrin.h gcc-4.8.1/gcc/config/i386/bmiintrin.h
+--- gcc-4.8.1.orig/gcc/config/i386/bmiintrin.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/i386/bmiintrin.h	2013-07-19 02:38:07.333150000 -0500
+@@ -38,7 +38,6 @@
+   return __builtin_ctzs (__X);
+ }
+ 
+-
+ extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __andn_u32 (unsigned int __X, unsigned int __Y)
+ {
+@@ -52,23 +51,46 @@
+ }
+ 
+ extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_bextr_u32 (unsigned int __X, unsigned int __Y, unsigned __Z)
++{
++  return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
++}
++
++extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsi_u32 (unsigned int __X)
+ {
+   return __X & -__X;
+ }
+ 
+ extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsi_u32 (unsigned int __X)
++{
++  return __blsi_u32 (__X);
++}
++
++extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsmsk_u32 (unsigned int __X)
+ {
+   return __X ^ (__X - 1);
+ }
+ 
+ extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsmsk_u32 (unsigned int __X)
++{
++  return __blsmsk_u32 (__X);
++}
++
++extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsr_u32 (unsigned int __X)
+ {
+   return __X & (__X - 1);
+ }
+ 
++extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsr_u32 (unsigned int __X)
++{
++  return __blsr_u32 (__X);
++}
+ 
+ extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __tzcnt_u32 (unsigned int __X)
+@@ -76,6 +98,12 @@
+   return __builtin_ctz (__X);
+ }
+ 
++extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_tzcnt_u32 (unsigned int __X)
++{
++  return __builtin_ctz (__X);
++}
++
+ 
+ #ifdef  __x86_64__
+ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+@@ -91,28 +119,58 @@
+ }
+ 
+ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_bextr_u64 (unsigned long long __X, unsigned int __Y, unsigned int __Z)
++{
++  return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
++}
++
++extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsi_u64 (unsigned long long __X)
+ {
+   return __X & -__X;
+ }
+ 
+ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsi_u64 (unsigned long long __X)
++{
++  return __blsi_u64 (__X);
++}
++
++extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsmsk_u64 (unsigned long long __X)
+ {
+   return __X ^ (__X - 1);
+ }
+ 
+ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsmsk_u64 (unsigned long long __X)
++{
++  return __blsmsk_u64 (__X);
++}
++
++extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __blsr_u64 (unsigned long long __X)
+ {
+   return __X & (__X - 1);
+ }
+ 
+ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_blsr_u64 (unsigned long long __X)
++{
++  return __blsr_u64 (__X);
++}
++
++extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ __tzcnt_u64 (unsigned long long __X)
+ {
+   return __builtin_ctzll (__X);
+ }
++
++extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++_tzcnt_u64 (unsigned long long __X)
++{
++  return __builtin_ctzll (__X);
++}
+ 
+ #endif /* __x86_64__  */
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/driver-i386.c gcc-4.8.1/gcc/config/i386/driver-i386.c
+--- gcc-4.8.1.orig/gcc/config/i386/driver-i386.c	2013-05-17 10:06:36.000000000 -0500
++++ gcc-4.8.1/gcc/config/i386/driver-i386.c	2013-08-28 03:25:13.429539000 -0500
+@@ -520,8 +520,7 @@
+       if (vendor == signature_AMD_ebx
+ 	  || vendor == signature_CENTAUR_ebx
+ 	  || vendor == signature_CYRIX_ebx
+-	  || vendor == signature_NSC_ebx
+-	  || vendor == signature_TM2_ebx)
++	  || vendor == signature_NSC_ebx)
+ 	cache = detect_caches_amd (ext_level);
+       else if (vendor == signature_INTEL_ebx)
+ 	{
+@@ -639,13 +638,18 @@
+ 	  /* Atom.  */
+ 	  cpu = "atom";
+ 	  break;
++	case 0x0f:
++	  /* Merom.  */
++	case 0x17:
++	case 0x1d:
++	  /* Penryn.  */
++	  cpu = "core2";
++	  break;
+ 	case 0x1a:
+ 	case 0x1e:
+ 	case 0x1f:
+ 	case 0x2e:
+ 	  /* Nehalem.  */
+-	  cpu = "corei7";
+-	  break;
+ 	case 0x25:
+ 	case 0x2c:
+ 	case 0x2f:
+@@ -657,20 +661,25 @@
+ 	  /* Sandy Bridge.  */
+ 	  cpu = "corei7-avx";
+ 	  break;
+-	case 0x17:
+-	case 0x1d:
+-	  /* Penryn.  */
+-	  cpu = "core2";
+-	  break;
+-	case 0x0f:
+-	  /* Merom.  */
+-	  cpu = "core2";
++	case 0x3a:
++	case 0x3e:
++	  /* Ivy Bridge.  */
++	  cpu = "core-avx-i";
++	  break;
++	case 0x3c:
++	case 0x45:
++	case 0x46:
++	  /* Haswell.  */
++	  cpu = "core-avx2";
+ 	  break;
+ 	default:
+ 	  if (arch)
+ 	    {
+ 	      /* This is unknown family 0x6 CPU.  */
+-	      if (has_avx)
++	      if (has_avx2)
++		/* Assume Haswell.  */
++		cpu = "core-avx2";
++	      else if (has_avx)
+ 		/* Assume Sandy Bridge.  */
+ 		cpu = "corei7-avx";
+ 	      else if (has_sse4_2)
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/i386.c gcc-4.8.1/gcc/config/i386/i386.c
+--- gcc-4.8.1.orig/gcc/config/i386/i386.c	2013-05-17 10:06:36.000000000 -0500
++++ gcc-4.8.1/gcc/config/i386/i386.c	2013-08-23 05:01:34.440607000 -0500
+@@ -2438,11 +2438,11 @@
+   {&generic32_cost, 16, 7, 16, 7, 16},
+   {&generic64_cost, 16, 10, 16, 10, 16},
+   {&amdfam10_cost, 32, 24, 32, 7, 32},
+-  {&bdver1_cost, 32, 24, 32, 7, 32},
+-  {&bdver2_cost, 32, 24, 32, 7, 32},
+-  {&bdver3_cost, 32, 24, 32, 7, 32},
+-  {&btver1_cost, 32, 24, 32, 7, 32},
+-  {&btver2_cost, 32, 24, 32, 7, 32},
++  {&bdver1_cost, 16, 10, 16, 7, 11},
++  {&bdver2_cost, 16, 10, 16, 7, 11},
++  {&bdver3_cost, 16, 10, 16, 7, 11},
++  {&btver1_cost, 16, 10, 16, 7, 11},
++  {&btver2_cost, 16, 10, 16, 7, 11},
+   {&atom_cost, 16, 15, 16, 7, 16}
+ };
+ 
+@@ -3768,24 +3768,19 @@
+       ix86_gen_leave = gen_leave_rex64;
+       if (Pmode == DImode)
+ 	{
+-	  ix86_gen_monitor = gen_sse3_monitor64_di;
+ 	  ix86_gen_tls_global_dynamic_64 = gen_tls_global_dynamic_64_di;
+ 	  ix86_gen_tls_local_dynamic_base_64
+ 	    = gen_tls_local_dynamic_base_64_di;
+ 	}
+       else
+ 	{
+-	  ix86_gen_monitor = gen_sse3_monitor64_si;
+ 	  ix86_gen_tls_global_dynamic_64 = gen_tls_global_dynamic_64_si;
+ 	  ix86_gen_tls_local_dynamic_base_64
+ 	    = gen_tls_local_dynamic_base_64_si;
+ 	}
+     }
+   else
+-    {
+-      ix86_gen_leave = gen_leave;
+-      ix86_gen_monitor = gen_sse3_monitor;
+-    }
++    ix86_gen_leave = gen_leave;
+ 
+   if (Pmode == DImode)
+     {
+@@ -3797,6 +3792,7 @@
+       ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_di;
+       ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probedi;
+       ix86_gen_probe_stack_range = gen_probe_stack_rangedi;
++      ix86_gen_monitor = gen_sse3_monitor_di;
+     }
+   else
+     {
+@@ -3808,6 +3804,7 @@
+       ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_si;
+       ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probesi;
+       ix86_gen_probe_stack_range = gen_probe_stack_rangesi;
++      ix86_gen_monitor = gen_sse3_monitor_si;
+     }
+ 
+ #ifdef USE_IX86_CLD
+@@ -4691,6 +4688,28 @@
+   return default_elf_select_section (decl, reloc, align);
+ }
+ 
++/* Select a set of attributes for section NAME based on the properties
++   of DECL and whether or not RELOC indicates that DECL's initializer
++   might contain runtime relocations.  */
++
++static unsigned int ATTRIBUTE_UNUSED
++x86_64_elf_section_type_flags (tree decl, const char *name, int reloc)
++{
++  unsigned int flags = default_section_type_flags (decl, name, reloc);
++
++  if (decl == NULL_TREE
++      && (strcmp (name, ".ldata.rel.ro") == 0
++	  || strcmp (name, ".ldata.rel.ro.local") == 0))
++    flags |= SECTION_RELRO;
++
++  if (strcmp (name, ".lbss") == 0
++      || strncmp (name, ".lbss.", 5) == 0
++      || strncmp (name, ".gnu.linkonce.lb.", 16) == 0)
++    flags |= SECTION_BSS;
++
++  return flags;
++}
++
+ /* Build up a unique section name, expressed as a
+    STRING_CST node, and assign it to DECL_SECTION_NAME (decl).
+    RELOC indicates whether the initial value of EXP requires
+@@ -6396,7 +6415,7 @@
+ 
+   /* Likewise, error if the ABI requires us to return values in the
+      x87 registers and the user specified -mno-80387.  */
+-  if (!TARGET_80387 && in_return)
++  if (in_return && !TARGET_FLOAT_RETURNS_IN_80387)
+     for (i = 0; i < n; i++)
+       if (regclass[i] == X86_64_X87_CLASS
+ 	  || regclass[i] == X86_64_X87UP_CLASS
+@@ -8721,17 +8740,12 @@
+ 
+   if (!flag_pic)
+     {
+-      xops[2] = gen_rtx_LABEL_REF (Pmode, label ? label : gen_label_rtx ());
++      if (TARGET_MACHO)
++	/* We don't need a pic base, we're not producing pic.  */
++	gcc_unreachable ();
+ 
++      xops[2] = gen_rtx_LABEL_REF (Pmode, label ? label : gen_label_rtx ());
+       output_asm_insn ("mov%z0\t{%2, %0|%0, %2}", xops);
+-
+-#if TARGET_MACHO
+-      /* Output the Mach-O "canonical" label name ("Lxx$pb") here too.  This
+-         is what will be referenced by the Mach-O PIC subsystem.  */
+-      if (!label)
+-	ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME);
+-#endif
+-
+       targetm.asm_out.internal_label (asm_out_file, "L",
+ 				      CODE_LABEL_NUMBER (XEXP (xops[2], 0)));
+     }
+@@ -8744,12 +8758,18 @@
+       xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
+       xops[2] = gen_rtx_MEM (QImode, xops[2]);
+       output_asm_insn ("call\t%X2", xops);
+-      /* Output the Mach-O "canonical" label name ("Lxx$pb") here too.  This
+-         is what will be referenced by the Mach-O PIC subsystem.  */
++
+ #if TARGET_MACHO
+-      if (!label)
++      /* Output the Mach-O "canonical" pic base label name ("Lxx$pb") here.
++         This is what will be referenced by the Mach-O PIC subsystem.  */
++      if (machopic_should_output_picbase_label () || !label)
+ 	ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME);
+-      else
++
++      /* When we are restoring the pic base at the site of a nonlocal label,
++         and we decided to emit the pic base above, we will still output a
++         local label used for calculating the correction offset (even though
++         the offset will be 0 in that case).  */
++      if (label)
+         targetm.asm_out.internal_label (asm_out_file, "L",
+ 					   CODE_LABEL_NUMBER (label));
+ #endif
+@@ -8831,7 +8851,8 @@
+       && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM)
+ 	  || crtl->profile
+ 	  || crtl->calls_eh_return
+-	  || crtl->uses_const_pool))
++	  || crtl->uses_const_pool
++	  || cfun->has_nonlocal_label))
+     return ix86_select_alt_pic_regnum () == INVALID_REGNUM;
+ 
+   if (crtl->calls_eh_return && maybe_eh_return)
+@@ -13596,21 +13617,29 @@
+ 	    x = replace_equiv_address_nv (orig_x, x);
+ 	  return x;
+ 	}
+-      if (GET_CODE (x) != CONST
+-	  || GET_CODE (XEXP (x, 0)) != UNSPEC
+-	  || (XINT (XEXP (x, 0), 1) != UNSPEC_GOTPCREL
+-	      && XINT (XEXP (x, 0), 1) != UNSPEC_PCREL)
+-	  || (!MEM_P (orig_x) && XINT (XEXP (x, 0), 1) != UNSPEC_PCREL))
+-	return ix86_delegitimize_tls_address (orig_x);
+-      x = XVECEXP (XEXP (x, 0), 0, 0);
+-      if (GET_MODE (orig_x) != GET_MODE (x) && MEM_P (orig_x))
+-	{
+-	  x = simplify_gen_subreg (GET_MODE (orig_x), x,
+-				   GET_MODE (x), 0);
+-	  if (x == NULL_RTX)
+-	    return orig_x;
++
++      if (GET_CODE (x) == CONST
++	  && GET_CODE (XEXP (x, 0)) == UNSPEC
++	  && (XINT (XEXP (x, 0), 1) == UNSPEC_GOTPCREL
++	      || XINT (XEXP (x, 0), 1) == UNSPEC_PCREL)
++	  && (MEM_P (orig_x) || XINT (XEXP (x, 0), 1) == UNSPEC_PCREL))
++	{
++	  x = XVECEXP (XEXP (x, 0), 0, 0);
++	  if (GET_MODE (orig_x) != GET_MODE (x) && MEM_P (orig_x))
++	    {
++	      x = simplify_gen_subreg (GET_MODE (orig_x), x,
++				       GET_MODE (x), 0);
++	      if (x == NULL_RTX)
++		return orig_x;
++	    }
++	  return x;
+ 	}
+-      return x;
++
++      if (ix86_cmodel != CM_MEDIUM_PIC && ix86_cmodel != CM_LARGE_PIC)
++	return ix86_delegitimize_tls_address (orig_x);
++
++      /* Fall thru into the code shared with -m32 for -mcmodel=large -fpic
++	 and -mcmodel=medium -fpic.  */
+     }
+ 
+   if (GET_CODE (x) != PLUS
+@@ -13647,10 +13676,12 @@
+ 
+   if (GET_CODE (x) == UNSPEC
+       && ((XINT (x, 1) == UNSPEC_GOT && MEM_P (orig_x) && !addend)
+-	  || (XINT (x, 1) == UNSPEC_GOTOFF && !MEM_P (orig_x))))
++	  || (XINT (x, 1) == UNSPEC_GOTOFF && !MEM_P (orig_x))
++	  || (XINT (x, 1) == UNSPEC_PLTOFF && ix86_cmodel == CM_LARGE_PIC
++	      && !MEM_P (orig_x) && !addend)))
+     result = XVECEXP (x, 0, 0);
+ 
+-  if (TARGET_MACHO && darwin_local_data_pic (x)
++  if (!TARGET_64BIT && TARGET_MACHO && darwin_local_data_pic (x)
+       && !MEM_P (orig_x))
+     result = XVECEXP (x, 0, 0);
+ 
+@@ -28935,10 +28966,11 @@
+       if (predicate_chain == NULL_TREE)
+ 	continue;
+ 
++      function_version_info [actual_versions].version_decl = version_decl;
++      function_version_info [actual_versions].predicate_chain
++	 = predicate_chain;
++      function_version_info [actual_versions].dispatch_priority = priority;
+       actual_versions++;
+-      function_version_info [ix - 1].version_decl = version_decl;
+-      function_version_info [ix - 1].predicate_chain = predicate_chain;
+-      function_version_info [ix - 1].dispatch_priority = priority;
+     }
+ 
+   /* Sort the versions according to descending order of dispatch priority.  The
+@@ -31780,7 +31812,13 @@
+ 	}
+ 
+       if (target == 0)
+-	target = gen_reg_rtx (mode);
++	{
++	  /* mode is VOIDmode if __builtin_rd* has been called
++	     without lhs.  */
++	  if (mode == VOIDmode)
++	    return target;
++	  target = gen_reg_rtx (mode);
++	}
+ 
+       if (TARGET_64BIT)
+ 	{
+@@ -35444,6 +35482,46 @@
+     }
+ }
+ 
++/* Fix up a Windows system unwinder issue.  If an EH region falls thru into
++   the epilogue, the Windows system unwinder will apply epilogue logic and
++   produce incorrect offsets.  This can be avoided by adding a nop between
++   the last insn that can throw and the first insn of the epilogue.  */
++
++static void
++ix86_seh_fixup_eh_fallthru (void)
++{
++  edge e;
++  edge_iterator ei;
++
++  FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
++    {
++      rtx insn, next;
++
++      /* Find the beginning of the epilogue.  */
++      for (insn = BB_END (e->src); insn != NULL; insn = PREV_INSN (insn))
++	if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG)
++	  break;
++      if (insn == NULL)
++	continue;
++
++      /* We only care about preceeding insns that can throw.  */
++      insn = prev_active_insn (insn);
++      if (insn == NULL || !can_throw_internal (insn))
++	continue;
++
++      /* Do not separate calls from their debug information.  */
++      for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
++	if (NOTE_P (next)
++            && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
++                || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
++	  insn = next;
++	else
++	  break;
++
++      emit_insn_after (gen_nops (const1_rtx), insn);
++    }
++}
++
+ /* Implement machine specific optimizations.  We implement padding of returns
+    for K8 CPUs and pass to avoid 4 jumps in the single 16 byte window.  */
+ static void
+@@ -35453,6 +35531,9 @@
+      with old MDEP_REORGS that are not CFG based.  Recompute it now.  */
+   compute_bb_for_insn ();
+ 
++  if (TARGET_SEH && current_function_has_exception_handlers ())
++    ix86_seh_fixup_eh_fallthru ();
++
+   if (optimize && optimize_function_for_speed_p (cfun))
+     {
+       if (TARGET_PAD_SHORT_FUNCTION)
+@@ -42205,6 +42286,8 @@
+ 
+ #undef TARGET_ATTRIBUTE_TABLE
+ #define TARGET_ATTRIBUTE_TABLE ix86_attribute_table
++#undef TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P
++#define TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P hook_bool_const_tree_true
+ #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
+ #  undef TARGET_MERGE_DECL_ATTRIBUTES
+ #  define TARGET_MERGE_DECL_ATTRIBUTES merge_dllimport_decl_attributes
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/i386.md gcc-4.8.1/gcc/config/i386/i386.md
+--- gcc-4.8.1.orig/gcc/config/i386/i386.md	2013-05-22 07:16:41.000000000 -0500
++++ gcc-4.8.1/gcc/config/i386/i386.md	2013-08-13 07:45:06.811510000 -0500
+@@ -222,6 +222,8 @@
+   UNSPECV_XEND
+   UNSPECV_XABORT
+   UNSPECV_XTEST
++
++  UNSPECV_NLGR
+ ])
+ 
+ ;; Constants to represent rounding modes in the ROUND instruction
+@@ -2314,7 +2316,7 @@
+   "TARGET_LP64 && ix86_check_movabs (insn, 0)"
+   "@
+    movabs{<imodesuffix>}\t{%1, %P0|[%P0], %1}
+-   mov{<imodesuffix>}\t{%1, %a0|%a0, %1}"
++   mov{<imodesuffix>}\t{%1, %a0|<iptrsize> PTR %a0, %1}"
+   [(set_attr "type" "imov")
+    (set_attr "modrm" "0,*")
+    (set_attr "length_address" "8,0")
+@@ -2328,7 +2330,7 @@
+   "TARGET_LP64 && ix86_check_movabs (insn, 1)"
+   "@
+    movabs{<imodesuffix>}\t{%P1, %0|%0, [%P1]}
+-   mov{<imodesuffix>}\t{%a1, %0|%0, %a1}"
++   mov{<imodesuffix>}\t{%a1, %0|%0, <iptrsize> PTR %a1}"
+   [(set_attr "type" "imov")
+    (set_attr "modrm" "0,*")
+    (set_attr "length_address" "8,0")
+@@ -12120,8 +12122,8 @@
+ 
+ (define_insn "bmi_bextr_<mode>"
+   [(set (match_operand:SWI48 0 "register_operand" "=r,r")
+-        (unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r,r")
+-                       (match_operand:SWI48 2 "nonimmediate_operand" "r,m")]
++        (unspec:SWI48 [(match_operand:SWI48 1 "nonimmediate_operand" "r,m")
++                       (match_operand:SWI48 2 "register_operand" "r,r")]
+                        UNSPEC_BEXTR))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI"
+@@ -12174,9 +12176,9 @@
+ ;; BMI2 instructions.
+ (define_insn "bmi2_bzhi_<mode>3"
+   [(set (match_operand:SWI48 0 "register_operand" "=r")
+-	(and:SWI48 (match_operand:SWI48 1 "register_operand" "r")
+-		   (lshiftrt:SWI48 (const_int -1)
+-				   (match_operand:SWI48 2 "nonimmediate_operand" "rm"))))
++	(and:SWI48 (lshiftrt:SWI48 (const_int -1)
++				   (match_operand:SWI48 2 "register_operand" "r"))
++		   (match_operand:SWI48 1 "nonimmediate_operand" "rm")))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI2"
+   "bzhi\t{%2, %1, %0|%0, %1, %2}"
+@@ -16646,7 +16648,37 @@
+     emit_insn (gen_set_got (pic_offset_table_rtx));
+   DONE;
+ })
+-
+
++
++(define_insn_and_split "nonlocal_goto_receiver"
++  [(unspec_volatile [(const_int 0)] UNSPECV_NLGR)]
++  "TARGET_MACHO && !TARGET_64BIT && flag_pic"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++{
++  if (crtl->uses_pic_offset_table)
++    {
++      rtx xops[3];
++      rtx label_rtx = gen_label_rtx ();
++      rtx tmp;
++
++      /* Get a new pic base.  */
++      emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx));
++      /* Correct this with the offset from the new to the old.  */
++      xops[0] = xops[1] = pic_offset_table_rtx;
++      label_rtx = gen_rtx_LABEL_REF (SImode, label_rtx);
++      tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, label_rtx),
++			    UNSPEC_MACHOPIC_OFFSET);
++      xops[2] = gen_rtx_CONST (Pmode, tmp);
++      ix86_expand_binary_operator (MINUS, SImode, xops);
++    }
++  else
++    /* No pic reg restore needed.  */
++    emit_note (NOTE_INSN_DELETED);
++
++  DONE;
++})
++
+ ;; Avoid redundant prefixes by splitting HImode arithmetic to SImode.
+ 
+ (define_split
+@@ -17043,6 +17075,7 @@
+   "(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
+    && peep2_reg_dead_p (4, operands[0])
+    && !reg_overlap_mentioned_p (operands[0], operands[1])
++   && !reg_overlap_mentioned_p (operands[0], operands[2])
+    && (<MODE>mode != QImode
+        || immediate_operand (operands[2], QImode)
+        || q_regs_operand (operands[2], QImode))
+@@ -17107,6 +17140,7 @@
+        || immediate_operand (operands[2], SImode)
+        || q_regs_operand (operands[2], SImode))
+    && !reg_overlap_mentioned_p (operands[0], operands[1])
++   && !reg_overlap_mentioned_p (operands[0], operands[2])
+    && ix86_match_ccmode (peep2_next_insn (3),
+ 			 (GET_CODE (operands[3]) == PLUS
+ 			  || GET_CODE (operands[3]) == MINUS)
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/predicates.md gcc-4.8.1/gcc/config/i386/predicates.md
+--- gcc-4.8.1.orig/gcc/config/i386/predicates.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/i386/predicates.md	2013-07-03 15:24:19.796040000 -0500
+@@ -835,19 +835,28 @@
+     return false;
+ 
+   /* VSIB addressing doesn't support (%rip).  */
+-  if (parts.disp && GET_CODE (parts.disp) == CONST)
++  if (parts.disp)
+     {
+-      disp = XEXP (parts.disp, 0);
+-      if (GET_CODE (disp) == PLUS)
+-	disp = XEXP (disp, 0);
+-      if (GET_CODE (disp) == UNSPEC)
+-	switch (XINT (disp, 1))
+-	  {
+-	  case UNSPEC_GOTPCREL:
+-	  case UNSPEC_PCREL:
+-	  case UNSPEC_GOTNTPOFF:
+-	    return false;
+-	  }
++      disp = parts.disp;
++      if (GET_CODE (disp) == CONST)
++	{
++	  disp = XEXP (disp, 0);
++	  if (GET_CODE (disp) == PLUS)
++	    disp = XEXP (disp, 0);
++	  if (GET_CODE (disp) == UNSPEC)
++	    switch (XINT (disp, 1))
++	      {
++	      case UNSPEC_GOTPCREL:
++	      case UNSPEC_PCREL:
++	      case UNSPEC_GOTNTPOFF:
++		return false;
++	      }
++	}
++      if (TARGET_64BIT
++	  && flag_pic
++	  && (GET_CODE (disp) == SYMBOL_REF
++	      || GET_CODE (disp) == LABEL_REF))
++	return false;
+     }
+ 
+   return true;
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/sse.md gcc-4.8.1/gcc/config/i386/sse.md
+--- gcc-4.8.1.orig/gcc/config/i386/sse.md	2013-04-29 17:16:04.000000000 -0500
++++ gcc-4.8.1/gcc/config/i386/sse.md	2013-08-14 09:09:59.468272000 -0500
+@@ -3603,7 +3603,7 @@
+ 	(vec_select:V4SF
+ 	  (vec_concat:V8SF
+ 	    (match_operand:V4SF 1 "nonimmediate_operand" " 0,x,0,x,0")
+-	    (match_operand:V4SF 2 "nonimmediate_operand" " x,x,m,x,x"))
++	    (match_operand:V4SF 2 "nonimmediate_operand" " x,x,m,m,x"))
+ 	  (parallel [(const_int 0)
+ 		     (const_int 1)
+ 		     (const_int 4)
+@@ -7758,9 +7758,17 @@
+ 		       (mem:V16QI (match_dup 0))]
+ 		      UNSPEC_MASKMOV))]
+   "TARGET_SSE2"
+-  "%vmaskmovdqu\t{%2, %1|%1, %2}"
++{
++  /* We can't use %^ here due to ASM_OUTPUT_OPCODE processing
++     that requires %v to be at the beginning of the opcode name.  */
++  if (Pmode != word_mode)
++    fputs ("\taddr32", asm_out_file);
++  return "%vmaskmovdqu\t{%2, %1|%1, %2}";
++}
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix_data16" "1")
++   (set (attr "length_address")
++     (symbol_ref ("Pmode != word_mode")))
+    ;; The implicit %rdi operand confuses default length_vex computation.
+    (set (attr "length_vex")
+      (symbol_ref ("3 + REX_SSE_REGNO_P (REGNO (operands[2]))")))
+@@ -7808,26 +7816,18 @@
+   "mwait"
+   [(set_attr "length" "3")])
+ 
+-(define_insn "sse3_monitor"
+-  [(unspec_volatile [(match_operand:SI 0 "register_operand" "a")
+-		     (match_operand:SI 1 "register_operand" "c")
+-		     (match_operand:SI 2 "register_operand" "d")]
+-		    UNSPECV_MONITOR)]
+-  "TARGET_SSE3 && !TARGET_64BIT"
+-  "monitor\t%0, %1, %2"
+-  [(set_attr "length" "3")])
+-
+-(define_insn "sse3_monitor64_<mode>"
++(define_insn "sse3_monitor_<mode>"
+   [(unspec_volatile [(match_operand:P 0 "register_operand" "a")
+ 		     (match_operand:SI 1 "register_operand" "c")
+ 		     (match_operand:SI 2 "register_operand" "d")]
+ 		    UNSPECV_MONITOR)]
+-  "TARGET_SSE3 && TARGET_64BIT"
++  "TARGET_SSE3"
+ ;; 64bit version is "monitor %rax,%rcx,%rdx". But only lower 32bits in
+ ;; RCX and RDX are used.  Since 32bit register operands are implicitly
+ ;; zero extended to 64bit, we only need to set up 32bit registers.
+-  "monitor"
+-  [(set_attr "length" "3")])
++  "%^monitor"
++  [(set (attr "length")
++     (symbol_ref ("(Pmode != word_mode) + 3")))])
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;
+diff -Naur gcc-4.8.1.orig/gcc/config/i386/x86-64.h gcc-4.8.1/gcc/config/i386/x86-64.h
+--- gcc-4.8.1.orig/gcc/config/i386/x86-64.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/i386/x86-64.h	2013-08-23 05:01:34.440607000 -0500
+@@ -103,3 +103,6 @@
+ 
+ #undef TARGET_ASM_UNIQUE_SECTION
+ #define TARGET_ASM_UNIQUE_SECTION  x86_64_elf_unique_section
++
++#undef TARGET_SECTION_TYPE_FLAGS
++#define TARGET_SECTION_TYPE_FLAGS  x86_64_elf_section_type_flags
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/default64.h gcc-4.8.1/gcc/config/rs6000/default64.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/default64.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/default64.h	2013-06-18 20:18:38.348158000 -0500
+@@ -18,5 +18,10 @@
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_64BIT | MASK_LITTLE_ENDIAN)
++#else
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_64BIT)
++#endif
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/dfp.md gcc-4.8.1/gcc/config/rs6000/dfp.md
+--- gcc-4.8.1.orig/gcc/config/rs6000/dfp.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/dfp.md	2013-08-19 12:55:50.687548000 -0500
+@@ -394,11 +394,14 @@
+   "")
+ 
+ (define_insn "*negtd2_fpr"
+-  [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
+-	(neg:TD (match_operand:TD 1 "gpc_reg_operand" "d")))]
++  [(set (match_operand:TD 0 "gpc_reg_operand" "=d,d")
++	(neg:TD (match_operand:TD 1 "gpc_reg_operand" "0,d")))]
+   "TARGET_HARD_FLOAT && TARGET_FPRS"
+-  "fneg %0,%1"
+-  [(set_attr "type" "fp")])
++  "@
++   fneg %0,%1
++   fneg %0,%1\;fmr %L0,%L1"
++  [(set_attr "type" "fp")
++   (set_attr "length" "4,8")])
+ 
+ (define_expand "abstd2"
+   [(set (match_operand:TD 0 "gpc_reg_operand" "")
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/linux64.h gcc-4.8.1/gcc/config/rs6000/linux64.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/linux64.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/linux64.h	2013-06-18 20:18:38.348158000 -0500
+@@ -180,20 +180,14 @@
+ #endif
+ 
+ #define ASM_SPEC32 "-a32 \
+-%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
+-%{memb} %{!memb: %{msdata=eabi: -memb}} \
+-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
+-    %{mcall-freebsd: -mbig} \
+-    %{mcall-i960-old: -mlittle} \
+-    %{mcall-linux: -mbig} \
+-    %{mcall-netbsd: -mbig} \
+-}}}}"
++%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
++%{memb|msdata=eabi: -memb}"
+ 
+ #define ASM_SPEC64 "-a64"
+ 
+ #define ASM_SPEC_COMMON "%(asm_cpu) \
+-%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
+-%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
++%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}" \
++  ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
+ 
+ #undef	SUBSUBTARGET_EXTRA_SPECS
+ #define SUBSUBTARGET_EXTRA_SPECS \
+@@ -212,10 +206,6 @@
+ 
+ #ifndef RS6000_BI_ARCH
+ 
+-/* 64-bit PowerPC Linux is always big-endian.  */
+-#undef	OPTION_LITTLE_ENDIAN
+-#define OPTION_LITTLE_ENDIAN	0
+-
+ /* 64-bit PowerPC Linux always has a TOC.  */
+ #undef  TARGET_TOC
+ #define	TARGET_TOC		1
+@@ -376,12 +366,30 @@
+ #define GNU_USER_DYNAMIC_LINKER64 \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+ 
++#undef  DEFAULT_ASM_ENDIAN
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#define DEFAULT_ASM_ENDIAN " -mlittle"
++#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",		\
++					   " -m elf32lppclinux",	\
++					   " -m elf32lppclinux")
++#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",		\
++					   " -m elf64lppc",		\
++					   " -m elf64lppc")
++#else
++#define DEFAULT_ASM_ENDIAN " -mbig"
++#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",		\
++					   " -m elf32lppclinux",	\
++					   " -m elf32ppclinux")
++#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",		\
++					   " -m elf64lppc",		\
++					   " -m elf64ppc")
++#endif
+ 
+-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}"
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/linuxaltivec.h gcc-4.8.1/gcc/config/rs6000/linuxaltivec.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/linuxaltivec.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/linuxaltivec.h	2013-06-18 20:18:38.348158000 -0500
+@@ -20,8 +20,13 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Override rs6000.h and sysv4.h definition.  */
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#undef	TARGET_DEFAULT
++#define	TARGET_DEFAULT (MASK_ALTIVEC | MASK_LITTLE_ENDIAN)
++#else
+ #undef	TARGET_DEFAULT
+ #define	TARGET_DEFAULT MASK_ALTIVEC
++#endif
+ 
+ #undef  SUBSUBTARGET_OVERRIDE_OPTIONS
+ #define SUBSUBTARGET_OVERRIDE_OPTIONS rs6000_altivec_abi = 1
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/linux.h gcc-4.8.1/gcc/config/rs6000/linux.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/linux.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/linux.h	2013-06-18 20:18:38.348158000 -0500
+@@ -79,6 +79,24 @@
+ #undef	LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+ 
++#undef  DEFAULT_ASM_ENDIAN
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#define DEFAULT_ASM_ENDIAN " -mlittle"
++#define LINK_OS_LINUX_EMUL ENDIAN_SELECT(" -m elf32ppclinux",	\
++					 " -m elf32lppclinux",	\
++					 " -m elf32lppclinux")
++#else
++#define DEFAULT_ASM_ENDIAN " -mbig"
++#define LINK_OS_LINUX_EMUL ENDIAN_SELECT(" -m elf32ppclinux",	\
++					 " -m elf32lppclinux",	\
++					 " -m elf32ppclinux")
++#endif
++
++#undef LINK_OS_LINUX_SPEC
++#define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \
++  %{rdynamic:-export-dynamic} \
++  -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
++
+ #define LINK_GCC_C_SEQUENCE_SPEC \
+   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/linuxspe.h gcc-4.8.1/gcc/config/rs6000/linuxspe.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/linuxspe.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/linuxspe.h	2013-06-18 20:18:38.348158000 -0500
+@@ -20,8 +20,13 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* Override rs6000.h and sysv4.h definition.  */
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#undef	TARGET_DEFAULT
++#define TARGET_DEFAULT (MASK_STRICT_ALIGN | MASK_LITTLE_ENDIAN)
++#else
+ #undef	TARGET_DEFAULT
+ #define TARGET_DEFAULT MASK_STRICT_ALIGN
++#endif
+ 
+ #undef  ASM_DEFAULT_SPEC
+ #define	ASM_DEFAULT_SPEC "-mppc -mspe -me500"
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/predicates.md gcc-4.8.1/gcc/config/rs6000/predicates.md
+--- gcc-4.8.1.orig/gcc/config/rs6000/predicates.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/predicates.md	2013-06-23 19:59:24.817984000 -0500
+@@ -464,9 +464,11 @@
+ 	    (match_test "easy_altivec_constant (op, mode)")))
+ {
+   HOST_WIDE_INT val;
++  int elt;
+   if (mode == V2DImode || mode == V2DFmode)
+     return 0;
+-  val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
++  elt = BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 : 0;
++  val = const_vector_elt_as_int (op, elt);
+   val = ((val & 0xff) ^ 0x80) - 0x80;
+   return EASY_VECTOR_15_ADD_SELF (val);
+ })
+@@ -478,9 +480,11 @@
+ 	    (match_test "easy_altivec_constant (op, mode)")))
+ {
+   HOST_WIDE_INT val;
++  int elt;
+   if (mode == V2DImode || mode == V2DFmode)
+     return 0;
+-  val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
++  elt = BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 : 0;
++  val = const_vector_elt_as_int (op, elt);
+   return EASY_VECTOR_MSB (val, GET_MODE_INNER (mode));
+ })
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/rs6000.c gcc-4.8.1/gcc/config/rs6000/rs6000.c
+--- gcc-4.8.1.orig/gcc/config/rs6000/rs6000.c	2013-05-09 20:54:06.000000000 -0500
++++ gcc-4.8.1/gcc/config/rs6000/rs6000.c	2013-08-19 20:05:10.274596000 -0500
+@@ -2190,7 +2190,8 @@
+ 	  int reg_size2 = reg_size;
+ 
+ 	  /* TFmode/TDmode always takes 2 registers, even in VSX.  */
+-	  if (m == TDmode || m == TFmode)
++	  if (TARGET_VSX && VSX_REG_CLASS_P (c)
++	      && (m == TDmode || m == TFmode))
+ 	    reg_size2 = UNITS_PER_FP_WORD;
+ 
+ 	  rs6000_class_max_nregs[m][c]
+@@ -4239,7 +4240,7 @@
+   bitsize = GET_MODE_BITSIZE (inner);
+   mask = GET_MODE_MASK (inner);
+ 
+-  val = const_vector_elt_as_int (op, nunits - 1);
++  val = const_vector_elt_as_int (op, BYTES_BIG_ENDIAN ? nunits - 1 : 0);
+   splat_val = val;
+   msb_val = val > 0 ? 0 : -1;
+ 
+@@ -4279,7 +4280,7 @@
+   for (i = 0; i < nunits - 1; ++i)
+     {
+       HOST_WIDE_INT desired_val;
+-      if (((i + 1) & (step - 1)) == 0)
++      if (((BYTES_BIG_ENDIAN ? i + 1 : i) & (step - 1)) == 0)
+ 	desired_val = val;
+       else
+ 	desired_val = msb_val;
+@@ -4364,13 +4365,13 @@
+ {
+   enum machine_mode mode = GET_MODE (op);
+   int nunits = GET_MODE_NUNITS (mode);
+-  rtx last = CONST_VECTOR_ELT (op, nunits - 1);
++  rtx val = CONST_VECTOR_ELT (op, BYTES_BIG_ENDIAN ? nunits - 1 : 0);
+   unsigned step = nunits / 4;
+   unsigned copies = 1;
+ 
+   /* Start with a vspltisw.  */
+   if (vspltis_constant (op, step, copies))
+-    return gen_rtx_VEC_DUPLICATE (V4SImode, gen_lowpart (SImode, last));
++    return gen_rtx_VEC_DUPLICATE (V4SImode, gen_lowpart (SImode, val));
+ 
+   /* Then try with a vspltish.  */
+   if (step == 1)
+@@ -4379,7 +4380,7 @@
+     step >>= 1;
+ 
+   if (vspltis_constant (op, step, copies))
+-    return gen_rtx_VEC_DUPLICATE (V8HImode, gen_lowpart (HImode, last));
++    return gen_rtx_VEC_DUPLICATE (V8HImode, gen_lowpart (HImode, val));
+ 
+   /* And finally a vspltisb.  */
+   if (step == 1)
+@@ -4388,7 +4389,7 @@
+     step >>= 1;
+ 
+   if (vspltis_constant (op, step, copies))
+-    return gen_rtx_VEC_DUPLICATE (V16QImode, gen_lowpart (QImode, last));
++    return gen_rtx_VEC_DUPLICATE (V16QImode, gen_lowpart (QImode, val));
+ 
+   gcc_unreachable ();
+ }
+@@ -9066,19 +9067,20 @@
+       && cfun->va_list_gpr_size)
+     {
+       int nregs = GP_ARG_NUM_REG - first_reg_offset;
++      int n_gpr;
+ 
+       if (va_list_gpr_counter_field)
+ 	{
+ 	  /* V4 va_list_gpr_size counts number of registers needed.  */
+-	  if (nregs > cfun->va_list_gpr_size)
+-	    nregs = cfun->va_list_gpr_size;
++	  n_gpr = cfun->va_list_gpr_size;
+ 	}
+       else
+ 	{
+ 	  /* char * va_list instead counts number of bytes needed.  */
+-	  if (nregs > cfun->va_list_gpr_size / reg_size)
+-	    nregs = cfun->va_list_gpr_size / reg_size;
++	  n_gpr = (cfun->va_list_gpr_size + reg_size - 1) / reg_size;
+ 	}
++      if (nregs > n_gpr)
++	nregs = n_gpr;
+ 
+       mem = gen_rtx_MEM (BLKmode,
+ 			 plus_constant (Pmode, save_area,
+@@ -16900,8 +16902,9 @@
+   shift = gen_reg_rtx (SImode);
+   addr = gen_lowpart (SImode, addr);
+   emit_insn (gen_rlwinm (shift, addr, GEN_INT (3), GEN_INT (shift_mask)));
+-  shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask),
+-			       shift, 1, OPTAB_LIB_WIDEN);
++  if (WORDS_BIG_ENDIAN)
++    shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask),
++			         shift, 1, OPTAB_LIB_WIDEN);
+   *pshift = shift;
+ 
+   /* Mask for insertion.  */
+@@ -19957,8 +19960,7 @@
+ 	  HOST_WIDE_INT offset;
+ 
+ 	  if (!(strategy & SAVE_INLINE_GPRS))
+-	    ool_adjust = 8 * (info->first_gp_reg_save
+-			      - (FIRST_SAVRES_REGISTER + 1));
++	    ool_adjust = 8 * (info->first_gp_reg_save - FIRST_SAVED_GP_REGNO);
+ 	  offset = info->spe_gp_save_offset + frame_off - ool_adjust;
+ 	  spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
+ 	  save_off = frame_off - offset;
+@@ -21200,8 +21202,7 @@
+ 	     anew to every function.  */
+ 
+ 	  if (!restoring_GPRs_inline)
+-	    ool_adjust = 8 * (info->first_gp_reg_save
+-			      - (FIRST_SAVRES_REGISTER + 1));
++	    ool_adjust = 8 * (info->first_gp_reg_save - FIRST_SAVED_GP_REGNO);
+ 	  frame_reg_rtx = gen_rtx_REG (Pmode, 11);
+ 	  emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
+ 				 GEN_INT (info->spe_gp_save_offset
+@@ -22151,20 +22152,22 @@
+ 
+       if (TARGET_64BIT)
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs (DOUBLE_INT_ASM_OP, file);
+ 	  else
+ 	    fprintf (file, "\t.tc FT_%lx_%lx_%lx_%lx[TC],",
+ 		     k[0] & 0xffffffff, k[1] & 0xffffffff,
+ 		     k[2] & 0xffffffff, k[3] & 0xffffffff);
+ 	  fprintf (file, "0x%lx%08lx,0x%lx%08lx\n",
+-		   k[0] & 0xffffffff, k[1] & 0xffffffff,
+-		   k[2] & 0xffffffff, k[3] & 0xffffffff);
++		   k[WORDS_BIG_ENDIAN ? 0 : 1] & 0xffffffff,
++		   k[WORDS_BIG_ENDIAN ? 1 : 0] & 0xffffffff,
++		   k[WORDS_BIG_ENDIAN ? 2 : 3] & 0xffffffff,
++		   k[WORDS_BIG_ENDIAN ? 3 : 2] & 0xffffffff);
+ 	  return;
+ 	}
+       else
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs ("\t.long ", file);
+ 	  else
+ 	    fprintf (file, "\t.tc FT_%lx_%lx_%lx_%lx[TC],",
+@@ -22191,18 +22194,19 @@
+ 
+       if (TARGET_64BIT)
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs (DOUBLE_INT_ASM_OP, file);
+ 	  else
+ 	    fprintf (file, "\t.tc FD_%lx_%lx[TC],",
+ 		     k[0] & 0xffffffff, k[1] & 0xffffffff);
+ 	  fprintf (file, "0x%lx%08lx\n",
+-		   k[0] & 0xffffffff, k[1] & 0xffffffff);
++		   k[WORDS_BIG_ENDIAN ? 0 : 1] & 0xffffffff,
++		   k[WORDS_BIG_ENDIAN ? 1 : 0] & 0xffffffff);
+ 	  return;
+ 	}
+       else
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs ("\t.long ", file);
+ 	  else
+ 	    fprintf (file, "\t.tc FD_%lx_%lx[TC],",
+@@ -22226,16 +22230,19 @@
+ 
+       if (TARGET_64BIT)
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs (DOUBLE_INT_ASM_OP, file);
+ 	  else
+ 	    fprintf (file, "\t.tc FS_%lx[TC],", l & 0xffffffff);
+-	  fprintf (file, "0x%lx00000000\n", l & 0xffffffff);
++	  if (WORDS_BIG_ENDIAN)
++	    fprintf (file, "0x%lx00000000\n", l & 0xffffffff);
++	  else
++	    fprintf (file, "0x%lx\n", l & 0xffffffff);
+ 	  return;
+ 	}
+       else
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs ("\t.long ", file);
+ 	  else
+ 	    fprintf (file, "\t.tc FS_%lx[TC],", l & 0xffffffff);
+@@ -22267,9 +22274,8 @@
+ 	}
+ #endif
+ 
+-      /* TOC entries are always Pmode-sized, but since this
+-	 is a bigendian machine then if we're putting smaller
+-	 integer constants in the TOC we have to pad them.
++      /* TOC entries are always Pmode-sized, so when big-endian
++	 smaller integer constants in the TOC need to be padded.
+ 	 (This is still a win over putting the constants in
+ 	 a separate constant pool, because then we'd have
+ 	 to have both a TOC entry _and_ the actual constant.)
+@@ -22280,7 +22286,7 @@
+       /* It would be easy to make this work, but it doesn't now.  */
+       gcc_assert (!TARGET_64BIT || POINTER_SIZE >= GET_MODE_BITSIZE (mode));
+ 
+-      if (POINTER_SIZE > GET_MODE_BITSIZE (mode))
++      if (WORDS_BIG_ENDIAN && POINTER_SIZE > GET_MODE_BITSIZE (mode))
+ 	{
+ #if HOST_BITS_PER_WIDE_INT == 32
+ 	  lshift_double (low, high, POINTER_SIZE - GET_MODE_BITSIZE (mode),
+@@ -22295,7 +22301,7 @@
+ 
+       if (TARGET_64BIT)
+ 	{
+-	  if (TARGET_MINIMAL_TOC)
++	  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 	    fputs (DOUBLE_INT_ASM_OP, file);
+ 	  else
+ 	    fprintf (file, "\t.tc ID_%lx_%lx[TC],",
+@@ -22308,7 +22314,7 @@
+ 	{
+ 	  if (POINTER_SIZE < GET_MODE_BITSIZE (mode))
+ 	    {
+-	      if (TARGET_MINIMAL_TOC)
++	      if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 		fputs ("\t.long ", file);
+ 	      else
+ 		fprintf (file, "\t.tc ID_%lx_%lx[TC],",
+@@ -22318,7 +22324,7 @@
+ 	    }
+ 	  else
+ 	    {
+-	      if (TARGET_MINIMAL_TOC)
++	      if (TARGET_ELF || TARGET_MINIMAL_TOC)
+ 		fputs ("\t.long ", file);
+ 	      else
+ 		fprintf (file, "\t.tc IS_%lx[TC],", (long) low & 0xffffffff);
+@@ -22356,7 +22362,7 @@
+       gcc_unreachable ();
+     }
+ 
+-  if (TARGET_MINIMAL_TOC)
++  if (TARGET_ELF || TARGET_MINIMAL_TOC)
+     fputs (TARGET_32BIT ? "\t.long " : DOUBLE_INT_ASM_OP, file);
+   else
+     {
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/rs6000.h gcc-4.8.1/gcc/config/rs6000/rs6000.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/rs6000.h	2013-05-06 18:33:49.000000000 -0500
++++ gcc-4.8.1/gcc/config/rs6000/rs6000.h	2013-06-18 20:18:38.348158000 -0500
+@@ -662,6 +662,11 @@
+    instructions for them.  Might as well be consistent with bits and bytes.  */
+ #define WORDS_BIG_ENDIAN 1
+ 
++/* This says that for the IBM long double the larger magnitude double
++   comes first.  It's really a two element double array, and arrays
++   don't index differently between little- and big-endian.  */
++#define LONG_DOUBLE_LARGE_FIRST 1
++
+ #define MAX_BITS_PER_WORD 64
+ 
+ /* Width of a word, in units (bytes).  */
+@@ -2289,6 +2294,13 @@
+ /* How to align the given loop. */
+ #define LOOP_ALIGN(LABEL)  rs6000_loop_align(LABEL)
+ 
++/* Alignment guaranteed by __builtin_malloc.  */
++/* FIXME:  128-bit alignment is guaranteed by glibc for TARGET_64BIT.
++   However, specifying the stronger guarantee currently leads to
++   a regression in SPEC CPU2006 437.leslie3d.  The stronger
++   guarantee should be implemented here once that's fixed.  */
++#define MALLOC_ABI_ALIGNMENT (64)
++
+ /* Pick up the return address upon entry to a procedure. Used for
+    dwarf2 unwind information.  This also enables the table driven
+    mechanism.  */
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/rs6000.md gcc-4.8.1/gcc/config/rs6000/rs6000.md
+--- gcc-4.8.1.orig/gcc/config/rs6000/rs6000.md	2013-02-07 02:04:58.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/rs6000.md	2013-06-18 20:18:38.348158000 -0500
+@@ -1990,6 +1990,8 @@
+   [(set_attr "length" "4,4,12")
+    (set_attr "type" "load,store,*")])
+ 
++;; We are always BITS_BIG_ENDIAN, so the (const_int 16) below is
++;; correct for -mlittle as well as -mbig.
+ (define_split
+   [(set (match_operand:HI 0 "gpc_reg_operand" "")
+ 	(bswap:HI (match_operand:HI 1 "gpc_reg_operand" "")))
+@@ -2043,6 +2045,8 @@
+   [(set_attr "length" "4,4,12")
+    (set_attr "type" "load,store,*")])
+ 
++;; We are always BITS_BIG_ENDIAN, so the bit positions below in
++;; zero_extract insns do not change for -mlittle.
+ (define_split
+   [(set (match_operand:SI 0 "gpc_reg_operand" "")
+ 	(bswap:SI (match_operand:SI 1 "gpc_reg_operand" "")))]
+@@ -2125,8 +2129,10 @@
+   rtx op2    = operands[2];
+   rtx op3    = operands[3];
+   rtx op4    = operands[4];
+-  rtx op3_32 = simplify_gen_subreg (SImode, op3, DImode, 4);
+-  rtx op4_32 = simplify_gen_subreg (SImode, op4, DImode, 4);
++  rtx op3_32 = simplify_gen_subreg (SImode, op3, DImode,
++				    BYTES_BIG_ENDIAN ? 4 : 0);
++  rtx op4_32 = simplify_gen_subreg (SImode, op4, DImode,
++				    BYTES_BIG_ENDIAN ? 4 : 0);
+   rtx addr1;
+   rtx addr2;
+   rtx word_high;
+@@ -2186,8 +2192,10 @@
+   rtx src    = operands[1];
+   rtx op2    = operands[2];
+   rtx op3    = operands[3];
+-  rtx src_si = simplify_gen_subreg (SImode, src, DImode, 4);
+-  rtx op3_si = simplify_gen_subreg (SImode, op3, DImode, 4);
++  rtx src_si = simplify_gen_subreg (SImode, src, DImode,
++				    BYTES_BIG_ENDIAN ? 4 : 0);
++  rtx op3_si = simplify_gen_subreg (SImode, op3, DImode,
++				    BYTES_BIG_ENDIAN ? 4 : 0);
+   rtx addr1;
+   rtx addr2;
+   rtx word_high;
+@@ -2221,16 +2229,14 @@
+     {
+       word_high = change_address (dest, SImode, addr1);
+       word_low  = change_address (dest, SImode, addr2);
+-      emit_insn (gen_bswapsi2 (word_high, src_si));
+-      emit_insn (gen_bswapsi2 (word_low, op3_si));
+     }
+   else
+     {
+       word_high = change_address (dest, SImode, addr2);
+       word_low  = change_address (dest, SImode, addr1);
+-      emit_insn (gen_bswapsi2 (word_low, src_si));
+-      emit_insn (gen_bswapsi2 (word_high, op3_si));
+     }
++  emit_insn (gen_bswapsi2 (word_high, src_si));
++  emit_insn (gen_bswapsi2 (word_low, op3_si));
+ }")
+ 
+ (define_split
+@@ -2247,10 +2253,11 @@
+   rtx src     = operands[1];
+   rtx op2     = operands[2];
+   rtx op3     = operands[3];
+-  rtx dest_si = simplify_gen_subreg (SImode, dest, DImode, 4);
+-  rtx src_si  = simplify_gen_subreg (SImode, src, DImode, 4);
+-  rtx op2_si  = simplify_gen_subreg (SImode, op2, DImode, 4);
+-  rtx op3_si  = simplify_gen_subreg (SImode, op3, DImode, 4);
++  int lo_off  = BYTES_BIG_ENDIAN ? 4 : 0;
++  rtx dest_si = simplify_gen_subreg (SImode, dest, DImode, lo_off);
++  rtx src_si  = simplify_gen_subreg (SImode, src, DImode, lo_off);
++  rtx op2_si  = simplify_gen_subreg (SImode, op2, DImode, lo_off);
++  rtx op3_si  = simplify_gen_subreg (SImode, op3, DImode, lo_off);
+ 
+   emit_insn (gen_lshrdi3 (op2, src, GEN_INT (32)));
+   emit_insn (gen_bswapsi2 (dest_si, src_si));
+@@ -2275,15 +2282,15 @@
+   [(const_int 0)]
+   "
+ {
+-  rtx dest   = operands[0];
+-  rtx src    = operands[1];
+-  rtx op2    = operands[2];
+-  rtx dest_hi = simplify_gen_subreg (SImode, dest, DImode, 0);
+-  rtx dest_lo = simplify_gen_subreg (SImode, dest, DImode, 4);
++  rtx dest  = operands[0];
++  rtx src   = operands[1];
++  rtx op2   = operands[2];
++  rtx dest1 = simplify_gen_subreg (SImode, dest, DImode, 0);
++  rtx dest2 = simplify_gen_subreg (SImode, dest, DImode, 4);
+   rtx addr1;
+   rtx addr2;
+-  rtx word_high;
+-  rtx word_low;
++  rtx word1;
++  rtx word2;
+ 
+   addr1 = XEXP (src, 0);
+   if (GET_CODE (addr1) == PLUS)
+@@ -2308,19 +2315,11 @@
+       addr2 = gen_rtx_PLUS (SImode, op2, addr1);
+     }
+ 
+-  if (BYTES_BIG_ENDIAN)
+-    {
+-      word_high = change_address (src, SImode, addr1);
+-      word_low  = change_address (src, SImode, addr2);
+-    }
+-  else
+-    {
+-      word_high = change_address (src, SImode, addr2);
+-      word_low  = change_address (src, SImode, addr1);
+-    }
++  word1 = change_address (src, SImode, addr1);
++  word2 = change_address (src, SImode, addr2);
+ 
+-  emit_insn (gen_bswapsi2 (dest_hi, word_low));
+-  emit_insn (gen_bswapsi2 (dest_lo, word_high));
++  emit_insn (gen_bswapsi2 (dest2, word1));
++  emit_insn (gen_bswapsi2 (dest1, word2));
+ }")
+ 
+ (define_split
+@@ -2331,15 +2330,15 @@
+   [(const_int 0)]
+   "
+ {
+-  rtx dest     = operands[0];
+-  rtx src      = operands[1];
+-  rtx op2      = operands[2];
+-  rtx src_high = simplify_gen_subreg (SImode, src, DImode, 0);
+-  rtx src_low  = simplify_gen_subreg (SImode, src, DImode, 4);
++  rtx dest = operands[0];
++  rtx src  = operands[1];
++  rtx op2  = operands[2];
++  rtx src1 = simplify_gen_subreg (SImode, src, DImode, 0);
++  rtx src2 = simplify_gen_subreg (SImode, src, DImode, 4);
+   rtx addr1;
+   rtx addr2;
+-  rtx word_high;
+-  rtx word_low;
++  rtx word1;
++  rtx word2;
+ 
+   addr1 = XEXP (dest, 0);
+   if (GET_CODE (addr1) == PLUS)
+@@ -2364,19 +2363,11 @@
+       addr2 = gen_rtx_PLUS (SImode, op2, addr1);
+     }
+ 
+-  if (BYTES_BIG_ENDIAN)
+-    {
+-      word_high = change_address (dest, SImode, addr1);
+-      word_low  = change_address (dest, SImode, addr2);
+-    }
+-  else
+-    {
+-      word_high = change_address (dest, SImode, addr2);
+-      word_low  = change_address (dest, SImode, addr1);
+-    }
++  word1 = change_address (dest, SImode, addr1);
++  word2 = change_address (dest, SImode, addr2);
+ 
+-  emit_insn (gen_bswapsi2 (word_high, src_low));
+-  emit_insn (gen_bswapsi2 (word_low, src_high));
++  emit_insn (gen_bswapsi2 (word2, src1));
++  emit_insn (gen_bswapsi2 (word1, src2));
+ }")
+ 
+ (define_split
+@@ -2387,15 +2378,15 @@
+   [(const_int 0)]
+   "
+ {
+-  rtx dest      = operands[0];
+-  rtx src       = operands[1];
+-  rtx src_high  = simplify_gen_subreg (SImode, src, DImode, 0);
+-  rtx src_low   = simplify_gen_subreg (SImode, src, DImode, 4);
+-  rtx dest_high = simplify_gen_subreg (SImode, dest, DImode, 0);
+-  rtx dest_low  = simplify_gen_subreg (SImode, dest, DImode, 4);
++  rtx dest  = operands[0];
++  rtx src   = operands[1];
++  rtx src1  = simplify_gen_subreg (SImode, src, DImode, 0);
++  rtx src2  = simplify_gen_subreg (SImode, src, DImode, 4);
++  rtx dest1 = simplify_gen_subreg (SImode, dest, DImode, 0);
++  rtx dest2 = simplify_gen_subreg (SImode, dest, DImode, 4);
+ 
+-  emit_insn (gen_bswapsi2 (dest_high, src_low));
+-  emit_insn (gen_bswapsi2 (dest_low, src_high));
++  emit_insn (gen_bswapsi2 (dest1, src2));
++  emit_insn (gen_bswapsi2 (dest2, src1));
+ }")
+ 
+ (define_insn "mulsi3"
+@@ -4682,6 +4673,41 @@
+   "frsqrtes %0,%1"
+   [(set_attr "type" "fp")])
+ 
++;; This expander is here to avoid FLOAT_WORDS_BIGENDIAN tests in
++;; builtins.c and optabs.c that are not correct for IBM long double
++;; when little-endian.
++(define_expand "signbittf2"
++  [(set (match_dup 2)
++	(float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "")))
++   (set (match_dup 3)
++   	(subreg:DI (match_dup 2) 0))
++   (set (match_dup 4)
++   	(match_dup 5))
++   (set (match_operand:SI 0 "gpc_reg_operand" "")
++  	(match_dup 6))]
++  "!TARGET_IEEEQUAD
++   && TARGET_HARD_FLOAT
++   && (TARGET_FPRS || TARGET_E500_DOUBLE)
++   && TARGET_LONG_DOUBLE_128"
++{
++  operands[2] = gen_reg_rtx (DFmode);
++  operands[3] = gen_reg_rtx (DImode);
++  if (TARGET_POWERPC64)
++    {
++      operands[4] = gen_reg_rtx (DImode);
++      operands[5] = gen_rtx_LSHIFTRT (DImode, operands[3], GEN_INT (63));
++      operands[6] = gen_rtx_SUBREG (SImode, operands[4],
++				    WORDS_BIG_ENDIAN ? 4 : 0);
++    }
++  else
++    {
++      operands[4] = gen_reg_rtx (SImode);
++      operands[5] = gen_rtx_SUBREG (SImode, operands[3],
++				    WORDS_BIG_ENDIAN ? 0 : 4);
++      operands[6] = gen_rtx_LSHIFTRT (SImode, operands[4], GEN_INT (31));
++    }
++})
++
+ (define_expand "copysign<mode>3"
+   [(set (match_dup 3)
+         (abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "")))
+@@ -6210,10 +6236,25 @@
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r")
+ 	(ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r")
+ 		     (match_operand:SI 2 "const_int_operand" "M,i")))]
+-  "TARGET_32BIT && !TARGET_POWERPC64 && WORDS_BIG_ENDIAN"
+-  "@
+-   srawi %0,%1,31\;srawi %L0,%1,%h2
+-   srwi %L0,%L1,%h2\;insrwi %L0,%1,%h2,0\;srawi %0,%1,%h2"
++  "!TARGET_POWERPC64"
++  "*
++{
++  switch (which_alternative)
++    {
++    default:
++      gcc_unreachable ();
++    case 0:
++      if (WORDS_BIG_ENDIAN)
++        return \"srawi %0,%1,31\;srawi %L0,%1,%h2\";
++      else
++        return \"srawi %L0,%L1,31\;srawi %0,%L1,%h2\";
++    case 1:
++      if (WORDS_BIG_ENDIAN)
++	return \"srwi %L0,%L1,%h2\;insrwi %L0,%1,%h2,0\;srawi %0,%1,%h2\";
++      else
++	return \"srwi %0,%1,%h2\;insrwi %0,%L1,%h2,0\;srawi %L0,%L1,%h2\";
++    }
++}"
+   [(set_attr "type" "two,three")
+    (set_attr "length" "8,12")])
+ 
+@@ -7064,13 +7105,12 @@
+   [(set (match_operand:DI 0 "gpc_reg_operand" "")
+ 	(ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "")
+ 		     (match_operand:SI 2 "reg_or_cint_operand" "")))]
+-  "WORDS_BIG_ENDIAN"
++  ""
+   "
+ {
+   if (TARGET_POWERPC64)
+     ;
+-  else if (TARGET_32BIT && GET_CODE (operands[2]) == CONST_INT
+-	   && WORDS_BIG_ENDIAN)
++  else if (GET_CODE (operands[2]) == CONST_INT)
+     {
+       emit_insn (gen_ashrdi3_no_power (operands[0], operands[1], operands[2]));
+       DONE;
+@@ -8277,8 +8317,8 @@
+   "&& reload_completed"
+   [(pc)]
+ {
+-  const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
+-  const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
++  const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
++  const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
+   emit_move_insn (simplify_gen_subreg (DFmode, operands[0], TFmode, hi_word),
+ 		  operands[1]);
+   emit_move_insn (simplify_gen_subreg (DFmode, operands[0], TFmode, lo_word),
+@@ -8507,8 +8547,8 @@
+    && TARGET_LONG_DOUBLE_128"
+   "
+ {
+-  const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
+-  const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
++  const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
++  const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
+   operands[3] = gen_reg_rtx (DFmode);
+   operands[4] = gen_reg_rtx (CCFPmode);
+   operands[5] = simplify_gen_subreg (DFmode, operands[0], TFmode, hi_word);
+@@ -11609,8 +11649,8 @@
+    (match_dup 13)]
+ {
+   REAL_VALUE_TYPE rv;
+-  const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
+-  const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
++  const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
++  const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
+ 
+   operands[5] = simplify_gen_subreg (DFmode, operands[1], TFmode, hi_word);
+   operands[6] = simplify_gen_subreg (DFmode, operands[1], TFmode, lo_word);
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/rtems.h gcc-4.8.1/gcc/config/rs6000/rtems.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/rtems.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/rtems.h	2013-07-31 07:59:09.970550000 -0500
+@@ -34,6 +34,9 @@
+     }                                     \
+   while (0)
+ 
++#undef TARGET_LIBGCC_SDATA_SECTION
++#define TARGET_LIBGCC_SDATA_SECTION ".sdata"
++
+ #undef CPP_OS_DEFAULT_SPEC
+ #define CPP_OS_DEFAULT_SPEC "%(cpp_os_rtems)"
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/spe.md gcc-4.8.1/gcc/config/rs6000/spe.md
+--- gcc-4.8.1.orig/gcc/config/rs6000/spe.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/spe.md	2013-06-18 20:18:38.348158000 -0500
+@@ -2604,8 +2604,8 @@
+    && TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && TARGET_LONG_DOUBLE_128"
+   "
+ {
+-  const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
+-  const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
++  const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
++  const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
+   operands[3] = gen_reg_rtx (DFmode);
+   operands[4] = gen_reg_rtx (CCFPmode);
+   operands[5] = simplify_gen_subreg (DFmode, operands[0], TFmode, hi_word);
+@@ -2627,8 +2627,8 @@
+    && TARGET_HARD_FLOAT && TARGET_E500_DOUBLE && TARGET_LONG_DOUBLE_128"
+   "
+ {
+-  const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode);
+-  const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0;
++  const int hi_word = LONG_DOUBLE_LARGE_FIRST ? 0 : GET_MODE_SIZE (DFmode);
++  const int lo_word = LONG_DOUBLE_LARGE_FIRST ? GET_MODE_SIZE (DFmode) : 0;
+   operands[3] = gen_reg_rtx (DFmode);
+   operands[4] = gen_reg_rtx (CCFPmode);
+   operands[5] = simplify_gen_subreg (DFmode, operands[0], TFmode, hi_word);
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/sysv4.h gcc-4.8.1/gcc/config/rs6000/sysv4.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/sysv4.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/sysv4.h	2013-06-18 20:18:38.348158000 -0500
+@@ -187,12 +187,6 @@
+ 	     rs6000_abi_name);						\
+     }									\
+ 									\
+-  if (rs6000_current_abi == ABI_AIX && TARGET_LITTLE_ENDIAN)		\
+-    {									\
+-      rs6000_isa_flags &= ~OPTION_MASK_LITTLE_ENDIAN;			\
+-      error ("-mcall-aixdesc must be big endian");			\
+-    }									\
+-									\
+   if (TARGET_SECURE_PLT != secure_plt)					\
+     {									\
+       error ("-msecure-plt not supported by your assembler");		\
+@@ -523,19 +517,24 @@
+   while (0)
+ #endif
+ 
++/* Select one of BIG_OPT, LITTLE_OPT or DEFAULT_OPT depending
++   on various -mbig, -mlittle and -mcall- options.  */
++#define ENDIAN_SELECT(BIG_OPT, LITTLE_OPT, DEFAULT_OPT)	\
++"%{mlittle|mlittle-endian:"	LITTLE_OPT ";"	\
++  "mbig|mbig-endian:"		BIG_OPT    ";"	\
++  "mcall-aixdesc|mcall-freebsd|mcall-netbsd|"	\
++  "mcall-openbsd|mcall-linux:"	BIG_OPT    ";"	\
++  "mcall-i960-old:"		LITTLE_OPT ";"	\
++  ":"				DEFAULT_OPT "}"
++
++#define DEFAULT_ASM_ENDIAN " -mbig"
++
+ #undef	ASM_SPEC
+ #define	ASM_SPEC "%(asm_cpu) \
+ %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
+ %{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
+-%{memb|msdata=eabi: -memb} \
+-%{mlittle|mlittle-endian:-mlittle; \
+-  mbig|mbig-endian      :-mbig;    \
+-  mcall-aixdesc |		   \
+-  mcall-freebsd |		   \
+-  mcall-netbsd  |		   \
+-  mcall-openbsd |		   \
+-  mcall-linux           :-mbig;    \
+-  mcall-i960-old        :-mlittle}"
++%{memb|msdata=eabi: -memb}" \
++ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
+ 
+ #define	CC1_ENDIAN_BIG_SPEC ""
+ 
+@@ -553,17 +552,10 @@
+ #endif
+ 
+ /* Pass -G xxx to the compiler and set correct endian mode.  */
+-#define	CC1_SPEC "%{G*} %(cc1_cpu) \
+-%{mlittle|mlittle-endian: %(cc1_endian_little);           \
+-  mbig   |mbig-endian   : %(cc1_endian_big);              \
+-  mcall-aixdesc |					  \
+-  mcall-freebsd |					  \
+-  mcall-netbsd  |					  \
+-  mcall-openbsd |					  \
+-  mcall-linux           : -mbig %(cc1_endian_big);        \
+-  mcall-i960-old        : -mlittle %(cc1_endian_little);  \
+-                        : %(cc1_endian_default)}          \
+-%{meabi: %{!mcall-*: -mcall-sysv }} \
++#define	CC1_SPEC "%{G*} %(cc1_cpu)" \
++  ENDIAN_SELECT(" %(cc1_endian_big)", " %(cc1_endian_little)",	\
++		" %(cc1_endian_default)")			\
++"%{meabi: %{!mcall-*: -mcall-sysv }} \
+ %{!meabi: %{!mno-eabi: \
+     %{mrelocatable: -meabi } \
+     %{mcall-freebsd: -mno-eabi } \
+@@ -607,11 +599,8 @@
+ %{symbolic:-Bsymbolic -G -dy -z text }"
+ 
+ /* Override the default target of the linker.  */
+-#define	LINK_TARGET_SPEC "\
+-%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
+-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
+-    %{mcall-i960-old: --oformat elf32-powerpcle} \
+-  }}}}"
++#define	LINK_TARGET_SPEC \
++  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
+ 
+ /* Any specific OS flags.  */
+ #define LINK_OS_SPEC "\
+diff -Naur gcc-4.8.1.orig/gcc/config/rs6000/sysv4le.h gcc-4.8.1/gcc/config/rs6000/sysv4le.h
+--- gcc-4.8.1.orig/gcc/config/rs6000/sysv4le.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/rs6000/sysv4le.h	2013-06-18 20:18:38.348158000 -0500
+@@ -25,12 +25,12 @@
+ #undef	CC1_ENDIAN_DEFAULT_SPEC
+ #define	CC1_ENDIAN_DEFAULT_SPEC "%(cc1_endian_little)"
+ 
++#undef	DEFAULT_ASM_ENDIAN
++#define	DEFAULT_ASM_ENDIAN " -mlittle"
++
+ #undef	LINK_TARGET_SPEC
+-#define	LINK_TARGET_SPEC "\
+-%{mbig: --oformat elf32-powerpc } %{mbig-endian: --oformat elf32-powerpc } \
+-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
+-    %{mcall-linux: --oformat elf32-powerpc} \
+-  }}}}"
++#define	LINK_TARGET_SPEC \
++  ENDIAN_SELECT(" --oformat elf32-powerpc", "", "")
+ 
+ #undef	MULTILIB_DEFAULTS
+ #define	MULTILIB_DEFAULTS { "mlittle", "mcall-sysv" }
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/htmintrin.h gcc-4.8.1/gcc/config/s390/htmintrin.h
+--- gcc-4.8.1.orig/gcc/config/s390/htmintrin.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/htmintrin.h	2013-08-14 14:44:27.951575000 -0500
+@@ -0,0 +1,57 @@
++/* GNU compiler hardware transactional execution intrinsics
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++#ifndef _HTMINTRIN_H
++#define _HTMINTRIN_H
++
++
++/* Condition codes generated by tbegin  */
++#define _HTM_TBEGIN_STARTED       0
++#define _HTM_TBEGIN_INDETERMINATE 1
++#define _HTM_TBEGIN_TRANSIENT     2
++#define _HTM_TBEGIN_PERSISTENT    3
++
++/* The abort codes below this threshold are reserved for machine
++   use.  */
++#define _HTM_FIRST_USER_ABORT_CODE 256
++
++/* The transaction diagnostic block is it is defined in the Principles
++   of Operation chapter 5-91.  */
++
++struct __htm_tdb {
++  unsigned char format;                /*   0 */
++  unsigned char flags;
++  unsigned char reserved1[4];
++  unsigned short nesting_depth;
++  unsigned long long abort_code;       /*   8 */
++  unsigned long long conflict_token;   /*  16 */
++  unsigned long long atia;             /*  24 */
++  unsigned char eaid;                  /*  32 */
++  unsigned char dxc;
++  unsigned char reserved2[2];
++  unsigned int program_int_id;
++  unsigned long long exception_id;     /*  40 */
++  unsigned long long bea;              /*  48 */
++  unsigned char reserved3[72];         /*  56 */
++  unsigned long long gprs[16];         /* 128 */
++} __attribute__((__packed__, __aligned__ (8)));
++
++
++#endif /* _HTMINTRIN_H */
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/htmxlintrin.h gcc-4.8.1/gcc/config/s390/htmxlintrin.h
+--- gcc-4.8.1.orig/gcc/config/s390/htmxlintrin.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/htmxlintrin.h	2013-08-14 14:44:27.951575000 -0500
+@@ -0,0 +1,182 @@
++/* XL compiler hardware transactional execution intrinsics
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++#ifndef _HTMXLINTRIN_H
++#define _HTMXLINTRIN_H
++
++#include <stdint.h>
++
++#include <htmintrin.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/* These intrinsics are being made available for compatibility with
++   the IBM XL compiler.  For documentation please see the "z/OS XL
++   C/C++ Programming Guide" publically available on the web.  */
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_simple_begin ()
++{
++  return __builtin_tbegin_nofloat (0);
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_begin (void* const tdb)
++{
++  return __builtin_tbegin_nofloat (tdb);
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_end ()
++{
++  return __builtin_tend ();
++}
++
++extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_abort ()
++{
++  return __builtin_tabort (_HTM_FIRST_USER_ABORT_CODE);
++}
++
++extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_named_abort (unsigned char const code)
++{
++  return __builtin_tabort ((int)_HTM_FIRST_USER_ABORT_CODE + code);
++}
++
++extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_non_transactional_store (void* const addr, long long const value)
++{
++  __builtin_non_tx_store ((uint64_t*)addr, (uint64_t)value);
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_nesting_depth (void* const tdb_ptr)
++{
++  int depth = __builtin_tx_nesting_depth ();
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  if (depth != 0)
++    return depth;
++
++  if (tdb->format == 0)
++    return 0;
++  return tdb->nesting_depth;
++}
++
++/* Transaction failure diagnostics */
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_user_abort (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  if (tdb->format == 0)
++    return 0;
++
++  return !!(tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE);
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_named_user_abort (void* const tdb_ptr, unsigned char* code)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  if (tdb->format == 0)
++    return 0;
++
++  if (tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE)
++    {
++      *code = tdb->abort_code - _HTM_FIRST_USER_ABORT_CODE;
++      return 1;
++    }
++  return 0;
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_illegal (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  return (tdb->format == 0
++	  && (tdb->abort_code == 4 /* unfiltered program interruption */
++	      || tdb->abort_code == 11 /* restricted instruction */));
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_footprint_exceeded (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  return (tdb->format == 0
++	  && (tdb->abort_code == 7 /* fetch overflow */
++	      || tdb->abort_code == 8 /* store overflow */));
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_nested_too_deep (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  return tdb->format == 0 && tdb->abort_code == 13; /* depth exceeded */
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_conflict (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  return (tdb->format == 0
++	  && (tdb->abort_code == 9 /* fetch conflict */
++	      || tdb->abort_code == 10 /* store conflict */));
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_is_failure_persistent (long const result)
++{
++  return result == _HTM_TBEGIN_PERSISTENT;
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_failure_address (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++#ifdef __s390x__
++  return tdb->atia;
++#else
++  return tdb->atia & 0xffffffff;
++#endif
++}
++
++extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++__TM_failure_code (void* const tdb_ptr)
++{
++  struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
++
++  return tdb->abort_code;
++}
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* _HTMXLINTRIN_H */
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/predicates.md gcc-4.8.1/gcc/config/s390/predicates.md
+--- gcc-4.8.1.orig/gcc/config/s390/predicates.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/predicates.md	2013-08-02 10:41:10.548493000 -0500
+@@ -176,7 +176,11 @@
+ {
+   if (GET_CODE (XEXP (op, 0)) != REG
+       || REGNO (XEXP (op, 0)) != CC_REGNUM
+-      || XEXP (op, 1) != const0_rtx)
++      || (XEXP (op, 1) != const0_rtx
++          && !(CONST_INT_P (XEXP (op, 1))
++	       && GET_MODE (XEXP (op, 0)) == CCRAWmode
++	       && INTVAL (XEXP (op, 1)) >= 0
++               && INTVAL (XEXP (op, 1)) <= 15)))
+     return false;
+ 
+   return (s390_branch_condition_mask (op) >= 0);
+@@ -224,7 +228,11 @@
+ 
+   if (GET_CODE (XEXP (op, 0)) != REG
+       || REGNO (XEXP (op, 0)) != CC_REGNUM
+-      || XEXP (op, 1) != const0_rtx)
++      || (XEXP (op, 1) != const0_rtx
++          && !(CONST_INT_P (XEXP (op, 1))
++	       && GET_MODE (XEXP (op, 0)) == CCRAWmode
++	       && INTVAL (XEXP (op, 1)) >= 0
++               && INTVAL (XEXP (op, 1)) <= 15)))
+     return false;
+ 
+   switch (GET_MODE (XEXP (op, 0)))
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390.c gcc-4.8.1/gcc/config/s390/s390.c
+--- gcc-4.8.1.orig/gcc/config/s390/s390.c	2013-04-08 02:55:57.000000000 -0500
++++ gcc-4.8.1/gcc/config/s390/s390.c	2013-08-02 10:41:10.548493000 -0500
+@@ -367,6 +367,10 @@
+   const char *some_ld_name;
+ 
+   bool has_landing_pad_p;
++
++  /* True if the current function may contain a tbegin clobbering
++     FPRs.  */
++  bool tbegin_p;
+ };
+ 
+ /* Few accessor macros for struct cfun->machine->s390_frame_layout.  */
+@@ -824,9 +828,9 @@
+       *op1 = constm1_rtx;
+     }
+ 
+-  /* Remove redundant UNSPEC_CCU_TO_INT conversions if possible.  */
++  /* Remove redundant UNSPEC_STRCMPCC_TO_INT conversions if possible.  */
+   if (GET_CODE (*op0) == UNSPEC
+-      && XINT (*op0, 1) == UNSPEC_CCU_TO_INT
++      && XINT (*op0, 1) == UNSPEC_STRCMPCC_TO_INT
+       && XVECLEN (*op0, 0) == 1
+       && GET_MODE (XVECEXP (*op0, 0, 0)) == CCUmode
+       && GET_CODE (XVECEXP (*op0, 0, 0)) == REG
+@@ -852,25 +856,35 @@
+ 	}
+     }
+ 
+-  /* Remove redundant UNSPEC_CCZ_TO_INT conversions if possible.  */
++  /* Remove redundant UNSPEC_CC_TO_INT conversions if possible.  */
+   if (GET_CODE (*op0) == UNSPEC
+-      && XINT (*op0, 1) == UNSPEC_CCZ_TO_INT
++      && XINT (*op0, 1) == UNSPEC_CC_TO_INT
+       && XVECLEN (*op0, 0) == 1
+-      && GET_MODE (XVECEXP (*op0, 0, 0)) == CCZmode
+       && GET_CODE (XVECEXP (*op0, 0, 0)) == REG
+       && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
+-      && *op1 == const0_rtx)
++      && CONST_INT_P (*op1))
+     {
+       enum rtx_code new_code = UNKNOWN;
+-      switch (*code)
++      switch (GET_MODE (XVECEXP (*op0, 0, 0)))
+ 	{
+-	  case EQ: new_code = EQ;  break;
+-	  case NE: new_code = NE;  break;
+-	  default: break;
++	case CCZmode:
++	case CCRAWmode:
++	  switch (*code)
++	    {
++	    case EQ: new_code = EQ;  break;
++	    case NE: new_code = NE;  break;
++	    default: break;
++	    }
++	  break;
++	default: break;
+ 	}
+ 
+       if (new_code != UNKNOWN)
+ 	{
++	  /* For CCRAWmode put the required cc mask into the second
++	     operand.  */
++	  if (GET_MODE (XVECEXP (*op0, 0, 0)) == CCRAWmode)
++	    *op1 = gen_rtx_CONST_INT (VOIDmode, 1 << (3 - INTVAL (*op1)));
+ 	  *op0 = XVECEXP (*op0, 0, 0);
+ 	  *code = new_code;
+ 	}
+@@ -942,10 +956,11 @@
+ 			    const0_rtx);
+ }
+ 
+-/* Emit a jump instruction to TARGET.  If COND is NULL_RTX, emit an
+-   unconditional jump, else a conditional jump under condition COND.  */
++/* Emit a jump instruction to TARGET and return it.  If COND is
++   NULL_RTX, emit an unconditional jump, else a conditional jump under
++   condition COND.  */
+ 
+-void
++rtx
+ s390_emit_jump (rtx target, rtx cond)
+ {
+   rtx insn;
+@@ -955,7 +970,7 @@
+     target = gen_rtx_IF_THEN_ELSE (VOIDmode, cond, target, pc_rtx);
+ 
+   insn = gen_rtx_SET (VOIDmode, pc_rtx, target);
+-  emit_jump_insn (insn);
++  return emit_jump_insn (insn);
+ }
+ 
+ /* Return branch condition mask to implement a branch
+@@ -971,7 +986,10 @@
+ 
+   gcc_assert (GET_CODE (XEXP (code, 0)) == REG);
+   gcc_assert (REGNO (XEXP (code, 0)) == CC_REGNUM);
+-  gcc_assert (XEXP (code, 1) == const0_rtx);
++  gcc_assert (XEXP (code, 1) == const0_rtx
++	      || (GET_MODE (XEXP (code, 0)) == CCRAWmode
++		  && CONST_INT_P (XEXP (code, 1))));
++
+ 
+   switch (GET_MODE (XEXP (code, 0)))
+     {
+@@ -1145,6 +1163,17 @@
+         }
+       break;
+ 
++    case CCRAWmode:
++      switch (GET_CODE (code))
++	{
++	case EQ:
++	  return INTVAL (XEXP (code, 1));
++	case NE:
++	  return (INTVAL (XEXP (code, 1))) ^ 0xf;
++	default:
++	  gcc_unreachable ();
++	}
++
+     default:
+       return -1;
+     }
+@@ -1204,7 +1233,9 @@
+ 
+   if (GET_CODE (XEXP (code, 0)) == REG
+       && REGNO (XEXP (code, 0)) == CC_REGNUM
+-      && XEXP (code, 1) == const0_rtx)
++      && (XEXP (code, 1) == const0_rtx
++	  || (GET_MODE (XEXP (code, 0)) == CCRAWmode
++	      && CONST_INT_P (XEXP (code, 1)))))
+     mask = s390_branch_condition_mask (code);
+   else
+     mask = s390_compare_and_branch_condition_mask (code);
+@@ -1602,6 +1633,11 @@
+   if (!(target_flags_explicit & MASK_HARD_DFP) && TARGET_DFP)
+     target_flags |= MASK_HARD_DFP;
+ 
++  /* Enable hardware transactions if available and not explicitly
++     disabled by user.  E.g. with -m31 -march=zEC12 -mzarch */
++  if (!(target_flags_explicit & MASK_OPT_HTM) && TARGET_CPU_HTM && TARGET_ZARCH)
++    target_flags |= MASK_OPT_HTM;
++
+   if (TARGET_HARD_DFP && !TARGET_DFP)
+     {
+       if (target_flags_explicit & MASK_HARD_DFP)
+@@ -7341,11 +7377,11 @@
+   if (GET_CODE (setreg) == SUBREG)
+     {
+       rtx inner = SUBREG_REG (setreg);
+-      if (!GENERAL_REG_P (inner))
++      if (!GENERAL_REG_P (inner) && !FP_REG_P (inner))
+ 	return;
+       regno = subreg_regno (setreg);
+     }
+-  else if (GENERAL_REG_P (setreg))
++  else if (GENERAL_REG_P (setreg) || FP_REG_P (setreg))
+     regno = REGNO (setreg);
+   else
+     return;
+@@ -7368,13 +7404,13 @@
+   rtx cur_insn;
+   unsigned int i;
+ 
+-  memset (regs_ever_clobbered, 0, 16 * sizeof (int));
++  memset (regs_ever_clobbered, 0, 32 * sizeof (int));
+ 
+   /* For non-leaf functions we have to consider all call clobbered regs to be
+      clobbered.  */
+   if (!crtl->is_leaf)
+     {
+-      for (i = 0; i < 16; i++)
++      for (i = 0; i < 32; i++)
+ 	regs_ever_clobbered[i] = call_really_used_regs[i];
+     }
+ 
+@@ -7396,7 +7432,7 @@
+      See expand_builtin_unwind_init.  For regs_ever_live this is done by
+      reload.  */
+   if (cfun->has_nonlocal_label)
+-    for (i = 0; i < 16; i++)
++    for (i = 0; i < 32; i++)
+       if (!call_really_used_regs[i])
+ 	regs_ever_clobbered[i] = 1;
+ 
+@@ -7462,17 +7498,6 @@
+ {
+   int i, j;
+ 
+-  /* fprs 8 - 15 are call saved for 64 Bit ABI.  */
+-  cfun_frame_layout.fpr_bitmap = 0;
+-  cfun_frame_layout.high_fprs = 0;
+-  if (TARGET_64BIT)
+-    for (i = 24; i < 32; i++)
+-      if (df_regs_ever_live_p (i) && !global_regs[i])
+-	{
+-	  cfun_set_fpr_bit (i - 16);
+-	  cfun_frame_layout.high_fprs++;
+-	}
+-
+   /* Find first and last gpr to be saved.  We trust regs_ever_live
+      data, except that we don't save and restore global registers.
+ 
+@@ -7481,6 +7506,28 @@
+ 
+   s390_regs_ever_clobbered (clobbered_regs);
+ 
++  /* fprs 8 - 15 are call saved for 64 Bit ABI.  */
++  if (!epilogue_completed)
++    {
++      cfun_frame_layout.fpr_bitmap = 0;
++      cfun_frame_layout.high_fprs = 0;
++      if (TARGET_64BIT)
++	for (i = 24; i < 32; i++)
++	  /* During reload we have to use the df_regs_ever_live infos
++	     since reload is marking FPRs used as spill slots there as
++	     live before actually making the code changes.  Without
++	     this we fail during elimination offset verification.  */
++	  if ((clobbered_regs[i]
++	       || (df_regs_ever_live_p (i)
++		   && (reload_in_progress
++		       || crtl->saves_all_registers)))
++	      && !global_regs[i])
++	    {
++	      cfun_set_fpr_bit (i - 16);
++	      cfun_frame_layout.high_fprs++;
++	    }
++    }
++
+   for (i = 0; i < 16; i++)
+     clobbered_regs[i] = clobbered_regs[i] && !global_regs[i] && !fixed_regs[i];
+ 
+@@ -7731,7 +7778,7 @@
+ {
+   HOST_WIDE_INT frame_size;
+   int base_used;
+-  int clobbered_regs[16];
++  int clobbered_regs[32];
+ 
+   /* On S/390 machines, we may need to perform branch splitting, which
+      will require both base and return address register.  We have no
+@@ -7766,6 +7813,157 @@
+   while (frame_size != cfun_frame_layout.frame_size);
+ }
+ 
++/* Remove the FPR clobbers from a tbegin insn if it can be proven that
++   the TX is nonescaping.  A transaction is considered escaping if
++   there is at least one path from tbegin returning CC0 to the
++   function exit block without an tend.
++
++   The check so far has some limitations:
++   - only single tbegin/tend BBs are supported
++   - the first cond jump after tbegin must separate the CC0 path from ~CC0
++   - when CC is copied to a GPR and the CC0 check is done with the GPR
++     this is not supported
++*/
++
++static void
++s390_optimize_nonescaping_tx (void)
++{
++  const unsigned int CC0 = 1 << 3;
++  basic_block tbegin_bb = NULL;
++  basic_block tend_bb = NULL;
++  basic_block bb;
++  rtx insn;
++  bool result = true;
++  int bb_index;
++  rtx tbegin_insn = NULL_RTX;
++
++  if (!cfun->machine->tbegin_p)
++    return;
++
++  for (bb_index = 0; bb_index < n_basic_blocks; bb_index++)
++    {
++      bb = BASIC_BLOCK (bb_index);
++
++      FOR_BB_INSNS (bb, insn)
++	{
++	  rtx ite, cc, pat, target;
++	  unsigned HOST_WIDE_INT mask;
++
++	  if (!INSN_P (insn) || INSN_CODE (insn) <= 0)
++	    continue;
++
++	  pat = PATTERN (insn);
++
++	  if (GET_CODE (pat) == PARALLEL)
++	    pat = XVECEXP (pat, 0, 0);
++
++	  if (GET_CODE (pat) != SET
++	      || GET_CODE (SET_SRC (pat)) != UNSPEC_VOLATILE)
++	    continue;
++
++	  if (XINT (SET_SRC (pat), 1) == UNSPECV_TBEGIN)
++	    {
++	      rtx tmp;
++
++	      tbegin_insn = insn;
++
++	      /* Just return if the tbegin doesn't have clobbers.  */
++	      if (GET_CODE (PATTERN (insn)) != PARALLEL)
++		return;
++
++	      if (tbegin_bb != NULL)
++		return;
++
++	      /* Find the next conditional jump.  */
++	      for (tmp = NEXT_INSN (insn);
++		   tmp != NULL_RTX;
++		   tmp = NEXT_INSN (tmp))
++		{
++		  if (reg_set_p (gen_rtx_REG (CCmode, CC_REGNUM), tmp))
++		    return;
++		  if (!JUMP_P (tmp))
++		    continue;
++
++		  ite = SET_SRC (PATTERN (tmp));
++		  if (GET_CODE (ite) != IF_THEN_ELSE)
++		    continue;
++
++		  cc = XEXP (XEXP (ite, 0), 0);
++		  if (!REG_P (cc) || !CC_REGNO_P (REGNO (cc))
++		      || GET_MODE (cc) != CCRAWmode
++		      || GET_CODE (XEXP (XEXP (ite, 0), 1)) != CONST_INT)
++		    return;
++
++		  if (bb->succs->length () != 2)
++		    return;
++
++		  mask = INTVAL (XEXP (XEXP (ite, 0), 1));
++		  if (GET_CODE (XEXP (ite, 0)) == NE)
++		    mask ^= 0xf;
++
++		  if (mask == CC0)
++		    target = XEXP (ite, 1);
++		  else if (mask == (CC0 ^ 0xf))
++		    target = XEXP (ite, 2);
++		  else
++		    return;
++
++		  {
++		    edge_iterator ei;
++		    edge e1, e2;
++
++		    ei = ei_start (bb->succs);
++		    e1 = ei_safe_edge (ei);
++		    ei_next (&ei);
++		    e2 = ei_safe_edge (ei);
++
++		    if (e2->flags & EDGE_FALLTHRU)
++		      {
++			e2 = e1;
++			e1 = ei_safe_edge (ei);
++		      }
++
++		    if (!(e1->flags & EDGE_FALLTHRU))
++		      return;
++
++		    tbegin_bb = (target == pc_rtx) ? e1->dest : e2->dest;
++		  }
++		  if (tmp == BB_END (bb))
++		    break;
++		}
++	    }
++
++	  if (XINT (SET_SRC (pat), 1) == UNSPECV_TEND)
++	    {
++	      if (tend_bb != NULL)
++		return;
++	      tend_bb = bb;
++	    }
++	}
++    }
++
++  /* Either we successfully remove the FPR clobbers here or we are not
++     able to do anything for this TX.  Both cases don't qualify for
++     another look.  */
++  cfun->machine->tbegin_p = false;
++
++  if (tbegin_bb == NULL || tend_bb == NULL)
++    return;
++
++  calculate_dominance_info (CDI_POST_DOMINATORS);
++  result = dominated_by_p (CDI_POST_DOMINATORS, tbegin_bb, tend_bb);
++  free_dominance_info (CDI_POST_DOMINATORS);
++
++  if (!result)
++    return;
++
++  PATTERN (tbegin_insn) = XVECEXP (PATTERN (tbegin_insn), 0, 0);
++  INSN_CODE (tbegin_insn) = -1;
++  df_insn_rescan (tbegin_insn);
++
++  return;
++}
++
+ /* Update frame layout.  Recompute actual register save data based on
+    current info and update regs_ever_live for the special registers.
+    May be called multiple times, but may never cause *more* registers
+@@ -7774,7 +7972,7 @@
+ static void
+ s390_update_frame_layout (void)
+ {
+-  int clobbered_regs[16];
++  int clobbered_regs[32];
+ 
+   s390_register_info (clobbered_regs);
+ 
+@@ -8204,8 +8402,10 @@
+   int offset;
+   int next_fpr = 0;
+ 
+-  /* Complete frame layout.  */
++  /* Try to get rid of the FPR clobbers.  */
++  s390_optimize_nonescaping_tx ();
+ 
++  /* Complete frame layout.  */
+   s390_update_frame_layout ();
+ 
+   /* Annotate all constant pool references to let the scheduler know
+@@ -9353,6 +9553,291 @@
+   return build_va_arg_indirect_ref (addr);
+ }
+ 
++/* Emit rtl for the tbegin or tbegin_retry (RETRY != NULL_RTX)
++   expanders.
++   DEST  - Register location where CC will be stored.
++   TDB   - Pointer to a 256 byte area where to store the transaction.
++           diagnostic block. NULL if TDB is not needed.
++   RETRY - Retry count value.  If non-NULL a retry loop for CC2
++           is emitted
++   CLOBBER_FPRS_P - If true clobbers for all FPRs are emitted as part
++                    of the tbegin instruction pattern.  */
++
++void
++s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
++{
++  const int CC0 = 1 << 3;
++  const int CC1 = 1 << 2;
++  const int CC3 = 1 << 0;
++  rtx abort_label = gen_label_rtx ();
++  rtx leave_label = gen_label_rtx ();
++  rtx retry_reg = gen_reg_rtx (SImode);
++  rtx retry_label = NULL_RTX;
++  rtx jump;
++  rtx very_unlikely = GEN_INT (REG_BR_PROB_BASE / 100 - 1);
++
++  if (retry != NULL_RTX)
++    {
++      emit_move_insn (retry_reg, retry);
++      retry_label = gen_label_rtx ();
++      emit_label (retry_label);
++    }
++
++  if (clobber_fprs_p)
++    emit_insn (gen_tbegin_1 (tdb,
++		 gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK)));
++  else
++    emit_insn (gen_tbegin_nofloat_1 (tdb,
++		 gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK)));
++
++  jump = s390_emit_jump (abort_label,
++			 gen_rtx_NE (VOIDmode,
++				     gen_rtx_REG (CCRAWmode, CC_REGNUM),
++				     gen_rtx_CONST_INT (VOIDmode, CC0)));
++
++  JUMP_LABEL (jump) = abort_label;
++  LABEL_NUSES (abort_label) = 1;
++  add_reg_note (jump, REG_BR_PROB, very_unlikely);
++
++  /* Initialize CC return value.  */
++  emit_move_insn (dest, const0_rtx);
++
++  s390_emit_jump (leave_label, NULL_RTX);
++  LABEL_NUSES (leave_label) = 1;
++  emit_barrier ();
++
++  /* Abort handler code.  */
++
++  emit_label (abort_label);
++  if (retry != NULL_RTX)
++    {
++      rtx count = gen_reg_rtx (SImode);
++      jump = s390_emit_jump (leave_label,
++			     gen_rtx_EQ (VOIDmode,
++			       gen_rtx_REG (CCRAWmode, CC_REGNUM),
++			       gen_rtx_CONST_INT (VOIDmode, CC1 | CC3)));
++      LABEL_NUSES (leave_label) = 2;
++      add_reg_note (jump, REG_BR_PROB, very_unlikely);
++
++      /* CC2 - transient failure. Perform retry with ppa.  */
++      emit_move_insn (count, retry);
++      emit_insn (gen_subsi3 (count, count, retry_reg));
++      emit_insn (gen_tx_assist (count));
++      jump = emit_jump_insn (gen_doloop_si64 (retry_label,
++					      retry_reg,
++					      retry_reg));
++      JUMP_LABEL (jump) = retry_label;
++      LABEL_NUSES (retry_label) = 1;
++    }
++
++  emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
++					gen_rtvec (1, gen_rtx_REG (CCRAWmode,
++								   CC_REGNUM)),
++					UNSPEC_CC_TO_INT));
++  emit_label (leave_label);
++}
++
++/* Builtins.  */
++
++enum s390_builtin
++{
++  S390_BUILTIN_TBEGIN,
++  S390_BUILTIN_TBEGIN_NOFLOAT,
++  S390_BUILTIN_TBEGIN_RETRY,
++  S390_BUILTIN_TBEGIN_RETRY_NOFLOAT,
++  S390_BUILTIN_TBEGINC,
++  S390_BUILTIN_TEND,
++  S390_BUILTIN_TABORT,
++  S390_BUILTIN_NON_TX_STORE,
++  S390_BUILTIN_TX_NESTING_DEPTH,
++  S390_BUILTIN_TX_ASSIST,
++
++  S390_BUILTIN_max
++};
++
++static enum insn_code const code_for_builtin[S390_BUILTIN_max] = {
++  CODE_FOR_tbegin,
++  CODE_FOR_tbegin_nofloat,
++  CODE_FOR_tbegin_retry,
++  CODE_FOR_tbegin_retry_nofloat,
++  CODE_FOR_tbeginc,
++  CODE_FOR_tend,
++  CODE_FOR_tabort,
++  CODE_FOR_ntstg,
++  CODE_FOR_etnd,
++  CODE_FOR_tx_assist
++};
++
++static void
++s390_init_builtins (void)
++{
++  tree ftype, uint64_type;
++
++  /* void foo (void) */
++  ftype = build_function_type_list (void_type_node, NULL_TREE);
++  add_builtin_function ("__builtin_tbeginc", ftype, S390_BUILTIN_TBEGINC,
++			BUILT_IN_MD, NULL, NULL_TREE);
++
++  /* void foo (int) */
++  ftype = build_function_type_list (void_type_node, integer_type_node,
++				    NULL_TREE);
++  add_builtin_function ("__builtin_tabort", ftype,
++			S390_BUILTIN_TABORT, BUILT_IN_MD, NULL, NULL_TREE);
++  add_builtin_function ("__builtin_tx_assist", ftype,
++			S390_BUILTIN_TX_ASSIST, BUILT_IN_MD, NULL, NULL_TREE);
++
++  /* int foo (void *) */
++  ftype = build_function_type_list (integer_type_node, ptr_type_node, NULL_TREE);
++  add_builtin_function ("__builtin_tbegin", ftype, S390_BUILTIN_TBEGIN,
++			BUILT_IN_MD, NULL, NULL_TREE);
++  add_builtin_function ("__builtin_tbegin_nofloat", ftype,
++			S390_BUILTIN_TBEGIN_NOFLOAT,
++			BUILT_IN_MD, NULL, NULL_TREE);
++
++  /* int foo (void *, int) */
++  ftype = build_function_type_list (integer_type_node, ptr_type_node,
++				    integer_type_node, NULL_TREE);
++  add_builtin_function ("__builtin_tbegin_retry", ftype,
++			S390_BUILTIN_TBEGIN_RETRY,
++			BUILT_IN_MD,
++			NULL, NULL_TREE);
++  add_builtin_function ("__builtin_tbegin_retry_nofloat", ftype,
++			S390_BUILTIN_TBEGIN_RETRY_NOFLOAT,
++			BUILT_IN_MD,
++			NULL, NULL_TREE);
++
++  /* int foo (void) */
++  ftype = build_function_type_list (integer_type_node, NULL_TREE);
++  add_builtin_function ("__builtin_tx_nesting_depth", ftype,
++			S390_BUILTIN_TX_NESTING_DEPTH,
++			BUILT_IN_MD, NULL, NULL_TREE);
++  add_builtin_function ("__builtin_tend", ftype,
++			S390_BUILTIN_TEND, BUILT_IN_MD,	NULL, NULL_TREE);
++
++  /* void foo (uint64_t *, uint64_t) */
++  if (TARGET_64BIT)
++    uint64_type = long_unsigned_type_node;
++  else
++    uint64_type = long_long_unsigned_type_node;
++
++   ftype = build_function_type_list (void_type_node,
++ 				    build_pointer_type (uint64_type),
++				    uint64_type, NULL_TREE);
++  add_builtin_function ("__builtin_non_tx_store", ftype,
++			S390_BUILTIN_NON_TX_STORE,
++			BUILT_IN_MD, NULL, NULL_TREE);
++}
++
++/* Expand an expression EXP that calls a built-in function,
++   with result going to TARGET if that's convenient
++   (and in mode MODE if that's convenient).
++   SUBTARGET may be used as the target for computing one of EXP's operands.
++   IGNORE is nonzero if the value is to be ignored.  */
++
++static rtx
++s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
++		     enum machine_mode mode ATTRIBUTE_UNUSED,
++		     int ignore ATTRIBUTE_UNUSED)
++{
++#define MAX_ARGS 2
++
++  tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
++  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
++  enum insn_code icode;
++  rtx op[MAX_ARGS], pat;
++  int arity;
++  bool nonvoid;
++  tree arg;
++  call_expr_arg_iterator iter;
++
++  if (fcode >= S390_BUILTIN_max)
++    internal_error ("bad builtin fcode");
++  icode = code_for_builtin[fcode];
++  if (icode == 0)
++    internal_error ("bad builtin fcode");
++
++  if (!TARGET_HTM)
++    error ("Transactional execution builtins not enabled (-mhtm)\n");
++
++  /* Set a flag in the machine specific cfun part in order to support
++     saving/restoring of FPRs.  */
++  if (fcode == S390_BUILTIN_TBEGIN || fcode == S390_BUILTIN_TBEGIN_RETRY)
++    cfun->machine->tbegin_p = true;
++
++  nonvoid = TREE_TYPE (TREE_TYPE (fndecl)) != void_type_node;
++
++  arity = 0;
++  FOR_EACH_CALL_EXPR_ARG (arg, iter, exp)
++    {
++      const struct insn_operand_data *insn_op;
++
++      if (arg == error_mark_node)
++	return NULL_RTX;
++      if (arity >= MAX_ARGS)
++	return NULL_RTX;
++
++      insn_op = &insn_data[icode].operand[arity + nonvoid];
++
++      op[arity] = expand_expr (arg, NULL_RTX, insn_op->mode, EXPAND_NORMAL);
++
++      if (!(*insn_op->predicate) (op[arity], insn_op->mode))
++	{
++	  if (insn_op->predicate == memory_operand)
++	    {
++	      /* Don't move a NULL pointer into a register. Otherwise
++		 we have to rely on combine being able to move it back
++		 in order to get an immediate 0 in the instruction.  */
++	      if (op[arity] != const0_rtx)
++		op[arity] = copy_to_mode_reg (Pmode, op[arity]);
++	      op[arity] = gen_rtx_MEM (insn_op->mode, op[arity]);
++	    }
++	  else
++	    op[arity] = copy_to_mode_reg (insn_op->mode, op[arity]);
++	}
++
++      arity++;
++    }
++
++  if (nonvoid)
++    {
++      enum machine_mode tmode = insn_data[icode].operand[0].mode;
++      if (!target
++	  || GET_MODE (target) != tmode
++	  || !(*insn_data[icode].operand[0].predicate) (target, tmode))
++	target = gen_reg_rtx (tmode);
++    }
++
++  switch (arity)
++    {
++    case 0:
++      pat = GEN_FCN (icode) (target);
++      break;
++    case 1:
++      if (nonvoid)
++        pat = GEN_FCN (icode) (target, op[0]);
++      else
++	pat = GEN_FCN (icode) (op[0]);
++      break;
++    case 2:
++      if (nonvoid)
++	pat = GEN_FCN (icode) (target, op[0], op[1]);
++      else
++	pat = GEN_FCN (icode) (op[0], op[1]);
++      break;
++    default:
++      gcc_unreachable ();
++    }
++  if (!pat)
++    return NULL_RTX;
++  emit_insn (pat);
++
++  if (nonvoid)
++    return target;
++  else
++    return const0_rtx;
++}
++
++
+ /* Output assembly code for the trampoline template to
+    stdio stream FILE.
+ 
+@@ -11008,6 +11493,11 @@
+ #undef TARGET_RETURN_IN_MEMORY
+ #define TARGET_RETURN_IN_MEMORY s390_return_in_memory
+ 
++#undef  TARGET_INIT_BUILTINS
++#define TARGET_INIT_BUILTINS s390_init_builtins
++#undef  TARGET_EXPAND_BUILTIN
++#define TARGET_EXPAND_BUILTIN s390_expand_builtin
++
+ #undef TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA
+ #define TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA s390_output_addr_const_extra
+ 
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390.h gcc-4.8.1/gcc/config/s390/s390.h
+--- gcc-4.8.1.orig/gcc/config/s390/s390.h	2013-03-05 06:02:06.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390.h	2013-08-02 10:41:10.548493000 -0500
+@@ -34,7 +34,8 @@
+   PF_DFP = 16,
+   PF_Z10 = 32,
+   PF_Z196 = 64,
+-  PF_ZEC12 = 128
++  PF_ZEC12 = 128,
++  PF_TX = 256
+ };
+ 
+ /* This is necessary to avoid a warning about comparing different enum
+@@ -61,6 +62,8 @@
+  	(s390_arch_flags & PF_Z196)
+ #define TARGET_CPU_ZEC12 \
+  	(s390_arch_flags & PF_ZEC12)
++#define TARGET_CPU_HTM \
++ 	(s390_arch_flags & PF_TX)
+ 
+ /* These flags indicate that the generated code should run on a cpu
+    providing the respective hardware facility when run in
+@@ -78,6 +81,7 @@
+        (TARGET_ZARCH && TARGET_CPU_Z196)
+ #define TARGET_ZEC12 \
+        (TARGET_ZARCH && TARGET_CPU_ZEC12)
++#define TARGET_HTM (TARGET_OPT_HTM)
+ 
+ 
+ #define TARGET_AVOID_CMP_AND_BRANCH (s390_tune == PROCESSOR_2817_Z196)
+@@ -93,23 +97,25 @@
+ #define TARGET_TPF 0
+ 
+ /* Target CPU builtins.  */
+-#define TARGET_CPU_CPP_BUILTINS()			\
+-  do							\
+-    {							\
+-      builtin_assert ("cpu=s390");			\
+-      builtin_assert ("machine=s390");			\
+-      builtin_define ("__s390__");			\
+-      if (TARGET_ZARCH)					\
+-	builtin_define ("__zarch__");			\
+-      if (TARGET_64BIT)					\
+-        builtin_define ("__s390x__");			\
+-      if (TARGET_LONG_DOUBLE_128)			\
+-        builtin_define ("__LONG_DOUBLE_128__");		\
+-    }							\
++#define TARGET_CPU_CPP_BUILTINS()					\
++  do									\
++    {									\
++      builtin_assert ("cpu=s390");					\
++      builtin_assert ("machine=s390");					\
++      builtin_define ("__s390__");					\
++      if (TARGET_ZARCH)							\
++	builtin_define ("__zarch__");					\
++      if (TARGET_64BIT)							\
++        builtin_define ("__s390x__");					\
++      if (TARGET_LONG_DOUBLE_128)					\
++        builtin_define ("__LONG_DOUBLE_128__");				\
++      if (TARGET_HTM)							\
++	builtin_define ("__HTM__");					\
++    }									\
+   while (0)
+ 
+ #ifdef DEFAULT_TARGET_64BIT
+-#define TARGET_DEFAULT             (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP)
++#define TARGET_DEFAULT             (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP | MASK_OPT_HTM)
+ #else
+ #define TARGET_DEFAULT             0
+ #endif
+@@ -164,6 +170,11 @@
+ #define S390_TDC_INFINITY (S390_TDC_POSITIVE_INFINITY \
+ 			  | S390_TDC_NEGATIVE_INFINITY )
+ 
++/* This is used by float.h to define the float_t and double_t data
++   types.  For historical reasons both are double on s390 what cannot
++   be changed anymore.  */
++#define TARGET_FLT_EVAL_METHOD 1
++
+ /* Target machine storage layout.  */
+ 
+ /* Everything is big-endian.  */
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390intrin.h gcc-4.8.1/gcc/config/s390/s390intrin.h
+--- gcc-4.8.1.orig/gcc/config/s390/s390intrin.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390intrin.h	2013-08-14 14:44:27.951575000 -0500
+@@ -0,0 +1,33 @@
++/* S/390 System z specific intrinsics
++   Copyright (C) 2013 Free Software Foundation, Inc.
++   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
++
++This file is part of GCC.
++
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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 GCC; see the file COPYING3.  If not see
++<http://www.gnu.org/licenses/>.  */
++
++#ifndef  _S390INTRIN_H
++#define _S390INTRIN_H
++
++#ifndef __s390__
++  #error s390intrin.h included on wrong platform/compiler
++#endif
++
++#ifdef __HTM__
++#include <htmintrin.h>
++#endif
++
++
++#endif /* _S390INTRIN_H*/
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390.md gcc-4.8.1/gcc/config/s390/s390.md
+--- gcc-4.8.1.orig/gcc/config/s390/s390.md	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390.md	2013-08-02 10:41:10.548493000 -0500
+@@ -59,11 +59,17 @@
+ (define_c_enum "unspec" [
+    ; Miscellaneous
+    UNSPEC_ROUND
+-   UNSPEC_CCU_TO_INT
+-   UNSPEC_CCZ_TO_INT
+    UNSPEC_ICM
+    UNSPEC_TIE
+ 
++   ; Convert CC into a str comparison result and copy it into an
++   ; integer register
++   ; cc0->0, cc1->1, cc2->-1, (cc3->-1)
++   UNSPEC_STRCMPCC_TO_INT
++
++   ; Copy CC as is into the lower 2 bits of an integer register
++   UNSPEC_CC_TO_INT
++
+    ; GOT/PLT and lt-relative accesses
+    UNSPEC_LTREL_OFFSET
+    UNSPEC_LTREL_BASE
+@@ -138,6 +144,15 @@
+    ; Atomic Support
+    UNSPECV_CAS
+    UNSPECV_ATOMIC_OP
++
++   ; Transactional Execution support
++   UNSPECV_TBEGIN
++   UNSPECV_TBEGINC
++   UNSPECV_TEND
++   UNSPECV_TABORT
++   UNSPECV_ETND
++   UNSPECV_NTSTG
++   UNSPECV_PPA
+   ])
+ 
+ ;;
+@@ -191,6 +206,9 @@
+    (PFPO_OP1_TYPE_SHIFT           8)
+   ])
+ 
++; Immediate operands for tbegin and tbeginc
++(define_constants [(TBEGIN_MASK  65292)]) ; 0xff0c
++(define_constants [(TBEGINC_MASK 65288)]) ; 0xff08
+ 
+ ;; Instruction operand type as used in the Principles of Operation.
+ ;; Used to determine defaults for length and other attribute values.
+@@ -2246,19 +2264,19 @@
+ 
+ (define_insn "movcc"
+   [(set (match_operand:CC 0 "nonimmediate_operand" "=d,c,d,d,d,R,T")
+-	(match_operand:CC 1 "nonimmediate_operand" "d,d,c,R,T,d,d"))]
++	(match_operand:CC 1 "nonimmediate_operand" " d,d,c,R,T,d,d"))]
+   ""
+   "@
+    lr\t%0,%1
+    tmh\t%1,12288
+    ipm\t%0
+-   st\t%0,%1
+-   sty\t%0,%1
+-   l\t%1,%0
+-   ly\t%1,%0"
++   l\t%0,%1
++   ly\t%0,%1
++   st\t%1,%0
++   sty\t%1,%0"
+   [(set_attr "op_type" "RR,RI,RRE,RX,RXY,RX,RXY")
+-   (set_attr "type" "lr,*,*,store,store,load,load")
+-   (set_attr "z10prop" "z10_fr_E1,z10_super,*,z10_rec,z10_rec,z10_fwd_A3,z10_fwd_A3")
++   (set_attr "type" "lr,*,*,load,load,store,store")
++   (set_attr "z10prop" "z10_fr_E1,z10_super,*,z10_fwd_A3,z10_fwd_A3,z10_rec,z10_rec")
+    (set_attr "z196prop" "*,*,z196_ends,*,*,*,*")])
+ 
+ ;
+@@ -2578,7 +2596,7 @@
+      (use (reg:SI 0))])
+    (parallel
+     [(set (match_operand:SI 0 "register_operand" "=d")
+-	  (unspec:SI [(reg:CCU CC_REGNUM)] UNSPEC_CCU_TO_INT))
++	  (unspec:SI [(reg:CCU CC_REGNUM)] UNSPEC_STRCMPCC_TO_INT))
+      (clobber (reg:CC CC_REGNUM))])]
+   ""
+ {
+@@ -2820,7 +2838,7 @@
+                      (match_dup 2)]
+                      UNSPEC_TDC_INSN))
+    (set (match_operand:SI 0 "register_operand" "=d")
+-        (unspec:SI [(reg:CCZ CC_REGNUM)] UNSPEC_CCZ_TO_INT))]
++        (unspec:SI [(reg:CCZ CC_REGNUM)] UNSPEC_CC_TO_INT))]
+   "TARGET_HARD_FLOAT"
+ {
+   operands[2] = GEN_INT (S390_TDC_SIGNBIT_SET);
+@@ -2832,12 +2850,21 @@
+                      (match_dup 2)]
+                      UNSPEC_TDC_INSN))
+    (set (match_operand:SI 0 "register_operand" "=d")
+-        (unspec:SI [(reg:CCZ CC_REGNUM)] UNSPEC_CCZ_TO_INT))]
++        (unspec:SI [(reg:CCZ CC_REGNUM)] UNSPEC_CC_TO_INT))]
+   "TARGET_HARD_FLOAT"
+ {
+   operands[2] = GEN_INT (S390_TDC_INFINITY);
+ })
+ 
++(define_insn_and_split "*cc_to_int"
++  [(set (match_operand:SI 0 "register_operand" "=d")
++        (unspec:SI [(match_operand 1 "register_operand" "0")]
++                   UNSPEC_CC_TO_INT))]
++  "operands != NULL"
++  "#"
++  "reload_completed"
++  [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 28)))])
++
+ ; This insn is used to generate all variants of the Test Data Class
+ ; instruction, namely tcxb, tcdb, and tceb.  The insn's first operand
+ ; is the register to be tested and the second one is the bit mask
+@@ -2853,14 +2880,6 @@
+    [(set_attr "op_type" "RXE")
+     (set_attr "type"  "fsimp<mode>")])
+ 
+-(define_insn_and_split "*ccz_to_int"
+-  [(set (match_operand:SI 0 "register_operand" "=d")
+-        (unspec:SI [(match_operand:CCZ 1 "register_operand" "0")]
+-                   UNSPEC_CCZ_TO_INT))]
+-  ""
+-  "#"
+-  "reload_completed"
+-  [(set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 28)))])
+ 
+ 
+ ;
+@@ -3205,7 +3224,7 @@
+ (define_insn_and_split "cmpint"
+   [(set (match_operand:SI 0 "register_operand" "=d")
+         (unspec:SI [(match_operand:CCU 1 "register_operand" "0")]
+-                   UNSPEC_CCU_TO_INT))
++                   UNSPEC_STRCMPCC_TO_INT))
+    (clobber (reg:CC CC_REGNUM))]
+   ""
+   "#"
+@@ -3218,10 +3237,10 @@
+ (define_insn_and_split "*cmpint_cc"
+   [(set (reg CC_REGNUM)
+         (compare (unspec:SI [(match_operand:CCU 1 "register_operand" "0")]
+-                            UNSPEC_CCU_TO_INT)
++                            UNSPEC_STRCMPCC_TO_INT)
+                  (const_int 0)))
+    (set (match_operand:SI 0 "register_operand" "=d")
+-        (unspec:SI [(match_dup 1)] UNSPEC_CCU_TO_INT))]
++        (unspec:SI [(match_dup 1)] UNSPEC_STRCMPCC_TO_INT))]
+   "s390_match_ccmode (insn, CCSmode)"
+   "#"
+   "&& reload_completed"
+@@ -3238,7 +3257,7 @@
+ (define_insn_and_split "*cmpint_sign"
+   [(set (match_operand:DI 0 "register_operand" "=d")
+         (sign_extend:DI (unspec:SI [(match_operand:CCU 1 "register_operand" "0")]
+-                                   UNSPEC_CCU_TO_INT)))
++                                   UNSPEC_STRCMPCC_TO_INT)))
+    (clobber (reg:CC CC_REGNUM))]
+   "TARGET_ZARCH"
+   "#"
+@@ -3252,11 +3271,11 @@
+   [(set (reg CC_REGNUM)
+         (compare (ashiftrt:DI (ashift:DI (subreg:DI
+                    (unspec:SI [(match_operand:CCU 1 "register_operand" "0")]
+-                              UNSPEC_CCU_TO_INT) 0)
++                              UNSPEC_STRCMPCC_TO_INT) 0)
+                    (const_int 32)) (const_int 32))
+                  (const_int 0)))
+    (set (match_operand:DI 0 "register_operand" "=d")
+-        (sign_extend:DI (unspec:SI [(match_dup 1)] UNSPEC_CCU_TO_INT)))]
++        (sign_extend:DI (unspec:SI [(match_dup 1)] UNSPEC_STRCMPCC_TO_INT)))]
+   "s390_match_ccmode (insn, CCSmode) && TARGET_ZARCH"
+   "#"
+   "&& reload_completed"
+@@ -5507,7 +5526,7 @@
+ 	(if_then_else:GPR
+ 	  (match_operator 1 "s390_comparison"
+ 	    [(match_operand 2 "cc_reg_operand"        " c,c, c, c, c, c, c")
+-	     (const_int 0)])
++	     (match_operand 5 "const_int_operand"     "")])
+ 	  (match_operand:GPR 3 "nonimmediate_operand" " d,0,QS, 0, d, 0,QS")
+ 	  (match_operand:GPR 4 "nonimmediate_operand" " 0,d, 0,QS, 0, d,QS")))]
+   "TARGET_Z196"
+@@ -7907,7 +7926,8 @@
+ (define_insn "*cjump_64"
+   [(set (pc)
+         (if_then_else
+-          (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
++          (match_operator 1 "s390_comparison" [(reg CC_REGNUM)
++					       (match_operand 2 "const_int_operand" "")])
+           (label_ref (match_operand 0 "" ""))
+           (pc)))]
+   "TARGET_CPU_ZARCH"
+@@ -7926,7 +7946,8 @@
+ (define_insn "*cjump_31"
+   [(set (pc)
+         (if_then_else
+-          (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
++          (match_operator 1 "s390_comparison" [(reg CC_REGNUM)
++					       (match_operand 2 "const_int_operand" "")])
+           (label_ref (match_operand 0 "" ""))
+           (pc)))]
+   "!TARGET_CPU_ZARCH"
+@@ -9795,3 +9816,217 @@
+   "cpsdr\t%0,%2,%1"
+   [(set_attr "op_type"  "RRF")
+    (set_attr "type"     "fsimp<mode>")])
++
++
++;;
++;;- Transactional execution instructions
++;;
++
++; This splitter helps combine to make use of CC directly when
++; comparing the integer result of a tbegin builtin with a constant.
++; The unspec is already removed by canonicalize_comparison. So this
++; splitters only job is to turn the PARALLEL into separate insns
++; again.  Unfortunately this only works with the very first cc/int
++; compare since combine is not able to deal with data flow across
++; basic block boundaries.
++
++; It needs to be an insn pattern as well since combine does not apply
++; the splitter directly.  Combine would only use it if it actually
++; would reduce the number of instructions.
++(define_insn_and_split "*ccraw_to_int"
++  [(set (pc)
++	(if_then_else
++	 (match_operator 0 "s390_eqne_operator"
++			 [(reg:CCRAW CC_REGNUM)
++			  (match_operand 1 "const_int_operand" "")])
++	 (label_ref (match_operand 2 "" ""))
++	 (pc)))
++   (set (match_operand:SI 3 "register_operand" "=d")
++	(unspec:SI [(reg:CCRAW CC_REGNUM)] UNSPEC_CC_TO_INT))]
++  ""
++  "#"
++  ""
++  [(set (match_dup 3)
++	(unspec:SI [(reg:CCRAW CC_REGNUM)] UNSPEC_CC_TO_INT))
++   (set (pc)
++	(if_then_else (match_op_dup 0 [(reg:CCRAW CC_REGNUM) (match_dup 1)])
++		      (label_ref (match_dup 2))
++		      (pc)))]
++  "")
++
++; Non-constrained transaction begin
++
++(define_expand "tbegin"
++  [(match_operand:SI 0 "register_operand" "=d")
++   (match_operand:BLK 1 "memory_operand"  "=Q")]
++  "TARGET_HTM"
++{
++  s390_expand_tbegin (operands[0], operands[1], NULL_RTX, true);
++  DONE;
++})
++
++(define_expand "tbegin_nofloat"
++  [(match_operand:SI 0 "register_operand" "=d")
++   (match_operand:BLK 1 "memory_operand"  "=Q")]
++  "TARGET_HTM"
++{
++  s390_expand_tbegin (operands[0], operands[1], NULL_RTX, false);
++  DONE;
++})
++
++(define_expand "tbegin_retry"
++  [(match_operand:SI 0 "register_operand" "=d")
++   (match_operand:BLK 1 "memory_operand"  "=Q")
++   (match_operand 2 "const_int_operand")]
++  "TARGET_HTM"
++{
++  s390_expand_tbegin (operands[0], operands[1], operands[2], true);
++  DONE;
++})
++
++(define_expand "tbegin_retry_nofloat"
++  [(match_operand:SI 0 "register_operand" "=d")
++   (match_operand:BLK 1 "memory_operand"  "=Q")
++   (match_operand 2 "const_int_operand")]
++  "TARGET_HTM"
++{
++  s390_expand_tbegin (operands[0], operands[1], operands[2], false);
++  DONE;
++})
++
++(define_insn "tbegin_1"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(match_operand:BLK 0 "memory_operand"    "=Q")
++				(match_operand     1 "const_int_operand" " D")]
++			       UNSPECV_TBEGIN))
++   (clobber (reg:DF 16))
++   (clobber (reg:DF 17))
++   (clobber (reg:DF 18))
++   (clobber (reg:DF 19))
++   (clobber (reg:DF 20))
++   (clobber (reg:DF 21))
++   (clobber (reg:DF 22))
++   (clobber (reg:DF 23))
++   (clobber (reg:DF 24))
++   (clobber (reg:DF 25))
++   (clobber (reg:DF 26))
++   (clobber (reg:DF 27))
++   (clobber (reg:DF 28))
++   (clobber (reg:DF 29))
++   (clobber (reg:DF 30))
++   (clobber (reg:DF 31))]
++; CONST_OK_FOR_CONSTRAINT_P does not work with D constraint since D is
++; not supposed to be used for immediates (see genpreds.c).
++  "TARGET_HTM && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 0xffff"
++  "tbegin\t%0,%x1"
++  [(set_attr "op_type" "SIL")])
++
++; Same as above but without the FPR clobbers
++(define_insn "tbegin_nofloat_1"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(match_operand:BLK 0 "memory_operand"    "=Q")
++				(match_operand     1 "const_int_operand" " D")]
++			       UNSPECV_TBEGIN))]
++  "TARGET_HTM && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 0xffff"
++  "tbegin\t%0,%x1"
++  [(set_attr "op_type" "SIL")])
++
++
++; Constrained transaction begin
++
++(define_expand "tbeginc"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(const_int TBEGINC_MASK)]
++			       UNSPECV_TBEGINC))]
++  "TARGET_HTM"
++  "")
++
++(define_insn "*tbeginc_1"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" " D")]
++			       UNSPECV_TBEGINC))]
++  "TARGET_HTM && INTVAL (operands[0]) >= 0 && INTVAL (operands[0]) <= 0xffff"
++  "tbeginc\t0,%x0"
++  [(set_attr "op_type" "SIL")])
++
++; Transaction end
++
++(define_expand "tend"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(const_int 0)] UNSPECV_TEND))
++   (set (match_operand:SI 0 "register_operand" "=d")
++	(unspec:SI [(reg:CCRAW CC_REGNUM)] UNSPEC_CC_TO_INT))]
++  "TARGET_HTM"
++  "")
++
++(define_insn "*tend_1"
++  [(set (reg:CCRAW CC_REGNUM)
++	(unspec_volatile:CCRAW [(const_int 0)] UNSPECV_TEND))]
++  "TARGET_HTM"
++  "tend"
++  [(set_attr "op_type" "S")])
++
++; Transaction abort
++
++(define_expand "tabort"
++  [(unspec_volatile [(match_operand 0 "shift_count_or_setmem_operand" "")]
++		    UNSPECV_TABORT)]
++  "TARGET_HTM && operands != NULL"
++{
++  if (CONST_INT_P (operands[0])
++      && INTVAL (operands[0]) >= 0 && INTVAL (operands[0]) <= 255)
++    {
++      error ("Invalid transaction abort code: " HOST_WIDE_INT_PRINT_DEC
++	     ".  Values in range 0 through 255 are reserved.",
++	     INTVAL (operands[0]));
++      FAIL;
++    }
++})
++
++(define_insn "*tabort_1"
++  [(unspec_volatile [(match_operand 0 "shift_count_or_setmem_operand" "")]
++		    UNSPECV_TABORT)]
++  "TARGET_HTM && operands != NULL"
++  "tabort\t%Y0"
++  [(set_attr "op_type" "S")])
++
++; Transaction extract nesting depth
++
++(define_insn "etnd"
++  [(set (match_operand:SI 0 "register_operand" "=d")
++	(unspec_volatile:SI [(const_int 0)] UNSPECV_ETND))]
++  "TARGET_HTM"
++  "etnd\t%0"
++  [(set_attr "op_type" "RRE")])
++
++; Non-transactional store
++
++(define_insn "ntstg"
++  [(set (match_operand:DI 0 "memory_operand" "=RT")
++	(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "d")]
++			    UNSPECV_NTSTG))]
++  "TARGET_HTM"
++  "ntstg\t%1,%0"
++  [(set_attr "op_type" "RXY")])
++
++; Transaction perform processor assist
++
++(define_expand "tx_assist"
++  [(set (match_dup 1) (const_int 0))
++   (unspec_volatile [(match_operand:SI 0 "register_operand" "d")
++		     (match_dup 1)
++		     (const_int 1)]
++		    UNSPECV_PPA)]
++  "TARGET_HTM"
++{
++  operands[1] = gen_reg_rtx (SImode);
++})
++
++(define_insn "*ppa"
++  [(unspec_volatile [(match_operand:SI 0 "register_operand" "d")
++		     (match_operand:SI 1 "register_operand" "d")
++		     (match_operand 2 "const_int_operand" "I")]
++		    UNSPECV_PPA)]
++  "TARGET_HTM && INTVAL (operands[2]) < 16"
++  "ppa\t%0,%1,1"
++  [(set_attr "op_type" "RRF")])
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390-modes.def gcc-4.8.1/gcc/config/s390/s390-modes.def
+--- gcc-4.8.1.orig/gcc/config/s390/s390-modes.def	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390-modes.def	2013-08-02 10:41:10.548493000 -0500
+@@ -152,6 +152,14 @@
+ operands were equal/unequal. The CCZ1 mode ensures the result can be
+ effectively placed into a register.
+ 
++CCRAW
++
++The cc mode generated by a non-compare instruction.  The condition
++code mask for the CC consumer is determined by the comparison operator
++(only EQ and NE allowed) and the immediate value given as second
++operand to the operator.  For the other CC modes this value used to be
++0.
++
+ */
+ 
+ 
+@@ -172,3 +180,4 @@
+ CC_MODE (CCT1);
+ CC_MODE (CCT2);
+ CC_MODE (CCT3);
++CC_MODE (CCRAW);
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390.opt gcc-4.8.1/gcc/config/s390/s390.opt
+--- gcc-4.8.1.orig/gcc/config/s390/s390.opt	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390.opt	2013-08-02 10:41:10.548493000 -0500
+@@ -104,6 +104,10 @@
+ Target Report RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_128)
+ Use 64-bit long double
+ 
++mhtm
++Target Report Mask(OPT_HTM)
++Use hardware transactional execution instructions
++
+ mpacked-stack
+ Target Report Mask(PACKED_STACK)
+ Use packed stack layout
+diff -Naur gcc-4.8.1.orig/gcc/config/s390/s390-protos.h gcc-4.8.1/gcc/config/s390/s390-protos.h
+--- gcc-4.8.1.orig/gcc/config/s390/s390-protos.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/config/s390/s390-protos.h	2013-08-02 10:41:10.548493000 -0500
+@@ -58,7 +58,7 @@
+ extern enum machine_mode s390_tm_ccmode (rtx, rtx, bool);
+ extern enum machine_mode s390_select_ccmode (enum rtx_code, rtx, rtx);
+ extern rtx s390_emit_compare (enum rtx_code, rtx, rtx);
+-extern void s390_emit_jump (rtx, rtx);
++extern rtx s390_emit_jump (rtx, rtx);
+ extern bool symbolic_reference_mentioned_p (rtx);
+ extern bool tls_symbolic_reference_mentioned_p (rtx);
+ extern bool legitimate_la_operand_p (rtx);
+@@ -87,6 +87,7 @@
+ 				rtx, rtx, bool);
+ extern void s390_expand_atomic (enum machine_mode, enum rtx_code,
+ 				rtx, rtx, rtx, bool);
++extern void s390_expand_tbegin (rtx, rtx, rtx, bool);
+ extern rtx s390_return_addr_rtx (int, rtx);
+ extern rtx s390_back_chain_rtx (void);
+ extern rtx s390_emit_call (rtx, rtx, rtx, rtx);
+diff -Naur gcc-4.8.1.orig/gcc/config/sh/sh.md gcc-4.8.1/gcc/config/sh/sh.md
+--- gcc-4.8.1.orig/gcc/config/sh/sh.md	2013-05-06 14:53:56.000000000 -0500
++++ gcc-4.8.1/gcc/config/sh/sh.md	2013-06-09 17:02:28.968408000 -0500
+@@ -12073,10 +12073,10 @@
+ 
+ ;; FMA (fused multiply-add) patterns
+ (define_expand "fmasf4"
+-  [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
+-	(fma:SF (match_operand:SF 1 "fp_arith_reg_operand" "")
+-		(match_operand:SF 2 "fp_arith_reg_operand" "")
+-		(match_operand:SF 3 "fp_arith_reg_operand" "")))]
++  [(set (match_operand:SF 0 "fp_arith_reg_operand")
++	(fma:SF (match_operand:SF 1 "fp_arith_reg_operand")
++		(match_operand:SF 2 "fp_arith_reg_operand")
++		(match_operand:SF 3 "fp_arith_reg_operand")))]
+   "TARGET_SH2E || TARGET_SHMEDIA_FPU"
+ {
+   if (TARGET_SH2E)
+@@ -12107,6 +12107,43 @@
+   "fmac.s %1, %2, %0"
+   [(set_attr "type" "fparith_media")])
+ 
++;; For some cases such as 'a * b + a' the FMA pattern is not generated by
++;; previous transformations.  If FMA is generally allowed, let the combine
++;; pass utilize it.
++(define_insn_and_split "*fmasf4"
++  [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
++	(plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%w")
++			  (match_operand:SF 2 "fp_arith_reg_operand" "f"))
++		 (match_operand:SF 3 "arith_reg_operand" "0")))
++   (use (match_operand:PSI 4 "fpscr_operand"))]
++  "TARGET_SH2E && flag_fp_contract_mode != FP_CONTRACT_OFF"
++  "fmac	%1,%2,%0"
++  "&& can_create_pseudo_p ()"
++  [(parallel [(set (match_dup 0)
++		   (fma:SF (match_dup 1) (match_dup 2) (match_dup 3)))
++	      (use (match_dup 4))])]
++{
++  /* Change 'b * a + a' into 'a * b + a'.
++     This is better for register allocation.  */
++  if (REGNO (operands[2]) == REGNO (operands[3]))
++    {
++      rtx tmp = operands[1];
++      operands[1] = operands[2];
++      operands[2] = tmp;
++    }
++}
++  [(set_attr "type" "fp")
++   (set_attr "fp_mode" "single")])
++
++(define_insn "*fmasf4_media"
++  [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
++	(plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%f")
++			  (match_operand:SF 2 "fp_arith_reg_operand" "f"))
++		 (match_operand:SF 3 "fp_arith_reg_operand" "0")))]
++  "TARGET_SHMEDIA_FPU && flag_fp_contract_mode != FP_CONTRACT_OFF"
++  "fmac.s %1, %2, %0"
++  [(set_attr "type" "fparith_media")])
++
+ (define_expand "divsf3"
+   [(set (match_operand:SF 0 "arith_reg_operand" "")
+ 	(div:SF (match_operand:SF 1 "arith_reg_operand" "")
+diff -Naur gcc-4.8.1.orig/gcc/config/sparc/sparc.c gcc-4.8.1/gcc/config/sparc/sparc.c
+--- gcc-4.8.1.orig/gcc/config/sparc/sparc.c	2013-04-15 03:31:12.000000000 -0500
++++ gcc-4.8.1/gcc/config/sparc/sparc.c	2013-08-02 16:42:26.734213000 -0500
+@@ -11174,6 +11174,11 @@
+       /* Total Store Ordering: all memory transactions with store semantics
+ 	 are followed by an implied StoreStore.  */
+       implied |= StoreStore;
++
++      /* If we're not looking for a raw barrer (before+after), then atomic
++	 operations get the benefit of being both load and store.  */
++      if (load_store == 3 && before_after == 1)
++	implied |= StoreLoad;
+       /* FALLTHRU */
+ 
+     case SMM_PSO:
+diff -Naur gcc-4.8.1.orig/gcc/config.gcc gcc-4.8.1/gcc/config.gcc
+--- gcc-4.8.1.orig/gcc/config.gcc	2013-03-13 04:47:41.000000000 -0500
++++ gcc-4.8.1/gcc/config.gcc	2013-08-02 10:41:10.548493000 -0500
+@@ -452,6 +452,7 @@
+ 	cpu_type=s390
+ 	need_64bit_hwint=yes
+ 	extra_options="${extra_options} fused-madd.opt"
++	extra_headers="s390intrin.h htmintrin.h htmxlintrin.h"
+ 	;;
+ # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
+ sh[123456789lbe]*-*-* | sh-*-*)
+@@ -734,6 +735,7 @@
+     yes) thread_file='rtems' ;;
+   esac
+   extra_options="${extra_options} rtems.opt"
++  default_use_cxa_atexit=yes
+   use_gcc_stdint=wrap
+   ;;
+ *-*-uclinux*)
+@@ -2066,20 +2068,24 @@
+ 	extra_options="${extra_options} rs6000/sysv4.opt"
+ 	tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
+ 	;;
+-powerpc-*-linux* | powerpc64-*-linux*)
++powerpc*-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
+ 	extra_options="${extra_options} rs6000/sysv4.opt"
+ 	tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
++	case ${target} in
++	    powerpc*le-*-*)
++	    tm_file="${tm_file} rs6000/sysv4le.h" ;;
++	esac
+ 	maybe_biarch=yes
+ 	case ${target} in
+-	    powerpc64-*-linux*spe* | powerpc64-*-linux*paired*)
++	    powerpc64*-*-linux*spe* | powerpc64*-*-linux*paired*)
+ 	    	echo "*** Configuration ${target} not supported" 1>&2
+ 		exit 1
+ 		;;
+-	    powerpc-*-linux*spe* | powerpc-*-linux*paired*)
++	    powerpc*-*-linux*spe* | powerpc*-*-linux*paired*)
+ 		maybe_biarch=
+ 		;;
+-	    powerpc64-*-linux*)
++	    powerpc64*-*-linux*)
+ 	    	test x$with_cpu != x || cpu_is_64bit=yes
+ 		maybe_biarch=always
+ 		;;
+diff -Naur gcc-4.8.1.orig/gcc/config.in gcc-4.8.1/gcc/config.in
+--- gcc-4.8.1.orig/gcc/config.in	2013-05-31 04:09:26.000000000 -0500
++++ gcc-4.8.1/gcc/config.in	2013-06-18 20:18:38.348158000 -0500
+@@ -1228,7 +1228,7 @@
+ #endif
+ 
+ 
+-/* Define if your AIX linker supports a large TOC. */
++/* Define if your PowerPC64 linker supports a large TOC. */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_LD_LARGE_TOC
+ #endif
+diff -Naur gcc-4.8.1.orig/gcc/configure gcc-4.8.1/gcc/configure
+--- gcc-4.8.1.orig/gcc/configure	2013-05-08 06:36:36.000000000 -0500
++++ gcc-4.8.1/gcc/configure	2013-06-18 20:18:38.348158000 -0500
+@@ -23281,33 +23281,7 @@
+ 	tls_first_major=0
+ 	tls_first_minor=0
+ 	;;
+-  powerpc-*-*)
+-    conftest_s='
+-	.section ".tdata","awT",@progbits
+-	.align 2
+-ld0:	.space 4
+-ld1:	.space 4
+-x1:	.space 4
+-x2:	.space 4
+-x3:	.space 4
+-	.text
+-	addi 3,31,ld0@got@tlsgd
+-	bl __tls_get_addr
+-	addi 3,31,x1@got@tlsld
+-	bl __tls_get_addr
+-	addi 9,3,x1@dtprel
+-	addis 9,3,x2@dtprel@ha
+-	addi 9,9,x2@dtprel@l
+-	lwz 9,x3@got@tprel(31)
+-	add 9,9,x@tls
+-	addi 9,2,x1@tprel
+-	addis 9,2,x2@tprel@ha
+-	addi 9,9,x2@tprel@l'
+-	tls_first_major=2
+-	tls_first_minor=14
+-	tls_as_opt="-a32 --fatal-warnings"
+-	;;
+-  powerpc64-*-*)
++  powerpc64*-*-*)
+     conftest_s='
+ 	.section ".tdata","awT",@progbits
+ 	.align 3
+@@ -23341,6 +23315,32 @@
+ 	tls_first_minor=14
+ 	tls_as_opt="-a64 --fatal-warnings"
+ 	;;
++  powerpc*-*-*)
++    conftest_s='
++	.section ".tdata","awT",@progbits
++	.align 2
++ld0:	.space 4
++ld1:	.space 4
++x1:	.space 4
++x2:	.space 4
++x3:	.space 4
++	.text
++	addi 3,31,ld0@got@tlsgd
++	bl __tls_get_addr
++	addi 3,31,x1@got@tlsld
++	bl __tls_get_addr
++	addi 9,3,x1@dtprel
++	addis 9,3,x2@dtprel@ha
++	addi 9,9,x2@dtprel@l
++	lwz 9,x3@got@tprel(31)
++	add 9,9,x@tls
++	addi 9,2,x1@tprel
++	addis 9,2,x2@tprel@ha
++	addi 9,9,x2@tprel@l'
++	tls_first_major=2
++	tls_first_minor=14
++	tls_as_opt="-a32 --fatal-warnings"
++	;;
+   s390-*-*)
+     conftest_s='
+ 	.section ".tdata","awT",@progbits
+@@ -26472,6 +26472,9 @@
+ case "$target:$tm_file" in
+   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
+   case "$target" in
++     *le-*-linux*)
++     emul_name="-melf64lppc"
++      ;;
+      *-*-linux*)
+      emul_name="-melf64ppc"
+       ;;
+diff -Naur gcc-4.8.1.orig/gcc/configure.ac gcc-4.8.1/gcc/configure.ac
+--- gcc-4.8.1.orig/gcc/configure.ac	2013-05-08 06:36:36.000000000 -0500
++++ gcc-4.8.1/gcc/configure.ac	2013-06-18 20:18:38.348158000 -0500
+@@ -3044,33 +3044,7 @@
+ 	tls_first_major=0
+ 	tls_first_minor=0
+ 	;;
+-  powerpc-*-*)
+-    conftest_s='
+-	.section ".tdata","awT",@progbits
+-	.align 2
+-ld0:	.space 4
+-ld1:	.space 4
+-x1:	.space 4
+-x2:	.space 4
+-x3:	.space 4
+-	.text
+-	addi 3,31,ld0@got@tlsgd
+-	bl __tls_get_addr
+-	addi 3,31,x1@got@tlsld
+-	bl __tls_get_addr
+-	addi 9,3,x1@dtprel
+-	addis 9,3,x2@dtprel@ha
+-	addi 9,9,x2@dtprel@l
+-	lwz 9,x3@got@tprel(31)
+-	add 9,9,x@tls
+-	addi 9,2,x1@tprel
+-	addis 9,2,x2@tprel@ha
+-	addi 9,9,x2@tprel@l'
+-	tls_first_major=2
+-	tls_first_minor=14
+-	tls_as_opt="-a32 --fatal-warnings"
+-	;;
+-  powerpc64-*-*)
++  powerpc64*-*-*)
+     conftest_s='
+ 	.section ".tdata","awT",@progbits
+ 	.align 3
+@@ -3104,6 +3078,32 @@
+ 	tls_first_minor=14
+ 	tls_as_opt="-a64 --fatal-warnings"
+ 	;;
++  powerpc*-*-*)
++    conftest_s='
++	.section ".tdata","awT",@progbits
++	.align 2
++ld0:	.space 4
++ld1:	.space 4
++x1:	.space 4
++x2:	.space 4
++x3:	.space 4
++	.text
++	addi 3,31,ld0@got@tlsgd
++	bl __tls_get_addr
++	addi 3,31,x1@got@tlsld
++	bl __tls_get_addr
++	addi 9,3,x1@dtprel
++	addis 9,3,x2@dtprel@ha
++	addi 9,9,x2@dtprel@l
++	lwz 9,x3@got@tprel(31)
++	add 9,9,x@tls
++	addi 9,2,x1@tprel
++	addis 9,2,x2@tprel@ha
++	addi 9,9,x2@tprel@l'
++	tls_first_major=2
++	tls_first_minor=14
++	tls_as_opt="-a32 --fatal-warnings"
++	;;
+   s390-*-*)
+     conftest_s='
+ 	.section ".tdata","awT",@progbits
+@@ -4507,6 +4507,9 @@
+ case "$target:$tm_file" in
+   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
+   case "$target" in
++     *le-*-linux*)
++     emul_name="-melf64lppc"
++      ;;
+      *-*-linux*)
+      emul_name="-melf64ppc"
+       ;;
+@@ -4611,7 +4614,7 @@
+     ])
+     if test x"$gcc_cv_ld_large_toc" = xyes; then
+       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
+-    [Define if your AIX linker supports a large TOC.])
++    [Define if your PowerPC64 linker supports a large TOC.])
+     fi
+     ;;
+ esac
+diff -Naur gcc-4.8.1.orig/gcc/cp/call.c gcc-4.8.1/gcc/cp/call.c
+--- gcc-4.8.1.orig/gcc/cp/call.c	2013-05-14 07:51:17.000000000 -0500
++++ gcc-4.8.1/gcc/cp/call.c	2013-07-25 10:07:27.406614000 -0500
+@@ -6195,8 +6195,8 @@
+   if (convs->check_narrowing)
+     check_narrowing (totype, expr);
+ 
+-  if (issue_conversion_warnings && (complain & tf_warning))
+-    expr = convert_and_check (totype, expr);
++  if (issue_conversion_warnings)
++    expr = cp_convert_and_check (totype, expr, complain);
+   else
+     expr = convert (totype, expr);
+ 
+@@ -6390,7 +6390,7 @@
+   push_defarg_context (fn);
+ 
+   if (fn && DECL_TEMPLATE_INFO (fn))
+-    arg = tsubst_default_argument (fn, type, arg);
++    arg = tsubst_default_argument (fn, type, arg, complain);
+ 
+   /* Due to:
+ 
+diff -Naur gcc-4.8.1.orig/gcc/cp/class.c gcc-4.8.1/gcc/cp/class.c
+--- gcc-4.8.1.orig/gcc/cp/class.c	2013-04-01 14:05:21.000000000 -0500
++++ gcc-4.8.1/gcc/cp/class.c	2013-07-05 05:23:08.653887000 -0500
+@@ -4574,15 +4574,20 @@
+ static void
+ deduce_noexcept_on_destructors (tree t)
+ {
+-  tree fns;
+-
+   /* If for some reason we don't have a CLASSTYPE_METHOD_VEC, we bail
+      out now.  */
+   if (!CLASSTYPE_METHOD_VEC (t))
+     return;
+ 
+-  for (fns = CLASSTYPE_DESTRUCTORS (t); fns; fns = OVL_NEXT (fns))
++  bool saved_nontrivial_dtor = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t);
++
++  /* Avoid early exit from synthesized_method_walk (c++/57645).  */
++  TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) = true;
++
++  for (tree fns = CLASSTYPE_DESTRUCTORS (t); fns; fns = OVL_NEXT (fns))
+     deduce_noexcept_on_destructor (OVL_CURRENT (fns));
++
++  TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) = saved_nontrivial_dtor;
+ }
+ 
+ /* Subroutine of set_one_vmethod_tm_attributes.  Search base classes
+@@ -4833,6 +4838,44 @@
+   return false;
+ }
+ 
++/* TYPE is being used as a virtual base, and has a non-trivial move
++   assignment.  Return true if this is due to there being a user-provided
++   move assignment in TYPE or one of its subobjects; if there isn't, then
++   multiple move assignment can't cause any harm.  */
++
++bool
++vbase_has_user_provided_move_assign (tree type)
++{
++  /* Does the type itself have a user-provided move assignment operator?  */
++  for (tree fns
++	 = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
++       fns; fns = OVL_NEXT (fns))
++    {
++      tree fn = OVL_CURRENT (fns);
++      if (move_fn_p (fn) && user_provided_p (fn))
++	return true;
++    }
++
++  /* Do any of its bases?  */
++  tree binfo = TYPE_BINFO (type);
++  tree base_binfo;
++  for (int i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
++    if (vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo)))
++      return true;
++
++  /* Or non-static data members?  */
++  for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
++    {
++      if (TREE_CODE (field) == FIELD_DECL
++	  && CLASS_TYPE_P (TREE_TYPE (field))
++	  && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
++	return true;
++    }
++
++  /* Seems not.  */
++  return false;
++}
++
+ /* If default-initialization leaves part of TYPE uninitialized, returns
+    a DECL for the field or TYPE itself (DR 253).  */
+ 
+diff -Naur gcc-4.8.1.orig/gcc/cp/cp-tree.h gcc-4.8.1/gcc/cp/cp-tree.h
+--- gcc-4.8.1.orig/gcc/cp/cp-tree.h	2013-04-24 10:42:20.000000000 -0500
++++ gcc-4.8.1/gcc/cp/cp-tree.h	2013-08-20 07:59:37.559809000 -0500
+@@ -1211,17 +1211,20 @@
+ /* The _DECL for this _TYPE.  */
+ #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE)))
+ 
+-/* Nonzero if T is a class (or struct or union) type.  Also nonzero
+-   for template type parameters, typename types, and instantiated
+-   template template parameters.  Keep these checks in ascending code
+-   order.  */
+-#define MAYBE_CLASS_TYPE_P(T)					\
++/* Nonzero if T is a type that could resolve to any kind of concrete type
++   at instantiation time.  */
++#define WILDCARD_TYPE_P(T)				\
+   (TREE_CODE (T) == TEMPLATE_TYPE_PARM			\
+    || TREE_CODE (T) == TYPENAME_TYPE			\
+    || TREE_CODE (T) == TYPEOF_TYPE			\
+    || TREE_CODE (T) == BOUND_TEMPLATE_TEMPLATE_PARM	\
+-   || TREE_CODE (T) == DECLTYPE_TYPE			\
+-   || CLASS_TYPE_P (T))
++   || TREE_CODE (T) == DECLTYPE_TYPE)
++
++/* Nonzero if T is a class (or struct or union) type.  Also nonzero
++   for template type parameters, typename types, and instantiated
++   template template parameters.  Keep these checks in ascending code
++   order.  */
++#define MAYBE_CLASS_TYPE_P(T) (WILDCARD_TYPE_P (T) || CLASS_TYPE_P (T))
+ 
+ /* Set CLASS_TYPE_P for T to VAL.  T must be a class, struct, or
+    union type.  */
+@@ -5057,6 +5060,7 @@
+ extern bool user_provided_p			(tree);
+ extern bool type_has_user_provided_constructor  (tree);
+ extern bool type_has_user_provided_default_constructor (tree);
++extern bool vbase_has_user_provided_move_assign (tree);
+ extern tree default_init_uninitialized_part (tree);
+ extern bool trivial_default_constructor_is_constexpr (tree);
+ extern bool type_has_constexpr_default_constructor (tree);
+@@ -5177,7 +5181,7 @@
+ extern void revert_static_member_fn		(tree);
+ extern void fixup_anonymous_aggr		(tree);
+ extern tree compute_array_index_type		(tree, tree, tsubst_flags_t);
+-extern tree check_default_argument		(tree, tree);
++extern tree check_default_argument		(tree, tree, tsubst_flags_t);
+ typedef int (*walk_namespaces_fn)		(tree, void *);
+ extern int walk_namespaces			(walk_namespaces_fn,
+ 						 void *);
+@@ -5452,7 +5456,8 @@
+ extern tree most_specialized_instantiation	(tree);
+ extern void print_candidates			(tree);
+ extern void instantiate_pending_templates	(int);
+-extern tree tsubst_default_argument		(tree, tree, tree);
++extern tree tsubst_default_argument		(tree, tree, tree,
++						 tsubst_flags_t);
+ extern tree tsubst (tree, tree, tsubst_flags_t, tree);
+ extern tree tsubst_copy_and_build		(tree, tree, tsubst_flags_t,
+ 						 tree, bool, bool);
+@@ -5585,6 +5590,7 @@
+ extern void stop_deferring_access_checks	(void);
+ extern void pop_deferring_access_checks		(void);
+ extern vec<deferred_access_check, va_gc> *get_deferred_access_checks (void);
++extern void reopen_deferring_access_checks (vec<deferred_access_check, va_gc> *);
+ extern void pop_to_parent_deferring_access_checks (void);
+ extern bool perform_access_checks (vec<deferred_access_check, va_gc> *,
+ 				   tsubst_flags_t);
+diff -Naur gcc-4.8.1.orig/gcc/cp/cvt.c gcc-4.8.1/gcc/cp/cvt.c
+--- gcc-4.8.1.orig/gcc/cp/cvt.c	2013-02-20 03:02:35.000000000 -0600
++++ gcc-4.8.1/gcc/cp/cvt.c	2013-08-20 07:59:37.559809000 -0500
+@@ -620,6 +620,9 @@
+ 
+   if (TREE_TYPE (expr) == type)
+     return expr;
++
++  if (TREE_CODE (expr) == SIZEOF_EXPR)
++    expr = maybe_constant_value (expr);
+   
+   result = cp_convert (type, expr, complain);
+ 
+@@ -1580,17 +1583,6 @@
+       if (DECL_NONCONVERTING_P (cand))
+ 	continue;
+ 
+-      if (TREE_CODE (cand) == TEMPLATE_DECL)
+-	{
+-	  if (complain)
+-	    {
+-	      error ("ambiguous default type conversion from %qT",
+-		     basetype);
+-	      error ("  candidate conversions include %qD", cand);
+-	    }
+-	  return error_mark_node;
+-	}
+-
+       candidate = non_reference (TREE_TYPE (TREE_TYPE (cand)));
+ 
+       switch (TREE_CODE (candidate))
+@@ -1624,11 +1616,23 @@
+ 	  break;
+ 
+ 	default:
++	  /* A wildcard could be instantiated to match any desired
++	     type, but we can't deduce the template argument.  */
++	  if (WILDCARD_TYPE_P (candidate))
++	    win = true;
+ 	  break;
+ 	}
+ 
+       if (win)
+ 	{
++	  if (TREE_CODE (cand) == TEMPLATE_DECL)
++	    {
++	      if (complain)
++		error ("default type conversion can't deduce template"
++		       " argument for %qD", cand);
++	      return error_mark_node;
++	    }
++
+ 	  if (winner)
+ 	    {
+ 	      if (complain)
+diff -Naur gcc-4.8.1.orig/gcc/cp/decl.c gcc-4.8.1/gcc/cp/decl.c
+--- gcc-4.8.1.orig/gcc/cp/decl.c	2013-05-16 10:09:07.000000000 -0500
++++ gcc-4.8.1/gcc/cp/decl.c	2013-07-25 10:07:27.406614000 -0500
+@@ -10878,7 +10878,7 @@
+    DECL, if there is no DECL available.  */
+ 
+ tree
+-check_default_argument (tree decl, tree arg)
++check_default_argument (tree decl, tree arg, tsubst_flags_t complain)
+ {
+   tree var;
+   tree decl_type;
+@@ -10910,13 +10910,14 @@
+      A default argument expression is implicitly converted to the
+      parameter type.  */
+   ++cp_unevaluated_operand;
+-  perform_implicit_conversion_flags (decl_type, arg, tf_warning_or_error,
++  perform_implicit_conversion_flags (decl_type, arg, complain,
+ 				     LOOKUP_IMPLICIT);
+   --cp_unevaluated_operand;
+ 
+   if (warn_zero_as_null_pointer_constant
+       && TYPE_PTR_OR_PTRMEM_P (decl_type)
+       && null_ptr_cst_p (arg)
++      && (complain & tf_warning)
+       && maybe_warn_zero_as_null_pointer_constant (arg, input_location))
+     return nullptr_node;
+ 
+@@ -10930,10 +10931,14 @@
+   var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL);
+   if (var)
+     {
+-      if (DECL_NAME (var) == this_identifier)
+-	permerror (input_location, "default argument %qE uses %qD", arg, var);
+-      else
+-	error ("default argument %qE uses local variable %qD", arg, var);
++      if (complain & tf_warning_or_error)
++	{
++	  if (DECL_NAME (var) == this_identifier)
++	    permerror (input_location, "default argument %qE uses %qD",
++		       arg, var);
++	  else
++	    error ("default argument %qE uses local variable %qD", arg, var);
++	}
+       return error_mark_node;
+     }
+ 
+@@ -11084,7 +11089,7 @@
+ 	  if (any_error)
+ 	    init = NULL_TREE;
+ 	  else if (init && !processing_template_decl)
+-	    init = check_default_argument (decl, init);
++	    init = check_default_argument (decl, init, tf_warning_or_error);
+ 	}
+ 
+       DECL_CHAIN (decl) = decls;
+diff -Naur gcc-4.8.1.orig/gcc/cp/init.c gcc-4.8.1/gcc/cp/init.c
+--- gcc-4.8.1.orig/gcc/cp/init.c	2013-04-25 11:25:04.000000000 -0500
++++ gcc-4.8.1/gcc/cp/init.c	2013-07-13 20:06:02.832708000 -0500
+@@ -3524,6 +3524,8 @@
+ 
+       /* Clear out INIT so that we don't get confused below.  */
+       init = NULL_TREE;
++      /* Any elements without explicit initializers get {}.  */
++      explicit_value_init_p = true;
+     }
+   else if (from_array)
+     {
+diff -Naur gcc-4.8.1.orig/gcc/cp/method.c gcc-4.8.1/gcc/cp/method.c
+--- gcc-4.8.1.orig/gcc/cp/method.c	2013-02-12 14:47:15.000000000 -0600
++++ gcc-4.8.1/gcc/cp/method.c	2013-05-31 08:03:45.258613000 -0500
+@@ -1340,7 +1340,8 @@
+       if (diag && assign_p && move_p
+ 	  && BINFO_VIRTUAL_P (base_binfo)
+ 	  && rval && TREE_CODE (rval) == FUNCTION_DECL
+-	  && move_fn_p (rval) && !trivial_fn_p (rval))
++	  && move_fn_p (rval) && !trivial_fn_p (rval)
++	  && vbase_has_user_provided_move_assign (basetype))
+ 	warning (OPT_Wvirtual_move_assign,
+ 		 "defaulted move assignment for %qT calls a non-trivial "
+ 		 "move assignment operator for virtual base %qT",
+diff -Naur gcc-4.8.1.orig/gcc/cp/name-lookup.c gcc-4.8.1/gcc/cp/name-lookup.c
+--- gcc-4.8.1.orig/gcc/cp/name-lookup.c	2013-02-27 12:13:24.000000000 -0600
++++ gcc-4.8.1/gcc/cp/name-lookup.c	2013-08-17 20:07:02.824495000 -0500
+@@ -3015,8 +3015,10 @@
+   if (name == error_mark_node)
+     return false;
+ 
+-  /* Check for invalid member names.  */
+-  gcc_assert (TYPE_BEING_DEFINED (current_class_type));
++  /* Check for invalid member names.  But don't worry about a default
++     argument-scope lambda being pushed after the class is complete.  */
++  gcc_assert (TYPE_BEING_DEFINED (current_class_type)
++	      || LAMBDA_TYPE_P (TREE_TYPE (decl)));
+   /* Check that we're pushing into the right binding level.  */
+   gcc_assert (current_class_type == class_binding_level->this_entity);
+ 
+diff -Naur gcc-4.8.1.orig/gcc/cp/parser.c gcc-4.8.1/gcc/cp/parser.c
+--- gcc-4.8.1.orig/gcc/cp/parser.c	2013-05-14 15:37:48.000000000 -0500
++++ gcc-4.8.1/gcc/cp/parser.c	2013-07-25 10:07:27.406614000 -0500
+@@ -5438,11 +5438,18 @@
+ 	/* Restore the old message.  */
+ 	parser->type_definition_forbidden_message = saved_message;
+ 
++	bool saved_greater_than_is_operator_p
++	  = parser->greater_than_is_operator_p;
++	parser->greater_than_is_operator_p = true;
++
+ 	/* And the expression which is being cast.  */
+ 	cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN);
+ 	expression = cp_parser_expression (parser, /*cast_p=*/true, & idk);
+ 	cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN);
+ 
++	parser->greater_than_is_operator_p
++	  = saved_greater_than_is_operator_p;
++
+ 	/* Only type conversions to integral or enumeration types
+ 	   can be used in constant-expressions.  */
+ 	if (!cast_valid_in_integral_constant_expression_p (type)
+@@ -9595,10 +9602,7 @@
+ 	range_expr = error_mark_node;
+       stmt = begin_range_for_stmt (scope, init);
+       finish_range_for_decl (stmt, range_decl, range_expr);
+-      if (range_expr != error_mark_node
+-	  && !type_dependent_expression_p (range_expr)
+-	  /* The length of an array might be dependent.  */
+-	  && COMPLETE_TYPE_P (complete_type (TREE_TYPE (range_expr)))
++      if (!type_dependent_expression_p (range_expr)
+ 	  /* do_auto_deduction doesn't mess with template init-lists.  */
+ 	  && !BRACE_ENCLOSED_INITIALIZER_P (range_expr))
+ 	do_range_for_auto_deduction (range_decl, range_expr);
+@@ -16982,6 +16986,11 @@
+ {
+   cp_ref_qualifier ref_qual = REF_QUAL_NONE;
+   cp_token *token = cp_lexer_peek_token (parser->lexer);
++
++  /* Don't try to parse bitwise '&' as a ref-qualifier (c++/57532).  */
++  if (cxx_dialect < cxx11 && cp_parser_parsing_tentatively (parser))
++    return ref_qual;
++
+   switch (token->type)
+     {
+     case CPP_AND:
+@@ -22557,7 +22566,8 @@
+       /* In a non-template class, check conversions now.  In a template,
+ 	 we'll wait and instantiate these as needed.  */
+       if (TREE_CODE (decl) == PARM_DECL)
+-	parsed_arg = check_default_argument (parmtype, parsed_arg);
++	parsed_arg = check_default_argument (parmtype, parsed_arg,
++					     tf_warning_or_error);
+       else
+ 	{
+ 	  int flags = LOOKUP_IMPLICIT;
+diff -Naur gcc-4.8.1.orig/gcc/cp/pt.c gcc-4.8.1/gcc/cp/pt.c
+--- gcc-4.8.1.orig/gcc/cp/pt.c	2013-05-24 08:25:44.000000000 -0500
++++ gcc-4.8.1/gcc/cp/pt.c	2013-07-25 10:07:27.406614000 -0500
+@@ -138,6 +138,7 @@
+ 					     tree);
+ static int type_unification_real (tree, tree, tree, const tree *,
+ 				  unsigned int, int, unification_kind_t, int,
++				  vec<deferred_access_check, va_gc> **,
+ 				  bool);
+ static void note_template_header (int);
+ static tree convert_nontype_argument_function (tree, tree);
+@@ -183,7 +184,7 @@
+ 					   tree, tree);
+ static bool template_template_parm_bindings_ok_p (tree, tree);
+ static int template_args_equal (tree, tree);
+-static void tsubst_default_arguments (tree);
++static void tsubst_default_arguments (tree, tsubst_flags_t);
+ static tree for_each_template_parm_r (tree *, int *, void *);
+ static tree copy_default_args_to_explicit_spec_1 (tree, tree);
+ static void copy_default_args_to_explicit_spec (tree);
+@@ -5612,6 +5613,10 @@
+ 	  else
+ 	    return NULL_TREE;
+ 	}
++
++      /* Avoid typedef problems.  */
++      if (TREE_TYPE (expr) != type)
++	expr = fold_convert (type, expr);
+     }
+   /* [temp.arg.nontype]/5, bullet 2
+ 
+@@ -9859,7 +9864,7 @@
+    FN), which has the indicated TYPE.  */
+ 
+ tree
+-tsubst_default_argument (tree fn, tree type, tree arg)
++tsubst_default_argument (tree fn, tree type, tree arg, tsubst_flags_t complain)
+ {
+   tree saved_class_ptr = NULL_TREE;
+   tree saved_class_ref = NULL_TREE;
+@@ -9899,7 +9904,7 @@
+      stack.  */
+   ++function_depth;
+   arg = tsubst_expr (arg, DECL_TI_ARGS (fn),
+-		     tf_warning_or_error, NULL_TREE,
++		     complain, NULL_TREE,
+ 		     /*integral_constant_expression_p=*/false);
+   --function_depth;
+   pop_deferring_access_checks();
+@@ -9911,12 +9916,13 @@
+       cp_function_chain->x_current_class_ref = saved_class_ref;
+     }
+ 
+-  if (errorcount+sorrycount > errs)
++  if (errorcount+sorrycount > errs
++      && (complain & tf_warning_or_error))
+     inform (input_location,
+ 	    "  when instantiating default argument for call to %D", fn);
+ 
+   /* Make sure the default argument is reasonable.  */
+-  arg = check_default_argument (type, arg);
++  arg = check_default_argument (type, arg, complain);
+ 
+   pop_access_scope (fn);
+ 
+@@ -9926,7 +9932,7 @@
+ /* Substitute into all the default arguments for FN.  */
+ 
+ static void
+-tsubst_default_arguments (tree fn)
++tsubst_default_arguments (tree fn, tsubst_flags_t complain)
+ {
+   tree arg;
+   tree tmpl_args;
+@@ -9947,7 +9953,8 @@
+     if (TREE_PURPOSE (arg))
+       TREE_PURPOSE (arg) = tsubst_default_argument (fn,
+ 						    TREE_VALUE (arg),
+-						    TREE_PURPOSE (arg));
++						    TREE_PURPOSE (arg),
++						    complain);
+ }
+ 
+ /* Substitute the ARGS into the T, which is a _DECL.  Return the
+@@ -10298,7 +10305,7 @@
+ 	    if (!member
+ 		&& !PRIMARY_TEMPLATE_P (gen_tmpl)
+ 		&& !uses_template_parms (argvec))
+-	      tsubst_default_arguments (r);
++	      tsubst_default_arguments (r, complain);
+ 	  }
+ 	else
+ 	  DECL_TEMPLATE_INFO (r) = NULL_TREE;
+@@ -12507,6 +12514,9 @@
+     case TYPE_DECL:
+       return tsubst (t, args, complain, in_decl);
+ 
++    case USING_DECL:
++      t = DECL_NAME (t);
++      /* Fall through.  */
+     case IDENTIFIER_NODE:
+       if (IDENTIFIER_TYPENAME_P (t))
+ 	{
+@@ -14974,7 +14984,6 @@
+     return error_mark_node;
+   tinst = build_tree_list (fn, NULL_TREE);
+   ++deduction_depth;
+-  push_deferring_access_checks (dk_deferred);
+ 
+   gcc_assert (TREE_CODE (fn) == TEMPLATE_DECL);
+ 
+@@ -15066,8 +15075,13 @@
+ 	}
+       processing_template_decl += incomplete;
+       input_location = DECL_SOURCE_LOCATION (fn);
++      /* Ignore any access checks; we'll see them again in
++	 instantiate_template and they might have the wrong
++	 access path at this point.  */
++      push_deferring_access_checks (dk_deferred);
+       fntype = tsubst (TREE_TYPE (fn), explicit_targs,
+ 		       complain | tf_partial, NULL_TREE);
++      pop_deferring_access_checks ();
+       input_location = loc;
+       processing_template_decl -= incomplete;
+       pop_tinst_level ();
+@@ -15075,12 +15089,6 @@
+       if (fntype == error_mark_node)
+ 	goto fail;
+ 
+-      /* Throw away these access checks; we'll see them again in
+-	 instantiate_template and they might have the wrong
+-	 access path at this point.  */
+-      pop_deferring_access_checks ();
+-      push_deferring_access_checks (dk_deferred);
+-
+       /* Place the explicitly specified arguments in TARGS.  */
+       for (i = NUM_TMPL_ARGS (explicit_targs); i--;)
+ 	TREE_VEC_ELT (targs, i) = TREE_VEC_ELT (explicit_targs, i);
+@@ -15106,9 +15114,15 @@
+      callers must be ready to deal with unification failures in any
+      event.  */
+ 
++  /* type_unification_real will pass back any access checks from default
++     template argument substitution.  */
++  vec<deferred_access_check, va_gc> *checks;
++  checks = NULL;
++
+   ok = !type_unification_real (DECL_INNERMOST_TEMPLATE_PARMS (fn),
+ 			       targs, parms, args, nargs, /*subr=*/0,
+-			       strict, flags, explain_p);
++			       strict, flags, &checks, explain_p);
++
+   if (!ok)
+     goto fail;
+ 
+@@ -15155,16 +15169,23 @@
+       excessive_deduction_depth = true;
+       goto fail;
+     }
++
++  /* Also collect access checks from the instantiation.  */
++  reopen_deferring_access_checks (checks);
++
+   decl = instantiate_template (fn, targs, complain);
++
++  checks = get_deferred_access_checks ();
++  pop_deferring_access_checks ();
++
+   pop_tinst_level ();
+ 
+   if (decl == error_mark_node)
+     goto fail;
+ 
+-  /* Now perform any access checks encountered during deduction, such as
+-     for default template arguments.  */
++  /* Now perform any access checks encountered during substitution.  */
+   push_access_scope (decl);
+-  ok = perform_deferred_access_checks (complain);
++  ok = perform_access_checks (checks, complain);
+   pop_access_scope (decl);
+   if (!ok)
+     goto fail;
+@@ -15193,7 +15214,6 @@
+   r = decl;
+ 
+  fail:
+-  pop_deferring_access_checks ();
+   --deduction_depth;
+   if (excessive_deduction_depth)
+     {
+@@ -15454,7 +15474,10 @@
+ 
+    If SUBR is 1, we're being called recursively (to unify the
+    arguments of a function or method parameter of a function
+-   template). */
++   template).
++
++   CHECKS is a pointer to a vector of access checks encountered while
++   substituting default template arguments.  */
+ 
+ static int
+ type_unification_real (tree tparms,
+@@ -15465,6 +15488,7 @@
+ 		       int subr,
+ 		       unification_kind_t strict,
+ 		       int flags,
++		       vec<deferred_access_check, va_gc> **checks,
+ 		       bool explain_p)
+ {
+   tree parm, arg;
+@@ -15604,6 +15628,7 @@
+ 	    {
+ 	      tree parm = TREE_VALUE (TREE_VEC_ELT (tparms, i));
+ 	      tree arg = TREE_PURPOSE (TREE_VEC_ELT (tparms, i));
++	      reopen_deferring_access_checks (*checks);
+ 	      location_t save_loc = input_location;
+ 	      if (DECL_P (parm))
+ 		input_location = DECL_SOURCE_LOCATION (parm);
+@@ -15611,6 +15636,8 @@
+ 	      arg = convert_template_argument (parm, arg, targs, complain,
+ 					       i, NULL_TREE);
+ 	      input_location = save_loc;
++	      *checks = get_deferred_access_checks ();
++	      pop_deferring_access_checks ();
+ 	      if (arg == error_mark_node)
+ 		return 1;
+ 	      else
+@@ -17078,7 +17105,7 @@
+ 
+ 	return type_unification_real (tparms, targs, TYPE_ARG_TYPES (parm),
+ 				      args, nargs, 1, DEDUCE_EXACT,
+-				      LOOKUP_NORMAL, explain_p);
++				      LOOKUP_NORMAL, NULL, explain_p);
+       }
+ 
+     case OFFSET_TYPE:
+@@ -19888,6 +19915,29 @@
+       && VAR_HAD_UNKNOWN_BOUND (expression))
+     return true;
+ 
++  /* An array of unknown bound depending on a variadic parameter, eg:
++
++     template<typename... Args>
++       void foo (Args... args)
++       {
++         int arr[] = { args... };
++       }
++
++     template<int... vals>
++       void bar ()
++       {
++         int arr[] = { vals... };
++       }
++
++     If the array has no length and has an initializer, it must be that
++     we couldn't determine its length in cp_complete_array_type because
++     it is dependent.  */
++  if (TREE_CODE (expression) == VAR_DECL
++      && TREE_CODE (TREE_TYPE (expression)) == ARRAY_TYPE
++      && !TYPE_DOMAIN (TREE_TYPE (expression))
++      && DECL_INITIAL (expression))
++   return true;
++
+   if (TREE_TYPE (expression) == unknown_type_node)
+     {
+       if (TREE_CODE (expression) == ADDR_EXPR)
+@@ -20626,7 +20676,7 @@
+     = build_tree_list (NULL_TREE, TYPE_NAME (auto_node));
+   val = type_unification_real (tparms, targs, parms, args, 1, 0,
+ 			       DEDUCE_CALL, LOOKUP_NORMAL,
+-			       /*explain_p=*/false);
++			       NULL, /*explain_p=*/false);
+   if (val > 0)
+     {
+       if (processing_template_decl)
+diff -Naur gcc-4.8.1.orig/gcc/cp/semantics.c gcc-4.8.1/gcc/cp/semantics.c
+--- gcc-4.8.1.orig/gcc/cp/semantics.c	2013-05-14 07:51:17.000000000 -0500
++++ gcc-4.8.1/gcc/cp/semantics.c	2013-07-30 11:58:28.826601000 -0500
+@@ -155,6 +155,17 @@
+     }
+ }
+ 
++/* Save the current deferred access states and start deferred access
++   checking, continuing the set of deferred checks in CHECKS.  */
++
++void
++reopen_deferring_access_checks (vec<deferred_access_check, va_gc> * checks)
++{
++  push_deferring_access_checks (dk_deferred);
++  if (!deferred_access_no_check)
++    deferred_access_stack->last().deferred_access_checks = checks;
++}
++
+ /* Resume deferring access checks again after we stopped doing
+    this previously.  */
+ 
+@@ -5945,7 +5956,7 @@
+       || TREE_CODE (t) == MODIFY_EXPR)
+     {
+       member = TREE_OPERAND (t, 0);
+-      init = unshare_expr (TREE_OPERAND (t, 1));
++      init = break_out_target_exprs (TREE_OPERAND (t, 1));
+     }
+   else if (TREE_CODE (t) == CALL_EXPR)
+     {
+@@ -5953,7 +5964,7 @@
+       /* We don't use build_cplus_new here because it complains about
+ 	 abstract bases.  Leaving the call unwrapped means that it has the
+ 	 wrong type, but cxx_eval_constant_expression doesn't care.  */
+-      init = unshare_expr (t);
++      init = break_out_target_exprs (t);
+     }
+   else if (TREE_CODE (t) == DECL_EXPR)
+     /* Declaring a temporary, don't add it to the CONSTRUCTOR.  */
+@@ -6190,7 +6201,7 @@
+       }
+ 
+     case RETURN_EXPR:
+-      return unshare_expr (TREE_OPERAND (body, 0));
++      return break_out_target_exprs (TREE_OPERAND (body, 0));
+ 
+     case DECL_EXPR:
+       if (TREE_CODE (DECL_EXPR_DECL (body)) == USING_DECL)
+@@ -7635,11 +7646,6 @@
+     {
+       tree sub = op0;
+       STRIP_NOPS (sub);
+-      if (TREE_CODE (sub) == POINTER_PLUS_EXPR)
+-	{
+-	  sub = TREE_OPERAND (sub, 0);
+-	  STRIP_NOPS (sub);
+-	}
+       if (TREE_CODE (sub) == ADDR_EXPR)
+ 	{
+ 	  /* We couldn't fold to a constant value.  Make sure it's not
+@@ -7990,6 +7996,7 @@
+     case UNGT_EXPR:
+     case UNGE_EXPR:
+     case UNEQ_EXPR:
++    case LTGT_EXPR:
+     case RANGE_EXPR:
+     case COMPLEX_EXPR:
+       r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
+@@ -8846,6 +8853,12 @@
+ 	}
+       return false;
+ 
++    case OMP_ATOMIC:
++    case OMP_ATOMIC_READ:
++    case OMP_ATOMIC_CAPTURE_OLD:
++    case OMP_ATOMIC_CAPTURE_NEW:
++      return false;
++
+     default:
+       if (objc_is_property_ref (t))
+ 	return false;
+@@ -9065,7 +9078,8 @@
+ {
+   tree type;
+   if (type_dependent_expression_p (expr)
+-      && !(TREE_TYPE (expr) && TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE))
++      && !(TREE_TYPE (expr) && TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE
++	   && !type_uses_auto (TREE_TYPE (expr))))
+     {
+       type = cxx_make_type (DECLTYPE_TYPE);
+       DECLTYPE_TYPE_EXPR (type) = expr;
+diff -Naur gcc-4.8.1.orig/gcc/cp/tree.c gcc-4.8.1/gcc/cp/tree.c
+--- gcc-4.8.1.orig/gcc/cp/tree.c	2013-05-24 08:25:51.000000000 -0500
++++ gcc-4.8.1/gcc/cp/tree.c	2013-08-06 20:18:57.648578000 -0500
+@@ -1220,6 +1220,8 @@
+ 	    result =
+ 	      build_method_type_directly (class_type, type,
+ 					  TREE_CHAIN (arg_types));
++	    result
++	      = build_ref_qualified_type (result, type_memfn_rqual (t));
+ 	  }
+ 	else
+ 	  {
+diff -Naur gcc-4.8.1.orig/gcc/cp/typeck2.c gcc-4.8.1/gcc/cp/typeck2.c
+--- gcc-4.8.1.orig/gcc/cp/typeck2.c	2013-04-11 11:05:02.000000000 -0500
++++ gcc-4.8.1/gcc/cp/typeck2.c	2013-07-30 08:30:12.307006000 -0500
+@@ -262,7 +262,7 @@
+      so that we can check again once it is completed. This makes sense
+      only for objects for which we have a declaration or at least a
+      name.  */
+-  if (!COMPLETE_TYPE_P (type))
++  if (!COMPLETE_TYPE_P (type) && (complain & tf_error))
+     {
+       void **slot;
+       struct pending_abstract_type *pat;
+diff -Naur gcc-4.8.1.orig/gcc/cp/typeck.c gcc-4.8.1/gcc/cp/typeck.c
+--- gcc-4.8.1.orig/gcc/cp/typeck.c	2013-05-13 14:34:15.000000000 -0500
++++ gcc-4.8.1/gcc/cp/typeck.c	2013-07-09 12:52:34.273079000 -0500
+@@ -8307,7 +8307,8 @@
+      && TREE_CODE (retval) == VAR_DECL
+      && DECL_CONTEXT (retval) == current_function_decl
+      && ! TREE_STATIC (retval)
+-     && ! DECL_ANON_UNION_VAR_P (retval)
++     /* And not a lambda or anonymous union proxy.  */
++     && !DECL_HAS_VALUE_EXPR_P (retval)
+      && (DECL_ALIGN (retval) >= DECL_ALIGN (result))
+      /* The cv-unqualified type of the returned value must be the
+         same as the cv-unqualified return type of the
+@@ -8352,7 +8353,8 @@
+          Note that these conditions are similar to, but not as strict as,
+ 	 the conditions for the named return value optimization.  */
+       if ((cxx_dialect != cxx98)
+-          && (TREE_CODE (retval) == VAR_DECL
++          && ((TREE_CODE (retval) == VAR_DECL
++	       && !DECL_HAS_VALUE_EXPR_P (retval))
+ 	      || TREE_CODE (retval) == PARM_DECL)
+ 	  && DECL_CONTEXT (retval) == current_function_decl
+ 	  && !TREE_STATIC (retval)
+diff -Naur gcc-4.8.1.orig/gcc/DATESTAMP gcc-4.8.1/gcc/DATESTAMP
+--- gcc-4.8.1.orig/gcc/DATESTAMP	2013-05-30 19:16:35.000000000 -0500
++++ gcc-4.8.1/gcc/DATESTAMP	2013-08-27 19:16:35.499545000 -0500
+@@ -1 +1 @@
+-20130531
++20130828
+diff -Naur gcc-4.8.1.orig/gcc/doc/avr-mmcu.texi gcc-4.8.1/gcc/doc/avr-mmcu.texi
+--- gcc-4.8.1.orig/gcc/doc/avr-mmcu.texi	2013-02-28 03:03:09.000000000 -0600
++++ gcc-4.8.1/gcc/doc/avr-mmcu.texi	2013-07-10 07:36:36.732157000 -0500
+@@ -38,7 +38,7 @@
+ 
+ @item avr5
+ ``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
+-@*@var{mcu}@tie{}= @code{ata5790}, @code{ata5790n}, @code{ata5795}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega26hvg}, @code{atmega32}, @code{atmega32a}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega48hvf}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega64m1}, @code{atmega64rfa2}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
++@*@var{mcu}@tie{}= @code{ata5790}, @code{ata5790n}, @code{ata5795}, @code{atmega16}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16hvbrevb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega164pa}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega165pa}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega168pa}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega26hvg}, @code{atmega32}, @code{atmega32a}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32hvbrevb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega3250pa}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega3290pa}, @code{atmega406}, @code{atmega48hvf}, @code{atmega64}, @code{atmega64a}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{atmega64rfa2}, @code{atmega64rfr2}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega6490a}, @code{atmega6490p}, @code{at90can32}, @code{at90can64}, @code{at90pwm161}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
+ 
+ @item avr51
+ ``Enhanced'' devices with 128@tie{}KiB of program memory.
+diff -Naur gcc-4.8.1.orig/gcc/doc/cpp.texi gcc-4.8.1/gcc/doc/cpp.texi
+--- gcc-4.8.1.orig/gcc/doc/cpp.texi	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/doc/cpp.texi	2013-06-19 04:03:22.324781000 -0500
+@@ -1926,11 +1926,9 @@
+ This macro is defined when the C++ compiler is in use.  You can use
+ @code{__cplusplus} to test whether a header is compiled by a C compiler
+ or a C++ compiler.  This macro is similar to @code{__STDC_VERSION__}, in
+-that it expands to a version number.  A fully conforming implementation
+-of the 1998 C++ standard will define this macro to @code{199711L}.  The
+-GNU C++ compiler is not yet fully conforming, so it uses @code{1}
+-instead.  It is hoped to complete the implementation of standard C++
+-in the near future.
++that it expands to a version number.  Depending on the language standard
++selected, the value of the macro is @code{199711L}, as mandated by the
++1998 C++ standard, or @code{201103L}, per the 2011 C++ standard.
+ 
+ @item __OBJC__
+ This macro is defined, with value 1, when the Objective-C compiler is in
+diff -Naur gcc-4.8.1.orig/gcc/doc/extend.texi gcc-4.8.1/gcc/doc/extend.texi
+--- gcc-4.8.1.orig/gcc/doc/extend.texi	2013-03-28 09:07:55.000000000 -0500
++++ gcc-4.8.1/gcc/doc/extend.texi	2013-08-02 10:41:10.548493000 -0500
+@@ -8786,6 +8786,7 @@
+ * PowerPC Built-in Functions::
+ * PowerPC AltiVec/VSX Built-in Functions::
+ * RX Built-in Functions::
++* S/390 System z Built-in Functions::
+ * SH Built-in Functions::
+ * SPARC VIS Built-in Functions::
+ * SPU Built-in Functions::
+@@ -14026,6 +14027,120 @@
+ Generates the @code{wait} machine instruction.
+ @end deftypefn
+ 
++@node S/390 System z Built-in Functions
++@subsection S/390 System z Built-in Functions
++@deftypefn {Built-in Function} int __builtin_tbegin (void*)
++Generates the @code{tbegin} machine instruction starting a
++non-constraint hardware transaction.  If the parameter is non-NULL the
++memory area is used to store the transaction diagnostic buffer and
++will be passed as first operand to @code{tbegin}.  This buffer can be
++defined using the @code{struct __htm_tdb} C struct defined in
++@code{htmintrin.h} and must reside on a double-word boundary.  The
++second tbegin operand is set to @code{0xff0c}. This enables
++save/restore of all GPRs and disables aborts for FPR and AR
++manipulations inside the transaction body.  The condition code set by
++the tbegin instruction is returned as integer value.  The tbegin
++instruction by definition overwrites the content of all FPRs.  The
++compiler will generate code which saves and restores the FPRs.  For
++soft-float code it is recommended to used the @code{*_nofloat}
++variant.  In order to prevent a TDB from being written it is required
++to pass an constant zero value as parameter.  Passing the zero value
++through a variable is not sufficient.  Although modifications of
++access registers inside the transaction will not trigger an
++transaction abort it is not supported to actually modify them.  Access
++registers do not get saved when entering a transaction. They will have
++undefined state when reaching the abort code.
++@end deftypefn
++
++Macros for the possible return codes of tbegin are defined in the
++@code{htmintrin.h} header file:
++
++@table @code
++@item _HTM_TBEGIN_STARTED
++@code{tbegin} has been executed as part of normal processing.  The
++transaction body is supposed to be executed.
++@item _HTM_TBEGIN_INDETERMINATE
++The transaction was aborted due to an indeterminate condition which
++might be persistent.
++@item _HTM_TBEGIN_TRANSIENT
++The transaction aborted due to a transient failure.  The transaction
++should be re-executed in that case.
++@item _HTM_TBEGIN_PERSISTENT
++The transaction aborted due to a persistent failure.  Re-execution
++under same circumstances will not be productive.
++@end table
++
++@defmac _HTM_FIRST_USER_ABORT_CODE
++The @code{_HTM_FIRST_USER_ABORT_CODE} defined in @code{htmintrin.h}
++specifies the first abort code which can be used for
++@code{__builtin_tabort}.  Values below this threshold are reserved for
++machine use.
++@end defmac
++
++@deftp {Data type} {struct __htm_tdb}
++The @code{struct __htm_tdb} defined in @code{htmintrin.h} describes
++the structure of the transaction diagnostic block as specified in the
++Principles of Operation manual chapter 5-91.
++@end deftp
++
++@deftypefn {Built-in Function} int __builtin_tbegin_nofloat (void*)
++Same as @code{__builtin_tbegin} but without FPR saves and restores.
++Using this variant in code making use of FPRs will leave the FPRs in
++undefined state when entering the transaction abort handler code.
++@end deftypefn
++
++@deftypefn {Built-in Function} int __builtin_tbegin_retry (void*, int)
++In addition to @code{__builtin_tbegin} a loop for transient failures
++is generated.  If tbegin returns a condition code of 2 the transaction
++will be retried as often as specified in the second argument.  The
++perform processor assist instruction is used to tell the CPU about the
++number of fails so far.
++@end deftypefn
++
++@deftypefn {Built-in Function} int __builtin_tbegin_retry_nofloat (void*, int)
++Same as @code{__builtin_tbegin_retry} but without FPR saves and
++restores.  Using this variant in code making use of FPRs will leave
++the FPRs in undefined state when entering the transaction abort
++handler code.
++@end deftypefn
++
++@deftypefn {Built-in Function} void __builtin_tbeginc (void)
++Generates the @code{tbeginc} machine instruction starting a constraint
++hardware transaction.  The second operand is set to @code{0xff08}.
++@end deftypefn
++
++@deftypefn {Built-in Function} int __builtin_tend (void)
++Generates the @code{tend} machine instruction finishing a transaction
++and making the changes visible to other threads.  The condition code
++generated by tend is returned as integer value.
++@end deftypefn
++
++@deftypefn {Built-in Function} void __builtin_tabort (int)
++Generates the @code{tabort} machine instruction with the specified
++abort code.  Abort codes from 0 through 255 are reserved and will
++result in an error message.
++@end deftypefn
++
++@deftypefn {Built-in Function} void __builtin_tx_assist (int)
++Generates the @code{ppa rX,rY,1} machine instruction.  Where the
++integer parameter is loaded into rX and a value of zero is loaded into
++rY.  The integer parameter specifies the number of times the
++transaction repeatedly aborted.
++@end deftypefn
++
++@deftypefn {Built-in Function} int __builtin_tx_nesting_depth (void)
++Generates the @code{etnd} machine instruction.  The current nesting
++depth is returned as integer value.  For a nesting depth of 0 the code
++is not executed as part of an transaction.
++@end deftypefn
++
++@deftypefn {Built-in Function} void __builtin_non_tx_store (unsigned long long *, unsigned long long)
++
++Generates the @code{ntstg} machine instruction.  The second argument
++is written to the first arguments location.  The store operation will
++not be rolled-back in case of an transaction abort.
++@end deftypefn
++
+ @node SH Built-in Functions
+ @subsection SH Built-in Functions
+ The following built-in functions are supported on the SH1, SH2, SH3 and SH4
+diff -Naur gcc-4.8.1.orig/gcc/doc/invoke.texi gcc-4.8.1/gcc/doc/invoke.texi
+--- gcc-4.8.1.orig/gcc/doc/invoke.texi	2013-03-29 08:41:29.000000000 -0500
++++ gcc-4.8.1/gcc/doc/invoke.texi	2013-06-19 14:55:50.111258000 -0500
+@@ -13726,8 +13726,13 @@
+ SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C instruction
+ set support.
+ 
++@item core-avx2
++Intel Core CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
++SSE4.1, SSE4.2, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2
++and F16C instruction set support.
++
+ @item atom
+-Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
++Intel Atom CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3 and SSSE3
+ instruction set support.
+ 
+ @item k6
+diff -Naur gcc-4.8.1.orig/gcc/file-find.c gcc-4.8.1/gcc/file-find.c
+--- gcc-4.8.1.orig/gcc/file-find.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/file-find.c	2013-06-19 15:59:25.231992000 -0500
+@@ -31,7 +31,7 @@
+ }
+ 
+ char *
+-find_a_file (struct path_prefix *pprefix, const char *name)
++find_a_file (struct path_prefix *pprefix, const char *name, int mode)
+ {
+   char *temp;
+   struct prefix_list *pl;
+@@ -50,7 +50,7 @@
+ 
+   if (IS_ABSOLUTE_PATH (name))
+     {
+-      if (access (name, X_OK) == 0)
++      if (access (name, mode) == 0)
+ 	{
+ 	  strcpy (temp, name);
+ 
+@@ -66,7 +66,7 @@
+       strcpy (temp, name);
+ 	strcat (temp, HOST_EXECUTABLE_SUFFIX);
+ 
+-	if (access (temp, X_OK) == 0)
++	if (access (temp, mode) == 0)
+ 	  return temp;
+ #endif
+ 
+@@ -83,7 +83,7 @@
+ 
+ 	if (stat (temp, &st) >= 0
+ 	    && ! S_ISDIR (st.st_mode)
+-	    && access (temp, X_OK) == 0)
++	    && access (temp, mode) == 0)
+ 	  return temp;
+ 
+ #ifdef HOST_EXECUTABLE_SUFFIX
+@@ -93,7 +93,7 @@
+ 
+ 	if (stat (temp, &st) >= 0
+ 	    && ! S_ISDIR (st.st_mode)
+-	    && access (temp, X_OK) == 0)
++	    && access (temp, mode) == 0)
+ 	  return temp;
+ #endif
+       }
+diff -Naur gcc-4.8.1.orig/gcc/file-find.h gcc-4.8.1/gcc/file-find.h
+--- gcc-4.8.1.orig/gcc/file-find.h	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/file-find.h	2013-06-19 15:59:25.231992000 -0500
+@@ -38,7 +38,7 @@
+ };
+ 
+ extern void find_file_set_debug (bool);
+-extern char *find_a_file (struct path_prefix *, const char *);
++extern char *find_a_file (struct path_prefix *, const char *, int);
+ extern void add_prefix (struct path_prefix *, const char *);
+ extern void prefix_from_env (const char *, struct path_prefix *);
+ extern void prefix_from_string (const char *, struct path_prefix *);
+diff -Naur gcc-4.8.1.orig/gcc/fortran/interface.c gcc-4.8.1/gcc/fortran/interface.c
+--- gcc-4.8.1.orig/gcc/fortran/interface.c	2013-04-26 14:20:55.000000000 -0500
++++ gcc-4.8.1/gcc/fortran/interface.c	2013-05-31 13:10:03.669091000 -0500
+@@ -1024,7 +1024,8 @@
+ 			     bool type_must_agree, char *errmsg, int err_len)
+ {
+   /* Check type and rank.  */
+-  if (type_must_agree && !compare_type_rank (s2, s1))
++  if (type_must_agree &&
++      (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1)))
+     {
+       snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
+ 		s1->name);
+diff -Naur gcc-4.8.1.orig/gcc/fortran/match.c gcc-4.8.1/gcc/fortran/match.c
+--- gcc-4.8.1.orig/gcc/fortran/match.c	2013-04-18 13:20:22.000000000 -0500
++++ gcc-4.8.1/gcc/fortran/match.c	2013-08-24 04:12:21.843607000 -0500
+@@ -5142,7 +5142,6 @@
+ {
+   gfc_ref *ref;
+   gfc_symbol *assoc_sym;
+-  int i;
+ 
+   assoc_sym = associate->symtree->n.sym;
+ 
+@@ -5153,9 +5152,8 @@
+   while (ref && ref->next)
+     ref = ref->next;
+ 
+-  if (selector->ts.type == BT_CLASS
+-	&& CLASS_DATA (selector)->as
+-	&& ref && ref->type == REF_ARRAY)
++  if (selector->ts.type == BT_CLASS && CLASS_DATA (selector)->as
++      && ref && ref->type == REF_ARRAY)
+     {
+       /* Ensure that the array reference type is set.  We cannot use
+ 	 gfc_resolve_expr at this point, so the usable parts of
+@@ -5163,7 +5161,7 @@
+       if (ref->u.ar.type == AR_UNKNOWN)
+ 	{
+ 	  ref->u.ar.type = AR_ELEMENT;
+-	  for (i = 0; i < ref->u.ar.dimen + ref->u.ar.codimen; i++)
++	  for (int i = 0; i < ref->u.ar.dimen + ref->u.ar.codimen; i++)
+ 	    if (ref->u.ar.dimen_type[i] == DIMEN_RANGE
+ 		|| ref->u.ar.dimen_type[i] == DIMEN_VECTOR
+ 		|| (ref->u.ar.dimen_type[i] == DIMEN_UNKNOWN
+@@ -5182,37 +5180,19 @@
+ 	selector->rank = 0;
+     }
+ 
+-  if (selector->ts.type != BT_CLASS)
++  if (selector->rank)
+     {
+-      /* The correct class container has to be available.  */
+-      if (selector->rank)
+-	{
+-	  assoc_sym->attr.dimension = 1;
+-	  assoc_sym->as = gfc_get_array_spec ();
+-	  assoc_sym->as->rank = selector->rank;
+-	  assoc_sym->as->type = AS_DEFERRED;
+-	}
+-      else
+-	assoc_sym->as = NULL;
+-
+-      assoc_sym->ts.type = BT_CLASS;
+-      assoc_sym->ts.u.derived = selector->ts.u.derived;
+-      assoc_sym->attr.pointer = 1;
+-      gfc_build_class_symbol (&assoc_sym->ts, &assoc_sym->attr,
+-			      &assoc_sym->as, false);
++      assoc_sym->attr.dimension = 1;
++      assoc_sym->as = gfc_get_array_spec ();
++      assoc_sym->as->rank = selector->rank;
++      assoc_sym->as->type = AS_DEFERRED;
+     }
+   else
++    assoc_sym->as = NULL;
++
++  if (selector->ts.type == BT_CLASS)
+     {
+       /* The correct class container has to be available.  */
+-      if (selector->rank)
+-	{
+-	  assoc_sym->attr.dimension = 1;
+-	  assoc_sym->as = gfc_get_array_spec ();
+-	  assoc_sym->as->rank = selector->rank;
+-	  assoc_sym->as->type = AS_DEFERRED;
+-	}
+-      else
+-	assoc_sym->as = NULL;
+       assoc_sym->ts.type = BT_CLASS;
+       assoc_sym->ts.u.derived = CLASS_DATA (selector)->ts.u.derived;
+       assoc_sym->attr.pointer = 1;
+diff -Naur gcc-4.8.1.orig/gcc/fortran/module.c gcc-4.8.1/gcc/fortran/module.c
+--- gcc-4.8.1.orig/gcc/fortran/module.c	2013-01-29 15:40:51.000000000 -0600
++++ gcc-4.8.1/gcc/fortran/module.c	2013-07-28 09:13:17.566941000 -0500
+@@ -4465,7 +4465,7 @@
+   module_locus locus;
+   symbol_attribute attr;
+ 
+-  if (st_sym->name == gfc_current_ns->proc_name->name)
++  if (gfc_current_ns->proc_name && st_sym->name == gfc_current_ns->proc_name->name)
+     {
+       gfc_error ("'%s' of module '%s', imported at %C, is also the name of the "
+ 		 "current program unit", st_sym->name, module_name);
+diff -Naur gcc-4.8.1.orig/gcc/fortran/resolve.c gcc-4.8.1/gcc/fortran/resolve.c
+--- gcc-4.8.1.orig/gcc/fortran/resolve.c	2013-05-07 11:36:48.000000000 -0500
++++ gcc-4.8.1/gcc/fortran/resolve.c	2013-06-11 11:18:13.173979000 -0500
+@@ -9746,6 +9746,10 @@
+ 
+   /* Add the attributes and the arrayspec to the temporary.  */
+   tmp->n.sym->attr = gfc_expr_attr (e);
++  tmp->n.sym->attr.function = 0;
++  tmp->n.sym->attr.result = 0;
++  tmp->n.sym->attr.flavor = FL_VARIABLE;
++
+   if (as)
+     {
+       tmp->n.sym->as = gfc_copy_array_spec (as);
+@@ -9759,6 +9763,7 @@
+ 
+   gfc_set_sym_referenced (tmp->n.sym);
+   gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
++  gfc_commit_symbol (tmp->n.sym);
+   e = gfc_lval_expr_from_sym (tmp->n.sym);
+ 
+   /* Should the lhs be a section, use its array ref for the
+diff -Naur gcc-4.8.1.orig/gcc/fortran/simplify.c gcc-4.8.1/gcc/fortran/simplify.c
+--- gcc-4.8.1.orig/gcc/fortran/simplify.c	2013-05-07 11:36:48.000000000 -0500
++++ gcc-4.8.1/gcc/fortran/simplify.c	2013-07-08 14:10:32.194953000 -0500
+@@ -332,13 +332,15 @@
+ }
+ 
+ 
+-/* Helper function for gfc_simplify_dot_product() and gfc_simplify_matmul.  */
++/* Helper function for gfc_simplify_dot_product() and gfc_simplify_matmul;
++   if conj_a is true, the matrix_a is complex conjugated.  */
+ 
+ static gfc_expr *
+ compute_dot_product (gfc_expr *matrix_a, int stride_a, int offset_a,
+-		     gfc_expr *matrix_b, int stride_b, int offset_b)
++		     gfc_expr *matrix_b, int stride_b, int offset_b,
++		     bool conj_a)
+ {
+-  gfc_expr *result, *a, *b;
++  gfc_expr *result, *a, *b, *c;
+ 
+   result = gfc_get_constant_expr (matrix_a->ts.type, matrix_a->ts.kind,
+ 				  &matrix_a->where);
+@@ -361,9 +363,11 @@
+ 	  case BT_INTEGER:
+ 	  case BT_REAL:
+ 	  case BT_COMPLEX:
+-	    result = gfc_add (result,
+-			      gfc_multiply (gfc_copy_expr (a),
+-					    gfc_copy_expr (b)));
++	    if (conj_a && a->ts.type == BT_COMPLEX)
++	      c = gfc_simplify_conjg (a);
++	    else
++	      c = gfc_copy_expr (a);
++	    result = gfc_add (result, gfc_multiply (c, gfc_copy_expr (b)));
+ 	    break;
+ 
+ 	  default:
+@@ -1881,7 +1885,7 @@
+   gcc_assert (vector_b->rank == 1);
+   gcc_assert (gfc_compare_types (&vector_a->ts, &vector_b->ts));
+ 
+-  return compute_dot_product (vector_a, 1, 0, vector_b, 1, 0);
++  return compute_dot_product (vector_a, 1, 0, vector_b, 1, 0, true);
+ }
+ 
+ 
+@@ -3894,7 +3898,7 @@
+       for (row = 0; row < result_rows; ++row)
+ 	{
+ 	  gfc_expr *e = compute_dot_product (matrix_a, stride_a, offset_a,
+-					     matrix_b, 1, offset_b);
++					     matrix_b, 1, offset_b, false);
+ 	  gfc_constructor_append_expr (&result->value.constructor,
+ 				       e, NULL);
+ 
+diff -Naur gcc-4.8.1.orig/gcc/fortran/trans-array.c gcc-4.8.1/gcc/fortran/trans-array.c
+--- gcc-4.8.1.orig/gcc/fortran/trans-array.c	2013-02-21 06:26:44.000000000 -0600
++++ gcc-4.8.1/gcc/fortran/trans-array.c	2013-08-24 07:46:17.832897000 -0500
+@@ -3674,7 +3674,7 @@
+ /* Calculate the lower bound of an array section.  */
+ 
+ static void
+-gfc_conv_section_startstride (gfc_loopinfo * loop, gfc_ss * ss, int dim)
++gfc_conv_section_startstride (stmtblock_t * block, gfc_ss * ss, int dim)
+ {
+   gfc_expr *stride = NULL;
+   tree desc;
+@@ -3703,12 +3703,12 @@
+ 
+   /* Calculate the start of the range.  For vector subscripts this will
+      be the range of the vector.  */
+-  evaluate_bound (&loop->pre, info->start, ar->start, desc, dim, true);
++  evaluate_bound (block, info->start, ar->start, desc, dim, true);
+ 
+   /* Similarly calculate the end.  Although this is not used in the
+      scalarizer, it is needed when checking bounds and where the end
+      is an expression with side-effects.  */
+-  evaluate_bound (&loop->pre, info->end, ar->end, desc, dim, false);
++  evaluate_bound (block, info->end, ar->end, desc, dim, false);
+ 
+   /* Calculate the stride.  */
+   if (stride == NULL)
+@@ -3717,8 +3717,8 @@
+     {
+       gfc_init_se (&se, NULL);
+       gfc_conv_expr_type (&se, stride, gfc_array_index_type);
+-      gfc_add_block_to_block (&loop->pre, &se.pre);
+-      info->stride[dim] = gfc_evaluate_now (se.expr, &loop->pre);
++      gfc_add_block_to_block (block, &se.pre);
++      info->stride[dim] = gfc_evaluate_now (se.expr, block);
+     }
+ }
+ 
+@@ -3735,6 +3735,8 @@
+   gfc_ss *ss;
+   tree desc;
+ 
++  gfc_loopinfo * const outer_loop = outermost_loop (loop);
++
+   loop->dimen = 0;
+   /* Determine the rank of the loop.  */
+   for (ss = loop->ss; ss != gfc_ss_terminator; ss = ss->loop_chain)
+@@ -3794,10 +3796,11 @@
+ 	  /* Get the descriptor for the array.  If it is a cross loops array,
+ 	     we got the descriptor already in the outermost loop.  */
+ 	  if (ss->parent == NULL)
+-	    gfc_conv_ss_descriptor (&loop->pre, ss, !loop->array_parameter);
++	    gfc_conv_ss_descriptor (&outer_loop->pre, ss,
++				    !loop->array_parameter);
+ 
+ 	  for (n = 0; n < ss->dimen; n++)
+-	    gfc_conv_section_startstride (loop, ss, ss->dim[n]);
++	    gfc_conv_section_startstride (&outer_loop->pre, ss, ss->dim[n]);
+ 	  break;
+ 
+ 	case GFC_SS_INTRINSIC:
+@@ -3833,7 +3836,7 @@
+ 					   fold_convert (gfc_array_index_type,
+ 							 rank),
+ 					   gfc_index_one_node);
+-		    info->end[0] = gfc_evaluate_now (tmp, &loop->pre);
++		    info->end[0] = gfc_evaluate_now (tmp, &outer_loop->pre);
+ 		    info->start[0] = gfc_index_zero_node;
+ 		    info->stride[0] = gfc_index_one_node;
+ 		    continue;
+@@ -4115,7 +4118,7 @@
+ 	}
+ 
+       tmp = gfc_finish_block (&block);
+-      gfc_add_expr_to_block (&loop->pre, tmp);
++      gfc_add_expr_to_block (&outer_loop->pre, tmp);
+     }
+ 
+   for (loop = loop->nested; loop; loop = loop->next)
+@@ -4398,6 +4401,8 @@
+   mpz_t i;
+   bool nonoptional_arr;
+ 
++  gfc_loopinfo * const outer_loop = outermost_loop (loop);
++
+   loopspec = loop->specloop;
+ 
+   mpz_init (i);
+@@ -4583,7 +4588,7 @@
+       else
+ 	{
+ 	  /* Set the delta for this section.  */
+-	  info->delta[dim] = gfc_evaluate_now (loop->from[n], &loop->pre);
++	  info->delta[dim] = gfc_evaluate_now (loop->from[n], &outer_loop->pre);
+ 	  /* Number of iterations is (end - start + step) / step.
+ 	     with start = 0, this simplifies to
+ 	     last = end / step;
+@@ -4595,7 +4600,7 @@
+ 				 gfc_array_index_type, tmp, info->stride[dim]);
+ 	  tmp = fold_build2_loc (input_location, MAX_EXPR, gfc_array_index_type,
+ 				 tmp, build_int_cst (gfc_array_index_type, -1));
+-	  loop->to[n] = gfc_evaluate_now (tmp, &loop->pre);
++	  loop->to[n] = gfc_evaluate_now (tmp, &outer_loop->pre);
+ 	  /* Make the loop variable start at 0.  */
+ 	  loop->from[n] = gfc_index_zero_node;
+ 	}
+@@ -4671,6 +4676,8 @@
+   tree tmp;
+   int n, dim;
+ 
++  gfc_loopinfo * const outer_loop = outermost_loop (loop);
++
+   loopspec = loop->specloop;
+ 
+   /* Calculate the translation from loop variables to array indices.  */
+@@ -4706,7 +4713,7 @@
+ 				     gfc_array_index_type,
+ 				     info->start[dim], tmp);
+ 
+-	      info->delta[dim] = gfc_evaluate_now (tmp, &loop->pre);
++	      info->delta[dim] = gfc_evaluate_now (tmp, &outer_loop->pre);
+ 	    }
+ 	}
+     }
+@@ -6690,10 +6697,10 @@
+ 	      gcc_assert (ar->dimen_type[n + ndim] == DIMEN_THIS_IMAGE);
+ 
+ 	      /* Make sure the call to gfc_conv_section_startstride won't
+-	         generate unnecessary code to calculate stride.  */
++		 generate unnecessary code to calculate stride.  */
+ 	      gcc_assert (ar->stride[n + ndim] == NULL);
+ 
+-	      gfc_conv_section_startstride (&loop, ss, n + ndim);
++	      gfc_conv_section_startstride (&loop.pre, ss, n + ndim);
+ 	      loop.from[n + loop.dimen] = info->start[n + ndim];
+ 	      loop.to[n + loop.dimen]   = info->end[n + ndim];
+ 	    }
+diff -Naur gcc-4.8.1.orig/gcc/fortran/trans-intrinsic.c gcc-4.8.1/gcc/fortran/trans-intrinsic.c
+--- gcc-4.8.1.orig/gcc/fortran/trans-intrinsic.c	2013-03-15 05:09:39.000000000 -0500
++++ gcc-4.8.1/gcc/fortran/trans-intrinsic.c	2013-08-11 06:31:41.480740000 -0500
+@@ -5653,8 +5653,7 @@
+ 
+   if (expr->ts.type == BT_CHARACTER)
+     {
+-      tree direct;
+-      tree indirect;
++      tree direct, indirect, free;
+ 
+       ptr = convert (gfc_get_pchar_type (expr->ts.kind), source);
+       tmpdecl = gfc_create_var (gfc_get_pchar_type (expr->ts.kind),
+@@ -5687,6 +5686,13 @@
+       tmp = build3_v (COND_EXPR, tmp, direct, indirect);
+       gfc_add_expr_to_block (&se->pre, tmp);
+ 
++      /* Free the temporary string, if necessary.  */
++      free = gfc_call_free (tmpdecl);
++      tmp = fold_build2_loc (input_location, GT_EXPR, boolean_type_node,
++			     dest_word_len, source_bytes);
++      tmp = build3_v (COND_EXPR, tmp, free, build_empty_stmt (input_location));
++      gfc_add_expr_to_block (&se->post, tmp);
++
+       se->expr = tmpdecl;
+       se->string_length = fold_convert (gfc_charlen_type_node, dest_word_len);
+     }
+diff -Naur gcc-4.8.1.orig/gcc/gcc-ar.c gcc-4.8.1/gcc/gcc-ar.c
+--- gcc-4.8.1.orig/gcc/gcc-ar.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/gcc-ar.c	2013-06-19 15:59:25.231992000 -0500
+@@ -136,7 +136,7 @@
+   setup_prefixes (av[0]);
+ 
+   /* Find the GCC LTO plugin */
+-  plugin = find_a_file (&target_path, LTOPLUGINSONAME);
++  plugin = find_a_file (&target_path, LTOPLUGINSONAME, R_OK);
+   if (!plugin)
+     {
+       fprintf (stderr, "%s: Cannot find plugin '%s'\n", av[0], LTOPLUGINSONAME);
+@@ -144,24 +144,20 @@
+     }
+ 
+   /* Find the wrapped binutils program.  */
+-  exe_name = find_a_file (&target_path, PERSONALITY);
++  exe_name = find_a_file (&target_path, PERSONALITY, X_OK);
+   if (!exe_name)
+     {
++      const char *real_exe_name = PERSONALITY;
+ #ifdef CROSS_DIRECTORY_STRUCTURE
+-      const char *cross_exe_name;
+-
+-      cross_exe_name = concat (target_machine, "-", PERSONALITY, NULL);
+-      exe_name = find_a_file (&path, cross_exe_name);
++      real_exe_name = concat (target_machine, "-", PERSONALITY, NULL);
++#endif
++      exe_name = find_a_file (&path, real_exe_name, X_OK);
+       if (!exe_name)
+ 	{
+ 	  fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0],
+-		   cross_exe_name);
++		   real_exe_name);
+ 	  exit (1);
+ 	}
+-#else
+-      fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0], PERSONALITY);
+-      exit (1);
+-#endif
+     }
+ 
+   /* Create new command line with plugin */
+diff -Naur gcc-4.8.1.orig/gcc/gimple.c gcc-4.8.1/gcc/gimple.c
+--- gcc-4.8.1.orig/gcc/gimple.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/gimple.c	2013-08-16 04:06:41.868666000 -0500
+@@ -4045,6 +4045,13 @@
+ 	    ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+ 	}
+     }
++  else if (visit_addr
++	   && gimple_code (stmt) == GIMPLE_GOTO)
++    {
++      tree op = gimple_goto_dest (stmt);
++      if (TREE_CODE (op) == ADDR_EXPR)
++	ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
++    }
+ 
+   return ret;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/gimple-ssa-strength-reduction.c gcc-4.8.1/gcc/gimple-ssa-strength-reduction.c
+--- gcc-4.8.1.orig/gcc/gimple-ssa-strength-reduction.c	2013-04-15 10:00:06.000000000 -0500
++++ gcc-4.8.1/gcc/gimple-ssa-strength-reduction.c	2013-08-06 10:08:59.668112000 -0500
+@@ -1525,11 +1525,23 @@
+ static void
+ replace_ref (tree *expr, slsr_cand_t c)
+ {
+-  tree add_expr = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (c->base_expr),
+-			       c->base_expr, c->stride);
+-  tree mem_ref = fold_build2 (MEM_REF, TREE_TYPE (*expr), add_expr,
+-			      double_int_to_tree (c->cand_type, c->index));
+-  
++  tree add_expr, mem_ref, acc_type = TREE_TYPE (*expr);
++  unsigned HOST_WIDE_INT misalign;
++  unsigned align;
++
++  /* Ensure the memory reference carries the minimum alignment
++     requirement for the data type.  See PR58041.  */
++  get_object_alignment_1 (*expr, &align, &misalign);
++  if (misalign != 0)
++    align = (misalign & -misalign);
++  if (align < TYPE_ALIGN (acc_type))
++    acc_type = build_aligned_type (acc_type, align);
++
++  add_expr = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (c->base_expr),
++			  c->base_expr, c->stride);
++  mem_ref = fold_build2 (MEM_REF, acc_type, add_expr,
++			 double_int_to_tree (c->cand_type, c->index));
++
+   /* Gimplify the base addressing expression for the new MEM_REF tree.  */
+   gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
+   TREE_OPERAND (mem_ref, 0)
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/backend.h gcc-4.8.1/gcc/go/gofrontend/backend.h
+--- gcc-4.8.1.orig/gcc/go/gofrontend/backend.h	2012-11-29 12:11:17.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/backend.h	2013-06-18 18:50:42.020320000 -0500
+@@ -95,7 +95,10 @@
+ 
+   // Get a function type.  The receiver, parameter, and results are
+   // generated from the types in the Function_type.  The Function_type
+-  // is provided so that the names are available.
++  // is provided so that the names are available.  This should return
++  // not the type of a Go function (which is a pointer to a struct)
++  // but the type of a C function pointer (which will be used as the
++  // type of the first field of the struct).
+   virtual Btype*
+   function_type(const Btyped_identifier& receiver,
+ 		const std::vector<Btyped_identifier>& parameters,
+@@ -388,18 +391,22 @@
+ 		     Bstatement** pstatement) = 0;
+ 
+   // Create a named immutable initialized data structure.  This is
+-  // used for type descriptors and map descriptors.  This returns a
+-  // Bvariable because it corresponds to an initialized const global
+-  // variable in C.
++  // used for type descriptors, map descriptors, and function
++  // descriptors.  This returns a Bvariable because it corresponds to
++  // an initialized const variable in C.
+   //
+   // NAME is the name to use for the initialized global variable which
+   // this call will create.
+   //
++  // IS_HIDDEN will be true if the descriptor should only be visible
++  // within the current object.
++  //
+   // IS_COMMON is true if NAME may be defined by several packages, and
+   // the linker should merge all such definitions.  If IS_COMMON is
+   // false, NAME should be defined in only one file.  In general
+   // IS_COMMON will be true for the type descriptor of an unnamed type
+-  // or a builtin type.
++  // or a builtin type.  IS_HIDDEN and IS_COMMON will never both be
++  // true.
+   //
+   // TYPE will be a struct type; the type of the returned expression
+   // must be a pointer to this struct type.
+@@ -409,20 +416,20 @@
+   // address.  After calling this the frontend will call
+   // immutable_struct_set_init.
+   virtual Bvariable*
+-  immutable_struct(const std::string& name, bool is_common, Btype* type,
+-		   Location) = 0;
++  immutable_struct(const std::string& name, bool is_hidden, bool is_common,
++		   Btype* type, Location) = 0;
+ 
+   // Set the initial value of a variable created by immutable_struct.
+-  // The NAME, IS_COMMON, TYPE, and location parameters are the same
+-  // ones passed to immutable_struct.  INITIALIZER will be a composite
+-  // literal of type TYPE.  It will not contain any function calls or
+-  // anything else which can not be put into a read-only data section.
+-  // It may contain the address of variables created by
++  // The NAME, IS_HIDDEN, IS_COMMON, TYPE, and location parameters are
++  // the same ones passed to immutable_struct.  INITIALIZER will be a
++  // composite literal of type TYPE.  It will not contain any function
++  // calls or anything else that can not be put into a read-only data
++  // section.  It may contain the address of variables created by
+   // immutable_struct.
+   virtual void
+   immutable_struct_set_init(Bvariable*, const std::string& name,
+-			    bool is_common, Btype* type, Location,
+-			    Bexpression* initializer) = 0;
++			    bool is_hidden, bool is_common, Btype* type,
++			    Location, Bexpression* initializer) = 0;
+ 
+   // Create a reference to a named immutable initialized data
+   // structure defined in some other package.  This will be a
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/expressions.cc gcc-4.8.1/gcc/go/gofrontend/expressions.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/expressions.cc	2012-12-21 09:59:27.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/expressions.cc	2013-06-26 17:42:47.881515000 -0500
+@@ -1090,6 +1090,15 @@
+   return this->statement_->type();
+ }
+ 
++// Determine the type of the expression.
++
++void
++Set_and_use_temporary_expression::do_determine_type(
++    const Type_context* context)
++{
++  this->expr_->determine_type(context);
++}
++
+ // Take the address.
+ 
+ void
+@@ -1255,17 +1264,16 @@
+     go_unreachable();
+ }
+ 
+-// Get the tree for a function expression without evaluating the
+-// closure.
++// Get the tree for the code of a function expression.
+ 
+ tree
+-Func_expression::get_tree_without_closure(Gogo* gogo)
++Func_expression::get_code_pointer(Gogo* gogo, Named_object* no, Location loc)
+ {
+   Function_type* fntype;
+-  if (this->function_->is_function())
+-    fntype = this->function_->func_value()->type();
+-  else if (this->function_->is_function_declaration())
+-    fntype = this->function_->func_declaration_value()->type();
++  if (no->is_function())
++    fntype = no->func_value()->type();
++  else if (no->is_function_declaration())
++    fntype = no->func_declaration_value()->type();
+   else
+     go_unreachable();
+ 
+@@ -1273,14 +1281,12 @@
+   // can't take their address.
+   if (fntype->is_builtin())
+     {
+-      error_at(this->location(),
++      error_at(loc,
+ 	       "invalid use of special builtin function %qs; must be called",
+-	       this->function_->name().c_str());
++	       no->message_name().c_str());
+       return error_mark_node;
+     }
+ 
+-  Named_object* no = this->function_;
+-
+   tree id = no->get_id(gogo);
+   if (id == error_mark_node)
+     return error_mark_node;
+@@ -1296,46 +1302,55 @@
+   if (fndecl == error_mark_node)
+     return error_mark_node;
+ 
+-  return build_fold_addr_expr_loc(this->location().gcc_location(), fndecl);
++  return build_fold_addr_expr_loc(loc.gcc_location(), fndecl);
+ }
+ 
+ // Get the tree for a function expression.  This is used when we take
+-// the address of a function rather than simply calling it.  If the
+-// function has a closure, we must use a trampoline.
++// the address of a function rather than simply calling it.  A func
++// value is represented as a pointer to a block of memory.  The first
++// word of that memory is a pointer to the function code.  The
++// remaining parts of that memory are the addresses of variables that
++// the function closes over.
+ 
+ tree
+ Func_expression::do_get_tree(Translate_context* context)
+ {
+-  Gogo* gogo = context->gogo();
+-
+-  tree fnaddr = this->get_tree_without_closure(gogo);
+-  if (fnaddr == error_mark_node)
+-    return error_mark_node;
+-
+-  go_assert(TREE_CODE(fnaddr) == ADDR_EXPR
+-	     && TREE_CODE(TREE_OPERAND(fnaddr, 0)) == FUNCTION_DECL);
+-  TREE_ADDRESSABLE(TREE_OPERAND(fnaddr, 0)) = 1;
+-
+-  // If there is no closure, that is all have to do.
++  // If there is no closure, just use the function descriptor.
+   if (this->closure_ == NULL)
+-    return fnaddr;
+-
+-  go_assert(this->function_->func_value()->enclosing() != NULL);
++    {
++      Gogo* gogo = context->gogo();
++      Named_object* no = this->function_;
++      Expression* descriptor;
++      if (no->is_function())
++	descriptor = no->func_value()->descriptor(gogo, no);
++      else if (no->is_function_declaration())
++	{
++	  if (no->func_declaration_value()->type()->is_builtin())
++	    {
++	      error_at(this->location(),
++		       ("invalid use of special builtin function %qs; "
++			"must be called"),
++		       no->message_name().c_str());
++	      return error_mark_node;
++	    }
++	  descriptor = no->func_declaration_value()->descriptor(gogo, no);
++	}
++      else
++	go_unreachable();
+ 
+-  // Get the value of the closure.  This will be a pointer to space
+-  // allocated on the heap.
+-  tree closure_tree = this->closure_->get_tree(context);
+-  if (closure_tree == error_mark_node)
+-    return error_mark_node;
+-  go_assert(POINTER_TYPE_P(TREE_TYPE(closure_tree)));
++      tree dtree = descriptor->get_tree(context);
++      if (dtree == error_mark_node)
++	return error_mark_node;
++      return build_fold_addr_expr_loc(this->location().gcc_location(), dtree);
++    }
+ 
+-  // Now we need to build some code on the heap.  This code will load
+-  // the static chain pointer with the closure and then jump to the
+-  // body of the function.  The normal gcc approach is to build the
+-  // code on the stack.  Unfortunately we can not do that, as Go
+-  // permits us to return the function pointer.
++  go_assert(this->function_->func_value()->enclosing() != NULL);
+ 
+-  return gogo->make_trampoline(fnaddr, closure_tree, this->location());
++  // If there is a closure, then the closure is itself the function
++  // expression.  It is a pointer to a struct whose first field points
++  // to the function code and whose remaining fields are the addresses
++  // of the closed-over variables.
++  return this->closure_->get_tree(context);
+ }
+ 
+ // Ast dump for function.
+@@ -1361,6 +1376,197 @@
+   return new Func_expression(function, closure, location);
+ }
+ 
++// Class Func_descriptor_expression.
++
++// Constructor.
++
++Func_descriptor_expression::Func_descriptor_expression(Named_object* fn)
++  : Expression(EXPRESSION_FUNC_DESCRIPTOR, fn->location()),
++    fn_(fn), dfn_(NULL), dvar_(NULL)
++{
++  go_assert(!fn->is_function() || !fn->func_value()->needs_closure());
++}
++
++// Traversal.
++
++int
++Func_descriptor_expression::do_traverse(Traverse*)
++{
++  return TRAVERSE_CONTINUE;
++}
++
++// All function descriptors have the same type.
++
++Type* Func_descriptor_expression::descriptor_type;
++
++void
++Func_descriptor_expression::make_func_descriptor_type()
++{
++  if (Func_descriptor_expression::descriptor_type != NULL)
++    return;
++  Type* uintptr_type = Type::lookup_integer_type("uintptr");
++  Type* struct_type = Type::make_builtin_struct_type(1, "code", uintptr_type);
++  Func_descriptor_expression::descriptor_type =
++    Type::make_builtin_named_type("functionDescriptor", struct_type);
++}
++
++Type*
++Func_descriptor_expression::do_type()
++{
++  Func_descriptor_expression::make_func_descriptor_type();
++  return Func_descriptor_expression::descriptor_type;
++}
++
++// Copy a Func_descriptor_expression;
++
++Expression*
++Func_descriptor_expression::do_copy()
++{
++  Func_descriptor_expression* fde =
++    Expression::make_func_descriptor(this->fn_);
++  if (this->dfn_ != NULL)
++    fde->set_descriptor_wrapper(this->dfn_);
++  return fde;
++}
++
++// The tree for a function descriptor.
++
++tree
++Func_descriptor_expression::do_get_tree(Translate_context* context)
++{
++  if (this->dvar_ != NULL)
++    return var_to_tree(this->dvar_);
++
++  Gogo* gogo = context->gogo();
++  Named_object* no = this->fn_;
++  Location loc = no->location();
++
++  std::string var_name;
++  if (no->package() == NULL)
++    var_name = gogo->pkgpath_symbol();
++  else
++    var_name = no->package()->pkgpath_symbol();
++  var_name.push_back('.');
++  var_name.append(Gogo::unpack_hidden_name(no->name()));
++  var_name.append("$descriptor");
++
++  Btype* btype = this->type()->get_backend(gogo);
++
++  Bvariable* bvar;
++  if (no->package() != NULL
++      || Linemap::is_predeclared_location(no->location()))
++    {
++      bvar = context->backend()->immutable_struct_reference(var_name, btype,
++							    loc);
++      go_assert(this->dfn_ == NULL);
++    }
++  else
++    {
++      Location bloc = Linemap::predeclared_location();
++      bool is_hidden = ((no->is_function()
++			 && no->func_value()->enclosing() != NULL)
++			|| Gogo::is_thunk(no));
++      bvar = context->backend()->immutable_struct(var_name, is_hidden, false,
++						  btype, bloc);
++      Expression_list* vals = new Expression_list();
++      go_assert(this->dfn_ != NULL);
++      vals->push_back(Expression::make_func_code_reference(this->dfn_, bloc));
++      Expression* init =
++	Expression::make_struct_composite_literal(this->type(), vals, bloc);
++      Translate_context bcontext(gogo, NULL, NULL, NULL);
++      bcontext.set_is_const();
++      Bexpression* binit = tree_to_expr(init->get_tree(&bcontext));
++      context->backend()->immutable_struct_set_init(bvar, var_name, is_hidden,
++						    false, btype, bloc, binit);
++    }
++
++  this->dvar_ = bvar;
++  return var_to_tree(bvar);
++}
++
++// Print a function descriptor expression.
++
++void
++Func_descriptor_expression::do_dump_expression(Ast_dump_context* context) const
++{
++  context->ostream() << "[descriptor " << this->fn_->name() << "]";
++}
++
++// Make a function descriptor expression.
++
++Func_descriptor_expression*
++Expression::make_func_descriptor(Named_object* fn)
++{
++  return new Func_descriptor_expression(fn);
++}
++
++// Make the function descriptor type, so that it can be converted.
++
++void
++Expression::make_func_descriptor_type()
++{
++  Func_descriptor_expression::make_func_descriptor_type();
++}
++
++// A reference to just the code of a function.
++
++class Func_code_reference_expression : public Expression
++{
++ public:
++  Func_code_reference_expression(Named_object* function, Location location)
++    : Expression(EXPRESSION_FUNC_CODE_REFERENCE, location),
++      function_(function)
++  { }
++
++ protected:
++  int
++  do_traverse(Traverse*)
++  { return TRAVERSE_CONTINUE; }
++
++  Type*
++  do_type()
++  { return Type::make_pointer_type(Type::make_void_type()); }
++
++  void
++  do_determine_type(const Type_context*)
++  { }
++
++  Expression*
++  do_copy()
++  {
++    return Expression::make_func_code_reference(this->function_,
++						this->location());
++  }
++
++  tree
++  do_get_tree(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context* context) const
++  { context->ostream() << "[raw " << this->function_->name() << "]" ; }
++
++ private:
++  // The function.
++  Named_object* function_;
++};
++
++// Get the tree for a reference to function code.
++
++tree
++Func_code_reference_expression::do_get_tree(Translate_context* context)
++{
++  return Func_expression::get_code_pointer(context->gogo(), this->function_,
++					   this->location());
++}
++
++// Make a reference to the code of a function.
++
++Expression*
++Expression::make_func_code_reference(Named_object* function, Location location)
++{
++  return new Func_code_reference_expression(function, location);
++}
++
+ // Class Unknown_expression.
+ 
+ // Return the name of an unknown expression.
+@@ -5462,6 +5668,7 @@
+       if (tleft->is_abstract()
+ 	  && subcontext.type != NULL
+ 	  && !subcontext.may_be_abstract
++	  && subcontext.type->interface_type() == NULL
+ 	  && subcontext.type->integer_type() == NULL)
+ 	this->report_error(("invalid context-determined non-integer type "
+ 			    "for left operand of shift"));
+@@ -5641,6 +5848,20 @@
+ 	  this->set_is_error();
+ 	  return;
+ 	}
++      if (this->op_ == OPERATOR_DIV || this->op_ == OPERATOR_MOD)
++	{
++	  // Division by a zero integer constant is an error.
++	  Numeric_constant rconst;
++	  unsigned long rval;
++	  if (left_type->integer_type() != NULL
++	      && this->right_->numeric_constant_value(&rconst)
++	      && rconst.to_unsigned_long(&rval) == Numeric_constant::NC_UL_VALID
++	      && rval == 0)
++	    {
++	      this->report_error(_("integer division by zero"));
++	      return;
++	    }
++	}
+     }
+   else
+     {
+@@ -6429,20 +6650,49 @@
+   return Expression::traverse(&this->expr_, traverse);
+ }
+ 
++// Lower the expression.  If this is a method value rather than being
++// called, and the method is accessed via a pointer, we may need to
++// add nil checks.  Introduce a temporary variable so that those nil
++// checks do not cause multiple evaluation.
++
++Expression*
++Bound_method_expression::do_lower(Gogo*, Named_object*,
++				  Statement_inserter* inserter, int)
++{
++  // For simplicity we use a temporary for every call to an embedded
++  // method, even though some of them might be pure value methods and
++  // not require a temporary.
++  if (this->expr_->var_expression() == NULL
++      && this->expr_->temporary_reference_expression() == NULL
++      && this->expr_->set_and_use_temporary_expression() == NULL
++      && (this->method_->field_indexes() != NULL
++	  || (this->method_->is_value_method()
++	      && this->expr_->type()->points_to() != NULL)))
++    {
++      Temporary_statement* temp =
++	Statement::make_temporary(this->expr_->type(), NULL, this->location());
++      inserter->insert(temp);
++      this->expr_ = Expression::make_set_and_use_temporary(temp, this->expr_,
++							   this->location());
++    }
++  return this;
++}
++
+ // Return the type of a bound method expression.  The type of this
+-// object is really the type of the method with no receiver.  We
+-// should be able to get away with just returning the type of the
+-// method.
++// object is simply the type of the method with no receiver.
+ 
+ Type*
+ Bound_method_expression::do_type()
+ {
+-  if (this->method_->is_function())
+-    return this->method_->func_value()->type();
+-  else if (this->method_->is_function_declaration())
+-    return this->method_->func_declaration_value()->type();
++  Named_object* fn = this->method_->named_object();
++  Function_type* fntype;
++  if (fn->is_function())
++    fntype = fn->func_value()->type();
++  else if (fn->is_function_declaration())
++    fntype = fn->func_declaration_value()->type();
+   else
+     return Type::make_error_type();
++  return fntype->copy_without_receiver();
+ }
+ 
+ // Determine the types of a method expression.
+@@ -6450,7 +6700,14 @@
+ void
+ Bound_method_expression::do_determine_type(const Type_context*)
+ {
+-  Function_type* fntype = this->type()->function_type();
++  Named_object* fn = this->method_->named_object();
++  Function_type* fntype;
++  if (fn->is_function())
++    fntype = fn->func_value()->type();
++  else if (fn->is_function_declaration())
++    fntype = fn->func_declaration_value()->type();
++  else
++    fntype = NULL;
+   if (fntype == NULL || !fntype->is_method())
+     this->expr_->determine_type_no_context();
+   else
+@@ -6465,31 +6722,278 @@
+ void
+ Bound_method_expression::do_check_types(Gogo*)
+ {
+-  if (!this->method_->is_function()
+-      && !this->method_->is_function_declaration())
+-    this->report_error(_("object is not a method"));
++  Named_object* fn = this->method_->named_object();
++  if (!fn->is_function() && !fn->is_function_declaration())
++    {
++      this->report_error(_("object is not a method"));
++      return;
++    }
++
++  Function_type* fntype;
++  if (fn->is_function())
++    fntype = fn->func_value()->type();
++  else if (fn->is_function_declaration())
++    fntype = fn->func_declaration_value()->type();
+   else
++    go_unreachable();
++  Type* rtype = fntype->receiver()->type()->deref();
++  Type* etype = (this->expr_type_ != NULL
++		 ? this->expr_type_
++		 : this->expr_->type());
++  etype = etype->deref();
++  if (!Type::are_identical(rtype, etype, true, NULL))
++    this->report_error(_("method type does not match object type"));
++}
++
++// If a bound method expression is not simply called, then it is
++// represented as a closure.  The closure will hold a single variable,
++// the receiver to pass to the method.  The function will be a simple
++// thunk that pulls that value from the closure and calls the method
++// with the remaining arguments.
++//
++// Because method values are not common, we don't build all thunks for
++// every methods, but instead only build them as we need them.  In
++// particular, we even build them on demand for methods defined in
++// other packages.
++
++Bound_method_expression::Method_value_thunks
++  Bound_method_expression::method_value_thunks;
++
++// Find or create the thunk for METHOD.
++
++Named_object*
++Bound_method_expression::create_thunk(Gogo* gogo, const Method* method,
++				      Named_object* fn)
++{
++  std::pair<Named_object*, Named_object*> val(fn, NULL);
++  std::pair<Method_value_thunks::iterator, bool> ins =
++    Bound_method_expression::method_value_thunks.insert(val);
++  if (!ins.second)
+     {
+-      Type* rtype = this->type()->function_type()->receiver()->type()->deref();
+-      Type* etype = (this->expr_type_ != NULL
+-		     ? this->expr_type_
+-		     : this->expr_->type());
+-      etype = etype->deref();
+-      if (!Type::are_identical(rtype, etype, true, NULL))
+-	this->report_error(_("method type does not match object type"));
++      // We have seen this method before.
++      go_assert(ins.first->second != NULL);
++      return ins.first->second;
+     }
++
++  Location loc = fn->location();
++
++  Function_type* orig_fntype;
++  if (fn->is_function())
++    orig_fntype = fn->func_value()->type();
++  else if (fn->is_function_declaration())
++    orig_fntype = fn->func_declaration_value()->type();
++  else
++    orig_fntype = NULL;
++
++  if (orig_fntype == NULL || !orig_fntype->is_method())
++    {
++      ins.first->second = Named_object::make_erroneous_name(Gogo::thunk_name());
++      return ins.first->second;
++    }
++
++  Struct_field_list* sfl = new Struct_field_list();
++  // The type here is wrong--it should be new_fntype.  But we don't
++  // have new_fntype yet, and it doesn't really matter.
++  Type* vt = Type::make_pointer_type(Type::make_void_type());
++  sfl->push_back(Struct_field(Typed_identifier("fn.0", vt, loc)));
++  sfl->push_back(Struct_field(Typed_identifier("val.1",
++					       orig_fntype->receiver()->type(),
++					       loc)));
++  Type* closure_type = Type::make_struct_type(sfl, loc);
++  closure_type = Type::make_pointer_type(closure_type);
++
++  Function_type* new_fntype = orig_fntype->copy_with_closure(closure_type);
++
++  Named_object* new_no = gogo->start_function(Gogo::thunk_name(), new_fntype,
++					      false, loc);
++
++  gogo->start_block(loc);
++
++  Named_object* cp = gogo->lookup("closure.0", NULL);
++  go_assert(cp != NULL
++	    && cp->is_variable()
++	    && cp->var_value()->is_parameter());
++
++  // Field 0 of the closure is the function code pointer, field 1 is
++  // the value on which to invoke the method.
++  Expression* arg = Expression::make_var_reference(cp, loc);
++  arg = Expression::make_unary(OPERATOR_MULT, arg, loc);
++  arg = Expression::make_field_reference(arg, 1, loc);
++
++  Expression* bme = Expression::make_bound_method(arg, method, fn, loc);
++
++  const Typed_identifier_list* orig_params = orig_fntype->parameters();
++  Expression_list* args;
++  if (orig_params == NULL || orig_params->empty())
++    args = NULL;
++  else
++    {
++      const Typed_identifier_list* new_params = new_fntype->parameters();
++      args = new Expression_list();
++      for (Typed_identifier_list::const_iterator p = new_params->begin();
++	   p + 1 != new_params->end();
++	   ++p)
++	{
++	  Named_object* p_no = gogo->lookup(p->name(), NULL);
++	  go_assert(p_no != NULL
++		    && p_no->is_variable()
++		    && p_no->var_value()->is_parameter());
++	  args->push_back(Expression::make_var_reference(p_no, loc));
++	}
++    }
++
++  Call_expression* call = Expression::make_call(bme, args,
++						orig_fntype->is_varargs(),
++						loc);
++  call->set_varargs_are_lowered();
++
++  Statement* s = Statement::make_return_from_call(call, loc);
++  gogo->add_statement(s);
++  Block* b = gogo->finish_block(loc);
++  gogo->add_block(b, loc);
++  gogo->lower_block(new_no, b);
++  gogo->finish_function(loc);
++
++  ins.first->second = new_no;
++  return new_no;
++}
++
++// Return an expression to check *REF for nil while dereferencing
++// according to FIELD_INDEXES.  Update *REF to build up the field
++// reference.  This is a static function so that we don't have to
++// worry about declaring Field_indexes in expressions.h.
++
++static Expression*
++bme_check_nil(const Method::Field_indexes* field_indexes, Location loc,
++	      Expression** ref)
++{
++  if (field_indexes == NULL)
++    return Expression::make_boolean(false, loc);
++  Expression* cond = bme_check_nil(field_indexes->next, loc, ref);
++  Struct_type* stype = (*ref)->type()->deref()->struct_type();
++  go_assert(stype != NULL
++	    && field_indexes->field_index < stype->field_count());
++  if ((*ref)->type()->struct_type() == NULL)
++    {
++      go_assert((*ref)->type()->points_to() != NULL);
++      Expression* n = Expression::make_binary(OPERATOR_EQEQ, *ref,
++					      Expression::make_nil(loc),
++					      loc);
++      cond = Expression::make_binary(OPERATOR_OROR, cond, n, loc);
++      *ref = Expression::make_unary(OPERATOR_MULT, *ref, loc);
++      go_assert((*ref)->type()->struct_type() == stype);
++    }
++  *ref = Expression::make_field_reference(*ref, field_indexes->field_index,
++					  loc);
++  return cond;
+ }
+ 
+-// Get the tree for a method expression.  There is no standard tree
+-// representation for this.  The only places it may currently be used
+-// are in a Call_expression or a Go_statement, which will take it
+-// apart directly.  So this has nothing to do at present.
++// Get the tree for a method value.
+ 
+ tree
+-Bound_method_expression::do_get_tree(Translate_context*)
++Bound_method_expression::do_get_tree(Translate_context* context)
+ {
+-  error_at(this->location(), "reference to method other than calling it");
+-  return error_mark_node;
++  Named_object* thunk = Bound_method_expression::create_thunk(context->gogo(),
++							      this->method_,
++							      this->function_);
++  if (thunk->is_erroneous())
++    {
++      go_assert(saw_errors());
++      return error_mark_node;
++    }
++
++  // FIXME: We should lower this earlier, but we can't lower it in the
++  // lowering pass because at that point we don't know whether we need
++  // to create the thunk or not.  If the expression is called, we
++  // don't need the thunk.
++
++  Location loc = this->location();
++
++  // If the method expects a value, and we have a pointer, we need to
++  // dereference the pointer.
++
++  Named_object* fn = this->method_->named_object();
++  Function_type* fntype;
++  if (fn->is_function())
++    fntype = fn->func_value()->type();
++  else if (fn->is_function_declaration())
++    fntype = fn->func_declaration_value()->type();
++  else
++    go_unreachable();
++
++  Expression* val = this->expr_;
++  if (fntype->receiver()->type()->points_to() == NULL
++      && val->type()->points_to() != NULL)
++    val = Expression::make_unary(OPERATOR_MULT, val, loc);
++
++  // Note that we are ignoring this->expr_type_ here.  The thunk will
++  // expect a closure whose second field has type this->expr_type_ (if
++  // that is not NULL).  We are going to pass it a closure whose
++  // second field has type this->expr_->type().  Since
++  // this->expr_type_ is only not-NULL for pointer types, we can get
++  // away with this.
++
++  Struct_field_list* fields = new Struct_field_list();
++  fields->push_back(Struct_field(Typed_identifier("fn.0",
++						  thunk->func_value()->type(),
++						  loc)));
++  fields->push_back(Struct_field(Typed_identifier("val.1", val->type(), loc)));
++  Struct_type* st = Type::make_struct_type(fields, loc);
++
++  Expression_list* vals = new Expression_list();
++  vals->push_back(Expression::make_func_code_reference(thunk, loc));
++  vals->push_back(val);
++
++  Expression* ret = Expression::make_struct_composite_literal(st, vals, loc);
++  ret = Expression::make_heap_composite(ret, loc);
++
++  tree ret_tree = ret->get_tree(context);
++
++  Expression* nil_check = NULL;
++
++  // See whether the expression or any embedded pointers are nil.
++
++  Expression* expr = this->expr_;
++  if (this->method_->field_indexes() != NULL)
++    {
++      // Note that we are evaluating this->expr_ twice, but that is OK
++      // because in the lowering pass we forced it into a temporary
++      // variable.
++      Expression* ref = expr;
++      nil_check = bme_check_nil(this->method_->field_indexes(), loc, &ref);
++      expr = ref;
++    }
++
++  if (this->method_->is_value_method() && expr->type()->points_to() != NULL)
++    {
++      Expression* n = Expression::make_binary(OPERATOR_EQEQ, expr,
++					      Expression::make_nil(loc),
++					      loc);
++      if (nil_check == NULL)
++	nil_check = n;
++      else
++	nil_check = Expression::make_binary(OPERATOR_OROR, nil_check, n, loc);
++    }
++
++  if (nil_check != NULL)
++    {
++      tree nil_check_tree = nil_check->get_tree(context);
++      tree crash =
++	context->gogo()->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE, loc);
++      if (ret_tree == error_mark_node
++	  || nil_check_tree == error_mark_node
++	  || crash == error_mark_node)
++	return error_mark_node;
++
++      ret_tree = fold_build2_loc(loc.gcc_location(), COMPOUND_EXPR,
++				 TREE_TYPE(ret_tree),
++				 build3_loc(loc.gcc_location(), COND_EXPR,
++					    void_type_node, nil_check_tree,
++					    crash, NULL_TREE),
++				 ret_tree);
++    }
++
++  return ret_tree;
+ }
+ 
+ // Dump ast representation of a bound method expression.
+@@ -6508,16 +7012,16 @@
+       ast_dump_context->ostream() << ")";
+     }
+     
+-  ast_dump_context->ostream() << "." << this->method_->name();
++  ast_dump_context->ostream() << "." << this->function_->name();
+ }
+ 
+ // Make a method expression.
+ 
+ Bound_method_expression*
+-Expression::make_bound_method(Expression* expr, Named_object* method,
+-			      Location location)
++Expression::make_bound_method(Expression* expr, const Method* method,
++			      Named_object* function, Location location)
+ {
+-  return new Bound_method_expression(expr, method, location);
++  return new Bound_method_expression(expr, method, function, location);
+ }
+ 
+ // Class Builtin_call_expression.  This is used for a call to a
+@@ -6722,6 +7226,26 @@
+       return Expression::make_error(loc);
+     }
+ 
++  if (this->code_ == BUILTIN_OFFSETOF)
++    {
++      Expression* arg = this->one_arg();
++      Field_reference_expression* farg = arg->field_reference_expression();
++      while (farg != NULL)
++	{
++	  if (!farg->implicit())
++	    break;
++	  // When the selector refers to an embedded field,
++	  // it must not be reached through pointer indirections.
++	  if (farg->expr()->deref() != farg->expr())
++	    {
++	      this->report_error(_("argument of Offsetof implies indirection of an embedded field"));
++	      return this;
++	    }
++	  // Go up until we reach the original base.
++	  farg = farg->expr()->field_reference_expression();
++	}
++    }
++ 
+   if (this->is_constant())
+     {
+       Numeric_constant nc;
+@@ -6874,6 +7398,8 @@
+   Type* uintptr_type = Type::lookup_integer_type("uintptr");
+   int uintptr_bits = uintptr_type->integer_type()->bits();
+ 
++  Type_context int_context(Type::lookup_integer_type("int"), false);
++
+   ++parg;
+   Expression* len_arg;
+   if (parg == args->end())
+@@ -6892,6 +7418,7 @@
+   else
+     {
+       len_arg = *parg;
++      len_arg->determine_type(&int_context);
+       if (!this->check_int_value(len_arg, true))
+ 	return Expression::make_error(this->location());
+       if (len_arg->type()->integer_type() != NULL
+@@ -6904,6 +7431,7 @@
+   if (is_slice && parg != args->end())
+     {
+       cap_arg = *parg;
++      cap_arg->determine_type(&int_context);
+       if (!this->check_int_value(cap_arg, false))
+ 	return Expression::make_error(this->location());
+ 
+@@ -7279,19 +7807,31 @@
+       Field_reference_expression* farg = arg->field_reference_expression();
+       if (farg == NULL)
+ 	return false;
+-      Expression* struct_expr = farg->expr();
+-      Type* st = struct_expr->type();
+-      if (st->struct_type() == NULL)
+-	return false;
+-      if (st->named_type() != NULL)
+-	st->named_type()->convert(this->gogo_);
+-      unsigned int offset;
+-      if (!st->struct_type()->backend_field_offset(this->gogo_,
+-						   farg->field_index(),
+-						   &offset))
+-	return false;
++      unsigned int total_offset = 0;
++      while (true)
++        {
++          Expression* struct_expr = farg->expr();
++          Type* st = struct_expr->type();
++          if (st->struct_type() == NULL)
++            return false;
++          if (st->named_type() != NULL)
++            st->named_type()->convert(this->gogo_);
++          unsigned int offset;
++          if (!st->struct_type()->backend_field_offset(this->gogo_,
++						       farg->field_index(),
++						       &offset))
++            return false;
++          total_offset += offset;
++          if (farg->implicit() && struct_expr->field_reference_expression() != NULL)
++            {
++              // Go up until we reach the original base.
++              farg = struct_expr->field_reference_expression();
++              continue;
++            }
++          break;
++        }
+       nc->set_unsigned_long(Type::lookup_integer_type("uintptr"),
+-			    static_cast<unsigned long>(offset));
++			    static_cast<unsigned long>(total_offset));
+       return true;
+     }
+   else if (this->code_ == BUILTIN_REAL || this->code_ == BUILTIN_IMAG)
+@@ -7509,6 +8049,8 @@
+     case BUILTIN_REAL:
+     case BUILTIN_IMAG:
+       arg_type = Builtin_call_expression::complex_type(context->type);
++      if (arg_type == NULL)
++	arg_type = Type::lookup_complex_type("complex128");
+       is_print = false;
+       break;
+ 
+@@ -7517,6 +8059,8 @@
+ 	// For the complex function the type of one operand can
+ 	// determine the type of the other, as in a binary expression.
+ 	arg_type = Builtin_call_expression::real_imag_type(context->type);
++	if (arg_type == NULL)
++	  arg_type = Type::lookup_float_type("float64");
+ 	if (args != NULL && args->size() == 2)
+ 	  {
+ 	    Type* t1 = args->front()->type();
+@@ -8509,6 +9053,74 @@
+ 
+ // Class Call_expression.
+ 
++// A Go function can be viewed in a couple of different ways.  The
++// code of a Go function becomes a backend function with parameters
++// whose types are simply the backend representation of the Go types.
++// If there are multiple results, they are returned as a backend
++// struct.
++
++// However, when Go code refers to a function other than simply
++// calling it, the backend type of that function is actually a struct.
++// The first field of the struct points to the Go function code
++// (sometimes a wrapper as described below).  The remaining fields
++// hold addresses of closed-over variables.  This struct is called a
++// closure.
++
++// There are a few cases to consider.
++
++// A direct function call of a known function in package scope.  In
++// this case there are no closed-over variables, and we know the name
++// of the function code.  We can simply produce a backend call to the
++// function directly, and not worry about the closure.
++
++// A direct function call of a known function literal.  In this case
++// we know the function code and we know the closure.  We generate the
++// function code such that it expects an additional final argument of
++// the closure type.  We pass the closure as the last argument, after
++// the other arguments.
++
++// An indirect function call.  In this case we have a closure.  We
++// load the pointer to the function code from the first field of the
++// closure.  We pass the address of the closure as the last argument.
++
++// A call to a method of an interface.  Type methods are always at
++// package scope, so we call the function directly, and don't worry
++// about the closure.
++
++// This means that for a function at package scope we have two cases.
++// One is the direct call, which has no closure.  The other is the
++// indirect call, which does have a closure.  We can't simply ignore
++// the closure, even though it is the last argument, because that will
++// fail on targets where the function pops its arguments.  So when
++// generating a closure for a package-scope function we set the
++// function code pointer in the closure to point to a wrapper
++// function.  This wrapper function accepts a final argument that
++// points to the closure, ignores it, and calls the real function as a
++// direct function call.  This wrapper will normally be efficient, and
++// can often simply be a tail call to the real function.
++
++// We don't use GCC's static chain pointer because 1) we don't need
++// it; 2) GCC only permits using a static chain to call a known
++// function, so we can't use it for an indirect call anyhow.  Since we
++// can't use it for an indirect call, we may as well not worry about
++// using it for a direct call either.
++
++// We pass the closure last rather than first because it means that
++// the function wrapper we put into a closure for a package-scope
++// function can normally just be a tail call to the real function.
++
++// For method expressions we generate a wrapper that loads the
++// receiver from the closure and then calls the method.  This
++// unfortunately forces reshuffling the arguments, since there is a
++// new first argument, but we can't avoid reshuffling either for
++// method expressions or for indirect calls of package-scope
++// functions, and since the latter are more common we reshuffle for
++// method expressions.
++
++// Note that the Go code retains the Go types.  The extra final
++// argument only appears when we convert to the backend
++// representation.
++
+ // Traversal.
+ 
+ int
+@@ -8624,7 +9236,7 @@
+   Bound_method_expression* bme = this->fn_->bound_method_expression();
+   if (bme != NULL)
+     {
+-      Named_object* method = bme->method();
++      Named_object* methodfn = bme->function();
+       Expression* first_arg = bme->first_argument();
+ 
+       // We always pass a pointer when calling a method.
+@@ -8665,7 +9277,7 @@
+       // old arguments, because we may be traversing them up in some
+       // caller.  FIXME.
+       this->args_ = new_args;
+-      this->fn_ = Expression::make_func_reference(method, NULL,
++      this->fn_ = Expression::make_func_reference(methodfn, NULL,
+ 						  bme->location());
+     }
+ 
+@@ -9117,11 +9729,21 @@
+   const bool has_closure = func != NULL && func->closure() != NULL;
+   const bool is_interface_method = interface_method != NULL;
+ 
++  int closure_arg;
++  if (has_closure)
++    closure_arg = 1;
++  else if (func != NULL)
++    closure_arg = 0;
++  else if (is_interface_method)
++    closure_arg = 0;
++  else
++    closure_arg = 1;
++
+   int nargs;
+   tree* args;
+   if (this->args_ == NULL || this->args_->empty())
+     {
+-      nargs = is_interface_method ? 1 : 0;
++      nargs = (is_interface_method ? 1 : 0) + closure_arg;
+       args = nargs == 0 ? NULL : new tree[nargs];
+     }
+   else if (fntype->parameters() == NULL || fntype->parameters()->empty())
+@@ -9130,7 +9752,7 @@
+       go_assert(!is_interface_method
+ 		&& fntype->is_method()
+ 		&& this->args_->size() == 1);
+-      nargs = 1;
++      nargs = 1 + closure_arg;
+       args = new tree[nargs];
+       args[0] = this->args_->front()->get_tree(context);
+     }
+@@ -9141,6 +9763,7 @@
+       nargs = this->args_->size();
+       int i = is_interface_method ? 1 : 0;
+       nargs += i;
++      nargs += closure_arg;
+       args = new tree[nargs];
+ 
+       Typed_identifier_list::const_iterator pp = params->begin();
+@@ -9161,36 +9784,71 @@
+ 						       arg_val,
+ 						       location);
+ 	  if (args[i] == error_mark_node)
+-	    {
+-	      delete[] args;
+-	      return error_mark_node;
+-	    }
++	    return error_mark_node;
+ 	}
+       go_assert(pp == params->end());
+-      go_assert(i == nargs);
++      go_assert(i + closure_arg == nargs);
+     }
+ 
+-  tree rettype = TREE_TYPE(TREE_TYPE(type_to_tree(fntype->get_backend(gogo))));
++  tree fntype_tree = type_to_tree(fntype->get_backend(gogo));
++  if (fntype_tree == error_mark_node)
++    return error_mark_node;
++  go_assert(POINTER_TYPE_P(fntype_tree));
++  if (TREE_TYPE(fntype_tree) == error_mark_node)
++    return error_mark_node;
++  go_assert(TREE_CODE(TREE_TYPE(fntype_tree)) == RECORD_TYPE);
++  tree fnfield_type = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(fntype_tree)));
++  if (fnfield_type == error_mark_node)
++    return error_mark_node;
++  go_assert(FUNCTION_POINTER_TYPE_P(fnfield_type));
++  tree rettype = TREE_TYPE(TREE_TYPE(fnfield_type));
+   if (rettype == error_mark_node)
+-    {
+-      delete[] args;
+-      return error_mark_node;
+-    }
++    return error_mark_node;
+ 
+   tree fn;
+-  if (has_closure)
+-    fn = func->get_tree_without_closure(gogo);
++  if (func != NULL)
++    {
++      Named_object* no = func->named_object();
++      go_assert(!no->is_function()
++		|| !no->func_value()->is_descriptor_wrapper());
++      fn = Func_expression::get_code_pointer(gogo, no, location);
++      if (has_closure)
++	{
++	  go_assert(closure_arg == 1 && nargs > 0);
++	  args[nargs - 1] = func->closure()->get_tree(context);
++	}
++    }
+   else if (!is_interface_method)
+-    fn = this->fn_->get_tree(context);
+-  else
+-    fn = this->interface_method_function(context, interface_method, &args[0]);
+-
+-  if (fn == error_mark_node || TREE_TYPE(fn) == error_mark_node)
+     {
+-      delete[] args;
+-      return error_mark_node;
++      tree closure_tree = this->fn_->get_tree(context);
++      if (closure_tree == error_mark_node)
++	return error_mark_node;
++      tree fnc = fold_convert_loc(location.gcc_location(), fntype_tree,
++				  closure_tree);
++      go_assert(POINTER_TYPE_P(TREE_TYPE(fnc))
++		&& (TREE_CODE(TREE_TYPE(TREE_TYPE(fnc)))
++		    == RECORD_TYPE));
++      tree field = TYPE_FIELDS(TREE_TYPE(TREE_TYPE(fnc)));
++      fn = fold_build3_loc(location.gcc_location(), COMPONENT_REF,
++			   TREE_TYPE(field),
++			   build_fold_indirect_ref_loc(location.gcc_location(),
++						       fnc),
++			   field, NULL_TREE);
++      go_assert(closure_arg == 1 && nargs > 0);
++      args[nargs - 1] = closure_tree;
++    }      
++  else
++    {
++      fn = this->interface_method_function(context, interface_method,
++					   &args[0]);
++      if (fn == error_mark_node)
++	return error_mark_node;
++      go_assert(closure_arg == 0);
+     }
+ 
++  if (fn == error_mark_node || TREE_TYPE(fn) == error_mark_node)
++    return error_mark_node;
++
+   tree fndecl = fn;
+   if (TREE_CODE(fndecl) == ADDR_EXPR)
+     fndecl = TREE_OPERAND(fndecl, 0);
+@@ -9198,12 +9856,7 @@
+   // Add a type cast in case the type of the function is a recursive
+   // type which refers to itself.
+   if (!DECL_P(fndecl) || !DECL_IS_BUILTIN(fndecl))
+-    {
+-      tree fnt = type_to_tree(fntype->get_backend(gogo));
+-      if (fnt == error_mark_node)
+-	return error_mark_node;
+-      fn = fold_convert_loc(location.gcc_location(), fnt, fn);
+-    }
++    fn = fold_convert_loc(location.gcc_location(), fnfield_type, fn);
+ 
+   // This is to support builtin math functions when using 80387 math.
+   tree excess_type = NULL_TREE;
+@@ -9247,13 +9900,6 @@
+ 
+   SET_EXPR_LOCATION(ret, location.gcc_location());
+ 
+-  if (has_closure)
+-    {
+-      tree closure_tree = func->closure()->get_tree(context);
+-      if (closure_tree != error_mark_node)
+-	CALL_EXPR_STATIC_CHAIN(ret) = closure_tree;
+-    }
+-
+   // If this is a recursive function type which returns itself, as in
+   //   type F func() F
+   // we have used ptr_type_node for the return type.  Add a cast here
+@@ -9274,24 +9920,6 @@
+   if (this->results_ != NULL)
+     ret = this->set_results(context, ret);
+ 
+-  // We can't unwind the stack past a call to nil, so we need to
+-  // insert an explicit check so that the panic can be recovered.
+-  if (func == NULL)
+-    {
+-      tree compare = fold_build2_loc(location.gcc_location(), EQ_EXPR,
+-				     boolean_type_node, fn,
+-				     fold_convert_loc(location.gcc_location(),
+-						      TREE_TYPE(fn),
+-						      null_pointer_node));
+-      tree crash = build3_loc(location.gcc_location(), COND_EXPR,
+-			      void_type_node, compare,
+-			      gogo->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE,
+-						  location),
+-			      NULL_TREE);
+-      ret = fold_build2_loc(location.gcc_location(), COMPOUND_EXPR,
+-			    TREE_TYPE(ret), crash, ret);
+-    }
+-
+   this->tree_ = ret;
+ 
+   return ret;
+@@ -9774,13 +10402,20 @@
+ void
+ Array_index_expression::do_check_types(Gogo*)
+ {
+-  if (this->start_->type()->integer_type() == NULL)
++  Numeric_constant nc;
++  unsigned long v;
++  if (this->start_->type()->integer_type() == NULL
++      && !this->start_->type()->is_error()
++      && (!this->start_->numeric_constant_value(&nc)
++	  || nc.to_unsigned_long(&v) == Numeric_constant::NC_UL_NOTINT))
+     this->report_error(_("index must be integer"));
+   if (this->end_ != NULL
+       && this->end_->type()->integer_type() == NULL
+       && !this->end_->type()->is_error()
+       && !this->end_->is_nil_expression()
+-      && !this->end_->is_error_expression())
++      && !this->end_->is_error_expression()
++      && (!this->end_->numeric_constant_value(&nc)
++	  || nc.to_unsigned_long(&v) == Numeric_constant::NC_UL_NOTINT))
+     this->report_error(_("slice end must be integer"));
+ 
+   Array_type* array_type = this->array_->type()->array_type();
+@@ -10845,6 +11480,28 @@
+   return Expression::traverse(&this->expr_, traverse);
+ }
+ 
++// Lower the expression.  If this expression is not called, we need to
++// evaluate the expression twice when converting to the backend
++// interface.  So introduce a temporary variable if necessary.
++
++Expression*
++Interface_field_reference_expression::do_lower(Gogo*, Named_object*,
++					       Statement_inserter* inserter,
++					       int)
++{
++  if (this->expr_->var_expression() == NULL
++      && this->expr_->temporary_reference_expression() == NULL
++      && this->expr_->set_and_use_temporary_expression() == NULL)
++    {
++      Temporary_statement* temp =
++	Statement::make_temporary(this->expr_->type(), NULL, this->location());
++      inserter->insert(temp);
++      this->expr_ = Expression::make_set_and_use_temporary(temp, this->expr_,
++							   this->location());
++    }
++  return this;
++}
++
+ // Return the type of an interface field reference.
+ 
+ Type*
+@@ -10905,18 +11562,188 @@
+     }
+ }
+ 
+-// Get a tree for a reference to a field in an interface.  There is no
+-// standard tree type representation for this: it's a function
+-// attached to its first argument, like a Bound_method_expression.
+-// The only places it may currently be used are in a Call_expression
+-// or a Go_statement, which will take it apart directly.  So this has
+-// nothing to do at present.
++// If an interface field reference is not simply called, then it is
++// represented as a closure.  The closure will hold a single variable,
++// the value of the interface on which the method should be called.
++// The function will be a simple thunk that pulls the value from the
++// closure and calls the method with the remaining arguments.
++
++// Because method values are not common, we don't build all thunks for
++// all possible interface methods, but instead only build them as we
++// need them.  In particular, we even build them on demand for
++// interface methods defined in other packages.
++
++Interface_field_reference_expression::Interface_method_thunks
++  Interface_field_reference_expression::interface_method_thunks;
++
++// Find or create the thunk to call method NAME on TYPE.
++
++Named_object*
++Interface_field_reference_expression::create_thunk(Gogo* gogo,
++						   Interface_type* type,
++						   const std::string& name)
++{
++  std::pair<Interface_type*, Method_thunks*> val(type, NULL);
++  std::pair<Interface_method_thunks::iterator, bool> ins =
++    Interface_field_reference_expression::interface_method_thunks.insert(val);
++  if (ins.second)
++    {
++      // This is the first time we have seen this interface.
++      ins.first->second = new Method_thunks();
++    }
++
++  for (Method_thunks::const_iterator p = ins.first->second->begin();
++       p != ins.first->second->end();
++       p++)
++    if (p->first == name)
++      return p->second;
++
++  Location loc = type->location();
++
++  const Typed_identifier* method_id = type->find_method(name);
++  if (method_id == NULL)
++    return Named_object::make_erroneous_name(Gogo::thunk_name());
++
++  Function_type* orig_fntype = method_id->type()->function_type();
++  if (orig_fntype == NULL)
++    return Named_object::make_erroneous_name(Gogo::thunk_name());
++
++  Struct_field_list* sfl = new Struct_field_list();
++  // The type here is wrong--it should be new_fntype.  But we don't
++  // have new_fntype yet, and it doesn't really matter.
++  Type* vt = Type::make_pointer_type(Type::make_void_type());
++  sfl->push_back(Struct_field(Typed_identifier("fn.0", vt, loc)));
++  sfl->push_back(Struct_field(Typed_identifier("val.1", type, loc)));
++  Type* closure_type = Type::make_struct_type(sfl, loc);
++  closure_type = Type::make_pointer_type(closure_type);
++
++  Function_type* new_fntype = orig_fntype->copy_with_closure(closure_type);
++
++  Named_object* new_no = gogo->start_function(Gogo::thunk_name(), new_fntype,
++					      false, loc);
++
++  gogo->start_block(loc);
++
++  Named_object* cp = gogo->lookup("closure.0", NULL);
++  go_assert(cp != NULL
++	    && cp->is_variable()
++	    && cp->var_value()->is_parameter());
++
++  // Field 0 of the closure is the function code pointer, field 1 is
++  // the value on which to invoke the method.
++  Expression* arg = Expression::make_var_reference(cp, loc);
++  arg = Expression::make_unary(OPERATOR_MULT, arg, loc);
++  arg = Expression::make_field_reference(arg, 1, loc);
++
++  Expression *ifre = Expression::make_interface_field_reference(arg, name,
++								loc);
++
++  const Typed_identifier_list* orig_params = orig_fntype->parameters();
++  Expression_list* args;
++  if (orig_params == NULL || orig_params->empty())
++    args = NULL;
++  else
++    {
++      const Typed_identifier_list* new_params = new_fntype->parameters();
++      args = new Expression_list();
++      for (Typed_identifier_list::const_iterator p = new_params->begin();
++	   p + 1 != new_params->end();
++	   ++p)
++	{
++	  Named_object* p_no = gogo->lookup(p->name(), NULL);
++	  go_assert(p_no != NULL
++		    && p_no->is_variable()
++		    && p_no->var_value()->is_parameter());
++	  args->push_back(Expression::make_var_reference(p_no, loc));
++	}
++    }
++
++  Call_expression* call = Expression::make_call(ifre, args,
++						orig_fntype->is_varargs(),
++						loc);
++  call->set_varargs_are_lowered();
++
++  Statement* s = Statement::make_return_from_call(call, loc);
++  gogo->add_statement(s);
++  Block* b = gogo->finish_block(loc);
++  gogo->add_block(b, loc);
++  gogo->lower_block(new_no, b);
++  gogo->finish_function(loc);
++
++  ins.first->second->push_back(std::make_pair(name, new_no));
++  return new_no;
++}
++
++// Get a tree for a method value.
+ 
+ tree
+-Interface_field_reference_expression::do_get_tree(Translate_context*)
++Interface_field_reference_expression::do_get_tree(Translate_context* context)
+ {
+-  error_at(this->location(), "reference to method other than calling it");
+-  return error_mark_node;
++  Interface_type* type = this->expr_->type()->interface_type();
++  if (type == NULL)
++    {
++      go_assert(saw_errors());
++      return error_mark_node;
++    }
++
++  Named_object* thunk =
++    Interface_field_reference_expression::create_thunk(context->gogo(),
++						       type, this->name_);
++  if (thunk->is_erroneous())
++    {
++      go_assert(saw_errors());
++      return error_mark_node;
++    }
++
++  // FIXME: We should lower this earlier, but we can't it lower it in
++  // the lowering pass because at that point we don't know whether we
++  // need to create the thunk or not.  If the expression is called, we
++  // don't need the thunk.
++
++  Location loc = this->location();
++
++  Struct_field_list* fields = new Struct_field_list();
++  fields->push_back(Struct_field(Typed_identifier("fn.0",
++						  thunk->func_value()->type(),
++						  loc)));
++  fields->push_back(Struct_field(Typed_identifier("val.1",
++						  this->expr_->type(),
++						  loc)));
++  Struct_type* st = Type::make_struct_type(fields, loc);
++
++  Expression_list* vals = new Expression_list();
++  vals->push_back(Expression::make_func_code_reference(thunk, loc));
++  vals->push_back(this->expr_);
++
++  Expression* expr = Expression::make_struct_composite_literal(st, vals, loc);
++  expr = Expression::make_heap_composite(expr, loc);
++
++  tree closure_tree = expr->get_tree(context);
++
++  // Note that we are evaluating this->expr_ twice, but that is OK
++  // because in the lowering pass we forced it into a temporary
++  // variable.
++  tree expr_tree = this->expr_->get_tree(context);
++  tree nil_check_tree = Expression::comparison_tree(context,
++						    Type::lookup_bool_type(),
++						    OPERATOR_EQEQ,
++						    this->expr_->type(),
++						    expr_tree,
++						    Type::make_nil_type(),
++						    null_pointer_node,
++						    loc);
++  tree crash = context->gogo()->runtime_error(RUNTIME_ERROR_NIL_DEREFERENCE,
++					      loc);
++  if (closure_tree == error_mark_node
++      || nil_check_tree == error_mark_node
++      || crash == error_mark_node)
++    return error_mark_node;
++  return fold_build2_loc(loc.gcc_location(), COMPOUND_EXPR,
++			 TREE_TYPE(closure_tree),
++			 build3_loc(loc.gcc_location(), COND_EXPR,
++				    void_type_node, nil_check_tree, crash,
++				    NULL_TREE),
++			 closure_tree);
+ }
+ 
+ // Dump ast representation for an interface field reference.
+@@ -11114,8 +11941,10 @@
+   // as their first argument.  If this is for a pointer type, we can
+   // simply reuse the existing function.  We use an internal hack to
+   // get the right type.
+-
+-  if (method != NULL && is_pointer)
++  // FIXME: This optimization is disabled because it doesn't yet work
++  // with function descriptors when the method expression is not
++  // directly called.
++  if (method != NULL && is_pointer && false)
+     {
+       Named_object* mno = (method->needs_stub_method()
+ 			   ? method->stub_object()
+@@ -11170,22 +11999,7 @@
+ 						method_type->is_varargs(),
+ 						location);
+ 
+-  size_t count = call->result_count();
+-  Statement* s;
+-  if (count == 0)
+-    s = Statement::make_statement(call, true);
+-  else
+-    {
+-      Expression_list* retvals = new Expression_list();
+-      if (count <= 1)
+-	retvals->push_back(call);
+-      else
+-	{
+-	  for (size_t i = 0; i < count; ++i)
+-	    retvals->push_back(Expression::make_call_result(call, i));
+-	}
+-      s = Statement::make_return_statement(retvals, location);
+-    }
++  Statement* s = Statement::make_return_from_call(call, location);
+   gogo->add_statement(s);
+ 
+   Block* b = gogo->finish_block(location);
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/expressions.h gcc-4.8.1/gcc/go/gofrontend/expressions.h
+--- gcc-4.8.1.orig/gcc/go/gofrontend/expressions.h	2013-01-28 18:28:09.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/expressions.h	2013-06-24 17:11:25.306173000 -0500
+@@ -16,6 +16,7 @@
+ class Traverse;
+ class Statement_inserter;
+ class Type;
++class Method;
+ struct Type_context;
+ class Integer_type;
+ class Float_type;
+@@ -32,6 +33,7 @@
+ class Binary_expression;
+ class Call_expression;
+ class Func_expression;
++class Func_descriptor_expression;
+ class Unknown_expression;
+ class Index_expression;
+ class Map_index_expression;
+@@ -67,6 +69,8 @@
+     EXPRESSION_SET_AND_USE_TEMPORARY,
+     EXPRESSION_SINK,
+     EXPRESSION_FUNC_REFERENCE,
++    EXPRESSION_FUNC_DESCRIPTOR,
++    EXPRESSION_FUNC_CODE_REFERENCE,
+     EXPRESSION_UNKNOWN_REFERENCE,
+     EXPRESSION_BOOLEAN,
+     EXPRESSION_STRING,
+@@ -150,10 +154,24 @@
+   static Expression*
+   make_sink(Location);
+ 
+-  // Make a reference to a function in an expression.
++  // Make a reference to a function in an expression.  This returns a
++  // pointer to the struct holding the address of the function
++  // followed by any closed-over variables.
+   static Expression*
+   make_func_reference(Named_object*, Expression* closure, Location);
+ 
++  // Make a function descriptor, an immutable struct with a single
++  // field that points to the function code.  This may only be used
++  // with functions that do not have closures.  FN is the function for
++  // which we are making the descriptor.
++  static Func_descriptor_expression*
++  make_func_descriptor(Named_object* fn);
++
++  // Make a reference to the code of a function.  This is used to set
++  // descriptor and closure fields.
++  static Expression*
++  make_func_code_reference(Named_object*, Location);
++
+   // Make a reference to an unknown name.  In a correct program this
+   // will always be lowered to a real const/var/func reference.
+   static Unknown_expression*
+@@ -207,9 +225,11 @@
+   make_call_result(Call_expression*, unsigned int index);
+ 
+   // Make an expression which is a method bound to its first
+-  // parameter.
++  // parameter.  METHOD is the method being called, FUNCTION is the
++  // function to call.
+   static Bound_method_expression*
+-  make_bound_method(Expression* object, Named_object* method, Location);
++  make_bound_method(Expression* object, const Method* method,
++		    Named_object* function, Location);
+ 
+   // Make an index or slice expression.  This is a parser expression
+   // which represents LEFT[START:END].  END may be NULL, meaning an
+@@ -523,6 +543,11 @@
+   bool
+   is_local_variable() const;
+ 
++  // Make the builtin function descriptor type, so that it can be
++  // converted.
++  static void
++  make_func_descriptor_type();
++
+   // Traverse an expression.
+   static int
+   traverse(Expression**, Traverse*);
+@@ -1057,8 +1082,7 @@
+   do_type();
+ 
+   void
+-  do_determine_type(const Type_context*)
+-  { }
++  do_determine_type(const Type_context*);
+ 
+   Expression*
+   do_copy()
+@@ -1484,7 +1508,7 @@
+   { }
+ 
+   // Return the object associated with the function.
+-  const Named_object*
++  Named_object*
+   named_object() const
+   { return this->function_; }
+ 
+@@ -1494,9 +1518,9 @@
+   closure()
+   { return this->closure_; }
+ 
+-  // Return a tree for this function without evaluating the closure.
+-  tree
+-  get_tree_without_closure(Gogo*);
++  // Return a tree for the code for a function.
++  static tree
++  get_code_pointer(Gogo*, Named_object* function, Location loc);
+ 
+  protected:
+   int
+@@ -1532,11 +1556,68 @@
+   // The function itself.
+   Named_object* function_;
+   // A closure.  This is normally NULL.  For a nested function, it may
+-  // be a heap-allocated struct holding pointers to all the variables
+-  // referenced by this function and defined in enclosing functions.
++  // be a struct holding pointers to all the variables referenced by
++  // this function and defined in enclosing functions.
+   Expression* closure_;
+ };
+ 
++// A function descriptor.  A function descriptor is a struct with a
++// single field pointing to the function code.  This is used for
++// functions without closures.
++
++class Func_descriptor_expression : public Expression
++{
++ public:
++  Func_descriptor_expression(Named_object* fn);
++
++  // Set the descriptor wrapper.
++  void
++  set_descriptor_wrapper(Named_object* dfn)
++  {
++    go_assert(this->dfn_ == NULL);
++    this->dfn_ = dfn;
++  }
++
++  // Make the function descriptor type, so that it can be converted.
++  static void
++  make_func_descriptor_type();
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*)
++  { }
++
++  Expression*
++  do_copy();
++
++  bool
++  do_is_addressable() const
++  { return true; }
++
++  tree
++  do_get_tree(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context* context) const;
++
++ private:
++  // The type of all function descriptors.
++  static Type* descriptor_type;
++
++  // The function for which this is the descriptor.
++  Named_object* fn_;
++  // The descriptor function.
++  Named_object* dfn_;
++  // The descriptor variable.
++  Bvariable* dvar_;
++};
++
+ // A reference to an unknown name.
+ 
+ class Unknown_expression : public Parser_expression
+@@ -1773,10 +1854,10 @@
+ class Bound_method_expression : public Expression
+ {
+  public:
+-  Bound_method_expression(Expression* expr, Named_object* method,
+-			  Location location)
++  Bound_method_expression(Expression* expr, const Method *method,
++			  Named_object* function, Location location)
+     : Expression(EXPRESSION_BOUND_METHOD, location),
+-      expr_(expr), expr_type_(NULL), method_(method)
++      expr_(expr), expr_type_(NULL), method_(method), function_(function)
+   { }
+ 
+   // Return the object which is the first argument.
+@@ -1791,20 +1872,33 @@
+   first_argument_type() const
+   { return this->expr_type_; }
+ 
+-  // Return the method function.
+-  Named_object*
+-  method()
++  // Return the method.
++  const Method*
++  method() const
+   { return this->method_; }
+ 
++  // Return the function to call.
++  Named_object*
++  function() const
++  { return this->function_; }
++
+   // Set the implicit type of the expression.
+   void
+   set_first_argument_type(Type* type)
+   { this->expr_type_ = type; }
+ 
++  // Create a thunk to call FUNCTION, for METHOD, when it is used as
++  // part of a method value.
++  static Named_object*
++  create_thunk(Gogo*, const Method* method, Named_object* function);
++
+  protected:
+   int
+   do_traverse(Traverse*);
+ 
++  Expression*
++  do_lower(Gogo*, Named_object*, Statement_inserter*, int);
++
+   Type*
+   do_type();
+ 
+@@ -1818,7 +1912,7 @@
+   do_copy()
+   {
+     return new Bound_method_expression(this->expr_->copy(), this->method_,
+-				       this->location());
++				       this->function_, this->location());
+   }
+ 
+   tree
+@@ -1828,6 +1922,11 @@
+   do_dump_expression(Ast_dump_context*) const;
+ 
+  private:
++  // A mapping from method functions to the thunks we have created for
++  // them.
++  typedef Unordered_map(Named_object*, Named_object*) Method_value_thunks;
++  static Method_value_thunks method_value_thunks;
++
+   // The object used to find the method.  This is passed to the method
+   // as the first argument.
+   Expression* expr_;
+@@ -1835,8 +1934,12 @@
+   // NULL in the normal case, non-NULL when using a method from an
+   // anonymous field which does not require a stub.
+   Type* expr_type_;
+-  // The method itself.
+-  Named_object* method_;
++  // The method.
++  const Method* method_;
++  // The function to call.  This is not the same as
++  // method_->named_object() when the method has a stub.  This will be
++  // the real function rather than the stub.
++  Named_object* function_;
+ };
+ 
+ // A reference to a field in a struct.
+@@ -1847,7 +1950,7 @@
+   Field_reference_expression(Expression* expr, unsigned int field_index,
+ 			     Location location)
+     : Expression(EXPRESSION_FIELD_REFERENCE, location),
+-      expr_(expr), field_index_(field_index), called_fieldtrack_(false)
++      expr_(expr), field_index_(field_index), implicit_(false), called_fieldtrack_(false)
+   { }
+ 
+   // Return the struct expression.
+@@ -1860,6 +1963,15 @@
+   field_index() const
+   { return this->field_index_; }
+ 
++  // Return whether this node was implied by an anonymous field.
++  bool
++  implicit() const
++  { return this->implicit_; }
++
++  void
++  set_implicit(bool implicit)
++  { this->implicit_ = implicit; }
++
+   // Set the struct expression.  This is used when parsing.
+   void
+   set_struct_expression(Expression* expr)
+@@ -1914,6 +2026,9 @@
+   Expression* expr_;
+   // The zero-based index of the field we are retrieving.
+   unsigned int field_index_;
++  // Whether this node was emitted implicitly for an embedded field,
++  // that is, expr_ is not the expr_ of the original user node.
++  bool implicit_;
+   // Whether we have already emitted a fieldtrack call.
+   bool called_fieldtrack_;
+ };
+@@ -1940,6 +2055,11 @@
+   name() const
+   { return this->name_; }
+ 
++  // Create a thunk to call the method NAME in TYPE when it is used as
++  // part of a method value.
++  static Named_object*
++  create_thunk(Gogo*, Interface_type* type, const std::string& name);
++
+   // Return a tree for the pointer to the function to call, given a
+   // tree for the expression.
+   tree
+@@ -1955,6 +2075,9 @@
+   int
+   do_traverse(Traverse* traverse);
+ 
++  Expression*
++  do_lower(Gogo*, Named_object*, Statement_inserter*, int);
++
+   Type*
+   do_type();
+ 
+@@ -1979,6 +2102,13 @@
+   do_dump_expression(Ast_dump_context*) const;
+ 
+  private:
++  // A mapping from interface types to a list of thunks we have
++  // created for methods.
++  typedef std::vector<std::pair<std::string, Named_object*> > Method_thunks;
++  typedef Unordered_map(Interface_type*, Method_thunks*)
++    Interface_method_thunks;
++  static Interface_method_thunks interface_method_thunks;
++
+   // The expression for the interface object.  This should have a type
+   // of interface or pointer to interface.
+   Expression* expr_;
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/go.cc gcc-4.8.1/gcc/go/gofrontend/go.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/go.cc	2012-10-30 19:38:49.000000000 -0500
++++ gcc-4.8.1/gcc/go/gofrontend/go.cc	2013-06-20 19:12:07.782178000 -0500
+@@ -44,7 +44,7 @@
+ GO_EXTERN_C
+ void
+ go_parse_input_files(const char** filenames, unsigned int filename_count,
+-		     bool only_check_syntax, bool require_return_statement)
++		     bool only_check_syntax, bool)
+ {
+   go_assert(filename_count > 0);
+ 
+@@ -84,10 +84,16 @@
+   // Finalize method lists and build stub methods for named types.
+   ::gogo->finalize_methods();
+ 
++  // Check that functions have a terminating statement.
++  ::gogo->check_return_statements();
++
+   // Now that we have seen all the names, lower the parse tree into a
+   // form which is easier to use.
+   ::gogo->lower_parse_tree();
+ 
++  // Create function descriptors as needed.
++  ::gogo->create_function_descriptors();
++
+   // Write out queued up functions for hash and comparison of types.
+   ::gogo->write_specific_type_functions();
+ 
+@@ -104,10 +110,6 @@
+   if (only_check_syntax)
+     return;
+ 
+-  // Check that functions have return statements.
+-  if (require_return_statement)
+-    ::gogo->check_return_statements();
+-
+   // Export global identifiers as appropriate.
+   ::gogo->do_exports();
+ 
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/gogo.cc gcc-4.8.1/gcc/go/gofrontend/gogo.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/gogo.cc	2013-02-10 00:02:38.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/gogo.cc	2013-08-07 14:00:55.550656000 -0500
+@@ -364,7 +364,7 @@
+       // Declare "main" as a function which takes no parameters and
+       // returns no value.
+       Location uloc = Linemap::unknown_location();
+-      this->declare_function("main",
++      this->declare_function(Gogo::pack_hidden_name("main", false),
+ 			     Type::make_function_type (NULL, NULL, NULL, uloc),
+ 			     uloc);
+     }
+@@ -819,7 +819,8 @@
+       char buf[30];
+       snprintf(buf, sizeof buf, ".$sink%d", sink_count);
+       ++sink_count;
+-      ret = Named_object::make_function(buf, NULL, function);
++      ret = this->package_->bindings()->add_function(buf, NULL, function);
++      ret->func_value()->set_is_sink();
+     }
+   else if (!type->is_method())
+     {
+@@ -1277,6 +1278,14 @@
+ 		   n.c_str());
+ 	  inform(pf->second, "%qs imported here", n.c_str());
+ 	}
++
++      // No package scope identifier may be named "init".
++      if (!p->second->is_function()
++	  && Gogo::unpack_hidden_name(p->second->name()) == "init")
++	{
++	  error_at(p->second->location(),
++	           "cannot declare init - must be func");
++	}
+     }
+ }
+ 
+@@ -1599,8 +1608,9 @@
+   return TRAVERSE_CONTINUE;
+ }
+ 
+-// Lower function closure types.  Record the function while lowering
+-// it, so that we can pass it down when lowering an expression.
++// Lower the body of a function, and set the closure type.  Record the
++// function while lowering it, so that we can pass it down when
++// lowering an expression.
+ 
+ int
+ Lower_parse_tree::function(Named_object* no)
+@@ -1732,6 +1742,146 @@
+   lower.constant(no, false);
+ }
+ 
++// Traverse the tree to create function descriptors as needed.
++
++class Create_function_descriptors : public Traverse
++{
++ public:
++  Create_function_descriptors(Gogo* gogo)
++    : Traverse(traverse_functions | traverse_expressions),
++      gogo_(gogo)
++  { }
++
++  int
++  function(Named_object*);
++
++  int
++  expression(Expression**);
++
++ private:
++  Gogo* gogo_;
++};
++
++// Create a descriptor for every top-level exported function.
++
++int
++Create_function_descriptors::function(Named_object* no)
++{
++  if (no->is_function()
++      && no->func_value()->enclosing() == NULL
++      && !no->func_value()->is_method()
++      && !no->func_value()->is_descriptor_wrapper()
++      && !Gogo::is_hidden_name(no->name()))
++    no->func_value()->descriptor(this->gogo_, no);
++
++  return TRAVERSE_CONTINUE;
++}
++
++// If we see a function referenced in any way other than calling it,
++// create a descriptor for it.
++
++int
++Create_function_descriptors::expression(Expression** pexpr)
++{
++  Expression* expr = *pexpr;
++
++  Func_expression* fe = expr->func_expression();
++  if (fe != NULL)
++    {
++      // We would not get here for a call to this function, so this is
++      // a reference to a function other than calling it.  We need a
++      // descriptor.
++      if (fe->closure() != NULL)
++	return TRAVERSE_CONTINUE;
++      Named_object* no = fe->named_object();
++      if (no->is_function() && !no->func_value()->is_method())
++	no->func_value()->descriptor(this->gogo_, no);
++      else if (no->is_function_declaration()
++	       && !no->func_declaration_value()->type()->is_method()
++	       && !Linemap::is_predeclared_location(no->location()))
++	no->func_declaration_value()->descriptor(this->gogo_, no);
++      return TRAVERSE_CONTINUE;
++    }
++
++  Bound_method_expression* bme = expr->bound_method_expression();
++  if (bme != NULL)
++    {
++      // We would not get here for a call to this method, so this is a
++      // method value.  We need to create a thunk.
++      Bound_method_expression::create_thunk(this->gogo_, bme->method(),
++					    bme->function());
++      return TRAVERSE_CONTINUE;
++    }
++
++  Interface_field_reference_expression* ifre =
++    expr->interface_field_reference_expression();
++  if (ifre != NULL)
++    {
++      // We would not get here for a call to this interface method, so
++      // this is a method value.  We need to create a thunk.
++      Interface_type* type = ifre->expr()->type()->interface_type();
++      if (type != NULL)
++	Interface_field_reference_expression::create_thunk(this->gogo_, type,
++							   ifre->name());
++      return TRAVERSE_CONTINUE;
++    }
++
++  Call_expression* ce = expr->call_expression();
++  if (ce != NULL)
++    {
++      Expression* fn = ce->fn();
++      if (fn->func_expression() != NULL
++	  || fn->bound_method_expression() != NULL
++	  || fn->interface_field_reference_expression() != NULL)
++	{
++	  // Traverse the arguments but not the function.
++	  Expression_list* args = ce->args();
++	  if (args != NULL)
++	    {
++	      if (args->traverse(this) == TRAVERSE_EXIT)
++		return TRAVERSE_EXIT;
++	    }
++	  return TRAVERSE_SKIP_COMPONENTS;
++	}
++    }
++
++  return TRAVERSE_CONTINUE;
++}
++
++// Create function descriptors as needed.  We need a function
++// descriptor for all exported functions and for all functions that
++// are referenced without being called.
++
++void
++Gogo::create_function_descriptors()
++{
++  // Create a function descriptor for any exported function that is
++  // declared in this package.  This is so that we have a descriptor
++  // for functions written in assembly.  Gather the descriptors first
++  // so that we don't add declarations while looping over them.
++  std::vector<Named_object*> fndecls;
++  Bindings* b = this->package_->bindings();
++  for (Bindings::const_declarations_iterator p = b->begin_declarations();
++       p != b->end_declarations();
++       ++p)
++    {
++      Named_object* no = p->second;
++      if (no->is_function_declaration()
++	  && !no->func_declaration_value()->type()->is_method()
++	  && !Linemap::is_predeclared_location(no->location())
++	  && !Gogo::is_hidden_name(no->name()))
++	fndecls.push_back(no);
++    }
++  for (std::vector<Named_object*>::const_iterator p = fndecls.begin();
++       p != fndecls.end();
++       ++p)
++    (*p)->func_declaration_value()->descriptor(this, *p);
++  fndecls.clear();
++
++  Create_function_descriptors cfd(this);
++  this->traverse(&cfd);
++}
++
+ // Look for interface types to finalize methods of inherited
+ // interfaces.
+ 
+@@ -2643,6 +2793,13 @@
+   Expression* closure = NULL;
+   if (orig_func->needs_closure())
+     {
++      // For the new function we are creating, declare a new parameter
++      // variable NEW_CLOSURE_NO and set it to be the closure variable
++      // of the function.  This will be set to the closure value
++      // passed in by the caller.  Then pass a reference to this
++      // variable as the closure value when calling the original
++      // function.  In other words, simply pass the closure value
++      // through the thunk we are creating.
+       Named_object* orig_closure_no = orig_func->closure_var();
+       Variable* orig_closure_var = orig_closure_no->var_value();
+       Variable* new_var = new Variable(orig_closure_var->type(), NULL, false,
+@@ -2682,22 +2839,7 @@
+   // Any varargs call has already been lowered.
+   call->set_varargs_are_lowered();
+ 
+-  Statement* s;
+-  if (orig_fntype->results() == NULL || orig_fntype->results()->empty())
+-    s = Statement::make_statement(call, true);
+-  else
+-    {
+-      Expression_list* vals = new Expression_list();
+-      size_t rc = orig_fntype->results()->size();
+-      if (rc == 1)
+-	vals->push_back(call);
+-      else
+-	{
+-	  for (size_t i = 0; i < rc; ++i)
+-	    vals->push_back(Expression::make_call_result(call, i));
+-	}
+-      s = Statement::make_return_statement(vals, location);
+-    }
++  Statement* s = Statement::make_return_from_call(call, location);
+   s->determine_types();
+   gogo->add_statement(s);
+ 
+@@ -2991,7 +3133,8 @@
+     return TRAVERSE_CONTINUE;
+ 
+   if (func->block()->may_fall_through())
+-    error_at(func->location(), "control reaches end of non-void function");
++    error_at(func->block()->end_location(),
++	     "missing return at end of function");
+ 
+   return TRAVERSE_CONTINUE;
+ }
+@@ -3101,6 +3244,7 @@
+   Map_type::make_map_descriptor_type();
+   Channel_type::make_chan_type_descriptor_type();
+   Interface_type::make_interface_type_descriptor_type();
++  Expression::make_func_descriptor_type();
+   Type::convert_builtin_named_types(this);
+ 
+   Runtime::convert_types(this);
+@@ -3128,10 +3272,10 @@
+ 		   Location location)
+   : type_(type), enclosing_(enclosing), results_(NULL),
+     closure_var_(NULL), block_(block), location_(location), labels_(),
+-    local_type_count_(0), fndecl_(NULL), defer_stack_(NULL),
+-    results_are_named_(false), nointerface_(false), calls_recover_(false),
+-    is_recover_thunk_(false), has_recover_thunk_(false),
+-    in_unique_section_(false)
++    local_type_count_(0), descriptor_(NULL), fndecl_(NULL), defer_stack_(NULL),
++    is_sink_(false), results_are_named_(false), nointerface_(false),
++    calls_recover_(false), is_recover_thunk_(false), has_recover_thunk_(false),
++    in_unique_section_(false), is_descriptor_wrapper_(false)
+ {
+ }
+ 
+@@ -3206,6 +3350,7 @@
+ {
+   if (this->closure_var_ == NULL)
+     {
++      go_assert(this->descriptor_ == NULL);
+       // We don't know the type of the variable yet.  We add fields as
+       // we find them.
+       Location loc = this->type_->location();
+@@ -3229,7 +3374,14 @@
+     return;
+   Named_object* closure = this->closure_var_;
+   Struct_type* st = closure->var_value()->type()->deref()->struct_type();
+-  unsigned int index = 0;
++
++  // The first field of a closure is always a pointer to the function
++  // code.
++  Type* voidptr_type = Type::make_pointer_type(Type::make_void_type());
++  st->push_field(Struct_field(Typed_identifier(".$f", voidptr_type,
++					       this->location_)));
++
++  unsigned int index = 1;
+   for (Closure_fields::const_iterator p = this->closure_fields_.begin();
+        p != this->closure_fields_.end();
+        ++p, ++index)
+@@ -3410,6 +3562,102 @@
+     this->block_->determine_types();
+ }
+ 
++// Build a wrapper function for a function descriptor.  A function
++// descriptor refers to a function that takes a closure as its last
++// argument.  In this case there will be no closure, but an indirect
++// call will pass nil as the last argument.  We need to build a
++// wrapper function that accepts and discards that last argument, so
++// that cases like -mrtd will work correctly.  In most cases the
++// wrapper function will simply be a jump.
++
++Named_object*
++Function::make_descriptor_wrapper(Gogo* gogo, Named_object* no,
++				  Function_type* orig_fntype)
++{
++  Location loc = no->location();
++
++  Type* vt = Type::make_pointer_type(Type::make_void_type());
++  Function_type* new_fntype = orig_fntype->copy_with_closure(vt);
++
++  std::string name = no->name() + "$descriptorfn";
++  Named_object* dno = gogo->start_function(name, new_fntype, false, loc);
++  dno->func_value()->is_descriptor_wrapper_ = true;
++
++  // Put the wrapper in a unique section so that it can be discarded
++  // by the linker if it is not needed.  Every top-level function will
++  // get a wrapper, in case there is a reference other than a call
++  // from some other package, but most will not need one.
++  dno->func_value()->set_in_unique_section();
++
++  gogo->start_block(loc);
++
++  Expression* fn = Expression::make_func_reference(no, NULL, loc);
++
++  // Call the function begin wrapped, passing all of the arguments
++  // except for the last one (the last argument is the ignored
++  // closure).
++  const Typed_identifier_list* orig_params = orig_fntype->parameters();
++  Expression_list* args;
++  if (orig_params == NULL || orig_params->empty())
++    args = NULL;
++  else
++    {
++      const Typed_identifier_list* new_params = new_fntype->parameters();
++      args = new Expression_list();
++      for (Typed_identifier_list::const_iterator p = new_params->begin();
++	   p + 1 != new_params->end();
++	   ++p)
++	{
++	  Named_object* p_no = gogo->lookup(p->name(), NULL);
++	  go_assert(p_no != NULL
++		    && p_no->is_variable()
++		    && p_no->var_value()->is_parameter());
++	  args->push_back(Expression::make_var_reference(p_no, loc));
++	}
++    }
++
++  Call_expression* call = Expression::make_call(fn, args,
++						orig_fntype->is_varargs(),
++						loc);
++  call->set_varargs_are_lowered();
++
++  Statement* s = Statement::make_return_from_call(call, loc);
++  gogo->add_statement(s);
++  Block* b = gogo->finish_block(loc);
++  gogo->add_block(b, loc);
++  gogo->lower_block(dno, b);
++  gogo->finish_function(loc);
++
++  return dno;
++}
++
++// Return the function descriptor, the value you get when you refer to
++// the function in Go code without calling it.
++
++Expression*
++Function::descriptor(Gogo* gogo, Named_object* no)
++{
++  go_assert(!this->is_method());
++  go_assert(this->closure_var_ == NULL);
++  go_assert(!this->is_descriptor_wrapper_);
++  if (this->descriptor_ == NULL)
++    {
++      // Make and record the descriptor first, so that when we lower
++      // the descriptor wrapper we don't try to make it again.
++      Func_descriptor_expression* descriptor =
++	Expression::make_func_descriptor(no);
++      this->descriptor_ = descriptor;
++      if (no->package() == NULL
++	  && !Linemap::is_predeclared_location(no->location()))
++	{
++	  Named_object* dno = Function::make_descriptor_wrapper(gogo, no,
++								this->type_);
++	  descriptor->set_descriptor_wrapper(dno);
++	}
++    }
++  return this->descriptor_;
++}
++
+ // Get a pointer to the variable representing the defer stack for this
+ // function, making it if necessary.  The value of the variable is set
+ // by the runtime routines to true if the function is returning,
+@@ -3940,6 +4188,32 @@
+     }
+ }
+ 
++// Class Function_declaration.
++
++// Return the function descriptor.
++
++Expression*
++Function_declaration::descriptor(Gogo* gogo, Named_object* no)
++{
++  go_assert(!this->fntype_->is_method());
++  if (this->descriptor_ == NULL)
++    {
++      // Make and record the descriptor first, so that when we lower
++      // the descriptor wrapper we don't try to make it again.
++      Func_descriptor_expression* descriptor =
++	Expression::make_func_descriptor(no);
++      this->descriptor_ = descriptor;
++      if (no->package() == NULL
++	  && !Linemap::is_predeclared_location(no->location()))
++	{
++	  Named_object* dno = Function::make_descriptor_wrapper(gogo, no,
++								this->fntype_);
++	  descriptor->set_descriptor_wrapper(dno);
++	}
++    }
++  return this->descriptor_;
++}
++
+ // Class Variable.
+ 
+ Variable::Variable(Type* type, Expression* init, bool is_global,
+@@ -4755,6 +5029,12 @@
+ Named_object::set_function_value(Function* function)
+ {
+   go_assert(this->classification_ == NAMED_OBJECT_FUNC_DECLARATION);
++  if (this->func_declaration_value()->has_descriptor())
++    {
++      Expression* descriptor =
++	this->func_declaration_value()->descriptor(NULL, NULL);
++      function->set_descriptor(descriptor);
++    }
+   this->classification_ = NAMED_OBJECT_FUNC;
+   // FIXME: We should free the old value.
+   this->u_.func_value = function;
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/gogo.h gcc-4.8.1/gcc/go/gofrontend/gogo.h
+--- gcc-4.8.1.orig/gcc/go/gofrontend/gogo.h	2012-12-21 16:23:23.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/gogo.h	2013-06-24 18:13:14.268180000 -0500
+@@ -476,6 +476,10 @@
+   void
+   lower_constant(Named_object*);
+ 
++  // Create all necessary function descriptors.
++  void
++  create_function_descriptors();
++
+   // Finalize the method lists and build stub methods for named types.
+   void
+   finalize_methods();
+@@ -614,10 +618,6 @@
+   receive_from_channel(tree type_tree, tree type_descriptor_tree, tree channel,
+ 		       Location);
+ 
+-  // Make a trampoline which calls FNADDR passing CLOSURE.
+-  tree
+-  make_trampoline(tree fnaddr, tree closure, Location);
+-
+  private:
+   // During parsing, we keep a stack of functions.  Each function on
+   // the stack is one that we are currently parsing.  For each
+@@ -669,10 +669,6 @@
+   tree
+   ptr_go_string_constant_tree(const std::string&);
+ 
+-  // Return the type of a trampoline.
+-  static tree
+-  trampoline_type_tree();
+-
+   // Type used to map import names to packages.
+   typedef std::map<std::string, Package*> Imports;
+ 
+@@ -915,6 +911,14 @@
+   result_variables()
+   { return this->results_; }
+ 
++  bool
++  is_sink() const
++  { return this->is_sink_; }
++
++  void
++  set_is_sink()
++  { this->is_sink_ = true; }
++
+   // Whether the result variables have names.
+   bool
+   results_are_named() const
+@@ -1046,6 +1050,12 @@
+   set_in_unique_section()
+   { this->in_unique_section_ = true; }
+ 
++  // Whether this function was created as a descriptor wrapper for
++  // another function.
++  bool
++  is_descriptor_wrapper() const
++  { return this->is_descriptor_wrapper_; }
++
+   // Swap with another function.  Used only for the thunk which calls
+   // recover.
+   void
+@@ -1059,6 +1069,26 @@
+   void
+   determine_types();
+ 
++  // Return an expression for the function descriptor, given the named
++  // object for this function.  This may only be called for functions
++  // without a closure.  This will be an immutable struct with one
++  // field that points to the function's code.
++  Expression*
++  descriptor(Gogo*, Named_object*);
++
++  // Set the descriptor for this function.  This is used when a
++  // function declaration is followed by a function definition.
++  void
++  set_descriptor(Expression* descriptor)
++  {
++    go_assert(this->descriptor_ == NULL);
++    this->descriptor_ = descriptor;
++  }
++
++  // Build a descriptor wrapper function.
++  static Named_object*
++  make_descriptor_wrapper(Gogo*, Named_object*, Function_type*);
++
+   // Return the function's decl given an identifier.
+   tree
+   get_or_make_decl(Gogo*, Named_object*, tree id);
+@@ -1137,25 +1167,32 @@
+   Labels labels_;
+   // The number of local types defined in this function.
+   unsigned int local_type_count_;
++  // The function descriptor, if any.
++  Expression* descriptor_;
+   // The function decl.
+   tree fndecl_;
+   // The defer stack variable.  A pointer to this variable is used to
+   // distinguish the defer stack for one function from another.  This
+   // is NULL unless we actually need a defer stack.
+   Temporary_statement* defer_stack_;
++  // True if this function is sink-named.  No code is generated.
++  bool is_sink_ : 1;
+   // True if the result variables are named.
+-  bool results_are_named_;
++  bool results_are_named_ : 1;
+   // True if this method should not be included in the type descriptor.
+-  bool nointerface_;
++  bool nointerface_ : 1;
+   // True if this function calls the predeclared recover function.
+-  bool calls_recover_;
++  bool calls_recover_ : 1;
+   // True if this a thunk built for a function which calls recover.
+-  bool is_recover_thunk_;
++  bool is_recover_thunk_ : 1;
+   // True if this function already has a recover thunk.
+-  bool has_recover_thunk_;
++  bool has_recover_thunk_ : 1;
+   // True if this function should be put in a unique section.  This is
+   // turned on for field tracking.
+   bool in_unique_section_ : 1;
++  // True if this is a function wrapper created to put in a function
++  // descriptor.
++  bool is_descriptor_wrapper_ : 1;
+ };
+ 
+ // A snapshot of the current binding state.
+@@ -1198,7 +1235,8 @@
+ {
+  public:
+   Function_declaration(Function_type* fntype, Location location)
+-    : fntype_(fntype), location_(location), asm_name_(), fndecl_(NULL)
++    : fntype_(fntype), location_(location), asm_name_(), descriptor_(NULL),
++      fndecl_(NULL)
+   { }
+ 
+   Function_type*
+@@ -1218,10 +1256,27 @@
+   set_asm_name(const std::string& asm_name)
+   { this->asm_name_ = asm_name; }
+ 
++  // Return an expression for the function descriptor, given the named
++  // object for this function.  This may only be called for functions
++  // without a closure.  This will be an immutable struct with one
++  // field that points to the function's code.
++  Expression*
++  descriptor(Gogo*, Named_object*);
++
++  // Return true if we have created a descriptor for this declaration.
++  bool
++  has_descriptor() const
++  { return this->descriptor_ != NULL; }
++
+   // Return a decl for the function given an identifier.
+   tree
+   get_or_make_decl(Gogo*, Named_object*, tree id);
+ 
++  // If there is a descriptor, build it into the backend
++  // representation.
++  void
++  build_backend_descriptor(Gogo*);
++
+   // Export a function declaration.
+   void
+   export_func(Export* exp, const std::string& name) const
+@@ -1235,6 +1290,8 @@
+   // The assembler name: this is the name to use in references to the
+   // function.  This is normally empty.
+   std::string asm_name_;
++  // The function descriptor, if any.
++  Expression* descriptor_;
+   // The function decl if needed.
+   tree fndecl_;
+ };
+@@ -1630,7 +1687,7 @@
+   Named_constant(Type* type, Expression* expr, int iota_value,
+ 		 Location location)
+     : type_(type), expr_(expr), iota_value_(iota_value), location_(location),
+-      lowering_(false)
++      lowering_(false), is_sink_(false)
+   { }
+ 
+   Type*
+@@ -1664,6 +1721,14 @@
+   clear_lowering()
+   { this->lowering_ = false; }
+ 
++  bool
++  is_sink() const
++  { return this->is_sink_; }
++
++  void
++  set_is_sink()
++  { this->is_sink_ = true; }
++
+   // Traverse the expression.
+   int
+   traverse_expression(Traverse*);
+@@ -1699,6 +1764,8 @@
+   Location location_;
+   // Whether we are currently lowering this constant.
+   bool lowering_;
++  // Whether this constant is blank named and needs only type checking.
++  bool is_sink_;
+ };
+ 
+ // A type declaration.
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/gogo-tree.cc gcc-4.8.1/gcc/go/gofrontend/gogo-tree.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/gogo-tree.cc	2013-01-28 18:28:09.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/gogo-tree.cc	2013-06-24 18:13:14.268180000 -0500
+@@ -755,6 +755,18 @@
+   this->build_interface_method_tables();
+ 
+   Bindings* bindings = this->current_bindings();
++
++  for (Bindings::const_declarations_iterator p = bindings->begin_declarations();
++       p != bindings->end_declarations();
++       ++p)
++    {
++      // If any function declarations needed a descriptor, make sure
++      // we build it.
++      Named_object* no = p->second;
++      if (no->is_function_declaration())
++	no->func_declaration_value()->build_backend_descriptor(this);
++    }
++
+   size_t count_definitions = bindings->size_definitions();
+   size_t count = count_definitions;
+ 
+@@ -782,6 +794,8 @@
+     {
+       Named_object* no = *p;
+ 
++      go_assert(i < count);
++
+       go_assert(!no->is_type_declaration() && !no->is_function_declaration());
+       // There is nothing to do for a package.
+       if (no->is_package())
+@@ -800,6 +814,15 @@
+ 	  continue;
+ 	}
+ 
++      // Skip blank named functions and constants.
++      if ((no->is_function() && no->func_value()->is_sink())
++	  || (no->is_const() && no->const_value()->is_sink()))
++        {
++          --i;
++          --count;
++          continue;
++        }
++
+       // There is nothing useful we can output for constants which
+       // have ideal or non-integral type.
+       if (no->is_const())
+@@ -1255,14 +1278,47 @@
+   if (this->fndecl_ == NULL_TREE)
+     {
+       tree functype = type_to_tree(this->type_->get_backend(gogo));
++
++      if (functype != error_mark_node)
++	{
++	  // The type of a function comes back as a pointer to a
++	  // struct whose first field is the function, but we want the
++	  // real function type for a function declaration.
++	  go_assert(POINTER_TYPE_P(functype)
++		    && TREE_CODE(TREE_TYPE(functype)) == RECORD_TYPE);
++	  functype = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(functype)));
++	  go_assert(FUNCTION_POINTER_TYPE_P(functype));
++	  functype = TREE_TYPE(functype);
++
++	  // In the struct, the function type always has a trailing
++	  // closure argument.  For the function body, we only use
++	  // that trailing arg if this is a function literal or if it
++	  // is a wrapper created to store in a descriptor.  Remove it
++	  // in that case.
++	  if (this->enclosing_ == NULL && !this->is_descriptor_wrapper_)
++	    {
++	      tree old_params = TYPE_ARG_TYPES(functype);
++	      go_assert(old_params != NULL_TREE
++			&& old_params != void_list_node);
++	      tree new_params = NULL_TREE;
++	      tree *pp = &new_params;
++	      while (TREE_CHAIN (old_params) != void_list_node)
++		{
++		  tree p = TREE_VALUE(old_params);
++		  go_assert(TYPE_P(p));
++		  *pp = tree_cons(NULL_TREE, p, NULL_TREE);
++		  pp = &TREE_CHAIN(*pp);
++		  old_params = TREE_CHAIN (old_params);
++		}
++	      *pp = void_list_node;
++	      functype = build_function_type(TREE_TYPE(functype), new_params);
++	    }
++	}
++
+       if (functype == error_mark_node)
+ 	this->fndecl_ = error_mark_node;
+       else
+ 	{
+-	  // The type of a function comes back as a pointer, but we
+-	  // want the real function type for a function declaration.
+-	  go_assert(POINTER_TYPE_P(functype));
+-	  functype = TREE_TYPE(functype);
+ 	  tree decl = build_decl(this->location().gcc_location(), FUNCTION_DECL,
+                                  id, functype);
+ 
+@@ -1308,9 +1364,6 @@
+ 	  DECL_CONTEXT(resdecl) = decl;
+ 	  DECL_RESULT(decl) = resdecl;
+ 
+-	  if (this->enclosing_ != NULL)
+-	    DECL_STATIC_CHAIN(decl) = 1;
+-
+ 	  // If a function calls the predeclared recover function, we
+ 	  // can't inline it, because recover behaves differently in a
+ 	  // function passed directly to defer.  If this is a recover
+@@ -1333,29 +1386,6 @@
+ 	    resolve_unique_section (decl, 0, 1);
+ 
+ 	  go_preserve_from_gc(decl);
+-
+-	  if (this->closure_var_ != NULL)
+-	    {
+-	      push_struct_function(decl);
+-
+-	      Bvariable* bvar = this->closure_var_->get_backend_variable(gogo,
+-									 no);
+-	      tree closure_decl = var_to_tree(bvar);
+-	      if (closure_decl == error_mark_node)
+-		this->fndecl_ = error_mark_node;
+-	      else
+-		{
+-		  DECL_ARTIFICIAL(closure_decl) = 1;
+-		  DECL_IGNORED_P(closure_decl) = 1;
+-		  TREE_USED(closure_decl) = 1;
+-		  DECL_ARG_TYPE(closure_decl) = TREE_TYPE(closure_decl);
+-		  TREE_READONLY(closure_decl) = 1;
+-
+-		  DECL_STRUCT_FUNCTION(decl)->static_chain_decl = closure_decl;
+-		}
+-
+-	      pop_cfun();
+-	    }
+ 	}
+     }
+   return this->fndecl_;
+@@ -1382,15 +1412,44 @@
+ 	}
+ 
+       tree functype = type_to_tree(this->fntype_->get_backend(gogo));
++
++      if (functype != error_mark_node)
++	{
++	  // The type of a function comes back as a pointer to a
++	  // struct whose first field is the function, but we want the
++	  // real function type for a function declaration.
++	  go_assert(POINTER_TYPE_P(functype)
++		    && TREE_CODE(TREE_TYPE(functype)) == RECORD_TYPE);
++	  functype = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(functype)));
++	  go_assert(FUNCTION_POINTER_TYPE_P(functype));
++	  functype = TREE_TYPE(functype);
++
++	  // In the struct, the function type always has a trailing
++	  // closure argument.  Here we are referring to the function
++	  // code directly, and we know it is not a function literal,
++	  // and we know it is not a wrapper created to store in a
++	  // descriptor.  Remove that trailing argument.
++	  tree old_params = TYPE_ARG_TYPES(functype);
++	  go_assert(old_params != NULL_TREE && old_params != void_list_node);
++	  tree new_params = NULL_TREE;
++	  tree *pp = &new_params;
++	  while (TREE_CHAIN (old_params) != void_list_node)
++	    {
++	      tree p = TREE_VALUE(old_params);
++	      go_assert(TYPE_P(p));
++	      *pp = tree_cons(NULL_TREE, p, NULL_TREE);
++	      pp = &TREE_CHAIN(*pp);
++	      old_params = TREE_CHAIN (old_params);
++	    }
++	  *pp = void_list_node;
++	  functype = build_function_type(TREE_TYPE(functype), new_params);
++	}
++
+       tree decl;
+       if (functype == error_mark_node)
+ 	decl = error_mark_node;
+       else
+ 	{
+-	  // The type of a function comes back as a pointer, but we
+-	  // want the real function type for a function declaration.
+-	  go_assert(POINTER_TYPE_P(functype));
+-	  functype = TREE_TYPE(functype);
+ 	  decl = build_decl(this->location().gcc_location(), FUNCTION_DECL, id,
+                             functype);
+ 	  TREE_PUBLIC(decl) = 1;
+@@ -1599,6 +1658,32 @@
+ 	    }
+ 	}
+     }
++
++  // The closure variable is passed last, if this is a function
++  // literal or a descriptor wrapper.
++  if (this->closure_var_ != NULL)
++    {
++      Bvariable* bvar =
++	this->closure_var_->get_backend_variable(gogo, named_function);
++      tree var_decl = var_to_tree(bvar);
++      if (var_decl != error_mark_node)
++	{
++	  go_assert(TREE_CODE(var_decl) == PARM_DECL);
++	  *pp = var_decl;
++	  pp = &DECL_CHAIN(*pp);
++	}
++    }
++  else if (this->enclosing_ != NULL || this->is_descriptor_wrapper_)
++    {
++      tree parm_decl = build_decl(this->location_.gcc_location(), PARM_DECL,
++				  get_identifier("$closure"),
++				  const_ptr_type_node);
++      DECL_CONTEXT(parm_decl) = current_function_decl;
++      DECL_ARG_TYPE(parm_decl) = const_ptr_type_node;
++      *pp = parm_decl;
++      pp = &DECL_CHAIN(*pp);
++    }
++
+   *pp = NULL_TREE;
+ 
+   DECL_ARGUMENTS(fndecl) = params;
+@@ -1681,6 +1766,13 @@
+ 
+       DECL_SAVED_TREE(fndecl) = code;
+     }
++
++  // If we created a descriptor for the function, make sure we emit it.
++  if (this->descriptor_ != NULL)
++    {
++      Translate_context context(gogo, NULL, NULL, NULL);
++      this->descriptor_->get_tree(&context);
++    }
+ }
+ 
+ // Build the wrappers around function code needed if the function has
+@@ -1844,6 +1936,20 @@
+     }
+ }
+ 
++// Build the descriptor for a function declaration.  This won't
++// necessarily happen if the package has just a declaration for the
++// function and no other reference to it, but we may still need the
++// descriptor for references from other packages.
++void
++Function_declaration::build_backend_descriptor(Gogo* gogo)
++{
++  if (this->descriptor_ != NULL)
++    {
++      Translate_context context(gogo, NULL, NULL, NULL);
++      this->descriptor_->get_tree(&context);
++    }
++}
++
+ // Return the integer type to use for a size.
+ 
+ GO_EXTERN_C
+@@ -2437,70 +2543,3 @@
+ 		    build2(COMPOUND_EXPR, type_tree, call, tmp));
+     }
+ }
+-
+-// Return the type of a function trampoline.  This is like
+-// get_trampoline_type in tree-nested.c.
+-
+-tree
+-Gogo::trampoline_type_tree()
+-{
+-  static tree type_tree;
+-  if (type_tree == NULL_TREE)
+-    {
+-      unsigned int size;
+-      unsigned int align;
+-      go_trampoline_info(&size, &align);
+-      tree t = build_index_type(build_int_cst(integer_type_node, size - 1));
+-      t = build_array_type(char_type_node, t);
+-
+-      type_tree = Gogo::builtin_struct(NULL, "__go_trampoline", NULL_TREE, 1,
+-				       "__data", t);
+-      t = TYPE_FIELDS(type_tree);
+-      DECL_ALIGN(t) = align;
+-      DECL_USER_ALIGN(t) = 1;
+-
+-      go_preserve_from_gc(type_tree);
+-    }
+-  return type_tree;
+-}
+-
+-// Make a trampoline which calls FNADDR passing CLOSURE.
+-
+-tree
+-Gogo::make_trampoline(tree fnaddr, tree closure, Location location)
+-{
+-  tree trampoline_type = Gogo::trampoline_type_tree();
+-  tree trampoline_size = TYPE_SIZE_UNIT(trampoline_type);
+-
+-  closure = save_expr(closure);
+-
+-  // We allocate the trampoline using a special function which will
+-  // mark it as executable.
+-  static tree trampoline_fndecl;
+-  tree x = Gogo::call_builtin(&trampoline_fndecl,
+-			      location,
+-			      "__go_allocate_trampoline",
+-			      2,
+-			      ptr_type_node,
+-			      size_type_node,
+-			      trampoline_size,
+-			      ptr_type_node,
+-			      fold_convert_loc(location.gcc_location(),
+-                                               ptr_type_node, closure));
+-  if (x == error_mark_node)
+-    return error_mark_node;
+-
+-  x = save_expr(x);
+-
+-  // Initialize the trampoline.
+-  tree calldecl = builtin_decl_implicit(BUILT_IN_INIT_HEAP_TRAMPOLINE);
+-  tree ini = build_call_expr(calldecl, 3, x, fnaddr, closure);
+-
+-  // On some targets the trampoline address needs to be adjusted.  For
+-  // example, when compiling in Thumb mode on the ARM, the address
+-  // needs to have the low bit set.
+-  x = build_call_expr(builtin_decl_explicit(BUILT_IN_ADJUST_TRAMPOLINE), 1, x);
+-  x = fold_convert(TREE_TYPE(fnaddr), x);
+-
+-  return build2(COMPOUND_EXPR, TREE_TYPE(x), ini, x);
+-}
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/parse.cc gcc-4.8.1/gcc/go/gofrontend/parse.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/parse.cc	2012-12-13 16:20:23.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/parse.cc	2013-08-17 13:04:58.702541000 -0500
+@@ -1457,6 +1457,16 @@
+ 
+       if (!Gogo::is_sink_name(pi->name()))
+ 	this->gogo_->add_constant(*pi, *pe, this->iota_value());
++      else
++	{
++	  static int count;
++	  char buf[30];
++	  snprintf(buf, sizeof buf, ".$sinkconst%d", count);
++	  ++count;
++	  Typed_identifier ti(std::string(buf), type, pi->location());
++	  Named_object* no = this->gogo_->add_constant(ti, *pe, this->iota_value());
++	  no->const_value()->set_is_sink();
++	}
+     }
+   if (pe != expr_list->end())
+     error_at(this->location(), "too many initializers");
+@@ -2627,7 +2637,11 @@
+   Named_object* this_function = this->gogo_->current_function();
+   Named_object* closure = this_function->func_value()->closure_var();
+ 
+-  Enclosing_var ev(var, in_function, this->enclosing_vars_.size());
++  // The last argument to the Enclosing_var constructor is the index
++  // of this variable in the closure.  We add 1 to the current number
++  // of enclosed variables, because the first field in the closure
++  // points to the function code.
++  Enclosing_var ev(var, in_function, this->enclosing_vars_.size() + 1);
+   std::pair<Enclosing_vars::iterator, bool> ins =
+     this->enclosing_vars_.insert(ev);
+   if (ins.second)
+@@ -2882,8 +2896,9 @@
+ // Create a closure for the nested function FUNCTION.  This is based
+ // on ENCLOSING_VARS, which is a list of all variables defined in
+ // enclosing functions and referenced from FUNCTION.  A closure is the
+-// address of a struct which contains the addresses of all the
+-// referenced variables.  This returns NULL if no closure is required.
++// address of a struct which point to the real function code and
++// contains the addresses of all the referenced variables.  This
++// returns NULL if no closure is required.
+ 
+ Expression*
+ Parse::create_closure(Named_object* function, Enclosing_vars* enclosing_vars,
+@@ -2899,16 +2914,25 @@
+   for (Enclosing_vars::const_iterator p = enclosing_vars->begin();
+        p != enclosing_vars->end();
+        ++p)
+-    ev[p->index()] = *p;
++    {
++      // Subtract 1 because index 0 is the function code.
++      ev[p->index() - 1] = *p;
++    }
+ 
+   // Build an initializer for a composite literal of the closure's
+   // type.
+ 
+   Named_object* enclosing_function = this->gogo_->current_function();
+   Expression_list* initializer = new Expression_list;
++
++  initializer->push_back(Expression::make_func_code_reference(function,
++							      location));
++
+   for (size_t i = 0; i < enclosing_var_count; ++i)
+     {
+-      go_assert(ev[i].index() == i);
++      // Add 1 to i because the first field in the closure is a
++      // pointer to the function code.
++      go_assert(ev[i].index() == i + 1);
+       Named_object* var = ev[i].var();
+       Expression* ref;
+       if (ev[i].in_function() == enclosing_function)
+@@ -3016,7 +3040,7 @@
+ 		  && t->array_type()->length()->is_nil_expression())
+ 		{
+ 		  error_at(ret->location(),
+-			   "invalid use of %<...%> in type conversion");
++			   "use of %<[...]%> outside of array literal");
+ 		  ret = Expression::make_error(loc);
+ 		}
+ 	      else
+@@ -4499,9 +4523,12 @@
+   bool is_fallthrough = false;
+   if (this->peek_token()->is_keyword(KEYWORD_FALLTHROUGH))
+     {
++      Location fallthrough_loc = this->location();
+       is_fallthrough = true;
+       if (this->advance_token()->is_op(OPERATOR_SEMICOLON))
+ 	this->advance_token();
++      if (this->peek_token()->is_op(OPERATOR_RCURLY))
++	error_at(fallthrough_loc, _("cannot fallthrough final case in switch"));
+     }
+ 
+   if (is_default)
+@@ -5239,7 +5266,8 @@
+ 	no->var_value()->set_type_from_range_value();
+       if (is_new)
+ 	any_new = true;
+-      p_range_clause->value = Expression::make_var_reference(no, location);
++      if (!Gogo::is_sink_name(pti->name()))
++        p_range_clause->value = Expression::make_var_reference(no, location);
+     }
+ 
+   if (!any_new)
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/runtime.def gcc-4.8.1/gcc/go/gofrontend/runtime.def
+--- gcc-4.8.1.orig/gcc/go/gofrontend/runtime.def	2012-11-29 12:11:17.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/runtime.def	2013-06-18 18:50:42.020320000 -0500
+@@ -224,11 +224,6 @@
+ DEF_GO_RUNTIME(NEW_NOPOINTERS, "__go_new_nopointers", P1(UINTPTR), R1(POINTER))
+ 
+ 
+-// Allocate a trampoline for a function literal.
+-DEF_GO_RUNTIME(ALLOCATE_GO_TRAMPOLINE, "__go_allocate_trampoline",
+-	       P2(UINTPTR, POINTER), R1(POINTER))
+-
+-
+ // Start a new goroutine.
+ DEF_GO_RUNTIME(GO, "__go_go", P2(FUNC_PTR, POINTER), R0())
+ 
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/statements.cc gcc-4.8.1/gcc/go/gofrontend/statements.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/statements.cc	2012-12-21 09:59:27.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/statements.cc	2013-08-07 14:00:55.550656000 -0500
+@@ -569,7 +569,10 @@
+ Assignment_statement::do_determine_types()
+ {
+   this->lhs_->determine_type_no_context();
+-  Type_context context(this->lhs_->type(), false);
++  Type* rhs_context_type = this->lhs_->type();
++  if (rhs_context_type->is_sink_type())
++    rhs_context_type = NULL;
++  Type_context context(rhs_context_type, false);
+   this->rhs_->determine_type(&context);
+ }
+ 
+@@ -1707,8 +1710,8 @@
+     this->expr_->discarding_value();
+ }
+ 
+-// An expression statement may fall through unless it is a call to a
+-// function which does not return.
++// An expression statement is only a terminating statement if it is
++// a call to panic.
+ 
+ bool
+ Expression_statement::do_may_fall_through() const
+@@ -1717,22 +1720,28 @@
+   if (call != NULL)
+     {
+       const Expression* fn = call->fn();
+-      const Func_expression* fe = fn->func_expression();
+-      if (fe != NULL)
++      // panic is still an unknown named object.
++      const Unknown_expression* ue = fn->unknown_expression();
++      if (ue != NULL)
+ 	{
+-	  const Named_object* no = fe->named_object();
++	  Named_object* no = ue->named_object();
+ 
+-	  Function_type* fntype;
+-	  if (no->is_function())
+-	    fntype = no->func_value()->type();
+-	  else if (no->is_function_declaration())
+-	    fntype = no->func_declaration_value()->type();
+-	  else
+-	    fntype = NULL;
+-
+-	  // The builtin function panic does not return.
+-	  if (fntype != NULL && fntype->is_builtin() && no->name() == "panic")
+-	    return false;
++          if (no->is_unknown())
++            no = no->unknown_value()->real_named_object();
++          if (no != NULL)
++            {
++              Function_type* fntype;
++              if (no->is_function())
++                fntype = no->func_value()->type();
++              else if (no->is_function_declaration())
++                fntype = no->func_declaration_value()->type();
++              else
++                fntype = NULL;
++
++              // The builtin function panic does not return.
++              if (fntype != NULL && fntype->is_builtin() && no->name() == "panic")
++                return false;
++            }
+ 	}
+     }
+   return true;
+@@ -1953,10 +1962,15 @@
+ 	      && results->begin()->type()->points_to() == NULL)))
+     return false;
+ 
+-  // If this calls something which is not a simple function, then we
++  // If this calls something that is not a simple function, then we
+   // need a thunk.
+   Expression* fn = this->call_->call_expression()->fn();
+-  if (fn->interface_field_reference_expression() != NULL)
++  if (fn->func_expression() == NULL)
++    return false;
++
++  // If the function uses a closure, then we need a thunk.  FIXME: We
++  // could accept a zero argument function with a closure.
++  if (fn->func_expression()->closure() != NULL)
+     return false;
+ 
+   return true;
+@@ -2496,7 +2510,11 @@
+ 
+   Call_expression* ce = this->call_->call_expression();
+ 
+-  *pfn = ce->fn();
++  Expression* fn = ce->fn();
++  Func_expression* fe = fn->func_expression();
++  go_assert(fe != NULL);
++  *pfn = Expression::make_func_code_reference(fe->named_object(),
++					      fe->location());
+ 
+   const Expression_list* args = ce->args();
+   if (args == NULL || args->empty())
+@@ -2800,6 +2818,28 @@
+   return new Return_statement(vals, location);
+ }
+ 
++// Make a statement that returns the result of a call expression.
++
++Statement*
++Statement::make_return_from_call(Call_expression* call, Location location)
++{
++  size_t rc = call->result_count();
++  if (rc == 0)
++    return Statement::make_statement(call, true);
++  else
++    {
++      Expression_list* vals = new Expression_list();
++      if (rc == 1)
++	vals->push_back(call);
++      else
++	{
++	  for (size_t i = 0; i < rc; ++i)
++	    vals->push_back(Expression::make_call_result(call, i));
++	}
++      return Statement::make_return_statement(vals, location);
++    }
++}
++
+ // A break or continue statement.
+ 
+ class Bc_statement : public Statement
+@@ -3700,9 +3740,6 @@
+   void
+   do_check_types(Gogo*);
+ 
+-  bool
+-  do_may_fall_through() const;
+-
+   Bstatement*
+   do_get_backend(Translate_context*);
+ 
+@@ -3746,22 +3783,6 @@
+     this->set_is_error();
+ }
+ 
+-// Return whether this switch may fall through.
+-
+-bool
+-Constant_switch_statement::do_may_fall_through() const
+-{
+-  if (this->clauses_ == NULL)
+-    return true;
+-
+-  // If we have a break label, then some case needed it.  That implies
+-  // that the switch statement as a whole can fall through.
+-  if (this->break_label_ != NULL)
+-    return true;
+-
+-  return this->clauses_->may_fall_through();
+-}
+-
+ // Convert to GENERIC.
+ 
+ Bstatement*
+@@ -3911,6 +3932,22 @@
+   ast_dump_context->ostream() << std::endl;
+ }
+ 
++// Return whether this switch may fall through.
++
++bool
++Switch_statement::do_may_fall_through() const
++{
++  if (this->clauses_ == NULL)
++    return true;
++
++  // If we have a break label, then some case needed it.  That implies
++  // that the switch statement as a whole can fall through.
++  if (this->break_label_ != NULL)
++    return true;
++
++  return this->clauses_->may_fall_through();
++}
++
+ // Make a switch statement.
+ 
+ Switch_statement*
+@@ -4050,6 +4087,27 @@
+     }
+ }
+ 
++// Return true if this type clause may fall through to the statements
++// following the switch.
++
++bool
++Type_case_clauses::Type_case_clause::may_fall_through() const
++{
++  if (this->is_fallthrough_)
++    {
++      // This case means that we automatically fall through to the
++      // next case (it's used for T1 in case T1, T2:).  It does not
++      // mean that we fall through to the end of the type switch as a
++      // whole.  There is sure to be a next case and that next case
++      // will determine whether we fall through to the statements
++      // after the type switch.
++      return false;
++    }
++  if (this->statements_ == NULL)
++    return true;
++  return this->statements_->may_fall_through();
++}
++
+ // Dump the AST representation for a type case clause
+ 
+ void
+@@ -4148,6 +4206,25 @@
+ 			NULL);
+ }
+ 
++// Return true if these clauses may fall through to the statements
++// following the switch statement.
++
++bool
++Type_case_clauses::may_fall_through() const
++{
++  bool found_default = false;
++  for (Type_clauses::const_iterator p = this->clauses_.begin();
++       p != this->clauses_.end();
++       ++p)
++    {
++      if (p->may_fall_through())
++	return true;
++      if (p->is_default())
++	found_default = true;
++    }
++  return !found_default;
++}
++
+ // Dump the AST representation for case clauses (from a switch statement)
+ 
+ void
+@@ -4237,6 +4314,22 @@
+   return Statement::make_block_statement(b, loc);
+ }
+ 
++// Return whether this switch may fall through.
++
++bool
++Type_switch_statement::do_may_fall_through() const
++{
++  if (this->clauses_ == NULL)
++    return true;
++
++  // If we have a break label, then some case needed it.  That implies
++  // that the switch statement as a whole can fall through.
++  if (this->break_label_ != NULL)
++    return true;
++
++  return this->clauses_->may_fall_through();
++}
++
+ // Return the break label for this type switch statement, creating it
+ // if necessary.
+ 
+@@ -4954,6 +5047,19 @@
+   return Statement::make_block_statement(b, loc);
+ }
+ 
++// Whether the select statement itself may fall through to the following
++// statement.
++
++bool
++Select_statement::do_may_fall_through() const
++{
++  // A select statement is terminating if no break statement
++  // refers to it and all of its clauses are terminating.
++  if (this->break_label_ != NULL)
++    return true;
++  return this->clauses_->may_fall_through();
++}
++
+ // Return the backend representation for a select statement.
+ 
+ Bstatement*
+@@ -5114,6 +5220,20 @@
+   this->continue_label_ = continue_label;
+ }
+ 
++// Whether the overall statement may fall through.
++
++bool
++For_statement::do_may_fall_through() const
++{
++  // A for loop is terminating if it has no condition and
++  // no break statement.
++  if(this->cond_ != NULL)
++    return true;
++  if(this->break_label_ != NULL)
++    return true;
++  return false;
++}
++
+ // Dump the AST representation for a for statement.
+ 
+ void
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/statements.h gcc-4.8.1/gcc/go/gofrontend/statements.h
+--- gcc-4.8.1.orig/gcc/go/gofrontend/statements.h	2013-01-28 18:28:09.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/statements.h	2013-06-24 17:11:25.306173000 -0500
+@@ -207,6 +207,13 @@
+   static Return_statement*
+   make_return_statement(Expression_list*, Location);
+ 
++  // Make a statement that returns the result of a call expression.
++  // If the call does not return any results, this just returns the
++  // call expression as a statement, assuming that the function will
++  // end immediately afterward.
++  static Statement*
++  make_return_from_call(Call_expression*, Location);
++
+   // Make a break statement.
+   static Statement*
+   make_break_statement(Unnamed_label* label, Location);
+@@ -894,8 +901,7 @@
+   { this->clauses_->check_types(); }
+ 
+   bool
+-  do_may_fall_through() const
+-  { return this->clauses_->may_fall_through(); }
++  do_may_fall_through() const;
+ 
+   Bstatement*
+   do_get_backend(Translate_context*);
+@@ -1086,6 +1092,9 @@
+   Statement*
+   do_lower(Gogo*, Named_object*, Block*, Statement_inserter*);
+ 
++  bool
++  do_may_fall_through() const;
++
+   Bstatement*
+   do_get_backend(Translate_context*)
+   { go_unreachable(); }
+@@ -1399,6 +1408,9 @@
+   void
+   do_dump_statement(Ast_dump_context*) const;
+ 
++  bool
++  do_may_fall_through() const;
++
+  private:
+   // The value to switch on.  This may be NULL.
+   Expression* val_;
+@@ -1449,6 +1461,11 @@
+   lower(Type*, Block*, Temporary_statement* descriptor_temp,
+ 	Unnamed_label* break_label) const;
+ 
++  // Return true if these clauses may fall through to the statements
++  // following the switch statement.
++  bool
++  may_fall_through() const;
++
+   // Dump the AST representation to a dump context.
+   void
+   dump_clauses(Ast_dump_context*) const;
+@@ -1493,6 +1510,12 @@
+     lower(Type*, Block*, Temporary_statement* descriptor_temp,
+ 	  Unnamed_label* break_label, Unnamed_label** stmts_label) const;
+ 
++    // Return true if this clause may fall through to execute the
++    // statements following the switch statement.  This is not the
++    // same as whether this clause falls through to the next clause.
++    bool
++    may_fall_through() const;
++
+     // Dump the AST representation to a dump context.
+     void
+     dump_clause(Ast_dump_context*) const;
+@@ -1556,6 +1579,9 @@
+   void
+   do_dump_statement(Ast_dump_context*) const;
+ 
++  bool
++  do_may_fall_through() const;
++
+  private:
+   // The variable holding the value we are switching on.
+   Named_object* var_;
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/types.cc gcc-4.8.1/gcc/go/gofrontend/types.cc
+--- gcc-4.8.1.orig/gcc/go/gofrontend/types.cc	2013-01-31 18:23:22.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/types.cc	2013-08-23 16:04:55.544713000 -0500
+@@ -1298,8 +1298,8 @@
+   // converting INITIALIZER.
+ 
+   this->type_descriptor_var_ =
+-    gogo->backend()->immutable_struct(var_name, is_common, initializer_btype,
+-				      loc);
++    gogo->backend()->immutable_struct(var_name, false, is_common,
++				      initializer_btype, loc);
+   if (phash != NULL)
+     *phash = this->type_descriptor_var_;
+ 
+@@ -1308,7 +1308,7 @@
+   Bexpression* binitializer = tree_to_expr(initializer->get_tree(&context));
+ 
+   gogo->backend()->immutable_struct_set_init(this->type_descriptor_var_,
+-					     var_name, is_common,
++					     var_name, false, is_common,
+ 					     initializer_btype, loc,
+ 					     binitializer);
+ }
+@@ -1528,26 +1528,6 @@
+ 
+       // The type descriptor type.
+ 
+-      Typed_identifier_list* params = new Typed_identifier_list();
+-      params->push_back(Typed_identifier("key", unsafe_pointer_type, bloc));
+-      params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
+-
+-      Typed_identifier_list* results = new Typed_identifier_list();
+-      results->push_back(Typed_identifier("", uintptr_type, bloc));
+-
+-      Type* hashfn_type = Type::make_function_type(NULL, params, results, bloc);
+-
+-      params = new Typed_identifier_list();
+-      params->push_back(Typed_identifier("key1", unsafe_pointer_type, bloc));
+-      params->push_back(Typed_identifier("key2", unsafe_pointer_type, bloc));
+-      params->push_back(Typed_identifier("key_size", uintptr_type, bloc));
+-
+-      results = new Typed_identifier_list();
+-      results->push_back(Typed_identifier("", Type::lookup_bool_type(), bloc));
+-
+-      Type* equalfn_type = Type::make_function_type(NULL, params, results,
+-						    bloc);
+-
+       Struct_type* type_descriptor_type =
+ 	Type::make_builtin_struct_type(10,
+ 				       "Kind", uint8_type,
+@@ -1555,8 +1535,8 @@
+ 				       "fieldAlign", uint8_type,
+ 				       "size", uintptr_type,
+ 				       "hash", uint32_type,
+-				       "hashfn", hashfn_type,
+-				       "equalfn", equalfn_type,
++				       "hashfn", uintptr_type,
++				       "equalfn", uintptr_type,
+ 				       "string", pointer_string_type,
+ 				       "", pointer_uncommon_type,
+ 				       "ptrToThis",
+@@ -1946,8 +1926,8 @@
+   Named_object* equal_fn;
+   this->type_functions(gogo, name, hash_fntype, equal_fntype, &hash_fn,
+ 		       &equal_fn);
+-  vals->push_back(Expression::make_func_reference(hash_fn, NULL, bloc));
+-  vals->push_back(Expression::make_func_reference(equal_fn, NULL, bloc));
++  vals->push_back(Expression::make_func_code_reference(hash_fn, bloc));
++  vals->push_back(Expression::make_func_code_reference(equal_fn, bloc));
+ 
+   ++p;
+   go_assert(p->is_field_name("string"));
+@@ -2207,7 +2187,7 @@
+ 
+   ++p;
+   go_assert(p->is_field_name("tfn"));
+-  vals->push_back(Expression::make_func_reference(no, NULL, bloc));
++  vals->push_back(Expression::make_func_code_reference(no, bloc));
+ 
+   ++p;
+   go_assert(p == fields->end());
+@@ -3407,6 +3387,19 @@
+ Btype*
+ Function_type::do_get_backend(Gogo* gogo)
+ {
++  // When we do anything with a function value other than call it, it
++  // is represented as a pointer to a struct whose first field is the
++  // actual function.  So that is what we return as the type of a Go
++  // function.  The function stored in the first field always that
++  // takes one additional trailing argument: the closure pointer.  For
++  // a top-level function, this additional argument will only be
++  // passed when invoking the function indirectly, via the struct.
++
++  Location loc = this->location();
++  Btype* struct_type =
++    gogo->backend()->placeholder_struct_type("__go_descriptor", loc);
++  Btype* ptr_struct_type = gogo->backend()->pointer_type(struct_type);
++
+   Backend::Btyped_identifier breceiver;
+   if (this->receiver_ != NULL)
+     {
+@@ -3422,9 +3415,15 @@
+     }
+ 
+   std::vector<Backend::Btyped_identifier> bparameters;
+-  if (this->parameters_ != NULL)
++  size_t last;
++  if (this->parameters_ == NULL)
++    {
++      bparameters.resize(1);
++      last = 0;
++    }
++  else
+     {
+-      bparameters.resize(this->parameters_->size());
++      bparameters.resize(this->parameters_->size() + 1);
+       size_t i = 0;
+       for (Typed_identifier_list::const_iterator p = this->parameters_->begin();
+ 	   p != this->parameters_->end();
+@@ -3434,8 +3433,12 @@
+ 	  bparameters[i].btype = p->type()->get_backend(gogo);
+ 	  bparameters[i].location = p->location();
+ 	}
+-      go_assert(i == bparameters.size());
++      last = i;
+     }
++  go_assert(last + 1 == bparameters.size());
++  bparameters[last].name = "$closure";
++  bparameters[last].btype = ptr_struct_type;
++  bparameters[last].location = loc;
+ 
+   std::vector<Backend::Btyped_identifier> bresults;
+   if (this->results_ != NULL)
+@@ -3453,8 +3456,15 @@
+       go_assert(i == bresults.size());
+     }
+ 
+-  return gogo->backend()->function_type(breceiver, bparameters, bresults,
+-					this->location());
++  Btype* fntype = gogo->backend()->function_type(breceiver, bparameters,
++						 bresults, loc);
++  std::vector<Backend::Btyped_identifier> fields(1);
++  fields[0].name = "code";
++  fields[0].btype = fntype;
++  fields[0].location = loc;
++  if (!gogo->backend()->set_placeholder_struct_type(struct_type, fields))
++    return gogo->backend()->error_type();
++  return ptr_struct_type;
+ }
+ 
+ // The type of a function type descriptor.
+@@ -3826,6 +3836,49 @@
+   return ret;
+ }
+ 
++// Make a copy of a function type ignoring any receiver and adding a
++// closure parameter.
++
++Function_type*
++Function_type::copy_with_closure(Type* closure_type) const
++{
++  Typed_identifier_list* new_params = new Typed_identifier_list();
++  const Typed_identifier_list* orig_params = this->parameters_;
++  if (orig_params != NULL && !orig_params->empty())
++    {
++      static int count;
++      char buf[50];
++      for (Typed_identifier_list::const_iterator p = orig_params->begin();
++	   p != orig_params->end();
++	   ++p)
++	{
++	  snprintf(buf, sizeof buf, "pt.%u", count);
++	  ++count;
++	  new_params->push_back(Typed_identifier(buf, p->type(),
++						 p->location()));
++	}
++    }
++  new_params->push_back(Typed_identifier("closure.0", closure_type,
++					 this->location_));
++
++  const Typed_identifier_list* orig_results = this->results_;
++  Typed_identifier_list* new_results;
++  if (orig_results == NULL || orig_results->empty())
++    new_results = NULL;
++  else
++    {
++      new_results = new Typed_identifier_list();
++      for (Typed_identifier_list::const_iterator p = orig_results->begin();
++	   p != orig_results->end();
++	   ++p)
++	new_results->push_back(Typed_identifier("", p->type(),
++						p->location()));
++    }
++
++  return Type::make_function_type(NULL, new_params, new_results,
++				  this->location());
++}
++
+ // Make a function type.
+ 
+ Function_type*
+@@ -4168,6 +4221,22 @@
+     }
+ }
+ 
++// Return whether this field is an embedded built-in type.
++
++bool
++Struct_field::is_embedded_builtin(Gogo* gogo) const
++{
++  const std::string& name(this->field_name());
++  // We know that a field is an embedded type if it is anonymous.
++  // We can decide if it is a built-in type by checking to see if it is
++  // registered globally under the field's name.
++  // This allows us to distinguish between embedded built-in types and
++  // embedded types that are aliases to built-in types.
++  return (this->is_anonymous()
++          && !Gogo::is_hidden_name(name)
++          && gogo->lookup_global(name.c_str()) != NULL);
++}
++
+ // Class Struct_type.
+ 
+ // A hash table used to find identical unnamed structs so that they
+@@ -4532,6 +4601,7 @@
+ 	      go_assert(sub != NULL);
+ 	    }
+ 	  sub->set_struct_expression(here);
++          sub->set_implicit(true);
+ 	}
+       else if (subdepth > found_depth)
+ 	delete sub;
+@@ -4781,11 +4851,16 @@
+ 
+       ++q;
+       go_assert(q->is_field_name("pkgPath"));
+-      if (!Gogo::is_hidden_name(pf->field_name()))
+-	fvals->push_back(Expression::make_nil(bloc));
++      bool is_embedded_builtin = pf->is_embedded_builtin(gogo);
++      if (!Gogo::is_hidden_name(pf->field_name()) && !is_embedded_builtin)
++        fvals->push_back(Expression::make_nil(bloc));
+       else
+ 	{
+-	  std::string n = Gogo::hidden_name_pkgpath(pf->field_name());
++	  std::string n;
++          if (is_embedded_builtin)
++            n = gogo->package_name();
++          else
++            n = Gogo::hidden_name_pkgpath(pf->field_name());
+ 	  Expression* s = Expression::make_string(n, bloc);
+ 	  fvals->push_back(Expression::make_unary(OPERATOR_AND, s, bloc));
+ 	}
+@@ -6227,7 +6302,8 @@
+ 
+   std::string mangled_name = "__go_map_" + this->mangled_name(gogo);
+   Btype* map_descriptor_btype = map_descriptor_type->get_backend(gogo);
+-  Bvariable* bvar = gogo->backend()->immutable_struct(mangled_name, true,
++  Bvariable* bvar = gogo->backend()->immutable_struct(mangled_name, false,
++						      true,
+ 						      map_descriptor_btype,
+ 						      bloc);
+ 
+@@ -6235,7 +6311,7 @@
+   context.set_is_const();
+   Bexpression* binitializer = tree_to_expr(initializer->get_tree(&context));
+ 
+-  gogo->backend()->immutable_struct_set_init(bvar, mangled_name, true,
++  gogo->backend()->immutable_struct_set_init(bvar, mangled_name, false, true,
+ 					     map_descriptor_btype, bloc,
+ 					     binitializer);
+ 
+@@ -7569,7 +7645,7 @@
+       // the child class.
+       return this->do_bind_method(expr, location);
+     }
+-  return Expression::make_bound_method(expr, this->stub_, location);
++  return Expression::make_bound_method(expr, this, this->stub_, location);
+ }
+ 
+ // Return the named object associated with a method.  This may only be
+@@ -7612,8 +7688,8 @@
+ Named_method::do_bind_method(Expression* expr, Location location) const
+ {
+   Named_object* no = this->named_object_;
+-  Bound_method_expression* bme = Expression::make_bound_method(expr, no,
+-							       location);
++  Bound_method_expression* bme = Expression::make_bound_method(expr, this,
++							       no, location);
+   // If this is not a local method, and it does not use a stub, then
+   // the real method expects a different type.  We need to cast the
+   // first argument.
+@@ -8991,28 +9067,16 @@
+   Call_expression* call = Expression::make_call(func, arguments, is_varargs,
+ 						location);
+   call->set_hidden_fields_are_ok();
+-  size_t count = call->result_count();
+-  if (count == 0)
+-    gogo->add_statement(Statement::make_statement(call, true));
+-  else
+-    {
+-      Expression_list* retvals = new Expression_list();
+-      if (count <= 1)
+-	retvals->push_back(call);
+-      else
+-	{
+-	  for (size_t i = 0; i < count; ++i)
+-	    retvals->push_back(Expression::make_call_result(call, i));
+-	}
+-      Return_statement* retstat = Statement::make_return_statement(retvals,
+-								   location);
+ 
++  Statement* s = Statement::make_return_from_call(call, location);
++  Return_statement* retstat = s->return_statement();
++  if (retstat != NULL)
++    {
+       // We can return values with hidden fields from a stub.  This is
+       // necessary if the method is itself hidden.
+       retstat->set_hidden_fields_are_ok();
+-
+-      gogo->add_statement(retstat);
+     }
++  gogo->add_statement(s);
+ }
+ 
+ // Apply FIELD_INDEXES to EXPR.  The field indexes have to be applied
+@@ -9353,13 +9417,18 @@
+ 	fnt = pf->type()->deref()->named_type();
+       go_assert(fnt != NULL);
+ 
++      // Methods with pointer receivers on embedded field are
++      // inherited by the pointer to struct, and also by the struct
++      // type if the field itself is a pointer.
++      bool can_be_pointer = (receiver_can_be_pointer
++			     || pf->type()->points_to() != NULL);
+       int sublevel = level == NULL ? 1 : *level + 1;
+       bool sub_is_method;
+       std::string subambig1;
+       std::string subambig2;
+       bool subfound = Type::find_field_or_method(fnt,
+ 						 name,
+-						 receiver_can_be_pointer,
++						 can_be_pointer,
+ 						 seen,
+ 						 &sublevel,
+ 						 &sub_is_method,
+diff -Naur gcc-4.8.1.orig/gcc/go/gofrontend/types.h gcc-4.8.1/gcc/go/gofrontend/types.h
+--- gcc-4.8.1.orig/gcc/go/gofrontend/types.h	2013-01-31 18:23:22.000000000 -0600
++++ gcc-4.8.1/gcc/go/gofrontend/types.h	2013-08-23 16:04:55.544713000 -0500
+@@ -523,6 +523,14 @@
+   static Type*
+   make_forward_declaration(Named_object*);
+ 
++  // Make a builtin struct type from a list of fields.
++  static Struct_type*
++  make_builtin_struct_type(int nfields, ...);
++
++  // Make a builtin named type.
++  static Named_type*
++  make_builtin_named_type(const char* name, Type* type);
++
+   // Traverse a type.
+   static int
+   traverse(Type*, Traverse*);
+@@ -1035,14 +1043,6 @@
+   type_descriptor_constructor(Gogo*, int runtime_type_kind, Named_type*,
+ 			      const Methods*, bool only_value_methods);
+ 
+-  // Make a builtin struct type from a list of fields.
+-  static Struct_type*
+-  make_builtin_struct_type(int nfields, ...);
+-
+-  // Make a builtin named type.
+-  static Named_type*
+-  make_builtin_named_type(const char* name, Type* type);
+-
+   // For the benefit of child class reflection string generation.
+   void
+   append_reflection(const Type* type, Gogo* gogo, std::string* ret) const
+@@ -1789,6 +1789,12 @@
+   Function_type*
+   copy_with_receiver(Type*) const;
+ 
++  // Return a copy of this type ignoring any receiver and adding a
++  // final closure parameter of type CLOSURE_TYPE.  This is used when
++  // creating descriptors.
++  Function_type*
++  copy_with_closure(Type* closure_type) const;
++
+   static Type*
+   make_function_type_descriptor_type();
+ 
+@@ -1796,7 +1802,7 @@
+   int
+   do_traverse(Traverse*);
+ 
+-  // A trampoline function has a pointer which matters for GC.
++  // A function descriptor may be allocated on the heap.
+   bool
+   do_has_pointer() const
+   { return true; }
+@@ -1920,6 +1926,10 @@
+   bool
+   is_field_name(const std::string& name) const;
+ 
++  // Return whether this struct field is an embedded built-in type.
++  bool
++  is_embedded_builtin(Gogo*) const;
++
+   // The field type.
+   Type*
+   type() const
+diff -Naur gcc-4.8.1.orig/gcc/go/go-gcc.cc gcc-4.8.1/gcc/go/go-gcc.cc
+--- gcc-4.8.1.orig/gcc/go/go-gcc.cc	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/go/go-gcc.cc	2013-08-06 11:40:25.449651000 -0500
+@@ -287,10 +287,10 @@
+ 		     Location, Bstatement**);
+ 
+   Bvariable*
+-  immutable_struct(const std::string&, bool, Btype*, Location);
++  immutable_struct(const std::string&, bool, bool, Btype*, Location);
+ 
+   void
+-  immutable_struct_set_init(Bvariable*, const std::string&, bool, Btype*,
++  immutable_struct_set_init(Bvariable*, const std::string&, bool, bool, Btype*,
+ 			    Location, Bexpression*);
+ 
+   Bvariable*
+@@ -1242,20 +1242,41 @@
+   switch (TREE_CODE(type))
+     {
+     case RECORD_TYPE:
+-      {
+-	if (go_non_zero_struct == NULL_TREE)
+-	  {
+-	    type = make_node(RECORD_TYPE);
+-	    tree field = build_decl(UNKNOWN_LOCATION, FIELD_DECL,
+-				    get_identifier("dummy"),
+-				    boolean_type_node);
+-	    DECL_CONTEXT(field) = type;
+-	    TYPE_FIELDS(type) = field;
+-	    layout_type(type);
+-	    go_non_zero_struct = type;
+-	  }
+-	return go_non_zero_struct;
+-      }
++      if (TYPE_FIELDS(type) != NULL_TREE)
++	{
++	  tree ns = make_node(RECORD_TYPE);
++	  tree field_trees = NULL_TREE;
++	  tree *pp = &field_trees;
++	  for (tree field = TYPE_FIELDS(type);
++	       field != NULL_TREE;
++	       field = DECL_CHAIN(field))
++	    {
++	      tree ft = TREE_TYPE(field);
++	      if (field == TYPE_FIELDS(type))
++		ft = non_zero_size_type(ft);
++	      tree f = build_decl(DECL_SOURCE_LOCATION(field), FIELD_DECL,
++				  DECL_NAME(field), ft);
++	      DECL_CONTEXT(f) = ns;
++	      *pp = f;
++	      pp = &DECL_CHAIN(f);
++	    }
++	  TYPE_FIELDS(ns) = field_trees;
++	  layout_type(ns);
++	  return ns;
++	}
++
++      if (go_non_zero_struct == NULL_TREE)
++	{
++	  type = make_node(RECORD_TYPE);
++	  tree field = build_decl(UNKNOWN_LOCATION, FIELD_DECL,
++				  get_identifier("dummy"),
++				  boolean_type_node);
++	  DECL_CONTEXT(field) = type;
++	  TYPE_FIELDS(type) = field;
++	  layout_type(type);
++	  go_non_zero_struct = type;
++	}
++      return go_non_zero_struct;
+ 
+     case ARRAY_TYPE:
+       {
+@@ -1454,8 +1475,8 @@
+ // Create a named immutable initialized data structure.
+ 
+ Bvariable*
+-Gcc_backend::immutable_struct(const std::string& name, bool, Btype* btype,
+-			      Location location)
++Gcc_backend::immutable_struct(const std::string& name, bool, bool,
++			      Btype* btype, Location location)
+ {
+   tree type_tree = btype->get_tree();
+   if (type_tree == error_mark_node)
+@@ -1482,7 +1503,7 @@
+ 
+ void
+ Gcc_backend::immutable_struct_set_init(Bvariable* var, const std::string&,
+-				       bool is_common, Btype*,
++				       bool is_hidden, bool is_common, Btype*,
+ 				       Location,
+ 				       Bexpression* initializer)
+ {
+@@ -1495,12 +1516,18 @@
+ 
+   // We can't call make_decl_one_only until we set DECL_INITIAL.
+   if (!is_common)
+-    TREE_PUBLIC(decl) = 1;
+-  else
+     {
+-      make_decl_one_only(decl, DECL_ASSEMBLER_NAME(decl));
+-      resolve_unique_section(decl, 1, 0);
++      if (!is_hidden)
++	TREE_PUBLIC(decl) = 1;
+     }
++  else
++    make_decl_one_only(decl, DECL_ASSEMBLER_NAME(decl));
++
++  // These variables are often unneeded in the final program, so put
++  // them in their own section so that linker GC can discard them.
++  resolve_unique_section(decl,
++			 compute_reloc_for_constant (init_tree),
++			 1);
+ 
+   rest_of_decl_compilation(decl, 1, 0);
+ }
+diff -Naur gcc-4.8.1.orig/gcc/ipa-cp.c gcc-4.8.1/gcc/ipa-cp.c
+--- gcc-4.8.1.orig/gcc/ipa-cp.c	2013-05-09 06:56:32.000000000 -0500
++++ gcc-4.8.1/gcc/ipa-cp.c	2013-06-12 08:17:03.426963000 -0500
+@@ -1507,7 +1507,8 @@
+   tree otr_type;
+   tree t;
+ 
+-  if (param_index == -1)
++  if (param_index == -1
++      || known_vals.length () <= (unsigned int) param_index)
+     return NULL_TREE;
+ 
+   if (!ie->indirect_info->polymorphic)
+@@ -1528,8 +1529,7 @@
+ 	    t = NULL;
+ 	}
+       else
+-	t = (known_vals.length () > (unsigned int) param_index
+-	     ? known_vals[param_index] : NULL);
++	t = known_vals[param_index];
+ 
+       if (t &&
+ 	  TREE_CODE (t) == ADDR_EXPR
+diff -Naur gcc-4.8.1.orig/gcc/ipa-prop.c gcc-4.8.1/gcc/ipa-prop.c
+--- gcc-4.8.1.orig/gcc/ipa-prop.c	2013-05-23 08:25:23.000000000 -0500
++++ gcc-4.8.1/gcc/ipa-prop.c	2013-06-24 07:57:52.158957000 -0500
+@@ -678,13 +678,19 @@
+   bool modified = false;
+   ao_ref refd;
+ 
+-  gcc_checking_assert (gimple_vuse (stmt));
+   if (parm_ainfo && parm_ainfo->ref_modified)
+     return false;
+ 
+-  ao_ref_init (&refd, ref);
+-  walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
+-		      NULL);
++  if (optimize)
++    {
++      gcc_checking_assert (gimple_vuse (stmt));
++      ao_ref_init (&refd, ref);
++      walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
++			  NULL);
++    }
++  else
++    modified = true;
++
+   if (parm_ainfo && modified)
+     parm_ainfo->ref_modified = true;
+   return !modified;
+diff -Naur gcc-4.8.1.orig/gcc/ira.c gcc-4.8.1/gcc/ira.c
+--- gcc-4.8.1.orig/gcc/ira.c	2013-05-23 05:36:55.000000000 -0500
++++ gcc-4.8.1/gcc/ira.c	2013-06-20 16:15:52.020104000 -0500
+@@ -2863,6 +2863,28 @@
+     }
+ }
+ 
++/* Check whether the SUBREG is a paradoxical subreg and set the result
++   in PDX_SUBREGS.  */
++
++static int
++set_paradoxical_subreg (rtx *subreg, void *pdx_subregs)
++{
++  rtx reg;
++
++  if ((*subreg) == NULL_RTX)
++    return 1;
++  if (GET_CODE (*subreg) != SUBREG)
++    return 0;
++  reg = SUBREG_REG (*subreg);
++  if (!REG_P (reg))
++    return 0;
++
++  if (paradoxical_subreg_p (*subreg))
++    ((bool *)pdx_subregs)[REGNO (reg)] = true;
++
++  return 0;
++}
++
+ /* In DEBUG_INSN location adjust REGs from CLEARED_REGS bitmap to the
+    equivalent replacement.  */
+ 
+@@ -2901,16 +2923,33 @@
+   basic_block bb;
+   int loop_depth;
+   bitmap cleared_regs;
++  bool *pdx_subregs;
+ 
+   /* We need to keep track of whether or not we recorded a LABEL_REF so
+      that we know if the jump optimizer needs to be rerun.  */
+   recorded_label_ref = 0;
+ 
++  /* Use pdx_subregs to show whether a reg is used in a paradoxical
++     subreg.  */
++  pdx_subregs = XCNEWVEC (bool, max_regno);
++
+   reg_equiv = XCNEWVEC (struct equivalence, max_regno);
+   grow_reg_equivs ();
+ 
+   init_alias_analysis ();
+ 
++  /* Scan insns and set pdx_subregs[regno] if the reg is used in a
++     paradoxical subreg. Don't set such reg sequivalent to a mem,
++     because lra will not substitute such equiv memory in order to
++     prevent access beyond allocated memory for paradoxical memory subreg.  */
++  FOR_EACH_BB (bb)
++    FOR_BB_INSNS (bb, insn)
++      {
++	if (! INSN_P (insn))
++	  continue;
++	for_each_rtx (&insn, set_paradoxical_subreg, (void *)pdx_subregs);
++      }
++
+   /* Scan the insns and find which registers have equivalences.  Do this
+      in a separate scan of the insns because (due to -fcse-follow-jumps)
+      a register can be set below its use.  */
+@@ -3008,6 +3047,13 @@
+ 	      continue;
+ 	    }
+ 
++	  /* Don't set reg (if pdx_subregs[regno] == true) equivalent to a mem.  */
++	  if (MEM_P (src) && pdx_subregs[regno])
++	    {
++	      note_stores (set, no_equiv, NULL);
++	      continue;
++	    }
++
+ 	  note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
+ 
+ 	  /* cse sometimes generates function invariants, but doesn't put a
+@@ -3166,7 +3212,8 @@
+ 	  && reg_equiv[regno].init_insns != const0_rtx
+ 	  && ! find_reg_note (XEXP (reg_equiv[regno].init_insns, 0),
+ 			      REG_EQUIV, NULL_RTX)
+-	  && ! contains_replace_regs (XEXP (dest, 0)))
++	  && ! contains_replace_regs (XEXP (dest, 0))
++	  && ! pdx_subregs[regno])
+ 	{
+ 	  rtx init_insn = XEXP (reg_equiv[regno].init_insns, 0);
+ 	  if (validate_equiv_mem (init_insn, src, dest)
+@@ -3357,6 +3404,7 @@
+ 
+   end_alias_analysis ();
+   free (reg_equiv);
++  free (pdx_subregs);
+   return recorded_label_ref;
+ }
+ 
+diff -Naur gcc-4.8.1.orig/gcc/lra-assigns.c gcc-4.8.1/gcc/lra-assigns.c
+--- gcc-4.8.1.orig/gcc/lra-assigns.c	2013-02-15 13:17:02.000000000 -0600
++++ gcc-4.8.1/gcc/lra-assigns.c	2013-07-19 15:47:57.560539000 -0500
+@@ -116,6 +116,11 @@
+ /* Map regno to the corresponding regno assignment info.  */
+ static struct regno_assign_info *regno_assign_info;
+ 
++/* All inherited, subreg or optional pseudos created before last spill
++   sub-pass.  Such pseudos are permitted to get memory instead of hard
++   regs.  */
++static bitmap_head non_reload_pseudos;
++
+ /* Process a pseudo copy with execution frequency COPY_FREQ connecting
+    REGNO1 and REGNO2 to form threads.  */
+ static void
+@@ -194,6 +199,15 @@
+   if ((diff = (ira_class_hard_regs_num[cl1]
+ 	       - ira_class_hard_regs_num[cl2])) != 0)
+     return diff;
++  if ((diff
++       = (ira_reg_class_max_nregs[cl2][lra_reg_info[r2].biggest_mode]
++	  - ira_reg_class_max_nregs[cl1][lra_reg_info[r1].biggest_mode])) != 0
++      /* The code below executes rarely as nregs == 1 in most cases.
++	 So we should not worry about using faster data structures to
++	 check reload pseudos.  */
++      && ! bitmap_bit_p (&non_reload_pseudos, r1)
++      && ! bitmap_bit_p (&non_reload_pseudos, r2))
++    return diff;
+   if ((diff = (regno_assign_info[regno_assign_info[r2].first].freq
+ 	       - regno_assign_info[regno_assign_info[r1].first].freq)) != 0)
+     return diff;
+@@ -1156,7 +1170,6 @@
+   rtx insn;
+   basic_block bb;
+   bitmap_head changed_insns, do_not_assign_nonreload_pseudos;
+-  bitmap_head non_reload_pseudos;
+   unsigned int u;
+   bitmap_iterator bi;
+   bool reload_p;
+@@ -1265,7 +1278,7 @@
+ 		    }
+ 		}
+ 	    }
+-	  lra_assert (asm_p);
++	  gcc_assert (asm_p);
+ 	  break;
+ 	}
+       /* This is a very rare event.  We can not assign a hard
+diff -Naur gcc-4.8.1.orig/gcc/lra-constraints.c gcc-4.8.1/gcc/lra-constraints.c
+--- gcc-4.8.1.orig/gcc/lra-constraints.c	2013-05-02 14:16:29.000000000 -0500
++++ gcc-4.8.1/gcc/lra-constraints.c	2013-08-15 03:03:32.168856000 -0500
+@@ -1388,7 +1388,7 @@
+   for (nalt = 0; nalt < n_alternatives; nalt++)
+     {
+       /* Loop over operands for one constraint alternative.  */
+-#ifdef HAVE_ATTR_enabled
++#if HAVE_ATTR_enabled
+       if (curr_id->alternative_enabled_p != NULL
+ 	  && ! curr_id->alternative_enabled_p[nalt])
+ 	continue;
+@@ -4396,7 +4396,7 @@
+ 	  bitmap_clear_bit (&live_regs, reg->regno);
+       /* Mark each used value as live.  */
+       for (reg = curr_id->regs; reg != NULL; reg = reg->next)
+-	if (reg->type == OP_IN
++	if (reg->type != OP_OUT
+ 	    && bitmap_bit_p (&check_only_regs, reg->regno))
+ 	  bitmap_set_bit (&live_regs, reg->regno);
+       /* It is quite important to remove dead move insns because it
+diff -Naur gcc-4.8.1.orig/gcc/Makefile.in gcc-4.8.1/gcc/Makefile.in
+--- gcc-4.8.1.orig/gcc/Makefile.in	2013-05-21 11:00:49.000000000 -0500
++++ gcc-4.8.1/gcc/Makefile.in	2013-07-08 04:14:34.834106000 -0500
+@@ -2505,7 +2505,7 @@
+    $(TM_H) coretypes.h $(TREE_PASS_H) $(FLAGS_H) \
+    tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) \
+    $(VEC_H) langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H) \
+-   $(TARGET_H) $(GIMPLE_PRETTY_PRINT_H) $(DIAGNOSTIC_CORE_H)
++   $(TARGET_H) $(GIMPLE_PRETTY_PRINT_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H)
+ tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
+    $(TREE_H) $(TM_P_H) $(GGC_H) \
+    $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TM_H) \
+diff -Naur gcc-4.8.1.orig/gcc/omp-low.c gcc-4.8.1/gcc/omp-low.c
+--- gcc-4.8.1.orig/gcc/omp-low.c	2013-05-16 05:45:55.000000000 -0500
++++ gcc-4.8.1/gcc/omp-low.c	2013-08-28 05:10:43.062839000 -0500
+@@ -836,6 +836,7 @@
+   DECL_ARTIFICIAL (copy) = DECL_ARTIFICIAL (var);
+   DECL_IGNORED_P (copy) = DECL_IGNORED_P (var);
+   DECL_CONTEXT (copy) = DECL_CONTEXT (var);
++  TREE_NO_WARNING (copy) = TREE_NO_WARNING (var);
+   TREE_USED (copy) = 1;
+   DECL_SEEN_IN_BIND_EXPR_P (copy) = 1;
+ 
+diff -Naur gcc-4.8.1.orig/gcc/passes.c gcc-4.8.1/gcc/passes.c
+--- gcc-4.8.1.orig/gcc/passes.c	2013-02-20 09:19:13.000000000 -0600
++++ gcc-4.8.1/gcc/passes.c	2013-08-28 03:29:48.447578000 -0500
+@@ -1531,15 +1531,15 @@
+       /* Perform simple scalar cleanup which is constant/copy propagation.  */
+       NEXT_PASS (pass_ccp);
+       NEXT_PASS (pass_object_sizes);
++      /* Fold remaining builtins.  */
++      NEXT_PASS (pass_fold_builtins);
+       /* Copy propagation also copy-propagates constants, this is necessary
+-         to forward object-size results properly.  */
++         to forward object-size and builtin folding results properly.  */
+       NEXT_PASS (pass_copy_prop);
++      NEXT_PASS (pass_dce);
+       NEXT_PASS (pass_asan);
+       NEXT_PASS (pass_tsan);
+       NEXT_PASS (pass_rename_ssa_copies);
+-      NEXT_PASS (pass_dce);
+-      /* Fold remaining builtins.  */
+-      NEXT_PASS (pass_fold_builtins);
+       /* ???  We do want some kind of loop invariant motion, but we possibly
+          need to adjust LIM to be more friendly towards preserving accurate
+ 	 debug information here.  */
+diff -Naur gcc-4.8.1.orig/gcc/recog.c gcc-4.8.1/gcc/recog.c
+--- gcc-4.8.1.orig/gcc/recog.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/recog.c	2013-08-05 15:24:39.437775000 -0500
+@@ -1949,9 +1949,6 @@
+     (strictp ? strict_memory_address_addr_space_p
+ 	     : memory_address_addr_space_p);
+   unsigned int mode_sz = GET_MODE_SIZE (mode);
+-#ifdef POINTERS_EXTEND_UNSIGNED
+-  enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
+-#endif
+ 
+   if (CONSTANT_ADDRESS_P (y))
+     return 1;
+@@ -1962,6 +1959,13 @@
+   if (mode_dependent_address_p (y, as))
+     return 0;
+ 
++  enum machine_mode address_mode = GET_MODE (y);
++  if (address_mode == VOIDmode)
++    address_mode = targetm.addr_space.address_mode (as);
++#ifdef POINTERS_EXTEND_UNSIGNED
++  enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
++#endif
++
+   /* ??? How much offset does an offsettable BLKmode reference need?
+      Clearly that depends on the situation in which it's being used.
+      However, the current situation in which we test 0xffffffff is
+@@ -1977,7 +1981,7 @@
+       int good;
+ 
+       y1 = *y2;
+-      *y2 = plus_constant (GET_MODE (y), *y2, mode_sz - 1);
++      *y2 = plus_constant (address_mode, *y2, mode_sz - 1);
+       /* Use QImode because an odd displacement may be automatically invalid
+ 	 for any wider mode.  But it should be valid for a single byte.  */
+       good = (*addressp) (QImode, y, as);
+@@ -1998,20 +2002,20 @@
+   if (GET_CODE (y) == LO_SUM
+       && mode != BLKmode
+       && mode_sz <= GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT)
+-    z = gen_rtx_LO_SUM (GET_MODE (y), XEXP (y, 0),
+-			plus_constant (GET_MODE (y), XEXP (y, 1),
++    z = gen_rtx_LO_SUM (address_mode, XEXP (y, 0),
++			plus_constant (address_mode, XEXP (y, 1),
+ 				       mode_sz - 1));
+ #ifdef POINTERS_EXTEND_UNSIGNED
+   /* Likewise for a ZERO_EXTEND from pointer_mode.  */
+   else if (POINTERS_EXTEND_UNSIGNED > 0
+ 	   && GET_CODE (y) == ZERO_EXTEND
+ 	   && GET_MODE (XEXP (y, 0)) == pointer_mode)
+-    z = gen_rtx_ZERO_EXTEND (GET_MODE (y),
++    z = gen_rtx_ZERO_EXTEND (address_mode,
+ 			     plus_constant (pointer_mode, XEXP (y, 0),
+ 					    mode_sz - 1));
+ #endif
+   else
+-    z = plus_constant (GET_MODE (y), y, mode_sz - 1);
++    z = plus_constant (address_mode, y, mode_sz - 1);
+ 
+   /* Use QImode because an odd displacement may be automatically invalid
+      for any wider mode.  But it should be valid for a single byte.  */
+@@ -3116,32 +3120,53 @@
+       regno = raw_regno;
+ #endif
+ 
+-      /* Don't allocate fixed registers.  */
+-      if (fixed_regs[regno])
+-	continue;
+-      /* Don't allocate global registers.  */
+-      if (global_regs[regno])
+-	continue;
+-      /* Make sure the register is of the right class.  */
+-      if (! TEST_HARD_REG_BIT (reg_class_contents[cl], regno))
+-	continue;
+-      /* And can support the mode we need.  */
++      /* Can it support the mode we need?  */
+       if (! HARD_REGNO_MODE_OK (regno, mode))
+ 	continue;
+-      /* And that we don't create an extra save/restore.  */
+-      if (! call_used_regs[regno] && ! df_regs_ever_live_p (regno))
+-	continue;
+-      if (! targetm.hard_regno_scratch_ok (regno))
+-	continue;
+-
+-      /* And we don't clobber traceback for noreturn functions.  */
+-      if ((regno == FRAME_POINTER_REGNUM || regno == HARD_FRAME_POINTER_REGNUM)
+-	  && (! reload_completed || frame_pointer_needed))
+-	continue;
+ 
+       success = 1;
+-      for (j = hard_regno_nregs[regno][mode] - 1; j >= 0; j--)
++      for (j = 0; success && j < hard_regno_nregs[regno][mode]; j++)
+ 	{
++	  /* Don't allocate fixed registers.  */
++	  if (fixed_regs[regno + j])
++	    {
++	      success = 0;
++	      break;
++	    }
++	  /* Don't allocate global registers.  */
++	  if (global_regs[regno + j])
++	    {
++	      success = 0;
++	      break;
++	    }
++	  /* Make sure the register is of the right class.  */
++	  if (! TEST_HARD_REG_BIT (reg_class_contents[cl], regno + j))
++	    {
++	      success = 0;
++	      break;
++	    }
++	  /* And that we don't create an extra save/restore.  */
++	  if (! call_used_regs[regno + j] && ! df_regs_ever_live_p (regno + j))
++	    {
++	      success = 0;
++	      break;
++	    }
++
++	  if (! targetm.hard_regno_scratch_ok (regno + j))
++	    {
++	      success = 0;
++	      break;
++	    }
++
++	  /* And we don't clobber traceback for noreturn functions.  */
++	  if ((regno + j == FRAME_POINTER_REGNUM
++	       || regno + j == HARD_FRAME_POINTER_REGNUM)
++	      && (! reload_completed || frame_pointer_needed))
++	    {
++	      success = 0;
++	      break;
++	    }
++
+ 	  if (TEST_HARD_REG_BIT (*reg_set, regno + j)
+ 	      || TEST_HARD_REG_BIT (live, regno + j))
+ 	    {
+@@ -3149,6 +3174,7 @@
+ 	      break;
+ 	    }
+ 	}
++
+       if (success)
+ 	{
+ 	  add_to_hard_reg_set (reg_set, mode, regno);
+diff -Naur gcc-4.8.1.orig/gcc/simplify-rtx.c gcc-4.8.1/gcc/simplify-rtx.c
+--- gcc-4.8.1.orig/gcc/simplify-rtx.c	2013-03-05 00:04:14.000000000 -0600
++++ gcc-4.8.1/gcc/simplify-rtx.c	2013-07-08 03:15:01.706973000 -0500
+@@ -2784,6 +2784,7 @@
+           HOST_WIDE_INT mask = INTVAL (trueop1) << count;
+ 
+           if (mask >> count == INTVAL (trueop1)
++	      && trunc_int_for_mode (mask, mode) == mask
+               && (mask & nonzero_bits (XEXP (op0, 0), mode)) == 0)
+ 	    return simplify_gen_binary (ASHIFTRT, mode,
+ 					plus_constant (mode, XEXP (op0, 0),
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/c-c++-common/gomp/pr58257.c gcc-4.8.1/gcc/testsuite/c-c++-common/gomp/pr58257.c
+--- gcc-4.8.1.orig/gcc/testsuite/c-c++-common/gomp/pr58257.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/c-c++-common/gomp/pr58257.c	2013-08-28 05:10:43.062839000 -0500
+@@ -0,0 +1,15 @@
++/* PR middle-end/58257 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fopenmp -Wall" } */
++
++int
++foo (int n)
++{
++  int a[10][10];
++  int x, y;
++#pragma omp parallel for collapse(2)	/* { dg-bogus "may be used uninitialized in this function" } */
++  for (x = 0; x < n; x++)		/* { dg-bogus "may be used uninitialized in this function" } */
++    for (y = 0; y < n; y++)
++      a[x][y] = x + y * y;
++  return a[0][0];
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/compile/pr58164.c gcc-4.8.1/gcc/testsuite/gcc.c-torture/compile/pr58164.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/compile/pr58164.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.c-torture/compile/pr58164.c	2013-08-16 04:06:41.868666000 -0500
+@@ -0,0 +1,8 @@
++/* PR tree-optimization/58164 */
++
++int
++foo (void)
++{
++  int x = 0;
++  goto *&x;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/nest-align-1.x gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/nest-align-1.x
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/nest-align-1.x	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/nest-align-1.x	2013-07-10 16:06:27.116312000 -0500
+@@ -0,0 +1,5 @@
++# Force bigger stack alignment for PowerPC EABI targets.
++if { [istarget "powerpc-*-eabi*"] } {
++    set additional_flags "-mno-eabi"
++}
++return 0
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr57568.c gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr57568.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr57568.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr57568.c	2013-06-09 13:33:32.138968000 -0500
+@@ -0,0 +1,12 @@
++/* PR target/57568 */
++
++extern void abort (void);
++int a[6][9] = { }, b = 1, *c = &a[3][5];
++
++int
++main ()
++{
++  if (b && (*c = *c + *c))
++    abort ();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr57829.c gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr57829.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr57829.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr57829.c	2013-07-08 03:15:01.706973000 -0500
+@@ -0,0 +1,31 @@
++/* PR rtl-optimization/57829 */
++
++__attribute__((noinline, noclone))
++int
++f1 (int k)
++{
++  return 2 | ((k - 1) >> ((int) sizeof (int) * __CHAR_BIT__ - 1));
++}
++
++__attribute__((noinline, noclone))
++long int
++f2 (long int k)
++{
++  return 2L | ((k - 1L) >> ((int) sizeof (long int) * __CHAR_BIT__ - 1));
++}
++
++__attribute__((noinline, noclone))
++int
++f3 (int k)
++{
++  k &= 63;
++  return 4 | ((k + 2) >> 5);
++}
++
++int
++main ()
++{
++  if (f1 (1) != 2 || f2 (1L) != 2L || f3 (63) != 6 || f3 (1) != 4)
++    __builtin_abort ();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr58209.c gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr58209.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.c-torture/execute/pr58209.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.c-torture/execute/pr58209.c	2013-08-23 02:35:01.611004000 -0500
+@@ -0,0 +1,32 @@
++/* PR tree-optimization/58209 */
++
++extern void abort (void);
++typedef __INTPTR_TYPE__ T;
++T buf[1024];
++
++T *
++foo (T n)
++{
++  if (n == 0)
++    return (T *) buf;
++  T s = (T) foo (n - 1);
++  return (T *) (s + sizeof (T));
++}
++
++T *
++bar (T n)
++{
++  if (n == 0)
++    return buf;
++  return foo (n - 1) + 1;
++}
++
++int
++main ()
++{
++  int i;
++  for (i = 0; i < 27; i++)
++    if (foo (i) != buf + i || bar (i) != buf + i)
++      abort ();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/asan/pr56417.c gcc-4.8.1/gcc/testsuite/gcc.dg/asan/pr56417.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/asan/pr56417.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/asan/pr56417.c	2013-08-13 12:02:13.543712000 -0500
+@@ -0,0 +1,9 @@
++/* PR sanitizer/56417 */
++/* { dg-do compile } */
++/* { dg-options "-w" } */
++
++int
++foo (void)
++{
++  return __builtin_strlen (&foo);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/ipa/pr57358.c gcc-4.8.1/gcc/testsuite/gcc.dg/ipa/pr57358.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/ipa/pr57358.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/ipa/pr57358.c	2013-06-24 07:57:52.158957000 -0500
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++struct t { void (*func)(void*); };
++void test_func(struct t* a) __attribute__((optimize("O0")));
++void test_func(struct t* a)
++{
++  a->func(0);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr56977.c gcc-4.8.1/gcc/testsuite/gcc.dg/pr56977.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr56977.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/pr56977.c	2013-08-28 03:29:48.447578000 -0500
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-Og" } */
++
++__attribute__((__error__("error"))) void error ();
++
++void f (int i) {
++    if (__builtin_constant_p (i)) {
++	error ();
++    }
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr57518.c gcc-4.8.1/gcc/testsuite/gcc.dg/pr57518.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr57518.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/pr57518.c	2013-06-20 16:15:52.020104000 -0500
+@@ -0,0 +1,15 @@
++/* PR rtl-optimization/57130 */
++
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-rtl-ira" } */
++/* { dg-final { scan-rtl-dump-not "REG_EQUIV.*mem.*\"ip\"" "ira" } } */
++
++char ip[10];
++int total;
++
++void foo() {
++  int t;
++
++  t = ip[2];
++  total = t & 0x3;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr57980.c gcc-4.8.1/gcc/testsuite/gcc.dg/pr57980.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr57980.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/pr57980.c	2013-08-13 08:34:08.741199000 -0500
+@@ -0,0 +1,19 @@
++/* PR tree-optimization/57980 */
++/* { dg-do compile } */
++/* { dg-options "-O -foptimize-sibling-calls -w" } */
++
++typedef int V __attribute__ ((vector_size (2 * sizeof (int))));
++extern V f (void);
++
++V
++bar (void)
++{
++  return -f ();
++}
++
++V
++foo (void)
++{
++  V v = { };
++  return v - f ();
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr58145-1.c gcc-4.8.1/gcc/testsuite/gcc.dg/pr58145-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr58145-1.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/pr58145-1.c	2013-08-14 15:36:12.151519000 -0500
+@@ -0,0 +1,37 @@
++/* PR tree-optimization/58145 */
++/* { dg-do compile { target { int32plus } } } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++
++struct S { unsigned int data : 32; };
++struct T { unsigned int data; };
++volatile struct S s2;
++
++void
++f1 (int val)
++{
++  struct S s = { .data = val };
++  *(volatile struct S *) 0x880000UL = s;
++}
++
++void
++f2 (int val)
++{
++  struct T t = { .data = val };
++  *(volatile struct T *) 0x880000UL = t;
++}
++
++void
++f3 (int val)
++{
++  *(volatile unsigned int *) 0x880000UL = val;
++}
++
++void
++f4 (int val)
++{
++  struct S s = { .data = val };
++  s2 = s;
++}
++
++/* { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } */
++/* { dg-final { cleanup-tree-dump "optimized" } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr58145-2.c gcc-4.8.1/gcc/testsuite/gcc.dg/pr58145-2.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/pr58145-2.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/pr58145-2.c	2013-08-14 15:36:12.151519000 -0500
+@@ -0,0 +1,51 @@
++/* PR tree-optimization/58145 */
++/* { dg-do compile { target { int32plus } } } */
++/* { dg-options "-O2 -fdump-tree-optimized" } */
++
++struct S { unsigned int data : 32; };
++struct T { unsigned int data; };
++volatile struct S s2;
++
++static inline void
++f1 (int val)
++{
++  struct S s = { .data = val };
++  *(volatile struct S *) 0x880000UL = s;
++}
++
++static inline void
++f2 (int val)
++{
++  struct T t = { .data = val };
++  *(volatile struct T *) 0x880000UL = t;
++}
++
++static inline void
++f3 (int val)
++{
++  *(volatile unsigned int *) 0x880000UL = val;
++}
++
++static inline void
++f4 (int val)
++{
++  struct S s = { .data = val };
++  s2 = s;
++}
++
++void
++f5 (void)
++{
++  int i;
++  for (i = 0; i < 100; i++)
++    f1 (0);
++  for (i = 0; i < 100; i++)
++    f2 (0);
++  for (i = 0; i < 100; i++)
++    f3 (0);
++  for (i = 0; i < 100; i++)
++    f4 (0);
++}
++
++/* { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } */
++/* { dg-final { cleanup-tree-dump "optimized" } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.dg/torture/pr58041.c gcc-4.8.1/gcc/testsuite/gcc.dg/torture/pr58041.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.dg/torture/pr58041.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.dg/torture/pr58041.c	2013-08-06 12:35:11.119492000 -0500
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++
++typedef long long V
++  __attribute__ ((vector_size (2 * sizeof (long long)), may_alias));
++
++struct s
++{
++  char u;
++  V v[2];
++} __attribute__((packed,aligned(1)));
++
++__attribute__((noinline, noclone))
++long long foo(struct s *x, int y, V *z)
++{
++  V a = x->v[y];
++  x->v[y] = *z;
++  return a[1];
++}
++
++struct s a = {0,{{0,0},{0,0}}};
++int main()
++{
++  V v1 = {0,1};
++  V v2 = {0,2};
++
++  if (foo(&a,0,&v1) != 0)
++    __builtin_abort();
++  if (foo(&a,0,&v2) != 1)
++    __builtin_abort();
++  if (foo(&a,1,&v1) != 0)
++    __builtin_abort();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/lp1189445.c gcc-4.8.1/gcc/testsuite/gcc.target/arm/lp1189445.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/lp1189445.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/arm/lp1189445.c	2013-08-09 01:59:01.329587000 -0500
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon } */
++/* { dg-add-options arm_neon } */
++/* { dg-options "-O3" } */
++
++int id;
++int
++test (const long int *data)
++{
++  int i, retval;
++  retval = id;
++  for (i = 0; i < id; i++)
++    {
++      retval &= (data[i] <= 0);
++    }
++
++  return (retval);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/pr58041.c gcc-4.8.1/gcc/testsuite/gcc.target/arm/pr58041.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/pr58041.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/arm/pr58041.c	2013-08-06 10:08:59.668112000 -0500
+@@ -0,0 +1,30 @@
++/* { dg-do compile } */
++/* { dg-options "-Os -mno-unaligned-access" } */
++/* { dg-final { scan-assembler "ldrb" } } */
++/* { dg-final { scan-assembler "strb" } } */
++
++struct s
++{
++  char u;
++  long long v[2];
++} __attribute__((packed,aligned(1)));
++
++__attribute__((noinline, noclone))
++long long foo(struct s *x, int y, long long z)
++{
++  long long a = x->v[y];
++  x->v[y] = z;
++  return a;
++}
++
++struct s a = {0,{0,0}};
++int main()
++{
++  if (foo(&a,0,1) != 0)
++    __builtin_abort();
++  if (foo(&a,0,2) != 1)
++    __builtin_abort();
++  if (foo(&a,1,1) != 0)
++    __builtin_abort();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c gcc-4.8.1/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c	2013-07-25 00:27:55.786383000 -0500
+@@ -0,0 +1,12 @@
++/* { dg-require-effective-target arm_thumb1_ok } */
++/* { dg-do compile } */
++/* { dg-options "-Os" } */
++/* { dg-skip-if "" { ! { arm_thumb1 } } } */
++
++int
++mymul3 (int x)
++{
++  return x * 0x555;
++}
++
++/* { dg-final { scan-assembler "mul\[\\t \]*r.,\[\\t \]*r." } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c gcc-4.8.1/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c	2013-02-08 04:13:37.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/avr/torture/builtins-4-roundfx.c	2013-07-19 06:15:26.382992000 -0500
+@@ -72,11 +72,11 @@
+ 
+ static void test2hr (void)
+ {
+-  TEST2 (hr, 1, 0x7f, 0x40);
+-  TEST2 (hr, 2, 0x7f, 0b1100000);
+-  TEST2 (hr, 3, 0x7f, 0b1110000);
+-  TEST2 (hr, 4, 0x7f, 0b1111000);
+-
++  TEST2 (hr, 1, 0x7f, 0x7f);
++  TEST2 (hr, 2, 0x70, 0x7f);
++  TEST2 (hr, 3, 0x78, 0x7f);
++  TEST2 (hr, 4, 0x7f, 0x7f);
++ 
+   TEST2 (uhr, 1, 0x7f, 0x80);
+   TEST2 (uhr, 2, 0x7f, 0x80);
+   TEST2 (uhr, 3, 0x7f, 0x80);
+@@ -85,10 +85,13 @@
+ 
+ void test2k (void)
+ {
+-  TEST2 (k, 1, 0x7fffffff, 0x7fff8000 | 0b100000000000000);
+-  TEST2 (k, 2, 0x7fffffff, 0x7fff8000 | 0b110000000000000);
+-  TEST2 (k, 3, 0x7fffffff, 0x7fff8000 | 0b111000000000000);
+-  TEST2 (k, 4, 0x7fffffff, 0x7fff8000 | 0b111100000000000);
++  TEST2 (k, 1, 0x7fffff00, 0x7fffffff);
++  TEST2 (k, 2, 0x7ffffff0, 0x7fffffff);
++  TEST2 (k, 2, 0x7ffff000, 0x7fffffff);
++  TEST2 (k, 3, 0x7ffff000, 0x7ffff000);
++  TEST2 (k, 3, 0x7ffff800, 0x7fffffff);
++  TEST2 (k, 3, 0x7ffff7ff, 0x7ffff000);
++  TEST2 (k, 4, 0x7ffff7ff, 0x7ffff800);
+ 
+   TEST2 (uk, 1, 0x7fffffff, 1ul << 31);
+   TEST2 (uk, 2, 0x7fffffff, 1ul << 31);
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-1.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-1.c	2010-11-10 16:02:23.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-1.c	2013-07-19 02:38:07.333150000 -0500
+@@ -1,11 +1,11 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbmi " } */
+-/* { dg-final { scan-assembler "andn\[^\\n]*(%|)eax" } } */
+-/* { dg-final { scan-assembler "bextr\[^\\n]*(%|)eax" } } */
+-/* { dg-final { scan-assembler "blsi\[^\\n]*(%|)eax" } } */
+-/* { dg-final { scan-assembler "blsmsk\[^\\n]*(%|)eax" } } */
+-/* { dg-final { scan-assembler "blsr\[^\\n]*(%|)eax" } } */
+-/* { dg-final { scan-assembler "tzcntl\[^\\n]*(%|)eax" } } */
++/* { dg-final { scan-assembler "andn\[^\\n]*eax" } } */
++/* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*eax" 2 } } */
++/* { dg-final { scan-assembler-times "blsi\[^\\n]*eax" 2 } } */
++/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*eax" 2 } } */
++/* { dg-final { scan-assembler-times "blsr\[^\\n]*eax" 2 } } */
++/* { dg-final { scan-assembler-times "tzcntl\[^\\n]*eax" 2 } } */
+ 
+ #include <x86intrin.h>
+ 
+@@ -22,25 +22,57 @@
+ }
+ 
+ unsigned int
++func_bextr32_3args (unsigned int X,
++		    unsigned int Y,
++		    unsigned int Z)
++{
++  return _bextr_u32(X, Y, Z);
++}
++
++unsigned int
+ func_blsi32 (unsigned int X)
+ {
+   return __blsi_u32(X);
+ }
+ 
+ unsigned int
++func_blsi32_2 (unsigned int X)
++{
++  return _blsi_u32(X);
++}
++
++unsigned int
+ func_blsmsk32 (unsigned int X)
+ {
+   return __blsmsk_u32(X);
+ }
+ 
+ unsigned int
++func_blsmsk32_2 (unsigned int X)
++{
++  return _blsmsk_u32(X);
++}
++
++unsigned int
+ func_blsr32 (unsigned int X)
+ {
+   return __blsr_u32(X);
+ }
+ 
+ unsigned int
++func_blsr32_2 (unsigned int X)
++{
++  return _blsr_u32(X);
++}
++
++unsigned int
+ func_tzcnt32 (unsigned int X)
+ {
+   return __tzcnt_u32(X);
+ }
++
++unsigned int
++func_tzcnt32_2 (unsigned int X)
++{
++  return _tzcnt_u32(X);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c	2013-06-27 11:45:44.733142000 -0500
+@@ -0,0 +1,31 @@
++/* PR target/57623 */
++/* { dg-do assemble { target bmi2 } } */
++/* { dg-options "-O2 -mbmi2" } */
++
++#include <x86intrin.h>
++
++unsigned int
++f1 (unsigned int x, unsigned int *y)
++{
++  return _bzhi_u32 (x, *y);
++}
++
++unsigned int
++f2 (unsigned int *x, unsigned int y)
++{
++  return _bzhi_u32 (*x, y);
++}
++
++#ifdef  __x86_64__
++unsigned long long
++f3 (unsigned long long x, unsigned long long *y)
++{
++  return _bzhi_u64 (x, *y);
++}
++
++unsigned long long
++f4 (unsigned long long *x, unsigned long long y)
++{
++  return _bzhi_u64 (*x, y);
++}
++#endif
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-2.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-2.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-2.c	2011-07-09 14:25:11.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-2.c	2013-07-19 02:38:07.333150000 -0500
+@@ -1,11 +1,11 @@
+ /* { dg-do compile { target { ! { ia32 }  } } } */
+ /* { dg-options "-O2 -mbmi " } */
+-/* { dg-final { scan-assembler "andn\[^\\n]*(%|)rax" } } */
+-/* { dg-final { scan-assembler "bextr\[^\\n]*(%|)rax" } } */
+-/* { dg-final { scan-assembler "blsi\[^\\n]*(%|)rax" } } */
+-/* { dg-final { scan-assembler "blsmsk\[^\\n]*(%|)rax" } } */
+-/* { dg-final { scan-assembler "blsr\[^\\n]*(%|)rax" } } */
+-/* { dg-final { scan-assembler "tzcntq\[^\\n]*(%|)rax" } } */
++/* { dg-final { scan-assembler "andn\[^\\n]*rax" } } */
++/* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*rax" 2 } } */
++/* { dg-final { scan-assembler-times "blsi\[^\\n]*rax" 2 } } */
++/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*rax" 2 } } */
++/* { dg-final { scan-assembler-times "blsr\[^\\n]*rax" 2 } } */
++/* { dg-final { scan-assembler-times "tzcntq\[^\\n]*rax" 2 } } */
+ 
+ #include <x86intrin.h>
+ 
+@@ -22,25 +22,57 @@
+ }
+ 
+ unsigned long long
++func_bextr64_3args (unsigned long long X,
++		    unsigned long long Y,
++		    unsigned long long Z)
++{
++  return _bextr_u64 (X, Y, Z);
++}
++
++unsigned long long
+ func_blsi64 (unsigned long long X)
+ {
+   return __blsi_u64 (X);
+ }
+ 
+ unsigned long long
++func_blsi64_2 (unsigned long long X)
++{
++  return _blsi_u64 (X);
++}
++
++unsigned long long
+ func_blsmsk64 (unsigned long long X)
+ {
+   return __blsmsk_u64 (X);
+ }
+ 
+ unsigned long long
++func_blsmsk64_2 (unsigned long long X)
++{
++  return _blsmsk_u64 (X);
++}
++
++unsigned long long
+ func_blsr64 (unsigned long long X)
+ {
+   return __blsr_u64 (X);
+ }
+ 
+ unsigned long long
++func_blsr64_2 (unsigned long long X)
++{
++  return _blsr_u64 (X);
++}
++
++unsigned long long
+ func_tzcnt64 (unsigned long long X)
+ {
+   return __tzcnt_u64 (X);
+ }
++
++unsigned long long
++func_tzcnt64_2 (unsigned long long X)
++{
++  return _tzcnt_u64 (X);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c	2013-06-27 11:49:38.157989000 -0500
+@@ -0,0 +1,31 @@
++/* PR target/57623 */
++/* { dg-do assemble { target bmi } } */
++/* { dg-options "-O2 -mbmi" } */
++
++#include <x86intrin.h>
++
++unsigned int
++f1 (unsigned int x, unsigned int *y)
++{
++  return __bextr_u32 (x, *y);
++}
++
++unsigned int
++f2 (unsigned int *x, unsigned int y)
++{
++  return __bextr_u32 (*x, y);
++}
++
++#ifdef  __x86_64__
++unsigned long long
++f3 (unsigned long long x, unsigned long long *y)
++{
++  return __bextr_u64 (x, *y);
++}
++
++unsigned long long
++f4 (unsigned long long *x, unsigned long long y)
++{
++  return __bextr_u64 (*x, y);
++}
++#endif
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/movabs-1.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/movabs-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/movabs-1.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/movabs-1.c	2013-08-13 07:45:06.811510000 -0500
+@@ -0,0 +1,10 @@
++/* { dg-do assemble } */
++/* { dg-options "-O2 -masm=intel" } */
++/* { dg-require-effective-target lp64 } */
++/* { dg-require-effective-target masm_intel } */
++
++void
++foo (void)
++{
++  *(volatile long*)0xFFFF800000000000 = -1;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57459.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57459.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57459.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57459.c	2013-08-13 11:40:33.972568000 -0500
+@@ -0,0 +1,60 @@
++/* PR rtl-optimization/57459 */
++/* { dg-do run } */
++/* { dg-options "-fno-inline -O2 -minline-all-stringops -fno-omit-frame-pointer" } */
++
++int total1[10], total2[10], total3[10], total4[10], total5[10], a[20];
++int len;
++
++void stackclean() {
++  void *ptr = __builtin_alloca(20000);
++  __builtin_memset(ptr, 0, 20000);
++}
++
++void foo(const char *s) {
++  int r1 = a[1];
++  int r2 = a[2];
++  int r3 = a[3];
++  int r4 = a[4];
++  int r5 = a[5];
++
++  len =  __builtin_strlen(s);
++
++  if (s != 0)
++    return;
++
++  while (r1) {
++   total1[r1] = r1;
++   r1--;
++  }
++
++  while (r2) {
++   total2[r2] = r2;
++   r2--;
++  }
++
++  while (r3) {
++   total3[r3] = r3;
++   r3--;
++  }
++
++  while (r4) {
++   total4[r4] = r4;
++   r4--;
++  }
++
++  while (r5) {
++   total5[r5] = r5;
++   r5--;
++  }
++}
++
++extern void abort (void);
++
++int main() {
++  stackclean();
++  foo("abcdefgh");
++  if (len != 8)
++    abort ();
++  return 0;
++}
++
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57655.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57655.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57655.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57655.c	2013-06-21 08:30:30.950078000 -0500
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-mavx -mvzeroupper -mno-fp-ret-in-387" }
++
++/* { dg-error "x87 register return with x87 disabled" "" { target { ! ia32 } } 8 } */
++
++long double
++foo (long double x)
++{
++  return __builtin_ilogbl (x);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57736.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57736.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57736.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57736.c	2013-06-28 15:26:27.574295000 -0500
+@@ -0,0 +1,41 @@
++/* PR target/57736 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++#include <x86intrin.h>
++
++unsigned long long
++f1 (void)
++{
++  return __rdtsc ();
++}
++
++unsigned long long
++f2 (unsigned int *x)
++{
++  return __rdtscp (x);
++}
++
++unsigned long long
++f3 (unsigned int x)
++{
++  return __rdpmc (x);
++}
++
++void
++f4 (void)
++{
++  __rdtsc ();
++}
++
++void
++f5 (unsigned int *x)
++{
++  __rdtscp (x);
++}
++
++void
++f6 (unsigned int x)
++{
++  __rdpmc (x);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57777.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57777.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr57777.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr57777.c	2013-07-03 15:24:19.796040000 -0500
+@@ -0,0 +1,13 @@
++/* PR target/57777 */
++/* { dg-do assemble { target avx2 } } */
++/* { dg-options "-O3 -mavx2" } */
++/* { dg-additional-options "-fpic" { target fpic } } */
++
++void
++foo (unsigned long *x, int *y)
++{
++  static unsigned long b[2] = { 0x0UL, 0x9908b0dfUL };
++  int c;
++  for (c = 0; c < 512; c++)
++    x[c] = b[x[c] & 1UL];
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr58218.c gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr58218.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/i386/pr58218.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/i386/pr58218.c	2013-08-23 05:01:34.440607000 -0500
+@@ -0,0 +1,5 @@
++/* PR target/58218 */
++/* { dg-do assemble { target lp64 } } */
++/* { dg-options "-mcmodel=medium" } */
++
++struct { float x[16385]; } a = { { 0.f, } };
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/20020118-1.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/20020118-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/20020118-1.c	2009-04-28 03:38:37.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/20020118-1.c	2013-07-10 16:06:27.116312000 -0500
+@@ -1,6 +1,8 @@
+ /* { dg-do run { target powerpc*-*-* } }*/
+ /* VxWorks only guarantees 64 bits of alignment (STACK_BOUNDARY == 64).  */
+ /* { dg-skip-if "" { "powerpc*-*-vxworks*" } { "*" } { "" } } */
++/* Force 128-bit stack alignment for eabi targets.  */
++/* { dg-options "-mno-eabi" { target powerpc*-*-eabi* } } */
+ 
+ /* Test local alignment.  Test new target macro STARTING_FRAME_PHASE.  */
+ /* Origin: Aldy Hernandez <aldyh@redhat.com>.  */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/altivec-consts.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/altivec-consts.c	2009-01-13 11:52:32.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/altivec-consts.c	2013-06-23 19:59:24.817984000 -0500
+@@ -11,31 +11,24 @@
+ typedef __attribute__ ((vector_size (16))) unsigned short v8hi;
+ typedef __attribute__ ((vector_size (16))) unsigned int v4si;
+ 
+-char w[16] __attribute__((aligned(16)));
+- 
+-
+
+-/* Emulate the vspltis? instructions on a 16-byte array of chars.  */
++typedef __attribute__((aligned(16))) char c16[16];
++typedef __attribute__((aligned(16))) short s8[8];
++typedef __attribute__((aligned(16))) int i4[4];
+ 
+-void vspltisb (char *v, int val)
+-{
+-  int i;
+-  for (i = 0; i < 16; i++)
+-    v[i] = val;
+-}
++#define V16QI(V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16)	\
++  v16qi v = {V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16};	\
++  static c16 w = {V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16}; \
++  check_v16qi (v, w);
+ 
+-void vspltish (char *v, int val)
+-{
+-  int i;
+-  for (i = 0; i < 16; i += 2)
+-    v[i] = val >> 7, v[i + 1] = val;
+-}
++#define V8HI(V1,V2,V3,V4,V5,V6,V7,V8)		\
++  v8hi v = {V1,V2,V3,V4,V5,V6,V7,V8};		\
++  static s8 w = {V1,V2,V3,V4,V5,V6,V7,V8};	\
++  check_v8hi (v, w);
+ 
+-void vspltisw (char *v, int val)
+-{
+-  int i;
+-  for (i = 0; i < 16; i += 4)
+-    v[i] = v[i + 1] = v[i + 2] = val >> 7, v[i + 3] = val;
+-}
++#define V4SI(V1,V2,V3,V4)	\
++  v4si v = {V1,V2,V3,V4};	\
++  static i4 w = {V1,V2,V3,V4};	\
++  check_v4si (v, w);
+ 
+ 
+
+ /* Use three different check functions for each mode-instruction pair.
+@@ -48,13 +41,13 @@
+     abort ();
+ }
+ 
+-void __attribute__ ((noinline)) check_v8hi (v8hi v1, char *v2)
++void __attribute__ ((noinline)) check_v8hi (v8hi v1, short *v2)
+ {
+   if (memcmp (&v1, v2, 16))
+     abort ();
+ }
+ 
+-void __attribute__ ((noinline)) check_v4si (v4si v1, char *v2)
++void __attribute__ ((noinline)) check_v4si (v4si v1, int *v2)
+ {
+   if (memcmp (&v1, v2, 16))
+     abort ();
+@@ -65,72 +58,52 @@
+ 
+ void v16qi_vspltisb ()
+ {
+-  v16qi v = { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 };
+-  vspltisb (w, 15);
+-  check_v16qi (v, w);
++  V16QI (15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15);
+ }
+ 
+ void v16qi_vspltisb_neg ()
+ {
+-  v16qi v = { -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5 };
+-  vspltisb (w, -5);
+-  check_v16qi (v, w);
++  V16QI (-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5);
+ }
+ 
+ void v16qi_vspltisb_addself ()
+ {
+-  v16qi v = { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 };
+-  vspltisb (w, 30);
+-  check_v16qi (v, w);
++  V16QI (30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30);
+ }
+ 
+ void v16qi_vspltisb_neg_addself ()
+ {
+-  v16qi v = { -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24 };
+-  vspltisb (w, -24);
+-  check_v16qi (v, w);
++  V16QI (-24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24);
+ }
+ 
+ void v16qi_vspltish ()
+ {
+-  v16qi v = { 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15 };
+-  vspltish (w, 15);
+-  check_v16qi (v, w);
++  V16QI (0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15);
+ }
+ 
+ void v16qi_vspltish_addself ()
+ {
+-  v16qi v = { 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30 };
+-  vspltish (w, 30);
+-  check_v16qi (v, w);
++  V16QI (0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30);
+ }
+ 
+ void v16qi_vspltish_neg ()
+ {
+-  v16qi v = { -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5 };
+-  vspltish (w, -5);
+-  check_v16qi (v, w);
++  V16QI (-1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5);
+ }
+ 
+ void v16qi_vspltisw ()
+ {
+-  v16qi v = { 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15 };
+-  vspltisw (w, 15);
+-  check_v16qi (v, w);
++  V16QI (0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15);
+ }
+ 
+ void v16qi_vspltisw_addself ()
+ {
+-  v16qi v = { 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30 };
+-  vspltisw (w, 30);
+-  check_v16qi (v, w);
++  V16QI (0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30);
+ }
+ 
+ void v16qi_vspltisw_neg ()
+ {
+-  v16qi v = { -1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1, -5 };
+-  vspltisw (w, -5);
+-  check_v16qi (v, w);
++  V16QI (-1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1, -5);
+ }
+ 
+ 
+
+@@ -138,144 +111,104 @@
+ 
+ void v8hi_vspltisb ()
+ {
+-  v8hi v = { 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F };
+-  vspltisb (w, 15);
+-  check_v8hi (v, w);
++  V8HI (0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F);
+ }
+ 
+ void v8hi_vspltisb_addself ()
+ {
+-  v8hi v = { 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E };
+-  vspltisb (w, 30);
+-  check_v8hi (v, w);
++  V8HI (0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E);
+ }
+ 
+ void v8hi_vspltisb_neg ()
+ {
+-  v8hi v = { 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB };
+-  vspltisb (w, -5);
+-  check_v8hi (v, w);
++  V8HI (0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB);
+ }
+ 
+ void v8hi_vspltish ()
+ {
+-  v8hi v = { 15, 15, 15, 15, 15, 15, 15, 15 };
+-  vspltish (w, 15);
+-  check_v8hi (v, w);
++  V8HI (15, 15, 15, 15, 15, 15, 15, 15);
+ }
+ 
+ void v8hi_vspltish_neg ()
+ {
+-  v8hi v = { -5, -5, -5, -5, -5, -5, -5, -5 };
+-  vspltish (w, -5);
+-  check_v8hi (v, w);
++  V8HI (-5, -5, -5, -5, -5, -5, -5, -5);
+ }
+ 
+ void v8hi_vspltish_addself ()
+ {
+-  v8hi v = { 30, 30, 30, 30, 30, 30, 30, 30 };
+-  vspltish (w, 30);
+-  check_v8hi (v, w);
++  V8HI (30, 30, 30, 30, 30, 30, 30, 30);
+ }
+ 
+ void v8hi_vspltish_neg_addself ()
+ {
+-  v8hi v = { -24, -24, -24, -24, -24, -24, -24, -24 };
+-  vspltish (w, -24);
+-  check_v8hi (v, w);
++  V8HI (-24, -24, -24, -24, -24, -24, -24, -24);
+ }
+ 
+ void v8hi_vspltisw ()
+ {
+-  v8hi v = { 0, 15, 0, 15, 0, 15, 0, 15 };
+-  vspltisw (w, 15);
+-  check_v8hi (v, w);
++  V8HI (0, 15, 0, 15, 0, 15, 0, 15);
+ }
+ 
+ void v8hi_vspltisw_addself ()
+ {
+-  v8hi v = { 0, 30, 0, 30, 0, 30, 0, 30 };
+-  vspltisw (w, 30);
+-  check_v8hi (v, w);
++  V8HI (0, 30, 0, 30, 0, 30, 0, 30);
+ }
+ 
+ void v8hi_vspltisw_neg ()
+ {
+-  v8hi v = { -1, -5, -1, -5, -1, -5, -1, -5 };
+-  vspltisw (w, -5);
+-  check_v8hi (v, w);
++  V8HI (-1, -5, -1, -5, -1, -5, -1, -5);
+ }
+ 
+ /* V4SI tests. */
+ 
+ void v4si_vspltisb ()
+ {
+-  v4si v = { 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F };
+-  vspltisb (w, 15);
+-  check_v4si (v, w);
++  V4SI (0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F);
+ }
+ 
+ void v4si_vspltisb_addself ()
+ {
+-  v4si v = { 0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E };
+-  vspltisb (w, 30);
+-  check_v4si (v, w);
++  V4SI (0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E);
+ }
+ 
+ void v4si_vspltisb_neg ()
+ {
+-  v4si v = { 0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB };
+-  vspltisb (w, -5);
+-  check_v4si (v, w);
++  V4SI (0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB);
+ }
+ 
+ void v4si_vspltish ()
+ {
+-  v4si v = { 0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F };
+-  vspltish (w, 15);
+-  check_v4si (v, w);
++  V4SI (0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F);
+ }
+ 
+ void v4si_vspltish_addself ()
+ {
+-  v4si v = { 0x001E001E, 0x001E001E, 0x001E001E, 0x001E001E };
+-  vspltish (w, 30);
+-  check_v4si (v, w);
++  V4SI (0x001E001E, 0x001E001E, 0x001E001E, 0x001E001E);
+ }
+ 
+ void v4si_vspltish_neg ()
+ {
+-  v4si v = { 0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB };
+-  vspltish (w, -5);
+-  check_v4si (v, w);
++  V4SI (0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB);
+ }
+ 
+ void v4si_vspltisw ()
+ {
+-  v4si v = { 15, 15, 15, 15 };
+-  vspltisw (w, 15);
+-  check_v4si (v, w);
++  V4SI (15, 15, 15, 15);
+ }
+ 
+ void v4si_vspltisw_neg ()
+ {
+-  v4si v = { -5, -5, -5, -5 };
+-  vspltisw (w, -5);
+-  check_v4si (v, w);
++  V4SI (-5, -5, -5, -5);
+ }
+ 
+ void v4si_vspltisw_addself ()
+ {
+-  v4si v = { 30, 30, 30, 30 };
+-  vspltisw (w, 30);
+-  check_v4si (v, w);
++  V4SI (30, 30, 30, 30);
+ }
+ 
+ void v4si_vspltisw_neg_addself ()
+ {
+-  v4si v = { -24, -24, -24, -24 };
+-  vspltisw (w, -24);
+-  check_v4si (v, w);
++  V4SI (-24, -24, -24, -24);
+ }
+ 
+ 
+
+@@ -316,3 +249,5 @@
+   v4si_vspltisw_neg_addself ();
+   return 0;
+ }
++
++/* { dg-final { scan-assembler-not "lvx" { target { ! powerpc*le-*-* } } } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c	2013-06-23 19:59:24.817984000 -0500
+@@ -0,0 +1,253 @@
++/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
++/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
++/* { dg-options "-maltivec -mabi=altivec -O2" } */
++
++/* Check that "easy" AltiVec constants are correctly synthesized.  */
++
++extern void abort (void);
++
++typedef __attribute__ ((vector_size (16))) unsigned char v16qi;
++typedef __attribute__ ((vector_size (16))) unsigned short v8hi;
++typedef __attribute__ ((vector_size (16))) unsigned int v4si;
++
++typedef __attribute__((aligned(16))) char c16[16];
++typedef __attribute__((aligned(16))) short s8[8];
++typedef __attribute__((aligned(16))) int i4[4];
++
++#define V16QI(V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16)	\
++  v16qi v = {V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16};	\
++  static c16 w = {V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16}; \
++  check_v16qi (v, w);
++
++#define V8HI(V1,V2,V3,V4,V5,V6,V7,V8)		\
++  v8hi v = {V1,V2,V3,V4,V5,V6,V7,V8};		\
++  static s8 w = {V1,V2,V3,V4,V5,V6,V7,V8};	\
++  check_v8hi (v, w);
++
++#define V4SI(V1,V2,V3,V4)	\
++  v4si v = {V1,V2,V3,V4};	\
++  static i4 w = {V1,V2,V3,V4};	\
++  check_v4si (v, w);
++
++
+
++/* Use three different check functions for each mode-instruction pair.
++   The callers have no typecasting and no addressable vectors, to make
++   the test more robust.  */
++
++void __attribute__ ((noinline)) check_v16qi (v16qi v1, char *v2)
++{
++  if (memcmp (&v1, v2, 16))
++    abort ();
++}
++
++void __attribute__ ((noinline)) check_v8hi (v8hi v1, short *v2)
++{
++  if (memcmp (&v1, v2, 16))
++    abort ();
++}
++
++void __attribute__ ((noinline)) check_v4si (v4si v1, int *v2)
++{
++  if (memcmp (&v1, v2, 16))
++    abort ();
++}
++
++
+
++/* V16QI tests.  */
++
++void v16qi_vspltisb ()
++{
++  V16QI (15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15);
++}
++
++void v16qi_vspltisb_neg ()
++{
++  V16QI (-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5);
++}
++
++void v16qi_vspltisb_addself ()
++{
++  V16QI (30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30);
++}
++
++void v16qi_vspltisb_neg_addself ()
++{
++  V16QI (-24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24);
++}
++
++void v16qi_vspltish ()
++{
++  V16QI (15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 0);
++}
++
++void v16qi_vspltish_addself ()
++{
++  V16QI (30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, 0);
++}
++
++void v16qi_vspltish_neg ()
++{
++  V16QI (-5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1, -5, -1);
++}
++
++void v16qi_vspltisw ()
++{
++  V16QI (15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0);
++}
++
++void v16qi_vspltisw_addself ()
++{
++  V16QI (30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0);
++}
++
++void v16qi_vspltisw_neg ()
++{
++  V16QI (-5, -1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1, -5, -1, -1, -1);
++}
++
++
+
++/* V8HI tests. */
++
++void v8hi_vspltisb ()
++{
++  V8HI (0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F, 0x0F0F);
++}
++
++void v8hi_vspltisb_addself ()
++{
++  V8HI (0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E, 0x1E1E);
++}
++
++void v8hi_vspltisb_neg ()
++{
++  V8HI (0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB, 0xFBFB);
++}
++
++void v8hi_vspltish ()
++{
++  V8HI (15, 15, 15, 15, 15, 15, 15, 15);
++}
++
++void v8hi_vspltish_neg ()
++{
++  V8HI (-5, -5, -5, -5, -5, -5, -5, -5);
++}
++
++void v8hi_vspltish_addself ()
++{
++  V8HI (30, 30, 30, 30, 30, 30, 30, 30);
++}
++
++void v8hi_vspltish_neg_addself ()
++{
++  V8HI (-24, -24, -24, -24, -24, -24, -24, -24);
++}
++
++void v8hi_vspltisw ()
++{
++  V8HI (15, 0, 15, 0, 15, 0, 15, 0);
++}
++
++void v8hi_vspltisw_addself ()
++{
++  V8HI (30, 0, 30, 0, 30, 0, 30, 0);
++}
++
++void v8hi_vspltisw_neg ()
++{
++  V8HI (-5, -1, -5, -1, -5, -1, -5, -1);
++}
++
++/* V4SI tests. */
++
++void v4si_vspltisb ()
++{
++  V4SI (0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F);
++}
++
++void v4si_vspltisb_addself ()
++{
++  V4SI (0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E, 0x1E1E1E1E);
++}
++
++void v4si_vspltisb_neg ()
++{
++  V4SI (0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB, 0xFBFBFBFB);
++}
++
++void v4si_vspltish ()
++{
++  V4SI (0x000F000F, 0x000F000F, 0x000F000F, 0x000F000F);
++}
++
++void v4si_vspltish_addself ()
++{
++  V4SI (0x001E001E, 0x001E001E, 0x001E001E, 0x001E001E);
++}
++
++void v4si_vspltish_neg ()
++{
++  V4SI (0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB, 0xFFFBFFFB);
++}
++
++void v4si_vspltisw ()
++{
++  V4SI (15, 15, 15, 15);
++}
++
++void v4si_vspltisw_neg ()
++{
++  V4SI (-5, -5, -5, -5);
++}
++
++void v4si_vspltisw_addself ()
++{
++  V4SI (30, 30, 30, 30);
++}
++
++void v4si_vspltisw_neg_addself ()
++{
++  V4SI (-24, -24, -24, -24);
++}
++
++
+
++
++int main ()
++{
++  v16qi_vspltisb ();
++  v16qi_vspltisb_neg ();
++  v16qi_vspltisb_addself ();
++  v16qi_vspltisb_neg_addself ();
++  v16qi_vspltish ();
++  v16qi_vspltish_addself ();
++  v16qi_vspltish_neg ();
++  v16qi_vspltisw ();
++  v16qi_vspltisw_addself ();
++  v16qi_vspltisw_neg ();
++
++  v8hi_vspltisb ();
++  v8hi_vspltisb_addself ();
++  v8hi_vspltisb_neg ();
++  v8hi_vspltish ();
++  v8hi_vspltish_neg ();
++  v8hi_vspltish_addself ();
++  v8hi_vspltish_neg_addself ();
++  v8hi_vspltisw ();
++  v8hi_vspltisw_addself ();
++  v8hi_vspltisw_neg ();
++
++  v4si_vspltisb ();
++  v4si_vspltisb_addself ();
++  v4si_vspltisb_neg ();
++  v4si_vspltish ();
++  v4si_vspltish_addself ();
++  v4si_vspltish_neg ();
++  v4si_vspltisw ();
++  v4si_vspltisw_neg ();
++  v4si_vspltisw_addself ();
++  v4si_vspltisw_neg_addself ();
++  return 0;
++}
++
++/* { dg-final { scan-assembler-not "lvx" { target { powerpc*le-*-* } } } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c	2009-01-12 21:11:48.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c	2013-07-08 14:39:20.298935000 -0500
+@@ -4,4 +4,4 @@
+ /* { dg-options "-m64" } */
+ 
+ /* { dg-error "-m64 not supported in this configuration" "SPE not 64-bit" { target *-*-* } 0 } */
+-/* { dg-error "64-bit E500 not supported" "64-bit E500" { target *-*-* } 0 } */
++/* { dg-error "64-bit SPE not supported" "64-bit SPE" { target *-*-* } 0 } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/pr47197.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/pr47197.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/pr47197.c	2012-04-24 10:51:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/pr47197.c	2013-07-08 14:38:40.579938000 -0500
+@@ -1,4 +1,5 @@
+ /* { dg-do compile } */
++/* { dg-require-effective-target powerpc_altivec_ok } */
+ /* { dg-options "-maltivec" } */
+ 
+ /* Compile-only test to ensure that expressions can be passed to
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/tfmode_off.c gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/powerpc/tfmode_off.c	2012-11-07 15:03:08.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/powerpc/tfmode_off.c	2013-07-08 15:21:45.963328000 -0500
+@@ -1,5 +1,6 @@
+ /* { dg-do assemble } */
+ /* { dg-skip-if "" { powerpc-ibm-aix* } { "*" } { "" } } */
++/* { dg-skip-if "no TFmode" { powerpc-*-eabi* } { "*" } { "" } } */
+ /* { dg-options "-O2 -fno-align-functions -mtraceback=no -save-temps" } */
+ 
+ typedef float TFmode __attribute__ ((mode (TF)));
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/sh/pr56547-1.c gcc-4.8.1/gcc/testsuite/gcc.target/sh/pr56547-1.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/sh/pr56547-1.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/sh/pr56547-1.c	2013-06-09 17:02:28.968408000 -0500
+@@ -0,0 +1,19 @@
++/* Verify that the fmac insn is used for the expression 'a * b + a' and
++   'a * a + a'.
++   This assumes that the default compiler setting is -ffp-contract=fast.  */
++/* { dg-do compile { target "sh*-*-*" } } */
++/* { dg-options "-O1" } */
++/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
++/* { dg-final { scan-assembler-times "fmac" 2 } } */
++
++float
++test_00 (float a, float b)
++{
++  return a * b + a;
++}
++
++float
++test_01 (float a)
++{
++  return a * a + a;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gcc.target/sh/pr56547-2.c gcc-4.8.1/gcc/testsuite/gcc.target/sh/pr56547-2.c
+--- gcc-4.8.1.orig/gcc/testsuite/gcc.target/sh/pr56547-2.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gcc.target/sh/pr56547-2.c	2013-06-09 17:02:28.968408000 -0500
+@@ -0,0 +1,18 @@
++/* Verify that the fmac insn is used for the expression 'a * b + a' and
++   'a * a + a' when -ffast-math is specified.  */
++/* { dg-do compile { target "sh*-*-*" } } */
++/* { dg-options "-O1 -ffast-math" } */
++/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
++/* { dg-final { scan-assembler-times "fmac" 2 } } */
++
++float
++test_00 (float a, float b)
++{
++  return a * b + a;
++}
++
++float
++test_01 (float a)
++{
++  return a * a + a;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/constexpr-value4.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/constexpr-value4.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/constexpr-value4.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/constexpr-value4.C	2013-07-30 11:58:28.826601000 -0500
+@@ -0,0 +1,16 @@
++// PR c++/57901
++// { dg-require-effective-target c++11 }
++
++struct Z {
++    Z()         = default;
++    Z(Z const&) = default;
++    constexpr Z(Z&&) {} /* non-trivial (constexpr) move ctor */
++};
++
++template<typename T>
++constexpr int fn0(T v) { return 0; }
++template<typename T>
++constexpr int fn (T v) { return fn0(v); }
++
++constexpr auto t0 = fn0(Z()); // OK!
++constexpr auto t  = fn (Z()); // error! (GCC 4.8.1)
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/decltype55.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/decltype55.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/decltype55.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/decltype55.C	2013-06-21 03:42:56.865320000 -0500
+@@ -0,0 +1,20 @@
++// PR c++/53211
++// { dg-do compile { target c++11 } }
++
++template<typename A, typename B>
++  struct is_same { static const bool value = false; };
++
++template<typename A>
++  struct is_same<A, A> { static const bool value = true; };
++
++template<typename... Args>
++void func(Args... args)
++{
++  int arr[] = { args... };
++  static_assert (is_same<decltype(arr), int[sizeof...(Args)]>::value, "");
++}
++
++int main()
++{
++  func(1, 2, 3, 4);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/defaulted44.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/defaulted44.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/defaulted44.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/defaulted44.C	2013-05-31 08:03:45.258613000 -0500
+@@ -0,0 +1,24 @@
++// PR c++/57319
++// { dg-require-effective-target c++11 }
++
++namespace N1 {
++  struct A { };
++  struct B: virtual A { };
++  struct C: virtual B { };
++
++  struct D: C
++  {
++    void operator= (D &);
++  };
++}
++
++namespace N2 {
++  struct A { A& operator=(A&&); };
++  struct B: virtual A { };	// { dg-warning "move assignment" }
++  struct C: virtual B { };	// { dg-warning "move assignment" }
++
++  struct D: C
++  {
++    void operator= (D &);
++  };
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/defaulted45.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/defaulted45.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/defaulted45.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/defaulted45.C	2013-07-13 20:06:02.832708000 -0500
+@@ -0,0 +1,20 @@
++// { dg-do run }
++// { dg-require-effective-target c++11 }
++
++struct A
++{
++  int i;
++  A() = default;
++  A(int i): i{i} { }
++  ~A() {}
++};
++
++int main(int argc, char **argv)
++{
++  { int i[4] = { 42, 42, 42, 42 }; }
++  {
++    A a[4] = { argc };
++    if (a[1].i != 0)
++      __builtin_abort ();
++  }
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist71.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/initlist71.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist71.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/initlist71.C	2013-05-31 08:03:23.182211000 -0500
+@@ -0,0 +1,9 @@
++// PR c++/56930
++// { dg-require-effective-target c++11 }
++// { dg-options -Wconversion }
++
++int main()
++{
++  int x = sizeof(int);
++  int y { sizeof(int) };
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-auto3.C	2013-07-09 12:52:48.262064000 -0500
+@@ -0,0 +1,24 @@
++// PR c++/57526
++// { dg-require-effective-target c++11 }
++
++template<class T>
++struct A
++{
++  void bar( ) { }
++
++  void foo( )
++  {
++    auto* this_ptr = this;
++    auto lc = [&]( )
++      {
++	this_ptr->bar();
++      };
++    lc();
++  }
++};
++
++int main()
++{
++  A<int> a;
++  a.foo();
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C	2013-08-17 20:07:02.824495000 -0500
+@@ -0,0 +1,30 @@
++// PR c++/58083
++// { dg-do compile { target c++11 } }
++
++namespace details {
++struct iterator_concept_checker
++{
++    typedef char yes_type;
++    typedef char (&no_type)[2];
++
++    template <typename T>
++    static no_type test(...);
++
++    template <typename T>
++    static yes_type test(
++        int*
++	, void (*)(T) = [](T it)
++        {
++            auto copy = T{it};                              // copy constructible
++            copy = it;                                      // copy assignable
++            copy.~T();                                      // destroyable
++            ++it;                                           // incrementable
++        }
++      );
++};
++}
++
++int main()
++{
++  details::iterator_concept_checker::test<int>(0);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C	2013-07-09 12:52:34.273079000 -0500
+@@ -0,0 +1,26 @@
++// PR c++/57437
++// { dg-require-effective-target c++11 }
++
++struct A {
++  int i;
++
++  A(): i(42) {}
++  A(const A&) = default;
++  A(A&& a): i(a.i) { a.i = 0; }
++};
++
++int main()
++{
++  A x;
++
++  auto y = [x] () mutable {
++    x.i++;
++    return x;
++  };
++
++  if (y().i != 43)
++    __builtin_abort ();
++
++  if (y().i != 44)
++    __builtin_abort ();
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/noexcept21.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/noexcept21.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/noexcept21.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/noexcept21.C	2013-07-05 05:23:08.653887000 -0500
+@@ -0,0 +1,87 @@
++// PR c++/57645
++// { dg-do compile { target c++11 } }
++
++struct Thrower
++{
++  ~Thrower() noexcept(false) { throw 1; }
++};
++
++struct ExplicitA
++{
++  ~ExplicitA() {}
++
++  Thrower t;
++};
++
++struct ExplicitB
++{
++  ~ExplicitB();
++
++  Thrower t;
++};
++
++ExplicitB::~ExplicitB() {}
++
++struct ExplicitC
++{
++  ~ExplicitC() = default;
++
++  Thrower t;
++};
++
++struct ExplicitD
++{
++  ~ExplicitD();
++
++  Thrower t;
++};
++
++ExplicitD::~ExplicitD() = default;
++
++struct NoThrower
++{
++  ~NoThrower() noexcept(true) {}
++};
++
++struct ExplicitE
++{
++  ~ExplicitE() {}
++
++  NoThrower t;
++};
++
++struct ExplicitF
++{
++  ~ExplicitF();
++
++  NoThrower t;
++};
++
++ExplicitF::~ExplicitF() {}
++
++struct ExplicitG
++{
++  ~ExplicitG() = default;
++
++  NoThrower t;
++};
++
++struct ExplicitH
++{
++  ~ExplicitH();
++
++  NoThrower t;
++};
++
++ExplicitH::~ExplicitH() = default;
++
++#define SA(X) static_assert(X, #X)
++
++SA( !noexcept(ExplicitA()) );
++SA( !noexcept(ExplicitB()) );
++SA( !noexcept(ExplicitC()) );
++SA( !noexcept(ExplicitD()) );
++SA( noexcept(ExplicitE()) );
++SA( noexcept(ExplicitF()) );
++SA( noexcept(ExplicitG()) );
++SA( noexcept(ExplicitH()) );
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/pr57981.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/pr57981.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/pr57981.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/pr57981.C	2013-08-20 07:14:43.110616000 -0500
+@@ -0,0 +1,17 @@
++// { dg-options "-std=c++11 -Wall -Wextra" }
++
++template<class T>
++void f(T t, void* = 0)  // { dg-warning "unused parameter" }
++{
++}
++
++template<class T>
++auto g(T t) -> decltype(f(t))
++{
++  f(t);
++}
++
++int main()
++{
++  g(0);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/ref-qual14.C gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/ref-qual14.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/cpp0x/ref-qual14.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/cpp0x/ref-qual14.C	2013-08-06 20:18:57.648578000 -0500
+@@ -0,0 +1,18 @@
++// PR c++/57825
++// { dg-do compile { target c++11 } }
++
++template<typename T>
++struct target_class
++{};
++
++template<typename Class, typename Ret, typename... Args>
++struct target_class<Ret (Class::*)(Args...)>
++{};
++
++template<typename Class, typename Ret, typename... Args>
++struct target_class<Ret (Class::*)(Args...) &>
++{};
++
++template<typename Class, typename Ret, typename... Args>
++struct target_class<Ret (Class::*)(Args...) &&>
++{};
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/debug/template2.C gcc-4.8.1/gcc/testsuite/g++.dg/debug/template2.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/debug/template2.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/debug/template2.C	2013-07-09 12:52:01.982983000 -0500
+@@ -0,0 +1,14 @@
++// PR c++/57545
++
++template<typename T, long unsigned int N>
++struct array {
++    T data[N];
++};
++
++template<typename T>
++struct derived {
++    typedef long unsigned int size_type;
++    static const size_type n = 42;
++
++    array<int, n> a;
++};
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/expr/const1.C gcc-4.8.1/gcc/testsuite/g++.dg/expr/const1.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/expr/const1.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/expr/const1.C	2013-07-09 12:51:47.995955000 -0500
+@@ -0,0 +1,9 @@
++// PR c++/57551
++
++extern unsigned long ADDR;   
++
++unsigned long f(){
++  const unsigned long* const var=&ADDR;
++  const unsigned long retval=var[1];
++  return retval;
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/ext/pr57362.C gcc-4.8.1/gcc/testsuite/g++.dg/ext/pr57362.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/ext/pr57362.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/ext/pr57362.C	2013-07-31 15:11:51.667843000 -0500
+@@ -0,0 +1,199 @@
++/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
++/* { dg-require-ifunc "" }  */
++
++__attribute__((target("default")))
++int foo(void) { return 1; }
++__attribute__((target("128bit-long-double")))
++int foo(void) { return 1; }
++__attribute__((target("80387")))
++int foo(void) { return 1; }
++__attribute__((target("96bit-long-double")))
++int foo(void) { return 1; }
++__attribute__((target("long-double-80")))
++int foo(void) { return 1; }
++__attribute__((target("long-double-64")))
++int foo(void) { return 1; }
++__attribute__((target("accumulate-outgoing-args")))
++int foo(void) { return 1; }
++__attribute__((target("align-double")))
++int foo(void) { return 1; }
++__attribute__((target("align-stringops")))
++int foo(void) { return 1; }
++__attribute__((target("fancy-math-387")))
++int foo(void) { return 1; }
++__attribute__((target("force-drap")))
++int foo(void) { return 1; }
++__attribute__((target("fp-ret-in-387")))
++int foo(void) { return 1; }
++__attribute__((target("hard-float")))
++int foo(void) { return 1; }
++__attribute__((target("ieee-fp")))
++int foo(void) { return 1; }
++__attribute__((target("inline-all-stringops")))
++int foo(void) { return 1; }
++__attribute__((target("inline-stringops-dynamically")))
++int foo(void) { return 1; }
++__attribute__((target("intel-syntax")))
++int foo(void) { return 1; }
++__attribute__((target("ms-bitfields")))
++int foo(void) { return 1; }
++__attribute__((target("no-align-stringops")))
++int foo(void) { return 1; }
++__attribute__((target("no-fancy-math-387")))
++int foo(void) { return 1; }
++__attribute__((target("no-push-args")))
++int foo(void) { return 1; }
++__attribute__((target("no-red-zone")))
++int foo(void) { return 1; }
++__attribute__((target("omit-leaf-frame-pointer")))
++int foo(void) { return 1; }
++__attribute__((target("pc32")))
++int foo(void) { return 1; }
++__attribute__((target("pc64")))
++int foo(void) { return 1; }
++__attribute__((target("pc80")))
++int foo(void) { return 1; }
++__attribute__((target("push-args")))
++int foo(void) { return 1; }
++__attribute__((target("red-zone")))
++int foo(void) { return 1; }
++__attribute__((target("rtd")))
++int foo(void) { return 1; }
++__attribute__((target("soft-float")))
++int foo(void) { return 1; }
++__attribute__((target("sseregparm")))
++int foo(void) { return 1; }
++__attribute__((target("stackrealign")))
++int foo(void) { return 1; }
++__attribute__((target("stack-arg-probe")))
++int foo(void) { return 1; }
++__attribute__((target("tls-direct-seg-refs")))
++int foo(void) { return 1; }
++__attribute__((target("vect8-ret-in-mem")))
++int foo(void) { return 1; }
++__attribute__((target("recip")))
++int foo(void) { return 1; }
++__attribute__((target("cld")))
++int foo(void) { return 1; }
++__attribute__((target("vzeroupper")))
++int foo(void) { return 1; }
++__attribute__((target("dispatch-scheduler")))
++int foo(void) { return 1; }
++__attribute__((target("prefer-avx128")))
++int foo(void) { return 1; }
++__attribute__((target("32")))
++int foo(void) { return 1; }
++__attribute__((target("64")))
++int foo(void) { return 1; }
++__attribute__((target("x32")))
++int foo(void) { return 1; }
++__attribute__((target("mmx")))
++int foo(void) { return 1; }
++__attribute__((target("3dnow")))
++int foo(void) { return 1; }
++__attribute__((target("3dnowa")))
++int foo(void) { return 1; }
++__attribute__((target("sse")))
++int foo(void) { return 1; }
++__attribute__((target("sse2")))
++int foo(void) { return 1; }
++__attribute__((target("sse3")))
++int foo(void) { return 1; }
++__attribute__((target("ssse3")))
++int foo(void) { return 1; }
++__attribute__((target("sse4.1")))
++int foo(void) { return 1; }
++__attribute__((target("sse4.2")))
++int foo(void) { return 1; }
++__attribute__((target("sse4")))
++int foo(void) { return 1; }
++__attribute__((target("no-sse4")))
++int foo(void) { return 1; }
++__attribute__((target("sse5")))
++int foo(void) { return 1; }
++__attribute__((target("avx")))
++int foo(void) { return 1; }
++__attribute__((target("avx2")))
++int foo(void) { return 1; }
++__attribute__((target("fma")))
++int foo(void) { return 1; }
++__attribute__((target("sse4a")))
++int foo(void) { return 1; }
++__attribute__((target("fma4")))
++int foo(void) { return 1; }
++__attribute__((target("xop")))
++int foo(void) { return 1; }
++__attribute__((target("lwp")))
++int foo(void) { return 1; }
++__attribute__((target("abm")))
++int foo(void) { return 1; }
++__attribute__((target("popcnt")))
++int foo(void) { return 1; }
++__attribute__((target("bmi")))
++int foo(void) { return 1; }
++__attribute__((target("bmi2")))
++int foo(void) { return 1; }
++__attribute__((target("lzcnt")))
++int foo(void) { return 1; }
++__attribute__((target("hle")))
++int foo(void) { return 1; }
++__attribute__((target("rdseed")))
++int foo(void) { return 1; }
++__attribute__((target("prfchw")))
++int foo(void) { return 1; }
++__attribute__((target("adx")))
++int foo(void) { return 1; }
++__attribute__((target("fxsr")))
++int foo(void) { return 1; }
++__attribute__((target("xsave")))
++int foo(void) { return 1; }
++__attribute__((target("xsaveopt")))
++int foo(void) { return 1; }
++__attribute__((target("tbm")))
++int foo(void) { return 1; }
++__attribute__((target("cx16")))
++int foo(void) { return 1; }
++__attribute__((target("sahf")))
++int foo(void) { return 1; }
++__attribute__((target("movbe")))
++int foo(void) { return 1; }
++__attribute__((target("crc32")))
++int foo(void) { return 1; }
++__attribute__((target("aes")))
++int foo(void) { return 1; }
++__attribute__((target("pclmul")))
++int foo(void) { return 1; }
++__attribute__((target("sse2avx")))
++int foo(void) { return 1; }
++__attribute__((target("fsgsbase")))
++int foo(void) { return 1; }
++__attribute__((target("rdrnd")))
++int foo(void) { return 1; }
++__attribute__((target("f16c")))
++int foo(void) { return 1; }
++__attribute__((target("fentry")))
++int foo(void) { return 1; }
++__attribute__((target("8bit-idiv")))
++int foo(void) { return 1; }
++__attribute__((target("avx256-split-unaligned-load")))
++int foo(void) { return 1; }
++__attribute__((target("avx256-split-unaligned-store")))
++int foo(void) { return 1; }
++__attribute__((target("rtm")))
++int foo(void) { return 1; }
++//---------------
++
++#include <stdio.h>
++    int main (void)
++    {
++      int result;
++      result = foo();
++      printf("Result is %d\n", result);
++      return result;
++    }
++
++/* { dg-prune-output "attribute.* is unknown" } */
++/* { dg-prune-output "redefinition of int foo" } */
++/* { dg-prune-output "previous declaration of int foo" } */
++/* { dg-prune-output "int foo.* previously defined here" } */
++/* { dg-prune-output "No dispatcher found for" } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/opt/pr58006.C gcc-4.8.1/gcc/testsuite/g++.dg/opt/pr58006.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/opt/pr58006.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/opt/pr58006.C	2013-08-18 10:24:12.566692000 -0500
+@@ -0,0 +1,22 @@
++// PR tree-optimization/58006
++// { dg-do compile }
++// { dg-require-effective-target pthread }
++// { dg-options "-Ofast -ftree-parallelize-loops=2" }
++
++extern "C" float sqrtf (float);
++
++struct S
++{
++  float i, j;
++  float foo () const { return sqrtf (i * i + j * j); }
++  S () : i (1), j (1) {}
++};
++
++void
++bar (int a, int b)
++{
++  int i;
++  float f;
++  for (i = a; i < b; i++)
++    f = S ().foo ();
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/opt/pr58165.C gcc-4.8.1/gcc/testsuite/g++.dg/opt/pr58165.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/opt/pr58165.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/opt/pr58165.C	2013-08-16 04:04:52.452768000 -0500
+@@ -0,0 +1,14 @@
++// PR tree-optimization/58165
++// { dg-do compile }
++// { dg-options "-O2" }
++
++extern "C" float sqrtf (float);
++
++struct A { A (); ~A (); };
++
++void
++foo (double d)
++{
++  A a;
++  sqrtf (d);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/parse/ref-qual2.C gcc-4.8.1/gcc/testsuite/g++.dg/parse/ref-qual2.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/parse/ref-qual2.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/parse/ref-qual2.C	2013-07-09 12:52:17.034866000 -0500
+@@ -0,0 +1,6 @@
++// PR c++/57532
++
++int main()
++{
++    return (int() & int());
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/pr57878.C gcc-4.8.1/gcc/testsuite/g++.dg/pr57878.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/pr57878.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/pr57878.C	2013-08-20 06:56:29.733502000 -0500
+@@ -0,0 +1,226 @@
++/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
++/* { dg-options "-m32 -O2 -fno-omit-frame-pointer -fPIC -std=gnu++11" } */
++
++typedef int int32;
++typedef long long int64;
++typedef unsigned int uint32;
++typedef unsigned long long uint64;
++namespace std {
++  typedef __SIZE_TYPE__ size_t;
++  template<class _CharT>
++  struct char_traits;
++  template<typename _Tp>
++  inline _Tp* __addressof(_Tp& __r) noexcept {
++    return reinterpret_cast<_Tp*> (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
++  }
++  template<typename _Tp>
++  struct remove_reference {
++    typedef _Tp type;
++  };
++  template<typename _Tp>
++  constexpr _Tp&& forward(typename std::remove_reference<_Tp>::type& __t) noexcept {
++    return static_cast<_Tp&&>(__t);
++  }
++}
++typedef __SIZE_TYPE__ size_t;
++extern "C++" {
++  inline void* operator new(std::size_t, void* __p) noexcept {
++    return __p;
++  }
++}
++namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
++  template<typename _Tp>
++    class new_allocator {
++  public:
++    typedef size_t size_type;
++    typedef _Tp* pointer;
++  };
++}
++namespace std {
++  template<typename _Tp>
++  using __allocator_base = __gnu_cxx::new_allocator<_Tp>;
++  template<typename _Tp>
++  class allocator
++    : public __allocator_base<_Tp> {
++  public:
++    typedef size_t size_type;
++    template<typename _Tp1>
++    struct rebind {
++      typedef allocator<_Tp1> other;
++    };
++  };
++}
++namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
++  template<typename _CharT, typename _Traits, typename _Alloc>
++    class __sso_string_base;
++  template<typename _CharT, typename _Traits = std::char_traits<_CharT>, typename _Alloc = std::allocator<_CharT>, template <typename, typename, typename> class _Base = __sso_string_base>
++    class __versa_string;
++  template<typename _CharT, typename _Traits, typename _Alloc>
++    struct __vstring_utility {
++    typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
++    template<typename _Alloc1>
++    struct _Alloc_hider
++      : public _Alloc1 {
++      _Alloc_hider(const _Alloc1& __a, _CharT* __ptr)
++  : _Alloc1(__a), _M_p(__ptr) {
++      }
++      _CharT* _M_p;
++    };
++  };
++  template<typename _CharT, typename _Traits, typename _Alloc>
++    class __sso_string_base
++      : protected __vstring_utility<_CharT, _Traits, _Alloc> {
++    typedef __vstring_utility<_CharT, _Traits, _Alloc> _Util_Base;
++    typedef typename _Util_Base::_CharT_alloc_type _CharT_alloc_type;
++    typedef typename _CharT_alloc_type::size_type size_type;
++  private:
++    typename _Util_Base::template _Alloc_hider<_CharT_alloc_type>
++    _M_dataplus;
++    size_type _M_string_length;
++    enum {
++      _S_local_capacity = 15 };
++    union {
++      _CharT _M_local_data[_S_local_capacity + 1];
++    };
++    template<typename _InIterator>
++    void _M_construct(_InIterator __beg, _InIterator __end);
++  public:
++    size_type _M_max_size() const;
++    _CharT* _M_data() const {
++      return _M_dataplus._M_p;
++    }
++    size_type _M_length() const {
++      return _M_string_length;
++    }
++    __sso_string_base(const __sso_string_base& __rcs);
++    const _CharT_alloc_type& _M_get_allocator() const {
++    }
++  };
++  template<typename _CharT, typename _Traits, typename _Alloc>
++    __sso_string_base<_CharT, _Traits, _Alloc>:: __sso_string_base(const __sso_string_base& __rcs)
++    : _M_dataplus(__rcs._M_get_allocator(), _M_local_data) {
++    _M_construct(__rcs._M_data(), __rcs._M_data() + __rcs._M_length());
++  }
++  template<typename _CharT, typename _Traits, typename _Alloc, template <typename, typename, typename> class _Base>
++    class __versa_string
++      : private _Base<_CharT, _Traits, _Alloc> {
++  };
++}
++template<typename _CharT, typename _Traits = std::char_traits<_CharT>, typename _Alloc = std::allocator<_CharT> >
++class basic_string
++  : public __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc> {
++};
++typedef basic_string<char> string;
++namespace std __attribute__ ((__visibility__ ("default"))) {
++  template<typename _Alloc, typename _Tp>
++    class __alloctr_rebind_helper {
++  public:
++    static const bool __value = true;
++  };
++  template<typename _Alloc, typename _Tp, bool = __alloctr_rebind_helper<_Alloc, _Tp>::__value>
++    struct __alloctr_rebind;
++  template<typename _Alloc, typename _Tp> struct __alloctr_rebind<_Alloc, _Tp, true>
++  {
++    typedef typename _Alloc::template rebind<_Tp>::other __type;
++  };
++  template<typename _Alloc>
++    struct allocator_traits {
++  private:
++    template<typename _Tp>
++    static typename _Tp::pointer _S_pointer_helper(_Tp*);
++    typedef decltype(_S_pointer_helper((_Alloc*)0)) __pointer;
++  public:
++    typedef __pointer pointer;
++    template<typename _Tp>
++    using rebind_alloc = typename __alloctr_rebind<_Alloc, _Tp>::__type;
++  };
++}
++namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
++  template<typename _Alloc> struct __alloc_traits
++    : std::allocator_traits<_Alloc>
++  {
++    typedef std::allocator_traits<_Alloc> _Base_type;
++    template<typename _Tp>
++    struct rebind {
++      typedef typename _Base_type::template rebind_alloc<_Tp>
++      other;
++    };
++  };
++}
++namespace std __attribute__ ((__visibility__ ("default"))) {
++  template<typename _T1, typename... _Args>
++    inline void _Construct(_T1* __p, _Args&&... __args) {
++    ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...);
++  }
++  template<typename _Tp, typename _Alloc>
++    struct _Vector_base {
++    typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type;
++    typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer pointer;
++    struct _Vector_impl
++      : public _Tp_alloc_type {
++      pointer _M_start;
++      pointer _M_finish;
++    };
++  public:
++    _Vector_impl _M_impl;
++  };
++  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
++    class vector
++      : protected _Vector_base<_Tp, _Alloc> {
++    typedef _Vector_base<_Tp, _Alloc> _Base;
++  public:
++    typedef _Tp value_type;
++    typedef typename _Base::pointer pointer;
++    typedef size_t size_type;
++    size_type size() const;
++    void push_back(const value_type& __x) {
++      _M_emplace_back_aux(__x);
++    }
++    template<typename... _Args>
++    void _M_emplace_back_aux(_Args&&... __args);
++    size_type _M_check_len();
++  };
++  template<typename _Tp, typename _Alloc> template<typename... _Args>
++    void vector<_Tp, _Alloc>:: _M_emplace_back_aux(_Args&&... __args) {
++    const size_type __len = _M_check_len();
++    pointer __new_start(static_cast<pointer>(::operator new(__len * sizeof(_Tp))));
++    pointer __new_temp(__new_start + size());
++    ::new((void *)__new_temp) _Tp(std::forward<_Args>(__args)...);
++    pointer __cur = __new_start;
++    pointer __first = this->_M_impl._M_start;
++    pointer __last = this->_M_impl._M_finish;
++    for (;
++	 __first != __last;
++	 ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first);
++  }
++}
++using std::vector;
++class DL {
++public:
++  struct ChunkId {
++    int64 disk_id;
++    uint64 handle;
++    uint64 version;
++    string capability;
++    ChunkId();
++  };
++  struct ChunkInfo {
++    ChunkId id;
++    uint64 mtime;
++    uint32 length;
++    int32 space_used;
++  };
++};
++class FDB {
++  void CollectChunk(const DL::ChunkInfo& chunk, const int& location);
++private:
++  struct ChunkData {
++    int location;
++    DL::ChunkInfo chunk_info;
++  };
++  vector<ChunkData> chunk_data_;
++};
++void FDB::CollectChunk(const DL::ChunkInfo& chunk, const int& location) {
++  ChunkData chunk_data;
++  chunk_data_.push_back( chunk_data);
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/abstract1.C gcc-4.8.1/gcc/testsuite/g++.dg/template/abstract1.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/abstract1.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/template/abstract1.C	2013-07-30 08:30:12.307006000 -0500
+@@ -0,0 +1,12 @@
++// PR c++/58022
++
++template <class T> struct A { };
++template <class T> A<T> & operator<< (A<T>&, T);
++template <class T> class foo;
++template <class T> A<char> & operator<<(A<char>& o, const foo<T>& l);
++template <class T> class foo  {
++    friend A<char>& operator<< <T> (A<char>& o, const foo<T>& l);
++};
++class bar;
++foo<bar> fb;
++class bar { virtual void baz()=0; };
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/access27.C gcc-4.8.1/gcc/testsuite/g++.dg/template/access27.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/access27.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/template/access27.C	2013-07-08 22:26:58.213071000 -0500
+@@ -0,0 +1,17 @@
++// PR c++/57550
++
++template <bool (double)> bool Wrapper(double);
++template <class T> void MakeHandler(bool (T));
++
++class Handler
++{
++public:
++  template <typename T> static void SetPrimitiveHandlers()
++  {
++    MakeHandler(Wrapper<Append<T> >);
++  }
++private :
++  template <typename T> static bool Append(T);
++};
++
++template void Handler::SetPrimitiveHandlers<double>();
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/arg9.C gcc-4.8.1/gcc/testsuite/g++.dg/template/arg9.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/arg9.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/template/arg9.C	2013-07-03 15:22:16.527771000 -0500
+@@ -0,0 +1,8 @@
++// PR c++/57771
++// { dg-do compile }
++
++template <int N>
++struct S {};
++
++S <static_cast <int> (4>>2)> s1;
++S <reinterpret_cast <int> (4>>2)> s2;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/delete2.C gcc-4.8.1/gcc/testsuite/g++.dg/template/delete2.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/delete2.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/template/delete2.C	2013-08-20 07:59:37.559809000 -0500
+@@ -0,0 +1,26 @@
++// PR c++/58119
++
++template <class T>
++struct A
++{
++  operator T*();
++  template <class U>
++  operator A<U>();
++};
++
++template <class T>
++struct B
++{
++  operator T*();
++  template <class U>
++  operator A<U>*();
++};
++
++int main()
++{
++  A<int> a;
++  delete a;
++
++  B<int> b;
++  delete b;			// { dg-error "template|delete" }
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/using23.C gcc-4.8.1/gcc/testsuite/g++.dg/template/using23.C
+--- gcc-4.8.1.orig/gcc/testsuite/g++.dg/template/using23.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/g++.dg/template/using23.C	2013-07-09 12:51:35.112170000 -0500
+@@ -0,0 +1,15 @@
++// PR c++/57831
++
++struct A {
++  void f();
++};
++template <class T> struct B : T {
++  typedef T base;
++  using base::f;         // If I write "using B<T>::f" it's ok
++  void g( ) {
++    B<T>::f();           // This is OK as expected
++    (this->*&T::f)();    // This is also OK
++    (this->*&B<T>::f)(); // This causes error
++  }
++};
++template struct B< A >;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/defined_assignment_6.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/defined_assignment_6.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/defined_assignment_6.f90	2013-06-04 02:11:12.753416000 -0500
+@@ -0,0 +1,36 @@
++! { dg-do compile }
++!
++! PR fortran/57364
++!
++! Contributed by Damian Rouson
++!
++module ref_counter_implementation
++  type ref_counter
++  contains
++    procedure :: assign
++    generic :: assignment(=) => assign
++  end type
++contains
++  subroutine assign (lhs, rhs)
++    class (ref_counter), intent(inout) :: lhs
++    class (ref_counter), intent(in) :: rhs
++  end subroutine
++end module
++module foo_parent_implementation
++  use ref_counter_implementation ,only: ref_counter
++  type :: foo_parent
++    type(ref_counter) :: counter
++  end type
++contains
++  type(foo_parent) function new_foo_parent()
++  end function
++end module
++module foo_implementation
++  use foo_parent_implementation ,only: foo_parent,new_foo_parent
++  type, extends(foo_parent) :: foo
++  end type
++contains
++  type(foo) function new_foo()
++    new_foo%foo_parent = new_foo_parent()
++ end function
++end module
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/defined_assignment_7.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/defined_assignment_7.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/defined_assignment_7.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/defined_assignment_7.f90	2013-06-11 11:18:13.173979000 -0500
+@@ -0,0 +1,29 @@
++! { dg-compile }
++!
++! PR fortran/57508
++!
++module ForTrilinos_ref_counter
++  type ref_counter
++  contains
++      procedure :: assign
++      generic   :: assignment(=) => assign
++  end type
++contains
++  subroutine assign (lhs, rhs)
++    class (ref_counter), intent(inout) :: lhs
++    class (ref_counter), intent(in) :: rhs
++  end subroutine
++end module
++module FEpetra_BlockMap
++  use ForTrilinos_ref_counter, only : ref_counter
++  type :: Epetra_BlockMap 
++    type(ref_counter) :: counter
++  end type
++contains
++  function from_struct() result(new_Epetra_BlockMap)
++    type(Epetra_BlockMap) :: new_Epetra_BlockMap
++  end function
++  type(Epetra_BlockMap) function create_arbitrary()
++    create_arbitrary = from_struct()
++  end function
++end module
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/dot_product_2.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/dot_product_2.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/dot_product_2.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/dot_product_2.f90	2013-07-08 14:10:32.194953000 -0500
+@@ -0,0 +1,38 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! PR fortran/57785
++!
++! Contributed by Kontantinos Anagnostopoulos
++!
++! The implicit complex conjugate was missing for DOT_PRODUCT
++
++
++! For the following, the compile-time simplification fails for SUM;
++! see PR fortran/56342. Hence, a manually expanded SUM is used.
++
++!if (DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0), (1.0, 4.0) /))   &
++!   /= SUM (CONJG ((/ (1.0, 2.0), (2.0, 3.0) /))*(/ (1.0, 1.0), (1.0, 4.0) /))) &
++!   call abort ()
++!
++!if (ANY (MATMUL ((/ (1.0, 2.0), (2.0, 3.0) /),                                 &
++!                 RESHAPE ((/ (1.0, 1.0), (1.0, 4.0) /),(/2, 1/))) /=           &
++!         SUM ((/ (1.0, 2.0), (2.0, 3.0) /)*(/ (1.0, 1.0), (1.0, 4.0) /))))     &
++!    call abort ()      
++
++
++if (DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0), (1.0, 4.0) /))  &
++    /= CONJG (cmplx(1.0, 2.0)) * cmplx(1.0, 1.0)                              &
++     + CONJG (cmplx(2.0, 3.0)) * cmplx(1.0, 4.0)) &
++  call abort ()
++
++if (ANY (MATMUL ((/ (1.0, 2.0), (2.0, 3.0) /),                                &
++                 RESHAPE ((/ (1.0, 1.0), (1.0, 4.0) /),(/2, 1/)))             &
++         /= cmplx(1.0, 2.0) * cmplx(1.0, 1.0)                                 &
++          + cmplx(2.0, 3.0) * cmplx(1.0, 4.0)))                               &
++  call abort ()      
++end
++
++
++! { dg-final { scan-tree-dump-not "abort" "original" } }
++! { dg-final { cleanup-tree-dump "original" } }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/inline_sum_5.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/inline_sum_5.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/inline_sum_5.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/inline_sum_5.f90	2013-08-24 07:46:17.832897000 -0500
+@@ -0,0 +1,33 @@
++! { dg-do run }
++!
++! PR fortran/57798
++! The call to sum used to be inlined into a loop with an uninitialized bound
++!
++! Original testcase by Stephan Kramer <stephan.kramer@imperial.ac.uk>
++
++program test
++  implicit none
++
++  call sub(2, 11)
++
++  contains
++
++    function func(m, n)
++      integer, intent(in):: m,n
++      real, dimension(m, n):: func
++
++      func = 1.0
++
++    end function func
++
++    subroutine sub(m, n)
++      integer, intent(in):: m, n
++      real, dimension(m,n):: y
++
++      y = 1.0
++      if (any(sum(y*func(m,n), dim=1) /= m)) call abort
++
++    end subroutine sub
++
++end program test
++
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/select_type_34.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/select_type_34.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/select_type_34.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/select_type_34.f90	2013-08-24 04:12:21.843607000 -0500
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++!
++! PR 58185: [4.8/4.9 Regression] [OOP] ICE when selector in SELECT TYPE is non-polymorphic
++!
++! Contributed by John <jwmwalrus@gmail.com>
++
++  integer :: array
++  select type (a => array)   ! { dg-error "Selector shall be polymorphic" }
++  end select
++end
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90	2013-08-11 06:31:41.480740000 -0500
+@@ -0,0 +1,20 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! PR 58058: [4.7/4.8/4.9 Regression] Memory leak with transfer function
++!
++! Contributed by Thomas Jourdan <thomas.jourdan@orange.fr>
++
++  implicit none
++
++  integer, dimension(3) :: t1
++  character(len=64) :: str
++  
++  t1 = (/1,2,3/)
++
++  str = transfer(t1,str)
++
++end
++
++! { dg-final { scan-tree-dump-times "__builtin_free" 1 "original" } }
++! { dg-final { cleanup-tree-dump "original" } }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/typebound_override_4.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/typebound_override_4.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/typebound_override_4.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/typebound_override_4.f90	2013-05-31 13:10:03.669091000 -0500
+@@ -0,0 +1,34 @@
++! { dg-do compile }
++!
++! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
++!
++! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
++
++module base_mod
++  implicit none
++  type base_type
++  contains
++    procedure, pass(map)  :: clone    => base_clone
++  end type
++contains
++  subroutine  base_clone(map,mapout)
++    class(base_type) :: map
++    class(base_type) :: mapout
++  end subroutine
++end module
++
++module r_mod
++  use base_mod
++  implicit none
++  type, extends(base_type) :: r_type
++  contains
++    procedure, pass(map)  :: clone    => r_clone   ! { dg-error "Type/rank mismatch in argument" }
++  end type
++contains
++  subroutine  r_clone(map,mapout)
++    class(r_type) :: map
++    class(r_type) :: mapout
++  end subroutine
++end module
++
++! { dg-final { cleanup-modules "base_mod r_mod" } }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/use_29.f90 gcc-4.8.1/gcc/testsuite/gfortran.dg/use_29.f90
+--- gcc-4.8.1.orig/gcc/testsuite/gfortran.dg/use_29.f90	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gfortran.dg/use_29.f90	2013-07-28 09:13:17.566941000 -0500
+@@ -0,0 +1,15 @@
++! { dg-do compile }
++!
++! PR fortran/57435
++!
++! Contributed by Lorenz HÃŒdepohl
++!
++module precision
++end module precision
++  contains
++  use precision     ! { dg-error "Unexpected USE statement in CONTAINS section" }
++module stressten_rt ! { dg-error "Unexpected MODULE statement in CONTAINS section" }
++  use precision     ! { dg-error "Unexpected USE statement in CONTAINS section" }
++  implicit none     ! { dg-error "Unexpected IMPLICIT NONE statement in CONTAINS section" }
++
++! { dg-error "Unexpected end of file" "" { target "*-*-*" } 0 }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16.adb gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16.adb
+--- gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16.adb	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16.adb	2013-08-13 10:59:03.399464000 -0500
+@@ -0,0 +1,24 @@
++-- { dg-do run }
++
++with Loop_Optimization16_Pkg; use Loop_Optimization16_Pkg;
++
++procedure Loop_Optimization16 is
++
++   Counter : Natural := 0;
++
++   C : constant Natural := F;
++
++   subtype Index_T is Index_Base range 1 .. Index_Base (C);
++
++begin
++
++   for I in Index_T'First .. Index_T'Last loop
++      Counter := Counter + 1;
++      exit when Counter > 200;
++   end loop;
++
++   if Counter > 200 then
++      raise Program_Error;
++   end if;
++
++end Loop_Optimization16;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb
+--- gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb	2013-08-13 10:59:03.399464000 -0500
+@@ -0,0 +1,8 @@
++package body Loop_Optimization16_Pkg is
++
++  function F return Natural is
++  begin
++    return Natural (Index_Base'Last);
++  end;
++
++end Loop_Optimization16_Pkg;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads
+--- gcc-4.8.1.orig/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads	2013-08-13 10:59:03.399464000 -0500
+@@ -0,0 +1,7 @@
++package Loop_Optimization16_Pkg is
++
++  type Index_Base is range 0 .. 127;
++
++  function F return Natural;
++
++end Loop_Optimization16_Pkg;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/go.test/test/64bit.go gcc-4.8.1/gcc/testsuite/go.test/test/64bit.go
+--- gcc-4.8.1.orig/gcc/testsuite/go.test/test/64bit.go	2012-09-29 13:16:01.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/go.test/test/64bit.go	2013-06-26 17:42:47.881515000 -0500
+@@ -594,6 +594,19 @@
+ 	"}\n" +
+ 	"\n"
+ 
++const binaryConstR0 = "func test%vBinaryR%v(a, add, sub, mul, div, mod, and, or, xor, andnot %v, dodiv bool) {\n" +
++	"	const b %v = %v;\n" +
++	"	const typ = `%s`;\n" +
++	"	if n, op, want := a + b, `+`, add; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a - b, `-`, sub; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a * b, `*`, mul; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a & b, `&`, and; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a | b, `|`, or; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a ^ b, `^`, xor; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"	if n, op, want := a &^ b, `&^`, andnot; n != want { ok=false; println(typ, `var`, a, op, `const`, b, `=`, n, `should be`, want); }\n" +
++	"}\n" +
++	"\n"
++
+ const shiftConstL = "func test%vShiftL%v(b uint64, left, right %v) {\n" +
+ 	"	const a %v = %v;\n" +
+ 	"	const typ = `%s`;\n" +
+@@ -621,12 +634,20 @@
+ func constTests() {
+ 	for i, a := range int64Values {
+ 		fmt.Fprintf(bout, binaryConstL, "Int64", i, "int64", "int64", a, "int64")
+-		fmt.Fprintf(bout, binaryConstR, "Int64", i, "int64", "int64", a, "int64")
++		if a.hi == 0 && a.lo == 0 {
++			fmt.Fprintf(bout, binaryConstR0, "Int64", i, "int64", "int64", a, "int64")
++		} else {
++			fmt.Fprintf(bout, binaryConstR, "Int64", i, "int64", "int64", a, "int64")
++		}
+ 		fmt.Fprintf(bout, shiftConstL, "Int64", i, "int64", "int64", a, "int64")
+ 	}
+ 	for i, a := range uint64Values {
+ 		fmt.Fprintf(bout, binaryConstL, "Uint64", i, "uint64", "uint64", a, "uint64")
+-		fmt.Fprintf(bout, binaryConstR, "Uint64", i, "uint64", "uint64", a, "uint64")
++		if a.hi == 0 && a.lo == 0 {
++			fmt.Fprintf(bout, binaryConstR0, "Uint64", i, "uint64", "uint64", a, "uint64")
++		} else {
++			fmt.Fprintf(bout, binaryConstR, "Uint64", i, "uint64", "uint64", a, "uint64")
++		}
+ 		fmt.Fprintf(bout, shiftConstL, "Uint64", i, "uint64", "uint64", a, "uint64")
+ 	}
+ 	for i, a := range shiftValues {
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/go.test/test/fixedbugs/bug086.go gcc-4.8.1/gcc/testsuite/go.test/test/fixedbugs/bug086.go
+--- gcc-4.8.1.orig/gcc/testsuite/go.test/test/fixedbugs/bug086.go	2012-09-29 13:16:01.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/go.test/test/fixedbugs/bug086.go	2013-08-07 14:00:55.550656000 -0500
+@@ -6,12 +6,12 @@
+ 
+ package main
+ 
+-func f() int {	// ERROR "return|control"
++func f() int {
+ 	if false {
+ 		return 0;
+ 	}
+ 	// we should not be able to return successfully w/o a return statement
+-}
++} // ERROR "return"
+ 
+ func main() {
+ 	print(f(), "\n");
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/go.test/test/fixedbugs/bug410.go gcc-4.8.1/gcc/testsuite/go.test/test/fixedbugs/bug410.go
+--- gcc-4.8.1.orig/gcc/testsuite/go.test/test/fixedbugs/bug410.go	2012-09-29 13:16:01.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/go.test/test/fixedbugs/bug410.go	2013-06-26 17:42:47.881515000 -0500
+@@ -18,7 +18,7 @@
+     for s := range arr {
+         x := make([]byte, 10)
+         for i := 0; i < 100 ; i++ {
+-            x[i] ^= k[i-arr[s].num%0]
++            x[i] ^= k[i-arr[s].num%3]
+         }
+     }
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/go.test/test/shift1.go gcc-4.8.1/gcc/testsuite/go.test/test/shift1.go
+--- gcc-4.8.1.orig/gcc/testsuite/go.test/test/shift1.go	2012-09-29 13:16:01.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/go.test/test/shift1.go	2013-06-25 11:53:38.994410000 -0500
+@@ -23,7 +23,7 @@
+ 
+ // non-constant shift expressions
+ var (
+-	e1       = g(2.0 << s) // ERROR "invalid" "as type interface"
++	e1       = g(2.0 << s) // ERROR "invalid|shift of non-integer operand" "as type interface"
+ 	f1       = h(2 << s)   // ERROR "invalid" "as type float64"
+ 	g1 int64 = 1.1 << s    // ERROR "truncated"
+ )
+@@ -36,3 +36,206 @@
+ 	b2     = 1.0 << c    // ERROR "overflow"
+ 	d2     = f(1.0 << c) // ERROR "overflow"
+ )
++
++var (
++	// issues 4882, 4936.
++	a3 = 1.0<<s + 0 // ERROR "invalid|shift of non-integer operand"
++	// issue 4937
++	b3 = 1<<s + 1 + 1.0 // ERROR "invalid|shift of non-integer operand"
++	// issue 5014
++	c3     = complex(1<<s, 0) // ERROR "invalid|shift of type float64"
++	d3 int = complex(1<<s, 3) // ERROR "non-integer|cannot use.*as type int" "shift of type float64"
++	e3     = real(1 << s)     // ERROR "invalid"
++	f3     = imag(1 << s)     // ERROR "invalid"
++)
++
++// from the spec
++func _() {
++	var (
++		s uint  = 33
++		i       = 1 << s         // 1 has type int
++		j int32 = 1 << s         // 1 has type int32; j == 0
++		k       = uint64(1 << s) // 1 has type uint64; k == 1<<33
++		m int   = 1.0 << s       // 1.0 has type int
++		n       = 1.0<<s != i    // 1.0 has type int; n == false if ints are 32bits in size
++		o       = 1<<s == 2<<s   // 1 and 2 have type int; o == true if ints are 32bits in size
++		// next test only fails on 32bit systems
++		// p = 1<<s == 1<<33  // illegal if ints are 32bits in size: 1 has type int, but 1<<33 overflows int
++		u          = 1.0 << s    // ERROR "non-integer|float64"
++		u1         = 1.0<<s != 0 // ERROR "non-integer|float64"
++		u2         = 1<<s != 1.0 // ERROR "non-integer|float64"
++		v  float32 = 1 << s      // ERROR "non-integer|float32"
++		w  int64   = 1.0 << 33   // 1.0<<33 is a constant shift expression
++		_, _, _, _, _, _, _, _, _, _ = j, k, m, n, o, u, u1, u2, v, w
++	)
++}
++
++// shifts in comparisons w/ untyped operands
++var (
++	_ = 1<<s == 1
++	_ = 1<<s == 1.  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s == 1  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s == 1. // ERROR "invalid|non-integer|shift of type float64"
++
++	_ = 1<<s+1 == 1
++	_ = 1<<s+1 == 1.   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1. == 1   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1. == 1.  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1 == 1   // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1 == 1.  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1. == 1  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1. == 1. // ERROR "invalid|non-integer|shift of type float64"
++
++	_ = 1<<s == 1<<s
++	_ = 1<<s == 1.<<s  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s == 1<<s  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s == 1.<<s // ERROR "invalid|non-integer|shift of type float64"
++
++	_ = 1<<s+1<<s == 1
++	_ = 1<<s+1<<s == 1.   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1.  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1<<s == 1   // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1<<s == 1.  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1.<<s == 1  // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1.<<s == 1. // ERROR "invalid|non-integer|shift of type float64"
++
++	_ = 1<<s+1<<s == 1<<s+1<<s
++	_ = 1<<s+1<<s == 1<<s+1.<<s    // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1<<s == 1.<<s+1<<s    // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1<<s == 1.<<s+1.<<s   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1<<s+1<<s    // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1<<s+1.<<s   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1.<<s+1<<s   // ERROR "invalid|shift of type float64"
++	_ = 1<<s+1.<<s == 1.<<s+1.<<s  // ERROR "invalid|non-integer|shift of type float64"
++	_ = 1.<<s+1<<s == 1<<s+1<<s    // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1<<s == 1<<s+1.<<s   // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1<<s == 1.<<s+1<<s   // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1<<s == 1.<<s+1.<<s  // ERROR "invalid|non-integer|shift of type float64"
++	_ = 1.<<s+1.<<s == 1<<s+1<<s   // ERROR "invalid|shift of type float64"
++	_ = 1.<<s+1.<<s == 1<<s+1.<<s  // ERROR "invalid|non-integer|shift of type float64"
++	_ = 1.<<s+1.<<s == 1.<<s+1<<s  // ERROR "invalid|non-integer|shift of type float64"
++	_ = 1.<<s+1.<<s == 1.<<s+1.<<s // ERROR "invalid|non-integer|shift of type float64"
++)
++
++// shifts in comparisons w/ typed operands
++var (
++	x int
++	_ = 1<<s == x
++	_ = 1.<<s == x
++	_ = 1.1<<s == x // ERROR "truncated"
++
++	_ = 1<<s+x == 1
++	_ = 1<<s+x == 1.
++	_ = 1<<s+x == 1.1 // ERROR "truncated"
++	_ = 1.<<s+x == 1
++	_ = 1.<<s+x == 1.
++	_ = 1.<<s+x == 1.1  // ERROR "truncated"
++	_ = 1.1<<s+x == 1   // ERROR "truncated"
++	_ = 1.1<<s+x == 1.  // ERROR "truncated"
++	_ = 1.1<<s+x == 1.1 // ERROR "truncated"
++
++	_ = 1<<s == x<<s
++	_ = 1.<<s == x<<s
++	_ = 1.1<<s == x<<s // ERROR "truncated"
++)
++
++// shifts as operands in non-arithmetic operations and as arguments
++func _() {
++	var s uint
++	var a []int
++	_ = a[1<<s]
++	_ = a[1.]
++	// For now, the spec disallows these. We may revisit past Go 1.1.
++	_ = a[1.<<s]  // ERROR "integer|shift of type float64"
++	_ = a[1.1<<s] // ERROR "integer|shift of type float64"
++
++	_ = make([]int, 1)
++	_ = make([]int, 1.)
++	_ = make([]int, 1.<<s)
++	_ = make([]int, 1.1<<s) // ERROR "non-integer|truncated"
++
++	_ = float32(1)
++	_ = float32(1 << s) // ERROR "non-integer|shift of type float32"
++	_ = float32(1.)
++	_ = float32(1. << s)  // ERROR "non-integer|shift of type float32"
++	_ = float32(1.1 << s) // ERROR "non-integer|shift of type float32"
++
++	_ = append(a, 1<<s)
++	_ = append(a, 1.<<s)
++	_ = append(a, 1.1<<s) // ERROR "truncated"
++
++	var b []float32
++	_ = append(b, 1<<s)   // ERROR "non-integer|type float32"
++	_ = append(b, 1.<<s)  // ERROR "non-integer|type float32"
++	_ = append(b, 1.1<<s) // ERROR "non-integer|type float32"
++
++	_ = complex(1.<<s, 0)  // ERROR "non-integer|shift of type float64"
++	_ = complex(1.1<<s, 0) // ERROR "non-integer|shift of type float64"
++	_ = complex(0, 1.<<s)  // ERROR "non-integer|shift of type float64"
++	_ = complex(0, 1.1<<s) // ERROR "non-integer|shift of type float64"
++
++	var a4 float64
++	var b4 int
++	_ = complex(1<<s, a4) // ERROR "non-integer|shift of type float64"
++	_ = complex(1<<s, b4) // ERROR "invalid|non-integer|"
++
++	var m1 map[int]string
++	delete(m1, 1<<s)
++	delete(m1, 1.<<s)
++	delete(m1, 1.1<<s) // ERROR "truncated|shift of type float64"
++
++	var m2 map[float32]string
++	delete(m2, 1<<s)   // ERROR "invalid|cannot use 1 << s as type float32"
++	delete(m2, 1.<<s)  // ERROR "invalid|cannot use 1 << s as type float32"
++	delete(m2, 1.1<<s) // ERROR "invalid|cannot use 1.1 << s as type float32"
++}
++
++// shifts of shifts
++func _() {
++	var s uint
++	_ = 1 << (1 << s)
++	_ = 1 << (1. << s)
++	_ = 1 << (1.1 << s)   // ERROR "non-integer|truncated"
++	_ = 1. << (1 << s)    // ERROR "non-integer|shift of type float64"
++	_ = 1. << (1. << s)   // ERROR "non-integer|shift of type float64"
++	_ = 1.1 << (1.1 << s) // ERROR "invalid|non-integer|truncated"
++
++	_ = (1 << s) << (1 << s)
++	_ = (1 << s) << (1. << s)
++	_ = (1 << s) << (1.1 << s)   // ERROR "truncated"
++	_ = (1. << s) << (1 << s)    // ERROR "non-integer|shift of type float64"
++	_ = (1. << s) << (1. << s)   // ERROR "non-integer|shift of type float64"
++	_ = (1.1 << s) << (1.1 << s) // ERROR "invalid|non-integer|truncated"
++
++	var x int
++	x = 1 << (1 << s)
++	x = 1 << (1. << s)
++	x = 1 << (1.1 << s) // ERROR "truncated"
++	x = 1. << (1 << s)
++	x = 1. << (1. << s)
++	x = 1.1 << (1.1 << s) // ERROR "truncated"
++
++	x = (1 << s) << (1 << s)
++	x = (1 << s) << (1. << s)
++	x = (1 << s) << (1.1 << s) // ERROR "truncated"
++	x = (1. << s) << (1 << s)
++	x = (1. << s) << (1. << s)
++	x = (1.1 << s) << (1.1 << s) // ERROR "truncated"
++
++	var y float32
++	y = 1 << (1 << s)     // ERROR "non-integer|type float32"
++	y = 1 << (1. << s)    // ERROR "non-integer|type float32"
++	y = 1 << (1.1 << s)   // ERROR "invalid|truncated|float32"
++	y = 1. << (1 << s)    // ERROR "non-integer|type float32"
++	y = 1. << (1. << s)   // ERROR "non-integer|type float32"
++	y = 1.1 << (1.1 << s) // ERROR "invalid|truncated|float32"
++
++	var z complex128
++	z = (1 << s) << (1 << s)     // ERROR "non-integer|type complex128"
++	z = (1 << s) << (1. << s)    // ERROR "non-integer|type complex128"
++	z = (1 << s) << (1.1 << s)   // ERROR "invalid|truncated|complex128"
++	z = (1. << s) << (1 << s)    // ERROR "non-integer|type complex128"
++	z = (1. << s) << (1. << s)   // ERROR "non-integer|type complex128"
++	z = (1.1 << s) << (1.1 << s) // ERROR "invalid|truncated|complex128"
++}
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	2010-07-02 04:49:53.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -2,12 +2,15 @@
+ 
+ // { dg-do run { target *-*-darwin* } }
+ // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
+-// { dg-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4" }
++// { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" }
+ // This test has no equivalent or meaning for m64/ABI V2
+ // { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } }
+ 
+ #include <objc/objc-runtime.h>
+ #include <stdlib.h>
++#include <Foundation/NSObject.h>
++
++//extern "C" { int printf(const char *,...); }
+ #define CHECK_IF(expr) if(!(expr)) abort()
+ 
+ #ifndef CLS_HAS_CXX_STRUCTORS
+@@ -19,7 +22,7 @@
+   cxx_struct (void) { a = b = 55; }
+ };
+ 
+-@interface Foo {
++@interface Foo: NSObject {
+   int c;
+   cxx_struct s;
+ }
+@@ -42,9 +45,11 @@
+   Class cls;
+ 
+   cls = objc_getClass("Foo");
+-  CHECK_IF(cls->info & CLS_HAS_CXX_STRUCTORS);
++//  printf((const char *)"Foo info %lx\n",cls->info);
++  CHECK_IF((cls->info & CLS_HAS_CXX_STRUCTORS) != 0);
+   cls = objc_getClass("Bar");
+-  CHECK_IF(!(cls->info & CLS_HAS_CXX_STRUCTORS));
++//  printf((const char *)"Bar info %lx\n",cls->info);
++  CHECK_IF((cls->info & CLS_HAS_CXX_STRUCTORS) == 0);
+ 
+ #else
+   /* No test needed or available.  */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/method-12.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-12.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/method-12.mm	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/method-12.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -2,6 +2,7 @@
+ /* Author: Ziemowit Laski <zlaski@apple.com>  */
+ /* { dg-options "-Wstrict-selector-match" } */
+ /* { dg-do compile } */
++/* { dg-skip-if "Object interface removed" { *-*-darwin[1-2]* && { lp64 } } { "-fnext-runtime" } { "" } } */
+ 
+ #include <objc/Protocol.h>
+ 
+@@ -19,13 +20,13 @@
+   Class receiver;
+ 
+   [receiver port];  /* { dg-warning "multiple methods named .\\+port. found" } */
+-       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */
+-       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */
++       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 10 } */
++       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 15 } */
+ 
+   [receiver starboard];  /* { dg-warning "no .\\+starboard. method found" } */
+-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */
+-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 25 } */
+-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 25 } */
++       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 26 } */
++       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 26 } */
++       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 26 } */
+ 
+   [Class port];  /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm	2010-09-14 19:08:59.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -1,12 +1,19 @@
+ /* Check that typedefs of ObjC classes preserve 
+    any @protocol qualifiers.  */
+ /* { dg-do compile } */
++
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#define OBJECT Object
++#endif
+ 
+ @protocol CanDoStuff;
+ 
+-typedef Object<CanDoStuff> CanDoStuffType;
+-typedef Object<CanDoStuff> *CanDoStuffTypePtr;
++typedef OBJECT<CanDoStuff> CanDoStuffType;
++typedef OBJECT<CanDoStuff> *CanDoStuffTypePtr;
+ 
+ @protocol CanDoStuff
+ - (int) dostuff;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm	2010-10-22 05:30:29.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -6,16 +6,16 @@
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mconstant-cfstrings" } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ 
+-@interface Foo: Object {
++@interface Foo: NSObject {
+   char *cString;
+   unsigned int len;
+ }
+ + (Foo *)description;
+ @end
+ 
+-@interface Bar: Object
++@interface Bar: NSObject
+ + (Foo *) getString: (int) which;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -5,17 +5,23 @@
+ /* { dg-options "-fconstant-string-class=Foo" } */
+ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
+ 
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#define OBJECT Object
++#endif
+ #include "../../objc-obj-c++-shared/objc-test-suite-types.h"
+ 
+-@interface Foo: Object {
++@interface Foo: OBJECT {
+   char *cString;
+   unsigned int len;
+ }
+ + (id)description;
+ @end
+ 
+-@interface Bar: Object
++@interface Bar: OBJECT
+ + (Foo *) getString: (int) which;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/syntax-error-1.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/syntax-error-1.mm	2010-10-05 14:23:33.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/syntax-error-1.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -1,7 +1,13 @@
+ /* Graceful handling of a syntax error.  */
+ /* { dg-do compile } */
+ 
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#define OBJECT Object
++#endif
+ 
+ class foo {
+   public:
+@@ -12,7 +18,7 @@
+ 
+ extern void NXLog(const char *, ...);
+ 
+-@interface Test2 : Object {
++@interface Test2 : OBJECT {
+ }
+ - (void) foo2;
+ @end
+@@ -23,4 +29,4 @@
+ } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */
+ @end
+ 
+-/* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 22 } */
++/* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 28 } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -6,10 +6,10 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface NSString: Object
++@interface NSString: NSObject
+ @end
+ 
+ @interface NSSimpleCString : NSString {
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -7,10 +7,10 @@
+ /* { dg-options "-fconstant-string-class=XStr" } */
+ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface XString: Object {
++@interface XString: NSObject {
+ @protected
+     char *bytes;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
+--- gcc-4.8.1.orig/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm	2013-07-16 08:24:02.909501000 -0500
+@@ -5,10 +5,10 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface NSConstantString: Object {
++@interface NSConstantString: NSObject {
+   char *cString;
+   unsigned int len;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/encode-7-next-64bit.m gcc-4.8.1/gcc/testsuite/objc.dg/encode-7-next-64bit.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/encode-7-next-64bit.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/encode-7-next-64bit.m	2013-07-16 08:24:02.909501000 -0500
+@@ -4,24 +4,25 @@
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
++/* { dg-additional-options "-framework Foundation" } */
+ 
+ #include <stdbool.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../objc-obj-c++-shared/runtime.h"
+ 
+-#define CHECK_IF(E) if (!(E)) abort ()
++extern int printf(char *,...);
++void CHECK_IF(const char *s1, const char *s2)
++{
++ if (strcmp(s1,s2) != 0) {
++ printf ("'%s'\n'%s'\n",s1,s2);
++ abort ();
++ }
++}
+ 
+ @class NSDictionary, NSFont, NSError, _NSATSTypesetterGuts, NSString, NSMenu, NSArray;
+ 
+-typedef unsigned char UInt8;
+-typedef const signed long OSStatus;
+-typedef unsigned long CFIndex;
+-typedef unsigned int UInt32;
+-typedef UInt32 FourCharCode;
+-typedef FourCharCode OSType;
+-
+ struct FSRef {
+   UInt8 hidden[80];
+ };
+@@ -99,10 +100,10 @@
+   unsigned int parameterMask;
+ } NSErrorUserInfoFormatter;
+ 
+-typedef Object MyObj;
+-typedef Object *MyPtr;
++typedef NSObject MyObj;
++typedef NSObject *MyPtr;
+ 
+-@interface Foo: Object {
++@interface Foo: NSObject {
+   NSATSGlyphStorageRun r;
+ }
+ - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2
+@@ -114,7 +115,7 @@
+ - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4;
+ - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4;
+ - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1;
+-- (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3;
++- (inout id)obj1:(const MyPtr)obj1 obj2:(NSObject *const)obj2 obj3:(MyObj *const)obj3;
+ + (ComponentInstance)_defaultScriptingComponent;
+ - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters 
+   applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters;
+@@ -156,7 +157,7 @@
+ - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1 {
+   return "Hello";
+ }  
+-- (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3 {
++- (inout id)obj1:(const MyPtr)obj1 obj2:(NSObject *const)obj2 obj3:(MyObj *const)obj3 {
+   return self;
+ }
+ + (ComponentInstance)_defaultScriptingComponent {
+@@ -191,6 +192,8 @@
+ }
+ @end
+ 
++/* FIXME: we produce different output c.f. the system compiler on OSX10.6+ */
++
+ int main(void) {
+   Class fooClass = objc_getClass ("Foo");
+   Method meth;
+@@ -199,72 +202,76 @@
+   Ivar ivar;
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_errorWithOSStatus:ref1:ref2:reading:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding(meth), "@44@0:8q16r^{FSRef=[80C]}24r^{FSRef=[80C]}32c40"));
++  CHECK_IF (method_getTypeEncoding(meth), "@40@0:8i16r^{FSRef=[80C]}20r^{FSRef=[80C]}28c36");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_attributeRunForCharacterAtIndex:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r^{?=@@QQ^Qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@:::****{?=b1b1b1b1b1b27}}24@0:8Q16"));
++  CHECK_IF (method_getTypeEncoding (meth), "r^{?=@@qq^qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@:::****{?=b1b1b1b1b1b27}}24@0:8q16");
++/* clang produces: r^{?=@@qq^qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@::^{objc_selector}****{?=b1b1b1b1b1b27}}24@0:8q16 */
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_getATSTypesetterGuts:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@24@0:8r:16"));
++  CHECK_IF (method_getTypeEncoding (meth), "r@24@0:8r:16");
++/* "@24@0:8r^{objc_selector=}16" */
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(resumeWithSuspensionID:and:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v32@0:8^{__NSAppleEventManagerSuspension=}16r^Q24"));
++  CHECK_IF (method_getTypeEncoding (meth), "v32@0:8^{__NSAppleEventManagerSuspension=}16r^q24");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(anotherMeth:and:and:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@40@0:8r:16r@24r@32"));
++  CHECK_IF (method_getTypeEncoding (meth), "r@40@0:8r:16r@24r@32");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(str1:str2:str3:str4:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@48@0:8r*16*24*32r*40"));
++  CHECK_IF (method_getTypeEncoding (meth), "@48@0:8r*16*24*32r*40");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(foo1:foo2:foo3:foo4:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "Vv48@0:8@16r@24@32r@40"));
++  CHECK_IF (method_getTypeEncoding (meth), "Vv48@0:8@16r@24@32r@40");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(sel1:id1:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "rn*32@0:8r:16r@24"));
++  CHECK_IF (method_getTypeEncoding (meth), "rn*32@0:8r:16r@24");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(obj1:obj2:obj3:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "N@40@0:8r@16@24^{Object=#}32"));
++  CHECK_IF (method_getTypeEncoding (meth), "N@40@0:8r@16@24^{NSObject=#}32");
+ 
+   meth = class_getClassMethod (fooClass, @selector(_defaultScriptingComponent));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{ComponentInstanceRecord=[1q]}16@0:8"));
++  CHECK_IF (method_getTypeEncoding (meth), "^{ComponentInstanceRecord=[1q]}16@0:8");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_formatCocoaErrorString:parameters:applicableFormatters:count:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@44@0:8@16r*24^^{?}32i40"));
++  CHECK_IF (method_getTypeEncoding (meth), "@44@0:8@16r*24^^{?}32i40");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(formatter_func:run:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{?=^?@I}32@0:8@16r^^{?}24"));
++  CHECK_IF (method_getTypeEncoding (meth), "^{?=^?@I}32@0:8@16r^^{?}24");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_forgetWord:inDictionary:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c32@0:8nO@16nO@24"));
++  CHECK_IF (method_getTypeEncoding (meth), "c32@0:8nO@16nO@24");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_registerServicesMenu:withSendTypes:andReturnTypes:addToList:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v44@0:8@16r^*24r^*32c40"));
++  CHECK_IF (method_getTypeEncoding (meth), "v44@0:8@16r^*24r^*32c40");
+ 
+   meth = class_getClassMethod (fooClass, @selector(_proxySharePointer));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^^{__CFSet}16@0:8"));
++  CHECK_IF (method_getTypeEncoding (meth), "^^{__CFSet}16@0:8");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_checkGrammarInString:language:details:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "{_NSRange=II}40@0:8n@16nO@24oO^@32"));
++  CHECK_IF (method_getTypeEncoding (meth), "{_NSRange=II}40@0:8n@16nO@24oO^@32");
+ 
+   meth = class_getInstanceMethod (fooClass, @selector(_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "B60@0:8^{__CTLine=}16{_NSRect={_NSPoint=ff}{_NSSize=ff}}24f40f44f48^Q52"));
++  CHECK_IF (method_getTypeEncoding (meth), "B60@0:8^{__CTLine=}16{_NSRect={_NSPoint=ff}{_NSSize=ff}}24f40f44f48^q52");
+ 
+   meth = class_getClassMethod (fooClass, @selector(findVoiceByIdentifier:returningCreator:returningID:));
+-  CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c40@0:8@16^I24^I32"));
++  CHECK_IF (method_getTypeEncoding (meth), "c40@0:8@16^I24^I32");
+ 
+   ivars = class_copyIvarList (fooClass, &ivar_count);
+-  CHECK_IF (ivar_count == 1);
++  if (ivar_count != 1) {
++    abort ();
++  }
+ 
+   ivar = ivars[0];
+-  CHECK_IF (!strcmp (ivar_getName(ivar), "r"));
+-  CHECK_IF (!strcmp (ivar_getTypeEncoding(ivar),
++  CHECK_IF (ivar_getName(ivar), "r");
++  CHECK_IF (ivar_getTypeEncoding(ivar),
+    "{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\""
+-    "Q\"_nominalGlyphLocation\"Q\"p\"^Q\"_defaultLineHeight\"f\"_defaultBaselineOffset\""
++    "q\"_nominalGlyphLocation\"q\"p\"^q\"_defaultLineHeight\"f\"_defaultBaselineOffset\""
+     "f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\""
+     "{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\""
+     "Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\":\"str1\"*\"str2\"*\"str3\"*\"str4\""
+     "*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\""
+-    "b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}"));
+-
++    "b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}");
++/*"{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\"q\"_nominalGlyphLocation\"q\"p\"^q\"_defaultLineHeight\"f\"_defaultBaselineOffset\"f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\"{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\"Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\"^{objc_selector}\"str1\"*\"str2\"*\"str3\"*\"str4\"*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\"b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}"*/
+   return 0;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/image-info.m gcc-4.8.1/gcc/testsuite/objc.dg/image-info.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/image-info.m	2011-02-17 18:07:38.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/image-info.m	2013-07-16 08:24:02.909501000 -0500
+@@ -7,20 +7,19 @@
+ /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-freplace-objc-classes" } */
+ 
+-#include <objc/objc.h>
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ 
+ extern void abort(void);
+ #define CHECK_IF(expr) if(!(expr)) abort();
+ 
+-@interface Object (TEST_SUITE_C1)
++@interface NSObject (TEST_SUITE_C1)
+ - init;
+ @end
+-@implementation Object (TEST_SUITE_C1)
++@implementation NSObject (TEST_SUITE_C1)
+ - init {return self;}
+ @end
+ 
+-@interface Base: Object {
++@interface Base: NSObject {
+ @public
+   int a;
+   float b;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/method-6.m gcc-4.8.1/gcc/testsuite/objc.dg/method-6.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/method-6.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/method-6.m	2013-07-16 08:24:02.909501000 -0500
+@@ -4,14 +4,21 @@
+ /* { dg-do compile } */
+ /* { dg-options "-Wstrict-selector-match" } */
+ 
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
++#include <objc/Object.h>
+ #include <objc/Protocol.h>
++#define OBJECT Object
++#endif
+ 
+ @interface Base
+ - (unsigned)port;
+ @end
+ 
+ @interface Derived: Base
+-- (Object *)port;
++- (OBJECT *)port;
+ + (Protocol *)port;
+ - (id)starboard;
+ @end
+@@ -20,13 +27,13 @@
+   Class receiver;
+ 
+   [receiver port];  /* { dg-warning "multiple methods named .\\+port. found" } */
+-       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 10 } */
+-       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 15 } */
++       /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 17 } */
++       /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 22 } */
+ 
+   [receiver starboard];  /* { dg-warning "no .\\+starboard. method found" } */
+-       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 26 } */
+-       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 26 } */
+-       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 26 } */
++       /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 33 } */
++       /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 33 } */
++       /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 33 } */
+ 
+   [Class port];  /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/no-extra-load.m gcc-4.8.1/gcc/testsuite/objc.dg/no-extra-load.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/no-extra-load.m	2010-03-25 17:25:05.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/no-extra-load.m	2013-07-16 08:24:02.909501000 -0500
+@@ -1,7 +1,7 @@
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ 
+-#import <Foundation/Foundation.h>
++#include <Foundation/NSObject.h>
+ main() { [NSObject new]; }
+ 
+ /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/objc-foreach-4.m gcc-4.8.1/gcc/testsuite/objc.dg/objc-foreach-4.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/objc-foreach-4.m	2011-01-09 10:24:46.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/objc-foreach-4.m	2013-07-16 08:24:02.909501000 -0500
+@@ -1,17 +1,13 @@
+ /* Test for valid objc objects used in a for-each statement. */
+ /* FIXME: Run this test with the GNU runtime as well.  */
+-/* { dg-do compile { target *-*-darwin* } } */
++/* { dg-do run { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
++/* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
+ 
+-#include <objc/objc-api.h>
+-#include <Foundation/Foundation.h>
+-
+-#if defined (__NEXT_RUNTIME__) && defined (__LP64__)
+-/* Fudge the class reference until we implement the compiler-side 
+-   const strings.  */
+-extern void *_NSConstantStringClassReference;
+-#endif
++#include <Foundation/NSString.h>
++#include <Foundation/NSAutoreleasePool.h>
++#include <Foundation/NSArray.h>
+ 
+ // gcc -o foo foo.m -framework Foundation
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/objc-foreach-5.m gcc-4.8.1/gcc/testsuite/objc.dg/objc-foreach-5.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/objc-foreach-5.m	2011-01-09 10:24:46.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/objc-foreach-5.m	2013-07-16 08:24:02.909501000 -0500
+@@ -2,8 +2,10 @@
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
++/* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
+ 
+-#import <Foundation/Foundation.h>
++#include <Foundation/NSArray.h>
++#include <Foundation/NSAutoreleasePool.h>
+ 
+ NSArray * createTestVictim(unsigned capacity) {
+     NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity];
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/pr23214.m gcc-4.8.1/gcc/testsuite/objc.dg/pr23214.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/pr23214.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/pr23214.m	2013-07-16 08:24:02.909501000 -0500
+@@ -3,14 +3,24 @@
+ 
+ /* { dg-do run } */
+ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
++/* { dg-additional-options "-framework Foundation" { target { { *-*-darwin* } && objc2 } } } */
+ 
++#if defined (__NEXT_RUNTIME__) && defined(__OBJC2__) \
++    && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
++    && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070
+ #include <objc/Protocol.h>
+- 
+-@interface Object (TS_CAT)
++#define OBJECT NSObject
++#else
++#include <objc/Object.h>
++#define OBJECT Object
++#include <objc/Protocol.h>
++#endif
++
++@interface OBJECT (TS_CAT)
+ - test;
+ @end
+ 
+-@implementation Object (TS_CAT)
++@implementation OBJECT (TS_CAT)
+ - test { return self; }
+ @end
+ 
+@@ -20,7 +30,7 @@
+ @protocol B 
+ @end
+ 
+-@interface Dummy : Object <B>
++@interface Dummy : OBJECT <B>
+ @end
+ 
+ int main ()
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/proto-lossage-7.m gcc-4.8.1/gcc/testsuite/objc.dg/proto-lossage-7.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/proto-lossage-7.m	2010-09-14 19:08:59.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/proto-lossage-7.m	2013-07-16 08:24:02.909501000 -0500
+@@ -1,12 +1,19 @@
+ /* Check that typedefs of ObjC classes preserve 
+    any @protocol qualifiers.  */
+ /* { dg-do compile } */
++
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#define OBJECT Object
++#endif
+ 
+ @protocol CanDoStuff;
+ 
+-typedef Object<CanDoStuff> CanDoStuffType;
+-typedef Object<CanDoStuff> *CanDoStuffTypePtr;
++typedef OBJECT<CanDoStuff> CanDoStuffType;
++typedef OBJECT<CanDoStuff> *CanDoStuffTypePtr;
+ 
+ @protocol CanDoStuff
+ - (int) dostuff;
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/strings/const-cfstring-5.m gcc-4.8.1/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/strings/const-cfstring-5.m	2010-10-22 05:30:29.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/strings/const-cfstring-5.m	2013-07-16 08:24:02.909501000 -0500
+@@ -6,16 +6,16 @@
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mconstant-cfstrings" } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ 
+-@interface Foo: Object {
++@interface Foo: NSObject {
+   char *cString;
+   unsigned int len;
+ }
+ + (Foo *)description;
+ @end
+ 
+-@interface Bar: Object
++@interface Bar: NSObject
+ + (Foo *) getString: (int) which;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/strings/const-str-12b.m gcc-4.8.1/gcc/testsuite/objc.dg/strings/const-str-12b.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/strings/const-str-12b.m	2011-01-11 04:14:48.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/strings/const-str-12b.m	2013-07-16 08:24:02.909501000 -0500
+@@ -5,17 +5,23 @@
+ /* { dg-options "-fconstant-string-class=Foo" } */
+ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
+ 
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#define OBJECT Object
++#endif
+ #include "../../objc-obj-c++-shared/objc-test-suite-types.h"
+ 
+-@interface Foo: Object {
++@interface Foo: OBJECT {
+   char *cString;
+   unsigned int len;
+ }
+ + (id)description;
+ @end
+ 
+-@interface Bar: Object
++@interface Bar: OBJECT
+ + (Foo *) getString: (int) which;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/symtab-1.m gcc-4.8.1/gcc/testsuite/objc.dg/symtab-1.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/symtab-1.m	2011-02-17 18:07:38.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/symtab-1.m	2013-07-16 08:24:02.909501000 -0500
+@@ -4,9 +4,9 @@
+ /* { dg-do compile { target { *-*-darwin* } } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ 
+-@interface Base: Object 
++@interface Base: NSObject 
+ - (void)setValues;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-10.m gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-10.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-10.m	2013-07-16 08:24:02.909501000 -0500
+@@ -6,10 +6,10 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface NSString: Object
++@interface NSString: NSObject
+ @end
+ 
+ @interface NSSimpleCString : NSString {
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-11.m gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-11.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-11.m	2013-07-16 08:24:02.909501000 -0500
+@@ -7,10 +7,10 @@
+ /* { dg-options "-fconstant-string-class=XStr" } */
+ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface XString: Object {
++@interface XString: NSObject {
+ @protected
+     char *bytes;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-9.m gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/torture/strings/const-str-9.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/torture/strings/const-str-9.m	2013-07-16 08:24:02.909501000 -0500
+@@ -5,10 +5,10 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE.  */
+ 
+-@interface NSConstantString: Object {
++@interface NSConstantString: NSObject {
+   char *cString;
+   unsigned int len;
+ }
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-1.m gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-1.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-1.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-1.m	2013-07-16 08:24:02.909501000 -0500
+@@ -5,13 +5,12 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-fzero-link" } */
+ 
+-#include <objc/Object.h>
+-#include <objc/objc.h>
++#include <Foundation/NSObject.h>
+ 
+ extern void abort(void);
+ #define CHECK_IF(expr) if(!(expr)) abort();
+ 
+-@interface Base: Object
++@interface Base: NSObject
+ + (int) getValue;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-2.m gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-2.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-2.m	2011-02-17 18:07:38.000000000 -0600
++++ gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-2.m	2013-07-16 08:24:02.909501000 -0500
+@@ -5,12 +5,12 @@
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-options "-fno-zero-link" } */
+ 
+-#include <objc/Object.h>
++#include <Foundation/NSObject.h>
+ 
+ extern void abort(void);
+ #define CHECK_IF(expr) if(!(expr)) abort();
+ 
+-@interface Base: Object
++@interface Base: NSObject
+ + (int) getValue;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-3.m gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-3.m
+--- gcc-4.8.1.orig/gcc/testsuite/objc.dg/zero-link-3.m	2011-06-06 17:46:58.000000000 -0500
++++ gcc-4.8.1/gcc/testsuite/objc.dg/zero-link-3.m	2013-07-16 08:24:02.909501000 -0500
+@@ -2,15 +2,23 @@
+ /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
+ 
+ /* { dg-do run { target *-*-darwin* } } */
+-/* { dg-options "-fzero-link" } */
++/* { dg-additional-options "-fzero-link" } */
++/* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */
+ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+ 
++#ifdef __NEXT_RUNTIME__
++#include <Foundation/NSObject.h>
++#define OBJECT NSObject
++#else
+ #include <objc/Object.h>
++#include <objc/Protocol.h>
++#define OBJECT Object
++#endif
+ 
+ extern void abort(void);
+ #define CHECK_IF(expr) if(!(expr)) abort();
+ 
+-@interface Base: Object
++@interface Base: OBJECT
+ + (int) getValue;
+ @end
+ 
+diff -Naur gcc-4.8.1.orig/gcc/tlink.c gcc-4.8.1/gcc/tlink.c
+--- gcc-4.8.1.orig/gcc/tlink.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/tlink.c	2013-06-20 12:12:17.412846000 -0500
+@@ -817,18 +817,18 @@
+ void
+ do_tlink (char **ld_argv, char **object_lst ATTRIBUTE_UNUSED)
+ {
+-  int exit = tlink_execute ("ld", ld_argv, ldout, lderrout);
++  int ret = tlink_execute ("ld", ld_argv, ldout, lderrout);
+ 
+   tlink_init ();
+ 
+-  if (exit)
++  if (ret)
+     {
+       int i = 0;
+ 
+       /* Until collect does a better job of figuring out which are object
+ 	 files, assume that everything on the command line could be.  */
+       if (read_repo_files (ld_argv))
+-	while (exit && i++ < MAX_ITERATIONS)
++	while (ret && i++ < MAX_ITERATIONS)
+ 	  {
+ 	    if (tlink_verbose >= 3)
+ 	      {
+@@ -843,7 +843,7 @@
+ 	      break;
+ 	    if (tlink_verbose)
+ 	      fprintf (stderr, _("collect: relinking\n"));
+-	    exit = tlink_execute ("ld", ld_argv, ldout, lderrout);
++	    ret = tlink_execute ("ld", ld_argv, ldout, lderrout);
+ 	  }
+     }
+ 
+@@ -851,10 +851,10 @@
+   unlink (ldout);
+   dump_ld_file (lderrout, stderr);
+   unlink (lderrout);
+-  if (exit)
++  if (ret)
+     {
+-      error ("ld returned %d exit status", exit);
+-      collect_exit (exit);
++      error ("ld returned %d exit status", ret);
++      exit (ret);
+     }
+   else
+     {
+diff -Naur gcc-4.8.1.orig/gcc/tree-call-cdce.c gcc-4.8.1/gcc/tree-call-cdce.c
+--- gcc-4.8.1.orig/gcc/tree-call-cdce.c	2013-02-20 09:19:13.000000000 -0600
++++ gcc-4.8.1/gcc/tree-call-cdce.c	2013-08-16 04:04:52.452768000 -0500
+@@ -726,15 +726,28 @@
+      return false and do not do any transformation for
+      the call.  */
+   if (nconds == 0)
+-    return false;
++    {
++      conds.release ();
++      return false;
++    }
+ 
+   bi_call_bb = gimple_bb (bi_call);
+ 
+-  /* Now find the join target bb -- split
+-     bi_call_bb if needed.  */
+-  bi_call_bsi = gsi_for_stmt (bi_call);
++  /* Now find the join target bb -- split bi_call_bb if needed.  */
++  if (stmt_ends_bb_p (bi_call))
++    {
++      /* If the call must be the last in the bb, don't split the block,
++	 it could e.g. have EH edges.  */
++      join_tgt_in_edge_from_call = find_fallthru_edge (bi_call_bb->succs);
++      if (join_tgt_in_edge_from_call == NULL)
++	{
++	  conds.release ();
++	  return false;
++	}
++    }
++  else
++    join_tgt_in_edge_from_call = split_block (bi_call_bb, bi_call);
+ 
+-  join_tgt_in_edge_from_call = split_block (bi_call_bb, bi_call);
+   bi_call_bsi = gsi_for_stmt (bi_call);
+ 
+   join_tgt_bb = join_tgt_in_edge_from_call->dest;
+diff -Naur gcc-4.8.1.orig/gcc/tree-parloops.c gcc-4.8.1/gcc/tree-parloops.c
+--- gcc-4.8.1.orig/gcc/tree-parloops.c	2013-05-07 03:11:46.000000000 -0500
++++ gcc-4.8.1/gcc/tree-parloops.c	2013-08-18 10:24:12.566692000 -0500
+@@ -478,9 +478,12 @@
+       if (gsi == NULL)
+ 	return NULL;
+       addr = TREE_OPERAND (*var_p, 0);
+-      name = make_temp_ssa_name (TREE_TYPE (addr), NULL,
+-				 get_name (TREE_OPERAND
+-					   (TREE_OPERAND (*var_p, 0), 0)));
++      const char *obj_name
++	= get_name (TREE_OPERAND (TREE_OPERAND (*var_p, 0), 0));
++      if (obj_name)
++	name = make_temp_ssa_name (TREE_TYPE (addr), NULL, obj_name);
++      else
++	name = make_ssa_name (TREE_TYPE (addr), NULL);
+       stmt = gimple_build_assign (name, addr);
+       gsi_insert_on_edge_immediate (entry, stmt);
+ 
+@@ -679,6 +682,12 @@
+ 	  dta.changed = true;
+ 	}
+     }
++  else if (gimple_clobber_p (stmt))
++    {
++      stmt = gimple_build_nop ();
++      gsi_replace (gsi, stmt, false);
++      dta.changed = true;
++    }
+   else
+     {
+       dta.gsi = gsi;
+diff -Naur gcc-4.8.1.orig/gcc/tree-sra.c gcc-4.8.1/gcc/tree-sra.c
+--- gcc-4.8.1.orig/gcc/tree-sra.c	2013-05-23 08:25:23.000000000 -0500
++++ gcc-4.8.1/gcc/tree-sra.c	2013-08-14 15:36:12.151519000 -0500
+@@ -1440,6 +1440,7 @@
+ {
+   tree prev_base = base;
+   tree off;
++  tree mem_ref;
+   HOST_WIDE_INT base_offset;
+   unsigned HOST_WIDE_INT misalign;
+   unsigned int align;
+@@ -1490,7 +1491,12 @@
+   if (align < TYPE_ALIGN (exp_type))
+     exp_type = build_aligned_type (exp_type, align);
+ 
+-  return fold_build2_loc (loc, MEM_REF, exp_type, base, off);
++  mem_ref = fold_build2_loc (loc, MEM_REF, exp_type, base, off);
++  if (TREE_THIS_VOLATILE (prev_base))
++    TREE_THIS_VOLATILE (mem_ref) = 1;
++  if (TREE_SIDE_EFFECTS (prev_base))
++    TREE_SIDE_EFFECTS (mem_ref) = 1;
++  return mem_ref;
+ }
+ 
+ /* Construct a memory reference to a part of an aggregate BASE at the given
+diff -Naur gcc-4.8.1.orig/gcc/tree-tailcall.c gcc-4.8.1/gcc/tree-tailcall.c
+--- gcc-4.8.1.orig/gcc/tree-tailcall.c	2013-03-06 17:26:42.000000000 -0600
++++ gcc-4.8.1/gcc/tree-tailcall.c	2013-08-23 02:35:01.611004000 -0500
+@@ -328,8 +328,10 @@
+     case NEGATE_EXPR:
+       if (FLOAT_TYPE_P (TREE_TYPE (op0)))
+         *m = build_real (TREE_TYPE (op0), dconstm1);
+-      else
++      else if (INTEGRAL_TYPE_P (TREE_TYPE (op0)))
+         *m = build_int_cst (TREE_TYPE (op0), -1);
++      else
++        return false;
+ 
+       *ass_var = dest;
+       return true;
+@@ -341,8 +343,10 @@
+         {
+           if (FLOAT_TYPE_P (TREE_TYPE (non_ass_var)))
+             *m = build_real (TREE_TYPE (non_ass_var), dconstm1);
+-          else
++          else if (INTEGRAL_TYPE_P (TREE_TYPE (non_ass_var)))
+             *m = build_int_cst (TREE_TYPE (non_ass_var), -1);
++	  else
++	    return false;
+ 
+           *a = fold_build1 (NEGATE_EXPR, TREE_TYPE (non_ass_var), non_ass_var);
+         }
+@@ -570,6 +574,11 @@
+   if (!tail_recursion && (m || a))
+     return;
+ 
++  /* For pointers don't allow additions or multiplications.  */
++  if ((m || a)
++      && POINTER_TYPE_P (TREE_TYPE (DECL_RESULT (current_function_decl))))
++    return;
++
+   nw = XNEW (struct tailcall);
+ 
+   nw->call_gsi = gsi;
+diff -Naur gcc-4.8.1.orig/gcc/tree-vect-patterns.c gcc-4.8.1/gcc/tree-vect-patterns.c
+--- gcc-4.8.1.orig/gcc/tree-vect-patterns.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/tree-vect-patterns.c	2013-06-12 08:01:29.647807000 -0500
+@@ -638,7 +638,10 @@
+           && vect_handle_widen_op_by_const (last_stmt, MULT_EXPR, oprnd1,
+ 		                            &oprnd0, stmts, type,
+ 					    &half_type0, def_stmt0))
+-        half_type1 = half_type0;
++	{
++	  half_type1 = half_type0;
++	  oprnd1 = fold_convert (half_type1, oprnd1);
++	}
+       else
+         return NULL;
+     }
+diff -Naur gcc-4.8.1.orig/gcc/tree-vect-stmts.c gcc-4.8.1/gcc/tree-vect-stmts.c
+--- gcc-4.8.1.orig/gcc/tree-vect-stmts.c	2013-03-05 03:37:56.000000000 -0600
++++ gcc-4.8.1/gcc/tree-vect-stmts.c	2013-06-27 10:41:34.547790000 -0500
+@@ -3796,6 +3796,7 @@
+   enum vect_def_type dt;
+   stmt_vec_info prev_stmt_info = NULL;
+   tree dataref_ptr = NULL_TREE;
++  gimple ptr_incr = NULL;
+   int nunits = TYPE_VECTOR_SUBPARTS (vectype);
+   int ncopies;
+   int j;
+@@ -4040,7 +4041,6 @@
+   for (j = 0; j < ncopies; j++)
+     {
+       gimple new_stmt;
+-      gimple ptr_incr;
+ 
+       if (j == 0)
+ 	{
+@@ -4313,7 +4313,7 @@
+   tree dummy;
+   enum dr_alignment_support alignment_support_scheme;
+   tree dataref_ptr = NULL_TREE;
+-  gimple ptr_incr;
++  gimple ptr_incr = NULL;
+   int nunits = TYPE_VECTOR_SUBPARTS (vectype);
+   int ncopies;
+   int i, j, group_size;
+diff -Naur gcc-4.8.1.orig/gcc/version.c gcc-4.8.1/gcc/version.c
+--- gcc-4.8.1.orig/gcc/version.c	2013-01-10 14:38:27.000000000 -0600
++++ gcc-4.8.1/gcc/version.c	2013-08-28 12:51:08.218924417 -0500
+@@ -32,4 +32,4 @@
+    Makefile.  */
+ 
+ const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
+-const char pkgversion_string[] = PKGVERSION;
++const char pkgversion_string[] = "(GCC for Cross-LFS 4.8.1.20130828) ";
+diff -Naur gcc-4.8.1.orig/libffi/doc/libffi.info gcc-4.8.1/libffi/doc/libffi.info
+--- gcc-4.8.1.orig/libffi/doc/libffi.info	2013-05-31 05:05:08.000000000 -0500
++++ gcc-4.8.1/libffi/doc/libffi.info	1969-12-31 18:00:00.000000000 -0600
+@@ -1,617 +0,0 @@
+-This is doc/libffi.info, produced by makeinfo version 4.13 from
+-/d/gcc-4.8.1/gcc-4.8.1/libffi/doc/libffi.texi.
+-
+-This manual is for Libffi, a portable foreign-function interface
+-library.
+-
+-   Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
+-
+-     Permission is granted to copy, distribute and/or modify this
+-     document 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.  A copy of the license is
+-     included in the section entitled "GNU General Public License".
+-
+-
+-INFO-DIR-SECTION Development
+-START-INFO-DIR-ENTRY
+-* libffi: (libffi).             Portable foreign-function interface library.
+-END-INFO-DIR-ENTRY
+-
+-
+-File: libffi.info,  Node: Top,  Next: Introduction,  Up: (dir)
+-
+-libffi
+-******
+-
+-This manual is for Libffi, a portable foreign-function interface
+-library.
+-
+-   Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
+-
+-     Permission is granted to copy, distribute and/or modify this
+-     document 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.  A copy of the license is
+-     included in the section entitled "GNU General Public License".
+-
+-
+-* Menu:
+-
+-* Introduction::                What is libffi?
+-* Using libffi::                How to use libffi.
+-* Missing Features::            Things libffi can't do.
+-* Index::                       Index.
+-
+-
+-File: libffi.info,  Node: Introduction,  Next: Using libffi,  Prev: Top,  Up: Top
+-
+-1 What is libffi?
+-*****************
+-
+-Compilers for high level languages generate code that follow certain
+-conventions.  These conventions are necessary, in part, for separate
+-compilation to work.  One such convention is the "calling convention".
+-The calling convention is a set of assumptions made by the compiler
+-about where function arguments will be found on entry to a function.  A
+-calling convention also specifies where the return value for a function
+-is found.  The calling convention is also sometimes called the "ABI" or
+-"Application Binary Interface".  
+-
+-   Some programs may not know at the time of compilation what arguments
+-are to be passed to a function.  For instance, an interpreter may be
+-told at run-time about the number and types of arguments used to call a
+-given function.  `Libffi' can be used in such programs to provide a
+-bridge from the interpreter program to compiled code.
+-
+-   The `libffi' library provides a portable, high level programming
+-interface to various calling conventions.  This allows a programmer to
+-call any function specified by a call interface description at run time.
+-
+-   FFI stands for Foreign Function Interface.  A foreign function
+-interface is the popular name for the interface that allows code
+-written in one language to call code written in another language.  The
+-`libffi' library really only provides the lowest, machine dependent
+-layer of a fully featured foreign function interface.  A layer must
+-exist above `libffi' that handles type conversions for values passed
+-between the two languages.  
+-
+-
+-File: libffi.info,  Node: Using libffi,  Next: Missing Features,  Prev: Introduction,  Up: Top
+-
+-2 Using libffi
+-**************
+-
+-* Menu:
+-
+-* The Basics::                  The basic libffi API.
+-* Simple Example::              A simple example.
+-* Types::                       libffi type descriptions.
+-* Multiple ABIs::               Different passing styles on one platform.
+-* The Closure API::             Writing a generic function.
+-* Closure Example::             A closure example.
+-
+-
+-File: libffi.info,  Node: The Basics,  Next: Simple Example,  Up: Using libffi
+-
+-2.1 The Basics
+-==============
+-
+-`Libffi' assumes that you have a pointer to the function you wish to
+-call and that you know the number and types of arguments to pass it, as
+-well as the return type of the function.
+-
+-   The first thing you must do is create an `ffi_cif' object that
+-matches the signature of the function you wish to call.  This is a
+-separate step because it is common to make multiple calls using a
+-single `ffi_cif'.  The "cif" in `ffi_cif' stands for Call InterFace.
+-To prepare a call interface object, use the function `ffi_prep_cif'.  
+-
+- -- Function: ffi_status ffi_prep_cif (ffi_cif *CIF, ffi_abi ABI,
+-          unsigned int NARGS, ffi_type *RTYPE, ffi_type **ARGTYPES)
+-     This initializes CIF according to the given parameters.
+-
+-     ABI is the ABI to use; normally `FFI_DEFAULT_ABI' is what you
+-     want.  *note Multiple ABIs:: for more information.
+-
+-     NARGS is the number of arguments that this function accepts.
+-
+-     RTYPE is a pointer to an `ffi_type' structure that describes the
+-     return type of the function.  *Note Types::.
+-
+-     ARGTYPES is a vector of `ffi_type' pointers.  ARGTYPES must have
+-     NARGS elements.  If NARGS is 0, this argument is ignored.
+-
+-     `ffi_prep_cif' returns a `libffi' status code, of type
+-     `ffi_status'.  This will be either `FFI_OK' if everything worked
+-     properly; `FFI_BAD_TYPEDEF' if one of the `ffi_type' objects is
+-     incorrect; or `FFI_BAD_ABI' if the ABI parameter is invalid.
+-
+-   If the function being called is variadic (varargs) then
+-`ffi_prep_cif_var' must be used instead of `ffi_prep_cif'.
+-
+- -- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi
+-          varabi, unsigned int NFIXEDARGS, unsigned int varntotalargs,
+-          ffi_type *RTYPE, ffi_type **ARGTYPES)
+-     This initializes CIF according to the given parameters for a call
+-     to a variadic function.  In general it's operation is the same as
+-     for `ffi_prep_cif' except that:
+-
+-     NFIXEDARGS is the number of fixed arguments, prior to any variadic
+-     arguments.  It must be greater than zero.
+-
+-     NTOTALARGS the total number of arguments, including variadic and
+-     fixed arguments.
+-
+-     Note that, different cif's must be prepped for calls to the same
+-     function when different numbers of arguments are passed.
+-
+-     Also note that a call to `ffi_prep_cif_var' with
+-     NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to
+-     `ffi_prep_cif'.
+-
+-
+-   To call a function using an initialized `ffi_cif', use the
+-`ffi_call' function:
+-
+- -- Function: void ffi_call (ffi_cif *CIF, void *FN, void *RVALUE, void
+-          **AVALUES)
+-     This calls the function FN according to the description given in
+-     CIF.  CIF must have already been prepared using `ffi_prep_cif'.
+-
+-     RVALUE is a pointer to a chunk of memory that will hold the result
+-     of the function call.  This must be large enough to hold the
+-     result and must be suitably aligned; it is the caller's
+-     responsibility to ensure this.  If CIF declares that the function
+-     returns `void' (using `ffi_type_void'), then RVALUE is ignored.
+-     If RVALUE is `NULL', then the return value is discarded.
+-
+-     AVALUES is a vector of `void *' pointers that point to the memory
+-     locations holding the argument values for a call.  If CIF declares
+-     that the function has no arguments (i.e., NARGS was 0), then
+-     AVALUES is ignored.  Note that argument values may be modified by
+-     the callee (for instance, structs passed by value); the burden of
+-     copying pass-by-value arguments is placed on the caller.
+-
+-
+-File: libffi.info,  Node: Simple Example,  Next: Types,  Prev: The Basics,  Up: Using libffi
+-
+-2.2 Simple Example
+-==================
+-
+-Here is a trivial example that calls `puts' a few times.
+-
+-     #include <stdio.h>
+-     #include <ffi.h>
+-
+-     int main()
+-     {
+-       ffi_cif cif;
+-       ffi_type *args[1];
+-       void *values[1];
+-       char *s;
+-       int rc;
+-
+-       /* Initialize the argument info vectors */
+-       args[0] = &ffi_type_pointer;
+-       values[0] = &s;
+-
+-       /* Initialize the cif */
+-       if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
+-     		       &ffi_type_uint, args) == FFI_OK)
+-         {
+-           s = "Hello World!";
+-           ffi_call(&cif, puts, &rc, values);
+-           /* rc now holds the result of the call to puts */
+-
+-           /* values holds a pointer to the function's arg, so to
+-              call puts() again all we need to do is change the
+-              value of s */
+-           s = "This is cool!";
+-           ffi_call(&cif, puts, &rc, values);
+-         }
+-
+-       return 0;
+-     }
+-
+-
+-File: libffi.info,  Node: Types,  Next: Multiple ABIs,  Prev: Simple Example,  Up: Using libffi
+-
+-2.3 Types
+-=========
+-
+-* Menu:
+-
+-* Primitive Types::             Built-in types.
+-* Structures::                  Structure types.
+-* Type Example::                Structure type example.
+-
+-
+-File: libffi.info,  Node: Primitive Types,  Next: Structures,  Up: Types
+-
+-2.3.1 Primitive Types
+----------------------
+-
+-`Libffi' provides a number of built-in type descriptors that can be
+-used to describe argument and return types:
+-
+-`ffi_type_void'
+-     The type `void'.  This cannot be used for argument types, only for
+-     return values.
+-
+-`ffi_type_uint8'
+-     An unsigned, 8-bit integer type.
+-
+-`ffi_type_sint8'
+-     A signed, 8-bit integer type.
+-
+-`ffi_type_uint16'
+-     An unsigned, 16-bit integer type.
+-
+-`ffi_type_sint16'
+-     A signed, 16-bit integer type.
+-
+-`ffi_type_uint32'
+-     An unsigned, 32-bit integer type.
+-
+-`ffi_type_sint32'
+-     A signed, 32-bit integer type.
+-
+-`ffi_type_uint64'
+-     An unsigned, 64-bit integer type.
+-
+-`ffi_type_sint64'
+-     A signed, 64-bit integer type.
+-
+-`ffi_type_float'
+-     The C `float' type.
+-
+-`ffi_type_double'
+-     The C `double' type.
+-
+-`ffi_type_uchar'
+-     The C `unsigned char' type.
+-
+-`ffi_type_schar'
+-     The C `signed char' type.  (Note that there is not an exact
+-     equivalent to the C `char' type in `libffi'; ordinarily you should
+-     either use `ffi_type_schar' or `ffi_type_uchar' depending on
+-     whether `char' is signed.)
+-
+-`ffi_type_ushort'
+-     The C `unsigned short' type.
+-
+-`ffi_type_sshort'
+-     The C `short' type.
+-
+-`ffi_type_uint'
+-     The C `unsigned int' type.
+-
+-`ffi_type_sint'
+-     The C `int' type.
+-
+-`ffi_type_ulong'
+-     The C `unsigned long' type.
+-
+-`ffi_type_slong'
+-     The C `long' type.
+-
+-`ffi_type_longdouble'
+-     On platforms that have a C `long double' type, this is defined.
+-     On other platforms, it is not.
+-
+-`ffi_type_pointer'
+-     A generic `void *' pointer.  You should use this for all pointers,
+-     regardless of their real type.
+-
+-   Each of these is of type `ffi_type', so you must take the address
+-when passing to `ffi_prep_cif'.
+-
+-
+-File: libffi.info,  Node: Structures,  Next: Type Example,  Prev: Primitive Types,  Up: Types
+-
+-2.3.2 Structures
+-----------------
+-
+-Although `libffi' has no special support for unions or bit-fields, it
+-is perfectly happy passing structures back and forth.  You must first
+-describe the structure to `libffi' by creating a new `ffi_type' object
+-for it.
+-
+- -- ffi_type:
+-     The `ffi_type' has the following members:
+-    `size_t size'
+-          This is set by `libffi'; you should initialize it to zero.
+-
+-    `unsigned short alignment'
+-          This is set by `libffi'; you should initialize it to zero.
+-
+-    `unsigned short type'
+-          For a structure, this should be set to `FFI_TYPE_STRUCT'.
+-
+-    `ffi_type **elements'
+-          This is a `NULL'-terminated array of pointers to `ffi_type'
+-          objects.  There is one element per field of the struct.
+-
+-
+-File: libffi.info,  Node: Type Example,  Prev: Structures,  Up: Types
+-
+-2.3.3 Type Example
+-------------------
+-
+-The following example initializes a `ffi_type' object representing the
+-`tm' struct from Linux's `time.h'.
+-
+-   Here is how the struct is defined:
+-
+-     struct tm {
+-         int tm_sec;
+-         int tm_min;
+-         int tm_hour;
+-         int tm_mday;
+-         int tm_mon;
+-         int tm_year;
+-         int tm_wday;
+-         int tm_yday;
+-         int tm_isdst;
+-         /* Those are for future use. */
+-         long int __tm_gmtoff__;
+-         __const char *__tm_zone__;
+-     };
+-
+-   Here is the corresponding code to describe this struct to `libffi':
+-
+-         {
+-           ffi_type tm_type;
+-           ffi_type *tm_type_elements[12];
+-           int i;
+-
+-           tm_type.size = tm_type.alignment = 0;
+-           tm_type.elements = &tm_type_elements;
+-
+-           for (i = 0; i < 9; i++)
+-               tm_type_elements[i] = &ffi_type_sint;
+-
+-           tm_type_elements[9] = &ffi_type_slong;
+-           tm_type_elements[10] = &ffi_type_pointer;
+-           tm_type_elements[11] = NULL;
+-
+-           /* tm_type can now be used to represent tm argument types and
+-     	 return types for ffi_prep_cif() */
+-         }
+-
+-
+-File: libffi.info,  Node: Multiple ABIs,  Next: The Closure API,  Prev: Types,  Up: Using libffi
+-
+-2.4 Multiple ABIs
+-=================
+-
+-A given platform may provide multiple different ABIs at once.  For
+-instance, the x86 platform has both `stdcall' and `fastcall' functions.
+-
+-   `libffi' provides some support for this.  However, this is
+-necessarily platform-specific.
+-
+-
+-File: libffi.info,  Node: The Closure API,  Next: Closure Example,  Prev: Multiple ABIs,  Up: Using libffi
+-
+-2.5 The Closure API
+-===================
+-
+-`libffi' also provides a way to write a generic function - a function
+-that can accept and decode any combination of arguments.  This can be
+-useful when writing an interpreter, or to provide wrappers for
+-arbitrary functions.
+-
+-   This facility is called the "closure API".  Closures are not
+-supported on all platforms; you can check the `FFI_CLOSURES' define to
+-determine whether they are supported on the current platform.  
+-
+-   Because closures work by assembling a tiny function at runtime, they
+-require special allocation on platforms that have a non-executable
+-heap.  Memory management for closures is handled by a pair of functions:
+-
+- -- Function: void *ffi_closure_alloc (size_t SIZE, void **CODE)
+-     Allocate a chunk of memory holding SIZE bytes.  This returns a
+-     pointer to the writable address, and sets *CODE to the
+-     corresponding executable address.
+-
+-     SIZE should be sufficient to hold a `ffi_closure' object.
+-
+- -- Function: void ffi_closure_free (void *WRITABLE)
+-     Free memory allocated using `ffi_closure_alloc'.  The argument is
+-     the writable address that was returned.
+-
+-   Once you have allocated the memory for a closure, you must construct
+-a `ffi_cif' describing the function call.  Finally you can prepare the
+-closure function:
+-
+- -- Function: ffi_status ffi_prep_closure_loc (ffi_closure *CLOSURE,
+-          ffi_cif *CIF, void (*FUN) (ffi_cif *CIF, void *RET, void
+-          **ARGS, void *USER_DATA), void *USER_DATA, void *CODELOC)
+-     Prepare a closure function.
+-
+-     CLOSURE is the address of a `ffi_closure' object; this is the
+-     writable address returned by `ffi_closure_alloc'.
+-
+-     CIF is the `ffi_cif' describing the function parameters.
+-
+-     USER_DATA is an arbitrary datum that is passed, uninterpreted, to
+-     your closure function.
+-
+-     CODELOC is the executable address returned by `ffi_closure_alloc'.
+-
+-     FUN is the function which will be called when the closure is
+-     invoked.  It is called with the arguments:
+-    CIF
+-          The `ffi_cif' passed to `ffi_prep_closure_loc'.
+-
+-    RET
+-          A pointer to the memory used for the function's return value.
+-          FUN must fill this, unless the function is declared as
+-          returning `void'.
+-
+-    ARGS
+-          A vector of pointers to memory holding the arguments to the
+-          function.
+-
+-    USER_DATA
+-          The same USER_DATA that was passed to `ffi_prep_closure_loc'.
+-
+-     `ffi_prep_closure_loc' will return `FFI_OK' if everything went ok,
+-     and something else on error.
+-
+-     After calling `ffi_prep_closure_loc', you can cast CODELOC to the
+-     appropriate pointer-to-function type.
+-
+-   You may see old code referring to `ffi_prep_closure'.  This function
+-is deprecated, as it cannot handle the need for separate writable and
+-executable addresses.
+-
+-
+-File: libffi.info,  Node: Closure Example,  Prev: The Closure API,  Up: Using libffi
+-
+-2.6 Closure Example
+-===================
+-
+-A trivial example that creates a new `puts' by binding `fputs' with
+-`stdin'.
+-
+-     #include <stdio.h>
+-     #include <ffi.h>
+-
+-     /* Acts like puts with the file given at time of enclosure. */
+-     void puts_binding(ffi_cif *cif, unsigned int *ret, void* args[],
+-                       FILE *stream)
+-     {
+-       *ret = fputs(*(char **)args[0], stream);
+-     }
+-
+-     int main()
+-     {
+-       ffi_cif cif;
+-       ffi_type *args[1];
+-       ffi_closure *closure;
+-
+-       int (*bound_puts)(char *);
+-       int rc;
+-
+-       /* Allocate closure and bound_puts */
+-       closure = ffi_closure_alloc(sizeof(ffi_closure), &bound_puts);
+-
+-       if (closure)
+-         {
+-           /* Initialize the argument info vectors */
+-           args[0] = &ffi_type_pointer;
+-
+-           /* Initialize the cif */
+-           if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1,
+-                            &ffi_type_uint, args) == FFI_OK)
+-             {
+-               /* Initialize the closure, setting stream to stdout */
+-               if (ffi_prep_closure_loc(closure, &cif, puts_binding,
+-                                        stdout, bound_puts) == FFI_OK)
+-                 {
+-                   rc = bound_puts("Hello World!");
+-                   /* rc now holds the result of the call to fputs */
+-                 }
+-             }
+-         }
+-
+-       /* Deallocate both closure, and bound_puts */
+-       ffi_closure_free(closure);
+-
+-       return 0;
+-     }
+-
+-
+-File: libffi.info,  Node: Missing Features,  Next: Index,  Prev: Using libffi,  Up: Top
+-
+-3 Missing Features
+-******************
+-
+-`libffi' is missing a few features.  We welcome patches to add support
+-for these.
+-
+-   * Variadic closures.
+-
+-   * There is no support for bit fields in structures.
+-
+-   * The closure API is
+-
+-   * The "raw" API is undocumented.
+-
+-   Note that variadic support is very new and tested on a relatively
+-small number of platforms.
+-
+-
+-File: libffi.info,  Node: Index,  Prev: Missing Features,  Up: Top
+-
+-Index
+-*****
+-
+-[index]
+-* Menu:
+-
+-* :                                      Structures.           (line 12)
+-* ABI:                                   Introduction.         (line 13)
+-* Application Binary Interface:          Introduction.         (line 13)
+-* calling convention:                    Introduction.         (line 13)
+-* cif:                                   The Basics.           (line 14)
+-* closure API:                           The Closure API.      (line 13)
+-* closures:                              The Closure API.      (line 13)
+-* FFI:                                   Introduction.         (line 31)
+-* ffi_call:                              The Basics.           (line 63)
+-* ffi_closure_alloc:                     The Closure API.      (line 19)
+-* ffi_closure_free:                      The Closure API.      (line 26)
+-* FFI_CLOSURES:                          The Closure API.      (line 13)
+-* ffi_prep_cif:                          The Basics.           (line 16)
+-* ffi_prep_cif_var:                      The Basics.           (line 39)
+-* ffi_prep_closure_loc:                  The Closure API.      (line 34)
+-* ffi_status <1>:                        The Closure API.      (line 37)
+-* ffi_status:                            The Basics.           (line 18)
+-* ffi_type:                              Structures.           (line 11)
+-* ffi_type_double:                       Primitive Types.      (line 41)
+-* ffi_type_float:                        Primitive Types.      (line 38)
+-* ffi_type_longdouble:                   Primitive Types.      (line 71)
+-* ffi_type_pointer:                      Primitive Types.      (line 75)
+-* ffi_type_schar:                        Primitive Types.      (line 47)
+-* ffi_type_sint:                         Primitive Types.      (line 62)
+-* ffi_type_sint16:                       Primitive Types.      (line 23)
+-* ffi_type_sint32:                       Primitive Types.      (line 29)
+-* ffi_type_sint64:                       Primitive Types.      (line 35)
+-* ffi_type_sint8:                        Primitive Types.      (line 17)
+-* ffi_type_slong:                        Primitive Types.      (line 68)
+-* ffi_type_sshort:                       Primitive Types.      (line 56)
+-* ffi_type_uchar:                        Primitive Types.      (line 44)
+-* ffi_type_uint:                         Primitive Types.      (line 59)
+-* ffi_type_uint16:                       Primitive Types.      (line 20)
+-* ffi_type_uint32:                       Primitive Types.      (line 26)
+-* ffi_type_uint64:                       Primitive Types.      (line 32)
+-* ffi_type_uint8:                        Primitive Types.      (line 14)
+-* ffi_type_ulong:                        Primitive Types.      (line 65)
+-* ffi_type_ushort:                       Primitive Types.      (line 53)
+-* ffi_type_void:                         Primitive Types.      (line 10)
+-* Foreign Function Interface:            Introduction.         (line 31)
+-* void <1>:                              The Closure API.      (line 20)
+-* void:                                  The Basics.           (line 65)
+-
+-
+-
+-Tag Table:
+-Node: Top722
+-Node: Introduction1470
+-Node: Using libffi3106
+-Node: The Basics3592
+-Node: Simple Example7234
+-Node: Types8261
+-Node: Primitive Types8544
+-Node: Structures10364
+-Node: Type Example11224
+-Node: Multiple ABIs12447
+-Node: The Closure API12818
+-Node: Closure Example15762
+-Node: Missing Features17321
+-Node: Index17774
+-
+-End Tag Table
+diff -Naur gcc-4.8.1.orig/libffi/src/powerpc/ffi.c gcc-4.8.1/libffi/src/powerpc/ffi.c
+--- gcc-4.8.1.orig/libffi/src/powerpc/ffi.c	2013-02-06 11:32:41.000000000 -0600
++++ gcc-4.8.1/libffi/src/powerpc/ffi.c	2013-06-24 19:09:22.878901000 -0500
+@@ -127,6 +127,9 @@
+ 
+   int i;
+   ffi_type **ptr;
++#ifndef __NO_FPRS__
++  double double_tmp;
++#endif
+   union {
+     void **v;
+     char **c;
+@@ -146,7 +149,6 @@
+   gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
+   intarg_count = 0;
+ #ifndef __NO_FPRS__
+-  double double_tmp;
+   fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
+   fparg_count = 0;
+   copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
+@@ -542,11 +544,12 @@
+ 	    {
+ 	      char *where = next_arg.c;
+ 
++#ifndef __LITTLE_ENDIAN__
+ 	      /* Structures with size less than eight bytes are passed
+ 		 left-padded.  */
+ 	      if ((*ptr)->size < 8)
+ 		where += 8 - (*ptr)->size;
+-
++#endif
+ 	      memcpy (where, *p_argv.c, (*ptr)->size);
+ 	      next_arg.ul += words;
+ 	      if (next_arg.ul == gpr_end.ul)
+@@ -1208,6 +1211,7 @@
+ 
+ 	case FFI_TYPE_SINT8:
+ 	case FFI_TYPE_UINT8:
++#ifndef __LITTLE_ENDIAN__
+ 	  /* there are 8 gpr registers used to pass values */
+ 	  if (ng < 8)
+ 	    {
+@@ -1221,9 +1225,10 @@
+ 	      pst++;
+ 	    }
+ 	  break;
+-
++#endif
+ 	case FFI_TYPE_SINT16:
+ 	case FFI_TYPE_UINT16:
++#ifndef __LITTLE_ENDIAN__
+ 	  /* there are 8 gpr registers used to pass values */
+ 	  if (ng < 8)
+ 	    {
+@@ -1237,7 +1242,7 @@
+ 	      pst++;
+ 	    }
+ 	  break;
+-
++#endif
+ 	case FFI_TYPE_SINT32:
+ 	case FFI_TYPE_UINT32:
+ 	case FFI_TYPE_POINTER:
+@@ -1367,22 +1372,25 @@
+ 	{
+ 	case FFI_TYPE_SINT8:
+ 	case FFI_TYPE_UINT8:
++#ifndef __LITTLE_ENDIAN__
+ 	  avalue[i] = (char *) pst + 7;
+ 	  pst++;
+ 	  break;
+-
++#endif
+ 	case FFI_TYPE_SINT16:
+ 	case FFI_TYPE_UINT16:
++#ifndef __LITTLE_ENDIAN__
+ 	  avalue[i] = (char *) pst + 6;
+ 	  pst++;
+ 	  break;
+-
++#endif
+ 	case FFI_TYPE_SINT32:
+ 	case FFI_TYPE_UINT32:
++#ifndef __LITTLE_ENDIAN__
+ 	  avalue[i] = (char *) pst + 4;
+ 	  pst++;
+ 	  break;
+-
++#endif
+ 	case FFI_TYPE_SINT64:
+ 	case FFI_TYPE_UINT64:
+ 	case FFI_TYPE_POINTER:
+@@ -1391,11 +1399,13 @@
+ 	  break;
+ 
+ 	case FFI_TYPE_STRUCT:
++#ifndef __LITTLE_ENDIAN__
+ 	  /* Structures with size less than eight bytes are passed
+ 	     left-padded.  */
+ 	  if (arg_types[i]->size < 8)
+ 	    avalue[i] = (char *) pst + 8 - arg_types[i]->size;
+ 	  else
++#endif
+ 	    avalue[i] = pst;
+ 	  pst += (arg_types[i]->size + 7) / 8;
+ 	  break;
+diff -Naur gcc-4.8.1.orig/libffi/src/powerpc/linux64_closure.S gcc-4.8.1/libffi/src/powerpc/linux64_closure.S
+--- gcc-4.8.1.orig/libffi/src/powerpc/linux64_closure.S	2012-10-30 22:45:34.000000000 -0500
++++ gcc-4.8.1/libffi/src/powerpc/linux64_closure.S	2013-06-24 19:09:22.878901000 -0500
+@@ -132,7 +132,11 @@
+ 	blr
+ 	nop
+ # case FFI_TYPE_INT
++#ifdef __LITTLE_ENDIAN__
++	lwa %r3, 112+0(%r1)
++#else
+ 	lwa %r3, 112+4(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1, %r1, 240
+ 	blr
+@@ -152,33 +156,57 @@
+ 	lfd %f2, 112+8(%r1)
+ 	b .Lfinish
+ # case FFI_TYPE_UINT8
++#ifdef __LITTLE_ENDIAN__
++	lbz %r3, 112+0(%r1)
++#else
+ 	lbz %r3, 112+7(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1, %r1, 240
+ 	blr
+ # case FFI_TYPE_SINT8
++#ifdef __LITTLE_ENDIAN__
++	lbz %r3, 112+0(%r1)
++#else
+ 	lbz %r3, 112+7(%r1)
++#endif
+ 	extsb %r3,%r3
+ 	mtlr %r0
+ 	b .Lfinish
+ # case FFI_TYPE_UINT16
++#ifdef __LITTLE_ENDIAN__
++	lhz %r3, 112+0(%r1)
++#else
+ 	lhz %r3, 112+6(%r1)
++#endif
+ 	mtlr %r0
+ .Lfinish:
+ 	addi %r1, %r1, 240
+ 	blr
+ # case FFI_TYPE_SINT16
++#ifdef __LITTLE_ENDIAN__
++	lha %r3, 112+0(%r1)
++#else
+ 	lha %r3, 112+6(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1, %r1, 240
+ 	blr
+ # case FFI_TYPE_UINT32
++#ifdef __LITTLE_ENDIAN__
++	lwz %r3, 112+0(%r1)
++#else
+ 	lwz %r3, 112+4(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1, %r1, 240
+ 	blr
+ # case FFI_TYPE_SINT32
++#ifdef __LITTLE_ENDIAN__
++	lwa %r3, 112+0(%r1)
++#else
+ 	lwa %r3, 112+4(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1, %r1, 240
+ 	blr
+diff -Naur gcc-4.8.1.orig/libffi/src/powerpc/ppc_closure.S gcc-4.8.1/libffi/src/powerpc/ppc_closure.S
+--- gcc-4.8.1.orig/libffi/src/powerpc/ppc_closure.S	2012-03-04 15:11:09.000000000 -0600
++++ gcc-4.8.1/libffi/src/powerpc/ppc_closure.S	2013-06-24 19:09:22.878901000 -0500
+@@ -159,25 +159,41 @@
+ #endif
+ 
+ # case FFI_TYPE_UINT8
++#ifdef __LITTLE_ENDIAN__
++	lbz %r3,112+0(%r1)
++#else
+ 	lbz %r3,112+3(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1,%r1,144
+ 	blr
+ 
+ # case FFI_TYPE_SINT8
++#ifdef __LITTLE_ENDIAN__
++	lbz %r3,112+0(%r1)
++#else
+ 	lbz %r3,112+3(%r1)
++#endif
+ 	extsb %r3,%r3
+ 	mtlr %r0
+ 	b .Lfinish
+ 
+ # case FFI_TYPE_UINT16
++#ifdef __LITTLE_ENDIAN__
++	lhz %r3,112+0(%r1)
++#else
+ 	lhz %r3,112+2(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1,%r1,144
+ 	blr
+ 
+ # case FFI_TYPE_SINT16
++#ifdef __LITTLE_ENDIAN__
++	lha %r3,112+0(%r1)
++#else
+ 	lha %r3,112+2(%r1)
++#endif
+ 	mtlr %r0
+ 	addi %r1,%r1,144
+ 	blr
+@@ -239,9 +255,15 @@
+ 
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 3. Three byte struct.
+ 	lwz %r3,112+0(%r1)
++#ifdef __LITTLE_ENDIAN__
++	mtlr %r0
++	addi %r1,%r1,144
++	blr
++#else
+ 	srwi %r3,%r3,8
+ 	mtlr %r0
+ 	b .Lfinish
++#endif
+ 
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 4. Four byte struct.
+ 	lwz %r3,112+0(%r1)
+@@ -252,20 +274,35 @@
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 5. Five byte struct.
+ 	lwz %r3,112+0(%r1)
+ 	lwz %r4,112+4(%r1)
++#ifdef __LITTLE_ENDIAN__
++	mtlr %r0
++	b .Lfinish
++#else
+ 	li %r5,24
+ 	b .Lstruct567
++#endif
+ 
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 6. Six byte struct.
+ 	lwz %r3,112+0(%r1)
+ 	lwz %r4,112+4(%r1)
++#ifdef __LITTLE_ENDIAN__
++	mtlr %r0
++	b .Lfinish
++#else
+ 	li %r5,16
+ 	b .Lstruct567
++#endif
+ 
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 7. Seven byte struct.
+ 	lwz %r3,112+0(%r1)
+ 	lwz %r4,112+4(%r1)
++#ifdef __LITTLE_ENDIAN__
++	mtlr %r0
++	b .Lfinish
++#else
+ 	li %r5,8
+ 	b .Lstruct567
++#endif
+ 
+ # case FFI_SYSV_TYPE_SMALL_STRUCT + 8. Eight byte struct.
+ 	lwz %r3,112+0(%r1)
+@@ -273,6 +310,7 @@
+ 	mtlr %r0
+ 	b .Lfinish
+ 
++#ifndef __LITTLE_ENDIAN__
+ .Lstruct567:
+ 	subfic %r6,%r5,32
+ 	srw %r4,%r4,%r5
+@@ -282,6 +320,7 @@
+ 	mtlr %r0
+ 	addi %r1,%r1,144
+ 	blr
++#endif
+ 
+ .Luint128:
+ 	lwz %r6,112+12(%r1)
+diff -Naur gcc-4.8.1.orig/libgcc/config/aarch64/sfp-machine.h gcc-4.8.1/libgcc/config/aarch64/sfp-machine.h
+--- gcc-4.8.1.orig/libgcc/config/aarch64/sfp-machine.h	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/aarch64/sfp-machine.h	2013-08-01 16:15:18.425750000 -0500
+@@ -2,21 +2,26 @@
+    Copyright (C) 2009-2013 Free Software Foundation, Inc.
+    Contributed by ARM Ltd.
+ 
+-   This file is part of GCC.
++This file is part of GCC.
+ 
+-   GCC 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 3, or (at your option)
+-   any later version.
+-
+-   GCC 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 GCC; see the file COPYING3.  If not see
+-   <http://www.gnu.org/licenses/>.  */
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
+ 
+ #define _FP_W_TYPE_SIZE		64
+ #define _FP_W_TYPE		unsigned long
+diff -Naur gcc-4.8.1.orig/libgcc/config/aarch64/sync-cache.c gcc-4.8.1/libgcc/config/aarch64/sync-cache.c
+--- gcc-4.8.1.orig/libgcc/config/aarch64/sync-cache.c	2013-03-01 08:01:58.000000000 -0600
++++ gcc-4.8.1/libgcc/config/aarch64/sync-cache.c	2013-08-01 16:15:18.425750000 -0500
+@@ -2,21 +2,26 @@
+    Copyright (C) 2012-2013 Free Software Foundation, Inc.
+    Contributed by ARM Ltd.
+ 
+-   This file is part of GCC.
++This file is part of GCC.
+ 
+-   GCC 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 3, or (at your option)
+-   any later version.
+-
+-   GCC 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 GCC; see the file COPYING3.  If not see
+-   <http://www.gnu.org/licenses/>.  */
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
+ 
+ void __aarch64_sync_cache_range (const void *, const void *);
+ 
+diff -Naur gcc-4.8.1.orig/libgcc/config/avr/lib1funcs-fixed.S gcc-4.8.1/libgcc/config/avr/lib1funcs-fixed.S
+--- gcc-4.8.1.orig/libgcc/config/avr/lib1funcs-fixed.S	2013-02-12 08:55:16.000000000 -0600
++++ gcc-4.8.1/libgcc/config/avr/lib1funcs-fixed.S	2013-07-19 06:15:26.382992000 -0500
+@@ -1464,12 +1464,13 @@
+     ;; Add-Saturate 2^{-RP-1}
+     add     A0, C0
+     brvc 0f
+-    ldi     A0, 0x7f
++    ldi     C0, 0x7f
++    rjmp 9f
+ 0:  ;; Mask out bits beyond RP
+     lsl     C0
+     neg     C0
+     and     C0, A0
+-    mov     C1, __tmp_reg__
++9:  mov     C1, __tmp_reg__
+     ret
+ ENDF  __roundqq3
+ #endif /* L_roundqq3 */
+@@ -1488,12 +1489,13 @@
+     ;; Add-Saturate 2^{-RP-1}
+     add     A0, C0
+     brcc 0f
+-    ldi     A0, 0xff
++    ldi     C0, 0xff
++    rjmp 9f
+ 0:  ;; Mask out bits beyond RP
+     lsl     C0
+     neg     C0
+     and     C0, A0
+-    mov     C1, __tmp_reg__
++9:  mov     C1, __tmp_reg__
+     ret
+ ENDF  __rounduqq3
+ #endif /* L_rounduqq3 */
+@@ -1565,16 +1567,17 @@
+ 
+ DEFUN  __round_s2_const
+     brvc 2f
+-    ldi     A1, 0x7f
++    ldi     C1, 0x7f
+     rjmp 1f
+     ;; FALLTHRU (Barrier)
+ ENDF  __round_s2_const
+ 
+ DEFUN __round_u2_const
+     brcc 2f
+-    ldi     A1, 0xff
++    ldi     C1, 0xff
+ 1:
+-    ldi     A0, 0xff
++    ldi     C0, 0xff
++    rjmp 9f
+ 2:
+     ;; Saturation is performed now.
+     ;; Currently, we have C[] = 2^{-RP-1}
+@@ -1586,7 +1589,7 @@
+     ;; Clear the bits beyond the rounding point.
+     and     C0, A0
+     and     C1, A1
+-    ret
++9:  ret
+ ENDF  __round_u2_const
+ 
+ #endif /* L_round_2_const */
+@@ -1681,18 +1684,19 @@
+ 
+ DEFUN  __round_s4_const
+     brvc 2f
+-    ldi     A3, 0x7f
++    ldi     C3, 0x7f
+     rjmp 1f
+     ;; FALLTHRU (Barrier)
+ ENDF  __round_s4_const
+ 
+ DEFUN __round_u4_const
+     brcc 2f
+-    ldi     A3, 0xff
++    ldi     C3, 0xff
+ 1:
+-    ldi     A2, 0xff
+-    ldi     A1, 0xff
+-    ldi     A0, 0xff
++    ldi     C2, 0xff
++    ldi     C1, 0xff
++    ldi     C0, 0xff
++    rjmp 9f
+ 2:
+     ;; Saturation is performed now.
+     ;; Currently, we have C[] = 2^{-RP-1}
+@@ -1707,7 +1711,7 @@
+     and     C1, A1
+     and     C2, A2
+     and     C3, A3
+-    ret
++9:  ret
+ ENDF  __round_u4_const
+ 
+ #endif /* L_round_4_const */
+@@ -1847,12 +1851,13 @@
+ 1:  ;; Unsigned
+     brcc    3f
+     ;; Unsigned overflow: A[] = 0xff...
+-2:  ldi     A7, 0xff
+-    ldi     A6, 0xff
+-    wmov    A0, A6
+-    wmov    A2, A6
+-    wmov    A4, A6
+-    bld     A7, 7
++2:  ldi     C7, 0xff
++    ldi     C6, 0xff
++    wmov    C0, C6
++    wmov    C2, C6
++    wmov    C4, C6
++    bld     C7, 7
++    rjmp 9f
+ 3:
+     ;;  C[] = -C[] - C[]
+     push    A0
+@@ -1869,7 +1874,7 @@
+     and     C5, A5
+     and     C6, A6
+     and     C7, A7
+-    ;; Epilogue
++9:  ;; Epilogue
+     pop r29
+     pop r28
+     pop r17
+diff -Naur gcc-4.8.1.orig/libgcc/config/i386/cpuinfo.c gcc-4.8.1/libgcc/config/i386/cpuinfo.c
+--- gcc-4.8.1.orig/libgcc/config/i386/cpuinfo.c	2013-03-07 19:02:29.000000000 -0600
++++ gcc-4.8.1/libgcc/config/i386/cpuinfo.c	2013-08-01 16:15:18.425750000 -0500
+@@ -14,9 +14,14 @@
+ 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 GCC; see the file COPYING3.  If not see
+-<http://www.gnu.org/licenses/>. */
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
+ 
+ #include "cpuid.h"
+ #include "tsystem.h"
+diff -Naur gcc-4.8.1.orig/libgcc/config/ia64/unwind-ia64.h gcc-4.8.1/libgcc/config/ia64/unwind-ia64.h
+--- gcc-4.8.1.orig/libgcc/config/ia64/unwind-ia64.h	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/ia64/unwind-ia64.h	2013-08-01 16:15:18.425750000 -0500
+@@ -2,21 +2,26 @@
+    Contributed by Andrew MacLeod  <amacleod@cygnus.com>
+                   Andrew Haley  <aph@cygnus.com>
+ 
+-   This file is part of GCC.
++This file is part of GCC.
+ 
+-   GCC 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 3, or (at your option)
+-   any later version.
+-
+-   GCC 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 GCC; see the file COPYING3.  If not see
+-   <http://www.gnu.org/licenses/>.  */
++GCC 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 3, or (at your option) any later
++version.
++
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
+ 
+ #ifdef __VMS__
+ /* On VMS, long is a 32 bit type.  */
+diff -Naur gcc-4.8.1.orig/libgcc/config/mips/vr4120-div.S gcc-4.8.1/libgcc/config/mips/vr4120-div.S
+--- gcc-4.8.1.orig/libgcc/config/mips/vr4120-div.S	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/mips/vr4120-div.S	2013-08-01 16:15:18.425750000 -0500
+@@ -3,18 +3,23 @@
+ 
+ This file is part of GCC.
+ 
+-GCC 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 3, or (at your option)
+-any later version.
+-
+-GCC 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.
++GCC 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 3, or (at your option) any later
++version.
+ 
+-You should have received a copy of the GNU General Public License
+-	along with GCC; see the file COPYING3.  If not see
++GCC 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* This file contains functions which implement divsi3 and modsi3 for
+diff -Naur gcc-4.8.1.orig/libgcc/config/rs6000/ibm-ldouble.c gcc-4.8.1/libgcc/config/rs6000/ibm-ldouble.c
+--- gcc-4.8.1.orig/libgcc/config/rs6000/ibm-ldouble.c	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/rs6000/ibm-ldouble.c	2013-06-18 20:18:38.348158000 -0500
+@@ -42,10 +42,10 @@
+    represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
+    NaN is don't-care.
+ 
+-   This code currently assumes big-endian.  */
++   This code currently assumes the most significant double is in
++   the lower numbered register or lower addressed memory.  */
+ 
+-#if (!defined (__LITTLE_ENDIAN__) \
+-     && (defined (__MACH__) || defined (__powerpc__) || defined (_AIX)))
++#if defined (__MACH__) || defined (__powerpc__) || defined (_AIX)
+ 
+ #define fabs(x) __builtin_fabs(x)
+ #define isless(x, y) __builtin_isless (x, y)
+diff -Naur gcc-4.8.1.orig/libgcc/config/s390/linux-unwind.h gcc-4.8.1/libgcc/config/s390/linux-unwind.h
+--- gcc-4.8.1.orig/libgcc/config/s390/linux-unwind.h	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/s390/linux-unwind.h	2013-07-31 02:24:06.307503000 -0500
+@@ -31,6 +31,8 @@
+ s390_fallback_frame_state (struct _Unwind_Context *context,
+ 			   _Unwind_FrameState *fs)
+ {
++  static const unsigned char dwarf_to_fpr_map[16] =
++    { 0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15 };
+   unsigned char *pc = context->ra;
+   long new_cfa;
+   int i;
+@@ -112,7 +114,7 @@
+     {
+       fs->regs.reg[16+i].how = REG_SAVED_OFFSET;
+       fs->regs.reg[16+i].loc.offset =
+-	(long)&regs->fprs[i] - new_cfa;
++	(long)&regs->fprs[dwarf_to_fpr_map[i]] - new_cfa;
+     }
+ 
+   /* Load return addr from PSW into dummy register 32.  */
+diff -Naur gcc-4.8.1.orig/libgcc/config/tilepro/atomic.h gcc-4.8.1/libgcc/config/tilepro/atomic.h
+--- gcc-4.8.1.orig/libgcc/config/tilepro/atomic.h	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config/tilepro/atomic.h	2013-06-08 11:30:50.617938000 -0500
+@@ -92,8 +92,6 @@
+    compare-and-exchange routine, so may be potentially less efficient.  */
+ #endif
+ 
+-#include <stdint.h>
+-#include <features.h>
+ #ifdef __tilegx__
+ #include <arch/spr_def.h>
+ #else
+@@ -122,9 +120,9 @@
+ 
+ /* 64-bit integer compare-and-exchange.  */
+ static __inline __attribute__ ((always_inline))
+-     int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem,
+-						     int64_t oldval,
+-						     int64_t newval)
++     long long arch_atomic_val_compare_and_exchange_8 (volatile long long
++						       *mem, long long oldval,
++						       long long newval)
+ {
+ #ifdef __tilegx__
+   __insn_mtspr (SPR_CMPEXCH_VALUE, oldval);
+@@ -139,7 +137,7 @@
+ 			"R04" (newval_lo), "R05" (newval_hi),
+ 			"m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25",
+ 			"r26", "r27", "r28", "r29", "memory");
+-  return ((uint64_t) result_hi) << 32 | result_lo;
++  return ((long long) result_hi) << 32 | result_lo;
+ #endif
+ }
+ 
+@@ -150,11 +148,11 @@
+ 
+ 
+ #define arch_atomic_val_compare_and_exchange(mem, o, n)                 \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
+       ((sizeof(*(mem)) == 8) ?                                          \
+        arch_atomic_val_compare_and_exchange_8(                          \
+-         (volatile int64_t*)(mem), (__typeof((o)-(o)))(o),              \
++         (volatile long long*)(mem), (__typeof((o)-(o)))(o),            \
+          (__typeof((n)-(n)))(n)) :                                      \
+        (sizeof(*(mem)) == 4) ?                                          \
+        arch_atomic_val_compare_and_exchange_4(                          \
+@@ -164,7 +162,7 @@
+   })
+ 
+ #define arch_atomic_bool_compare_and_exchange(mem, o, n)                \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     __typeof(o) __o = (o);                                              \
+     __builtin_expect(                                                   \
+       __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \
+@@ -174,7 +172,7 @@
+ /* Loop with compare_and_exchange until we guess the correct value.
+    Normally "expr" will be an expression using __old and __value.  */
+ #define __arch_atomic_update_cmpxchg(mem, value, expr)                  \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     __typeof(value) __value = (value);                                  \
+     __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess;           \
+     do {                                                                \
+@@ -189,12 +187,14 @@
+ /* Generic atomic op with 8- or 4-byte variant.
+    The _mask, _addend, and _expr arguments are ignored on tilegx.  */
+ #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr)     \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     ((__typeof(*(mem)))                                                 \
+      ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op(     \
+-        (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) :   \
++        (volatile void *)(mem),                                         \
++        (long long)(__typeof((value)-(value)))(value)) :                \
+       (sizeof(*(mem)) == 4) ? (int)__insn_##op##4(                      \
+-        (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) :   \
++        (volatile void *)(mem),                                         \
++        (int)(__typeof((value)-(value)))(value)) :                      \
+       __arch_atomic_error_bad_argument_size()));                        \
+   })
+ 
+@@ -224,7 +224,7 @@
+ /* Generic atomic op with 8- or 4-byte variant.
+    The _op argument is ignored on tilepro.  */
+ #define __arch_atomic_update(mem, value, _op, mask, addend, expr)       \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
+       ((sizeof(*(mem)) == 8) ?                                          \
+        __arch_atomic_update_cmpxchg((mem), (value), (expr)) :           \
+@@ -263,13 +263,13 @@
+   __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value))
+ 
+ #define arch_atomic_bit_set(mem, bit)                                   \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
+     __mask & arch_atomic_or((mem), __mask);                             \
+   })
+ 
+ #define arch_atomic_bit_clear(mem, bit)                                 \
+-  ({                                                                    \
++  __extension__ ({                                                      \
+     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
+     __mask & arch_atomic_and((mem), ~__mask);                           \
+   })
+diff -Naur gcc-4.8.1.orig/libgcc/config.host gcc-4.8.1/libgcc/config.host
+--- gcc-4.8.1.orig/libgcc/config.host	2013-02-04 13:06:20.000000000 -0600
++++ gcc-4.8.1/libgcc/config.host	2013-07-09 16:35:57.248336000 -0500
+@@ -316,7 +316,7 @@
+ 	md_unwind_header=alpha/vms-unwind.h
+ 	;;
+ arm-wrs-vxworks)
+-	tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
++	tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
+ 	extra_parts="$extra_parts crti.o crtn.o"
+ 	;;
+ arm*-*-netbsdelf*)
+@@ -834,7 +834,7 @@
+ 	tmake_file="$tmake_file rs6000/t-netbsd rs6000/t-crtstuff"
+ 	;;
+ powerpc-*-eabispe*)
+-	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff t-crtstuff-pic"
++	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff t-crtstuff-pic t-fdpbit"
+ 	extra_parts="$extra_parts crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o ecrti.o ecrtn.o ncrti.o ncrtn.o"
+ 	;;
+ powerpc-*-eabisimaltivec*)
+@@ -865,7 +865,7 @@
+ 	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff t-crtstuff-pic t-fdpbit"
+ 	extra_parts="$extra_parts crtbeginS.o crtendS.o crtbeginT.o ecrti.o ecrtn.o ncrti.o ncrtn.o"
+ 	;;
+-powerpc-*-linux* | powerpc64-*-linux*)
++powerpc*-*-linux*)
+ 	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-linux t-softfp-sfdf t-softfp-excl t-dfprules rs6000/t-ppc64-fp t-softfp t-slibgcc-libgcc"
+ 	extra_parts="$extra_parts ecrti.o ecrtn.o ncrti.o ncrtn.o"
+ 	md_unwind_header=rs6000/linux-unwind.h
+diff -Naur gcc-4.8.1.orig/libgcc/unwind-dw2.c gcc-4.8.1/libgcc/unwind-dw2.c
+--- gcc-4.8.1.orig/libgcc/unwind-dw2.c	2013-03-14 04:13:36.000000000 -0500
++++ gcc-4.8.1/libgcc/unwind-dw2.c	2013-05-31 18:21:46.982106000 -0500
+@@ -59,6 +59,35 @@
+ #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
+ #endif
+ 
++/* ??? For the public function interfaces, we tend to gcc_assert that the
++   column numbers are in range.  For the dwarf2 unwind info this does happen,
++   although so far in a case that doesn't actually matter.
++
++   See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
++   the call-saved xmm registers and annotates them.  We havn't bothered
++   providing support for the xmm registers for the x86_64 port primarily
++   because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
++   SEH instead.  Adding the support for unix targets would generally be a
++   waste.  However, some runtime libraries supplied with ICC do contain such
++   an unorthodox transition, as well as the unwind info to match.  This loss
++   of register restoration doesn't matter in practice, because the exception
++   is caught in the native unix abi, where all of the xmm registers are 
++   call clobbered.
++
++   Ideally, we'd record some bit to notice when we're failing to restore some
++   register recorded in the unwind info, but to do that we need annotation on
++   the unix->ms abi edge, so that we know when the register data may be
++   discarded.  And since this edge is also within the ICC library, we're
++   unlikely to be able to get the new annotation.
++
++   Barring a magic solution to restore the ms abi defined 128-bit xmm registers
++   (as distictly opposed to the full runtime width) without causing extra
++   overhead for normal unix abis, the best solution seems to be to simply
++   ignore unwind data for unknown columns.  */
++
++#define UNWIND_COLUMN_IN_RANGE(x) \
++    __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1)
++
+ #ifdef REG_VALUE_IN_UNWIND_CONTEXT
+ typedef _Unwind_Word _Unwind_Context_Reg_Val;
+ 
+@@ -939,14 +968,19 @@
+ 	  reg = insn & 0x3f;
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  offset = (_Unwind_Sword) utmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
++	      fs->regs.reg[reg].loc.offset = offset;
++	    }
+ 	}
+       else if ((insn & 0xc0) == DW_CFA_restore)
+ 	{
+ 	  reg = insn & 0x3f;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_UNSAVED;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    fs->regs.reg[reg].how = REG_UNSAVED;
+ 	}
+       else switch (insn)
+ 	{
+@@ -977,26 +1011,35 @@
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  offset = (_Unwind_Sword) utmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
++	      fs->regs.reg[reg].loc.offset = offset;
++	    }
+ 	  break;
+ 
+ 	case DW_CFA_restore_extended:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  /* FIXME, this is wrong; the CIE might have said that the
+ 	     register was saved somewhere.  */
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    fs->regs.reg[reg].how = REG_UNSAVED;
+ 	  break;
+ 
+ 	case DW_CFA_same_value:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    fs->regs.reg[reg].how = REG_UNSAVED;
+ 	  break;
+ 
+ 	case DW_CFA_undefined:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNDEFINED;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    fs->regs.reg[reg].how = REG_UNDEFINED;
+ 	  break;
+ 
+ 	case DW_CFA_nop:
+@@ -1007,9 +1050,12 @@
+ 	    _uleb128_t reg2;
+ 	    insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	    insn_ptr = read_uleb128 (insn_ptr, &reg2);
+-	    fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_REG;
+-	    fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.reg =
+-	      (_Unwind_Word)reg2;
++	    reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	    if (UNWIND_COLUMN_IN_RANGE (reg))
++	      {
++	        fs->regs.reg[reg].how = REG_SAVED_REG;
++	        fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2;
++	      }
+ 	  }
+ 	  break;
+ 
+@@ -1067,8 +1113,12 @@
+ 
+ 	case DW_CFA_expression:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_EXP;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_EXP;
++	      fs->regs.reg[reg].loc.exp = insn_ptr;
++	    }
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  insn_ptr += utmp;
+ 	  break;
+@@ -1078,9 +1128,12 @@
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  insn_ptr = read_sleb128 (insn_ptr, &stmp);
+ 	  offset = stmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
++	      fs->regs.reg[reg].loc.offset = offset;
++	    }
+ 	  break;
+ 
+ 	case DW_CFA_def_cfa_sf:
+@@ -1103,25 +1156,34 @@
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  offset = (_Unwind_Sword) utmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_VAL_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
++	      fs->regs.reg[reg].loc.offset = offset;
++	    }
+ 	  break;
+ 
+ 	case DW_CFA_val_offset_sf:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  insn_ptr = read_sleb128 (insn_ptr, &stmp);
+ 	  offset = stmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_VAL_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
++	      fs->regs.reg[reg].loc.offset = offset;
++	    }
+ 	  break;
+ 
+ 	case DW_CFA_val_expression:
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_VAL_EXP;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_VAL_EXP;
++	      fs->regs.reg[reg].loc.exp = insn_ptr;
++	    }
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  insn_ptr += utmp;
+ 	  break;
+@@ -1147,9 +1209,12 @@
+ 	  insn_ptr = read_uleb128 (insn_ptr, &reg);
+ 	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
+ 	  offset = (_Unwind_Word) utmp * fs->data_align;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
+-	    = REG_SAVED_OFFSET;
+-	  fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = -offset;
++	  reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
++	  if (UNWIND_COLUMN_IN_RANGE (reg))
++	    {
++	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
++	      fs->regs.reg[reg].loc.offset = -offset;
++	    }
+ 	  break;
+ 
+ 	default:
+diff -Naur gcc-4.8.1.orig/libgfortran/config/fpu-387.h gcc-4.8.1/libgfortran/config/fpu-387.h
+--- gcc-4.8.1.orig/libgfortran/config/fpu-387.h	2013-01-14 12:20:58.000000000 -0600
++++ gcc-4.8.1/libgfortran/config/fpu-387.h	2013-06-21 08:25:46.124005000 -0500
+@@ -73,7 +73,7 @@
+ 
+       /* We need a single SSE instruction here so the handler can safely skip
+ 	 over it.  */
+-      __asm__ volatile ("movaps %xmm0,%xmm0");
++      __asm__ __volatile__ ("movaps\t%xmm0,%xmm0");
+ 
+       sigaction (SIGILL, &oact, NULL);
+ 
+@@ -95,42 +95,42 @@
+ #define _FPU_MASK_OM  0x08
+ #define _FPU_MASK_UM  0x10
+ #define _FPU_MASK_PM  0x20
++#define _FPU_MASK_ALL 0x3f
++
++#define _FPU_EX_ALL   0x3f
+ 
+ void set_fpu (void)
+ {
++  int excepts = 0;
+   unsigned short cw;
+ 
+-  asm volatile ("fnstcw %0" : "=m" (cw));
++  __asm__ __volatile__ ("fstcw\t%0" : "=m" (cw));
+ 
+-  cw |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM
+-	 | _FPU_MASK_UM | _FPU_MASK_PM);
++  if (options.fpe & GFC_FPE_INVALID) excepts |= _FPU_MASK_IM;
++  if (options.fpe & GFC_FPE_DENORMAL) excepts |= _FPU_MASK_DM;
++  if (options.fpe & GFC_FPE_ZERO) excepts |= _FPU_MASK_ZM;
++  if (options.fpe & GFC_FPE_OVERFLOW) excepts |= _FPU_MASK_OM;
++  if (options.fpe & GFC_FPE_UNDERFLOW) excepts |= _FPU_MASK_UM;
++  if (options.fpe & GFC_FPE_INEXACT) excepts |= _FPU_MASK_PM;
+ 
+-  if (options.fpe & GFC_FPE_INVALID) cw &= ~_FPU_MASK_IM;
+-  if (options.fpe & GFC_FPE_DENORMAL) cw &= ~_FPU_MASK_DM;
+-  if (options.fpe & GFC_FPE_ZERO) cw &= ~_FPU_MASK_ZM;
+-  if (options.fpe & GFC_FPE_OVERFLOW) cw &= ~_FPU_MASK_OM;
+-  if (options.fpe & GFC_FPE_UNDERFLOW) cw &= ~_FPU_MASK_UM;
+-  if (options.fpe & GFC_FPE_INEXACT) cw &= ~_FPU_MASK_PM;
++  cw |= _FPU_MASK_ALL;
++  cw &= ~excepts;
+ 
+-  asm volatile ("fldcw %0" : : "m" (cw));
++  __asm__ __volatile__ ("fnclex\n\tfldcw\t%0" : : "m" (cw));
+ 
+   if (has_sse())
+     {
+       unsigned int cw_sse;
+ 
+-      asm volatile ("%vstmxcsr %0" : "=m" (cw_sse));
++      __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (cw_sse));
++
++      /* The SSE exception masks are shifted by 7 bits.  */
++      cw_sse |= _FPU_MASK_ALL << 7;
++      cw_sse &= ~(excepts << 7);
+ 
+-      cw_sse &= 0xffff0000;
+-      cw_sse |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM
+-		 | _FPU_MASK_UM | _FPU_MASK_PM ) << 7;
+-
+-      if (options.fpe & GFC_FPE_INVALID) cw_sse &= ~(_FPU_MASK_IM << 7);
+-      if (options.fpe & GFC_FPE_DENORMAL) cw_sse &= ~(_FPU_MASK_DM << 7);
+-      if (options.fpe & GFC_FPE_ZERO) cw_sse &= ~(_FPU_MASK_ZM << 7);
+-      if (options.fpe & GFC_FPE_OVERFLOW) cw_sse &= ~(_FPU_MASK_OM << 7);
+-      if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse &= ~(_FPU_MASK_UM << 7);
+-      if (options.fpe & GFC_FPE_INEXACT) cw_sse &= ~(_FPU_MASK_PM << 7);
++      /* Clear stalled exception flags.  */
++      cw_sse &= ~_FPU_EX_ALL;
+ 
+-      asm volatile ("%vldmxcsr %0" : : "m" (cw_sse));
++      __asm__ __volatile__ ("%vldmxcsr\t%0" : : "m" (cw_sse));
+     }
+ }
+diff -Naur gcc-4.8.1.orig/libgo/configure gcc-4.8.1/libgo/configure
+--- gcc-4.8.1.orig/libgo/configure	2013-02-11 13:03:04.000000000 -0600
++++ gcc-4.8.1/libgo/configure	2013-06-18 18:50:42.020320000 -0500
+@@ -2496,7 +2496,7 @@
+ ac_config_headers="$ac_config_headers config.h"
+ 
+ 
+-libtool_VERSION=3:1:0
++libtool_VERSION=4:0:0
+ 
+ 
+ # Default to --enable-multilib
+diff -Naur gcc-4.8.1.orig/libgo/configure.ac gcc-4.8.1/libgo/configure.ac
+--- gcc-4.8.1.orig/libgo/configure.ac	2013-02-11 13:03:04.000000000 -0600
++++ gcc-4.8.1/libgo/configure.ac	2013-06-18 18:50:42.020320000 -0500
+@@ -11,7 +11,7 @@
+ AC_CONFIG_SRCDIR(Makefile.am)
+ AC_CONFIG_HEADER(config.h)
+ 
+-libtool_VERSION=3:1:0
++libtool_VERSION=4:0:0
+ AC_SUBST(libtool_VERSION)
+ 
+ AM_ENABLE_MULTILIB(, ..)
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/common.go gcc-4.8.1/libgo/go/archive/tar/common.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/common.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/archive/tar/common.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,12 +9,14 @@
+ // References:
+ //   http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5
+ //   http://www.gnu.org/software/tar/manual/html_node/Standard.html
++//   http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html
+ package tar
+ 
+ import (
+ 	"errors"
+ 	"fmt"
+ 	"os"
++	"path"
+ 	"time"
+ )
+ 
+@@ -33,6 +35,8 @@
+ 	TypeCont          = '7'    // reserved
+ 	TypeXHeader       = 'x'    // extended header
+ 	TypeXGlobalHeader = 'g'    // global extended header
++	TypeGNULongName   = 'L'    // Next file has a long name
++	TypeGNULongLink   = 'K'    // Next file symlinks to a file w/ a long name
+ )
+ 
+ // A Header represents a single header in a tar archive.
+@@ -54,55 +58,172 @@
+ 	ChangeTime time.Time // status change time
+ }
+ 
++// File name constants from the tar spec.
++const (
++	fileNameSize       = 100 // Maximum number of bytes in a standard tar name.
++	fileNamePrefixSize = 155 // Maximum number of ustar extension bytes.
++)
++
++// FileInfo returns an os.FileInfo for the Header.
++func (h *Header) FileInfo() os.FileInfo {
++	return headerFileInfo{h}
++}
++
++// headerFileInfo implements os.FileInfo.
++type headerFileInfo struct {
++	h *Header
++}
++
++func (fi headerFileInfo) Size() int64        { return fi.h.Size }
++func (fi headerFileInfo) IsDir() bool        { return fi.Mode().IsDir() }
++func (fi headerFileInfo) ModTime() time.Time { return fi.h.ModTime }
++func (fi headerFileInfo) Sys() interface{}   { return fi.h }
++
++// Name returns the base name of the file.
++func (fi headerFileInfo) Name() string {
++	if fi.IsDir() {
++		return path.Clean(fi.h.Name)
++	}
++	return fi.h.Name
++}
++
++// Mode returns the permission and mode bits for the headerFileInfo.
++func (fi headerFileInfo) Mode() (mode os.FileMode) {
++	// Set file permission bits.
++	mode = os.FileMode(fi.h.Mode).Perm()
++
++	// Set setuid, setgid and sticky bits.
++	if fi.h.Mode&c_ISUID != 0 {
++		// setuid
++		mode |= os.ModeSetuid
++	}
++	if fi.h.Mode&c_ISGID != 0 {
++		// setgid
++		mode |= os.ModeSetgid
++	}
++	if fi.h.Mode&c_ISVTX != 0 {
++		// sticky
++		mode |= os.ModeSticky
++	}
++
++	// Set file mode bits.
++	// clear perm, setuid, setgid and sticky bits.
++	m := os.FileMode(fi.h.Mode) &^ 07777
++	if m == c_ISDIR {
++		// directory
++		mode |= os.ModeDir
++	}
++	if m == c_ISFIFO {
++		// named pipe (FIFO)
++		mode |= os.ModeNamedPipe
++	}
++	if m == c_ISLNK {
++		// symbolic link
++		mode |= os.ModeSymlink
++	}
++	if m == c_ISBLK {
++		// device file
++		mode |= os.ModeDevice
++	}
++	if m == c_ISCHR {
++		// Unix character device
++		mode |= os.ModeDevice
++		mode |= os.ModeCharDevice
++	}
++	if m == c_ISSOCK {
++		// Unix domain socket
++		mode |= os.ModeSocket
++	}
++
++	switch fi.h.Typeflag {
++	case TypeLink, TypeSymlink:
++		// hard link, symbolic link
++		mode |= os.ModeSymlink
++	case TypeChar:
++		// character device node
++		mode |= os.ModeDevice
++		mode |= os.ModeCharDevice
++	case TypeBlock:
++		// block device node
++		mode |= os.ModeDevice
++	case TypeDir:
++		// directory
++		mode |= os.ModeDir
++	case TypeFifo:
++		// fifo node
++		mode |= os.ModeNamedPipe
++	}
++
++	return mode
++}
++
+ // sysStat, if non-nil, populates h from system-dependent fields of fi.
+ var sysStat func(fi os.FileInfo, h *Header) error
+ 
+ // Mode constants from the tar spec.
+ const (
+-	c_ISDIR  = 040000
+-	c_ISFIFO = 010000
+-	c_ISREG  = 0100000
+-	c_ISLNK  = 0120000
+-	c_ISBLK  = 060000
+-	c_ISCHR  = 020000
+-	c_ISSOCK = 0140000
++	c_ISUID  = 04000   // Set uid
++	c_ISGID  = 02000   // Set gid
++	c_ISVTX  = 01000   // Save text (sticky bit)
++	c_ISDIR  = 040000  // Directory
++	c_ISFIFO = 010000  // FIFO
++	c_ISREG  = 0100000 // Regular file
++	c_ISLNK  = 0120000 // Symbolic link
++	c_ISBLK  = 060000  // Block special file
++	c_ISCHR  = 020000  // Character special file
++	c_ISSOCK = 0140000 // Socket
+ )
+ 
+ // FileInfoHeader creates a partially-populated Header from fi.
+ // If fi describes a symlink, FileInfoHeader records link as the link target.
++// If fi describes a directory, a slash is appended to the name.
+ func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {
+ 	if fi == nil {
+ 		return nil, errors.New("tar: FileInfo is nil")
+ 	}
++	fm := fi.Mode()
+ 	h := &Header{
+ 		Name:    fi.Name(),
+ 		ModTime: fi.ModTime(),
+-		Mode:    int64(fi.Mode().Perm()), // or'd with c_IS* constants later
++		Mode:    int64(fm.Perm()), // or'd with c_IS* constants later
+ 	}
+ 	switch {
+-	case fi.Mode()&os.ModeType == 0:
++	case fm.IsRegular():
+ 		h.Mode |= c_ISREG
+ 		h.Typeflag = TypeReg
+ 		h.Size = fi.Size()
+ 	case fi.IsDir():
+ 		h.Typeflag = TypeDir
+ 		h.Mode |= c_ISDIR
+-	case fi.Mode()&os.ModeSymlink != 0:
++		h.Name += "/"
++	case fm&os.ModeSymlink != 0:
+ 		h.Typeflag = TypeSymlink
+ 		h.Mode |= c_ISLNK
+ 		h.Linkname = link
+-	case fi.Mode()&os.ModeDevice != 0:
+-		if fi.Mode()&os.ModeCharDevice != 0 {
++	case fm&os.ModeDevice != 0:
++		if fm&os.ModeCharDevice != 0 {
+ 			h.Mode |= c_ISCHR
+ 			h.Typeflag = TypeChar
+ 		} else {
+ 			h.Mode |= c_ISBLK
+ 			h.Typeflag = TypeBlock
+ 		}
+-	case fi.Mode()&os.ModeSocket != 0:
++	case fm&os.ModeNamedPipe != 0:
++		h.Typeflag = TypeFifo
++		h.Mode |= c_ISFIFO
++	case fm&os.ModeSocket != 0:
+ 		h.Mode |= c_ISSOCK
+ 	default:
+-		return nil, fmt.Errorf("archive/tar: unknown file mode %v", fi.Mode())
++		return nil, fmt.Errorf("archive/tar: unknown file mode %v", fm)
++	}
++	if fm&os.ModeSetuid != 0 {
++		h.Mode |= c_ISUID
++	}
++	if fm&os.ModeSetgid != 0 {
++		h.Mode |= c_ISGID
++	}
++	if fm&os.ModeSticky != 0 {
++		h.Mode |= c_ISVTX
+ 	}
+ 	if sysStat != nil {
+ 		return h, sysStat(fi, h)
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/reader.go gcc-4.8.1/libgo/go/archive/tar/reader.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/reader.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -14,6 +14,7 @@
+ 	"io/ioutil"
+ 	"os"
+ 	"strconv"
++	"strings"
+ 	"time"
+ )
+ 
+@@ -21,24 +22,12 @@
+ 	ErrHeader = errors.New("archive/tar: invalid tar header")
+ )
+ 
++const maxNanoSecondIntSize = 9
++
+ // A Reader provides sequential access to the contents of a tar archive.
+ // A tar archive consists of a sequence of files.
+ // The Next method advances to the next file in the archive (including the first),
+ // and then it can be treated as an io.Reader to access the file's data.
+-//
+-// Example:
+-//	tr := tar.NewReader(r)
+-//	for {
+-//		hdr, err := tr.Next()
+-//		if err == io.EOF {
+-//			// end of tar archive
+-//			break
+-//		}
+-//		if err != nil {
+-//			// handle error
+-//		}
+-//		io.Copy(data, tr)
+-//	}
+ type Reader struct {
+ 	r   io.Reader
+ 	err error
+@@ -55,13 +44,183 @@
+ 	if tr.err == nil {
+ 		tr.skipUnread()
+ 	}
+-	if tr.err == nil {
++	if tr.err != nil {
++		return hdr, tr.err
++	}
++	hdr = tr.readHeader()
++	if hdr == nil {
++		return hdr, tr.err
++	}
++	// Check for PAX/GNU header.
++	switch hdr.Typeflag {
++	case TypeXHeader:
++		//  PAX extended header
++		headers, err := parsePAX(tr)
++		if err != nil {
++			return nil, err
++		}
++		// We actually read the whole file,
++		// but this skips alignment padding
++		tr.skipUnread()
+ 		hdr = tr.readHeader()
++		mergePAX(hdr, headers)
++		return hdr, nil
++	case TypeGNULongName:
++		// We have a GNU long name header. Its contents are the real file name.
++		realname, err := ioutil.ReadAll(tr)
++		if err != nil {
++			return nil, err
++		}
++		hdr, err := tr.Next()
++		hdr.Name = cString(realname)
++		return hdr, err
++	case TypeGNULongLink:
++		// We have a GNU long link header.
++		realname, err := ioutil.ReadAll(tr)
++		if err != nil {
++			return nil, err
++		}
++		hdr, err := tr.Next()
++		hdr.Linkname = cString(realname)
++		return hdr, err
+ 	}
+ 	return hdr, tr.err
+ }
+ 
+-// Parse bytes as a NUL-terminated C-style string.
++// mergePAX merges well known headers according to PAX standard.
++// In general headers with the same name as those found
++// in the header struct overwrite those found in the header
++// struct with higher precision or longer values. Esp. useful
++// for name and linkname fields.
++func mergePAX(hdr *Header, headers map[string]string) error {
++	for k, v := range headers {
++		switch k {
++		case "path":
++			hdr.Name = v
++		case "linkpath":
++			hdr.Linkname = v
++		case "gname":
++			hdr.Gname = v
++		case "uname":
++			hdr.Uname = v
++		case "uid":
++			uid, err := strconv.ParseInt(v, 10, 0)
++			if err != nil {
++				return err
++			}
++			hdr.Uid = int(uid)
++		case "gid":
++			gid, err := strconv.ParseInt(v, 10, 0)
++			if err != nil {
++				return err
++			}
++			hdr.Gid = int(gid)
++		case "atime":
++			t, err := parsePAXTime(v)
++			if err != nil {
++				return err
++			}
++			hdr.AccessTime = t
++		case "mtime":
++			t, err := parsePAXTime(v)
++			if err != nil {
++				return err
++			}
++			hdr.ModTime = t
++		case "ctime":
++			t, err := parsePAXTime(v)
++			if err != nil {
++				return err
++			}
++			hdr.ChangeTime = t
++		case "size":
++			size, err := strconv.ParseInt(v, 10, 0)
++			if err != nil {
++				return err
++			}
++			hdr.Size = int64(size)
++		}
++
++	}
++	return nil
++}
++
++// parsePAXTime takes a string of the form %d.%d as described in
++// the PAX specification.
++func parsePAXTime(t string) (time.Time, error) {
++	buf := []byte(t)
++	pos := bytes.IndexByte(buf, '.')
++	var seconds, nanoseconds int64
++	var err error
++	if pos == -1 {
++		seconds, err = strconv.ParseInt(t, 10, 0)
++		if err != nil {
++			return time.Time{}, err
++		}
++	} else {
++		seconds, err = strconv.ParseInt(string(buf[:pos]), 10, 0)
++		if err != nil {
++			return time.Time{}, err
++		}
++		nano_buf := string(buf[pos+1:])
++		// Pad as needed before converting to a decimal.
++		// For example .030 -> .030000000 -> 30000000 nanoseconds
++		if len(nano_buf) < maxNanoSecondIntSize {
++			// Right pad
++			nano_buf += strings.Repeat("0", maxNanoSecondIntSize-len(nano_buf))
++		} else if len(nano_buf) > maxNanoSecondIntSize {
++			// Right truncate
++			nano_buf = nano_buf[:maxNanoSecondIntSize]
++		}
++		nanoseconds, err = strconv.ParseInt(string(nano_buf), 10, 0)
++		if err != nil {
++			return time.Time{}, err
++		}
++	}
++	ts := time.Unix(seconds, nanoseconds)
++	return ts, nil
++}
++
++// parsePAX parses PAX headers.
++// If an extended header (type 'x') is invalid, ErrHeader is returned
++func parsePAX(r io.Reader) (map[string]string, error) {
++	buf, err := ioutil.ReadAll(r)
++	if err != nil {
++		return nil, err
++	}
++	headers := make(map[string]string)
++	// Each record is constructed as
++	//     "%d %s=%s\n", length, keyword, value
++	for len(buf) > 0 {
++		// or the header was empty to start with.
++		var sp int
++		// The size field ends at the first space.
++		sp = bytes.IndexByte(buf, ' ')
++		if sp == -1 {
++			return nil, ErrHeader
++		}
++		// Parse the first token as a decimal integer.
++		n, err := strconv.ParseInt(string(buf[:sp]), 10, 0)
++		if err != nil {
++			return nil, ErrHeader
++		}
++		// Extract everything between the decimal and the n -1 on the
++		// beginning to to eat the ' ', -1 on the end to skip the newline.
++		var record []byte
++		record, buf = buf[sp+1:n-1], buf[n:]
++		// The first equals is guaranteed to mark the end of the key.
++		// Everything else is value.
++		eq := bytes.IndexByte(record, '=')
++		if eq == -1 {
++			return nil, ErrHeader
++		}
++		key, value := record[:eq], record[eq+1:]
++		headers[string(key)] = string(value)
++	}
++	return headers, nil
++}
++
++// cString parses bytes as a NUL-terminated C-style string.
+ // If a NUL byte is not found then the whole slice is returned as a string.
+ func cString(b []byte) string {
+ 	n := 0
+@@ -99,7 +258,7 @@
+ 	return int64(x)
+ }
+ 
+-// Skip any unread bytes in the existing file entry, as well as any alignment padding.
++// skipUnread skips any unread bytes in the existing file entry, as well as any alignment padding.
+ func (tr *Reader) skipUnread() {
+ 	nr := tr.nb + tr.pad // number of bytes to skip
+ 	tr.nb, tr.pad = 0, 0
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/reader_test.go gcc-4.8.1/libgo/go/archive/tar/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/reader_test.go	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,6 +10,8 @@
+ 	"fmt"
+ 	"io"
+ 	"os"
++	"reflect"
++	"strings"
+ 	"testing"
+ 	"time"
+ )
+@@ -108,6 +110,38 @@
+ 			},
+ 		},
+ 	},
++	{
++		file: "testdata/pax.tar",
++		headers: []*Header{
++			{
++				Name:       "a/123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100",
++				Mode:       0664,
++				Uid:        1000,
++				Gid:        1000,
++				Uname:      "shane",
++				Gname:      "shane",
++				Size:       7,
++				ModTime:    time.Unix(1350244992, 23960108),
++				ChangeTime: time.Unix(1350244992, 23960108),
++				AccessTime: time.Unix(1350244992, 23960108),
++				Typeflag:   TypeReg,
++			},
++			{
++				Name:       "a/b",
++				Mode:       0777,
++				Uid:        1000,
++				Gid:        1000,
++				Uname:      "shane",
++				Gname:      "shane",
++				Size:       0,
++				ModTime:    time.Unix(1350266320, 910238425),
++				ChangeTime: time.Unix(1350266320, 910238425),
++				AccessTime: time.Unix(1350266320, 910238425),
++				Typeflag:   TypeSymlink,
++				Linkname:   "123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100",
++			},
++		},
++	},
+ }
+ 
+ func TestReader(t *testing.T) {
+@@ -133,7 +167,7 @@
+ 		}
+ 		hdr, err := tr.Next()
+ 		if err == io.EOF {
+-			break
++			continue testLoop
+ 		}
+ 		if hdr != nil || err != nil {
+ 			t.Errorf("test %d: Unexpected entry or error: hdr=%v err=%v", i, hdr, err)
+@@ -260,3 +294,73 @@
+ 		t.Errorf("Didn't process all files\nexpected: %d\nprocessed %d\n", len(test.headers), nread)
+ 	}
+ }
++
++func TestParsePAXHeader(t *testing.T) {
++	paxTests := [][3]string{
++		{"a", "a=name", "10 a=name\n"}, // Test case involving multiple acceptable lengths
++		{"a", "a=name", "9 a=name\n"},  // Test case involving multiple acceptable length
++		{"mtime", "mtime=1350244992.023960108", "30 mtime=1350244992.023960108\n"}}
++	for _, test := range paxTests {
++		key, expected, raw := test[0], test[1], test[2]
++		reader := bytes.NewBuffer([]byte(raw))
++		headers, err := parsePAX(reader)
++		if err != nil {
++			t.Errorf("Couldn't parse correctly formatted headers: %v", err)
++			continue
++		}
++		if strings.EqualFold(headers[key], expected) {
++			t.Errorf("mtime header incorrectly parsed: got %s, wanted %s", headers[key], expected)
++			continue
++		}
++		trailer := make([]byte, 100)
++		n, err := reader.Read(trailer)
++		if err != io.EOF || n != 0 {
++			t.Error("Buffer wasn't consumed")
++		}
++	}
++	badHeader := bytes.NewBuffer([]byte("3 somelongkey="))
++	if _, err := parsePAX(badHeader); err != ErrHeader {
++		t.Fatal("Unexpected success when parsing bad header")
++	}
++}
++
++func TestParsePAXTime(t *testing.T) {
++	// Some valid PAX time values
++	timestamps := map[string]time.Time{
++		"1350244992.023960108":  time.Unix(1350244992, 23960108), // The commoon case
++		"1350244992.02396010":   time.Unix(1350244992, 23960100), // Lower precision value
++		"1350244992.0239601089": time.Unix(1350244992, 23960108), // Higher precision value
++		"1350244992":            time.Unix(1350244992, 0),        // Low precision value
++	}
++	for input, expected := range timestamps {
++		ts, err := parsePAXTime(input)
++		if err != nil {
++			t.Fatal(err)
++		}
++		if !ts.Equal(expected) {
++			t.Fatalf("Time parsing failure %s %s", ts, expected)
++		}
++	}
++}
++
++func TestMergePAX(t *testing.T) {
++	hdr := new(Header)
++	// Test a string, integer, and time based value.
++	headers := map[string]string{
++		"path":  "a/b/c",
++		"uid":   "1000",
++		"mtime": "1350244992.023960108",
++	}
++	err := mergePAX(hdr, headers)
++	if err != nil {
++		t.Fatal(err)
++	}
++	want := &Header{
++		Name:    "a/b/c",
++		Uid:     1000,
++		ModTime: time.Unix(1350244992, 23960108),
++	}
++	if !reflect.DeepEqual(hdr, want) {
++		t.Errorf("incorrect merge: got %+v, want %+v", hdr, want)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/tar_test.go gcc-4.8.1/libgo/go/archive/tar/tar_test.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/tar_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/tar_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -14,13 +14,13 @@
+ )
+ 
+ func TestFileInfoHeader(t *testing.T) {
+-	fi, err := os.Lstat("testdata/small.txt")
++	fi, err := os.Stat("testdata/small.txt")
+ 	if err != nil {
+ 		t.Fatal(err)
+ 	}
+ 	h, err := FileInfoHeader(fi, "")
+ 	if err != nil {
+-		t.Fatalf("on small.txt: %v", err)
++		t.Fatalf("FileInfoHeader: %v", err)
+ 	}
+ 	if g, e := h.Name, "small.txt"; g != e {
+ 		t.Errorf("Name = %q; want %q", g, e)
+@@ -36,6 +36,30 @@
+ 	}
+ }
+ 
++func TestFileInfoHeaderDir(t *testing.T) {
++	fi, err := os.Stat("testdata")
++	if err != nil {
++		t.Fatal(err)
++	}
++	h, err := FileInfoHeader(fi, "")
++	if err != nil {
++		t.Fatalf("FileInfoHeader: %v", err)
++	}
++	if g, e := h.Name, "testdata/"; g != e {
++		t.Errorf("Name = %q; want %q", g, e)
++	}
++	// Ignoring c_ISGID for golang.org/issue/4867
++	if g, e := h.Mode&^c_ISGID, int64(fi.Mode().Perm())|c_ISDIR; g != e {
++		t.Errorf("Mode = %#o; want %#o", g, e)
++	}
++	if g, e := h.Size, int64(0); g != e {
++		t.Errorf("Size = %v; want %v", g, e)
++	}
++	if g, e := h.ModTime, fi.ModTime(); !g.Equal(e) {
++		t.Errorf("ModTime = %v; want %v", g, e)
++	}
++}
++
+ func TestFileInfoHeaderSymlink(t *testing.T) {
+ 	h, err := FileInfoHeader(symlink{}, "some-target")
+ 	if err != nil {
+@@ -98,3 +122,150 @@
+ 		t.Errorf("Data mismatch.\n got %q\nwant %q", rData, data)
+ 	}
+ }
++
++type headerRoundTripTest struct {
++	h  *Header
++	fm os.FileMode
++}
++
++func TestHeaderRoundTrip(t *testing.T) {
++	golden := []headerRoundTripTest{
++		// regular file.
++		{
++			h: &Header{
++				Name:     "test.txt",
++				Mode:     0644 | c_ISREG,
++				Size:     12,
++				ModTime:  time.Unix(1360600916, 0),
++				Typeflag: TypeReg,
++			},
++			fm: 0644,
++		},
++		// hard link.
++		{
++			h: &Header{
++				Name:     "hard.txt",
++				Mode:     0644 | c_ISLNK,
++				Size:     0,
++				ModTime:  time.Unix(1360600916, 0),
++				Typeflag: TypeLink,
++			},
++			fm: 0644 | os.ModeSymlink,
++		},
++		// symbolic link.
++		{
++			h: &Header{
++				Name:     "link.txt",
++				Mode:     0777 | c_ISLNK,
++				Size:     0,
++				ModTime:  time.Unix(1360600852, 0),
++				Typeflag: TypeSymlink,
++			},
++			fm: 0777 | os.ModeSymlink,
++		},
++		// character device node.
++		{
++			h: &Header{
++				Name:     "dev/null",
++				Mode:     0666 | c_ISCHR,
++				Size:     0,
++				ModTime:  time.Unix(1360578951, 0),
++				Typeflag: TypeChar,
++			},
++			fm: 0666 | os.ModeDevice | os.ModeCharDevice,
++		},
++		// block device node.
++		{
++			h: &Header{
++				Name:     "dev/sda",
++				Mode:     0660 | c_ISBLK,
++				Size:     0,
++				ModTime:  time.Unix(1360578954, 0),
++				Typeflag: TypeBlock,
++			},
++			fm: 0660 | os.ModeDevice,
++		},
++		// directory.
++		{
++			h: &Header{
++				Name:     "dir/",
++				Mode:     0755 | c_ISDIR,
++				Size:     0,
++				ModTime:  time.Unix(1360601116, 0),
++				Typeflag: TypeDir,
++			},
++			fm: 0755 | os.ModeDir,
++		},
++		// fifo node.
++		{
++			h: &Header{
++				Name:     "dev/initctl",
++				Mode:     0600 | c_ISFIFO,
++				Size:     0,
++				ModTime:  time.Unix(1360578949, 0),
++				Typeflag: TypeFifo,
++			},
++			fm: 0600 | os.ModeNamedPipe,
++		},
++		// setuid.
++		{
++			h: &Header{
++				Name:     "bin/su",
++				Mode:     0755 | c_ISREG | c_ISUID,
++				Size:     23232,
++				ModTime:  time.Unix(1355405093, 0),
++				Typeflag: TypeReg,
++			},
++			fm: 0755 | os.ModeSetuid,
++		},
++		// setguid.
++		{
++			h: &Header{
++				Name:     "group.txt",
++				Mode:     0750 | c_ISREG | c_ISGID,
++				Size:     0,
++				ModTime:  time.Unix(1360602346, 0),
++				Typeflag: TypeReg,
++			},
++			fm: 0750 | os.ModeSetgid,
++		},
++		// sticky.
++		{
++			h: &Header{
++				Name:     "sticky.txt",
++				Mode:     0600 | c_ISREG | c_ISVTX,
++				Size:     7,
++				ModTime:  time.Unix(1360602540, 0),
++				Typeflag: TypeReg,
++			},
++			fm: 0600 | os.ModeSticky,
++		},
++	}
++
++	for i, g := range golden {
++		fi := g.h.FileInfo()
++		h2, err := FileInfoHeader(fi, "")
++		if err != nil {
++			t.Error(err)
++			continue
++		}
++		if got, want := h2.Name, g.h.Name; got != want {
++			t.Errorf("i=%d: Name: got %v, want %v", i, got, want)
++		}
++		if got, want := h2.Size, g.h.Size; got != want {
++			t.Errorf("i=%d: Size: got %v, want %v", i, got, want)
++		}
++		if got, want := h2.Mode, g.h.Mode; got != want {
++			t.Errorf("i=%d: Mode: got %o, want %o", i, got, want)
++		}
++		if got, want := fi.Mode(), g.fm; got != want {
++			t.Errorf("i=%d: fi.Mode: got %o, want %o", i, got, want)
++		}
++		if got, want := h2.ModTime, g.h.ModTime; got != want {
++			t.Errorf("i=%d: ModTime: got %v, want %v", i, got, want)
++		}
++		if sysh, ok := fi.Sys().(*Header); !ok || sysh != g.h {
++			t.Errorf("i=%d: Sys didn't return original *Header", i)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/testdata/pax.tar gcc-4.8.1/libgo/go/archive/tar/testdata/pax.tar
+--- gcc-4.8.1.orig/libgo/go/archive/tar/testdata/pax.tar	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/testdata/pax.tar	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,10 @@
++a/PaxHeaders.6887/12345678910111213141516171819202122232425262728293031323334353637383940414243444540000644000175000017500000000044612036615200022461 xustar0000000000000000204 path=a/123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
++30 mtime=1350244992.023960108
++30 atime=1350244992.023960108
++30 ctime=1350244992.023960108
++a/123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525350000664000175000017500000000000712036615200023454 0ustar00shaneshane00000000000000shaner
++a/PaxHeaders.6887/b0000644000175000017500000000045012036666720012440 xustar0000000000000000206 linkpath=123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
++30 mtime=1350266320.910238425
++30 atime=1350266320.910238425
++30 ctime=1350266320.910238425
++a/b0000777000175000017500000000000012036666720024004 21234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545ustar00shaneshane00000000000000
+\ No newline at end of file
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/testdata/ustar.tar gcc-4.8.1/libgo/go/archive/tar/testdata/ustar.tar
+--- gcc-4.8.1.orig/libgo/go/archive/tar/testdata/ustar.tar	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/testdata/ustar.tar	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,2 @@
++file.txt0000644000076500000240000000000612104402656045134 0ustar00shanestaff00000000000000longname/longname/longname/longname/longname/longname/longname/longname/longname/longname/longname/longname/longname/longname/longnamehello
++
+\ No newline at end of file
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/writer.go gcc-4.8.1/libgo/go/archive/tar/writer.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/writer.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/tar/writer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,10 +8,14 @@
+ // - catch more errors (no first header, etc.)
+ 
+ import (
++	"bytes"
+ 	"errors"
+ 	"fmt"
+ 	"io"
++	"os"
++	"path"
+ 	"strconv"
++	"strings"
+ 	"time"
+ )
+ 
+@@ -19,23 +23,13 @@
+ 	ErrWriteTooLong    = errors.New("archive/tar: write too long")
+ 	ErrFieldTooLong    = errors.New("archive/tar: header field too long")
+ 	ErrWriteAfterClose = errors.New("archive/tar: write after close")
++	errNameTooLong     = errors.New("archive/tar: name too long")
+ )
+ 
+ // A Writer provides sequential writing of a tar archive in POSIX.1 format.
+ // A tar archive consists of a sequence of files.
+ // Call WriteHeader to begin a new file, and then call Write to supply that file's data,
+ // writing at most hdr.Size bytes in total.
+-//
+-// Example:
+-//	tw := tar.NewWriter(w)
+-//	hdr := new(tar.Header)
+-//	hdr.Size = length of data in bytes
+-//	// populate other hdr fields as desired
+-//	if err := tw.WriteHeader(hdr); err != nil {
+-//		// handle error
+-//	}
+-//	io.Copy(tw, data)
+-//	tw.Close()
+ type Writer struct {
+ 	w          io.Writer
+ 	err        error
+@@ -130,15 +124,31 @@
+ 	if tw.err != nil {
+ 		return tw.err
+ 	}
+-
++	// Decide whether or not to use PAX extensions
++	// TODO(shanemhansen): we might want to use PAX headers for
++	// subsecond time resolution, but for now let's just capture
++	// the long name/long symlink use case.
++	suffix := hdr.Name
++	prefix := ""
++	if len(hdr.Name) > fileNameSize || len(hdr.Linkname) > fileNameSize {
++		var err error
++		prefix, suffix, err = tw.splitUSTARLongName(hdr.Name)
++		// Either we were unable to pack the long name into ustar format
++		// or the link name is too long; use PAX headers.
++		if err == errNameTooLong || len(hdr.Linkname) > fileNameSize {
++			if err := tw.writePAXHeader(hdr); err != nil {
++				return err
++			}
++		} else if err != nil {
++			return err
++		}
++	}
+ 	tw.nb = int64(hdr.Size)
+ 	tw.pad = -tw.nb & (blockSize - 1) // blockSize is a power of two
+ 
+ 	header := make([]byte, blockSize)
+ 	s := slicer(header)
+-
+-	// TODO(dsymonds): handle names longer than 100 chars
+-	copy(s.next(100), []byte(hdr.Name))
++	tw.cString(s.next(fileNameSize), suffix)
+ 
+ 	// Handle out of range ModTime carefully.
+ 	var modTime int64
+@@ -159,11 +169,15 @@
+ 	tw.cString(s.next(32), hdr.Gname)      // 297:329
+ 	tw.numeric(s.next(8), hdr.Devmajor)    // 329:337
+ 	tw.numeric(s.next(8), hdr.Devminor)    // 337:345
+-
++	tw.cString(s.next(155), prefix)        // 345:500
+ 	// Use the GNU magic instead of POSIX magic if we used any GNU extensions.
+ 	if tw.usedBinary {
+ 		copy(header[257:265], []byte("ustar  \x00"))
+ 	}
++	// Use the ustar magic if we used ustar long names.
++	if len(prefix) > 0 {
++		copy(header[257:265], []byte("ustar\000"))
++	}
+ 
+ 	// The chksum field is terminated by a NUL and a space.
+ 	// This is different from the other octal fields.
+@@ -181,6 +195,78 @@
+ 	return tw.err
+ }
+ 
++// writeUSTARLongName splits a USTAR long name hdr.Name.
++// name must be < 256 characters. errNameTooLong is returned
++// if hdr.Name can't be split. The splitting heuristic
++// is compatible with gnu tar.
++func (tw *Writer) splitUSTARLongName(name string) (prefix, suffix string, err error) {
++	length := len(name)
++	if length > fileNamePrefixSize+1 {
++		length = fileNamePrefixSize + 1
++	} else if name[length-1] == '/' {
++		length--
++	}
++	i := strings.LastIndex(name[:length], "/")
++	nlen := length - i - 1
++	if i <= 0 || nlen > fileNameSize || nlen == 0 {
++		err = errNameTooLong
++		return
++	}
++	prefix, suffix = name[:i], name[i+1:]
++	return
++}
++
++// writePaxHeader writes an extended pax header to the
++// archive.
++func (tw *Writer) writePAXHeader(hdr *Header) error {
++	// Prepare extended header
++	ext := new(Header)
++	ext.Typeflag = TypeXHeader
++	// Setting ModTime is required for reader parsing to
++	// succeed, and seems harmless enough.
++	ext.ModTime = hdr.ModTime
++	// The spec asks that we namespace our pseudo files
++	// with the current pid.
++	pid := os.Getpid()
++	dir, file := path.Split(hdr.Name)
++	ext.Name = path.Join(dir,
++		fmt.Sprintf("PaxHeaders.%d", pid), file)[0:100]
++	// Construct the body
++	var buf bytes.Buffer
++	if len(hdr.Name) > fileNameSize {
++		fmt.Fprint(&buf, paxHeader("path="+hdr.Name))
++	}
++	if len(hdr.Linkname) > fileNameSize {
++		fmt.Fprint(&buf, paxHeader("linkpath="+hdr.Linkname))
++	}
++	ext.Size = int64(len(buf.Bytes()))
++	if err := tw.WriteHeader(ext); err != nil {
++		return err
++	}
++	if _, err := tw.Write(buf.Bytes()); err != nil {
++		return err
++	}
++	if err := tw.Flush(); err != nil {
++		return err
++	}
++	return nil
++}
++
++// paxHeader formats a single pax record, prefixing it with the appropriate length
++func paxHeader(msg string) string {
++	const padding = 2 // Extra padding for space and newline
++	size := len(msg) + padding
++	size += len(strconv.Itoa(size))
++	record := fmt.Sprintf("%d %s\n", size, msg)
++	if len(record) != size {
++		// Final adjustment if adding size increased
++		// the number of digits in size
++		size = len(record)
++		record = fmt.Sprintf("%d %s\n", size, msg)
++	}
++	return record
++}
++
+ // Write writes to the current entry in the tar archive.
+ // Write returns the error ErrWriteTooLong if more than
+ // hdr.Size bytes are written after WriteHeader.
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/tar/writer_test.go gcc-4.8.1/libgo/go/archive/tar/writer_test.go
+--- gcc-4.8.1.orig/libgo/go/archive/tar/writer_test.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/archive/tar/writer_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"fmt"
+ 	"io"
+ 	"io/ioutil"
++	"os"
+ 	"strings"
+ 	"testing"
+ 	"testing/iotest"
+@@ -101,6 +102,27 @@
+ 			},
+ 		},
+ 	},
++	// This file was produced using gnu tar 1.17
++	// gnutar  -b 4 --format=ustar (longname/)*15 + file.txt
++	{
++		file: "testdata/ustar.tar",
++		entries: []*writerTestEntry{
++			{
++				header: &Header{
++					Name:     strings.Repeat("longname/", 15) + "file.txt",
++					Mode:     0644,
++					Uid:      0765,
++					Gid:      024,
++					Size:     06,
++					ModTime:  time.Unix(1360135598, 0),
++					Typeflag: '0',
++					Uname:    "shane",
++					Gname:    "staff",
++				},
++				contents: "hello\n",
++			},
++		},
++	},
+ }
+ 
+ // Render byte array in a two-character hexadecimal string, spaced for easy visual inspection.
+@@ -180,3 +202,61 @@
+ 		}
+ 	}
+ }
++
++func TestPax(t *testing.T) {
++	// Create an archive with a large name
++	fileinfo, err := os.Stat("testdata/small.txt")
++	if err != nil {
++		t.Fatal(err)
++	}
++	hdr, err := FileInfoHeader(fileinfo, "")
++	if err != nil {
++		t.Fatalf("os.Stat: %v", err)
++	}
++	// Force a PAX long name to be written
++	longName := strings.Repeat("ab", 100)
++	contents := strings.Repeat(" ", int(hdr.Size))
++	hdr.Name = longName
++	var buf bytes.Buffer
++	writer := NewWriter(&buf)
++	if err := writer.WriteHeader(hdr); err != nil {
++		t.Fatal(err)
++	}
++	if _, err = writer.Write([]byte(contents)); err != nil {
++		t.Fatal(err)
++	}
++	if err := writer.Close(); err != nil {
++		t.Fatal(err)
++	}
++	// Simple test to make sure PAX extensions are in effect
++	if !bytes.Contains(buf.Bytes(), []byte("PaxHeaders.")) {
++		t.Fatal("Expected at least one PAX header to be written.")
++	}
++	// Test that we can get a long name back out of the archive.
++	reader := NewReader(&buf)
++	hdr, err = reader.Next()
++	if err != nil {
++		t.Fatal(err)
++	}
++	if hdr.Name != longName {
++		t.Fatal("Couldn't recover long file name")
++	}
++}
++
++func TestPAXHeader(t *testing.T) {
++	medName := strings.Repeat("CD", 50)
++	longName := strings.Repeat("AB", 100)
++	paxTests := [][2]string{
++		{"name=/etc/hosts", "19 name=/etc/hosts\n"},
++		{"a=b", "6 a=b\n"},          // Single digit length
++		{"a=names", "11 a=names\n"}, // Test case involving carries
++		{"name=" + longName, fmt.Sprintf("210 name=%s\n", longName)},
++		{"name=" + medName, fmt.Sprintf("110 name=%s\n", medName)}}
++
++	for _, test := range paxTests {
++		key, expected := test[0], test[1]
++		if result := paxHeader(key); result != expected {
++			t.Fatalf("paxHeader: got %s, expected %s", result, expected)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/zip/reader.go gcc-4.8.1/libgo/go/archive/zip/reader.go
+--- gcc-4.8.1.orig/libgo/go/archive/zip/reader.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/zip/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -353,6 +353,11 @@
+ 	if err != nil {
+ 		return nil, err
+ 	}
++
++	// Make sure directoryOffset points to somewhere in our file.
++	if o := int64(d.directoryOffset); o < 0 || o >= size {
++		return nil, ErrFormat
++	}
+ 	return d, nil
+ }
+ 
+@@ -407,7 +412,7 @@
+ 		if b[i] == 'P' && b[i+1] == 'K' && b[i+2] == 0x05 && b[i+3] == 0x06 {
+ 			// n is length of comment
+ 			n := int(b[i+directoryEndLen-2]) | int(b[i+directoryEndLen-1])<<8
+-			if n+directoryEndLen+i == len(b) {
++			if n+directoryEndLen+i <= len(b) {
+ 				return i
+ 			}
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/zip/reader_test.go gcc-4.8.1/libgo/go/archive/zip/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/archive/zip/reader_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/archive/zip/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -64,6 +64,24 @@
+ 		},
+ 	},
+ 	{
++		Name:    "test-trailing-junk.zip",
++		Comment: "This is a zipfile comment.",
++		File: []ZipTestFile{
++			{
++				Name:    "test.txt",
++				Content: []byte("This is a test text file.\n"),
++				Mtime:   "09-05-10 12:12:02",
++				Mode:    0644,
++			},
++			{
++				Name:  "gophercolor16x16.png",
++				File:  "gophercolor16x16.png",
++				Mtime: "09-05-10 15:52:58",
++				Mode:  0644,
++			},
++		},
++	},
++	{
+ 		Name:   "r.zip",
+ 		Source: returnRecursiveZip,
+ 		File: []ZipTestFile{
+@@ -262,7 +280,7 @@
+ 		}
+ 	}
+ 	if err != zt.Error {
+-		t.Errorf("error=%v, want %v", err, zt.Error)
++		t.Errorf("%s: error=%v, want %v", zt.Name, err, zt.Error)
+ 		return
+ 	}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/zip/struct.go gcc-4.8.1/libgo/go/archive/zip/struct.go
+--- gcc-4.8.1.orig/libgo/go/archive/zip/struct.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/archive/zip/struct.go	2013-07-16 01:55:04.520470000 -0500
+@@ -64,8 +64,15 @@
+ 	zip64ExtraId = 0x0001 // zip64 Extended Information Extra Field
+ )
+ 
++// FileHeader describes a file within a zip file.
++// See the zip spec for details.
+ type FileHeader struct {
+-	Name               string
++	// Name is the name of the file.
++	// It must be a relative path: it must not start with a drive
++	// letter (e.g. C:) or leading slash, and only forward slashes
++	// are allowed.
++	Name string
++
+ 	CreatorVersion     uint16
+ 	ReaderVersion      uint16
+ 	Flags              uint16
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/zip/testdata/test-trailing-junk.zip gcc-4.8.1/libgo/go/archive/zip/testdata/test-trailing-junk.zip
+--- gcc-4.8.1.orig/libgo/go/archive/zip/testdata/test-trailing-junk.zip	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/zip/testdata/test-trailing-junk.zip	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,10 @@
++PKa%=À×íÃ
+test.txtUT	qüLvüLux
+õ
+ÉÈ,V¢D
+Ôâ QQ¢ªÇPK
++~%=þ1ÕT
+gophercolor16x16.pngUT	:0L;0Lux
+õPNG
++
++
+IHDRísO/gAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<£IDATxÚt_HSQÀ¿{ÏîÆu[VÚ*%mlQVô_#·""°zAK
+
++£bE/¡zI*5ÿd¢./SÂé¶(Ú]¶í^uÙÓ9­òï{¿?¿ó}ß9ÁCŠØív°ÙlÏ:z#¯ÐXäeßÄe%VWáv»œñÌVôºœÍáhšœd4àžåÜo°Ci€ólþ&`h555^Àðà@gó
+§Åë@ü:æ³U âÄÁpûQWÝVÃ¶ÆX,J6kI(ecºu
+woVaY
++aÏè'|äÐ^|¢l'~ÓT'\Ï°oÈ/ZN
++ëó6°f³9G5Ù&/+Ño1í0ÁÈV€ÊÝªA£ÕB<pdÎWV3ó×74eµÀ0
+GÞK¯^8Óë%aq	ÁŽ_ÝÚ
+P©8`HJÉ£s
+m=óRšØPèØÛ÷C
+A9L°€ïx7æ&R8	£§QÂ,õý©Íè\PŸóÄÙ3É«)*ùwJaFh,ºü\ê
++ü@DzÕå²ùŠE@(åÆâ°o{1v&ÃWàêÕÇ]îÑñ%ZzzP,Ki 
+[@Dç
+,û¯K¡@ðÃ ÖM4
+)IúîDVæ¯djcC0Z³æ415§
+'€%gn««W{{yºG!²r
++ Gûžµï×ÇQáåÁûg³*(//OW bB€Ú§íýM÷äÎÎLÃž0x70Ü¯ººzÒjµfÿL dV»Hô¹Ë3a
+ûæð<ÿ »»û3±
+ôz=œtY­ý`š
+çbêIEND®B`PK
+a%=À×íÃ€test.txtUTqüLux
+õPK
+
++~%=þ1ÕT€[gophercolor16x16.pngUT:0Lux
+õPKšºThis is a zipfile comment.some nonsense
+diff -Naur gcc-4.8.1.orig/libgo/go/archive/zip/writer.go gcc-4.8.1/libgo/go/archive/zip/writer.go
+--- gcc-4.8.1.orig/libgo/go/archive/zip/writer.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/archive/zip/writer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -163,6 +163,9 @@
+ 
+ // Create adds a file to the zip file using the provided name.
+ // It returns a Writer to which the file contents should be written.
++// The name must be a relative path: it must not start with a drive
++// letter (e.g. C:) or leading slash, and only forward slashes are
++// allowed.
+ // The file's contents must be written to the io.Writer before the next
+ // call to Create, CreateHeader, or Close.
+ func (w *Writer) Create(name string) (io.Writer, error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/bufio.go gcc-4.8.1/libgo/go/bufio/bufio.go
+--- gcc-4.8.1.orig/libgo/go/bufio/bufio.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/bufio.go	2013-07-16 01:55:04.520470000 -0500
+@@ -274,11 +274,10 @@
+ 			return b.buf, ErrBufferFull
+ 		}
+ 	}
+-	panic("not reached")
+ }
+ 
+ // ReadLine is a low-level line-reading primitive. Most callers should use
+-// ReadBytes('\n') or ReadString('\n') instead.
++// ReadBytes('\n') or ReadString('\n') instead or use a Scanner.
+ //
+ // ReadLine tries to return a single line, not including the end-of-line bytes.
+ // If the line was too long for the buffer then isPrefix is set and the
+@@ -331,6 +330,7 @@
+ // it returns the data read before the error and the error itself (often io.EOF).
+ // ReadBytes returns err != nil if and only if the returned data does not end in
+ // delim.
++// For simple uses, a Scanner may be more convenient.
+ func (b *Reader) ReadBytes(delim byte) (line []byte, err error) {
+ 	// Use ReadSlice to look for array,
+ 	// accumulating full buffers.
+@@ -378,6 +378,7 @@
+ // it returns the data read before the error and the error itself (often io.EOF).
+ // ReadString returns err != nil if and only if the returned data does not end in
+ // delim.
++// For simple uses, a Scanner may be more convenient.
+ func (b *Reader) ReadString(delim byte) (line string, err error) {
+ 	bytes, err := b.ReadBytes(delim)
+ 	return string(bytes), err
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/bufio_test.go gcc-4.8.1/libgo/go/bufio/bufio_test.go
+--- gcc-4.8.1.orig/libgo/go/bufio/bufio_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/bufio_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,6 +7,7 @@
+ import (
+ 	. "bufio"
+ 	"bytes"
++	"errors"
+ 	"fmt"
+ 	"io"
+ 	"io/ioutil"
+@@ -434,9 +435,12 @@
+ 			t.Errorf("Write hello to %v: %v", w, e)
+ 			continue
+ 		}
+-		e = buf.Flush()
+-		if e != w.expect {
+-			t.Errorf("Flush %v: got %v, wanted %v", w, e, w.expect)
++		// Two flushes, to verify the error is sticky.
++		for i := 0; i < 2; i++ {
++			e = buf.Flush()
++			if e != w.expect {
++				t.Errorf("Flush %d/2 %v: got %v, wanted %v", i+1, w, e, w.expect)
++			}
+ 		}
+ 	}
+ }
+@@ -953,7 +957,7 @@
+ 			t.Fatal("read did not panic")
+ 		case error:
+ 			if !strings.Contains(err.Error(), "reader returned negative count from Read") {
+-				t.Fatal("wrong panic: %v", err)
++				t.Fatalf("wrong panic: %v", err)
+ 			}
+ 		default:
+ 			t.Fatalf("unexpected panic value: %T(%v)", err, err)
+@@ -962,6 +966,43 @@
+ 	b.Read(make([]byte, 100))
+ }
+ 
++var errFake = errors.New("fake error")
++
++type errorThenGoodReader struct {
++	didErr bool
++	nread  int
++}
++
++func (r *errorThenGoodReader) Read(p []byte) (int, error) {
++	r.nread++
++	if !r.didErr {
++		r.didErr = true
++		return 0, errFake
++	}
++	return len(p), nil
++}
++
++func TestReaderClearError(t *testing.T) {
++	r := &errorThenGoodReader{}
++	b := NewReader(r)
++	buf := make([]byte, 1)
++	if _, err := b.Read(nil); err != nil {
++		t.Fatalf("1st nil Read = %v; want nil", err)
++	}
++	if _, err := b.Read(buf); err != errFake {
++		t.Fatalf("1st Read = %v; want errFake", err)
++	}
++	if _, err := b.Read(nil); err != nil {
++		t.Fatalf("2nd nil Read = %v; want nil", err)
++	}
++	if _, err := b.Read(buf); err != nil {
++		t.Fatalf("3rd Read with buffer = %v; want nil", err)
++	}
++	if r.nread != 2 {
++		t.Errorf("num reads = %d; want 2", r.nread)
++	}
++}
++
+ // An onlyReader only implements io.Reader, no matter what other methods the underlying implementation may have.
+ type onlyReader struct {
+ 	r io.Reader
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/example_test.go gcc-4.8.1/libgo/go/bufio/example_test.go
+--- gcc-4.8.1.orig/libgo/go/bufio/example_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,74 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package bufio_test
++
++import (
++	"bufio"
++	"fmt"
++	"os"
++	"strconv"
++	"strings"
++)
++
++// The simplest use of a Scanner, to read standard input as a set of lines.
++func ExampleScanner_lines() {
++	scanner := bufio.NewScanner(os.Stdin)
++	for scanner.Scan() {
++		fmt.Println(scanner.Text()) // Println will add back the final '\n'
++	}
++	if err := scanner.Err(); err != nil {
++		fmt.Fprintln(os.Stderr, "reading standard input:", err)
++	}
++}
++
++// Use a Scanner to implement a simple word-count utility by scanning the
++// input as a sequence of space-delimited tokens.
++func ExampleScanner_words() {
++	// An artificial input source.
++	const input = "Now is the winter of our discontent,\nMade glorious summer by this sun of York.\n"
++	scanner := bufio.NewScanner(strings.NewReader(input))
++	// Set the split function for the scanning operation.
++	scanner.Split(bufio.ScanWords)
++	// Count the words.
++	count := 0
++	for scanner.Scan() {
++		count++
++	}
++	if err := scanner.Err(); err != nil {
++		fmt.Fprintln(os.Stderr, "reading input:", err)
++	}
++	fmt.Printf("%d\n", count)
++	// Output: 15
++}
++
++// Use a Scanner with a custom split function (built by wrapping ScanWords) to validate
++// 32-bit decimal input.
++func ExampleScanner_custom() {
++	// An artificial input source.
++	const input = "1234 5678 1234567901234567890"
++	scanner := bufio.NewScanner(strings.NewReader(input))
++	// Create a custom split function by wrapping the existing ScanWords function.
++	split := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
++		advance, token, err = bufio.ScanWords(data, atEOF)
++		if err == nil && token != nil {
++			_, err = strconv.ParseInt(string(token), 10, 32)
++		}
++		return
++	}
++	// Set the split function for the scanning operation.
++	scanner.Split(split)
++	// Validate the input
++	for scanner.Scan() {
++		fmt.Printf("%s\n", scanner.Text())
++	}
++
++	if err := scanner.Err(); err != nil {
++		fmt.Printf("Invalid input: %s", err)
++	}
++	// Output:
++	// 1234
++	// 5678
++	// Invalid input: strconv.ParseInt: parsing "1234567901234567890": value out of range
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/export_test.go gcc-4.8.1/libgo/go/bufio/export_test.go
+--- gcc-4.8.1.orig/libgo/go/bufio/export_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/export_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,27 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package bufio
++
++// Exported for testing only.
++import (
++	"unicode/utf8"
++)
++
++var IsSpace = isSpace
++
++func (s *Scanner) MaxTokenSize(n int) {
++	if n < utf8.UTFMax || n > 1e9 {
++		panic("bad max token size")
++	}
++	if n < len(s.buf) {
++		s.buf = make([]byte, n)
++	}
++	s.maxTokenSize = n
++}
++
++// ErrOrEOF is like Err, but returns EOF. Used to test a corner case.
++func (s *Scanner) ErrOrEOF() error {
++	return s.err
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/scan.go gcc-4.8.1/libgo/go/bufio/scan.go
+--- gcc-4.8.1.orig/libgo/go/bufio/scan.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/scan.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,346 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package bufio
++
++import (
++	"bytes"
++	"errors"
++	"io"
++	"unicode/utf8"
++)
++
++// Scanner provides a convenient interface for reading data such as
++// a file of newline-delimited lines of text. Successive calls to
++// the Scan method will step through the 'tokens' of a file, skipping
++// the bytes between the tokens. The specification of a token is
++// defined by a split function of type SplitFunc; the default split
++// function breaks the input into lines with line termination stripped. Split
++// functions are defined in this package for scanning a file into
++// lines, bytes, UTF-8-encoded runes, and space-delimited words. The
++// client may instead provide a custom split function.
++//
++// Scanning stops unrecoverably at EOF, the first I/O error, or a token too
++// large to fit in the buffer. When a scan stops, the reader may have
++// advanced arbitrarily far past the last token. Programs that need more
++// control over error handling or large tokens, or must run sequential scans
++// on a reader, should use bufio.Reader instead.
++//
++type Scanner struct {
++	r            io.Reader // The reader provided by the client.
++	split        SplitFunc // The function to split the tokens.
++	maxTokenSize int       // Maximum size of a token; modified by tests.
++	token        []byte    // Last token returned by split.
++	buf          []byte    // Buffer used as argument to split.
++	start        int       // First non-processed byte in buf.
++	end          int       // End of data in buf.
++	err          error     // Sticky error.
++}
++
++// SplitFunc is the signature of the split function used to tokenize the
++// input. The arguments are an initial substring of the remaining unprocessed
++// data and a flag, atEOF, that reports whether the Reader has no more data
++// to give. The return values are the number of bytes to advance the input
++// and the next token to return to the user, plus an error, if any. If the
++// data does not yet hold a complete token, for instance if it has no newline
++// while scanning lines, SplitFunc can return (0, nil) to signal the Scanner
++// to read more data into the slice and try again with a longer slice
++// starting at the same point in the input.
++//
++// If the returned error is non-nil, scanning stops and the error
++// is returned to the client.
++//
++// The function is never called with an empty data slice unless atEOF
++// is true. If atEOF is true, however, data may be non-empty and,
++// as always, holds unprocessed text.
++type SplitFunc func(data []byte, atEOF bool) (advance int, token []byte, err error)
++
++// Errors returned by Scanner.
++var (
++	ErrTooLong         = errors.New("bufio.Scanner: token too long")
++	ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count")
++	ErrAdvanceTooFar   = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input")
++)
++
++const (
++	// Maximum size used to buffer a token. The actual maximum token size
++	// may be smaller as the buffer may need to include, for instance, a newline.
++	MaxScanTokenSize = 64 * 1024
++)
++
++// NewScanner returns a new Scanner to read from r.
++// The split function defaults to ScanLines.
++func NewScanner(r io.Reader) *Scanner {
++	return &Scanner{
++		r:            r,
++		split:        ScanLines,
++		maxTokenSize: MaxScanTokenSize,
++		buf:          make([]byte, 4096), // Plausible starting size; needn't be large.
++	}
++}
++
++// Err returns the first non-EOF error that was encountered by the Scanner.
++func (s *Scanner) Err() error {
++	if s.err == io.EOF {
++		return nil
++	}
++	return s.err
++}
++
++// Bytes returns the most recent token generated by a call to Scan.
++// The underlying array may point to data that will be overwritten
++// by a subsequent call to Scan. It does no allocation.
++func (s *Scanner) Bytes() []byte {
++	return s.token
++}
++
++// Text returns the most recent token generated by a call to Scan
++// as a newly allocated string holding its bytes.
++func (s *Scanner) Text() string {
++	return string(s.token)
++}
++
++// Scan advances the Scanner to the next token, which will then be
++// available through the Bytes or Text method. It returns false when the
++// scan stops, either by reaching the end of the input or an error.
++// After Scan returns false, the Err method will return any error that
++// occurred during scanning, except that if it was io.EOF, Err
++// will return nil.
++func (s *Scanner) Scan() bool {
++	// Loop until we have a token.
++	for {
++		// See if we can get a token with what we already have.
++		if s.end > s.start {
++			advance, token, err := s.split(s.buf[s.start:s.end], s.err != nil)
++			if err != nil {
++				s.setErr(err)
++				return false
++			}
++			if !s.advance(advance) {
++				return false
++			}
++			s.token = token
++			if token != nil {
++				return true
++			}
++		}
++		// We cannot generate a token with what we are holding.
++		// If we've already hit EOF or an I/O error, we are done.
++		if s.err != nil {
++			// Shut it down.
++			s.start = 0
++			s.end = 0
++			return false
++		}
++		// Must read more data.
++		// First, shift data to beginning of buffer if there's lots of empty space
++		// or space is neded.
++		if s.start > 0 && (s.end == len(s.buf) || s.start > len(s.buf)/2) {
++			copy(s.buf, s.buf[s.start:s.end])
++			s.end -= s.start
++			s.start = 0
++		}
++		// Is the buffer full? If so, resize.
++		if s.end == len(s.buf) {
++			if len(s.buf) >= s.maxTokenSize {
++				s.setErr(ErrTooLong)
++				return false
++			}
++			newSize := len(s.buf) * 2
++			if newSize > s.maxTokenSize {
++				newSize = s.maxTokenSize
++			}
++			newBuf := make([]byte, newSize)
++			copy(newBuf, s.buf[s.start:s.end])
++			s.buf = newBuf
++			s.end -= s.start
++			s.start = 0
++			continue
++		}
++		// Finally we can read some input. Make sure we don't get stuck with
++		// a misbehaving Reader. Officially we don't need to do this, but let's
++		// be extra careful: Scanner is for safe, simple jobs.
++		for loop := 0; ; {
++			n, err := s.r.Read(s.buf[s.end:len(s.buf)])
++			s.end += n
++			if err != nil {
++				s.setErr(err)
++				break
++			}
++			if n > 0 {
++				break
++			}
++			loop++
++			if loop > 100 {
++				s.setErr(io.ErrNoProgress)
++				break
++			}
++		}
++	}
++}
++
++// advance consumes n bytes of the buffer. It reports whether the advance was legal.
++func (s *Scanner) advance(n int) bool {
++	if n < 0 {
++		s.setErr(ErrNegativeAdvance)
++		return false
++	}
++	if n > s.end-s.start {
++		s.setErr(ErrAdvanceTooFar)
++		return false
++	}
++	s.start += n
++	return true
++}
++
++// setErr records the first error encountered.
++func (s *Scanner) setErr(err error) {
++	if s.err == nil || s.err == io.EOF {
++		s.err = err
++	}
++}
++
++// Split sets the split function for the Scanner. If called, it must be
++// called before Scan. The default split function is ScanLines.
++func (s *Scanner) Split(split SplitFunc) {
++	s.split = split
++}
++
++// Split functions
++
++// ScanBytes is a split function for a Scanner that returns each byte as a token.
++func ScanBytes(data []byte, atEOF bool) (advance int, token []byte, err error) {
++	if atEOF && len(data) == 0 {
++		return 0, nil, nil
++	}
++	return 1, data[0:1], nil
++}
++
++var errorRune = []byte(string(utf8.RuneError))
++
++// ScanRunes is a split function for a Scanner that returns each
++// UTF-8-encoded rune as a token. The sequence of runes returned is
++// equivalent to that from a range loop over the input as a string, which
++// means that erroneous UTF-8 encodings translate to U+FFFD = "\xef\xbf\xbd".
++// Because of the Scan interface, this makes it impossible for the client to
++// distinguish correctly encoded replacement runes from encoding errors.
++func ScanRunes(data []byte, atEOF bool) (advance int, token []byte, err error) {
++	if atEOF && len(data) == 0 {
++		return 0, nil, nil
++	}
++
++	// Fast path 1: ASCII.
++	if data[0] < utf8.RuneSelf {
++		return 1, data[0:1], nil
++	}
++
++	// Fast path 2: Correct UTF-8 decode without error.
++	_, width := utf8.DecodeRune(data)
++	if width > 1 {
++		// It's a valid encoding. Width cannot be one for a correctly encoded
++		// non-ASCII rune.
++		return width, data[0:width], nil
++	}
++
++	// We know it's an error: we have width==1 and implicitly r==utf8.RuneError.
++	// Is the error because there wasn't a full rune to be decoded?
++	// FullRune distinguishes correctly between erroneous and incomplete encodings.
++	if !atEOF && !utf8.FullRune(data) {
++		// Incomplete; get more bytes.
++		return 0, nil, nil
++	}
++
++	// We have a real UTF-8 encoding error. Return a properly encoded error rune
++	// but advance only one byte. This matches the behavior of a range loop over
++	// an incorrectly encoded string.
++	return 1, errorRune, nil
++}
++
++// dropCR drops a terminal \r from the data.
++func dropCR(data []byte) []byte {
++	if len(data) > 0 && data[len(data)-1] == '\r' {
++		return data[0 : len(data)-1]
++	}
++	return data
++}
++
++// ScanLines is a split function for a Scanner that returns each line of
++// text, stripped of any trailing end-of-line marker. The returned line may
++// be empty. The end-of-line marker is one optional carriage return followed
++// by one mandatory newline. In regular expression notation, it is `\r?\n`.
++// The last non-empty line of input will be returned even if it has no
++// newline.
++func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
++	if atEOF && len(data) == 0 {
++		return 0, nil, nil
++	}
++	if i := bytes.IndexByte(data, '\n'); i >= 0 {
++		// We have a full newline-terminated line.
++		return i + 1, dropCR(data[0:i]), nil
++	}
++	// If we're at EOF, we have a final, non-terminated line. Return it.
++	if atEOF {
++		return len(data), dropCR(data), nil
++	}
++	// Request more data.
++	return 0, nil, nil
++}
++
++// isSpace returns whether the character is a Unicode white space character.
++// We avoid dependency on the unicode package, but check validity of the implementation
++// in the tests.
++func isSpace(r rune) bool {
++	if r <= '\u00FF' {
++		// Obvious ASCII ones: \t through \r plus space. Plus two Latin-1 oddballs.
++		switch r {
++		case ' ', '\t', '\n', '\v', '\f', '\r':
++			return true
++		case '\u0085', '\u00A0':
++			return true
++		}
++		return false
++	}
++	// High-valued ones.
++	if '\u2000' <= r && r <= '\u200a' {
++		return true
++	}
++	switch r {
++	case '\u1680', '\u180e', '\u2028', '\u2029', '\u202f', '\u205f', '\u3000':
++		return true
++	}
++	return false
++}
++
++// ScanWords is a split function for a Scanner that returns each
++// space-separated word of text, with surrounding spaces deleted. It will
++// never return an empty string. The definition of space is set by
++// unicode.IsSpace.
++func ScanWords(data []byte, atEOF bool) (advance int, token []byte, err error) {
++	// Skip leading spaces.
++	start := 0
++	for width := 0; start < len(data); start += width {
++		var r rune
++		r, width = utf8.DecodeRune(data[start:])
++		if !isSpace(r) {
++			break
++		}
++	}
++	if atEOF && len(data) == 0 {
++		return 0, nil, nil
++	}
++	// Scan until space, marking end of word.
++	for width, i := 0, start; i < len(data); i += width {
++		var r rune
++		r, width = utf8.DecodeRune(data[i:])
++		if isSpace(r) {
++			return i + width, data[start:i], nil
++		}
++	}
++	// If we're at EOF, we have a final, non-empty, non-terminated word. Return it.
++	if atEOF && len(data) > start {
++		return len(data), data[start:], nil
++	}
++	// Request more data.
++	return 0, nil, nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bufio/scan_test.go gcc-4.8.1/libgo/go/bufio/scan_test.go
+--- gcc-4.8.1.orig/libgo/go/bufio/scan_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/bufio/scan_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,406 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package bufio_test
++
++import (
++	. "bufio"
++	"bytes"
++	"errors"
++	"io"
++	"strings"
++	"testing"
++	"unicode"
++	"unicode/utf8"
++)
++
++// Test white space table matches the Unicode definition.
++func TestSpace(t *testing.T) {
++	for r := rune(0); r <= utf8.MaxRune; r++ {
++		if IsSpace(r) != unicode.IsSpace(r) {
++			t.Fatalf("white space property disagrees: %#U should be %t", r, unicode.IsSpace(r))
++		}
++	}
++}
++
++var scanTests = []string{
++	"",
++	"a",
++	"ÂŒ",
++	"â¹",
++	"\x81",   // UTF-8 error
++	"\uFFFD", // correctly encoded RuneError
++	"abcdefgh",
++	"abc def\n\t\tgh    ",
++	"abcÂŒâ¹\x81\uFFFDæ¥æ¬èª\x82abc",
++}
++
++func TestScanByte(t *testing.T) {
++	for n, test := range scanTests {
++		buf := bytes.NewBufferString(test)
++		s := NewScanner(buf)
++		s.Split(ScanBytes)
++		var i int
++		for i = 0; s.Scan(); i++ {
++			if b := s.Bytes(); len(b) != 1 || b[0] != test[i] {
++				t.Errorf("#%d: %d: expected %q got %q", n, i, test, b)
++			}
++		}
++		if i != len(test) {
++			t.Errorf("#%d: termination expected at %d; got %d", n, len(test), i)
++		}
++		err := s.Err()
++		if err != nil {
++			t.Errorf("#%d: %v", n, err)
++		}
++	}
++}
++
++// Test that the rune splitter returns same sequence of runes (not bytes) as for range string.
++func TestScanRune(t *testing.T) {
++	for n, test := range scanTests {
++		buf := bytes.NewBufferString(test)
++		s := NewScanner(buf)
++		s.Split(ScanRunes)
++		var i, runeCount int
++		var expect rune
++		// Use a string range loop to validate the sequence of runes.
++		for i, expect = range string(test) {
++			if !s.Scan() {
++				break
++			}
++			runeCount++
++			got, _ := utf8.DecodeRune(s.Bytes())
++			if got != expect {
++				t.Errorf("#%d: %d: expected %q got %q", n, i, expect, got)
++			}
++		}
++		if s.Scan() {
++			t.Errorf("#%d: scan ran too long, got %q", n, s.Text())
++		}
++		testRuneCount := utf8.RuneCountInString(test)
++		if runeCount != testRuneCount {
++			t.Errorf("#%d: termination expected at %d; got %d", n, testRuneCount, runeCount)
++		}
++		err := s.Err()
++		if err != nil {
++			t.Errorf("#%d: %v", n, err)
++		}
++	}
++}
++
++var wordScanTests = []string{
++	"",
++	" ",
++	"\n",
++	"a",
++	" a ",
++	"abc def",
++	" abc def ",
++	" abc\tdef\nghi\rjkl\fmno\vpqr\u0085stu\u00a0\n",
++}
++
++// Test that the word splitter returns the same data as strings.Fields.
++func TestScanWords(t *testing.T) {
++	for n, test := range wordScanTests {
++		buf := bytes.NewBufferString(test)
++		s := NewScanner(buf)
++		s.Split(ScanWords)
++		words := strings.Fields(test)
++		var wordCount int
++		for wordCount = 0; wordCount < len(words); wordCount++ {
++			if !s.Scan() {
++				break
++			}
++			got := s.Text()
++			if got != words[wordCount] {
++				t.Errorf("#%d: %d: expected %q got %q", n, wordCount, words[wordCount], got)
++			}
++		}
++		if s.Scan() {
++			t.Errorf("#%d: scan ran too long, got %q", n, s.Text())
++		}
++		if wordCount != len(words) {
++			t.Errorf("#%d: termination expected at %d; got %d", n, len(words), wordCount)
++		}
++		err := s.Err()
++		if err != nil {
++			t.Errorf("#%d: %v", n, err)
++		}
++	}
++}
++
++// slowReader is a reader that returns only a few bytes at a time, to test the incremental
++// reads in Scanner.Scan.
++type slowReader struct {
++	max int
++	buf *bytes.Buffer
++}
++
++func (sr *slowReader) Read(p []byte) (n int, err error) {
++	if len(p) > sr.max {
++		p = p[0:sr.max]
++	}
++	return sr.buf.Read(p)
++}
++
++// genLine writes to buf a predictable but non-trivial line of text of length
++// n, including the terminal newline and an occasional carriage return.
++// If addNewline is false, the \r and \n are not emitted.
++func genLine(buf *bytes.Buffer, lineNum, n int, addNewline bool) {
++	buf.Reset()
++	doCR := lineNum%5 == 0
++	if doCR {
++		n--
++	}
++	for i := 0; i < n-1; i++ { // Stop early for \n.
++		c := 'a' + byte(lineNum+i)
++		if c == '\n' || c == '\r' { // Don't confuse us.
++			c = 'N'
++		}
++		buf.WriteByte(c)
++	}
++	if addNewline {
++		if doCR {
++			buf.WriteByte('\r')
++		}
++		buf.WriteByte('\n')
++	}
++	return
++}
++
++// Test the line splitter, including some carriage returns but no long lines.
++func TestScanLongLines(t *testing.T) {
++	const smallMaxTokenSize = 256 // Much smaller for more efficient testing.
++	// Build a buffer of lots of line lengths up to but not exceeding smallMaxTokenSize.
++	tmp := new(bytes.Buffer)
++	buf := new(bytes.Buffer)
++	lineNum := 0
++	j := 0
++	for i := 0; i < 2*smallMaxTokenSize; i++ {
++		genLine(tmp, lineNum, j, true)
++		if j < smallMaxTokenSize {
++			j++
++		} else {
++			j--
++		}
++		buf.Write(tmp.Bytes())
++		lineNum++
++	}
++	s := NewScanner(&slowReader{1, buf})
++	s.Split(ScanLines)
++	s.MaxTokenSize(smallMaxTokenSize)
++	j = 0
++	for lineNum := 0; s.Scan(); lineNum++ {
++		genLine(tmp, lineNum, j, false)
++		if j < smallMaxTokenSize {
++			j++
++		} else {
++			j--
++		}
++		line := tmp.String() // We use the string-valued token here, for variety.
++		if s.Text() != line {
++			t.Errorf("%d: bad line: %d %d\n%.100q\n%.100q\n", lineNum, len(s.Bytes()), len(line), s.Text(), line)
++		}
++	}
++	err := s.Err()
++	if err != nil {
++		t.Fatal(err)
++	}
++}
++
++// Test that the line splitter errors out on a long line.
++func TestScanLineTooLong(t *testing.T) {
++	const smallMaxTokenSize = 256 // Much smaller for more efficient testing.
++	// Build a buffer of lots of line lengths up to but not exceeding smallMaxTokenSize.
++	tmp := new(bytes.Buffer)
++	buf := new(bytes.Buffer)
++	lineNum := 0
++	j := 0
++	for i := 0; i < 2*smallMaxTokenSize; i++ {
++		genLine(tmp, lineNum, j, true)
++		j++
++		buf.Write(tmp.Bytes())
++		lineNum++
++	}
++	s := NewScanner(&slowReader{3, buf})
++	s.Split(ScanLines)
++	s.MaxTokenSize(smallMaxTokenSize)
++	j = 0
++	for lineNum := 0; s.Scan(); lineNum++ {
++		genLine(tmp, lineNum, j, false)
++		if j < smallMaxTokenSize {
++			j++
++		} else {
++			j--
++		}
++		line := tmp.Bytes()
++		if !bytes.Equal(s.Bytes(), line) {
++			t.Errorf("%d: bad line: %d %d\n%.100q\n%.100q\n", lineNum, len(s.Bytes()), len(line), s.Bytes(), line)
++		}
++	}
++	err := s.Err()
++	if err != ErrTooLong {
++		t.Fatalf("expected ErrTooLong; got %s", err)
++	}
++}
++
++// Test that the line splitter handles a final line without a newline.
++func testNoNewline(text string, lines []string, t *testing.T) {
++	buf := bytes.NewBufferString(text)
++	s := NewScanner(&slowReader{7, buf})
++	s.Split(ScanLines)
++	for lineNum := 0; s.Scan(); lineNum++ {
++		line := lines[lineNum]
++		if s.Text() != line {
++			t.Errorf("%d: bad line: %d %d\n%.100q\n%.100q\n", lineNum, len(s.Bytes()), len(line), s.Bytes(), line)
++		}
++	}
++	err := s.Err()
++	if err != nil {
++		t.Fatal(err)
++	}
++}
++
++var noNewlineLines = []string{
++	"abcdefghijklmn\nopqrstuvwxyz",
++}
++
++// Test that the line splitter handles a final line without a newline.
++func TestScanLineNoNewline(t *testing.T) {
++	const text = "abcdefghijklmn\nopqrstuvwxyz"
++	lines := []string{
++		"abcdefghijklmn",
++		"opqrstuvwxyz",
++	}
++	testNoNewline(text, lines, t)
++}
++
++// Test that the line splitter handles a final line with a carriage return but nonewline.
++func TestScanLineReturnButNoNewline(t *testing.T) {
++	const text = "abcdefghijklmn\nopqrstuvwxyz\r"
++	lines := []string{
++		"abcdefghijklmn",
++		"opqrstuvwxyz",
++	}
++	testNoNewline(text, lines, t)
++}
++
++// Test that the line splitter handles a final empty line.
++func TestScanLineEmptyFinalLine(t *testing.T) {
++	const text = "abcdefghijklmn\nopqrstuvwxyz\n\n"
++	lines := []string{
++		"abcdefghijklmn",
++		"opqrstuvwxyz",
++		"",
++	}
++	testNoNewline(text, lines, t)
++}
++
++// Test that the line splitter handles a final empty line with a carriage return but no newline.
++func TestScanLineEmptyFinalLineWithCR(t *testing.T) {
++	const text = "abcdefghijklmn\nopqrstuvwxyz\n\r"
++	lines := []string{
++		"abcdefghijklmn",
++		"opqrstuvwxyz",
++		"",
++	}
++	testNoNewline(text, lines, t)
++}
++
++var testError = errors.New("testError")
++
++// Test the correct error is returned when the split function errors out.
++func TestSplitError(t *testing.T) {
++	// Create a split function that delivers a little data, then a predictable error.
++	numSplits := 0
++	const okCount = 7
++	errorSplit := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
++		if atEOF {
++			panic("didn't get enough data")
++		}
++		if numSplits >= okCount {
++			return 0, nil, testError
++		}
++		numSplits++
++		return 1, data[0:1], nil
++	}
++	// Read the data.
++	const text = "abcdefghijklmnopqrstuvwxyz"
++	buf := bytes.NewBufferString(text)
++	s := NewScanner(&slowReader{1, buf})
++	s.Split(errorSplit)
++	var i int
++	for i = 0; s.Scan(); i++ {
++		if len(s.Bytes()) != 1 || text[i] != s.Bytes()[0] {
++			t.Errorf("#%d: expected %q got %q", i, text[i], s.Bytes()[0])
++		}
++	}
++	// Check correct termination location and error.
++	if i != okCount {
++		t.Errorf("unexpected termination; expected %d tokens got %d", okCount, i)
++	}
++	err := s.Err()
++	if err != testError {
++		t.Fatalf("expected %q got %v", testError, err)
++	}
++}
++
++// Test that an EOF is overridden by a user-generated scan error.
++func TestErrAtEOF(t *testing.T) {
++	s := NewScanner(strings.NewReader("1 2 33"))
++	// This spitter will fail on last entry, after s.err==EOF.
++	split := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
++		advance, token, err = ScanWords(data, atEOF)
++		if len(token) > 1 {
++			if s.ErrOrEOF() != io.EOF {
++				t.Fatal("not testing EOF")
++			}
++			err = testError
++		}
++		return
++	}
++	s.Split(split)
++	for s.Scan() {
++	}
++	if s.Err() != testError {
++		t.Fatal("wrong error:", s.Err())
++	}
++}
++
++// Test for issue 5268.
++type alwaysError struct{}
++
++func (alwaysError) Read(p []byte) (int, error) {
++	return 0, io.ErrUnexpectedEOF
++}
++
++func TestNonEOFWithEmptyRead(t *testing.T) {
++	scanner := NewScanner(alwaysError{})
++	for scanner.Scan() {
++		t.Fatal("read should fail")
++	}
++	err := scanner.Err()
++	if err != io.ErrUnexpectedEOF {
++		t.Errorf("unexpected error: %v", err)
++	}
++}
++
++// Test that Scan finishes if we have endless empty reads.
++type endlessZeros struct{}
++
++func (endlessZeros) Read(p []byte) (int, error) {
++	return 0, nil
++}
++
++func TestBadReader(t *testing.T) {
++	scanner := NewScanner(endlessZeros{})
++	for scanner.Scan() {
++		t.Fatal("read should fail")
++	}
++	err := scanner.Err()
++	if err != io.ErrNoProgress {
++		t.Errorf("unexpected error: %v", err)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/builtin/builtin.go gcc-4.8.1/libgo/go/builtin/builtin.go
+--- gcc-4.8.1.orig/libgo/go/builtin/builtin.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/builtin/builtin.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,6 +13,12 @@
+ // bool is the set of boolean values, true and false.
+ type bool bool
+ 
++// true and false are the two untyped boolean values.
++const (
++	true  = 0 == 0 // Untyped bool.
++	false = 0 != 0 // Untyped bool.
++)
++
+ // uint8 is the set of all unsigned 8-bit integers.
+ // Range: 0 through 255.
+ type uint8 uint8
+@@ -85,6 +91,15 @@
+ // used, by convention, to distinguish character values from integer values.
+ type rune rune
+ 
++// iota is a predeclared identifier representing the untyped integer ordinal
++// number of the current const specification in a (usually parenthesized)
++// const declaration. It is zero-indexed.
++const iota = 0 // Untyped int.
++
++// nil is a predeclared identifier representing the zero value for a
++// pointer, channel, func, interface, map, or slice type.
++var nil Type // Type must be a pointer, channel, func, interface, map, or slice type
++
+ // Type is here for the purposes of documentation only. It is a stand-in
+ // for any Go type, but represents the same type for any given function
+ // invocation.
+@@ -114,6 +129,8 @@
+ // result of append, often in the variable holding the slice itself:
+ //	slice = append(slice, elem1, elem2)
+ //	slice = append(slice, anotherSlice...)
++// As a special case, it is legal to append a string to a byte slice, like this:
++//	slice = append([]byte("hello "), "world"...)
+ func append(slice []Type, elems ...Type) []Type
+ 
+ // The copy built-in function copies elements from a source slice into a
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/buffer.go gcc-4.8.1/libgo/go/bytes/buffer.go
+--- gcc-4.8.1.orig/libgo/go/bytes/buffer.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/buffer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -87,6 +87,13 @@
+ 		var buf []byte
+ 		if b.buf == nil && n <= len(b.bootstrap) {
+ 			buf = b.bootstrap[0:]
++		} else if m+n <= cap(b.buf)/2 {
++			// We can slide things down instead of allocating a new
++			// slice. We only need m+n <= cap(b.buf) to slide, but
++			// we instead let capacity get twice as large so we
++			// don't spend all our time copying.
++			copy(b.buf[:], b.buf[b.off:])
++			buf = b.buf[:m]
+ 		} else {
+ 			// not enough space anywhere
+ 			buf = makeSlice(2*cap(b.buf) + n)
+@@ -112,20 +119,18 @@
+ 	b.buf = b.buf[0:m]
+ }
+ 
+-// Write appends the contents of p to the buffer.  The return
+-// value n is the length of p; err is always nil.
+-// If the buffer becomes too large, Write will panic with
+-// ErrTooLarge.
++// Write appends the contents of p to the buffer, growing the buffer as
++// needed. The return value n is the length of p; err is always nil. If the
++// buffer becomes too large, Write will panic with ErrTooLarge.
+ func (b *Buffer) Write(p []byte) (n int, err error) {
+ 	b.lastRead = opInvalid
+ 	m := b.grow(len(p))
+ 	return copy(b.buf[m:], p), nil
+ }
+ 
+-// WriteString appends the contents of s to the buffer.  The return
+-// value n is the length of s; err is always nil.
+-// If the buffer becomes too large, WriteString will panic with
+-// ErrTooLarge.
++// WriteString appends the contents of s to the buffer, growing the buffer as
++// needed. The return value n is the length of s; err is always nil. If the
++// buffer becomes too large, WriteString will panic with ErrTooLarge.
+ func (b *Buffer) WriteString(s string) (n int, err error) {
+ 	b.lastRead = opInvalid
+ 	m := b.grow(len(s))
+@@ -138,12 +143,10 @@
+ // underlying buffer.
+ const MinRead = 512
+ 
+-// ReadFrom reads data from r until EOF and appends it to the buffer.
+-// The return value n is the number of bytes read.
+-// Any error except io.EOF encountered during the read
+-// is also returned.
+-// If the buffer becomes too large, ReadFrom will panic with
+-// ErrTooLarge.
++// ReadFrom reads data from r until EOF and appends it to the buffer, growing
++// the buffer as needed. The return value n is the number of bytes read. Any
++// error except io.EOF encountered during the read is also returned. If the
++// buffer becomes too large, ReadFrom will panic with ErrTooLarge.
+ func (b *Buffer) ReadFrom(r io.Reader) (n int64, err error) {
+ 	b.lastRead = opInvalid
+ 	// If buffer is empty, reset to recover space.
+@@ -188,10 +191,10 @@
+ 	return make([]byte, n)
+ }
+ 
+-// WriteTo writes data to w until the buffer is drained or an error
+-// occurs. The return value n is the number of bytes written; it always
+-// fits into an int, but it is int64 to match the io.WriterTo interface.
+-// Any error encountered during the write is also returned.
++// WriteTo writes data to w until the buffer is drained or an error occurs.
++// The return value n is the number of bytes written; it always fits into an
++// int, but it is int64 to match the io.WriterTo interface. Any error
++// encountered during the write is also returned.
+ func (b *Buffer) WriteTo(w io.Writer) (n int64, err error) {
+ 	b.lastRead = opInvalid
+ 	if b.off < len(b.buf) {
+@@ -216,10 +219,9 @@
+ 	return
+ }
+ 
+-// WriteByte appends the byte c to the buffer.
+-// The returned error is always nil, but is included
+-// to match bufio.Writer's WriteByte.
+-// If the buffer becomes too large, WriteByte will panic with
++// WriteByte appends the byte c to the buffer, growing the buffer as needed.
++// The returned error is always nil, but is included to match bufio.Writer's
++// WriteByte. If the buffer becomes too large, WriteByte will panic with
+ // ErrTooLarge.
+ func (b *Buffer) WriteByte(c byte) error {
+ 	b.lastRead = opInvalid
+@@ -228,12 +230,10 @@
+ 	return nil
+ }
+ 
+-// WriteRune appends the UTF-8 encoding of Unicode
+-// code point r to the buffer, returning its length and
+-// an error, which is always nil but is included
+-// to match bufio.Writer's WriteRune.
+-// If the buffer becomes too large, WriteRune will panic with
+-// ErrTooLarge.
++// WriteRune appends the UTF-8 encoding of Unicode code point r to the
++// buffer, returning its length and an error, which is always nil but is
++// included to match bufio.Writer's WriteRune. The buffer is grown as needed;
++// if it becomes too large, WriteRune will panic with ErrTooLarge.
+ func (b *Buffer) WriteRune(r rune) (n int, err error) {
+ 	if r < utf8.RuneSelf {
+ 		b.WriteByte(byte(r))
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/buffer_test.go gcc-4.8.1/libgo/go/bytes/buffer_test.go
+--- gcc-4.8.1.orig/libgo/go/bytes/buffer_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/buffer_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -475,3 +475,53 @@
+ 		t.Errorf("ReadByte = %q; want %q", c, 'm')
+ 	}
+ }
++
++// Tests that we occasionally compact. Issue 5154.
++func TestBufferGrowth(t *testing.T) {
++	var b Buffer
++	buf := make([]byte, 1024)
++	b.Write(buf[0:1])
++	var cap0 int
++	for i := 0; i < 5<<10; i++ {
++		b.Write(buf)
++		b.Read(buf)
++		if i == 0 {
++			cap0 = b.Cap()
++		}
++	}
++	cap1 := b.Cap()
++	// (*Buffer).grow allows for 2x capacity slop before sliding,
++	// so set our error threshold at 3x.
++	if cap1 > cap0*3 {
++		t.Errorf("buffer cap = %d; too big (grew from %d)", cap1, cap0)
++	}
++}
++
++// From Issue 5154.
++func BenchmarkBufferNotEmptyWriteRead(b *testing.B) {
++	buf := make([]byte, 1024)
++	for i := 0; i < b.N; i++ {
++		var b Buffer
++		b.Write(buf[0:1])
++		for i := 0; i < 5<<10; i++ {
++			b.Write(buf)
++			b.Read(buf)
++		}
++	}
++}
++
++// Check that we don't compact too often. From Issue 5154.
++func BenchmarkBufferFullSmallReads(b *testing.B) {
++	buf := make([]byte, 1024)
++	for i := 0; i < b.N; i++ {
++		var b Buffer
++		b.Write(buf)
++		for b.Len()+20 < b.Cap() {
++			b.Write(buf[:10])
++		}
++		for i := 0; i < 5<<10; i++ {
++			b.Read(buf[:1])
++			b.Write(buf[:1])
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/bytes_decl.go gcc-4.8.1/libgo/go/bytes/bytes_decl.go
+--- gcc-4.8.1.orig/libgo/go/bytes/bytes_decl.go	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/bytes/bytes_decl.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,5 +4,13 @@
+ 
+ package bytes
+ 
++//go:noescape
++
+ // IndexByte returns the index of the first instance of c in s, or -1 if c is not present in s.
+ func IndexByte(s []byte, c byte) int // asm_$GOARCH.s
++
++//go:noescape
++
++// Equal returns a boolean reporting whether a == b.
++// A nil argument is equivalent to an empty slice.
++func Equal(a, b []byte) bool // asm_arm.s or ../runtime/asm_{386,amd64}.s
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/bytes.go gcc-4.8.1/libgo/go/bytes/bytes.go
+--- gcc-4.8.1.orig/libgo/go/bytes/bytes.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/bytes.go	2013-07-16 01:55:04.520470000 -0500
+@@ -37,10 +37,6 @@
+ 	return 0
+ }
+ 
+-// Equal returns a boolean reporting whether a == b.
+-// A nil argument is equivalent to an empty slice.
+-func Equal(a, b []byte) bool
+-
+ func equalPortable(a, b []byte) bool {
+ 	if len(a) != len(b) {
+ 		return false
+@@ -465,10 +461,10 @@
+ 	return unicode.IsSpace(r)
+ }
+ 
+-// BUG(r): The rule Title uses for word boundaries does not handle Unicode punctuation properly.
+-
+ // Title returns a copy of s with all Unicode letters that begin words
+ // mapped to their title case.
++//
++// BUG: The rule Title uses for word boundaries does not handle Unicode punctuation properly.
+ func Title(s []byte) []byte {
+ 	// Use a closure here to remember state.
+ 	// Hackish but effective. Depends on Map scanning in order and calling
+@@ -515,6 +511,24 @@
+ 	return TrimRightFunc(TrimLeftFunc(s, f), f)
+ }
+ 
++// TrimPrefix returns s without the provided leading prefix string.
++// If s doesn't start with prefix, s is returned unchanged.
++func TrimPrefix(s, prefix []byte) []byte {
++	if HasPrefix(s, prefix) {
++		return s[len(prefix):]
++	}
++	return s
++}
++
++// TrimSuffix returns s without the provided trailing suffix string.
++// If s doesn't end with suffix, s is returned unchanged.
++func TrimSuffix(s, suffix []byte) []byte {
++	if HasSuffix(s, suffix) {
++		return s[:len(s)-len(suffix)]
++	}
++	return s
++}
++
+ // IndexFunc interprets s as a sequence of UTF-8-encoded Unicode code points.
+ // It returns the byte index in s of the first Unicode
+ // code point satisfying f(c), or -1 if none do.
+@@ -553,7 +567,10 @@
+ // inverted.
+ func lastIndexFunc(s []byte, f func(r rune) bool, truth bool) int {
+ 	for i := len(s); i > 0; {
+-		r, size := utf8.DecodeLastRune(s[0:i])
++		r, size := rune(s[i-1]), 1
++		if r >= utf8.RuneSelf {
++			r, size = utf8.DecodeLastRune(s[0:i])
++		}
+ 		i -= size
+ 		if f(r) == truth {
+ 			return i
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/bytes_test.go gcc-4.8.1/libgo/go/bytes/bytes_test.go
+--- gcc-4.8.1.orig/libgo/go/bytes/bytes_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/bytes_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -61,6 +61,10 @@
+ 	{[]byte("ab"), []byte("x"), -1},
+ 	{[]byte("x"), []byte("a"), 1},
+ 	{[]byte("b"), []byte("x"), -1},
++	// test runtimeÂ·memeq's chunked implementation
++	{[]byte("abcdefgh"), []byte("abcdefgh"), 0},
++	{[]byte("abcdefghi"), []byte("abcdefghi"), 0},
++	{[]byte("abcdefghi"), []byte("abcdefghj"), -1},
+ 	// nil tests
+ 	{nil, nil, 0},
+ 	{[]byte(""), nil, 0},
+@@ -86,6 +90,58 @@
+ 	}
+ }
+ 
++func TestEqual(t *testing.T) {
++	var size = 128
++	if testing.Short() {
++		size = 32
++	}
++	a := make([]byte, size)
++	b := make([]byte, size)
++	b_init := make([]byte, size)
++	// randomish but deterministic data
++	for i := 0; i < size; i++ {
++		a[i] = byte(17 * i)
++		b_init[i] = byte(23*i + 100)
++	}
++
++	for len := 0; len <= size; len++ {
++		for x := 0; x <= size-len; x++ {
++			for y := 0; y <= size-len; y++ {
++				copy(b, b_init)
++				copy(b[y:y+len], a[x:x+len])
++				if !Equal(a[x:x+len], b[y:y+len]) || !Equal(b[y:y+len], a[x:x+len]) {
++					t.Errorf("Equal(%d, %d, %d) = false", len, x, y)
++				}
++			}
++		}
++	}
++}
++
++// make sure Equal returns false for minimally different strings.  The data
++// is all zeros except for a single one in one location.
++func TestNotEqual(t *testing.T) {
++	var size = 128
++	if testing.Short() {
++		size = 32
++	}
++	a := make([]byte, size)
++	b := make([]byte, size)
++
++	for len := 0; len <= size; len++ {
++		for x := 0; x <= size-len; x++ {
++			for y := 0; y <= size-len; y++ {
++				for diffpos := x; diffpos < x+len; diffpos++ {
++					a[diffpos] = 1
++					if Equal(a[x:x+len], b[y:y+len]) || Equal(b[y:y+len], a[x:x+len]) {
++						t.Errorf("NotEqual(%d, %d, %d, %d) = true", len, x, y, diffpos)
++					}
++					a[diffpos] = 0
++				}
++			}
++		}
++	}
++}
++
+ var indexTests = []BinOpTest{
+ 	{"", "", 0},
+ 	{"", "a", -1},
+@@ -303,10 +359,30 @@
+ 	buf[n-1] = '\x00'
+ }
+ 
++func BenchmarkEqual0(b *testing.B) {
++	var buf [4]byte
++	buf1 := buf[0:0]
++	buf2 := buf[1:1]
++	for i := 0; i < b.N; i++ {
++		eq := Equal(buf1, buf2)
++		if !eq {
++			b.Fatal("bad equal")
++		}
++	}
++}
++
++func BenchmarkEqual1(b *testing.B)           { bmEqual(b, Equal, 1) }
++func BenchmarkEqual6(b *testing.B)           { bmEqual(b, Equal, 6) }
++func BenchmarkEqual9(b *testing.B)           { bmEqual(b, Equal, 9) }
++func BenchmarkEqual15(b *testing.B)          { bmEqual(b, Equal, 15) }
++func BenchmarkEqual16(b *testing.B)          { bmEqual(b, Equal, 16) }
++func BenchmarkEqual20(b *testing.B)          { bmEqual(b, Equal, 20) }
+ func BenchmarkEqual32(b *testing.B)          { bmEqual(b, Equal, 32) }
+ func BenchmarkEqual4K(b *testing.B)          { bmEqual(b, Equal, 4<<10) }
+ func BenchmarkEqual4M(b *testing.B)          { bmEqual(b, Equal, 4<<20) }
+ func BenchmarkEqual64M(b *testing.B)         { bmEqual(b, Equal, 64<<20) }
++func BenchmarkEqualPort1(b *testing.B)       { bmEqual(b, EqualPortable, 1) }
++func BenchmarkEqualPort6(b *testing.B)       { bmEqual(b, EqualPortable, 6) }
+ func BenchmarkEqualPort32(b *testing.B)      { bmEqual(b, EqualPortable, 32) }
+ func BenchmarkEqualPort4K(b *testing.B)      { bmEqual(b, EqualPortable, 4<<10) }
+ func BenchmarkEqualPortable4M(b *testing.B)  { bmEqual(b, EqualPortable, 4<<20) }
+@@ -794,8 +870,8 @@
+ }
+ 
+ type TrimTest struct {
+-	f               string
+-	in, cutset, out string
++	f            string
++	in, arg, out string
+ }
+ 
+ var trimTests = []TrimTest{
+@@ -820,12 +896,17 @@
+ 	{"TrimRight", "", "123", ""},
+ 	{"TrimRight", "", "", ""},
+ 	{"TrimRight", "âº\xc0", "âº", "âº\xc0"},
++	{"TrimPrefix", "aabb", "a", "abb"},
++	{"TrimPrefix", "aabb", "b", "aabb"},
++	{"TrimSuffix", "aabb", "a", "aabb"},
++	{"TrimSuffix", "aabb", "b", "aab"},
+ }
+ 
+ func TestTrim(t *testing.T) {
+ 	for _, tc := range trimTests {
+ 		name := tc.f
+ 		var f func([]byte, string) []byte
++		var fb func([]byte, []byte) []byte
+ 		switch name {
+ 		case "Trim":
+ 			f = Trim
+@@ -833,12 +914,21 @@
+ 			f = TrimLeft
+ 		case "TrimRight":
+ 			f = TrimRight
++		case "TrimPrefix":
++			fb = TrimPrefix
++		case "TrimSuffix":
++			fb = TrimSuffix
+ 		default:
+ 			t.Errorf("Undefined trim function %s", name)
+ 		}
+-		actual := string(f([]byte(tc.in), tc.cutset))
++		var actual string
++		if f != nil {
++			actual = string(f([]byte(tc.in), tc.arg))
++		} else {
++			actual = string(fb([]byte(tc.in), []byte(tc.arg)))
++		}
+ 		if actual != tc.out {
+-			t.Errorf("%s(%q, %q) = %q; want %q", name, tc.in, tc.cutset, actual, tc.out)
++			t.Errorf("%s(%q, %q) = %q; want %q", name, tc.in, tc.arg, actual, tc.out)
+ 		}
+ 	}
+ }
+@@ -1059,3 +1149,10 @@
+ 		FieldsFunc(fieldsInput, unicode.IsSpace)
+ 	}
+ }
++
++func BenchmarkTrimSpace(b *testing.B) {
++	s := []byte("  Some text.  \n")
++	for i := 0; i < b.N; i++ {
++		TrimSpace(s)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/equal_test.go gcc-4.8.1/libgo/go/bytes/equal_test.go
+--- gcc-4.8.1.orig/libgo/go/bytes/equal_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/equal_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,47 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++//
++// +build linux
++
++package bytes_test
++
++import (
++	. "bytes"
++	"syscall"
++	"testing"
++	"unsafe"
++)
++
++// This file tests the situation where memeq is checking
++// data very near to a page boundary.  We want to make sure
++// equal does not read across the boundary and cause a page
++// fault where it shouldn't.
++
++// This test runs only on linux.  The code being tested is
++// not OS-specific, so it does not need to be tested on all
++// operating systems.
++
++func TestEqualNearPageBoundary(t *testing.T) {
++	pagesize := syscall.Getpagesize()
++	b := make([]byte, 4*pagesize)
++	i := pagesize
++	for ; uintptr(unsafe.Pointer(&b[i]))%uintptr(pagesize) != 0; i++ {
++	}
++	syscall.Mprotect(b[i-pagesize:i], 0)
++	syscall.Mprotect(b[i+pagesize:i+2*pagesize], 0)
++	defer syscall.Mprotect(b[i-pagesize:i], syscall.PROT_READ|syscall.PROT_WRITE)
++	defer syscall.Mprotect(b[i+pagesize:i+2*pagesize], syscall.PROT_READ|syscall.PROT_WRITE)
++
++	// both of these should fault
++	//pagesize += int(b[i-1])
++	//pagesize += int(b[i+pagesize])
++
++	for j := 0; j < pagesize; j++ {
++		b[i+j] = 'A'
++	}
++	for j := 0; j <= pagesize; j++ {
++		Equal(b[i:i+j], b[i+pagesize-j:i+pagesize])
++		Equal(b[i+pagesize-j:i+pagesize], b[i:i+j])
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/example_test.go gcc-4.8.1/libgo/go/bytes/example_test.go
+--- gcc-4.8.1.orig/libgo/go/bytes/example_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -66,3 +66,20 @@
+ 		// Found it!
+ 	}
+ }
++
++func ExampleTrimSuffix() {
++	var b = []byte("Hello, goodbye, etc!")
++	b = bytes.TrimSuffix(b, []byte("goodbye, etc!"))
++	b = bytes.TrimSuffix(b, []byte("gopher"))
++	b = append(b, bytes.TrimSuffix([]byte("world!"), []byte("x!"))...)
++	os.Stdout.Write(b)
++	// Output: Hello, world!
++}
++
++func ExampleTrimPrefix() {
++	var b = []byte("Goodbye,, world!")
++	b = bytes.TrimPrefix(b, []byte("Goodbye,"))
++	b = bytes.TrimPrefix(b, []byte("See ya,"))
++	fmt.Printf("Hello%s", b)
++	// Output: Hello, world!
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/bytes/export_test.go gcc-4.8.1/libgo/go/bytes/export_test.go
+--- gcc-4.8.1.orig/libgo/go/bytes/export_test.go	2012-01-11 19:31:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/bytes/export_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,3 +7,7 @@
+ // Export func for testing
+ var IndexBytePortable = indexBytePortable
+ var EqualPortable = equalPortable
++
++func (b *Buffer) Cap() int {
++	return cap(b.buf)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/bzip2/huffman.go gcc-4.8.1/libgo/go/compress/bzip2/huffman.go
+--- gcc-4.8.1.orig/libgo/go/compress/bzip2/huffman.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/bzip2/huffman.go	2013-07-16 01:55:04.520470000 -0500
+@@ -54,8 +54,6 @@
+ 			nodeIndex = node.right
+ 		}
+ 	}
+-
+-	panic("unreachable")
+ }
+ 
+ // newHuffmanTree builds a Huffman tree from a slice containing the code
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/flate/deflate_test.go gcc-4.8.1/libgo/go/compress/flate/deflate_test.go
+--- gcc-4.8.1.orig/libgo/go/compress/flate/deflate_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/flate/deflate_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -158,7 +158,6 @@
+ 		}
+ 		<-b.ready
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func (b *syncBuffer) signal() {
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/flate/inflate.go gcc-4.8.1/libgo/go/compress/flate/inflate.go
+--- gcc-4.8.1.orig/libgo/go/compress/flate/inflate.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/flate/inflate.go	2013-07-16 01:55:04.520470000 -0500
+@@ -263,7 +263,6 @@
+ 		}
+ 		f.step(f)
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func (f *decompressor) Close() error {
+@@ -495,7 +494,6 @@
+ 			return
+ 		}
+ 	}
+-	panic("unreached")
+ }
+ 
+ // copyHist copies f.copyLen bytes from f.hist (f.copyDist bytes ago) to itself.
+@@ -642,7 +640,6 @@
+ 			return int(chunk >> huffmanValueShift), nil
+ 		}
+ 	}
+-	return 0, CorruptInputError(f.roffset)
+ }
+ 
+ // Flush any buffered output to the underlying writer.
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/flate/token.go gcc-4.8.1/libgo/go/compress/flate/token.go
+--- gcc-4.8.1.orig/libgo/go/compress/flate/token.go	2009-12-21 23:56:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/flate/token.go	2013-07-16 01:55:04.520470000 -0500
+@@ -99,5 +99,4 @@
+ 	default:
+ 		return offsetCodes[off>>14] + 28
+ 	}
+-	panic("unreachable")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/gzip/gunzip.go gcc-4.8.1/libgo/go/compress/gzip/gunzip.go
+--- gcc-4.8.1.orig/libgo/go/compress/gzip/gunzip.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/gzip/gunzip.go	2013-07-16 01:55:04.520470000 -0500
+@@ -120,7 +120,6 @@
+ 			return string(z.buf[0:i]), nil
+ 		}
+ 	}
+-	panic("not reached")
+ }
+ 
+ func (z *Reader) read2() (uint32, error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/gzip/gzip.go gcc-4.8.1/libgo/go/compress/gzip/gzip.go
+--- gcc-4.8.1.orig/libgo/go/compress/gzip/gzip.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/gzip/gzip.go	2013-07-16 01:55:04.520470000 -0500
+@@ -28,7 +28,7 @@
+ 	Header
+ 	w          io.Writer
+ 	level      int
+-	compressor io.WriteCloser
++	compressor *flate.Writer
+ 	digest     hash.Hash32
+ 	size       uint32
+ 	closed     bool
+@@ -191,6 +191,28 @@
+ 	return n, z.err
+ }
+ 
++// Flush flushes any pending compressed data to the underlying writer.
++//
++// It is useful mainly in compressed network protocols, to ensure that
++// a remote reader has enough data to reconstruct a packet. Flush does
++// not return until the data has been written. If the underlying
++// writer returns an error, Flush returns that error.
++//
++// In the terminology of the zlib library, Flush is equivalent to Z_SYNC_FLUSH.
++func (z *Writer) Flush() error {
++	if z.err != nil {
++		return z.err
++	}
++	if z.closed {
++		return nil
++	}
++	if z.compressor == nil {
++		z.Write(nil)
++	}
++	z.err = z.compressor.Flush()
++	return z.err
++}
++
+ // Close closes the Writer. It does not close the underlying io.Writer.
+ func (z *Writer) Close() error {
+ 	if z.err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/gzip/gzip_test.go gcc-4.8.1/libgo/go/compress/gzip/gzip_test.go
+--- gcc-4.8.1.orig/libgo/go/compress/gzip/gzip_test.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/gzip/gzip_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -157,3 +157,43 @@
+ 		}
+ 	}
+ }
++
++func TestWriterFlush(t *testing.T) {
++	buf := new(bytes.Buffer)
++
++	w := NewWriter(buf)
++	w.Comment = "comment"
++	w.Extra = []byte("extra")
++	w.ModTime = time.Unix(1e8, 0)
++	w.Name = "name"
++
++	n0 := buf.Len()
++	if n0 != 0 {
++		t.Fatalf("buffer size = %d before writes; want 0", n0)
++	}
++
++	if err := w.Flush(); err != nil {
++		t.Fatal(err)
++	}
++
++	n1 := buf.Len()
++	if n1 == 0 {
++		t.Fatal("no data after first flush")
++	}
++
++	w.Write([]byte("x"))
++
++	n2 := buf.Len()
++	if n1 != n2 {
++		t.Fatalf("after writing a single byte, size changed from %d to %d; want no change", n1, n2)
++	}
++
++	if err := w.Flush(); err != nil {
++		t.Fatal(err)
++	}
++
++	n3 := buf.Len()
++	if n2 == n3 {
++		t.Fatal("Flush didn't flush any data")
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/compress/lzw/reader.go gcc-4.8.1/libgo/go/compress/lzw/reader.go
+--- gcc-4.8.1.orig/libgo/go/compress/lzw/reader.go	2011-12-12 17:40:51.000000000 -0600
++++ gcc-4.8.1/libgo/go/compress/lzw/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -121,7 +121,6 @@
+ 		}
+ 		d.decode()
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // decode decompresses bytes from r and leaves them in d.toRead.
+@@ -203,7 +202,6 @@
+ 			return
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func (d *decoder) flush() {
+diff -Naur gcc-4.8.1.orig/libgo/go/container/heap/example_test.go gcc-4.8.1/libgo/go/container/heap/example_test.go
+--- gcc-4.8.1.orig/libgo/go/container/heap/example_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/container/heap/example_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,100 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This example demonstrates a priority queue built using the heap interface.
+-package heap_test
+-
+-import (
+-	"container/heap"
+-	"fmt"
+-)
+-
+-// An Item is something we manage in a priority queue.
+-type Item struct {
+-	value    string // The value of the item; arbitrary.
+-	priority int    // The priority of the item in the queue.
+-	// The index is needed by changePriority and is maintained by the heap.Interface methods.
+-	index int // The index of the item in the heap.
+-}
+-
+-// A PriorityQueue implements heap.Interface and holds Items.
+-type PriorityQueue []*Item
+-
+-func (pq PriorityQueue) Len() int { return len(pq) }
+-
+-func (pq PriorityQueue) Less(i, j int) bool {
+-	// We want Pop to give us the highest, not lowest, priority so we use greater than here.
+-	return pq[i].priority > pq[j].priority
+-}
+-
+-func (pq PriorityQueue) Swap(i, j int) {
+-	pq[i], pq[j] = pq[j], pq[i]
+-	pq[i].index = i
+-	pq[j].index = j
+-}
+-
+-func (pq *PriorityQueue) Push(x interface{}) {
+-	// Push and Pop use pointer receivers because they modify the slice's length,
+-	// not just its contents.
+-	n := len(*pq)
+-	item := x.(*Item)
+-	item.index = n
+-	*pq = append(*pq, item)
+-}
+-
+-func (pq *PriorityQueue) Pop() interface{} {
+-	a := *pq
+-	n := len(a)
+-	item := a[n-1]
+-	item.index = -1 // for safety
+-	*pq = a[0 : n-1]
+-	return item
+-}
+-
+-// update is not used by the example but shows how to take the top item from
+-// the queue, update its priority and value, and put it back.
+-func (pq *PriorityQueue) update(value string, priority int) {
+-	item := heap.Pop(pq).(*Item)
+-	item.value = value
+-	item.priority = priority
+-	heap.Push(pq, item)
+-}
+-
+-// changePriority is not used by the example but shows how to change the
+-// priority of an arbitrary item.
+-func (pq *PriorityQueue) changePriority(item *Item, priority int) {
+-	heap.Remove(pq, item.index)
+-	item.priority = priority
+-	heap.Push(pq, item)
+-}
+-
+-// This example pushes 10 items into a PriorityQueue and takes them out in
+-// order of priority.
+-func Example() {
+-	const nItem = 10
+-	// Random priorities for the items (a permutation of 0..9, times 11)).
+-	priorities := [nItem]int{
+-		77, 22, 44, 55, 11, 88, 33, 99, 00, 66,
+-	}
+-	values := [nItem]string{
+-		"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
+-	}
+-	// Create a priority queue and put some items in it.
+-	pq := make(PriorityQueue, 0, nItem)
+-	for i := 0; i < cap(pq); i++ {
+-		item := &Item{
+-			value:    values[i],
+-			priority: priorities[i],
+-		}
+-		heap.Push(&pq, item)
+-	}
+-	// Take the items out; should arrive in decreasing priority order.
+-	// For example, the highest priority (99) is the seventh item, so output starts with 99:"seven".
+-	for i := 0; i < nItem; i++ {
+-		item := heap.Pop(&pq).(*Item)
+-		fmt.Printf("%.2d:%s ", item.priority, item.value)
+-	}
+-	// Output:
+-	// 99:seven 88:five 77:zero 66:nine 55:three 44:two 33:six 22:one 11:four 00:eight
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/container/heap/heap.go gcc-4.8.1/libgo/go/container/heap/heap.go
+--- gcc-4.8.1.orig/libgo/go/container/heap/heap.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/container/heap/heap.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,13 +4,13 @@
+ 
+ // Package heap provides heap operations for any type that implements
+ // heap.Interface. A heap is a tree with the property that each node is the
+-// highest-valued node in its subtree.
++// minimum-valued node in its subtree.
+ //
+ // A heap is a common way to implement a priority queue. To build a priority
+ // queue, implement the Heap interface with the (negative) priority as the
+ // ordering for the Less method, so Push adds items while Pop removes the
+ // highest-priority item from the queue. The Examples include such an
+-// implementation; the file example_test.go has the complete source.
++// implementation; the file example_pq_test.go has the complete source.
+ //
+ package heap
+ 
+@@ -90,7 +90,7 @@
+ func down(h Interface, i, n int) {
+ 	for {
+ 		j1 := 2*i + 1
+-		if j1 >= n {
++		if j1 >= n || j1 < 0 { // j1 < 0 after int overflow
+ 			break
+ 		}
+ 		j := j1 // left child
+diff -Naur gcc-4.8.1.orig/libgo/go/container/heap/heap_test.go gcc-4.8.1/libgo/go/container/heap/heap_test.go
+--- gcc-4.8.1.orig/libgo/go/container/heap/heap_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/container/heap/heap_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,9 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package heap_test
++package heap
+ 
+ import (
+-	. "container/heap"
+ 	"testing"
+ )
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/cipher/cbc.go gcc-4.8.1/libgo/go/crypto/cipher/cbc.go
+--- gcc-4.8.1.orig/libgo/go/crypto/cipher/cbc.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/cipher/cbc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -42,6 +42,12 @@
+ func (x *cbcEncrypter) BlockSize() int { return x.blockSize }
+ 
+ func (x *cbcEncrypter) CryptBlocks(dst, src []byte) {
++	if len(src)%x.blockSize != 0 {
++		panic("crypto/cipher: input not full blocks")
++	}
++	if len(dst) < len(src) {
++		panic("crypto/cipher: output smaller than input")
++	}
+ 	for len(src) > 0 {
+ 		for i := 0; i < x.blockSize; i++ {
+ 			x.iv[i] ^= src[i]
+@@ -70,6 +76,12 @@
+ func (x *cbcDecrypter) BlockSize() int { return x.blockSize }
+ 
+ func (x *cbcDecrypter) CryptBlocks(dst, src []byte) {
++	if len(src)%x.blockSize != 0 {
++		panic("crypto/cipher: input not full blocks")
++	}
++	if len(dst) < len(src) {
++		panic("crypto/cipher: output smaller than input")
++	}
+ 	for len(src) > 0 {
+ 		x.b.Decrypt(x.tmp, src[:x.blockSize])
+ 		for i := 0; i < x.blockSize; i++ {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/cipher/cipher_test.go gcc-4.8.1/libgo/go/crypto/cipher/cipher_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/cipher/cipher_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/cipher/cipher_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,36 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package cipher_test
++
++import (
++	"crypto/aes"
++	"crypto/cipher"
++	"testing"
++)
++
++func TestCryptBlocks(t *testing.T) {
++	buf := make([]byte, 16)
++	block, _ := aes.NewCipher(buf)
++
++	mode := cipher.NewCBCDecrypter(block, buf)
++	mustPanic(t, "crypto/cipher: input not full blocks", func() { mode.CryptBlocks(buf, buf[:3]) })
++	mustPanic(t, "crypto/cipher: output smaller than input", func() { mode.CryptBlocks(buf[:3], buf) })
++
++	mode = cipher.NewCBCEncrypter(block, buf)
++	mustPanic(t, "crypto/cipher: input not full blocks", func() { mode.CryptBlocks(buf, buf[:3]) })
++	mustPanic(t, "crypto/cipher: output smaller than input", func() { mode.CryptBlocks(buf[:3], buf) })
++}
++
++func mustPanic(t *testing.T, msg string, f func()) {
++	defer func() {
++		err := recover()
++		if err == nil {
++			t.Errorf("function did not panic, wanted %q", msg)
++		} else if err != msg {
++			t.Errorf("got panic %v, wanted %q", err, msg)
++		}
++	}()
++	f()
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/cipher/example_test.go gcc-4.8.1/libgo/go/crypto/cipher/example_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/cipher/example_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/cipher/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -233,7 +233,7 @@
+ 	}
+ 	defer outFile.Close()
+ 
+-	reader := &cipher.StreamReader{stream, inFile}
++	reader := &cipher.StreamReader{S: stream, R: inFile}
+ 	// Copy the input file to the output file, decrypting as we go.
+ 	if _, err := io.Copy(outFile, reader); err != nil {
+ 		panic(err)
+@@ -270,7 +270,7 @@
+ 	}
+ 	defer outFile.Close()
+ 
+-	writer := &cipher.StreamWriter{stream, outFile, nil}
++	writer := &cipher.StreamWriter{S: stream, W: outFile}
+ 	// Copy the input file to the output file, encrypting as we go.
+ 	if _, err := io.Copy(writer, inFile); err != nil {
+ 		panic(err)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/dsa/dsa.go gcc-4.8.1/libgo/go/crypto/dsa/dsa.go
+--- gcc-4.8.1.orig/libgo/go/crypto/dsa/dsa.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/dsa/dsa.go	2013-07-16 01:55:04.520470000 -0500
+@@ -144,8 +144,6 @@
+ 		params.G = g
+ 		return
+ 	}
+-
+-	panic("unreachable")
+ }
+ 
+ // GenerateKey generates a public&private key pair. The Parameters of the
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/dsa/dsa_test.go gcc-4.8.1/libgo/go/crypto/dsa/dsa_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/dsa/dsa_test.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/dsa/dsa_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -63,8 +63,9 @@
+ }
+ 
+ func TestParameterGeneration(t *testing.T) {
+-	// This test is too slow to run all the time.
+-	return
++	if testing.Short() {
++		t.Skip("skipping parameter generation test in short mode")
++	}
+ 
+ 	testParameterGeneration(t, L1024N160, 1024, 160)
+ 	testParameterGeneration(t, L2048N224, 2048, 224)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/ecdsa/ecdsa.go gcc-4.8.1/libgo/go/crypto/ecdsa/ecdsa.go
+--- gcc-4.8.1.orig/libgo/go/crypto/ecdsa/ecdsa.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/crypto/ecdsa/ecdsa.go	2013-07-16 01:55:04.520470000 -0500
+@@ -49,7 +49,7 @@
+ 	return
+ }
+ 
+-// GenerateKey generates a public&private key pair.
++// GenerateKey generates a public and private key pair.
+ func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error) {
+ 	k, err := randFieldElement(c, rand)
+ 	if err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/md5/gen.go gcc-4.8.1/libgo/go/crypto/md5/gen.go
+--- gcc-4.8.1.orig/libgo/go/crypto/md5/gen.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/md5/gen.go	2013-07-16 01:55:04.520470000 -0500
+@@ -161,6 +161,11 @@
+ }
+ 
+ var program = `
++// DO NOT EDIT.
++// Generate with: go run gen.go{{if .Full}} -full{{end}} | gofmt >md5block.go
++
++// +build !amd64
++
+ package md5
+ 
+ import (
+@@ -186,6 +191,16 @@
+ 	}
+ {{end}}
+ 
++const x86 = runtime.GOARCH == "amd64" || runtime.GOARCH == "386"
++
++var littleEndian bool
++
++func init() {
++	x := uint32(0x04030201)
++	y := [4]byte{0x1, 0x2, 0x3, 0x4}
++	littleEndian = *(*[4]byte)(unsafe.Pointer(&x)) == y
++}
++
+ func block(dig *digest, p []byte) {
+ 	a := dig.s[0]
+ 	b := dig.s[1]
+@@ -197,13 +212,13 @@
+ 		aa, bb, cc, dd := a, b, c, d
+ 
+ 		// This is a constant condition - it is not evaluated on each iteration.
+-		if runtime.GOARCH == "amd64" || runtime.GOARCH == "386" {
++		if x86 {
+ 			// MD5 was designed so that x86 processors can just iterate
+ 			// over the block data directly as uint32s, and we generate
+ 			// less code and run 1.3x faster if we take advantage of that.
+ 			// My apologies.
+ 			X = (*[16]uint32)(unsafe.Pointer(&p[0]))
+-		} else if uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 {
++		} else if littleEndian && uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 {
+ 			X = (*[16]uint32)(unsafe.Pointer(&p[0]))
+ 		} else {
+ 			X = &xbuf
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/md5/md5block_decl.go gcc-4.8.1/libgo/go/crypto/md5/md5block_decl.go
+--- gcc-4.8.1.orig/libgo/go/crypto/md5/md5block_decl.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/md5/md5block_decl.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,9 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build amd64 386
++
++package md5
++
++func block(dig *digest, p []byte)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/md5/md5block.go gcc-4.8.1/libgo/go/crypto/md5/md5block.go
+--- gcc-4.8.1.orig/libgo/go/crypto/md5/md5block.go	2013-02-07 15:40:10.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/md5/md5block.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1,3 +1,8 @@
++// DO NOT EDIT.
++// Generate with: go run gen.go -full | gofmt >md5block.go
++
++// +build !amd64,!386
++
+ package md5
+ 
+ import (
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/md5/md5_test.go gcc-4.8.1/libgo/go/crypto/md5/md5_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/md5/md5_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/md5/md5_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,9 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package md5_test
++package md5
+ 
+ import (
+-	"crypto/md5"
+ 	"fmt"
+ 	"io"
+ 	"testing"
+@@ -54,7 +53,7 @@
+ func TestGolden(t *testing.T) {
+ 	for i := 0; i < len(golden); i++ {
+ 		g := golden[i]
+-		c := md5.New()
++		c := New()
+ 		buf := make([]byte, len(g.in)+4)
+ 		for j := 0; j < 3+4; j++ {
+ 			if j < 2 {
+@@ -79,14 +78,14 @@
+ }
+ 
+ func ExampleNew() {
+-	h := md5.New()
++	h := New()
+ 	io.WriteString(h, "The fog is getting thicker!")
+ 	io.WriteString(h, "And Leon's getting laaarger!")
+ 	fmt.Printf("%x", h.Sum(nil))
+ 	// Output: e2c569be17396eca2a2e3c11578123ed
+ }
+ 
+-var bench = md5.New()
++var bench = New()
+ var buf = make([]byte, 8192+1)
+ var sum = make([]byte, bench.Size())
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rand/util.go gcc-4.8.1/libgo/go/crypto/rand/util.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rand/util.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rand/util.go	2013-07-16 01:55:04.520470000 -0500
+@@ -98,12 +98,13 @@
+ 			return
+ 		}
+ 	}
+-
+-	return
+ }
+ 
+-// Int returns a uniform random value in [0, max).
++// Int returns a uniform random value in [0, max). It panics if max <= 0.
+ func Int(rand io.Reader, max *big.Int) (n *big.Int, err error) {
++	if max.Sign() <= 0 {
++		panic("crypto/rand: argument to Int is <= 0")
++	}
+ 	k := (max.BitLen() + 7) / 8
+ 
+ 	// b is the number of bits in the most significant byte of max.
+@@ -130,6 +131,4 @@
+ 			return
+ 		}
+ 	}
+-
+-	return
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_asm.go gcc-4.8.1/libgo/go/crypto/rc4/rc4_asm.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_asm.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rc4/rc4_asm.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,18 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build amd64 arm 386
++
++package rc4
++
++func xorKeyStream(dst, src *byte, n int, state *[256]uint32, i, j *uint8)
++
++// XORKeyStream sets dst to the result of XORing src with the key stream.
++// Dst and src may be the same slice but otherwise should not overlap.
++func (c *Cipher) XORKeyStream(dst, src []byte) {
++	if len(src) == 0 {
++		return
++	}
++	xorKeyStream(&dst[0], &src[0], len(src), &c.s, &c.i, &c.j)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4.go gcc-4.8.1/libgo/go/crypto/rc4/rc4.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rc4/rc4.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,7 +13,7 @@
+ 
+ // A Cipher is an instance of RC4 using a particular key.
+ type Cipher struct {
+-	s    [256]byte
++	s    [256]uint32
+ 	i, j uint8
+ }
+ 
+@@ -32,27 +32,16 @@
+ 	}
+ 	var c Cipher
+ 	for i := 0; i < 256; i++ {
+-		c.s[i] = uint8(i)
++		c.s[i] = uint32(i)
+ 	}
+ 	var j uint8 = 0
+ 	for i := 0; i < 256; i++ {
+-		j += c.s[i] + key[i%k]
++		j += uint8(c.s[i]) + key[i%k]
+ 		c.s[i], c.s[j] = c.s[j], c.s[i]
+ 	}
+ 	return &c, nil
+ }
+ 
+-// XORKeyStream sets dst to the result of XORing src with the key stream.
+-// Dst and src may be the same slice but otherwise should not overlap.
+-func (c *Cipher) XORKeyStream(dst, src []byte) {
+-	for i := range src {
+-		c.i += 1
+-		c.j += c.s[c.i]
+-		c.s[c.i], c.s[c.j] = c.s[c.j], c.s[c.i]
+-		dst[i] = src[i] ^ c.s[c.s[c.i]+c.s[c.j]]
+-	}
+-}
+-
+ // Reset zeros the key data so that it will no longer appear in the
+ // process's memory.
+ func (c *Cipher) Reset() {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_ref.go gcc-4.8.1/libgo/go/crypto/rc4/rc4_ref.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_ref.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rc4/rc4_ref.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,20 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build !amd64,!arm,!386
++
++package rc4
++
++// XORKeyStream sets dst to the result of XORing src with the key stream.
++// Dst and src may be the same slice but otherwise should not overlap.
++func (c *Cipher) XORKeyStream(dst, src []byte) {
++	i, j := c.i, c.j
++	for k, v := range src {
++		i += 1
++		j += uint8(c.s[i])
++		c.s[i], c.s[j] = c.s[j], c.s[i]
++		dst[k] = v ^ byte(c.s[byte(c.s[i]+c.s[j])])
++	}
++	c.i, c.j = i, j
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_test.go gcc-4.8.1/libgo/go/crypto/rc4/rc4_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rc4/rc4_test.go	2011-01-21 12:19:03.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rc4/rc4_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,8 @@
+ package rc4
+ 
+ import (
++	"bytes"
++	"fmt"
+ 	"testing"
+ )
+ 
+@@ -37,23 +39,124 @@
+ 		[]byte{0x57, 0x69, 0x6b, 0x69},
+ 		[]byte{0x60, 0x44, 0xdb, 0x6d, 0x41, 0xb7},
+ 	},
++	{
++		[]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
++		[]byte{
++			0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a,
++			0x8a, 0x06, 0x1e, 0x67, 0x57, 0x6e, 0x92, 0x6d,
++			0xc7, 0x1a, 0x7f, 0xa3, 0xf0, 0xcc, 0xeb, 0x97,
++			0x45, 0x2b, 0x4d, 0x32, 0x27, 0x96, 0x5f, 0x9e,
++			0xa8, 0xcc, 0x75, 0x07, 0x6d, 0x9f, 0xb9, 0xc5,
++			0x41, 0x7a, 0xa5, 0xcb, 0x30, 0xfc, 0x22, 0x19,
++			0x8b, 0x34, 0x98, 0x2d, 0xbb, 0x62, 0x9e, 0xc0,
++			0x4b, 0x4f, 0x8b, 0x05, 0xa0, 0x71, 0x08, 0x50,
++			0x92, 0xa0, 0xc3, 0x58, 0x4a, 0x48, 0xe4, 0xa3,
++			0x0a, 0x39, 0x7b, 0x8a, 0xcd, 0x1d, 0x00, 0x9e,
++			0xc8, 0x7d, 0x68, 0x11, 0xf2, 0x2c, 0xf4, 0x9c,
++			0xa3, 0xe5, 0x93, 0x54, 0xb9, 0x45, 0x15, 0x35,
++			0xa2, 0x18, 0x7a, 0x86, 0x42, 0x6c, 0xca, 0x7d,
++			0x5e, 0x82, 0x3e, 0xba, 0x00, 0x44, 0x12, 0x67,
++			0x12, 0x57, 0xb8, 0xd8, 0x60, 0xae, 0x4c, 0xbd,
++			0x4c, 0x49, 0x06, 0xbb, 0xc5, 0x35, 0xef, 0xe1,
++			0x58, 0x7f, 0x08, 0xdb, 0x33, 0x95, 0x5c, 0xdb,
++			0xcb, 0xad, 0x9b, 0x10, 0xf5, 0x3f, 0xc4, 0xe5,
++			0x2c, 0x59, 0x15, 0x65, 0x51, 0x84, 0x87, 0xfe,
++			0x08, 0x4d, 0x0e, 0x3f, 0x03, 0xde, 0xbc, 0xc9,
++			0xda, 0x1c, 0xe9, 0x0d, 0x08, 0x5c, 0x2d, 0x8a,
++			0x19, 0xd8, 0x37, 0x30, 0x86, 0x16, 0x36, 0x92,
++			0x14, 0x2b, 0xd8, 0xfc, 0x5d, 0x7a, 0x73, 0x49,
++			0x6a, 0x8e, 0x59, 0xee, 0x7e, 0xcf, 0x6b, 0x94,
++			0x06, 0x63, 0xf4, 0xa6, 0xbe, 0xe6, 0x5b, 0xd2,
++			0xc8, 0x5c, 0x46, 0x98, 0x6c, 0x1b, 0xef, 0x34,
++			0x90, 0xd3, 0x7b, 0x38, 0xda, 0x85, 0xd3, 0x2e,
++			0x97, 0x39, 0xcb, 0x23, 0x4a, 0x2b, 0xe7, 0x40,
++		},
++	},
++}
++
++func testEncrypt(t *testing.T, desc string, c *Cipher, src, expect []byte) {
++	dst := make([]byte, len(src))
++	c.XORKeyStream(dst, src)
++	for i, v := range dst {
++		if v != expect[i] {
++			t.Fatalf("%s: mismatch at byte %d:\nhave %x\nwant %x", desc, i, dst, expect)
++		}
++	}
+ }
+ 
+ func TestGolden(t *testing.T) {
+-	for i := 0; i < len(golden); i++ {
+-		g := golden[i]
+-		c, err := NewCipher(g.key)
+-		if err != nil {
+-			t.Errorf("Failed to create cipher at golden index %d", i)
+-			return
++	for gi, g := range golden {
++		data := make([]byte, len(g.keystream))
++		for i := range data {
++			data[i] = byte(i)
+ 		}
+-		keystream := make([]byte, len(g.keystream))
+-		c.XORKeyStream(keystream, keystream)
+-		for j, v := range keystream {
+-			if g.keystream[j] != v {
+-				t.Errorf("Failed at golden index %d", i)
+-				break
++
++		expect := make([]byte, len(g.keystream))
++		for i := range expect {
++			expect[i] = byte(i) ^ g.keystream[i]
++		}
++
++		for size := 1; size <= len(g.keystream); size++ {
++			c, err := NewCipher(g.key)
++			if err != nil {
++				t.Fatalf("#%d: NewCipher: %v", gi, err)
++			}
++
++			off := 0
++			for off < len(g.keystream) {
++				n := len(g.keystream) - off
++				if n > size {
++					n = size
++				}
++				desc := fmt.Sprintf("#%d@[%d:%d]", gi, off, off+n)
++				testEncrypt(t, desc, c, data[off:off+n], expect[off:off+n])
++				off += n
+ 			}
+ 		}
+ 	}
+ }
++
++func TestBlock(t *testing.T) {
++	c1a, _ := NewCipher(golden[0].key)
++	c1b, _ := NewCipher(golden[1].key)
++	data1 := make([]byte, 1<<20)
++	for i := range data1 {
++		c1a.XORKeyStream(data1[i:i+1], data1[i:i+1])
++		c1b.XORKeyStream(data1[i:i+1], data1[i:i+1])
++	}
++
++	c2a, _ := NewCipher(golden[0].key)
++	c2b, _ := NewCipher(golden[1].key)
++	data2 := make([]byte, 1<<20)
++	c2a.XORKeyStream(data2, data2)
++	c2b.XORKeyStream(data2, data2)
++
++	if !bytes.Equal(data1, data2) {
++		t.Fatalf("bad block")
++	}
++}
++
++func benchmark(b *testing.B, size int64) {
++	buf := make([]byte, size)
++	c, err := NewCipher(golden[0].key)
++	if err != nil {
++		panic(err)
++	}
++	b.SetBytes(size)
++
++	for i := 0; i < b.N; i++ {
++		c.XORKeyStream(buf, buf)
++	}
++}
++
++func BenchmarkRC4_128(b *testing.B) {
++	benchmark(b, 128)
++}
++
++func BenchmarkRC4_1K(b *testing.B) {
++	benchmark(b, 1024)
++}
++
++func BenchmarkRC4_8K(b *testing.B) {
++	benchmark(b, 8096)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rsa/rsa.go gcc-4.8.1/libgo/go/crypto/rsa/rsa.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rsa/rsa.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rsa/rsa.go	2013-07-16 01:55:04.520470000 -0500
+@@ -150,6 +150,20 @@
+ NextSetOfPrimes:
+ 	for {
+ 		todo := bits
++		// crypto/rand should set the top two bits in each prime.
++		// Thus each prime has the form
++		//   p_i = 2^bitlen(p_i) Ã 0.11... (in base 2).
++		// And the product is:
++		//   P = 2^todo Ã Î±
++		// where Î± is the product of nprimes numbers of the form 0.11...
++		//
++		// If Î± < 1/2 (which can happen for nprimes > 2), we need to
++		// shift todo to compensate for lost bits: the mean value of 0.11...
++		// is 7/8, so todo + shift - nprimes * log2(7/8) ~= bits - 1/2
++		// will give good results.
++		if nprimes >= 7 {
++			todo += (nprimes - 2) / 5
++		}
+ 		for i := 0; i < nprimes; i++ {
+ 			primes[i], err = rand.Prime(random, todo/(nprimes-i))
+ 			if err != nil {
+@@ -176,8 +190,9 @@
+ 			totient.Mul(totient, pminus1)
+ 		}
+ 		if n.BitLen() != bits {
+-			// This should never happen because crypto/rand should
+-			// set the top two bits in each prime.
++			// This should never happen for nprimes == 2 because
++			// crypto/rand should set the top two bits in each prime.
++			// For nprimes > 2 we hope it does not happen often.
+ 			continue NextSetOfPrimes
+ 		}
+ 
+@@ -188,7 +203,9 @@
+ 		g.GCD(priv.D, y, e, totient)
+ 
+ 		if g.Cmp(bigOne) == 0 {
+-			priv.D.Add(priv.D, totient)
++			if priv.D.Sign() < 0 {
++				priv.D.Add(priv.D, totient)
++			}
+ 			priv.Primes = primes
+ 			priv.N = n
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/rsa/rsa_test.go gcc-4.8.1/libgo/go/crypto/rsa/rsa_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/rsa/rsa_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/rsa/rsa_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -28,11 +28,11 @@
+ }
+ 
+ func Test3PrimeKeyGeneration(t *testing.T) {
++	size := 768
+ 	if testing.Short() {
+-		return
++		size = 256
+ 	}
+ 
+-	size := 768
+ 	priv, err := GenerateMultiPrimeKey(rand.Reader, 3, size)
+ 	if err != nil {
+ 		t.Errorf("failed to generate key")
+@@ -41,11 +41,11 @@
+ }
+ 
+ func Test4PrimeKeyGeneration(t *testing.T) {
++	size := 768
+ 	if testing.Short() {
+-		return
++		size = 256
+ 	}
+ 
+-	size := 768
+ 	priv, err := GenerateMultiPrimeKey(rand.Reader, 4, size)
+ 	if err != nil {
+ 		t.Errorf("failed to generate key")
+@@ -53,6 +53,24 @@
+ 	testKeyBasics(t, priv)
+ }
+ 
++func TestNPrimeKeyGeneration(t *testing.T) {
++	primeSize := 64
++	maxN := 24
++	if testing.Short() {
++		primeSize = 16
++		maxN = 16
++	}
++	// Test that generation of N-prime keys works for N > 4.
++	for n := 5; n < maxN; n++ {
++		priv, err := GenerateMultiPrimeKey(rand.Reader, n, 64+n*primeSize)
++		if err == nil {
++			testKeyBasics(t, priv)
++		} else {
++			t.Errorf("failed to generate %d-prime key", n)
++		}
++	}
++}
++
+ func TestGnuTLSKey(t *testing.T) {
+ 	// This is a key generated by `certtool --generate-privkey --bits 128`.
+ 	// It's such that de â¢ 1 mod Ï(n), but is congruent mod the order of
+@@ -75,6 +93,9 @@
+ 	if err := priv.Validate(); err != nil {
+ 		t.Errorf("Validate() failed: %s", err)
+ 	}
++	if priv.D.Cmp(priv.N) > 0 {
++		t.Errorf("private exponent too large")
++	}
+ 
+ 	pub := &priv.PublicKey
+ 	m := big.NewInt(42)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1block_decl.go gcc-4.8.1/libgo/go/crypto/sha1/sha1block_decl.go
+--- gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1block_decl.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/sha1/sha1block_decl.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,9 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build amd64 386
++
++package sha1
++
++func block(dig *digest, p []byte)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1block.go gcc-4.8.1/libgo/go/crypto/sha1/sha1block.go
+--- gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1block.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/sha1/sha1block.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
++// +build !amd64,!386
++
+ // SHA1 block step.
+ // In its own file so that a faster assembly or C version
+ // can be substituted easily.
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1_test.go gcc-4.8.1/libgo/go/crypto/sha1/sha1_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/sha1/sha1_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/sha1/sha1_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,10 +4,9 @@
+ 
+ // SHA1 hash algorithm.  See RFC 3174.
+ 
+-package sha1_test
++package sha1
+ 
+ import (
+-	"crypto/sha1"
+ 	"fmt"
+ 	"io"
+ 	"testing"
+@@ -55,7 +54,7 @@
+ func TestGolden(t *testing.T) {
+ 	for i := 0; i < len(golden); i++ {
+ 		g := golden[i]
+-		c := sha1.New()
++		c := New()
+ 		for j := 0; j < 3; j++ {
+ 			if j < 2 {
+ 				io.WriteString(c, g.in)
+@@ -74,13 +73,13 @@
+ }
+ 
+ func ExampleNew() {
+-	h := sha1.New()
++	h := New()
+ 	io.WriteString(h, "His money is twice tainted: 'taint yours and 'taint mine.")
+ 	fmt.Printf("% x", h.Sum(nil))
+ 	// Output: 59 7f 6a 54 00 10 f9 4c 15 d7 18 06 a9 9a 2c 87 10 e7 47 bd
+ }
+ 
+-var bench = sha1.New()
++var bench = New()
+ var buf = make([]byte, 8192)
+ 
+ func benchmarkSize(b *testing.B, size int) {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/tls/common.go gcc-4.8.1/libgo/go/crypto/tls/common.go
+--- gcc-4.8.1.orig/libgo/go/crypto/tls/common.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/tls/common.go	2013-07-16 01:55:04.520470000 -0500
+@@ -204,7 +204,24 @@
+ 	// connections using that key are compromised.
+ 	SessionTicketKey [32]byte
+ 
+-	serverInitOnce sync.Once
++	serverInitOnce sync.Once // guards calling (*Config).serverInit
++}
++
++func (c *Config) serverInit() {
++	if c.SessionTicketsDisabled {
++		return
++	}
++
++	// If the key has already been set then we have nothing to do.
++	for _, b := range c.SessionTicketKey {
++		if b != 0 {
++			return
++		}
++	}
++
++	if _, err := io.ReadFull(c.rand(), c.SessionTicketKey[:]); err != nil {
++		c.SessionTicketsDisabled = true
++	}
+ }
+ 
+ func (c *Config) rand() io.Reader {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/tls/generate_cert.go gcc-4.8.1/libgo/go/crypto/tls/generate_cert.go
+--- gcc-4.8.1.orig/libgo/go/crypto/tls/generate_cert.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/tls/generate_cert.go	2013-07-16 01:55:04.520470000 -0500
+@@ -16,36 +16,80 @@
+ 	"crypto/x509/pkix"
+ 	"encoding/pem"
+ 	"flag"
++	"fmt"
+ 	"log"
+ 	"math/big"
++	"net"
+ 	"os"
++	"strings"
+ 	"time"
+ )
+ 
+-var hostName *string = flag.String("host", "127.0.0.1", "Hostname to generate a certificate for")
++var (
++	host      = flag.String("host", "", "Comma-separated hostnames and IPs to generate a certificate for")
++	validFrom = flag.String("start-date", "", "Creation date formatted as Jan 1 15:04:05 2011")
++	validFor  = flag.Duration("duration", 365*24*time.Hour, "Duration that certificate is valid for")
++	isCA      = flag.Bool("ca", false, "whether this cert should be its own Certificate Authority")
++	rsaBits   = flag.Int("rsa-bits", 1024, "Size of RSA key to generate")
++)
+ 
+ func main() {
+ 	flag.Parse()
+ 
+-	priv, err := rsa.GenerateKey(rand.Reader, 1024)
++	if len(*host) == 0 {
++		log.Fatalf("Missing required --host parameter")
++	}
++
++	priv, err := rsa.GenerateKey(rand.Reader, *rsaBits)
+ 	if err != nil {
+ 		log.Fatalf("failed to generate private key: %s", err)
+ 		return
+ 	}
+ 
+-	now := time.Now()
++	var notBefore time.Time
++	if len(*validFrom) == 0 {
++		notBefore = time.Now()
++	} else {
++		notBefore, err = time.Parse("Jan 2 15:04:05 2006", *validFrom)
++		if err != nil {
++			fmt.Fprintf(os.Stderr, "Failed to parse creation date: %s\n", err)
++			os.Exit(1)
++		}
++	}
++
++	notAfter := notBefore.Add(*validFor)
++
++	// end of ASN.1 time
++	endOfTime := time.Date(2049, 12, 31, 23, 59, 59, 0, time.UTC)
++	if notAfter.After(endOfTime) {
++		notAfter = endOfTime
++	}
+ 
+ 	template := x509.Certificate{
+ 		SerialNumber: new(big.Int).SetInt64(0),
+ 		Subject: pkix.Name{
+-			CommonName:   *hostName,
+ 			Organization: []string{"Acme Co"},
+ 		},
+-		NotBefore: now.Add(-5 * time.Minute).UTC(),
+-		NotAfter:  now.AddDate(1, 0, 0).UTC(), // valid for 1 year.
++		NotBefore: notBefore,
++		NotAfter:  notAfter,
++
++		KeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
++		ExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
++		BasicConstraintsValid: true,
++	}
++
++	hosts := strings.Split(*host, ",")
++	for _, h := range hosts {
++		if ip := net.ParseIP(h); ip != nil {
++			template.IPAddresses = append(template.IPAddresses, ip)
++		} else {
++			template.DNSNames = append(template.DNSNames, h)
++		}
++	}
+ 
+-		SubjectKeyId: []byte{1, 2, 3, 4},
+-		KeyUsage:     x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
++	if *isCA {
++		template.IsCA = true
++		template.KeyUsage |= x509.KeyUsageCertSign
+ 	}
+ 
+ 	derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/tls/handshake_server.go gcc-4.8.1/libgo/go/crypto/tls/handshake_server.go
+--- gcc-4.8.1.orig/libgo/go/crypto/tls/handshake_server.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/tls/handshake_server.go	2013-07-16 01:55:04.520470000 -0500
+@@ -33,22 +33,7 @@
+ 
+ 	// If this is the first server handshake, we generate a random key to
+ 	// encrypt the tickets with.
+-	config.serverInitOnce.Do(func() {
+-		if config.SessionTicketsDisabled {
+-			return
+-		}
+-
+-		// If the key has already been set then we have nothing to do.
+-		for _, b := range config.SessionTicketKey {
+-			if b != 0 {
+-				return
+-			}
+-		}
+-
+-		if _, err := io.ReadFull(config.rand(), config.SessionTicketKey[:]); err != nil {
+-			config.SessionTicketsDisabled = true
+-		}
+-	})
++	config.serverInitOnce.Do(config.serverInit)
+ 
+ 	hs := serverHandshakeState{
+ 		c: c,
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/x509/pkcs8.go gcc-4.8.1/libgo/go/crypto/x509/pkcs8.go
+--- gcc-4.8.1.orig/libgo/go/crypto/x509/pkcs8.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/x509/pkcs8.go	2013-07-16 01:55:04.520470000 -0500
+@@ -51,6 +51,4 @@
+ 	default:
+ 		return nil, fmt.Errorf("crypto/x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", privKey.Algo.Algorithm)
+ 	}
+-
+-	panic("unreachable")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/x509/verify.go gcc-4.8.1/libgo/go/crypto/x509/verify.go
+--- gcc-4.8.1.orig/libgo/go/crypto/x509/verify.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/x509/verify.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,7 @@
+ package x509
+ 
+ import (
++	"net"
+ 	"runtime"
+ 	"strings"
+ 	"time"
+@@ -63,14 +64,28 @@
+ }
+ 
+ func (h HostnameError) Error() string {
+-	var valid string
+ 	c := h.Certificate
+-	if len(c.DNSNames) > 0 {
+-		valid = strings.Join(c.DNSNames, ", ")
++
++	var valid string
++	if ip := net.ParseIP(h.Host); ip != nil {
++		// Trying to validate an IP
++		if len(c.IPAddresses) == 0 {
++			return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs"
++		}
++		for _, san := range c.IPAddresses {
++			if len(valid) > 0 {
++				valid += ", "
++			}
++			valid += san.String()
++		}
+ 	} else {
+-		valid = c.Subject.CommonName
++		if len(c.DNSNames) > 0 {
++			valid = strings.Join(c.DNSNames, ", ")
++		} else {
++			valid = c.Subject.CommonName
++		}
+ 	}
+-	return "certificate is valid for " + valid + ", not " + h.Host
++	return "x509: certificate is valid for " + valid + ", not " + h.Host
+ }
+ 
+ // UnknownAuthorityError results when the certificate issuer is unknown
+@@ -334,6 +349,22 @@
+ // VerifyHostname returns nil if c is a valid certificate for the named host.
+ // Otherwise it returns an error describing the mismatch.
+ func (c *Certificate) VerifyHostname(h string) error {
++	// IP addresses may be written in [ ].
++	candidateIP := h
++	if len(h) >= 3 && h[0] == '[' && h[len(h)-1] == ']' {
++		candidateIP = h[1 : len(h)-1]
++	}
++	if ip := net.ParseIP(candidateIP); ip != nil {
++		// We only match IP addresses against IP SANs.
++		// https://tools.ietf.org/html/rfc6125#appendix-B.2
++		for _, candidate := range c.IPAddresses {
++			if ip.Equal(candidate) {
++				return nil
++			}
++		}
++		return HostnameError{c, candidateIP}
++	}
++
+ 	lowered := toLowerCaseASCII(h)
+ 
+ 	if len(c.DNSNames) > 0 {
+@@ -389,6 +420,14 @@
+ 			for _, usage := range cert.ExtKeyUsage {
+ 				if requestedUsage == usage {
+ 					continue NextRequestedUsage
++				} else if requestedUsage == ExtKeyUsageServerAuth &&
++					(usage == ExtKeyUsageNetscapeServerGatedCrypto ||
++						usage == ExtKeyUsageMicrosoftServerGatedCrypto) {
++					// In order to support COMODO
++					// certificate chains, we have to
++					// accept Netscape or Microsoft SGC
++					// usages as equal to ServerAuth.
++					continue NextRequestedUsage
+ 				}
+ 			}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/x509/verify_test.go gcc-4.8.1/libgo/go/crypto/x509/verify_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/x509/verify_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/x509/verify_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -158,6 +158,19 @@
+ 			{"Ryan Hurst", "GlobalSign PersonalSign 2 CA - G2"},
+ 		},
+ 	},
++	{
++		leaf:          megaLeaf,
++		intermediates: []string{comodoIntermediate1},
++		roots:         []string{comodoRoot},
++		currentTime:   1360431182,
++
++		// CryptoAPI can find alternative validation paths so we don't
++		// perform this test with system validation.
++		systemSkip: true,
++		expectedChains: [][]string{
++			{"mega.co.nz", "EssentialSSL CA", "COMODO Certification Authority"},
++		},
++	},
+ }
+ 
+ func expectHostnameError(t *testing.T, i int, err error) (ok bool) {
+@@ -563,3 +576,90 @@
+ 7y3rH/7TjwDVD7SLu5/SdOfKskuMPTjOEvz3K161mymW06klVhubCIWOro/Gx1Q2
+ 2FQOZ7/2k4uYoOdBTSlb8kTAuzZNgIE0rB2BIYCTz/P6zZIKW0ogbRSH
+ -----END CERTIFICATE-----`
++
++var megaLeaf = `-----BEGIN CERTIFICATE-----
++MIIFOjCCBCKgAwIBAgIQWYE8Dup170kZ+k11Lg51OjANBgkqhkiG9w0BAQUFADBy
++MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
++VQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEYMBYGA1UE
++AxMPRXNzZW50aWFsU1NMIENBMB4XDTEyMTIxNDAwMDAwMFoXDTE0MTIxNDIzNTk1
++OVowfzEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRhdGVkMS4wLAYDVQQL
++EyVIb3N0ZWQgYnkgSW5zdHJhIENvcnBvcmF0aW9uIFB0eS4gTFREMRUwEwYDVQQL
++EwxFc3NlbnRpYWxTU0wxEzARBgNVBAMTCm1lZ2EuY28ubnowggEiMA0GCSqGSIb3
++DQEBAQUAA4IBDwAwggEKAoIBAQDcxMCClae8BQIaJHBUIVttlLvhbK4XhXPk3RQ3
++G5XA6tLZMBQ33l3F9knYJ0YErXtr8IdfYoulRQFmKFMJl9GtWyg4cGQi2Rcr5VN5
++S5dA1vu4oyJBxE9fPELcK6Yz1vqaf+n6za+mYTiQYKggVdS8/s8hmNuXP9Zk1pIn
+++q0pGsf8NAcSHMJgLqPQrTDw+zae4V03DvcYfNKjuno88d2226ld7MAmQZ7uRNsI
++/CnkdelVs+akZsXf0szefSqMJlf08SY32t2jj4Ra7RApVYxOftD9nij/aLfuqOU6
++ow6IgIcIG2ZvXLZwK87c5fxL7UAsTTV+M1sVv8jA33V2oKLhAgMBAAGjggG9MIIB
++uTAfBgNVHSMEGDAWgBTay+qtWwhdzP/8JlTOSeVVxjj0+DAdBgNVHQ4EFgQUmP9l
++6zhyrZ06Qj4zogt+6LKFk4AwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw
++NAYDVR0lBC0wKwYIKwYBBQUHAwEGCCsGAQUFBwMCBgorBgEEAYI3CgMDBglghkgB
++hvhCBAEwTwYDVR0gBEgwRjA6BgsrBgEEAbIxAQICBzArMCkGCCsGAQUFBwIBFh1o
++dHRwczovL3NlY3VyZS5jb21vZG8uY29tL0NQUzAIBgZngQwBAgEwOwYDVR0fBDQw
++MjAwoC6gLIYqaHR0cDovL2NybC5jb21vZG9jYS5jb20vRXNzZW50aWFsU1NMQ0Eu
++Y3JsMG4GCCsGAQUFBwEBBGIwYDA4BggrBgEFBQcwAoYsaHR0cDovL2NydC5jb21v
++ZG9jYS5jb20vRXNzZW50aWFsU1NMQ0FfMi5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6
++Ly9vY3NwLmNvbW9kb2NhLmNvbTAlBgNVHREEHjAcggptZWdhLmNvLm56gg53d3cu
++bWVnYS5jby5uejANBgkqhkiG9w0BAQUFAAOCAQEAcYhrsPSvDuwihMOh0ZmRpbOE
++Gw6LqKgLNTmaYUPQhzi2cyIjhUhNvugXQQlP5f0lp5j8cixmArafg1dTn4kQGgD3
++ivtuhBTgKO1VYB/VRoAt6Lmswg3YqyiS7JiLDZxjoV7KoS5xdiaINfHDUaBBY4ZH
++j2BUlPniNBjCqXe/HndUTVUewlxbVps9FyCmH+C4o9DWzdGBzDpCkcmo5nM+cp7q
++ZhTIFTvZfo3zGuBoyu8BzuopCJcFRm3cRiXkpI7iOMUIixO1szkJS6WpL1sKdT73
++UXp08U0LBqoqG130FbzEJBBV3ixbvY6BWMHoCWuaoF12KJnC5kHt2RoWAAgMXA==
++-----END CERTIFICATE-----`
++
++var comodoIntermediate1 = `-----BEGIN CERTIFICATE-----
++MIIFAzCCA+ugAwIBAgIQGLLLuqME8aAPwfLzJkYqSjANBgkqhkiG9w0BAQUFADCB
++gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
++A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
++BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
++MDBaFw0xOTEyMzEyMzU5NTlaMHIxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh
++dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E
++TyBDQSBMaW1pdGVkMRgwFgYDVQQDEw9Fc3NlbnRpYWxTU0wgQ0EwggEiMA0GCSqG
++SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt8AiwcsargxIxF3CJhakgEtSYau2A1NHf
++5I5ZLdOWIY120j8YC0YZYwvHIPPlC92AGvFaoL0dds23Izp0XmEbdaqb1IX04XiR
++0y3hr/yYLgbSeT1awB8hLRyuIVPGOqchfr7tZ291HRqfalsGs2rjsQuqag7nbWzD
++ypWMN84hHzWQfdvaGlyoiBSyD8gSIF/F03/o4Tjg27z5H6Gq1huQByH6RSRQXScq
++oChBRVt9vKCiL6qbfltTxfEFFld+Edc7tNkBdtzffRDPUanlOPJ7FAB1WfnwWdsX
++Pvev5gItpHnBXaIcw5rIp6gLSApqLn8tl2X2xQScRMiZln5+pN0vAgMBAAGjggGD
++MIIBfzAfBgNVHSMEGDAWgBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAdBgNVHQ4EFgQU
++2svqrVsIXcz//CZUzknlVcY49PgwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI
++MAYBAf8CAQAwIAYDVR0lBBkwFwYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMD4GA1Ud
++IAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v
++ZG8uY29tL0NQUzBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9kb2Nh
++LmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBsBggrBgEFBQcB
++AQRgMF4wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NvbW9k
++b1VUTlNHQ0NBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2Eu
++Y29tMA0GCSqGSIb3DQEBBQUAA4IBAQAtlzR6QDLqcJcvgTtLeRJ3rvuq1xqo2l/z
++odueTZbLN3qo6u6bldudu+Ennv1F7Q5Slqz0J790qpL0pcRDAB8OtXj5isWMcL2a
++ejGjKdBZa0wztSz4iw+SY1dWrCRnilsvKcKxudokxeRiDn55w/65g+onO7wdQ7Vu
++F6r7yJiIatnyfKH2cboZT7g440LX8NqxwCPf3dfxp+0Jj1agq8MLy6SSgIGSH6lv
+++Wwz3D5XxqfyH8wqfOQsTEZf6/Nh9yvENZ+NWPU6g0QO2JOsTGvMd/QDzczc4BxL
++XSXaPV7Od4rhPsbXlM1wSTz/Dr0ISKvlUhQVnQ6cGodWaK2cCQBk
++-----END CERTIFICATE-----`
++
++var comodoRoot = `-----BEGIN CERTIFICATE-----
++MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
++gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
++A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
++BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
++MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
++YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
++RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
++aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
++UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
++2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
++Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
+++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
++DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
++nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
++/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
++PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
++QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
++SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
++IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
++RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
++zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
++BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
++ZQ==
++-----END CERTIFICATE-----`
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/x509/x509.go gcc-4.8.1/libgo/go/crypto/x509/x509.go
+--- gcc-4.8.1.orig/libgo/go/crypto/x509/x509.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/x509/x509.go	2013-07-16 01:55:04.520470000 -0500
+@@ -19,6 +19,8 @@
+ 	"errors"
+ 	"io"
+ 	"math/big"
++	"net"
++	"strconv"
+ 	"time"
+ )
+ 
+@@ -360,16 +362,18 @@
+ // id-kp-timeStamping           OBJECT IDENTIFIER ::= { id-kp 8 }
+ // id-kp-OCSPSigning            OBJECT IDENTIFIER ::= { id-kp 9 }
+ var (
+-	oidExtKeyUsageAny             = asn1.ObjectIdentifier{2, 5, 29, 37, 0}
+-	oidExtKeyUsageServerAuth      = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 1}
+-	oidExtKeyUsageClientAuth      = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 2}
+-	oidExtKeyUsageCodeSigning     = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 3}
+-	oidExtKeyUsageEmailProtection = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 4}
+-	oidExtKeyUsageIPSECEndSystem  = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 5}
+-	oidExtKeyUsageIPSECTunnel     = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 6}
+-	oidExtKeyUsageIPSECUser       = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 7}
+-	oidExtKeyUsageTimeStamping    = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 8}
+-	oidExtKeyUsageOCSPSigning     = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 9}
++	oidExtKeyUsageAny                        = asn1.ObjectIdentifier{2, 5, 29, 37, 0}
++	oidExtKeyUsageServerAuth                 = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 1}
++	oidExtKeyUsageClientAuth                 = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 2}
++	oidExtKeyUsageCodeSigning                = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 3}
++	oidExtKeyUsageEmailProtection            = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 4}
++	oidExtKeyUsageIPSECEndSystem             = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 5}
++	oidExtKeyUsageIPSECTunnel                = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 6}
++	oidExtKeyUsageIPSECUser                  = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 7}
++	oidExtKeyUsageTimeStamping               = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 8}
++	oidExtKeyUsageOCSPSigning                = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 9}
++	oidExtKeyUsageMicrosoftServerGatedCrypto = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 10, 3, 3}
++	oidExtKeyUsageNetscapeServerGatedCrypto  = asn1.ObjectIdentifier{2, 16, 840, 1, 113730, 4, 1}
+ )
+ 
+ // ExtKeyUsage represents an extended set of actions that are valid for a given key.
+@@ -387,6 +391,8 @@
+ 	ExtKeyUsageIPSECUser
+ 	ExtKeyUsageTimeStamping
+ 	ExtKeyUsageOCSPSigning
++	ExtKeyUsageMicrosoftServerGatedCrypto
++	ExtKeyUsageNetscapeServerGatedCrypto
+ )
+ 
+ // extKeyUsageOIDs contains the mapping between an ExtKeyUsage and its OID.
+@@ -404,6 +410,8 @@
+ 	{ExtKeyUsageIPSECUser, oidExtKeyUsageIPSECUser},
+ 	{ExtKeyUsageTimeStamping, oidExtKeyUsageTimeStamping},
+ 	{ExtKeyUsageOCSPSigning, oidExtKeyUsageOCSPSigning},
++	{ExtKeyUsageMicrosoftServerGatedCrypto, oidExtKeyUsageMicrosoftServerGatedCrypto},
++	{ExtKeyUsageNetscapeServerGatedCrypto, oidExtKeyUsageNetscapeServerGatedCrypto},
+ }
+ 
+ func extKeyUsageFromOID(oid asn1.ObjectIdentifier) (eku ExtKeyUsage, ok bool) {
+@@ -458,6 +466,7 @@
+ 	// Subject Alternate Name values
+ 	DNSNames       []string
+ 	EmailAddresses []string
++	IPAddresses    []net.IP
+ 
+ 	// Name constraints
+ 	PermittedDNSDomainsCritical bool // if true then the name constraints are marked critical.
+@@ -660,6 +669,13 @@
+ 			return nil, err
+ 		}
+ 
++		if p.N.Sign() <= 0 {
++			return nil, errors.New("x509: RSA modulus is not a positive number")
++		}
++		if p.E <= 0 {
++			return nil, errors.New("x509: RSA public exponent is not a positive number")
++		}
++
+ 		pub := &rsa.PublicKey{
+ 			E: p.E,
+ 			N: p.N,
+@@ -713,7 +729,6 @@
+ 	default:
+ 		return nil, nil
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func parseCertificate(in *certificate) (*Certificate, error) {
+@@ -828,6 +843,13 @@
+ 					case 2:
+ 						out.DNSNames = append(out.DNSNames, string(v.Bytes))
+ 						parsedName = true
++					case 7:
++						switch len(v.Bytes) {
++						case net.IPv4len, net.IPv6len:
++							out.IPAddresses = append(out.IPAddresses, v.Bytes)
++						default:
++							return nil, errors.New("x509: certificate contained IP address of length " + strconv.Itoa(len(v.Bytes)))
++						}
+ 					}
+ 				}
+ 
+@@ -1072,11 +1094,22 @@
+ 		n++
+ 	}
+ 
+-	if len(template.DNSNames) > 0 {
++	if len(template.DNSNames) > 0 || len(template.EmailAddresses) > 0 || len(template.IPAddresses) > 0 {
+ 		ret[n].Id = oidExtensionSubjectAltName
+-		rawValues := make([]asn1.RawValue, len(template.DNSNames))
+-		for i, name := range template.DNSNames {
+-			rawValues[i] = asn1.RawValue{Tag: 2, Class: 2, Bytes: []byte(name)}
++		var rawValues []asn1.RawValue
++		for _, name := range template.DNSNames {
++			rawValues = append(rawValues, asn1.RawValue{Tag: 2, Class: 2, Bytes: []byte(name)})
++		}
++		for _, email := range template.EmailAddresses {
++			rawValues = append(rawValues, asn1.RawValue{Tag: 1, Class: 2, Bytes: []byte(email)})
++		}
++		for _, rawIP := range template.IPAddresses {
++			// If possible, we always want to encode IPv4 addresses in 4 bytes.
++			ip := rawIP.To4()
++			if ip == nil {
++				ip = rawIP
++			}
++			rawValues = append(rawValues, asn1.RawValue{Tag: 7, Class: 2, Bytes: ip})
+ 		}
+ 		ret[n].Value, err = asn1.Marshal(rawValues)
+ 		if err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/crypto/x509/x509_test.go gcc-4.8.1/libgo/go/crypto/x509/x509_test.go
+--- gcc-4.8.1.orig/libgo/go/crypto/x509/x509_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/crypto/x509/x509_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -19,6 +19,7 @@
+ 	"encoding/hex"
+ 	"encoding/pem"
+ 	"math/big"
++	"net"
+ 	"reflect"
+ 	"testing"
+ 	"time"
+@@ -174,6 +175,49 @@
+ 	}
+ }
+ 
++func TestMatchIP(t *testing.T) {
++	// Check that pattern matching is working.
++	c := &Certificate{
++		DNSNames: []string{"*.foo.bar.baz"},
++		Subject: pkix.Name{
++			CommonName: "*.foo.bar.baz",
++		},
++	}
++	err := c.VerifyHostname("quux.foo.bar.baz")
++	if err != nil {
++		t.Fatalf("VerifyHostname(quux.foo.bar.baz): %v", err)
++	}
++
++	// But check that if we change it to be matching against an IP address,
++	// it is rejected.
++	c = &Certificate{
++		DNSNames: []string{"*.2.3.4"},
++		Subject: pkix.Name{
++			CommonName: "*.2.3.4",
++		},
++	}
++	err = c.VerifyHostname("1.2.3.4")
++	if err == nil {
++		t.Fatalf("VerifyHostname(1.2.3.4) should have failed, did not")
++	}
++
++	c = &Certificate{
++		IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("::1")},
++	}
++	err = c.VerifyHostname("127.0.0.1")
++	if err != nil {
++		t.Fatalf("VerifyHostname(127.0.0.1): %v", err)
++	}
++	err = c.VerifyHostname("::1")
++	if err != nil {
++		t.Fatalf("VerifyHostname(::1): %v", err)
++	}
++	err = c.VerifyHostname("[::1]")
++	if err != nil {
++		t.Fatalf("VerifyHostname([::1]): %v", err)
++	}
++}
++
+ func TestCertificateParse(t *testing.T) {
+ 	s, _ := hex.DecodeString(certBytes)
+ 	certs, err := ParseCertificates(s)
+@@ -284,8 +328,11 @@
+ 			UnknownExtKeyUsage: testUnknownExtKeyUsage,
+ 
+ 			BasicConstraintsValid: true,
+-			IsCA:     true,
+-			DNSNames: []string{"test.example.com"},
++			IsCA: true,
++
++			DNSNames:       []string{"test.example.com"},
++			EmailAddresses: []string{"gopher@golang.org"},
++			IPAddresses:    []net.IP{net.IPv4(127, 0, 0, 1).To4(), net.ParseIP("2001:4860:0:2001::68")},
+ 
+ 			PolicyIdentifiers:   []asn1.ObjectIdentifier{[]int{1, 2, 3}},
+ 			PermittedDNSDomains: []string{".example.com", "example.com"},
+@@ -327,6 +374,18 @@
+ 			t.Errorf("%s: unknown extkeyusage wasn't correctly copied from the template. Got %v, want %v", test.name, cert.UnknownExtKeyUsage, testUnknownExtKeyUsage)
+ 		}
+ 
++		if !reflect.DeepEqual(cert.DNSNames, template.DNSNames) {
++			t.Errorf("%s: SAN DNS names differ from template. Got %v, want %v", test.name, cert.DNSNames, template.DNSNames)
++		}
++
++		if !reflect.DeepEqual(cert.EmailAddresses, template.EmailAddresses) {
++			t.Errorf("%s: SAN emails differ from template. Got %v, want %v", test.name, cert.EmailAddresses, template.EmailAddresses)
++		}
++
++		if !reflect.DeepEqual(cert.IPAddresses, template.IPAddresses) {
++			t.Errorf("%s: SAN IPs differ from template. Got %v, want %v", test.name, cert.IPAddresses, template.IPAddresses)
++		}
++
+ 		if test.checkSig {
+ 			err = cert.CheckSignatureFrom(cert)
+ 			if err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/convert.go gcc-4.8.1/libgo/go/database/sql/convert.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/convert.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/database/sql/convert.go	2013-07-16 01:55:04.520470000 -0500
+@@ -14,12 +14,18 @@
+ 	"strconv"
+ )
+ 
++var errNilPtr = errors.New("destination pointer is nil") // embedded in descriptive error
++
+ // driverArgs converts arguments from callers of Stmt.Exec and
+ // Stmt.Query into driver Values.
+ //
+-// The statement si may be nil, if no statement is available.
+-func driverArgs(si driver.Stmt, args []interface{}) ([]driver.Value, error) {
++// The statement ds may be nil, if no statement is available.
++func driverArgs(ds *driverStmt, args []interface{}) ([]driver.Value, error) {
+ 	dargs := make([]driver.Value, len(args))
++	var si driver.Stmt
++	if ds != nil {
++		si = ds.si
++	}
+ 	cc, ok := si.(driver.ColumnConverter)
+ 
+ 	// Normal path, for a driver.Stmt that is not a ColumnConverter.
+@@ -58,7 +64,9 @@
+ 		// column before going across the network to get the
+ 		// same error.
+ 		var err error
++		ds.Lock()
+ 		dargs[n], err = cc.ColumnConverter(n).ConvertValue(arg)
++		ds.Unlock()
+ 		if err != nil {
+ 			return nil, fmt.Errorf("sql: converting argument #%d's type: %v", n, err)
+ 		}
+@@ -75,34 +83,68 @@
+ // An error is returned if the copy would result in loss of information.
+ // dest should be a pointer type.
+ func convertAssign(dest, src interface{}) error {
+-	// Common cases, without reflect.  Fall through.
++	// Common cases, without reflect.
+ 	switch s := src.(type) {
+ 	case string:
+ 		switch d := dest.(type) {
+ 		case *string:
++			if d == nil {
++				return errNilPtr
++			}
+ 			*d = s
+ 			return nil
+ 		case *[]byte:
++			if d == nil {
++				return errNilPtr
++			}
+ 			*d = []byte(s)
+ 			return nil
+ 		}
+ 	case []byte:
+ 		switch d := dest.(type) {
+ 		case *string:
++			if d == nil {
++				return errNilPtr
++			}
+ 			*d = string(s)
+ 			return nil
+ 		case *interface{}:
+-			bcopy := make([]byte, len(s))
+-			copy(bcopy, s)
+-			*d = bcopy
++			if d == nil {
++				return errNilPtr
++			}
++			*d = cloneBytes(s)
+ 			return nil
+ 		case *[]byte:
++			if d == nil {
++				return errNilPtr
++			}
++			*d = cloneBytes(s)
++			return nil
++		case *RawBytes:
++			if d == nil {
++				return errNilPtr
++			}
+ 			*d = s
+ 			return nil
+ 		}
+ 	case nil:
+ 		switch d := dest.(type) {
++		case *interface{}:
++			if d == nil {
++				return errNilPtr
++			}
++			*d = nil
++			return nil
+ 		case *[]byte:
++			if d == nil {
++				return errNilPtr
++			}
++			*d = nil
++			return nil
++		case *RawBytes:
++			if d == nil {
++				return errNilPtr
++			}
+ 			*d = nil
+ 			return nil
+ 		}
+@@ -121,6 +163,26 @@
+ 			*d = fmt.Sprintf("%v", src)
+ 			return nil
+ 		}
++	case *[]byte:
++		sv = reflect.ValueOf(src)
++		switch sv.Kind() {
++		case reflect.Bool,
++			reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
++			reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
++			reflect.Float32, reflect.Float64:
++			*d = []byte(fmt.Sprintf("%v", src))
++			return nil
++		}
++	case *RawBytes:
++		sv = reflect.ValueOf(src)
++		switch sv.Kind() {
++		case reflect.Bool,
++			reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
++			reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
++			reflect.Float32, reflect.Float64:
++			*d = RawBytes(fmt.Sprintf("%v", src))
++			return nil
++		}
+ 	case *bool:
+ 		bv, err := driver.Bool.ConvertValue(src)
+ 		if err == nil {
+@@ -140,6 +202,9 @@
+ 	if dpv.Kind() != reflect.Ptr {
+ 		return errors.New("destination not a pointer")
+ 	}
++	if dpv.IsNil() {
++		return errNilPtr
++	}
+ 
+ 	if !sv.IsValid() {
+ 		sv = reflect.ValueOf(src)
+@@ -189,6 +254,16 @@
+ 	return fmt.Errorf("unsupported driver -> Scan pair: %T -> %T", src, dest)
+ }
+ 
++func cloneBytes(b []byte) []byte {
++	if b == nil {
++		return nil
++	} else {
++		c := make([]byte, len(b))
++		copy(c, b)
++		return c
++	}
++}
++
+ func asString(src interface{}) string {
+ 	switch v := src.(type) {
+ 	case string:
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/convert_test.go gcc-4.8.1/libgo/go/database/sql/convert_test.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/convert_test.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/database/sql/convert_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -22,6 +22,8 @@
+ 	wantint   int64
+ 	wantuint  uint64
+ 	wantstr   string
++	wantbytes []byte
++	wantraw   RawBytes
+ 	wantf32   float32
+ 	wantf64   float64
+ 	wanttime  time.Time
+@@ -35,6 +37,8 @@
+ // Target variables for scanning into.
+ var (
+ 	scanstr    string
++	scanbytes  []byte
++	scanraw    RawBytes
+ 	scanint    int
+ 	scanint8   int8
+ 	scanint16  int16
+@@ -56,6 +60,7 @@
+ 	{s: someTime, d: &scantime, wanttime: someTime},
+ 
+ 	// To strings
++	{s: "string", d: &scanstr, wantstr: "string"},
+ 	{s: []byte("byteslice"), d: &scanstr, wantstr: "byteslice"},
+ 	{s: 123, d: &scanstr, wantstr: "123"},
+ 	{s: int8(123), d: &scanstr, wantstr: "123"},
+@@ -66,6 +71,31 @@
+ 	{s: uint64(123), d: &scanstr, wantstr: "123"},
+ 	{s: 1.5, d: &scanstr, wantstr: "1.5"},
+ 
++	// To []byte
++	{s: nil, d: &scanbytes, wantbytes: nil},
++	{s: "string", d: &scanbytes, wantbytes: []byte("string")},
++	{s: []byte("byteslice"), d: &scanbytes, wantbytes: []byte("byteslice")},
++	{s: 123, d: &scanbytes, wantbytes: []byte("123")},
++	{s: int8(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: int64(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: uint8(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: uint16(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: uint32(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: uint64(123), d: &scanbytes, wantbytes: []byte("123")},
++	{s: 1.5, d: &scanbytes, wantbytes: []byte("1.5")},
++
++	// To RawBytes
++	{s: nil, d: &scanraw, wantraw: nil},
++	{s: []byte("byteslice"), d: &scanraw, wantraw: RawBytes("byteslice")},
++	{s: 123, d: &scanraw, wantraw: RawBytes("123")},
++	{s: int8(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: int64(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: uint8(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: uint16(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: uint32(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: uint64(123), d: &scanraw, wantraw: RawBytes("123")},
++	{s: 1.5, d: &scanraw, wantraw: RawBytes("1.5")},
++
+ 	// Strings to integers
+ 	{s: "255", d: &scanuint8, wantuint: 255},
+ 	{s: "256", d: &scanuint8, wanterr: `converting string "256" to a uint8: strconv.ParseUint: parsing "256": value out of range`},
+@@ -113,6 +143,7 @@
+ 	{s: []byte("byteslice"), d: &scaniface, wantiface: []byte("byteslice")},
+ 	{s: true, d: &scaniface, wantiface: true},
+ 	{s: nil, d: &scaniface},
++	{s: []byte(nil), d: &scaniface, wantiface: []byte(nil)},
+ }
+ 
+ func intPtrValue(intptr interface{}) interface{} {
+@@ -191,7 +222,7 @@
+ 			}
+ 			if srcBytes, ok := ct.s.([]byte); ok {
+ 				dstBytes := (*ifptr).([]byte)
+-				if &dstBytes[0] == &srcBytes[0] {
++				if len(srcBytes) > 0 && &dstBytes[0] == &srcBytes[0] {
+ 					errf("copy into interface{} didn't copy []byte data")
+ 				}
+ 			}
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/driver/driver.go gcc-4.8.1/libgo/go/database/sql/driver/driver.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/driver/driver.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/database/sql/driver/driver.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,8 +10,8 @@
+ 
+ import "errors"
+ 
+-// A driver Value is a value that drivers must be able to handle.
+-// A Value is either nil or an instance of one of these types:
++// Value is a value that drivers must be able to handle.
++// It is either nil or an instance of one of these types:
+ //
+ //   int64
+ //   float64
+@@ -56,7 +56,7 @@
+ 
+ // Execer is an optional interface that may be implemented by a Conn.
+ //
+-// If a Conn does not implement Execer, the db package's DB.Exec will
++// If a Conn does not implement Execer, the sql package's DB.Exec will
+ // first prepare a query, execute the statement, and then close the
+ // statement.
+ //
+@@ -65,6 +65,17 @@
+ 	Exec(query string, args []Value) (Result, error)
+ }
+ 
++// Queryer is an optional interface that may be implemented by a Conn.
++//
++// If a Conn does not implement Queryer, the sql package's DB.Query will
++// first prepare a query, execute the statement, and then close the
++// statement.
++//
++// Query may return ErrSkip.
++type Queryer interface {
++	Query(query string, args []Value) (Rows, error)
++}
++
+ // Conn is a connection to a database. It is not used concurrently
+ // by multiple goroutines.
+ //
+@@ -104,23 +115,8 @@
+ type Stmt interface {
+ 	// Close closes the statement.
+ 	//
+-	// Closing a statement should not interrupt any outstanding
+-	// query created from that statement. That is, the following
+-	// order of operations is valid:
+-	//
+-	//  * create a driver statement
+-	//  * call Query on statement, returning Rows
+-	//  * close the statement
+-	//  * read from Rows
+-	//
+-	// If closing a statement invalidates currently-running
+-	// queries, the final step above will incorrectly fail.
+-	//
+-	// TODO(bradfitz): possibly remove the restriction above, if
+-	// enough driver authors object and find it complicates their
+-	// code too much. The sql package could be smarter about
+-	// refcounting the statement and closing it at the appropriate
+-	// time.
++	// As of Go 1.1, a Stmt will not be closed if it's in use
++	// by any queries.
+ 	Close() error
+ 
+ 	// NumInput returns the number of placeholder parameters.
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/fakedb_test.go gcc-4.8.1/libgo/go/database/sql/fakedb_test.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/fakedb_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/database/sql/fakedb_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,6 +13,7 @@
+ 	"strconv"
+ 	"strings"
+ 	"sync"
++	"testing"
+ 	"time"
+ )
+ 
+@@ -34,9 +35,10 @@
+ // When opening a fakeDriver's database, it starts empty with no
+ // tables.  All tables and data are stored in memory only.
+ type fakeDriver struct {
+-	mu        sync.Mutex
+-	openCount int
+-	dbs       map[string]*fakeDB
++	mu         sync.Mutex // guards 3 following fields
++	openCount  int        // conn opens
++	closeCount int        // conn closes
++	dbs        map[string]*fakeDB
+ }
+ 
+ type fakeDB struct {
+@@ -229,7 +231,43 @@
+ 	return c.currTx, nil
+ }
+ 
+-func (c *fakeConn) Close() error {
++var hookPostCloseConn struct {
++	sync.Mutex
++	fn func(*fakeConn, error)
++}
++
++func setHookpostCloseConn(fn func(*fakeConn, error)) {
++	hookPostCloseConn.Lock()
++	defer hookPostCloseConn.Unlock()
++	hookPostCloseConn.fn = fn
++}
++
++var testStrictClose *testing.T
++
++// setStrictFakeConnClose sets the t to Errorf on when fakeConn.Close
++// fails to close. If nil, the check is disabled.
++func setStrictFakeConnClose(t *testing.T) {
++	testStrictClose = t
++}
++
++func (c *fakeConn) Close() (err error) {
++	drv := fdriver.(*fakeDriver)
++	defer func() {
++		if err != nil && testStrictClose != nil {
++			testStrictClose.Errorf("failed to close a test fakeConn: %v", err)
++		}
++		hookPostCloseConn.Lock()
++		fn := hookPostCloseConn.fn
++		hookPostCloseConn.Unlock()
++		if fn != nil {
++			fn(c, err)
++		}
++		if err == nil {
++			drv.mu.Lock()
++			drv.closeCount++
++			drv.mu.Unlock()
++		}
++	}()
+ 	if c.currTx != nil {
+ 		return errors.New("can't close fakeConn; in a Transaction")
+ 	}
+@@ -266,6 +304,18 @@
+ 	return nil, driver.ErrSkip
+ }
+ 
++func (c *fakeConn) Query(query string, args []driver.Value) (driver.Rows, error) {
++	// This is an optional interface, but it's implemented here
++	// just to check that all the args are of the proper types.
++	// ErrSkip is returned so the caller acts as if we didn't
++	// implement this at all.
++	err := checkSubsetTypes(args)
++	if err != nil {
++		return nil, err
++	}
++	return nil, driver.ErrSkip
++}
++
+ func errf(msg string, args ...interface{}) error {
+ 	return errors.New("fakedb: " + fmt.Sprintf(msg, args...))
+ }
+@@ -412,6 +462,12 @@
+ }
+ 
+ func (s *fakeStmt) Close() error {
++	if s.c == nil {
++		panic("nil conn in fakeStmt.Close")
++	}
++	if s.c.db == nil {
++		panic("in fakeStmt.Close, conn's db is nil (already closed)")
++	}
+ 	if !s.closed {
+ 		s.c.incrStat(&s.c.stmtsClosed)
+ 		s.closed = true
+@@ -503,6 +559,15 @@
+ 	if !ok {
+ 		return nil, fmt.Errorf("fakedb: table %q doesn't exist", s.table)
+ 	}
++
++	if s.table == "magicquery" {
++		if len(s.whereCol) == 2 && s.whereCol[0] == "op" && s.whereCol[1] == "millis" {
++			if args[0] == "sleep" {
++				time.Sleep(time.Duration(args[1].(int64)) * time.Millisecond)
++			}
++		}
++	}
++
+ 	t.mu.Lock()
+ 	defer t.mu.Unlock()
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/sql.go gcc-4.8.1/libgo/go/database/sql/sql.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/sql.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/database/sql/sql.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,6 +4,9 @@
+ 
+ // Package sql provides a generic interface around SQL (or SQL-like)
+ // databases.
++//
++// The sql package must be used in conjunction with a database driver.
++// See http://golang.org/s/sqldrivers for a list of drivers.
+ package sql
+ 
+ import (
+@@ -11,6 +14,7 @@
+ 	"errors"
+ 	"fmt"
+ 	"io"
++	"runtime"
+ 	"sync"
+ )
+ 
+@@ -176,22 +180,197 @@
+ // DB is a database handle. It's safe for concurrent use by multiple
+ // goroutines.
+ //
+-// If the underlying database driver has the concept of a connection
+-// and per-connection session state, the sql package manages creating
+-// and freeing connections automatically, including maintaining a free
+-// pool of idle connections. If observing session state is required,
+-// either do not share a *DB between multiple concurrent goroutines or
+-// create and observe all state only within a transaction. Once
+-// DB.Open is called, the returned Tx is bound to a single isolated
+-// connection. Once Tx.Commit or Tx.Rollback is called, that
+-// connection is returned to DB's idle connection pool.
++// The sql package creates and frees connections automatically; it
++// also maintains a free pool of idle connections. If the database has
++// a concept of per-connection state, such state can only be reliably
++// observed within a transaction. Once DB.Begin is called, the
++// returned Tx is bound to a single connection. Once Commit or
++// Rollback is called on the transaction, that transaction's
++// connection is returned to DB's idle connection pool. The pool size
++// can be controlled with SetMaxIdleConns.
+ type DB struct {
+ 	driver driver.Driver
+ 	dsn    string
+ 
+-	mu       sync.Mutex // protects freeConn and closed
+-	freeConn []driver.Conn
++	mu       sync.Mutex // protects following fields
++	freeConn []*driverConn
+ 	closed   bool
++	dep      map[finalCloser]depSet
++	lastPut  map[*driverConn]string // stacktrace of last conn's put; debug only
++	maxIdle  int                    // zero means defaultMaxIdleConns; negative means 0
++}
++
++// driverConn wraps a driver.Conn with a mutex, to
++// be held during all calls into the Conn. (including any calls onto
++// interfaces returned via that Conn, such as calls on Tx, Stmt,
++// Result, Rows)
++type driverConn struct {
++	db *DB
++
++	sync.Mutex  // guards following
++	ci          driver.Conn
++	closed      bool
++	finalClosed bool // ci.Close has been called
++	openStmt    map[driver.Stmt]bool
++
++	// guarded by db.mu
++	inUse      bool
++	onPut      []func() // code (with db.mu held) run when conn is next returned
++	dbmuClosed bool     // same as closed, but guarded by db.mu, for connIfFree
++}
++
++func (dc *driverConn) removeOpenStmt(si driver.Stmt) {
++	dc.Lock()
++	defer dc.Unlock()
++	delete(dc.openStmt, si)
++}
++
++func (dc *driverConn) prepareLocked(query string) (driver.Stmt, error) {
++	si, err := dc.ci.Prepare(query)
++	if err == nil {
++		// Track each driverConn's open statements, so we can close them
++		// before closing the conn.
++		//
++		// TODO(bradfitz): let drivers opt out of caring about
++		// stmt closes if the conn is about to close anyway? For now
++		// do the safe thing, in case stmts need to be closed.
++		//
++		// TODO(bradfitz): after Go 1.1, closing driver.Stmts
++		// should be moved to driverStmt, using unique
++		// *driverStmts everywhere (including from
++		// *Stmt.connStmt, instead of returning a
++		// driver.Stmt), using driverStmt as a pointer
++		// everywhere, and making it a finalCloser.
++		if dc.openStmt == nil {
++			dc.openStmt = make(map[driver.Stmt]bool)
++		}
++		dc.openStmt[si] = true
++	}
++	return si, err
++}
++
++// the dc.db's Mutex is held.
++func (dc *driverConn) closeDBLocked() error {
++	dc.Lock()
++	if dc.closed {
++		dc.Unlock()
++		return errors.New("sql: duplicate driverConn close")
++	}
++	dc.closed = true
++	dc.Unlock() // not defer; removeDep finalClose calls may need to lock
++	return dc.db.removeDepLocked(dc, dc)()
++}
++
++func (dc *driverConn) Close() error {
++	dc.Lock()
++	if dc.closed {
++		dc.Unlock()
++		return errors.New("sql: duplicate driverConn close")
++	}
++	dc.closed = true
++	dc.Unlock() // not defer; removeDep finalClose calls may need to lock
++
++	// And now updates that require holding dc.mu.Lock.
++	dc.db.mu.Lock()
++	dc.dbmuClosed = true
++	fn := dc.db.removeDepLocked(dc, dc)
++	dc.db.mu.Unlock()
++	return fn()
++}
++
++func (dc *driverConn) finalClose() error {
++	dc.Lock()
++
++	for si := range dc.openStmt {
++		si.Close()
++	}
++	dc.openStmt = nil
++
++	err := dc.ci.Close()
++	dc.ci = nil
++	dc.finalClosed = true
++
++	dc.Unlock()
++	return err
++}
++
++// driverStmt associates a driver.Stmt with the
++// *driverConn from which it came, so the driverConn's lock can be
++// held during calls.
++type driverStmt struct {
++	sync.Locker // the *driverConn
++	si          driver.Stmt
++}
++
++func (ds *driverStmt) Close() error {
++	ds.Lock()
++	defer ds.Unlock()
++	return ds.si.Close()
++}
++
++// depSet is a finalCloser's outstanding dependencies
++type depSet map[interface{}]bool // set of true bools
++
++// The finalCloser interface is used by (*DB).addDep and related
++// dependency reference counting.
++type finalCloser interface {
++	// finalClose is called when the reference count of an object
++	// goes to zero. (*DB).mu is not held while calling it.
++	finalClose() error
++}
++
++// addDep notes that x now depends on dep, and x's finalClose won't be
++// called until all of x's dependencies are removed with removeDep.
++func (db *DB) addDep(x finalCloser, dep interface{}) {
++	//println(fmt.Sprintf("addDep(%T %p, %T %p)", x, x, dep, dep))
++	db.mu.Lock()
++	defer db.mu.Unlock()
++	db.addDepLocked(x, dep)
++}
++
++func (db *DB) addDepLocked(x finalCloser, dep interface{}) {
++	if db.dep == nil {
++		db.dep = make(map[finalCloser]depSet)
++	}
++	xdep := db.dep[x]
++	if xdep == nil {
++		xdep = make(depSet)
++		db.dep[x] = xdep
++	}
++	xdep[dep] = true
++}
++
++// removeDep notes that x no longer depends on dep.
++// If x still has dependencies, nil is returned.
++// If x no longer has any dependencies, its finalClose method will be
++// called and its error value will be returned.
++func (db *DB) removeDep(x finalCloser, dep interface{}) error {
++	db.mu.Lock()
++	fn := db.removeDepLocked(x, dep)
++	db.mu.Unlock()
++	return fn()
++}
++
++func (db *DB) removeDepLocked(x finalCloser, dep interface{}) func() error {
++	//println(fmt.Sprintf("removeDep(%T %p, %T %p)", x, x, dep, dep))
++	done := false
++
++	xdep := db.dep[x]
++	if xdep != nil {
++		delete(xdep, dep)
++		if len(xdep) == 0 {
++			delete(db.dep, x)
++			done = true
++		}
++	}
++
++	if !done {
++		return func() error { return nil }
++	}
++	return func() error {
++		//println(fmt.Sprintf("calling final close on %T %v (%#v)", x, x, x))
++		return x.finalClose()
++	}
+ }
+ 
+ // Open opens a database specified by its database driver name and a
+@@ -199,13 +378,38 @@
+ // database name and connection information.
+ //
+ // Most users will open a database via a driver-specific connection
+-// helper function that returns a *DB.
++// helper function that returns a *DB. No database drivers are included
++// in the Go standard library. See http://golang.org/s/sqldrivers for
++// a list of third-party drivers.
++//
++// Open may just validate its arguments without creating a connection
++// to the database. To verify that the data source name is valid, call
++// Ping.
+ func Open(driverName, dataSourceName string) (*DB, error) {
+-	driver, ok := drivers[driverName]
++	driveri, ok := drivers[driverName]
+ 	if !ok {
+ 		return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
+ 	}
+-	return &DB{driver: driver, dsn: dataSourceName}, nil
++	db := &DB{
++		driver:  driveri,
++		dsn:     dataSourceName,
++		lastPut: make(map[*driverConn]string),
++	}
++	return db, nil
++}
++
++// Ping verifies a connection to the database is still alive,
++// establishing a connection if necessary.
++func (db *DB) Ping() error {
++	// TODO(bradfitz): give drivers an optional hook to implement
++	// this in a more efficient or more reliable way, if they
++	// have one.
++	dc, err := db.conn()
++	if err != nil {
++		return err
++	}
++	db.putConn(dc, nil)
++	return nil
+ }
+ 
+ // Close closes the database, releasing any open resources.
+@@ -213,8 +417,8 @@
+ 	db.mu.Lock()
+ 	defer db.mu.Unlock()
+ 	var err error
+-	for _, c := range db.freeConn {
+-		err1 := c.Close()
++	for _, dc := range db.freeConn {
++		err1 := dc.closeDBLocked()
+ 		if err1 != nil {
+ 			err = err1
+ 		}
+@@ -224,15 +428,45 @@
+ 	return err
+ }
+ 
+-func (db *DB) maxIdleConns() int {
+-	const defaultMaxIdleConns = 2
+-	// TODO(bradfitz): ask driver, if supported, for its default preference
+-	// TODO(bradfitz): let users override?
+-	return defaultMaxIdleConns
++const defaultMaxIdleConns = 2
++
++func (db *DB) maxIdleConnsLocked() int {
++	n := db.maxIdle
++	switch {
++	case n == 0:
++		// TODO(bradfitz): ask driver, if supported, for its default preference
++		return defaultMaxIdleConns
++	case n < 0:
++		return 0
++	default:
++		return n
++	}
++}
++
++// SetMaxIdleConns sets the maximum number of connections in the idle
++// connection pool.
++//
++// If n <= 0, no idle connections are retained.
++func (db *DB) SetMaxIdleConns(n int) {
++	db.mu.Lock()
++	defer db.mu.Unlock()
++	if n > 0 {
++		db.maxIdle = n
++	} else {
++		// No idle connections.
++		db.maxIdle = -1
++	}
++	for len(db.freeConn) > 0 && len(db.freeConn) > n {
++		nfree := len(db.freeConn)
++		dc := db.freeConn[nfree-1]
++		db.freeConn[nfree-1] = nil
++		db.freeConn = db.freeConn[:nfree-1]
++		go dc.Close()
++	}
+ }
+ 
+-// conn returns a newly-opened or cached driver.Conn
+-func (db *DB) conn() (driver.Conn, error) {
++// conn returns a newly-opened or cached *driverConn
++func (db *DB) conn() (*driverConn, error) {
+ 	db.mu.Lock()
+ 	if db.closed {
+ 		db.mu.Unlock()
+@@ -241,53 +475,132 @@
+ 	if n := len(db.freeConn); n > 0 {
+ 		conn := db.freeConn[n-1]
+ 		db.freeConn = db.freeConn[:n-1]
++		conn.inUse = true
+ 		db.mu.Unlock()
+ 		return conn, nil
+ 	}
+ 	db.mu.Unlock()
+-	return db.driver.Open(db.dsn)
++
++	ci, err := db.driver.Open(db.dsn)
++	if err != nil {
++		return nil, err
++	}
++	dc := &driverConn{
++		db: db,
++		ci: ci,
++	}
++	db.mu.Lock()
++	db.addDepLocked(dc, dc)
++	dc.inUse = true
++	db.mu.Unlock()
++	return dc, nil
+ }
+ 
+-func (db *DB) connIfFree(wanted driver.Conn) (conn driver.Conn, ok bool) {
++var (
++	errConnClosed = errors.New("database/sql: internal sentinel error: conn is closed")
++	errConnBusy   = errors.New("database/sql: internal sentinel error: conn is busy")
++)
++
++// connIfFree returns (wanted, nil) if wanted is still a valid conn and
++// isn't in use.
++//
++// The error is errConnClosed if the connection if the requested connection
++// is invalid because it's been closed.
++//
++// The error is errConnBusy if the connection is in use.
++func (db *DB) connIfFree(wanted *driverConn) (*driverConn, error) {
+ 	db.mu.Lock()
+ 	defer db.mu.Unlock()
++	if wanted.inUse {
++		return nil, errConnBusy
++	}
++	if wanted.dbmuClosed {
++		return nil, errConnClosed
++	}
+ 	for i, conn := range db.freeConn {
+ 		if conn != wanted {
+ 			continue
+ 		}
+ 		db.freeConn[i] = db.freeConn[len(db.freeConn)-1]
+ 		db.freeConn = db.freeConn[:len(db.freeConn)-1]
+-		return wanted, true
++		wanted.inUse = true
++		return wanted, nil
+ 	}
+-	return nil, false
++	// TODO(bradfitz): shouldn't get here. After Go 1.1, change this to:
++	// panic("connIfFree call requested a non-closed, non-busy, non-free conn")
++	// Which passes all the tests, but I'm too paranoid to include this
++	// late in Go 1.1.
++	// Instead, treat it like a busy connection:
++	return nil, errConnBusy
+ }
+ 
+ // putConnHook is a hook for testing.
+-var putConnHook func(*DB, driver.Conn)
++var putConnHook func(*DB, *driverConn)
++
++// noteUnusedDriverStatement notes that si is no longer used and should
++// be closed whenever possible (when c is next not in use), unless c is
++// already closed.
++func (db *DB) noteUnusedDriverStatement(c *driverConn, si driver.Stmt) {
++	db.mu.Lock()
++	defer db.mu.Unlock()
++	if c.inUse {
++		c.onPut = append(c.onPut, func() {
++			si.Close()
++		})
++	} else {
++		c.Lock()
++		defer c.Unlock()
++		if !c.finalClosed {
++			si.Close()
++		}
++	}
++}
++
++// debugGetPut determines whether getConn & putConn calls' stack traces
++// are returned for more verbose crashes.
++const debugGetPut = false
+ 
+ // putConn adds a connection to the db's free pool.
+ // err is optionally the last error that occurred on this connection.
+-func (db *DB) putConn(c driver.Conn, err error) {
++func (db *DB) putConn(dc *driverConn, err error) {
++	db.mu.Lock()
++	if !dc.inUse {
++		if debugGetPut {
++			fmt.Printf("putConn(%v) DUPLICATE was: %s\n\nPREVIOUS was: %s", dc, stack(), db.lastPut[dc])
++		}
++		panic("sql: connection returned that was never out")
++	}
++	if debugGetPut {
++		db.lastPut[dc] = stack()
++	}
++	dc.inUse = false
++
++	for _, fn := range dc.onPut {
++		fn()
++	}
++	dc.onPut = nil
++
+ 	if err == driver.ErrBadConn {
+ 		// Don't reuse bad connections.
++		db.mu.Unlock()
+ 		return
+ 	}
+-	db.mu.Lock()
+ 	if putConnHook != nil {
+-		putConnHook(db, c)
++		putConnHook(db, dc)
+ 	}
+-	if n := len(db.freeConn); !db.closed && n < db.maxIdleConns() {
+-		db.freeConn = append(db.freeConn, c)
++	if n := len(db.freeConn); !db.closed && n < db.maxIdleConnsLocked() {
++		db.freeConn = append(db.freeConn, dc)
+ 		db.mu.Unlock()
+ 		return
+ 	}
+-	// TODO: check to see if we need this Conn for any prepared
+-	// statements which are still active?
+ 	db.mu.Unlock()
+-	c.Close()
++
++	dc.Close()
+ }
+ 
+-// Prepare creates a prepared statement for later execution.
++// Prepare creates a prepared statement for later queries or executions.
++// Multiple queries or executions may be run concurrently from the
++// returned statement.
+ func (db *DB) Prepare(query string) (*Stmt, error) {
+ 	var stmt *Stmt
+ 	var err error
+@@ -300,34 +613,36 @@
+ 	return stmt, err
+ }
+ 
+-func (db *DB) prepare(query string) (stmt *Stmt, err error) {
++func (db *DB) prepare(query string) (*Stmt, error) {
+ 	// TODO: check if db.driver supports an optional
+ 	// driver.Preparer interface and call that instead, if so,
+ 	// otherwise we make a prepared statement that's bound
+ 	// to a connection, and to execute this prepared statement
+ 	// we either need to use this connection (if it's free), else
+ 	// get a new connection + re-prepare + execute on that one.
+-	ci, err := db.conn()
++	dc, err := db.conn()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	defer func() {
+-		db.putConn(ci, err)
+-	}()
+-
+-	si, err := ci.Prepare(query)
++	dc.Lock()
++	si, err := dc.prepareLocked(query)
++	dc.Unlock()
+ 	if err != nil {
++		db.putConn(dc, err)
+ 		return nil, err
+ 	}
+-	stmt = &Stmt{
++	stmt := &Stmt{
+ 		db:    db,
+ 		query: query,
+-		css:   []connStmt{{ci, si}},
++		css:   []connStmt{{dc, si}},
+ 	}
++	db.addDep(stmt, stmt)
++	db.putConn(dc, nil)
+ 	return stmt, nil
+ }
+ 
+ // Exec executes a query without returning any rows.
++// The args are for any placeholder parameters in the query.
+ func (db *DB) Exec(query string, args ...interface{}) (Result, error) {
+ 	var res Result
+ 	var err error
+@@ -341,50 +656,119 @@
+ }
+ 
+ func (db *DB) exec(query string, args []interface{}) (res Result, err error) {
+-	ci, err := db.conn()
++	dc, err := db.conn()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 	defer func() {
+-		db.putConn(ci, err)
++		db.putConn(dc, err)
+ 	}()
+ 
+-	if execer, ok := ci.(driver.Execer); ok {
++	if execer, ok := dc.ci.(driver.Execer); ok {
+ 		dargs, err := driverArgs(nil, args)
+ 		if err != nil {
+ 			return nil, err
+ 		}
++		dc.Lock()
+ 		resi, err := execer.Exec(query, dargs)
++		dc.Unlock()
+ 		if err != driver.ErrSkip {
+ 			if err != nil {
+ 				return nil, err
+ 			}
+-			return result{resi}, nil
++			return driverResult{dc, resi}, nil
+ 		}
+ 	}
+ 
+-	sti, err := ci.Prepare(query)
++	dc.Lock()
++	si, err := dc.ci.Prepare(query)
++	dc.Unlock()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	defer sti.Close()
+-
+-	return resultFromStatement(sti, args...)
++	defer withLock(dc, func() { si.Close() })
++	return resultFromStatement(driverStmt{dc, si}, args...)
+ }
+ 
+ // Query executes a query that returns rows, typically a SELECT.
+ // The args are for any placeholder parameters in the query.
+ func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
+-	stmt, err := db.Prepare(query)
++	var rows *Rows
++	var err error
++	for i := 0; i < 10; i++ {
++		rows, err = db.query(query, args)
++		if err != driver.ErrBadConn {
++			break
++		}
++	}
++	return rows, err
++}
++
++func (db *DB) query(query string, args []interface{}) (*Rows, error) {
++	ci, err := db.conn()
++	if err != nil {
++		return nil, err
++	}
++
++	releaseConn := func(err error) { db.putConn(ci, err) }
++
++	return db.queryConn(ci, releaseConn, query, args)
++}
++
++// queryConn executes a query on the given connection.
++// The connection gets released by the releaseConn function.
++func (db *DB) queryConn(dc *driverConn, releaseConn func(error), query string, args []interface{}) (*Rows, error) {
++	if queryer, ok := dc.ci.(driver.Queryer); ok {
++		dargs, err := driverArgs(nil, args)
++		if err != nil {
++			releaseConn(err)
++			return nil, err
++		}
++		dc.Lock()
++		rowsi, err := queryer.Query(query, dargs)
++		dc.Unlock()
++		if err != driver.ErrSkip {
++			if err != nil {
++				releaseConn(err)
++				return nil, err
++			}
++			// Note: ownership of dc passes to the *Rows, to be freed
++			// with releaseConn.
++			rows := &Rows{
++				dc:          dc,
++				releaseConn: releaseConn,
++				rowsi:       rowsi,
++			}
++			return rows, nil
++		}
++	}
++
++	dc.Lock()
++	si, err := dc.ci.Prepare(query)
++	dc.Unlock()
+ 	if err != nil {
++		releaseConn(err)
+ 		return nil, err
+ 	}
+-	rows, err := stmt.Query(args...)
++
++	ds := driverStmt{dc, si}
++	rowsi, err := rowsiFromStatement(ds, args...)
+ 	if err != nil {
+-		stmt.Close()
++		releaseConn(err)
++		dc.Lock()
++		si.Close()
++		dc.Unlock()
+ 		return nil, err
+ 	}
+-	rows.closeStmt = stmt
++
++	// Note: ownership of ci passes to the *Rows, to be freed
++	// with releaseConn.
++	rows := &Rows{
++		dc:          dc,
++		releaseConn: releaseConn,
++		rowsi:       rowsi,
++		closeStmt:   si,
++	}
+ 	return rows, nil
+ }
+ 
+@@ -411,18 +795,20 @@
+ }
+ 
+ func (db *DB) begin() (tx *Tx, err error) {
+-	ci, err := db.conn()
++	dc, err := db.conn()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	txi, err := ci.Begin()
++	dc.Lock()
++	txi, err := dc.ci.Begin()
++	dc.Unlock()
+ 	if err != nil {
+-		db.putConn(ci, err)
++		db.putConn(dc, err)
+ 		return nil, err
+ 	}
+ 	return &Tx{
+ 		db:  db,
+-		ci:  ci,
++		dc:  dc,
+ 		txi: txi,
+ 	}, nil
+ }
+@@ -441,15 +827,11 @@
+ type Tx struct {
+ 	db *DB
+ 
+-	// ci is owned exclusively until Commit or Rollback, at which point
++	// dc is owned exclusively until Commit or Rollback, at which point
+ 	// it's returned with putConn.
+-	ci  driver.Conn
++	dc  *driverConn
+ 	txi driver.Tx
+ 
+-	// cimu is held while somebody is using ci (between grabConn
+-	// and releaseConn)
+-	cimu sync.Mutex
+-
+ 	// done transitions from false to true exactly once, on Commit
+ 	// or Rollback. once done, all operations fail with
+ 	// ErrTxDone.
+@@ -463,21 +845,16 @@
+ 		panic("double close") // internal error
+ 	}
+ 	tx.done = true
+-	tx.db.putConn(tx.ci, nil)
+-	tx.ci = nil
++	tx.db.putConn(tx.dc, nil)
++	tx.dc = nil
+ 	tx.txi = nil
+ }
+ 
+-func (tx *Tx) grabConn() (driver.Conn, error) {
++func (tx *Tx) grabConn() (*driverConn, error) {
+ 	if tx.done {
+ 		return nil, ErrTxDone
+ 	}
+-	tx.cimu.Lock()
+-	return tx.ci, nil
+-}
+-
+-func (tx *Tx) releaseConn() {
+-	tx.cimu.Unlock()
++	return tx.dc, nil
+ }
+ 
+ // Commit commits the transaction.
+@@ -486,6 +863,8 @@
+ 		return ErrTxDone
+ 	}
+ 	defer tx.close()
++	tx.dc.Lock()
++	defer tx.dc.Unlock()
+ 	return tx.txi.Commit()
+ }
+ 
+@@ -495,6 +874,8 @@
+ 		return ErrTxDone
+ 	}
+ 	defer tx.close()
++	tx.dc.Lock()
++	defer tx.dc.Unlock()
+ 	return tx.txi.Rollback()
+ }
+ 
+@@ -518,21 +899,25 @@
+ 	// Perhaps just looking at the reference count (by noting
+ 	// Stmt.Close) would be enough. We might also want a finalizer
+ 	// on Stmt to drop the reference count.
+-	ci, err := tx.grabConn()
++	dc, err := tx.grabConn()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	defer tx.releaseConn()
+ 
+-	si, err := ci.Prepare(query)
++	dc.Lock()
++	si, err := dc.ci.Prepare(query)
++	dc.Unlock()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 
+ 	stmt := &Stmt{
+-		db:    tx.db,
+-		tx:    tx,
+-		txsi:  si,
++		db: tx.db,
++		tx: tx,
++		txsi: &driverStmt{
++			Locker: dc,
++			si:     si,
++		},
+ 		query: query,
+ 	}
+ 	return stmt, nil
+@@ -556,16 +941,20 @@
+ 	if tx.db != stmt.db {
+ 		return &Stmt{stickyErr: errors.New("sql: Tx.Stmt: statement from different database used")}
+ 	}
+-	ci, err := tx.grabConn()
++	dc, err := tx.grabConn()
+ 	if err != nil {
+ 		return &Stmt{stickyErr: err}
+ 	}
+-	defer tx.releaseConn()
+-	si, err := ci.Prepare(stmt.query)
++	dc.Lock()
++	si, err := dc.ci.Prepare(stmt.query)
++	dc.Unlock()
+ 	return &Stmt{
+-		db:        tx.db,
+-		tx:        tx,
+-		txsi:      si,
++		db: tx.db,
++		tx: tx,
++		txsi: &driverStmt{
++			Locker: dc,
++			si:     si,
++		},
+ 		query:     stmt.query,
+ 		stickyErr: err,
+ 	}
+@@ -574,51 +963,46 @@
+ // Exec executes a query that doesn't return rows.
+ // For example: an INSERT and UPDATE.
+ func (tx *Tx) Exec(query string, args ...interface{}) (Result, error) {
+-	ci, err := tx.grabConn()
++	dc, err := tx.grabConn()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	defer tx.releaseConn()
+ 
+-	if execer, ok := ci.(driver.Execer); ok {
++	if execer, ok := dc.ci.(driver.Execer); ok {
+ 		dargs, err := driverArgs(nil, args)
+ 		if err != nil {
+ 			return nil, err
+ 		}
++		dc.Lock()
+ 		resi, err := execer.Exec(query, dargs)
++		dc.Unlock()
+ 		if err == nil {
+-			return result{resi}, nil
++			return driverResult{dc, resi}, nil
+ 		}
+ 		if err != driver.ErrSkip {
+ 			return nil, err
+ 		}
+ 	}
+ 
+-	sti, err := ci.Prepare(query)
++	dc.Lock()
++	si, err := dc.ci.Prepare(query)
++	dc.Unlock()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	defer sti.Close()
++	defer withLock(dc, func() { si.Close() })
+ 
+-	return resultFromStatement(sti, args...)
++	return resultFromStatement(driverStmt{dc, si}, args...)
+ }
+ 
+ // Query executes a query that returns rows, typically a SELECT.
+ func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) {
+-	if tx.done {
+-		return nil, ErrTxDone
+-	}
+-	stmt, err := tx.Prepare(query)
+-	if err != nil {
+-		return nil, err
+-	}
+-	rows, err := stmt.Query(args...)
++	dc, err := tx.grabConn()
+ 	if err != nil {
+-		stmt.Close()
+ 		return nil, err
+ 	}
+-	rows.closeStmt = stmt
+-	return rows, err
++	releaseConn := func(error) {}
++	return tx.db.queryConn(dc, releaseConn, query, args)
+ }
+ 
+ // QueryRow executes a query that is expected to return at most one row.
+@@ -631,7 +1015,7 @@
+ 
+ // connStmt is a prepared statement on a particular connection.
+ type connStmt struct {
+-	ci driver.Conn
++	dc *driverConn
+ 	si driver.Stmt
+ }
+ 
+@@ -642,9 +1026,11 @@
+ 	query     string // that created the Stmt
+ 	stickyErr error  // if non-nil, this error is returned for all operations
+ 
++	closemu sync.RWMutex // held exclusively during close, for read otherwise.
++
+ 	// If in a transaction, else both nil:
+ 	tx   *Tx
+-	txsi driver.Stmt
++	txsi *driverStmt
+ 
+ 	mu     sync.Mutex // protects the rest of the fields
+ 	closed bool
+@@ -659,39 +1045,47 @@
+ // Exec executes a prepared statement with the given arguments and
+ // returns a Result summarizing the effect of the statement.
+ func (s *Stmt) Exec(args ...interface{}) (Result, error) {
+-	_, releaseConn, si, err := s.connStmt()
++	s.closemu.RLock()
++	defer s.closemu.RUnlock()
++	dc, releaseConn, si, err := s.connStmt()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 	defer releaseConn(nil)
+ 
+-	return resultFromStatement(si, args...)
++	return resultFromStatement(driverStmt{dc, si}, args...)
+ }
+ 
+-func resultFromStatement(si driver.Stmt, args ...interface{}) (Result, error) {
++func resultFromStatement(ds driverStmt, args ...interface{}) (Result, error) {
++	ds.Lock()
++	want := ds.si.NumInput()
++	ds.Unlock()
++
+ 	// -1 means the driver doesn't know how to count the number of
+ 	// placeholders, so we won't sanity check input here and instead let the
+ 	// driver deal with errors.
+-	if want := si.NumInput(); want != -1 && len(args) != want {
++	if want != -1 && len(args) != want {
+ 		return nil, fmt.Errorf("sql: expected %d arguments, got %d", want, len(args))
+ 	}
+ 
+-	dargs, err := driverArgs(si, args)
++	dargs, err := driverArgs(&ds, args)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 
+-	resi, err := si.Exec(dargs)
++	ds.Lock()
++	resi, err := ds.si.Exec(dargs)
++	ds.Unlock()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return result{resi}, nil
++	return driverResult{ds.Locker, resi}, nil
+ }
+ 
+ // connStmt returns a free driver connection on which to execute the
+ // statement, a function to call to release the connection, and a
+ // statement bound to that connection.
+-func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(error), si driver.Stmt, err error) {
++func (s *Stmt) connStmt() (ci *driverConn, releaseConn func(error), si driver.Stmt, err error) {
+ 	if err = s.stickyErr; err != nil {
+ 		return
+ 	}
+@@ -710,19 +1104,27 @@
+ 		if err != nil {
+ 			return
+ 		}
+-		releaseConn = func(error) { s.tx.releaseConn() }
+-		return ci, releaseConn, s.txsi, nil
++		releaseConn = func(error) {}
++		return ci, releaseConn, s.txsi.si, nil
+ 	}
+ 
+ 	var cs connStmt
+ 	match := false
+-	for _, v := range s.css {
+-		// TODO(bradfitz): lazily clean up entries in this
+-		// list with dead conns while enumerating
+-		if _, match = s.db.connIfFree(v.ci); match {
++	for i := 0; i < len(s.css); i++ {
++		v := s.css[i]
++		_, err := s.db.connIfFree(v.dc)
++		if err == nil {
++			match = true
+ 			cs = v
+ 			break
+ 		}
++		if err == errConnClosed {
++			// Lazily remove dead conn from our freelist.
++			s.css[i] = s.css[len(s.css)-1]
++			s.css = s.css[:len(s.css)-1]
++			i--
++		}
++
+ 	}
+ 	s.mu.Unlock()
+ 
+@@ -730,11 +1132,13 @@
+ 	// TODO(bradfitz): or wait for one? make configurable later?
+ 	if !match {
+ 		for i := 0; ; i++ {
+-			ci, err := s.db.conn()
++			dc, err := s.db.conn()
+ 			if err != nil {
+ 				return nil, nil, nil, err
+ 			}
+-			si, err := ci.Prepare(s.query)
++			dc.Lock()
++			si, err := dc.prepareLocked(s.query)
++			dc.Unlock()
+ 			if err == driver.ErrBadConn && i < 10 {
+ 				continue
+ 			}
+@@ -742,14 +1146,14 @@
+ 				return nil, nil, nil, err
+ 			}
+ 			s.mu.Lock()
+-			cs = connStmt{ci, si}
++			cs = connStmt{dc, si}
+ 			s.css = append(s.css, cs)
+ 			s.mu.Unlock()
+ 			break
+ 		}
+ 	}
+ 
+-	conn := cs.ci
++	conn := cs.dc
+ 	releaseConn = func(err error) { s.db.putConn(conn, err) }
+ 	return conn, releaseConn, cs.si, nil
+ }
+@@ -757,37 +1161,60 @@
+ // Query executes a prepared query statement with the given arguments
+ // and returns the query results as a *Rows.
+ func (s *Stmt) Query(args ...interface{}) (*Rows, error) {
+-	ci, releaseConn, si, err := s.connStmt()
++	s.closemu.RLock()
++	defer s.closemu.RUnlock()
++
++	dc, releaseConn, si, err := s.connStmt()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 
++	ds := driverStmt{dc, si}
++	rowsi, err := rowsiFromStatement(ds, args...)
++	if err != nil {
++		releaseConn(err)
++		return nil, err
++	}
++
++	// Note: ownership of ci passes to the *Rows, to be freed
++	// with releaseConn.
++	rows := &Rows{
++		dc:    dc,
++		rowsi: rowsi,
++		// releaseConn set below
++	}
++	s.db.addDep(s, rows)
++	rows.releaseConn = func(err error) {
++		releaseConn(err)
++		s.db.removeDep(s, rows)
++	}
++	return rows, nil
++}
++
++func rowsiFromStatement(ds driverStmt, args ...interface{}) (driver.Rows, error) {
++	ds.Lock()
++	want := ds.si.NumInput()
++	ds.Unlock()
++
+ 	// -1 means the driver doesn't know how to count the number of
+ 	// placeholders, so we won't sanity check input here and instead let the
+ 	// driver deal with errors.
+-	if want := si.NumInput(); want != -1 && len(args) != want {
+-		return nil, fmt.Errorf("sql: statement expects %d inputs; got %d", si.NumInput(), len(args))
++	if want != -1 && len(args) != want {
++		return nil, fmt.Errorf("sql: statement expects %d inputs; got %d", want, len(args))
+ 	}
+ 
+-	dargs, err := driverArgs(si, args)
++	dargs, err := driverArgs(&ds, args)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 
+-	rowsi, err := si.Query(dargs)
++	ds.Lock()
++	rowsi, err := ds.si.Query(dargs)
++	ds.Unlock()
+ 	if err != nil {
+-		releaseConn(err)
+ 		return nil, err
+ 	}
+-	// Note: ownership of ci passes to the *Rows, to be freed
+-	// with releaseConn.
+-	rows := &Rows{
+-		db:          s.db,
+-		ci:          ci,
+-		releaseConn: releaseConn,
+-		rowsi:       rowsi,
+-	}
+-	return rows, nil
++	return rowsi, nil
+ }
+ 
+ // QueryRow executes a prepared query statement with the given arguments.
+@@ -811,6 +1238,9 @@
+ 
+ // Close closes the statement.
+ func (s *Stmt) Close() error {
++	s.closemu.Lock()
++	defer s.closemu.Unlock()
++
+ 	if s.stickyErr != nil {
+ 		return s.stickyErr
+ 	}
+@@ -823,18 +1253,19 @@
+ 
+ 	if s.tx != nil {
+ 		s.txsi.Close()
+-	} else {
+-		for _, v := range s.css {
+-			if ci, match := s.db.connIfFree(v.ci); match {
+-				v.si.Close()
+-				s.db.putConn(ci, nil)
+-			} else {
+-				// TODO(bradfitz): care that we can't close
+-				// this statement because the statement's
+-				// connection is in use?
+-			}
+-		}
++		return nil
++	}
++
++	return s.db.removeDep(s, s)
++}
++
++func (s *Stmt) finalClose() error {
++	for _, v := range s.css {
++		s.db.noteUnusedDriverStatement(v.dc, v.si)
++		v.dc.removeOpenStmt(v.si)
++		s.db.removeDep(v.dc, s)
+ 	}
++	s.css = nil
+ 	return nil
+ }
+ 
+@@ -852,15 +1283,14 @@
+ //     err = rows.Err() // get any error encountered during iteration
+ //     ...
+ type Rows struct {
+-	db          *DB
+-	ci          driver.Conn // owned; must call putconn when closed to release
++	dc          *driverConn // owned; must call releaseConn when closed to release
+ 	releaseConn func(error)
+ 	rowsi       driver.Rows
+ 
+ 	closed    bool
+ 	lastcols  []driver.Value
+ 	lasterr   error
+-	closeStmt *Stmt // if non-nil, statement to Close on close
++	closeStmt driver.Stmt // if non-nil, statement to Close on close
+ }
+ 
+ // Next prepares the next result row for reading with the Scan method.
+@@ -936,24 +1366,6 @@
+ 			return fmt.Errorf("sql: Scan error on column index %d: %v", i, err)
+ 		}
+ 	}
+-	for _, dp := range dest {
+-		b, ok := dp.(*[]byte)
+-		if !ok {
+-			continue
+-		}
+-		if *b == nil {
+-			// If the []byte is now nil (for a NULL value),
+-			// don't fall through to below which would
+-			// turn it into a non-nil 0-length byte slice
+-			continue
+-		}
+-		if _, ok = dp.(*RawBytes); ok {
+-			continue
+-		}
+-		clone := make([]byte, len(*b))
+-		copy(clone, *b)
+-		*b = clone
+-	}
+ 	return nil
+ }
+ 
+@@ -966,10 +1378,10 @@
+ 	}
+ 	rs.closed = true
+ 	err := rs.rowsi.Close()
+-	rs.releaseConn(err)
+ 	if rs.closeStmt != nil {
+ 		rs.closeStmt.Close()
+ 	}
++	rs.releaseConn(err)
+ 	return err
+ }
+ 
+@@ -1026,6 +1438,31 @@
+ 	RowsAffected() (int64, error)
+ }
+ 
+-type result struct {
+-	driver.Result
++type driverResult struct {
++	sync.Locker // the *driverConn
++	resi        driver.Result
++}
++
++func (dr driverResult) LastInsertId() (int64, error) {
++	dr.Lock()
++	defer dr.Unlock()
++	return dr.resi.LastInsertId()
++}
++
++func (dr driverResult) RowsAffected() (int64, error) {
++	dr.Lock()
++	defer dr.Unlock()
++	return dr.resi.RowsAffected()
++}
++
++func stack() string {
++	var buf [2 << 10]byte
++	return string(buf[:runtime.Stack(buf[:], false)])
++}
++
++// withLock runs while holding lk.
++func withLock(lk sync.Locker, fn func()) {
++	lk.Lock()
++	fn()
++	lk.Unlock()
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/database/sql/sql_test.go gcc-4.8.1/libgo/go/database/sql/sql_test.go
+--- gcc-4.8.1.orig/libgo/go/database/sql/sql_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/database/sql/sql_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,11 +5,11 @@
+ package sql
+ 
+ import (
+-	"database/sql/driver"
+ 	"fmt"
+ 	"reflect"
+ 	"runtime"
+ 	"strings"
++	"sync"
+ 	"testing"
+ 	"time"
+ )
+@@ -17,10 +17,10 @@
+ func init() {
+ 	type dbConn struct {
+ 		db *DB
+-		c  driver.Conn
++		c  *driverConn
+ 	}
+ 	freedFrom := make(map[dbConn]string)
+-	putConnHook = func(db *DB, c driver.Conn) {
++	putConnHook = func(db *DB, c *driverConn) {
+ 		for _, oc := range db.freeConn {
+ 			if oc == c {
+ 				// print before panic, as panic may get lost due to conflicting panic
+@@ -38,7 +38,15 @@
+ 
+ var chrisBirthday = time.Unix(123456789, 0)
+ 
+-func newTestDB(t *testing.T, name string) *DB {
++type testOrBench interface {
++	Fatalf(string, ...interface{})
++	Errorf(string, ...interface{})
++	Fatal(...interface{})
++	Error(...interface{})
++	Logf(string, ...interface{})
++}
++
++func newTestDB(t testOrBench, name string) *DB {
+ 	db, err := Open("test", fakeDBName)
+ 	if err != nil {
+ 		t.Fatalf("Open: %v", err)
+@@ -52,17 +60,42 @@
+ 		exec(t, db, "INSERT|people|name=Bob,age=?,photo=BPHOTO", 2)
+ 		exec(t, db, "INSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?", 3, chrisBirthday)
+ 	}
++	if name == "magicquery" {
++		// Magic table name and column, known by fakedb_test.go.
++		exec(t, db, "CREATE|magicquery|op=string,millis=int32")
++		exec(t, db, "INSERT|magicquery|op=sleep,millis=10")
++	}
+ 	return db
+ }
+ 
+-func exec(t *testing.T, db *DB, query string, args ...interface{}) {
++func exec(t testOrBench, db *DB, query string, args ...interface{}) {
+ 	_, err := db.Exec(query, args...)
+ 	if err != nil {
+ 		t.Fatalf("Exec of %q: %v", query, err)
+ 	}
+ }
+ 
+-func closeDB(t *testing.T, db *DB) {
++func closeDB(t testOrBench, db *DB) {
++	if e := recover(); e != nil {
++		fmt.Printf("Panic: %v\n", e)
++		panic(e)
++	}
++	defer setHookpostCloseConn(nil)
++	setHookpostCloseConn(func(_ *fakeConn, err error) {
++		if err != nil {
++			t.Errorf("Error closing fakeConn: %v", err)
++		}
++	})
++	for i, dc := range db.freeConn {
++		if n := len(dc.openStmt); n > 0 {
++			// Just a sanity check. This is legal in
++			// general, but if we make the tests clean up
++			// their statements first, then we can safely
++			// verify this is always zero here, and any
++			// other value is a leak.
++			t.Errorf("while closing db, freeConn %d/%d had %d open stmts; want 0", i, len(db.freeConn), n)
++		}
++	}
+ 	err := db.Close()
+ 	if err != nil {
+ 		t.Fatalf("error closing DB: %v", err)
+@@ -75,7 +108,52 @@
+ 	if n := len(db.freeConn); n != 1 {
+ 		t.Fatalf("free conns = %d; want 1", n)
+ 	}
+-	return db.freeConn[0].(*fakeConn).numPrepare
++	return db.freeConn[0].ci.(*fakeConn).numPrepare
++}
++
++func (db *DB) numDeps() int {
++	db.mu.Lock()
++	defer db.mu.Unlock()
++	return len(db.dep)
++}
++
++// Dependencies are closed via a goroutine, so this polls waiting for
++// numDeps to fall to want, waiting up to d.
++func (db *DB) numDepsPollUntil(want int, d time.Duration) int {
++	deadline := time.Now().Add(d)
++	for {
++		n := db.numDeps()
++		if n <= want || time.Now().After(deadline) {
++			return n
++		}
++		time.Sleep(50 * time.Millisecond)
++	}
++}
++
++func (db *DB) numFreeConns() int {
++	db.mu.Lock()
++	defer db.mu.Unlock()
++	return len(db.freeConn)
++}
++
++func (db *DB) dumpDeps(t *testing.T) {
++	for fc := range db.dep {
++		db.dumpDep(t, 0, fc, map[finalCloser]bool{})
++	}
++}
++
++func (db *DB) dumpDep(t *testing.T, depth int, dep finalCloser, seen map[finalCloser]bool) {
++	seen[dep] = true
++	indent := strings.Repeat("  ", depth)
++	ds := db.dep[dep]
++	for k := range ds {
++		t.Logf("%s%T (%p) waiting for -> %T (%p)", indent, dep, dep, k, k)
++		if fc, ok := k.(finalCloser); ok {
++			if !seen[fc] {
++				db.dumpDep(t, depth+1, fc, seen)
++			}
++		}
++	}
+ }
+ 
+ func TestQuery(t *testing.T) {
+@@ -114,7 +192,7 @@
+ 
+ 	// And verify that the final rows.Next() call, which hit EOF,
+ 	// also closed the rows connection.
+-	if n := len(db.freeConn); n != 1 {
++	if n := db.numFreeConns(); n != 1 {
+ 		t.Fatalf("free conns after query hitting EOF = %d; want 1", n)
+ 	}
+ 	if prepares := numPrepares(t, db) - prepares0; prepares != 1 {
+@@ -270,6 +348,35 @@
+ 
+ }
+ 
++// golang.org/issue/3734
++func TestStatementQueryRowConcurrent(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++	stmt, err := db.Prepare("SELECT|people|age|name=?")
++	if err != nil {
++		t.Fatalf("Prepare: %v", err)
++	}
++	defer stmt.Close()
++
++	const n = 10
++	ch := make(chan error, n)
++	for i := 0; i < n; i++ {
++		go func() {
++			var age int
++			err := stmt.QueryRow("Alice").Scan(&age)
++			if err == nil && age != 1 {
++				err = fmt.Errorf("unexpected age %d", age)
++			}
++			ch <- err
++		}()
++	}
++	for i := 0; i < n; i++ {
++		if err := <-ch; err != nil {
++			t.Error(err)
++		}
++	}
++}
++
+ // just a test of fakedb itself
+ func TestBogusPreboundParameters(t *testing.T) {
+ 	db := newTestDB(t, "foo")
+@@ -448,6 +555,30 @@
+ 	}
+ }
+ 
++// From golang.org/issue/3865
++func TestCloseStmtBeforeRows(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	s, err := db.Prepare("SELECT|people|name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	r, err := s.Query()
++	if err != nil {
++		s.Close()
++		t.Fatal(err)
++	}
++
++	err = s.Close()
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	r.Close()
++}
++
+ // Tests fix for issue 2788, that we bind nil to a []byte if the
+ // value in the column is sql null
+ func TestNullByteSlice(t *testing.T) {
+@@ -520,7 +651,7 @@
+ 	if len(db.freeConn) != 1 {
+ 		t.Fatalf("expected 1 free conn")
+ 	}
+-	fakeConn := db.freeConn[0].(*fakeConn)
++	fakeConn := db.freeConn[0].ci.(*fakeConn)
+ 	if made, closed := fakeConn.stmtsMade, fakeConn.stmtsClosed; made != closed {
+ 		t.Errorf("statement close mismatch: made %d, closed %d", made, closed)
+ 	}
+@@ -641,7 +772,337 @@
+ 	}
+ }
+ 
+-func stack() string {
+-	buf := make([]byte, 1024)
+-	return string(buf[:runtime.Stack(buf, false)])
++// golang.org/issue/4859
++func TestQueryRowNilScanDest(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++	var name *string // nil pointer
++	err := db.QueryRow("SELECT|people|name|").Scan(name)
++	want := "sql: Scan error on column index 0: destination pointer is nil"
++	if err == nil || err.Error() != want {
++		t.Errorf("error = %q; want %q", err.Error(), want)
++	}
++}
++
++func TestIssue4902(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	driver := db.driver.(*fakeDriver)
++	opens0 := driver.openCount
++
++	var stmt *Stmt
++	var err error
++	for i := 0; i < 10; i++ {
++		stmt, err = db.Prepare("SELECT|people|name|")
++		if err != nil {
++			t.Fatal(err)
++		}
++		err = stmt.Close()
++		if err != nil {
++			t.Fatal(err)
++		}
++	}
++
++	opens := driver.openCount - opens0
++	if opens > 1 {
++		t.Errorf("opens = %d; want <= 1", opens)
++		t.Logf("db = %#v", db)
++		t.Logf("driver = %#v", driver)
++		t.Logf("stmt = %#v", stmt)
++	}
++}
++
++// Issue 3857
++// This used to deadlock.
++func TestSimultaneousQueries(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	tx, err := db.Begin()
++	if err != nil {
++		t.Fatal(err)
++	}
++	defer tx.Rollback()
++
++	r1, err := tx.Query("SELECT|people|name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++	defer r1.Close()
++
++	r2, err := tx.Query("SELECT|people|name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++	defer r2.Close()
++}
++
++func TestMaxIdleConns(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	tx, err := db.Begin()
++	if err != nil {
++		t.Fatal(err)
++	}
++	tx.Commit()
++	if got := len(db.freeConn); got != 1 {
++		t.Errorf("freeConns = %d; want 1", got)
++	}
++
++	db.SetMaxIdleConns(0)
++
++	if got := len(db.freeConn); got != 0 {
++		t.Errorf("freeConns after set to zero = %d; want 0", got)
++	}
++
++	tx, err = db.Begin()
++	if err != nil {
++		t.Fatal(err)
++	}
++	tx.Commit()
++	if got := len(db.freeConn); got != 0 {
++		t.Errorf("freeConns = %d; want 0", got)
++	}
++}
++
++// golang.org/issue/5323
++func TestStmtCloseDeps(t *testing.T) {
++	if testing.Short() {
++		t.Skip("skipping in short mode")
++	}
++	defer setHookpostCloseConn(nil)
++	setHookpostCloseConn(func(_ *fakeConn, err error) {
++		if err != nil {
++			t.Errorf("Error closing fakeConn: %v", err)
++		}
++	})
++
++	db := newTestDB(t, "magicquery")
++	defer closeDB(t, db)
++
++	driver := db.driver.(*fakeDriver)
++
++	driver.mu.Lock()
++	opens0 := driver.openCount
++	closes0 := driver.closeCount
++	driver.mu.Unlock()
++	openDelta0 := opens0 - closes0
++
++	stmt, err := db.Prepare("SELECT|magicquery|op|op=?,millis=?")
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	// Start 50 parallel slow queries.
++	const (
++		nquery      = 50
++		sleepMillis = 25
++		nbatch      = 2
++	)
++	var wg sync.WaitGroup
++	for batch := 0; batch < nbatch; batch++ {
++		for i := 0; i < nquery; i++ {
++			wg.Add(1)
++			go func() {
++				defer wg.Done()
++				var op string
++				if err := stmt.QueryRow("sleep", sleepMillis).Scan(&op); err != nil && err != ErrNoRows {
++					t.Error(err)
++				}
++			}()
++		}
++		// Sleep for twice the expected length of time for the
++		// batch of 50 queries above to finish before starting
++		// the next round.
++		time.Sleep(2 * sleepMillis * time.Millisecond)
++	}
++	wg.Wait()
++
++	if g, w := db.numFreeConns(), 2; g != w {
++		t.Errorf("free conns = %d; want %d", g, w)
++	}
++
++	if n := db.numDepsPollUntil(4, time.Second); n > 4 {
++		t.Errorf("number of dependencies = %d; expected <= 4", n)
++		db.dumpDeps(t)
++	}
++
++	driver.mu.Lock()
++	opens := driver.openCount - opens0
++	closes := driver.closeCount - closes0
++	driver.mu.Unlock()
++	openDelta := (driver.openCount - driver.closeCount) - openDelta0
++
++	if openDelta > 2 {
++		t.Logf("open calls = %d", opens)
++		t.Logf("close calls = %d", closes)
++		t.Logf("open delta = %d", openDelta)
++		t.Errorf("db connections opened = %d; want <= 2", openDelta)
++		db.dumpDeps(t)
++	}
++
++	if len(stmt.css) > nquery {
++		t.Errorf("len(stmt.css) = %d; want <= %d", len(stmt.css), nquery)
++	}
++
++	if err := stmt.Close(); err != nil {
++		t.Fatal(err)
++	}
++
++	if g, w := db.numFreeConns(), 2; g != w {
++		t.Errorf("free conns = %d; want %d", g, w)
++	}
++
++	if n := db.numDepsPollUntil(2, time.Second); n > 2 {
++		t.Errorf("number of dependencies = %d; expected <= 2", n)
++		db.dumpDeps(t)
++	}
++
++	db.SetMaxIdleConns(0)
++
++	if g, w := db.numFreeConns(), 0; g != w {
++		t.Errorf("free conns = %d; want %d", g, w)
++	}
++
++	if n := db.numDepsPollUntil(0, time.Second); n > 0 {
++		t.Errorf("number of dependencies = %d; expected 0", n)
++		db.dumpDeps(t)
++	}
++}
++
++// golang.org/issue/5046
++func TestCloseConnBeforeStmts(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	defer setHookpostCloseConn(nil)
++	setHookpostCloseConn(func(_ *fakeConn, err error) {
++		if err != nil {
++			t.Errorf("Error closing fakeConn: %v; from %s", err, stack())
++			db.dumpDeps(t)
++			t.Errorf("DB = %#v", db)
++		}
++	})
++
++	stmt, err := db.Prepare("SELECT|people|name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	if len(db.freeConn) != 1 {
++		t.Fatalf("expected 1 freeConn; got %d", len(db.freeConn))
++	}
++	dc := db.freeConn[0]
++	if dc.closed {
++		t.Errorf("conn shouldn't be closed")
++	}
++
++	if n := len(dc.openStmt); n != 1 {
++		t.Errorf("driverConn num openStmt = %d; want 1", n)
++	}
++	err = db.Close()
++	if err != nil {
++		t.Errorf("db Close = %v", err)
++	}
++	if !dc.closed {
++		t.Errorf("after db.Close, driverConn should be closed")
++	}
++	if n := len(dc.openStmt); n != 0 {
++		t.Errorf("driverConn num openStmt = %d; want 0", n)
++	}
++
++	err = stmt.Close()
++	if err != nil {
++		t.Errorf("Stmt close = %v", err)
++	}
++
++	if !dc.closed {
++		t.Errorf("conn should be closed")
++	}
++	if dc.ci != nil {
++		t.Errorf("after Stmt Close, driverConn's Conn interface should be nil")
++	}
++}
++
++// golang.org/issue/5283: don't release the Rows' connection in Close
++// before calling Stmt.Close.
++func TestRowsCloseOrder(t *testing.T) {
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	db.SetMaxIdleConns(0)
++	setStrictFakeConnClose(t)
++	defer setStrictFakeConnClose(nil)
++
++	rows, err := db.Query("SELECT|people|age,name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++	err = rows.Close()
++	if err != nil {
++		t.Fatal(err)
++	}
++}
++
++func manyConcurrentQueries(t testOrBench) {
++	maxProcs, numReqs := 16, 500
++	if testing.Short() {
++		maxProcs, numReqs = 4, 50
++	}
++	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(maxProcs))
++
++	db := newTestDB(t, "people")
++	defer closeDB(t, db)
++
++	stmt, err := db.Prepare("SELECT|people|name|")
++	if err != nil {
++		t.Fatal(err)
++	}
++	defer stmt.Close()
++
++	var wg sync.WaitGroup
++	wg.Add(numReqs)
++
++	reqs := make(chan bool)
++	defer close(reqs)
++
++	for i := 0; i < maxProcs*2; i++ {
++		go func() {
++			for _ = range reqs {
++				rows, err := stmt.Query()
++				if err != nil {
++					t.Errorf("error on query:  %v", err)
++					wg.Done()
++					continue
++				}
++
++				var name string
++				for rows.Next() {
++					rows.Scan(&name)
++				}
++				rows.Close()
++
++				wg.Done()
++			}
++		}()
++	}
++
++	for i := 0; i < numReqs; i++ {
++		reqs <- true
++	}
++
++	wg.Wait()
++}
++
++func TestConcurrency(t *testing.T) {
++	manyConcurrentQueries(t)
++}
++
++func BenchmarkConcurrency(b *testing.B) {
++	b.ReportAllocs()
++	for i := 0; i < b.N; i++ {
++		manyConcurrentQueries(b)
++	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/dwarf/buf.go gcc-4.8.1/libgo/go/debug/dwarf/buf.go
+--- gcc-4.8.1.orig/libgo/go/debug/dwarf/buf.go	2012-03-09 00:35:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/dwarf/buf.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,17 +13,45 @@
+ 
+ // Data buffer being decoded.
+ type buf struct {
+-	dwarf *Data
+-	u     *unit
+-	order binary.ByteOrder
+-	name  string
+-	off   Offset
+-	data  []byte
+-	err   error
++	dwarf  *Data
++	order  binary.ByteOrder
++	format dataFormat
++	name   string
++	off    Offset
++	data   []byte
++	err    error
+ }
+ 
+-func makeBuf(d *Data, u *unit, name string, off Offset, data []byte) buf {
+-	return buf{d, u, d.order, name, off, data, nil}
++// Data format, other than byte order.  This affects the handling of
++// certain field formats.
++type dataFormat interface {
++	// DWARF version number.  Zero means unknown.
++	version() int
++
++	// 64-bit DWARF format?
++	dwarf64() (dwarf64 bool, isKnown bool)
++
++	// Size of an address, in bytes.  Zero means unknown.
++	addrsize() int
++}
++
++// Some parts of DWARF have no data format, e.g., abbrevs.
++type unknownFormat struct{}
++
++func (u unknownFormat) version() int {
++	return 0
++}
++
++func (u unknownFormat) dwarf64() (bool, bool) {
++	return false, false
++}
++
++func (u unknownFormat) addrsize() int {
++	return 0
++}
++
++func makeBuf(d *Data, format dataFormat, name string, off Offset, data []byte) buf {
++	return buf{d, d.order, format, name, off, data, nil}
+ }
+ 
+ func (b *buf) uint8() uint8 {
+@@ -121,17 +149,15 @@
+ 
+ // Address-sized uint.
+ func (b *buf) addr() uint64 {
+-	if b.u != nil {
+-		switch b.u.addrsize {
+-		case 1:
+-			return uint64(b.uint8())
+-		case 2:
+-			return uint64(b.uint16())
+-		case 4:
+-			return uint64(b.uint32())
+-		case 8:
+-			return uint64(b.uint64())
+-		}
++	switch b.format.addrsize() {
++	case 1:
++		return uint64(b.uint8())
++	case 2:
++		return uint64(b.uint16())
++	case 4:
++		return uint64(b.uint32())
++	case 8:
++		return uint64(b.uint64())
+ 	}
+ 	b.error("unknown address size")
+ 	return 0
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/dwarf/entry.go gcc-4.8.1/libgo/go/debug/dwarf/entry.go
+--- gcc-4.8.1.orig/libgo/go/debug/dwarf/entry.go	2012-03-09 00:35:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/dwarf/entry.go	2013-07-16 01:55:04.520470000 -0500
+@@ -40,7 +40,7 @@
+ 	} else {
+ 		data = data[off:]
+ 	}
+-	b := makeBuf(d, nil, "abbrev", 0, data)
++	b := makeBuf(d, unknownFormat{}, "abbrev", 0, data)
+ 
+ 	// Error handling is simplified by the buf getters
+ 	// returning an endless stream of 0s after an error.
+@@ -190,13 +190,16 @@
+ 		case formFlag:
+ 			val = b.uint8() == 1
+ 		case formFlagPresent:
++			// The attribute is implicitly indicated as present, and no value is
++			// encoded in the debugging information entry itself.
+ 			val = true
+ 
+ 		// lineptr, loclistptr, macptr, rangelistptr
+ 		case formSecOffset:
+-			if b.u == nil {
++			is64, known := b.format.dwarf64()
++			if !known {
+ 				b.error("unknown size for DW_FORM_sec_offset")
+-			} else if b.u.dwarf64 {
++			} else if is64 {
+ 				val = Offset(b.uint64())
+ 			} else {
+ 				val = Offset(b.uint32())
+@@ -204,14 +207,20 @@
+ 
+ 		// reference to other entry
+ 		case formRefAddr:
+-			if b.u == nil {
++			vers := b.format.version()
++			if vers == 0 {
+ 				b.error("unknown version for DW_FORM_ref_addr")
+-			} else if b.u.version == 2 {
++			} else if vers == 2 {
+ 				val = Offset(b.addr())
+-			} else if b.u.dwarf64 {
+-				val = Offset(b.uint64())
+ 			} else {
+-				val = Offset(b.uint32())
++				is64, known := b.format.dwarf64()
++				if !known {
++					b.error("unknown size for DW_FORM_ref_addr")
++				} else if is64 {
++					val = Offset(b.uint64())
++				} else {
++					val = Offset(b.uint32())
++				}
+ 			}
+ 		case formRef1:
+ 			val = Offset(b.uint8()) + ubase
+@@ -234,7 +243,7 @@
+ 			if b.err != nil {
+ 				return nil
+ 			}
+-			b1 := makeBuf(b.dwarf, b.u, "str", 0, b.dwarf.str)
++			b1 := makeBuf(b.dwarf, unknownFormat{}, "str", 0, b.dwarf.str)
+ 			b1.skip(int(off))
+ 			val = b1.string()
+ 			if b1.err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/dwarf/line.go gcc-4.8.1/libgo/go/debug/dwarf/line.go
+--- gcc-4.8.1.orig/libgo/go/debug/dwarf/line.go	2012-09-06 00:28:02.000000000 -0500
++++ gcc-4.8.1/libgo/go/debug/dwarf/line.go	2013-07-16 01:55:04.520470000 -0500
+@@ -112,7 +112,7 @@
+ func (d *Data) readAddressRanges(off Offset, base uint64, u *unit) error {
+ 	b := makeBuf(d, u, "ranges", off, d.ranges[off:])
+ 	var highest uint64
+-	switch u.addrsize {
++	switch u.addrsize() {
+ 	case 1:
+ 		highest = 0xff
+ 	case 2:
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/dwarf/type.go gcc-4.8.1/libgo/go/debug/dwarf/type.go
+--- gcc-4.8.1.orig/libgo/go/debug/dwarf/type.go	2012-03-09 00:35:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/dwarf/type.go	2013-07-16 01:55:04.520470000 -0500
+@@ -435,7 +435,9 @@
+ 					goto Error
+ 				}
+ 				if loc, ok := kid.Val(AttrDataMemberLoc).([]byte); ok {
+-					b := makeBuf(d, nil, "location", 0, loc)
++					// TODO: Should have original compilation
++					// unit here, not unknownFormat.
++					b := makeBuf(d, unknownFormat{}, "location", 0, loc)
+ 					if b.uint8() != opPlusUconst {
+ 						err = DecodeError{"info", kid.Offset, "unexpected opcode"}
+ 						goto Error
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/dwarf/unit.go gcc-4.8.1/libgo/go/debug/dwarf/unit.go
+--- gcc-4.8.1.orig/libgo/go/debug/dwarf/unit.go	2012-03-09 00:35:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/dwarf/unit.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,17 +10,31 @@
+ // Each unit has its own abbreviation table and address size.
+ 
+ type unit struct {
+-	base     Offset // byte offset of header within the aggregate info
+-	off      Offset // byte offset of data within the aggregate info
+-	lineoff  Offset // byte offset of data within the line info
+-	data     []byte
+-	atable   abbrevTable
+-	addrsize int
+-	version  int
+-	dwarf64  bool // True for 64-bit DWARF format
+-	dir      string
+-	pc       []addrRange   // PC ranges in this compilation unit
+-	lines    []mapLineInfo // PC -> line mapping
++	base    Offset // byte offset of header within the aggregate info
++	off     Offset // byte offset of data within the aggregate info
++	lineoff Offset // byte offset of data within the line info
++	data    []byte
++	atable  abbrevTable
++	asize   int
++	vers    int
++	is64    bool // True for 64-bit DWARF format
++	dir     string
++	pc      []addrRange   // PC ranges in this compilation unit
++	lines   []mapLineInfo // PC -> line mapping
++}
++
++// Implement the dataFormat interface.
++
++func (u *unit) version() int {
++	return u.vers
++}
++
++func (u *unit) dwarf64() (bool, bool) {
++	return u.is64, true
++}
++
++func (u *unit) addrsize() int {
++	return u.asize
+ }
+ 
+ // A range is an address range.
+@@ -32,12 +46,12 @@
+ func (d *Data) parseUnits() ([]unit, error) {
+ 	// Count units.
+ 	nunit := 0
+-	b := makeBuf(d, nil, "info", 0, d.info)
++	b := makeBuf(d, unknownFormat{}, "info", 0, d.info)
+ 	for len(b.data) > 0 {
+ 		len := b.uint32()
+ 		if len == 0xffffffff {
+ 			len64 := b.uint64()
+-			if len64 != uint64(int(len64)) {
++			if len64 != uint64(uint32(len64)) {
+ 				b.error("unit length overflow")
+ 				break
+ 			}
+@@ -51,14 +65,14 @@
+ 	}
+ 
+ 	// Again, this time writing them down.
+-	b = makeBuf(d, nil, "info", 0, d.info)
++	b = makeBuf(d, unknownFormat{}, "info", 0, d.info)
+ 	units := make([]unit, nunit)
+ 	for i := range units {
+ 		u := &units[i]
+ 		u.base = b.off
+ 		n := b.uint32()
+ 		if n == 0xffffffff {
+-			u.dwarf64 = true
++			u.is64 = true
+ 			n = uint32(b.uint64())
+ 		}
+ 		vers := b.uint16()
+@@ -66,6 +80,7 @@
+ 			b.error("unsupported DWARF version " + strconv.Itoa(int(vers)))
+ 			break
+ 		}
++		u.vers = int(vers)
+ 		atable, err := d.parseAbbrev(b.uint32())
+ 		if err != nil {
+ 			if b.err == nil {
+@@ -73,9 +88,8 @@
+ 			}
+ 			break
+ 		}
+-		u.version = int(vers)
+ 		u.atable = atable
+-		u.addrsize = int(b.uint8())
++		u.asize = int(b.uint8())
+ 		u.off = b.off
+ 		u.data = b.bytes(int(n - (2 + 4 + 1)))
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/elf/file.go gcc-4.8.1/libgo/go/debug/elf/file.go
+--- gcc-4.8.1.orig/libgo/go/debug/elf/file.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/elf/file.go	2013-07-16 01:55:04.520470000 -0500
+@@ -422,6 +422,10 @@
+ 		return nil, nil, errors.New("cannot load string table section")
+ 	}
+ 
++	// The first entry is all zeros.
++	var skip [Sym32Size]byte
++	symtab.Read(skip[:])
++
+ 	symbols := make([]Symbol, symtab.Len()/Sym32Size)
+ 
+ 	i := 0
+@@ -461,6 +465,10 @@
+ 		return nil, nil, errors.New("cannot load string table section")
+ 	}
+ 
++	// The first entry is all zeros.
++	var skip [Sym64Size]byte
++	symtab.Read(skip[:])
++
+ 	symbols := make([]Symbol, symtab.Len()/Sym64Size)
+ 
+ 	i := 0
+@@ -533,10 +541,10 @@
+ 		symNo := rela.Info >> 32
+ 		t := R_X86_64(rela.Info & 0xffff)
+ 
+-		if symNo >= uint64(len(symbols)) {
++		if symNo == 0 || symNo > uint64(len(symbols)) {
+ 			continue
+ 		}
+-		sym := &symbols[symNo]
++		sym := &symbols[symNo-1]
+ 		if SymType(sym.Info&0xf) != STT_SECTION {
+ 			// We don't handle non-section relocations for now.
+ 			continue
+@@ -597,6 +605,10 @@
+ }
+ 
+ // Symbols returns the symbol table for f.
++//
++// For compatibility with Go 1.0, Symbols omits the null symbol at index 0.
++// After retrieving the symbols as symtab, an externally supplied index x
++// corresponds to symtab[x-1], not symtab[x].
+ func (f *File) Symbols() ([]Symbol, error) {
+ 	sym, _, err := f.getSymbols(SHT_SYMTAB)
+ 	return sym, err
+@@ -706,7 +718,7 @@
+ // which came from offset i of the symbol table.
+ func (f *File) gnuVersion(i int, sym *ImportedSymbol) {
+ 	// Each entry is two bytes.
+-	i = i * 2
++	i = (i + 1) * 2
+ 	if i >= len(f.gnuVersym) {
+ 		return
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/gosym/symtab.go gcc-4.8.1/libgo/go/debug/gosym/symtab.go
+--- gcc-4.8.1.orig/libgo/go/debug/gosym/symtab.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/gosym/symtab.go	2013-07-16 01:55:04.520470000 -0500
+@@ -99,31 +99,116 @@
+ }
+ 
+ type sym struct {
+-	value  uint32
+-	gotype uint32
++	value  uint64
++	gotype uint64
+ 	typ    byte
+ 	name   []byte
+ }
+ 
+-var littleEndianSymtab = []byte{0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00}
++var littleEndianSymtab = []byte{0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00}
++var bigEndianSymtab = []byte{0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x00, 0x00}
++
++var oldLittleEndianSymtab = []byte{0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00}
+ 
+ func walksymtab(data []byte, fn func(sym) error) error {
+ 	var order binary.ByteOrder = binary.BigEndian
+-	if bytes.HasPrefix(data, littleEndianSymtab) {
++	newTable := false
++	switch {
++	case bytes.HasPrefix(data, oldLittleEndianSymtab):
++		// Same as Go 1.0, but little endian.
++		// Format was used during interim development between Go 1.0 and Go 1.1.
++		// Should not be widespread, but easy to support.
+ 		data = data[6:]
+ 		order = binary.LittleEndian
++	case bytes.HasPrefix(data, bigEndianSymtab):
++		newTable = true
++	case bytes.HasPrefix(data, littleEndianSymtab):
++		newTable = true
++		order = binary.LittleEndian
++	}
++	var ptrsz int
++	if newTable {
++		if len(data) < 8 {
++			return &DecodingError{len(data), "unexpected EOF", nil}
++		}
++		ptrsz = int(data[7])
++		if ptrsz != 4 && ptrsz != 8 {
++			return &DecodingError{7, "invalid pointer size", ptrsz}
++		}
++		data = data[8:]
+ 	}
+ 	var s sym
+ 	p := data
+-	for len(p) >= 6 {
+-		s.value = order.Uint32(p[0:4])
+-		typ := p[4]
+-		if typ&0x80 == 0 {
+-			return &DecodingError{len(data) - len(p) + 4, "bad symbol type", typ}
+-		}
+-		typ &^= 0x80
+-		s.typ = typ
+-		p = p[5:]
++	for len(p) >= 4 {
++		var typ byte
++		if newTable {
++			// Symbol type, value, Go type.
++			typ = p[0] & 0x3F
++			wideValue := p[0]&0x40 != 0
++			goType := p[0]&0x80 != 0
++			if typ < 26 {
++				typ += 'A'
++			} else {
++				typ += 'a' - 26
++			}
++			s.typ = typ
++			p = p[1:]
++			if wideValue {
++				if len(p) < ptrsz {
++					return &DecodingError{len(data), "unexpected EOF", nil}
++				}
++				// fixed-width value
++				if ptrsz == 8 {
++					s.value = order.Uint64(p[0:8])
++					p = p[8:]
++				} else {
++					s.value = uint64(order.Uint32(p[0:4]))
++					p = p[4:]
++				}
++			} else {
++				// varint value
++				s.value = 0
++				shift := uint(0)
++				for len(p) > 0 && p[0]&0x80 != 0 {
++					s.value |= uint64(p[0]&0x7F) << shift
++					shift += 7
++					p = p[1:]
++				}
++				if len(p) == 0 {
++					return &DecodingError{len(data), "unexpected EOF", nil}
++				}
++				s.value |= uint64(p[0]) << shift
++				p = p[1:]
++			}
++			if goType {
++				if len(p) < ptrsz {
++					return &DecodingError{len(data), "unexpected EOF", nil}
++				}
++				// fixed-width go type
++				if ptrsz == 8 {
++					s.gotype = order.Uint64(p[0:8])
++					p = p[8:]
++				} else {
++					s.gotype = uint64(order.Uint32(p[0:4]))
++					p = p[4:]
++				}
++			}
++		} else {
++			// Value, symbol type.
++			s.value = uint64(order.Uint32(p[0:4]))
++			if len(p) < 5 {
++				return &DecodingError{len(data), "unexpected EOF", nil}
++			}
++			typ = p[4]
++			if typ&0x80 == 0 {
++				return &DecodingError{len(data) - len(p) + 4, "bad symbol type", typ}
++			}
++			typ &^= 0x80
++			s.typ = typ
++			p = p[5:]
++		}
++
++		// Name.
+ 		var i int
+ 		var nnul int
+ 		for i = 0; i < len(p); i++ {
+@@ -142,13 +227,21 @@
+ 				}
+ 			}
+ 		}
+-		if i+nnul+4 > len(p) {
++		if len(p) < i+nnul {
+ 			return &DecodingError{len(data), "unexpected EOF", nil}
+ 		}
+ 		s.name = p[0:i]
+ 		i += nnul
+-		s.gotype = order.Uint32(p[i : i+4])
+-		p = p[i+4:]
++		p = p[i:]
++
++		if !newTable {
++			if len(p) < 4 {
++				return &DecodingError{len(data), "unexpected EOF", nil}
++			}
++			// Go type.
++			s.gotype = uint64(order.Uint32(p[:4]))
++			p = p[4:]
++		}
+ 		fn(s)
+ 	}
+ 	return nil
+diff -Naur gcc-4.8.1.orig/libgo/go/debug/macho/file.go gcc-4.8.1/libgo/go/debug/macho/file.go
+--- gcc-4.8.1.orig/libgo/go/debug/macho/file.go	2012-03-06 19:16:20.000000000 -0600
++++ gcc-4.8.1/libgo/go/debug/macho/file.go	2013-07-16 01:55:04.520470000 -0500
+@@ -142,6 +142,8 @@
+  * Mach-O reader
+  */
+ 
++// FormatError is returned by some operations if the data does
++// not have the correct format for an object file.
+ type FormatError struct {
+ 	off int64
+ 	msg string
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/ascii85/ascii85.go gcc-4.8.1/libgo/go/encoding/ascii85/ascii85.go
+--- gcc-4.8.1.orig/libgo/go/encoding/ascii85/ascii85.go	2012-05-04 10:01:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/ascii85/ascii85.go	2013-07-16 01:55:04.520470000 -0500
+@@ -296,5 +296,4 @@
+ 		nn, d.readErr = d.r.Read(d.buf[d.nbuf:])
+ 		d.nbuf += nn
+ 	}
+-	panic("unreachable")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/asn1/marshal.go gcc-4.8.1/libgo/go/encoding/asn1/marshal.go
+--- gcc-4.8.1.orig/libgo/go/encoding/asn1/marshal.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/asn1/marshal.go	2013-07-16 01:55:04.520470000 -0500
+@@ -460,7 +460,6 @@
+ 		default:
+ 			return marshalUTF8String(out, v.String())
+ 		}
+-		return
+ 	}
+ 
+ 	return StructuralError{"unknown Go type"}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/base32/base32.go gcc-4.8.1/libgo/go/encoding/base32/base32.go
+--- gcc-4.8.1.orig/libgo/go/encoding/base32/base32.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/base32/base32.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,8 +6,10 @@
+ package base32
+ 
+ import (
++	"bytes"
+ 	"io"
+ 	"strconv"
++	"strings"
+ )
+ 
+ /*
+@@ -48,6 +50,13 @@
+ // It is typically used in DNS.
+ var HexEncoding = NewEncoding(encodeHex)
+ 
++var removeNewlinesMapper = func(r rune) rune {
++	if r == '\r' || r == '\n' {
++		return -1
++	}
++	return r
++}
++
+ /*
+  * Encoder
+  */
+@@ -228,40 +237,47 @@
+ 
+ // decode is like Decode but returns an additional 'end' value, which
+ // indicates if end-of-message padding was encountered and thus any
+-// additional data is an error.
++// additional data is an error. This method assumes that src has been
++// stripped of all supported whitespace ('\r' and '\n').
+ func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) {
+-	osrc := src
++	olen := len(src)
+ 	for len(src) > 0 && !end {
+ 		// Decode quantum using the base32 alphabet
+ 		var dbuf [8]byte
+ 		dlen := 8
+ 
+-		// do the top bytes contain any data?
+ 		for j := 0; j < 8; {
+ 			if len(src) == 0 {
+-				return n, false, CorruptInputError(len(osrc) - len(src) - j)
++				return n, false, CorruptInputError(olen - len(src) - j)
+ 			}
+ 			in := src[0]
+ 			src = src[1:]
+-			if in == '\r' || in == '\n' {
+-				// Ignore this character.
+-				continue
+-			}
+ 			if in == '=' && j >= 2 && len(src) < 8 {
+-				// We've reached the end and there's
+-				// padding, the rest should be padded
+-				for k := 0; k < 8-j-1; k++ {
++				// We've reached the end and there's padding
++				if len(src)+j < 8-1 {
++					// not enough padding
++					return n, false, CorruptInputError(olen)
++				}
++				for k := 0; k < 8-1-j; k++ {
+ 					if len(src) > k && src[k] != '=' {
+-						return n, false, CorruptInputError(len(osrc) - len(src) + k - 1)
++						// incorrect padding
++						return n, false, CorruptInputError(olen - len(src) + k - 1)
+ 					}
+ 				}
+-				dlen = j
+-				end = true
++				dlen, end = j, true
++				// 7, 5 and 2 are not valid padding lengths, and so 1, 3 and 6 are not
++				// valid dlen values. See RFC 4648 Section 6 "Base 32 Encoding" listing
++				// the five valid padding lengths, and Section 9 "Illustrations and
++				// Examples" for an illustration for how the the 1st, 3rd and 6th base32
++				// src bytes do not yield enough information to decode a dst byte.
++				if dlen == 1 || dlen == 3 || dlen == 6 {
++					return n, false, CorruptInputError(olen - len(src) - 1)
++				}
+ 				break
+ 			}
+ 			dbuf[j] = enc.decodeMap[in]
+ 			if dbuf[j] == 0xFF {
+-				return n, false, CorruptInputError(len(osrc) - len(src) - 1)
++				return n, false, CorruptInputError(olen - len(src) - 1)
+ 			}
+ 			j++
+ 		}
+@@ -269,16 +285,16 @@
+ 		// Pack 8x 5-bit source blocks into 5 byte destination
+ 		// quantum
+ 		switch dlen {
+-		case 7, 8:
++		case 8:
+ 			dst[4] = dbuf[6]<<5 | dbuf[7]
+ 			fallthrough
+-		case 6, 5:
++		case 7:
+ 			dst[3] = dbuf[4]<<7 | dbuf[5]<<2 | dbuf[6]>>3
+ 			fallthrough
+-		case 4:
++		case 5:
+ 			dst[2] = dbuf[3]<<4 | dbuf[4]>>1
+ 			fallthrough
+-		case 3:
++		case 4:
+ 			dst[1] = dbuf[1]<<6 | dbuf[2]<<1 | dbuf[3]>>4
+ 			fallthrough
+ 		case 2:
+@@ -288,11 +304,11 @@
+ 		switch dlen {
+ 		case 2:
+ 			n += 1
+-		case 3, 4:
++		case 4:
+ 			n += 2
+ 		case 5:
+ 			n += 3
+-		case 6, 7:
++		case 7:
+ 			n += 4
+ 		case 8:
+ 			n += 5
+@@ -307,12 +323,14 @@
+ // number of bytes successfully written and CorruptInputError.
+ // New line characters (\r and \n) are ignored.
+ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
++	src = bytes.Map(removeNewlinesMapper, src)
+ 	n, _, err = enc.decode(dst, src)
+ 	return
+ }
+ 
+ // DecodeString returns the bytes represented by the base32 string s.
+ func (enc *Encoding) DecodeString(s string) ([]byte, error) {
++	s = strings.Map(removeNewlinesMapper, s)
+ 	dbuf := make([]byte, enc.DecodedLen(len(s)))
+ 	n, err := enc.Decode(dbuf, []byte(s))
+ 	return dbuf[:n], err
+@@ -377,9 +395,34 @@
+ 	return n, d.err
+ }
+ 
++type newlineFilteringReader struct {
++	wrapped io.Reader
++}
++
++func (r *newlineFilteringReader) Read(p []byte) (int, error) {
++	n, err := r.wrapped.Read(p)
++	for n > 0 {
++		offset := 0
++		for i, b := range p[0:n] {
++			if b != '\r' && b != '\n' {
++				if i != offset {
++					p[offset] = b
++				}
++				offset++
++			}
++		}
++		if offset > 0 {
++			return offset, err
++		}
++		// Previous buffer entirely whitespace, read again
++		n, err = r.wrapped.Read(p)
++	}
++	return n, err
++}
++
+ // NewDecoder constructs a new base32 stream decoder.
+ func NewDecoder(enc *Encoding, r io.Reader) io.Reader {
+-	return &decoder{enc: enc, r: r}
++	return &decoder{enc: enc, r: &newlineFilteringReader{r}}
+ }
+ 
+ // DecodedLen returns the maximum length in bytes of the decoded data
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/base32/base32_test.go gcc-4.8.1/libgo/go/encoding/base32/base32_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/base32/base32_test.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/base32/base32_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,7 @@
+ 	"bytes"
+ 	"io"
+ 	"io/ioutil"
++	"strings"
+ 	"testing"
+ )
+ 
+@@ -137,27 +138,48 @@
+ }
+ 
+ func TestDecodeCorrupt(t *testing.T) {
+-	type corrupt struct {
+-		e string
+-		p int
+-	}
+-	examples := []corrupt{
++	testCases := []struct {
++		input  string
++		offset int // -1 means no corruption.
++	}{
++		{"", -1},
+ 		{"!!!!", 0},
+ 		{"x===", 0},
+ 		{"AA=A====", 2},
+ 		{"AAA=AAAA", 3},
+ 		{"MMMMMMMMM", 8},
+ 		{"MMMMMM", 0},
+-	}
+-
+-	for _, e := range examples {
+-		dbuf := make([]byte, StdEncoding.DecodedLen(len(e.e)))
+-		_, err := StdEncoding.Decode(dbuf, []byte(e.e))
++		{"A=", 1},
++		{"AA=", 3},
++		{"AA==", 4},
++		{"AA===", 5},
++		{"AAAA=", 5},
++		{"AAAA==", 6},
++		{"AAAAA=", 6},
++		{"AAAAA==", 7},
++		{"A=======", 1},
++		{"AA======", -1},
++		{"AAA=====", 3},
++		{"AAAA====", -1},
++		{"AAAAA===", -1},
++		{"AAAAAA==", 6},
++		{"AAAAAAA=", -1},
++		{"AAAAAAAA", -1},
++	}
++	for _, tc := range testCases {
++		dbuf := make([]byte, StdEncoding.DecodedLen(len(tc.input)))
++		_, err := StdEncoding.Decode(dbuf, []byte(tc.input))
++		if tc.offset == -1 {
++			if err != nil {
++				t.Error("Decoder wrongly detected coruption in", tc.input)
++			}
++			continue
++		}
+ 		switch err := err.(type) {
+ 		case CorruptInputError:
+-			testEqual(t, "Corruption in %q at offset %v, want %v", e.e, int(err), e.p)
++			testEqual(t, "Corruption in %q at offset %v, want %v", tc.input, int(err), tc.offset)
+ 		default:
+-			t.Error("Decoder failed to detect corruption in", e)
++			t.Error("Decoder failed to detect corruption in", tc)
+ 		}
+ 	}
+ }
+@@ -195,9 +217,21 @@
+ 	}
+ }
+ 
++func testStringEncoding(t *testing.T, expected string, examples []string) {
++	for _, e := range examples {
++		buf, err := StdEncoding.DecodeString(e)
++		if err != nil {
++			t.Errorf("Decode(%q) failed: %v", e, err)
++			continue
++		}
++		if s := string(buf); s != expected {
++			t.Errorf("Decode(%q) = %q, want %q", e, s, expected)
++		}
++	}
++}
++
+ func TestNewLineCharacters(t *testing.T) {
+ 	// Each of these should decode to the string "sure", without errors.
+-	const expected = "sure"
+ 	examples := []string{
+ 		"ON2XEZI=",
+ 		"ON2XEZI=\r",
+@@ -209,14 +243,44 @@
+ 		"ON2XEZ\nI=",
+ 		"ON2XEZI\n=",
+ 	}
+-	for _, e := range examples {
+-		buf, err := StdEncoding.DecodeString(e)
+-		if err != nil {
+-			t.Errorf("Decode(%q) failed: %v", e, err)
+-			continue
+-		}
+-		if s := string(buf); s != expected {
+-			t.Errorf("Decode(%q) = %q, want %q", e, s, expected)
+-		}
++	testStringEncoding(t, "sure", examples)
++
++	// Each of these should decode to the string "foobar", without errors.
++	examples = []string{
++		"MZXW6YTBOI======",
++		"MZXW6YTBOI=\r\n=====",
++	}
++	testStringEncoding(t, "foobar", examples)
++}
++
++func TestDecoderIssue4779(t *testing.T) {
++	encoded := `JRXXEZLNEBUXA43VNUQGI33MN5ZCA43JOQQGC3LFOQWCAY3PNZZWKY3UMV2HK4
++RAMFSGS4DJONUWG2LOM4QGK3DJOQWCA43FMQQGI3YKMVUXK43NN5SCA5DFNVYG64RANFXGG2LENFSH
++K3TUEB2XIIDMMFRG64TFEBSXIIDEN5WG64TFEBWWCZ3OMEQGC3DJOF2WCLRAKV2CAZLONFWQUYLEEB
++WWS3TJNUQHMZLONFQW2LBAOF2WS4ZANZXXG5DSOVSCAZLYMVZGG2LUMF2GS33OEB2WY3DBNVRW6IDM
++MFRG64TJOMQG42LTNEQHK5AKMFWGS4LVNFYCAZLYEBSWCIDDN5WW233EN4QGG33OONSXC5LBOQXCAR
++DVNFZSAYLVORSSA2LSOVZGKIDEN5WG64RANFXAU4TFOBZGK2DFNZSGK4TJOQQGS3RAOZXWY5LQORQX
++IZJAOZSWY2LUEBSXG43FEBRWS3DMOVWSAZDPNRXXEZJAMV2SAZTVM5UWC5BANZ2WY3DBBJYGC4TJMF
++2HK4ROEBCXQY3FOB2GK5LSEBZWS3TUEBXWGY3BMVRWC5BAMN2XA2LEMF2GC5BANZXW4IDQOJXWSZDF
++NZ2CYIDTOVXHIIDJNYFGG5LMOBQSA4LVNEQG6ZTGNFRWSYJAMRSXGZLSOVXHIIDNN5WGY2LUEBQW42
++LNEBUWIIDFON2CA3DBMJXXE5LNFY==
++====`
++	encodedShort := strings.Replace(encoded, "\n", "", -1)
++
++	dec := NewDecoder(StdEncoding, bytes.NewBufferString(encoded))
++	res1, err := ioutil.ReadAll(dec)
++	if err != nil {
++		t.Errorf("ReadAll failed: %v", err)
++	}
++
++	dec = NewDecoder(StdEncoding, bytes.NewBufferString(encodedShort))
++	var res2 []byte
++	res2, err = ioutil.ReadAll(dec)
++	if err != nil {
++		t.Errorf("ReadAll failed: %v", err)
++	}
++
++	if !bytes.Equal(res1, res2) {
++		t.Error("Decoded results not equal")
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/base64/base64.go gcc-4.8.1/libgo/go/encoding/base64/base64.go
+--- gcc-4.8.1.orig/libgo/go/encoding/base64/base64.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/base64/base64.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,8 +6,10 @@
+ package base64
+ 
+ import (
++	"bytes"
+ 	"io"
+ 	"strconv"
++	"strings"
+ )
+ 
+ /*
+@@ -49,6 +51,13 @@
+ // It is typically used in URLs and file names.
+ var URLEncoding = NewEncoding(encodeURL)
+ 
++var removeNewlinesMapper = func(r rune) rune {
++	if r == '\r' || r == '\n' {
++		return -1
++	}
++	return r
++}
++
+ /*
+  * Encoder
+  */
+@@ -208,9 +217,10 @@
+ 
+ // decode is like Decode but returns an additional 'end' value, which
+ // indicates if end-of-message padding was encountered and thus any
+-// additional data is an error.
++// additional data is an error. This method assumes that src has been
++// stripped of all supported whitespace ('\r' and '\n').
+ func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) {
+-	osrc := src
++	olen := len(src)
+ 	for len(src) > 0 && !end {
+ 		// Decode quantum using the base64 alphabet
+ 		var dbuf [4]byte
+@@ -218,32 +228,26 @@
+ 
+ 		for j := 0; j < 4; {
+ 			if len(src) == 0 {
+-				return n, false, CorruptInputError(len(osrc) - len(src) - j)
++				return n, false, CorruptInputError(olen - len(src) - j)
+ 			}
+ 			in := src[0]
+ 			src = src[1:]
+-			if in == '\r' || in == '\n' {
+-				// Ignore this character.
+-				continue
+-			}
+ 			if in == '=' && j >= 2 && len(src) < 4 {
+-				// We've reached the end and there's
+-				// padding
+-				if len(src) == 0 && j == 2 {
++				// We've reached the end and there's padding
++				if len(src)+j < 4-1 {
+ 					// not enough padding
+-					return n, false, CorruptInputError(len(osrc))
++					return n, false, CorruptInputError(olen)
+ 				}
+ 				if len(src) > 0 && src[0] != '=' {
+ 					// incorrect padding
+-					return n, false, CorruptInputError(len(osrc) - len(src) - 1)
++					return n, false, CorruptInputError(olen - len(src) - 1)
+ 				}
+-				dlen = j
+-				end = true
++				dlen, end = j, true
+ 				break
+ 			}
+ 			dbuf[j] = enc.decodeMap[in]
+ 			if dbuf[j] == 0xFF {
+-				return n, false, CorruptInputError(len(osrc) - len(src) - 1)
++				return n, false, CorruptInputError(olen - len(src) - 1)
+ 			}
+ 			j++
+ 		}
+@@ -273,12 +277,14 @@
+ // number of bytes successfully written and CorruptInputError.
+ // New line characters (\r and \n) are ignored.
+ func (enc *Encoding) Decode(dst, src []byte) (n int, err error) {
++	src = bytes.Map(removeNewlinesMapper, src)
+ 	n, _, err = enc.decode(dst, src)
+ 	return
+ }
+ 
+ // DecodeString returns the bytes represented by the base64 string s.
+ func (enc *Encoding) DecodeString(s string) ([]byte, error) {
++	s = strings.Map(removeNewlinesMapper, s)
+ 	dbuf := make([]byte, enc.DecodedLen(len(s)))
+ 	n, err := enc.Decode(dbuf, []byte(s))
+ 	return dbuf[:n], err
+@@ -343,9 +349,34 @@
+ 	return n, d.err
+ }
+ 
++type newlineFilteringReader struct {
++	wrapped io.Reader
++}
++
++func (r *newlineFilteringReader) Read(p []byte) (int, error) {
++	n, err := r.wrapped.Read(p)
++	for n > 0 {
++		offset := 0
++		for i, b := range p[0:n] {
++			if b != '\r' && b != '\n' {
++				if i != offset {
++					p[offset] = b
++				}
++				offset++
++			}
++		}
++		if offset > 0 {
++			return offset, err
++		}
++		// Previous buffer entirely whitespace, read again
++		n, err = r.wrapped.Read(p)
++	}
++	return n, err
++}
++
+ // NewDecoder constructs a new base64 stream decoder.
+ func NewDecoder(enc *Encoding, r io.Reader) io.Reader {
+-	return &decoder{enc: enc, r: r}
++	return &decoder{enc: enc, r: &newlineFilteringReader{r}}
+ }
+ 
+ // DecodedLen returns the maximum length in bytes of the decoded data
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/base64/base64_test.go gcc-4.8.1/libgo/go/encoding/base64/base64_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/base64/base64_test.go	2012-06-25 11:20:03.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/base64/base64_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"errors"
+ 	"io"
+ 	"io/ioutil"
++	"strings"
+ 	"testing"
+ 	"time"
+ )
+@@ -142,11 +143,11 @@
+ }
+ 
+ func TestDecodeCorrupt(t *testing.T) {
+-	type corrupt struct {
+-		e string
+-		p int
+-	}
+-	examples := []corrupt{
++	testCases := []struct {
++		input  string
++		offset int // -1 means no corruption.
++	}{
++		{"", -1},
+ 		{"!!!!", 0},
+ 		{"x===", 1},
+ 		{"AA=A", 2},
+@@ -154,18 +155,27 @@
+ 		{"AAAAA", 4},
+ 		{"AAAAAA", 4},
+ 		{"A=", 1},
++		{"A==", 1},
+ 		{"AA=", 3},
++		{"AA==", -1},
++		{"AAA=", -1},
++		{"AAAA", -1},
+ 		{"AAAAAA=", 7},
+ 	}
+-
+-	for _, e := range examples {
+-		dbuf := make([]byte, StdEncoding.DecodedLen(len(e.e)))
+-		_, err := StdEncoding.Decode(dbuf, []byte(e.e))
++	for _, tc := range testCases {
++		dbuf := make([]byte, StdEncoding.DecodedLen(len(tc.input)))
++		_, err := StdEncoding.Decode(dbuf, []byte(tc.input))
++		if tc.offset == -1 {
++			if err != nil {
++				t.Error("Decoder wrongly detected coruption in", tc.input)
++			}
++			continue
++		}
+ 		switch err := err.(type) {
+ 		case CorruptInputError:
+-			testEqual(t, "Corruption in %q at offset %v, want %v", e.e, int(err), e.p)
++			testEqual(t, "Corruption in %q at offset %v, want %v", tc.input, int(err), tc.offset)
+ 		default:
+-			t.Error("Decoder failed to detect corruption in", e)
++			t.Error("Decoder failed to detect corruption in", tc)
+ 		}
+ 	}
+ }
+@@ -216,6 +226,8 @@
+ 		"c3V\nyZ\rQ==",
+ 		"c3VyZ\nQ==",
+ 		"c3VyZQ\n==",
++		"c3VyZQ=\n=",
++		"c3VyZQ=\r\n\r\n=",
+ 	}
+ 	for _, e := range examples {
+ 		buf, err := StdEncoding.DecodeString(e)
+@@ -257,6 +269,7 @@
+ 	wantErr := errors.New("my error")
+ 	next <- nextRead{5, nil}
+ 	next <- nextRead{10, wantErr}
++	next <- nextRead{0, wantErr}
+ 	d := NewDecoder(StdEncoding, &faultInjectReader{
+ 		source: "VHdhcyBicmlsbGlnLCBhbmQgdGhlIHNsaXRoeSB0b3Zlcw==", // twas brillig...
+ 		nextc:  next,
+@@ -275,3 +288,40 @@
+ 		t.Errorf("timeout; Decoder blocked without returning an error")
+ 	}
+ }
++
++func TestDecoderIssue4779(t *testing.T) {
++	encoded := `CP/EAT8AAAEF
++AQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAAB
++BAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHx
++Y3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm
++9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS
++0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0
++pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkJ+Tj
++1kiy1jCJJDnAcCTykpKkuQ6p/jN6FgmxlNduXawwAzaGH+V6jn/R/wCt71zdn+N/qL3kVYFNYB4N
++ji6PDVjWpKp9TSXnvTf8bFNjg3qOEa2n6VlLpj/rT/pf567DpX1i6L1hs9Py67X8mqdtg/rUWbbf
+++gkp0kkkklKSSSSUpJJJJT//0PVUkkklKVLq3WMDpGI7KzrNjADtYNXvI/Mqr/Pd/q9W3vaxjnvM
++NaCXE9gNSvGPrf8AWS3qmba5jjsJhoB0DAf0NDf6sevf+/lf8Hj0JJATfWT6/dV6oXU1uOLQeKKn
++EQP+Hubtfe/+R7Mf/g7f5xcocp++Z11JMCJPgFBxOg7/AOuqDx8I/ikpkXkmSdU8mJIJA/O8EMAy
++j+mSARB/17pKVXYWHXjsj7yIex0PadzXMO1zT5KHoNA3HT8ietoGhgjsfA+CSnvvqh/jJtqsrwOv
++2b6NGNzXfTYexzJ+nU7/ALkf4P8Awv6P9KvTQQ4AgyDqCF85Pho3CTB7eHwXoH+LT65uZbX9X+o2
++bqbPb06551Y4
++`
++	encodedShort := strings.Replace(encoded, "\n", "", -1)
++
++	dec := NewDecoder(StdEncoding, bytes.NewBufferString(encoded))
++	res1, err := ioutil.ReadAll(dec)
++	if err != nil {
++		t.Errorf("ReadAll failed: %v", err)
++	}
++
++	dec = NewDecoder(StdEncoding, bytes.NewBufferString(encodedShort))
++	var res2 []byte
++	res2, err = ioutil.ReadAll(dec)
++	if err != nil {
++		t.Errorf("ReadAll failed: %v", err)
++	}
++
++	if !bytes.Equal(res1, res2) {
++		t.Error("Decoded results not equal")
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/binary/binary.go gcc-4.8.1/libgo/go/encoding/binary/binary.go
+--- gcc-4.8.1.orig/libgo/go/encoding/binary/binary.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/binary/binary.go	2013-07-16 01:55:04.520470000 -0500
+@@ -167,9 +167,9 @@
+ 	default:
+ 		return errors.New("binary.Read: invalid type " + d.Type().String())
+ 	}
+-	size := dataSize(v)
+-	if size < 0 {
+-		return errors.New("binary.Read: invalid type " + v.Type().String())
++	size, err := dataSize(v)
++	if err != nil {
++		return errors.New("binary.Read: " + err.Error())
+ 	}
+ 	d := &decoder{order: order, buf: make([]byte, size)}
+ 	if _, err := io.ReadFull(r, d.buf); err != nil {
+@@ -247,64 +247,68 @@
+ 
+ 	// Fallback to reflect-based encoding.
+ 	v := reflect.Indirect(reflect.ValueOf(data))
+-	size := dataSize(v)
+-	if size < 0 {
+-		return errors.New("binary.Write: invalid type " + v.Type().String())
++	size, err := dataSize(v)
++	if err != nil {
++		return errors.New("binary.Write: " + err.Error())
+ 	}
+ 	buf := make([]byte, size)
+ 	e := &encoder{order: order, buf: buf}
+ 	e.value(v)
+-	_, err := w.Write(buf)
++	_, err = w.Write(buf)
+ 	return err
+ }
+ 
+ // Size returns how many bytes Write would generate to encode the value v, which
+ // must be a fixed-size value or a slice of fixed-size values, or a pointer to such data.
+ func Size(v interface{}) int {
+-	return dataSize(reflect.Indirect(reflect.ValueOf(v)))
++	n, err := dataSize(reflect.Indirect(reflect.ValueOf(v)))
++	if err != nil {
++		return -1
++	}
++	return n
+ }
+ 
+ // dataSize returns the number of bytes the actual data represented by v occupies in memory.
+ // For compound structures, it sums the sizes of the elements. Thus, for instance, for a slice
+ // it returns the length of the slice times the element size and does not count the memory
+ // occupied by the header.
+-func dataSize(v reflect.Value) int {
++func dataSize(v reflect.Value) (int, error) {
+ 	if v.Kind() == reflect.Slice {
+-		elem := sizeof(v.Type().Elem())
+-		if elem < 0 {
+-			return -1
++		elem, err := sizeof(v.Type().Elem())
++		if err != nil {
++			return 0, err
+ 		}
+-		return v.Len() * elem
++		return v.Len() * elem, nil
+ 	}
+ 	return sizeof(v.Type())
+ }
+ 
+-func sizeof(t reflect.Type) int {
++func sizeof(t reflect.Type) (int, error) {
+ 	switch t.Kind() {
+ 	case reflect.Array:
+-		n := sizeof(t.Elem())
+-		if n < 0 {
+-			return -1
++		n, err := sizeof(t.Elem())
++		if err != nil {
++			return 0, err
+ 		}
+-		return t.Len() * n
++		return t.Len() * n, nil
+ 
+ 	case reflect.Struct:
+ 		sum := 0
+ 		for i, n := 0, t.NumField(); i < n; i++ {
+-			s := sizeof(t.Field(i).Type)
+-			if s < 0 {
+-				return -1
++			s, err := sizeof(t.Field(i).Type)
++			if err != nil {
++				return 0, err
+ 			}
+ 			sum += s
+ 		}
+-		return sum
++		return sum, nil
+ 
+ 	case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
+ 		reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
+ 		reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128:
+-		return int(t.Size())
++		return int(t.Size()), nil
+ 	}
+-	return -1
++	return 0, errors.New("invalid type " + t.String())
+ }
+ 
+ type coder struct {
+@@ -514,11 +518,12 @@
+ }
+ 
+ func (d *decoder) skip(v reflect.Value) {
+-	d.buf = d.buf[dataSize(v):]
++	n, _ := dataSize(v)
++	d.buf = d.buf[n:]
+ }
+ 
+ func (e *encoder) skip(v reflect.Value) {
+-	n := dataSize(v)
++	n, _ := dataSize(v)
+ 	for i := range e.buf[0:n] {
+ 		e.buf[i] = 0
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/binary/binary_test.go gcc-4.8.1/libgo/go/encoding/binary/binary_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/binary/binary_test.go	2013-02-10 00:02:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/binary/binary_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"io"
+ 	"math"
+ 	"reflect"
++	"strings"
+ 	"testing"
+ )
+ 
+@@ -149,8 +150,14 @@
+ 
+ 	tv := reflect.Indirect(reflect.ValueOf(ts))
+ 	for i, n := 0, tv.NumField(); i < n; i++ {
++		typ := tv.Field(i).Type().String()
++		if typ == "[4]int" {
++			typ = "int" // the problem is int, not the [4]
++		}
+ 		if err := Write(buf, BigEndian, tv.Field(i).Interface()); err == nil {
+ 			t.Errorf("WriteT.%v: have err == nil, want non-nil", tv.Field(i).Type())
++		} else if !strings.Contains(err.Error(), typ) {
++			t.Errorf("WriteT: have err == %q, want it to mention %s", err, typ)
+ 		}
+ 	}
+ }
+@@ -238,7 +245,7 @@
+ 	bsr := &byteSliceReader{}
+ 	var buf bytes.Buffer
+ 	Write(&buf, BigEndian, &s)
+-	n := dataSize(reflect.ValueOf(s))
++	n, _ := dataSize(reflect.ValueOf(s))
+ 	b.SetBytes(int64(n))
+ 	t := s
+ 	b.ResetTimer()
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/binary/varint.go gcc-4.8.1/libgo/go/encoding/binary/varint.go
+--- gcc-4.8.1.orig/libgo/go/encoding/binary/varint.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/binary/varint.go	2013-07-16 01:55:04.520470000 -0500
+@@ -120,7 +120,6 @@
+ 		x |= uint64(b&0x7f) << s
+ 		s += 7
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // ReadVarint reads an encoded signed integer from r and returns it as an int64.
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/csv/reader.go gcc-4.8.1/libgo/go/encoding/csv/reader.go
+--- gcc-4.8.1.orig/libgo/go/encoding/csv/reader.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/csv/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -171,7 +171,6 @@
+ 		}
+ 		records = append(records, record)
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // readRune reads one rune from r, folding \r\n to \n and keeping track
+@@ -213,7 +212,6 @@
+ 			return nil
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // parseRecord reads and parses a single csv record from r.
+@@ -250,7 +248,6 @@
+ 			return nil, err
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // parseField parses the next field in the record.  The read field is
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/gob/codec_test.go gcc-4.8.1/libgo/go/encoding/gob/codec_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/gob/codec_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/gob/codec_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1191,10 +1191,8 @@
+ 			if v1 != nil || v2 != nil {
+ 				t.Errorf("item %d inconsistent nils", i)
+ 			}
+-			continue
+-			if v1.Square() != v2.Square() {
+-				t.Errorf("item %d inconsistent values: %v %v", i, v1, v2)
+-			}
++		} else if v1.Square() != v2.Square() {
++			t.Errorf("item %d inconsistent values: %v %v", i, v1, v2)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/gob/decode.go gcc-4.8.1/libgo/go/encoding/gob/decode.go
+--- gcc-4.8.1.orig/libgo/go/encoding/gob/decode.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/gob/decode.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1066,7 +1066,6 @@
+ 	case reflect.Struct:
+ 		return true
+ 	}
+-	return true
+ }
+ 
+ // typeString returns a human-readable description of the type identified by remoteId.
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/gob/gobencdec_test.go gcc-4.8.1/libgo/go/encoding/gob/gobencdec_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/gob/gobencdec_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/gob/gobencdec_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1,4 +1,4 @@
+-// Copyright 20011 The Go Authors. All rights reserved.
++// Copyright 2011 The Go Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+@@ -348,7 +348,7 @@
+ 		t.Fatal("decode error:", err)
+ 	}
+ 	if y.G.s != "XYZ" {
+-		t.Fatalf("expected `XYZ` got %c", y.G.s)
++		t.Fatalf("expected `XYZ` got %q", y.G.s)
+ 	}
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/gob/timing_test.go gcc-4.8.1/libgo/go/encoding/gob/timing_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/gob/timing_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/gob/timing_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -50,49 +50,51 @@
+ }
+ 
+ func TestCountEncodeMallocs(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++
++	const N = 1000
++
+ 	var buf bytes.Buffer
+ 	enc := NewEncoder(&buf)
+ 	bench := &Bench{7, 3.2, "now is the time", []byte("for all good men")}
+-	memstats := new(runtime.MemStats)
+-	runtime.ReadMemStats(memstats)
+-	mallocs := 0 - memstats.Mallocs
+-	const count = 1000
+-	for i := 0; i < count; i++ {
++
++	allocs := testing.AllocsPerRun(N, func() {
+ 		err := enc.Encode(bench)
+ 		if err != nil {
+ 			t.Fatal("encode:", err)
+ 		}
+-	}
+-	runtime.ReadMemStats(memstats)
+-	mallocs += memstats.Mallocs
+-	fmt.Printf("mallocs per encode of type Bench: %d\n", mallocs/count)
++	})
++	fmt.Printf("mallocs per encode of type Bench: %v\n", allocs)
+ }
+ 
+ func TestCountDecodeMallocs(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++
++	const N = 1000
++
+ 	var buf bytes.Buffer
+ 	enc := NewEncoder(&buf)
+ 	bench := &Bench{7, 3.2, "now is the time", []byte("for all good men")}
+-	const count = 1000
+-	for i := 0; i < count; i++ {
++
++	// Fill the buffer with enough to decode
++	testing.AllocsPerRun(N, func() {
+ 		err := enc.Encode(bench)
+ 		if err != nil {
+ 			t.Fatal("encode:", err)
+ 		}
+-	}
++	})
++
+ 	dec := NewDecoder(&buf)
+-	memstats := new(runtime.MemStats)
+-	runtime.ReadMemStats(memstats)
+-	mallocs := 0 - memstats.Mallocs
+-	for i := 0; i < count; i++ {
++	allocs := testing.AllocsPerRun(N, func() {
+ 		*bench = Bench{}
+ 		err := dec.Decode(&bench)
+ 		if err != nil {
+ 			t.Fatal("decode:", err)
+ 		}
+-	}
+-	runtime.ReadMemStats(memstats)
+-	mallocs += memstats.Mallocs
+-	fmt.Printf("mallocs per decode of type Bench: %d\n", mallocs/count)
++	})
++	fmt.Printf("mallocs per decode of type Bench: %v\n", allocs)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/gob/type.go gcc-4.8.1/libgo/go/encoding/gob/type.go
+--- gcc-4.8.1.orig/libgo/go/encoding/gob/type.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/encoding/gob/type.go	2013-07-16 01:55:04.520470000 -0500
+@@ -526,7 +526,6 @@
+ 	default:
+ 		return nil, errors.New("gob NewTypeObject can't handle type: " + rt.String())
+ 	}
+-	return nil, nil
+ }
+ 
+ // isExported reports whether this is an exported - upper case - name.
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/json/decode.go gcc-4.8.1/libgo/go/encoding/json/decode.go
+--- gcc-4.8.1.orig/libgo/go/encoding/json/decode.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/json/decode.go	2013-07-16 01:55:04.520470000 -0500
+@@ -33,6 +33,10 @@
+ // the value pointed at by the pointer.  If the pointer is nil, Unmarshal
+ // allocates a new value for it to point to.
+ //
++// To unmarshal JSON into a struct, Unmarshal matches incoming object
++// keys to the keys used by Marshal (either the struct field name or its tag),
++// preferring an exact match but also accepting a case-insensitive match.
++//
+ // To unmarshal JSON into an interface value, Unmarshal unmarshals
+ // the JSON into the concrete value contained in the interface value.
+ // If the interface value is nil, that is, has no concrete value stored in it,
+@@ -51,17 +55,22 @@
+ // If no more serious errors are encountered, Unmarshal returns
+ // an UnmarshalTypeError describing the earliest such error.
+ //
++// When unmarshaling quoted strings, invalid UTF-8 or
++// invalid UTF-16 surrogate pairs are not treated as an error.
++// Instead, they are replaced by the Unicode replacement
++// character U+FFFD.
++//
+ func Unmarshal(data []byte, v interface{}) error {
+-	d := new(decodeState).init(data)
+-
+-	// Quick check for well-formedness.
++	// Check for well-formedness.
+ 	// Avoids filling out half a data structure
+ 	// before discovering a JSON syntax error.
++	var d decodeState
+ 	err := checkValid(data, &d.scan)
+ 	if err != nil {
+ 		return err
+ 	}
+ 
++	d.init(data)
+ 	return d.unmarshal(v)
+ }
+ 
+@@ -252,6 +261,16 @@
+ 		}
+ 		d.scan.step(&d.scan, '"')
+ 		d.scan.step(&d.scan, '"')
++
++		n := len(d.scan.parseState)
++		if n > 0 && d.scan.parseState[n-1] == parseObjectKey {
++			// d.scan thinks we just read an object key; finish the object
++			d.scan.step(&d.scan, ':')
++			d.scan.step(&d.scan, '"')
++			d.scan.step(&d.scan, '"')
++			d.scan.step(&d.scan, '}')
++		}
++
+ 		return
+ 	}
+ 
+@@ -730,6 +749,7 @@
+ 	switch d.scanWhile(scanSkipSpace) {
+ 	default:
+ 		d.error(errPhase)
++		panic("unreachable")
+ 	case scanBeginArray:
+ 		return d.arrayInterface()
+ 	case scanBeginObject:
+@@ -737,12 +757,11 @@
+ 	case scanBeginLiteral:
+ 		return d.literalInterface()
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // arrayInterface is like array but returns []interface{}.
+ func (d *decodeState) arrayInterface() []interface{} {
+-	var v []interface{}
++	var v = make([]interface{}, 0)
+ 	for {
+ 		// Look ahead for ] - can only happen on first iteration.
+ 		op := d.scanWhile(scanSkipSpace)
+@@ -849,7 +868,6 @@
+ 		}
+ 		return n
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // getu4 decodes \uXXXX from the beginning of s, returning the hex value,
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/json/decode_test.go gcc-4.8.1/libgo/go/encoding/json/decode_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/json/decode_test.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/json/decode_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -11,6 +11,7 @@
+ 	"reflect"
+ 	"strings"
+ 	"testing"
++	"time"
+ )
+ 
+ type T struct {
+@@ -29,7 +30,7 @@
+ 	F3 Number
+ }
+ 
+-// ifaceNumAsFloat64/ifaceNumAsNumber are used to test unmarshalling with and
++// ifaceNumAsFloat64/ifaceNumAsNumber are used to test unmarshaling with and
+ // without UseNumber
+ var ifaceNumAsFloat64 = map[string]interface{}{
+ 	"k1": float64(1),
+@@ -239,6 +240,12 @@
+ 	{in: `[1, 2, 3]`, ptr: new([1]int), out: [1]int{1}},
+ 	{in: `[1, 2, 3]`, ptr: new([5]int), out: [5]int{1, 2, 3, 0, 0}},
+ 
++	// empty array to interface test
++	{in: `[]`, ptr: new([]interface{}), out: []interface{}{}},
++	{in: `null`, ptr: new([]interface{}), out: []interface{}(nil)},
++	{in: `{"T":[]}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": []interface{}{}}},
++	{in: `{"T":null}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": interface{}(nil)}},
++
+ 	// composite tests
+ 	{in: allValueIndent, ptr: new(All), out: allValue},
+ 	{in: allValueCompact, ptr: new(All), out: allValue},
+@@ -323,6 +330,43 @@
+ 		ptr: new(S10),
+ 		out: S10{S13: S13{S8: S8{S9: S9{Y: 2}}}},
+ 	},
++
++	// invalid UTF-8 is coerced to valid UTF-8.
++	{
++		in:  "\"hello\xffworld\"",
++		ptr: new(string),
++		out: "hello\ufffdworld",
++	},
++	{
++		in:  "\"hello\xc2\xc2world\"",
++		ptr: new(string),
++		out: "hello\ufffd\ufffdworld",
++	},
++	{
++		in:  "\"hello\xc2\xffworld\"",
++		ptr: new(string),
++		out: "hello\ufffd\ufffdworld",
++	},
++	{
++		in:  "\"hello\\ud800world\"",
++		ptr: new(string),
++		out: "hello\ufffdworld",
++	},
++	{
++		in:  "\"hello\\ud800\\ud800world\"",
++		ptr: new(string),
++		out: "hello\ufffd\ufffdworld",
++	},
++	{
++		in:  "\"hello\\ud800\\ud800world\"",
++		ptr: new(string),
++		out: "hello\ufffd\ufffdworld",
++	},
++	{
++		in:  "\"hello\xed\xa0\x80\xed\xb0\x80world\"",
++		ptr: new(string),
++		out: "hello\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdworld",
++	},
+ }
+ 
+ func TestMarshal(t *testing.T) {
+@@ -1107,3 +1151,43 @@
+ 		t.Errorf("got %q, want %q", out, want)
+ 	}
+ }
++
++// Time3339 is a time.Time which encodes to and from JSON
++// as an RFC 3339 time in UTC.
++type Time3339 time.Time
++
++func (t *Time3339) UnmarshalJSON(b []byte) error {
++	if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' {
++		return fmt.Errorf("types: failed to unmarshal non-string value %q as an RFC 3339 time", b)
++	}
++	tm, err := time.Parse(time.RFC3339, string(b[1:len(b)-1]))
++	if err != nil {
++		return err
++	}
++	*t = Time3339(tm)
++	return nil
++}
++
++func TestUnmarshalJSONLiteralError(t *testing.T) {
++	var t3 Time3339
++	err := Unmarshal([]byte(`"0000-00-00T00:00:00Z"`), &t3)
++	if err == nil {
++		t.Fatalf("expected error; got time %v", time.Time(t3))
++	}
++	if !strings.Contains(err.Error(), "range") {
++		t.Errorf("got err = %v; want out of range error", err)
++	}
++}
++
++// Test that extra object elements in an array do not result in a
++// "data changing underfoot" error.
++// Issue 3717
++func TestSkipArrayObjects(t *testing.T) {
++	json := `[{}]`
++	var dest [0]interface{}
++
++	err := Unmarshal([]byte(json), &dest)
++	if err != nil {
++		t.Errorf("got error %q, want nil", err)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/json/encode.go gcc-4.8.1/libgo/go/encoding/json/encode.go
+--- gcc-4.8.1.orig/libgo/go/encoding/json/encode.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/json/encode.go	2013-07-16 01:55:04.520470000 -0500
+@@ -3,7 +3,8 @@
+ // license that can be found in the LICENSE file.
+ 
+ // Package json implements encoding and decoding of JSON objects as defined in
+-// RFC 4627.
++// RFC 4627. The mapping between JSON objects and Go values is described
++// in the documentation for the Marshal and Unmarshal functions.
+ //
+ // See "JSON and Go" for an introduction to this package:
+ // http://golang.org/doc/articles/json_and_go.html
+@@ -38,8 +39,8 @@
+ //
+ // Floating point, integer, and Number values encode as JSON numbers.
+ //
+-// String values encode as JSON strings, with each invalid UTF-8 sequence
+-// replaced by the encoding of the Unicode replacement character U+FFFD.
++// String values encode as JSON strings. InvalidUTF8Error will be returned
++// if an invalid UTF-8 sequence is encountered.
+ // The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e"
+ // to keep some browsers from misinterpreting JSON output as HTML.
+ //
+@@ -86,9 +87,21 @@
+ // underscores and slashes.
+ //
+ // Anonymous struct fields are usually marshaled as if their inner exported fields
+-// were fields in the outer struct, subject to the usual Go visibility rules.
++// were fields in the outer struct, subject to the usual Go visibility rules amended
++// as described in the next paragraph.
+ // An anonymous struct field with a name given in its JSON tag is treated as
+-// having that name instead of as anonymous.
++// having that name, rather than being anonymous.
++//
++// The Go visibility rules for struct fields are amended for JSON when
++// deciding which field to marshal or unmarshal. If there are
++// multiple fields at the same level, and that level is the least
++// nested (and would therefore be the nesting level selected by the
++// usual Go rules), the following extra rules apply:
++//
++// 1) Of those fields, if any are JSON-tagged, only tagged fields are considered,
++// even if there are multiple untagged fields that would otherwise conflict.
++// 2) If there is exactly one field (tagged or not according to the first rule), that is selected.
++// 3) Otherwise there are multiple fields, and all are ignored; no error occurs.
+ //
+ // Handling of anonymous struct fields is new in Go 1.1.
+ // Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring of
+@@ -187,8 +200,10 @@
+ 	return "json: unsupported value: " + e.Str
+ }
+ 
++// An InvalidUTF8Error is returned by Marshal when attempting
++// to encode a string value with invalid UTF-8 sequences.
+ type InvalidUTF8Error struct {
+-	S string
++	S string // the whole string value that caused the error
+ }
+ 
+ func (e *InvalidUTF8Error) Error() string {
+@@ -654,27 +669,78 @@
+ 
+ 	sort.Sort(byName(fields))
+ 
+-	// Remove fields with annihilating name collisions
+-	// and also fields shadowed by fields with explicit JSON tags.
+-	name := ""
++	// Delete all fields that are hidden by the Go rules for embedded fields,
++	// except that fields with JSON tags are promoted.
++
++	// The fields are sorted in primary order of name, secondary order
++	// of field index length. Loop over names; for each name, delete
++	// hidden fields by choosing the one dominant field that survives.
+ 	out := fields[:0]
+-	for _, f := range fields {
+-		if f.name != name {
+-			name = f.name
+-			out = append(out, f)
++	for advance, i := 0, 0; i < len(fields); i += advance {
++		// One iteration per name.
++		// Find the sequence of fields with the name of this first field.
++		fi := fields[i]
++		name := fi.name
++		for advance = 1; i+advance < len(fields); advance++ {
++			fj := fields[i+advance]
++			if fj.name != name {
++				break
++			}
++		}
++		if advance == 1 { // Only one field with this name
++			out = append(out, fi)
+ 			continue
+ 		}
+-		if n := len(out); n > 0 && out[n-1].name == name && (!out[n-1].tag || f.tag) {
+-			out = out[:n-1]
++		dominant, ok := dominantField(fields[i : i+advance])
++		if ok {
++			out = append(out, dominant)
+ 		}
+ 	}
+-	fields = out
+ 
++	fields = out
+ 	sort.Sort(byIndex(fields))
+ 
+ 	return fields
+ }
+ 
++// dominantField looks through the fields, all of which are known to
++// have the same name, to find the single field that dominates the
++// others using Go's embedding rules, modified by the presence of
++// JSON tags. If there are multiple top-level fields, the boolean
++// will be false: This condition is an error in Go and we skip all
++// the fields.
++func dominantField(fields []field) (field, bool) {
++	// The fields are sorted in increasing index-length order. The winner
++	// must therefore be one with the shortest index length. Drop all
++	// longer entries, which is easy: just truncate the slice.
++	length := len(fields[0].index)
++	tagged := -1 // Index of first tagged field.
++	for i, f := range fields {
++		if len(f.index) > length {
++			fields = fields[:i]
++			break
++		}
++		if f.tag {
++			if tagged >= 0 {
++				// Multiple tagged fields at the same level: conflict.
++				// Return no field.
++				return field{}, false
++			}
++			tagged = i
++		}
++	}
++	if tagged >= 0 {
++		return fields[tagged], true
++	}
++	// All remaining fields have the same length. If there's more than one,
++	// we have a conflict (two fields named "X" at the same level) and we
++	// return no field.
++	if len(fields) > 1 {
++		return field{}, false
++	}
++	return fields[0], true
++}
++
+ var fieldCache struct {
+ 	sync.RWMutex
+ 	m map[reflect.Type][]field
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/json/encode_test.go gcc-4.8.1/libgo/go/encoding/json/encode_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/json/encode_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/json/encode_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -206,3 +206,107 @@
+ 		t.Errorf("got %q, want %q", got, want)
+ 	}
+ }
++
++type BugA struct {
++	S string
++}
++
++type BugB struct {
++	BugA
++	S string
++}
++
++type BugC struct {
++	S string
++}
++
++// Legal Go: We never use the repeated embedded field (S).
++type BugX struct {
++	A int
++	BugA
++	BugB
++}
++
++// Issue 5245.
++func TestEmbeddedBug(t *testing.T) {
++	v := BugB{
++		BugA{"A"},
++		"B",
++	}
++	b, err := Marshal(v)
++	if err != nil {
++		t.Fatal("Marshal:", err)
++	}
++	want := `{"S":"B"}`
++	got := string(b)
++	if got != want {
++		t.Fatalf("Marshal: got %s want %s", got, want)
++	}
++	// Now check that the duplicate field, S, does not appear.
++	x := BugX{
++		A: 23,
++	}
++	b, err = Marshal(x)
++	if err != nil {
++		t.Fatal("Marshal:", err)
++	}
++	want = `{"A":23}`
++	got = string(b)
++	if got != want {
++		t.Fatalf("Marshal: got %s want %s", got, want)
++	}
++}
++
++type BugD struct { // Same as BugA after tagging.
++	XXX string `json:"S"`
++}
++
++// BugD's tagged S field should dominate BugA's.
++type BugY struct {
++	BugA
++	BugD
++}
++
++// Test that a field with a tag dominates untagged fields.
++func TestTaggedFieldDominates(t *testing.T) {
++	v := BugY{
++		BugA{"BugA"},
++		BugD{"BugD"},
++	}
++	b, err := Marshal(v)
++	if err != nil {
++		t.Fatal("Marshal:", err)
++	}
++	want := `{"S":"BugD"}`
++	got := string(b)
++	if got != want {
++		t.Fatalf("Marshal: got %s want %s", got, want)
++	}
++}
++
++// There are no tags here, so S should not appear.
++type BugZ struct {
++	BugA
++	BugC
++	BugY // Contains a tagged S field through BugD; should not dominate.
++}
++
++func TestDuplicatedFieldDisappears(t *testing.T) {
++	v := BugZ{
++		BugA{"BugA"},
++		BugC{"BugC"},
++		BugY{
++			BugA{"nested BugA"},
++			BugD{"nested BugD"},
++		},
++	}
++	b, err := Marshal(v)
++	if err != nil {
++		t.Fatal("Marshal:", err)
++	}
++	want := `{}`
++	got := string(b)
++	if got != want {
++		t.Fatalf("Marshal: got %s want %s", got, want)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/json/scanner_test.go gcc-4.8.1/libgo/go/encoding/json/scanner_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/json/scanner_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/json/scanner_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -277,9 +277,6 @@
+ 	if f > n {
+ 		f = n
+ 	}
+-	if n > 0 && f == 0 {
+-		f = 1
+-	}
+ 	x := make([]interface{}, f)
+ 	for i := range x {
+ 		x[i] = genValue(((i+1)*n)/f - (i*n)/f)
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/marshal.go gcc-4.8.1/libgo/go/encoding/xml/marshal.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/marshal.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/marshal.go	2013-07-16 01:55:04.520470000 -0500
+@@ -81,8 +81,7 @@
+ func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) {
+ 	var b bytes.Buffer
+ 	enc := NewEncoder(&b)
+-	enc.prefix = prefix
+-	enc.indent = indent
++	enc.Indent(prefix, indent)
+ 	if err := enc.Encode(v); err != nil {
+ 		return nil, err
+ 	}
+@@ -99,6 +98,14 @@
+ 	return &Encoder{printer{Writer: bufio.NewWriter(w)}}
+ }
+ 
++// Indent sets the encoder to generate XML in which each element
++// begins on a new indented line that starts with prefix and is followed by
++// one or more copies of indent according to the nesting depth.
++func (enc *Encoder) Indent(prefix, indent string) {
++	enc.prefix = prefix
++	enc.indent = indent
++}
++
+ // Encode writes the XML encoding of v to the stream.
+ //
+ // See the documentation for Marshal for details about the conversion
+@@ -113,10 +120,76 @@
+ 
+ type printer struct {
+ 	*bufio.Writer
++	seq        int
+ 	indent     string
+ 	prefix     string
+ 	depth      int
+ 	indentedIn bool
++	putNewline bool
++	attrNS     map[string]string // map prefix -> name space
++	attrPrefix map[string]string // map name space -> prefix
++}
++
++// createAttrPrefix finds the name space prefix attribute to use for the given name space,
++// defining a new prefix if necessary. It returns the prefix and whether it is new.
++func (p *printer) createAttrPrefix(url string) (prefix string, isNew bool) {
++	if prefix = p.attrPrefix[url]; prefix != "" {
++		return prefix, false
++	}
++
++	// The "http://www.w3.org/XML/1998/namespace" name space is predefined as "xml"
++	// and must be referred to that way.
++	// (The "http://www.w3.org/2000/xmlns/" name space is also predefined as "xmlns",
++	// but users should not be trying to use that one directly - that's our job.)
++	if url == xmlURL {
++		return "xml", false
++	}
++
++	// Need to define a new name space.
++	if p.attrPrefix == nil {
++		p.attrPrefix = make(map[string]string)
++		p.attrNS = make(map[string]string)
++	}
++
++	// Pick a name. We try to use the final element of the path
++	// but fall back to _.
++	prefix = strings.TrimRight(url, "/")
++	if i := strings.LastIndex(prefix, "/"); i >= 0 {
++		prefix = prefix[i+1:]
++	}
++	if prefix == "" || !isName([]byte(prefix)) || strings.Contains(prefix, ":") {
++		prefix = "_"
++	}
++	if strings.HasPrefix(prefix, "xml") {
++		// xmlanything is reserved.
++		prefix = "_" + prefix
++	}
++	if p.attrNS[prefix] != "" {
++		// Name is taken. Find a better one.
++		for p.seq++; ; p.seq++ {
++			if id := prefix + "_" + strconv.Itoa(p.seq); p.attrNS[id] == "" {
++				prefix = id
++				break
++			}
++		}
++	}
++
++	p.attrPrefix[url] = prefix
++	p.attrNS[prefix] = url
++
++	p.WriteString(`xmlns:`)
++	p.WriteString(prefix)
++	p.WriteString(`="`)
++	EscapeText(p, []byte(url))
++	p.WriteString(`" `)
++
++	return prefix, true
++}
++
++// deleteAttrPrefix removes an attribute name space prefix.
++func (p *printer) deleteAttrPrefix(prefix string) {
++	delete(p.attrPrefix, p.attrNS[prefix])
++	delete(p.attrNS, prefix)
+ }
+ 
+ // marshalValue writes one or more XML elements representing val.
+@@ -185,7 +258,9 @@
+ 	if xmlns != "" {
+ 		p.WriteString(` xmlns="`)
+ 		// TODO: EscapeString, to avoid the allocation.
+-		Escape(p, []byte(xmlns))
++		if err := EscapeText(p, []byte(xmlns)); err != nil {
++			return err
++		}
+ 		p.WriteByte('"')
+ 	}
+ 
+@@ -200,6 +275,14 @@
+ 			continue
+ 		}
+ 		p.WriteByte(' ')
++		if finfo.xmlns != "" {
++			prefix, created := p.createAttrPrefix(finfo.xmlns)
++			if created {
++				defer p.deleteAttrPrefix(prefix)
++			}
++			p.WriteString(prefix)
++			p.WriteByte(':')
++		}
+ 		p.WriteString(finfo.name)
+ 		p.WriteString(`="`)
+ 		if err := p.marshalSimple(fv.Type(), fv); err != nil {
+@@ -244,19 +327,22 @@
+ 		p.WriteString(strconv.FormatFloat(val.Float(), 'g', -1, val.Type().Bits()))
+ 	case reflect.String:
+ 		// TODO: Add EscapeString.
+-		Escape(p, []byte(val.String()))
++		EscapeText(p, []byte(val.String()))
+ 	case reflect.Bool:
+ 		p.WriteString(strconv.FormatBool(val.Bool()))
+ 	case reflect.Array:
+ 		// will be [...]byte
+-		bytes := make([]byte, val.Len())
+-		for i := range bytes {
+-			bytes[i] = val.Index(i).Interface().(byte)
++		var bytes []byte
++		if val.CanAddr() {
++			bytes = val.Slice(0, val.Len()).Bytes()
++		} else {
++			bytes = make([]byte, val.Len())
++			reflect.Copy(reflect.ValueOf(bytes), val)
+ 		}
+-		Escape(p, bytes)
++		EscapeText(p, bytes)
+ 	case reflect.Slice:
+ 		// will be []byte
+-		Escape(p, val.Bytes())
++		EscapeText(p, val.Bytes())
+ 	default:
+ 		return &UnsupportedTypeError{typ}
+ 	}
+@@ -273,7 +359,7 @@
+ 	s := parentStack{printer: p}
+ 	for i := range tinfo.fields {
+ 		finfo := &tinfo.fields[i]
+-		if finfo.flags&(fAttr) != 0 {
++		if finfo.flags&fAttr != 0 {
+ 			continue
+ 		}
+ 		vf := finfo.value(val)
+@@ -290,10 +376,14 @@
+ 			case reflect.Bool:
+ 				Escape(p, strconv.AppendBool(scratch[:0], vf.Bool()))
+ 			case reflect.String:
+-				Escape(p, []byte(vf.String()))
++				if err := EscapeText(p, []byte(vf.String())); err != nil {
++					return err
++				}
+ 			case reflect.Slice:
+ 				if elem, ok := vf.Interface().([]byte); ok {
+-					Escape(p, elem)
++					if err := EscapeText(p, elem); err != nil {
++						return err
++					}
+ 				}
+ 			case reflect.Struct:
+ 				if vf.Type() == timeType {
+@@ -387,7 +477,11 @@
+ 		}
+ 		p.indentedIn = false
+ 	}
+-	p.WriteByte('\n')
++	if p.putNewline {
++		p.WriteByte('\n')
++	} else {
++		p.putNewline = true
++	}
+ 	if len(p.prefix) > 0 {
+ 		p.WriteString(p.prefix)
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/marshal_test.go gcc-4.8.1/libgo/go/encoding/xml/marshal_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/marshal_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/marshal_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,6 +7,7 @@
+ import (
+ 	"bytes"
+ 	"errors"
++	"fmt"
+ 	"io"
+ 	"reflect"
+ 	"strconv"
+@@ -265,6 +266,16 @@
+ 	V interface{}
+ }
+ 
++type MyInt int
++
++type EmbedInt struct {
++	MyInt
++}
++
++type Strings struct {
++	X []string `xml:"A>B,omitempty"`
++}
++
+ // Unless explicitly stated as such (or *Plain), all of the
+ // tests below are two-way tests. When introducing new tests,
+ // please try to make them two-way as well to ensure that
+@@ -789,6 +800,17 @@
+ 		},
+ 		UnmarshalOnly: true,
+ 	},
++	{
++		ExpectXML: `<EmbedInt><MyInt>42</MyInt></EmbedInt>`,
++		Value: &EmbedInt{
++			MyInt: 42,
++		},
++	},
++	// Test omitempty with parent chain; see golang.org/issue/4168.
++	{
++		ExpectXML: `<Strings><A></A></Strings>`,
++		Value:     &Strings{},
++	},
+ }
+ 
+ func TestMarshal(t *testing.T) {
+@@ -811,6 +833,10 @@
+ 	}
+ }
+ 
++type AttrParent struct {
++	X string `xml:"X>Y,attr"`
++}
++
+ var marshalErrorTests = []struct {
+ 	Value interface{}
+ 	Err   string
+@@ -838,12 +864,39 @@
+ 		Value: &Domain{Comment: []byte("f--bar")},
+ 		Err:   `xml: comments must not contain "--"`,
+ 	},
++	// Reject parent chain with attr, never worked; see golang.org/issue/5033.
++	{
++		Value: &AttrParent{},
++		Err:   `xml: X>Y chain not valid with attr flag`,
++	},
++}
++
++var marshalIndentTests = []struct {
++	Value     interface{}
++	Prefix    string
++	Indent    string
++	ExpectXML string
++}{
++	{
++		Value: &SecretAgent{
++			Handle:    "007",
++			Identity:  "James Bond",
++			Obfuscate: "<redacted/>",
++		},
++		Prefix:    "",
++		Indent:    "\t",
++		ExpectXML: fmt.Sprintf("<agent handle=\"007\">\n\t<Identity>James Bond</Identity><redacted/>\n</agent>"),
++	},
+ }
+ 
+ func TestMarshalErrors(t *testing.T) {
+ 	for idx, test := range marshalErrorTests {
+-		_, err := Marshal(test.Value)
+-		if err == nil || err.Error() != test.Err {
++		data, err := Marshal(test.Value)
++		if err == nil {
++			t.Errorf("#%d: marshal(%#v) = [success] %q, want error %v", idx, test.Value, data, test.Err)
++			continue
++		}
++		if err.Error() != test.Err {
+ 			t.Errorf("#%d: marshal(%#v) = [error] %v, want %v", idx, test.Value, err, test.Err)
+ 		}
+ 		if test.Kind != reflect.Invalid {
+@@ -884,6 +937,19 @@
+ 	}
+ }
+ 
++func TestMarshalIndent(t *testing.T) {
++	for i, test := range marshalIndentTests {
++		data, err := MarshalIndent(test.Value, test.Prefix, test.Indent)
++		if err != nil {
++			t.Errorf("#%d: Error: %s", i, err)
++			continue
++		}
++		if got, want := string(data), test.ExpectXML; got != want {
++			t.Errorf("#%d: MarshalIndent:\nGot:%s\nWant:\n%s", i, got, want)
++		}
++	}
++}
++
+ type limitedBytesWriter struct {
+ 	w      io.Writer
+ 	remain int // until writes fail
+@@ -933,6 +999,16 @@
+ 	}
+ }
+ 
++func TestMarshalWriteIOErrors(t *testing.T) {
++	enc := NewEncoder(errWriter{})
++
++	expectErr := "unwritable"
++	err := enc.Encode(&Passenger{})
++	if err == nil || err.Error() != expectErr {
++		t.Errorf("EscapeTest = [error] %v, want %v", err, expectErr)
++	}
++}
++
+ func BenchmarkMarshal(b *testing.B) {
+ 	for i := 0; i < b.N; i++ {
+ 		Marshal(atomValue)
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/read.go gcc-4.8.1/libgo/go/encoding/xml/read.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/read.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/read.go	2013-07-16 01:55:04.520470000 -0500
+@@ -263,7 +263,7 @@
+ 				strv := finfo.value(sv)
+ 				// Look for attribute.
+ 				for _, a := range start.Attr {
+-					if a.Name.Local == finfo.name {
++					if a.Name.Local == finfo.name && (finfo.xmlns == "" || finfo.xmlns == a.Name.Space) {
+ 						copyValue(strv, []byte(a.Value))
+ 						break
+ 					}
+@@ -441,7 +441,7 @@
+ Loop:
+ 	for i := range tinfo.fields {
+ 		finfo := &tinfo.fields[i]
+-		if finfo.flags&fElement == 0 || len(finfo.parents) < len(parents) {
++		if finfo.flags&fElement == 0 || len(finfo.parents) < len(parents) || finfo.xmlns != "" && finfo.xmlns != start.Name.Space {
+ 			continue
+ 		}
+ 		for j := range parents {
+@@ -493,7 +493,6 @@
+ 			return true, nil
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // Skip reads tokens until it has consumed the end element
+@@ -517,5 +516,4 @@
+ 			return nil
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/read_test.go gcc-4.8.1/libgo/go/encoding/xml/read_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/read_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/read_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,6 +6,7 @@
+ 
+ import (
+ 	"reflect"
++	"strings"
+ 	"testing"
+ 	"time"
+ )
+@@ -399,3 +400,224 @@
+ 		t.Fatalf("Unmarshal with %s failed:\nhave %#v,\n want %#v", x, p3.Int, 1)
+ 	}
+ }
++
++type Tables struct {
++	HTable string `xml:"http://www.w3.org/TR/html4/ table"`
++	FTable string `xml:"http://www.w3schools.com/furniture table"`
++}
++
++var tables = []struct {
++	xml string
++	tab Tables
++	ns  string
++}{
++	{
++		xml: `<Tables>` +
++			`<table xmlns="http://www.w3.org/TR/html4/">hello</table>` +
++			`<table xmlns="http://www.w3schools.com/furniture">world</table>` +
++			`</Tables>`,
++		tab: Tables{"hello", "world"},
++	},
++	{
++		xml: `<Tables>` +
++			`<table xmlns="http://www.w3schools.com/furniture">world</table>` +
++			`<table xmlns="http://www.w3.org/TR/html4/">hello</table>` +
++			`</Tables>`,
++		tab: Tables{"hello", "world"},
++	},
++	{
++		xml: `<Tables xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/">` +
++			`<f:table>world</f:table>` +
++			`<h:table>hello</h:table>` +
++			`</Tables>`,
++		tab: Tables{"hello", "world"},
++	},
++	{
++		xml: `<Tables>` +
++			`<table>bogus</table>` +
++			`</Tables>`,
++		tab: Tables{},
++	},
++	{
++		xml: `<Tables>` +
++			`<table>only</table>` +
++			`</Tables>`,
++		tab: Tables{HTable: "only"},
++		ns:  "http://www.w3.org/TR/html4/",
++	},
++	{
++		xml: `<Tables>` +
++			`<table>only</table>` +
++			`</Tables>`,
++		tab: Tables{FTable: "only"},
++		ns:  "http://www.w3schools.com/furniture",
++	},
++	{
++		xml: `<Tables>` +
++			`<table>only</table>` +
++			`</Tables>`,
++		tab: Tables{},
++		ns:  "something else entirely",
++	},
++}
++
++func TestUnmarshalNS(t *testing.T) {
++	for i, tt := range tables {
++		var dst Tables
++		var err error
++		if tt.ns != "" {
++			d := NewDecoder(strings.NewReader(tt.xml))
++			d.DefaultSpace = tt.ns
++			err = d.Decode(&dst)
++		} else {
++			err = Unmarshal([]byte(tt.xml), &dst)
++		}
++		if err != nil {
++			t.Errorf("#%d: Unmarshal: %v", i, err)
++			continue
++		}
++		want := tt.tab
++		if dst != want {
++			t.Errorf("#%d: dst=%+v, want %+v", i, dst, want)
++		}
++	}
++}
++
++func TestMarshalNS(t *testing.T) {
++	dst := Tables{"hello", "world"}
++	data, err := Marshal(&dst)
++	if err != nil {
++		t.Fatalf("Marshal: %v", err)
++	}
++	want := `<Tables><table xmlns="http://www.w3.org/TR/html4/">hello</table><table xmlns="http://www.w3schools.com/furniture">world</table></Tables>`
++	str := string(data)
++	if str != want {
++		t.Errorf("have: %q\nwant: %q\n", str, want)
++	}
++}
++
++type TableAttrs struct {
++	TAttr TAttr
++}
++
++type TAttr struct {
++	HTable string `xml:"http://www.w3.org/TR/html4/ table,attr"`
++	FTable string `xml:"http://www.w3schools.com/furniture table,attr"`
++	Lang   string `xml:"http://www.w3.org/XML/1998/namespace lang,attr,omitempty"`
++	Other1 string `xml:"http://golang.org/xml/ other,attr,omitempty"`
++	Other2 string `xml:"http://golang.org/xmlfoo/ other,attr,omitempty"`
++	Other3 string `xml:"http://golang.org/json/ other,attr,omitempty"`
++	Other4 string `xml:"http://golang.org/2/json/ other,attr,omitempty"`
++}
++
++var tableAttrs = []struct {
++	xml string
++	tab TableAttrs
++	ns  string
++}{
++	{
++		xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` +
++			`h:table="hello" f:table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}},
++	},
++	{
++		xml: `<TableAttrs><TAttr xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/" ` +
++			`h:table="hello" f:table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}},
++	},
++	{
++		xml: `<TableAttrs><TAttr ` +
++			`h:table="hello" f:table="world" xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}},
++	},
++	{
++		// Default space does not apply to attribute names.
++		xml: `<TableAttrs xmlns="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` +
++			`h:table="hello" table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "hello", FTable: ""}},
++	},
++	{
++		// Default space does not apply to attribute names.
++		xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture"><TAttr xmlns="http://www.w3.org/TR/html4/" ` +
++			`table="hello" f:table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "", FTable: "world"}},
++	},
++	{
++		xml: `<TableAttrs><TAttr ` +
++			`table="bogus" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{},
++	},
++	{
++		// Default space does not apply to attribute names.
++		xml: `<TableAttrs xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` +
++			`h:table="hello" table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "hello", FTable: ""}},
++		ns:  "http://www.w3schools.com/furniture",
++	},
++	{
++		// Default space does not apply to attribute names.
++		xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture"><TAttr ` +
++			`table="hello" f:table="world" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{TAttr{HTable: "", FTable: "world"}},
++		ns:  "http://www.w3.org/TR/html4/",
++	},
++	{
++		xml: `<TableAttrs><TAttr ` +
++			`table="bogus" ` +
++			`/></TableAttrs>`,
++		tab: TableAttrs{},
++		ns:  "something else entirely",
++	},
++}
++
++func TestUnmarshalNSAttr(t *testing.T) {
++	for i, tt := range tableAttrs {
++		var dst TableAttrs
++		var err error
++		if tt.ns != "" {
++			d := NewDecoder(strings.NewReader(tt.xml))
++			d.DefaultSpace = tt.ns
++			err = d.Decode(&dst)
++		} else {
++			err = Unmarshal([]byte(tt.xml), &dst)
++		}
++		if err != nil {
++			t.Errorf("#%d: Unmarshal: %v", i, err)
++			continue
++		}
++		want := tt.tab
++		if dst != want {
++			t.Errorf("#%d: dst=%+v, want %+v", i, dst, want)
++		}
++	}
++}
++
++func TestMarshalNSAttr(t *testing.T) {
++	src := TableAttrs{TAttr{"hello", "world", "en_US", "other1", "other2", "other3", "other4"}}
++	data, err := Marshal(&src)
++	if err != nil {
++		t.Fatalf("Marshal: %v", err)
++	}
++	want := `<TableAttrs><TAttr xmlns:html4="http://www.w3.org/TR/html4/" html4:table="hello" xmlns:furniture="http://www.w3schools.com/furniture" furniture:table="world" xml:lang="en_US" xmlns:_xml="http://golang.org/xml/" _xml:other="other1" xmlns:_xmlfoo="http://golang.org/xmlfoo/" _xmlfoo:other="other2" xmlns:json="http://golang.org/json/" json:other="other3" xmlns:json_1="http://golang.org/2/json/" json_1:other="other4"></TAttr></TableAttrs>`
++	str := string(data)
++	if str != want {
++		t.Errorf("Marshal:\nhave: %#q\nwant: %#q\n", str, want)
++	}
++
++	var dst TableAttrs
++	if err := Unmarshal(data, &dst); err != nil {
++		t.Errorf("Unmarshal: %v", err)
++	}
++
++	if dst != src {
++		t.Errorf("Unmarshal = %q, want %q", dst, src)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/typeinfo.go gcc-4.8.1/libgo/go/encoding/xml/typeinfo.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/typeinfo.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/typeinfo.go	2013-07-16 01:55:04.520470000 -0500
+@@ -70,20 +70,19 @@
+ 				if t.Kind() == reflect.Ptr {
+ 					t = t.Elem()
+ 				}
+-				if t.Kind() != reflect.Struct {
+-					continue
+-				}
+-				inner, err := getTypeInfo(t)
+-				if err != nil {
+-					return nil, err
+-				}
+-				for _, finfo := range inner.fields {
+-					finfo.idx = append([]int{i}, finfo.idx...)
+-					if err := addFieldInfo(typ, tinfo, &finfo); err != nil {
++				if t.Kind() == reflect.Struct {
++					inner, err := getTypeInfo(t)
++					if err != nil {
+ 						return nil, err
+ 					}
++					for _, finfo := range inner.fields {
++						finfo.idx = append([]int{i}, finfo.idx...)
++						if err := addFieldInfo(typ, tinfo, &finfo); err != nil {
++							return nil, err
++						}
++					}
++					continue
+ 				}
+-				continue
+ 			}
+ 
+ 			finfo, err := structFieldInfo(typ, &f)
+@@ -193,16 +192,19 @@
+ 	}
+ 
+ 	// Prepare field name and parents.
+-	tokens = strings.Split(tag, ">")
+-	if tokens[0] == "" {
+-		tokens[0] = f.Name
++	parents := strings.Split(tag, ">")
++	if parents[0] == "" {
++		parents[0] = f.Name
+ 	}
+-	if tokens[len(tokens)-1] == "" {
++	if parents[len(parents)-1] == "" {
+ 		return nil, fmt.Errorf("xml: trailing '>' in field %s of type %s", f.Name, typ)
+ 	}
+-	finfo.name = tokens[len(tokens)-1]
+-	if len(tokens) > 1 {
+-		finfo.parents = tokens[:len(tokens)-1]
++	finfo.name = parents[len(parents)-1]
++	if len(parents) > 1 {
++		if (finfo.flags & fElement) == 0 {
++			return nil, fmt.Errorf("xml: %s chain not valid with %s flag", tag, strings.Join(tokens[1:], ","))
++		}
++		finfo.parents = parents[:len(parents)-1]
+ 	}
+ 
+ 	// If the field type has an XMLName field, the names must match
+@@ -268,6 +270,9 @@
+ 		if oldf.flags&fMode != newf.flags&fMode {
+ 			continue
+ 		}
++		if oldf.xmlns != "" && newf.xmlns != "" && oldf.xmlns != newf.xmlns {
++			continue
++		}
+ 		minl := min(len(newf.parents), len(oldf.parents))
+ 		for p := 0; p < minl; p++ {
+ 			if oldf.parents[p] != newf.parents[p] {
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/xml.go gcc-4.8.1/libgo/go/encoding/xml/xml.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/xml.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/xml.go	2013-07-16 01:55:04.520470000 -0500
+@@ -169,6 +169,11 @@
+ 	// the CharsetReader's result values must be non-nil.
+ 	CharsetReader func(charset string, input io.Reader) (io.Reader, error)
+ 
++	// DefaultSpace sets the default name space used for unadorned tags,
++	// as if the entire XML stream were wrapped in an element containing
++	// the attribute xmlns="DefaultSpace".
++	DefaultSpace string
++
+ 	r         io.ByteReader
+ 	buf       bytes.Buffer
+ 	saved     *bytes.Buffer
+@@ -268,6 +273,8 @@
+ 	return
+ }
+ 
++const xmlURL = "http://www.w3.org/XML/1998/namespace"
++
+ // Apply name space translation to name n.
+ // The default name space (for Space=="")
+ // applies only to element names, not to attribute names.
+@@ -277,11 +284,15 @@
+ 		return
+ 	case n.Space == "" && !isElementName:
+ 		return
++	case n.Space == "xml":
++		n.Space = xmlURL
+ 	case n.Space == "" && n.Local == "xmlns":
+ 		return
+ 	}
+ 	if v, ok := d.ns[n.Space]; ok {
+ 		n.Space = v
++	} else if n.Space == "" {
++		n.Space = d.DefaultSpace
+ 	}
+ }
+ 
+@@ -956,7 +967,7 @@
+ 				b0, b1 = 0, 0
+ 				continue Input
+ 			}
+-			ent := string(d.buf.Bytes()[before])
++			ent := string(d.buf.Bytes()[before:])
+ 			if ent[len(ent)-1] != ';' {
+ 				ent += " (no semicolon)"
+ 			}
+@@ -1692,7 +1703,7 @@
+ var htmlAutoClose = []string{
+ 	/*
+ 		hget http://www.w3.org/TR/html4/loose.dtd |
+-		9 sed -n 's/<!ELEMENT (.*) - O EMPTY.+/	"\1",/p' | tr A-Z a-z
++		9 sed -n 's/<!ELEMENT ([^ ]*) +- O EMPTY.+/	"\1",/p' | tr A-Z a-z
+ 	*/
+ 	"basefont",
+ 	"br",
+@@ -1702,7 +1713,7 @@
+ 	"param",
+ 	"hr",
+ 	"input",
+-	"col     ",
++	"col",
+ 	"frame",
+ 	"isindex",
+ 	"base",
+@@ -1718,15 +1729,18 @@
+ 	esc_tab  = []byte("&#x9;")
+ 	esc_nl   = []byte("&#xA;")
+ 	esc_cr   = []byte("&#xD;")
++	esc_fffd = []byte("\uFFFD") // Unicode replacement character
+ )
+ 
+-// Escape writes to w the properly escaped XML equivalent
++// EscapeText writes to w the properly escaped XML equivalent
+ // of the plain text data s.
+-func Escape(w io.Writer, s []byte) {
++func EscapeText(w io.Writer, s []byte) error {
+ 	var esc []byte
+ 	last := 0
+-	for i, c := range s {
+-		switch c {
++	for i := 0; i < len(s); {
++		r, width := utf8.DecodeRune(s[i:])
++		i += width
++		switch r {
+ 		case '"':
+ 			esc = esc_quot
+ 		case '\'':
+@@ -1744,13 +1758,31 @@
+ 		case '\r':
+ 			esc = esc_cr
+ 		default:
++			if !isInCharacterRange(r) {
++				esc = esc_fffd
++				break
++			}
+ 			continue
+ 		}
+-		w.Write(s[last:i])
+-		w.Write(esc)
+-		last = i + 1
++		if _, err := w.Write(s[last : i-width]); err != nil {
++			return err
++		}
++		if _, err := w.Write(esc); err != nil {
++			return err
++		}
++		last = i
++	}
++	if _, err := w.Write(s[last:]); err != nil {
++		return err
+ 	}
+-	w.Write(s[last:])
++	return nil
++}
++
++// Escape is like EscapeText but omits the error return value.
++// It is provided for backwards compatibility with Go 1.0.
++// Code targeting Go 1.1 or later should use EscapeText.
++func Escape(w io.Writer, s []byte) {
++	EscapeText(w, s)
+ }
+ 
+ // procInstEncoding parses the `encoding="..."` or `encoding='...'`
+diff -Naur gcc-4.8.1.orig/libgo/go/encoding/xml/xml_test.go gcc-4.8.1/libgo/go/encoding/xml/xml_test.go
+--- gcc-4.8.1.orig/libgo/go/encoding/xml/xml_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/encoding/xml/xml_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,7 @@
+ package xml
+ 
+ import (
++	"bytes"
+ 	"fmt"
+ 	"io"
+ 	"reflect"
+@@ -595,13 +596,6 @@
+ 	}
+ }
+ 
+-// The last three tests (respectively one for characters in attribute
+-// names and two for character entities) pass not because of code
+-// changed for issue 1259, but instead pass with the given messages
+-// from other parts of xml.Decoder.  I provide these to note the
+-// current behavior of situations where one might think that character
+-// range checking would detect the error, but it does not in fact.
+-
+ var characterTests = []struct {
+ 	in  string
+ 	err string
+@@ -611,8 +605,10 @@
+ 	{"\xef\xbf\xbe<doc/>", "illegal character code U+FFFE"},
+ 	{"<?xml version=\"1.0\"?><doc>\r\n<hiya/>\x07<toots/></doc>", "illegal character code U+0007"},
+ 	{"<?xml version=\"1.0\"?><doc \x12='value'>what's up</doc>", "expected attribute name in element"},
++	{"<doc>&abc\x01;</doc>", "invalid character entity &abc (no semicolon)"},
+ 	{"<doc>&\x01;</doc>", "invalid character entity & (no semicolon)"},
+-	{"<doc>&\xef\xbf\xbe;</doc>", "invalid character entity & (no semicolon)"},
++	{"<doc>&\xef\xbf\xbe;</doc>", "invalid character entity &\uFFFE;"},
++	{"<doc>&hello;</doc>", "invalid character entity &hello;"},
+ }
+ 
+ func TestDisallowedCharacters(t *testing.T) {
+@@ -629,7 +625,7 @@
+ 			t.Fatalf("input %d d.Token() = _, %v, want _, *SyntaxError", i, err)
+ 		}
+ 		if synerr.Msg != tt.err {
+-			t.Fatalf("input %d synerr.Msg wrong: want '%s', got '%s'", i, tt.err, synerr.Msg)
++			t.Fatalf("input %d synerr.Msg wrong: want %q, got %q", i, tt.err, synerr.Msg)
+ 		}
+ 	}
+ }
+@@ -689,3 +685,32 @@
+ 		}
+ 	}
+ }
++
++// Writer whose Write method always returns an error.
++type errWriter struct{}
++
++func (errWriter) Write(p []byte) (n int, err error) { return 0, fmt.Errorf("unwritable") }
++
++func TestEscapeTextIOErrors(t *testing.T) {
++	expectErr := "unwritable"
++	err := EscapeText(errWriter{}, []byte{'A'})
++
++	if err == nil || err.Error() != expectErr {
++		t.Errorf("have %v, want %v", err, expectErr)
++	}
++}
++
++func TestEscapeTextInvalidChar(t *testing.T) {
++	input := []byte("A \x00 terminated string.")
++	expected := "A \uFFFD terminated string."
++
++	buff := new(bytes.Buffer)
++	if err := EscapeText(buff, input); err != nil {
++		t.Fatalf("have %v, want nil", err)
++	}
++	text := buff.String()
++
++	if text != expected {
++		t.Errorf("have %v, want %v", text, expected)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/cookiejar/jar.go gcc-4.8.1/libgo/go/exp/cookiejar/jar.go
+--- gcc-4.8.1.orig/libgo/go/exp/cookiejar/jar.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/cookiejar/jar.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,89 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package cookiejar implements an RFC 6265-compliant http.CookieJar.
+-//
+-// TODO: example code to create a memory-backed cookie jar with the default
+-// public suffix list.
+-package cookiejar
+-
+-import (
+-	"net/http"
+-	"net/url"
+-)
+-
+-// PublicSuffixList provides the public suffix of a domain. For example:
+-//      - the public suffix of "example.com" is "com",
+-//      - the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and
+-//      - the public suffix of "bar.pvt.k12.wy.us" is "pvt.k12.wy.us".
+-//
+-// Implementations of PublicSuffixList must be safe for concurrent use by
+-// multiple goroutines.
+-//
+-// An implementation that always returns "" is valid and may be useful for
+-// testing but it is not secure: it means that the HTTP server for foo.com can
+-// set a cookie for bar.com.
+-type PublicSuffixList interface {
+-	// PublicSuffix returns the public suffix of domain.
+-	//
+-	// TODO: specify which of the caller and callee is responsible for IP
+-	// addresses, for leading and trailing dots, for case sensitivity, and
+-	// for IDN/Punycode.
+-	PublicSuffix(domain string) string
+-
+-	// String returns a description of the source of this public suffix list.
+-	// A Jar will store its PublicSuffixList's description in its storage,
+-	// and update the stored cookies if its list has a different description
+-	// than the stored list. The description will typically contain something
+-	// like a time stamp or version number.
+-	String() string
+-}
+-
+-// Options are the options for creating a new Jar.
+-type Options struct {
+-	// Storage is the cookie jar storage. It may not be nil.
+-	Storage Storage
+-
+-	// PublicSuffixList is the public suffix list that determines whether an
+-	// HTTP server can set a cookie for a domain. It may not be nil.
+-	PublicSuffixList PublicSuffixList
+-
+-	// TODO: ErrorFunc for handling storage errors?
+-}
+-
+-// Jar implements the http.CookieJar interface from the net/http package.
+-type Jar struct {
+-	storage Storage
+-	psList  PublicSuffixList
+-}
+-
+-// New returns a new cookie jar.
+-func New(o *Options) *Jar {
+-	return &Jar{
+-		storage: o.Storage,
+-		psList:  o.PublicSuffixList,
+-	}
+-}
+-
+-// TODO(nigeltao): how do we reject HttpOnly cookies? Do we post-process the
+-// return value from Jar.Cookies?
+-//
+-// HttpOnly cookies are those for regular HTTP(S) requests but should not be
+-// visible from JavaScript. The HttpOnly bit mitigates XSS attacks; it's not
+-// for HTTP vs HTTPS vs FTP transports.
+-
+-// Cookies implements the Cookies method of the http.CookieJar interface.
+-//
+-// It returns an empty slice if the URL's scheme is not HTTP or HTTPS.
+-func (j *Jar) Cookies(u *url.URL) []*http.Cookie {
+-	// TODO.
+-	return nil
+-}
+-
+-// SetCookies implements the SetCookies method of the http.CookieJar interface.
+-//
+-// It does nothing if the URL's scheme is not HTTP or HTTPS.
+-func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie) {
+-	// TODO.
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/cookiejar/storage.go gcc-4.8.1/libgo/go/exp/cookiejar/storage.go
+--- gcc-4.8.1.orig/libgo/go/exp/cookiejar/storage.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/cookiejar/storage.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,101 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package cookiejar
+-
+-import (
+-	"time"
+-)
+-
+-// Storage is a Jar's storage. It is a multi-map, mapping keys to one or more
+-// entries. Each entry consists of a subkey, creation time, last access time,
+-// and some arbitrary data.
+-//
+-// The Add and Delete methods have undefined behavior if the key is invalid.
+-// A valid key must use only bytes in the character class [a-z0-9.-] and
+-// must have at least one non-. byte. Note that this excludes any key
+-// containing a capital ASCII letter as well as the empty string.
+-type Storage interface {
+-	// A client must call Lock before calling other methods and must call
+-	// Unlock when finished. Between the calls to Lock and Unlock, a client
+-	// can assume that other clients are not modifying the Storage.
+-	Lock()
+-	Unlock()
+-
+-	// Add adds entries to the storage. Each entry's Subkey and Data must
+-	// both be non-empty.
+-	//
+-	// If the Storage already contains an entry with the same key and
+-	// subkey then the new entry is stored with the creation time of the
+-	// old entry, and the old entry is deleted.
+-	//
+-	// Adding entries may cause other entries to be deleted, to maintain an
+-	// implementation-specific storage constraint.
+-	Add(key string, entries ...Entry) error
+-
+-	// Delete deletes all entries for the given key.
+-	Delete(key string) error
+-
+-	// Entries calls f for each entry stored for that key. If f returns a
+-	// non-nil error then the iteration stops and Entries returns that
+-	// error. Iteration is not guaranteed to be in any particular order.
+-	//
+-	// If f returns an Update action then that stored entry's LastAccess
+-	// time will be set to the time that f returned. If f returns a Delete
+-	// action then that entry will be deleted from the Storage.
+-	//
+-	// f may call a Storage's Add and Delete methods; those modifications
+-	// will not affect the list of entries visited in this call to Entries.
+-	Entries(key string, f func(entry Entry) (Action, time.Time, error)) error
+-
+-	// Keys calls f for each key stored. f will not be called on a key with
+-	// zero entries. If f returns a non-nil error then the iteration stops
+-	// and Keys returns that error. Iteration is not guaranteed to be in any
+-	// particular order.
+-	//
+-	// f may call a Storage's Add, Delete and Entries methods; those
+-	// modifications will not affect the list of keys visited in this call
+-	// to Keys.
+-	Keys(f func(key string) error) error
+-}
+-
+-// Entry is an entry in a Storage.
+-type Entry struct {
+-	Subkey     string
+-	Data       string
+-	Creation   time.Time
+-	LastAccess time.Time
+-}
+-
+-// Action is an action returned by the function passed to Entries.
+-type Action int
+-
+-const (
+-	// Pass means to take no further action with an Entry.
+-	Pass Action = iota
+-	// Update means to update the LastAccess time of an Entry.
+-	Update
+-	// Delete means to delete an Entry.
+-	Delete
+-)
+-
+-// ValidStorageKey returns whether the given key is valid for a Storage.
+-func ValidStorageKey(key string) bool {
+-	hasNonDot := false
+-	for i := 0; i < len(key); i++ {
+-		switch c := key[i]; {
+-		case 'a' <= c && c <= 'z':
+-			fallthrough
+-		case '0' <= c && c <= '9':
+-			fallthrough
+-		case c == '-':
+-			hasNonDot = true
+-		case c == '.':
+-			// No-op.
+-		default:
+-			return false
+-		}
+-	}
+-	return hasNonDot
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/cookiejar/storage_test.go gcc-4.8.1/libgo/go/exp/cookiejar/storage_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/cookiejar/storage_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/cookiejar/storage_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,48 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package cookiejar
+-
+-import (
+-	"testing"
+-)
+-
+-var validStorageKeyTests = map[string]bool{
+-	"":            false,
+-	".":           false,
+-	"..":          false,
+-	"/":           false,
+-	"EXAMPLE.com": false,
+-	"\n":          false,
+-	"\r":          false,
+-	"\r\n":        false,
+-	"\x00":        false,
+-	"back\\slash": false,
+-	"co:lon":      false,
+-	"com,ma":      false,
+-	"semi;colon":  false,
+-	"sl/ash":      false,
+-	"sp ace":      false,
+-	"under_score": false,
+-	"Ï":           false,
+-
+-	"-":                true,
+-	".dot":             true,
+-	".dot.":            true,
+-	".metadata":        true,
+-	".x..y..z...":      true,
+-	"dot.":             true,
+-	"example.com":      true,
+-	"foo":              true,
+-	"hy-phen":          true,
+-	"xn--bcher-kva.ch": true,
+-}
+-
+-func TestValidStorageKey(t *testing.T) {
+-	for key, want := range validStorageKeyTests {
+-		if got := ValidStorageKey(key); got != want {
+-			t.Errorf("%q: got %v, want %v", key, got, want)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnf/ebnf.go gcc-4.8.1/libgo/go/exp/ebnf/ebnf.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnf/ebnf.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ebnf/ebnf.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,269 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package ebnf is a library for EBNF grammars. The input is text ([]byte)
+-// satisfying the following grammar (represented itself in EBNF):
+-//
+-//	Production  = name "=" [ Expression ] "." .
+-//	Expression  = Alternative { "|" Alternative } .
+-//	Alternative = Term { Term } .
+-//	Term        = name | token [ "âŠ" token ] | Group | Option | Repetition .
+-//	Group       = "(" Expression ")" .
+-//	Option      = "[" Expression "]" .
+-//	Repetition  = "{" Expression "}" .
+-//
+-// A name is a Go identifier, a token is a Go string, and comments
+-// and white space follow the same rules as for the Go language.
+-// Production names starting with an uppercase Unicode letter denote
+-// non-terminal productions (i.e., productions which allow white-space
+-// and comments between tokens); all other production names denote
+-// lexical productions.
+-//
+-package ebnf
+-
+-import (
+-	"errors"
+-	"fmt"
+-	"text/scanner"
+-	"unicode"
+-	"unicode/utf8"
+-)
+-
+-// ----------------------------------------------------------------------------
+-// Error handling
+-
+-type errorList []error
+-
+-func (list errorList) Err() error {
+-	if len(list) == 0 {
+-		return nil
+-	}
+-	return list
+-}
+-
+-func (list errorList) Error() string {
+-	switch len(list) {
+-	case 0:
+-		return "no errors"
+-	case 1:
+-		return list[0].Error()
+-	}
+-	return fmt.Sprintf("%s (and %d more errors)", list[0], len(list)-1)
+-}
+-
+-func newError(pos scanner.Position, msg string) error {
+-	return errors.New(fmt.Sprintf("%s: %s", pos, msg))
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Internal representation
+-
+-type (
+-	// An Expression node represents a production expression.
+-	Expression interface {
+-		// Pos is the position of the first character of the syntactic construct
+-		Pos() scanner.Position
+-	}
+-
+-	// An Alternative node represents a non-empty list of alternative expressions.
+-	Alternative []Expression // x | y | z
+-
+-	// A Sequence node represents a non-empty list of sequential expressions.
+-	Sequence []Expression // x y z
+-
+-	// A Name node represents a production name.
+-	Name struct {
+-		StringPos scanner.Position
+-		String    string
+-	}
+-
+-	// A Token node represents a literal.
+-	Token struct {
+-		StringPos scanner.Position
+-		String    string
+-	}
+-
+-	// A List node represents a range of characters.
+-	Range struct {
+-		Begin, End *Token // begin ... end
+-	}
+-
+-	// A Group node represents a grouped expression.
+-	Group struct {
+-		Lparen scanner.Position
+-		Body   Expression // (body)
+-	}
+-
+-	// An Option node represents an optional expression.
+-	Option struct {
+-		Lbrack scanner.Position
+-		Body   Expression // [body]
+-	}
+-
+-	// A Repetition node represents a repeated expression.
+-	Repetition struct {
+-		Lbrace scanner.Position
+-		Body   Expression // {body}
+-	}
+-
+-	// A Production node represents an EBNF production.
+-	Production struct {
+-		Name *Name
+-		Expr Expression
+-	}
+-
+-	// A Bad node stands for pieces of source code that lead to a parse error.
+-	Bad struct {
+-		TokPos scanner.Position
+-		Error  string // parser error message
+-	}
+-
+-	// A Grammar is a set of EBNF productions. The map
+-	// is indexed by production name.
+-	//
+-	Grammar map[string]*Production
+-)
+-
+-func (x Alternative) Pos() scanner.Position { return x[0].Pos() } // the parser always generates non-empty Alternative
+-func (x Sequence) Pos() scanner.Position    { return x[0].Pos() } // the parser always generates non-empty Sequences
+-func (x *Name) Pos() scanner.Position       { return x.StringPos }
+-func (x *Token) Pos() scanner.Position      { return x.StringPos }
+-func (x *Range) Pos() scanner.Position      { return x.Begin.Pos() }
+-func (x *Group) Pos() scanner.Position      { return x.Lparen }
+-func (x *Option) Pos() scanner.Position     { return x.Lbrack }
+-func (x *Repetition) Pos() scanner.Position { return x.Lbrace }
+-func (x *Production) Pos() scanner.Position { return x.Name.Pos() }
+-func (x *Bad) Pos() scanner.Position        { return x.TokPos }
+-
+-// ----------------------------------------------------------------------------
+-// Grammar verification
+-
+-func isLexical(name string) bool {
+-	ch, _ := utf8.DecodeRuneInString(name)
+-	return !unicode.IsUpper(ch)
+-}
+-
+-type verifier struct {
+-	errors   errorList
+-	worklist []*Production
+-	reached  Grammar // set of productions reached from (and including) the root production
+-	grammar  Grammar
+-}
+-
+-func (v *verifier) error(pos scanner.Position, msg string) {
+-	v.errors = append(v.errors, newError(pos, msg))
+-}
+-
+-func (v *verifier) push(prod *Production) {
+-	name := prod.Name.String
+-	if _, found := v.reached[name]; !found {
+-		v.worklist = append(v.worklist, prod)
+-		v.reached[name] = prod
+-	}
+-}
+-
+-func (v *verifier) verifyChar(x *Token) rune {
+-	s := x.String
+-	if utf8.RuneCountInString(s) != 1 {
+-		v.error(x.Pos(), "single char expected, found "+s)
+-		return 0
+-	}
+-	ch, _ := utf8.DecodeRuneInString(s)
+-	return ch
+-}
+-
+-func (v *verifier) verifyExpr(expr Expression, lexical bool) {
+-	switch x := expr.(type) {
+-	case nil:
+-		// empty expression
+-	case Alternative:
+-		for _, e := range x {
+-			v.verifyExpr(e, lexical)
+-		}
+-	case Sequence:
+-		for _, e := range x {
+-			v.verifyExpr(e, lexical)
+-		}
+-	case *Name:
+-		// a production with this name must exist;
+-		// add it to the worklist if not yet processed
+-		if prod, found := v.grammar[x.String]; found {
+-			v.push(prod)
+-		} else {
+-			v.error(x.Pos(), "missing production "+x.String)
+-		}
+-		// within a lexical production references
+-		// to non-lexical productions are invalid
+-		if lexical && !isLexical(x.String) {
+-			v.error(x.Pos(), "reference to non-lexical production "+x.String)
+-		}
+-	case *Token:
+-		// nothing to do for now
+-	case *Range:
+-		i := v.verifyChar(x.Begin)
+-		j := v.verifyChar(x.End)
+-		if i >= j {
+-			v.error(x.Pos(), "decreasing character range")
+-		}
+-	case *Group:
+-		v.verifyExpr(x.Body, lexical)
+-	case *Option:
+-		v.verifyExpr(x.Body, lexical)
+-	case *Repetition:
+-		v.verifyExpr(x.Body, lexical)
+-	case *Bad:
+-		v.error(x.Pos(), x.Error)
+-	default:
+-		panic(fmt.Sprintf("internal error: unexpected type %T", expr))
+-	}
+-}
+-
+-func (v *verifier) verify(grammar Grammar, start string) {
+-	// find root production
+-	root, found := grammar[start]
+-	if !found {
+-		var noPos scanner.Position
+-		v.error(noPos, "no start production "+start)
+-		return
+-	}
+-
+-	// initialize verifier
+-	v.worklist = v.worklist[0:0]
+-	v.reached = make(Grammar)
+-	v.grammar = grammar
+-
+-	// work through the worklist
+-	v.push(root)
+-	for {
+-		n := len(v.worklist) - 1
+-		if n < 0 {
+-			break
+-		}
+-		prod := v.worklist[n]
+-		v.worklist = v.worklist[0:n]
+-		v.verifyExpr(prod.Expr, isLexical(prod.Name.String))
+-	}
+-
+-	// check if all productions were reached
+-	if len(v.reached) < len(v.grammar) {
+-		for name, prod := range v.grammar {
+-			if _, found := v.reached[name]; !found {
+-				v.error(prod.Pos(), name+" is unreachable")
+-			}
+-		}
+-	}
+-}
+-
+-// Verify checks that:
+-//	- all productions used are defined
+-//	- all productions defined are used when beginning at start
+-//	- lexical productions refer only to other lexical productions
+-//
+-// Position information is interpreted relative to the file set fset.
+-//
+-func Verify(grammar Grammar, start string) error {
+-	var v verifier
+-	v.verify(grammar, start)
+-	return v.errors.Err()
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnf/ebnf_test.go gcc-4.8.1/libgo/go/exp/ebnf/ebnf_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnf/ebnf_test.go	2011-10-26 18:57:58.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/ebnf/ebnf_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,71 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package ebnf
+-
+-import (
+-	"bytes"
+-	"testing"
+-)
+-
+-var goodGrammars = []string{
+-	`Program = .`,
+-
+-	`Program = foo .
+-	 foo = "foo" .`,
+-
+-	`Program = "a" | "b" "c" .`,
+-
+-	`Program = "a" âŠ "z" .`,
+-
+-	`Program = Song .
+-	 Song = { Note } .
+-	 Note = Do | (Re | Mi | Fa | So | La) | Ti .
+-	 Do = "c" .
+-	 Re = "d" .
+-	 Mi = "e" .
+-	 Fa = "f" .
+-	 So = "g" .
+-	 La = "a" .
+-	 Ti = ti .
+-	 ti = "b" .`,
+-}
+-
+-var badGrammars = []string{
+-	`Program = | .`,
+-	`Program = | b .`,
+-	`Program = a âŠ b .`,
+-	`Program = "a" âŠ .`,
+-	`Program = âŠ "b" .`,
+-	`Program = () .`,
+-	`Program = [] .`,
+-	`Program = {} .`,
+-}
+-
+-func checkGood(t *testing.T, src string) {
+-	grammar, err := Parse("", bytes.NewBuffer([]byte(src)))
+-	if err != nil {
+-		t.Errorf("Parse(%s) failed: %v", src, err)
+-		return
+-	}
+-	if err = Verify(grammar, "Program"); err != nil {
+-		t.Errorf("Verify(%s) failed: %v", src, err)
+-	}
+-}
+-
+-func checkBad(t *testing.T, src string) {
+-	_, err := Parse("", bytes.NewBuffer([]byte(src)))
+-	if err == nil {
+-		t.Errorf("Parse(%s) should have failed", src)
+-	}
+-}
+-
+-func TestGrammars(t *testing.T) {
+-	for _, src := range goodGrammars {
+-		checkGood(t, src)
+-	}
+-	for _, src := range badGrammars {
+-		checkBad(t, src)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnf/parser.go gcc-4.8.1/libgo/go/exp/ebnf/parser.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnf/parser.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ebnf/parser.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,190 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package ebnf
+-
+-import (
+-	"io"
+-	"strconv"
+-	"text/scanner"
+-)
+-
+-type parser struct {
+-	errors  errorList
+-	scanner scanner.Scanner
+-	pos     scanner.Position // token position
+-	tok     rune             // one token look-ahead
+-	lit     string           // token literal
+-}
+-
+-func (p *parser) next() {
+-	p.tok = p.scanner.Scan()
+-	p.pos = p.scanner.Position
+-	p.lit = p.scanner.TokenText()
+-}
+-
+-func (p *parser) error(pos scanner.Position, msg string) {
+-	p.errors = append(p.errors, newError(pos, msg))
+-}
+-
+-func (p *parser) errorExpected(pos scanner.Position, msg string) {
+-	msg = `expected "` + msg + `"`
+-	if pos.Offset == p.pos.Offset {
+-		// the error happened at the current position;
+-		// make the error message more specific
+-		msg += ", found " + scanner.TokenString(p.tok)
+-		if p.tok < 0 {
+-			msg += " " + p.lit
+-		}
+-	}
+-	p.error(pos, msg)
+-}
+-
+-func (p *parser) expect(tok rune) scanner.Position {
+-	pos := p.pos
+-	if p.tok != tok {
+-		p.errorExpected(pos, scanner.TokenString(tok))
+-	}
+-	p.next() // make progress in any case
+-	return pos
+-}
+-
+-func (p *parser) parseIdentifier() *Name {
+-	pos := p.pos
+-	name := p.lit
+-	p.expect(scanner.Ident)
+-	return &Name{pos, name}
+-}
+-
+-func (p *parser) parseToken() *Token {
+-	pos := p.pos
+-	value := ""
+-	if p.tok == scanner.String {
+-		value, _ = strconv.Unquote(p.lit)
+-		// Unquote may fail with an error, but only if the scanner found
+-		// an illegal string in the first place. In this case the error
+-		// has already been reported.
+-		p.next()
+-	} else {
+-		p.expect(scanner.String)
+-	}
+-	return &Token{pos, value}
+-}
+-
+-// ParseTerm returns nil if no term was found.
+-func (p *parser) parseTerm() (x Expression) {
+-	pos := p.pos
+-
+-	switch p.tok {
+-	case scanner.Ident:
+-		x = p.parseIdentifier()
+-
+-	case scanner.String:
+-		tok := p.parseToken()
+-		x = tok
+-		const ellipsis = 'âŠ' // U+2026, the horizontal ellipsis character
+-		if p.tok == ellipsis {
+-			p.next()
+-			x = &Range{tok, p.parseToken()}
+-		}
+-
+-	case '(':
+-		p.next()
+-		x = &Group{pos, p.parseExpression()}
+-		p.expect(')')
+-
+-	case '[':
+-		p.next()
+-		x = &Option{pos, p.parseExpression()}
+-		p.expect(']')
+-
+-	case '{':
+-		p.next()
+-		x = &Repetition{pos, p.parseExpression()}
+-		p.expect('}')
+-	}
+-
+-	return x
+-}
+-
+-func (p *parser) parseSequence() Expression {
+-	var list Sequence
+-
+-	for x := p.parseTerm(); x != nil; x = p.parseTerm() {
+-		list = append(list, x)
+-	}
+-
+-	// no need for a sequence if list.Len() < 2
+-	switch len(list) {
+-	case 0:
+-		p.errorExpected(p.pos, "term")
+-		return &Bad{p.pos, "term expected"}
+-	case 1:
+-		return list[0]
+-	}
+-
+-	return list
+-}
+-
+-func (p *parser) parseExpression() Expression {
+-	var list Alternative
+-
+-	for {
+-		list = append(list, p.parseSequence())
+-		if p.tok != '|' {
+-			break
+-		}
+-		p.next()
+-	}
+-	// len(list) > 0
+-
+-	// no need for an Alternative node if list.Len() < 2
+-	if len(list) == 1 {
+-		return list[0]
+-	}
+-
+-	return list
+-}
+-
+-func (p *parser) parseProduction() *Production {
+-	name := p.parseIdentifier()
+-	p.expect('=')
+-	var expr Expression
+-	if p.tok != '.' {
+-		expr = p.parseExpression()
+-	}
+-	p.expect('.')
+-	return &Production{name, expr}
+-}
+-
+-func (p *parser) parse(filename string, src io.Reader) Grammar {
+-	p.scanner.Init(src)
+-	p.scanner.Filename = filename
+-	p.next() // initializes pos, tok, lit
+-
+-	grammar := make(Grammar)
+-	for p.tok != scanner.EOF {
+-		prod := p.parseProduction()
+-		name := prod.Name.String
+-		if _, found := grammar[name]; !found {
+-			grammar[name] = prod
+-		} else {
+-			p.error(prod.Pos(), name+" declared already")
+-		}
+-	}
+-
+-	return grammar
+-}
+-
+-// Parse parses a set of EBNF productions from source src.
+-// It returns a set of productions. Errors are reported
+-// for incorrect syntax and if a production is declared
+-// more than once; the filename is used only for error
+-// positions.
+-//
+-func Parse(filename string, src io.Reader) (Grammar, error) {
+-	var p parser
+-	grammar := p.parse(filename, src)
+-	return grammar, p.errors.Err()
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnflint/doc.go gcc-4.8.1/libgo/go/exp/ebnflint/doc.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnflint/doc.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ebnflint/doc.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,22 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-/*
+-
+-Ebnflint verifies that EBNF productions are consistent and grammatically correct.
+-It reads them from an HTML document such as the Go specification.
+-
+-Grammar productions are grouped in boxes demarcated by the HTML elements
+-	<pre class="ebnf">
+-	</pre>
+-
+-
+-Usage:
+-	go tool ebnflint [--start production] [file]
+-
+-The --start flag specifies the name of the start production for
+-the grammar; it defaults to "Start".
+-
+-*/
+-package documentation
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnflint/ebnflint.go gcc-4.8.1/libgo/go/exp/ebnflint/ebnflint.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnflint/ebnflint.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ebnflint/ebnflint.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,122 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"bytes"
+-	"exp/ebnf"
+-	"flag"
+-	"fmt"
+-	"go/scanner"
+-	"go/token"
+-	"io"
+-	"io/ioutil"
+-	"os"
+-	"path/filepath"
+-)
+-
+-var fset = token.NewFileSet()
+-var start = flag.String("start", "Start", "name of start production")
+-
+-func usage() {
+-	fmt.Fprintf(os.Stderr, "usage: go tool ebnflint [flags] [filename]\n")
+-	flag.PrintDefaults()
+-	os.Exit(1)
+-}
+-
+-// Markers around EBNF sections in .html files
+-var (
+-	open  = []byte(`<pre class="ebnf">`)
+-	close = []byte(`</pre>`)
+-)
+-
+-func report(err error) {
+-	scanner.PrintError(os.Stderr, err)
+-	os.Exit(1)
+-}
+-
+-func extractEBNF(src []byte) []byte {
+-	var buf bytes.Buffer
+-
+-	for {
+-		// i = beginning of EBNF text
+-		i := bytes.Index(src, open)
+-		if i < 0 {
+-			break // no EBNF found - we are done
+-		}
+-		i += len(open)
+-
+-		// write as many newlines as found in the excluded text
+-		// to maintain correct line numbers in error messages
+-		for _, ch := range src[0:i] {
+-			if ch == '\n' {
+-				buf.WriteByte('\n')
+-			}
+-		}
+-
+-		// j = end of EBNF text (or end of source)
+-		j := bytes.Index(src[i:], close) // close marker
+-		if j < 0 {
+-			j = len(src) - i
+-		}
+-		j += i
+-
+-		// copy EBNF text
+-		buf.Write(src[i:j])
+-
+-		// advance
+-		src = src[j:]
+-	}
+-
+-	return buf.Bytes()
+-}
+-
+-func main() {
+-	flag.Parse()
+-
+-	var (
+-		name string
+-		r    io.Reader
+-	)
+-	switch flag.NArg() {
+-	case 0:
+-		name, r = "<stdin>", os.Stdin
+-	case 1:
+-		name = flag.Arg(0)
+-	default:
+-		usage()
+-	}
+-
+-	if err := verify(name, *start, r); err != nil {
+-		report(err)
+-	}
+-}
+-
+-func verify(name, start string, r io.Reader) error {
+-	if r == nil {
+-		f, err := os.Open(name)
+-		if err != nil {
+-			return err
+-		}
+-		defer f.Close()
+-		r = f
+-	}
+-
+-	src, err := ioutil.ReadAll(r)
+-	if err != nil {
+-		return err
+-	}
+-
+-	if filepath.Ext(name) == ".html" || bytes.Index(src, open) >= 0 {
+-		src = extractEBNF(src)
+-	}
+-
+-	grammar, err := ebnf.Parse(name, bytes.NewBuffer(src))
+-	if err != nil {
+-		return err
+-	}
+-
+-	return ebnf.Verify(grammar, start)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ebnflint/ebnflint_test.go gcc-4.8.1/libgo/go/exp/ebnflint/ebnflint_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/ebnflint/ebnflint_test.go	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ebnflint/ebnflint_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,16 +0,0 @@
+-// Copyright 2012 The Go Authors.  All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"runtime"
+-	"testing"
+-)
+-
+-func TestSpec(t *testing.T) {
+-	if err := verify(runtime.GOROOT()+"/doc/go_spec.html", "SourceFile", nil); err != nil {
+-		t.Fatal(err)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/gotype/doc.go gcc-4.8.1/libgo/go/exp/gotype/doc.go
+--- gcc-4.8.1.orig/libgo/go/exp/gotype/doc.go	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/gotype/doc.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,63 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-/*
+-The gotype command does syntactic and semantic analysis of Go files
+-and packages similar to the analysis performed by the front-end of
+-a Go compiler. Errors are reported if the analysis fails; otherwise
+-gotype is quiet (unless -v is set).
+-
+-Without a list of paths, gotype processes the standard input, which must
+-be the source of a single package file.
+-
+-Given a list of file names, each file must be a source file belonging to
+-the same package unless the package name is explicitly specified with the
+--p flag.
+-
+-Given a directory name, gotype collects all .go files in the directory
+-and processes them as if they were provided as an explicit list of file
+-names. Each directory is processed independently. Files starting with .
+-or not ending in .go are ignored.
+-
+-Usage:
+-	gotype [flags] [path ...]
+-
+-The flags are:
+-	-e
+-		Print all (including spurious) errors.
+-	-p pkgName
+-		Process only those files in package pkgName.
+-	-r
+-		Recursively process subdirectories.
+-	-v
+-		Verbose mode.
+-
+-Debugging flags:
+-	-comments
+-		Parse comments (ignored if -ast not set).
+-	-ast
+-		Print AST (disables concurrent parsing).
+-	-trace
+-		Print parse trace (disables concurrent parsing).
+-
+-
+-Examples
+-
+-To check the files file.go, old.saved, and .ignored:
+-
+-	gotype file.go old.saved .ignored
+-
+-To check all .go files belonging to package main in the current directory
+-and recursively in all subdirectories:
+-
+-	gotype -p main -r .
+-
+-To verify the output of a pipe:
+-
+-	echo "package foo" | gotype
+-
+-*/
+-package documentation
+-
+-// BUG(gri): At the moment, only single-file scope analysis is performed.
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/gotype/gotype.go gcc-4.8.1/libgo/go/exp/gotype/gotype.go
+--- gcc-4.8.1.orig/libgo/go/exp/gotype/gotype.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/gotype/gotype.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,184 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"flag"
+-	"fmt"
+-	"go/ast"
+-	"go/parser"
+-	"go/scanner"
+-	"go/token"
+-	"go/types"
+-	"io/ioutil"
+-	"os"
+-	"path/filepath"
+-	"strings"
+-)
+-
+-var (
+-	// main operation modes
+-	pkgName   = flag.String("p", "", "process only those files in package pkgName")
+-	recursive = flag.Bool("r", false, "recursively process subdirectories")
+-	verbose   = flag.Bool("v", false, "verbose mode")
+-	allErrors = flag.Bool("e", false, "print all (including spurious) errors")
+-
+-	// debugging support
+-	parseComments = flag.Bool("comments", false, "parse comments (ignored if -ast not set)")
+-	printTrace    = flag.Bool("trace", false, "print parse trace")
+-	printAST      = flag.Bool("ast", false, "print AST")
+-)
+-
+-var exitCode = 0
+-
+-func usage() {
+-	fmt.Fprintf(os.Stderr, "usage: gotype [flags] [path ...]\n")
+-	flag.PrintDefaults()
+-	os.Exit(2)
+-}
+-
+-func report(err error) {
+-	scanner.PrintError(os.Stderr, err)
+-	exitCode = 2
+-}
+-
+-// parse returns the AST for the Go source src.
+-// The filename is for error reporting only.
+-// The result is nil if there were errors or if
+-// the file does not belong to the -p package.
+-func parse(fset *token.FileSet, filename string, src []byte) *ast.File {
+-	if *verbose {
+-		fmt.Println(filename)
+-	}
+-
+-	// ignore files with different package name
+-	if *pkgName != "" {
+-		file, err := parser.ParseFile(fset, filename, src, parser.PackageClauseOnly)
+-		if err != nil {
+-			report(err)
+-			return nil
+-		}
+-		if file.Name.Name != *pkgName {
+-			if *verbose {
+-				fmt.Printf("\tignored (package %s)\n", file.Name.Name)
+-			}
+-			return nil
+-		}
+-	}
+-
+-	// parse entire file
+-	mode := parser.DeclarationErrors
+-	if *allErrors {
+-		mode |= parser.SpuriousErrors
+-	}
+-	if *parseComments && *printAST {
+-		mode |= parser.ParseComments
+-	}
+-	if *printTrace {
+-		mode |= parser.Trace
+-	}
+-	file, err := parser.ParseFile(fset, filename, src, mode)
+-	if err != nil {
+-		report(err)
+-		return nil
+-	}
+-	if *printAST {
+-		ast.Print(fset, file)
+-	}
+-
+-	return file
+-}
+-
+-func parseStdin(fset *token.FileSet) (files []*ast.File) {
+-	src, err := ioutil.ReadAll(os.Stdin)
+-	if err != nil {
+-		report(err)
+-		return
+-	}
+-	const filename = "<standard input>"
+-	if file := parse(fset, filename, src); file != nil {
+-		files = []*ast.File{file}
+-	}
+-	return
+-}
+-
+-func parseFiles(fset *token.FileSet, filenames []string) (files []*ast.File) {
+-	for _, filename := range filenames {
+-		src, err := ioutil.ReadFile(filename)
+-		if err != nil {
+-			report(err)
+-			continue
+-		}
+-		if file := parse(fset, filename, src); file != nil {
+-			files = append(files, file)
+-		}
+-	}
+-	return
+-}
+-
+-func isGoFilename(filename string) bool {
+-	// ignore non-Go files
+-	return !strings.HasPrefix(filename, ".") && strings.HasSuffix(filename, ".go")
+-}
+-
+-func processDirectory(dirname string) {
+-	f, err := os.Open(dirname)
+-	if err != nil {
+-		report(err)
+-		return
+-	}
+-	filenames, err := f.Readdirnames(-1)
+-	f.Close()
+-	if err != nil {
+-		report(err)
+-		// continue since filenames may not be empty
+-	}
+-	for i, filename := range filenames {
+-		filenames[i] = filepath.Join(dirname, filename)
+-	}
+-	processFiles(filenames, false)
+-}
+-
+-func processFiles(filenames []string, allFiles bool) {
+-	i := 0
+-	for _, filename := range filenames {
+-		switch info, err := os.Stat(filename); {
+-		case err != nil:
+-			report(err)
+-		case info.IsDir():
+-			if allFiles || *recursive {
+-				processDirectory(filename)
+-			}
+-		default:
+-			if allFiles || isGoFilename(info.Name()) {
+-				filenames[i] = filename
+-				i++
+-			}
+-		}
+-	}
+-	fset := token.NewFileSet()
+-	processPackage(fset, parseFiles(fset, filenames[0:i]))
+-}
+-
+-func processPackage(fset *token.FileSet, files []*ast.File) {
+-	_, err := types.Check(fset, files)
+-	if err != nil {
+-		report(err)
+-	}
+-}
+-
+-func main() {
+-	flag.Usage = usage
+-	flag.Parse()
+-
+-	if flag.NArg() == 0 {
+-		fset := token.NewFileSet()
+-		processPackage(fset, parseStdin(fset))
+-	} else {
+-		processFiles(flag.Args(), true)
+-	}
+-
+-	os.Exit(exitCode)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/gotype/gotype_test.go gcc-4.8.1/libgo/go/exp/gotype/gotype_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/gotype/gotype_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/gotype/gotype_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,215 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"go/build"
+-	"path/filepath"
+-	"runtime"
+-	"strings"
+-	"testing"
+-)
+-
+-func runTest(t *testing.T, path string) {
+-	exitCode = 0
+-
+-	*recursive = false
+-	if suffix := ".go"; strings.HasSuffix(path, suffix) {
+-		// single file
+-		path = filepath.Join(runtime.GOROOT(), "src/pkg", path)
+-		path, file := filepath.Split(path)
+-		*pkgName = file[:len(file)-len(suffix)]
+-		processFiles([]string{path}, true)
+-	} else {
+-		// package directory
+-		// TODO(gri) gotype should use the build package instead
+-		ctxt := build.Default
+-		ctxt.CgoEnabled = false
+-		pkg, err := ctxt.Import(path, "", 0)
+-		if err != nil {
+-			t.Errorf("build.Import error for path = %s: %s", path, err)
+-			return
+-		}
+-		// TODO(gri) there ought to be a more direct way using the build package...
+-		files := make([]string, len(pkg.GoFiles))
+-		for i, file := range pkg.GoFiles {
+-			files[i] = filepath.Join(pkg.Dir, file)
+-		}
+-		*pkgName = pkg.Name
+-		processFiles(files, true)
+-	}
+-
+-	if exitCode != 0 {
+-		t.Errorf("processing %s failed: exitCode = %d", path, exitCode)
+-	}
+-}
+-
+-var tests = []string{
+-	// individual files
+-	"exp/gotype/testdata/test1.go",
+-
+-	// directories
+-	// Note: Packages that don't typecheck yet are commented out.
+-	// Unless there is a comment next to the commented out packages,
+-	// the package doesn't typecheck due to errors in the shift
+-	// expression checker.
+-	"archive/tar",
+-	"archive/zip",
+-
+-	"bufio",
+-	"bytes",
+-
+-	// "compress/bzip2",
+-	"compress/flate",
+-	"compress/gzip",
+-	// "compress/lzw",
+-	"compress/zlib",
+-
+-	"container/heap",
+-	"container/list",
+-	"container/ring",
+-
+-	"crypto",
+-	"crypto/aes",
+-	"crypto/cipher",
+-	"crypto/des",
+-	"crypto/dsa",
+-	"crypto/ecdsa",
+-	"crypto/elliptic",
+-	"crypto/hmac",
+-	"crypto/md5",
+-	// "crypto/rand",
+-	"crypto/rc4",
+-	// "crypto/rsa", // intermittent failure: /home/gri/go2/src/pkg/crypto/rsa/pkcs1v15.go:21:27: undeclared name: io
+-	"crypto/sha1",
+-	"crypto/sha256",
+-	"crypto/sha512",
+-	"crypto/subtle",
+-	"crypto/tls",
+-	"crypto/x509",
+-	"crypto/x509/pkix",
+-
+-	"database/sql",
+-	"database/sql/driver",
+-
+-	// "debug/dwarf",
+-	"debug/elf",
+-	"debug/gosym",
+-	"debug/macho",
+-	"debug/pe",
+-
+-	"encoding/ascii85",
+-	// "encoding/asn1",
+-	"encoding/base32",
+-	"encoding/base64",
+-	"encoding/binary",
+-	"encoding/csv",
+-	"encoding/gob",
+-	"encoding/hex",
+-	"encoding/json",
+-	"encoding/pem",
+-	"encoding/xml",
+-
+-	"errors",
+-	"expvar",
+-	"flag",
+-	"fmt",
+-
+-	"exp/gotype",
+-
+-	"go/ast",
+-	"go/build",
+-	"go/doc",
+-	"go/format",
+-	"go/parser",
+-	"go/printer",
+-	"go/scanner",
+-	// "go/token",
+-	"go/types",
+-
+-	"hash/adler32",
+-	"hash/crc32",
+-	"hash/crc64",
+-	"hash/fnv",
+-
+-	"image",
+-	"image/color",
+-	"image/draw",
+-	"image/gif",
+-	// "image/jpeg",
+-	"image/png",
+-
+-	"index/suffixarray",
+-
+-	"io",
+-	"io/ioutil",
+-
+-	"log",
+-	"log/syslog",
+-
+-	// "math",
+-	//"math/big",
+-	"math/cmplx",
+-	"math/rand",
+-
+-	"mime",
+-	"mime/multipart",
+-
+-	// "net",
+-	"net/http",
+-	"net/http/cgi",
+-	"net/http/fcgi",
+-	"net/http/httptest",
+-	"net/http/httputil",
+-	"net/http/pprof",
+-	"net/mail",
+-	"net/rpc",
+-	"net/rpc/jsonrpc",
+-	"net/smtp",
+-	// "net/textproto",
+-	"net/url",
+-
+-	"path",
+-	"path/filepath",
+-
+-	"reflect",
+-
+-	"regexp",
+-	"regexp/syntax",
+-
+-	// "runtime",
+-	"runtime/cgo",
+-	"runtime/debug",
+-	"runtime/pprof",
+-
+-	"sort",
+-	// "strconv",
+-	"strings",
+-
+-	"sync",
+-	"sync/atomic",
+-
+-	// "syscall",
+-
+-	"testing",
+-	"testing/iotest",
+-	"testing/quick",
+-
+-	// "text/scanner",
+-	"text/tabwriter",
+-	"text/template",
+-	"text/template/parse",
+-
+-	"time",
+-	"unicode",
+-	"unicode/utf16",
+-	"unicode/utf8",
+-}
+-
+-func Test(t *testing.T) {
+-	for _, test := range tests {
+-		runTest(t, test)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/gotype/testdata/test1.go gcc-4.8.1/libgo/go/exp/gotype/testdata/test1.go
+--- gcc-4.8.1.orig/libgo/go/exp/gotype/testdata/test1.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/gotype/testdata/test1.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,27 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package test1
+-
+-func _() {
+-	// the scope of a local type declaration starts immediately after the type name
+-	type T struct{ _ *T }
+-}
+-
+-func _(x interface{}) {
+-	// the variable defined by a TypeSwitchGuard is declared in each TypeCaseClause
+-	switch t := x.(type) {
+-	case int:
+-		_ = t
+-	case float32:
+-		_ = t
+-	default:
+-		_ = t
+-	}
+-
+-	// the variable defined by a TypeSwitchGuard must not conflict with other
+-	// variables declared in the initial simple statement
+-	switch t := 0; t := x.(type) {
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/atom/atom.go gcc-4.8.1/libgo/go/exp/html/atom/atom.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/atom/atom.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/atom/atom.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,81 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package atom provides integer codes (also known as atoms) for a fixed set of
+-// frequently occurring HTML strings: tag names and attribute keys such as "p"
+-// and "id".
+-//
+-// Sharing an atom's name between all elements with the same tag can result in
+-// fewer string allocations when tokenizing and parsing HTML. Integer
+-// comparisons are also generally faster than string comparisons.
+-//
+-// The value of an atom's particular code is not guaranteed to stay the same
+-// between versions of this package. Neither is any ordering guaranteed:
+-// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to
+-// be dense. The only guarantees are that e.g. looking up "div" will yield
+-// atom.Div, calling atom.Div.String will return "div", and atom.Div != 0.
+-//
+-// TODO(rsc): When this package moves out of exp we need to freeze atom values
+-// across releases.
+-package atom
+-
+-// Atom is an integer code for a string. The zero value maps to "".
+-type Atom uint32
+-
+-// String returns the atom's name.
+-func (a Atom) String() string {
+-	start := uint32(a >> 8)
+-	n := uint32(a & 0xff)
+-	if start+n > uint32(len(atomText)) {
+-		return ""
+-	}
+-	return atomText[start : start+n]
+-}
+-
+-func (a Atom) string() string {
+-	return atomText[a>>8 : a>>8+a&0xff]
+-}
+-
+-// fnv computes the FNV hash with an arbitrary starting value h.
+-func fnv(h uint32, s []byte) uint32 {
+-	for i := range s {
+-		h ^= uint32(s[i])
+-		h *= 16777619
+-	}
+-	return h
+-}
+-
+-func match(s string, t []byte) bool {
+-	for i, c := range t {
+-		if s[i] != c {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-// Lookup returns the atom whose name is s. It returns zero if there is no
+-// such atom. The lookup is case sensitive.
+-func Lookup(s []byte) Atom {
+-	if len(s) == 0 || len(s) > maxAtomLen {
+-		return 0
+-	}
+-	h := fnv(hash0, s)
+-	if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {
+-		return a
+-	}
+-	if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) {
+-		return a
+-	}
+-	return 0
+-}
+-
+-// String returns a string whose contents are equal to s. In that sense, it is
+-// equivalent to string(s) but may be more efficient.
+-func String(s []byte) string {
+-	if a := Lookup(s); a != 0 {
+-		return a.String()
+-	}
+-	return string(s)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/atom/atom_test.go gcc-4.8.1/libgo/go/exp/html/atom/atom_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/atom/atom_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/atom/atom_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,109 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package atom
+-
+-import (
+-	"sort"
+-	"testing"
+-)
+-
+-func TestKnown(t *testing.T) {
+-	for _, s := range testAtomList {
+-		if atom := Lookup([]byte(s)); atom.String() != s {
+-			t.Errorf("Lookup(%q) = %#x (%q)", s, uint32(atom), atom.String())
+-		}
+-	}
+-}
+-
+-func TestHits(t *testing.T) {
+-	for _, a := range table {
+-		if a == 0 {
+-			continue
+-		}
+-		got := Lookup([]byte(a.String()))
+-		if got != a {
+-			t.Errorf("Lookup(%q) = %#x, want %#x", a.String(), uint32(got), uint32(a))
+-		}
+-	}
+-}
+-
+-func TestMisses(t *testing.T) {
+-	testCases := []string{
+-		"",
+-		"\x00",
+-		"\xff",
+-		"A",
+-		"DIV",
+-		"Div",
+-		"dIV",
+-		"aa",
+-		"a\x00",
+-		"ab",
+-		"abb",
+-		"abbr0",
+-		"abbr ",
+-		" abbr",
+-		" a",
+-		"acceptcharset",
+-		"acceptCharset",
+-		"accept_charset",
+-		"h0",
+-		"h1h2",
+-		"h7",
+-		"onClick",
+-		"Î»",
+-		// The following string has the same hash (0xa1d7fab7) as "onmouseover".
+-		"\x00\x00\x00\x00\x00\x50\x18\xae\x38\xd0\xb7",
+-	}
+-	for _, tc := range testCases {
+-		got := Lookup([]byte(tc))
+-		if got != 0 {
+-			t.Errorf("Lookup(%q): got %d, want 0", tc, got)
+-		}
+-	}
+-}
+-
+-func TestForeignObject(t *testing.T) {
+-	const (
+-		afo = Foreignobject
+-		afO = ForeignObject
+-		sfo = "foreignobject"
+-		sfO = "foreignObject"
+-	)
+-	if got := Lookup([]byte(sfo)); got != afo {
+-		t.Errorf("Lookup(%q): got %#v, want %#v", sfo, got, afo)
+-	}
+-	if got := Lookup([]byte(sfO)); got != afO {
+-		t.Errorf("Lookup(%q): got %#v, want %#v", sfO, got, afO)
+-	}
+-	if got := afo.String(); got != sfo {
+-		t.Errorf("Atom(%#v).String(): got %q, want %q", afo, got, sfo)
+-	}
+-	if got := afO.String(); got != sfO {
+-		t.Errorf("Atom(%#v).String(): got %q, want %q", afO, got, sfO)
+-	}
+-}
+-
+-func BenchmarkLookup(b *testing.B) {
+-	sortedTable := make([]string, 0, len(table))
+-	for _, a := range table {
+-		if a != 0 {
+-			sortedTable = append(sortedTable, a.String())
+-		}
+-	}
+-	sort.Strings(sortedTable)
+-
+-	x := make([][]byte, 1000)
+-	for i := range x {
+-		x[i] = []byte(sortedTable[i%len(sortedTable)])
+-	}
+-
+-	b.ResetTimer()
+-	for i := 0; i < b.N; i++ {
+-		for _, s := range x {
+-			Lookup(s)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/atom/gen.go gcc-4.8.1/libgo/go/exp/html/atom/gen.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/atom/gen.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/atom/gen.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,636 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-package main
+-
+-// This program generates table.go and table_test.go.
+-// Invoke as
+-//
+-//	go run gen.go |gofmt >table.go
+-//	go run gen.go -test |gofmt >table_test.go
+-
+-import (
+-	"flag"
+-	"fmt"
+-	"math/rand"
+-	"os"
+-	"sort"
+-	"strings"
+-)
+-
+-// identifier converts s to a Go exported identifier.
+-// It converts "div" to "Div" and "accept-charset" to "AcceptCharset".
+-func identifier(s string) string {
+-	b := make([]byte, 0, len(s))
+-	cap := true
+-	for _, c := range s {
+-		if c == '-' {
+-			cap = true
+-			continue
+-		}
+-		if cap && 'a' <= c && c <= 'z' {
+-			c -= 'a' - 'A'
+-		}
+-		cap = false
+-		b = append(b, byte(c))
+-	}
+-	return string(b)
+-}
+-
+-var test = flag.Bool("test", false, "generate table_test.go")
+-
+-func main() {
+-	flag.Parse()
+-
+-	var all []string
+-	all = append(all, elements...)
+-	all = append(all, attributes...)
+-	all = append(all, eventHandlers...)
+-	all = append(all, extra...)
+-	sort.Strings(all)
+-
+-	if *test {
+-		fmt.Printf("// generated by go run gen.go -test; DO NOT EDIT\n\n")
+-		fmt.Printf("package atom\n\n")
+-		fmt.Printf("var testAtomList = []string{\n")
+-		for _, s := range all {
+-			fmt.Printf("\t%q,\n", s)
+-		}
+-		fmt.Printf("}\n")
+-		return
+-	}
+-
+-	// uniq - lists have dups
+-	// compute max len too
+-	maxLen := 0
+-	w := 0
+-	for _, s := range all {
+-		if w == 0 || all[w-1] != s {
+-			if maxLen < len(s) {
+-				maxLen = len(s)
+-			}
+-			all[w] = s
+-			w++
+-		}
+-	}
+-	all = all[:w]
+-
+-	// Find hash that minimizes table size.
+-	var best *table
+-	for i := 0; i < 1000000; i++ {
+-		if best != nil && 1<<(best.k-1) < len(all) {
+-			break
+-		}
+-		h := rand.Uint32()
+-		for k := uint(0); k <= 16; k++ {
+-			if best != nil && k >= best.k {
+-				break
+-			}
+-			var t table
+-			if t.init(h, k, all) {
+-				best = &t
+-				break
+-			}
+-		}
+-	}
+-	if best == nil {
+-		fmt.Fprintf(os.Stderr, "failed to construct string table\n")
+-		os.Exit(1)
+-	}
+-
+-	// Lay out strings, using overlaps when possible.
+-	layout := append([]string{}, all...)
+-
+-	// Remove strings that are substrings of other strings
+-	for changed := true; changed; {
+-		changed = false
+-		for i, s := range layout {
+-			if s == "" {
+-				continue
+-			}
+-			for j, t := range layout {
+-				if i != j && t != "" && strings.Contains(s, t) {
+-					changed = true
+-					layout[j] = ""
+-				}
+-			}
+-		}
+-	}
+-
+-	// Join strings where one suffix matches another prefix.
+-	for {
+-		// Find best i, j, k such that layout[i][len-k:] == layout[j][:k],
+-		// maximizing overlap length k.
+-		besti := -1
+-		bestj := -1
+-		bestk := 0
+-		for i, s := range layout {
+-			if s == "" {
+-				continue
+-			}
+-			for j, t := range layout {
+-				if i == j {
+-					continue
+-				}
+-				for k := bestk + 1; k <= len(s) && k <= len(t); k++ {
+-					if s[len(s)-k:] == t[:k] {
+-						besti = i
+-						bestj = j
+-						bestk = k
+-					}
+-				}
+-			}
+-		}
+-		if bestk > 0 {
+-			layout[besti] += layout[bestj][bestk:]
+-			layout[bestj] = ""
+-			continue
+-		}
+-		break
+-	}
+-
+-	text := strings.Join(layout, "")
+-
+-	atom := map[string]uint32{}
+-	for _, s := range all {
+-		off := strings.Index(text, s)
+-		if off < 0 {
+-			panic("lost string " + s)
+-		}
+-		atom[s] = uint32(off<<8 | len(s))
+-	}
+-
+-	// Generate the Go code.
+-	fmt.Printf("// generated by go run gen.go; DO NOT EDIT\n\n")
+-	fmt.Printf("package atom\n\nconst (\n")
+-	for _, s := range all {
+-		fmt.Printf("\t%s Atom = %#x\n", identifier(s), atom[s])
+-	}
+-	fmt.Printf(")\n\n")
+-
+-	fmt.Printf("const hash0 = %#x\n\n", best.h0)
+-	fmt.Printf("const maxAtomLen = %d\n\n", maxLen)
+-
+-	fmt.Printf("var table = [1<<%d]Atom{\n", best.k)
+-	for i, s := range best.tab {
+-		if s == "" {
+-			continue
+-		}
+-		fmt.Printf("\t%#x: %#x, // %s\n", i, atom[s], s)
+-	}
+-	fmt.Printf("}\n")
+-	datasize := (1 << best.k) * 4
+-
+-	fmt.Printf("const atomText =\n")
+-	textsize := len(text)
+-	for len(text) > 60 {
+-		fmt.Printf("\t%q +\n", text[:60])
+-		text = text[60:]
+-	}
+-	fmt.Printf("\t%q\n\n", text)
+-
+-	fmt.Fprintf(os.Stderr, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize)
+-}
+-
+-type byLen []string
+-
+-func (x byLen) Less(i, j int) bool { return len(x[i]) > len(x[j]) }
+-func (x byLen) Swap(i, j int)      { x[i], x[j] = x[j], x[i] }
+-func (x byLen) Len() int           { return len(x) }
+-
+-// fnv computes the FNV hash with an arbitrary starting value h.
+-func fnv(h uint32, s string) uint32 {
+-	for i := 0; i < len(s); i++ {
+-		h ^= uint32(s[i])
+-		h *= 16777619
+-	}
+-	return h
+-}
+-
+-// A table represents an attempt at constructing the lookup table.
+-// The lookup table uses cuckoo hashing, meaning that each string
+-// can be found in one of two positions.
+-type table struct {
+-	h0   uint32
+-	k    uint
+-	mask uint32
+-	tab  []string
+-}
+-
+-// hash returns the two hashes for s.
+-func (t *table) hash(s string) (h1, h2 uint32) {
+-	h := fnv(t.h0, s)
+-	h1 = h & t.mask
+-	h2 = (h >> 16) & t.mask
+-	return
+-}
+-
+-// init initializes the table with the given parameters.
+-// h0 is the initial hash value,
+-// k is the number of bits of hash value to use, and
+-// x is the list of strings to store in the table.
+-// init returns false if the table cannot be constructed.
+-func (t *table) init(h0 uint32, k uint, x []string) bool {
+-	t.h0 = h0
+-	t.k = k
+-	t.tab = make([]string, 1<<k)
+-	t.mask = 1<<k - 1
+-	for _, s := range x {
+-		if !t.insert(s) {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-// insert inserts s in the table.
+-func (t *table) insert(s string) bool {
+-	h1, h2 := t.hash(s)
+-	if t.tab[h1] == "" {
+-		t.tab[h1] = s
+-		return true
+-	}
+-	if t.tab[h2] == "" {
+-		t.tab[h2] = s
+-		return true
+-	}
+-	if t.push(h1, 0) {
+-		t.tab[h1] = s
+-		return true
+-	}
+-	if t.push(h2, 0) {
+-		t.tab[h2] = s
+-		return true
+-	}
+-	return false
+-}
+-
+-// push attempts to push aside the entry in slot i.
+-func (t *table) push(i uint32, depth int) bool {
+-	if depth > len(t.tab) {
+-		return false
+-	}
+-	s := t.tab[i]
+-	h1, h2 := t.hash(s)
+-	j := h1 + h2 - i
+-	if t.tab[j] != "" && !t.push(j, depth+1) {
+-		return false
+-	}
+-	t.tab[j] = s
+-	return true
+-}
+-
+-// The lists of element names and attribute keys were taken from
+-// http://www.whatwg.org/specs/web-apps/current-work/multipage/section-index.html
+-// as of the "HTML Living Standard - Last Updated 30 May 2012" version.
+-
+-var elements = []string{
+-	"a",
+-	"abbr",
+-	"address",
+-	"area",
+-	"article",
+-	"aside",
+-	"audio",
+-	"b",
+-	"base",
+-	"bdi",
+-	"bdo",
+-	"blockquote",
+-	"body",
+-	"br",
+-	"button",
+-	"canvas",
+-	"caption",
+-	"cite",
+-	"code",
+-	"col",
+-	"colgroup",
+-	"command",
+-	"data",
+-	"datalist",
+-	"dd",
+-	"del",
+-	"details",
+-	"dfn",
+-	"dialog",
+-	"div",
+-	"dl",
+-	"dt",
+-	"em",
+-	"embed",
+-	"fieldset",
+-	"figcaption",
+-	"figure",
+-	"footer",
+-	"form",
+-	"h1",
+-	"h2",
+-	"h3",
+-	"h4",
+-	"h5",
+-	"h6",
+-	"head",
+-	"header",
+-	"hgroup",
+-	"hr",
+-	"html",
+-	"i",
+-	"iframe",
+-	"img",
+-	"input",
+-	"ins",
+-	"kbd",
+-	"keygen",
+-	"label",
+-	"legend",
+-	"li",
+-	"link",
+-	"map",
+-	"mark",
+-	"menu",
+-	"meta",
+-	"meter",
+-	"nav",
+-	"noscript",
+-	"object",
+-	"ol",
+-	"optgroup",
+-	"option",
+-	"output",
+-	"p",
+-	"param",
+-	"pre",
+-	"progress",
+-	"q",
+-	"rp",
+-	"rt",
+-	"ruby",
+-	"s",
+-	"samp",
+-	"script",
+-	"section",
+-	"select",
+-	"small",
+-	"source",
+-	"span",
+-	"strong",
+-	"style",
+-	"sub",
+-	"summary",
+-	"sup",
+-	"table",
+-	"tbody",
+-	"td",
+-	"textarea",
+-	"tfoot",
+-	"th",
+-	"thead",
+-	"time",
+-	"title",
+-	"tr",
+-	"track",
+-	"u",
+-	"ul",
+-	"var",
+-	"video",
+-	"wbr",
+-}
+-
+-var attributes = []string{
+-	"accept",
+-	"accept-charset",
+-	"accesskey",
+-	"action",
+-	"alt",
+-	"async",
+-	"autocomplete",
+-	"autofocus",
+-	"autoplay",
+-	"border",
+-	"challenge",
+-	"charset",
+-	"checked",
+-	"cite",
+-	"class",
+-	"cols",
+-	"colspan",
+-	"command",
+-	"content",
+-	"contenteditable",
+-	"contextmenu",
+-	"controls",
+-	"coords",
+-	"crossorigin",
+-	"data",
+-	"datetime",
+-	"default",
+-	"defer",
+-	"dir",
+-	"dirname",
+-	"disabled",
+-	"download",
+-	"draggable",
+-	"dropzone",
+-	"enctype",
+-	"for",
+-	"form",
+-	"formaction",
+-	"formenctype",
+-	"formmethod",
+-	"formnovalidate",
+-	"formtarget",
+-	"headers",
+-	"height",
+-	"hidden",
+-	"high",
+-	"href",
+-	"hreflang",
+-	"http-equiv",
+-	"icon",
+-	"id",
+-	"inert",
+-	"ismap",
+-	"itemid",
+-	"itemprop",
+-	"itemref",
+-	"itemscope",
+-	"itemtype",
+-	"keytype",
+-	"kind",
+-	"label",
+-	"lang",
+-	"list",
+-	"loop",
+-	"low",
+-	"manifest",
+-	"max",
+-	"maxlength",
+-	"media",
+-	"mediagroup",
+-	"method",
+-	"min",
+-	"multiple",
+-	"muted",
+-	"name",
+-	"novalidate",
+-	"open",
+-	"optimum",
+-	"pattern",
+-	"ping",
+-	"placeholder",
+-	"poster",
+-	"preload",
+-	"radiogroup",
+-	"readonly",
+-	"rel",
+-	"required",
+-	"reversed",
+-	"rows",
+-	"rowspan",
+-	"sandbox",
+-	"spellcheck",
+-	"scope",
+-	"scoped",
+-	"seamless",
+-	"selected",
+-	"shape",
+-	"size",
+-	"sizes",
+-	"span",
+-	"src",
+-	"srcdoc",
+-	"srclang",
+-	"start",
+-	"step",
+-	"style",
+-	"tabindex",
+-	"target",
+-	"title",
+-	"translate",
+-	"type",
+-	"typemustmatch",
+-	"usemap",
+-	"value",
+-	"width",
+-	"wrap",
+-}
+-
+-var eventHandlers = []string{
+-	"onabort",
+-	"onafterprint",
+-	"onbeforeprint",
+-	"onbeforeunload",
+-	"onblur",
+-	"oncancel",
+-	"oncanplay",
+-	"oncanplaythrough",
+-	"onchange",
+-	"onclick",
+-	"onclose",
+-	"oncontextmenu",
+-	"oncuechange",
+-	"ondblclick",
+-	"ondrag",
+-	"ondragend",
+-	"ondragenter",
+-	"ondragleave",
+-	"ondragover",
+-	"ondragstart",
+-	"ondrop",
+-	"ondurationchange",
+-	"onemptied",
+-	"onended",
+-	"onerror",
+-	"onfocus",
+-	"onhashchange",
+-	"oninput",
+-	"oninvalid",
+-	"onkeydown",
+-	"onkeypress",
+-	"onkeyup",
+-	"onload",
+-	"onloadeddata",
+-	"onloadedmetadata",
+-	"onloadstart",
+-	"onmessage",
+-	"onmousedown",
+-	"onmousemove",
+-	"onmouseout",
+-	"onmouseover",
+-	"onmouseup",
+-	"onmousewheel",
+-	"onoffline",
+-	"ononline",
+-	"onpagehide",
+-	"onpageshow",
+-	"onpause",
+-	"onplay",
+-	"onplaying",
+-	"onpopstate",
+-	"onprogress",
+-	"onratechange",
+-	"onreset",
+-	"onresize",
+-	"onscroll",
+-	"onseeked",
+-	"onseeking",
+-	"onselect",
+-	"onshow",
+-	"onstalled",
+-	"onstorage",
+-	"onsubmit",
+-	"onsuspend",
+-	"ontimeupdate",
+-	"onunload",
+-	"onvolumechange",
+-	"onwaiting",
+-}
+-
+-// extra are ad-hoc values not covered by any of the lists above.
+-var extra = []string{
+-	"align",
+-	"annotation",
+-	"annotation-xml",
+-	"applet",
+-	"basefont",
+-	"bgsound",
+-	"big",
+-	"blink",
+-	"center",
+-	"color",
+-	"desc",
+-	"face",
+-	"font",
+-	"foreignObject", // HTML is case-insensitive, but SVG-embedded-in-HTML is case-sensitive.
+-	"foreignobject",
+-	"frame",
+-	"frameset",
+-	"image",
+-	"isindex",
+-	"listing",
+-	"malignmark",
+-	"marquee",
+-	"math",
+-	"mglyph",
+-	"mi",
+-	"mn",
+-	"mo",
+-	"ms",
+-	"mtext",
+-	"nobr",
+-	"noembed",
+-	"noframes",
+-	"plaintext",
+-	"prompt",
+-	"public",
+-	"spacer",
+-	"strike",
+-	"svg",
+-	"system",
+-	"tt",
+-	"xmp",
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/atom/table.go gcc-4.8.1/libgo/go/exp/html/atom/table.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/atom/table.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/atom/table.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,694 +0,0 @@
+-// generated by go run gen.go; DO NOT EDIT
+-
+-package atom
+-
+-const (
+-	A                Atom = 0x1
+-	Abbr             Atom = 0x4
+-	Accept           Atom = 0x2106
+-	AcceptCharset    Atom = 0x210e
+-	Accesskey        Atom = 0x3309
+-	Action           Atom = 0x21b06
+-	Address          Atom = 0x5d507
+-	Align            Atom = 0x1105
+-	Alt              Atom = 0x4503
+-	Annotation       Atom = 0x18d0a
+-	AnnotationXml    Atom = 0x18d0e
+-	Applet           Atom = 0x2d106
+-	Area             Atom = 0x31804
+-	Article          Atom = 0x39907
+-	Aside            Atom = 0x4f05
+-	Async            Atom = 0x9305
+-	Audio            Atom = 0xaf05
+-	Autocomplete     Atom = 0xd50c
+-	Autofocus        Atom = 0xe109
+-	Autoplay         Atom = 0x10c08
+-	B                Atom = 0x101
+-	Base             Atom = 0x11404
+-	Basefont         Atom = 0x11408
+-	Bdi              Atom = 0x1a03
+-	Bdo              Atom = 0x12503
+-	Bgsound          Atom = 0x13807
+-	Big              Atom = 0x14403
+-	Blink            Atom = 0x14705
+-	Blockquote       Atom = 0x14c0a
+-	Body             Atom = 0x2f04
+-	Border           Atom = 0x15606
+-	Br               Atom = 0x202
+-	Button           Atom = 0x15c06
+-	Canvas           Atom = 0x4b06
+-	Caption          Atom = 0x1e007
+-	Center           Atom = 0x2df06
+-	Challenge        Atom = 0x23e09
+-	Charset          Atom = 0x2807
+-	Checked          Atom = 0x33f07
+-	Cite             Atom = 0x9704
+-	Class            Atom = 0x3d905
+-	Code             Atom = 0x16f04
+-	Col              Atom = 0x17603
+-	Colgroup         Atom = 0x17608
+-	Color            Atom = 0x18305
+-	Cols             Atom = 0x18804
+-	Colspan          Atom = 0x18807
+-	Command          Atom = 0x19b07
+-	Content          Atom = 0x42c07
+-	Contenteditable  Atom = 0x42c0f
+-	Contextmenu      Atom = 0x3480b
+-	Controls         Atom = 0x1ae08
+-	Coords           Atom = 0x1ba06
+-	Crossorigin      Atom = 0x1c40b
+-	Data             Atom = 0x44304
+-	Datalist         Atom = 0x44308
+-	Datetime         Atom = 0x25b08
+-	Dd               Atom = 0x28802
+-	Default          Atom = 0x5207
+-	Defer            Atom = 0x17105
+-	Del              Atom = 0x4d603
+-	Desc             Atom = 0x4804
+-	Details          Atom = 0x6507
+-	Dfn              Atom = 0x8303
+-	Dialog           Atom = 0x1b06
+-	Dir              Atom = 0x9d03
+-	Dirname          Atom = 0x9d07
+-	Disabled         Atom = 0x10008
+-	Div              Atom = 0x10703
+-	Dl               Atom = 0x13e02
+-	Download         Atom = 0x40908
+-	Draggable        Atom = 0x1a109
+-	Dropzone         Atom = 0x3a208
+-	Dt               Atom = 0x4e402
+-	Em               Atom = 0x7f02
+-	Embed            Atom = 0x7f05
+-	Enctype          Atom = 0x23007
+-	Face             Atom = 0x2dd04
+-	Fieldset         Atom = 0x1d508
+-	Figcaption       Atom = 0x1dd0a
+-	Figure           Atom = 0x1f106
+-	Font             Atom = 0x11804
+-	Footer           Atom = 0x5906
+-	For              Atom = 0x1fd03
+-	ForeignObject    Atom = 0x1fd0d
+-	Foreignobject    Atom = 0x20a0d
+-	Form             Atom = 0x21704
+-	Formaction       Atom = 0x2170a
+-	Formenctype      Atom = 0x22c0b
+-	Formmethod       Atom = 0x2470a
+-	Formnovalidate   Atom = 0x2510e
+-	Formtarget       Atom = 0x2660a
+-	Frame            Atom = 0x8705
+-	Frameset         Atom = 0x8708
+-	H1               Atom = 0x13602
+-	H2               Atom = 0x29602
+-	H3               Atom = 0x2c502
+-	H4               Atom = 0x30e02
+-	H5               Atom = 0x4e602
+-	H6               Atom = 0x27002
+-	Head             Atom = 0x2fa04
+-	Header           Atom = 0x2fa06
+-	Headers          Atom = 0x2fa07
+-	Height           Atom = 0x27206
+-	Hgroup           Atom = 0x27a06
+-	Hidden           Atom = 0x28606
+-	High             Atom = 0x29304
+-	Hr               Atom = 0x13102
+-	Href             Atom = 0x29804
+-	Hreflang         Atom = 0x29808
+-	Html             Atom = 0x27604
+-	HttpEquiv        Atom = 0x2a00a
+-	I                Atom = 0x601
+-	Icon             Atom = 0x42b04
+-	Id               Atom = 0x5102
+-	Iframe           Atom = 0x2b406
+-	Image            Atom = 0x2ba05
+-	Img              Atom = 0x2bf03
+-	Inert            Atom = 0x4c105
+-	Input            Atom = 0x3f605
+-	Ins              Atom = 0x1cd03
+-	Isindex          Atom = 0x2c707
+-	Ismap            Atom = 0x2ce05
+-	Itemid           Atom = 0x9806
+-	Itemprop         Atom = 0x57e08
+-	Itemref          Atom = 0x2d707
+-	Itemscope        Atom = 0x2e509
+-	Itemtype         Atom = 0x2ef08
+-	Kbd              Atom = 0x1903
+-	Keygen           Atom = 0x3906
+-	Keytype          Atom = 0x51207
+-	Kind             Atom = 0xfd04
+-	Label            Atom = 0xba05
+-	Lang             Atom = 0x29c04
+-	Legend           Atom = 0x1a806
+-	Li               Atom = 0x1202
+-	Link             Atom = 0x14804
+-	List             Atom = 0x44704
+-	Listing          Atom = 0x44707
+-	Loop             Atom = 0xbe04
+-	Low              Atom = 0x13f03
+-	Malignmark       Atom = 0x100a
+-	Manifest         Atom = 0x5b608
+-	Map              Atom = 0x2d003
+-	Mark             Atom = 0x1604
+-	Marquee          Atom = 0x5f207
+-	Math             Atom = 0x2f704
+-	Max              Atom = 0x30603
+-	Maxlength        Atom = 0x30609
+-	Media            Atom = 0xa205
+-	Mediagroup       Atom = 0xa20a
+-	Menu             Atom = 0x34f04
+-	Meta             Atom = 0x45604
+-	Meter            Atom = 0x26105
+-	Method           Atom = 0x24b06
+-	Mglyph           Atom = 0x2c006
+-	Mi               Atom = 0x9b02
+-	Min              Atom = 0x31003
+-	Mn               Atom = 0x25402
+-	Mo               Atom = 0x47a02
+-	Ms               Atom = 0x2e802
+-	Mtext            Atom = 0x31305
+-	Multiple         Atom = 0x32108
+-	Muted            Atom = 0x32905
+-	Name             Atom = 0xa004
+-	Nav              Atom = 0x3e03
+-	Nobr             Atom = 0x7404
+-	Noembed          Atom = 0x7d07
+-	Noframes         Atom = 0x8508
+-	Noscript         Atom = 0x28b08
+-	Novalidate       Atom = 0x2550a
+-	Object           Atom = 0x21106
+-	Ol               Atom = 0xcd02
+-	Onabort          Atom = 0x16007
+-	Onafterprint     Atom = 0x1e50c
+-	Onbeforeprint    Atom = 0x21f0d
+-	Onbeforeunload   Atom = 0x5c90e
+-	Onblur           Atom = 0x3e206
+-	Oncancel         Atom = 0xb308
+-	Oncanplay        Atom = 0x12709
+-	Oncanplaythrough Atom = 0x12710
+-	Onchange         Atom = 0x3b808
+-	Onclick          Atom = 0x2ad07
+-	Onclose          Atom = 0x32e07
+-	Oncontextmenu    Atom = 0x3460d
+-	Oncuechange      Atom = 0x3530b
+-	Ondblclick       Atom = 0x35e0a
+-	Ondrag           Atom = 0x36806
+-	Ondragend        Atom = 0x36809
+-	Ondragenter      Atom = 0x3710b
+-	Ondragleave      Atom = 0x37c0b
+-	Ondragover       Atom = 0x3870a
+-	Ondragstart      Atom = 0x3910b
+-	Ondrop           Atom = 0x3a006
+-	Ondurationchange Atom = 0x3b010
+-	Onemptied        Atom = 0x3a709
+-	Onended          Atom = 0x3c007
+-	Onerror          Atom = 0x3c707
+-	Onfocus          Atom = 0x3ce07
+-	Onhashchange     Atom = 0x3e80c
+-	Oninput          Atom = 0x3f407
+-	Oninvalid        Atom = 0x3fb09
+-	Onkeydown        Atom = 0x40409
+-	Onkeypress       Atom = 0x4110a
+-	Onkeyup          Atom = 0x42107
+-	Onload           Atom = 0x43b06
+-	Onloadeddata     Atom = 0x43b0c
+-	Onloadedmetadata Atom = 0x44e10
+-	Onloadstart      Atom = 0x4640b
+-	Onmessage        Atom = 0x46f09
+-	Onmousedown      Atom = 0x4780b
+-	Onmousemove      Atom = 0x4830b
+-	Onmouseout       Atom = 0x48e0a
+-	Onmouseover      Atom = 0x49b0b
+-	Onmouseup        Atom = 0x4a609
+-	Onmousewheel     Atom = 0x4af0c
+-	Onoffline        Atom = 0x4bb09
+-	Ononline         Atom = 0x4c608
+-	Onpagehide       Atom = 0x4ce0a
+-	Onpageshow       Atom = 0x4d90a
+-	Onpause          Atom = 0x4e807
+-	Onplay           Atom = 0x4f206
+-	Onplaying        Atom = 0x4f209
+-	Onpopstate       Atom = 0x4fb0a
+-	Onprogress       Atom = 0x5050a
+-	Onratechange     Atom = 0x5190c
+-	Onreset          Atom = 0x52507
+-	Onresize         Atom = 0x52c08
+-	Onscroll         Atom = 0x53a08
+-	Onseeked         Atom = 0x54208
+-	Onseeking        Atom = 0x54a09
+-	Onselect         Atom = 0x55308
+-	Onshow           Atom = 0x55d06
+-	Onstalled        Atom = 0x56609
+-	Onstorage        Atom = 0x56f09
+-	Onsubmit         Atom = 0x57808
+-	Onsuspend        Atom = 0x58809
+-	Ontimeupdate     Atom = 0x1190c
+-	Onunload         Atom = 0x59108
+-	Onvolumechange   Atom = 0x5990e
+-	Onwaiting        Atom = 0x5a709
+-	Open             Atom = 0x58404
+-	Optgroup         Atom = 0xc008
+-	Optimum          Atom = 0x5b007
+-	Option           Atom = 0x5c506
+-	Output           Atom = 0x49506
+-	P                Atom = 0xc01
+-	Param            Atom = 0xc05
+-	Pattern          Atom = 0x6e07
+-	Ping             Atom = 0xab04
+-	Placeholder      Atom = 0xc70b
+-	Plaintext        Atom = 0xf109
+-	Poster           Atom = 0x17d06
+-	Pre              Atom = 0x27f03
+-	Preload          Atom = 0x27f07
+-	Progress         Atom = 0x50708
+-	Prompt           Atom = 0x5bf06
+-	Public           Atom = 0x42706
+-	Q                Atom = 0x15101
+-	Radiogroup       Atom = 0x30a
+-	Readonly         Atom = 0x31908
+-	Rel              Atom = 0x28003
+-	Required         Atom = 0x1f508
+-	Reversed         Atom = 0x5e08
+-	Rows             Atom = 0x7704
+-	Rowspan          Atom = 0x7707
+-	Rp               Atom = 0x1eb02
+-	Rt               Atom = 0x16502
+-	Ruby             Atom = 0xd104
+-	S                Atom = 0x2c01
+-	Samp             Atom = 0x6b04
+-	Sandbox          Atom = 0xe907
+-	Scope            Atom = 0x2e905
+-	Scoped           Atom = 0x2e906
+-	Script           Atom = 0x28d06
+-	Seamless         Atom = 0x33308
+-	Section          Atom = 0x3dd07
+-	Select           Atom = 0x55506
+-	Selected         Atom = 0x55508
+-	Shape            Atom = 0x1b505
+-	Size             Atom = 0x53004
+-	Sizes            Atom = 0x53005
+-	Small            Atom = 0x1bf05
+-	Source           Atom = 0x1cf06
+-	Spacer           Atom = 0x30006
+-	Span             Atom = 0x7a04
+-	Spellcheck       Atom = 0x33a0a
+-	Src              Atom = 0x3d403
+-	Srcdoc           Atom = 0x3d406
+-	Srclang          Atom = 0x41a07
+-	Start            Atom = 0x39705
+-	Step             Atom = 0x5bc04
+-	Strike           Atom = 0x50e06
+-	Strong           Atom = 0x53406
+-	Style            Atom = 0x5db05
+-	Sub              Atom = 0x57a03
+-	Summary          Atom = 0x5e007
+-	Sup              Atom = 0x5e703
+-	Svg              Atom = 0x5ea03
+-	System           Atom = 0x5ed06
+-	Tabindex         Atom = 0x45c08
+-	Table            Atom = 0x43605
+-	Target           Atom = 0x26a06
+-	Tbody            Atom = 0x2e05
+-	Td               Atom = 0x4702
+-	Textarea         Atom = 0x31408
+-	Tfoot            Atom = 0x5805
+-	Th               Atom = 0x13002
+-	Thead            Atom = 0x2f905
+-	Time             Atom = 0x11b04
+-	Title            Atom = 0x8e05
+-	Tr               Atom = 0xf902
+-	Track            Atom = 0xf905
+-	Translate        Atom = 0x16609
+-	Tt               Atom = 0x7002
+-	Type             Atom = 0x23304
+-	Typemustmatch    Atom = 0x2330d
+-	U                Atom = 0xb01
+-	Ul               Atom = 0x5602
+-	Usemap           Atom = 0x4ec06
+-	Value            Atom = 0x4005
+-	Var              Atom = 0x10903
+-	Video            Atom = 0x2a905
+-	Wbr              Atom = 0x14103
+-	Width            Atom = 0x4e205
+-	Wrap             Atom = 0x56204
+-	Xmp              Atom = 0xef03
+-)
+-
+-const hash0 = 0xc17da63e
+-
+-const maxAtomLen = 16
+-
+-var table = [1 << 9]Atom{
+-	0x1:   0x4830b, // onmousemove
+-	0x2:   0x5a709, // onwaiting
+-	0x4:   0x5bf06, // prompt
+-	0x7:   0x5b007, // optimum
+-	0x8:   0x1604,  // mark
+-	0xa:   0x2d707, // itemref
+-	0xb:   0x4d90a, // onpageshow
+-	0xc:   0x55506, // select
+-	0xd:   0x1a109, // draggable
+-	0xe:   0x3e03,  // nav
+-	0xf:   0x19b07, // command
+-	0x11:  0xb01,   // u
+-	0x14:  0x2fa07, // headers
+-	0x15:  0x44308, // datalist
+-	0x17:  0x6b04,  // samp
+-	0x1a:  0x40409, // onkeydown
+-	0x1b:  0x53a08, // onscroll
+-	0x1c:  0x17603, // col
+-	0x20:  0x57e08, // itemprop
+-	0x21:  0x2a00a, // http-equiv
+-	0x22:  0x5e703, // sup
+-	0x24:  0x1f508, // required
+-	0x2b:  0x27f07, // preload
+-	0x2c:  0x21f0d, // onbeforeprint
+-	0x2d:  0x3710b, // ondragenter
+-	0x2e:  0x4e402, // dt
+-	0x2f:  0x57808, // onsubmit
+-	0x30:  0x13102, // hr
+-	0x31:  0x3460d, // oncontextmenu
+-	0x33:  0x2ba05, // image
+-	0x34:  0x4e807, // onpause
+-	0x35:  0x27a06, // hgroup
+-	0x36:  0xab04,  // ping
+-	0x37:  0x55308, // onselect
+-	0x3a:  0x10703, // div
+-	0x40:  0x9b02,  // mi
+-	0x41:  0x33308, // seamless
+-	0x42:  0x2807,  // charset
+-	0x43:  0x5102,  // id
+-	0x44:  0x4fb0a, // onpopstate
+-	0x45:  0x4d603, // del
+-	0x46:  0x5f207, // marquee
+-	0x47:  0x3309,  // accesskey
+-	0x49:  0x5906,  // footer
+-	0x4a:  0x2d106, // applet
+-	0x4b:  0x2ce05, // ismap
+-	0x51:  0x34f04, // menu
+-	0x52:  0x2f04,  // body
+-	0x55:  0x8708,  // frameset
+-	0x56:  0x52507, // onreset
+-	0x57:  0x14705, // blink
+-	0x58:  0x8e05,  // title
+-	0x59:  0x39907, // article
+-	0x5b:  0x13002, // th
+-	0x5d:  0x15101, // q
+-	0x5e:  0x58404, // open
+-	0x5f:  0x31804, // area
+-	0x61:  0x43b06, // onload
+-	0x62:  0x3f605, // input
+-	0x63:  0x11404, // base
+-	0x64:  0x18807, // colspan
+-	0x65:  0x51207, // keytype
+-	0x66:  0x13e02, // dl
+-	0x68:  0x1d508, // fieldset
+-	0x6a:  0x31003, // min
+-	0x6b:  0x10903, // var
+-	0x6f:  0x2fa06, // header
+-	0x70:  0x16502, // rt
+-	0x71:  0x17608, // colgroup
+-	0x72:  0x25402, // mn
+-	0x74:  0x16007, // onabort
+-	0x75:  0x3906,  // keygen
+-	0x76:  0x4bb09, // onoffline
+-	0x77:  0x23e09, // challenge
+-	0x78:  0x2d003, // map
+-	0x7a:  0x30e02, // h4
+-	0x7b:  0x3c707, // onerror
+-	0x7c:  0x30609, // maxlength
+-	0x7d:  0x31305, // mtext
+-	0x7e:  0x5805,  // tfoot
+-	0x7f:  0x11804, // font
+-	0x80:  0x100a,  // malignmark
+-	0x81:  0x45604, // meta
+-	0x82:  0x9305,  // async
+-	0x83:  0x2c502, // h3
+-	0x84:  0x28802, // dd
+-	0x85:  0x29804, // href
+-	0x86:  0xa20a,  // mediagroup
+-	0x87:  0x1ba06, // coords
+-	0x88:  0x41a07, // srclang
+-	0x89:  0x35e0a, // ondblclick
+-	0x8a:  0x4005,  // value
+-	0x8c:  0xb308,  // oncancel
+-	0x8e:  0x33a0a, // spellcheck
+-	0x8f:  0x8705,  // frame
+-	0x91:  0x14403, // big
+-	0x94:  0x21b06, // action
+-	0x95:  0x9d03,  // dir
+-	0x97:  0x31908, // readonly
+-	0x99:  0x43605, // table
+-	0x9a:  0x5e007, // summary
+-	0x9b:  0x14103, // wbr
+-	0x9c:  0x30a,   // radiogroup
+-	0x9d:  0xa004,  // name
+-	0x9f:  0x5ed06, // system
+-	0xa1:  0x18305, // color
+-	0xa2:  0x4b06,  // canvas
+-	0xa3:  0x27604, // html
+-	0xa5:  0x54a09, // onseeking
+-	0xac:  0x1b505, // shape
+-	0xad:  0x28003, // rel
+-	0xae:  0x12710, // oncanplaythrough
+-	0xaf:  0x3870a, // ondragover
+-	0xb1:  0x1fd0d, // foreignObject
+-	0xb3:  0x7704,  // rows
+-	0xb6:  0x44707, // listing
+-	0xb7:  0x49506, // output
+-	0xb9:  0x3480b, // contextmenu
+-	0xbb:  0x13f03, // low
+-	0xbc:  0x1eb02, // rp
+-	0xbd:  0x58809, // onsuspend
+-	0xbe:  0x15c06, // button
+-	0xbf:  0x4804,  // desc
+-	0xc1:  0x3dd07, // section
+-	0xc2:  0x5050a, // onprogress
+-	0xc3:  0x56f09, // onstorage
+-	0xc4:  0x2f704, // math
+-	0xc5:  0x4f206, // onplay
+-	0xc7:  0x5602,  // ul
+-	0xc8:  0x6e07,  // pattern
+-	0xc9:  0x4af0c, // onmousewheel
+-	0xca:  0x36809, // ondragend
+-	0xcb:  0xd104,  // ruby
+-	0xcc:  0xc01,   // p
+-	0xcd:  0x32e07, // onclose
+-	0xce:  0x26105, // meter
+-	0xcf:  0x13807, // bgsound
+-	0xd2:  0x27206, // height
+-	0xd4:  0x101,   // b
+-	0xd5:  0x2ef08, // itemtype
+-	0xd8:  0x1e007, // caption
+-	0xd9:  0x10008, // disabled
+-	0xdc:  0x5ea03, // svg
+-	0xdd:  0x1bf05, // small
+-	0xde:  0x44304, // data
+-	0xe0:  0x4c608, // ononline
+-	0xe1:  0x2c006, // mglyph
+-	0xe3:  0x7f05,  // embed
+-	0xe4:  0xf902,  // tr
+-	0xe5:  0x4640b, // onloadstart
+-	0xe7:  0x3b010, // ondurationchange
+-	0xed:  0x12503, // bdo
+-	0xee:  0x4702,  // td
+-	0xef:  0x4f05,  // aside
+-	0xf0:  0x29602, // h2
+-	0xf1:  0x50708, // progress
+-	0xf2:  0x14c0a, // blockquote
+-	0xf4:  0xba05,  // label
+-	0xf5:  0x601,   // i
+-	0xf7:  0x7707,  // rowspan
+-	0xfb:  0x4f209, // onplaying
+-	0xfd:  0x2bf03, // img
+-	0xfe:  0xc008,  // optgroup
+-	0xff:  0x42c07, // content
+-	0x101: 0x5190c, // onratechange
+-	0x103: 0x3e80c, // onhashchange
+-	0x104: 0x6507,  // details
+-	0x106: 0x40908, // download
+-	0x109: 0xe907,  // sandbox
+-	0x10b: 0x42c0f, // contenteditable
+-	0x10d: 0x37c0b, // ondragleave
+-	0x10e: 0x2106,  // accept
+-	0x10f: 0x55508, // selected
+-	0x112: 0x2170a, // formaction
+-	0x113: 0x2df06, // center
+-	0x115: 0x44e10, // onloadedmetadata
+-	0x116: 0x14804, // link
+-	0x117: 0x11b04, // time
+-	0x118: 0x1c40b, // crossorigin
+-	0x119: 0x3ce07, // onfocus
+-	0x11a: 0x56204, // wrap
+-	0x11b: 0x42b04, // icon
+-	0x11d: 0x2a905, // video
+-	0x11e: 0x3d905, // class
+-	0x121: 0x5990e, // onvolumechange
+-	0x122: 0x3e206, // onblur
+-	0x123: 0x2e509, // itemscope
+-	0x124: 0x5db05, // style
+-	0x127: 0x42706, // public
+-	0x129: 0x2510e, // formnovalidate
+-	0x12a: 0x55d06, // onshow
+-	0x12c: 0x16609, // translate
+-	0x12d: 0x9704,  // cite
+-	0x12e: 0x2e802, // ms
+-	0x12f: 0x1190c, // ontimeupdate
+-	0x130: 0xfd04,  // kind
+-	0x131: 0x2660a, // formtarget
+-	0x135: 0x3c007, // onended
+-	0x136: 0x28606, // hidden
+-	0x137: 0x2c01,  // s
+-	0x139: 0x2470a, // formmethod
+-	0x13a: 0x44704, // list
+-	0x13c: 0x27002, // h6
+-	0x13d: 0xcd02,  // ol
+-	0x13e: 0x3530b, // oncuechange
+-	0x13f: 0x20a0d, // foreignobject
+-	0x143: 0x5c90e, // onbeforeunload
+-	0x145: 0x3a709, // onemptied
+-	0x146: 0x17105, // defer
+-	0x147: 0xef03,  // xmp
+-	0x148: 0xaf05,  // audio
+-	0x149: 0x1903,  // kbd
+-	0x14c: 0x46f09, // onmessage
+-	0x14d: 0x5c506, // option
+-	0x14e: 0x4503,  // alt
+-	0x14f: 0x33f07, // checked
+-	0x150: 0x10c08, // autoplay
+-	0x152: 0x202,   // br
+-	0x153: 0x2550a, // novalidate
+-	0x156: 0x7d07,  // noembed
+-	0x159: 0x2ad07, // onclick
+-	0x15a: 0x4780b, // onmousedown
+-	0x15b: 0x3b808, // onchange
+-	0x15e: 0x3fb09, // oninvalid
+-	0x15f: 0x2e906, // scoped
+-	0x160: 0x1ae08, // controls
+-	0x161: 0x32905, // muted
+-	0x163: 0x4ec06, // usemap
+-	0x164: 0x1dd0a, // figcaption
+-	0x165: 0x36806, // ondrag
+-	0x166: 0x29304, // high
+-	0x168: 0x3d403, // src
+-	0x169: 0x17d06, // poster
+-	0x16b: 0x18d0e, // annotation-xml
+-	0x16c: 0x5bc04, // step
+-	0x16d: 0x4,     // abbr
+-	0x16e: 0x1b06,  // dialog
+-	0x170: 0x1202,  // li
+-	0x172: 0x47a02, // mo
+-	0x175: 0x1fd03, // for
+-	0x176: 0x1cd03, // ins
+-	0x178: 0x53004, // size
+-	0x17a: 0x5207,  // default
+-	0x17b: 0x1a03,  // bdi
+-	0x17c: 0x4ce0a, // onpagehide
+-	0x17d: 0x9d07,  // dirname
+-	0x17e: 0x23304, // type
+-	0x17f: 0x21704, // form
+-	0x180: 0x4c105, // inert
+-	0x181: 0x12709, // oncanplay
+-	0x182: 0x8303,  // dfn
+-	0x183: 0x45c08, // tabindex
+-	0x186: 0x7f02,  // em
+-	0x187: 0x29c04, // lang
+-	0x189: 0x3a208, // dropzone
+-	0x18a: 0x4110a, // onkeypress
+-	0x18b: 0x25b08, // datetime
+-	0x18c: 0x18804, // cols
+-	0x18d: 0x1,     // a
+-	0x18e: 0x43b0c, // onloadeddata
+-	0x191: 0x15606, // border
+-	0x192: 0x2e05,  // tbody
+-	0x193: 0x24b06, // method
+-	0x195: 0xbe04,  // loop
+-	0x196: 0x2b406, // iframe
+-	0x198: 0x2fa04, // head
+-	0x19e: 0x5b608, // manifest
+-	0x19f: 0xe109,  // autofocus
+-	0x1a0: 0x16f04, // code
+-	0x1a1: 0x53406, // strong
+-	0x1a2: 0x32108, // multiple
+-	0x1a3: 0xc05,   // param
+-	0x1a6: 0x23007, // enctype
+-	0x1a7: 0x2dd04, // face
+-	0x1a8: 0xf109,  // plaintext
+-	0x1a9: 0x13602, // h1
+-	0x1aa: 0x56609, // onstalled
+-	0x1ad: 0x28d06, // script
+-	0x1ae: 0x30006, // spacer
+-	0x1af: 0x52c08, // onresize
+-	0x1b0: 0x49b0b, // onmouseover
+-	0x1b1: 0x59108, // onunload
+-	0x1b2: 0x54208, // onseeked
+-	0x1b4: 0x2330d, // typemustmatch
+-	0x1b5: 0x1f106, // figure
+-	0x1b6: 0x48e0a, // onmouseout
+-	0x1b7: 0x27f03, // pre
+-	0x1b8: 0x4e205, // width
+-	0x1bb: 0x7404,  // nobr
+-	0x1be: 0x7002,  // tt
+-	0x1bf: 0x1105,  // align
+-	0x1c0: 0x3f407, // oninput
+-	0x1c3: 0x42107, // onkeyup
+-	0x1c6: 0x1e50c, // onafterprint
+-	0x1c7: 0x210e,  // accept-charset
+-	0x1c8: 0x9806,  // itemid
+-	0x1cb: 0x50e06, // strike
+-	0x1cc: 0x57a03, // sub
+-	0x1cd: 0xf905,  // track
+-	0x1ce: 0x39705, // start
+-	0x1d0: 0x11408, // basefont
+-	0x1d6: 0x1cf06, // source
+-	0x1d7: 0x1a806, // legend
+-	0x1d8: 0x2f905, // thead
+-	0x1da: 0x2e905, // scope
+-	0x1dd: 0x21106, // object
+-	0x1de: 0xa205,  // media
+-	0x1df: 0x18d0a, // annotation
+-	0x1e0: 0x22c0b, // formenctype
+-	0x1e2: 0x28b08, // noscript
+-	0x1e4: 0x53005, // sizes
+-	0x1e5: 0xd50c,  // autocomplete
+-	0x1e6: 0x7a04,  // span
+-	0x1e7: 0x8508,  // noframes
+-	0x1e8: 0x26a06, // target
+-	0x1e9: 0x3a006, // ondrop
+-	0x1ea: 0x3d406, // srcdoc
+-	0x1ec: 0x5e08,  // reversed
+-	0x1f0: 0x2c707, // isindex
+-	0x1f3: 0x29808, // hreflang
+-	0x1f5: 0x4e602, // h5
+-	0x1f6: 0x5d507, // address
+-	0x1fa: 0x30603, // max
+-	0x1fb: 0xc70b,  // placeholder
+-	0x1fc: 0x31408, // textarea
+-	0x1fe: 0x4a609, // onmouseup
+-	0x1ff: 0x3910b, // ondragstart
+-}
+-
+-const atomText = "abbradiogrouparamalignmarkbdialogaccept-charsetbodyaccesskey" +
+-	"genavaluealtdescanvasidefaultfootereversedetailsampatternobr" +
+-	"owspanoembedfnoframesetitleasyncitemidirnamediagroupingaudio" +
+-	"ncancelabelooptgrouplaceholderubyautocompleteautofocusandbox" +
+-	"mplaintextrackindisabledivarautoplaybasefontimeupdatebdoncan" +
+-	"playthrough1bgsoundlowbrbigblinkblockquoteborderbuttonabortr" +
+-	"anslatecodefercolgroupostercolorcolspannotation-xmlcommandra" +
+-	"ggablegendcontrolshapecoordsmallcrossoriginsourcefieldsetfig" +
+-	"captionafterprintfigurequiredforeignObjectforeignobjectforma" +
+-	"ctionbeforeprintformenctypemustmatchallengeformmethodformnov" +
+-	"alidatetimeterformtargeth6heightmlhgroupreloadhiddenoscripth" +
+-	"igh2hreflanghttp-equivideonclickiframeimageimglyph3isindexis" +
+-	"mappletitemrefacenteritemscopeditemtypematheaderspacermaxlen" +
+-	"gth4minmtextareadonlymultiplemutedoncloseamlesspellcheckedon" +
+-	"contextmenuoncuechangeondblclickondragendondragenterondragle" +
+-	"aveondragoverondragstarticleondropzonemptiedondurationchange" +
+-	"onendedonerroronfocusrcdoclassectionbluronhashchangeoninputo" +
+-	"ninvalidonkeydownloadonkeypressrclangonkeyupublicontentedita" +
+-	"bleonloadeddatalistingonloadedmetadatabindexonloadstartonmes" +
+-	"sageonmousedownonmousemoveonmouseoutputonmouseoveronmouseupo" +
+-	"nmousewheelonofflinertononlineonpagehidelonpageshowidth5onpa" +
+-	"usemaponplayingonpopstateonprogresstrikeytypeonratechangeonr" +
+-	"esetonresizestrongonscrollonseekedonseekingonselectedonshowr" +
+-	"aponstalledonstorageonsubmitempropenonsuspendonunloadonvolum" +
+-	"echangeonwaitingoptimumanifestepromptoptionbeforeunloaddress" +
+-	"tylesummarysupsvgsystemarquee"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/atom/table_test.go gcc-4.8.1/libgo/go/exp/html/atom/table_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/atom/table_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/atom/table_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,341 +0,0 @@
+-// generated by go run gen.go -test; DO NOT EDIT
+-
+-package atom
+-
+-var testAtomList = []string{
+-	"a",
+-	"abbr",
+-	"accept",
+-	"accept-charset",
+-	"accesskey",
+-	"action",
+-	"address",
+-	"align",
+-	"alt",
+-	"annotation",
+-	"annotation-xml",
+-	"applet",
+-	"area",
+-	"article",
+-	"aside",
+-	"async",
+-	"audio",
+-	"autocomplete",
+-	"autofocus",
+-	"autoplay",
+-	"b",
+-	"base",
+-	"basefont",
+-	"bdi",
+-	"bdo",
+-	"bgsound",
+-	"big",
+-	"blink",
+-	"blockquote",
+-	"body",
+-	"border",
+-	"br",
+-	"button",
+-	"canvas",
+-	"caption",
+-	"center",
+-	"challenge",
+-	"charset",
+-	"checked",
+-	"cite",
+-	"cite",
+-	"class",
+-	"code",
+-	"col",
+-	"colgroup",
+-	"color",
+-	"cols",
+-	"colspan",
+-	"command",
+-	"command",
+-	"content",
+-	"contenteditable",
+-	"contextmenu",
+-	"controls",
+-	"coords",
+-	"crossorigin",
+-	"data",
+-	"data",
+-	"datalist",
+-	"datetime",
+-	"dd",
+-	"default",
+-	"defer",
+-	"del",
+-	"desc",
+-	"details",
+-	"dfn",
+-	"dialog",
+-	"dir",
+-	"dirname",
+-	"disabled",
+-	"div",
+-	"dl",
+-	"download",
+-	"draggable",
+-	"dropzone",
+-	"dt",
+-	"em",
+-	"embed",
+-	"enctype",
+-	"face",
+-	"fieldset",
+-	"figcaption",
+-	"figure",
+-	"font",
+-	"footer",
+-	"for",
+-	"foreignObject",
+-	"foreignobject",
+-	"form",
+-	"form",
+-	"formaction",
+-	"formenctype",
+-	"formmethod",
+-	"formnovalidate",
+-	"formtarget",
+-	"frame",
+-	"frameset",
+-	"h1",
+-	"h2",
+-	"h3",
+-	"h4",
+-	"h5",
+-	"h6",
+-	"head",
+-	"header",
+-	"headers",
+-	"height",
+-	"hgroup",
+-	"hidden",
+-	"high",
+-	"hr",
+-	"href",
+-	"hreflang",
+-	"html",
+-	"http-equiv",
+-	"i",
+-	"icon",
+-	"id",
+-	"iframe",
+-	"image",
+-	"img",
+-	"inert",
+-	"input",
+-	"ins",
+-	"isindex",
+-	"ismap",
+-	"itemid",
+-	"itemprop",
+-	"itemref",
+-	"itemscope",
+-	"itemtype",
+-	"kbd",
+-	"keygen",
+-	"keytype",
+-	"kind",
+-	"label",
+-	"label",
+-	"lang",
+-	"legend",
+-	"li",
+-	"link",
+-	"list",
+-	"listing",
+-	"loop",
+-	"low",
+-	"malignmark",
+-	"manifest",
+-	"map",
+-	"mark",
+-	"marquee",
+-	"math",
+-	"max",
+-	"maxlength",
+-	"media",
+-	"mediagroup",
+-	"menu",
+-	"meta",
+-	"meter",
+-	"method",
+-	"mglyph",
+-	"mi",
+-	"min",
+-	"mn",
+-	"mo",
+-	"ms",
+-	"mtext",
+-	"multiple",
+-	"muted",
+-	"name",
+-	"nav",
+-	"nobr",
+-	"noembed",
+-	"noframes",
+-	"noscript",
+-	"novalidate",
+-	"object",
+-	"ol",
+-	"onabort",
+-	"onafterprint",
+-	"onbeforeprint",
+-	"onbeforeunload",
+-	"onblur",
+-	"oncancel",
+-	"oncanplay",
+-	"oncanplaythrough",
+-	"onchange",
+-	"onclick",
+-	"onclose",
+-	"oncontextmenu",
+-	"oncuechange",
+-	"ondblclick",
+-	"ondrag",
+-	"ondragend",
+-	"ondragenter",
+-	"ondragleave",
+-	"ondragover",
+-	"ondragstart",
+-	"ondrop",
+-	"ondurationchange",
+-	"onemptied",
+-	"onended",
+-	"onerror",
+-	"onfocus",
+-	"onhashchange",
+-	"oninput",
+-	"oninvalid",
+-	"onkeydown",
+-	"onkeypress",
+-	"onkeyup",
+-	"onload",
+-	"onloadeddata",
+-	"onloadedmetadata",
+-	"onloadstart",
+-	"onmessage",
+-	"onmousedown",
+-	"onmousemove",
+-	"onmouseout",
+-	"onmouseover",
+-	"onmouseup",
+-	"onmousewheel",
+-	"onoffline",
+-	"ononline",
+-	"onpagehide",
+-	"onpageshow",
+-	"onpause",
+-	"onplay",
+-	"onplaying",
+-	"onpopstate",
+-	"onprogress",
+-	"onratechange",
+-	"onreset",
+-	"onresize",
+-	"onscroll",
+-	"onseeked",
+-	"onseeking",
+-	"onselect",
+-	"onshow",
+-	"onstalled",
+-	"onstorage",
+-	"onsubmit",
+-	"onsuspend",
+-	"ontimeupdate",
+-	"onunload",
+-	"onvolumechange",
+-	"onwaiting",
+-	"open",
+-	"optgroup",
+-	"optimum",
+-	"option",
+-	"output",
+-	"p",
+-	"param",
+-	"pattern",
+-	"ping",
+-	"placeholder",
+-	"plaintext",
+-	"poster",
+-	"pre",
+-	"preload",
+-	"progress",
+-	"prompt",
+-	"public",
+-	"q",
+-	"radiogroup",
+-	"readonly",
+-	"rel",
+-	"required",
+-	"reversed",
+-	"rows",
+-	"rowspan",
+-	"rp",
+-	"rt",
+-	"ruby",
+-	"s",
+-	"samp",
+-	"sandbox",
+-	"scope",
+-	"scoped",
+-	"script",
+-	"seamless",
+-	"section",
+-	"select",
+-	"selected",
+-	"shape",
+-	"size",
+-	"sizes",
+-	"small",
+-	"source",
+-	"spacer",
+-	"span",
+-	"span",
+-	"spellcheck",
+-	"src",
+-	"srcdoc",
+-	"srclang",
+-	"start",
+-	"step",
+-	"strike",
+-	"strong",
+-	"style",
+-	"style",
+-	"sub",
+-	"summary",
+-	"sup",
+-	"svg",
+-	"system",
+-	"tabindex",
+-	"table",
+-	"target",
+-	"tbody",
+-	"td",
+-	"textarea",
+-	"tfoot",
+-	"th",
+-	"thead",
+-	"time",
+-	"title",
+-	"title",
+-	"tr",
+-	"track",
+-	"translate",
+-	"tt",
+-	"type",
+-	"typemustmatch",
+-	"u",
+-	"ul",
+-	"usemap",
+-	"value",
+-	"var",
+-	"video",
+-	"wbr",
+-	"width",
+-	"wrap",
+-	"xmp",
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/const.go gcc-4.8.1/libgo/go/exp/html/const.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/const.go	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/const.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,100 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-// Section 12.2.3.2 of the HTML5 specification says "The following elements
+-// have varying levels of special parsing rules".
+-// http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#the-stack-of-open-elements
+-var isSpecialElementMap = map[string]bool{
+-	"address":    true,
+-	"applet":     true,
+-	"area":       true,
+-	"article":    true,
+-	"aside":      true,
+-	"base":       true,
+-	"basefont":   true,
+-	"bgsound":    true,
+-	"blockquote": true,
+-	"body":       true,
+-	"br":         true,
+-	"button":     true,
+-	"caption":    true,
+-	"center":     true,
+-	"col":        true,
+-	"colgroup":   true,
+-	"command":    true,
+-	"dd":         true,
+-	"details":    true,
+-	"dir":        true,
+-	"div":        true,
+-	"dl":         true,
+-	"dt":         true,
+-	"embed":      true,
+-	"fieldset":   true,
+-	"figcaption": true,
+-	"figure":     true,
+-	"footer":     true,
+-	"form":       true,
+-	"frame":      true,
+-	"frameset":   true,
+-	"h1":         true,
+-	"h2":         true,
+-	"h3":         true,
+-	"h4":         true,
+-	"h5":         true,
+-	"h6":         true,
+-	"head":       true,
+-	"header":     true,
+-	"hgroup":     true,
+-	"hr":         true,
+-	"html":       true,
+-	"iframe":     true,
+-	"img":        true,
+-	"input":      true,
+-	"isindex":    true,
+-	"li":         true,
+-	"link":       true,
+-	"listing":    true,
+-	"marquee":    true,
+-	"menu":       true,
+-	"meta":       true,
+-	"nav":        true,
+-	"noembed":    true,
+-	"noframes":   true,
+-	"noscript":   true,
+-	"object":     true,
+-	"ol":         true,
+-	"p":          true,
+-	"param":      true,
+-	"plaintext":  true,
+-	"pre":        true,
+-	"script":     true,
+-	"section":    true,
+-	"select":     true,
+-	"style":      true,
+-	"summary":    true,
+-	"table":      true,
+-	"tbody":      true,
+-	"td":         true,
+-	"textarea":   true,
+-	"tfoot":      true,
+-	"th":         true,
+-	"thead":      true,
+-	"title":      true,
+-	"tr":         true,
+-	"ul":         true,
+-	"wbr":        true,
+-	"xmp":        true,
+-}
+-
+-func isSpecialElement(element *Node) bool {
+-	switch element.Namespace {
+-	case "", "html":
+-		return isSpecialElementMap[element.Data]
+-	case "svg":
+-		return element.Data == "foreignObject"
+-	}
+-	return false
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/doc.go gcc-4.8.1/libgo/go/exp/html/doc.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/doc.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/doc.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,106 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-/*
+-Package html implements an HTML5-compliant tokenizer and parser.
+-
+-Tokenization is done by creating a Tokenizer for an io.Reader r. It is the
+-caller's responsibility to ensure that r provides UTF-8 encoded HTML.
+-
+-	z := html.NewTokenizer(r)
+-
+-Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(),
+-which parses the next token and returns its type, or an error:
+-
+-	for {
+-		tt := z.Next()
+-		if tt == html.ErrorToken {
+-			// ...
+-			return ...
+-		}
+-		// Process the current token.
+-	}
+-
+-There are two APIs for retrieving the current token. The high-level API is to
+-call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs
+-allow optionally calling Raw after Next but before Token, Text, TagName, or
+-TagAttr. In EBNF notation, the valid call sequence per token is:
+-
+-	Next {Raw} [ Token | Text | TagName {TagAttr} ]
+-
+-Token returns an independent data structure that completely describes a token.
+-Entities (such as "&lt;") are unescaped, tag names and attribute keys are
+-lower-cased, and attributes are collected into a []Attribute. For example:
+-
+-	for {
+-		if z.Next() == html.ErrorToken {
+-			// Returning io.EOF indicates success.
+-			return z.Err()
+-		}
+-		emitToken(z.Token())
+-	}
+-
+-The low-level API performs fewer allocations and copies, but the contents of
+-the []byte values returned by Text, TagName and TagAttr may change on the next
+-call to Next. For example, to extract an HTML page's anchor text:
+-
+-	depth := 0
+-	for {
+-		tt := z.Next()
+-		switch tt {
+-		case ErrorToken:
+-			return z.Err()
+-		case TextToken:
+-			if depth > 0 {
+-				// emitBytes should copy the []byte it receives,
+-				// if it doesn't process it immediately.
+-				emitBytes(z.Text())
+-			}
+-		case StartTagToken, EndTagToken:
+-			tn, _ := z.TagName()
+-			if len(tn) == 1 && tn[0] == 'a' {
+-				if tt == StartTagToken {
+-					depth++
+-				} else {
+-					depth--
+-				}
+-			}
+-		}
+-	}
+-
+-Parsing is done by calling Parse with an io.Reader, which returns the root of
+-the parse tree (the document element) as a *Node. It is the caller's
+-responsibility to ensure that the Reader provides UTF-8 encoded HTML. For
+-example, to process each anchor node in depth-first order:
+-
+-	doc, err := html.Parse(r)
+-	if err != nil {
+-		// ...
+-	}
+-	var f func(*html.Node)
+-	f = func(n *html.Node) {
+-		if n.Type == html.ElementNode && n.Data == "a" {
+-			// Do something with n...
+-		}
+-		for c := n.FirstChild; c != nil; c = c.NextSibling {
+-			f(c)
+-		}
+-	}
+-	f(doc)
+-
+-The relevant specifications include:
+-http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html and
+-http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html
+-*/
+-package html
+-
+-// The tokenization algorithm implemented by this package is not a line-by-line
+-// transliteration of the relatively verbose state-machine in the WHATWG
+-// specification. A more direct approach is used instead, where the program
+-// counter implies the state, such as whether it is tokenizing a tag or a text
+-// node. Specification compliance is verified by checking expected and actual
+-// outputs over a test suite rather than aiming for algorithmic fidelity.
+-
+-// TODO(nigeltao): Does a DOM API belong in this package or a separate one?
+-// TODO(nigeltao): How does parsing interact with a JavaScript engine?
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/doctype.go gcc-4.8.1/libgo/go/exp/html/doctype.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/doctype.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/doctype.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,156 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"strings"
+-)
+-
+-// parseDoctype parses the data from a DoctypeToken into a name,
+-// public identifier, and system identifier. It returns a Node whose Type
+-// is DoctypeNode, whose Data is the name, and which has attributes
+-// named "system" and "public" for the two identifiers if they were present.
+-// quirks is whether the document should be parsed in "quirks mode".
+-func parseDoctype(s string) (n *Node, quirks bool) {
+-	n = &Node{Type: DoctypeNode}
+-
+-	// Find the name.
+-	space := strings.IndexAny(s, whitespace)
+-	if space == -1 {
+-		space = len(s)
+-	}
+-	n.Data = s[:space]
+-	// The comparison to "html" is case-sensitive.
+-	if n.Data != "html" {
+-		quirks = true
+-	}
+-	n.Data = strings.ToLower(n.Data)
+-	s = strings.TrimLeft(s[space:], whitespace)
+-
+-	if len(s) < 6 {
+-		// It can't start with "PUBLIC" or "SYSTEM".
+-		// Ignore the rest of the string.
+-		return n, quirks || s != ""
+-	}
+-
+-	key := strings.ToLower(s[:6])
+-	s = s[6:]
+-	for key == "public" || key == "system" {
+-		s = strings.TrimLeft(s, whitespace)
+-		if s == "" {
+-			break
+-		}
+-		quote := s[0]
+-		if quote != '"' && quote != '\'' {
+-			break
+-		}
+-		s = s[1:]
+-		q := strings.IndexRune(s, rune(quote))
+-		var id string
+-		if q == -1 {
+-			id = s
+-			s = ""
+-		} else {
+-			id = s[:q]
+-			s = s[q+1:]
+-		}
+-		n.Attr = append(n.Attr, Attribute{Key: key, Val: id})
+-		if key == "public" {
+-			key = "system"
+-		} else {
+-			key = ""
+-		}
+-	}
+-
+-	if key != "" || s != "" {
+-		quirks = true
+-	} else if len(n.Attr) > 0 {
+-		if n.Attr[0].Key == "public" {
+-			public := strings.ToLower(n.Attr[0].Val)
+-			switch public {
+-			case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html":
+-				quirks = true
+-			default:
+-				for _, q := range quirkyIDs {
+-					if strings.HasPrefix(public, q) {
+-						quirks = true
+-						break
+-					}
+-				}
+-			}
+-			// The following two public IDs only cause quirks mode if there is no system ID.
+-			if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") ||
+-				strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) {
+-				quirks = true
+-			}
+-		}
+-		if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" &&
+-			strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" {
+-			quirks = true
+-		}
+-	}
+-
+-	return n, quirks
+-}
+-
+-// quirkyIDs is a list of public doctype identifiers that cause a document
+-// to be interpreted in quirks mode. The identifiers should be in lower case.
+-var quirkyIDs = []string{
+-	"+//silmaril//dtd html pro v0r11 19970101//",
+-	"-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
+-	"-//as//dtd html 3.0 aswedit + extensions//",
+-	"-//ietf//dtd html 2.0 level 1//",
+-	"-//ietf//dtd html 2.0 level 2//",
+-	"-//ietf//dtd html 2.0 strict level 1//",
+-	"-//ietf//dtd html 2.0 strict level 2//",
+-	"-//ietf//dtd html 2.0 strict//",
+-	"-//ietf//dtd html 2.0//",
+-	"-//ietf//dtd html 2.1e//",
+-	"-//ietf//dtd html 3.0//",
+-	"-//ietf//dtd html 3.2 final//",
+-	"-//ietf//dtd html 3.2//",
+-	"-//ietf//dtd html 3//",
+-	"-//ietf//dtd html level 0//",
+-	"-//ietf//dtd html level 1//",
+-	"-//ietf//dtd html level 2//",
+-	"-//ietf//dtd html level 3//",
+-	"-//ietf//dtd html strict level 0//",
+-	"-//ietf//dtd html strict level 1//",
+-	"-//ietf//dtd html strict level 2//",
+-	"-//ietf//dtd html strict level 3//",
+-	"-//ietf//dtd html strict//",
+-	"-//ietf//dtd html//",
+-	"-//metrius//dtd metrius presentational//",
+-	"-//microsoft//dtd internet explorer 2.0 html strict//",
+-	"-//microsoft//dtd internet explorer 2.0 html//",
+-	"-//microsoft//dtd internet explorer 2.0 tables//",
+-	"-//microsoft//dtd internet explorer 3.0 html strict//",
+-	"-//microsoft//dtd internet explorer 3.0 html//",
+-	"-//microsoft//dtd internet explorer 3.0 tables//",
+-	"-//netscape comm. corp.//dtd html//",
+-	"-//netscape comm. corp.//dtd strict html//",
+-	"-//o'reilly and associates//dtd html 2.0//",
+-	"-//o'reilly and associates//dtd html extended 1.0//",
+-	"-//o'reilly and associates//dtd html extended relaxed 1.0//",
+-	"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
+-	"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
+-	"-//spyglass//dtd html 2.0 extended//",
+-	"-//sq//dtd html 2.0 hotmetal + extensions//",
+-	"-//sun microsystems corp.//dtd hotjava html//",
+-	"-//sun microsystems corp.//dtd hotjava strict html//",
+-	"-//w3c//dtd html 3 1995-03-24//",
+-	"-//w3c//dtd html 3.2 draft//",
+-	"-//w3c//dtd html 3.2 final//",
+-	"-//w3c//dtd html 3.2//",
+-	"-//w3c//dtd html 3.2s draft//",
+-	"-//w3c//dtd html 4.0 frameset//",
+-	"-//w3c//dtd html 4.0 transitional//",
+-	"-//w3c//dtd html experimental 19960712//",
+-	"-//w3c//dtd html experimental 970421//",
+-	"-//w3c//dtd w3 html//",
+-	"-//w3o//dtd w3 html 3.0//",
+-	"-//webtechs//dtd mozilla html 2.0//",
+-	"-//webtechs//dtd mozilla html//",
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/entity.go gcc-4.8.1/libgo/go/exp/html/entity.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/entity.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/entity.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,2253 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-// All entities that do not end with ';' are 6 or fewer bytes long.
+-const longestEntityWithoutSemicolon = 6
+-
+-// entity is a map from HTML entity names to their values. The semicolon matters:
+-// http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html
+-// lists both "amp" and "amp;" as two separate entries.
+-//
+-// Note that the HTML5 list is larger than the HTML4 list at
+-// http://www.w3.org/TR/html4/sgml/entities.html
+-var entity = map[string]rune{
+-	"AElig;":                           '\U000000C6',
+-	"AMP;":                             '\U00000026',
+-	"Aacute;":                          '\U000000C1',
+-	"Abreve;":                          '\U00000102',
+-	"Acirc;":                           '\U000000C2',
+-	"Acy;":                             '\U00000410',
+-	"Afr;":                             '\U0001D504',
+-	"Agrave;":                          '\U000000C0',
+-	"Alpha;":                           '\U00000391',
+-	"Amacr;":                           '\U00000100',
+-	"And;":                             '\U00002A53',
+-	"Aogon;":                           '\U00000104',
+-	"Aopf;":                            '\U0001D538',
+-	"ApplyFunction;":                   '\U00002061',
+-	"Aring;":                           '\U000000C5',
+-	"Ascr;":                            '\U0001D49C',
+-	"Assign;":                          '\U00002254',
+-	"Atilde;":                          '\U000000C3',
+-	"Auml;":                            '\U000000C4',
+-	"Backslash;":                       '\U00002216',
+-	"Barv;":                            '\U00002AE7',
+-	"Barwed;":                          '\U00002306',
+-	"Bcy;":                             '\U00000411',
+-	"Because;":                         '\U00002235',
+-	"Bernoullis;":                      '\U0000212C',
+-	"Beta;":                            '\U00000392',
+-	"Bfr;":                             '\U0001D505',
+-	"Bopf;":                            '\U0001D539',
+-	"Breve;":                           '\U000002D8',
+-	"Bscr;":                            '\U0000212C',
+-	"Bumpeq;":                          '\U0000224E',
+-	"CHcy;":                            '\U00000427',
+-	"COPY;":                            '\U000000A9',
+-	"Cacute;":                          '\U00000106',
+-	"Cap;":                             '\U000022D2',
+-	"CapitalDifferentialD;":            '\U00002145',
+-	"Cayleys;":                         '\U0000212D',
+-	"Ccaron;":                          '\U0000010C',
+-	"Ccedil;":                          '\U000000C7',
+-	"Ccirc;":                           '\U00000108',
+-	"Cconint;":                         '\U00002230',
+-	"Cdot;":                            '\U0000010A',
+-	"Cedilla;":                         '\U000000B8',
+-	"CenterDot;":                       '\U000000B7',
+-	"Cfr;":                             '\U0000212D',
+-	"Chi;":                             '\U000003A7',
+-	"CircleDot;":                       '\U00002299',
+-	"CircleMinus;":                     '\U00002296',
+-	"CirclePlus;":                      '\U00002295',
+-	"CircleTimes;":                     '\U00002297',
+-	"ClockwiseContourIntegral;":        '\U00002232',
+-	"CloseCurlyDoubleQuote;":           '\U0000201D',
+-	"CloseCurlyQuote;":                 '\U00002019',
+-	"Colon;":                           '\U00002237',
+-	"Colone;":                          '\U00002A74',
+-	"Congruent;":                       '\U00002261',
+-	"Conint;":                          '\U0000222F',
+-	"ContourIntegral;":                 '\U0000222E',
+-	"Copf;":                            '\U00002102',
+-	"Coproduct;":                       '\U00002210',
+-	"CounterClockwiseContourIntegral;": '\U00002233',
+-	"Cross;":                    '\U00002A2F',
+-	"Cscr;":                     '\U0001D49E',
+-	"Cup;":                      '\U000022D3',
+-	"CupCap;":                   '\U0000224D',
+-	"DD;":                       '\U00002145',
+-	"DDotrahd;":                 '\U00002911',
+-	"DJcy;":                     '\U00000402',
+-	"DScy;":                     '\U00000405',
+-	"DZcy;":                     '\U0000040F',
+-	"Dagger;":                   '\U00002021',
+-	"Darr;":                     '\U000021A1',
+-	"Dashv;":                    '\U00002AE4',
+-	"Dcaron;":                   '\U0000010E',
+-	"Dcy;":                      '\U00000414',
+-	"Del;":                      '\U00002207',
+-	"Delta;":                    '\U00000394',
+-	"Dfr;":                      '\U0001D507',
+-	"DiacriticalAcute;":         '\U000000B4',
+-	"DiacriticalDot;":           '\U000002D9',
+-	"DiacriticalDoubleAcute;":   '\U000002DD',
+-	"DiacriticalGrave;":         '\U00000060',
+-	"DiacriticalTilde;":         '\U000002DC',
+-	"Diamond;":                  '\U000022C4',
+-	"DifferentialD;":            '\U00002146',
+-	"Dopf;":                     '\U0001D53B',
+-	"Dot;":                      '\U000000A8',
+-	"DotDot;":                   '\U000020DC',
+-	"DotEqual;":                 '\U00002250',
+-	"DoubleContourIntegral;":    '\U0000222F',
+-	"DoubleDot;":                '\U000000A8',
+-	"DoubleDownArrow;":          '\U000021D3',
+-	"DoubleLeftArrow;":          '\U000021D0',
+-	"DoubleLeftRightArrow;":     '\U000021D4',
+-	"DoubleLeftTee;":            '\U00002AE4',
+-	"DoubleLongLeftArrow;":      '\U000027F8',
+-	"DoubleLongLeftRightArrow;": '\U000027FA',
+-	"DoubleLongRightArrow;":     '\U000027F9',
+-	"DoubleRightArrow;":         '\U000021D2',
+-	"DoubleRightTee;":           '\U000022A8',
+-	"DoubleUpArrow;":            '\U000021D1',
+-	"DoubleUpDownArrow;":        '\U000021D5',
+-	"DoubleVerticalBar;":        '\U00002225',
+-	"DownArrow;":                '\U00002193',
+-	"DownArrowBar;":             '\U00002913',
+-	"DownArrowUpArrow;":         '\U000021F5',
+-	"DownBreve;":                '\U00000311',
+-	"DownLeftRightVector;":      '\U00002950',
+-	"DownLeftTeeVector;":        '\U0000295E',
+-	"DownLeftVector;":           '\U000021BD',
+-	"DownLeftVectorBar;":        '\U00002956',
+-	"DownRightTeeVector;":       '\U0000295F',
+-	"DownRightVector;":          '\U000021C1',
+-	"DownRightVectorBar;":       '\U00002957',
+-	"DownTee;":                  '\U000022A4',
+-	"DownTeeArrow;":             '\U000021A7',
+-	"Downarrow;":                '\U000021D3',
+-	"Dscr;":                     '\U0001D49F',
+-	"Dstrok;":                   '\U00000110',
+-	"ENG;":                      '\U0000014A',
+-	"ETH;":                      '\U000000D0',
+-	"Eacute;":                   '\U000000C9',
+-	"Ecaron;":                   '\U0000011A',
+-	"Ecirc;":                    '\U000000CA',
+-	"Ecy;":                      '\U0000042D',
+-	"Edot;":                     '\U00000116',
+-	"Efr;":                      '\U0001D508',
+-	"Egrave;":                   '\U000000C8',
+-	"Element;":                  '\U00002208',
+-	"Emacr;":                    '\U00000112',
+-	"EmptySmallSquare;":         '\U000025FB',
+-	"EmptyVerySmallSquare;":     '\U000025AB',
+-	"Eogon;":                    '\U00000118',
+-	"Eopf;":                     '\U0001D53C',
+-	"Epsilon;":                  '\U00000395',
+-	"Equal;":                    '\U00002A75',
+-	"EqualTilde;":               '\U00002242',
+-	"Equilibrium;":              '\U000021CC',
+-	"Escr;":                     '\U00002130',
+-	"Esim;":                     '\U00002A73',
+-	"Eta;":                      '\U00000397',
+-	"Euml;":                     '\U000000CB',
+-	"Exists;":                   '\U00002203',
+-	"ExponentialE;":             '\U00002147',
+-	"Fcy;":                      '\U00000424',
+-	"Ffr;":                      '\U0001D509',
+-	"FilledSmallSquare;":        '\U000025FC',
+-	"FilledVerySmallSquare;":    '\U000025AA',
+-	"Fopf;":                     '\U0001D53D',
+-	"ForAll;":                   '\U00002200',
+-	"Fouriertrf;":               '\U00002131',
+-	"Fscr;":                     '\U00002131',
+-	"GJcy;":                     '\U00000403',
+-	"GT;":                       '\U0000003E',
+-	"Gamma;":                    '\U00000393',
+-	"Gammad;":                   '\U000003DC',
+-	"Gbreve;":                   '\U0000011E',
+-	"Gcedil;":                   '\U00000122',
+-	"Gcirc;":                    '\U0000011C',
+-	"Gcy;":                      '\U00000413',
+-	"Gdot;":                     '\U00000120',
+-	"Gfr;":                      '\U0001D50A',
+-	"Gg;":                       '\U000022D9',
+-	"Gopf;":                     '\U0001D53E',
+-	"GreaterEqual;":             '\U00002265',
+-	"GreaterEqualLess;":         '\U000022DB',
+-	"GreaterFullEqual;":         '\U00002267',
+-	"GreaterGreater;":           '\U00002AA2',
+-	"GreaterLess;":              '\U00002277',
+-	"GreaterSlantEqual;":        '\U00002A7E',
+-	"GreaterTilde;":             '\U00002273',
+-	"Gscr;":                     '\U0001D4A2',
+-	"Gt;":                       '\U0000226B',
+-	"HARDcy;":                   '\U0000042A',
+-	"Hacek;":                    '\U000002C7',
+-	"Hat;":                      '\U0000005E',
+-	"Hcirc;":                    '\U00000124',
+-	"Hfr;":                      '\U0000210C',
+-	"HilbertSpace;":             '\U0000210B',
+-	"Hopf;":                     '\U0000210D',
+-	"HorizontalLine;":           '\U00002500',
+-	"Hscr;":                     '\U0000210B',
+-	"Hstrok;":                   '\U00000126',
+-	"HumpDownHump;":             '\U0000224E',
+-	"HumpEqual;":                '\U0000224F',
+-	"IEcy;":                     '\U00000415',
+-	"IJlig;":                    '\U00000132',
+-	"IOcy;":                     '\U00000401',
+-	"Iacute;":                   '\U000000CD',
+-	"Icirc;":                    '\U000000CE',
+-	"Icy;":                      '\U00000418',
+-	"Idot;":                     '\U00000130',
+-	"Ifr;":                      '\U00002111',
+-	"Igrave;":                   '\U000000CC',
+-	"Im;":                       '\U00002111',
+-	"Imacr;":                    '\U0000012A',
+-	"ImaginaryI;":               '\U00002148',
+-	"Implies;":                  '\U000021D2',
+-	"Int;":                      '\U0000222C',
+-	"Integral;":                 '\U0000222B',
+-	"Intersection;":             '\U000022C2',
+-	"InvisibleComma;":           '\U00002063',
+-	"InvisibleTimes;":           '\U00002062',
+-	"Iogon;":                    '\U0000012E',
+-	"Iopf;":                     '\U0001D540',
+-	"Iota;":                     '\U00000399',
+-	"Iscr;":                     '\U00002110',
+-	"Itilde;":                   '\U00000128',
+-	"Iukcy;":                    '\U00000406',
+-	"Iuml;":                     '\U000000CF',
+-	"Jcirc;":                    '\U00000134',
+-	"Jcy;":                      '\U00000419',
+-	"Jfr;":                      '\U0001D50D',
+-	"Jopf;":                     '\U0001D541',
+-	"Jscr;":                     '\U0001D4A5',
+-	"Jsercy;":                   '\U00000408',
+-	"Jukcy;":                    '\U00000404',
+-	"KHcy;":                     '\U00000425',
+-	"KJcy;":                     '\U0000040C',
+-	"Kappa;":                    '\U0000039A',
+-	"Kcedil;":                   '\U00000136',
+-	"Kcy;":                      '\U0000041A',
+-	"Kfr;":                      '\U0001D50E',
+-	"Kopf;":                     '\U0001D542',
+-	"Kscr;":                     '\U0001D4A6',
+-	"LJcy;":                     '\U00000409',
+-	"LT;":                       '\U0000003C',
+-	"Lacute;":                   '\U00000139',
+-	"Lambda;":                   '\U0000039B',
+-	"Lang;":                     '\U000027EA',
+-	"Laplacetrf;":               '\U00002112',
+-	"Larr;":                     '\U0000219E',
+-	"Lcaron;":                   '\U0000013D',
+-	"Lcedil;":                   '\U0000013B',
+-	"Lcy;":                      '\U0000041B',
+-	"LeftAngleBracket;":         '\U000027E8',
+-	"LeftArrow;":                '\U00002190',
+-	"LeftArrowBar;":             '\U000021E4',
+-	"LeftArrowRightArrow;":      '\U000021C6',
+-	"LeftCeiling;":              '\U00002308',
+-	"LeftDoubleBracket;":        '\U000027E6',
+-	"LeftDownTeeVector;":        '\U00002961',
+-	"LeftDownVector;":           '\U000021C3',
+-	"LeftDownVectorBar;":        '\U00002959',
+-	"LeftFloor;":                '\U0000230A',
+-	"LeftRightArrow;":           '\U00002194',
+-	"LeftRightVector;":          '\U0000294E',
+-	"LeftTee;":                  '\U000022A3',
+-	"LeftTeeArrow;":             '\U000021A4',
+-	"LeftTeeVector;":            '\U0000295A',
+-	"LeftTriangle;":             '\U000022B2',
+-	"LeftTriangleBar;":          '\U000029CF',
+-	"LeftTriangleEqual;":        '\U000022B4',
+-	"LeftUpDownVector;":         '\U00002951',
+-	"LeftUpTeeVector;":          '\U00002960',
+-	"LeftUpVector;":             '\U000021BF',
+-	"LeftUpVectorBar;":          '\U00002958',
+-	"LeftVector;":               '\U000021BC',
+-	"LeftVectorBar;":            '\U00002952',
+-	"Leftarrow;":                '\U000021D0',
+-	"Leftrightarrow;":           '\U000021D4',
+-	"LessEqualGreater;":         '\U000022DA',
+-	"LessFullEqual;":            '\U00002266',
+-	"LessGreater;":              '\U00002276',
+-	"LessLess;":                 '\U00002AA1',
+-	"LessSlantEqual;":           '\U00002A7D',
+-	"LessTilde;":                '\U00002272',
+-	"Lfr;":                      '\U0001D50F',
+-	"Ll;":                       '\U000022D8',
+-	"Lleftarrow;":               '\U000021DA',
+-	"Lmidot;":                   '\U0000013F',
+-	"LongLeftArrow;":            '\U000027F5',
+-	"LongLeftRightArrow;":       '\U000027F7',
+-	"LongRightArrow;":           '\U000027F6',
+-	"Longleftarrow;":            '\U000027F8',
+-	"Longleftrightarrow;":       '\U000027FA',
+-	"Longrightarrow;":           '\U000027F9',
+-	"Lopf;":                     '\U0001D543',
+-	"LowerLeftArrow;":           '\U00002199',
+-	"LowerRightArrow;":          '\U00002198',
+-	"Lscr;":                     '\U00002112',
+-	"Lsh;":                      '\U000021B0',
+-	"Lstrok;":                   '\U00000141',
+-	"Lt;":                       '\U0000226A',
+-	"Map;":                      '\U00002905',
+-	"Mcy;":                      '\U0000041C',
+-	"MediumSpace;":              '\U0000205F',
+-	"Mellintrf;":                '\U00002133',
+-	"Mfr;":                      '\U0001D510',
+-	"MinusPlus;":                '\U00002213',
+-	"Mopf;":                     '\U0001D544',
+-	"Mscr;":                     '\U00002133',
+-	"Mu;":                       '\U0000039C',
+-	"NJcy;":                     '\U0000040A',
+-	"Nacute;":                   '\U00000143',
+-	"Ncaron;":                   '\U00000147',
+-	"Ncedil;":                   '\U00000145',
+-	"Ncy;":                      '\U0000041D',
+-	"NegativeMediumSpace;":      '\U0000200B',
+-	"NegativeThickSpace;":       '\U0000200B',
+-	"NegativeThinSpace;":        '\U0000200B',
+-	"NegativeVeryThinSpace;":    '\U0000200B',
+-	"NestedGreaterGreater;":     '\U0000226B',
+-	"NestedLessLess;":           '\U0000226A',
+-	"NewLine;":                  '\U0000000A',
+-	"Nfr;":                      '\U0001D511',
+-	"NoBreak;":                  '\U00002060',
+-	"NonBreakingSpace;":         '\U000000A0',
+-	"Nopf;":                     '\U00002115',
+-	"Not;":                      '\U00002AEC',
+-	"NotCongruent;":             '\U00002262',
+-	"NotCupCap;":                '\U0000226D',
+-	"NotDoubleVerticalBar;":     '\U00002226',
+-	"NotElement;":               '\U00002209',
+-	"NotEqual;":                 '\U00002260',
+-	"NotExists;":                '\U00002204',
+-	"NotGreater;":               '\U0000226F',
+-	"NotGreaterEqual;":          '\U00002271',
+-	"NotGreaterLess;":           '\U00002279',
+-	"NotGreaterTilde;":          '\U00002275',
+-	"NotLeftTriangle;":          '\U000022EA',
+-	"NotLeftTriangleEqual;":     '\U000022EC',
+-	"NotLess;":                  '\U0000226E',
+-	"NotLessEqual;":             '\U00002270',
+-	"NotLessGreater;":           '\U00002278',
+-	"NotLessTilde;":             '\U00002274',
+-	"NotPrecedes;":              '\U00002280',
+-	"NotPrecedesSlantEqual;":    '\U000022E0',
+-	"NotReverseElement;":        '\U0000220C',
+-	"NotRightTriangle;":         '\U000022EB',
+-	"NotRightTriangleEqual;":    '\U000022ED',
+-	"NotSquareSubsetEqual;":     '\U000022E2',
+-	"NotSquareSupersetEqual;":   '\U000022E3',
+-	"NotSubsetEqual;":           '\U00002288',
+-	"NotSucceeds;":              '\U00002281',
+-	"NotSucceedsSlantEqual;":    '\U000022E1',
+-	"NotSupersetEqual;":         '\U00002289',
+-	"NotTilde;":                 '\U00002241',
+-	"NotTildeEqual;":            '\U00002244',
+-	"NotTildeFullEqual;":        '\U00002247',
+-	"NotTildeTilde;":            '\U00002249',
+-	"NotVerticalBar;":           '\U00002224',
+-	"Nscr;":                     '\U0001D4A9',
+-	"Ntilde;":                   '\U000000D1',
+-	"Nu;":                       '\U0000039D',
+-	"OElig;":                    '\U00000152',
+-	"Oacute;":                   '\U000000D3',
+-	"Ocirc;":                    '\U000000D4',
+-	"Ocy;":                      '\U0000041E',
+-	"Odblac;":                   '\U00000150',
+-	"Ofr;":                      '\U0001D512',
+-	"Ograve;":                   '\U000000D2',
+-	"Omacr;":                    '\U0000014C',
+-	"Omega;":                    '\U000003A9',
+-	"Omicron;":                  '\U0000039F',
+-	"Oopf;":                     '\U0001D546',
+-	"OpenCurlyDoubleQuote;":     '\U0000201C',
+-	"OpenCurlyQuote;":           '\U00002018',
+-	"Or;":                       '\U00002A54',
+-	"Oscr;":                     '\U0001D4AA',
+-	"Oslash;":                   '\U000000D8',
+-	"Otilde;":                   '\U000000D5',
+-	"Otimes;":                   '\U00002A37',
+-	"Ouml;":                     '\U000000D6',
+-	"OverBar;":                  '\U0000203E',
+-	"OverBrace;":                '\U000023DE',
+-	"OverBracket;":              '\U000023B4',
+-	"OverParenthesis;":          '\U000023DC',
+-	"PartialD;":                 '\U00002202',
+-	"Pcy;":                      '\U0000041F',
+-	"Pfr;":                      '\U0001D513',
+-	"Phi;":                      '\U000003A6',
+-	"Pi;":                       '\U000003A0',
+-	"PlusMinus;":                '\U000000B1',
+-	"Poincareplane;":            '\U0000210C',
+-	"Popf;":                     '\U00002119',
+-	"Pr;":                       '\U00002ABB',
+-	"Precedes;":                 '\U0000227A',
+-	"PrecedesEqual;":            '\U00002AAF',
+-	"PrecedesSlantEqual;":       '\U0000227C',
+-	"PrecedesTilde;":            '\U0000227E',
+-	"Prime;":                    '\U00002033',
+-	"Product;":                  '\U0000220F',
+-	"Proportion;":               '\U00002237',
+-	"Proportional;":             '\U0000221D',
+-	"Pscr;":                     '\U0001D4AB',
+-	"Psi;":                      '\U000003A8',
+-	"QUOT;":                     '\U00000022',
+-	"Qfr;":                      '\U0001D514',
+-	"Qopf;":                     '\U0000211A',
+-	"Qscr;":                     '\U0001D4AC',
+-	"RBarr;":                    '\U00002910',
+-	"REG;":                      '\U000000AE',
+-	"Racute;":                   '\U00000154',
+-	"Rang;":                     '\U000027EB',
+-	"Rarr;":                     '\U000021A0',
+-	"Rarrtl;":                   '\U00002916',
+-	"Rcaron;":                   '\U00000158',
+-	"Rcedil;":                   '\U00000156',
+-	"Rcy;":                      '\U00000420',
+-	"Re;":                       '\U0000211C',
+-	"ReverseElement;":           '\U0000220B',
+-	"ReverseEquilibrium;":       '\U000021CB',
+-	"ReverseUpEquilibrium;":     '\U0000296F',
+-	"Rfr;":                      '\U0000211C',
+-	"Rho;":                      '\U000003A1',
+-	"RightAngleBracket;":        '\U000027E9',
+-	"RightArrow;":               '\U00002192',
+-	"RightArrowBar;":            '\U000021E5',
+-	"RightArrowLeftArrow;":      '\U000021C4',
+-	"RightCeiling;":             '\U00002309',
+-	"RightDoubleBracket;":       '\U000027E7',
+-	"RightDownTeeVector;":       '\U0000295D',
+-	"RightDownVector;":          '\U000021C2',
+-	"RightDownVectorBar;":       '\U00002955',
+-	"RightFloor;":               '\U0000230B',
+-	"RightTee;":                 '\U000022A2',
+-	"RightTeeArrow;":            '\U000021A6',
+-	"RightTeeVector;":           '\U0000295B',
+-	"RightTriangle;":            '\U000022B3',
+-	"RightTriangleBar;":         '\U000029D0',
+-	"RightTriangleEqual;":       '\U000022B5',
+-	"RightUpDownVector;":        '\U0000294F',
+-	"RightUpTeeVector;":         '\U0000295C',
+-	"RightUpVector;":            '\U000021BE',
+-	"RightUpVectorBar;":         '\U00002954',
+-	"RightVector;":              '\U000021C0',
+-	"RightVectorBar;":           '\U00002953',
+-	"Rightarrow;":               '\U000021D2',
+-	"Ropf;":                     '\U0000211D',
+-	"RoundImplies;":             '\U00002970',
+-	"Rrightarrow;":              '\U000021DB',
+-	"Rscr;":                     '\U0000211B',
+-	"Rsh;":                      '\U000021B1',
+-	"RuleDelayed;":              '\U000029F4',
+-	"SHCHcy;":                   '\U00000429',
+-	"SHcy;":                     '\U00000428',
+-	"SOFTcy;":                   '\U0000042C',
+-	"Sacute;":                   '\U0000015A',
+-	"Sc;":                       '\U00002ABC',
+-	"Scaron;":                   '\U00000160',
+-	"Scedil;":                   '\U0000015E',
+-	"Scirc;":                    '\U0000015C',
+-	"Scy;":                      '\U00000421',
+-	"Sfr;":                      '\U0001D516',
+-	"ShortDownArrow;":           '\U00002193',
+-	"ShortLeftArrow;":           '\U00002190',
+-	"ShortRightArrow;":          '\U00002192',
+-	"ShortUpArrow;":             '\U00002191',
+-	"Sigma;":                    '\U000003A3',
+-	"SmallCircle;":              '\U00002218',
+-	"Sopf;":                     '\U0001D54A',
+-	"Sqrt;":                     '\U0000221A',
+-	"Square;":                   '\U000025A1',
+-	"SquareIntersection;":       '\U00002293',
+-	"SquareSubset;":             '\U0000228F',
+-	"SquareSubsetEqual;":        '\U00002291',
+-	"SquareSuperset;":           '\U00002290',
+-	"SquareSupersetEqual;":      '\U00002292',
+-	"SquareUnion;":              '\U00002294',
+-	"Sscr;":                     '\U0001D4AE',
+-	"Star;":                     '\U000022C6',
+-	"Sub;":                      '\U000022D0',
+-	"Subset;":                   '\U000022D0',
+-	"SubsetEqual;":              '\U00002286',
+-	"Succeeds;":                 '\U0000227B',
+-	"SucceedsEqual;":            '\U00002AB0',
+-	"SucceedsSlantEqual;":       '\U0000227D',
+-	"SucceedsTilde;":            '\U0000227F',
+-	"SuchThat;":                 '\U0000220B',
+-	"Sum;":                      '\U00002211',
+-	"Sup;":                      '\U000022D1',
+-	"Superset;":                 '\U00002283',
+-	"SupersetEqual;":            '\U00002287',
+-	"Supset;":                   '\U000022D1',
+-	"THORN;":                    '\U000000DE',
+-	"TRADE;":                    '\U00002122',
+-	"TSHcy;":                    '\U0000040B',
+-	"TScy;":                     '\U00000426',
+-	"Tab;":                      '\U00000009',
+-	"Tau;":                      '\U000003A4',
+-	"Tcaron;":                   '\U00000164',
+-	"Tcedil;":                   '\U00000162',
+-	"Tcy;":                      '\U00000422',
+-	"Tfr;":                      '\U0001D517',
+-	"Therefore;":                '\U00002234',
+-	"Theta;":                    '\U00000398',
+-	"ThinSpace;":                '\U00002009',
+-	"Tilde;":                    '\U0000223C',
+-	"TildeEqual;":               '\U00002243',
+-	"TildeFullEqual;":           '\U00002245',
+-	"TildeTilde;":               '\U00002248',
+-	"Topf;":                     '\U0001D54B',
+-	"TripleDot;":                '\U000020DB',
+-	"Tscr;":                     '\U0001D4AF',
+-	"Tstrok;":                   '\U00000166',
+-	"Uacute;":                   '\U000000DA',
+-	"Uarr;":                     '\U0000219F',
+-	"Uarrocir;":                 '\U00002949',
+-	"Ubrcy;":                    '\U0000040E',
+-	"Ubreve;":                   '\U0000016C',
+-	"Ucirc;":                    '\U000000DB',
+-	"Ucy;":                      '\U00000423',
+-	"Udblac;":                   '\U00000170',
+-	"Ufr;":                      '\U0001D518',
+-	"Ugrave;":                   '\U000000D9',
+-	"Umacr;":                    '\U0000016A',
+-	"UnderBar;":                 '\U0000005F',
+-	"UnderBrace;":               '\U000023DF',
+-	"UnderBracket;":             '\U000023B5',
+-	"UnderParenthesis;":         '\U000023DD',
+-	"Union;":                    '\U000022C3',
+-	"UnionPlus;":                '\U0000228E',
+-	"Uogon;":                    '\U00000172',
+-	"Uopf;":                     '\U0001D54C',
+-	"UpArrow;":                  '\U00002191',
+-	"UpArrowBar;":               '\U00002912',
+-	"UpArrowDownArrow;":         '\U000021C5',
+-	"UpDownArrow;":              '\U00002195',
+-	"UpEquilibrium;":            '\U0000296E',
+-	"UpTee;":                    '\U000022A5',
+-	"UpTeeArrow;":               '\U000021A5',
+-	"Uparrow;":                  '\U000021D1',
+-	"Updownarrow;":              '\U000021D5',
+-	"UpperLeftArrow;":           '\U00002196',
+-	"UpperRightArrow;":          '\U00002197',
+-	"Upsi;":                     '\U000003D2',
+-	"Upsilon;":                  '\U000003A5',
+-	"Uring;":                    '\U0000016E',
+-	"Uscr;":                     '\U0001D4B0',
+-	"Utilde;":                   '\U00000168',
+-	"Uuml;":                     '\U000000DC',
+-	"VDash;":                    '\U000022AB',
+-	"Vbar;":                     '\U00002AEB',
+-	"Vcy;":                      '\U00000412',
+-	"Vdash;":                    '\U000022A9',
+-	"Vdashl;":                   '\U00002AE6',
+-	"Vee;":                      '\U000022C1',
+-	"Verbar;":                   '\U00002016',
+-	"Vert;":                     '\U00002016',
+-	"VerticalBar;":              '\U00002223',
+-	"VerticalLine;":             '\U0000007C',
+-	"VerticalSeparator;":        '\U00002758',
+-	"VerticalTilde;":            '\U00002240',
+-	"VeryThinSpace;":            '\U0000200A',
+-	"Vfr;":                      '\U0001D519',
+-	"Vopf;":                     '\U0001D54D',
+-	"Vscr;":                     '\U0001D4B1',
+-	"Vvdash;":                   '\U000022AA',
+-	"Wcirc;":                    '\U00000174',
+-	"Wedge;":                    '\U000022C0',
+-	"Wfr;":                      '\U0001D51A',
+-	"Wopf;":                     '\U0001D54E',
+-	"Wscr;":                     '\U0001D4B2',
+-	"Xfr;":                      '\U0001D51B',
+-	"Xi;":                       '\U0000039E',
+-	"Xopf;":                     '\U0001D54F',
+-	"Xscr;":                     '\U0001D4B3',
+-	"YAcy;":                     '\U0000042F',
+-	"YIcy;":                     '\U00000407',
+-	"YUcy;":                     '\U0000042E',
+-	"Yacute;":                   '\U000000DD',
+-	"Ycirc;":                    '\U00000176',
+-	"Ycy;":                      '\U0000042B',
+-	"Yfr;":                      '\U0001D51C',
+-	"Yopf;":                     '\U0001D550',
+-	"Yscr;":                     '\U0001D4B4',
+-	"Yuml;":                     '\U00000178',
+-	"ZHcy;":                     '\U00000416',
+-	"Zacute;":                   '\U00000179',
+-	"Zcaron;":                   '\U0000017D',
+-	"Zcy;":                      '\U00000417',
+-	"Zdot;":                     '\U0000017B',
+-	"ZeroWidthSpace;":           '\U0000200B',
+-	"Zeta;":                     '\U00000396',
+-	"Zfr;":                      '\U00002128',
+-	"Zopf;":                     '\U00002124',
+-	"Zscr;":                     '\U0001D4B5',
+-	"aacute;":                   '\U000000E1',
+-	"abreve;":                   '\U00000103',
+-	"ac;":                       '\U0000223E',
+-	"acd;":                      '\U0000223F',
+-	"acirc;":                    '\U000000E2',
+-	"acute;":                    '\U000000B4',
+-	"acy;":                      '\U00000430',
+-	"aelig;":                    '\U000000E6',
+-	"af;":                       '\U00002061',
+-	"afr;":                      '\U0001D51E',
+-	"agrave;":                   '\U000000E0',
+-	"alefsym;":                  '\U00002135',
+-	"aleph;":                    '\U00002135',
+-	"alpha;":                    '\U000003B1',
+-	"amacr;":                    '\U00000101',
+-	"amalg;":                    '\U00002A3F',
+-	"amp;":                      '\U00000026',
+-	"and;":                      '\U00002227',
+-	"andand;":                   '\U00002A55',
+-	"andd;":                     '\U00002A5C',
+-	"andslope;":                 '\U00002A58',
+-	"andv;":                     '\U00002A5A',
+-	"ang;":                      '\U00002220',
+-	"ange;":                     '\U000029A4',
+-	"angle;":                    '\U00002220',
+-	"angmsd;":                   '\U00002221',
+-	"angmsdaa;":                 '\U000029A8',
+-	"angmsdab;":                 '\U000029A9',
+-	"angmsdac;":                 '\U000029AA',
+-	"angmsdad;":                 '\U000029AB',
+-	"angmsdae;":                 '\U000029AC',
+-	"angmsdaf;":                 '\U000029AD',
+-	"angmsdag;":                 '\U000029AE',
+-	"angmsdah;":                 '\U000029AF',
+-	"angrt;":                    '\U0000221F',
+-	"angrtvb;":                  '\U000022BE',
+-	"angrtvbd;":                 '\U0000299D',
+-	"angsph;":                   '\U00002222',
+-	"angst;":                    '\U000000C5',
+-	"angzarr;":                  '\U0000237C',
+-	"aogon;":                    '\U00000105',
+-	"aopf;":                     '\U0001D552',
+-	"ap;":                       '\U00002248',
+-	"apE;":                      '\U00002A70',
+-	"apacir;":                   '\U00002A6F',
+-	"ape;":                      '\U0000224A',
+-	"apid;":                     '\U0000224B',
+-	"apos;":                     '\U00000027',
+-	"approx;":                   '\U00002248',
+-	"approxeq;":                 '\U0000224A',
+-	"aring;":                    '\U000000E5',
+-	"ascr;":                     '\U0001D4B6',
+-	"ast;":                      '\U0000002A',
+-	"asymp;":                    '\U00002248',
+-	"asympeq;":                  '\U0000224D',
+-	"atilde;":                   '\U000000E3',
+-	"auml;":                     '\U000000E4',
+-	"awconint;":                 '\U00002233',
+-	"awint;":                    '\U00002A11',
+-	"bNot;":                     '\U00002AED',
+-	"backcong;":                 '\U0000224C',
+-	"backepsilon;":              '\U000003F6',
+-	"backprime;":                '\U00002035',
+-	"backsim;":                  '\U0000223D',
+-	"backsimeq;":                '\U000022CD',
+-	"barvee;":                   '\U000022BD',
+-	"barwed;":                   '\U00002305',
+-	"barwedge;":                 '\U00002305',
+-	"bbrk;":                     '\U000023B5',
+-	"bbrktbrk;":                 '\U000023B6',
+-	"bcong;":                    '\U0000224C',
+-	"bcy;":                      '\U00000431',
+-	"bdquo;":                    '\U0000201E',
+-	"becaus;":                   '\U00002235',
+-	"because;":                  '\U00002235',
+-	"bemptyv;":                  '\U000029B0',
+-	"bepsi;":                    '\U000003F6',
+-	"bernou;":                   '\U0000212C',
+-	"beta;":                     '\U000003B2',
+-	"beth;":                     '\U00002136',
+-	"between;":                  '\U0000226C',
+-	"bfr;":                      '\U0001D51F',
+-	"bigcap;":                   '\U000022C2',
+-	"bigcirc;":                  '\U000025EF',
+-	"bigcup;":                   '\U000022C3',
+-	"bigodot;":                  '\U00002A00',
+-	"bigoplus;":                 '\U00002A01',
+-	"bigotimes;":                '\U00002A02',
+-	"bigsqcup;":                 '\U00002A06',
+-	"bigstar;":                  '\U00002605',
+-	"bigtriangledown;":          '\U000025BD',
+-	"bigtriangleup;":            '\U000025B3',
+-	"biguplus;":                 '\U00002A04',
+-	"bigvee;":                   '\U000022C1',
+-	"bigwedge;":                 '\U000022C0',
+-	"bkarow;":                   '\U0000290D',
+-	"blacklozenge;":             '\U000029EB',
+-	"blacksquare;":              '\U000025AA',
+-	"blacktriangle;":            '\U000025B4',
+-	"blacktriangledown;":        '\U000025BE',
+-	"blacktriangleleft;":        '\U000025C2',
+-	"blacktriangleright;":       '\U000025B8',
+-	"blank;":                    '\U00002423',
+-	"blk12;":                    '\U00002592',
+-	"blk14;":                    '\U00002591',
+-	"blk34;":                    '\U00002593',
+-	"block;":                    '\U00002588',
+-	"bnot;":                     '\U00002310',
+-	"bopf;":                     '\U0001D553',
+-	"bot;":                      '\U000022A5',
+-	"bottom;":                   '\U000022A5',
+-	"bowtie;":                   '\U000022C8',
+-	"boxDL;":                    '\U00002557',
+-	"boxDR;":                    '\U00002554',
+-	"boxDl;":                    '\U00002556',
+-	"boxDr;":                    '\U00002553',
+-	"boxH;":                     '\U00002550',
+-	"boxHD;":                    '\U00002566',
+-	"boxHU;":                    '\U00002569',
+-	"boxHd;":                    '\U00002564',
+-	"boxHu;":                    '\U00002567',
+-	"boxUL;":                    '\U0000255D',
+-	"boxUR;":                    '\U0000255A',
+-	"boxUl;":                    '\U0000255C',
+-	"boxUr;":                    '\U00002559',
+-	"boxV;":                     '\U00002551',
+-	"boxVH;":                    '\U0000256C',
+-	"boxVL;":                    '\U00002563',
+-	"boxVR;":                    '\U00002560',
+-	"boxVh;":                    '\U0000256B',
+-	"boxVl;":                    '\U00002562',
+-	"boxVr;":                    '\U0000255F',
+-	"boxbox;":                   '\U000029C9',
+-	"boxdL;":                    '\U00002555',
+-	"boxdR;":                    '\U00002552',
+-	"boxdl;":                    '\U00002510',
+-	"boxdr;":                    '\U0000250C',
+-	"boxh;":                     '\U00002500',
+-	"boxhD;":                    '\U00002565',
+-	"boxhU;":                    '\U00002568',
+-	"boxhd;":                    '\U0000252C',
+-	"boxhu;":                    '\U00002534',
+-	"boxminus;":                 '\U0000229F',
+-	"boxplus;":                  '\U0000229E',
+-	"boxtimes;":                 '\U000022A0',
+-	"boxuL;":                    '\U0000255B',
+-	"boxuR;":                    '\U00002558',
+-	"boxul;":                    '\U00002518',
+-	"boxur;":                    '\U00002514',
+-	"boxv;":                     '\U00002502',
+-	"boxvH;":                    '\U0000256A',
+-	"boxvL;":                    '\U00002561',
+-	"boxvR;":                    '\U0000255E',
+-	"boxvh;":                    '\U0000253C',
+-	"boxvl;":                    '\U00002524',
+-	"boxvr;":                    '\U0000251C',
+-	"bprime;":                   '\U00002035',
+-	"breve;":                    '\U000002D8',
+-	"brvbar;":                   '\U000000A6',
+-	"bscr;":                     '\U0001D4B7',
+-	"bsemi;":                    '\U0000204F',
+-	"bsim;":                     '\U0000223D',
+-	"bsime;":                    '\U000022CD',
+-	"bsol;":                     '\U0000005C',
+-	"bsolb;":                    '\U000029C5',
+-	"bsolhsub;":                 '\U000027C8',
+-	"bull;":                     '\U00002022',
+-	"bullet;":                   '\U00002022',
+-	"bump;":                     '\U0000224E',
+-	"bumpE;":                    '\U00002AAE',
+-	"bumpe;":                    '\U0000224F',
+-	"bumpeq;":                   '\U0000224F',
+-	"cacute;":                   '\U00000107',
+-	"cap;":                      '\U00002229',
+-	"capand;":                   '\U00002A44',
+-	"capbrcup;":                 '\U00002A49',
+-	"capcap;":                   '\U00002A4B',
+-	"capcup;":                   '\U00002A47',
+-	"capdot;":                   '\U00002A40',
+-	"caret;":                    '\U00002041',
+-	"caron;":                    '\U000002C7',
+-	"ccaps;":                    '\U00002A4D',
+-	"ccaron;":                   '\U0000010D',
+-	"ccedil;":                   '\U000000E7',
+-	"ccirc;":                    '\U00000109',
+-	"ccups;":                    '\U00002A4C',
+-	"ccupssm;":                  '\U00002A50',
+-	"cdot;":                     '\U0000010B',
+-	"cedil;":                    '\U000000B8',
+-	"cemptyv;":                  '\U000029B2',
+-	"cent;":                     '\U000000A2',
+-	"centerdot;":                '\U000000B7',
+-	"cfr;":                      '\U0001D520',
+-	"chcy;":                     '\U00000447',
+-	"check;":                    '\U00002713',
+-	"checkmark;":                '\U00002713',
+-	"chi;":                      '\U000003C7',
+-	"cir;":                      '\U000025CB',
+-	"cirE;":                     '\U000029C3',
+-	"circ;":                     '\U000002C6',
+-	"circeq;":                   '\U00002257',
+-	"circlearrowleft;":          '\U000021BA',
+-	"circlearrowright;":         '\U000021BB',
+-	"circledR;":                 '\U000000AE',
+-	"circledS;":                 '\U000024C8',
+-	"circledast;":               '\U0000229B',
+-	"circledcirc;":              '\U0000229A',
+-	"circleddash;":              '\U0000229D',
+-	"cire;":                     '\U00002257',
+-	"cirfnint;":                 '\U00002A10',
+-	"cirmid;":                   '\U00002AEF',
+-	"cirscir;":                  '\U000029C2',
+-	"clubs;":                    '\U00002663',
+-	"clubsuit;":                 '\U00002663',
+-	"colon;":                    '\U0000003A',
+-	"colone;":                   '\U00002254',
+-	"coloneq;":                  '\U00002254',
+-	"comma;":                    '\U0000002C',
+-	"commat;":                   '\U00000040',
+-	"comp;":                     '\U00002201',
+-	"compfn;":                   '\U00002218',
+-	"complement;":               '\U00002201',
+-	"complexes;":                '\U00002102',
+-	"cong;":                     '\U00002245',
+-	"congdot;":                  '\U00002A6D',
+-	"conint;":                   '\U0000222E',
+-	"copf;":                     '\U0001D554',
+-	"coprod;":                   '\U00002210',
+-	"copy;":                     '\U000000A9',
+-	"copysr;":                   '\U00002117',
+-	"crarr;":                    '\U000021B5',
+-	"cross;":                    '\U00002717',
+-	"cscr;":                     '\U0001D4B8',
+-	"csub;":                     '\U00002ACF',
+-	"csube;":                    '\U00002AD1',
+-	"csup;":                     '\U00002AD0',
+-	"csupe;":                    '\U00002AD2',
+-	"ctdot;":                    '\U000022EF',
+-	"cudarrl;":                  '\U00002938',
+-	"cudarrr;":                  '\U00002935',
+-	"cuepr;":                    '\U000022DE',
+-	"cuesc;":                    '\U000022DF',
+-	"cularr;":                   '\U000021B6',
+-	"cularrp;":                  '\U0000293D',
+-	"cup;":                      '\U0000222A',
+-	"cupbrcap;":                 '\U00002A48',
+-	"cupcap;":                   '\U00002A46',
+-	"cupcup;":                   '\U00002A4A',
+-	"cupdot;":                   '\U0000228D',
+-	"cupor;":                    '\U00002A45',
+-	"curarr;":                   '\U000021B7',
+-	"curarrm;":                  '\U0000293C',
+-	"curlyeqprec;":              '\U000022DE',
+-	"curlyeqsucc;":              '\U000022DF',
+-	"curlyvee;":                 '\U000022CE',
+-	"curlywedge;":               '\U000022CF',
+-	"curren;":                   '\U000000A4',
+-	"curvearrowleft;":           '\U000021B6',
+-	"curvearrowright;":          '\U000021B7',
+-	"cuvee;":                    '\U000022CE',
+-	"cuwed;":                    '\U000022CF',
+-	"cwconint;":                 '\U00002232',
+-	"cwint;":                    '\U00002231',
+-	"cylcty;":                   '\U0000232D',
+-	"dArr;":                     '\U000021D3',
+-	"dHar;":                     '\U00002965',
+-	"dagger;":                   '\U00002020',
+-	"daleth;":                   '\U00002138',
+-	"darr;":                     '\U00002193',
+-	"dash;":                     '\U00002010',
+-	"dashv;":                    '\U000022A3',
+-	"dbkarow;":                  '\U0000290F',
+-	"dblac;":                    '\U000002DD',
+-	"dcaron;":                   '\U0000010F',
+-	"dcy;":                      '\U00000434',
+-	"dd;":                       '\U00002146',
+-	"ddagger;":                  '\U00002021',
+-	"ddarr;":                    '\U000021CA',
+-	"ddotseq;":                  '\U00002A77',
+-	"deg;":                      '\U000000B0',
+-	"delta;":                    '\U000003B4',
+-	"demptyv;":                  '\U000029B1',
+-	"dfisht;":                   '\U0000297F',
+-	"dfr;":                      '\U0001D521',
+-	"dharl;":                    '\U000021C3',
+-	"dharr;":                    '\U000021C2',
+-	"diam;":                     '\U000022C4',
+-	"diamond;":                  '\U000022C4',
+-	"diamondsuit;":              '\U00002666',
+-	"diams;":                    '\U00002666',
+-	"die;":                      '\U000000A8',
+-	"digamma;":                  '\U000003DD',
+-	"disin;":                    '\U000022F2',
+-	"div;":                      '\U000000F7',
+-	"divide;":                   '\U000000F7',
+-	"divideontimes;":            '\U000022C7',
+-	"divonx;":                   '\U000022C7',
+-	"djcy;":                     '\U00000452',
+-	"dlcorn;":                   '\U0000231E',
+-	"dlcrop;":                   '\U0000230D',
+-	"dollar;":                   '\U00000024',
+-	"dopf;":                     '\U0001D555',
+-	"dot;":                      '\U000002D9',
+-	"doteq;":                    '\U00002250',
+-	"doteqdot;":                 '\U00002251',
+-	"dotminus;":                 '\U00002238',
+-	"dotplus;":                  '\U00002214',
+-	"dotsquare;":                '\U000022A1',
+-	"doublebarwedge;":           '\U00002306',
+-	"downarrow;":                '\U00002193',
+-	"downdownarrows;":           '\U000021CA',
+-	"downharpoonleft;":          '\U000021C3',
+-	"downharpoonright;":         '\U000021C2',
+-	"drbkarow;":                 '\U00002910',
+-	"drcorn;":                   '\U0000231F',
+-	"drcrop;":                   '\U0000230C',
+-	"dscr;":                     '\U0001D4B9',
+-	"dscy;":                     '\U00000455',
+-	"dsol;":                     '\U000029F6',
+-	"dstrok;":                   '\U00000111',
+-	"dtdot;":                    '\U000022F1',
+-	"dtri;":                     '\U000025BF',
+-	"dtrif;":                    '\U000025BE',
+-	"duarr;":                    '\U000021F5',
+-	"duhar;":                    '\U0000296F',
+-	"dwangle;":                  '\U000029A6',
+-	"dzcy;":                     '\U0000045F',
+-	"dzigrarr;":                 '\U000027FF',
+-	"eDDot;":                    '\U00002A77',
+-	"eDot;":                     '\U00002251',
+-	"eacute;":                   '\U000000E9',
+-	"easter;":                   '\U00002A6E',
+-	"ecaron;":                   '\U0000011B',
+-	"ecir;":                     '\U00002256',
+-	"ecirc;":                    '\U000000EA',
+-	"ecolon;":                   '\U00002255',
+-	"ecy;":                      '\U0000044D',
+-	"edot;":                     '\U00000117',
+-	"ee;":                       '\U00002147',
+-	"efDot;":                    '\U00002252',
+-	"efr;":                      '\U0001D522',
+-	"eg;":                       '\U00002A9A',
+-	"egrave;":                   '\U000000E8',
+-	"egs;":                      '\U00002A96',
+-	"egsdot;":                   '\U00002A98',
+-	"el;":                       '\U00002A99',
+-	"elinters;":                 '\U000023E7',
+-	"ell;":                      '\U00002113',
+-	"els;":                      '\U00002A95',
+-	"elsdot;":                   '\U00002A97',
+-	"emacr;":                    '\U00000113',
+-	"empty;":                    '\U00002205',
+-	"emptyset;":                 '\U00002205',
+-	"emptyv;":                   '\U00002205',
+-	"emsp;":                     '\U00002003',
+-	"emsp13;":                   '\U00002004',
+-	"emsp14;":                   '\U00002005',
+-	"eng;":                      '\U0000014B',
+-	"ensp;":                     '\U00002002',
+-	"eogon;":                    '\U00000119',
+-	"eopf;":                     '\U0001D556',
+-	"epar;":                     '\U000022D5',
+-	"eparsl;":                   '\U000029E3',
+-	"eplus;":                    '\U00002A71',
+-	"epsi;":                     '\U000003B5',
+-	"epsilon;":                  '\U000003B5',
+-	"epsiv;":                    '\U000003F5',
+-	"eqcirc;":                   '\U00002256',
+-	"eqcolon;":                  '\U00002255',
+-	"eqsim;":                    '\U00002242',
+-	"eqslantgtr;":               '\U00002A96',
+-	"eqslantless;":              '\U00002A95',
+-	"equals;":                   '\U0000003D',
+-	"equest;":                   '\U0000225F',
+-	"equiv;":                    '\U00002261',
+-	"equivDD;":                  '\U00002A78',
+-	"eqvparsl;":                 '\U000029E5',
+-	"erDot;":                    '\U00002253',
+-	"erarr;":                    '\U00002971',
+-	"escr;":                     '\U0000212F',
+-	"esdot;":                    '\U00002250',
+-	"esim;":                     '\U00002242',
+-	"eta;":                      '\U000003B7',
+-	"eth;":                      '\U000000F0',
+-	"euml;":                     '\U000000EB',
+-	"euro;":                     '\U000020AC',
+-	"excl;":                     '\U00000021',
+-	"exist;":                    '\U00002203',
+-	"expectation;":              '\U00002130',
+-	"exponentiale;":             '\U00002147',
+-	"fallingdotseq;":            '\U00002252',
+-	"fcy;":                      '\U00000444',
+-	"female;":                   '\U00002640',
+-	"ffilig;":                   '\U0000FB03',
+-	"fflig;":                    '\U0000FB00',
+-	"ffllig;":                   '\U0000FB04',
+-	"ffr;":                      '\U0001D523',
+-	"filig;":                    '\U0000FB01',
+-	"flat;":                     '\U0000266D',
+-	"fllig;":                    '\U0000FB02',
+-	"fltns;":                    '\U000025B1',
+-	"fnof;":                     '\U00000192',
+-	"fopf;":                     '\U0001D557',
+-	"forall;":                   '\U00002200',
+-	"fork;":                     '\U000022D4',
+-	"forkv;":                    '\U00002AD9',
+-	"fpartint;":                 '\U00002A0D',
+-	"frac12;":                   '\U000000BD',
+-	"frac13;":                   '\U00002153',
+-	"frac14;":                   '\U000000BC',
+-	"frac15;":                   '\U00002155',
+-	"frac16;":                   '\U00002159',
+-	"frac18;":                   '\U0000215B',
+-	"frac23;":                   '\U00002154',
+-	"frac25;":                   '\U00002156',
+-	"frac34;":                   '\U000000BE',
+-	"frac35;":                   '\U00002157',
+-	"frac38;":                   '\U0000215C',
+-	"frac45;":                   '\U00002158',
+-	"frac56;":                   '\U0000215A',
+-	"frac58;":                   '\U0000215D',
+-	"frac78;":                   '\U0000215E',
+-	"frasl;":                    '\U00002044',
+-	"frown;":                    '\U00002322',
+-	"fscr;":                     '\U0001D4BB',
+-	"gE;":                       '\U00002267',
+-	"gEl;":                      '\U00002A8C',
+-	"gacute;":                   '\U000001F5',
+-	"gamma;":                    '\U000003B3',
+-	"gammad;":                   '\U000003DD',
+-	"gap;":                      '\U00002A86',
+-	"gbreve;":                   '\U0000011F',
+-	"gcirc;":                    '\U0000011D',
+-	"gcy;":                      '\U00000433',
+-	"gdot;":                     '\U00000121',
+-	"ge;":                       '\U00002265',
+-	"gel;":                      '\U000022DB',
+-	"geq;":                      '\U00002265',
+-	"geqq;":                     '\U00002267',
+-	"geqslant;":                 '\U00002A7E',
+-	"ges;":                      '\U00002A7E',
+-	"gescc;":                    '\U00002AA9',
+-	"gesdot;":                   '\U00002A80',
+-	"gesdoto;":                  '\U00002A82',
+-	"gesdotol;":                 '\U00002A84',
+-	"gesles;":                   '\U00002A94',
+-	"gfr;":                      '\U0001D524',
+-	"gg;":                       '\U0000226B',
+-	"ggg;":                      '\U000022D9',
+-	"gimel;":                    '\U00002137',
+-	"gjcy;":                     '\U00000453',
+-	"gl;":                       '\U00002277',
+-	"glE;":                      '\U00002A92',
+-	"gla;":                      '\U00002AA5',
+-	"glj;":                      '\U00002AA4',
+-	"gnE;":                      '\U00002269',
+-	"gnap;":                     '\U00002A8A',
+-	"gnapprox;":                 '\U00002A8A',
+-	"gne;":                      '\U00002A88',
+-	"gneq;":                     '\U00002A88',
+-	"gneqq;":                    '\U00002269',
+-	"gnsim;":                    '\U000022E7',
+-	"gopf;":                     '\U0001D558',
+-	"grave;":                    '\U00000060',
+-	"gscr;":                     '\U0000210A',
+-	"gsim;":                     '\U00002273',
+-	"gsime;":                    '\U00002A8E',
+-	"gsiml;":                    '\U00002A90',
+-	"gt;":                       '\U0000003E',
+-	"gtcc;":                     '\U00002AA7',
+-	"gtcir;":                    '\U00002A7A',
+-	"gtdot;":                    '\U000022D7',
+-	"gtlPar;":                   '\U00002995',
+-	"gtquest;":                  '\U00002A7C',
+-	"gtrapprox;":                '\U00002A86',
+-	"gtrarr;":                   '\U00002978',
+-	"gtrdot;":                   '\U000022D7',
+-	"gtreqless;":                '\U000022DB',
+-	"gtreqqless;":               '\U00002A8C',
+-	"gtrless;":                  '\U00002277',
+-	"gtrsim;":                   '\U00002273',
+-	"hArr;":                     '\U000021D4',
+-	"hairsp;":                   '\U0000200A',
+-	"half;":                     '\U000000BD',
+-	"hamilt;":                   '\U0000210B',
+-	"hardcy;":                   '\U0000044A',
+-	"harr;":                     '\U00002194',
+-	"harrcir;":                  '\U00002948',
+-	"harrw;":                    '\U000021AD',
+-	"hbar;":                     '\U0000210F',
+-	"hcirc;":                    '\U00000125',
+-	"hearts;":                   '\U00002665',
+-	"heartsuit;":                '\U00002665',
+-	"hellip;":                   '\U00002026',
+-	"hercon;":                   '\U000022B9',
+-	"hfr;":                      '\U0001D525',
+-	"hksearow;":                 '\U00002925',
+-	"hkswarow;":                 '\U00002926',
+-	"hoarr;":                    '\U000021FF',
+-	"homtht;":                   '\U0000223B',
+-	"hookleftarrow;":            '\U000021A9',
+-	"hookrightarrow;":           '\U000021AA',
+-	"hopf;":                     '\U0001D559',
+-	"horbar;":                   '\U00002015',
+-	"hscr;":                     '\U0001D4BD',
+-	"hslash;":                   '\U0000210F',
+-	"hstrok;":                   '\U00000127',
+-	"hybull;":                   '\U00002043',
+-	"hyphen;":                   '\U00002010',
+-	"iacute;":                   '\U000000ED',
+-	"ic;":                       '\U00002063',
+-	"icirc;":                    '\U000000EE',
+-	"icy;":                      '\U00000438',
+-	"iecy;":                     '\U00000435',
+-	"iexcl;":                    '\U000000A1',
+-	"iff;":                      '\U000021D4',
+-	"ifr;":                      '\U0001D526',
+-	"igrave;":                   '\U000000EC',
+-	"ii;":                       '\U00002148',
+-	"iiiint;":                   '\U00002A0C',
+-	"iiint;":                    '\U0000222D',
+-	"iinfin;":                   '\U000029DC',
+-	"iiota;":                    '\U00002129',
+-	"ijlig;":                    '\U00000133',
+-	"imacr;":                    '\U0000012B',
+-	"image;":                    '\U00002111',
+-	"imagline;":                 '\U00002110',
+-	"imagpart;":                 '\U00002111',
+-	"imath;":                    '\U00000131',
+-	"imof;":                     '\U000022B7',
+-	"imped;":                    '\U000001B5',
+-	"in;":                       '\U00002208',
+-	"incare;":                   '\U00002105',
+-	"infin;":                    '\U0000221E',
+-	"infintie;":                 '\U000029DD',
+-	"inodot;":                   '\U00000131',
+-	"int;":                      '\U0000222B',
+-	"intcal;":                   '\U000022BA',
+-	"integers;":                 '\U00002124',
+-	"intercal;":                 '\U000022BA',
+-	"intlarhk;":                 '\U00002A17',
+-	"intprod;":                  '\U00002A3C',
+-	"iocy;":                     '\U00000451',
+-	"iogon;":                    '\U0000012F',
+-	"iopf;":                     '\U0001D55A',
+-	"iota;":                     '\U000003B9',
+-	"iprod;":                    '\U00002A3C',
+-	"iquest;":                   '\U000000BF',
+-	"iscr;":                     '\U0001D4BE',
+-	"isin;":                     '\U00002208',
+-	"isinE;":                    '\U000022F9',
+-	"isindot;":                  '\U000022F5',
+-	"isins;":                    '\U000022F4',
+-	"isinsv;":                   '\U000022F3',
+-	"isinv;":                    '\U00002208',
+-	"it;":                       '\U00002062',
+-	"itilde;":                   '\U00000129',
+-	"iukcy;":                    '\U00000456',
+-	"iuml;":                     '\U000000EF',
+-	"jcirc;":                    '\U00000135',
+-	"jcy;":                      '\U00000439',
+-	"jfr;":                      '\U0001D527',
+-	"jmath;":                    '\U00000237',
+-	"jopf;":                     '\U0001D55B',
+-	"jscr;":                     '\U0001D4BF',
+-	"jsercy;":                   '\U00000458',
+-	"jukcy;":                    '\U00000454',
+-	"kappa;":                    '\U000003BA',
+-	"kappav;":                   '\U000003F0',
+-	"kcedil;":                   '\U00000137',
+-	"kcy;":                      '\U0000043A',
+-	"kfr;":                      '\U0001D528',
+-	"kgreen;":                   '\U00000138',
+-	"khcy;":                     '\U00000445',
+-	"kjcy;":                     '\U0000045C',
+-	"kopf;":                     '\U0001D55C',
+-	"kscr;":                     '\U0001D4C0',
+-	"lAarr;":                    '\U000021DA',
+-	"lArr;":                     '\U000021D0',
+-	"lAtail;":                   '\U0000291B',
+-	"lBarr;":                    '\U0000290E',
+-	"lE;":                       '\U00002266',
+-	"lEg;":                      '\U00002A8B',
+-	"lHar;":                     '\U00002962',
+-	"lacute;":                   '\U0000013A',
+-	"laemptyv;":                 '\U000029B4',
+-	"lagran;":                   '\U00002112',
+-	"lambda;":                   '\U000003BB',
+-	"lang;":                     '\U000027E8',
+-	"langd;":                    '\U00002991',
+-	"langle;":                   '\U000027E8',
+-	"lap;":                      '\U00002A85',
+-	"laquo;":                    '\U000000AB',
+-	"larr;":                     '\U00002190',
+-	"larrb;":                    '\U000021E4',
+-	"larrbfs;":                  '\U0000291F',
+-	"larrfs;":                   '\U0000291D',
+-	"larrhk;":                   '\U000021A9',
+-	"larrlp;":                   '\U000021AB',
+-	"larrpl;":                   '\U00002939',
+-	"larrsim;":                  '\U00002973',
+-	"larrtl;":                   '\U000021A2',
+-	"lat;":                      '\U00002AAB',
+-	"latail;":                   '\U00002919',
+-	"late;":                     '\U00002AAD',
+-	"lbarr;":                    '\U0000290C',
+-	"lbbrk;":                    '\U00002772',
+-	"lbrace;":                   '\U0000007B',
+-	"lbrack;":                   '\U0000005B',
+-	"lbrke;":                    '\U0000298B',
+-	"lbrksld;":                  '\U0000298F',
+-	"lbrkslu;":                  '\U0000298D',
+-	"lcaron;":                   '\U0000013E',
+-	"lcedil;":                   '\U0000013C',
+-	"lceil;":                    '\U00002308',
+-	"lcub;":                     '\U0000007B',
+-	"lcy;":                      '\U0000043B',
+-	"ldca;":                     '\U00002936',
+-	"ldquo;":                    '\U0000201C',
+-	"ldquor;":                   '\U0000201E',
+-	"ldrdhar;":                  '\U00002967',
+-	"ldrushar;":                 '\U0000294B',
+-	"ldsh;":                     '\U000021B2',
+-	"le;":                       '\U00002264',
+-	"leftarrow;":                '\U00002190',
+-	"leftarrowtail;":            '\U000021A2',
+-	"leftharpoondown;":          '\U000021BD',
+-	"leftharpoonup;":            '\U000021BC',
+-	"leftleftarrows;":           '\U000021C7',
+-	"leftrightarrow;":           '\U00002194',
+-	"leftrightarrows;":          '\U000021C6',
+-	"leftrightharpoons;":        '\U000021CB',
+-	"leftrightsquigarrow;":      '\U000021AD',
+-	"leftthreetimes;":           '\U000022CB',
+-	"leg;":                      '\U000022DA',
+-	"leq;":                      '\U00002264',
+-	"leqq;":                     '\U00002266',
+-	"leqslant;":                 '\U00002A7D',
+-	"les;":                      '\U00002A7D',
+-	"lescc;":                    '\U00002AA8',
+-	"lesdot;":                   '\U00002A7F',
+-	"lesdoto;":                  '\U00002A81',
+-	"lesdotor;":                 '\U00002A83',
+-	"lesges;":                   '\U00002A93',
+-	"lessapprox;":               '\U00002A85',
+-	"lessdot;":                  '\U000022D6',
+-	"lesseqgtr;":                '\U000022DA',
+-	"lesseqqgtr;":               '\U00002A8B',
+-	"lessgtr;":                  '\U00002276',
+-	"lesssim;":                  '\U00002272',
+-	"lfisht;":                   '\U0000297C',
+-	"lfloor;":                   '\U0000230A',
+-	"lfr;":                      '\U0001D529',
+-	"lg;":                       '\U00002276',
+-	"lgE;":                      '\U00002A91',
+-	"lhard;":                    '\U000021BD',
+-	"lharu;":                    '\U000021BC',
+-	"lharul;":                   '\U0000296A',
+-	"lhblk;":                    '\U00002584',
+-	"ljcy;":                     '\U00000459',
+-	"ll;":                       '\U0000226A',
+-	"llarr;":                    '\U000021C7',
+-	"llcorner;":                 '\U0000231E',
+-	"llhard;":                   '\U0000296B',
+-	"lltri;":                    '\U000025FA',
+-	"lmidot;":                   '\U00000140',
+-	"lmoust;":                   '\U000023B0',
+-	"lmoustache;":               '\U000023B0',
+-	"lnE;":                      '\U00002268',
+-	"lnap;":                     '\U00002A89',
+-	"lnapprox;":                 '\U00002A89',
+-	"lne;":                      '\U00002A87',
+-	"lneq;":                     '\U00002A87',
+-	"lneqq;":                    '\U00002268',
+-	"lnsim;":                    '\U000022E6',
+-	"loang;":                    '\U000027EC',
+-	"loarr;":                    '\U000021FD',
+-	"lobrk;":                    '\U000027E6',
+-	"longleftarrow;":            '\U000027F5',
+-	"longleftrightarrow;":       '\U000027F7',
+-	"longmapsto;":               '\U000027FC',
+-	"longrightarrow;":           '\U000027F6',
+-	"looparrowleft;":            '\U000021AB',
+-	"looparrowright;":           '\U000021AC',
+-	"lopar;":                    '\U00002985',
+-	"lopf;":                     '\U0001D55D',
+-	"loplus;":                   '\U00002A2D',
+-	"lotimes;":                  '\U00002A34',
+-	"lowast;":                   '\U00002217',
+-	"lowbar;":                   '\U0000005F',
+-	"loz;":                      '\U000025CA',
+-	"lozenge;":                  '\U000025CA',
+-	"lozf;":                     '\U000029EB',
+-	"lpar;":                     '\U00000028',
+-	"lparlt;":                   '\U00002993',
+-	"lrarr;":                    '\U000021C6',
+-	"lrcorner;":                 '\U0000231F',
+-	"lrhar;":                    '\U000021CB',
+-	"lrhard;":                   '\U0000296D',
+-	"lrm;":                      '\U0000200E',
+-	"lrtri;":                    '\U000022BF',
+-	"lsaquo;":                   '\U00002039',
+-	"lscr;":                     '\U0001D4C1',
+-	"lsh;":                      '\U000021B0',
+-	"lsim;":                     '\U00002272',
+-	"lsime;":                    '\U00002A8D',
+-	"lsimg;":                    '\U00002A8F',
+-	"lsqb;":                     '\U0000005B',
+-	"lsquo;":                    '\U00002018',
+-	"lsquor;":                   '\U0000201A',
+-	"lstrok;":                   '\U00000142',
+-	"lt;":                       '\U0000003C',
+-	"ltcc;":                     '\U00002AA6',
+-	"ltcir;":                    '\U00002A79',
+-	"ltdot;":                    '\U000022D6',
+-	"lthree;":                   '\U000022CB',
+-	"ltimes;":                   '\U000022C9',
+-	"ltlarr;":                   '\U00002976',
+-	"ltquest;":                  '\U00002A7B',
+-	"ltrPar;":                   '\U00002996',
+-	"ltri;":                     '\U000025C3',
+-	"ltrie;":                    '\U000022B4',
+-	"ltrif;":                    '\U000025C2',
+-	"lurdshar;":                 '\U0000294A',
+-	"luruhar;":                  '\U00002966',
+-	"mDDot;":                    '\U0000223A',
+-	"macr;":                     '\U000000AF',
+-	"male;":                     '\U00002642',
+-	"malt;":                     '\U00002720',
+-	"maltese;":                  '\U00002720',
+-	"map;":                      '\U000021A6',
+-	"mapsto;":                   '\U000021A6',
+-	"mapstodown;":               '\U000021A7',
+-	"mapstoleft;":               '\U000021A4',
+-	"mapstoup;":                 '\U000021A5',
+-	"marker;":                   '\U000025AE',
+-	"mcomma;":                   '\U00002A29',
+-	"mcy;":                      '\U0000043C',
+-	"mdash;":                    '\U00002014',
+-	"measuredangle;":            '\U00002221',
+-	"mfr;":                      '\U0001D52A',
+-	"mho;":                      '\U00002127',
+-	"micro;":                    '\U000000B5',
+-	"mid;":                      '\U00002223',
+-	"midast;":                   '\U0000002A',
+-	"midcir;":                   '\U00002AF0',
+-	"middot;":                   '\U000000B7',
+-	"minus;":                    '\U00002212',
+-	"minusb;":                   '\U0000229F',
+-	"minusd;":                   '\U00002238',
+-	"minusdu;":                  '\U00002A2A',
+-	"mlcp;":                     '\U00002ADB',
+-	"mldr;":                     '\U00002026',
+-	"mnplus;":                   '\U00002213',
+-	"models;":                   '\U000022A7',
+-	"mopf;":                     '\U0001D55E',
+-	"mp;":                       '\U00002213',
+-	"mscr;":                     '\U0001D4C2',
+-	"mstpos;":                   '\U0000223E',
+-	"mu;":                       '\U000003BC',
+-	"multimap;":                 '\U000022B8',
+-	"mumap;":                    '\U000022B8',
+-	"nLeftarrow;":               '\U000021CD',
+-	"nLeftrightarrow;":          '\U000021CE',
+-	"nRightarrow;":              '\U000021CF',
+-	"nVDash;":                   '\U000022AF',
+-	"nVdash;":                   '\U000022AE',
+-	"nabla;":                    '\U00002207',
+-	"nacute;":                   '\U00000144',
+-	"nap;":                      '\U00002249',
+-	"napos;":                    '\U00000149',
+-	"napprox;":                  '\U00002249',
+-	"natur;":                    '\U0000266E',
+-	"natural;":                  '\U0000266E',
+-	"naturals;":                 '\U00002115',
+-	"nbsp;":                     '\U000000A0',
+-	"ncap;":                     '\U00002A43',
+-	"ncaron;":                   '\U00000148',
+-	"ncedil;":                   '\U00000146',
+-	"ncong;":                    '\U00002247',
+-	"ncup;":                     '\U00002A42',
+-	"ncy;":                      '\U0000043D',
+-	"ndash;":                    '\U00002013',
+-	"ne;":                       '\U00002260',
+-	"neArr;":                    '\U000021D7',
+-	"nearhk;":                   '\U00002924',
+-	"nearr;":                    '\U00002197',
+-	"nearrow;":                  '\U00002197',
+-	"nequiv;":                   '\U00002262',
+-	"nesear;":                   '\U00002928',
+-	"nexist;":                   '\U00002204',
+-	"nexists;":                  '\U00002204',
+-	"nfr;":                      '\U0001D52B',
+-	"nge;":                      '\U00002271',
+-	"ngeq;":                     '\U00002271',
+-	"ngsim;":                    '\U00002275',
+-	"ngt;":                      '\U0000226F',
+-	"ngtr;":                     '\U0000226F',
+-	"nhArr;":                    '\U000021CE',
+-	"nharr;":                    '\U000021AE',
+-	"nhpar;":                    '\U00002AF2',
+-	"ni;":                       '\U0000220B',
+-	"nis;":                      '\U000022FC',
+-	"nisd;":                     '\U000022FA',
+-	"niv;":                      '\U0000220B',
+-	"njcy;":                     '\U0000045A',
+-	"nlArr;":                    '\U000021CD',
+-	"nlarr;":                    '\U0000219A',
+-	"nldr;":                     '\U00002025',
+-	"nle;":                      '\U00002270',
+-	"nleftarrow;":               '\U0000219A',
+-	"nleftrightarrow;":          '\U000021AE',
+-	"nleq;":                     '\U00002270',
+-	"nless;":                    '\U0000226E',
+-	"nlsim;":                    '\U00002274',
+-	"nlt;":                      '\U0000226E',
+-	"nltri;":                    '\U000022EA',
+-	"nltrie;":                   '\U000022EC',
+-	"nmid;":                     '\U00002224',
+-	"nopf;":                     '\U0001D55F',
+-	"not;":                      '\U000000AC',
+-	"notin;":                    '\U00002209',
+-	"notinva;":                  '\U00002209',
+-	"notinvb;":                  '\U000022F7',
+-	"notinvc;":                  '\U000022F6',
+-	"notni;":                    '\U0000220C',
+-	"notniva;":                  '\U0000220C',
+-	"notnivb;":                  '\U000022FE',
+-	"notnivc;":                  '\U000022FD',
+-	"npar;":                     '\U00002226',
+-	"nparallel;":                '\U00002226',
+-	"npolint;":                  '\U00002A14',
+-	"npr;":                      '\U00002280',
+-	"nprcue;":                   '\U000022E0',
+-	"nprec;":                    '\U00002280',
+-	"nrArr;":                    '\U000021CF',
+-	"nrarr;":                    '\U0000219B',
+-	"nrightarrow;":              '\U0000219B',
+-	"nrtri;":                    '\U000022EB',
+-	"nrtrie;":                   '\U000022ED',
+-	"nsc;":                      '\U00002281',
+-	"nsccue;":                   '\U000022E1',
+-	"nscr;":                     '\U0001D4C3',
+-	"nshortmid;":                '\U00002224',
+-	"nshortparallel;":           '\U00002226',
+-	"nsim;":                     '\U00002241',
+-	"nsime;":                    '\U00002244',
+-	"nsimeq;":                   '\U00002244',
+-	"nsmid;":                    '\U00002224',
+-	"nspar;":                    '\U00002226',
+-	"nsqsube;":                  '\U000022E2',
+-	"nsqsupe;":                  '\U000022E3',
+-	"nsub;":                     '\U00002284',
+-	"nsube;":                    '\U00002288',
+-	"nsubseteq;":                '\U00002288',
+-	"nsucc;":                    '\U00002281',
+-	"nsup;":                     '\U00002285',
+-	"nsupe;":                    '\U00002289',
+-	"nsupseteq;":                '\U00002289',
+-	"ntgl;":                     '\U00002279',
+-	"ntilde;":                   '\U000000F1',
+-	"ntlg;":                     '\U00002278',
+-	"ntriangleleft;":            '\U000022EA',
+-	"ntrianglelefteq;":          '\U000022EC',
+-	"ntriangleright;":           '\U000022EB',
+-	"ntrianglerighteq;":         '\U000022ED',
+-	"nu;":                       '\U000003BD',
+-	"num;":                      '\U00000023',
+-	"numero;":                   '\U00002116',
+-	"numsp;":                    '\U00002007',
+-	"nvDash;":                   '\U000022AD',
+-	"nvHarr;":                   '\U00002904',
+-	"nvdash;":                   '\U000022AC',
+-	"nvinfin;":                  '\U000029DE',
+-	"nvlArr;":                   '\U00002902',
+-	"nvrArr;":                   '\U00002903',
+-	"nwArr;":                    '\U000021D6',
+-	"nwarhk;":                   '\U00002923',
+-	"nwarr;":                    '\U00002196',
+-	"nwarrow;":                  '\U00002196',
+-	"nwnear;":                   '\U00002927',
+-	"oS;":                       '\U000024C8',
+-	"oacute;":                   '\U000000F3',
+-	"oast;":                     '\U0000229B',
+-	"ocir;":                     '\U0000229A',
+-	"ocirc;":                    '\U000000F4',
+-	"ocy;":                      '\U0000043E',
+-	"odash;":                    '\U0000229D',
+-	"odblac;":                   '\U00000151',
+-	"odiv;":                     '\U00002A38',
+-	"odot;":                     '\U00002299',
+-	"odsold;":                   '\U000029BC',
+-	"oelig;":                    '\U00000153',
+-	"ofcir;":                    '\U000029BF',
+-	"ofr;":                      '\U0001D52C',
+-	"ogon;":                     '\U000002DB',
+-	"ograve;":                   '\U000000F2',
+-	"ogt;":                      '\U000029C1',
+-	"ohbar;":                    '\U000029B5',
+-	"ohm;":                      '\U000003A9',
+-	"oint;":                     '\U0000222E',
+-	"olarr;":                    '\U000021BA',
+-	"olcir;":                    '\U000029BE',
+-	"olcross;":                  '\U000029BB',
+-	"oline;":                    '\U0000203E',
+-	"olt;":                      '\U000029C0',
+-	"omacr;":                    '\U0000014D',
+-	"omega;":                    '\U000003C9',
+-	"omicron;":                  '\U000003BF',
+-	"omid;":                     '\U000029B6',
+-	"ominus;":                   '\U00002296',
+-	"oopf;":                     '\U0001D560',
+-	"opar;":                     '\U000029B7',
+-	"operp;":                    '\U000029B9',
+-	"oplus;":                    '\U00002295',
+-	"or;":                       '\U00002228',
+-	"orarr;":                    '\U000021BB',
+-	"ord;":                      '\U00002A5D',
+-	"order;":                    '\U00002134',
+-	"orderof;":                  '\U00002134',
+-	"ordf;":                     '\U000000AA',
+-	"ordm;":                     '\U000000BA',
+-	"origof;":                   '\U000022B6',
+-	"oror;":                     '\U00002A56',
+-	"orslope;":                  '\U00002A57',
+-	"orv;":                      '\U00002A5B',
+-	"oscr;":                     '\U00002134',
+-	"oslash;":                   '\U000000F8',
+-	"osol;":                     '\U00002298',
+-	"otilde;":                   '\U000000F5',
+-	"otimes;":                   '\U00002297',
+-	"otimesas;":                 '\U00002A36',
+-	"ouml;":                     '\U000000F6',
+-	"ovbar;":                    '\U0000233D',
+-	"par;":                      '\U00002225',
+-	"para;":                     '\U000000B6',
+-	"parallel;":                 '\U00002225',
+-	"parsim;":                   '\U00002AF3',
+-	"parsl;":                    '\U00002AFD',
+-	"part;":                     '\U00002202',
+-	"pcy;":                      '\U0000043F',
+-	"percnt;":                   '\U00000025',
+-	"period;":                   '\U0000002E',
+-	"permil;":                   '\U00002030',
+-	"perp;":                     '\U000022A5',
+-	"pertenk;":                  '\U00002031',
+-	"pfr;":                      '\U0001D52D',
+-	"phi;":                      '\U000003C6',
+-	"phiv;":                     '\U000003D5',
+-	"phmmat;":                   '\U00002133',
+-	"phone;":                    '\U0000260E',
+-	"pi;":                       '\U000003C0',
+-	"pitchfork;":                '\U000022D4',
+-	"piv;":                      '\U000003D6',
+-	"planck;":                   '\U0000210F',
+-	"planckh;":                  '\U0000210E',
+-	"plankv;":                   '\U0000210F',
+-	"plus;":                     '\U0000002B',
+-	"plusacir;":                 '\U00002A23',
+-	"plusb;":                    '\U0000229E',
+-	"pluscir;":                  '\U00002A22',
+-	"plusdo;":                   '\U00002214',
+-	"plusdu;":                   '\U00002A25',
+-	"pluse;":                    '\U00002A72',
+-	"plusmn;":                   '\U000000B1',
+-	"plussim;":                  '\U00002A26',
+-	"plustwo;":                  '\U00002A27',
+-	"pm;":                       '\U000000B1',
+-	"pointint;":                 '\U00002A15',
+-	"popf;":                     '\U0001D561',
+-	"pound;":                    '\U000000A3',
+-	"pr;":                       '\U0000227A',
+-	"prE;":                      '\U00002AB3',
+-	"prap;":                     '\U00002AB7',
+-	"prcue;":                    '\U0000227C',
+-	"pre;":                      '\U00002AAF',
+-	"prec;":                     '\U0000227A',
+-	"precapprox;":               '\U00002AB7',
+-	"preccurlyeq;":              '\U0000227C',
+-	"preceq;":                   '\U00002AAF',
+-	"precnapprox;":              '\U00002AB9',
+-	"precneqq;":                 '\U00002AB5',
+-	"precnsim;":                 '\U000022E8',
+-	"precsim;":                  '\U0000227E',
+-	"prime;":                    '\U00002032',
+-	"primes;":                   '\U00002119',
+-	"prnE;":                     '\U00002AB5',
+-	"prnap;":                    '\U00002AB9',
+-	"prnsim;":                   '\U000022E8',
+-	"prod;":                     '\U0000220F',
+-	"profalar;":                 '\U0000232E',
+-	"profline;":                 '\U00002312',
+-	"profsurf;":                 '\U00002313',
+-	"prop;":                     '\U0000221D',
+-	"propto;":                   '\U0000221D',
+-	"prsim;":                    '\U0000227E',
+-	"prurel;":                   '\U000022B0',
+-	"pscr;":                     '\U0001D4C5',
+-	"psi;":                      '\U000003C8',
+-	"puncsp;":                   '\U00002008',
+-	"qfr;":                      '\U0001D52E',
+-	"qint;":                     '\U00002A0C',
+-	"qopf;":                     '\U0001D562',
+-	"qprime;":                   '\U00002057',
+-	"qscr;":                     '\U0001D4C6',
+-	"quaternions;":              '\U0000210D',
+-	"quatint;":                  '\U00002A16',
+-	"quest;":                    '\U0000003F',
+-	"questeq;":                  '\U0000225F',
+-	"quot;":                     '\U00000022',
+-	"rAarr;":                    '\U000021DB',
+-	"rArr;":                     '\U000021D2',
+-	"rAtail;":                   '\U0000291C',
+-	"rBarr;":                    '\U0000290F',
+-	"rHar;":                     '\U00002964',
+-	"racute;":                   '\U00000155',
+-	"radic;":                    '\U0000221A',
+-	"raemptyv;":                 '\U000029B3',
+-	"rang;":                     '\U000027E9',
+-	"rangd;":                    '\U00002992',
+-	"range;":                    '\U000029A5',
+-	"rangle;":                   '\U000027E9',
+-	"raquo;":                    '\U000000BB',
+-	"rarr;":                     '\U00002192',
+-	"rarrap;":                   '\U00002975',
+-	"rarrb;":                    '\U000021E5',
+-	"rarrbfs;":                  '\U00002920',
+-	"rarrc;":                    '\U00002933',
+-	"rarrfs;":                   '\U0000291E',
+-	"rarrhk;":                   '\U000021AA',
+-	"rarrlp;":                   '\U000021AC',
+-	"rarrpl;":                   '\U00002945',
+-	"rarrsim;":                  '\U00002974',
+-	"rarrtl;":                   '\U000021A3',
+-	"rarrw;":                    '\U0000219D',
+-	"ratail;":                   '\U0000291A',
+-	"ratio;":                    '\U00002236',
+-	"rationals;":                '\U0000211A',
+-	"rbarr;":                    '\U0000290D',
+-	"rbbrk;":                    '\U00002773',
+-	"rbrace;":                   '\U0000007D',
+-	"rbrack;":                   '\U0000005D',
+-	"rbrke;":                    '\U0000298C',
+-	"rbrksld;":                  '\U0000298E',
+-	"rbrkslu;":                  '\U00002990',
+-	"rcaron;":                   '\U00000159',
+-	"rcedil;":                   '\U00000157',
+-	"rceil;":                    '\U00002309',
+-	"rcub;":                     '\U0000007D',
+-	"rcy;":                      '\U00000440',
+-	"rdca;":                     '\U00002937',
+-	"rdldhar;":                  '\U00002969',
+-	"rdquo;":                    '\U0000201D',
+-	"rdquor;":                   '\U0000201D',
+-	"rdsh;":                     '\U000021B3',
+-	"real;":                     '\U0000211C',
+-	"realine;":                  '\U0000211B',
+-	"realpart;":                 '\U0000211C',
+-	"reals;":                    '\U0000211D',
+-	"rect;":                     '\U000025AD',
+-	"reg;":                      '\U000000AE',
+-	"rfisht;":                   '\U0000297D',
+-	"rfloor;":                   '\U0000230B',
+-	"rfr;":                      '\U0001D52F',
+-	"rhard;":                    '\U000021C1',
+-	"rharu;":                    '\U000021C0',
+-	"rharul;":                   '\U0000296C',
+-	"rho;":                      '\U000003C1',
+-	"rhov;":                     '\U000003F1',
+-	"rightarrow;":               '\U00002192',
+-	"rightarrowtail;":           '\U000021A3',
+-	"rightharpoondown;":         '\U000021C1',
+-	"rightharpoonup;":           '\U000021C0',
+-	"rightleftarrows;":          '\U000021C4',
+-	"rightleftharpoons;":        '\U000021CC',
+-	"rightrightarrows;":         '\U000021C9',
+-	"rightsquigarrow;":          '\U0000219D',
+-	"rightthreetimes;":          '\U000022CC',
+-	"ring;":                     '\U000002DA',
+-	"risingdotseq;":             '\U00002253',
+-	"rlarr;":                    '\U000021C4',
+-	"rlhar;":                    '\U000021CC',
+-	"rlm;":                      '\U0000200F',
+-	"rmoust;":                   '\U000023B1',
+-	"rmoustache;":               '\U000023B1',
+-	"rnmid;":                    '\U00002AEE',
+-	"roang;":                    '\U000027ED',
+-	"roarr;":                    '\U000021FE',
+-	"robrk;":                    '\U000027E7',
+-	"ropar;":                    '\U00002986',
+-	"ropf;":                     '\U0001D563',
+-	"roplus;":                   '\U00002A2E',
+-	"rotimes;":                  '\U00002A35',
+-	"rpar;":                     '\U00000029',
+-	"rpargt;":                   '\U00002994',
+-	"rppolint;":                 '\U00002A12',
+-	"rrarr;":                    '\U000021C9',
+-	"rsaquo;":                   '\U0000203A',
+-	"rscr;":                     '\U0001D4C7',
+-	"rsh;":                      '\U000021B1',
+-	"rsqb;":                     '\U0000005D',
+-	"rsquo;":                    '\U00002019',
+-	"rsquor;":                   '\U00002019',
+-	"rthree;":                   '\U000022CC',
+-	"rtimes;":                   '\U000022CA',
+-	"rtri;":                     '\U000025B9',
+-	"rtrie;":                    '\U000022B5',
+-	"rtrif;":                    '\U000025B8',
+-	"rtriltri;":                 '\U000029CE',
+-	"ruluhar;":                  '\U00002968',
+-	"rx;":                       '\U0000211E',
+-	"sacute;":                   '\U0000015B',
+-	"sbquo;":                    '\U0000201A',
+-	"sc;":                       '\U0000227B',
+-	"scE;":                      '\U00002AB4',
+-	"scap;":                     '\U00002AB8',
+-	"scaron;":                   '\U00000161',
+-	"sccue;":                    '\U0000227D',
+-	"sce;":                      '\U00002AB0',
+-	"scedil;":                   '\U0000015F',
+-	"scirc;":                    '\U0000015D',
+-	"scnE;":                     '\U00002AB6',
+-	"scnap;":                    '\U00002ABA',
+-	"scnsim;":                   '\U000022E9',
+-	"scpolint;":                 '\U00002A13',
+-	"scsim;":                    '\U0000227F',
+-	"scy;":                      '\U00000441',
+-	"sdot;":                     '\U000022C5',
+-	"sdotb;":                    '\U000022A1',
+-	"sdote;":                    '\U00002A66',
+-	"seArr;":                    '\U000021D8',
+-	"searhk;":                   '\U00002925',
+-	"searr;":                    '\U00002198',
+-	"searrow;":                  '\U00002198',
+-	"sect;":                     '\U000000A7',
+-	"semi;":                     '\U0000003B',
+-	"seswar;":                   '\U00002929',
+-	"setminus;":                 '\U00002216',
+-	"setmn;":                    '\U00002216',
+-	"sext;":                     '\U00002736',
+-	"sfr;":                      '\U0001D530',
+-	"sfrown;":                   '\U00002322',
+-	"sharp;":                    '\U0000266F',
+-	"shchcy;":                   '\U00000449',
+-	"shcy;":                     '\U00000448',
+-	"shortmid;":                 '\U00002223',
+-	"shortparallel;":            '\U00002225',
+-	"shy;":                      '\U000000AD',
+-	"sigma;":                    '\U000003C3',
+-	"sigmaf;":                   '\U000003C2',
+-	"sigmav;":                   '\U000003C2',
+-	"sim;":                      '\U0000223C',
+-	"simdot;":                   '\U00002A6A',
+-	"sime;":                     '\U00002243',
+-	"simeq;":                    '\U00002243',
+-	"simg;":                     '\U00002A9E',
+-	"simgE;":                    '\U00002AA0',
+-	"siml;":                     '\U00002A9D',
+-	"simlE;":                    '\U00002A9F',
+-	"simne;":                    '\U00002246',
+-	"simplus;":                  '\U00002A24',
+-	"simrarr;":                  '\U00002972',
+-	"slarr;":                    '\U00002190',
+-	"smallsetminus;":            '\U00002216',
+-	"smashp;":                   '\U00002A33',
+-	"smeparsl;":                 '\U000029E4',
+-	"smid;":                     '\U00002223',
+-	"smile;":                    '\U00002323',
+-	"smt;":                      '\U00002AAA',
+-	"smte;":                     '\U00002AAC',
+-	"softcy;":                   '\U0000044C',
+-	"sol;":                      '\U0000002F',
+-	"solb;":                     '\U000029C4',
+-	"solbar;":                   '\U0000233F',
+-	"sopf;":                     '\U0001D564',
+-	"spades;":                   '\U00002660',
+-	"spadesuit;":                '\U00002660',
+-	"spar;":                     '\U00002225',
+-	"sqcap;":                    '\U00002293',
+-	"sqcup;":                    '\U00002294',
+-	"sqsub;":                    '\U0000228F',
+-	"sqsube;":                   '\U00002291',
+-	"sqsubset;":                 '\U0000228F',
+-	"sqsubseteq;":               '\U00002291',
+-	"sqsup;":                    '\U00002290',
+-	"sqsupe;":                   '\U00002292',
+-	"sqsupset;":                 '\U00002290',
+-	"sqsupseteq;":               '\U00002292',
+-	"squ;":                      '\U000025A1',
+-	"square;":                   '\U000025A1',
+-	"squarf;":                   '\U000025AA',
+-	"squf;":                     '\U000025AA',
+-	"srarr;":                    '\U00002192',
+-	"sscr;":                     '\U0001D4C8',
+-	"ssetmn;":                   '\U00002216',
+-	"ssmile;":                   '\U00002323',
+-	"sstarf;":                   '\U000022C6',
+-	"star;":                     '\U00002606',
+-	"starf;":                    '\U00002605',
+-	"straightepsilon;":          '\U000003F5',
+-	"straightphi;":              '\U000003D5',
+-	"strns;":                    '\U000000AF',
+-	"sub;":                      '\U00002282',
+-	"subE;":                     '\U00002AC5',
+-	"subdot;":                   '\U00002ABD',
+-	"sube;":                     '\U00002286',
+-	"subedot;":                  '\U00002AC3',
+-	"submult;":                  '\U00002AC1',
+-	"subnE;":                    '\U00002ACB',
+-	"subne;":                    '\U0000228A',
+-	"subplus;":                  '\U00002ABF',
+-	"subrarr;":                  '\U00002979',
+-	"subset;":                   '\U00002282',
+-	"subseteq;":                 '\U00002286',
+-	"subseteqq;":                '\U00002AC5',
+-	"subsetneq;":                '\U0000228A',
+-	"subsetneqq;":               '\U00002ACB',
+-	"subsim;":                   '\U00002AC7',
+-	"subsub;":                   '\U00002AD5',
+-	"subsup;":                   '\U00002AD3',
+-	"succ;":                     '\U0000227B',
+-	"succapprox;":               '\U00002AB8',
+-	"succcurlyeq;":              '\U0000227D',
+-	"succeq;":                   '\U00002AB0',
+-	"succnapprox;":              '\U00002ABA',
+-	"succneqq;":                 '\U00002AB6',
+-	"succnsim;":                 '\U000022E9',
+-	"succsim;":                  '\U0000227F',
+-	"sum;":                      '\U00002211',
+-	"sung;":                     '\U0000266A',
+-	"sup;":                      '\U00002283',
+-	"sup1;":                     '\U000000B9',
+-	"sup2;":                     '\U000000B2',
+-	"sup3;":                     '\U000000B3',
+-	"supE;":                     '\U00002AC6',
+-	"supdot;":                   '\U00002ABE',
+-	"supdsub;":                  '\U00002AD8',
+-	"supe;":                     '\U00002287',
+-	"supedot;":                  '\U00002AC4',
+-	"suphsol;":                  '\U000027C9',
+-	"suphsub;":                  '\U00002AD7',
+-	"suplarr;":                  '\U0000297B',
+-	"supmult;":                  '\U00002AC2',
+-	"supnE;":                    '\U00002ACC',
+-	"supne;":                    '\U0000228B',
+-	"supplus;":                  '\U00002AC0',
+-	"supset;":                   '\U00002283',
+-	"supseteq;":                 '\U00002287',
+-	"supseteqq;":                '\U00002AC6',
+-	"supsetneq;":                '\U0000228B',
+-	"supsetneqq;":               '\U00002ACC',
+-	"supsim;":                   '\U00002AC8',
+-	"supsub;":                   '\U00002AD4',
+-	"supsup;":                   '\U00002AD6',
+-	"swArr;":                    '\U000021D9',
+-	"swarhk;":                   '\U00002926',
+-	"swarr;":                    '\U00002199',
+-	"swarrow;":                  '\U00002199',
+-	"swnwar;":                   '\U0000292A',
+-	"szlig;":                    '\U000000DF',
+-	"target;":                   '\U00002316',
+-	"tau;":                      '\U000003C4',
+-	"tbrk;":                     '\U000023B4',
+-	"tcaron;":                   '\U00000165',
+-	"tcedil;":                   '\U00000163',
+-	"tcy;":                      '\U00000442',
+-	"tdot;":                     '\U000020DB',
+-	"telrec;":                   '\U00002315',
+-	"tfr;":                      '\U0001D531',
+-	"there4;":                   '\U00002234',
+-	"therefore;":                '\U00002234',
+-	"theta;":                    '\U000003B8',
+-	"thetasym;":                 '\U000003D1',
+-	"thetav;":                   '\U000003D1',
+-	"thickapprox;":              '\U00002248',
+-	"thicksim;":                 '\U0000223C',
+-	"thinsp;":                   '\U00002009',
+-	"thkap;":                    '\U00002248',
+-	"thksim;":                   '\U0000223C',
+-	"thorn;":                    '\U000000FE',
+-	"tilde;":                    '\U000002DC',
+-	"times;":                    '\U000000D7',
+-	"timesb;":                   '\U000022A0',
+-	"timesbar;":                 '\U00002A31',
+-	"timesd;":                   '\U00002A30',
+-	"tint;":                     '\U0000222D',
+-	"toea;":                     '\U00002928',
+-	"top;":                      '\U000022A4',
+-	"topbot;":                   '\U00002336',
+-	"topcir;":                   '\U00002AF1',
+-	"topf;":                     '\U0001D565',
+-	"topfork;":                  '\U00002ADA',
+-	"tosa;":                     '\U00002929',
+-	"tprime;":                   '\U00002034',
+-	"trade;":                    '\U00002122',
+-	"triangle;":                 '\U000025B5',
+-	"triangledown;":             '\U000025BF',
+-	"triangleleft;":             '\U000025C3',
+-	"trianglelefteq;":           '\U000022B4',
+-	"triangleq;":                '\U0000225C',
+-	"triangleright;":            '\U000025B9',
+-	"trianglerighteq;":          '\U000022B5',
+-	"tridot;":                   '\U000025EC',
+-	"trie;":                     '\U0000225C',
+-	"triminus;":                 '\U00002A3A',
+-	"triplus;":                  '\U00002A39',
+-	"trisb;":                    '\U000029CD',
+-	"tritime;":                  '\U00002A3B',
+-	"trpezium;":                 '\U000023E2',
+-	"tscr;":                     '\U0001D4C9',
+-	"tscy;":                     '\U00000446',
+-	"tshcy;":                    '\U0000045B',
+-	"tstrok;":                   '\U00000167',
+-	"twixt;":                    '\U0000226C',
+-	"twoheadleftarrow;":         '\U0000219E',
+-	"twoheadrightarrow;":        '\U000021A0',
+-	"uArr;":                     '\U000021D1',
+-	"uHar;":                     '\U00002963',
+-	"uacute;":                   '\U000000FA',
+-	"uarr;":                     '\U00002191',
+-	"ubrcy;":                    '\U0000045E',
+-	"ubreve;":                   '\U0000016D',
+-	"ucirc;":                    '\U000000FB',
+-	"ucy;":                      '\U00000443',
+-	"udarr;":                    '\U000021C5',
+-	"udblac;":                   '\U00000171',
+-	"udhar;":                    '\U0000296E',
+-	"ufisht;":                   '\U0000297E',
+-	"ufr;":                      '\U0001D532',
+-	"ugrave;":                   '\U000000F9',
+-	"uharl;":                    '\U000021BF',
+-	"uharr;":                    '\U000021BE',
+-	"uhblk;":                    '\U00002580',
+-	"ulcorn;":                   '\U0000231C',
+-	"ulcorner;":                 '\U0000231C',
+-	"ulcrop;":                   '\U0000230F',
+-	"ultri;":                    '\U000025F8',
+-	"umacr;":                    '\U0000016B',
+-	"uml;":                      '\U000000A8',
+-	"uogon;":                    '\U00000173',
+-	"uopf;":                     '\U0001D566',
+-	"uparrow;":                  '\U00002191',
+-	"updownarrow;":              '\U00002195',
+-	"upharpoonleft;":            '\U000021BF',
+-	"upharpoonright;":           '\U000021BE',
+-	"uplus;":                    '\U0000228E',
+-	"upsi;":                     '\U000003C5',
+-	"upsih;":                    '\U000003D2',
+-	"upsilon;":                  '\U000003C5',
+-	"upuparrows;":               '\U000021C8',
+-	"urcorn;":                   '\U0000231D',
+-	"urcorner;":                 '\U0000231D',
+-	"urcrop;":                   '\U0000230E',
+-	"uring;":                    '\U0000016F',
+-	"urtri;":                    '\U000025F9',
+-	"uscr;":                     '\U0001D4CA',
+-	"utdot;":                    '\U000022F0',
+-	"utilde;":                   '\U00000169',
+-	"utri;":                     '\U000025B5',
+-	"utrif;":                    '\U000025B4',
+-	"uuarr;":                    '\U000021C8',
+-	"uuml;":                     '\U000000FC',
+-	"uwangle;":                  '\U000029A7',
+-	"vArr;":                     '\U000021D5',
+-	"vBar;":                     '\U00002AE8',
+-	"vBarv;":                    '\U00002AE9',
+-	"vDash;":                    '\U000022A8',
+-	"vangrt;":                   '\U0000299C',
+-	"varepsilon;":               '\U000003F5',
+-	"varkappa;":                 '\U000003F0',
+-	"varnothing;":               '\U00002205',
+-	"varphi;":                   '\U000003D5',
+-	"varpi;":                    '\U000003D6',
+-	"varpropto;":                '\U0000221D',
+-	"varr;":                     '\U00002195',
+-	"varrho;":                   '\U000003F1',
+-	"varsigma;":                 '\U000003C2',
+-	"vartheta;":                 '\U000003D1',
+-	"vartriangleleft;":          '\U000022B2',
+-	"vartriangleright;":         '\U000022B3',
+-	"vcy;":                      '\U00000432',
+-	"vdash;":                    '\U000022A2',
+-	"vee;":                      '\U00002228',
+-	"veebar;":                   '\U000022BB',
+-	"veeeq;":                    '\U0000225A',
+-	"vellip;":                   '\U000022EE',
+-	"verbar;":                   '\U0000007C',
+-	"vert;":                     '\U0000007C',
+-	"vfr;":                      '\U0001D533',
+-	"vltri;":                    '\U000022B2',
+-	"vopf;":                     '\U0001D567',
+-	"vprop;":                    '\U0000221D',
+-	"vrtri;":                    '\U000022B3',
+-	"vscr;":                     '\U0001D4CB',
+-	"vzigzag;":                  '\U0000299A',
+-	"wcirc;":                    '\U00000175',
+-	"wedbar;":                   '\U00002A5F',
+-	"wedge;":                    '\U00002227',
+-	"wedgeq;":                   '\U00002259',
+-	"weierp;":                   '\U00002118',
+-	"wfr;":                      '\U0001D534',
+-	"wopf;":                     '\U0001D568',
+-	"wp;":                       '\U00002118',
+-	"wr;":                       '\U00002240',
+-	"wreath;":                   '\U00002240',
+-	"wscr;":                     '\U0001D4CC',
+-	"xcap;":                     '\U000022C2',
+-	"xcirc;":                    '\U000025EF',
+-	"xcup;":                     '\U000022C3',
+-	"xdtri;":                    '\U000025BD',
+-	"xfr;":                      '\U0001D535',
+-	"xhArr;":                    '\U000027FA',
+-	"xharr;":                    '\U000027F7',
+-	"xi;":                       '\U000003BE',
+-	"xlArr;":                    '\U000027F8',
+-	"xlarr;":                    '\U000027F5',
+-	"xmap;":                     '\U000027FC',
+-	"xnis;":                     '\U000022FB',
+-	"xodot;":                    '\U00002A00',
+-	"xopf;":                     '\U0001D569',
+-	"xoplus;":                   '\U00002A01',
+-	"xotime;":                   '\U00002A02',
+-	"xrArr;":                    '\U000027F9',
+-	"xrarr;":                    '\U000027F6',
+-	"xscr;":                     '\U0001D4CD',
+-	"xsqcup;":                   '\U00002A06',
+-	"xuplus;":                   '\U00002A04',
+-	"xutri;":                    '\U000025B3',
+-	"xvee;":                     '\U000022C1',
+-	"xwedge;":                   '\U000022C0',
+-	"yacute;":                   '\U000000FD',
+-	"yacy;":                     '\U0000044F',
+-	"ycirc;":                    '\U00000177',
+-	"ycy;":                      '\U0000044B',
+-	"yen;":                      '\U000000A5',
+-	"yfr;":                      '\U0001D536',
+-	"yicy;":                     '\U00000457',
+-	"yopf;":                     '\U0001D56A',
+-	"yscr;":                     '\U0001D4CE',
+-	"yucy;":                     '\U0000044E',
+-	"yuml;":                     '\U000000FF',
+-	"zacute;":                   '\U0000017A',
+-	"zcaron;":                   '\U0000017E',
+-	"zcy;":                      '\U00000437',
+-	"zdot;":                     '\U0000017C',
+-	"zeetrf;":                   '\U00002128',
+-	"zeta;":                     '\U000003B6',
+-	"zfr;":                      '\U0001D537',
+-	"zhcy;":                     '\U00000436',
+-	"zigrarr;":                  '\U000021DD',
+-	"zopf;":                     '\U0001D56B',
+-	"zscr;":                     '\U0001D4CF',
+-	"zwj;":                      '\U0000200D',
+-	"zwnj;":                     '\U0000200C',
+-	"AElig":                     '\U000000C6',
+-	"AMP":                       '\U00000026',
+-	"Aacute":                    '\U000000C1',
+-	"Acirc":                     '\U000000C2',
+-	"Agrave":                    '\U000000C0',
+-	"Aring":                     '\U000000C5',
+-	"Atilde":                    '\U000000C3',
+-	"Auml":                      '\U000000C4',
+-	"COPY":                      '\U000000A9',
+-	"Ccedil":                    '\U000000C7',
+-	"ETH":                       '\U000000D0',
+-	"Eacute":                    '\U000000C9',
+-	"Ecirc":                     '\U000000CA',
+-	"Egrave":                    '\U000000C8',
+-	"Euml":                      '\U000000CB',
+-	"GT":                        '\U0000003E',
+-	"Iacute":                    '\U000000CD',
+-	"Icirc":                     '\U000000CE',
+-	"Igrave":                    '\U000000CC',
+-	"Iuml":                      '\U000000CF',
+-	"LT":                        '\U0000003C',
+-	"Ntilde":                    '\U000000D1',
+-	"Oacute":                    '\U000000D3',
+-	"Ocirc":                     '\U000000D4',
+-	"Ograve":                    '\U000000D2',
+-	"Oslash":                    '\U000000D8',
+-	"Otilde":                    '\U000000D5',
+-	"Ouml":                      '\U000000D6',
+-	"QUOT":                      '\U00000022',
+-	"REG":                       '\U000000AE',
+-	"THORN":                     '\U000000DE',
+-	"Uacute":                    '\U000000DA',
+-	"Ucirc":                     '\U000000DB',
+-	"Ugrave":                    '\U000000D9',
+-	"Uuml":                      '\U000000DC',
+-	"Yacute":                    '\U000000DD',
+-	"aacute":                    '\U000000E1',
+-	"acirc":                     '\U000000E2',
+-	"acute":                     '\U000000B4',
+-	"aelig":                     '\U000000E6',
+-	"agrave":                    '\U000000E0',
+-	"amp":                       '\U00000026',
+-	"aring":                     '\U000000E5',
+-	"atilde":                    '\U000000E3',
+-	"auml":                      '\U000000E4',
+-	"brvbar":                    '\U000000A6',
+-	"ccedil":                    '\U000000E7',
+-	"cedil":                     '\U000000B8',
+-	"cent":                      '\U000000A2',
+-	"copy":                      '\U000000A9',
+-	"curren":                    '\U000000A4',
+-	"deg":                       '\U000000B0',
+-	"divide":                    '\U000000F7',
+-	"eacute":                    '\U000000E9',
+-	"ecirc":                     '\U000000EA',
+-	"egrave":                    '\U000000E8',
+-	"eth":                       '\U000000F0',
+-	"euml":                      '\U000000EB',
+-	"frac12":                    '\U000000BD',
+-	"frac14":                    '\U000000BC',
+-	"frac34":                    '\U000000BE',
+-	"gt":                        '\U0000003E',
+-	"iacute":                    '\U000000ED',
+-	"icirc":                     '\U000000EE',
+-	"iexcl":                     '\U000000A1',
+-	"igrave":                    '\U000000EC',
+-	"iquest":                    '\U000000BF',
+-	"iuml":                      '\U000000EF',
+-	"laquo":                     '\U000000AB',
+-	"lt":                        '\U0000003C',
+-	"macr":                      '\U000000AF',
+-	"micro":                     '\U000000B5',
+-	"middot":                    '\U000000B7',
+-	"nbsp":                      '\U000000A0',
+-	"not":                       '\U000000AC',
+-	"ntilde":                    '\U000000F1',
+-	"oacute":                    '\U000000F3',
+-	"ocirc":                     '\U000000F4',
+-	"ograve":                    '\U000000F2',
+-	"ordf":                      '\U000000AA',
+-	"ordm":                      '\U000000BA',
+-	"oslash":                    '\U000000F8',
+-	"otilde":                    '\U000000F5',
+-	"ouml":                      '\U000000F6',
+-	"para":                      '\U000000B6',
+-	"plusmn":                    '\U000000B1',
+-	"pound":                     '\U000000A3',
+-	"quot":                      '\U00000022',
+-	"raquo":                     '\U000000BB',
+-	"reg":                       '\U000000AE',
+-	"sect":                      '\U000000A7',
+-	"shy":                       '\U000000AD',
+-	"sup1":                      '\U000000B9',
+-	"sup2":                      '\U000000B2',
+-	"sup3":                      '\U000000B3',
+-	"szlig":                     '\U000000DF',
+-	"thorn":                     '\U000000FE',
+-	"times":                     '\U000000D7',
+-	"uacute":                    '\U000000FA',
+-	"ucirc":                     '\U000000FB',
+-	"ugrave":                    '\U000000F9',
+-	"uml":                       '\U000000A8',
+-	"uuml":                      '\U000000FC',
+-	"yacute":                    '\U000000FD',
+-	"yen":                       '\U000000A5',
+-	"yuml":                      '\U000000FF',
+-}
+-
+-// HTML entities that are two unicode codepoints.
+-var entity2 = map[string][2]rune{
+-	// TODO(nigeltao): Handle replacements that are wider than their names.
+-	// "nLt;":                     {'\u226A', '\u20D2'},
+-	// "nGt;":                     {'\u226B', '\u20D2'},
+-	"NotEqualTilde;":           {'\u2242', '\u0338'},
+-	"NotGreaterFullEqual;":     {'\u2267', '\u0338'},
+-	"NotGreaterGreater;":       {'\u226B', '\u0338'},
+-	"NotGreaterSlantEqual;":    {'\u2A7E', '\u0338'},
+-	"NotHumpDownHump;":         {'\u224E', '\u0338'},
+-	"NotHumpEqual;":            {'\u224F', '\u0338'},
+-	"NotLeftTriangleBar;":      {'\u29CF', '\u0338'},
+-	"NotLessLess;":             {'\u226A', '\u0338'},
+-	"NotLessSlantEqual;":       {'\u2A7D', '\u0338'},
+-	"NotNestedGreaterGreater;": {'\u2AA2', '\u0338'},
+-	"NotNestedLessLess;":       {'\u2AA1', '\u0338'},
+-	"NotPrecedesEqual;":        {'\u2AAF', '\u0338'},
+-	"NotRightTriangleBar;":     {'\u29D0', '\u0338'},
+-	"NotSquareSubset;":         {'\u228F', '\u0338'},
+-	"NotSquareSuperset;":       {'\u2290', '\u0338'},
+-	"NotSubset;":               {'\u2282', '\u20D2'},
+-	"NotSucceedsEqual;":        {'\u2AB0', '\u0338'},
+-	"NotSucceedsTilde;":        {'\u227F', '\u0338'},
+-	"NotSuperset;":             {'\u2283', '\u20D2'},
+-	"ThickSpace;":              {'\u205F', '\u200A'},
+-	"acE;":                     {'\u223E', '\u0333'},
+-	"bne;":                     {'\u003D', '\u20E5'},
+-	"bnequiv;":                 {'\u2261', '\u20E5'},
+-	"caps;":                    {'\u2229', '\uFE00'},
+-	"cups;":                    {'\u222A', '\uFE00'},
+-	"fjlig;":                   {'\u0066', '\u006A'},
+-	"gesl;":                    {'\u22DB', '\uFE00'},
+-	"gvertneqq;":               {'\u2269', '\uFE00'},
+-	"gvnE;":                    {'\u2269', '\uFE00'},
+-	"lates;":                   {'\u2AAD', '\uFE00'},
+-	"lesg;":                    {'\u22DA', '\uFE00'},
+-	"lvertneqq;":               {'\u2268', '\uFE00'},
+-	"lvnE;":                    {'\u2268', '\uFE00'},
+-	"nGg;":                     {'\u22D9', '\u0338'},
+-	"nGtv;":                    {'\u226B', '\u0338'},
+-	"nLl;":                     {'\u22D8', '\u0338'},
+-	"nLtv;":                    {'\u226A', '\u0338'},
+-	"nang;":                    {'\u2220', '\u20D2'},
+-	"napE;":                    {'\u2A70', '\u0338'},
+-	"napid;":                   {'\u224B', '\u0338'},
+-	"nbump;":                   {'\u224E', '\u0338'},
+-	"nbumpe;":                  {'\u224F', '\u0338'},
+-	"ncongdot;":                {'\u2A6D', '\u0338'},
+-	"nedot;":                   {'\u2250', '\u0338'},
+-	"nesim;":                   {'\u2242', '\u0338'},
+-	"ngE;":                     {'\u2267', '\u0338'},
+-	"ngeqq;":                   {'\u2267', '\u0338'},
+-	"ngeqslant;":               {'\u2A7E', '\u0338'},
+-	"nges;":                    {'\u2A7E', '\u0338'},
+-	"nlE;":                     {'\u2266', '\u0338'},
+-	"nleqq;":                   {'\u2266', '\u0338'},
+-	"nleqslant;":               {'\u2A7D', '\u0338'},
+-	"nles;":                    {'\u2A7D', '\u0338'},
+-	"notinE;":                  {'\u22F9', '\u0338'},
+-	"notindot;":                {'\u22F5', '\u0338'},
+-	"nparsl;":                  {'\u2AFD', '\u20E5'},
+-	"npart;":                   {'\u2202', '\u0338'},
+-	"npre;":                    {'\u2AAF', '\u0338'},
+-	"npreceq;":                 {'\u2AAF', '\u0338'},
+-	"nrarrc;":                  {'\u2933', '\u0338'},
+-	"nrarrw;":                  {'\u219D', '\u0338'},
+-	"nsce;":                    {'\u2AB0', '\u0338'},
+-	"nsubE;":                   {'\u2AC5', '\u0338'},
+-	"nsubset;":                 {'\u2282', '\u20D2'},
+-	"nsubseteqq;":              {'\u2AC5', '\u0338'},
+-	"nsucceq;":                 {'\u2AB0', '\u0338'},
+-	"nsupE;":                   {'\u2AC6', '\u0338'},
+-	"nsupset;":                 {'\u2283', '\u20D2'},
+-	"nsupseteqq;":              {'\u2AC6', '\u0338'},
+-	"nvap;":                    {'\u224D', '\u20D2'},
+-	"nvge;":                    {'\u2265', '\u20D2'},
+-	"nvgt;":                    {'\u003E', '\u20D2'},
+-	"nvle;":                    {'\u2264', '\u20D2'},
+-	"nvlt;":                    {'\u003C', '\u20D2'},
+-	"nvltrie;":                 {'\u22B4', '\u20D2'},
+-	"nvrtrie;":                 {'\u22B5', '\u20D2'},
+-	"nvsim;":                   {'\u223C', '\u20D2'},
+-	"race;":                    {'\u223D', '\u0331'},
+-	"smtes;":                   {'\u2AAC', '\uFE00'},
+-	"sqcaps;":                  {'\u2293', '\uFE00'},
+-	"sqcups;":                  {'\u2294', '\uFE00'},
+-	"varsubsetneq;":            {'\u228A', '\uFE00'},
+-	"varsubsetneqq;":           {'\u2ACB', '\uFE00'},
+-	"varsupsetneq;":            {'\u228B', '\uFE00'},
+-	"varsupsetneqq;":           {'\u2ACC', '\uFE00'},
+-	"vnsub;":                   {'\u2282', '\u20D2'},
+-	"vnsup;":                   {'\u2283', '\u20D2'},
+-	"vsubnE;":                  {'\u2ACB', '\uFE00'},
+-	"vsubne;":                  {'\u228A', '\uFE00'},
+-	"vsupnE;":                  {'\u2ACC', '\uFE00'},
+-	"vsupne;":                  {'\u228B', '\uFE00'},
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/entity_test.go gcc-4.8.1/libgo/go/exp/html/entity_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/entity_test.go	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/entity_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,29 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"testing"
+-	"unicode/utf8"
+-)
+-
+-func TestEntityLength(t *testing.T) {
+-	// We verify that the length of UTF-8 encoding of each value is <= 1 + len(key).
+-	// The +1 comes from the leading "&". This property implies that the length of
+-	// unescaped text is <= the length of escaped text.
+-	for k, v := range entity {
+-		if 1+len(k) < utf8.RuneLen(v) {
+-			t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v))
+-		}
+-		if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' {
+-			t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon)
+-		}
+-	}
+-	for k, v := range entity2 {
+-		if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) {
+-			t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1]))
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/escape.go gcc-4.8.1/libgo/go/exp/html/escape.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/escape.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/escape.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,258 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bytes"
+-	"strings"
+-	"unicode/utf8"
+-)
+-
+-// These replacements permit compatibility with old numeric entities that
+-// assumed Windows-1252 encoding.
+-// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
+-var replacementTable = [...]rune{
+-	'\u20AC', // First entry is what 0x80 should be replaced with.
+-	'\u0081',
+-	'\u201A',
+-	'\u0192',
+-	'\u201E',
+-	'\u2026',
+-	'\u2020',
+-	'\u2021',
+-	'\u02C6',
+-	'\u2030',
+-	'\u0160',
+-	'\u2039',
+-	'\u0152',
+-	'\u008D',
+-	'\u017D',
+-	'\u008F',
+-	'\u0090',
+-	'\u2018',
+-	'\u2019',
+-	'\u201C',
+-	'\u201D',
+-	'\u2022',
+-	'\u2013',
+-	'\u2014',
+-	'\u02DC',
+-	'\u2122',
+-	'\u0161',
+-	'\u203A',
+-	'\u0153',
+-	'\u009D',
+-	'\u017E',
+-	'\u0178', // Last entry is 0x9F.
+-	// 0x00->'\uFFFD' is handled programmatically.
+-	// 0x0D->'\u000D' is a no-op.
+-}
+-
+-// unescapeEntity reads an entity like "&lt;" from b[src:] and writes the
+-// corresponding "<" to b[dst:], returning the incremented dst and src cursors.
+-// Precondition: b[src] == '&' && dst <= src.
+-// attribute should be true if parsing an attribute value.
+-func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) {
+-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
+-
+-	// i starts at 1 because we already know that s[0] == '&'.
+-	i, s := 1, b[src:]
+-
+-	if len(s) <= 1 {
+-		b[dst] = b[src]
+-		return dst + 1, src + 1
+-	}
+-
+-	if s[i] == '#' {
+-		if len(s) <= 3 { // We need to have at least "&#.".
+-			b[dst] = b[src]
+-			return dst + 1, src + 1
+-		}
+-		i++
+-		c := s[i]
+-		hex := false
+-		if c == 'x' || c == 'X' {
+-			hex = true
+-			i++
+-		}
+-
+-		x := '\x00'
+-		for i < len(s) {
+-			c = s[i]
+-			i++
+-			if hex {
+-				if '0' <= c && c <= '9' {
+-					x = 16*x + rune(c) - '0'
+-					continue
+-				} else if 'a' <= c && c <= 'f' {
+-					x = 16*x + rune(c) - 'a' + 10
+-					continue
+-				} else if 'A' <= c && c <= 'F' {
+-					x = 16*x + rune(c) - 'A' + 10
+-					continue
+-				}
+-			} else if '0' <= c && c <= '9' {
+-				x = 10*x + rune(c) - '0'
+-				continue
+-			}
+-			if c != ';' {
+-				i--
+-			}
+-			break
+-		}
+-
+-		if i <= 3 { // No characters matched.
+-			b[dst] = b[src]
+-			return dst + 1, src + 1
+-		}
+-
+-		if 0x80 <= x && x <= 0x9F {
+-			// Replace characters from Windows-1252 with UTF-8 equivalents.
+-			x = replacementTable[x-0x80]
+-		} else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF {
+-			// Replace invalid characters with the replacement character.
+-			x = '\uFFFD'
+-		}
+-
+-		return dst + utf8.EncodeRune(b[dst:], x), src + i
+-	}
+-
+-	// Consume the maximum number of characters possible, with the
+-	// consumed characters matching one of the named references.
+-
+-	for i < len(s) {
+-		c := s[i]
+-		i++
+-		// Lower-cased characters are more common in entities, so we check for them first.
+-		if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {
+-			continue
+-		}
+-		if c != ';' {
+-			i--
+-		}
+-		break
+-	}
+-
+-	entityName := string(s[1:i])
+-	if entityName == "" {
+-		// No-op.
+-	} else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' {
+-		// No-op.
+-	} else if x := entity[entityName]; x != 0 {
+-		return dst + utf8.EncodeRune(b[dst:], x), src + i
+-	} else if x := entity2[entityName]; x[0] != 0 {
+-		dst1 := dst + utf8.EncodeRune(b[dst:], x[0])
+-		return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i
+-	} else if !attribute {
+-		maxLen := len(entityName) - 1
+-		if maxLen > longestEntityWithoutSemicolon {
+-			maxLen = longestEntityWithoutSemicolon
+-		}
+-		for j := maxLen; j > 1; j-- {
+-			if x := entity[entityName[:j]]; x != 0 {
+-				return dst + utf8.EncodeRune(b[dst:], x), src + j + 1
+-			}
+-		}
+-	}
+-
+-	dst1, src1 = dst+i, src+i
+-	copy(b[dst:dst1], b[src:src1])
+-	return dst1, src1
+-}
+-
+-// unescape unescapes b's entities in-place, so that "a&lt;b" becomes "a<b".
+-// attribute should be true if parsing an attribute value.
+-func unescape(b []byte, attribute bool) []byte {
+-	for i, c := range b {
+-		if c == '&' {
+-			dst, src := unescapeEntity(b, i, i, attribute)
+-			for src < len(b) {
+-				c := b[src]
+-				if c == '&' {
+-					dst, src = unescapeEntity(b, dst, src, attribute)
+-				} else {
+-					b[dst] = c
+-					dst, src = dst+1, src+1
+-				}
+-			}
+-			return b[0:dst]
+-		}
+-	}
+-	return b
+-}
+-
+-// lower lower-cases the A-Z bytes in b in-place, so that "aBc" becomes "abc".
+-func lower(b []byte) []byte {
+-	for i, c := range b {
+-		if 'A' <= c && c <= 'Z' {
+-			b[i] = c + 'a' - 'A'
+-		}
+-	}
+-	return b
+-}
+-
+-const escapedChars = "&'<>\"\r"
+-
+-func escape(w writer, s string) error {
+-	i := strings.IndexAny(s, escapedChars)
+-	for i != -1 {
+-		if _, err := w.WriteString(s[:i]); err != nil {
+-			return err
+-		}
+-		var esc string
+-		switch s[i] {
+-		case '&':
+-			esc = "&amp;"
+-		case '\'':
+-			// "&#39;" is shorter than "&apos;" and apos was not in HTML until HTML5.
+-			esc = "&#39;"
+-		case '<':
+-			esc = "&lt;"
+-		case '>':
+-			esc = "&gt;"
+-		case '"':
+-			// "&#34;" is shorter than "&quot;".
+-			esc = "&#34;"
+-		case '\r':
+-			esc = "&#13;"
+-		default:
+-			panic("unrecognized escape character")
+-		}
+-		s = s[i+1:]
+-		if _, err := w.WriteString(esc); err != nil {
+-			return err
+-		}
+-		i = strings.IndexAny(s, escapedChars)
+-	}
+-	_, err := w.WriteString(s)
+-	return err
+-}
+-
+-// EscapeString escapes special characters like "<" to become "&lt;". It
+-// escapes only five such characters: <, >, &, ' and ".
+-// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
+-// always true.
+-func EscapeString(s string) string {
+-	if strings.IndexAny(s, escapedChars) == -1 {
+-		return s
+-	}
+-	var buf bytes.Buffer
+-	escape(&buf, s)
+-	return buf.String()
+-}
+-
+-// UnescapeString unescapes entities like "&lt;" to become "<". It unescapes a
+-// larger range of entities than EscapeString escapes. For example, "&aacute;"
+-// unescapes to "Ã¡", as does "&#225;" and "&xE1;".
+-// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
+-// always true.
+-func UnescapeString(s string) string {
+-	for _, c := range s {
+-		if c == '&' {
+-			return string(unescape([]byte(s), false))
+-		}
+-	}
+-	return s
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/foreign.go gcc-4.8.1/libgo/go/exp/html/foreign.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/foreign.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/foreign.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,226 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"strings"
+-)
+-
+-func adjustAttributeNames(aa []Attribute, nameMap map[string]string) {
+-	for i := range aa {
+-		if newName, ok := nameMap[aa[i].Key]; ok {
+-			aa[i].Key = newName
+-		}
+-	}
+-}
+-
+-func adjustForeignAttributes(aa []Attribute) {
+-	for i, a := range aa {
+-		if a.Key == "" || a.Key[0] != 'x' {
+-			continue
+-		}
+-		switch a.Key {
+-		case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show",
+-			"xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink":
+-			j := strings.Index(a.Key, ":")
+-			aa[i].Namespace = a.Key[:j]
+-			aa[i].Key = a.Key[j+1:]
+-		}
+-	}
+-}
+-
+-func htmlIntegrationPoint(n *Node) bool {
+-	if n.Type != ElementNode {
+-		return false
+-	}
+-	switch n.Namespace {
+-	case "math":
+-		if n.Data == "annotation-xml" {
+-			for _, a := range n.Attr {
+-				if a.Key == "encoding" {
+-					val := strings.ToLower(a.Val)
+-					if val == "text/html" || val == "application/xhtml+xml" {
+-						return true
+-					}
+-				}
+-			}
+-		}
+-	case "svg":
+-		switch n.Data {
+-		case "desc", "foreignObject", "title":
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-func mathMLTextIntegrationPoint(n *Node) bool {
+-	if n.Namespace != "math" {
+-		return false
+-	}
+-	switch n.Data {
+-	case "mi", "mo", "mn", "ms", "mtext":
+-		return true
+-	}
+-	return false
+-}
+-
+-// Section 12.2.5.5.
+-var breakout = map[string]bool{
+-	"b":          true,
+-	"big":        true,
+-	"blockquote": true,
+-	"body":       true,
+-	"br":         true,
+-	"center":     true,
+-	"code":       true,
+-	"dd":         true,
+-	"div":        true,
+-	"dl":         true,
+-	"dt":         true,
+-	"em":         true,
+-	"embed":      true,
+-	"h1":         true,
+-	"h2":         true,
+-	"h3":         true,
+-	"h4":         true,
+-	"h5":         true,
+-	"h6":         true,
+-	"head":       true,
+-	"hr":         true,
+-	"i":          true,
+-	"img":        true,
+-	"li":         true,
+-	"listing":    true,
+-	"menu":       true,
+-	"meta":       true,
+-	"nobr":       true,
+-	"ol":         true,
+-	"p":          true,
+-	"pre":        true,
+-	"ruby":       true,
+-	"s":          true,
+-	"small":      true,
+-	"span":       true,
+-	"strong":     true,
+-	"strike":     true,
+-	"sub":        true,
+-	"sup":        true,
+-	"table":      true,
+-	"tt":         true,
+-	"u":          true,
+-	"ul":         true,
+-	"var":        true,
+-}
+-
+-// Section 12.2.5.5.
+-var svgTagNameAdjustments = map[string]string{
+-	"altglyph":            "altGlyph",
+-	"altglyphdef":         "altGlyphDef",
+-	"altglyphitem":        "altGlyphItem",
+-	"animatecolor":        "animateColor",
+-	"animatemotion":       "animateMotion",
+-	"animatetransform":    "animateTransform",
+-	"clippath":            "clipPath",
+-	"feblend":             "feBlend",
+-	"fecolormatrix":       "feColorMatrix",
+-	"fecomponenttransfer": "feComponentTransfer",
+-	"fecomposite":         "feComposite",
+-	"feconvolvematrix":    "feConvolveMatrix",
+-	"fediffuselighting":   "feDiffuseLighting",
+-	"fedisplacementmap":   "feDisplacementMap",
+-	"fedistantlight":      "feDistantLight",
+-	"feflood":             "feFlood",
+-	"fefunca":             "feFuncA",
+-	"fefuncb":             "feFuncB",
+-	"fefuncg":             "feFuncG",
+-	"fefuncr":             "feFuncR",
+-	"fegaussianblur":      "feGaussianBlur",
+-	"feimage":             "feImage",
+-	"femerge":             "feMerge",
+-	"femergenode":         "feMergeNode",
+-	"femorphology":        "feMorphology",
+-	"feoffset":            "feOffset",
+-	"fepointlight":        "fePointLight",
+-	"fespecularlighting":  "feSpecularLighting",
+-	"fespotlight":         "feSpotLight",
+-	"fetile":              "feTile",
+-	"feturbulence":        "feTurbulence",
+-	"foreignobject":       "foreignObject",
+-	"glyphref":            "glyphRef",
+-	"lineargradient":      "linearGradient",
+-	"radialgradient":      "radialGradient",
+-	"textpath":            "textPath",
+-}
+-
+-// Section 12.2.5.1
+-var mathMLAttributeAdjustments = map[string]string{
+-	"definitionurl": "definitionURL",
+-}
+-
+-var svgAttributeAdjustments = map[string]string{
+-	"attributename":             "attributeName",
+-	"attributetype":             "attributeType",
+-	"basefrequency":             "baseFrequency",
+-	"baseprofile":               "baseProfile",
+-	"calcmode":                  "calcMode",
+-	"clippathunits":             "clipPathUnits",
+-	"contentscripttype":         "contentScriptType",
+-	"contentstyletype":          "contentStyleType",
+-	"diffuseconstant":           "diffuseConstant",
+-	"edgemode":                  "edgeMode",
+-	"externalresourcesrequired": "externalResourcesRequired",
+-	"filterres":                 "filterRes",
+-	"filterunits":               "filterUnits",
+-	"glyphref":                  "glyphRef",
+-	"gradienttransform":         "gradientTransform",
+-	"gradientunits":             "gradientUnits",
+-	"kernelmatrix":              "kernelMatrix",
+-	"kernelunitlength":          "kernelUnitLength",
+-	"keypoints":                 "keyPoints",
+-	"keysplines":                "keySplines",
+-	"keytimes":                  "keyTimes",
+-	"lengthadjust":              "lengthAdjust",
+-	"limitingconeangle":         "limitingConeAngle",
+-	"markerheight":              "markerHeight",
+-	"markerunits":               "markerUnits",
+-	"markerwidth":               "markerWidth",
+-	"maskcontentunits":          "maskContentUnits",
+-	"maskunits":                 "maskUnits",
+-	"numoctaves":                "numOctaves",
+-	"pathlength":                "pathLength",
+-	"patterncontentunits":       "patternContentUnits",
+-	"patterntransform":          "patternTransform",
+-	"patternunits":              "patternUnits",
+-	"pointsatx":                 "pointsAtX",
+-	"pointsaty":                 "pointsAtY",
+-	"pointsatz":                 "pointsAtZ",
+-	"preservealpha":             "preserveAlpha",
+-	"preserveaspectratio":       "preserveAspectRatio",
+-	"primitiveunits":            "primitiveUnits",
+-	"refx":                      "refX",
+-	"refy":                      "refY",
+-	"repeatcount":               "repeatCount",
+-	"repeatdur":                 "repeatDur",
+-	"requiredextensions":        "requiredExtensions",
+-	"requiredfeatures":          "requiredFeatures",
+-	"specularconstant":          "specularConstant",
+-	"specularexponent":          "specularExponent",
+-	"spreadmethod":              "spreadMethod",
+-	"startoffset":               "startOffset",
+-	"stddeviation":              "stdDeviation",
+-	"stitchtiles":               "stitchTiles",
+-	"surfacescale":              "surfaceScale",
+-	"systemlanguage":            "systemLanguage",
+-	"tablevalues":               "tableValues",
+-	"targetx":                   "targetX",
+-	"targety":                   "targetY",
+-	"textlength":                "textLength",
+-	"viewbox":                   "viewBox",
+-	"viewtarget":                "viewTarget",
+-	"xchannelselector":          "xChannelSelector",
+-	"ychannelselector":          "yChannelSelector",
+-	"zoomandpan":                "zoomAndPan",
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/node.go gcc-4.8.1/libgo/go/exp/html/node.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/node.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/node.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,193 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"exp/html/atom"
+-)
+-
+-// A NodeType is the type of a Node.
+-type NodeType uint32
+-
+-const (
+-	ErrorNode NodeType = iota
+-	TextNode
+-	DocumentNode
+-	ElementNode
+-	CommentNode
+-	DoctypeNode
+-	scopeMarkerNode
+-)
+-
+-// Section 12.2.3.3 says "scope markers are inserted when entering applet
+-// elements, buttons, object elements, marquees, table cells, and table
+-// captions, and are used to prevent formatting from 'leaking'".
+-var scopeMarker = Node{Type: scopeMarkerNode}
+-
+-// A Node consists of a NodeType and some Data (tag name for element nodes,
+-// content for text) and are part of a tree of Nodes. Element nodes may also
+-// have a Namespace and contain a slice of Attributes. Data is unescaped, so
+-// that it looks like "a<b" rather than "a&lt;b". For element nodes, DataAtom
+-// is the atom for Data, or zero if Data is not a known tag name.
+-//
+-// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
+-// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
+-// "svg" is short for "http://www.w3.org/2000/svg".
+-type Node struct {
+-	Parent, FirstChild, LastChild, PrevSibling, NextSibling *Node
+-
+-	Type      NodeType
+-	DataAtom  atom.Atom
+-	Data      string
+-	Namespace string
+-	Attr      []Attribute
+-}
+-
+-// InsertBefore inserts newChild as a child of n, immediately before oldChild
+-// in the sequence of n's children. oldChild may be nil, in which case newChild
+-// is appended to the end of n's children.
+-//
+-// It will panic if newChild already has a parent or siblings.
+-func (n *Node) InsertBefore(newChild, oldChild *Node) {
+-	if newChild.Parent != nil || newChild.PrevSibling != nil || newChild.NextSibling != nil {
+-		panic("html: InsertBefore called for an attached child Node")
+-	}
+-	var prev, next *Node
+-	if oldChild != nil {
+-		prev, next = oldChild.PrevSibling, oldChild
+-	} else {
+-		prev = n.LastChild
+-	}
+-	if prev != nil {
+-		prev.NextSibling = newChild
+-	} else {
+-		n.FirstChild = newChild
+-	}
+-	if next != nil {
+-		next.PrevSibling = newChild
+-	} else {
+-		n.LastChild = newChild
+-	}
+-	newChild.Parent = n
+-	newChild.PrevSibling = prev
+-	newChild.NextSibling = next
+-}
+-
+-// AppendChild adds a node c as a child of n.
+-//
+-// It will panic if c already has a parent or siblings.
+-func (n *Node) AppendChild(c *Node) {
+-	if c.Parent != nil || c.PrevSibling != nil || c.NextSibling != nil {
+-		panic("html: AppendChild called for an attached child Node")
+-	}
+-	last := n.LastChild
+-	if last != nil {
+-		last.NextSibling = c
+-	} else {
+-		n.FirstChild = c
+-	}
+-	n.LastChild = c
+-	c.Parent = n
+-	c.PrevSibling = last
+-}
+-
+-// RemoveChild removes a node c that is a child of n. Afterwards, c will have
+-// no parent and no siblings.
+-//
+-// It will panic if c's parent is not n.
+-func (n *Node) RemoveChild(c *Node) {
+-	if c.Parent != n {
+-		panic("html: RemoveChild called for a non-child Node")
+-	}
+-	if n.FirstChild == c {
+-		n.FirstChild = c.NextSibling
+-	}
+-	if c.NextSibling != nil {
+-		c.NextSibling.PrevSibling = c.PrevSibling
+-	}
+-	if n.LastChild == c {
+-		n.LastChild = c.PrevSibling
+-	}
+-	if c.PrevSibling != nil {
+-		c.PrevSibling.NextSibling = c.NextSibling
+-	}
+-	c.Parent = nil
+-	c.PrevSibling = nil
+-	c.NextSibling = nil
+-}
+-
+-// reparentChildren reparents all of src's child nodes to dst.
+-func reparentChildren(dst, src *Node) {
+-	for {
+-		child := src.FirstChild
+-		if child == nil {
+-			break
+-		}
+-		src.RemoveChild(child)
+-		dst.AppendChild(child)
+-	}
+-}
+-
+-// clone returns a new node with the same type, data and attributes.
+-// The clone has no parent, no siblings and no children.
+-func (n *Node) clone() *Node {
+-	m := &Node{
+-		Type:     n.Type,
+-		DataAtom: n.DataAtom,
+-		Data:     n.Data,
+-		Attr:     make([]Attribute, len(n.Attr)),
+-	}
+-	copy(m.Attr, n.Attr)
+-	return m
+-}
+-
+-// nodeStack is a stack of nodes.
+-type nodeStack []*Node
+-
+-// pop pops the stack. It will panic if s is empty.
+-func (s *nodeStack) pop() *Node {
+-	i := len(*s)
+-	n := (*s)[i-1]
+-	*s = (*s)[:i-1]
+-	return n
+-}
+-
+-// top returns the most recently pushed node, or nil if s is empty.
+-func (s *nodeStack) top() *Node {
+-	if i := len(*s); i > 0 {
+-		return (*s)[i-1]
+-	}
+-	return nil
+-}
+-
+-// index returns the index of the top-most occurrence of n in the stack, or -1
+-// if n is not present.
+-func (s *nodeStack) index(n *Node) int {
+-	for i := len(*s) - 1; i >= 0; i-- {
+-		if (*s)[i] == n {
+-			return i
+-		}
+-	}
+-	return -1
+-}
+-
+-// insert inserts a node at the given index.
+-func (s *nodeStack) insert(i int, n *Node) {
+-	(*s) = append(*s, nil)
+-	copy((*s)[i+1:], (*s)[i:])
+-	(*s)[i] = n
+-}
+-
+-// remove removes a node from the stack. It is a no-op if n is not present.
+-func (s *nodeStack) remove(n *Node) {
+-	i := s.index(n)
+-	if i == -1 {
+-		return
+-	}
+-	copy((*s)[i:], (*s)[i+1:])
+-	j := len(*s) - 1
+-	(*s)[j] = nil
+-	*s = (*s)[:j]
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/node_test.go gcc-4.8.1/libgo/go/exp/html/node_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/node_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/node_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,146 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"fmt"
+-)
+-
+-// checkTreeConsistency checks that a node and its descendants are all
+-// consistent in their parent/child/sibling relationships.
+-func checkTreeConsistency(n *Node) error {
+-	return checkTreeConsistency1(n, 0)
+-}
+-
+-func checkTreeConsistency1(n *Node, depth int) error {
+-	if depth == 1e4 {
+-		return fmt.Errorf("html: tree looks like it contains a cycle")
+-	}
+-	if err := checkNodeConsistency(n); err != nil {
+-		return err
+-	}
+-	for c := n.FirstChild; c != nil; c = c.NextSibling {
+-		if err := checkTreeConsistency1(c, depth+1); err != nil {
+-			return err
+-		}
+-	}
+-	return nil
+-}
+-
+-// checkNodeConsistency checks that a node's parent/child/sibling relationships
+-// are consistent.
+-func checkNodeConsistency(n *Node) error {
+-	if n == nil {
+-		return nil
+-	}
+-
+-	nParent := 0
+-	for p := n.Parent; p != nil; p = p.Parent {
+-		nParent++
+-		if nParent == 1e4 {
+-			return fmt.Errorf("html: parent list looks like an infinite loop")
+-		}
+-	}
+-
+-	nForward := 0
+-	for c := n.FirstChild; c != nil; c = c.NextSibling {
+-		nForward++
+-		if nForward == 1e6 {
+-			return fmt.Errorf("html: forward list of children looks like an infinite loop")
+-		}
+-		if c.Parent != n {
+-			return fmt.Errorf("html: inconsistent child/parent relationship")
+-		}
+-	}
+-
+-	nBackward := 0
+-	for c := n.LastChild; c != nil; c = c.PrevSibling {
+-		nBackward++
+-		if nBackward == 1e6 {
+-			return fmt.Errorf("html: backward list of children looks like an infinite loop")
+-		}
+-		if c.Parent != n {
+-			return fmt.Errorf("html: inconsistent child/parent relationship")
+-		}
+-	}
+-
+-	if n.Parent != nil {
+-		if n.Parent == n {
+-			return fmt.Errorf("html: inconsistent parent relationship")
+-		}
+-		if n.Parent == n.FirstChild {
+-			return fmt.Errorf("html: inconsistent parent/first relationship")
+-		}
+-		if n.Parent == n.LastChild {
+-			return fmt.Errorf("html: inconsistent parent/last relationship")
+-		}
+-		if n.Parent == n.PrevSibling {
+-			return fmt.Errorf("html: inconsistent parent/prev relationship")
+-		}
+-		if n.Parent == n.NextSibling {
+-			return fmt.Errorf("html: inconsistent parent/next relationship")
+-		}
+-
+-		parentHasNAsAChild := false
+-		for c := n.Parent.FirstChild; c != nil; c = c.NextSibling {
+-			if c == n {
+-				parentHasNAsAChild = true
+-				break
+-			}
+-		}
+-		if !parentHasNAsAChild {
+-			return fmt.Errorf("html: inconsistent parent/child relationship")
+-		}
+-	}
+-
+-	if n.PrevSibling != nil && n.PrevSibling.NextSibling != n {
+-		return fmt.Errorf("html: inconsistent prev/next relationship")
+-	}
+-	if n.NextSibling != nil && n.NextSibling.PrevSibling != n {
+-		return fmt.Errorf("html: inconsistent next/prev relationship")
+-	}
+-
+-	if (n.FirstChild == nil) != (n.LastChild == nil) {
+-		return fmt.Errorf("html: inconsistent first/last relationship")
+-	}
+-	if n.FirstChild != nil && n.FirstChild == n.LastChild {
+-		// We have a sole child.
+-		if n.FirstChild.PrevSibling != nil || n.FirstChild.NextSibling != nil {
+-			return fmt.Errorf("html: inconsistent sole child's sibling relationship")
+-		}
+-	}
+-
+-	seen := map[*Node]bool{}
+-
+-	var last *Node
+-	for c := n.FirstChild; c != nil; c = c.NextSibling {
+-		if seen[c] {
+-			return fmt.Errorf("html: inconsistent repeated child")
+-		}
+-		seen[c] = true
+-		last = c
+-	}
+-	if last != n.LastChild {
+-		return fmt.Errorf("html: inconsistent last relationship")
+-	}
+-
+-	var first *Node
+-	for c := n.LastChild; c != nil; c = c.PrevSibling {
+-		if !seen[c] {
+-			return fmt.Errorf("html: inconsistent missing child")
+-		}
+-		delete(seen, c)
+-		first = c
+-	}
+-	if first != n.FirstChild {
+-		return fmt.Errorf("html: inconsistent first relationship")
+-	}
+-
+-	if len(seen) != 0 {
+-		return fmt.Errorf("html: inconsistent forwards/backwards child list")
+-	}
+-
+-	return nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/parse.go gcc-4.8.1/libgo/go/exp/html/parse.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/parse.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/parse.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,2091 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"errors"
+-	a "exp/html/atom"
+-	"fmt"
+-	"io"
+-	"strings"
+-)
+-
+-// A parser implements the HTML5 parsing algorithm:
+-// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tree-construction
+-type parser struct {
+-	// tokenizer provides the tokens for the parser.
+-	tokenizer *Tokenizer
+-	// tok is the most recently read token.
+-	tok Token
+-	// Self-closing tags like <hr/> are treated as start tags, except that
+-	// hasSelfClosingToken is set while they are being processed.
+-	hasSelfClosingToken bool
+-	// doc is the document root element.
+-	doc *Node
+-	// The stack of open elements (section 12.2.3.2) and active formatting
+-	// elements (section 12.2.3.3).
+-	oe, afe nodeStack
+-	// Element pointers (section 12.2.3.4).
+-	head, form *Node
+-	// Other parsing state flags (section 12.2.3.5).
+-	scripting, framesetOK bool
+-	// im is the current insertion mode.
+-	im insertionMode
+-	// originalIM is the insertion mode to go back to after completing a text
+-	// or inTableText insertion mode.
+-	originalIM insertionMode
+-	// fosterParenting is whether new elements should be inserted according to
+-	// the foster parenting rules (section 12.2.5.3).
+-	fosterParenting bool
+-	// quirks is whether the parser is operating in "quirks mode."
+-	quirks bool
+-	// fragment is whether the parser is parsing an HTML fragment.
+-	fragment bool
+-	// context is the context element when parsing an HTML fragment
+-	// (section 12.4).
+-	context *Node
+-}
+-
+-func (p *parser) top() *Node {
+-	if n := p.oe.top(); n != nil {
+-		return n
+-	}
+-	return p.doc
+-}
+-
+-// Stop tags for use in popUntil. These come from section 12.2.3.2.
+-var (
+-	defaultScopeStopTags = map[string][]a.Atom{
+-		"":     {a.Applet, a.Caption, a.Html, a.Table, a.Td, a.Th, a.Marquee, a.Object},
+-		"math": {a.AnnotationXml, a.Mi, a.Mn, a.Mo, a.Ms, a.Mtext},
+-		"svg":  {a.Desc, a.ForeignObject, a.Title},
+-	}
+-)
+-
+-type scope int
+-
+-const (
+-	defaultScope scope = iota
+-	listItemScope
+-	buttonScope
+-	tableScope
+-	tableRowScope
+-	tableBodyScope
+-	selectScope
+-)
+-
+-// popUntil pops the stack of open elements at the highest element whose tag
+-// is in matchTags, provided there is no higher element in the scope's stop
+-// tags (as defined in section 12.2.3.2). It returns whether or not there was
+-// such an element. If there was not, popUntil leaves the stack unchanged.
+-//
+-// For example, the set of stop tags for table scope is: "html", "table". If
+-// the stack was:
+-// ["html", "body", "font", "table", "b", "i", "u"]
+-// then popUntil(tableScope, "font") would return false, but
+-// popUntil(tableScope, "i") would return true and the stack would become:
+-// ["html", "body", "font", "table", "b"]
+-//
+-// If an element's tag is in both the stop tags and matchTags, then the stack
+-// will be popped and the function returns true (provided, of course, there was
+-// no higher element in the stack that was also in the stop tags). For example,
+-// popUntil(tableScope, "table") returns true and leaves:
+-// ["html", "body", "font"]
+-func (p *parser) popUntil(s scope, matchTags ...a.Atom) bool {
+-	if i := p.indexOfElementInScope(s, matchTags...); i != -1 {
+-		p.oe = p.oe[:i]
+-		return true
+-	}
+-	return false
+-}
+-
+-// indexOfElementInScope returns the index in p.oe of the highest element whose
+-// tag is in matchTags that is in scope. If no matching element is in scope, it
+-// returns -1.
+-func (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) int {
+-	for i := len(p.oe) - 1; i >= 0; i-- {
+-		tagAtom := p.oe[i].DataAtom
+-		if p.oe[i].Namespace == "" {
+-			for _, t := range matchTags {
+-				if t == tagAtom {
+-					return i
+-				}
+-			}
+-			switch s {
+-			case defaultScope:
+-				// No-op.
+-			case listItemScope:
+-				if tagAtom == a.Ol || tagAtom == a.Ul {
+-					return -1
+-				}
+-			case buttonScope:
+-				if tagAtom == a.Button {
+-					return -1
+-				}
+-			case tableScope:
+-				if tagAtom == a.Html || tagAtom == a.Table {
+-					return -1
+-				}
+-			case selectScope:
+-				if tagAtom != a.Optgroup && tagAtom != a.Option {
+-					return -1
+-				}
+-			default:
+-				panic("unreachable")
+-			}
+-		}
+-		switch s {
+-		case defaultScope, listItemScope, buttonScope:
+-			for _, t := range defaultScopeStopTags[p.oe[i].Namespace] {
+-				if t == tagAtom {
+-					return -1
+-				}
+-			}
+-		}
+-	}
+-	return -1
+-}
+-
+-// elementInScope is like popUntil, except that it doesn't modify the stack of
+-// open elements.
+-func (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool {
+-	return p.indexOfElementInScope(s, matchTags...) != -1
+-}
+-
+-// clearStackToContext pops elements off the stack of open elements until a
+-// scope-defined element is found.
+-func (p *parser) clearStackToContext(s scope) {
+-	for i := len(p.oe) - 1; i >= 0; i-- {
+-		tagAtom := p.oe[i].DataAtom
+-		switch s {
+-		case tableScope:
+-			if tagAtom == a.Html || tagAtom == a.Table {
+-				p.oe = p.oe[:i+1]
+-				return
+-			}
+-		case tableRowScope:
+-			if tagAtom == a.Html || tagAtom == a.Tr {
+-				p.oe = p.oe[:i+1]
+-				return
+-			}
+-		case tableBodyScope:
+-			if tagAtom == a.Html || tagAtom == a.Tbody || tagAtom == a.Tfoot || tagAtom == a.Thead {
+-				p.oe = p.oe[:i+1]
+-				return
+-			}
+-		default:
+-			panic("unreachable")
+-		}
+-	}
+-}
+-
+-// generateImpliedEndTags pops nodes off the stack of open elements as long as
+-// the top node has a tag name of dd, dt, li, option, optgroup, p, rp, or rt.
+-// If exceptions are specified, nodes with that name will not be popped off.
+-func (p *parser) generateImpliedEndTags(exceptions ...string) {
+-	var i int
+-loop:
+-	for i = len(p.oe) - 1; i >= 0; i-- {
+-		n := p.oe[i]
+-		if n.Type == ElementNode {
+-			switch n.DataAtom {
+-			case a.Dd, a.Dt, a.Li, a.Option, a.Optgroup, a.P, a.Rp, a.Rt:
+-				for _, except := range exceptions {
+-					if n.Data == except {
+-						break loop
+-					}
+-				}
+-				continue
+-			}
+-		}
+-		break
+-	}
+-
+-	p.oe = p.oe[:i+1]
+-}
+-
+-// addChild adds a child node n to the top element, and pushes n onto the stack
+-// of open elements if it is an element node.
+-func (p *parser) addChild(n *Node) {
+-	if p.shouldFosterParent() {
+-		p.fosterParent(n)
+-	} else {
+-		p.top().AppendChild(n)
+-	}
+-
+-	if n.Type == ElementNode {
+-		p.oe = append(p.oe, n)
+-	}
+-}
+-
+-// shouldFosterParent returns whether the next node to be added should be
+-// foster parented.
+-func (p *parser) shouldFosterParent() bool {
+-	if p.fosterParenting {
+-		switch p.top().DataAtom {
+-		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-// fosterParent adds a child node according to the foster parenting rules.
+-// Section 12.2.5.3, "foster parenting".
+-func (p *parser) fosterParent(n *Node) {
+-	var table, parent, prev *Node
+-	var i int
+-	for i = len(p.oe) - 1; i >= 0; i-- {
+-		if p.oe[i].DataAtom == a.Table {
+-			table = p.oe[i]
+-			break
+-		}
+-	}
+-
+-	if table == nil {
+-		// The foster parent is the html element.
+-		parent = p.oe[0]
+-	} else {
+-		parent = table.Parent
+-	}
+-	if parent == nil {
+-		parent = p.oe[i-1]
+-	}
+-
+-	if table != nil {
+-		prev = table.PrevSibling
+-	} else {
+-		prev = parent.LastChild
+-	}
+-	if prev != nil && prev.Type == TextNode && n.Type == TextNode {
+-		prev.Data += n.Data
+-		return
+-	}
+-
+-	parent.InsertBefore(n, table)
+-}
+-
+-// addText adds text to the preceding node if it is a text node, or else it
+-// calls addChild with a new text node.
+-func (p *parser) addText(text string) {
+-	if text == "" {
+-		return
+-	}
+-
+-	if p.shouldFosterParent() {
+-		p.fosterParent(&Node{
+-			Type: TextNode,
+-			Data: text,
+-		})
+-		return
+-	}
+-
+-	t := p.top()
+-	if n := t.LastChild; n != nil && n.Type == TextNode {
+-		n.Data += text
+-		return
+-	}
+-	p.addChild(&Node{
+-		Type: TextNode,
+-		Data: text,
+-	})
+-}
+-
+-// addElement adds a child element based on the current token.
+-func (p *parser) addElement() {
+-	p.addChild(&Node{
+-		Type:     ElementNode,
+-		DataAtom: p.tok.DataAtom,
+-		Data:     p.tok.Data,
+-		Attr:     p.tok.Attr,
+-	})
+-}
+-
+-// Section 12.2.3.3.
+-func (p *parser) addFormattingElement() {
+-	tagAtom, attr := p.tok.DataAtom, p.tok.Attr
+-	p.addElement()
+-
+-	// Implement the Noah's Ark clause, but with three per family instead of two.
+-	identicalElements := 0
+-findIdenticalElements:
+-	for i := len(p.afe) - 1; i >= 0; i-- {
+-		n := p.afe[i]
+-		if n.Type == scopeMarkerNode {
+-			break
+-		}
+-		if n.Type != ElementNode {
+-			continue
+-		}
+-		if n.Namespace != "" {
+-			continue
+-		}
+-		if n.DataAtom != tagAtom {
+-			continue
+-		}
+-		if len(n.Attr) != len(attr) {
+-			continue
+-		}
+-	compareAttributes:
+-		for _, t0 := range n.Attr {
+-			for _, t1 := range attr {
+-				if t0.Key == t1.Key && t0.Namespace == t1.Namespace && t0.Val == t1.Val {
+-					// Found a match for this attribute, continue with the next attribute.
+-					continue compareAttributes
+-				}
+-			}
+-			// If we get here, there is no attribute that matches a.
+-			// Therefore the element is not identical to the new one.
+-			continue findIdenticalElements
+-		}
+-
+-		identicalElements++
+-		if identicalElements >= 3 {
+-			p.afe.remove(n)
+-		}
+-	}
+-
+-	p.afe = append(p.afe, p.top())
+-}
+-
+-// Section 12.2.3.3.
+-func (p *parser) clearActiveFormattingElements() {
+-	for {
+-		n := p.afe.pop()
+-		if len(p.afe) == 0 || n.Type == scopeMarkerNode {
+-			return
+-		}
+-	}
+-}
+-
+-// Section 12.2.3.3.
+-func (p *parser) reconstructActiveFormattingElements() {
+-	n := p.afe.top()
+-	if n == nil {
+-		return
+-	}
+-	if n.Type == scopeMarkerNode || p.oe.index(n) != -1 {
+-		return
+-	}
+-	i := len(p.afe) - 1
+-	for n.Type != scopeMarkerNode && p.oe.index(n) == -1 {
+-		if i == 0 {
+-			i = -1
+-			break
+-		}
+-		i--
+-		n = p.afe[i]
+-	}
+-	for {
+-		i++
+-		clone := p.afe[i].clone()
+-		p.addChild(clone)
+-		p.afe[i] = clone
+-		if i == len(p.afe)-1 {
+-			break
+-		}
+-	}
+-}
+-
+-// Section 12.2.4.
+-func (p *parser) acknowledgeSelfClosingTag() {
+-	p.hasSelfClosingToken = false
+-}
+-
+-// An insertion mode (section 12.2.3.1) is the state transition function from
+-// a particular state in the HTML5 parser's state machine. It updates the
+-// parser's fields depending on parser.tok (where ErrorToken means EOF).
+-// It returns whether the token was consumed.
+-type insertionMode func(*parser) bool
+-
+-// setOriginalIM sets the insertion mode to return to after completing a text or
+-// inTableText insertion mode.
+-// Section 12.2.3.1, "using the rules for".
+-func (p *parser) setOriginalIM() {
+-	if p.originalIM != nil {
+-		panic("html: bad parser state: originalIM was set twice")
+-	}
+-	p.originalIM = p.im
+-}
+-
+-// Section 12.2.3.1, "reset the insertion mode".
+-func (p *parser) resetInsertionMode() {
+-	for i := len(p.oe) - 1; i >= 0; i-- {
+-		n := p.oe[i]
+-		if i == 0 && p.context != nil {
+-			n = p.context
+-		}
+-
+-		switch n.DataAtom {
+-		case a.Select:
+-			p.im = inSelectIM
+-		case a.Td, a.Th:
+-			p.im = inCellIM
+-		case a.Tr:
+-			p.im = inRowIM
+-		case a.Tbody, a.Thead, a.Tfoot:
+-			p.im = inTableBodyIM
+-		case a.Caption:
+-			p.im = inCaptionIM
+-		case a.Colgroup:
+-			p.im = inColumnGroupIM
+-		case a.Table:
+-			p.im = inTableIM
+-		case a.Head:
+-			p.im = inBodyIM
+-		case a.Body:
+-			p.im = inBodyIM
+-		case a.Frameset:
+-			p.im = inFramesetIM
+-		case a.Html:
+-			p.im = beforeHeadIM
+-		default:
+-			continue
+-		}
+-		return
+-	}
+-	p.im = inBodyIM
+-}
+-
+-const whitespace = " \t\r\n\f"
+-
+-// Section 12.2.5.4.1.
+-func initialIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(p.tok.Data) == 0 {
+-			// It was all whitespace, so ignore it.
+-			return true
+-		}
+-	case CommentToken:
+-		p.doc.AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		n, quirks := parseDoctype(p.tok.Data)
+-		p.doc.AppendChild(n)
+-		p.quirks = quirks
+-		p.im = beforeHTMLIM
+-		return true
+-	}
+-	p.quirks = true
+-	p.im = beforeHTMLIM
+-	return false
+-}
+-
+-// Section 12.2.5.4.2.
+-func beforeHTMLIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	case TextToken:
+-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(p.tok.Data) == 0 {
+-			// It was all whitespace, so ignore it.
+-			return true
+-		}
+-	case StartTagToken:
+-		if p.tok.DataAtom == a.Html {
+-			p.addElement()
+-			p.im = beforeHeadIM
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Head, a.Body, a.Html, a.Br:
+-			p.parseImpliedToken(StartTagToken, a.Html, a.Html.String())
+-			return false
+-		default:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.doc.AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	}
+-	p.parseImpliedToken(StartTagToken, a.Html, a.Html.String())
+-	return false
+-}
+-
+-// Section 12.2.5.4.3.
+-func beforeHeadIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(p.tok.Data) == 0 {
+-			// It was all whitespace, so ignore it.
+-			return true
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Head:
+-			p.addElement()
+-			p.head = p.top()
+-			p.im = inHeadIM
+-			return true
+-		case a.Html:
+-			return inBodyIM(p)
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Head, a.Body, a.Html, a.Br:
+-			p.parseImpliedToken(StartTagToken, a.Head, a.Head.String())
+-			return false
+-		default:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	}
+-
+-	p.parseImpliedToken(StartTagToken, a.Head, a.Head.String())
+-	return false
+-}
+-
+-// Section 12.2.5.4.4.
+-func inHeadIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		s := strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(s) < len(p.tok.Data) {
+-			// Add the initial whitespace to the current node.
+-			p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
+-			if s == "" {
+-				return true
+-			}
+-			p.tok.Data = s
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta:
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-			return true
+-		case a.Script, a.Title, a.Noscript, a.Noframes, a.Style:
+-			p.addElement()
+-			p.setOriginalIM()
+-			p.im = textIM
+-			return true
+-		case a.Head:
+-			// Ignore the token.
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Head:
+-			n := p.oe.pop()
+-			if n.DataAtom != a.Head {
+-				panic("html: bad parser state: <head> element not found, in the in-head insertion mode")
+-			}
+-			p.im = afterHeadIM
+-			return true
+-		case a.Body, a.Html, a.Br:
+-			p.parseImpliedToken(EndTagToken, a.Head, a.Head.String())
+-			return false
+-		default:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	}
+-
+-	p.parseImpliedToken(EndTagToken, a.Head, a.Head.String())
+-	return false
+-}
+-
+-// Section 12.2.5.4.6.
+-func afterHeadIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		s := strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(s) < len(p.tok.Data) {
+-			// Add the initial whitespace to the current node.
+-			p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
+-			if s == "" {
+-				return true
+-			}
+-			p.tok.Data = s
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Body:
+-			p.addElement()
+-			p.framesetOK = false
+-			p.im = inBodyIM
+-			return true
+-		case a.Frameset:
+-			p.addElement()
+-			p.im = inFramesetIM
+-			return true
+-		case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Title:
+-			p.oe = append(p.oe, p.head)
+-			defer p.oe.remove(p.head)
+-			return inHeadIM(p)
+-		case a.Head:
+-			// Ignore the token.
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Body, a.Html, a.Br:
+-			// Drop down to creating an implied <body> tag.
+-		default:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	}
+-
+-	p.parseImpliedToken(StartTagToken, a.Body, a.Body.String())
+-	p.framesetOK = true
+-	return false
+-}
+-
+-// copyAttributes copies attributes of src not found on dst to dst.
+-func copyAttributes(dst *Node, src Token) {
+-	if len(src.Attr) == 0 {
+-		return
+-	}
+-	attr := map[string]string{}
+-	for _, t := range dst.Attr {
+-		attr[t.Key] = t.Val
+-	}
+-	for _, t := range src.Attr {
+-		if _, ok := attr[t.Key]; !ok {
+-			dst.Attr = append(dst.Attr, t)
+-			attr[t.Key] = t.Val
+-		}
+-	}
+-}
+-
+-// Section 12.2.5.4.7.
+-func inBodyIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		d := p.tok.Data
+-		switch n := p.oe.top(); n.DataAtom {
+-		case a.Pre, a.Listing:
+-			if n.FirstChild == nil {
+-				// Ignore a newline at the start of a <pre> block.
+-				if d != "" && d[0] == '\r' {
+-					d = d[1:]
+-				}
+-				if d != "" && d[0] == '\n' {
+-					d = d[1:]
+-				}
+-			}
+-		}
+-		d = strings.Replace(d, "\x00", "", -1)
+-		if d == "" {
+-			return true
+-		}
+-		p.reconstructActiveFormattingElements()
+-		p.addText(d)
+-		if p.framesetOK && strings.TrimLeft(d, whitespace) != "" {
+-			// There were non-whitespace characters inserted.
+-			p.framesetOK = false
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			copyAttributes(p.oe[0], p.tok)
+-		case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Title:
+-			return inHeadIM(p)
+-		case a.Body:
+-			if len(p.oe) >= 2 {
+-				body := p.oe[1]
+-				if body.Type == ElementNode && body.DataAtom == a.Body {
+-					p.framesetOK = false
+-					copyAttributes(body, p.tok)
+-				}
+-			}
+-		case a.Frameset:
+-			if !p.framesetOK || len(p.oe) < 2 || p.oe[1].DataAtom != a.Body {
+-				// Ignore the token.
+-				return true
+-			}
+-			body := p.oe[1]
+-			if body.Parent != nil {
+-				body.Parent.RemoveChild(body)
+-			}
+-			p.oe = p.oe[:1]
+-			p.addElement()
+-			p.im = inFramesetIM
+-			return true
+-		case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul:
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+-			p.popUntil(buttonScope, a.P)
+-			switch n := p.top(); n.DataAtom {
+-			case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+-				p.oe.pop()
+-			}
+-			p.addElement()
+-		case a.Pre, a.Listing:
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-			// The newline, if any, will be dealt with by the TextToken case.
+-			p.framesetOK = false
+-		case a.Form:
+-			if p.form == nil {
+-				p.popUntil(buttonScope, a.P)
+-				p.addElement()
+-				p.form = p.top()
+-			}
+-		case a.Li:
+-			p.framesetOK = false
+-			for i := len(p.oe) - 1; i >= 0; i-- {
+-				node := p.oe[i]
+-				switch node.DataAtom {
+-				case a.Li:
+-					p.oe = p.oe[:i]
+-				case a.Address, a.Div, a.P:
+-					continue
+-				default:
+-					if !isSpecialElement(node) {
+-						continue
+-					}
+-				}
+-				break
+-			}
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-		case a.Dd, a.Dt:
+-			p.framesetOK = false
+-			for i := len(p.oe) - 1; i >= 0; i-- {
+-				node := p.oe[i]
+-				switch node.DataAtom {
+-				case a.Dd, a.Dt:
+-					p.oe = p.oe[:i]
+-				case a.Address, a.Div, a.P:
+-					continue
+-				default:
+-					if !isSpecialElement(node) {
+-						continue
+-					}
+-				}
+-				break
+-			}
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-		case a.Plaintext:
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-		case a.Button:
+-			p.popUntil(defaultScope, a.Button)
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.framesetOK = false
+-		case a.A:
+-			for i := len(p.afe) - 1; i >= 0 && p.afe[i].Type != scopeMarkerNode; i-- {
+-				if n := p.afe[i]; n.Type == ElementNode && n.DataAtom == a.A {
+-					p.inBodyEndTagFormatting(a.A)
+-					p.oe.remove(n)
+-					p.afe.remove(n)
+-					break
+-				}
+-			}
+-			p.reconstructActiveFormattingElements()
+-			p.addFormattingElement()
+-		case a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
+-			p.reconstructActiveFormattingElements()
+-			p.addFormattingElement()
+-		case a.Nobr:
+-			p.reconstructActiveFormattingElements()
+-			if p.elementInScope(defaultScope, a.Nobr) {
+-				p.inBodyEndTagFormatting(a.Nobr)
+-				p.reconstructActiveFormattingElements()
+-			}
+-			p.addFormattingElement()
+-		case a.Applet, a.Marquee, a.Object:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.afe = append(p.afe, &scopeMarker)
+-			p.framesetOK = false
+-		case a.Table:
+-			if !p.quirks {
+-				p.popUntil(buttonScope, a.P)
+-			}
+-			p.addElement()
+-			p.framesetOK = false
+-			p.im = inTableIM
+-			return true
+-		case a.Area, a.Br, a.Embed, a.Img, a.Input, a.Keygen, a.Wbr:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-			if p.tok.DataAtom == a.Input {
+-				for _, t := range p.tok.Attr {
+-					if t.Key == "type" {
+-						if strings.ToLower(t.Val) == "hidden" {
+-							// Skip setting framesetOK = false
+-							return true
+-						}
+-					}
+-				}
+-			}
+-			p.framesetOK = false
+-		case a.Param, a.Source, a.Track:
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-		case a.Hr:
+-			p.popUntil(buttonScope, a.P)
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-			p.framesetOK = false
+-		case a.Image:
+-			p.tok.DataAtom = a.Img
+-			p.tok.Data = a.Img.String()
+-			return false
+-		case a.Isindex:
+-			if p.form != nil {
+-				// Ignore the token.
+-				return true
+-			}
+-			action := ""
+-			prompt := "This is a searchable index. Enter search keywords: "
+-			attr := []Attribute{{Key: "name", Val: "isindex"}}
+-			for _, t := range p.tok.Attr {
+-				switch t.Key {
+-				case "action":
+-					action = t.Val
+-				case "name":
+-					// Ignore the attribute.
+-				case "prompt":
+-					prompt = t.Val
+-				default:
+-					attr = append(attr, t)
+-				}
+-			}
+-			p.acknowledgeSelfClosingTag()
+-			p.popUntil(buttonScope, a.P)
+-			p.parseImpliedToken(StartTagToken, a.Form, a.Form.String())
+-			if action != "" {
+-				p.form.Attr = []Attribute{{Key: "action", Val: action}}
+-			}
+-			p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
+-			p.parseImpliedToken(StartTagToken, a.Label, a.Label.String())
+-			p.addText(prompt)
+-			p.addChild(&Node{
+-				Type:     ElementNode,
+-				DataAtom: a.Input,
+-				Data:     a.Input.String(),
+-				Attr:     attr,
+-			})
+-			p.oe.pop()
+-			p.parseImpliedToken(EndTagToken, a.Label, a.Label.String())
+-			p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
+-			p.parseImpliedToken(EndTagToken, a.Form, a.Form.String())
+-		case a.Textarea:
+-			p.addElement()
+-			p.setOriginalIM()
+-			p.framesetOK = false
+-			p.im = textIM
+-		case a.Xmp:
+-			p.popUntil(buttonScope, a.P)
+-			p.reconstructActiveFormattingElements()
+-			p.framesetOK = false
+-			p.addElement()
+-			p.setOriginalIM()
+-			p.im = textIM
+-		case a.Iframe:
+-			p.framesetOK = false
+-			p.addElement()
+-			p.setOriginalIM()
+-			p.im = textIM
+-		case a.Noembed, a.Noscript:
+-			p.addElement()
+-			p.setOriginalIM()
+-			p.im = textIM
+-		case a.Select:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.framesetOK = false
+-			p.im = inSelectIM
+-			return true
+-		case a.Optgroup, a.Option:
+-			if p.top().DataAtom == a.Option {
+-				p.oe.pop()
+-			}
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-		case a.Rp, a.Rt:
+-			if p.elementInScope(defaultScope, a.Ruby) {
+-				p.generateImpliedEndTags()
+-			}
+-			p.addElement()
+-		case a.Math, a.Svg:
+-			p.reconstructActiveFormattingElements()
+-			if p.tok.DataAtom == a.Math {
+-				adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)
+-			} else {
+-				adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)
+-			}
+-			adjustForeignAttributes(p.tok.Attr)
+-			p.addElement()
+-			p.top().Namespace = p.tok.Data
+-			if p.hasSelfClosingToken {
+-				p.oe.pop()
+-				p.acknowledgeSelfClosingTag()
+-			}
+-			return true
+-		case a.Caption, a.Col, a.Colgroup, a.Frame, a.Head, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
+-			// Ignore the token.
+-		default:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Body:
+-			if p.elementInScope(defaultScope, a.Body) {
+-				p.im = afterBodyIM
+-			}
+-		case a.Html:
+-			if p.elementInScope(defaultScope, a.Body) {
+-				p.parseImpliedToken(EndTagToken, a.Body, a.Body.String())
+-				return false
+-			}
+-			return true
+-		case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul:
+-			p.popUntil(defaultScope, p.tok.DataAtom)
+-		case a.Form:
+-			node := p.form
+-			p.form = nil
+-			i := p.indexOfElementInScope(defaultScope, a.Form)
+-			if node == nil || i == -1 || p.oe[i] != node {
+-				// Ignore the token.
+-				return true
+-			}
+-			p.generateImpliedEndTags()
+-			p.oe.remove(node)
+-		case a.P:
+-			if !p.elementInScope(buttonScope, a.P) {
+-				p.parseImpliedToken(StartTagToken, a.P, a.P.String())
+-			}
+-			p.popUntil(buttonScope, a.P)
+-		case a.Li:
+-			p.popUntil(listItemScope, a.Li)
+-		case a.Dd, a.Dt:
+-			p.popUntil(defaultScope, p.tok.DataAtom)
+-		case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
+-			p.popUntil(defaultScope, a.H1, a.H2, a.H3, a.H4, a.H5, a.H6)
+-		case a.A, a.B, a.Big, a.Code, a.Em, a.Font, a.I, a.Nobr, a.S, a.Small, a.Strike, a.Strong, a.Tt, a.U:
+-			p.inBodyEndTagFormatting(p.tok.DataAtom)
+-		case a.Applet, a.Marquee, a.Object:
+-			if p.popUntil(defaultScope, p.tok.DataAtom) {
+-				p.clearActiveFormattingElements()
+-			}
+-		case a.Br:
+-			p.tok.Type = StartTagToken
+-			return false
+-		default:
+-			p.inBodyEndTagOther(p.tok.DataAtom)
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	}
+-
+-	return true
+-}
+-
+-func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom) {
+-	// This is the "adoption agency" algorithm, described at
+-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#adoptionAgency
+-
+-	// TODO: this is a fairly literal line-by-line translation of that algorithm.
+-	// Once the code successfully parses the comprehensive test suite, we should
+-	// refactor this code to be more idiomatic.
+-
+-	// Steps 1-3. The outer loop.
+-	for i := 0; i < 8; i++ {
+-		// Step 4. Find the formatting element.
+-		var formattingElement *Node
+-		for j := len(p.afe) - 1; j >= 0; j-- {
+-			if p.afe[j].Type == scopeMarkerNode {
+-				break
+-			}
+-			if p.afe[j].DataAtom == tagAtom {
+-				formattingElement = p.afe[j]
+-				break
+-			}
+-		}
+-		if formattingElement == nil {
+-			p.inBodyEndTagOther(tagAtom)
+-			return
+-		}
+-		feIndex := p.oe.index(formattingElement)
+-		if feIndex == -1 {
+-			p.afe.remove(formattingElement)
+-			return
+-		}
+-		if !p.elementInScope(defaultScope, tagAtom) {
+-			// Ignore the tag.
+-			return
+-		}
+-
+-		// Steps 5-6. Find the furthest block.
+-		var furthestBlock *Node
+-		for _, e := range p.oe[feIndex:] {
+-			if isSpecialElement(e) {
+-				furthestBlock = e
+-				break
+-			}
+-		}
+-		if furthestBlock == nil {
+-			e := p.oe.pop()
+-			for e != formattingElement {
+-				e = p.oe.pop()
+-			}
+-			p.afe.remove(e)
+-			return
+-		}
+-
+-		// Steps 7-8. Find the common ancestor and bookmark node.
+-		commonAncestor := p.oe[feIndex-1]
+-		bookmark := p.afe.index(formattingElement)
+-
+-		// Step 9. The inner loop. Find the lastNode to reparent.
+-		lastNode := furthestBlock
+-		node := furthestBlock
+-		x := p.oe.index(node)
+-		// Steps 9.1-9.3.
+-		for j := 0; j < 3; j++ {
+-			// Step 9.4.
+-			x--
+-			node = p.oe[x]
+-			// Step 9.5.
+-			if p.afe.index(node) == -1 {
+-				p.oe.remove(node)
+-				continue
+-			}
+-			// Step 9.6.
+-			if node == formattingElement {
+-				break
+-			}
+-			// Step 9.7.
+-			clone := node.clone()
+-			p.afe[p.afe.index(node)] = clone
+-			p.oe[p.oe.index(node)] = clone
+-			node = clone
+-			// Step 9.8.
+-			if lastNode == furthestBlock {
+-				bookmark = p.afe.index(node) + 1
+-			}
+-			// Step 9.9.
+-			if lastNode.Parent != nil {
+-				lastNode.Parent.RemoveChild(lastNode)
+-			}
+-			node.AppendChild(lastNode)
+-			// Step 9.10.
+-			lastNode = node
+-		}
+-
+-		// Step 10. Reparent lastNode to the common ancestor,
+-		// or for misnested table nodes, to the foster parent.
+-		if lastNode.Parent != nil {
+-			lastNode.Parent.RemoveChild(lastNode)
+-		}
+-		switch commonAncestor.DataAtom {
+-		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-			p.fosterParent(lastNode)
+-		default:
+-			commonAncestor.AppendChild(lastNode)
+-		}
+-
+-		// Steps 11-13. Reparent nodes from the furthest block's children
+-		// to a clone of the formatting element.
+-		clone := formattingElement.clone()
+-		reparentChildren(clone, furthestBlock)
+-		furthestBlock.AppendChild(clone)
+-
+-		// Step 14. Fix up the list of active formatting elements.
+-		if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
+-			// Move the bookmark with the rest of the list.
+-			bookmark--
+-		}
+-		p.afe.remove(formattingElement)
+-		p.afe.insert(bookmark, clone)
+-
+-		// Step 15. Fix up the stack of open elements.
+-		p.oe.remove(formattingElement)
+-		p.oe.insert(p.oe.index(furthestBlock)+1, clone)
+-	}
+-}
+-
+-// inBodyEndTagOther performs the "any other end tag" algorithm for inBodyIM.
+-func (p *parser) inBodyEndTagOther(tagAtom a.Atom) {
+-	for i := len(p.oe) - 1; i >= 0; i-- {
+-		if p.oe[i].DataAtom == tagAtom {
+-			p.oe = p.oe[:i]
+-			break
+-		}
+-		if isSpecialElement(p.oe[i]) {
+-			break
+-		}
+-	}
+-}
+-
+-// Section 12.2.5.4.8.
+-func textIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case ErrorToken:
+-		p.oe.pop()
+-	case TextToken:
+-		d := p.tok.Data
+-		if n := p.oe.top(); n.DataAtom == a.Textarea && n.FirstChild == nil {
+-			// Ignore a newline at the start of a <textarea> block.
+-			if d != "" && d[0] == '\r' {
+-				d = d[1:]
+-			}
+-			if d != "" && d[0] == '\n' {
+-				d = d[1:]
+-			}
+-		}
+-		if d == "" {
+-			return true
+-		}
+-		p.addText(d)
+-		return true
+-	case EndTagToken:
+-		p.oe.pop()
+-	}
+-	p.im = p.originalIM
+-	p.originalIM = nil
+-	return p.tok.Type == EndTagToken
+-}
+-
+-// Section 12.2.5.4.9.
+-func inTableIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case ErrorToken:
+-		// Stop parsing.
+-		return true
+-	case TextToken:
+-		p.tok.Data = strings.Replace(p.tok.Data, "\x00", "", -1)
+-		switch p.oe.top().DataAtom {
+-		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-			if strings.Trim(p.tok.Data, whitespace) == "" {
+-				p.addText(p.tok.Data)
+-				return true
+-			}
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Caption:
+-			p.clearStackToContext(tableScope)
+-			p.afe = append(p.afe, &scopeMarker)
+-			p.addElement()
+-			p.im = inCaptionIM
+-			return true
+-		case a.Colgroup:
+-			p.clearStackToContext(tableScope)
+-			p.addElement()
+-			p.im = inColumnGroupIM
+-			return true
+-		case a.Col:
+-			p.parseImpliedToken(StartTagToken, a.Colgroup, a.Colgroup.String())
+-			return false
+-		case a.Tbody, a.Tfoot, a.Thead:
+-			p.clearStackToContext(tableScope)
+-			p.addElement()
+-			p.im = inTableBodyIM
+-			return true
+-		case a.Td, a.Th, a.Tr:
+-			p.parseImpliedToken(StartTagToken, a.Tbody, a.Tbody.String())
+-			return false
+-		case a.Table:
+-			if p.popUntil(tableScope, a.Table) {
+-				p.resetInsertionMode()
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Style, a.Script:
+-			return inHeadIM(p)
+-		case a.Input:
+-			for _, t := range p.tok.Attr {
+-				if t.Key == "type" && strings.ToLower(t.Val) == "hidden" {
+-					p.addElement()
+-					p.oe.pop()
+-					return true
+-				}
+-			}
+-			// Otherwise drop down to the default action.
+-		case a.Form:
+-			if p.form != nil {
+-				// Ignore the token.
+-				return true
+-			}
+-			p.addElement()
+-			p.form = p.oe.pop()
+-		case a.Select:
+-			p.reconstructActiveFormattingElements()
+-			switch p.top().DataAtom {
+-			case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-				p.fosterParenting = true
+-			}
+-			p.addElement()
+-			p.fosterParenting = false
+-			p.framesetOK = false
+-			p.im = inSelectInTableIM
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Table:
+-			if p.popUntil(tableScope, a.Table) {
+-				p.resetInsertionMode()
+-				return true
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	}
+-
+-	p.fosterParenting = true
+-	defer func() { p.fosterParenting = false }()
+-
+-	return inBodyIM(p)
+-}
+-
+-// Section 12.2.5.4.11.
+-func inCaptionIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Thead, a.Tr:
+-			if p.popUntil(tableScope, a.Caption) {
+-				p.clearActiveFormattingElements()
+-				p.im = inTableIM
+-				return false
+-			} else {
+-				// Ignore the token.
+-				return true
+-			}
+-		case a.Select:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.framesetOK = false
+-			p.im = inSelectInTableIM
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Caption:
+-			if p.popUntil(tableScope, a.Caption) {
+-				p.clearActiveFormattingElements()
+-				p.im = inTableIM
+-			}
+-			return true
+-		case a.Table:
+-			if p.popUntil(tableScope, a.Caption) {
+-				p.clearActiveFormattingElements()
+-				p.im = inTableIM
+-				return false
+-			} else {
+-				// Ignore the token.
+-				return true
+-			}
+-		case a.Body, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
+-			// Ignore the token.
+-			return true
+-		}
+-	}
+-	return inBodyIM(p)
+-}
+-
+-// Section 12.2.5.4.12.
+-func inColumnGroupIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		s := strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(s) < len(p.tok.Data) {
+-			// Add the initial whitespace to the current node.
+-			p.addText(p.tok.Data[:len(p.tok.Data)-len(s)])
+-			if s == "" {
+-				return true
+-			}
+-			p.tok.Data = s
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Col:
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Colgroup:
+-			if p.oe.top().DataAtom != a.Html {
+-				p.oe.pop()
+-				p.im = inTableIM
+-			}
+-			return true
+-		case a.Col:
+-			// Ignore the token.
+-			return true
+-		}
+-	}
+-	if p.oe.top().DataAtom != a.Html {
+-		p.oe.pop()
+-		p.im = inTableIM
+-		return false
+-	}
+-	return true
+-}
+-
+-// Section 12.2.5.4.13.
+-func inTableBodyIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Tr:
+-			p.clearStackToContext(tableBodyScope)
+-			p.addElement()
+-			p.im = inRowIM
+-			return true
+-		case a.Td, a.Th:
+-			p.parseImpliedToken(StartTagToken, a.Tr, a.Tr.String())
+-			return false
+-		case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead:
+-			if p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) {
+-				p.im = inTableIM
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Tbody, a.Tfoot, a.Thead:
+-			if p.elementInScope(tableScope, p.tok.DataAtom) {
+-				p.clearStackToContext(tableBodyScope)
+-				p.oe.pop()
+-				p.im = inTableIM
+-			}
+-			return true
+-		case a.Table:
+-			if p.popUntil(tableScope, a.Tbody, a.Thead, a.Tfoot) {
+-				p.im = inTableIM
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th, a.Tr:
+-			// Ignore the token.
+-			return true
+-		}
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	}
+-
+-	return inTableIM(p)
+-}
+-
+-// Section 12.2.5.4.14.
+-func inRowIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Td, a.Th:
+-			p.clearStackToContext(tableRowScope)
+-			p.addElement()
+-			p.afe = append(p.afe, &scopeMarker)
+-			p.im = inCellIM
+-			return true
+-		case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-			if p.popUntil(tableScope, a.Tr) {
+-				p.im = inTableBodyIM
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Tr:
+-			if p.popUntil(tableScope, a.Tr) {
+-				p.im = inTableBodyIM
+-				return true
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Table:
+-			if p.popUntil(tableScope, a.Tr) {
+-				p.im = inTableBodyIM
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Tbody, a.Tfoot, a.Thead:
+-			if p.elementInScope(tableScope, p.tok.DataAtom) {
+-				p.parseImpliedToken(EndTagToken, a.Tr, a.Tr.String())
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Body, a.Caption, a.Col, a.Colgroup, a.Html, a.Td, a.Th:
+-			// Ignore the token.
+-			return true
+-		}
+-	}
+-
+-	return inTableIM(p)
+-}
+-
+-// Section 12.2.5.4.15.
+-func inCellIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
+-			if p.popUntil(tableScope, a.Td, a.Th) {
+-				// Close the cell and reprocess.
+-				p.clearActiveFormattingElements()
+-				p.im = inRowIM
+-				return false
+-			}
+-			// Ignore the token.
+-			return true
+-		case a.Select:
+-			p.reconstructActiveFormattingElements()
+-			p.addElement()
+-			p.framesetOK = false
+-			p.im = inSelectInTableIM
+-			return true
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Td, a.Th:
+-			if !p.popUntil(tableScope, p.tok.DataAtom) {
+-				// Ignore the token.
+-				return true
+-			}
+-			p.clearActiveFormattingElements()
+-			p.im = inRowIM
+-			return true
+-		case a.Body, a.Caption, a.Col, a.Colgroup, a.Html:
+-			// Ignore the token.
+-			return true
+-		case a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr:
+-			if !p.elementInScope(tableScope, p.tok.DataAtom) {
+-				// Ignore the token.
+-				return true
+-			}
+-			// Close the cell and reprocess.
+-			p.popUntil(tableScope, a.Td, a.Th)
+-			p.clearActiveFormattingElements()
+-			p.im = inRowIM
+-			return false
+-		}
+-	}
+-	return inBodyIM(p)
+-}
+-
+-// Section 12.2.5.4.16.
+-func inSelectIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case ErrorToken:
+-		// Stop parsing.
+-		return true
+-	case TextToken:
+-		p.addText(strings.Replace(p.tok.Data, "\x00", "", -1))
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Option:
+-			if p.top().DataAtom == a.Option {
+-				p.oe.pop()
+-			}
+-			p.addElement()
+-		case a.Optgroup:
+-			if p.top().DataAtom == a.Option {
+-				p.oe.pop()
+-			}
+-			if p.top().DataAtom == a.Optgroup {
+-				p.oe.pop()
+-			}
+-			p.addElement()
+-		case a.Select:
+-			p.tok.Type = EndTagToken
+-			return false
+-		case a.Input, a.Keygen, a.Textarea:
+-			if p.elementInScope(selectScope, a.Select) {
+-				p.parseImpliedToken(EndTagToken, a.Select, a.Select.String())
+-				return false
+-			}
+-			// In order to properly ignore <textarea>, we need to change the tokenizer mode.
+-			p.tokenizer.NextIsNotRawText()
+-			// Ignore the token.
+-			return true
+-		case a.Script:
+-			return inHeadIM(p)
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Option:
+-			if p.top().DataAtom == a.Option {
+-				p.oe.pop()
+-			}
+-		case a.Optgroup:
+-			i := len(p.oe) - 1
+-			if p.oe[i].DataAtom == a.Option {
+-				i--
+-			}
+-			if p.oe[i].DataAtom == a.Optgroup {
+-				p.oe = p.oe[:i]
+-			}
+-		case a.Select:
+-			if p.popUntil(selectScope, a.Select) {
+-				p.resetInsertionMode()
+-			}
+-		}
+-	case CommentToken:
+-		p.doc.AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	case DoctypeToken:
+-		// Ignore the token.
+-		return true
+-	}
+-
+-	return true
+-}
+-
+-// Section 12.2.5.4.17.
+-func inSelectInTableIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case StartTagToken, EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Caption, a.Table, a.Tbody, a.Tfoot, a.Thead, a.Tr, a.Td, a.Th:
+-			if p.tok.Type == StartTagToken || p.elementInScope(tableScope, p.tok.DataAtom) {
+-				p.parseImpliedToken(EndTagToken, a.Select, a.Select.String())
+-				return false
+-			} else {
+-				// Ignore the token.
+-				return true
+-			}
+-		}
+-	}
+-	return inSelectIM(p)
+-}
+-
+-// Section 12.2.5.4.18.
+-func afterBodyIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case ErrorToken:
+-		// Stop parsing.
+-		return true
+-	case TextToken:
+-		s := strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(s) == 0 {
+-			// It was all whitespace.
+-			return inBodyIM(p)
+-		}
+-	case StartTagToken:
+-		if p.tok.DataAtom == a.Html {
+-			return inBodyIM(p)
+-		}
+-	case EndTagToken:
+-		if p.tok.DataAtom == a.Html {
+-			if !p.fragment {
+-				p.im = afterAfterBodyIM
+-			}
+-			return true
+-		}
+-	case CommentToken:
+-		// The comment is attached to the <html> element.
+-		if len(p.oe) < 1 || p.oe[0].DataAtom != a.Html {
+-			panic("html: bad parser state: <html> element not found, in the after-body insertion mode")
+-		}
+-		p.oe[0].AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	}
+-	p.im = inBodyIM
+-	return false
+-}
+-
+-// Section 12.2.5.4.19.
+-func inFramesetIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	case TextToken:
+-		// Ignore all text but whitespace.
+-		s := strings.Map(func(c rune) rune {
+-			switch c {
+-			case ' ', '\t', '\n', '\f', '\r':
+-				return c
+-			}
+-			return -1
+-		}, p.tok.Data)
+-		if s != "" {
+-			p.addText(s)
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Frameset:
+-			p.addElement()
+-		case a.Frame:
+-			p.addElement()
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-		case a.Noframes:
+-			return inHeadIM(p)
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Frameset:
+-			if p.oe.top().DataAtom != a.Html {
+-				p.oe.pop()
+-				if p.oe.top().DataAtom != a.Frameset {
+-					p.im = afterFramesetIM
+-					return true
+-				}
+-			}
+-		}
+-	default:
+-		// Ignore the token.
+-	}
+-	return true
+-}
+-
+-// Section 12.2.5.4.20.
+-func afterFramesetIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	case TextToken:
+-		// Ignore all text but whitespace.
+-		s := strings.Map(func(c rune) rune {
+-			switch c {
+-			case ' ', '\t', '\n', '\f', '\r':
+-				return c
+-			}
+-			return -1
+-		}, p.tok.Data)
+-		if s != "" {
+-			p.addText(s)
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Noframes:
+-			return inHeadIM(p)
+-		}
+-	case EndTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			p.im = afterAfterFramesetIM
+-			return true
+-		}
+-	default:
+-		// Ignore the token.
+-	}
+-	return true
+-}
+-
+-// Section 12.2.5.4.21.
+-func afterAfterBodyIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case ErrorToken:
+-		// Stop parsing.
+-		return true
+-	case TextToken:
+-		s := strings.TrimLeft(p.tok.Data, whitespace)
+-		if len(s) == 0 {
+-			// It was all whitespace.
+-			return inBodyIM(p)
+-		}
+-	case StartTagToken:
+-		if p.tok.DataAtom == a.Html {
+-			return inBodyIM(p)
+-		}
+-	case CommentToken:
+-		p.doc.AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-		return true
+-	case DoctypeToken:
+-		return inBodyIM(p)
+-	}
+-	p.im = inBodyIM
+-	return false
+-}
+-
+-// Section 12.2.5.4.22.
+-func afterAfterFramesetIM(p *parser) bool {
+-	switch p.tok.Type {
+-	case CommentToken:
+-		p.doc.AppendChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	case TextToken:
+-		// Ignore all text but whitespace.
+-		s := strings.Map(func(c rune) rune {
+-			switch c {
+-			case ' ', '\t', '\n', '\f', '\r':
+-				return c
+-			}
+-			return -1
+-		}, p.tok.Data)
+-		if s != "" {
+-			p.tok.Data = s
+-			return inBodyIM(p)
+-		}
+-	case StartTagToken:
+-		switch p.tok.DataAtom {
+-		case a.Html:
+-			return inBodyIM(p)
+-		case a.Noframes:
+-			return inHeadIM(p)
+-		}
+-	case DoctypeToken:
+-		return inBodyIM(p)
+-	default:
+-		// Ignore the token.
+-	}
+-	return true
+-}
+-
+-const whitespaceOrNUL = whitespace + "\x00"
+-
+-// Section 12.2.5.5.
+-func parseForeignContent(p *parser) bool {
+-	switch p.tok.Type {
+-	case TextToken:
+-		if p.framesetOK {
+-			p.framesetOK = strings.TrimLeft(p.tok.Data, whitespaceOrNUL) == ""
+-		}
+-		p.tok.Data = strings.Replace(p.tok.Data, "\x00", "\ufffd", -1)
+-		p.addText(p.tok.Data)
+-	case CommentToken:
+-		p.addChild(&Node{
+-			Type: CommentNode,
+-			Data: p.tok.Data,
+-		})
+-	case StartTagToken:
+-		b := breakout[p.tok.Data]
+-		if p.tok.DataAtom == a.Font {
+-		loop:
+-			for _, attr := range p.tok.Attr {
+-				switch attr.Key {
+-				case "color", "face", "size":
+-					b = true
+-					break loop
+-				}
+-			}
+-		}
+-		if b {
+-			for i := len(p.oe) - 1; i >= 0; i-- {
+-				n := p.oe[i]
+-				if n.Namespace == "" || htmlIntegrationPoint(n) || mathMLTextIntegrationPoint(n) {
+-					p.oe = p.oe[:i+1]
+-					break
+-				}
+-			}
+-			return false
+-		}
+-		switch p.top().Namespace {
+-		case "math":
+-			adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)
+-		case "svg":
+-			// Adjust SVG tag names. The tokenizer lower-cases tag names, but
+-			// SVG wants e.g. "foreignObject" with a capital second "O".
+-			if x := svgTagNameAdjustments[p.tok.Data]; x != "" {
+-				p.tok.DataAtom = a.Lookup([]byte(x))
+-				p.tok.Data = x
+-			}
+-			adjustAttributeNames(p.tok.Attr, svgAttributeAdjustments)
+-		default:
+-			panic("html: bad parser state: unexpected namespace")
+-		}
+-		adjustForeignAttributes(p.tok.Attr)
+-		namespace := p.top().Namespace
+-		p.addElement()
+-		p.top().Namespace = namespace
+-		if namespace != "" {
+-			// Don't let the tokenizer go into raw text mode in foreign content
+-			// (e.g. in an SVG <title> tag).
+-			p.tokenizer.NextIsNotRawText()
+-		}
+-		if p.hasSelfClosingToken {
+-			p.oe.pop()
+-			p.acknowledgeSelfClosingTag()
+-		}
+-	case EndTagToken:
+-		for i := len(p.oe) - 1; i >= 0; i-- {
+-			if p.oe[i].Namespace == "" {
+-				return p.im(p)
+-			}
+-			if strings.EqualFold(p.oe[i].Data, p.tok.Data) {
+-				p.oe = p.oe[:i]
+-				break
+-			}
+-		}
+-		return true
+-	default:
+-		// Ignore the token.
+-	}
+-	return true
+-}
+-
+-// Section 12.2.5.
+-func (p *parser) inForeignContent() bool {
+-	if len(p.oe) == 0 {
+-		return false
+-	}
+-	n := p.oe[len(p.oe)-1]
+-	if n.Namespace == "" {
+-		return false
+-	}
+-	if mathMLTextIntegrationPoint(n) {
+-		if p.tok.Type == StartTagToken && p.tok.DataAtom != a.Mglyph && p.tok.DataAtom != a.Malignmark {
+-			return false
+-		}
+-		if p.tok.Type == TextToken {
+-			return false
+-		}
+-	}
+-	if n.Namespace == "math" && n.DataAtom == a.AnnotationXml && p.tok.Type == StartTagToken && p.tok.DataAtom == a.Svg {
+-		return false
+-	}
+-	if htmlIntegrationPoint(n) && (p.tok.Type == StartTagToken || p.tok.Type == TextToken) {
+-		return false
+-	}
+-	if p.tok.Type == ErrorToken {
+-		return false
+-	}
+-	return true
+-}
+-
+-// parseImpliedToken parses a token as though it had appeared in the parser's
+-// input.
+-func (p *parser) parseImpliedToken(t TokenType, dataAtom a.Atom, data string) {
+-	realToken, selfClosing := p.tok, p.hasSelfClosingToken
+-	p.tok = Token{
+-		Type:     t,
+-		DataAtom: dataAtom,
+-		Data:     data,
+-	}
+-	p.hasSelfClosingToken = false
+-	p.parseCurrentToken()
+-	p.tok, p.hasSelfClosingToken = realToken, selfClosing
+-}
+-
+-// parseCurrentToken runs the current token through the parsing routines
+-// until it is consumed.
+-func (p *parser) parseCurrentToken() {
+-	if p.tok.Type == SelfClosingTagToken {
+-		p.hasSelfClosingToken = true
+-		p.tok.Type = StartTagToken
+-	}
+-
+-	consumed := false
+-	for !consumed {
+-		if p.inForeignContent() {
+-			consumed = parseForeignContent(p)
+-		} else {
+-			consumed = p.im(p)
+-		}
+-	}
+-
+-	if p.hasSelfClosingToken {
+-		// This is a parse error, but ignore it.
+-		p.hasSelfClosingToken = false
+-	}
+-}
+-
+-func (p *parser) parse() error {
+-	// Iterate until EOF. Any other error will cause an early return.
+-	var err error
+-	for err != io.EOF {
+-		// CDATA sections are allowed only in foreign content.
+-		n := p.oe.top()
+-		p.tokenizer.AllowCDATA(n != nil && n.Namespace != "")
+-		// Read and parse the next token.
+-		p.tokenizer.Next()
+-		p.tok = p.tokenizer.Token()
+-		if p.tok.Type == ErrorToken {
+-			err = p.tokenizer.Err()
+-			if err != nil && err != io.EOF {
+-				return err
+-			}
+-		}
+-		p.parseCurrentToken()
+-	}
+-	return nil
+-}
+-
+-// Parse returns the parse tree for the HTML from the given Reader.
+-// The input is assumed to be UTF-8 encoded.
+-func Parse(r io.Reader) (*Node, error) {
+-	p := &parser{
+-		tokenizer: NewTokenizer(r),
+-		doc: &Node{
+-			Type: DocumentNode,
+-		},
+-		scripting:  true,
+-		framesetOK: true,
+-		im:         initialIM,
+-	}
+-	err := p.parse()
+-	if err != nil {
+-		return nil, err
+-	}
+-	return p.doc, nil
+-}
+-
+-// ParseFragment parses a fragment of HTML and returns the nodes that were
+-// found. If the fragment is the InnerHTML for an existing element, pass that
+-// element in context.
+-func ParseFragment(r io.Reader, context *Node) ([]*Node, error) {
+-	contextTag := ""
+-	if context != nil {
+-		if context.Type != ElementNode {
+-			return nil, errors.New("html: ParseFragment of non-element Node")
+-		}
+-		// The next check isn't just context.DataAtom.String() == context.Data because
+-		// it is valid to pass an element whose tag isn't a known atom. For example,
+-		// DataAtom == 0 and Data = "tagfromthefuture" is perfectly consistent.
+-		if context.DataAtom != a.Lookup([]byte(context.Data)) {
+-			return nil, fmt.Errorf("html: inconsistent Node: DataAtom=%q, Data=%q", context.DataAtom, context.Data)
+-		}
+-		contextTag = context.DataAtom.String()
+-	}
+-	p := &parser{
+-		tokenizer: NewTokenizerFragment(r, contextTag),
+-		doc: &Node{
+-			Type: DocumentNode,
+-		},
+-		scripting: true,
+-		fragment:  true,
+-		context:   context,
+-	}
+-
+-	root := &Node{
+-		Type:     ElementNode,
+-		DataAtom: a.Html,
+-		Data:     a.Html.String(),
+-	}
+-	p.doc.AppendChild(root)
+-	p.oe = nodeStack{root}
+-	p.resetInsertionMode()
+-
+-	for n := context; n != nil; n = n.Parent {
+-		if n.Type == ElementNode && n.DataAtom == a.Form {
+-			p.form = n
+-			break
+-		}
+-	}
+-
+-	err := p.parse()
+-	if err != nil {
+-		return nil, err
+-	}
+-
+-	parent := p.doc
+-	if context != nil {
+-		parent = root
+-	}
+-
+-	var result []*Node
+-	for c := parent.FirstChild; c != nil; {
+-		next := c.NextSibling
+-		parent.RemoveChild(c)
+-		result = append(result, c)
+-		c = next
+-	}
+-	return result, nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/parse_test.go gcc-4.8.1/libgo/go/exp/html/parse_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/parse_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/parse_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,390 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bufio"
+-	"bytes"
+-	"errors"
+-	"exp/html/atom"
+-	"fmt"
+-	"io"
+-	"io/ioutil"
+-	"os"
+-	"path/filepath"
+-	"runtime"
+-	"sort"
+-	"strings"
+-	"testing"
+-)
+-
+-// readParseTest reads a single test case from r.
+-func readParseTest(r *bufio.Reader) (text, want, context string, err error) {
+-	line, err := r.ReadSlice('\n')
+-	if err != nil {
+-		return "", "", "", err
+-	}
+-	var b []byte
+-
+-	// Read the HTML.
+-	if string(line) != "#data\n" {
+-		return "", "", "", fmt.Errorf(`got %q want "#data\n"`, line)
+-	}
+-	for {
+-		line, err = r.ReadSlice('\n')
+-		if err != nil {
+-			return "", "", "", err
+-		}
+-		if line[0] == '#' {
+-			break
+-		}
+-		b = append(b, line...)
+-	}
+-	text = string(b)
+-	if strings.HasSuffix(text, "\n") {
+-		text = text[:len(text)-1]
+-	}
+-	b = b[:0]
+-
+-	// Skip the error list.
+-	if string(line) != "#errors\n" {
+-		return "", "", "", fmt.Errorf(`got %q want "#errors\n"`, line)
+-	}
+-	for {
+-		line, err = r.ReadSlice('\n')
+-		if err != nil {
+-			return "", "", "", err
+-		}
+-		if line[0] == '#' {
+-			break
+-		}
+-	}
+-
+-	if string(line) == "#document-fragment\n" {
+-		line, err = r.ReadSlice('\n')
+-		if err != nil {
+-			return "", "", "", err
+-		}
+-		context = strings.TrimSpace(string(line))
+-		line, err = r.ReadSlice('\n')
+-		if err != nil {
+-			return "", "", "", err
+-		}
+-	}
+-
+-	// Read the dump of what the parse tree should be.
+-	if string(line) != "#document\n" {
+-		return "", "", "", fmt.Errorf(`got %q want "#document\n"`, line)
+-	}
+-	inQuote := false
+-	for {
+-		line, err = r.ReadSlice('\n')
+-		if err != nil && err != io.EOF {
+-			return "", "", "", err
+-		}
+-		trimmed := bytes.Trim(line, "| \n")
+-		if len(trimmed) > 0 {
+-			if line[0] == '|' && trimmed[0] == '"' {
+-				inQuote = true
+-			}
+-			if trimmed[len(trimmed)-1] == '"' && !(line[0] == '|' && len(trimmed) == 1) {
+-				inQuote = false
+-			}
+-		}
+-		if len(line) == 0 || len(line) == 1 && line[0] == '\n' && !inQuote {
+-			break
+-		}
+-		b = append(b, line...)
+-	}
+-	return text, string(b), context, nil
+-}
+-
+-func dumpIndent(w io.Writer, level int) {
+-	io.WriteString(w, "| ")
+-	for i := 0; i < level; i++ {
+-		io.WriteString(w, "  ")
+-	}
+-}
+-
+-type sortedAttributes []Attribute
+-
+-func (a sortedAttributes) Len() int {
+-	return len(a)
+-}
+-
+-func (a sortedAttributes) Less(i, j int) bool {
+-	if a[i].Namespace != a[j].Namespace {
+-		return a[i].Namespace < a[j].Namespace
+-	}
+-	return a[i].Key < a[j].Key
+-}
+-
+-func (a sortedAttributes) Swap(i, j int) {
+-	a[i], a[j] = a[j], a[i]
+-}
+-
+-func dumpLevel(w io.Writer, n *Node, level int) error {
+-	dumpIndent(w, level)
+-	switch n.Type {
+-	case ErrorNode:
+-		return errors.New("unexpected ErrorNode")
+-	case DocumentNode:
+-		return errors.New("unexpected DocumentNode")
+-	case ElementNode:
+-		if n.Namespace != "" {
+-			fmt.Fprintf(w, "<%s %s>", n.Namespace, n.Data)
+-		} else {
+-			fmt.Fprintf(w, "<%s>", n.Data)
+-		}
+-		attr := sortedAttributes(n.Attr)
+-		sort.Sort(attr)
+-		for _, a := range attr {
+-			io.WriteString(w, "\n")
+-			dumpIndent(w, level+1)
+-			if a.Namespace != "" {
+-				fmt.Fprintf(w, `%s %s="%s"`, a.Namespace, a.Key, a.Val)
+-			} else {
+-				fmt.Fprintf(w, `%s="%s"`, a.Key, a.Val)
+-			}
+-		}
+-	case TextNode:
+-		fmt.Fprintf(w, `"%s"`, n.Data)
+-	case CommentNode:
+-		fmt.Fprintf(w, "<!-- %s -->", n.Data)
+-	case DoctypeNode:
+-		fmt.Fprintf(w, "<!DOCTYPE %s", n.Data)
+-		if n.Attr != nil {
+-			var p, s string
+-			for _, a := range n.Attr {
+-				switch a.Key {
+-				case "public":
+-					p = a.Val
+-				case "system":
+-					s = a.Val
+-				}
+-			}
+-			if p != "" || s != "" {
+-				fmt.Fprintf(w, ` "%s"`, p)
+-				fmt.Fprintf(w, ` "%s"`, s)
+-			}
+-		}
+-		io.WriteString(w, ">")
+-	case scopeMarkerNode:
+-		return errors.New("unexpected scopeMarkerNode")
+-	default:
+-		return errors.New("unknown node type")
+-	}
+-	io.WriteString(w, "\n")
+-	for c := n.FirstChild; c != nil; c = c.NextSibling {
+-		if err := dumpLevel(w, c, level+1); err != nil {
+-			return err
+-		}
+-	}
+-	return nil
+-}
+-
+-func dump(n *Node) (string, error) {
+-	if n == nil || n.FirstChild == nil {
+-		return "", nil
+-	}
+-	var b bytes.Buffer
+-	for c := n.FirstChild; c != nil; c = c.NextSibling {
+-		if err := dumpLevel(&b, c, 0); err != nil {
+-			return "", err
+-		}
+-	}
+-	return b.String(), nil
+-}
+-
+-const testDataDir = "testdata/webkit/"
+-
+-func TestParser(t *testing.T) {
+-	testFiles, err := filepath.Glob(testDataDir + "*.dat")
+-	if err != nil {
+-		t.Fatal(err)
+-	}
+-	for _, tf := range testFiles {
+-		f, err := os.Open(tf)
+-		if err != nil {
+-			t.Fatal(err)
+-		}
+-		defer f.Close()
+-		r := bufio.NewReader(f)
+-
+-		for i := 0; ; i++ {
+-			text, want, context, err := readParseTest(r)
+-			if err == io.EOF {
+-				break
+-			}
+-			if err != nil {
+-				t.Fatal(err)
+-			}
+-
+-			err = testParseCase(text, want, context)
+-
+-			if err != nil {
+-				t.Errorf("%s test #%d %q, %s", tf, i, text, err)
+-			}
+-		}
+-	}
+-}
+-
+-// testParseCase tests one test case from the test files. If the test does not
+-// pass, it returns an error that explains the failure.
+-// text is the HTML to be parsed, want is a dump of the correct parse tree,
+-// and context is the name of the context node, if any.
+-func testParseCase(text, want, context string) (err error) {
+-	defer func() {
+-		if x := recover(); x != nil {
+-			switch e := x.(type) {
+-			case error:
+-				err = e
+-			default:
+-				err = fmt.Errorf("%v", e)
+-			}
+-		}
+-	}()
+-
+-	var doc *Node
+-	if context == "" {
+-		doc, err = Parse(strings.NewReader(text))
+-		if err != nil {
+-			return err
+-		}
+-	} else {
+-		contextNode := &Node{
+-			Type:     ElementNode,
+-			DataAtom: atom.Lookup([]byte(context)),
+-			Data:     context,
+-		}
+-		nodes, err := ParseFragment(strings.NewReader(text), contextNode)
+-		if err != nil {
+-			return err
+-		}
+-		doc = &Node{
+-			Type: DocumentNode,
+-		}
+-		for _, n := range nodes {
+-			doc.AppendChild(n)
+-		}
+-	}
+-
+-	if err := checkTreeConsistency(doc); err != nil {
+-		return err
+-	}
+-
+-	got, err := dump(doc)
+-	if err != nil {
+-		return err
+-	}
+-	// Compare the parsed tree to the #document section.
+-	if got != want {
+-		return fmt.Errorf("got vs want:\n----\n%s----\n%s----", got, want)
+-	}
+-
+-	if renderTestBlacklist[text] || context != "" {
+-		return nil
+-	}
+-
+-	// Check that rendering and re-parsing results in an identical tree.
+-	pr, pw := io.Pipe()
+-	go func() {
+-		pw.CloseWithError(Render(pw, doc))
+-	}()
+-	doc1, err := Parse(pr)
+-	if err != nil {
+-		return err
+-	}
+-	got1, err := dump(doc1)
+-	if err != nil {
+-		return err
+-	}
+-	if got != got1 {
+-		return fmt.Errorf("got vs got1:\n----\n%s----\n%s----", got, got1)
+-	}
+-
+-	return nil
+-}
+-
+-// Some test input result in parse trees are not 'well-formed' despite
+-// following the HTML5 recovery algorithms. Rendering and re-parsing such a
+-// tree will not result in an exact clone of that tree. We blacklist such
+-// inputs from the render test.
+-var renderTestBlacklist = map[string]bool{
+-	// The second <a> will be reparented to the first <table>'s parent. This
+-	// results in an <a> whose parent is an <a>, which is not 'well-formed'.
+-	`<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y`: true,
+-	// The same thing with a <p>:
+-	`<p><table></p>`: true,
+-	// More cases of <a> being reparented:
+-	`<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe`: true,
+-	`<a><table><a></table><p><a><div><a>`:                                     true,
+-	`<a><table><td><a><table></table><a></tr><a></table><a>`:                  true,
+-	// A similar reparenting situation involving <nobr>:
+-	`<!DOCTYPE html><body><b><nobr>1<table><nobr></b><i><nobr>2<nobr></i>3`: true,
+-	// A <plaintext> element is reparented, putting it before a table.
+-	// A <plaintext> element can't have anything after it in HTML.
+-	`<table><plaintext><td>`:                                   true,
+-	`<!doctype html><table><plaintext></plaintext>`:            true,
+-	`<!doctype html><table><tbody><plaintext></plaintext>`:     true,
+-	`<!doctype html><table><tbody><tr><plaintext></plaintext>`: true,
+-	// A form inside a table inside a form doesn't work either.
+-	`<!doctype html><form><table></form><form></table></form>`: true,
+-	// A script that ends at EOF may escape its own closing tag when rendered.
+-	`<!doctype html><script><!--<script `:          true,
+-	`<!doctype html><script><!--<script <`:         true,
+-	`<!doctype html><script><!--<script <a`:        true,
+-	`<!doctype html><script><!--<script </`:        true,
+-	`<!doctype html><script><!--<script </s`:       true,
+-	`<!doctype html><script><!--<script </script`:  true,
+-	`<!doctype html><script><!--<script </scripta`: true,
+-	`<!doctype html><script><!--<script -`:         true,
+-	`<!doctype html><script><!--<script -a`:        true,
+-	`<!doctype html><script><!--<script -<`:        true,
+-	`<!doctype html><script><!--<script --`:        true,
+-	`<!doctype html><script><!--<script --a`:       true,
+-	`<!doctype html><script><!--<script --<`:       true,
+-	`<script><!--<script `:                         true,
+-	`<script><!--<script <a`:                       true,
+-	`<script><!--<script </script`:                 true,
+-	`<script><!--<script </scripta`:                true,
+-	`<script><!--<script -`:                        true,
+-	`<script><!--<script -a`:                       true,
+-	`<script><!--<script --`:                       true,
+-	`<script><!--<script --a`:                      true,
+-	`<script><!--<script <`:                        true,
+-	`<script><!--<script </`:                       true,
+-	`<script><!--<script </s`:                      true,
+-	// Reconstructing the active formatting elements results in a <plaintext>
+-	// element that contains an <a> element.
+-	`<!doctype html><p><a><plaintext>b`: true,
+-}
+-
+-func TestNodeConsistency(t *testing.T) {
+-	// inconsistentNode is a Node whose DataAtom and Data do not agree.
+-	inconsistentNode := &Node{
+-		Type:     ElementNode,
+-		DataAtom: atom.Frameset,
+-		Data:     "table",
+-	}
+-	_, err := ParseFragment(strings.NewReader("<p>hello</p>"), inconsistentNode)
+-	if err == nil {
+-		t.Errorf("got nil error, want non-nil")
+-	}
+-}
+-
+-func BenchmarkParser(b *testing.B) {
+-	buf, err := ioutil.ReadFile("testdata/go1.html")
+-	if err != nil {
+-		b.Fatalf("could not read testdata/go1.html: %v", err)
+-	}
+-	b.SetBytes(int64(len(buf)))
+-	runtime.GC()
+-	b.ReportAllocs()
+-	b.ResetTimer()
+-	for i := 0; i < b.N; i++ {
+-		Parse(bytes.NewBuffer(buf))
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/render.go gcc-4.8.1/libgo/go/exp/html/render.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/render.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/render.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,271 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bufio"
+-	"errors"
+-	"fmt"
+-	"io"
+-	"strings"
+-)
+-
+-type writer interface {
+-	io.Writer
+-	io.ByteWriter
+-	WriteString(string) (int, error)
+-}
+-
+-// Render renders the parse tree n to the given writer.
+-//
+-// Rendering is done on a 'best effort' basis: calling Parse on the output of
+-// Render will always result in something similar to the original tree, but it
+-// is not necessarily an exact clone unless the original tree was 'well-formed'.
+-// 'Well-formed' is not easily specified; the HTML5 specification is
+-// complicated.
+-//
+-// Calling Parse on arbitrary input typically results in a 'well-formed' parse
+-// tree. However, it is possible for Parse to yield a 'badly-formed' parse tree.
+-// For example, in a 'well-formed' parse tree, no <a> element is a child of
+-// another <a> element: parsing "<a><a>" results in two sibling elements.
+-// Similarly, in a 'well-formed' parse tree, no <a> element is a child of a
+-// <table> element: parsing "<p><table><a>" results in a <p> with two sibling
+-// children; the <a> is reparented to the <table>'s parent. However, calling
+-// Parse on "<a><table><a>" does not return an error, but the result has an <a>
+-// element with an <a> child, and is therefore not 'well-formed'.
+-//
+-// Programmatically constructed trees are typically also 'well-formed', but it
+-// is possible to construct a tree that looks innocuous but, when rendered and
+-// re-parsed, results in a different tree. A simple example is that a solitary
+-// text node would become a tree containing <html>, <head> and <body> elements.
+-// Another example is that the programmatic equivalent of "a<head>b</head>c"
+-// becomes "<html><head><head/><body>abc</body></html>".
+-func Render(w io.Writer, n *Node) error {
+-	if x, ok := w.(writer); ok {
+-		return render(x, n)
+-	}
+-	buf := bufio.NewWriter(w)
+-	if err := render(buf, n); err != nil {
+-		return err
+-	}
+-	return buf.Flush()
+-}
+-
+-// plaintextAbort is returned from render1 when a <plaintext> element
+-// has been rendered. No more end tags should be rendered after that.
+-var plaintextAbort = errors.New("html: internal error (plaintext abort)")
+-
+-func render(w writer, n *Node) error {
+-	err := render1(w, n)
+-	if err == plaintextAbort {
+-		err = nil
+-	}
+-	return err
+-}
+-
+-func render1(w writer, n *Node) error {
+-	// Render non-element nodes; these are the easy cases.
+-	switch n.Type {
+-	case ErrorNode:
+-		return errors.New("html: cannot render an ErrorNode node")
+-	case TextNode:
+-		return escape(w, n.Data)
+-	case DocumentNode:
+-		for c := n.FirstChild; c != nil; c = c.NextSibling {
+-			if err := render1(w, c); err != nil {
+-				return err
+-			}
+-		}
+-		return nil
+-	case ElementNode:
+-		// No-op.
+-	case CommentNode:
+-		if _, err := w.WriteString("<!--"); err != nil {
+-			return err
+-		}
+-		if _, err := w.WriteString(n.Data); err != nil {
+-			return err
+-		}
+-		if _, err := w.WriteString("-->"); err != nil {
+-			return err
+-		}
+-		return nil
+-	case DoctypeNode:
+-		if _, err := w.WriteString("<!DOCTYPE "); err != nil {
+-			return err
+-		}
+-		if _, err := w.WriteString(n.Data); err != nil {
+-			return err
+-		}
+-		if n.Attr != nil {
+-			var p, s string
+-			for _, a := range n.Attr {
+-				switch a.Key {
+-				case "public":
+-					p = a.Val
+-				case "system":
+-					s = a.Val
+-				}
+-			}
+-			if p != "" {
+-				if _, err := w.WriteString(" PUBLIC "); err != nil {
+-					return err
+-				}
+-				if err := writeQuoted(w, p); err != nil {
+-					return err
+-				}
+-				if s != "" {
+-					if err := w.WriteByte(' '); err != nil {
+-						return err
+-					}
+-					if err := writeQuoted(w, s); err != nil {
+-						return err
+-					}
+-				}
+-			} else if s != "" {
+-				if _, err := w.WriteString(" SYSTEM "); err != nil {
+-					return err
+-				}
+-				if err := writeQuoted(w, s); err != nil {
+-					return err
+-				}
+-			}
+-		}
+-		return w.WriteByte('>')
+-	default:
+-		return errors.New("html: unknown node type")
+-	}
+-
+-	// Render the <xxx> opening tag.
+-	if err := w.WriteByte('<'); err != nil {
+-		return err
+-	}
+-	if _, err := w.WriteString(n.Data); err != nil {
+-		return err
+-	}
+-	for _, a := range n.Attr {
+-		if err := w.WriteByte(' '); err != nil {
+-			return err
+-		}
+-		if a.Namespace != "" {
+-			if _, err := w.WriteString(a.Namespace); err != nil {
+-				return err
+-			}
+-			if err := w.WriteByte(':'); err != nil {
+-				return err
+-			}
+-		}
+-		if _, err := w.WriteString(a.Key); err != nil {
+-			return err
+-		}
+-		if _, err := w.WriteString(`="`); err != nil {
+-			return err
+-		}
+-		if err := escape(w, a.Val); err != nil {
+-			return err
+-		}
+-		if err := w.WriteByte('"'); err != nil {
+-			return err
+-		}
+-	}
+-	if voidElements[n.Data] {
+-		if n.FirstChild != nil {
+-			return fmt.Errorf("html: void element <%s> has child nodes", n.Data)
+-		}
+-		_, err := w.WriteString("/>")
+-		return err
+-	}
+-	if err := w.WriteByte('>'); err != nil {
+-		return err
+-	}
+-
+-	// Add initial newline where there is danger of a newline beging ignored.
+-	if c := n.FirstChild; c != nil && c.Type == TextNode && strings.HasPrefix(c.Data, "\n") {
+-		switch n.Data {
+-		case "pre", "listing", "textarea":
+-			if err := w.WriteByte('\n'); err != nil {
+-				return err
+-			}
+-		}
+-	}
+-
+-	// Render any child nodes.
+-	switch n.Data {
+-	case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "xmp":
+-		for c := n.FirstChild; c != nil; c = c.NextSibling {
+-			if c.Type == TextNode {
+-				if _, err := w.WriteString(c.Data); err != nil {
+-					return err
+-				}
+-			} else {
+-				if err := render1(w, c); err != nil {
+-					return err
+-				}
+-			}
+-		}
+-		if n.Data == "plaintext" {
+-			// Don't render anything else. <plaintext> must be the
+-			// last element in the file, with no closing tag.
+-			return plaintextAbort
+-		}
+-	default:
+-		for c := n.FirstChild; c != nil; c = c.NextSibling {
+-			if err := render1(w, c); err != nil {
+-				return err
+-			}
+-		}
+-	}
+-
+-	// Render the </xxx> closing tag.
+-	if _, err := w.WriteString("</"); err != nil {
+-		return err
+-	}
+-	if _, err := w.WriteString(n.Data); err != nil {
+-		return err
+-	}
+-	return w.WriteByte('>')
+-}
+-
+-// writeQuoted writes s to w surrounded by quotes. Normally it will use double
+-// quotes, but if s contains a double quote, it will use single quotes.
+-// It is used for writing the identifiers in a doctype declaration.
+-// In valid HTML, they can't contain both types of quotes.
+-func writeQuoted(w writer, s string) error {
+-	var q byte = '"'
+-	if strings.Contains(s, `"`) {
+-		q = '\''
+-	}
+-	if err := w.WriteByte(q); err != nil {
+-		return err
+-	}
+-	if _, err := w.WriteString(s); err != nil {
+-		return err
+-	}
+-	if err := w.WriteByte(q); err != nil {
+-		return err
+-	}
+-	return nil
+-}
+-
+-// Section 12.1.2, "Elements", gives this list of void elements. Void elements
+-// are those that can't have any contents.
+-var voidElements = map[string]bool{
+-	"area":    true,
+-	"base":    true,
+-	"br":      true,
+-	"col":     true,
+-	"command": true,
+-	"embed":   true,
+-	"hr":      true,
+-	"img":     true,
+-	"input":   true,
+-	"keygen":  true,
+-	"link":    true,
+-	"meta":    true,
+-	"param":   true,
+-	"source":  true,
+-	"track":   true,
+-	"wbr":     true,
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/render_test.go gcc-4.8.1/libgo/go/exp/html/render_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/render_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/render_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,156 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bytes"
+-	"testing"
+-)
+-
+-func TestRenderer(t *testing.T) {
+-	nodes := [...]*Node{
+-		0: {
+-			Type: ElementNode,
+-			Data: "html",
+-		},
+-		1: {
+-			Type: ElementNode,
+-			Data: "head",
+-		},
+-		2: {
+-			Type: ElementNode,
+-			Data: "body",
+-		},
+-		3: {
+-			Type: TextNode,
+-			Data: "0<1",
+-		},
+-		4: {
+-			Type: ElementNode,
+-			Data: "p",
+-			Attr: []Attribute{
+-				{
+-					Key: "id",
+-					Val: "A",
+-				},
+-				{
+-					Key: "foo",
+-					Val: `abc"def`,
+-				},
+-			},
+-		},
+-		5: {
+-			Type: TextNode,
+-			Data: "2",
+-		},
+-		6: {
+-			Type: ElementNode,
+-			Data: "b",
+-			Attr: []Attribute{
+-				{
+-					Key: "empty",
+-					Val: "",
+-				},
+-			},
+-		},
+-		7: {
+-			Type: TextNode,
+-			Data: "3",
+-		},
+-		8: {
+-			Type: ElementNode,
+-			Data: "i",
+-			Attr: []Attribute{
+-				{
+-					Key: "backslash",
+-					Val: `\`,
+-				},
+-			},
+-		},
+-		9: {
+-			Type: TextNode,
+-			Data: "&4",
+-		},
+-		10: {
+-			Type: TextNode,
+-			Data: "5",
+-		},
+-		11: {
+-			Type: ElementNode,
+-			Data: "blockquote",
+-		},
+-		12: {
+-			Type: ElementNode,
+-			Data: "br",
+-		},
+-		13: {
+-			Type: TextNode,
+-			Data: "6",
+-		},
+-	}
+-
+-	// Build a tree out of those nodes, based on a textual representation.
+-	// Only the ".\t"s are significant. The trailing HTML-like text is
+-	// just commentary. The "0:" prefixes are for easy cross-reference with
+-	// the nodes array.
+-	treeAsText := [...]string{
+-		0: `<html>`,
+-		1: `.	<head>`,
+-		2: `.	<body>`,
+-		3: `.	.	"0&lt;1"`,
+-		4: `.	.	<p id="A" foo="abc&#34;def">`,
+-		5: `.	.	.	"2"`,
+-		6: `.	.	.	<b empty="">`,
+-		7: `.	.	.	.	"3"`,
+-		8: `.	.	.	<i backslash="\">`,
+-		9: `.	.	.	.	"&amp;4"`,
+-		10: `.	.	"5"`,
+-		11: `.	.	<blockquote>`,
+-		12: `.	.	<br>`,
+-		13: `.	.	"6"`,
+-	}
+-	if len(nodes) != len(treeAsText) {
+-		t.Fatal("len(nodes) != len(treeAsText)")
+-	}
+-	var stack [8]*Node
+-	for i, line := range treeAsText {
+-		level := 0
+-		for line[0] == '.' {
+-			// Strip a leading ".\t".
+-			line = line[2:]
+-			level++
+-		}
+-		n := nodes[i]
+-		if level == 0 {
+-			if stack[0] != nil {
+-				t.Fatal("multiple root nodes")
+-			}
+-			stack[0] = n
+-		} else {
+-			stack[level-1].AppendChild(n)
+-			stack[level] = n
+-			for i := level + 1; i < len(stack); i++ {
+-				stack[i] = nil
+-			}
+-		}
+-		// At each stage of tree construction, we check all nodes for consistency.
+-		for j, m := range nodes {
+-			if err := checkNodeConsistency(m); err != nil {
+-				t.Fatalf("i=%d, j=%d: %v", i, j, err)
+-			}
+-		}
+-	}
+-
+-	want := `<html><head></head><body>0&lt;1<p id="A" foo="abc&#34;def">` +
+-		`2<b empty="">3</b><i backslash="\">&amp;4</i></p>` +
+-		`5<blockquote></blockquote><br/>6</body></html>`
+-	b := new(bytes.Buffer)
+-	if err := Render(b, nodes[0]); err != nil {
+-		t.Fatal(err)
+-	}
+-	if got := b.String(); got != want {
+-		t.Errorf("got vs want:\n%s\n%s\n", got, want)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/go1.html gcc-4.8.1/libgo/go/exp/html/testdata/go1.html
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/go1.html	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/go1.html	1969-12-31 18:00:00.000000000 -0600
+@@ -1,2237 +0,0 @@
+-<!DOCTYPE html>
+-<html>
+-<head>
+-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+-
+-  <title>Go 1 Release Notes - The Go Programming Language</title>
+-
+-<link type="text/css" rel="stylesheet" href="/doc/style.css">
+-<script type="text/javascript" src="/doc/godocs.js"></script>
+-
+-<link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" />
+-
+-<script type="text/javascript">
+-var _gaq = _gaq || [];
+-_gaq.push(["_setAccount", "UA-11222381-2"]);
+-_gaq.push(["_trackPageview"]);
+-</script>
+-</head>
+-<body>
+-
+-<div id="topbar"><div class="container wide">
+-
+-<form method="GET" action="/search">
+-<div id="menu">
+-<a href="/doc/">Documents</a>
+-<a href="/ref/">References</a>
+-<a href="/pkg/">Packages</a>
+-<a href="/project/">The Project</a>
+-<a href="/help/">Help</a>
+-<input type="text" id="search" name="q" class="inactive" value="Search">
+-</div>
+-<div id="heading"><a href="/">The Go Programming Language</a></div>
+-</form>
+-
+-</div></div>
+-
+-<div id="page" class="wide">
+-
+-
+-  <div id="plusone"><g:plusone size="small" annotation="none"></g:plusone></div>
+-  <h1>Go 1 Release Notes</h1>
+-
+-
+-
+-
+-<div id="nav"></div>
+-
+-
+-
+-
+-<h2 id="introduction">Introduction to Go 1</h2>
+-
+-<p>
+-Go version 1, Go 1 for short, defines a language and a set of core libraries
+-that provide a stable foundation for creating reliable products, projects, and
+-publications.
+-</p>
+-
+-<p>
+-The driving motivation for Go 1 is stability for its users. People should be able to
+-write Go programs and expect that they will continue to compile and run without
+-change, on a time scale of years, including in production environments such as
+-Google App Engine. Similarly, people should be able to write books about Go, be
+-able to say which version of Go the book is describing, and have that version
+-number still be meaningful much later.
+-</p>
+-
+-<p>
+-Code that compiles in Go 1 should, with few exceptions, continue to compile and
+-run throughout the lifetime of that version, even as we issue updates and bug
+-fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes
+-made to the language and library for subsequent releases of Go 1 may
+-add functionality but will not break existing Go 1 programs.
+-<a href="go1compat.html">The Go 1 compatibility document</a>
+-explains the compatibility guidelines in more detail.
+-</p>
+-
+-<p>
+-Go 1 is a representation of Go as it used today, not a wholesale rethinking of
+-the language. We avoided designing new features and instead focused on cleaning
+-up problems and inconsistencies and improving portability. There are a number
+-changes to the Go language and packages that we had considered for some time and
+-prototyped but not released primarily because they are significant and
+-backwards-incompatible. Go 1 was an opportunity to get them out, which is
+-helpful for the long term, but also means that Go 1 introduces incompatibilities
+-for old programs. Fortunately, the <code>go</code> <code>fix</code> tool can
+-automate much of the work needed to bring programs up to the Go 1 standard.
+-</p>
+-
+-<p>
+-This document outlines the major changes in Go 1 that will affect programmers
+-updating existing code; its reference point is the prior release, r60 (tagged as
+-r60.3). It also explains how to update code from r60 to run under Go 1.
+-</p>
+-
+-<h2 id="language">Changes to the language</h2>
+-
+-<h3 id="append">Append</h3>
+-
+-<p>
+-The <code>append</code> predeclared variadic function makes it easy to grow a slice
+-by adding elements to the end.
+-A common use is to add bytes to the end of a byte slice when generating output.
+-However, <code>append</code> did not provide a way to append a string to a <code>[]byte</code>,
+-which is another common case.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}}
+--->    greeting := []byte{}
+-    greeting = append(greeting, []byte(&#34;hello &#34;)...)</pre>
+-
+-<p>
+-By analogy with the similar property of <code>copy</code>, Go 1
+-permits a string to be appended (byte-wise) directly to a byte
+-slice, reducing the friction between strings and byte slices.
+-The conversion is no longer necessary:
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/append.*world/`}}
+--->    greeting = append(greeting, &#34;world&#34;...)</pre>
+-
+-<p>
+-<em>Updating</em>:
+-This is a new feature, so existing code needs no changes.
+-</p>
+-
+-<h3 id="close">Close</h3>
+-
+-<p>
+-The <code>close</code> predeclared function provides a mechanism
+-for a sender to signal that no more values will be sent.
+-It is important to the implementation of <code>for</code> <code>range</code>
+-loops over channels and is helpful in other situations.
+-Partly by design and partly because of race conditions that can occur otherwise,
+-it is intended for use only by the goroutine sending on the channel,
+-not by the goroutine receiving data.
+-However, before Go 1 there was no compile-time checking that <code>close</code>
+-was being used correctly.
+-</p>
+-
+-<p>
+-To close this gap, at least in part, Go 1 disallows <code>close</code> on receive-only channels.
+-Attempting to close such a channel is a compile-time error.
+-</p>
+-
+-<pre>
+-    var c chan int
+-    var csend chan&lt;- int = c
+-    var crecv &lt;-chan int = c
+-    close(c)     // legal
+-    close(csend) // legal
+-    close(crecv) // illegal
+-</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Existing code that attempts to close a receive-only channel was
+-erroneous even before Go 1 and should be fixed.  The compiler will
+-now reject such code.
+-</p>
+-
+-<h3 id="literals">Composite literals</h3>
+-
+-<p>
+-In Go 1, a composite literal of array, slice, or map type can elide the
+-type specification for the elements' initializers if they are of pointer type.
+-All four of the initializations in this example are legal; the last one was illegal before Go 1.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}}
+--->    type Date struct {
+-        month string
+-        day   int
+-    }
+-    <span class="comment">// Struct values, fully qualified; always legal.</span>
+-    holiday1 := []Date{
+-        Date{&#34;Feb&#34;, 14},
+-        Date{&#34;Nov&#34;, 11},
+-        Date{&#34;Dec&#34;, 25},
+-    }
+-    <span class="comment">// Struct values, type name elided; always legal.</span>
+-    holiday2 := []Date{
+-        {&#34;Feb&#34;, 14},
+-        {&#34;Nov&#34;, 11},
+-        {&#34;Dec&#34;, 25},
+-    }
+-    <span class="comment">// Pointers, fully qualified, always legal.</span>
+-    holiday3 := []*Date{
+-        &amp;Date{&#34;Feb&#34;, 14},
+-        &amp;Date{&#34;Nov&#34;, 11},
+-        &amp;Date{&#34;Dec&#34;, 25},
+-    }
+-    <span class="comment">// Pointers, type name elided; legal in Go 1.</span>
+-    holiday4 := []*Date{
+-        {&#34;Feb&#34;, 14},
+-        {&#34;Nov&#34;, 11},
+-        {&#34;Dec&#34;, 25},
+-    }</pre>
+-
+-<p>
+-<em>Updating</em>:
+-This change has no effect on existing code, but the command
+-<code>gofmt</code> <code>-s</code> applied to existing source
+-will, among other things, elide explicit element types wherever permitted.
+-</p>
+-
+-
+-<h3 id="init">Goroutines during init</h3>
+-
+-<p>
+-The old language defined that <code>go</code> statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete.
+-This introduced clumsiness in many places and, in effect, limited the utility
+-of the <code>init</code> construct:
+-if it was possible for another package to use the library during initialization, the library
+-was forced to avoid goroutines.
+-This design was done for reasons of simplicity and safety but,
+-as our confidence in the language grew, it seemed unnecessary.
+-Running goroutines during initialization is no more complex or unsafe than running them during normal execution.
+-</p>
+-
+-<p>
+-In Go 1, code that uses goroutines can be called from
+-<code>init</code> routines and global initialization expressions
+-without introducing a deadlock.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}}
+--->var PackageGlobal int
+-
+-func init() {
+-    c := make(chan int)
+-    go initializationFunction(c)
+-    PackageGlobal = &lt;-c
+-}</pre>
+-
+-<p>
+-<em>Updating</em>:
+-This is a new feature, so existing code needs no changes,
+-although it's possible that code that depends on goroutines not starting before <code>main</code> will break.
+-There was no such code in the standard repository.
+-</p>
+-
+-<h3 id="rune">The rune type</h3>
+-
+-<p>
+-The language spec allows the <code>int</code> type to be 32 or 64 bits wide, but current implementations set <code>int</code> to 32 bits even on 64-bit platforms.
+-It would be preferable to have <code>int</code> be 64 bits on 64-bit platforms.
+-(There are important consequences for indexing large slices.)
+-However, this change would waste space when processing Unicode characters with
+-the old language because the <code>int</code> type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if <code>int</code> grew from 32 bits to 64.
+-</p>
+-
+-<p>
+-To make changing to 64-bit <code>int</code> feasible,
+-Go 1 introduces a new basic type, <code>rune</code>, to represent
+-individual Unicode code points.
+-It is an alias for <code>int32</code>, analogous to <code>byte</code>
+-as an alias for <code>uint8</code>.
+-</p>
+-
+-<p>
+-Character literals such as <code>'a'</code>, <code>'èª'</code>, and <code>'\u0345'</code>
+-now have default type <code>rune</code>,
+-analogous to <code>1.0</code> having default type <code>float64</code>.
+-A variable initialized to a character constant will therefore
+-have type <code>rune</code> unless otherwise specified.
+-</p>
+-
+-<p>
+-Libraries have been updated to use <code>rune</code> rather than <code>int</code>
+-when appropriate. For instance, the functions <code>unicode.ToLower</code> and
+-relatives now take and return a <code>rune</code>.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}}
+--->    delta := &#39;ÎŽ&#39; <span class="comment">// delta has type rune.</span>
+-    var DELTA rune
+-    DELTA = unicode.ToUpper(delta)
+-    epsilon := unicode.ToLower(DELTA + 1)
+-    if epsilon != &#39;ÎŽ&#39;+1 {
+-        log.Fatal(&#34;inconsistent casing for Greek&#34;)
+-    }</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Most source code will be unaffected by this because the type inference from
+-<code>:=</code> initializers introduces the new type silently, and it propagates
+-from there.
+-Some code may get type errors that a trivial conversion will resolve.
+-</p>
+-
+-<h3 id="error">The error type</h3>
+-
+-<p>
+-Go 1 introduces a new built-in type, <code>error</code>, which has the following definition:
+-</p>
+-
+-<pre>
+-    type error interface {
+-        Error() string
+-    }
+-</pre>
+-
+-<p>
+-Since the consequences of this type are all in the package library,
+-it is discussed <a href="#errors">below</a>.
+-</p>
+-
+-<h3 id="delete">Deleting from maps</h3>
+-
+-<p>
+-In the old language, to delete the entry with key <code>k</code> from map <code>m</code>, one wrote the statement,
+-</p>
+-
+-<pre>
+-    m[k] = value, false
+-</pre>
+-
+-<p>
+-This syntax was a peculiar special case, the only two-to-one assignment.
+-It required passing a value (usually ignored) that is evaluated but discarded,
+-plus a boolean that was nearly always the constant <code>false</code>.
+-It did the job but was odd and a point of contention.
+-</p>
+-
+-<p>
+-In Go 1, that syntax has gone; instead there is a new built-in
+-function, <code>delete</code>.  The call
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}}
+--->    delete(m, k)</pre>
+-
+-<p>
+-will delete the map entry retrieved by the expression <code>m[k]</code>.
+-There is no return value. Deleting a non-existent entry is a no-op.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will convert expressions of the form <code>m[k] = value,
+-false</code> into <code>delete(m, k)</code> when it is clear that
+-the ignored value can be safely discarded from the program and
+-<code>false</code> refers to the predefined boolean constant.
+-The fix tool
+-will flag other uses of the syntax for inspection by the programmer.
+-</p>
+-
+-<h3 id="iteration">Iterating in maps</h3>
+-
+-<p>
+-The old language specification did not define the order of iteration for maps,
+-and in practice it differed across hardware platforms.
+-This caused tests that iterated over maps to be fragile and non-portable, with the
+-unpleasant property that a test might always pass on one machine but break on another.
+-</p>
+-
+-<p>
+-In Go 1, the order in which elements are visited when iterating
+-over a map using a <code>for</code> <code>range</code> statement
+-is defined to be unpredictable, even if the same loop is run multiple
+-times with the same map.
+-Code should not assume that the elements are visited in any particular order.
+-</p>
+-
+-<p>
+-This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem.
+-Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/Sunday/` `/^	}/`}}
+--->    m := map[string]int{&#34;Sunday&#34;: 0, &#34;Monday&#34;: 1}
+-    for name, value := range m {
+-        <span class="comment">// This loop should not assume Sunday will be visited first.</span>
+-        f(name, value)
+-    }</pre>
+-
+-<p>
+-<em>Updating</em>:
+-This is one change where tools cannot help.  Most existing code
+-will be unaffected, but some programs may break or misbehave; we
+-recommend manual checking of all range statements over maps to
+-verify they do not depend on iteration order. There were a few such
+-examples in the standard repository; they have been fixed.
+-Note that it was already incorrect to depend on the iteration order, which
+-was unspecified. This change codifies the unpredictability.
+-</p>
+-
+-<h3 id="multiple_assignment">Multiple assignment</h3>
+-
+-<p>
+-The language specification has long guaranteed that in assignments
+-the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned.
+-To guarantee predictable behavior,
+-Go 1 refines the specification further.
+-</p>
+-
+-<p>
+-If the left-hand side of the assignment
+-statement contains expressions that require evaluation, such as
+-function calls or array indexing operations, these will all be done
+-using the usual left-to-right rule before any variables are assigned
+-their value.  Once everything is evaluated, the actual assignments
+-proceed in left-to-right order.
+-</p>
+-
+-<p>
+-These examples illustrate the behavior.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}}
+--->    sa := []int{1, 2, 3}
+-    i := 0
+-    i, sa[i] = 1, 2 <span class="comment">// sets i = 1, sa[0] = 2</span>
+-
+-    sb := []int{1, 2, 3}
+-    j := 0
+-    sb[j], j = 2, 1 <span class="comment">// sets sb[0] = 2, j = 1</span>
+-
+-    sc := []int{1, 2, 3}
+-    sc[0], sc[0] = 1, 2 <span class="comment">// sets sc[0] = 1, then sc[0] = 2 (so sc[0] = 2 at end)</span></pre>
+-
+-<p>
+-<em>Updating</em>:
+-This is one change where tools cannot help, but breakage is unlikely.
+-No code in the standard repository was broken by this change, and code
+-that depended on the previous unspecified behavior was already incorrect.
+-</p>
+-
+-<h3 id="shadowing">Returns and shadowed variables</h3>
+-
+-<p>
+-A common mistake is to use <code>return</code> (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable.
+-This situation is called <em>shadowing</em>: the result variable has been shadowed by another variable with the same name declared in an inner scope.
+-</p>
+-
+-<p>
+-In functions with named return values,
+-the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement.
+-(It isn't part of the specification, because this is one area we are still exploring;
+-the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.)
+-</p>
+-
+-<p>
+-This function implicitly returns a shadowed return value and will be rejected by the compiler:
+-</p>
+-
+-<pre>
+-    func Bug() (i, j, k int) {
+-        for i = 0; i &lt; 5; i++ {
+-            for j := 0; j &lt; 5; j++ { // Redeclares j.
+-                k += i*j
+-                if k > 100 {
+-                    return // Rejected: j is shadowed here.
+-                }
+-            }
+-        }
+-        return // OK: j is not shadowed here.
+-    }
+-</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand.
+-The few cases that arose in the standard repository were mostly bugs.
+-</p>
+-
+-<h3 id="unexported">Copying structs with unexported fields</h3>
+-
+-<p>
+-The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package.
+-There was, however, a required exception for a method receiver;
+-also, the implementations of <code>copy</code> and <code>append</code> have never honored the restriction.
+-</p>
+-
+-<p>
+-Go 1 will allow packages to copy struct values containing unexported fields from other packages.
+-Besides resolving the inconsistency,
+-this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface.
+-The new implementations of <code>time.Time</code> and
+-<code>reflect.Value</code> are examples of types taking advantage of this new property.
+-</p>
+-
+-<p>
+-As an example, if package <code>p</code> includes the definitions,
+-</p>
+-
+-<pre>
+-    type Struct struct {
+-        Public int
+-        secret int
+-    }
+-    func NewStruct(a int) Struct {  // Note: not a pointer.
+-        return Struct{a, f(a)}
+-    }
+-    func (s Struct) String() string {
+-        return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret)
+-    }
+-</pre>
+-
+-<p>
+-a package that imports <code>p</code> can assign and copy values of type
+-<code>p.Struct</code> at will.
+-Behind the scenes the unexported fields will be assigned and copied just
+-as if they were exported,
+-but the client code will never be aware of them. The code
+-</p>
+-
+-<pre>
+-    import "p"
+-
+-    myStruct := p.NewStruct(23)
+-    copyOfMyStruct := myStruct
+-    fmt.Println(myStruct, copyOfMyStruct)
+-</pre>
+-
+-<p>
+-will show that the secret field of the struct has been copied to the new value.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-This is a new feature, so existing code needs no changes.
+-</p>
+-
+-<h3 id="equality">Equality</h3>
+-
+-<p>
+-Before Go 1, the language did not define equality on struct and array values.
+-This meant,
+-among other things, that structs and arrays could not be used as map keys.
+-On the other hand, Go did define equality on function and map values.
+-Function equality was problematic in the presence of closures
+-(when are two closures equal?)
+-while map equality compared pointers, not the maps' content, which was usually
+-not what the user would want.
+-</p>
+-
+-<p>
+-Go 1 addressed these issues.
+-First, structs and arrays can be compared for equality and inequality
+-(<code>==</code> and <code>!=</code>),
+-and therefore be used as map keys,
+-provided they are composed from elements for which equality is also defined,
+-using element-wise comparison.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}}
+--->    type Day struct {
+-        long  string
+-        short string
+-    }
+-    Christmas := Day{&#34;Christmas&#34;, &#34;XMas&#34;}
+-    Thanksgiving := Day{&#34;Thanksgiving&#34;, &#34;Turkey&#34;}
+-    holiday := map[Day]bool{
+-        Christmas:    true,
+-        Thanksgiving: true,
+-    }
+-    fmt.Printf(&#34;Christmas is a holiday: %t\n&#34;, holiday[Christmas])</pre>
+-
+-<p>
+-Second, Go 1 removes the definition of equality for function values,
+-except for comparison with <code>nil</code>.
+-Finally, map equality is gone too, also except for comparison with <code>nil</code>.
+-</p>
+-
+-<p>
+-Note that equality is still undefined for slices, for which the
+-calculation is in general infeasible.  Also note that the ordered
+-comparison operators (<code>&lt;</code> <code>&lt;=</code>
+-<code>&gt;</code> <code>&gt;=</code>) are still undefined for
+-structs and arrays.
+-
+-<p>
+-<em>Updating</em>:
+-Struct and array equality is a new feature, so existing code needs no changes.
+-Existing code that depends on function or map equality will be
+-rejected by the compiler and will need to be fixed by hand.
+-Few programs will be affected, but the fix may require some
+-redesign.
+-</p>
+-
+-<h2 id="packages">The package hierarchy</h2>
+-
+-<p>
+-Go 1 addresses many deficiencies in the old standard library and
+-cleans up a number of packages, making them more internally consistent
+-and portable.
+-</p>
+-
+-<p>
+-This section describes how the packages have been rearranged in Go 1.
+-Some have moved, some have been renamed, some have been deleted.
+-New packages are described in later sections.
+-</p>
+-
+-<h3 id="hierarchy">The package hierarchy</h3>
+-
+-<p>
+-Go 1 has a rearranged package hierarchy that groups related items
+-into subdirectories. For instance, <code>utf8</code> and
+-<code>utf16</code> now occupy subdirectories of <code>unicode</code>.
+-Also, <a href="#subrepo">some packages</a> have moved into
+-subrepositories of
+-<a href="http://code.google.com/p/go"><code>code.google.com/p/go</code></a>
+-while <a href="#deleted">others</a> have been deleted outright.
+-</p>
+-
+-<table class="codetable" frame="border" summary="Moved packages">
+-<colgroup align="left" width="60%"></colgroup>
+-<colgroup align="left" width="40%"></colgroup>
+-<tr>
+-<th align="left">Old path</th>
+-<th align="left">New path</th>
+-</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>asn1</td> <td>encoding/asn1</td></tr>
+-<tr><td>csv</td> <td>encoding/csv</td></tr>
+-<tr><td>gob</td> <td>encoding/gob</td></tr>
+-<tr><td>json</td> <td>encoding/json</td></tr>
+-<tr><td>xml</td> <td>encoding/xml</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>exp/template/html</td> <td>html/template</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>big</td> <td>math/big</td></tr>
+-<tr><td>cmath</td> <td>math/cmplx</td></tr>
+-<tr><td>rand</td> <td>math/rand</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>http</td> <td>net/http</td></tr>
+-<tr><td>http/cgi</td> <td>net/http/cgi</td></tr>
+-<tr><td>http/fcgi</td> <td>net/http/fcgi</td></tr>
+-<tr><td>http/httptest</td> <td>net/http/httptest</td></tr>
+-<tr><td>http/pprof</td> <td>net/http/pprof</td></tr>
+-<tr><td>mail</td> <td>net/mail</td></tr>
+-<tr><td>rpc</td> <td>net/rpc</td></tr>
+-<tr><td>rpc/jsonrpc</td> <td>net/rpc/jsonrpc</td></tr>
+-<tr><td>smtp</td> <td>net/smtp</td></tr>
+-<tr><td>url</td> <td>net/url</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>exec</td> <td>os/exec</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>scanner</td> <td>text/scanner</td></tr>
+-<tr><td>tabwriter</td> <td>text/tabwriter</td></tr>
+-<tr><td>template</td> <td>text/template</td></tr>
+-<tr><td>template/parse</td> <td>text/template/parse</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>utf8</td> <td>unicode/utf8</td></tr>
+-<tr><td>utf16</td> <td>unicode/utf16</td></tr>
+-</table>
+-
+-<p>
+-Note that the package names for the old <code>cmath</code> and
+-<code>exp/template/html</code> packages have changed to <code>cmplx</code>
+-and <code>template</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update all imports and package renames for packages that
+-remain inside the standard repository.  Programs that import packages
+-that are no longer in the standard repository will need to be edited
+-by hand.
+-</p>
+-
+-<h3 id="exp">The package tree exp</h3>
+-
+-<p>
+-Because they are not standardized, the packages under the <code>exp</code> directory will not be available in the
+-standard Go 1 release distributions, although they will be available in source code form
+-in <a href="http://code.google.com/p/go/">the repository</a> for
+-developers who wish to use them.
+-</p>
+-
+-<p>
+-Several packages have moved under <code>exp</code> at the time of Go 1's release:
+-</p>
+-
+-<ul>
+-<li><code>ebnf</code></li>
+-<li><code>html</code><sup>&#8224;</sup></li>
+-<li><code>go/types</code></li>
+-</ul>
+-
+-<p>
+-(<sup>&#8224;</sup>The <code>EscapeString</code> and <code>UnescapeString</code> types remain
+-in package <code>html</code>.)
+-</p>
+-
+-<p>
+-All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc.
+-</p>
+-
+-<p>
+-Also, the <code>utf8.String</code> type has been moved to its own package, <code>exp/utf8string</code>.
+-</p>
+-
+-<p>
+-Finally, the <code>gotype</code> command now resides in <code>exp/gotype</code>, while
+-<code>ebnflint</code> is now in <code>exp/ebnflint</code>.
+-If they are installed, they now reside in <code>$GOROOT/bin/tool</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses packages in <code>exp</code> will need to be updated by hand,
+-or else compiled from an installation that has <code>exp</code> available.
+-The <code>go</code> <code>fix</code> tool or the compiler will complain about such uses.
+-</p>
+-
+-<h3 id="old">The package tree old</h3>
+-
+-<p>
+-Because they are deprecated, the packages under the <code>old</code> directory will not be available in the
+-standard Go 1 release distributions, although they will be available in source code form for
+-developers who wish to use them.
+-</p>
+-
+-<p>
+-The packages in their new locations are:
+-</p>
+-
+-<ul>
+-<li><code>old/netchan</code></li>
+-<li><code>old/regexp</code></li>
+-<li><code>old/template</code></li>
+-</ul>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses packages now in <code>old</code> will need to be updated by hand,
+-or else compiled from an installation that has <code>old</code> available.
+-The <code>go</code> <code>fix</code> tool will warn about such uses.
+-</p>
+-
+-<h3 id="deleted">Deleted packages</h3>
+-
+-<p>
+-Go 1 deletes several packages outright:
+-</p>
+-
+-<ul>
+-<li><code>container/vector</code></li>
+-<li><code>exp/datafmt</code></li>
+-<li><code>go/typechecker</code></li>
+-<li><code>try</code></li>
+-</ul>
+-
+-<p>
+-and also the command <code>gotry</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses <code>container/vector</code> should be updated to use
+-slices directly.  See
+-<a href="http://code.google.com/p/go-wiki/wiki/SliceTricks">the Go
+-Language Community Wiki</a> for some suggestions.
+-Code that uses the other packages (there should be almost zero) will need to be rethought.
+-</p>
+-
+-<h3 id="subrepo">Packages moving to subrepositories</h3>
+-
+-<p>
+-Go 1 has moved a number of packages into other repositories, usually sub-repositories of
+-<a href="http://code.google.com/p/go/">the main Go repository</a>.
+-This table lists the old and new import paths:
+-
+-<table class="codetable" frame="border" summary="Sub-repositories">
+-<colgroup align="left" width="40%"></colgroup>
+-<colgroup align="left" width="60%"></colgroup>
+-<tr>
+-<th align="left">Old</th>
+-<th align="left">New</th>
+-</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>crypto/bcrypt</td> <td>code.google.com/p/go.crypto/bcrypt</tr>
+-<tr><td>crypto/blowfish</td> <td>code.google.com/p/go.crypto/blowfish</tr>
+-<tr><td>crypto/cast5</td> <td>code.google.com/p/go.crypto/cast5</tr>
+-<tr><td>crypto/md4</td> <td>code.google.com/p/go.crypto/md4</tr>
+-<tr><td>crypto/ocsp</td> <td>code.google.com/p/go.crypto/ocsp</tr>
+-<tr><td>crypto/openpgp</td> <td>code.google.com/p/go.crypto/openpgp</tr>
+-<tr><td>crypto/openpgp/armor</td> <td>code.google.com/p/go.crypto/openpgp/armor</tr>
+-<tr><td>crypto/openpgp/elgamal</td> <td>code.google.com/p/go.crypto/openpgp/elgamal</tr>
+-<tr><td>crypto/openpgp/errors</td> <td>code.google.com/p/go.crypto/openpgp/errors</tr>
+-<tr><td>crypto/openpgp/packet</td> <td>code.google.com/p/go.crypto/openpgp/packet</tr>
+-<tr><td>crypto/openpgp/s2k</td> <td>code.google.com/p/go.crypto/openpgp/s2k</tr>
+-<tr><td>crypto/ripemd160</td> <td>code.google.com/p/go.crypto/ripemd160</tr>
+-<tr><td>crypto/twofish</td> <td>code.google.com/p/go.crypto/twofish</tr>
+-<tr><td>crypto/xtea</td> <td>code.google.com/p/go.crypto/xtea</tr>
+-<tr><td>exp/ssh</td> <td>code.google.com/p/go.crypto/ssh</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
+-<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr>
+-<tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr>
+-<tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr>
+-<tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>exp/wingui</td> <td>code.google.com/p/gowingui</tr>
+-</table>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update imports of these packages to use the new import paths.
+-Installations that depend on these packages will need to install them using
+-a <code>go get</code> command.
+-</p>
+-
+-<h2 id="major">Major changes to the library</h2>
+-
+-<p>
+-This section describes significant changes to the core libraries, the ones that
+-affect the most programs.
+-</p>
+-
+-<h3 id="errors">The error type and errors package</h3>
+-
+-<p>
+-The placement of <code>os.Error</code> in package <code>os</code> is mostly historical: errors first came up when implementing package <code>os</code>, and they seemed system-related at the time.
+-Since then it has become clear that errors are more fundamental than the operating system.  For example, it would be nice to use <code>Errors</code> in packages that <code>os</code> depends on, like <code>syscall</code>.
+-Also, having <code>Error</code> in <code>os</code> introduces many dependencies on <code>os</code> that would otherwise not exist.
+-</p>
+-
+-<p>
+-Go 1 solves these problems by introducing a built-in <code>error</code> interface type and a separate <code>errors</code> package (analogous to <code>bytes</code> and <code>strings</code>) that contains utility functions.
+-It replaces <code>os.NewError</code> with
+-<a href="/pkg/errors/#New"><code>errors.New</code></a>,
+-giving errors a more central place in the environment.
+-</p>
+-
+-<p>
+-So the widely-used <code>String</code> method does not cause accidental satisfaction
+-of the <code>error</code> interface, the <code>error</code> interface uses instead
+-the name <code>Error</code> for that method:
+-</p>
+-
+-<pre>
+-    type error interface {
+-        Error() string
+-    }
+-</pre>
+-
+-<p>
+-The <code>fmt</code> library automatically invokes <code>Error</code>, as it already
+-does for <code>String</code>, for easy printing of error values.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}}
+--->type SyntaxError struct {
+-    File    string
+-    Line    int
+-    Message string
+-}
+-
+-func (se *SyntaxError) Error() string {
+-    return fmt.Sprintf(&#34;%s:%d: %s&#34;, se.File, se.Line, se.Message)
+-}</pre>
+-
+-<p>
+-All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone.
+-</p>
+-
+-<p>
+-A new package, <a href="/pkg/errors/"><code>errors</code></a>, contains the function
+-</p>
+-
+-<pre>
+-func New(text string) error
+-</pre>
+-
+-<p>
+-to turn a string into an error. It replaces the old <code>os.NewError</code>.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/ErrSyntax/`}}
+--->    var ErrSyntax = errors.New(&#34;syntax error&#34;)</pre>
+-		
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
+-Code that defines error types with a <code>String</code> method will need to be updated
+-by hand to rename the methods to <code>Error</code>.
+-</p>
+-
+-<h3 id="errno">System call errors</h3>
+-
+-<p>
+-The old <code>syscall</code> package, which predated <code>os.Error</code>
+-(and just about everything else),
+-returned errors as <code>int</code> values.
+-In turn, the <code>os</code> package forwarded many of these errors, such
+-as <code>EINVAL</code>, but using a different set of errors on each platform.
+-This behavior was unpleasant and unportable.
+-</p>
+-
+-<p>
+-In Go 1, the
+-<a href="/pkg/syscall/"><code>syscall</code></a>
+-package instead returns an <code>error</code> for system call errors.
+-On Unix, the implementation is done by a
+-<a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type
+-that satisfies <code>error</code> and replaces the old <code>os.Errno</code>.
+-</p>
+-
+-<p>
+-The changes affecting <code>os.EINVAL</code> and relatives are
+-described <a href="#os">elsewhere</a>.
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
+-Regardless, most code should use the <code>os</code> package
+-rather than <code>syscall</code> and so will be unaffected.
+-</p>
+-
+-<h3 id="time">Time</h3>
+-
+-<p>
+-Time is always a challenge to support well in a programming language.
+-The old Go <code>time</code> package had <code>int64</code> units, no
+-real type safety,
+-and no distinction between absolute times and durations.
+-</p>
+-
+-<p>
+-One of the most sweeping changes in the Go 1 library is therefore a
+-complete redesign of the
+-<a href="/pkg/time/"><code>time</code></a> package.
+-Instead of an integer number of nanoseconds as an <code>int64</code>,
+-and a separate <code>*time.Time</code> type to deal with human
+-units such as hours and years,
+-there are now two fundamental types:
+-<a href="/pkg/time/#Time"><code>time.Time</code></a>
+-(a value, so the <code>*</code> is gone), which represents a moment in time;
+-and <a href="/pkg/time/#Duration"><code>time.Duration</code></a>,
+-which represents an interval.
+-Both have nanosecond resolution.
+-A <code>Time</code> can represent any time into the ancient
+-past and remote future, while a <code>Duration</code> can
+-span plus or minus only about 290 years.
+-There are methods on these types, plus a number of helpful
+-predefined constant durations such as <code>time.Second</code>.
+-</p>
+-
+-<p>
+-Among the new methods are things like
+-<a href="/pkg/time/#Time.Add"><code>Time.Add</code></a>,
+-which adds a <code>Duration</code> to a <code>Time</code>, and
+-<a href="/pkg/time/#Time.Sub"><code>Time.Sub</code></a>,
+-which subtracts two <code>Times</code> to yield a <code>Duration</code>.
+-</p>
+-
+-<p>
+-The most important semantic change is that the Unix epoch (Jan 1, 1970) is now
+-relevant only for those functions and methods that mention Unix:
+-<a href="/pkg/time/#Unix"><code>time.Unix</code></a>
+-and the <a href="/pkg/time/#Time.Unix"><code>Unix</code></a>
+-and <a href="/pkg/time/#Time.UnixNano"><code>UnixNano</code></a> methods
+-of the <code>Time</code> type.
+-In particular,
+-<a href="/pkg/time/#Now"><code>time.Now</code></a>
+-returns a <code>time.Time</code> value rather than, in the old
+-API, an integer nanosecond count since the Unix epoch.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}}
+---><span class="comment">// sleepUntil sleeps until the specified time. It returns immediately if it&#39;s too late.</span>
+-func sleepUntil(wakeup time.Time) {
+-    now := time.Now() <span class="comment">// A Time.</span>
+-    if !wakeup.After(now) {
+-        return
+-    }
+-    delta := wakeup.Sub(now) <span class="comment">// A Duration.</span>
+-    fmt.Printf(&#34;Sleeping for %.3fs\n&#34;, delta.Seconds())
+-    time.Sleep(delta)
+-}</pre>
+-
+-<p>
+-The new types, methods, and constants have been propagated through
+-all the standard packages that use time, such as <code>os</code> and
+-its representation of file time stamps.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-The <code>go</code> <code>fix</code> tool will update many uses of the old <code>time</code> package to use the new
+-types and methods, although it does not replace values such as <code>1e9</code>
+-representing nanoseconds per second.
+-Also, because of type changes in some of the values that arise,
+-some of the expressions rewritten by the fix tool may require
+-further hand editing; in such cases the rewrite will include
+-the correct function or method for the old functionality, but
+-may have the wrong type or require further analysis.
+-</p>
+-
+-<h2 id="minor">Minor changes to the library</h2>
+-
+-<p>
+-This section describes smaller changes, such as those to less commonly
+-used packages or that affect
+-few programs beyond the need to run <code>go</code> <code>fix</code>.
+-This category includes packages that are new in Go 1.
+-Collectively they improve portability, regularize behavior, and
+-make the interfaces more modern and Go-like.
+-</p>
+-
+-<h3 id="archive_zip">The archive/zip package</h3>
+-
+-<p>
+-In Go 1, <a href="/pkg/archive/zip/#Writer"><code>*zip.Writer</code></a> no
+-longer has a <code>Write</code> method. Its presence was a mistake.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-What little code is affected will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="bufio">The bufio package</h3>
+-
+-<p>
+-In Go 1, <a href="/pkg/bufio/#NewReaderSize"><code>bufio.NewReaderSize</code></a>
+-and
+-<a href="/pkg/bufio/#NewWriterSize"><code>bufio.NewWriterSize</code></a>
+-functions no longer return an error for invalid sizes.
+-If the argument size is too small or invalid, it is adjusted.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update calls that assign the error to _.
+-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="compress">The compress/flate, compress/gzip and compress/zlib packages</h3>
+-
+-<p>
+-In Go 1, the <code>NewWriterXxx</code> functions in
+-<a href="/pkg/compress/flate"><code>compress/flate</code></a>,
+-<a href="/pkg/compress/gzip"><code>compress/gzip</code></a> and
+-<a href="/pkg/compress/zlib"><code>compress/zlib</code></a>
+-all return <code>(*Writer, error)</code> if they take a compression level,
+-and <code>*Writer</code> otherwise. Package <code>gzip</code>'s
+-<code>Compressor</code> and <code>Decompressor</code> types have been renamed
+-to <code>Writer</code> and <code>Reader</code>. Package <code>flate</code>'s
+-<code>WrongValueError</code> type has been removed.
+-</p>
+-
+-<p>
+-<em>Updating</em>
+-Running <code>go</code> <code>fix</code> will update old names and calls that assign the error to _.
+-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="crypto_aes_des">The crypto/aes and crypto/des packages</h3>
+-
+-<p>
+-In Go 1, the <code>Reset</code> method has been removed. Go does not guarantee
+-that memory is not copied and therefore this method was misleading.
+-</p>
+-
+-<p>
+-The cipher-specific types <code>*aes.Cipher</code>, <code>*des.Cipher</code>,
+-and <code>*des.TripleDESCipher</code> have been removed in favor of
+-<code>cipher.Block</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Remove the calls to Reset. Replace uses of the specific cipher types with
+-cipher.Block.
+-</p>
+-
+-<h3 id="crypto_elliptic">The crypto/elliptic package</h3>
+-
+-<p>
+-In Go 1, <a href="/pkg/crypto/elliptic/#Curve"><code>elliptic.Curve</code></a>
+-has been made an interface to permit alternative implementations. The curve
+-parameters have been moved to the
+-<a href="/pkg/crypto/elliptic/#CurveParams"><code>elliptic.CurveParams</code></a>
+-structure.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Existing users of <code>*elliptic.Curve</code> will need to change to
+-simply <code>elliptic.Curve</code>. Calls to <code>Marshal</code>,
+-<code>Unmarshal</code> and <code>GenerateKey</code> are now functions
+-in <code>crypto/elliptic</code> that take an <code>elliptic.Curve</code>
+-as their first argument.
+-</p>
+-
+-<h3 id="crypto_hmac">The crypto/hmac package</h3>
+-
+-<p>
+-In Go 1, the hash-specific functions, such as <code>hmac.NewMD5</code>, have
+-been removed from <code>crypto/hmac</code>. Instead, <code>hmac.New</code> takes
+-a function that returns a <code>hash.Hash</code>, such as <code>md5.New</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will perform the needed changes.
+-</p>
+-
+-<h3 id="crypto_x509">The crypto/x509 package</h3>
+-
+-<p>
+-In Go 1, the
+-<a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
+-and
+-<a href="/pkg/crypto/x509/#CreateCRL"><code>CreateCRL</code></a>
+-functions in <code>crypto/x509</code> have been altered to take an
+-<code>interface{}</code> where they previously took a <code>*rsa.PublicKey</code>
+-or <code>*rsa.PrivateKey</code>. This will allow other public key algorithms
+-to be implemented in the future.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-No changes will be needed.
+-</p>
+-
+-<h3 id="encoding_binary">The encoding/binary package</h3>
+-
+-<p>
+-In Go 1, the <code>binary.TotalSize</code> function has been replaced by
+-<a href="/pkg/encoding/binary/#Size"><code>Size</code></a>,
+-which takes an <code>interface{}</code> argument rather than
+-a <code>reflect.Value</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-What little code is affected will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="encoding_xml">The encoding/xml package</h3>
+-
+-<p>
+-In Go 1, the <a href="/pkg/encoding/xml/"><code>xml</code></a> package
+-has been brought closer in design to the other marshaling packages such
+-as <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>.
+-</p>
+-
+-<p>
+-The old <code>Parser</code> type is renamed
+-<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> and has a new
+-<a href="/pkg/encoding/xml/#Decoder.Decode"><code>Decode</code></a> method. An
+-<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> type was also introduced.
+-</p>
+-
+-<p>
+-The functions <a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a>
+-and <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a>
+-work with <code>[]byte</code> values now. To work with streams,
+-use the new <a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a>
+-and <a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> types.
+-</p>
+-
+-<p>
+-When marshaling or unmarshaling values, the format of supported flags in
+-field tags has changed to be closer to the
+-<a href="/pkg/encoding/json"><code>json</code></a> package
+-(<code>`xml:"name,flag"`</code>). The matching done between field tags, field
+-names, and the XML attribute and element names is now case-sensitive.
+-The <code>XMLName</code> field tag, if present, must also match the name
+-of the XML element being marshaled.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update most uses of the package except for some calls to
+-<code>Unmarshal</code>. Special care must be taken with field tags,
+-since the fix tool will not update them and if not fixed by hand they will
+-misbehave silently in some cases. For example, the old
+-<code>"attr"</code> is now written <code>",attr"</code> while plain
+-<code>"attr"</code> remains valid but with a different meaning.
+-</p>
+-
+-<h3 id="expvar">The expvar package</h3>
+-
+-<p>
+-In Go 1, the <code>RemoveAll</code> function has been removed.
+-The <code>Iter</code> function and Iter method on <code>*Map</code> have
+-been replaced by
+-<a href="/pkg/expvar/#Do"><code>Do</code></a>
+-and
+-<a href="/pkg/expvar/#Map.Do"><code>(*Map).Do</code></a>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Most code using <code>expvar</code> will not need changing. The rare code that used
+-<code>Iter</code> can be updated to pass a closure to <code>Do</code> to achieve the same effect.
+-</p>
+-
+-<h3 id="flag">The flag package</h3>
+-
+-<p>
+-In Go 1, the interface <a href="/pkg/flag/#Value"><code>flag.Value</code></a> has changed slightly.
+-The <code>Set</code> method now returns an <code>error</code> instead of
+-a <code>bool</code> to indicate success or failure.
+-</p>
+-
+-<p>
+-There is also a new kind of flag, <code>Duration</code>, to support argument
+-values specifying time intervals.
+-Values for such flags must be given units, just as <code>time.Duration</code>
+-formats them: <code>10s</code>, <code>1h30m</code>, etc.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/timeout/`}}
+--->var timeout = flag.Duration(&#34;timeout&#34;, 30*time.Second, &#34;how long to wait for completion&#34;)</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Programs that implement their own flags will need minor manual fixes to update their
+-<code>Set</code> methods.
+-The <code>Duration</code> flag is new and affects no existing code.
+-</p>
+-
+-
+-<h3 id="go">The go/* packages</h3>
+-
+-<p>
+-Several packages under <code>go</code> have slightly revised APIs.
+-</p>
+-
+-<p>
+-A concrete <code>Mode</code> type was introduced for configuration mode flags
+-in the packages
+-<a href="/pkg/go/scanner/"><code>go/scanner</code></a>,
+-<a href="/pkg/go/parser/"><code>go/parser</code></a>,
+-<a href="/pkg/go/printer/"><code>go/printer</code></a>, and
+-<a href="/pkg/go/doc/"><code>go/doc</code></a>.
+-</p>
+-
+-<p>
+-The modes <code>AllowIllegalChars</code> and <code>InsertSemis</code> have been removed
+-from the <a href="/pkg/go/scanner/"><code>go/scanner</code></a> package. They were mostly
+-useful for scanning text other then Go source files. Instead, the
+-<a href="/pkg/text/scanner/"><code>text/scanner</code></a> package should be used
+-for that purpose.
+-</p>
+-
+-<p>
+-The <a href="/pkg/go/scanner/#ErrorHandler"><code>ErrorHandler</code></a> provided
+-to the scanner's <a href="/pkg/go/scanner/#Scanner.Init"><code>Init</code></a> method is
+-now simply a function rather than an interface. The <code>ErrorVector</code> type has
+-been removed in favor of the (existing) <a href="/pkg/go/scanner/#ErrorList"><code>ErrorList</code></a>
+-type, and the <code>ErrorVector</code> methods have been migrated. Instead of embedding
+-an <code>ErrorVector</code> in a client of the scanner, now a client should maintain
+-an <code>ErrorList</code>.
+-</p>
+-
+-<p>
+-The set of parse functions provided by the <a href="/pkg/go/parser/"><code>go/parser</code></a>
+-package has been reduced to the primary parse function
+-<a href="/pkg/go/parser/#ParseFile"><code>ParseFile</code></a>, and a couple of
+-convenience functions <a href="/pkg/go/parser/#ParseDir"><code>ParseDir</code></a>
+-and <a href="/pkg/go/parser/#ParseExpr"><code>ParseExpr</code></a>.
+-</p>
+-
+-<p>
+-The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an additional
+-configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>;
+-if set, the printer will emit <code>//line</code> comments such that the generated
+-output contains the original source code position information. The new type
+-<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be
+-used to provide comments associated with an arbitrary
+-<a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only
+-<a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information).
+-</p>
+-
+-<p>
+-The type names of the <a href="/pkg/go/doc/"><code>go/doc</code></a> package have been
+-streamlined by removing the <code>Doc</code> suffix: <code>PackageDoc</code>
+-is now <code>Package</code>, <code>ValueDoc</code> is <code>Value</code>, etc.
+-Also, all types now consistently have a <code>Name</code> field (or <code>Names</code>,
+-in the case of type <code>Value</code>) and <code>Type.Factories</code> has become
+-<code>Type.Funcs</code>.
+-Instead of calling <code>doc.NewPackageDoc(pkg, importpath)</code>,
+-documentation for a package is created with:
+-</p>
+-
+-<pre>
+-    doc.New(pkg, importpath, mode)
+-</pre>
+-
+-<p>
+-where the new <code>mode</code> parameter specifies the operation mode:
+-if set to <a href="/pkg/go/doc/#AllDecls"><code>AllDecls</code></a>, all declarations
+-(not just exported ones) are considered.
+-The function <code>NewFileDoc</code> was removed, and the function
+-<code>CommentText</code> has become the method
+-<a href="/pkg/go/ast/#Text"><code>Text</code></a> of
+-<a href="/pkg/go/ast/#CommentGroup"><code>ast.CommentGroup</code></a>.
+-</p>
+-
+-<p>
+-In package <a href="/pkg/go/token/"><code>go/token</code></a>, the
+-<a href="/pkg/go/token/#FileSet"><code>token.FileSet</code></a> method <code>Files</code>
+-(which originally returned a channel of <code>*token.File</code>s) has been replaced
+-with the iterator <a href="/pkg/go/token/#FileSet.Iterate"><code>Iterate</code></a> that
+-accepts a function argument instead.
+-</p>
+-
+-<p>
+-In package <a href="/pkg/go/build/"><code>go/build</code></a>, the API
+-has been nearly completely replaced.
+-The package still computes Go package information
+-but it does not run the build: the <code>Cmd</code> and <code>Script</code>
+-types are gone.
+-(To build code, use the new
+-<a href="/cmd/go/"><code>go</code></a> command instead.)
+-The <code>DirInfo</code> type is now named
+-<a href="/pkg/go/build/#Package"><code>Package</code></a>.
+-<code>FindTree</code> and <code>ScanDir</code> are replaced by
+-<a href="/pkg/go/build/#Import"><code>Import</code></a>
+-and
+-<a href="/pkg/go/build/#ImportDir"><code>ImportDir</code></a>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses packages in <code>go</code> will have to be updated by hand; the
+-compiler will reject incorrect uses. Templates used in conjunction with any of the
+-<code>go/doc</code> types may need manual fixes; the renamed fields will lead
+-to run-time errors.
+-</p>
+-
+-<h3 id="hash">The hash package</h3>
+-
+-<p>
+-In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes
+-a new method, <code>BlockSize</code>.  This new method is used primarily in the
+-cryptographic libraries.
+-</p>
+-
+-<p>
+-The <code>Sum</code> method of the
+-<a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> interface now takes a
+-<code>[]byte</code> argument, to which the hash value will be appended.
+-The previous behavior can be recreated by adding a <code>nil</code> argument to the call.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Existing implementations of <code>hash.Hash</code> will need to add a
+-<code>BlockSize</code> method.  Hashes that process the input one byte at
+-a time can implement <code>BlockSize</code> to return 1.
+-Running <code>go</code> <code>fix</code> will update calls to the <code>Sum</code> methods of the various
+-implementations of <code>hash.Hash</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Since the package's functionality is new, no updating is necessary.
+-</p>
+-
+-<h3 id="http">The http package</h3>
+-
+-<p>
+-In Go 1 the <a href="/pkg/net/http/"><code>http</code></a> package is refactored,
+-putting some of the utilities into a
+-<a href="/pkg/net/http/httputil/"><code>httputil</code></a> subdirectory.
+-These pieces are only rarely needed by HTTP clients.
+-The affected items are:
+-</p>
+-
+-<ul>
+-<li>ClientConn</li>
+-<li>DumpRequest</li>
+-<li>DumpRequestOut</li>
+-<li>DumpResponse</li>
+-<li>NewChunkedReader</li>
+-<li>NewChunkedWriter</li>
+-<li>NewClientConn</li>
+-<li>NewProxyClientConn</li>
+-<li>NewServerConn</li>
+-<li>NewSingleHostReverseProxy</li>
+-<li>ReverseProxy</li>
+-<li>ServerConn</li>
+-</ul>
+-
+-<p>
+-The <code>Request.RawURL</code> field has been removed; it was a
+-historical artifact.
+-</p>
+-
+-<p>
+-The <code>Handle</code> and <code>HandleFunc</code>
+-functions, and the similarly-named methods of <code>ServeMux</code>,
+-now panic if an attempt is made to register the same pattern twice.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update the few programs that are affected except for
+-uses of <code>RawURL</code>, which must be fixed by hand.
+-</p>
+-
+-<h3 id="image">The image package</h3>
+-
+-<p>
+-The <a href="/pkg/image/"><code>image</code></a> package has had a number of
+-minor changes, rearrangements and renamings.
+-</p>
+-
+-<p>
+-Most of the color handling code has been moved into its own package,
+-<a href="/pkg/image/color/"><code>image/color</code></a>.
+-For the elements that moved, a symmetry arises; for instance,
+-each pixel of an
+-<a href="/pkg/image/#RGBA"><code>image.RGBA</code></a>
+-is a
+-<a href="/pkg/image/color/#RGBA"><code>color.RGBA</code></a>.
+-</p>
+-
+-<p>
+-The old <code>image/ycbcr</code> package has been folded, with some
+-renamings, into the
+-<a href="/pkg/image/"><code>image</code></a>
+-and
+-<a href="/pkg/image/color/"><code>image/color</code></a>
+-packages.
+-</p>
+-
+-<p>
+-The old <code>image.ColorImage</code> type is still in the <code>image</code>
+-package but has been renamed
+-<a href="/pkg/image/#Uniform"><code>image.Uniform</code></a>,
+-while <code>image.Tiled</code> has been removed.
+-</p>
+-
+-<p>
+-This table lists the renamings.
+-</p>
+-
+-<table class="codetable" frame="border" summary="image renames">
+-<colgroup align="left" width="50%"></colgroup>
+-<colgroup align="left" width="50%"></colgroup>
+-<tr>
+-<th align="left">Old</th>
+-<th align="left">New</th>
+-</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>image.Color</td> <td>color.Color</td></tr>
+-<tr><td>image.ColorModel</td> <td>color.Model</td></tr>
+-<tr><td>image.ColorModelFunc</td> <td>color.ModelFunc</td></tr>
+-<tr><td>image.PalettedColorModel</td> <td>color.Palette</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>image.RGBAColor</td> <td>color.RGBA</td></tr>
+-<tr><td>image.RGBA64Color</td> <td>color.RGBA64</td></tr>
+-<tr><td>image.NRGBAColor</td> <td>color.NRGBA</td></tr>
+-<tr><td>image.NRGBA64Color</td> <td>color.NRGBA64</td></tr>
+-<tr><td>image.AlphaColor</td> <td>color.Alpha</td></tr>
+-<tr><td>image.Alpha16Color</td> <td>color.Alpha16</td></tr>
+-<tr><td>image.GrayColor</td> <td>color.Gray</td></tr>
+-<tr><td>image.Gray16Color</td> <td>color.Gray16</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>image.RGBAColorModel</td> <td>color.RGBAModel</td></tr>
+-<tr><td>image.RGBA64ColorModel</td> <td>color.RGBA64Model</td></tr>
+-<tr><td>image.NRGBAColorModel</td> <td>color.NRGBAModel</td></tr>
+-<tr><td>image.NRGBA64ColorModel</td> <td>color.NRGBA64Model</td></tr>
+-<tr><td>image.AlphaColorModel</td> <td>color.AlphaModel</td></tr>
+-<tr><td>image.Alpha16ColorModel</td> <td>color.Alpha16Model</td></tr>
+-<tr><td>image.GrayColorModel</td> <td>color.GrayModel</td></tr>
+-<tr><td>image.Gray16ColorModel</td> <td>color.Gray16Model</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>ycbcr.RGBToYCbCr</td> <td>color.RGBToYCbCr</td></tr>
+-<tr><td>ycbcr.YCbCrToRGB</td> <td>color.YCbCrToRGB</td></tr>
+-<tr><td>ycbcr.YCbCrColorModel</td> <td>color.YCbCrModel</td></tr>
+-<tr><td>ycbcr.YCbCrColor</td> <td>color.YCbCr</td></tr>
+-<tr><td>ycbcr.YCbCr</td> <td>image.YCbCr</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>ycbcr.SubsampleRatio444</td> <td>image.YCbCrSubsampleRatio444</td></tr>
+-<tr><td>ycbcr.SubsampleRatio422</td> <td>image.YCbCrSubsampleRatio422</td></tr>
+-<tr><td>ycbcr.SubsampleRatio420</td> <td>image.YCbCrSubsampleRatio420</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>image.ColorImage</td> <td>image.Uniform</td></tr>
+-</table>
+-
+-<p>
+-The image package's <code>New</code> functions
+-(<a href="/pkg/image/#NewRGBA"><code>NewRGBA</code></a>,
+-<a href="/pkg/image/#NewRGBA64"><code>NewRGBA64</code></a>, etc.)
+-take an <a href="/pkg/image/#Rectangle"><code>image.Rectangle</code></a> as an argument
+-instead of four integers.
+-</p>
+-
+-<p>
+-Finally, there are new predefined <code>color.Color</code> variables
+-<a href="/pkg/image/color/#Black"><code>color.Black</code></a>,
+-<a href="/pkg/image/color/#White"><code>color.White</code></a>,
+-<a href="/pkg/image/color/#Opaque"><code>color.Opaque</code></a>
+-and
+-<a href="/pkg/image/color/#Transparent"><code>color.Transparent</code></a>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
+-</p>
+-
+-<h3 id="log_syslog">The log/syslog package</h3>
+-
+-<p>
+-In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a>
+-function returns an error as well as a <code>log.Logger</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-What little code is affected will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="mime">The mime package</h3>
+-
+-<p>
+-In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function
+-of the <code>mime</code> package has  been simplified to make it
+-consistent with
+-<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>.
+-It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-What little code is affected will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h3 id="net">The net package</h3>
+-
+-<p>
+-In Go 1, the various <code>SetTimeout</code>,
+-<code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods
+-have been replaced with
+-<a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>,
+-<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and
+-<a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>,
+-respectively.  Rather than taking a timeout value in nanoseconds that
+-apply to any activity on the connection, the new methods set an
+-absolute deadline (as a <code>time.Time</code> value) after which
+-reads and writes will time out and no longer block.
+-</p>
+-
+-<p>
+-There are also new functions
+-<a href="/pkg/net/#DialTimeout"><code>net.DialTimeout</code></a>
+-to simplify timing out dialing a network address and
+-<a href="/pkg/net/#ListenMulticastUDP"><code>net.ListenMulticastUDP</code></a>
+-to allow multicast UDP to listen concurrently across multiple listeners.
+-The <code>net.ListenMulticastUDP</code> function replaces the old
+-<code>JoinGroup</code> and <code>LeaveGroup</code> methods.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses the old methods will fail to compile and must be updated by hand.
+-The semantic change makes it difficult for the fix tool to update automatically.
+-</p>
+-
+-<h3 id="os">The os package</h3>
+-
+-<p>
+-The <code>Time</code> function has been removed; callers should use
+-the <a href="/pkg/time/#Time"><code>Time</code></a> type from the
+-<code>time</code> package.
+-</p>
+-
+-<p>
+-The <code>Exec</code> function has been removed; callers should use
+-<code>Exec</code> from the <code>syscall</code> package, where available.
+-</p>
+-
+-<p>
+-The <code>ShellExpand</code> function has been renamed to <a
+-href="/pkg/os/#ExpandEnv"><code>ExpandEnv</code></a>.
+-</p>
+-
+-<p>
+-The <a href="/pkg/os/#NewFile"><code>NewFile</code></a> function
+-now takes a <code>uintptr</code> fd, instead of an <code>int</code>.
+-The <a href="/pkg/os/#File.Fd"><code>Fd</code></a> method on files now
+-also returns a <code>uintptr</code>.
+-</p>
+-
+-<p>
+-There are no longer error constants such as <code>EINVAL</code>
+-in the <code>os</code> package, since the set of values varied with
+-the underlying operating system. There are new portable functions like
+-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>
+-to test common error properties, plus a few new error values
+-with more Go-like names, such as
+-<a href="/pkg/os/#ErrPermission"><code>ErrPermission</code></a>
+-and
+-<a href="/pkg/os/#ErrNoEnv"><code>ErrNoEnv</code></a>.
+-</p>
+-
+-<p>
+-The <code>Getenverror</code> function has been removed. To distinguish
+-between a non-existent environment variable and an empty string,
+-use <a href="/pkg/os/#Environ"><code>os.Environ</code></a> or
+-<a href="/pkg/syscall/#Getenv"><code>syscall.Getenv</code></a>.
+-</p>
+-
+-
+-<p>
+-The <a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> method has
+-dropped its option argument and the associated constants are gone
+-from the package.
+-Also, the function <code>Wait</code> is gone; only the method of
+-the <code>Process</code> type persists.
+-</p>
+-
+-<p>
+-The <code>Waitmsg</code> type returned by
+-<a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a>
+-has been replaced with a more portable
+-<a href="/pkg/os/#ProcessState"><code>ProcessState</code></a>
+-type with accessor methods to recover information about the
+-process.
+-Because of changes to <code>Wait</code>, the <code>ProcessState</code>
+-value always describes an exited process.
+-Portability concerns simplified the interface in other ways, but the values returned by the
+-<a href="/pkg/os/#ProcessState.Sys"><code>ProcessState.Sys</code></a> and
+-<a href="/pkg/os/#ProcessState.SysUsage"><code>ProcessState.SysUsage</code></a>
+-methods can be type-asserted to underlying system-specific data structures such as
+-<a href="/pkg/syscall/#WaitStatus"><code>syscall.WaitStatus</code></a> and
+-<a href="/pkg/syscall/#Rusage"><code>syscall.Rusage</code></a> on Unix.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will drop a zero argument to <code>Process.Wait</code>.
+-All other changes will be caught by the compiler and must be updated by hand.
+-</p>
+-
+-<h4 id="os_fileinfo">The os.FileInfo type</h4>
+-
+-<p>
+-Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type,
+-changing it from a struct to an interface:
+-</p>
+-
+-<pre>
+-    type FileInfo interface {
+-        Name() string       // base name of the file
+-        Size() int64        // length in bytes
+-        Mode() FileMode     // file mode bits
+-        ModTime() time.Time // modification time
+-        IsDir() bool        // abbreviation for Mode().IsDir()
+-        Sys() interface{}   // underlying data source (can return nil)
+-    }
+-</pre>
+-
+-<p>
+-The file mode information has been moved into a subtype called
+-<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>,
+-a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code>
+-methods.
+-</p>
+-
+-<p>
+-The system-specific details of file modes and properties such as (on Unix)
+-i-number have been removed from <code>FileInfo</code> altogether.
+-Instead, each operating system's <code>os</code> package provides an
+-implementation of the <code>FileInfo</code> interface, which
+-has a <code>Sys</code> method that returns the
+-system-specific representation of file metadata.
+-For instance, to discover the i-number of a file on a Unix system, unpack
+-the <code>FileInfo</code> like this:
+-</p>
+-
+-<pre>
+-    fi, err := os.Stat("hello.go")
+-    if err != nil {
+-        log.Fatal(err)
+-    }
+-    // Check that it's a Unix file.
+-    unixStat, ok := fi.Sys().(*syscall.Stat_t)
+-    if !ok {
+-        log.Fatal("hello.go: not a Unix file")
+-    }
+-    fmt.Printf("file i-number: %d\n", unixStat.Ino)
+-</pre>
+-
+-<p>
+-Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file,
+-the i-number expression could be contracted to
+-</p>
+-
+-<pre>
+-    fi.Sys().(*syscall.Stat_t).Ino
+-</pre>
+-
+-<p>
+-The vast majority of uses of <code>FileInfo</code> need only the methods
+-of the standard interface.
+-</p>
+-
+-<p>
+-The <code>os</code> package no longer contains wrappers for the POSIX errors
+-such as <code>ENOENT</code>.
+-For the few programs that need to verify particular error conditions, there are
+-now the boolean functions
+-<a href="/pkg/os/#IsExist"><code>IsExist</code></a>,
+-<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a>
+-and
+-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}}
+--->    f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600)
+-    if os.IsExist(err) {
+-        log.Printf(&#34;%s already exists&#34;, name)
+-    }</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update code that uses the old equivalent of the current <code>os.FileInfo</code>
+-and <code>os.FileMode</code> API.
+-Code that needs system-specific file details will need to be updated by hand.
+-Code that uses the old POSIX error values from the <code>os</code> package
+-will fail to compile and will also need to be updated by hand.
+-</p>
+-
+-<h3 id="os_signal">The os/signal package</h3>
+-
+-<p>
+-The <code>os/signal</code> package in Go 1 replaces the
+-<code>Incoming</code> function, which returned a channel
+-that received all incoming signals,
+-with the selective <code>Notify</code> function, which asks
+-for delivery of specific signals on an existing channel.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code must be updated by hand.
+-A literal translation of
+-</p>
+-<pre>
+-c := signal.Incoming()
+-</pre>
+-<p>
+-is
+-</p>
+-<pre>
+-c := make(chan os.Signal)
+-signal.Notify(c) // ask for all signals
+-</pre>
+-<p>
+-but most code should list the specific signals it wants to handle instead:
+-</p>
+-<pre>
+-c := make(chan os.Signal)
+-signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT)
+-</pre>
+-
+-<h3 id="path_filepath">The path/filepath package</h3>
+-
+-<p>
+-In Go 1, the <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a> function of the
+-<code>path/filepath</code> package
+-has been changed to take a function value of type
+-<a href="/pkg/path/filepath/#WalkFunc"><code>WalkFunc</code></a>
+-instead of a <code>Visitor</code> interface value.
+-<code>WalkFunc</code> unifies the handling of both files and directories.
+-</p>
+-
+-<pre>
+-    type WalkFunc func(path string, info os.FileInfo, err error) error
+-</pre>
+-
+-<p>
+-The <code>WalkFunc</code> function will be called even for files or directories that could not be opened;
+-in such cases the error argument will describe the failure.
+-If a directory's contents are to be skipped,
+-the function should return the value <a href="/pkg/path/filepath/#variables"><code>filepath.SkipDir</code></a>
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}}
+--->    markFn := func(path string, info os.FileInfo, err error) error {
+-        if path == &#34;pictures&#34; { <span class="comment">// Will skip walking of directory pictures and its contents.</span>
+-            return filepath.SkipDir
+-        }
+-        if err != nil {
+-            return err
+-        }
+-        log.Println(path)
+-        return nil
+-    }
+-    err := filepath.Walk(&#34;.&#34;, markFn)
+-    if err != nil {
+-        log.Fatal(err)
+-    }</pre>
+-
+-<p>
+-<em>Updating</em>:
+-The change simplifies most code but has subtle consequences, so affected programs
+-will need to be updated by hand.
+-The compiler will catch code using the old interface.
+-</p>
+-
+-<h3 id="regexp">The regexp package</h3>
+-
+-<p>
+-The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten.
+-It has the same interface but the specification of the regular expressions
+-it supports has changed from the old "egrep" form to that of
+-<a href="http://code.google.com/p/re2/">RE2</a>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses the package should have its regular expressions checked by hand.
+-</p>
+-
+-<h3 id="runtime">The runtime package</h3>
+-
+-<p>
+-In Go 1, much of the API exported by package
+-<code>runtime</code> has been removed in favor of
+-functionality provided by other packages.
+-Code using the <code>runtime.Type</code> interface
+-or its specific concrete type implementations should
+-now use package <a href="/pkg/reflect/"><code>reflect</code></a>.
+-Code using <code>runtime.Semacquire</code> or <code>runtime.Semrelease</code>
+-should use channels or the abstractions in package <a href="/pkg/sync/"><code>sync</code></a>.
+-The <code>runtime.Alloc</code>, <code>runtime.Free</code>,
+-and <code>runtime.Lookup</code> functions, an unsafe API created for
+-debugging the memory allocator, have no replacement.
+-</p>
+-
+-<p>
+-Before, <code>runtime.MemStats</code> was a global variable holding
+-statistics about memory allocation, and calls to <code>runtime.UpdateMemStats</code>
+-ensured that it was up to date.
+-In Go 1, <code>runtime.MemStats</code> is a struct type, and code should use
+-<a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
+-to obtain the current statistics.
+-</p>
+-
+-<p>
+-The package adds a new function,
+-<a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>, that returns the number of CPUs available
+-for parallel execution, as reported by the operating system kernel.
+-Its value can inform the setting of <code>GOMAXPROCS</code>.
+-The <code>runtime.Cgocalls</code> and <code>runtime.Goroutines</code> functions
+-have been renamed to <code>runtime.NumCgoCall</code> and <code>runtime.NumGoroutine</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update code for the function renamings.
+-Other code will need to be updated by hand.
+-</p>
+-
+-<h3 id="strconv">The strconv package</h3>
+-
+-<p>
+-In Go 1, the
+-<a href="/pkg/strconv/"><code>strconv</code></a>
+-package has been significantly reworked to make it more Go-like and less C-like,
+-although <code>Atoi</code> lives on (it's similar to
+-<code>int(ParseInt(x, 10, 0))</code>, as does
+-<code>Itoa(x)</code> (<code>FormatInt(int64(x), 10)</code>).
+-There are also new variants of some of the functions that append to byte slices rather than
+-return strings, to allow control over allocation.
+-</p>
+-
+-<p>
+-This table summarizes the renamings; see the
+-<a href="/pkg/strconv/">package documentation</a>
+-for full details.
+-</p>
+-
+-<table class="codetable" frame="border" summary="strconv renames">
+-<colgroup align="left" width="50%"></colgroup>
+-<colgroup align="left" width="50%"></colgroup>
+-<tr>
+-<th align="left">Old call</th>
+-<th align="left">New call</th>
+-</tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Atob(x)</td> <td>ParseBool(x)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Atof32(x)</td> <td>ParseFloat(x, 32)Â§</td></tr>
+-<tr><td>Atof64(x)</td> <td>ParseFloat(x, 64)</td></tr>
+-<tr><td>AtofN(x, n)</td> <td>ParseFloat(x, n)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Atoi(x)</td> <td>Atoi(x)</td></tr>
+-<tr><td>Atoi(x)</td> <td>ParseInt(x, 10, 0)Â§</td></tr>
+-<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Atoui(x)</td> <td>ParseUint(x, 10, 0)Â§</td></tr>
+-<tr><td>Atoui64(x)</td> <td>ParseUint(x, 10, 64)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Btoi64(x, b)</td> <td>ParseInt(x, b, 64)</td></tr>
+-<tr><td>Btoui64(x, b)</td> <td>ParseUint(x, b, 64)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Btoa(x)</td> <td>FormatBool(x)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Ftoa32(x, f, p)</td> <td>FormatFloat(float64(x), f, p, 32)</td></tr>
+-<tr><td>Ftoa64(x, f, p)</td> <td>FormatFloat(x, f, p, 64)</td></tr>
+-<tr><td>FtoaN(x, f, p, n)</td> <td>FormatFloat(x, f, p, n)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Itoa(x)</td> <td>Itoa(x)</td></tr>
+-<tr><td>Itoa(x)</td> <td>FormatInt(int64(x), 10)</td></tr>
+-<tr><td>Itoa64(x)</td> <td>FormatInt(x, 10)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Itob(x, b)</td> <td>FormatInt(int64(x), b)</td></tr>
+-<tr><td>Itob64(x, b)</td> <td>FormatInt(x, b)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Uitoa(x)</td> <td>FormatUint(uint64(x), 10)</td></tr>
+-<tr><td>Uitoa64(x)</td> <td>FormatUint(x, 10)</td></tr>
+-<tr>
+-<td colspan="2"><hr></td>
+-</tr>
+-<tr><td>Uitob(x, b)</td> <td>FormatUint(uint64(x), b)</td></tr>
+-<tr><td>Uitob64(x, b)</td> <td>FormatUint(x, b)</td></tr>
+-</table>
+-		
+-<p>
+-<em>Updating</em>:
+-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
+-<br>
+-Â§ <code>Atoi</code> persists but <code>Atoui</code> and <code>Atof32</code> do not, so
+-they may require
+-a cast that must be added by hand; the <code>go</code> <code>fix</code> tool will warn about it.
+-</p>
+-
+-
+-<h3 id="templates">The template packages</h3>
+-
+-<p>
+-The <code>template</code> and <code>exp/template/html</code> packages have moved to 
+-<a href="/pkg/text/template/"><code>text/template</code></a> and
+-<a href="/pkg/html/template/"><code>html/template</code></a>.
+-More significant, the interface to these packages has been simplified.
+-The template language is the same, but the concept of "template set" is gone
+-and the functions and methods of the packages have changed accordingly,
+-often by elimination.
+-</p>
+-
+-<p>
+-Instead of sets, a <code>Template</code> object
+-may contain multiple named template definitions,
+-in effect constructing
+-name spaces for template invocation.
+-A template can invoke any other template associated with it, but only those
+-templates associated with it.
+-The simplest way to associate templates is to parse them together, something
+-made easier with the new structure of the packages.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-The imports will be updated by fix tool.
+-Single-template uses will be otherwise be largely unaffected.
+-Code that uses multiple templates in concert will need to be updated by hand.
+-The <a href="/pkg/text/template/#examples">examples</a> in
+-the documentation for <code>text/template</code> can provide guidance.
+-</p>
+-
+-<h3 id="testing">The testing package</h3>
+-
+-<p>
+-The testing package has a type, <code>B</code>, passed as an argument to benchmark functions.
+-In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, enabling
+-logging and failure reporting.
+-</p>
+-
+-<pre><!--{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}}
+--->func BenchmarkSprintf(b *testing.B) {
+-    <span class="comment">// Verify correctness before running benchmark.</span>
+-    b.StopTimer()
+-    got := fmt.Sprintf(&#34;%x&#34;, 23)
+-    const expect = &#34;17&#34;
+-    if expect != got {
+-        b.Fatalf(&#34;expected %q; got %q&#34;, expect, got)
+-    }
+-    b.StartTimer()
+-    for i := 0; i &lt; b.N; i++ {
+-        fmt.Sprintf(&#34;%x&#34;, 23)
+-    }
+-}</pre>
+-
+-<p>
+-<em>Updating</em>:
+-Existing code is unaffected, although benchmarks that use <code>println</code>
+-or <code>panic</code> should be updated to use the new methods.
+-</p>
+-
+-<h3 id="testing_script">The testing/script package</h3>
+-
+-<p>
+-The testing/script package has been deleted. It was a dreg.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-No code is likely to be affected.
+-</p>
+-
+-<h3 id="unsafe">The unsafe package</h3>
+-
+-<p>
+-In Go 1, the functions
+-<code>unsafe.Typeof</code>, <code>unsafe.Reflect</code>,
+-<code>unsafe.Unreflect</code>, <code>unsafe.New</code>, and
+-<code>unsafe.NewArray</code> have been removed;
+-they duplicated safer functionality provided by
+-package <a href="/pkg/reflect/"><code>reflect</code></a>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code using these functions must be rewritten to use
+-package <a href="/pkg/reflect/"><code>reflect</code></a>.
+-The changes to <a href="http://code.google.com/p/go/source/detail?r=2646dc956207">encoding/gob</a> and the <a href="http://code.google.com/p/goprotobuf/source/detail?r=5340ad310031">protocol buffer library</a>
+-may be helpful as examples.
+-</p>
+-
+-<h3 id="url">The url package</h3>
+-
+-<p>
+-In Go 1 several fields from the <a href="/pkg/net/url/#URL"><code>url.URL</code></a> type
+-were removed or replaced.
+-</p>
+-
+-<p>
+-The <a href="/pkg/net/url/#URL.String"><code>String</code></a> method now
+-predictably rebuilds an encoded URL string using all of <code>URL</code>'s
+-fields as necessary. The resulting string will also no longer have
+-passwords escaped.
+-</p>
+-
+-<p>
+-The <code>Raw</code> field has been removed. In most cases the <code>String</code>
+-method may be used in its place.
+-</p>
+-
+-<p>
+-The old <code>RawUserinfo</code> field is replaced by the <code>User</code>
+-field, of type <a href="/pkg/net/url/#Userinfo"><code>*net.Userinfo</code></a>.
+-Values of this type may be created using the new <a href="/pkg/net/url/#User"><code>net.User</code></a>
+-and <a href="/pkg/net/url/#UserPassword"><code>net.UserPassword</code></a>
+-functions. The <code>EscapeUserinfo</code> and <code>UnescapeUserinfo</code>
+-functions are also gone.
+-</p>
+-
+-<p>
+-The <code>RawAuthority</code> field has been removed. The same information is
+-available in the <code>Host</code> and <code>User</code> fields.
+-</p>
+-
+-<p>
+-The <code>RawPath</code> field and the <code>EncodedPath</code> method have
+-been removed. The path information in rooted URLs (with a slash following the
+-schema) is now available only in decoded form in the <code>Path</code> field.
+-Occasionally, the encoded data may be required to obtain information that
+-was lost in the decoding process. These cases must be handled by accessing
+-the data the URL was built from.
+-</p>
+-
+-<p>
+-URLs with non-rooted paths, such as <code>"mailto:dev@golang.org?subject=Hi"</code>,
+-are also handled differently. The <code>OpaquePath</code> boolean field has been
+-removed and a new <code>Opaque</code> string field introduced to hold the encoded
+-path for such URLs. In Go 1, the cited URL parses as:
+-</p>
+-
+-<pre>
+-    URL{
+-        Scheme: "mailto",
+-        Opaque: "dev@golang.org",
+-        RawQuery: "subject=Hi",
+-    }
+-</pre>
+-
+-<p>
+-A new <a href="/pkg/net/url/#URL.RequestURI"><code>RequestURI</code></a> method was
+-added to <code>URL</code>.
+-</p>
+-
+-<p>
+-The <code>ParseWithReference</code> function has been renamed to <code>ParseWithFragment</code>.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Code that uses the old fields will fail to compile and must be updated by hand.
+-The semantic changes make it difficult for the fix tool to update automatically.
+-</p>
+-
+-<h2 id="cmd_go">The go command</h2>
+-
+-<p>
+-Go 1 introduces the <a href="/cmd/go/">go command</a>, a tool for fetching,
+-building, and installing Go packages and commands. The <code>go</code> command
+-does away with makefiles, instead using Go source code to find dependencies and
+-determine build conditions. Most existing Go programs will no longer require
+-makefiles to be built.
+-</p>
+-
+-<p>
+-See <a href="/doc/code.html">How to Write Go Code</a> for a primer on the
+-<code>go</code> command and the <a href="/cmd/go/">go command documentation</a>
+-for the full details.
+-</p>
+-
+-<p>
+-<em>Updating</em>:
+-Projects that depend on the Go project's old makefile-based build
+-infrastructure (<code>Make.pkg</code>, <code>Make.cmd</code>, and so on) should
+-switch to using the <code>go</code> command for building Go code and, if
+-necessary, rewrite their makefiles to perform any auxiliary build tasks.
+-</p>
+-
+-<h2 id="cmd_cgo">The cgo command</h2>
+-
+-<p>
+-In Go 1, the <a href="/cmd/cgo">cgo command</a>
+-uses a different <code>_cgo_export.h</code>
+-file, which is generated for packages containing <code>//export</code> lines.
+-The <code>_cgo_export.h</code> file now begins with the C preamble comment,
+-so that exported function definitions can use types defined there.
+-This has the effect of compiling the preamble multiple times, so a
+-package using <code>//export</code> must not put function definitions
+-or variable initializations in the C preamble.
+-</p>
+-
+-<h2 id="releases">Packaged releases</h2>
+-
+-<p>
+-One of the most significant changes associated with Go 1 is the availability
+-of prepackaged, downloadable distributions.
+-They are available for many combinations of architecture and operating system
+-(including Windows) and the list will grow.
+-Installation details are described on the
+-<a href="/doc/install">Getting Started</a> page, while
+-the distributions themselves are listed on the
+-<a href="http://code.google.com/p/go/downloads/list">downloads page</a>.
+-
+-
+-</div>
+-
+-<div id="footer">
+-Build version go1.0.1.<br>
+-Except as <a href="http://code.google.com/policies.html#restrictions">noted</a>,
+-the content of this page is licensed under the
+-Creative Commons Attribution 3.0 License,
+-and code is licensed under a <a href="/LICENSE">BSD license</a>.<br>
+-<a href="/doc/tos.html">Terms of Service</a> | 
+-<a href="http://www.google.com/intl/en/privacy/privacy-policy.html">Privacy Policy</a>
+-</div>
+-
+-<script type="text/javascript">
+-(function() {
+-  var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true;
+-  ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";
+-  var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s);
+-})();
+-</script>
+-</body>
+-<script type="text/javascript">
+-  (function() {
+-    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+-    po.src = 'https://apis.google.com/js/plusone.js';
+-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+-  })();
+-</script>
+-</html>
+-
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/adoption01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/adoption01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/adoption01.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/adoption01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,194 +0,0 @@
+-#data
+-<a><p></a></p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <p>
+-|       <a>
+-
+-#data
+-<a>1<p>2</a>3</p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|     <p>
+-|       <a>
+-|         "2"
+-|       "3"
+-
+-#data
+-<a>1<button>2</a>3</button>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|     <button>
+-|       <a>
+-|         "2"
+-|       "3"
+-
+-#data
+-<a>1<b>2</a>3</b>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|       <b>
+-|         "2"
+-|     <b>
+-|       "3"
+-
+-#data
+-<a>1<div>2<div>3</a>4</div>5</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|     <div>
+-|       <a>
+-|         "2"
+-|       <div>
+-|         <a>
+-|           "3"
+-|         "4"
+-|       "5"
+-
+-#data
+-<table><a>1<p>2</a>3</p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|     <p>
+-|       <a>
+-|         "2"
+-|       "3"
+-|     <table>
+-
+-#data
+-<b><b><a><p></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <b>
+-|         <a>
+-|         <p>
+-|           <a>
+-
+-#data
+-<b><a><b><p></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <a>
+-|         <b>
+-|       <b>
+-|         <p>
+-|           <a>
+-
+-#data
+-<a><b><b><p></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|         <b>
+-|     <b>
+-|       <b>
+-|         <p>
+-|           <a>
+-
+-#data
+-<p>1<s id="A">2<b id="B">3</p>4</s>5</b>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "1"
+-|       <s>
+-|         id="A"
+-|         "2"
+-|         <b>
+-|           id="B"
+-|           "3"
+-|     <s>
+-|       id="A"
+-|       <b>
+-|         id="B"
+-|         "4"
+-|     <b>
+-|       id="B"
+-|       "5"
+-
+-#data
+-<table><a>1<td>2</td>3</table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "1"
+-|     <a>
+-|       "3"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "2"
+-
+-#data
+-<table>A<td>B</td>C</table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "AC"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "B"
+-
+-#data
+-<a><svg><tr><input></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <svg svg>
+-|         <svg tr>
+-|           <svg input>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/adoption02.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/adoption02.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/adoption02.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/adoption02.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,31 +0,0 @@
+-#data
+-<b>1<i>2<p>3</b>4
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "1"
+-|       <i>
+-|         "2"
+-|     <i>
+-|       <p>
+-|         <b>
+-|           "3"
+-|         "4"
+-
+-#data
+-<a><div><style></style><address><a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <div>
+-|       <a>
+-|         <style>
+-|       <address>
+-|         <a>
+-|         <a>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/comments01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/comments01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/comments01.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/comments01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,135 +0,0 @@
+-#data
+-FOO<!-- BAR -->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!-- BAR --!>BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!-- BAR --   >BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR --   >BAZ -->
+-
+-#data
+-FOO<!-- BAR -- <QUX> -- MUX -->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR -- <QUX> -- MUX  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!-- BAR -- <QUX> -- MUX --!>BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR -- <QUX> -- MUX  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!-- BAR -- <QUX> -- MUX -- >BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  BAR -- <QUX> -- MUX -- >BAZ -->
+-
+-#data
+-FOO<!---->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!--->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  -->
+-|     "BAZ"
+-
+-#data
+-FOO<!-->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!--  -->
+-|     "BAZ"
+-
+-#data
+-<?xml version="1.0">Hi
+-#errors
+-#document
+-| <!-- ?xml version="1.0" -->
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hi"
+-
+-#data
+-<?xml version="1.0">
+-#errors
+-#document
+-| <!-- ?xml version="1.0" -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<?xml version
+-#errors
+-#document
+-| <!-- ?xml version -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-FOO<!----->BAZ
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <!-- - -->
+-|     "BAZ"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/doctype01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/doctype01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/doctype01.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/doctype01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,370 +0,0 @@
+-#data
+-<!DOCTYPE html>Hello
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!dOctYpE HtMl>Hello
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPEhtml>Hello
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE>Hello
+-#errors
+-#document
+-| <!DOCTYPE >
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE >Hello
+-#errors
+-#document
+-| <!DOCTYPE >
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato >Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato taco>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato taco "ddd>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato sYstEM>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato sYstEM    >Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE   potato       sYstEM  ggg>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato SYSTEM taco  >Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato SYSTEM 'taco"'>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "" "taco"">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato SYSTEM "taco">Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "" "taco">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato SYSTEM "tai'co">Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "" "tai'co">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato SYSTEMtaco "ddd">Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato grass SYSTEM taco>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato pUbLIc>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato pUbLIc >Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato pUbLIcgoof>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato PUBLIC goof>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato PUBLIC "go'of">Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "go'of" "">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato PUBLIC 'go'of'>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "go" "">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato PUBLIC 'go:hh   of' >Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "go:hh   of" "">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE potato PUBLIC "W3C-//dfdf" SYSTEM ggg>Hello
+-#errors
+-#document
+-| <!DOCTYPE potato "W3C-//dfdf" "">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+-   "http://www.w3.org/TR/html4/strict.dtd">Hello
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE ...>Hello
+-#errors
+-#document
+-| <!DOCTYPE ...>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Hello"
+-
+-#data
+-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE root-element [SYSTEM OR PUBLIC FPI] "uri" [ 
+-<!-- internal declarations -->
+-]>
+-#errors
+-#document
+-| <!DOCTYPE root-element>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "]>"
+-
+-#data
+-<!DOCTYPE html PUBLIC
+-  "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
+-    "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
+-#errors
+-#document
+-| <!DOCTYPE html "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE HTML SYSTEM "http://www.w3.org/DTD/HTML4-strict.dtd"><body><b>Mine!</b></body>
+-#errors
+-#document
+-| <!DOCTYPE html "" "http://www.w3.org/DTD/HTML4-strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "Mine!"
+-
+-#data
+-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE HTML PUBLIC'-//W3C//DTD HTML 4.01//EN''http://www.w3.org/TR/html4/strict.dtd'>
+-#errors
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+-| <html>
+-|   <head>
+-|   <body>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/entities01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/entities01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/entities01.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/entities01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,603 +0,0 @@
+-#data
+-FOO&gt;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO>BAR"
+-
+-#data
+-FOO&gtBAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO>BAR"
+-
+-#data
+-FOO&gt BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO> BAR"
+-
+-#data
+-FOO&gt;;;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO>;;BAR"
+-
+-#data
+-I'm &notit; I tell you
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "I'm Â¬it; I tell you"
+-
+-#data
+-I'm &notin; I tell you
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "I'm â I tell you"
+-
+-#data
+-FOO& BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO& BAR"
+-
+-#data
+-FOO&<BAR>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&"
+-|     <bar>
+-
+-#data
+-FOO&&&&gt;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&&&>BAR"
+-
+-#data
+-FOO&#41;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO)BAR"
+-
+-#data
+-FOO&#x41;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOABAR"
+-
+-#data
+-FOO&#X41;BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOABAR"
+-
+-#data
+-FOO&#BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&#BAR"
+-
+-#data
+-FOO&#ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&#ZOO"
+-
+-#data
+-FOO&#xBAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂºR"
+-
+-#data
+-FOO&#xZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&#xZOO"
+-
+-#data
+-FOO&#XZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO&#XZOO"
+-
+-#data
+-FOO&#41BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO)BAR"
+-
+-#data
+-FOO&#x41BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOäºR"
+-
+-#data
+-FOO&#x41ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOAZOO"
+-
+-#data
+-FOO&#x0000;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#x0078;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOxZOO"
+-
+-#data
+-FOO&#x0079;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOyZOO"
+-
+-#data
+-FOO&#x0080;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ¬ZOO"
+-
+-#data
+-FOO&#x0081;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂZOO"
+-
+-#data
+-FOO&#x0082;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0083;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÆZOO"
+-
+-#data
+-FOO&#x0084;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0085;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâŠZOO"
+-
+-#data
+-FOO&#x0086;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ ZOO"
+-
+-#data
+-FOO&#x0087;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ¡ZOO"
+-
+-#data
+-FOO&#x0088;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOËZOO"
+-
+-#data
+-FOO&#x0089;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ°ZOO"
+-
+-#data
+-FOO&#x008A;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅ ZOO"
+-
+-#data
+-FOO&#x008B;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ¹ZOO"
+-
+-#data
+-FOO&#x008C;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅZOO"
+-
+-#data
+-FOO&#x008D;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂZOO"
+-
+-#data
+-FOO&#x008E;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅœZOO"
+-
+-#data
+-FOO&#x008F;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂZOO"
+-
+-#data
+-FOO&#x0090;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂZOO"
+-
+-#data
+-FOO&#x0091;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0092;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0093;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0094;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0095;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ¢ZOO"
+-
+-#data
+-FOO&#x0096;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0097;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâZOO"
+-
+-#data
+-FOO&#x0098;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOËZOO"
+-
+-#data
+-FOO&#x0099;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâ¢ZOO"
+-
+-#data
+-FOO&#x009A;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅ¡ZOO"
+-
+-#data
+-FOO&#x009B;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOâºZOO"
+-
+-#data
+-FOO&#x009C;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅZOO"
+-
+-#data
+-FOO&#x009D;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂZOO"
+-
+-#data
+-FOO&#x009E;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅŸZOO"
+-
+-#data
+-FOO&#x009F;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÅžZOO"
+-
+-#data
+-FOO&#x00A0;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOÂ ZOO"
+-
+-#data
+-FOO&#xD7FF;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOí¿ZOO"
+-
+-#data
+-FOO&#xD800;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#xD801;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#xDFFE;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#xDFFF;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#xE000;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOîZOO"
+-
+-#data
+-FOO&#x10FFFE;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOô¿ŸZOO"
+-
+-#data
+-FOO&#x1087D4;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOôZOO"
+-
+-#data
+-FOO&#x10FFFF;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOô¿¿ZOO"
+-
+-#data
+-FOO&#x110000;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+-
+-#data
+-FOO&#xFFFFFF;ZOO
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOOï¿œZOO"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/entities02.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/entities02.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/entities02.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/entities02.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,249 +0,0 @@
+-#data
+-<div bar="ZZ&gt;YY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ>YY"
+-
+-#data
+-<div bar="ZZ&"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&"
+-
+-#data
+-<div bar='ZZ&'></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&"
+-
+-#data
+-<div bar=ZZ&></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&"
+-
+-#data
+-<div bar="ZZ&gt=YY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&gt=YY"
+-
+-#data
+-<div bar="ZZ&gt0YY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&gt0YY"
+-
+-#data
+-<div bar="ZZ&gt9YY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&gt9YY"
+-
+-#data
+-<div bar="ZZ&gtaYY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&gtaYY"
+-
+-#data
+-<div bar="ZZ&gtZYY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&gtZYY"
+-
+-#data
+-<div bar="ZZ&gt YY"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ> YY"
+-
+-#data
+-<div bar="ZZ&gt"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ>"
+-
+-#data
+-<div bar='ZZ&gt'></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ>"
+-
+-#data
+-<div bar=ZZ&gt></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ>"
+-
+-#data
+-<div bar="ZZ&pound_id=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZÂ£_id=23"
+-
+-#data
+-<div bar="ZZ&prod_id=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&prod_id=23"
+-
+-#data
+-<div bar="ZZ&pound;_id=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZÂ£_id=23"
+-
+-#data
+-<div bar="ZZ&prod;_id=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZâ_id=23"
+-
+-#data
+-<div bar="ZZ&pound=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&pound=23"
+-
+-#data
+-<div bar="ZZ&prod=23"></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       bar="ZZ&prod=23"
+-
+-#data
+-<div>ZZ&pound_id=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZÂ£_id=23"
+-
+-#data
+-<div>ZZ&prod_id=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZ&prod_id=23"
+-
+-#data
+-<div>ZZ&pound;_id=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZÂ£_id=23"
+-
+-#data
+-<div>ZZ&prod;_id=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZâ_id=23"
+-
+-#data
+-<div>ZZ&pound=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZÂ£=23"
+-
+-#data
+-<div>ZZ&prod=23</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "ZZ&prod=23"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/html5test-com.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/html5test-com.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/html5test-com.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/html5test-com.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,246 +0,0 @@
+-#data
+-<div<div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div<div>
+-
+-#data
+-<div foo<bar=''>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       foo<bar=""
+-
+-#data
+-<div foo=`bar`>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       foo="`bar`"
+-
+-#data
+-<div \"foo=''>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       \"foo=""
+-
+-#data
+-<a href='\nbar'></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="\nbar"
+-
+-#data
+-<!DOCTYPE html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-&lang;&rang;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "âšâ©"
+-
+-#data
+-&apos;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "'"
+-
+-#data
+-&ImaginaryI;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "â
+"
+-
+-#data
+-&Kopf;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ð"
+-
+-#data
+-&notinva;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "â"
+-
+-#data
+-<?import namespace="foo" implementation="#bar">
+-#errors
+-#document
+-| <!-- ?import namespace="foo" implementation="#bar" -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!--foo--bar-->
+-#errors
+-#document
+-| <!-- foo--bar -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<![CDATA[x]]>
+-#errors
+-#document
+-| <!-- [CDATA[x]] -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<textarea><!--</textarea>--></textarea>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<!--"
+-|     "-->"
+-
+-#data
+-<textarea><!--</textarea>-->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<!--"
+-|     "-->"
+-
+-#data
+-<style><!--</style>--></style>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<style><!--</style>-->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<ul><li>A </li> <li>B</li></ul>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ul>
+-|       <li>
+-|         "A "
+-|       " "
+-|       <li>
+-|         "B"
+-
+-#data
+-<table><form><input type=hidden><input></form><div></div></table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-|     <div>
+-|     <table>
+-|       <form>
+-|       <input>
+-|         type="hidden"
+-
+-#data
+-<i>A<b>B<p></i>C</b>D
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "A"
+-|       <b>
+-|         "B"
+-|     <b>
+-|     <p>
+-|       <b>
+-|         <i>
+-|         "C"
+-|       "D"
+-
+-#data
+-<div></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-
+-#data
+-<svg></svg>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<math></math>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/inbody01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/inbody01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/inbody01.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/inbody01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,43 +0,0 @@
+-#data
+-<button>1</foo>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <button>
+-|       "1"
+-
+-#data
+-<foo>1<p>2</foo>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       "1"
+-|       <p>
+-|         "2"
+-
+-#data
+-<dd>1</foo>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dd>
+-|       "1"
+-
+-#data
+-<foo>1<dd>2</foo>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       "1"
+-|       <dd>
+-|         "2"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/isindex.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/isindex.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/isindex.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/isindex.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,40 +0,0 @@
+-#data
+-<isindex>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <hr>
+-|       <label>
+-|         "This is a searchable index. Enter search keywords: "
+-|         <input>
+-|           name="isindex"
+-|       <hr>
+-
+-#data
+-<isindex name="A" action="B" prompt="C" foo="D">
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       action="B"
+-|       <hr>
+-|       <label>
+-|         "C"
+-|         <input>
+-|           foo="D"
+-|           name="isindex"
+-|       <hr>
+-
+-#data
+-<form><isindex>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/pending-spec-changes.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/pending-spec-changes.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/pending-spec-changes.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/pending-spec-changes.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,52 +0,0 @@
+-#data
+-<input type="hidden"><frameset>
+-#errors
+-21: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-31: âframesetâ start tag seen.
+-31: End of file seen and there were open elements.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><table><caption><svg>foo</table>bar
+-#errors
+-47: End tag âtableâ did not match the name of the current open element (âsvgâ).
+-47: âtableâ closed but âcaptionâ was still open.
+-47: End tag âtableâ seen, but there were open elements.
+-36: Unclosed element âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <svg svg>
+-|           "foo"
+-|     "bar"
+-
+-#data
+-<table><tr><td><svg><desc><td></desc><circle>
+-#errors
+-7: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-30: A table cell was implicitly closed, but there were open elements.
+-26: Unclosed element âdescâ.
+-20: Unclosed element âsvgâ.
+-37: Stray end tag âdescâ.
+-45: End of file seen and there were open elements.
+-45: Unclosed element âcircleâ.
+-7: Unclosed element âtableâ.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg desc>
+-|           <td>
+-|             <circle>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/README gcc-4.8.1/libgo/go/exp/html/testdata/webkit/README
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/README	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/README	1969-12-31 18:00:00.000000000 -0600
+@@ -1,28 +0,0 @@
+-The *.dat files in this directory are copied from The WebKit Open Source
+-Project, specifically $WEBKITROOT/LayoutTests/html5lib/resources.
+-WebKit is licensed under a BSD style license.
+-http://webkit.org/coding/bsd-license.html says:
+-
+-Copyright (C) 2009 Apple Inc. 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 APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
+-
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scriptdata01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scriptdata01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scriptdata01.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scriptdata01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,308 +0,0 @@
+-#data
+-FOO<script>'Hello'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'Hello'"
+-|     "BAR"
+-
+-#data
+-FOO<script></script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|     "BAR"
+-
+-#data
+-FOO<script></script >BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|     "BAR"
+-
+-#data
+-FOO<script></script/>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|     "BAR"
+-
+-#data
+-FOO<script></script/ >BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|     "BAR"
+-
+-#data
+-FOO<script type="text/plain"></scriptx>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "</scriptx>BAR"
+-
+-#data
+-FOO<script></script foo=">" dd>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|     "BAR"
+-
+-#data
+-FOO<script>'<'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!-'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!--'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!--'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!---'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!---'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!-->'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-->'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!-->'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-->'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!-- potato'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-- potato'"
+-|     "BAR"
+-
+-#data
+-FOO<script>'<!-- <sCrIpt'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-- <sCrIpt'"
+-|     "BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt>'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt>'</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt> -'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt> -'</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt> --'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt> --'</script>BAR"
+-
+-#data
+-FOO<script>'<!-- <sCrIpt> -->'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       "'<!-- <sCrIpt> -->'"
+-|     "BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt> --!>'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt> --!>'</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt> -- >'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt> -- >'</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt '</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt '</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt/'</script>BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt\'</script>BAR
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt\'"
+-|     "BAR"
+-
+-#data
+-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR</script>QUX
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "FOO"
+-|     <script>
+-|       type="text/plain"
+-|       "'<!-- <sCrIpt/'</script>BAR"
+-|     "QUX"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scripted/adoption01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scripted/adoption01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scripted/adoption01.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scripted/adoption01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,15 +0,0 @@
+-#data
+-<p><b id="A"><script>document.getElementById("A").id = "B"</script></p>TEXT</b>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|         id="B"
+-|         <script>
+-|           "document.getElementById("A").id = "B""
+-|     <b>
+-|       id="A"
+-|       "TEXT"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scripted/webkit01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scripted/webkit01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/scripted/webkit01.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/scripted/webkit01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,28 +0,0 @@
+-#data
+-1<script>document.write("2")</script>3
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "1"
+-|     <script>
+-|       "document.write("2")"
+-|     "23"
+-
+-#data
+-1<script>document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")</script>4
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "1"
+-|     <script>
+-|       "document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")"
+-|     <script>
+-|       "document.write('2')"
+-|     "2"
+-|     <script>
+-|       "document.write('3')"
+-|     "34"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tables01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tables01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tables01.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tables01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,212 +0,0 @@
+-#data
+-<table><th>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <th>
+-
+-#data
+-<table><td>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><col foo='bar'>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <colgroup>
+-|         <col>
+-|           foo="bar"
+-
+-#data
+-<table><colgroup></html>foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "foo"
+-|     <table>
+-|       <colgroup>
+-
+-#data
+-<table></table><p>foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|     <p>
+-|       "foo"
+-
+-#data
+-<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr><td>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><select><option>3</select></table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|         "3"
+-|     <table>
+-
+-#data
+-<table><select><table></table></select></table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <table>
+-|     <table>
+-
+-#data
+-<table><select></table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <table>
+-
+-#data
+-<table><select><option>A<tr><td>B</td></tr></table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|         "A"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "B"
+-
+-#data
+-<table><td></body></caption></col></colgroup></html>foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "foo"
+-
+-#data
+-<table><td>A</table>B
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "A"
+-|     "B"
+-
+-#data
+-<table><tr><caption>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|       <caption>
+-
+-#data
+-<table><tr></body></caption></col></colgroup></html></td></th><td>foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "foo"
+-
+-#data
+-<table><td><tr>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|         <tr>
+-
+-#data
+-<table><td><button><td>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <button>
+-|           <td>
+-
+-#data
+-<table><tr><td><svg><desc><td>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg desc>
+-|           <td>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests10.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests10.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests10.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests10.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,799 +0,0 @@
+-#data
+-<!DOCTYPE html><svg></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<!DOCTYPE html><svg></svg><![CDATA[a]]>
+-#errors
+-29: Bogus comment
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|     <!-- [CDATA[a]] -->
+-
+-#data
+-<!DOCTYPE html><body><svg></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<!DOCTYPE html><body><select><svg></svg></select>
+-#errors
+-35: Stray âsvgâ start tag.
+-42: Stray end tag âsvgâ
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!DOCTYPE html><body><select><option><svg></svg></option></select>
+-#errors
+-43: Stray âsvgâ start tag.
+-50: Stray end tag âsvgâ
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-
+-#data
+-<!DOCTYPE html><body><table><svg></svg></table>
+-#errors
+-34: Start tag âsvgâ seen in âtableâ.
+-41: Stray end tag âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><svg><g>foo</g></svg></table>
+-#errors
+-34: Start tag âsvgâ seen in âtableâ.
+-46: Stray end tag âgâ.
+-53: Stray end tag âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><svg><g>foo</g><g>bar</g></svg></table>
+-#errors
+-34: Start tag âsvgâ seen in âtableâ.
+-46: Stray end tag âgâ.
+-58: Stray end tag âgâ.
+-65: Stray end tag âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><svg><g>foo</g><g>bar</g></svg></tbody></table>
+-#errors
+-41: Start tag âsvgâ seen in âtableâ.
+-53: Stray end tag âgâ.
+-65: Stray end tag âgâ.
+-72: Stray end tag âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <table>
+-|       <tbody>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><svg><g>foo</g><g>bar</g></svg></tr></tbody></table>
+-#errors
+-45: Start tag âsvgâ seen in âtableâ.
+-57: Stray end tag âgâ.
+-69: Stray end tag âgâ.
+-76: Stray end tag âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg></td></tr></tbody></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg g>
+-|                 "foo"
+-|               <svg g>
+-|                 "bar"
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg><p>baz</td></tr></tbody></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg g>
+-|                 "foo"
+-|               <svg g>
+-|                 "bar"
+-|             <p>
+-|               "baz"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g></svg><p>baz</caption></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <svg svg>
+-|           <svg g>
+-|             "foo"
+-|           <svg g>
+-|             "bar"
+-|         <p>
+-|           "baz"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
+-#errors
+-70: HTML start tag âpâ in a foreign namespace context.
+-81: âtableâ closed but âcaptionâ was still open.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <svg svg>
+-|           <svg g>
+-|             "foo"
+-|           <svg g>
+-|             "bar"
+-|         <p>
+-|           "baz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g>baz</table><p>quux
+-#errors
+-78: âtableâ closed but âcaptionâ was still open.
+-78: Unclosed elements on stack.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <svg svg>
+-|           <svg g>
+-|             "foo"
+-|           <svg g>
+-|             "bar"
+-|           "baz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><colgroup><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
+-#errors
+-44: Start tag âsvgâ seen in âtableâ.
+-56: Stray end tag âgâ.
+-68: Stray end tag âgâ.
+-71: HTML start tag âpâ in a foreign namespace context.
+-71: Start tag âpâ seen in âtableâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-|     <table>
+-|       <colgroup>
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><tr><td><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
+-#errors
+-50: Stray âsvgâ start tag.
+-54: Stray âgâ start tag.
+-62: Stray end tag âgâ
+-66: Stray âgâ start tag.
+-74: Stray end tag âgâ
+-77: Stray âpâ start tag.
+-88: âtableâ end tag with âselectâ open.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <select>
+-|               "foobarbaz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
+-#errors
+-36: Start tag âselectâ seen in âtableâ.
+-42: Stray âsvgâ start tag.
+-46: Stray âgâ start tag.
+-54: Stray end tag âgâ
+-58: Stray âgâ start tag.
+-66: Stray end tag âgâ
+-69: Stray âpâ start tag.
+-80: âtableâ end tag with âselectâ open.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       "foobarbaz"
+-|     <table>
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body></body></html><svg><g>foo</g><g>bar</g><p>baz
+-#errors
+-41: Stray âsvgâ start tag.
+-68: HTML start tag âpâ in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-
+-#data
+-<!DOCTYPE html><body></body><svg><g>foo</g><g>bar</g><p>baz
+-#errors
+-34: Stray âsvgâ start tag.
+-61: HTML start tag âpâ in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg g>
+-|         "foo"
+-|       <svg g>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-
+-#data
+-<!DOCTYPE html><frameset><svg><g></g><g></g><p><span>
+-#errors
+-31: Stray âsvgâ start tag.
+-35: Stray âgâ start tag.
+-40: Stray end tag âgâ
+-44: Stray âgâ start tag.
+-49: Stray end tag âgâ
+-52: Stray âpâ start tag.
+-58: Stray âspanâ start tag.
+-58: End of file seen and there were open elements.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><frameset></frameset><svg><g></g><g></g><p><span>
+-#errors
+-42: Stray âsvgâ start tag.
+-46: Stray âgâ start tag.
+-51: Stray end tag âgâ
+-55: Stray âgâ start tag.
+-60: Stray end tag âgâ
+-63: Stray âpâ start tag.
+-69: Stray âspanâ start tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo><svg xlink:href=foo></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     <svg svg>
+-|       xlink href="foo"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo></g></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <svg svg>
+-|       <svg g>
+-|         xlink href="foo"
+-|         xml lang="en"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo /></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <svg svg>
+-|       <svg g>
+-|         xlink href="foo"
+-|         xml lang="en"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo />bar</svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <svg svg>
+-|       <svg g>
+-|         xlink href="foo"
+-|         xml lang="en"
+-|       "bar"
+-
+-#data
+-<svg></path>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<div><svg></div>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|     "a"
+-
+-#data
+-<div><svg><path></div>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|         <svg path>
+-|     "a"
+-
+-#data
+-<div><svg><path></svg><path>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|         <svg path>
+-|       <path>
+-
+-#data
+-<div><svg><path><foreignObject><math></div>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|         <svg path>
+-|           <svg foreignObject>
+-|             <math math>
+-|               "a"
+-
+-#data
+-<div><svg><path><foreignObject><p></div>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|         <svg path>
+-|           <svg foreignObject>
+-|             <p>
+-|               "a"
+-
+-#data
+-<!DOCTYPE html><svg><desc><div><svg><ul>a
+-#errors
+-40: HTML start tag âulâ in a foreign namespace context.
+-41: End of file in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg desc>
+-|         <div>
+-|           <svg svg>
+-|           <ul>
+-|             "a"
+-
+-#data
+-<!DOCTYPE html><svg><desc><svg><ul>a
+-#errors
+-35: HTML start tag âulâ in a foreign namespace context.
+-36: End of file in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg desc>
+-|         <svg svg>
+-|         <ul>
+-|           "a"
+-
+-#data
+-<!DOCTYPE html><p><svg><desc><p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <svg svg>
+-|         <svg desc>
+-|           <p>
+-
+-#data
+-<!DOCTYPE html><p><svg><title><p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <svg svg>
+-|         <svg title>
+-|           <p>
+-
+-#data
+-<div><svg><path><foreignObject><p></foreignObject><p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <svg svg>
+-|         <svg path>
+-|           <svg foreignObject>
+-|             <p>
+-|             <p>
+-
+-#data
+-<math><mi><div><object><div><span></span></div></object></div></mi><mi>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         <div>
+-|           <object>
+-|             <div>
+-|               <span>
+-|       <math mi>
+-
+-#data
+-<math><mi><svg><foreignObject><div><div></div></div></foreignObject></svg></mi><mi>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         <svg svg>
+-|           <svg foreignObject>
+-|             <div>
+-|               <div>
+-|       <math mi>
+-
+-#data
+-<svg><script></script><path>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg script>
+-|       <svg path>
+-
+-#data
+-<table><svg></svg><tr>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<math><mi><mglyph>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         <math mglyph>
+-
+-#data
+-<math><mi><malignmark>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         <math malignmark>
+-
+-#data
+-<math><mo><mglyph>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mo>
+-|         <math mglyph>
+-
+-#data
+-<math><mo><malignmark>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mo>
+-|         <math malignmark>
+-
+-#data
+-<math><mn><mglyph>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mn>
+-|         <math mglyph>
+-
+-#data
+-<math><mn><malignmark>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mn>
+-|         <math malignmark>
+-
+-#data
+-<math><ms><mglyph>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math ms>
+-|         <math mglyph>
+-
+-#data
+-<math><ms><malignmark>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math ms>
+-|         <math malignmark>
+-
+-#data
+-<math><mtext><mglyph>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mtext>
+-|         <math mglyph>
+-
+-#data
+-<math><mtext><malignmark>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mtext>
+-|         <math malignmark>
+-
+-#data
+-<math><annotation-xml><svg></svg></annotation-xml><mi>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         <svg svg>
+-|       <math mi>
+-
+-#data
+-<math><annotation-xml><svg><foreignObject><div><math><mi></mi></math><span></span></div></foreignObject><path></path></svg></annotation-xml><mi>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         <svg svg>
+-|           <svg foreignObject>
+-|             <div>
+-|               <math math>
+-|                 <math mi>
+-|               <span>
+-|           <svg path>
+-|       <math mi>
+-
+-#data
+-<math><annotation-xml><svg><foreignObject><math><mi><svg></svg></mi><mo></mo></math><span></span></foreignObject><path></path></svg></annotation-xml><mi>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         <svg svg>
+-|           <svg foreignObject>
+-|             <math math>
+-|               <math mi>
+-|                 <svg svg>
+-|               <math mo>
+-|             <span>
+-|           <svg path>
+-|       <math mi>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests11.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests11.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests11.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests11.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,482 +0,0 @@
+-#data
+-<!DOCTYPE html><body><svg attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       attributeName=""
+-|       attributeType=""
+-|       baseFrequency=""
+-|       baseProfile=""
+-|       calcMode=""
+-|       clipPathUnits=""
+-|       contentScriptType=""
+-|       contentStyleType=""
+-|       diffuseConstant=""
+-|       edgeMode=""
+-|       externalResourcesRequired=""
+-|       filterRes=""
+-|       filterUnits=""
+-|       glyphRef=""
+-|       gradientTransform=""
+-|       gradientUnits=""
+-|       kernelMatrix=""
+-|       kernelUnitLength=""
+-|       keyPoints=""
+-|       keySplines=""
+-|       keyTimes=""
+-|       lengthAdjust=""
+-|       limitingConeAngle=""
+-|       markerHeight=""
+-|       markerUnits=""
+-|       markerWidth=""
+-|       maskContentUnits=""
+-|       maskUnits=""
+-|       numOctaves=""
+-|       pathLength=""
+-|       patternContentUnits=""
+-|       patternTransform=""
+-|       patternUnits=""
+-|       pointsAtX=""
+-|       pointsAtY=""
+-|       pointsAtZ=""
+-|       preserveAlpha=""
+-|       preserveAspectRatio=""
+-|       primitiveUnits=""
+-|       refX=""
+-|       refY=""
+-|       repeatCount=""
+-|       repeatDur=""
+-|       requiredExtensions=""
+-|       requiredFeatures=""
+-|       specularConstant=""
+-|       specularExponent=""
+-|       spreadMethod=""
+-|       startOffset=""
+-|       stdDeviation=""
+-|       stitchTiles=""
+-|       surfaceScale=""
+-|       systemLanguage=""
+-|       tableValues=""
+-|       targetX=""
+-|       targetY=""
+-|       textLength=""
+-|       viewBox=""
+-|       viewTarget=""
+-|       xChannelSelector=""
+-|       yChannelSelector=""
+-|       zoomAndPan=""
+-
+-#data
+-<!DOCTYPE html><BODY><SVG ATTRIBUTENAME='' ATTRIBUTETYPE='' BASEFREQUENCY='' BASEPROFILE='' CALCMODE='' CLIPPATHUNITS='' CONTENTSCRIPTTYPE='' CONTENTSTYLETYPE='' DIFFUSECONSTANT='' EDGEMODE='' EXTERNALRESOURCESREQUIRED='' FILTERRES='' FILTERUNITS='' GLYPHREF='' GRADIENTTRANSFORM='' GRADIENTUNITS='' KERNELMATRIX='' KERNELUNITLENGTH='' KEYPOINTS='' KEYSPLINES='' KEYTIMES='' LENGTHADJUST='' LIMITINGCONEANGLE='' MARKERHEIGHT='' MARKERUNITS='' MARKERWIDTH='' MASKCONTENTUNITS='' MASKUNITS='' NUMOCTAVES='' PATHLENGTH='' PATTERNCONTENTUNITS='' PATTERNTRANSFORM='' PATTERNUNITS='' POINTSATX='' POINTSATY='' POINTSATZ='' PRESERVEALPHA='' PRESERVEASPECTRATIO='' PRIMITIVEUNITS='' REFX='' REFY='' REPEATCOUNT='' REPEATDUR='' REQUIREDEXTENSIONS='' REQUIREDFEATURES='' SPECULARCONSTANT='' SPECULAREXPONENT='' SPREADMETHOD='' STARTOFFSET='' STDDEVIATION='' STITCHTILES='' SURFACESCALE='' SYSTEMLANGUAGE='' TABLEVALUES='' TARGETX='' TARGETY='' TEXTLENGTH='' VIEWBOX='' VIEWTARGET='' XCHANNELSELECTOR='' YCHANNELSELECTOR='' ZOOMANDPAN=''></SVG>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       attributeName=""
+-|       attributeType=""
+-|       baseFrequency=""
+-|       baseProfile=""
+-|       calcMode=""
+-|       clipPathUnits=""
+-|       contentScriptType=""
+-|       contentStyleType=""
+-|       diffuseConstant=""
+-|       edgeMode=""
+-|       externalResourcesRequired=""
+-|       filterRes=""
+-|       filterUnits=""
+-|       glyphRef=""
+-|       gradientTransform=""
+-|       gradientUnits=""
+-|       kernelMatrix=""
+-|       kernelUnitLength=""
+-|       keyPoints=""
+-|       keySplines=""
+-|       keyTimes=""
+-|       lengthAdjust=""
+-|       limitingConeAngle=""
+-|       markerHeight=""
+-|       markerUnits=""
+-|       markerWidth=""
+-|       maskContentUnits=""
+-|       maskUnits=""
+-|       numOctaves=""
+-|       pathLength=""
+-|       patternContentUnits=""
+-|       patternTransform=""
+-|       patternUnits=""
+-|       pointsAtX=""
+-|       pointsAtY=""
+-|       pointsAtZ=""
+-|       preserveAlpha=""
+-|       preserveAspectRatio=""
+-|       primitiveUnits=""
+-|       refX=""
+-|       refY=""
+-|       repeatCount=""
+-|       repeatDur=""
+-|       requiredExtensions=""
+-|       requiredFeatures=""
+-|       specularConstant=""
+-|       specularExponent=""
+-|       spreadMethod=""
+-|       startOffset=""
+-|       stdDeviation=""
+-|       stitchTiles=""
+-|       surfaceScale=""
+-|       systemLanguage=""
+-|       tableValues=""
+-|       targetX=""
+-|       targetY=""
+-|       textLength=""
+-|       viewBox=""
+-|       viewTarget=""
+-|       xChannelSelector=""
+-|       yChannelSelector=""
+-|       zoomAndPan=""
+-
+-#data
+-<!DOCTYPE html><body><svg attributename='' attributetype='' basefrequency='' baseprofile='' calcmode='' clippathunits='' contentscripttype='' contentstyletype='' diffuseconstant='' edgemode='' externalresourcesrequired='' filterres='' filterunits='' glyphref='' gradienttransform='' gradientunits='' kernelmatrix='' kernelunitlength='' keypoints='' keysplines='' keytimes='' lengthadjust='' limitingconeangle='' markerheight='' markerunits='' markerwidth='' maskcontentunits='' maskunits='' numoctaves='' pathlength='' patterncontentunits='' patterntransform='' patternunits='' pointsatx='' pointsaty='' pointsatz='' preservealpha='' preserveaspectratio='' primitiveunits='' refx='' refy='' repeatcount='' repeatdur='' requiredextensions='' requiredfeatures='' specularconstant='' specularexponent='' spreadmethod='' startoffset='' stddeviation='' stitchtiles='' surfacescale='' systemlanguage='' tablevalues='' targetx='' targety='' textlength='' viewbox='' viewtarget='' xchannelselector='' ychannelselector='' zoomandpan=''></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       attributeName=""
+-|       attributeType=""
+-|       baseFrequency=""
+-|       baseProfile=""
+-|       calcMode=""
+-|       clipPathUnits=""
+-|       contentScriptType=""
+-|       contentStyleType=""
+-|       diffuseConstant=""
+-|       edgeMode=""
+-|       externalResourcesRequired=""
+-|       filterRes=""
+-|       filterUnits=""
+-|       glyphRef=""
+-|       gradientTransform=""
+-|       gradientUnits=""
+-|       kernelMatrix=""
+-|       kernelUnitLength=""
+-|       keyPoints=""
+-|       keySplines=""
+-|       keyTimes=""
+-|       lengthAdjust=""
+-|       limitingConeAngle=""
+-|       markerHeight=""
+-|       markerUnits=""
+-|       markerWidth=""
+-|       maskContentUnits=""
+-|       maskUnits=""
+-|       numOctaves=""
+-|       pathLength=""
+-|       patternContentUnits=""
+-|       patternTransform=""
+-|       patternUnits=""
+-|       pointsAtX=""
+-|       pointsAtY=""
+-|       pointsAtZ=""
+-|       preserveAlpha=""
+-|       preserveAspectRatio=""
+-|       primitiveUnits=""
+-|       refX=""
+-|       refY=""
+-|       repeatCount=""
+-|       repeatDur=""
+-|       requiredExtensions=""
+-|       requiredFeatures=""
+-|       specularConstant=""
+-|       specularExponent=""
+-|       spreadMethod=""
+-|       startOffset=""
+-|       stdDeviation=""
+-|       stitchTiles=""
+-|       surfaceScale=""
+-|       systemLanguage=""
+-|       tableValues=""
+-|       targetX=""
+-|       targetY=""
+-|       textLength=""
+-|       viewBox=""
+-|       viewTarget=""
+-|       xChannelSelector=""
+-|       yChannelSelector=""
+-|       zoomAndPan=""
+-
+-#data
+-<!DOCTYPE html><body><math attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       attributename=""
+-|       attributetype=""
+-|       basefrequency=""
+-|       baseprofile=""
+-|       calcmode=""
+-|       clippathunits=""
+-|       contentscripttype=""
+-|       contentstyletype=""
+-|       diffuseconstant=""
+-|       edgemode=""
+-|       externalresourcesrequired=""
+-|       filterres=""
+-|       filterunits=""
+-|       glyphref=""
+-|       gradienttransform=""
+-|       gradientunits=""
+-|       kernelmatrix=""
+-|       kernelunitlength=""
+-|       keypoints=""
+-|       keysplines=""
+-|       keytimes=""
+-|       lengthadjust=""
+-|       limitingconeangle=""
+-|       markerheight=""
+-|       markerunits=""
+-|       markerwidth=""
+-|       maskcontentunits=""
+-|       maskunits=""
+-|       numoctaves=""
+-|       pathlength=""
+-|       patterncontentunits=""
+-|       patterntransform=""
+-|       patternunits=""
+-|       pointsatx=""
+-|       pointsaty=""
+-|       pointsatz=""
+-|       preservealpha=""
+-|       preserveaspectratio=""
+-|       primitiveunits=""
+-|       refx=""
+-|       refy=""
+-|       repeatcount=""
+-|       repeatdur=""
+-|       requiredextensions=""
+-|       requiredfeatures=""
+-|       specularconstant=""
+-|       specularexponent=""
+-|       spreadmethod=""
+-|       startoffset=""
+-|       stddeviation=""
+-|       stitchtiles=""
+-|       surfacescale=""
+-|       systemlanguage=""
+-|       tablevalues=""
+-|       targetx=""
+-|       targety=""
+-|       textlength=""
+-|       viewbox=""
+-|       viewtarget=""
+-|       xchannelselector=""
+-|       ychannelselector=""
+-|       zoomandpan=""
+-
+-#data
+-<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg altGlyph>
+-|       <svg altGlyphDef>
+-|       <svg altGlyphItem>
+-|       <svg animateColor>
+-|       <svg animateMotion>
+-|       <svg animateTransform>
+-|       <svg clipPath>
+-|       <svg feBlend>
+-|       <svg feColorMatrix>
+-|       <svg feComponentTransfer>
+-|       <svg feComposite>
+-|       <svg feConvolveMatrix>
+-|       <svg feDiffuseLighting>
+-|       <svg feDisplacementMap>
+-|       <svg feDistantLight>
+-|       <svg feFlood>
+-|       <svg feFuncA>
+-|       <svg feFuncB>
+-|       <svg feFuncG>
+-|       <svg feFuncR>
+-|       <svg feGaussianBlur>
+-|       <svg feImage>
+-|       <svg feMerge>
+-|       <svg feMergeNode>
+-|       <svg feMorphology>
+-|       <svg feOffset>
+-|       <svg fePointLight>
+-|       <svg feSpecularLighting>
+-|       <svg feSpotLight>
+-|       <svg feTile>
+-|       <svg feTurbulence>
+-|       <svg foreignObject>
+-|       <svg glyphRef>
+-|       <svg linearGradient>
+-|       <svg radialGradient>
+-|       <svg textPath>
+-
+-#data
+-<!DOCTYPE html><body><svg><altglyph /><altglyphdef /><altglyphitem /><animatecolor /><animatemotion /><animatetransform /><clippath /><feblend /><fecolormatrix /><fecomponenttransfer /><fecomposite /><feconvolvematrix /><fediffuselighting /><fedisplacementmap /><fedistantlight /><feflood /><fefunca /><fefuncb /><fefuncg /><fefuncr /><fegaussianblur /><feimage /><femerge /><femergenode /><femorphology /><feoffset /><fepointlight /><fespecularlighting /><fespotlight /><fetile /><feturbulence /><foreignobject /><glyphref /><lineargradient /><radialgradient /><textpath /></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg altGlyph>
+-|       <svg altGlyphDef>
+-|       <svg altGlyphItem>
+-|       <svg animateColor>
+-|       <svg animateMotion>
+-|       <svg animateTransform>
+-|       <svg clipPath>
+-|       <svg feBlend>
+-|       <svg feColorMatrix>
+-|       <svg feComponentTransfer>
+-|       <svg feComposite>
+-|       <svg feConvolveMatrix>
+-|       <svg feDiffuseLighting>
+-|       <svg feDisplacementMap>
+-|       <svg feDistantLight>
+-|       <svg feFlood>
+-|       <svg feFuncA>
+-|       <svg feFuncB>
+-|       <svg feFuncG>
+-|       <svg feFuncR>
+-|       <svg feGaussianBlur>
+-|       <svg feImage>
+-|       <svg feMerge>
+-|       <svg feMergeNode>
+-|       <svg feMorphology>
+-|       <svg feOffset>
+-|       <svg fePointLight>
+-|       <svg feSpecularLighting>
+-|       <svg feSpotLight>
+-|       <svg feTile>
+-|       <svg feTurbulence>
+-|       <svg foreignObject>
+-|       <svg glyphRef>
+-|       <svg linearGradient>
+-|       <svg radialGradient>
+-|       <svg textPath>
+-
+-#data
+-<!DOCTYPE html><BODY><SVG><ALTGLYPH /><ALTGLYPHDEF /><ALTGLYPHITEM /><ANIMATECOLOR /><ANIMATEMOTION /><ANIMATETRANSFORM /><CLIPPATH /><FEBLEND /><FECOLORMATRIX /><FECOMPONENTTRANSFER /><FECOMPOSITE /><FECONVOLVEMATRIX /><FEDIFFUSELIGHTING /><FEDISPLACEMENTMAP /><FEDISTANTLIGHT /><FEFLOOD /><FEFUNCA /><FEFUNCB /><FEFUNCG /><FEFUNCR /><FEGAUSSIANBLUR /><FEIMAGE /><FEMERGE /><FEMERGENODE /><FEMORPHOLOGY /><FEOFFSET /><FEPOINTLIGHT /><FESPECULARLIGHTING /><FESPOTLIGHT /><FETILE /><FETURBULENCE /><FOREIGNOBJECT /><GLYPHREF /><LINEARGRADIENT /><RADIALGRADIENT /><TEXTPATH /></SVG>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg altGlyph>
+-|       <svg altGlyphDef>
+-|       <svg altGlyphItem>
+-|       <svg animateColor>
+-|       <svg animateMotion>
+-|       <svg animateTransform>
+-|       <svg clipPath>
+-|       <svg feBlend>
+-|       <svg feColorMatrix>
+-|       <svg feComponentTransfer>
+-|       <svg feComposite>
+-|       <svg feConvolveMatrix>
+-|       <svg feDiffuseLighting>
+-|       <svg feDisplacementMap>
+-|       <svg feDistantLight>
+-|       <svg feFlood>
+-|       <svg feFuncA>
+-|       <svg feFuncB>
+-|       <svg feFuncG>
+-|       <svg feFuncR>
+-|       <svg feGaussianBlur>
+-|       <svg feImage>
+-|       <svg feMerge>
+-|       <svg feMergeNode>
+-|       <svg feMorphology>
+-|       <svg feOffset>
+-|       <svg fePointLight>
+-|       <svg feSpecularLighting>
+-|       <svg feSpotLight>
+-|       <svg feTile>
+-|       <svg feTurbulence>
+-|       <svg foreignObject>
+-|       <svg glyphRef>
+-|       <svg linearGradient>
+-|       <svg radialGradient>
+-|       <svg textPath>
+-
+-#data
+-<!DOCTYPE html><body><math><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math altglyph>
+-|       <math altglyphdef>
+-|       <math altglyphitem>
+-|       <math animatecolor>
+-|       <math animatemotion>
+-|       <math animatetransform>
+-|       <math clippath>
+-|       <math feblend>
+-|       <math fecolormatrix>
+-|       <math fecomponenttransfer>
+-|       <math fecomposite>
+-|       <math feconvolvematrix>
+-|       <math fediffuselighting>
+-|       <math fedisplacementmap>
+-|       <math fedistantlight>
+-|       <math feflood>
+-|       <math fefunca>
+-|       <math fefuncb>
+-|       <math fefuncg>
+-|       <math fefuncr>
+-|       <math fegaussianblur>
+-|       <math feimage>
+-|       <math femerge>
+-|       <math femergenode>
+-|       <math femorphology>
+-|       <math feoffset>
+-|       <math fepointlight>
+-|       <math fespecularlighting>
+-|       <math fespotlight>
+-|       <math fetile>
+-|       <math feturbulence>
+-|       <math foreignobject>
+-|       <math glyphref>
+-|       <math lineargradient>
+-|       <math radialgradient>
+-|       <math textpath>
+-
+-#data
+-<!DOCTYPE html><body><svg><solidColor /></svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg solidcolor>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests12.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests12.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests12.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests12.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,62 +0,0 @@
+-#data
+-<!DOCTYPE html><body><p>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "foo"
+-|       <math math>
+-|         <math mtext>
+-|           <i>
+-|             "baz"
+-|         <math annotation-xml>
+-|           <svg svg>
+-|             <svg desc>
+-|               <b>
+-|                 "eggs"
+-|             <svg g>
+-|               <svg foreignObject>
+-|                 <p>
+-|                   "spam"
+-|                 <table>
+-|                   <tbody>
+-|                     <tr>
+-|                       <td>
+-|                         <img>
+-|             <svg g>
+-|               "quux"
+-|       "bar"
+-
+-#data
+-<!DOCTYPE html><body>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "foo"
+-|     <math math>
+-|       <math mtext>
+-|         <i>
+-|           "baz"
+-|       <math annotation-xml>
+-|         <svg svg>
+-|           <svg desc>
+-|             <b>
+-|               "eggs"
+-|           <svg g>
+-|             <svg foreignObject>
+-|               <p>
+-|                 "spam"
+-|               <table>
+-|                 <tbody>
+-|                   <tr>
+-|                     <td>
+-|                       <img>
+-|           <svg g>
+-|             "quux"
+-|     "bar"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests14.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests14.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests14.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests14.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,74 +0,0 @@
+-#data
+-<!DOCTYPE html><html><body><xyz:abc></xyz:abc>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xyz:abc>
+-
+-#data
+-<!DOCTYPE html><html><body><xyz:abc></xyz:abc><span></span>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xyz:abc>
+-|     <span>
+-
+-#data
+-<!DOCTYPE html><html><html abc:def=gh><xyz:abc></xyz:abc>
+-#errors
+-15: Unexpected start tag html
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   abc:def="gh"
+-|   <head>
+-|   <body>
+-|     <xyz:abc>
+-
+-#data
+-<!DOCTYPE html><html xml:lang=bar><html xml:lang=foo>
+-#errors
+-15: Unexpected start tag html
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   xml:lang="bar"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><html 123=456>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   123="456"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><html 123=456><html 789=012>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   123="456"
+-|   789="012"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><html><body 789=012>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     789="012"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests15.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests15.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests15.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests15.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,208 +0,0 @@
+-#data
+-<!DOCTYPE html><p><b><i><u></p> <p>X
+-#errors
+-Line: 1 Col: 31 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 36 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|         <i>
+-|           <u>
+-|     <b>
+-|       <i>
+-|         <u>
+-|           " "
+-|           <p>
+-|             "X"
+-
+-#data
+-<p><b><i><u></p>
+-<p>X
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected end tag (p). Ignored.
+-Line: 2 Col: 4 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|         <i>
+-|           <u>
+-|     <b>
+-|       <i>
+-|         <u>
+-|           "
+-"
+-|           <p>
+-|             "X"
+-
+-#data
+-<!doctype html></html> <head>
+-#errors
+-Line: 1 Col: 22 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " "
+-
+-#data
+-<!doctype html></body><meta>
+-#errors
+-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <meta>
+-
+-#data
+-<html></html><!-- foo -->
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-| <!--  foo  -->
+-
+-#data
+-<!doctype html></body><title>X</title>
+-#errors
+-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <title>
+-|       "X"
+-
+-#data
+-<!doctype html><table> X<meta></table>
+-#errors
+-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 30 Unexpected start tag (meta) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " X"
+-|     <meta>
+-|     <table>
+-
+-#data
+-<!doctype html><table> x</table>
+-#errors
+-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " x"
+-|     <table>
+-
+-#data
+-<!doctype html><table> x </table>
+-#errors
+-Line: 1 Col: 25 Unexpected non-space characters in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " x "
+-|     <table>
+-
+-#data
+-<!doctype html><table><tr> x</table>
+-#errors
+-Line: 1 Col: 28 Unexpected non-space characters in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " x"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><table>X<style> <tr>x </style> </table>
+-#errors
+-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-|     <table>
+-|       <style>
+-|         " <tr>x "
+-|       " "
+-
+-#data
+-<!doctype html><div><table><a>foo</a> <tr><td>bar</td> </tr></table></div>
+-#errors
+-Line: 1 Col: 30 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 37 Unexpected end tag (a) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <a>
+-|         "foo"
+-|       <table>
+-|         " "
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               "bar"
+-|             " "
+-
+-#data
+-<frame></frame></frame><frameset><frame><frameset><frame></frameset><noframes></frameset><noframes>
+-#errors
+-6: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-13: Stray start tag âframeâ.
+-21: Stray end tag âframeâ.
+-29: Stray end tag âframeâ.
+-39: âframesetâ start tag after âbodyâ already open.
+-105: End of file seen inside an [R]CDATA element.
+-105: End of file seen and there were open elements.
+-XXX: These errors are wrong, please fix me!
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-|     <frameset>
+-|       <frame>
+-|     <noframes>
+-|       "</frameset><noframes>"
+-
+-#data
+-<!DOCTYPE html><object></html>
+-#errors
+-1: Expected closing tag. Unexpected end of file
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <object>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests16.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests16.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests16.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests16.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,2299 +0,0 @@
+-#data
+-<!doctype html><script>
+-#errors
+-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<!doctype html><script>a
+-#errors
+-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><
+-#errors
+-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<"
+-|   <body>
+-
+-#data
+-<!doctype html><script></
+-#errors
+-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</"
+-|   <body>
+-
+-#data
+-<!doctype html><script></S
+-#errors
+-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</S"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SC
+-#errors
+-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SC"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SCR
+-#errors
+-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCR"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SCRI
+-#errors
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRI"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SCRIP
+-#errors
+-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRIP"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SCRIPT
+-#errors
+-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRIPT"
+-|   <body>
+-
+-#data
+-<!doctype html><script></SCRIPT 
+-#errors
+-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<!doctype html><script></s
+-#errors
+-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</s"
+-|   <body>
+-
+-#data
+-<!doctype html><script></sc
+-#errors
+-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</sc"
+-|   <body>
+-
+-#data
+-<!doctype html><script></scr
+-#errors
+-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scr"
+-|   <body>
+-
+-#data
+-<!doctype html><script></scri
+-#errors
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scri"
+-|   <body>
+-
+-#data
+-<!doctype html><script></scrip
+-#errors
+-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scrip"
+-|   <body>
+-
+-#data
+-<!doctype html><script></script
+-#errors
+-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</script"
+-|   <body>
+-
+-#data
+-<!doctype html><script></script 
+-#errors
+-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<!doctype html><script><!
+-#errors
+-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!a
+-#errors
+-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!-
+-#errors
+-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!-"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!-a
+-#errors
+-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!-a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--
+-#errors
+-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--a
+-#errors
+-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<
+-#errors
+-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<a
+-#errors
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--</
+-#errors
+-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--</"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--</script
+-#errors
+-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--</script"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--</script 
+-#errors
+-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<s
+-#errors
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<s"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script
+-#errors
+-Line: 1 Col: 34 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script 
+-#errors
+-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script "
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script <
+-#errors
+-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script <"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script <a
+-#errors
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script <a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </
+-#errors
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </s
+-#errors
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </s"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script
+-#errors
+-Line: 1 Col: 43 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </scripta
+-#errors
+-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </scripta"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script 
+-#errors
+-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script>
+-#errors
+-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script>"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script/
+-#errors
+-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script/"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script <
+-#errors
+-Line: 1 Col: 45 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script <"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script <a
+-#errors
+-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script <a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script </
+-#errors
+-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script </"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script </script
+-#errors
+-Line: 1 Col: 52 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script </script"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script </script 
+-#errors
+-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script </script/
+-#errors
+-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script </script </script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script -
+-#errors
+-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script -a
+-#errors
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script -<
+-#errors
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -<"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --
+-#errors
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --a
+-#errors
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --a"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --<
+-#errors
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --<"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script -->
+-#errors
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --><
+-#errors
+-Line: 1 Col: 39 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --><"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --></
+-#errors
+-Line: 1 Col: 40 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --></"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --></script
+-#errors
+-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --></script"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --></script 
+-#errors
+-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --></script/
+-#errors
+-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script --></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script><\/script>--></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script><\/script>-->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></scr'+'ipt>--></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></scr'+'ipt>-->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script>--><!--</script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>--><!--"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script>-- ></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>-- >"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script>- -></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>- ->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script>- - ></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>- - >"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script></script><script></script>-></script>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>->"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<script>--!></script>X
+-#errors
+-Line: 1 Col: 49 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script>--!></script>X"
+-|   <body>
+-
+-#data
+-<!doctype html><script><!--<scr'+'ipt></script>--></script>
+-#errors
+-Line: 1 Col: 59 Unexpected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<scr'+'ipt>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><script><!--<script></scr'+'ipt></script>X
+-#errors
+-Line: 1 Col: 57 Unexpected end of file. Expected end tag (script).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></scr'+'ipt></script>X"
+-|   <body>
+-
+-#data
+-<!doctype html><style><!--<style></style>--></style>
+-#errors
+-Line: 1 Col: 52 Unexpected end tag (style).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--<style>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><style><!--</style>X
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--"
+-|   <body>
+-|     "X"
+-
+-#data
+-<!doctype html><style><!--...</style>...--></style>
+-#errors
+-Line: 1 Col: 51 Unexpected end tag (style).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--..."
+-|   <body>
+-|     "...-->"
+-
+-#data
+-<!doctype html><style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>"
+-|   <body>
+-|     "X"
+-
+-#data
+-<!doctype html><style><!--...<style><!--...--!></style>--></style>
+-#errors
+-Line: 1 Col: 66 Unexpected end tag (style).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--...<style><!--...--!>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><style><!--...</style><!-- --><style>@import ...</style>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--..."
+-|     <!--   -->
+-|     <style>
+-|       "@import ..."
+-|   <body>
+-
+-#data
+-<!doctype html><style>...<style><!--...</style><!-- --></style>
+-#errors
+-Line: 1 Col: 63 Unexpected end tag (style).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "...<style><!--..."
+-|     <!--   -->
+-|   <body>
+-
+-#data
+-<!doctype html><style>...<!--[if IE]><style>...</style>X
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       "...<!--[if IE]><style>..."
+-|   <body>
+-|     "X"
+-
+-#data
+-<!doctype html><title><!--<title></title>--></title>
+-#errors
+-Line: 1 Col: 52 Unexpected end tag (title).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<!--<title>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><title>&lt;/title></title>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "</title>"
+-|   <body>
+-
+-#data
+-<!doctype html><title>foo/title><link></head><body>X
+-#errors
+-Line: 1 Col: 52 Unexpected end of file. Expected end tag (title).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "foo/title><link></head><body>X"
+-|   <body>
+-
+-#data
+-<!doctype html><noscript><!--<noscript></noscript>--></noscript>
+-#errors
+-Line: 1 Col: 64 Unexpected end tag (noscript).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<!--<noscript>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<!--"
+-|   <body>
+-|     "X"
+-|     <noscript>
+-|       "-->"
+-
+-#data
+-<!doctype html><noscript><iframe></noscript>X
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<iframe>"
+-|   <body>
+-|     "X"
+-
+-#data
+-<!doctype html><noframes><!--<noframes></noframes>--></noframes>
+-#errors
+-Line: 1 Col: 64 Unexpected end tag (noframes).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <noframes>
+-|       "<!--<noframes>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<!doctype html><noframes><body><script><!--...</script></body></noframes></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <noframes>
+-|       "<body><script><!--...</script></body>"
+-|   <body>
+-
+-#data
+-<!doctype html><textarea><!--<textarea></textarea>--></textarea>
+-#errors
+-Line: 1 Col: 64 Unexpected end tag (textarea).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<!--<textarea>"
+-|     "-->"
+-
+-#data
+-<!doctype html><textarea>&lt;/textarea></textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "</textarea>"
+-
+-#data
+-<!doctype html><textarea>&lt;</textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<"
+-
+-#data
+-<!doctype html><textarea>a&lt;b</textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "a<b"
+-
+-#data
+-<!doctype html><iframe><!--<iframe></iframe>--></iframe>
+-#errors
+-Line: 1 Col: 56 Unexpected end tag (iframe).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       "<!--<iframe>"
+-|     "-->"
+-
+-#data
+-<!doctype html><iframe>...<!--X->...<!--/X->...</iframe>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       "...<!--X->...<!--/X->..."
+-
+-#data
+-<!doctype html><xmp><!--<xmp></xmp>--></xmp>
+-#errors
+-Line: 1 Col: 44 Unexpected end tag (xmp).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xmp>
+-|       "<!--<xmp>"
+-|     "-->"
+-
+-#data
+-<!doctype html><noembed><!--<noembed></noembed>--></noembed>
+-#errors
+-Line: 1 Col: 60 Unexpected end tag (noembed).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <noembed>
+-|       "<!--<noembed>"
+-|     "-->"
+-
+-#data
+-<script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 8 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<script>a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 9 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "a"
+-|   <body>
+-
+-#data
+-<script><
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 9 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<"
+-|   <body>
+-
+-#data
+-<script></
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 10 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</"
+-|   <body>
+-
+-#data
+-<script></S
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</S"
+-|   <body>
+-
+-#data
+-<script></SC
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SC"
+-|   <body>
+-
+-#data
+-<script></SCR
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCR"
+-|   <body>
+-
+-#data
+-<script></SCRI
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRI"
+-|   <body>
+-
+-#data
+-<script></SCRIP
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 15 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRIP"
+-|   <body>
+-
+-#data
+-<script></SCRIPT
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</SCRIPT"
+-|   <body>
+-
+-#data
+-<script></SCRIPT 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 17 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<script></s
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</s"
+-|   <body>
+-
+-#data
+-<script></sc
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</sc"
+-|   <body>
+-
+-#data
+-<script></scr
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scr"
+-|   <body>
+-
+-#data
+-<script></scri
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scri"
+-|   <body>
+-
+-#data
+-<script></scrip
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 15 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</scrip"
+-|   <body>
+-
+-#data
+-<script></script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</script"
+-|   <body>
+-
+-#data
+-<script></script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 17 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<script><!
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 10 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!"
+-|   <body>
+-
+-#data
+-<script><!a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!a"
+-|   <body>
+-
+-#data
+-<script><!-
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!-"
+-|   <body>
+-
+-#data
+-<script><!-a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!-a"
+-|   <body>
+-
+-#data
+-<script><!--
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--"
+-|   <body>
+-
+-#data
+-<script><!--a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--a"
+-|   <body>
+-
+-#data
+-<script><!--<
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<"
+-|   <body>
+-
+-#data
+-<script><!--<a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<a"
+-|   <body>
+-
+-#data
+-<script><!--</
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--</"
+-|   <body>
+-
+-#data
+-<script><!--</script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--</script"
+-|   <body>
+-
+-#data
+-<script><!--</script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--"
+-|   <body>
+-
+-#data
+-<script><!--<s
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<s"
+-|   <body>
+-
+-#data
+-<script><!--<script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 19 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script"
+-|   <body>
+-
+-#data
+-<script><!--<script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script "
+-|   <body>
+-
+-#data
+-<script><!--<script <
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script <"
+-|   <body>
+-
+-#data
+-<script><!--<script <a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script <a"
+-|   <body>
+-
+-#data
+-<script><!--<script </
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </"
+-|   <body>
+-
+-#data
+-<script><!--<script </s
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </s"
+-|   <body>
+-
+-#data
+-<script><!--<script </script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script"
+-|   <body>
+-
+-#data
+-<script><!--<script </scripta
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </scripta"
+-|   <body>
+-
+-#data
+-<script><!--<script </script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<script><!--<script </script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script>"
+-|   <body>
+-
+-#data
+-<script><!--<script </script/
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script/"
+-|   <body>
+-
+-#data
+-<script><!--<script </script <
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script <"
+-|   <body>
+-
+-#data
+-<script><!--<script </script <a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script <a"
+-|   <body>
+-
+-#data
+-<script><!--<script </script </
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script </"
+-|   <body>
+-
+-#data
+-<script><!--<script </script </script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script </script"
+-|   <body>
+-
+-#data
+-<script><!--<script </script </script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<script><!--<script </script </script/
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<script><!--<script </script </script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script </script "
+-|   <body>
+-
+-#data
+-<script><!--<script -
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -"
+-|   <body>
+-
+-#data
+-<script><!--<script -a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -a"
+-|   <body>
+-
+-#data
+-<script><!--<script --
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --"
+-|   <body>
+-
+-#data
+-<script><!--<script --a
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --a"
+-|   <body>
+-
+-#data
+-<script><!--<script -->
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<script><!--<script --><
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --><"
+-|   <body>
+-
+-#data
+-<script><!--<script --></
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --></"
+-|   <body>
+-
+-#data
+-<script><!--<script --></script
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script --></script"
+-|   <body>
+-
+-#data
+-<script><!--<script --></script 
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<script><!--<script --></script/
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<script><!--<script --></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script -->"
+-|   <body>
+-
+-#data
+-<script><!--<script><\/script>--></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script><\/script>-->"
+-|   <body>
+-
+-#data
+-<script><!--<script></scr'+'ipt>--></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></scr'+'ipt>-->"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script>--><!--</script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>--><!--"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script>-- ></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>-- >"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script>- -></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>- ->"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script>- - ></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>- - >"
+-|   <body>
+-
+-#data
+-<script><!--<script></script><script></script>-></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></script><script></script>->"
+-|   <body>
+-
+-#data
+-<script><!--<script>--!></script>X
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 34 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script>--!></script>X"
+-|   <body>
+-
+-#data
+-<script><!--<scr'+'ipt></script>--></script>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 44 Unexpected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<scr'+'ipt>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<script><!--<script></scr'+'ipt></script>X
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 42 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<!--<script></scr'+'ipt></script>X"
+-|   <body>
+-
+-#data
+-<style><!--<style></style>--></style>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 37 Unexpected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--<style>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<style><!--</style>X
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--"
+-|   <body>
+-|     "X"
+-
+-#data
+-<style><!--...</style>...--></style>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 36 Unexpected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--..."
+-|   <body>
+-|     "...-->"
+-
+-#data
+-<style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>"
+-|   <body>
+-|     "X"
+-
+-#data
+-<style><!--...<style><!--...--!></style>--></style>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 51 Unexpected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--...<style><!--...--!>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<style><!--...</style><!-- --><style>@import ...</style>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--..."
+-|     <!--   -->
+-|     <style>
+-|       "@import ..."
+-|   <body>
+-
+-#data
+-<style>...<style><!--...</style><!-- --></style>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 48 Unexpected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "...<style><!--..."
+-|     <!--   -->
+-|   <body>
+-
+-#data
+-<style>...<!--[if IE]><style>...</style>X
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "...<!--[if IE]><style>..."
+-|   <body>
+-|     "X"
+-
+-#data
+-<title><!--<title></title>--></title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-Line: 1 Col: 37 Unexpected end tag (title).
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<!--<title>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<title>&lt;/title></title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "</title>"
+-|   <body>
+-
+-#data
+-<title>foo/title><link></head><body>X
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-Line: 1 Col: 37 Unexpected end of file. Expected end tag (title).
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "foo/title><link></head><body>X"
+-|   <body>
+-
+-#data
+-<noscript><!--<noscript></noscript>--></noscript>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
+-Line: 1 Col: 49 Unexpected end tag (noscript).
+-#document
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<!--<noscript>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<noscript><!--</noscript>X<noscript>--></noscript>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<!--"
+-|   <body>
+-|     "X"
+-|     <noscript>
+-|       "-->"
+-
+-#data
+-<noscript><iframe></noscript>X
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<iframe>"
+-|   <body>
+-|     "X"
+-
+-#data
+-<noframes><!--<noframes></noframes>--></noframes>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE.
+-Line: 1 Col: 49 Unexpected end tag (noframes).
+-#document
+-| <html>
+-|   <head>
+-|     <noframes>
+-|       "<!--<noframes>"
+-|   <body>
+-|     "-->"
+-
+-#data
+-<noframes><body><script><!--...</script></body></noframes></html>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <noframes>
+-|       "<body><script><!--...</script></body>"
+-|   <body>
+-
+-#data
+-<textarea><!--<textarea></textarea>--></textarea>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-Line: 1 Col: 49 Unexpected end tag (textarea).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<!--<textarea>"
+-|     "-->"
+-
+-#data
+-<textarea>&lt;/textarea></textarea>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "</textarea>"
+-
+-#data
+-<iframe><!--<iframe></iframe>--></iframe>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
+-Line: 1 Col: 41 Unexpected end tag (iframe).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       "<!--<iframe>"
+-|     "-->"
+-
+-#data
+-<iframe>...<!--X->...<!--/X->...</iframe>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       "...<!--X->...<!--/X->..."
+-
+-#data
+-<xmp><!--<xmp></xmp>--></xmp>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE.
+-Line: 1 Col: 29 Unexpected end tag (xmp).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xmp>
+-|       "<!--<xmp>"
+-|     "-->"
+-
+-#data
+-<noembed><!--<noembed></noembed>--></noembed>
+-#errors
+-Line: 1 Col: 9 Unexpected start tag (noembed). Expected DOCTYPE.
+-Line: 1 Col: 45 Unexpected end tag (noembed).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <noembed>
+-|       "<!--<noembed>"
+-|     "-->"
+-
+-#data
+-<!doctype html><table>
+-
+-#errors
+-Line 2 Col 0 Unexpected end of file. Expected table content.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       "
+-"
+-
+-#data
+-<!doctype html><table><td><span><font></span><span>
+-#errors
+-Line 1 Col 26 Unexpected table cell start tag (td) in the table body phase.
+-Line 1 Col 45 Unexpected end tag (span).
+-Line 1 Col 51 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <span>
+-|               <font>
+-|             <font>
+-|               <span>
+-
+-#data
+-<!doctype html><form><table></form><form></table></form>
+-#errors
+-35: Stray end tag âformâ.
+-41: Start tag âformâ seen in âtableâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <table>
+-|         <form>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests17.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests17.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests17.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests17.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,153 +0,0 @@
+-#data
+-<!doctype html><table><tbody><select><tr>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><table><tr><select><td>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<!doctype html><table><tr><td><select><td>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <select>
+-|           <td>
+-
+-#data
+-<!doctype html><table><tr><th><select><td>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <th>
+-|             <select>
+-|           <td>
+-
+-#data
+-<!doctype html><table><caption><select><tr>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <select>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><select><tr>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><td>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><th>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><tbody>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><thead>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><tfoot>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><select><caption>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><table><tr></table>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|     "a"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests18.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests18.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests18.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests18.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,269 +0,0 @@
+-#data
+-<!doctype html><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-
+-#data
+-<!doctype html><table><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-|     <table>
+-
+-#data
+-<!doctype html><table><tbody><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-|     <table>
+-|       <tbody>
+-
+-#data
+-<!doctype html><table><tbody><tr><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><table><tbody><tr><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><table><td><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <plaintext>
+-|               "</plaintext>"
+-
+-#data
+-<!doctype html><table><caption><plaintext></plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <plaintext>
+-|           "</plaintext>"
+-
+-#data
+-<!doctype html><table><tr><style></script></style>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "abc"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <style>
+-|             "</script>"
+-
+-#data
+-<!doctype html><table><tr><script></style></script>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "abc"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <script>
+-|             "</style>"
+-
+-#data
+-<!doctype html><table><caption><style></script></style>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <style>
+-|           "</script>"
+-|         "abc"
+-
+-#data
+-<!doctype html><table><td><style></script></style>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <style>
+-|               "</script>"
+-|             "abc"
+-
+-#data
+-<!doctype html><select><script></style></script>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <script>
+-|         "</style>"
+-|       "abc"
+-
+-#data
+-<!doctype html><table><select><script></style></script>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <script>
+-|         "</style>"
+-|       "abc"
+-|     <table>
+-
+-#data
+-<!doctype html><table><tr><select><script></style></script>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <script>
+-|         "</style>"
+-|       "abc"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><frameset></frameset><noframes>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   <noframes>
+-|     "abc"
+-
+-#data
+-<!doctype html><frameset></frameset><noframes>abc</noframes><!--abc-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   <noframes>
+-|     "abc"
+-|   <!-- abc -->
+-
+-#data
+-<!doctype html><frameset></frameset></html><noframes>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   <noframes>
+-|     "abc"
+-
+-#data
+-<!doctype html><frameset></frameset></html><noframes>abc</noframes><!--abc-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   <noframes>
+-|     "abc"
+-| <!-- abc -->
+-
+-#data
+-<!doctype html><table><tr></tbody><tfoot>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|       <tfoot>
+-
+-#data
+-<!doctype html><table><td><svg></svg>abc<td>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|             "abc"
+-|           <td>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests19.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests19.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests19.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests19.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1237 +0,0 @@
+-#data
+-<!doctype html><math><mn DefinitionUrl="foo">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mn>
+-|         definitionURL="foo"
+-
+-#data
+-<!doctype html><html></p><!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <!-- foo -->
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html><head></head></p><!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <!-- foo -->
+-|   <body>
+-
+-#data
+-<!doctype html><body><p><pre>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <pre>
+-
+-#data
+-<!doctype html><body><p><listing>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <listing>
+-
+-#data
+-<!doctype html><p><plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <plaintext>
+-
+-#data
+-<!doctype html><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <h1>
+-
+-#data
+-<!doctype html><form><isindex>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-
+-#data
+-<!doctype html><isindex action="POST">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       action="POST"
+-|       <hr>
+-|       <label>
+-|         "This is a searchable index. Enter search keywords: "
+-|         <input>
+-|           name="isindex"
+-|       <hr>
+-
+-#data
+-<!doctype html><isindex prompt="this is isindex">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <hr>
+-|       <label>
+-|         "this is isindex"
+-|         <input>
+-|           name="isindex"
+-|       <hr>
+-
+-#data
+-<!doctype html><isindex type="hidden">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <hr>
+-|       <label>
+-|         "This is a searchable index. Enter search keywords: "
+-|         <input>
+-|           name="isindex"
+-|           type="hidden"
+-|       <hr>
+-
+-#data
+-<!doctype html><isindex name="foo">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <hr>
+-|       <label>
+-|         "This is a searchable index. Enter search keywords: "
+-|         <input>
+-|           name="isindex"
+-|       <hr>
+-
+-#data
+-<!doctype html><ruby><p><rp>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <p>
+-|       <rp>
+-
+-#data
+-<!doctype html><ruby><div><span><rp>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <span>
+-|           <rp>
+-
+-#data
+-<!doctype html><ruby><div><p><rp>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <p>
+-|         <rp>
+-
+-#data
+-<!doctype html><ruby><p><rt>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <p>
+-|       <rt>
+-
+-#data
+-<!doctype html><ruby><div><span><rt>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <span>
+-|           <rt>
+-
+-#data
+-<!doctype html><ruby><div><p><rt>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <p>
+-|         <rt>
+-
+-#data
+-<!doctype html><math/><foo>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|     <foo>
+-
+-#data
+-<!doctype html><svg/><foo>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|     <foo>
+-
+-#data
+-<!doctype html><div></body><!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|   <!-- foo -->
+-
+-#data
+-<!doctype html><h1><div><h3><span></h1>foo
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <h1>
+-|       <div>
+-|         <h3>
+-|           <span>
+-|         "foo"
+-
+-#data
+-<!doctype html><p></h3>foo
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "foo"
+-
+-#data
+-<!doctype html><h3><li>abc</h2>foo
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <h3>
+-|       <li>
+-|         "abc"
+-|     "foo"
+-
+-#data
+-<!doctype html><table>abc<!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "abc"
+-|     <table>
+-|       <!-- foo -->
+-
+-#data
+-<!doctype html><table>  <!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       "  "
+-|       <!-- foo -->
+-
+-#data
+-<!doctype html><table> b <!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     " b "
+-|     <table>
+-|       <!-- foo -->
+-
+-#data
+-<!doctype html><select><option><option>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|       <option>
+-
+-#data
+-<!doctype html><select><option></optgroup>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-
+-#data
+-<!doctype html><select><option></optgroup>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-
+-#data
+-<!doctype html><p><math><mi><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math mi>
+-|           <p>
+-|           <h1>
+-
+-#data
+-<!doctype html><p><math><mo><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math mo>
+-|           <p>
+-|           <h1>
+-
+-#data
+-<!doctype html><p><math><mn><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math mn>
+-|           <p>
+-|           <h1>
+-
+-#data
+-<!doctype html><p><math><ms><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math ms>
+-|           <p>
+-|           <h1>
+-
+-#data
+-<!doctype html><p><math><mtext><p><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math mtext>
+-|           <p>
+-|           <h1>
+-
+-#data
+-<!doctype html><frameset></noframes>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><html c=d><body></html><html a=b>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   a="b"
+-|   c="d"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html><html c=d><frameset></frameset></html><html a=b>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   a="b"
+-|   c="d"
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><html><frameset></frameset></html><!--foo-->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-| <!-- foo -->
+-
+-#data
+-<!doctype html><html><frameset></frameset></html>  
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "  "
+-
+-#data
+-<!doctype html><html><frameset></frameset></html>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><html><frameset></frameset></html><p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><html><frameset></frameset></html></p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<html><frameset></frameset></html><!doctype html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><body><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html><p><frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<!doctype html><p>a<frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "a"
+-
+-#data
+-<!doctype html><p> <frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<!doctype html><pre><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-
+-#data
+-<!doctype html><listing><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <listing>
+-
+-#data
+-<!doctype html><li><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <li>
+-
+-#data
+-<!doctype html><dd><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dd>
+-
+-#data
+-<!doctype html><dt><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dt>
+-
+-#data
+-<!doctype html><button><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <button>
+-
+-#data
+-<!doctype html><applet><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <applet>
+-
+-#data
+-<!doctype html><marquee><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <marquee>
+-
+-#data
+-<!doctype html><object><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <object>
+-
+-#data
+-<!doctype html><table><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-
+-#data
+-<!doctype html><area><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <area>
+-
+-#data
+-<!doctype html><basefont><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <basefont>
+-|   <frameset>
+-
+-#data
+-<!doctype html><bgsound><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <bgsound>
+-|   <frameset>
+-
+-#data
+-<!doctype html><br><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-
+-#data
+-<!doctype html><embed><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <embed>
+-
+-#data
+-<!doctype html><img><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <img>
+-
+-#data
+-<!doctype html><input><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-
+-#data
+-<!doctype html><keygen><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <keygen>
+-
+-#data
+-<!doctype html><wbr><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <wbr>
+-
+-#data
+-<!doctype html><hr><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <hr>
+-
+-#data
+-<!doctype html><textarea></textarea><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-
+-#data
+-<!doctype html><xmp></xmp><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xmp>
+-
+-#data
+-<!doctype html><iframe></iframe><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-
+-#data
+-<!doctype html><select></select><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!doctype html><svg></svg><frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<!doctype html><math></math><frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<!doctype html><svg><foreignObject><div> <frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<!doctype html><svg>a</svg><frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "a"
+-
+-#data
+-<!doctype html><svg> </svg><frameset><frame>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-
+-#data
+-<html>aaa<frameset></frameset>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "aaa"
+-
+-#data
+-<html> a <frameset></frameset>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "a "
+-
+-#data
+-<!doctype html><div><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><div><body><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-
+-#data
+-<!doctype html><p><math></p>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|     "a"
+-
+-#data
+-<!doctype html><p><math><mn><span></p>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <math math>
+-|         <math mn>
+-|           <span>
+-|             <p>
+-|             "a"
+-
+-#data
+-<!doctype html><math></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-
+-#data
+-<!doctype html><meta charset="ascii">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <meta>
+-|       charset="ascii"
+-|   <body>
+-
+-#data
+-<!doctype html><meta http-equiv="content-type" content="text/html;charset=ascii">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <meta>
+-|       content="text/html;charset=ascii"
+-|       http-equiv="content-type"
+-|   <body>
+-
+-#data
+-<!doctype html><head><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><meta charset="utf8">
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <!-- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -->
+-|     <meta>
+-|       charset="utf8"
+-|   <body>
+-
+-#data
+-<!doctype html><html a=b><head></head><html c=d>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   a="b"
+-|   c="d"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html><image/>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <img>
+-
+-#data
+-<!doctype html>a<i>b<table>c<b>d</i>e</b>f
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "a"
+-|     <i>
+-|       "bc"
+-|       <b>
+-|         "de"
+-|       "f"
+-|       <table>
+-
+-#data
+-<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "a"
+-|       <b>
+-|         "b"
+-|     <b>
+-|     <div>
+-|       <b>
+-|         <i>
+-|           "c"
+-|           <a>
+-|             "d"
+-|         <a>
+-|           "e"
+-|       <a>
+-|         "f"
+-|     <table>
+-
+-#data
+-<!doctype html><i>a<b>b<div>c<a>d</i>e</b>f
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "a"
+-|       <b>
+-|         "b"
+-|     <b>
+-|     <div>
+-|       <b>
+-|         <i>
+-|           "c"
+-|           <a>
+-|             "d"
+-|         <a>
+-|           "e"
+-|       <a>
+-|         "f"
+-
+-#data
+-<!doctype html><table><i>a<b>b<div>c</i>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "a"
+-|       <b>
+-|         "b"
+-|     <b>
+-|       <div>
+-|         <i>
+-|           "c"
+-|     <table>
+-
+-#data
+-<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "a"
+-|       <b>
+-|         "b"
+-|     <b>
+-|     <div>
+-|       <b>
+-|         <i>
+-|           "c"
+-|           <a>
+-|             "d"
+-|         <a>
+-|           "e"
+-|       <a>
+-|         "f"
+-|     <table>
+-
+-#data
+-<!doctype html><table><i>a<div>b<tr>c<b>d</i>e
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <i>
+-|       "a"
+-|       <div>
+-|         "b"
+-|     <i>
+-|       "c"
+-|       <b>
+-|         "d"
+-|     <b>
+-|       "e"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><table><td><table><i>a<div>b<b>c</i>d
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <i>
+-|               "a"
+-|             <div>
+-|               <i>
+-|                 "b"
+-|                 <b>
+-|                   "c"
+-|               <b>
+-|                 "d"
+-|             <table>
+-
+-#data
+-<!doctype html><body><bgsound>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <bgsound>
+-
+-#data
+-<!doctype html><body><basefont>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <basefont>
+-
+-#data
+-<!doctype html><a><b></a><basefont>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|     <basefont>
+-
+-#data
+-<!doctype html><a><b></a><bgsound>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|     <bgsound>
+-
+-#data
+-<!doctype html><figcaption><article></figcaption>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <figcaption>
+-|       <article>
+-|     "a"
+-
+-#data
+-<!doctype html><summary><article></summary>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <summary>
+-|       <article>
+-|     "a"
+-
+-#data
+-<!doctype html><p><a><plaintext>b
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <a>
+-|     <plaintext>
+-|       <a>
+-|         "b"
+-
+-#data
+-<!DOCTYPE html><div>a<a></div>b<p>c</p>d
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "a"
+-|       <a>
+-|     <a>
+-|       "b"
+-|       <p>
+-|         "c"
+-|       "d"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests1.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests1.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests1.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests1.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1952 +0,0 @@
+-#data
+-Test
+-#errors
+-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Test"
+-
+-#data
+-<p>One<p>Two
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "One"
+-|     <p>
+-|       "Two"
+-
+-#data
+-Line1<br>Line2<br>Line3<br>Line4
+-#errors
+-Line: 1 Col: 5 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Line1"
+-|     <br>
+-|     "Line2"
+-|     <br>
+-|     "Line3"
+-|     <br>
+-|     "Line4"
+-
+-#data
+-<html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<head>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<body>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head></head>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head></head><body>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head></head><body></body>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head><body></body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head></body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-Line: 1 Col: 19 Unexpected end tag (body).
+-Line: 1 Col: 26 Unexpected end tag (html).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><head><body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<html><body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<head></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end tag (html). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-</head>
+-#errors
+-Line: 1 Col: 7 Unexpected end tag (head). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-</body>
+-#errors
+-Line: 1 Col: 7 Unexpected end tag (body). Expected DOCTYPE.
+-Line: 1 Col: 7 Unexpected end tag (body) after the (implied) root element.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-</html>
+-#errors
+-Line: 1 Col: 7 Unexpected end tag (html). Expected DOCTYPE.
+-Line: 1 Col: 7 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<b><table><td><i></table>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <i>
+-
+-#data
+-<b><table><td></b><i></table>X
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 30 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <i>
+-|       "X"
+-
+-#data
+-<h1>Hello<h2>World
+-#errors
+-4: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-13: Heading cannot be a child of another heading.
+-18: End of file seen and there were open elements.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <h1>
+-|       "Hello"
+-|     <h2>
+-|       "World"
+-
+-#data
+-<a><p>X<a>Y</a>Z</p></a>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 10 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 10 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 24 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <p>
+-|       <a>
+-|         "X"
+-|       <a>
+-|         "Y"
+-|       "Z"
+-
+-#data
+-<b><button>foo</b>bar
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|     <button>
+-|       <b>
+-|         "foo"
+-|       "bar"
+-
+-#data
+-<!DOCTYPE html><span><button>foo</span>bar
+-#errors
+-39: End tag âspanâ seen but there were unclosed elements.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <span>
+-|       <button>
+-|         "foobar"
+-
+-#data
+-<p><b><div><marquee></p></b></div>X
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
+-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|     <div>
+-|       <b>
+-|         <marquee>
+-|           <p>
+-|           "X"
+-
+-#data
+-<script><div></script></div><title><p></title><p><p>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 28 Unexpected end tag (div). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "<div>"
+-|     <title>
+-|       "<p>"
+-|   <body>
+-|     <p>
+-|     <p>
+-
+-#data
+-<!--><div>--<!-->
+-#errors
+-Line: 1 Col: 5 Incorrect comment.
+-Line: 1 Col: 10 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 17 Incorrect comment.
+-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
+-#document
+-| <!--  -->
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "--"
+-|       <!--  -->
+-
+-#data
+-<p><hr></p>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <hr>
+-|     <p>
+-
+-#data
+-<select><b><option><select><option></b></select>X
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
+-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
+-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
+-Line: 1 Col: 49 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|     <option>
+-|       "X"
+-
+-#data
+-<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 63 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 64 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <a>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <a>
+-|                 <table>
+-|               <a>
+-|     <a>
+-|       <b>
+-|         "X"
+-|       "C"
+-|     <a>
+-|       "Y"
+-
+-#data
+-<a X>0<b>1<a Y>2
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 15 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       x=""
+-|       "0"
+-|       <b>
+-|         "1"
+-|     <b>
+-|       <a>
+-|         y=""
+-|         "2"
+-
+-#data
+-<!-----><font><div>hello<table>excite!<b>me!<th><i>please!</tr><!--X-->
+-#errors
+-Line: 1 Col: 7 Unexpected '-' after '--' found in comment.
+-Line: 1 Col: 14 Unexpected start tag (font). Expected DOCTYPE.
+-Line: 1 Col: 38 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 41 Unexpected start tag (b) in table context caused voodoo mode.
+-Line: 1 Col: 48 Unexpected implied end tag (b) in the table phase.
+-Line: 1 Col: 48 Unexpected table cell start tag (th) in the table body phase.
+-Line: 1 Col: 63 Got table cell end tag (th) while required end tags are missing.
+-Line: 1 Col: 71 Unexpected end of file. Expected table content.
+-#document
+-| <!-- - -->
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|       <div>
+-|         "helloexcite!"
+-|         <b>
+-|           "me!"
+-|         <table>
+-|           <tbody>
+-|             <tr>
+-|               <th>
+-|                 <i>
+-|                   "please!"
+-|             <!-- X -->
+-
+-#data
+-<!DOCTYPE html><li>hello<li>world<ul>how<li>do</ul>you</body><!--do-->
+-#errors
+-Line: 1 Col: 61 Unexpected end tag (li). Missing end tag (body).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <li>
+-|       "hello"
+-|     <li>
+-|       "world"
+-|       <ul>
+-|         "how"
+-|         <li>
+-|           "do"
+-|       "you"
+-|   <!-- do -->
+-
+-#data
+-<!DOCTYPE html>A<option>B<optgroup>C<select>D</option>E
+-#errors
+-Line: 1 Col: 54 Unexpected end tag (option) in the select phase. Ignored.
+-Line: 1 Col: 55 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A"
+-|     <option>
+-|       "B"
+-|     <optgroup>
+-|       "C"
+-|       <select>
+-|         "DE"
+-
+-#data
+-<
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got something else instead
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "<"
+-
+-#data
+-<#
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got something else instead
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "<#"
+-
+-#data
+-</
+-#errors
+-Line: 1 Col: 2 Expected closing tag. Unexpected end of file.
+-Line: 1 Col: 2 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "</"
+-
+-#data
+-</#
+-#errors
+-Line: 1 Col: 2 Expected closing tag. Unexpected character '#' found.
+-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- # -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<?
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
+-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- ? -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<?#
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
+-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- ?# -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!
+-#errors
+-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
+-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!--  -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!#
+-#errors
+-Line: 1 Col: 3 Expected '--' or 'DOCTYPE'. Not found.
+-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- # -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<?COMMENT?>
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
+-Line: 1 Col: 11 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- ?COMMENT? -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!COMMENT>
+-#errors
+-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
+-Line: 1 Col: 10 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- COMMENT -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-</ COMMENT >
+-#errors
+-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
+-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!--  COMMENT  -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<?COM--MENT?>
+-#errors
+-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
+-Line: 1 Col: 13 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- ?COM--MENT? -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!COM--MENT>
+-#errors
+-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
+-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- COM--MENT -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-</ COM--MENT >
+-#errors
+-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
+-Line: 1 Col: 14 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!--  COM--MENT  -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><style> EOF
+-#errors
+-Line: 1 Col: 26 Unexpected end of file. Expected end tag (style).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <style>
+-|       " EOF"
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><script> <!-- </script> --> </script> EOF
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       " <!-- "
+-|     " "
+-|   <body>
+-|     "-->  EOF"
+-
+-#data
+-<b><p></b>TEST
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 10 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|     <p>
+-|       <b>
+-|       "TEST"
+-
+-#data
+-<p id=a><b><p id=b></b>TEST
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 19 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 23 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       id="a"
+-|       <b>
+-|     <p>
+-|       id="b"
+-|       "TEST"
+-
+-#data
+-<b id=a><p><b id=b></p></b>TEST
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 27 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
+-Line: 1 Col: 31 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       id="a"
+-|       <p>
+-|         <b>
+-|           id="b"
+-|       "TEST"
+-
+-#data
+-<!DOCTYPE html><title>U-test</title><body><div><p>Test<u></p></div></body>
+-#errors
+-Line: 1 Col: 61 Unexpected end tag (p). Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "U-test"
+-|   <body>
+-|     <div>
+-|       <p>
+-|         "Test"
+-|         <u>
+-
+-#data
+-<!DOCTYPE html><font><table></font></table></font>
+-#errors
+-Line: 1 Col: 35 Unexpected end tag (font) in table context caused voodoo mode.
+-Line: 1 Col: 35 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|       <table>
+-
+-#data
+-<font><p>hello<b>cruel</font>world
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (font). Expected DOCTYPE.
+-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|     <p>
+-|       <font>
+-|         "hello"
+-|         <b>
+-|           "cruel"
+-|       <b>
+-|         "world"
+-
+-#data
+-<b>Test</i>Test
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 11 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "TestTest"
+-
+-#data
+-<b>A<cite>B<div>C
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "A"
+-|       <cite>
+-|         "B"
+-|         <div>
+-|           "C"
+-
+-#data
+-<b>A<cite>B<div>C</cite>D
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 24 Unexpected end tag (cite). Ignored.
+-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "A"
+-|       <cite>
+-|         "B"
+-|         <div>
+-|           "CD"
+-
+-#data
+-<b>A<cite>B<div>C</b>D
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 21 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 22 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "A"
+-|       <cite>
+-|         "B"
+-|     <div>
+-|       <b>
+-|         "C"
+-|       "D"
+-
+-#data
+-
+-#errors
+-Line: 1 Col: 0 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<DIV>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 5 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-
+-#data
+-<DIV> abc
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 9 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc"
+-
+-#data
+-<DIV> abc <B>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 13 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-
+-#data
+-<DIV> abc <B> def
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def"
+-
+-#data
+-<DIV> abc <B> def <I>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 21 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-
+-#data
+-<DIV> abc <B> def <I> ghi
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi"
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|           <p>
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 33 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|           <p>
+-|             " jkl"
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 38 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|         <p>
+-|           <b>
+-|             " jkl "
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B> mno
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 42 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|         <p>
+-|           <b>
+-|             " jkl "
+-|           " mno"
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|       <p>
+-|         <i>
+-|           <b>
+-|             " jkl "
+-|           " mno "
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 51 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|       <p>
+-|         <i>
+-|           <b>
+-|             " jkl "
+-|           " mno "
+-|         " pqr"
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 56 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|       <p>
+-|         <i>
+-|           <b>
+-|             " jkl "
+-|           " mno "
+-|         " pqr "
+-
+-#data
+-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P> stu
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 60 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       " abc "
+-|       <b>
+-|         " def "
+-|         <i>
+-|           " ghi "
+-|       <i>
+-|       <p>
+-|         <i>
+-|           <b>
+-|             " jkl "
+-|           " mno "
+-|         " pqr "
+-|       " stu"
+-
+-#data
+-<test attribute---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
+-#errors
+-Line: 1 Col: 1040 Unexpected start tag (test). Expected DOCTYPE.
+-Line: 1 Col: 1040 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <test>
+-|       attribute----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=""
+-
+-#data
+-<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe
+-#errors
+-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 39 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 39 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 39 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 45 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
+-
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="blah"
+-|       "aba"
+-|       <a>
+-|         href="foo"
+-|         "br"
+-|       <a>
+-|         href="foo"
+-|         "x"
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|     <a>
+-|       href="foo"
+-|       "aoe"
+-
+-#data
+-<a href="blah">aba<table><tr><td><a href="foo">br</td></tr>x</table>aoe
+-#errors
+-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 60 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="blah"
+-|       "abax"
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <a>
+-|                 href="foo"
+-|                 "br"
+-|       "aoe"
+-
+-#data
+-<table><a href="blah">aba<tr><td><a href="foo">br</td></tr>x</table>aoe
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 29 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="blah"
+-|       "aba"
+-|     <a>
+-|       href="blah"
+-|       "x"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <a>
+-|               href="foo"
+-|               "br"
+-|     <a>
+-|       href="blah"
+-|       "aoe"
+-
+-#data
+-<a href=a>aa<marquee>aa<a href=b>bb</marquee>aa
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 45 End tag (marquee) seen too early. Expected other end tag.
+-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="a"
+-|       "aa"
+-|       <marquee>
+-|         "aa"
+-|         <a>
+-|           href="b"
+-|           "bb"
+-|       "aa"
+-
+-#data
+-<wbr><strike><code></strike><code><strike></code>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (wbr). Expected DOCTYPE.
+-Line: 1 Col: 28 End tag (strike) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 49 Unexpected end tag (code). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <wbr>
+-|     <strike>
+-|       <code>
+-|     <code>
+-|       <code>
+-|         <strike>
+-
+-#data
+-<!DOCTYPE html><spacer>foo
+-#errors
+-26: End of file seen and there were open elements.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <spacer>
+-|       "foo"
+-
+-#data
+-<title><meta></title><link><title><meta></title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<meta>"
+-|     <link>
+-|     <title>
+-|       "<meta>"
+-|   <body>
+-
+-#data
+-<style><!--</style><meta><script>--><link></script>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 51 Unexpected end of file. Expected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       "<!--"
+-|     <meta>
+-|     <script>
+-|       "--><link>"
+-|   <body>
+-
+-#data
+-<head><meta></head><link>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 25 Unexpected start tag (link) that can be in head. Moved.
+-#document
+-| <html>
+-|   <head>
+-|     <meta>
+-|     <link>
+-|   <body>
+-
+-#data
+-<table><tr><tr><td><td><span><th><span>X</table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 33 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 48 Got table cell end tag (th) while required end tags are missing.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|         <tr>
+-|           <td>
+-|           <td>
+-|             <span>
+-|           <th>
+-|             <span>
+-|               "X"
+-
+-#data
+-<body><body><base><link><meta><title><p></title><body><p></body>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected start tag (body).
+-Line: 1 Col: 54 Unexpected start tag (body).
+-Line: 1 Col: 64 Unexpected end tag (p). Missing end tag (body).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <base>
+-|     <link>
+-|     <meta>
+-|     <title>
+-|       "<p>"
+-|     <p>
+-
+-#data
+-<textarea><p></textarea>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "<p>"
+-
+-#data
+-<p><image></p>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 10 Unexpected start tag (image). Treated as img.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <img>
+-
+-#data
+-<a><table><a></table><p><a><div><a>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 13 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 13 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 21 Unexpected end tag (table). Expected end tag (a).
+-Line: 1 Col: 27 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 27 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
+-Line: 1 Col: 32 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 35 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
+-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <a>
+-|       <table>
+-|     <p>
+-|       <a>
+-|     <div>
+-|       <a>
+-
+-#data
+-<head></p><meta><p>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 10 Unexpected end tag (p). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|     <meta>
+-|   <body>
+-|     <p>
+-
+-#data
+-<head></html><meta><p>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 19 Unexpected start tag (meta).
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <meta>
+-|     <p>
+-
+-#data
+-<b><table><td><i></table>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <i>
+-
+-#data
+-<b><table><td></b><i></table>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <i>
+-
+-#data
+-<h1><h2>
+-#errors
+-4: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-8: Heading cannot be a child of another heading.
+-8: End of file seen and there were open elements.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <h1>
+-|     <h2>
+-
+-#data
+-<a><p><a></a></p></a>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 9 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 9 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 21 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <p>
+-|       <a>
+-|       <a>
+-
+-#data
+-<b><button></b></button></b>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|     <button>
+-|       <b>
+-
+-#data
+-<p><b><div><marquee></p></b></div>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
+-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|     <div>
+-|       <b>
+-|         <marquee>
+-|           <p>
+-
+-#data
+-<script></script></div><title></title><p><p>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end tag (div). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|     <title>
+-|   <body>
+-|     <p>
+-|     <p>
+-
+-#data
+-<p><hr></p>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <hr>
+-|     <p>
+-
+-#data
+-<select><b><option><select><option></b></select>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
+-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
+-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
+-Line: 1 Col: 48 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|     <option>
+-
+-#data
+-<html><head><title></title><body></body></html>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|   <body>
+-
+-#data
+-<a><table><td><a><table></table><a></tr><a></table><a>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
+-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
+-Line: 1 Col: 54 Unexpected start tag (a) implies end tag (a).
+-Line: 1 Col: 54 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
+-Line: 1 Col: 54 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <a>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <a>
+-|                 <table>
+-|               <a>
+-|     <a>
+-
+-#data
+-<ul><li></li><div><li></div><li><li><div><li><address><li><b><em></b><li></ul>
+-#errors
+-Line: 1 Col: 4 Unexpected start tag (ul). Expected DOCTYPE.
+-Line: 1 Col: 45 Missing end tag (div, li).
+-Line: 1 Col: 58 Missing end tag (address, li).
+-Line: 1 Col: 69 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ul>
+-|       <li>
+-|       <div>
+-|         <li>
+-|       <li>
+-|       <li>
+-|         <div>
+-|       <li>
+-|         <address>
+-|       <li>
+-|         <b>
+-|           <em>
+-|       <li>
+-
+-#data
+-<ul><li><ul></li><li>a</li></ul></li></ul>
+-#errors
+-XXX: fix me
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ul>
+-|       <li>
+-|         <ul>
+-|           <li>
+-|             "a"
+-
+-#data
+-<frameset><frame><frameset><frame></frameset><noframes></noframes></frameset>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <frame>
+-|     <frameset>
+-|       <frame>
+-|     <noframes>
+-
+-#data
+-<h1><table><td><h3></table><h3></h1>
+-#errors
+-4: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-15: âtdâ start tag in table body.
+-27: Unclosed elements.
+-31: Heading cannot be a child of another heading.
+-36: End tag âh1â seen but there were unclosed elements.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <h1>
+-|       <table>
+-|         <tbody>
+-|           <tr>
+-|             <td>
+-|               <h3>
+-|     <h3>
+-
+-#data
+-<table><colgroup><col><colgroup><col><col><col><colgroup><col><col><thead><tr><td></table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <colgroup>
+-|         <col>
+-|       <colgroup>
+-|         <col>
+-|         <col>
+-|         <col>
+-|       <colgroup>
+-|         <col>
+-|         <col>
+-|       <thead>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><col><tbody><col><tr><col><td><col></table><col>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 37 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 55 Unexpected start tag col. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <colgroup>
+-|         <col>
+-|       <tbody>
+-|       <colgroup>
+-|         <col>
+-|       <tbody>
+-|         <tr>
+-|       <colgroup>
+-|         <col>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|       <colgroup>
+-|         <col>
+-
+-#data
+-<table><colgroup><tbody><colgroup><tr><colgroup><td><colgroup></table><colgroup>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 52 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 80 Unexpected start tag colgroup. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <colgroup>
+-|       <tbody>
+-|       <colgroup>
+-|       <tbody>
+-|         <tr>
+-|       <colgroup>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|       <colgroup>
+-
+-#data
+-</strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
+-#errors
+-Line: 1 Col: 9 Unexpected end tag (strong). Expected DOCTYPE.
+-Line: 1 Col: 9 Unexpected end tag (strong) after the (implied) root element.
+-Line: 1 Col: 13 Unexpected end tag (b) after the (implied) root element.
+-Line: 1 Col: 18 Unexpected end tag (em) after the (implied) root element.
+-Line: 1 Col: 22 Unexpected end tag (i) after the (implied) root element.
+-Line: 1 Col: 26 Unexpected end tag (u) after the (implied) root element.
+-Line: 1 Col: 35 Unexpected end tag (strike) after the (implied) root element.
+-Line: 1 Col: 39 Unexpected end tag (s) after the (implied) root element.
+-Line: 1 Col: 47 Unexpected end tag (blink) after the (implied) root element.
+-Line: 1 Col: 52 Unexpected end tag (tt) after the (implied) root element.
+-Line: 1 Col: 58 Unexpected end tag (pre) after the (implied) root element.
+-Line: 1 Col: 64 Unexpected end tag (big) after the (implied) root element.
+-Line: 1 Col: 72 Unexpected end tag (small) after the (implied) root element.
+-Line: 1 Col: 79 Unexpected end tag (font) after the (implied) root element.
+-Line: 1 Col: 88 Unexpected end tag (select) after the (implied) root element.
+-Line: 1 Col: 93 Unexpected end tag (h1) after the (implied) root element.
+-Line: 1 Col: 98 Unexpected end tag (h2) after the (implied) root element.
+-Line: 1 Col: 103 Unexpected end tag (h3) after the (implied) root element.
+-Line: 1 Col: 108 Unexpected end tag (h4) after the (implied) root element.
+-Line: 1 Col: 113 Unexpected end tag (h5) after the (implied) root element.
+-Line: 1 Col: 118 Unexpected end tag (h6) after the (implied) root element.
+-Line: 1 Col: 125 Unexpected end tag (body) after the (implied) root element.
+-Line: 1 Col: 130 Unexpected end tag (br). Treated as br element.
+-Line: 1 Col: 134 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 140 This element (img) has no end tag.
+-Line: 1 Col: 148 Unexpected end tag (title). Ignored.
+-Line: 1 Col: 155 Unexpected end tag (span). Ignored.
+-Line: 1 Col: 163 Unexpected end tag (style). Ignored.
+-Line: 1 Col: 172 Unexpected end tag (script). Ignored.
+-Line: 1 Col: 180 Unexpected end tag (table). Ignored.
+-Line: 1 Col: 185 Unexpected end tag (th). Ignored.
+-Line: 1 Col: 190 Unexpected end tag (td). Ignored.
+-Line: 1 Col: 195 Unexpected end tag (tr). Ignored.
+-Line: 1 Col: 203 This element (frame) has no end tag.
+-Line: 1 Col: 210 This element (area) has no end tag.
+-Line: 1 Col: 217 Unexpected end tag (link). Ignored.
+-Line: 1 Col: 225 This element (param) has no end tag.
+-Line: 1 Col: 230 This element (hr) has no end tag.
+-Line: 1 Col: 238 This element (input) has no end tag.
+-Line: 1 Col: 244 Unexpected end tag (col). Ignored.
+-Line: 1 Col: 251 Unexpected end tag (base). Ignored.
+-Line: 1 Col: 258 Unexpected end tag (meta). Ignored.
+-Line: 1 Col: 269 This element (basefont) has no end tag.
+-Line: 1 Col: 279 This element (bgsound) has no end tag.
+-Line: 1 Col: 287 This element (embed) has no end tag.
+-Line: 1 Col: 296 This element (spacer) has no end tag.
+-Line: 1 Col: 300 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 305 End tag (dd) seen too early. Expected other end tag.
+-Line: 1 Col: 310 End tag (dt) seen too early. Expected other end tag.
+-Line: 1 Col: 320 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 331 Unexpected end tag (colgroup). Ignored.
+-Line: 1 Col: 339 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 347 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 355 Unexpected end tag (thead). Ignored.
+-Line: 1 Col: 365 End tag (address) seen too early. Expected other end tag.
+-Line: 1 Col: 378 End tag (blockquote) seen too early. Expected other end tag.
+-Line: 1 Col: 387 End tag (center) seen too early. Expected other end tag.
+-Line: 1 Col: 393 Unexpected end tag (dir). Ignored.
+-Line: 1 Col: 399 End tag (div) seen too early. Expected other end tag.
+-Line: 1 Col: 404 End tag (dl) seen too early. Expected other end tag.
+-Line: 1 Col: 415 End tag (fieldset) seen too early. Expected other end tag.
+-Line: 1 Col: 425 End tag (listing) seen too early. Expected other end tag.
+-Line: 1 Col: 432 End tag (menu) seen too early. Expected other end tag.
+-Line: 1 Col: 437 End tag (ol) seen too early. Expected other end tag.
+-Line: 1 Col: 442 End tag (ul) seen too early. Expected other end tag.
+-Line: 1 Col: 447 End tag (li) seen too early. Expected other end tag.
+-Line: 1 Col: 454 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 460 This element (wbr) has no end tag.
+-Line: 1 Col: 476 End tag (button) seen too early. Expected other end tag.
+-Line: 1 Col: 486 End tag (marquee) seen too early. Expected other end tag.
+-Line: 1 Col: 495 End tag (object) seen too early. Expected other end tag.
+-Line: 1 Col: 513 Unexpected end tag (html). Ignored.
+-Line: 1 Col: 513 Unexpected end tag (frameset). Ignored.
+-Line: 1 Col: 520 Unexpected end tag (head). Ignored.
+-Line: 1 Col: 529 Unexpected end tag (iframe). Ignored.
+-Line: 1 Col: 537 This element (image) has no end tag.
+-Line: 1 Col: 547 This element (isindex) has no end tag.
+-Line: 1 Col: 557 Unexpected end tag (noembed). Ignored.
+-Line: 1 Col: 568 Unexpected end tag (noframes). Ignored.
+-Line: 1 Col: 579 Unexpected end tag (noscript). Ignored.
+-Line: 1 Col: 590 Unexpected end tag (optgroup). Ignored.
+-Line: 1 Col: 599 Unexpected end tag (option). Ignored.
+-Line: 1 Col: 611 Unexpected end tag (plaintext). Ignored.
+-Line: 1 Col: 622 Unexpected end tag (textarea). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-|     <p>
+-
+-#data
+-<table><tr></strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end tag (strong) in table context caused voodoo mode.
+-Line: 1 Col: 20 End tag (strong) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 24 Unexpected end tag (b) in table context caused voodoo mode.
+-Line: 1 Col: 24 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 29 Unexpected end tag (em) in table context caused voodoo mode.
+-Line: 1 Col: 29 End tag (em) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 33 Unexpected end tag (i) in table context caused voodoo mode.
+-Line: 1 Col: 33 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 37 Unexpected end tag (u) in table context caused voodoo mode.
+-Line: 1 Col: 37 End tag (u) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 46 Unexpected end tag (strike) in table context caused voodoo mode.
+-Line: 1 Col: 46 End tag (strike) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 50 Unexpected end tag (s) in table context caused voodoo mode.
+-Line: 1 Col: 50 End tag (s) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 58 Unexpected end tag (blink) in table context caused voodoo mode.
+-Line: 1 Col: 58 Unexpected end tag (blink). Ignored.
+-Line: 1 Col: 63 Unexpected end tag (tt) in table context caused voodoo mode.
+-Line: 1 Col: 63 End tag (tt) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 69 Unexpected end tag (pre) in table context caused voodoo mode.
+-Line: 1 Col: 69 End tag (pre) seen too early. Expected other end tag.
+-Line: 1 Col: 75 Unexpected end tag (big) in table context caused voodoo mode.
+-Line: 1 Col: 75 End tag (big) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 83 Unexpected end tag (small) in table context caused voodoo mode.
+-Line: 1 Col: 83 End tag (small) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 90 Unexpected end tag (font) in table context caused voodoo mode.
+-Line: 1 Col: 90 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 99 Unexpected end tag (select) in table context caused voodoo mode.
+-Line: 1 Col: 99 Unexpected end tag (select). Ignored.
+-Line: 1 Col: 104 Unexpected end tag (h1) in table context caused voodoo mode.
+-Line: 1 Col: 104 End tag (h1) seen too early. Expected other end tag.
+-Line: 1 Col: 109 Unexpected end tag (h2) in table context caused voodoo mode.
+-Line: 1 Col: 109 End tag (h2) seen too early. Expected other end tag.
+-Line: 1 Col: 114 Unexpected end tag (h3) in table context caused voodoo mode.
+-Line: 1 Col: 114 End tag (h3) seen too early. Expected other end tag.
+-Line: 1 Col: 119 Unexpected end tag (h4) in table context caused voodoo mode.
+-Line: 1 Col: 119 End tag (h4) seen too early. Expected other end tag.
+-Line: 1 Col: 124 Unexpected end tag (h5) in table context caused voodoo mode.
+-Line: 1 Col: 124 End tag (h5) seen too early. Expected other end tag.
+-Line: 1 Col: 129 Unexpected end tag (h6) in table context caused voodoo mode.
+-Line: 1 Col: 129 End tag (h6) seen too early. Expected other end tag.
+-Line: 1 Col: 136 Unexpected end tag (body) in the table row phase. Ignored.
+-Line: 1 Col: 141 Unexpected end tag (br) in table context caused voodoo mode.
+-Line: 1 Col: 141 Unexpected end tag (br). Treated as br element.
+-Line: 1 Col: 145 Unexpected end tag (a) in table context caused voodoo mode.
+-Line: 1 Col: 145 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 151 Unexpected end tag (img) in table context caused voodoo mode.
+-Line: 1 Col: 151 This element (img) has no end tag.
+-Line: 1 Col: 159 Unexpected end tag (title) in table context caused voodoo mode.
+-Line: 1 Col: 159 Unexpected end tag (title). Ignored.
+-Line: 1 Col: 166 Unexpected end tag (span) in table context caused voodoo mode.
+-Line: 1 Col: 166 Unexpected end tag (span). Ignored.
+-Line: 1 Col: 174 Unexpected end tag (style) in table context caused voodoo mode.
+-Line: 1 Col: 174 Unexpected end tag (style). Ignored.
+-Line: 1 Col: 183 Unexpected end tag (script) in table context caused voodoo mode.
+-Line: 1 Col: 183 Unexpected end tag (script). Ignored.
+-Line: 1 Col: 196 Unexpected end tag (th). Ignored.
+-Line: 1 Col: 201 Unexpected end tag (td). Ignored.
+-Line: 1 Col: 206 Unexpected end tag (tr). Ignored.
+-Line: 1 Col: 214 This element (frame) has no end tag.
+-Line: 1 Col: 221 This element (area) has no end tag.
+-Line: 1 Col: 228 Unexpected end tag (link). Ignored.
+-Line: 1 Col: 236 This element (param) has no end tag.
+-Line: 1 Col: 241 This element (hr) has no end tag.
+-Line: 1 Col: 249 This element (input) has no end tag.
+-Line: 1 Col: 255 Unexpected end tag (col). Ignored.
+-Line: 1 Col: 262 Unexpected end tag (base). Ignored.
+-Line: 1 Col: 269 Unexpected end tag (meta). Ignored.
+-Line: 1 Col: 280 This element (basefont) has no end tag.
+-Line: 1 Col: 290 This element (bgsound) has no end tag.
+-Line: 1 Col: 298 This element (embed) has no end tag.
+-Line: 1 Col: 307 This element (spacer) has no end tag.
+-Line: 1 Col: 311 Unexpected end tag (p). Ignored.
+-Line: 1 Col: 316 End tag (dd) seen too early. Expected other end tag.
+-Line: 1 Col: 321 End tag (dt) seen too early. Expected other end tag.
+-Line: 1 Col: 331 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 342 Unexpected end tag (colgroup). Ignored.
+-Line: 1 Col: 350 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 358 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 366 Unexpected end tag (thead). Ignored.
+-Line: 1 Col: 376 End tag (address) seen too early. Expected other end tag.
+-Line: 1 Col: 389 End tag (blockquote) seen too early. Expected other end tag.
+-Line: 1 Col: 398 End tag (center) seen too early. Expected other end tag.
+-Line: 1 Col: 404 Unexpected end tag (dir). Ignored.
+-Line: 1 Col: 410 End tag (div) seen too early. Expected other end tag.
+-Line: 1 Col: 415 End tag (dl) seen too early. Expected other end tag.
+-Line: 1 Col: 426 End tag (fieldset) seen too early. Expected other end tag.
+-Line: 1 Col: 436 End tag (listing) seen too early. Expected other end tag.
+-Line: 1 Col: 443 End tag (menu) seen too early. Expected other end tag.
+-Line: 1 Col: 448 End tag (ol) seen too early. Expected other end tag.
+-Line: 1 Col: 453 End tag (ul) seen too early. Expected other end tag.
+-Line: 1 Col: 458 End tag (li) seen too early. Expected other end tag.
+-Line: 1 Col: 465 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
+-Line: 1 Col: 471 This element (wbr) has no end tag.
+-Line: 1 Col: 487 End tag (button) seen too early. Expected other end tag.
+-Line: 1 Col: 497 End tag (marquee) seen too early. Expected other end tag.
+-Line: 1 Col: 506 End tag (object) seen too early. Expected other end tag.
+-Line: 1 Col: 524 Unexpected end tag (html). Ignored.
+-Line: 1 Col: 524 Unexpected end tag (frameset). Ignored.
+-Line: 1 Col: 531 Unexpected end tag (head). Ignored.
+-Line: 1 Col: 540 Unexpected end tag (iframe). Ignored.
+-Line: 1 Col: 548 This element (image) has no end tag.
+-Line: 1 Col: 558 This element (isindex) has no end tag.
+-Line: 1 Col: 568 Unexpected end tag (noembed). Ignored.
+-Line: 1 Col: 579 Unexpected end tag (noframes). Ignored.
+-Line: 1 Col: 590 Unexpected end tag (noscript). Ignored.
+-Line: 1 Col: 601 Unexpected end tag (optgroup). Ignored.
+-Line: 1 Col: 610 Unexpected end tag (option). Ignored.
+-Line: 1 Col: 622 Unexpected end tag (plaintext). Ignored.
+-Line: 1 Col: 633 Unexpected end tag (textarea). Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|     <p>
+-
+-#data
+-<frameset>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 1 Col: 10 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests20.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests20.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests20.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests20.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,455 +0,0 @@
+-#data
+-<!doctype html><p><button><button>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|       <button>
+-
+-#data
+-<!doctype html><p><button><address>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <address>
+-
+-#data
+-<!doctype html><p><button><blockquote>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <blockquote>
+-
+-#data
+-<!doctype html><p><button><menu>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <menu>
+-
+-#data
+-<!doctype html><p><button><p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <p>
+-
+-#data
+-<!doctype html><p><button><ul>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <ul>
+-
+-#data
+-<!doctype html><p><button><h1>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <h1>
+-
+-#data
+-<!doctype html><p><button><h6>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <h6>
+-
+-#data
+-<!doctype html><p><button><listing>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <listing>
+-
+-#data
+-<!doctype html><p><button><pre>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <pre>
+-
+-#data
+-<!doctype html><p><button><form>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <form>
+-
+-#data
+-<!doctype html><p><button><li>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <li>
+-
+-#data
+-<!doctype html><p><button><dd>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <dd>
+-
+-#data
+-<!doctype html><p><button><dt>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <dt>
+-
+-#data
+-<!doctype html><p><button><plaintext>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <plaintext>
+-
+-#data
+-<!doctype html><p><button><table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <table>
+-
+-#data
+-<!doctype html><p><button><hr>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <hr>
+-
+-#data
+-<!doctype html><p><button><xmp>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <xmp>
+-
+-#data
+-<!doctype html><p><button></p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <button>
+-|         <p>
+-
+-#data
+-<!doctype html><address><button></address>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <address>
+-|       <button>
+-|     "a"
+-
+-#data
+-<!doctype html><address><button></address>a
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <address>
+-|       <button>
+-|     "a"
+-
+-#data
+-<p><table></p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <p>
+-|       <table>
+-
+-#data
+-<!doctype html><svg>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<!doctype html><p><figcaption>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <figcaption>
+-
+-#data
+-<!doctype html><p><summary>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <summary>
+-
+-#data
+-<!doctype html><form><table><form>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <table>
+-
+-#data
+-<!doctype html><table><form><form>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <form>
+-
+-#data
+-<!doctype html><table><form></table><form>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <form>
+-
+-#data
+-<!doctype html><svg><foreignObject><p>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg foreignObject>
+-|         <p>
+-
+-#data
+-<!doctype html><svg><title>abc
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg title>
+-|         "abc"
+-
+-#data
+-<option><span><option>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <option>
+-|       <span>
+-|         <option>
+-
+-#data
+-<option><option>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <option>
+-|     <option>
+-
+-#data
+-<math><annotation-xml><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|     <div>
+-
+-#data
+-<math><annotation-xml encoding="application/svg+xml"><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding="application/svg+xml"
+-|     <div>
+-
+-#data
+-<math><annotation-xml encoding="application/xhtml+xml"><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding="application/xhtml+xml"
+-|         <div>
+-
+-#data
+-<math><annotation-xml encoding="aPPlication/xhtmL+xMl"><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding="aPPlication/xhtmL+xMl"
+-|         <div>
+-
+-#data
+-<math><annotation-xml encoding="text/html"><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding="text/html"
+-|         <div>
+-
+-#data
+-<math><annotation-xml encoding="Text/htmL"><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding="Text/htmL"
+-|         <div>
+-
+-#data
+-<math><annotation-xml encoding=" text/html "><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         encoding=" text/html "
+-|     <div>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests21.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests21.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests21.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests21.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,221 +0,0 @@
+-#data
+-<svg><![CDATA[foo]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "foo"
+-
+-#data
+-<math><![CDATA[foo]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       "foo"
+-
+-#data
+-<div><![CDATA[foo]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <!-- [CDATA[foo]] -->
+-
+-#data
+-<svg><![CDATA[foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "foo"
+-
+-#data
+-<svg><![CDATA[foo
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "foo"
+-
+-#data
+-<svg><![CDATA[
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<svg><![CDATA[]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-
+-#data
+-<svg><![CDATA[]] >]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "]] >"
+-
+-#data
+-<svg><![CDATA[]] >]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "]] >"
+-
+-#data
+-<svg><![CDATA[]]
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "]]"
+-
+-#data
+-<svg><![CDATA[]
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "]"
+-
+-#data
+-<svg><![CDATA[]>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "]>a"
+-
+-#data
+-<svg><foreignObject><div><![CDATA[foo]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg foreignObject>
+-|         <div>
+-|           <!-- [CDATA[foo]] -->
+-
+-#data
+-<svg><![CDATA[<svg>]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>"
+-
+-#data
+-<svg><![CDATA[</svg>a]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "</svg>a"
+-
+-#data
+-<svg><![CDATA[<svg>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>a"
+-
+-#data
+-<svg><![CDATA[</svg>a
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "</svg>a"
+-
+-#data
+-<svg><![CDATA[<svg>]]><path>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>"
+-|       <svg path>
+-
+-#data
+-<svg><![CDATA[<svg>]]></path>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>"
+-
+-#data
+-<svg><![CDATA[<svg>]]><!--path-->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>"
+-|       <!-- path -->
+-
+-#data
+-<svg><![CDATA[<svg>]]>path
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<svg>path"
+-
+-#data
+-<svg><![CDATA[<!--svg-->]]>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       "<!--svg-->"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests22.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests22.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests22.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests22.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,157 +0,0 @@
+-#data
+-<a><b><big><em><strong><div>X</a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|         <big>
+-|           <em>
+-|             <strong>
+-|     <big>
+-|       <em>
+-|         <strong>
+-|           <div>
+-|             <a>
+-|               "X"
+-
+-#data
+-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8>A</a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|     <b>
+-|       <div>
+-|         id="1"
+-|         <a>
+-|         <div>
+-|           id="2"
+-|           <a>
+-|           <div>
+-|             id="3"
+-|             <a>
+-|             <div>
+-|               id="4"
+-|               <a>
+-|               <div>
+-|                 id="5"
+-|                 <a>
+-|                 <div>
+-|                   id="6"
+-|                   <a>
+-|                   <div>
+-|                     id="7"
+-|                     <a>
+-|                     <div>
+-|                       id="8"
+-|                       <a>
+-|                         "A"
+-
+-#data
+-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9>A</a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|     <b>
+-|       <div>
+-|         id="1"
+-|         <a>
+-|         <div>
+-|           id="2"
+-|           <a>
+-|           <div>
+-|             id="3"
+-|             <a>
+-|             <div>
+-|               id="4"
+-|               <a>
+-|               <div>
+-|                 id="5"
+-|                 <a>
+-|                 <div>
+-|                   id="6"
+-|                   <a>
+-|                   <div>
+-|                     id="7"
+-|                     <a>
+-|                     <div>
+-|                       id="8"
+-|                       <a>
+-|                         <div>
+-|                           id="9"
+-|                           "A"
+-
+-#data
+-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9><div id=10>A</a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       <b>
+-|     <b>
+-|       <div>
+-|         id="1"
+-|         <a>
+-|         <div>
+-|           id="2"
+-|           <a>
+-|           <div>
+-|             id="3"
+-|             <a>
+-|             <div>
+-|               id="4"
+-|               <a>
+-|               <div>
+-|                 id="5"
+-|                 <a>
+-|                 <div>
+-|                   id="6"
+-|                   <a>
+-|                   <div>
+-|                     id="7"
+-|                     <a>
+-|                     <div>
+-|                       id="8"
+-|                       <a>
+-|                         <div>
+-|                           id="9"
+-|                           <div>
+-|                             id="10"
+-|                             "A"
+-
+-#data
+-<cite><b><cite><i><cite><i><cite><i><div>X</b>TEST
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (cite). Expected DOCTYPE.
+-Line: 1 Col: 46 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 50 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <cite>
+-|       <b>
+-|         <cite>
+-|           <i>
+-|             <cite>
+-|               <i>
+-|                 <cite>
+-|                   <i>
+-|       <i>
+-|         <i>
+-|           <div>
+-|             <b>
+-|               "X"
+-|             "TEST"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests23.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests23.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests23.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests23.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,155 +0,0 @@
+-#data
+-<p><font size=4><font color=red><font size=4><font size=4><font size=4><font size=4><font size=4><font color=red><p>X
+-#errors
+-3: Start tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-116: Unclosed elements.
+-117: End of file seen and there were open elements.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <font>
+-|         size="4"
+-|         <font>
+-|           color="red"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="4"
+-|               <font>
+-|                 size="4"
+-|                 <font>
+-|                   size="4"
+-|                   <font>
+-|                     size="4"
+-|                     <font>
+-|                       color="red"
+-|     <p>
+-|       <font>
+-|         color="red"
+-|         <font>
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="4"
+-|               <font>
+-|                 color="red"
+-|                 "X"
+-
+-#data
+-<p><font size=4><font size=4><font size=4><font size=4><p>X
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <font>
+-|         size="4"
+-|         <font>
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="4"
+-|     <p>
+-|       <font>
+-|         size="4"
+-|         <font>
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             "X"
+-
+-#data
+-<p><font size=4><font size=4><font size=4><font size="5"><font size=4><p>X
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <font>
+-|         size="4"
+-|         <font>
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="5"
+-|               <font>
+-|                 size="4"
+-|     <p>
+-|       <font>
+-|         size="4"
+-|         <font>
+-|           size="4"
+-|           <font>
+-|             size="5"
+-|             <font>
+-|               size="4"
+-|               "X"
+-
+-#data
+-<p><font size=4 id=a><font size=4 id=b><font size=4><font size=4><p>X
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <font>
+-|         id="a"
+-|         size="4"
+-|         <font>
+-|           id="b"
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="4"
+-|     <p>
+-|       <font>
+-|         id="a"
+-|         size="4"
+-|         <font>
+-|           id="b"
+-|           size="4"
+-|           <font>
+-|             size="4"
+-|             <font>
+-|               size="4"
+-|               "X"
+-
+-#data
+-<p><b id=a><b id=a><b id=a><b><object><b id=a><b id=a>X</object><p>Y
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <b>
+-|         id="a"
+-|         <b>
+-|           id="a"
+-|           <b>
+-|             id="a"
+-|             <b>
+-|               <object>
+-|                 <b>
+-|                   id="a"
+-|                   <b>
+-|                     id="a"
+-|                     "X"
+-|     <p>
+-|       <b>
+-|         id="a"
+-|         <b>
+-|           id="a"
+-|           <b>
+-|             id="a"
+-|             <b>
+-|               "Y"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests24.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests24.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests24.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests24.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,79 +0,0 @@
+-#data
+-<!DOCTYPE html>&NotEqualTilde;
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "âÌž"
+-
+-#data
+-<!DOCTYPE html>&NotEqualTilde;A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "âÌžA"
+-
+-#data
+-<!DOCTYPE html>&ThickSpace;
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ââ"
+-
+-#data
+-<!DOCTYPE html>&ThickSpace;A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ââA"
+-
+-#data
+-<!DOCTYPE html>&NotSubset;
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ââ"
+-
+-#data
+-<!DOCTYPE html>&NotSubset;A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ââA"
+-
+-#data
+-<!DOCTYPE html>&Gopf;
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ðŸ"
+-
+-#data
+-<!DOCTYPE html>&Gopf;A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "ðŸA"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests25.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests25.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests25.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests25.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,219 +0,0 @@
+-#data
+-<!DOCTYPE html><body><foo>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       "A"
+-
+-#data
+-<!DOCTYPE html><body><area>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <area>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><base>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <base>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><basefont>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <basefont>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><bgsound>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <bgsound>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><br>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><col>A
+-#errors
+-26: Stray start tag âcolâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><command>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <command>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><embed>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <embed>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><frame>A
+-#errors
+-26: Stray start tag âframeâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><hr>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <hr>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><img>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <img>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><input>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><keygen>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <keygen>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><link>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <link>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><meta>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <meta>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><param>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <param>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><source>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <source>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><track>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <track>
+-|     "A"
+-
+-#data
+-<!DOCTYPE html><body><wbr>A
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <wbr>
+-|     "A"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests26.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests26.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests26.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests26.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,313 +0,0 @@
+-#data
+-<!DOCTYPE html><body><a href='#1'><nobr>1<nobr></a><br><a href='#2'><nobr>2<nobr></a><br><a href='#3'><nobr>3<nobr></a>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       href="#1"
+-|       <nobr>
+-|         "1"
+-|       <nobr>
+-|     <nobr>
+-|       <br>
+-|       <a>
+-|         href="#2"
+-|     <a>
+-|       href="#2"
+-|       <nobr>
+-|         "2"
+-|       <nobr>
+-|     <nobr>
+-|       <br>
+-|       <a>
+-|         href="#3"
+-|     <a>
+-|       href="#3"
+-|       <nobr>
+-|         "3"
+-|       <nobr>
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<nobr></b><i><nobr>2<nobr></i>3
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|       <nobr>
+-|     <nobr>
+-|       <i>
+-|     <i>
+-|       <nobr>
+-|         "2"
+-|       <nobr>
+-|     <nobr>
+-|       "3"
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<table><nobr></b><i><nobr>2<nobr></i>3
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|         <nobr>
+-|           <i>
+-|         <i>
+-|           <nobr>
+-|             "2"
+-|           <nobr>
+-|         <nobr>
+-|           "3"
+-|         <table>
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<table><tr><td><nobr></b><i><nobr>2<nobr></i>3
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|         <table>
+-|           <tbody>
+-|             <tr>
+-|               <td>
+-|                 <nobr>
+-|                   <i>
+-|                 <i>
+-|                   <nobr>
+-|                     "2"
+-|                   <nobr>
+-|                 <nobr>
+-|                   "3"
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<div><nobr></b><i><nobr>2<nobr></i>3
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|     <div>
+-|       <b>
+-|         <nobr>
+-|         <nobr>
+-|       <nobr>
+-|         <i>
+-|       <i>
+-|         <nobr>
+-|           "2"
+-|         <nobr>
+-|       <nobr>
+-|         "3"
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<nobr></b><div><i><nobr>2<nobr></i>3
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|       <nobr>
+-|     <div>
+-|       <nobr>
+-|         <i>
+-|       <i>
+-|         <nobr>
+-|           "2"
+-|         <nobr>
+-|       <nobr>
+-|         "3"
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<nobr><ins></b><i><nobr>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|       <nobr>
+-|         <ins>
+-|     <nobr>
+-|       <i>
+-|     <i>
+-|       <nobr>
+-
+-#data
+-<!DOCTYPE html><body><b><nobr>1<ins><nobr></b><i>2
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       <nobr>
+-|         "1"
+-|         <ins>
+-|       <nobr>
+-|     <nobr>
+-|       <i>
+-|         "2"
+-
+-#data
+-<!DOCTYPE html><body><b>1<nobr></b><i><nobr>2</i>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "1"
+-|       <nobr>
+-|     <nobr>
+-|       <i>
+-|     <i>
+-|       <nobr>
+-|         "2"
+-
+-#data
+-<p><code x</code></p>
+-
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <code>
+-|         code=""
+-|         x<=""
+-|     <code>
+-|       code=""
+-|       x<=""
+-|       "
+-"
+-
+-#data
+-<!DOCTYPE html><svg><foreignObject><p><i></p>a
+-#errors
+-45: End tag âpâ seen, but there were open elements.
+-41: Unclosed element âiâ.
+-46: End of file seen and there were open elements.
+-35: Unclosed element âforeignObjectâ.
+-20: Unclosed element âsvgâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg foreignObject>
+-|         <p>
+-|           <i>
+-|         <i>
+-|           "a"
+-
+-#data
+-<!DOCTYPE html><table><tr><td><svg><foreignObject><p><i></p>a
+-#errors
+-56: End tag âpâ seen, but there were open elements.
+-52: Unclosed element âiâ.
+-57: End of file seen and there were open elements.
+-46: Unclosed element âforeignObjectâ.
+-31: Unclosed element âsvgâ.
+-22: Unclosed element âtableâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg foreignObject>
+-|                 <p>
+-|                   <i>
+-|                 <i>
+-|                   "a"
+-
+-#data
+-<!DOCTYPE html><math><mtext><p><i></p>a
+-#errors
+-38: End tag âpâ seen, but there were open elements.
+-34: Unclosed element âiâ.
+-39: End of file in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mtext>
+-|         <p>
+-|           <i>
+-|         <i>
+-|           "a"
+-
+-#data
+-<!DOCTYPE html><table><tr><td><math><mtext><p><i></p>a
+-#errors
+-53: End tag âpâ seen, but there were open elements.
+-49: Unclosed element âiâ.
+-54: End of file in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <math math>
+-|               <math mtext>
+-|                 <p>
+-|                   <i>
+-|                 <i>
+-|                   "a"
+-
+-#data
+-<!DOCTYPE html><body><div><!/div>a
+-#errors
+-29: Bogus comment.
+-34: End of file seen and there were open elements.
+-26: Unclosed element âdivâ.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <!-- /div -->
+-|       "a"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests2.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests2.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests2.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests2.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,763 +0,0 @@
+-#data
+-<!DOCTYPE html>Test
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Test"
+-
+-#data
+-<textarea>test</div>test
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-Line: 1 Col: 24 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "test</div>test"
+-
+-#data
+-<table><td>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 11 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><td>test</tbody></table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "test"
+-
+-#data
+-<frame>test
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (frame). Expected DOCTYPE.
+-Line: 1 Col: 7 Unexpected start tag frame. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "test"
+-
+-#data
+-<!DOCTYPE html><frameset>test
+-#errors
+-Line: 1 Col: 29 Unepxected characters in the frameset phase. Characters ignored.
+-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><frameset><!DOCTYPE html>
+-#errors
+-Line: 1 Col: 40 Unexpected DOCTYPE. Ignored.
+-Line: 1 Col: 40 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><font><p><b>test</font>
+-#errors
+-Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|     <p>
+-|       <font>
+-|         <b>
+-|           "test"
+-
+-#data
+-<!DOCTYPE html><dt><div><dd>
+-#errors
+-Line: 1 Col: 28 Missing end tag (div, dt).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dt>
+-|       <div>
+-|     <dd>
+-
+-#data
+-<script></x
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       "</x"
+-|   <body>
+-
+-#data
+-<table><plaintext><td>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 18 Unexpected start tag (plaintext) in table context caused voodoo mode.
+-Line: 1 Col: 22 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "<td>"
+-|     <table>
+-
+-#data
+-<plaintext></plaintext>
+-#errors
+-Line: 1 Col: 11 Unexpected start tag (plaintext). Expected DOCTYPE.
+-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <plaintext>
+-|       "</plaintext>"
+-
+-#data
+-<!DOCTYPE html><table><tr>TEST
+-#errors
+-Line: 1 Col: 30 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 30 Unexpected end of file. Expected table content.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "TEST"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!DOCTYPE html><body t1=1><body t2=2><body t3=3 t4=4>
+-#errors
+-Line: 1 Col: 37 Unexpected start tag (body).
+-Line: 1 Col: 53 Unexpected start tag (body).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     t1="1"
+-|     t2="2"
+-|     t3="3"
+-|     t4="4"
+-
+-#data
+-</b test
+-#errors
+-Line: 1 Col: 8 Unexpected end of file in attribute name.
+-Line: 1 Col: 8 End tag contains unexpected attributes.
+-Line: 1 Col: 8 Unexpected end tag (b). Expected DOCTYPE.
+-Line: 1 Col: 8 Unexpected end tag (b) after the (implied) root element.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html></b test<b &=&amp>X
+-#errors
+-Line: 1 Col: 32 Named entity didn't end with ';'.
+-Line: 1 Col: 33 End tag contains unexpected attributes.
+-Line: 1 Col: 33 Unexpected end tag (b) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-
+-#data
+-<!doctypehtml><scrIPt type=text/x-foobar;baz>X</SCRipt
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-Line: 1 Col: 54 Unexpected end of file in the tag name.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       type="text/x-foobar;baz"
+-|       "X</SCRipt"
+-|   <body>
+-
+-#data
+-&
+-#errors
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&"
+-
+-#data
+-&#
+-#errors
+-Line: 1 Col: 1 Numeric entity expected. Got end of file instead.
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&#"
+-
+-#data
+-&#X
+-#errors
+-Line: 1 Col: 3 Numeric entity expected but none found.
+-Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&#X"
+-
+-#data
+-&#x
+-#errors
+-Line: 1 Col: 3 Numeric entity expected but none found.
+-Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&#x"
+-
+-#data
+-&#45
+-#errors
+-Line: 1 Col: 4 Numeric entity didn't end with ';'.
+-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "-"
+-
+-#data
+-&x-test
+-#errors
+-Line: 1 Col: 1 Named entity expected. Got none.
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&x-test"
+-
+-#data
+-<!doctypehtml><p><li>
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <li>
+-
+-#data
+-<!doctypehtml><p><dt>
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <dt>
+-
+-#data
+-<!doctypehtml><p><dd>
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <dd>
+-
+-#data
+-<!doctypehtml><p><form>
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <form>
+-
+-#data
+-<!DOCTYPE html><p></P>X
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     "X"
+-
+-#data
+-&AMP
+-#errors
+-Line: 1 Col: 4 Named entity didn't end with ';'.
+-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&"
+-
+-#data
+-&AMp;
+-#errors
+-Line: 1 Col: 1 Named entity expected. Got none.
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "&AMp;"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><thisISasillyTESTelementNameToMakeSureCrazyTagNamesArePARSEDcorrectLY>
+-#errors
+-Line: 1 Col: 110 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <thisisasillytestelementnametomakesurecrazytagnamesareparsedcorrectly>
+-
+-#data
+-<!DOCTYPE html>X</body>X
+-#errors
+-Line: 1 Col: 24 Unexpected non-space characters in the after body phase.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "XX"
+-
+-#data
+-<!DOCTYPE html><!-- X
+-#errors
+-Line: 1 Col: 21 Unexpected end of file in comment.
+-#document
+-| <!DOCTYPE html>
+-| <!--  X -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><table><caption>test TEST</caption><td>test
+-#errors
+-Line: 1 Col: 54 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 58 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         "test TEST"
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "test"
+-
+-#data
+-<!DOCTYPE html><select><option><optgroup>
+-#errors
+-Line: 1 Col: 41 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|       <optgroup>
+-
+-#data
+-<!DOCTYPE html><select><optgroup><option></optgroup><option><select><option>
+-#errors
+-Line: 1 Col: 68 Unexpected select start tag in the select phase treated as select end tag.
+-Line: 1 Col: 76 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <optgroup>
+-|         <option>
+-|       <option>
+-|     <option>
+-
+-#data
+-<!DOCTYPE html><select><optgroup><option><optgroup>
+-#errors
+-Line: 1 Col: 51 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <optgroup>
+-|         <option>
+-|       <optgroup>
+-
+-#data
+-<!DOCTYPE html><datalist><option>foo</datalist>bar
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <datalist>
+-|       <option>
+-|         "foo"
+-|     "bar"
+-
+-#data
+-<!DOCTYPE html><font><input><input></font>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|       <input>
+-|       <input>
+-
+-#data
+-<!DOCTYPE html><!-- XXX - XXX -->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <!--  XXX - XXX  -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><!-- XXX - XXX
+-#errors
+-Line: 1 Col: 29 Unexpected end of file in comment (-)
+-#document
+-| <!DOCTYPE html>
+-| <!--  XXX - XXX -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><!-- XXX - XXX - XXX -->
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <!--  XXX - XXX - XXX  -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<isindex test=x name=x>
+-#errors
+-Line: 1 Col: 23 Unexpected start tag (isindex). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected start tag isindex. Don't use it!
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <hr>
+-|       <label>
+-|         "This is a searchable index. Enter search keywords: "
+-|         <input>
+-|           name="isindex"
+-|           test="x"
+-|       <hr>
+-
+-#data
+-test
+-test
+-#errors
+-Line: 2 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "test
+-test"
+-
+-#data
+-<!DOCTYPE html><body><title>test</body></title>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <title>
+-|       "test</body>"
+-
+-#data
+-<!DOCTYPE html><body><title>X</title><meta name=z><link rel=foo><style>
+-x { content:"</style" } </style>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <title>
+-|       "X"
+-|     <meta>
+-|       name="z"
+-|     <link>
+-|       rel="foo"
+-|     <style>
+-|       "
+-x { content:"</style" } "
+-
+-#data
+-<!DOCTYPE html><select><optgroup></optgroup></select>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <optgroup>
+-
+-#data
+- 
+- 
+-#errors
+-Line: 2 Col: 1 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html>  <html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><script>
+-</script>  <title>x</title>  </head>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <script>
+-|       "
+-"
+-|     "  "
+-|     <title>
+-|       "x"
+-|     "  "
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><html><body><html id=x>
+-#errors
+-Line: 1 Col: 38 html needs to be the first start tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   id="x"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html>X</body><html id="x">
+-#errors
+-Line: 1 Col: 36 Unexpected start tag token (html) in the after body phase.
+-Line: 1 Col: 36 html needs to be the first start tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   id="x"
+-|   <head>
+-|   <body>
+-|     "X"
+-
+-#data
+-<!DOCTYPE html><head><html id=x>
+-#errors
+-Line: 1 Col: 32 html needs to be the first start tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   id="x"
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html>X</html>X
+-#errors
+-Line: 1 Col: 24 Unexpected non-space characters in the after body phase.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "XX"
+-
+-#data
+-<!DOCTYPE html>X</html> 
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X "
+-
+-#data
+-<!DOCTYPE html>X</html><p>X
+-#errors
+-Line: 1 Col: 26 Unexpected start tag (p).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-|     <p>
+-|       "X"
+-
+-#data
+-<!DOCTYPE html>X<p/x/y/z>
+-#errors
+-Line: 1 Col: 19 Expected a > after the /.
+-Line: 1 Col: 21 Solidus (/) incorrectly placed in tag.
+-Line: 1 Col: 23 Solidus (/) incorrectly placed in tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-|     <p>
+-|       x=""
+-|       y=""
+-|       z=""
+-
+-#data
+-<!DOCTYPE html><!--x--
+-#errors
+-Line: 1 Col: 22 Unexpected end of file in comment (--).
+-#document
+-| <!DOCTYPE html>
+-| <!-- x -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><table><tr><td></p></table>
+-#errors
+-Line: 1 Col: 34 Unexpected end tag (p). Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <p>
+-
+-#data
+-<!DOCTYPE <!DOCTYPE HTML>><!--<!--x-->-->
+-#errors
+-Line: 1 Col: 20 Expected space or '>'. Got ''
+-Line: 1 Col: 25 Erroneous DOCTYPE.
+-Line: 1 Col: 35 Unexpected character in comment found.
+-#document
+-| <!DOCTYPE <!doctype>
+-| <html>
+-|   <head>
+-|   <body>
+-|     ">"
+-|     <!-- <!--x -->
+-|     "-->"
+-
+-#data
+-<!doctype html><div><form></form><div></div></div>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <form>
+-|       <div>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests3.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests3.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests3.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests3.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,305 +0,0 @@
+-#data
+-<head></head><style></style>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected start tag (style) that can be in head. Moved.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|   <body>
+-
+-#data
+-<head></head><script></script>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 21 Unexpected start tag (script) that can be in head. Moved.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|   <body>
+-
+-#data
+-<head></head><!-- --><style></style><!-- --><script></script>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-Line: 1 Col: 28 Unexpected start tag (style) that can be in head. Moved.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|     <script>
+-|   <!--   -->
+-|   <!--   -->
+-|   <body>
+-
+-#data
+-<head></head><!-- -->x<style></style><!-- --><script></script>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <!--   -->
+-|   <body>
+-|     "x"
+-|     <style>
+-|     <!--   -->
+-|     <script>
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>
+-</pre></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>
+-foo</pre></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "foo"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>
+-
+-foo</pre></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "
+-foo"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>
+-foo
+-</pre></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "foo
+-"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>x</pre><span>
+-</span></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "x"
+-|     <span>
+-|       "
+-"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>x
+-y</pre></body></html>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "x
+-y"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><pre>x<div>
+-y</pre></body></html>
+-#errors
+-Line: 2 Col: 7 End tag (pre) seen too early. Expected other end tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "x"
+-|       <div>
+-|         "
+-y"
+-
+-#data
+-<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <pre>
+-|       "
+-A"
+-
+-#data
+-<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>
+-#errors
+-Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <meta>
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>
+-#errors
+-Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<textarea>foo<span>bar</span><i>baz
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "foo<span>bar</span><i>baz"
+-
+-#data
+-<title>foo<span>bar</em><i>baz
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-Line: 1 Col: 30 Unexpected end of file. Expected end tag (title).
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "foo<span>bar</em><i>baz"
+-|   <body>
+-
+-#data
+-<!DOCTYPE html><textarea>
+-</textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-
+-#data
+-<!DOCTYPE html><textarea>
+-foo</textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "foo"
+-
+-#data
+-<!DOCTYPE html><textarea>
+-
+-foo</textarea>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       "
+-foo"
+-
+-#data
+-<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>
+-#errors
+-Line: 1 Col: 60 Missing end tag (div, li).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ul>
+-|       <li>
+-|         <div>
+-|           <p>
+-|       <li>
+-
+-#data
+-<!doctype html><nobr><nobr><nobr>
+-#errors
+-Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr).
+-Line: 1 Col: 33 Unexpected start tag (nobr) implies end tag (nobr).
+-Line: 1 Col: 33 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <nobr>
+-|     <nobr>
+-|     <nobr>
+-
+-#data
+-<!doctype html><nobr><nobr></nobr><nobr>
+-#errors
+-Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr).
+-Line: 1 Col: 40 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <nobr>
+-|     <nobr>
+-|     <nobr>
+-
+-#data
+-<!doctype html><html><body><p><table></table></body></html>
+-#errors
+-Not known
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <table>
+-
+-#data
+-<p><table></table>
+-#errors
+-Not known
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <table>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests4.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests4.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests4.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests4.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,59 +0,0 @@
+-#data
+-direct div content
+-#errors
+-#document-fragment
+-div
+-#document
+-| "direct div content"
+-
+-#data
+-direct textarea content
+-#errors
+-#document-fragment
+-textarea
+-#document
+-| "direct textarea content"
+-
+-#data
+-textarea content with <em>pseudo</em> <foo>markup
+-#errors
+-#document-fragment
+-textarea
+-#document
+-| "textarea content with <em>pseudo</em> <foo>markup"
+-
+-#data
+-this is &#x0043;DATA inside a <style> element
+-#errors
+-#document-fragment
+-style
+-#document
+-| "this is &#x0043;DATA inside a <style> element"
+-
+-#data
+-</plaintext>
+-#errors
+-#document-fragment
+-plaintext
+-#document
+-| "</plaintext>"
+-
+-#data
+-setting html's innerHTML
+-#errors
+-Line: 1 Col: 24 Unexpected EOF in inner html mode.
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+-|   "setting html's innerHTML"
+-
+-#data
+-<title>setting head's innerHTML</title>
+-#errors
+-#document-fragment
+-head
+-#document
+-| <title>
+-|   "setting head's innerHTML"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests5.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests5.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests5.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests5.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,191 +0,0 @@
+-#data
+-<style> <!-- </style>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end of file. Expected end tag (style).
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       " <!-- "
+-|   <body>
+-|     "x"
+-
+-#data
+-<style> <!-- </style> --> </style>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       " <!-- "
+-|     " "
+-|   <body>
+-|     "--> x"
+-
+-#data
+-<style> <!--> </style>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       " <!--> "
+-|   <body>
+-|     "x"
+-
+-#data
+-<style> <!---> </style>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       " <!---> "
+-|   <body>
+-|     "x"
+-
+-#data
+-<iframe> <!---> </iframe>x
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       " <!---> "
+-|     "x"
+-
+-#data
+-<iframe> <!--- </iframe>->x</iframe> --> </iframe>x
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <iframe>
+-|       " <!--- "
+-|     "->x --> x"
+-
+-#data
+-<script> <!-- </script> --> </script>x
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <script>
+-|       " <!-- "
+-|     " "
+-|   <body>
+-|     "--> x"
+-
+-#data
+-<title> <!-- </title> --> </title>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       " <!-- "
+-|     " "
+-|   <body>
+-|     "--> x"
+-
+-#data
+-<textarea> <!--- </textarea>->x</textarea> --> </textarea>x
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <textarea>
+-|       " <!--- "
+-|     "->x --> x"
+-
+-#data
+-<style> <!</-- </style>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|       " <!</-- "
+-|   <body>
+-|     "x"
+-
+-#data
+-<p><xmp></xmp>
+-#errors
+-XXX: Unknown
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|     <xmp>
+-
+-#data
+-<xmp> <!-- > --> </xmp>
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <xmp>
+-|       " <!-- > --> "
+-
+-#data
+-<title>&amp;</title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "&"
+-|   <body>
+-
+-#data
+-<title><!--&amp;--></title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<!--&-->"
+-|   <body>
+-
+-#data
+-<title><!--</title>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
+-Line: 1 Col: 19 Unexpected end of file. Expected end tag (title).
+-#document
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<!--"
+-|   <body>
+-
+-#data
+-<noscript><!--</noscript>--></noscript>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|     <noscript>
+-|       "<!--"
+-|   <body>
+-|     "-->"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests6.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests6.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests6.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests6.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,663 +0,0 @@
+-#data
+-<!doctype html></head> <head>
+-#errors
+-Line: 1 Col: 29 Unexpected start tag head. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   " "
+-|   <body>
+-
+-#data
+-<!doctype html><form><div></form><div>
+-#errors
+-33: End tag "form" seen but there were unclosed elements.
+-38: End of file seen and there were open elements.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-|       <div>
+-|         <div>
+-
+-#data
+-<!doctype html><title>&amp;</title>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "&"
+-|   <body>
+-
+-#data
+-<!doctype html><title><!--&amp;--></title>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "<!--&-->"
+-|   <body>
+-
+-#data
+-<!doctype>
+-#errors
+-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
+-Line: 1 Col: 10 Unexpected > character. Expected DOCTYPE name.
+-Line: 1 Col: 10 Erroneous DOCTYPE.
+-#document
+-| <!DOCTYPE >
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!---x
+-#errors
+-Line: 1 Col: 6 Unexpected end of file in comment.
+-Line: 1 Col: 6 Unexpected End of file. Expected DOCTYPE.
+-#document
+-| <!-- -x -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<body>
+-<div>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (body).
+-Line: 2 Col: 5 Expected closing tag. Unexpected end of file.
+-#document-fragment
+-div
+-#document
+-| "
+-"
+-| <div>
+-
+-#data
+-<frameset></frameset>
+-foo
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 2 Col: 3 Unexpected non-space characters in the after frameset phase. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "
+-"
+-
+-#data
+-<frameset></frameset>
+-<noframes>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 2 Col: 10 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "
+-"
+-|   <noframes>
+-
+-#data
+-<frameset></frameset>
+-<div>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 2 Col: 5 Unexpected start tag (div) in the after frameset phase. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "
+-"
+-
+-#data
+-<frameset></frameset>
+-</html>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "
+-"
+-
+-#data
+-<frameset></frameset>
+-</div>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 2 Col: 6 Unexpected end tag (div) in the after frameset phase. Ignored.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   "
+-"
+-
+-#data
+-<form><form>
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (form). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected start tag (form).
+-Line: 1 Col: 12 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <form>
+-
+-#data
+-<button><button>
+-#errors
+-Line: 1 Col: 8 Unexpected start tag (button). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected start tag (button) implies end tag (button).
+-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <button>
+-|     <button>
+-
+-#data
+-<table><tr><td></th>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end tag (th). Ignored.
+-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><caption><td>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end tag (td). Ignored.
+-Line: 1 Col: 20 Unexpected table cell start tag (td) in the table body phase.
+-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><caption><div>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 21 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <div>
+-
+-#data
+-</caption><div>
+-#errors
+-Line: 1 Col: 10 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
+-#document-fragment
+-caption
+-#document
+-| <div>
+-
+-#data
+-<table><caption><div></caption>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 31 Unexpected end tag (caption). Missing end tag (div).
+-Line: 1 Col: 31 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <div>
+-
+-#data
+-<table><caption></table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 24 Unexpected end table tag in caption. Generates implied end caption.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-
+-#data
+-</table><div>
+-#errors
+-Line: 1 Col: 8 Unexpected end table tag in caption. Generates implied end caption.
+-Line: 1 Col: 8 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 13 Expected closing tag. Unexpected end of file.
+-#document-fragment
+-caption
+-#document
+-| <div>
+-
+-#data
+-<table><caption></body></col></colgroup></html></tbody></td></tfoot></th></thead></tr>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 23 Unexpected end tag (body). Ignored.
+-Line: 1 Col: 29 Unexpected end tag (col). Ignored.
+-Line: 1 Col: 40 Unexpected end tag (colgroup). Ignored.
+-Line: 1 Col: 47 Unexpected end tag (html). Ignored.
+-Line: 1 Col: 55 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 60 Unexpected end tag (td). Ignored.
+-Line: 1 Col: 68 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 73 Unexpected end tag (th). Ignored.
+-Line: 1 Col: 81 Unexpected end tag (thead). Ignored.
+-Line: 1 Col: 86 Unexpected end tag (tr). Ignored.
+-Line: 1 Col: 86 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-
+-#data
+-<table><caption><div></div>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 27 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <div>
+-
+-#data
+-<table><tr><td></body></caption></col></colgroup></html>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end tag (body). Ignored.
+-Line: 1 Col: 32 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 38 Unexpected end tag (col). Ignored.
+-Line: 1 Col: 49 Unexpected end tag (colgroup). Ignored.
+-Line: 1 Col: 56 Unexpected end tag (html). Ignored.
+-Line: 1 Col: 56 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-</table></tbody></tfoot></thead></tr><div>
+-#errors
+-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
+-Line: 1 Col: 16 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 24 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 32 Unexpected end tag (thead). Ignored.
+-Line: 1 Col: 37 Unexpected end tag (tr). Ignored.
+-Line: 1 Col: 42 Expected closing tag. Unexpected end of file.
+-#document-fragment
+-td
+-#document
+-| <div>
+-
+-#data
+-<table><colgroup>foo
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 20 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "foo"
+-|     <table>
+-|       <colgroup>
+-
+-#data
+-foo<col>
+-#errors
+-Line: 1 Col: 3 Unexpected end tag (colgroup). Ignored.
+-#document-fragment
+-colgroup
+-#document
+-| <col>
+-
+-#data
+-<table><colgroup></col>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 23 This element (col) has no end tag.
+-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <colgroup>
+-
+-#data
+-<frameset><div>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 1 Col: 15 Unexpected start tag token (div) in the frameset phase. Ignored.
+-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-</frameset><frame>
+-#errors
+-Line: 1 Col: 11 Unexpected end tag token (frameset) in the frameset phase (innerHTML).
+-#document-fragment
+-frameset
+-#document
+-| <frame>
+-
+-#data
+-<frameset></div>
+-#errors
+-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected end tag token (div) in the frameset phase. Ignored.
+-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-</body><div>
+-#errors
+-Line: 1 Col: 7 Unexpected end tag (body). Ignored.
+-Line: 1 Col: 12 Expected closing tag. Unexpected end of file.
+-#document-fragment
+-body
+-#document
+-| <div>
+-
+-#data
+-<table><tr><div>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 16 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-</tr><td>
+-#errors
+-Line: 1 Col: 5 Unexpected end tag (tr). Ignored.
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-</tbody></tfoot></thead><td>
+-#errors
+-Line: 1 Col: 8 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 16 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 24 Unexpected end tag (thead). Ignored.
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<table><tr><div><td>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 20 Unexpected implied end tag (div) in the table row phase.
+-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<caption><col><colgroup><tbody><tfoot><thead><tr>
+-#errors
+-Line: 1 Col: 9 Unexpected start tag (caption).
+-Line: 1 Col: 14 Unexpected start tag (col).
+-Line: 1 Col: 24 Unexpected start tag (colgroup).
+-Line: 1 Col: 31 Unexpected start tag (tbody).
+-Line: 1 Col: 38 Unexpected start tag (tfoot).
+-Line: 1 Col: 45 Unexpected start tag (thead).
+-Line: 1 Col: 49 Unexpected end of file. Expected table content.
+-#document-fragment
+-tbody
+-#document
+-| <tr>
+-
+-#data
+-<table><tbody></thead>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 22 Unexpected end tag (thead) in the table body phase. Ignored.
+-Line: 1 Col: 22 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-
+-#data
+-</table><tr>
+-#errors
+-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
+-Line: 1 Col: 12 Unexpected end of file. Expected table content.
+-#document-fragment
+-tbody
+-#document
+-| <tr>
+-
+-#data
+-<table><tbody></body></caption></col></colgroup></html></td></th></tr>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 21 Unexpected end tag (body) in the table body phase. Ignored.
+-Line: 1 Col: 31 Unexpected end tag (caption) in the table body phase. Ignored.
+-Line: 1 Col: 37 Unexpected end tag (col) in the table body phase. Ignored.
+-Line: 1 Col: 48 Unexpected end tag (colgroup) in the table body phase. Ignored.
+-Line: 1 Col: 55 Unexpected end tag (html) in the table body phase. Ignored.
+-Line: 1 Col: 60 Unexpected end tag (td) in the table body phase. Ignored.
+-Line: 1 Col: 65 Unexpected end tag (th) in the table body phase. Ignored.
+-Line: 1 Col: 70 Unexpected end tag (tr) in the table body phase. Ignored.
+-Line: 1 Col: 70 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-
+-#data
+-<table><tbody></div>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 20 Unexpected end tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 20 End tag (div) seen too early. Expected other end tag.
+-Line: 1 Col: 20 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-
+-#data
+-<table><table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected start tag (table) implies end tag (table).
+-Line: 1 Col: 14 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|     <table>
+-
+-#data
+-<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 14 Unexpected end tag (body). Ignored.
+-Line: 1 Col: 24 Unexpected end tag (caption). Ignored.
+-Line: 1 Col: 30 Unexpected end tag (col). Ignored.
+-Line: 1 Col: 41 Unexpected end tag (colgroup). Ignored.
+-Line: 1 Col: 48 Unexpected end tag (html). Ignored.
+-Line: 1 Col: 56 Unexpected end tag (tbody). Ignored.
+-Line: 1 Col: 61 Unexpected end tag (td). Ignored.
+-Line: 1 Col: 69 Unexpected end tag (tfoot). Ignored.
+-Line: 1 Col: 74 Unexpected end tag (th). Ignored.
+-Line: 1 Col: 82 Unexpected end tag (thead). Ignored.
+-Line: 1 Col: 87 Unexpected end tag (tr). Ignored.
+-Line: 1 Col: 87 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-
+-#data
+-</table><tr>
+-#errors
+-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
+-Line: 1 Col: 12 Unexpected end of file. Expected table content.
+-#document-fragment
+-table
+-#document
+-| <tbody>
+-|   <tr>
+-
+-#data
+-<body></body></html>
+-#errors
+-Line: 1 Col: 20 Unexpected html end tag in inner html mode.
+-Line: 1 Col: 20 Unexpected EOF in inner html mode.
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+-
+-#data
+-<html><frameset></frameset></html> 
+-#errors
+-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|   " "
+-
+-#data
+-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><html></html>
+-#errors
+-Line: 1 Col: 50 Erroneous DOCTYPE.
+-Line: 1 Col: 63 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "">
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<param><frameset></frameset>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (param). Expected DOCTYPE.
+-Line: 1 Col: 17 Unexpected start tag (frameset).
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<source><frameset></frameset>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (source). Expected DOCTYPE.
+-Line: 1 Col: 17 Unexpected start tag (frameset).
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<track><frameset></frameset>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (track). Expected DOCTYPE.
+-Line: 1 Col: 17 Unexpected start tag (frameset).
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-</html><frameset></frameset>
+-#errors
+-7: End tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-17: Stray âframesetâ start tag.
+-17: âframesetâ start tag seen.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-</body><frameset></frameset>
+-#errors
+-7: End tag seen without seeing a doctype first. Expected â<!DOCTYPE html>â.
+-17: Stray âframesetâ start tag.
+-17: âframesetâ start tag seen.
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests7.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests7.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests7.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests7.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,390 +0,0 @@
+-#data
+-<!doctype html><body><title>X</title>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <title>
+-|       "X"
+-
+-#data
+-<!doctype html><table><title>X</title></table>
+-#errors
+-Line: 1 Col: 29 Unexpected start tag (title) in table context caused voodoo mode.
+-Line: 1 Col: 38 Unexpected end tag (title) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <title>
+-|       "X"
+-|     <table>
+-
+-#data
+-<!doctype html><head></head><title>X</title>
+-#errors
+-Line: 1 Col: 35 Unexpected start tag (title) that can be in head. Moved.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "X"
+-|   <body>
+-
+-#data
+-<!doctype html></head><title>X</title>
+-#errors
+-Line: 1 Col: 29 Unexpected start tag (title) that can be in head. Moved.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|     <title>
+-|       "X"
+-|   <body>
+-
+-#data
+-<!doctype html><table><meta></table>
+-#errors
+-Line: 1 Col: 28 Unexpected start tag (meta) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <meta>
+-|     <table>
+-
+-#data
+-<!doctype html><table>X<tr><td><table> <meta></table></table>
+-#errors
+-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 45 Unexpected start tag (meta) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <meta>
+-|             <table>
+-|               " "
+-
+-#data
+-<!doctype html><html> <head>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html> <head>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!doctype html><table><style> <tr>x </style> </table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <style>
+-|         " <tr>x "
+-|       " "
+-
+-#data
+-<!doctype html><table><TBODY><script> <tr>x </script> </table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <script>
+-|           " <tr>x "
+-|         " "
+-
+-#data
+-<!doctype html><p><applet><p>X</p></applet>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <applet>
+-|         <p>
+-|           "X"
+-
+-#data
+-<!doctype html><listing>
+-X</listing>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <listing>
+-|       "X"
+-
+-#data
+-<!doctype html><select><input>X
+-#errors
+-Line: 1 Col: 30 Unexpected input start tag in the select phase.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <input>
+-|     "X"
+-
+-#data
+-<!doctype html><select><select>X
+-#errors
+-Line: 1 Col: 31 Unexpected select start tag in the select phase treated as select end tag.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     "X"
+-
+-#data
+-<!doctype html><table><input type=hidDEN></table>
+-#errors
+-Line: 1 Col: 41 Unexpected input with type hidden in table context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <input>
+-|         type="hidDEN"
+-
+-#data
+-<!doctype html><table>X<input type=hidDEN></table>
+-#errors
+-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     "X"
+-|     <table>
+-|       <input>
+-|         type="hidDEN"
+-
+-#data
+-<!doctype html><table>  <input type=hidDEN></table>
+-#errors
+-Line: 1 Col: 43 Unexpected input with type hidden in table context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       "  "
+-|       <input>
+-|         type="hidDEN"
+-
+-#data
+-<!doctype html><table>  <input type='hidDEN'></table>
+-#errors
+-Line: 1 Col: 45 Unexpected input with type hidden in table context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       "  "
+-|       <input>
+-|         type="hidDEN"
+-
+-#data
+-<!doctype html><table><input type=" hidden"><input type=hidDEN></table>
+-#errors
+-Line: 1 Col: 44 Unexpected start tag (input) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-|       type=" hidden"
+-|     <table>
+-|       <input>
+-|         type="hidDEN"
+-
+-#data
+-<!doctype html><table><select>X<tr>
+-#errors
+-Line: 1 Col: 30 Unexpected start tag (select) in table context caused voodoo mode.
+-Line: 1 Col: 35 Unexpected table element start tag (trs) in the select in table phase.
+-Line: 1 Col: 35 Unexpected end of file. Expected table content.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       "X"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!doctype html><select>X</select>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       "X"
+-
+-#data
+-<!DOCTYPE hTmL><html></html>
+-#errors
+-Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<!DOCTYPE HTML><html></html>
+-#errors
+-Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<body>X</body></body>
+-#errors
+-Line: 1 Col: 21 Unexpected end tag token (body) in the after body phase.
+-Line: 1 Col: 21 Unexpected EOF in inner html mode.
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+-|   "X"
+-
+-#data
+-<div><p>a</x> b
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 13 Unexpected end tag (x). Ignored.
+-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <p>
+-|         "a b"
+-
+-#data
+-<table><tr><td><code></code> </table>
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <code>
+-|             " "
+-
+-#data
+-<table><b><tr><td>aaa</td></tr>bbb</table>ccc
+-#errors
+-XXX: Fix me
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|     <b>
+-|       "bbb"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "aaa"
+-|     <b>
+-|       "ccc"
+-
+-#data
+-A<table><tr> B</tr> B</table>
+-#errors
+-XXX: Fix me
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A B B"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-A<table><tr> B</tr> </em>C</table>
+-#errors
+-XXX: Fix me
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A BC"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|         " "
+-
+-#data
+-<select><keygen>
+-#errors
+-Not known
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|     <keygen>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests8.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests8.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests8.dat	2010-08-26 18:31:13.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests8.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,148 +0,0 @@
+-#data
+-<div>
+-<div></div>
+-</span>x
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 3 Col: 7 Unexpected end tag (span). Ignored.
+-Line: 3 Col: 8 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "
+-"
+-|       <div>
+-|       "
+-x"
+-
+-#data
+-<div>x<div></div>
+-</span>x
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 2 Col: 7 Unexpected end tag (span). Ignored.
+-Line: 2 Col: 8 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "x"
+-|       <div>
+-|       "
+-x"
+-
+-#data
+-<div>x<div></div>x</span>x
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 25 Unexpected end tag (span). Ignored.
+-Line: 1 Col: 26 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "x"
+-|       <div>
+-|       "xx"
+-
+-#data
+-<div>x<div></div>y</span>z
+-#errors
+-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
+-Line: 1 Col: 25 Unexpected end tag (span). Ignored.
+-Line: 1 Col: 26 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "x"
+-|       <div>
+-|       "yz"
+-
+-#data
+-<table><div>x<div></div>x</span>x
+-#errors
+-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
+-Line: 1 Col: 12 Unexpected start tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 18 Unexpected start tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 24 Unexpected end tag (div) in table context caused voodoo mode.
+-Line: 1 Col: 32 Unexpected end tag (span) in table context caused voodoo mode.
+-Line: 1 Col: 32 Unexpected end tag (span). Ignored.
+-Line: 1 Col: 33 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "x"
+-|       <div>
+-|       "xx"
+-|     <table>
+-
+-#data
+-x<table>x
+-#errors
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-Line: 1 Col: 9 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 9 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "xx"
+-|     <table>
+-
+-#data
+-x<table><table>x
+-#errors
+-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
+-Line: 1 Col: 15 Unexpected start tag (table) implies end tag (table).
+-Line: 1 Col: 16 Unexpected non-space characters in table context caused voodoo mode.
+-Line: 1 Col: 16 Unexpected end of file. Expected table content.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "x"
+-|     <table>
+-|     "x"
+-|     <table>
+-
+-#data
+-<b>a<div></div><div></b>y
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
+-Line: 1 Col: 24 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|       "a"
+-|       <div>
+-|     <div>
+-|       <b>
+-|       "y"
+-
+-#data
+-<a><div><p></a>
+-#errors
+-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
+-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
+-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <div>
+-|       <a>
+-|       <p>
+-|         <a>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests9.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests9.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests9.dat	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests9.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,457 +0,0 @@
+-#data
+-<!DOCTYPE html><math></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-
+-#data
+-<!DOCTYPE html><body><math></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-
+-#data
+-<!DOCTYPE html><math><mi>
+-#errors
+-25: End of file in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-
+-#data
+-<!DOCTYPE html><math><annotation-xml><svg><u>
+-#errors
+-45: HTML start tag âuâ in a foreign namespace context.
+-45: End of file seen and there were open elements.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math annotation-xml>
+-|         <svg svg>
+-|     <u>
+-
+-#data
+-<!DOCTYPE html><body><select><math></math></select>
+-#errors
+-Line: 1 Col: 35 Unexpected start tag token (math) in the select phase. Ignored.
+-Line: 1 Col: 42 Unexpected end tag (math) in the select phase. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-
+-#data
+-<!DOCTYPE html><body><select><option><math></math></option></select>
+-#errors
+-Line: 1 Col: 43 Unexpected start tag token (math) in the select phase. Ignored.
+-Line: 1 Col: 50 Unexpected end tag (math) in the select phase. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-
+-#data
+-<!DOCTYPE html><body><table><math></math></table>
+-#errors
+-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 41 Unexpected end tag (math) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><math><mi>foo</mi></math></table>
+-#errors
+-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 53 Unexpected end tag (math) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><math><mi>foo</mi><mi>bar</mi></math></table>
+-#errors
+-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 58 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 65 Unexpected end tag (math) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <table>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><math><mi>foo</mi><mi>bar</mi></math></tbody></table>
+-#errors
+-Line: 1 Col: 41 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 53 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 65 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 72 Unexpected end tag (math) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <table>
+-|       <tbody>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><math><mi>foo</mi><mi>bar</mi></math></tr></tbody></table>
+-#errors
+-Line: 1 Col: 45 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 57 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 69 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 76 Unexpected end tag (math) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math></td></tr></tbody></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <math math>
+-|               <math mi>
+-|                 "foo"
+-|               <math mi>
+-|                 "bar"
+-
+-#data
+-<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math><p>baz</td></tr></tbody></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <math math>
+-|               <math mi>
+-|                 "foo"
+-|               <math mi>
+-|                 "bar"
+-|             <p>
+-|               "baz"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi></math><p>baz</caption></table>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <math math>
+-|           <math mi>
+-|             "foo"
+-|           <math mi>
+-|             "bar"
+-|         <p>
+-|           "baz"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
+-#errors
+-Line: 1 Col: 70 HTML start tag "p" in a foreign namespace context.
+-Line: 1 Col: 81 Unexpected end table tag in caption. Generates implied end caption.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <math math>
+-|           <math mi>
+-|             "foo"
+-|           <math mi>
+-|             "bar"
+-|         <p>
+-|           "baz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi>baz</table><p>quux
+-#errors
+-Line: 1 Col: 78 Unexpected end table tag in caption. Generates implied end caption.
+-Line: 1 Col: 78 Unexpected end tag (caption). Missing end tag (math).
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <caption>
+-|         <math math>
+-|           <math mi>
+-|             "foo"
+-|           <math mi>
+-|             "bar"
+-|           "baz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><colgroup><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
+-#errors
+-Line: 1 Col: 44 Unexpected start tag (math) in table context caused voodoo mode.
+-Line: 1 Col: 56 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 68 Unexpected end tag (mi) in table context caused voodoo mode.
+-Line: 1 Col: 71 HTML start tag "p" in a foreign namespace context.
+-Line: 1 Col: 71 Unexpected start tag (p) in table context caused voodoo mode.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-|     <table>
+-|       <colgroup>
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><tr><td><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
+-#errors
+-Line: 1 Col: 50 Unexpected start tag token (math) in the select phase. Ignored.
+-Line: 1 Col: 54 Unexpected start tag token (mi) in the select phase. Ignored.
+-Line: 1 Col: 62 Unexpected end tag (mi) in the select phase. Ignored.
+-Line: 1 Col: 66 Unexpected start tag token (mi) in the select phase. Ignored.
+-Line: 1 Col: 74 Unexpected end tag (mi) in the select phase. Ignored.
+-Line: 1 Col: 77 Unexpected start tag token (p) in the select phase. Ignored.
+-Line: 1 Col: 88 Unexpected table element end tag (tables) in the select in table phase.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <select>
+-|               "foobarbaz"
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body><table><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
+-#errors
+-Line: 1 Col: 36 Unexpected start tag (select) in table context caused voodoo mode.
+-Line: 1 Col: 42 Unexpected start tag token (math) in the select phase. Ignored.
+-Line: 1 Col: 46 Unexpected start tag token (mi) in the select phase. Ignored.
+-Line: 1 Col: 54 Unexpected end tag (mi) in the select phase. Ignored.
+-Line: 1 Col: 58 Unexpected start tag token (mi) in the select phase. Ignored.
+-Line: 1 Col: 66 Unexpected end tag (mi) in the select phase. Ignored.
+-Line: 1 Col: 69 Unexpected start tag token (p) in the select phase. Ignored.
+-Line: 1 Col: 80 Unexpected table element end tag (tables) in the select in table phase.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       "foobarbaz"
+-|     <table>
+-|     <p>
+-|       "quux"
+-
+-#data
+-<!DOCTYPE html><body></body></html><math><mi>foo</mi><mi>bar</mi><p>baz
+-#errors
+-Line: 1 Col: 41 Unexpected start tag (math).
+-Line: 1 Col: 68 HTML start tag "p" in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-
+-#data
+-<!DOCTYPE html><body></body><math><mi>foo</mi><mi>bar</mi><p>baz
+-#errors
+-Line: 1 Col: 34 Unexpected start tag token (math) in the after body phase.
+-Line: 1 Col: 61 HTML start tag "p" in a foreign namespace context.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mi>
+-|         "foo"
+-|       <math mi>
+-|         "bar"
+-|     <p>
+-|       "baz"
+-
+-#data
+-<!DOCTYPE html><frameset><math><mi></mi><mi></mi><p><span>
+-#errors
+-Line: 1 Col: 31 Unexpected start tag token (math) in the frameset phase. Ignored.
+-Line: 1 Col: 35 Unexpected start tag token (mi) in the frameset phase. Ignored.
+-Line: 1 Col: 40 Unexpected end tag token (mi) in the frameset phase. Ignored.
+-Line: 1 Col: 44 Unexpected start tag token (mi) in the frameset phase. Ignored.
+-Line: 1 Col: 49 Unexpected end tag token (mi) in the frameset phase. Ignored.
+-Line: 1 Col: 52 Unexpected start tag token (p) in the frameset phase. Ignored.
+-Line: 1 Col: 58 Unexpected start tag token (span) in the frameset phase. Ignored.
+-Line: 1 Col: 58 Expected closing tag. Unexpected end of file.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><frameset></frameset><math><mi></mi><mi></mi><p><span>
+-#errors
+-Line: 1 Col: 42 Unexpected start tag (math) in the after frameset phase. Ignored.
+-Line: 1 Col: 46 Unexpected start tag (mi) in the after frameset phase. Ignored.
+-Line: 1 Col: 51 Unexpected end tag (mi) in the after frameset phase. Ignored.
+-Line: 1 Col: 55 Unexpected start tag (mi) in the after frameset phase. Ignored.
+-Line: 1 Col: 60 Unexpected end tag (mi) in the after frameset phase. Ignored.
+-Line: 1 Col: 63 Unexpected start tag (p) in the after frameset phase. Ignored.
+-Line: 1 Col: 69 Unexpected start tag (span) in the after frameset phase. Ignored.
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo><math xlink:href=foo></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     <math math>
+-|       xlink href="foo"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo></mi></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <math math>
+-|       <math mi>
+-|         xlink href="foo"
+-|         xml lang="en"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo /></math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <math math>
+-|       <math mi>
+-|         xlink href="foo"
+-|         xml lang="en"
+-
+-#data
+-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo />bar</math>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     xlink:href="foo"
+-|     xml:lang="en"
+-|     <math math>
+-|       <math mi>
+-|         xlink href="foo"
+-|         xml lang="en"
+-|       "bar"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests_innerHTML_1.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests_innerHTML_1.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tests_innerHTML_1.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tests_innerHTML_1.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,741 +0,0 @@
+-#data
+-<body><span>
+-#errors
+-#document-fragment
+-body
+-#document
+-| <span>
+-
+-#data
+-<span><body>
+-#errors
+-#document-fragment
+-body
+-#document
+-| <span>
+-
+-#data
+-<span><body>
+-#errors
+-#document-fragment
+-div
+-#document
+-| <span>
+-
+-#data
+-<body><span>
+-#errors
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+-|   <span>
+-
+-#data
+-<frameset><span>
+-#errors
+-#document-fragment
+-body
+-#document
+-| <span>
+-
+-#data
+-<span><frameset>
+-#errors
+-#document-fragment
+-body
+-#document
+-| <span>
+-
+-#data
+-<span><frameset>
+-#errors
+-#document-fragment
+-div
+-#document
+-| <span>
+-
+-#data
+-<frameset><span>
+-#errors
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <frameset>
+-
+-#data
+-<table><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <tbody>
+-|   <tr>
+-
+-#data
+-</table><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <tbody>
+-|   <tr>
+-
+-#data
+-<a>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-
+-#data
+-<a>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-
+-#data
+-<a><caption>a
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <caption>
+-|   "a"
+-
+-#data
+-<a><colgroup><col>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <colgroup>
+-|   <col>
+-
+-#data
+-<a><tbody><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <tbody>
+-|   <tr>
+-
+-#data
+-<a><tfoot><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <tfoot>
+-|   <tr>
+-
+-#data
+-<a><thead><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <thead>
+-|   <tr>
+-
+-#data
+-<a><tr>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <tbody>
+-|   <tr>
+-
+-#data
+-<a><th>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <tbody>
+-|   <tr>
+-|     <th>
+-
+-#data
+-<a><td>
+-#errors
+-#document-fragment
+-table
+-#document
+-| <a>
+-| <tbody>
+-|   <tr>
+-|     <td>
+-
+-#data
+-<table></table><tbody>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <table>
+-
+-#data
+-</table><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-
+-#data
+-<span></table>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-
+-#data
+-</caption><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-
+-#data
+-<span></caption><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><caption><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><col><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><colgroup><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><html><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><tbody><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><td><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><tfoot><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><thead><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><th><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span><tr><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-<span></table><span>
+-#errors
+-#document-fragment
+-caption
+-#document
+-| <span>
+-|   <span>
+-
+-#data
+-</colgroup><col>
+-#errors
+-#document-fragment
+-colgroup
+-#document
+-| <col>
+-
+-#data
+-<a><col>
+-#errors
+-#document-fragment
+-colgroup
+-#document
+-| <col>
+-
+-#data
+-<caption><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<col><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<colgroup><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<tbody><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<tfoot><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<thead><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-</table><a>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-
+-#data
+-<a><tr>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-| <tr>
+-
+-#data
+-<a><td>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-| <tr>
+-|   <td>
+-
+-#data
+-<a><td>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-| <tr>
+-|   <td>
+-
+-#data
+-<a><td>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <a>
+-| <tr>
+-|   <td>
+-
+-#data
+-<td><table><tbody><a><tr>
+-#errors
+-#document-fragment
+-tbody
+-#document
+-| <tr>
+-|   <td>
+-|     <a>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-</tr><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<td><table><a><tr></tr><tr>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-|   <a>
+-|   <table>
+-|     <tbody>
+-|       <tr>
+-|       <tr>
+-
+-#data
+-<caption><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<col><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<colgroup><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<tbody><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<tfoot><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<thead><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<tr><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-</table><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-
+-#data
+-<td><table></table><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-|   <table>
+-| <td>
+-
+-#data
+-<td><table></table><td>
+-#errors
+-#document-fragment
+-tr
+-#document
+-| <td>
+-|   <table>
+-| <td>
+-
+-#data
+-<caption><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<col><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<colgroup><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<tbody><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<tfoot><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<th><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<thead><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<tr><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</table><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</tbody><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</td><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</tfoot><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</thead><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</th><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-</tr><a>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <a>
+-
+-#data
+-<table><td><td>
+-#errors
+-#document-fragment
+-td
+-#document
+-| <table>
+-|   <tbody>
+-|     <tr>
+-|       <td>
+-|       <td>
+-
+-#data
+-</select><option>
+-#errors
+-#document-fragment
+-select
+-#document
+-| <option>
+-
+-#data
+-<input><option>
+-#errors
+-#document-fragment
+-select
+-#document
+-| <option>
+-
+-#data
+-<keygen><option>
+-#errors
+-#document-fragment
+-select
+-#document
+-| <option>
+-
+-#data
+-<textarea><option>
+-#errors
+-#document-fragment
+-select
+-#document
+-| <option>
+-
+-#data
+-</html><!--abc-->
+-#errors
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+-| <!-- abc -->
+-
+-#data
+-</frameset><frame>
+-#errors
+-#document-fragment
+-frameset
+-#document
+-| <frame>
+-
+-#data
+-#errors
+-#document-fragment
+-html
+-#document
+-| <head>
+-| <body>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tricky01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tricky01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/tricky01.dat	2011-09-21 23:02:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/tricky01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,261 +0,0 @@
+-#data
+-<b><p>Bold </b> Not bold</p>
+-Also not bold.
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <b>
+-|     <p>
+-|       <b>
+-|         "Bold "
+-|       " Not bold"
+-|     "
+-Also not bold."
+-
+-#data
+-<html>
+-<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain
+-<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>
+-<p>Italic and red. </i> Red.</font> I should not be red.</p>
+-<b>Bold <i>Bold and italic</b> Only Italic </i> Plain
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|       color="red"
+-|       <i>
+-|         "Italic and Red"
+-|     <i>
+-|       <p>
+-|         <font>
+-|           color="red"
+-|           "Italic and Red "
+-|         " Just italic."
+-|       " Italic only."
+-|     " Plain
+-"
+-|     <p>
+-|       "I should not be red. "
+-|       <font>
+-|         color="red"
+-|         "Red. "
+-|         <i>
+-|           "Italic and red."
+-|     <font>
+-|       color="red"
+-|       <i>
+-|         "
+-"
+-|     <p>
+-|       <font>
+-|         color="red"
+-|         <i>
+-|           "Italic and red. "
+-|         " Red."
+-|       " I should not be red."
+-|     "
+-"
+-|     <b>
+-|       "Bold "
+-|       <i>
+-|         "Bold and italic"
+-|     <i>
+-|       " Only Italic "
+-|     " Plain"
+-
+-#data
+-<html><body>
+-<p><font size="7">First paragraph.</p>
+-<p>Second paragraph.</p></font>
+-<b><p><i>Bold and Italic</b> Italic</p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "
+-"
+-|     <p>
+-|       <font>
+-|         size="7"
+-|         "First paragraph."
+-|     <font>
+-|       size="7"
+-|       "
+-"
+-|       <p>
+-|         "Second paragraph."
+-|     "
+-"
+-|     <b>
+-|     <p>
+-|       <b>
+-|         <i>
+-|           "Bold and Italic"
+-|       <i>
+-|         " Italic"
+-
+-#data
+-<html>
+-<dl>
+-<dt><b>Boo
+-<dd>Goo?
+-</dl>
+-</html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dl>
+-|       "
+-"
+-|       <dt>
+-|         <b>
+-|           "Boo
+-"
+-|       <dd>
+-|         <b>
+-|           "Goo?
+-"
+-|     <b>
+-|       "
+-"
+-
+-#data
+-<html><body>
+-<label><a><div>Hello<div>World</div></a></label>  
+-</body></html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "
+-"
+-|     <label>
+-|       <a>
+-|       <div>
+-|         <a>
+-|           "Hello"
+-|           <div>
+-|             "World"
+-|         "  
+-"
+-
+-#data
+-<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <center>
+-|       " "
+-|       <font>
+-|         "a"
+-|     <font>
+-|       <img>
+-|       " "
+-|     <table>
+-|       " "
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             " "
+-|           " "
+-|         " "
+-
+-#data
+-<table><tr><p><a><p>You should see this text.
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       <a>
+-|     <p>
+-|       <a>
+-|         "You should see this text."
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-
+-#data
+-<TABLE>
+-<TR>
+-<CENTER><CENTER><TD></TD></TR><TR>
+-<FONT>
+-<TABLE><tr></tr></TABLE>
+-</P>
+-<a></font><font></a>
+-This page contains an insanely badly-nested tag sequence.
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <center>
+-|       <center>
+-|     <font>
+-|       "
+-"
+-|     <table>
+-|       "
+-"
+-|       <tbody>
+-|         <tr>
+-|           "
+-"
+-|           <td>
+-|         <tr>
+-|           "
+-"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|     <font>
+-|       "
+-"
+-|       <p>
+-|       "
+-"
+-|       <a>
+-|     <a>
+-|       <font>
+-|     <font>
+-|       "
+-This page contains an insanely badly-nested tag sequence."
+-
+-#data
+-<html>
+-<body>
+-<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the
+-nobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>
+-</body>
+-</html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "
+-"
+-|     <b>
+-|       <nobr>
+-|     <div>
+-|       <b>
+-|         <nobr>
+-|           "This text is in a div inside a nobr"
+-|         "More text that should not be in the nobr, i.e., the
+-nobr should have closed the div inside it implicitly. "
+-|       <pre>
+-|         "A pre tag outside everything else."
+-|       "
+-
+-"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/webkit01.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/webkit01.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/webkit01.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/webkit01.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,610 +0,0 @@
+-#data
+-Test
+-#errors
+-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "Test"
+-
+-#data
+-<div></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-
+-#data
+-<div>Test</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "Test"
+-
+-#data
+-<di
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<div>Hello</div>
+-<script>
+-console.log("PASS");
+-</script>
+-<div>Bye</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "Hello"
+-|     "
+-"
+-|     <script>
+-|       "
+-console.log("PASS");
+-"
+-|     "
+-"
+-|     <div>
+-|       "Bye"
+-
+-#data
+-<div foo="bar">Hello</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       foo="bar"
+-|       "Hello"
+-
+-#data
+-<div>Hello</div>
+-<script>
+-console.log("FOO<span>BAR</span>BAZ");
+-</script>
+-<div>Bye</div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       "Hello"
+-|     "
+-"
+-|     <script>
+-|       "
+-console.log("FOO<span>BAR</span>BAZ");
+-"
+-|     "
+-"
+-|     <div>
+-|       "Bye"
+-
+-#data
+-<foo bar="baz"></foo><potato quack="duck"></potato>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       bar="baz"
+-|     <potato>
+-|       quack="duck"
+-
+-#data
+-<foo bar="baz"><potato quack="duck"></potato></foo>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       bar="baz"
+-|       <potato>
+-|         quack="duck"
+-
+-#data
+-<foo></foo bar="baz"><potato></potato quack="duck">
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|     <potato>
+-
+-#data
+-</ tttt>
+-#errors
+-#document
+-| <!--  tttt -->
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<div FOO ><img><img></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       foo=""
+-|       <img>
+-|       <img>
+-
+-#data
+-<p>Test</p<p>Test2</p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       "TestTest2"
+-
+-#data
+-<rdar://problem/6869687>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <rdar:>
+-|       6869687=""
+-|       problem=""
+-
+-#data
+-<A>test< /A>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|       "test< /A>"
+-
+-#data
+-&lt;
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "<"
+-
+-#data
+-<body foo='bar'><body foo='baz' yo='mama'>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     foo="bar"
+-|     yo="mama"
+-
+-#data
+-<body></br foo="bar"></body>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-
+-#data
+-<bdy><br foo="bar"></body>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <bdy>
+-|       <br>
+-|         foo="bar"
+-
+-#data
+-<body></body></br foo="bar">
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <br>
+-
+-#data
+-<bdy></body><br foo="bar">
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <bdy>
+-|       <br>
+-|         foo="bar"
+-
+-#data
+-<html><body></body></html><!-- Hi there -->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-| <!--  Hi there  -->
+-
+-#data
+-<html><body></body></html>x<!-- Hi there -->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "x"
+-|     <!--  Hi there  -->
+-
+-#data
+-<html><body></body></html>x<!-- Hi there --></html><!-- Again -->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "x"
+-|     <!--  Hi there  -->
+-| <!--  Again  -->
+-
+-#data
+-<html><body></body></html>x<!-- Hi there --></body></html><!-- Again -->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "x"
+-|     <!--  Hi there  -->
+-| <!--  Again  -->
+-
+-#data
+-<html><body><ruby><div><rp>xx</rp></div></ruby></body></html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <rp>
+-|           "xx"
+-
+-#data
+-<html><body><ruby><div><rt>xx</rt></div></ruby></body></html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ruby>
+-|       <div>
+-|         <rt>
+-|           "xx"
+-
+-#data
+-<html><frameset><!--1--><noframes>A</noframes><!--2--></frameset><!--3--><noframes>B</noframes><!--4--></html><!--5--><noframes>C</noframes><!--6-->
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <frameset>
+-|     <!-- 1 -->
+-|     <noframes>
+-|       "A"
+-|     <!-- 2 -->
+-|   <!-- 3 -->
+-|   <noframes>
+-|     "B"
+-|   <!-- 4 -->
+-|   <noframes>
+-|     "C"
+-| <!-- 5 -->
+-| <!-- 6 -->
+-
+-#data
+-<select><option>A<select><option>B<select><option>C<select><option>D<select><option>E<select><option>F<select><option>G<select>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <select>
+-|       <option>
+-|         "A"
+-|     <option>
+-|       "B"
+-|       <select>
+-|         <option>
+-|           "C"
+-|     <option>
+-|       "D"
+-|       <select>
+-|         <option>
+-|           "E"
+-|     <option>
+-|       "F"
+-|       <select>
+-|         <option>
+-|           "G"
+-
+-#data
+-<dd><dd><dt><dt><dd><li><li>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <dd>
+-|     <dd>
+-|     <dt>
+-|     <dt>
+-|     <dd>
+-|       <li>
+-|       <li>
+-
+-#data
+-<div><b></div><div><nobr>a<nobr>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <b>
+-|     <div>
+-|       <b>
+-|         <nobr>
+-|           "a"
+-|         <nobr>
+-
+-#data
+-<head></head>
+-<body></body>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   "
+-"
+-|   <body>
+-
+-#data
+-<head></head> <style></style>ddd
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|     <style>
+-|   " "
+-|   <body>
+-|     "ddd"
+-
+-#data
+-<kbd><table></kbd><col><select><tr>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <kbd>
+-|       <select>
+-|       <table>
+-|         <colgroup>
+-|           <col>
+-|         <tbody>
+-|           <tr>
+-
+-#data
+-<kbd><table></kbd><col><select><tr></table><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <kbd>
+-|       <select>
+-|       <table>
+-|         <colgroup>
+-|           <col>
+-|         <tbody>
+-|           <tr>
+-|       <div>
+-
+-#data
+-<a><li><style></style><title></title></a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <li>
+-|       <a>
+-|         <style>
+-|         <title>
+-
+-#data
+-<font></p><p><meta><title></title></font>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <font>
+-|       <p>
+-|     <p>
+-|       <font>
+-|         <meta>
+-|         <title>
+-
+-#data
+-<a><center><title></title><a>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <a>
+-|     <center>
+-|       <a>
+-|         <title>
+-|       <a>
+-
+-#data
+-<svg><title><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg title>
+-|         <div>
+-
+-#data
+-<svg><title><rect><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg title>
+-|         <rect>
+-|           <div>
+-
+-#data
+-<svg><title><svg><div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg title>
+-|         <svg svg>
+-|         <div>
+-
+-#data
+-<img <="" FAIL>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <img>
+-|       <=""
+-|       fail=""
+-
+-#data
+-<ul><li><div id='foo'/>A</li><li>B<div>C</div></li></ul>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <ul>
+-|       <li>
+-|         <div>
+-|           id="foo"
+-|           "A"
+-|       <li>
+-|         "B"
+-|         <div>
+-|           "C"
+-
+-#data
+-<svg><em><desc></em>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|     <em>
+-|       <desc>
+-
+-#data
+-<table><tr><td><svg><desc><td></desc><circle>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             <svg svg>
+-|               <svg desc>
+-|           <td>
+-|             <circle>
+-
+-#data
+-<svg><tfoot></mi><td>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <svg svg>
+-|       <svg tfoot>
+-|         <svg td>
+-
+-#data
+-<math><mrow><mrow><mn>1</mn></mrow><mi>a</mi></mrow></math>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <math math>
+-|       <math mrow>
+-|         <math mrow>
+-|           <math mn>
+-|             "1"
+-|         <math mi>
+-|           "a"
+-
+-#data
+-<!doctype html><input type="hidden"><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <frameset>
+-
+-#data
+-<!doctype html><input type="button"><frameset>
+-#errors
+-#document
+-| <!DOCTYPE html>
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-|       type="button"
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/webkit02.dat gcc-4.8.1/libgo/go/exp/html/testdata/webkit/webkit02.dat
+--- gcc-4.8.1.orig/libgo/go/exp/html/testdata/webkit/webkit02.dat	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/html/testdata/webkit/webkit02.dat	1969-12-31 18:00:00.000000000 -0600
+@@ -1,159 +0,0 @@
+-#data
+-<foo bar=qux/>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <foo>
+-|       bar="qux/"
+-
+-#data
+-<p id="status"><noscript><strong>A</strong></noscript><span>B</span></p>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <p>
+-|       id="status"
+-|       <noscript>
+-|         "<strong>A</strong>"
+-|       <span>
+-|         "B"
+-
+-#data
+-<div><sarcasm><div></div></sarcasm></div>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <div>
+-|       <sarcasm>
+-|         <div>
+-
+-#data
+-<html><body><img src="" border="0" alt="><div>A</div></body></html>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-
+-#data
+-<table><td></tbody>A
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     "A"
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-
+-#data
+-<table><td></thead>A
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "A"
+-
+-#data
+-<table><td></tfoot>A
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <tbody>
+-|         <tr>
+-|           <td>
+-|             "A"
+-
+-#data
+-<table><thead><td></tbody>A
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <table>
+-|       <thead>
+-|         <tr>
+-|           <td>
+-|             "A"
+-
+-#data
+-<legend>test</legend>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <legend>
+-|       "test"
+-
+-#data
+-<table><input>
+-#errors
+-#document
+-| <html>
+-|   <head>
+-|   <body>
+-|     <input>
+-|     <table>
+-
+-#data
+-<b><em><dcell><postfield><postfield><postfield><postfield><missing_glyph><missing_glyph><missing_glyph><missing_glyph><hkern><aside></b></em>
+-#errors
+-#document-fragment
+-div
+-#document
+-| <b>
+-|   <em>
+-|     <dcell>
+-|       <postfield>
+-|         <postfield>
+-|           <postfield>
+-|             <postfield>
+-|               <missing_glyph>
+-|                 <missing_glyph>
+-|                   <missing_glyph>
+-|                     <missing_glyph>
+-|                       <hkern>
+-| <aside>
+-|   <em>
+-|     <b>
+-
+-#data
+-<isindex action="x">
+-#errors
+-#document-fragment
+-table
+-#document
+-| <form>
+-|   action="x"
+-| <hr>
+-| <label>
+-|   "This is a searchable index. Enter search keywords: "
+-|   <input>
+-|     name="isindex"
+-| <hr>
+-
+-#data
+-<option><XH<optgroup></optgroup>
+-#errors
+-#document-fragment
+-select
+-#document
+-| <option>
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/token.go gcc-4.8.1/libgo/go/exp/html/token.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/token.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/token.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1173 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bytes"
+-	"exp/html/atom"
+-	"io"
+-	"strconv"
+-	"strings"
+-)
+-
+-// A TokenType is the type of a Token.
+-type TokenType uint32
+-
+-const (
+-	// ErrorToken means that an error occurred during tokenization.
+-	ErrorToken TokenType = iota
+-	// TextToken means a text node.
+-	TextToken
+-	// A StartTagToken looks like <a>.
+-	StartTagToken
+-	// An EndTagToken looks like </a>.
+-	EndTagToken
+-	// A SelfClosingTagToken tag looks like <br/>.
+-	SelfClosingTagToken
+-	// A CommentToken looks like <!--x-->.
+-	CommentToken
+-	// A DoctypeToken looks like <!DOCTYPE x>
+-	DoctypeToken
+-)
+-
+-// String returns a string representation of the TokenType.
+-func (t TokenType) String() string {
+-	switch t {
+-	case ErrorToken:
+-		return "Error"
+-	case TextToken:
+-		return "Text"
+-	case StartTagToken:
+-		return "StartTag"
+-	case EndTagToken:
+-		return "EndTag"
+-	case SelfClosingTagToken:
+-		return "SelfClosingTag"
+-	case CommentToken:
+-		return "Comment"
+-	case DoctypeToken:
+-		return "Doctype"
+-	}
+-	return "Invalid(" + strconv.Itoa(int(t)) + ")"
+-}
+-
+-// An Attribute is an attribute namespace-key-value triple. Namespace is
+-// non-empty for foreign attributes like xlink, Key is alphabetic (and hence
+-// does not contain escapable characters like '&', '<' or '>'), and Val is
+-// unescaped (it looks like "a<b" rather than "a&lt;b").
+-//
+-// Namespace is only used by the parser, not the tokenizer.
+-type Attribute struct {
+-	Namespace, Key, Val string
+-}
+-
+-// A Token consists of a TokenType and some Data (tag name for start and end
+-// tags, content for text, comments and doctypes). A tag Token may also contain
+-// a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b"
+-// rather than "a&lt;b"). For tag Tokens, DataAtom is the atom for Data, or
+-// zero if Data is not a known tag name.
+-type Token struct {
+-	Type     TokenType
+-	DataAtom atom.Atom
+-	Data     string
+-	Attr     []Attribute
+-}
+-
+-// tagString returns a string representation of a tag Token's Data and Attr.
+-func (t Token) tagString() string {
+-	if len(t.Attr) == 0 {
+-		return t.Data
+-	}
+-	buf := bytes.NewBufferString(t.Data)
+-	for _, a := range t.Attr {
+-		buf.WriteByte(' ')
+-		buf.WriteString(a.Key)
+-		buf.WriteString(`="`)
+-		escape(buf, a.Val)
+-		buf.WriteByte('"')
+-	}
+-	return buf.String()
+-}
+-
+-// String returns a string representation of the Token.
+-func (t Token) String() string {
+-	switch t.Type {
+-	case ErrorToken:
+-		return ""
+-	case TextToken:
+-		return EscapeString(t.Data)
+-	case StartTagToken:
+-		return "<" + t.tagString() + ">"
+-	case EndTagToken:
+-		return "</" + t.tagString() + ">"
+-	case SelfClosingTagToken:
+-		return "<" + t.tagString() + "/>"
+-	case CommentToken:
+-		return "<!--" + t.Data + "-->"
+-	case DoctypeToken:
+-		return "<!DOCTYPE " + t.Data + ">"
+-	}
+-	return "Invalid(" + strconv.Itoa(int(t.Type)) + ")"
+-}
+-
+-// span is a range of bytes in a Tokenizer's buffer. The start is inclusive,
+-// the end is exclusive.
+-type span struct {
+-	start, end int
+-}
+-
+-// A Tokenizer returns a stream of HTML Tokens.
+-type Tokenizer struct {
+-	// r is the source of the HTML text.
+-	r io.Reader
+-	// tt is the TokenType of the current token.
+-	tt TokenType
+-	// err is the first error encountered during tokenization. It is possible
+-	// for tt != Error && err != nil to hold: this means that Next returned a
+-	// valid token but the subsequent Next call will return an error token.
+-	// For example, if the HTML text input was just "plain", then the first
+-	// Next call would set z.err to io.EOF but return a TextToken, and all
+-	// subsequent Next calls would return an ErrorToken.
+-	// err is never reset. Once it becomes non-nil, it stays non-nil.
+-	err error
+-	// buf[raw.start:raw.end] holds the raw bytes of the current token.
+-	// buf[raw.end:] is buffered input that will yield future tokens.
+-	raw span
+-	buf []byte
+-	// buf[data.start:data.end] holds the raw bytes of the current token's data:
+-	// a text token's text, a tag token's tag name, etc.
+-	data span
+-	// pendingAttr is the attribute key and value currently being tokenized.
+-	// When complete, pendingAttr is pushed onto attr. nAttrReturned is
+-	// incremented on each call to TagAttr.
+-	pendingAttr   [2]span
+-	attr          [][2]span
+-	nAttrReturned int
+-	// rawTag is the "script" in "</script>" that closes the next token. If
+-	// non-empty, the subsequent call to Next will return a raw or RCDATA text
+-	// token: one that treats "<p>" as text instead of an element.
+-	// rawTag's contents are lower-cased.
+-	rawTag string
+-	// textIsRaw is whether the current text token's data is not escaped.
+-	textIsRaw bool
+-	// convertNUL is whether NUL bytes in the current token's data should
+-	// be converted into \ufffd replacement characters.
+-	convertNUL bool
+-	// allowCDATA is whether CDATA sections are allowed in the current context.
+-	allowCDATA bool
+-}
+-
+-// AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as
+-// the text "foo". The default value is false, which means to recognize it as
+-// a bogus comment "<!-- [CDATA[foo]] -->" instead.
+-//
+-// Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and
+-// only if tokenizing foreign content, such as MathML and SVG. However,
+-// tracking foreign-contentness is difficult to do purely in the tokenizer,
+-// as opposed to the parser, due to HTML integration points: an <svg> element
+-// can contain a <foreignObject> that is foreign-to-SVG but not foreign-to-
+-// HTML. For strict compliance with the HTML5 tokenization algorithm, it is the
+-// responsibility of the user of a tokenizer to call AllowCDATA as appropriate.
+-// In practice, if using the tokenizer without caring whether MathML or SVG
+-// CDATA is text or comments, such as tokenizing HTML to find all the anchor
+-// text, it is acceptable to ignore this responsibility.
+-func (z *Tokenizer) AllowCDATA(allowCDATA bool) {
+-	z.allowCDATA = allowCDATA
+-}
+-
+-// NextIsNotRawText instructs the tokenizer that the next token should not be
+-// considered as 'raw text'. Some elements, such as script and title elements,
+-// normally require the next token after the opening tag to be 'raw text' that
+-// has no child elements. For example, tokenizing "<title>a<b>c</b>d</title>"
+-// yields a start tag token for "<title>", a text token for "a<b>c</b>d", and
+-// an end tag token for "</title>". There are no distinct start tag or end tag
+-// tokens for the "<b>" and "</b>".
+-//
+-// This tokenizer implementation will generally look for raw text at the right
+-// times. Strictly speaking, an HTML5 compliant tokenizer should not look for
+-// raw text if in foreign content: <title> generally needs raw text, but a
+-// <title> inside an <svg> does not. Another example is that a <textarea>
+-// generally needs raw text, but a <textarea> is not allowed as an immediate
+-// child of a <select>; in normal parsing, a <textarea> implies </select>, but
+-// one cannot close the implicit element when parsing a <select>'s InnerHTML.
+-// Similarly to AllowCDATA, tracking the correct moment to override raw-text-
+-// ness is difficult to do purely in the tokenizer, as opposed to the parser.
+-// For strict compliance with the HTML5 tokenization algorithm, it is the
+-// responsibility of the user of a tokenizer to call NextIsNotRawText as
+-// appropriate. In practice, like AllowCDATA, it is acceptable to ignore this
+-// responsibility for basic usage.
+-//
+-// Note that this 'raw text' concept is different from the one offered by the
+-// Tokenizer.Raw method.
+-func (z *Tokenizer) NextIsNotRawText() {
+-	z.rawTag = ""
+-}
+-
+-// Err returns the error associated with the most recent ErrorToken token.
+-// This is typically io.EOF, meaning the end of tokenization.
+-func (z *Tokenizer) Err() error {
+-	if z.tt != ErrorToken {
+-		return nil
+-	}
+-	return z.err
+-}
+-
+-// readByte returns the next byte from the input stream, doing a buffered read
+-// from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte
+-// slice that holds all the bytes read so far for the current token.
+-// It sets z.err if the underlying reader returns an error.
+-// Pre-condition: z.err == nil.
+-func (z *Tokenizer) readByte() byte {
+-	if z.raw.end >= len(z.buf) {
+-		// Our buffer is exhausted and we have to read from z.r.
+-		// We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length
+-		// z.raw.end - z.raw.start is more than half the capacity of z.buf, then we
+-		// allocate a new buffer before the copy.
+-		c := cap(z.buf)
+-		d := z.raw.end - z.raw.start
+-		var buf1 []byte
+-		if 2*d > c {
+-			buf1 = make([]byte, d, 2*c)
+-		} else {
+-			buf1 = z.buf[:d]
+-		}
+-		copy(buf1, z.buf[z.raw.start:z.raw.end])
+-		if x := z.raw.start; x != 0 {
+-			// Adjust the data/attr spans to refer to the same contents after the copy.
+-			z.data.start -= x
+-			z.data.end -= x
+-			z.pendingAttr[0].start -= x
+-			z.pendingAttr[0].end -= x
+-			z.pendingAttr[1].start -= x
+-			z.pendingAttr[1].end -= x
+-			for i := range z.attr {
+-				z.attr[i][0].start -= x
+-				z.attr[i][0].end -= x
+-				z.attr[i][1].start -= x
+-				z.attr[i][1].end -= x
+-			}
+-		}
+-		z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d]
+-		// Now that we have copied the live bytes to the start of the buffer,
+-		// we read from z.r into the remainder.
+-		n, err := z.r.Read(buf1[d:cap(buf1)])
+-		if err != nil {
+-			z.err = err
+-			return 0
+-		}
+-		z.buf = buf1[:d+n]
+-	}
+-	x := z.buf[z.raw.end]
+-	z.raw.end++
+-	return x
+-}
+-
+-// skipWhiteSpace skips past any white space.
+-func (z *Tokenizer) skipWhiteSpace() {
+-	if z.err != nil {
+-		return
+-	}
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			return
+-		}
+-		switch c {
+-		case ' ', '\n', '\r', '\t', '\f':
+-			// No-op.
+-		default:
+-			z.raw.end--
+-			return
+-		}
+-	}
+-}
+-
+-// readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and
+-// is typically something like "script" or "textarea".
+-func (z *Tokenizer) readRawOrRCDATA() {
+-	if z.rawTag == "script" {
+-		z.readScript()
+-		z.textIsRaw = true
+-		z.rawTag = ""
+-		return
+-	}
+-loop:
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			break loop
+-		}
+-		if c != '<' {
+-			continue loop
+-		}
+-		c = z.readByte()
+-		if z.err != nil {
+-			break loop
+-		}
+-		if c != '/' {
+-			continue loop
+-		}
+-		if z.readRawEndTag() || z.err != nil {
+-			break loop
+-		}
+-	}
+-	z.data.end = z.raw.end
+-	// A textarea's or title's RCDATA can contain escaped entities.
+-	z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title"
+-	z.rawTag = ""
+-}
+-
+-// readRawEndTag attempts to read a tag like "</foo>", where "foo" is z.rawTag.
+-// If it succeeds, it backs up the input position to reconsume the tag and
+-// returns true. Otherwise it returns false. The opening "</" has already been
+-// consumed.
+-func (z *Tokenizer) readRawEndTag() bool {
+-	for i := 0; i < len(z.rawTag); i++ {
+-		c := z.readByte()
+-		if z.err != nil {
+-			return false
+-		}
+-		if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') {
+-			z.raw.end--
+-			return false
+-		}
+-	}
+-	c := z.readByte()
+-	if z.err != nil {
+-		return false
+-	}
+-	switch c {
+-	case ' ', '\n', '\r', '\t', '\f', '/', '>':
+-		// The 3 is 2 for the leading "</" plus 1 for the trailing character c.
+-		z.raw.end -= 3 + len(z.rawTag)
+-		return true
+-	}
+-	z.raw.end--
+-	return false
+-}
+-
+-// readScript reads until the next </script> tag, following the byzantine
+-// rules for escaping/hiding the closing tag.
+-func (z *Tokenizer) readScript() {
+-	defer func() {
+-		z.data.end = z.raw.end
+-	}()
+-	var c byte
+-
+-scriptData:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c == '<' {
+-		goto scriptDataLessThanSign
+-	}
+-	goto scriptData
+-
+-scriptDataLessThanSign:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '/':
+-		goto scriptDataEndTagOpen
+-	case '!':
+-		goto scriptDataEscapeStart
+-	}
+-	z.raw.end--
+-	goto scriptData
+-
+-scriptDataEndTagOpen:
+-	if z.readRawEndTag() || z.err != nil {
+-		return
+-	}
+-	goto scriptData
+-
+-scriptDataEscapeStart:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c == '-' {
+-		goto scriptDataEscapeStartDash
+-	}
+-	z.raw.end--
+-	goto scriptData
+-
+-scriptDataEscapeStartDash:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c == '-' {
+-		goto scriptDataEscapedDashDash
+-	}
+-	z.raw.end--
+-	goto scriptData
+-
+-scriptDataEscaped:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataEscapedDash
+-	case '<':
+-		goto scriptDataEscapedLessThanSign
+-	}
+-	goto scriptDataEscaped
+-
+-scriptDataEscapedDash:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataEscapedDashDash
+-	case '<':
+-		goto scriptDataEscapedLessThanSign
+-	}
+-	goto scriptDataEscaped
+-
+-scriptDataEscapedDashDash:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataEscapedDashDash
+-	case '<':
+-		goto scriptDataEscapedLessThanSign
+-	case '>':
+-		goto scriptData
+-	}
+-	goto scriptDataEscaped
+-
+-scriptDataEscapedLessThanSign:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c == '/' {
+-		goto scriptDataEscapedEndTagOpen
+-	}
+-	if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
+-		goto scriptDataDoubleEscapeStart
+-	}
+-	z.raw.end--
+-	goto scriptData
+-
+-scriptDataEscapedEndTagOpen:
+-	if z.readRawEndTag() || z.err != nil {
+-		return
+-	}
+-	goto scriptDataEscaped
+-
+-scriptDataDoubleEscapeStart:
+-	z.raw.end--
+-	for i := 0; i < len("script"); i++ {
+-		c = z.readByte()
+-		if z.err != nil {
+-			return
+-		}
+-		if c != "script"[i] && c != "SCRIPT"[i] {
+-			z.raw.end--
+-			goto scriptDataEscaped
+-		}
+-	}
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case ' ', '\n', '\r', '\t', '\f', '/', '>':
+-		goto scriptDataDoubleEscaped
+-	}
+-	z.raw.end--
+-	goto scriptDataEscaped
+-
+-scriptDataDoubleEscaped:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataDoubleEscapedDash
+-	case '<':
+-		goto scriptDataDoubleEscapedLessThanSign
+-	}
+-	goto scriptDataDoubleEscaped
+-
+-scriptDataDoubleEscapedDash:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataDoubleEscapedDashDash
+-	case '<':
+-		goto scriptDataDoubleEscapedLessThanSign
+-	}
+-	goto scriptDataDoubleEscaped
+-
+-scriptDataDoubleEscapedDashDash:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch c {
+-	case '-':
+-		goto scriptDataDoubleEscapedDashDash
+-	case '<':
+-		goto scriptDataDoubleEscapedLessThanSign
+-	case '>':
+-		goto scriptData
+-	}
+-	goto scriptDataDoubleEscaped
+-
+-scriptDataDoubleEscapedLessThanSign:
+-	c = z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c == '/' {
+-		goto scriptDataDoubleEscapeEnd
+-	}
+-	z.raw.end--
+-	goto scriptDataDoubleEscaped
+-
+-scriptDataDoubleEscapeEnd:
+-	if z.readRawEndTag() {
+-		z.raw.end += len("</script>")
+-		goto scriptDataEscaped
+-	}
+-	if z.err != nil {
+-		return
+-	}
+-	goto scriptDataDoubleEscaped
+-}
+-
+-// readComment reads the next comment token starting with "<!--". The opening
+-// "<!--" has already been consumed.
+-func (z *Tokenizer) readComment() {
+-	z.data.start = z.raw.end
+-	defer func() {
+-		if z.data.end < z.data.start {
+-			// It's a comment with no data, like <!-->.
+-			z.data.end = z.data.start
+-		}
+-	}()
+-	for dashCount := 2; ; {
+-		c := z.readByte()
+-		if z.err != nil {
+-			// Ignore up to two dashes at EOF.
+-			if dashCount > 2 {
+-				dashCount = 2
+-			}
+-			z.data.end = z.raw.end - dashCount
+-			return
+-		}
+-		switch c {
+-		case '-':
+-			dashCount++
+-			continue
+-		case '>':
+-			if dashCount >= 2 {
+-				z.data.end = z.raw.end - len("-->")
+-				return
+-			}
+-		case '!':
+-			if dashCount >= 2 {
+-				c = z.readByte()
+-				if z.err != nil {
+-					z.data.end = z.raw.end
+-					return
+-				}
+-				if c == '>' {
+-					z.data.end = z.raw.end - len("--!>")
+-					return
+-				}
+-			}
+-		}
+-		dashCount = 0
+-	}
+-}
+-
+-// readUntilCloseAngle reads until the next ">".
+-func (z *Tokenizer) readUntilCloseAngle() {
+-	z.data.start = z.raw.end
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return
+-		}
+-		if c == '>' {
+-			z.data.end = z.raw.end - len(">")
+-			return
+-		}
+-	}
+-}
+-
+-// readMarkupDeclaration reads the next token starting with "<!". It might be
+-// a "<!--comment-->", a "<!DOCTYPE foo>", a "<![CDATA[section]]>" or
+-// "<!a bogus comment". The opening "<!" has already been consumed.
+-func (z *Tokenizer) readMarkupDeclaration() TokenType {
+-	z.data.start = z.raw.end
+-	var c [2]byte
+-	for i := 0; i < 2; i++ {
+-		c[i] = z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return CommentToken
+-		}
+-	}
+-	if c[0] == '-' && c[1] == '-' {
+-		z.readComment()
+-		return CommentToken
+-	}
+-	z.raw.end -= 2
+-	if z.readDoctype() {
+-		return DoctypeToken
+-	}
+-	if z.allowCDATA && z.readCDATA() {
+-		z.convertNUL = true
+-		return TextToken
+-	}
+-	// It's a bogus comment.
+-	z.readUntilCloseAngle()
+-	return CommentToken
+-}
+-
+-// readDoctype attempts to read a doctype declaration and returns true if
+-// successful. The opening "<!" has already been consumed.
+-func (z *Tokenizer) readDoctype() bool {
+-	const s = "DOCTYPE"
+-	for i := 0; i < len(s); i++ {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return false
+-		}
+-		if c != s[i] && c != s[i]+('a'-'A') {
+-			// Back up to read the fragment of "DOCTYPE" again.
+-			z.raw.end = z.data.start
+-			return false
+-		}
+-	}
+-	if z.skipWhiteSpace(); z.err != nil {
+-		z.data.start = z.raw.end
+-		z.data.end = z.raw.end
+-		return true
+-	}
+-	z.readUntilCloseAngle()
+-	return true
+-}
+-
+-// readCDATA attempts to read a CDATA section and returns true if
+-// successful. The opening "<!" has already been consumed.
+-func (z *Tokenizer) readCDATA() bool {
+-	const s = "[CDATA["
+-	for i := 0; i < len(s); i++ {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return false
+-		}
+-		if c != s[i] {
+-			// Back up to read the fragment of "[CDATA[" again.
+-			z.raw.end = z.data.start
+-			return false
+-		}
+-	}
+-	z.data.start = z.raw.end
+-	brackets := 0
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return true
+-		}
+-		switch c {
+-		case ']':
+-			brackets++
+-		case '>':
+-			if brackets >= 2 {
+-				z.data.end = z.raw.end - len("]]>")
+-				return true
+-			}
+-			brackets = 0
+-		default:
+-			brackets = 0
+-		}
+-	}
+-	panic("unreachable")
+-}
+-
+-// startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end]
+-// case-insensitively matches any element of ss.
+-func (z *Tokenizer) startTagIn(ss ...string) bool {
+-loop:
+-	for _, s := range ss {
+-		if z.data.end-z.data.start != len(s) {
+-			continue loop
+-		}
+-		for i := 0; i < len(s); i++ {
+-			c := z.buf[z.data.start+i]
+-			if 'A' <= c && c <= 'Z' {
+-				c += 'a' - 'A'
+-			}
+-			if c != s[i] {
+-				continue loop
+-			}
+-		}
+-		return true
+-	}
+-	return false
+-}
+-
+-// readStartTag reads the next start tag token. The opening "<a" has already
+-// been consumed, where 'a' means anything in [A-Za-z].
+-func (z *Tokenizer) readStartTag() TokenType {
+-	z.readTag(true)
+-	if z.err != nil {
+-		return ErrorToken
+-	}
+-	// Several tags flag the tokenizer's next token as raw.
+-	c, raw := z.buf[z.data.start], false
+-	if 'A' <= c && c <= 'Z' {
+-		c += 'a' - 'A'
+-	}
+-	switch c {
+-	case 'i':
+-		raw = z.startTagIn("iframe")
+-	case 'n':
+-		raw = z.startTagIn("noembed", "noframes", "noscript")
+-	case 'p':
+-		raw = z.startTagIn("plaintext")
+-	case 's':
+-		raw = z.startTagIn("script", "style")
+-	case 't':
+-		raw = z.startTagIn("textarea", "title")
+-	case 'x':
+-		raw = z.startTagIn("xmp")
+-	}
+-	if raw {
+-		z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end]))
+-	}
+-	// Look for a self-closing token like "<br/>".
+-	if z.err == nil && z.buf[z.raw.end-2] == '/' {
+-		return SelfClosingTagToken
+-	}
+-	return StartTagToken
+-}
+-
+-// readTag reads the next tag token and its attributes. If saveAttr, those
+-// attributes are saved in z.attr, otherwise z.attr is set to an empty slice.
+-// The opening "<a" or "</a" has already been consumed, where 'a' means anything
+-// in [A-Za-z].
+-func (z *Tokenizer) readTag(saveAttr bool) {
+-	z.attr = z.attr[:0]
+-	z.nAttrReturned = 0
+-	// Read the tag name and attribute key/value pairs.
+-	z.readTagName()
+-	if z.skipWhiteSpace(); z.err != nil {
+-		return
+-	}
+-	for {
+-		c := z.readByte()
+-		if z.err != nil || c == '>' {
+-			break
+-		}
+-		z.raw.end--
+-		z.readTagAttrKey()
+-		z.readTagAttrVal()
+-		// Save pendingAttr if saveAttr and that attribute has a non-empty key.
+-		if saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end {
+-			z.attr = append(z.attr, z.pendingAttr)
+-		}
+-		if z.skipWhiteSpace(); z.err != nil {
+-			break
+-		}
+-	}
+-}
+-
+-// readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end)
+-// is positioned such that the first byte of the tag name (the "d" in "<div")
+-// has already been consumed.
+-func (z *Tokenizer) readTagName() {
+-	z.data.start = z.raw.end - 1
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.data.end = z.raw.end
+-			return
+-		}
+-		switch c {
+-		case ' ', '\n', '\r', '\t', '\f':
+-			z.data.end = z.raw.end - 1
+-			return
+-		case '/', '>':
+-			z.raw.end--
+-			z.data.end = z.raw.end
+-			return
+-		}
+-	}
+-}
+-
+-// readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>".
+-// Precondition: z.err == nil.
+-func (z *Tokenizer) readTagAttrKey() {
+-	z.pendingAttr[0].start = z.raw.end
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			z.pendingAttr[0].end = z.raw.end
+-			return
+-		}
+-		switch c {
+-		case ' ', '\n', '\r', '\t', '\f', '/':
+-			z.pendingAttr[0].end = z.raw.end - 1
+-			return
+-		case '=', '>':
+-			z.raw.end--
+-			z.pendingAttr[0].end = z.raw.end
+-			return
+-		}
+-	}
+-}
+-
+-// readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>".
+-func (z *Tokenizer) readTagAttrVal() {
+-	z.pendingAttr[1].start = z.raw.end
+-	z.pendingAttr[1].end = z.raw.end
+-	if z.skipWhiteSpace(); z.err != nil {
+-		return
+-	}
+-	c := z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	if c != '=' {
+-		z.raw.end--
+-		return
+-	}
+-	if z.skipWhiteSpace(); z.err != nil {
+-		return
+-	}
+-	quote := z.readByte()
+-	if z.err != nil {
+-		return
+-	}
+-	switch quote {
+-	case '>':
+-		z.raw.end--
+-		return
+-
+-	case '\'', '"':
+-		z.pendingAttr[1].start = z.raw.end
+-		for {
+-			c := z.readByte()
+-			if z.err != nil {
+-				z.pendingAttr[1].end = z.raw.end
+-				return
+-			}
+-			if c == quote {
+-				z.pendingAttr[1].end = z.raw.end - 1
+-				return
+-			}
+-		}
+-
+-	default:
+-		z.pendingAttr[1].start = z.raw.end - 1
+-		for {
+-			c := z.readByte()
+-			if z.err != nil {
+-				z.pendingAttr[1].end = z.raw.end
+-				return
+-			}
+-			switch c {
+-			case ' ', '\n', '\r', '\t', '\f':
+-				z.pendingAttr[1].end = z.raw.end - 1
+-				return
+-			case '>':
+-				z.raw.end--
+-				z.pendingAttr[1].end = z.raw.end
+-				return
+-			}
+-		}
+-	}
+-}
+-
+-// Next scans the next token and returns its type.
+-func (z *Tokenizer) Next() TokenType {
+-	if z.err != nil {
+-		z.tt = ErrorToken
+-		return z.tt
+-	}
+-	z.raw.start = z.raw.end
+-	z.data.start = z.raw.end
+-	z.data.end = z.raw.end
+-	if z.rawTag != "" {
+-		if z.rawTag == "plaintext" {
+-			// Read everything up to EOF.
+-			for z.err == nil {
+-				z.readByte()
+-			}
+-			z.data.end = z.raw.end
+-			z.textIsRaw = true
+-		} else {
+-			z.readRawOrRCDATA()
+-		}
+-		if z.data.end > z.data.start {
+-			z.tt = TextToken
+-			z.convertNUL = true
+-			return z.tt
+-		}
+-	}
+-	z.textIsRaw = false
+-	z.convertNUL = false
+-
+-loop:
+-	for {
+-		c := z.readByte()
+-		if z.err != nil {
+-			break loop
+-		}
+-		if c != '<' {
+-			continue loop
+-		}
+-
+-		// Check if the '<' we have just read is part of a tag, comment
+-		// or doctype. If not, it's part of the accumulated text token.
+-		c = z.readByte()
+-		if z.err != nil {
+-			break loop
+-		}
+-		var tokenType TokenType
+-		switch {
+-		case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z':
+-			tokenType = StartTagToken
+-		case c == '/':
+-			tokenType = EndTagToken
+-		case c == '!' || c == '?':
+-			// We use CommentToken to mean any of "<!--actual comments-->",
+-			// "<!DOCTYPE declarations>" and "<?xml processing instructions?>".
+-			tokenType = CommentToken
+-		default:
+-			continue
+-		}
+-
+-		// We have a non-text token, but we might have accumulated some text
+-		// before that. If so, we return the text first, and return the non-
+-		// text token on the subsequent call to Next.
+-		if x := z.raw.end - len("<a"); z.raw.start < x {
+-			z.raw.end = x
+-			z.data.end = x
+-			z.tt = TextToken
+-			return z.tt
+-		}
+-		switch tokenType {
+-		case StartTagToken:
+-			z.tt = z.readStartTag()
+-			return z.tt
+-		case EndTagToken:
+-			c = z.readByte()
+-			if z.err != nil {
+-				break loop
+-			}
+-			if c == '>' {
+-				// "</>" does not generate a token at all.
+-				// Reset the tokenizer state and start again.
+-				z.raw.start = z.raw.end
+-				z.data.start = z.raw.end
+-				z.data.end = z.raw.end
+-				continue loop
+-			}
+-			if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' {
+-				z.readTag(false)
+-				if z.err != nil {
+-					z.tt = ErrorToken
+-				} else {
+-					z.tt = EndTagToken
+-				}
+-				return z.tt
+-			}
+-			z.raw.end--
+-			z.readUntilCloseAngle()
+-			z.tt = CommentToken
+-			return z.tt
+-		case CommentToken:
+-			if c == '!' {
+-				z.tt = z.readMarkupDeclaration()
+-				return z.tt
+-			}
+-			z.raw.end--
+-			z.readUntilCloseAngle()
+-			z.tt = CommentToken
+-			return z.tt
+-		}
+-	}
+-	if z.raw.start < z.raw.end {
+-		z.data.end = z.raw.end
+-		z.tt = TextToken
+-		return z.tt
+-	}
+-	z.tt = ErrorToken
+-	return z.tt
+-}
+-
+-// Raw returns the unmodified text of the current token. Calling Next, Token,
+-// Text, TagName or TagAttr may change the contents of the returned slice.
+-func (z *Tokenizer) Raw() []byte {
+-	return z.buf[z.raw.start:z.raw.end]
+-}
+-
+-// convertNewlines converts "\r" and "\r\n" in s to "\n".
+-// The conversion happens in place, but the resulting slice may be shorter.
+-func convertNewlines(s []byte) []byte {
+-	for i, c := range s {
+-		if c != '\r' {
+-			continue
+-		}
+-
+-		src := i + 1
+-		if src >= len(s) || s[src] != '\n' {
+-			s[i] = '\n'
+-			continue
+-		}
+-
+-		dst := i
+-		for src < len(s) {
+-			if s[src] == '\r' {
+-				if src+1 < len(s) && s[src+1] == '\n' {
+-					src++
+-				}
+-				s[dst] = '\n'
+-			} else {
+-				s[dst] = s[src]
+-			}
+-			src++
+-			dst++
+-		}
+-		return s[:dst]
+-	}
+-	return s
+-}
+-
+-var (
+-	nul         = []byte("\x00")
+-	replacement = []byte("\ufffd")
+-)
+-
+-// Text returns the unescaped text of a text, comment or doctype token. The
+-// contents of the returned slice may change on the next call to Next.
+-func (z *Tokenizer) Text() []byte {
+-	switch z.tt {
+-	case TextToken, CommentToken, DoctypeToken:
+-		s := z.buf[z.data.start:z.data.end]
+-		z.data.start = z.raw.end
+-		z.data.end = z.raw.end
+-		s = convertNewlines(s)
+-		if (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) {
+-			s = bytes.Replace(s, nul, replacement, -1)
+-		}
+-		if !z.textIsRaw {
+-			s = unescape(s, false)
+-		}
+-		return s
+-	}
+-	return nil
+-}
+-
+-// TagName returns the lower-cased name of a tag token (the `img` out of
+-// `<IMG SRC="foo">`) and whether the tag has attributes.
+-// The contents of the returned slice may change on the next call to Next.
+-func (z *Tokenizer) TagName() (name []byte, hasAttr bool) {
+-	if z.data.start < z.data.end {
+-		switch z.tt {
+-		case StartTagToken, EndTagToken, SelfClosingTagToken:
+-			s := z.buf[z.data.start:z.data.end]
+-			z.data.start = z.raw.end
+-			z.data.end = z.raw.end
+-			return lower(s), z.nAttrReturned < len(z.attr)
+-		}
+-	}
+-	return nil, false
+-}
+-
+-// TagAttr returns the lower-cased key and unescaped value of the next unparsed
+-// attribute for the current tag token and whether there are more attributes.
+-// The contents of the returned slices may change on the next call to Next.
+-func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) {
+-	if z.nAttrReturned < len(z.attr) {
+-		switch z.tt {
+-		case StartTagToken, SelfClosingTagToken:
+-			x := z.attr[z.nAttrReturned]
+-			z.nAttrReturned++
+-			key = z.buf[x[0].start:x[0].end]
+-			val = z.buf[x[1].start:x[1].end]
+-			return lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr)
+-		}
+-	}
+-	return nil, nil, false
+-}
+-
+-// Token returns the next Token. The result's Data and Attr values remain valid
+-// after subsequent Next calls.
+-func (z *Tokenizer) Token() Token {
+-	t := Token{Type: z.tt}
+-	switch z.tt {
+-	case TextToken, CommentToken, DoctypeToken:
+-		t.Data = string(z.Text())
+-	case StartTagToken, SelfClosingTagToken, EndTagToken:
+-		name, moreAttr := z.TagName()
+-		for moreAttr {
+-			var key, val []byte
+-			key, val, moreAttr = z.TagAttr()
+-			t.Attr = append(t.Attr, Attribute{"", atom.String(key), string(val)})
+-		}
+-		if a := atom.Lookup(name); a != 0 {
+-			t.DataAtom, t.Data = a, a.String()
+-		} else {
+-			t.DataAtom, t.Data = 0, string(name)
+-		}
+-	}
+-	return t
+-}
+-
+-// NewTokenizer returns a new HTML Tokenizer for the given Reader.
+-// The input is assumed to be UTF-8 encoded.
+-func NewTokenizer(r io.Reader) *Tokenizer {
+-	return NewTokenizerFragment(r, "")
+-}
+-
+-// NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for
+-// tokenizing an exisitng element's InnerHTML fragment. contextTag is that
+-// element's tag, such as "div" or "iframe".
+-//
+-// For example, how the InnerHTML "a<b" is tokenized depends on whether it is
+-// for a <p> tag or a <script> tag.
+-//
+-// The input is assumed to be UTF-8 encoded.
+-func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer {
+-	z := &Tokenizer{
+-		r:   r,
+-		buf: make([]byte, 0, 4096),
+-	}
+-	if contextTag != "" {
+-		switch s := strings.ToLower(contextTag); s {
+-		case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp":
+-			z.rawTag = s
+-		}
+-	}
+-	return z
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/html/token_test.go gcc-4.8.1/libgo/go/exp/html/token_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/html/token_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/html/token_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,679 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package html
+-
+-import (
+-	"bytes"
+-	"io"
+-	"io/ioutil"
+-	"runtime"
+-	"strings"
+-	"testing"
+-)
+-
+-type tokenTest struct {
+-	// A short description of the test case.
+-	desc string
+-	// The HTML to parse.
+-	html string
+-	// The string representations of the expected tokens, joined by '$'.
+-	golden string
+-}
+-
+-var tokenTests = []tokenTest{
+-	{
+-		"empty",
+-		"",
+-		"",
+-	},
+-	// A single text node. The tokenizer should not break text nodes on whitespace,
+-	// nor should it normalize whitespace within a text node.
+-	{
+-		"text",
+-		"foo  bar",
+-		"foo  bar",
+-	},
+-	// An entity.
+-	{
+-		"entity",
+-		"one &lt; two",
+-		"one &lt; two",
+-	},
+-	// A start, self-closing and end tag. The tokenizer does not care if the start
+-	// and end tokens don't match; that is the job of the parser.
+-	{
+-		"tags",
+-		"<a>b<c/>d</e>",
+-		"<a>$b$<c/>$d$</e>",
+-	},
+-	// Angle brackets that aren't a tag.
+-	{
+-		"not a tag #0",
+-		"<",
+-		"&lt;",
+-	},
+-	{
+-		"not a tag #1",
+-		"</",
+-		"&lt;/",
+-	},
+-	{
+-		"not a tag #2",
+-		"</>",
+-		"",
+-	},
+-	{
+-		"not a tag #3",
+-		"a</>b",
+-		"a$b",
+-	},
+-	{
+-		"not a tag #4",
+-		"</ >",
+-		"<!-- -->",
+-	},
+-	{
+-		"not a tag #5",
+-		"</.",
+-		"<!--.-->",
+-	},
+-	{
+-		"not a tag #6",
+-		"</.>",
+-		"<!--.-->",
+-	},
+-	{
+-		"not a tag #7",
+-		"a < b",
+-		"a &lt; b",
+-	},
+-	{
+-		"not a tag #8",
+-		"<.>",
+-		"&lt;.&gt;",
+-	},
+-	{
+-		"not a tag #9",
+-		"a<<<b>>>c",
+-		"a&lt;&lt;$<b>$&gt;&gt;c",
+-	},
+-	{
+-		"not a tag #10",
+-		"if x<0 and y < 0 then x*y>0",
+-		"if x&lt;0 and y &lt; 0 then x*y&gt;0",
+-	},
+-	// EOF in a tag name.
+-	{
+-		"tag name eof #0",
+-		"<a",
+-		"",
+-	},
+-	{
+-		"tag name eof #1",
+-		"<a ",
+-		"",
+-	},
+-	{
+-		"tag name eof #2",
+-		"a<b",
+-		"a",
+-	},
+-	{
+-		"tag name eof #3",
+-		"<a><b",
+-		"<a>",
+-	},
+-	{
+-		"tag name eof #4",
+-		`<a x`,
+-		``,
+-	},
+-	// Some malformed tags that are missing a '>'.
+-	{
+-		"malformed tag #0",
+-		`<p</p>`,
+-		`<p< p="">`,
+-	},
+-	{
+-		"malformed tag #1",
+-		`<p </p>`,
+-		`<p <="" p="">`,
+-	},
+-	{
+-		"malformed tag #2",
+-		`<p id`,
+-		``,
+-	},
+-	{
+-		"malformed tag #3",
+-		`<p id=`,
+-		``,
+-	},
+-	{
+-		"malformed tag #4",
+-		`<p id=>`,
+-		`<p id="">`,
+-	},
+-	{
+-		"malformed tag #5",
+-		`<p id=0`,
+-		``,
+-	},
+-	{
+-		"malformed tag #6",
+-		`<p id=0</p>`,
+-		`<p id="0&lt;/p">`,
+-	},
+-	{
+-		"malformed tag #7",
+-		`<p id="0</p>`,
+-		``,
+-	},
+-	{
+-		"malformed tag #8",
+-		`<p id="0"</p>`,
+-		`<p id="0" <="" p="">`,
+-	},
+-	{
+-		"malformed tag #9",
+-		`<p></p id`,
+-		`<p>`,
+-	},
+-	// Raw text and RCDATA.
+-	{
+-		"basic raw text",
+-		"<script><a></b></script>",
+-		"<script>$&lt;a&gt;&lt;/b&gt;$</script>",
+-	},
+-	{
+-		"unfinished script end tag",
+-		"<SCRIPT>a</SCR",
+-		"<script>$a&lt;/SCR",
+-	},
+-	{
+-		"broken script end tag",
+-		"<SCRIPT>a</SCR ipt>",
+-		"<script>$a&lt;/SCR ipt&gt;",
+-	},
+-	{
+-		"EOF in script end tag",
+-		"<SCRIPT>a</SCRipt",
+-		"<script>$a&lt;/SCRipt",
+-	},
+-	{
+-		"scriptx end tag",
+-		"<SCRIPT>a</SCRiptx",
+-		"<script>$a&lt;/SCRiptx",
+-	},
+-	{
+-		"' ' completes script end tag",
+-		"<SCRIPT>a</SCRipt ",
+-		"<script>$a",
+-	},
+-	{
+-		"'>' completes script end tag",
+-		"<SCRIPT>a</SCRipt>",
+-		"<script>$a$</script>",
+-	},
+-	{
+-		"self-closing script end tag",
+-		"<SCRIPT>a</SCRipt/>",
+-		"<script>$a$</script>",
+-	},
+-	{
+-		"nested script tag",
+-		"<SCRIPT>a</SCRipt<script>",
+-		"<script>$a&lt;/SCRipt&lt;script&gt;",
+-	},
+-	{
+-		"script end tag after unfinished",
+-		"<SCRIPT>a</SCRipt</script>",
+-		"<script>$a&lt;/SCRipt$</script>",
+-	},
+-	{
+-		"script/style mismatched tags",
+-		"<script>a</style>",
+-		"<script>$a&lt;/style&gt;",
+-	},
+-	{
+-		"style element with entity",
+-		"<style>&apos;",
+-		"<style>$&amp;apos;",
+-	},
+-	{
+-		"textarea with tag",
+-		"<textarea><div></textarea>",
+-		"<textarea>$&lt;div&gt;$</textarea>",
+-	},
+-	{
+-		"title with tag and entity",
+-		"<title><b>K&amp;R C</b></title>",
+-		"<title>$&lt;b&gt;K&amp;R C&lt;/b&gt;$</title>",
+-	},
+-	// DOCTYPE tests.
+-	{
+-		"Proper DOCTYPE",
+-		"<!DOCTYPE html>",
+-		"<!DOCTYPE html>",
+-	},
+-	{
+-		"DOCTYPE with no space",
+-		"<!doctypehtml>",
+-		"<!DOCTYPE html>",
+-	},
+-	{
+-		"DOCTYPE with two spaces",
+-		"<!doctype  html>",
+-		"<!DOCTYPE html>",
+-	},
+-	{
+-		"looks like DOCTYPE but isn't",
+-		"<!DOCUMENT html>",
+-		"<!--DOCUMENT html-->",
+-	},
+-	{
+-		"DOCTYPE at EOF",
+-		"<!DOCtype",
+-		"<!DOCTYPE >",
+-	},
+-	// XML processing instructions.
+-	{
+-		"XML processing instruction",
+-		"<?xml?>",
+-		"<!--?xml?-->",
+-	},
+-	// Comments.
+-	{
+-		"comment0",
+-		"abc<b><!-- skipme --></b>def",
+-		"abc$<b>$<!-- skipme -->$</b>$def",
+-	},
+-	{
+-		"comment1",
+-		"a<!-->z",
+-		"a$<!---->$z",
+-	},
+-	{
+-		"comment2",
+-		"a<!--->z",
+-		"a$<!---->$z",
+-	},
+-	{
+-		"comment3",
+-		"a<!--x>-->z",
+-		"a$<!--x>-->$z",
+-	},
+-	{
+-		"comment4",
+-		"a<!--x->-->z",
+-		"a$<!--x->-->$z",
+-	},
+-	{
+-		"comment5",
+-		"a<!>z",
+-		"a$<!---->$z",
+-	},
+-	{
+-		"comment6",
+-		"a<!->z",
+-		"a$<!----->$z",
+-	},
+-	{
+-		"comment7",
+-		"a<!---<>z",
+-		"a$<!---<>z-->",
+-	},
+-	{
+-		"comment8",
+-		"a<!--z",
+-		"a$<!--z-->",
+-	},
+-	{
+-		"comment9",
+-		"a<!--z-",
+-		"a$<!--z-->",
+-	},
+-	{
+-		"comment10",
+-		"a<!--z--",
+-		"a$<!--z-->",
+-	},
+-	{
+-		"comment11",
+-		"a<!--z---",
+-		"a$<!--z--->",
+-	},
+-	{
+-		"comment12",
+-		"a<!--z----",
+-		"a$<!--z---->",
+-	},
+-	{
+-		"comment13",
+-		"a<!--x--!>z",
+-		"a$<!--x-->$z",
+-	},
+-	// An attribute with a backslash.
+-	{
+-		"backslash",
+-		`<p id="a\"b">`,
+-		`<p id="a\" b"="">`,
+-	},
+-	// Entities, tag name and attribute key lower-casing, and whitespace
+-	// normalization within a tag.
+-	{
+-		"tricky",
+-		"<p \t\n iD=\"a&quot;B\"  foo=\"bar\"><EM>te&lt;&amp;;xt</em></p>",
+-		`<p id="a&#34;B" foo="bar">$<em>$te&lt;&amp;;xt$</em>$</p>`,
+-	},
+-	// A nonexistent entity. Tokenizing and converting back to a string should
+-	// escape the "&" to become "&amp;".
+-	{
+-		"noSuchEntity",
+-		`<a b="c&noSuchEntity;d">&lt;&alsoDoesntExist;&`,
+-		`<a b="c&amp;noSuchEntity;d">$&lt;&amp;alsoDoesntExist;&amp;`,
+-	},
+-	{
+-		"entity without semicolon",
+-		`&notit;&notin;<a b="q=z&amp=5&notice=hello&not;=world">`,
+-		`Â¬it;â$<a b="q=z&amp;amp=5&amp;notice=helloÂ¬=world">`,
+-	},
+-	{
+-		"entity with digits",
+-		"&frac12;",
+-		"Âœ",
+-	},
+-	// Attribute tests:
+-	// http://dev.w3.org/html5/spec/Overview.html#attributes-0
+-	{
+-		"Empty attribute",
+-		`<input disabled FOO>`,
+-		`<input disabled="" foo="">`,
+-	},
+-	{
+-		"Empty attribute, whitespace",
+-		`<input disabled FOO >`,
+-		`<input disabled="" foo="">`,
+-	},
+-	{
+-		"Unquoted attribute value",
+-		`<input value=yes FOO=BAR>`,
+-		`<input value="yes" foo="BAR">`,
+-	},
+-	{
+-		"Unquoted attribute value, spaces",
+-		`<input value = yes FOO = BAR>`,
+-		`<input value="yes" foo="BAR">`,
+-	},
+-	{
+-		"Unquoted attribute value, trailing space",
+-		`<input value=yes FOO=BAR >`,
+-		`<input value="yes" foo="BAR">`,
+-	},
+-	{
+-		"Single-quoted attribute value",
+-		`<input value='yes' FOO='BAR'>`,
+-		`<input value="yes" foo="BAR">`,
+-	},
+-	{
+-		"Single-quoted attribute value, trailing space",
+-		`<input value='yes' FOO='BAR' >`,
+-		`<input value="yes" foo="BAR">`,
+-	},
+-	{
+-		"Double-quoted attribute value",
+-		`<input value="I'm an attribute" FOO="BAR">`,
+-		`<input value="I&#39;m an attribute" foo="BAR">`,
+-	},
+-	{
+-		"Attribute name characters",
+-		`<meta http-equiv="content-type">`,
+-		`<meta http-equiv="content-type">`,
+-	},
+-	{
+-		"Mixed attributes",
+-		`a<P V="0 1" w='2' X=3 y>z`,
+-		`a$<p v="0 1" w="2" x="3" y="">$z`,
+-	},
+-	{
+-		"Attributes with a solitary single quote",
+-		`<p id=can't><p id=won't>`,
+-		`<p id="can&#39;t">$<p id="won&#39;t">`,
+-	},
+-}
+-
+-func TestTokenizer(t *testing.T) {
+-loop:
+-	for _, tt := range tokenTests {
+-		z := NewTokenizer(strings.NewReader(tt.html))
+-		if tt.golden != "" {
+-			for i, s := range strings.Split(tt.golden, "$") {
+-				if z.Next() == ErrorToken {
+-					t.Errorf("%s token %d: want %q got error %v", tt.desc, i, s, z.Err())
+-					continue loop
+-				}
+-				actual := z.Token().String()
+-				if s != actual {
+-					t.Errorf("%s token %d: want %q got %q", tt.desc, i, s, actual)
+-					continue loop
+-				}
+-			}
+-		}
+-		z.Next()
+-		if z.Err() != io.EOF {
+-			t.Errorf("%s: want EOF got %q", tt.desc, z.Err())
+-		}
+-	}
+-}
+-
+-type unescapeTest struct {
+-	// A short description of the test case.
+-	desc string
+-	// The HTML text.
+-	html string
+-	// The unescaped text.
+-	unescaped string
+-}
+-
+-var unescapeTests = []unescapeTest{
+-	// Handle no entities.
+-	{
+-		"copy",
+-		"A\ttext\nstring",
+-		"A\ttext\nstring",
+-	},
+-	// Handle simple named entities.
+-	{
+-		"simple",
+-		"&amp; &gt; &lt;",
+-		"& > <",
+-	},
+-	// Handle hitting the end of the string.
+-	{
+-		"stringEnd",
+-		"&amp &amp",
+-		"& &",
+-	},
+-	// Handle entities with two codepoints.
+-	{
+-		"multiCodepoint",
+-		"text &gesl; blah",
+-		"text \u22db\ufe00 blah",
+-	},
+-	// Handle decimal numeric entities.
+-	{
+-		"decimalEntity",
+-		"Delta = &#916; ",
+-		"Delta = Î ",
+-	},
+-	// Handle hexadecimal numeric entities.
+-	{
+-		"hexadecimalEntity",
+-		"Lambda = &#x3bb; = &#X3Bb ",
+-		"Lambda = Î» = Î» ",
+-	},
+-	// Handle numeric early termination.
+-	{
+-		"numericEnds",
+-		"&# &#x &#128;43 &copy = &#169f = &#xa9",
+-		"&# &#x â¬43 Â© = Â©f = Â©",
+-	},
+-	// Handle numeric ISO-8859-1 entity replacements.
+-	{
+-		"numericReplacements",
+-		"Footnote&#x87;",
+-		"Footnoteâ¡",
+-	},
+-}
+-
+-func TestUnescape(t *testing.T) {
+-	for _, tt := range unescapeTests {
+-		unescaped := UnescapeString(tt.html)
+-		if unescaped != tt.unescaped {
+-			t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped)
+-		}
+-	}
+-}
+-
+-func TestUnescapeEscape(t *testing.T) {
+-	ss := []string{
+-		``,
+-		`abc def`,
+-		`a & b`,
+-		`a&amp;b`,
+-		`a &amp b`,
+-		`&quot;`,
+-		`"`,
+-		`"<&>"`,
+-		`&quot;&lt;&amp;&gt;&quot;`,
+-		`3&5==1 && 0<1, "0&lt;1", a+acute=&aacute;`,
+-		`The special characters are: <, >, &, ' and "`,
+-	}
+-	for _, s := range ss {
+-		if got := UnescapeString(EscapeString(s)); got != s {
+-			t.Errorf("got %q want %q", got, s)
+-		}
+-	}
+-}
+-
+-func TestBufAPI(t *testing.T) {
+-	s := "0<a>1</a>2<b>3<a>4<a>5</a>6</b>7</a>8<a/>9"
+-	z := NewTokenizer(bytes.NewBufferString(s))
+-	var result bytes.Buffer
+-	depth := 0
+-loop:
+-	for {
+-		tt := z.Next()
+-		switch tt {
+-		case ErrorToken:
+-			if z.Err() != io.EOF {
+-				t.Error(z.Err())
+-			}
+-			break loop
+-		case TextToken:
+-			if depth > 0 {
+-				result.Write(z.Text())
+-			}
+-		case StartTagToken, EndTagToken:
+-			tn, _ := z.TagName()
+-			if len(tn) == 1 && tn[0] == 'a' {
+-				if tt == StartTagToken {
+-					depth++
+-				} else {
+-					depth--
+-				}
+-			}
+-		}
+-	}
+-	u := "14567"
+-	v := string(result.Bytes())
+-	if u != v {
+-		t.Errorf("TestBufAPI: want %q got %q", u, v)
+-	}
+-}
+-
+-func TestConvertNewlines(t *testing.T) {
+-	testCases := map[string]string{
+-		"Mac\rDOS\r\nUnix\n":    "Mac\nDOS\nUnix\n",
+-		"Unix\nMac\rDOS\r\n":    "Unix\nMac\nDOS\n",
+-		"DOS\r\nDOS\r\nDOS\r\n": "DOS\nDOS\nDOS\n",
+-		"":         "",
+-		"\n":       "\n",
+-		"\n\r":     "\n\n",
+-		"\r":       "\n",
+-		"\r\n":     "\n",
+-		"\r\n\n":   "\n\n",
+-		"\r\n\r":   "\n\n",
+-		"\r\n\r\n": "\n\n",
+-		"\r\r":     "\n\n",
+-		"\r\r\n":   "\n\n",
+-		"\r\r\n\n": "\n\n\n",
+-		"\r\r\r\n": "\n\n\n",
+-		"\r \n":    "\n \n",
+-		"xyz":      "xyz",
+-	}
+-	for in, want := range testCases {
+-		if got := string(convertNewlines([]byte(in))); got != want {
+-			t.Errorf("input %q: got %q, want %q", in, got, want)
+-		}
+-	}
+-}
+-
+-const (
+-	rawLevel = iota
+-	lowLevel
+-	highLevel
+-)
+-
+-func benchmarkTokenizer(b *testing.B, level int) {
+-	buf, err := ioutil.ReadFile("testdata/go1.html")
+-	if err != nil {
+-		b.Fatalf("could not read testdata/go1.html: %v", err)
+-	}
+-	b.SetBytes(int64(len(buf)))
+-	runtime.GC()
+-	b.ReportAllocs()
+-	b.ResetTimer()
+-	for i := 0; i < b.N; i++ {
+-		z := NewTokenizer(bytes.NewBuffer(buf))
+-		for {
+-			tt := z.Next()
+-			if tt == ErrorToken {
+-				if err := z.Err(); err != nil && err != io.EOF {
+-					b.Fatalf("tokenizer error: %v", err)
+-				}
+-				break
+-			}
+-			switch level {
+-			case rawLevel:
+-				// Calling z.Raw just returns the raw bytes of the token. It does
+-				// not unescape &lt; to <, or lower-case tag names and attribute keys.
+-				z.Raw()
+-			case lowLevel:
+-				// Caling z.Text, z.TagName and z.TagAttr returns []byte values
+-				// whose contents may change on the next call to z.Next.
+-				switch tt {
+-				case TextToken, CommentToken, DoctypeToken:
+-					z.Text()
+-				case StartTagToken, SelfClosingTagToken:
+-					_, more := z.TagName()
+-					for more {
+-						_, _, more = z.TagAttr()
+-					}
+-				case EndTagToken:
+-					z.TagName()
+-				}
+-			case highLevel:
+-				// Calling z.Token converts []byte values to strings whose validity
+-				// extend beyond the next call to z.Next.
+-				z.Token()
+-			}
+-		}
+-	}
+-}
+-
+-func BenchmarkRawLevelTokenizer(b *testing.B)  { benchmarkTokenizer(b, rawLevel) }
+-func BenchmarkLowLevelTokenizer(b *testing.B)  { benchmarkTokenizer(b, lowLevel) }
+-func BenchmarkHighLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, highLevel) }
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/inotify/inotify_linux.go gcc-4.8.1/libgo/go/exp/inotify/inotify_linux.go
+--- gcc-4.8.1.orig/libgo/go/exp/inotify/inotify_linux.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/inotify/inotify_linux.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,289 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-/*
+-Package inotify implements a wrapper for the Linux inotify system.
+-
+-Example:
+-    watcher, err := inotify.NewWatcher()
+-    if err != nil {
+-        log.Fatal(err)
+-    }
+-    err = watcher.Watch("/tmp")
+-    if err != nil {
+-        log.Fatal(err)
+-    }
+-    for {
+-        select {
+-        case ev := <-watcher.Event:
+-            log.Println("event:", ev)
+-        case err := <-watcher.Error:
+-            log.Println("error:", err)
+-        }
+-    }
+-
+-*/
+-package inotify
+-
+-import (
+-	"errors"
+-	"fmt"
+-	"os"
+-	"strings"
+-	"syscall"
+-	"unsafe"
+-)
+-
+-type Event struct {
+-	Mask   uint32 // Mask of events
+-	Cookie uint32 // Unique cookie associating related events (for rename(2))
+-	Name   string // File name (optional)
+-}
+-
+-type watch struct {
+-	wd    uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall)
+-	flags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags)
+-}
+-
+-type Watcher struct {
+-	fd       int               // File descriptor (as returned by the inotify_init() syscall)
+-	watches  map[string]*watch // Map of inotify watches (key: path)
+-	paths    map[int]string    // Map of watched paths (key: watch descriptor)
+-	Error    chan error        // Errors are sent on this channel
+-	Event    chan *Event       // Events are returned on this channel
+-	done     chan bool         // Channel for sending a "quit message" to the reader goroutine
+-	isClosed bool              // Set to true when Close() is first called
+-}
+-
+-// NewWatcher creates and returns a new inotify instance using inotify_init(2)
+-func NewWatcher() (*Watcher, error) {
+-	fd, errno := syscall.InotifyInit()
+-	if fd == -1 {
+-		return nil, os.NewSyscallError("inotify_init", errno)
+-	}
+-	w := &Watcher{
+-		fd:      fd,
+-		watches: make(map[string]*watch),
+-		paths:   make(map[int]string),
+-		Event:   make(chan *Event),
+-		Error:   make(chan error),
+-		done:    make(chan bool, 1),
+-	}
+-
+-	go w.readEvents()
+-	return w, nil
+-}
+-
+-// Close closes an inotify watcher instance
+-// It sends a message to the reader goroutine to quit and removes all watches
+-// associated with the inotify instance
+-func (w *Watcher) Close() error {
+-	if w.isClosed {
+-		return nil
+-	}
+-	w.isClosed = true
+-
+-	// Send "quit" message to the reader goroutine
+-	w.done <- true
+-	for path := range w.watches {
+-		w.RemoveWatch(path)
+-	}
+-
+-	return nil
+-}
+-
+-// AddWatch adds path to the watched file set.
+-// The flags are interpreted as described in inotify_add_watch(2).
+-func (w *Watcher) AddWatch(path string, flags uint32) error {
+-	if w.isClosed {
+-		return errors.New("inotify instance already closed")
+-	}
+-
+-	watchEntry, found := w.watches[path]
+-	if found {
+-		watchEntry.flags |= flags
+-		flags |= syscall.IN_MASK_ADD
+-	}
+-	wd, err := syscall.InotifyAddWatch(w.fd, path, flags)
+-	if err != nil {
+-		return &os.PathError{
+-			Op:   "inotify_add_watch",
+-			Path: path,
+-			Err:  err,
+-		}
+-	}
+-
+-	if !found {
+-		w.watches[path] = &watch{wd: uint32(wd), flags: flags}
+-		w.paths[wd] = path
+-	}
+-	return nil
+-}
+-
+-// Watch adds path to the watched file set, watching all events.
+-func (w *Watcher) Watch(path string) error {
+-	return w.AddWatch(path, IN_ALL_EVENTS)
+-}
+-
+-// RemoveWatch removes path from the watched file set.
+-func (w *Watcher) RemoveWatch(path string) error {
+-	watch, ok := w.watches[path]
+-	if !ok {
+-		return errors.New(fmt.Sprintf("can't remove non-existent inotify watch for: %s", path))
+-	}
+-	success, errno := syscall.InotifyRmWatch(w.fd, watch.wd)
+-	if success == -1 {
+-		return os.NewSyscallError("inotify_rm_watch", errno)
+-	}
+-	delete(w.watches, path)
+-	return nil
+-}
+-
+-// readEvents reads from the inotify file descriptor, converts the
+-// received events into Event objects and sends them via the Event channel
+-func (w *Watcher) readEvents() {
+-	var buf [syscall.SizeofInotifyEvent * 4096]byte
+-
+-	for {
+-		n, err := syscall.Read(w.fd, buf[0:])
+-		// See if there is a message on the "done" channel
+-		var done bool
+-		select {
+-		case done = <-w.done:
+-		default:
+-		}
+-
+-		// If EOF or a "done" message is received
+-		if n == 0 || done {
+-			err := syscall.Close(w.fd)
+-			if err != nil {
+-				w.Error <- os.NewSyscallError("close", err)
+-			}
+-			close(w.Event)
+-			close(w.Error)
+-			return
+-		}
+-		if n < 0 {
+-			w.Error <- os.NewSyscallError("read", err)
+-			continue
+-		}
+-		if n < syscall.SizeofInotifyEvent {
+-			w.Error <- errors.New("inotify: short read in readEvents()")
+-			continue
+-		}
+-
+-		var offset uint32 = 0
+-		// We don't know how many events we just read into the buffer
+-		// While the offset points to at least one whole event...
+-		for offset <= uint32(n-syscall.SizeofInotifyEvent) {
+-			// Point "raw" to the event in the buffer
+-			raw := (*syscall.InotifyEvent)(unsafe.Pointer(&buf[offset]))
+-			event := new(Event)
+-			event.Mask = uint32(raw.Mask)
+-			event.Cookie = uint32(raw.Cookie)
+-			nameLen := uint32(raw.Len)
+-			// If the event happened to the watched directory or the watched file, the kernel
+-			// doesn't append the filename to the event, but we would like to always fill the
+-			// the "Name" field with a valid filename. We retrieve the path of the watch from
+-			// the "paths" map.
+-			event.Name = w.paths[int(raw.Wd)]
+-			if nameLen > 0 {
+-				// Point "bytes" at the first byte of the filename
+-				bytes := (*[syscall.PathMax]byte)(unsafe.Pointer(&buf[offset+syscall.SizeofInotifyEvent]))
+-				// The filename is padded with NUL bytes. TrimRight() gets rid of those.
+-				event.Name += "/" + strings.TrimRight(string(bytes[0:nameLen]), "\000")
+-			}
+-			// Send the event on the events channel
+-			w.Event <- event
+-
+-			// Move to the next event in the buffer
+-			offset += syscall.SizeofInotifyEvent + nameLen
+-		}
+-	}
+-}
+-
+-// String formats the event e in the form
+-// "filename: 0xEventMask = IN_ACCESS|IN_ATTRIB_|..."
+-func (e *Event) String() string {
+-	var events string = ""
+-
+-	m := e.Mask
+-	for _, b := range eventBits {
+-		if m&b.Value != 0 {
+-			m &^= b.Value
+-			events += "|" + b.Name
+-		}
+-	}
+-
+-	if m != 0 {
+-		events += fmt.Sprintf("|%#x", m)
+-	}
+-	if len(events) > 0 {
+-		events = " == " + events[1:]
+-	}
+-
+-	return fmt.Sprintf("%q: %#x%s", e.Name, e.Mask, events)
+-}
+-
+-const (
+-	// Options for inotify_init() are not exported
+-	// IN_CLOEXEC    uint32 = syscall.IN_CLOEXEC
+-	// IN_NONBLOCK   uint32 = syscall.IN_NONBLOCK
+-
+-	// Options for AddWatch
+-	IN_DONT_FOLLOW uint32 = syscall.IN_DONT_FOLLOW
+-	IN_ONESHOT     uint32 = syscall.IN_ONESHOT
+-	IN_ONLYDIR     uint32 = syscall.IN_ONLYDIR
+-
+-	// The "IN_MASK_ADD" option is not exported, as AddWatch
+-	// adds it automatically, if there is already a watch for the given path
+-	// IN_MASK_ADD      uint32 = syscall.IN_MASK_ADD
+-
+-	// Events
+-	IN_ACCESS        uint32 = syscall.IN_ACCESS
+-	IN_ALL_EVENTS    uint32 = syscall.IN_ALL_EVENTS
+-	IN_ATTRIB        uint32 = syscall.IN_ATTRIB
+-	IN_CLOSE         uint32 = syscall.IN_CLOSE
+-	IN_CLOSE_NOWRITE uint32 = syscall.IN_CLOSE_NOWRITE
+-	IN_CLOSE_WRITE   uint32 = syscall.IN_CLOSE_WRITE
+-	IN_CREATE        uint32 = syscall.IN_CREATE
+-	IN_DELETE        uint32 = syscall.IN_DELETE
+-	IN_DELETE_SELF   uint32 = syscall.IN_DELETE_SELF
+-	IN_MODIFY        uint32 = syscall.IN_MODIFY
+-	IN_MOVE          uint32 = syscall.IN_MOVE
+-	IN_MOVED_FROM    uint32 = syscall.IN_MOVED_FROM
+-	IN_MOVED_TO      uint32 = syscall.IN_MOVED_TO
+-	IN_MOVE_SELF     uint32 = syscall.IN_MOVE_SELF
+-	IN_OPEN          uint32 = syscall.IN_OPEN
+-
+-	// Special events
+-	IN_ISDIR      uint32 = syscall.IN_ISDIR
+-	IN_IGNORED    uint32 = syscall.IN_IGNORED
+-	IN_Q_OVERFLOW uint32 = syscall.IN_Q_OVERFLOW
+-	IN_UNMOUNT    uint32 = syscall.IN_UNMOUNT
+-)
+-
+-var eventBits = []struct {
+-	Value uint32
+-	Name  string
+-}{
+-	{IN_ACCESS, "IN_ACCESS"},
+-	{IN_ATTRIB, "IN_ATTRIB"},
+-	{IN_CLOSE, "IN_CLOSE"},
+-	{IN_CLOSE_NOWRITE, "IN_CLOSE_NOWRITE"},
+-	{IN_CLOSE_WRITE, "IN_CLOSE_WRITE"},
+-	{IN_CREATE, "IN_CREATE"},
+-	{IN_DELETE, "IN_DELETE"},
+-	{IN_DELETE_SELF, "IN_DELETE_SELF"},
+-	{IN_MODIFY, "IN_MODIFY"},
+-	{IN_MOVE, "IN_MOVE"},
+-	{IN_MOVED_FROM, "IN_MOVED_FROM"},
+-	{IN_MOVED_TO, "IN_MOVED_TO"},
+-	{IN_MOVE_SELF, "IN_MOVE_SELF"},
+-	{IN_OPEN, "IN_OPEN"},
+-	{IN_ISDIR, "IN_ISDIR"},
+-	{IN_IGNORED, "IN_IGNORED"},
+-	{IN_Q_OVERFLOW, "IN_Q_OVERFLOW"},
+-	{IN_UNMOUNT, "IN_UNMOUNT"},
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/inotify/inotify_linux_test.go gcc-4.8.1/libgo/go/exp/inotify/inotify_linux_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/inotify/inotify_linux_test.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/inotify/inotify_linux_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,106 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build linux
+-
+-package inotify
+-
+-import (
+-	"io/ioutil"
+-	"os"
+-	"testing"
+-	"time"
+-)
+-
+-func TestInotifyEvents(t *testing.T) {
+-	// Create an inotify watcher instance and initialize it
+-	watcher, err := NewWatcher()
+-	if err != nil {
+-		t.Fatalf("NewWatcher failed: %s", err)
+-	}
+-
+-	dir, err := ioutil.TempDir("", "inotify")
+-	if err != nil {
+-		t.Fatalf("TempDir failed: %s", err)
+-	}
+-	defer os.RemoveAll(dir)
+-
+-	// Add a watch for "_test"
+-	err = watcher.Watch(dir)
+-	if err != nil {
+-		t.Fatalf("Watch failed: %s", err)
+-	}
+-
+-	// Receive errors on the error channel on a separate goroutine
+-	go func() {
+-		for err := range watcher.Error {
+-			t.Fatalf("error received: %s", err)
+-		}
+-	}()
+-
+-	testFile := dir + "/TestInotifyEvents.testfile"
+-
+-	// Receive events on the event channel on a separate goroutine
+-	eventstream := watcher.Event
+-	var eventsReceived = 0
+-	done := make(chan bool)
+-	go func() {
+-		for event := range eventstream {
+-			// Only count relevant events
+-			if event.Name == testFile {
+-				eventsReceived++
+-				t.Logf("event received: %s", event)
+-			} else {
+-				t.Logf("unexpected event received: %s", event)
+-			}
+-		}
+-		done <- true
+-	}()
+-
+-	// Create a file
+-	// This should add at least one event to the inotify event queue
+-	_, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
+-	if err != nil {
+-		t.Fatalf("creating test file: %s", err)
+-	}
+-
+-	// We expect this event to be received almost immediately, but let's wait 1 s to be sure
+-	time.Sleep(1 * time.Second)
+-	if eventsReceived == 0 {
+-		t.Fatal("inotify event hasn't been received after 1 second")
+-	}
+-
+-	// Try closing the inotify instance
+-	t.Log("calling Close()")
+-	watcher.Close()
+-	t.Log("waiting for the event channel to become closed...")
+-	select {
+-	case <-done:
+-		t.Log("event channel closed")
+-	case <-time.After(1 * time.Second):
+-		t.Fatal("event stream was not closed after 1 second")
+-	}
+-}
+-
+-func TestInotifyClose(t *testing.T) {
+-	watcher, _ := NewWatcher()
+-	watcher.Close()
+-
+-	done := make(chan bool)
+-	go func() {
+-		watcher.Close()
+-		done <- true
+-	}()
+-
+-	select {
+-	case <-done:
+-	case <-time.After(50 * time.Millisecond):
+-		t.Fatal("double Close() test failed: second Close() call didn't return")
+-	}
+-
+-	err := watcher.Watch(os.TempDir())
+-	if err == nil {
+-		t.Fatal("expected error on Watch() after Close(), got nil")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/builder.go gcc-4.8.1/libgo/go/exp/locale/collate/build/builder.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/builder.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/builder.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,688 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"exp/locale/collate"
+-	"exp/norm"
+-	"fmt"
+-	"io"
+-	"log"
+-	"sort"
+-	"strings"
+-	"unicode/utf8"
+-)
+-
+-// TODO: optimizations:
+-// - expandElem is currently 20K. By putting unique colElems in a separate
+-//   table and having a byte array of indexes into this table, we can reduce
+-//   the total size to about 7K. By also factoring out the length bytes, we
+-//   can reduce this to about 6K.
+-// - trie valueBlocks are currently 100K. There are a lot of sparse blocks
+-//   and many consecutive values with the same stride. This can be further
+-//   compacted.
+-// - Compress secondary weights into 8 bits.
+-// - Some LDML specs specify a context element. Currently we simply concatenate
+-//   those.  Context can be implemented using the contraction trie. If Builder
+-//   could analyze and detect when using a context makes sense, there is no
+-//   need to expose this construct in the API.
+-
+-// A Builder builds a root collation table.  The user must specify the
+-// collation elements for each entry.  A common use will be to base the weights
+-// on those specified in the allkeys* file as provided by the UCA or CLDR.
+-type Builder struct {
+-	index  *trieBuilder
+-	root   ordering
+-	locale []*Tailoring
+-	t      *table
+-	err    error
+-	built  bool
+-
+-	minNonVar int // lowest primary recorded for a variable
+-	varTop    int // highest primary recorded for a non-variable
+-
+-	// indexes used for reusing expansions and contractions
+-	expIndex map[string]int      // positions of expansions keyed by their string representation
+-	ctHandle map[string]ctHandle // contraction handles keyed by a concatenation of the suffixes
+-	ctElem   map[string]int      // contraction elements keyed by their string representation
+-}
+-
+-// A Tailoring builds a collation table based on another collation table.
+-// The table is defined by specifying tailorings to the underlying table.
+-// See http://unicode.org/reports/tr35/ for an overview of tailoring
+-// collation tables.  The CLDR contains pre-defined tailorings for a variety
+-// of languages (See http://www.unicode.org/Public/cldr/2.0.1/core.zip.)
+-type Tailoring struct {
+-	id      string
+-	builder *Builder
+-	index   *ordering
+-
+-	anchor *entry
+-	before bool
+-}
+-
+-// NewBuilder returns a new Builder.
+-func NewBuilder() *Builder {
+-	return &Builder{
+-		index:    newTrieBuilder(),
+-		root:     makeRootOrdering(),
+-		expIndex: make(map[string]int),
+-		ctHandle: make(map[string]ctHandle),
+-		ctElem:   make(map[string]int),
+-	}
+-}
+-
+-// Tailoring returns a Tailoring for the given locale.  One should
+-// have completed all calls to Add before calling Tailoring.
+-func (b *Builder) Tailoring(locale string) *Tailoring {
+-	t := &Tailoring{
+-		id:      locale,
+-		builder: b,
+-		index:   b.root.clone(),
+-	}
+-	t.index.id = t.id
+-	b.locale = append(b.locale, t)
+-	return t
+-}
+-
+-// Add adds an entry to the collation element table, mapping
+-// a slice of runes to a sequence of collation elements.
+-// A collation element is specified as list of weights: []int{primary, secondary, ...}.
+-// The entries are typically obtained from a collation element table
+-// as defined in http://www.unicode.org/reports/tr10/#Data_Table_Format.
+-// Note that the collation elements specified by colelems are only used
+-// as a guide.  The actual weights generated by Builder may differ.
+-// The argument variables is a list of indices into colelems that should contain
+-// a value for each colelem that is a variable. (See the reference above.)
+-func (b *Builder) Add(runes []rune, colelems [][]int, variables []int) error {
+-	str := string(runes)
+-	elems := make([]rawCE, len(colelems))
+-	for i, ce := range colelems {
+-		if len(ce) == 0 {
+-			break
+-		}
+-		elems[i] = makeRawCE(ce, 0)
+-		if len(ce) == 1 {
+-			elems[i].w[1] = defaultSecondary
+-		}
+-		if len(ce) <= 2 {
+-			elems[i].w[2] = defaultTertiary
+-		}
+-		if len(ce) <= 3 {
+-			elems[i].w[3] = ce[0]
+-		}
+-	}
+-	for i, ce := range elems {
+-		p := ce.w[0]
+-		isvar := false
+-		for _, j := range variables {
+-			if i == j {
+-				isvar = true
+-			}
+-		}
+-		if isvar {
+-			if p >= b.minNonVar && b.minNonVar > 0 {
+-				return fmt.Errorf("primary value %X of variable is larger than the smallest non-variable %X", p, b.minNonVar)
+-			}
+-			if p > b.varTop {
+-				b.varTop = p
+-			}
+-		} else if p > 1 { // 1 is a special primary value reserved for FFFE
+-			if p <= b.varTop {
+-				return fmt.Errorf("primary value %X of non-variable is smaller than the highest variable %X", p, b.varTop)
+-			}
+-			if b.minNonVar == 0 || p < b.minNonVar {
+-				b.minNonVar = p
+-			}
+-		}
+-	}
+-	elems, err := convertLargeWeights(elems)
+-	if err != nil {
+-		return err
+-	}
+-	cccs := []uint8{}
+-	nfd := norm.NFD.String(str)
+-	for i := range nfd {
+-		cccs = append(cccs, norm.NFD.PropertiesString(nfd[i:]).CCC())
+-	}
+-	if len(cccs) < len(elems) {
+-		if len(cccs) > 2 {
+-			return fmt.Errorf("number of decomposed characters should be greater or equal to the number of collation elements for len(colelems) > 3 (%d < %d)", len(cccs), len(elems))
+-		}
+-		p := len(elems) - 1
+-		for ; p > 0 && elems[p].w[0] == 0; p-- {
+-			elems[p].ccc = cccs[len(cccs)-1]
+-		}
+-		for ; p >= 0; p-- {
+-			elems[p].ccc = cccs[0]
+-		}
+-	} else {
+-		for i := range elems {
+-			elems[i].ccc = cccs[i]
+-		}
+-	}
+-	// doNorm in collate.go assumes that the following conditions hold.
+-	if len(elems) > 1 && len(cccs) > 1 && cccs[0] != 0 && cccs[0] != cccs[len(cccs)-1] {
+-		return fmt.Errorf("incompatible CCC values for expansion %X (%d)", runes, cccs)
+-	}
+-	b.root.newEntry(str, elems)
+-	return nil
+-}
+-
+-func (t *Tailoring) setAnchor(anchor string) error {
+-	anchor = norm.NFC.String(anchor)
+-	a := t.index.find(anchor)
+-	if a == nil {
+-		a = t.index.newEntry(anchor, nil)
+-		a.implicit = true
+-		a.modified = true
+-		for _, r := range []rune(anchor) {
+-			e := t.index.find(string(r))
+-			e.lock = true
+-		}
+-	}
+-	t.anchor = a
+-	return nil
+-}
+-
+-// SetAnchor sets the point after which elements passed in subsequent calls to
+-// Insert will be inserted.  It is equivalent to the reset directive in an LDML
+-// specification.  See Insert for an example.
+-// SetAnchor supports the following logical reset positions:
+-// <first_tertiary_ignorable/>, <last_teriary_ignorable/>, <first_primary_ignorable/>,
+-// and <last_non_ignorable/>.
+-func (t *Tailoring) SetAnchor(anchor string) error {
+-	if err := t.setAnchor(anchor); err != nil {
+-		return err
+-	}
+-	t.before = false
+-	return nil
+-}
+-
+-// SetAnchorBefore is similar to SetAnchor, except that subsequent calls to
+-// Insert will insert entries before the anchor.
+-func (t *Tailoring) SetAnchorBefore(anchor string) error {
+-	if err := t.setAnchor(anchor); err != nil {
+-		return err
+-	}
+-	t.before = true
+-	return nil
+-}
+-
+-// Insert sets the ordering of str relative to the entry set by the previous
+-// call to SetAnchor or Insert.  The argument extend corresponds
+-// to the extend elements as defined in LDML.  A non-empty value for extend
+-// will cause the collation elements corresponding to extend to be appended
+-// to the collation elements generated for the entry added by Insert.
+-// This has the same net effect as sorting str after the string anchor+extend.
+-// See http://www.unicode.org/reports/tr10/#Tailoring_Example for details
+-// on parametric tailoring and http://unicode.org/reports/tr35/#Collation_Elements
+-// for full details on LDML.
+-//
+-// Examples: create a tailoring for Swedish, where "Ã€" is ordered after "z"
+-// at the primary sorting level:
+-//      t := b.Tailoring("se")
+-// 		t.SetAnchor("z")
+-// 		t.Insert(collate.Primary, "Ã€", "")
+-// Order "ÃŒ" after "ue" at the secondary sorting level:
+-//		t.SetAnchor("ue")
+-//		t.Insert(collate.Secondary, "ÃŒ","")
+-// or
+-//		t.SetAnchor("u")
+-//		t.Insert(collate.Secondary, "ÃŒ", "e")
+-// Order "q" afer "ab" at the secondary level and "Q" after "q"
+-// at the tertiary level:
+-// 		t.SetAnchor("ab")
+-// 		t.Insert(collate.Secondary, "q", "")
+-// 		t.Insert(collate.Tertiary, "Q", "")
+-// Order "b" before "a":
+-//      t.SetAnchorBefore("a")
+-//      t.Insert(collate.Primary, "b", "")
+-// Order "0" after the last primary ignorable:
+-//      t.SetAnchor("<last_primary_ignorable/>")
+-//      t.Insert(collate.Primary, "0", "")
+-func (t *Tailoring) Insert(level collate.Level, str, extend string) error {
+-	if t.anchor == nil {
+-		return fmt.Errorf("%s:Insert: no anchor point set for tailoring of %s", t.id, str)
+-	}
+-	str = norm.NFC.String(str)
+-	e := t.index.find(str)
+-	if e == nil {
+-		e = t.index.newEntry(str, nil)
+-	} else if e.logical != noAnchor {
+-		return fmt.Errorf("%s:Insert: cannot reinsert logical reset position %q", t.id, e.str)
+-	}
+-	if e.lock {
+-		return fmt.Errorf("%s:Insert: cannot reinsert element %q", t.id, e.str)
+-	}
+-	a := t.anchor
+-	// Find the first element after the anchor which differs at a level smaller or
+-	// equal to the given level.  Then insert at this position.
+-	// See http://unicode.org/reports/tr35/#Collation_Elements, Section 5.14.5 for details.
+-	e.before = t.before
+-	if t.before {
+-		t.before = false
+-		if a.prev == nil {
+-			a.insertBefore(e)
+-		} else {
+-			for a = a.prev; a.level > level; a = a.prev {
+-			}
+-			a.insertAfter(e)
+-		}
+-		e.level = level
+-	} else {
+-		for ; a.level > level; a = a.next {
+-		}
+-		e.level = a.level
+-		if a != e {
+-			a.insertAfter(e)
+-			a.level = level
+-		} else {
+-			// We don't set a to prev itself. This has the effect of the entry
+-			// getting new collation elements that are an increment of itself.
+-			// This is intentional.
+-			a.prev.level = level
+-		}
+-	}
+-	e.extend = norm.NFD.String(extend)
+-	e.exclude = false
+-	e.modified = true
+-	e.elems = nil
+-	t.anchor = e
+-	return nil
+-}
+-
+-func (o *ordering) getWeight(e *entry) []rawCE {
+-	if len(e.elems) == 0 && e.logical == noAnchor {
+-		if e.implicit {
+-			for _, r := range e.runes {
+-				e.elems = append(e.elems, o.getWeight(o.find(string(r)))...)
+-			}
+-		} else if e.before {
+-			count := [collate.Identity + 1]int{}
+-			a := e
+-			for ; a.elems == nil && !a.implicit; a = a.next {
+-				count[a.level]++
+-			}
+-			e.elems = []rawCE{makeRawCE(a.elems[0].w, a.elems[0].ccc)}
+-			for i := collate.Primary; i < collate.Quaternary; i++ {
+-				if count[i] != 0 {
+-					e.elems[0].w[i] -= count[i]
+-					break
+-				}
+-			}
+-			if e.prev != nil {
+-				o.verifyWeights(e.prev, e, e.prev.level)
+-			}
+-		} else {
+-			prev := e.prev
+-			e.elems = nextWeight(prev.level, o.getWeight(prev))
+-			o.verifyWeights(e, e.next, e.level)
+-		}
+-	}
+-	return e.elems
+-}
+-
+-func (o *ordering) addExtension(e *entry) {
+-	if ex := o.find(e.extend); ex != nil {
+-		e.elems = append(e.elems, ex.elems...)
+-	} else {
+-		for _, r := range []rune(e.extend) {
+-			e.elems = append(e.elems, o.find(string(r)).elems...)
+-		}
+-	}
+-	e.extend = ""
+-}
+-
+-func (o *ordering) verifyWeights(a, b *entry, level collate.Level) error {
+-	if level == collate.Identity || b == nil || b.elems == nil || a.elems == nil {
+-		return nil
+-	}
+-	for i := collate.Primary; i < level; i++ {
+-		if a.elems[0].w[i] < b.elems[0].w[i] {
+-			return nil
+-		}
+-	}
+-	if a.elems[0].w[level] >= b.elems[0].w[level] {
+-		err := fmt.Errorf("%s:overflow: collation elements of %q (%X) overflows those of %q (%X) at level %d (%X >= %X)", o.id, a.str, a.runes, b.str, b.runes, level, a.elems, b.elems)
+-		log.Println(err)
+-		// TODO: return the error instead, or better, fix the conflicting entry by making room.
+-	}
+-	return nil
+-}
+-
+-func (b *Builder) error(e error) {
+-	if e != nil {
+-		b.err = e
+-	}
+-}
+-
+-func (b *Builder) errorID(locale string, e error) {
+-	if e != nil {
+-		b.err = fmt.Errorf("%s:%v", locale, e)
+-	}
+-}
+-
+-// patchNorm ensures that NFC and NFD counterparts are consistent.
+-func (o *ordering) patchNorm() {
+-	// Insert the NFD counterparts, if necessary.
+-	for _, e := range o.ordered {
+-		nfd := norm.NFD.String(e.str)
+-		if nfd != e.str {
+-			if e0 := o.find(nfd); e0 != nil && !e0.modified {
+-				e0.elems = e.elems
+-			} else if e.modified && !equalCEArrays(o.genColElems(nfd), e.elems) {
+-				e := o.newEntry(nfd, e.elems)
+-				e.modified = true
+-			}
+-		}
+-	}
+-	// Update unchanged composed forms if one of their parts changed.
+-	for _, e := range o.ordered {
+-		nfd := norm.NFD.String(e.str)
+-		if e.modified || nfd == e.str {
+-			continue
+-		}
+-		if e0 := o.find(nfd); e0 != nil {
+-			e.elems = e0.elems
+-		} else {
+-			e.elems = o.genColElems(nfd)
+-			if norm.NFD.LastBoundary([]byte(nfd)) == 0 {
+-				r := []rune(nfd)
+-				head := string(r[0])
+-				tail := ""
+-				for i := 1; i < len(r); i++ {
+-					s := norm.NFC.String(head + string(r[i]))
+-					if e0 := o.find(s); e0 != nil && e0.modified {
+-						head = s
+-					} else {
+-						tail += string(r[i])
+-					}
+-				}
+-				e.elems = append(o.genColElems(head), o.genColElems(tail)...)
+-			}
+-		}
+-	}
+-	// Exclude entries for which the individual runes generate the same collation elements.
+-	for _, e := range o.ordered {
+-		if len(e.runes) > 1 && equalCEArrays(o.genColElems(e.str), e.elems) {
+-			e.exclude = true
+-		}
+-	}
+-}
+-
+-func (b *Builder) buildOrdering(o *ordering) {
+-	for _, e := range o.ordered {
+-		o.getWeight(e)
+-	}
+-	for _, e := range o.ordered {
+-		o.addExtension(e)
+-	}
+-	o.patchNorm()
+-	o.sort()
+-	simplify(o)
+-	b.processExpansions(o)   // requires simplify
+-	b.processContractions(o) // requires simplify
+-
+-	t := newNode()
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if !e.skip() {
+-			ce, err := e.encode()
+-			b.errorID(o.id, err)
+-			t.insert(e.runes[0], ce)
+-		}
+-	}
+-	o.handle = b.index.addTrie(t)
+-}
+-
+-func (b *Builder) build() (*table, error) {
+-	if b.built {
+-		return b.t, b.err
+-	}
+-	b.built = true
+-	b.t = &table{
+-		maxContractLen: utf8.UTFMax,
+-		variableTop:    uint32(b.varTop),
+-	}
+-
+-	b.buildOrdering(&b.root)
+-	b.t.root = b.root.handle
+-	for _, t := range b.locale {
+-		b.buildOrdering(t.index)
+-		if b.err != nil {
+-			break
+-		}
+-	}
+-	i, err := b.index.generate()
+-	b.t.index = *i
+-	b.error(err)
+-	return b.t, b.err
+-}
+-
+-// Build builds the root Collator.
+-func (b *Builder) Build() (*collate.Collator, error) {
+-	t, err := b.build()
+-	if err != nil {
+-		return nil, err
+-	}
+-	table := collate.Init(t)
+-	if table == nil {
+-		panic("generated table of incompatible type")
+-	}
+-	return collate.NewFromTable(table), nil
+-}
+-
+-// Build builds a Collator for Tailoring t.
+-func (t *Tailoring) Build() (*collate.Collator, error) {
+-	// TODO: implement.
+-	return nil, nil
+-}
+-
+-// Print prints the tables for b and all its Tailorings as a Go file
+-// that can be included in the Collate package.
+-func (b *Builder) Print(w io.Writer) (n int, err error) {
+-	p := func(nn int, e error) {
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-	}
+-	t, err := b.build()
+-	if err != nil {
+-		return 0, err
+-	}
+-	p(fmt.Fprintf(w, "var availableLocales = []string{"))
+-	for _, loc := range b.locale {
+-		p(fmt.Fprintf(w, "%q, ", loc.id))
+-	}
+-	p(fmt.Fprintln(w, "}\n"))
+-	p(fmt.Fprintln(w, "var locales = map[string]tableIndex{"))
+-	for _, loc := range b.locale {
+-		p(fmt.Fprintf(w, "\t%q: ", loc.id))
+-		p(t.fprintIndex(w, loc.index.handle))
+-		p(fmt.Fprintln(w, ","))
+-	}
+-	p(fmt.Fprint(w, "}\n\n"))
+-	n, _, err = t.fprint(w, "main")
+-	return
+-}
+-
+-// reproducibleFromNFKD checks whether the given expansion could be generated
+-// from an NFKD expansion.
+-func reproducibleFromNFKD(e *entry, exp, nfkd []rawCE) bool {
+-	// Length must be equal.
+-	if len(exp) != len(nfkd) {
+-		return false
+-	}
+-	for i, ce := range exp {
+-		// Primary and secondary values should be equal.
+-		if ce.w[0] != nfkd[i].w[0] || ce.w[1] != nfkd[i].w[1] {
+-			return false
+-		}
+-		// Tertiary values should be equal to maxTertiary for third element onwards.
+-		// TODO: there seem to be a lot of cases in CLDR (e.g. ã­ in zh.xml) that can
+-		// simply be dropped.  Try this out by dropping the following code.
+-		if i >= 2 && ce.w[2] != maxTertiary {
+-			return false
+-		}
+-		if _, err := makeCE(ce); err != nil {
+-			// Simply return false. The error will be caught elsewhere.
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-func simplify(o *ordering) {
+-	// Runes that are a starter of a contraction should not be removed.
+-	// (To date, there is only Kannada character 0CCA.)
+-	keep := make(map[rune]bool)
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if len(e.runes) > 1 {
+-			keep[e.runes[0]] = true
+-		}
+-	}
+-	// Tag entries for which the runes NFKD decompose to identical values.
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		s := e.str
+-		nfkd := norm.NFKD.String(s)
+-		nfd := norm.NFD.String(s)
+-		if e.decompose || len(e.runes) > 1 || len(e.elems) == 1 || keep[e.runes[0]] || nfkd == nfd {
+-			continue
+-		}
+-		if reproducibleFromNFKD(e, e.elems, o.genColElems(nfkd)) {
+-			e.decompose = true
+-		}
+-	}
+-}
+-
+-// appendExpansion converts the given collation sequence to
+-// collation elements and adds them to the expansion table.
+-// It returns an index to the expansion table.
+-func (b *Builder) appendExpansion(e *entry) int {
+-	t := b.t
+-	i := len(t.expandElem)
+-	ce := uint32(len(e.elems))
+-	t.expandElem = append(t.expandElem, ce)
+-	for _, w := range e.elems {
+-		ce, err := makeCE(w)
+-		if err != nil {
+-			b.error(err)
+-			return -1
+-		}
+-		t.expandElem = append(t.expandElem, ce)
+-	}
+-	return i
+-}
+-
+-// processExpansions extracts data necessary to generate
+-// the extraction tables.
+-func (b *Builder) processExpansions(o *ordering) {
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if !e.expansion() {
+-			continue
+-		}
+-		key := fmt.Sprintf("%v", e.elems)
+-		i, ok := b.expIndex[key]
+-		if !ok {
+-			i = b.appendExpansion(e)
+-			b.expIndex[key] = i
+-		}
+-		e.expansionIndex = i
+-	}
+-}
+-
+-func (b *Builder) processContractions(o *ordering) {
+-	// Collate contractions per starter rune.
+-	starters := []rune{}
+-	cm := make(map[rune][]*entry)
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if e.contraction() {
+-			if len(e.str) > b.t.maxContractLen {
+-				b.t.maxContractLen = len(e.str)
+-			}
+-			r := e.runes[0]
+-			if _, ok := cm[r]; !ok {
+-				starters = append(starters, r)
+-			}
+-			cm[r] = append(cm[r], e)
+-		}
+-	}
+-	// Add entries of single runes that are at a start of a contraction.
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if !e.contraction() {
+-			r := e.runes[0]
+-			if _, ok := cm[r]; ok {
+-				cm[r] = append(cm[r], e)
+-			}
+-		}
+-	}
+-	// Build the tries for the contractions.
+-	t := b.t
+-	for _, r := range starters {
+-		l := cm[r]
+-		// Compute suffix strings. There are 31 different contraction suffix
+-		// sets for 715 contractions and 82 contraction starter runes as of
+-		// version 6.0.0.
+-		sufx := []string{}
+-		hasSingle := false
+-		for _, e := range l {
+-			if len(e.runes) > 1 {
+-				sufx = append(sufx, string(e.runes[1:]))
+-			} else {
+-				hasSingle = true
+-			}
+-		}
+-		if !hasSingle {
+-			b.error(fmt.Errorf("no single entry for starter rune %U found", r))
+-			continue
+-		}
+-		// Unique the suffix set.
+-		sort.Strings(sufx)
+-		key := strings.Join(sufx, "\n")
+-		handle, ok := b.ctHandle[key]
+-		if !ok {
+-			var err error
+-			handle, err = t.contractTries.appendTrie(sufx)
+-			if err != nil {
+-				b.error(err)
+-			}
+-			b.ctHandle[key] = handle
+-		}
+-		// Bucket sort entries in index order.
+-		es := make([]*entry, len(l))
+-		for _, e := range l {
+-			var p, sn int
+-			if len(e.runes) > 1 {
+-				str := []byte(string(e.runes[1:]))
+-				p, sn = t.contractTries.lookup(handle, str)
+-				if sn != len(str) {
+-					log.Fatalf("%s: processContractions: unexpected length for '%X'; len=%d; want %d", o.id, e.runes, sn, len(str))
+-				}
+-			}
+-			if es[p] != nil {
+-				log.Fatalf("%s: multiple contractions for position %d for rune %U", o.id, p, e.runes[0])
+-			}
+-			es[p] = e
+-		}
+-		// Create collation elements for contractions.
+-		elems := []uint32{}
+-		for _, e := range es {
+-			ce, err := e.encodeBase()
+-			b.errorID(o.id, err)
+-			elems = append(elems, ce)
+-		}
+-		key = fmt.Sprintf("%v", elems)
+-		i, ok := b.ctElem[key]
+-		if !ok {
+-			i = len(t.contractElem)
+-			b.ctElem[key] = i
+-			t.contractElem = append(t.contractElem, elems...)
+-		}
+-		// Store info in entry for starter rune.
+-		es[0].contractionIndex = i
+-		es[0].contractionHandle = handle
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/builder_test.go gcc-4.8.1/libgo/go/exp/locale/collate/build/builder_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/builder_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/builder_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,290 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import "testing"
+-
+-// cjk returns an implicit collation element for a CJK rune.
+-func cjk(r rune) []rawCE {
+-	// A CJK character C is represented in the DUCET as
+-	//   [.AAAA.0020.0002.C][.BBBB.0000.0000.C]
+-	// Where AAAA is the most significant 15 bits plus a base value.
+-	// Any base value will work for the test, so we pick the common value of FB40.
+-	const base = 0xFB40
+-	return []rawCE{
+-		{w: []int{base + int(r>>15), defaultSecondary, defaultTertiary, int(r)}},
+-		{w: []int{int(r&0x7FFF) | 0x8000, 0, 0, int(r)}},
+-	}
+-}
+-
+-func pCE(p int) []rawCE {
+-	return mkCE([]int{p, defaultSecondary, defaultTertiary, 0}, 0)
+-}
+-
+-func pqCE(p, q int) []rawCE {
+-	return mkCE([]int{p, defaultSecondary, defaultTertiary, q}, 0)
+-}
+-
+-func ptCE(p, t int) []rawCE {
+-	return mkCE([]int{p, defaultSecondary, t, 0}, 0)
+-}
+-
+-func ptcCE(p, t int, ccc uint8) []rawCE {
+-	return mkCE([]int{p, defaultSecondary, t, 0}, ccc)
+-}
+-
+-func sCE(s int) []rawCE {
+-	return mkCE([]int{0, s, defaultTertiary, 0}, 0)
+-}
+-
+-func stCE(s, t int) []rawCE {
+-	return mkCE([]int{0, s, t, 0}, 0)
+-}
+-
+-func scCE(s int, ccc uint8) []rawCE {
+-	return mkCE([]int{0, s, defaultTertiary, 0}, ccc)
+-}
+-
+-func mkCE(w []int, ccc uint8) []rawCE {
+-	return []rawCE{rawCE{w, ccc}}
+-}
+-
+-// ducetElem is used to define test data that is used to generate a table.
+-type ducetElem struct {
+-	str string
+-	ces []rawCE
+-}
+-
+-func newBuilder(t *testing.T, ducet []ducetElem) *Builder {
+-	b := NewBuilder()
+-	for _, e := range ducet {
+-		ces := [][]int{}
+-		for _, ce := range e.ces {
+-			ces = append(ces, ce.w)
+-		}
+-		if err := b.Add([]rune(e.str), ces, nil); err != nil {
+-			t.Errorf(err.Error())
+-		}
+-	}
+-	b.t = &table{}
+-	b.root.sort()
+-	return b
+-}
+-
+-type convertTest struct {
+-	in, out []rawCE
+-	err     bool
+-}
+-
+-var convLargeTests = []convertTest{
+-	{pCE(0xFB39), pCE(0xFB39), false},
+-	{cjk(0x2F9B2), pqCE(0x3F9B2, 0x2F9B2), false},
+-	{pCE(0xFB40), pCE(0), true},
+-	{append(pCE(0xFB40), pCE(0)[0]), pCE(0), true},
+-	{pCE(0xFFFE), pCE(illegalOffset), false},
+-	{pCE(0xFFFF), pCE(illegalOffset + 1), false},
+-}
+-
+-func TestConvertLarge(t *testing.T) {
+-	for i, tt := range convLargeTests {
+-		e := new(entry)
+-		for _, ce := range tt.in {
+-			e.elems = append(e.elems, makeRawCE(ce.w, ce.ccc))
+-		}
+-		elems, err := convertLargeWeights(e.elems)
+-		if tt.err {
+-			if err == nil {
+-				t.Errorf("%d: expected error; none found", i)
+-			}
+-			continue
+-		} else if err != nil {
+-			t.Errorf("%d: unexpected error: %v", i, err)
+-		}
+-		if !equalCEArrays(elems, tt.out) {
+-			t.Errorf("%d: conversion was %x; want %x", i, elems, tt.out)
+-		}
+-	}
+-}
+-
+-// Collation element table for simplify tests.
+-var simplifyTest = []ducetElem{
+-	{"\u0300", sCE(30)}, // grave
+-	{"\u030C", sCE(40)}, // caron
+-	{"A", ptCE(100, 8)},
+-	{"D", ptCE(104, 8)},
+-	{"E", ptCE(105, 8)},
+-	{"I", ptCE(110, 8)},
+-	{"z", ptCE(130, 8)},
+-	{"\u05F2", append(ptCE(200, 4), ptCE(200, 4)[0])},
+-	{"\u05B7", sCE(80)},
+-	{"\u00C0", append(ptCE(100, 8), sCE(30)...)},                                // A with grave, can be removed
+-	{"\u00C8", append(ptCE(105, 8), sCE(30)...)},                                // E with grave
+-	{"\uFB1F", append(ptCE(200, 4), ptCE(200, 4)[0], sCE(80)[0])},               // eliminated by NFD
+-	{"\u00C8\u0302", ptCE(106, 8)},                                              // block previous from simplifying
+-	{"\u01C5", append(ptCE(104, 9), ptCE(130, 4)[0], stCE(40, maxTertiary)[0])}, // eliminated by NFKD
+-	// no removal: tertiary value of third element is not maxTertiary
+-	{"\u2162", append(ptCE(110, 9), ptCE(110, 4)[0], ptCE(110, 8)[0])},
+-}
+-
+-var genColTests = []ducetElem{
+-	{"\uFA70", pqCE(0x1FA70, 0xFA70)},
+-	{"A\u0300", append(ptCE(100, 8), sCE(30)...)},
+-	{"A\u0300\uFA70", append(ptCE(100, 8), sCE(30)[0], pqCE(0x1FA70, 0xFA70)[0])},
+-	{"A\u0300A\u0300", append(ptCE(100, 8), sCE(30)[0], ptCE(100, 8)[0], sCE(30)[0])},
+-}
+-
+-func TestGenColElems(t *testing.T) {
+-	b := newBuilder(t, simplifyTest[:5])
+-
+-	for i, tt := range genColTests {
+-		res := b.root.genColElems(tt.str)
+-		if !equalCEArrays(tt.ces, res) {
+-			t.Errorf("%d: result %X; want %X", i, res, tt.ces)
+-		}
+-	}
+-}
+-
+-type strArray []string
+-
+-func (sa strArray) contains(s string) bool {
+-	for _, e := range sa {
+-		if e == s {
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-var simplifyRemoved = strArray{"\u00C0", "\uFB1F"}
+-var simplifyMarked = strArray{"\u01C5"}
+-
+-func TestSimplify(t *testing.T) {
+-	b := newBuilder(t, simplifyTest)
+-	o := &b.root
+-	simplify(o)
+-
+-	for i, tt := range simplifyTest {
+-		if simplifyRemoved.contains(tt.str) {
+-			continue
+-		}
+-		e := o.find(tt.str)
+-		if e.str != tt.str || !equalCEArrays(e.elems, tt.ces) {
+-			t.Errorf("%d: found element %s -> %X; want %s -> %X", i, e.str, e.elems, tt.str, tt.ces)
+-			break
+-		}
+-	}
+-	var i, k int
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		gold := simplifyMarked.contains(e.str)
+-		if gold {
+-			k++
+-		}
+-		if gold != e.decompose {
+-			t.Errorf("%d: %s has decompose %v; want %v", i, e.str, e.decompose, gold)
+-		}
+-		i++
+-	}
+-	if k != len(simplifyMarked) {
+-		t.Errorf(" an entry that should be marked as decompose was deleted")
+-	}
+-}
+-
+-var expandTest = []ducetElem{
+-	{"\u0300", append(scCE(29, 230), scCE(30, 230)...)},
+-	{"\u00C0", append(ptCE(100, 8), scCE(30, 230)...)},
+-	{"\u00C8", append(ptCE(105, 8), scCE(30, 230)...)},
+-	{"\u00C9", append(ptCE(105, 8), scCE(30, 230)...)}, // identical expansion
+-	{"\u05F2", append(ptCE(200, 4), ptCE(200, 4)[0], ptCE(200, 4)[0])},
+-	{"\u01FF", append(ptCE(200, 4), ptcCE(201, 4, 0)[0], scCE(30, 230)[0])},
+-}
+-
+-func TestExpand(t *testing.T) {
+-	const (
+-		totalExpansions = 5
+-		totalElements   = 2 + 2 + 2 + 3 + 3 + totalExpansions
+-	)
+-	b := newBuilder(t, expandTest)
+-	o := &b.root
+-	b.processExpansions(o)
+-
+-	e := o.front()
+-	for _, tt := range expandTest {
+-		exp := b.t.expandElem[e.expansionIndex:]
+-		if int(exp[0]) != len(tt.ces) {
+-			t.Errorf("%U: len(expansion)==%d; want %d", []rune(tt.str)[0], exp[0], len(tt.ces))
+-		}
+-		exp = exp[1:]
+-		for j, w := range tt.ces {
+-			if ce, _ := makeCE(w); exp[j] != ce {
+-				t.Errorf("%U: element %d is %X; want %X", []rune(tt.str)[0], j, exp[j], ce)
+-			}
+-		}
+-		e, _ = e.nextIndexed()
+-	}
+-	// Verify uniquing.
+-	if len(b.t.expandElem) != totalElements {
+-		t.Errorf("len(expandElem)==%d; want %d", len(b.t.expandElem), totalElements)
+-	}
+-}
+-
+-var contractTest = []ducetElem{
+-	{"abc", pCE(102)},
+-	{"abd", pCE(103)},
+-	{"a", pCE(100)},
+-	{"ab", pCE(101)},
+-	{"ac", pCE(104)},
+-	{"bcd", pCE(202)},
+-	{"b", pCE(200)},
+-	{"bc", pCE(201)},
+-	{"bd", pCE(203)},
+-	// shares suffixes with a*
+-	{"Ab", pCE(301)},
+-	{"A", pCE(300)},
+-	{"Ac", pCE(304)},
+-	{"Abc", pCE(302)},
+-	{"Abd", pCE(303)},
+-	// starter to be ignored
+-	{"z", pCE(1000)},
+-}
+-
+-func TestContract(t *testing.T) {
+-	const (
+-		totalElements = 5 + 5 + 4
+-	)
+-	b := newBuilder(t, contractTest)
+-	o := &b.root
+-	b.processContractions(o)
+-
+-	indexMap := make(map[int]bool)
+-	handleMap := make(map[rune]*entry)
+-	for e := o.front(); e != nil; e, _ = e.nextIndexed() {
+-		if e.contractionHandle.n > 0 {
+-			handleMap[e.runes[0]] = e
+-			indexMap[e.contractionHandle.index] = true
+-		}
+-	}
+-	// Verify uniquing.
+-	if len(indexMap) != 2 {
+-		t.Errorf("number of tries is %d; want %d", len(indexMap), 2)
+-	}
+-	for _, tt := range contractTest {
+-		e, ok := handleMap[[]rune(tt.str)[0]]
+-		if !ok {
+-			continue
+-		}
+-		str := tt.str[1:]
+-		offset, n := b.t.contractTries.lookup(e.contractionHandle, []byte(str))
+-		if len(str) != n {
+-			t.Errorf("%s: bytes consumed==%d; want %d", tt.str, n, len(str))
+-		}
+-		ce := b.t.contractElem[offset+e.contractionIndex]
+-		if want, _ := makeCE(tt.ces[0]); want != ce {
+-			t.Errorf("%s: element %X; want %X", tt.str, ce, want)
+-		}
+-	}
+-	if len(b.t.contractElem) != totalElements {
+-		t.Errorf("len(expandElem)==%d; want %d", len(b.t.contractElem), totalElements)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/colelem.go gcc-4.8.1/libgo/go/exp/locale/collate/build/colelem.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/colelem.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/colelem.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,365 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"exp/locale/collate"
+-	"fmt"
+-	"unicode"
+-)
+-
+-const (
+-	defaultSecondary = 0x20
+-	defaultTertiary  = 0x2
+-	maxTertiary      = 0x1F
+-)
+-
+-type rawCE struct {
+-	w   []int
+-	ccc uint8
+-}
+-
+-func makeRawCE(w []int, ccc uint8) rawCE {
+-	ce := rawCE{w: make([]int, 4), ccc: ccc}
+-	copy(ce.w, w)
+-	return ce
+-}
+-
+-// A collation element is represented as an uint32.
+-// In the typical case, a rune maps to a single collation element. If a rune
+-// can be the start of a contraction or expands into multiple collation elements,
+-// then the collation element that is associated with a rune will have a special
+-// form to represent such m to n mappings.  Such special collation elements
+-// have a value >= 0x80000000.
+-
+-// For normal collation elements, we assume that a collation element either has
+-// a primary or non-default secondary value, not both.
+-// Collation elements with a primary value are of the form
+-// 01pppppp pppppppp ppppppp0 ssssssss
+-//   - p* is primary collation value
+-//   - s* is the secondary collation value
+-// 00pppppp pppppppp ppppppps sssttttt, where
+-//   - p* is primary collation value
+-//   - s* offset of secondary from default value.
+-//   - t* is the tertiary collation value
+-// 100ttttt cccccccc pppppppp pppppppp
+-//   - t* is the tertiar collation value
+-//   - c* is the cannonical combining class
+-//   - p* is the primary collation value
+-// Collation elements with a secondary value are of the form
+-// 1010cccc ccccssss ssssssss tttttttt, where
+-//   - c* is the canonical combining class
+-//   - s* is the secondary collation value
+-//   - t* is the tertiary collation value
+-const (
+-	maxPrimaryBits          = 21
+-	maxPrimaryCompactBits   = 16
+-	maxSecondaryBits        = 12
+-	maxSecondaryCompactBits = 8
+-	maxCCCBits              = 8
+-	maxSecondaryDiffBits    = 4
+-	maxTertiaryBits         = 8
+-	maxTertiaryCompactBits  = 5
+-
+-	isPrimary    = 0x40000000
+-	isPrimaryCCC = 0x80000000
+-	isSecondary  = 0xA0000000
+-)
+-
+-func makeCE(rce rawCE) (uint32, error) {
+-	weights := rce.w
+-	if w := weights[0]; w >= 1<<maxPrimaryBits || w < 0 {
+-		return 0, fmt.Errorf("makeCE: primary weight out of bounds: %x >= %x", w, 1<<maxPrimaryBits)
+-	}
+-	if w := weights[1]; w >= 1<<maxSecondaryBits || w < 0 {
+-		return 0, fmt.Errorf("makeCE: secondary weight out of bounds: %x >= %x", w, 1<<maxSecondaryBits)
+-	}
+-	if w := weights[2]; w >= 1<<maxTertiaryBits || w < 0 {
+-		return 0, fmt.Errorf("makeCE: tertiary weight out of bounds: %x >= %x", w, 1<<maxTertiaryBits)
+-	}
+-	ce := uint32(0)
+-	if weights[0] != 0 {
+-		if rce.ccc != 0 {
+-			if weights[0] >= 1<<maxPrimaryCompactBits {
+-				return 0, fmt.Errorf("makeCE: primary weight with non-zero CCC out of bounds: %x >= %x", weights[0], 1<<maxPrimaryCompactBits)
+-			}
+-			if weights[1] != defaultSecondary {
+-				return 0, fmt.Errorf("makeCE: cannot combine non-default secondary value (%x) with non-zero CCC (%x)", weights[1], rce.ccc)
+-			}
+-			ce = uint32(weights[2] << (maxPrimaryCompactBits + maxCCCBits))
+-			ce |= uint32(rce.ccc) << maxPrimaryCompactBits
+-			ce |= uint32(weights[0])
+-			ce |= isPrimaryCCC
+-		} else if weights[2] == defaultTertiary {
+-			if weights[1] >= 1<<maxSecondaryCompactBits {
+-				return 0, fmt.Errorf("makeCE: secondary weight with non-zero primary out of bounds: %x >= %x", weights[1], 1<<maxSecondaryCompactBits)
+-			}
+-			ce = uint32(weights[0]<<(maxSecondaryCompactBits+1) + weights[1])
+-			ce |= isPrimary
+-		} else {
+-			d := weights[1] - defaultSecondary + maxSecondaryDiffBits
+-			if d >= 1<<maxSecondaryDiffBits || d < 0 {
+-				return 0, fmt.Errorf("makeCE: secondary weight diff out of bounds: %x < 0 || %x > %x", d, d, 1<<maxSecondaryDiffBits)
+-			}
+-			if weights[2] >= 1<<maxTertiaryCompactBits {
+-				return 0, fmt.Errorf("makeCE: tertiary weight with non-zero primary out of bounds: %x > %x (%X)", weights[2], 1<<maxTertiaryCompactBits, weights)
+-			}
+-			ce = uint32(weights[0]<<maxSecondaryDiffBits + d)
+-			ce = ce<<maxTertiaryCompactBits + uint32(weights[2])
+-		}
+-	} else {
+-		ce = uint32(weights[1]<<maxTertiaryBits + weights[2])
+-		ce += uint32(rce.ccc) << (maxSecondaryBits + maxTertiaryBits)
+-		ce |= isSecondary
+-	}
+-	return ce, nil
+-}
+-
+-// For contractions, collation elements are of the form
+-// 110bbbbb bbbbbbbb iiiiiiii iiiinnnn, where
+-//   - n* is the size of the first node in the contraction trie.
+-//   - i* is the index of the first node in the contraction trie.
+-//   - b* is the offset into the contraction collation element table.
+-// See contract.go for details on the contraction trie.
+-const (
+-	contractID            = 0xC0000000
+-	maxNBits              = 4
+-	maxTrieIndexBits      = 12
+-	maxContractOffsetBits = 13
+-)
+-
+-func makeContractIndex(h ctHandle, offset int) (uint32, error) {
+-	if h.n >= 1<<maxNBits {
+-		return 0, fmt.Errorf("size of contraction trie node too large: %d >= %d", h.n, 1<<maxNBits)
+-	}
+-	if h.index >= 1<<maxTrieIndexBits {
+-		return 0, fmt.Errorf("size of contraction trie offset too large: %d >= %d", h.index, 1<<maxTrieIndexBits)
+-	}
+-	if offset >= 1<<maxContractOffsetBits {
+-		return 0, fmt.Errorf("contraction offset out of bounds: %x >= %x", offset, 1<<maxContractOffsetBits)
+-	}
+-	ce := uint32(contractID)
+-	ce += uint32(offset << (maxNBits + maxTrieIndexBits))
+-	ce += uint32(h.index << maxNBits)
+-	ce += uint32(h.n)
+-	return ce, nil
+-}
+-
+-// For expansions, collation elements are of the form
+-// 11100000 00000000 bbbbbbbb bbbbbbbb,
+-// where b* is the index into the expansion sequence table.
+-const (
+-	expandID           = 0xE0000000
+-	maxExpandIndexBits = 16
+-)
+-
+-func makeExpandIndex(index int) (uint32, error) {
+-	if index >= 1<<maxExpandIndexBits {
+-		return 0, fmt.Errorf("expansion index out of bounds: %x >= %x", index, 1<<maxExpandIndexBits)
+-	}
+-	return expandID + uint32(index), nil
+-}
+-
+-// Each list of collation elements corresponding to an expansion starts with
+-// a header indicating the length of the sequence.
+-func makeExpansionHeader(n int) (uint32, error) {
+-	return uint32(n), nil
+-}
+-
+-// Some runes can be expanded using NFKD decomposition. Instead of storing the full
+-// sequence of collation elements, we decompose the rune and lookup the collation
+-// elements for each rune in the decomposition and modify the tertiary weights.
+-// The collation element, in this case, is of the form
+-// 11110000 00000000 wwwwwwww vvvvvvvv, where
+-//   - v* is the replacement tertiary weight for the first rune,
+-//   - w* is the replacement tertiary weight for the second rune,
+-// Tertiary weights of subsequent runes should be replaced with maxTertiary.
+-// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
+-const (
+-	decompID = 0xF0000000
+-)
+-
+-func makeDecompose(t1, t2 int) (uint32, error) {
+-	if t1 >= 256 || t1 < 0 {
+-		return 0, fmt.Errorf("first tertiary weight out of bounds: %d >= 256", t1)
+-	}
+-	if t2 >= 256 || t2 < 0 {
+-		return 0, fmt.Errorf("second tertiary weight out of bounds: %d >= 256", t2)
+-	}
+-	return uint32(t2<<8+t1) + decompID, nil
+-}
+-
+-const (
+-	// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
+-	minUnified       rune = 0x4E00
+-	maxUnified            = 0x9FFF
+-	minCompatibility      = 0xF900
+-	maxCompatibility      = 0xFAFF
+-	minRare               = 0x3400
+-	maxRare               = 0x4DBF
+-)
+-const (
+-	commonUnifiedOffset = 0x10000
+-	rareUnifiedOffset   = 0x20000 // largest rune in common is U+FAFF
+-	otherOffset         = 0x50000 // largest rune in rare is U+2FA1D
+-	illegalOffset       = otherOffset + int(unicode.MaxRune)
+-	maxPrimary          = illegalOffset + 1
+-)
+-
+-// implicitPrimary returns the primary weight for the a rune
+-// for which there is no entry for the rune in the collation table.
+-// We take a different approach from the one specified in
+-// http://unicode.org/reports/tr10/#Implicit_Weights,
+-// but preserve the resulting relative ordering of the runes.
+-func implicitPrimary(r rune) int {
+-	if unicode.Is(unicode.Ideographic, r) {
+-		if r >= minUnified && r <= maxUnified {
+-			// The most common case for CJK.
+-			return int(r) + commonUnifiedOffset
+-		}
+-		if r >= minCompatibility && r <= maxCompatibility {
+-			// This will typically not hit. The DUCET explicitly specifies mappings
+-			// for all characters that do not decompose.
+-			return int(r) + commonUnifiedOffset
+-		}
+-		return int(r) + rareUnifiedOffset
+-	}
+-	return int(r) + otherOffset
+-}
+-
+-// convertLargeWeights converts collation elements with large
+-// primaries (either double primaries or for illegal runes)
+-// to our own representation.
+-// A CJK character C is represented in the DUCET as
+-//   [.FBxx.0020.0002.C][.BBBB.0000.0000.C]
+-// We will rewrite these characters to a single CE.
+-// We assume the CJK values start at 0x8000.
+-// See http://unicode.org/reports/tr10/#Implicit_Weights
+-func convertLargeWeights(elems []rawCE) (res []rawCE, err error) {
+-	const (
+-		cjkPrimaryStart   = 0xFB40
+-		rarePrimaryStart  = 0xFB80
+-		otherPrimaryStart = 0xFBC0
+-		illegalPrimary    = 0xFFFE
+-		highBitsMask      = 0x3F
+-		lowBitsMask       = 0x7FFF
+-		lowBitsFlag       = 0x8000
+-		shiftBits         = 15
+-	)
+-	for i := 0; i < len(elems); i++ {
+-		ce := elems[i].w
+-		p := ce[0]
+-		if p < cjkPrimaryStart {
+-			continue
+-		}
+-		if p > 0xFFFF {
+-			return elems, fmt.Errorf("found primary weight %X; should be <= 0xFFFF", p)
+-		}
+-		if p >= illegalPrimary {
+-			ce[0] = illegalOffset + p - illegalPrimary
+-		} else {
+-			if i+1 >= len(elems) {
+-				return elems, fmt.Errorf("second part of double primary weight missing: %v", elems)
+-			}
+-			if elems[i+1].w[0]&lowBitsFlag == 0 {
+-				return elems, fmt.Errorf("malformed second part of double primary weight: %v", elems)
+-			}
+-			np := ((p & highBitsMask) << shiftBits) + elems[i+1].w[0]&lowBitsMask
+-			switch {
+-			case p < rarePrimaryStart:
+-				np += commonUnifiedOffset
+-			case p < otherPrimaryStart:
+-				np += rareUnifiedOffset
+-			default:
+-				p += otherOffset
+-			}
+-			ce[0] = np
+-			for j := i + 1; j+1 < len(elems); j++ {
+-				elems[j] = elems[j+1]
+-			}
+-			elems = elems[:len(elems)-1]
+-		}
+-	}
+-	return elems, nil
+-}
+-
+-// nextWeight computes the first possible collation weights following elems
+-// for the given level.
+-func nextWeight(level collate.Level, elems []rawCE) []rawCE {
+-	if level == collate.Identity {
+-		next := make([]rawCE, len(elems))
+-		copy(next, elems)
+-		return next
+-	}
+-	next := []rawCE{makeRawCE(elems[0].w, elems[0].ccc)}
+-	next[0].w[level]++
+-	if level < collate.Secondary {
+-		next[0].w[collate.Secondary] = defaultSecondary
+-	}
+-	if level < collate.Tertiary {
+-		next[0].w[collate.Tertiary] = defaultTertiary
+-	}
+-	// Filter entries that cannot influence ordering.
+-	for _, ce := range elems[1:] {
+-		skip := true
+-		for i := collate.Primary; i < level; i++ {
+-			skip = skip && ce.w[i] == 0
+-		}
+-		if !skip {
+-			next = append(next, ce)
+-		}
+-	}
+-	return next
+-}
+-
+-func nextVal(elems []rawCE, i int, level collate.Level) (index, value int) {
+-	for ; i < len(elems) && elems[i].w[level] == 0; i++ {
+-	}
+-	if i < len(elems) {
+-		return i, elems[i].w[level]
+-	}
+-	return i, 0
+-}
+-
+-// compareWeights returns -1 if a < b, 1 if a > b, or 0 otherwise.
+-// It also returns the collation level at which the difference is found.
+-func compareWeights(a, b []rawCE) (result int, level collate.Level) {
+-	for level := collate.Primary; level < collate.Identity; level++ {
+-		var va, vb int
+-		for ia, ib := 0, 0; ia < len(a) || ib < len(b); ia, ib = ia+1, ib+1 {
+-			ia, va = nextVal(a, ia, level)
+-			ib, vb = nextVal(b, ib, level)
+-			if va != vb {
+-				if va < vb {
+-					return -1, level
+-				} else {
+-					return 1, level
+-				}
+-			}
+-		}
+-	}
+-	return 0, collate.Identity
+-}
+-
+-func equalCE(a, b rawCE) bool {
+-	for i := 0; i < 3; i++ {
+-		if b.w[i] != a.w[i] {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-func equalCEArrays(a, b []rawCE) bool {
+-	if len(a) != len(b) {
+-		return false
+-	}
+-	for i := range a {
+-		if !equalCE(a[i], b[i]) {
+-			return false
+-		}
+-	}
+-	return true
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/colelem_test.go gcc-4.8.1/libgo/go/exp/locale/collate/build/colelem_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/colelem_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/colelem_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,214 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"exp/locale/collate"
+-	"testing"
+-)
+-
+-type ceTest struct {
+-	f   func(in []int) (uint32, error)
+-	arg []int
+-	val uint32
+-}
+-
+-func normalCE(in []int) (ce uint32, err error) {
+-	return makeCE(rawCE{w: in[:3], ccc: uint8(in[3])})
+-}
+-
+-func expandCE(in []int) (ce uint32, err error) {
+-	return makeExpandIndex(in[0])
+-}
+-
+-func contractCE(in []int) (ce uint32, err error) {
+-	return makeContractIndex(ctHandle{in[0], in[1]}, in[2])
+-}
+-
+-func decompCE(in []int) (ce uint32, err error) {
+-	return makeDecompose(in[0], in[1])
+-}
+-
+-var ceTests = []ceTest{
+-	{normalCE, []int{0, 0, 0, 0}, 0xA0000000},
+-	{normalCE, []int{0, 0x28, 3, 0}, 0xA0002803},
+-	{normalCE, []int{0, 0x28, 3, 0xFF}, 0xAFF02803},
+-	{normalCE, []int{100, defaultSecondary, 3, 0}, 0x0000C883},
+-	// non-ignorable primary with non-default secondary
+-	{normalCE, []int{100, 0x28, defaultTertiary, 0}, 0x4000C828},
+-	{normalCE, []int{100, defaultSecondary + 8, 3, 0}, 0x0000C983},
+-	{normalCE, []int{100, 0, 3, 0}, 0xFFFF}, // non-ignorable primary with non-supported secondary
+-	{normalCE, []int{100, 1, 3, 0}, 0xFFFF},
+-	{normalCE, []int{1 << maxPrimaryBits, defaultSecondary, 0, 0}, 0xFFFF},
+-	{normalCE, []int{0, 1 << maxSecondaryBits, 0, 0}, 0xFFFF},
+-	{normalCE, []int{100, defaultSecondary, 1 << maxTertiaryBits, 0}, 0xFFFF},
+-	{normalCE, []int{0x123, defaultSecondary, 8, 0xFF}, 0x88FF0123},
+-	{normalCE, []int{0x123, defaultSecondary + 1, 8, 0xFF}, 0xFFFF},
+-
+-	{contractCE, []int{0, 0, 0}, 0xC0000000},
+-	{contractCE, []int{1, 1, 1}, 0xC0010011},
+-	{contractCE, []int{1, (1 << maxNBits) - 1, 1}, 0xC001001F},
+-	{contractCE, []int{(1 << maxTrieIndexBits) - 1, 1, 1}, 0xC001FFF1},
+-	{contractCE, []int{1, 1, (1 << maxContractOffsetBits) - 1}, 0xDFFF0011},
+-	{contractCE, []int{1, (1 << maxNBits), 1}, 0xFFFF},
+-	{contractCE, []int{(1 << maxTrieIndexBits), 1, 1}, 0xFFFF},
+-	{contractCE, []int{1, (1 << maxContractOffsetBits), 1}, 0xFFFF},
+-
+-	{expandCE, []int{0}, 0xE0000000},
+-	{expandCE, []int{5}, 0xE0000005},
+-	{expandCE, []int{(1 << maxExpandIndexBits) - 1}, 0xE000FFFF},
+-	{expandCE, []int{1 << maxExpandIndexBits}, 0xFFFF},
+-
+-	{decompCE, []int{0, 0}, 0xF0000000},
+-	{decompCE, []int{1, 1}, 0xF0000101},
+-	{decompCE, []int{0x1F, 0x1F}, 0xF0001F1F},
+-	{decompCE, []int{256, 0x1F}, 0xFFFF},
+-	{decompCE, []int{0x1F, 256}, 0xFFFF},
+-}
+-
+-func TestColElem(t *testing.T) {
+-	for i, tt := range ceTests {
+-		in := make([]int, len(tt.arg))
+-		copy(in, tt.arg)
+-		ce, err := tt.f(in)
+-		if tt.val == 0xFFFF {
+-			if err == nil {
+-				t.Errorf("%d: expected error for args %x", i, tt.arg)
+-			}
+-			continue
+-		}
+-		if err != nil {
+-			t.Errorf("%d: unexpected error: %v", i, err.Error())
+-		}
+-		if ce != tt.val {
+-			t.Errorf("%d: colElem=%X; want %X", i, ce, tt.val)
+-		}
+-	}
+-}
+-
+-func mkRawCES(in [][]int) []rawCE {
+-	out := []rawCE{}
+-	for _, w := range in {
+-		out = append(out, rawCE{w: w})
+-	}
+-	return out
+-}
+-
+-type weightsTest struct {
+-	a, b   [][]int
+-	level  collate.Level
+-	result int
+-}
+-
+-var nextWeightTests = []weightsTest{
+-	{
+-		a:     [][]int{{100, 20, 5, 0}},
+-		b:     [][]int{{101, defaultSecondary, defaultTertiary, 0}},
+-		level: collate.Primary,
+-	},
+-	{
+-		a:     [][]int{{100, 20, 5, 0}},
+-		b:     [][]int{{100, 21, defaultTertiary, 0}},
+-		level: collate.Secondary,
+-	},
+-	{
+-		a:     [][]int{{100, 20, 5, 0}},
+-		b:     [][]int{{100, 20, 6, 0}},
+-		level: collate.Tertiary,
+-	},
+-	{
+-		a:     [][]int{{100, 20, 5, 0}},
+-		b:     [][]int{{100, 20, 5, 0}},
+-		level: collate.Identity,
+-	},
+-}
+-
+-var extra = [][]int{{200, 32, 8, 0}, {0, 32, 8, 0}, {0, 0, 8, 0}, {0, 0, 0, 0}}
+-
+-func TestNextWeight(t *testing.T) {
+-	for i, tt := range nextWeightTests {
+-		test := func(l collate.Level, tt weightsTest, a, gold [][]int) {
+-			res := nextWeight(tt.level, mkRawCES(a))
+-			if !equalCEArrays(mkRawCES(gold), res) {
+-				t.Errorf("%d:%d: expected weights %d; found %d", i, l, gold, res)
+-			}
+-		}
+-		test(-1, tt, tt.a, tt.b)
+-		for l := collate.Primary; l <= collate.Tertiary; l++ {
+-			if tt.level <= l {
+-				test(l, tt, append(tt.a, extra[l]), tt.b)
+-			} else {
+-				test(l, tt, append(tt.a, extra[l]), append(tt.b, extra[l]))
+-			}
+-		}
+-	}
+-}
+-
+-var compareTests = []weightsTest{
+-	{
+-		[][]int{{100, 20, 5, 0}},
+-		[][]int{{100, 20, 5, 0}},
+-		collate.Identity,
+-		0,
+-	},
+-	{
+-		[][]int{{100, 20, 5, 0}, extra[0]},
+-		[][]int{{100, 20, 5, 1}},
+-		collate.Primary,
+-		1,
+-	},
+-	{
+-		[][]int{{100, 20, 5, 0}},
+-		[][]int{{101, 20, 5, 0}},
+-		collate.Primary,
+-		-1,
+-	},
+-	{
+-		[][]int{{101, 20, 5, 0}},
+-		[][]int{{100, 20, 5, 0}},
+-		collate.Primary,
+-		1,
+-	},
+-	{
+-		[][]int{{100, 0, 0, 0}, {0, 20, 5, 0}},
+-		[][]int{{0, 20, 5, 0}, {100, 0, 0, 0}},
+-		collate.Identity,
+-		0,
+-	},
+-	{
+-		[][]int{{100, 20, 5, 0}},
+-		[][]int{{100, 21, 5, 0}},
+-		collate.Secondary,
+-		-1,
+-	},
+-	{
+-		[][]int{{100, 20, 5, 0}},
+-		[][]int{{100, 20, 2, 0}},
+-		collate.Tertiary,
+-		1,
+-	},
+-	{
+-		[][]int{{100, 20, 5, 1}},
+-		[][]int{{100, 20, 5, 2}},
+-		collate.Quaternary,
+-		-1,
+-	},
+-}
+-
+-func TestCompareWeights(t *testing.T) {
+-	for i, tt := range compareTests {
+-		test := func(tt weightsTest, a, b [][]int) {
+-			res, level := compareWeights(mkRawCES(a), mkRawCES(b))
+-			if res != tt.result {
+-				t.Errorf("%d: expected comparisson result %d; found %d", i, tt.result, res)
+-			}
+-			if level != tt.level {
+-				t.Errorf("%d: expected level %d; found %d", i, tt.level, level)
+-			}
+-		}
+-		test(tt, tt.a, tt.b)
+-		test(tt, append(tt.a, extra[0]), append(tt.b, extra[0]))
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/contract.go gcc-4.8.1/libgo/go/exp/locale/collate/build/contract.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/contract.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/contract.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,307 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"fmt"
+-	"io"
+-	"reflect"
+-	"sort"
+-	"strings"
+-)
+-
+-// This file contains code for detecting contractions and generating
+-// the necessary tables.
+-// Any Unicode Collation Algorithm (UCA) table entry that has more than
+-// one rune one the left-hand side is called a contraction.
+-// See http://www.unicode.org/reports/tr10/#Contractions for more details.
+-//
+-// We define the following terms:
+-//   initial:     a rune that appears as the first rune in a contraction.
+-//   suffix:      a sequence of runes succeeding the initial rune
+-//                in a given contraction.
+-//   non-initial: a rune that appears in a suffix.
+-//
+-// A rune may be both a initial and a non-initial and may be so in
+-// many contractions.  An initial may typically also appear by itself.
+-// In case of ambiguities, the UCA requires we match the longest
+-// contraction.
+-//
+-// Many contraction rules share the same set of possible suffixes.
+-// We store sets of suffixes in a trie that associates an index with
+-// each suffix in the set.  This index can be used to look up a
+-// collation element associated with the (starter rune, suffix) pair.
+-//
+-// The trie is defined on a UTF-8 byte sequence.
+-// The overall trie is represented as an array of ctEntries.  Each node of the trie
+-// is represented as a subsequence of ctEntries, where each entry corresponds to
+-// a possible match of a next character in the search string.  An entry
+-// also includes the length and offset to the next sequence of entries
+-// to check in case of a match.
+-
+-const (
+-	final   = 0
+-	noIndex = 0xFF
+-)
+-
+-// ctEntry associates to a matching byte an offset and/or next sequence of
+-// bytes to check. A ctEntry c is called final if a match means that the
+-// longest suffix has been found.  An entry c is final if c.n == 0.
+-// A single final entry can match a range of characters to an offset.
+-// A non-final entry always matches a single byte. Note that a non-final
+-// entry might still resemble a completed suffix.
+-// Examples:
+-// The suffix strings "ab" and "ac" can be represented as:
+-// []ctEntry{
+-//     {'a', 1, 1, noIndex},  // 'a' by itself does not match, so i is 0xFF.
+-//     {'b', 'c', 0, 1},   // "ab" -> 1, "ac" -> 2
+-// }
+-//
+-// The suffix strings "ab", "abc", "abd", and "abcd" can be represented as:
+-// []ctEntry{
+-//     {'a', 1, 1, noIndex}, // 'a' must be followed by 'b'.
+-//     {'b', 1, 2, 1},    // "ab" -> 1, may be followed by 'c' or 'd'.
+-//     {'d', 'd', final, 3},  // "abd" -> 3
+-//     {'c', 4, 1, 2},    // "abc" -> 2, may be followed by 'd'.
+-//     {'d', 'd', final, 4},  // "abcd" -> 4
+-// }
+-// See genStateTests in contract_test.go for more examples.
+-type ctEntry struct {
+-	l uint8 // non-final: byte value to match; final: lowest match in range.
+-	h uint8 // non-final: relative index to next block; final: highest match in range.
+-	n uint8 // non-final: length of next block; final: final
+-	i uint8 // result offset. Will be noIndex if more bytes are needed to complete.
+-}
+-
+-// contractTrieSet holds a set of contraction tries. The tries are stored
+-// consecutively in the entry field.
+-type contractTrieSet []struct{ l, h, n, i uint8 }
+-
+-// ctHandle is used to identify a trie in the trie set, consisting in an offset
+-// in the array and the size of the first node.
+-type ctHandle struct {
+-	index, n int
+-}
+-
+-// appendTrie adds a new trie for the given suffixes to the trie set and returns
+-// a handle to it.  The handle will be invalid on error.
+-func (ct *contractTrieSet) appendTrie(suffixes []string) (ctHandle, error) {
+-	es := make([]stridx, len(suffixes))
+-	for i, s := range suffixes {
+-		es[i].str = s
+-	}
+-	sort.Sort(offsetSort(es))
+-	for i := range es {
+-		es[i].index = i + 1
+-	}
+-	sort.Sort(genidxSort(es))
+-	i := len(*ct)
+-	n, err := ct.genStates(es)
+-	if err != nil {
+-		*ct = (*ct)[:i]
+-		return ctHandle{}, err
+-	}
+-	return ctHandle{i, n}, nil
+-}
+-
+-// genStates generates ctEntries for a given suffix set and returns
+-// the number of entries for the first node.
+-func (ct *contractTrieSet) genStates(sis []stridx) (int, error) {
+-	if len(sis) == 0 {
+-		return 0, fmt.Errorf("genStates: list of suffices must be non-empty")
+-	}
+-	start := len(*ct)
+-	// create entries for differing first bytes.
+-	for _, si := range sis {
+-		s := si.str
+-		if len(s) == 0 {
+-			continue
+-		}
+-		added := false
+-		c := s[0]
+-		if len(s) > 1 {
+-			for j := len(*ct) - 1; j >= start; j-- {
+-				if (*ct)[j].l == c {
+-					added = true
+-					break
+-				}
+-			}
+-			if !added {
+-				*ct = append(*ct, ctEntry{l: c, i: noIndex})
+-			}
+-		} else {
+-			for j := len(*ct) - 1; j >= start; j-- {
+-				// Update the offset for longer suffixes with the same byte.
+-				if (*ct)[j].l == c {
+-					(*ct)[j].i = uint8(si.index)
+-					added = true
+-				}
+-				// Extend range of final ctEntry, if possible.
+-				if (*ct)[j].h+1 == c {
+-					(*ct)[j].h = c
+-					added = true
+-				}
+-			}
+-			if !added {
+-				*ct = append(*ct, ctEntry{l: c, h: c, n: final, i: uint8(si.index)})
+-			}
+-		}
+-	}
+-	n := len(*ct) - start
+-	// Append nodes for the remainder of the suffixes for each ctEntry.
+-	sp := 0
+-	for i, end := start, len(*ct); i < end; i++ {
+-		fe := (*ct)[i]
+-		if fe.h == 0 { // uninitialized non-final
+-			ln := len(*ct) - start - n
+-			if ln > 0xFF {
+-				return 0, fmt.Errorf("genStates: relative block offset too large: %d > 255", ln)
+-			}
+-			fe.h = uint8(ln)
+-			// Find first non-final strings with same byte as current entry.
+-			for ; sis[sp].str[0] != fe.l; sp++ {
+-			}
+-			se := sp + 1
+-			for ; se < len(sis) && len(sis[se].str) > 1 && sis[se].str[0] == fe.l; se++ {
+-			}
+-			sl := sis[sp:se]
+-			sp = se
+-			for i, si := range sl {
+-				sl[i].str = si.str[1:]
+-			}
+-			nn, err := ct.genStates(sl)
+-			if err != nil {
+-				return 0, err
+-			}
+-			fe.n = uint8(nn)
+-			(*ct)[i] = fe
+-		}
+-	}
+-	sort.Sort(entrySort((*ct)[start : start+n]))
+-	return n, nil
+-}
+-
+-// There may be both a final and non-final entry for a byte if the byte
+-// is implied in a range of matches in the final entry.
+-// We need to ensure that the non-final entry comes first in that case.
+-type entrySort contractTrieSet
+-
+-func (fe entrySort) Len() int      { return len(fe) }
+-func (fe entrySort) Swap(i, j int) { fe[i], fe[j] = fe[j], fe[i] }
+-func (fe entrySort) Less(i, j int) bool {
+-	return fe[i].l > fe[j].l
+-}
+-
+-// stridx is used for sorting suffixes and their associated offsets.
+-type stridx struct {
+-	str   string
+-	index int
+-}
+-
+-// For computing the offsets, we first sort by size, and then by string.
+-// This ensures that strings that only differ in the last byte by 1
+-// are sorted consecutively in increasing order such that they can
+-// be packed as a range in a final ctEntry.
+-type offsetSort []stridx
+-
+-func (si offsetSort) Len() int      { return len(si) }
+-func (si offsetSort) Swap(i, j int) { si[i], si[j] = si[j], si[i] }
+-func (si offsetSort) Less(i, j int) bool {
+-	if len(si[i].str) != len(si[j].str) {
+-		return len(si[i].str) > len(si[j].str)
+-	}
+-	return si[i].str < si[j].str
+-}
+-
+-// For indexing, we want to ensure that strings are sorted in string order, where
+-// for strings with the same prefix, we put longer strings before shorter ones.
+-type genidxSort []stridx
+-
+-func (si genidxSort) Len() int      { return len(si) }
+-func (si genidxSort) Swap(i, j int) { si[i], si[j] = si[j], si[i] }
+-func (si genidxSort) Less(i, j int) bool {
+-	if strings.HasPrefix(si[j].str, si[i].str) {
+-		return false
+-	}
+-	if strings.HasPrefix(si[i].str, si[j].str) {
+-		return true
+-	}
+-	return si[i].str < si[j].str
+-}
+-
+-// lookup matches the longest suffix in str and returns the associated offset
+-// and the number of bytes consumed.
+-func (ct *contractTrieSet) lookup(h ctHandle, str []byte) (index, ns int) {
+-	states := (*ct)[h.index:]
+-	p := 0
+-	n := h.n
+-	for i := 0; i < n && p < len(str); {
+-		e := states[i]
+-		c := str[p]
+-		if c >= e.l {
+-			if e.l == c {
+-				p++
+-				if e.i != noIndex {
+-					index, ns = int(e.i), p
+-				}
+-				if e.n != final {
+-					// set to new state
+-					i, states, n = 0, states[int(e.h)+n:], int(e.n)
+-				} else {
+-					return
+-				}
+-				continue
+-			} else if e.n == final && c <= e.h {
+-				p++
+-				return int(c-e.l) + int(e.i), p
+-			}
+-		}
+-		i++
+-	}
+-	return
+-}
+-
+-// print writes the contractTrieSet t as compilable Go code to w. It returns
+-// the total number of bytes written and the size of the resulting data structure in bytes.
+-func (t *contractTrieSet) print(w io.Writer, name string) (n, size int, err error) {
+-	update3 := func(nn, sz int, e error) {
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-		size += sz
+-	}
+-	update2 := func(nn int, e error) { update3(nn, 0, e) }
+-
+-	update3(t.printArray(w, name))
+-	update2(fmt.Fprintf(w, "var %sContractTrieSet = ", name))
+-	update3(t.printStruct(w, name))
+-	update2(fmt.Fprintln(w))
+-	return
+-}
+-
+-func (ct contractTrieSet) printArray(w io.Writer, name string) (n, size int, err error) {
+-	p := func(f string, a ...interface{}) {
+-		nn, e := fmt.Fprintf(w, f, a...)
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-	}
+-	size = len(ct) * 4
+-	p("// %sCTEntries: %d entries, %d bytes\n", name, len(ct), size)
+-	p("var %sCTEntries = [%d]struct{l,h,n,i uint8}{\n", name, len(ct))
+-	for _, fe := range ct {
+-		p("\t{0x%X, 0x%X, %d, %d},\n", fe.l, fe.h, fe.n, fe.i)
+-	}
+-	p("}\n")
+-	return
+-}
+-
+-func (ct contractTrieSet) printStruct(w io.Writer, name string) (n, size int, err error) {
+-	n, err = fmt.Fprintf(w, "contractTrieSet( %sCTEntries[:] )", name)
+-	size = int(reflect.TypeOf(ct).Size())
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/contract_test.go gcc-4.8.1/libgo/go/exp/locale/collate/build/contract_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/contract_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/contract_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,264 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"bytes"
+-	"sort"
+-	"testing"
+-)
+-
+-var largetosmall = []stridx{
+-	{"a", 5},
+-	{"ab", 4},
+-	{"abc", 3},
+-	{"abcd", 2},
+-	{"abcde", 1},
+-	{"abcdef", 0},
+-}
+-
+-var offsetSortTests = [][]stridx{
+-	{
+-		{"bcde", 1},
+-		{"bc", 5},
+-		{"ab", 4},
+-		{"bcd", 3},
+-		{"abcd", 0},
+-		{"abc", 2},
+-	},
+-	largetosmall,
+-}
+-
+-func TestOffsetSort(t *testing.T) {
+-	for i, st := range offsetSortTests {
+-		sort.Sort(offsetSort(st))
+-		for j, si := range st {
+-			if j != si.index {
+-				t.Errorf("%d: failed: %v", i, st)
+-			}
+-		}
+-	}
+-	for i, tt := range genStateTests {
+-		// ensure input is well-formed
+-		sort.Sort(offsetSort(tt.in))
+-		for j, si := range tt.in {
+-			if si.index != j+1 {
+-				t.Errorf("%dth sort failed: %v", i, tt.in)
+-			}
+-		}
+-	}
+-}
+-
+-var genidxtest1 = []stridx{
+-	{"bcde", 3},
+-	{"bc", 6},
+-	{"ab", 2},
+-	{"bcd", 5},
+-	{"abcd", 0},
+-	{"abc", 1},
+-	{"bcdf", 4},
+-}
+-
+-var genidxSortTests = [][]stridx{
+-	genidxtest1,
+-	largetosmall,
+-}
+-
+-func TestGenIdxSort(t *testing.T) {
+-	for i, st := range genidxSortTests {
+-		sort.Sort(genidxSort(st))
+-		for j, si := range st {
+-			if j != si.index {
+-				t.Errorf("%dth sort failed %v", i, st)
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-var entrySortTests = []contractTrieSet{
+-	{
+-		{10, 0, 1, 3},
+-		{99, 0, 1, 0},
+-		{20, 50, 0, 2},
+-		{30, 0, 1, 1},
+-	},
+-}
+-
+-func TestEntrySort(t *testing.T) {
+-	for i, et := range entrySortTests {
+-		sort.Sort(entrySort(et))
+-		for j, fe := range et {
+-			if j != int(fe.i) {
+-				t.Errorf("%dth sort failed %v", i, et)
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-type GenStateTest struct {
+-	in            []stridx
+-	firstBlockLen int
+-	out           contractTrieSet
+-}
+-
+-var genStateTests = []GenStateTest{
+-	{[]stridx{
+-		{"abc", 1},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, noIndex},
+-			{'b', 0, 1, noIndex},
+-			{'c', 'c', final, 1},
+-		},
+-	},
+-	{[]stridx{
+-		{"abc", 1},
+-		{"abd", 2},
+-		{"abe", 3},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, noIndex},
+-			{'b', 0, 1, noIndex},
+-			{'c', 'e', final, 1},
+-		},
+-	},
+-	{[]stridx{
+-		{"abc", 1},
+-		{"ab", 2},
+-		{"a", 3},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, 3},
+-			{'b', 0, 1, 2},
+-			{'c', 'c', final, 1},
+-		},
+-	},
+-	{[]stridx{
+-		{"abc", 1},
+-		{"abd", 2},
+-		{"ab", 3},
+-		{"ac", 4},
+-		{"a", 5},
+-		{"b", 6},
+-	},
+-		2,
+-		contractTrieSet{
+-			{'b', 'b', final, 6},
+-			{'a', 0, 2, 5},
+-			{'c', 'c', final, 4},
+-			{'b', 0, 1, 3},
+-			{'c', 'd', final, 1},
+-		},
+-	},
+-	{[]stridx{
+-		{"bcde", 2},
+-		{"bc", 7},
+-		{"ab", 6},
+-		{"bcd", 5},
+-		{"abcd", 1},
+-		{"abc", 4},
+-		{"bcdf", 3},
+-	},
+-		2,
+-		contractTrieSet{
+-			{'b', 3, 1, noIndex},
+-			{'a', 0, 1, noIndex},
+-			{'b', 0, 1, 6},
+-			{'c', 0, 1, 4},
+-			{'d', 'd', final, 1},
+-			{'c', 0, 1, 7},
+-			{'d', 0, 1, 5},
+-			{'e', 'f', final, 2},
+-		},
+-	},
+-}
+-
+-func TestGenStates(t *testing.T) {
+-	for i, tt := range genStateTests {
+-		si := []stridx{}
+-		for _, e := range tt.in {
+-			si = append(si, e)
+-		}
+-		// ensure input is well-formed
+-		sort.Sort(genidxSort(si))
+-		ct := contractTrieSet{}
+-		n, _ := ct.genStates(si)
+-		if nn := tt.firstBlockLen; nn != n {
+-			t.Errorf("%d: block len %v; want %v", i, n, nn)
+-		}
+-		if lv, lw := len(ct), len(tt.out); lv != lw {
+-			t.Errorf("%d: len %v; want %v", i, lv, lw)
+-			continue
+-		}
+-		for j, fe := range tt.out {
+-			const msg = "%d:%d: value %s=%v; want %v"
+-			if fe.l != ct[j].l {
+-				t.Errorf(msg, i, j, "l", ct[j].l, fe.l)
+-			}
+-			if fe.h != ct[j].h {
+-				t.Errorf(msg, i, j, "h", ct[j].h, fe.h)
+-			}
+-			if fe.n != ct[j].n {
+-				t.Errorf(msg, i, j, "n", ct[j].n, fe.n)
+-			}
+-			if fe.i != ct[j].i {
+-				t.Errorf(msg, i, j, "i", ct[j].i, fe.i)
+-			}
+-		}
+-	}
+-}
+-
+-func TestLookupContraction(t *testing.T) {
+-	for i, tt := range genStateTests {
+-		input := []string{}
+-		for _, e := range tt.in {
+-			input = append(input, e.str)
+-		}
+-		cts := contractTrieSet{}
+-		h, _ := cts.appendTrie(input)
+-		for j, si := range tt.in {
+-			str := si.str
+-			for _, s := range []string{str, str + "X"} {
+-				msg := "%d:%d: %s(%s) %v; want %v"
+-				idx, sn := cts.lookup(h, []byte(s))
+-				if idx != si.index {
+-					t.Errorf(msg, i, j, "index", s, idx, si.index)
+-				}
+-				if sn != len(str) {
+-					t.Errorf(msg, i, j, "sn", s, sn, len(str))
+-				}
+-			}
+-		}
+-	}
+-}
+-
+-func TestPrintContractionTrieSet(t *testing.T) {
+-	testdata := contractTrieSet(genStateTests[4].out)
+-	buf := &bytes.Buffer{}
+-	testdata.print(buf, "test")
+-	if contractTrieOutput != buf.String() {
+-		t.Errorf("output differs; found\n%s", buf.String())
+-		println(string(buf.Bytes()))
+-	}
+-}
+-
+-const contractTrieOutput = `// testCTEntries: 8 entries, 32 bytes
+-var testCTEntries = [8]struct{l,h,n,i uint8}{
+-	{0x62, 0x3, 1, 255},
+-	{0x61, 0x0, 1, 255},
+-	{0x62, 0x0, 1, 6},
+-	{0x63, 0x0, 1, 4},
+-	{0x64, 0x64, 0, 1},
+-	{0x63, 0x0, 1, 7},
+-	{0x64, 0x0, 1, 5},
+-	{0x65, 0x66, 0, 2},
+-}
+-var testContractTrieSet = contractTrieSet( testCTEntries[:] )
+-`
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/order.go gcc-4.8.1/libgo/go/exp/locale/collate/build/order.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/order.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/order.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,392 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"exp/locale/collate"
+-	"exp/norm"
+-	"fmt"
+-	"log"
+-	"sort"
+-	"strings"
+-	"unicode"
+-)
+-
+-type logicalAnchor int
+-
+-const (
+-	firstAnchor logicalAnchor = -1
+-	noAnchor                  = 0
+-	lastAnchor                = 1
+-)
+-
+-// entry is used to keep track of a single entry in the collation element table
+-// during building. Examples of entries can be found in the Default Unicode
+-// Collation Element Table.
+-// See http://www.unicode.org/Public/UCA/6.0.0/allkeys.txt.
+-type entry struct {
+-	str    string // same as string(runes)
+-	runes  []rune
+-	elems  []rawCE // the collation elements
+-	extend string  // weights of extend to be appended to elems
+-	before bool    // weights relative to next instead of previous.
+-	lock   bool    // entry is used in extension and can no longer be moved.
+-
+-	// prev, next, and level are used to keep track of tailorings.
+-	prev, next *entry
+-	level      collate.Level // next differs at this level
+-	skipRemove bool          // do not unlink when removed
+-
+-	decompose bool // can use NFKD decomposition to generate elems
+-	exclude   bool // do not include in table
+-	implicit  bool // derived, is not included in the list
+-	modified  bool // entry was modified in tailoring
+-	logical   logicalAnchor
+-
+-	expansionIndex    int // used to store index into expansion table
+-	contractionHandle ctHandle
+-	contractionIndex  int // index into contraction elements
+-}
+-
+-func (e *entry) String() string {
+-	return fmt.Sprintf("%X (%q) -> %X (ch:%x; ci:%d, ei:%d)",
+-		e.runes, e.str, e.elems, e.contractionHandle, e.contractionIndex, e.expansionIndex)
+-}
+-
+-func (e *entry) skip() bool {
+-	return e.contraction()
+-}
+-
+-func (e *entry) expansion() bool {
+-	return !e.decompose && len(e.elems) > 1
+-}
+-
+-func (e *entry) contraction() bool {
+-	return len(e.runes) > 1
+-}
+-
+-func (e *entry) contractionStarter() bool {
+-	return e.contractionHandle.n != 0
+-}
+-
+-// nextIndexed gets the next entry that needs to be stored in the table.
+-// It returns the entry and the collation level at which the next entry differs
+-// from the current entry.
+-// Entries that can be explicitly derived and logical reset positions are
+-// examples of entries that will not be indexed.
+-func (e *entry) nextIndexed() (*entry, collate.Level) {
+-	level := e.level
+-	for e = e.next; e != nil && (e.exclude || len(e.elems) == 0); e = e.next {
+-		if e.level < level {
+-			level = e.level
+-		}
+-	}
+-	return e, level
+-}
+-
+-// remove unlinks entry e from the sorted chain and clears the collation
+-// elements. e may not be at the front or end of the list. This should always
+-// be the case, as the front and end of the list are always logical anchors,
+-// which may not be removed.
+-func (e *entry) remove() {
+-	if e.logical != noAnchor {
+-		log.Fatalf("may not remove anchor %q", e.str)
+-	}
+-	// TODO: need to set e.prev.level to e.level if e.level is smaller?
+-	e.elems = nil
+-	if !e.skipRemove {
+-		if e.prev != nil {
+-			e.prev.next = e.next
+-		}
+-		if e.next != nil {
+-			e.next.prev = e.prev
+-		}
+-	}
+-	e.skipRemove = false
+-}
+-
+-// insertAfter inserts n after e.
+-func (e *entry) insertAfter(n *entry) {
+-	if e == n {
+-		panic("e == anchor")
+-	}
+-	if e == nil {
+-		panic("unexpected nil anchor")
+-	}
+-	n.remove()
+-	n.decompose = false // redo decomposition test
+-
+-	n.next = e.next
+-	n.prev = e
+-	if e.next != nil {
+-		e.next.prev = n
+-	}
+-	e.next = n
+-}
+-
+-// insertBefore inserts n before e.
+-func (e *entry) insertBefore(n *entry) {
+-	if e == n {
+-		panic("e == anchor")
+-	}
+-	if e == nil {
+-		panic("unexpected nil anchor")
+-	}
+-	n.remove()
+-	n.decompose = false // redo decomposition test
+-
+-	n.prev = e.prev
+-	n.next = e
+-	if e.prev != nil {
+-		e.prev.next = n
+-	}
+-	e.prev = n
+-}
+-
+-func (e *entry) encodeBase() (ce uint32, err error) {
+-	switch {
+-	case e.expansion():
+-		ce, err = makeExpandIndex(e.expansionIndex)
+-	default:
+-		if e.decompose {
+-			log.Fatal("decompose should be handled elsewhere")
+-		}
+-		ce, err = makeCE(e.elems[0])
+-	}
+-	return
+-}
+-
+-func (e *entry) encode() (ce uint32, err error) {
+-	if e.skip() {
+-		log.Fatal("cannot build colElem for entry that should be skipped")
+-	}
+-	switch {
+-	case e.decompose:
+-		t1 := e.elems[0].w[2]
+-		t2 := 0
+-		if len(e.elems) > 1 {
+-			t2 = e.elems[1].w[2]
+-		}
+-		ce, err = makeDecompose(t1, t2)
+-	case e.contractionStarter():
+-		ce, err = makeContractIndex(e.contractionHandle, e.contractionIndex)
+-	default:
+-		if len(e.runes) > 1 {
+-			log.Fatal("colElem: contractions are handled in contraction trie")
+-		}
+-		ce, err = e.encodeBase()
+-	}
+-	return
+-}
+-
+-// entryLess returns true if a sorts before b and false otherwise.
+-func entryLess(a, b *entry) bool {
+-	if res, _ := compareWeights(a.elems, b.elems); res != 0 {
+-		return res == -1
+-	}
+-	if a.logical != noAnchor {
+-		return a.logical == firstAnchor
+-	}
+-	if b.logical != noAnchor {
+-		return b.logical == lastAnchor
+-	}
+-	return a.str < b.str
+-}
+-
+-type sortedEntries []*entry
+-
+-func (s sortedEntries) Len() int {
+-	return len(s)
+-}
+-
+-func (s sortedEntries) Swap(i, j int) {
+-	s[i], s[j] = s[j], s[i]
+-}
+-
+-func (s sortedEntries) Less(i, j int) bool {
+-	return entryLess(s[i], s[j])
+-}
+-
+-type ordering struct {
+-	id       string
+-	entryMap map[string]*entry
+-	ordered  []*entry
+-	handle   *trieHandle
+-}
+-
+-// insert inserts e into both entryMap and ordered.
+-// Note that insert simply appends e to ordered.  To reattain a sorted
+-// order, o.sort() should be called.
+-func (o *ordering) insert(e *entry) {
+-	if e.logical == noAnchor {
+-		o.entryMap[e.str] = e
+-	} else {
+-		// Use key format as used in UCA rules.
+-		o.entryMap[fmt.Sprintf("[%s]", e.str)] = e
+-		// Also add index entry for XML format.
+-		o.entryMap[fmt.Sprintf("<%s/>", strings.Replace(e.str, " ", "_", -1))] = e
+-	}
+-	o.ordered = append(o.ordered, e)
+-}
+-
+-// newEntry creates a new entry for the given info and inserts it into
+-// the index.
+-func (o *ordering) newEntry(s string, ces []rawCE) *entry {
+-	e := &entry{
+-		runes: []rune(s),
+-		elems: ces,
+-		str:   s,
+-	}
+-	o.insert(e)
+-	return e
+-}
+-
+-// find looks up and returns the entry for the given string.
+-// It returns nil if str is not in the index and if an implicit value
+-// cannot be derived, that is, if str represents more than one rune.
+-func (o *ordering) find(str string) *entry {
+-	e := o.entryMap[str]
+-	if e == nil {
+-		r := []rune(str)
+-		if len(r) == 1 {
+-			const (
+-				firstHangul = 0xAC00
+-				lastHangul  = 0xD7A3
+-			)
+-			if r[0] >= firstHangul && r[0] <= lastHangul {
+-				ce := []rawCE{}
+-				nfd := norm.NFD.String(str)
+-				for _, r := range nfd {
+-					ce = append(ce, o.find(string(r)).elems...)
+-				}
+-				e = o.newEntry(nfd, ce)
+-			} else {
+-				e = o.newEntry(string(r[0]), []rawCE{
+-					{w: []int{
+-						implicitPrimary(r[0]),
+-						defaultSecondary,
+-						defaultTertiary,
+-						int(r[0]),
+-					},
+-					},
+-				})
+-				e.modified = true
+-			}
+-			e.exclude = true // do not index implicits
+-		}
+-	}
+-	return e
+-}
+-
+-// makeRootOrdering returns a newly initialized ordering value and populates
+-// it with a set of logical reset points that can be used as anchors.
+-// The anchors first_tertiary_ignorable and __END__ will always sort at
+-// the beginning and end, respectively. This means that prev and next are non-nil
+-// for any indexed entry.
+-func makeRootOrdering() ordering {
+-	const max = unicode.MaxRune
+-	o := ordering{
+-		entryMap: make(map[string]*entry),
+-	}
+-	insert := func(typ logicalAnchor, s string, ce []int) {
+-		e := &entry{
+-			elems:   []rawCE{{w: ce}},
+-			str:     s,
+-			exclude: true,
+-			logical: typ,
+-		}
+-		o.insert(e)
+-	}
+-	insert(firstAnchor, "first tertiary ignorable", []int{0, 0, 0, 0})
+-	insert(lastAnchor, "last tertiary ignorable", []int{0, 0, 0, max})
+-	insert(lastAnchor, "last primary ignorable", []int{0, defaultSecondary, defaultTertiary, max})
+-	insert(lastAnchor, "last non ignorable", []int{maxPrimary, defaultSecondary, defaultTertiary, max})
+-	insert(lastAnchor, "__END__", []int{1 << maxPrimaryBits, defaultSecondary, defaultTertiary, max})
+-	return o
+-}
+-
+-// patchForInsert eleminates entries from the list with more than one collation element.
+-// The next and prev fields of the eliminated entries still point to appropriate
+-// values in the newly created list.
+-// It requires that sort has been called.
+-func (o *ordering) patchForInsert() {
+-	for i := 0; i < len(o.ordered)-1; {
+-		e := o.ordered[i]
+-		lev := e.level
+-		n := e.next
+-		for ; n != nil && len(n.elems) > 1; n = n.next {
+-			if n.level < lev {
+-				lev = n.level
+-			}
+-			n.skipRemove = true
+-		}
+-		for ; o.ordered[i] != n; i++ {
+-			o.ordered[i].level = lev
+-			o.ordered[i].next = n
+-			o.ordered[i+1].prev = e
+-		}
+-	}
+-}
+-
+-// clone copies all ordering of es into a new ordering value.
+-func (o *ordering) clone() *ordering {
+-	o.sort()
+-	oo := ordering{
+-		entryMap: make(map[string]*entry),
+-	}
+-	for _, e := range o.ordered {
+-		ne := &entry{
+-			runes:     e.runes,
+-			elems:     e.elems,
+-			str:       e.str,
+-			decompose: e.decompose,
+-			exclude:   e.exclude,
+-			logical:   e.logical,
+-		}
+-		oo.insert(ne)
+-	}
+-	oo.sort() // link all ordering.
+-	oo.patchForInsert()
+-	return &oo
+-}
+-
+-// front returns the first entry to be indexed.
+-// It assumes that sort() has been called.
+-func (o *ordering) front() *entry {
+-	e := o.ordered[0]
+-	if e.prev != nil {
+-		log.Panicf("unexpected first entry: %v", e)
+-	}
+-	// The first entry is always a logical position, which should not be indexed.
+-	e, _ = e.nextIndexed()
+-	return e
+-}
+-
+-// sort sorts all ordering based on their collation elements and initializes
+-// the prev, next, and level fields accordingly.
+-func (o *ordering) sort() {
+-	sort.Sort(sortedEntries(o.ordered))
+-	l := o.ordered
+-	for i := 1; i < len(l); i++ {
+-		k := i - 1
+-		l[k].next = l[i]
+-		_, l[k].level = compareWeights(l[k].elems, l[i].elems)
+-		l[i].prev = l[k]
+-	}
+-}
+-
+-// genColElems generates a collation element array from the runes in str. This
+-// assumes that all collation elements have already been added to the Builder.
+-func (o *ordering) genColElems(str string) []rawCE {
+-	elems := []rawCE{}
+-	for _, r := range []rune(str) {
+-		for _, ce := range o.find(string(r)).elems {
+-			if ce.w[0] != 0 || ce.w[1] != 0 || ce.w[2] != 0 {
+-				elems = append(elems, ce)
+-			}
+-		}
+-	}
+-	return elems
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/order_test.go gcc-4.8.1/libgo/go/exp/locale/collate/build/order_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/order_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/order_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,228 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"exp/locale/collate"
+-	"strconv"
+-	"testing"
+-)
+-
+-type entryTest struct {
+-	f   func(in []int) (uint32, error)
+-	arg []int
+-	val uint32
+-}
+-
+-// makeList returns a list of entries of length n+2, with n normal
+-// entries plus a leading and trailing anchor.
+-func makeList(n int) []*entry {
+-	es := make([]*entry, n+2)
+-	weights := []rawCE{{w: []int{100, 20, 5, 0}}}
+-	for i := range es {
+-		runes := []rune{rune(i)}
+-		es[i] = &entry{
+-			runes: runes,
+-			elems: weights,
+-		}
+-		weights = nextWeight(collate.Primary, weights)
+-	}
+-	for i := 1; i < len(es); i++ {
+-		es[i-1].next = es[i]
+-		es[i].prev = es[i-1]
+-		_, es[i-1].level = compareWeights(es[i-1].elems, es[i].elems)
+-	}
+-	es[0].exclude = true
+-	es[0].logical = firstAnchor
+-	es[len(es)-1].exclude = true
+-	es[len(es)-1].logical = lastAnchor
+-	return es
+-}
+-
+-func TestNextIndexed(t *testing.T) {
+-	const n = 5
+-	es := makeList(n)
+-	for i := int64(0); i < 1<<n; i++ {
+-		mask := strconv.FormatInt(i+(1<<n), 2)
+-		for i, c := range mask {
+-			es[i].exclude = c == '1'
+-		}
+-		e := es[0]
+-		for i, c := range mask {
+-			if c == '0' {
+-				e, _ = e.nextIndexed()
+-				if e != es[i] {
+-					t.Errorf("%d: expected entry %d; found %d", i, es[i].elems, e.elems)
+-				}
+-			}
+-		}
+-		if e, _ = e.nextIndexed(); e != nil {
+-			t.Errorf("%d: expected nil entry; found %d", i, e.elems)
+-		}
+-	}
+-}
+-
+-func TestRemove(t *testing.T) {
+-	const n = 5
+-	for i := int64(0); i < 1<<n; i++ {
+-		es := makeList(n)
+-		mask := strconv.FormatInt(i+(1<<n), 2)
+-		for i, c := range mask {
+-			if c == '0' {
+-				es[i].remove()
+-			}
+-		}
+-		e := es[0]
+-		for i, c := range mask {
+-			if c == '1' {
+-				if e != es[i] {
+-					t.Errorf("%d: expected entry %d; found %d", i, es[i].elems, e.elems)
+-				}
+-				e, _ = e.nextIndexed()
+-			}
+-		}
+-		if e != nil {
+-			t.Errorf("%d: expected nil entry; found %d", i, e.elems)
+-		}
+-	}
+-}
+-
+-// nextPerm generates the next permutation of the array.  The starting
+-// permutation is assumed to be a list of integers sorted in increasing order.
+-// It returns false if there are no more permuations left.
+-func nextPerm(a []int) bool {
+-	i := len(a) - 2
+-	for ; i >= 0; i-- {
+-		if a[i] < a[i+1] {
+-			break
+-		}
+-	}
+-	if i < 0 {
+-		return false
+-	}
+-	for j := len(a) - 1; j >= i; j-- {
+-		if a[j] > a[i] {
+-			a[i], a[j] = a[j], a[i]
+-			break
+-		}
+-	}
+-	for j := i + 1; j < (len(a)+i+1)/2; j++ {
+-		a[j], a[len(a)+i-j] = a[len(a)+i-j], a[j]
+-	}
+-	return true
+-}
+-
+-func TestInsertAfter(t *testing.T) {
+-	const n = 5
+-	orig := makeList(n)
+-	perm := make([]int, n)
+-	for i := range perm {
+-		perm[i] = i + 1
+-	}
+-	for ok := true; ok; ok = nextPerm(perm) {
+-		es := makeList(n)
+-		last := es[0]
+-		for _, i := range perm {
+-			last.insertAfter(es[i])
+-			last = es[i]
+-		}
+-		for _, e := range es {
+-			e.elems = es[0].elems
+-		}
+-		e := es[0]
+-		for _, i := range perm {
+-			e, _ = e.nextIndexed()
+-			if e.runes[0] != orig[i].runes[0] {
+-				t.Errorf("%d:%d: expected entry %X; found %X", perm, i, orig[i].runes, e.runes)
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-func TestInsertBefore(t *testing.T) {
+-	const n = 5
+-	orig := makeList(n)
+-	perm := make([]int, n)
+-	for i := range perm {
+-		perm[i] = i + 1
+-	}
+-	for ok := true; ok; ok = nextPerm(perm) {
+-		es := makeList(n)
+-		last := es[len(es)-1]
+-		for _, i := range perm {
+-			last.insertBefore(es[i])
+-			last = es[i]
+-		}
+-		for _, e := range es {
+-			e.elems = es[0].elems
+-		}
+-		e := es[0]
+-		for i := n - 1; i >= 0; i-- {
+-			e, _ = e.nextIndexed()
+-			if e.runes[0] != rune(perm[i]) {
+-				t.Errorf("%d:%d: expected entry %X; found %X", perm, i, orig[i].runes, e.runes)
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-type entryLessTest struct {
+-	a, b *entry
+-	res  bool
+-}
+-
+-var (
+-	w1 = []rawCE{{w: []int{100, 20, 5, 5}}}
+-	w2 = []rawCE{{w: []int{101, 20, 5, 5}}}
+-)
+-
+-var entryLessTests = []entryLessTest{
+-	{&entry{str: "a", elems: w1},
+-		&entry{str: "a", elems: w1},
+-		false,
+-	},
+-	{&entry{str: "a", elems: w1},
+-		&entry{str: "a", elems: w2},
+-		true,
+-	},
+-	{&entry{str: "a", elems: w1},
+-		&entry{str: "b", elems: w1},
+-		true,
+-	},
+-	{&entry{str: "a", elems: w2},
+-		&entry{str: "a", elems: w1},
+-		false,
+-	},
+-	{&entry{str: "c", elems: w1},
+-		&entry{str: "b", elems: w1},
+-		false,
+-	},
+-	{&entry{str: "a", elems: w1, logical: firstAnchor},
+-		&entry{str: "a", elems: w1},
+-		true,
+-	},
+-	{&entry{str: "a", elems: w1},
+-		&entry{str: "b", elems: w1, logical: firstAnchor},
+-		false,
+-	},
+-	{&entry{str: "b", elems: w1},
+-		&entry{str: "a", elems: w1, logical: lastAnchor},
+-		true,
+-	},
+-	{&entry{str: "a", elems: w1, logical: lastAnchor},
+-		&entry{str: "c", elems: w1},
+-		false,
+-	},
+-}
+-
+-func TestEntryLess(t *testing.T) {
+-	for i, tt := range entryLessTests {
+-		if res := entryLess(tt.a, tt.b); res != tt.res {
+-			t.Errorf("%d: was %v; want %v", i, res, tt.res)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/table.go gcc-4.8.1/libgo/go/exp/locale/collate/build/table.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/table.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/table.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,120 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"fmt"
+-	"io"
+-	"reflect"
+-)
+-
+-// table is an intermediate structure that roughly resembles the table in collate.
+-// It implements the non-exported interface collate.tableInitializer
+-type table struct {
+-	index trie // main trie
+-	root  *trieHandle
+-
+-	// expansion info
+-	expandElem []uint32
+-
+-	// contraction info
+-	contractTries  contractTrieSet
+-	contractElem   []uint32
+-	maxContractLen int
+-	variableTop    uint32
+-}
+-
+-func (t *table) TrieIndex() []uint16 {
+-	return t.index.index
+-}
+-
+-func (t *table) TrieValues() []uint32 {
+-	return t.index.values
+-}
+-
+-func (t *table) FirstBlockOffsets() (i, v uint16) {
+-	return t.root.lookupStart, t.root.valueStart
+-}
+-
+-func (t *table) ExpandElems() []uint32 {
+-	return t.expandElem
+-}
+-
+-func (t *table) ContractTries() []struct{ l, h, n, i uint8 } {
+-	return t.contractTries
+-}
+-
+-func (t *table) ContractElems() []uint32 {
+-	return t.contractElem
+-}
+-
+-func (t *table) MaxContractLen() int {
+-	return t.maxContractLen
+-}
+-
+-func (t *table) VariableTop() uint32 {
+-	return t.variableTop
+-}
+-
+-// print writes the table as Go compilable code to w. It prefixes the
+-// variable names with name. It returns the number of bytes written
+-// and the size of the resulting table.
+-func (t *table) fprint(w io.Writer, name string) (n, size int, err error) {
+-	update := func(nn, sz int, e error) {
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-		size += sz
+-	}
+-	// Write arrays needed for the structure.
+-	update(printColElems(w, t.expandElem, name+"ExpandElem"))
+-	update(printColElems(w, t.contractElem, name+"ContractElem"))
+-	update(t.index.printArrays(w, name))
+-	update(t.contractTries.printArray(w, name))
+-
+-	nn, e := fmt.Fprintf(w, "// Total size of %sTable is %d bytes\n", name, size)
+-	update(nn, 0, e)
+-	return
+-}
+-
+-func (t *table) fprintIndex(w io.Writer, h *trieHandle) (n int, err error) {
+-	p := func(f string, a ...interface{}) {
+-		nn, e := fmt.Fprintf(w, f, a...)
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-	}
+-	p("tableIndex{\n")
+-	p("\t\tlookupOffset: 0x%x,\n", h.lookupStart)
+-	p("\t\tvaluesOffset: 0x%x,\n", h.valueStart)
+-	p("\t}")
+-	return
+-}
+-
+-func printColElems(w io.Writer, a []uint32, name string) (n, sz int, err error) {
+-	p := func(f string, a ...interface{}) {
+-		nn, e := fmt.Fprintf(w, f, a...)
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-	}
+-	sz = len(a) * int(reflect.TypeOf(uint32(0)).Size())
+-	p("// %s: %d entries, %d bytes\n", name, len(a), sz)
+-	p("var %s = [%d]uint32 {", name, len(a))
+-	for i, c := range a {
+-		switch {
+-		case i%64 == 0:
+-			p("\n\t// Block %d, offset 0x%x\n", i/64, i)
+-		case (i%64)%6 == 0:
+-			p("\n\t")
+-		}
+-		p("0x%.8X, ", c)
+-	}
+-	p("\n}\n\n")
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/trie.go gcc-4.8.1/libgo/go/exp/locale/collate/build/trie.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/trie.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/trie.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,290 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// The trie in this file is used to associate the first full character
+-// in a UTF-8 string to a collation element.
+-// All but the last byte in a UTF-8 byte sequence are
+-// used to look up offsets in the index table to be used for the next byte.
+-// The last byte is used to index into a table of collation elements.
+-// This file contains the code for the generation of the trie.
+-
+-package build
+-
+-import (
+-	"fmt"
+-	"hash/fnv"
+-	"io"
+-	"reflect"
+-)
+-
+-const (
+-	blockSize   = 64
+-	blockOffset = 2 // Subtract 2 blocks to compensate for the 0x80 added to continuation bytes.
+-)
+-
+-type trieHandle struct {
+-	lookupStart uint16 // offset in table for first byte
+-	valueStart  uint16 // offset in table for first byte
+-}
+-
+-type trie struct {
+-	index  []uint16
+-	values []uint32
+-}
+-
+-// trieNode is the intermediate trie structure used for generating a trie.
+-type trieNode struct {
+-	index    []*trieNode
+-	value    []uint32
+-	b        byte
+-	refValue uint16
+-	refIndex uint16
+-}
+-
+-func newNode() *trieNode {
+-	return &trieNode{
+-		index: make([]*trieNode, 64),
+-		value: make([]uint32, 128), // root node size is 128 instead of 64
+-	}
+-}
+-
+-func (n *trieNode) isInternal() bool {
+-	return n.value != nil
+-}
+-
+-func (n *trieNode) insert(r rune, value uint32) {
+-	const maskx = 0x3F // mask out two most-significant bits
+-	str := string(r)
+-	if len(str) == 1 {
+-		n.value[str[0]] = value
+-		return
+-	}
+-	for i := 0; i < len(str)-1; i++ {
+-		b := str[i] & maskx
+-		if n.index == nil {
+-			n.index = make([]*trieNode, blockSize)
+-		}
+-		nn := n.index[b]
+-		if nn == nil {
+-			nn = &trieNode{}
+-			nn.b = b
+-			n.index[b] = nn
+-		}
+-		n = nn
+-	}
+-	if n.value == nil {
+-		n.value = make([]uint32, blockSize)
+-	}
+-	b := str[len(str)-1] & maskx
+-	n.value[b] = value
+-}
+-
+-type trieBuilder struct {
+-	t *trie
+-
+-	roots []*trieHandle
+-
+-	lookupBlocks []*trieNode
+-	valueBlocks  []*trieNode
+-
+-	lookupBlockIdx map[uint32]*trieNode
+-	valueBlockIdx  map[uint32]*trieNode
+-}
+-
+-func newTrieBuilder() *trieBuilder {
+-	index := &trieBuilder{}
+-	index.lookupBlocks = make([]*trieNode, 0)
+-	index.valueBlocks = make([]*trieNode, 0)
+-	index.lookupBlockIdx = make(map[uint32]*trieNode)
+-	index.valueBlockIdx = make(map[uint32]*trieNode)
+-	// The third nil is the default null block.  The other two blocks
+-	// are used to guarantee an offset of at least 3 for each block.
+-	index.lookupBlocks = append(index.lookupBlocks, nil, nil, nil)
+-	index.t = &trie{}
+-	return index
+-}
+-
+-func (b *trieBuilder) computeOffsets(n *trieNode) *trieNode {
+-	hasher := fnv.New32()
+-	if n.index != nil {
+-		for i, nn := range n.index {
+-			var vi, vv uint16
+-			if nn != nil {
+-				nn = b.computeOffsets(nn)
+-				n.index[i] = nn
+-				vi = nn.refIndex
+-				vv = nn.refValue
+-			}
+-			hasher.Write([]byte{byte(vi >> 8), byte(vi)})
+-			hasher.Write([]byte{byte(vv >> 8), byte(vv)})
+-		}
+-		h := hasher.Sum32()
+-		nn, ok := b.lookupBlockIdx[h]
+-		if !ok {
+-			n.refIndex = uint16(len(b.lookupBlocks)) - blockOffset
+-			b.lookupBlocks = append(b.lookupBlocks, n)
+-			b.lookupBlockIdx[h] = n
+-		} else {
+-			n = nn
+-		}
+-	} else {
+-		for _, v := range n.value {
+-			hasher.Write([]byte{byte(v >> 24), byte(v >> 16), byte(v >> 8), byte(v)})
+-		}
+-		h := hasher.Sum32()
+-		nn, ok := b.valueBlockIdx[h]
+-		if !ok {
+-			n.refValue = uint16(len(b.valueBlocks)) - blockOffset
+-			n.refIndex = n.refValue
+-			b.valueBlocks = append(b.valueBlocks, n)
+-			b.valueBlockIdx[h] = n
+-		} else {
+-			n = nn
+-		}
+-	}
+-	return n
+-}
+-
+-func (b *trieBuilder) addStartValueBlock(n *trieNode) uint16 {
+-	hasher := fnv.New32()
+-	for _, v := range n.value[:2*blockSize] {
+-		hasher.Write([]byte{byte(v >> 24), byte(v >> 16), byte(v >> 8), byte(v)})
+-	}
+-	h := hasher.Sum32()
+-	nn, ok := b.valueBlockIdx[h]
+-	if !ok {
+-		n.refValue = uint16(len(b.valueBlocks))
+-		n.refIndex = n.refValue
+-		b.valueBlocks = append(b.valueBlocks, n)
+-		// Add a dummy block to accommodate the double block size.
+-		b.valueBlocks = append(b.valueBlocks, nil)
+-		b.valueBlockIdx[h] = n
+-	} else {
+-		n = nn
+-	}
+-	return n.refValue
+-}
+-
+-func genValueBlock(t *trie, n *trieNode) {
+-	if n != nil {
+-		for _, v := range n.value {
+-			t.values = append(t.values, v)
+-		}
+-	}
+-}
+-
+-func genLookupBlock(t *trie, n *trieNode) {
+-	for _, nn := range n.index {
+-		v := uint16(0)
+-		if nn != nil {
+-			if n.index != nil {
+-				v = nn.refIndex
+-			} else {
+-				v = nn.refValue
+-			}
+-		}
+-		t.index = append(t.index, v)
+-	}
+-}
+-
+-func (b *trieBuilder) addTrie(n *trieNode) *trieHandle {
+-	h := &trieHandle{}
+-	b.roots = append(b.roots, h)
+-	h.valueStart = b.addStartValueBlock(n)
+-	if len(b.roots) == 1 {
+-		// We insert a null block after the first start value block.
+-		// This ensures that continuation bytes UTF-8 sequences of length
+-		// greater than 2 will automatically hit a null block if there
+-		// was an undefined entry.
+-		b.valueBlocks = append(b.valueBlocks, nil)
+-	}
+-	n = b.computeOffsets(n)
+-	// Offset by one extra block as the first byte starts at 0xC0 instead of 0x80.
+-	h.lookupStart = n.refIndex - 1
+-	return h
+-}
+-
+-// generate generates and returns the trie for n.
+-func (b *trieBuilder) generate() (t *trie, err error) {
+-	t = b.t
+-	if len(b.valueBlocks) >= 1<<16 {
+-		return nil, fmt.Errorf("maximum number of value blocks exceeded (%d > %d)", len(b.valueBlocks), 1<<16)
+-	}
+-	if len(b.lookupBlocks) >= 1<<16 {
+-		return nil, fmt.Errorf("maximum number of lookup blocks exceeded (%d > %d)", len(b.lookupBlocks), 1<<16)
+-	}
+-	genValueBlock(t, b.valueBlocks[0])
+-	genValueBlock(t, &trieNode{value: make([]uint32, 64)})
+-	for i := 2; i < len(b.valueBlocks); i++ {
+-		genValueBlock(t, b.valueBlocks[i])
+-	}
+-	n := &trieNode{index: make([]*trieNode, 64)}
+-	genLookupBlock(t, n)
+-	genLookupBlock(t, n)
+-	genLookupBlock(t, n)
+-	for i := 3; i < len(b.lookupBlocks); i++ {
+-		genLookupBlock(t, b.lookupBlocks[i])
+-	}
+-	return b.t, nil
+-}
+-
+-func (t *trie) printArrays(w io.Writer, name string) (n, size int, err error) {
+-	p := func(f string, a ...interface{}) {
+-		nn, e := fmt.Fprintf(w, f, a...)
+-		n += nn
+-		if err == nil {
+-			err = e
+-		}
+-	}
+-	nv := len(t.values)
+-	p("// %sValues: %d entries, %d bytes\n", name, nv, nv*4)
+-	p("// Block 2 is the null block.\n")
+-	p("var %sValues = [%d]uint32 {", name, nv)
+-	var printnewline bool
+-	for i, v := range t.values {
+-		if i%blockSize == 0 {
+-			p("\n\t// Block %#x, offset %#x", i/blockSize, i)
+-		}
+-		if i%4 == 0 {
+-			printnewline = true
+-		}
+-		if v != 0 {
+-			if printnewline {
+-				p("\n\t")
+-				printnewline = false
+-			}
+-			p("%#04x:%#08x, ", i, v)
+-		}
+-	}
+-	p("\n}\n\n")
+-	ni := len(t.index)
+-	p("// %sLookup: %d entries, %d bytes\n", name, ni, ni*2)
+-	p("// Block 0 is the null block.\n")
+-	p("var %sLookup = [%d]uint16 {", name, ni)
+-	printnewline = false
+-	for i, v := range t.index {
+-		if i%blockSize == 0 {
+-			p("\n\t// Block %#x, offset %#x", i/blockSize, i)
+-		}
+-		if i%8 == 0 {
+-			printnewline = true
+-		}
+-		if v != 0 {
+-			if printnewline {
+-				p("\n\t")
+-				printnewline = false
+-			}
+-			p("%#03x:%#02x, ", i, v)
+-		}
+-	}
+-	p("\n}\n\n")
+-	return n, nv*4 + ni*2, err
+-}
+-
+-func (t *trie) printStruct(w io.Writer, handle *trieHandle, name string) (n, sz int, err error) {
+-	const msg = "trie{ %sLookup[%d:], %sValues[%d:], %sLookup[:], %sValues[:]}"
+-	n, err = fmt.Fprintf(w, msg, name, handle.lookupStart*blockSize, name, handle.valueStart*blockSize, name, name)
+-	sz += int(reflect.TypeOf(trie{}).Size())
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/trie_test.go gcc-4.8.1/libgo/go/exp/locale/collate/build/trie_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/build/trie_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/build/trie_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,107 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package build
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"testing"
+-)
+-
+-// We take the smallest, largest and an arbitrary value for each
+-// of the UTF-8 sequence lengths.
+-var testRunes = []rune{
+-	0x01, 0x0C, 0x7F, // 1-byte sequences
+-	0x80, 0x100, 0x7FF, // 2-byte sequences
+-	0x800, 0x999, 0xFFFF, // 3-byte sequences
+-	0x10000, 0x10101, 0x10FFFF, // 4-byte sequences
+-	0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block
+-}
+-
+-func makeTestTrie(t *testing.T) trie {
+-	n := newNode()
+-	for i, r := range testRunes {
+-		n.insert(r, uint32(i))
+-	}
+-	idx := newTrieBuilder()
+-	idx.addTrie(n)
+-	tr, err := idx.generate()
+-	if err != nil {
+-		t.Errorf(err.Error())
+-	}
+-	return *tr
+-}
+-
+-func TestGenerateTrie(t *testing.T) {
+-	testdata := makeTestTrie(t)
+-	buf := &bytes.Buffer{}
+-	testdata.printArrays(buf, "test")
+-	fmt.Fprintf(buf, "var testTrie = ")
+-	testdata.printStruct(buf, &trieHandle{19, 0}, "test")
+-	if output != buf.String() {
+-		t.Error("output differs")
+-	}
+-}
+-
+-var output = `// testValues: 832 entries, 3328 bytes
+-// Block 2 is the null block.
+-var testValues = [832]uint32 {
+-	// Block 0x0, offset 0x0
+-	0x000c:0x00000001, 
+-	// Block 0x1, offset 0x40
+-	0x007f:0x00000002, 
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x00c0:0x00000003, 
+-	// Block 0x4, offset 0x100
+-	0x0100:0x00000004, 
+-	// Block 0x5, offset 0x140
+-	0x0140:0x0000000c, 0x0141:0x0000000d, 0x0142:0x0000000e, 
+-	0x0150:0x0000000f, 
+-	0x0155:0x00000010, 
+-	// Block 0x6, offset 0x180
+-	0x01bf:0x00000005, 
+-	// Block 0x7, offset 0x1c0
+-	0x01c0:0x00000006, 
+-	// Block 0x8, offset 0x200
+-	0x0219:0x00000007, 
+-	// Block 0x9, offset 0x240
+-	0x027f:0x00000008, 
+-	// Block 0xa, offset 0x280
+-	0x0280:0x00000009, 
+-	// Block 0xb, offset 0x2c0
+-	0x02c1:0x0000000a, 
+-	// Block 0xc, offset 0x300
+-	0x033f:0x0000000b, 
+-}
+-
+-// testLookup: 640 entries, 1280 bytes
+-// Block 0 is the null block.
+-var testLookup = [640]uint16 {
+-	// Block 0x0, offset 0x0
+-	// Block 0x1, offset 0x40
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x0e0:0x05, 0x0e6:0x06, 
+-	// Block 0x4, offset 0x100
+-	0x13f:0x07, 
+-	// Block 0x5, offset 0x140
+-	0x140:0x08, 0x144:0x09, 
+-	// Block 0x6, offset 0x180
+-	0x190:0x03, 
+-	// Block 0x7, offset 0x1c0
+-	0x1ff:0x0a, 
+-	// Block 0x8, offset 0x200
+-	0x20f:0x05, 
+-	// Block 0x9, offset 0x240
+-	0x242:0x01, 0x244:0x02, 
+-	0x248:0x03, 
+-	0x25f:0x04, 
+-	0x260:0x01, 
+-	0x26f:0x02, 
+-	0x270:0x04, 0x274:0x06, 
+-}
+-
+-var testTrie = trie{ testLookup[1216:], testValues[0:], testLookup[:], testValues[:]}`
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/colelem.go gcc-4.8.1/libgo/go/exp/locale/collate/colelem.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/colelem.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/colelem.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,317 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"unicode"
+-)
+-
+-// Level identifies the collation comparison level.
+-// The primary level corresponds to the basic sorting of text.
+-// The secondary level corresponds to accents and related linguistic elements.
+-// The tertiary level corresponds to casing and related concepts.
+-// The quaternary level is derived from the other levels by the
+-// various algorithms for handling variable elements.
+-type Level int
+-
+-const (
+-	Primary Level = iota
+-	Secondary
+-	Tertiary
+-	Quaternary
+-	Identity
+-)
+-
+-const (
+-	defaultSecondary = 0x20
+-	defaultTertiary  = 0x2
+-	maxTertiary      = 0x1F
+-	MaxQuaternary    = 0x1FFFFF // 21 bits.
+-)
+-
+-// Elem is a representation of a collation element. This API provides ways to encode
+-// and decode Elems. Implementations of collation tables may use values greater
+-// or equal to PrivateUse for their own purposes.  However, these should never be
+-// returned by AppendNext.
+-type Elem uint32
+-
+-const (
+-	maxCE       Elem = 0xAFFFFFFF
+-	PrivateUse       = minContract
+-	minContract      = 0xC0000000
+-	maxContract      = 0xDFFFFFFF
+-	minExpand        = 0xE0000000
+-	maxExpand        = 0xEFFFFFFF
+-	minDecomp        = 0xF0000000
+-)
+-
+-type ceType int
+-
+-const (
+-	ceNormal           ceType = iota // ceNormal includes implicits (ce == 0)
+-	ceContractionIndex               // rune can be a start of a contraction
+-	ceExpansionIndex                 // rune expands into a sequence of collation elements
+-	ceDecompose                      // rune expands using NFKC decomposition
+-)
+-
+-func (ce Elem) ctype() ceType {
+-	if ce <= maxCE {
+-		return ceNormal
+-	}
+-	if ce <= maxContract {
+-		return ceContractionIndex
+-	} else {
+-		if ce <= maxExpand {
+-			return ceExpansionIndex
+-		}
+-		return ceDecompose
+-	}
+-	panic("should not reach here")
+-	return ceType(-1)
+-}
+-
+-// For normal collation elements, we assume that a collation element either has
+-// a primary or non-default secondary value, not both.
+-// Collation elements with a primary value are of the form
+-// 01pppppp pppppppp ppppppp0 ssssssss
+-//   - p* is primary collation value
+-//   - s* is the secondary collation value
+-// 00pppppp pppppppp ppppppps sssttttt, where
+-//   - p* is primary collation value
+-//   - s* offset of secondary from default value.
+-//   - t* is the tertiary collation value
+-// 100ttttt cccccccc pppppppp pppppppp
+-//   - t* is the tertiar collation value
+-//   - c* is the cannonical combining class
+-//   - p* is the primary collation value
+-// Collation elements with a secondary value are of the form
+-// 1010cccc ccccssss ssssssss tttttttt, where
+-//   - c* is the canonical combining class
+-//   - s* is the secondary collation value
+-//   - t* is the tertiary collation value
+-// 11qqqqqq qqqqqqqq qqqqqqq0 00000000
+-//   - q* quaternary value
+-const (
+-	ceTypeMask            = 0xC0000000
+-	ceTypeMaskExt         = 0xE0000000
+-	ceType1               = 0x40000000
+-	ceType2               = 0x00000000
+-	ceType3or4            = 0x80000000
+-	ceType4               = 0xA0000000
+-	ceTypeQ               = 0xC0000000
+-	ceIgnore              = ceType4
+-	firstNonPrimary       = 0x80000000
+-	lastSpecialPrimary    = 0xA0000000
+-	secondaryMask         = 0x80000000
+-	hasTertiaryMask       = 0x40000000
+-	primaryValueMask      = 0x3FFFFE00
+-	primaryShift          = 9
+-	compactPrimaryBits    = 16
+-	compactSecondaryShift = 5
+-	minCompactSecondary   = defaultSecondary - 4
+-)
+-
+-func makeImplicitCE(primary int) Elem {
+-	return ceType1 | Elem(primary<<primaryShift) | defaultSecondary
+-}
+-
+-// MakeElem returns an Elem for the given values.  It will return an error
+-// if the given combination of values is invalid.
+-func MakeElem(primary, secondary, tertiary int, ccc uint8) (Elem, error) {
+-	// TODO: implement
+-	return 0, nil
+-}
+-
+-// MakeQuaternary returns an Elem with the given quaternary value.
+-func MakeQuaternary(v int) Elem {
+-	return ceTypeQ | Elem(v<<primaryShift)
+-}
+-
+-// Mask sets weights for any level smaller than l to 0.
+-// The resulting Elem can be used to test for equality with
+-// other Elems to which the same mask has been applied.
+-func (ce Elem) Mask(l Level) uint32 {
+-	return 0
+-}
+-
+-// CCC returns the canoncial combining class associated with the underlying character,
+-// if applicable, or 0 otherwise.
+-func (ce Elem) CCC() uint8 {
+-	if ce&ceType3or4 != 0 {
+-		if ce&ceType4 == ceType3or4 {
+-			return uint8(ce >> 16)
+-		}
+-		return uint8(ce >> 20)
+-	}
+-	return 0
+-}
+-
+-// Primary returns the primary collation weight for ce.
+-func (ce Elem) Primary() int {
+-	if ce >= firstNonPrimary {
+-		if ce > lastSpecialPrimary {
+-			return 0
+-		}
+-		return int(uint16(ce))
+-	}
+-	return int(ce&primaryValueMask) >> primaryShift
+-}
+-
+-// Secondary returns the secondary collation weight for ce.
+-func (ce Elem) Secondary() int {
+-	switch ce & ceTypeMask {
+-	case ceType1:
+-		return int(uint8(ce))
+-	case ceType2:
+-		return minCompactSecondary + int((ce>>compactSecondaryShift)&0xF)
+-	case ceType3or4:
+-		if ce < ceType4 {
+-			return defaultSecondary
+-		}
+-		return int(ce>>8) & 0xFFF
+-	case ceTypeQ:
+-		return 0
+-	}
+-	panic("should not reach here")
+-}
+-
+-// Tertiary returns the tertiary collation weight for ce.
+-func (ce Elem) Tertiary() uint8 {
+-	if ce&hasTertiaryMask == 0 {
+-		if ce&ceType3or4 == 0 {
+-			return uint8(ce & 0x1F)
+-		}
+-		if ce&ceType4 == ceType4 {
+-			return uint8(ce)
+-		}
+-		return uint8(ce>>24) & 0x1F // type 2
+-	} else if ce&ceTypeMask == ceType1 {
+-		return defaultTertiary
+-	}
+-	// ce is a quaternary value.
+-	return 0
+-}
+-
+-func (ce Elem) updateTertiary(t uint8) Elem {
+-	if ce&ceTypeMask == ceType1 {
+-		// convert to type 4
+-		nce := ce & primaryValueMask
+-		nce |= Elem(uint8(ce)-minCompactSecondary) << compactSecondaryShift
+-		ce = nce
+-	} else if ce&ceTypeMaskExt == ceType3or4 {
+-		ce &= ^Elem(maxTertiary << 24)
+-		return ce | (Elem(t) << 24)
+-	} else {
+-		// type 2 or 4
+-		ce &= ^Elem(maxTertiary)
+-	}
+-	return ce | Elem(t)
+-}
+-
+-// Quaternary returns the quaternary value if explicitly specified,
+-// 0 if ce == ceIgnore, or MaxQuaternary otherwise.
+-// Quaternary values are used only for shifted variants.
+-func (ce Elem) Quaternary() int {
+-	if ce&ceTypeMask == ceTypeQ {
+-		return int(ce&primaryValueMask) >> primaryShift
+-	} else if ce == ceIgnore {
+-		return 0
+-	}
+-	return MaxQuaternary
+-}
+-
+-// Weight returns the collation weight for the given level.
+-func (ce Elem) Weight(l Level) int {
+-	switch l {
+-	case Primary:
+-		return ce.Primary()
+-	case Secondary:
+-		return ce.Secondary()
+-	case Tertiary:
+-		return int(ce.Tertiary())
+-	case Quaternary:
+-		return ce.Quaternary()
+-	}
+-	return 0 // return 0 (ignore) for undefined levels.
+-}
+-
+-// For contractions, collation elements are of the form
+-// 110bbbbb bbbbbbbb iiiiiiii iiiinnnn, where
+-//   - n* is the size of the first node in the contraction trie.
+-//   - i* is the index of the first node in the contraction trie.
+-//   - b* is the offset into the contraction collation element table.
+-// See contract.go for details on the contraction trie.
+-const (
+-	maxNBits              = 4
+-	maxTrieIndexBits      = 12
+-	maxContractOffsetBits = 13
+-)
+-
+-func splitContractIndex(ce Elem) (index, n, offset int) {
+-	n = int(ce & (1<<maxNBits - 1))
+-	ce >>= maxNBits
+-	index = int(ce & (1<<maxTrieIndexBits - 1))
+-	ce >>= maxTrieIndexBits
+-	offset = int(ce & (1<<maxContractOffsetBits - 1))
+-	return
+-}
+-
+-// For expansions, Elems are of the form 11100000 00000000 bbbbbbbb bbbbbbbb,
+-// where b* is the index into the expansion sequence table.
+-const maxExpandIndexBits = 16
+-
+-func splitExpandIndex(ce Elem) (index int) {
+-	return int(uint16(ce))
+-}
+-
+-// Some runes can be expanded using NFKD decomposition. Instead of storing the full
+-// sequence of collation elements, we decompose the rune and lookup the collation
+-// elements for each rune in the decomposition and modify the tertiary weights.
+-// The Elem, in this case, is of the form 11110000 00000000 wwwwwwww vvvvvvvv, where
+-//   - v* is the replacement tertiary weight for the first rune,
+-//   - w* is the replacement tertiary weight for the second rune,
+-// Tertiary weights of subsequent runes should be replaced with maxTertiary.
+-// See http://www.unicode.org/reports/tr10/#Compatibility_Decompositions for more details.
+-func splitDecompose(ce Elem) (t1, t2 uint8) {
+-	return uint8(ce), uint8(ce >> 8)
+-}
+-
+-const (
+-	// These constants were taken from http://www.unicode.org/versions/Unicode6.0.0/ch12.pdf.
+-	minUnified       rune = 0x4E00
+-	maxUnified            = 0x9FFF
+-	minCompatibility      = 0xF900
+-	maxCompatibility      = 0xFAFF
+-	minRare               = 0x3400
+-	maxRare               = 0x4DBF
+-)
+-const (
+-	commonUnifiedOffset = 0x10000
+-	rareUnifiedOffset   = 0x20000 // largest rune in common is U+FAFF
+-	otherOffset         = 0x50000 // largest rune in rare is U+2FA1D
+-	illegalOffset       = otherOffset + int(unicode.MaxRune)
+-	maxPrimary          = illegalOffset + 1
+-)
+-
+-// implicitPrimary returns the primary weight for the a rune
+-// for which there is no entry for the rune in the collation table.
+-// We take a different approach from the one specified in
+-// http://unicode.org/reports/tr10/#Implicit_Weights,
+-// but preserve the resulting relative ordering of the runes.
+-func implicitPrimary(r rune) int {
+-	if unicode.Is(unicode.Ideographic, r) {
+-		if r >= minUnified && r <= maxUnified {
+-			// The most common case for CJK.
+-			return int(r) + commonUnifiedOffset
+-		}
+-		if r >= minCompatibility && r <= maxCompatibility {
+-			// This will typically not hit. The DUCET explicitly specifies mappings
+-			// for all characters that do not decompose.
+-			return int(r) + commonUnifiedOffset
+-		}
+-		return int(r) + rareUnifiedOffset
+-	}
+-	return int(r) + otherOffset
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/colelem_test.go gcc-4.8.1/libgo/go/exp/locale/collate/colelem_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/colelem_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/colelem_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,274 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"testing"
+-	"unicode"
+-)
+-
+-type ceTest struct {
+-	f   func(inout []int) (Elem, ceType)
+-	arg []int
+-}
+-
+-// The make* funcs are simplified versions of the functions in build/colelem.go
+-func makeCE(weights []int) Elem {
+-	const (
+-		maxPrimaryBits          = 21
+-		maxSecondaryBits        = 12
+-		maxSecondaryCompactBits = 8
+-		maxSecondaryDiffBits    = 4
+-		maxTertiaryBits         = 8
+-		maxTertiaryCompactBits  = 5
+-		isPrimary               = 0x40000000
+-		isPrimaryCCC            = 0x80000000
+-		isSecondary             = 0xA0000000
+-	)
+-	var ce Elem
+-	ccc := weights[3]
+-	if weights[0] != 0 {
+-		if ccc != 0 {
+-			ce = Elem(weights[2] << 24)
+-			ce |= Elem(ccc) << 16
+-			ce |= Elem(weights[0])
+-			ce |= isPrimaryCCC
+-		} else if weights[2] == defaultTertiary {
+-			ce = Elem(weights[0]<<(maxSecondaryCompactBits+1) + weights[1])
+-			ce |= isPrimary
+-		} else {
+-			d := weights[1] - defaultSecondary + 4
+-			ce = Elem(weights[0]<<maxSecondaryDiffBits + d)
+-			ce = ce<<maxTertiaryCompactBits + Elem(weights[2])
+-		}
+-	} else {
+-		ce = Elem(weights[1]<<maxTertiaryBits + weights[2])
+-		ce += Elem(ccc) << 20
+-		ce |= isSecondary
+-	}
+-	return ce
+-}
+-
+-func makeContractIndex(index, n, offset int) Elem {
+-	const (
+-		contractID            = 0xC0000000
+-		maxNBits              = 4
+-		maxTrieIndexBits      = 12
+-		maxContractOffsetBits = 13
+-	)
+-	ce := Elem(contractID)
+-	ce += Elem(offset << (maxNBits + maxTrieIndexBits))
+-	ce += Elem(index << maxNBits)
+-	ce += Elem(n)
+-	return ce
+-}
+-
+-func makeExpandIndex(index int) Elem {
+-	const expandID = 0xE0000000
+-	return expandID + Elem(index)
+-}
+-
+-func makeDecompose(t1, t2 int) Elem {
+-	const decompID = 0xF0000000
+-	return Elem(t2<<8+t1) + decompID
+-}
+-
+-func normalCE(inout []int) (ce Elem, t ceType) {
+-	ce = makeCE(inout)
+-	inout[0] = ce.Primary()
+-	inout[1] = ce.Secondary()
+-	inout[2] = int(ce.Tertiary())
+-	inout[3] = int(ce.CCC())
+-	return ce, ceNormal
+-}
+-
+-func expandCE(inout []int) (ce Elem, t ceType) {
+-	ce = makeExpandIndex(inout[0])
+-	inout[0] = splitExpandIndex(ce)
+-	return ce, ceExpansionIndex
+-}
+-
+-func contractCE(inout []int) (ce Elem, t ceType) {
+-	ce = makeContractIndex(inout[0], inout[1], inout[2])
+-	i, n, o := splitContractIndex(ce)
+-	inout[0], inout[1], inout[2] = i, n, o
+-	return ce, ceContractionIndex
+-}
+-
+-func decompCE(inout []int) (ce Elem, t ceType) {
+-	ce = makeDecompose(inout[0], inout[1])
+-	t1, t2 := splitDecompose(ce)
+-	inout[0], inout[1] = int(t1), int(t2)
+-	return ce, ceDecompose
+-}
+-
+-const (
+-	maxPrimaryBits   = 21
+-	maxSecondaryBits = 16
+-	maxTertiaryBits  = 8
+-)
+-
+-var ceTests = []ceTest{
+-	{normalCE, []int{0, 0, 0, 0}},
+-	{normalCE, []int{0, 30, 3, 0}},
+-	{normalCE, []int{0, 30, 3, 0xFF}},
+-	{normalCE, []int{100, defaultSecondary, defaultTertiary, 0}},
+-	{normalCE, []int{100, defaultSecondary, defaultTertiary, 0xFF}},
+-	{normalCE, []int{100, defaultSecondary, 3, 0}},
+-	{normalCE, []int{0x123, defaultSecondary, 8, 0xFF}},
+-
+-	{contractCE, []int{0, 0, 0}},
+-	{contractCE, []int{1, 1, 1}},
+-	{contractCE, []int{1, (1 << maxNBits) - 1, 1}},
+-	{contractCE, []int{(1 << maxTrieIndexBits) - 1, 1, 1}},
+-	{contractCE, []int{1, 1, (1 << maxContractOffsetBits) - 1}},
+-
+-	{expandCE, []int{0}},
+-	{expandCE, []int{5}},
+-	{expandCE, []int{(1 << maxExpandIndexBits) - 1}},
+-
+-	{decompCE, []int{0, 0}},
+-	{decompCE, []int{1, 1}},
+-	{decompCE, []int{0x1F, 0x1F}},
+-}
+-
+-func TestColElem(t *testing.T) {
+-	for i, tt := range ceTests {
+-		inout := make([]int, len(tt.arg))
+-		copy(inout, tt.arg)
+-		ce, typ := tt.f(inout)
+-		if ce.ctype() != typ {
+-			t.Errorf("%d: type is %d; want %d (ColElem: %X)", i, ce.ctype(), typ, ce)
+-		}
+-		for j, a := range tt.arg {
+-			if inout[j] != a {
+-				t.Errorf("%d: argument %d is %X; want %X (ColElem: %X)", i, j, inout[j], a, ce)
+-			}
+-		}
+-	}
+-}
+-
+-type implicitTest struct {
+-	r rune
+-	p int
+-}
+-
+-var implicitTests = []implicitTest{
+-	{0x33FF, 0x533FF},
+-	{0x3400, 0x23400},
+-	{0x4DC0, 0x54DC0},
+-	{0x4DFF, 0x54DFF},
+-	{0x4E00, 0x14E00},
+-	{0x9FCB, 0x19FCB},
+-	{0xA000, 0x5A000},
+-	{0xF8FF, 0x5F8FF},
+-	{0xF900, 0x1F900},
+-	{0xFA23, 0x1FA23},
+-	{0xFAD9, 0x1FAD9},
+-	{0xFB00, 0x5FB00},
+-	{0x20000, 0x40000},
+-	{0x2B81C, 0x4B81C},
+-	{unicode.MaxRune, 0x15FFFF}, // maximum primary value
+-}
+-
+-func TestImplicit(t *testing.T) {
+-	for _, tt := range implicitTests {
+-		if p := implicitPrimary(tt.r); p != tt.p {
+-			t.Errorf("%U: was %X; want %X", tt.r, p, tt.p)
+-		}
+-	}
+-}
+-
+-func TestUpdateTertiary(t *testing.T) {
+-	tests := []struct {
+-		in, out Elem
+-		t       uint8
+-	}{
+-		{0x4000FE20, 0x0000FE8A, 0x0A},
+-		{0x4000FE21, 0x0000FEAA, 0x0A},
+-		{0x0000FE8B, 0x0000FE83, 0x03},
+-		{0x82FF0188, 0x9BFF0188, 0x1B},
+-		{0xAFF0CC02, 0xAFF0CC1B, 0x1B},
+-	}
+-	for i, tt := range tests {
+-		if out := tt.in.updateTertiary(tt.t); out != tt.out {
+-			t.Errorf("%d: was %X; want %X", i, out, tt.out)
+-		}
+-	}
+-}
+-
+-func TestDoNorm(t *testing.T) {
+-	const div = -1 // The insertion point of the next block.
+-	tests := []struct {
+-		in, out []int
+-	}{
+-		{in: []int{4, div, 3},
+-			out: []int{3, 4},
+-		},
+-		{in: []int{4, div, 3, 3, 3},
+-			out: []int{3, 3, 3, 4},
+-		},
+-		{in: []int{0, 4, div, 3},
+-			out: []int{0, 3, 4},
+-		},
+-		{in: []int{0, 0, 4, 5, div, 3, 3},
+-			out: []int{0, 0, 3, 3, 4, 5},
+-		},
+-		{in: []int{0, 0, 1, 4, 5, div, 3, 3},
+-			out: []int{0, 0, 1, 3, 3, 4, 5},
+-		},
+-		{in: []int{0, 0, 1, 4, 5, div, 4, 4},
+-			out: []int{0, 0, 1, 4, 4, 4, 5},
+-		},
+-	}
+-	for j, tt := range tests {
+-		i := iter{}
+-		var w, p, s int
+-		for k, cc := range tt.in {
+-			if cc == 0 {
+-				s = 0
+-			}
+-			if cc == div {
+-				w = 100
+-				p = k
+-				i.pStarter = s
+-				continue
+-			}
+-			i.ce = append(i.ce, makeCE([]int{w, 20, 2, cc}))
+-		}
+-		i.prevCCC = i.ce[p-1].CCC()
+-		i.doNorm(p, i.ce[p].CCC())
+-		if len(i.ce) != len(tt.out) {
+-			t.Errorf("%d: length was %d; want %d", j, len(i.ce), len(tt.out))
+-		}
+-		prevCCC := uint8(0)
+-		for k, ce := range i.ce {
+-			if int(ce.CCC()) != tt.out[k] {
+-				t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k])
+-			}
+-			if k > 0 && ce.CCC() == prevCCC && i.ce[k-1].Primary() > ce.Primary() {
+-				t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k)
+-			}
+-		}
+-	}
+-	// test cutoff of large sequence of combining characters.
+-	result := []uint8{8, 8, 8, 5, 5}
+-	for o := -2; o <= 2; o++ {
+-		i := iter{pStarter: 2, prevCCC: 8}
+-		n := maxCombiningCharacters + 1 + o
+-		for j := 1; j < n+i.pStarter; j++ {
+-			i.ce = append(i.ce, makeCE([]int{100, 20, 2, 8}))
+-		}
+-		p := len(i.ce)
+-		i.ce = append(i.ce, makeCE([]int{0, 20, 2, 5}))
+-		i.doNorm(p, 5)
+-		if i.prevCCC != result[o+2] {
+-			t.Errorf("%d: i.prevCCC was %d; want %d", n, i.prevCCC, result[o+2])
+-		}
+-		if result[o+2] == 5 && i.pStarter != p {
+-			t.Errorf("%d: i.pStarter was %d; want %d", n, i.pStarter, p)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/collate.go gcc-4.8.1/libgo/go/exp/locale/collate/collate.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/collate.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/collate.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,586 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package collate contains types for comparing and sorting Unicode strings
+-// according to a given collation order.  Package locale provides a high-level
+-// interface to collation. Users should typically use that package instead.
+-package collate
+-
+-import (
+-	"bytes"
+-	"exp/norm"
+-)
+-
+-// AlternateHandling identifies the various ways in which variables are handled.
+-// A rune with a primary weight lower than the variable top is considered a
+-// variable.
+-// See http://www.unicode.org/reports/tr10/#Variable_Weighting for details.
+-type AlternateHandling int
+-
+-const (
+-	// AltNonIgnorable turns off special handling of variables.
+-	AltNonIgnorable AlternateHandling = iota
+-
+-	// AltBlanked sets variables and all subsequent primary ignorables to be
+-	// ignorable at all levels. This is identical to removing all variables
+-	// and subsequent primary ignorables from the input.
+-	AltBlanked
+-
+-	// AltShifted sets variables to be ignorable for levels one through three and
+-	// adds a fourth level based on the values of the ignored levels.
+-	AltShifted
+-
+-	// AltShiftTrimmed is a slight variant of AltShifted that is used to
+-	// emulate POSIX.
+-	AltShiftTrimmed
+-)
+-
+-// Collator provides functionality for comparing strings for a given
+-// collation order.
+-type Collator struct {
+-	// TODO: hide most of these options. Low-level options are set through the locale
+-	// identifier (as defined by LDML) while high-level options are set through SetOptions.
+-	// Using high-level options allows us to be more flexible (such as not ignoring
+-	// Thai vowels for IgnoreDiacriticals) and more user-friendly (such as allowing
+-	// diacritical marks to be ignored but not case without having to fiddle with levels).
+-
+-	// Strength sets the maximum level to use in comparison.
+-	Strength Level
+-
+-	// Alternate specifies an alternative handling of variables.
+-	Alternate AlternateHandling
+-
+-	// Backwards specifies the order of sorting at the secondary level.
+-	// This option exists predominantly to support reverse sorting of accents in French.
+-	Backwards bool
+-
+-	// TODO: implement:
+-	// With HiraganaQuaternary enabled, Hiragana codepoints will get lower values
+-	// than all the other non-variable code points. Strength must be greater or
+-	// equal to Quaternary for this to take effect.
+-	HiraganaQuaternary bool
+-
+-	// If CaseLevel is true, a level consisting only of case characteristics will
+-	// be inserted in front of the tertiary level.  To ignore accents but take
+-	// cases into account, set Strength to Primary and CaseLevel to true.
+-	CaseLevel bool
+-
+-	// If Numeric is true, any sequence of decimal digits (category is Nd) is sorted
+-	// at a primary level with its numeric value.  For example, "A-21" < "A-123".
+-	Numeric bool
+-
+-	// The largest primary value that is considered to be variable.
+-	variableTop uint32
+-
+-	f norm.Form
+-
+-	t Weigher
+-
+-	sorter sorter
+-
+-	_iter [2]iter
+-}
+-
+-// An Option is used to change the behavior of Collator.  They override the
+-// settings passed through the locale identifier.
+-type Option int
+-
+-const (
+-	Numeric          Option = 1 << iota // Sort numbers numerically ("2" < "12").
+-	IgnoreCase                          // Case-insensitive search.
+-	IgnoreDiacritics                    // Ignore diacritical marks. ("o" == "Ã¶").
+-	IgnoreWidth                         // Ignore full versus normal width.
+-	UpperFirst                          // Sort upper case before lower case.
+-	LowerFirst                          // Sort lower case before upper case.
+-	Force                               // Force ordering if strings are equivalent but not equal.
+-
+-	Loose = IgnoreDiacritics | IgnoreWidth | IgnoreCase
+-)
+-
+-// SetOptions accepts a Options or-ed together.  All previous calls to SetOptions are ignored.
+-func (c *Collator) SetOptions(o Option) {
+-	// TODO: implement
+-}
+-
+-func (c *Collator) iter(i int) *iter {
+-	// TODO: evaluate performance for making the second iterator optional.
+-	return &c._iter[i]
+-}
+-
+-// Locales returns the list of locales for which collating differs from its parent locale.
+-// The returned value should not be modified.
+-func Locales() []string {
+-	return availableLocales
+-}
+-
+-// New returns a new Collator initialized for the given locale.
+-func New(loc string) *Collator {
+-	// TODO: handle locale selection according to spec.
+-	var t tableIndex
+-	if loc != "" {
+-		if idx, ok := locales[loc]; ok {
+-			t = idx
+-		} else {
+-			t = locales["root"]
+-		}
+-	}
+-	return NewFromTable(Init(t))
+-}
+-
+-func NewFromTable(t Weigher) *Collator {
+-	c := &Collator{
+-		Strength: Tertiary,
+-		f:        norm.NFD,
+-		t:        t,
+-	}
+-	c._iter[0].init(c)
+-	c._iter[1].init(c)
+-	return c
+-}
+-
+-// Buffer holds keys generated by Key and KeyString.
+-type Buffer struct {
+-	buf [4096]byte
+-	key []byte
+-}
+-
+-func (b *Buffer) init() {
+-	if b.key == nil {
+-		b.key = b.buf[:0]
+-	}
+-}
+-
+-// Reset clears the buffer from previous results generated by Key and KeyString.
+-func (b *Buffer) Reset() {
+-	b.key = b.key[:0]
+-}
+-
+-// Compare returns an integer comparing the two byte slices.
+-// The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
+-func (c *Collator) Compare(a, b []byte) int {
+-	// TODO: skip identical prefixes once we have a fast way to detect if a rune is
+-	// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.
+-	c.iter(0).setInput(a)
+-	c.iter(1).setInput(b)
+-	if res := c.compare(); res != 0 {
+-		return res
+-	}
+-	if Identity == c.Strength {
+-		return bytes.Compare(a, b)
+-	}
+-	return 0
+-}
+-
+-// CompareString returns an integer comparing the two strings.
+-// The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
+-func (c *Collator) CompareString(a, b string) int {
+-	// TODO: skip identical prefixes once we have a fast way to detect if a rune is
+-	// part of a contraction. This would lead to roughly a 10% speedup for the colcmp regtest.
+-	c.iter(0).setInputString(a)
+-	c.iter(1).setInputString(b)
+-	if res := c.compare(); res != 0 {
+-		return res
+-	}
+-	if Identity == c.Strength {
+-		if a < b {
+-			return -1
+-		} else if a > b {
+-			return 1
+-		}
+-	}
+-	return 0
+-}
+-
+-func compareLevel(f func(i *iter) int, a, b *iter) int {
+-	a.pce = 0
+-	b.pce = 0
+-	for {
+-		va := f(a)
+-		vb := f(b)
+-		if va != vb {
+-			if va < vb {
+-				return -1
+-			}
+-			return 1
+-		} else if va == 0 {
+-			break
+-		}
+-	}
+-	return 0
+-}
+-
+-func (c *Collator) compare() int {
+-	ia, ib := c.iter(0), c.iter(1)
+-	// Process primary level
+-	if c.Alternate != AltShifted {
+-		// TODO: implement script reordering
+-		// TODO: special hiragana handling
+-		if res := compareLevel((*iter).nextPrimary, ia, ib); res != 0 {
+-			return res
+-		}
+-	} else {
+-		// TODO: handle shifted
+-	}
+-	if Secondary <= c.Strength {
+-		f := (*iter).nextSecondary
+-		if c.Backwards {
+-			f = (*iter).prevSecondary
+-		}
+-		if res := compareLevel(f, ia, ib); res != 0 {
+-			return res
+-		}
+-	}
+-	// TODO: special case handling (Danish?)
+-	if Tertiary <= c.Strength || c.CaseLevel {
+-		if res := compareLevel((*iter).nextTertiary, ia, ib); res != 0 {
+-			return res
+-		}
+-		// TODO: Not needed for the default value of AltNonIgnorable?
+-		if Quaternary <= c.Strength {
+-			if res := compareLevel((*iter).nextQuaternary, ia, ib); res != 0 {
+-				return res
+-			}
+-		}
+-	}
+-	return 0
+-}
+-
+-// Key returns the collation key for str.
+-// Passing the buffer buf may avoid memory allocations.
+-// The returned slice will point to an allocation in Buffer and will remain
+-// valid until the next call to buf.Reset().
+-func (c *Collator) Key(buf *Buffer, str []byte) []byte {
+-	// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
+-	buf.init()
+-	return c.key(buf, c.getColElems(str))
+-}
+-
+-// KeyFromString returns the collation key for str.
+-// Passing the buffer buf may avoid memory allocations.
+-// The returned slice will point to an allocation in Buffer and will retain
+-// valid until the next call to buf.ResetKeys().
+-func (c *Collator) KeyFromString(buf *Buffer, str string) []byte {
+-	// See http://www.unicode.org/reports/tr10/#Main_Algorithm for more details.
+-	buf.init()
+-	return c.key(buf, c.getColElemsString(str))
+-}
+-
+-func (c *Collator) key(buf *Buffer, w []Elem) []byte {
+-	processWeights(c.Alternate, c.variableTop, w)
+-	kn := len(buf.key)
+-	c.keyFromElems(buf, w)
+-	return buf.key[kn:]
+-}
+-
+-func (c *Collator) getColElems(str []byte) []Elem {
+-	i := c.iter(0)
+-	i.setInput(str)
+-	for i.next() {
+-	}
+-	return i.ce
+-}
+-
+-func (c *Collator) getColElemsString(str string) []Elem {
+-	i := c.iter(0)
+-	i.setInputString(str)
+-	for i.next() {
+-	}
+-	return i.ce
+-}
+-
+-type iter struct {
+-	bytes []byte
+-	str   string
+-
+-	wa  [512]Elem
+-	ce  []Elem
+-	pce int
+-	nce int // nce <= len(nce)
+-
+-	prevCCC  uint8
+-	pStarter int
+-
+-	t Weigher
+-}
+-
+-func (i *iter) init(c *Collator) {
+-	i.t = c.t
+-	i.ce = i.wa[:0]
+-}
+-
+-func (i *iter) reset() {
+-	i.ce = i.ce[:0]
+-	i.nce = 0
+-	i.prevCCC = 0
+-	i.pStarter = 0
+-}
+-
+-func (i *iter) setInput(s []byte) *iter {
+-	i.bytes = s
+-	i.str = ""
+-	i.reset()
+-	return i
+-}
+-
+-func (i *iter) setInputString(s string) *iter {
+-	i.str = s
+-	i.bytes = nil
+-	i.reset()
+-	return i
+-}
+-
+-func (i *iter) done() bool {
+-	return len(i.str) == 0 && len(i.bytes) == 0
+-}
+-
+-func (i *iter) tail(n int) {
+-	if i.bytes == nil {
+-		i.str = i.str[n:]
+-	} else {
+-		i.bytes = i.bytes[n:]
+-	}
+-}
+-
+-func (i *iter) appendNext() int {
+-	var sz int
+-	if i.bytes == nil {
+-		i.ce, sz = i.t.AppendNextString(i.ce, i.str)
+-	} else {
+-		i.ce, sz = i.t.AppendNext(i.ce, i.bytes)
+-	}
+-	return sz
+-}
+-
+-// next appends Elems to the internal array until it adds an element with CCC=0.
+-// In the majority of cases, a Elem with a primary value > 0 will have
+-// a CCC of 0. The CCC values of colation elements are also used to detect if the
+-// input string was not normalized and to adjust the result accordingly.
+-func (i *iter) next() bool {
+-	for !i.done() {
+-		p0 := len(i.ce)
+-		sz := i.appendNext()
+-		i.tail(sz)
+-		last := len(i.ce) - 1
+-		if ccc := i.ce[last].CCC(); ccc == 0 {
+-			i.nce = len(i.ce)
+-			i.pStarter = last
+-			i.prevCCC = 0
+-			return true
+-		} else if p0 < last && i.ce[p0].CCC() == 0 {
+-			// set i.nce to only cover part of i.ce for which ccc == 0 and
+-			// use rest the next call to next.
+-			for p0++; p0 < last && i.ce[p0].CCC() == 0; p0++ {
+-			}
+-			i.nce = p0
+-			i.pStarter = p0 - 1
+-			i.prevCCC = ccc
+-			return true
+-		} else if ccc < i.prevCCC {
+-			i.doNorm(p0, ccc) // should be rare for most common cases
+-		} else {
+-			i.prevCCC = ccc
+-		}
+-	}
+-	if len(i.ce) != i.nce {
+-		i.nce = len(i.ce)
+-		return true
+-	}
+-	return false
+-}
+-
+-// nextPlain is the same as next, but does not "normalize" the collation
+-// elements.
+-// TODO: remove this function. Using this instead of next does not seem
+-// to improve performance in any significant way. We retain this until
+-// later for evaluation purposes.
+-func (i *iter) nextPlain() bool {
+-	if i.done() {
+-		return false
+-	}
+-	sz := i.appendNext()
+-	i.tail(sz)
+-	i.nce = len(i.ce)
+-	return true
+-}
+-
+-const maxCombiningCharacters = 30
+-
+-// doNorm reorders the collation elements in i.ce.
+-// It assumes that blocks of collation elements added with appendNext
+-// either start and end with the same CCC or start with CCC == 0.
+-// This allows for a single insertion point for the entire block.
+-// The correctness of this assumption is verified in builder.go.
+-func (i *iter) doNorm(p int, ccc uint8) {
+-	if p-i.pStarter > maxCombiningCharacters {
+-		i.prevCCC = i.ce[len(i.ce)-1].CCC()
+-		i.pStarter = len(i.ce) - 1
+-		return
+-	}
+-	n := len(i.ce)
+-	k := p
+-	for p--; p > i.pStarter && ccc < i.ce[p-1].CCC(); p-- {
+-	}
+-	i.ce = append(i.ce, i.ce[p:k]...)
+-	copy(i.ce[p:], i.ce[k:])
+-	i.ce = i.ce[:n]
+-}
+-
+-func (i *iter) nextPrimary() int {
+-	for {
+-		for ; i.pce < i.nce; i.pce++ {
+-			if v := i.ce[i.pce].Primary(); v != 0 {
+-				i.pce++
+-				return v
+-			}
+-		}
+-		if !i.next() {
+-			return 0
+-		}
+-	}
+-	panic("should not reach here")
+-}
+-
+-func (i *iter) nextSecondary() int {
+-	for ; i.pce < len(i.ce); i.pce++ {
+-		if v := i.ce[i.pce].Secondary(); v != 0 {
+-			i.pce++
+-			return v
+-		}
+-	}
+-	return 0
+-}
+-
+-func (i *iter) prevSecondary() int {
+-	for ; i.pce < len(i.ce); i.pce++ {
+-		if v := i.ce[len(i.ce)-i.pce-1].Secondary(); v != 0 {
+-			i.pce++
+-			return v
+-		}
+-	}
+-	return 0
+-}
+-
+-func (i *iter) nextTertiary() int {
+-	for ; i.pce < len(i.ce); i.pce++ {
+-		if v := i.ce[i.pce].Tertiary(); v != 0 {
+-			i.pce++
+-			return int(v)
+-		}
+-	}
+-	return 0
+-}
+-
+-func (i *iter) nextQuaternary() int {
+-	for ; i.pce < len(i.ce); i.pce++ {
+-		if v := i.ce[i.pce].Quaternary(); v != 0 {
+-			i.pce++
+-			return v
+-		}
+-	}
+-	return 0
+-}
+-
+-func appendPrimary(key []byte, p int) []byte {
+-	// Convert to variable length encoding; supports up to 23 bits.
+-	if p <= 0x7FFF {
+-		key = append(key, uint8(p>>8), uint8(p))
+-	} else {
+-		key = append(key, uint8(p>>16)|0x80, uint8(p>>8), uint8(p))
+-	}
+-	return key
+-}
+-
+-// keyFromElems converts the weights ws to a compact sequence of bytes.
+-// The result will be appended to the byte buffer in buf.
+-func (c *Collator) keyFromElems(buf *Buffer, ws []Elem) {
+-	for _, v := range ws {
+-		if w := v.Primary(); w > 0 {
+-			buf.key = appendPrimary(buf.key, w)
+-		}
+-	}
+-	if Secondary <= c.Strength {
+-		buf.key = append(buf.key, 0, 0)
+-		// TODO: we can use one 0 if we can guarantee that all non-zero weights are > 0xFF.
+-		if !c.Backwards {
+-			for _, v := range ws {
+-				if w := v.Secondary(); w > 0 {
+-					buf.key = append(buf.key, uint8(w>>8), uint8(w))
+-				}
+-			}
+-		} else {
+-			for i := len(ws) - 1; i >= 0; i-- {
+-				if w := ws[i].Secondary(); w > 0 {
+-					buf.key = append(buf.key, uint8(w>>8), uint8(w))
+-				}
+-			}
+-		}
+-	} else if c.CaseLevel {
+-		buf.key = append(buf.key, 0, 0)
+-	}
+-	if Tertiary <= c.Strength || c.CaseLevel {
+-		buf.key = append(buf.key, 0, 0)
+-		for _, v := range ws {
+-			if w := v.Tertiary(); w > 0 {
+-				buf.key = append(buf.key, uint8(w))
+-			}
+-		}
+-		// Derive the quaternary weights from the options and other levels.
+-		// Note that we represent MaxQuaternary as 0xFF. The first byte of the
+-		// representation of a primary weight is always smaller than 0xFF,
+-		// so using this single byte value will compare correctly.
+-		if Quaternary <= c.Strength && c.Alternate >= AltShifted {
+-			if c.Alternate == AltShiftTrimmed {
+-				lastNonFFFF := len(buf.key)
+-				buf.key = append(buf.key, 0)
+-				for _, v := range ws {
+-					if w := v.Quaternary(); w == MaxQuaternary {
+-						buf.key = append(buf.key, 0xFF)
+-					} else if w > 0 {
+-						buf.key = appendPrimary(buf.key, w)
+-						lastNonFFFF = len(buf.key)
+-					}
+-				}
+-				buf.key = buf.key[:lastNonFFFF]
+-			} else {
+-				buf.key = append(buf.key, 0)
+-				for _, v := range ws {
+-					if w := v.Quaternary(); w == MaxQuaternary {
+-						buf.key = append(buf.key, 0xFF)
+-					} else if w > 0 {
+-						buf.key = appendPrimary(buf.key, w)
+-					}
+-				}
+-			}
+-		}
+-	}
+-}
+-
+-func processWeights(vw AlternateHandling, top uint32, wa []Elem) {
+-	ignore := false
+-	vtop := int(top)
+-	switch vw {
+-	case AltShifted, AltShiftTrimmed:
+-		for i := range wa {
+-			if p := wa[i].Primary(); p <= vtop && p != 0 {
+-				wa[i] = MakeQuaternary(p)
+-				ignore = true
+-			} else if p == 0 {
+-				if ignore {
+-					wa[i] = ceIgnore
+-				}
+-			} else {
+-				ignore = false
+-			}
+-		}
+-	case AltBlanked:
+-		for i := range wa {
+-			if p := wa[i].Primary(); p <= vtop && (ignore || p != 0) {
+-				wa[i] = ceIgnore
+-				ignore = true
+-			} else {
+-				ignore = false
+-			}
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/colltab.go gcc-4.8.1/libgo/go/exp/locale/collate/colltab.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/colltab.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/colltab.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,28 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-// A Weigher can be used as a source for Collator and Searcher.
+-type Weigher interface {
+-	// Start finds the start of the segment that includes position p.
+-	Start(p int, b []byte) int
+-
+-	// StartString finds the start of the segment that includes position p.
+-	StartString(p int, s string) int
+-
+-	// AppendNext appends Elems to buf corresponding to the longest match
+-	// of a single character or contraction from the start of s.
+-	// It returns the new buf and the number of bytes consumed.
+-	AppendNext(buf []Elem, s []byte) (ce []Elem, n int)
+-
+-	// AppendNextString appends Elems to buf corresponding to the longest match
+-	// of a single character or contraction from the start of s.
+-	// It returns the new buf and the number of bytes consumed.
+-	AppendNextString(buf []Elem, s string) (ce []Elem, n int)
+-
+-	// Domain returns a slice of all single characters and contractions for which
+-	// collation elements are defined in this table.
+-	Domain() []string
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/contract.go gcc-4.8.1/libgo/go/exp/locale/collate/contract.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/contract.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/contract.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,145 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import "unicode/utf8"
+-
+-// For a description of contractTrieSet, see exp/locale/collate/build/contract.go.
+-
+-type contractTrieSet []struct{ l, h, n, i uint8 }
+-
+-// ctScanner is used to match a trie to an input sequence.
+-// A contraction may match a non-contiguous sequence of bytes in an input string.
+-// For example, if there is a contraction for <a, combining_ring>, it should match
+-// the sequence <a, combining_cedilla, combining_ring>, as combining_cedilla does
+-// not block combining_ring.
+-// ctScanner does not automatically skip over non-blocking non-starters, but rather
+-// retains the state of the last match and leaves it up to the user to continue
+-// the match at the appropriate points.
+-type ctScanner struct {
+-	states contractTrieSet
+-	s      []byte
+-	n      int
+-	index  int
+-	pindex int
+-	done   bool
+-}
+-
+-type ctScannerString struct {
+-	states contractTrieSet
+-	s      string
+-	n      int
+-	index  int
+-	pindex int
+-	done   bool
+-}
+-
+-func (t contractTrieSet) scanner(index, n int, b []byte) ctScanner {
+-	return ctScanner{s: b, states: t[index:], n: n}
+-}
+-
+-func (t contractTrieSet) scannerString(index, n int, str string) ctScannerString {
+-	return ctScannerString{s: str, states: t[index:], n: n}
+-}
+-
+-// result returns the offset i and bytes consumed p so far.  If no suffix
+-// matched, i and p will be 0.
+-func (s *ctScanner) result() (i, p int) {
+-	return s.index, s.pindex
+-}
+-
+-func (s *ctScannerString) result() (i, p int) {
+-	return s.index, s.pindex
+-}
+-
+-const (
+-	final   = 0
+-	noIndex = 0xFF
+-)
+-
+-// scan matches the longest suffix at the current location in the input
+-// and returns the number of bytes consumed.
+-func (s *ctScanner) scan(p int) int {
+-	pr := p // the p at the rune start
+-	str := s.s
+-	states, n := s.states, s.n
+-	for i := 0; i < n && p < len(str); {
+-		e := states[i]
+-		c := str[p]
+-		// TODO: a significant number of contractions are of a form that
+-		// cannot match discontiguous UTF-8 in a normalized string. We could let
+-		// a negative value of e.n mean that we can set s.done = true and avoid
+-		// the need for additional matches.
+-		if c >= e.l {
+-			if e.l == c {
+-				p++
+-				if e.i != noIndex {
+-					s.index = int(e.i)
+-					s.pindex = p
+-				}
+-				if e.n != final {
+-					i, states, n = 0, states[int(e.h)+n:], int(e.n)
+-					if p >= len(str) || utf8.RuneStart(str[p]) {
+-						s.states, s.n, pr = states, n, p
+-					}
+-				} else {
+-					s.done = true
+-					return p
+-				}
+-				continue
+-			} else if e.n == final && c <= e.h {
+-				p++
+-				s.done = true
+-				s.index = int(c-e.l) + int(e.i)
+-				s.pindex = p
+-				return p
+-			}
+-		}
+-		i++
+-	}
+-	return pr
+-}
+-
+-// scan is a verbatim copy of ctScanner.scan.
+-func (s *ctScannerString) scan(p int) int {
+-	pr := p // the p at the rune start
+-	str := s.s
+-	states, n := s.states, s.n
+-	for i := 0; i < n && p < len(str); {
+-		e := states[i]
+-		c := str[p]
+-		// TODO: a significant number of contractions are of a form that
+-		// cannot match discontiguous UTF-8 in a normalized string. We could let
+-		// a negative value of e.n mean that we can set s.done = true and avoid
+-		// the need for additional matches.
+-		if c >= e.l {
+-			if e.l == c {
+-				p++
+-				if e.i != noIndex {
+-					s.index = int(e.i)
+-					s.pindex = p
+-				}
+-				if e.n != final {
+-					i, states, n = 0, states[int(e.h)+n:], int(e.n)
+-					if p >= len(str) || utf8.RuneStart(str[p]) {
+-						s.states, s.n, pr = states, n, p
+-					}
+-				} else {
+-					s.done = true
+-					return p
+-				}
+-				continue
+-			} else if e.n == final && c <= e.h {
+-				p++
+-				s.done = true
+-				s.index = int(c-e.l) + int(e.i)
+-				s.pindex = p
+-				return p
+-			}
+-		}
+-		i++
+-	}
+-	return pr
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/contract_test.go gcc-4.8.1/libgo/go/exp/locale/collate/contract_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/contract_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/contract_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,132 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"testing"
+-)
+-
+-type lookupStrings struct {
+-	str    string
+-	offset int
+-	n      int // bytes consumed from input
+-}
+-
+-type LookupTest struct {
+-	lookup []lookupStrings
+-	n      int
+-	tries  contractTrieSet
+-}
+-
+-var lookupTests = []LookupTest{
+-	{[]lookupStrings{
+-		{"abc", 1, 3},
+-		{"a", 0, 0},
+-		{"b", 0, 0},
+-		{"c", 0, 0},
+-		{"d", 0, 0},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, 0xFF},
+-			{'b', 0, 1, 0xFF},
+-			{'c', 'c', 0, 1},
+-		},
+-	},
+-	{[]lookupStrings{
+-		{"abc", 1, 3},
+-		{"abd", 2, 3},
+-		{"abe", 3, 3},
+-		{"a", 0, 0},
+-		{"ab", 0, 0},
+-		{"d", 0, 0},
+-		{"f", 0, 0},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, 0xFF},
+-			{'b', 0, 1, 0xFF},
+-			{'c', 'e', 0, 1},
+-		},
+-	},
+-	{[]lookupStrings{
+-		{"abc", 1, 3},
+-		{"ab", 2, 2},
+-		{"a", 3, 1},
+-		{"abcd", 1, 3},
+-		{"abe", 2, 2},
+-	},
+-		1,
+-		contractTrieSet{
+-			{'a', 0, 1, 3},
+-			{'b', 0, 1, 2},
+-			{'c', 'c', 0, 1},
+-		},
+-	},
+-	{[]lookupStrings{
+-		{"abc", 1, 3},
+-		{"abd", 2, 3},
+-		{"ab", 3, 2},
+-		{"ac", 4, 2},
+-		{"a", 5, 1},
+-		{"b", 6, 1},
+-		{"ba", 6, 1},
+-	},
+-		2,
+-		contractTrieSet{
+-			{'b', 'b', 0, 6},
+-			{'a', 0, 2, 5},
+-			{'c', 'c', 0, 4},
+-			{'b', 0, 1, 3},
+-			{'c', 'd', 0, 1},
+-		},
+-	},
+-	{[]lookupStrings{
+-		{"bcde", 2, 4},
+-		{"bc", 7, 2},
+-		{"ab", 6, 2},
+-		{"bcd", 5, 3},
+-		{"abcd", 1, 4},
+-		{"abc", 4, 3},
+-		{"bcdf", 3, 4},
+-	},
+-		2,
+-		contractTrieSet{
+-			{'b', 3, 1, 0xFF},
+-			{'a', 0, 1, 0xFF},
+-			{'b', 0, 1, 6},
+-			{'c', 0, 1, 4},
+-			{'d', 'd', 0, 1},
+-			{'c', 0, 1, 7},
+-			{'d', 0, 1, 5},
+-			{'e', 'f', 0, 2},
+-		},
+-	},
+-}
+-
+-func lookup(c *contractTrieSet, nnode int, s []uint8) (i, n int) {
+-	scan := c.scanner(0, nnode, s)
+-	scan.scan(0)
+-	return scan.result()
+-}
+-
+-func TestLookupContraction(t *testing.T) {
+-	for i, tt := range lookupTests {
+-		cts := contractTrieSet(tt.tries)
+-		for j, lu := range tt.lookup {
+-			str := lu.str
+-			for _, s := range []string{str, str + "X"} {
+-				const msg = `%d:%d: %s of "%s" %v; want %v`
+-				offset, n := lookup(&cts, tt.n, []byte(s))
+-				if offset != lu.offset {
+-					t.Errorf(msg, i, j, "offset", s, offset, lu.offset)
+-				}
+-				if n != lu.n {
+-					t.Errorf(msg, i, j, "bytes consumed", s, n, len(str))
+-				}
+-			}
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/export.go gcc-4.8.1/libgo/go/exp/locale/collate/export.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/export.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/export.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,36 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-// Init is for internal use only.
+-func Init(data interface{}) Weigher {
+-	init, ok := data.(tableInitializer)
+-	if !ok {
+-		return nil
+-	}
+-	t := &table{}
+-	loff, voff := init.FirstBlockOffsets()
+-	t.index.index = init.TrieIndex()
+-	t.index.index0 = t.index.index[blockSize*int(loff):]
+-	t.index.values = init.TrieValues()
+-	t.index.values0 = t.index.values[blockSize*int(voff):]
+-	t.expandElem = init.ExpandElems()
+-	t.contractTries = init.ContractTries()
+-	t.contractElem = init.ContractElems()
+-	t.maxContractLen = init.MaxContractLen()
+-	t.variableTop = init.VariableTop()
+-	return t
+-}
+-
+-type tableInitializer interface {
+-	TrieIndex() []uint16
+-	TrieValues() []uint32
+-	FirstBlockOffsets() (lookup, value uint16)
+-	ExpandElems() []uint32
+-	ContractTries() []struct{ l, h, n, i uint8 }
+-	ContractElems() []uint32
+-	MaxContractLen() int
+-	VariableTop() uint32
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/export_test.go gcc-4.8.1/libgo/go/exp/locale/collate/export_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/export_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/export_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,90 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-// Export for testing.
+-
+-import (
+-	"fmt"
+-)
+-
+-type Weights struct {
+-	Primary, Secondary, Tertiary, Quaternary int
+-}
+-
+-func W(ce ...int) Weights {
+-	w := Weights{ce[0], defaultSecondary, defaultTertiary, 0}
+-	if len(ce) > 1 {
+-		w.Secondary = ce[1]
+-	}
+-	if len(ce) > 2 {
+-		w.Tertiary = ce[2]
+-	}
+-	if len(ce) > 3 {
+-		w.Quaternary = ce[3]
+-	} else if w.Tertiary != 0 {
+-		w.Quaternary = MaxQuaternary
+-	}
+-	return w
+-}
+-func (w Weights) String() string {
+-	return fmt.Sprintf("[%X.%X.%X.%X]", w.Primary, w.Secondary, w.Tertiary, w.Quaternary)
+-}
+-
+-type Table struct {
+-	t Weigher
+-}
+-
+-func GetTable(c *Collator) *Table {
+-	return &Table{c.t}
+-}
+-
+-func convertToWeights(ws []Elem) []Weights {
+-	out := make([]Weights, len(ws))
+-	for i, w := range ws {
+-		out[i] = Weights{int(w.Primary()), int(w.Secondary()), int(w.Tertiary()), int(w.Quaternary())}
+-	}
+-	return out
+-}
+-
+-func convertFromWeights(ws []Weights) []Elem {
+-	out := make([]Elem, len(ws))
+-	for i, w := range ws {
+-		out[i] = makeCE([]int{w.Primary, w.Secondary, w.Tertiary, 0})
+-		if out[i] == ceIgnore && w.Quaternary > 0 {
+-			out[i] = MakeQuaternary(w.Quaternary)
+-		}
+-	}
+-	return out
+-}
+-
+-func (t *Table) AppendNext(s []byte) ([]Weights, int) {
+-	w, n := t.t.AppendNext(nil, s)
+-	return convertToWeights(w), n
+-}
+-
+-func SetTop(c *Collator, top int) {
+-	if c.t == nil {
+-		c.t = &table{}
+-	}
+-	c.variableTop = uint32(top)
+-}
+-
+-func GetColElems(c *Collator, str []byte) []Weights {
+-	ce := c.getColElems(str)
+-	return convertToWeights(ce)
+-}
+-
+-func ProcessWeights(h AlternateHandling, top int, w []Weights) []Weights {
+-	in := convertFromWeights(w)
+-	processWeights(h, uint32(top), in)
+-	return convertToWeights(in)
+-}
+-
+-func KeyFromElems(c *Collator, buf *Buffer, w []Weights) []byte {
+-	k := len(buf.key)
+-	c.keyFromElems(buf, convertFromWeights(w))
+-	return buf.key[k:]
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/maketables.go gcc-4.8.1/libgo/go/exp/locale/collate/maketables.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/maketables.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/maketables.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,722 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-// Collation table generator.
+-// Data read from the web.
+-
+-package main
+-
+-import (
+-	"archive/zip"
+-	"bufio"
+-	"bytes"
+-	"encoding/xml"
+-	"exp/locale/collate"
+-	"exp/locale/collate/build"
+-	"flag"
+-	"fmt"
+-	"io"
+-	"io/ioutil"
+-	"log"
+-	"net/http"
+-	"os"
+-	"path"
+-	"regexp"
+-	"sort"
+-	"strconv"
+-	"strings"
+-	"unicode"
+-	"unicode/utf8"
+-)
+-
+-var (
+-	root = flag.String("root",
+-		"http://unicode.org/Public/UCA/"+unicode.Version+"/CollationAuxiliary.zip",
+-		`URL of the Default Unicode Collation Element Table (DUCET). This can be a zip
+-file containing the file allkeys_CLDR.txt or an allkeys.txt file.`)
+-	cldr = flag.String("cldr",
+-		"http://www.unicode.org/Public/cldr/22/core.zip",
+-		"URL of CLDR archive.")
+-	test = flag.Bool("test", false,
+-		"test existing tables; can be used to compare web data with package data.")
+-	localFiles = flag.Bool("local", false,
+-		"data files have been copied to the current directory; for debugging only.")
+-	short = flag.Bool("short", false, `Use "short" alternatives, when available.`)
+-	draft = flag.Bool("draft", false, `Use draft versions, when available.`)
+-	tags  = flag.String("tags", "", "build tags to be included after +build directive")
+-	pkg   = flag.String("package", "collate",
+-		"the name of the package in which the generated file is to be included")
+-
+-	tables = flagStringSetAllowAll("tables", "collate", "collate,chars",
+-		"comma-spearated list of tables to generate.")
+-	exclude = flagStringSet("exclude", "zh2", "",
+-		"comma-separated list of languages to exclude.")
+-	include = flagStringSet("include", "", "",
+-		"comma-separated list of languages to include. Include trumps exclude.")
+-	types = flagStringSetAllowAll("types", "", "",
+-		"comma-separated list of types that should be included in addition to the standard type.")
+-)
+-
+-// stringSet implements an ordered set based on a list.  It implements flag.Value
+-// to allow a set to be specified as a comma-separated list.
+-type stringSet struct {
+-	s        []string
+-	allowed  *stringSet
+-	dirty    bool // needs compaction if true
+-	all      bool
+-	allowAll bool
+-}
+-
+-func flagStringSet(name, def, allowed, usage string) *stringSet {
+-	ss := &stringSet{}
+-	if allowed != "" {
+-		usage += fmt.Sprintf(" (allowed values: any of %s)", allowed)
+-		ss.allowed = &stringSet{}
+-		failOnError(ss.allowed.Set(allowed))
+-	}
+-	ss.Set(def)
+-	flag.Var(ss, name, usage)
+-	return ss
+-}
+-
+-func flagStringSetAllowAll(name, def, allowed, usage string) *stringSet {
+-	ss := &stringSet{allowAll: true}
+-	if allowed == "" {
+-		flag.Var(ss, name, usage+fmt.Sprintf(` Use "all" to select all.`))
+-	} else {
+-		ss.allowed = &stringSet{}
+-		failOnError(ss.allowed.Set(allowed))
+-		flag.Var(ss, name, usage+fmt.Sprintf(` (allowed values: "all" or any of %s)`, allowed))
+-	}
+-	ss.Set(def)
+-	return ss
+-}
+-
+-func (ss stringSet) Len() int {
+-	return len(ss.s)
+-}
+-
+-func (ss stringSet) String() string {
+-	return strings.Join(ss.s, ",")
+-}
+-
+-func (ss *stringSet) Set(s string) error {
+-	if ss.allowAll && s == "all" {
+-		ss.s = nil
+-		ss.all = true
+-		return nil
+-	}
+-	ss.s = ss.s[:0]
+-	for _, s := range strings.Split(s, ",") {
+-		if s := strings.TrimSpace(s); s != "" {
+-			if ss.allowed != nil && !ss.allowed.contains(s) {
+-				return fmt.Errorf("unsupported value %q; must be one of %s", s, ss.allowed)
+-			}
+-			ss.add(s)
+-		}
+-	}
+-	ss.compact()
+-	return nil
+-}
+-
+-func (ss *stringSet) add(s string) {
+-	ss.s = append(ss.s, s)
+-	ss.dirty = true
+-}
+-
+-func (ss *stringSet) values() []string {
+-	ss.compact()
+-	return ss.s
+-}
+-
+-func (ss *stringSet) contains(s string) bool {
+-	if ss.all {
+-		return true
+-	}
+-	for _, v := range ss.s {
+-		if v == s {
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-func (ss *stringSet) compact() {
+-	if !ss.dirty {
+-		return
+-	}
+-	a := ss.s
+-	sort.Strings(a)
+-	k := 0
+-	for i := 1; i < len(a); i++ {
+-		if a[k] != a[i] {
+-			a[k+1] = a[i]
+-			k++
+-		}
+-	}
+-	ss.s = a[:k+1]
+-	ss.dirty = false
+-}
+-
+-func skipLang(l string) bool {
+-	if include.Len() > 0 {
+-		return !include.contains(l)
+-	}
+-	return exclude.contains(l)
+-}
+-
+-func skipAlt(a string) bool {
+-	if *draft && a == "proposed" {
+-		return false
+-	}
+-	if *short && a == "short" {
+-		return false
+-	}
+-	return true
+-}
+-
+-func failOnError(e error) {
+-	if e != nil {
+-		log.Panic(e)
+-	}
+-}
+-
+-// openReader opens the URL or file given by url and returns it as an io.ReadCloser
+-// or nil on error.
+-func openReader(url *string) (io.ReadCloser, error) {
+-	if *localFiles {
+-		pwd, _ := os.Getwd()
+-		*url = "file://" + path.Join(pwd, path.Base(*url))
+-	}
+-	t := &http.Transport{}
+-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
+-	c := &http.Client{Transport: t}
+-	resp, err := c.Get(*url)
+-	if err != nil {
+-		return nil, err
+-	}
+-	if resp.StatusCode != 200 {
+-		return nil, fmt.Errorf(`bad GET status for "%s": %s`, *url, resp.Status)
+-	}
+-	return resp.Body, nil
+-}
+-
+-func openArchive(url *string) *zip.Reader {
+-	f, err := openReader(url)
+-	failOnError(err)
+-	buffer, err := ioutil.ReadAll(f)
+-	f.Close()
+-	failOnError(err)
+-	archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
+-	failOnError(err)
+-	return archive
+-}
+-
+-// parseUCA parses a Default Unicode Collation Element Table of the format
+-// specified in http://www.unicode.org/reports/tr10/#File_Format.
+-// It returns the variable top.
+-func parseUCA(builder *build.Builder) {
+-	var r io.ReadCloser
+-	var err error
+-	if strings.HasSuffix(*root, ".zip") {
+-		for _, f := range openArchive(root).File {
+-			if strings.HasSuffix(f.Name, "allkeys_CLDR.txt") {
+-				r, err = f.Open()
+-			}
+-		}
+-		if r == nil {
+-			err = fmt.Errorf("file allkeys_CLDR.txt not found in archive %q", *root)
+-		}
+-	} else {
+-		r, err = openReader(root)
+-	}
+-	failOnError(err)
+-	defer r.Close()
+-	input := bufio.NewReader(r)
+-	colelem := regexp.MustCompile(`\[([.*])([0-9A-F.]+)\]`)
+-	for i := 1; err == nil; i++ {
+-		l, prefix, e := input.ReadLine()
+-		err = e
+-		line := string(l)
+-		if prefix {
+-			log.Fatalf("%d: buffer overflow", i)
+-		}
+-		if err != nil && err != io.EOF {
+-			log.Fatalf("%d: %v", i, err)
+-		}
+-		if len(line) == 0 || line[0] == '#' {
+-			continue
+-		}
+-		if line[0] == '@' {
+-			// parse properties
+-			switch {
+-			case strings.HasPrefix(line[1:], "version "):
+-				a := strings.Split(line[1:], " ")
+-				if a[1] != unicode.Version {
+-					log.Fatalf("incompatible version %s; want %s", a[1], unicode.Version)
+-				}
+-			case strings.HasPrefix(line[1:], "backwards "):
+-				log.Fatalf("%d: unsupported option backwards", i)
+-			default:
+-				log.Printf("%d: unknown option %s", i, line[1:])
+-			}
+-		} else {
+-			// parse entries
+-			part := strings.Split(line, " ; ")
+-			if len(part) != 2 {
+-				log.Fatalf("%d: production rule without ';': %v", i, line)
+-			}
+-			lhs := []rune{}
+-			for _, v := range strings.Split(part[0], " ") {
+-				if v == "" {
+-					continue
+-				}
+-				lhs = append(lhs, rune(convHex(i, v)))
+-			}
+-			var n int
+-			var vars []int
+-			rhs := [][]int{}
+-			for i, m := range colelem.FindAllStringSubmatch(part[1], -1) {
+-				n += len(m[0])
+-				elem := []int{}
+-				for _, h := range strings.Split(m[2], ".") {
+-					elem = append(elem, convHex(i, h))
+-				}
+-				if m[1] == "*" {
+-					vars = append(vars, i)
+-				}
+-				rhs = append(rhs, elem)
+-			}
+-			if len(part[1]) < n+3 || part[1][n+1] != '#' {
+-				log.Fatalf("%d: expected comment; found %s", i, part[1][n:])
+-			}
+-			if *test {
+-				testInput.add(string(lhs))
+-			}
+-			failOnError(builder.Add(lhs, rhs, vars))
+-		}
+-	}
+-}
+-
+-func convHex(line int, s string) int {
+-	r, e := strconv.ParseInt(s, 16, 32)
+-	if e != nil {
+-		log.Fatalf("%d: %v", line, e)
+-	}
+-	return int(r)
+-}
+-
+-var testInput = stringSet{}
+-
+-// LDML holds all collation information parsed from an LDML XML file.
+-// The format of these files is defined in http://unicode.org/reports/tr35/.
+-type LDML struct {
+-	XMLName   xml.Name `xml:"ldml"`
+-	Language  Attr     `xml:"identity>language"`
+-	Territory Attr     `xml:"identity>territory"`
+-	Chars     *struct {
+-		ExemplarCharacters []AttrValue `xml:"exemplarCharacters"`
+-		MoreInformaton     string      `xml:"moreInformation,omitempty"`
+-	} `xml:"characters"`
+-	Default    Attr        `xml:"collations>default"`
+-	Collations []Collation `xml:"collations>collation"`
+-}
+-
+-type Attr struct {
+-	XMLName xml.Name
+-	Attr    string `xml:"type,attr"`
+-}
+-
+-func (t Attr) String() string {
+-	return t.Attr
+-}
+-
+-type AttrValue struct {
+-	Type  string `xml:"type,attr"`
+-	Key   string `xml:"key,attr,omitempty"`
+-	Draft string `xml:"draft,attr,omitempty"`
+-	Value string `xml:",innerxml"`
+-}
+-
+-type Collation struct {
+-	Type                string    `xml:"type,attr"`
+-	Alt                 string    `xml:"alt,attr"`
+-	SuppressContraction string    `xml:"suppress_contractions,omitempty"`
+-	Settings            *Settings `xml:"settings"`
+-	Optimize            string    `xml:"optimize"`
+-	Rules               Rules     `xml:"rules"`
+-}
+-
+-type Optimize struct {
+-	XMLName xml.Name `xml:"optimize"`
+-	Data    string   `xml:"chardata"`
+-}
+-
+-type Suppression struct {
+-	XMLName xml.Name `xml:"suppress_contractions"`
+-	Data    string   `xml:"chardata"`
+-}
+-
+-type Settings struct {
+-	Strength            string `xml:"strenght,attr,omitempty"`
+-	Backwards           string `xml:"backwards,attr,omitempty"`
+-	Normalization       string `xml:"normalization,attr,omitempty"`
+-	CaseLevel           string `xml:"caseLevel,attr,omitempty"`
+-	CaseFirst           string `xml:"caseFirst,attr,omitempty"`
+-	HiraganaQuarternary string `xml:"hiraganaQuartenary,attr,omitempty"`
+-	Numeric             string `xml:"numeric,attr,omitempty"`
+-	VariableTop         string `xml:"variableTop,attr,omitempty"`
+-}
+-
+-type Rules struct {
+-	XMLName xml.Name   `xml:"rules"`
+-	Any     []RuleElem `xml:",any"`
+-}
+-
+-type RuleElem struct {
+-	XMLName xml.Name
+-	Value   string     `xml:",innerxml"`
+-	Before  string     `xml:"before,attr"`
+-	Any     []RuleElem `xml:",any"` // for <x> elements
+-}
+-
+-var charRe = regexp.MustCompile(`&#x([0-9A-F]*);`)
+-var tagRe = regexp.MustCompile(`<([a-z_]*)  */>`)
+-
+-func (r *RuleElem) rewrite() {
+-	// Convert hexadecimal Unicode codepoint notation to a string.
+-	if m := charRe.FindAllStringSubmatch(r.Value, -1); m != nil {
+-		runes := []rune{}
+-		for _, sa := range m {
+-			runes = append(runes, rune(convHex(-1, sa[1])))
+-		}
+-		r.Value = string(runes)
+-	}
+-	// Strip spaces from reset positions.
+-	if m := tagRe.FindStringSubmatch(r.Value); m != nil {
+-		r.Value = fmt.Sprintf("<%s/>", m[1])
+-	}
+-	for _, rr := range r.Any {
+-		rr.rewrite()
+-	}
+-}
+-
+-func decodeXML(f *zip.File) *LDML {
+-	r, err := f.Open()
+-	failOnError(err)
+-	d := xml.NewDecoder(r)
+-	var x LDML
+-	err = d.Decode(&x)
+-	failOnError(err)
+-	return &x
+-}
+-
+-var mainLocales = []string{}
+-
+-// charsets holds a list of exemplar characters per category.
+-type charSets map[string][]string
+-
+-func (p charSets) fprint(w io.Writer) {
+-	fmt.Fprintln(w, "[exN]string{")
+-	for i, k := range []string{"", "contractions", "punctuation", "auxiliary", "currencySymbol", "index"} {
+-		if set := p[k]; len(set) != 0 {
+-			fmt.Fprintf(w, "\t\t%d: %q,\n", i, strings.Join(set, " "))
+-		}
+-	}
+-	fmt.Fprintln(w, "\t},")
+-}
+-
+-var localeChars = make(map[string]charSets)
+-
+-const exemplarHeader = `
+-type exemplarType int
+-const (
+-	exCharacters exemplarType = iota
+-	exContractions
+-	exPunctuation
+-	exAuxiliary
+-	exCurrency
+-	exIndex
+-	exN
+-)
+-`
+-
+-func printExemplarCharacters(w io.Writer) {
+-	fmt.Fprintln(w, exemplarHeader)
+-	fmt.Fprintln(w, "var exemplarCharacters = map[string][exN]string{")
+-	for _, loc := range mainLocales {
+-		fmt.Fprintf(w, "\t%q: ", loc)
+-		localeChars[loc].fprint(w)
+-	}
+-	fmt.Fprintln(w, "}")
+-}
+-
+-var mainRe = regexp.MustCompile(`.*/main/(.*)\.xml`)
+-
+-// parseMain parses XML files in the main directory of the CLDR core.zip file.
+-func parseMain() {
+-	for _, f := range openArchive(cldr).File {
+-		if m := mainRe.FindStringSubmatch(f.Name); m != nil {
+-			locale := m[1]
+-			x := decodeXML(f)
+-			if skipLang(x.Language.Attr) {
+-				continue
+-			}
+-			if x.Chars != nil {
+-				for _, ec := range x.Chars.ExemplarCharacters {
+-					if ec.Draft != "" {
+-						continue
+-					}
+-					if _, ok := localeChars[locale]; !ok {
+-						mainLocales = append(mainLocales, locale)
+-						localeChars[locale] = make(charSets)
+-					}
+-					localeChars[locale][ec.Type] = parseCharacters(ec.Value)
+-				}
+-			}
+-		}
+-	}
+-}
+-
+-func parseCharacters(chars string) []string {
+-	parseSingle := func(s string) (r rune, tail string, escaped bool) {
+-		if s[0] == '\\' {
+-			if s[1] == 'u' || s[1] == 'U' {
+-				r, _, tail, err := strconv.UnquoteChar(s, 0)
+-				failOnError(err)
+-				return r, tail, false
+-			} else if strings.HasPrefix(s[1:], "&amp;") {
+-				return '&', s[6:], false
+-			}
+-			return rune(s[1]), s[2:], true
+-		} else if strings.HasPrefix(s, "&quot;") {
+-			return '"', s[6:], false
+-		}
+-		r, sz := utf8.DecodeRuneInString(s)
+-		return r, s[sz:], false
+-	}
+-	chars = strings.Trim(chars, "[ ]")
+-	list := []string{}
+-	var r, last, end rune
+-	for len(chars) > 0 {
+-		if chars[0] == '{' { // character sequence
+-			buf := []rune{}
+-			for chars = chars[1:]; len(chars) > 0; {
+-				r, chars, _ = parseSingle(chars)
+-				if r == '}' {
+-					break
+-				}
+-				if r == ' ' {
+-					log.Fatalf("space not supported in sequence %q", chars)
+-				}
+-				buf = append(buf, r)
+-			}
+-			list = append(list, string(buf))
+-			last = 0
+-		} else { // single character
+-			escaped := false
+-			r, chars, escaped = parseSingle(chars)
+-			if r != ' ' {
+-				if r == '-' && !escaped {
+-					if last == 0 {
+-						log.Fatal("'-' should be preceded by a character")
+-					}
+-					end, chars, _ = parseSingle(chars)
+-					for ; last <= end; last++ {
+-						list = append(list, string(last))
+-					}
+-					last = 0
+-				} else {
+-					list = append(list, string(r))
+-					last = r
+-				}
+-			}
+-		}
+-	}
+-	return list
+-}
+-
+-var fileRe = regexp.MustCompile(`.*/collation/(.*)\.xml`)
+-
+-// parseCollation parses XML files in the collation directory of the CLDR core.zip file.
+-func parseCollation(b *build.Builder) {
+-	for _, f := range openArchive(cldr).File {
+-		if m := fileRe.FindStringSubmatch(f.Name); m != nil {
+-			lang := m[1]
+-			x := decodeXML(f)
+-			if skipLang(x.Language.Attr) {
+-				continue
+-			}
+-			def := "standard"
+-			if x.Default.Attr != "" {
+-				def = x.Default.Attr
+-			}
+-			todo := make(map[string]Collation)
+-			for _, c := range x.Collations {
+-				if c.Type != def && !types.contains(c.Type) {
+-					continue
+-				}
+-				if c.Alt != "" && skipAlt(c.Alt) {
+-					continue
+-				}
+-				for j := range c.Rules.Any {
+-					c.Rules.Any[j].rewrite()
+-				}
+-				locale := lang
+-				if c.Type != def {
+-					locale += "_u_co_" + c.Type
+-				}
+-				_, exists := todo[locale]
+-				if c.Alt != "" || !exists {
+-					todo[locale] = c
+-				}
+-			}
+-			for _, c := range x.Collations {
+-				locale := lang
+-				if c.Type != def {
+-					locale += "_u_co_" + c.Type
+-				}
+-				if d, ok := todo[locale]; ok && d.Alt == c.Alt {
+-					insertCollation(b, locale, &c)
+-				}
+-			}
+-		}
+-	}
+-}
+-
+-var lmap = map[byte]collate.Level{
+-	'p': collate.Primary,
+-	's': collate.Secondary,
+-	't': collate.Tertiary,
+-	'i': collate.Identity,
+-}
+-
+-// cldrIndex is a Unicode-reserved sentinel value used.
+-// We ignore any rule that starts with this rune.
+-// See http://unicode.org/reports/tr35/#Collation_Elements for details.
+-const cldrIndex = 0xFDD0
+-
+-func insertTailoring(t *build.Tailoring, r RuleElem, context, extend string) {
+-	switch l := r.XMLName.Local; l {
+-	case "p", "s", "t", "i":
+-		if []rune(r.Value)[0] != cldrIndex {
+-			str := context + r.Value
+-			if *test {
+-				testInput.add(str)
+-			}
+-			err := t.Insert(lmap[l[0]], str, context+extend)
+-			failOnError(err)
+-		}
+-	case "pc", "sc", "tc", "ic":
+-		level := lmap[l[0]]
+-		for _, s := range r.Value {
+-			str := context + string(s)
+-			if *test {
+-				testInput.add(str)
+-			}
+-			err := t.Insert(level, str, context+extend)
+-			failOnError(err)
+-		}
+-	default:
+-		log.Fatalf("unsupported tag: %q", l)
+-	}
+-}
+-
+-func insertCollation(builder *build.Builder, locale string, c *Collation) {
+-	t := builder.Tailoring(locale)
+-	for _, r := range c.Rules.Any {
+-		switch r.XMLName.Local {
+-		case "reset":
+-			if r.Before == "" {
+-				failOnError(t.SetAnchor(r.Value))
+-			} else {
+-				failOnError(t.SetAnchorBefore(r.Value))
+-			}
+-		case "x":
+-			var context, extend string
+-			for _, r1 := range r.Any {
+-				switch r1.XMLName.Local {
+-				case "context":
+-					context = r1.Value
+-				case "extend":
+-					extend = r1.Value
+-				}
+-			}
+-			for _, r1 := range r.Any {
+-				if t := r1.XMLName.Local; t == "context" || t == "extend" {
+-					continue
+-				}
+-				insertTailoring(t, r1, context, extend)
+-			}
+-		default:
+-			insertTailoring(t, r, "", "")
+-		}
+-	}
+-}
+-
+-func testCollator(c *collate.Collator) {
+-	c0 := collate.New("")
+-
+-	// iterator over all characters for all locales and check
+-	// whether Key is equal.
+-	buf := collate.Buffer{}
+-
+-	// Add all common and not too uncommon runes to the test set.
+-	for i := rune(0); i < 0x30000; i++ {
+-		testInput.add(string(i))
+-	}
+-	for i := rune(0xE0000); i < 0xF0000; i++ {
+-		testInput.add(string(i))
+-	}
+-	for _, str := range testInput.values() {
+-		k0 := c0.KeyFromString(&buf, str)
+-		k := c.KeyFromString(&buf, str)
+-		if !bytes.Equal(k0, k) {
+-			failOnError(fmt.Errorf("test:%U: keys differ (%x vs %x)", []rune(str), k0, k))
+-		}
+-		buf.Reset()
+-	}
+-	fmt.Println("PASS")
+-}
+-
+-func main() {
+-	flag.Parse()
+-	b := build.NewBuilder()
+-	if *root != "" {
+-		parseUCA(b)
+-	}
+-	if *cldr != "" {
+-		if tables.contains("chars") {
+-			parseMain()
+-		}
+-		parseCollation(b)
+-	}
+-
+-	c, err := b.Build()
+-	failOnError(err)
+-
+-	if *test {
+-		testCollator(c)
+-	} else {
+-		fmt.Println("// Generated by running")
+-		fmt.Printf("//  maketables -root=%s -cldr=%s\n", *root, *cldr)
+-		fmt.Println("// DO NOT EDIT")
+-		fmt.Println("// TODO: implement more compact representation for sparse blocks.")
+-		if *tags != "" {
+-			fmt.Printf("// +build %s\n", *tags)
+-		}
+-		fmt.Println("")
+-		fmt.Printf("package %s\n", *pkg)
+-		if tables.contains("collate") {
+-			fmt.Println("")
+-			_, err = b.Print(os.Stdout)
+-			failOnError(err)
+-		}
+-		if tables.contains("chars") {
+-			printExemplarCharacters(os.Stdout)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/regtest.go gcc-4.8.1/libgo/go/exp/locale/collate/regtest.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/regtest.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/regtest.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,268 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-package main
+-
+-import (
+-	"archive/zip"
+-	"bufio"
+-	"bytes"
+-	"exp/locale/collate"
+-	"exp/locale/collate/build"
+-	"flag"
+-	"fmt"
+-	"io"
+-	"io/ioutil"
+-	"log"
+-	"net/http"
+-	"os"
+-	"path"
+-	"regexp"
+-	"strconv"
+-	"strings"
+-	"unicode"
+-	"unicode/utf8"
+-)
+-
+-// This regression test runs tests for the test files in CollationTest.zip
+-// (taken from http://www.unicode.org/Public/UCA/<unicode.Version>/).
+-//
+-// The test files have the following form:
+-// # header
+-// 0009 0021;	# ('\u0009') <CHARACTER TABULATION>	[| | | 0201 025E]
+-// 0009 003F;	# ('\u0009') <CHARACTER TABULATION>	[| | | 0201 0263]
+-// 000A 0021;	# ('\u000A') <LINE FEED (LF)>	[| | | 0202 025E]
+-// 000A 003F;	# ('\u000A') <LINE FEED (LF)>	[| | | 0202 0263]
+-//
+-// The part before the semicolon is the hex representation of a sequence
+-// of runes. After the hash mark is a comment. The strings
+-// represented by rune sequence are in the file in sorted order, as
+-// defined by the DUCET.
+-
+-var testdata = flag.String("testdata",
+-	"http://www.unicode.org/Public/UCA/"+unicode.Version+"/CollationTest.zip",
+-	"URL of Unicode collation tests zip file")
+-var ducet = flag.String("ducet",
+-	"http://unicode.org/Public/UCA/"+unicode.Version+"/allkeys.txt",
+-	"URL of the Default Unicode Collation Element Table (DUCET).")
+-var localFiles = flag.Bool("local",
+-	false,
+-	"data files have been copied to the current directory; for debugging only")
+-
+-type Test struct {
+-	name    string
+-	str     [][]byte
+-	comment []string
+-}
+-
+-var versionRe = regexp.MustCompile(`# UCA Version: (.*)\n?$`)
+-var testRe = regexp.MustCompile(`^([\dA-F ]+);.*# (.*)\n?$`)
+-
+-func Error(e error) {
+-	if e != nil {
+-		log.Fatal(e)
+-	}
+-}
+-
+-// openReader opens the url or file given by url and returns it as an io.ReadCloser
+-// or nil on error.
+-func openReader(url string) io.ReadCloser {
+-	if *localFiles {
+-		pwd, _ := os.Getwd()
+-		url = "file://" + path.Join(pwd, path.Base(url))
+-	}
+-	t := &http.Transport{}
+-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
+-	c := &http.Client{Transport: t}
+-	resp, err := c.Get(url)
+-	Error(err)
+-	if resp.StatusCode != 200 {
+-		Error(fmt.Errorf(`bad GET status for "%s": %s`, url, resp.Status))
+-	}
+-	return resp.Body
+-}
+-
+-// parseUCA parses a Default Unicode Collation Element Table of the format
+-// specified in http://www.unicode.org/reports/tr10/#File_Format.
+-// It returns the variable top.
+-func parseUCA(builder *build.Builder) {
+-	r := openReader(*ducet)
+-	defer r.Close()
+-	input := bufio.NewReader(r)
+-	colelem := regexp.MustCompile(`\[([.*])([0-9A-F.]+)\]`)
+-	for i := 1; true; i++ {
+-		l, prefix, err := input.ReadLine()
+-		if err == io.EOF {
+-			break
+-		}
+-		Error(err)
+-		line := string(l)
+-		if prefix {
+-			log.Fatalf("%d: buffer overflow", i)
+-		}
+-		if len(line) == 0 || line[0] == '#' {
+-			continue
+-		}
+-		if line[0] == '@' {
+-			if strings.HasPrefix(line[1:], "version ") {
+-				if v := strings.Split(line[1:], " ")[1]; v != unicode.Version {
+-					log.Fatalf("incompatible version %s; want %s", v, unicode.Version)
+-				}
+-			}
+-		} else {
+-			// parse entries
+-			part := strings.Split(line, " ; ")
+-			if len(part) != 2 {
+-				log.Fatalf("%d: production rule without ';': %v", i, line)
+-			}
+-			lhs := []rune{}
+-			for _, v := range strings.Split(part[0], " ") {
+-				if v != "" {
+-					lhs = append(lhs, rune(convHex(i, v)))
+-				}
+-			}
+-			vars := []int{}
+-			rhs := [][]int{}
+-			for i, m := range colelem.FindAllStringSubmatch(part[1], -1) {
+-				if m[1] == "*" {
+-					vars = append(vars, i)
+-				}
+-				elem := []int{}
+-				for _, h := range strings.Split(m[2], ".") {
+-					elem = append(elem, convHex(i, h))
+-				}
+-				rhs = append(rhs, elem)
+-			}
+-			builder.Add(lhs, rhs, vars)
+-		}
+-	}
+-}
+-
+-func convHex(line int, s string) int {
+-	r, e := strconv.ParseInt(s, 16, 32)
+-	if e != nil {
+-		log.Fatalf("%d: %v", line, e)
+-	}
+-	return int(r)
+-}
+-
+-func loadTestData() []Test {
+-	f := openReader(*testdata)
+-	buffer, err := ioutil.ReadAll(f)
+-	f.Close()
+-	Error(err)
+-	archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
+-	Error(err)
+-	tests := []Test{}
+-	for _, f := range archive.File {
+-		// Skip the short versions, which are simply duplicates of the long versions.
+-		if strings.Contains(f.Name, "SHORT") || f.FileInfo().IsDir() {
+-			continue
+-		}
+-		ff, err := f.Open()
+-		Error(err)
+-		defer ff.Close()
+-		input := bufio.NewReader(ff)
+-		test := Test{name: path.Base(f.Name)}
+-		for {
+-			line, err := input.ReadString('\n')
+-			if err != nil {
+-				if err == io.EOF {
+-					break
+-				}
+-				log.Fatal(err)
+-			}
+-			if len(line) <= 1 || line[0] == '#' {
+-				if m := versionRe.FindStringSubmatch(line); m != nil {
+-					if m[1] != unicode.Version {
+-						log.Printf("warning:%s: version is %s; want %s", f.Name, m[1], unicode.Version)
+-					}
+-				}
+-				continue
+-			}
+-			m := testRe.FindStringSubmatch(line)
+-			if m == nil || len(m) < 3 {
+-				log.Fatalf(`Failed to parse: "%s" result: %#v`, line, m)
+-			}
+-			str := []byte{}
+-			// In the regression test data (unpaired) surrogates are assigned a weight
+-			// corresponding to their code point value.  However, utf8.DecodeRune,
+-			// which is used to compute the implicit weight, assigns FFFD to surrogates.
+-			// We therefore skip tests with surrogates.  This skips about 35 entries
+-			// per test.
+-			valid := true
+-			for _, split := range strings.Split(m[1], " ") {
+-				r, err := strconv.ParseUint(split, 16, 64)
+-				Error(err)
+-				valid = valid && utf8.ValidRune(rune(r))
+-				str = append(str, string(rune(r))...)
+-			}
+-			if valid {
+-				test.str = append(test.str, str)
+-				test.comment = append(test.comment, m[2])
+-			}
+-		}
+-		tests = append(tests, test)
+-	}
+-	return tests
+-}
+-
+-var errorCount int
+-
+-func fail(t Test, pattern string, args ...interface{}) {
+-	format := fmt.Sprintf("error:%s:%s", t.name, pattern)
+-	log.Printf(format, args...)
+-	errorCount++
+-	if errorCount > 30 {
+-		log.Fatal("too many errors")
+-	}
+-}
+-
+-func runes(b []byte) []rune {
+-	return []rune(string(b))
+-}
+-
+-func doTest(t Test) {
+-	bld := build.NewBuilder()
+-	parseUCA(bld)
+-	c, err := bld.Build()
+-	Error(err)
+-	c.Strength = collate.Tertiary
+-	c.Alternate = collate.AltShifted
+-	b := &collate.Buffer{}
+-	if strings.Contains(t.name, "NON_IGNOR") {
+-		c.Alternate = collate.AltNonIgnorable
+-	}
+-	prev := t.str[0]
+-	for i := 1; i < len(t.str); i++ {
+-		b.Reset()
+-		s := t.str[i]
+-		ka := c.Key(b, prev)
+-		kb := c.Key(b, s)
+-		if r := bytes.Compare(ka, kb); r == 1 {
+-			fail(t, "%d: Key(%.4X) < Key(%.4X) (%X < %X) == %d; want -1 or 0", i, []rune(string(prev)), []rune(string(s)), ka, kb, r)
+-			prev = s
+-			continue
+-		}
+-		if r := c.Compare(prev, s); r == 1 {
+-			fail(t, "%d: Compare(%.4X, %.4X) == %d; want -1 or 0", i, runes(prev), runes(s), r)
+-		}
+-		if r := c.Compare(s, prev); r == -1 {
+-			fail(t, "%d: Compare(%.4X, %.4X) == %d; want 1 or 0", i, runes(s), runes(prev), r)
+-		}
+-		prev = s
+-	}
+-}
+-
+-func main() {
+-	flag.Parse()
+-	for _, test := range loadTestData() {
+-		doTest(test)
+-	}
+-	if errorCount == 0 {
+-		fmt.Println("PASS")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/sort.go gcc-4.8.1/libgo/go/exp/locale/collate/sort.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/sort.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/sort.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,90 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"bytes"
+-	"sort"
+-)
+-
+-const (
+-	maxSortBuffer  = 40960
+-	maxSortEntries = 4096
+-)
+-
+-type swapper interface {
+-	Swap(i, j int)
+-}
+-
+-type sorter struct {
+-	buf  *Buffer
+-	keys [][]byte
+-	src  swapper
+-}
+-
+-func (s *sorter) init(n int) {
+-	if s.buf == nil {
+-		s.buf = &Buffer{}
+-		s.buf.init()
+-	}
+-	if cap(s.keys) < n {
+-		s.keys = make([][]byte, n)
+-	}
+-	s.keys = s.keys[0:n]
+-}
+-
+-func (s *sorter) clean() {
+-	if len(s.buf.key) > maxSortBuffer {
+-		s.buf.key = s.buf.buf[:0]
+-	}
+-	if len(s.keys) > maxSortEntries {
+-		s.keys = nil
+-	}
+-}
+-
+-func (s *sorter) sort(src swapper) {
+-	s.src = src
+-	sort.Sort(s)
+-}
+-
+-func (s sorter) Len() int {
+-	return len(s.keys)
+-}
+-
+-func (s sorter) Less(i, j int) bool {
+-	return bytes.Compare(s.keys[i], s.keys[j]) == -1
+-}
+-
+-func (s sorter) Swap(i, j int) {
+-	s.keys[i], s.keys[j] = s.keys[j], s.keys[i]
+-	s.src.Swap(i, j)
+-}
+-
+-// A Lister can be sorted by Collator's Sort method.
+-type Lister interface {
+-	Len() int
+-	Swap(i, j int)
+-	// Bytes returns the bytes of the text at index i.
+-	Bytes(i int) []byte
+-}
+-
+-// Sort uses sort.Sort to sort the strings represented by x using the rules of c.
+-func (c *Collator) Sort(x Lister) {
+-	n := x.Len()
+-	c.sorter.init(n)
+-	for i := 0; i < n; i++ {
+-		c.sorter.keys[i] = c.Key(c.sorter.buf, x.Bytes(i))
+-	}
+-	c.sorter.sort(x)
+-}
+-
+-// Strings sorts x using the rules of c.
+-func (c *Collator) Strings(x []string) {
+-	c.sorter.init(len(x))
+-	for i, s := range x {
+-		c.sorter.keys[i] = c.KeyFromString(c.sorter.buf, s)
+-	}
+-	c.sorter.sort(sort.StringSlice(x))
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/sort_test.go gcc-4.8.1/libgo/go/exp/locale/collate/sort_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/sort_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/sort_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,52 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate_test
+-
+-import (
+-	"exp/locale/collate"
+-	"fmt"
+-	"testing"
+-)
+-
+-func ExampleCollator_Strings() {
+-	c := collate.New("root")
+-	strings := []string{
+-		"ad",
+-		"Ã€b",
+-		"ac",
+-	}
+-	c.Strings(strings)
+-	fmt.Println(strings)
+-	// Output: [Ã€b ac ad]
+-}
+-
+-type sorter []string
+-
+-func (s sorter) Len() int {
+-	return len(s)
+-}
+-
+-func (s sorter) Swap(i, j int) {
+-	s[j], s[i] = s[i], s[j]
+-}
+-
+-func (s sorter) Bytes(i int) []byte {
+-	return []byte(s[i])
+-}
+-
+-func TestSort(t *testing.T) {
+-	c := collate.New("en")
+-	strings := []string{
+-		"bcd",
+-		"abc",
+-		"ddd",
+-	}
+-	c.Sort(sorter(strings))
+-	res := fmt.Sprint(strings)
+-	want := "[abc bcd ddd]"
+-	if res != want {
+-		t.Errorf("found %s; want %s", res, want)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/table.go gcc-4.8.1/libgo/go/exp/locale/collate/table.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/table.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/table.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,317 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"exp/norm"
+-	"unicode/utf8"
+-)
+-
+-// tableIndex holds information for constructing a table
+-// for a certain locale based on the main table.
+-type tableIndex struct {
+-	lookupOffset uint32
+-	valuesOffset uint32
+-}
+-
+-// table holds all collation data for a given collation ordering.
+-type table struct {
+-	index trie // main trie
+-
+-	// expansion info
+-	expandElem []uint32
+-
+-	// contraction info
+-	contractTries  contractTrieSet
+-	contractElem   []uint32
+-	maxContractLen int
+-	variableTop    uint32
+-}
+-
+-func (t *table) indexedTable(idx tableIndex) *table {
+-	nt := *t
+-	nt.index.index0 = t.index.index[idx.lookupOffset*blockSize:]
+-	nt.index.values0 = t.index.values[idx.valuesOffset*blockSize:]
+-	return &nt
+-}
+-
+-func (t *table) AppendNext(w []Elem, b []byte) (res []Elem, n int) {
+-	return t.appendNext(w, source{bytes: b})
+-}
+-
+-func (t *table) AppendNextString(w []Elem, s string) (res []Elem, n int) {
+-	return t.appendNext(w, source{str: s})
+-}
+-
+-func (t *table) Start(p int, b []byte) int {
+-	// TODO: implement
+-	panic("not implemented")
+-}
+-
+-func (t *table) StartString(p int, s string) int {
+-	// TODO: implement
+-	panic("not implemented")
+-}
+-
+-func (t *table) Domain() []string {
+-	// TODO: implement
+-	panic("not implemented")
+-}
+-
+-type source struct {
+-	str   string
+-	bytes []byte
+-}
+-
+-func (src *source) lookup(t *table) (ce Elem, sz int) {
+-	if src.bytes == nil {
+-		return t.index.lookupString(src.str)
+-	}
+-	return t.index.lookup(src.bytes)
+-}
+-
+-func (src *source) tail(sz int) {
+-	if src.bytes == nil {
+-		src.str = src.str[sz:]
+-	} else {
+-		src.bytes = src.bytes[sz:]
+-	}
+-}
+-
+-func (src *source) nfd(buf []byte, end int) []byte {
+-	if src.bytes == nil {
+-		return norm.NFD.AppendString(buf[:0], src.str[:end])
+-	}
+-	return norm.NFD.Append(buf[:0], src.bytes[:end]...)
+-}
+-
+-func (src *source) rune() (r rune, sz int) {
+-	if src.bytes == nil {
+-		return utf8.DecodeRuneInString(src.str)
+-	}
+-	return utf8.DecodeRune(src.bytes)
+-}
+-
+-func (src *source) properties(f norm.Form) norm.Properties {
+-	if src.bytes == nil {
+-		return f.PropertiesString(src.str)
+-	}
+-	return f.Properties(src.bytes)
+-}
+-
+-// appendNext appends the weights corresponding to the next rune or
+-// contraction in s.  If a contraction is matched to a discontinuous
+-// sequence of runes, the weights for the interstitial runes are
+-// appended as well.  It returns a new slice that includes the appended
+-// weights and the number of bytes consumed from s.
+-func (t *table) appendNext(w []Elem, src source) (res []Elem, n int) {
+-	ce, sz := src.lookup(t)
+-	tp := ce.ctype()
+-	if tp == ceNormal {
+-		if ce == 0 {
+-			r, _ := src.rune()
+-			const (
+-				hangulSize  = 3
+-				firstHangul = 0xAC00
+-				lastHangul  = 0xD7A3
+-			)
+-			if r >= firstHangul && r <= lastHangul {
+-				// TODO: performance can be considerably improved here.
+-				n = sz
+-				var buf [16]byte // Used for decomposing Hangul.
+-				for b := src.nfd(buf[:0], hangulSize); len(b) > 0; b = b[sz:] {
+-					ce, sz = t.index.lookup(b)
+-					w = append(w, ce)
+-				}
+-				return w, n
+-			}
+-			ce = makeImplicitCE(implicitPrimary(r))
+-		}
+-		w = append(w, ce)
+-	} else if tp == ceExpansionIndex {
+-		w = t.appendExpansion(w, ce)
+-	} else if tp == ceContractionIndex {
+-		n := 0
+-		src.tail(sz)
+-		if src.bytes == nil {
+-			w, n = t.matchContractionString(w, ce, src.str)
+-		} else {
+-			w, n = t.matchContraction(w, ce, src.bytes)
+-		}
+-		sz += n
+-	} else if tp == ceDecompose {
+-		// Decompose using NFKD and replace tertiary weights.
+-		t1, t2 := splitDecompose(ce)
+-		i := len(w)
+-		nfkd := src.properties(norm.NFKD).Decomposition()
+-		for p := 0; len(nfkd) > 0; nfkd = nfkd[p:] {
+-			w, p = t.appendNext(w, source{bytes: nfkd})
+-		}
+-		w[i] = w[i].updateTertiary(t1)
+-		if i++; i < len(w) {
+-			w[i] = w[i].updateTertiary(t2)
+-			for i++; i < len(w); i++ {
+-				w[i] = w[i].updateTertiary(maxTertiary)
+-			}
+-		}
+-	}
+-	return w, sz
+-}
+-
+-func (t *table) appendExpansion(w []Elem, ce Elem) []Elem {
+-	i := splitExpandIndex(ce)
+-	n := int(t.expandElem[i])
+-	i++
+-	for _, ce := range t.expandElem[i : i+n] {
+-		w = append(w, Elem(ce))
+-	}
+-	return w
+-}
+-
+-func (t *table) matchContraction(w []Elem, ce Elem, suffix []byte) ([]Elem, int) {
+-	index, n, offset := splitContractIndex(ce)
+-
+-	scan := t.contractTries.scanner(index, n, suffix)
+-	buf := [norm.MaxSegmentSize]byte{}
+-	bufp := 0
+-	p := scan.scan(0)
+-
+-	if !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {
+-		// By now we should have filtered most cases.
+-		p0 := p
+-		bufn := 0
+-		rune := norm.NFD.Properties(suffix[p:])
+-		p += rune.Size()
+-		if rune.LeadCCC() != 0 {
+-			prevCC := rune.TrailCCC()
+-			// A gap may only occur in the last normalization segment.
+-			// This also ensures that len(scan.s) < norm.MaxSegmentSize.
+-			if end := norm.NFD.FirstBoundary(suffix[p:]); end != -1 {
+-				scan.s = suffix[:p+end]
+-			}
+-			for p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {
+-				rune = norm.NFD.Properties(suffix[p:])
+-				if ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {
+-					break
+-				}
+-				prevCC = rune.TrailCCC()
+-				if pp := scan.scan(p); pp != p {
+-					// Copy the interstitial runes for later processing.
+-					bufn += copy(buf[bufn:], suffix[p0:p])
+-					if scan.pindex == pp {
+-						bufp = bufn
+-					}
+-					p, p0 = pp, pp
+-				} else {
+-					p += rune.Size()
+-				}
+-			}
+-		}
+-	}
+-	// Append weights for the matched contraction, which may be an expansion.
+-	i, n := scan.result()
+-	ce = Elem(t.contractElem[i+offset])
+-	if ce.ctype() == ceNormal {
+-		w = append(w, ce)
+-	} else {
+-		w = t.appendExpansion(w, ce)
+-	}
+-	// Append weights for the runes in the segment not part of the contraction.
+-	for b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {
+-		w, p = t.appendNext(w, source{bytes: b})
+-	}
+-	return w, n
+-}
+-
+-// TODO: unify the two implementations. This is best done after first simplifying
+-// the algorithm taking into account the inclusion of both NFC and NFD forms
+-// in the table.
+-func (t *table) matchContractionString(w []Elem, ce Elem, suffix string) ([]Elem, int) {
+-	index, n, offset := splitContractIndex(ce)
+-
+-	scan := t.contractTries.scannerString(index, n, suffix)
+-	buf := [norm.MaxSegmentSize]byte{}
+-	bufp := 0
+-	p := scan.scan(0)
+-
+-	if !scan.done && p < len(suffix) && suffix[p] >= utf8.RuneSelf {
+-		// By now we should have filtered most cases.
+-		p0 := p
+-		bufn := 0
+-		rune := norm.NFD.PropertiesString(suffix[p:])
+-		p += rune.Size()
+-		if rune.LeadCCC() != 0 {
+-			prevCC := rune.TrailCCC()
+-			// A gap may only occur in the last normalization segment.
+-			// This also ensures that len(scan.s) < norm.MaxSegmentSize.
+-			if end := norm.NFD.FirstBoundaryInString(suffix[p:]); end != -1 {
+-				scan.s = suffix[:p+end]
+-			}
+-			for p < len(suffix) && !scan.done && suffix[p] >= utf8.RuneSelf {
+-				rune = norm.NFD.PropertiesString(suffix[p:])
+-				if ccc := rune.LeadCCC(); ccc == 0 || prevCC >= ccc {
+-					break
+-				}
+-				prevCC = rune.TrailCCC()
+-				if pp := scan.scan(p); pp != p {
+-					// Copy the interstitial runes for later processing.
+-					bufn += copy(buf[bufn:], suffix[p0:p])
+-					if scan.pindex == pp {
+-						bufp = bufn
+-					}
+-					p, p0 = pp, pp
+-				} else {
+-					p += rune.Size()
+-				}
+-			}
+-		}
+-	}
+-	// Append weights for the matched contraction, which may be an expansion.
+-	i, n := scan.result()
+-	ce = Elem(t.contractElem[i+offset])
+-	if ce.ctype() == ceNormal {
+-		w = append(w, ce)
+-	} else {
+-		w = t.appendExpansion(w, ce)
+-	}
+-	// Append weights for the runes in the segment not part of the contraction.
+-	for b, p := buf[:bufp], 0; len(b) > 0; b = b[p:] {
+-		w, p = t.appendNext(w, source{bytes: b})
+-	}
+-	return w, n
+-}
+-
+-// TODO: this should stay after the rest of this file is moved to colltab
+-func (t tableIndex) TrieIndex() []uint16 {
+-	return mainLookup[:]
+-}
+-
+-func (t tableIndex) TrieValues() []uint32 {
+-	return mainValues[:]
+-}
+-
+-func (t tableIndex) FirstBlockOffsets() (lookup, value uint16) {
+-	return uint16(t.lookupOffset), uint16(t.valuesOffset)
+-}
+-
+-func (t tableIndex) ExpandElems() []uint32 {
+-	return mainExpandElem[:]
+-}
+-
+-func (t tableIndex) ContractTries() []struct{ l, h, n, i uint8 } {
+-	return mainCTEntries[:]
+-}
+-
+-func (t tableIndex) ContractElems() []uint32 {
+-	return mainContractElem[:]
+-}
+-
+-func (t tableIndex) MaxContractLen() int {
+-	return 18
+-}
+-
+-func (t tableIndex) VariableTop() uint32 {
+-	return 0x30E
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tables.go gcc-4.8.1/libgo/go/exp/locale/collate/tables.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tables.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tables.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,51896 +0,0 @@
+-// Generated by running
+-//  maketables -root=http://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/22/core.zip
+-// DO NOT EDIT
+-// TODO: implement more compact representation for sparse blocks.
+-
+-package collate
+-
+-var availableLocales = []string{"af", "ar", "as", "az", "be", "bg", "bn", "ca", "cs", "cy", "da", "de", "dz", "ee", "el", "en_US_POSIX", "eo", "es", "et", "fa", "fi", "fil", "fo", "fr_CA", "gu", "ha", "haw", "he", "hi", "hr", "hu", "hy", "ig", "is", "ja", "kk", "kl", "km", "kn", "ko", "kok", "ln", "lt", "lv", "mk", "ml", "mr", "mt", "my", "nb", "nn", "nso", "om", "or", "pa", "pl", "ps", "ro", "root", "ru", "se", "si", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tn", "to", "tr", "uk", "ur", "vi", "wae", "yo", "zh"}
+-
+-var locales = map[string]tableIndex{
+-	"af": {
+-		lookupOffset: 0x16,
+-		valuesOffset: 0x0,
+-	},
+-	"ar": {
+-		lookupOffset: 0x18,
+-		valuesOffset: 0x0,
+-	},
+-	"as": {
+-		lookupOffset: 0x1a,
+-		valuesOffset: 0x0,
+-	},
+-	"az": {
+-		lookupOffset: 0x20,
+-		valuesOffset: 0x1c0,
+-	},
+-	"be": {
+-		lookupOffset: 0x21,
+-		valuesOffset: 0x0,
+-	},
+-	"bg": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"bn": {
+-		lookupOffset: 0x23,
+-		valuesOffset: 0x0,
+-	},
+-	"ca": {
+-		lookupOffset: 0x24,
+-		valuesOffset: 0x1d5,
+-	},
+-	"cs": {
+-		lookupOffset: 0x26,
+-		valuesOffset: 0x1d9,
+-	},
+-	"cy": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x1de,
+-	},
+-	"da": {
+-		lookupOffset: 0x29,
+-		valuesOffset: 0x1e0,
+-	},
+-	"de": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"dz": {
+-		lookupOffset: 0x2b,
+-		valuesOffset: 0x0,
+-	},
+-	"ee": {
+-		lookupOffset: 0x31,
+-		valuesOffset: 0x1ed,
+-	},
+-	"el": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"en_US_POSIX": {
+-		lookupOffset: 0x38,
+-		valuesOffset: 0x1fc,
+-	},
+-	"eo": {
+-		lookupOffset: 0x39,
+-		valuesOffset: 0x21b,
+-	},
+-	"es": {
+-		lookupOffset: 0x3a,
+-		valuesOffset: 0x21f,
+-	},
+-	"et": {
+-		lookupOffset: 0x40,
+-		valuesOffset: 0x222,
+-	},
+-	"fa": {
+-		lookupOffset: 0x42,
+-		valuesOffset: 0x0,
+-	},
+-	"fi": {
+-		lookupOffset: 0x45,
+-		valuesOffset: 0x23a,
+-	},
+-	"fil": {
+-		lookupOffset: 0x3a,
+-		valuesOffset: 0x245,
+-	},
+-	"fo": {
+-		lookupOffset: 0x29,
+-		valuesOffset: 0x1e0,
+-	},
+-	"fr_CA": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"gu": {
+-		lookupOffset: 0x47,
+-		valuesOffset: 0x0,
+-	},
+-	"ha": {
+-		lookupOffset: 0x48,
+-		valuesOffset: 0x248,
+-	},
+-	"haw": {
+-		lookupOffset: 0x4f,
+-		valuesOffset: 0x24d,
+-	},
+-	"he": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"hi": {
+-		lookupOffset: 0x51,
+-		valuesOffset: 0x0,
+-	},
+-	"hr": {
+-		lookupOffset: 0x53,
+-		valuesOffset: 0x264,
+-	},
+-	"hu": {
+-		lookupOffset: 0x55,
+-		valuesOffset: 0x26a,
+-	},
+-	"hy": {
+-		lookupOffset: 0x56,
+-		valuesOffset: 0x0,
+-	},
+-	"ig": {
+-		lookupOffset: 0x58,
+-		valuesOffset: 0x272,
+-	},
+-	"is": {
+-		lookupOffset: 0x5a,
+-		valuesOffset: 0x276,
+-	},
+-	"ja": {
+-		lookupOffset: 0x66,
+-		valuesOffset: 0x0,
+-	},
+-	"kk": {
+-		lookupOffset: 0x67,
+-		valuesOffset: 0x0,
+-	},
+-	"kl": {
+-		lookupOffset: 0x68,
+-		valuesOffset: 0x3e7,
+-	},
+-	"km": {
+-		lookupOffset: 0x6a,
+-		valuesOffset: 0x0,
+-	},
+-	"kn": {
+-		lookupOffset: 0x6c,
+-		valuesOffset: 0x0,
+-	},
+-	"ko": {
+-		lookupOffset: 0x78,
+-		valuesOffset: 0x0,
+-	},
+-	"kok": {
+-		lookupOffset: 0x7a,
+-		valuesOffset: 0x0,
+-	},
+-	"ln": {
+-		lookupOffset: 0x7b,
+-		valuesOffset: 0x0,
+-	},
+-	"lt": {
+-		lookupOffset: 0x81,
+-		valuesOffset: 0x545,
+-	},
+-	"lv": {
+-		lookupOffset: 0x83,
+-		valuesOffset: 0x553,
+-	},
+-	"mk": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"ml": {
+-		lookupOffset: 0x85,
+-		valuesOffset: 0x0,
+-	},
+-	"mr": {
+-		lookupOffset: 0x87,
+-		valuesOffset: 0x0,
+-	},
+-	"mt": {
+-		lookupOffset: 0x8a,
+-		valuesOffset: 0x55b,
+-	},
+-	"my": {
+-		lookupOffset: 0x8c,
+-		valuesOffset: 0x0,
+-	},
+-	"nb": {
+-		lookupOffset: 0x29,
+-		valuesOffset: 0x564,
+-	},
+-	"nn": {
+-		lookupOffset: 0x29,
+-		valuesOffset: 0x564,
+-	},
+-	"nso": {
+-		lookupOffset: 0x8e,
+-		valuesOffset: 0x566,
+-	},
+-	"om": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x56c,
+-	},
+-	"or": {
+-		lookupOffset: 0x90,
+-		valuesOffset: 0x0,
+-	},
+-	"pa": {
+-		lookupOffset: 0x92,
+-		valuesOffset: 0x0,
+-	},
+-	"pl": {
+-		lookupOffset: 0x94,
+-		valuesOffset: 0x572,
+-	},
+-	"ps": {
+-		lookupOffset: 0x97,
+-		valuesOffset: 0x0,
+-	},
+-	"ro": {
+-		lookupOffset: 0x99,
+-		valuesOffset: 0x584,
+-	},
+-	"root": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"ru": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"se": {
+-		lookupOffset: 0x9b,
+-		valuesOffset: 0x58b,
+-	},
+-	"si": {
+-		lookupOffset: 0x9d,
+-		valuesOffset: 0x0,
+-	},
+-	"sk": {
+-		lookupOffset: 0x9f,
+-		valuesOffset: 0x598,
+-	},
+-	"sl": {
+-		lookupOffset: 0xa0,
+-		valuesOffset: 0x59d,
+-	},
+-	"sq": {
+-		lookupOffset: 0xa2,
+-		valuesOffset: 0x5a0,
+-	},
+-	"sr": {
+-		lookupOffset: 0x15,
+-		valuesOffset: 0x0,
+-	},
+-	"sv": {
+-		lookupOffset: 0xa4,
+-		valuesOffset: 0x5a4,
+-	},
+-	"ta": {
+-		lookupOffset: 0xa6,
+-		valuesOffset: 0x0,
+-	},
+-	"te": {
+-		lookupOffset: 0xa8,
+-		valuesOffset: 0x0,
+-	},
+-	"th": {
+-		lookupOffset: 0xaa,
+-		valuesOffset: 0x0,
+-	},
+-	"tn": {
+-		lookupOffset: 0x8e,
+-		valuesOffset: 0x566,
+-	},
+-	"to": {
+-		lookupOffset: 0xac,
+-		valuesOffset: 0x5af,
+-	},
+-	"tr": {
+-		lookupOffset: 0xb2,
+-		valuesOffset: 0x5bb,
+-	},
+-	"uk": {
+-		lookupOffset: 0xb3,
+-		valuesOffset: 0x0,
+-	},
+-	"ur": {
+-		lookupOffset: 0xb5,
+-		valuesOffset: 0x0,
+-	},
+-	"vi": {
+-		lookupOffset: 0xb7,
+-		valuesOffset: 0x5ca,
+-	},
+-	"wae": {
+-		lookupOffset: 0xb8,
+-		valuesOffset: 0x5de,
+-	},
+-	"yo": {
+-		lookupOffset: 0xba,
+-		valuesOffset: 0x5e1,
+-	},
+-	"zh": {
+-		lookupOffset: 0xd4,
+-		valuesOffset: 0x5e6,
+-	},
+-}
+-
+-// mainExpandElem: 45432 entries, 181728 bytes
+-var mainExpandElem = [45432]uint32{
+-	// Block 0, offset 0x0
+-	0x00000002, 0xAE604702, 0xAE603202, 0x00000002, 0xA000A51A, 0xA000BA1A,
+-	0x00000002, 0xA000A91A, 0xA000BA1A, 0x00000002, 0xA000AD1A, 0xA000BA1A,
+-	0x00000002, 0xA000B21A, 0xA000BA1A, 0x00000002, 0xA000B61A, 0xA000BA1A,
+-	0x00000002, 0xA000BA1A, 0xA000D11A, 0x00000004, 0x0003F484, 0x0029CE84,
+-	0x0029CC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029CE84,
+-	0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029D084, 0x0003F69F,
+-	0x00000004, 0x0003F484, 0x0029CE84, 0x0029D284, 0x0003F69F, 0x00000004,
+-	0x0003F484, 0x0029CE84, 0x0029D484, 0x0003F69F, 0x00000004, 0x0003F484,
+-	0x0029CE84, 0x0029D684, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,
+-	0x0029D884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DA84,
+-	0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84,
+-	// Block 1, offset 0x40
+-	0x0029DC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DE84,
+-	0x0003F69F, 0x00000004, 0x0003F484, 0x0029D084, 0x0029CC84, 0x0003F69F,
+-	0x00000004, 0x0003F484, 0x0062AC84, 0x0063A884, 0x0003F69F, 0x00000004,
+-	0x0003F484, 0x0062B084, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,
+-	0x0062B284, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B684,
+-	0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B884, 0x0063A884,
+-	0x0003F69F, 0x00000004, 0x0003F484, 0x0062BA84, 0x0063A884, 0x0003F69F,
+-	0x00000004, 0x0003F484, 0x0062BE84, 0x0063A884, 0x0003F69F, 0x00000004,
+-	0x0003F484, 0x0062C284, 0x0063A884, 0x0003F69F, 0x00000007, 0x0003F484,
+-	0x0062C284, 0x0063B884, 0x0062C484, 0x0063B084, 0x00646A84, 0x0003F69F,
+-	0x00000006, 0x0003F484, 0x0062C284, 0x0063B884,
+-	// Block 2, offset 0x80
+-	0x0062D084, 0x0063C284, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484,
+-	0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484, 0x0063C284,
+-	0x0003F69F, 0x00000004, 0x0003F484, 0x0062C884, 0x0063A884, 0x0003F69F,
+-	0x00000004, 0x0003F484, 0x0062CA84, 0x0063A884, 0x0003F69F, 0x00000004,
+-	0x0003F484, 0x0062CC84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484,
+-	0x0062CE84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062D084,
+-	0x0063A884, 0x0003F69F, 0x00000004, 0x00050E84, 0x00050E84, 0x00050E84,
+-	0x00050E9F, 0x00000002, 0x40062C20, 0xAE603202, 0x00000002, 0x40062C20,
+-	0xAE603502, 0x00000002, 0x40062C20, 0xAE604502, 0x00000002, 0x40063620,
+-	0xAE603202, 0x00000002, 0x40063620, 0xAE603502, 0x00000002, 0x40063620,
+-	0xAE604502, 0x00000002, 0x40063820, 0xAE603202,
+-	// Block 3, offset 0xc0
+-	0x00000002, 0x40063820, 0xAE603502, 0x00000002, 0x40063820, 0xAE604502,
+-	0x00000002, 0x40084420, 0xA0105402, 0x00000002, 0x40084620, 0xA0105402,
+-	0x00000002, 0x40084C20, 0xA0105402, 0x00000002, 0x4008B820, 0xA0105402,
+-	0x00000002, 0x4008BC20, 0xA0105402, 0x00000002, 0x4008C020, 0xA0105402,
+-	0x00000002, 0x40091E20, 0xA0105402, 0x00000002, 0x40092620, 0xA0105402,
+-	0x00000002, 0x40092A20, 0xA0105402, 0x00000002, 0x40094020, 0xA0105402,
+-	0x00000002, 0x40094220, 0xA0105402, 0x00000002, 0x40094420, 0xA0105402,
+-	0x00000002, 0x40097820, 0xA0105402, 0x00000002, 0x40097A20, 0xA0105402,
+-	0x00000004, 0x00098484, 0x00098484, 0x00098484, 0x0009849F, 0x00000002,
+-	0x40099E20, 0xA0105402, 0x00000002, 0x4009AA20, 0xA0105402, 0x00000002,
+-	0x4009AC20, 0xA0105402, 0x00000002, 0x4009B020,
+-	// Block 4, offset 0x100
+-	0xA0105402, 0x00000002, 0x4009B820, 0xA0105402, 0x00000002, 0x4009DE20,
+-	0xA0105402, 0x00000002, 0x4009E220, 0xA0105402, 0x00000002, 0x4009E420,
+-	0xA0105402, 0x00000002, 0x4009F420, 0xA0105402, 0x00000002, 0x4009F620,
+-	0xA0105402, 0x00000002, 0x4009F820, 0xA0105402, 0x00000002, 0x4009FA20,
+-	0xA0105402, 0x00000002, 0x4009FC20, 0xA0105402, 0x00000002, 0x4009FE20,
+-	0xA0105402, 0x00000002, 0x400A0020, 0xA0105402, 0x00000002, 0x400A0220,
+-	0xA0105402, 0x00000002, 0x400A0820, 0xA0105402, 0x00000002, 0x400A0A20,
+-	0xA0105402, 0x00000002, 0x400A0C20, 0xA0105402, 0x00000002, 0x400A0E20,
+-	0xA0105402, 0x00000002, 0x400A1E20, 0xA0105402, 0x00000002, 0x400A2020,
+-	0xA0105402, 0x00000002, 0x400A4020, 0xA0105402, 0x00000002, 0x400A4C20,
+-	0xA0105402, 0x00000002, 0x400A4E20, 0xA0105402,
+-	// Block 5, offset 0x140
+-	0x00000002, 0x400A5220, 0xA0105402, 0x00000002, 0x400A5820, 0xA0105402,
+-	0x00000002, 0x400A5A20, 0xA0105402, 0x00000002, 0x400A5C20, 0xA0105402,
+-	0x00000002, 0x400A5E20, 0xA0105402, 0x00000002, 0x40164620, 0xA0105402,
+-	0x00000002, 0x4027CE20, 0xA0012802, 0x00000002, 0x4027D020, 0xA0012802,
+-	0x00000002, 0x4027D420, 0xA0812802, 0x00000002, 0x4027D820, 0xA0812802,
+-	0x00000002, 0x4029CC20, 0xA0013F02, 0x00000002, 0x4029CC20, 0xA0014002,
+-	0x00000002, 0x4029CC20, 0xA0014202, 0x00000002, 0x4029CC20, 0xA0014402,
+-	0x00000002, 0x4029CC20, 0xA0014502, 0x00000002, 0x4029CC20, 0xA0014602,
+-	0x00000002, 0x4029CC20, 0xA0014702, 0x00000002, 0x4029CC20, 0xA0014802,
+-	0x00000002, 0x4029CC20, 0xA0014902, 0x00000002, 0x4029CC20, 0xA0014A02,
+-	0x00000002, 0x4029CC20, 0xA0014B02, 0x00000002,
+-	// Block 6, offset 0x180
+-	0x4029CC20, 0xA0014B02, 0x00000002, 0x4029CC20, 0xA0014C02, 0x00000002,
+-	0x4029CC20, 0xA0014D02, 0x00000002, 0x4029CC20, 0xA0014E02, 0x00000002,
+-	0x4029CC20, 0xA0014F02, 0x00000002, 0x4029CC20, 0xA0015002, 0x00000002,
+-	0x4029CC20, 0xA0015102, 0x00000002, 0x4029CC20, 0xA0015202, 0x00000002,
+-	0x4029CC20, 0xA0015302, 0x00000002, 0x4029CC20, 0xA0015402, 0x00000002,
+-	0x4029CC20, 0xA0015502, 0x00000002, 0x4029CC20, 0xA0015602, 0x00000002,
+-	0x0029CC84, 0xA0015604, 0x00000002, 0x4029CC20, 0xA0015702, 0x00000002,
+-	0x4029CC20, 0xA0015802, 0x00000002, 0x4029CC20, 0xA0015902, 0x00000002,
+-	0x4029CC20, 0xA0015A02, 0x00000002, 0x4029CC20, 0xA0015B02, 0x00000002,
+-	0x4029CC20, 0xA0015C02, 0x00000002, 0x4029CC20, 0xA0015D02, 0x00000002,
+-	0x4029CC20, 0xA0015E02, 0x00000002, 0x4029CC20,
+-	// Block 7, offset 0x1c0
+-	0xA0015F02, 0x00000002, 0x4029CC20, 0xA0016002, 0x00000002, 0x4029CC20,
+-	0xA0016102, 0x00000002, 0x4029CC20, 0xA0016202, 0x00000002, 0x4029CC20,
+-	0xA0016302, 0x00000002, 0x4029CC20, 0xA0016402, 0x00000002, 0x4029CC20,
+-	0xA0016502, 0x00000002, 0x4029CC20, 0xA0016602, 0x00000002, 0x4029CC20,
+-	0xA0016802, 0x00000002, 0x4029CC20, 0xA0017202, 0x00000002, 0x4029CC20,
+-	0xA0017302, 0x00000002, 0x4029CC20, 0xA0017402, 0x00000003, 0x0029CC9E,
+-	0x0009589E, 0x0029D29E, 0x00000002, 0x4029CE20, 0xA0013F02, 0x00000002,
+-	0x4029CE20, 0xA0014002, 0x00000002, 0x4029CE20, 0xA0014102, 0x00000002,
+-	0x4029CE20, 0xA0014202, 0x00000002, 0x4029CE20, 0xA0014302, 0x00000002,
+-	0x4029CE20, 0xA0014402, 0x00000002, 0x4029CE20, 0xA0014502, 0x00000002,
+-	0x4029CE20, 0xA0014602, 0x00000002, 0x4029CE20,
+-	// Block 8, offset 0x200
+-	0xA0014702, 0x00000002, 0x4029CE20, 0xA0014802, 0x00000002, 0x4029CE20,
+-	0xA0014902, 0x00000002, 0x4029CE20, 0xA0014A02, 0x00000002, 0x4029CE20,
+-	0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014B02, 0x00000002, 0x4029CE20,
+-	0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014C02, 0x00000002, 0x4029CE20,
+-	0xA0014D02, 0x00000002, 0x4029CE20, 0xA0014E02, 0x00000002, 0x4029CE20,
+-	0xA0014F02, 0x00000002, 0x4029CE20, 0xA0015002, 0x00000002, 0x4029CE20,
+-	0xA0015102, 0x00000002, 0x4029CE20, 0xA0015102, 0x00000002, 0x4029CE20,
+-	0xA0015202, 0x00000002, 0x4029CE20, 0xA0015302, 0x00000002, 0x4029CE20,
+-	0xA0015402, 0x00000002, 0x4029CE20, 0xA0015502, 0x00000002, 0x4029CE20,
+-	0xA0015602, 0x00000002, 0x0029CE84, 0xA0015604, 0x00000002, 0x4029CE20,
+-	0xA0015702, 0x00000002, 0x4029CE20, 0xA0015802,
+-	// Block 9, offset 0x240
+-	0x00000002, 0x4029CE20, 0xA0015902, 0x00000002, 0x4029CE20, 0xA0015A02,
+-	0x00000002, 0x4029CE20, 0xA0015B02, 0x00000002, 0x4029CE20, 0xA0015C02,
+-	0x00000002, 0x4029CE20, 0xA0015D02, 0x00000002, 0x4029CE20, 0xA0015E02,
+-	0x00000002, 0x4029CE20, 0xA0015F02, 0x00000002, 0x4029CE20, 0xA0016002,
+-	0x00000002, 0x4029CE20, 0xA0016102, 0x00000002, 0x4029CE20, 0xA0016202,
+-	0x00000002, 0x4029CE20, 0xA0016302, 0x00000002, 0x4029CE20, 0xA0016402,
+-	0x00000002, 0x4029CE20, 0xA0016502, 0x00000002, 0x4029CE20, 0xA0016602,
+-	0x00000002, 0x4029CE20, 0xA0016702, 0x00000002, 0x4029CE20, 0xA0016802,
+-	0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016802,
+-	0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016A02,
+-	0x00000002, 0x4029CE20, 0xA0016B02, 0x00000002,
+-	// Block 10, offset 0x280
+-	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+-	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+-	0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002,
+-	0x4029CE20, 0xA0016D02, 0x00000002, 0x4029CE20, 0xA0016E02, 0x00000002,
+-	0x4029CE20, 0xA0016F02, 0x00000002, 0x4029CE20, 0xA0017002, 0x00000002,
+-	0x4029CE20, 0xA0017102, 0x00000002, 0x4029CE20, 0xA0017202, 0x00000002,
+-	0x4029CE20, 0xA0017302, 0x00000002, 0x4029CE20, 0xA0017402, 0x00000002,
+-	0x4029CE20, 0xA0017502, 0x00000002, 0x4029CE20, 0xA0017602, 0x00000002,
+-	0x4029CE20, 0xA0017702, 0x00000004, 0x0029CE9E, 0x0009589E, 0x0029CE9E,
+-	0x0029CC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D09E, 0x00000003,
+-	0x0029CE9E, 0x0009589E, 0x0029D29E, 0x00000003,
+-	// Block 11, offset 0x2c0
+-	0x0029CE9E, 0x0009589E, 0x0029D49E, 0x00000003, 0x0029CE9E, 0x0009589E,
+-	0x0029D69E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D89E, 0x00000003,
+-	0x0029CE9E, 0x0009589E, 0x0029DA9E, 0x00000003, 0x0029CE9E, 0x0009589E,
+-	0x0029DC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029DE9E, 0x00000002,
+-	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,
+-	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002,
+-	0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CE86, 0x00000002,
+-	0x0029CE86, 0x0029D086, 0x00000002, 0x0029CE86, 0x0029D286, 0x00000002,
+-	0x0029CE86, 0x0029D486, 0x00000002, 0x0029CE86, 0x0029D686, 0x00000002,
+-	0x0029CE86, 0x0029D886, 0x00000002, 0x0029CE86, 0x0029DA86, 0x00000002,
+-	0x0029CE86, 0x0029DC86, 0x00000002, 0x0029CE86,
+-	// Block 12, offset 0x300
+-	0x0029DE86, 0x00000002, 0x4029D020, 0xA0013F02, 0x00000002, 0x4029D020,
+-	0xA0014002, 0x00000002, 0x4029D020, 0xA0014102, 0x00000002, 0x4029D020,
+-	0xA0014202, 0x00000002, 0x4029D020, 0xA0014302, 0x00000002, 0x4029D020,
+-	0xA0014402, 0x00000002, 0x4029D020, 0xA0014502, 0x00000002, 0x4029D020,
+-	0xA0014602, 0x00000002, 0x4029D020, 0xA0014702, 0x00000002, 0x4029D020,
+-	0xA0014802, 0x00000002, 0x4029D020, 0xA0014902, 0x00000002, 0x4029D020,
+-	0xA0014A02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,
+-	0xA0014B02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020,
+-	0xA0014C02, 0x00000002, 0x4029D020, 0xA0014D02, 0x00000002, 0x4029D020,
+-	0xA0014E02, 0x00000002, 0x4029D020, 0xA0014F02, 0x00000002, 0x4029D020,
+-	0xA0015002, 0x00000002, 0x4029D020, 0xA0015102,
+-	// Block 13, offset 0x340
+-	0x00000002, 0x4029D020, 0xA0015202, 0x00000002, 0x4029D020, 0xA0015302,
+-	0x00000002, 0x4029D020, 0xA0015402, 0x00000002, 0x4029D020, 0xA0015502,
+-	0x00000002, 0x4029D020, 0xA0015602, 0x00000002, 0x0029D084, 0xA0015604,
+-	0x00000002, 0x4029D020, 0xA0015702, 0x00000002, 0x4029D020, 0xA0015802,
+-	0x00000002, 0x4029D020, 0xA0015902, 0x00000002, 0x4029D020, 0xA0015A02,
+-	0x00000002, 0x4029D020, 0xA0015B02, 0x00000002, 0x4029D020, 0xA0015C02,
+-	0x00000002, 0x4029D020, 0xA0015D02, 0x00000002, 0x4029D020, 0xA0015E02,
+-	0x00000002, 0x4029D020, 0xA0015F02, 0x00000002, 0x4029D020, 0xA0016002,
+-	0x00000002, 0x4029D020, 0xA0016102, 0x00000002, 0x4029D020, 0xA0016202,
+-	0x00000002, 0x4029D020, 0xA0016302, 0x00000002, 0x4029D020, 0xA0016402,
+-	0x00000002, 0x4029D020, 0xA0016502, 0x00000002,
+-	// Block 14, offset 0x380
+-	0x4029D020, 0xA0016602, 0x00000002, 0x4029D020, 0xA0016702, 0x00000002,
+-	0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,
+-	0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002,
+-	0x4029D020, 0xA0016B02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+-	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+-	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+-	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+-	0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002,
+-	0x4029D020, 0xA0016E02, 0x00000002, 0x4029D020, 0xA0016F02, 0x00000002,
+-	0x4029D020, 0xA0017002, 0x00000002, 0x4029D020, 0xA0017102, 0x00000002,
+-	0x4029D020, 0xA0017202, 0x00000002, 0x4029D020,
+-	// Block 15, offset 0x3c0
+-	0xA0017302, 0x00000002, 0x4029D020, 0xA0017402, 0x00000002, 0x4029D020,
+-	0xA0017502, 0x00000002, 0x4029D020, 0xA0017602, 0x00000002, 0x4029D020,
+-	0xA0017702, 0x00000003, 0x0029D09E, 0x0009589E, 0x0029D29E, 0x00000003,
+-	0x0029D09E, 0x0009589E, 0x0029D69E, 0x00000002, 0x0029D086, 0x0029CC86,
+-	0x00000002, 0x0029D086, 0x0029CC86, 0x00000002, 0x4029D220, 0xA0013F02,
+-	0x00000002, 0x4029D220, 0xA0014002, 0x00000002, 0x4029D220, 0xA0014102,
+-	0x00000002, 0x4029D220, 0xA0014202, 0x00000002, 0x4029D220, 0xA0014302,
+-	0x00000002, 0x4029D220, 0xA0014402, 0x00000002, 0x4029D220, 0xA0014502,
+-	0x00000002, 0x4029D220, 0xA0014602, 0x00000002, 0x4029D220, 0xA0014702,
+-	0x00000002, 0x4029D220, 0xA0014802, 0x00000002, 0x4029D220, 0xA0014902,
+-	0x00000002, 0x4029D220, 0xA0014A02, 0x00000002,
+-	// Block 16, offset 0x400
+-	0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014B02, 0x00000002,
+-	0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014C02, 0x00000002,
+-	0x4029D220, 0xA0014D02, 0x00000002, 0x4029D220, 0xA0014E02, 0x00000002,
+-	0x4029D220, 0xA0014F02, 0x00000002, 0x4029D220, 0xA0015002, 0x00000002,
+-	0x4029D220, 0xA0015102, 0x00000002, 0x4029D220, 0xA0015202, 0x00000002,
+-	0x4029D220, 0xA0015302, 0x00000002, 0x4029D220, 0xA0015402, 0x00000002,
+-	0x4029D220, 0xA0015502, 0x00000002, 0x4029D220, 0xA0015602, 0x00000002,
+-	0x0029D284, 0xA0015604, 0x00000002, 0x4029D220, 0xA0015702, 0x00000002,
+-	0x4029D220, 0xA0015802, 0x00000002, 0x4029D220, 0xA0015902, 0x00000002,
+-	0x4029D220, 0xA0015A02, 0x00000002, 0x4029D220, 0xA0015B02, 0x00000002,
+-	0x4029D220, 0xA0015C02, 0x00000002, 0x4029D220,
+-	// Block 17, offset 0x440
+-	0xA0015D02, 0x00000002, 0x4029D220, 0xA0015E02, 0x00000002, 0x4029D220,
+-	0xA0015F02, 0x00000002, 0x4029D220, 0xA0016002, 0x00000002, 0x4029D220,
+-	0xA0016102, 0x00000002, 0x4029D220, 0xA0016202, 0x00000002, 0x4029D220,
+-	0xA0016302, 0x00000002, 0x4029D220, 0xA0016402, 0x00000002, 0x4029D220,
+-	0xA0016502, 0x00000002, 0x4029D220, 0xA0016602, 0x00000002, 0x4029D220,
+-	0xA0016702, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+-	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+-	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+-	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+-	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220,
+-	0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,
+-	// Block 18, offset 0x480
+-	0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02,
+-	0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016E02,
+-	0x00000002, 0x4029D220, 0xA0016F02, 0x00000002, 0x4029D220, 0xA0017002,
+-	0x00000002, 0x4029D220, 0xA0017102, 0x00000002, 0x4029D220, 0xA0017202,
+-	0x00000002, 0x4029D220, 0xA0017302, 0x00000002, 0x4029D220, 0xA0017402,
+-	0x00000002, 0x4029D220, 0xA0017502, 0x00000002, 0x4029D220, 0xA0017602,
+-	0x00000002, 0x4029D220, 0xA0017702, 0x00000003, 0x0029D29E, 0x0009589E,
+-	0x0029D49E, 0x00000003, 0x0029D29E, 0x0009589E, 0x0029D69E, 0x00000003,
+-	0x0029D29E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D286, 0x0029CC86,
+-	0x00000002, 0x4029D420, 0xA0013F02, 0x00000002, 0x4029D420, 0xA0014002,
+-	0x00000002, 0x4029D420, 0xA0014102, 0x00000002,
+-	// Block 19, offset 0x4c0
+-	0x4029D420, 0xA0014202, 0x00000002, 0x4029D420, 0xA0014302, 0x00000002,
+-	0x4029D420, 0xA0014402, 0x00000002, 0x4029D420, 0xA0014502, 0x00000002,
+-	0x4029D420, 0xA0014602, 0x00000002, 0x4029D420, 0xA0014702, 0x00000002,
+-	0x4029D420, 0xA0014802, 0x00000002, 0x4029D420, 0xA0014902, 0x00000002,
+-	0x4029D420, 0xA0014A02, 0x00000002, 0x4029D420, 0xA0014B02, 0x00000002,
+-	0x4029D420, 0xA0014C02, 0x00000002, 0x4029D420, 0xA0014D02, 0x00000002,
+-	0x4029D420, 0xA0014E02, 0x00000002, 0x4029D420, 0xA0014F02, 0x00000002,
+-	0x4029D420, 0xA0015002, 0x00000002, 0x4029D420, 0xA0015102, 0x00000002,
+-	0x4029D420, 0xA0015202, 0x00000002, 0x4029D420, 0xA0015302, 0x00000002,
+-	0x4029D420, 0xA0015402, 0x00000002, 0x4029D420, 0xA0015502, 0x00000002,
+-	0x4029D420, 0xA0015602, 0x00000002, 0x0029D484,
+-	// Block 20, offset 0x500
+-	0xA0015604, 0x00000002, 0x4029D420, 0xA0015702, 0x00000002, 0x4029D420,
+-	0xA0015802, 0x00000002, 0x4029D420, 0xA0015902, 0x00000002, 0x4029D420,
+-	0xA0015A02, 0x00000002, 0x4029D420, 0xA0015B02, 0x00000002, 0x4029D420,
+-	0xA0015C02, 0x00000002, 0x4029D420, 0xA0015D02, 0x00000002, 0x4029D420,
+-	0xA0015E02, 0x00000002, 0x4029D420, 0xA0015F02, 0x00000002, 0x4029D420,
+-	0xA0016002, 0x00000002, 0x4029D420, 0xA0016102, 0x00000002, 0x4029D420,
+-	0xA0016202, 0x00000002, 0x4029D420, 0xA0016302, 0x00000002, 0x4029D420,
+-	0xA0016402, 0x00000002, 0x4029D420, 0xA0016502, 0x00000002, 0x4029D420,
+-	0xA0016602, 0x00000002, 0x4029D420, 0xA0016702, 0x00000002, 0x4029D420,
+-	0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420,
+-	0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	// Block 21, offset 0x540
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02,
+-	0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0017002,
+-	0x00000002, 0x4029D420, 0xA0017102, 0x00000002, 0x4029D420, 0xA0017202,
+-	0x00000002, 0x4029D420, 0xA0017302, 0x00000002, 0x4029D420, 0xA0017402,
+-	0x00000002, 0x4029D420, 0xA0017502, 0x00000002, 0x4029D420, 0xA0017602,
+-	0x00000002, 0x4029D420, 0xA0017702, 0x00000003, 0x0029D49E, 0x0009589E,
+-	0x0029D69E, 0x00000002, 0x0029D486, 0x0029CC86,
+-	// Block 22, offset 0x580
+-	0x00000002, 0x4029D620, 0xA0013F02, 0x00000002, 0x4029D620, 0xA0014002,
+-	0x00000002, 0x4029D620, 0xA0014102, 0x00000002, 0x4029D620, 0xA0014202,
+-	0x00000002, 0x4029D620, 0xA0014302, 0x00000002, 0x4029D620, 0xA0014402,
+-	0x00000002, 0x4029D620, 0xA0014502, 0x00000002, 0x4029D620, 0xA0014602,
+-	0x00000002, 0x4029D620, 0xA0014702, 0x00000002, 0x4029D620, 0xA0014802,
+-	0x00000002, 0x4029D620, 0xA0014902, 0x00000002, 0x4029D620, 0xA0014A02,
+-	0x00000002, 0x4029D620, 0xA0014B02, 0x00000002, 0x4029D620, 0xA0014C02,
+-	0x00000002, 0x4029D620, 0xA0014D02, 0x00000002, 0x4029D620, 0xA0014E02,
+-	0x00000002, 0x4029D620, 0xA0014F02, 0x00000002, 0x4029D620, 0xA0015002,
+-	0x00000002, 0x4029D620, 0xA0015102, 0x00000002, 0x4029D620, 0xA0015202,
+-	0x00000002, 0x4029D620, 0xA0015302, 0x00000002,
+-	// Block 23, offset 0x5c0
+-	0x4029D620, 0xA0015402, 0x00000002, 0x4029D620, 0xA0015502, 0x00000002,
+-	0x4029D620, 0xA0015602, 0x00000002, 0x0029D684, 0xA0015604, 0x00000002,
+-	0x4029D620, 0xA0015702, 0x00000002, 0x4029D620, 0xA0015802, 0x00000002,
+-	0x4029D620, 0xA0015902, 0x00000002, 0x4029D620, 0xA0015A02, 0x00000002,
+-	0x4029D620, 0xA0015B02, 0x00000002, 0x4029D620, 0xA0015C02, 0x00000002,
+-	0x4029D620, 0xA0015D02, 0x00000002, 0x4029D620, 0xA0015E02, 0x00000002,
+-	0x4029D620, 0xA0015F02, 0x00000002, 0x4029D620, 0xA0016002, 0x00000002,
+-	0x4029D620, 0xA0016102, 0x00000002, 0x4029D620, 0xA0016202, 0x00000002,
+-	0x4029D620, 0xA0016302, 0x00000002, 0x4029D620, 0xA0016402, 0x00000002,
+-	0x4029D620, 0xA0016502, 0x00000002, 0x4029D620, 0xA0016602, 0x00000002,
+-	0x4029D620, 0xA0016702, 0x00000002, 0x4029D620,
+-	// Block 24, offset 0x600
+-	0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,
+-	0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620,
+-	0xA0016802, 0x00000002, 0x4029D620, 0xA0016A02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620,
+-	0xA0016C02, 0x00000002, 0x4029D620, 0xA0017202, 0x00000002, 0x4029D620,
+-	0xA0017302, 0x00000002, 0x4029D620, 0xA0017402, 0x00000002, 0x4029D620,
+-	0xA0017502, 0x00000002, 0x4029D620, 0xA0017702,
+-	// Block 25, offset 0x640
+-	0x00000003, 0x0029D69E, 0x0009589E, 0x0029D89E, 0x00000003, 0x0029D69E,
+-	0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D686, 0x0029CC86, 0x00000002,
+-	0x4029D820, 0xA0013F02, 0x00000002, 0x4029D820, 0xA0014002, 0x00000002,
+-	0x4029D820, 0xA0014102, 0x00000002, 0x4029D820, 0xA0014202, 0x00000002,
+-	0x4029D820, 0xA0014302, 0x00000002, 0x4029D820, 0xA0014402, 0x00000002,
+-	0x4029D820, 0xA0014502, 0x00000002, 0x4029D820, 0xA0014602, 0x00000002,
+-	0x4029D820, 0xA0014702, 0x00000002, 0x4029D820, 0xA0014802, 0x00000002,
+-	0x4029D820, 0xA0014902, 0x00000002, 0x4029D820, 0xA0014A02, 0x00000002,
+-	0x4029D820, 0xA0014B02, 0x00000002, 0x4029D820, 0xA0014C02, 0x00000002,
+-	0x4029D820, 0xA0014D02, 0x00000002, 0x4029D820, 0xA0014E02, 0x00000002,
+-	0x4029D820, 0xA0014F02, 0x00000002, 0x4029D820,
+-	// Block 26, offset 0x680
+-	0xA0015002, 0x00000002, 0x4029D820, 0xA0015102, 0x00000002, 0x4029D820,
+-	0xA0015202, 0x00000002, 0x4029D820, 0xA0015302, 0x00000002, 0x4029D820,
+-	0xA0015402, 0x00000002, 0x4029D820, 0xA0015502, 0x00000002, 0x4029D820,
+-	0xA0015602, 0x00000002, 0x0029D884, 0xA0015604, 0x00000002, 0x4029D820,
+-	0xA0015702, 0x00000002, 0x4029D820, 0xA0015802, 0x00000002, 0x4029D820,
+-	0xA0015902, 0x00000002, 0x4029D820, 0xA0015A02, 0x00000002, 0x4029D820,
+-	0xA0015B02, 0x00000002, 0x4029D820, 0xA0015C02, 0x00000002, 0x4029D820,
+-	0xA0015D02, 0x00000002, 0x4029D820, 0xA0015E02, 0x00000002, 0x4029D820,
+-	0xA0015F02, 0x00000002, 0x4029D820, 0xA0016002, 0x00000002, 0x4029D820,
+-	0xA0016102, 0x00000002, 0x4029D820, 0xA0016202, 0x00000002, 0x4029D820,
+-	0xA0016302, 0x00000002, 0x4029D820, 0xA0016402,
+-	// Block 27, offset 0x6c0
+-	0x00000002, 0x4029D820, 0xA0016502, 0x00000002, 0x4029D820, 0xA0016602,
+-	0x00000002, 0x4029D820, 0xA0016702, 0x00000002, 0x4029D820, 0xA0016902,
+-	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+-	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+-	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02,
+-	0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0017202,
+-	0x00000002, 0x4029D820, 0xA0017302, 0x00000002, 0x4029D820, 0xA0017402,
+-	0x00000002, 0x4029D820, 0xA0017502, 0x00000002, 0x4029D820, 0xA0017702,
+-	0x00000002, 0x0029D886, 0x0029CC86, 0x00000002, 0x4029DA20, 0xA0013F02,
+-	0x00000002, 0x4029DA20, 0xA0014002, 0x00000002, 0x4029DA20, 0xA0014102,
+-	0x00000002, 0x4029DA20, 0xA0014202, 0x00000002,
+-	// Block 28, offset 0x700
+-	0x4029DA20, 0xA0014302, 0x00000002, 0x4029DA20, 0xA0014402, 0x00000002,
+-	0x4029DA20, 0xA0014502, 0x00000002, 0x4029DA20, 0xA0014602, 0x00000002,
+-	0x4029DA20, 0xA0014702, 0x00000002, 0x4029DA20, 0xA0014802, 0x00000002,
+-	0x4029DA20, 0xA0014902, 0x00000002, 0x4029DA20, 0xA0014A02, 0x00000002,
+-	0x4029DA20, 0xA0014B02, 0x00000002, 0x4029DA20, 0xA0014C02, 0x00000002,
+-	0x4029DA20, 0xA0014D02, 0x00000002, 0x4029DA20, 0xA0014E02, 0x00000002,
+-	0x4029DA20, 0xA0014F02, 0x00000002, 0x4029DA20, 0xA0015002, 0x00000002,
+-	0x4029DA20, 0xA0015102, 0x00000002, 0x4029DA20, 0xA0015202, 0x00000002,
+-	0x4029DA20, 0xA0015302, 0x00000002, 0x4029DA20, 0xA0015402, 0x00000002,
+-	0x4029DA20, 0xA0015502, 0x00000002, 0x4029DA20, 0xA0015602, 0x00000002,
+-	0x0029DA84, 0xA0015604, 0x00000002, 0x4029DA20,
+-	// Block 29, offset 0x740
+-	0xA0015702, 0x00000002, 0x4029DA20, 0xA0015802, 0x00000002, 0x4029DA20,
+-	0xA0015902, 0x00000002, 0x4029DA20, 0xA0015A02, 0x00000002, 0x4029DA20,
+-	0xA0015B02, 0x00000002, 0x4029DA20, 0xA0015C02, 0x00000002, 0x4029DA20,
+-	0xA0015D02, 0x00000002, 0x4029DA20, 0xA0015E02, 0x00000002, 0x4029DA20,
+-	0xA0015F02, 0x00000002, 0x4029DA20, 0xA0016002, 0x00000002, 0x4029DA20,
+-	0xA0016102, 0x00000002, 0x4029DA20, 0xA0016202, 0x00000002, 0x4029DA20,
+-	0xA0016302, 0x00000002, 0x4029DA20, 0xA0016402, 0x00000002, 0x4029DA20,
+-	0xA0016502, 0x00000002, 0x4029DA20, 0xA0016602, 0x00000002, 0x4029DA20,
+-	0xA0016702, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,
+-	0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20,
+-	0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,
+-	// Block 30, offset 0x780
+-	0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02,
+-	0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0017202,
+-	0x00000002, 0x4029DA20, 0xA0017302, 0x00000002, 0x4029DA20, 0xA0017402,
+-	0x00000002, 0x4029DA20, 0xA0017502, 0x00000002, 0x4029DA20, 0xA0017702,
+-	0x00000003, 0x0029DA9E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029DA86,
+-	0x0029CC86, 0x00000002, 0x4029DC20, 0xA0013F02, 0x00000002, 0x4029DC20,
+-	0xA0014002, 0x00000002, 0x4029DC20, 0xA0014102, 0x00000002, 0x4029DC20,
+-	0xA0014202, 0x00000002, 0x4029DC20, 0xA0014302, 0x00000002, 0x4029DC20,
+-	0xA0014402, 0x00000002, 0x4029DC20, 0xA0014502, 0x00000002, 0x4029DC20,
+-	0xA0014602, 0x00000002, 0x4029DC20, 0xA0014702, 0x00000002, 0x4029DC20,
+-	0xA0014802, 0x00000002, 0x4029DC20, 0xA0014902,
+-	// Block 31, offset 0x7c0
+-	0x00000002, 0x4029DC20, 0xA0014A02, 0x00000002, 0x4029DC20, 0xA0014B02,
+-	0x00000002, 0x4029DC20, 0xA0014C02, 0x00000002, 0x4029DC20, 0xA0014D02,
+-	0x00000002, 0x4029DC20, 0xA0014E02, 0x00000002, 0x4029DC20, 0xA0014F02,
+-	0x00000002, 0x4029DC20, 0xA0015002, 0x00000002, 0x4029DC20, 0xA0015102,
+-	0x00000002, 0x4029DC20, 0xA0015202, 0x00000002, 0x4029DC20, 0xA0015302,
+-	0x00000002, 0x4029DC20, 0xA0015402, 0x00000002, 0x4029DC20, 0xA0015502,
+-	0x00000002, 0x4029DC20, 0xA0015602, 0x00000002, 0x0029DC84, 0xA0015604,
+-	0x00000002, 0x4029DC20, 0xA0015702, 0x00000002, 0x4029DC20, 0xA0015802,
+-	0x00000002, 0x4029DC20, 0xA0015902, 0x00000002, 0x4029DC20, 0xA0015A02,
+-	0x00000002, 0x4029DC20, 0xA0015B02, 0x00000002, 0x4029DC20, 0xA0015C02,
+-	0x00000002, 0x4029DC20, 0xA0015D02, 0x00000002,
+-	// Block 32, offset 0x800
+-	0x4029DC20, 0xA0015E02, 0x00000002, 0x4029DC20, 0xA0015F02, 0x00000002,
+-	0x4029DC20, 0xA0016002, 0x00000002, 0x4029DC20, 0xA0016102, 0x00000002,
+-	0x4029DC20, 0xA0016202, 0x00000002, 0x4029DC20, 0xA0016302, 0x00000002,
+-	0x4029DC20, 0xA0016402, 0x00000002, 0x4029DC20, 0xA0016502, 0x00000002,
+-	0x4029DC20, 0xA0016602, 0x00000002, 0x4029DC20, 0xA0016702, 0x00000002,
+-	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+-	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+-	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002,
+-	0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0017202, 0x00000002,
+-	0x4029DC20, 0xA0017302, 0x00000002, 0x4029DC20, 0xA0017402, 0x00000002,
+-	0x4029DC20, 0xA0017502, 0x00000002, 0x4029DC20,
+-	// Block 33, offset 0x840
+-	0xA0017702, 0x00000002, 0x0029DC86, 0x0029CC86, 0x00000002, 0x4029DE20,
+-	0xA0013F02, 0x00000002, 0x4029DE20, 0xA0014002, 0x00000002, 0x4029DE20,
+-	0xA0014102, 0x00000002, 0x4029DE20, 0xA0014202, 0x00000002, 0x4029DE20,
+-	0xA0014302, 0x00000002, 0x4029DE20, 0xA0014402, 0x00000002, 0x4029DE20,
+-	0xA0014502, 0x00000002, 0x4029DE20, 0xA0014602, 0x00000002, 0x4029DE20,
+-	0xA0014702, 0x00000002, 0x4029DE20, 0xA0014802, 0x00000002, 0x4029DE20,
+-	0xA0014902, 0x00000002, 0x4029DE20, 0xA0014A02, 0x00000002, 0x4029DE20,
+-	0xA0014B02, 0x00000002, 0x4029DE20, 0xA0014C02, 0x00000002, 0x4029DE20,
+-	0xA0014D02, 0x00000002, 0x4029DE20, 0xA0014E02, 0x00000002, 0x4029DE20,
+-	0xA0014F02, 0x00000002, 0x4029DE20, 0xA0015002, 0x00000002, 0x4029DE20,
+-	0xA0015102, 0x00000002, 0x4029DE20, 0xA0015202,
+-	// Block 34, offset 0x880
+-	0x00000002, 0x4029DE20, 0xA0015302, 0x00000002, 0x4029DE20, 0xA0015402,
+-	0x00000002, 0x4029DE20, 0xA0015502, 0x00000002, 0x4029DE20, 0xA0015602,
+-	0x00000002, 0x0029DE84, 0xA0015604, 0x00000002, 0x4029DE20, 0xA0015702,
+-	0x00000002, 0x4029DE20, 0xA0015802, 0x00000002, 0x4029DE20, 0xA0015902,
+-	0x00000002, 0x4029DE20, 0xA0015A02, 0x00000002, 0x4029DE20, 0xA0015B02,
+-	0x00000002, 0x4029DE20, 0xA0015C02, 0x00000002, 0x4029DE20, 0xA0015D02,
+-	0x00000002, 0x4029DE20, 0xA0015E02, 0x00000002, 0x4029DE20, 0xA0015F02,
+-	0x00000002, 0x4029DE20, 0xA0016002, 0x00000002, 0x4029DE20, 0xA0016102,
+-	0x00000002, 0x4029DE20, 0xA0016202, 0x00000002, 0x4029DE20, 0xA0016302,
+-	0x00000002, 0x4029DE20, 0xA0016402, 0x00000002, 0x4029DE20, 0xA0016502,
+-	0x00000002, 0x4029DE20, 0xA0016602, 0x00000002,
+-	// Block 35, offset 0x8c0
+-	0x4029DE20, 0xA0016702, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+-	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+-	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+-	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+-	0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002,
+-	0x4029DE20, 0xA0017202, 0x00000002, 0x4029DE20, 0xA0017302, 0x00000002,
+-	0x4029DE20, 0xA0017402, 0x00000002, 0x4029DE20, 0xA0017502, 0x00000002,
+-	0x4029DE20, 0xA0017702, 0x00000002, 0x402BDE20, 0xAE603202, 0x00000002,
+-	0x002BDE88, 0xAE603202, 0x00000002, 0x402BDE20, 0xAE603502, 0x00000002,
+-	0x002BDE88, 0xAE603502, 0x00000002, 0x402BDE20, 0xAE603702, 0x00000002,
+-	0x002BDE88, 0xAE603702, 0x00000003, 0x402BDE20,
+-	// Block 36, offset 0x900
+-	0xAE603702, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE603202,
+-	0x00000003, 0x402BDE20, 0xAE603702, 0xAE603502, 0x00000003, 0x002BDE88,
+-	0xAE603702, 0xAE603502, 0x00000003, 0x402BDE20, 0xAE603702, 0xAE604E02,
+-	0x00000003, 0x002BDE88, 0xAE603702, 0xAE604E02, 0x00000003, 0x402BDE20,
+-	0xAE603702, 0xAE606402, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE606402,
+-	0x00000002, 0x402BDE20, 0xAE603C02, 0x00000002, 0x002BDE88, 0xAE603C02,
+-	0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603202, 0x00000003, 0x002BDE88,
+-	0xAE603C02, 0xAE603202, 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603502,
+-	0x00000003, 0x002BDE88, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BDE20,
+-	0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE604E02,
+-	0x00000003, 0x402BDE20, 0xAE603C02, 0xAE606402,
+-	// Block 37, offset 0x940
+-	0x00000003, 0x002BDE88, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BDE20,
+-	0xAE604102, 0x00000002, 0x002BDE88, 0xAE604102, 0x00000002, 0x402BDE20,
+-	0xAE604302, 0x00000002, 0x002BDE88, 0xAE604302, 0x00000003, 0x402BDE20,
+-	0xAE604302, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603202,
+-	0x00000002, 0x402BDE20, 0xAE604702, 0x00000002, 0x002BDE88, 0xAE604702,
+-	0x00000003, 0x402BDE20, 0xAE604702, 0xAE605B02, 0x00000003, 0x002BDE88,
+-	0xAE604702, 0xAE605B02, 0x00000002, 0x402BDE20, 0xAE604E02, 0x00000002,
+-	0x002BDE88, 0xAE604E02, 0x00000002, 0x402BDE20, 0xAE605202, 0x00000002,
+-	0x002BDE88, 0xAE605202, 0x00000003, 0x402BDE20, 0xAE605202, 0xAE605B02,
+-	0x00000003, 0x002BDE88, 0xAE605202, 0xAE605B02, 0x00000002, 0x402BDE20,
+-	0xACA05902, 0x00000002, 0x002BDE88, 0xACA05902,
+-	// Block 38, offset 0x980
+-	0x00000002, 0x402BDE20, 0xAE605B02, 0x00000002, 0x002BDE88, 0xAE605B02,
+-	0x00000002, 0x402BDE20, 0xAE606402, 0x00000002, 0x002BDE88, 0xAE606402,
+-	0x00000002, 0x402BDE20, 0xAE606502, 0x00000002, 0x002BDE88, 0xAE606502,
+-	0x00000002, 0x402BDE20, 0xAE606702, 0x00000002, 0x002BDE88, 0xAE606702,
+-	0x00000002, 0x402BDE20, 0xADC07002, 0x00000002, 0x002BDE88, 0xADC07002,
+-	0x00000003, 0x402BDE20, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE88,
+-	0xADC07002, 0xAE603702, 0x00000003, 0x402BDE20, 0xADC07002, 0xAE603C02,
+-	0x00000003, 0x002BDE88, 0xADC07002, 0xAE603C02, 0x00000002, 0x402BDE20,
+-	0xADC07602, 0x00000002, 0x002BDE88, 0xADC07602, 0x00000002, 0x84E615EF,
+-	0xAE613904, 0x00000004, 0x002BDE9C, 0x0002E49C, 0x002E829C, 0x0002E49C,
+-	0x00000003, 0x002BDE84, 0x0004E284, 0x002C3A84,
+-	// Block 39, offset 0x9c0
+-	0x00000003, 0x002BDE84, 0x0004E284, 0x002FE684, 0x00000003, 0x002BDE8A,
+-	0x0004E284, 0x002FE68A, 0x00000003, 0x002BDE9D, 0x0009569C, 0x002E829C,
+-	0x00000002, 0x002BDE84, 0x002BDE84, 0x00000002, 0x002BDE8A, 0x002BDE8A,
+-	0x00000002, 0x002BDE9D, 0x002C0A9D, 0x00000003, 0x002BDE84, 0xA0013904,
+-	0x002C9884, 0x00000003, 0x84E615EF, 0xAE613904, 0x84E6164C, 0x00000003,
+-	0x002BDE8A, 0xA0013904, 0x002C988A, 0x00000003, 0x002BDE94, 0xA0013914,
+-	0x002C9894, 0x00000004, 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603202,
+-	0x00000004, 0x002BDE8A, 0xA0013904, 0x002C988A, 0xAE603202, 0x00000004,
+-	0x002BDE84, 0xA0013904, 0x002C9884, 0xAE605B02, 0x00000004, 0x002BDE8A,
+-	0xA0013904, 0x002C988A, 0xAE605B02, 0x00000002, 0x84E615EF, 0x84E61771,
+-	0x00000002, 0x002BDE84, 0x002EE284, 0x00000002,
+-	// Block 40, offset 0xa00
+-	0x002BDE8A, 0x002EE28A, 0x00000002, 0x002BDE84, 0x00306C84, 0x00000002,
+-	0x002BDE8A, 0x00306C8A, 0x00000002, 0x84E615EF, 0x84E6185F, 0x00000002,
+-	0x002BDE84, 0x0030BE84, 0x00000002, 0x002BDE8A, 0x0030BE8A, 0x00000003,
+-	0x002BDE84, 0xA0013904, 0x0030BE84, 0x00000003, 0x002BDE8A, 0xA0013904,
+-	0x0030BE8A, 0x00000002, 0x002BDE84, 0x00310084, 0x00000002, 0x002BDE8A,
+-	0x0031008A, 0x00000002, 0x402C0A20, 0xAE605202, 0x00000002, 0x002C0A88,
+-	0xAE605202, 0x00000002, 0x402C0A20, 0xADC07002, 0x00000002, 0x002C0A88,
+-	0xADC07002, 0x00000002, 0x402C0A20, 0xADC07B02, 0x00000002, 0x002C0A88,
+-	0xADC07B02, 0x00000003, 0x002C0A9C, 0x002BDE9C, 0x002F7A9C, 0x00000002,
+-	0x402C3A20, 0xAE603202, 0x00000002, 0x002C3A88, 0xAE603202, 0x00000002,
+-	0x402C3A20, 0xAE603C02, 0x00000002, 0x002C3A88,
+-	// Block 41, offset 0xa40
+-	0xAE603C02, 0x00000002, 0x402C3A20, 0xAE604102, 0x00000002, 0x002C3A88,
+-	0xAE604102, 0x00000002, 0x402C3A20, 0xAE605202, 0x00000002, 0x002C3A88,
+-	0xAE605202, 0x00000002, 0x402C3A20, 0xACA05602, 0x00000002, 0x84E6161D,
+-	0xAE605604, 0x00000002, 0x002C3A88, 0xACA05602, 0x00000003, 0x402C3A20,
+-	0xACA05602, 0xAE603202, 0x00000003, 0x002C3A88, 0xACA05602, 0xAE603202,
+-	0x00000003, 0x002C3A84, 0x0004E284, 0x002EE284, 0x00000003, 0x002C3A84,
+-	0x0004E284, 0x00306C84, 0x00000004, 0x002C3A9D, 0x0009569C, 0x002DFE9C,
+-	0x002D229C, 0x00000003, 0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000002,
+-	0x002C3A9D, 0x002E229D, 0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D09C,
+-	0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D29C, 0x00000003, 0x002C3A9D,
+-	0x002EE29C, 0x0002E49C, 0x00000004, 0x002C3A9D,
+-	// Block 42, offset 0xa80
+-	0x002EE29D, 0x002EE29D, 0x002E229D, 0x00000002, 0x402C6220, 0xAE604102,
+-	0x00000002, 0x002C6288, 0xAE604102, 0x00000002, 0x402C6220, 0xAE605202,
+-	0x00000002, 0x002C6288, 0xAE605202, 0x00000002, 0x402C6220, 0xACA05602,
+-	0x00000002, 0x002C6288, 0xACA05602, 0x00000002, 0x402C6220, 0xADC07002,
+-	0x00000002, 0x002C6288, 0xADC07002, 0x00000002, 0x402C6220, 0xADC07802,
+-	0x00000002, 0x002C6288, 0xADC07802, 0x00000002, 0x402C6220, 0xADC07B02,
+-	0x00000002, 0x002C6288, 0xADC07B02, 0x00000002, 0x402C6220, 0xA0007D02,
+-	0x00000002, 0x002C6288, 0xA0007D02, 0x00000002, 0x002C6284, 0xA0013904,
+-	0x00000002, 0x84E61631, 0xAE613904, 0x00000002, 0x002C628A, 0xA0013904,
+-	0x00000002, 0x84E61631, 0xAE613A04, 0x00000002, 0x002C6284, 0xA0013A04,
+-	0x00000002, 0x002C628A, 0xA0013A04, 0x00000002,
+-	// Block 43, offset 0xac0
+-	0x002C6284, 0x002C0A84, 0x00000003, 0x002C629C, 0x002E829C, 0x0029D09C,
+-	0x00000003, 0x002C629C, 0x002E829C, 0x0029D29C, 0x00000002, 0x002C6284,
+-	0x00312A84, 0x00000003, 0x002C6284, 0x00312A84, 0xA0004104, 0x00000003,
+-	0x002C628A, 0x00312A84, 0xA0004104, 0x00000003, 0x002C628A, 0x00312A8A,
+-	0xA0004104, 0x00000002, 0x002C6284, 0x00315084, 0x00000002, 0x002C6284,
+-	0x00316484, 0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x002C9888,
+-	0xAE603202, 0x00000002, 0x402C9820, 0xAE603502, 0x00000002, 0x002C9888,
+-	0xAE603502, 0x00000002, 0x402C9820, 0xAE603702, 0x00000002, 0x002C9888,
+-	0xAE603702, 0x00000002, 0x402C9820, 0xAE603C02, 0x00000002, 0x002C9888,
+-	0xAE603C02, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE603202, 0x00000003,
+-	0x002C9888, 0xAE603C02, 0xAE603202, 0x00000003,
+-	// Block 44, offset 0xb00
+-	0x402C9820, 0xAE603C02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE603C02,
+-	0xAE603502, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE604E02, 0x00000003,
+-	0x002C9888, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C9820, 0xAE603C02,
+-	0xAE606402, 0x00000003, 0x002C9888, 0xAE603C02, 0xAE606402, 0x00000002,
+-	0x402C9820, 0xAE604102, 0x00000002, 0x002C9888, 0xAE604102, 0x00000002,
+-	0x402C9820, 0xAE604702, 0x00000002, 0x002C9888, 0xAE604702, 0x00000002,
+-	0x402C9820, 0xAE604E02, 0x00000002, 0x002C9888, 0xAE604E02, 0x00000002,
+-	0x402C9820, 0xAE605202, 0x00000002, 0x002C9888, 0xAE605202, 0x00000002,
+-	0x402C9820, 0xACA05602, 0x00000002, 0x002C9888, 0xACA05602, 0x00000003,
+-	0x402C9820, 0xACA05602, 0xAE603702, 0x00000003, 0x002C9888, 0xACA05602,
+-	0xAE603702, 0x00000002, 0x402C9820, 0xACA05902,
+-	// Block 45, offset 0xb40
+-	0x00000002, 0x002C9888, 0xACA05902, 0x00000002, 0x402C9820, 0xAE605B02,
+-	0x00000002, 0x002C9888, 0xAE605B02, 0x00000003, 0x402C9820, 0xAE605B02,
+-	0xAE603202, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603202, 0x00000003,
+-	0x402C9820, 0xAE605B02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE605B02,
+-	0xAE603502, 0x00000002, 0x402C9820, 0xAE606402, 0x00000002, 0x002C9888,
+-	0xAE606402, 0x00000002, 0x402C9820, 0xAE606502, 0x00000002, 0x002C9888,
+-	0xAE606502, 0x00000002, 0x402C9820, 0xAE606702, 0x00000002, 0x002C9888,
+-	0xAE606702, 0x00000002, 0x402C9820, 0xADC07002, 0x00000002, 0x002C9888,
+-	0xADC07002, 0x00000003, 0x402C9820, 0xADC07002, 0xAE603C02, 0x00000003,
+-	0x002C9888, 0xADC07002, 0xAE603C02, 0x00000002, 0x402C9820, 0xADC07802,
+-	0x00000002, 0x002C9888, 0xADC07802, 0x00000002,
+-	// Block 46, offset 0xb80
+-	0x402C9820, 0xADC07A02, 0x00000002, 0x002C9888, 0xADC07A02, 0x00000003,
+-	0x002C989C, 0x002F7A9C, 0x002D229C, 0x00000002, 0x402D0820, 0xAE605202,
+-	0x00000002, 0x002D0888, 0xAE605202, 0x00000002, 0x002D0884, 0xA0013A04,
+-	0x00000002, 0x002D088A, 0xA0013A04, 0x00000003, 0x002D088A, 0x002BDE8A,
+-	0x0030F68A, 0x00000003, 0x002D0884, 0x002D0884, 0x002D9A84, 0x00000003,
+-	0x002D0884, 0x002D0884, 0x002E2284, 0x00000002, 0x002D0884, 0x002EDA84,
+-	0x00000004, 0x002D089D, 0x002F7A9D, 0x002C989D, 0x002C989D, 0x00000002,
+-	0x402D2220, 0xAE603202, 0x00000002, 0x002D2288, 0xAE603202, 0x00000002,
+-	0x402D2220, 0xAE603702, 0x00000002, 0x002D2288, 0xAE603702, 0x00000002,
+-	0x402D2220, 0xAE603C02, 0x00000002, 0x002D2288, 0xAE603C02, 0x00000002,
+-	0x402D2220, 0xAE604102, 0x00000002, 0x002D2288,
+-	// Block 47, offset 0xbc0
+-	0xAE604102, 0x00000002, 0x402D2220, 0xAE605202, 0x00000002, 0x002D2288,
+-	0xAE605202, 0x00000002, 0x402D2220, 0xACA05602, 0x00000002, 0x002D2288,
+-	0xACA05602, 0x00000002, 0x402D2220, 0xAE605B02, 0x00000002, 0x002D2288,
+-	0xAE605B02, 0x00000002, 0x002D2284, 0xA0006104, 0x00000002, 0x002D228A,
+-	0xA0006104, 0x00000002, 0x002D2284, 0xA0013A04, 0x00000002, 0x002D228A,
+-	0xA0013A04, 0x00000003, 0x002D229C, 0x002BDE9C, 0x002E229C, 0x00000003,
+-	0x002D229D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002D229D, 0x002F2C9D,
+-	0x002BDE9C, 0x00000002, 0x402D6820, 0xAE603C02, 0x00000002, 0x002D6888,
+-	0xAE603C02, 0x00000002, 0x402D6820, 0xAE604102, 0x00000002, 0x002D6888,
+-	0xAE604102, 0x00000002, 0x402D6820, 0xAE604702, 0x00000002, 0x002D6888,
+-	0xAE604702, 0x00000002, 0x402D6820, 0xAE605202,
+-	// Block 48, offset 0xc00
+-	0x00000002, 0x002D6888, 0xAE605202, 0x00000002, 0x402D6820, 0xACA05602,
+-	0x00000002, 0x002D6888, 0xACA05602, 0x00000002, 0x402D6820, 0xADC07002,
+-	0x00000002, 0x002D6888, 0xADC07002, 0x00000002, 0x402D6820, 0xADC07902,
+-	0x00000002, 0x002D6888, 0xADC07902, 0x00000002, 0x402D6820, 0xADC07B02,
+-	0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6888, 0xA0007D02,
+-	0x00000003, 0x002D689C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402D9A20,
+-	0xAE603202, 0x00000002, 0x002D9A88, 0xAE603202, 0x00000002, 0x402D9A20,
+-	0xAE603502, 0x00000002, 0x002D9A88, 0xAE603502, 0x00000002, 0x402D9A20,
+-	0xAE603702, 0x00000002, 0x002D9A88, 0xAE603702, 0x00000002, 0x402D9A20,
+-	0xAE603C02, 0x00000002, 0x002D9A88, 0xAE603C02, 0x00000002, 0x402D9A20,
+-	0xAE604102, 0x00000002, 0x002D9A88, 0xAE604102,
+-	// Block 49, offset 0xc40
+-	0x00000002, 0x402D9A20, 0xAE604702, 0x00000002, 0x002D9A88, 0xAE604702,
+-	0x00000003, 0x402D9A20, 0xAE604702, 0xAE603202, 0x00000003, 0x002D9A88,
+-	0xAE604702, 0xAE603202, 0x00000002, 0x402D9A20, 0xAE604E02, 0x00000002,
+-	0x002D9A88, 0xAE604E02, 0x00000002, 0x002D9A88, 0xAE605202, 0x00000002,
+-	0x402D9A20, 0xACA05902, 0x00000002, 0x002D9A88, 0xACA05902, 0x00000002,
+-	0x402D9A20, 0xAE605B02, 0x00000002, 0x002D9A88, 0xAE605B02, 0x00000002,
+-	0x402D9A20, 0xAE606402, 0x00000002, 0x002D9A88, 0xAE606402, 0x00000002,
+-	0x402D9A20, 0xAE606502, 0x00000002, 0x002D9A88, 0xAE606502, 0x00000002,
+-	0x402D9A20, 0xAE606702, 0x00000002, 0x002D9A88, 0xAE606702, 0x00000002,
+-	0x402D9A20, 0xADC07002, 0x00000002, 0x002D9A88, 0xADC07002, 0x00000002,
+-	0x402D9A20, 0xADC07A02, 0x00000002, 0x002D9A88,
+-	// Block 50, offset 0xc80
+-	0xADC07A02, 0x00000002, 0x002D9A9D, 0x002C3A9D, 0x00000002, 0x002D9A9D,
+-	0x002C629D, 0x00000002, 0x402DCC20, 0xAE603C02, 0x00000002, 0x002DCC88,
+-	0xAE603C02, 0x00000002, 0x402DCC20, 0xAE604102, 0x00000002, 0x402DFE20,
+-	0xAE603202, 0x00000002, 0x002DFE88, 0xAE603202, 0x00000002, 0x402DFE20,
+-	0xAE604102, 0x00000002, 0x002DFE88, 0xAE604102, 0x00000002, 0x402DFE20,
+-	0xACA05602, 0x00000002, 0x002DFE88, 0xACA05602, 0x00000002, 0x002DFE84,
+-	0xA0006104, 0x00000002, 0x002DFE8A, 0xA0006104, 0x00000002, 0x402DFE20,
+-	0xADC07002, 0x00000002, 0x002DFE88, 0xADC07002, 0x00000002, 0x402DFE20,
+-	0xADC07B02, 0x00000002, 0x002DFE88, 0xADC07B02, 0x00000004, 0x002DFE9C,
+-	0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000003, 0x002DFE9C, 0x002D689D,
+-	0x00312A9C, 0x00000003, 0x002DFE9C, 0x002E829C,
+-	// Block 51, offset 0xcc0
+-	0x0029D09C, 0x00000003, 0x002DFE9C, 0x002E829C, 0x0029D29C, 0x00000003,
+-	0x002DFE9C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E2220, 0xAE603202,
+-	0x00000002, 0x002E2288, 0xAE603202, 0x00000002, 0x402E2220, 0xAE604102,
+-	0x00000002, 0x002E2288, 0xAE604102, 0x00000002, 0x402E2220, 0xACA05602,
+-	0x00000002, 0x002E2288, 0xACA05602, 0x00000002, 0x402E2220, 0xADC07002,
+-	0x00000002, 0x002E2288, 0xADC07002, 0x00000003, 0x402E2220, 0xADC07002,
+-	0xAE605B02, 0x00000003, 0x002E2288, 0xADC07002, 0xAE605B02, 0x00000002,
+-	0x402E2220, 0xADC07802, 0x00000002, 0x002E2288, 0xADC07802, 0x00000002,
+-	0x402E2220, 0xADC07B02, 0x00000002, 0x002E2288, 0xADC07B02, 0x00000002,
+-	0x402E2220, 0xA0007D02, 0x00000002, 0x002E2288, 0xA0007D02, 0x00000002,
+-	0x402E2220, 0xA0013902, 0x00000002, 0x402E2220,
+-	// Block 52, offset 0xd00
+-	0xA0013902, 0x00000002, 0x002E2288, 0xA0013902, 0x00000002, 0x002E2288,
+-	0xA0013902, 0x00000002, 0x002E2284, 0x002E2284, 0x00000002, 0x002E228A,
+-	0x002E228A, 0x00000003, 0x002E229C, 0x002EE29C, 0x002D229C, 0x00000002,
+-	0x002E2284, 0x002FE684, 0x00000003, 0x002E229D, 0x00302C9D, 0x002C629D,
+-	0x00000002, 0x002E2284, 0x00312A84, 0x00000002, 0x402E8220, 0xAE603202,
+-	0x00000002, 0x002E8288, 0xAE603202, 0x00000002, 0x402E8220, 0xAE605202,
+-	0x00000002, 0x002E8288, 0xAE605202, 0x00000002, 0x402E8220, 0xADC07002,
+-	0x00000002, 0x002E8288, 0xADC07002, 0x00000003, 0x002E829C, 0x0009569C,
+-	0x002FE69C, 0x00000004, 0x002E829C, 0x0009569C, 0x002FE69C, 0x0029D09C,
+-	0x00000003, 0x002E829D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002E829C,
+-	0x002D9A9C, 0x002E229C, 0x00000003, 0x002E829C,
+-	// Block 53, offset 0xd40
+-	0x002E829C, 0x0029D09C, 0x00000003, 0x002E829C, 0x002E829C, 0x0029D29C,
+-	0x00000003, 0x002E829C, 0x002EE29C, 0x002E229C, 0x00000003, 0x002E829D,
+-	0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E9E20, 0xAE603202, 0x00000002,
+-	0x002E9E88, 0xAE603202, 0x00000002, 0x402E9E20, 0xAE603502, 0x00000002,
+-	0x002E9E88, 0xAE603502, 0x00000002, 0x402E9E20, 0xAE604102, 0x00000002,
+-	0x002E9E88, 0xAE604102, 0x00000002, 0x402E9E20, 0xAE604E02, 0x00000002,
+-	0x002E9E88, 0xAE604E02, 0x00000002, 0x402E9E20, 0xAE605202, 0x00000002,
+-	0x002E9E88, 0xAE605202, 0x00000002, 0x402E9E20, 0xACA05602, 0x00000002,
+-	0x002E9E88, 0xACA05602, 0x00000002, 0x002E9E84, 0xA0006104, 0x00000002,
+-	0x002E9E8A, 0xA0006104, 0x00000002, 0x402E9E20, 0xADC07002, 0x00000002,
+-	0x002E9E88, 0xADC07002, 0x00000002, 0x402E9E20,
+-	// Block 54, offset 0xd80
+-	0xADC07802, 0x00000002, 0x002E9E88, 0xADC07802, 0x00000002, 0x402E9E20,
+-	0xADC07B02, 0x00000002, 0x002E9E88, 0xADC07B02, 0x00000003, 0x002E9E9D,
+-	0x002C989D, 0x0030E29D, 0x00000002, 0x002E9E9D, 0x002D229D, 0x00000002,
+-	0x402EE220, 0xAE603202, 0x00000002, 0x002EE288, 0xAE603202, 0x00000002,
+-	0x402EE220, 0xAE603502, 0x00000002, 0x002EE288, 0xAE603502, 0x00000002,
+-	0x402EE220, 0xAE603702, 0x00000002, 0x002EE288, 0xAE603702, 0x00000002,
+-	0x402EE220, 0xAE603C02, 0x00000002, 0x002EE288, 0xAE603C02, 0x00000003,
+-	0x402EE220, 0xAE603C02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE603C02,
+-	0xAE603202, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE603502, 0x00000003,
+-	0x002EE288, 0xAE603C02, 0xAE603502, 0x00000003, 0x402EE220, 0xAE603C02,
+-	0xAE604E02, 0x00000003, 0x002EE288, 0xAE603C02,
+-	// Block 55, offset 0xdc0
+-	0xAE604E02, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE606402, 0x00000003,
+-	0x002EE288, 0xAE603C02, 0xAE606402, 0x00000002, 0x402EE220, 0xAE604102,
+-	0x00000002, 0x002EE288, 0xAE604102, 0x00000002, 0x402EE220, 0xAE604702,
+-	0x00000002, 0x002EE288, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604702,
+-	0xAE605B02, 0x00000003, 0x002EE288, 0xAE604702, 0xAE605B02, 0x00000002,
+-	0x402EE220, 0xAE604D02, 0x00000002, 0x002EE288, 0xAE604D02, 0x00000002,
+-	0x402EE220, 0xAE604E02, 0x00000002, 0x002EE288, 0xAE604E02, 0x00000003,
+-	0x402EE220, 0xAE604E02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE604E02,
+-	0xAE603202, 0x00000003, 0x402EE220, 0xAE604E02, 0xAE604702, 0x00000003,
+-	0x002EE288, 0xAE604E02, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604E02,
+-	0xAE605B02, 0x00000003, 0x002EE288, 0xAE604E02,
+-	// Block 56, offset 0xe00
+-	0xAE605B02, 0x00000002, 0x402EE220, 0xAE605202, 0x00000002, 0x002EE288,
+-	0xAE605202, 0x00000003, 0x402EE220, 0xAE605202, 0xAE605B02, 0x00000003,
+-	0x002EE288, 0xAE605202, 0xAE605B02, 0x00000002, 0x402EE220, 0xA0005402,
+-	0x00000002, 0x002EE288, 0xA0005402, 0x00000003, 0x402EE220, 0xA0005402,
+-	0xAE603202, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603202, 0x00000002,
+-	0x402EE220, 0xACA05902, 0x00000002, 0x002EE288, 0xACA05902, 0x00000003,
+-	0x402EE220, 0xACA05902, 0xAE605B02, 0x00000003, 0x002EE288, 0xACA05902,
+-	0xAE605B02, 0x00000002, 0x402EE220, 0xAE605B02, 0x00000002, 0x002EE288,
+-	0xAE605B02, 0x00000003, 0x402EE220, 0xAE605B02, 0xAE603202, 0x00000003,
+-	0x002EE288, 0xAE605B02, 0xAE603202, 0x00000003, 0x402EE220, 0xAE605B02,
+-	0xAE603502, 0x00000003, 0x002EE288, 0xAE605B02,
+-	// Block 57, offset 0xe40
+-	0xAE603502, 0x00000002, 0x402EE220, 0xAE606402, 0x00000002, 0x002EE288,
+-	0xAE606402, 0x00000002, 0x402EE220, 0xAE606502, 0x00000002, 0x002EE288,
+-	0xAE606502, 0x00000002, 0x402EE220, 0xAE606702, 0x00000002, 0x002EE288,
+-	0xAE606702, 0x00000002, 0x402EE220, 0xAD806802, 0x00000002, 0x002EE288,
+-	0xAD806802, 0x00000003, 0x402EE220, 0xAD806802, 0xAE603202, 0x00000003,
+-	0x002EE288, 0xAD806802, 0xAE603202, 0x00000003, 0x402EE220, 0xAD806802,
+-	0xAE603502, 0x00000003, 0x002EE288, 0xAD806802, 0xAE603502, 0x00000003,
+-	0x402EE220, 0xAD806802, 0xAE604E02, 0x00000003, 0x002EE288, 0xAD806802,
+-	0xAE604E02, 0x00000003, 0x402EE220, 0xAD806802, 0xAE606402, 0x00000003,
+-	0x002EE288, 0xAD806802, 0xAE606402, 0x00000003, 0x402EE220, 0xAD806802,
+-	0xADC07002, 0x00000003, 0x002EE288, 0xAD806802,
+-	// Block 58, offset 0xe80
+-	0xADC07002, 0x00000002, 0x402EE220, 0xADC07002, 0x00000002, 0x002EE288,
+-	0xADC07002, 0x00000003, 0x402EE220, 0xADC07002, 0xAE603C02, 0x00000003,
+-	0x002EE288, 0xADC07002, 0xAE603C02, 0x00000003, 0x002EE284, 0xA0013904,
+-	0x002C9884, 0x00000003, 0x002EE28A, 0xA0013904, 0x002C988A, 0x00000003,
+-	0x002EE294, 0xA0013914, 0x002C9894, 0x00000002, 0x002EE29D, 0x002DFE9D,
+-	0x00000002, 0x002EE284, 0x002EE284, 0x00000002, 0x002EE28A, 0x002EE28A,
+-	0x00000002, 0x402F2C20, 0xAE603202, 0x00000002, 0x002F2C88, 0xAE603202,
+-	0x00000002, 0x402F2C20, 0xAE605202, 0x00000002, 0x002F2C88, 0xAE605202,
+-	0x00000004, 0x002F2C9C, 0x0002E49C, 0x002E829C, 0x0002E49C, 0x00000002,
+-	0x002F2C9D, 0x002BDE9D, 0x00000003, 0x002F2C9D, 0x002F2C9D, 0x002E829D,
+-	0x00000003, 0x002F2C9D, 0x002F2C9D, 0x0030BE9D,
+-	// Block 59, offset 0xec0
+-	0x00000003, 0x002F2C9D, 0x00302C9D, 0x002C989D, 0x00000002, 0x002F5684,
+-	0x002F2C84, 0x00000002, 0x402F7A20, 0xAE603202, 0x00000002, 0x002F7A88,
+-	0xAE603202, 0x00000002, 0x402F7A20, 0xAE604102, 0x00000002, 0x002F7A88,
+-	0xAE604102, 0x00000002, 0x402F7A20, 0xAE605202, 0x00000002, 0x002F7A88,
+-	0xAE605202, 0x00000002, 0x402F7A20, 0xACA05602, 0x00000002, 0x002F7A88,
+-	0xACA05602, 0x00000002, 0x002F7A84, 0xA0006104, 0x00000002, 0x002F7A8A,
+-	0xA0006104, 0x00000002, 0x402F7A20, 0xAE606502, 0x00000002, 0x002F7A88,
+-	0xAE606502, 0x00000002, 0x402F7A20, 0xAE606702, 0x00000002, 0x002F7A88,
+-	0xAE606702, 0x00000002, 0x402F7A20, 0xADC07002, 0x00000002, 0x002F7A88,
+-	0xADC07002, 0x00000003, 0x402F7A20, 0xADC07002, 0xAE605B02, 0x00000003,
+-	0x002F7A88, 0xADC07002, 0xAE605B02, 0x00000002,
+-	// Block 60, offset 0xf00
+-	0x402F7A20, 0xADC07B02, 0x00000002, 0x002F7A88, 0xADC07B02, 0x00000002,
+-	0x002F7A84, 0xA0013A04, 0x00000002, 0x002F7A8A, 0xA0013A04, 0x00000003,
+-	0x002F7A9C, 0x002BDE9C, 0x002C629C, 0x00000005, 0x002F7A9C, 0x002BDE9C,
+-	0x002C629C, 0x0009569C, 0x002FE69C, 0x00000006, 0x002F7A9C, 0x002BDE9C,
+-	0x002C629C, 0x0009569C, 0x002FE69C, 0x0029D09C, 0x00000002, 0x402FE620,
+-	0xAE603202, 0x00000002, 0x002FE688, 0xAE603202, 0x00000003, 0x402FE620,
+-	0xAE603202, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603202, 0xAE605202,
+-	0x00000002, 0x402FE620, 0xAE603C02, 0x00000002, 0x002FE688, 0xAE603C02,
+-	0x00000002, 0x402FE620, 0xAE604102, 0x00000002, 0x002FE688, 0xAE604102,
+-	0x00000003, 0x402FE620, 0xAE604102, 0xAE605202, 0x00000003, 0x002FE688,
+-	0xAE604102, 0xAE605202, 0x00000002, 0x402FE620,
+-	// Block 61, offset 0xf40
+-	0xAE605202, 0x00000002, 0x002FE688, 0xAE605202, 0x00000002, 0x402FE620,
+-	0xACA05602, 0x00000002, 0x002FE688, 0xACA05602, 0x00000002, 0x002FE684,
+-	0xA0006104, 0x00000002, 0x002FE68A, 0xA0006104, 0x00000002, 0x402FE620,
+-	0xADC07002, 0x00000002, 0x002FE688, 0xADC07002, 0x00000003, 0x402FE620,
+-	0xADC07002, 0xAE605202, 0x00000003, 0x002FE688, 0xADC07002, 0xAE605202,
+-	0x00000002, 0x402FE620, 0xADC07702, 0x00000002, 0x002FE688, 0xADC07702,
+-	0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x84E617F3, 0xAE613A04,
+-	0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x002FE68A, 0xA0013A04,
+-	0x00000003, 0x002FE684, 0xA0013A04, 0xAE605202, 0x00000002, 0x002FE69D,
+-	0x002BDE9D, 0x00000003, 0x002FE69D, 0x002EE29D, 0x002FE69D, 0x00000003,
+-	0x002FE684, 0xA0013904, 0x002FE684, 0x00000003,
+-	// Block 62, offset 0xf80
+-	0x002FE68A, 0xA0013904, 0x002FE68A, 0x00000003, 0x002FE684, 0xA0013A04,
+-	0x00302C84, 0x00000002, 0x40302C20, 0xAE604102, 0x00000002, 0x00302C88,
+-	0xAE604102, 0x00000002, 0x40302C20, 0xAE604702, 0x00000002, 0x40302C20,
+-	0xAE605202, 0x00000002, 0x00302C88, 0xAE605202, 0x00000002, 0x40302C20,
+-	0xACA05602, 0x00000002, 0x00302C88, 0xACA05602, 0x00000002, 0x40302C20,
+-	0xADC07002, 0x00000002, 0x00302C88, 0xADC07002, 0x00000002, 0x40302C20,
+-	0xADC07702, 0x00000002, 0x00302C88, 0xADC07702, 0x00000002, 0x40302C20,
+-	0xADC07802, 0x00000002, 0x00302C88, 0xADC07802, 0x00000002, 0x40302C20,
+-	0xADC07B02, 0x00000002, 0x00302C88, 0xADC07B02, 0x00000002, 0x00302C84,
+-	0xA0013A04, 0x00000002, 0x00302C8A, 0xA0013A04, 0x00000002, 0x00302C84,
+-	0x002C5684, 0x00000003, 0x00302C8A, 0x002C988A,
+-	// Block 63, offset 0xfc0
+-	0x002E228A, 0x00000003, 0x00302C84, 0xA0013904, 0x002D6884, 0x00000003,
+-	0x00302C9D, 0x002D689D, 0x00312A9C, 0x00000002, 0x00302C84, 0x002FE684,
+-	0x00000002, 0x00302C84, 0x002FE684, 0x00000002, 0x00302C84, 0x00300884,
+-	0x00000002, 0x00302C84, 0x00312A84, 0x00000002, 0x00302C8A, 0x00312A84,
+-	0x00000002, 0x40306C20, 0xAE603202, 0x00000002, 0x00306C88, 0xAE603202,
+-	0x00000002, 0x40306C20, 0xAE603502, 0x00000002, 0x00306C88, 0xAE603502,
+-	0x00000002, 0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702,
+-	0x00000002, 0x40306C20, 0xAE603C02, 0x00000002, 0x00306C88, 0xAE603C02,
+-	0x00000002, 0x40306C20, 0xAE604102, 0x00000002, 0x00306C88, 0xAE604102,
+-	0x00000002, 0x40306C20, 0xAE604302, 0x00000002, 0x00306C88, 0xAE604302,
+-	0x00000002, 0x40306C20, 0xAE604702, 0x00000002,
+-	// Block 64, offset 0x1000
+-	0x00306C88, 0xAE604702, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603202,
+-	0x00000003, 0x00306C88, 0xAE604702, 0xAE603202, 0x00000003, 0x40306C20,
+-	0xAE604702, 0xAE603502, 0x00000003, 0x00306C88, 0xAE604702, 0xAE603502,
+-	0x00000003, 0x40306C20, 0xAE604702, 0xAE604102, 0x00000003, 0x00306C88,
+-	0xAE604702, 0xAE604102, 0x00000003, 0x40306C20, 0xAE604702, 0xAE605B02,
+-	0x00000003, 0x00306C88, 0xAE604702, 0xAE605B02, 0x00000002, 0x40306C20,
+-	0xAE604D02, 0x00000002, 0x00306C88, 0xAE604D02, 0x00000002, 0x40306C20,
+-	0xAE604E02, 0x00000002, 0x00306C88, 0xAE604E02, 0x00000003, 0x40306C20,
+-	0xAE604E02, 0xAE603202, 0x00000003, 0x00306C88, 0xAE604E02, 0xAE603202,
+-	0x00000002, 0x40306C20, 0xACA05902, 0x00000002, 0x00306C88, 0xACA05902,
+-	0x00000002, 0x40306C20, 0xAE605B02, 0x00000002,
+-	// Block 65, offset 0x1040
+-	0x00306C88, 0xAE605B02, 0x00000003, 0x40306C20, 0xAE605B02, 0xAE604702,
+-	0x00000003, 0x00306C88, 0xAE605B02, 0xAE604702, 0x00000002, 0x40306C20,
+-	0xAE606402, 0x00000002, 0x00306C88, 0xAE606402, 0x00000002, 0x40306C20,
+-	0xAE606502, 0x00000002, 0x00306C88, 0xAE606502, 0x00000002, 0x40306C20,
+-	0xAE606702, 0x00000002, 0x00306C88, 0xAE606702, 0x00000002, 0x40306C20,
+-	0xAD806802, 0x00000002, 0x00306C88, 0xAD806802, 0x00000003, 0x40306C20,
+-	0xAD806802, 0xAE603202, 0x00000003, 0x00306C88, 0xAD806802, 0xAE603202,
+-	0x00000003, 0x40306C20, 0xAD806802, 0xAE603502, 0x00000003, 0x00306C88,
+-	0xAD806802, 0xAE603502, 0x00000003, 0x40306C20, 0xAD806802, 0xAE604E02,
+-	0x00000003, 0x00306C88, 0xAD806802, 0xAE604E02, 0x00000003, 0x40306C20,
+-	0xAD806802, 0xAE606402, 0x00000003, 0x00306C88,
+-	// Block 66, offset 0x1080
+-	0xAD806802, 0xAE606402, 0x00000003, 0x40306C20, 0xAD806802, 0xADC07002,
+-	0x00000003, 0x00306C88, 0xAD806802, 0xADC07002, 0x00000002, 0x40306C20,
+-	0xADC07002, 0x00000002, 0x00306C88, 0xADC07002, 0x00000002, 0x40306C20,
+-	0xADC07502, 0x00000002, 0x00306C88, 0xADC07502, 0x00000002, 0x40306C20,
+-	0xADC07802, 0x00000002, 0x00306C88, 0xADC07802, 0x00000002, 0x40306C20,
+-	0xADC07A02, 0x00000002, 0x00306C88, 0xADC07A02, 0x00000003, 0x00306C9D,
+-	0x002F2C9D, 0x0002BA9C, 0x00000002, 0x4030BE20, 0xAE604E02, 0x00000002,
+-	0x0030BE88, 0xAE604E02, 0x00000002, 0x4030BE20, 0xADC07002, 0x00000002,
+-	0x0030BE88, 0xADC07002, 0x00000003, 0x0030BE9D, 0x0009569C, 0x002E829C,
+-	0x00000004, 0x0030BE84, 0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000004,
+-	0x0030BE8A, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F,
+-	// Block 67, offset 0x10c0
+-	0x00000002, 0x0030BE9D, 0x002FE69D, 0x00000002, 0x0030BE84, 0x00310084,
+-	0x00000002, 0x0030BE8A, 0x0031008A, 0x00000002, 0x4030E220, 0xAE603202,
+-	0x00000002, 0x0030E288, 0xAE603202, 0x00000002, 0x4030E220, 0xAE603502,
+-	0x00000002, 0x0030E288, 0xAE603502, 0x00000002, 0x4030E220, 0xAE603C02,
+-	0x00000002, 0x0030E288, 0xAE603C02, 0x00000002, 0x4030E220, 0xAE604302,
+-	0x00000002, 0x4030E220, 0xAE604702, 0x00000002, 0x0030E288, 0xAE604702,
+-	0x00000002, 0x4030E220, 0xAE605202, 0x00000002, 0x0030E288, 0xAE605202,
+-	0x00000002, 0x4030E220, 0xADC07002, 0x00000002, 0x0030E288, 0xADC07002,
+-	0x00000002, 0x0030E29D, 0x002C3A9D, 0x00000002, 0x4030F620, 0xAE604702,
+-	0x00000002, 0x0030F688, 0xAE604702, 0x00000002, 0x4030F620, 0xAE605202,
+-	0x00000002, 0x0030F688, 0xAE605202, 0x00000002,
+-	// Block 68, offset 0x1100
+-	0x40310020, 0xAE603202, 0x00000002, 0x00310088, 0xAE603202, 0x00000002,
+-	0x40310020, 0xAE603502, 0x00000002, 0x00310088, 0xAE603502, 0x00000002,
+-	0x40310020, 0xAE603C02, 0x00000002, 0x00310088, 0xAE603C02, 0x00000002,
+-	0x40310020, 0xAE604302, 0x00000002, 0x40310020, 0xAE604702, 0x00000002,
+-	0x00310088, 0xAE604702, 0x00000002, 0x40310020, 0xAE604E02, 0x00000002,
+-	0x00310088, 0xAE604E02, 0x00000002, 0x40310020, 0xAE605202, 0x00000002,
+-	0x00310088, 0xAE605202, 0x00000002, 0x40310020, 0xAE605B02, 0x00000002,
+-	0x00310088, 0xAE605B02, 0x00000002, 0x40310020, 0xAE606402, 0x00000002,
+-	0x00310088, 0xAE606402, 0x00000002, 0x40310020, 0xADC07002, 0x00000002,
+-	0x00310088, 0xADC07002, 0x00000002, 0x40312A20, 0xAE603202, 0x00000002,
+-	0x00312A88, 0xAE603202, 0x00000002, 0x40312A20,
+-	// Block 69, offset 0x1140
+-	0xAE603C02, 0x00000002, 0x00312A88, 0xAE603C02, 0x00000002, 0x40312A20,
+-	0xAE604102, 0x00000002, 0x00312A88, 0xAE604102, 0x00000002, 0x40312A20,
+-	0xAE605202, 0x00000002, 0x00312A88, 0xAE605202, 0x00000002, 0x40312A20,
+-	0xADC07002, 0x00000002, 0x00312A88, 0xADC07002, 0x00000002, 0x40312A20,
+-	0xADC07B02, 0x00000002, 0x00312A88, 0xADC07B02, 0x00000002, 0x00312A84,
+-	0x0030E284, 0x00000002, 0x40316420, 0xAE604102, 0x00000002, 0x00316488,
+-	0xAE604102, 0x00000002, 0x40325220, 0xAE602202, 0x00000002, 0x00325288,
+-	0xAE602202, 0x00000003, 0x40325220, 0xAE602202, 0xAE603202, 0x00000003,
+-	0x00325288, 0xAE602202, 0xAE603202, 0x00000004, 0x40325220, 0xAE602202,
+-	0xAE603202, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202, 0xAE603202,
+-	0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+-	// Block 70, offset 0x1180
+-	0xAE603502, 0x00000003, 0x00325288, 0xAE602202, 0xAE603502, 0x00000004,
+-	0x40325220, 0xAE602202, 0xAE603502, 0xAF007F02, 0x00000004, 0x00325288,
+-	0xAE602202, 0xAE603502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+-	0xAE604502, 0x00000003, 0x00325288, 0xAE602202, 0xAE604502, 0x00000004,
+-	0x40325220, 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00325288,
+-	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202,
+-	0xAF007F02, 0x00000003, 0x00325288, 0xAE602202, 0xAF007F02, 0x00000002,
+-	0x40325220, 0xAE602A02, 0x00000002, 0x00325288, 0xAE602A02, 0x00000003,
+-	0x40325220, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325288, 0xAE602A02,
+-	0xAE603202, 0x00000004, 0x40325220, 0xAE602A02, 0xAE603202, 0xAF007F02,
+-	0x00000004, 0x00325288, 0xAE602A02, 0xAE603202,
+-	// Block 71, offset 0x11c0
+-	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603502, 0x00000003,
+-	0x00325288, 0xAE602A02, 0xAE603502, 0x00000004, 0x40325220, 0xAE602A02,
+-	0xAE603502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE603502,
+-	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE604502, 0x00000003,
+-	0x00325288, 0xAE602A02, 0xAE604502, 0x00000004, 0x40325220, 0xAE602A02,
+-	0xAE604502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE604502,
+-	0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAF007F02, 0x00000003,
+-	0x00325288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x40325220, 0xAE603202,
+-	0x00000002, 0x00325288, 0xAE603202, 0x00000003, 0x40325220, 0xAE603202,
+-	0xAF007F02, 0x00000002, 0x40325220, 0xAE603502, 0x00000002, 0x00325288,
+-	0xAE603502, 0x00000003, 0x40325220, 0xAE603502,
+-	// Block 72, offset 0x1200
+-	0xAF007F02, 0x00000002, 0x40325220, 0xAE603702, 0x00000002, 0x00325288,
+-	0xAE603702, 0x00000002, 0x40325220, 0xAE604502, 0x00000003, 0x40325220,
+-	0xAE604502, 0xAF007F02, 0x00000002, 0x40325220, 0xAE605B02, 0x00000002,
+-	0x00325288, 0xAE605B02, 0x00000002, 0x40325220, 0xAF007F02, 0x00000002,
+-	0x00325288, 0xAF007F02, 0x00000002, 0x40325C20, 0xAE602202, 0x00000002,
+-	0x00325C88, 0xAE602202, 0x00000003, 0x40325C20, 0xAE602202, 0xAE603202,
+-	0x00000003, 0x00325C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40325C20,
+-	0xAE602202, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602202, 0xAE603502,
+-	0x00000002, 0x40325C20, 0xAE602A02, 0x00000002, 0x00325C88, 0xAE602A02,
+-	0x00000003, 0x40325C20, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325C88,
+-	0xAE602A02, 0xAE603202, 0x00000003, 0x40325C20,
+-	// Block 73, offset 0x1240
+-	0xAE602A02, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603502,
+-	0x00000002, 0x40325C20, 0xAE603202, 0x00000002, 0x00325C88, 0xAE603202,
+-	0x00000002, 0x40325C20, 0xAE603502, 0x00000002, 0x00325C88, 0xAE603502,
+-	0x00000002, 0x40326820, 0xAE602202, 0x00000002, 0x00326888, 0xAE602202,
+-	0x00000003, 0x40326820, 0xAE602202, 0xAE603202, 0x00000003, 0x00326888,
+-	0xAE602202, 0xAE603202, 0x00000004, 0x40326820, 0xAE602202, 0xAE603202,
+-	0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603202, 0xAF007F02,
+-	0x00000003, 0x40326820, 0xAE602202, 0xAE603502, 0x00000003, 0x00326888,
+-	0xAE602202, 0xAE603502, 0x00000004, 0x40326820, 0xAE602202, 0xAE603502,
+-	0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603502, 0xAF007F02,
+-	0x00000003, 0x40326820, 0xAE602202, 0xAE604502,
+-	// Block 74, offset 0x1280
+-	0x00000003, 0x00326888, 0xAE602202, 0xAE604502, 0x00000004, 0x40326820,
+-	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202,
+-	0xAE604502, 0xAF007F02, 0x00000003, 0x40326820, 0xAE602202, 0xAF007F02,
+-	0x00000003, 0x00326888, 0xAE602202, 0xAF007F02, 0x00000002, 0x40326820,
+-	0xAE602A02, 0x00000002, 0x00326888, 0xAE602A02, 0x00000003, 0x40326820,
+-	0xAE602A02, 0xAE603202, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603202,
+-	0x00000004, 0x40326820, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000004,
+-	0x00326888, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003, 0x40326820,
+-	0xAE602A02, 0xAE603502, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603502,
+-	0x00000004, 0x40326820, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000004,
+-	0x00326888, 0xAE602A02, 0xAE603502, 0xAF007F02,
+-	// Block 75, offset 0x12c0
+-	0x00000003, 0x40326820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326888,
+-	0xAE602A02, 0xAE604502, 0x00000004, 0x40326820, 0xAE602A02, 0xAE604502,
+-	0xAF007F02, 0x00000004, 0x00326888, 0xAE602A02, 0xAE604502, 0xAF007F02,
+-	0x00000003, 0x40326820, 0xAE602A02, 0xAF007F02, 0x00000003, 0x00326888,
+-	0xAE602A02, 0xAF007F02, 0x00000002, 0x40326820, 0xAE603202, 0x00000002,
+-	0x00326888, 0xAE603202, 0x00000003, 0x40326820, 0xAE603202, 0xAF007F02,
+-	0x00000002, 0x40326820, 0xAE603502, 0x00000002, 0x00326888, 0xAE603502,
+-	0x00000003, 0x40326820, 0xAE603502, 0xAF007F02, 0x00000002, 0x40326820,
+-	0xAE604502, 0x00000003, 0x40326820, 0xAE604502, 0xAF007F02, 0x00000002,
+-	0x40326820, 0xAF007F02, 0x00000002, 0x00326888, 0xAF007F02, 0x00000002,
+-	0x40326C20, 0xAE602202, 0x00000002, 0x00326C88,
+-	// Block 76, offset 0x1300
+-	0xAE602202, 0x00000003, 0x40326C20, 0xAE602202, 0xAE603202, 0x00000003,
+-	0x00326C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602202,
+-	0xAE603502, 0x00000003, 0x00326C88, 0xAE602202, 0xAE603502, 0x00000003,
+-	0x40326C20, 0xAE602202, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602202,
+-	0xAE604502, 0x00000002, 0x40326C20, 0xAE602A02, 0x00000002, 0x00326C88,
+-	0xAE602A02, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603202, 0x00000003,
+-	0x00326C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602A02,
+-	0xAE603502, 0x00000003, 0x00326C88, 0xAE602A02, 0xAE603502, 0x00000003,
+-	0x40326C20, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602A02,
+-	0xAE604502, 0x00000002, 0x40326C20, 0xAE603202, 0x00000002, 0x00326C88,
+-	0xAE603202, 0x00000002, 0x40326C20, 0xAE603502,
+-	// Block 77, offset 0x1340
+-	0x00000002, 0x00326C88, 0xAE603502, 0x00000002, 0x40326C20, 0xAE603702,
+-	0x00000002, 0x00326C88, 0xAE603702, 0x00000002, 0x40326C20, 0xAE604502,
+-	0x00000002, 0x40326C20, 0xAE604702, 0x00000002, 0x00326C88, 0xAE604702,
+-	0x00000003, 0x40326C20, 0xAE604702, 0xAE603202, 0x00000003, 0x40326C20,
+-	0xAE604702, 0xAE603502, 0x00000003, 0x40326C20, 0xAE604702, 0xAE604502,
+-	0x00000002, 0x40326C20, 0xAE605B02, 0x00000002, 0x00326C88, 0xAE605B02,
+-	0x00000003, 0x00327084, 0x00325284, 0x00326C84, 0x00000003, 0x0032708A,
+-	0x00325284, 0x00326C84, 0x00000002, 0x40327C20, 0xAE602202, 0x00000002,
+-	0x00327C88, 0xAE602202, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603202,
+-	0x00000003, 0x00327C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40327C20,
+-	0xAE602202, 0xAE603502, 0x00000003, 0x00327C88,
+-	// Block 78, offset 0x1380
+-	0xAE602202, 0xAE603502, 0x00000002, 0x40327C20, 0xAE602A02, 0x00000002,
+-	0x00327C88, 0xAE602A02, 0x00000003, 0x40327C20, 0xAE602A02, 0xAE603202,
+-	0x00000003, 0x00327C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40327C20,
+-	0xAE602A02, 0xAE603502, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603502,
+-	0x00000002, 0x40327C20, 0xAE603202, 0x00000002, 0x00327C88, 0xAE603202,
+-	0x00000002, 0x40327C20, 0xAE603502, 0x00000002, 0x00327C88, 0xAE603502,
+-	0x00000002, 0x40328820, 0xAE602202, 0x00000002, 0x40328820, 0xAE602A02,
+-	0x00000002, 0x00328888, 0xAE602A02, 0x00000002, 0x40329820, 0xAE602202,
+-	0x00000003, 0x40329820, 0xAE602202, 0xAE603202, 0x00000003, 0x40329820,
+-	0xAE602202, 0xAE603502, 0x00000003, 0x40329820, 0xAE602202, 0xAE604502,
+-	0x00000002, 0x40329820, 0xAE602A02, 0x00000002,
+-	// Block 79, offset 0x13c0
+-	0x00329888, 0xAE602A02, 0x00000003, 0x40329820, 0xAE602A02, 0xAE603202,
+-	0x00000003, 0x00329888, 0xAE602A02, 0xAE603202, 0x00000003, 0x40329820,
+-	0xAE602A02, 0xAE603502, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603502,
+-	0x00000003, 0x40329820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00329888,
+-	0xAE602A02, 0xAE604502, 0x00000002, 0x40329820, 0xAE603202, 0x00000002,
+-	0x00329888, 0xAE603202, 0x00000002, 0x40329820, 0xAE603502, 0x00000002,
+-	0x00329888, 0xAE603502, 0x00000002, 0x40329820, 0xAE603702, 0x00000002,
+-	0x00329888, 0xAE603702, 0x00000002, 0x40329820, 0xAE604502, 0x00000002,
+-	0x40329820, 0xAE604702, 0x00000002, 0x00329888, 0xAE604702, 0x00000003,
+-	0x40329820, 0xAE604702, 0xAE603202, 0x00000003, 0x40329820, 0xAE604702,
+-	0xAE603502, 0x00000003, 0x40329820, 0xAE604702,
+-	// Block 80, offset 0x1400
+-	0xAE604502, 0x00000002, 0x40329820, 0xAE605B02, 0x00000002, 0x00329888,
+-	0xAE605B02, 0x00000002, 0x4032A220, 0xAE602202, 0x00000002, 0x0032A288,
+-	0xAE602202, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603202, 0x00000003,
+-	0x0032A288, 0xAE602202, 0xAE603202, 0x00000004, 0x4032A220, 0xAE602202,
+-	0xAE603202, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603202,
+-	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603502, 0x00000003,
+-	0x0032A288, 0xAE602202, 0xAE603502, 0x00000004, 0x4032A220, 0xAE602202,
+-	0xAE603502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603502,
+-	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE604502, 0x00000003,
+-	0x0032A288, 0xAE602202, 0xAE604502, 0x00000004, 0x4032A220, 0xAE602202,
+-	0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288,
+-	// Block 81, offset 0x1440
+-	0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202,
+-	0xAF007F02, 0x00000003, 0x0032A288, 0xAE602202, 0xAF007F02, 0x00000002,
+-	0x4032A220, 0xAE602A02, 0x00000002, 0x0032A288, 0xAE602A02, 0x00000003,
+-	0x4032A220, 0xAE602A02, 0xAE603202, 0x00000003, 0x0032A288, 0xAE602A02,
+-	0xAE603202, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603202, 0xAF007F02,
+-	0x00000004, 0x0032A288, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003,
+-	0x4032A220, 0xAE602A02, 0xAE603502, 0x00000003, 0x0032A288, 0xAE602A02,
+-	0xAE603502, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603502, 0xAF007F02,
+-	0x00000004, 0x0032A288, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000003,
+-	0x4032A220, 0xAE602A02, 0xAE604502, 0x00000003, 0x0032A288, 0xAE602A02,
+-	0xAE604502, 0x00000004, 0x4032A220, 0xAE602A02,
+-	// Block 82, offset 0x1480
+-	0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602A02, 0xAE604502,
+-	0xAF007F02, 0x00000003, 0x4032A220, 0xAE602A02, 0xAF007F02, 0x00000003,
+-	0x0032A288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x4032A220, 0xAE603202,
+-	0x00000002, 0x0032A288, 0xAE603202, 0x00000003, 0x4032A220, 0xAE603202,
+-	0xAF007F02, 0x00000002, 0x4032A220, 0xAE603502, 0x00000002, 0x0032A288,
+-	0xAE603502, 0x00000003, 0x4032A220, 0xAE603502, 0xAF007F02, 0x00000002,
+-	0x4032A220, 0xAE604502, 0x00000003, 0x4032A220, 0xAE604502, 0xAF007F02,
+-	0x00000002, 0x4032A220, 0xAF007F02, 0x00000002, 0x0032A288, 0xAF007F02,
+-	0x00000003, 0x0032C084, 0x0032AA84, 0x0032BE84, 0x00000002, 0x00336284,
+-	0xA0013A04, 0x00000002, 0x0033628A, 0xA0013A04, 0x00000002, 0x4033B220,
+-	0xAE603502, 0x00000002, 0x0033B288, 0xAE603502,
+-	// Block 83, offset 0x14c0
+-	0x00000002, 0x4033B220, 0xAE604702, 0x00000002, 0x0033B288, 0xAE604702,
+-	0x00000002, 0x4033CA20, 0xAE603702, 0x00000002, 0x0033CA88, 0xAE603702,
+-	0x00000002, 0x40341420, 0xAE603502, 0x00000002, 0x00341488, 0xAE603502,
+-	0x00000002, 0x40341420, 0xAE605B02, 0x00000002, 0x00341488, 0xAE605B02,
+-	0x00000002, 0x84E61A9D, 0x84E61AA6, 0x00000002, 0x40357220, 0xAE605B02,
+-	0x00000002, 0x00357288, 0xAE605B02, 0x00000002, 0x40389020, 0xA1108C02,
+-	0x00000002, 0x40389020, 0xA1208D02, 0x00000002, 0x40389020, 0xA1509202,
+-	0x00000002, 0x40389220, 0xA1509202, 0x00000002, 0x40389220, 0xA1709502,
+-	0x00000002, 0x40389420, 0xA1509202, 0x00000002, 0x40389620, 0xA1509202,
+-	0x00000002, 0x40389820, 0xA1509202, 0x00000002, 0x40389A20, 0xA1308E02,
+-	0x00000002, 0x40389A20, 0xA1509202, 0x00000002,
+-	// Block 84, offset 0x1500
+-	0x00389A84, 0x00389A84, 0x00000002, 0x00389A84, 0x0038A284, 0x00000002,
+-	0x40389C20, 0xA1509202, 0x00000002, 0x4038A020, 0xA1509202, 0x00000002,
+-	0x4038A220, 0xA0E08902, 0x00000002, 0x4038A220, 0xA1509202, 0x00000002,
+-	0x0038A284, 0x0038A284, 0x00000003, 0x0038A284, 0x0038A284, 0xA1108C02,
+-	0x00000002, 0x4038A420, 0xA1509202, 0x00000002, 0x0038A499, 0xA1509202,
+-	0x00000002, 0x4038A420, 0xA1709502, 0x00000002, 0x4038A620, 0xA1509202,
+-	0x00000002, 0x4038A820, 0xA1509202, 0x00000002, 0x4038AA20, 0xA1509202,
+-	0x00000002, 0x4038AC20, 0xA1509202, 0x00000002, 0x4038B020, 0xA1509202,
+-	0x00000002, 0x0038B099, 0xA1509202, 0x00000002, 0x4038B020, 0xA1709502,
+-	0x00000002, 0x4038B220, 0xA1509202, 0x00000002, 0x4038B420, 0xA1509202,
+-	0x00000002, 0x4038B620, 0xA1509202, 0x00000002,
+-	// Block 85, offset 0x1540
+-	0x4038B820, 0xA1909002, 0x00000002, 0x4038B820, 0xA1809102, 0x00000002,
+-	0x4038B820, 0xA1509202, 0x00000003, 0x4038B820, 0xA1509202, 0xA1909002,
+-	0x00000003, 0x4038B820, 0xA1509202, 0xA1809102, 0x00000002, 0x4038BA20,
+-	0xA1509202, 0x00000002, 0x00391C84, 0xA0013A04, 0x00000002, 0x00393099,
+-	0x00393899, 0x00000002, 0x0039309A, 0x0039389A, 0x00000002, 0x00393097,
+-	0x00396497, 0x00000002, 0x0039309A, 0x0039649A, 0x00000002, 0x00393097,
+-	0x00397297, 0x00000002, 0x0039309A, 0x0039729A, 0x00000002, 0x00393097,
+-	0x00397497, 0x00000002, 0x00393099, 0x0039A499, 0x00000002, 0x00393099,
+-	0x0039A699, 0x00000002, 0x00393097, 0x003A4E97, 0x00000002, 0x00393098,
+-	0x003A4E98, 0x00000002, 0x00393099, 0x003A4E99, 0x00000002, 0x0039309A,
+-	0x003A4E9A, 0x00000002, 0x00393099, 0x003A5699,
+-	// Block 86, offset 0x1580
+-	0x00000002, 0x00393097, 0x003A6897, 0x00000002, 0x00393098, 0x003A6898,
+-	0x00000002, 0x00393099, 0x003A7299, 0x00000002, 0x0039309A, 0x003A729A,
+-	0x00000002, 0x00393099, 0x003A7499, 0x00000002, 0x0039309A, 0x003A749A,
+-	0x00000002, 0x00393099, 0x003A7A99, 0x00000002, 0x0039309A, 0x003A7A9A,
+-	0x00000002, 0x00393099, 0x003A7C99, 0x00000002, 0x0039309A, 0x003A7C9A,
+-	0x00000002, 0x00393099, 0x003A7E99, 0x00000002, 0x0039309A, 0x003A7E9A,
+-	0x00000002, 0x00393097, 0x003A8E97, 0x00000002, 0x00393099, 0x003A8E99,
+-	0x00000002, 0x00393099, 0x003A8E99, 0x00000002, 0x0039309A, 0x003A8E9A,
+-	0x00000002, 0x0039309A, 0x003A8E9A, 0x00000002, 0x00393099, 0x003A9099,
+-	0x00000002, 0x0039309A, 0x003A909A, 0x00000002, 0x00393097, 0x003A9897,
+-	0x00000002, 0x00393099, 0x003A9899, 0x00000002,
+-	// Block 87, offset 0x15c0
+-	0x0039309A, 0x003A989A, 0x00000004, 0x0039389A, 0x003A1A9A, 0x00393C9A,
+-	0x0039A49A, 0x00000004, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,
+-	0x00000003, 0x00393C99, 0x00397299, 0x003A9099, 0x00000003, 0x00393C99,
+-	0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x00396497, 0x003A4E97,
+-	0x00000003, 0x00395699, 0x00396499, 0x003A8E99, 0x00000003, 0x00395699,
+-	0x00396499, 0x003A9099, 0x00000003, 0x00395697, 0x00397297, 0x00396497,
+-	0x00000003, 0x00395699, 0x00397299, 0x00396499, 0x00000003, 0x00395697,
+-	0x00397297, 0x003A4E97, 0x00000003, 0x00395697, 0x00397497, 0x003A4E97,
+-	0x00000003, 0x00395699, 0x00397499, 0x003A8E99, 0x00000003, 0x00395699,
+-	0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x003A4E97, 0x00396497,
+-	0x00000003, 0x00395697, 0x003A4E97, 0x00397297,
+-	// Block 88, offset 0x1600
+-	0x00000003, 0x00395697, 0x003A4E97, 0x00397497, 0x00000003, 0x00395699,
+-	0x003A4E99, 0x003A8E99, 0x00000003, 0x00395699, 0x003A4E99, 0x003A9099,
+-	0x00000003, 0x00396499, 0x00397299, 0x003A8E99, 0x00000003, 0x00396499,
+-	0x00397299, 0x003A9099, 0x00000008, 0x0039649A, 0x003A409A, 0x0002129A,
+-	0x0039649A, 0x003A409A, 0x0039389A, 0x003A409A, 0x003A689A, 0x00000003,
+-	0x00396497, 0x003A4E97, 0x00397297, 0x00000003, 0x00396499, 0x003A4E99,
+-	0x00397299, 0x00000003, 0x00396499, 0x003A4E99, 0x003A8E99, 0x00000003,
+-	0x00396499, 0x003A4E99, 0x003A9099, 0x00000003, 0x00397299, 0x00396499,
+-	0x003A9099, 0x00000003, 0x00397299, 0x003A4E99, 0x003A8E99, 0x00000003,
+-	0x00397299, 0x003A4E99, 0x003A9099, 0x00000004, 0x0039A49A, 0x0039C69A,
+-	0x003A749A, 0x003A409A, 0x00000003, 0x0039C697,
+-	// Block 89, offset 0x1640
+-	0x00396497, 0x00397297, 0x00000003, 0x0039C699, 0x00396499, 0x003A8E99,
+-	0x00000003, 0x0039C697, 0x00397297, 0x00396497, 0x00000003, 0x0039C699,
+-	0x00397499, 0x003A8E99, 0x00000003, 0x0039C699, 0x00397499, 0x003A9099,
+-	0x00000003, 0x0039C697, 0x003A4E97, 0x00396497, 0x00000003, 0x0039C697,
+-	0x003A4E97, 0x00397297, 0x00000003, 0x0039C699, 0x003A4E99, 0x00397299,
+-	0x00000003, 0x0039C697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C699,
+-	0x003A4E99, 0x003A4E99, 0x00000003, 0x0039C899, 0x00396499, 0x003A9099,
+-	0x00000003, 0x0039C897, 0x00397297, 0x003A4E97, 0x00000003, 0x0039C899,
+-	0x00397299, 0x003A4E99, 0x00000003, 0x0039C899, 0x00397299, 0x003A9099,
+-	0x00000003, 0x0039C897, 0x003A4E97, 0x00397497, 0x00000003, 0x0039C899,
+-	0x003A4E99, 0x00397499, 0x00000003, 0x0039C897,
+-	// Block 90, offset 0x1680
+-	0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C899, 0x003A4E99, 0x003A4E99,
+-	0x00000003, 0x0039DC97, 0x00397297, 0x00397297, 0x00000003, 0x0039DC99,
+-	0x00397299, 0x00397299, 0x00000003, 0x0039DC99, 0x00397299, 0x003A9099,
+-	0x00000004, 0x0039DC9A, 0x003A409A, 0x0039EE9A, 0x003A4E9A, 0x00000003,
+-	0x0039DC9A, 0x003A409A, 0x003A8E9A, 0x00000012, 0x0039DC9A, 0x003A409A,
+-	0x003A8E9A, 0x0002129A, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A,
+-	0x0002129A, 0x0039EE9A, 0x003A409A, 0x003A909A, 0x003A689A, 0x0002129A,
+-	0x003A749A, 0x0039C69A, 0x003A409A, 0x003A4E9A, 0x00000003, 0x0039DC9A,
+-	0x003A409A, 0x003AAA9A, 0x00000003, 0x0039DC97, 0x003A4E97, 0x003A4E97,
+-	0x00000003, 0x0039DC99, 0x003A4E99, 0x003A4E99, 0x00000003, 0x0039DE99,
+-	0x00397299, 0x003A8E99, 0x00000003, 0x0039DE99,
+-	// Block 91, offset 0x16c0
+-	0x00397299, 0x003A9099, 0x00000003, 0x0039DE97, 0x00397497, 0x003A4E97,
+-	0x00000003, 0x0039DE99, 0x00397499, 0x003A4E99, 0x00000003, 0x0039E697,
+-	0x003A4E97, 0x00397297, 0x00000003, 0x0039E699, 0x003A4E99, 0x00397299,
+-	0x00000003, 0x0039E697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039E699,
+-	0x003A4E99, 0x003A9099, 0x00000003, 0x0039EE97, 0x00396497, 0x003A4E97,
+-	0x00000003, 0x0039EE99, 0x00396499, 0x003A4E99, 0x00000004, 0x0039EE9A,
+-	0x003A409A, 0x003A909A, 0x003A689A, 0x00000003, 0x0039EE97, 0x003A4E97,
+-	0x003A4E97, 0x00000003, 0x0039EE99, 0x003A4E99, 0x003A4E99, 0x00000003,
+-	0x0039EE99, 0x003A4E99, 0x003A8E99, 0x00000003, 0x0039EE99, 0x003A4E99,
+-	0x003A9099, 0x00000003, 0x0039F099, 0x003A4E99, 0x003A4E99, 0x00000003,
+-	0x0039F099, 0x003A4E99, 0x003A8E99, 0x00000003,
+-	// Block 92, offset 0x1700
+-	0x0039F099, 0x003A4E99, 0x003A9099, 0x00000003, 0x0039FC97, 0x00397497,
+-	0x003A4E97, 0x00000003, 0x0039FC99, 0x00397499, 0x003A4E99, 0x00000003,
+-	0x0039FC99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A129A, 0x003A409A,
+-	0x003AAA9A, 0x00000003, 0x003A1297, 0x003A4E97, 0x00397297, 0x00000003,
+-	0x003A1299, 0x003A4E99, 0x00397299, 0x00000003, 0x003A1299, 0x003A4E99,
+-	0x003A4E99, 0x00000003, 0x003A1299, 0x003A4E99, 0x003A9099, 0x00000003,
+-	0x003A1A97, 0x003A4E97, 0x003A4E97, 0x00000003, 0x003A1A99, 0x003A4E99,
+-	0x003A4E99, 0x00000003, 0x003A1A99, 0x003A4E99, 0x003A9099, 0x00000002,
+-	0x003A4099, 0x00391E99, 0x00000002, 0x003A409A, 0x00391E9A, 0x00000002,
+-	0x003A4099, 0x00392099, 0x00000002, 0x003A409A, 0x0039209A, 0x00000002,
+-	0x003A4099, 0x00392899, 0x00000002, 0x003A409A,
+-	// Block 93, offset 0x1740
+-	0x0039289A, 0x00000003, 0x003A4097, 0x00396497, 0x00396497, 0x00000003,
+-	0x003A4099, 0x00396499, 0x00396499, 0x00000003, 0x003A4097, 0x00396497,
+-	0x003A4E97, 0x00000003, 0x003A4099, 0x00396499, 0x003A4E99, 0x00000003,
+-	0x003A4099, 0x00396499, 0x003A9099, 0x00000003, 0x003A4097, 0x00397297,
+-	0x003A4E97, 0x00000003, 0x003A4099, 0x00397299, 0x003A4E99, 0x00000003,
+-	0x003A4099, 0x00397299, 0x003A8E99, 0x00000003, 0x003A4099, 0x00397299,
+-	0x003A9099, 0x00000003, 0x003A4097, 0x00397497, 0x003A4E97, 0x00000003,
+-	0x003A4099, 0x00397499, 0x003A4E99, 0x00000003, 0x003A4097, 0x003A4E97,
+-	0x00397297, 0x00000003, 0x003A4099, 0x003A4E99, 0x00397299, 0x00000003,
+-	0x003A4099, 0x003A4E99, 0x003A9099, 0x00000002, 0x003A4E84, 0xA0013A04,
+-	0x00000003, 0x003A4E97, 0x00396497, 0x00397297,
+-	// Block 94, offset 0x1780
+-	0x00000003, 0x003A4E97, 0x00396497, 0x00397497, 0x00000003, 0x003A4E97,
+-	0x00396497, 0x003A4E97, 0x00000003, 0x003A4E99, 0x00396499, 0x003A9099,
+-	0x00000003, 0x003A4E97, 0x00397297, 0x00396497, 0x00000003, 0x003A4E97,
+-	0x00397297, 0x003A4E97, 0x00000004, 0x003A4E9A, 0x0039729A, 0x003A4E9A,
+-	0x0039889A, 0x00000003, 0x003A4E99, 0x00397299, 0x003A9099, 0x00000003,
+-	0x003A4E97, 0x00397497, 0x00396497, 0x00000003, 0x003A4E97, 0x00397497,
+-	0x003A4E97, 0x00000003, 0x003A4E99, 0x00397499, 0x003A9099, 0x00000003,
+-	0x003A4E99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A5697, 0x00396497,
+-	0x00397297, 0x00000003, 0x003A5699, 0x00396499, 0x00397299, 0x00000003,
+-	0x003A5697, 0x00396497, 0x003A4E97, 0x00000003, 0x003A5699, 0x00396499,
+-	0x003A4E99, 0x00000003, 0x003A5699, 0x00396499,
+-	// Block 95, offset 0x17c0
+-	0x003A8E99, 0x00000003, 0x003A5699, 0x00396499, 0x003A9099, 0x00000003,
+-	0x003A5697, 0x00397297, 0x003A4E97, 0x00000003, 0x003A5699, 0x00397299,
+-	0x003A8E99, 0x00000003, 0x003A5699, 0x00397299, 0x003A9099, 0x00000003,
+-	0x003A5699, 0x003A4E99, 0x003A8E99, 0x00000003, 0x003A5699, 0x003A4E99,
+-	0x003A9099, 0x00000003, 0x003A6897, 0x003A4E97, 0x00396497, 0x00000003,
+-	0x003A6897, 0x003A4E97, 0x003A4E97, 0x00000002, 0x403A6C20, 0xAE60BE02,
+-	0x00000002, 0x403A7220, 0xAE60BE02, 0x00000004, 0x003A749A, 0x0039C69A,
+-	0x003A409A, 0x003A4E9A, 0x00000003, 0x003A9099, 0x00396499, 0x003A9099,
+-	0x00000003, 0x003A9099, 0x00397299, 0x003A9099, 0x00000003, 0x003A9097,
+-	0x003A4E97, 0x003A4E97, 0x00000003, 0x003A9099, 0x003A4E99, 0x003A4E99,
+-	0x00000003, 0x003A9099, 0x003A4E99, 0x003A9099,
+-	// Block 96, offset 0x1800
+-	0x00000002, 0x403AAA20, 0xAE60BE02, 0x00000002, 0x003AB284, 0xA0013C04,
+-	0x00000002, 0x003AB484, 0xA0013A04, 0x00000002, 0x003AB484, 0xA0013C04,
+-	0x00000002, 0x003AB884, 0xA0013C04, 0x00000002, 0x003AC484, 0xA0013A04,
+-	0x00000002, 0x003AD884, 0xA0013A04, 0x00000002, 0x003B9484, 0xA0013904,
+-	0x00000002, 0x003B9684, 0xA0013904, 0x00000002, 0x003B9A84, 0xA0013904,
+-	0x00000002, 0x403FEC20, 0xA070F102, 0x00000002, 0x403FEE20, 0xA070F102,
+-	0x00000002, 0x403FF020, 0xA070F102, 0x00000002, 0x403FFC20, 0xA070F102,
+-	0x00000002, 0x40400A20, 0xA070F102, 0x00000002, 0x40400E20, 0xA070F102,
+-	0x00000002, 0x40401A20, 0xA070F102, 0x00000002, 0x40401E20, 0xA070F102,
+-	0x00000002, 0x40402820, 0xA070F102, 0x00000002, 0x40402C20, 0xA070F102,
+-	0x00000002, 0x40403020, 0xA070F102, 0x00000002,
+-	// Block 97, offset 0x1840
+-	0x4040B020, 0xA070F102, 0x00000002, 0x4040B220, 0xA070F102, 0x00000002,
+-	0x0040B684, 0x0040F884, 0x00000002, 0x4040CA20, 0xA070F102, 0x00000002,
+-	0x40411620, 0xA070F102, 0x00000002, 0x40411E20, 0xA070F102, 0x00000002,
+-	0x40412020, 0xA070F102, 0x00000002, 0x40412A20, 0xA070F102, 0x00000002,
+-	0x40414620, 0xA070F102, 0x00000002, 0x40415420, 0xA070F102, 0x00000002,
+-	0x40422A20, 0xA070F102, 0x00000002, 0x40422C20, 0xA070F102, 0x00000002,
+-	0x00442284, 0x00449084, 0x00000002, 0x00443E84, 0x00449084, 0x00000002,
+-	0x00444884, 0x00449084, 0x00000002, 0x00445884, 0x00449084, 0x00000002,
+-	0x00445884, 0x00449084, 0x00000002, 0x00445A84, 0x00449084, 0x00000002,
+-	0x00446684, 0x00449084, 0x00000002, 0x4046AA20, 0xA070F102, 0x00000002,
+-	0x4046AC20, 0xA070F102, 0x00000002, 0x4046BE20,
+-	// Block 98, offset 0x1880
+-	0xA070F102, 0x00000002, 0x40491020, 0x40498420, 0x00000002, 0x40491020,
+-	0x40498620, 0x00000002, 0x40491020, 0x40498820, 0x00000002, 0x40491020,
+-	0x40498A20, 0x00000002, 0x40491020, 0x40498C20, 0x00000002, 0x40491220,
+-	0x40498420, 0x00000002, 0x40491220, 0x40498620, 0x00000002, 0x40491220,
+-	0x40498820, 0x00000002, 0x40491220, 0x40498A20, 0x00000002, 0x40491220,
+-	0x40498C20, 0x00000002, 0x40491420, 0x40498420, 0x00000002, 0x40491420,
+-	0x40498620, 0x00000002, 0x40491420, 0x40498820, 0x00000002, 0x40491420,
+-	0x40498A20, 0x00000002, 0x40491420, 0x40498C20, 0x00000002, 0x40491620,
+-	0x40498420, 0x00000002, 0x40491620, 0x40498620, 0x00000002, 0x40491620,
+-	0x40498820, 0x00000002, 0x40491620, 0x40498A20, 0x00000002, 0x40491620,
+-	0x40498C20, 0x00000002, 0x40491820, 0x40498420,
+-	// Block 99, offset 0x18c0
+-	0x00000002, 0x40491820, 0x40498620, 0x00000002, 0x40491820, 0x40498820,
+-	0x00000002, 0x40491820, 0x40498A20, 0x00000002, 0x40491820, 0x40498C20,
+-	0x00000002, 0x40491A20, 0x40498420, 0x00000002, 0x40491A20, 0x40498620,
+-	0x00000002, 0x40491A20, 0x40498820, 0x00000002, 0x40491A20, 0x40498A20,
+-	0x00000002, 0x40491A20, 0x40498C20, 0x00000002, 0x40491C20, 0x40498420,
+-	0x00000002, 0x40491C20, 0x40498620, 0x00000002, 0x40491C20, 0x40498820,
+-	0x00000002, 0x40491C20, 0x40498A20, 0x00000002, 0x40491C20, 0x40498C20,
+-	0x00000002, 0x40491E20, 0x40498420, 0x00000002, 0x40491E20, 0x40498620,
+-	0x00000002, 0x40491E20, 0x40498820, 0x00000002, 0x40491E20, 0x40498A20,
+-	0x00000002, 0x40491E20, 0x40498C20, 0x00000002, 0x40492020, 0x40498420,
+-	0x00000002, 0x40492020, 0x40498620, 0x00000002,
+-	// Block 100, offset 0x1900
+-	0x40492020, 0x40498820, 0x00000002, 0x40492020, 0x40498A20, 0x00000002,
+-	0x40492020, 0x40498C20, 0x00000002, 0x40492220, 0x40498420, 0x00000002,
+-	0x40492220, 0x40498620, 0x00000002, 0x40492220, 0x40498820, 0x00000002,
+-	0x40492220, 0x40498A20, 0x00000002, 0x40492220, 0x40498C20, 0x00000002,
+-	0x40492420, 0x40498420, 0x00000002, 0x40492420, 0x40498620, 0x00000002,
+-	0x40492420, 0x40498820, 0x00000002, 0x40492420, 0x40498A20, 0x00000002,
+-	0x40492420, 0x40498C20, 0x00000002, 0x40492620, 0x40498420, 0x00000002,
+-	0x40492620, 0x40498620, 0x00000002, 0x40492620, 0x40498820, 0x00000002,
+-	0x40492620, 0x40498A20, 0x00000002, 0x40492620, 0x40498C20, 0x00000002,
+-	0x40492820, 0x40498420, 0x00000002, 0x40492820, 0x40498620, 0x00000002,
+-	0x40492820, 0x40498820, 0x00000002, 0x40492820,
+-	// Block 101, offset 0x1940
+-	0x40498A20, 0x00000002, 0x40492820, 0x40498C20, 0x00000002, 0x40492A20,
+-	0x40498420, 0x00000002, 0x40492A20, 0x40498620, 0x00000002, 0x40492A20,
+-	0x40498820, 0x00000002, 0x40492A20, 0x40498A20, 0x00000002, 0x40492A20,
+-	0x40498C20, 0x00000002, 0x40492C20, 0x40498420, 0x00000002, 0x40492C20,
+-	0x40498620, 0x00000002, 0x40492C20, 0x40498820, 0x00000002, 0x40492C20,
+-	0x40498A20, 0x00000002, 0x40492C20, 0x40498C20, 0x00000002, 0x40492E20,
+-	0x40498420, 0x00000002, 0x40492E20, 0x40498620, 0x00000002, 0x40492E20,
+-	0x40498820, 0x00000002, 0x40492E20, 0x40498A20, 0x00000002, 0x40492E20,
+-	0x40498C20, 0x00000002, 0x40493020, 0x40498420, 0x00000002, 0x40493020,
+-	0x40498620, 0x00000002, 0x40493020, 0x40498820, 0x00000002, 0x40493020,
+-	0x40498A20, 0x00000002, 0x40493020, 0x40498C20,
+-	// Block 102, offset 0x1980
+-	0x00000002, 0x40493220, 0x40498420, 0x00000002, 0x40493220, 0x40498620,
+-	0x00000002, 0x40493220, 0x40498820, 0x00000002, 0x40493220, 0x40498A20,
+-	0x00000002, 0x40493220, 0x40498C20, 0x00000002, 0x40493420, 0x40498420,
+-	0x00000002, 0x40493420, 0x40498620, 0x00000002, 0x40493420, 0x40498820,
+-	0x00000002, 0x40493420, 0x40498A20, 0x00000002, 0x40493420, 0x40498C20,
+-	0x00000002, 0x40493620, 0x40498420, 0x00000002, 0x40493620, 0x40498620,
+-	0x00000002, 0x40493620, 0x40498820, 0x00000002, 0x40493620, 0x40498A20,
+-	0x00000002, 0x40493620, 0x40498C20, 0x00000002, 0x40493820, 0x40498420,
+-	0x00000002, 0x40493820, 0x40498620, 0x00000002, 0x40493820, 0x40498820,
+-	0x00000002, 0x40493820, 0x40498A20, 0x00000002, 0x40493820, 0x40498C20,
+-	0x00000002, 0x40493A20, 0x40498420, 0x00000002,
+-	// Block 103, offset 0x19c0
+-	0x40493A20, 0x40498620, 0x00000002, 0x40493A20, 0x40498820, 0x00000002,
+-	0x40493A20, 0x40498A20, 0x00000002, 0x40493A20, 0x40498C20, 0x00000002,
+-	0x40493C20, 0x40498420, 0x00000002, 0x40493C20, 0x40498620, 0x00000002,
+-	0x40493C20, 0x40498820, 0x00000002, 0x40493C20, 0x40498A20, 0x00000002,
+-	0x40493C20, 0x40498C20, 0x00000002, 0x40493E20, 0x40498420, 0x00000002,
+-	0x40493E20, 0x40498620, 0x00000002, 0x40493E20, 0x40498820, 0x00000002,
+-	0x40493E20, 0x40498A20, 0x00000002, 0x40493E20, 0x40498C20, 0x00000002,
+-	0x40494020, 0x40498420, 0x00000002, 0x40494020, 0x40498620, 0x00000002,
+-	0x40494020, 0x40498820, 0x00000002, 0x40494020, 0x40498A20, 0x00000002,
+-	0x40494020, 0x40498C20, 0x00000002, 0x40494220, 0x40498420, 0x00000002,
+-	0x40494220, 0x40498620, 0x00000002, 0x40494220,
+-	// Block 104, offset 0x1a00
+-	0x40498820, 0x00000002, 0x40494220, 0x40498A20, 0x00000002, 0x40494220,
+-	0x40498C20, 0x00000002, 0x40494420, 0x40498420, 0x00000002, 0x40494420,
+-	0x40498620, 0x00000002, 0x40494420, 0x40498820, 0x00000002, 0x40494420,
+-	0x40498A20, 0x00000002, 0x40494420, 0x40498C20, 0x00000002, 0x40494620,
+-	0x40498420, 0x00000002, 0x40494620, 0x40498620, 0x00000002, 0x40494620,
+-	0x40498820, 0x00000002, 0x40494620, 0x40498A20, 0x00000002, 0x40494620,
+-	0x40498C20, 0x00000002, 0x40494820, 0x40498420, 0x00000002, 0x40494820,
+-	0x40498620, 0x00000002, 0x40494820, 0x40498820, 0x00000002, 0x40494820,
+-	0x40498A20, 0x00000002, 0x40494820, 0x40498C20, 0x00000002, 0x40494A20,
+-	0x40498420, 0x00000002, 0x40494A20, 0x40498620, 0x00000002, 0x40494A20,
+-	0x40498820, 0x00000002, 0x40494A20, 0x40498A20,
+-	// Block 105, offset 0x1a40
+-	0x00000002, 0x40494A20, 0x40498C20, 0x00000002, 0x40494C20, 0x40498420,
+-	0x00000002, 0x40494C20, 0x40498620, 0x00000002, 0x40494C20, 0x40498820,
+-	0x00000002, 0x40494C20, 0x40498A20, 0x00000002, 0x40494C20, 0x40498C20,
+-	0x00000002, 0x40494E20, 0x40498420, 0x00000002, 0x40494E20, 0x40498620,
+-	0x00000002, 0x40494E20, 0x40498820, 0x00000002, 0x40494E20, 0x40498A20,
+-	0x00000002, 0x40494E20, 0x40498C20, 0x00000002, 0x40495020, 0x40498420,
+-	0x00000002, 0x40495020, 0x40498620, 0x00000002, 0x40495020, 0x40498820,
+-	0x00000002, 0x40495020, 0x40498A20, 0x00000002, 0x40495020, 0x40498C20,
+-	0x00000002, 0x40495220, 0x40498420, 0x00000002, 0x40495220, 0x40498620,
+-	0x00000002, 0x40495220, 0x40498820, 0x00000002, 0x40495220, 0x40498A20,
+-	0x00000002, 0x40495220, 0x40498C20, 0x00000002,
+-	// Block 106, offset 0x1a80
+-	0x40495420, 0x40498420, 0x00000002, 0x40495420, 0x40498620, 0x00000002,
+-	0x40495420, 0x40498820, 0x00000002, 0x40495420, 0x40498A20, 0x00000002,
+-	0x40495420, 0x40498C20, 0x00000002, 0x40495620, 0x40498420, 0x00000002,
+-	0x40495620, 0x40498620, 0x00000002, 0x40495620, 0x40498820, 0x00000002,
+-	0x40495620, 0x40498A20, 0x00000002, 0x40495620, 0x40498C20, 0x00000002,
+-	0x40495820, 0x40498420, 0x00000002, 0x40495820, 0x40498620, 0x00000002,
+-	0x40495820, 0x40498820, 0x00000002, 0x40495820, 0x40498A20, 0x00000002,
+-	0x40495820, 0x40498C20, 0x00000002, 0x40495A20, 0x40498420, 0x00000002,
+-	0x40495A20, 0x40498620, 0x00000002, 0x40495A20, 0x40498820, 0x00000002,
+-	0x40495A20, 0x40498A20, 0x00000002, 0x40495A20, 0x40498C20, 0x00000002,
+-	0x40495C20, 0x40498420, 0x00000002, 0x40495C20,
+-	// Block 107, offset 0x1ac0
+-	0x40498620, 0x00000002, 0x40495C20, 0x40498820, 0x00000002, 0x40495C20,
+-	0x40498A20, 0x00000002, 0x40495C20, 0x40498C20, 0x00000002, 0x40495E20,
+-	0x40498420, 0x00000002, 0x40495E20, 0x40498620, 0x00000002, 0x40495E20,
+-	0x40498820, 0x00000002, 0x40495E20, 0x40498A20, 0x00000002, 0x40495E20,
+-	0x40498C20, 0x00000002, 0x40496020, 0x40498420, 0x00000002, 0x40496020,
+-	0x40498620, 0x00000002, 0x40496020, 0x40498820, 0x00000002, 0x40496020,
+-	0x40498A20, 0x00000002, 0x40496020, 0x40498C20, 0x00000002, 0x40496220,
+-	0x40498420, 0x00000002, 0x40496220, 0x40498620, 0x00000002, 0x40496220,
+-	0x40498820, 0x00000002, 0x40496220, 0x40498A20, 0x00000002, 0x40496220,
+-	0x40498C20, 0x00000002, 0x40496420, 0x40498420, 0x00000002, 0x40496420,
+-	0x40498620, 0x00000002, 0x40496420, 0x40498820,
+-	// Block 108, offset 0x1b00
+-	0x00000002, 0x40496420, 0x40498A20, 0x00000002, 0x40496420, 0x40498C20,
+-	0x00000002, 0x40496620, 0x40498420, 0x00000002, 0x40496620, 0x40498620,
+-	0x00000002, 0x40496620, 0x40498820, 0x00000002, 0x40496620, 0x40498A20,
+-	0x00000002, 0x40496620, 0x40498C20, 0x00000002, 0x40496820, 0x40498420,
+-	0x00000002, 0x40496820, 0x40498620, 0x00000002, 0x40496820, 0x40498820,
+-	0x00000002, 0x40496820, 0x40498A20, 0x00000002, 0x40496820, 0x40498C20,
+-	0x00000002, 0x40496A20, 0x40498420, 0x00000002, 0x40496A20, 0x40498620,
+-	0x00000002, 0x40496A20, 0x40498820, 0x00000002, 0x40496A20, 0x40498A20,
+-	0x00000002, 0x40496A20, 0x40498C20, 0x00000002, 0x40499020, 0x4049E620,
+-	0x00000002, 0x40499020, 0x4049E820, 0x00000002, 0x40499020, 0x4049EA20,
+-	0x00000002, 0x40499020, 0x4049EC20, 0x00000002,
+-	// Block 109, offset 0x1b40
+-	0x40499020, 0x4049EE20, 0x00000002, 0x40499220, 0x4049E620, 0x00000002,
+-	0x40499220, 0x4049E820, 0x00000002, 0x40499220, 0x4049EA20, 0x00000002,
+-	0x40499220, 0x4049EC20, 0x00000002, 0x40499220, 0x4049EE20, 0x00000002,
+-	0x40499420, 0x4049E620, 0x00000002, 0x40499420, 0x4049E820, 0x00000002,
+-	0x40499420, 0x4049EA20, 0x00000002, 0x40499420, 0x4049EC20, 0x00000002,
+-	0x40499420, 0x4049EE20, 0x00000002, 0x40499620, 0x4049E620, 0x00000002,
+-	0x40499620, 0x4049E820, 0x00000002, 0x40499620, 0x4049EA20, 0x00000002,
+-	0x40499620, 0x4049EC20, 0x00000002, 0x40499620, 0x4049EE20, 0x00000002,
+-	0x40499820, 0x4049E620, 0x00000002, 0x40499820, 0x4049E820, 0x00000002,
+-	0x40499820, 0x4049EA20, 0x00000002, 0x40499820, 0x4049EC20, 0x00000002,
+-	0x40499820, 0x4049EE20, 0x00000002, 0x40499A20,
+-	// Block 110, offset 0x1b80
+-	0x4049E620, 0x00000002, 0x40499A20, 0x4049E820, 0x00000002, 0x40499A20,
+-	0x4049EA20, 0x00000002, 0x40499A20, 0x4049EC20, 0x00000002, 0x40499A20,
+-	0x4049EE20, 0x00000002, 0x40499C20, 0x4049E620, 0x00000002, 0x40499C20,
+-	0x4049E820, 0x00000002, 0x40499C20, 0x4049EA20, 0x00000002, 0x40499C20,
+-	0x4049EC20, 0x00000002, 0x40499C20, 0x4049EE20, 0x00000002, 0x40499E20,
+-	0x4049E620, 0x00000002, 0x40499E20, 0x4049E820, 0x00000002, 0x40499E20,
+-	0x4049EA20, 0x00000002, 0x40499E20, 0x4049EC20, 0x00000002, 0x40499E20,
+-	0x4049EE20, 0x00000002, 0x4049A020, 0x4049E620, 0x00000002, 0x4049A020,
+-	0x4049E820, 0x00000002, 0x4049A020, 0x4049EA20, 0x00000002, 0x4049A020,
+-	0x4049EC20, 0x00000002, 0x4049A020, 0x4049EE20, 0x00000002, 0x4049A220,
+-	0x4049E620, 0x00000002, 0x4049A220, 0x4049E820,
+-	// Block 111, offset 0x1bc0
+-	0x00000002, 0x4049A220, 0x4049EA20, 0x00000002, 0x4049A220, 0x4049EC20,
+-	0x00000002, 0x4049A220, 0x4049EE20, 0x00000002, 0x4049A420, 0x4049E620,
+-	0x00000002, 0x4049A420, 0x4049E820, 0x00000002, 0x4049A420, 0x4049EA20,
+-	0x00000002, 0x4049A420, 0x4049EC20, 0x00000002, 0x4049A420, 0x4049EE20,
+-	0x00000002, 0x4049A620, 0x4049E620, 0x00000002, 0x4049A620, 0x4049E820,
+-	0x00000002, 0x4049A620, 0x4049EA20, 0x00000002, 0x4049A620, 0x4049EC20,
+-	0x00000002, 0x4049A620, 0x4049EE20, 0x00000002, 0x4049A820, 0x4049E620,
+-	0x00000002, 0x4049A820, 0x4049E820, 0x00000002, 0x4049A820, 0x4049EA20,
+-	0x00000002, 0x4049A820, 0x4049EC20, 0x00000002, 0x4049A820, 0x4049EE20,
+-	0x00000002, 0x4049AA20, 0x4049E620, 0x00000002, 0x4049AA20, 0x4049E820,
+-	0x00000002, 0x4049AA20, 0x4049EA20, 0x00000002,
+-	// Block 112, offset 0x1c00
+-	0x4049AA20, 0x4049EC20, 0x00000002, 0x4049AA20, 0x4049EE20, 0x00000002,
+-	0x4049AC20, 0x4049E620, 0x00000002, 0x4049AC20, 0x4049E820, 0x00000002,
+-	0x4049AC20, 0x4049EA20, 0x00000002, 0x4049AC20, 0x4049EC20, 0x00000002,
+-	0x4049AC20, 0x4049EE20, 0x00000002, 0x4049AE20, 0x4049E620, 0x00000002,
+-	0x4049AE20, 0x4049E820, 0x00000002, 0x4049AE20, 0x4049EA20, 0x00000002,
+-	0x4049AE20, 0x4049EC20, 0x00000002, 0x4049AE20, 0x4049EE20, 0x00000002,
+-	0x4049B020, 0x4049E620, 0x00000002, 0x4049B020, 0x4049E820, 0x00000002,
+-	0x4049B020, 0x4049EA20, 0x00000002, 0x4049B020, 0x4049EC20, 0x00000002,
+-	0x4049B020, 0x4049EE20, 0x00000002, 0x4049B220, 0x4049E620, 0x00000002,
+-	0x4049B220, 0x4049E820, 0x00000002, 0x4049B220, 0x4049EA20, 0x00000002,
+-	0x4049B220, 0x4049EC20, 0x00000002, 0x4049B220,
+-	// Block 113, offset 0x1c40
+-	0x4049EE20, 0x00000002, 0x4049B420, 0x4049E620, 0x00000002, 0x4049B420,
+-	0x4049E820, 0x00000002, 0x4049B420, 0x4049EA20, 0x00000002, 0x4049B420,
+-	0x4049EC20, 0x00000002, 0x4049B420, 0x4049EE20, 0x00000002, 0x4049B620,
+-	0x4049E620, 0x00000002, 0x4049B620, 0x4049E820, 0x00000002, 0x4049B620,
+-	0x4049EA20, 0x00000002, 0x4049B620, 0x4049EC20, 0x00000002, 0x4049B620,
+-	0x4049EE20, 0x00000002, 0x4049B820, 0x4049E620, 0x00000002, 0x4049B820,
+-	0x4049E820, 0x00000002, 0x4049B820, 0x4049EA20, 0x00000002, 0x4049B820,
+-	0x4049EC20, 0x00000002, 0x4049B820, 0x4049EE20, 0x00000002, 0x4049BA20,
+-	0x4049E620, 0x00000002, 0x4049BA20, 0x4049E820, 0x00000002, 0x4049BA20,
+-	0x4049EA20, 0x00000002, 0x4049BA20, 0x4049EC20, 0x00000002, 0x4049BA20,
+-	0x4049EE20, 0x00000002, 0x4049BC20, 0x4049E620,
+-	// Block 114, offset 0x1c80
+-	0x00000002, 0x4049BC20, 0x4049E820, 0x00000002, 0x4049BC20, 0x4049EA20,
+-	0x00000002, 0x4049BC20, 0x4049EC20, 0x00000002, 0x4049BC20, 0x4049EE20,
+-	0x00000002, 0x4049BE20, 0x4049E620, 0x00000002, 0x4049BE20, 0x4049E820,
+-	0x00000002, 0x4049BE20, 0x4049EA20, 0x00000002, 0x4049BE20, 0x4049EC20,
+-	0x00000002, 0x4049BE20, 0x4049EE20, 0x00000002, 0x4049C020, 0x4049E620,
+-	0x00000002, 0x4049C020, 0x4049E820, 0x00000002, 0x4049C020, 0x4049EA20,
+-	0x00000002, 0x4049C020, 0x4049EC20, 0x00000002, 0x4049C020, 0x4049EE20,
+-	0x00000002, 0x4049C220, 0x4049E620, 0x00000002, 0x4049C220, 0x4049E820,
+-	0x00000002, 0x4049C220, 0x4049EA20, 0x00000002, 0x4049C220, 0x4049EC20,
+-	0x00000002, 0x4049C220, 0x4049EE20, 0x00000003, 0x0049C484, 0x0049AC84,
+-	0x4049E620, 0x00000003, 0x0049C484, 0x0049AC84,
+-	// Block 115, offset 0x1cc0
+-	0x4049E820, 0x00000003, 0x0049C484, 0x0049AC84, 0x4049EA20, 0x00000003,
+-	0x0049C484, 0x0049AC84, 0x4049EC20, 0x00000003, 0x0049C484, 0x0049AC84,
+-	0x4049EE20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049E620, 0x00000003,
+-	0x0049C484, 0x0049BA84, 0x4049E820, 0x00000003, 0x0049C484, 0x0049BA84,
+-	0x4049EA20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049EC20, 0x00000003,
+-	0x0049C484, 0x0049BA84, 0x4049EE20, 0x00000002, 0x4049C420, 0x4049E620,
+-	0x00000002, 0x4049C420, 0x4049E820, 0x00000002, 0x4049C420, 0x4049EA20,
+-	0x00000002, 0x4049C420, 0x4049EC20, 0x00000002, 0x4049C420, 0x4049EE20,
+-	0x00000002, 0x4049C620, 0x4049E620, 0x00000002, 0x4049C620, 0x4049E820,
+-	0x00000002, 0x4049C620, 0x4049EA20, 0x00000002, 0x4049C620, 0x4049EC20,
+-	0x00000002, 0x4049C620, 0x4049EE20, 0x00000002,
+-	// Block 116, offset 0x1d00
+-	0x4049C820, 0x4049E620, 0x00000002, 0x4049C820, 0x4049E820, 0x00000002,
+-	0x4049C820, 0x4049EA20, 0x00000002, 0x4049C820, 0x4049EC20, 0x00000002,
+-	0x4049C820, 0x4049EE20, 0x00000002, 0x4049F020, 0x404A5A20, 0x00000002,
+-	0x4049F020, 0x404A5C20, 0x00000002, 0x4049F020, 0x404A6220, 0x00000002,
+-	0x4049F020, 0x404A6620, 0x00000002, 0x4049F020, 0x404A6820, 0x00000002,
+-	0x4049F220, 0x404A5A20, 0x00000002, 0x4049F220, 0x404A5C20, 0x00000002,
+-	0x4049F220, 0x404A6220, 0x00000002, 0x4049F220, 0x404A6620, 0x00000002,
+-	0x4049F220, 0x404A6820, 0x00000002, 0x4049F420, 0x404A5A20, 0x00000002,
+-	0x4049F420, 0x404A5C20, 0x00000002, 0x4049F420, 0x404A6220, 0x00000002,
+-	0x4049F420, 0x404A6620, 0x00000002, 0x4049F420, 0x404A6820, 0x00000002,
+-	0x4049F620, 0x404A5A20, 0x00000002, 0x4049F620,
+-	// Block 117, offset 0x1d40
+-	0x404A5C20, 0x00000002, 0x4049F620, 0x404A6220, 0x00000002, 0x4049F620,
+-	0x404A6620, 0x00000002, 0x4049F620, 0x404A6820, 0x00000002, 0x4049F820,
+-	0x404A5A20, 0x00000002, 0x4049F820, 0x404A5C20, 0x00000002, 0x4049F820,
+-	0x404A6220, 0x00000002, 0x4049F820, 0x404A6620, 0x00000002, 0x4049F820,
+-	0x404A6820, 0x00000002, 0x4049FA20, 0x404A5A20, 0x00000002, 0x4049FA20,
+-	0x404A5C20, 0x00000002, 0x4049FA20, 0x404A6220, 0x00000002, 0x4049FA20,
+-	0x404A6620, 0x00000002, 0x4049FA20, 0x404A6820, 0x00000002, 0x4049FC20,
+-	0x404A5A20, 0x00000002, 0x4049FC20, 0x404A5C20, 0x00000002, 0x4049FC20,
+-	0x404A6220, 0x00000002, 0x4049FC20, 0x404A6620, 0x00000002, 0x4049FC20,
+-	0x404A6820, 0x00000002, 0x4049FE20, 0x404A5A20, 0x00000002, 0x4049FE20,
+-	0x404A5C20, 0x00000002, 0x4049FE20, 0x404A6220,
+-	// Block 118, offset 0x1d80
+-	0x00000002, 0x4049FE20, 0x404A6620, 0x00000002, 0x4049FE20, 0x404A6820,
+-	0x00000002, 0x404A0020, 0x404A5A20, 0x00000002, 0x404A0020, 0x404A5C20,
+-	0x00000002, 0x404A0020, 0x404A6220, 0x00000002, 0x404A0020, 0x404A6620,
+-	0x00000002, 0x404A0020, 0x404A6820, 0x00000002, 0x404A0220, 0x404A5A20,
+-	0x00000002, 0x404A0220, 0x404A5C20, 0x00000002, 0x404A0220, 0x404A6220,
+-	0x00000002, 0x404A0220, 0x404A6620, 0x00000002, 0x404A0220, 0x404A6820,
+-	0x00000002, 0x404A0420, 0x404A5A20, 0x00000002, 0x404A0420, 0x404A5C20,
+-	0x00000002, 0x404A0420, 0x404A6220, 0x00000002, 0x404A0420, 0x404A6620,
+-	0x00000002, 0x404A0420, 0x404A6820, 0x00000002, 0x404A0620, 0x404A5A20,
+-	0x00000002, 0x404A0620, 0x404A5C20, 0x00000002, 0x404A0620, 0x404A6220,
+-	0x00000002, 0x404A0620, 0x404A6620, 0x00000002,
+-	// Block 119, offset 0x1dc0
+-	0x404A0620, 0x404A6820, 0x00000002, 0x404A0820, 0x404A5A20, 0x00000002,
+-	0x404A0820, 0x404A5C20, 0x00000002, 0x404A0820, 0x404A6220, 0x00000002,
+-	0x404A0820, 0x404A6620, 0x00000002, 0x404A0820, 0x404A6820, 0x00000002,
+-	0x404A0A20, 0x404A5A20, 0x00000002, 0x404A0A20, 0x404A5C20, 0x00000002,
+-	0x404A0A20, 0x404A6220, 0x00000002, 0x404A0A20, 0x404A6620, 0x00000002,
+-	0x404A0A20, 0x404A6820, 0x00000002, 0x404A0C20, 0x404A5A20, 0x00000002,
+-	0x404A0C20, 0x404A5C20, 0x00000002, 0x404A0C20, 0x404A6220, 0x00000002,
+-	0x404A0C20, 0x404A6620, 0x00000002, 0x404A0C20, 0x404A6820, 0x00000002,
+-	0x404A0E20, 0x404A5A20, 0x00000002, 0x404A0E20, 0x404A5C20, 0x00000002,
+-	0x404A0E20, 0x404A6220, 0x00000002, 0x404A0E20, 0x404A6620, 0x00000002,
+-	0x404A0E20, 0x404A6820, 0x00000002, 0x404A1020,
+-	// Block 120, offset 0x1e00
+-	0x404A5A20, 0x00000002, 0x404A1020, 0x404A5C20, 0x00000002, 0x404A1020,
+-	0x404A6220, 0x00000002, 0x404A1020, 0x404A6620, 0x00000002, 0x404A1020,
+-	0x404A6820, 0x00000002, 0x404A1220, 0x404A5A20, 0x00000002, 0x404A1220,
+-	0x404A5C20, 0x00000002, 0x404A1220, 0x404A6220, 0x00000002, 0x404A1220,
+-	0x404A6620, 0x00000002, 0x404A1220, 0x404A6820, 0x00000002, 0x404A1420,
+-	0x404A5A20, 0x00000002, 0x404A1420, 0x404A5C20, 0x00000002, 0x404A1420,
+-	0x404A6220, 0x00000002, 0x404A1420, 0x404A6620, 0x00000002, 0x404A1420,
+-	0x404A6820, 0x00000002, 0x404A1620, 0x404A5A20, 0x00000002, 0x404A1620,
+-	0x404A5C20, 0x00000002, 0x404A1620, 0x404A6220, 0x00000002, 0x404A1620,
+-	0x404A6620, 0x00000002, 0x404A1620, 0x404A6820, 0x00000002, 0x404A1820,
+-	0x404A5A20, 0x00000002, 0x404A1820, 0x404A5C20,
+-	// Block 121, offset 0x1e40
+-	0x00000002, 0x404A1820, 0x404A6220, 0x00000002, 0x404A1820, 0x404A6620,
+-	0x00000002, 0x404A1820, 0x404A6820, 0x00000002, 0x404A1A20, 0x404A5A20,
+-	0x00000002, 0x404A1A20, 0x404A5C20, 0x00000002, 0x404A1A20, 0x404A6220,
+-	0x00000002, 0x404A1A20, 0x404A6620, 0x00000002, 0x404A1A20, 0x404A6820,
+-	0x00000002, 0x404A1C20, 0x404A5A20, 0x00000002, 0x404A1C20, 0x404A5C20,
+-	0x00000002, 0x404A1C20, 0x404A6220, 0x00000002, 0x404A1C20, 0x404A6620,
+-	0x00000002, 0x404A1C20, 0x404A6820, 0x00000002, 0x404A1E20, 0x404A5A20,
+-	0x00000002, 0x404A1E20, 0x404A5C20, 0x00000002, 0x404A1E20, 0x404A6220,
+-	0x00000002, 0x404A1E20, 0x404A6620, 0x00000002, 0x404A1E20, 0x404A6820,
+-	0x00000002, 0x404A2020, 0x404A5A20, 0x00000002, 0x404A2020, 0x404A5C20,
+-	0x00000002, 0x404A2020, 0x404A6220, 0x00000002,
+-	// Block 122, offset 0x1e80
+-	0x404A2020, 0x404A6620, 0x00000002, 0x404A2020, 0x404A6820, 0x00000002,
+-	0x404A2220, 0x404A5A20, 0x00000002, 0x404A2220, 0x404A5C20, 0x00000002,
+-	0x404A2220, 0x404A6220, 0x00000002, 0x404A2220, 0x404A6620, 0x00000002,
+-	0x404A2220, 0x404A6820, 0x00000002, 0x404A2420, 0x404A5A20, 0x00000002,
+-	0x404A2420, 0x404A5C20, 0x00000002, 0x404A2420, 0x404A6220, 0x00000002,
+-	0x404A2420, 0x404A6620, 0x00000002, 0x404A2420, 0x404A6820, 0x00000002,
+-	0x404A2620, 0x404A5A20, 0x00000002, 0x404A2620, 0x404A5C20, 0x00000002,
+-	0x404A2620, 0x404A6220, 0x00000002, 0x404A2620, 0x404A6620, 0x00000002,
+-	0x404A2620, 0x404A6820, 0x00000002, 0x404A2820, 0x404A5A20, 0x00000002,
+-	0x404A2820, 0x404A5C20, 0x00000002, 0x404A2820, 0x404A6220, 0x00000002,
+-	0x404A2820, 0x404A6620, 0x00000002, 0x404A2820,
+-	// Block 123, offset 0x1ec0
+-	0x404A6820, 0x00000002, 0x404A2A20, 0x404A5A20, 0x00000002, 0x404A2A20,
+-	0x404A5C20, 0x00000002, 0x404A2A20, 0x404A6220, 0x00000002, 0x404A2A20,
+-	0x404A6620, 0x00000002, 0x404A2A20, 0x404A6820, 0x00000002, 0x404A2C20,
+-	0x404A5A20, 0x00000002, 0x404A2C20, 0x404A5C20, 0x00000002, 0x404A2C20,
+-	0x404A6220, 0x00000002, 0x404A2C20, 0x404A6620, 0x00000002, 0x404A2C20,
+-	0x404A6820, 0x00000002, 0x404A2E20, 0x404A5A20, 0x00000002, 0x404A2E20,
+-	0x404A5C20, 0x00000002, 0x404A2E20, 0x404A6220, 0x00000002, 0x404A2E20,
+-	0x404A6620, 0x00000002, 0x404A2E20, 0x404A6820, 0x00000002, 0x404A3020,
+-	0x404A5A20, 0x00000002, 0x404A3020, 0x404A5C20, 0x00000002, 0x404A3020,
+-	0x404A6220, 0x00000002, 0x404A3020, 0x404A6620, 0x00000002, 0x404A3020,
+-	0x404A6820, 0x00000002, 0x404A3220, 0x404A5A20,
+-	// Block 124, offset 0x1f00
+-	0x00000002, 0x404A3220, 0x404A5C20, 0x00000002, 0x404A3220, 0x404A6220,
+-	0x00000002, 0x404A3220, 0x404A6620, 0x00000002, 0x404A3220, 0x404A6820,
+-	0x00000002, 0x404A3420, 0x404A5A20, 0x00000002, 0x404A3420, 0x404A5C20,
+-	0x00000002, 0x404A3420, 0x404A6220, 0x00000002, 0x404A3420, 0x404A6620,
+-	0x00000002, 0x404A3420, 0x404A6820, 0x00000002, 0x404A3620, 0x404A5A20,
+-	0x00000002, 0x404A3620, 0x404A5C20, 0x00000002, 0x404A3620, 0x404A6220,
+-	0x00000002, 0x404A3620, 0x404A6620, 0x00000002, 0x404A3620, 0x404A6820,
+-	0x00000002, 0x404A3820, 0x404A5A20, 0x00000002, 0x404A3820, 0x404A5C20,
+-	0x00000002, 0x404A3820, 0x404A6220, 0x00000002, 0x404A3820, 0x404A6620,
+-	0x00000002, 0x404A3820, 0x404A6820, 0x00000002, 0x404A3A20, 0x404A5A20,
+-	0x00000002, 0x404A3A20, 0x404A5C20, 0x00000002,
+-	// Block 125, offset 0x1f40
+-	0x404A3A20, 0x404A6220, 0x00000002, 0x404A3A20, 0x404A6620, 0x00000002,
+-	0x404A3A20, 0x404A6820, 0x00000002, 0x404A3C20, 0x404A5A20, 0x00000002,
+-	0x404A3C20, 0x404A5C20, 0x00000002, 0x404A3C20, 0x404A6220, 0x00000002,
+-	0x404A3C20, 0x404A6620, 0x00000002, 0x404A3C20, 0x404A6820, 0x00000002,
+-	0x404A3E20, 0x404A5A20, 0x00000002, 0x404A3E20, 0x404A5C20, 0x00000002,
+-	0x404A3E20, 0x404A6220, 0x00000002, 0x404A3E20, 0x404A6620, 0x00000002,
+-	0x404A3E20, 0x404A6820, 0x00000002, 0x404A4020, 0x404A5A20, 0x00000002,
+-	0x404A4020, 0x404A5C20, 0x00000002, 0x404A4020, 0x404A6220, 0x00000002,
+-	0x404A4020, 0x404A6620, 0x00000002, 0x404A4020, 0x404A6820, 0x00000002,
+-	0x404A4220, 0x404A5A20, 0x00000002, 0x404A4220, 0x404A5C20, 0x00000002,
+-	0x404A4220, 0x404A6220, 0x00000002, 0x404A4220,
+-	// Block 126, offset 0x1f80
+-	0x404A6620, 0x00000002, 0x404A4220, 0x404A6820, 0x00000002, 0x404A4420,
+-	0x404A5A20, 0x00000002, 0x404A4420, 0x404A5C20, 0x00000002, 0x404A4420,
+-	0x404A6220, 0x00000002, 0x404A4420, 0x404A6620, 0x00000002, 0x404A4420,
+-	0x404A6820, 0x00000002, 0x404A4620, 0x404A5A20, 0x00000002, 0x404A4620,
+-	0x404A5C20, 0x00000002, 0x404A4620, 0x404A6220, 0x00000002, 0x404A4620,
+-	0x404A6620, 0x00000002, 0x404A4620, 0x404A6820, 0x00000002, 0x404A4820,
+-	0x404A5A20, 0x00000002, 0x404A4820, 0x404A5C20, 0x00000002, 0x404A4820,
+-	0x404A6220, 0x00000002, 0x404A4820, 0x404A6620, 0x00000002, 0x404A4820,
+-	0x404A6820, 0x00000002, 0x404A4A20, 0x404A5A20, 0x00000002, 0x404A4A20,
+-	0x404A5C20, 0x00000002, 0x404A4A20, 0x404A6220, 0x00000002, 0x404A4A20,
+-	0x404A6620, 0x00000002, 0x404A4A20, 0x404A6820,
+-	// Block 127, offset 0x1fc0
+-	0x00000002, 0x404A4C20, 0x404A5A20, 0x00000002, 0x404A4C20, 0x404A5C20,
+-	0x00000002, 0x404A4C20, 0x404A6220, 0x00000002, 0x404A4C20, 0x404A6620,
+-	0x00000002, 0x404A4C20, 0x404A6820, 0x00000002, 0x404A4E20, 0x404A5A20,
+-	0x00000002, 0x404A4E20, 0x404A5C20, 0x00000002, 0x404A4E20, 0x404A6220,
+-	0x00000002, 0x404A4E20, 0x404A6620, 0x00000002, 0x404A4E20, 0x404A6820,
+-	0x00000002, 0x404A7620, 0x404AF820, 0x00000002, 0x404A7820, 0x404AF820,
+-	0x00000002, 0x404A8020, 0x404B0020, 0x00000002, 0x404A8220, 0x404B0020,
+-	0x00000002, 0x404AA020, 0x404B0020, 0x00000002, 0x404AA220, 0x404B0020,
+-	0x00000002, 0x404AB020, 0x404B0020, 0x00000002, 0x404AB220, 0x404B0020,
+-	0x00000002, 0x404AC020, 0x404B0020, 0x00000002, 0x404AC220, 0x404B0020,
+-	0x00000002, 0x404AD020, 0x404B0020, 0x00000002,
+-	// Block 128, offset 0x2000
+-	0x404AD220, 0x404B0020, 0x00000002, 0x004AD684, 0xA0013A04, 0x00000002,
+-	0x004AE684, 0xA0013A04, 0x00000002, 0x004AE884, 0xA0013A04, 0x00000002,
+-	0x004AEA84, 0xA0013A04, 0x00000002, 0x404AEA20, 0x8281258D, 0x00000002,
+-	0x404AEA20, 0x82812591, 0x00000002, 0x404AF020, 0x8281258D, 0x00000002,
+-	0x404AF020, 0x82812591, 0x00000003, 0x004B0284, 0x004B3084, 0xA000F304,
+-	0x00000003, 0x004EA684, 0x004F1484, 0x004EA684, 0x00000002, 0x0050AE84,
+-	0x0050DA84, 0x00000003, 0x0050AE84, 0x0050DA84, 0x0050F084, 0x00000003,
+-	0x00514E84, 0x00519A84, 0x00514E84, 0x00000002, 0x005ADA84, 0xA0013904,
+-	0x00000002, 0x005ADC84, 0xA0013904, 0x00000002, 0x005ADC84, 0xA0013A04,
+-	0x00000002, 0x005ADE84, 0xA0013904, 0x00000002, 0x005ADE84, 0x005ADE84,
+-	0x00000002, 0x005AE084, 0xA0013904, 0x00000002,
+-	// Block 129, offset 0x2040
+-	0x005AE084, 0xA0013A04, 0x00000002, 0x005AE084, 0xA0013C04, 0x00000002,
+-	0x005AE084, 0xA0013D04, 0x00000002, 0x005AE884, 0xA0013904, 0x00000002,
+-	0x005AE884, 0xA0013A04, 0x00000002, 0x005AE884, 0xA0013C04, 0x00000002,
+-	0x005AE884, 0xA0013D04, 0x00000002, 0x005AEC84, 0xA0013904, 0x00000002,
+-	0x005AEE84, 0xA0013904, 0x00000002, 0x005AEE84, 0xA0013A04, 0x00000002,
+-	0x005AEE84, 0xA0013C04, 0x00000002, 0x005AF084, 0xA0013904, 0x00000002,
+-	0x005AF084, 0xA0013A04, 0x00000002, 0x005AF284, 0xA0013904, 0x00000002,
+-	0x005AF484, 0xA0013904, 0x00000002, 0x005AF684, 0xA0013904, 0x00000002,
+-	0x005AF684, 0x005B0884, 0x00000002, 0x005AFA84, 0xA0013904, 0x00000002,
+-	0x005AFE84, 0xA0013904, 0x00000002, 0x005AFE84, 0xA0013A04, 0x00000002,
+-	0x005AFE84, 0xA0013C04, 0x00000002, 0x005AFE84,
+-	// Block 130, offset 0x2080
+-	0xA0013D04, 0x00000002, 0x005AFE84, 0xA0013E04, 0x00000002, 0x005B0084,
+-	0xA0013904, 0x00000002, 0x005B0084, 0xA0013A04, 0x00000002, 0x005B0284,
+-	0xA0013904, 0x00000002, 0x005B0284, 0xA0013A04, 0x00000002, 0x005B0684,
+-	0xA0013904, 0x00000002, 0x005B0684, 0xA0013A04, 0x00000004, 0x005B0684,
+-	0xA0013904, 0x005B0684, 0xA0013904, 0x00000002, 0x005B0884, 0xA0013904,
+-	0x00000002, 0x005B0A84, 0xA0013904, 0x00000002, 0x005B2484, 0xA0013904,
+-	0x00000002, 0x005B2484, 0xA0013A04, 0x00000002, 0x005B2684, 0xA0013904,
+-	0x00000002, 0x005B2A84, 0xA0013904, 0x00000002, 0x005B3084, 0xA0013904,
+-	0x00000002, 0x005B3284, 0xA0013904, 0x00000002, 0x005B3484, 0xA0013904,
+-	0x00000002, 0x005B3684, 0xA0013904, 0x00000002, 0x005B3884, 0xA0013904,
+-	0x00000002, 0x005B3A84, 0xA0013904, 0x00000002,
+-	// Block 131, offset 0x20c0
+-	0x005B3E84, 0xA0013904, 0x00000002, 0x005B4084, 0xA0013904, 0x00000002,
+-	0x005B4284, 0xA0013904, 0x00000002, 0x005B4484, 0xA0013904, 0x00000002,
+-	0x005B4684, 0xA0013904, 0x00000002, 0x005B4884, 0xA0013904, 0x00000002,
+-	0x005B5284, 0xA0013904, 0x00000002, 0x005B5484, 0xA0013904, 0x00000002,
+-	0x005B5684, 0xA0013904, 0x00000002, 0x005B5884, 0xA0013904, 0x00000002,
+-	0x005B5C84, 0xA0013904, 0x00000002, 0x005B6484, 0xA0013904, 0x00000002,
+-	0x005B6684, 0xA0013904, 0x00000002, 0x005B6884, 0xA0013904, 0x00000002,
+-	0x005B6A84, 0xA0013904, 0x00000002, 0x005B6C84, 0xA0013904, 0x00000002,
+-	0x005B7484, 0xA0013904, 0x00000002, 0x005B7684, 0xA0013904, 0x00000002,
+-	0x005B7884, 0xA0013904, 0x00000002, 0x005B7A84, 0xA0013904, 0x00000002,
+-	0x005B9884, 0x005D9684, 0x00000002, 0x005BBC84,
+-	// Block 132, offset 0x2100
+-	0x005D9684, 0x00000002, 0x005BE684, 0x005D9684, 0x00000002, 0x005C0E84,
+-	0x005D9884, 0x00000002, 0x005C2484, 0x005D9684, 0x00000002, 0x005C3084,
+-	0x005D9884, 0x00000002, 0x005C3484, 0x005D9884, 0x00000002, 0x005C4084,
+-	0x005D9684, 0x00000002, 0x005C8A84, 0x005D9684, 0x00000002, 0x005CE884,
+-	0x005D9684, 0x00000002, 0x005D1684, 0x005D9684, 0x00000002, 0x005D2284,
+-	0x005D9884, 0x00000002, 0x005D3084, 0x005D9684, 0x00000004, 0x0062C486,
+-	0x0063C286, 0x0062C286, 0x0063CE86, 0x00000005, 0x0062C886, 0x0063A886,
+-	0x00648286, 0x0062AC86, 0x0063B886, 0x00000003, 0x0065769C, 0x0027D69C,
+-	0x0065CA9C, 0x00000005, 0x0065769C, 0x0065AA9C, 0xA001291C, 0x0027D69C,
+-	0x00659E9C, 0x00000004, 0x0065769C, 0x0065CA9C, 0x0065AE9C, 0x0065769C,
+-	0x00000005, 0x0065769C, 0x0065D89C, 0x0065B09C,
+-	// Block 133, offset 0x2140
+-	0xA001291C, 0x0065769C, 0x00000005, 0x0065789C, 0x0065A29C, 0x0065D89C,
+-	0x0065869C, 0xA001281C, 0x00000003, 0x0065789C, 0x0065D89C, 0x0065989C,
+-	0x00000002, 0x00657A8E, 0xA0812802, 0x00000002, 0x00657A91, 0xA0812802,
+-	0x00000003, 0x00657A9C, 0x0065809C, 0x0065D89C, 0x00000004, 0x00657E9C,
+-	0x0027D69C, 0x0065829C, 0x0027D69C, 0x00000006, 0x00657E9C, 0x0065909C,
+-	0x0065869C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003, 0x0065809C,
+-	0x0027D69C, 0x0065B89C, 0x00000003, 0x0065809C, 0x0065D89C, 0x0065909C,
+-	0x00000002, 0x0065828E, 0xA0812802, 0x00000002, 0x00658291, 0xA0812802,
+-	0x00000003, 0x0065829C, 0x0065789C, 0x0065C89C, 0x00000004, 0x0065829C,
+-	0x0065C69C, 0x00659A9C, 0x00659E9C, 0x00000004, 0x0065829C, 0x0065CE9C,
+-	0x0065C89C, 0x0027D69C, 0x00000004, 0x0065829C,
+-	// Block 134, offset 0x2180
+-	0xA001281C, 0x0065CE9C, 0x0065D89C, 0x00000004, 0x0065829C, 0xA001281C,
+-	0x0065D89C, 0x0065B49C, 0x00000002, 0x0065848E, 0xA0812802, 0x00000002,
+-	0x00658491, 0xA0812802, 0x00000004, 0x0065849C, 0xA001281C, 0x0065829C,
+-	0xA001281C, 0x00000004, 0x0065849C, 0xA001281C, 0x0065A29C, 0x0027D69C,
+-	0x00000004, 0x0065849C, 0x0065C09C, 0x0065C89C, 0x0027D69C, 0x00000006,
+-	0x0065849C, 0xA001281C, 0x0065CA9C, 0x0065969C, 0xA001281C, 0x0027D69C,
+-	0x00000006, 0x0065849C, 0x0065CE9C, 0x0065869C, 0xA001281C, 0x0065C69C,
+-	0x0065B89C, 0x00000006, 0x0065849C, 0x0065CE9C, 0x0065BA9C, 0x0027D69C,
+-	0x00659E9C, 0x0065CA9C, 0x00000005, 0x0065849C, 0x0065CE9C, 0x0065D09C,
+-	0x00659A9C, 0x00659E9C, 0x00000002, 0x0065868E, 0xA0812802, 0x00000002,
+-	0x00658691, 0xA0812802, 0x00000004, 0x0065869C,
+-	// Block 135, offset 0x21c0
+-	0xA001281C, 0x0065C69C, 0x0065B89C, 0x00000006, 0x0065869C, 0xA001281C,
+-	0x0065C69C, 0x0065B89C, 0x00659E9C, 0x0065D89C, 0x00000006, 0x0065869C,
+-	0x0065CA9C, 0x0065929C, 0xA001281C, 0x0065789C, 0x0065CE9C, 0x00000004,
+-	0x0065869C, 0x0065CE9C, 0x0027D69C, 0x0065A69C, 0x00000002, 0x0065888E,
+-	0xA0812802, 0x00000002, 0x00658891, 0xA0812802, 0x00000003, 0x0065889C,
+-	0x0027D69C, 0x0065909C, 0x00000002, 0x00658A8E, 0xA0812802, 0x00000002,
+-	0x00658A91, 0xA0812802, 0x00000004, 0x00658A9C, 0x0027D69C, 0x0065B29C,
+-	0xA001291C, 0x00000003, 0x00658A9C, 0x0065CA9C, 0x0065A09C, 0x00000002,
+-	0x00658C8E, 0xA0812802, 0x00000002, 0x00658C91, 0xA0812802, 0x00000004,
+-	0x00658C9C, 0x0065789C, 0x0065869C, 0x0065CA9C, 0x00000005, 0x00658C9C,
+-	0x0065D89C, 0x0065989C, 0x0027D69C, 0x0065B89C,
+-	// Block 136, offset 0x2200
+-	0x00000002, 0x00658E8E, 0xA0812802, 0x00000002, 0x00658E91, 0xA0812802,
+-	0x00000002, 0x00658E84, 0x0065BA84, 0x00000005, 0x00658E9C, 0x0065C89C,
+-	0x0065D89C, 0x0065869C, 0xA001281C, 0x00000002, 0x0065908E, 0xA0812802,
+-	0x00000002, 0x00659091, 0xA0812802, 0x00000002, 0x0065928E, 0xA0812802,
+-	0x00000002, 0x00659291, 0xA0812802, 0x00000003, 0x0065929C, 0x0065D89C,
+-	0x0065989C, 0x00000003, 0x0065929C, 0x0065D89C, 0x00659E9C, 0x00000002,
+-	0x0065948E, 0xA0812802, 0x00000002, 0x00659491, 0xA0812802, 0x00000002,
+-	0x0065968E, 0xA0812802, 0x00000002, 0x00659691, 0xA0812802, 0x00000004,
+-	0x0065969C, 0xA001281C, 0x0027D69C, 0x0065909C, 0x00000002, 0x0065988E,
+-	0xA0812802, 0x00000002, 0x00659891, 0xA0812802, 0x00000002, 0x00659A8E,
+-	0xA0812802, 0x00000002, 0x00659A91, 0xA0812802,
+-	// Block 137, offset 0x2240
+-	0x00000002, 0x00659C8E, 0xA0812802, 0x00000002, 0x00659C91, 0xA0812802,
+-	0x00000003, 0x00659C9C, 0xA001281C, 0x00658E9C, 0x00000002, 0x00659E8E,
+-	0xA0812802, 0x00000002, 0x00659E91, 0xA0812802, 0x00000003, 0x00659E9C,
+-	0xA001281C, 0x0065CA9C, 0x00000003, 0x0065A89C, 0x00659A9C, 0x00659E9C,
+-	0x00000002, 0x0065AA8E, 0xA0812802, 0x00000002, 0x0065AA91, 0xA0812802,
+-	0x00000002, 0x0065AA8E, 0xA0812902, 0x00000002, 0x0065AA91, 0xA0812902,
+-	0x00000006, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x0065929C, 0x0065D89C,
+-	0x00659E9C, 0x00000004, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x00659A9C,
+-	0x00000005, 0x0065AA9C, 0xA001281C, 0x0027D69C, 0x0065CC9C, 0x0065CA9C,
+-	0x00000003, 0x0065AA9C, 0x0065789C, 0x00659A9C, 0x00000002, 0x0065AC8E,
+-	0xA0812802, 0x00000002, 0x0065AC91, 0xA0812802,
+-	// Block 138, offset 0x2280
+-	0x00000002, 0x0065AC8E, 0xA0812902, 0x00000002, 0x0065AC91, 0xA0812902,
+-	0x00000006, 0x0065AC9C, 0xA001291C, 0x0065769C, 0x0065909C, 0x00659E9C,
+-	0x0065CA9C, 0x00000004, 0x0065AC9C, 0xA001291C, 0x0065869C, 0x0065CA9C,
+-	0x00000003, 0x0065AC9C, 0xA001291C, 0x00658A9C, 0x00000003, 0x0065AC9C,
+-	0xA001281C, 0x0065CA9C, 0x00000002, 0x0065AE8E, 0xA0812802, 0x00000002,
+-	0x0065AE91, 0xA0812802, 0x00000002, 0x0065AE8E, 0xA0812902, 0x00000002,
+-	0x0065AE91, 0xA0812902, 0x00000006, 0x0065AE9C, 0x0065769C, 0x0065C69C,
+-	0x00659A9C, 0x00659E9C, 0xA001281C, 0x00000004, 0x0065AE9C, 0x0065789C,
+-	0x0027D69C, 0x00659E9C, 0x00000006, 0x0065AE9C, 0xA001281C, 0x00659A9C,
+-	0x00658E9C, 0x00657E9C, 0x0065CA9C, 0x00000003, 0x0065AE9C, 0x0065C69C,
+-	0x0065D89C, 0x00000002, 0x0065B08E, 0xA0812802,
+-	// Block 139, offset 0x22c0
+-	0x00000002, 0x0065B091, 0xA0812802, 0x00000002, 0x0065B08E, 0xA0812902,
+-	0x00000002, 0x0065B091, 0xA0812902, 0x00000005, 0x0065B09C, 0xA001291C,
+-	0x0027D69C, 0x00658E9C, 0xA001281C, 0x00000004, 0x0065B09C, 0xA001281C,
+-	0x0027D69C, 0x0065969C, 0x00000005, 0x0065B09C, 0x0065869C, 0x0065969C,
+-	0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065B09C, 0xA001291C, 0x0065949C,
+-	0x00000004, 0x0065B09C, 0xA001291C, 0x0065A29C, 0x0065AC9C, 0x00000003,
+-	0x0065B09C, 0x0065CA9C, 0x00659A9C, 0x00000004, 0x0065B09C, 0xA001291C,
+-	0x0065D89C, 0x0065909C, 0x00000002, 0x0065B28E, 0xA0812802, 0x00000002,
+-	0x0065B291, 0xA0812802, 0x00000002, 0x0065B28E, 0xA0812902, 0x00000002,
+-	0x0065B291, 0xA0812902, 0x00000003, 0x0065B29C, 0x0027D69C, 0x0065CA9C,
+-	0x00000003, 0x0065B29C, 0x0027D69C, 0x0065D89C,
+-	// Block 140, offset 0x2300
+-	0x00000005, 0x0065B29C, 0xA001291C, 0x0065789C, 0x0065D89C, 0x00659E9C,
+-	0x00000004, 0x0065B29C, 0xA001281C, 0x0065CA9C, 0x00659E9C, 0x00000005,
+-	0x0065B29C, 0xA001291C, 0x0065D89C, 0x00659E9C, 0xA001281C, 0x00000004,
+-	0x0065B49C, 0x0065789C, 0x0065869C, 0x0065CE9C, 0x00000003, 0x0065B49C,
+-	0x0065789C, 0x0065CA9C, 0x00000002, 0x0065B484, 0x00659084, 0x00000003,
+-	0x0065B49C, 0x00659A9C, 0x0065AA9C, 0x00000003, 0x0065B49C, 0x0065CA9C,
+-	0x0065869C, 0x00000005, 0x0065B49C, 0x0065D89C, 0x00658E9C, 0x0065C49C,
+-	0x0065D89C, 0x00000004, 0x0065B69C, 0x0065869C, 0x0065CE9C, 0x0065D89C,
+-	0x00000006, 0x0065B69C, 0x0065C89C, 0x0065AA9C, 0xA001281C, 0x0027D69C,
+-	0x0065CA9C, 0x00000004, 0x0065BA9C, 0x0027D69C, 0x00659E9C, 0x0065CA9C,
+-	0x00000003, 0x0065BA9C, 0x0065829C, 0xA001281C,
+-	// Block 141, offset 0x2340
+-	0x00000005, 0x0065BA9C, 0x0065829C, 0xA001281C, 0x00659E9C, 0x0065D89C,
+-	0x00000004, 0x0065BE9C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003,
+-	0x0065BE9C, 0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065C09C, 0x0065769C,
+-	0x0065D89C, 0x00000004, 0x0065C89C, 0x00659A9C, 0x00659E9C, 0x0065CA9C,
+-	0x00000005, 0x0065CA9C, 0x0027D69C, 0x0065AE9C, 0xA001281C, 0x0065CA9C,
+-	0x00000004, 0x0065CA9C, 0x0065AC9C, 0xA001291C, 0x0027D69C, 0x00000006,
+-	0x0065CC9C, 0x0065D89C, 0x00659E9C, 0x0065889C, 0xA001281C, 0x0065D89C,
+-	0x00000002, 0x0065D091, 0xA0812802, 0x00000003, 0x0065D09C, 0x00659A9C,
+-	0x00659E9C, 0x00000002, 0x0065D291, 0xA0812802, 0x00000002, 0x0065D491,
+-	0xA0812802, 0x00000002, 0x0065D691, 0xA0812802, 0x00000002, 0x0065DA84,
+-	0xA0013A04, 0x00000002, 0x0065EC84, 0xA0013A04,
+-	// Block 142, offset 0x2380
+-	0x00000002, 0x0065F684, 0xA0013A04, 0x00000002, 0x00660684, 0xA0013A04,
+-	0x00000002, 0x00661284, 0xA0013A04, 0x00000002, 0x00661484, 0xA0013A04,
+-	0x00000002, 0x00661C84, 0xA0013A04, 0x00000002, 0x00661E84, 0xA0013A04,
+-	0x00000002, 0x00662284, 0xA0013A04, 0x00000002, 0x00663884, 0xA0013A04,
+-	0x00000002, 0x00663896, 0xA0013A16, 0x00000002, 0x00663A84, 0xA0013A04,
+-	0x00000002, 0x00663A84, 0xA0013C04, 0x00000002, 0x0075C284, 0xA0013904,
+-	0x00000002, 0x00862084, 0xA0013904, 0x00000002, 0x00862284, 0xA0013904,
+-	0x00000002, 0x00862484, 0xA0013904, 0x00000002, 0x00862684, 0xA0013904,
+-	0x00000002, 0x00862884, 0xA0013904, 0x00000002, 0x00862A84, 0xA0013904,
+-	0x00000002, 0x00862C84, 0xA0013904, 0x00000002, 0x00862C84, 0xA0013A04,
+-	0x00000002, 0x00862E84, 0xA0013904, 0x00000002,
+-	// Block 143, offset 0x23c0
+-	0x00863084, 0xA0013904, 0x00000002, 0x00863284, 0xA0013904, 0x00000002,
+-	0x00863284, 0xA0013A04, 0x00000002, 0x00863484, 0xA0013904, 0x00000002,
+-	0x00863484, 0xA0013A04, 0x00000002, 0x00863684, 0xA0013904, 0x00000002,
+-	0x00863684, 0xA0013A04, 0x00000002, 0x00863884, 0xA0013904, 0x00000002,
+-	0x00863A84, 0xA0013904, 0x00000002, 0x00863C84, 0xA0013904, 0x00000002,
+-	0x00863E84, 0xA0013904, 0x00000002, 0x00863E84, 0xA0013A04, 0x00000002,
+-	0x00863E84, 0xA0013C04, 0x00000002, 0x00864084, 0xA0013904, 0x00000002,
+-	0x00864284, 0xA0013904, 0x00000002, 0x00864484, 0xA0013904, 0x00000002,
+-	0x00864684, 0xA0013904, 0x00000002, 0x00864684, 0xA0013A04, 0x00000002,
+-	0x00864884, 0xA0013904, 0x00000002, 0x00864884, 0xA0013A04, 0x00000002,
+-	0x00864A84, 0xA0013904, 0x00000002, 0x00864C84,
+-	// Block 144, offset 0x2400
+-	0xA0013904, 0x00000002, 0x029C6C84, 0xA0013904, 0x00000002, 0x029CB284,
+-	0xA0013904, 0x00000002, 0x02A30484, 0xA0013904, 0x00000002, 0x02A3C084,
+-	0xA0013904, 0x00000002, 0x02A40084, 0xA0013904, 0x00000002, 0x02A6B884,
+-	0xA0013904, 0x00000002, 0x02A6D284, 0xA0013904, 0x00000002, 0x02A70484,
+-	0xA0013904, 0x00000002, 0x02B81E84, 0xA0013904, 0x00000002, 0x02B81E84,
+-	0xA0013A04, 0x00000002, 0x02B84484, 0xA0013904, 0x00000002, 0x02B84684,
+-	0xA0013904, 0x00000002, 0x02BEA084, 0xA0013904, 0x00000002, 0x02BF8684,
+-	0xA0013904, 0x00000002, 0x02CBCA84, 0xA0013904, 0x00000002, 0x02CE1084,
+-	0xA0013904, 0x00000004, 0x02D0549C, 0x02BE1E9C, 0x029E349C, 0x02F27C9C,
+-	0x00000002, 0x02D6F484, 0xA0013904, 0x00000002, 0x02E45684, 0xA0013904,
+-	0x00000002, 0x02E4B684, 0xA0013904, 0x00000002,
+-	// Block 145, offset 0x2440
+-	0x02E71684, 0xA0013904, 0x00000002, 0x02EB1684, 0xA0013904, 0x00000002,
+-	0x02EDDC84, 0xA0013904, 0x00000002, 0x02F27484, 0xA0013904, 0x00000002,
+-	0x02F5F284, 0xA0013904, 0x00000002, 0x02FEA484, 0xA0013904, 0x00000002,
+-	0x02FEA684, 0xA0013904, 0x00000002, 0x02FEA684, 0xA0013A04, 0x00000002,
+-	0x02FF1484, 0xA0013904, 0x00000002, 0x02FF1484, 0xA0013A04, 0x00000002,
+-	0x0300FE84, 0xA0013904, 0x00000002, 0x03011284, 0xA0013904, 0x00000002,
+-	0x0303F884, 0xA0013904, 0x00000002, 0x0304F284, 0xA0013904, 0x00000002,
+-	0x0304F284, 0xA0013A04, 0x00000002, 0x0313A484, 0xA0013904, 0x00000002,
+-	0x031B6684, 0xA0013904, 0x00000002, 0x031F6C84, 0xA0013904, 0x00000002,
+-	0x031F6C84, 0xA0013A04, 0x00000002, 0x03212284, 0xA0013904, 0x00000002,
+-	0x032C3884, 0xA0013904, 0x00000002, 0x032DD084,
+-	// Block 146, offset 0x2480
+-	0xA0013904, 0x00000002, 0x0331C084, 0xA0013904, 0x00000002, 0x03332C84,
+-	0xA0013904, 0x00000002, 0x03355084, 0xA0013904, 0x00000002, 0x03367884,
+-	0xA0013904, 0x00000002, 0x033CEA84, 0xA0013904, 0x00000002, 0x033E9484,
+-	0xA0013904, 0x00000002, 0x033EA484, 0xA0013904, 0x00000002, 0x033F1A84,
+-	0xA0013904, 0x00000002, 0x033F3884, 0xA0013904, 0x00000002, 0x033F3884,
+-	0xA0013A04, 0x00000002, 0x00393C99, 0x003A8E99, 0x00000002, 0x00393C9A,
+-	0x003A8E9A, 0x00000002, 0x00395699, 0x003A8E99, 0x00000002, 0x0039569A,
+-	0x003A8E9A, 0x00000002, 0x00395899, 0x003A8E99, 0x00000002, 0x0039589A,
+-	0x003A8E9A, 0x00000002, 0x00396499, 0x003A8E99, 0x00000002, 0x0039649A,
+-	0x003A8E9A, 0x00000002, 0x00397299, 0x003A8E99, 0x00000002, 0x0039729A,
+-	0x003A8E9A, 0x00000002, 0x00397499, 0x003A8E99,
+-	// Block 147, offset 0x24c0
+-	0x00000002, 0x0039749A, 0x003A8E9A, 0x00000002, 0x0039C699, 0x003A8E99,
+-	0x00000002, 0x0039C69A, 0x003A8E9A, 0x00000002, 0x0039C899, 0x003A8E99,
+-	0x00000002, 0x0039C89A, 0x003A8E9A, 0x00000002, 0x0039DC99, 0x003A8E99,
+-	0x00000002, 0x0039DC9A, 0x003A8E9A, 0x00000002, 0x0039DE99, 0x003A8E99,
+-	0x00000002, 0x0039DE9A, 0x003A8E9A, 0x00000002, 0x0039E699, 0x003A8E99,
+-	0x00000002, 0x0039E69A, 0x003A8E9A, 0x00000002, 0x0039EE99, 0x003A8E99,
+-	0x00000002, 0x0039EE9A, 0x003A8E9A, 0x00000002, 0x0039F099, 0x003A8E99,
+-	0x00000002, 0x0039F09A, 0x003A8E9A, 0x00000002, 0x0039FC99, 0x003A8E99,
+-	0x00000002, 0x0039FC9A, 0x003A8E9A, 0x00000002, 0x003A1299, 0x003A8E99,
+-	0x00000002, 0x003A129A, 0x003A8E9A, 0x00000002, 0x003A1A99, 0x003A8E99,
+-	0x00000002, 0x003A1A9A, 0x003A8E9A, 0x00000002,
+-	// Block 148, offset 0x2500
+-	0x003A4099, 0x003A8E99, 0x00000002, 0x003A409A, 0x003A8E9A, 0x00000002,
+-	0x003A4E9A, 0x003A8E9A, 0x00000002, 0x003A5699, 0x003A8E99, 0x00000002,
+-	0x003A569A, 0x003A8E9A, 0x00000002, 0x003A689A, 0x003A8E9A, 0x00000002,
+-	0x003A9099, 0x003A8E99, 0x00000002, 0x003A909A, 0x003A8E9A, 0x00000003,
+-	0x0003F484, 0x002D9A8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002F5684,
+-	0x0003F69F, 0x00000003, 0x0003F484, 0x002F568A, 0x0003F69F, 0x00000003,
+-	0x0003F484, 0x0030F684, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030F68A,
+-	0x0003F69F, 0x00000002, 0x002C0A9D, 0x002F569C, 0x00000002, 0x402C3C20,
+-	0xAE603202, 0x00000002, 0x002C3C83, 0xAE603202, 0x00000002, 0x402D6A20,
+-	0xAE604702, 0x00000002, 0x002D6A83, 0xAE604702, 0x00000002, 0x402D6A20,
+-	0xAE605202, 0x00000002, 0x002D6A83, 0xAE605202,
+-	// Block 149, offset 0x2540
+-	0x00000002, 0x002D9883, 0xAE603202, 0x00000002, 0x002D9883, 0xAE603502,
+-	0x00000002, 0x002D9883, 0xAE603702, 0x00000002, 0x002D9883, 0xAE603C02,
+-	0x00000002, 0x002D9883, 0xAE604102, 0x00000002, 0x002D9883, 0xAE604702,
+-	0x00000003, 0x002D9883, 0xAE604702, 0xAE603202, 0x00000002, 0x002D9883,
+-	0xAE604E02, 0x00000002, 0x002D9883, 0xACA05902, 0x00000002, 0x002D9883,
+-	0xAE605B02, 0x00000002, 0x002D9883, 0xAE606402, 0x00000002, 0x002D9883,
+-	0xAE606502, 0x00000002, 0x002D9883, 0xAE606702, 0x00000002, 0x002D9883,
+-	0xADC07002, 0x00000002, 0x002D9883, 0xADC07A02, 0x00000002, 0x002D9A8A,
+-	0x002D9A9F, 0x00000003, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F, 0x00000002,
+-	0x002D9A8A, 0x002DCC8A, 0x00000002, 0x002D9A9D, 0x00306C9D, 0x00000002,
+-	0x002D9A8A, 0x0030BE9F, 0x00000002, 0x002D9A84,
+-	// Block 150, offset 0x2580
+-	0x0030F69F, 0x00000002, 0x002D9A8A, 0x0030F69F, 0x00000002, 0x002E229C,
+-	0x0030F69C, 0x00000002, 0x402EE420, 0xAE604E02, 0x00000002, 0x002EE483,
+-	0xAE604E02, 0x00000002, 0x402EE420, 0xAE605B02, 0x00000002, 0x002EE483,
+-	0xAE605B02, 0x00000002, 0x40306E20, 0xAE603202, 0x00000002, 0x00306E83,
+-	0xAE603202, 0x00000002, 0x40306E20, 0xAE603502, 0x00000002, 0x00306E83,
+-	0xAE603502, 0x00000002, 0x40306E20, 0xAE604102, 0x00000002, 0x00306E83,
+-	0xAE604102, 0x00000002, 0x40306E20, 0xAE605B02, 0x00000002, 0x00306E83,
+-	0xAE605B02, 0x00000002, 0x0030BE8A, 0x002D9A9F, 0x00000003, 0x0030BE8A,
+-	0x002D9A8A, 0x002D9A9F, 0x00000002, 0x0030F684, 0x002D9A9F, 0x00000002,
+-	0x0030F68A, 0x002D9A9F, 0x00000003, 0x0030F684, 0x002D9A84, 0x002D9A9F,
+-	0x00000003, 0x0030F68A, 0x002D9A8A, 0x002D9A9F,
+-	// Block 151, offset 0x25c0
+-	0x00000002, 0x402FE820, 0xAE605202, 0x00000002, 0x002FE883, 0xAE605202,
+-	0x00000002, 0x002C6294, 0xA0013914, 0x00000002, 0x00302C83, 0x402D6820,
+-	0x00000002, 0x00302C89, 0x002D6888, 0x00000002, 0x40310021, 0xAE603202,
+-	0x00000002, 0x003100A3, 0xAE603202, 0x00000002, 0x40310021, 0xAE603502,
+-	0x00000002, 0x003100A3, 0xAE603502, 0x00000002, 0x40310021, 0xAE604102,
+-	0x00000002, 0x003100A3, 0xAE604102, 0x00000002, 0x40310021, 0xAE605B02,
+-	0x00000002, 0x003100A3, 0xAE605B02, 0x00000002, 0x40320C20, 0xAE603202,
+-	0x00000002, 0x00320C83, 0xAE603202, 0x00000002, 0x40320C20, 0xAE605B02,
+-	0x00000002, 0x00320C83, 0xAE605B02, 0x00000002, 0x40320C21, 0xAE605B02,
+-	0x00000002, 0x00320CA3, 0xAE605B02, 0x00000002, 0x40320E20, 0xAE603202,
+-	0x00000002, 0x00320E83, 0xAE603202, 0x00000002,
+-	// Block 152, offset 0x2600
+-	0x40320E21, 0xAE604E02, 0x00000002, 0x00320EA3, 0xAE604E02, 0x00000002,
+-	0x40320E21, 0xAE605B02, 0x00000002, 0x00320EA3, 0xAE605B02, 0x00000002,
+-	0x40321020, 0xAE603202, 0x00000002, 0x00321083, 0xAE603202, 0x00000002,
+-	0x404A7620, 0x838225B3, 0x00000004, 0x004A8083, 0x404AB020, 0x404A8020,
+-	0x404AFA20, 0x00000004, 0x004A8084, 0x404AB020, 0x404A8020, 0x404AFA20,
+-	0x00000004, 0x004A8083, 0x404AB420, 0x404A8020, 0x404AFA20, 0x00000004,
+-	0x004A8084, 0x404AB420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004A8083,
+-	0x404AFA20, 0x404A8020, 0x404AFA20, 0x00000004, 0x004A8084, 0x404AFA20,
+-	0x404A8020, 0x404AFA20, 0x00000002, 0x404A8020, 0x828225B5, 0x00000004,
+-	0x004AB083, 0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB084,
+-	0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004,
+-	// Block 153, offset 0x2640
+-	0x004AB083, 0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB084,
+-	0x404A8420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB083, 0x404AB820,
+-	0x404A8020, 0x404AFA20, 0x00000004, 0x004AB084, 0x404AB820, 0x404A8020,
+-	0x404AFA20, 0x00000004, 0x004AB083, 0x404AC020, 0x404A8020, 0x404AFA20,
+-	0x00000004, 0x004AB084, 0x404AC020, 0x404A8020, 0x404AFA20, 0x00000004,
+-	0x004AB083, 0x404AC420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AB084,
+-	0x404AC420, 0x404A8020, 0x404AFA20, 0x00000002, 0x404AB020, 0x828225B5,
+-	0x00000002, 0x004AB083, 0x828225B5, 0x00000004, 0x004AC083, 0x404A8020,
+-	0x404A8020, 0x404AFA20, 0x00000004, 0x004AC084, 0x404A8020, 0x404A8020,
+-	0x404AFA20, 0x00000004, 0x004AC083, 0x404AB020, 0x404A8020, 0x404AFA20,
+-	0x00000004, 0x004AC084, 0x404AB020, 0x404A8020,
+-	// Block 154, offset 0x2680
+-	0x404AFA20, 0x00000004, 0x004AC083, 0x404AFA20, 0x404A8020, 0x404AFA20,
+-	0x00000004, 0x004AC084, 0x404AFA20, 0x404A8020, 0x404AFA20, 0x00000002,
+-	0x404AC020, 0x828225B5, 0x00000004, 0x004AC483, 0x404A8420, 0x404A8020,
+-	0x404AFA20, 0x00000004, 0x004AC484, 0x404A8420, 0x404A8020, 0x404AFA20,
+-	0x00000004, 0x004AC483, 0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004,
+-	0x004AC484, 0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC483,
+-	0x404AB420, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AC484, 0x404AB420,
+-	0x404A8020, 0x404AFA20, 0x00000002, 0x404AD020, 0x828225B5, 0x00000004,
+-	0x004AE083, 0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AE084,
+-	0x404A8020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AE083, 0x404AB020,
+-	0x404A8020, 0x404AFA20, 0x00000004, 0x004AE084,
+-	// Block 155, offset 0x26c0
+-	0x404AB020, 0x404A8020, 0x404AFA20, 0x00000004, 0x004AE083, 0x404AC020,
+-	0x404A8020, 0x404AFA20, 0x00000004, 0x004AE084, 0x404AC020, 0x404A8020,
+-	0x404AFA20, 0x00000002, 0x404AEA20, 0x8281258B, 0x00000002, 0x404AF020,
+-	0x8281258B, 0x00000002, 0x82822599, 0x838225B3, 0x00000002, 0x8282259B,
+-	0x828225B5, 0x00000002, 0x828225A3, 0x828225B5, 0x00000002, 0x838225A3,
+-	0x828225B5, 0x00000002, 0x828225A7, 0x828225B5, 0x00000002, 0x828225AB,
+-	0x828225B5, 0x00000002, 0x402BDE20, 0xAE604202, 0x00000002, 0x002BDE88,
+-	0xAE604202, 0x00000003, 0x402BDE20, 0xAE604202, 0xAE603202, 0x00000003,
+-	0x002BDE88, 0xAE604202, 0xAE603202, 0x00000003, 0x402BDE20, 0xAE604202,
+-	0xAE603502, 0x00000003, 0x002BDE88, 0xAE604202, 0xAE603502, 0x00000003,
+-	0x402BDE20, 0xAE604202, 0xAE604E02, 0x00000003,
+-	// Block 156, offset 0x2700
+-	0x002BDE88, 0xAE604202, 0xAE604E02, 0x00000003, 0x402BDE20, 0xAE604202,
+-	0xAE606402, 0x00000003, 0x002BDE88, 0xAE604202, 0xAE606402, 0x00000003,
+-	0x402BDE20, 0xADC07002, 0xAE604202, 0x00000003, 0x002BDE88, 0xADC07002,
+-	0xAE604202, 0x00000002, 0x402C3A20, 0xAE604202, 0x00000002, 0x002C3A88,
+-	0xAE604202, 0x00000002, 0x402C9820, 0xAE604202, 0x00000002, 0x002C9888,
+-	0xAE604202, 0x00000003, 0x402C9820, 0xAE604202, 0xAE603202, 0x00000003,
+-	0x002C9888, 0xAE604202, 0xAE603202, 0x00000003, 0x402C9820, 0xAE604202,
+-	0xAE603502, 0x00000003, 0x002C9888, 0xAE604202, 0xAE603502, 0x00000003,
+-	0x402C9820, 0xAE604202, 0xAE604E02, 0x00000003, 0x002C9888, 0xAE604202,
+-	0xAE604E02, 0x00000003, 0x402C9820, 0xAE604202, 0xAE606402, 0x00000003,
+-	0x002C9888, 0xAE604202, 0xAE606402, 0x00000003,
+-	// Block 157, offset 0x2740
+-	0x402C9820, 0xADC07002, 0xAE604202, 0x00000003, 0x002C9888, 0xADC07002,
+-	0xAE604202, 0x00000002, 0x402D2220, 0xAE604202, 0x00000002, 0x002D2288,
+-	0xAE604202, 0x00000002, 0x402D6820, 0xAE604202, 0x00000002, 0x002D6888,
+-	0xAE604202, 0x00000002, 0x402D9A20, 0xAE604202, 0x00000002, 0x002D9A88,
+-	0xAE604202, 0x00000002, 0x402DCC20, 0xAE604202, 0x00000002, 0x002DCC88,
+-	0xAE604202, 0x00000002, 0x402EE220, 0xAE604202, 0x00000002, 0x002EE288,
+-	0xAE604202, 0x00000003, 0x402EE220, 0xAE604202, 0xAE603202, 0x00000003,
+-	0x002EE288, 0xAE604202, 0xAE603202, 0x00000003, 0x402EE220, 0xAE604202,
+-	0xAE603502, 0x00000003, 0x002EE288, 0xAE604202, 0xAE603502, 0x00000003,
+-	0x402EE220, 0xAE604202, 0xAE604E02, 0x00000003, 0x002EE288, 0xAE604202,
+-	0xAE604E02, 0x00000003, 0x402EE220, 0xAE604202,
+-	// Block 158, offset 0x2780
+-	0xAE606402, 0x00000003, 0x002EE288, 0xAE604202, 0xAE606402, 0x00000003,
+-	0x402EE220, 0xADC07002, 0xAE604202, 0x00000003, 0x002EE288, 0xADC07002,
+-	0xAE604202, 0x00000002, 0x402FE620, 0xAE604202, 0x00000002, 0x002FE688,
+-	0xAE604202, 0x00000002, 0x40306C20, 0xAE604202, 0x00000002, 0x00306C88,
+-	0xAE604202, 0x00000002, 0x4030E220, 0xAE604202, 0x00000002, 0x0030E288,
+-	0xAE604202, 0x00000002, 0x40310020, 0xAE604202, 0x00000002, 0x00310088,
+-	0xAE604202, 0x00000002, 0x40312A20, 0xAE604202, 0x00000002, 0x00312A88,
+-	0xAE604202, 0x00000002, 0x0002BA84, 0x0002BA9F, 0x00000002, 0x0002BA84,
+-	0x0002C49F, 0x00000002, 0x0002C484, 0x0002BA9F, 0x00000003, 0x0003F484,
+-	0x0029CE84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029D084, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0029D284, 0x0003F69F,
+-	// Block 159, offset 0x27c0
+-	0x00000003, 0x0003F484, 0x0029D484, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0029D684, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029D884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0029DA84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0029DC84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0029DE84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002BDE84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002BDE8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002C0A84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002C0A8A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002C3A84, 0x0003F69F, 0x00000003, 0x0003F484, 0x002C3A8A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002C6284, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002C628A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002C9884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002C988A, 0x0003F69F,
+-	// Block 160, offset 0x2800
+-	0x00000003, 0x0003F484, 0x002D0884, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002D088A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002D2284, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002D228A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002D6884, 0x0003F69F, 0x00000003, 0x0003F484, 0x002D688A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002D9A84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002DCC84, 0x0003F69F, 0x00000003, 0x0003F484, 0x002DCC8A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002DFE84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002DFE8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002E2284, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002E228A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002E8284, 0x0003F69F, 0x00000003, 0x0003F484, 0x002E828A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002E9E84, 0x0003F69F,
+-	// Block 161, offset 0x2840
+-	0x00000003, 0x0003F484, 0x002E9E8A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002EE284, 0x0003F69F, 0x00000003, 0x0003F484, 0x002EE28A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002F2C84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002F2C8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x002F7A84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x002F7A8A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x002FE684, 0x0003F69F, 0x00000003, 0x0003F484, 0x002FE68A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x00302C84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x00302C8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x00306C84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x00306C8A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0030BE84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030BE8A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0030E284, 0x0003F69F,
+-	// Block 162, offset 0x2880
+-	0x00000003, 0x0003F484, 0x0030E28A, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x00310084, 0x0003F69F, 0x00000003, 0x0003F484, 0x0031008A, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x00312A84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x00312A8A, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062AC84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0062B084, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0062B284, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062B684, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0062B884, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0062BA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062BE84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0062C284, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0062C484, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062C884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0062CA84, 0x0003F69F,
+-	// Block 163, offset 0x28c0
+-	0x00000003, 0x0003F484, 0x0062CC84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x0062CE84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0062D084, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x029C0084, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x029C0684, 0x0003F69F, 0x00000003, 0x0003F484, 0x029C1284, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x029CBA84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x029D1884, 0x0003F69F, 0x00000003, 0x0003F484, 0x029D2884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x029DC684, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x029E0284, 0x0003F69F, 0x00000003, 0x0003F484, 0x029E2284, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02A2D684, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02A2DA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02A56884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02A68284, 0x0003F69F,
+-	// Block 164, offset 0x2900
+-	0x00000003, 0x0003F484, 0x02A6A884, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02A81A84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02A8F884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02ADB684, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02AE3E84, 0x0003F69F, 0x00000003, 0x0003F484, 0x02B6CC84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02CBCA84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02CE1084, 0x0003F69F, 0x00000003, 0x0003F484, 0x02CE1284, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02CE5084, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02D05484, 0x0003F69F, 0x00000003, 0x0003F484, 0x02D86884, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02E0D684, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02E4F284, 0x0003F69F, 0x00000003, 0x0003F484, 0x02EDC684, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x02F27C84, 0x0003F69F,
+-	// Block 165, offset 0x2940
+-	0x00000003, 0x0003F484, 0x02F2BA84, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x02F2DA84, 0x0003F69F, 0x00000003, 0x0003F484, 0x0303D484, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0303E684, 0x0003F69F, 0x00000003, 0x0003F484,
+-	0x03194284, 0x0003F69F, 0x00000003, 0x0003F484, 0x03198E84, 0x0003F69F,
+-	0x00000003, 0x0003F484, 0x0323A284, 0x0003F69F, 0x00000003, 0x0004B084,
+-	0x002FE68A, 0x0004B29F, 0x00000002, 0x00070484, 0x002C3A8A, 0x00000002,
+-	0x00070484, 0x002D088A, 0x00000002, 0x0029CE86, 0x0029DA86, 0x00000003,
+-	0x0029CE84, 0x0029DA84, 0x0002E49F, 0x00000003, 0x0029CE84, 0x0029DA84,
+-	0x02CBCA9F, 0x00000003, 0x0029CE84, 0x0029DA84, 0x02E1729F, 0x00000002,
+-	0x0029D086, 0x0029DA86, 0x00000003, 0x0029D084, 0x0029DA84, 0x02CBCA9F,
+-	0x00000002, 0x0029D286, 0x0029DA86, 0x00000002,
+-	// Block 166, offset 0x2980
+-	0x0029D486, 0x0029DA86, 0x00000002, 0x0029DA84, 0x0002409F, 0x00000002,
+-	0x0029DA84, 0x0002E49F, 0x00000002, 0x0029DA84, 0x02CBCA9F, 0x00000002,
+-	0x0029DA84, 0x02CE109F, 0x00000002, 0x0029DA84, 0x02E1729F, 0x00000002,
+-	0x002BDE9D, 0x00306C9D, 0x00000002, 0x002BDE84, 0x0031E284, 0x00000002,
+-	0x402BF220, 0xAE603202, 0x00000002, 0x402BF220, 0xAE603502, 0x00000002,
+-	0x402BF220, 0xAE603702, 0x00000003, 0x402BF220, 0xAE603702, 0xAE603202,
+-	0x00000003, 0x402BF220, 0xAE603702, 0xAE603502, 0x00000003, 0x402BF220,
+-	0xAE603702, 0xAE604E02, 0x00000003, 0x402BF220, 0xAE603702, 0xAE606402,
+-	0x00000002, 0x402BF220, 0xAE603C02, 0x00000003, 0x402BF220, 0xAE603C02,
+-	0xAE603202, 0x00000003, 0x402BF220, 0xAE603C02, 0xAE603502, 0x00000003,
+-	0x402BF220, 0xAE603C02, 0xAE604E02, 0x00000003,
+-	// Block 167, offset 0x29c0
+-	0x402BF220, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BF220, 0xAE604102,
+-	0x00000002, 0x402BF220, 0xAE604302, 0x00000003, 0x402BF220, 0xAE604302,
+-	0xAE603202, 0x00000002, 0x402BF220, 0xAE604702, 0x00000003, 0x402BF220,
+-	0xAE604702, 0xAE605B02, 0x00000002, 0x402BF220, 0xAE604E02, 0x00000002,
+-	0x402BF220, 0xAE605202, 0x00000003, 0x402BF220, 0xAE605202, 0xAE605B02,
+-	0x00000002, 0x402BF220, 0xACA05902, 0x00000002, 0x402BF220, 0xAE605B02,
+-	0x00000002, 0x402BF220, 0xAE606402, 0x00000002, 0x402BF220, 0xAE606502,
+-	0x00000002, 0x402BF220, 0xAE606702, 0x00000002, 0x402BF220, 0xADC07002,
+-	0x00000003, 0x402BF220, 0xADC07002, 0xAE603702, 0x00000003, 0x402BF220,
+-	0xADC07002, 0xAE603C02, 0x00000002, 0x402BF220, 0xADC07602, 0x00000002,
+-	0x402BF420, 0xAE605202, 0x00000002, 0x402BF420,
+-	// Block 168, offset 0x2a00
+-	0xADC07002, 0x00000002, 0x402BF420, 0xADC07B02, 0x00000002, 0x402BF620,
+-	0xAE603202, 0x00000002, 0x402BF620, 0xAE603C02, 0x00000002, 0x402BF620,
+-	0xAE604102, 0x00000002, 0x402BF620, 0xAE605202, 0x00000002, 0x402BF620,
+-	0xACA05602, 0x00000003, 0x402BF620, 0xACA05602, 0xAE603202, 0x00000002,
+-	0x402BF820, 0xAE604102, 0x00000002, 0x402BF820, 0xAE605202, 0x00000002,
+-	0x402BF820, 0xACA05602, 0x00000002, 0x402BF820, 0xADC07002, 0x00000002,
+-	0x402BF820, 0xADC07802, 0x00000002, 0x402BF820, 0xADC07B02, 0x00000002,
+-	0x402BFA20, 0xAE603202, 0x00000002, 0x402BFA20, 0xAE603502, 0x00000002,
+-	0x402BFA20, 0xAE603702, 0x00000002, 0x402BFA20, 0xAE603C02, 0x00000003,
+-	0x402BFA20, 0xAE603C02, 0xAE603202, 0x00000003, 0x402BFA20, 0xAE603C02,
+-	0xAE603502, 0x00000003, 0x402BFA20, 0xAE603C02,
+-	// Block 169, offset 0x2a40
+-	0xAE604E02, 0x00000003, 0x402BFA20, 0xAE603C02, 0xAE606402, 0x00000002,
+-	0x402BFA20, 0xAE604102, 0x00000002, 0x402BFA20, 0xAE604702, 0x00000002,
+-	0x402BFA20, 0xAE604E02, 0x00000002, 0x402BFA20, 0xAE605202, 0x00000002,
+-	0x402BFA20, 0xACA05602, 0x00000003, 0x402BFA20, 0xACA05602, 0xAE603702,
+-	0x00000002, 0x402BFA20, 0xACA05902, 0x00000002, 0x402BFA20, 0xAE605B02,
+-	0x00000003, 0x402BFA20, 0xAE605B02, 0xAE603202, 0x00000003, 0x402BFA20,
+-	0xAE605B02, 0xAE603502, 0x00000002, 0x402BFA20, 0xAE606402, 0x00000002,
+-	0x402BFA20, 0xAE606502, 0x00000002, 0x402BFA20, 0xAE606702, 0x00000002,
+-	0x402BFA20, 0xADC07002, 0x00000003, 0x402BFA20, 0xADC07002, 0xAE603C02,
+-	0x00000002, 0x402BFA20, 0xADC07802, 0x00000002, 0x402BFA20, 0xADC07A02,
+-	0x00000002, 0x402BFC20, 0xAE605202, 0x00000002,
+-	// Block 170, offset 0x2a80
+-	0x402BFE20, 0xAE603202, 0x00000002, 0x402BFE20, 0xAE603702, 0x00000002,
+-	0x402BFE20, 0xAE603C02, 0x00000002, 0x402BFE20, 0xAE604102, 0x00000002,
+-	0x402BFE20, 0xAE605202, 0x00000002, 0x402BFE20, 0xACA05602, 0x00000002,
+-	0x402BFE20, 0xAE605B02, 0x00000002, 0x402C0020, 0xAE603C02, 0x00000002,
+-	0x402C0020, 0xAE604102, 0x00000002, 0x402C0020, 0xAE604702, 0x00000002,
+-	0x402C0020, 0xAE605202, 0x00000002, 0x402C0020, 0xACA05602, 0x00000002,
+-	0x402C0020, 0xADC07002, 0x00000002, 0x402C0020, 0xADC07902, 0x00000002,
+-	0x402C0220, 0xAE603202, 0x00000002, 0x402C0220, 0xAE603502, 0x00000002,
+-	0x402C0220, 0xAE603702, 0x00000002, 0x402C0220, 0xAE603C02, 0x00000002,
+-	0x402C0220, 0xAE604102, 0x00000002, 0x402C0220, 0xAE604702, 0x00000003,
+-	0x402C0220, 0xAE604702, 0xAE603202, 0x00000002,
+-	// Block 171, offset 0x2ac0
+-	0x402C0220, 0xAE604E02, 0x00000002, 0x402C0220, 0xAE605202, 0x00000002,
+-	0x402C0220, 0xACA05902, 0x00000002, 0x402C0220, 0xAE605B02, 0x00000002,
+-	0x402C0220, 0xAE606402, 0x00000002, 0x402C0220, 0xAE606502, 0x00000002,
+-	0x402C0220, 0xAE606702, 0x00000002, 0x402C0220, 0xADC07002, 0x00000002,
+-	0x402C0220, 0xADC07A02, 0x00000002, 0x402C0420, 0xAE603C02, 0x00000002,
+-	0x402C0620, 0xAE603202, 0x00000002, 0x402C0620, 0xAE604102, 0x00000002,
+-	0x402C0620, 0xACA05602, 0x00000002, 0x402C0620, 0xADC07002, 0x00000002,
+-	0x402C0620, 0xADC07B02, 0x00000002, 0x402C0820, 0xAE603202, 0x00000002,
+-	0x402C0820, 0xAE604102, 0x00000002, 0x402C0820, 0xACA05602, 0x00000002,
+-	0x402C0820, 0xADC07002, 0x00000003, 0x402C0820, 0xADC07002, 0xAE605B02,
+-	0x00000002, 0x402C0820, 0xADC07802, 0x00000002,
+-	// Block 172, offset 0x2b00
+-	0x402C0820, 0xADC07B02, 0x00000002, 0x402C0A20, 0xAE603202, 0x00000002,
+-	0x402C0A20, 0xAE605202, 0x00000002, 0x402C0A20, 0xADC07002, 0x00000002,
+-	0x402C0C20, 0xAE603202, 0x00000002, 0x402C0C20, 0xAE603502, 0x00000002,
+-	0x402C0C20, 0xAE604102, 0x00000002, 0x402C0C20, 0xAE604E02, 0x00000002,
+-	0x402C0C20, 0xAE605202, 0x00000002, 0x402C0C20, 0xACA05602, 0x00000002,
+-	0x402C0C20, 0xADC07002, 0x00000002, 0x402C0C20, 0xADC07802, 0x00000002,
+-	0x402C0C20, 0xADC07B02, 0x00000002, 0x402C0E20, 0xAE603202, 0x00000002,
+-	0x402C0E20, 0xAE603502, 0x00000002, 0x402C0E20, 0xAE603702, 0x00000002,
+-	0x402C0E20, 0xAE603C02, 0x00000003, 0x402C0E20, 0xAE603C02, 0xAE603202,
+-	0x00000003, 0x402C0E20, 0xAE603C02, 0xAE603502, 0x00000003, 0x402C0E20,
+-	0xAE603C02, 0xAE604E02, 0x00000003, 0x402C0E20,
+-	// Block 173, offset 0x2b40
+-	0xAE603C02, 0xAE606402, 0x00000002, 0x402C0E20, 0xAE604102, 0x00000002,
+-	0x402C0E20, 0xAE604702, 0x00000003, 0x402C0E20, 0xAE604702, 0xAE605B02,
+-	0x00000002, 0x402C0E20, 0xAE604D02, 0x00000002, 0x402C0E20, 0xAE604E02,
+-	0x00000003, 0x402C0E20, 0xAE604E02, 0xAE603202, 0x00000003, 0x402C0E20,
+-	0xAE604E02, 0xAE604702, 0x00000003, 0x402C0E20, 0xAE604E02, 0xAE605B02,
+-	0x00000002, 0x402C0E20, 0xAE605202, 0x00000003, 0x402C0E20, 0xAE605202,
+-	0xAE605B02, 0x00000002, 0x402C0E20, 0xACA05902, 0x00000003, 0x402C0E20,
+-	0xACA05902, 0xAE605B02, 0x00000002, 0x402C0E20, 0xAE605B02, 0x00000003,
+-	0x402C0E20, 0xAE605B02, 0xAE603202, 0x00000003, 0x402C0E20, 0xAE605B02,
+-	0xAE603502, 0x00000002, 0x402C0E20, 0xAE606402, 0x00000002, 0x402C0E20,
+-	0xAE606502, 0x00000002, 0x402C0E20, 0xAE606702,
+-	// Block 174, offset 0x2b80
+-	0x00000002, 0x402C0E20, 0xAD806802, 0x00000003, 0x402C0E20, 0xAD806802,
+-	0xAE603202, 0x00000003, 0x402C0E20, 0xAD806802, 0xAE603502, 0x00000003,
+-	0x402C0E20, 0xAD806802, 0xAE604E02, 0x00000003, 0x402C0E20, 0xAD806802,
+-	0xAE606402, 0x00000003, 0x402C0E20, 0xAD806802, 0xADC07002, 0x00000002,
+-	0x402C0E20, 0xADC07002, 0x00000003, 0x402C0E20, 0xADC07002, 0xAE603C02,
+-	0x00000002, 0x402C1020, 0xAE603202, 0x00000002, 0x402C1020, 0xAE605202,
+-	0x00000002, 0x402C1420, 0xAE603202, 0x00000002, 0x402C1420, 0xAE604102,
+-	0x00000002, 0x402C1420, 0xAE605202, 0x00000002, 0x402C1420, 0xACA05602,
+-	0x00000002, 0x402C1420, 0xAE606502, 0x00000002, 0x402C1420, 0xAE606702,
+-	0x00000002, 0x402C1420, 0xADC07002, 0x00000003, 0x402C1420, 0xADC07002,
+-	0xAE605B02, 0x00000002, 0x402C1420, 0xADC07B02,
+-	// Block 175, offset 0x2bc0
+-	0x00000002, 0x402C1620, 0xAE603202, 0x00000003, 0x402C1620, 0xAE603202,
+-	0xAE605202, 0x00000002, 0x402C1620, 0xAE603C02, 0x00000002, 0x402C1620,
+-	0xAE604102, 0x00000003, 0x402C1620, 0xAE604102, 0xAE605202, 0x00000002,
+-	0x402C1620, 0xAE605202, 0x00000002, 0x402C1620, 0xACA05602, 0x00000002,
+-	0x402C1620, 0xADC07002, 0x00000003, 0x402C1620, 0xADC07002, 0xAE605202,
+-	0x00000002, 0x402C1620, 0xADC07702, 0x00000002, 0x402C1820, 0xAE604102,
+-	0x00000002, 0x402C1820, 0xAE605202, 0x00000002, 0x402C1820, 0xACA05602,
+-	0x00000002, 0x402C1820, 0xADC07002, 0x00000002, 0x402C1820, 0xADC07702,
+-	0x00000002, 0x402C1820, 0xADC07802, 0x00000002, 0x402C1820, 0xADC07B02,
+-	0x00000002, 0x402C1A20, 0xAE603202, 0x00000002, 0x402C1A20, 0xAE603502,
+-	0x00000002, 0x402C1A20, 0xAE603702, 0x00000002,
+-	// Block 176, offset 0x2c00
+-	0x402C1A20, 0xAE603C02, 0x00000002, 0x402C1A20, 0xAE604102, 0x00000002,
+-	0x402C1A20, 0xAE604302, 0x00000002, 0x402C1A20, 0xAE604702, 0x00000003,
+-	0x402C1A20, 0xAE604702, 0xAE603202, 0x00000003, 0x402C1A20, 0xAE604702,
+-	0xAE603502, 0x00000003, 0x402C1A20, 0xAE604702, 0xAE604102, 0x00000003,
+-	0x402C1A20, 0xAE604702, 0xAE605B02, 0x00000002, 0x402C1A20, 0xAE604D02,
+-	0x00000002, 0x402C1A20, 0xAE604E02, 0x00000003, 0x402C1A20, 0xAE604E02,
+-	0xAE603202, 0x00000002, 0x402C1A20, 0xACA05902, 0x00000002, 0x402C1A20,
+-	0xAE605B02, 0x00000003, 0x402C1A20, 0xAE605B02, 0xAE604702, 0x00000002,
+-	0x402C1A20, 0xAE606402, 0x00000002, 0x402C1A20, 0xAE606502, 0x00000002,
+-	0x402C1A20, 0xAE606702, 0x00000002, 0x402C1A20, 0xAD806802, 0x00000003,
+-	0x402C1A20, 0xAD806802, 0xAE603202, 0x00000003,
+-	// Block 177, offset 0x2c40
+-	0x402C1A20, 0xAD806802, 0xAE603502, 0x00000003, 0x402C1A20, 0xAD806802,
+-	0xAE604E02, 0x00000003, 0x402C1A20, 0xAD806802, 0xAE606402, 0x00000003,
+-	0x402C1A20, 0xAD806802, 0xADC07002, 0x00000002, 0x402C1A20, 0xADC07002,
+-	0x00000002, 0x402C1A20, 0xADC07502, 0x00000002, 0x402C1A20, 0xADC07802,
+-	0x00000002, 0x402C1A20, 0xADC07A02, 0x00000002, 0x402C1C20, 0xAE604E02,
+-	0x00000002, 0x402C1C20, 0xADC07002, 0x00000002, 0x402C1E20, 0xAE603202,
+-	0x00000002, 0x402C1E20, 0xAE603502, 0x00000002, 0x402C1E20, 0xAE603C02,
+-	0x00000002, 0x402C1E20, 0xAE604702, 0x00000002, 0x402C1E20, 0xAE605202,
+-	0x00000002, 0x402C1E20, 0xADC07002, 0x00000002, 0x402C2020, 0xAE604702,
+-	0x00000002, 0x402C2020, 0xAE605202, 0x00000002, 0x402C2220, 0xAE603202,
+-	0x00000002, 0x402C2220, 0xAE603502, 0x00000002,
+-	// Block 178, offset 0x2c80
+-	0x402C2220, 0xAE603C02, 0x00000002, 0x402C2220, 0xAE604702, 0x00000002,
+-	0x402C2220, 0xAE604E02, 0x00000002, 0x402C2220, 0xAE605202, 0x00000002,
+-	0x402C2220, 0xAE605B02, 0x00000002, 0x402C2220, 0xAE606402, 0x00000002,
+-	0x402C2220, 0xADC07002, 0x00000002, 0x402C2420, 0xAE603202, 0x00000002,
+-	0x402C2420, 0xAE603C02, 0x00000002, 0x402C2420, 0xAE604102, 0x00000002,
+-	0x402C2420, 0xAE605202, 0x00000002, 0x402C2420, 0xADC07002, 0x00000002,
+-	0x402C2420, 0xADC07B02, 0x00000002, 0x402C2820, 0xAE603202, 0x00000002,
+-	0x402C2820, 0xAE603502, 0x00000002, 0x402C2820, 0xAE603702, 0x00000003,
+-	0x402C2820, 0xAE603702, 0xAE603202, 0x00000003, 0x402C2820, 0xAE603702,
+-	0xAE603502, 0x00000003, 0x402C2820, 0xAE603702, 0xAE604E02, 0x00000003,
+-	0x402C2820, 0xAE603702, 0xAE606402, 0x00000002,
+-	// Block 179, offset 0x2cc0
+-	0x402C2820, 0xAE603C02, 0x00000003, 0x402C2820, 0xAE603C02, 0xAE603202,
+-	0x00000003, 0x402C2820, 0xAE603C02, 0xAE603502, 0x00000003, 0x402C2820,
+-	0xAE603C02, 0xAE604E02, 0x00000003, 0x402C2820, 0xAE603C02, 0xAE606402,
+-	0x00000002, 0x402C2820, 0xAE604102, 0x00000002, 0x402C2820, 0xAE604302,
+-	0x00000003, 0x402C2820, 0xAE604302, 0xAE603202, 0x00000002, 0x402C2820,
+-	0xAE604702, 0x00000003, 0x402C2820, 0xAE604702, 0xAE605B02, 0x00000002,
+-	0x402C2820, 0xAE604E02, 0x00000002, 0x402C2820, 0xAE605202, 0x00000003,
+-	0x402C2820, 0xAE605202, 0xAE605B02, 0x00000002, 0x402C2820, 0xACA05902,
+-	0x00000002, 0x402C2820, 0xAE605B02, 0x00000002, 0x402C2820, 0xAE606402,
+-	0x00000002, 0x402C2820, 0xAE606502, 0x00000002, 0x402C2820, 0xAE606702,
+-	0x00000002, 0x402C2820, 0xADC07002, 0x00000003,
+-	// Block 180, offset 0x2d00
+-	0x402C2820, 0xADC07002, 0xAE603702, 0x00000003, 0x402C2820, 0xADC07002,
+-	0xAE603C02, 0x00000002, 0x402C2820, 0xADC07602, 0x00000002, 0x402C2A20,
+-	0xAE603202, 0x00000002, 0x402C2A20, 0xAE603702, 0x00000002, 0x402C2A20,
+-	0xAE603C02, 0x00000002, 0x402C2A20, 0xAE604102, 0x00000002, 0x402C2A20,
+-	0xAE605202, 0x00000002, 0x402C2A20, 0xACA05602, 0x00000002, 0x402C2A20,
+-	0xAE605B02, 0x00000002, 0x402C2C20, 0xAE603C02, 0x00000002, 0x402C2C20,
+-	0xAE604102, 0x00000002, 0x402C2C20, 0xAE604702, 0x00000002, 0x402C2C20,
+-	0xAE605202, 0x00000002, 0x402C2C20, 0xACA05602, 0x00000002, 0x402C2C20,
+-	0xADC07002, 0x00000002, 0x402C2C20, 0xADC07902, 0x00000002, 0x402C2C20,
+-	0xADC07B02, 0x00000002, 0x402C2E20, 0xAE603202, 0x00000002, 0x402C2E20,
+-	0xAE603502, 0x00000002, 0x402C2E20, 0xAE603702,
+-	// Block 181, offset 0x2d40
+-	0x00000002, 0x402C2E20, 0xAE603C02, 0x00000002, 0x402C2E20, 0xAE604102,
+-	0x00000002, 0x402C2E20, 0xAE604702, 0x00000003, 0x402C2E20, 0xAE604702,
+-	0xAE603202, 0x00000002, 0x402C2E20, 0xAE604E02, 0x00000002, 0x402C2E20,
+-	0xACA05902, 0x00000002, 0x402C2E20, 0xAE605B02, 0x00000002, 0x402C2E20,
+-	0xAE606402, 0x00000002, 0x402C2E20, 0xAE606502, 0x00000002, 0x402C2E20,
+-	0xAE606702, 0x00000002, 0x402C2E20, 0xADC07002, 0x00000002, 0x402C2E20,
+-	0xADC07A02, 0x00000002, 0x402C3020, 0xAE603C02, 0x00000002, 0x402C3020,
+-	0xAE604102, 0x00000002, 0x402C3220, 0xAE603202, 0x00000002, 0x402C3220,
+-	0xAE604102, 0x00000002, 0x402C3220, 0xACA05602, 0x00000002, 0x402C3220,
+-	0xADC07002, 0x00000002, 0x402C3220, 0xADC07B02, 0x00000002, 0x402C3420,
+-	0xAE603202, 0x00000002, 0x402C3420, 0xAE604102,
+-	// Block 182, offset 0x2d80
+-	0x00000002, 0x402C3420, 0xACA05602, 0x00000002, 0x402C3420, 0xADC07002,
+-	0x00000003, 0x402C3420, 0xADC07002, 0xAE605B02, 0x00000002, 0x402C3420,
+-	0xADC07802, 0x00000002, 0x402C3420, 0xADC07B02, 0x00000002, 0x402C3620,
+-	0xAE603202, 0x00000002, 0x402C3620, 0xAE605202, 0x00000002, 0x402C3620,
+-	0xADC07002, 0x00000002, 0x402C3820, 0xAE603202, 0x00000002, 0x402C3820,
+-	0xAE603502, 0x00000002, 0x402C3820, 0xAE604102, 0x00000002, 0x402C3820,
+-	0xAE604E02, 0x00000002, 0x402C3820, 0xAE605202, 0x00000002, 0x402C3820,
+-	0xACA05602, 0x00000002, 0x402C3820, 0xADC07002, 0x00000002, 0x402C3820,
+-	0xADC07802, 0x00000002, 0x402C3820, 0xADC07B02, 0x00000002, 0x402C3A20,
+-	0xAE603202, 0x00000002, 0x402C3A20, 0xAE603502, 0x00000002, 0x402C3A20,
+-	0xAE603702, 0x00000002, 0x402C3A20, 0xAE603C02,
+-	// Block 183, offset 0x2dc0
+-	0x00000003, 0x402C3A20, 0xAE603C02, 0xAE603202, 0x00000003, 0x402C3A20,
+-	0xAE603C02, 0xAE603502, 0x00000003, 0x402C3A20, 0xAE603C02, 0xAE604E02,
+-	0x00000003, 0x402C3A20, 0xAE603C02, 0xAE606402, 0x00000002, 0x402C3A20,
+-	0xAE604102, 0x00000002, 0x402C3A20, 0xAE604702, 0x00000003, 0x402C3A20,
+-	0xAE604702, 0xAE605B02, 0x00000002, 0x402C3A20, 0xAE604D02, 0x00000002,
+-	0x402C3A20, 0xAE604E02, 0x00000003, 0x402C3A20, 0xAE604E02, 0xAE603202,
+-	0x00000003, 0x402C3A20, 0xAE604E02, 0xAE604702, 0x00000003, 0x402C3A20,
+-	0xAE604E02, 0xAE605B02, 0x00000002, 0x402C3A20, 0xAE605202, 0x00000003,
+-	0x402C3A20, 0xAE605202, 0xAE605B02, 0x00000002, 0x402C3A20, 0xACA05902,
+-	0x00000003, 0x402C3A20, 0xACA05902, 0xAE605B02, 0x00000002, 0x402C3A20,
+-	0xAE605B02, 0x00000003, 0x402C3A20, 0xAE605B02,
+-	// Block 184, offset 0x2e00
+-	0xAE603202, 0x00000003, 0x402C3A20, 0xAE605B02, 0xAE603502, 0x00000002,
+-	0x402C3A20, 0xAE606402, 0x00000002, 0x402C3A20, 0xAE606502, 0x00000002,
+-	0x402C3A20, 0xAE606702, 0x00000002, 0x402C3A20, 0xAD806802, 0x00000003,
+-	0x402C3A20, 0xAD806802, 0xAE603202, 0x00000003, 0x402C3A20, 0xAD806802,
+-	0xAE603502, 0x00000003, 0x402C3A20, 0xAD806802, 0xAE604E02, 0x00000003,
+-	0x402C3A20, 0xAD806802, 0xAE606402, 0x00000003, 0x402C3A20, 0xAD806802,
+-	0xADC07002, 0x00000002, 0x402C3A20, 0xADC07002, 0x00000003, 0x402C3A20,
+-	0xADC07002, 0xAE603C02, 0x00000002, 0x002C3A9C, 0x002C3A9C, 0x00000002,
+-	0x002C3A8C, 0x002C628C, 0x00000002, 0x002C3A9C, 0x002C629C, 0x00000002,
+-	0x002C3A9C, 0x002E829C, 0x00000002, 0x402C3C20, 0xAE603202, 0x00000002,
+-	0x402C3C20, 0xAE605202, 0x00000002, 0x402C4020,
+-	// Block 185, offset 0x2e40
+-	0xAE603202, 0x00000002, 0x402C4020, 0xAE604102, 0x00000002, 0x402C4020,
+-	0xAE605202, 0x00000002, 0x402C4020, 0xACA05602, 0x00000002, 0x402C4020,
+-	0xAE606502, 0x00000002, 0x402C4020, 0xAE606702, 0x00000002, 0x402C4020,
+-	0xADC07002, 0x00000003, 0x402C4020, 0xADC07002, 0xAE605B02, 0x00000002,
+-	0x402C4020, 0xADC07B02, 0x00000002, 0x402C4220, 0xAE603202, 0x00000003,
+-	0x402C4220, 0xAE603202, 0xAE605202, 0x00000002, 0x402C4220, 0xAE603C02,
+-	0x00000002, 0x402C4220, 0xAE604102, 0x00000003, 0x402C4220, 0xAE604102,
+-	0xAE605202, 0x00000002, 0x402C4220, 0xAE605202, 0x00000002, 0x402C4220,
+-	0xACA05602, 0x00000002, 0x402C4220, 0xADC07002, 0x00000003, 0x402C4220,
+-	0xADC07002, 0xAE605202, 0x00000002, 0x402C4220, 0xADC07702, 0x00000002,
+-	0x402C4420, 0xAE604102, 0x00000002, 0x402C4420,
+-	// Block 186, offset 0x2e80
+-	0xAE604702, 0x00000002, 0x402C4420, 0xAE605202, 0x00000002, 0x402C4420,
+-	0xACA05602, 0x00000002, 0x402C4420, 0xADC07002, 0x00000002, 0x402C4420,
+-	0xADC07702, 0x00000002, 0x402C4420, 0xADC07802, 0x00000002, 0x402C4420,
+-	0xADC07B02, 0x00000002, 0x402C4620, 0xAE603202, 0x00000002, 0x402C4620,
+-	0xAE603502, 0x00000002, 0x402C4620, 0xAE603702, 0x00000002, 0x402C4620,
+-	0xAE603C02, 0x00000002, 0x402C4620, 0xAE604102, 0x00000002, 0x402C4620,
+-	0xAE604302, 0x00000002, 0x402C4620, 0xAE604702, 0x00000003, 0x402C4620,
+-	0xAE604702, 0xAE603202, 0x00000003, 0x402C4620, 0xAE604702, 0xAE603502,
+-	0x00000003, 0x402C4620, 0xAE604702, 0xAE604102, 0x00000003, 0x402C4620,
+-	0xAE604702, 0xAE605B02, 0x00000002, 0x402C4620, 0xAE604D02, 0x00000002,
+-	0x402C4620, 0xAE604E02, 0x00000003, 0x402C4620,
+-	// Block 187, offset 0x2ec0
+-	0xAE604E02, 0xAE603202, 0x00000002, 0x402C4620, 0xACA05902, 0x00000002,
+-	0x402C4620, 0xAE605B02, 0x00000003, 0x402C4620, 0xAE605B02, 0xAE604702,
+-	0x00000002, 0x402C4620, 0xAE606402, 0x00000002, 0x402C4620, 0xAE606502,
+-	0x00000002, 0x402C4620, 0xAE606702, 0x00000002, 0x402C4620, 0xAD806802,
+-	0x00000003, 0x402C4620, 0xAD806802, 0xAE603202, 0x00000003, 0x402C4620,
+-	0xAD806802, 0xAE603502, 0x00000003, 0x402C4620, 0xAD806802, 0xAE604E02,
+-	0x00000003, 0x402C4620, 0xAD806802, 0xAE606402, 0x00000003, 0x402C4620,
+-	0xAD806802, 0xADC07002, 0x00000002, 0x402C4620, 0xADC07002, 0x00000002,
+-	0x402C4620, 0xADC07502, 0x00000002, 0x402C4620, 0xADC07802, 0x00000002,
+-	0x402C4620, 0xADC07A02, 0x00000002, 0x402C4820, 0xAE604E02, 0x00000002,
+-	0x402C4820, 0xADC07002, 0x00000002, 0x402C4A20,
+-	// Block 188, offset 0x2f00
+-	0xAE603202, 0x00000002, 0x402C4A20, 0xAE603502, 0x00000002, 0x402C4A20,
+-	0xAE603C02, 0x00000002, 0x402C4A20, 0xAE604302, 0x00000002, 0x402C4A20,
+-	0xAE604702, 0x00000002, 0x402C4A20, 0xAE605202, 0x00000002, 0x402C4A20,
+-	0xADC07002, 0x00000002, 0x402C4C20, 0xAE603202, 0x00000002, 0x402C4C20,
+-	0xAE603502, 0x00000002, 0x402C4C20, 0xAE603C02, 0x00000002, 0x402C4C20,
+-	0xAE604302, 0x00000002, 0x402C4C20, 0xAE604702, 0x00000002, 0x402C4C20,
+-	0xAE604E02, 0x00000002, 0x402C4C20, 0xAE605202, 0x00000002, 0x402C4C20,
+-	0xAE605B02, 0x00000002, 0x402C4C20, 0xAE606402, 0x00000002, 0x402C4C20,
+-	0xADC07002, 0x00000002, 0x402C4E20, 0xAE603202, 0x00000002, 0x402C4E20,
+-	0xAE603C02, 0x00000002, 0x402C4E20, 0xAE604102, 0x00000002, 0x402C4E20,
+-	0xAE605202, 0x00000002, 0x402C4E20, 0xADC07002,
+-	// Block 189, offset 0x2f40
+-	0x00000002, 0x402C4E20, 0xADC07B02, 0x00000002, 0x402C5020, 0xAE605202,
+-	0x00000002, 0x402C5020, 0xADC07002, 0x00000002, 0x402C5020, 0xADC07B02,
+-	0x00000002, 0x402C5220, 0xAE603202, 0x00000002, 0x402C5220, 0xAE603C02,
+-	0x00000002, 0x402C5220, 0xAE604102, 0x00000002, 0x402C5220, 0xAE605202,
+-	0x00000002, 0x402C5220, 0xACA05602, 0x00000003, 0x402C5220, 0xACA05602,
+-	0xAE603202, 0x00000002, 0x402C5420, 0xAE604102, 0x00000002, 0x402C5420,
+-	0xAE605202, 0x00000002, 0x402C5420, 0xACA05602, 0x00000002, 0x402C5420,
+-	0xADC07002, 0x00000002, 0x402C5420, 0xADC07802, 0x00000002, 0x402C5420,
+-	0xADC07B02, 0x00000002, 0x402C5620, 0xAE603202, 0x00000002, 0x402C5620,
+-	0xAE603502, 0x00000002, 0x402C5620, 0xAE603702, 0x00000002, 0x402C5620,
+-	0xAE603C02, 0x00000003, 0x402C5620, 0xAE603C02,
+-	// Block 190, offset 0x2f80
+-	0xAE603202, 0x00000003, 0x402C5620, 0xAE603C02, 0xAE603502, 0x00000003,
+-	0x402C5620, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C5620, 0xAE603C02,
+-	0xAE606402, 0x00000002, 0x402C5620, 0xAE604102, 0x00000002, 0x402C5620,
+-	0xAE604702, 0x00000002, 0x402C5620, 0xAE604E02, 0x00000002, 0x402C5620,
+-	0xAE605202, 0x00000002, 0x402C5620, 0xACA05602, 0x00000003, 0x402C5620,
+-	0xACA05602, 0xAE603702, 0x00000002, 0x402C5620, 0xACA05902, 0x00000002,
+-	0x402C5620, 0xAE605B02, 0x00000003, 0x402C5620, 0xAE605B02, 0xAE603202,
+-	0x00000003, 0x402C5620, 0xAE605B02, 0xAE603502, 0x00000002, 0x402C5620,
+-	0xAE606402, 0x00000002, 0x402C5620, 0xAE606502, 0x00000002, 0x402C5620,
+-	0xAE606702, 0x00000002, 0x402C5620, 0xADC07002, 0x00000003, 0x402C5620,
+-	0xADC07002, 0xAE603C02, 0x00000002, 0x402C5620,
+-	// Block 191, offset 0x2fc0
+-	0xADC07802, 0x00000002, 0x402C5620, 0xADC07A02, 0x00000002, 0x402C5C20,
+-	0xAE604702, 0x00000002, 0x402C5C20, 0xAE605202, 0x00000002, 0x402C6020,
+-	0xAE605202, 0x00000002, 0x002C629C, 0x002BDE9C, 0x00000002, 0x002C629C,
+-	0x002C0A9D, 0x00000002, 0x002C629D, 0x002DCC9D, 0x00000002, 0x002C629C,
+-	0x002E229C, 0x00000002, 0x002C629C, 0x002E829C, 0x00000002, 0x002C6284,
+-	0x00312A84, 0x00000002, 0x002C628A, 0x00312A84, 0x00000002, 0x002C628A,
+-	0x00312A8A, 0x00000002, 0x002C989C, 0x0030BE9D, 0x00000002, 0x002D0884,
+-	0x002D0884, 0x00000002, 0x002D0884, 0x002D9A84, 0x00000002, 0x002D0884,
+-	0x002E2284, 0x00000002, 0x002D089C, 0x002E829C, 0x00000002, 0x002D229D,
+-	0x002C0A9D, 0x00000002, 0x002D229D, 0x0031009C, 0x00000002, 0x002D689C,
+-	0x002BDE9C, 0x00000002, 0x002D689D, 0x002D229C,
+-	// Block 192, offset 0x3000
+-	0x00000002, 0x002D689D, 0x002F2C9D, 0x00000002, 0x002D689D, 0x0030BE9D,
+-	0x00000002, 0x002D689D, 0x00312A9C, 0x00000002, 0x002D9A84, 0x002D9A9F,
+-	0x00000003, 0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000002, 0x002D9A84,
+-	0x002DCC84, 0x00000002, 0x002D9A9C, 0x002E9E9C, 0x00000002, 0x002D9A84,
+-	0x0030BE9F, 0x00000002, 0x002DFE9C, 0x002BDE9D, 0x00000002, 0x002DFE9D,
+-	0x002C0A9D, 0x00000002, 0x002DFE9C, 0x002D229C, 0x00000002, 0x002DFE9D,
+-	0x002DFE9D, 0x00000002, 0x002DFE9C, 0x002E229C, 0x00000002, 0x002DFE9C,
+-	0x002E829C, 0x00000002, 0x002DFE9D, 0x002E829D, 0x00000002, 0x002DFE9C,
+-	0x00302C9C, 0x00000002, 0x002DFE9C, 0x0030BE9D, 0x00000002, 0x002DFE9C,
+-	0x0030E29D, 0x00000002, 0x002DFE9C, 0x0032A29D, 0x00000002, 0x002E2284,
+-	0x002DCC84, 0x00000002, 0x002E228A, 0x002DCC84,
+-	// Block 193, offset 0x3040
+-	0x00000002, 0x002E228A, 0x002DCC8A, 0x00000002, 0x002E229C, 0x002E829C,
+-	0x00000002, 0x002E229C, 0x002E9E9C, 0x00000002, 0x002E829C, 0x0029D09C,
+-	0x00000002, 0x002E829C, 0x0029D29C, 0x00000002, 0x002E829C, 0x002BDE9D,
+-	0x00000002, 0x002E829C, 0x002C0A9C, 0x00000002, 0x002E829D, 0x002C0A9D,
+-	0x00000002, 0x002E8294, 0x002C3A94, 0x00000002, 0x002E8294, 0x002C6294,
+-	0x00000002, 0x002E829C, 0x002D229C, 0x00000002, 0x002E829C, 0x002E229C,
+-	0x00000002, 0x002E829C, 0x002E829C, 0x00000002, 0x002E829C, 0x002FE69C,
+-	0x00000002, 0x002E829C, 0x0030BE9D, 0x00000002, 0x002E829D, 0x0030BE9D,
+-	0x00000002, 0x002E829D, 0x0030BE9D, 0x00000002, 0x002E829C, 0x0030E29D,
+-	0x00000002, 0x002E829D, 0x0030E29D, 0x00000002, 0x002E829D, 0x0032A29D,
+-	0x00000002, 0x002E9E9C, 0x002BDE9D, 0x00000002,
+-	// Block 194, offset 0x3080
+-	0x002E9E9C, 0x002D089D, 0x00000002, 0x002E9E84, 0x002DCC84, 0x00000002,
+-	0x002E9E8A, 0x002DCC84, 0x00000002, 0x002E9E8A, 0x002DCC8A, 0x00000002,
+-	0x002E9E9C, 0x002E829C, 0x00000002, 0x002E9E8A, 0x002EE284, 0x00000002,
+-	0x002E9E9C, 0x002FE69C, 0x00000002, 0x002E9E9C, 0x0030BE9D, 0x00000002,
+-	0x002E9E9C, 0x0030E29D, 0x00000002, 0x002EE29C, 0x0030BE9D, 0x00000002,
+-	0x002F2C9C, 0x002BDE9D, 0x00000002, 0x002F2C9D, 0x002BDE9C, 0x00000002,
+-	0x002F2C9C, 0x002C3A9C, 0x00000002, 0x002F2C9C, 0x002D089D, 0x00000002,
+-	0x002F2C9D, 0x002D689D, 0x00000002, 0x002F2C9D, 0x002F7A9D, 0x00000002,
+-	0x002F2C9C, 0x002FE69C, 0x00000002, 0x002F2C9C, 0x0030BE9D, 0x00000002,
+-	0x002F2C9C, 0x0030E29D, 0x00000002, 0x002FE69D, 0x002C629D, 0x00000002,
+-	0x002FE694, 0x002E8294, 0x00000002, 0x002FE69C,
+-	// Block 195, offset 0x30c0
+-	0x002F7A9C, 0x00000002, 0x002FE69D, 0x002FE69D, 0x00000002, 0x002FE684,
+-	0x00302C84, 0x00000002, 0x002FE69D, 0x0030BE9C, 0x00000002, 0x00302C94,
+-	0x002E8294, 0x00000002, 0x0030BE84, 0x002D9A9F, 0x00000003, 0x0030BE84,
+-	0x002D9A84, 0x002D9A9F, 0x00000002, 0x0030E29D, 0x002C0A9C, 0x00000002,
+-	0x0030E29D, 0x002C3A9D, 0x00000002, 0x0030E28C, 0x00312A8C, 0x00000002,
+-	0x0031DE84, 0x002E9E84, 0x00000002, 0x0032769C, 0x002BDE9D, 0x00000002,
+-	0x0032769C, 0x002D089D, 0x00000002, 0x0032769C, 0x002D229C, 0x00000002,
+-	0x0032769C, 0x002E229C, 0x00000002, 0x0032769C, 0x002E829C, 0x00000002,
+-	0x0032769C, 0x002FE69C, 0x00000002, 0x0032769C, 0x0030BE9D, 0x00000002,
+-	0x0032769C, 0x0030E29D, 0x00000002, 0x40302620, 0xAE605202, 0x00000002,
+-	0x00302683, 0xAE605202, 0x00000002, 0x40302820,
+-	// Block 196, offset 0x3100
+-	0xAE603202, 0x00000002, 0x00302883, 0xAE603202, 0x00000002, 0x40302820,
+-	0xAE603C02, 0x00000002, 0x00302883, 0xAE603C02, 0x00000002, 0x40302820,
+-	0xAE605202, 0x00000002, 0x00302883, 0xAE605202, 0x00000002, 0x40302820,
+-	0xADC07002, 0x00000002, 0x00302883, 0xADC07002, 0x00000002, 0x40302820,
+-	0xADC07B02, 0x00000002, 0x00302883, 0xADC07B02, 0x00000002, 0x4030BE21,
+-	0xAE603202, 0x00000002, 0x0030BEA3, 0xAE603202, 0x00000002, 0x4030BE21,
+-	0xAE603502, 0x00000002, 0x0030BEA3, 0xAE603502, 0x00000002, 0x4030BE21,
+-	0xAE603C02, 0x00000002, 0x0030BEA3, 0xAE603C02, 0x00000002, 0x4030BE21,
+-	0xAE604302, 0x00000002, 0x4030BE21, 0xAE604702, 0x00000002, 0x0030BEA3,
+-	0xAE604702, 0x00000002, 0x4030BE21, 0xAE605202, 0x00000002, 0x0030BEA3,
+-	0xAE605202, 0x00000002, 0x4030BE21, 0xADC07002,
+-	// Block 197, offset 0x3140
+-	0x00000002, 0x0030BEA3, 0xADC07002, 0x00000002, 0x4030EE20, 0xAE603202,
+-	0x00000002, 0x0030EE83, 0xAE603202, 0x00000002, 0x4030EE20, 0xAE603C02,
+-	0x00000002, 0x0030EE83, 0xAE603C02, 0x00000002, 0x4030EE20, 0xAE604702,
+-	0x00000002, 0x0030EE83, 0xAE604702, 0x00000002, 0x4030EE20, 0xAE605B02,
+-	0x00000002, 0x0030EE83, 0xAE605B02, 0x00000002, 0x4030EE20, 0xAD806802,
+-	0x00000002, 0x0030EE83, 0xAD806802, 0x00000002, 0x4030F020, 0xAE605B02,
+-	0x00000002, 0x0030F083, 0xAE605B02, 0x00000002, 0x4030F220, 0xAE605B02,
+-	0x00000002, 0x0030F283, 0xAE605B02, 0x00000002, 0x4030F420, 0xAE603202,
+-	0x00000002, 0x0030F483, 0xAE603202, 0x00000002, 0x4030F420, 0xAE603502,
+-	0x00000002, 0x0030F483, 0xAE603502, 0x00000002, 0x4030F420, 0xAE604102,
+-	0x00000002, 0x0030F483, 0xAE604102, 0x00000002,
+-	// Block 198, offset 0x3180
+-	0x4030F420, 0xAE605B02, 0x00000002, 0x0030F483, 0xAE605B02, 0x00000002,
+-	0xA000B218, 0xA000BA18, 0x00000002, 0xA000B618, 0xA000BA18, 0x00000002,
+-	0x00393899, 0xA000A219, 0x00000002, 0x0039389A, 0xA000A21A, 0x00000002,
+-	0x00393C97, 0x003A6897, 0x00000002, 0x00393C98, 0x003A6898, 0x00000002,
+-	0x00393C99, 0x003A9099, 0x00000002, 0x00393C9A, 0x003A909A, 0x00000002,
+-	0x00395697, 0x003A6897, 0x00000002, 0x00395698, 0x003A6898, 0x00000002,
+-	0x00395699, 0x003A9099, 0x00000002, 0x0039569A, 0x003A909A, 0x00000002,
+-	0x00395898, 0x003A6898, 0x00000002, 0x00395899, 0x003A9099, 0x00000002,
+-	0x0039589A, 0x003A909A, 0x00000002, 0x00396499, 0x003A9099, 0x00000002,
+-	0x0039649A, 0x003A909A, 0x00000002, 0x00397299, 0x003A9099, 0x00000002,
+-	0x0039729A, 0x003A909A, 0x00000002, 0x00397499,
+-	// Block 199, offset 0x31c0
+-	0x003A9099, 0x00000002, 0x0039749A, 0x003A909A, 0x00000002, 0x0039C697,
+-	0x003A6897, 0x00000002, 0x0039C698, 0x003A6898, 0x00000002, 0x0039C699,
+-	0x003A9099, 0x00000002, 0x0039C69A, 0x003A909A, 0x00000002, 0x0039C897,
+-	0x003A6897, 0x00000002, 0x0039C898, 0x003A6898, 0x00000002, 0x0039C899,
+-	0x003A9099, 0x00000002, 0x0039C89A, 0x003A909A, 0x00000002, 0x0039DC99,
+-	0x003A9099, 0x00000002, 0x0039DC9A, 0x003A909A, 0x00000002, 0x0039DE99,
+-	0x003A9099, 0x00000002, 0x0039DE9A, 0x003A909A, 0x00000002, 0x0039E699,
+-	0x003A9099, 0x00000002, 0x0039E69A, 0x003A909A, 0x00000002, 0x0039EE99,
+-	0x003A9099, 0x00000002, 0x0039EE9A, 0x003A909A, 0x00000002, 0x0039F099,
+-	0x003A9099, 0x00000002, 0x0039F09A, 0x003A909A, 0x00000002, 0x0039FC99,
+-	0x003A9099, 0x00000002, 0x0039FC9A, 0x003A909A,
+-	// Block 200, offset 0x3200
+-	0x00000002, 0x003A1299, 0x003A9099, 0x00000002, 0x003A129A, 0x003A909A,
+-	0x00000002, 0x003A1A99, 0x00393899, 0x00000002, 0x003A1A9A, 0x0039389A,
+-	0x00000002, 0x003A1A97, 0x00396497, 0x00000002, 0x003A1A9A, 0x0039649A,
+-	0x00000002, 0x003A1A97, 0x00397297, 0x00000002, 0x003A1A9A, 0x0039729A,
+-	0x00000002, 0x003A1A97, 0x00397497, 0x00000002, 0x003A1A9A, 0x0039749A,
+-	0x00000002, 0x003A1A97, 0x003A4097, 0x00000002, 0x003A1A98, 0x003A4098,
+-	0x00000002, 0x003A1A99, 0x003A4099, 0x00000002, 0x003A1A9A, 0x003A409A,
+-	0x00000002, 0x003A1A97, 0x003A4E97, 0x00000002, 0x003A1A98, 0x003A4E98,
+-	0x00000002, 0x003A1A99, 0x003A4E99, 0x00000002, 0x003A1A9A, 0x003A4E9A,
+-	0x00000002, 0x003A1A99, 0x003A9099, 0x00000002, 0x003A1A9A, 0x003A909A,
+-	0x00000002, 0x003A4097, 0x003A6897, 0x00000002,
+-	// Block 201, offset 0x3240
+-	0x003A4099, 0x003A9099, 0x00000002, 0x003A409A, 0x003A909A, 0x00000002,
+-	0x003A4E9A, 0x003A909A, 0x00000002, 0x003A5697, 0x003A6897, 0x00000002,
+-	0x003A5698, 0x003A6898, 0x00000002, 0x003A5699, 0x003A9099, 0x00000002,
+-	0x003A569A, 0x003A909A, 0x00000002, 0x003A6897, 0xA000D117, 0x00000002,
+-	0x003A6897, 0x00396497, 0x00000002, 0x003A689A, 0x0039649A, 0x00000002,
+-	0x003A6897, 0x003A4E97, 0x00000002, 0x003A689A, 0x003A4E9A, 0x00000002,
+-	0x003A689A, 0x003A909A, 0x00000002, 0x003A7299, 0xA000BE19, 0x00000002,
+-	0x003A729A, 0xA000BE1A, 0x00000002, 0x403A8822, 0xAE60BE02, 0x00000002,
+-	0x003A8E99, 0xA000D119, 0x00000002, 0x003A8E9A, 0xA000D11A, 0x00000002,
+-	0x003A9084, 0x00391C84, 0x00000002, 0x003A9097, 0x00396497, 0x00000002,
+-	0x003A909A, 0x0039649A, 0x00000002, 0x003A9097,
+-	// Block 202, offset 0x3280
+-	0x00397297, 0x00000002, 0x003A909A, 0x0039729A, 0x00000002, 0x003A9097,
+-	0x00397497, 0x00000002, 0x003A909A, 0x0039749A, 0x00000002, 0x003A9099,
+-	0x0039A499, 0x00000002, 0x003A9099, 0x0039A699, 0x00000002, 0x003A9097,
+-	0x003A4E97, 0x00000002, 0x003A9098, 0x003A4E98, 0x00000002, 0x003A9099,
+-	0x003A4E99, 0x00000002, 0x003A909A, 0x003A4E9A, 0x00000002, 0x003A9099,
+-	0x003A5699, 0x00000002, 0x003A9097, 0x003A6897, 0x00000002, 0x003A9098,
+-	0x003A6898, 0x00000002, 0x003A9099, 0x003A9099, 0x00000002, 0x003A909A,
+-	0x003A909A, 0x00000002, 0x403A9222, 0xAE60BE02, 0x00000002, 0x003AAA99,
+-	0xA000BE19, 0x00000002, 0x003AAA9A, 0xA000BE1A, 0x00000002, 0x402C6221,
+-	0x40021220, 0x00000002, 0x002C62A3, 0x40021220, 0x00000002, 0x402D2221,
+-	0x40021220, 0x00000002, 0x002D22A3, 0x40021220,
+-	// Block 203, offset 0x32c0
+-	0x00000002, 0x402E9E21, 0x40021220, 0x00000002, 0x002E9EA3, 0x40021220,
+-	0x00000002, 0x40302C21, 0x40021220, 0x00000002, 0x00302CA3, 0x40021220,
+-	0x00000002, 0x40312A21, 0x40021220, 0x00000002, 0x00312AA3, 0x40021220,
+-	0x00000003, 0x40312A21, 0x40021220, 0xAE604102, 0x00000003, 0x00312AA3,
+-	0x40021220, 0xAE604102, 0x00000002, 0x40320E20, 0xAE605B02, 0x00000002,
+-	0x00320E83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603202, 0x00000002,
+-	0x00320EA3, 0xAE603202, 0x00000002, 0x40321020, 0xAE604E02, 0x00000002,
+-	0x00321083, 0xAE604E02, 0x00000002, 0x40321020, 0xAE605B02, 0x00000002,
+-	0x00321083, 0xAE605B02, 0x00000002, 0x40321021, 0xAE603202, 0x00000002,
+-	0x003210A3, 0xAE603202, 0x00000002, 0x002BDE83, 0xAE603202, 0x00000002,
+-	0x002BDE83, 0xAE603502, 0x00000002, 0x002BDE83,
+-	// Block 204, offset 0x3300
+-	0xAE603702, 0x00000003, 0x002BDE83, 0xAE603702, 0xAE603202, 0x00000003,
+-	0x002BDE83, 0xAE603702, 0xAE603502, 0x00000003, 0x002BDE83, 0xAE603702,
+-	0xAE604E02, 0x00000003, 0x002BDE83, 0xAE603702, 0xAE606402, 0x00000002,
+-	0x002BDE83, 0xAE603C02, 0x00000003, 0x002BDE83, 0xAE603C02, 0xAE603202,
+-	0x00000003, 0x002BDE83, 0xAE603C02, 0xAE603502, 0x00000003, 0x002BDE83,
+-	0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE83, 0xAE603C02, 0xAE606402,
+-	0x00000002, 0x002BDE83, 0xAE604102, 0x00000002, 0x002BDE83, 0xAE604302,
+-	0x00000003, 0x002BDE83, 0xAE604302, 0xAE603202, 0x00000002, 0x002BDE83,
+-	0xAE604702, 0x00000003, 0x002BDE83, 0xAE604702, 0xAE605B02, 0x00000002,
+-	0x002BDE83, 0xAE604E02, 0x00000002, 0x002BDE83, 0xAE605202, 0x00000003,
+-	0x002BDE83, 0xAE605202, 0xAE605B02, 0x00000002,
+-	// Block 205, offset 0x3340
+-	0x002BDE83, 0xACA05902, 0x00000002, 0x002BDE83, 0xAE605B02, 0x00000002,
+-	0x002BDE83, 0xAE606402, 0x00000002, 0x002BDE83, 0xAE606502, 0x00000002,
+-	0x002BDE83, 0xAE606702, 0x00000002, 0x002BDE83, 0xADC07002, 0x00000003,
+-	0x002BDE83, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE83, 0xADC07002,
+-	0xAE603C02, 0x00000002, 0x002BDE83, 0xADC07602, 0x00000002, 0x402BE020,
+-	0xAE603202, 0x00000002, 0x002BE083, 0xAE603202, 0x00000002, 0x402BE020,
+-	0xAE603502, 0x00000002, 0x002BE083, 0xAE603502, 0x00000002, 0x402BE020,
+-	0xAE603702, 0x00000002, 0x002BE083, 0xAE603702, 0x00000002, 0x402BE020,
+-	0xAE603C02, 0x00000002, 0x002BE083, 0xAE603C02, 0x00000003, 0x402BE020,
+-	0xAE603C02, 0xAE603202, 0x00000003, 0x002BE083, 0xAE603C02, 0xAE603202,
+-	0x00000003, 0x402BE020, 0xAE603C02, 0xAE603502,
+-	// Block 206, offset 0x3380
+-	0x00000003, 0x002BE083, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BE020,
+-	0xAE603C02, 0xAE604E02, 0x00000003, 0x002BE083, 0xAE603C02, 0xAE604E02,
+-	0x00000003, 0x402BE020, 0xAE603C02, 0xAE606402, 0x00000003, 0x002BE083,
+-	0xAE603C02, 0xAE606402, 0x00000002, 0x402BE020, 0xAE604102, 0x00000002,
+-	0x002BE083, 0xAE604102, 0x00000002, 0x402BE020, 0xAE604702, 0x00000002,
+-	0x002BE083, 0xAE604702, 0x00000002, 0x402BE020, 0xAE604E02, 0x00000002,
+-	0x002BE083, 0xAE604E02, 0x00000002, 0x402BE020, 0xAE605202, 0x00000002,
+-	0x002BE083, 0xAE605202, 0x00000002, 0x402BE020, 0xACA05602, 0x00000002,
+-	0x002BE083, 0xACA05602, 0x00000003, 0x402BE020, 0xACA05602, 0xAE603702,
+-	0x00000003, 0x002BE083, 0xACA05602, 0xAE603702, 0x00000002, 0x402BE020,
+-	0xACA05902, 0x00000002, 0x002BE083, 0xACA05902,
+-	// Block 207, offset 0x33c0
+-	0x00000002, 0x402BE020, 0xAE605B02, 0x00000002, 0x002BE083, 0xAE605B02,
+-	0x00000003, 0x402BE020, 0xAE605B02, 0xAE603202, 0x00000003, 0x002BE083,
+-	0xAE605B02, 0xAE603202, 0x00000003, 0x402BE020, 0xAE605B02, 0xAE603502,
+-	0x00000003, 0x002BE083, 0xAE605B02, 0xAE603502, 0x00000002, 0x402BE020,
+-	0xAE606402, 0x00000002, 0x002BE083, 0xAE606402, 0x00000002, 0x402BE020,
+-	0xAE606502, 0x00000002, 0x002BE083, 0xAE606502, 0x00000002, 0x402BE020,
+-	0xAE606702, 0x00000002, 0x002BE083, 0xAE606702, 0x00000002, 0x402BE020,
+-	0xADC07002, 0x00000002, 0x002BE083, 0xADC07002, 0x00000003, 0x402BE020,
+-	0xADC07002, 0xAE603C02, 0x00000003, 0x002BE083, 0xADC07002, 0xAE603C02,
+-	0x00000002, 0x402BE020, 0xADC07802, 0x00000002, 0x002BE083, 0xADC07802,
+-	0x00000002, 0x402BE020, 0xADC07A02, 0x00000002,
+-	// Block 208, offset 0x3400
+-	0x002BE083, 0xADC07A02, 0x00000002, 0x402BE220, 0xAE603202, 0x00000002,
+-	0x002BE283, 0xAE603202, 0x00000002, 0x402BE220, 0xAE603502, 0x00000002,
+-	0x002BE283, 0xAE603502, 0x00000002, 0x402BE220, 0xAE603702, 0x00000002,
+-	0x002BE283, 0xAE603702, 0x00000002, 0x402BE220, 0xAE603C02, 0x00000002,
+-	0x002BE283, 0xAE603C02, 0x00000002, 0x402BE220, 0xAE604102, 0x00000002,
+-	0x002BE283, 0xAE604102, 0x00000002, 0x402BE220, 0xAE604702, 0x00000002,
+-	0x002BE283, 0xAE604702, 0x00000003, 0x402BE220, 0xAE604702, 0xAE603202,
+-	0x00000003, 0x002BE283, 0xAE604702, 0xAE603202, 0x00000002, 0x402BE220,
+-	0xAE604E02, 0x00000002, 0x002BE283, 0xAE604E02, 0x00000002, 0x002BE283,
+-	0xAE605202, 0x00000002, 0x402BE220, 0xACA05902, 0x00000002, 0x002BE283,
+-	0xACA05902, 0x00000002, 0x402BE220, 0xAE605B02,
+-	// Block 209, offset 0x3440
+-	0x00000002, 0x002BE283, 0xAE605B02, 0x00000002, 0x402BE220, 0xAE606402,
+-	0x00000002, 0x002BE283, 0xAE606402, 0x00000002, 0x402BE220, 0xAE606502,
+-	0x00000002, 0x002BE283, 0xAE606502, 0x00000002, 0x402BE220, 0xAE606702,
+-	0x00000002, 0x002BE283, 0xAE606702, 0x00000002, 0x402BE220, 0xADC07002,
+-	0x00000002, 0x002BE283, 0xADC07002, 0x00000002, 0x402BE220, 0xADC07A02,
+-	0x00000002, 0x002BE283, 0xADC07A02, 0x00000002, 0x402BE420, 0xAE603202,
+-	0x00000002, 0x002BE483, 0xAE603202, 0x00000002, 0x402BE420, 0xAE603502,
+-	0x00000002, 0x002BE483, 0xAE603502, 0x00000002, 0x402BE420, 0xAE603702,
+-	0x00000002, 0x002BE483, 0xAE603702, 0x00000002, 0x402BE420, 0xAE603C02,
+-	0x00000002, 0x002BE483, 0xAE603C02, 0x00000003, 0x402BE420, 0xAE603C02,
+-	0xAE603202, 0x00000003, 0x002BE483, 0xAE603C02,
+-	// Block 210, offset 0x3480
+-	0xAE603202, 0x00000003, 0x402BE420, 0xAE603C02, 0xAE603502, 0x00000003,
+-	0x002BE483, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BE420, 0xAE603C02,
+-	0xAE604E02, 0x00000003, 0x002BE483, 0xAE603C02, 0xAE604E02, 0x00000003,
+-	0x402BE420, 0xAE603C02, 0xAE606402, 0x00000003, 0x002BE483, 0xAE603C02,
+-	0xAE606402, 0x00000002, 0x402BE420, 0xAE604102, 0x00000002, 0x002BE483,
+-	0xAE604102, 0x00000002, 0x402BE420, 0xAE604702, 0x00000002, 0x002BE483,
+-	0xAE604702, 0x00000003, 0x402BE420, 0xAE604702, 0xAE605B02, 0x00000003,
+-	0x002BE483, 0xAE604702, 0xAE605B02, 0x00000002, 0x402BE420, 0xAE604D02,
+-	0x00000002, 0x002BE483, 0xAE604D02, 0x00000002, 0x402BE420, 0xAE604E02,
+-	0x00000002, 0x002BE483, 0xAE604E02, 0x00000003, 0x402BE420, 0xAE604E02,
+-	0xAE603202, 0x00000003, 0x002BE483, 0xAE604E02,
+-	// Block 211, offset 0x34c0
+-	0xAE603202, 0x00000003, 0x402BE420, 0xAE604E02, 0xAE604702, 0x00000003,
+-	0x002BE483, 0xAE604E02, 0xAE604702, 0x00000003, 0x402BE420, 0xAE604E02,
+-	0xAE605B02, 0x00000003, 0x002BE483, 0xAE604E02, 0xAE605B02, 0x00000002,
+-	0x402BE420, 0xAE605202, 0x00000002, 0x002BE483, 0xAE605202, 0x00000003,
+-	0x402BE420, 0xAE605202, 0xAE605B02, 0x00000003, 0x002BE483, 0xAE605202,
+-	0xAE605B02, 0x00000002, 0x402BE420, 0xACA05902, 0x00000002, 0x002BE483,
+-	0xACA05902, 0x00000003, 0x402BE420, 0xACA05902, 0xAE605B02, 0x00000003,
+-	0x002BE483, 0xACA05902, 0xAE605B02, 0x00000002, 0x402BE420, 0xAE605B02,
+-	0x00000002, 0x002BE483, 0xAE605B02, 0x00000003, 0x402BE420, 0xAE605B02,
+-	0xAE603202, 0x00000003, 0x002BE483, 0xAE605B02, 0xAE603202, 0x00000003,
+-	0x402BE420, 0xAE605B02, 0xAE603502, 0x00000003,
+-	// Block 212, offset 0x3500
+-	0x002BE483, 0xAE605B02, 0xAE603502, 0x00000002, 0x402BE420, 0xAE606402,
+-	0x00000002, 0x002BE483, 0xAE606402, 0x00000002, 0x402BE420, 0xAE606502,
+-	0x00000002, 0x002BE483, 0xAE606502, 0x00000002, 0x402BE420, 0xAE606702,
+-	0x00000002, 0x002BE483, 0xAE606702, 0x00000002, 0x402BE420, 0xAD806802,
+-	0x00000002, 0x002BE483, 0xAD806802, 0x00000003, 0x402BE420, 0xAD806802,
+-	0xAE603202, 0x00000003, 0x002BE483, 0xAD806802, 0xAE603202, 0x00000003,
+-	0x402BE420, 0xAD806802, 0xAE603502, 0x00000003, 0x002BE483, 0xAD806802,
+-	0xAE603502, 0x00000003, 0x402BE420, 0xAD806802, 0xAE604E02, 0x00000003,
+-	0x002BE483, 0xAD806802, 0xAE604E02, 0x00000003, 0x402BE420, 0xAD806802,
+-	0xAE606402, 0x00000003, 0x002BE483, 0xAD806802, 0xAE606402, 0x00000003,
+-	0x402BE420, 0xAD806802, 0xADC07002, 0x00000003,
+-	// Block 213, offset 0x3540
+-	0x002BE483, 0xAD806802, 0xADC07002, 0x00000002, 0x402BE420, 0xADC07002,
+-	0x00000002, 0x002BE483, 0xADC07002, 0x00000003, 0x402BE420, 0xADC07002,
+-	0xAE603C02, 0x00000003, 0x002BE483, 0xADC07002, 0xAE603C02, 0x00000002,
+-	0x402BE620, 0xAE603202, 0x00000002, 0x002BE683, 0xAE603202, 0x00000002,
+-	0x402BE620, 0xAE603502, 0x00000002, 0x002BE683, 0xAE603502, 0x00000002,
+-	0x402BE620, 0xAE603702, 0x00000002, 0x002BE683, 0xAE603702, 0x00000002,
+-	0x402BE620, 0xAE603C02, 0x00000002, 0x002BE683, 0xAE603C02, 0x00000002,
+-	0x402BE620, 0xAE604102, 0x00000002, 0x002BE683, 0xAE604102, 0x00000002,
+-	0x402BE620, 0xAE604302, 0x00000002, 0x002BE683, 0xAE604302, 0x00000002,
+-	0x402BE620, 0xAE604702, 0x00000002, 0x002BE683, 0xAE604702, 0x00000003,
+-	0x402BE620, 0xAE604702, 0xAE603202, 0x00000003,
+-	// Block 214, offset 0x3580
+-	0x002BE683, 0xAE604702, 0xAE603202, 0x00000003, 0x402BE620, 0xAE604702,
+-	0xAE603502, 0x00000003, 0x002BE683, 0xAE604702, 0xAE603502, 0x00000003,
+-	0x402BE620, 0xAE604702, 0xAE604102, 0x00000003, 0x002BE683, 0xAE604702,
+-	0xAE604102, 0x00000003, 0x402BE620, 0xAE604702, 0xAE605B02, 0x00000003,
+-	0x002BE683, 0xAE604702, 0xAE605B02, 0x00000002, 0x402BE620, 0xAE604D02,
+-	0x00000002, 0x002BE683, 0xAE604D02, 0x00000002, 0x402BE620, 0xAE604E02,
+-	0x00000002, 0x002BE683, 0xAE604E02, 0x00000003, 0x402BE620, 0xAE604E02,
+-	0xAE603202, 0x00000003, 0x002BE683, 0xAE604E02, 0xAE603202, 0x00000002,
+-	0x402BE620, 0xACA05902, 0x00000002, 0x002BE683, 0xACA05902, 0x00000002,
+-	0x402BE620, 0xAE605B02, 0x00000002, 0x002BE683, 0xAE605B02, 0x00000003,
+-	0x402BE620, 0xAE605B02, 0xAE604702, 0x00000003,
+-	// Block 215, offset 0x35c0
+-	0x002BE683, 0xAE605B02, 0xAE604702, 0x00000002, 0x402BE620, 0xAE606402,
+-	0x00000002, 0x002BE683, 0xAE606402, 0x00000002, 0x402BE620, 0xAE606502,
+-	0x00000002, 0x002BE683, 0xAE606502, 0x00000002, 0x402BE620, 0xAE606702,
+-	0x00000002, 0x002BE683, 0xAE606702, 0x00000002, 0x402BE620, 0xAD806802,
+-	0x00000002, 0x002BE683, 0xAD806802, 0x00000003, 0x402BE620, 0xAD806802,
+-	0xAE603202, 0x00000003, 0x002BE683, 0xAD806802, 0xAE603202, 0x00000003,
+-	0x402BE620, 0xAD806802, 0xAE603502, 0x00000003, 0x002BE683, 0xAD806802,
+-	0xAE603502, 0x00000003, 0x402BE620, 0xAD806802, 0xAE604E02, 0x00000003,
+-	0x002BE683, 0xAD806802, 0xAE604E02, 0x00000003, 0x402BE620, 0xAD806802,
+-	0xAE606402, 0x00000003, 0x002BE683, 0xAD806802, 0xAE606402, 0x00000003,
+-	0x402BE620, 0xAD806802, 0xADC07002, 0x00000003,
+-	// Block 216, offset 0x3600
+-	0x002BE683, 0xAD806802, 0xADC07002, 0x00000002, 0x402BE620, 0xADC07002,
+-	0x00000002, 0x002BE683, 0xADC07002, 0x00000002, 0x402BE620, 0xADC07502,
+-	0x00000002, 0x002BE683, 0xADC07502, 0x00000002, 0x402BE620, 0xADC07802,
+-	0x00000002, 0x002BE683, 0xADC07802, 0x00000002, 0x402BE620, 0xADC07A02,
+-	0x00000002, 0x002BE683, 0xADC07A02, 0x00000002, 0x402BE820, 0xAE603C02,
+-	0x00000002, 0x002BE883, 0xAE603C02, 0x00000002, 0x402BE820, 0xAE604102,
+-	0x00000002, 0x002BE883, 0xAE604102, 0x00000002, 0x402BE820, 0xAE604702,
+-	0x00000002, 0x002BE883, 0xAE604702, 0x00000002, 0x402BE820, 0xAE605202,
+-	0x00000002, 0x002BE883, 0xAE605202, 0x00000002, 0x402BE820, 0xACA05602,
+-	0x00000002, 0x002BE883, 0xACA05602, 0x00000002, 0x402BE820, 0xADC07002,
+-	0x00000002, 0x002BE883, 0xADC07002, 0x00000002,
+-	// Block 217, offset 0x3640
+-	0x402BE820, 0xADC07902, 0x00000002, 0x002BE883, 0xADC07902, 0x00000002,
+-	0x402BE820, 0xADC07B02, 0x00000002, 0x402BEA20, 0xAE603202, 0x00000002,
+-	0x002BEA83, 0xAE603202, 0x00000002, 0x402BEA20, 0xAE604102, 0x00000002,
+-	0x002BEA83, 0xAE604102, 0x00000002, 0x402BEA20, 0xACA05602, 0x00000002,
+-	0x002BEA83, 0xACA05602, 0x00000002, 0x402BEA20, 0xADC07002, 0x00000002,
+-	0x002BEA83, 0xADC07002, 0x00000002, 0x402BEA20, 0xADC07B02, 0x00000002,
+-	0x002BEA83, 0xADC07B02, 0x00000002, 0x402BEC20, 0xAE603202, 0x00000002,
+-	0x002BEC83, 0xAE603202, 0x00000002, 0x402BEC20, 0xAE604102, 0x00000002,
+-	0x002BEC83, 0xAE604102, 0x00000002, 0x402BEC20, 0xACA05602, 0x00000002,
+-	0x002BEC83, 0xACA05602, 0x00000002, 0x402BEC20, 0xADC07002, 0x00000002,
+-	0x002BEC83, 0xADC07002, 0x00000003, 0x402BEC20,
+-	// Block 218, offset 0x3680
+-	0xADC07002, 0xAE605B02, 0x00000003, 0x002BEC83, 0xADC07002, 0xAE605B02,
+-	0x00000002, 0x402BEC20, 0xADC07802, 0x00000002, 0x002BEC83, 0xADC07802,
+-	0x00000002, 0x402BEC20, 0xADC07B02, 0x00000002, 0x002BEC83, 0xADC07B02,
+-	0x00000002, 0x402BEE20, 0xAE603202, 0x00000002, 0x002BEE83, 0xAE603202,
+-	0x00000002, 0x402BEE20, 0xAE605202, 0x00000002, 0x002BEE83, 0xAE605202,
+-	0x00000002, 0x402BEE20, 0xADC07002, 0x00000002, 0x002BEE83, 0xADC07002,
+-	0x00000002, 0x402BF020, 0xAE603202, 0x00000002, 0x002BF083, 0xAE603202,
+-	0x00000002, 0x402BF020, 0xAE603502, 0x00000002, 0x002BF083, 0xAE603502,
+-	0x00000002, 0x402BF020, 0xAE604102, 0x00000002, 0x002BF083, 0xAE604102,
+-	0x00000002, 0x402BF020, 0xAE604E02, 0x00000002, 0x002BF083, 0xAE604E02,
+-	0x00000002, 0x402BF020, 0xAE605202, 0x00000002,
+-	// Block 219, offset 0x36c0
+-	0x002BF083, 0xAE605202, 0x00000002, 0x402BF020, 0xACA05602, 0x00000002,
+-	0x002BF083, 0xACA05602, 0x00000002, 0x402BF020, 0xADC07002, 0x00000002,
+-	0x002BF083, 0xADC07002, 0x00000002, 0x402BF020, 0xADC07802, 0x00000002,
+-	0x002BF083, 0xADC07802, 0x00000002, 0x402BF020, 0xADC07B02, 0x00000002,
+-	0x002BF083, 0xADC07B02, 0x00000002, 0x002BF283, 0xAE603202, 0x00000002,
+-	0x002BF283, 0xAE605202, 0x00000002, 0x402BF420, 0xAE603202, 0x00000002,
+-	0x002BF483, 0xAE603202, 0x00000002, 0x402BF420, 0xAE603502, 0x00000002,
+-	0x002BF483, 0xAE603502, 0x00000002, 0x402BF420, 0xAE603C02, 0x00000002,
+-	0x002BF483, 0xAE603C02, 0x00000002, 0x402BF420, 0xAE604302, 0x00000002,
+-	0x402BF420, 0xAE604702, 0x00000002, 0x002BF483, 0xAE604702, 0x00000002,
+-	0x002BF483, 0xAE605202, 0x00000002, 0x002BF483,
+-	// Block 220, offset 0x3700
+-	0xADC07002, 0x00000002, 0x402C3E20, 0xACA05602, 0x00000002, 0x002C3E83,
+-	0xACA05602, 0x00000002, 0x002C3C83, 0x402C3C20, 0x00000002, 0x002C3C85,
+-	0x402C3C20, 0x00000002, 0x002C3C87, 0x002C3C86, 0x00000002, 0x002C6483,
+-	0x402C6420, 0x00000002, 0x002C6485, 0x402C6420, 0x00000002, 0x002C6487,
+-	0x002C6486, 0x00000002, 0x002C6683, 0x402C6620, 0x00000002, 0x002C6685,
+-	0x402C6620, 0x00000002, 0x002C6687, 0x002C6686, 0x00000002, 0x002D2483,
+-	0x402D2420, 0x00000002, 0x002D2485, 0x402D2420, 0x00000002, 0x002D2487,
+-	0x002D2486, 0x00000002, 0x002E2483, 0x402E2420, 0x00000002, 0x002E2485,
+-	0x402E2420, 0x00000002, 0x002E2487, 0x002E2486, 0x00000002, 0x002EA083,
+-	0x402EA020, 0x00000002, 0x002EA085, 0x402EA020, 0x00000002, 0x002EA087,
+-	0x002EA086, 0x00000002, 0x002FE883, 0x402FE820,
+-	// Block 221, offset 0x3740
+-	0x00000002, 0x002FE885, 0x402FE820, 0x00000002, 0x002FE887, 0x002FE886,
+-	0x00000002, 0x00302E83, 0x40302E20, 0x00000002, 0x00302E85, 0x40302E20,
+-	0x00000002, 0x00302E87, 0x00302E86, 0x00000002, 0x00312C83, 0x40312C20,
+-	0x00000002, 0x00312C85, 0x40312C20, 0x00000002, 0x00312C87, 0x00312C86,
+-	0x00000002, 0x402EE420, 0xAE603C02, 0x00000002, 0x002EE483, 0xAE603C02,
+-	0x00000002, 0x402EE420, 0xAD806802, 0x00000002, 0x002EE483, 0xAD806802,
+-	0x00000002, 0x40306E20, 0xAD806802, 0x00000002, 0x00306E83, 0xAD806802,
+-	0x00000002, 0x402C0820, 0xAE603702, 0x00000002, 0x002C0883, 0xAE603702,
+-	0x00000002, 0x402C0820, 0xAE603C02, 0x00000002, 0x002C0883, 0xAE603C02,
+-	0x00000002, 0x402D0620, 0xAE603C02, 0x00000002, 0x002D0683, 0xAE603C02,
+-	0x00000002, 0x402D0620, 0xAE605B02, 0x00000002,
+-	// Block 222, offset 0x3780
+-	0x002D0683, 0xAE605B02, 0x00000002, 0x402DCA20, 0xAE604702, 0x00000002,
+-	0x002DCA83, 0xAE604702, 0x00000002, 0x402F2A20, 0xAE603C02, 0x00000002,
+-	0x002F2A83, 0xAE603C02, 0x00000002, 0x402F2A20, 0xAE604E02, 0x00000002,
+-	0x002F2A83, 0xAE604E02, 0x00000002, 0x402F2A20, 0xAE605B02, 0x00000002,
+-	0x002F2A83, 0xAE605B02, 0x00000002, 0x402F2A20, 0xAD806802, 0x00000002,
+-	0x002F2A83, 0xAD806802, 0x00000002, 0x4030BC20, 0xAE604702, 0x00000002,
+-	0x0030BC83, 0xAE604702, 0x00000002, 0x4030BC20, 0xAE604E02, 0x00000002,
+-	0x0030BC83, 0xAE604E02, 0x00000002, 0x4030BC20, 0xAD806802, 0x00000002,
+-	0x0030BC83, 0xAD806802, 0x00000002, 0x40320E20, 0xAE604E02, 0x00000002,
+-	0x00320E83, 0xAE604E02, 0x00000003, 0x0004B084, 0x029C1284, 0x0004B29F,
+-	0x00000003, 0x0004B084, 0x029D1884, 0x0004B29F,
+-	// Block 223, offset 0x37c0
+-	0x00000003, 0x0004B084, 0x02A5BA84, 0x0004B29F, 0x00000003, 0x0004B084,
+-	0x02B71284, 0x0004B29F, 0x00000003, 0x0004B084, 0x02C4A684, 0x0004B29F,
+-	0x00000003, 0x0004B084, 0x02CAAE84, 0x0004B29F, 0x00000003, 0x0004B084,
+-	0x02CE5884, 0x0004B29F, 0x00000003, 0x0004B084, 0x02E17284, 0x0004B29F,
+-	0x00000003, 0x0004B084, 0x02EDAE84, 0x0004B29F, 0x00000005, 0x4004E620,
+-	0x402BDE20, 0x402E8220, 0x402F2C20, 0x40026220, 0x00000004, 0x4004E620,
+-	0x402D2220, 0x40302C20, 0x40026220, 0x00000004, 0x4004E620, 0x402E2220,
+-	0x40302C20, 0x40026220, 0x00000006, 0x4004E620, 0x402F5620, 0x40306C20,
+-	0x402EE220, 0x40302C20, 0x40026220, 0x00000002, 0x0029CC84, 0x02E1729F,
+-	0x00000003, 0x0029CE84, 0x0029CC84, 0x02CBCA9F, 0x00000003, 0x0029CE84,
+-	0x0029CC84, 0x02CE109F, 0x00000003, 0x0029CE84,
+-	// Block 224, offset 0x3800
+-	0x0029CC84, 0x02E1729F, 0x00000003, 0x0029CE84, 0x0029CE84, 0x02CBCA9F,
+-	0x00000003, 0x0029CE84, 0x0029CE84, 0x02CE109F, 0x00000003, 0x0029CE84,
+-	0x0029CE84, 0x02E1729F, 0x00000003, 0x0029CE84, 0x0029D084, 0x02CBCA9F,
+-	0x00000003, 0x0029CE84, 0x0029D084, 0x02CE109F, 0x00000003, 0x0029CE84,
+-	0x0029D084, 0x02E1729F, 0x00000003, 0x0029CE84, 0x0029D284, 0x02CBCA9F,
+-	0x00000003, 0x0029CE84, 0x0029D284, 0x02E1729F, 0x00000003, 0x0029CE84,
+-	0x0029D484, 0x02CBCA9F, 0x00000003, 0x0029CE84, 0x0029D484, 0x02E1729F,
+-	0x00000003, 0x0029CE84, 0x0029D684, 0x02CBCA9F, 0x00000003, 0x0029CE84,
+-	0x0029D684, 0x02E1729F, 0x00000003, 0x0029CE84, 0x0029D884, 0x02CBCA9F,
+-	0x00000003, 0x0029CE84, 0x0029D884, 0x02E1729F, 0x00000003, 0x0029CE84,
+-	0x0029DC84, 0x02CBCA9F, 0x00000003, 0x0029CE84,
+-	// Block 225, offset 0x3840
+-	0x0029DC84, 0x02E1729F, 0x00000003, 0x0029CE84, 0x0029DE84, 0x02CBCA9F,
+-	0x00000003, 0x0029CE84, 0x0029DE84, 0x02E1729F, 0x00000002, 0x0029CE84,
+-	0x02CBCA9F, 0x00000002, 0x0029CE84, 0x02CE109F, 0x00000002, 0x0029CE84,
+-	0x02E1729F, 0x00000003, 0x0029D084, 0x0029CC84, 0x02CBCA9F, 0x00000003,
+-	0x0029D084, 0x0029CC84, 0x02E1729F, 0x00000003, 0x0029D084, 0x0029CE84,
+-	0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029CE84, 0x02E1729F, 0x00000003,
+-	0x0029D084, 0x0029D084, 0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029D084,
+-	0x02E1729F, 0x00000003, 0x0029D084, 0x0029D284, 0x02CBCA9F, 0x00000003,
+-	0x0029D084, 0x0029D284, 0x02E1729F, 0x00000003, 0x0029D084, 0x0029D484,
+-	0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029D484, 0x02E1729F, 0x00000003,
+-	0x0029D084, 0x0029D684, 0x02CBCA9F, 0x00000003,
+-	// Block 226, offset 0x3880
+-	0x0029D084, 0x0029D884, 0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029DC84,
+-	0x02CBCA9F, 0x00000003, 0x0029D084, 0x0029DE84, 0x02CBCA9F, 0x00000002,
+-	0x0029D084, 0x02CBCA9F, 0x00000002, 0x0029D084, 0x02CE109F, 0x00000002,
+-	0x0029D084, 0x02E1729F, 0x00000003, 0x0029D284, 0x0029CC84, 0x02CBCA9F,
+-	0x00000003, 0x0029D284, 0x0029CE84, 0x02CBCA9F, 0x00000002, 0x0029D284,
+-	0x02CBCA9F, 0x00000002, 0x0029D284, 0x02CE109F, 0x00000002, 0x0029D284,
+-	0x02E1729F, 0x00000002, 0x0029D484, 0x02CBCA9F, 0x00000002, 0x0029D484,
+-	0x02CE109F, 0x00000002, 0x0029D484, 0x02E1729F, 0x00000002, 0x0029D684,
+-	0x02CBCA9F, 0x00000002, 0x0029D684, 0x02CE109F, 0x00000002, 0x0029D684,
+-	0x02E1729F, 0x00000002, 0x0029D884, 0x02CBCA9F, 0x00000002, 0x0029D884,
+-	0x02CE109F, 0x00000002, 0x0029D884, 0x02E1729F,
+-	// Block 227, offset 0x38c0
+-	0x00000002, 0x0029DC84, 0x02CBCA9F, 0x00000002, 0x0029DC84, 0x02CE109F,
+-	0x00000002, 0x0029DC84, 0x02E1729F, 0x00000002, 0x0029DE84, 0x02CBCA9F,
+-	0x00000002, 0x0029DE84, 0x02CE109F, 0x00000002, 0x0029DE84, 0x02E1729F,
+-	0x00000002, 0x0065768E, 0x0065768F, 0x00000002, 0x0065768E, 0x00657691,
+-	0x00000002, 0x00657690, 0x0065768F, 0x00000002, 0x00657690, 0x00657691,
+-	0x00000002, 0x0065768E, 0x0065828F, 0x00000002, 0x0065768E, 0x00658291,
+-	0x00000003, 0x0065768E, 0x00658291, 0xA0812802, 0x00000002, 0x0065768E,
+-	0x00658C91, 0x00000003, 0x0065768E, 0x00658C91, 0xA0812802, 0x00000002,
+-	0x0065768E, 0x00659691, 0x00000003, 0x0065768E, 0x00659691, 0xA0812802,
+-	0x00000002, 0x0065768E, 0x0065A091, 0x00000002, 0x0065768E, 0x0065AA8F,
+-	0x00000002, 0x0065768E, 0x0065AA91, 0x00000003,
+-	// Block 228, offset 0x3900
+-	0x0065768E, 0x0065AA91, 0xA0812802, 0x00000003, 0x0065768E, 0x0065AA91,
+-	0xA0812902, 0x00000002, 0x0065768E, 0x0065B491, 0x00000002, 0x0065768E,
+-	0x0065BE8F, 0x00000002, 0x0065768E, 0x0065BE91, 0x00000002, 0x0065768E,
+-	0x0065C68F, 0x00000002, 0x0065768E, 0x0065C691, 0x00000002, 0x0065768E,
+-	0x0065D08F, 0x00000002, 0x0065768E, 0x0065D091, 0x00000003, 0x0065768E,
+-	0x0065D091, 0xA0812802, 0x00000002, 0x0065788E, 0x0065788F, 0x00000002,
+-	0x0065788E, 0x00657891, 0x00000002, 0x00657890, 0x0065788F, 0x00000002,
+-	0x00657890, 0x00657891, 0x00000002, 0x0065788E, 0x00658491, 0x00000003,
+-	0x0065788E, 0x00658491, 0xA0812802, 0x00000002, 0x0065788E, 0x00658E8F,
+-	0x00000002, 0x0065788E, 0x00658E91, 0x00000003, 0x0065788E, 0x00658E91,
+-	0xA0812802, 0x00000002, 0x0065788E, 0x00659891,
+-	// Block 229, offset 0x3940
+-	0x00000003, 0x0065788E, 0x00659891, 0xA0812802, 0x00000002, 0x0065788E,
+-	0x0065A291, 0x00000002, 0x0065788E, 0x0065AC8F, 0x00000002, 0x0065788E,
+-	0x0065AC91, 0x00000003, 0x0065788E, 0x0065AC91, 0xA0812802, 0x00000003,
+-	0x0065788E, 0x0065AC91, 0xA0812902, 0x00000002, 0x0065788E, 0x0065B691,
+-	0x00000002, 0x0065788E, 0x0065C88F, 0x00000002, 0x0065788E, 0x0065C891,
+-	0x00000002, 0x0065788E, 0x0065D291, 0x00000003, 0x0065788E, 0x0065D291,
+-	0xA0812802, 0x00000002, 0x00657A8E, 0x00657A8F, 0x00000002, 0x00657A8E,
+-	0x00657A91, 0x00000002, 0x00657A90, 0x00657A8F, 0x00000002, 0x00657A90,
+-	0x00657A91, 0x00000003, 0x00657A8E, 0x00657A91, 0xA0812802, 0x00000003,
+-	0x00657A90, 0x00657A8F, 0xA0812802, 0x00000003, 0x00657A90, 0x00657A91,
+-	0xA0812802, 0x00000004, 0x00657A90, 0x00657A91,
+-	// Block 230, offset 0x3980
+-	0xA0812802, 0xA0812802, 0x00000002, 0x00657A8E, 0x0065868F, 0x00000002,
+-	0x00657A8E, 0x00658691, 0x00000003, 0x00657A8E, 0x00658691, 0xA0812802,
+-	0x00000002, 0x00657A8E, 0x0065908F, 0x00000002, 0x00657A8E, 0x00659091,
+-	0x00000003, 0x00657A8E, 0x00659091, 0xA0812802, 0x00000002, 0x00657A8E,
+-	0x00659A8F, 0x00000002, 0x00657A8E, 0x00659A91, 0x00000003, 0x00657A8E,
+-	0x00659A91, 0xA0812802, 0x00000002, 0x00657A8E, 0x0065A48F, 0x00000002,
+-	0x00657A8E, 0x0065A491, 0x00000002, 0x00657A8E, 0x0065AE8F, 0x00000002,
+-	0x00657A8E, 0x0065AE91, 0x00000003, 0x00657A8E, 0x0065AE91, 0xA0812802,
+-	0x00000003, 0x00657A8E, 0x0065AE91, 0xA0812902, 0x00000002, 0x00657A8E,
+-	0x0065B88F, 0x00000002, 0x00657A8E, 0x0065B891, 0x00000002, 0x00657A8E,
+-	0x0065C08F, 0x00000002, 0x00657A8E, 0x0065C091,
+-	// Block 231, offset 0x39c0
+-	0x00000002, 0x00657A8E, 0x0065CA8F, 0x00000002, 0x00657A8E, 0x0065CA91,
+-	0x00000002, 0x00657E8E, 0x00657E8F, 0x00000002, 0x00657E8E, 0x00657E91,
+-	0x00000002, 0x00657E90, 0x00657E8F, 0x00000002, 0x00657E90, 0x00657E91,
+-	0x00000002, 0x00657E8E, 0x0065888F, 0x00000002, 0x00657E8E, 0x00658891,
+-	0x00000003, 0x00657E8E, 0x00658891, 0xA0812802, 0x00000002, 0x00657E8E,
+-	0x00659291, 0x00000003, 0x00657E8E, 0x00659291, 0xA0812802, 0x00000002,
+-	0x00657E8E, 0x00659C91, 0x00000003, 0x00657E8E, 0x00659C91, 0xA0812802,
+-	0x00000002, 0x00657E8E, 0x0065A691, 0x00000002, 0x00657E8E, 0x0065B08F,
+-	0x00000002, 0x00657E8E, 0x0065B091, 0x00000003, 0x00657E8E, 0x0065B091,
+-	0xA0812802, 0x00000003, 0x00657E8E, 0x0065B091, 0xA0812902, 0x00000002,
+-	0x00657E8E, 0x0065BA91, 0x00000002, 0x00657E8E,
+-	// Block 232, offset 0x3a00
+-	0x0065CC8F, 0x00000002, 0x00657E8E, 0x0065CC91, 0x00000002, 0x00657E8E,
+-	0x0065D491, 0x00000003, 0x00657E8E, 0x0065D491, 0xA0812802, 0x00000002,
+-	0x0065808E, 0x0065808F, 0x00000002, 0x0065808E, 0x00658091, 0x00000002,
+-	0x00658090, 0x0065808F, 0x00000002, 0x00658090, 0x00658091, 0x00000002,
+-	0x0065808E, 0x00658A91, 0x00000003, 0x0065808E, 0x00658A91, 0xA0812802,
+-	0x00000002, 0x0065808E, 0x00659491, 0x00000003, 0x0065808E, 0x00659491,
+-	0xA0812802, 0x00000002, 0x0065808E, 0x00659E8F, 0x00000002, 0x0065808E,
+-	0x00659E91, 0x00000003, 0x0065808E, 0x00659E91, 0xA0812802, 0x00000002,
+-	0x0065808E, 0x0065A891, 0x00000002, 0x0065808E, 0x0065B28F, 0x00000002,
+-	0x0065808E, 0x0065B291, 0x00000003, 0x0065808E, 0x0065B291, 0xA0812802,
+-	0x00000003, 0x0065808E, 0x0065B291, 0xA0812902,
+-	// Block 233, offset 0x3a40
+-	0x00000002, 0x0065808E, 0x0065BC91, 0x00000002, 0x0065808E, 0x0065C48F,
+-	0x00000002, 0x0065808E, 0x0065C491, 0x00000002, 0x0065808E, 0x0065CE8F,
+-	0x00000002, 0x0065808E, 0x0065CE91, 0x00000002, 0x0065808E, 0x0065D691,
+-	0x00000003, 0x0065808E, 0x0065D691, 0xA0812802, 0x00000002, 0x00658290,
+-	0x0065828F, 0x00000002, 0x00658290, 0x00658291, 0x00000003, 0x0065848F,
+-	0x00658291, 0xA0812802, 0x00000002, 0x00658490, 0x00658491, 0x00000003,
+-	0x00658490, 0x00658491, 0xA0812802, 0x00000004, 0x00658490, 0x00658491,
+-	0xA0812802, 0xA0812802, 0x00000002, 0x00658690, 0x0065868F, 0x00000002,
+-	0x00658690, 0x00658691, 0x00000003, 0x00658690, 0x0065868F, 0xA0812802,
+-	0x00000003, 0x00658690, 0x00658691, 0xA0812802, 0x00000004, 0x00658690,
+-	0x00658691, 0xA0812802, 0xA0812802, 0x00000002,
+-	// Block 234, offset 0x3a80
+-	0x00658890, 0x0065888F, 0x00000002, 0x00658890, 0x00658891, 0x00000003,
+-	0x00658A8F, 0x00658891, 0xA0812802, 0x00000002, 0x00658A90, 0x00658A91,
+-	0x00000003, 0x00658A90, 0x00658A91, 0xA0812802, 0x00000004, 0x00658A90,
+-	0x00658A91, 0xA0812802, 0xA0812802, 0x00000002, 0x40658A21, 0x00659E91,
+-	0x00000002, 0x00658C90, 0x00658C91, 0x00000003, 0x00658C90, 0x00658C91,
+-	0xA0812802, 0x00000004, 0x00658C90, 0x00658C91, 0xA0812802, 0xA0812802,
+-	0x00000002, 0x00658E90, 0x00658E8F, 0x00000002, 0x00658E90, 0x00658E91,
+-	0x00000003, 0x00658E90, 0x00658E8F, 0xA0812802, 0x00000003, 0x00658E90,
+-	0x00658E91, 0xA0812802, 0x00000004, 0x00658E90, 0x00658E91, 0xA0812802,
+-	0xA0812802, 0x00000002, 0x00659090, 0x0065908F, 0x00000002, 0x00659090,
+-	0x00659091, 0x00000003, 0x00659090, 0x0065908F,
+-	// Block 235, offset 0x3ac0
+-	0xA0812802, 0x00000003, 0x00659090, 0x00659091, 0xA0812802, 0x00000004,
+-	0x00659090, 0x00659091, 0xA0812802, 0xA0812802, 0x00000002, 0x00659290,
+-	0x00659291, 0x00000003, 0x00659290, 0x00659291, 0xA0812802, 0x00000004,
+-	0x00659290, 0x00659291, 0xA0812802, 0xA0812802, 0x00000002, 0x00659490,
+-	0x00659491, 0x00000003, 0x00659490, 0x00659491, 0xA0812802, 0x00000004,
+-	0x00659490, 0x00659491, 0xA0812802, 0xA0812802, 0x00000002, 0x00659690,
+-	0x00659691, 0x00000003, 0x00659690, 0x00659691, 0xA0812802, 0x00000004,
+-	0x00659690, 0x00659691, 0xA0812802, 0xA0812802, 0x00000002, 0x00659890,
+-	0x00659891, 0x00000003, 0x00659890, 0x00659891, 0xA0812802, 0x00000004,
+-	0x00659890, 0x00659891, 0xA0812802, 0xA0812802, 0x00000002, 0x00659A90,
+-	0x00659A8F, 0x00000002, 0x00659A90, 0x00659A91,
+-	// Block 236, offset 0x3b00
+-	0x00000003, 0x00659A90, 0x00659A8F, 0xA0812802, 0x00000003, 0x00659A90,
+-	0x00659A91, 0xA0812802, 0x00000004, 0x00659A90, 0x00659A91, 0xA0812802,
+-	0xA0812802, 0x00000002, 0x00659C90, 0x00659C91, 0x00000003, 0x00659C90,
+-	0x00659C91, 0xA0812802, 0x00000004, 0x00659C90, 0x00659C91, 0xA0812802,
+-	0xA0812802, 0x00000002, 0x00659E90, 0x00659E8F, 0x00000002, 0x00659E90,
+-	0x00659E91, 0x00000003, 0x00659E90, 0x00659E8F, 0xA0812802, 0x00000003,
+-	0x00659E90, 0x00659E91, 0xA0812802, 0x00000004, 0x00659E90, 0x00659E91,
+-	0xA0812802, 0xA0812802, 0x00000002, 0x0065A090, 0x0065A091, 0x00000002,
+-	0x0065A290, 0x0065A291, 0x00000002, 0x0065A490, 0x0065A48F, 0x00000002,
+-	0x0065A490, 0x0065A491, 0x00000002, 0x0065A690, 0x0065A691, 0x00000002,
+-	0x0065A890, 0x0065A891, 0x00000002, 0x0065AA90,
+-	// Block 237, offset 0x3b40
+-	0x0065AA8F, 0x00000002, 0x0065AA90, 0x0065AA91, 0x00000003, 0x0065AA90,
+-	0x0065AA8F, 0xA0812802, 0x00000003, 0x0065AA90, 0x0065AA91, 0xA0812802,
+-	0x00000004, 0x0065AA90, 0x0065AA91, 0xA0812802, 0xA0812802, 0x00000003,
+-	0x0065AA90, 0x0065AA91, 0xA0812902, 0x00000004, 0x0065AA90, 0x0065AA91,
+-	0xA0812902, 0xA0812802, 0x00000002, 0x0065AC90, 0x0065AC8F, 0x00000002,
+-	0x0065AC90, 0x0065AC91, 0x00000003, 0x0065AC90, 0x0065AC8F, 0xA0812802,
+-	0x00000003, 0x0065AC90, 0x0065AC91, 0xA0812802, 0x00000004, 0x0065AC90,
+-	0x0065AC91, 0xA0812802, 0xA0812802, 0x00000003, 0x0065AC90, 0x0065AC91,
+-	0xA0812902, 0x00000004, 0x0065AC90, 0x0065AC91, 0xA0812902, 0xA0812802,
+-	0x00000002, 0x0065AE90, 0x0065AE8F, 0x00000002, 0x0065AE90, 0x0065AE91,
+-	0x00000003, 0x0065AE90, 0x0065AE8F, 0xA0812802,
+-	// Block 238, offset 0x3b80
+-	0x00000003, 0x0065AE90, 0x0065AE91, 0xA0812802, 0x00000004, 0x0065AE90,
+-	0x0065AE91, 0xA0812802, 0xA0812802, 0x00000003, 0x0065AE90, 0x0065AE91,
+-	0xA0812902, 0x00000004, 0x0065AE90, 0x0065AE91, 0xA0812902, 0xA0812802,
+-	0x00000002, 0x0065B090, 0x0065B08F, 0x00000002, 0x0065B090, 0x0065B091,
+-	0x00000003, 0x0065B090, 0x0065B08F, 0xA0812802, 0x00000003, 0x0065B090,
+-	0x0065B091, 0xA0812802, 0x00000004, 0x0065B090, 0x0065B091, 0xA0812802,
+-	0xA0812802, 0x00000003, 0x0065B090, 0x0065B091, 0xA0812902, 0x00000004,
+-	0x0065B090, 0x0065B091, 0xA0812902, 0xA0812802, 0x00000002, 0x0065B290,
+-	0x0065B28F, 0x00000002, 0x0065B290, 0x0065B291, 0x00000003, 0x0065B290,
+-	0x0065B28F, 0xA0812802, 0x00000003, 0x0065B290, 0x0065B291, 0xA0812802,
+-	0x00000004, 0x0065B290, 0x0065B291, 0xA0812802,
+-	// Block 239, offset 0x3bc0
+-	0xA0812802, 0x00000003, 0x0065B290, 0x0065B291, 0xA0812902, 0x00000004,
+-	0x0065B290, 0x0065B291, 0xA0812902, 0xA0812802, 0x00000002, 0x0065B490,
+-	0x0065B491, 0x00000002, 0x0065B690, 0x0065B691, 0x00000002, 0x0065B890,
+-	0x0065B88F, 0x00000002, 0x0065B890, 0x0065B891, 0x00000002, 0x0065BA90,
+-	0x0065BA91, 0x00000002, 0x0065BC90, 0x0065BC91, 0x00000002, 0x0065BE90,
+-	0x0065BE8F, 0x00000002, 0x0065BE90, 0x0065BE91, 0x00000002, 0x0065C090,
+-	0x0065C08F, 0x00000002, 0x0065C090, 0x0065C091, 0x00000002, 0x0065C490,
+-	0x0065C48F, 0x00000002, 0x0065C490, 0x0065C491, 0x00000002, 0x4065C421,
+-	0x0065C891, 0x00000002, 0x0065C690, 0x0065C68F, 0x00000002, 0x0065C690,
+-	0x0065C691, 0x00000002, 0x0065C890, 0x0065C88F, 0x00000002, 0x0065C890,
+-	0x0065C891, 0x00000002, 0x0065CA90, 0x0065CA8F,
+-	// Block 240, offset 0x3c00
+-	0x00000002, 0x0065CA90, 0x0065CA91, 0x00000002, 0x0065CC90, 0x0065CC8F,
+-	0x00000002, 0x0065CC90, 0x0065CC91, 0x00000002, 0x0065CE90, 0x0065CE8F,
+-	0x00000002, 0x0065CE90, 0x0065CE91, 0x00000002, 0x0065D090, 0x0065D08F,
+-	0x00000002, 0x0065D090, 0x0065D091, 0x00000003, 0x0065D090, 0x0065D08F,
+-	0xA0812802, 0x00000003, 0x0065D090, 0x0065D091, 0xA0812802, 0x00000004,
+-	0x0065D090, 0x0065D091, 0xA0812802, 0xA0812802, 0x00000002, 0x0065D290,
+-	0x0065D291, 0x00000003, 0x0065D290, 0x0065D291, 0xA0812802, 0x00000004,
+-	0x0065D290, 0x0065D291, 0xA0812802, 0xA0812802, 0x00000002, 0x0065D490,
+-	0x0065D491, 0x00000003, 0x0065D490, 0x0065D491, 0xA0812802, 0x00000004,
+-	0x0065D490, 0x0065D491, 0xA0812802, 0xA0812802, 0x00000002, 0x0065D690,
+-	0x0065D691, 0x00000003, 0x0065D690, 0x0065D691,
+-	// Block 241, offset 0x3c40
+-	0xA0812802, 0x00000004, 0x0065D690, 0x0065D691, 0xA0812802, 0xA0812802,
+-	0x00000002, 0x0065D890, 0x0065D891, 0x00000002, 0x02B24E9C, 0x02D6C69C,
+-	0x00000002, 0x02BCE69C, 0x02C4209C, 0x00000002, 0x02CC1C9C, 0x02D9769C,
+-	0x00000002, 0x02CC5A9C, 0x02A9189C, 0x00000003, 0x00032683, 0x404FDA20,
+-	0x40032620, 0x00000003, 0x404FD821, 0x82092817, 0x404FA420, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FA620, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FA820, 0x00000003, 0x404FD821, 0x82092817, 0x404FAA20, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FAC20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FAE20, 0x00000003, 0x404FD821, 0x82092817, 0x404FB020, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FB220, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FB420, 0x00000003, 0x404FD821, 0x82092817,
+-	// Block 242, offset 0x3c80
+-	0x404FB620, 0x00000003, 0x404FD821, 0x82092817, 0x404FB820, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FBA20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FBC20, 0x00000003, 0x404FD821, 0x82092817, 0x404FBE20, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FC020, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FC220, 0x00000003, 0x404FD821, 0x82092817, 0x404FC420, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FC620, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FC820, 0x00000003, 0x404FD821, 0x82092817, 0x404FCA20, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FCC20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FCE20, 0x00000003, 0x404FD821, 0x82092817, 0x404FD020, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FD220, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FD420, 0x00000003, 0x404FD821, 0x82092817,
+-	// Block 243, offset 0x3cc0
+-	0x404FD620, 0x00000003, 0x404FD821, 0x82092817, 0x404FD820, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FDA20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FDA20, 0x00000003, 0x404FD821, 0x82092817, 0x404FDC20, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FDC20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FDC20, 0x00000003, 0x404FD821, 0x82092817, 0x404FDE20, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FDE20, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FE020, 0x00000003, 0x404FD821, 0x82092817, 0x404FE220, 0x00000003,
+-	0x404FD821, 0x82092817, 0x404FE420, 0x00000003, 0x404FD821, 0x82092817,
+-	0x404FE620, 0x00000003, 0x404FD821, 0x82092817, 0x404FE820, 0x00000002,
+-	0x404FE820, 0x40500E20, 0x00000002, 0x404FE821, 0x40501020, 0x00000002,
+-	0x404FE821, 0x40501220, 0x00000002, 0x404FE821,
+-	// Block 244, offset 0x3d00
+-	0x40501820, 0x00000003, 0x004FE8A3, 0x40501820, 0x404FA420, 0x00000002,
+-	0x404FE821, 0x40501A20, 0x00000003, 0x004FE8A3, 0x40501A20, 0x404FDC20,
+-	0x00000002, 0x404FE821, 0x40502620, 0x00000002, 0x404FE821, 0x40502820,
+-	0x00000002, 0x404FE821, 0x40502A20, 0x00000002, 0x004FE8A3, 0x40502A20,
+-	0x00000002, 0x404FE821, 0x40502C20, 0x00000002, 0x4062AC21, 0x4063A820,
+-	0x00000002, 0x4062AC22, 0x4063A820, 0x00000002, 0x4062AC23, 0x4063A820,
+-	0x00000002, 0x4062AC24, 0x4063A820, 0x00000002, 0x4062AC25, 0x4063A820,
+-	0x00000002, 0x4062AC26, 0x4063A820, 0x00000002, 0x4062AC27, 0x4063A820,
+-	0x00000002, 0x4062AC28, 0x4063A820, 0x00000002, 0x4062AC29, 0x4063A820,
+-	0x00000002, 0x4062AC2A, 0x4063A820, 0x00000002, 0x4062AC2B, 0x4063A820,
+-	0x00000002, 0x4062AC2C, 0x4063A820, 0x00000002,
+-	// Block 245, offset 0x3d40
+-	0x4062AC2D, 0x4063A820, 0x00000002, 0x4062AC2E, 0x4063A820, 0x00000002,
+-	0x4062AC2F, 0x4063A820, 0x00000002, 0x4062AC30, 0x4063A820, 0x00000002,
+-	0x4062AC31, 0x4063A820, 0x00000002, 0x4062AC32, 0x4063A820, 0x00000002,
+-	0x4062AC33, 0x4063A820, 0x00000002, 0x4062AC34, 0x4063A820, 0x00000002,
+-	0x4062AC35, 0x4063A820, 0x00000002, 0x4062AC36, 0x4063A820, 0x00000002,
+-	0x4062AC37, 0x4063A820, 0x00000002, 0x4062AC38, 0x4063A820, 0x00000002,
+-	0x4062AC39, 0x4063A820, 0x00000002, 0x4062AC3A, 0x4063A820, 0x00000002,
+-	0x4062AC3B, 0x4063A820, 0x00000002, 0x4062AC3C, 0x4063A820, 0x00000002,
+-	0x4062AC3D, 0x4063A820, 0x00000002, 0x4062AC3E, 0x4063A820, 0x00000002,
+-	0x4062AC3F, 0x4063A820, 0x00000002, 0x4062AC40, 0x4063A820, 0x00000002,
+-	0x4062AC41, 0x4063A820, 0x00000002, 0x4062AC42,
+-	// Block 246, offset 0x3d80
+-	0x4063A820, 0x00000002, 0x4062AC43, 0x4063A820, 0x00000002, 0x4062AC44,
+-	0x4063A820, 0x00000002, 0x4062AC45, 0x4063A820, 0x00000002, 0x4062AC46,
+-	0x4063A820, 0x00000002, 0x4062AC47, 0x4063A820, 0x00000002, 0x4062AC48,
+-	0x4063A820, 0x00000002, 0x4062AC49, 0x4063A820, 0x00000002, 0x4062AC4A,
+-	0x4063A820, 0x00000002, 0x4062AC4B, 0x4063A820, 0x00000002, 0x4062AC4C,
+-	0x4063A820, 0x00000003, 0x4062AC21, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC22, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC23, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062AC24, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC25, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC26, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062AC27, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC28, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 247, offset 0x3dc0
+-	0x4062AC29, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC2A, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062AC2B, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC2C, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC2D, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062AC2E, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC2F, 0x4063A820, 0x40646420, 0x00000003, 0x4062AC30, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062AC31, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062AC21, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC22, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC23, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC24, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC26, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC27, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 248, offset 0x3e00
+-	0x4062AC28, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC2A, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC2B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2C, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC2D, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC2E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC2F, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC30, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC31, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC32, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC33, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC34, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC35, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC36, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC37, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 249, offset 0x3e40
+-	0x4062AC38, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC39, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC3A, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC3B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3C, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC3D, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC3E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC3F, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC40, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC41, 0x4063A820, 0x40646A20, 0x00000003, 0x4062AC42, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062AC43, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062AC21, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC22, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062AC23, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062AC24, 0x4063A820, 0x40647220, 0x00000003,
+-	// Block 250, offset 0x3e80
+-	0x4062AC25, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC26, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062AC27, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062AC28, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC29, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062AC2A, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062AC2B, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC2C, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062AC2D, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062AC2E, 0x4063A820, 0x40647220, 0x00000003, 0x4062AC2F, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062AC30, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062AC21, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC22, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC23, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC24, 0x4063A820, 0x40648220, 0x00000003,
+-	// Block 251, offset 0x3ec0
+-	0x4062AC25, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC26, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC27, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC28, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC29, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC2A, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC2B, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC2C, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC2D, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC2E, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC2F, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC30, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC31, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC32, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC33, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC34, 0x4063A820, 0x40648220, 0x00000003,
+-	// Block 252, offset 0x3f00
+-	0x4062AC35, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC36, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC37, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC38, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC39, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC3A, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC3B, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC3C, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC3D, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC3E, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC3F, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC40, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC41, 0x4063A820, 0x40648220, 0x00000003, 0x4062AC42, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062AC43, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062AC21, 0x4063A820, 0x40648420, 0x00000003,
+-	// Block 253, offset 0x3f40
+-	0x4062AC22, 0x4063A820, 0x40648420, 0x00000003, 0x4062AC23, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062AC24, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062AC25, 0x4063A820, 0x40648420, 0x00000003, 0x4062AC26, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062AC27, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062AC21, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC23, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC24, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC26, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC27, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC28, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC29, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC2A, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 254, offset 0x3f80
+-	0x4062AC2B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2C, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC2D, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC2E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC2F, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC30, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC31, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC32, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC33, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC34, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC35, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC36, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC37, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC38, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC39, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC3A, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 255, offset 0x3fc0
+-	0x4062AC3B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3C, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC3D, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC3E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC3F, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC40, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC41, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC42, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC43, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC44, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC45, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC46, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062AC47, 0x4063A820, 0x40648C20, 0x00000003, 0x4062AC48, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062AC49, 0x4063A820, 0x40648C20, 0x00000002,
+-	0x4062AC21, 0x4063AA20, 0x00000002, 0x4062AC22,
+-	// Block 256, offset 0x4000
+-	0x4063AA20, 0x00000002, 0x4062AC23, 0x4063AA20, 0x00000002, 0x4062AC24,
+-	0x4063AA20, 0x00000002, 0x4062AC25, 0x4063AA20, 0x00000002, 0x4062AC26,
+-	0x4063AA20, 0x00000002, 0x4062AC27, 0x4063AA20, 0x00000002, 0x4062AC28,
+-	0x4063AA20, 0x00000002, 0x4062AC29, 0x4063AA20, 0x00000002, 0x4062AC2A,
+-	0x4063AA20, 0x00000002, 0x4062AC2B, 0x4063AA20, 0x00000002, 0x4062AC2C,
+-	0x4063AA20, 0x00000002, 0x4062AC2D, 0x4063AA20, 0x00000002, 0x4062AC2E,
+-	0x4063AA20, 0x00000002, 0x4062AC2F, 0x4063AA20, 0x00000002, 0x4062AC30,
+-	0x4063AA20, 0x00000002, 0x4062AC31, 0x4063AA20, 0x00000002, 0x4062AC32,
+-	0x4063AA20, 0x00000002, 0x4062AC33, 0x4063AA20, 0x00000002, 0x4062AC34,
+-	0x4063AA20, 0x00000002, 0x4062AC35, 0x4063AA20, 0x00000002, 0x4062AC36,
+-	0x4063AA20, 0x00000002, 0x4062AC37, 0x4063AA20,
+-	// Block 257, offset 0x4040
+-	0x00000002, 0x4062AC38, 0x4063AA20, 0x00000002, 0x4062AC39, 0x4063AA20,
+-	0x00000002, 0x4062AC3A, 0x4063AA20, 0x00000003, 0x4062AC21, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062AC22, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062AC21, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062AC23, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062AC24, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062AC26, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062AC21, 0x4063AC20, 0x40646420, 0x00000002, 0x4062AC21, 0x4063B020,
+-	0x00000002, 0x4062AC22, 0x4063B020, 0x00000002, 0x4062AC23, 0x4063B020,
+-	0x00000002, 0x4062AC24, 0x4063B020, 0x00000002, 0x4062AC25, 0x4063B020,
+-	0x00000002, 0x4062AC26, 0x4063B020, 0x00000002,
+-	// Block 258, offset 0x4080
+-	0x4062AC27, 0x4063B020, 0x00000002, 0x4062AC28, 0x4063B020, 0x00000002,
+-	0x4062AC29, 0x4063B020, 0x00000002, 0x4062AC2A, 0x4063B020, 0x00000002,
+-	0x4062AC2B, 0x4063B020, 0x00000002, 0x4062AC2C, 0x4063B020, 0x00000002,
+-	0x4062AC2D, 0x4063B020, 0x00000002, 0x4062AC2E, 0x4063B020, 0x00000002,
+-	0x4062AC2F, 0x4063B020, 0x00000002, 0x4062AC30, 0x4063B020, 0x00000002,
+-	0x4062AC31, 0x4063B020, 0x00000002, 0x4062AC32, 0x4063B020, 0x00000002,
+-	0x4062AC33, 0x4063B020, 0x00000002, 0x4062AC34, 0x4063B020, 0x00000002,
+-	0x4062AC35, 0x4063B020, 0x00000002, 0x4062AC36, 0x4063B020, 0x00000002,
+-	0x4062AC37, 0x4063B020, 0x00000002, 0x4062AC38, 0x4063B020, 0x00000002,
+-	0x4062AC39, 0x4063B020, 0x00000002, 0x4062AC3A, 0x4063B020, 0x00000002,
+-	0x4062AC3B, 0x4063B020, 0x00000002, 0x4062AC3C,
+-	// Block 259, offset 0x40c0
+-	0x4063B020, 0x00000002, 0x4062AC3D, 0x4063B020, 0x00000002, 0x4062AC3E,
+-	0x4063B020, 0x00000003, 0x4062AC21, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC22, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC23, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062AC24, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC25, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC26, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062AC27, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC28, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062AC2A, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC2B, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC2C, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062AC2D, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC2E, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 260, offset 0x4100
+-	0x4062AC2F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC30, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062AC31, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062AC32, 0x4063B020, 0x40646A20, 0x00000003, 0x4062AC21, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062AC22, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062AC23, 0x4063B020, 0x40647220, 0x00000003, 0x4062AC24, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062AC25, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062AC26, 0x4063B020, 0x40647220, 0x00000003, 0x4062AC27, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062AC21, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062AC22, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC23, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062AC24, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062AC25, 0x4063B020, 0x40648220, 0x00000003,
+-	// Block 261, offset 0x4140
+-	0x4062AC26, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC27, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062AC28, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062AC29, 0x4063B020, 0x40648220, 0x00000003, 0x4062AC21, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062AC22, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062AC23, 0x4063B020, 0x40648420, 0x00000003, 0x4062AC24, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062AC25, 0x4063B020, 0x40648420, 0x00000002,
+-	0x4062AC21, 0x4063B220, 0x00000002, 0x4062AC22, 0x4063B220, 0x00000002,
+-	0x4062AC23, 0x4063B220, 0x00000003, 0x4062AC21, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062AC22, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC23,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062AC24, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062AC25, 0x4063B420, 0x40646420,
+-	// Block 262, offset 0x4180
+-	0x00000003, 0x4062AC26, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC27,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062AC28, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062AC29, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC2A,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062AC2C, 0x4063B420, 0x40646420, 0x00000003, 0x4062AC2D,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062AC21, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC22, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC23,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC25, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC26,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC27, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC28, 0x4063B420, 0x40646A20,
+-	// Block 263, offset 0x41c0
+-	0x00000003, 0x4062AC29, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2A,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC2C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2D,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC2E, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC2F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC30,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC31, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC32, 0x4063B420, 0x40646A20, 0x00000003, 0x4062AC33,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062AC34, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062AC21, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC22,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062AC23, 0x4063B420, 0x40647220,
+-	0x00000003, 0x4062AC24, 0x4063B420, 0x40647220,
+-	// Block 264, offset 0x4200
+-	0x00000003, 0x4062AC25, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC26,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062AC27, 0x4063B420, 0x40647220,
+-	0x00000003, 0x4062AC28, 0x4063B420, 0x40647220, 0x00000003, 0x4062AC29,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062AC21, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062AC22, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC23,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062AC24, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062AC25, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC26,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062AC27, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062AC28, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC29,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062AC2A, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062AC2B, 0x4063B420, 0x40648220,
+-	// Block 265, offset 0x4240
+-	0x00000003, 0x4062AC2C, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC2D,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062AC2E, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062AC2F, 0x4063B420, 0x40648220, 0x00000003, 0x4062AC21,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC23, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC24,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC26, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC27,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC28, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC29, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2A,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2B, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC2C, 0x4063B420, 0x40648C20,
+-	// Block 266, offset 0x4280
+-	0x00000003, 0x4062AC2D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2E,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC2F, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC30, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC31,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC32, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC33, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC34,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC35, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC36, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC37,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC38, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC39, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3A,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3B, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC3C, 0x4063B420, 0x40648C20,
+-	// Block 267, offset 0x42c0
+-	0x00000003, 0x4062AC3D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3E,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC3F, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC40, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC41,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC42, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC43, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC44,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC45, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC46, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC47,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC48, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC49, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4A,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4B, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC4C, 0x4063B420, 0x40648C20,
+-	// Block 268, offset 0x4300
+-	0x00000003, 0x4062AC4D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4E,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC4F, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC50, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC51,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC52, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC53, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC54,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC55, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC56, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC57,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC58, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC59, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5A,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5B, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC5C, 0x4063B420, 0x40648C20,
+-	// Block 269, offset 0x4340
+-	0x00000003, 0x4062AC5D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5E,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062AC5F, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062AC60, 0x4063B420, 0x40648C20, 0x00000003, 0x4062AC61,
+-	0x4063B420, 0x40648C20, 0x00000002, 0x4062AC21, 0x4063B620, 0x00000002,
+-	0x4062AC22, 0x4063B620, 0x00000002, 0x4062AC23, 0x4063B620, 0x00000002,
+-	0x4062AC24, 0x4063B620, 0x00000002, 0x4062AC25, 0x4063B620, 0x00000002,
+-	0x4062AC26, 0x4063B620, 0x00000002, 0x4062AC27, 0x4063B620, 0x00000002,
+-	0x4062AC28, 0x4063B620, 0x00000002, 0x4062AC29, 0x4063B620, 0x00000002,
+-	0x4062AC2A, 0x4063B620, 0x00000002, 0x4062AC2B, 0x4063B620, 0x00000002,
+-	0x4062AC2C, 0x4063B620, 0x00000002, 0x4062AC2D, 0x4063B620, 0x00000002,
+-	0x4062AC2E, 0x4063B620, 0x00000002, 0x4062AC2F,
+-	// Block 270, offset 0x4380
+-	0x4063B620, 0x00000002, 0x4062AC30, 0x4063B620, 0x00000002, 0x4062AC31,
+-	0x4063B620, 0x00000002, 0x4062AC32, 0x4063B620, 0x00000002, 0x4062AC33,
+-	0x4063B620, 0x00000002, 0x4062AC34, 0x4063B620, 0x00000002, 0x4062AC35,
+-	0x4063B620, 0x00000002, 0x4062AC36, 0x4063B620, 0x00000002, 0x4062AC37,
+-	0x4063B620, 0x00000002, 0x4062AC38, 0x4063B620, 0x00000002, 0x4062AC39,
+-	0x4063B620, 0x00000002, 0x4062AC3A, 0x4063B620, 0x00000002, 0x4062AC3B,
+-	0x4063B620, 0x00000002, 0x4062AC3C, 0x4063B620, 0x00000002, 0x4062AC3D,
+-	0x4063B620, 0x00000002, 0x4062AC3E, 0x4063B620, 0x00000002, 0x4062AC3F,
+-	0x4063B620, 0x00000002, 0x4062AC40, 0x4063B620, 0x00000002, 0x4062AC41,
+-	0x4063B620, 0x00000002, 0x4062AC42, 0x4063B620, 0x00000002, 0x4062AC43,
+-	0x4063B620, 0x00000002, 0x4062AC44, 0x4063B620,
+-	// Block 271, offset 0x43c0
+-	0x00000002, 0x4062AC21, 0x4063B820, 0x00000002, 0x4062AC22, 0x4063B820,
+-	0x00000002, 0x4062AC23, 0x4063B820, 0x00000002, 0x4062AC24, 0x4063B820,
+-	0x00000002, 0x4062AC25, 0x4063B820, 0x00000002, 0x4062AC26, 0x4063B820,
+-	0x00000002, 0x4062AC27, 0x4063B820, 0x00000002, 0x4062AC28, 0x4063B820,
+-	0x00000002, 0x4062AC29, 0x4063B820, 0x00000002, 0x4062AC2A, 0x4063B820,
+-	0x00000002, 0x4062AC2B, 0x4063B820, 0x00000002, 0x4062AC2C, 0x4063B820,
+-	0x00000002, 0x4062AC2D, 0x4063B820, 0x00000002, 0x4062AC2E, 0x4063B820,
+-	0x00000002, 0x4062AC2F, 0x4063B820, 0x00000002, 0x4062AC30, 0x4063B820,
+-	0x00000002, 0x4062AC31, 0x4063B820, 0x00000002, 0x4062AC32, 0x4063B820,
+-	0x00000002, 0x4062AC33, 0x4063B820, 0x00000002, 0x4062AC34, 0x4063B820,
+-	0x00000002, 0x4062AC35, 0x4063B820, 0x00000002,
+-	// Block 272, offset 0x4400
+-	0x4062AC36, 0x4063B820, 0x00000002, 0x4062AC37, 0x4063B820, 0x00000002,
+-	0x4062AC38, 0x4063B820, 0x00000002, 0x4062AC39, 0x4063B820, 0x00000002,
+-	0x4062AC3A, 0x4063B820, 0x00000002, 0x4062AC3B, 0x4063B820, 0x00000002,
+-	0x4062AC3C, 0x4063B820, 0x00000002, 0x4062AC3D, 0x4063B820, 0x00000002,
+-	0x4062AC3E, 0x4063B820, 0x00000002, 0x4062AC3F, 0x4063B820, 0x00000002,
+-	0x4062AC40, 0x4063B820, 0x00000002, 0x4062AC41, 0x4063B820, 0x00000002,
+-	0x4062AC42, 0x4063B820, 0x00000002, 0x4062AC43, 0x4063B820, 0x00000002,
+-	0x4062AC44, 0x4063B820, 0x00000002, 0x4062AC45, 0x4063B820, 0x00000002,
+-	0x4062AC46, 0x4063B820, 0x00000002, 0x4062AC47, 0x4063B820, 0x00000002,
+-	0x4062AC48, 0x4063B820, 0x00000002, 0x4062AC49, 0x4063B820, 0x00000002,
+-	0x4062AC4A, 0x4063B820, 0x00000002, 0x4062AC4B,
+-	// Block 273, offset 0x4440
+-	0x4063B820, 0x00000002, 0x4062AC4C, 0x4063B820, 0x00000002, 0x4062AC4D,
+-	0x4063B820, 0x00000002, 0x4062AC4E, 0x4063B820, 0x00000002, 0x4062AC4F,
+-	0x4063B820, 0x00000002, 0x4062AC50, 0x4063B820, 0x00000002, 0x4062AC51,
+-	0x4063B820, 0x00000002, 0x4062AC52, 0x4063B820, 0x00000002, 0x4062AC53,
+-	0x4063B820, 0x00000002, 0x4062AC54, 0x4063B820, 0x00000002, 0x4062AC55,
+-	0x4063B820, 0x00000002, 0x4062AC56, 0x4063B820, 0x00000002, 0x4062AC57,
+-	0x4063B820, 0x00000002, 0x4062AC58, 0x4063B820, 0x00000002, 0x4062AC59,
+-	0x4063B820, 0x00000002, 0x4062AC5A, 0x4063B820, 0x00000002, 0x4062AC5B,
+-	0x4063B820, 0x00000002, 0x4062AC5C, 0x4063B820, 0x00000002, 0x4062AC5D,
+-	0x4063B820, 0x00000002, 0x4062AC5E, 0x4063B820, 0x00000002, 0x4062AC5F,
+-	0x4063B820, 0x00000002, 0x4062AC60, 0x4063B820,
+-	// Block 274, offset 0x4480
+-	0x00000002, 0x4062AC61, 0x4063B820, 0x00000002, 0x4062AC62, 0x4063B820,
+-	0x00000002, 0x4062AC63, 0x4063B820, 0x00000003, 0x4062AC21, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062AC22, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062AC23, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC24, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062AC25, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062AC26, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC27, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062AC28, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062AC29, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC2A, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062AC2B, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062AC2C, 0x4063B820, 0x40646420, 0x00000003, 0x4062AC21, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC22, 0x4063B820,
+-	// Block 275, offset 0x44c0
+-	0x40646A20, 0x00000003, 0x4062AC23, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC24, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC26, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC27, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC28, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC29, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC2A, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2B, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC2C, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC2D, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC2E, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC2F, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC30, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC31, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC32, 0x4063B820,
+-	// Block 276, offset 0x4500
+-	0x40646A20, 0x00000003, 0x4062AC33, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC34, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC35, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC36, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062AC37, 0x4063B820, 0x40646A20, 0x00000003, 0x4062AC38, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062AC21, 0x4063B820, 0x40647220, 0x00000003,
+-	0x4062AC22, 0x4063B820, 0x40647220, 0x00000003, 0x4062AC23, 0x4063B820,
+-	0x40647220, 0x00000003, 0x4062AC24, 0x4063B820, 0x40647220, 0x00000003,
+-	0x4062AC25, 0x4063B820, 0x40647220, 0x00000003, 0x4062AC26, 0x4063B820,
+-	0x40647220, 0x00000003, 0x4062AC21, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC22, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC23, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC24, 0x4063B820,
+-	// Block 277, offset 0x4540
+-	0x40648C20, 0x00000003, 0x4062AC25, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC26, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC28, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC29, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC2B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC2C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC2D, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC2E, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC2F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC30, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC31, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC32, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC33, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC34, 0x4063B820,
+-	// Block 278, offset 0x4580
+-	0x40648C20, 0x00000003, 0x4062AC35, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC36, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC37, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC38, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC39, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC3A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062AC3B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062AC3C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062AC21, 0x4063B820,
+-	0x40648E20, 0x00000002, 0x4062AC21, 0x4063BA20, 0x00000002, 0x4062AC22,
+-	0x4063BA20, 0x00000002, 0x4062AC23, 0x4063BA20, 0x00000002, 0x4062AC24,
+-	0x4063BA20, 0x00000002, 0x4062AC25, 0x4063BA20, 0x00000002, 0x4062AC26,
+-	0x4063BA20, 0x00000002, 0x4062AC27, 0x4063BA20, 0x00000002, 0x4062AC28,
+-	0x4063BA20, 0x00000002, 0x4062AC29, 0x4063BA20,
+-	// Block 279, offset 0x45c0
+-	0x00000002, 0x4062AC2A, 0x4063BA20, 0x00000002, 0x4062AC2B, 0x4063BA20,
+-	0x00000002, 0x4062AC2C, 0x4063BA20, 0x00000002, 0x4062AC2D, 0x4063BA20,
+-	0x00000002, 0x4062AC2E, 0x4063BA20, 0x00000002, 0x4062AC2F, 0x4063BA20,
+-	0x00000002, 0x4062AC30, 0x4063BA20, 0x00000002, 0x4062AC31, 0x4063BA20,
+-	0x00000002, 0x4062AC32, 0x4063BA20, 0x00000002, 0x4062AC33, 0x4063BA20,
+-	0x00000002, 0x4062AC34, 0x4063BA20, 0x00000002, 0x4062AC35, 0x4063BA20,
+-	0x00000002, 0x4062AC36, 0x4063BA20, 0x00000002, 0x4062AC37, 0x4063BA20,
+-	0x00000002, 0x4062AC38, 0x4063BA20, 0x00000002, 0x4062AC39, 0x4063BA20,
+-	0x00000003, 0x4062AC21, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC22,
+-	0x4063BA20, 0x40646420, 0x00000003, 0x4062AC23, 0x4063BA20, 0x40646420,
+-	0x00000003, 0x4062AC24, 0x4063BA20, 0x40646420,
+-	// Block 280, offset 0x4600
+-	0x00000003, 0x4062AC25, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC26,
+-	0x4063BA20, 0x40646420, 0x00000003, 0x4062AC27, 0x4063BA20, 0x40646420,
+-	0x00000003, 0x4062AC28, 0x4063BA20, 0x40646420, 0x00000003, 0x4062AC29,
+-	0x4063BA20, 0x40646420, 0x00000003, 0x4062AC21, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC22, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC23,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC25, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC26,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC27, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC28, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC29,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC2A, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC2B, 0x4063BA20, 0x40646A20,
+-	// Block 281, offset 0x4640
+-	0x00000003, 0x4062AC2C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC2D,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC2E, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC2F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC30,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC31, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC32, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC33,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC34, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC35, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC36,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC37, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC38, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC39,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC3A, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC3B, 0x4063BA20, 0x40646A20,
+-	// Block 282, offset 0x4680
+-	0x00000003, 0x4062AC3C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC3D,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC3E, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062AC3F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062AC21,
+-	0x4063BA20, 0x40647220, 0x00000003, 0x4062AC22, 0x4063BA20, 0x40647220,
+-	0x00000003, 0x4062AC23, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC24,
+-	0x4063BA20, 0x40647220, 0x00000003, 0x4062AC25, 0x4063BA20, 0x40647220,
+-	0x00000003, 0x4062AC26, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC27,
+-	0x4063BA20, 0x40647220, 0x00000003, 0x4062AC28, 0x4063BA20, 0x40647220,
+-	0x00000003, 0x4062AC29, 0x4063BA20, 0x40647220, 0x00000003, 0x4062AC2A,
+-	0x4063BA20, 0x40647220, 0x00000003, 0x4062AC21, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC22, 0x4063BA20, 0x40648C20,
+-	// Block 283, offset 0x46c0
+-	0x00000003, 0x4062AC23, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC24,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC25, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC26, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC27,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC28, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC29, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2A,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2B, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC2C, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2D,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC2E, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC2F, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC30,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC31, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC32, 0x4063BA20, 0x40648C20,
+-	// Block 284, offset 0x4700
+-	0x00000003, 0x4062AC33, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC34,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC35, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062AC36, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC37,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062AC38, 0x4063BA20, 0x40648C20,
+-	0x00000002, 0x4062AC21, 0x4063BC20, 0x00000002, 0x4062AC22, 0x4063BC20,
+-	0x00000002, 0x4062AC23, 0x4063BC20, 0x00000002, 0x4062AC24, 0x4063BC20,
+-	0x00000002, 0x4062AC25, 0x4063BC20, 0x00000002, 0x4062AC26, 0x4063BC20,
+-	0x00000002, 0x4062AC27, 0x4063BC20, 0x00000002, 0x4062AC21, 0x4063BE20,
+-	0x00000002, 0x4062AC22, 0x4063BE20, 0x00000002, 0x4062AC23, 0x4063BE20,
+-	0x00000002, 0x4062AC24, 0x4063BE20, 0x00000002, 0x4062AC25, 0x4063BE20,
+-	0x00000002, 0x4062AC26, 0x4063BE20, 0x00000002,
+-	// Block 285, offset 0x4740
+-	0x4062AC27, 0x4063BE20, 0x00000002, 0x4062AC28, 0x4063BE20, 0x00000002,
+-	0x4062AC29, 0x4063BE20, 0x00000002, 0x4062AC2A, 0x4063BE20, 0x00000002,
+-	0x4062AC2B, 0x4063BE20, 0x00000002, 0x4062AC2C, 0x4063BE20, 0x00000002,
+-	0x4062AC2D, 0x4063BE20, 0x00000002, 0x4062AC2E, 0x4063BE20, 0x00000002,
+-	0x4062AC2F, 0x4063BE20, 0x00000002, 0x4062AC30, 0x4063BE20, 0x00000003,
+-	0x4062AC21, 0x4063BE20, 0x40646420, 0x00000003, 0x4062AC21, 0x4063BE20,
+-	0x40648C20, 0x00000003, 0x4062AC22, 0x4063BE20, 0x40648C20, 0x00000003,
+-	0x4062AC23, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063BE20,
+-	0x40648C20, 0x00000003, 0x4062AC25, 0x4063BE20, 0x40648C20, 0x00000003,
+-	0x4062AC26, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062AC27, 0x4063BE20,
+-	0x40648C20, 0x00000003, 0x4062AC28, 0x4063BE20,
+-	// Block 286, offset 0x4780
+-	0x40648C20, 0x00000002, 0x4062AC21, 0x4063C020, 0x00000002, 0x4062AC22,
+-	0x4063C020, 0x00000002, 0x4062AC23, 0x4063C020, 0x00000002, 0x4062AC24,
+-	0x4063C020, 0x00000002, 0x4062AC25, 0x4063C020, 0x00000002, 0x4062AC26,
+-	0x4063C020, 0x00000002, 0x4062AC27, 0x4063C020, 0x00000002, 0x4062AC28,
+-	0x4063C020, 0x00000002, 0x4062AC29, 0x4063C020, 0x00000002, 0x4062AC2A,
+-	0x4063C020, 0x00000002, 0x4062AC2B, 0x4063C020, 0x00000002, 0x4062AC2C,
+-	0x4063C020, 0x00000002, 0x4062AC2D, 0x4063C020, 0x00000002, 0x4062AC2E,
+-	0x4063C020, 0x00000002, 0x4062AC2F, 0x4063C020, 0x00000002, 0x4062AC30,
+-	0x4063C020, 0x00000002, 0x4062AC31, 0x4063C020, 0x00000002, 0x4062AC32,
+-	0x4063C020, 0x00000002, 0x4062AC33, 0x4063C020, 0x00000002, 0x4062AC34,
+-	0x4063C020, 0x00000002, 0x4062AC35, 0x4063C020,
+-	// Block 287, offset 0x47c0
+-	0x00000002, 0x4062AC36, 0x4063C020, 0x00000002, 0x4062AC37, 0x4063C020,
+-	0x00000002, 0x4062AC38, 0x4063C020, 0x00000002, 0x4062AC39, 0x4063C020,
+-	0x00000002, 0x4062AC3A, 0x4063C020, 0x00000002, 0x4062AC3B, 0x4063C020,
+-	0x00000002, 0x4062AC3C, 0x4063C020, 0x00000002, 0x4062AC3D, 0x4063C020,
+-	0x00000002, 0x4062AC3E, 0x4063C020, 0x00000002, 0x4062AC3F, 0x4063C020,
+-	0x00000002, 0x4062AC40, 0x4063C020, 0x00000002, 0x4062AC41, 0x4063C020,
+-	0x00000002, 0x4062AC42, 0x4063C020, 0x00000002, 0x4062AC43, 0x4063C020,
+-	0x00000002, 0x4062AC44, 0x4063C020, 0x00000002, 0x4062AC45, 0x4063C020,
+-	0x00000002, 0x4062AC46, 0x4063C020, 0x00000002, 0x4062AC47, 0x4063C020,
+-	0x00000002, 0x4062AC48, 0x4063C020, 0x00000002, 0x4062AC49, 0x4063C020,
+-	0x00000002, 0x4062AC4A, 0x4063C020, 0x00000002,
+-	// Block 288, offset 0x4800
+-	0x4062AC4B, 0x4063C020, 0x00000002, 0x4062AC4C, 0x4063C020, 0x00000002,
+-	0x4062AC21, 0x4063C220, 0x00000002, 0x4062AC22, 0x4063C220, 0x00000002,
+-	0x4062AC23, 0x4063C220, 0x00000002, 0x4062AC24, 0x4063C220, 0x00000002,
+-	0x4062AC25, 0x4063C220, 0x00000002, 0x4062AC26, 0x4063C220, 0x00000002,
+-	0x4062AC27, 0x4063C220, 0x00000002, 0x4062AC28, 0x4063C220, 0x00000002,
+-	0x4062AC29, 0x4063C220, 0x00000002, 0x4062AC2A, 0x4063C220, 0x00000002,
+-	0x4062AC2B, 0x4063C220, 0x00000002, 0x4062AC2C, 0x4063C220, 0x00000002,
+-	0x4062AC2D, 0x4063C220, 0x00000002, 0x4062AC2E, 0x4063C220, 0x00000002,
+-	0x4062AC2F, 0x4063C220, 0x00000002, 0x4062AC30, 0x4063C220, 0x00000002,
+-	0x4062AC31, 0x4063C220, 0x00000002, 0x4062AC32, 0x4063C220, 0x00000002,
+-	0x4062AC33, 0x4063C220, 0x00000002, 0x4062AC34,
+-	// Block 289, offset 0x4840
+-	0x4063C220, 0x00000002, 0x4062AC35, 0x4063C220, 0x00000002, 0x4062AC36,
+-	0x4063C220, 0x00000002, 0x4062AC37, 0x4063C220, 0x00000002, 0x4062AC38,
+-	0x4063C220, 0x00000002, 0x4062AC39, 0x4063C220, 0x00000002, 0x4062AC3A,
+-	0x4063C220, 0x00000002, 0x4062AC3B, 0x4063C220, 0x00000002, 0x4062AC3C,
+-	0x4063C220, 0x00000002, 0x4062AC3D, 0x4063C220, 0x00000002, 0x4062AC3E,
+-	0x4063C220, 0x00000002, 0x4062AC3F, 0x4063C220, 0x00000002, 0x4062AC40,
+-	0x4063C220, 0x00000002, 0x4062AC41, 0x4063C220, 0x00000002, 0x4062AC42,
+-	0x4063C220, 0x00000002, 0x4062AC43, 0x4063C220, 0x00000002, 0x4062AC44,
+-	0x4063C220, 0x00000002, 0x4062AC45, 0x4063C220, 0x00000002, 0x4062AC46,
+-	0x4063C220, 0x00000002, 0x4062AC47, 0x4063C220, 0x00000002, 0x4062AC48,
+-	0x4063C220, 0x00000002, 0x4062AC49, 0x4063C220,
+-	// Block 290, offset 0x4880
+-	0x00000002, 0x4062AC4A, 0x4063C220, 0x00000002, 0x4062AC4B, 0x4063C220,
+-	0x00000002, 0x4062AC4C, 0x4063C220, 0x00000002, 0x4062AC4D, 0x4063C220,
+-	0x00000002, 0x4062AC4E, 0x4063C220, 0x00000002, 0x4062AC4F, 0x4063C220,
+-	0x00000002, 0x4062AC50, 0x4063C220, 0x00000002, 0x4062AC51, 0x4063C220,
+-	0x00000002, 0x4062AC52, 0x4063C220, 0x00000002, 0x4062AC53, 0x4063C220,
+-	0x00000002, 0x4062AC54, 0x4063C220, 0x00000002, 0x4062AC55, 0x4063C220,
+-	0x00000002, 0x4062AC56, 0x4063C220, 0x00000002, 0x4062AC57, 0x4063C220,
+-	0x00000002, 0x4062AC58, 0x4063C220, 0x00000002, 0x4062AC59, 0x4063C220,
+-	0x00000002, 0x4062AC5A, 0x4063C220, 0x00000002, 0x4062AC5B, 0x4063C220,
+-	0x00000002, 0x4062AC5C, 0x4063C220, 0x00000002, 0x4062AC5D, 0x4063C220,
+-	0x00000002, 0x4062AC5E, 0x4063C220, 0x00000002,
+-	// Block 291, offset 0x48c0
+-	0x4062AC5F, 0x4063C220, 0x00000002, 0x4062AC60, 0x4063C220, 0x00000002,
+-	0x4062AC61, 0x4063C220, 0x00000002, 0x4062AC62, 0x4063C220, 0x00000002,
+-	0x4062AC63, 0x4063C220, 0x00000002, 0x4062AC64, 0x4063C220, 0x00000002,
+-	0x4062AC65, 0x4063C220, 0x00000002, 0x4062AC66, 0x4063C220, 0x00000002,
+-	0x4062AC67, 0x4063C220, 0x00000002, 0x4062AC68, 0x4063C220, 0x00000002,
+-	0x4062AC69, 0x4063C220, 0x00000002, 0x4062AC6A, 0x4063C220, 0x00000002,
+-	0x4062AC6B, 0x4063C220, 0x00000002, 0x4062AC6C, 0x4063C220, 0x00000002,
+-	0x4062AC6D, 0x4063C220, 0x00000002, 0x4062AC6E, 0x4063C220, 0x00000002,
+-	0x4062AC6F, 0x4063C220, 0x00000002, 0x4062AC70, 0x4063C220, 0x00000002,
+-	0x4062AC71, 0x4063C220, 0x00000002, 0x4062AC72, 0x4063C220, 0x00000002,
+-	0x4062AC73, 0x4063C220, 0x00000002, 0x4062AC74,
+-	// Block 292, offset 0x4900
+-	0x4063C220, 0x00000002, 0x4062AC75, 0x4063C220, 0x00000002, 0x4062AC76,
+-	0x4063C220, 0x00000002, 0x4062AC77, 0x4063C220, 0x00000002, 0x4062AC78,
+-	0x4063C220, 0x00000002, 0x4062AC79, 0x4063C220, 0x00000002, 0x4062AC7A,
+-	0x4063C220, 0x00000002, 0x4062AC7B, 0x4063C220, 0x00000002, 0x4062AC7C,
+-	0x4063C220, 0x00000002, 0x4062AC7D, 0x4063C220, 0x00000002, 0x4062AC7E,
+-	0x4063C220, 0x00000002, 0x4062AC7F, 0x4063C220, 0x00000002, 0x4062AC80,
+-	0x4063C220, 0x00000002, 0x4062AC81, 0x4063C220, 0x00000002, 0x4062AC82,
+-	0x4063C220, 0x00000002, 0x4062AC83, 0x4063C220, 0x00000002, 0x4062AC84,
+-	0x4063C220, 0x00000002, 0x4062AC85, 0x4063C220, 0x00000002, 0x4062AC86,
+-	0x4063C220, 0x00000002, 0x4062AC87, 0x4063C220, 0x00000003, 0x4062AC21,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062AC22,
+-	// Block 293, offset 0x4940
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062AC23, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062AC24, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC25,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062AC26, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062AC27, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC28,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062AC29, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062AC2A, 0x4063C220, 0x40646420, 0x00000003, 0x4062AC21,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062AC22, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062AC23, 0x4063C220, 0x40646A20, 0x00000003, 0x4062AC24,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062AC26, 0x4063C220, 0x40646A20, 0x00000003, 0x4062AC27,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062AC28,
+-	// Block 294, offset 0x4980
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062AC29, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062AC21, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC22,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062AC23, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062AC24, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC25,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062AC26, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062AC27, 0x4063C220, 0x40647220, 0x00000003, 0x4062AC28,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062AC21, 0x4063C220, 0x40648C20,
+-	0x00000003, 0x4062AC22, 0x4063C220, 0x40648C20, 0x00000003, 0x4062AC23,
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062AC24, 0x4063C220, 0x40648C20,
+-	0x00000003, 0x4062AC25, 0x4063C220, 0x40648C20, 0x00000003, 0x4062AC26,
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062AC27,
+-	// Block 295, offset 0x49c0
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062AC21, 0x4063C420, 0x40646A20,
+-	0x00000003, 0x4062AC22, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC23,
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063C420, 0x40646A20,
+-	0x00000003, 0x4062AC25, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC26,
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC27, 0x4063C420, 0x40646A20,
+-	0x00000003, 0x4062AC28, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC29,
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC2A, 0x4063C420, 0x40646A20,
+-	0x00000003, 0x4062AC2B, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC2C,
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC2D, 0x4063C420, 0x40646A20,
+-	0x00000003, 0x4062AC2E, 0x4063C420, 0x40646A20, 0x00000003, 0x4062AC2F,
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC30,
+-	// Block 296, offset 0x4a00
+-	0x4063C420, 0x40646A20, 0x00000003, 0x4062AC21, 0x4063C420, 0x40647220,
+-	0x00000003, 0x4062AC22, 0x4063C420, 0x40647220, 0x00000003, 0x4062AC23,
+-	0x4063C420, 0x40647220, 0x00000003, 0x4062AC24, 0x4063C420, 0x40647220,
+-	0x00000003, 0x4062AC25, 0x4063C420, 0x40647220, 0x00000002, 0x4062AC21,
+-	0x4063C620, 0x00000002, 0x4062AC22, 0x4063C620, 0x00000002, 0x4062AC23,
+-	0x4063C620, 0x00000002, 0x4062AC24, 0x4063C620, 0x00000002, 0x4062AC25,
+-	0x4063C620, 0x00000002, 0x4062AC26, 0x4063C620, 0x00000002, 0x4062AC27,
+-	0x4063C620, 0x00000002, 0x4062AC28, 0x4063C620, 0x00000002, 0x4062AC29,
+-	0x4063C620, 0x00000002, 0x4062AC2A, 0x4063C620, 0x00000002, 0x4062AC2B,
+-	0x4063C620, 0x00000002, 0x4062AC2C, 0x4063C620, 0x00000002, 0x4062AC2D,
+-	0x4063C620, 0x00000002, 0x4062AC2E, 0x4063C620,
+-	// Block 297, offset 0x4a40
+-	0x00000002, 0x4062AC2F, 0x4063C620, 0x00000002, 0x4062AC30, 0x4063C620,
+-	0x00000002, 0x4062AC31, 0x4063C620, 0x00000002, 0x4062AC32, 0x4063C620,
+-	0x00000002, 0x4062AC33, 0x4063C620, 0x00000002, 0x4062AC34, 0x4063C620,
+-	0x00000002, 0x4062AC21, 0x4063C820, 0x00000002, 0x4062AC22, 0x4063C820,
+-	0x00000002, 0x4062AC23, 0x4063C820, 0x00000002, 0x4062AC24, 0x4063C820,
+-	0x00000002, 0x4062AC21, 0x4063CA20, 0x00000002, 0x4062AC22, 0x4063CA20,
+-	0x00000002, 0x4062AC23, 0x4063CA20, 0x00000002, 0x4062AC24, 0x4063CA20,
+-	0x00000002, 0x4062AC25, 0x4063CA20, 0x00000002, 0x4062AC26, 0x4063CA20,
+-	0x00000002, 0x4062AC27, 0x4063CA20, 0x00000002, 0x4062AC28, 0x4063CA20,
+-	0x00000002, 0x4062AC29, 0x4063CA20, 0x00000002, 0x4062AC2A, 0x4063CA20,
+-	0x00000002, 0x4062AC2B, 0x4063CA20, 0x00000002,
+-	// Block 298, offset 0x4a80
+-	0x4062AC2C, 0x4063CA20, 0x00000002, 0x4062AC2D, 0x4063CA20, 0x00000002,
+-	0x4062AC2E, 0x4063CA20, 0x00000002, 0x4062AC2F, 0x4063CA20, 0x00000002,
+-	0x4062AC30, 0x4063CA20, 0x00000002, 0x4062AC31, 0x4063CA20, 0x00000002,
+-	0x4062AC32, 0x4063CA20, 0x00000002, 0x4062AC33, 0x4063CA20, 0x00000002,
+-	0x4062AC34, 0x4063CA20, 0x00000002, 0x4062AC35, 0x4063CA20, 0x00000002,
+-	0x4062AC36, 0x4063CA20, 0x00000002, 0x4062AC37, 0x4063CA20, 0x00000002,
+-	0x4062AC38, 0x4063CA20, 0x00000002, 0x4062AC39, 0x4063CA20, 0x00000002,
+-	0x4062AC3A, 0x4063CA20, 0x00000002, 0x4062AC3B, 0x4063CA20, 0x00000002,
+-	0x4062AC3C, 0x4063CA20, 0x00000002, 0x4062AC3D, 0x4063CA20, 0x00000002,
+-	0x4062AC3E, 0x4063CA20, 0x00000002, 0x4062AC3F, 0x4063CA20, 0x00000002,
+-	0x4062AC40, 0x4063CA20, 0x00000003, 0x4062AC21,
+-	// Block 299, offset 0x4ac0
+-	0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC22, 0x4063CA20, 0x40646A20,
+-	0x00000003, 0x4062AC23, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC24,
+-	0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC25, 0x4063CA20, 0x40646A20,
+-	0x00000003, 0x4062AC26, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC27,
+-	0x4063CA20, 0x40646A20, 0x00000003, 0x4062AC28, 0x4063CA20, 0x40646A20,
+-	0x00000003, 0x4062AC21, 0x4063CA20, 0x40647220, 0x00000003, 0x4062AC21,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062AC22, 0x4063CC20, 0x40646420,
+-	0x00000003, 0x4062AC23, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC24,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062AC25, 0x4063CC20, 0x40646420,
+-	0x00000003, 0x4062AC26, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC27,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062AC28,
+-	// Block 300, offset 0x4b00
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062AC29, 0x4063CC20, 0x40646420,
+-	0x00000003, 0x4062AC2A, 0x4063CC20, 0x40646420, 0x00000003, 0x4062AC2B,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062AC21, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC22, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC23,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC24, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC25, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC26,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC27, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC28, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC29,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC2A, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC2B, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC2C,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC2D,
+-	// Block 301, offset 0x4b40
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC2E, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC2F, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC30,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC31, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC32, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC33,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC34, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC35, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC36,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC37, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062AC38, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC39,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062AC21, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC22, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC23,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC24,
+-	// Block 302, offset 0x4b80
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC25, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC26, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC27,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC28, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC29, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2A,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2B, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC2C, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2D,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC2E, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC2F, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC30,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062AC31, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062AC32, 0x4063CC20, 0x40648220, 0x00000003, 0x4062AC21,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062AC22,
+-	// Block 303, offset 0x4bc0
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062AC23, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062AC24, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC25,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062AC26, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062AC27, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC28,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062AC29, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062AC2A, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC2B,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062AC2C, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062AC2D, 0x4063CC20, 0x40648420, 0x00000003, 0x4062AC21,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062AC22, 0x4063CC20, 0x40648C20,
+-	0x00000003, 0x4062AC23, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062AC24,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062AC25,
+-	// Block 304, offset 0x4c00
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062AC26, 0x4063CC20, 0x40648C20,
+-	0x00000002, 0x4062AC21, 0x4063D020, 0x00000002, 0x4062AC22, 0x4063D020,
+-	0x00000002, 0x4062AC23, 0x4063D020, 0x00000002, 0x4062AC24, 0x4063D020,
+-	0x00000002, 0x4062AC25, 0x4063D020, 0x00000002, 0x4062AC26, 0x4063D020,
+-	0x00000002, 0x4062AC27, 0x4063D020, 0x00000002, 0x4062AC28, 0x4063D020,
+-	0x00000002, 0x4062AC29, 0x4063D020, 0x00000002, 0x4062AC2A, 0x4063D020,
+-	0x00000002, 0x4062AC2B, 0x4063D020, 0x00000002, 0x4062AC2C, 0x4063D020,
+-	0x00000002, 0x4062AC2D, 0x4063D020, 0x00000002, 0x4062AC2E, 0x4063D020,
+-	0x00000002, 0x4062AC2F, 0x4063D020, 0x00000002, 0x4062AC30, 0x4063D020,
+-	0x00000002, 0x4062AC31, 0x4063D020, 0x00000002, 0x4062AC32, 0x4063D020,
+-	0x00000002, 0x4062AC33, 0x4063D020, 0x00000002,
+-	// Block 305, offset 0x4c40
+-	0x4062AC34, 0x4063D020, 0x00000002, 0x4062AC35, 0x4063D020, 0x00000002,
+-	0x4062AC36, 0x4063D020, 0x00000002, 0x4062AC37, 0x4063D020, 0x00000002,
+-	0x4062AC38, 0x4063D020, 0x00000002, 0x4062AC39, 0x4063D020, 0x00000002,
+-	0x4062AC3A, 0x4063D020, 0x00000002, 0x4062AC3B, 0x4063D020, 0x00000002,
+-	0x4062AC3C, 0x4063D020, 0x00000002, 0x4062AC3D, 0x4063D020, 0x00000002,
+-	0x4062AC3E, 0x4063D020, 0x00000002, 0x4062AC3F, 0x4063D020, 0x00000002,
+-	0x4062AC40, 0x4063D020, 0x00000002, 0x4062AC41, 0x4063D020, 0x00000002,
+-	0x4062AC42, 0x4063D020, 0x00000002, 0x4062AC43, 0x4063D020, 0x00000002,
+-	0x4062AC44, 0x4063D020, 0x00000002, 0x4062AC45, 0x4063D020, 0x00000002,
+-	0x4062AC46, 0x4063D020, 0x00000002, 0x4062AC47, 0x4063D020, 0x00000002,
+-	0x4062AC48, 0x4063D020, 0x00000002, 0x4062AC49,
+-	// Block 306, offset 0x4c80
+-	0x4063D020, 0x00000002, 0x4062AC4A, 0x4063D020, 0x00000002, 0x4062AC4B,
+-	0x4063D020, 0x00000002, 0x4062AC4C, 0x4063D020, 0x00000002, 0x4062AC4D,
+-	0x4063D020, 0x00000002, 0x4062AC4E, 0x4063D020, 0x00000002, 0x4062AC4F,
+-	0x4063D020, 0x00000002, 0x4062AC50, 0x4063D020, 0x00000002, 0x4062AC51,
+-	0x4063D020, 0x00000002, 0x4062AC52, 0x4063D020, 0x00000002, 0x4062AC53,
+-	0x4063D020, 0x00000002, 0x4062AC54, 0x4063D020, 0x00000002, 0x4062AC55,
+-	0x4063D020, 0x00000002, 0x4062AC56, 0x4063D020, 0x00000002, 0x4062AC57,
+-	0x4063D020, 0x00000002, 0x4062AC58, 0x4063D020, 0x00000002, 0x4062AC59,
+-	0x4063D020, 0x00000002, 0x4062AC5A, 0x4063D020, 0x00000002, 0x4062AC5B,
+-	0x4063D020, 0x00000002, 0x4062AC5C, 0x4063D020, 0x00000002, 0x4062AC5D,
+-	0x4063D020, 0x00000002, 0x4062AC5E, 0x4063D020,
+-	// Block 307, offset 0x4cc0
+-	0x00000002, 0x4062AC5F, 0x4063D020, 0x00000002, 0x4062AC60, 0x4063D020,
+-	0x00000002, 0x4062AC61, 0x4063D020, 0x00000002, 0x4062AC62, 0x4063D020,
+-	0x00000002, 0x4062AC63, 0x4063D020, 0x00000002, 0x4062AC64, 0x4063D020,
+-	0x00000002, 0x4062AC65, 0x4063D020, 0x00000002, 0x4062AC66, 0x4063D020,
+-	0x00000002, 0x4062AC67, 0x4063D020, 0x00000002, 0x4062AC68, 0x4063D020,
+-	0x00000002, 0x4062AC69, 0x4063D020, 0x00000002, 0x4062AC6A, 0x4063D020,
+-	0x00000002, 0x4062AC6B, 0x4063D020, 0x00000002, 0x4062AC6C, 0x4063D020,
+-	0x00000002, 0x4062AC6D, 0x4063D020, 0x00000002, 0x4062AC6E, 0x4063D020,
+-	0x00000002, 0x4062AC6F, 0x4063D020, 0x00000002, 0x4062AC70, 0x4063D020,
+-	0x00000002, 0x4062AC71, 0x4063D020, 0x00000002, 0x4062AC72, 0x4063D020,
+-	0x00000002, 0x4062AC73, 0x4063D020, 0x00000002,
+-	// Block 308, offset 0x4d00
+-	0x4062AC74, 0x4063D020, 0x00000002, 0x4062AC75, 0x4063D020, 0x00000002,
+-	0x4062AC76, 0x4063D020, 0x00000002, 0x4062AC77, 0x4063D020, 0x00000002,
+-	0x4062AC78, 0x4063D020, 0x00000002, 0x4062AC79, 0x4063D020, 0x00000002,
+-	0x4062AC7A, 0x4063D020, 0x00000002, 0x4062AC7B, 0x4063D020, 0x00000002,
+-	0x4062AC7C, 0x4063D020, 0x00000002, 0x4062AC7D, 0x4063D020, 0x00000002,
+-	0x4062AC7E, 0x4063D020, 0x00000002, 0x4062AC7F, 0x4063D020, 0x00000002,
+-	0x4062AC80, 0x4063D020, 0x00000002, 0x4062AC81, 0x4063D020, 0x00000002,
+-	0x4062AC82, 0x4063D020, 0x00000002, 0x4062AC83, 0x4063D020, 0x00000002,
+-	0x4062AC84, 0x4063D020, 0x00000003, 0x4062AC21, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062AC21, 0x4063D020, 0x40647220, 0x00000003, 0x4062AC22,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062AC23,
+-	// Block 309, offset 0x4d40
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062AC24, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062AC25, 0x4063D020, 0x40647220, 0x00000003, 0x4062AC26,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062AC21, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062AE21, 0x4063D020, 0x40646420, 0x00000002, 0x4062B021,
+-	0x4063A820, 0x00000002, 0x4062B022, 0x4063A820, 0x00000002, 0x4062B023,
+-	0x4063A820, 0x00000002, 0x4062B024, 0x4063A820, 0x00000002, 0x4062B025,
+-	0x4063A820, 0x00000002, 0x4062B026, 0x4063A820, 0x00000002, 0x4062B027,
+-	0x4063A820, 0x00000002, 0x4062B028, 0x4063A820, 0x00000002, 0x4062B029,
+-	0x4063A820, 0x00000002, 0x4062B02A, 0x4063A820, 0x00000002, 0x4062B02B,
+-	0x4063A820, 0x00000003, 0x4062B021, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062B021, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 310, offset 0x4d80
+-	0x4062B022, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B023, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B024, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B025, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B026, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B027, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B021, 0x4063A820, 0x40647220, 0x00000003, 0x4062B022, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062B021, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B022, 0x4063A820, 0x40648220, 0x00000003, 0x4062B023, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B024, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B025, 0x4063A820, 0x40648220, 0x00000003, 0x4062B026, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B027, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B021, 0x4063A820, 0x40648420, 0x00000003,
+-	// Block 311, offset 0x4dc0
+-	0x4062B022, 0x4063A820, 0x40648420, 0x00000003, 0x4062B021, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B022, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B023, 0x4063A820, 0x40648C20, 0x00000002, 0x4062B021, 0x4063AA20,
+-	0x00000002, 0x4062B022, 0x4063AA20, 0x00000002, 0x4062B023, 0x4063AA20,
+-	0x00000002, 0x4062B024, 0x4063AA20, 0x00000002, 0x4062B025, 0x4063AA20,
+-	0x00000002, 0x4062B026, 0x4063AA20, 0x00000002, 0x4062B027, 0x4063AA20,
+-	0x00000002, 0x4062B028, 0x4063AA20, 0x00000002, 0x4062B029, 0x4063AA20,
+-	0x00000002, 0x4062B02A, 0x4063AA20, 0x00000002, 0x4062B021, 0x4063B420,
+-	0x00000003, 0x4062B021, 0x4063B420, 0x40646420, 0x00000003, 0x4062B021,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062B022, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062B023, 0x4063B420, 0x40646A20,
+-	// Block 312, offset 0x4e00
+-	0x00000003, 0x4062B024, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B021,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062B022, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062B023, 0x4063B420, 0x40648220, 0x00000003, 0x4062B024,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062B021, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062B022, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B023,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062B024, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062B025, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B026,
+-	0x4063B420, 0x40648C20, 0x00000002, 0x4062B021, 0x4063B820, 0x00000002,
+-	0x4062B022, 0x4063B820, 0x00000002, 0x4062B023, 0x4063B820, 0x00000002,
+-	0x4062B024, 0x4063B820, 0x00000002, 0x4062B025, 0x4063B820, 0x00000002,
+-	0x4062B026, 0x4063B820, 0x00000002, 0x4062B027,
+-	// Block 313, offset 0x4e40
+-	0x4063B820, 0x00000002, 0x4062B028, 0x4063B820, 0x00000002, 0x4062B029,
+-	0x4063B820, 0x00000002, 0x4062B02A, 0x4063B820, 0x00000002, 0x4062B02B,
+-	0x4063B820, 0x00000002, 0x4062B02C, 0x4063B820, 0x00000003, 0x4062B021,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B022, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B023, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B024,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B025, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B026, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B027,
+-	0x4063B820, 0x40648C20, 0x00000002, 0x4062B021, 0x4063BE20, 0x00000002,
+-	0x4062B022, 0x4063BE20, 0x00000002, 0x4062B023, 0x4063BE20, 0x00000002,
+-	0x4062B021, 0x4063C020, 0x00000002, 0x4062B022, 0x4063C020, 0x00000002,
+-	0x4062B023, 0x4063C020, 0x00000002, 0x4062B024,
+-	// Block 314, offset 0x4e80
+-	0x4063C020, 0x00000002, 0x4062B025, 0x4063C020, 0x00000002, 0x4062B026,
+-	0x4063C020, 0x00000002, 0x4062B027, 0x4063C020, 0x00000002, 0x4062B021,
+-	0x4063C220, 0x00000002, 0x4062B022, 0x4063C220, 0x00000003, 0x4062B021,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B021, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062B022, 0x4063C220, 0x40647220, 0x00000003, 0x4062B023,
+-	0x4063C220, 0x40647220, 0x00000002, 0x4062B021, 0x4063CA20, 0x00000002,
+-	0x4062B022, 0x4063CA20, 0x00000002, 0x4062B023, 0x4063CA20, 0x00000002,
+-	0x4062B024, 0x4063CA20, 0x00000003, 0x4062B021, 0x4063CA20, 0x40646420,
+-	0x00000003, 0x4062B021, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062B021,
+-	0x4063D020, 0x00000002, 0x4062B022, 0x4063D020, 0x00000002, 0x4062B023,
+-	0x4063D020, 0x00000002, 0x4062B024, 0x4063D020,
+-	// Block 315, offset 0x4ec0
+-	0x00000002, 0x4062B025, 0x4063D020, 0x00000002, 0x4062B026, 0x4063D020,
+-	0x00000002, 0x4062B027, 0x4063D020, 0x00000002, 0x4062B028, 0x4063D020,
+-	0x00000003, 0x4062B021, 0x4063D020, 0x40646420, 0x00000003, 0x4062B022,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062B023, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062B024, 0x4063D020, 0x40646420, 0x00000002, 0x4062B221,
+-	0x4063A820, 0x00000002, 0x4062B222, 0x4063A820, 0x00000002, 0x4062B223,
+-	0x4063A820, 0x00000003, 0x4062B221, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B222, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B223, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B224, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B225, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B226, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B227, 0x4063A820,
+-	// Block 316, offset 0x4f00
+-	0x40646A20, 0x00000003, 0x4062B228, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B229, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B22A, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B22B, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B22C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B22D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B22E, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B22F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B230, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B231, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B232, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B233, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B234, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B235, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B236, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B237, 0x4063A820,
+-	// Block 317, offset 0x4f40
+-	0x40646A20, 0x00000003, 0x4062B238, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B239, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B23A, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B23B, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062B23C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B23D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062B221, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062B222, 0x4063A820, 0x40647220, 0x00000003, 0x4062B223, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062B224, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062B225, 0x4063A820, 0x40647220, 0x00000003, 0x4062B226, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062B227, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062B228, 0x4063A820, 0x40647220, 0x00000003, 0x4062B229, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062B22A, 0x4063A820,
+-	// Block 318, offset 0x4f80
+-	0x40647220, 0x00000003, 0x4062B221, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B222, 0x4063A820, 0x40648220, 0x00000003, 0x4062B223, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B224, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B225, 0x4063A820, 0x40648220, 0x00000003, 0x4062B226, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B227, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B228, 0x4063A820, 0x40648220, 0x00000003, 0x4062B229, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B22A, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B22B, 0x4063A820, 0x40648220, 0x00000003, 0x4062B22C, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B22D, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B22E, 0x4063A820, 0x40648220, 0x00000003, 0x4062B22F, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B230, 0x4063A820,
+-	// Block 319, offset 0x4fc0
+-	0x40648220, 0x00000003, 0x4062B231, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B232, 0x4063A820, 0x40648220, 0x00000003, 0x4062B233, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B234, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B235, 0x4063A820, 0x40648220, 0x00000003, 0x4062B236, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B237, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B238, 0x4063A820, 0x40648220, 0x00000003, 0x4062B239, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B23A, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B23B, 0x4063A820, 0x40648220, 0x00000003, 0x4062B23C, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062B23D, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062B221, 0x4063A820, 0x40648420, 0x00000003, 0x4062B222, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062B223, 0x4063A820,
+-	// Block 320, offset 0x5000
+-	0x40648420, 0x00000003, 0x4062B224, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062B225, 0x4063A820, 0x40648420, 0x00000003, 0x4062B221, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B222, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B223, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B224, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B225, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B226, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B227, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B228, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B229, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B22A, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B22B, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B22C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B22D, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B22E, 0x4063A820,
+-	// Block 321, offset 0x5040
+-	0x40648C20, 0x00000003, 0x4062B22F, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B230, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B231, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B232, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B233, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B234, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B235, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B236, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B237, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B238, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B239, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B23A, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062B23B, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062B23C, 0x4063A820, 0x40648C20, 0x00000002, 0x4062B221, 0x4063AA20,
+-	0x00000002, 0x4062B222, 0x4063AA20, 0x00000002,
+-	// Block 322, offset 0x5080
+-	0x4062B223, 0x4063AA20, 0x00000002, 0x4062B224, 0x4063AA20, 0x00000002,
+-	0x4062B225, 0x4063AA20, 0x00000002, 0x4062B226, 0x4063AA20, 0x00000002,
+-	0x4062B227, 0x4063AA20, 0x00000002, 0x4062B228, 0x4063AA20, 0x00000002,
+-	0x4062B229, 0x4063AA20, 0x00000002, 0x4062B22A, 0x4063AA20, 0x00000002,
+-	0x4062B22B, 0x4063AA20, 0x00000002, 0x4062B22C, 0x4063AA20, 0x00000002,
+-	0x4062B22D, 0x4063AA20, 0x00000002, 0x4062B22E, 0x4063AA20, 0x00000002,
+-	0x4062B22F, 0x4063AA20, 0x00000002, 0x4062B230, 0x4063AA20, 0x00000002,
+-	0x4062B231, 0x4063AA20, 0x00000002, 0x4062B232, 0x4063AA20, 0x00000002,
+-	0x4062B233, 0x4063AA20, 0x00000002, 0x4062B234, 0x4063AA20, 0x00000002,
+-	0x4062B235, 0x4063AA20, 0x00000002, 0x4062B236, 0x4063AA20, 0x00000003,
+-	0x4062B221, 0x4063AA20, 0x40646420, 0x00000003,
+-	// Block 323, offset 0x50c0
+-	0x4062B221, 0x4063B020, 0x40646420, 0x00000003, 0x4062B222, 0x4063B020,
+-	0x40646420, 0x00000002, 0x4062B221, 0x4063B820, 0x00000002, 0x4062B222,
+-	0x4063B820, 0x00000002, 0x4062B223, 0x4063B820, 0x00000002, 0x4062B224,
+-	0x4063B820, 0x00000002, 0x4062B225, 0x4063B820, 0x00000002, 0x4062B226,
+-	0x4063B820, 0x00000002, 0x4062B227, 0x4063B820, 0x00000002, 0x4062B228,
+-	0x4063B820, 0x00000002, 0x4062B229, 0x4063B820, 0x00000002, 0x4062B22A,
+-	0x4063B820, 0x00000002, 0x4062B22B, 0x4063B820, 0x00000002, 0x4062B22C,
+-	0x4063B820, 0x00000002, 0x4062B22D, 0x4063B820, 0x00000002, 0x4062B22E,
+-	0x4063B820, 0x00000002, 0x4062B22F, 0x4063B820, 0x00000002, 0x4062B230,
+-	0x4063B820, 0x00000002, 0x4062B231, 0x4063B820, 0x00000002, 0x4062B232,
+-	0x4063B820, 0x00000002, 0x4062B233, 0x4063B820,
+-	// Block 324, offset 0x5100
+-	0x00000002, 0x4062B234, 0x4063B820, 0x00000002, 0x4062B235, 0x4063B820,
+-	0x00000002, 0x4062B236, 0x4063B820, 0x00000002, 0x4062B237, 0x4063B820,
+-	0x00000002, 0x4062B238, 0x4063B820, 0x00000002, 0x4062B239, 0x4063B820,
+-	0x00000002, 0x4062B23A, 0x4063B820, 0x00000002, 0x4062B23B, 0x4063B820,
+-	0x00000002, 0x4062B23C, 0x4063B820, 0x00000002, 0x4062B23D, 0x4063B820,
+-	0x00000002, 0x4062B23E, 0x4063B820, 0x00000002, 0x4062B23F, 0x4063B820,
+-	0x00000002, 0x4062B240, 0x4063B820, 0x00000002, 0x4062B241, 0x4063B820,
+-	0x00000002, 0x4062B242, 0x4063B820, 0x00000002, 0x4062B243, 0x4063B820,
+-	0x00000002, 0x4062B244, 0x4063B820, 0x00000002, 0x4062B245, 0x4063B820,
+-	0x00000002, 0x4062B246, 0x4063B820, 0x00000002, 0x4062B247, 0x4063B820,
+-	0x00000002, 0x4062B248, 0x4063B820, 0x00000002,
+-	// Block 325, offset 0x5140
+-	0x4062B249, 0x4063B820, 0x00000002, 0x4062B24A, 0x4063B820, 0x00000002,
+-	0x4062B24B, 0x4063B820, 0x00000002, 0x4062B24C, 0x4063B820, 0x00000002,
+-	0x4062B24D, 0x4063B820, 0x00000002, 0x4062B24E, 0x4063B820, 0x00000002,
+-	0x4062B24F, 0x4063B820, 0x00000002, 0x4062B250, 0x4063B820, 0x00000002,
+-	0x4062B251, 0x4063B820, 0x00000002, 0x4062B252, 0x4063B820, 0x00000002,
+-	0x4062B253, 0x4063B820, 0x00000002, 0x4062B254, 0x4063B820, 0x00000002,
+-	0x4062B255, 0x4063B820, 0x00000002, 0x4062B256, 0x4063B820, 0x00000002,
+-	0x4062B257, 0x4063B820, 0x00000002, 0x4062B258, 0x4063B820, 0x00000002,
+-	0x4062B259, 0x4063B820, 0x00000002, 0x4062B25A, 0x4063B820, 0x00000002,
+-	0x4062B25B, 0x4063B820, 0x00000003, 0x4062B221, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062B222, 0x4063B820, 0x40646420,
+-	// Block 326, offset 0x5180
+-	0x00000003, 0x4062B223, 0x4063B820, 0x40646420, 0x00000003, 0x4062B224,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062B225, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062B226, 0x4063B820, 0x40646420, 0x00000003, 0x4062B227,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062B228, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062B229, 0x4063B820, 0x40646420, 0x00000003, 0x4062B22A,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062B22B, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062B22C, 0x4063B820, 0x40646420, 0x00000003, 0x4062B221,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062B222, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062B223, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B224,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062B225, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062B226, 0x4063B820, 0x40646A20,
+-	// Block 327, offset 0x51c0
+-	0x00000003, 0x4062B227, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B228,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062B229, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062B22A, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B22B,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062B22C, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062B22D, 0x4063B820, 0x40646A20, 0x00000003, 0x4062B221,
+-	0x4063B820, 0x40647220, 0x00000003, 0x4062B222, 0x4063B820, 0x40647220,
+-	0x00000003, 0x4062B223, 0x4063B820, 0x40647220, 0x00000003, 0x4062B224,
+-	0x4063B820, 0x40647220, 0x00000003, 0x4062B221, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B222, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B223,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B224, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B225, 0x4063B820, 0x40648C20,
+-	// Block 328, offset 0x5200
+-	0x00000003, 0x4062B226, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B227,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B228, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B229, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B22A,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B22B, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B22C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B22D,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B22E, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B22F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B230,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B231, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B232, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B233,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B234, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B235, 0x4063B820, 0x40648C20,
+-	// Block 329, offset 0x5240
+-	0x00000003, 0x4062B236, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B237,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B238, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B239, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B23A,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B23B, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B23C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B23D,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B23E, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062B23F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B240,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062B241, 0x4063B820, 0x40648C20,
+-	0x00000002, 0x4062B221, 0x4063C220, 0x00000002, 0x4062B222, 0x4063C220,
+-	0x00000002, 0x4062B223, 0x4063C220, 0x00000002, 0x4062B224, 0x4063C220,
+-	0x00000002, 0x4062B225, 0x4063C220, 0x00000002,
+-	// Block 330, offset 0x5280
+-	0x4062B226, 0x4063C220, 0x00000002, 0x4062B227, 0x4063C220, 0x00000002,
+-	0x4062B228, 0x4063C220, 0x00000002, 0x4062B229, 0x4063C220, 0x00000002,
+-	0x4062B22A, 0x4063C220, 0x00000002, 0x4062B22B, 0x4063C220, 0x00000002,
+-	0x4062B22C, 0x4063C220, 0x00000002, 0x4062B22D, 0x4063C220, 0x00000002,
+-	0x4062B22E, 0x4063C220, 0x00000002, 0x4062B22F, 0x4063C220, 0x00000002,
+-	0x4062B230, 0x4063C220, 0x00000002, 0x4062B231, 0x4063C220, 0x00000003,
+-	0x4062B221, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B222, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062B223, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062B224, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B225, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062B226, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062B227, 0x4063C220, 0x40646A20, 0x00000003,
+-	// Block 331, offset 0x52c0
+-	0x4062B228, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B221, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062B221, 0x4063CC20, 0x40646420, 0x00000003,
+-	0x4062B221, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B222, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B223, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B224, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B225, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B226, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B227, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B228, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B229, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B22A, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22B, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B22C, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B22D, 0x4063CC20, 0x40648C20, 0x00000003,
+-	// Block 332, offset 0x5300
+-	0x4062B22E, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B22F, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B230, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B231, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062B621, 0x4063A820,
+-	0x00000002, 0x4062B622, 0x4063A820, 0x00000002, 0x4062B623, 0x4063A820,
+-	0x00000002, 0x4062B624, 0x4063A820, 0x00000002, 0x4062B625, 0x4063A820,
+-	0x00000002, 0x4062B626, 0x4063A820, 0x00000002, 0x4062B627, 0x4063A820,
+-	0x00000002, 0x4062B628, 0x4063A820, 0x00000002, 0x4062B629, 0x4063A820,
+-	0x00000002, 0x4062B62A, 0x4063A820, 0x00000002, 0x4062B62B, 0x4063A820,
+-	0x00000002, 0x4062B62C, 0x4063A820, 0x00000002, 0x4062B62D, 0x4063A820,
+-	0x00000002, 0x4062B62E, 0x4063A820, 0x00000002, 0x4062B62F, 0x4063A820,
+-	0x00000002, 0x4062B630, 0x4063A820, 0x00000002,
+-	// Block 333, offset 0x5340
+-	0x4062B631, 0x4063A820, 0x00000003, 0x4062B621, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B622, 0x4063A820, 0x40646420, 0x00000003, 0x4062B623,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062B624, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B625, 0x4063A820, 0x40646420, 0x00000003, 0x4062B626,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062B627, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B628, 0x4063A820, 0x40646420, 0x00000003, 0x4062B629,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062B621, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B622, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B623,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B624, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B625, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B626,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B627,
+-	// Block 334, offset 0x5380
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B628, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B629, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B62A,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B62B, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B62C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B62D,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B62E, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B62F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B621,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062B622, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062B623, 0x4063A820, 0x40647220, 0x00000003, 0x4062B624,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062B621, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062B622, 0x4063A820, 0x40648220, 0x00000003, 0x4062B623,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062B624,
+-	// Block 335, offset 0x53c0
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062B625, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062B626, 0x4063A820, 0x40648220, 0x00000003, 0x4062B627,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062B628, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062B629, 0x4063A820, 0x40648220, 0x00000003, 0x4062B62A,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062B62B, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062B62C, 0x4063A820, 0x40648220, 0x00000003, 0x4062B621,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062B622, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062B623, 0x4063A820, 0x40648420, 0x00000003, 0x4062B624,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062B621, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B622, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B623,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B624,
+-	// Block 336, offset 0x5400
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B625, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B626, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B627,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B628, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B629, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B62A,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B62B, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B62C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B62D,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B62E, 0x4063A820, 0x40648C20,
+-	0x00000002, 0x4062B621, 0x4063AA20, 0x00000002, 0x4062B622, 0x4063AA20,
+-	0x00000002, 0x4062B623, 0x4063AA20, 0x00000002, 0x4062B624, 0x4063AA20,
+-	0x00000002, 0x4062B625, 0x4063AA20, 0x00000002, 0x4062B626, 0x4063AA20,
+-	0x00000003, 0x4062B621, 0x4063AA20, 0x40648C20,
+-	// Block 337, offset 0x5440
+-	0x00000003, 0x4062B621, 0x4063AC20, 0x40646420, 0x00000003, 0x4062B622,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062B623, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062B621, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B622,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B623, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062B624, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B625,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B626, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062B627, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B628,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B629, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062B62A, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B62B,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B62C, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062B62D, 0x4063AC20, 0x40648C20,
+-	// Block 338, offset 0x5480
+-	0x00000003, 0x4062B62E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B62F,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B630, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062B631, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062B632,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062B633, 0x4063AC20, 0x40648C20,
+-	0x00000002, 0x4062B621, 0x4063B420, 0x00000002, 0x4062B622, 0x4063B420,
+-	0x00000002, 0x4062B623, 0x4063B420, 0x00000002, 0x4062B624, 0x4063B420,
+-	0x00000002, 0x4062B625, 0x4063B420, 0x00000002, 0x4062B626, 0x4063B420,
+-	0x00000002, 0x4062B627, 0x4063B420, 0x00000002, 0x4062B628, 0x4063B420,
+-	0x00000002, 0x4062B629, 0x4063B420, 0x00000002, 0x4062B62A, 0x4063B420,
+-	0x00000002, 0x4062B62B, 0x4063B420, 0x00000002, 0x4062B62C, 0x4063B420,
+-	0x00000002, 0x4062B62D, 0x4063B420, 0x00000002,
+-	// Block 339, offset 0x54c0
+-	0x4062B62E, 0x4063B420, 0x00000002, 0x4062B62F, 0x4063B420, 0x00000002,
+-	0x4062B630, 0x4063B420, 0x00000002, 0x4062B631, 0x4063B420, 0x00000002,
+-	0x4062B632, 0x4063B420, 0x00000002, 0x4062B633, 0x4063B420, 0x00000002,
+-	0x4062B634, 0x4063B420, 0x00000002, 0x4062B635, 0x4063B420, 0x00000002,
+-	0x4062B636, 0x4063B420, 0x00000002, 0x4062B637, 0x4063B420, 0x00000002,
+-	0x4062B638, 0x4063B420, 0x00000002, 0x4062B639, 0x4063B420, 0x00000002,
+-	0x4062B63A, 0x4063B420, 0x00000002, 0x4062B63B, 0x4063B420, 0x00000002,
+-	0x4062B63C, 0x4063B420, 0x00000002, 0x4062B63D, 0x4063B420, 0x00000003,
+-	0x4062B621, 0x4063B420, 0x40646420, 0x00000003, 0x4062B622, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062B623, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062B624, 0x4063B420, 0x40646420, 0x00000003,
+-	// Block 340, offset 0x5500
+-	0x4062B625, 0x4063B420, 0x40646420, 0x00000003, 0x4062B626, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062B627, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062B628, 0x4063B420, 0x40646420, 0x00000003, 0x4062B629, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062B62A, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062B62B, 0x4063B420, 0x40646420, 0x00000003, 0x4062B62C, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062B62D, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062B621, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B622, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B623, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B624, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B625, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B626, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B627, 0x4063B420, 0x40646A20, 0x00000003,
+-	// Block 341, offset 0x5540
+-	0x4062B628, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B629, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B62A, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B62B, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B62C, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B62D, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B62E, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B62F, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B630, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B631, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B632, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B633, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B621, 0x4063B420, 0x40647220, 0x00000003, 0x4062B622, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062B623, 0x4063B420, 0x40647220, 0x00000003,
+-	0x4062B624, 0x4063B420, 0x40647220, 0x00000003,
+-	// Block 342, offset 0x5580
+-	0x4062B625, 0x4063B420, 0x40647220, 0x00000003, 0x4062B626, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062B627, 0x4063B420, 0x40647220, 0x00000003,
+-	0x4062B628, 0x4063B420, 0x40647220, 0x00000003, 0x4062B629, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062B621, 0x4063B420, 0x40648220, 0x00000003,
+-	0x4062B622, 0x4063B420, 0x40648220, 0x00000003, 0x4062B623, 0x4063B420,
+-	0x40648220, 0x00000003, 0x4062B624, 0x4063B420, 0x40648220, 0x00000003,
+-	0x4062B625, 0x4063B420, 0x40648220, 0x00000003, 0x4062B626, 0x4063B420,
+-	0x40648220, 0x00000003, 0x4062B627, 0x4063B420, 0x40648220, 0x00000003,
+-	0x4062B628, 0x4063B420, 0x40648220, 0x00000003, 0x4062B621, 0x4063B420,
+-	0x40648420, 0x00000003, 0x4062B622, 0x4063B420, 0x40648420, 0x00000003,
+-	0x4062B623, 0x4063B420, 0x40648420, 0x00000003,
+-	// Block 343, offset 0x55c0
+-	0x4062B621, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B622, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B623, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B624, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B625, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B626, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B627, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B628, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B629, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B62A, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B62B, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B62C, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B62D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B62E, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B62F, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B630, 0x4063B420, 0x40648C20, 0x00000003,
+-	// Block 344, offset 0x5600
+-	0x4062B631, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B632, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B633, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B634, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B635, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B636, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B637, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B638, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B639, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B63A, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B63B, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B63C, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B63D, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B63E, 0x4063B420,
+-	0x40648C20, 0x00000002, 0x4062B621, 0x4063B620, 0x00000002, 0x4062B622,
+-	0x4063B620, 0x00000002, 0x4062B623, 0x4063B620,
+-	// Block 345, offset 0x5640
+-	0x00000002, 0x4062B624, 0x4063B620, 0x00000002, 0x4062B625, 0x4063B620,
+-	0x00000002, 0x4062B626, 0x4063B620, 0x00000002, 0x4062B627, 0x4063B620,
+-	0x00000002, 0x4062B621, 0x4063B820, 0x00000002, 0x4062B622, 0x4063B820,
+-	0x00000002, 0x4062B623, 0x4063B820, 0x00000002, 0x4062B624, 0x4063B820,
+-	0x00000002, 0x4062B625, 0x4063B820, 0x00000002, 0x4062B626, 0x4063B820,
+-	0x00000002, 0x4062B627, 0x4063B820, 0x00000002, 0x4062B628, 0x4063B820,
+-	0x00000002, 0x4062B629, 0x4063B820, 0x00000002, 0x4062B62A, 0x4063B820,
+-	0x00000002, 0x4062B62B, 0x4063B820, 0x00000002, 0x4062B62C, 0x4063B820,
+-	0x00000002, 0x4062B62D, 0x4063B820, 0x00000002, 0x4062B62E, 0x4063B820,
+-	0x00000002, 0x4062B62F, 0x4063B820, 0x00000002, 0x4062B630, 0x4063B820,
+-	0x00000002, 0x4062B631, 0x4063B820, 0x00000002,
+-	// Block 346, offset 0x5680
+-	0x4062B632, 0x4063B820, 0x00000002, 0x4062B633, 0x4063B820, 0x00000002,
+-	0x4062B634, 0x4063B820, 0x00000002, 0x4062B635, 0x4063B820, 0x00000002,
+-	0x4062B636, 0x4063B820, 0x00000002, 0x4062B637, 0x4063B820, 0x00000002,
+-	0x4062B638, 0x4063B820, 0x00000002, 0x4062B639, 0x4063B820, 0x00000002,
+-	0x4062B63A, 0x4063B820, 0x00000002, 0x4062B63B, 0x4063B820, 0x00000002,
+-	0x4062B63C, 0x4063B820, 0x00000002, 0x4062B63D, 0x4063B820, 0x00000002,
+-	0x4062B63E, 0x4063B820, 0x00000002, 0x4062B63F, 0x4063B820, 0x00000003,
+-	0x4062B621, 0x4063B820, 0x40646420, 0x00000003, 0x4062B622, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B623, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B624, 0x4063B820, 0x40646420, 0x00000003, 0x4062B625, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B626, 0x4063B820,
+-	// Block 347, offset 0x56c0
+-	0x40646420, 0x00000003, 0x4062B627, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B628, 0x4063B820, 0x40646420, 0x00000003, 0x4062B629, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B62A, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B62B, 0x4063B820, 0x40646420, 0x00000003, 0x4062B62C, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B62D, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B62E, 0x4063B820, 0x40646420, 0x00000003, 0x4062B621, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062B621, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B622, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B623, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B624, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B625, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B626, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B627, 0x4063B820,
+-	// Block 348, offset 0x5700
+-	0x40648C20, 0x00000003, 0x4062B628, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B629, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B62A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B62B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B62C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B62D, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B62E, 0x4063B820, 0x40648C20, 0x00000002,
+-	0x4062B621, 0x4063BE20, 0x00000002, 0x4062B622, 0x4063BE20, 0x00000002,
+-	0x4062B623, 0x4063BE20, 0x00000002, 0x4062B624, 0x4063BE20, 0x00000002,
+-	0x4062B625, 0x4063BE20, 0x00000002, 0x4062B626, 0x4063BE20, 0x00000002,
+-	0x4062B627, 0x4063BE20, 0x00000002, 0x4062B628, 0x4063BE20, 0x00000002,
+-	0x4062B629, 0x4063BE20, 0x00000002, 0x4062B62A, 0x4063BE20, 0x00000002,
+-	0x4062B62B, 0x4063BE20, 0x00000002, 0x4062B62C,
+-	// Block 349, offset 0x5740
+-	0x4063BE20, 0x00000002, 0x4062B62D, 0x4063BE20, 0x00000002, 0x4062B62E,
+-	0x4063BE20, 0x00000002, 0x4062B62F, 0x4063BE20, 0x00000002, 0x4062B630,
+-	0x4063BE20, 0x00000002, 0x4062B631, 0x4063BE20, 0x00000002, 0x4062B632,
+-	0x4063BE20, 0x00000002, 0x4062B633, 0x4063BE20, 0x00000002, 0x4062B621,
+-	0x4063C020, 0x00000002, 0x4062B622, 0x4063C020, 0x00000002, 0x4062B623,
+-	0x4063C020, 0x00000002, 0x4062B624, 0x4063C020, 0x00000002, 0x4062B625,
+-	0x4063C020, 0x00000002, 0x4062B626, 0x4063C020, 0x00000002, 0x4062B627,
+-	0x4063C020, 0x00000002, 0x4062B628, 0x4063C020, 0x00000002, 0x4062B629,
+-	0x4063C020, 0x00000002, 0x4062B62A, 0x4063C020, 0x00000002, 0x4062B62B,
+-	0x4063C020, 0x00000002, 0x4062B62C, 0x4063C020, 0x00000002, 0x4062B62D,
+-	0x4063C020, 0x00000002, 0x4062B62E, 0x4063C020,
+-	// Block 350, offset 0x5780
+-	0x00000002, 0x4062B62F, 0x4063C020, 0x00000002, 0x4062B630, 0x4063C020,
+-	0x00000002, 0x4062B631, 0x4063C020, 0x00000002, 0x4062B632, 0x4063C020,
+-	0x00000002, 0x4062B633, 0x4063C020, 0x00000002, 0x4062B634, 0x4063C020,
+-	0x00000002, 0x4062B635, 0x4063C020, 0x00000002, 0x4062B636, 0x4063C020,
+-	0x00000002, 0x4062B637, 0x4063C020, 0x00000002, 0x4062B638, 0x4063C020,
+-	0x00000003, 0x4062B621, 0x4063C020, 0x40648C20, 0x00000003, 0x4062B622,
+-	0x4063C020, 0x40648C20, 0x00000002, 0x4062B621, 0x4063C220, 0x00000002,
+-	0x4062B622, 0x4063C220, 0x00000002, 0x4062B623, 0x4063C220, 0x00000002,
+-	0x4062B624, 0x4063C220, 0x00000002, 0x4062B625, 0x4063C220, 0x00000002,
+-	0x4062B626, 0x4063C220, 0x00000002, 0x4062B627, 0x4063C220, 0x00000002,
+-	0x4062B628, 0x4063C220, 0x00000002, 0x4062B629,
+-	// Block 351, offset 0x57c0
+-	0x4063C220, 0x00000002, 0x4062B62A, 0x4063C220, 0x00000002, 0x4062B62B,
+-	0x4063C220, 0x00000002, 0x4062B62C, 0x4063C220, 0x00000002, 0x4062B62D,
+-	0x4063C220, 0x00000002, 0x4062B62E, 0x4063C220, 0x00000002, 0x4062B62F,
+-	0x4063C220, 0x00000002, 0x4062B630, 0x4063C220, 0x00000002, 0x4062B631,
+-	0x4063C220, 0x00000002, 0x4062B632, 0x4063C220, 0x00000002, 0x4062B633,
+-	0x4063C220, 0x00000002, 0x4062B634, 0x4063C220, 0x00000002, 0x4062B621,
+-	0x4063CA20, 0x00000002, 0x4062B622, 0x4063CA20, 0x00000002, 0x4062B623,
+-	0x4063CA20, 0x00000002, 0x4062B624, 0x4063CA20, 0x00000002, 0x4062B625,
+-	0x4063CA20, 0x00000002, 0x4062B626, 0x4063CA20, 0x00000002, 0x4062B627,
+-	0x4063CA20, 0x00000002, 0x4062B628, 0x4063CA20, 0x00000002, 0x4062B629,
+-	0x4063CA20, 0x00000002, 0x4062B62A, 0x4063CA20,
+-	// Block 352, offset 0x5800
+-	0x00000002, 0x4062B62B, 0x4063CA20, 0x00000002, 0x4062B62C, 0x4063CA20,
+-	0x00000002, 0x4062B62D, 0x4063CA20, 0x00000002, 0x4062B62E, 0x4063CA20,
+-	0x00000002, 0x4062B62F, 0x4063CA20, 0x00000002, 0x4062B630, 0x4063CA20,
+-	0x00000002, 0x4062B631, 0x4063CA20, 0x00000002, 0x4062B632, 0x4063CA20,
+-	0x00000002, 0x4062B633, 0x4063CA20, 0x00000003, 0x4062B621, 0x4063CA20,
+-	0x40646420, 0x00000003, 0x4062B622, 0x4063CA20, 0x40646420, 0x00000003,
+-	0x4062B623, 0x4063CA20, 0x40646420, 0x00000003, 0x4062B624, 0x4063CA20,
+-	0x40646420, 0x00000003, 0x4062B621, 0x4063CA20, 0x40646A20, 0x00000003,
+-	0x4062B622, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062B623, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062B624, 0x4063CA20, 0x40646A20, 0x00000003,
+-	0x4062B625, 0x4063CA20, 0x40646A20, 0x00000003,
+-	// Block 353, offset 0x5840
+-	0x4062B626, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062B627, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062B621, 0x4063CA20, 0x40647220, 0x00000003,
+-	0x4062B622, 0x4063CA20, 0x40647220, 0x00000003, 0x4062B623, 0x4063CA20,
+-	0x40647220, 0x00000003, 0x4062B624, 0x4063CA20, 0x40647220, 0x00000003,
+-	0x4062B625, 0x4063CA20, 0x40647220, 0x00000003, 0x4062B621, 0x4063CA20,
+-	0x40648C20, 0x00000003, 0x4062B622, 0x4063CA20, 0x40648C20, 0x00000003,
+-	0x4062B623, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062B621, 0x4063CC20,
+-	0x40646420, 0x00000003, 0x4062B622, 0x4063CC20, 0x40646420, 0x00000003,
+-	0x4062B623, 0x4063CC20, 0x40646420, 0x00000003, 0x4062B621, 0x4063CC20,
+-	0x40648220, 0x00000003, 0x4062B622, 0x4063CC20, 0x40648220, 0x00000003,
+-	0x4062B623, 0x4063CC20, 0x40648220, 0x00000003,
+-	// Block 354, offset 0x5880
+-	0x4062B624, 0x4063CC20, 0x40648220, 0x00000003, 0x4062B621, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B622, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B623, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B624, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B625, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062B626, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062B627, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062B628, 0x4063CC20, 0x40648C20, 0x00000002,
+-	0x4062B621, 0x4063D020, 0x00000002, 0x4062B622, 0x4063D020, 0x00000002,
+-	0x4062B623, 0x4063D020, 0x00000002, 0x4062B624, 0x4063D020, 0x00000002,
+-	0x4062B625, 0x4063D020, 0x00000002, 0x4062B626, 0x4063D020, 0x00000002,
+-	0x4062B627, 0x4063D020, 0x00000002, 0x4062B628, 0x4063D020, 0x00000002,
+-	0x4062B629, 0x4063D020, 0x00000002, 0x4062B62A,
+-	// Block 355, offset 0x58c0
+-	0x4063D020, 0x00000002, 0x4062B62B, 0x4063D020, 0x00000002, 0x4062B62C,
+-	0x4063D020, 0x00000002, 0x4062B62D, 0x4063D020, 0x00000002, 0x4062B62E,
+-	0x4063D020, 0x00000002, 0x4062B62F, 0x4063D020, 0x00000002, 0x4062B630,
+-	0x4063D020, 0x00000002, 0x4062B631, 0x4063D020, 0x00000002, 0x4062B632,
+-	0x4063D020, 0x00000002, 0x4062B633, 0x4063D020, 0x00000002, 0x4062B634,
+-	0x4063D020, 0x00000002, 0x4062B635, 0x4063D020, 0x00000002, 0x4062B636,
+-	0x4063D020, 0x00000002, 0x4062B637, 0x4063D020, 0x00000002, 0x4062B638,
+-	0x4063D020, 0x00000002, 0x4062B639, 0x4063D020, 0x00000002, 0x4062B63A,
+-	0x4063D020, 0x00000002, 0x4062B63B, 0x4063D020, 0x00000002, 0x4062B63C,
+-	0x4063D020, 0x00000002, 0x4062B63D, 0x4063D020, 0x00000002, 0x4062B63E,
+-	0x4063D020, 0x00000002, 0x4062B63F, 0x4063D020,
+-	// Block 356, offset 0x5900
+-	0x00000002, 0x4062B640, 0x4063D020, 0x00000002, 0x4062B641, 0x4063D020,
+-	0x00000002, 0x4062B642, 0x4063D020, 0x00000002, 0x4062B643, 0x4063D020,
+-	0x00000002, 0x4062B644, 0x4063D020, 0x00000002, 0x4062B645, 0x4063D020,
+-	0x00000002, 0x4062B646, 0x4063D020, 0x00000002, 0x4062B647, 0x4063D020,
+-	0x00000003, 0x4062B621, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B622,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B623, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B624, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B625,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B626, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B627, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B628,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B629, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B62A, 0x4063D020, 0x40646A20,
+-	// Block 357, offset 0x5940
+-	0x00000003, 0x4062B62B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B62C,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B62D, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B62E, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B62F,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B630, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B631, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B632,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B633, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062B634, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B635,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062B621, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062B622, 0x4063D020, 0x40648220, 0x00000003, 0x4062B623,
+-	0x4063D020, 0x40648220, 0x00000003, 0x4062B624, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062B625, 0x4063D020, 0x40648220,
+-	// Block 358, offset 0x5980
+-	0x00000003, 0x4062B626, 0x4063D020, 0x40648220, 0x00000003, 0x4062B621,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062B622, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062B623, 0x4063D020, 0x40648420, 0x00000003, 0x4062B624,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062B625, 0x4063D020, 0x40648420,
+-	0x00000002, 0x4062B821, 0x4063A820, 0x00000002, 0x4062B822, 0x4063A820,
+-	0x00000002, 0x4062B823, 0x4063A820, 0x00000002, 0x4062B824, 0x4063A820,
+-	0x00000002, 0x4062B825, 0x4063A820, 0x00000002, 0x4062B826, 0x4063A820,
+-	0x00000002, 0x4062B827, 0x4063A820, 0x00000002, 0x4062B828, 0x4063A820,
+-	0x00000002, 0x4062B829, 0x4063A820, 0x00000002, 0x4062B82A, 0x4063A820,
+-	0x00000002, 0x4062B82B, 0x4063A820, 0x00000002, 0x4062B82C, 0x4063A820,
+-	0x00000002, 0x4062B82D, 0x4063A820, 0x00000002,
+-	// Block 359, offset 0x59c0
+-	0x4062B82E, 0x4063A820, 0x00000003, 0x4062B821, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B822, 0x4063A820, 0x40646420, 0x00000003, 0x4062B823,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062B824, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B825, 0x4063A820, 0x40646420, 0x00000003, 0x4062B826,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062B827, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062B828, 0x4063A820, 0x40646420, 0x00000003, 0x4062B821,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B822, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B823, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B824,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B825, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B826, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B827,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B828,
+-	// Block 360, offset 0x5a00
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B829, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B82A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B82B,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B82C, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B82D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B82E,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B82F, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B830, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B831,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B832, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B833, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B834,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B835, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B836, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B837,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B838,
+-	// Block 361, offset 0x5a40
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B839, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B83A, 0x4063A820, 0x40646A20, 0x00000003, 0x4062B83B,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062B83C, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062B821, 0x4063A820, 0x40647220, 0x00000003, 0x4062B822,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062B823, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062B824, 0x4063A820, 0x40647220, 0x00000003, 0x4062B825,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062B826, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062B827, 0x4063A820, 0x40647220, 0x00000003, 0x4062B828,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062B829, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062B821, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B822,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B823,
+-	// Block 362, offset 0x5a80
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B824, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B825, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B826,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B827, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B828, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B829,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B82A, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B82B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B82C,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B82D, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B82E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B82F,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062B830, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062B831, 0x4063A820, 0x40648C20, 0x00000003, 0x4062B832,
+-	0x4063A820, 0x40648C20, 0x00000002, 0x4062B821,
+-	// Block 363, offset 0x5ac0
+-	0x4063AA20, 0x00000002, 0x4062B822, 0x4063AA20, 0x00000002, 0x4062B823,
+-	0x4063AA20, 0x00000002, 0x4062B824, 0x4063AA20, 0x00000002, 0x4062B825,
+-	0x4063AA20, 0x00000002, 0x4062B826, 0x4063AA20, 0x00000002, 0x4062B827,
+-	0x4063AA20, 0x00000002, 0x4062B828, 0x4063AA20, 0x00000002, 0x4062B829,
+-	0x4063AA20, 0x00000002, 0x4062B82A, 0x4063AA20, 0x00000002, 0x4062B82B,
+-	0x4063AA20, 0x00000002, 0x4062B82C, 0x4063AA20, 0x00000002, 0x4062B82D,
+-	0x4063AA20, 0x00000002, 0x4062B82E, 0x4063AA20, 0x00000002, 0x4062B82F,
+-	0x4063AA20, 0x00000002, 0x4062B830, 0x4063AA20, 0x00000002, 0x4062B831,
+-	0x4063AA20, 0x00000002, 0x4062B832, 0x4063AA20, 0x00000002, 0x4062B833,
+-	0x4063AA20, 0x00000002, 0x4062B834, 0x4063AA20, 0x00000002, 0x4062B835,
+-	0x4063AA20, 0x00000002, 0x4062B836, 0x4063AA20,
+-	// Block 364, offset 0x5b00
+-	0x00000002, 0x4062B837, 0x4063AA20, 0x00000003, 0x4062B821, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062B822, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062B823, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B824, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062B825, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062B826, 0x4063AA20, 0x40646420, 0x00000003, 0x4062B827, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062B828, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062B821, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B822, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062B823, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062B824, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B825, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062B826, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062B827, 0x4063AA20, 0x40648C20, 0x00000003,
+-	// Block 365, offset 0x5b40
+-	0x4062B828, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062B829, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062B82A, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062B821, 0x4063B420, 0x40646420, 0x00000003, 0x4062B822, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062B823, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062B824, 0x4063B420, 0x40646420, 0x00000003, 0x4062B821, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B822, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B823, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B824, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B825, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B826, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B827, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B828, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B829, 0x4063B420, 0x40646A20, 0x00000003,
+-	// Block 366, offset 0x5b80
+-	0x4062B82A, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B82C, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B82D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B82E, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062B82F, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062B830, 0x4063B420, 0x40646A20, 0x00000003, 0x4062B821, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062B822, 0x4063B420, 0x40647220, 0x00000003,
+-	0x4062B823, 0x4063B420, 0x40647220, 0x00000003, 0x4062B824, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062B821, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B822, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B823, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B824, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B825, 0x4063B420, 0x40648C20, 0x00000003,
+-	// Block 367, offset 0x5bc0
+-	0x4062B826, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B827, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B828, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B829, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B82A, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B82B, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B82C, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B82D, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062B82E, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062B82F, 0x4063B420, 0x40648C20, 0x00000003, 0x4062B830, 0x4063B420,
+-	0x40648C20, 0x00000002, 0x4062B821, 0x4063B620, 0x00000002, 0x4062B821,
+-	0x4063B820, 0x00000002, 0x4062B822, 0x4063B820, 0x00000002, 0x4062B823,
+-	0x4063B820, 0x00000002, 0x4062B824, 0x4063B820, 0x00000002, 0x4062B825,
+-	0x4063B820, 0x00000002, 0x4062B826, 0x4063B820,
+-	// Block 368, offset 0x5c00
+-	0x00000002, 0x4062B827, 0x4063B820, 0x00000002, 0x4062B828, 0x4063B820,
+-	0x00000002, 0x4062B829, 0x4063B820, 0x00000002, 0x4062B82A, 0x4063B820,
+-	0x00000002, 0x4062B82B, 0x4063B820, 0x00000002, 0x4062B82C, 0x4063B820,
+-	0x00000002, 0x4062B82D, 0x4063B820, 0x00000002, 0x4062B82E, 0x4063B820,
+-	0x00000002, 0x4062B82F, 0x4063B820, 0x00000002, 0x4062B830, 0x4063B820,
+-	0x00000002, 0x4062B831, 0x4063B820, 0x00000002, 0x4062B832, 0x4063B820,
+-	0x00000002, 0x4062B833, 0x4063B820, 0x00000002, 0x4062B834, 0x4063B820,
+-	0x00000002, 0x4062B835, 0x4063B820, 0x00000002, 0x4062B836, 0x4063B820,
+-	0x00000002, 0x4062B837, 0x4063B820, 0x00000002, 0x4062B838, 0x4063B820,
+-	0x00000002, 0x4062B839, 0x4063B820, 0x00000002, 0x4062B83A, 0x4063B820,
+-	0x00000002, 0x4062B83B, 0x4063B820, 0x00000002,
+-	// Block 369, offset 0x5c40
+-	0x4062B83C, 0x4063B820, 0x00000002, 0x4062B83D, 0x4063B820, 0x00000002,
+-	0x4062B83E, 0x4063B820, 0x00000002, 0x4062B83F, 0x4063B820, 0x00000002,
+-	0x4062B840, 0x4063B820, 0x00000002, 0x4062B841, 0x4063B820, 0x00000002,
+-	0x4062B842, 0x4063B820, 0x00000002, 0x4062B843, 0x4063B820, 0x00000002,
+-	0x4062B844, 0x4063B820, 0x00000002, 0x4062B845, 0x4063B820, 0x00000002,
+-	0x4062B846, 0x4063B820, 0x00000002, 0x4062B847, 0x4063B820, 0x00000003,
+-	0x4062B821, 0x4063B820, 0x40646420, 0x00000003, 0x4062B822, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B823, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B824, 0x4063B820, 0x40646420, 0x00000003, 0x4062B825, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B826, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062B827, 0x4063B820, 0x40646420, 0x00000003,
+-	// Block 370, offset 0x5c80
+-	0x4062B828, 0x4063B820, 0x40646420, 0x00000003, 0x4062B829, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062B821, 0x4063B820, 0x40647220, 0x00000003,
+-	0x4062B822, 0x4063B820, 0x40647220, 0x00000003, 0x4062B821, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B822, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B823, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B824, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B825, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B826, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B827, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B828, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B829, 0x4063B820, 0x40648C20, 0x00000003, 0x4062B82A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062B82B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062B82C, 0x4063B820, 0x40648C20, 0x00000003,
+-	// Block 371, offset 0x5cc0
+-	0x4062B82D, 0x4063B820, 0x40648C20, 0x00000002, 0x4062B821, 0x4063C020,
+-	0x00000002, 0x4062B822, 0x4063C020, 0x00000002, 0x4062B823, 0x4063C020,
+-	0x00000002, 0x4062B824, 0x4063C020, 0x00000002, 0x4062B825, 0x4063C020,
+-	0x00000002, 0x4062B826, 0x4063C020, 0x00000002, 0x4062B827, 0x4063C020,
+-	0x00000002, 0x4062B828, 0x4063C020, 0x00000002, 0x4062B829, 0x4063C020,
+-	0x00000002, 0x4062B82A, 0x4063C020, 0x00000002, 0x4062B82B, 0x4063C020,
+-	0x00000002, 0x4062B82C, 0x4063C020, 0x00000002, 0x4062B82D, 0x4063C020,
+-	0x00000002, 0x4062B82E, 0x4063C020, 0x00000002, 0x4062B82F, 0x4063C020,
+-	0x00000002, 0x4062B830, 0x4063C020, 0x00000002, 0x4062B821, 0x4063C220,
+-	0x00000002, 0x4062B822, 0x4063C220, 0x00000002, 0x4062B823, 0x4063C220,
+-	0x00000002, 0x4062B824, 0x4063C220, 0x00000002,
+-	// Block 372, offset 0x5d00
+-	0x4062B825, 0x4063C220, 0x00000002, 0x4062B826, 0x4063C220, 0x00000002,
+-	0x4062B827, 0x4063C220, 0x00000002, 0x4062B828, 0x4063C220, 0x00000002,
+-	0x4062B829, 0x4063C220, 0x00000002, 0x4062B82A, 0x4063C220, 0x00000002,
+-	0x4062B82B, 0x4063C220, 0x00000002, 0x4062B82C, 0x4063C220, 0x00000002,
+-	0x4062B82D, 0x4063C220, 0x00000002, 0x4062B82E, 0x4063C220, 0x00000002,
+-	0x4062B82F, 0x4063C220, 0x00000002, 0x4062B830, 0x4063C220, 0x00000002,
+-	0x4062B831, 0x4063C220, 0x00000002, 0x4062B832, 0x4063C220, 0x00000002,
+-	0x4062B833, 0x4063C220, 0x00000002, 0x4062B834, 0x4063C220, 0x00000002,
+-	0x4062B835, 0x4063C220, 0x00000002, 0x4062B836, 0x4063C220, 0x00000002,
+-	0x4062B837, 0x4063C220, 0x00000002, 0x4062B838, 0x4063C220, 0x00000002,
+-	0x4062B839, 0x4063C220, 0x00000002, 0x4062B83A,
+-	// Block 373, offset 0x5d40
+-	0x4063C220, 0x00000002, 0x4062B83B, 0x4063C220, 0x00000003, 0x4062B821,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062B822, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062B823, 0x4063C220, 0x40646420, 0x00000003, 0x4062B821,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B822, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B823, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B824,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B825, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B826, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B827,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B828, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B829, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B82A,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B82C, 0x4063C220, 0x40646A20,
+-	// Block 374, offset 0x5d80
+-	0x00000003, 0x4062B82D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B82E,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B82F, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B830, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B831,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062B832, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062B833, 0x4063C220, 0x40646A20, 0x00000003, 0x4062B821,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062B822, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062B823, 0x4063C220, 0x40647220, 0x00000002, 0x4062B821,
+-	0x4063D020, 0x00000002, 0x4062B822, 0x4063D020, 0x00000002, 0x4062B823,
+-	0x4063D020, 0x00000002, 0x4062B824, 0x4063D020, 0x00000002, 0x4062B825,
+-	0x4063D020, 0x00000002, 0x4062B826, 0x4063D020, 0x00000002, 0x4062B827,
+-	0x4063D020, 0x00000002, 0x4062B828, 0x4063D020,
+-	// Block 375, offset 0x5dc0
+-	0x00000002, 0x4062B829, 0x4063D020, 0x00000002, 0x4062B82A, 0x4063D020,
+-	0x00000002, 0x4062B82B, 0x4063D020, 0x00000002, 0x4062B82C, 0x4063D020,
+-	0x00000002, 0x4062B82D, 0x4063D020, 0x00000002, 0x4062B82E, 0x4063D020,
+-	0x00000002, 0x4062B82F, 0x4063D020, 0x00000002, 0x4062B830, 0x4063D020,
+-	0x00000002, 0x4062B831, 0x4063D020, 0x00000002, 0x4062B832, 0x4063D020,
+-	0x00000002, 0x4062B833, 0x4063D020, 0x00000002, 0x4062B834, 0x4063D020,
+-	0x00000002, 0x4062B835, 0x4063D020, 0x00000002, 0x4062B836, 0x4063D020,
+-	0x00000002, 0x4062B837, 0x4063D020, 0x00000002, 0x4062B838, 0x4063D020,
+-	0x00000002, 0x4062B839, 0x4063D020, 0x00000002, 0x4062B83A, 0x4063D020,
+-	0x00000002, 0x4062B83B, 0x4063D020, 0x00000002, 0x4062B83C, 0x4063D020,
+-	0x00000002, 0x4062B83D, 0x4063D020, 0x00000002,
+-	// Block 376, offset 0x5e00
+-	0x4062B83E, 0x4063D020, 0x00000002, 0x4062B83F, 0x4063D020, 0x00000002,
+-	0x4062B840, 0x4063D020, 0x00000002, 0x4062B841, 0x4063D020, 0x00000003,
+-	0x4062B821, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B822, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B823, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B824, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B825, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B826, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B827, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B828, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B829, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B82A, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B82B, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B82C, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B82D, 0x4063D020, 0x40646A20, 0x00000003,
+-	// Block 377, offset 0x5e40
+-	0x4062B82E, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B82F, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B830, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B831, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B832, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B833, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B834, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B835, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062B836, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062B837, 0x4063D020, 0x40646A20, 0x00000003, 0x4062B821, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062B822, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062B823, 0x4063D020, 0x40647220, 0x00000003, 0x4062B824, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062B825, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062BA21, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 378, offset 0x5e80
+-	0x4062BA22, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA23, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA24, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA25, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA26, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA27, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA28, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA29, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA2A, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA2B, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA2C, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA2D, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA2E, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA2F, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA30, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA31, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 379, offset 0x5ec0
+-	0x4062BA32, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA33, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA34, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA35, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA36, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA37, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BA38, 0x4063A820, 0x40646420, 0x00000003, 0x4062BA39, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BA21, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA22, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA23, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA24, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA25, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA26, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA27, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA28, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 380, offset 0x5f00
+-	0x4062BA29, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2A, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA2B, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA2C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA2D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA2E, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA2F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA30, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA31, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA32, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA33, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA34, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA35, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA36, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA37, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA38, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 381, offset 0x5f40
+-	0x4062BA39, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3A, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA3B, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA3C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA3D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA3E, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA3F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BA40, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BA41, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BA21, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA22, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BA23, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BA24, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA25, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BA26, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BA27, 0x4063A820, 0x40647220, 0x00000003,
+-	// Block 382, offset 0x5f80
+-	0x4062BA28, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA29, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BA2A, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BA2B, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA2C, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BA2D, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BA2E, 0x4063A820, 0x40647220, 0x00000003, 0x4062BA2F, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BA30, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BA21, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA22, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA23, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA24, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA25, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA26, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA27, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 383, offset 0x5fc0
+-	0x4062BA28, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA29, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA2A, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA2B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2C, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA2D, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA2E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA2F, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA30, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA31, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA32, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA33, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA34, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA35, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA36, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA37, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 384, offset 0x6000
+-	0x4062BA38, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA39, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA3A, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA3B, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3C, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA3D, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA3E, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA3F, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA40, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA41, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA42, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA43, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA44, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA45, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BA46, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BA47, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 385, offset 0x6040
+-	0x4062BA48, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BA49, 0x4063A820,
+-	0x40648C20, 0x00000002, 0x4062BA21, 0x4063AA20, 0x00000002, 0x4062BA22,
+-	0x4063AA20, 0x00000002, 0x4062BA23, 0x4063AA20, 0x00000002, 0x4062BA24,
+-	0x4063AA20, 0x00000002, 0x4062BA25, 0x4063AA20, 0x00000002, 0x4062BA26,
+-	0x4063AA20, 0x00000002, 0x4062BA27, 0x4063AA20, 0x00000002, 0x4062BA28,
+-	0x4063AA20, 0x00000002, 0x4062BA29, 0x4063AA20, 0x00000002, 0x4062BA2A,
+-	0x4063AA20, 0x00000002, 0x4062BA2B, 0x4063AA20, 0x00000002, 0x4062BA2C,
+-	0x4063AA20, 0x00000002, 0x4062BA2D, 0x4063AA20, 0x00000002, 0x4062BA2E,
+-	0x4063AA20, 0x00000002, 0x4062BA2F, 0x4063AA20, 0x00000002, 0x4062BA30,
+-	0x4063AA20, 0x00000002, 0x4062BA31, 0x4063AA20, 0x00000002, 0x4062BA32,
+-	0x4063AA20, 0x00000002, 0x4062BA33, 0x4063AA20,
+-	// Block 386, offset 0x6080
+-	0x00000002, 0x4062BA34, 0x4063AA20, 0x00000002, 0x4062BA35, 0x4063AA20,
+-	0x00000002, 0x4062BA36, 0x4063AA20, 0x00000002, 0x4062BA37, 0x4063AA20,
+-	0x00000002, 0x4062BA38, 0x4063AA20, 0x00000003, 0x4062BA21, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062BA22, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BA23, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA24, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062BA25, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BA26, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA27, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062BA28, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BA29, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BA21, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BA22, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BA23, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 387, offset 0x60c0
+-	0x4062BA24, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BA26, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BA27, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BA29, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BA2A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2B, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BA2C, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BA2D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BA2E, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BA21, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BA22, 0x4063B020, 0x40647220, 0x00000003, 0x4062BA23, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BA24, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BA25, 0x4063B020, 0x40647220, 0x00000003,
+-	// Block 388, offset 0x6100
+-	0x4062BA26, 0x4063B020, 0x40647220, 0x00000003, 0x4062BA21, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BA22, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BA23, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA24, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BA25, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BA26, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA27, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BA28, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BA29, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA2A, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BA2B, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BA2C, 0x4063B020, 0x40648220, 0x00000003, 0x4062BA21, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062BA22, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062BA21, 0x4063B420, 0x40646420, 0x00000003,
+-	// Block 389, offset 0x6140
+-	0x4062BA22, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA23, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062BA24, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062BA25, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA26, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062BA27, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062BA28, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA29, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062BA2A, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062BA2B, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA2C, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062BA2D, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062BA2E, 0x4063B420, 0x40646420, 0x00000003, 0x4062BA2F, 0x4063B420,
+-	0x40646420, 0x00000003, 0x4062BA30, 0x4063B420, 0x40646420, 0x00000003,
+-	0x4062BA31, 0x4063B420, 0x40646420, 0x00000003,
+-	// Block 390, offset 0x6180
+-	0x4062BA21, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA22, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062BA23, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062BA24, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062BA26, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062BA27, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062BA29, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062BA2A, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2B, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062BA2C, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062BA2D, 0x4063B420, 0x40646A20, 0x00000003, 0x4062BA2E, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062BA2F, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062BA21, 0x4063B420, 0x40647220, 0x00000003,
+-	// Block 391, offset 0x61c0
+-	0x4062BA22, 0x4063B420, 0x40647220, 0x00000003, 0x4062BA23, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062BA24, 0x4063B420, 0x40647220, 0x00000003,
+-	0x4062BA25, 0x4063B420, 0x40647220, 0x00000003, 0x4062BA26, 0x4063B420,
+-	0x40647220, 0x00000003, 0x4062BA21, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA22, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA23, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA24, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA25, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA26, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA27, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA28, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA29, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA2A, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA2B, 0x4063B420, 0x40648C20, 0x00000003,
+-	// Block 392, offset 0x6200
+-	0x4062BA2C, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA2D, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA2E, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA2F, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA30, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA31, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA32, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA33, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA34, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA35, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA36, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062BA37, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062BA38, 0x4063B420, 0x40648C20, 0x00000003, 0x4062BA39, 0x4063B420,
+-	0x40648C20, 0x00000002, 0x4062BA21, 0x4063B820, 0x00000002, 0x4062BA22,
+-	0x4063B820, 0x00000002, 0x4062BA23, 0x4063B820,
+-	// Block 393, offset 0x6240
+-	0x00000002, 0x4062BA24, 0x4063B820, 0x00000002, 0x4062BA25, 0x4063B820,
+-	0x00000002, 0x4062BA26, 0x4063B820, 0x00000002, 0x4062BA27, 0x4063B820,
+-	0x00000002, 0x4062BA28, 0x4063B820, 0x00000002, 0x4062BA29, 0x4063B820,
+-	0x00000002, 0x4062BA2A, 0x4063B820, 0x00000002, 0x4062BA2B, 0x4063B820,
+-	0x00000002, 0x4062BA2C, 0x4063B820, 0x00000002, 0x4062BA2D, 0x4063B820,
+-	0x00000002, 0x4062BA2E, 0x4063B820, 0x00000002, 0x4062BA2F, 0x4063B820,
+-	0x00000002, 0x4062BA30, 0x4063B820, 0x00000002, 0x4062BA31, 0x4063B820,
+-	0x00000002, 0x4062BA32, 0x4063B820, 0x00000002, 0x4062BA33, 0x4063B820,
+-	0x00000002, 0x4062BA34, 0x4063B820, 0x00000002, 0x4062BA35, 0x4063B820,
+-	0x00000002, 0x4062BA36, 0x4063B820, 0x00000002, 0x4062BA37, 0x4063B820,
+-	0x00000003, 0x4062BA21, 0x4063B820, 0x40646420,
+-	// Block 394, offset 0x6280
+-	0x00000003, 0x4062BA22, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA23,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA24, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA25, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA26,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA27, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA28, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA29,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA2A, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA2B, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA2C,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA2D, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA2E, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA2F,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA30, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA31, 0x4063B820, 0x40646420,
+-	// Block 395, offset 0x62c0
+-	0x00000003, 0x4062BA32, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA33,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA34, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA35, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA36,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA37, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA38, 0x4063B820, 0x40646420, 0x00000003, 0x4062BA39,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062BA3A, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062BA21, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BA21,
+-	0x4063B820, 0x40647220, 0x00000003, 0x4062BA21, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA22, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA23,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA24, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA25, 0x4063B820, 0x40648C20,
+-	// Block 396, offset 0x6300
+-	0x00000003, 0x4062BA26, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA27,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA28, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA29, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2A,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2B, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA2C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2D,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA2E, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA2F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA30,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA31, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA32, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BA33,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062BA34, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062BA35, 0x4063B820, 0x40648C20,
+-	// Block 397, offset 0x6340
+-	0x00000003, 0x4062BA36, 0x4063B820, 0x40648C20, 0x00000002, 0x4062BA21,
+-	0x4063C220, 0x00000002, 0x4062BA22, 0x4063C220, 0x00000002, 0x4062BA23,
+-	0x4063C220, 0x00000002, 0x4062BA24, 0x4063C220, 0x00000002, 0x4062BA25,
+-	0x4063C220, 0x00000002, 0x4062BA26, 0x4063C220, 0x00000002, 0x4062BA27,
+-	0x4063C220, 0x00000002, 0x4062BA28, 0x4063C220, 0x00000002, 0x4062BA29,
+-	0x4063C220, 0x00000002, 0x4062BA2A, 0x4063C220, 0x00000002, 0x4062BA2B,
+-	0x4063C220, 0x00000002, 0x4062BA2C, 0x4063C220, 0x00000002, 0x4062BA2D,
+-	0x4063C220, 0x00000002, 0x4062BA2E, 0x4063C220, 0x00000002, 0x4062BA2F,
+-	0x4063C220, 0x00000002, 0x4062BA30, 0x4063C220, 0x00000002, 0x4062BA31,
+-	0x4063C220, 0x00000002, 0x4062BA32, 0x4063C220, 0x00000002, 0x4062BA33,
+-	0x4063C220, 0x00000002, 0x4062BA34, 0x4063C220,
+-	// Block 398, offset 0x6380
+-	0x00000002, 0x4062BA35, 0x4063C220, 0x00000002, 0x4062BA36, 0x4063C220,
+-	0x00000002, 0x4062BA37, 0x4063C220, 0x00000002, 0x4062BA38, 0x4063C220,
+-	0x00000002, 0x4062BA39, 0x4063C220, 0x00000002, 0x4062BA3A, 0x4063C220,
+-	0x00000002, 0x4062BA3B, 0x4063C220, 0x00000002, 0x4062BA3C, 0x4063C220,
+-	0x00000002, 0x4062BA3D, 0x4063C220, 0x00000002, 0x4062BA3E, 0x4063C220,
+-	0x00000002, 0x4062BA3F, 0x4063C220, 0x00000002, 0x4062BA40, 0x4063C220,
+-	0x00000002, 0x4062BA41, 0x4063C220, 0x00000002, 0x4062BA42, 0x4063C220,
+-	0x00000002, 0x4062BA43, 0x4063C220, 0x00000002, 0x4062BA44, 0x4063C220,
+-	0x00000002, 0x4062BA45, 0x4063C220, 0x00000002, 0x4062BA46, 0x4063C220,
+-	0x00000002, 0x4062BA47, 0x4063C220, 0x00000002, 0x4062BA48, 0x4063C220,
+-	0x00000002, 0x4062BA49, 0x4063C220, 0x00000002,
+-	// Block 399, offset 0x63c0
+-	0x4062BA4A, 0x4063C220, 0x00000002, 0x4062BA4B, 0x4063C220, 0x00000002,
+-	0x4062BA4C, 0x4063C220, 0x00000002, 0x4062BA4D, 0x4063C220, 0x00000002,
+-	0x4062BA4E, 0x4063C220, 0x00000002, 0x4062BA4F, 0x4063C220, 0x00000002,
+-	0x4062BA50, 0x4063C220, 0x00000002, 0x4062BA51, 0x4063C220, 0x00000002,
+-	0x4062BA52, 0x4063C220, 0x00000002, 0x4062BA53, 0x4063C220, 0x00000002,
+-	0x4062BA54, 0x4063C220, 0x00000002, 0x4062BA55, 0x4063C220, 0x00000002,
+-	0x4062BA56, 0x4063C220, 0x00000002, 0x4062BA57, 0x4063C220, 0x00000002,
+-	0x4062BA58, 0x4063C220, 0x00000002, 0x4062BA59, 0x4063C220, 0x00000002,
+-	0x4062BA5A, 0x4063C220, 0x00000002, 0x4062BA5B, 0x4063C220, 0x00000002,
+-	0x4062BA5C, 0x4063C220, 0x00000002, 0x4062BA5D, 0x4063C220, 0x00000002,
+-	0x4062BA5E, 0x4063C220, 0x00000002, 0x4062BA5F,
+-	// Block 400, offset 0x6400
+-	0x4063C220, 0x00000002, 0x4062BA60, 0x4063C220, 0x00000002, 0x4062BA61,
+-	0x4063C220, 0x00000002, 0x4062BA62, 0x4063C220, 0x00000002, 0x4062BA63,
+-	0x4063C220, 0x00000002, 0x4062BA64, 0x4063C220, 0x00000002, 0x4062BA65,
+-	0x4063C220, 0x00000003, 0x4062BA21, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062BA21, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA22, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA23, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA24, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA25, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA26, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA27, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA28, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA29, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA2A, 0x4063C220, 0x40646A20, 0x00000003,
+-	// Block 401, offset 0x6440
+-	0x4062BA2B, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2C, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA2D, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA2E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA2F, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA30, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA31, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA32, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA33, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA34, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA35, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA36, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA37, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA38, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA39, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA3A, 0x4063C220, 0x40646A20, 0x00000003,
+-	// Block 402, offset 0x6480
+-	0x4062BA3B, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3C, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA3D, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA3E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA3F, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA40, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA41, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA42, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA43, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA44, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BA45, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062BA46, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062BA21, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA22, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062BA23, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062BA24, 0x4063C220, 0x40647220, 0x00000003,
+-	// Block 403, offset 0x64c0
+-	0x4062BA25, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA26, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062BA27, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062BA28, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA29, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062BA2A, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062BA2B, 0x4063C220, 0x40647220, 0x00000003, 0x4062BA2C, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062BA21, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062BA22, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BA23, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062BA24, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062BA25, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BA26, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062BA27, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062BA28, 0x4063C220, 0x40648C20, 0x00000003,
+-	// Block 404, offset 0x6500
+-	0x4062BA29, 0x4063C220, 0x40648C20, 0x00000002, 0x4062BA21, 0x4063D020,
+-	0x00000002, 0x4062BA22, 0x4063D020, 0x00000002, 0x4062BA23, 0x4063D020,
+-	0x00000002, 0x4062BA24, 0x4063D020, 0x00000002, 0x4062BA25, 0x4063D020,
+-	0x00000002, 0x4062BA26, 0x4063D020, 0x00000002, 0x4062BA27, 0x4063D020,
+-	0x00000002, 0x4062BA28, 0x4063D020, 0x00000002, 0x4062BA29, 0x4063D020,
+-	0x00000002, 0x4062BA2A, 0x4063D020, 0x00000002, 0x4062BA2B, 0x4063D020,
+-	0x00000002, 0x4062BA2C, 0x4063D020, 0x00000002, 0x4062BA2D, 0x4063D020,
+-	0x00000002, 0x4062BA2E, 0x4063D020, 0x00000002, 0x4062BA2F, 0x4063D020,
+-	0x00000002, 0x4062BA30, 0x4063D020, 0x00000002, 0x4062BA31, 0x4063D020,
+-	0x00000002, 0x4062BA32, 0x4063D020, 0x00000002, 0x4062BA33, 0x4063D020,
+-	0x00000002, 0x4062BA34, 0x4063D020, 0x00000002,
+-	// Block 405, offset 0x6540
+-	0x4062BA35, 0x4063D020, 0x00000002, 0x4062BA36, 0x4063D020, 0x00000002,
+-	0x4062BA37, 0x4063D020, 0x00000002, 0x4062BA38, 0x4063D020, 0x00000002,
+-	0x4062BA39, 0x4063D020, 0x00000002, 0x4062BA3A, 0x4063D020, 0x00000002,
+-	0x4062BA3B, 0x4063D020, 0x00000002, 0x4062BA3C, 0x4063D020, 0x00000002,
+-	0x4062BA3D, 0x4063D020, 0x00000002, 0x4062BA3E, 0x4063D020, 0x00000002,
+-	0x4062BA3F, 0x4063D020, 0x00000002, 0x4062BA40, 0x4063D020, 0x00000002,
+-	0x4062BA41, 0x4063D020, 0x00000002, 0x4062BA42, 0x4063D020, 0x00000002,
+-	0x4062BA43, 0x4063D020, 0x00000002, 0x4062BA44, 0x4063D020, 0x00000002,
+-	0x4062BA45, 0x4063D020, 0x00000002, 0x4062BA46, 0x4063D020, 0x00000002,
+-	0x4062BA47, 0x4063D020, 0x00000002, 0x4062BA48, 0x4063D020, 0x00000002,
+-	0x4062BA49, 0x4063D020, 0x00000002, 0x4062BA4A,
+-	// Block 406, offset 0x6580
+-	0x4063D020, 0x00000002, 0x4062BA4B, 0x4063D020, 0x00000002, 0x4062BA4C,
+-	0x4063D020, 0x00000002, 0x4062BA4D, 0x4063D020, 0x00000002, 0x4062BA4E,
+-	0x4063D020, 0x00000002, 0x4062BA4F, 0x4063D020, 0x00000002, 0x4062BA50,
+-	0x4063D020, 0x00000002, 0x4062BA51, 0x4063D020, 0x00000002, 0x4062BA52,
+-	0x4063D020, 0x00000002, 0x4062BA53, 0x4063D020, 0x00000002, 0x4062BA54,
+-	0x4063D020, 0x00000002, 0x4062BA55, 0x4063D020, 0x00000002, 0x4062BA56,
+-	0x4063D020, 0x00000002, 0x4062BA57, 0x4063D020, 0x00000002, 0x4062BA58,
+-	0x4063D020, 0x00000002, 0x4062BA59, 0x4063D020, 0x00000002, 0x4062BA5A,
+-	0x4063D020, 0x00000002, 0x4062BA5B, 0x4063D020, 0x00000002, 0x4062BA5C,
+-	0x4063D020, 0x00000002, 0x4062BA5D, 0x4063D020, 0x00000002, 0x4062BA5E,
+-	0x4063D020, 0x00000002, 0x4062BA5F, 0x4063D020,
+-	// Block 407, offset 0x65c0
+-	0x00000002, 0x4062BA60, 0x4063D020, 0x00000002, 0x4062BA61, 0x4063D020,
+-	0x00000002, 0x4062BA62, 0x4063D020, 0x00000002, 0x4062BA63, 0x4063D020,
+-	0x00000002, 0x4062BA64, 0x4063D020, 0x00000002, 0x4062BA65, 0x4063D020,
+-	0x00000002, 0x4062BA66, 0x4063D020, 0x00000002, 0x4062BA67, 0x4063D020,
+-	0x00000002, 0x4062BA68, 0x4063D020, 0x00000002, 0x4062BA69, 0x4063D020,
+-	0x00000002, 0x4062BA6A, 0x4063D020, 0x00000002, 0x4062BA6B, 0x4063D020,
+-	0x00000002, 0x4062BA6C, 0x4063D020, 0x00000002, 0x4062BA6D, 0x4063D020,
+-	0x00000002, 0x4062BA6E, 0x4063D020, 0x00000002, 0x4062BA6F, 0x4063D020,
+-	0x00000002, 0x4062BA70, 0x4063D020, 0x00000002, 0x4062BA71, 0x4063D020,
+-	0x00000002, 0x4062BA72, 0x4063D020, 0x00000002, 0x4062BA73, 0x4063D020,
+-	0x00000002, 0x4062BA74, 0x4063D020, 0x00000002,
+-	// Block 408, offset 0x6600
+-	0x4062BA75, 0x4063D020, 0x00000003, 0x4062BA21, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA22, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA23,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA24, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA25, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA26,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA27, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA28, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA29,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA2A, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA2B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA2C,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA2D, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA2E, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA2F,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA30,
+-	// Block 409, offset 0x6640
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA31, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA32, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA33,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA34, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA35, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA36,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA37, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA38, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA39,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BA3A, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BA3B, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BA21,
+-	0x4063D020, 0x40648C20, 0x00000003, 0x4062BA22, 0x4063D020, 0x40648C20,
+-	0x00000003, 0x4062BA23, 0x4063D020, 0x40648C20, 0x00000003, 0x4062BA24,
+-	0x4063D020, 0x40648C20, 0x00000003, 0x4062BA25,
+-	// Block 410, offset 0x6680
+-	0x4063D020, 0x40648C20, 0x00000003, 0x4062BA26, 0x4063D020, 0x40648C20,
+-	0x00000003, 0x4062BA27, 0x4063D020, 0x40648C20, 0x00000003, 0x4062BA28,
+-	0x4063D020, 0x40648C20, 0x00000002, 0x4062BE21, 0x4063A820, 0x00000002,
+-	0x4062BE22, 0x4063A820, 0x00000002, 0x4062BE23, 0x4063A820, 0x00000002,
+-	0x4062BE24, 0x4063A820, 0x00000002, 0x4062BE25, 0x4063A820, 0x00000002,
+-	0x4062BE26, 0x4063A820, 0x00000002, 0x4062BE27, 0x4063A820, 0x00000002,
+-	0x4062BE28, 0x4063A820, 0x00000002, 0x4062BE29, 0x4063A820, 0x00000002,
+-	0x4062BE2A, 0x4063A820, 0x00000002, 0x4062BE2B, 0x4063A820, 0x00000002,
+-	0x4062BE2C, 0x4063A820, 0x00000002, 0x4062BE2D, 0x4063A820, 0x00000002,
+-	0x4062BE2E, 0x4063A820, 0x00000002, 0x4062BE2F, 0x4063A820, 0x00000002,
+-	0x4062BE30, 0x4063A820, 0x00000002, 0x4062BE31,
+-	// Block 411, offset 0x66c0
+-	0x4063A820, 0x00000002, 0x4062BE32, 0x4063A820, 0x00000002, 0x4062BE33,
+-	0x4063A820, 0x00000002, 0x4062BE34, 0x4063A820, 0x00000002, 0x4062BE35,
+-	0x4063A820, 0x00000002, 0x4062BE36, 0x4063A820, 0x00000002, 0x4062BE37,
+-	0x4063A820, 0x00000002, 0x4062BE38, 0x4063A820, 0x00000002, 0x4062BE39,
+-	0x4063A820, 0x00000002, 0x4062BE3A, 0x4063A820, 0x00000002, 0x4062BE3B,
+-	0x4063A820, 0x00000002, 0x4062BE3C, 0x4063A820, 0x00000002, 0x4062BE3D,
+-	0x4063A820, 0x00000002, 0x4062BE3E, 0x4063A820, 0x00000002, 0x4062BE3F,
+-	0x4063A820, 0x00000002, 0x4062BE40, 0x4063A820, 0x00000002, 0x4062BE41,
+-	0x4063A820, 0x00000002, 0x4062BE42, 0x4063A820, 0x00000002, 0x4062BE43,
+-	0x4063A820, 0x00000002, 0x4062BE44, 0x4063A820, 0x00000002, 0x4062BE45,
+-	0x4063A820, 0x00000002, 0x4062BE46, 0x4063A820,
+-	// Block 412, offset 0x6700
+-	0x00000002, 0x4062BE47, 0x4063A820, 0x00000002, 0x4062BE48, 0x4063A820,
+-	0x00000002, 0x4062BE49, 0x4063A820, 0x00000002, 0x4062BE4A, 0x4063A820,
+-	0x00000002, 0x4062BE4B, 0x4063A820, 0x00000002, 0x4062BE4C, 0x4063A820,
+-	0x00000002, 0x4062BE4D, 0x4063A820, 0x00000002, 0x4062BE4E, 0x4063A820,
+-	0x00000002, 0x4062BE4F, 0x4063A820, 0x00000002, 0x4062BE50, 0x4063A820,
+-	0x00000002, 0x4062BE51, 0x4063A820, 0x00000002, 0x4062BE52, 0x4063A820,
+-	0x00000002, 0x4062BE53, 0x4063A820, 0x00000002, 0x4062BE54, 0x4063A820,
+-	0x00000002, 0x4062BE55, 0x4063A820, 0x00000002, 0x4062BE56, 0x4063A820,
+-	0x00000002, 0x4062BE57, 0x4063A820, 0x00000002, 0x4062BE58, 0x4063A820,
+-	0x00000002, 0x4062BE59, 0x4063A820, 0x00000002, 0x4062BE5A, 0x4063A820,
+-	0x00000002, 0x4062BE5B, 0x4063A820, 0x00000002,
+-	// Block 413, offset 0x6740
+-	0x4062BE5C, 0x4063A820, 0x00000002, 0x4062BE5D, 0x4063A820, 0x00000002,
+-	0x4062BE5E, 0x4063A820, 0x00000002, 0x4062BE5F, 0x4063A820, 0x00000002,
+-	0x4062BE60, 0x4063A820, 0x00000002, 0x4062BE61, 0x4063A820, 0x00000002,
+-	0x4062BE62, 0x4063A820, 0x00000002, 0x4062BE63, 0x4063A820, 0x00000002,
+-	0x4062BE64, 0x4063A820, 0x00000002, 0x4062BE65, 0x4063A820, 0x00000002,
+-	0x4062BE66, 0x4063A820, 0x00000002, 0x4062BE67, 0x4063A820, 0x00000002,
+-	0x4062BE68, 0x4063A820, 0x00000002, 0x4062BE69, 0x4063A820, 0x00000002,
+-	0x4062BE6A, 0x4063A820, 0x00000002, 0x4062BE6B, 0x4063A820, 0x00000002,
+-	0x4062BE6C, 0x4063A820, 0x00000002, 0x4062BE6D, 0x4063A820, 0x00000002,
+-	0x4062BE6E, 0x4063A820, 0x00000002, 0x4062BE6F, 0x4063A820, 0x00000003,
+-	0x4062BE21, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 414, offset 0x6780
+-	0x4062BE22, 0x4063A820, 0x40646420, 0x00000003, 0x4062BE23, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BE24, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062BE25, 0x4063A820, 0x40646420, 0x00000003, 0x4062BE26, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062BE21, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE22, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE23, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE24, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE25, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE26, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE27, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE28, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE29, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE2A, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE2B, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 415, offset 0x67c0
+-	0x4062BE2C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE2D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE2E, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE2F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE30, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE31, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE32, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE33, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE34, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE35, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE36, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062BE37, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062BE38, 0x4063A820, 0x40646A20, 0x00000003, 0x4062BE21, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BE22, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062BE23, 0x4063A820, 0x40647220, 0x00000003,
+-	// Block 416, offset 0x6800
+-	0x4062BE24, 0x4063A820, 0x40647220, 0x00000003, 0x4062BE25, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062BE21, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062BE22, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE23, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062BE24, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062BE25, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE26, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062BE27, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062BE28, 0x4063A820, 0x40648220, 0x00000003, 0x4062BE29, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062BE2A, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062BE21, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE22, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062BE23, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062BE24, 0x4063A820, 0x40648420, 0x00000003,
+-	// Block 417, offset 0x6840
+-	0x4062BE25, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE26, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062BE27, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062BE28, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE29, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062BE2A, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062BE2B, 0x4063A820, 0x40648420, 0x00000003, 0x4062BE21, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE22, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE23, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE25, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE26, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE28, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE29, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 418, offset 0x6880
+-	0x4062BE2A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2B, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE2C, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE2D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE2E, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE2F, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE30, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE31, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE32, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE33, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE34, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE35, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE36, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE37, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE38, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE39, 0x4063A820, 0x40648C20, 0x00000003,
+-	// Block 419, offset 0x68c0
+-	0x4062BE3A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3B, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE3C, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE3D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE3E, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE3F, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE40, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE41, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE42, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE43, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE44, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE45, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062BE46, 0x4063A820, 0x40648C20, 0x00000003, 0x4062BE47, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062BE48, 0x4063A820, 0x40648C20, 0x00000002,
+-	0x4062BE21, 0x4063AA20, 0x00000002, 0x4062BE22,
+-	// Block 420, offset 0x6900
+-	0x4063AA20, 0x00000002, 0x4062BE23, 0x4063AA20, 0x00000002, 0x4062BE24,
+-	0x4063AA20, 0x00000003, 0x4062BE21, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BE22, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BE23, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062BE24, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BE25, 0x4063AA20, 0x40646420, 0x00000003, 0x4062BE26, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062BE27, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062BE21, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062BE22, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062BE23, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062BE24, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062BE25, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062BE26, 0x4063AA20, 0x40648C20, 0x00000002,
+-	0x4062BE21, 0x4063B020, 0x00000002, 0x4062BE22,
+-	// Block 421, offset 0x6940
+-	0x4063B020, 0x00000002, 0x4062BE23, 0x4063B020, 0x00000002, 0x4062BE24,
+-	0x4063B020, 0x00000002, 0x4062BE25, 0x4063B020, 0x00000002, 0x4062BE26,
+-	0x4063B020, 0x00000002, 0x4062BE27, 0x4063B020, 0x00000002, 0x4062BE28,
+-	0x4063B020, 0x00000002, 0x4062BE29, 0x4063B020, 0x00000002, 0x4062BE2A,
+-	0x4063B020, 0x00000002, 0x4062BE2B, 0x4063B020, 0x00000002, 0x4062BE2C,
+-	0x4063B020, 0x00000002, 0x4062BE2D, 0x4063B020, 0x00000002, 0x4062BE2E,
+-	0x4063B020, 0x00000002, 0x4062BE2F, 0x4063B020, 0x00000002, 0x4062BE30,
+-	0x4063B020, 0x00000002, 0x4062BE31, 0x4063B020, 0x00000002, 0x4062BE32,
+-	0x4063B020, 0x00000002, 0x4062BE33, 0x4063B020, 0x00000002, 0x4062BE34,
+-	0x4063B020, 0x00000002, 0x4062BE35, 0x4063B020, 0x00000002, 0x4062BE36,
+-	0x4063B020, 0x00000002, 0x4062BE37, 0x4063B020,
+-	// Block 422, offset 0x6980
+-	0x00000002, 0x4062BE38, 0x4063B020, 0x00000002, 0x4062BE39, 0x4063B020,
+-	0x00000002, 0x4062BE3A, 0x4063B020, 0x00000002, 0x4062BE3B, 0x4063B020,
+-	0x00000002, 0x4062BE3C, 0x4063B020, 0x00000002, 0x4062BE3D, 0x4063B020,
+-	0x00000002, 0x4062BE3E, 0x4063B020, 0x00000002, 0x4062BE3F, 0x4063B020,
+-	0x00000002, 0x4062BE40, 0x4063B020, 0x00000002, 0x4062BE41, 0x4063B020,
+-	0x00000002, 0x4062BE42, 0x4063B020, 0x00000002, 0x4062BE43, 0x4063B020,
+-	0x00000002, 0x4062BE44, 0x4063B020, 0x00000002, 0x4062BE45, 0x4063B020,
+-	0x00000002, 0x4062BE46, 0x4063B020, 0x00000002, 0x4062BE47, 0x4063B020,
+-	0x00000002, 0x4062BE48, 0x4063B020, 0x00000003, 0x4062BE21, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE22, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE23, 0x4063B020, 0x40646420, 0x00000003,
+-	// Block 423, offset 0x69c0
+-	0x4062BE24, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE25, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE26, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE27, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE28, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE29, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE2A, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE2B, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE2C, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE2D, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE2E, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE2F, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE30, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE31, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE32, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE33, 0x4063B020, 0x40646420, 0x00000003,
+-	// Block 424, offset 0x6a00
+-	0x4062BE34, 0x4063B020, 0x40646420, 0x00000003, 0x4062BE35, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062BE36, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062BE21, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE22, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE23, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE24, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE26, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE27, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE29, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE2A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2B, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE2C, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE2D, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 425, offset 0x6a40
+-	0x4062BE2E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE2F, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE30, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE31, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE32, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE33, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE34, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE35, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE36, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE37, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE38, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE39, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE3A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3B, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE3C, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE3D, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 426, offset 0x6a80
+-	0x4062BE3E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE3F, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE40, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE41, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE42, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE43, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE44, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE45, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE46, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE47, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE48, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE49, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE4A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4B, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE4C, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE4D, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 427, offset 0x6ac0
+-	0x4062BE4E, 0x4063B020, 0x40646A20, 0x00000003, 0x4062BE4F, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062BE50, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062BE21, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE22, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE23, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE24, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE25, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE26, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE27, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE28, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE29, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE2A, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE2B, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE2C, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE2D, 0x4063B020, 0x40647220, 0x00000003,
+-	// Block 428, offset 0x6b00
+-	0x4062BE2E, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE2F, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE30, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE31, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE32, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE33, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062BE34, 0x4063B020, 0x40647220, 0x00000003, 0x4062BE35, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062BE21, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BE22, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE23, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BE24, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BE25, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE26, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BE27, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BE28, 0x4063B020, 0x40648220, 0x00000003,
+-	// Block 429, offset 0x6b40
+-	0x4062BE29, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE2A, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BE2B, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BE2C, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE2D, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062BE2E, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062BE2F, 0x4063B020, 0x40648220, 0x00000003, 0x4062BE21, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062BE22, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062BE23, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE24, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062BE25, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062BE26, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE27, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062BE28, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062BE29, 0x4063B020, 0x40648420, 0x00000003,
+-	// Block 430, offset 0x6b80
+-	0x4062BE2A, 0x4063B020, 0x40648420, 0x00000003, 0x4062BE21, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE22, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE23, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE25, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE26, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE28, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE29, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE2A, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE2B, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE2C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE2D, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE2E, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE2F, 0x4063B020, 0x40648C20, 0x00000003,
+-	// Block 431, offset 0x6bc0
+-	0x4062BE30, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE31, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062BE32, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062BE33, 0x4063B020, 0x40648C20, 0x00000003, 0x4062BE34, 0x4063B020,
+-	0x40648C20, 0x00000002, 0x4062BE21, 0x4063B220, 0x00000002, 0x4062BE22,
+-	0x4063B220, 0x00000002, 0x4062BE23, 0x4063B220, 0x00000002, 0x4062BE24,
+-	0x4063B220, 0x00000002, 0x4062BE25, 0x4063B220, 0x00000002, 0x4062BE26,
+-	0x4063B220, 0x00000002, 0x4062BE27, 0x4063B220, 0x00000002, 0x4062BE28,
+-	0x4063B220, 0x00000002, 0x4062BE29, 0x4063B220, 0x00000002, 0x4062BE2A,
+-	0x4063B220, 0x00000002, 0x4062BE2B, 0x4063B220, 0x00000002, 0x4062BE2C,
+-	0x4063B220, 0x00000002, 0x4062BE21, 0x4063B820, 0x00000002, 0x4062BE22,
+-	0x4063B820, 0x00000002, 0x4062BE23, 0x4063B820,
+-	// Block 432, offset 0x6c00
+-	0x00000002, 0x4062BE24, 0x4063B820, 0x00000002, 0x4062BE25, 0x4063B820,
+-	0x00000002, 0x4062BE26, 0x4063B820, 0x00000002, 0x4062BE27, 0x4063B820,
+-	0x00000002, 0x4062BE28, 0x4063B820, 0x00000002, 0x4062BE29, 0x4063B820,
+-	0x00000002, 0x4062BE2A, 0x4063B820, 0x00000002, 0x4062BE2B, 0x4063B820,
+-	0x00000002, 0x4062BE2C, 0x4063B820, 0x00000002, 0x4062BE2D, 0x4063B820,
+-	0x00000002, 0x4062BE2E, 0x4063B820, 0x00000002, 0x4062BE2F, 0x4063B820,
+-	0x00000002, 0x4062BE30, 0x4063B820, 0x00000002, 0x4062BE31, 0x4063B820,
+-	0x00000002, 0x4062BE32, 0x4063B820, 0x00000002, 0x4062BE33, 0x4063B820,
+-	0x00000002, 0x4062BE34, 0x4063B820, 0x00000002, 0x4062BE35, 0x4063B820,
+-	0x00000002, 0x4062BE36, 0x4063B820, 0x00000002, 0x4062BE37, 0x4063B820,
+-	0x00000002, 0x4062BE38, 0x4063B820, 0x00000002,
+-	// Block 433, offset 0x6c40
+-	0x4062BE39, 0x4063B820, 0x00000002, 0x4062BE3A, 0x4063B820, 0x00000002,
+-	0x4062BE3B, 0x4063B820, 0x00000002, 0x4062BE3C, 0x4063B820, 0x00000002,
+-	0x4062BE3D, 0x4063B820, 0x00000002, 0x4062BE3E, 0x4063B820, 0x00000002,
+-	0x4062BE3F, 0x4063B820, 0x00000002, 0x4062BE40, 0x4063B820, 0x00000002,
+-	0x4062BE41, 0x4063B820, 0x00000002, 0x4062BE42, 0x4063B820, 0x00000002,
+-	0x4062BE43, 0x4063B820, 0x00000002, 0x4062BE44, 0x4063B820, 0x00000002,
+-	0x4062BE45, 0x4063B820, 0x00000002, 0x4062BE46, 0x4063B820, 0x00000002,
+-	0x4062BE47, 0x4063B820, 0x00000002, 0x4062BE48, 0x4063B820, 0x00000002,
+-	0x4062BE49, 0x4063B820, 0x00000002, 0x4062BE4A, 0x4063B820, 0x00000002,
+-	0x4062BE4B, 0x4063B820, 0x00000002, 0x4062BE4C, 0x4063B820, 0x00000002,
+-	0x4062BE4D, 0x4063B820, 0x00000002, 0x4062BE4E,
+-	// Block 434, offset 0x6c80
+-	0x4063B820, 0x00000002, 0x4062BE4F, 0x4063B820, 0x00000002, 0x4062BE50,
+-	0x4063B820, 0x00000002, 0x4062BE51, 0x4063B820, 0x00000002, 0x4062BE52,
+-	0x4063B820, 0x00000002, 0x4062BE53, 0x4063B820, 0x00000002, 0x4062BE54,
+-	0x4063B820, 0x00000002, 0x4062BE55, 0x4063B820, 0x00000002, 0x4062BE56,
+-	0x4063B820, 0x00000002, 0x4062BE57, 0x4063B820, 0x00000002, 0x4062BE58,
+-	0x4063B820, 0x00000002, 0x4062BE59, 0x4063B820, 0x00000002, 0x4062BE5A,
+-	0x4063B820, 0x00000002, 0x4062BE5B, 0x4063B820, 0x00000002, 0x4062BE5C,
+-	0x4063B820, 0x00000003, 0x4062BE21, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062BE22, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE23, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062BE24, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062BE25, 0x4063B820, 0x40646420, 0x00000003,
+-	// Block 435, offset 0x6cc0
+-	0x4062BE26, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE27, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062BE28, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062BE29, 0x4063B820, 0x40646420, 0x00000003, 0x4062BE2A, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062BE2B, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062BE21, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BE22, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062BE23, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062BE24, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062BE26, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062BE27, 0x4063B820, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062BE21, 0x4063B820, 0x40647220, 0x00000003,
+-	0x4062BE22, 0x4063B820, 0x40647220, 0x00000003,
+-	// Block 436, offset 0x6d00
+-	0x4062BE23, 0x4063B820, 0x40647220, 0x00000003, 0x4062BE21, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062BE22, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062BE23, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE24, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062BE25, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062BE26, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE27, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062BE28, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062BE29, 0x4063B820, 0x40648C20, 0x00000003, 0x4062BE2A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062BE2B, 0x4063B820, 0x40648C20, 0x00000002,
+-	0x4062BE21, 0x4063BC20, 0x00000002, 0x4062BE22, 0x4063BC20, 0x00000002,
+-	0x4062BE23, 0x4063BC20, 0x00000002, 0x4062BE24, 0x4063BC20, 0x00000002,
+-	0x4062BE25, 0x4063BC20, 0x00000002, 0x4062BE26,
+-	// Block 437, offset 0x6d40
+-	0x4063BC20, 0x00000002, 0x4062BE27, 0x4063BC20, 0x00000002, 0x4062BE21,
+-	0x4063BE20, 0x00000002, 0x4062BE22, 0x4063BE20, 0x00000002, 0x4062BE21,
+-	0x4063C220, 0x00000002, 0x4062BE22, 0x4063C220, 0x00000002, 0x4062BE23,
+-	0x4063C220, 0x00000002, 0x4062BE24, 0x4063C220, 0x00000002, 0x4062BE25,
+-	0x4063C220, 0x00000002, 0x4062BE26, 0x4063C220, 0x00000002, 0x4062BE27,
+-	0x4063C220, 0x00000002, 0x4062BE28, 0x4063C220, 0x00000002, 0x4062BE29,
+-	0x4063C220, 0x00000002, 0x4062BE2A, 0x4063C220, 0x00000002, 0x4062BE2B,
+-	0x4063C220, 0x00000002, 0x4062BE2C, 0x4063C220, 0x00000002, 0x4062BE2D,
+-	0x4063C220, 0x00000002, 0x4062BE2E, 0x4063C220, 0x00000002, 0x4062BE2F,
+-	0x4063C220, 0x00000002, 0x4062BE30, 0x4063C220, 0x00000002, 0x4062BE31,
+-	0x4063C220, 0x00000002, 0x4062BE32, 0x4063C220,
+-	// Block 438, offset 0x6d80
+-	0x00000002, 0x4062BE33, 0x4063C220, 0x00000002, 0x4062BE34, 0x4063C220,
+-	0x00000002, 0x4062BE35, 0x4063C220, 0x00000002, 0x4062BE36, 0x4063C220,
+-	0x00000002, 0x4062BE37, 0x4063C220, 0x00000002, 0x4062BE38, 0x4063C220,
+-	0x00000002, 0x4062BE39, 0x4063C220, 0x00000002, 0x4062BE3A, 0x4063C220,
+-	0x00000002, 0x4062BE3B, 0x4063C220, 0x00000002, 0x4062BE3C, 0x4063C220,
+-	0x00000002, 0x4062BE3D, 0x4063C220, 0x00000002, 0x4062BE3E, 0x4063C220,
+-	0x00000002, 0x4062BE3F, 0x4063C220, 0x00000002, 0x4062BE40, 0x4063C220,
+-	0x00000002, 0x4062BE41, 0x4063C220, 0x00000002, 0x4062BE42, 0x4063C220,
+-	0x00000002, 0x4062BE43, 0x4063C220, 0x00000002, 0x4062BE44, 0x4063C220,
+-	0x00000002, 0x4062BE45, 0x4063C220, 0x00000002, 0x4062BE46, 0x4063C220,
+-	0x00000002, 0x4062BE47, 0x4063C220, 0x00000002,
+-	// Block 439, offset 0x6dc0
+-	0x4062BE48, 0x4063C220, 0x00000002, 0x4062BE49, 0x4063C220, 0x00000002,
+-	0x4062BE4A, 0x4063C220, 0x00000002, 0x4062BE4B, 0x4063C220, 0x00000002,
+-	0x4062BE4C, 0x4063C220, 0x00000002, 0x4062BE4D, 0x4063C220, 0x00000002,
+-	0x4062BE4E, 0x4063C220, 0x00000002, 0x4062BE4F, 0x4063C220, 0x00000002,
+-	0x4062BE50, 0x4063C220, 0x00000002, 0x4062BE51, 0x4063C220, 0x00000002,
+-	0x4062BE52, 0x4063C220, 0x00000002, 0x4062BE53, 0x4063C220, 0x00000002,
+-	0x4062BE54, 0x4063C220, 0x00000002, 0x4062BE55, 0x4063C220, 0x00000002,
+-	0x4062BE56, 0x4063C220, 0x00000002, 0x4062BE57, 0x4063C220, 0x00000002,
+-	0x4062BE58, 0x4063C220, 0x00000002, 0x4062BE59, 0x4063C220, 0x00000002,
+-	0x4062BE5A, 0x4063C220, 0x00000002, 0x4062BE5B, 0x4063C220, 0x00000002,
+-	0x4062BE5C, 0x4063C220, 0x00000002, 0x4062BE5D,
+-	// Block 440, offset 0x6e00
+-	0x4063C220, 0x00000002, 0x4062BE5E, 0x4063C220, 0x00000002, 0x4062BE5F,
+-	0x4063C220, 0x00000002, 0x4062BE60, 0x4063C220, 0x00000002, 0x4062BE61,
+-	0x4063C220, 0x00000002, 0x4062BE62, 0x4063C220, 0x00000002, 0x4062BE63,
+-	0x4063C220, 0x00000002, 0x4062BE64, 0x4063C220, 0x00000002, 0x4062BE65,
+-	0x4063C220, 0x00000002, 0x4062BE66, 0x4063C220, 0x00000002, 0x4062BE67,
+-	0x4063C220, 0x00000002, 0x4062BE68, 0x4063C220, 0x00000002, 0x4062BE69,
+-	0x4063C220, 0x00000002, 0x4062BE6A, 0x4063C220, 0x00000002, 0x4062BE6B,
+-	0x4063C220, 0x00000002, 0x4062BE6C, 0x4063C220, 0x00000002, 0x4062BE6D,
+-	0x4063C220, 0x00000002, 0x4062BE6E, 0x4063C220, 0x00000002, 0x4062BE6F,
+-	0x4063C220, 0x00000002, 0x4062BE70, 0x4063C220, 0x00000002, 0x4062BE71,
+-	0x4063C220, 0x00000002, 0x4062BE72, 0x4063C220,
+-	// Block 441, offset 0x6e40
+-	0x00000003, 0x4062BE21, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE22,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE23, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE24, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE25,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE26, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE27, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE28,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE29, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE2A, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE2B,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE2C, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE2D, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE2E,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE2F, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE30, 0x4063C220, 0x40646420,
+-	// Block 442, offset 0x6e80
+-	0x00000003, 0x4062BE31, 0x4063C220, 0x40646420, 0x00000003, 0x4062BE32,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062BE33, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062BE21, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE22,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE23, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE24, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE25,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE26, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE27, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE28,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE29, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE2A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE2B,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE2C, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE2D, 0x4063C220, 0x40646A20,
+-	// Block 443, offset 0x6ec0
+-	0x00000003, 0x4062BE2E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE2F,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE30, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE31, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE32,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE33, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE34, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE35,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE36, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE37, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE38,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE39, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE3A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE3B,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE3C, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE3D, 0x4063C220, 0x40646A20,
+-	// Block 444, offset 0x6f00
+-	0x00000003, 0x4062BE3E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE3F,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE40, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE41, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE42,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062BE43, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062BE44, 0x4063C220, 0x40646A20, 0x00000003, 0x4062BE21,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062BE22, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062BE23, 0x4063C220, 0x40647220, 0x00000003, 0x4062BE24,
+-	0x4063C220, 0x40647220, 0x00000003, 0x4062BE25, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062BE21, 0x4063C220, 0x40648C20, 0x00000003, 0x4062BE22,
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062BE23, 0x4063C220, 0x40648C20,
+-	0x00000003, 0x4062BE24, 0x4063C220, 0x40648C20,
+-	// Block 445, offset 0x6f40
+-	0x00000002, 0x4062BE21, 0x4063C820, 0x00000002, 0x4062BE22, 0x4063C820,
+-	0x00000002, 0x4062BE23, 0x4063C820, 0x00000003, 0x4062BE21, 0x4063CC20,
+-	0x40647220, 0x00000003, 0x4062BE22, 0x4063CC20, 0x40647220, 0x00000003,
+-	0x4062BE23, 0x4063CC20, 0x40647220, 0x00000003, 0x4062BE24, 0x4063CC20,
+-	0x40647220, 0x00000003, 0x4062BE21, 0x4063CC20, 0x40648420, 0x00000003,
+-	0x4062BE22, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE23, 0x4063CC20,
+-	0x40648420, 0x00000003, 0x4062BE24, 0x4063CC20, 0x40648420, 0x00000003,
+-	0x4062BE25, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE26, 0x4063CC20,
+-	0x40648420, 0x00000003, 0x4062BE27, 0x4063CC20, 0x40648420, 0x00000003,
+-	0x4062BE28, 0x4063CC20, 0x40648420, 0x00000003, 0x4062BE21, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062BE22, 0x4063CC20,
+-	// Block 446, offset 0x6f80
+-	0x40648C20, 0x00000003, 0x4062BE23, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062BE24, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE25, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062BE26, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062BE27, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE28, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062BE29, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062BE2A, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062BE2B, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062BE2C, 0x4063CC20, 0x40648C20, 0x00000002,
+-	0x4062BE21, 0x4063D020, 0x00000002, 0x4062BE22, 0x4063D020, 0x00000002,
+-	0x4062BE23, 0x4063D020, 0x00000002, 0x4062BE24, 0x4063D020, 0x00000002,
+-	0x4062BE25, 0x4063D020, 0x00000002, 0x4062BE26, 0x4063D020, 0x00000002,
+-	0x4062BE27, 0x4063D020, 0x00000002, 0x4062BE28,
+-	// Block 447, offset 0x6fc0
+-	0x4063D020, 0x00000002, 0x4062BE29, 0x4063D020, 0x00000002, 0x4062BE2A,
+-	0x4063D020, 0x00000002, 0x4062BE2B, 0x4063D020, 0x00000002, 0x4062BE2C,
+-	0x4063D020, 0x00000002, 0x4062BE2D, 0x4063D020, 0x00000002, 0x4062BE2E,
+-	0x4063D020, 0x00000002, 0x4062BE2F, 0x4063D020, 0x00000002, 0x4062BE30,
+-	0x4063D020, 0x00000002, 0x4062BE31, 0x4063D020, 0x00000002, 0x4062BE32,
+-	0x4063D020, 0x00000002, 0x4062BE33, 0x4063D020, 0x00000002, 0x4062BE34,
+-	0x4063D020, 0x00000002, 0x4062BE35, 0x4063D020, 0x00000002, 0x4062BE36,
+-	0x4063D020, 0x00000002, 0x4062BE37, 0x4063D020, 0x00000002, 0x4062BE38,
+-	0x4063D020, 0x00000002, 0x4062BE39, 0x4063D020, 0x00000002, 0x4062BE3A,
+-	0x4063D020, 0x00000002, 0x4062BE3B, 0x4063D020, 0x00000002, 0x4062BE3C,
+-	0x4063D020, 0x00000002, 0x4062BE3D, 0x4063D020,
+-	// Block 448, offset 0x7000
+-	0x00000002, 0x4062BE3E, 0x4063D020, 0x00000002, 0x4062BE3F, 0x4063D020,
+-	0x00000002, 0x4062BE40, 0x4063D020, 0x00000002, 0x4062BE41, 0x4063D020,
+-	0x00000002, 0x4062BE42, 0x4063D020, 0x00000002, 0x4062BE43, 0x4063D020,
+-	0x00000002, 0x4062BE44, 0x4063D020, 0x00000002, 0x4062BE45, 0x4063D020,
+-	0x00000002, 0x4062BE46, 0x4063D020, 0x00000002, 0x4062BE47, 0x4063D020,
+-	0x00000002, 0x4062BE48, 0x4063D020, 0x00000002, 0x4062BE49, 0x4063D020,
+-	0x00000002, 0x4062BE4A, 0x4063D020, 0x00000002, 0x4062BE4B, 0x4063D020,
+-	0x00000002, 0x4062BE4C, 0x4063D020, 0x00000002, 0x4062BE4D, 0x4063D020,
+-	0x00000003, 0x4062BE21, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE22,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE23, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062BE24, 0x4063D020, 0x40646420,
+-	// Block 449, offset 0x7040
+-	0x00000003, 0x4062BE25, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE26,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE27, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062BE28, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE29,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE2A, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062BE2B, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE2C,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE2D, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062BE2E, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE2F,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE30, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062BE31, 0x4063D020, 0x40646420, 0x00000003, 0x4062BE32,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062BE21, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE22, 0x4063D020, 0x40646A20,
+-	// Block 450, offset 0x7080
+-	0x00000003, 0x4062BE23, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE24,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE25, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE26, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE27,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE28, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE29, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2A,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2B, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE2C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2D,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE2E, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE2F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE30,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE31, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE32, 0x4063D020, 0x40646A20,
+-	// Block 451, offset 0x70c0
+-	0x00000003, 0x4062BE33, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE34,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE35, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE36, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE37,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE38, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE39, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3A,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3B, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE3C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3D,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE3E, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE3F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062BE40,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062BE41, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062BE21, 0x4063D020, 0x40647220,
+-	// Block 452, offset 0x7100
+-	0x00000003, 0x4062BE22, 0x4063D020, 0x40647220, 0x00000003, 0x4062BE23,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062BE24, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062BE25, 0x4063D020, 0x40647220, 0x00000003, 0x4062BE26,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062BE21, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062BE22, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE23,
+-	0x4063D020, 0x40648220, 0x00000003, 0x4062BE24, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062BE25, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE26,
+-	0x4063D020, 0x40648220, 0x00000003, 0x4062BE27, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062BE28, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE29,
+-	0x4063D020, 0x40648220, 0x00000003, 0x4062BE2A, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062BE2B, 0x4063D020, 0x40648220,
+-	// Block 453, offset 0x7140
+-	0x00000003, 0x4062BE2C, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE2D,
+-	0x4063D020, 0x40648220, 0x00000003, 0x4062BE2E, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062BE2F, 0x4063D020, 0x40648220, 0x00000003, 0x4062BE21,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062BE22, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062BE23, 0x4063D020, 0x40648420, 0x00000003, 0x4062C021,
+-	0x4063A820, 0x40648C20, 0x00000002, 0x4062C021, 0x4063D020, 0x00000002,
+-	0x4062C221, 0x4063A820, 0x00000002, 0x4062C222, 0x4063A820, 0x00000002,
+-	0x4062C223, 0x4063A820, 0x00000002, 0x4062C224, 0x4063A820, 0x00000002,
+-	0x4062C225, 0x4063A820, 0x00000002, 0x4062C226, 0x4063A820, 0x00000002,
+-	0x4062C227, 0x4063A820, 0x00000002, 0x4062C228, 0x4063A820, 0x00000002,
+-	0x4062C229, 0x4063A820, 0x00000002, 0x4062C22A,
+-	// Block 454, offset 0x7180
+-	0x4063A820, 0x00000002, 0x4062C22B, 0x4063A820, 0x00000002, 0x4062C22C,
+-	0x4063A820, 0x00000002, 0x4062C22D, 0x4063A820, 0x00000002, 0x4062C22E,
+-	0x4063A820, 0x00000002, 0x4062C22F, 0x4063A820, 0x00000002, 0x4062C230,
+-	0x4063A820, 0x00000002, 0x4062C231, 0x4063A820, 0x00000002, 0x4062C232,
+-	0x4063A820, 0x00000002, 0x4062C233, 0x4063A820, 0x00000002, 0x4062C234,
+-	0x4063A820, 0x00000002, 0x4062C235, 0x4063A820, 0x00000002, 0x4062C236,
+-	0x4063A820, 0x00000002, 0x4062C237, 0x4063A820, 0x00000002, 0x4062C238,
+-	0x4063A820, 0x00000002, 0x4062C239, 0x4063A820, 0x00000002, 0x4062C23A,
+-	0x4063A820, 0x00000002, 0x4062C23B, 0x4063A820, 0x00000002, 0x4062C23C,
+-	0x4063A820, 0x00000002, 0x4062C23D, 0x4063A820, 0x00000003, 0x4062C221,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C222,
+-	// Block 455, offset 0x71c0
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C223, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C224, 0x4063A820, 0x40646420, 0x00000003, 0x4062C225,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C226, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C227, 0x4063A820, 0x40646420, 0x00000003, 0x4062C228,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C229, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C22A, 0x4063A820, 0x40646420, 0x00000003, 0x4062C22B,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C22C, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C22D, 0x4063A820, 0x40646420, 0x00000003, 0x4062C22E,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C22F, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C230, 0x4063A820, 0x40646420, 0x00000003, 0x4062C231,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C232,
+-	// Block 456, offset 0x7200
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C233, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C234, 0x4063A820, 0x40646420, 0x00000003, 0x4062C235,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C236, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C237, 0x4063A820, 0x40646420, 0x00000003, 0x4062C238,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C239, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C221, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C222,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C223, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C224, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C225,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C226, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C227, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C228,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C229,
+-	// Block 457, offset 0x7240
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C22A, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C22B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C22C,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C22D, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C22E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C221,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C222, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C223, 0x4063A820, 0x40647220, 0x00000003, 0x4062C224,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C225, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C226, 0x4063A820, 0x40647220, 0x00000003, 0x4062C227,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C228, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C229, 0x4063A820, 0x40647220, 0x00000003, 0x4062C22A,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C22B,
+-	// Block 458, offset 0x7280
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C22C, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C221, 0x4063A820, 0x40648220, 0x00000003, 0x4062C222,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C223, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C224, 0x4063A820, 0x40648220, 0x00000003, 0x4062C225,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C226, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C227, 0x4063A820, 0x40648220, 0x00000003, 0x4062C228,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C229, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C22A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C22B,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C22C, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C22D, 0x4063A820, 0x40648220, 0x00000003, 0x4062C22E,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C22F,
+-	// Block 459, offset 0x72c0
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C230, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C231, 0x4063A820, 0x40648220, 0x00000003, 0x4062C232,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C233, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C221, 0x4063A820, 0x40648420, 0x00000003, 0x4062C222,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062C223, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062C224, 0x4063A820, 0x40648420, 0x00000003, 0x4062C221,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C222, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C223, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C224,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C225, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C226, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C227,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C228,
+-	// Block 460, offset 0x7300
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C229, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C22A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C22B,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C22C, 0x4063A820, 0x40648C20,
+-	0x00000002, 0x4062C221, 0x4063AA20, 0x00000002, 0x4062C222, 0x4063AA20,
+-	0x00000002, 0x4062C223, 0x4063AA20, 0x00000002, 0x4062C224, 0x4063AA20,
+-	0x00000002, 0x4062C225, 0x4063AA20, 0x00000002, 0x4062C226, 0x4063AA20,
+-	0x00000002, 0x4062C227, 0x4063AA20, 0x00000002, 0x4062C228, 0x4063AA20,
+-	0x00000002, 0x4062C229, 0x4063AA20, 0x00000002, 0x4062C22A, 0x4063AA20,
+-	0x00000002, 0x4062C22B, 0x4063AA20, 0x00000002, 0x4062C22C, 0x4063AA20,
+-	0x00000002, 0x4062C22D, 0x4063AA20, 0x00000002, 0x4062C22E, 0x4063AA20,
+-	0x00000002, 0x4062C22F, 0x4063AA20, 0x00000002,
+-	// Block 461, offset 0x7340
+-	0x4062C230, 0x4063AA20, 0x00000002, 0x4062C231, 0x4063AA20, 0x00000002,
+-	0x4062C232, 0x4063AA20, 0x00000002, 0x4062C233, 0x4063AA20, 0x00000002,
+-	0x4062C234, 0x4063AA20, 0x00000002, 0x4062C235, 0x4063AA20, 0x00000002,
+-	0x4062C236, 0x4063AA20, 0x00000002, 0x4062C237, 0x4063AA20, 0x00000002,
+-	0x4062C238, 0x4063AA20, 0x00000002, 0x4062C239, 0x4063AA20, 0x00000002,
+-	0x4062C23A, 0x4063AA20, 0x00000002, 0x4062C23B, 0x4063AA20, 0x00000002,
+-	0x4062C23C, 0x4063AA20, 0x00000002, 0x4062C23D, 0x4063AA20, 0x00000002,
+-	0x4062C23E, 0x4063AA20, 0x00000002, 0x4062C23F, 0x4063AA20, 0x00000003,
+-	0x4062C221, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C222, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062C223, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062C224, 0x4063AA20, 0x40646420, 0x00000003,
+-	// Block 462, offset 0x7380
+-	0x4062C225, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C226, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062C227, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062C228, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C229, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062C22A, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062C22B, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C221, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062C222, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062C223, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C224, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062C225, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062C226, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C227, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062C228, 0x4063AA20, 0x40648C20, 0x00000002,
+-	0x4062C221, 0x4063AC20, 0x00000002, 0x4062C222,
+-	// Block 463, offset 0x73c0
+-	0x4063AC20, 0x00000002, 0x4062C223, 0x4063AC20, 0x00000002, 0x4062C224,
+-	0x4063AC20, 0x00000002, 0x4062C225, 0x4063AC20, 0x00000002, 0x4062C226,
+-	0x4063AC20, 0x00000002, 0x4062C227, 0x4063AC20, 0x00000002, 0x4062C228,
+-	0x4063AC20, 0x00000002, 0x4062C229, 0x4063AC20, 0x00000002, 0x4062C22A,
+-	0x4063AC20, 0x00000002, 0x4062C22B, 0x4063AC20, 0x00000003, 0x4062C221,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062C222, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062C223, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C224,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062C225, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062C226, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C227,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062C228, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062C229, 0x4063AC20, 0x40646420,
+-	// Block 464, offset 0x7400
+-	0x00000003, 0x4062C22A, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C22B,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062C22C, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062C22D, 0x4063AC20, 0x40646420, 0x00000003, 0x4062C22E,
+-	0x4063AC20, 0x40646420, 0x00000003, 0x4062C22F, 0x4063AC20, 0x40646420,
+-	0x00000003, 0x4062C221, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C222,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C223, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C224, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C225,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C226, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C227, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C228,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C229, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C22A, 0x4063AC20, 0x40648C20,
+-	// Block 465, offset 0x7440
+-	0x00000003, 0x4062C22B, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C22C,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C22E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C22F,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C230, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C231, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C232,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C233, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C234, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C235,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C236, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C237, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C238,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C239, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C23A, 0x4063AC20, 0x40648C20,
+-	// Block 466, offset 0x7480
+-	0x00000003, 0x4062C23B, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C23C,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C23D, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C23E, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C23F,
+-	0x4063AC20, 0x40648C20, 0x00000003, 0x4062C240, 0x4063AC20, 0x40648C20,
+-	0x00000003, 0x4062C241, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062C242,
+-	0x4063AC20, 0x40648C20, 0x00000002, 0x4062C221, 0x4063B020, 0x00000002,
+-	0x4062C222, 0x4063B020, 0x00000002, 0x4062C223, 0x4063B020, 0x00000002,
+-	0x4062C224, 0x4063B020, 0x00000002, 0x4062C225, 0x4063B020, 0x00000002,
+-	0x4062C226, 0x4063B020, 0x00000002, 0x4062C227, 0x4063B020, 0x00000002,
+-	0x4062C228, 0x4063B020, 0x00000002, 0x4062C229, 0x4063B020, 0x00000002,
+-	0x4062C22A, 0x4063B020, 0x00000002, 0x4062C22B,
+-	// Block 467, offset 0x74c0
+-	0x4063B020, 0x00000002, 0x4062C22C, 0x4063B020, 0x00000002, 0x4062C22D,
+-	0x4063B020, 0x00000002, 0x4062C22E, 0x4063B020, 0x00000003, 0x4062C221,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C222, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C223, 0x4063B020, 0x40646420, 0x00000003, 0x4062C224,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C225, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C226, 0x4063B020, 0x40646420, 0x00000003, 0x4062C221,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C222, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C223, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C224,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C225, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C226, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C227,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C228,
+-	// Block 468, offset 0x7500
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C229, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C22A, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C22B,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C22C, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C22D, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C221,
+-	0x4063B020, 0x40647220, 0x00000003, 0x4062C222, 0x4063B020, 0x40647220,
+-	0x00000003, 0x4062C223, 0x4063B020, 0x40647220, 0x00000003, 0x4062C221,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C222, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C223, 0x4063B020, 0x40648220, 0x00000003, 0x4062C224,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C225, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C226, 0x4063B020, 0x40648220, 0x00000003, 0x4062C227,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C228,
+-	// Block 469, offset 0x7540
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C229, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C22A, 0x4063B020, 0x40648220, 0x00000003, 0x4062C22B,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C22C, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C221, 0x4063B020, 0x40648420, 0x00000003, 0x4062C222,
+-	0x4063B020, 0x40648420, 0x00000003, 0x4062C223, 0x4063B020, 0x40648420,
+-	0x00000003, 0x4062C224, 0x4063B020, 0x40648420, 0x00000002, 0x4062C221,
+-	0x4063B220, 0x00000002, 0x4062C222, 0x4063B220, 0x00000003, 0x4062C221,
+-	0x4063B220, 0x40646A20, 0x00000002, 0x4062C221, 0x4063B420, 0x00000002,
+-	0x4062C222, 0x4063B420, 0x00000002, 0x4062C223, 0x4063B420, 0x00000002,
+-	0x4062C224, 0x4063B420, 0x00000002, 0x4062C225, 0x4063B420, 0x00000002,
+-	0x4062C226, 0x4063B420, 0x00000002, 0x4062C227,
+-	// Block 470, offset 0x7580
+-	0x4063B420, 0x00000002, 0x4062C228, 0x4063B420, 0x00000002, 0x4062C229,
+-	0x4063B420, 0x00000002, 0x4062C22A, 0x4063B420, 0x00000002, 0x4062C22B,
+-	0x4063B420, 0x00000002, 0x4062C22C, 0x4063B420, 0x00000002, 0x4062C22D,
+-	0x4063B420, 0x00000002, 0x4062C22E, 0x4063B420, 0x00000003, 0x4062C221,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062C222, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062C223, 0x4063B420, 0x40646420, 0x00000003, 0x4062C224,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062C225, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062C226, 0x4063B420, 0x40646420, 0x00000003, 0x4062C227,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062C228, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062C229, 0x4063B420, 0x40646420, 0x00000003, 0x4062C22A,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062C22B,
+-	// Block 471, offset 0x75c0
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062C22C, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062C22D, 0x4063B420, 0x40646420, 0x00000003, 0x4062C221,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C222, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C223, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C224,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C225, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C226, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C227,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C228, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C229, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C22A,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C22C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C22D,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C22E,
+-	// Block 472, offset 0x7600
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C22F, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C230, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C231,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C232, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C233, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C234,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C235, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C236, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C237,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C238, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C239, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C23A,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C23B, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C23C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C23D,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C23E,
+-	// Block 473, offset 0x7640
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C23F, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C240, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C241,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C242, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C243, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C244,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C245, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C246, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C247,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C248, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C249, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C24A,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062C24B, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062C24C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062C221,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062C222,
+-	// Block 474, offset 0x7680
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062C223, 0x4063B420, 0x40647220,
+-	0x00000003, 0x4062C224, 0x4063B420, 0x40647220, 0x00000003, 0x4062C225,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062C221, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C222, 0x4063B420, 0x40648220, 0x00000003, 0x4062C223,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C224, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C225, 0x4063B420, 0x40648220, 0x00000003, 0x4062C226,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C227, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C228, 0x4063B420, 0x40648220, 0x00000003, 0x4062C229,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C22A, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C22B, 0x4063B420, 0x40648220, 0x00000003, 0x4062C22C,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C22D,
+-	// Block 475, offset 0x76c0
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C22E, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C22F, 0x4063B420, 0x40648220, 0x00000003, 0x4062C230,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C231, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C232, 0x4063B420, 0x40648220, 0x00000003, 0x4062C233,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C234, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062C235, 0x4063B420, 0x40648220, 0x00000003, 0x4062C236,
+-	0x4063B420, 0x40648220, 0x00000003, 0x4062C221, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062C222, 0x4063B420, 0x40648420, 0x00000003, 0x4062C223,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062C224, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062C225, 0x4063B420, 0x40648420, 0x00000003, 0x4062C226,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062C227,
+-	// Block 476, offset 0x7700
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062C221, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C222, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C223,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C224, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C225, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C226,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C227, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C228, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C229,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C22A, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C22B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C22C,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C22E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C22F,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C230,
+-	// Block 477, offset 0x7740
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C231, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C232, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C233,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C234, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C235, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C236,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C237, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C238, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C239,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C23A, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C23B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C23C,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C23D, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C23E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C23F,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C240,
+-	// Block 478, offset 0x7780
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C241, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C242, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C243,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C244, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062C245, 0x4063B420, 0x40648C20, 0x00000003, 0x4062C246,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062C247, 0x4063B420, 0x40648C20,
+-	0x00000002, 0x4062C221, 0x4063B620, 0x00000002, 0x4062C222, 0x4063B620,
+-	0x00000002, 0x4062C223, 0x4063B620, 0x00000002, 0x4062C224, 0x4063B620,
+-	0x00000002, 0x4062C225, 0x4063B620, 0x00000002, 0x4062C226, 0x4063B620,
+-	0x00000002, 0x4062C227, 0x4063B620, 0x00000002, 0x4062C228, 0x4063B620,
+-	0x00000002, 0x4062C229, 0x4063B620, 0x00000002, 0x4062C22A, 0x4063B620,
+-	0x00000002, 0x4062C22B, 0x4063B620, 0x00000002,
+-	// Block 479, offset 0x77c0
+-	0x4062C22C, 0x4063B620, 0x00000002, 0x4062C22D, 0x4063B620, 0x00000002,
+-	0x4062C22E, 0x4063B620, 0x00000002, 0x4062C22F, 0x4063B620, 0x00000002,
+-	0x4062C230, 0x4063B620, 0x00000002, 0x4062C231, 0x4063B620, 0x00000002,
+-	0x4062C232, 0x4063B620, 0x00000002, 0x4062C233, 0x4063B620, 0x00000002,
+-	0x4062C234, 0x4063B620, 0x00000002, 0x4062C235, 0x4063B620, 0x00000002,
+-	0x4062C236, 0x4063B620, 0x00000002, 0x4062C237, 0x4063B620, 0x00000002,
+-	0x4062C238, 0x4063B620, 0x00000002, 0x4062C239, 0x4063B620, 0x00000002,
+-	0x4062C23A, 0x4063B620, 0x00000002, 0x4062C23B, 0x4063B620, 0x00000002,
+-	0x4062C23C, 0x4063B620, 0x00000002, 0x4062C23D, 0x4063B620, 0x00000002,
+-	0x4062C23E, 0x4063B620, 0x00000002, 0x4062C23F, 0x4063B620, 0x00000002,
+-	0x4062C240, 0x4063B620, 0x00000002, 0x4062C241,
+-	// Block 480, offset 0x7800
+-	0x4063B620, 0x00000002, 0x4062C242, 0x4063B620, 0x00000002, 0x4062C243,
+-	0x4063B620, 0x00000002, 0x4062C244, 0x4063B620, 0x00000002, 0x4062C245,
+-	0x4063B620, 0x00000002, 0x4062C246, 0x4063B620, 0x00000002, 0x4062C247,
+-	0x4063B620, 0x00000002, 0x4062C221, 0x4063B820, 0x00000002, 0x4062C222,
+-	0x4063B820, 0x00000002, 0x4062C223, 0x4063B820, 0x00000002, 0x4062C224,
+-	0x4063B820, 0x00000002, 0x4062C225, 0x4063B820, 0x00000002, 0x4062C226,
+-	0x4063B820, 0x00000002, 0x4062C227, 0x4063B820, 0x00000002, 0x4062C228,
+-	0x4063B820, 0x00000002, 0x4062C229, 0x4063B820, 0x00000002, 0x4062C22A,
+-	0x4063B820, 0x00000002, 0x4062C22B, 0x4063B820, 0x00000002, 0x4062C22C,
+-	0x4063B820, 0x00000002, 0x4062C22D, 0x4063B820, 0x00000002, 0x4062C22E,
+-	0x4063B820, 0x00000002, 0x4062C22F, 0x4063B820,
+-	// Block 481, offset 0x7840
+-	0x00000002, 0x4062C230, 0x4063B820, 0x00000002, 0x4062C231, 0x4063B820,
+-	0x00000002, 0x4062C232, 0x4063B820, 0x00000002, 0x4062C233, 0x4063B820,
+-	0x00000002, 0x4062C234, 0x4063B820, 0x00000002, 0x4062C235, 0x4063B820,
+-	0x00000002, 0x4062C236, 0x4063B820, 0x00000002, 0x4062C237, 0x4063B820,
+-	0x00000002, 0x4062C238, 0x4063B820, 0x00000002, 0x4062C239, 0x4063B820,
+-	0x00000002, 0x4062C23A, 0x4063B820, 0x00000002, 0x4062C23B, 0x4063B820,
+-	0x00000002, 0x4062C23C, 0x4063B820, 0x00000002, 0x4062C23D, 0x4063B820,
+-	0x00000002, 0x4062C23E, 0x4063B820, 0x00000002, 0x4062C23F, 0x4063B820,
+-	0x00000002, 0x4062C240, 0x4063B820, 0x00000002, 0x4062C241, 0x4063B820,
+-	0x00000002, 0x4062C242, 0x4063B820, 0x00000002, 0x4062C243, 0x4063B820,
+-	0x00000002, 0x4062C244, 0x4063B820, 0x00000002,
+-	// Block 482, offset 0x7880
+-	0x4062C245, 0x4063B820, 0x00000002, 0x4062C246, 0x4063B820, 0x00000002,
+-	0x4062C247, 0x4063B820, 0x00000002, 0x4062C248, 0x4063B820, 0x00000002,
+-	0x4062C249, 0x4063B820, 0x00000002, 0x4062C24A, 0x4063B820, 0x00000002,
+-	0x4062C24B, 0x4063B820, 0x00000002, 0x4062C24C, 0x4063B820, 0x00000002,
+-	0x4062C24D, 0x4063B820, 0x00000002, 0x4062C24E, 0x4063B820, 0x00000002,
+-	0x4062C24F, 0x4063B820, 0x00000002, 0x4062C250, 0x4063B820, 0x00000002,
+-	0x4062C251, 0x4063B820, 0x00000002, 0x4062C252, 0x4063B820, 0x00000002,
+-	0x4062C253, 0x4063B820, 0x00000002, 0x4062C254, 0x4063B820, 0x00000002,
+-	0x4062C255, 0x4063B820, 0x00000002, 0x4062C256, 0x4063B820, 0x00000003,
+-	0x4062C221, 0x4063B820, 0x40646420, 0x00000003, 0x4062C222, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062C223, 0x4063B820,
+-	// Block 483, offset 0x78c0
+-	0x40646420, 0x00000003, 0x4062C224, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062C225, 0x4063B820, 0x40646420, 0x00000003, 0x4062C221, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C222, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C223, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C224, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C225, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C226, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C227, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C228, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C229, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C22A, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C22B, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C22C, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C22D, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C22E, 0x4063B820,
+-	// Block 484, offset 0x7900
+-	0x40646A20, 0x00000003, 0x4062C22F, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C230, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C231, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C221, 0x4063B820, 0x40647220, 0x00000003,
+-	0x4062C222, 0x4063B820, 0x40647220, 0x00000003, 0x4062C223, 0x4063B820,
+-	0x40647220, 0x00000003, 0x4062C221, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C222, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C223, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C224, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C225, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C226, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C227, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C228, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C229, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C22A, 0x4063B820,
+-	// Block 485, offset 0x7940
+-	0x40648C20, 0x00000003, 0x4062C22B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C22C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C22E, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C22F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C230, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C231, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C232, 0x4063B820, 0x40648C20, 0x00000002, 0x4062C221, 0x4063BA20,
+-	0x00000002, 0x4062C222, 0x4063BA20, 0x00000002, 0x4062C223, 0x4063BA20,
+-	0x00000002, 0x4062C224, 0x4063BA20, 0x00000002, 0x4062C225, 0x4063BA20,
+-	0x00000002, 0x4062C226, 0x4063BA20, 0x00000002, 0x4062C227, 0x4063BA20,
+-	0x00000002, 0x4062C228, 0x4063BA20, 0x00000002, 0x4062C229, 0x4063BA20,
+-	0x00000002, 0x4062C22A, 0x4063BA20, 0x00000002,
+-	// Block 486, offset 0x7980
+-	0x4062C22B, 0x4063BA20, 0x00000002, 0x4062C22C, 0x4063BA20, 0x00000002,
+-	0x4062C22D, 0x4063BA20, 0x00000002, 0x4062C22E, 0x4063BA20, 0x00000002,
+-	0x4062C22F, 0x4063BA20, 0x00000002, 0x4062C230, 0x4063BA20, 0x00000002,
+-	0x4062C231, 0x4063BA20, 0x00000003, 0x4062C221, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C222, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C223,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C224, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C225, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C226,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C227, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C228, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C229,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C22A, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C22B, 0x4063BA20, 0x40646A20,
+-	// Block 487, offset 0x79c0
+-	0x00000003, 0x4062C22C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C22D,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C22F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C230,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C231, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C232, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C233,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C234, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C235, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C236,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C237, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C238, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062C239,
+-	0x4063BA20, 0x40646A20, 0x00000003, 0x4062C23A, 0x4063BA20, 0x40646A20,
+-	0x00000003, 0x4062C221, 0x4063BA20, 0x40647220,
+-	// Block 488, offset 0x7a00
+-	0x00000003, 0x4062C221, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C222,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062C223, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062C224, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C225,
+-	0x4063BA20, 0x40648C20, 0x00000003, 0x4062C226, 0x4063BA20, 0x40648C20,
+-	0x00000003, 0x4062C227, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062C228,
+-	0x4063BA20, 0x40648C20, 0x00000002, 0x4062C221, 0x4063BC20, 0x00000002,
+-	0x4062C222, 0x4063BC20, 0x00000002, 0x4062C223, 0x4063BC20, 0x00000002,
+-	0x4062C224, 0x4063BC20, 0x00000002, 0x4062C225, 0x4063BC20, 0x00000002,
+-	0x4062C221, 0x4063BE20, 0x00000002, 0x4062C222, 0x4063BE20, 0x00000002,
+-	0x4062C223, 0x4063BE20, 0x00000002, 0x4062C224, 0x4063BE20, 0x00000002,
+-	0x4062C225, 0x4063BE20, 0x00000002, 0x4062C226,
+-	// Block 489, offset 0x7a40
+-	0x4063BE20, 0x00000002, 0x4062C227, 0x4063BE20, 0x00000002, 0x4062C228,
+-	0x4063BE20, 0x00000002, 0x4062C229, 0x4063BE20, 0x00000002, 0x4062C22A,
+-	0x4063BE20, 0x00000002, 0x4062C22B, 0x4063BE20, 0x00000002, 0x4062C22C,
+-	0x4063BE20, 0x00000002, 0x4062C22D, 0x4063BE20, 0x00000002, 0x4062C22E,
+-	0x4063BE20, 0x00000002, 0x4062C221, 0x4063C020, 0x00000002, 0x4062C222,
+-	0x4063C020, 0x00000002, 0x4062C223, 0x4063C020, 0x00000002, 0x4062C224,
+-	0x4063C020, 0x00000002, 0x4062C225, 0x4063C020, 0x00000002, 0x4062C226,
+-	0x4063C020, 0x00000002, 0x4062C227, 0x4063C020, 0x00000002, 0x4062C228,
+-	0x4063C020, 0x00000002, 0x4062C229, 0x4063C020, 0x00000002, 0x4062C22A,
+-	0x4063C020, 0x00000002, 0x4062C22B, 0x4063C020, 0x00000002, 0x4062C22C,
+-	0x4063C020, 0x00000002, 0x4062C22D, 0x4063C020,
+-	// Block 490, offset 0x7a80
+-	0x00000002, 0x4062C22E, 0x4063C020, 0x00000002, 0x4062C22F, 0x4063C020,
+-	0x00000002, 0x4062C230, 0x4063C020, 0x00000002, 0x4062C231, 0x4063C020,
+-	0x00000002, 0x4062C232, 0x4063C020, 0x00000002, 0x4062C233, 0x4063C020,
+-	0x00000002, 0x4062C234, 0x4063C020, 0x00000002, 0x4062C235, 0x4063C020,
+-	0x00000002, 0x4062C236, 0x4063C020, 0x00000002, 0x4062C237, 0x4063C020,
+-	0x00000002, 0x4062C238, 0x4063C020, 0x00000002, 0x4062C239, 0x4063C020,
+-	0x00000002, 0x4062C23A, 0x4063C020, 0x00000002, 0x4062C23B, 0x4063C020,
+-	0x00000002, 0x4062C23C, 0x4063C020, 0x00000002, 0x4062C23D, 0x4063C020,
+-	0x00000002, 0x4062C23E, 0x4063C020, 0x00000002, 0x4062C23F, 0x4063C020,
+-	0x00000002, 0x4062C240, 0x4063C020, 0x00000002, 0x4062C241, 0x4063C020,
+-	0x00000002, 0x4062C242, 0x4063C020, 0x00000002,
+-	// Block 491, offset 0x7ac0
+-	0x4062C243, 0x4063C020, 0x00000002, 0x4062C244, 0x4063C020, 0x00000002,
+-	0x4062C245, 0x4063C020, 0x00000002, 0x4062C246, 0x4063C020, 0x00000002,
+-	0x4062C247, 0x4063C020, 0x00000002, 0x4062C248, 0x4063C020, 0x00000002,
+-	0x4062C249, 0x4063C020, 0x00000002, 0x4062C24A, 0x4063C020, 0x00000002,
+-	0x4062C24B, 0x4063C020, 0x00000002, 0x4062C24C, 0x4063C020, 0x00000003,
+-	0x4062C221, 0x4063C020, 0x40646420, 0x00000003, 0x4062C222, 0x4063C020,
+-	0x40646420, 0x00000003, 0x4062C223, 0x4063C020, 0x40646420, 0x00000003,
+-	0x4062C224, 0x4063C020, 0x40646420, 0x00000003, 0x4062C225, 0x4063C020,
+-	0x40646420, 0x00000003, 0x4062C226, 0x4063C020, 0x40646420, 0x00000003,
+-	0x4062C227, 0x4063C020, 0x40646420, 0x00000003, 0x4062C228, 0x4063C020,
+-	0x40646420, 0x00000003, 0x4062C221, 0x4063C020,
+-	// Block 492, offset 0x7b00
+-	0x40648C20, 0x00000003, 0x4062C222, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C223, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C224, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C225, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C226, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C227, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C228, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C229, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C22A, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C22B, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C22C, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C22D, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C22E, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C22F, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C230, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C231, 0x4063C020,
+-	// Block 493, offset 0x7b40
+-	0x40648C20, 0x00000003, 0x4062C232, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C233, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C234, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C235, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C236, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C237, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C238, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C239, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C23A, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C23B, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C23C, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C23D, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C23E, 0x4063C020, 0x40648C20, 0x00000003,
+-	0x4062C23F, 0x4063C020, 0x40648C20, 0x00000003, 0x4062C240, 0x4063C020,
+-	0x40648C20, 0x00000003, 0x4062C241, 0x4063C020,
+-	// Block 494, offset 0x7b80
+-	0x40648C20, 0x00000002, 0x4062C221, 0x4063C220, 0x00000002, 0x4062C222,
+-	0x4063C220, 0x00000002, 0x4062C223, 0x4063C220, 0x00000002, 0x4062C224,
+-	0x4063C220, 0x00000002, 0x4062C225, 0x4063C220, 0x00000002, 0x4062C226,
+-	0x4063C220, 0x00000002, 0x4062C227, 0x4063C220, 0x00000002, 0x4062C228,
+-	0x4063C220, 0x00000002, 0x4062C229, 0x4063C220, 0x00000002, 0x4062C22A,
+-	0x4063C220, 0x00000002, 0x4062C22B, 0x4063C220, 0x00000002, 0x4062C22C,
+-	0x4063C220, 0x00000002, 0x4062C22D, 0x4063C220, 0x00000002, 0x4062C22E,
+-	0x4063C220, 0x00000002, 0x4062C22F, 0x4063C220, 0x00000002, 0x4062C230,
+-	0x4063C220, 0x00000002, 0x4062C231, 0x4063C220, 0x00000002, 0x4062C232,
+-	0x4063C220, 0x00000002, 0x4062C233, 0x4063C220, 0x00000002, 0x4062C234,
+-	0x4063C220, 0x00000002, 0x4062C235, 0x4063C220,
+-	// Block 495, offset 0x7bc0
+-	0x00000002, 0x4062C236, 0x4063C220, 0x00000002, 0x4062C237, 0x4063C220,
+-	0x00000002, 0x4062C238, 0x4063C220, 0x00000002, 0x4062C239, 0x4063C220,
+-	0x00000002, 0x4062C23A, 0x4063C220, 0x00000002, 0x4062C23B, 0x4063C220,
+-	0x00000002, 0x4062C23C, 0x4063C220, 0x00000002, 0x4062C23D, 0x4063C220,
+-	0x00000002, 0x4062C23E, 0x4063C220, 0x00000002, 0x4062C23F, 0x4063C220,
+-	0x00000002, 0x4062C240, 0x4063C220, 0x00000002, 0x4062C241, 0x4063C220,
+-	0x00000002, 0x4062C242, 0x4063C220, 0x00000002, 0x4062C243, 0x4063C220,
+-	0x00000002, 0x4062C244, 0x4063C220, 0x00000002, 0x4062C245, 0x4063C220,
+-	0x00000002, 0x4062C246, 0x4063C220, 0x00000002, 0x4062C247, 0x4063C220,
+-	0x00000002, 0x4062C248, 0x4063C220, 0x00000002, 0x4062C249, 0x4063C220,
+-	0x00000002, 0x4062C24A, 0x4063C220, 0x00000002,
+-	// Block 496, offset 0x7c00
+-	0x4062C24B, 0x4063C220, 0x00000002, 0x4062C24C, 0x4063C220, 0x00000002,
+-	0x4062C24D, 0x4063C220, 0x00000002, 0x4062C24E, 0x4063C220, 0x00000002,
+-	0x4062C24F, 0x4063C220, 0x00000002, 0x4062C250, 0x4063C220, 0x00000002,
+-	0x4062C251, 0x4063C220, 0x00000002, 0x4062C252, 0x4063C220, 0x00000002,
+-	0x4062C253, 0x4063C220, 0x00000002, 0x4062C254, 0x4063C220, 0x00000003,
+-	0x4062C221, 0x4063C220, 0x40646420, 0x00000003, 0x4062C222, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C223, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C224, 0x4063C220, 0x40646420, 0x00000003, 0x4062C225, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C226, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C227, 0x4063C220, 0x40646420, 0x00000003, 0x4062C228, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C229, 0x4063C220,
+-	// Block 497, offset 0x7c40
+-	0x40646420, 0x00000003, 0x4062C22A, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C221, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C222, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C223, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062C224, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C225, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C226, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062C227, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C228, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C229, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062C22A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C22C, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062C22D, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C22F, 0x4063C220,
+-	// Block 498, offset 0x7c80
+-	0x40646A20, 0x00000003, 0x4062C230, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062C231, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C232, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C221, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062C222, 0x4063C220, 0x40647220, 0x00000003, 0x4062C223, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062C221, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062C222, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C221, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C222, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C223, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C224, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C225, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C226, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C227, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C228, 0x4063C420,
+-	// Block 499, offset 0x7cc0
+-	0x40646A20, 0x00000003, 0x4062C229, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C22A, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C22C, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C22D, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C22F, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C230, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C231, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C232, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C233, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C234, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C235, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C236, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C237, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C238, 0x4063C420,
+-	// Block 500, offset 0x7d00
+-	0x40646A20, 0x00000003, 0x4062C239, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C23A, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C23B, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C23C, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C23D, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C23E, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C23F, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C240, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C241, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C242, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C243, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C244, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C245, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062C246, 0x4063C420, 0x40646A20, 0x00000003, 0x4062C247, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062C248, 0x4063C420,
+-	// Block 501, offset 0x7d40
+-	0x40646A20, 0x00000003, 0x4062C221, 0x4063C420, 0x40647220, 0x00000003,
+-	0x4062C222, 0x4063C420, 0x40647220, 0x00000003, 0x4062C223, 0x4063C420,
+-	0x40647220, 0x00000003, 0x4062C224, 0x4063C420, 0x40647220, 0x00000003,
+-	0x4062C225, 0x4063C420, 0x40647220, 0x00000002, 0x4062C221, 0x4063C820,
+-	0x00000002, 0x4062C222, 0x4063C820, 0x00000002, 0x4062C223, 0x4063C820,
+-	0x00000002, 0x4062C224, 0x4063C820, 0x00000002, 0x4062C225, 0x4063C820,
+-	0x00000002, 0x4062C226, 0x4063C820, 0x00000002, 0x4062C227, 0x4063C820,
+-	0x00000002, 0x4062C228, 0x4063C820, 0x00000002, 0x4062C229, 0x4063C820,
+-	0x00000002, 0x4062C22A, 0x4063C820, 0x00000002, 0x4062C22B, 0x4063C820,
+-	0x00000002, 0x4062C22C, 0x4063C820, 0x00000002, 0x4062C22D, 0x4063C820,
+-	0x00000002, 0x4062C22E, 0x4063C820, 0x00000002,
+-	// Block 502, offset 0x7d80
+-	0x4062C22F, 0x4063C820, 0x00000002, 0x4062C230, 0x4063C820, 0x00000002,
+-	0x4062C231, 0x4063C820, 0x00000002, 0x4062C232, 0x4063C820, 0x00000002,
+-	0x4062C233, 0x4063C820, 0x00000002, 0x4062C234, 0x4063C820, 0x00000002,
+-	0x4062C235, 0x4063C820, 0x00000002, 0x4062C236, 0x4063C820, 0x00000002,
+-	0x4062C237, 0x4063C820, 0x00000002, 0x4062C238, 0x4063C820, 0x00000002,
+-	0x4062C239, 0x4063C820, 0x00000002, 0x4062C23A, 0x4063C820, 0x00000002,
+-	0x4062C23B, 0x4063C820, 0x00000002, 0x4062C23C, 0x4063C820, 0x00000002,
+-	0x4062C23D, 0x4063C820, 0x00000002, 0x4062C23E, 0x4063C820, 0x00000002,
+-	0x4062C23F, 0x4063C820, 0x00000002, 0x4062C240, 0x4063C820, 0x00000002,
+-	0x4062C241, 0x4063C820, 0x00000002, 0x4062C242, 0x4063C820, 0x00000002,
+-	0x4062C243, 0x4063C820, 0x00000002, 0x4062C244,
+-	// Block 503, offset 0x7dc0
+-	0x4063C820, 0x00000002, 0x4062C245, 0x4063C820, 0x00000002, 0x4062C246,
+-	0x4063C820, 0x00000002, 0x4062C247, 0x4063C820, 0x00000002, 0x4062C221,
+-	0x4063CA20, 0x00000002, 0x4062C222, 0x4063CA20, 0x00000002, 0x4062C223,
+-	0x4063CA20, 0x00000002, 0x4062C224, 0x4063CA20, 0x00000002, 0x4062C225,
+-	0x4063CA20, 0x00000002, 0x4062C226, 0x4063CA20, 0x00000002, 0x4062C227,
+-	0x4063CA20, 0x00000002, 0x4062C228, 0x4063CA20, 0x00000002, 0x4062C229,
+-	0x4063CA20, 0x00000002, 0x4062C22A, 0x4063CA20, 0x00000002, 0x4062C22B,
+-	0x4063CA20, 0x00000002, 0x4062C22C, 0x4063CA20, 0x00000002, 0x4062C22D,
+-	0x4063CA20, 0x00000002, 0x4062C22E, 0x4063CA20, 0x00000002, 0x4062C22F,
+-	0x4063CA20, 0x00000002, 0x4062C230, 0x4063CA20, 0x00000002, 0x4062C231,
+-	0x4063CA20, 0x00000002, 0x4062C232, 0x4063CA20,
+-	// Block 504, offset 0x7e00
+-	0x00000002, 0x4062C233, 0x4063CA20, 0x00000002, 0x4062C234, 0x4063CA20,
+-	0x00000002, 0x4062C235, 0x4063CA20, 0x00000002, 0x4062C236, 0x4063CA20,
+-	0x00000002, 0x4062C237, 0x4063CA20, 0x00000002, 0x4062C238, 0x4063CA20,
+-	0x00000002, 0x4062C239, 0x4063CA20, 0x00000002, 0x4062C23A, 0x4063CA20,
+-	0x00000002, 0x4062C23B, 0x4063CA20, 0x00000002, 0x4062C23C, 0x4063CA20,
+-	0x00000002, 0x4062C23D, 0x4063CA20, 0x00000002, 0x4062C23E, 0x4063CA20,
+-	0x00000002, 0x4062C23F, 0x4063CA20, 0x00000002, 0x4062C240, 0x4063CA20,
+-	0x00000002, 0x4062C241, 0x4063CA20, 0x00000002, 0x4062C242, 0x4063CA20,
+-	0x00000002, 0x4062C243, 0x4063CA20, 0x00000002, 0x4062C244, 0x4063CA20,
+-	0x00000002, 0x4062C245, 0x4063CA20, 0x00000002, 0x4062C246, 0x4063CA20,
+-	0x00000002, 0x4062C247, 0x4063CA20, 0x00000002,
+-	// Block 505, offset 0x7e40
+-	0x4062C248, 0x4063CA20, 0x00000002, 0x4062C249, 0x4063CA20, 0x00000002,
+-	0x4062C24A, 0x4063CA20, 0x00000002, 0x4062C24B, 0x4063CA20, 0x00000002,
+-	0x4062C24C, 0x4063CA20, 0x00000002, 0x4062C24D, 0x4063CA20, 0x00000002,
+-	0x4062C24E, 0x4063CA20, 0x00000002, 0x4062C24F, 0x4063CA20, 0x00000002,
+-	0x4062C250, 0x4063CA20, 0x00000002, 0x4062C251, 0x4063CA20, 0x00000002,
+-	0x4062C252, 0x4063CA20, 0x00000002, 0x4062C253, 0x4063CA20, 0x00000002,
+-	0x4062C254, 0x4063CA20, 0x00000002, 0x4062C255, 0x4063CA20, 0x00000002,
+-	0x4062C256, 0x4063CA20, 0x00000002, 0x4062C257, 0x4063CA20, 0x00000002,
+-	0x4062C258, 0x4063CA20, 0x00000002, 0x4062C259, 0x4063CA20, 0x00000002,
+-	0x4062C25A, 0x4063CA20, 0x00000002, 0x4062C25B, 0x4063CA20, 0x00000002,
+-	0x4062C25C, 0x4063CA20, 0x00000002, 0x4062C25D,
+-	// Block 506, offset 0x7e80
+-	0x4063CA20, 0x00000002, 0x4062C25E, 0x4063CA20, 0x00000002, 0x4062C25F,
+-	0x4063CA20, 0x00000002, 0x4062C260, 0x4063CA20, 0x00000002, 0x4062C261,
+-	0x4063CA20, 0x00000002, 0x4062C262, 0x4063CA20, 0x00000002, 0x4062C263,
+-	0x4063CA20, 0x00000002, 0x4062C264, 0x4063CA20, 0x00000002, 0x4062C265,
+-	0x4063CA20, 0x00000002, 0x4062C266, 0x4063CA20, 0x00000002, 0x4062C267,
+-	0x4063CA20, 0x00000002, 0x4062C268, 0x4063CA20, 0x00000002, 0x4062C269,
+-	0x4063CA20, 0x00000002, 0x4062C26A, 0x4063CA20, 0x00000002, 0x4062C26B,
+-	0x4063CA20, 0x00000002, 0x4062C26C, 0x4063CA20, 0x00000002, 0x4062C26D,
+-	0x4063CA20, 0x00000003, 0x4062C221, 0x4063CA20, 0x40646420, 0x00000003,
+-	0x4062C222, 0x4063CA20, 0x40646420, 0x00000003, 0x4062C223, 0x4063CA20,
+-	0x40646420, 0x00000003, 0x4062C224, 0x4063CA20,
+-	// Block 507, offset 0x7ec0
+-	0x40646420, 0x00000003, 0x4062C225, 0x4063CA20, 0x40646420, 0x00000003,
+-	0x4062C221, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C222, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062C223, 0x4063CA20, 0x40646A20, 0x00000003,
+-	0x4062C224, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C225, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062C226, 0x4063CA20, 0x40646A20, 0x00000003,
+-	0x4062C227, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C228, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062C229, 0x4063CA20, 0x40646A20, 0x00000003,
+-	0x4062C22A, 0x4063CA20, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063CA20,
+-	0x40646A20, 0x00000003, 0x4062C221, 0x4063CA20, 0x40647220, 0x00000003,
+-	0x4062C222, 0x4063CA20, 0x40647220, 0x00000003, 0x4062C223, 0x4063CA20,
+-	0x40647220, 0x00000003, 0x4062C221, 0x4063CA20,
+-	// Block 508, offset 0x7f00
+-	0x40648C20, 0x00000003, 0x4062C222, 0x4063CA20, 0x40648C20, 0x00000003,
+-	0x4062C223, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062C224, 0x4063CA20,
+-	0x40648C20, 0x00000003, 0x4062C225, 0x4063CA20, 0x40648C20, 0x00000003,
+-	0x4062C221, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C222, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C223, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C224, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C225, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C226, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C227, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C228, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C229, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C22A, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C22C, 0x4063CC20,
+-	// Block 509, offset 0x7f40
+-	0x40646A20, 0x00000003, 0x4062C22D, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C22E, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C22F, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C230, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C231, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C232, 0x4063CC20,
+-	0x40646A20, 0x00000003, 0x4062C233, 0x4063CC20, 0x40646A20, 0x00000003,
+-	0x4062C234, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062C221, 0x4063CC20,
+-	0x40647220, 0x00000003, 0x4062C222, 0x4063CC20, 0x40647220, 0x00000003,
+-	0x4062C221, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C222, 0x4063CC20,
+-	0x40648220, 0x00000003, 0x4062C223, 0x4063CC20, 0x40648220, 0x00000003,
+-	0x4062C224, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C225, 0x4063CC20,
+-	0x40648220, 0x00000003, 0x4062C226, 0x4063CC20,
+-	// Block 510, offset 0x7f80
+-	0x40648220, 0x00000003, 0x4062C227, 0x4063CC20, 0x40648220, 0x00000003,
+-	0x4062C228, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C229, 0x4063CC20,
+-	0x40648220, 0x00000003, 0x4062C22A, 0x4063CC20, 0x40648220, 0x00000003,
+-	0x4062C22B, 0x4063CC20, 0x40648220, 0x00000003, 0x4062C221, 0x4063CC20,
+-	0x40648420, 0x00000003, 0x4062C222, 0x4063CC20, 0x40648420, 0x00000003,
+-	0x4062C223, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C224, 0x4063CC20,
+-	0x40648420, 0x00000003, 0x4062C225, 0x4063CC20, 0x40648420, 0x00000003,
+-	0x4062C226, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C221, 0x4063CC20,
+-	0x40648C20, 0x00000003, 0x4062C222, 0x4063CC20, 0x40648C20, 0x00000003,
+-	0x4062C223, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C224, 0x4063CC20,
+-	0x40648C20, 0x00000002, 0x4062C221, 0x4063CE20,
+-	// Block 511, offset 0x7fc0
+-	0x00000002, 0x4062C222, 0x4063CE20, 0x00000002, 0x4062C223, 0x4063CE20,
+-	0x00000002, 0x4062C224, 0x4063CE20, 0x00000002, 0x4062C225, 0x4063CE20,
+-	0x00000002, 0x4062C226, 0x4063CE20, 0x00000002, 0x4062C227, 0x4063CE20,
+-	0x00000002, 0x4062C228, 0x4063CE20, 0x00000002, 0x4062C229, 0x4063CE20,
+-	0x00000002, 0x4062C22A, 0x4063CE20, 0x00000002, 0x4062C22B, 0x4063CE20,
+-	0x00000002, 0x4062C22C, 0x4063CE20, 0x00000002, 0x4062C22D, 0x4063CE20,
+-	0x00000002, 0x4062C22E, 0x4063CE20, 0x00000002, 0x4062C22F, 0x4063CE20,
+-	0x00000002, 0x4062C230, 0x4063CE20, 0x00000002, 0x4062C231, 0x4063CE20,
+-	0x00000002, 0x4062C232, 0x4063CE20, 0x00000002, 0x4062C233, 0x4063CE20,
+-	0x00000002, 0x4062C234, 0x4063CE20, 0x00000002, 0x4062C235, 0x4063CE20,
+-	0x00000002, 0x4062C236, 0x4063CE20, 0x00000002,
+-	// Block 512, offset 0x8000
+-	0x4062C237, 0x4063CE20, 0x00000002, 0x4062C238, 0x4063CE20, 0x00000002,
+-	0x4062C239, 0x4063CE20, 0x00000002, 0x4062C23A, 0x4063CE20, 0x00000002,
+-	0x4062C23B, 0x4063CE20, 0x00000002, 0x4062C23C, 0x4063CE20, 0x00000002,
+-	0x4062C23D, 0x4063CE20, 0x00000002, 0x4062C221, 0x4063D020, 0x00000002,
+-	0x4062C222, 0x4063D020, 0x00000002, 0x4062C223, 0x4063D020, 0x00000002,
+-	0x4062C224, 0x4063D020, 0x00000002, 0x4062C225, 0x4063D020, 0x00000002,
+-	0x4062C226, 0x4063D020, 0x00000002, 0x4062C227, 0x4063D020, 0x00000002,
+-	0x4062C228, 0x4063D020, 0x00000002, 0x4062C229, 0x4063D020, 0x00000002,
+-	0x4062C22A, 0x4063D020, 0x00000002, 0x4062C22B, 0x4063D020, 0x00000002,
+-	0x4062C22C, 0x4063D020, 0x00000002, 0x4062C22D, 0x4063D020, 0x00000002,
+-	0x4062C22E, 0x4063D020, 0x00000002, 0x4062C22F,
+-	// Block 513, offset 0x8040
+-	0x4063D020, 0x00000002, 0x4062C230, 0x4063D020, 0x00000002, 0x4062C231,
+-	0x4063D020, 0x00000002, 0x4062C232, 0x4063D020, 0x00000002, 0x4062C233,
+-	0x4063D020, 0x00000002, 0x4062C234, 0x4063D020, 0x00000002, 0x4062C235,
+-	0x4063D020, 0x00000002, 0x4062C236, 0x4063D020, 0x00000002, 0x4062C237,
+-	0x4063D020, 0x00000002, 0x4062C238, 0x4063D020, 0x00000002, 0x4062C239,
+-	0x4063D020, 0x00000002, 0x4062C23A, 0x4063D020, 0x00000002, 0x4062C23B,
+-	0x4063D020, 0x00000002, 0x4062C23C, 0x4063D020, 0x00000002, 0x4062C23D,
+-	0x4063D020, 0x00000002, 0x4062C23E, 0x4063D020, 0x00000002, 0x4062C23F,
+-	0x4063D020, 0x00000002, 0x4062C240, 0x4063D020, 0x00000002, 0x4062C241,
+-	0x4063D020, 0x00000002, 0x4062C242, 0x4063D020, 0x00000002, 0x4062C243,
+-	0x4063D020, 0x00000003, 0x4062C221, 0x4063D020,
+-	// Block 514, offset 0x8080
+-	0x40646420, 0x00000003, 0x4062C222, 0x4063D020, 0x40646420, 0x00000003,
+-	0x4062C223, 0x4063D020, 0x40646420, 0x00000003, 0x4062C224, 0x4063D020,
+-	0x40646420, 0x00000003, 0x4062C225, 0x4063D020, 0x40646420, 0x00000003,
+-	0x4062C226, 0x4063D020, 0x40646420, 0x00000003, 0x4062C227, 0x4063D020,
+-	0x40646420, 0x00000003, 0x4062C228, 0x4063D020, 0x40646420, 0x00000003,
+-	0x4062C229, 0x4063D020, 0x40646420, 0x00000003, 0x4062C221, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C222, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C223, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C224, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C225, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C226, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C227, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C228, 0x4063D020,
+-	// Block 515, offset 0x80c0
+-	0x40646A20, 0x00000003, 0x4062C229, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C22A, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C22B, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C22C, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C22D, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C22E, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C22F, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C230, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C231, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C232, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C233, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C234, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C235, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C236, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C237, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C238, 0x4063D020,
+-	// Block 516, offset 0x8100
+-	0x40646A20, 0x00000003, 0x4062C239, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C23A, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C23B, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C23C, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C221, 0x4063D020, 0x40647220, 0x00000003, 0x4062C222, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062C223, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062C224, 0x4063D020, 0x40647220, 0x00000003, 0x4062C225, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062C226, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062C227, 0x4063D020, 0x40647220, 0x00000003, 0x4062C228, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062C229, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062C22A, 0x4063D020, 0x40647220, 0x00000003, 0x4062C22B, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062C221, 0x4063D020,
+-	// Block 517, offset 0x8140
+-	0x40648220, 0x00000003, 0x4062C222, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C223, 0x4063D020, 0x40648220, 0x00000003, 0x4062C224, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C225, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C226, 0x4063D020, 0x40648220, 0x00000003, 0x4062C227, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C228, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C229, 0x4063D020, 0x40648220, 0x00000003, 0x4062C22A, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C22B, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C22C, 0x4063D020, 0x40648220, 0x00000003, 0x4062C221, 0x4063D020,
+-	0x40648420, 0x00000003, 0x4062C222, 0x4063D020, 0x40648420, 0x00000003,
+-	0x4062C223, 0x4063D020, 0x40648420, 0x00000003, 0x4062C221, 0x4063D020,
+-	0x40648C20, 0x00000003, 0x4062C222, 0x4063D020,
+-	// Block 518, offset 0x8180
+-	0x40648C20, 0x00000003, 0x4062C223, 0x4063D020, 0x40648C20, 0x00000003,
+-	0x4062C224, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C225, 0x4063D020,
+-	0x40648C20, 0x00000002, 0x4062C421, 0x4063A820, 0x00000002, 0x4062C422,
+-	0x4063A820, 0x00000002, 0x4062C423, 0x4063A820, 0x00000002, 0x4062C424,
+-	0x4063A820, 0x00000002, 0x4062C425, 0x4063A820, 0x00000002, 0x4062C426,
+-	0x4063A820, 0x00000002, 0x4062C427, 0x4063A820, 0x00000002, 0x4062C428,
+-	0x4063A820, 0x00000002, 0x4062C429, 0x4063A820, 0x00000002, 0x4062C42A,
+-	0x4063A820, 0x00000002, 0x4062C42B, 0x4063A820, 0x00000002, 0x4062C42C,
+-	0x4063A820, 0x00000002, 0x4062C42D, 0x4063A820, 0x00000002, 0x4062C42E,
+-	0x4063A820, 0x00000002, 0x4062C42F, 0x4063A820, 0x00000002, 0x4062C430,
+-	0x4063A820, 0x00000002, 0x4062C431, 0x4063A820,
+-	// Block 519, offset 0x81c0
+-	0x00000002, 0x4062C432, 0x4063A820, 0x00000002, 0x4062C433, 0x4063A820,
+-	0x00000002, 0x4062C434, 0x4063A820, 0x00000002, 0x4062C435, 0x4063A820,
+-	0x00000002, 0x4062C436, 0x4063A820, 0x00000002, 0x4062C437, 0x4063A820,
+-	0x00000002, 0x4062C438, 0x4063A820, 0x00000002, 0x4062C439, 0x4063A820,
+-	0x00000002, 0x4062C43A, 0x4063A820, 0x00000002, 0x4062C43B, 0x4063A820,
+-	0x00000002, 0x4062C43C, 0x4063A820, 0x00000002, 0x4062C43D, 0x4063A820,
+-	0x00000002, 0x4062C43E, 0x4063A820, 0x00000002, 0x4062C43F, 0x4063A820,
+-	0x00000002, 0x4062C440, 0x4063A820, 0x00000002, 0x4062C441, 0x4063A820,
+-	0x00000002, 0x4062C442, 0x4063A820, 0x00000002, 0x4062C443, 0x4063A820,
+-	0x00000002, 0x4062C444, 0x4063A820, 0x00000002, 0x4062C445, 0x4063A820,
+-	0x00000002, 0x4062C446, 0x4063A820, 0x00000002,
+-	// Block 520, offset 0x8200
+-	0x4062C447, 0x4063A820, 0x00000002, 0x4062C448, 0x4063A820, 0x00000002,
+-	0x4062C449, 0x4063A820, 0x00000002, 0x4062C44A, 0x4063A820, 0x00000002,
+-	0x4062C44B, 0x4063A820, 0x00000002, 0x4062C44C, 0x4063A820, 0x00000002,
+-	0x4062C44D, 0x4063A820, 0x00000002, 0x4062C44E, 0x4063A820, 0x00000002,
+-	0x4062C44F, 0x4063A820, 0x00000002, 0x4062C450, 0x4063A820, 0x00000002,
+-	0x4062C451, 0x4063A820, 0x00000002, 0x4062C452, 0x4063A820, 0x00000002,
+-	0x4062C453, 0x4063A820, 0x00000002, 0x4062C454, 0x4063A820, 0x00000003,
+-	0x4062C421, 0x4063A820, 0x40646420, 0x00000003, 0x4062C422, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C423, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C424, 0x4063A820, 0x40646420, 0x00000003, 0x4062C425, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C426, 0x4063A820,
+-	// Block 521, offset 0x8240
+-	0x40646420, 0x00000003, 0x4062C427, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C428, 0x4063A820, 0x40646420, 0x00000003, 0x4062C429, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C42A, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C42B, 0x4063A820, 0x40646420, 0x00000003, 0x4062C42C, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C42D, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C42E, 0x4063A820, 0x40646420, 0x00000003, 0x4062C42F, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C430, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C431, 0x4063A820, 0x40646420, 0x00000003, 0x4062C432, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C433, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062C434, 0x4063A820, 0x40646420, 0x00000003, 0x4062C435, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062C421, 0x4063A820,
+-	// Block 522, offset 0x8280
+-	0x40646A20, 0x00000003, 0x4062C422, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062C423, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C424, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062C425, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062C426, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C427, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062C428, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062C421, 0x4063A820, 0x40648220, 0x00000003, 0x4062C422, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062C423, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062C424, 0x4063A820, 0x40648220, 0x00000003, 0x4062C425, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062C426, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062C427, 0x4063A820, 0x40648220, 0x00000003, 0x4062C428, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062C429, 0x4063A820,
+-	// Block 523, offset 0x82c0
+-	0x40648220, 0x00000003, 0x4062C421, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062C422, 0x4063A820, 0x40648420, 0x00000003, 0x4062C423, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062C424, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062C425, 0x4063A820, 0x40648420, 0x00000003, 0x4062C426, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062C421, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C422, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C423, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C424, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C425, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C426, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C427, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C428, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C429, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C42A, 0x4063A820,
+-	// Block 524, offset 0x8300
+-	0x40648C20, 0x00000003, 0x4062C42B, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C42C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C42D, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C42E, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C42F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C430, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C431, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C432, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C433, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C434, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C435, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C436, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C437, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C438, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C439, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C43A, 0x4063A820,
+-	// Block 525, offset 0x8340
+-	0x40648C20, 0x00000003, 0x4062C43B, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C43C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C43D, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C43E, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C43F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C440, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C441, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C442, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C443, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C444, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C445, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C446, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C447, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C448, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C449, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C44A, 0x4063A820,
+-	// Block 526, offset 0x8380
+-	0x40648C20, 0x00000003, 0x4062C44B, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C44C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C44D, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C44E, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C44F, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C450, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C451, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C452, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C453, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C454, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062C455, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C456, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062C457, 0x4063A820, 0x40648C20, 0x00000002,
+-	0x4062C421, 0x4063AA20, 0x00000002, 0x4062C422, 0x4063AA20, 0x00000002,
+-	0x4062C423, 0x4063AA20, 0x00000002, 0x4062C424,
+-	// Block 527, offset 0x83c0
+-	0x4063AA20, 0x00000002, 0x4062C425, 0x4063AA20, 0x00000002, 0x4062C426,
+-	0x4063AA20, 0x00000002, 0x4062C427, 0x4063AA20, 0x00000002, 0x4062C428,
+-	0x4063AA20, 0x00000002, 0x4062C429, 0x4063AA20, 0x00000002, 0x4062C42A,
+-	0x4063AA20, 0x00000002, 0x4062C42B, 0x4063AA20, 0x00000002, 0x4062C42C,
+-	0x4063AA20, 0x00000002, 0x4062C42D, 0x4063AA20, 0x00000002, 0x4062C42E,
+-	0x4063AA20, 0x00000002, 0x4062C42F, 0x4063AA20, 0x00000002, 0x4062C430,
+-	0x4063AA20, 0x00000002, 0x4062C431, 0x4063AA20, 0x00000002, 0x4062C432,
+-	0x4063AA20, 0x00000002, 0x4062C433, 0x4063AA20, 0x00000002, 0x4062C434,
+-	0x4063AA20, 0x00000002, 0x4062C435, 0x4063AA20, 0x00000002, 0x4062C436,
+-	0x4063AA20, 0x00000002, 0x4062C437, 0x4063AA20, 0x00000003, 0x4062C421,
+-	0x4063AA20, 0x40648C20, 0x00000003, 0x4062C422,
+-	// Block 528, offset 0x8400
+-	0x4063AA20, 0x40648C20, 0x00000003, 0x4062C423, 0x4063AA20, 0x40648C20,
+-	0x00000003, 0x4062C424, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C425,
+-	0x4063AA20, 0x40648C20, 0x00000003, 0x4062C426, 0x4063AA20, 0x40648C20,
+-	0x00000003, 0x4062C427, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062C428,
+-	0x4063AA20, 0x40648C20, 0x00000002, 0x4062C421, 0x4063B020, 0x00000002,
+-	0x4062C422, 0x4063B020, 0x00000002, 0x4062C423, 0x4063B020, 0x00000002,
+-	0x4062C424, 0x4063B020, 0x00000002, 0x4062C425, 0x4063B020, 0x00000002,
+-	0x4062C426, 0x4063B020, 0x00000002, 0x4062C427, 0x4063B020, 0x00000002,
+-	0x4062C428, 0x4063B020, 0x00000002, 0x4062C429, 0x4063B020, 0x00000002,
+-	0x4062C42A, 0x4063B020, 0x00000002, 0x4062C42B, 0x4063B020, 0x00000002,
+-	0x4062C42C, 0x4063B020, 0x00000002, 0x4062C42D,
+-	// Block 529, offset 0x8440
+-	0x4063B020, 0x00000002, 0x4062C42E, 0x4063B020, 0x00000002, 0x4062C42F,
+-	0x4063B020, 0x00000002, 0x4062C430, 0x4063B020, 0x00000002, 0x4062C431,
+-	0x4063B020, 0x00000002, 0x4062C432, 0x4063B020, 0x00000002, 0x4062C433,
+-	0x4063B020, 0x00000002, 0x4062C434, 0x4063B020, 0x00000002, 0x4062C435,
+-	0x4063B020, 0x00000002, 0x4062C436, 0x4063B020, 0x00000002, 0x4062C437,
+-	0x4063B020, 0x00000002, 0x4062C438, 0x4063B020, 0x00000002, 0x4062C439,
+-	0x4063B020, 0x00000002, 0x4062C43A, 0x4063B020, 0x00000002, 0x4062C43B,
+-	0x4063B020, 0x00000002, 0x4062C43C, 0x4063B020, 0x00000002, 0x4062C43D,
+-	0x4063B020, 0x00000002, 0x4062C43E, 0x4063B020, 0x00000002, 0x4062C43F,
+-	0x4063B020, 0x00000002, 0x4062C440, 0x4063B020, 0x00000002, 0x4062C441,
+-	0x4063B020, 0x00000002, 0x4062C442, 0x4063B020,
+-	// Block 530, offset 0x8480
+-	0x00000002, 0x4062C443, 0x4063B020, 0x00000002, 0x4062C444, 0x4063B020,
+-	0x00000002, 0x4062C445, 0x4063B020, 0x00000002, 0x4062C446, 0x4063B020,
+-	0x00000002, 0x4062C447, 0x4063B020, 0x00000002, 0x4062C448, 0x4063B020,
+-	0x00000002, 0x4062C449, 0x4063B020, 0x00000002, 0x4062C44A, 0x4063B020,
+-	0x00000002, 0x4062C44B, 0x4063B020, 0x00000002, 0x4062C44C, 0x4063B020,
+-	0x00000002, 0x4062C44D, 0x4063B020, 0x00000002, 0x4062C44E, 0x4063B020,
+-	0x00000003, 0x4062C421, 0x4063B020, 0x40646420, 0x00000003, 0x4062C422,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C423, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C424, 0x4063B020, 0x40646420, 0x00000003, 0x4062C425,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C426, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C427, 0x4063B020, 0x40646420,
+-	// Block 531, offset 0x84c0
+-	0x00000003, 0x4062C428, 0x4063B020, 0x40646420, 0x00000003, 0x4062C429,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C42A, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C42B, 0x4063B020, 0x40646420, 0x00000003, 0x4062C42C,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C42D, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C42E, 0x4063B020, 0x40646420, 0x00000003, 0x4062C42F,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C430, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C431, 0x4063B020, 0x40646420, 0x00000003, 0x4062C432,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C433, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C434, 0x4063B020, 0x40646420, 0x00000003, 0x4062C435,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C436, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C437, 0x4063B020, 0x40646420,
+-	// Block 532, offset 0x8500
+-	0x00000003, 0x4062C438, 0x4063B020, 0x40646420, 0x00000003, 0x4062C439,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C43A, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C43B, 0x4063B020, 0x40646420, 0x00000003, 0x4062C43C,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C43D, 0x4063B020, 0x40646420,
+-	0x00000003, 0x4062C43E, 0x4063B020, 0x40646420, 0x00000003, 0x4062C43F,
+-	0x4063B020, 0x40646420, 0x00000003, 0x4062C421, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C422, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C423,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C424, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C425, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C426,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C427, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C428, 0x4063B020, 0x40646A20,
+-	// Block 533, offset 0x8540
+-	0x00000003, 0x4062C429, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C42A,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C42B, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C42C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C42D,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C42E, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C42F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C430,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C431, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C432, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C433,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C434, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C435, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C436,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C437, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C438, 0x4063B020, 0x40646A20,
+-	// Block 534, offset 0x8580
+-	0x00000003, 0x4062C439, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C43A,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C43B, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C43C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C43D,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C43E, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C43F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C440,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C441, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C442, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C443,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C444, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C445, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C446,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C447, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C448, 0x4063B020, 0x40646A20,
+-	// Block 535, offset 0x85c0
+-	0x00000003, 0x4062C449, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C44A,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C44B, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C44C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C44D,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C44E, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C44F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C450,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C451, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C452, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C453,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C454, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C455, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C456,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C457, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C458, 0x4063B020, 0x40646A20,
+-	// Block 536, offset 0x8600
+-	0x00000003, 0x4062C459, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C45A,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C45B, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C45C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C45D,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C45E, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C45F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C460,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C461, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C462, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C463,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C464, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C465, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C466,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C467, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C468, 0x4063B020, 0x40646A20,
+-	// Block 537, offset 0x8640
+-	0x00000003, 0x4062C469, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C46A,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C46B, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C46C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C46D,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C46E, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C46F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C470,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062C471, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062C421, 0x4063B020, 0x40647220, 0x00000003, 0x4062C422,
+-	0x4063B020, 0x40647220, 0x00000003, 0x4062C423, 0x4063B020, 0x40647220,
+-	0x00000003, 0x4062C424, 0x4063B020, 0x40647220, 0x00000003, 0x4062C425,
+-	0x4063B020, 0x40647220, 0x00000003, 0x4062C426, 0x4063B020, 0x40647220,
+-	0x00000003, 0x4062C427, 0x4063B020, 0x40647220,
+-	// Block 538, offset 0x8680
+-	0x00000003, 0x4062C428, 0x4063B020, 0x40647220, 0x00000003, 0x4062C429,
+-	0x4063B020, 0x40647220, 0x00000003, 0x4062C42A, 0x4063B020, 0x40647220,
+-	0x00000003, 0x4062C42B, 0x4063B020, 0x40647220, 0x00000003, 0x4062C421,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C422, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C423, 0x4063B020, 0x40648220, 0x00000003, 0x4062C424,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C425, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C426, 0x4063B020, 0x40648220, 0x00000003, 0x4062C427,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C428, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C429, 0x4063B020, 0x40648220, 0x00000003, 0x4062C42A,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C42B, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C42C, 0x4063B020, 0x40648220,
+-	// Block 539, offset 0x86c0
+-	0x00000003, 0x4062C42D, 0x4063B020, 0x40648220, 0x00000003, 0x4062C42E,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C42F, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C430, 0x4063B020, 0x40648220, 0x00000003, 0x4062C431,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C432, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062C433, 0x4063B020, 0x40648220, 0x00000003, 0x4062C434,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062C421, 0x4063B020, 0x40648420,
+-	0x00000003, 0x4062C422, 0x4063B020, 0x40648420, 0x00000003, 0x4062C423,
+-	0x4063B020, 0x40648420, 0x00000003, 0x4062C424, 0x4063B020, 0x40648420,
+-	0x00000003, 0x4062C425, 0x4063B020, 0x40648420, 0x00000003, 0x4062C426,
+-	0x4063B020, 0x40648420, 0x00000003, 0x4062C427, 0x4063B020, 0x40648420,
+-	0x00000003, 0x4062C428, 0x4063B020, 0x40648420,
+-	// Block 540, offset 0x8700
+-	0x00000003, 0x4062C429, 0x4063B020, 0x40648420, 0x00000003, 0x4062C421,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C422, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C423, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C424,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C425, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C426, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C427,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C428, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C429, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C42A,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C42B, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C42C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C42D,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C42E, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C42F, 0x4063B020, 0x40648C20,
+-	// Block 541, offset 0x8740
+-	0x00000003, 0x4062C430, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C431,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C432, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C433, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C434,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C435, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C436, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C437,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C438, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C439, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C43A,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C43B, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C43C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C43D,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C43E, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C43F, 0x4063B020, 0x40648C20,
+-	// Block 542, offset 0x8780
+-	0x00000003, 0x4062C440, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C441,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C442, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C443, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C444,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C445, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C446, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C447,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C448, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C449, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C44A,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C44B, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C44C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C44D,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C44E, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C44F, 0x4063B020, 0x40648C20,
+-	// Block 543, offset 0x87c0
+-	0x00000003, 0x4062C450, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C451,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C452, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C453, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C454,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C455, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C456, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C457,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C458, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C459, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C45A,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C45B, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C45C, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C45D,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C45E, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C45F, 0x4063B020, 0x40648C20,
+-	// Block 544, offset 0x8800
+-	0x00000003, 0x4062C460, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C461,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C462, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C463, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C464,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C465, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C466, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C467,
+-	0x4063B020, 0x40648C20, 0x00000003, 0x4062C468, 0x4063B020, 0x40648C20,
+-	0x00000003, 0x4062C469, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C46A,
+-	0x4063B020, 0x40648C20, 0x00000002, 0x4062C421, 0x4063B220, 0x00000002,
+-	0x4062C422, 0x4063B220, 0x00000002, 0x4062C423, 0x4063B220, 0x00000002,
+-	0x4062C424, 0x4063B220, 0x00000002, 0x4062C425, 0x4063B220, 0x00000002,
+-	0x4062C426, 0x4063B220, 0x00000002, 0x4062C427,
+-	// Block 545, offset 0x8840
+-	0x4063B220, 0x00000002, 0x4062C428, 0x4063B220, 0x00000002, 0x4062C429,
+-	0x4063B220, 0x00000002, 0x4062C42A, 0x4063B220, 0x00000002, 0x4062C42B,
+-	0x4063B220, 0x00000002, 0x4062C42C, 0x4063B220, 0x00000002, 0x4062C42D,
+-	0x4063B220, 0x00000002, 0x4062C42E, 0x4063B220, 0x00000002, 0x4062C42F,
+-	0x4063B220, 0x00000002, 0x4062C430, 0x4063B220, 0x00000002, 0x4062C431,
+-	0x4063B220, 0x00000002, 0x4062C432, 0x4063B220, 0x00000002, 0x4062C433,
+-	0x4063B220, 0x00000002, 0x4062C434, 0x4063B220, 0x00000002, 0x4062C435,
+-	0x4063B220, 0x00000002, 0x4062C436, 0x4063B220, 0x00000002, 0x4062C437,
+-	0x4063B220, 0x00000002, 0x4062C438, 0x4063B220, 0x00000002, 0x4062C439,
+-	0x4063B220, 0x00000002, 0x4062C43A, 0x4063B220, 0x00000002, 0x4062C43B,
+-	0x4063B220, 0x00000002, 0x4062C43C, 0x4063B220,
+-	// Block 546, offset 0x8880
+-	0x00000002, 0x4062C43D, 0x4063B220, 0x00000002, 0x4062C43E, 0x4063B220,
+-	0x00000002, 0x4062C43F, 0x4063B220, 0x00000002, 0x4062C440, 0x4063B220,
+-	0x00000002, 0x4062C441, 0x4063B220, 0x00000002, 0x4062C442, 0x4063B220,
+-	0x00000002, 0x4062C443, 0x4063B220, 0x00000002, 0x4062C444, 0x4063B220,
+-	0x00000002, 0x4062C445, 0x4063B220, 0x00000002, 0x4062C446, 0x4063B220,
+-	0x00000002, 0x4062C447, 0x4063B220, 0x00000002, 0x4062C448, 0x4063B220,
+-	0x00000002, 0x4062C421, 0x4063B820, 0x00000002, 0x4062C422, 0x4063B820,
+-	0x00000002, 0x4062C423, 0x4063B820, 0x00000002, 0x4062C424, 0x4063B820,
+-	0x00000002, 0x4062C425, 0x4063B820, 0x00000002, 0x4062C426, 0x4063B820,
+-	0x00000002, 0x4062C427, 0x4063B820, 0x00000002, 0x4062C428, 0x4063B820,
+-	0x00000002, 0x4062C429, 0x4063B820, 0x00000002,
+-	// Block 547, offset 0x88c0
+-	0x4062C42A, 0x4063B820, 0x00000002, 0x4062C42B, 0x4063B820, 0x00000002,
+-	0x4062C42C, 0x4063B820, 0x00000002, 0x4062C42D, 0x4063B820, 0x00000002,
+-	0x4062C42E, 0x4063B820, 0x00000002, 0x4062C42F, 0x4063B820, 0x00000002,
+-	0x4062C430, 0x4063B820, 0x00000002, 0x4062C431, 0x4063B820, 0x00000002,
+-	0x4062C432, 0x4063B820, 0x00000002, 0x4062C433, 0x4063B820, 0x00000002,
+-	0x4062C434, 0x4063B820, 0x00000002, 0x4062C435, 0x4063B820, 0x00000002,
+-	0x4062C436, 0x4063B820, 0x00000002, 0x4062C437, 0x4063B820, 0x00000002,
+-	0x4062C438, 0x4063B820, 0x00000002, 0x4062C439, 0x4063B820, 0x00000002,
+-	0x4062C43A, 0x4063B820, 0x00000002, 0x4062C43B, 0x4063B820, 0x00000002,
+-	0x4062C43C, 0x4063B820, 0x00000002, 0x4062C43D, 0x4063B820, 0x00000002,
+-	0x4062C43E, 0x4063B820, 0x00000002, 0x4062C43F,
+-	// Block 548, offset 0x8900
+-	0x4063B820, 0x00000002, 0x4062C440, 0x4063B820, 0x00000002, 0x4062C441,
+-	0x4063B820, 0x00000002, 0x4062C442, 0x4063B820, 0x00000002, 0x4062C443,
+-	0x4063B820, 0x00000002, 0x4062C444, 0x4063B820, 0x00000002, 0x4062C445,
+-	0x4063B820, 0x00000002, 0x4062C446, 0x4063B820, 0x00000002, 0x4062C447,
+-	0x4063B820, 0x00000002, 0x4062C448, 0x4063B820, 0x00000002, 0x4062C449,
+-	0x4063B820, 0x00000002, 0x4062C44A, 0x4063B820, 0x00000002, 0x4062C44B,
+-	0x4063B820, 0x00000002, 0x4062C44C, 0x4063B820, 0x00000002, 0x4062C44D,
+-	0x4063B820, 0x00000002, 0x4062C44E, 0x4063B820, 0x00000002, 0x4062C44F,
+-	0x4063B820, 0x00000002, 0x4062C450, 0x4063B820, 0x00000002, 0x4062C451,
+-	0x4063B820, 0x00000002, 0x4062C452, 0x4063B820, 0x00000002, 0x4062C453,
+-	0x4063B820, 0x00000002, 0x4062C454, 0x4063B820,
+-	// Block 549, offset 0x8940
+-	0x00000002, 0x4062C455, 0x4063B820, 0x00000002, 0x4062C456, 0x4063B820,
+-	0x00000002, 0x4062C457, 0x4063B820, 0x00000002, 0x4062C458, 0x4063B820,
+-	0x00000002, 0x4062C459, 0x4063B820, 0x00000002, 0x4062C45A, 0x4063B820,
+-	0x00000002, 0x4062C45B, 0x4063B820, 0x00000002, 0x4062C45C, 0x4063B820,
+-	0x00000002, 0x4062C45D, 0x4063B820, 0x00000002, 0x4062C45E, 0x4063B820,
+-	0x00000002, 0x4062C45F, 0x4063B820, 0x00000002, 0x4062C460, 0x4063B820,
+-	0x00000002, 0x4062C461, 0x4063B820, 0x00000002, 0x4062C462, 0x4063B820,
+-	0x00000002, 0x4062C463, 0x4063B820, 0x00000002, 0x4062C464, 0x4063B820,
+-	0x00000002, 0x4062C465, 0x4063B820, 0x00000002, 0x4062C466, 0x4063B820,
+-	0x00000002, 0x4062C467, 0x4063B820, 0x00000002, 0x4062C468, 0x4063B820,
+-	0x00000002, 0x4062C469, 0x4063B820, 0x00000002,
+-	// Block 550, offset 0x8980
+-	0x4062C46A, 0x4063B820, 0x00000002, 0x4062C46B, 0x4063B820, 0x00000002,
+-	0x4062C46C, 0x4063B820, 0x00000002, 0x4062C46D, 0x4063B820, 0x00000002,
+-	0x4062C46E, 0x4063B820, 0x00000002, 0x4062C46F, 0x4063B820, 0x00000002,
+-	0x4062C470, 0x4063B820, 0x00000003, 0x4062C421, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062C422, 0x4063B820, 0x40646420, 0x00000003, 0x4062C423,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062C424, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062C425, 0x4063B820, 0x40646420, 0x00000003, 0x4062C421,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062C422, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062C423, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C421,
+-	0x4063B820, 0x40647220, 0x00000003, 0x4062C422, 0x4063B820, 0x40647220,
+-	0x00000003, 0x4062C423, 0x4063B820, 0x40647220,
+-	// Block 551, offset 0x89c0
+-	0x00000003, 0x4062C421, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C422,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C423, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C424, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C425,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C426, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C427, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C428,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C429, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C42A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C42B,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C42C, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C42D, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C42E,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C42F, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C430, 0x4063B820, 0x40648C20,
+-	// Block 552, offset 0x8a00
+-	0x00000003, 0x4062C431, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C432,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C433, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C434, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C435,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C436, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C437, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C438,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062C439, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062C43A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C43B,
+-	0x4063B820, 0x40648C20, 0x00000002, 0x4062C421, 0x4063BA20, 0x00000002,
+-	0x4062C422, 0x4063BA20, 0x00000002, 0x4062C423, 0x4063BA20, 0x00000002,
+-	0x4062C424, 0x4063BA20, 0x00000002, 0x4062C425, 0x4063BA20, 0x00000002,
+-	0x4062C426, 0x4063BA20, 0x00000002, 0x4062C427,
+-	// Block 553, offset 0x8a40
+-	0x4063BA20, 0x00000002, 0x4062C428, 0x4063BA20, 0x00000002, 0x4062C429,
+-	0x4063BA20, 0x00000002, 0x4062C421, 0x4063BE20, 0x00000002, 0x4062C421,
+-	0x4063C220, 0x00000002, 0x4062C422, 0x4063C220, 0x00000002, 0x4062C423,
+-	0x4063C220, 0x00000002, 0x4062C424, 0x4063C220, 0x00000002, 0x4062C425,
+-	0x4063C220, 0x00000002, 0x4062C426, 0x4063C220, 0x00000002, 0x4062C427,
+-	0x4063C220, 0x00000002, 0x4062C428, 0x4063C220, 0x00000002, 0x4062C429,
+-	0x4063C220, 0x00000002, 0x4062C42A, 0x4063C220, 0x00000002, 0x4062C42B,
+-	0x4063C220, 0x00000002, 0x4062C42C, 0x4063C220, 0x00000002, 0x4062C42D,
+-	0x4063C220, 0x00000002, 0x4062C42E, 0x4063C220, 0x00000002, 0x4062C42F,
+-	0x4063C220, 0x00000002, 0x4062C430, 0x4063C220, 0x00000002, 0x4062C431,
+-	0x4063C220, 0x00000002, 0x4062C432, 0x4063C220,
+-	// Block 554, offset 0x8a80
+-	0x00000002, 0x4062C433, 0x4063C220, 0x00000002, 0x4062C434, 0x4063C220,
+-	0x00000002, 0x4062C435, 0x4063C220, 0x00000002, 0x4062C436, 0x4063C220,
+-	0x00000002, 0x4062C437, 0x4063C220, 0x00000002, 0x4062C438, 0x4063C220,
+-	0x00000002, 0x4062C439, 0x4063C220, 0x00000002, 0x4062C43A, 0x4063C220,
+-	0x00000002, 0x4062C43B, 0x4063C220, 0x00000002, 0x4062C43C, 0x4063C220,
+-	0x00000002, 0x4062C43D, 0x4063C220, 0x00000002, 0x4062C43E, 0x4063C220,
+-	0x00000002, 0x4062C43F, 0x4063C220, 0x00000002, 0x4062C440, 0x4063C220,
+-	0x00000002, 0x4062C441, 0x4063C220, 0x00000002, 0x4062C442, 0x4063C220,
+-	0x00000002, 0x4062C443, 0x4063C220, 0x00000002, 0x4062C444, 0x4063C220,
+-	0x00000002, 0x4062C445, 0x4063C220, 0x00000002, 0x4062C446, 0x4063C220,
+-	0x00000002, 0x4062C447, 0x4063C220, 0x00000002,
+-	// Block 555, offset 0x8ac0
+-	0x4062C448, 0x4063C220, 0x00000002, 0x4062C449, 0x4063C220, 0x00000002,
+-	0x4062C44A, 0x4063C220, 0x00000002, 0x4062C44B, 0x4063C220, 0x00000002,
+-	0x4062C44C, 0x4063C220, 0x00000002, 0x4062C44D, 0x4063C220, 0x00000002,
+-	0x4062C44E, 0x4063C220, 0x00000002, 0x4062C44F, 0x4063C220, 0x00000002,
+-	0x4062C450, 0x4063C220, 0x00000002, 0x4062C451, 0x4063C220, 0x00000002,
+-	0x4062C452, 0x4063C220, 0x00000002, 0x4062C453, 0x4063C220, 0x00000002,
+-	0x4062C454, 0x4063C220, 0x00000002, 0x4062C455, 0x4063C220, 0x00000002,
+-	0x4062C456, 0x4063C220, 0x00000002, 0x4062C457, 0x4063C220, 0x00000002,
+-	0x4062C458, 0x4063C220, 0x00000002, 0x4062C459, 0x4063C220, 0x00000002,
+-	0x4062C45A, 0x4063C220, 0x00000002, 0x4062C45B, 0x4063C220, 0x00000002,
+-	0x4062C45C, 0x4063C220, 0x00000002, 0x4062C45D,
+-	// Block 556, offset 0x8b00
+-	0x4063C220, 0x00000002, 0x4062C45E, 0x4063C220, 0x00000003, 0x4062C421,
+-	0x4063C220, 0x40646420, 0x00000003, 0x4062C422, 0x4063C220, 0x40646420,
+-	0x00000003, 0x4062C421, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C422,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C423, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C424, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C425,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C426, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C427, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C428,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C429, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C42A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C42B,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C42C, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C42D, 0x4063C220, 0x40646A20,
+-	// Block 557, offset 0x8b40
+-	0x00000003, 0x4062C42E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C42F,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C430, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C431, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C432,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C433, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C434, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C435,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C436, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C437, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C438,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C439, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C43A, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C43B,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C43C, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C43D, 0x4063C220, 0x40646A20,
+-	// Block 558, offset 0x8b80
+-	0x00000003, 0x4062C43E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C43F,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C440, 0x4063C220, 0x40646A20,
+-	0x00000003, 0x4062C441, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C442,
+-	0x4063C220, 0x40646A20, 0x00000003, 0x4062C421, 0x4063C220, 0x40647220,
+-	0x00000003, 0x4062C422, 0x4063C220, 0x40647220, 0x00000003, 0x4062C421,
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062C422, 0x4063C220, 0x40648C20,
+-	0x00000003, 0x4062C423, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C424,
+-	0x4063C220, 0x40648C20, 0x00000003, 0x4062C425, 0x4063C220, 0x40648C20,
+-	0x00000003, 0x4062C421, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C422,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062C423, 0x4063CC20, 0x40646420,
+-	0x00000003, 0x4062C421, 0x4063CC20, 0x40647220,
+-	// Block 559, offset 0x8bc0
+-	0x00000003, 0x4062C422, 0x4063CC20, 0x40647220, 0x00000003, 0x4062C421,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062C422, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062C423, 0x4063CC20, 0x40648420, 0x00000003, 0x4062C424,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062C425, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062C421, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C422,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062C423, 0x4063CC20, 0x40648C20,
+-	0x00000003, 0x4062C424, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C425,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062C426, 0x4063CC20, 0x40648C20,
+-	0x00000003, 0x4062C427, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C428,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062C429, 0x4063CC20, 0x40648C20,
+-	0x00000003, 0x4062C42A, 0x4063CC20, 0x40648C20,
+-	// Block 560, offset 0x8c00
+-	0x00000003, 0x4062C42B, 0x4063CC20, 0x40648C20, 0x00000003, 0x4062C42C,
+-	0x4063CC20, 0x40648C20, 0x00000003, 0x4062C42D, 0x4063CC20, 0x40648C20,
+-	0x00000003, 0x4062C42E, 0x4063CC20, 0x40648C20, 0x00000002, 0x4062C421,
+-	0x4063D020, 0x00000002, 0x4062C422, 0x4063D020, 0x00000002, 0x4062C423,
+-	0x4063D020, 0x00000002, 0x4062C424, 0x4063D020, 0x00000002, 0x4062C425,
+-	0x4063D020, 0x00000002, 0x4062C426, 0x4063D020, 0x00000002, 0x4062C427,
+-	0x4063D020, 0x00000002, 0x4062C428, 0x4063D020, 0x00000002, 0x4062C429,
+-	0x4063D020, 0x00000002, 0x4062C42A, 0x4063D020, 0x00000002, 0x4062C42B,
+-	0x4063D020, 0x00000002, 0x4062C42C, 0x4063D020, 0x00000002, 0x4062C42D,
+-	0x4063D020, 0x00000002, 0x4062C42E, 0x4063D020, 0x00000002, 0x4062C42F,
+-	0x4063D020, 0x00000002, 0x4062C430, 0x4063D020,
+-	// Block 561, offset 0x8c40
+-	0x00000002, 0x4062C431, 0x4063D020, 0x00000002, 0x4062C432, 0x4063D020,
+-	0x00000002, 0x4062C433, 0x4063D020, 0x00000002, 0x4062C434, 0x4063D020,
+-	0x00000002, 0x4062C435, 0x4063D020, 0x00000002, 0x4062C436, 0x4063D020,
+-	0x00000002, 0x4062C437, 0x4063D020, 0x00000002, 0x4062C438, 0x4063D020,
+-	0x00000002, 0x4062C439, 0x4063D020, 0x00000002, 0x4062C43A, 0x4063D020,
+-	0x00000002, 0x4062C43B, 0x4063D020, 0x00000002, 0x4062C43C, 0x4063D020,
+-	0x00000002, 0x4062C43D, 0x4063D020, 0x00000002, 0x4062C43E, 0x4063D020,
+-	0x00000002, 0x4062C43F, 0x4063D020, 0x00000002, 0x4062C440, 0x4063D020,
+-	0x00000002, 0x4062C441, 0x4063D020, 0x00000002, 0x4062C442, 0x4063D020,
+-	0x00000002, 0x4062C443, 0x4063D020, 0x00000002, 0x4062C444, 0x4063D020,
+-	0x00000002, 0x4062C445, 0x4063D020, 0x00000002,
+-	// Block 562, offset 0x8c80
+-	0x4062C446, 0x4063D020, 0x00000002, 0x4062C447, 0x4063D020, 0x00000002,
+-	0x4062C448, 0x4063D020, 0x00000002, 0x4062C449, 0x4063D020, 0x00000002,
+-	0x4062C44A, 0x4063D020, 0x00000002, 0x4062C44B, 0x4063D020, 0x00000002,
+-	0x4062C44C, 0x4063D020, 0x00000002, 0x4062C44D, 0x4063D020, 0x00000002,
+-	0x4062C44E, 0x4063D020, 0x00000002, 0x4062C44F, 0x4063D020, 0x00000002,
+-	0x4062C450, 0x4063D020, 0x00000003, 0x4062C421, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062C422, 0x4063D020, 0x40646420, 0x00000003, 0x4062C423,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062C424, 0x4063D020, 0x40646420,
+-	0x00000003, 0x4062C425, 0x4063D020, 0x40646420, 0x00000003, 0x4062C426,
+-	0x4063D020, 0x40646420, 0x00000003, 0x4062C421, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C422, 0x4063D020, 0x40646A20,
+-	// Block 563, offset 0x8cc0
+-	0x00000003, 0x4062C423, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C424,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C425, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C426, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C427,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C428, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C429, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C42A,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C42B, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C42C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C42D,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C42E, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C42F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C430,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C431, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C432, 0x4063D020, 0x40646A20,
+-	// Block 564, offset 0x8d00
+-	0x00000003, 0x4062C433, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C434,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C435, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C436, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C437,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C438, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C439, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C43A,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C43B, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C43C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C43D,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C43E, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C43F, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C440,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C441, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C442, 0x4063D020, 0x40646A20,
+-	// Block 565, offset 0x8d40
+-	0x00000003, 0x4062C443, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C444,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C445, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C446, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C447,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C448, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C449, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C44A,
+-	0x4063D020, 0x40646A20, 0x00000003, 0x4062C44B, 0x4063D020, 0x40646A20,
+-	0x00000003, 0x4062C44C, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C421,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C422, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C423, 0x4063D020, 0x40647220, 0x00000003, 0x4062C424,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C425, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C426, 0x4063D020, 0x40647220,
+-	// Block 566, offset 0x8d80
+-	0x00000003, 0x4062C427, 0x4063D020, 0x40647220, 0x00000003, 0x4062C428,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C429, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C42A, 0x4063D020, 0x40647220, 0x00000003, 0x4062C42B,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C42C, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C42D, 0x4063D020, 0x40647220, 0x00000003, 0x4062C42E,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C42F, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C430, 0x4063D020, 0x40647220, 0x00000003, 0x4062C431,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C432, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062C433, 0x4063D020, 0x40647220, 0x00000003, 0x4062C434,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062C421, 0x4063D020, 0x40648220,
+-	0x00000003, 0x4062C422, 0x4063D020, 0x40648220,
+-	// Block 567, offset 0x8dc0
+-	0x00000003, 0x4062C423, 0x4063D020, 0x40648220, 0x00000003, 0x4062C421,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062C422, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062C423, 0x4063D020, 0x40648420, 0x00000003, 0x4062C424,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062C425, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062C426, 0x4063D020, 0x40648420, 0x00000003, 0x4062C427,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062C428, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062C421, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C422,
+-	0x4063D020, 0x40648C20, 0x00000003, 0x4062C423, 0x4063D020, 0x40648C20,
+-	0x00000003, 0x4062C424, 0x4063D020, 0x40648C20, 0x00000003, 0x4062C425,
+-	0x4063D020, 0x40648C20, 0x00000003, 0x4062C426, 0x4063D020, 0x40648C20,
+-	0x00000003, 0x4062C427, 0x4063D020, 0x40648C20,
+-	// Block 568, offset 0x8e00
+-	0x00000002, 0x4062C821, 0x4063A820, 0x00000002, 0x4062C822, 0x4063A820,
+-	0x00000002, 0x4062C823, 0x4063A820, 0x00000002, 0x4062C824, 0x4063A820,
+-	0x00000002, 0x4062C825, 0x4063A820, 0x00000002, 0x4062C826, 0x4063A820,
+-	0x00000002, 0x4062C827, 0x4063A820, 0x00000002, 0x4062C828, 0x4063A820,
+-	0x00000002, 0x4062C829, 0x4063A820, 0x00000002, 0x4062C82A, 0x4063A820,
+-	0x00000002, 0x4062C82B, 0x4063A820, 0x00000002, 0x4062C82C, 0x4063A820,
+-	0x00000002, 0x4062C82D, 0x4063A820, 0x00000002, 0x4062C82E, 0x4063A820,
+-	0x00000002, 0x4062C82F, 0x4063A820, 0x00000002, 0x4062C830, 0x4063A820,
+-	0x00000002, 0x4062C831, 0x4063A820, 0x00000002, 0x4062C832, 0x4063A820,
+-	0x00000002, 0x4062C833, 0x4063A820, 0x00000002, 0x4062C834, 0x4063A820,
+-	0x00000002, 0x4062C835, 0x4063A820, 0x00000002,
+-	// Block 569, offset 0x8e40
+-	0x4062C836, 0x4063A820, 0x00000003, 0x4062C821, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C822, 0x4063A820, 0x40646420, 0x00000003, 0x4062C823,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C824, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C825, 0x4063A820, 0x40646420, 0x00000003, 0x4062C826,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C827, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C828, 0x4063A820, 0x40646420, 0x00000003, 0x4062C829,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062C82A, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062C821, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C822,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C823, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C824, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C825,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C826,
+-	// Block 570, offset 0x8e80
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C827, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C828, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C829,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C82A, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C82B, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C82C,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C82D, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C82E, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C82F,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C830, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C831, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C832,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C833, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C834, 0x4063A820, 0x40646A20, 0x00000003, 0x4062C835,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C836,
+-	// Block 571, offset 0x8ec0
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062C837, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062C821, 0x4063A820, 0x40647220, 0x00000003, 0x4062C822,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C823, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C824, 0x4063A820, 0x40647220, 0x00000003, 0x4062C825,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062C826, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062C827, 0x4063A820, 0x40647220, 0x00000003, 0x4062C821,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C822, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C823, 0x4063A820, 0x40648220, 0x00000003, 0x4062C824,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C825, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C826, 0x4063A820, 0x40648220, 0x00000003, 0x4062C827,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C828,
+-	// Block 572, offset 0x8f00
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C829, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C82A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C82B,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C82C, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C82D, 0x4063A820, 0x40648220, 0x00000003, 0x4062C82E,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C82F, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C830, 0x4063A820, 0x40648220, 0x00000003, 0x4062C831,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C832, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C833, 0x4063A820, 0x40648220, 0x00000003, 0x4062C834,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C835, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C836, 0x4063A820, 0x40648220, 0x00000003, 0x4062C837,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C838,
+-	// Block 573, offset 0x8f40
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062C839, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062C83A, 0x4063A820, 0x40648220, 0x00000003, 0x4062C821,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C822, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C823, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C824,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C825, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C826, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C827,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C828, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C829, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C82A,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C82B, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C82C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C82D,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C82E,
+-	// Block 574, offset 0x8f80
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C82F, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C830, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C831,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C832, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C833, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C834,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C835, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C836, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C837,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C838, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C839, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C83A,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C83B, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C83C, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C83D,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C83E,
+-	// Block 575, offset 0x8fc0
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C83F, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C840, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C841,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C842, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C843, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C844,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C845, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C846, 0x4063A820, 0x40648C20, 0x00000003, 0x4062C847,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062C848, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062C849, 0x4063A820, 0x40648C20, 0x00000002, 0x4062C821,
+-	0x4063AA20, 0x00000002, 0x4062C822, 0x4063AA20, 0x00000002, 0x4062C823,
+-	0x4063AA20, 0x00000002, 0x4062C824, 0x4063AA20, 0x00000002, 0x4062C825,
+-	0x4063AA20, 0x00000002, 0x4062C826, 0x4063AA20,
+-	// Block 576, offset 0x9000
+-	0x00000002, 0x4062C827, 0x4063AA20, 0x00000002, 0x4062C828, 0x4063AA20,
+-	0x00000002, 0x4062C829, 0x4063AA20, 0x00000002, 0x4062C82A, 0x4063AA20,
+-	0x00000002, 0x4062C82B, 0x4063AA20, 0x00000002, 0x4062C82C, 0x4063AA20,
+-	0x00000002, 0x4062C82D, 0x4063AA20, 0x00000002, 0x4062C82E, 0x4063AA20,
+-	0x00000003, 0x4062C821, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C822,
+-	0x4063AA20, 0x40646420, 0x00000003, 0x4062C823, 0x4063AA20, 0x40646420,
+-	0x00000003, 0x4062C824, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C825,
+-	0x4063AA20, 0x40646420, 0x00000003, 0x4062C826, 0x4063AA20, 0x40646420,
+-	0x00000003, 0x4062C827, 0x4063AA20, 0x40646420, 0x00000003, 0x4062C828,
+-	0x4063AA20, 0x40646420, 0x00000003, 0x4062C829, 0x4063AA20, 0x40646420,
+-	0x00000003, 0x4062C82A, 0x4063AA20, 0x40646420,
+-	// Block 577, offset 0x9040
+-	0x00000002, 0x4062C821, 0x4063B020, 0x00000002, 0x4062C822, 0x4063B020,
+-	0x00000002, 0x4062C823, 0x4063B020, 0x00000002, 0x4062C824, 0x4063B020,
+-	0x00000002, 0x4062C825, 0x4063B020, 0x00000002, 0x4062C826, 0x4063B020,
+-	0x00000002, 0x4062C827, 0x4063B020, 0x00000002, 0x4062C828, 0x4063B020,
+-	0x00000002, 0x4062C829, 0x4063B020, 0x00000003, 0x4062C821, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C822, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C823, 0x4063B020, 0x40646420, 0x00000003, 0x4062C824, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C825, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C826, 0x4063B020, 0x40646420, 0x00000003, 0x4062C827, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C828, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C829, 0x4063B020, 0x40646420, 0x00000003,
+-	// Block 578, offset 0x9080
+-	0x4062C82A, 0x4063B020, 0x40646420, 0x00000003, 0x4062C82B, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C82C, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C82D, 0x4063B020, 0x40646420, 0x00000003, 0x4062C82E, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C82F, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C830, 0x4063B020, 0x40646420, 0x00000003, 0x4062C831, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C832, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C833, 0x4063B020, 0x40646420, 0x00000003, 0x4062C834, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C835, 0x4063B020, 0x40646420, 0x00000003,
+-	0x4062C836, 0x4063B020, 0x40646420, 0x00000003, 0x4062C837, 0x4063B020,
+-	0x40646420, 0x00000003, 0x4062C821, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C822, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 579, offset 0x90c0
+-	0x4062C823, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C824, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C825, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C826, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C827, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C828, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C829, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C82A, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C82B, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C82C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C82D, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C82E, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C82F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C830, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C831, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C832, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 580, offset 0x9100
+-	0x4062C833, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C834, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C835, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C836, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C837, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C838, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C839, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C83A, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C83B, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C83C, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C83D, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C83E, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C83F, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C840, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C841, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C842, 0x4063B020, 0x40646A20, 0x00000003,
+-	// Block 581, offset 0x9140
+-	0x4062C843, 0x4063B020, 0x40646A20, 0x00000003, 0x4062C844, 0x4063B020,
+-	0x40646A20, 0x00000003, 0x4062C845, 0x4063B020, 0x40646A20, 0x00000003,
+-	0x4062C821, 0x4063B020, 0x40647220, 0x00000003, 0x4062C822, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C823, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C824, 0x4063B020, 0x40647220, 0x00000003, 0x4062C825, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C826, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C827, 0x4063B020, 0x40647220, 0x00000003, 0x4062C828, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C829, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C82A, 0x4063B020, 0x40647220, 0x00000003, 0x4062C82B, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C82C, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C82D, 0x4063B020, 0x40647220, 0x00000003,
+-	// Block 582, offset 0x9180
+-	0x4062C82E, 0x4063B020, 0x40647220, 0x00000003, 0x4062C82F, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C830, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C831, 0x4063B020, 0x40647220, 0x00000003, 0x4062C832, 0x4063B020,
+-	0x40647220, 0x00000003, 0x4062C833, 0x4063B020, 0x40647220, 0x00000003,
+-	0x4062C834, 0x4063B020, 0x40647220, 0x00000003, 0x4062C821, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C822, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C823, 0x4063B020, 0x40648220, 0x00000003, 0x4062C824, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C825, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C826, 0x4063B020, 0x40648220, 0x00000003, 0x4062C827, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C828, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C829, 0x4063B020, 0x40648220, 0x00000003,
+-	// Block 583, offset 0x91c0
+-	0x4062C82A, 0x4063B020, 0x40648220, 0x00000003, 0x4062C82B, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C82C, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C82D, 0x4063B020, 0x40648220, 0x00000003, 0x4062C82E, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C82F, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C830, 0x4063B020, 0x40648220, 0x00000003, 0x4062C831, 0x4063B020,
+-	0x40648220, 0x00000003, 0x4062C832, 0x4063B020, 0x40648220, 0x00000003,
+-	0x4062C821, 0x4063B020, 0x40648420, 0x00000003, 0x4062C822, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062C823, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062C824, 0x4063B020, 0x40648420, 0x00000003, 0x4062C825, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062C826, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062C827, 0x4063B020, 0x40648420, 0x00000003,
+-	// Block 584, offset 0x9200
+-	0x4062C828, 0x4063B020, 0x40648420, 0x00000003, 0x4062C829, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062C82A, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062C82B, 0x4063B020, 0x40648420, 0x00000003, 0x4062C82C, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062C82D, 0x4063B020, 0x40648420, 0x00000003,
+-	0x4062C82E, 0x4063B020, 0x40648420, 0x00000003, 0x4062C82F, 0x4063B020,
+-	0x40648420, 0x00000003, 0x4062C821, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062C822, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C823, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062C824, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062C825, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C826, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062C827, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062C828, 0x4063B020, 0x40648C20, 0x00000003,
+-	// Block 585, offset 0x9240
+-	0x4062C829, 0x4063B020, 0x40648C20, 0x00000003, 0x4062C82A, 0x4063B020,
+-	0x40648C20, 0x00000003, 0x4062C82B, 0x4063B020, 0x40648C20, 0x00000003,
+-	0x4062C82C, 0x4063B020, 0x40648C20, 0x00000002, 0x4062C821, 0x4063B220,
+-	0x00000002, 0x4062C822, 0x4063B220, 0x00000002, 0x4062C823, 0x4063B220,
+-	0x00000002, 0x4062C824, 0x4063B220, 0x00000002, 0x4062C825, 0x4063B220,
+-	0x00000002, 0x4062C826, 0x4063B220, 0x00000002, 0x4062C827, 0x4063B220,
+-	0x00000002, 0x4062C828, 0x4063B220, 0x00000002, 0x4062C829, 0x4063B220,
+-	0x00000002, 0x4062C82A, 0x4063B220, 0x00000002, 0x4062C82B, 0x4063B220,
+-	0x00000002, 0x4062C82C, 0x4063B220, 0x00000002, 0x4062C82D, 0x4063B220,
+-	0x00000002, 0x4062C82E, 0x4063B220, 0x00000002, 0x4062C82F, 0x4063B220,
+-	0x00000002, 0x4062C830, 0x4063B220, 0x00000002,
+-	// Block 586, offset 0x9280
+-	0x4062C831, 0x4063B220, 0x00000002, 0x4062C832, 0x4063B220, 0x00000002,
+-	0x4062C833, 0x4063B220, 0x00000002, 0x4062C834, 0x4063B220, 0x00000002,
+-	0x4062C821, 0x4063B820, 0x00000002, 0x4062C822, 0x4063B820, 0x00000002,
+-	0x4062C823, 0x4063B820, 0x00000002, 0x4062C824, 0x4063B820, 0x00000002,
+-	0x4062C825, 0x4063B820, 0x00000002, 0x4062C826, 0x4063B820, 0x00000002,
+-	0x4062C827, 0x4063B820, 0x00000002, 0x4062C828, 0x4063B820, 0x00000002,
+-	0x4062C829, 0x4063B820, 0x00000002, 0x4062C82A, 0x4063B820, 0x00000002,
+-	0x4062C82B, 0x4063B820, 0x00000002, 0x4062C82C, 0x4063B820, 0x00000002,
+-	0x4062C82D, 0x4063B820, 0x00000002, 0x4062C82E, 0x4063B820, 0x00000002,
+-	0x4062C82F, 0x4063B820, 0x00000002, 0x4062C830, 0x4063B820, 0x00000002,
+-	0x4062C831, 0x4063B820, 0x00000002, 0x4062C832,
+-	// Block 587, offset 0x92c0
+-	0x4063B820, 0x00000002, 0x4062C833, 0x4063B820, 0x00000002, 0x4062C834,
+-	0x4063B820, 0x00000002, 0x4062C835, 0x4063B820, 0x00000002, 0x4062C836,
+-	0x4063B820, 0x00000002, 0x4062C837, 0x4063B820, 0x00000002, 0x4062C838,
+-	0x4063B820, 0x00000002, 0x4062C839, 0x4063B820, 0x00000002, 0x4062C83A,
+-	0x4063B820, 0x00000002, 0x4062C83B, 0x4063B820, 0x00000002, 0x4062C83C,
+-	0x4063B820, 0x00000002, 0x4062C83D, 0x4063B820, 0x00000002, 0x4062C83E,
+-	0x4063B820, 0x00000002, 0x4062C83F, 0x4063B820, 0x00000002, 0x4062C840,
+-	0x4063B820, 0x00000002, 0x4062C841, 0x4063B820, 0x00000002, 0x4062C842,
+-	0x4063B820, 0x00000002, 0x4062C843, 0x4063B820, 0x00000002, 0x4062C844,
+-	0x4063B820, 0x00000002, 0x4062C845, 0x4063B820, 0x00000002, 0x4062C846,
+-	0x4063B820, 0x00000002, 0x4062C847, 0x4063B820,
+-	// Block 588, offset 0x9300
+-	0x00000002, 0x4062C848, 0x4063B820, 0x00000002, 0x4062C849, 0x4063B820,
+-	0x00000002, 0x4062C84A, 0x4063B820, 0x00000002, 0x4062C84B, 0x4063B820,
+-	0x00000002, 0x4062C84C, 0x4063B820, 0x00000002, 0x4062C84D, 0x4063B820,
+-	0x00000002, 0x4062C84E, 0x4063B820, 0x00000002, 0x4062C84F, 0x4063B820,
+-	0x00000002, 0x4062C850, 0x4063B820, 0x00000002, 0x4062C851, 0x4063B820,
+-	0x00000002, 0x4062C852, 0x4063B820, 0x00000002, 0x4062C853, 0x4063B820,
+-	0x00000002, 0x4062C854, 0x4063B820, 0x00000002, 0x4062C855, 0x4063B820,
+-	0x00000002, 0x4062C856, 0x4063B820, 0x00000002, 0x4062C857, 0x4063B820,
+-	0x00000002, 0x4062C858, 0x4063B820, 0x00000003, 0x4062C821, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062C822, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062C823, 0x4063B820, 0x40646420, 0x00000003,
+-	// Block 589, offset 0x9340
+-	0x4062C824, 0x4063B820, 0x40646420, 0x00000003, 0x4062C825, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062C826, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062C827, 0x4063B820, 0x40646420, 0x00000003, 0x4062C828, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062C829, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062C82A, 0x4063B820, 0x40646420, 0x00000003, 0x4062C82B, 0x4063B820,
+-	0x40646420, 0x00000003, 0x4062C82C, 0x4063B820, 0x40646420, 0x00000003,
+-	0x4062C821, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C822, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C823, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062C824, 0x4063B820, 0x40646A20, 0x00000003, 0x4062C825, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062C821, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C822, 0x4063B820, 0x40648C20, 0x00000003,
+-	// Block 590, offset 0x9380
+-	0x4062C823, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C824, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C825, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C826, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C827, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C828, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C829, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C82A, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C82B, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C82C, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C82D, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062C82E, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062C82F, 0x4063B820, 0x40648C20, 0x00000003, 0x4062C821, 0x4063BA20,
+-	0x40647220, 0x00000002, 0x4062C821, 0x4063BE20, 0x00000002, 0x4062C822,
+-	0x4063BE20, 0x00000002, 0x4062C823, 0x4063BE20,
+-	// Block 591, offset 0x93c0
+-	0x00000002, 0x4062C824, 0x4063BE20, 0x00000002, 0x4062C825, 0x4063BE20,
+-	0x00000002, 0x4062C826, 0x4063BE20, 0x00000002, 0x4062C827, 0x4063BE20,
+-	0x00000002, 0x4062C828, 0x4063BE20, 0x00000002, 0x4062C829, 0x4063BE20,
+-	0x00000002, 0x4062C82A, 0x4063BE20, 0x00000002, 0x4062C82B, 0x4063BE20,
+-	0x00000002, 0x4062C821, 0x4063C220, 0x00000002, 0x4062C822, 0x4063C220,
+-	0x00000002, 0x4062C823, 0x4063C220, 0x00000002, 0x4062C824, 0x4063C220,
+-	0x00000002, 0x4062C825, 0x4063C220, 0x00000002, 0x4062C826, 0x4063C220,
+-	0x00000002, 0x4062C827, 0x4063C220, 0x00000002, 0x4062C828, 0x4063C220,
+-	0x00000002, 0x4062C829, 0x4063C220, 0x00000002, 0x4062C82A, 0x4063C220,
+-	0x00000002, 0x4062C82B, 0x4063C220, 0x00000002, 0x4062C82C, 0x4063C220,
+-	0x00000002, 0x4062C82D, 0x4063C220, 0x00000002,
+-	// Block 592, offset 0x9400
+-	0x4062C82E, 0x4063C220, 0x00000002, 0x4062C82F, 0x4063C220, 0x00000002,
+-	0x4062C830, 0x4063C220, 0x00000002, 0x4062C831, 0x4063C220, 0x00000002,
+-	0x4062C832, 0x4063C220, 0x00000002, 0x4062C833, 0x4063C220, 0x00000002,
+-	0x4062C834, 0x4063C220, 0x00000002, 0x4062C835, 0x4063C220, 0x00000002,
+-	0x4062C836, 0x4063C220, 0x00000002, 0x4062C837, 0x4063C220, 0x00000002,
+-	0x4062C838, 0x4063C220, 0x00000002, 0x4062C839, 0x4063C220, 0x00000002,
+-	0x4062C83A, 0x4063C220, 0x00000002, 0x4062C83B, 0x4063C220, 0x00000002,
+-	0x4062C83C, 0x4063C220, 0x00000002, 0x4062C83D, 0x4063C220, 0x00000002,
+-	0x4062C83E, 0x4063C220, 0x00000002, 0x4062C83F, 0x4063C220, 0x00000002,
+-	0x4062C840, 0x4063C220, 0x00000002, 0x4062C841, 0x4063C220, 0x00000002,
+-	0x4062C842, 0x4063C220, 0x00000002, 0x4062C843,
+-	// Block 593, offset 0x9440
+-	0x4063C220, 0x00000002, 0x4062C844, 0x4063C220, 0x00000002, 0x4062C845,
+-	0x4063C220, 0x00000002, 0x4062C846, 0x4063C220, 0x00000002, 0x4062C847,
+-	0x4063C220, 0x00000002, 0x4062C848, 0x4063C220, 0x00000002, 0x4062C849,
+-	0x4063C220, 0x00000002, 0x4062C84A, 0x4063C220, 0x00000002, 0x4062C84B,
+-	0x4063C220, 0x00000002, 0x4062C84C, 0x4063C220, 0x00000002, 0x4062C84D,
+-	0x4063C220, 0x00000002, 0x4062C84E, 0x4063C220, 0x00000002, 0x4062C84F,
+-	0x4063C220, 0x00000002, 0x4062C850, 0x4063C220, 0x00000002, 0x4062C851,
+-	0x4063C220, 0x00000002, 0x4062C852, 0x4063C220, 0x00000002, 0x4062C853,
+-	0x4063C220, 0x00000003, 0x4062C821, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C822, 0x4063C220, 0x40646420, 0x00000003, 0x4062C823, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C824, 0x4063C220,
+-	// Block 594, offset 0x9480
+-	0x40646420, 0x00000003, 0x4062C825, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C826, 0x4063C220, 0x40646420, 0x00000003, 0x4062C827, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C828, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C829, 0x4063C220, 0x40646420, 0x00000003, 0x4062C82A, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C82B, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C82C, 0x4063C220, 0x40646420, 0x00000003, 0x4062C82D, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C82E, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C82F, 0x4063C220, 0x40646420, 0x00000003, 0x4062C830, 0x4063C220,
+-	0x40646420, 0x00000003, 0x4062C831, 0x4063C220, 0x40646420, 0x00000003,
+-	0x4062C821, 0x4063C220, 0x40646A20, 0x00000003, 0x4062C822, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062C823, 0x4063C220,
+-	// Block 595, offset 0x94c0
+-	0x40646A20, 0x00000003, 0x4062C821, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062C822, 0x4063C220, 0x40647220, 0x00000003, 0x4062C823, 0x4063C220,
+-	0x40647220, 0x00000003, 0x4062C824, 0x4063C220, 0x40647220, 0x00000003,
+-	0x4062C821, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C822, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062C823, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062C824, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C825, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062C826, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062C827, 0x4063C220, 0x40648C20, 0x00000003, 0x4062C828, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062C829, 0x4063C220, 0x40648C20, 0x00000002,
+-	0x4062C821, 0x4063C620, 0x00000002, 0x4062C822, 0x4063C620, 0x00000002,
+-	0x4062C823, 0x4063C620, 0x00000002, 0x4062C824,
+-	// Block 596, offset 0x9500
+-	0x4063C620, 0x00000002, 0x4062C825, 0x4063C620, 0x00000002, 0x4062C826,
+-	0x4063C620, 0x00000002, 0x4062C827, 0x4063C620, 0x00000002, 0x4062C828,
+-	0x4063C620, 0x00000002, 0x4062C829, 0x4063C620, 0x00000002, 0x4062C821,
+-	0x4063C820, 0x00000002, 0x4062C822, 0x4063C820, 0x00000002, 0x4062C823,
+-	0x4063C820, 0x00000002, 0x4062C824, 0x4063C820, 0x00000002, 0x4062C825,
+-	0x4063C820, 0x00000002, 0x4062C826, 0x4063C820, 0x00000002, 0x4062C827,
+-	0x4063C820, 0x00000002, 0x4062C828, 0x4063C820, 0x00000002, 0x4062C829,
+-	0x4063C820, 0x00000002, 0x4062C82A, 0x4063C820, 0x00000002, 0x4062C82B,
+-	0x4063C820, 0x00000002, 0x4062C82C, 0x4063C820, 0x00000002, 0x4062C82D,
+-	0x4063C820, 0x00000002, 0x4062C82E, 0x4063C820, 0x00000002, 0x4062C82F,
+-	0x4063C820, 0x00000002, 0x4062C830, 0x4063C820,
+-	// Block 597, offset 0x9540
+-	0x00000002, 0x4062C831, 0x4063C820, 0x00000003, 0x4062C821, 0x4063CC20,
+-	0x40646420, 0x00000003, 0x4062C822, 0x4063CC20, 0x40646420, 0x00000003,
+-	0x4062C823, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C824, 0x4063CC20,
+-	0x40646420, 0x00000003, 0x4062C825, 0x4063CC20, 0x40646420, 0x00000003,
+-	0x4062C826, 0x4063CC20, 0x40646420, 0x00000003, 0x4062C827, 0x4063CC20,
+-	0x40646420, 0x00000003, 0x4062C821, 0x4063CC20, 0x40648C20, 0x00000002,
+-	0x4062C821, 0x4063D020, 0x00000002, 0x4062C822, 0x4063D020, 0x00000002,
+-	0x4062C823, 0x4063D020, 0x00000002, 0x4062C824, 0x4063D020, 0x00000002,
+-	0x4062C825, 0x4063D020, 0x00000002, 0x4062C826, 0x4063D020, 0x00000002,
+-	0x4062C827, 0x4063D020, 0x00000002, 0x4062C828, 0x4063D020, 0x00000002,
+-	0x4062C829, 0x4063D020, 0x00000002, 0x4062C82A,
+-	// Block 598, offset 0x9580
+-	0x4063D020, 0x00000002, 0x4062C82B, 0x4063D020, 0x00000002, 0x4062C82C,
+-	0x4063D020, 0x00000002, 0x4062C82D, 0x4063D020, 0x00000002, 0x4062C82E,
+-	0x4063D020, 0x00000002, 0x4062C82F, 0x4063D020, 0x00000002, 0x4062C830,
+-	0x4063D020, 0x00000002, 0x4062C831, 0x4063D020, 0x00000002, 0x4062C832,
+-	0x4063D020, 0x00000002, 0x4062C833, 0x4063D020, 0x00000002, 0x4062C834,
+-	0x4063D020, 0x00000002, 0x4062C835, 0x4063D020, 0x00000002, 0x4062C836,
+-	0x4063D020, 0x00000002, 0x4062C837, 0x4063D020, 0x00000002, 0x4062C838,
+-	0x4063D020, 0x00000002, 0x4062C839, 0x4063D020, 0x00000002, 0x4062C83A,
+-	0x4063D020, 0x00000002, 0x4062C83B, 0x4063D020, 0x00000002, 0x4062C83C,
+-	0x4063D020, 0x00000002, 0x4062C83D, 0x4063D020, 0x00000002, 0x4062C83E,
+-	0x4063D020, 0x00000002, 0x4062C83F, 0x4063D020,
+-	// Block 599, offset 0x95c0
+-	0x00000002, 0x4062C840, 0x4063D020, 0x00000002, 0x4062C841, 0x4063D020,
+-	0x00000002, 0x4062C842, 0x4063D020, 0x00000002, 0x4062C843, 0x4063D020,
+-	0x00000002, 0x4062C844, 0x4063D020, 0x00000002, 0x4062C845, 0x4063D020,
+-	0x00000002, 0x4062C846, 0x4063D020, 0x00000002, 0x4062C847, 0x4063D020,
+-	0x00000002, 0x4062C848, 0x4063D020, 0x00000002, 0x4062C849, 0x4063D020,
+-	0x00000002, 0x4062C84A, 0x4063D020, 0x00000003, 0x4062C821, 0x4063D020,
+-	0x40646420, 0x00000003, 0x4062C822, 0x4063D020, 0x40646420, 0x00000003,
+-	0x4062C823, 0x4063D020, 0x40646420, 0x00000003, 0x4062C824, 0x4063D020,
+-	0x40646420, 0x00000003, 0x4062C821, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C822, 0x4063D020, 0x40646A20, 0x00000003, 0x4062C823, 0x4063D020,
+-	0x40646A20, 0x00000003, 0x4062C824, 0x4063D020,
+-	// Block 600, offset 0x9600
+-	0x40646A20, 0x00000003, 0x4062C825, 0x4063D020, 0x40646A20, 0x00000003,
+-	0x4062C821, 0x4063D020, 0x40647220, 0x00000003, 0x4062C822, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062C823, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062C821, 0x4063D020, 0x40648220, 0x00000003, 0x4062C822, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C823, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C824, 0x4063D020, 0x40648220, 0x00000003, 0x4062C825, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C826, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C827, 0x4063D020, 0x40648220, 0x00000003, 0x4062C828, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C829, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C82A, 0x4063D020, 0x40648220, 0x00000003, 0x4062C82B, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C82C, 0x4063D020,
+-	// Block 601, offset 0x9640
+-	0x40648220, 0x00000003, 0x4062C82D, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C82E, 0x4063D020, 0x40648220, 0x00000003, 0x4062C82F, 0x4063D020,
+-	0x40648220, 0x00000003, 0x4062C830, 0x4063D020, 0x40648220, 0x00000003,
+-	0x4062C821, 0x4063D020, 0x40648420, 0x00000003, 0x4062C821, 0x4063D020,
+-	0x40648C20, 0x00000003, 0x4062C822, 0x4063D020, 0x40648C20, 0x00000002,
+-	0x4062CA21, 0x4063BC20, 0x00000002, 0x4062CA22, 0x4063BC20, 0x00000002,
+-	0x4062CA23, 0x4063BC20, 0x00000002, 0x4062CC21, 0x4063A820, 0x00000002,
+-	0x4062CC22, 0x4063A820, 0x00000002, 0x4062CC23, 0x4063A820, 0x00000002,
+-	0x4062CC24, 0x4063A820, 0x00000002, 0x4062CC25, 0x4063A820, 0x00000002,
+-	0x4062CC26, 0x4063A820, 0x00000002, 0x4062CC27, 0x4063A820, 0x00000002,
+-	0x4062CC28, 0x4063A820, 0x00000002, 0x4062CC29,
+-	// Block 602, offset 0x9680
+-	0x4063A820, 0x00000002, 0x4062CC2A, 0x4063A820, 0x00000002, 0x4062CC2B,
+-	0x4063A820, 0x00000002, 0x4062CC2C, 0x4063A820, 0x00000002, 0x4062CC2D,
+-	0x4063A820, 0x00000002, 0x4062CC2E, 0x4063A820, 0x00000002, 0x4062CC2F,
+-	0x4063A820, 0x00000002, 0x4062CC30, 0x4063A820, 0x00000002, 0x4062CC31,
+-	0x4063A820, 0x00000002, 0x4062CC32, 0x4063A820, 0x00000002, 0x4062CC33,
+-	0x4063A820, 0x00000002, 0x4062CC34, 0x4063A820, 0x00000002, 0x4062CC35,
+-	0x4063A820, 0x00000002, 0x4062CC36, 0x4063A820, 0x00000002, 0x4062CC37,
+-	0x4063A820, 0x00000002, 0x4062CC38, 0x4063A820, 0x00000002, 0x4062CC39,
+-	0x4063A820, 0x00000002, 0x4062CC3A, 0x4063A820, 0x00000002, 0x4062CC3B,
+-	0x4063A820, 0x00000003, 0x4062CC21, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC22, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 603, offset 0x96c0
+-	0x4062CC23, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC24, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC25, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC26, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC27, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC28, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC29, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC2A, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC2B, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC2C, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC2D, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC2E, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC2F, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC30, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC31, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC32, 0x4063A820, 0x40646420, 0x00000003,
+-	// Block 604, offset 0x9700
+-	0x4062CC33, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC34, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC35, 0x4063A820, 0x40646420, 0x00000003,
+-	0x4062CC36, 0x4063A820, 0x40646420, 0x00000003, 0x4062CC37, 0x4063A820,
+-	0x40646420, 0x00000003, 0x4062CC21, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CC22, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC23, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CC24, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CC25, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC26, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CC27, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CC28, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC29, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CC2A, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CC2B, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 605, offset 0x9740
+-	0x4062CC2C, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC2D, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CC2E, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CC2F, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CC21, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062CC22, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062CC23, 0x4063A820, 0x40647220, 0x00000003, 0x4062CC21, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062CC22, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062CC23, 0x4063A820, 0x40648220, 0x00000003, 0x4062CC24, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062CC25, 0x4063A820, 0x40648220, 0x00000003,
+-	0x4062CC26, 0x4063A820, 0x40648220, 0x00000003, 0x4062CC27, 0x4063A820,
+-	0x40648220, 0x00000003, 0x4062CC21, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062CC22, 0x4063A820, 0x40648420, 0x00000003,
+-	// Block 606, offset 0x9780
+-	0x4062CC23, 0x4063A820, 0x40648420, 0x00000003, 0x4062CC24, 0x4063A820,
+-	0x40648420, 0x00000003, 0x4062CC25, 0x4063A820, 0x40648420, 0x00000003,
+-	0x4062CC26, 0x4063A820, 0x40648420, 0x00000003, 0x4062CC21, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062CC22, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062CC23, 0x4063A820, 0x40648C20, 0x00000003, 0x4062CC24, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062CC25, 0x4063A820, 0x40648C20, 0x00000003,
+-	0x4062CC26, 0x4063A820, 0x40648C20, 0x00000003, 0x4062CC27, 0x4063A820,
+-	0x40648C20, 0x00000003, 0x4062CC28, 0x4063A820, 0x40648C20, 0x00000002,
+-	0x4062CC21, 0x4063AA20, 0x00000002, 0x4062CC22, 0x4063AA20, 0x00000002,
+-	0x4062CC23, 0x4063AA20, 0x00000002, 0x4062CC24, 0x4063AA20, 0x00000002,
+-	0x4062CC25, 0x4063AA20, 0x00000002, 0x4062CC26,
+-	// Block 607, offset 0x97c0
+-	0x4063AA20, 0x00000002, 0x4062CC27, 0x4063AA20, 0x00000002, 0x4062CC28,
+-	0x4063AA20, 0x00000002, 0x4062CC29, 0x4063AA20, 0x00000002, 0x4062CC2A,
+-	0x4063AA20, 0x00000002, 0x4062CC2B, 0x4063AA20, 0x00000002, 0x4062CC2C,
+-	0x4063AA20, 0x00000002, 0x4062CC2D, 0x4063AA20, 0x00000002, 0x4062CC2E,
+-	0x4063AA20, 0x00000002, 0x4062CC2F, 0x4063AA20, 0x00000002, 0x4062CC30,
+-	0x4063AA20, 0x00000002, 0x4062CC31, 0x4063AA20, 0x00000002, 0x4062CC32,
+-	0x4063AA20, 0x00000002, 0x4062CC33, 0x4063AA20, 0x00000002, 0x4062CC34,
+-	0x4063AA20, 0x00000002, 0x4062CC35, 0x4063AA20, 0x00000003, 0x4062CC21,
+-	0x4063AA20, 0x40646420, 0x00000003, 0x4062CC22, 0x4063AA20, 0x40646420,
+-	0x00000003, 0x4062CC21, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CC22,
+-	0x4063AA20, 0x40648C20, 0x00000003, 0x4062CC23,
+-	// Block 608, offset 0x9800
+-	0x4063AA20, 0x40648C20, 0x00000002, 0x4062CC21, 0x4063B020, 0x00000002,
+-	0x4062CC21, 0x4063B820, 0x00000002, 0x4062CC22, 0x4063B820, 0x00000002,
+-	0x4062CC23, 0x4063B820, 0x00000002, 0x4062CC24, 0x4063B820, 0x00000003,
+-	0x4062CC21, 0x4063B820, 0x40646A20, 0x00000003, 0x4062CC22, 0x4063B820,
+-	0x40646A20, 0x00000003, 0x4062CC23, 0x4063B820, 0x40646A20, 0x00000003,
+-	0x4062CC21, 0x4063B820, 0x40648C20, 0x00000003, 0x4062CC22, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062CC23, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062CC24, 0x4063B820, 0x40648C20, 0x00000003, 0x4062CC25, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062CC26, 0x4063B820, 0x40648C20, 0x00000003,
+-	0x4062CC27, 0x4063B820, 0x40648C20, 0x00000003, 0x4062CC28, 0x4063B820,
+-	0x40648C20, 0x00000003, 0x4062CC29, 0x4063B820,
+-	// Block 609, offset 0x9840
+-	0x40648C20, 0x00000002, 0x4062CC21, 0x4063BE20, 0x00000002, 0x4062CC22,
+-	0x4063BE20, 0x00000002, 0x4062CC23, 0x4063BE20, 0x00000002, 0x4062CC24,
+-	0x4063BE20, 0x00000002, 0x4062CC25, 0x4063BE20, 0x00000002, 0x4062CC26,
+-	0x4063BE20, 0x00000002, 0x4062CC27, 0x4063BE20, 0x00000002, 0x4062CC21,
+-	0x4063C220, 0x00000002, 0x4062CC22, 0x4063C220, 0x00000002, 0x4062CC23,
+-	0x4063C220, 0x00000002, 0x4062CC24, 0x4063C220, 0x00000002, 0x4062CC25,
+-	0x4063C220, 0x00000002, 0x4062CC26, 0x4063C220, 0x00000002, 0x4062CC27,
+-	0x4063C220, 0x00000002, 0x4062CC28, 0x4063C220, 0x00000002, 0x4062CC29,
+-	0x4063C220, 0x00000003, 0x4062CC21, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062CC21, 0x4063CC20, 0x40646420, 0x00000003, 0x4062CC22, 0x4063CC20,
+-	0x40646420, 0x00000003, 0x4062CC23, 0x4063CC20,
+-	// Block 610, offset 0x9880
+-	0x40646420, 0x00000003, 0x4062CC21, 0x4063CC20, 0x40648220, 0x00000002,
+-	0x4062CE21, 0x4063A820, 0x00000002, 0x4062CE22, 0x4063A820, 0x00000002,
+-	0x4062CE23, 0x4063A820, 0x00000002, 0x4062CE24, 0x4063A820, 0x00000002,
+-	0x4062CE25, 0x4063A820, 0x00000002, 0x4062CE26, 0x4063A820, 0x00000002,
+-	0x4062CE27, 0x4063A820, 0x00000002, 0x4062CE28, 0x4063A820, 0x00000002,
+-	0x4062CE29, 0x4063A820, 0x00000002, 0x4062CE2A, 0x4063A820, 0x00000002,
+-	0x4062CE2B, 0x4063A820, 0x00000002, 0x4062CE2C, 0x4063A820, 0x00000002,
+-	0x4062CE2D, 0x4063A820, 0x00000002, 0x4062CE2E, 0x4063A820, 0x00000002,
+-	0x4062CE2F, 0x4063A820, 0x00000002, 0x4062CE30, 0x4063A820, 0x00000002,
+-	0x4062CE31, 0x4063A820, 0x00000002, 0x4062CE32, 0x4063A820, 0x00000002,
+-	0x4062CE33, 0x4063A820, 0x00000002, 0x4062CE34,
+-	// Block 611, offset 0x98c0
+-	0x4063A820, 0x00000002, 0x4062CE35, 0x4063A820, 0x00000002, 0x4062CE36,
+-	0x4063A820, 0x00000002, 0x4062CE37, 0x4063A820, 0x00000002, 0x4062CE38,
+-	0x4063A820, 0x00000002, 0x4062CE39, 0x4063A820, 0x00000002, 0x4062CE3A,
+-	0x4063A820, 0x00000002, 0x4062CE3B, 0x4063A820, 0x00000002, 0x4062CE3C,
+-	0x4063A820, 0x00000002, 0x4062CE3D, 0x4063A820, 0x00000002, 0x4062CE3E,
+-	0x4063A820, 0x00000003, 0x4062CE21, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CE22, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE23, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CE24, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CE25, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE26, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CE27, 0x4063A820, 0x40646A20, 0x00000003,
+-	0x4062CE28, 0x4063A820, 0x40646A20, 0x00000003,
+-	// Block 612, offset 0x9900
+-	0x4062CE29, 0x4063A820, 0x40646A20, 0x00000003, 0x4062CE2A, 0x4063A820,
+-	0x40646A20, 0x00000003, 0x4062CE21, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062CE22, 0x4063A820, 0x40647220, 0x00000003, 0x4062CE23, 0x4063A820,
+-	0x40647220, 0x00000003, 0x4062CE24, 0x4063A820, 0x40647220, 0x00000003,
+-	0x4062CE25, 0x4063A820, 0x40647220, 0x00000002, 0x4062CE21, 0x4063AA20,
+-	0x00000002, 0x4062CE22, 0x4063AA20, 0x00000002, 0x4062CE23, 0x4063AA20,
+-	0x00000002, 0x4062CE24, 0x4063AA20, 0x00000002, 0x4062CE25, 0x4063AA20,
+-	0x00000002, 0x4062CE26, 0x4063AA20, 0x00000002, 0x4062CE27, 0x4063AA20,
+-	0x00000002, 0x4062CE28, 0x4063AA20, 0x00000002, 0x4062CE29, 0x4063AA20,
+-	0x00000002, 0x4062CE2A, 0x4063AA20, 0x00000002, 0x4062CE2B, 0x4063AA20,
+-	0x00000002, 0x4062CE2C, 0x4063AA20, 0x00000002,
+-	// Block 613, offset 0x9940
+-	0x4062CE2D, 0x4063AA20, 0x00000002, 0x4062CE2E, 0x4063AA20, 0x00000002,
+-	0x4062CE2F, 0x4063AA20, 0x00000002, 0x4062CE30, 0x4063AA20, 0x00000003,
+-	0x4062CE21, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE22, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062CE23, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062CE24, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE25, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062CE26, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062CE27, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062CE28, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062CE21, 0x4063AC20, 0x40646420, 0x00000003,
+-	0x4062CE21, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE22, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE23, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE24, 0x4063B420, 0x40646A20, 0x00000003,
+-	// Block 614, offset 0x9980
+-	0x4062CE25, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE26, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE27, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE28, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE29, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE2A, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE2B, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2C, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE2D, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE2E, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE2F, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE30, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE31, 0x4063B420, 0x40646A20, 0x00000003, 0x4062CE32, 0x4063B420,
+-	0x40646A20, 0x00000003, 0x4062CE33, 0x4063B420, 0x40646A20, 0x00000003,
+-	0x4062CE21, 0x4063B420, 0x40648220, 0x00000003,
+-	// Block 615, offset 0x99c0
+-	0x4062CE22, 0x4063B420, 0x40648220, 0x00000003, 0x4062CE23, 0x4063B420,
+-	0x40648220, 0x00000003, 0x4062CE21, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062CE22, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE23, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062CE24, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062CE25, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE26, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062CE27, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062CE28, 0x4063B420, 0x40648C20, 0x00000003, 0x4062CE29, 0x4063B420,
+-	0x40648C20, 0x00000003, 0x4062CE2A, 0x4063B420, 0x40648C20, 0x00000003,
+-	0x4062CE2B, 0x4063B420, 0x40648C20, 0x00000002, 0x4062CE21, 0x4063B620,
+-	0x00000002, 0x4062CE22, 0x4063B620, 0x00000002, 0x4062CE23, 0x4063B620,
+-	0x00000002, 0x4062CE24, 0x4063B620, 0x00000002,
+-	// Block 616, offset 0x9a00
+-	0x4062CE25, 0x4063B620, 0x00000002, 0x4062CE26, 0x4063B620, 0x00000002,
+-	0x4062CE27, 0x4063B620, 0x00000002, 0x4062CE28, 0x4063B620, 0x00000002,
+-	0x4062CE29, 0x4063B620, 0x00000002, 0x4062CE2A, 0x4063B620, 0x00000002,
+-	0x4062CE2B, 0x4063B620, 0x00000002, 0x4062CE2C, 0x4063B620, 0x00000002,
+-	0x4062CE2D, 0x4063B620, 0x00000002, 0x4062CE2E, 0x4063B620, 0x00000002,
+-	0x4062CE21, 0x4063B820, 0x00000002, 0x4062CE22, 0x4063B820, 0x00000002,
+-	0x4062CE23, 0x4063B820, 0x00000002, 0x4062CE24, 0x4063B820, 0x00000002,
+-	0x4062CE25, 0x4063B820, 0x00000002, 0x4062CE26, 0x4063B820, 0x00000002,
+-	0x4062CE27, 0x4063B820, 0x00000002, 0x4062CE28, 0x4063B820, 0x00000002,
+-	0x4062CE29, 0x4063B820, 0x00000002, 0x4062CE2A, 0x4063B820, 0x00000002,
+-	0x4062CE2B, 0x4063B820, 0x00000002, 0x4062CE2C,
+-	// Block 617, offset 0x9a40
+-	0x4063B820, 0x00000002, 0x4062CE2D, 0x4063B820, 0x00000002, 0x4062CE2E,
+-	0x4063B820, 0x00000002, 0x4062CE2F, 0x4063B820, 0x00000002, 0x4062CE30,
+-	0x4063B820, 0x00000002, 0x4062CE31, 0x4063B820, 0x00000002, 0x4062CE32,
+-	0x4063B820, 0x00000002, 0x4062CE33, 0x4063B820, 0x00000002, 0x4062CE34,
+-	0x4063B820, 0x00000002, 0x4062CE35, 0x4063B820, 0x00000002, 0x4062CE36,
+-	0x4063B820, 0x00000002, 0x4062CE37, 0x4063B820, 0x00000002, 0x4062CE38,
+-	0x4063B820, 0x00000002, 0x4062CE39, 0x4063B820, 0x00000002, 0x4062CE3A,
+-	0x4063B820, 0x00000002, 0x4062CE3B, 0x4063B820, 0x00000002, 0x4062CE3C,
+-	0x4063B820, 0x00000002, 0x4062CE3D, 0x4063B820, 0x00000002, 0x4062CE3E,
+-	0x4063B820, 0x00000002, 0x4062CE3F, 0x4063B820, 0x00000002, 0x4062CE40,
+-	0x4063B820, 0x00000002, 0x4062CE41, 0x4063B820,
+-	// Block 618, offset 0x9a80
+-	0x00000002, 0x4062CE42, 0x4063B820, 0x00000002, 0x4062CE43, 0x4063B820,
+-	0x00000002, 0x4062CE44, 0x4063B820, 0x00000002, 0x4062CE45, 0x4063B820,
+-	0x00000002, 0x4062CE46, 0x4063B820, 0x00000002, 0x4062CE47, 0x4063B820,
+-	0x00000003, 0x4062CE21, 0x4063B820, 0x40646420, 0x00000003, 0x4062CE22,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062CE23, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062CE24, 0x4063B820, 0x40646420, 0x00000003, 0x4062CE25,
+-	0x4063B820, 0x40646420, 0x00000002, 0x4062CE21, 0x4063C020, 0x00000002,
+-	0x4062CE22, 0x4063C020, 0x00000002, 0x4062CE23, 0x4063C020, 0x00000002,
+-	0x4062CE24, 0x4063C020, 0x00000002, 0x4062CE25, 0x4063C020, 0x00000002,
+-	0x4062CE26, 0x4063C020, 0x00000002, 0x4062CE27, 0x4063C020, 0x00000002,
+-	0x4062CE28, 0x4063C020, 0x00000002, 0x4062CE29,
+-	// Block 619, offset 0x9ac0
+-	0x4063C020, 0x00000002, 0x4062CE2A, 0x4063C020, 0x00000002, 0x4062CE2B,
+-	0x4063C020, 0x00000002, 0x4062CE2C, 0x4063C020, 0x00000002, 0x4062CE2D,
+-	0x4063C020, 0x00000002, 0x4062CE2E, 0x4063C020, 0x00000002, 0x4062CE2F,
+-	0x4063C020, 0x00000002, 0x4062CE30, 0x4063C020, 0x00000002, 0x4062CE31,
+-	0x4063C020, 0x00000002, 0x4062CE32, 0x4063C020, 0x00000002, 0x4062CE33,
+-	0x4063C020, 0x00000002, 0x4062CE34, 0x4063C020, 0x00000002, 0x4062CE35,
+-	0x4063C020, 0x00000002, 0x4062CE36, 0x4063C020, 0x00000002, 0x4062CE37,
+-	0x4063C020, 0x00000002, 0x4062CE38, 0x4063C020, 0x00000002, 0x4062CE39,
+-	0x4063C020, 0x00000002, 0x4062CE3A, 0x4063C020, 0x00000002, 0x4062CE3B,
+-	0x4063C020, 0x00000003, 0x4062CE21, 0x4063C220, 0x40648220, 0x00000003,
+-	0x4062CE22, 0x4063C220, 0x40648220, 0x00000003,
+-	// Block 620, offset 0x9b00
+-	0x4062CE23, 0x4063C220, 0x40648220, 0x00000003, 0x4062CE21, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062CE22, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062CE23, 0x4063C220, 0x40648C20, 0x00000003, 0x4062CE24, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062CE25, 0x4063C220, 0x40648C20, 0x00000003,
+-	0x4062CE26, 0x4063C220, 0x40648C20, 0x00000003, 0x4062CE27, 0x4063C220,
+-	0x40648C20, 0x00000002, 0x4062CE21, 0x4063D020, 0x00000002, 0x4062CE22,
+-	0x4063D020, 0x00000002, 0x4062CE23, 0x4063D020, 0x00000002, 0x4062CE24,
+-	0x4063D020, 0x00000002, 0x4062CE25, 0x4063D020, 0x00000002, 0x4062CE26,
+-	0x4063D020, 0x00000002, 0x4062CE27, 0x4063D020, 0x00000002, 0x4062CE28,
+-	0x4063D020, 0x00000002, 0x4062CE29, 0x4063D020, 0x00000002, 0x4062CE2A,
+-	0x4063D020, 0x00000002, 0x4062CE2B, 0x4063D020,
+-	// Block 621, offset 0x9b40
+-	0x00000003, 0x4062CE21, 0x4063D020, 0x40646420, 0x00000003, 0x4062CE21,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE22, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE23, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE24,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE25, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE26, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE27,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE28, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE29, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE2A,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE2B, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE2C, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE2D,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE2E, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE2F, 0x4063D020, 0x40647220,
+-	// Block 622, offset 0x9b80
+-	0x00000003, 0x4062CE30, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE31,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE32, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE33, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE34,
+-	0x4063D020, 0x40647220, 0x00000003, 0x4062CE35, 0x4063D020, 0x40647220,
+-	0x00000003, 0x4062CE36, 0x4063D020, 0x40647220, 0x00000003, 0x4062CE21,
+-	0x4063D020, 0x40648420, 0x00000003, 0x4062CE22, 0x4063D020, 0x40648420,
+-	0x00000003, 0x4062CE23, 0x4063D020, 0x40648420, 0x00000002, 0x4062D021,
+-	0x4063A820, 0x00000002, 0x4062D022, 0x4063A820, 0x00000002, 0x4062D023,
+-	0x4063A820, 0x00000002, 0x4062D024, 0x4063A820, 0x00000002, 0x4062D025,
+-	0x4063A820, 0x00000002, 0x4062D026, 0x4063A820, 0x00000002, 0x4062D027,
+-	0x4063A820, 0x00000002, 0x4062D028, 0x4063A820,
+-	// Block 623, offset 0x9bc0
+-	0x00000002, 0x4062D029, 0x4063A820, 0x00000002, 0x4062D02A, 0x4063A820,
+-	0x00000002, 0x4062D02B, 0x4063A820, 0x00000002, 0x4062D02C, 0x4063A820,
+-	0x00000002, 0x4062D02D, 0x4063A820, 0x00000002, 0x4062D02E, 0x4063A820,
+-	0x00000002, 0x4062D02F, 0x4063A820, 0x00000002, 0x4062D030, 0x4063A820,
+-	0x00000002, 0x4062D031, 0x4063A820, 0x00000002, 0x4062D032, 0x4063A820,
+-	0x00000002, 0x4062D033, 0x4063A820, 0x00000002, 0x4062D034, 0x4063A820,
+-	0x00000002, 0x4062D035, 0x4063A820, 0x00000002, 0x4062D036, 0x4063A820,
+-	0x00000003, 0x4062D021, 0x4063A820, 0x40646420, 0x00000003, 0x4062D022,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062D023, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062D024, 0x4063A820, 0x40646420, 0x00000003, 0x4062D025,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062D026,
+-	// Block 624, offset 0x9c00
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062D027, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062D028, 0x4063A820, 0x40646420, 0x00000003, 0x4062D029,
+-	0x4063A820, 0x40646420, 0x00000003, 0x4062D02A, 0x4063A820, 0x40646420,
+-	0x00000003, 0x4062D02B, 0x4063A820, 0x40646420, 0x00000003, 0x4062D021,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D022, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D023, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D024,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D025, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D026, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D027,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D028, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D029, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D02A,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D02B,
+-	// Block 625, offset 0x9c40
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D02C, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D02D, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D02E,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D02F, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D030, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D031,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D032, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D033, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D034,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D035, 0x4063A820, 0x40646A20,
+-	0x00000003, 0x4062D036, 0x4063A820, 0x40646A20, 0x00000003, 0x4062D037,
+-	0x4063A820, 0x40646A20, 0x00000003, 0x4062D021, 0x4063A820, 0x40647220,
+-	0x00000003, 0x4062D022, 0x4063A820, 0x40647220, 0x00000003, 0x4062D023,
+-	0x4063A820, 0x40647220, 0x00000003, 0x4062D021,
+-	// Block 626, offset 0x9c80
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D022, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062D023, 0x4063A820, 0x40648220, 0x00000003, 0x4062D024,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D025, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062D026, 0x4063A820, 0x40648220, 0x00000003, 0x4062D027,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D028, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062D029, 0x4063A820, 0x40648220, 0x00000003, 0x4062D02A,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D02B, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062D02C, 0x4063A820, 0x40648220, 0x00000003, 0x4062D02D,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D02E, 0x4063A820, 0x40648220,
+-	0x00000003, 0x4062D02F, 0x4063A820, 0x40648220, 0x00000003, 0x4062D030,
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D031,
+-	// Block 627, offset 0x9cc0
+-	0x4063A820, 0x40648220, 0x00000003, 0x4062D021, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062D022, 0x4063A820, 0x40648420, 0x00000003, 0x4062D023,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062D024, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062D025, 0x4063A820, 0x40648420, 0x00000003, 0x4062D026,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062D027, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062D028, 0x4063A820, 0x40648420, 0x00000003, 0x4062D029,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062D02A, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062D02B, 0x4063A820, 0x40648420, 0x00000003, 0x4062D02C,
+-	0x4063A820, 0x40648420, 0x00000003, 0x4062D02D, 0x4063A820, 0x40648420,
+-	0x00000003, 0x4062D02E, 0x4063A820, 0x40648420, 0x00000003, 0x4062D021,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D022,
+-	// Block 628, offset 0x9d00
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D023, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D024, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D025,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D026, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D027, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D028,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D029, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D02A, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D02B,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D02C, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D02D, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D02E,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D02F, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D030, 0x4063A820, 0x40648C20, 0x00000003, 0x4062D031,
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D032,
+-	// Block 629, offset 0x9d40
+-	0x4063A820, 0x40648C20, 0x00000003, 0x4062D033, 0x4063A820, 0x40648C20,
+-	0x00000003, 0x4062D034, 0x4063A820, 0x40648C20, 0x00000002, 0x4062D021,
+-	0x4063AA20, 0x00000002, 0x4062D022, 0x4063AA20, 0x00000002, 0x4062D023,
+-	0x4063AA20, 0x00000002, 0x4062D024, 0x4063AA20, 0x00000002, 0x4062D025,
+-	0x4063AA20, 0x00000002, 0x4062D026, 0x4063AA20, 0x00000002, 0x4062D027,
+-	0x4063AA20, 0x00000002, 0x4062D028, 0x4063AA20, 0x00000002, 0x4062D029,
+-	0x4063AA20, 0x00000002, 0x4062D02A, 0x4063AA20, 0x00000002, 0x4062D02B,
+-	0x4063AA20, 0x00000002, 0x4062D02C, 0x4063AA20, 0x00000002, 0x4062D02D,
+-	0x4063AA20, 0x00000002, 0x4062D02E, 0x4063AA20, 0x00000002, 0x4062D02F,
+-	0x4063AA20, 0x00000002, 0x4062D030, 0x4063AA20, 0x00000002, 0x4062D031,
+-	0x4063AA20, 0x00000002, 0x4062D032, 0x4063AA20,
+-	// Block 630, offset 0x9d80
+-	0x00000002, 0x4062D033, 0x4063AA20, 0x00000002, 0x4062D034, 0x4063AA20,
+-	0x00000002, 0x4062D035, 0x4063AA20, 0x00000002, 0x4062D036, 0x4063AA20,
+-	0x00000002, 0x4062D037, 0x4063AA20, 0x00000002, 0x4062D038, 0x4063AA20,
+-	0x00000002, 0x4062D039, 0x4063AA20, 0x00000002, 0x4062D03A, 0x4063AA20,
+-	0x00000002, 0x4062D03B, 0x4063AA20, 0x00000002, 0x4062D03C, 0x4063AA20,
+-	0x00000002, 0x4062D03D, 0x4063AA20, 0x00000003, 0x4062D021, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062D022, 0x4063AA20, 0x40646420, 0x00000003,
+-	0x4062D023, 0x4063AA20, 0x40646420, 0x00000003, 0x4062D024, 0x4063AA20,
+-	0x40646420, 0x00000003, 0x4062D021, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062D022, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062D023, 0x4063AA20,
+-	0x40648C20, 0x00000003, 0x4062D024, 0x4063AA20,
+-	// Block 631, offset 0x9dc0
+-	0x40648C20, 0x00000003, 0x4062D025, 0x4063AA20, 0x40648C20, 0x00000003,
+-	0x4062D026, 0x4063AA20, 0x40648C20, 0x00000003, 0x4062D021, 0x4063AC20,
+-	0x40648C20, 0x00000003, 0x4062D022, 0x4063AC20, 0x40648C20, 0x00000003,
+-	0x4062D023, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063AC20,
+-	0x40648C20, 0x00000003, 0x4062D025, 0x4063AC20, 0x40648C20, 0x00000003,
+-	0x4062D026, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D027, 0x4063AC20,
+-	0x40648C20, 0x00000003, 0x4062D028, 0x4063AC20, 0x40648C20, 0x00000003,
+-	0x4062D029, 0x4063AC20, 0x40648C20, 0x00000003, 0x4062D02A, 0x4063AC20,
+-	0x40648C20, 0x00000002, 0x4062D021, 0x4063B020, 0x00000002, 0x4062D022,
+-	0x4063B020, 0x00000002, 0x4062D023, 0x4063B020, 0x00000002, 0x4062D024,
+-	0x4063B020, 0x00000002, 0x4062D025, 0x4063B020,
+-	// Block 632, offset 0x9e00
+-	0x00000003, 0x4062D021, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D022,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062D023, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062D024, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D025,
+-	0x4063B020, 0x40646A20, 0x00000003, 0x4062D026, 0x4063B020, 0x40646A20,
+-	0x00000003, 0x4062D027, 0x4063B020, 0x40646A20, 0x00000003, 0x4062D021,
+-	0x4063B020, 0x40647220, 0x00000003, 0x4062D021, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062D022, 0x4063B020, 0x40648220, 0x00000003, 0x4062D023,
+-	0x4063B020, 0x40648220, 0x00000003, 0x4062D024, 0x4063B020, 0x40648220,
+-	0x00000003, 0x4062D025, 0x4063B020, 0x40648220, 0x00000003, 0x4062D021,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062D022, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062D023, 0x4063B420, 0x40646420,
+-	// Block 633, offset 0x9e40
+-	0x00000003, 0x4062D024, 0x4063B420, 0x40646420, 0x00000003, 0x4062D025,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062D026, 0x4063B420, 0x40646420,
+-	0x00000003, 0x4062D027, 0x4063B420, 0x40646420, 0x00000003, 0x4062D028,
+-	0x4063B420, 0x40646420, 0x00000003, 0x4062D021, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D022, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D023,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D024, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D025, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D026,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D027, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D028, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D029,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D02A, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D02B, 0x4063B420, 0x40646A20,
+-	// Block 634, offset 0x9e80
+-	0x00000003, 0x4062D02C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D02D,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D02E, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D02F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D030,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D031, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D032, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D033,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D034, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D035, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D036,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D037, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D038, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D039,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D03A, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D03B, 0x4063B420, 0x40646A20,
+-	// Block 635, offset 0x9ec0
+-	0x00000003, 0x4062D03C, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D03D,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D03E, 0x4063B420, 0x40646A20,
+-	0x00000003, 0x4062D03F, 0x4063B420, 0x40646A20, 0x00000003, 0x4062D040,
+-	0x4063B420, 0x40646A20, 0x00000003, 0x4062D021, 0x4063B420, 0x40647220,
+-	0x00000003, 0x4062D022, 0x4063B420, 0x40647220, 0x00000003, 0x4062D023,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062D024, 0x4063B420, 0x40647220,
+-	0x00000003, 0x4062D025, 0x4063B420, 0x40647220, 0x00000003, 0x4062D026,
+-	0x4063B420, 0x40647220, 0x00000003, 0x4062D021, 0x4063B420, 0x40648220,
+-	0x00000003, 0x4062D021, 0x4063B420, 0x40648420, 0x00000003, 0x4062D022,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D023, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D024, 0x4063B420, 0x40648420,
+-	// Block 636, offset 0x9f00
+-	0x00000003, 0x4062D025, 0x4063B420, 0x40648420, 0x00000003, 0x4062D026,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D027, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D028, 0x4063B420, 0x40648420, 0x00000003, 0x4062D029,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D02A, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D02B, 0x4063B420, 0x40648420, 0x00000003, 0x4062D02C,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D02D, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D02E, 0x4063B420, 0x40648420, 0x00000003, 0x4062D02F,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D030, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D031, 0x4063B420, 0x40648420, 0x00000003, 0x4062D032,
+-	0x4063B420, 0x40648420, 0x00000003, 0x4062D033, 0x4063B420, 0x40648420,
+-	0x00000003, 0x4062D021, 0x4063B420, 0x40648C20,
+-	// Block 637, offset 0x9f40
+-	0x00000003, 0x4062D022, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D023,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D024, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D025, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D026,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D027, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D028, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D029,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D02A, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D02B, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D02C,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D02D, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D02E, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D02F,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D030, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D031, 0x4063B420, 0x40648C20,
+-	// Block 638, offset 0x9f80
+-	0x00000003, 0x4062D032, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D033,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D034, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D035, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D036,
+-	0x4063B420, 0x40648C20, 0x00000003, 0x4062D037, 0x4063B420, 0x40648C20,
+-	0x00000003, 0x4062D038, 0x4063B420, 0x40648C20, 0x00000003, 0x4062D039,
+-	0x4063B420, 0x40648C20, 0x00000002, 0x4062D021, 0x4063B620, 0x00000002,
+-	0x4062D022, 0x4063B620, 0x00000002, 0x4062D023, 0x4063B620, 0x00000002,
+-	0x4062D024, 0x4063B620, 0x00000002, 0x4062D025, 0x4063B620, 0x00000002,
+-	0x4062D026, 0x4063B620, 0x00000002, 0x4062D027, 0x4063B620, 0x00000002,
+-	0x4062D028, 0x4063B620, 0x00000002, 0x4062D029, 0x4063B620, 0x00000002,
+-	0x4062D02A, 0x4063B620, 0x00000002, 0x4062D02B,
+-	// Block 639, offset 0x9fc0
+-	0x4063B620, 0x00000002, 0x4062D02C, 0x4063B620, 0x00000002, 0x4062D02D,
+-	0x4063B620, 0x00000002, 0x4062D02E, 0x4063B620, 0x00000002, 0x4062D02F,
+-	0x4063B620, 0x00000002, 0x4062D030, 0x4063B620, 0x00000002, 0x4062D031,
+-	0x4063B620, 0x00000002, 0x4062D021, 0x4063B820, 0x00000002, 0x4062D022,
+-	0x4063B820, 0x00000002, 0x4062D023, 0x4063B820, 0x00000002, 0x4062D024,
+-	0x4063B820, 0x00000002, 0x4062D025, 0x4063B820, 0x00000002, 0x4062D026,
+-	0x4063B820, 0x00000002, 0x4062D027, 0x4063B820, 0x00000002, 0x4062D028,
+-	0x4063B820, 0x00000002, 0x4062D029, 0x4063B820, 0x00000002, 0x4062D02A,
+-	0x4063B820, 0x00000002, 0x4062D02B, 0x4063B820, 0x00000002, 0x4062D02C,
+-	0x4063B820, 0x00000002, 0x4062D02D, 0x4063B820, 0x00000002, 0x4062D02E,
+-	0x4063B820, 0x00000002, 0x4062D02F, 0x4063B820,
+-	// Block 640, offset 0xa000
+-	0x00000002, 0x4062D030, 0x4063B820, 0x00000002, 0x4062D031, 0x4063B820,
+-	0x00000002, 0x4062D032, 0x4063B820, 0x00000002, 0x4062D033, 0x4063B820,
+-	0x00000002, 0x4062D034, 0x4063B820, 0x00000002, 0x4062D035, 0x4063B820,
+-	0x00000002, 0x4062D036, 0x4063B820, 0x00000002, 0x4062D037, 0x4063B820,
+-	0x00000002, 0x4062D038, 0x4063B820, 0x00000002, 0x4062D039, 0x4063B820,
+-	0x00000002, 0x4062D03A, 0x4063B820, 0x00000002, 0x4062D03B, 0x4063B820,
+-	0x00000002, 0x4062D03C, 0x4063B820, 0x00000002, 0x4062D03D, 0x4063B820,
+-	0x00000002, 0x4062D03E, 0x4063B820, 0x00000002, 0x4062D03F, 0x4063B820,
+-	0x00000002, 0x4062D040, 0x4063B820, 0x00000002, 0x4062D041, 0x4063B820,
+-	0x00000002, 0x4062D042, 0x4063B820, 0x00000002, 0x4062D043, 0x4063B820,
+-	0x00000002, 0x4062D044, 0x4063B820, 0x00000002,
+-	// Block 641, offset 0xa040
+-	0x4062D045, 0x4063B820, 0x00000002, 0x4062D046, 0x4063B820, 0x00000002,
+-	0x4062D047, 0x4063B820, 0x00000002, 0x4062D048, 0x4063B820, 0x00000002,
+-	0x4062D049, 0x4063B820, 0x00000002, 0x4062D04A, 0x4063B820, 0x00000002,
+-	0x4062D04B, 0x4063B820, 0x00000002, 0x4062D04C, 0x4063B820, 0x00000002,
+-	0x4062D04D, 0x4063B820, 0x00000002, 0x4062D04E, 0x4063B820, 0x00000002,
+-	0x4062D04F, 0x4063B820, 0x00000002, 0x4062D050, 0x4063B820, 0x00000002,
+-	0x4062D051, 0x4063B820, 0x00000002, 0x4062D052, 0x4063B820, 0x00000002,
+-	0x4062D053, 0x4063B820, 0x00000002, 0x4062D054, 0x4063B820, 0x00000002,
+-	0x4062D055, 0x4063B820, 0x00000002, 0x4062D056, 0x4063B820, 0x00000002,
+-	0x4062D057, 0x4063B820, 0x00000002, 0x4062D058, 0x4063B820, 0x00000002,
+-	0x4062D059, 0x4063B820, 0x00000002, 0x4062D05A,
+-	// Block 642, offset 0xa080
+-	0x4063B820, 0x00000002, 0x4062D05B, 0x4063B820, 0x00000003, 0x4062D021,
+-	0x4063B820, 0x40646420, 0x00000003, 0x4062D022, 0x4063B820, 0x40646420,
+-	0x00000003, 0x4062D023, 0x4063B820, 0x40646420, 0x00000003, 0x4062D021,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062D022, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062D023, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D024,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062D025, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062D026, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D027,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062D028, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062D029, 0x4063B820, 0x40646A20, 0x00000003, 0x4062D02A,
+-	0x4063B820, 0x40646A20, 0x00000003, 0x4062D02B, 0x4063B820, 0x40646A20,
+-	0x00000003, 0x4062D021, 0x4063B820, 0x40647220,
+-	// Block 643, offset 0xa0c0
+-	0x00000003, 0x4062D022, 0x4063B820, 0x40647220, 0x00000003, 0x4062D023,
+-	0x4063B820, 0x40647220, 0x00000003, 0x4062D024, 0x4063B820, 0x40647220,
+-	0x00000003, 0x4062D021, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D022,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062D023, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062D024, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D025,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062D026, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062D027, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D028,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062D029, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062D02A, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D02B,
+-	0x4063B820, 0x40648C20, 0x00000003, 0x4062D02C, 0x4063B820, 0x40648C20,
+-	0x00000003, 0x4062D02D, 0x4063B820, 0x40648C20,
+-	// Block 644, offset 0xa100
+-	0x00000003, 0x4062D02E, 0x4063B820, 0x40648C20, 0x00000003, 0x4062D02F,
+-	0x4063B820, 0x40648C20, 0x00000002, 0x4062D021, 0x4063BA20, 0x00000002,
+-	0x4062D022, 0x4063BA20, 0x00000002, 0x4062D023, 0x4063BA20, 0x00000002,
+-	0x4062D024, 0x4063BA20, 0x00000002, 0x4062D025, 0x4063BA20, 0x00000002,
+-	0x4062D026, 0x4063BA20, 0x00000002, 0x4062D027, 0x4063BA20, 0x00000002,
+-	0x4062D028, 0x4063BA20, 0x00000002, 0x4062D029, 0x4063BA20, 0x00000002,
+-	0x4062D02A, 0x4063BA20, 0x00000002, 0x4062D02B, 0x4063BA20, 0x00000002,
+-	0x4062D02C, 0x4063BA20, 0x00000002, 0x4062D02D, 0x4063BA20, 0x00000002,
+-	0x4062D02E, 0x4063BA20, 0x00000002, 0x4062D02F, 0x4063BA20, 0x00000002,
+-	0x4062D030, 0x4063BA20, 0x00000002, 0x4062D031, 0x4063BA20, 0x00000002,
+-	0x4062D032, 0x4063BA20, 0x00000002, 0x4062D033,
+-	// Block 645, offset 0xa140
+-	0x4063BA20, 0x00000002, 0x4062D034, 0x4063BA20, 0x00000002, 0x4062D035,
+-	0x4063BA20, 0x00000003, 0x4062D021, 0x4063BA20, 0x40646420, 0x00000003,
+-	0x4062D022, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D023, 0x4063BA20,
+-	0x40646420, 0x00000003, 0x4062D024, 0x4063BA20, 0x40646420, 0x00000003,
+-	0x4062D025, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D026, 0x4063BA20,
+-	0x40646420, 0x00000003, 0x4062D027, 0x4063BA20, 0x40646420, 0x00000003,
+-	0x4062D028, 0x4063BA20, 0x40646420, 0x00000003, 0x4062D029, 0x4063BA20,
+-	0x40646420, 0x00000003, 0x4062D021, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D022, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D023, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D024, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D025, 0x4063BA20, 0x40646A20, 0x00000003,
+-	// Block 646, offset 0xa180
+-	0x4062D026, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D027, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D028, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D029, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02A, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D02B, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D02C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D02D, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D02E, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D02F, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D030, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D031, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D032, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D033, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D034, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D035, 0x4063BA20, 0x40646A20, 0x00000003,
+-	// Block 647, offset 0xa1c0
+-	0x4062D036, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D037, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D038, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D039, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D03A, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D03B, 0x4063BA20, 0x40646A20, 0x00000003,
+-	0x4062D03C, 0x4063BA20, 0x40646A20, 0x00000003, 0x4062D03D, 0x4063BA20,
+-	0x40646A20, 0x00000003, 0x4062D021, 0x4063BA20, 0x40647220, 0x00000003,
+-	0x4062D022, 0x4063BA20, 0x40647220, 0x00000003, 0x4062D023, 0x4063BA20,
+-	0x40647220, 0x00000003, 0x4062D024, 0x4063BA20, 0x40647220, 0x00000003,
+-	0x4062D025, 0x4063BA20, 0x40647220, 0x00000003, 0x4062D026, 0x4063BA20,
+-	0x40647220, 0x00000003, 0x4062D021, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D022, 0x4063BA20, 0x40648C20, 0x00000003,
+-	// Block 648, offset 0xa200
+-	0x4062D023, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D024, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D025, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D026, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D027, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D028, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D029, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02A, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D02B, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D02C, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D02D, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D02E, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D02F, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D030, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D031, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D032, 0x4063BA20, 0x40648C20, 0x00000003,
+-	// Block 649, offset 0xa240
+-	0x4062D033, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D034, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D035, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D036, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D037, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D038, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D039, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03A, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D03B, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D03C, 0x4063BA20, 0x40648C20, 0x00000003, 0x4062D03D, 0x4063BA20,
+-	0x40648C20, 0x00000003, 0x4062D03E, 0x4063BA20, 0x40648C20, 0x00000003,
+-	0x4062D03F, 0x4063BA20, 0x40648C20, 0x00000002, 0x4062D021, 0x4063BE20,
+-	0x00000002, 0x4062D022, 0x4063BE20, 0x00000002, 0x4062D023, 0x4063BE20,
+-	0x00000002, 0x4062D024, 0x4063BE20, 0x00000002,
+-	// Block 650, offset 0xa280
+-	0x4062D025, 0x4063BE20, 0x00000002, 0x4062D026, 0x4063BE20, 0x00000002,
+-	0x4062D027, 0x4063BE20, 0x00000002, 0x4062D028, 0x4063BE20, 0x00000002,
+-	0x4062D029, 0x4063BE20, 0x00000002, 0x4062D02A, 0x4063BE20, 0x00000002,
+-	0x4062D02B, 0x4063BE20, 0x00000002, 0x4062D02C, 0x4063BE20, 0x00000002,
+-	0x4062D02D, 0x4063BE20, 0x00000002, 0x4062D02E, 0x4063BE20, 0x00000002,
+-	0x4062D02F, 0x4063BE20, 0x00000002, 0x4062D030, 0x4063BE20, 0x00000002,
+-	0x4062D031, 0x4063BE20, 0x00000002, 0x4062D032, 0x4063BE20, 0x00000002,
+-	0x4062D033, 0x4063BE20, 0x00000002, 0x4062D034, 0x4063BE20, 0x00000002,
+-	0x4062D035, 0x4063BE20, 0x00000002, 0x4062D036, 0x4063BE20, 0x00000002,
+-	0x4062D037, 0x4063BE20, 0x00000002, 0x4062D038, 0x4063BE20, 0x00000002,
+-	0x4062D039, 0x4063BE20, 0x00000002, 0x4062D03A,
+-	// Block 651, offset 0xa2c0
+-	0x4063BE20, 0x00000002, 0x4062D03B, 0x4063BE20, 0x00000002, 0x4062D03C,
+-	0x4063BE20, 0x00000002, 0x4062D03D, 0x4063BE20, 0x00000003, 0x4062D021,
+-	0x4063BE20, 0x40646420, 0x00000003, 0x4062D022, 0x4063BE20, 0x40646420,
+-	0x00000003, 0x4062D023, 0x4063BE20, 0x40646420, 0x00000003, 0x4062D021,
+-	0x4063BE20, 0x40648C20, 0x00000003, 0x4062D022, 0x4063BE20, 0x40648C20,
+-	0x00000003, 0x4062D023, 0x4063BE20, 0x40648C20, 0x00000003, 0x4062D024,
+-	0x4063BE20, 0x40648C20, 0x00000003, 0x4062D025, 0x4063BE20, 0x40648C20,
+-	0x00000003, 0x4062D026, 0x4063BE20, 0x40648C20, 0x00000002, 0x4062D021,
+-	0x4063C020, 0x00000002, 0x4062D022, 0x4063C020, 0x00000002, 0x4062D023,
+-	0x4063C020, 0x00000002, 0x4062D024, 0x4063C020, 0x00000002, 0x4062D025,
+-	0x4063C020, 0x00000002, 0x4062D026, 0x4063C020,
+-	// Block 652, offset 0xa300
+-	0x00000002, 0x4062D027, 0x4063C020, 0x00000002, 0x4062D028, 0x4063C020,
+-	0x00000002, 0x4062D029, 0x4063C020, 0x00000002, 0x4062D02A, 0x4063C020,
+-	0x00000002, 0x4062D02B, 0x4063C020, 0x00000002, 0x4062D02C, 0x4063C020,
+-	0x00000002, 0x4062D02D, 0x4063C020, 0x00000002, 0x4062D02E, 0x4063C020,
+-	0x00000002, 0x4062D02F, 0x4063C020, 0x00000002, 0x4062D030, 0x4063C020,
+-	0x00000002, 0x4062D031, 0x4063C020, 0x00000002, 0x4062D032, 0x4063C020,
+-	0x00000002, 0x4062D033, 0x4063C020, 0x00000002, 0x4062D034, 0x4063C020,
+-	0x00000002, 0x4062D035, 0x4063C020, 0x00000002, 0x4062D021, 0x4063C220,
+-	0x00000002, 0x4062D022, 0x4063C220, 0x00000002, 0x4062D023, 0x4063C220,
+-	0x00000002, 0x4062D024, 0x4063C220, 0x00000002, 0x4062D025, 0x4063C220,
+-	0x00000002, 0x4062D026, 0x4063C220, 0x00000002,
+-	// Block 653, offset 0xa340
+-	0x4062D027, 0x4063C220, 0x00000002, 0x4062D028, 0x4063C220, 0x00000002,
+-	0x4062D029, 0x4063C220, 0x00000002, 0x4062D02A, 0x4063C220, 0x00000002,
+-	0x4062D02B, 0x4063C220, 0x00000002, 0x4062D02C, 0x4063C220, 0x00000002,
+-	0x4062D02D, 0x4063C220, 0x00000002, 0x4062D02E, 0x4063C220, 0x00000002,
+-	0x4062D02F, 0x4063C220, 0x00000002, 0x4062D030, 0x4063C220, 0x00000002,
+-	0x4062D031, 0x4063C220, 0x00000002, 0x4062D032, 0x4063C220, 0x00000002,
+-	0x4062D033, 0x4063C220, 0x00000002, 0x4062D034, 0x4063C220, 0x00000002,
+-	0x4062D035, 0x4063C220, 0x00000002, 0x4062D036, 0x4063C220, 0x00000002,
+-	0x4062D037, 0x4063C220, 0x00000002, 0x4062D038, 0x4063C220, 0x00000003,
+-	0x4062D021, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D022, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062D023, 0x4063C220,
+-	// Block 654, offset 0xa380
+-	0x40646A20, 0x00000003, 0x4062D024, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062D025, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D026, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062D027, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062D028, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D029, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062D02A, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062D02B, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D02C, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062D02D, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062D02E, 0x4063C220, 0x40646A20, 0x00000003, 0x4062D02F, 0x4063C220,
+-	0x40646A20, 0x00000003, 0x4062D030, 0x4063C220, 0x40646A20, 0x00000003,
+-	0x4062D021, 0x4063C220, 0x40647220, 0x00000003, 0x4062D021, 0x4063C220,
+-	0x40648C20, 0x00000003, 0x4062D021, 0x4063C420,
+-	// Block 655, offset 0xa3c0
+-	0x40646A20, 0x00000003, 0x4062D022, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062D023, 0x4063C420, 0x40646A20, 0x00000003, 0x4062D024, 0x4063C420,
+-	0x40646A20, 0x00000003, 0x4062D025, 0x4063C420, 0x40646A20, 0x00000003,
+-	0x4062D026, 0x4063C420, 0x40646A20, 0x00000003, 0x4062D027, 0x4063C420,
+-	0x40646A20, 0x00000002, 0x4062D021, 0x4063C620, 0x00000002, 0x4062D022,
+-	0x4063C620, 0x00000002, 0x4062D023, 0x4063C620, 0x00000002, 0x4062D024,
+-	0x4063C620, 0x00000002, 0x4062D025, 0x4063C620, 0x00000002, 0x4062D026,
+-	0x4063C620, 0x00000002, 0x4062D027, 0x4063C620, 0x00000002, 0x4062D021,
+-	0x4063C820, 0x00000002, 0x4062D022, 0x4063C820, 0x00000002, 0x4062D023,
+-	0x4063C820, 0x00000002, 0x4062D024, 0x4063C820, 0x00000002, 0x4062D025,
+-	0x4063C820, 0x00000002, 0x4062D026, 0x4063C820,
+-	// Block 656, offset 0xa400
+-	0x00000002, 0x4062D027, 0x4063C820, 0x00000002, 0x4062D028, 0x4063C820,
+-	0x00000002, 0x4062D029, 0x4063C820, 0x00000002, 0x4062D02A, 0x4063C820,
+-	0x00000002, 0x4062D021, 0x4063CA20, 0x00000002, 0x4062D022, 0x4063CA20,
+-	0x00000002, 0x4062D023, 0x4063CA20, 0x00000002, 0x4062D024, 0x4063CA20,
+-	0x00000002, 0x4062D025, 0x4063CA20, 0x00000002, 0x4062D026, 0x4063CA20,
+-	0x00000002, 0x4062D027, 0x4063CA20, 0x00000002, 0x4062D028, 0x4063CA20,
+-	0x00000002, 0x4062D029, 0x4063CA20, 0x00000002, 0x4062D02A, 0x4063CA20,
+-	0x00000003, 0x4062D021, 0x4063CA20, 0x40647220, 0x00000003, 0x4062D022,
+-	0x4063CA20, 0x40647220, 0x00000003, 0x4062D023, 0x4063CA20, 0x40647220,
+-	0x00000003, 0x4062D024, 0x4063CA20, 0x40647220, 0x00000003, 0x4062D021,
+-	0x4063CA20, 0x40648C20, 0x00000003, 0x4062D022,
+-	// Block 657, offset 0xa440
+-	0x4063CA20, 0x40648C20, 0x00000003, 0x4062D023, 0x4063CA20, 0x40648C20,
+-	0x00000003, 0x4062D024, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062D025,
+-	0x4063CA20, 0x40648C20, 0x00000003, 0x4062D026, 0x4063CA20, 0x40648C20,
+-	0x00000003, 0x4062D027, 0x4063CA20, 0x40648C20, 0x00000003, 0x4062D021,
+-	0x4063CC20, 0x40646420, 0x00000003, 0x4062D021, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062D022, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D023,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062D024, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062D025, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D026,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062D027, 0x4063CC20, 0x40646A20,
+-	0x00000003, 0x4062D028, 0x4063CC20, 0x40646A20, 0x00000003, 0x4062D029,
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062D02A,
+-	// Block 658, offset 0xa480
+-	0x4063CC20, 0x40646A20, 0x00000003, 0x4062D021, 0x4063CC20, 0x40647220,
+-	0x00000003, 0x4062D022, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D023,
+-	0x4063CC20, 0x40647220, 0x00000003, 0x4062D024, 0x4063CC20, 0x40647220,
+-	0x00000003, 0x4062D025, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D026,
+-	0x4063CC20, 0x40647220, 0x00000003, 0x4062D027, 0x4063CC20, 0x40647220,
+-	0x00000003, 0x4062D028, 0x4063CC20, 0x40647220, 0x00000003, 0x4062D029,
+-	0x4063CC20, 0x40647220, 0x00000003, 0x4062D021, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062D022, 0x4063CC20, 0x40648220, 0x00000003, 0x4062D023,
+-	0x4063CC20, 0x40648220, 0x00000003, 0x4062D024, 0x4063CC20, 0x40648220,
+-	0x00000003, 0x4062D021, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D022,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062D023,
+-	// Block 659, offset 0xa4c0
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062D024, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062D025, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D026,
+-	0x4063CC20, 0x40648420, 0x00000003, 0x4062D027, 0x4063CC20, 0x40648420,
+-	0x00000003, 0x4062D028, 0x4063CC20, 0x40648420, 0x00000003, 0x4062D021,
+-	0x4063CC20, 0x40648C20, 0x00000002, 0x4062D021, 0x4063CE20, 0x00000002,
+-	0x4062D022, 0x4063CE20, 0x00000002, 0x4062D023, 0x4063CE20, 0x00000002,
+-	0x4062D024, 0x4063CE20, 0x00000002, 0x4062D025, 0x4063CE20, 0x00000002,
+-	0x4062D026, 0x4063CE20, 0x00000002, 0x4062D027, 0x4063CE20, 0x00000002,
+-	0x4062D028, 0x4063CE20, 0x00000002, 0x4062D029, 0x4063CE20, 0x00000002,
+-	0x4062D02A, 0x4063CE20, 0x00000002, 0x4062D02B, 0x4063CE20, 0x00000002,
+-	0x4062D02C, 0x4063CE20, 0x00000002, 0x4062D02D,
+-	// Block 660, offset 0xa500
+-	0x4063CE20, 0x00000002, 0x4062D02E, 0x4063CE20, 0x00000002, 0x4062D02F,
+-	0x4063CE20, 0x00000002, 0x4062D030, 0x4063CE20, 0x00000002, 0x4062D031,
+-	0x4063CE20, 0x00000002, 0x4062D032, 0x4063CE20, 0x00000002, 0x4062D033,
+-	0x4063CE20, 0x00000002, 0x4062D034, 0x4063CE20, 0x00000002, 0x4062D035,
+-	0x4063CE20, 0x00000002, 0x4062D036, 0x4063CE20, 0x00000002, 0x4062D037,
+-	0x4063CE20, 0x00000002, 0x4062D038, 0x4063CE20, 0x00000002, 0x4062D039,
+-	0x4063CE20, 0x00000002, 0x4062D03A, 0x4063CE20, 0x00000002, 0x4062D03B,
+-	0x4063CE20, 0x00000002, 0x4062D03C, 0x4063CE20, 0x00000002, 0x4062D03D,
+-	0x4063CE20, 0x00000002, 0x4062D03E, 0x4063CE20, 0x00000002, 0x4062D03F,
+-	0x4063CE20, 0x00000003, 0x4062D021, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062D022, 0x4063D020, 0x40647220, 0x00000003,
+-	// Block 661, offset 0xa540
+-	0x4062D023, 0x4063D020, 0x40647220, 0x00000003, 0x4062D024, 0x4063D020,
+-	0x40647220, 0x00000003, 0x4062D025, 0x4063D020, 0x40647220, 0x00000003,
+-	0x4062D026, 0x4063D020, 0x40647220, 0x00000002, 0x40403C20, 0xA070F102,
+-	0x00000002, 0x402D9A22, 0xAE603202, 0x00000002, 0x002D9AC3, 0xAE603202,
+-	0x00000002, 0x402D9A22, 0xAE603502, 0x00000002, 0x002D9AC3, 0xAE603502,
+-	0x00000002, 0x402D9A22, 0xAE603C02, 0x00000002, 0x002D9AC3, 0xAE603C02,
+-	0x00000002, 0x402D9A22, 0xAE604302, 0x00000002, 0x402D9A22, 0xAE604702,
+-	0x00000002, 0x002D9AC3, 0xAE604702, 0x00000002, 0x402D9A22, 0xAE604E02,
+-	0x00000002, 0x002D9AC3, 0xAE604E02, 0x00000002, 0x402D9A22, 0xAE605202,
+-	0x00000002, 0x002D9AC3, 0xAE605202, 0x00000002, 0x402D9A22, 0xAE605B02,
+-	0x00000002, 0x002D9AC3, 0xAE605B02, 0x00000002,
+-	// Block 662, offset 0xa580
+-	0x402D9A22, 0xAE606402, 0x00000002, 0x002D9AC3, 0xAE606402, 0x00000002,
+-	0x402D9A22, 0xADC07002, 0x00000002, 0x002D9AC3, 0xADC07002, 0x00000002,
+-	0x40306C22, 0xAE604702, 0x00000002, 0x00306CC3, 0xAE604702, 0x00000002,
+-	0x40302A20, 0xAE605202, 0x00000002, 0x00302A83, 0xAE605202, 0x00000002,
+-	0x40442221, 0x82092248, 0x00000002, 0x004422A3, 0x82092248, 0x00000002,
+-	0x40443E21, 0x82092248, 0x00000002, 0x00443EA3, 0x82092248, 0x00000002,
+-	0x00444883, 0x82092248, 0x00000002, 0x40444821, 0x82092248, 0x00000002,
+-	0x004448A3, 0x82092248, 0x00000002, 0x40445421, 0x82092248, 0x00000002,
+-	0x40445821, 0x82092248, 0x00000002, 0x004458A3, 0x82092248, 0x00000002,
+-	0x40445A21, 0x82092248, 0x00000002, 0x00445AA3, 0x82092248, 0x00000002,
+-	0x40446621, 0x82092248, 0x00000002, 0x004466A3,
+-	// Block 663, offset 0xa5c0
+-	0x82092248, 0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6894,
+-	0xA0007D14, 0x00000005, 0x404E6020, 0x404E8420, 0x404E2420, 0x8209278B,
+-	0x404F3020, 0x00000006, 0x404E6A20, 0x8209278B, 0x404E6A20, 0x404EEE20,
+-	0x404E7220, 0x8209278B, 0x00000006, 0x404E6A21, 0x40510E20, 0x404EE620,
+-	0x404EEE20, 0x404E1420, 0x8209278B, 0x00000004, 0x404E8C21, 0x40510A20,
+-	0x404EFE20, 0x404F2E20, 0x00000006, 0x404E9420, 0x404E1420, 0x8209278B,
+-	0x404E8220, 0x404E1420, 0x8209278B, 0x00000005, 0x404E9420, 0x404E1420,
+-	0x8209278B, 0x404E8820, 0x404EDE20, 0x0000000A, 0x404E9421, 0x404E4820,
+-	0x8209278B, 0x404F3020, 0x404E1420, 0x404EFE20, 0x404EDE20, 0x404E2420,
+-	0x8209278B, 0x404F3020, 0x00000003, 0x404EA620, 0x404E8420, 0x404EEA20,
+-	0x00000003, 0x404EA620, 0x8209278A, 0x404EA620,
+-	// Block 664, offset 0xa600
+-	0x00000002, 0x004EC283, 0x404EE620, 0x00000002, 0x404EC221, 0x404EE620,
+-	0x00000002, 0x004EC283, 0x404EEA20, 0x00000002, 0x004EC283, 0x404EEE20,
+-	0x00000003, 0x004EC283, 0x404EEE20, 0x404F0C20, 0x00000002, 0x004EC283,
+-	0x404EF420, 0x00000002, 0x004EC283, 0x404EFE20, 0x00000002, 0x004EC284,
+-	0x404EFE20, 0x00000003, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1420, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1820, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1820,
+-	// Block 665, offset 0xa640
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1820,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1820,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1C20,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1C20,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E1C20,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E1C20,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E2220,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E2220,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E2220,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E2220,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	// Block 666, offset 0xa680
+-	0x404EDE20, 0x404E2420, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E2420, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E2420, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E2420, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E2820, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E2820, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E2820, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E2820, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E2E20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E2E20, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E2E20, 0x8209278B, 0x00000005,
+-	// Block 667, offset 0xa6c0
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E2E20, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E3220, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4220, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4820, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4820,
+-	// Block 668, offset 0xa700
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4820,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4820,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4A20,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4A20,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4A20,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4A20,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4E20,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4E20,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E4E20,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E4E20,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	// Block 669, offset 0xa740
+-	0x404EDE20, 0x404E5220, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E5220, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E5220, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E5220, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E5620, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E5620, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E5620, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E5620, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E5A20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E5A20, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E5A20, 0x8209278B, 0x00000005,
+-	// Block 670, offset 0xa780
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E5A20, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E5E20, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6020, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6220, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6220,
+-	// Block 671, offset 0xa7c0
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6220,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6220,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6620,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6620,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6620,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6620,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6A20,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6A20,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E6A20,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E6A20,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	// Block 672, offset 0xa800
+-	0x404EDE20, 0x404E7220, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E7220, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E7220, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E7220, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E7420, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E7420, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E7420, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E7420, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E7E20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404E7E20, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404E7E20, 0x8209278B, 0x00000005,
+-	// Block 673, offset 0xa840
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E7E20, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8220, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278A, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278B, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8420, 0x8209278B, 0x00000005,
+-	0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8820, 0x8209278A, 0x00000005,
+-	0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8820,
+-	// Block 674, offset 0xa880
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8820,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8820,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8C20,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8C20,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E8C20,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E8C20,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E9420,
+-	0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E9420,
+-	0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20, 0x404EDE20, 0x404E9420,
+-	0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20, 0x404EDE20, 0x404E9420,
+-	0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	// Block 675, offset 0xa8c0
+-	0x404EDE20, 0x404EA620, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404EA620, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404EA620, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404EA620, 0x8209278B, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404EAA20, 0x8209278A, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404EAA20, 0x8209278A, 0x00000005, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x404EAA20, 0x8209278B, 0x00000005, 0x004EC284, 0x404EFE20,
+-	0x404EDE20, 0x404EAA20, 0x8209278B, 0x00000004, 0x004EC283, 0x404EFE20,
+-	0x404EDE20, 0x8209278B, 0x00000006, 0x404EFE20, 0x404EDE20, 0x404E1420,
+-	0x8209278B, 0x404E1420, 0x40510420, 0x00000002, 0x402C9A20, 0xAE603202,
+-	0x00000002, 0x002C9A83, 0xAE603202, 0x00000002,
+-	// Block 676, offset 0xa900
+-	0x402C9A20, 0xAE603502, 0x00000002, 0x002C9A83, 0xAE603502, 0x00000002,
+-	0x402C9A20, 0xAE604E02, 0x00000002, 0x002C9A83, 0xAE604E02, 0x00000002,
+-	0x402C9A20, 0xAE606402, 0x00000002, 0x002C9A83, 0xAE606402, 0x00000002,
+-	0x402C9A20, 0xADC07002, 0x00000002, 0x002C9A83, 0xADC07002, 0x00000002,
+-	0x402EE420, 0xAE603202, 0x00000002, 0x002EE483, 0xAE603202, 0x00000002,
+-	0x402EE420, 0xAE603502, 0x00000002, 0x002EE483, 0xAE603502, 0x00000002,
+-	0x402EE420, 0xAE606402, 0x00000002, 0x002EE483, 0xAE606402, 0x00000002,
+-	0x402EE420, 0xADC07002, 0x00000002, 0x002EE483, 0xADC07002, 0x00000002,
+-	0x40411620, 0xA000FA02, 0x00000002, 0x40411E20, 0xA000FA02, 0x00000002,
+-	0x40412020, 0xA000FA02, 0x00000002, 0x40412A20, 0xA000FA02, 0x00000002,
+-	0x40414620, 0xA000FA02, 0x00000002, 0x40415420,
+-	// Block 677, offset 0xa940
+-	0xA000FA02, 0x00000002, 0x402C3C20, 0xACA05602, 0x00000002, 0x002C3C83,
+-	0xACA05602, 0x00000002, 0x403A6822, 0xAE60BE02, 0x00000002, 0x003A7C84,
+-	0x00391C84, 0x00000002, 0x003A7C9A, 0x00391C9A, 0x00000002, 0x40320820,
+-	0xAE603202, 0x00000002, 0x00320883, 0xAE603202, 0x00000002, 0x40320A20,
+-	0xAE603202, 0x00000002, 0x00320A83, 0xAE603202, 0x00000002, 0x40320A20,
+-	0xAE605B02, 0x00000002, 0x00320A83, 0xAE605B02, 0x00000002, 0x40320E21,
+-	0xAE603702, 0x00000002, 0x00320EA3, 0xAE603702, 0x00000002, 0x40320E21,
+-	0xAE603C02, 0x00000002, 0x00320EA3, 0xAE603C02, 0x00000002, 0x40321022,
+-	0xAE603202, 0x00000002, 0x003210C3, 0xAE603202, 0x00000002, 0x40321022,
+-	0xAE604702, 0x00000002, 0x003210C3, 0xAE604702, 0x00000002, 0x40321022,
+-	0xAE605B02, 0x00000002, 0x003210C3, 0xAE605B02,
+-	// Block 678, offset 0xa980
+-	0x00000002, 0x40321022, 0xAD806802, 0x00000002, 0x003210C3, 0xAD806802,
+-	0x00000002, 0x40321023, 0xAE603202, 0x00000002, 0x003210E3, 0xAE603202,
+-	0x00000002, 0x40321023, 0xAE603502, 0x00000002, 0x003210E3, 0xAE603502,
+-	0x00000002, 0x40321023, 0xAE604E02, 0x00000002, 0x003210E3, 0xAE604E02,
+-	0x00000002, 0x40321023, 0xAE606402, 0x00000002, 0x003210E3, 0xAE606402,
+-	0x00000002, 0x40321023, 0xADC07002, 0x00000002, 0x003210E3, 0xADC07002,
+-	0x00000002, 0x40321024, 0xAE605B02, 0x00000002, 0x00321103, 0xAE605B02,
+-	0x00000002, 0x402C6020, 0xAE603202, 0x00000002, 0x002C6083, 0xAE603202,
+-	0x00000002, 0x40321024, 0xAE603202, 0x00000002, 0x00321103, 0xAE603202,
+-	0x00000002, 0x40321024, 0xAE603502, 0x00000002, 0x00321103, 0xAE603502,
+-	0x00000002, 0x40321024, 0xAE604E02, 0x00000002,
+-	// Block 679, offset 0xa9c0
+-	0x00321103, 0xAE604E02, 0x00000002, 0x40321024, 0xAE606402, 0x00000002,
+-	0x00321103, 0xAE606402, 0x00000002, 0x40321024, 0xADC07002, 0x00000002,
+-	0x00321103, 0xADC07002, 0x00000002, 0x00497283, 0x40496C20, 0x00000002,
+-	0x00497284, 0x40496C20, 0x00000002, 0x402BDE21, 0xAE603702, 0x00000002,
+-	0x002BDEA3, 0xAE603702, 0x00000002, 0x402BDE21, 0xAE603C02, 0x00000002,
+-	0x002BDEA3, 0xAE603C02, 0x00000002, 0x402BDE21, 0xAE604302, 0x00000002,
+-	0x002BDEA3, 0xAE604302, 0x00000002, 0x402BDE22, 0xAE604702, 0x00000002,
+-	0x002BDEC3, 0xAE604702, 0x00000002, 0x402BDE22, 0xAE605202, 0x00000002,
+-	0x002BDEC3, 0xAE605202, 0x00000002, 0x402C9821, 0xAE603C02, 0x00000002,
+-	0x002C98A3, 0xAE603C02, 0x00000002, 0x402C9822, 0xAE603202, 0x00000002,
+-	0x002C98C3, 0xAE603202, 0x00000002, 0x402C9822,
+-	// Block 680, offset 0xaa00
+-	0xAE603502, 0x00000002, 0x002C98C3, 0xAE603502, 0x00000002, 0x402D9A21,
+-	0xAE604702, 0x00000002, 0x002D9AA3, 0xAE604702, 0x00000002, 0x402EE221,
+-	0xAE603C02, 0x00000002, 0x002EE2A3, 0xAE603C02, 0x00000002, 0x402EE221,
+-	0xAE604E02, 0x00000002, 0x002EE2A3, 0xAE604E02, 0x00000002, 0x402EE221,
+-	0xAD806802, 0x00000002, 0x002EE2A3, 0xAD806802, 0x00000002, 0x402EE222,
+-	0xAE603202, 0x00000002, 0x002EE2C3, 0xAE603202, 0x00000002, 0x402EE222,
+-	0xAE603502, 0x00000002, 0x002EE2C3, 0xAE603502, 0x00000002, 0x402EE222,
+-	0xAE604702, 0x00000002, 0x002EE2C3, 0xAE604702, 0x00000002, 0x402EE222,
+-	0xAE604E02, 0x00000002, 0x002EE2C3, 0xAE604E02, 0x00000002, 0x402EE222,
+-	0xAE605202, 0x00000002, 0x002EE2C3, 0xAE605202, 0x00000002, 0x402EE222,
+-	0xACA05902, 0x00000002, 0x002EE2C3, 0xACA05902,
+-	// Block 681, offset 0xaa40
+-	0x00000002, 0x40306C21, 0xAE604702, 0x00000002, 0x00306CA3, 0xAE604702,
+-	0x00000002, 0x40306C21, 0xAE604E02, 0x00000002, 0x00306CA3, 0xAE604E02,
+-	0x00000002, 0x40306C21, 0xAD806802, 0x00000002, 0x00306CA3, 0xAD806802,
+-	0x00000002, 0xA000AD18, 0xA000BA18, 0x00000002, 0x00393C97, 0x00396497,
+-	0x00000002, 0x00393C9A, 0x0039649A, 0x00000002, 0x00393C97, 0x00397297,
+-	0x00000002, 0x00393C9A, 0x0039729A, 0x00000002, 0x00393C97, 0x00397497,
+-	0x00000002, 0x00393C9A, 0x0039749A, 0x00000002, 0x00393C99, 0x0039A499,
+-	0x00000002, 0x00393C99, 0x0039A699, 0x00000002, 0x00393C97, 0x003A4E97,
+-	0x00000002, 0x00393C98, 0x003A4E98, 0x00000002, 0x00393C99, 0x003A4E99,
+-	0x00000002, 0x00393C9A, 0x003A4E9A, 0x00000002, 0x00393C99, 0x003A5699,
+-	0x00000002, 0x00395697, 0x00396497, 0x00000002,
+-	// Block 682, offset 0xaa80
+-	0x0039569A, 0x0039649A, 0x00000002, 0x00395697, 0x00397297, 0x00000002,
+-	0x0039569A, 0x0039729A, 0x00000002, 0x00395697, 0x00397497, 0x00000002,
+-	0x0039569A, 0x0039749A, 0x00000002, 0x00395699, 0x0039A499, 0x00000002,
+-	0x00395699, 0x0039A699, 0x00000002, 0x00395697, 0x003A4E97, 0x00000002,
+-	0x00395698, 0x003A4E98, 0x00000002, 0x00395699, 0x003A4E99, 0x00000002,
+-	0x0039569A, 0x003A4E9A, 0x00000002, 0x00395699, 0x003A5699, 0x00000002,
+-	0x0039589A, 0x0039649A, 0x00000002, 0x00395899, 0x0039A499, 0x00000002,
+-	0x00395899, 0x0039A699, 0x00000002, 0x00395897, 0x003A4E97, 0x00000002,
+-	0x00395898, 0x003A4E98, 0x00000002, 0x00395899, 0x003A4E99, 0x00000002,
+-	0x0039589A, 0x003A4E9A, 0x00000002, 0x00395899, 0x003A5699, 0x00000002,
+-	0x00396497, 0x00397297, 0x00000002, 0x0039649A,
+-	// Block 683, offset 0xaac0
+-	0x0039729A, 0x00000002, 0x00396497, 0x003A4E97, 0x00000002, 0x0039649A,
+-	0x003A4E9A, 0x00000002, 0x00397297, 0x00396497, 0x00000002, 0x0039729A,
+-	0x0039649A, 0x00000002, 0x00397297, 0x003A4E97, 0x00000002, 0x0039729A,
+-	0x003A4E9A, 0x00000002, 0x00397497, 0x00396497, 0x00000002, 0x0039749A,
+-	0x0039649A, 0x00000002, 0x0039749A, 0x0039729A, 0x00000002, 0x00397497,
+-	0x003A4E97, 0x00000002, 0x0039749A, 0x003A4E9A, 0x00000002, 0x00398A9A,
+-	0xA000D11A, 0x00000002, 0x0039A49A, 0xA000D11A, 0x00000002, 0x0039C697,
+-	0x00396497, 0x00000002, 0x0039C698, 0x00396498, 0x00000002, 0x0039C69A,
+-	0x0039649A, 0x00000002, 0x0039C697, 0x00397297, 0x00000002, 0x0039C698,
+-	0x00397298, 0x00000002, 0x0039C69A, 0x0039729A, 0x00000002, 0x0039C697,
+-	0x00397497, 0x00000002, 0x0039C698, 0x00397498,
+-	// Block 684, offset 0xab00
+-	0x00000002, 0x0039C69A, 0x0039749A, 0x00000002, 0x0039C699, 0x0039A499,
+-	0x00000002, 0x0039C69A, 0x0039A49A, 0x00000002, 0x0039C697, 0x003A4E97,
+-	0x00000002, 0x0039C698, 0x003A4E98, 0x00000002, 0x0039C69A, 0x003A4E9A,
+-	0x00000002, 0x0039C897, 0x00396497, 0x00000002, 0x0039C898, 0x00396498,
+-	0x00000002, 0x0039C899, 0x00396499, 0x00000002, 0x0039C89A, 0x0039649A,
+-	0x00000002, 0x0039C897, 0x00397297, 0x00000002, 0x0039C898, 0x00397298,
+-	0x00000002, 0x0039C899, 0x00397299, 0x00000002, 0x0039C89A, 0x0039729A,
+-	0x00000002, 0x0039C897, 0x00397497, 0x00000002, 0x0039C898, 0x00397498,
+-	0x00000002, 0x0039C899, 0x00397499, 0x00000002, 0x0039C89A, 0x0039749A,
+-	0x00000002, 0x0039C899, 0x0039A499, 0x00000002, 0x0039C89A, 0x0039A49A,
+-	0x00000002, 0x0039C897, 0x003A4E97, 0x00000002,
+-	// Block 685, offset 0xab40
+-	0x0039C898, 0x003A4E98, 0x00000002, 0x0039C899, 0x003A4E99, 0x00000002,
+-	0x0039C89A, 0x003A4E9A, 0x00000002, 0x0039DC97, 0x00397297, 0x00000002,
+-	0x0039DC9A, 0x0039729A, 0x00000002, 0x0039DC97, 0x00397497, 0x00000002,
+-	0x0039DC99, 0x0039A499, 0x00000002, 0x0039DC9A, 0x0039A49A, 0x00000002,
+-	0x0039DC97, 0x003A4E97, 0x00000002, 0x0039DC9A, 0x003A4E9A, 0x00000002,
+-	0x0039DE97, 0x00396497, 0x00000002, 0x0039DE9A, 0x0039649A, 0x00000002,
+-	0x0039DE97, 0x00397297, 0x00000002, 0x0039DE9A, 0x0039729A, 0x00000002,
+-	0x0039DE97, 0x00397497, 0x00000002, 0x0039DE9A, 0x0039749A, 0x00000002,
+-	0x0039DE99, 0x0039A499, 0x00000002, 0x0039DE9A, 0x0039A49A, 0x00000002,
+-	0x0039DE97, 0x003A4E97, 0x00000002, 0x0039DE9A, 0x003A4E9A, 0x00000002,
+-	0x0039E697, 0x00397297, 0x00000002, 0x0039E69A,
+-	// Block 686, offset 0xab80
+-	0x0039729A, 0x00000002, 0x0039E697, 0x003A4E97, 0x00000002, 0x0039E698,
+-	0x003A4E98, 0x00000002, 0x0039E69A, 0x003A4E9A, 0x00000002, 0x0039E897,
+-	0x003A4E97, 0x00000002, 0x0039E898, 0x003A4E98, 0x00000002, 0x0039E89A,
+-	0x003A4E9A, 0x00000002, 0x0039EE97, 0x00396497, 0x00000002, 0x0039EE9A,
+-	0x0039649A, 0x00000002, 0x0039EE97, 0x003A4E97, 0x00000002, 0x0039EE9A,
+-	0x003A4E9A, 0x00000002, 0x0039F097, 0x00396497, 0x00000002, 0x0039F09A,
+-	0x0039649A, 0x00000002, 0x0039F097, 0x003A4E97, 0x00000002, 0x0039F09A,
+-	0x003A4E9A, 0x00000002, 0x0039FC97, 0x00396497, 0x00000002, 0x0039FC9A,
+-	0x0039649A, 0x00000002, 0x0039FC97, 0x00397297, 0x00000002, 0x0039FC9A,
+-	0x0039729A, 0x00000002, 0x0039FC97, 0x00397497, 0x00000002, 0x0039FC9A,
+-	0x0039749A, 0x00000002, 0x0039FC97, 0x003A4E97,
+-	// Block 687, offset 0xabc0
+-	0x00000002, 0x0039FC9A, 0x003A4E9A, 0x00000002, 0x003A1297, 0x00397297,
+-	0x00000002, 0x003A129A, 0x0039729A, 0x00000002, 0x003A1297, 0x003A4E97,
+-	0x00000002, 0x003A129A, 0x003A4E9A, 0x00000002, 0x003A4099, 0x00393899,
+-	0x00000002, 0x003A409A, 0x0039389A, 0x00000002, 0x003A4097, 0x00396497,
+-	0x00000002, 0x003A409A, 0x0039649A, 0x00000002, 0x003A4097, 0x00397297,
+-	0x00000002, 0x003A409A, 0x0039729A, 0x00000002, 0x003A4097, 0x00397497,
+-	0x00000002, 0x003A409A, 0x0039749A, 0x00000002, 0x003A4097, 0x003A4E97,
+-	0x00000002, 0x003A4098, 0x003A4E98, 0x00000002, 0x003A4099, 0x003A4E99,
+-	0x00000002, 0x003A409A, 0x003A4E9A, 0x00000002, 0x003A4E99, 0x00393899,
+-	0x00000002, 0x003A4E97, 0x00396497, 0x00000002, 0x003A4E9A, 0x0039649A,
+-	0x00000002, 0x003A4E97, 0x00397297, 0x00000002,
+-	// Block 688, offset 0xac00
+-	0x003A4E9A, 0x0039729A, 0x00000002, 0x003A4E97, 0x00397497, 0x00000002,
+-	0x003A4E9A, 0x0039749A, 0x00000002, 0x003A4E97, 0x003A4E97, 0x00000002,
+-	0x003A4E99, 0x003A4E99, 0x00000002, 0x003A4E9A, 0x003A4E9A, 0x00000002,
+-	0x003A5697, 0x00396497, 0x00000002, 0x003A569A, 0x0039649A, 0x00000002,
+-	0x003A5697, 0x00397297, 0x00000002, 0x003A569A, 0x0039729A, 0x00000002,
+-	0x003A5697, 0x00397497, 0x00000002, 0x003A569A, 0x0039749A, 0x00000002,
+-	0x003A5699, 0x0039A499, 0x00000002, 0x003A5699, 0x0039A699, 0x00000002,
+-	0x003A5697, 0x003A4E97, 0x00000002, 0x003A5698, 0x003A4E98, 0x00000002,
+-	0x003A5699, 0x003A4E99, 0x00000002, 0x003A569A, 0x003A4E9A, 0x00000002,
+-	0x003A5699, 0x003A5699, 0x00000002, 0x403A7220, 0xA000C602, 0x00000002,
+-	0x003A7484, 0x00391C84, 0x00000002, 0xAE604702,
+-	// Block 689, offset 0xac40
+-	0xAE603802, 0x00000002, 0x40062C20, 0xAE603802, 0x00000002, 0x40063620,
+-	0xAE603802, 0x00000002, 0x40063820, 0xAE603802, 0x00000002, 0x402BDE20,
+-	0xAE603602, 0x00000002, 0x002BDE88, 0xAE603602, 0x00000002, 0x402BDE20,
+-	0xAE603702, 0x00000002, 0x002BDE88, 0xAE603702, 0x00000002, 0x402BDE20,
+-	0xAE603802, 0x00000002, 0x002BDE88, 0xAE603802, 0x00000002, 0x402BDE20,
+-	0xAE603902, 0x00000002, 0x002BDE88, 0xAE603902, 0x00000003, 0x402BDE20,
+-	0xAE604302, 0xAE603802, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603802,
+-	0x00000004, 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603802, 0x00000004,
+-	0x002BDE8A, 0xA0013904, 0x002C988A, 0xAE603802, 0x00000002, 0x402BE020,
+-	0xAE603602, 0x00000002, 0x002BE083, 0xAE603602, 0x00000002, 0x402BE020,
+-	0xAE603702, 0x00000002, 0x002BE083, 0xAE603702,
+-	// Block 690, offset 0xac80
+-	0x00000002, 0x402BE020, 0xAE603802, 0x00000002, 0x002BE083, 0xAE603802,
+-	0x00000002, 0x402BE020, 0xAE603902, 0x00000002, 0x002BE083, 0xAE603902,
+-	0x00000002, 0x402BE220, 0xAE603602, 0x00000002, 0x002BE283, 0xAE603602,
+-	0x00000002, 0x402BE220, 0xAE603702, 0x00000002, 0x002BE283, 0xAE603702,
+-	0x00000002, 0x402BE220, 0xAE603802, 0x00000002, 0x002BE283, 0xAE603802,
+-	0x00000002, 0x402BE220, 0xAE603902, 0x00000002, 0x002BE283, 0xAE603902,
+-	0x00000002, 0x402C0A20, 0xAE603902, 0x00000002, 0x002C0A88, 0xAE603902,
+-	0x00000002, 0x402C3A20, 0xAE603802, 0x00000002, 0x002C3A88, 0xAE603802,
+-	0x00000003, 0x402C3A20, 0xACA05602, 0xAE603802, 0x00000003, 0x002C3A88,
+-	0xACA05602, 0xAE603802, 0x00000002, 0x402C6220, 0xAE603902, 0x00000002,
+-	0x002C6288, 0xAE603902, 0x00000002, 0x402C9820,
+-	// Block 691, offset 0xacc0
+-	0xAE603602, 0x00000002, 0x002C9888, 0xAE603602, 0x00000002, 0x402C9820,
+-	0xAE603702, 0x00000002, 0x002C9888, 0xAE603702, 0x00000002, 0x402C9820,
+-	0xAE603802, 0x00000002, 0x002C9888, 0xAE603802, 0x00000002, 0x402C9820,
+-	0xAE603902, 0x00000002, 0x002C9888, 0xAE603902, 0x00000003, 0x402C9820,
+-	0xAE605B02, 0xAE603802, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603802,
+-	0x00000002, 0x402C9A20, 0xAE603602, 0x00000002, 0x002C9A83, 0xAE603602,
+-	0x00000002, 0x402C9A20, 0xAE603702, 0x00000002, 0x002C9A83, 0xAE603702,
+-	0x00000002, 0x402C9A20, 0xAE603802, 0x00000002, 0x002C9A83, 0xAE603802,
+-	0x00000002, 0x402C9A20, 0xAE603902, 0x00000002, 0x002C9A83, 0xAE603902,
+-	0x00000002, 0x402D2220, 0xAE603802, 0x00000002, 0x002D2288, 0xAE603802,
+-	0x00000002, 0x402D6820, 0xAE603902, 0x00000002,
+-	// Block 692, offset 0xad00
+-	0x002D6888, 0xAE603902, 0x00000002, 0x402D9A20, 0xAE603602, 0x00000002,
+-	0x002D9A88, 0xAE603602, 0x00000002, 0x402D9A20, 0xAE603702, 0x00000002,
+-	0x002D9A88, 0xAE603702, 0x00000002, 0x402D9A20, 0xAE603802, 0x00000002,
+-	0x002D9A88, 0xAE603802, 0x00000002, 0x402D9A20, 0xAE603902, 0x00000002,
+-	0x002D9A88, 0xAE603902, 0x00000003, 0x402D9A20, 0xAE604702, 0xAE603802,
+-	0x00000003, 0x002D9A88, 0xAE604702, 0xAE603802, 0x00000002, 0x402DFE20,
+-	0xAE603802, 0x00000002, 0x002DFE88, 0xAE603802, 0x00000002, 0x402DFE20,
+-	0xAE603902, 0x00000002, 0x002DFE88, 0xAE603902, 0x00000002, 0x402E2220,
+-	0xAE603802, 0x00000002, 0x002E2288, 0xAE603802, 0x00000002, 0x402E2220,
+-	0xAE603902, 0x00000002, 0x002E2288, 0xAE603902, 0x00000003, 0x402E2220,
+-	0xAE603902, 0xAE605B02, 0x00000003, 0x002E2288,
+-	// Block 693, offset 0xad40
+-	0xAE603902, 0xAE605B02, 0x00000002, 0x402E8220, 0xAE603802, 0x00000002,
+-	0x002E8288, 0xAE603802, 0x00000002, 0x402E8220, 0xAE603902, 0x00000002,
+-	0x002E8288, 0xAE603902, 0x00000002, 0x402E9E20, 0xAE603702, 0x00000002,
+-	0x002E9E88, 0xAE603702, 0x00000002, 0x402E9E20, 0xAE603802, 0x00000002,
+-	0x002E9E88, 0xAE603802, 0x00000002, 0x402E9E20, 0xAE603902, 0x00000002,
+-	0x002E9E88, 0xAE603902, 0x00000002, 0x402EE220, 0xAE603602, 0x00000002,
+-	0x002EE288, 0xAE603602, 0x00000002, 0x402EE220, 0xAE603702, 0x00000002,
+-	0x002EE288, 0xAE603702, 0x00000003, 0x402EE220, 0xAE603702, 0xAE603802,
+-	0x00000003, 0x002EE288, 0xAE603702, 0xAE603802, 0x00000003, 0x402EE220,
+-	0xAE603702, 0xAE604702, 0x00000003, 0x002EE288, 0xAE603702, 0xAE604702,
+-	0x00000003, 0x402EE220, 0xAE603702, 0xAE605B02,
+-	// Block 694, offset 0xad80
+-	0x00000003, 0x002EE288, 0xAE603702, 0xAE605B02, 0x00000002, 0x402EE220,
+-	0xAE603802, 0x00000002, 0x002EE288, 0xAE603802, 0x00000002, 0x402EE220,
+-	0xAE603902, 0x00000002, 0x002EE288, 0xAE603902, 0x00000003, 0x402EE220,
+-	0xA0005402, 0xAE603802, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603802,
+-	0x00000003, 0x402EE220, 0xAE605B02, 0xAE603802, 0x00000003, 0x002EE288,
+-	0xAE605B02, 0xAE603802, 0x00000002, 0x402EE420, 0xAE603602, 0x00000002,
+-	0x002EE483, 0xAE603602, 0x00000002, 0x402EE420, 0xAE603702, 0x00000002,
+-	0x002EE483, 0xAE603702, 0x00000002, 0x402EE420, 0xAE603802, 0x00000002,
+-	0x002EE483, 0xAE603802, 0x00000002, 0x402EE420, 0xAE603902, 0x00000002,
+-	0x002EE483, 0xAE603902, 0x00000002, 0x402EE620, 0xAE603502, 0x00000002,
+-	0x002EE683, 0xAE603502, 0x00000002, 0x402EE620,
+-	// Block 695, offset 0xadc0
+-	0xAE603602, 0x00000002, 0x002EE683, 0xAE603602, 0x00000002, 0x402EE620,
+-	0xAE603702, 0x00000002, 0x002EE683, 0xAE603702, 0x00000002, 0x402EE620,
+-	0xAE603802, 0x00000002, 0x002EE683, 0xAE603802, 0x00000002, 0x402EE620,
+-	0xAE603902, 0x00000002, 0x002EE683, 0xAE603902, 0x00000002, 0x402F2C20,
+-	0xAE603802, 0x00000002, 0x002F2C88, 0xAE603802, 0x00000002, 0x402F7A20,
+-	0xAE603802, 0x00000002, 0x002F7A88, 0xAE603802, 0x00000002, 0x402F7A20,
+-	0xAE603902, 0x00000002, 0x002F7A88, 0xAE603902, 0x00000003, 0x402F7A20,
+-	0xAE603902, 0xAE605B02, 0x00000003, 0x002F7A88, 0xAE603902, 0xAE605B02,
+-	0x00000002, 0x402FE620, 0xAE603802, 0x00000002, 0x002FE688, 0xAE603802,
+-	0x00000003, 0x402FE620, 0xAE603802, 0xAE605202, 0x00000003, 0x002FE688,
+-	0xAE603802, 0xAE605202, 0x00000002, 0x402FE620,
+-	// Block 696, offset 0xae00
+-	0xAE603902, 0x00000002, 0x002FE688, 0xAE603902, 0x00000003, 0x402FE620,
+-	0xAE603902, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603902, 0xAE605202,
+-	0x00000002, 0x40302C20, 0xAE603902, 0x00000002, 0x00302C88, 0xAE603902,
+-	0x00000002, 0x40306C20, 0xAE603602, 0x00000002, 0x00306C88, 0xAE603602,
+-	0x00000002, 0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702,
+-	0x00000003, 0x40306C20, 0xAE603702, 0xAE603802, 0x00000003, 0x00306C88,
+-	0xAE603702, 0xAE603802, 0x00000002, 0x40306C20, 0xAE603802, 0x00000002,
+-	0x00306C88, 0xAE603802, 0x00000002, 0x40306C20, 0xAE603902, 0x00000002,
+-	0x00306C88, 0xAE603902, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603802,
+-	0x00000003, 0x00306C88, 0xAE604702, 0xAE603802, 0x00000002, 0x40306E20,
+-	0xAE603602, 0x00000002, 0x00306E83, 0xAE603602,
+-	// Block 697, offset 0xae40
+-	0x00000002, 0x40306E20, 0xAE603702, 0x00000002, 0x00306E83, 0xAE603702,
+-	0x00000002, 0x40306E20, 0xAE603802, 0x00000002, 0x00306E83, 0xAE603802,
+-	0x00000002, 0x40306E20, 0xAE603902, 0x00000002, 0x00306E83, 0xAE603902,
+-	0x00000002, 0x4030BE20, 0xAE603702, 0x00000002, 0x0030BE88, 0xAE603702,
+-	0x00000002, 0x4030BE20, 0xAE603902, 0x00000002, 0x0030BE88, 0xAE603902,
+-	0x00000002, 0x4030E220, 0xAE603802, 0x00000002, 0x0030E288, 0xAE603802,
+-	0x00000002, 0x4030E220, 0xAE603902, 0x00000002, 0x0030E288, 0xAE603902,
+-	0x00000002, 0x40310020, 0xAE603602, 0x00000002, 0x00310088, 0xAE603602,
+-	0x00000002, 0x40310020, 0xAE603702, 0x00000002, 0x00310088, 0xAE603702,
+-	0x00000002, 0x40310020, 0xAE603802, 0x00000002, 0x00310088, 0xAE603802,
+-	0x00000002, 0x40310020, 0xAE603902, 0x00000002,
+-	// Block 698, offset 0xae80
+-	0x00310088, 0xAE603902, 0x00000002, 0x40312A20, 0xAE603802, 0x00000002,
+-	0x00312A88, 0xAE603802, 0x00000002, 0x40312A20, 0xAE603902, 0x00000002,
+-	0x00312A88, 0xAE603902, 0x00000003, 0x40325220, 0xAE602202, 0xAE603802,
+-	0x00000003, 0x00325288, 0xAE602202, 0xAE603802, 0x00000004, 0x40325220,
+-	0xAE602202, 0xAE603802, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202,
+-	0xAE603802, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603802,
+-	0x00000003, 0x00325288, 0xAE602A02, 0xAE603802, 0x00000004, 0x40325220,
+-	0xAE602A02, 0xAE603802, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02,
+-	0xAE603802, 0xAF007F02, 0x00000002, 0x40325220, 0xAE603802, 0x00000002,
+-	0x00325288, 0xAE603802, 0x00000003, 0x40325220, 0xAE603802, 0xAF007F02,
+-	0x00000003, 0x40325C20, 0xAE602202, 0xAE603802,
+-	// Block 699, offset 0xaec0
+-	0x00000003, 0x00325C88, 0xAE602202, 0xAE603802, 0x00000003, 0x40325C20,
+-	0xAE602A02, 0xAE603802, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603802,
+-	0x00000002, 0x40325C20, 0xAE603802, 0x00000002, 0x00325C88, 0xAE603802,
+-	0x00000003, 0x40326820, 0xAE602202, 0xAE603802, 0x00000003, 0x00326888,
+-	0xAE602202, 0xAE603802, 0x00000004, 0x40326820, 0xAE602202, 0xAE603802,
+-	0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603802, 0xAF007F02,
+-	0x00000003, 0x40326820, 0xAE602A02, 0xAE603802, 0x00000003, 0x00326888,
+-	0xAE602A02, 0xAE603802, 0x00000004, 0x40326820, 0xAE602A02, 0xAE603802,
+-	0xAF007F02, 0x00000004, 0x00326888, 0xAE602A02, 0xAE603802, 0xAF007F02,
+-	0x00000002, 0x40326820, 0xAE603802, 0x00000002, 0x00326888, 0xAE603802,
+-	0x00000003, 0x40326820, 0xAE603802, 0xAF007F02,
+-	// Block 700, offset 0xaf00
+-	0x00000003, 0x40326C20, 0xAE602202, 0xAE603802, 0x00000003, 0x00326C88,
+-	0xAE602202, 0xAE603802, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603802,
+-	0x00000003, 0x00326C88, 0xAE602A02, 0xAE603802, 0x00000002, 0x40326C20,
+-	0xAE603802, 0x00000002, 0x00326C88, 0xAE603802, 0x00000003, 0x40326C20,
+-	0xAE604702, 0xAE603802, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603802,
+-	0x00000003, 0x00327C88, 0xAE602202, 0xAE603802, 0x00000003, 0x40327C20,
+-	0xAE602A02, 0xAE603802, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603802,
+-	0x00000002, 0x40327C20, 0xAE603802, 0x00000002, 0x00327C88, 0xAE603802,
+-	0x00000003, 0x40329820, 0xAE602202, 0xAE603802, 0x00000003, 0x40329820,
+-	0xAE602A02, 0xAE603802, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603802,
+-	0x00000002, 0x40329820, 0xAE603802, 0x00000002,
+-	// Block 701, offset 0xaf40
+-	0x00329888, 0xAE603802, 0x00000003, 0x40329820, 0xAE604702, 0xAE603802,
+-	0x00000003, 0x4032A220, 0xAE602202, 0xAE603802, 0x00000003, 0x0032A288,
+-	0xAE602202, 0xAE603802, 0x00000004, 0x4032A220, 0xAE602202, 0xAE603802,
+-	0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603802, 0xAF007F02,
+-	0x00000003, 0x4032A220, 0xAE602A02, 0xAE603802, 0x00000003, 0x0032A288,
+-	0xAE602A02, 0xAE603802, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603802,
+-	0xAF007F02, 0x00000004, 0x0032A288, 0xAE602A02, 0xAE603802, 0xAF007F02,
+-	0x00000002, 0x4032A220, 0xAE603802, 0x00000002, 0x0032A288, 0xAE603802,
+-	0x00000003, 0x4032A220, 0xAE603802, 0xAF007F02, 0x00000002, 0x402BDE20,
+-	0xAE603202, 0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x402D9A20,
+-	0xAE603202, 0x00000002, 0x402EE220, 0xAE603202,
+-	// Block 702, offset 0xaf80
+-	0x00000002, 0x40306C20, 0xAE603202, 0x00000002, 0x402C9A20, 0xAE603C02,
+-	0x00000002, 0x002C9A83, 0xAE603C02, 0x00000003, 0x0003F483, 0x6C030A20,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6C110E20, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6C272220, 0x4003F620, 0x00000003, 0x0003F483, 0x6C37B420,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6C549820, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6C5D8420, 0x4003F620, 0x00000003, 0x0003F483, 0x6C61F420,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6C64CA20, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6C6C2E20, 0x4003F620, 0x00000003, 0x0003F483, 0x6C6F9A20,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6C814020, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6C8F2420, 0x4003F620, 0x00000003, 0x0003F483, 0x6C9FE620,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6CA25C20,
+-	// Block 703, offset 0xafc0
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6CB4C620, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6CB6C820, 0x4003F620, 0x00000003, 0x0003F483, 0x6CC63620,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6CC9F220, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6CCF3620, 0x4003F620, 0x00000003, 0x0003F483, 0x6CD22420,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6CD70220, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6CD87420, 0x4003F620, 0x00000003, 0x0003F483, 0x6CE27020,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6CE91020, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6CF41420, 0x4003F620, 0x00000003, 0x0003F483, 0x6D007020,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6D04B220, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6D08F820, 0x4003F620, 0x00000003, 0x0003F483, 0x6D13B620,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6D1F9820,
+-	// Block 704, offset 0xb000
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6D266820, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6D357020, 0x4003F620, 0x00000003, 0x0003F483, 0x6D399220,
+-	0x4003F620, 0x00000003, 0x0003F483, 0x6D3AC620, 0x4003F620, 0x00000003,
+-	0x0003F483, 0x6D3E6020, 0x4003F620, 0x00000003, 0x0003F483, 0x6D3F2A20,
+-	0x4003F620, 0x00000003, 0x0004B083, 0x6C011220, 0x4004B220, 0x00000003,
+-	0x0004B083, 0x6C044020, 0x4004B220, 0x00000003, 0x0004B083, 0x6C079220,
+-	0x4004B220, 0x00000003, 0x0004B083, 0x6C26E020, 0x4004B220, 0x00000003,
+-	0x0004B083, 0x6C2A1220, 0x4004B220, 0x00000003, 0x0004B083, 0x6C2D0A20,
+-	0x4004B220, 0x00000003, 0x0004B083, 0x6C37B420, 0x4004B220, 0x00000003,
+-	0x0004B083, 0x6CC9F220, 0x4004B220, 0x00000003, 0x0004B083, 0x6CD16420,
+-	0x4004B220, 0x00000003, 0x0029CE83, 0x4029CC20,
+-	// Block 705, offset 0xb040
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029CC20, 0x6CC63620, 0x00000003,
+-	0x0029CE83, 0x4029CC20, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029CE20,
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029CE20, 0x6CC63620, 0x00000003,
+-	0x0029CE83, 0x4029CE20, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029D020,
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029D020, 0x6CC63620, 0x00000003,
+-	0x0029CE83, 0x4029D020, 0x6D266820, 0x00000003, 0x0029CE83, 0x4029D220,
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029D220, 0x6CC63620, 0x00000003,
+-	0x0029CE83, 0x4029D420, 0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029D420,
+-	0x6CC63620, 0x00000003, 0x0029CE83, 0x4029D620, 0x6C2D0A20, 0x00000003,
+-	0x0029CE83, 0x4029D620, 0x6CC63620, 0x00000003, 0x0029CE83, 0x4029D820,
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029D820,
+-	// Block 706, offset 0xb080
+-	0x6CC63620, 0x00000003, 0x0029CE83, 0x4029DA20, 0x6C2D0A20, 0x00000003,
+-	0x0029CE83, 0x4029DA20, 0x6CC63620, 0x00000003, 0x0029CE83, 0x4029DC20,
+-	0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029DC20, 0x6CC63620, 0x00000003,
+-	0x0029CE83, 0x4029DE20, 0x6C2D0A20, 0x00000003, 0x0029CE83, 0x4029DE20,
+-	0x6CC63620, 0x00000003, 0x0029D083, 0x4029CC20, 0x6C2D0A20, 0x00000003,
+-	0x0029D083, 0x4029CC20, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029CE20,
+-	0x6C2D0A20, 0x00000003, 0x0029D083, 0x4029CE20, 0x6CC63620, 0x00000003,
+-	0x0029D083, 0x4029D020, 0x6C2D0A20, 0x00000003, 0x0029D083, 0x4029D020,
+-	0x6CC63620, 0x00000003, 0x0029D083, 0x4029D220, 0x6C2D0A20, 0x00000003,
+-	0x0029D083, 0x4029D220, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029D420,
+-	0x6C2D0A20, 0x00000003, 0x0029D083, 0x4029D420,
+-	// Block 707, offset 0xb0c0
+-	0x6CC63620, 0x00000003, 0x0029D083, 0x4029D620, 0x6CC63620, 0x00000003,
+-	0x0029D083, 0x4029D820, 0x6CC63620, 0x00000003, 0x0029D083, 0x4029DA20,
+-	0x6CC63620, 0x00000003, 0x0029D083, 0x4029DC20, 0x6CC63620, 0x00000003,
+-	0x0029D083, 0x4029DE20, 0x6CC63620, 0x00000003, 0x0029D283, 0x4029CC20,
+-	0x6CC63620, 0x00000003, 0x0029D283, 0x4029CE20, 0x6CC63620, 0x00000002,
+-	0x402BDE1C, 0xAE604702, 0x00000002, 0x002BDE03, 0xAE604702, 0x00000002,
+-	0x402BDE1C, 0xAE605202, 0x00000002, 0x002BDE03, 0xAE605202, 0x00000002,
+-	0x402BDE1D, 0xAE603702, 0x00000002, 0x002BDE23, 0xAE603702, 0x00000002,
+-	0x402BDE1D, 0xAE603C02, 0x00000002, 0x002BDE23, 0xAE603C02, 0x00000002,
+-	0x402BDE1D, 0xAE604302, 0x00000002, 0x002BDE23, 0xAE604302, 0x00000002,
+-	0x402BDE1F, 0xAE603702, 0x00000002, 0x002BDE63,
+-	// Block 708, offset 0xb100
+-	0xAE603702, 0x00000002, 0x402BDE1F, 0xAE603C02, 0x00000002, 0x002BDE63,
+-	0xAE603C02, 0x00000002, 0x402C981C, 0xAE603202, 0x00000002, 0x002C9803,
+-	0xAE603202, 0x00000002, 0x402C981C, 0xAE603502, 0x00000002, 0x002C9803,
+-	0xAE603502, 0x00000002, 0x402D9A1D, 0xAE604702, 0x00000002, 0x002D9A23,
+-	0xAE604702, 0x00000002, 0x402EE21C, 0xAE603202, 0x00000002, 0x002EE203,
+-	0xAE603202, 0x00000002, 0x402EE21C, 0xAE603502, 0x00000002, 0x002EE203,
+-	0xAE603502, 0x00000002, 0x402EE21C, 0xAE604702, 0x00000002, 0x002EE203,
+-	0xAE604702, 0x00000002, 0x402EE21C, 0xAE604E02, 0x00000002, 0x002EE203,
+-	0xAE604E02, 0x00000002, 0x402EE21C, 0xAE605202, 0x00000002, 0x002EE203,
+-	0xAE605202, 0x00000002, 0x402EE21C, 0xACA05902, 0x00000002, 0x002EE203,
+-	0xACA05902, 0x00000002, 0x402EE21D, 0xAE603C02,
+-	// Block 709, offset 0xb140
+-	0x00000002, 0x002EE223, 0xAE603C02, 0x00000002, 0x402EE21D, 0xAE604E02,
+-	0x00000002, 0x002EE223, 0xAE604E02, 0x00000002, 0x402EE21D, 0xAD806802,
+-	0x00000002, 0x002EE223, 0xAD806802, 0x00000002, 0x402EE21F, 0xAE603C02,
+-	0x00000002, 0x002EE263, 0xAE603C02, 0x00000002, 0x402EE21F, 0xAD806802,
+-	0x00000002, 0x002EE263, 0xAD806802, 0x00000002, 0x40306C1C, 0xAE604702,
+-	0x00000002, 0x00306C03, 0xAE604702, 0x00000002, 0x40306C1D, 0xAE604E02,
+-	0x00000002, 0x00306C23, 0xAE604E02, 0x00000002, 0x40306C1D, 0xAD806802,
+-	0x00000002, 0x00306C23, 0xAD806802, 0x00000002, 0x40306C1F, 0xAD806802,
+-	0x00000002, 0x00306C63, 0xAD806802, 0x00000004, 0x2D399283, 0x6CD2FC20,
+-	0x6C5B8A20, 0x6CCF3620,
+-}
+-
+-// mainContractElem: 4021 entries, 16084 bytes
+-var mainContractElem = [4021]uint32{
+-	// Block 0, offset 0x0
+-	0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0xE0000D01,
+-	0x40332220, 0x40332A20, 0x40333220, 0x00332288, 0x00332A88, 0x00333288,
+-	0x40333A20, 0x40334220, 0x00333A88, 0x00334288, 0x40336220, 0x4033A220,
+-	0x4033A220, 0x00336288, 0x0033A288, 0x0033A288, 0x4033B220, 0x4033BA20,
+-	0x0033B288, 0x0033BA88, 0x4033CA20, 0x4033D420, 0x0033CA88, 0x0033D488,
+-	0x4033E420, 0x4033F220, 0x0033E488, 0x0033F288, 0x40341420, 0x40343E20,
+-	0x40342420, 0x00341488, 0x00343E88, 0x00342488, 0x40342C20, 0x40343620,
+-	0x00342C88, 0x00343688, 0x4034EE20, 0x4034F620, 0x0034EE88, 0x0034F688,
+-	0x4034FE20, 0x40350620, 0x0034FE88, 0x00350688, 0x40345020, 0x40356A20,
+-	0x40356A20, 0x00345088, 0x00356A88, 0x00356A88, 0x40357220, 0x40357A20,
+-	0x40358220, 0x40358A20, 0x00357288, 0x00357A88,
+-	// Block 1, offset 0x40
+-	0x00358288, 0x00358A88, 0x40361820, 0x40362220, 0x00361888, 0x00362288,
+-	0x40367E20, 0x40368620, 0x00367E88, 0x00368688, 0x4036A820, 0x4036B020,
+-	0x0036A888, 0x0036B088, 0x40371420, 0x40371C20, 0x00371488, 0x00371C88,
+-	0x40393820, 0x40391E20, 0x40392020, 0x40392820, 0x403A7420, 0x40392620,
+-	0x403A9020, 0x40393020, 0x4040F020, 0x4040F420, 0x4040F620, 0x40426E20,
+-	0x40427220, 0x40427020, 0x40427420, 0x40429020, 0x40429420, 0x4042D020,
+-	0x4042D620, 0x4042DA20, 0x4042D220, 0x4042D820, 0x40435E20, 0x40436220,
+-	0x4043E020, 0x4043E220, 0x4043F020, 0x4043F820, 0x4043F620, 0x4043F220,
+-	0x4043F420, 0x4043F620, 0x4043F820, 0x40448220, 0x40448820, 0x40448C20,
+-	0x40448420, 0x40448A20, 0x40451E20, 0x40452620, 0x40452020, 0x40452420,
+-	0x40452820, 0x40452420, 0x40452620, 0x40498420,
+-	// Block 2, offset 0x80
+-	0xE0001881, 0xE0001890, 0xE000189F, 0xE00018AE, 0xE00018BD, 0xE00018CC,
+-	0xE00018DB, 0xE00018EA, 0xE00018F9, 0xE0001908, 0xE0001917, 0xE0001926,
+-	0xE0001935, 0xE0001944, 0xE0001953, 0xE0001962, 0xE0001971, 0xE0001980,
+-	0xE000198F, 0xE000199E, 0xE00019AD, 0xE00019BC, 0xE00019CB, 0xE00019DA,
+-	0xE00019E9, 0xE00019F8, 0xE0001A07, 0xE0001A16, 0xE0001A25, 0xE0001A34,
+-	0xE0001A43, 0xE0001A52, 0xE0001A61, 0xE0001A70, 0xE0001A7F, 0xE0001A8E,
+-	0xE0001A9D, 0xE0001AAC, 0xE0001ABB, 0xE0001ACA, 0xE0001AD9, 0xE0001AE8,
+-	0xE0001AF7, 0xE0001B06, 0xE0001B15, 0xE0001B24, 0x40498620, 0xE0001884,
+-	0xE0001893, 0xE00018A2, 0xE00018B1, 0xE00018C0, 0xE00018CF, 0xE00018DE,
+-	0xE00018ED, 0xE00018FC, 0xE000190B, 0xE000191A, 0xE0001929, 0xE0001938,
+-	0xE0001947, 0xE0001956, 0xE0001965, 0xE0001974,
+-	// Block 3, offset 0xc0
+-	0xE0001983, 0xE0001992, 0xE00019A1, 0xE00019B0, 0xE00019BF, 0xE00019CE,
+-	0xE00019DD, 0xE00019EC, 0xE00019FB, 0xE0001A0A, 0xE0001A19, 0xE0001A28,
+-	0xE0001A37, 0xE0001A46, 0xE0001A55, 0xE0001A64, 0xE0001A73, 0xE0001A82,
+-	0xE0001A91, 0xE0001AA0, 0xE0001AAF, 0xE0001ABE, 0xE0001ACD, 0xE0001ADC,
+-	0xE0001AEB, 0xE0001AFA, 0xE0001B09, 0xE0001B18, 0xE0001B27, 0x40498820,
+-	0xE0001887, 0xE0001896, 0xE00018A5, 0xE00018B4, 0xE00018C3, 0xE00018D2,
+-	0xE00018E1, 0xE00018F0, 0xE00018FF, 0xE000190E, 0xE000191D, 0xE000192C,
+-	0xE000193B, 0xE000194A, 0xE0001959, 0xE0001968, 0xE0001977, 0xE0001986,
+-	0xE0001995, 0xE00019A4, 0xE00019B3, 0xE00019C2, 0xE00019D1, 0xE00019E0,
+-	0xE00019EF, 0xE00019FE, 0xE0001A0D, 0xE0001A1C, 0xE0001A2B, 0xE0001A3A,
+-	0xE0001A49, 0xE0001A58, 0xE0001A67, 0xE0001A76,
+-	// Block 4, offset 0x100
+-	0xE0001A85, 0xE0001A94, 0xE0001AA3, 0xE0001AB2, 0xE0001AC1, 0xE0001AD0,
+-	0xE0001ADF, 0xE0001AEE, 0xE0001AFD, 0xE0001B0C, 0xE0001B1B, 0xE0001B2A,
+-	0x40498A20, 0xE000188A, 0xE0001899, 0xE00018A8, 0xE00018B7, 0xE00018C6,
+-	0xE00018D5, 0xE00018E4, 0xE00018F3, 0xE0001902, 0xE0001911, 0xE0001920,
+-	0xE000192F, 0xE000193E, 0xE000194D, 0xE000195C, 0xE000196B, 0xE000197A,
+-	0xE0001989, 0xE0001998, 0xE00019A7, 0xE00019B6, 0xE00019C5, 0xE00019D4,
+-	0xE00019E3, 0xE00019F2, 0xE0001A01, 0xE0001A10, 0xE0001A1F, 0xE0001A2E,
+-	0xE0001A3D, 0xE0001A4C, 0xE0001A5B, 0xE0001A6A, 0xE0001A79, 0xE0001A88,
+-	0xE0001A97, 0xE0001AA6, 0xE0001AB5, 0xE0001AC4, 0xE0001AD3, 0xE0001AE2,
+-	0xE0001AF1, 0xE0001B00, 0xE0001B0F, 0xE0001B1E, 0xE0001B2D, 0x40498C20,
+-	0xE000188D, 0xE000189C, 0xE00018AB, 0xE00018BA,
+-	// Block 5, offset 0x140
+-	0xE00018C9, 0xE00018D8, 0xE00018E7, 0xE00018F6, 0xE0001905, 0xE0001914,
+-	0xE0001923, 0xE0001932, 0xE0001941, 0xE0001950, 0xE000195F, 0xE000196E,
+-	0xE000197D, 0xE000198C, 0xE000199B, 0xE00019AA, 0xE00019B9, 0xE00019C8,
+-	0xE00019D7, 0xE00019E6, 0xE00019F5, 0xE0001A04, 0xE0001A13, 0xE0001A22,
+-	0xE0001A31, 0xE0001A40, 0xE0001A4F, 0xE0001A5E, 0xE0001A6D, 0xE0001A7C,
+-	0xE0001A8B, 0xE0001A9A, 0xE0001AA9, 0xE0001AB8, 0xE0001AC7, 0xE0001AD6,
+-	0xE0001AE5, 0xE0001AF4, 0xE0001B03, 0xE0001B12, 0xE0001B21, 0xE0001B30,
+-	0xA0010502, 0x40497420, 0x4049E620, 0xE0001B42, 0xE0001B51, 0xE0001B60,
+-	0xE0001B6F, 0xE0001B7E, 0xE0001B9C, 0xE0001BBA, 0xE0001BC9, 0xE0001BD8,
+-	0xE0001BE7, 0xE0001BF6, 0xE0001C05, 0xE0001C14, 0xE0001C23, 0xE0001C32,
+-	0xE0001C41, 0xE0001C50, 0xE0001C5F, 0xE0001C6E,
+-	// Block 6, offset 0x180
+-	0xE0001C7D, 0xE0001C8C, 0xE0001C9B, 0xE0001CAA, 0xE0001B8D, 0xE0001CE1,
+-	0xE0001CF0, 0xE0001CFF, 0xE0001CB9, 0xE0001CCD, 0xE0001B33, 0xE0001BAB,
+-	0x4049E820, 0xE0001B45, 0xE0001B54, 0xE0001B63, 0xE0001B72, 0xE0001B81,
+-	0xE0001B9F, 0xE0001BBD, 0xE0001BCC, 0xE0001BDB, 0xE0001BEA, 0xE0001BF9,
+-	0xE0001C08, 0xE0001C17, 0xE0001C26, 0xE0001C35, 0xE0001C44, 0xE0001C53,
+-	0xE0001C62, 0xE0001C71, 0xE0001C80, 0xE0001C8F, 0xE0001C9E, 0xE0001CAD,
+-	0xE0001B90, 0xE0001CE4, 0xE0001CF3, 0xE0001D02, 0xE0001CBD, 0xE0001CD1,
+-	0xE0001B36, 0xE0001BAE, 0x4049EA20, 0xE0001B48, 0xE0001B57, 0xE0001B66,
+-	0xE0001B75, 0xE0001B84, 0xE0001BA2, 0xE0001BC0, 0xE0001BCF, 0xE0001BDE,
+-	0xE0001BED, 0xE0001BFC, 0xE0001C0B, 0xE0001C1A, 0xE0001C29, 0xE0001C38,
+-	0xE0001C47, 0xE0001C56, 0xE0001C65, 0xE0001C74,
+-	// Block 7, offset 0x1c0
+-	0xE0001C83, 0xE0001C92, 0xE0001CA1, 0xE0001CB0, 0xE0001B93, 0xE0001CE7,
+-	0xE0001CF6, 0xE0001D05, 0xE0001CC1, 0xE0001CD5, 0xE0001B39, 0xE0001BB1,
+-	0x4049EC20, 0xE0001B4B, 0xE0001B5A, 0xE0001B69, 0xE0001B78, 0xE0001B87,
+-	0xE0001BA5, 0xE0001BC3, 0xE0001BD2, 0xE0001BE1, 0xE0001BF0, 0xE0001BFF,
+-	0xE0001C0E, 0xE0001C1D, 0xE0001C2C, 0xE0001C3B, 0xE0001C4A, 0xE0001C59,
+-	0xE0001C68, 0xE0001C77, 0xE0001C86, 0xE0001C95, 0xE0001CA4, 0xE0001CB3,
+-	0xE0001B96, 0xE0001CEA, 0xE0001CF9, 0xE0001D08, 0xE0001CC5, 0xE0001CD9,
+-	0xE0001B3C, 0xE0001BB4, 0x4049EE20, 0xE0001B4E, 0xE0001B5D, 0xE0001B6C,
+-	0xE0001B7B, 0xE0001B8A, 0xE0001BA8, 0xE0001BC6, 0xE0001BD5, 0xE0001BE4,
+-	0xE0001BF3, 0xE0001C02, 0xE0001C11, 0xE0001C20, 0xE0001C2F, 0xE0001C3E,
+-	0xE0001C4D, 0xE0001C5C, 0xE0001C6B, 0xE0001C7A,
+-	// Block 8, offset 0x200
+-	0xE0001C89, 0xE0001C98, 0xE0001CA7, 0xE0001CB6, 0xE0001B99, 0xE0001CED,
+-	0xE0001CFC, 0xE0001D0B, 0xE0001CC9, 0xE0001CDD, 0xE0001B3F, 0xE0001BB7,
+-	0xA0010B02, 0x4049D220, 0x404A5A20, 0xE0001D0E, 0xE0001D1D, 0xE0001D2C,
+-	0xE0001D3B, 0xE0001D4A, 0xE0001D59, 0xE0001D68, 0xE0001D77, 0xE0001D86,
+-	0xE0001D95, 0xE0001DA4, 0xE0001DB3, 0xE0001DC2, 0xE0001DD1, 0xE0001DE0,
+-	0xE0001DEF, 0xE0001DFE, 0xE0001E0D, 0xE0001E1C, 0xE0001E2B, 0xE0001E3A,
+-	0xE0001E49, 0xE0001E58, 0xE0001E67, 0xE0001E76, 0xE0001E85, 0xE0001E94,
+-	0xE0001EA3, 0xE0001EB2, 0xE0001EC1, 0xE0001ED0, 0xE0001EDF, 0xE0001EEE,
+-	0xE0001EFD, 0xE0001F0C, 0xE0001F1B, 0xE0001F2A, 0xE0001F39, 0xE0001F48,
+-	0xE0001F57, 0xE0001F66, 0xE0001F75, 0xE0001F84, 0xE0001F93, 0xE0001FA2,
+-	0xE0001FB1, 0xE0001FC0, 0xE0001FCF, 0x404A5C20,
+-	// Block 9, offset 0x240
+-	0xE0001D11, 0xE0001D20, 0xE0001D2F, 0xE0001D3E, 0xE0001D4D, 0xE0001D5C,
+-	0xE0001D6B, 0xE0001D7A, 0xE0001D89, 0xE0001D98, 0xE0001DA7, 0xE0001DB6,
+-	0xE0001DC5, 0xE0001DD4, 0xE0001DE3, 0xE0001DF2, 0xE0001E01, 0xE0001E10,
+-	0xE0001E1F, 0xE0001E2E, 0xE0001E3D, 0xE0001E4C, 0xE0001E5B, 0xE0001E6A,
+-	0xE0001E79, 0xE0001E88, 0xE0001E97, 0xE0001EA6, 0xE0001EB5, 0xE0001EC4,
+-	0xE0001ED3, 0xE0001EE2, 0xE0001EF1, 0xE0001F00, 0xE0001F0F, 0xE0001F1E,
+-	0xE0001F2D, 0xE0001F3C, 0xE0001F4B, 0xE0001F5A, 0xE0001F69, 0xE0001F78,
+-	0xE0001F87, 0xE0001F96, 0xE0001FA5, 0xE0001FB4, 0xE0001FC3, 0xE0001FD2,
+-	0x404A6220, 0xE0001D14, 0xE0001D23, 0xE0001D32, 0xE0001D41, 0xE0001D50,
+-	0xE0001D5F, 0xE0001D6E, 0xE0001D7D, 0xE0001D8C, 0xE0001D9B, 0xE0001DAA,
+-	0xE0001DB9, 0xE0001DC8, 0xE0001DD7, 0xE0001DE6,
+-	// Block 10, offset 0x280
+-	0xE0001DF5, 0xE0001E04, 0xE0001E13, 0xE0001E22, 0xE0001E31, 0xE0001E40,
+-	0xE0001E4F, 0xE0001E5E, 0xE0001E6D, 0xE0001E7C, 0xE0001E8B, 0xE0001E9A,
+-	0xE0001EA9, 0xE0001EB8, 0xE0001EC7, 0xE0001ED6, 0xE0001EE5, 0xE0001EF4,
+-	0xE0001F03, 0xE0001F12, 0xE0001F21, 0xE0001F30, 0xE0001F3F, 0xE0001F4E,
+-	0xE0001F5D, 0xE0001F6C, 0xE0001F7B, 0xE0001F8A, 0xE0001F99, 0xE0001FA8,
+-	0xE0001FB7, 0xE0001FC6, 0xE0001FD5, 0x404A6620, 0xE0001D17, 0xE0001D26,
+-	0xE0001D35, 0xE0001D44, 0xE0001D53, 0xE0001D62, 0xE0001D71, 0xE0001D80,
+-	0xE0001D8F, 0xE0001D9E, 0xE0001DAD, 0xE0001DBC, 0xE0001DCB, 0xE0001DDA,
+-	0xE0001DE9, 0xE0001DF8, 0xE0001E07, 0xE0001E16, 0xE0001E25, 0xE0001E34,
+-	0xE0001E43, 0xE0001E52, 0xE0001E61, 0xE0001E70, 0xE0001E7F, 0xE0001E8E,
+-	0xE0001E9D, 0xE0001EAC, 0xE0001EBB, 0xE0001ECA,
+-	// Block 11, offset 0x2c0
+-	0xE0001ED9, 0xE0001EE8, 0xE0001EF7, 0xE0001F06, 0xE0001F15, 0xE0001F24,
+-	0xE0001F33, 0xE0001F42, 0xE0001F51, 0xE0001F60, 0xE0001F6F, 0xE0001F7E,
+-	0xE0001F8D, 0xE0001F9C, 0xE0001FAB, 0xE0001FBA, 0xE0001FC9, 0xE0001FD8,
+-	0x404A6820, 0xE0001D1A, 0xE0001D29, 0xE0001D38, 0xE0001D47, 0xE0001D56,
+-	0xE0001D65, 0xE0001D74, 0xE0001D83, 0xE0001D92, 0xE0001DA1, 0xE0001DB0,
+-	0xE0001DBF, 0xE0001DCE, 0xE0001DDD, 0xE0001DEC, 0xE0001DFB, 0xE0001E0A,
+-	0xE0001E19, 0xE0001E28, 0xE0001E37, 0xE0001E46, 0xE0001E55, 0xE0001E64,
+-	0xE0001E73, 0xE0001E82, 0xE0001E91, 0xE0001EA0, 0xE0001EAF, 0xE0001EBE,
+-	0xE0001ECD, 0xE0001EDC, 0xE0001EEB, 0xE0001EFA, 0xE0001F09, 0xE0001F18,
+-	0xE0001F27, 0xE0001F36, 0xE0001F45, 0xE0001F54, 0xE0001F63, 0xE0001F72,
+-	0xE0001F81, 0xE0001F90, 0xE0001F9F, 0xE0001FAE,
+-	// Block 12, offset 0x300
+-	0xE0001FBD, 0xE0001FCC, 0xE0001FDB, 0x404AEA20, 0xE000200E, 0xE0002011,
+-	0x404B2620, 0x404B2420, 0x404B2620, 0x404AF020, 0xE0002014, 0xE0002017,
+-	0x404B2A20, 0x404B2820, 0x404B2A20, 0x8281258B, 0x8281258D, 0x82812591,
+-	0x8281258F, 0x404ECA20, 0x404ECC20, 0x404F9C20, 0x404F9620, 0x404F9E20,
+-	0x404F9820, 0x40522620, 0x40522820, 0x40522A20, 0x40522C20, 0x40522E20,
+-	0x40523020, 0x40523220, 0x40523420, 0x40523620, 0x40523820, 0x40523E20,
+-	0x40524020, 0x40529C20, 0x40529E20, 0x4052A020, 0x4052A220, 0x4052A420,
+-	0x4052A820, 0x4052A620, 0x4052AA20, 0x4052AC20, 0x4052AE20, 0x4040B620,
+-	0x4040B420, 0x40409820, 0x4040DC20, 0x402C3A20, 0x402C3C20, 0x002C3A88,
+-	0x002C3C83, 0x402D2220, 0x402D2420, 0x002D2288, 0x002D2483, 0x002D9883,
+-	0x002D9A83, 0x402EE220, 0x402EE420, 0x002EE288,
+-	// Block 13, offset 0x340
+-	0x002EE483, 0x402FE620, 0x402FE820, 0x002FE688, 0x002FE883, 0x40306C20,
+-	0x40306E20, 0x00306C88, 0x00306E83, 0x4033B220, 0x4033BA20, 0x4033B420,
+-	0x0033B288, 0x0033BA88, 0x0033B483, 0x402E2220, 0x402E2221, 0x402E2221,
+-	0x002E2288, 0x002E22A3, 0x002E22A3, 0x402C3A20, 0x402C3C20, 0x002D6A83,
+-	0x402D6A20, 0x002C3A88, 0x002C3C83, 0x002D6A85, 0x002D6A84, 0x402F7A20,
+-	0x402F7C20, 0x002F7A88, 0x002F7C83, 0x40312A20, 0x40312C20, 0x00312A88,
+-	0x00312C83, 0x002C3A88, 0x002C3C84, 0x002C3C83, 0x402C6220, 0x402C6420,
+-	0x002C6288, 0x002C6484, 0x002C6483, 0x402D0820, 0x402D0A20, 0x002D0888,
+-	0x002D0A84, 0x002D0A83, 0x402E9E20, 0x402D2420, 0x002E9E88, 0x002D2484,
+-	0x002D2483, 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x402E2420, 0x002E2288,
+-	0xE0000D01, 0xE0000D01, 0x002E2484, 0x002E2483,
+-	// Block 14, offset 0x380
+-	0x402F2C20, 0x402F2E20, 0x002F2C88, 0x002F2E84, 0x002F2E83, 0x002F7A88,
+-	0x002F7C84, 0x002F7C83, 0x40302C20, 0x40302E20, 0x00302C88, 0x00302E84,
+-	0x00302E83, 0x40306C20, 0x40310021, 0x40310022, 0x00306C88, 0x003100A3,
+-	0x003100C3, 0x402BDE20, 0x40320C21, 0x40321020, 0x00321084, 0x002BDE88,
+-	0x00320CA3, 0x00321083, 0x00321086, 0x00321085, 0x402C9820, 0x40320C22,
+-	0x002C9888, 0x00320CC3, 0x402EE220, 0x40320E21, 0x40320E22, 0x002EE288,
+-	0x00320EA3, 0x00320EC3, 0xAE611302, 0x404A7621, 0x404A7C21, 0x404AB020,
+-	0x404ACC20, 0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404ADA20,
+-	0x404A8220, 0x404A8420, 0xE0002635, 0xE000263A, 0x404A8620, 0x404A8820,
+-	0x404A8A20, 0x404A8C20, 0x404A8E20, 0x404A9020, 0x404A9220, 0x404A9420,
+-	0x404A9620, 0x404A9820, 0x404A9A20, 0x404A9C20,
+-	// Block 15, offset 0x3c0
+-	0x404A8620, 0x404A8820, 0xE000263F, 0xE0002644, 0x404A8A20, 0x404A8C20,
+-	0x404A8E20, 0x404A9020, 0x404ABA20, 0x404ABC20, 0xE0002649, 0xE000264E,
+-	0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420, 0x404AC620, 0x404AC820,
+-	0x404ACA20, 0x404AD620, 0x404AD820, 0x404AC220, 0x404AC420, 0xE0002653,
+-	0xE0002658, 0x404AC620, 0x404AC820, 0x404ACA20, 0x404ACC20, 0x404ACE20,
+-	0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820, 0x404ADA20,
+-	0x404ADC20, 0x404AC620, 0x404AC820, 0xE000265D, 0xE0002662, 0x404ACA20,
+-	0x404ACC20, 0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620,
+-	0x404AD820, 0x404ADC20, 0x404A7820, 0x404AC020, 0x404A9E20, 0xE000266D,
+-	0xE0002672, 0x404AA020, 0x404AA220, 0x404AA420, 0x404AA620, 0x404AA820,
+-	0x404AAA20, 0x404AAC20, 0x004AA283, 0x404AAE20,
+-	// Block 16, offset 0x400
+-	0x404AB020, 0x404AB220, 0x404ACC20, 0xE0002677, 0xE000267C, 0x404ACE20,
+-	0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820, 0x404ADA20,
+-	0x404ADC20, 0x004ACE83, 0x404A8220, 0x404AE820, 0x404AA420, 0x404A9A20,
+-	0x404A9E20, 0x404AB420, 0x404B1420, 0x404AE420, 0x404AD220, 0x404AD820,
+-	0x404AEA20, 0x404A9020, 0x404AB620, 0x404B1620, 0x404B1620, 0x404B1820,
+-	0xE0002681, 0xE0002686, 0x404B1A20, 0x404B1C20, 0x404B1E20, 0x404B2020,
+-	0x404B2220, 0x404B2420, 0x404B2620, 0x404B2820, 0x404B2A20, 0x004B1E83,
+-	0x404A8420, 0x404AEA20, 0x404AA620, 0x404AA020, 0x404AB820, 0x404B1820,
+-	0x404AE620, 0x404AD420, 0x404B2C20, 0x404B2E20, 0x404B3020, 0x404A7A20,
+-	0x404A8C20, 0x404AAC20, 0x404ACC20, 0x404ADC20, 0x404AE020, 0x404AF620,
+-	0x404AE820, 0x404A7C20, 0x404AE220, 0x404A9E20,
+-	// Block 17, offset 0x440
+-	0x404A9620, 0x404A9A20, 0x404AAE20, 0x404B0E20, 0x404AE020, 0x404AFC20,
+-	0x404ADE20, 0x404ACE20, 0x404AD620, 0x404AEE20, 0x404A7E20, 0x404AE420,
+-	0x404AA020, 0x404A8E20, 0x404A9820, 0x404AB020, 0x404B1020, 0x404ADA20,
+-	0x404AFE20, 0x404B0020, 0x404AC420, 0x404AB420, 0x404AB620, 0x404AB820,
+-	0x404ABA20, 0x404ABC20, 0x404ABE20, 0x404AC020, 0x404A9220, 0xE000268E,
+-	0xE0002693, 0x404A9420, 0x404A9620, 0x404A9820, 0x404A9A20, 0x404A9C20,
+-	0x404ADE20, 0x404AE020, 0xE0002698, 0xE000269D, 0x404AE220, 0x404AE420,
+-	0x404AE620, 0x404AE820, 0x404AEA20, 0x404AEC20, 0x404ACA20, 0x404ACC20,
+-	0xE00026A2, 0xE00026A7, 0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420,
+-	0x404AD620, 0x404AD820, 0x404ADA20, 0x404ADC20, 0x404ADE20, 0x004AD283,
+-	0x404A7E20, 0x404A8E20, 0x404A9220, 0x404A9820,
+-	// Block 18, offset 0x480
+-	0x404AAE20, 0x404ACE20, 0x404AD220, 0x404AFA20, 0x404A8020, 0x404AE620,
+-	0x404AA220, 0x404A9C20, 0x404AB220, 0x404B1220, 0x404AE220, 0x404ADC20,
+-	0x404B0020, 0x404AE020, 0x404AD020, 0x404AE020, 0x404AC220, 0x404AC420,
+-	0xE00026AF, 0xE00026B4, 0x404AC620, 0x404AC820, 0x404ACA20, 0x404ACC20,
+-	0x404ACE20, 0x404AD020, 0x404AD220, 0x404AD420, 0x404AD620, 0x404AD820,
+-	0x404ADA20, 0x404ADC20, 0x004ACC83, 0x404ADE20, 0x404AE020, 0x404AEE20,
+-	0x404AF020, 0xE00026B9, 0xE00026BE, 0x404AF220, 0x404AF420, 0x404AF620,
+-	0x404AF820, 0x404AFA20, 0x404AFC20, 0x404AFE20, 0x404B0020, 0x404B0220,
+-	0x404B0420, 0x404B0620, 0x404B0820, 0x404B0A20, 0x004AF883, 0x404B0C20,
+-	0x404ADE20, 0x404AE020, 0xE00026C3, 0xE00026C8, 0x404AE220, 0x404AE420,
+-	0x404AE620, 0x404AE820, 0x404AEA20, 0x404AEC20,
+-	// Block 19, offset 0x4c0
+-	0x404AEE20, 0x404AF020, 0x404AF220, 0x404AF420, 0x404AF620, 0x004AE883,
+-	0x404AF820, 0x404AFA20, 0x404A8020, 0x404A9020, 0x404A9420, 0x404AB020,
+-	0x404ABE20, 0x404AD020, 0x404AD420, 0x404A8020, 0x404AB220, 0x404AB420,
+-	0xE0002614, 0xE0002619, 0x404AB620, 0x404AB820, 0x404ABA20, 0x404ABC20,
+-	0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420, 0x404AC620, 0x404AC820,
+-	0x404ACA20, 0x004ABA83, 0x404AB620, 0x404AB820, 0xE000261E, 0xE0002623,
+-	0x404ABA20, 0x404ABC20, 0x404ABE20, 0x404AC020, 0x404AC220, 0x404AC420,
+-	0x404AC620, 0x404AC820, 0x004ABE83, 0x404AFC20, 0x404AFE20, 0xE0002628,
+-	0xE000262D, 0x404B0020, 0x404B0220, 0x404B0420, 0x404B0620, 0x404B0820,
+-	0x404B0A20, 0x404B0C20, 0x404B0E20, 0x404B1020, 0x404B1220, 0x404B1420,
+-	0x404A8A20, 0x404A9620, 0x404AAA20, 0x404ACA20,
+-	// Block 20, offset 0x500
+-	0x404ADA20, 0x404ADE20, 0x404AE620, 0x404AF420, 0xAE611602, 0x404A9421,
+-	0xAE611402, 0x404AB821, 0x404ABC21, 0x828225B1, 0xE000200E, 0xE0002011,
+-	0x404B2620, 0xE00026CD, 0xE000200E, 0xE0002011, 0x404B2420, 0x404B2620,
+-	0x828225B2, 0xE0002014, 0xE0002017, 0x404B2A20, 0xE00026D0, 0xE0002014,
+-	0xE0002017, 0x404B2820, 0x404B2A20, 0xAE610F02, 0x8281258D, 0x82812591,
+-	0x8281258F, 0x002D2288, 0x002D2484, 0x002D2483, 0x402DFE20, 0x402E0020,
+-	0x002DFE88, 0x002E0084, 0x002E0083, 0x402E9E20, 0x402EA020, 0x002E9E88,
+-	0x002EA084, 0x002EA083, 0x402C3420, 0xE0000CFB, 0xE0000CFB, 0x402C0820,
+-	0xE0000D01, 0xE0000D01, 0x402D6820, 0x402D6A20, 0x002D6888, 0x002D6A83,
+-	0x402DCC20, 0x402DCE20, 0x002DCC88, 0x002DCE83, 0x002E9E88, 0x002EA083,
+-	0x402FE620, 0x40302620, 0x002FE688, 0x00302683,
+-	// Block 21, offset 0x540
+-	0x40302820, 0x40302A20, 0x00302883, 0x00302A83, 0x402EE220, 0x4030EE20,
+-	0x4030F220, 0x002EE288, 0x0030EE83, 0x0030F283, 0x402BDE20, 0x4030F020,
+-	0x002BDE88, 0x0030F083, 0x40306C20, 0x4030F420, 0x00306C88, 0x0030F483,
+-	0x40393820, 0x40393620, 0x40393A21, 0x40393A23, 0x403A7420, 0x40393A25,
+-	0x403A9220, 0x40393A26, 0x403A9221, 0x00393B43, 0x403A9223, 0x00393B44,
+-	0x403A8821, 0x403A8825, 0x40306C20, 0x40310021, 0x00306C88, 0x003100A3,
+-	0x402BDE20, 0x40320E20, 0x40320C20, 0x002BDE88, 0x00320E83, 0x00320C83,
+-	0x402EE220, 0x40321020, 0x002EE288, 0x00321083, 0x402E9E20, 0x402EA020,
+-	0x402EA220, 0x002E9E88, 0x002EA083, 0x002EA284, 0x002EA283, 0x002FE688,
+-	0x002FE884, 0x002FE883, 0x4031DE20, 0x00310286, 0x00310283, 0x4003D220,
+-	0x00310287, 0x00310284, 0x402BEC20, 0xE0000CFB,
+-	// Block 22, offset 0x580
+-	0xE0000CFB, 0x002BEC83, 0xE0000D01, 0xE0000D01, 0x402C3A20, 0x402C3E20,
+-	0x402C3C20, 0x002C3A88, 0x002C3E83, 0x002C3C83, 0x402C6220, 0x402C6420,
+-	0x402C6420, 0x002C6288, 0x002C6486, 0x002C6484, 0x002C6486, 0x002C6484,
+-	0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E2486, 0x002E2484, 0x002E9E88,
+-	0x002EA086, 0x002EA084, 0x402C3A20, 0xE0003707, 0x402C3C20, 0x002C3A88,
+-	0xE000370D, 0xE000370A, 0x002C3C86, 0x002C3C84, 0x402C6220, 0xE0003719,
+-	0xE0003710, 0x402C6620, 0x402C6420, 0x002C6288, 0xE000371F, 0xE000371C,
+-	0xE0003716, 0x002C6686, 0xE0003713, 0x002C6684, 0x002C6486, 0x002C6484,
+-	0x402D2220, 0xE0003722, 0x402D2420, 0x002D2288, 0xE0003728, 0xE0003725,
+-	0x002D2486, 0x002D2484, 0x402E2220, 0xE000372B, 0xE0000CFB, 0xE0000CFB,
+-	0x402E2420, 0x002E2288, 0xE0003731, 0xE000372E,
+-	// Block 23, offset 0x5c0
+-	0xE0000D01, 0xE0000D01, 0x002E2486, 0x002E2484, 0x402E9E20, 0xE0003734,
+-	0x402EA020, 0x002E9E88, 0xE000373A, 0xE0003737, 0x002EA086, 0x002EA084,
+-	0x402EE220, 0x402EE420, 0x402EE421, 0x002EE288, 0x002EE483, 0x002EE4A3,
+-	0x402FE620, 0xE000373D, 0x402FE820, 0x002FE688, 0xE0003743, 0xE0003740,
+-	0x002FE886, 0x002FE884, 0x40302C20, 0xE0003746, 0x40302E20, 0x00302C88,
+-	0xE000374C, 0xE0003749, 0x00302E86, 0x00302E84, 0x40306C20, 0x40306E20,
+-	0x40306E21, 0x00306C88, 0x00306E83, 0x00306EA3, 0x40312A20, 0xE000374F,
+-	0x40312C20, 0x00312A88, 0xE0003755, 0xE0003752, 0x00312C86, 0x00312C84,
+-	0x00384A88, 0x00388A83, 0x402C3A20, 0x402C0C20, 0x002C3A88, 0x002C0C84,
+-	0x002C0C83, 0x402D2220, 0x402D2420, 0x402D2620, 0x402D2820, 0x002D2288,
+-	0x002D2484, 0x002D2684, 0x002D2884, 0x002D2483,
+-	// Block 24, offset 0x600
+-	0x002D2683, 0x002D2883, 0x402D9A20, 0x402D9C20, 0x002D9A88, 0x002D9C83,
+-	0x402DFE20, 0x402E0020, 0x402E0220, 0x002DFE88, 0x002E0084, 0x002E0284,
+-	0x002E0083, 0x002E0283, 0x402E9E20, 0x402EA020, 0x402EA220, 0x402EA420,
+-	0x002E9E88, 0x002EA083, 0x002EA284, 0x002EA484, 0x002EA283, 0x002EA483,
+-	0x402BDE20, 0x402C0820, 0x40320C21, 0x40321020, 0x002BDE88, 0x002C0883,
+-	0x00320CA3, 0x00321083, 0x402C9820, 0x402D0620, 0x002C9888, 0x002D0683,
+-	0x402D9A20, 0x402DCA20, 0x002D9A88, 0x002DCA83, 0x402EE220, 0x402F2A20,
+-	0x40320E20, 0x002EE288, 0x002F2A83, 0x00320E83, 0x40306C20, 0x4030BC20,
+-	0x00306C88, 0x0030BC83, 0x40310020, 0x40312820, 0x00310088, 0x00312883,
+-	0x0065768F, 0xE00038D8, 0xE00038D2, 0x0065768F, 0xE00038D2, 0xE00038D8,
+-	0x00657691, 0xE00038DB, 0xE00038D5, 0x00657691,
+-	// Block 25, offset 0x640
+-	0xE00038D5, 0xE00038DB, 0x0065828F, 0xE0003A56, 0xE00038DE, 0x0065828F,
+-	0xE00038DE, 0xE0003A56, 0x00658291, 0xE0003A5C, 0xE00038E4, 0xE0003A59,
+-	0xE00038E1, 0x00658291, 0xE00038E4, 0xE0003A5C, 0xE00038E1, 0xE0003A59,
+-	0x00658291, 0xE00038E1, 0xE0003A59, 0xE000216D, 0xE0003A5C, 0xE00038E4,
+-	0xE000216D, 0xE00038E4, 0xE0003A5C, 0x00658C91, 0xE0003A9F, 0xE0003A9B,
+-	0xE00038EB, 0xE0003A9B, 0xE0003A98, 0xE0003A9B, 0xE00038E8, 0x00658C91,
+-	0xE0003A9F, 0xE00038EB, 0xE0003A9B, 0xE0003A9B, 0xE00038E8, 0xE0003A98,
+-	0xE0003A9B, 0x00658C91, 0xE0003A9B, 0xE00038E8, 0xE0003A98, 0xE0003A9B,
+-	0xE00021F2, 0xE0003A9B, 0xE0003A9F, 0xE00038EB, 0xE00021F2, 0xE00038EB,
+-	0xE0003A9B, 0xE0003A9F, 0x00659691, 0xE0003AE9, 0xE0003AE5, 0xE00038F2,
+-	0xE0003AE5, 0xE0003AE2, 0xE0003AE5, 0xE00038EF,
+-	// Block 26, offset 0x680
+-	0x00659691, 0xE0003AE9, 0xE00038F2, 0xE0003AE5, 0xE0003AE5, 0xE00038EF,
+-	0xE0003AE2, 0xE0003AE5, 0x00659691, 0xE0003AE5, 0xE00038EF, 0xE0003AE2,
+-	0xE0003AE5, 0xE000222C, 0xE0003AE5, 0xE0003AE9, 0xE00038F2, 0xE000222C,
+-	0xE00038F2, 0xE0003AE5, 0xE0003AE9, 0x0065A091, 0xE0003B2C, 0xE00038F6,
+-	0x0065A091, 0xE00038F6, 0xE0003B2C, 0x0065AA8F, 0xE0003B44, 0xE00038F9,
+-	0xE0003B3E, 0xE0003B44, 0x0065AA91, 0xE0003B4C, 0xE0003B55, 0xE0003B48,
+-	0xE00038FF, 0xE0003B51, 0xE0003903, 0xE0003B48, 0xE0003B41, 0xE0003B48,
+-	0xE00038FC, 0x0065AA91, 0xE0003B4C, 0xE0003B55, 0xE00038FF, 0xE0003B48,
+-	0xE0003903, 0xE0003B51, 0xE0003B48, 0xE00038FC, 0xE0003B41, 0xE0003B48,
+-	0x0065AA91, 0xE0003B48, 0xE00038FC, 0xE0003B41, 0xE0003B48, 0xE000225B,
+-	0xE0003B48, 0xE0003B4C, 0xE00038FF, 0xE000225B,
+-	// Block 27, offset 0x6c0
+-	0xE00038FF, 0xE0003B48, 0xE0003B4C, 0xE0002261, 0xE0003B51, 0xE0003B55,
+-	0xE0003903, 0xE0002261, 0xE0003903, 0xE0003B51, 0xE0003B55, 0x0065B491,
+-	0xE0003BCA, 0xE0003907, 0x0065B491, 0xE0003907, 0xE0003BCA, 0x0065BE8F,
+-	0xE0003BDC, 0xE000390A, 0x0065BE8F, 0xE000390A, 0xE0003BDC, 0x0065BE91,
+-	0xE0003BDF, 0xE000390D, 0x0065BE91, 0xE000390D, 0xE0003BDF, 0x0065C68F,
+-	0xE0003910, 0xE0003BF1, 0x0065C691, 0xE0003BF4, 0xE0003913, 0x0065C691,
+-	0xE0003913, 0xE0003BF4, 0x0065D08F, 0xE0003C15, 0xE0003C0F, 0xE0003C15,
+-	0xE0003916, 0x0065D08F, 0xE0003C15, 0xE0003916, 0xE0003C0F, 0xE0003C15,
+-	0x0065D091, 0xE0003C19, 0xE0003C12, 0xE0003C19, 0xE0003919, 0x0065D091,
+-	0xE0003C1D, 0xE000391C, 0xE0003C19, 0xE0003C19, 0xE0003919, 0xE0003C12,
+-	0xE0003C19, 0x0065D091, 0xE0003C19, 0xE0003919,
+-	// Block 28, offset 0x700
+-	0xE0003C12, 0xE0003C19, 0xE000236A, 0xE000391C, 0xE0003C19, 0xE0003C1D,
+-	0x0065788F, 0xE0003926, 0xE0003920, 0x0065788F, 0xE0003920, 0xE0003926,
+-	0x00657891, 0xE0003929, 0xE0003923, 0x00657891, 0xE0003923, 0xE0003929,
+-	0x00658491, 0xE0003A67, 0xE0003A63, 0xE000392F, 0xE0003A63, 0xE0003A60,
+-	0xE0003A63, 0xE000392C, 0x00658491, 0xE0003A67, 0xE000392F, 0xE0003A63,
+-	0xE0003A63, 0xE000392C, 0xE0003A60, 0xE0003A63, 0x00658491, 0xE0003A63,
+-	0xE000392C, 0xE0003A60, 0xE0003A63, 0xE000218B, 0xE0003A63, 0xE0003A67,
+-	0xE000392F, 0xE000218B, 0xE000392F, 0xE0003A63, 0xE0003A67, 0x00658E8F,
+-	0xE0003AAA, 0xE0003933, 0xE0003AA4, 0xE0003AAA, 0x00658E91, 0xE0003AB2,
+-	0xE0003AAE, 0xE0003939, 0xE0003AAE, 0xE0003AA7, 0xE0003AAE, 0xE0003936,
+-	0x00658E91, 0xE0003AB2, 0xE0003939, 0xE0003AAE,
+-	// Block 29, offset 0x740
+-	0xE0003AAE, 0xE0003936, 0xE0003AA7, 0xE0003AAE, 0x00658E91, 0xE0003AAE,
+-	0xE0003936, 0xE0003AA7, 0xE0003AAE, 0xE0002203, 0xE0003AAE, 0xE0003AB2,
+-	0xE0003939, 0xE0002203, 0xE0003939, 0xE0003AAE, 0xE0003AB2, 0x00659891,
+-	0xE0003AF5, 0xE0003AF1, 0xE0003940, 0xE0003AF1, 0xE0003AEE, 0xE0003AF1,
+-	0xE000393D, 0x00659891, 0xE0003AF5, 0xE0003940, 0xE0003AF1, 0xE0003AF1,
+-	0xE000393D, 0xE0003AEE, 0xE0003AF1, 0x00659891, 0xE0003AF1, 0xE000393D,
+-	0xE0003AEE, 0xE0003AF1, 0xE0002237, 0xE0003AF1, 0xE0003AF5, 0xE0003940,
+-	0xE0002237, 0xE0003940, 0xE0003AF1, 0xE0003AF5, 0x0065A291, 0xE0003B2F,
+-	0xE0003944, 0x0065A291, 0xE0003944, 0xE0003B2F, 0x0065AC8F, 0xE0003B60,
+-	0xE0003947, 0xE0003B5A, 0xE0003B60, 0x0065AC91, 0xE0003B68, 0xE0003B71,
+-	0xE0003B64, 0xE000394D, 0xE0003B6D, 0xE0003951,
+-	// Block 30, offset 0x780
+-	0xE0003B64, 0xE0003B5D, 0xE0003B64, 0xE000394A, 0x0065AC91, 0xE0003B68,
+-	0xE0003B71, 0xE000394D, 0xE0003B64, 0xE0003951, 0xE0003B6D, 0xE0003B64,
+-	0xE000394A, 0xE0003B5D, 0xE0003B64, 0x0065AC91, 0xE0003B64, 0xE000394A,
+-	0xE0003B5D, 0xE0003B64, 0xE000227D, 0xE0003B64, 0xE0003B68, 0xE000394D,
+-	0xE000227D, 0xE000394D, 0xE0003B64, 0xE0003B68, 0xE0002283, 0xE0003B6D,
+-	0xE0003B71, 0xE0003951, 0xE0002283, 0xE0003951, 0xE0003B6D, 0xE0003B71,
+-	0x0065B691, 0xE0003BCD, 0xE0003955, 0x0065B691, 0xE0003955, 0xE0003BCD,
+-	0x0065C88F, 0xE0003958, 0xE0003BF7, 0x0065C891, 0xE0003BFA, 0xE000395B,
+-	0x0065C891, 0xE000395B, 0xE0003BFA, 0x0065D291, 0xE0003C25, 0xE0003C22,
+-	0xE0003C25, 0xE000395E, 0x0065D291, 0xE0003C29, 0xE0003961, 0xE0003C25,
+-	0xE0003C25, 0xE000395E, 0xE0003C22, 0xE0003C25,
+-	// Block 31, offset 0x7c0
+-	0xE0002371, 0xE0003961, 0xE0003C25, 0xE0003C29, 0x00657A8F, 0xE0003975,
+-	0xE000396B, 0xE0003975, 0xE0003965, 0x00657A8F, 0xE0003975, 0xE0003965,
+-	0xE000396B, 0xE0003975, 0x00657A91, 0xE000397D, 0xE0003979, 0xE0003971,
+-	0xE0003979, 0xE000396E, 0xE0003979, 0xE0003968, 0x00657A91, 0xE000397D,
+-	0xE0003971, 0xE0003979, 0xE0003979, 0xE0003968, 0xE000396E, 0xE0003979,
+-	0x00657A91, 0xE0003979, 0xE0003968, 0xE000396E, 0xE0003979, 0xE000214F,
+-	0xE0003979, 0xE000397D, 0xE0003971, 0xE000214F, 0xE0003971, 0xE0003979,
+-	0xE000397D, 0x0065868F, 0xE0003A72, 0xE0003982, 0xE0003A6C, 0xE0003A72,
+-	0x00658691, 0xE0003A7A, 0xE0003A76, 0xE0003988, 0xE0003A76, 0xE0003A6F,
+-	0xE0003A76, 0xE0003985, 0x00658691, 0xE0003A7A, 0xE0003988, 0xE0003A76,
+-	0xE0003A76, 0xE0003985, 0xE0003A6F, 0xE0003A76,
+-	// Block 32, offset 0x800
+-	0x00658691, 0xE0003A76, 0xE0003985, 0xE0003A6F, 0xE0003A76, 0xE00021BB,
+-	0xE0003A76, 0xE0003A7A, 0xE0003988, 0xE00021BB, 0xE0003988, 0xE0003A76,
+-	0xE0003A7A, 0x0065908F, 0xE0003ABD, 0xE000398C, 0xE0003AB7, 0xE0003ABD,
+-	0x00659091, 0xE0003AC5, 0xE0003AC1, 0xE0003992, 0xE0003AC1, 0xE0003ABA,
+-	0xE0003AC1, 0xE000398F, 0x00659091, 0xE0003AC5, 0xE0003992, 0xE0003AC1,
+-	0xE0003AC1, 0xE000398F, 0xE0003ABA, 0xE0003AC1, 0x00659091, 0xE0003AC1,
+-	0xE000398F, 0xE0003ABA, 0xE0003AC1, 0xE0002212, 0xE0003AC1, 0xE0003AC5,
+-	0xE0003992, 0xE0002212, 0xE0003992, 0xE0003AC1, 0xE0003AC5, 0x00659A8F,
+-	0xE0003B00, 0xE0003AFA, 0xE0003B00, 0xE0003996, 0x00659A8F, 0xE0003B00,
+-	0xE0003996, 0xE0003AFA, 0xE0003B00, 0x00659A91, 0xE0003B08, 0xE0003B04,
+-	0xE000399C, 0xE0003B04, 0xE0003AFD, 0xE0003B04,
+-	// Block 33, offset 0x840
+-	0xE0003999, 0x00659A91, 0xE0003B08, 0xE000399C, 0xE0003B04, 0xE0003B04,
+-	0xE0003999, 0xE0003AFD, 0xE0003B04, 0x00659A91, 0xE0003B04, 0xE0003999,
+-	0xE0003AFD, 0xE0003B04, 0xE000223D, 0xE0003B04, 0xE0003B08, 0xE000399C,
+-	0xE000223D, 0xE000399C, 0xE0003B04, 0xE0003B08, 0x0065A48F, 0xE00039A0,
+-	0xE0003B32, 0x0065A491, 0xE0003B35, 0xE00039A3, 0x0065A491, 0xE00039A3,
+-	0xE0003B35, 0x0065AE8F, 0xE0003B7C, 0xE00039A6, 0xE0003B76, 0xE0003B7C,
+-	0x0065AE91, 0xE0003B84, 0xE0003B8D, 0xE0003B80, 0xE00039AC, 0xE0003B89,
+-	0xE00039B0, 0xE0003B80, 0xE0003B79, 0xE0003B80, 0xE00039A9, 0x0065AE91,
+-	0xE0003B84, 0xE0003B8D, 0xE00039AC, 0xE0003B80, 0xE00039B0, 0xE0003B89,
+-	0xE0003B80, 0xE00039A9, 0xE0003B79, 0xE0003B80, 0x0065AE91, 0xE0003B80,
+-	0xE00039A9, 0xE0003B79, 0xE0003B80, 0xE000229D,
+-	// Block 34, offset 0x880
+-	0xE0003B80, 0xE0003B84, 0xE00039AC, 0xE000229D, 0xE00039AC, 0xE0003B80,
+-	0xE0003B84, 0xE00022A3, 0xE0003B89, 0xE0003B8D, 0xE00039B0, 0xE00022A3,
+-	0xE00039B0, 0xE0003B89, 0xE0003B8D, 0x0065B88F, 0xE00039B4, 0xE0003BD0,
+-	0x0065B891, 0xE0003BD3, 0xE00039B7, 0x0065B891, 0xE00039B7, 0xE0003BD3,
+-	0x0065C08F, 0xE0003BE2, 0xE00039BA, 0x0065C08F, 0xE00039BA, 0xE0003BE2,
+-	0x0065C091, 0xE0003BE5, 0xE00039BD, 0x0065C091, 0xE00039BD, 0xE0003BE5,
+-	0x0065CA8F, 0xE00039C0, 0xE0003BFD, 0x0065CA91, 0xE0003C00, 0xE00039C3,
+-	0x0065CA91, 0xE00039C3, 0xE0003C00, 0x00657E8F, 0xE00039CC, 0xE00039C6,
+-	0x00657E8F, 0xE00039C6, 0xE00039CC, 0x00657E91, 0xE00039CF, 0xE00039C9,
+-	0x00657E91, 0xE00039C9, 0xE00039CF, 0x0065888F, 0xE0003A7F, 0xE00039D2,
+-	0x0065888F, 0xE00039D2, 0xE0003A7F, 0x00658891,
+-	// Block 35, offset 0x8c0
+-	0xE0003A85, 0xE00039D8, 0xE0003A82, 0xE00039D5, 0x00658891, 0xE00039D8,
+-	0xE0003A85, 0xE00039D5, 0xE0003A82, 0x00658891, 0xE00039D5, 0xE0003A82,
+-	0xE00021D9, 0xE0003A85, 0xE00039D8, 0xE00021D9, 0xE00039D8, 0xE0003A85,
+-	0x00659291, 0xE0003AD1, 0xE0003ACD, 0xE00039DF, 0xE0003ACD, 0xE0003ACA,
+-	0xE0003ACD, 0xE00039DC, 0x00659291, 0xE0003AD1, 0xE00039DF, 0xE0003ACD,
+-	0xE0003ACD, 0xE00039DC, 0xE0003ACA, 0xE0003ACD, 0x00659291, 0xE0003ACD,
+-	0xE00039DC, 0xE0003ACA, 0xE0003ACD, 0xE0002218, 0xE0003ACD, 0xE0003AD1,
+-	0xE00039DF, 0xE0002218, 0xE00039DF, 0xE0003ACD, 0xE0003AD1, 0x00659C91,
+-	0xE0003B14, 0xE0003B10, 0xE00039E6, 0xE0003B10, 0xE0003B0D, 0xE0003B10,
+-	0xE00039E3, 0x00659C91, 0xE0003B14, 0xE00039E6, 0xE0003B10, 0xE0003B10,
+-	0xE00039E3, 0xE0003B0D, 0xE0003B10, 0x00659C91,
+-	// Block 36, offset 0x900
+-	0xE0003B10, 0xE00039E3, 0xE0003B0D, 0xE0003B10, 0xE0002243, 0xE0003B10,
+-	0xE0003B14, 0xE00039E6, 0xE0002243, 0xE00039E6, 0xE0003B10, 0xE0003B14,
+-	0x0065A691, 0xE0003B38, 0xE00039EA, 0x0065A691, 0xE00039EA, 0xE0003B38,
+-	0x0065B08F, 0xE0003B98, 0xE00039ED, 0xE0003B92, 0xE0003B98, 0x0065B091,
+-	0xE0003BA0, 0xE0003BA9, 0xE0003B9C, 0xE00039F3, 0xE0003BA5, 0xE00039F7,
+-	0xE0003B9C, 0xE0003B95, 0xE0003B9C, 0xE00039F0, 0x0065B091, 0xE0003BA0,
+-	0xE0003BA9, 0xE00039F3, 0xE0003B9C, 0xE00039F7, 0xE0003BA5, 0xE0003B9C,
+-	0xE00039F0, 0xE0003B95, 0xE0003B9C, 0x0065B091, 0xE0003B9C, 0xE00039F0,
+-	0xE0003B95, 0xE0003B9C, 0xE00022C0, 0xE0003B9C, 0xE0003BA0, 0xE00039F3,
+-	0xE00022C0, 0xE00039F3, 0xE0003B9C, 0xE0003BA0, 0xE00022C6, 0xE0003BA5,
+-	0xE0003BA9, 0xE00039F7, 0xE00022C6, 0xE00039F7,
+-	// Block 37, offset 0x940
+-	0xE0003BA5, 0xE0003BA9, 0x0065BA91, 0xE0003BD6, 0xE00039FB, 0x0065BA91,
+-	0xE00039FB, 0xE0003BD6, 0x0065CC8F, 0xE00039FE, 0xE0003C03, 0x0065CC91,
+-	0xE0003C06, 0xE0003A01, 0x0065CC91, 0xE0003A01, 0xE0003C06, 0x0065D491,
+-	0xE0003C31, 0xE0003C2E, 0xE0003C31, 0xE0003A04, 0x0065D491, 0xE0003C35,
+-	0xE0003A07, 0xE0003C31, 0xE0003C31, 0xE0003A04, 0xE0003C2E, 0xE0003C31,
+-	0xE0002374, 0xE0003A07, 0xE0003C31, 0xE0003C35, 0x0065808F, 0xE0003A11,
+-	0xE0003A0B, 0x0065808F, 0xE0003A0B, 0xE0003A11, 0x00658091, 0xE0003A14,
+-	0xE0003A0E, 0x00658091, 0xE0003A0E, 0xE0003A14, 0x00658A91, 0xE0003A90,
+-	0xE0003A8C, 0xE0003A1A, 0xE0003A8C, 0xE0003A89, 0xE0003A8C, 0xE0003A17,
+-	0x00658A91, 0xE0003A90, 0xE0003A1A, 0xE0003A8C, 0xE0003A8C, 0xE0003A17,
+-	0xE0003A89, 0xE0003A8C, 0x00658A91, 0xE0003A8C,
+-	// Block 38, offset 0x980
+-	0xE0003A17, 0xE0003A89, 0xE0003A8C, 0xE00021E3, 0xE0003A8C, 0xE0003A90,
+-	0xE0003A1A, 0xE00021E3, 0xE0003A1A, 0xE0003A8C, 0xE0003A90, 0x00659491,
+-	0xE0003ADD, 0xE0003AD9, 0xE0003A21, 0xE0003AD9, 0xE0003AD6, 0xE0003AD9,
+-	0xE0003A1E, 0x00659491, 0xE0003ADD, 0xE0003A21, 0xE0003AD9, 0xE0003AD9,
+-	0xE0003A1E, 0xE0003AD6, 0xE0003AD9, 0x00659491, 0xE0003AD9, 0xE0003A1E,
+-	0xE0003AD6, 0xE0003AD9, 0xE0002226, 0xE0003AD9, 0xE0003ADD, 0xE0003A21,
+-	0xE0002226, 0xE0003A21, 0xE0003AD9, 0xE0003ADD, 0x00659E8F, 0xE0003B1F,
+-	0xE0003A25, 0xE0003B19, 0xE0003B1F, 0x00659E91, 0xE0003B27, 0xE0003B23,
+-	0xE0003A2B, 0xE0003B23, 0xE0003B1C, 0xE0003B23, 0xE0003A28, 0x00659E91,
+-	0xE0003B27, 0xE0003A2B, 0xE0003B23, 0xE0003B23, 0xE0003A28, 0xE0003B1C,
+-	0xE0003B23, 0x00659E91, 0xE0003B23, 0xE0003A28,
+-	// Block 39, offset 0x9c0
+-	0xE0003B1C, 0xE0003B23, 0xE000224D, 0xE0003B23, 0xE0003B27, 0xE0003A2B,
+-	0xE000224D, 0xE0003A2B, 0xE0003B23, 0xE0003B27, 0x0065A891, 0xE0003B3B,
+-	0xE0003A2F, 0x0065A891, 0xE0003A2F, 0xE0003B3B, 0x0065B28F, 0xE0003BB4,
+-	0xE0003A32, 0xE0003BAE, 0xE0003BB4, 0x0065B291, 0xE0003BBC, 0xE0003BC5,
+-	0xE0003BB8, 0xE0003A38, 0xE0003BC1, 0xE0003A3C, 0xE0003BB8, 0xE0003BB1,
+-	0xE0003BB8, 0xE0003A35, 0x0065B291, 0xE0003BBC, 0xE0003BC5, 0xE0003A38,
+-	0xE0003BB8, 0xE0003A3C, 0xE0003BC1, 0xE0003BB8, 0xE0003A35, 0xE0003BB1,
+-	0xE0003BB8, 0x0065B291, 0xE0003BB8, 0xE0003A35, 0xE0003BB1, 0xE0003BB8,
+-	0xE00022EF, 0xE0003BB8, 0xE0003BBC, 0xE0003A38, 0xE00022EF, 0xE0003A38,
+-	0xE0003BB8, 0xE0003BBC, 0xE00022F5, 0xE0003BC1, 0xE0003BC5, 0xE0003A3C,
+-	0xE00022F5, 0xE0003A3C, 0xE0003BC1, 0xE0003BC5,
+-	// Block 40, offset 0xa00
+-	0x0065BC91, 0xE0003BD9, 0xE0003A40, 0x0065BC91, 0xE0003A40, 0xE0003BD9,
+-	0x0065C48F, 0xE0003BE8, 0xE0003A43, 0x0065C48F, 0xE0003A43, 0xE0003BE8,
+-	0x0065C491, 0xE0003BEB, 0xE0003A46, 0x0065C491, 0xE0003A46, 0xE0003BEB,
+-	0x0065CE8F, 0xE0003A49, 0xE0003C09, 0x0065CE91, 0xE0003C0C, 0xE0003A4C,
+-	0x0065CE91, 0xE0003A4C, 0xE0003C0C, 0x0065D691, 0xE0003C3D, 0xE0003C3A,
+-	0xE0003C3D, 0xE0003A4F, 0x0065D691, 0xE0003C41, 0xE0003A52, 0xE0003C3D,
+-	0xE0003C3D, 0xE0003A4F, 0xE0003C3A, 0xE0003C3D, 0x0065D691, 0xE0003C3D,
+-	0xE0003A4F, 0xE0003C3A, 0xE0003C3D, 0xE0002377, 0xE0003A52, 0xE0003C3D,
+-	0xE0003C41, 0x0065D891, 0xE0003C46, 0x40368C20, 0x40343620, 0x00368C83,
+-	0x00343688, 0x002DFE88, 0x002F56A3, 0x402BDE20, 0x40320C21, 0x40321020,
+-	0x002BDE88, 0x00320CA3, 0x00321083, 0x404FA420,
+-	// Block 41, offset 0xa40
+-	0xE0003C59, 0x404FA620, 0xE0003C5D, 0x404FA820, 0xE0003C61, 0x404FAA20,
+-	0xE0003C65, 0x404FAC20, 0xE0003C69, 0x404FAE20, 0xE0003C6D, 0x404FB020,
+-	0xE0003C71, 0x404FB220, 0xE0003C75, 0x404FB420, 0xE0003C79, 0x404FB620,
+-	0xE0003C7D, 0x404FB820, 0xE0003C81, 0x404FBA20, 0xE0003C85, 0x404FBC20,
+-	0xE0003C89, 0x404FBE20, 0xE0003C8D, 0x404FC020, 0xE0003C91, 0x404FC220,
+-	0xE0003C95, 0x404FC420, 0xE0003C99, 0x404FC620, 0xE0003C9D, 0x404FC820,
+-	0xE0003CA1, 0x404FCA20, 0xE0003CA5, 0x404FCC20, 0xE0003CA9, 0x404FCE20,
+-	0xE0003CAD, 0x404FD020, 0xE0003CB1, 0x404FD220, 0xE0003CB5, 0x404FD420,
+-	0xE0003CB9, 0x404FD620, 0xE0003CBD, 0x404FD820, 0xE0003CC1, 0x404FDA20,
+-	0xE0003CC5, 0x404FDA20, 0xE0003CC9, 0x404FDC20, 0xE0003CCD, 0x404FDC20,
+-	0xE0003CD1, 0x404FDC20, 0xE0003CD5, 0x404FDE20,
+-	// Block 42, offset 0xa80
+-	0xE0003CD9, 0x404FDE20, 0xE0003CDD, 0x404FE020, 0xE0003CE1, 0x404FE220,
+-	0xE0003CE5, 0x404FE420, 0xE0003CE9, 0x404FE620, 0xE0003CED, 0x404FE820,
+-	0xE0003CF1, 0x40501820, 0x40502E20, 0x40503820, 0x40500E20, 0x40503220,
+-	0x40501020, 0x40503620, 0x40502420, 0x40503A20, 0x40502A20, 0x40503C20,
+-	0x403FEC20, 0x40403E20, 0xAE605202, 0xAE603502, 0xAE603202, 0xAE604E02,
+-	0x402BDE20, 0x402BDE21, 0x002BDE88, 0x002BDEA3, 0x402C9820, 0x402C9822,
+-	0x402C9821, 0x002C9888, 0x002C98C3, 0x002C98A3, 0x402D9A20, 0x402D9A21,
+-	0x002D9A88, 0x002D9AA3, 0x40306C20, 0x40306C22, 0x40306C21, 0x00306C88,
+-	0x00306CC3, 0x00306CA3, 0x402C3A20, 0x402C6020, 0x002C3A88, 0x002C6083,
+-	0x402D2220, 0x402D6620, 0x002D2288, 0x002D6683, 0x402DFE20, 0x402E2020,
+-	0x002DFE88, 0x002E2083, 0x402E2220, 0xE0000CFB,
+-	// Block 43, offset 0xac0
+-	0x402E8020, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0x002E8083, 0xE0000D01,
+-	0x402E9E20, 0x402EE020, 0x002E9E88, 0x002EE083, 0x402F7A20, 0x402FE420,
+-	0x002F7A88, 0x002FE483, 0x402FE620, 0x40302A20, 0x002FE688, 0x00302A83,
+-	0x40312A20, 0x40316220, 0x00312A88, 0x00316283, 0x40442220, 0xE000A597,
+-	0x40443E20, 0xE000A59D, 0xE000A5A9, 0xE000A5A3, 0x40444820, 0xE000A5A6,
+-	0x40445820, 0xE000A5AF, 0x40445A20, 0xE000A5B5, 0x40446620, 0xE000A5BB,
+-	0x40448220, 0x40448820, 0x00448C83, 0x403FFC20, 0x40404020, 0x002C3A88,
+-	0x402C3820, 0x402C3A20, 0x002C3883, 0x002D2288, 0x402D6620, 0x002D6683,
+-	0x402D2020, 0x402D2220, 0x002D6684, 0x002D6685, 0x002D2083, 0x00312A88,
+-	0x40312820, 0x40312A20, 0x00312883, 0x404E6020, 0xE000A5C7, 0x404FFE20,
+-	0x404FFE21, 0x404E6A20, 0xE000A5CD, 0x40502820,
+-	// Block 44, offset 0xb00
+-	0x40502821, 0x404E9420, 0xE000A5E7, 0xE000A5E0, 0x4050AC20, 0x4050AC21,
+-	0x4005B820, 0xE000A5ED, 0x404EA620, 0xE000A5F8, 0x4050C820, 0x4050C821,
+-	0xE000A609, 0xE000A60C, 0xE000A610, 0xE000A619, 0xE000A61D, 0xE000A629,
+-	0xE000A635, 0xE000A641, 0xE000A64D, 0xE000A659, 0xE000A665, 0xE000A671,
+-	0xE000A67D, 0xE000A689, 0xE000A695, 0xE000A6A1, 0xE000A6AD, 0xE000A6B9,
+-	0xE000A6C5, 0xE000A6D1, 0xE000A6DD, 0xE000A6E9, 0xE000A6F5, 0xE000A701,
+-	0xE000A70D, 0xE000A719, 0xE000A725, 0xE000A731, 0xE000A73D, 0xE000A749,
+-	0xE000A755, 0xE000A761, 0xE000A76D, 0xE000A779, 0xE000A785, 0xE000A791,
+-	0xE000A79D, 0xE000A7A9, 0xE000A7B5, 0xE000A7C1, 0xE000A7CD, 0xE000A7D9,
+-	0xE000A7E5, 0xE000A7F1, 0xE000A7FD, 0xE000A809, 0xE000A815, 0xE000A821,
+-	0xE000A82D, 0xE000A839, 0xE000A845, 0xE000A851,
+-	// Block 45, offset 0xb40
+-	0xE000A85D, 0xE000A869, 0xE000A875, 0xE000A881, 0xE000A88D, 0xE000A899,
+-	0xE000A8A5, 0xE000A8B1, 0xE000A8BD, 0xE000A8C9, 0xE000A8D5, 0xE000A8E1,
+-	0xE000A623, 0xE000A62F, 0xE000A63B, 0xE000A647, 0xE000A653, 0xE000A65F,
+-	0xE000A66B, 0xE000A677, 0xE000A683, 0xE000A68F, 0xE000A69B, 0xE000A6A7,
+-	0xE000A6B3, 0xE000A6BF, 0xE000A6CB, 0xE000A6D7, 0xE000A6E3, 0xE000A6EF,
+-	0xE000A6FB, 0xE000A707, 0xE000A713, 0xE000A71F, 0xE000A72B, 0xE000A737,
+-	0xE000A743, 0xE000A74F, 0xE000A75B, 0xE000A767, 0xE000A773, 0xE000A77F,
+-	0xE000A78B, 0xE000A797, 0xE000A7A3, 0xE000A7AF, 0xE000A7BB, 0xE000A7C7,
+-	0xE000A7D3, 0xE000A7DF, 0xE000A7EB, 0xE000A7F7, 0xE000A803, 0xE000A80F,
+-	0xE000A81B, 0xE000A827, 0xE000A833, 0xE000A83F, 0xE000A84B, 0xE000A857,
+-	0xE000A863, 0xE000A86F, 0xE000A87B, 0xE000A887,
+-	// Block 46, offset 0xb80
+-	0xE000A893, 0xE000A89F, 0xE000A8AB, 0xE000A8B7, 0xE000A8C3, 0xE000A8CF,
+-	0xE000A8DB, 0xE000A8E7, 0x404EFE20, 0x404F5222, 0xE000A8F2, 0x404F5220,
+-	0x404F5020, 0x404F1A22, 0x404F1A23, 0x404F2822, 0x404F2823, 0x404F3622,
+-	0x404F3623, 0x404F4422, 0x404F4423, 0x404F5223, 0x404F6022, 0x404F6023,
+-	0x404F6E22, 0x404F6E23, 0x404F7C22, 0x404F7C23, 0x404F8A21, 0x404F9822,
+-	0x404F9823, 0x404FA622, 0x404FA623, 0x404FB422, 0x404FB423, 0x404FC222,
+-	0x404FC223, 0x404FD022, 0x404FD023, 0x404FDE22, 0x404FDE23, 0x404FEC22,
+-	0x404FEC23, 0x404FFA22, 0x404FFA23, 0x40500822, 0x40500823, 0x40501622,
+-	0x40501623, 0x40502422, 0x40502423, 0x40503222, 0x40503223, 0x40504022,
+-	0x40504023, 0x40504E22, 0x40504E23, 0x40505C22, 0x40505C23, 0x40506A22,
+-	0x40506A23, 0x40508C22, 0x40508C23, 0x40509A22,
+-	// Block 47, offset 0xbc0
+-	0x40509A23, 0x4050A822, 0x4050A823, 0x4050B622, 0x4050B623, 0x4050C421,
+-	0x4050D222, 0x4050D223, 0x4050E022, 0x4050E023, 0x4050EE21, 0x4050FC21,
+-	0x404F1A20, 0x404F1A21, 0x404F2820, 0x404F2821, 0x404F3620, 0x404F3621,
+-	0x404F4420, 0x404F4421, 0x404F5221, 0x404F6020, 0x404F6021, 0x404F6E20,
+-	0x404F6E21, 0x404F7C20, 0x404F7C21, 0x404F8A20, 0x404F9820, 0x404F9821,
+-	0x404FA620, 0x404FA621, 0x404FB420, 0x404FB421, 0x404FC220, 0x404FC221,
+-	0x404FD020, 0x404FD021, 0x404FDE20, 0x404FDE21, 0x404FEC20, 0x404FEC21,
+-	0x404FFA20, 0x404FFA21, 0x40500820, 0x40500821, 0x40501620, 0x40501621,
+-	0x40502420, 0x40502421, 0x40503220, 0x40503221, 0x40504020, 0x40504021,
+-	0x40504E20, 0x40504E21, 0x40505C20, 0x40505C21, 0x40506A20, 0x40506A21,
+-	0x40508C20, 0x40508C21, 0x40509A20, 0x40509A21,
+-	// Block 48, offset 0xc00
+-	0x4050A820, 0x4050A821, 0x4050B620, 0x4050B621, 0x4050C420, 0x4050D220,
+-	0x4050D221, 0x4050E020, 0x4050E021, 0x4050EE20, 0x4050FC20, 0x404F1820,
+-	0x404F1821, 0x404F2620, 0x404F2621, 0x404F3420, 0x404F3421, 0x404F4220,
+-	0x404F4221, 0x404F5021, 0x404F5E20, 0x404F5E21, 0x404F6C20, 0x404F6C21,
+-	0x404F7A20, 0x404F7A21, 0x404F8820, 0x404F9620, 0x404F9621, 0x404FA420,
+-	0x404FA421, 0x404FB220, 0x404FB221, 0x404FC020, 0x404FC021, 0x404FCE20,
+-	0x404FCE21, 0x404FDC20, 0x404FDC21, 0x404FEA20, 0x404FEA21, 0x404FF820,
+-	0x404FF821, 0x40500620, 0x40500621, 0x40501420, 0x40501421, 0x40502220,
+-	0x40502221, 0x40503020, 0x40503021, 0x40503E20, 0x40503E21, 0x40504C20,
+-	0x40504C21, 0x40505A20, 0x40505A21, 0x40506820, 0x40506821, 0x40508A20,
+-	0x40508A21, 0x40509820, 0x40509821, 0x4050A620,
+-	// Block 49, offset 0xc40
+-	0x4050A621, 0x4050B420, 0x4050B421, 0x4050C220, 0x4050D020, 0x4050D021,
+-	0x4050DE20, 0x4050DE21, 0x4050EC20, 0x4050FA20, 0x404F0A21, 0x404F0A20,
+-	0x404F0821, 0x404F0820, 0x404EE620, 0x404F5420, 0x404F4C20, 0x40507620,
+-	0x40507A20, 0x404F1C20, 0x404F1C21, 0x404F2A20, 0x404F2A21, 0x404F3820,
+-	0x404F3821, 0x404F4620, 0x404F4621, 0x404F5421, 0x404F6220, 0x404F6221,
+-	0x404F7020, 0x404F7021, 0x404F7E20, 0x404F7E21, 0x404F8C20, 0x404F9A20,
+-	0x404F9A21, 0x404FA820, 0x404FA821, 0x404FB620, 0x404FB621, 0x404FC420,
+-	0x404FC421, 0x404FD220, 0x404FD221, 0x404FE020, 0x404FE021, 0x404FEE20,
+-	0x404FEE21, 0x404FFC20, 0x404FFC21, 0x40500A20, 0x40500A21, 0x40501820,
+-	0x40501821, 0x40502620, 0x40502621, 0x40503420, 0x40503421, 0x40504220,
+-	0x40504221, 0x40505020, 0x40505021, 0x40505E20,
+-	// Block 50, offset 0xc80
+-	0x40505E21, 0x40506C20, 0x40506C21, 0x40508E20, 0x40508E21, 0x40509C20,
+-	0x40509C21, 0x4050AA20, 0x4050AA21, 0x4050B820, 0x4050B821, 0x4050C620,
+-	0x4050D420, 0x4050D421, 0x4050E220, 0x4050E221, 0x4050F020, 0x4050FE20,
+-	0x404F1420, 0x404F1421, 0x404F2220, 0x404F2221, 0x404F3020, 0x404F3021,
+-	0x404F3E20, 0x404F3E21, 0x404F4C21, 0x404F5A20, 0x404F5A21, 0x404F6820,
+-	0x404F6821, 0x404F7620, 0x404F7621, 0x404F8420, 0x404F9220, 0x404F9221,
+-	0x404FA020, 0x404FA021, 0x404FAE20, 0x404FAE21, 0x404FBC20, 0x404FBC21,
+-	0x404FCA20, 0x404FCA21, 0x404FD820, 0x404FD821, 0x404FE620, 0x404FE621,
+-	0x404FF420, 0x404FF421, 0x40500220, 0x40500221, 0x40501020, 0x40501021,
+-	0x40501E20, 0x40501E21, 0x40502C20, 0x40502C21, 0x40503A20, 0x40503A21,
+-	0x40504820, 0x40504821, 0x40505620, 0x40505621,
+-	// Block 51, offset 0xcc0
+-	0x40506420, 0x40506421, 0x40507220, 0x40507221, 0x40509420, 0x40509421,
+-	0x4050A220, 0x4050A221, 0x4050B020, 0x4050B021, 0x4050BE20, 0x4050CC20,
+-	0x4050CC21, 0x4050DA20, 0x4050DA21, 0x4050E820, 0x4050F620, 0x40507820,
+-	0x40507C20, 0x404F0E20, 0x40507420, 0x404E1420, 0x404F1020, 0x404F1021,
+-	0x404EDE20, 0x404F4A20, 0x404F1220, 0x404F1221, 0x404F2020, 0x404F2021,
+-	0x404F2E20, 0x404F2E21, 0x404F3C20, 0x404F3C21, 0x404F4A21, 0x404F5820,
+-	0x404F5821, 0x404F6620, 0x404F6621, 0x404F7420, 0x404F7421, 0x404F8220,
+-	0x404F9020, 0x404F9021, 0x404F9E20, 0x404F9E21, 0x404FAC20, 0x404FAC21,
+-	0x404FBA20, 0x404FBA21, 0x404FC820, 0x404FC821, 0x404FD620, 0x404FD621,
+-	0x404FE420, 0x404FE421, 0x404FF220, 0x404FF221, 0x40500020, 0x40500021,
+-	0x40500E20, 0x40500E21, 0x40501C20, 0x40501C21,
+-	// Block 52, offset 0xd00
+-	0x40502A20, 0x40502A21, 0x40503820, 0x40503821, 0x40504620, 0x40504621,
+-	0x40505420, 0x40505421, 0x40506220, 0x40506221, 0x40507020, 0x40507021,
+-	0x40509220, 0x40509221, 0x4050A020, 0x4050A021, 0x4050AE20, 0x4050AE21,
+-	0x4050BC20, 0x4050CA20, 0x4050CA21, 0x4050D820, 0x4050D821, 0x4050E620,
+-	0x4050F420, 0x404EDE21, 0x404F4A22, 0x404F1222, 0x404F1223, 0x404F2022,
+-	0x404F2023, 0x404F2E22, 0x404F2E23, 0x404F3C22, 0x404F3C23, 0x404F4A23,
+-	0x404F5822, 0x404F5823, 0x404F6622, 0x404F6623, 0x404F7422, 0x404F7423,
+-	0x404F8221, 0x404F9022, 0x404F9023, 0x404F9E22, 0x404F9E23, 0x404FAC22,
+-	0x404FAC23, 0x404FBA22, 0x404FBA23, 0x404FC822, 0x404FC823, 0x404FD622,
+-	0x404FD623, 0x404FE422, 0x404FE423, 0x404FF222, 0x404FF223, 0x40500022,
+-	0x40500023, 0x40500E22, 0x40500E23, 0x40501C22,
+-	// Block 53, offset 0xd40
+-	0x40501C23, 0x40502A22, 0x40502A23, 0x40503822, 0x40503823, 0x40504622,
+-	0x40504623, 0x40505422, 0x40505423, 0x40506222, 0x40506223, 0x40507022,
+-	0x40507023, 0x40509222, 0x40509223, 0x4050A022, 0x4050A023, 0x4050AE22,
+-	0x4050AE23, 0x4050BC21, 0x4050CA22, 0x4050CA23, 0x4050D822, 0x4050D823,
+-	0x4050E621, 0x4050F421, 0x404EEE20, 0x404F4E20, 0x40508220, 0x40508620,
+-	0x404F1620, 0x404F1621, 0x404F2420, 0x404F2421, 0x404F3220, 0x404F3221,
+-	0x404F4020, 0x404F4021, 0x404F4E21, 0x404F5C20, 0x404F5C21, 0x404F6A20,
+-	0x404F6A21, 0x404F7820, 0x404F7821, 0x404F8620, 0x404F9420, 0x404F9421,
+-	0x404FA220, 0x404FA221, 0x404FB020, 0x404FB021, 0x404FBE20, 0x404FBE21,
+-	0x404FCC20, 0x404FCC21, 0x404FDA20, 0x404FDA21, 0x404FE820, 0x404FE821,
+-	0x404FF620, 0x404FF621, 0x40500420, 0x40500421,
+-	// Block 54, offset 0xd80
+-	0x40501220, 0x40501221, 0x40502020, 0x40502021, 0x40502E20, 0x40502E21,
+-	0x40503C20, 0x40503C21, 0x40504A20, 0x40504A21, 0x40505820, 0x40505821,
+-	0x40506620, 0x40506621, 0x40507E20, 0x40507E21, 0x40509620, 0x40509621,
+-	0x4050A420, 0x4050A421, 0x4050B220, 0x4050B221, 0x4050C020, 0x4050CE20,
+-	0x4050CE21, 0x4050DC20, 0x4050DC21, 0x4050EA20, 0x4050F820, 0x40508420,
+-	0x40508820, 0x40508020, 0x404E1820, 0x404F1E20, 0x404F1E21, 0x404E1C20,
+-	0x404F2C20, 0x404F2C21, 0x404F2E20, 0x404F3220, 0x404E2220, 0x404F3A20,
+-	0x404F3A21, 0x404E2420, 0x404F4820, 0x404F4821, 0x404E2820, 0x404F5620,
+-	0x404F5621, 0x404E2E20, 0x404F6420, 0x404F6421, 0x404E3220, 0x404F7220,
+-	0x404F7221, 0x404E3A20, 0x404F8020, 0x404E4220, 0x404F8E20, 0x404F8E21,
+-	0x404E4820, 0x404F9C20, 0x404F9C21, 0x404E4A20,
+-	// Block 55, offset 0xdc0
+-	0x404FAA20, 0x404FAA21, 0x404E4E20, 0x404FB820, 0x404FB821, 0x404E5220,
+-	0x404FC620, 0x404FC621, 0x404E5620, 0x404FD420, 0x404FD421, 0x404E5A20,
+-	0x404FE220, 0x404FE221, 0x404E5E20, 0x404FF020, 0x404FF021, 0x404E6220,
+-	0x40500C20, 0x40500C21, 0x404E6620, 0x40501A20, 0x40501A21, 0x404E7220,
+-	0x40503620, 0x40503621, 0x404E7420, 0x40504420, 0x40504421, 0x404E7E20,
+-	0x40505220, 0x40505221, 0x404E8220, 0x40506020, 0x40506021, 0x404E8420,
+-	0x40506E20, 0x40506E21, 0x404E8820, 0x40509020, 0x40509021, 0x404E8C20,
+-	0x40509E20, 0x40509E21, 0x404E9820, 0x4050BA20, 0x404EAA20, 0x4050D620,
+-	0x4050D621, 0x404EB620, 0x4050E420, 0x404EC220, 0x4050F220, 0x40510420,
+-	0x40511A20, 0x40511020, 0x40511420, 0x40510620, 0x40511C20, 0x40511220,
+-	0x40511620, 0x40510A20, 0x40511820, 0x402BDE20,
+-	// Block 56, offset 0xe00
+-	0x40320C21, 0x40321020, 0x40321021, 0x002BDE88, 0x00320CA3, 0x00321083,
+-	0x003210A4, 0x003210A3, 0x402C9820, 0x402C9A20, 0x002C9888, 0x002C9A83,
+-	0x402C3A20, 0x40312C20, 0x002C3A88, 0x00312C84, 0x00312C83, 0x402C6220,
+-	0x40312E20, 0x002C6288, 0x00312E84, 0x00312E83, 0x402DFE20, 0x40313020,
+-	0x002DFE88, 0x00313084, 0x00313083, 0x402E9E20, 0x40313220, 0x002E9E88,
+-	0x00313284, 0x00313283, 0x402F2C20, 0x40313420, 0x002F2C88, 0x00313484,
+-	0x00313483, 0x402FE620, 0x40313620, 0x002FE688, 0x00313683, 0x40421220,
+-	0x40425A20, 0x402BDE20, 0x402BE020, 0x002BDE88, 0x002BE083, 0x40312A20,
+-	0x40312C20, 0x40312E20, 0x00312A88, 0x00312C83, 0x00312E83, 0x40393820,
+-	0x40393620, 0x40393821, 0x40393824, 0x40397220, 0x40396621, 0x403A6821,
+-	0x003A6883, 0x403A6820, 0x003A6884, 0x403A7420,
+-	// Block 57, offset 0xe40
+-	0x403A7421, 0x403A9220, 0x403A9226, 0x403A9221, 0x003A9343, 0x403A9223,
+-	0x003A9344, 0x402BDE20, 0x402BE220, 0x402BE020, 0x002BDE88, 0x002BE283,
+-	0x002BE083, 0x402FE620, 0x402FE820, 0x402FE820, 0x002FE688, 0x002FE883,
+-	0x002FE883, 0x40302C20, 0x40302E20, 0x40302E20, 0x00302C88, 0x00302E83,
+-	0x00302E83, 0x402BDE20, 0x402C0820, 0x40320E21, 0x40320C21, 0x40320E20,
+-	0x40320C20, 0x002BDE88, 0x002C0883, 0x00320EA3, 0x00320CA3, 0x00320E83,
+-	0x00320C83, 0x402C3A20, 0x402C5C20, 0x002C3A88, 0x002C5C83, 0x402C5E20,
+-	0x402C6020, 0x002C5E83, 0x002C6083, 0x402D2220, 0x402D6420, 0x002D2288,
+-	0x002D6483, 0x402E9E20, 0x402EE021, 0x402EE022, 0x002E9E88, 0x002EE0A3,
+-	0x002EE0C3, 0x40312A20, 0x40320620, 0x00312A88, 0x00320683, 0x402EE220,
+-	0x40321023, 0x40321022, 0x40321020, 0x40321021,
+-	// Block 58, offset 0xe80
+-	0x40321024, 0x002EE288, 0x003210E3, 0x003210C3, 0x00321083, 0x003210A3,
+-	0x00321103, 0x402C6220, 0x402C9620, 0x002C6288, 0x002C9684, 0x002C9683,
+-	0x002D2288, 0x002D6684, 0x002D6683, 0x402E2220, 0xE0000CFB, 0xE0000CFB,
+-	0x402E8020, 0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E8084, 0x002E8083,
+-	0x002E9E88, 0x002EE084, 0x002EE083, 0x002F7A88, 0x002FE484, 0x002FE483,
+-	0x002FE688, 0x00302A84, 0x00302A83, 0x40302C20, 0x40306A20, 0x00302C88,
+-	0x00306A84, 0x00306A83, 0x4030F620, 0x4030FE20, 0x0030F688, 0x0030FE84,
+-	0x0030FE83, 0x00312A88, 0x00316284, 0x00316283, 0x402C9820, 0x40320E22,
+-	0x002C9888, 0x00320EC3, 0x402EE220, 0x40321024, 0x40321020, 0x40321022,
+-	0x002EE288, 0x00321103, 0x00321083, 0x003210C3, 0x40429820, 0x4042C220,
+-	0x4042C420, 0x40429620, 0x40429A20, 0x40429820,
+-	// Block 59, offset 0xec0
+-	0x40429C20, 0x40429A20, 0x40429E20, 0x40429C20, 0x4042A020, 0x40429E20,
+-	0x4042A220, 0x4042A020, 0x4042A420, 0x4042A220, 0x4042A620, 0x4042A420,
+-	0x4042A820, 0x4042A620, 0x4042AA20, 0x4042A820, 0x4042AC20, 0x4042AA20,
+-	0x4042AE20, 0x4042AC20, 0x4042B020, 0x4042AE20, 0x4042B220, 0x4042B020,
+-	0x4042B420, 0x4042B220, 0x4042B620, 0x4042B420, 0x4042B820, 0x4042B620,
+-	0x4042BA20, 0x4042B820, 0x4042BC20, 0x4042BA20, 0x4042BE20, 0x4042BC20,
+-	0x4042C020, 0x4042BE20, 0x4042C220, 0x4042C020, 0x4042C420, 0x4042C220,
+-	0x40496C20, 0xE000A9CE, 0xE000A9D1, 0x402BDE20, 0x402BDE21, 0x402BDE22,
+-	0x002BDE88, 0x002BDEA3, 0x002BDEC3, 0x402C9820, 0x402C9821, 0x402C9822,
+-	0x002C9888, 0x002C98A3, 0x002C98C3, 0x402D9A20, 0x402D9A21, 0x402D9A22,
+-	0x002D9A88, 0x002D9AA3, 0x002D9AC3, 0x402EE220,
+-	// Block 60, offset 0xf00
+-	0x402EE221, 0x402EE222, 0x002EE288, 0x002EE2A3, 0x002EE2C3, 0x40306C20,
+-	0x40306C21, 0x40306C22, 0x00306C88, 0x00306CA3, 0x00306CC3, 0x40393820,
+-	0x40393A20, 0x40393821, 0x40392820, 0x40393C20, 0x40393E20, 0x40394020,
+-	0x40394220, 0x40394420, 0x40394620, 0x40394820, 0x40394A20, 0x40394E20,
+-	0x40395020, 0x40395220, 0x40395420, 0x40395A20, 0x40395C20, 0x40395E20,
+-	0x40396020, 0x40396420, 0x40396620, 0x40396820, 0x40396A20, 0x40398420,
+-	0x40398620, 0x40398820, 0x40398A20, 0x40398C20, 0x40398E20, 0x40399020,
+-	0x40399220, 0x40399420, 0x40399620, 0x40399820, 0x40399A20, 0x40399C20,
+-	0x40399C21, 0x40399E20, 0x4039A020, 0x4039A021, 0x403A9020, 0x4039A821,
+-	0x4039A820, 0x4039AA20, 0x4039AC20, 0x4039AC21, 0x402EE220, 0x402EE420,
+-	0x402EE620, 0x002EE288, 0x002EE483, 0x002EE683,
+-	// Block 61, offset 0xf40
+-	0x402BDE20, 0xE0000966, 0xE000AF74, 0xE0000958, 0xE0000966, 0x402C3A20,
+-	0xE0000A41, 0x402C9820, 0xE000AF77, 0x402D9A20, 0xE000AF7A, 0x402EE220,
+-	0xE0000DE3, 0xE000AF7D, 0xE0000DCF, 0xE0000DE3, 0x402FE620, 0xE0000F30,
+-	0x40306C20, 0xE0001028, 0xE000AF80, 0xE0000FFC, 0xE0001028, 0x402BDE20,
+-	0x402BDE1F, 0x402BDE1D, 0x402BDE1C, 0x402BDE1E, 0x002BDE88, 0x002BDE63,
+-	0x002BDE23, 0x002BDE03, 0x002BDE43, 0x402C9820, 0x402C9824, 0x402C9822,
+-	0x402C9821, 0x402C9823, 0x402C981F, 0x402C981D, 0x402C981C, 0x402C981E,
+-	0x002C9888, 0x002C9903, 0x002C98C3, 0x002C98A3, 0x002C98E3, 0x002C9863,
+-	0x002C9823, 0x002C9803, 0x002C9843, 0xE0000AF1, 0x402C9821, 0x402C9823,
+-	0xE0000AF4, 0x002C98A3, 0x002C98E3, 0x402D9A20, 0x402D9A1F, 0x402D9A1D,
+-	0x402D9A1C, 0x402D9A1E, 0x002D9A88, 0x002D9A63,
+-	// Block 62, offset 0xf80
+-	0x002D9A23, 0x002D9A03, 0x002D9A43, 0x402E8220, 0x402E821F, 0x402E821D,
+-	0x402E821C, 0x402E821E, 0x002E8288, 0x002E8263, 0x002E8223, 0x002E8203,
+-	0x002E8243, 0x402E9E20, 0x402E9E1F, 0x402E9E1D, 0x402E9E1C, 0x402E9E1E,
+-	0x002E9E88, 0x002E9E63, 0x002E9E23, 0x002E9E03, 0x002E9E43, 0x402EE220,
+-	0x402EE21F, 0x402EE21D, 0x402EE21C, 0x402EE21E, 0x002EE288, 0x002EE263,
+-	0x002EE223, 0x002EE203, 0x002EE243, 0x40306C20, 0x40306C24, 0x40306C22,
+-	0x40306C21, 0x40306C23, 0x40306C1F, 0x40306C1D, 0x40306C1C, 0x40306C25,
+-	0x40306C1E, 0x00306C88, 0x00306D03, 0x00306CC3, 0x00306CA3, 0x00306CE3,
+-	0x00306C63, 0x00306C23, 0x00306C03, 0x00306D23, 0x00306C43,
+-}
+-
+-// mainValues: 171392 entries, 685568 bytes
+-// Block 2 is the null block.
+-var mainValues = [171392]uint32{
+-	// Block 0x0, offset 0x0
+-	0x0000: 0xa0000000, 0x0001: 0xa0000000, 0x0002: 0xa0000000, 0x0003: 0xa0000000,
+-	0x0004: 0xa0000000, 0x0005: 0xa0000000, 0x0006: 0xa0000000, 0x0007: 0xa0000000,
+-	0x0008: 0xa0000000, 0x0009: 0x40020020, 0x000a: 0x40020220, 0x000b: 0x40020420,
+-	0x000c: 0x40020620, 0x000d: 0x40020820, 0x000e: 0xa0000000, 0x000f: 0xa0000000,
+-	0x0010: 0xa0000000, 0x0011: 0xa0000000, 0x0012: 0xa0000000, 0x0013: 0xa0000000,
+-	0x0014: 0xa0000000, 0x0015: 0xa0000000, 0x0016: 0xa0000000, 0x0017: 0xa0000000,
+-	0x0018: 0xa0000000, 0x0019: 0xa0000000, 0x001a: 0xa0000000, 0x001b: 0xa0000000,
+-	0x001c: 0xa0000000, 0x001d: 0xa0000000, 0x001e: 0xa0000000, 0x001f: 0xa0000000,
+-	0x0020: 0x40021220, 0x0021: 0x4002ba20, 0x0022: 0x4003e020, 0x0023: 0x4004ea20,
+-	0x0024: 0x4027de20, 0x0025: 0x4004ec20, 0x0026: 0x4004e620, 0x0027: 0x4003d220,
+-	0x0028: 0x4003f420, 0x0029: 0x4003f620, 0x002a: 0x4004d820, 0x002b: 0x40093820,
+-	0x002c: 0x40024020, 0x002d: 0x40021a20, 0x002e: 0x4002e420, 0x002f: 0x4004e220,
+-	0x0030: 0x4029cc20, 0x0031: 0x4029ce20, 0x0032: 0x4029d020, 0x0033: 0x4029d220,
+-	0x0034: 0x4029d420, 0x0035: 0x4029d620, 0x0036: 0x4029d820, 0x0037: 0x4029da20,
+-	0x0038: 0x4029dc20, 0x0039: 0x4029de20, 0x003a: 0x40026c20, 0x003b: 0x40026220,
+-	0x003c: 0x40094020, 0x003d: 0x40094220, 0x003e: 0x40094420, 0x003f: 0x4002c420,
+-	// Block 0x1, offset 0x40
+-	0x0040: 0x4004d620, 0x0041: 0x002bde88, 0x0042: 0x002c0a88, 0x0043: 0x002c3a88,
+-	0x0044: 0x002c6288, 0x0045: 0x002c9888, 0x0046: 0x002d0888, 0x0047: 0x002d2288,
+-	0x0048: 0x002d6888, 0x0049: 0x002d9a88, 0x004a: 0x002dcc88, 0x004b: 0x002dfe88,
+-	0x004c: 0xc0030002, 0x004d: 0x002e8288, 0x004e: 0x002e9e88, 0x004f: 0x002ee288,
+-	0x0050: 0x002f2c88, 0x0051: 0x002f5688, 0x0052: 0x002f7a88, 0x0053: 0x002fe688,
+-	0x0054: 0x00302c88, 0x0055: 0x00306c88, 0x0056: 0x0030be88, 0x0057: 0x0030e288,
+-	0x0058: 0x0030f688, 0x0059: 0x00310088, 0x005a: 0x00312a88, 0x005b: 0x4003f820,
+-	0x005c: 0x4004e420, 0x005d: 0x4003fa20, 0x005e: 0x40062420, 0x005f: 0x40021620,
+-	0x0060: 0x40061e20, 0x0061: 0x402bde20, 0x0062: 0x402c0a20, 0x0063: 0x402c3a20,
+-	0x0064: 0x402c6220, 0x0065: 0x402c9820, 0x0066: 0x402d0820, 0x0067: 0x402d2220,
+-	0x0068: 0x402d6820, 0x0069: 0x402d9a20, 0x006a: 0x402dcc20, 0x006b: 0x402dfe20,
+-	0x006c: 0xc0000002, 0x006d: 0x402e8220, 0x006e: 0x402e9e20, 0x006f: 0x402ee220,
+-	0x0070: 0x402f2c20, 0x0071: 0x402f5620, 0x0072: 0x402f7a20, 0x0073: 0x402fe620,
+-	0x0074: 0x40302c20, 0x0075: 0x40306c20, 0x0076: 0x4030be20, 0x0077: 0x4030e220,
+-	0x0078: 0x4030f620, 0x0079: 0x40310020, 0x007a: 0x40312a20, 0x007b: 0x4003fc20,
+-	0x007c: 0x40094820, 0x007d: 0x4003fe20, 0x007e: 0x40094c20, 0x007f: 0xa0000000,
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x00c0: 0xa0000000, 0x00c1: 0xa0000000, 0x00c2: 0xa0000000, 0x00c3: 0xa0000000,
+-	0x00c4: 0xa0000000, 0x00c5: 0x40020a20, 0x00c6: 0xa0000000, 0x00c7: 0xa0000000,
+-	0x00c8: 0xa0000000, 0x00c9: 0xa0000000, 0x00ca: 0xa0000000, 0x00cb: 0xa0000000,
+-	0x00cc: 0xa0000000, 0x00cd: 0xa0000000, 0x00ce: 0xa0000000, 0x00cf: 0xa0000000,
+-	0x00d0: 0xa0000000, 0x00d1: 0xa0000000, 0x00d2: 0xa0000000, 0x00d3: 0xa0000000,
+-	0x00d4: 0xa0000000, 0x00d5: 0xa0000000, 0x00d6: 0xa0000000, 0x00d7: 0xa0000000,
+-	0x00d8: 0xa0000000, 0x00d9: 0xa0000000, 0x00da: 0xa0000000, 0x00db: 0xa0000000,
+-	0x00dc: 0xa0000000, 0x00dd: 0xa0000000, 0x00de: 0xa0000000, 0x00df: 0xa0000000,
+-	0x00e0: 0x0002129b, 0x00e1: 0x4002bc20, 0x00e2: 0x4027dc20, 0x00e3: 0x4027e020,
+-	0x00e4: 0x4027da20, 0x00e5: 0x4027e220, 0x00e6: 0x40094a20, 0x00e7: 0x4004ce20,
+-	0x00e8: 0x40062c20, 0x00e9: 0x40081820, 0x00ea: 0x002bde94, 0x00eb: 0x4003f020,
+-	0x00ec: 0x40094620, 0x00ed: 0xa0000000, 0x00ee: 0x40081a20, 0x00ef: 0x40062620,
+-	0x00f0: 0x40070420, 0x00f1: 0x40093a20, 0x00f2: 0x0029d094, 0x00f3: 0x0029d294,
+-	0x00f4: 0x40062020, 0x00f5: 0x00327684, 0x00f6: 0x4004d220, 0x00f7: 0x40030620,
+-	0x00f8: 0x40063220, 0x00f9: 0x0029ce94, 0x00fa: 0x002ee294, 0x00fb: 0x4003f220,
+-	0x00fc: 0xe00002bf, 0x00fd: 0xe00002b7, 0x00fe: 0xe00004a7, 0x00ff: 0x4002c620,
+-	// Block 0x4, offset 0x100
+-	0x0100: 0xe00008f5, 0x0101: 0xe00008ef, 0x0102: 0xe0000921, 0x0103: 0xe0000969,
+-	0x0104: 0xe000095b, 0x0105: 0xe000094d, 0x0106: 0xe00009dd, 0x0107: 0xe0000a53,
+-	0x0108: 0xe0000ae8, 0x0109: 0xe0000ae2, 0x010a: 0xe0000af4, 0x010b: 0xe0000b20,
+-	0x010c: 0xe0000c2b, 0x010d: 0xe0000c25, 0x010e: 0xe0000c37, 0x010f: 0xe0000c43,
+-	0x0110: 0xe0000ab3, 0x0111: 0xe0000d63, 0x0112: 0xe0000d9a, 0x0113: 0xe0000d94,
+-	0x0114: 0xe0000da6, 0x0115: 0xe0000de6, 0x0116: 0xe0000dd2, 0x0117: 0x40093e20,
+-	0x0118: 0xe0000e12, 0x0119: 0xe0000fe1, 0x011a: 0xe0000fdb, 0x011b: 0xe0000fed,
+-	0x011c: 0xe0000fff, 0x011d: 0xe0001102, 0x011e: 0x00318888, 0x011f: 0xe0000f7b,
+-	0x0120: 0xe00008f2, 0x0121: 0xe00008ec, 0x0122: 0xe000091e, 0x0123: 0xe0000966,
+-	0x0124: 0xe0000958, 0x0125: 0xe000094a, 0x0126: 0xe00009d5, 0x0127: 0xe0000a4d,
+-	0x0128: 0xe0000ae5, 0x0129: 0xe0000adf, 0x012a: 0xe0000af1, 0x012b: 0xe0000b1d,
+-	0x012c: 0xe0000c28, 0x012d: 0xe0000c22, 0x012e: 0xe0000c34, 0x012f: 0xe0000c40,
+-	0x0130: 0xe0000aad, 0x0131: 0xe0000d60, 0x0132: 0xe0000d97, 0x0133: 0xe0000d91,
+-	0x0134: 0xe0000da3, 0x0135: 0xe0000de3, 0x0136: 0xe0000dcf, 0x0137: 0x40093c20,
+-	0x0138: 0xe0000e0f, 0x0139: 0xe0000fde, 0x013a: 0xe0000fd8, 0x013b: 0xe0000fea,
+-	0x013c: 0xe0000ffc, 0x013d: 0xe00010ff, 0x013e: 0x40318820, 0x013f: 0xe0001114,
+-	// Block 0x5, offset 0x140
+-	0x0140: 0xe0000983, 0x0141: 0xe0000980, 0x0142: 0xe00008fb, 0x0143: 0xe00008f8,
+-	0x0144: 0xe000097d, 0x0145: 0xe000097a, 0x0146: 0xe0000a38, 0x0147: 0xe0000a35,
+-	0x0148: 0xe0000a3e, 0x0149: 0xe0000a3b, 0x014a: 0xe0000a4a, 0x014b: 0xe0000a47,
+-	0x014c: 0xe0000a44, 0x014d: 0xe0000a41, 0x014e: 0xe0000a86, 0x014f: 0xe0000a83,
+-	0x0150: 0xe0000aaa, 0x0151: 0xe0000aa7, 0x0152: 0xe0000b46, 0x0153: 0xe0000b43,
+-	0x0154: 0xe0000aee, 0x0155: 0xe0000aeb, 0x0156: 0xe0000b2c, 0x0157: 0xe0000b29,
+-	0x0158: 0xe0000b40, 0x0159: 0xe0000b3d, 0x015a: 0xe0000b1a, 0x015b: 0xe0000b17,
+-	0x015c: 0xe0000bb8, 0x015d: 0xe0000bb5, 0x015e: 0xe0000bb2, 0x015f: 0xe0000baf,
+-	0x0160: 0xe0000bc4, 0x0161: 0xe0000bc1, 0x0162: 0xe0000bca, 0x0163: 0xe0000bc7,
+-	0x0164: 0xe0000bee, 0x0165: 0xe0000beb, 0x0166: 0xe0000c1b, 0x0167: 0xe0000c18,
+-	0x0168: 0xe0000c51, 0x0169: 0xe0000c4e, 0x016a: 0xe0000c60, 0x016b: 0xe0000c5d,
+-	0x016c: 0xe0000c31, 0x016d: 0xe0000c2e, 0x016e: 0xe0000c5a, 0x016f: 0xe0000c57,
+-	0x0170: 0xe0000c54, 0x0171: 0x402da220, 0x0172: 0xf0000a0a, 0x0173: 0xf0000404,
+-	0x0174: 0xe0000c8a, 0x0175: 0xe0000c87, 0x0176: 0xe0000c9f, 0x0177: 0xe0000c9c,
+-	0x0178: 0x402f7220, 0x0179: 0xe0000ccc, 0x017a: 0xe0000cc9, 0x017b: 0xe0000cd8,
+-	0x017c: 0xe0000cd5, 0x017d: 0xe0000cd2, 0x017e: 0xe0000ccf, 0x017f: 0xe0000d04,
+-	// Block 0x6, offset 0x180
+-	0x0180: 0xe0000cfe, 0x0181: 0xe0000cf8, 0x0182: 0xe0000cf5, 0x0183: 0xe0000d51,
+-	0x0184: 0xe0000d4e, 0x0185: 0xe0000d6f, 0x0186: 0xe0000d6c, 0x0187: 0xe0000d5d,
+-	0x0188: 0xe0000d5a, 0x0189: 0xf0000404, 0x018a: 0x002eda88, 0x018b: 0x402eda20,
+-	0x018c: 0xe0000e2e, 0x018d: 0xe0000e2b, 0x018e: 0xe0000da0, 0x018f: 0xe0000d9d,
+-	0x0190: 0xe0000de0, 0x0191: 0xe0000ddd, 0x0192: 0xe0000e93, 0x0193: 0xe0000e8f,
+-	0x0194: 0xe0000eca, 0x0195: 0xe0000ec7, 0x0196: 0xe0000edc, 0x0197: 0xe0000ed9,
+-	0x0198: 0xe0000ed0, 0x0199: 0xe0000ecd, 0x019a: 0xe0000f1f, 0x019b: 0xe0000f1c,
+-	0x019c: 0xe0000f2d, 0x019d: 0xe0000f2a, 0x019e: 0xe0000f47, 0x019f: 0xe0000f44,
+-	0x01a0: 0xe0000f33, 0x01a1: 0xe0000f30, 0x01a2: 0xe0000f99, 0x01a3: 0xe0000f96,
+-	0x01a4: 0xe0000f8a, 0x01a5: 0xe0000f87, 0x01a6: 0x00303688, 0x01a7: 0x40303620,
+-	0x01a8: 0xe000102b, 0x01a9: 0xe0001028, 0x01aa: 0xe000103f, 0x01ab: 0xe000103c,
+-	0x01ac: 0xe0000fe7, 0x01ad: 0xe0000fe4, 0x01ae: 0xe0000ff9, 0x01af: 0xe0000ff6,
+-	0x01b0: 0xe0001025, 0x01b1: 0xe0001022, 0x01b2: 0xe0001039, 0x01b3: 0xe0001036,
+-	0x01b4: 0xe00010d8, 0x01b5: 0xe00010d5, 0x01b6: 0xe000110e, 0x01b7: 0xe000110b,
+-	0x01b8: 0xe0001117, 0x01b9: 0xe000113b, 0x01ba: 0xe0001138, 0x01bb: 0xe000114d,
+-	0x01bc: 0xe000114a, 0x01bd: 0xe0001147, 0x01be: 0xe0001144, 0x01bf: 0xe0000f64,
+-	// Block 0x7, offset 0x1c0
+-	0x01c0: 0x402c1a20, 0x01c1: 0x002c2a88, 0x01c2: 0x002c3288, 0x01c3: 0x402c3220,
+-	0x01c4: 0x0031c488, 0x01c5: 0x4031c420, 0x01c6: 0x002efa88, 0x01c7: 0x002c4e88,
+-	0x01c8: 0x402c4e20, 0x01c9: 0x002c7288, 0x01ca: 0x002c7a88, 0x01cb: 0x002c8488,
+-	0x01cc: 0x402c8420, 0x01cd: 0xe000115c, 0x01ce: 0x002cae88, 0x01cf: 0x002cb888,
+-	0x01d0: 0x002cc288, 0x01d1: 0x002d1688, 0x01d2: 0x402d1620, 0x01d3: 0x002d4488,
+-	0x01d4: 0x002d5888, 0x01d5: 0x402d7820, 0x01d6: 0x002dc288, 0x01d7: 0x002db688,
+-	0x01d8: 0x002e0a88, 0x01d9: 0x402e0a20, 0x01da: 0x402e3820, 0x01db: 0x402e7220,
+-	0x01dc: 0x0030a088, 0x01dd: 0x002eb488, 0x01de: 0x402ebc20, 0x01df: 0x002f1088,
+-	0x01e0: 0xe0000e56, 0x01e1: 0xe0000e53, 0x01e2: 0x002d6088, 0x01e3: 0x402d6020,
+-	0x01e4: 0x002f3e88, 0x01e5: 0x402f3e20, 0x01e6: 0x002f8288, 0x01e7: 0x0031b488,
+-	0x01e8: 0x4031b420, 0x01e9: 0x00300888, 0x01ea: 0x40301220, 0x01eb: 0x40304220,
+-	0x01ec: 0x00304a88, 0x01ed: 0x40304a20, 0x01ee: 0x00305288, 0x01ef: 0xe000105f,
+-	0x01f0: 0xe000105c, 0x01f1: 0x0030b488, 0x01f2: 0x0030cc88, 0x01f3: 0x00311888,
+-	0x01f4: 0x40311820, 0x01f5: 0x00313488, 0x01f6: 0x40313420, 0x01f7: 0x00316488,
+-	0x01f8: 0x00316e88, 0x01f9: 0x40316e20, 0x01fa: 0x40317820, 0x01fb: 0x4031a620,
+-	0x01fc: 0x0031bc88, 0x01fd: 0x4031bc20, 0x01fe: 0xe0000fc9, 0x01ff: 0x40319420,
+-	// Block 0x8, offset 0x200
+-	0x0200: 0x40321220, 0x0201: 0x40321a20, 0x0202: 0x40322220, 0x0203: 0x40322a20,
+-	0x0204: 0xe0000ad5, 0x0205: 0xe0000ad1, 0x0206: 0xe0000acd, 0x0207: 0xf0000a0a,
+-	0x0208: 0xf000040a, 0x0209: 0xf0000404, 0x020a: 0xf0000a0a, 0x020b: 0xf000040a,
+-	0x020c: 0xf0000404, 0x020d: 0xe0000947, 0x020e: 0xe0000944, 0x020f: 0xe0000c3d,
+-	0x0210: 0xe0000c3a, 0x0211: 0xe0000dcc, 0x0212: 0xe0000dc9, 0x0213: 0xe0000ff3,
+-	0x0214: 0xe0000ff0, 0x0215: 0xe000101e, 0x0216: 0xe000101a, 0x0217: 0xe0001006,
+-	0x0218: 0xe0001002, 0x0219: 0xe0001016, 0x021a: 0xe0001012, 0x021b: 0xe000100e,
+-	0x021c: 0xe000100a, 0x021d: 0x402cae20, 0x021e: 0xe0000962, 0x021f: 0xe000095e,
+-	0x0220: 0xe0000976, 0x0221: 0xe0000972, 0x0222: 0xe00009f4, 0x0223: 0xe00009ef,
+-	0x0224: 0x002d3a88, 0x0225: 0x402d3a20, 0x0226: 0xe0000bbe, 0x0227: 0xe0000bbb,
+-	0x0228: 0xe0000c99, 0x0229: 0xe0000c96, 0x022a: 0xe0000e20, 0x022b: 0xe0000e1d,
+-	0x022c: 0xe0000e27, 0x022d: 0xe0000e23, 0x022e: 0xe0001162, 0x022f: 0xe000115f,
+-	0x0230: 0xe0000c8d, 0x0231: 0xf0000a0a, 0x0232: 0xf000040a, 0x0233: 0xf0000404,
+-	0x0234: 0xe0000bac, 0x0235: 0xe0000ba9, 0x0236: 0x002d7888, 0x0237: 0x00319488,
+-	0x0238: 0xe0000d57, 0x0239: 0xe0000d54, 0x023a: 0xe0000954, 0x023b: 0xe0000950,
+-	0x023c: 0xe00009ea, 0x023d: 0xe00009e5, 0x023e: 0xe0000e19, 0x023f: 0xe0000e15,
+-	// Block 0x9, offset 0x240
+-	0x0240: 0xe000098f, 0x0241: 0xe000098c, 0x0242: 0xe0000995, 0x0243: 0xe0000992,
+-	0x0244: 0xe0000b62, 0x0245: 0xe0000b5f, 0x0246: 0xe0000b68, 0x0247: 0xe0000b65,
+-	0x0248: 0xe0000c6c, 0x0249: 0xe0000c69, 0x024a: 0xe0000c72, 0x024b: 0xe0000c6f,
+-	0x024c: 0xe0000e4a, 0x024d: 0xe0000e47, 0x024e: 0xe0000e50, 0x024f: 0xe0000e4d,
+-	0x0250: 0xe0000ee8, 0x0251: 0xe0000ee5, 0x0252: 0xe0000eee, 0x0253: 0xe0000eeb,
+-	0x0254: 0xe0001053, 0x0255: 0xe0001050, 0x0256: 0xe0001059, 0x0257: 0xe0001056,
+-	0x0258: 0xe0000f61, 0x0259: 0xe0000f5e, 0x025a: 0xe0000fa5, 0x025b: 0xe0000fa2,
+-	0x025c: 0x00312288, 0x025d: 0x40312220, 0x025e: 0xe0000bf4, 0x025f: 0xe0000bf1,
+-	0x0260: 0x002ebc88, 0x0261: 0x402c8c20, 0x0262: 0x002f2288, 0x0263: 0x402f2220,
+-	0x0264: 0x00314088, 0x0265: 0x40314020, 0x0266: 0xe000096f, 0x0267: 0xe000096c,
+-	0x0268: 0xe0000b32, 0x0269: 0xe0000b2f, 0x026a: 0xe0000dd9, 0x026b: 0xe0000dd5,
+-	0x026c: 0xe0000dfd, 0x026d: 0xe0000df9, 0x026e: 0xe0000e04, 0x026f: 0xe0000e01,
+-	0x0270: 0xe0000e0b, 0x0271: 0xe0000e07, 0x0272: 0xe0001129, 0x0273: 0xe0001126,
+-	0x0274: 0x402e5e20, 0x0275: 0x402ed020, 0x0276: 0x40305a20, 0x0277: 0x402dd420,
+-	0x0278: 0xe0000abf, 0x0279: 0xe0000ec4, 0x027a: 0x002be888, 0x027b: 0x002c4488,
+-	0x027c: 0x402c4420, 0x027d: 0x002e3888, 0x027e: 0x00303e88, 0x027f: 0x402ffc20,
+-	// Block 0xa, offset 0x280
+-	0x0280: 0x40315820, 0x0281: 0x0031d488, 0x0282: 0x4031d420, 0x0283: 0x002c1a88,
+-	0x0284: 0x00307c88, 0x0285: 0x0030da88, 0x0286: 0x002ca288, 0x0287: 0x402ca220,
+-	0x0288: 0x002dde88, 0x0289: 0x402dde20, 0x028a: 0x002f6a88, 0x028b: 0x402f6a20,
+-	0x028c: 0x002f8e88, 0x028d: 0x402f8e20, 0x028e: 0x00311088, 0x028f: 0x40311020,
+-	0x0290: 0x402bf020, 0x0291: 0x402bf820, 0x0292: 0x402c0220, 0x0293: 0x402c2a20,
+-	0x0294: 0x402efa20, 0x0295: 0x402c5620, 0x0296: 0x402c7220, 0x0297: 0x402c7a20,
+-	0x0298: 0x402ccc20, 0x0299: 0x402cb820, 0x029a: 0x402cd420, 0x029b: 0x402cc220,
+-	0x029c: 0x402cdc20, 0x029d: 0x402ce820, 0x029e: 0x402cf020, 0x029f: 0x402dee20,
+-	0x02a0: 0x402d4420, 0x02a1: 0x402d2a20, 0x02a2: 0x402d3220, 0x02a3: 0x402d5820,
+-	0x02a4: 0x402d0020, 0x02a5: 0x40308820, 0x02a6: 0x402d8020, 0x02a7: 0x402d8e20,
+-	0x02a8: 0x402db620, 0x02a9: 0x402dc220, 0x02aa: 0x402daa20, 0x02ab: 0x402e4220,
+-	0x02ac: 0x402e4a20, 0x02ad: 0x402e5420, 0x02ae: 0x402e6820, 0x02af: 0x4030a020,
+-	0x02b0: 0x4030ac20, 0x02b1: 0x402e9020, 0x02b2: 0x402eb420, 0x02b3: 0x402ec820,
+-	0x02b4: 0x402ea620, 0x02b5: 0x402f1020, 0x02b6: 0x402eee20, 0x02b7: 0x402f1a20,
+-	0x02b8: 0x402f4c20, 0x02b9: 0x402f9820, 0x02ba: 0x402fa220, 0x02bb: 0x402fac20,
+-	0x02bc: 0x402fb620, 0x02bd: 0x402fbe20, 0x02be: 0x402fc620, 0x02bf: 0x402fd020,
+-	// Block 0xb, offset 0x2c0
+-	0x02c0: 0x402f8220, 0x02c1: 0x402fd820, 0x02c2: 0x402ff420, 0x02c3: 0x40300820,
+-	0x02c4: 0x402df620, 0x02c5: 0x40301a20, 0x02c6: 0x40302420, 0x02c7: 0x40306420,
+-	0x02c8: 0x40305220, 0x02c9: 0x40307c20, 0x02ca: 0x4030b420, 0x02cb: 0x4030cc20,
+-	0x02cc: 0x4030da20, 0x02cd: 0x4030ee20, 0x02ce: 0x402e7a20, 0x02cf: 0x40310820,
+-	0x02d0: 0x40314820, 0x02d1: 0x40315020, 0x02d2: 0x40316420, 0x02d3: 0x40318020,
+-	0x02d4: 0x4031cc20, 0x02d5: 0x4031e820, 0x02d6: 0x40320a20, 0x02d7: 0x40323220,
+-	0x02d8: 0x40323a20, 0x02d9: 0x402c1220, 0x02da: 0x402cf820, 0x02db: 0x402d4c20,
+-	0x02dc: 0x402d7020, 0x02dd: 0x402de620, 0x02de: 0x402e1a20, 0x02df: 0x402e2a20,
+-	0x02e0: 0x402f6220, 0x02e1: 0x4031fa20, 0x02e2: 0x40320220, 0x02e3: 0xe0000aca,
+-	0x02e4: 0xe0000adc, 0x02e5: 0xe0000ad9, 0x02e6: 0xe0000fcc, 0x02e7: 0xe0000fcf,
+-	0x02e8: 0xe0000fba, 0x02e9: 0xe0000ba1, 0x02ea: 0xe0000d11, 0x02eb: 0xe0000d18,
+-	0x02ec: 0x40324220, 0x02ed: 0x40324a20, 0x02ee: 0x40309020, 0x02ef: 0x40309820,
+-	0x02f0: 0x002d6894, 0x02f1: 0x002d8094, 0x02f2: 0x002dcc94, 0x02f3: 0x002f7a94,
+-	0x02f4: 0x002f9894, 0x02f5: 0x002fac94, 0x02f6: 0x002fd894, 0x02f7: 0x0030e294,
+-	0x02f8: 0x00310094, 0x02f9: 0x40064020, 0x02fa: 0x40064420, 0x02fb: 0x402d9620,
+-	0x02fc: 0x4031de20, 0x02fd: 0x402d9820, 0x02fe: 0x4031e220, 0x02ff: 0x4031f020,
+-	// Block 0xc, offset 0x300
+-	0x0300: 0x4031dc20, 0x0301: 0x4031f220, 0x0302: 0x40064620, 0x0303: 0x40064820,
+-	0x0304: 0x40064a20, 0x0305: 0x40064c20, 0x0306: 0x40064e20, 0x0307: 0x40065020,
+-	0x0308: 0x40065220, 0x0309: 0x40065420, 0x030a: 0x40065620, 0x030b: 0x40065820,
+-	0x030c: 0x40065a20, 0x030d: 0x40065c20, 0x030e: 0x40065e20, 0x030f: 0x40066020,
+-	0x0310: 0x4027b220, 0x0311: 0x4027b420, 0x0312: 0x40066220, 0x0313: 0x40066420,
+-	0x0314: 0x40066620, 0x0315: 0x40066820, 0x0316: 0x40066a20, 0x0317: 0x40066c20,
+-	0x0318: 0x40062820, 0x0319: 0x40062a20, 0x031a: 0x40062e20, 0x031b: 0x40063420,
+-	0x031c: 0x40062220, 0x031d: 0x40063020, 0x031e: 0x40066e20, 0x031f: 0x40067020,
+-	0x0320: 0x002d5894, 0x0321: 0x002e2294, 0x0322: 0x002fe694, 0x0323: 0x0030f694,
+-	0x0324: 0x0031e894, 0x0325: 0x40067220, 0x0326: 0x40067420, 0x0327: 0x40067620,
+-	0x0328: 0x40067820, 0x0329: 0x40067a20, 0x032a: 0x40067c20, 0x032b: 0x40067e20,
+-	0x032c: 0x40068020, 0x032d: 0x40068220, 0x032e: 0x4031e020, 0x032f: 0x40068420,
+-	0x0330: 0x40068620, 0x0331: 0x40068820, 0x0332: 0x40068a20, 0x0333: 0x40068c20,
+-	0x0334: 0x40068e20, 0x0335: 0x40069020, 0x0336: 0x40069220, 0x0337: 0x40069420,
+-	0x0338: 0x40069620, 0x0339: 0x40069820, 0x033a: 0x40069a20, 0x033b: 0x40069c20,
+-	0x033c: 0x40069e20, 0x033d: 0x4006a020, 0x033e: 0x4006a220, 0x033f: 0x4006a420,
+-	// Block 0xd, offset 0x340
+-	0x0340: 0xae603502, 0x0341: 0xae603202, 0x0342: 0xae603c02, 0x0343: 0xae604e02,
+-	0x0344: 0xae605b02, 0x0345: 0xae606302, 0x0346: 0xae603702, 0x0347: 0xae605202,
+-	0x0348: 0xae604702, 0x0349: 0xae606402, 0x034a: 0xae604302, 0x034b: 0xae604d02,
+-	0x034c: 0xae604102, 0x034d: 0xae605f02, 0x034e: 0xae605f02, 0x034f: 0xae606502,
+-	0x0350: 0xae606602, 0x0351: 0xae606702, 0x0352: 0xae605f02, 0x0353: 0xae602202,
+-	0x0354: 0xae602a02, 0x0355: 0xae805f02, 0x0356: 0xadc06002, 0x0357: 0xadc06002,
+-	0x0358: 0xadc06002, 0x0359: 0xadc06002, 0x035a: 0xae805f02, 0x035b: 0xad806802,
+-	0x035c: 0xadc06002, 0x035d: 0xadc06002, 0x035e: 0xadc06002, 0x035f: 0xadc06002,
+-	0x0360: 0xadc06002, 0x0361: 0xaca06e02, 0x0362: 0xaca06f02, 0x0363: 0xadc07002,
+-	0x0364: 0xadc07502, 0x0365: 0xadc07602, 0x0366: 0xadc07702, 0x0367: 0xaca05602,
+-	0x0368: 0xaca05902, 0x0369: 0xadc06002, 0x036a: 0xadc06002, 0x036b: 0xadc06002,
+-	0x036c: 0xadc06002, 0x036d: 0xadc07802, 0x036e: 0xadc07902, 0x036f: 0xadc06002,
+-	0x0370: 0xadc07a02, 0x0371: 0xadc07b02, 0x0372: 0xadc02102, 0x0373: 0xadc06002,
+-	0x0374: 0xa0107c02, 0x0375: 0xa0107d02, 0x0376: 0xa0106102, 0x0377: 0xa0106102,
+-	0x0378: 0xa0105402, 0x0379: 0xadc07e02, 0x037a: 0xadc06002, 0x037b: 0xadc06002,
+-	0x037c: 0xadc06002, 0x037d: 0xae605f02, 0x037e: 0xae605f02, 0x037f: 0xae605f02,
+-	// Block 0xe, offset 0x380
+-	0x0380: 0xae603502, 0x0381: 0xae603202, 0x0382: 0xae604502, 0x0383: 0xae602202,
+-	0x0384: 0xe0000000, 0x0385: 0xaf007f02, 0x0386: 0xae605f02, 0x0387: 0xadc06002,
+-	0x0388: 0xadc06002, 0x0389: 0xadc06002, 0x038a: 0xae605f02, 0x038b: 0xae605f02,
+-	0x038c: 0xae605f02, 0x038d: 0xadc06002, 0x038e: 0xadc06002, 0x038f: 0xa0000000,
+-	0x0390: 0xae605f02, 0x0391: 0xae605f02, 0x0392: 0xae605f02, 0x0393: 0xadc06002,
+-	0x0394: 0xadc06002, 0x0395: 0xadc06002, 0x0396: 0xadc06002, 0x0397: 0xae605f02,
+-	0x0398: 0xae808002, 0x0399: 0xadc06002, 0x039a: 0xadc06002, 0x039b: 0xae605f02,
+-	0x039c: 0xae906002, 0x039d: 0xaea05f02, 0x039e: 0xaea05f02, 0x039f: 0xae906002,
+-	0x03a0: 0xaea08102, 0x03a1: 0xaea08202, 0x03a2: 0xae906002, 0x03a3: 0x84e615ef,
+-	0x03a4: 0x84e6164c, 0x03a5: 0x84e616cd, 0x03a6: 0x84e61771, 0x03a7: 0x84e61836,
+-	0x03a8: 0x84e6161d, 0x03a9: 0x84e61631, 0x03aa: 0x84e616b4, 0x03ab: 0x84e61741,
+-	0x03ac: 0x84e617bd, 0x03ad: 0x84e61816, 0x03ae: 0x84e6185f, 0x03af: 0x84e6187b,
+-	0x03b0: 0x00326688, 0x03b1: 0x40326620, 0x03b2: 0x0032a688, 0x03b3: 0x4032a620,
+-	0x03b4: 0x40064020, 0x03b5: 0x40064220, 0x03b6: 0x00326088, 0x03b7: 0x40326020,
+-	0x03ba: 0x00326c84, 0x03bb: 0x40329220,
+-	0x03bc: 0x40329020, 0x03bd: 0x40329420, 0x03be: 0x40026220,
+-	// Block 0xf, offset 0x3c0
+-	0x03c4: 0x40062020, 0x03c5: 0xe00000ab, 0x03c6: 0xe00011f0, 0x03c7: 0x40030620,
+-	0x03c8: 0xe0001249, 0x03c9: 0xe00012dd, 0x03ca: 0xe000133a,
+-	0x03cc: 0xe000139b, 0x03ce: 0xe00013dd, 0x03cf: 0xe0001492,
+-	0x03d0: 0xe0001352, 0x03d1: 0x00325288, 0x03d2: 0x00325488, 0x03d3: 0x00325688,
+-	0x03d4: 0x00325a88, 0x03d5: 0x00325c88, 0x03d6: 0x00326488, 0x03d7: 0x00326888,
+-	0x03d8: 0x00326a88, 0x03d9: 0x00326c88, 0x03da: 0x00327088, 0x03db: 0x00327288,
+-	0x03dc: 0x00327688, 0x03dd: 0x00327888, 0x03de: 0x00327a88, 0x03df: 0x00327c88,
+-	0x03e0: 0x00327e88, 0x03e1: 0x00328888, 0x03e3: 0x00328e88,
+-	0x03e4: 0x00329688, 0x03e5: 0x00329888, 0x03e6: 0x00329a88, 0x03e7: 0x00329c88,
+-	0x03e8: 0x00329e88, 0x03e9: 0x0032a288, 0x03ea: 0xe000134f, 0x03eb: 0xe00013f2,
+-	0x03ec: 0xe00011ed, 0x03ed: 0xe0001246, 0x03ee: 0xe00012da, 0x03ef: 0xe0001337,
+-	0x03f0: 0xe00013f5, 0x03f1: 0x40325220, 0x03f2: 0x40325420, 0x03f3: 0x40325620,
+-	0x03f4: 0x40325a20, 0x03f5: 0x40325c20, 0x03f6: 0x40326420, 0x03f7: 0x40326820,
+-	0x03f8: 0x40326a20, 0x03f9: 0x40326c20, 0x03fa: 0x40327020, 0x03fb: 0x40327220,
+-	0x03fc: 0x40327620, 0x03fd: 0x40327820, 0x03fe: 0x40327a20, 0x03ff: 0x40327c20,
+-	// Block 0x10, offset 0x400
+-	0x0400: 0x40327e20, 0x0401: 0x40328820, 0x0402: 0x00328e99, 0x0403: 0x40328e20,
+-	0x0404: 0x40329620, 0x0405: 0x40329820, 0x0406: 0x40329a20, 0x0407: 0x40329c20,
+-	0x0408: 0x40329e20, 0x0409: 0x4032a220, 0x040a: 0xe000134c, 0x040b: 0xe00013ef,
+-	0x040c: 0xe0001398, 0x040d: 0xe00013da, 0x040e: 0xe000148f, 0x040f: 0xe0001368,
+-	0x0410: 0x00325484, 0x0411: 0x00326a84, 0x0412: 0x0032988a, 0x0413: 0xf000020a,
+-	0x0414: 0xf000020a, 0x0415: 0x00329a84, 0x0416: 0x00327e84, 0x0417: 0xe0001364,
+-	0x0418: 0x00328688, 0x0419: 0x40328620, 0x041a: 0x00326288, 0x041b: 0x40326220,
+-	0x041c: 0x00325e88, 0x041d: 0x40325e20, 0x041e: 0x00328488, 0x041f: 0x40328420,
+-	0x0420: 0x0032a488, 0x0421: 0x4032a420, 0x0422: 0x0032e888, 0x0423: 0x4032e820,
+-	0x0424: 0x0032f288, 0x0425: 0x4032f220, 0x0426: 0x0032f488, 0x0427: 0x4032f420,
+-	0x0428: 0x0032fa88, 0x0429: 0x4032fa20, 0x042a: 0x00330888, 0x042b: 0x40330820,
+-	0x042c: 0x00330e88, 0x042d: 0x40330e20, 0x042e: 0x00331688, 0x042f: 0x40331620,
+-	0x0430: 0x00327084, 0x0431: 0x00328884, 0x0432: 0x00328e84, 0x0433: 0x40326e20,
+-	0x0434: 0x00326a8a, 0x0435: 0x00325c84, 0x0436: 0x40092e20, 0x0437: 0x0032a888,
+-	0x0438: 0x4032a820, 0x0439: 0x00328e8a, 0x043a: 0x00328288, 0x043b: 0x40328220,
+-	0x043c: 0x40328c20, 0x043d: 0x00329288, 0x043e: 0x00329088, 0x043f: 0x00329488,
+-	// Block 0x11, offset 0x440
+-	0x0440: 0xe00014bd, 0x0441: 0xe00014c3, 0x0442: 0x00339688, 0x0443: 0x0033a288,
+-	0x0444: 0x0033c288, 0x0445: 0x0033fc88, 0x0446: 0xc02a0071, 0x0447: 0x00343688,
+-	0x0448: 0x00344688, 0x0449: 0x00349a88, 0x044a: 0x0034e488, 0x044b: 0x00356288,
+-	0x044c: 0x00356a88, 0x044d: 0xe00014cf, 0x044e: 0x00357a88, 0x044f: 0x00365488,
+-	0x0450: 0xc0090041, 0x0451: 0x00335288, 0x0452: 0x00335a88, 0x0453: 0xc0130092,
+-	0x0454: 0x00338a88, 0x0455: 0xc01800d1, 0x0456: 0xc01c0071, 0x0457: 0xc0200071,
+-	0x0458: 0xc0250041, 0x0459: 0x00343e88, 0x045a: 0xc0370092, 0x045b: 0x00348488,
+-	0x045c: 0x0034a888, 0x045d: 0x0034ba88, 0x045e: 0xc02e0071, 0x045f: 0x00350e88,
+-	0x0460: 0x00352888, 0x0461: 0x00353a88, 0x0462: 0x00354c88, 0x0463: 0xc03e00f1,
+-	0x0464: 0x0035ac88, 0x0465: 0x0035b488, 0x0466: 0x00360288, 0x0467: 0xc0440071,
+-	0x0468: 0x00365c88, 0x0469: 0x00366688, 0x046a: 0x00367488, 0x046b: 0xc0480071,
+-	0x046c: 0x00368e88, 0x046d: 0xc04c0071, 0x046e: 0x0036b888, 0x046f: 0x0036c488,
+-	0x0470: 0xc0060041, 0x0471: 0x40335220, 0x0472: 0x40335a20, 0x0473: 0xc0100092,
+-	0x0474: 0x40338a20, 0x0475: 0xc01600d1, 0x0476: 0xc01a0071, 0x0477: 0xc01e0071,
+-	0x0478: 0xc0220041, 0x0479: 0x40343e20, 0x047a: 0xc0340092, 0x047b: 0x40348420,
+-	0x047c: 0x4034a820, 0x047d: 0x4034ba20, 0x047e: 0xc02c0071, 0x047f: 0x40350e20,
+-	// Block 0x12, offset 0x480
+-	0x0480: 0x40352820, 0x0481: 0x40353a20, 0x0482: 0x40354c20, 0x0483: 0xc03a00f1,
+-	0x0484: 0x4035ac20, 0x0485: 0x4035b420, 0x0486: 0x40360220, 0x0487: 0xc0420071,
+-	0x0488: 0x40365c20, 0x0489: 0x40366620, 0x048a: 0x40367420, 0x048b: 0xc0460071,
+-	0x048c: 0x40368e20, 0x048d: 0xc04a0071, 0x048e: 0x4036b820, 0x048f: 0x4036c420,
+-	0x0490: 0xe00014ba, 0x0491: 0xe00014c0, 0x0492: 0x40339620, 0x0493: 0x4033a220,
+-	0x0494: 0x4033c220, 0x0495: 0x4033fc20, 0x0496: 0xc0280071, 0x0497: 0x40343620,
+-	0x0498: 0x40344620, 0x0499: 0x40349a20, 0x049a: 0x4034e420, 0x049b: 0x40356220,
+-	0x049c: 0x40356a20, 0x049d: 0xe00014cc, 0x049e: 0x40357a20, 0x049f: 0x40365420,
+-	0x04a0: 0x0035e088, 0x04a1: 0x4035e020, 0x04a2: 0x00369e88, 0x04a3: 0x40369e20,
+-	0x04a4: 0x0036ce88, 0x04a5: 0x4036ce20, 0x04a6: 0x0036d688, 0x04a7: 0x4036d620,
+-	0x04a8: 0x0036ea88, 0x04a9: 0x4036ea20, 0x04aa: 0x0036e088, 0x04ab: 0x4036e020,
+-	0x04ac: 0x0036f488, 0x04ad: 0x4036f420, 0x04ae: 0x0036fc88, 0x04af: 0x4036fc20,
+-	0x04b0: 0x00370488, 0x04b1: 0x40370420, 0x04b2: 0x00370c88, 0x04b3: 0x40370c20,
+-	0x04b4: 0xc0500131, 0x04b5: 0xc04e0131, 0x04b6: 0x00371c88, 0x04b7: 0x40371c20,
+-	0x04b8: 0x0035a488, 0x04b9: 0x4035a420, 0x04ba: 0x0035fa88, 0x04bb: 0x4035fa20,
+-	0x04bc: 0x0035f288, 0x04bd: 0x4035f220, 0x04be: 0x0035e888, 0x04bf: 0x4035e820,
+-	// Block 0x13, offset 0x4c0
+-	0x04c0: 0x00352088, 0x04c1: 0x40352020, 0x04c2: 0x40070620, 0x04c3: 0xae608302,
+-	0x04c4: 0xae605f02, 0x04c5: 0xae602a02, 0x04c6: 0xae602202, 0x04c7: 0xae605f02,
+-	0x04c8: 0xa0000000, 0x04c9: 0xa0000000, 0x04ca: 0x00341c88, 0x04cb: 0x40341c20,
+-	0x04cc: 0x00369688, 0x04cd: 0x40369620, 0x04ce: 0x00353088, 0x04cf: 0x40353020,
+-	0x04d0: 0xe00014b7, 0x04d1: 0xe00014b4, 0x04d2: 0x00336a88, 0x04d3: 0x40336a20,
+-	0x04d4: 0x00337a88, 0x04d5: 0x40337a20, 0x04d6: 0x0033dc88, 0x04d7: 0x4033dc20,
+-	0x04d8: 0x0033aa88, 0x04d9: 0x4033aa20, 0x04da: 0x00345888, 0x04db: 0x40345820,
+-	0x04dc: 0x00347888, 0x04dd: 0x40347820, 0x04de: 0x00347088, 0x04df: 0x40347020,
+-	0x04e0: 0x00346888, 0x04e1: 0x40346820, 0x04e2: 0x0034ca88, 0x04e3: 0x4034ca20,
+-	0x04e4: 0x0034dc88, 0x04e5: 0x4034dc20, 0x04e6: 0x00351888, 0x04e7: 0x40351820,
+-	0x04e8: 0x00372688, 0x04e9: 0x40372620, 0x04ea: 0x00354488, 0x04eb: 0x40354420,
+-	0x04ec: 0x00355888, 0x04ed: 0x40355820, 0x04ee: 0x00359288, 0x04ef: 0x40359220,
+-	0x04f0: 0x00359a88, 0x04f1: 0x40359a20, 0x04f2: 0x0035cc88, 0x04f3: 0x4035cc20,
+-	0x04f4: 0x00360e88, 0x04f5: 0x40360e20, 0x04f6: 0x00362a88, 0x04f7: 0x40362a20,
+-	0x04f8: 0x00363a88, 0x04f9: 0x40363a20, 0x04fa: 0x0035d488, 0x04fb: 0x4035d420,
+-	0x04fc: 0x00364488, 0x04fd: 0x40364420, 0x04fe: 0x00364c88, 0x04ff: 0x40364c20,
+-	// Block 0x14, offset 0x500
+-	0x0500: 0x00373088, 0x0501: 0xe00014c9, 0x0502: 0xe00014c6, 0x0503: 0x00346088,
+-	0x0504: 0x40346020, 0x0505: 0x00348e88, 0x0506: 0x40348e20, 0x0507: 0x0034d288,
+-	0x0508: 0x4034d220, 0x0509: 0x0034c288, 0x050a: 0x4034c220, 0x050b: 0x00363288,
+-	0x050c: 0x40363220, 0x050d: 0x0034b088, 0x050e: 0x4034b020, 0x050f: 0x40373020,
+-	0x0510: 0x00332a88, 0x0511: 0x40332a20, 0x0512: 0x00333288, 0x0513: 0x40333220,
+-	0x0514: 0x00334a88, 0x0515: 0x40334a20, 0x0516: 0x0033ba88, 0x0517: 0x4033ba20,
+-	0x0518: 0xc00e0071, 0x0519: 0xc00c0071, 0x051a: 0x00334288, 0x051b: 0x40334220,
+-	0x051c: 0x0033d488, 0x051d: 0x4033d420, 0x051e: 0x0033f288, 0x051f: 0x4033f220,
+-	0x0520: 0x00340688, 0x0521: 0x40340620, 0x0522: 0xe00014d5, 0x0523: 0xe00014d2,
+-	0x0524: 0x00342488, 0x0525: 0x40342420, 0x0526: 0x0034f688, 0x0527: 0x4034f620,
+-	0x0528: 0xc0320071, 0x0529: 0xc0300071, 0x052a: 0x00350688, 0x052b: 0x40350620,
+-	0x052c: 0x0036b088, 0x052d: 0x4036b020, 0x052e: 0xe00014de, 0x052f: 0xe00014db,
+-	0x0530: 0x00358288, 0x0531: 0x40358220, 0x0532: 0x00358a88, 0x0533: 0x40358a20,
+-	0x0534: 0x00362288, 0x0535: 0x40362220, 0x0536: 0x00338288, 0x0537: 0x40338220,
+-	0x0538: 0x00368688, 0x0539: 0x40368620, 0x053a: 0x00337288, 0x053b: 0x40337220,
+-	0x053c: 0x0035bc88, 0x053d: 0x4035bc20, 0x053e: 0x0035c488, 0x053f: 0x4035c420,
+-	// Block 0x15, offset 0x540
+-	0x0540: 0x00339288, 0x0541: 0x40339220, 0x0542: 0x0033a088, 0x0543: 0x4033a020,
+-	0x0544: 0x0033ee88, 0x0545: 0x4033ee20, 0x0546: 0x00341088, 0x0547: 0x40341020,
+-	0x0548: 0x0034a488, 0x0549: 0x4034a420, 0x054a: 0x0034ec88, 0x054b: 0x4034ec20,
+-	0x054c: 0x00354288, 0x054d: 0x40354220, 0x054e: 0x00355688, 0x054f: 0x40355620,
+-	0x0550: 0x0033f088, 0x0551: 0x4033f020, 0x0552: 0x00349688, 0x0553: 0x40349620,
+-	0x0554: 0x0034a688, 0x0555: 0x4034a620, 0x0556: 0x00353888, 0x0557: 0x40353820,
+-	0x0558: 0x0036cc88, 0x0559: 0x4036cc20, 0x055a: 0x00348288, 0x055b: 0x40348220,
+-	0x055c: 0x00372e88, 0x055d: 0x40372e20, 0x055e: 0x00348088, 0x055f: 0x40348020,
+-	0x0560: 0x00349888, 0x0561: 0x40349820, 0x0562: 0x0034da88, 0x0563: 0x4034da20,
+-	0x0564: 0x00351688, 0x0565: 0x40351620, 0x0566: 0x0035dc88, 0x0567: 0x4035dc20,
+-	0x0571: 0x00384288, 0x0572: 0x00384488, 0x0573: 0x00384688,
+-	0x0574: 0x00384888, 0x0575: 0x00384a88, 0x0576: 0x00384c88, 0x0577: 0x00384e88,
+-	0x0578: 0x00385088, 0x0579: 0x00385288, 0x057a: 0x00385488, 0x057b: 0x00385688,
+-	0x057c: 0x00385888, 0x057d: 0x00385a88, 0x057e: 0x00385c88, 0x057f: 0x00385e88,
+-	// Block 0x16, offset 0x580
+-	0x0580: 0x00386088, 0x0581: 0x00386288, 0x0582: 0x00386488, 0x0583: 0x00386688,
+-	0x0584: 0x00386888, 0x0585: 0x00386a88, 0x0586: 0x00386c88, 0x0587: 0x00386e88,
+-	0x0588: 0x00387088, 0x0589: 0x00387288, 0x058a: 0x00387488, 0x058b: 0x00387688,
+-	0x058c: 0x00387888, 0x058d: 0x00387a88, 0x058e: 0x00387c88, 0x058f: 0x00387e88,
+-	0x0590: 0x00388088, 0x0591: 0x00388288, 0x0592: 0x00388488, 0x0593: 0x00388688,
+-	0x0594: 0x00388888, 0x0595: 0x00388a88, 0x0596: 0x00388c88,
+-	0x0599: 0x40388e20, 0x059a: 0x40054e20, 0x059b: 0x40055020,
+-	0x059c: 0x4002be20, 0x059d: 0x40024620, 0x059e: 0x4002ca20, 0x059f: 0x40055220,
+-	0x05a1: 0x40384220, 0x05a2: 0x40384420, 0x05a3: 0x40384620,
+-	0x05a4: 0x40384820, 0x05a5: 0x40384a20, 0x05a6: 0x40384c20, 0x05a7: 0x40384e20,
+-	0x05a8: 0x40385020, 0x05a9: 0x40385220, 0x05aa: 0x40385420, 0x05ab: 0x40385620,
+-	0x05ac: 0x40385820, 0x05ad: 0x40385a20, 0x05ae: 0x40385c20, 0x05af: 0x40385e20,
+-	0x05b0: 0x40386020, 0x05b1: 0x40386220, 0x05b2: 0x40386420, 0x05b3: 0x40386620,
+-	0x05b4: 0x40386820, 0x05b5: 0x40386a20, 0x05b6: 0x40386c20, 0x05b7: 0x40386e20,
+-	0x05b8: 0x40387020, 0x05b9: 0x40387220, 0x05ba: 0x40387420, 0x05bb: 0x40387620,
+-	0x05bc: 0x40387820, 0x05bd: 0x40387a20, 0x05be: 0x40387c20, 0x05bf: 0x40387e20,
+-	// Block 0x17, offset 0x5c0
+-	0x05c0: 0x40388020, 0x05c1: 0x40388220, 0x05c2: 0x40388420, 0x05c3: 0x40388620,
+-	0x05c4: 0x40388820, 0x05c5: 0x40388a20, 0x05c6: 0x40388c20, 0x05c7: 0xf0000404,
+-	0x05c9: 0x40026e20, 0x05ca: 0x40021c20,
+-	0x05cf: 0x4027e420,
+-	0x05d1: 0xadc00000, 0x05d2: 0xae600000, 0x05d3: 0xae600000,
+-	0x05d4: 0xae600000, 0x05d5: 0xae600000, 0x05d6: 0xadc00000, 0x05d7: 0xae600000,
+-	0x05d8: 0xae600000, 0x05d9: 0xae600000, 0x05da: 0xade00000, 0x05db: 0xadc00000,
+-	0x05dc: 0xae600000, 0x05dd: 0xae600000, 0x05de: 0xae600000, 0x05df: 0xae600000,
+-	0x05e0: 0xae600000, 0x05e1: 0xae600000, 0x05e2: 0xadc00000, 0x05e3: 0xadc00000,
+-	0x05e4: 0xadc00000, 0x05e5: 0xadc00000, 0x05e6: 0xadc00000, 0x05e7: 0xadc00000,
+-	0x05e8: 0xae600000, 0x05e9: 0xae600000, 0x05ea: 0xadc00000, 0x05eb: 0xae600000,
+-	0x05ec: 0xae600000, 0x05ed: 0xade00000, 0x05ee: 0xae400000, 0x05ef: 0xae600000,
+-	0x05f0: 0xa0a08502, 0x05f1: 0xa0b08602, 0x05f2: 0xa0c08702, 0x05f3: 0xa0d08802,
+-	0x05f4: 0xa0e08902, 0x05f5: 0xa0f08a02, 0x05f6: 0xa1008b02, 0x05f7: 0xa1108c02,
+-	0x05f8: 0xa1208d02, 0x05f9: 0xa1308e02, 0x05fa: 0xa1308e02, 0x05fb: 0xa1408f02,
+-	0x05fc: 0xa1509202, 0x05fd: 0xa1600000, 0x05fe: 0x40055420, 0x05ff: 0xa1709502,
+-	// Block 0x18, offset 0x600
+-	0x0600: 0x40055620, 0x0601: 0xa1809102, 0x0602: 0xa1909002, 0x0603: 0x40055820,
+-	0x0604: 0xae600000, 0x0605: 0xadc00000, 0x0606: 0x40055a20, 0x0607: 0xa1208d02,
+-	0x0610: 0x40389020, 0x0611: 0x40389220, 0x0612: 0x40389420, 0x0613: 0x40389620,
+-	0x0614: 0x40389820, 0x0615: 0x40389a20, 0x0616: 0x40389c20, 0x0617: 0x40389e20,
+-	0x0618: 0x4038a020, 0x0619: 0x4038a220, 0x061a: 0x0038a499, 0x061b: 0x4038a420,
+-	0x061c: 0x4038a620, 0x061d: 0x0038a899, 0x061e: 0x4038a820, 0x061f: 0x0038aa99,
+-	0x0620: 0x4038aa20, 0x0621: 0x4038ac20, 0x0622: 0x4038ae20, 0x0623: 0x0038b099,
+-	0x0624: 0x4038b020, 0x0625: 0x0038b299, 0x0626: 0x4038b220, 0x0627: 0x4038b420,
+-	0x0628: 0x4038b620, 0x0629: 0x4038b820, 0x062a: 0x4038ba20,
+-	0x0630: 0xe00014ff, 0x0631: 0xe0001502, 0x0632: 0xe0001511, 0x0633: 0x40055c20,
+-	0x0634: 0x40055e20,
+-	// Block 0x19, offset 0x640
+-	0x0640: 0xa0000000, 0x0641: 0xa0000000, 0x0642: 0xa0000000, 0x0643: 0xa0000000,
+-	0x0644: 0xa0000000, 0x0646: 0x40096620, 0x0647: 0x40096a20,
+-	0x0648: 0x40070820, 0x0649: 0x4004f220, 0x064a: 0x4004f620, 0x064b: 0x4027e620,
+-	0x064c: 0x40024820, 0x064d: 0x40024a20, 0x064e: 0x40070e20, 0x064f: 0x40071020,
+-	0x0650: 0xae600000, 0x0651: 0xae600000, 0x0652: 0xae600000, 0x0653: 0xae600000,
+-	0x0654: 0xae600000, 0x0655: 0xae600000, 0x0656: 0xae600000, 0x0657: 0xae600000,
+-	0x0658: 0xa1e00000, 0x0659: 0xa1f00000, 0x065a: 0xa2000000, 0x065b: 0x40026420,
+-	0x065e: 0x40027020, 0x065f: 0x4002cc20,
+-	0x0660: 0x403aa220, 0x0661: 0x40391c20, 0x0662: 0x40391e20, 0x0663: 0x40392020,
+-	0x0664: 0x40392620, 0x0665: 0x40392820, 0x0666: 0x40393020, 0x0667: 0xc0520151,
+-	0x0668: 0x40393c20, 0x0669: 0x40395420, 0x066a: 0x40395620, 0x066b: 0x40395820,
+-	0x066c: 0x40396420, 0x066d: 0x40397220, 0x066e: 0x40397420, 0x066f: 0x40398820,
+-	0x0670: 0x40398a20, 0x0671: 0x4039a420, 0x0672: 0x4039a620, 0x0673: 0x4039c620,
+-	0x0674: 0x4039c820, 0x0675: 0x4039dc20, 0x0676: 0x4039de20, 0x0677: 0x4039e620,
+-	0x0678: 0x4039e820, 0x0679: 0x4039ee20, 0x067a: 0x4039f020, 0x067b: 0x403a3820,
+-	0x067c: 0x403a3a20, 0x067d: 0x403a9c20, 0x067e: 0x403a9e20, 0x067f: 0x403aa020,
+-	// Block 0x1a, offset 0x680
+-	0x0680: 0xa0000000, 0x0681: 0x4039fc20, 0x0682: 0x403a1220, 0x0683: 0x403a1a20,
+-	0x0684: 0x403a4020, 0x0685: 0x403a4e20, 0x0686: 0x403a5620, 0x0687: 0x403a6820,
+-	0x0688: 0xc0560171, 0x0689: 0x403a8e20, 0x068a: 0xc0580171, 0x068b: 0xa1b0a202,
+-	0x068c: 0xa1c0a502, 0x068d: 0xa1d0a902, 0x068e: 0xa1e0ad02, 0x068f: 0xa1f0b202,
+-	0x0690: 0xa200b602, 0x0691: 0xa210ba02, 0x0692: 0xa220bc02, 0x0693: 0xae60bd02,
+-	0x0694: 0xae60be02, 0x0695: 0xadc0bf02, 0x0696: 0xadc0c102, 0x0697: 0xae60c202,
+-	0x0698: 0xae60c302, 0x0699: 0xae60c402, 0x069a: 0xae60c502, 0x069b: 0xae60c602,
+-	0x069c: 0xadc0c702, 0x069d: 0xae60c802, 0x069e: 0xae60c902, 0x069f: 0xadc0c002,
+-	0x06a0: 0xe000015e, 0x06a1: 0xe00001e6, 0x06a2: 0xe0000301, 0x06a3: 0xe00003db,
+-	0x06a4: 0xe00004b6, 0x06a5: 0xe0000580, 0x06a6: 0xe000064b, 0x06a7: 0xe00006f3,
+-	0x06a8: 0xe000079f, 0x06a9: 0xe0000844, 0x06aa: 0x4004ee20, 0x06ab: 0x40024c20,
+-	0x06ac: 0x40024e20, 0x06ad: 0x4004de20, 0x06ae: 0x40393a20, 0x06af: 0x403a1020,
+-	0x06b0: 0xa230d102, 0x06b1: 0x40392420, 0x06b2: 0x40392220, 0x06b3: 0x40392a20,
+-	0x06b4: 0x00391c84, 0x06b5: 0xf0000404, 0x06b6: 0xf0000404, 0x06b7: 0xf0000404,
+-	0x06b8: 0xf0000404, 0x06b9: 0x40395a20, 0x06ba: 0x40395c20, 0x06bb: 0x40393e20,
+-	0x06bc: 0x40395e20, 0x06bd: 0x40396020, 0x06be: 0x40394020, 0x06bf: 0x40396220,
+-	// Block 0x1b, offset 0x6c0
+-	0x06c0: 0x40394220, 0x06c1: 0x40397620, 0x06c2: 0x40397820, 0x06c3: 0x40396620,
+-	0x06c4: 0x40396820, 0x06c5: 0x40397a20, 0x06c6: 0x40396a20, 0x06c7: 0x40396e20,
+-	0x06c8: 0x40398c20, 0x06c9: 0x40398e20, 0x06ca: 0x40399020, 0x06cb: 0x40399220,
+-	0x06cc: 0x40399420, 0x06cd: 0x40399620, 0x06ce: 0x40399820, 0x06cf: 0x40399a20,
+-	0x06d0: 0x40399c20, 0x06d1: 0x4039a820, 0x06d2: 0x4039aa20, 0x06d3: 0x4039ac20,
+-	0x06d4: 0x4039ae20, 0x06d5: 0x4039b020, 0x06d6: 0x4039b220, 0x06d7: 0x4039b420,
+-	0x06d8: 0x4039b620, 0x06d9: 0x4039b820, 0x06da: 0x4039ca20, 0x06db: 0x4039cc20,
+-	0x06dc: 0x4039ce20, 0x06dd: 0x4039e020, 0x06de: 0x4039e220, 0x06df: 0x4039ea20,
+-	0x06e0: 0x4039f220, 0x06e1: 0x4039fe20, 0x06e2: 0x403a0020, 0x06e3: 0x403a0220,
+-	0x06e4: 0x403a0420, 0x06e5: 0x403a0820, 0x06e6: 0x403a0a20, 0x06e7: 0x403a1420,
+-	0x06e8: 0x403a1620, 0x06e9: 0x403a1c20, 0x06ea: 0x403a1e20, 0x06eb: 0x403a2020,
+-	0x06ec: 0x403a2220, 0x06ed: 0x403a2620, 0x06ee: 0x403a2820, 0x06ef: 0x403a2a20,
+-	0x06f0: 0x403a2c20, 0x06f1: 0x403a2e20, 0x06f2: 0x403a3020, 0x06f3: 0x403a3220,
+-	0x06f4: 0x403a3420, 0x06f5: 0x403a4220, 0x06f6: 0x403a4420, 0x06f7: 0x403a4620,
+-	0x06f8: 0x403a4820, 0x06f9: 0x403a6020, 0x06fa: 0x403a5820, 0x06fb: 0x403a5a20,
+-	0x06fc: 0x403a5c20, 0x06fd: 0x403a5e20, 0x06fe: 0x403a6a20, 0x06ff: 0x40396c20,
+-	// Block 0x1c, offset 0x700
+-	0x0700: 0xe00017e4, 0x0701: 0x403a6c20, 0x0702: 0xe00017e1, 0x0703: 0x403a6e20,
+-	0x0704: 0x403a7620, 0x0705: 0x403a7820, 0x0706: 0x403a7a20, 0x0707: 0x403a7c20,
+-	0x0708: 0x403a7e20, 0x0709: 0x403a8020, 0x070a: 0x403a8220, 0x070b: 0x403a8420,
+-	0x070c: 0x403a9220, 0x070d: 0x403a9420, 0x070e: 0x403a9620, 0x070f: 0x403a8620,
+-	0x0710: 0x403a9820, 0x0711: 0x403a9a20, 0x0712: 0x403aaa20, 0x0713: 0xe0001800,
+-	0x0714: 0x4002e820, 0x0715: 0x403a7220, 0x0716: 0xae600000, 0x0717: 0xae600000,
+-	0x0718: 0xae600000, 0x0719: 0xae600000, 0x071a: 0xae600000, 0x071b: 0xae600000,
+-	0x071c: 0xae600000, 0x071d: 0xa0000000, 0x071e: 0x40071220, 0x071f: 0xae600000,
+-	0x0720: 0xae600000, 0x0721: 0xae600000, 0x0722: 0xae600000, 0x0723: 0xadc00000,
+-	0x0724: 0xae600000, 0x0725: 0x003a7484, 0x0726: 0x003a9084, 0x0727: 0xae600000,
+-	0x0728: 0xae600000, 0x0729: 0x40071420, 0x072a: 0xadc00000, 0x072b: 0xae600000,
+-	0x072c: 0xae600000, 0x072d: 0xadc00000, 0x072e: 0x40399e20, 0x072f: 0x4039ba20,
+-	0x0730: 0xe0000161, 0x0731: 0xe00001e9, 0x0732: 0xe0000304, 0x0733: 0xe00003de,
+-	0x0734: 0xe00004b9, 0x0735: 0xe0000583, 0x0736: 0xe000064e, 0x0737: 0xe00006f6,
+-	0x0738: 0xe00007a2, 0x0739: 0xe0000847, 0x073a: 0x4039d020, 0x073b: 0x4039e420,
+-	0x073c: 0x4039f420, 0x073d: 0xe0001553, 0x073e: 0xe0001779, 0x073f: 0x403a7020,
+-	// Block 0x1d, offset 0x740
+-	0x0740: 0x40035c20, 0x0741: 0x4002ea20, 0x0742: 0x4002ec20, 0x0743: 0x40027220,
+-	0x0744: 0x40027420, 0x0745: 0x40027620, 0x0746: 0x40027820, 0x0747: 0x40027a20,
+-	0x0748: 0x40027c20, 0x0749: 0x4002ce20, 0x074a: 0x40056020, 0x074b: 0x40056220,
+-	0x074c: 0x40056420, 0x074d: 0x40056620, 0x074f: 0xa0000000,
+-	0x0750: 0x403ab020, 0x0751: 0xa240d202, 0x0752: 0x403ab220, 0x0753: 0x403ab420,
+-	0x0754: 0xe0001806, 0x0755: 0x403ab820, 0x0756: 0x403ab620, 0x0757: 0x403aba20,
+-	0x0758: 0x403abc20, 0x0759: 0x403abe20, 0x075a: 0x403ac220, 0x075b: 0x403ac420,
+-	0x075c: 0xe000180f, 0x075d: 0x403ac620, 0x075e: 0x403ac820, 0x075f: 0x403aca20,
+-	0x0760: 0x403ace20, 0x0761: 0x403ad020, 0x0762: 0x403ad220, 0x0763: 0x403ad420,
+-	0x0764: 0x003ad499, 0x0765: 0x403ad620, 0x0766: 0x403ad820, 0x0767: 0xe0001812,
+-	0x0768: 0x403adc20, 0x0769: 0x403ade20, 0x076a: 0x403ae020, 0x076b: 0x403ae220,
+-	0x076c: 0x403ae420, 0x076d: 0xe0001803, 0x076e: 0xe0001809, 0x076f: 0xe000180c,
+-	0x0770: 0xae60d302, 0x0771: 0xadc0d402, 0x0772: 0xae60d502, 0x0773: 0xae60d602,
+-	0x0774: 0xadc0d702, 0x0775: 0xae60d802, 0x0776: 0xae60d902, 0x0777: 0xadc0da02,
+-	0x0778: 0xadc0db02, 0x0779: 0xadc0dc02, 0x077a: 0xae60dd02, 0x077b: 0xadc0de02,
+-	0x077c: 0xadc0df02, 0x077d: 0xae60e002, 0x077e: 0xadc0e102, 0x077f: 0xae60e202,
+-	// Block 0x1e, offset 0x780
+-	0x0780: 0xae600000, 0x0781: 0xae605f02, 0x0782: 0xadc06002, 0x0783: 0xae600000,
+-	0x0784: 0xadc00000, 0x0785: 0xae605f02, 0x0786: 0xadc06002, 0x0787: 0xae600000,
+-	0x0788: 0xadc00000, 0x0789: 0xae600000, 0x078a: 0xae600000,
+-	0x078d: 0x403ac020, 0x078e: 0x403acc20, 0x078f: 0x403ada20,
+-	0x0790: 0x40394420, 0x0791: 0x40394620, 0x0792: 0x40394820, 0x0793: 0x40394a20,
+-	0x0794: 0x40394c20, 0x0795: 0x40394e20, 0x0796: 0x40395220, 0x0797: 0x40397c20,
+-	0x0798: 0x40397e20, 0x0799: 0x4039a020, 0x079a: 0x4039a220, 0x079b: 0x4039bc20,
+-	0x079c: 0x4039d220, 0x079d: 0x4039f620, 0x079e: 0x4039f820, 0x079f: 0x4039fa20,
+-	0x07a0: 0x403a0c20, 0x07a1: 0x403a0e20, 0x07a2: 0x403a3620, 0x07a3: 0x403a3c20,
+-	0x07a4: 0x403a3e20, 0x07a5: 0x403a5020, 0x07a6: 0x403a5220, 0x07a7: 0x403a6220,
+-	0x07a8: 0x403a6420, 0x07a9: 0x403a6620, 0x07aa: 0x403a4a20, 0x07ab: 0x4039be20,
+-	0x07ac: 0x4039c020, 0x07ad: 0x4039d420, 0x07ae: 0x40398020, 0x07af: 0x40398220,
+-	0x07b0: 0x4039d620, 0x07b1: 0x4039c220, 0x07b2: 0x40398420, 0x07b3: 0x40392c20,
+-	0x07b4: 0x40392e20, 0x07b5: 0x403aa420, 0x07b6: 0x403aa620, 0x07b7: 0x403aa820,
+-	0x07b8: 0x403a8820, 0x07b9: 0x403a8a20, 0x07ba: 0x403aac20, 0x07bb: 0x403aae20,
+-	0x07bc: 0x40398620, 0x07bd: 0x4039d820, 0x07be: 0x4039da20, 0x07bf: 0x403a2420,
+-	// Block 0x1f, offset 0x7c0
+-	0x07c0: 0x403b1820, 0x07c1: 0x403b1e20, 0x07c2: 0x403b2020, 0x07c3: 0x403b2220,
+-	0x07c4: 0x403b2620, 0x07c5: 0x403b2820, 0x07c6: 0x403b2a20, 0x07c7: 0x403b2c20,
+-	0x07c8: 0x403b3220, 0x07c9: 0x403b3620, 0x07ca: 0x403b3820, 0x07cb: 0x403b3a20,
+-	0x07cc: 0x403b3e20, 0x07cd: 0x403b4620, 0x07ce: 0x403b4820, 0x07cf: 0x403b4c20,
+-	0x07d0: 0x403b4e20, 0x07d1: 0x403b5620, 0x07d2: 0x403b5820, 0x07d3: 0x403b5a20,
+-	0x07d4: 0x403b5c20, 0x07d5: 0x403b5e20, 0x07d6: 0x403b6020, 0x07d7: 0x403b6220,
+-	0x07d8: 0x403b4020, 0x07d9: 0x403b1a20, 0x07da: 0x403b1c20, 0x07db: 0x403b3c20,
+-	0x07dc: 0x403b2420, 0x07dd: 0x403b5020, 0x07de: 0x403b5220, 0x07df: 0x403b5420,
+-	0x07e0: 0x403b4220, 0x07e1: 0x403b4420, 0x07e2: 0x403b2e20, 0x07e3: 0x403b3020,
+-	0x07e4: 0x403b4a20, 0x07e5: 0x403b3420, 0x07e6: 0x403b6620, 0x07e7: 0x403b6820,
+-	0x07e8: 0x403b6a20, 0x07e9: 0x403b6c20, 0x07ea: 0x403b6e20, 0x07eb: 0x403b7020,
+-	0x07ec: 0x403b7220, 0x07ed: 0x403b7420, 0x07ee: 0x403b7620, 0x07ef: 0x403b7820,
+-	0x07f0: 0x403b7a20, 0x07f1: 0x403b6420,
+-	// Block 0x20, offset 0x800
+-	0x0800: 0xe0000164, 0x0801: 0xe00001ef, 0x0802: 0xe000030a, 0x0803: 0xe00003e4,
+-	0x0804: 0xe00004bf, 0x0805: 0xe0000589, 0x0806: 0xe0000654, 0x0807: 0xe00006fc,
+-	0x0808: 0xe00007a8, 0x0809: 0xe000084d, 0x080a: 0x403b7c20, 0x080b: 0x403b7e20,
+-	0x080c: 0x403b8020, 0x080d: 0x403b8220, 0x080e: 0x403b8420, 0x080f: 0x403b8620,
+-	0x0810: 0x403b8820, 0x0811: 0x403b8a20, 0x0812: 0x403b8c20, 0x0813: 0x403b8e20,
+-	0x0814: 0x403b9020, 0x0815: 0x403b9220, 0x0816: 0x403b9420, 0x0817: 0x403b9620,
+-	0x0818: 0x403b9820, 0x0819: 0x403b9a20, 0x081a: 0x403b9c20, 0x081b: 0x403b9e20,
+-	0x081c: 0x403ba020, 0x081d: 0x403ba220, 0x081e: 0x403ba420, 0x081f: 0x403ba620,
+-	0x0820: 0x403ba820, 0x0821: 0x403baa20, 0x0822: 0x403bac20, 0x0823: 0x403bae20,
+-	0x0824: 0x403bb020, 0x0825: 0x403bb220, 0x0826: 0x403bb420, 0x0827: 0x403bb620,
+-	0x0828: 0xe0001815, 0x0829: 0xe0001818, 0x082a: 0xe000181b, 0x082b: 0xae60e302,
+-	0x082c: 0xae60e402, 0x082d: 0xae60e502, 0x082e: 0xae60e602, 0x082f: 0xae60e702,
+-	0x0830: 0xae60e802, 0x0831: 0xae60e902, 0x0832: 0xadc0ea02, 0x0833: 0xae60eb02,
+-	0x0834: 0x403bb820, 0x0835: 0x403bba20, 0x0836: 0x40073820, 0x0837: 0x40035e20,
+-	0x0838: 0x40025020, 0x0839: 0x4002c020, 0x083a: 0xa0000000,
+-	// Block 0x21, offset 0x840
+-	0x0840: 0x4038e820, 0x0841: 0x4038ea20, 0x0842: 0x4038ec20, 0x0843: 0x4038ee20,
+-	0x0844: 0x4038f020, 0x0845: 0x4038f220, 0x0846: 0x4038f420, 0x0847: 0x4038f620,
+-	0x0848: 0x4038f820, 0x0849: 0x4038fa20, 0x084a: 0x4038fc20, 0x084b: 0x4038fe20,
+-	0x084c: 0x40390020, 0x084d: 0x40390220, 0x084e: 0x40390420, 0x084f: 0x40390620,
+-	0x0850: 0x40390820, 0x0851: 0x40390a20, 0x0852: 0x40390c20, 0x0853: 0x40390e20,
+-	0x0854: 0x40391020, 0x0855: 0x40391220, 0x0856: 0x82e61c8a, 0x0857: 0x82e61c8b,
+-	0x0858: 0xae609f02, 0x0859: 0xae60a002, 0x085a: 0x40391820, 0x085b: 0x82e61c8d,
+-	0x085c: 0xae609702, 0x085d: 0xae609702, 0x085e: 0xae609802, 0x085f: 0xae609802,
+-	0x0860: 0xae609802, 0x0861: 0xae609902, 0x0862: 0xae609902, 0x0863: 0xae609902,
+-	0x0864: 0xa0009a02, 0x0865: 0xae609a02, 0x0866: 0xae609b02, 0x0867: 0xae609b02,
+-	0x0868: 0xa0009c02, 0x0869: 0xae609c02, 0x086a: 0xae609c02, 0x086b: 0xae609d02,
+-	0x086c: 0xae609e02, 0x086d: 0xae60a102,
+-	0x0870: 0x40027e20, 0x0871: 0x40028020, 0x0872: 0x40028220, 0x0873: 0x40028420,
+-	0x0874: 0x40028620, 0x0875: 0x40028820, 0x0876: 0x40028a20, 0x0877: 0x40028c20,
+-	0x0878: 0x40028e20, 0x0879: 0x40029020, 0x087a: 0x40029220, 0x087b: 0x40029420,
+-	0x087c: 0x40029620, 0x087d: 0x40029820, 0x087e: 0x40029a20,
+-	// Block 0x22, offset 0x880
+-	0x0880: 0x403ae620, 0x0881: 0x403ae820, 0x0882: 0x403aea20, 0x0883: 0x403aec20,
+-	0x0884: 0x403aee20, 0x0885: 0x403af020, 0x0886: 0x403af220, 0x0887: 0x403af420,
+-	0x0888: 0x403af620, 0x0889: 0x403af820, 0x088a: 0x403afa20, 0x088b: 0x403afc20,
+-	0x088c: 0x403afe20, 0x088d: 0x403b0020, 0x088e: 0x403b0220, 0x088f: 0x403b0420,
+-	0x0890: 0x403b0620, 0x0891: 0x403b0820, 0x0892: 0x403b0a20, 0x0893: 0x403b0c20,
+-	0x0894: 0x403b0e20, 0x0895: 0x403b1020, 0x0896: 0x403b1220, 0x0897: 0x403b1420,
+-	0x0898: 0x403b1620, 0x0899: 0xadc06002, 0x089a: 0xadc06002, 0x089b: 0xadc06002,
+-	0x089e: 0x40056820,
+-	// Block 0x23, offset 0x8c0
+-	0x08e0: 0x40395020, 0x08e2: 0x40397020, 0x08e3: 0x4039ec20,
+-	0x08e4: 0x403a0620, 0x08e5: 0x403a1820, 0x08e6: 0x403a4c20, 0x08e7: 0x403a5420,
+-	0x08e8: 0x40393220, 0x08e9: 0x40393420, 0x08ea: 0x4039c420, 0x08eb: 0x403a8c20,
+-	0x08ec: 0x40393620,
+-	// Block 0x24, offset 0x900
+-	0x0924: 0xae60af02, 0x0925: 0xae60b402, 0x0926: 0xadc0b802, 0x0927: 0xae60a402,
+-	0x0928: 0xae60a802, 0x0929: 0xadc0ac02, 0x092a: 0xae600000, 0x092b: 0xae600000,
+-	0x092c: 0xae600000, 0x092d: 0xadc00000, 0x092e: 0xadc00000, 0x092f: 0xadc00000,
+-	0x0930: 0xa1b0a302, 0x0931: 0xa1c0a702, 0x0932: 0xa1d0ab02, 0x0933: 0xae600000,
+-	0x0934: 0xae60b002, 0x0935: 0xae60b102, 0x0936: 0xadc0b902, 0x0937: 0xae60ca02,
+-	0x0938: 0xae60cb02, 0x0939: 0xadc0cf02, 0x093a: 0xadc0d002, 0x093b: 0xae60cd02,
+-	0x093c: 0xae60ce02, 0x093d: 0xae60cc02, 0x093e: 0xae60b502,
+-	// Block 0x25, offset 0x940
+-	0x0940: 0xa000f202, 0x0941: 0xa000f202, 0x0942: 0xa000f302, 0x0943: 0xa000f402,
+-	0x0944: 0x403fbc20, 0x0945: 0x403fbe20, 0x0946: 0x403fc020, 0x0947: 0x403fcc20,
+-	0x0948: 0x403fce20, 0x0949: 0x403fd020, 0x094a: 0x403fd220, 0x094b: 0x403fd420,
+-	0x094c: 0x403fd820, 0x094d: 0x403fdc20, 0x094e: 0x403fde20, 0x094f: 0x403fe020,
+-	0x0950: 0x403fe220, 0x0951: 0x403fe420, 0x0952: 0x403fe620, 0x0953: 0x403fe820,
+-	0x0954: 0x403fea20, 0x0955: 0x403fec20, 0x0956: 0x403fee20, 0x0957: 0x403ff020,
+-	0x0958: 0x403ff420, 0x0959: 0x403ff620, 0x095a: 0x403ff820, 0x095b: 0x403ffa20,
+-	0x095c: 0x403ffc20, 0x095d: 0x40400220, 0x095e: 0x40400420, 0x095f: 0x40400620,
+-	0x0960: 0x40400820, 0x0961: 0x40400a20, 0x0962: 0x40400e20, 0x0963: 0x40401020,
+-	0x0964: 0x40401220, 0x0965: 0x40401420, 0x0966: 0x40401620, 0x0967: 0x40401820,
+-	0x0968: 0x40401a20, 0x0969: 0xe0001830, 0x096a: 0x40401c20, 0x096b: 0x40401e20,
+-	0x096c: 0x40402020, 0x096d: 0x40402420, 0x096e: 0x40402620, 0x096f: 0x40402820,
+-	0x0970: 0x40402c20, 0x0971: 0xe0001839, 0x0972: 0x40402e20, 0x0973: 0x40403020,
+-	0x0974: 0xe000183c, 0x0975: 0x40403220, 0x0976: 0x40403420, 0x0977: 0x40403620,
+-	0x0978: 0x40403820, 0x0979: 0x40403a20, 0x097a: 0x40404c20, 0x097b: 0x40404e20,
+-	0x097c: 0xa070f102, 0x097d: 0x40403c20, 0x097e: 0x40404a20, 0x097f: 0x40405620,
+-	// Block 0x26, offset 0x980
+-	0x0980: 0x40405820, 0x0981: 0x40405a20, 0x0982: 0x40405c20, 0x0983: 0x40405e20,
+-	0x0984: 0x40406020, 0x0985: 0x40406620, 0x0986: 0x40406a20, 0x0987: 0x40406c20,
+-	0x0988: 0x40407020, 0x0989: 0x40407220, 0x098a: 0x40407420, 0x098b: 0x40407620,
+-	0x098c: 0x40407820, 0x098d: 0x8209203d, 0x098e: 0x40406e20, 0x098f: 0x40405020,
+-	0x0990: 0x403fb820, 0x0991: 0xae600000, 0x0992: 0xadc00000, 0x0993: 0xae603502,
+-	0x0994: 0xae603202, 0x0995: 0x40406820, 0x0996: 0x40405220, 0x0997: 0x40405420,
+-	0x0998: 0xe000181e, 0x0999: 0xe0001821, 0x099a: 0xe0001824, 0x099b: 0xe0001827,
+-	0x099c: 0xe000182a, 0x099d: 0xe000182d, 0x099e: 0xe0001833, 0x099f: 0xe0001836,
+-	0x09a0: 0x403fd620, 0x09a1: 0x403fda20, 0x09a2: 0x40406220, 0x09a3: 0x40406420,
+-	0x09a4: 0x40030c20, 0x09a5: 0x40030e20, 0x09a6: 0xe000016a, 0x09a7: 0xe00001f8,
+-	0x09a8: 0xe0000313, 0x09a9: 0xe00003ed, 0x09aa: 0xe00004c8, 0x09ab: 0xe0000592,
+-	0x09ac: 0xe000065d, 0x09ad: 0xe0000705, 0x09ae: 0xe00007b1, 0x09af: 0xe0000856,
+-	0x09b0: 0x40056c20, 0x09b1: 0x4027b620, 0x09b2: 0x403fba20, 0x09b3: 0x403fc220,
+-	0x09b4: 0x403fc420, 0x09b5: 0x403fc620, 0x09b6: 0x403fc820, 0x09b7: 0x403fca20,
+-	0x09b9: 0x403ffe20, 0x09ba: 0x40402a20, 0x09bb: 0x403ff220,
+-	0x09bc: 0x40400020, 0x09bd: 0x40403e20, 0x09be: 0x40400c20, 0x09bf: 0x40402220,
+-	// Block 0x27, offset 0x9c0
+-	0x09c1: 0xa000f202, 0x09c2: 0xa000f302, 0x09c3: 0xa000f402,
+-	0x09c5: 0x40407c20, 0x09c6: 0x40407e20, 0x09c7: 0x40408020,
+-	0x09c8: 0x40408220, 0x09c9: 0x40408420, 0x09ca: 0x40408620, 0x09cb: 0x40408820,
+-	0x09cc: 0x40408c20, 0x09cf: 0x40409020,
+-	0x09d0: 0x40409220, 0x09d3: 0x40409420,
+-	0x09d4: 0x40409620, 0x09d5: 0x40409820, 0x09d6: 0x40409a20, 0x09d7: 0x40409c20,
+-	0x09d8: 0x40409e20, 0x09d9: 0x4040a020, 0x09da: 0x4040a220, 0x09db: 0x4040a420,
+-	0x09dc: 0x4040a620, 0x09dd: 0x4040a820, 0x09de: 0x4040aa20, 0x09df: 0x4040ac20,
+-	0x09e0: 0x4040ae20, 0x09e1: 0x4040b020, 0x09e2: 0x4040b220, 0x09e3: 0x4040b420,
+-	0x09e4: 0x4040b620, 0x09e5: 0x4040b820, 0x09e6: 0x4040ba20, 0x09e7: 0x4040bc20,
+-	0x09e8: 0x4040be20, 0x09ea: 0x4040c020, 0x09eb: 0x4040c220,
+-	0x09ec: 0x4040c420, 0x09ed: 0x4040c620, 0x09ee: 0x4040c820, 0x09ef: 0x4040ca20,
+-	0x09f0: 0x4040cc20, 0x09f2: 0x4040d020,
+-	0x09f6: 0x4040d420, 0x09f7: 0x4040d620,
+-	0x09f8: 0x4040d820, 0x09f9: 0x4040da20,
+-	0x09fc: 0xa070f102, 0x09fd: 0x4040dc20, 0x09fe: 0x4040de20, 0x09ff: 0x4040e020,
+-	// Block 0x28, offset 0xa00
+-	0x0a00: 0x4040e220, 0x0a01: 0x4040e420, 0x0a02: 0x4040e620, 0x0a03: 0x4040e820,
+-	0x0a04: 0x4040ea20, 0x0a07: 0xc05a0191,
+-	0x0a08: 0x4040f220, 0x0a0b: 0x4040f420,
+-	0x0a0c: 0x4040f620, 0x0a0d: 0x8209207c, 0x0a0e: 0xe0001845,
+-	0x0a17: 0x4040fa20,
+-	0x0a1c: 0xe000183f, 0x0a1d: 0xe0001842, 0x0a1f: 0xe0001848,
+-	0x0a20: 0x40408a20, 0x0a21: 0x40408e20, 0x0a22: 0x4040ec20, 0x0a23: 0x4040ee20,
+-	0x0a26: 0xe000016d, 0x0a27: 0xe00001fb,
+-	0x0a28: 0xe0000316, 0x0a29: 0xe00003f0, 0x0a2a: 0xe00004cb, 0x0a2b: 0xe0000595,
+-	0x0a2c: 0xe0000660, 0x0a2d: 0xe0000708, 0x0a2e: 0xe00007b4, 0x0a2f: 0xe0000859,
+-	0x0a30: 0x4040ce20, 0x0a31: 0x4040d220, 0x0a32: 0x4027e820, 0x0a33: 0x4027ea20,
+-	0x0a34: 0x40283020, 0x0a35: 0x40283220, 0x0a36: 0x40283420, 0x0a37: 0x40283620,
+-	0x0a38: 0x40283820, 0x0a39: 0x40283a20, 0x0a3a: 0x40073a20, 0x0a3b: 0x4027ec20,
+-	// Block 0x29, offset 0xa40
+-	0x0a41: 0xa000f202, 0x0a42: 0xa000f302, 0x0a43: 0xa000f402,
+-	0x0a45: 0x40410620, 0x0a46: 0x40410820, 0x0a47: 0x40411020,
+-	0x0a48: 0x40411220, 0x0a49: 0x40410020, 0x0a4a: 0x40410220,
+-	0x0a4f: 0x40411420,
+-	0x0a50: 0x40410a20, 0x0a53: 0x40410420,
+-	0x0a54: 0x40410c20, 0x0a55: 0x40411c20, 0x0a56: 0x40411e20, 0x0a57: 0x40412020,
+-	0x0a58: 0x40412220, 0x0a59: 0x40412420, 0x0a5a: 0x40412620, 0x0a5b: 0x40412820,
+-	0x0a5c: 0x40412a20, 0x0a5d: 0x40412c20, 0x0a5e: 0x40412e20, 0x0a5f: 0x40413020,
+-	0x0a60: 0x40413220, 0x0a61: 0x40413420, 0x0a62: 0x40413620, 0x0a63: 0x40413820,
+-	0x0a64: 0x40413a20, 0x0a65: 0x40413c20, 0x0a66: 0x40413e20, 0x0a67: 0x40414020,
+-	0x0a68: 0x40414220, 0x0a6a: 0x40414420, 0x0a6b: 0x40414620,
+-	0x0a6c: 0x40414820, 0x0a6d: 0x40414a20, 0x0a6e: 0x40414c20, 0x0a6f: 0x40414e20,
+-	0x0a70: 0x40415220, 0x0a72: 0x40415420, 0x0a73: 0xe000185a,
+-	0x0a75: 0x40415620, 0x0a76: 0xe000184b,
+-	0x0a78: 0x40411620, 0x0a79: 0x40411820,
+-	0x0a7c: 0xa070f102, 0x0a7e: 0x40415a20, 0x0a7f: 0x40415c20,
+-	// Block 0x2a, offset 0xa80
+-	0x0a80: 0x40415e20, 0x0a81: 0x40416020, 0x0a82: 0x40416220,
+-	0x0a87: 0x40416420,
+-	0x0a88: 0x40416620, 0x0a8b: 0x40416820,
+-	0x0a8c: 0x40416a20, 0x0a8d: 0x820920b6,
+-	0x0a91: 0x40411a20,
+-	0x0a99: 0xe000184e, 0x0a9a: 0xe0001851, 0x0a9b: 0xe0001854,
+-	0x0a9c: 0x40415820, 0x0a9e: 0xe0001857,
+-	0x0aa6: 0xe0000170, 0x0aa7: 0xe00001fe,
+-	0x0aa8: 0xe0000319, 0x0aa9: 0xe00003f3, 0x0aaa: 0xe00004ce, 0x0aab: 0xe0000598,
+-	0x0aac: 0xe0000663, 0x0aad: 0xe000070b, 0x0aae: 0xe00007b7, 0x0aaf: 0xe000085c,
+-	0x0ab0: 0xa000f502, 0x0ab1: 0xa000f602, 0x0ab2: 0x40410e20, 0x0ab3: 0x4040fe20,
+-	0x0ab4: 0x4040fc20, 0x0ab5: 0x40415020,
+-	// Block 0x2b, offset 0xac0
+-	0x0ac1: 0xa000f202, 0x0ac2: 0xa000f302, 0x0ac3: 0xa000f402,
+-	0x0ac5: 0x40417020, 0x0ac6: 0x40417220, 0x0ac7: 0x40417420,
+-	0x0ac8: 0x40417620, 0x0ac9: 0x40417820, 0x0aca: 0x40417a20, 0x0acb: 0x40417c20,
+-	0x0acc: 0x40418020, 0x0acd: 0x40418420, 0x0acf: 0x40418620,
+-	0x0ad0: 0x40418820, 0x0ad1: 0x40418a20, 0x0ad3: 0x40418c20,
+-	0x0ad4: 0x40418e20, 0x0ad5: 0x40419020, 0x0ad6: 0x40419220, 0x0ad7: 0x40419420,
+-	0x0ad8: 0x40419620, 0x0ad9: 0x40419820, 0x0ada: 0x40419a20, 0x0adb: 0x40419c20,
+-	0x0adc: 0x40419e20, 0x0add: 0x4041a020, 0x0ade: 0x4041a220, 0x0adf: 0x4041a420,
+-	0x0ae0: 0x4041a620, 0x0ae1: 0x4041a820, 0x0ae2: 0x4041aa20, 0x0ae3: 0x4041ac20,
+-	0x0ae4: 0x4041ae20, 0x0ae5: 0x4041b020, 0x0ae6: 0x4041b220, 0x0ae7: 0x4041b420,
+-	0x0ae8: 0x4041b620, 0x0aea: 0x4041b820, 0x0aeb: 0x4041ba20,
+-	0x0aec: 0x4041bc20, 0x0aed: 0x4041be20, 0x0aee: 0x4041c020, 0x0aef: 0x4041c220,
+-	0x0af0: 0x4041c420, 0x0af2: 0x4041c620, 0x0af3: 0x4041d220,
+-	0x0af5: 0x4041c820, 0x0af6: 0x4041ca20, 0x0af7: 0x4041cc20,
+-	0x0af8: 0x4041ce20, 0x0af9: 0x4041d020,
+-	0x0afc: 0xa070f102, 0x0afd: 0x4041d420, 0x0afe: 0x4041d620, 0x0aff: 0x4041d820,
+-	// Block 0x2c, offset 0xb00
+-	0x0b00: 0x4041da20, 0x0b01: 0x4041dc20, 0x0b02: 0x4041de20, 0x0b03: 0x4041e020,
+-	0x0b04: 0x4041e220, 0x0b05: 0x4041e820, 0x0b07: 0x4041ea20,
+-	0x0b08: 0x4041ec20, 0x0b09: 0x4041ee20, 0x0b0b: 0x4041f020,
+-	0x0b0c: 0x4041f220, 0x0b0d: 0x820920fa,
+-	0x0b10: 0x40416e20,
+-	0x0b20: 0x40417e20, 0x0b21: 0x40418220, 0x0b22: 0x4041e420, 0x0b23: 0x4041e620,
+-	0x0b26: 0xe0000173, 0x0b27: 0xe0000201,
+-	0x0b28: 0xe000031c, 0x0b29: 0xe00003f6, 0x0b2a: 0xe00004d1, 0x0b2b: 0xe000059b,
+-	0x0b2c: 0xe0000666, 0x0b2d: 0xe000070e, 0x0b2e: 0xe00007ba, 0x0b2f: 0xe000085f,
+-	0x0b30: 0x40057420, 0x0b31: 0x4027ee20,
+-	// Block 0x2d, offset 0xb40
+-	0x0b41: 0xa000f202, 0x0b42: 0xa000f302, 0x0b43: 0xa000f402,
+-	0x0b45: 0x4041f620, 0x0b46: 0x4041f820, 0x0b47: 0x4041fa20,
+-	0x0b48: 0x4041fc20, 0x0b49: 0x4041fe20, 0x0b4a: 0x40420020, 0x0b4b: 0x40420220,
+-	0x0b4c: 0x40420620, 0x0b4f: 0x40420a20,
+-	0x0b50: 0x40420c20, 0x0b53: 0x40420e20,
+-	0x0b54: 0x40421020, 0x0b55: 0x40421220, 0x0b56: 0x40421420, 0x0b57: 0x40421620,
+-	0x0b58: 0x40421820, 0x0b59: 0x40421a20, 0x0b5a: 0x40421c20, 0x0b5b: 0x40421e20,
+-	0x0b5c: 0x40422020, 0x0b5d: 0x40422220, 0x0b5e: 0x40422420, 0x0b5f: 0x40422620,
+-	0x0b60: 0x40422820, 0x0b61: 0x40422a20, 0x0b62: 0x40422c20, 0x0b63: 0x40422e20,
+-	0x0b64: 0x40423020, 0x0b65: 0x40423220, 0x0b66: 0x40423420, 0x0b67: 0x40423620,
+-	0x0b68: 0x40423820, 0x0b6a: 0x40423a20, 0x0b6b: 0x40423c20,
+-	0x0b6c: 0x40423e20, 0x0b6d: 0x40424020, 0x0b6e: 0x40424220, 0x0b6f: 0x40424420,
+-	0x0b70: 0x40424820, 0x0b72: 0x40424a20, 0x0b73: 0x40424c20,
+-	0x0b75: 0x40424e20, 0x0b76: 0x40425220, 0x0b77: 0x40425420,
+-	0x0b78: 0x40425620, 0x0b79: 0x40425820,
+-	0x0b7c: 0xa070f102, 0x0b7d: 0x40425a20, 0x0b7e: 0x40425c20, 0x0b7f: 0x40425e20,
+-	// Block 0x2e, offset 0xb80
+-	0x0b80: 0x40426020, 0x0b81: 0x40426220, 0x0b82: 0x40426420, 0x0b83: 0x40426620,
+-	0x0b84: 0x40426820, 0x0b87: 0xc05d01e1,
+-	0x0b88: 0x40427020, 0x0b8b: 0x40427220,
+-	0x0b8c: 0x40427420, 0x0b8d: 0x8209213b,
+-	0x0b96: 0x40427820, 0x0b97: 0x40427a20,
+-	0x0b9c: 0xe000185d, 0x0b9d: 0xe0001860, 0x0b9f: 0x40424620,
+-	0x0ba0: 0x40420420, 0x0ba1: 0x40420820, 0x0ba2: 0x40426a20, 0x0ba3: 0x40426c20,
+-	0x0ba6: 0xe0000176, 0x0ba7: 0xe0000204,
+-	0x0ba8: 0xe000031f, 0x0ba9: 0xe00003f9, 0x0baa: 0xe00004d4, 0x0bab: 0xe000059e,
+-	0x0bac: 0xe0000669, 0x0bad: 0xe0000711, 0x0bae: 0xe00007bd, 0x0baf: 0xe0000862,
+-	0x0bb0: 0x40073c20, 0x0bb1: 0x40425020, 0x0bb2: 0x40283c20, 0x0bb3: 0x40283e20,
+-	0x0bb4: 0x40284020, 0x0bb5: 0x40284220, 0x0bb6: 0x40284420, 0x0bb7: 0x40284620,
+-	// Block 0x2f, offset 0xbc0
+-	0x0bc2: 0xa000f302, 0x0bc3: 0x40429620,
+-	0x0bc5: 0x40427e20, 0x0bc6: 0x40428020, 0x0bc7: 0x40428220,
+-	0x0bc8: 0x40428420, 0x0bc9: 0x40428620, 0x0bca: 0x40428820,
+-	0x0bce: 0x40428a20, 0x0bcf: 0x40428c20,
+-	0x0bd0: 0x40428e20, 0x0bd2: 0xc0610231, 0x0bd3: 0x40429220,
+-	0x0bd4: 0x40429420, 0x0bd5: 0x40429820,
+-	0x0bd9: 0x40429a20, 0x0bda: 0x40429c20,
+-	0x0bdc: 0x4042bc20, 0x0bde: 0x40429e20, 0x0bdf: 0x4042a020,
+-	0x0be3: 0x4042a220,
+-	0x0be4: 0x4042a420,
+-	0x0be8: 0x4042a620, 0x0be9: 0x4042ba20, 0x0bea: 0x4042a820,
+-	0x0bee: 0x4042aa20, 0x0bef: 0x4042ac20,
+-	0x0bf0: 0x4042ae20, 0x0bf1: 0x4042b820, 0x0bf2: 0x4042b020, 0x0bf3: 0x4042b620,
+-	0x0bf4: 0x4042b420, 0x0bf5: 0x4042b220, 0x0bf6: 0x4042be20, 0x0bf7: 0x4042c020,
+-	0x0bf8: 0x4042c220, 0x0bf9: 0x4042c420,
+-	0x0bfe: 0x4042c620, 0x0bff: 0x4042c820,
+-	// Block 0x30, offset 0xc00
+-	0x0c00: 0x4042ca20, 0x0c01: 0x4042cc20, 0x0c02: 0x4042ce20,
+-	0x0c06: 0xc0630261, 0x0c07: 0xc06602b1,
+-	0x0c08: 0x4042d420, 0x0c0a: 0x4042d620, 0x0c0b: 0x4042d820,
+-	0x0c0c: 0x4042da20, 0x0c0d: 0x8209216e,
+-	0x0c10: 0x40427c20,
+-	0x0c17: 0x4042de20,
+-	0x0c26: 0xe0000179, 0x0c27: 0xe0000207,
+-	0x0c28: 0xe0000322, 0x0c29: 0xe00003fc, 0x0c2a: 0xe00004d7, 0x0c2b: 0xe00005a1,
+-	0x0c2c: 0xe000066c, 0x0c2d: 0xe0000714, 0x0c2e: 0xe00007c0, 0x0c2f: 0xe0000865,
+-	0x0c30: 0x40285420, 0x0c31: 0x40285620, 0x0c32: 0x40285820, 0x0c33: 0x40073e20,
+-	0x0c34: 0x40074020, 0x0c35: 0x40074220, 0x0c36: 0x40074420, 0x0c37: 0x40074620,
+-	0x0c38: 0x40074820, 0x0c39: 0x4027f220, 0x0c3a: 0x40074a20,
+-	// Block 0x31, offset 0xc40
+-	0x0c41: 0xa000f202, 0x0c42: 0xa000f302, 0x0c43: 0xa000f402,
+-	0x0c45: 0x4042e020, 0x0c46: 0x4042e220, 0x0c47: 0x4042e420,
+-	0x0c48: 0x4042e620, 0x0c49: 0x4042e820, 0x0c4a: 0x4042ea20, 0x0c4b: 0x4042ec20,
+-	0x0c4c: 0x4042f020, 0x0c4e: 0x4042f420, 0x0c4f: 0x4042f620,
+-	0x0c50: 0x4042f820, 0x0c52: 0x4042fa20, 0x0c53: 0x4042fc20,
+-	0x0c54: 0x4042fe20, 0x0c55: 0x40430020, 0x0c56: 0x40430220, 0x0c57: 0x40430420,
+-	0x0c58: 0x40430620, 0x0c59: 0x40430820, 0x0c5a: 0x40430a20, 0x0c5b: 0x40430e20,
+-	0x0c5c: 0x40431020, 0x0c5d: 0x40431420, 0x0c5e: 0x40431620, 0x0c5f: 0x40431820,
+-	0x0c60: 0x40431a20, 0x0c61: 0x40431c20, 0x0c62: 0x40431e20, 0x0c63: 0x40432020,
+-	0x0c64: 0x40432220, 0x0c65: 0x40432420, 0x0c66: 0x40432620, 0x0c67: 0x40432820,
+-	0x0c68: 0x40432a20, 0x0c6a: 0x40432c20, 0x0c6b: 0x40432e20,
+-	0x0c6c: 0x40433020, 0x0c6d: 0x40433220, 0x0c6e: 0x40433420, 0x0c6f: 0x40433620,
+-	0x0c70: 0x40433820, 0x0c71: 0x40433a20, 0x0c72: 0x40433c20, 0x0c73: 0x40434820,
+-	0x0c75: 0x40433e20, 0x0c76: 0x40434020, 0x0c77: 0x40434220,
+-	0x0c78: 0x40434420, 0x0c79: 0x40434620,
+-	0x0c7d: 0x40434a20, 0x0c7e: 0x40434c20, 0x0c7f: 0x40434e20,
+-	// Block 0x32, offset 0xc80
+-	0x0c80: 0x40435020, 0x0c81: 0x40435220, 0x0c82: 0x40435420, 0x0c83: 0x40435620,
+-	0x0c84: 0x40435820, 0x0c86: 0xc06802e1, 0x0c87: 0x40436020,
+-	0x0c88: 0x40436220, 0x0c8a: 0x40436420, 0x0c8b: 0x40436620,
+-	0x0c8c: 0x40436820, 0x0c8d: 0x820921b5,
+-	0x0c95: 0x825421b6, 0x0c96: 0x825b21b7,
+-	0x0c98: 0x40430c20, 0x0c99: 0x40431220,
+-	0x0ca0: 0x4042ee20, 0x0ca1: 0x4042f220, 0x0ca2: 0x40435a20, 0x0ca3: 0x40435c20,
+-	0x0ca6: 0xe000017c, 0x0ca7: 0xe000020a,
+-	0x0ca8: 0xe0000325, 0x0ca9: 0xe00003ff, 0x0caa: 0xe00004da, 0x0cab: 0xe00005a4,
+-	0x0cac: 0xe000066f, 0x0cad: 0xe0000717, 0x0cae: 0xe00007c3, 0x0caf: 0xe0000868,
+-	0x0cb8: 0xe000017f, 0x0cb9: 0xe000020d, 0x0cba: 0xe0000328, 0x0cbb: 0xe0000402,
+-	0x0cbc: 0xe0000210, 0x0cbd: 0xe000032b, 0x0cbe: 0xe0000405, 0x0cbf: 0x40074c20,
+-	// Block 0x33, offset 0xcc0
+-	0x0cc2: 0xa000f302, 0x0cc3: 0xa000f402,
+-	0x0cc5: 0x40437020, 0x0cc6: 0x40437220, 0x0cc7: 0x40437420,
+-	0x0cc8: 0x40437620, 0x0cc9: 0x40437820, 0x0cca: 0x40437a20, 0x0ccb: 0x40437c20,
+-	0x0ccc: 0x40438020, 0x0cce: 0x40438420, 0x0ccf: 0x40438620,
+-	0x0cd0: 0x40438820, 0x0cd2: 0x40438a20, 0x0cd3: 0x40438c20,
+-	0x0cd4: 0x40438e20, 0x0cd5: 0x40439020, 0x0cd6: 0x40439220, 0x0cd7: 0x40439420,
+-	0x0cd8: 0x40439620, 0x0cd9: 0x40439820, 0x0cda: 0x40439a20, 0x0cdb: 0x40439c20,
+-	0x0cdc: 0x40439e20, 0x0cdd: 0x4043a020, 0x0cde: 0x4043a220, 0x0cdf: 0x4043a420,
+-	0x0ce0: 0x4043a620, 0x0ce1: 0x4043a820, 0x0ce2: 0x4043aa20, 0x0ce3: 0x4043ac20,
+-	0x0ce4: 0x4043ae20, 0x0ce5: 0x4043b020, 0x0ce6: 0x4043b220, 0x0ce7: 0x4043b420,
+-	0x0ce8: 0x4043b620, 0x0cea: 0x4043b820, 0x0ceb: 0x4043ba20,
+-	0x0cec: 0x4043bc20, 0x0ced: 0x4043be20, 0x0cee: 0x4043c020, 0x0cef: 0x4043c220,
+-	0x0cf0: 0x4043c420, 0x0cf1: 0x4043c620, 0x0cf2: 0x4043c820, 0x0cf3: 0x4043d420,
+-	0x0cf5: 0x4043ca20, 0x0cf6: 0x4043cc20, 0x0cf7: 0x4043ce20,
+-	0x0cf8: 0x4043d020, 0x0cf9: 0x4043d220,
+-	0x0cfc: 0xa070f102, 0x0cfd: 0x4043d820, 0x0cfe: 0x4043de20, 0x0cff: 0xc06a0311,
+-	// Block 0x34, offset 0xd00
+-	0x0d00: 0x4043e220, 0x0d01: 0x4043e420, 0x0d02: 0x4043e620, 0x0d03: 0x4043e820,
+-	0x0d04: 0x4043ea20, 0x0d06: 0xc06c0341, 0x0d07: 0x4043f220,
+-	0x0d08: 0x4043f420, 0x0d0a: 0xc0710311, 0x0d0b: 0x4043f820,
+-	0x0d0c: 0x4043fa20, 0x0d0d: 0x820921fe,
+-	0x0d15: 0x4043fe20, 0x0d16: 0x40440020,
+-	0x0d1e: 0x4043d620,
+-	0x0d20: 0x40437e20, 0x0d21: 0x40438220, 0x0d22: 0x4043ec20, 0x0d23: 0x4043ee20,
+-	0x0d26: 0xe0000182, 0x0d27: 0xe0000213,
+-	0x0d28: 0xe000032e, 0x0d29: 0xe0000408, 0x0d2a: 0xe00004dd, 0x0d2b: 0xe00005a7,
+-	0x0d2c: 0xe0000672, 0x0d2d: 0xe000071a, 0x0d2e: 0xe00007c6, 0x0d2f: 0xe000086b,
+-	0x0d31: 0x4043da20, 0x0d32: 0x4043dc20,
+-	// Block 0x35, offset 0xd40
+-	0x0d42: 0xa000f302, 0x0d43: 0xa000f402,
+-	0x0d45: 0x40440220, 0x0d46: 0x40440420, 0x0d47: 0x40440620,
+-	0x0d48: 0x40440820, 0x0d49: 0x40440a20, 0x0d4a: 0x40440c20, 0x0d4b: 0x40440e20,
+-	0x0d4c: 0x40441220, 0x0d4e: 0x40441620, 0x0d4f: 0x40441820,
+-	0x0d50: 0x40441a20, 0x0d52: 0x40441c20, 0x0d53: 0x40441e20,
+-	0x0d54: 0x40442020, 0x0d55: 0x40442220, 0x0d56: 0x40442420, 0x0d57: 0x40442620,
+-	0x0d58: 0x40442820, 0x0d59: 0x40442a20, 0x0d5a: 0x40442c20, 0x0d5b: 0x40442e20,
+-	0x0d5c: 0x40443020, 0x0d5d: 0x40443220, 0x0d5e: 0x40443420, 0x0d5f: 0x40443620,
+-	0x0d60: 0x40443820, 0x0d61: 0x40443a20, 0x0d62: 0x40443c20, 0x0d63: 0x40443e20,
+-	0x0d64: 0x40444020, 0x0d65: 0x40444220, 0x0d66: 0x40444420, 0x0d67: 0x40444620,
+-	0x0d68: 0x40444820, 0x0d69: 0x40444a20, 0x0d6a: 0x40444c20, 0x0d6b: 0x40444e20,
+-	0x0d6c: 0x40445020, 0x0d6d: 0x40445220, 0x0d6e: 0x40445420, 0x0d6f: 0x40445620,
+-	0x0d70: 0x40445820, 0x0d71: 0x40446a20, 0x0d72: 0x40445a20, 0x0d73: 0x40446620,
+-	0x0d74: 0x40446820, 0x0d75: 0x40445c20, 0x0d76: 0x40445e20, 0x0d77: 0x40446020,
+-	0x0d78: 0x40446220, 0x0d79: 0x40446420, 0x0d7a: 0x40446c20,
+-	0x0d7d: 0x40446e20, 0x0d7e: 0x40447020, 0x0d7f: 0x40447220,
+-	// Block 0x36, offset 0xd80
+-	0x0d80: 0x40447420, 0x0d81: 0x40447620, 0x0d82: 0x40447820, 0x0d83: 0x40447a20,
+-	0x0d84: 0x40447c20, 0x0d86: 0xc07303b1, 0x0d87: 0xc0760401,
+-	0x0d88: 0x40448620, 0x0d8a: 0x40448820, 0x0d8b: 0x40448a20,
+-	0x0d8c: 0x40448c20, 0x0d8d: 0x82092248, 0x0d8e: 0xe000186c,
+-	0x0d97: 0x40448e20,
+-	0x0da0: 0x40441020, 0x0da1: 0x40441420, 0x0da2: 0x40447e20, 0x0da3: 0x40448020,
+-	0x0da6: 0xe0000185, 0x0da7: 0xe0000216,
+-	0x0da8: 0xe0000331, 0x0da9: 0xe000040b, 0x0daa: 0xe00004e0, 0x0dab: 0xe00005aa,
+-	0x0dac: 0xe0000675, 0x0dad: 0xe000071d, 0x0dae: 0xe00007c9, 0x0daf: 0xe000086e,
+-	0x0db0: 0x40285a20, 0x0db1: 0x40285c20, 0x0db2: 0x40285e20, 0x0db3: 0x40286020,
+-	0x0db4: 0x40286220, 0x0db5: 0x40286420,
+-	0x0db9: 0x40074e20, 0x0dba: 0xe0001866, 0x0dbb: 0xe0001869,
+-	0x0dbc: 0xe000186f, 0x0dbd: 0xe0001872, 0x0dbe: 0xe0001875, 0x0dbf: 0xe0001863,
+-	// Block 0x37, offset 0xdc0
+-	0x0dc2: 0xa000f302, 0x0dc3: 0xa000f402,
+-	0x0dc5: 0x40449220, 0x0dc6: 0x40449420, 0x0dc7: 0x40449620,
+-	0x0dc8: 0x40449820, 0x0dc9: 0x40449a20, 0x0dca: 0x40449c20, 0x0dcb: 0x40449e20,
+-	0x0dcc: 0x4044a020, 0x0dcd: 0x4044a220, 0x0dce: 0x4044a420, 0x0dcf: 0x4044a620,
+-	0x0dd0: 0x4044a820, 0x0dd1: 0x4044aa20, 0x0dd2: 0x4044ac20, 0x0dd3: 0x4044ae20,
+-	0x0dd4: 0x4044b020, 0x0dd5: 0x4044b220, 0x0dd6: 0x4044b420,
+-	0x0dda: 0x4044b620, 0x0ddb: 0x4044b820,
+-	0x0ddc: 0x4044ba20, 0x0ddd: 0x4044bc20, 0x0dde: 0x4044be20, 0x0ddf: 0x4044c020,
+-	0x0de0: 0x4044c220, 0x0de1: 0x4044c420, 0x0de2: 0x4044c620, 0x0de3: 0x4044c820,
+-	0x0de4: 0x4044ca20, 0x0de5: 0x4044cc20, 0x0de6: 0x4044ce20, 0x0de7: 0x4044d020,
+-	0x0de8: 0x4044d220, 0x0de9: 0x4044d420, 0x0dea: 0x4044d620, 0x0deb: 0x4044d820,
+-	0x0dec: 0x4044da20, 0x0ded: 0x4044dc20, 0x0dee: 0x4044de20, 0x0def: 0x4044e020,
+-	0x0df0: 0x4044e220, 0x0df1: 0x4044e420, 0x0df3: 0x4044e620,
+-	0x0df4: 0x4044e820, 0x0df5: 0x4044ea20, 0x0df6: 0x4044ec20, 0x0df7: 0x4044ee20,
+-	0x0df8: 0x4044f020, 0x0df9: 0x4044f220, 0x0dfa: 0x4044f420, 0x0dfb: 0x4044f620,
+-	0x0dfd: 0x4044f820,
+-	// Block 0x38, offset 0xe00
+-	0x0e00: 0x4044fa20, 0x0e01: 0x4044fc20, 0x0e02: 0x4044fe20, 0x0e03: 0x40450020,
+-	0x0e04: 0x40450220, 0x0e05: 0x40450420, 0x0e06: 0x40450620,
+-	0x0e0a: 0x82092295,
+-	0x0e0f: 0x40450820,
+-	0x0e10: 0x40450a20, 0x0e11: 0x40450c20, 0x0e12: 0x40450e20, 0x0e13: 0x40451020,
+-	0x0e14: 0x40451220, 0x0e16: 0x40451420,
+-	0x0e18: 0x40451620, 0x0e19: 0xc0780431, 0x0e1a: 0x40452020, 0x0e1b: 0x40452220,
+-	0x0e1c: 0xc07d04b1, 0x0e1d: 0x40452620, 0x0e1e: 0x40452820, 0x0e1f: 0x40451a20,
+-	0x0e32: 0x40451820, 0x0e33: 0x40451c20,
+-	0x0e34: 0x40057620,
+-	// Block 0x39, offset 0xe40
+-	0x0e41: 0x40491020, 0x0e42: 0x40491220, 0x0e43: 0x40491420,
+-	0x0e44: 0x40491620, 0x0e45: 0x40491820, 0x0e46: 0x40491a20, 0x0e47: 0x40491c20,
+-	0x0e48: 0x40491e20, 0x0e49: 0x40492020, 0x0e4a: 0x40492220, 0x0e4b: 0x40492420,
+-	0x0e4c: 0x40492620, 0x0e4d: 0x40492820, 0x0e4e: 0x40492a20, 0x0e4f: 0x40492c20,
+-	0x0e50: 0x40492e20, 0x0e51: 0x40493020, 0x0e52: 0x40493220, 0x0e53: 0x40493420,
+-	0x0e54: 0x40493620, 0x0e55: 0x40493820, 0x0e56: 0x40493a20, 0x0e57: 0x40493c20,
+-	0x0e58: 0x40493e20, 0x0e59: 0x40494020, 0x0e5a: 0x40494220, 0x0e5b: 0x40494420,
+-	0x0e5c: 0x40494620, 0x0e5d: 0x40494820, 0x0e5e: 0x40494a20, 0x0e5f: 0x40494c20,
+-	0x0e60: 0x40494e20, 0x0e61: 0x40495020, 0x0e62: 0x40495220, 0x0e63: 0x40495420,
+-	0x0e64: 0x40495620, 0x0e65: 0x40495820, 0x0e66: 0x40495a20, 0x0e67: 0x40495c20,
+-	0x0e68: 0x40495e20, 0x0e69: 0x40496020, 0x0e6a: 0x40496220, 0x0e6b: 0x40496420,
+-	0x0e6c: 0x40496620, 0x0e6d: 0x40496820, 0x0e6e: 0x40496a20, 0x0e6f: 0x40496c20,
+-	0x0e70: 0x40496e20, 0x0e71: 0x40497020, 0x0e72: 0x40497220, 0x0e73: 0x40497420,
+-	0x0e74: 0x40497620, 0x0e75: 0x40497820, 0x0e76: 0x40497a20, 0x0e77: 0x40497c20,
+-	0x0e78: 0x826724bf, 0x0e79: 0x826724c0, 0x0e7a: 0x820924c1,
+-	0x0e7f: 0x4027f420,
+-	// Block 0x3a, offset 0xe80
+-	0x0e80: 0xc07f04e1, 0x0e81: 0xc0ae04e1, 0x0e82: 0xc0dd04e1, 0x0e83: 0xc10c04e1,
+-	0x0e84: 0xc13b04e1, 0x0e85: 0x40498e20, 0x0e86: 0x4027b820, 0x0e87: 0xa000ff02,
+-	0x0e88: 0xa6b10002, 0x0e89: 0xa6b10102, 0x0e8a: 0xa6b10202, 0x0e8b: 0xa6b10302,
+-	0x0e8c: 0xa0010402, 0x0e8d: 0xc16a0511, 0x0e8e: 0xa000fe02, 0x0e8f: 0x40057820,
+-	0x0e90: 0xe000019a, 0x0e91: 0xe000022e, 0x0e92: 0xe0000346, 0x0e93: 0xe0000420,
+-	0x0e94: 0xe00004f5, 0x0e95: 0xe00005bf, 0x0e96: 0xe000068a, 0x0e97: 0xe0000732,
+-	0x0e98: 0xe00007de, 0x0e99: 0xe0000883, 0x0e9a: 0x40057a20, 0x0e9b: 0x40057c20,
+-	// Block 0x3b, offset 0xec0
+-	0x0ec1: 0x40499220, 0x0ec2: 0x40499420,
+-	0x0ec4: 0x40499620, 0x0ec7: 0x40499820,
+-	0x0ec8: 0x40499a20, 0x0eca: 0x40499e20,
+-	0x0ecd: 0x4049a220,
+-	0x0ed4: 0x4049a420, 0x0ed5: 0x4049a620, 0x0ed6: 0x4049a820, 0x0ed7: 0x4049aa20,
+-	0x0ed9: 0x4049ac20, 0x0eda: 0x4049ae20, 0x0edb: 0x4049b020,
+-	0x0edc: 0x4049b220, 0x0edd: 0x4049b420, 0x0ede: 0x4049b620, 0x0edf: 0x4049b820,
+-	0x0ee1: 0x4049ba20, 0x0ee2: 0x4049bc20, 0x0ee3: 0x4049be20,
+-	0x0ee5: 0x4049c020, 0x0ee7: 0x4049c220,
+-	0x0eea: 0x40499c20, 0x0eeb: 0x4049c420,
+-	0x0eed: 0x4049c620, 0x0eee: 0x4049c820, 0x0eef: 0x4049ca20,
+-	0x0ef0: 0x4049cc20, 0x0ef1: 0x4049ce20, 0x0ef2: 0x4049d020, 0x0ef3: 0x4049d220,
+-	0x0ef4: 0x4049d420, 0x0ef5: 0x4049d620, 0x0ef6: 0x4049d820, 0x0ef7: 0x4049da20,
+-	0x0ef8: 0x827624ee, 0x0ef9: 0x827624ef, 0x0efb: 0x4049e020,
+-	0x0efc: 0x4049e220, 0x0efd: 0x4049e420,
+-	// Block 0x3c, offset 0xf00
+-	0x0f00: 0xc16c0541, 0x0f01: 0xc18c0541, 0x0f02: 0xc1ac0541, 0x0f03: 0xc1cc0541,
+-	0x0f04: 0xc1ec0541, 0x0f06: 0x4027ba20,
+-	0x0f08: 0xa7a10602, 0x0f09: 0xa7a10702, 0x0f0a: 0xa7a10802, 0x0f0b: 0xa7a10902,
+-	0x0f0c: 0xa0010a02, 0x0f0d: 0xc20c0641,
+-	0x0f10: 0xe000019d, 0x0f11: 0xe0000231, 0x0f12: 0xe0000349, 0x0f13: 0xe0000423,
+-	0x0f14: 0xe00004f8, 0x0f15: 0xe00005c2, 0x0f16: 0xe000068d, 0x0f17: 0xe0000735,
+-	0x0f18: 0xe00007e1, 0x0f19: 0xe0000886,
+-	0x0f1c: 0xf0000404, 0x0f1d: 0xf0000404, 0x0f1e: 0x40499020, 0x0f1f: 0x4049a020,
+-	// Block 0x3d, offset 0xf40
+-	0x0f40: 0xe000201a, 0x0f41: 0x40075e20, 0x0f42: 0x40076020, 0x0f43: 0x40076220,
+-	0x0f44: 0x40058220, 0x0f45: 0x40058420, 0x0f46: 0x40058620, 0x0f47: 0x40058820,
+-	0x0f48: 0x40058a20, 0x0f49: 0x40058c20, 0x0f4a: 0x40058e20, 0x0f4b: 0x40059420,
+-	0x0f4c: 0x0005949b, 0x0f4d: 0x40059620, 0x0f4e: 0x40059820, 0x0f4f: 0x40059a20,
+-	0x0f50: 0x40059c20, 0x0f51: 0x40059e20, 0x0f52: 0x4005a020, 0x0f53: 0x40076420,
+-	0x0f54: 0x4002aa20, 0x0f55: 0x40076620, 0x0f56: 0x40076820, 0x0f57: 0x40076a20,
+-	0x0f58: 0xadc00000, 0x0f59: 0xadc00000, 0x0f5a: 0x40076c20, 0x0f5b: 0x40076e20,
+-	0x0f5c: 0x40077020, 0x0f5d: 0x40077220, 0x0f5e: 0x40077420, 0x0f5f: 0x40077620,
+-	0x0f60: 0xe00001a0, 0x0f61: 0xe0000234, 0x0f62: 0xe000034c, 0x0f63: 0xe0000426,
+-	0x0f64: 0xe00004fb, 0x0f65: 0xe00005c5, 0x0f66: 0xe0000690, 0x0f67: 0xe0000738,
+-	0x0f68: 0xe00007e4, 0x0f69: 0xe0000889, 0x0f6a: 0xe0000237, 0x0f6b: 0xe000034f,
+-	0x0f6c: 0xe0000429, 0x0f6d: 0xe00004fe, 0x0f6e: 0xe00005c8, 0x0f6f: 0xe0000693,
+-	0x0f70: 0xe000073b, 0x0f71: 0xe00007e7, 0x0f72: 0xe000088c, 0x0f73: 0xe00001a3,
+-	0x0f74: 0x40077820, 0x0f75: 0xadc00000, 0x0f76: 0x40077a20, 0x0f77: 0xadc00000,
+-	0x0f78: 0x40077c20, 0x0f79: 0xad810e02, 0x0f7a: 0x40040020, 0x0f7b: 0x40040220,
+-	0x0f7c: 0x40040420, 0x0f7d: 0x40040620, 0x0f7e: 0xa0000000, 0x0f7f: 0xa0000000,
+-	// Block 0x3e, offset 0xf80
+-	0x0f80: 0x404a7620, 0x0f81: 0x404a7c20, 0x0f82: 0x404a8020, 0x0f83: 0xe0001fe4,
+-	0x0f84: 0x404a8420, 0x0f85: 0x404a8820, 0x0f86: 0x404a8c20, 0x0f87: 0x404a9020,
+-	0x0f89: 0x404a9420, 0x0f8a: 0x404a9820, 0x0f8b: 0x404a9c20,
+-	0x0f8c: 0x404aa020, 0x0f8d: 0xe0001fea, 0x0f8e: 0x404aa420, 0x0f8f: 0x404aa820,
+-	0x0f90: 0x404aac20, 0x0f91: 0x404ab020, 0x0f92: 0xe0001ff0, 0x0f93: 0x404ab420,
+-	0x0f94: 0x404ab820, 0x0f95: 0x404abc20, 0x0f96: 0x404ac020, 0x0f97: 0xe0001ff6,
+-	0x0f98: 0x404ac420, 0x0f99: 0x404ac820, 0x0f9a: 0x404acc20, 0x0f9b: 0x404ad020,
+-	0x0f9c: 0xe0001ffc, 0x0f9d: 0x404ad420, 0x0f9e: 0x404ad820, 0x0f9f: 0x404adc20,
+-	0x0fa0: 0x404ae020, 0x0fa1: 0x404ae420, 0x0fa2: 0x404ae820, 0x0fa3: 0x404aee20,
+-	0x0fa4: 0x404af220, 0x0fa5: 0x404af620, 0x0fa6: 0x404afa20, 0x0fa7: 0x404afe20,
+-	0x0fa8: 0x404b0220, 0x0fa9: 0xe0001fde, 0x0faa: 0xe0002008, 0x0fab: 0x404a7a20,
+-	0x0fac: 0x404aec20,
+-	0x0fb1: 0xc30f0751, 0x0fb2: 0x8282258c, 0x0fb3: 0x8281258d,
+-	0x0fb4: 0x82842590, 0x0fb5: 0x82812591, 0x0fb6: 0x404b2420, 0x0fb7: 0x404b2620,
+-	0x0fb8: 0x404b2820, 0x0fb9: 0x404b2a20, 0x0fba: 0x82822596, 0x0fbb: 0x82822597,
+-	0x0fbc: 0x82822598, 0x0fbd: 0x82822599, 0x0fbe: 0xa000f302, 0x0fbf: 0xa000f402,
+-	// Block 0x3f, offset 0xfc0
+-	0x0fc0: 0x8282258e, 0x0fc1: 0x8281258f, 0x0fc2: 0xae600000, 0x0fc3: 0xae600000,
+-	0x0fc4: 0x8209259a, 0x0fc5: 0x4005a220, 0x0fc6: 0xae600000, 0x0fc7: 0xae600000,
+-	0x0fc8: 0x404b0620, 0x0fc9: 0x404b0a20, 0x0fca: 0x404b1220, 0x0fcb: 0x404b1420,
+-	0x0fcc: 0x404b0e20, 0x0fcd: 0x404b0820, 0x0fce: 0x404b0c20, 0x0fcf: 0x404b1020,
+-	0x0fd0: 0x404a7820, 0x0fd1: 0x404a7e20, 0x0fd2: 0x404a8220, 0x0fd3: 0xe0001fe7,
+-	0x0fd4: 0x404a8620, 0x0fd5: 0x404a8a20, 0x0fd6: 0x404a8e20, 0x0fd7: 0x404a9220,
+-	0x0fd9: 0x404a9620, 0x0fda: 0x404a9a20, 0x0fdb: 0x404a9e20,
+-	0x0fdc: 0x404aa220, 0x0fdd: 0xe0001fed, 0x0fde: 0x404aa620, 0x0fdf: 0x404aaa20,
+-	0x0fe0: 0x404aae20, 0x0fe1: 0x404ab220, 0x0fe2: 0xe0001ff3, 0x0fe3: 0x404ab620,
+-	0x0fe4: 0x404aba20, 0x0fe5: 0x404abe20, 0x0fe6: 0x404ac220, 0x0fe7: 0xe0001ff9,
+-	0x0fe8: 0x404ac620, 0x0fe9: 0x404aca20, 0x0fea: 0x404ace20, 0x0feb: 0x404ad220,
+-	0x0fec: 0xe0001fff, 0x0fed: 0x404ad620, 0x0fee: 0x404ada20, 0x0fef: 0x404ade20,
+-	0x0ff0: 0x404ae220, 0x0ff1: 0x404ae620, 0x0ff2: 0xc30306a1, 0x0ff3: 0xc30906a1,
+-	0x0ff4: 0x404af420, 0x0ff5: 0x404af820, 0x0ff6: 0x404afc20, 0x0ff7: 0x404b0020,
+-	0x0ff8: 0x404b0420, 0x0ff9: 0xe0001fe1, 0x0ffa: 0xe0002002, 0x0ffb: 0xe0002005,
+-	0x0ffc: 0xe000200b, 0x0ffe: 0x40077e20, 0x0fff: 0x40078020,
+-	// Block 0x40, offset 0x1000
+-	0x1000: 0x40078220, 0x1001: 0x40078420, 0x1002: 0x40078620, 0x1003: 0x40078820,
+-	0x1004: 0x40078a20, 0x1005: 0x40078c20, 0x1006: 0xadc00000, 0x1007: 0x40078e20,
+-	0x1008: 0x40079020, 0x1009: 0x40079220, 0x100a: 0x40079420, 0x100b: 0x40079620,
+-	0x100c: 0x40079820, 0x100e: 0x40079a20, 0x100f: 0x40079c20,
+-	0x1010: 0x40059020, 0x1011: 0x40059220, 0x1012: 0x4005a420, 0x1013: 0x4005a620,
+-	0x1014: 0x4005a820, 0x1015: 0x40079e20, 0x1016: 0x4007a020, 0x1017: 0x4007a220,
+-	0x1018: 0x4007a420, 0x1019: 0x4005aa20, 0x101a: 0x4005ac20,
+-	// Block 0x41, offset 0x1040
+-	0x1040: 0x404e1420, 0x1041: 0x404e1820, 0x1042: 0x404e1c20, 0x1043: 0x404e2220,
+-	0x1044: 0x404e2420, 0x1045: 0x404e2820, 0x1046: 0x404e2e20, 0x1047: 0x404e3220,
+-	0x1048: 0x404e3a20, 0x1049: 0x404e4220, 0x104a: 0x404e4820, 0x104b: 0x404e4a20,
+-	0x104c: 0x404e4e20, 0x104d: 0x404e5220, 0x104e: 0x404e5620, 0x104f: 0x404e5a20,
+-	0x1050: 0x404e5e20, 0x1051: 0x404e6020, 0x1052: 0x404e6220, 0x1053: 0x404e6620,
+-	0x1054: 0x404e6a20, 0x1055: 0x404e7220, 0x1056: 0x404e7420, 0x1057: 0x404e7e20,
+-	0x1058: 0x404e8220, 0x1059: 0x404e8420, 0x105a: 0x404e8820, 0x105b: 0x404e8c20,
+-	0x105c: 0x404e9420, 0x105d: 0x404e9820, 0x105e: 0x404ea620, 0x105f: 0x404eaa20,
+-	0x1060: 0x404eb620, 0x1061: 0x404ec220, 0x1062: 0x404ec420, 0x1063: 0x404ec620,
+-	0x1064: 0x404ec820, 0x1065: 0xc31307b1, 0x1066: 0x404ecc20, 0x1067: 0x404ed620,
+-	0x1068: 0x404ed820, 0x1069: 0x404eda20, 0x106a: 0x404edc20, 0x106b: 0x004ede84,
+-	0x106c: 0x404ede20, 0x106d: 0x404ee620, 0x106e: 0x404eea20, 0x106f: 0x404eee20,
+-	0x1070: 0x404ef420, 0x1071: 0x404efe20, 0x1072: 0x404f0620, 0x1073: 0x404eec20,
+-	0x1074: 0x404f0a20, 0x1075: 0x404f0220, 0x1076: 0xa000f302, 0x1077: 0xa0711202,
+-	0x1078: 0xa000f402, 0x1079: 0x8209278a, 0x107a: 0x8209278b, 0x107b: 0x404e8a20,
+-	0x107c: 0x404e9220, 0x107d: 0x404e9a20, 0x107e: 0x404eb020, 0x107f: 0xe000201e,
+-	// Block 0x42, offset 0x1080
+-	0x1080: 0xe00001ac, 0x1081: 0xe0000240, 0x1082: 0xe0000358, 0x1083: 0xe0000432,
+-	0x1084: 0xe0000507, 0x1085: 0xe00005d1, 0x1086: 0xe000069c, 0x1087: 0xe0000744,
+-	0x1088: 0xe00007f0, 0x1089: 0xe0000895, 0x108a: 0x40032220, 0x108b: 0x40032420,
+-	0x108c: 0x4005b420, 0x108d: 0x4005b620, 0x108e: 0x4005b820, 0x108f: 0x4005ba20,
+-	0x1090: 0x404ea020, 0x1091: 0x404ea220, 0x1092: 0x404ece20, 0x1093: 0x404ed020,
+-	0x1094: 0x404ed220, 0x1095: 0x404ed420, 0x1096: 0x404ef620, 0x1097: 0x404ef820,
+-	0x1098: 0x404efa20, 0x1099: 0x404efc20, 0x109a: 0x404e2620, 0x109b: 0x404e3c20,
+-	0x109c: 0x404eb820, 0x109d: 0x404eba20, 0x109e: 0x404e7020, 0x109f: 0x404e8620,
+-	0x10a0: 0x404e9620, 0x10a1: 0x404e4020, 0x10a2: 0x404f0c20, 0x10a3: 0x404f1820,
+-	0x10a4: 0x404f1a20, 0x10a5: 0x404ea420, 0x10a6: 0x404ec020, 0x10a7: 0x404f0e20,
+-	0x10a8: 0x404f1020, 0x10a9: 0x404f1c20, 0x10aa: 0x404f1e20, 0x10ab: 0x404f2020,
+-	0x10ac: 0x404f2220, 0x10ad: 0x404f2420, 0x10ae: 0x404e5c20, 0x10af: 0x404ebc20,
+-	0x10b0: 0x404ebe20, 0x10b1: 0x404ee820, 0x10b2: 0x404ee220, 0x10b3: 0x404ef020,
+-	0x10b4: 0x404ef220, 0x10b5: 0x404e1620, 0x10b6: 0x404e1a20, 0x10b7: 0x404e1e20,
+-	0x10b8: 0x404e2a20, 0x10b9: 0x404e3620, 0x10ba: 0x404e4420, 0x10bb: 0x404e6420,
+-	0x10bc: 0x404e6c20, 0x10bd: 0x404e7620, 0x10be: 0x404e7820, 0x10bf: 0x404e8020,
+-	// Block 0x43, offset 0x10c0
+-	0x10c0: 0x404e9e20, 0x10c1: 0x404eac20, 0x10c2: 0x404e9c20, 0x10c3: 0x404ee020,
+-	0x10c4: 0x404f0020, 0x10c5: 0x404f0420, 0x10c6: 0x404f1220, 0x10c7: 0x404f2620,
+-	0x10c8: 0x404f2a20, 0x10c9: 0x404f2e20, 0x10ca: 0x404f3020, 0x10cb: 0x404f2820,
+-	0x10cc: 0x404f2c20, 0x10cd: 0xadc11302, 0x10ce: 0x404e7c20, 0x10cf: 0x404f3220,
+-	0x10d0: 0xe00001af, 0x10d1: 0xe0000243, 0x10d2: 0xe000035b, 0x10d3: 0xe0000435,
+-	0x10d4: 0xe000050a, 0x10d5: 0xe00005d4, 0x10d6: 0xe000069f, 0x10d7: 0xe0000747,
+-	0x10d8: 0xe00007f3, 0x10d9: 0xe0000898, 0x10da: 0x404f3420, 0x10db: 0x404f3620,
+-	0x10dc: 0x404ee420, 0x10dd: 0x404f0820, 0x10de: 0x4007a820, 0x10df: 0x4007aa20,
+-	0x10e0: 0x00379888, 0x10e1: 0x00379c88, 0x10e2: 0x0037a088, 0x10e3: 0x0037a488,
+-	0x10e4: 0x0037a888, 0x10e5: 0x0037ac88, 0x10e6: 0x0037b088, 0x10e7: 0x0037b888,
+-	0x10e8: 0x0037bc88, 0x10e9: 0x0037c088, 0x10ea: 0x0037c488, 0x10eb: 0x0037c888,
+-	0x10ec: 0x0037cc88, 0x10ed: 0x0037d488, 0x10ee: 0x0037d888, 0x10ef: 0x0037dc88,
+-	0x10f0: 0x0037e088, 0x10f1: 0x0037e488, 0x10f2: 0x0037e888, 0x10f3: 0x0037f088,
+-	0x10f4: 0x0037f488, 0x10f5: 0x0037f888, 0x10f6: 0x0037fc88, 0x10f7: 0x00380088,
+-	0x10f8: 0x00380488, 0x10f9: 0x00380888, 0x10fa: 0x00380c88, 0x10fb: 0x00381088,
+-	0x10fc: 0x00381488, 0x10fd: 0x00381888, 0x10fe: 0x00381c88, 0x10ff: 0x00382488,
+-	// Block 0x44, offset 0x1100
+-	0x1100: 0x00382888, 0x1101: 0x0037b488, 0x1102: 0x0037d088, 0x1103: 0x0037ec88,
+-	0x1104: 0x00382088, 0x1105: 0x00382c88, 0x1107: 0x00383288,
+-	0x110d: 0x00383c88,
+-	0x1110: 0x40379620, 0x1111: 0x40379a20, 0x1112: 0x40379e20, 0x1113: 0x4037a220,
+-	0x1114: 0x4037a620, 0x1115: 0x4037aa20, 0x1116: 0x4037ae20, 0x1117: 0x4037b620,
+-	0x1118: 0x4037ba20, 0x1119: 0x4037be20, 0x111a: 0x4037c220, 0x111b: 0x4037c620,
+-	0x111c: 0x4037ca20, 0x111d: 0x4037d220, 0x111e: 0x4037d620, 0x111f: 0x4037da20,
+-	0x1120: 0x4037de20, 0x1121: 0x4037e220, 0x1122: 0x4037e620, 0x1123: 0x4037ee20,
+-	0x1124: 0x4037f220, 0x1125: 0x4037f620, 0x1126: 0x4037fa20, 0x1127: 0x4037fe20,
+-	0x1128: 0x40380220, 0x1129: 0x40380620, 0x112a: 0x40380a20, 0x112b: 0x40380e20,
+-	0x112c: 0x40381220, 0x112d: 0x40381620, 0x112e: 0x40381a20, 0x112f: 0x40382220,
+-	0x1130: 0x40382620, 0x1131: 0x4037b220, 0x1132: 0x4037ce20, 0x1133: 0x4037ea20,
+-	0x1134: 0x40381e20, 0x1135: 0x40382a20, 0x1136: 0x40382e20, 0x1137: 0x40383020,
+-	0x1138: 0x40383420, 0x1139: 0x40383620, 0x113a: 0x40383820, 0x113b: 0x40036020,
+-	0x113c: 0x0037ca94, 0x113d: 0x40383a20, 0x113e: 0x40383e20, 0x113f: 0x40384020,
+-	// Block 0x45, offset 0x1140
+-	0x1140: 0x4062ac20, 0x1141: 0x4062ae20, 0x1142: 0x4062b020, 0x1143: 0x4062b220,
+-	0x1144: 0x4062b420, 0x1145: 0x4062b620, 0x1146: 0x4062b820, 0x1147: 0x4062ba20,
+-	0x1148: 0x4062bc20, 0x1149: 0x4062be20, 0x114a: 0x4062c020, 0x114b: 0x4062c220,
+-	0x114c: 0x4062c420, 0x114d: 0x4062c620, 0x114e: 0x4062c820, 0x114f: 0x4062ca20,
+-	0x1150: 0x4062cc20, 0x1151: 0x4062ce20, 0x1152: 0x4062d020, 0x1153: 0x4062d220,
+-	0x1154: 0x4062d420, 0x1155: 0x4062d620, 0x1156: 0x4062d820, 0x1157: 0x4062da20,
+-	0x1158: 0x4062dc20, 0x1159: 0x4062de20, 0x115a: 0x4062e020, 0x115b: 0x4062e220,
+-	0x115c: 0x4062e420, 0x115d: 0x4062e620, 0x115e: 0x4062e820, 0x115f: 0x4062ea20,
+-	0x1160: 0x4062ec20, 0x1161: 0x4062ee20, 0x1162: 0x4062f020, 0x1163: 0x4062f220,
+-	0x1164: 0x4062f420, 0x1165: 0x4062f620, 0x1166: 0x4062f820, 0x1167: 0x4062fa20,
+-	0x1168: 0x4062fc20, 0x1169: 0x4062fe20, 0x116a: 0x40630020, 0x116b: 0x40630220,
+-	0x116c: 0x40630420, 0x116d: 0x40630620, 0x116e: 0x40630820, 0x116f: 0x40630a20,
+-	0x1170: 0x40630c20, 0x1171: 0x40630e20, 0x1172: 0x40631020, 0x1173: 0x40631220,
+-	0x1174: 0x40631420, 0x1175: 0x40631620, 0x1176: 0x40631820, 0x1177: 0x40631a20,
+-	0x1178: 0x40631c20, 0x1179: 0x40631e20, 0x117a: 0x40632020, 0x117b: 0x40632220,
+-	0x117c: 0x40632420, 0x117d: 0x40632620, 0x117e: 0x40632820, 0x117f: 0x40632a20,
+-	// Block 0x46, offset 0x1180
+-	0x1180: 0x40632c20, 0x1181: 0x40632e20, 0x1182: 0x40633020, 0x1183: 0x40633220,
+-	0x1184: 0x40633420, 0x1185: 0x40633620, 0x1186: 0x40633820, 0x1187: 0x40633a20,
+-	0x1188: 0x40633c20, 0x1189: 0x40633e20, 0x118a: 0x40634020, 0x118b: 0x40634220,
+-	0x118c: 0x40634420, 0x118d: 0x40634620, 0x118e: 0x40634820, 0x118f: 0x40634a20,
+-	0x1190: 0x40634c20, 0x1191: 0x40634e20, 0x1192: 0x40635020, 0x1193: 0x40635220,
+-	0x1194: 0x40635420, 0x1195: 0x40635620, 0x1196: 0x40635820, 0x1197: 0x40635a20,
+-	0x1198: 0x40635c20, 0x1199: 0x40635e20, 0x119a: 0x40636020, 0x119b: 0x40636220,
+-	0x119c: 0x40636420, 0x119d: 0x40636620, 0x119e: 0x40636820, 0x119f: 0x4063a420,
+-	0x11a0: 0x4063a620, 0x11a1: 0x4063a820, 0x11a2: 0x4063aa20, 0x11a3: 0x4063ac20,
+-	0x11a4: 0x4063ae20, 0x11a5: 0x4063b020, 0x11a6: 0x4063b220, 0x11a7: 0x4063b420,
+-	0x11a8: 0x4063b620, 0x11a9: 0x4063b820, 0x11aa: 0x4063ba20, 0x11ab: 0x4063bc20,
+-	0x11ac: 0x4063be20, 0x11ad: 0x4063c020, 0x11ae: 0x4063c220, 0x11af: 0x4063c420,
+-	0x11b0: 0x4063c620, 0x11b1: 0x4063c820, 0x11b2: 0x4063ca20, 0x11b3: 0x4063cc20,
+-	0x11b4: 0x4063ce20, 0x11b5: 0x4063d020, 0x11b6: 0x4063d220, 0x11b7: 0x4063d420,
+-	0x11b8: 0x4063d620, 0x11b9: 0x4063d820, 0x11ba: 0x4063da20, 0x11bb: 0x4063dc20,
+-	0x11bc: 0x4063de20, 0x11bd: 0x4063e020, 0x11be: 0x4063e220, 0x11bf: 0x4063e420,
+-	// Block 0x47, offset 0x11c0
+-	0x11c0: 0x4063e620, 0x11c1: 0x4063e820, 0x11c2: 0x4063ea20, 0x11c3: 0x4063ec20,
+-	0x11c4: 0x4063ee20, 0x11c5: 0x4063f020, 0x11c6: 0x4063f220, 0x11c7: 0x4063f420,
+-	0x11c8: 0x4063f620, 0x11c9: 0x4063f820, 0x11ca: 0x4063fa20, 0x11cb: 0x4063fc20,
+-	0x11cc: 0x4063fe20, 0x11cd: 0x40640020, 0x11ce: 0x40640220, 0x11cf: 0x40640420,
+-	0x11d0: 0x40640620, 0x11d1: 0x40640820, 0x11d2: 0x40640a20, 0x11d3: 0x40640c20,
+-	0x11d4: 0x40640e20, 0x11d5: 0x40641020, 0x11d6: 0x40641220, 0x11d7: 0x40641420,
+-	0x11d8: 0x40641620, 0x11d9: 0x40641820, 0x11da: 0x40641a20, 0x11db: 0x40641c20,
+-	0x11dc: 0x40641e20, 0x11dd: 0x40642020, 0x11de: 0x40642220, 0x11df: 0x40642420,
+-	0x11e0: 0x40642620, 0x11e1: 0x40642820, 0x11e2: 0x40642a20, 0x11e3: 0x40642c20,
+-	0x11e4: 0x40642e20, 0x11e5: 0x40643020, 0x11e6: 0x40643220, 0x11e7: 0x40643420,
+-	0x11e8: 0x40646420, 0x11e9: 0x40646620, 0x11ea: 0x40646820, 0x11eb: 0x40646a20,
+-	0x11ec: 0x40646c20, 0x11ed: 0x40646e20, 0x11ee: 0x40647020, 0x11ef: 0x40647220,
+-	0x11f0: 0x40647420, 0x11f1: 0x40647620, 0x11f2: 0x40647820, 0x11f3: 0x40647a20,
+-	0x11f4: 0x40647c20, 0x11f5: 0x40647e20, 0x11f6: 0x40648020, 0x11f7: 0x40648220,
+-	0x11f8: 0x40648420, 0x11f9: 0x40648620, 0x11fa: 0x40648820, 0x11fb: 0x40648a20,
+-	0x11fc: 0x40648c20, 0x11fd: 0x40648e20, 0x11fe: 0x40649020, 0x11ff: 0x40649220,
+-	// Block 0x48, offset 0x1200
+-	0x1200: 0x40649420, 0x1201: 0x40649620, 0x1202: 0x40649820, 0x1203: 0x40649a20,
+-	0x1204: 0x40649c20, 0x1205: 0x40649e20, 0x1206: 0x4064a020, 0x1207: 0x4064a220,
+-	0x1208: 0x4064a420, 0x1209: 0x4064a620, 0x120a: 0x4064a820, 0x120b: 0x4064aa20,
+-	0x120c: 0x4064ac20, 0x120d: 0x4064ae20, 0x120e: 0x4064b020, 0x120f: 0x4064b220,
+-	0x1210: 0x4064b420, 0x1211: 0x4064b620, 0x1212: 0x4064b820, 0x1213: 0x4064ba20,
+-	0x1214: 0x4064bc20, 0x1215: 0x4064be20, 0x1216: 0x4064c020, 0x1217: 0x4064c220,
+-	0x1218: 0x4064c420, 0x1219: 0x4064c620, 0x121a: 0x4064c820, 0x121b: 0x4064ca20,
+-	0x121c: 0x4064cc20, 0x121d: 0x4064ce20, 0x121e: 0x4064d020, 0x121f: 0x4064d220,
+-	0x1220: 0x4064d420, 0x1221: 0x4064d620, 0x1222: 0x4064d820, 0x1223: 0x4064da20,
+-	0x1224: 0x4064dc20, 0x1225: 0x4064de20, 0x1226: 0x4064e020, 0x1227: 0x4064e220,
+-	0x1228: 0x4064e420, 0x1229: 0x4064e620, 0x122a: 0x4064e820, 0x122b: 0x4064ea20,
+-	0x122c: 0x4064ec20, 0x122d: 0x4064ee20, 0x122e: 0x4064f020, 0x122f: 0x4064f220,
+-	0x1230: 0x4064f420, 0x1231: 0x4064f620, 0x1232: 0x4064f820, 0x1233: 0x4064fa20,
+-	0x1234: 0x4064fc20, 0x1235: 0x4064fe20, 0x1236: 0x40650020, 0x1237: 0x40650220,
+-	0x1238: 0x40650420, 0x1239: 0x40650620, 0x123a: 0x40650820, 0x123b: 0x40650a20,
+-	0x123c: 0x40650c20, 0x123d: 0x40650e20, 0x123e: 0x40651020, 0x123f: 0x40651220,
+-	// Block 0x49, offset 0x1240
+-	0x1240: 0x403c2e20, 0x1241: 0x403c3020, 0x1242: 0x403c3220, 0x1243: 0x403c3420,
+-	0x1244: 0x403c3620, 0x1245: 0x403c3820, 0x1246: 0x403c3a20, 0x1247: 0x403c3c20,
+-	0x1248: 0x403c3e20, 0x1249: 0x403c4020, 0x124a: 0x403c4220, 0x124b: 0x403c4420,
+-	0x124c: 0x403c4620, 0x124d: 0x403c4820, 0x124e: 0x403c4a20, 0x124f: 0x403c4c20,
+-	0x1250: 0x403c5020, 0x1251: 0x403c5220, 0x1252: 0x403c5420, 0x1253: 0x403c5620,
+-	0x1254: 0x403c5820, 0x1255: 0x403c5a20, 0x1256: 0x403c5c20, 0x1257: 0x403c5e20,
+-	0x1258: 0x403c6020, 0x1259: 0x403c6220, 0x125a: 0x403c6420, 0x125b: 0x403c6620,
+-	0x125c: 0x403c6820, 0x125d: 0x403c6a20, 0x125e: 0x403c6c20, 0x125f: 0x403c6e20,
+-	0x1260: 0x403c7a20, 0x1261: 0x403c7c20, 0x1262: 0x403c7e20, 0x1263: 0x403c8020,
+-	0x1264: 0x403c8220, 0x1265: 0x403c8420, 0x1266: 0x403c8620, 0x1267: 0x403c8820,
+-	0x1268: 0x403c8a20, 0x1269: 0x403c8c20, 0x126a: 0x403c8e20, 0x126b: 0x403c9020,
+-	0x126c: 0x403c9220, 0x126d: 0x403c9420, 0x126e: 0x403c9620, 0x126f: 0x403c9820,
+-	0x1270: 0x403c9c20, 0x1271: 0x403c9e20, 0x1272: 0x403ca020, 0x1273: 0x403ca220,
+-	0x1274: 0x403ca420, 0x1275: 0x403ca620, 0x1276: 0x403ca820, 0x1277: 0x403caa20,
+-	0x1278: 0x403cba20, 0x1279: 0x403cbc20, 0x127a: 0x403cbe20, 0x127b: 0x403cc020,
+-	0x127c: 0x403cc220, 0x127d: 0x403cc420, 0x127e: 0x403cc620, 0x127f: 0x403cc820,
+-	// Block 0x4a, offset 0x1280
+-	0x1280: 0x403ccc20, 0x1281: 0x403cce20, 0x1282: 0x403cd020, 0x1283: 0x403cd220,
+-	0x1284: 0x403cd420, 0x1285: 0x403cd620, 0x1286: 0x403cd820, 0x1287: 0x403cda20,
+-	0x1288: 0x403cdc20, 0x128a: 0x403cde20, 0x128b: 0x403ce020,
+-	0x128c: 0x403ce220, 0x128d: 0x403ce420,
+-	0x1290: 0x403ce620, 0x1291: 0x403ce820, 0x1292: 0x403cea20, 0x1293: 0x403cec20,
+-	0x1294: 0x403cee20, 0x1295: 0x403cf020, 0x1296: 0x403cf220,
+-	0x1298: 0x403cf420, 0x129a: 0x403cf620, 0x129b: 0x403cf820,
+-	0x129c: 0x403cfa20, 0x129d: 0x403cfc20,
+-	0x12a0: 0x403cfe20, 0x12a1: 0x403d0020, 0x12a2: 0x403d0220, 0x12a3: 0x403d0420,
+-	0x12a4: 0x403d0620, 0x12a5: 0x403d0820, 0x12a6: 0x403d0a20, 0x12a7: 0x403d0c20,
+-	0x12a8: 0x403d1820, 0x12a9: 0x403d1a20, 0x12aa: 0x403d1c20, 0x12ab: 0x403d1e20,
+-	0x12ac: 0x403d2020, 0x12ad: 0x403d2220, 0x12ae: 0x403d2420, 0x12af: 0x403d2620,
+-	0x12b0: 0x403d2820, 0x12b1: 0x403d2a20, 0x12b2: 0x403d2c20, 0x12b3: 0x403d2e20,
+-	0x12b4: 0x403d3020, 0x12b5: 0x403d3220, 0x12b6: 0x403d3420, 0x12b7: 0x403d3620,
+-	0x12b8: 0x403d3a20, 0x12b9: 0x403d3c20, 0x12ba: 0x403d3e20, 0x12bb: 0x403d4020,
+-	0x12bc: 0x403d4220, 0x12bd: 0x403d4420, 0x12be: 0x403d4620, 0x12bf: 0x403d4820,
+-	// Block 0x4b, offset 0x12c0
+-	0x12c0: 0x403d4c20, 0x12c1: 0x403d4e20, 0x12c2: 0x403d5020, 0x12c3: 0x403d5220,
+-	0x12c4: 0x403d5420, 0x12c5: 0x403d5620, 0x12c6: 0x403d5820, 0x12c7: 0x403d5a20,
+-	0x12c8: 0x403d5c20, 0x12ca: 0x403d5e20, 0x12cb: 0x403d6020,
+-	0x12cc: 0x403d6220, 0x12cd: 0x403d6420,
+-	0x12d0: 0x403d6620, 0x12d1: 0x403d6820, 0x12d2: 0x403d6a20, 0x12d3: 0x403d6c20,
+-	0x12d4: 0x403d6e20, 0x12d5: 0x403d7020, 0x12d6: 0x403d7220, 0x12d7: 0x403d7420,
+-	0x12d8: 0x403d7820, 0x12d9: 0x403d7a20, 0x12da: 0x403d7c20, 0x12db: 0x403d7e20,
+-	0x12dc: 0x403d8020, 0x12dd: 0x403d8220, 0x12de: 0x403d8420, 0x12df: 0x403d8620,
+-	0x12e0: 0x403d8a20, 0x12e1: 0x403d8c20, 0x12e2: 0x403d8e20, 0x12e3: 0x403d9020,
+-	0x12e4: 0x403d9220, 0x12e5: 0x403d9420, 0x12e6: 0x403d9620, 0x12e7: 0x403d9820,
+-	0x12e8: 0x403d9c20, 0x12e9: 0x403d9e20, 0x12ea: 0x403da020, 0x12eb: 0x403da220,
+-	0x12ec: 0x403da420, 0x12ed: 0x403da620, 0x12ee: 0x403da820, 0x12ef: 0x403daa20,
+-	0x12f0: 0x403dac20, 0x12f2: 0x403dae20, 0x12f3: 0x403db020,
+-	0x12f4: 0x403db220, 0x12f5: 0x403db420,
+-	0x12f8: 0x403db620, 0x12f9: 0x403db820, 0x12fa: 0x403dba20, 0x12fb: 0x403dbc20,
+-	0x12fc: 0x403dbe20, 0x12fd: 0x403dc020, 0x12fe: 0x403dc220,
+-	// Block 0x4c, offset 0x1300
+-	0x1300: 0x403dc420, 0x1302: 0x403dc620, 0x1303: 0x403dc820,
+-	0x1304: 0x403dca20, 0x1305: 0x403dcc20,
+-	0x1308: 0x403dce20, 0x1309: 0x403dd020, 0x130a: 0x403dd220, 0x130b: 0x403dd420,
+-	0x130c: 0x403dd620, 0x130d: 0x403dd820, 0x130e: 0x403dda20, 0x130f: 0x403ddc20,
+-	0x1310: 0x403dde20, 0x1311: 0x403de020, 0x1312: 0x403de220, 0x1313: 0x403de420,
+-	0x1314: 0x403de620, 0x1315: 0x403de820, 0x1316: 0x403dea20,
+-	0x1318: 0x403dec20, 0x1319: 0x403dee20, 0x131a: 0x403df020, 0x131b: 0x403df220,
+-	0x131c: 0x403df420, 0x131d: 0x403df620, 0x131e: 0x403df820, 0x131f: 0x403dfa20,
+-	0x1320: 0x403e0a20, 0x1321: 0x403e0c20, 0x1322: 0x403e0e20, 0x1323: 0x403e1020,
+-	0x1324: 0x403e1220, 0x1325: 0x403e1420, 0x1326: 0x403e1620, 0x1327: 0x403e1820,
+-	0x1328: 0x403e1a20, 0x1329: 0x403e1c20, 0x132a: 0x403e1e20, 0x132b: 0x403e2020,
+-	0x132c: 0x403e2220, 0x132d: 0x403e2420, 0x132e: 0x403e2620, 0x132f: 0x403e2820,
+-	0x1330: 0x403e2a20, 0x1331: 0x403e2c20, 0x1332: 0x403e2e20, 0x1333: 0x403e3020,
+-	0x1334: 0x403e3220, 0x1335: 0x403e3420, 0x1336: 0x403e3620, 0x1337: 0x403e3820,
+-	0x1338: 0x403e4820, 0x1339: 0x403e4a20, 0x133a: 0x403e4c20, 0x133b: 0x403e4e20,
+-	0x133c: 0x403e5020, 0x133d: 0x403e5220, 0x133e: 0x403e5420, 0x133f: 0x403e5620,
+-	// Block 0x4d, offset 0x1340
+-	0x1340: 0x403e5a20, 0x1341: 0x403e5c20, 0x1342: 0x403e5e20, 0x1343: 0x403e6020,
+-	0x1344: 0x403e6220, 0x1345: 0x403e6420, 0x1346: 0x403e6620, 0x1347: 0x403e6820,
+-	0x1348: 0x403e6c20, 0x1349: 0x403e6e20, 0x134a: 0x403e7020, 0x134b: 0x403e7220,
+-	0x134c: 0x403e7420, 0x134d: 0x403e7620, 0x134e: 0x403e7820, 0x134f: 0x403e7a20,
+-	0x1350: 0x403e7c20, 0x1352: 0x403e7e20, 0x1353: 0x403e8020,
+-	0x1354: 0x403e8220, 0x1355: 0x403e8420,
+-	0x1358: 0x403e8620, 0x1359: 0x403e8820, 0x135a: 0x403e8a20, 0x135b: 0x403e8c20,
+-	0x135c: 0x403e8e20, 0x135d: 0x403e9020, 0x135e: 0x403e9220, 0x135f: 0x403e9420,
+-	0x1360: 0x403e9e20, 0x1361: 0x403ea020, 0x1362: 0x403ea220, 0x1363: 0x403ea420,
+-	0x1364: 0x403ea620, 0x1365: 0x403ea820, 0x1366: 0x403eaa20, 0x1367: 0x403eac20,
+-	0x1368: 0x403eb020, 0x1369: 0x403eb220, 0x136a: 0x403eb420, 0x136b: 0x403eb620,
+-	0x136c: 0x403eb820, 0x136d: 0x403eba20, 0x136e: 0x403ebc20, 0x136f: 0x403ebe20,
+-	0x1370: 0x403ed020, 0x1371: 0x403ed220, 0x1372: 0x403ed420, 0x1373: 0x403ed620,
+-	0x1374: 0x403ed820, 0x1375: 0x403eda20, 0x1376: 0x403edc20, 0x1377: 0x403ede20,
+-	0x1378: 0x403ee220, 0x1379: 0x403ee420, 0x137a: 0x403ee620, 0x137b: 0x403ee820,
+-	0x137c: 0x403eea20, 0x137d: 0x403eec20, 0x137e: 0x403eee20, 0x137f: 0x403ef020,
+-	// Block 0x4e, offset 0x1380
+-	0x1380: 0x403f0020, 0x1381: 0x403f0220, 0x1382: 0x403f0420, 0x1383: 0x403f0620,
+-	0x1384: 0x403f0820, 0x1385: 0x403f0a20, 0x1386: 0x403f0c20, 0x1387: 0x403f0e20,
+-	0x1388: 0x403f1020, 0x1389: 0x403f1220, 0x138a: 0x403f1420, 0x138b: 0x403f1620,
+-	0x138c: 0x403f1820, 0x138d: 0x403f1a20, 0x138e: 0x403f1c20, 0x138f: 0x403f1e20,
+-	0x1390: 0x403f2820, 0x1391: 0x403f2a20, 0x1392: 0x403f2c20, 0x1393: 0x403f2e20,
+-	0x1394: 0x403f3020, 0x1395: 0x403f3220, 0x1396: 0x403f3420, 0x1397: 0x403f3620,
+-	0x1398: 0x403f4220, 0x1399: 0x403f4420, 0x139a: 0x403f4620,
+-	0x139d: 0xae60ee02, 0x139e: 0xae60ed02, 0x139f: 0xae60ec02,
+-	0x13a0: 0x40036220, 0x13a1: 0x40029c20, 0x13a2: 0x4002ee20, 0x13a3: 0x40029e20,
+-	0x13a4: 0x4002a020, 0x13a5: 0x4002a220, 0x13a6: 0x4002a420, 0x13a7: 0x4002d020,
+-	0x13a8: 0x40036420, 0x13a9: 0xe00001f2, 0x13aa: 0xe000030d, 0x13ab: 0xe00003e7,
+-	0x13ac: 0xe00004c2, 0x13ad: 0xe000058c, 0x13ae: 0xe0000657, 0x13af: 0xe00006ff,
+-	0x13b0: 0xe00007ab, 0x13b1: 0xe0000850, 0x13b2: 0x40286620, 0x13b3: 0x40286820,
+-	0x13b4: 0x40286a20, 0x13b5: 0x40286c20, 0x13b6: 0x40286e20, 0x13b7: 0x40287020,
+-	0x13b8: 0x40287220, 0x13b9: 0x40287420, 0x13ba: 0x40287620, 0x13bb: 0x40287820,
+-	0x13bc: 0x40287a20,
+-	// Block 0x4f, offset 0x13c0
+-	0x13c0: 0x403c7020, 0x13c1: 0x403c7220, 0x13c2: 0x403c7420, 0x13c3: 0x403c7620,
+-	0x13c4: 0x403d0e20, 0x13c5: 0x403d1020, 0x13c6: 0x403d1220, 0x13c7: 0x403d1420,
+-	0x13c8: 0x403f2020, 0x13c9: 0x403f2220, 0x13ca: 0x403f2420, 0x13cb: 0x403f2620,
+-	0x13cc: 0x403f3820, 0x13cd: 0x403f3a20, 0x13ce: 0x403f3c20, 0x13cf: 0x403f3e20,
+-	0x13d0: 0x4006a620, 0x13d1: 0x4006a820, 0x13d2: 0x4006aa20, 0x13d3: 0x4006ac20,
+-	0x13d4: 0x4006ae20, 0x13d5: 0x4006b020, 0x13d6: 0x4006b220, 0x13d7: 0x4006b420,
+-	0x13d8: 0x4006b620, 0x13d9: 0x4006b820,
+-	0x13e0: 0x40547620, 0x13e1: 0x40547820, 0x13e2: 0x40547a20, 0x13e3: 0x40547c20,
+-	0x13e4: 0x40547e20, 0x13e5: 0x40548020, 0x13e6: 0x40548220, 0x13e7: 0x40548420,
+-	0x13e8: 0x40548620, 0x13e9: 0x40548820, 0x13ea: 0x40548a20, 0x13eb: 0x40548c20,
+-	0x13ec: 0x40548e20, 0x13ed: 0x40549020, 0x13ee: 0x40549220, 0x13ef: 0x40549420,
+-	0x13f0: 0x40549620, 0x13f1: 0x40549820, 0x13f2: 0x40549a20, 0x13f3: 0x40549c20,
+-	0x13f4: 0x40549e20, 0x13f5: 0x4054a020, 0x13f6: 0x4054a220, 0x13f7: 0x4054a420,
+-	0x13f8: 0x4054a620, 0x13f9: 0x4054a820, 0x13fa: 0x4054aa20, 0x13fb: 0x4054ac20,
+-	0x13fc: 0x4054ae20, 0x13fd: 0x4054b020, 0x13fe: 0x4054b220, 0x13ff: 0x4054b420,
+-	// Block 0x50, offset 0x1400
+-	0x1400: 0x4054b620, 0x1401: 0x4054b820, 0x1402: 0x4054ba20, 0x1403: 0x4054bc20,
+-	0x1404: 0x4054be20, 0x1405: 0x4054c020, 0x1406: 0x4054c220, 0x1407: 0x4054c420,
+-	0x1408: 0x4054c620, 0x1409: 0x4054c820, 0x140a: 0x4054ca20, 0x140b: 0x4054cc20,
+-	0x140c: 0x4054ce20, 0x140d: 0x4054d020, 0x140e: 0x4054d220, 0x140f: 0x4054d420,
+-	0x1410: 0x4054d620, 0x1411: 0x4054d820, 0x1412: 0x4054da20, 0x1413: 0x4054dc20,
+-	0x1414: 0x4054de20, 0x1415: 0x4054e020, 0x1416: 0x4054e220, 0x1417: 0x4054e420,
+-	0x1418: 0x4054e620, 0x1419: 0x4054e820, 0x141a: 0x4054ea20, 0x141b: 0x4054ec20,
+-	0x141c: 0x4054ee20, 0x141d: 0x4054f020, 0x141e: 0x4054f220, 0x141f: 0x4054f420,
+-	0x1420: 0x4054f620, 0x1421: 0x4054f820, 0x1422: 0x4054fa20, 0x1423: 0x4054fc20,
+-	0x1424: 0x4054fe20, 0x1425: 0x40550020, 0x1426: 0x40550220, 0x1427: 0x40550420,
+-	0x1428: 0x40550620, 0x1429: 0x40550820, 0x142a: 0x40550a20, 0x142b: 0x40550c20,
+-	0x142c: 0x40550e20, 0x142d: 0x40551020, 0x142e: 0x40551220, 0x142f: 0x40551420,
+-	0x1430: 0x40551620, 0x1431: 0x40551820, 0x1432: 0x40551a20, 0x1433: 0x40551c20,
+-	0x1434: 0x40551e20,
+-	// Block 0x51, offset 0x1440
+-	0x1440: 0x40021e20, 0x1441: 0x40552020, 0x1442: 0x40552220, 0x1443: 0x40552420,
+-	0x1444: 0x40552620, 0x1445: 0x40552820, 0x1446: 0x40552a20, 0x1447: 0x40552c20,
+-	0x1448: 0x40552e20, 0x1449: 0x40553020, 0x144a: 0x40553220, 0x144b: 0x40553420,
+-	0x144c: 0x40553620, 0x144d: 0x40553820, 0x144e: 0x40553a20, 0x144f: 0x40553c20,
+-	0x1450: 0x40553e20, 0x1451: 0x40554020, 0x1452: 0x40554220, 0x1453: 0x40554420,
+-	0x1454: 0x40554620, 0x1455: 0x40554820, 0x1456: 0x40554a20, 0x1457: 0x40554c20,
+-	0x1458: 0x40554e20, 0x1459: 0x40555020, 0x145a: 0x40555220, 0x145b: 0x40555420,
+-	0x145c: 0x40555620, 0x145d: 0x40555820, 0x145e: 0x40555a20, 0x145f: 0x40555c20,
+-	0x1460: 0x40555e20, 0x1461: 0x40556020, 0x1462: 0x40556220, 0x1463: 0x40556420,
+-	0x1464: 0x40556620, 0x1465: 0x40556820, 0x1466: 0x40556a20, 0x1467: 0x40556c20,
+-	0x1468: 0x40556e20, 0x1469: 0x40557020, 0x146a: 0x40557220, 0x146b: 0x40557420,
+-	0x146c: 0x40557620, 0x146d: 0x40557820, 0x146e: 0x40557a20, 0x146f: 0x40557c20,
+-	0x1470: 0x40557e20, 0x1471: 0x40558020, 0x1472: 0x40558220, 0x1473: 0x40558420,
+-	0x1474: 0x40558620, 0x1475: 0x40558820, 0x1476: 0x40558a20, 0x1477: 0x40558c20,
+-	0x1478: 0x40558e20, 0x1479: 0x40559020, 0x147a: 0x40559220, 0x147b: 0x40559420,
+-	0x147c: 0x40559620, 0x147d: 0x40559820, 0x147e: 0x40559a20, 0x147f: 0x40559c20,
+-	// Block 0x52, offset 0x1480
+-	0x1480: 0x40559e20, 0x1481: 0x4055a020, 0x1482: 0x4055a220, 0x1483: 0x4055a420,
+-	0x1484: 0x4055a620, 0x1485: 0x4055a820, 0x1486: 0x4055aa20, 0x1487: 0x4055ac20,
+-	0x1488: 0x4055ae20, 0x1489: 0x4055b020, 0x148a: 0x4055b220, 0x148b: 0x4055b420,
+-	0x148c: 0x4055b620, 0x148d: 0x4055b820, 0x148e: 0x4055ba20, 0x148f: 0x4055bc20,
+-	0x1490: 0x4055be20, 0x1491: 0x4055c020, 0x1492: 0x4055c220, 0x1493: 0x4055c420,
+-	0x1494: 0x4055c620, 0x1495: 0x4055c820, 0x1496: 0x4055ca20, 0x1497: 0x4055cc20,
+-	0x1498: 0x4055ce20, 0x1499: 0x4055d020, 0x149a: 0x4055d220, 0x149b: 0x4055d420,
+-	0x149c: 0x4055d620, 0x149d: 0x4055d820, 0x149e: 0x4055da20, 0x149f: 0x4055dc20,
+-	0x14a0: 0x4055de20, 0x14a1: 0x4055e020, 0x14a2: 0x4055e220, 0x14a3: 0x4055e420,
+-	0x14a4: 0x4055e620, 0x14a5: 0x4055e820, 0x14a6: 0x4055ea20, 0x14a7: 0x4055ec20,
+-	0x14a8: 0x4055ee20, 0x14a9: 0x4055f020, 0x14aa: 0x4055f220, 0x14ab: 0x4055f420,
+-	0x14ac: 0x4055f620, 0x14ad: 0x4055f820, 0x14ae: 0x4055fa20, 0x14af: 0x4055fc20,
+-	0x14b0: 0x4055fe20, 0x14b1: 0x40560020, 0x14b2: 0x40560220, 0x14b3: 0x40560420,
+-	0x14b4: 0x40560620, 0x14b5: 0x40560820, 0x14b6: 0x40560a20, 0x14b7: 0x40560c20,
+-	0x14b8: 0x40560e20, 0x14b9: 0x40561020, 0x14ba: 0x40561220, 0x14bb: 0x40561420,
+-	0x14bc: 0x40561620, 0x14bd: 0x40561820, 0x14be: 0x40561a20, 0x14bf: 0x40561c20,
+-	// Block 0x53, offset 0x14c0
+-	0x14c0: 0x40561e20, 0x14c1: 0x40562020, 0x14c2: 0x40562220, 0x14c3: 0x40562420,
+-	0x14c4: 0x40562620, 0x14c5: 0x40562820, 0x14c6: 0x40562a20, 0x14c7: 0x40562c20,
+-	0x14c8: 0x40562e20, 0x14c9: 0x40563020, 0x14ca: 0x40563220, 0x14cb: 0x40563420,
+-	0x14cc: 0x40563620, 0x14cd: 0x40563820, 0x14ce: 0x40563a20, 0x14cf: 0x40563c20,
+-	0x14d0: 0x40563e20, 0x14d1: 0x40564020, 0x14d2: 0x40564220, 0x14d3: 0x40564420,
+-	0x14d4: 0x40564620, 0x14d5: 0x40564820, 0x14d6: 0x40564a20, 0x14d7: 0x40564c20,
+-	0x14d8: 0x40564e20, 0x14d9: 0x40565020, 0x14da: 0x40565220, 0x14db: 0x40565420,
+-	0x14dc: 0x40565620, 0x14dd: 0x40565820, 0x14de: 0x40565a20, 0x14df: 0x40565c20,
+-	0x14e0: 0x40565e20, 0x14e1: 0x40566020, 0x14e2: 0x40566220, 0x14e3: 0x40566420,
+-	0x14e4: 0x40566620, 0x14e5: 0x40566820, 0x14e6: 0x40566a20, 0x14e7: 0x40566c20,
+-	0x14e8: 0x40566e20, 0x14e9: 0x40567020, 0x14ea: 0x40567220, 0x14eb: 0x40567420,
+-	0x14ec: 0x40567620, 0x14ed: 0x40567820, 0x14ee: 0x40567a20, 0x14ef: 0x40567c20,
+-	0x14f0: 0x40567e20, 0x14f1: 0x40568020, 0x14f2: 0x40568220, 0x14f3: 0x40568420,
+-	0x14f4: 0x40568620, 0x14f5: 0x40568820, 0x14f6: 0x40568a20, 0x14f7: 0x40568c20,
+-	0x14f8: 0x40568e20, 0x14f9: 0x40569020, 0x14fa: 0x40569220, 0x14fb: 0x40569420,
+-	0x14fc: 0x40569620, 0x14fd: 0x40569820, 0x14fe: 0x40569a20, 0x14ff: 0x40569c20,
+-	// Block 0x54, offset 0x1500
+-	0x1500: 0x40569e20, 0x1501: 0x4056a020, 0x1502: 0x4056a220, 0x1503: 0x4056a420,
+-	0x1504: 0x4056a620, 0x1505: 0x4056a820, 0x1506: 0x4056aa20, 0x1507: 0x4056ac20,
+-	0x1508: 0x4056ae20, 0x1509: 0x4056b020, 0x150a: 0x4056b220, 0x150b: 0x4056b420,
+-	0x150c: 0x4056b620, 0x150d: 0x4056b820, 0x150e: 0x4056ba20, 0x150f: 0x4056bc20,
+-	0x1510: 0x4056be20, 0x1511: 0x4056c020, 0x1512: 0x4056c220, 0x1513: 0x4056c420,
+-	0x1514: 0x4056c620, 0x1515: 0x4056c820, 0x1516: 0x4056ca20, 0x1517: 0x4056cc20,
+-	0x1518: 0x4056ce20, 0x1519: 0x4056d020, 0x151a: 0x4056d220, 0x151b: 0x4056d420,
+-	0x151c: 0x4056d620, 0x151d: 0x4056d820, 0x151e: 0x4056da20, 0x151f: 0x4056dc20,
+-	0x1520: 0x4056de20, 0x1521: 0x4056e020, 0x1522: 0x4056e220, 0x1523: 0x4056e420,
+-	0x1524: 0x4056e620, 0x1525: 0x4056e820, 0x1526: 0x4056ea20, 0x1527: 0x4056ec20,
+-	0x1528: 0x4056ee20, 0x1529: 0x4056f020, 0x152a: 0x4056f220, 0x152b: 0x4056f420,
+-	0x152c: 0x4056f620, 0x152d: 0x4056f820, 0x152e: 0x4056fa20, 0x152f: 0x4056fc20,
+-	0x1530: 0x4056fe20, 0x1531: 0x40570020, 0x1532: 0x40570220, 0x1533: 0x40570420,
+-	0x1534: 0x40570620, 0x1535: 0x40570820, 0x1536: 0x40570a20, 0x1537: 0x40570c20,
+-	0x1538: 0x40570e20, 0x1539: 0x40571020, 0x153a: 0x40571220, 0x153b: 0x40571420,
+-	0x153c: 0x40571620, 0x153d: 0x40571820, 0x153e: 0x40571a20, 0x153f: 0x40571c20,
+-	// Block 0x55, offset 0x1540
+-	0x1540: 0x40571e20, 0x1541: 0x40572020, 0x1542: 0x40572220, 0x1543: 0x40572420,
+-	0x1544: 0x40572620, 0x1545: 0x40572820, 0x1546: 0x40572a20, 0x1547: 0x40572c20,
+-	0x1548: 0x40572e20, 0x1549: 0x40573020, 0x154a: 0x40573220, 0x154b: 0x40573420,
+-	0x154c: 0x40573620, 0x154d: 0x40573820, 0x154e: 0x40573a20, 0x154f: 0x40573c20,
+-	0x1550: 0x40573e20, 0x1551: 0x40574020, 0x1552: 0x40574220, 0x1553: 0x40574420,
+-	0x1554: 0x40574620, 0x1555: 0x40574820, 0x1556: 0x40574a20, 0x1557: 0x40574c20,
+-	0x1558: 0x40574e20, 0x1559: 0x40575020, 0x155a: 0x40575220, 0x155b: 0x40575420,
+-	0x155c: 0x40575620, 0x155d: 0x40575820, 0x155e: 0x40575a20, 0x155f: 0x40575c20,
+-	0x1560: 0x40575e20, 0x1561: 0x40576020, 0x1562: 0x40576220, 0x1563: 0x40576420,
+-	0x1564: 0x40576620, 0x1565: 0x40576820, 0x1566: 0x40576a20, 0x1567: 0x40576c20,
+-	0x1568: 0x40576e20, 0x1569: 0x40577020, 0x156a: 0x40577220, 0x156b: 0x40577420,
+-	0x156c: 0x40577620, 0x156d: 0x40577820, 0x156e: 0x40577a20, 0x156f: 0x40577c20,
+-	0x1570: 0x40577e20, 0x1571: 0x40578020, 0x1572: 0x40578220, 0x1573: 0x40578420,
+-	0x1574: 0x40578620, 0x1575: 0x40578820, 0x1576: 0x40578a20, 0x1577: 0x40578c20,
+-	0x1578: 0x40578e20, 0x1579: 0x40579020, 0x157a: 0x40579220, 0x157b: 0x40579420,
+-	0x157c: 0x40579620, 0x157d: 0x40579820, 0x157e: 0x40579a20, 0x157f: 0x40579c20,
+-	// Block 0x56, offset 0x1580
+-	0x1580: 0x40579e20, 0x1581: 0x4057a020, 0x1582: 0x4057a220, 0x1583: 0x4057a420,
+-	0x1584: 0x4057a620, 0x1585: 0x4057a820, 0x1586: 0x4057aa20, 0x1587: 0x4057ac20,
+-	0x1588: 0x4057ae20, 0x1589: 0x4057b020, 0x158a: 0x4057b220, 0x158b: 0x4057b420,
+-	0x158c: 0x4057b620, 0x158d: 0x4057b820, 0x158e: 0x4057ba20, 0x158f: 0x4057bc20,
+-	0x1590: 0x4057be20, 0x1591: 0x4057c020, 0x1592: 0x4057c220, 0x1593: 0x4057c420,
+-	0x1594: 0x4057c620, 0x1595: 0x4057c820, 0x1596: 0x4057ca20, 0x1597: 0x4057cc20,
+-	0x1598: 0x4057ce20, 0x1599: 0x4057d020, 0x159a: 0x4057d220, 0x159b: 0x4057d420,
+-	0x159c: 0x4057d620, 0x159d: 0x4057d820, 0x159e: 0x4057da20, 0x159f: 0x4057dc20,
+-	0x15a0: 0x4057de20, 0x15a1: 0x4057e020, 0x15a2: 0x4057e220, 0x15a3: 0x4057e420,
+-	0x15a4: 0x4057e620, 0x15a5: 0x4057e820, 0x15a6: 0x4057ea20, 0x15a7: 0x4057ec20,
+-	0x15a8: 0x4057ee20, 0x15a9: 0x4057f020, 0x15aa: 0x4057f220, 0x15ab: 0x4057f420,
+-	0x15ac: 0x4057f620, 0x15ad: 0x4057f820, 0x15ae: 0x4057fa20, 0x15af: 0x4057fc20,
+-	0x15b0: 0x4057fe20, 0x15b1: 0x40580020, 0x15b2: 0x40580220, 0x15b3: 0x40580420,
+-	0x15b4: 0x40580620, 0x15b5: 0x40580820, 0x15b6: 0x40580a20, 0x15b7: 0x40580c20,
+-	0x15b8: 0x40580e20, 0x15b9: 0x40581020, 0x15ba: 0x40581220, 0x15bb: 0x40581420,
+-	0x15bc: 0x40587a20, 0x15bd: 0x40581620, 0x15be: 0x40581a20, 0x15bf: 0x40581c20,
+-	// Block 0x57, offset 0x15c0
+-	0x15c0: 0x40581e20, 0x15c1: 0x40582020, 0x15c2: 0x40582220, 0x15c3: 0x40582420,
+-	0x15c4: 0x40582620, 0x15c5: 0x40582820, 0x15c6: 0x40582a20, 0x15c7: 0x40582c20,
+-	0x15c8: 0x40582e20, 0x15c9: 0x40583020, 0x15ca: 0x40583220, 0x15cb: 0x40583420,
+-	0x15cc: 0x40583620, 0x15cd: 0x40583820, 0x15ce: 0x40583c20, 0x15cf: 0x40583e20,
+-	0x15d0: 0x40584020, 0x15d1: 0x40584220, 0x15d2: 0x40584420, 0x15d3: 0x40584620,
+-	0x15d4: 0x40584820, 0x15d5: 0x40584a20, 0x15d6: 0x40585820, 0x15d7: 0x40585a20,
+-	0x15d8: 0x40585c20, 0x15d9: 0x40585e20, 0x15da: 0x40586020, 0x15db: 0x40586220,
+-	0x15dc: 0x40586420, 0x15dd: 0x40586620, 0x15de: 0x40586820, 0x15df: 0x40586a20,
+-	0x15e0: 0x40586c20, 0x15e1: 0x40586e20, 0x15e2: 0x40587020, 0x15e3: 0x40587220,
+-	0x15e4: 0x40587420, 0x15e5: 0x40587620, 0x15e6: 0x40587820, 0x15e7: 0x40587c20,
+-	0x15e8: 0x40587e20, 0x15e9: 0x40588020, 0x15ea: 0x40588220, 0x15eb: 0x40588420,
+-	0x15ec: 0x40588620, 0x15ed: 0x40588820, 0x15ee: 0x40588a20, 0x15ef: 0x40588c20,
+-	0x15f0: 0x40588e20, 0x15f1: 0x40589020, 0x15f2: 0x40589220, 0x15f3: 0x40589420,
+-	0x15f4: 0x40589620, 0x15f5: 0x40589820, 0x15f6: 0x40589a20, 0x15f7: 0x40589c20,
+-	0x15f8: 0x40589e20, 0x15f9: 0x4058a020, 0x15fa: 0x4058a220, 0x15fb: 0x4058a420,
+-	0x15fc: 0x4058a620, 0x15fd: 0x4058a820, 0x15fe: 0x4058aa20, 0x15ff: 0x4058ac20,
+-	// Block 0x58, offset 0x1600
+-	0x1600: 0x4058ae20, 0x1601: 0x4058b020, 0x1602: 0x4058b220, 0x1603: 0x4058b420,
+-	0x1604: 0x4058b620, 0x1605: 0x4058b820, 0x1606: 0x4058ba20, 0x1607: 0x4058bc20,
+-	0x1608: 0x4058be20, 0x1609: 0x4058c020, 0x160a: 0x4058c220, 0x160b: 0x4058c420,
+-	0x160c: 0x4058c620, 0x160d: 0x4058c820, 0x160e: 0x4058ca20, 0x160f: 0x4058cc20,
+-	0x1610: 0x4058ce20, 0x1611: 0x4058d020, 0x1612: 0x4058d220, 0x1613: 0x4058d420,
+-	0x1614: 0x4058d620, 0x1615: 0x4058d820, 0x1616: 0x4058da20, 0x1617: 0x4058dc20,
+-	0x1618: 0x4058de20, 0x1619: 0x4058e020, 0x161a: 0x4058e220, 0x161b: 0x4058e420,
+-	0x161c: 0x4058e620, 0x161d: 0x4058e820, 0x161e: 0x4058ea20, 0x161f: 0x4058ec20,
+-	0x1620: 0x4058ee20, 0x1621: 0x4058f020, 0x1622: 0x4058f220, 0x1623: 0x4058f420,
+-	0x1624: 0x4058f620, 0x1625: 0x4058f820, 0x1626: 0x4058fa20, 0x1627: 0x4058fc20,
+-	0x1628: 0x4058fe20, 0x1629: 0x40590020, 0x162a: 0x40590220, 0x162b: 0x40590420,
+-	0x162c: 0x40590620, 0x162d: 0x40590820, 0x162e: 0x40590a20, 0x162f: 0x40590c20,
+-	0x1630: 0x40590e20, 0x1631: 0x40591020, 0x1632: 0x40591220, 0x1633: 0x40591420,
+-	0x1634: 0x40591620, 0x1635: 0x40591820, 0x1636: 0x40591a20, 0x1637: 0x40591c20,
+-	0x1638: 0x40591e20, 0x1639: 0x40592020, 0x163a: 0x40592220, 0x163b: 0x40592420,
+-	0x163c: 0x40592620, 0x163d: 0x40592820, 0x163e: 0x40592a20, 0x163f: 0x40592c20,
+-	// Block 0x59, offset 0x1640
+-	0x1640: 0x40592e20, 0x1641: 0x40593020, 0x1642: 0x40593220, 0x1643: 0x40593420,
+-	0x1644: 0x40593620, 0x1645: 0x40593820, 0x1646: 0x40593a20, 0x1647: 0x40593c20,
+-	0x1648: 0x40593e20, 0x1649: 0x40594020, 0x164a: 0x40594220, 0x164b: 0x40594420,
+-	0x164c: 0x40594620, 0x164d: 0x40594820, 0x164e: 0x40594a20, 0x164f: 0x40594c20,
+-	0x1650: 0x40594e20, 0x1651: 0x40595020, 0x1652: 0x40595220, 0x1653: 0x40595420,
+-	0x1654: 0x40595620, 0x1655: 0x40595820, 0x1656: 0x40595a20, 0x1657: 0x40595c20,
+-	0x1658: 0x40595e20, 0x1659: 0x40596020, 0x165a: 0x40596220, 0x165b: 0x40596420,
+-	0x165c: 0x40596620, 0x165d: 0x40596820, 0x165e: 0x40596a20, 0x165f: 0x40596c20,
+-	0x1660: 0x40596e20, 0x1661: 0x40597020, 0x1662: 0x40597220, 0x1663: 0x40597420,
+-	0x1664: 0x40597620, 0x1665: 0x40597820, 0x1666: 0x40597a20, 0x1667: 0x40597c20,
+-	0x1668: 0x40597e20, 0x1669: 0x40598020, 0x166a: 0x40598220, 0x166b: 0x40598420,
+-	0x166c: 0x40598620, 0x166d: 0x40598820, 0x166e: 0x40598a20, 0x166f: 0x40598c20,
+-	0x1670: 0x40598e20, 0x1671: 0x40599020, 0x1672: 0x40599220, 0x1673: 0x40599420,
+-	0x1674: 0x40599620, 0x1675: 0x40599820, 0x1676: 0x40599a20, 0x1677: 0x40599c20,
+-	0x1678: 0x40599e20, 0x1679: 0x4059a020, 0x167a: 0x4059a220, 0x167b: 0x4059a420,
+-	0x167c: 0x4059a620, 0x167d: 0x4059a820, 0x167e: 0x4059aa20, 0x167f: 0x4059ac20,
+-	// Block 0x5a, offset 0x1680
+-	0x1680: 0x4059ae20, 0x1681: 0x4059b020, 0x1682: 0x4059b220, 0x1683: 0x4059b420,
+-	0x1684: 0x4059b620, 0x1685: 0x4059b820, 0x1686: 0x4059ba20, 0x1687: 0x4059bc20,
+-	0x1688: 0x4059be20, 0x1689: 0x4059c020, 0x168a: 0x4059c220, 0x168b: 0x4059c420,
+-	0x168c: 0x4059c620, 0x168d: 0x4059c820, 0x168e: 0x4059ca20, 0x168f: 0x4059cc20,
+-	0x1690: 0x4059ce20, 0x1691: 0x4059d020, 0x1692: 0x4059d220, 0x1693: 0x4059d420,
+-	0x1694: 0x4059d620, 0x1695: 0x4059d820, 0x1696: 0x4059da20, 0x1697: 0x4059dc20,
+-	0x1698: 0x4059de20, 0x1699: 0x4059e020, 0x169a: 0x4059e220, 0x169b: 0x4059e420,
+-	0x169c: 0x4059e620, 0x169d: 0x4059e820, 0x169e: 0x4059ea20, 0x169f: 0x4059ec20,
+-	0x16a0: 0x4059ee20, 0x16a1: 0x4059f020, 0x16a2: 0x4059f220, 0x16a3: 0x4059f420,
+-	0x16a4: 0x4059f620, 0x16a5: 0x4059f820, 0x16a6: 0x4059fa20, 0x16a7: 0x4059fc20,
+-	0x16a8: 0x4059fe20, 0x16a9: 0x405a0020, 0x16aa: 0x405a0220, 0x16ab: 0x405a0420,
+-	0x16ac: 0x405a0620, 0x16ad: 0x4005d420, 0x16ae: 0x4002f420, 0x16af: 0x40581820,
+-	0x16b0: 0x40583a20, 0x16b1: 0x40584c20, 0x16b2: 0x40584e20, 0x16b3: 0x40585020,
+-	0x16b4: 0x40585220, 0x16b5: 0x40585420, 0x16b6: 0x40585620, 0x16b7: 0x405a0820,
+-	0x16b8: 0x405a0a20, 0x16b9: 0x405a0c20, 0x16ba: 0x405a0e20, 0x16bb: 0x405a1020,
+-	0x16bc: 0x405a1220, 0x16bd: 0x405a1420, 0x16be: 0x405a1620, 0x16bf: 0x405a1820,
+-	// Block 0x5b, offset 0x16c0
+-	0x16c0: 0x00021284, 0x16c1: 0x405aa620, 0x16c2: 0x405aa820, 0x16c3: 0x405aaa20,
+-	0x16c4: 0x405aac20, 0x16c5: 0x405aae20, 0x16c6: 0x405ab020, 0x16c7: 0x405ab220,
+-	0x16c8: 0x405ab420, 0x16c9: 0x405ab620, 0x16ca: 0x405ab820, 0x16cb: 0x405aba20,
+-	0x16cc: 0x405abc20, 0x16cd: 0x405abe20, 0x16ce: 0x405ac020, 0x16cf: 0x405ac220,
+-	0x16d0: 0x405ac420, 0x16d1: 0x405ac620, 0x16d2: 0x405ac820, 0x16d3: 0x405aca20,
+-	0x16d4: 0x405acc20, 0x16d5: 0x405ace20, 0x16d6: 0x405ad020, 0x16d7: 0x405ad220,
+-	0x16d8: 0x405ad420, 0x16d9: 0x405ad620, 0x16da: 0x405ad820, 0x16db: 0x40040820,
+-	0x16dc: 0x40040a20,
+-	0x16e0: 0x405ada20, 0x16e1: 0xe000202d, 0x16e2: 0x405adc20, 0x16e3: 0x405b1420,
+-	0x16e4: 0xe0002030, 0x16e5: 0xe0002033, 0x16e6: 0x405ade20, 0x16e7: 0xe0002036,
+-	0x16e8: 0x405ae020, 0x16e9: 0xe000203c, 0x16ea: 0x405b1020, 0x16eb: 0x405b1220,
+-	0x16ec: 0xe000203f, 0x16ed: 0xe0002042, 0x16ee: 0xe0002045, 0x16ef: 0x405ae220,
+-	0x16f0: 0x405ae420, 0x16f1: 0x405ae620, 0x16f2: 0x405ae820, 0x16f3: 0xe0002048,
+-	0x16f4: 0xe000204b, 0x16f5: 0xe000204e, 0x16f6: 0xe0002051, 0x16f7: 0x405aea20,
+-	0x16f8: 0x405b1a20, 0x16f9: 0x405aec20, 0x16fa: 0x405aee20, 0x16fb: 0xe0002057,
+-	0x16fc: 0xe000205a, 0x16fd: 0xe000205d, 0x16fe: 0x405af020, 0x16ff: 0xe0002060,
+-	// Block 0x5c, offset 0x1700
+-	0x1700: 0xe0002063, 0x1701: 0x405af220, 0x1702: 0xe0002066, 0x1703: 0x405af420,
+-	0x1704: 0xe0002069, 0x1705: 0x405af620, 0x1706: 0xe000206c, 0x1707: 0x405af820,
+-	0x1708: 0x405afa20, 0x1709: 0x405afc20, 0x170a: 0x405afe20, 0x170b: 0xe0002075,
+-	0x170c: 0xe000207b, 0x170d: 0xe000207e, 0x170e: 0xe0002081, 0x170f: 0x405b0020,
+-	0x1710: 0xe0002084, 0x1711: 0xe0002087, 0x1712: 0x405b0220, 0x1713: 0xe000208a,
+-	0x1714: 0xe000208d, 0x1715: 0xe0002072, 0x1716: 0x405b0420, 0x1717: 0x405b0620,
+-	0x1718: 0xe0002090, 0x1719: 0xe0002093, 0x171a: 0x405b0820, 0x171b: 0xe000209b,
+-	0x171c: 0x405b0a20, 0x171d: 0xe000209e, 0x171e: 0x405b0c20, 0x171f: 0x405b0e20,
+-	0x1720: 0x405b1620, 0x1721: 0x405b1e20, 0x1722: 0x405b2020, 0x1723: 0x405b1820,
+-	0x1724: 0x405b1c20, 0x1725: 0x405b2220, 0x1726: 0x405b2420, 0x1727: 0xe00020a1,
+-	0x1728: 0xe00020a4, 0x1729: 0xe0002054, 0x172a: 0xe0002078, 0x172b: 0x4002b220,
+-	0x172c: 0x4002b420, 0x172d: 0x4002b620, 0x172e: 0xe000206f, 0x172f: 0xe0002096,
+-	0x1730: 0xe0002039,
+-	// Block 0x5d, offset 0x1740
+-	0x1740: 0x404c7620, 0x1741: 0x404c7820, 0x1742: 0x404c7a20, 0x1743: 0x404c7c20,
+-	0x1744: 0x404c7e20, 0x1745: 0x404c8020, 0x1746: 0x404c8220, 0x1747: 0x404c8420,
+-	0x1748: 0x404c8620, 0x1749: 0x404c8820, 0x174a: 0x404c8a20, 0x174b: 0x404c8c20,
+-	0x174c: 0x404c8e20, 0x174e: 0x404c9020, 0x174f: 0x404c9220,
+-	0x1750: 0x404c9420, 0x1751: 0x404c9620, 0x1752: 0x404c9820, 0x1753: 0x404c9a20,
+-	0x1754: 0x8209264e,
+-	0x1760: 0x404c9e20, 0x1761: 0x404ca020, 0x1762: 0x404ca220, 0x1763: 0x404ca420,
+-	0x1764: 0x404ca620, 0x1765: 0x404ca820, 0x1766: 0x404caa20, 0x1767: 0x404cac20,
+-	0x1768: 0x404cae20, 0x1769: 0x404cb020, 0x176a: 0x404cb220, 0x176b: 0x404cb420,
+-	0x176c: 0x404cb620, 0x176d: 0x404cb820, 0x176e: 0x404cba20, 0x176f: 0x404cbc20,
+-	0x1770: 0x404cbe20, 0x1771: 0x404cc020, 0x1772: 0x404cc220, 0x1773: 0x404cc420,
+-	0x1774: 0x82092663, 0x1775: 0x40031c20, 0x1776: 0x40031e20,
+-	// Block 0x5e, offset 0x1780
+-	0x1780: 0x404cc820, 0x1781: 0x404cca20, 0x1782: 0x404ccc20, 0x1783: 0x404cce20,
+-	0x1784: 0x404cd020, 0x1785: 0x404cd220, 0x1786: 0x404cd420, 0x1787: 0x404cd620,
+-	0x1788: 0x404cd820, 0x1789: 0x404cda20, 0x178a: 0x404cdc20, 0x178b: 0x404cde20,
+-	0x178c: 0x404ce020, 0x178d: 0x404ce220, 0x178e: 0x404ce420, 0x178f: 0x404ce620,
+-	0x1790: 0x404ce820, 0x1791: 0x404cea20, 0x1792: 0x404cec20, 0x1793: 0x404cee20,
+-	0x17a0: 0x404cf020, 0x17a1: 0x404cf220, 0x17a2: 0x404cf420, 0x17a3: 0x404cf620,
+-	0x17a4: 0x404cf820, 0x17a5: 0x404cfa20, 0x17a6: 0x404cfc20, 0x17a7: 0x404cfe20,
+-	0x17a8: 0x404d0020, 0x17a9: 0x404d0220, 0x17aa: 0x404d0420, 0x17ab: 0x404d0620,
+-	0x17ac: 0x404d0820, 0x17ae: 0x404d0a20, 0x17af: 0x404d0c20,
+-	0x17b0: 0x404d0e20, 0x17b2: 0x404d1020, 0x17b3: 0x404d1220,
+-	// Block 0x5f, offset 0x17c0
+-	0x17c0: 0x404fa420, 0x17c1: 0x404fa620, 0x17c2: 0x404fa820, 0x17c3: 0x404faa20,
+-	0x17c4: 0x404fac20, 0x17c5: 0x404fae20, 0x17c6: 0x404fb020, 0x17c7: 0x404fb220,
+-	0x17c8: 0x404fb420, 0x17c9: 0x404fb620, 0x17ca: 0x404fb820, 0x17cb: 0x404fba20,
+-	0x17cc: 0x404fbc20, 0x17cd: 0x404fbe20, 0x17ce: 0x404fc020, 0x17cf: 0x404fc220,
+-	0x17d0: 0x404fc420, 0x17d1: 0x404fc620, 0x17d2: 0x404fc820, 0x17d3: 0x404fca20,
+-	0x17d4: 0x404fcc20, 0x17d5: 0x404fce20, 0x17d6: 0x404fd020, 0x17d7: 0x404fd220,
+-	0x17d8: 0x404fd420, 0x17d9: 0x404fd620, 0x17da: 0x404fd820, 0x17db: 0x404fda20,
+-	0x17dc: 0x404fdc20, 0x17dd: 0x404fde20, 0x17de: 0x404fe020, 0x17df: 0x404fe220,
+-	0x17e0: 0x404fe420, 0x17e1: 0x404fe620, 0x17e2: 0x404fe820, 0x17e3: 0x404fec20,
+-	0x17e4: 0x404fee20, 0x17e5: 0x404ff020, 0x17e6: 0x404ff220, 0x17e7: 0x404ff420,
+-	0x17e8: 0x404ff620, 0x17e9: 0x404ff820, 0x17ea: 0x404ffa20, 0x17eb: 0x404ffc20,
+-	0x17ec: 0x404ffe20, 0x17ed: 0x40500020, 0x17ee: 0x40500220, 0x17ef: 0x40500420,
+-	0x17f0: 0x40500620, 0x17f1: 0x40500820, 0x17f2: 0x40500a20, 0x17f3: 0x40500c20,
+-	0x17f4: 0xa0000000, 0x17f5: 0xa0000000, 0x17f6: 0x40500e20, 0x17f7: 0x40501020,
+-	0x17f8: 0x40501220, 0x17f9: 0x40501420, 0x17fa: 0x40501620, 0x17fb: 0x40501820,
+-	0x17fc: 0x40501a20, 0x17fd: 0x40501c20, 0x17fe: 0x40501e20, 0x17ff: 0x40502020,
+-	// Block 0x60, offset 0x1800
+-	0x1800: 0x40502220, 0x1801: 0x40502420, 0x1802: 0x40502620, 0x1803: 0x40502820,
+-	0x1804: 0x40502a20, 0x1805: 0x40502c20, 0x1806: 0xa000f302, 0x1807: 0xa000f402,
+-	0x1808: 0xa0011402, 0x1809: 0xa0011502, 0x180a: 0xa0011602, 0x180b: 0xa0005f02,
+-	0x180c: 0xa0005f02, 0x180d: 0xa0005f02, 0x180e: 0xa0005f02, 0x180f: 0xa0005f02,
+-	0x1810: 0xa0005f02, 0x1811: 0xa0005f02, 0x1812: 0x82092817, 0x1813: 0xa0000000,
+-	0x1814: 0x40032620, 0x1815: 0x40032820, 0x1816: 0x4002ac20, 0x1817: 0x4027bc20,
+-	0x1818: 0x4005bc20, 0x1819: 0x4005be20, 0x181a: 0x4005c020, 0x181b: 0x4027f620,
+-	0x181c: 0x404fea20, 0x181d: 0xae605f02,
+-	0x1820: 0xe00001b5, 0x1821: 0xe0000249, 0x1822: 0xe0000361, 0x1823: 0xe000043b,
+-	0x1824: 0xe0000510, 0x1825: 0xe00005da, 0x1826: 0xe00006a5, 0x1827: 0xe000074d,
+-	0x1828: 0xe00007f9, 0x1829: 0xe000089e,
+-	0x1830: 0xe00001b8, 0x1831: 0xe000024c, 0x1832: 0xe0000364, 0x1833: 0xe000043e,
+-	0x1834: 0xe0000513, 0x1835: 0xe00005dd, 0x1836: 0xe00006a8, 0x1837: 0xe0000750,
+-	0x1838: 0xe00007fc, 0x1839: 0xe00008a1,
+-	// Block 0x61, offset 0x1840
+-	0x1840: 0x40056a20, 0x1841: 0x4002e620, 0x1842: 0x40025220, 0x1843: 0x4002f020,
+-	0x1844: 0x4002a620, 0x1845: 0x4002a820, 0x1846: 0x40022220, 0x1847: 0x40022420,
+-	0x1848: 0x40025420, 0x1849: 0x4002f220, 0x184a: 0xa0000000, 0x184b: 0xa0000000,
+-	0x184c: 0xa0000000, 0x184d: 0xa0000000, 0x184e: 0x40020c20,
+-	0x1850: 0xe00001c7, 0x1851: 0xe000025b, 0x1852: 0xe0000373, 0x1853: 0xe000044d,
+-	0x1854: 0xe0000522, 0x1855: 0xe00005ec, 0x1856: 0xe00006b7, 0x1857: 0xe000075f,
+-	0x1858: 0xe000080b, 0x1859: 0xe00008b0,
+-	0x1860: 0x40533820, 0x1861: 0x40533c20, 0x1862: 0x40534220, 0x1863: 0x40534e20,
+-	0x1864: 0x40535220, 0x1865: 0x40535820, 0x1866: 0x40535c20, 0x1867: 0x40536220,
+-	0x1868: 0x40536420, 0x1869: 0x40536620, 0x186a: 0x40537020, 0x186b: 0x40537420,
+-	0x186c: 0x40537a20, 0x186d: 0x40537e20, 0x186e: 0x40538820, 0x186f: 0x40538c20,
+-	0x1870: 0x40538e20, 0x1871: 0x40539020, 0x1872: 0x40539e20, 0x1873: 0x4053a420,
+-	0x1874: 0x4053aa20, 0x1875: 0x4053b420, 0x1876: 0x4053bc20, 0x1877: 0x4053c220,
+-	0x1878: 0x4053c620, 0x1879: 0x4053ca20, 0x187a: 0x4053d020, 0x187b: 0x4053da20,
+-	0x187c: 0x4053dc20, 0x187d: 0x4053e220, 0x187e: 0x4053ea20, 0x187f: 0x4053f020,
+-	// Block 0x62, offset 0x1880
+-	0x1880: 0x4053f220, 0x1881: 0x4053f420, 0x1882: 0x4053f620, 0x1883: 0x40533620,
+-	0x1884: 0x40533e20, 0x1885: 0x40534420, 0x1886: 0x40535020, 0x1887: 0x40535420,
+-	0x1888: 0x40535a20, 0x1889: 0x40535e20, 0x188a: 0x40536820, 0x188b: 0x40537220,
+-	0x188c: 0x40537620, 0x188d: 0x40537c20, 0x188e: 0x40538020, 0x188f: 0x40538a20,
+-	0x1890: 0x4053a020, 0x1891: 0x4053a620, 0x1892: 0x4053ac20, 0x1893: 0x4053b620,
+-	0x1894: 0x4053de20, 0x1895: 0x4053be20, 0x1896: 0x4053c820, 0x1897: 0x4053d220,
+-	0x1898: 0x4053e620, 0x1899: 0x4053ec20, 0x189a: 0x4053f820, 0x189b: 0x4053fa20,
+-	0x189c: 0x4053b020, 0x189d: 0x40534020, 0x189e: 0x40534620, 0x189f: 0x40534c20,
+-	0x18a0: 0x40536020, 0x18a1: 0x40535620, 0x18a2: 0x40536a20, 0x18a3: 0x4053d420,
+-	0x18a4: 0x40538220, 0x18a5: 0x40538620, 0x18a6: 0x40537820, 0x18a7: 0x40539220,
+-	0x18a8: 0x4053a220, 0x18a9: 0x4053a820, 0x18aa: 0x4053b820, 0x18ab: 0x4053cc20,
+-	0x18ac: 0x4053e820, 0x18ad: 0x4053ee20, 0x18ae: 0x4053e020, 0x18af: 0x4053e420,
+-	0x18b0: 0x4053fc20, 0x18b1: 0x4053ae20, 0x18b2: 0x4053c020, 0x18b3: 0x40534820,
+-	0x18b4: 0x4053d620, 0x18b5: 0x4053c420, 0x18b6: 0x4053ce20, 0x18b7: 0x4053ba20,
+-	// Block 0x63, offset 0x18c0
+-	0x18c0: 0x40532820, 0x18c1: 0x40532a20, 0x18c2: 0x40532c20, 0x18c3: 0x40532e20,
+-	0x18c4: 0x40533020, 0x18c5: 0x40533220, 0x18c6: 0x40533420, 0x18c7: 0x40533a20,
+-	0x18c8: 0x40534a20, 0x18c9: 0x4053d820, 0x18ca: 0x40536c20, 0x18cb: 0x4053b220,
+-	0x18cc: 0x4053fe20, 0x18cd: 0x40540220, 0x18ce: 0x40540420, 0x18cf: 0x40540820,
+-	0x18d0: 0x40540a20, 0x18d1: 0x40541020, 0x18d2: 0x40541420, 0x18d3: 0x40541620,
+-	0x18d4: 0x40541a20, 0x18d5: 0x40541e20, 0x18d6: 0x40542220, 0x18d7: 0x40542420,
+-	0x18d8: 0x40540c20, 0x18d9: 0x40542020, 0x18da: 0x40538420, 0x18db: 0x40536e20,
+-	0x18dc: 0x40539420, 0x18dd: 0x40539620, 0x18de: 0x40540020, 0x18df: 0x40540620,
+-	0x18e0: 0x40540e20, 0x18e1: 0x40541220, 0x18e2: 0x40539820, 0x18e3: 0x40541c20,
+-	0x18e4: 0x40539a20, 0x18e5: 0x40539c20, 0x18e6: 0x40542620, 0x18e7: 0x40542820,
+-	0x18e8: 0x40541820, 0x18e9: 0x82e42a16, 0x18ea: 0x40542a20,
+-	0x18f0: 0x405a1a20, 0x18f1: 0x405a1c20, 0x18f2: 0x405a1e20, 0x18f3: 0x405a2020,
+-	0x18f4: 0x405a2220, 0x18f5: 0x405a2420, 0x18f6: 0x405a2620, 0x18f7: 0x405a2820,
+-	0x18f8: 0x405a2a20, 0x18f9: 0x405a2c20, 0x18fa: 0x405a2e20, 0x18fb: 0x405a3020,
+-	0x18fc: 0x405a3220, 0x18fd: 0x405a3420, 0x18fe: 0x405a3620, 0x18ff: 0x405a3820,
+-	// Block 0x64, offset 0x1900
+-	0x1900: 0x405a3a20, 0x1901: 0x405a3c20, 0x1902: 0x405a3e20, 0x1903: 0x405a4020,
+-	0x1904: 0x405a4220, 0x1905: 0x405a4420, 0x1906: 0x405a4620, 0x1907: 0x405a4820,
+-	0x1908: 0x405a4a20, 0x1909: 0x405a4c20, 0x190a: 0x405a4e20, 0x190b: 0x405a5020,
+-	0x190c: 0x405a5220, 0x190d: 0x405a5420, 0x190e: 0x405a5620, 0x190f: 0x405a5820,
+-	0x1910: 0x405a5a20, 0x1911: 0x405a5c20, 0x1912: 0x405a5e20, 0x1913: 0x405a6020,
+-	0x1914: 0x405a6220, 0x1915: 0x405a6420, 0x1916: 0x405a6620, 0x1917: 0x405a6820,
+-	0x1918: 0x405a6a20, 0x1919: 0x405a6c20, 0x191a: 0x405a6e20, 0x191b: 0x405a7020,
+-	0x191c: 0x405a7220, 0x191d: 0x405a7420, 0x191e: 0x405a7620, 0x191f: 0x405a7820,
+-	0x1920: 0x405a7a20, 0x1921: 0x405a7c20, 0x1922: 0x405a7e20, 0x1923: 0x405a8020,
+-	0x1924: 0x405a8220, 0x1925: 0x405a8420, 0x1926: 0x405a8620, 0x1927: 0x405a8820,
+-	0x1928: 0x405a8a20, 0x1929: 0x405a8c20, 0x192a: 0x405a8e20, 0x192b: 0x405a9020,
+-	0x192c: 0x405a9220, 0x192d: 0x405a9420, 0x192e: 0x405a9620, 0x192f: 0x405a9820,
+-	0x1930: 0x405a9a20, 0x1931: 0x405a9c20, 0x1932: 0x405a9e20, 0x1933: 0x405aa020,
+-	0x1934: 0x405aa220, 0x1935: 0x405aa420,
+-	// Block 0x65, offset 0x1940
+-	0x1940: 0x404c1220, 0x1941: 0x404c1420, 0x1942: 0x404c1620, 0x1943: 0x404c1820,
+-	0x1944: 0x404c1a20, 0x1945: 0x404c1c20, 0x1946: 0x404c1e20, 0x1947: 0x404c2020,
+-	0x1948: 0x404c2220, 0x1949: 0x404c2420, 0x194a: 0x404c2620, 0x194b: 0x404c2820,
+-	0x194c: 0x404c2a20, 0x194d: 0x404c2c20, 0x194e: 0x404c2e20, 0x194f: 0x404c3020,
+-	0x1950: 0x404c3220, 0x1951: 0x404c3420, 0x1952: 0x404c3620, 0x1953: 0x404c3820,
+-	0x1954: 0x404c3a20, 0x1955: 0x404c3c20, 0x1956: 0x404c3e20, 0x1957: 0x404c4020,
+-	0x1958: 0x404c4220, 0x1959: 0x404c4420, 0x195a: 0x404c4620, 0x195b: 0x404c4820,
+-	0x195c: 0x404c4a20,
+-	0x1960: 0x404c4c20, 0x1961: 0x404c4e20, 0x1962: 0x404c5020, 0x1963: 0x404c5220,
+-	0x1964: 0x404c5420, 0x1965: 0x404c5620, 0x1966: 0x404c5820, 0x1967: 0x404c5a20,
+-	0x1968: 0x404c5c20, 0x1969: 0x404c5e20, 0x196a: 0x404c6020, 0x196b: 0x404c6220,
+-	0x1970: 0x404c6420, 0x1971: 0x404c6620, 0x1972: 0x404c6820, 0x1973: 0x404c6a20,
+-	0x1974: 0x404c6c20, 0x1975: 0x404c6e20, 0x1976: 0x404c7020, 0x1977: 0x404c7220,
+-	0x1978: 0x404c7420, 0x1979: 0xade11f02, 0x197a: 0xae612002, 0x197b: 0xadc12102,
+-	// Block 0x66, offset 0x1980
+-	0x1980: 0x4007a620,
+-	0x1984: 0x4002c220, 0x1985: 0x4002d220, 0x1986: 0xe000018e, 0x1987: 0xe000021f,
+-	0x1988: 0xe000033a, 0x1989: 0xe0000414, 0x198a: 0xe00004e9, 0x198b: 0xe00005b3,
+-	0x198c: 0xe000067e, 0x198d: 0xe0000726, 0x198e: 0xe00007d2, 0x198f: 0xe0000877,
+-	0x1990: 0x40503020, 0x1991: 0x40503220, 0x1992: 0x40503420, 0x1993: 0x40503620,
+-	0x1994: 0x40503820, 0x1995: 0x40503a20, 0x1996: 0x40503c20, 0x1997: 0x40503e20,
+-	0x1998: 0x40504020, 0x1999: 0x40504220, 0x199a: 0x40504420, 0x199b: 0x40504620,
+-	0x199c: 0x40504820, 0x199d: 0x40504a20, 0x199e: 0x40504c20, 0x199f: 0x40504e20,
+-	0x19a0: 0x40505020, 0x19a1: 0x40505220, 0x19a2: 0x40505420, 0x19a3: 0x40505620,
+-	0x19a4: 0x40505820, 0x19a5: 0x40505a20, 0x19a6: 0x40505c20, 0x19a7: 0x40505e20,
+-	0x19a8: 0x40506020, 0x19a9: 0x40506220, 0x19aa: 0x40506420, 0x19ab: 0x40506620,
+-	0x19ac: 0x40506820, 0x19ad: 0x40506a20,
+-	0x19b0: 0x40506c20, 0x19b1: 0x40506e20, 0x19b2: 0x40507020, 0x19b3: 0x40507220,
+-	0x19b4: 0x40507420,
+-	// Block 0x67, offset 0x19c0
+-	0x19c0: 0x40507620, 0x19c1: 0x40507820, 0x19c2: 0x40507a20, 0x19c3: 0x40507c20,
+-	0x19c4: 0x40507e20, 0x19c5: 0x40508020, 0x19c6: 0x40508220, 0x19c7: 0x40508420,
+-	0x19c8: 0x40508620, 0x19c9: 0x40508820, 0x19ca: 0x40508a20, 0x19cb: 0x40508c20,
+-	0x19cc: 0x40508e20, 0x19cd: 0x40509020, 0x19ce: 0x40509220, 0x19cf: 0x40509420,
+-	0x19d0: 0x40509620, 0x19d1: 0x40509820, 0x19d2: 0x40509a20, 0x19d3: 0x40509c20,
+-	0x19d4: 0x40509e20, 0x19d5: 0x4050a020, 0x19d6: 0x4050a220, 0x19d7: 0x4050a420,
+-	0x19d8: 0x4050a620, 0x19d9: 0x4050a820, 0x19da: 0x4050aa20, 0x19db: 0x4050ac20,
+-	0x19dc: 0x4050ae20, 0x19dd: 0x4050b020, 0x19de: 0x4050b220, 0x19df: 0x4050b420,
+-	0x19e0: 0x4050b620, 0x19e1: 0x4050b820, 0x19e2: 0x4050ba20, 0x19e3: 0x4050bc20,
+-	0x19e4: 0x4050be20, 0x19e5: 0x4050c020, 0x19e6: 0x4050c220, 0x19e7: 0x4050c420,
+-	0x19e8: 0x4050c620, 0x19e9: 0x4050c820, 0x19ea: 0x4050ca20, 0x19eb: 0x4050cc20,
+-	0x19f0: 0x4050ce20, 0x19f1: 0x4050d020, 0x19f2: 0x4050d220, 0x19f3: 0x4050d420,
+-	0x19f4: 0x4050d620, 0x19f5: 0x4050d820, 0x19f6: 0x4050da20, 0x19f7: 0x4050dc20,
+-	0x19f8: 0x4050de20, 0x19f9: 0x4050e020, 0x19fa: 0x4050e220, 0x19fb: 0x4050e420,
+-	0x19fc: 0x4050e620, 0x19fd: 0x4050e820, 0x19fe: 0x4050ea20, 0x19ff: 0x4050ec20,
+-	// Block 0x68, offset 0x1a00
+-	0x1a00: 0x4050ee20, 0x1a01: 0x4050f020, 0x1a02: 0x4050f220, 0x1a03: 0x4050f420,
+-	0x1a04: 0x4050f620, 0x1a05: 0x4050f820, 0x1a06: 0x4050fa20, 0x1a07: 0x4050fc20,
+-	0x1a08: 0x4050fe20, 0x1a09: 0x40510020,
+-	0x1a10: 0xe0000191, 0x1a11: 0xe0000222, 0x1a12: 0xe000033d, 0x1a13: 0xe0000417,
+-	0x1a14: 0xe00004ec, 0x1a15: 0xe00005b6, 0x1a16: 0xe0000681, 0x1a17: 0xe0000729,
+-	0x1a18: 0xe00007d5, 0x1a19: 0xe000087a, 0x1a1a: 0xe0000225,
+-	0x1a1e: 0xe0002022, 0x1a1f: 0xe0002025,
+-	0x1a20: 0x4007b220, 0x1a21: 0x4007b420, 0x1a22: 0x4007b620, 0x1a23: 0x4007b820,
+-	0x1a24: 0x4007ba20, 0x1a25: 0x4007bc20, 0x1a26: 0x4007be20, 0x1a27: 0x4007c020,
+-	0x1a28: 0x4007c220, 0x1a29: 0x4007c420, 0x1a2a: 0x4007c620, 0x1a2b: 0x4007c820,
+-	0x1a2c: 0x4007ca20, 0x1a2d: 0x4007cc20, 0x1a2e: 0x4007ce20, 0x1a2f: 0x4007d020,
+-	0x1a30: 0x4007d220, 0x1a31: 0x4007d420, 0x1a32: 0x4007d620, 0x1a33: 0x4007d820,
+-	0x1a34: 0x4007da20, 0x1a35: 0x4007dc20, 0x1a36: 0x4007de20, 0x1a37: 0x4007e020,
+-	0x1a38: 0x4007e220, 0x1a39: 0x4007e420, 0x1a3a: 0x4007e620, 0x1a3b: 0x4007e820,
+-	0x1a3c: 0x4007ea20, 0x1a3d: 0x4007ec20, 0x1a3e: 0x4007ee20, 0x1a3f: 0x4007f020,
+-	// Block 0x69, offset 0x1a40
+-	0x1a40: 0x404d1420, 0x1a41: 0x404d1620, 0x1a42: 0x404d1820, 0x1a43: 0x404d1a20,
+-	0x1a44: 0x404d1c20, 0x1a45: 0x404d1e20, 0x1a46: 0x404d2020, 0x1a47: 0x404d2220,
+-	0x1a48: 0x404d2420, 0x1a49: 0x404d2620, 0x1a4a: 0x404d2820, 0x1a4b: 0x404d2a20,
+-	0x1a4c: 0x404d2c20, 0x1a4d: 0x404d2e20, 0x1a4e: 0x404d3020, 0x1a4f: 0x404d3220,
+-	0x1a50: 0x404d3420, 0x1a51: 0x404d3620, 0x1a52: 0x404d3820, 0x1a53: 0x404d3a20,
+-	0x1a54: 0x404d3c20, 0x1a55: 0x404d3e20, 0x1a56: 0x404d4020, 0x1a57: 0x82e626a1,
+-	0x1a58: 0x82dc26a2, 0x1a59: 0x404d4620, 0x1a5a: 0x404d4820, 0x1a5b: 0x404d4a20,
+-	0x1a5e: 0x40036620, 0x1a5f: 0x40036820,
+-	0x1a60: 0x40510220, 0x1a61: 0x40510420, 0x1a62: 0x40510620, 0x1a63: 0x40510820,
+-	0x1a64: 0x40510a20, 0x1a65: 0x40510c20, 0x1a66: 0x40510e20, 0x1a67: 0x40511020,
+-	0x1a68: 0x40511220, 0x1a69: 0x40511420, 0x1a6a: 0x40511620, 0x1a6b: 0x40511820,
+-	0x1a6c: 0x40511a20, 0x1a6d: 0x40511c20, 0x1a6e: 0x40511e20, 0x1a6f: 0x40512020,
+-	0x1a70: 0x40512220, 0x1a71: 0x40512420, 0x1a72: 0x40512620, 0x1a73: 0x40512820,
+-	0x1a74: 0x40512a20, 0x1a75: 0x40512c20, 0x1a76: 0x40512e20, 0x1a77: 0x40513020,
+-	0x1a78: 0x40513220, 0x1a79: 0x40513420, 0x1a7a: 0x40513620, 0x1a7b: 0x40513820,
+-	0x1a7c: 0x40513a20, 0x1a7d: 0x40513c20, 0x1a7e: 0x40513e20, 0x1a7f: 0x40514020,
+-	// Block 0x6a, offset 0x1a80
+-	0x1a80: 0x40514220, 0x1a81: 0x40514420, 0x1a82: 0x40514620, 0x1a83: 0x40514820,
+-	0x1a84: 0x40514a20, 0x1a85: 0x40514c20, 0x1a86: 0x40514e20, 0x1a87: 0x40515020,
+-	0x1a88: 0x40515220, 0x1a89: 0x40515420, 0x1a8a: 0x40515620, 0x1a8b: 0x40515820,
+-	0x1a8c: 0x40515a20, 0x1a8d: 0x40516c20, 0x1a8e: 0x40516e20, 0x1a8f: 0x40517020,
+-	0x1a90: 0x40517220, 0x1a91: 0x40517420, 0x1a92: 0x40517620, 0x1a93: 0x40515c20,
+-	0x1a94: 0xe0002029, 0x1a95: 0x40516020, 0x1a96: 0x40516220, 0x1a97: 0x40516420,
+-	0x1a98: 0x00510e84, 0x1a99: 0x00510e84, 0x1a9a: 0x00513884, 0x1a9b: 0x00513884,
+-	0x1a9c: 0x40516620, 0x1a9d: 0x40516820, 0x1a9e: 0x40516a20,
+-	0x1aa0: 0x820928cd, 0x1aa1: 0x40517820, 0x1aa2: 0x40517c20, 0x1aa3: 0x40517e20,
+-	0x1aa4: 0x00517e84, 0x1aa5: 0x40518020, 0x1aa6: 0x40518220, 0x1aa7: 0x40518420,
+-	0x1aa8: 0x40518620, 0x1aa9: 0x40518820, 0x1aaa: 0x40518a20, 0x1aab: 0x40515e20,
+-	0x1aac: 0x40517a20, 0x1aad: 0x40519820, 0x1aae: 0x40518c20, 0x1aaf: 0x40518e20,
+-	0x1ab0: 0x40519220, 0x1ab1: 0x40519420, 0x1ab2: 0x40519620, 0x1ab3: 0x40519020,
+-	0x1ab4: 0xa000f302, 0x1ab5: 0xae611702, 0x1ab6: 0xae611802, 0x1ab7: 0xae611902,
+-	0x1ab8: 0xae611a02, 0x1ab9: 0xae611b02, 0x1aba: 0xae611c02, 0x1abb: 0xae611d02,
+-	0x1abc: 0xae611e02, 0x1abf: 0xadc00000,
+-	// Block 0x6b, offset 0x1ac0
+-	0x1ac0: 0xe0000194, 0x1ac1: 0xe0000228, 0x1ac2: 0xe0000340, 0x1ac3: 0xe000041a,
+-	0x1ac4: 0xe00004ef, 0x1ac5: 0xe00005b9, 0x1ac6: 0xe0000684, 0x1ac7: 0xe000072c,
+-	0x1ac8: 0xe00007d8, 0x1ac9: 0xe000087d,
+-	0x1ad0: 0xe0000197, 0x1ad1: 0xe000022b, 0x1ad2: 0xe0000343, 0x1ad3: 0xe000041d,
+-	0x1ad4: 0xe00004f2, 0x1ad5: 0xe00005bc, 0x1ad6: 0xe0000687, 0x1ad7: 0xe000072f,
+-	0x1ad8: 0xe00007db, 0x1ad9: 0xe0000880,
+-	0x1ae0: 0x4005c220, 0x1ae1: 0x4005c420, 0x1ae2: 0x4005c620, 0x1ae3: 0x4005c820,
+-	0x1ae4: 0x4005ca20, 0x1ae5: 0x4005cc20, 0x1ae6: 0x4005ce20, 0x1ae7: 0x4027be20,
+-	0x1ae8: 0x40032a20, 0x1ae9: 0x40032c20, 0x1aea: 0x40032e20, 0x1aeb: 0x40033020,
+-	0x1aec: 0x4005d020, 0x1aed: 0x4005d220,
+-	// Block 0x6c, offset 0x1b00
+-	0x1b00: 0xa000f202, 0x1b01: 0xa000f202, 0x1b02: 0xa000f302, 0x1b03: 0xa000f702,
+-	0x1b04: 0xa000f402, 0x1b05: 0xc3190821, 0x1b06: 0x40522820, 0x1b07: 0xc31b0821,
+-	0x1b08: 0x40522c20, 0x1b09: 0xc31d0821, 0x1b0a: 0x40523020, 0x1b0b: 0xc31f0821,
+-	0x1b0c: 0x40523420, 0x1b0d: 0xc3210821, 0x1b0e: 0x40523820, 0x1b0f: 0x40523a20,
+-	0x1b10: 0x40523c20, 0x1b11: 0xc3230821, 0x1b12: 0x40524020, 0x1b13: 0x40524220,
+-	0x1b14: 0x40524820, 0x1b15: 0x40524a20, 0x1b16: 0x40524c20, 0x1b17: 0x40524e20,
+-	0x1b18: 0x40525020, 0x1b19: 0x40525220, 0x1b1a: 0x40525420, 0x1b1b: 0x40525620,
+-	0x1b1c: 0x40525820, 0x1b1d: 0x40525a20, 0x1b1e: 0x40525c20, 0x1b1f: 0x40525e20,
+-	0x1b20: 0x40526020, 0x1b21: 0x40526220, 0x1b22: 0x40526420, 0x1b23: 0x40526820,
+-	0x1b24: 0x40526a20, 0x1b25: 0x40526c20, 0x1b26: 0x40526e20, 0x1b27: 0x40527020,
+-	0x1b28: 0x40527420, 0x1b29: 0x40527620, 0x1b2a: 0x40527820, 0x1b2b: 0x40527a20,
+-	0x1b2c: 0x40527c20, 0x1b2d: 0x40527e20, 0x1b2e: 0x40528020, 0x1b2f: 0x40528220,
+-	0x1b30: 0x40528620, 0x1b31: 0x40528820, 0x1b32: 0x40528a20, 0x1b33: 0x40529020,
+-	0x1b34: 0xa070f102, 0x1b35: 0x40529220, 0x1b36: 0x40529420, 0x1b37: 0x40529620,
+-	0x1b38: 0x40529820, 0x1b39: 0x40529a20, 0x1b3a: 0xc3250821, 0x1b3b: 0x40529e20,
+-	0x1b3c: 0xc3270821, 0x1b3d: 0x4052a220, 0x1b3e: 0xc3290821, 0x1b3f: 0xc32b0821,
+-	// Block 0x6d, offset 0x1b40
+-	0x1b40: 0x4052a820, 0x1b41: 0x4052aa20, 0x1b42: 0xc32d0821, 0x1b43: 0x4052ae20,
+-	0x1b44: 0x82092958, 0x1b45: 0x40524420, 0x1b46: 0x40524620, 0x1b47: 0x40526620,
+-	0x1b48: 0x40527220, 0x1b49: 0x40528420, 0x1b4a: 0x40528c20, 0x1b4b: 0x40528e20,
+-	0x1b50: 0xe00001be, 0x1b51: 0xe0000252, 0x1b52: 0xe000036a, 0x1b53: 0xe0000444,
+-	0x1b54: 0xe0000519, 0x1b55: 0xe00005e3, 0x1b56: 0xe00006ae, 0x1b57: 0xe0000756,
+-	0x1b58: 0xe0000802, 0x1b59: 0xe00008a7, 0x1b5a: 0x40036a20, 0x1b5b: 0x40036c20,
+-	0x1b5c: 0x4002f620, 0x1b5d: 0x4002ae20, 0x1b5e: 0x40033220, 0x1b5f: 0x40033420,
+-	0x1b60: 0x40022020, 0x1b61: 0x4007f220, 0x1b62: 0x4007f420, 0x1b63: 0x4007f620,
+-	0x1b64: 0x4007f820, 0x1b65: 0x4007fa20, 0x1b66: 0x4007fc20, 0x1b67: 0x4007fe20,
+-	0x1b68: 0x40080020, 0x1b69: 0x40080220, 0x1b6a: 0x40080420, 0x1b6b: 0xae600000,
+-	0x1b6c: 0xadc00000, 0x1b6d: 0xae600000, 0x1b6e: 0xae600000, 0x1b6f: 0xae600000,
+-	0x1b70: 0xae600000, 0x1b71: 0xae600000, 0x1b72: 0xae600000, 0x1b73: 0xae600000,
+-	0x1b74: 0x40080620, 0x1b75: 0x40080820, 0x1b76: 0x40080a20, 0x1b77: 0x40080c20,
+-	0x1b78: 0x40080e20, 0x1b79: 0x40081020, 0x1b7a: 0x40081220, 0x1b7b: 0x40081420,
+-	0x1b7c: 0x40081620,
+-	// Block 0x6e, offset 0x1b80
+-	0x1b80: 0xa000f302, 0x1b81: 0xa000f902, 0x1b82: 0xa000f402, 0x1b83: 0x4047d420,
+-	0x1b84: 0x4047d620, 0x1b85: 0x4047d820, 0x1b86: 0x4047da20, 0x1b87: 0x4047dc20,
+-	0x1b88: 0x4047de20, 0x1b89: 0x4047e020, 0x1b8a: 0x4047e220, 0x1b8b: 0x4047e620,
+-	0x1b8c: 0x4047e820, 0x1b8d: 0x4047ea20, 0x1b8e: 0x4047ec20, 0x1b8f: 0x4047ee20,
+-	0x1b90: 0x4047f020, 0x1b91: 0x4047f220, 0x1b92: 0x4047f420, 0x1b93: 0x4047f620,
+-	0x1b94: 0x4047f820, 0x1b95: 0x4047fa20, 0x1b96: 0x4047fc20, 0x1b97: 0x4047fe20,
+-	0x1b98: 0x40480020, 0x1b99: 0x40480420, 0x1b9a: 0x40480820, 0x1b9b: 0x40480c20,
+-	0x1b9c: 0x40481220, 0x1b9d: 0x40481820, 0x1b9e: 0x40481c20, 0x1b9f: 0x40481e20,
+-	0x1ba0: 0x40482220, 0x1ba1: 0x40480a20, 0x1ba2: 0x40480e20, 0x1ba3: 0x40481420,
+-	0x1ba4: 0x40482420, 0x1ba5: 0x40482620, 0x1ba6: 0x40482820, 0x1ba7: 0x40482a20,
+-	0x1ba8: 0x40482c20, 0x1ba9: 0x40482e20, 0x1baa: 0x82092418, 0x1bab: 0x82092419,
+-	0x1bac: 0x40480620, 0x1bad: 0x40481a20, 0x1bae: 0x4047e420, 0x1baf: 0x40482020,
+-	0x1bb0: 0xe00001c4, 0x1bb1: 0xe0000258, 0x1bb2: 0xe0000370, 0x1bb3: 0xe000044a,
+-	0x1bb4: 0xe000051f, 0x1bb5: 0xe00005e9, 0x1bb6: 0xe00006b4, 0x1bb7: 0xe000075c,
+-	0x1bb8: 0xe0000808, 0x1bb9: 0xe00008ad, 0x1bba: 0x0047d484, 0x1bbb: 0x40481020,
+-	0x1bbc: 0x40481620, 0x1bbd: 0x40480220, 0x1bbe: 0x0047e299, 0x1bbf: 0x00480499,
+-	// Block 0x6f, offset 0x1bc0
+-	0x1bc0: 0x404d4c20, 0x1bc1: 0x004d4c84, 0x1bc2: 0x404d4e20, 0x1bc3: 0x004d4e84,
+-	0x1bc4: 0x004d4e84, 0x1bc5: 0x404d5020, 0x1bc6: 0x004d5084, 0x1bc7: 0x404d5220,
+-	0x1bc8: 0x004d5284, 0x1bc9: 0x404d5420, 0x1bca: 0x004d5484, 0x1bcb: 0x404d5620,
+-	0x1bcc: 0x004d5684, 0x1bcd: 0x004d5684, 0x1bce: 0x404d5820, 0x1bcf: 0x004d5884,
+-	0x1bd0: 0x404d5a20, 0x1bd1: 0x404d5c20, 0x1bd2: 0x404d5e20, 0x1bd3: 0x004d5e84,
+-	0x1bd4: 0x404d6020, 0x1bd5: 0x004d6084, 0x1bd6: 0x404d6220, 0x1bd7: 0x004d6284,
+-	0x1bd8: 0x404d6420, 0x1bd9: 0x004d6484, 0x1bda: 0x004d6484, 0x1bdb: 0x404d6620,
+-	0x1bdc: 0x004d6684, 0x1bdd: 0x404d6820, 0x1bde: 0x404d6a20, 0x1bdf: 0x004d6a84,
+-	0x1be0: 0x404d6c20, 0x1be1: 0x404d6e20, 0x1be2: 0x404d7020, 0x1be3: 0x404d7220,
+-	0x1be4: 0x404d7420, 0x1be5: 0x404d7620, 0x1be6: 0xa070f102, 0x1be7: 0x404d7820,
+-	0x1be8: 0x004d7884, 0x1be9: 0x404d7a20, 0x1bea: 0x404d7c20, 0x1beb: 0x004d7c84,
+-	0x1bec: 0x404d7e20, 0x1bed: 0x004d7e84, 0x1bee: 0x404d8020, 0x1bef: 0x004d8084,
+-	0x1bf0: 0x404d8220, 0x1bf1: 0x404d8420, 0x1bf2: 0x820926c3, 0x1bf3: 0x820926c4,
+-	0x1bfc: 0x4005ec20, 0x1bfd: 0x4005ee20, 0x1bfe: 0x4005f020, 0x1bff: 0x4005f220,
+-	// Block 0x70, offset 0x1c00
+-	0x1c00: 0x404b3620, 0x1c01: 0x404b3820, 0x1c02: 0x404b3a20, 0x1c03: 0x404b3c20,
+-	0x1c04: 0x404b3e20, 0x1c05: 0x404b4020, 0x1c06: 0x404b4220, 0x1c07: 0x404b4420,
+-	0x1c08: 0x404b4620, 0x1c09: 0x404b4820, 0x1c0a: 0x404b5020, 0x1c0b: 0x404b5220,
+-	0x1c0c: 0x404b5420, 0x1c0d: 0x404b5620, 0x1c0e: 0x404b5820, 0x1c0f: 0x404b5a20,
+-	0x1c10: 0x404b5c20, 0x1c11: 0x404b5e20, 0x1c12: 0x404b6020, 0x1c13: 0x404b6220,
+-	0x1c14: 0x404b6420, 0x1c15: 0x404b6620, 0x1c16: 0x404b6820, 0x1c17: 0x404b6a20,
+-	0x1c18: 0x404b6c20, 0x1c19: 0x404b6e20, 0x1c1a: 0x404b7020, 0x1c1b: 0x404b7420,
+-	0x1c1c: 0x404b7820, 0x1c1d: 0x404b7a20, 0x1c1e: 0x404b7c20, 0x1c1f: 0x404b7e20,
+-	0x1c20: 0x404b8020, 0x1c21: 0x404b8220, 0x1c22: 0x404b8420, 0x1c23: 0x404b8620,
+-	0x1c24: 0x404b7220, 0x1c25: 0x404b7620, 0x1c26: 0x404b8a20, 0x1c27: 0x404b8c20,
+-	0x1c28: 0x404b8e20, 0x1c29: 0x404b9020, 0x1c2a: 0x404b9220, 0x1c2b: 0x404b9420,
+-	0x1c2c: 0x404b9620, 0x1c2d: 0x404b9820, 0x1c2e: 0x404b9a20, 0x1c2f: 0x404b9c20,
+-	0x1c30: 0x404b9e20, 0x1c31: 0x404ba020, 0x1c32: 0x404ba220, 0x1c33: 0x404ba420,
+-	0x1c34: 0x404ba620, 0x1c35: 0x404ba820, 0x1c36: 0x404b8820, 0x1c37: 0xa070f102,
+-	0x1c3b: 0x40031420,
+-	0x1c3c: 0x40031620, 0x1c3d: 0x4005ae20, 0x1c3e: 0x4005b020, 0x1c3f: 0x4005b220,
+-	// Block 0x71, offset 0x1c40
+-	0x1c40: 0xe00001a6, 0x1c41: 0xe000023a, 0x1c42: 0xe0000352, 0x1c43: 0xe000042c,
+-	0x1c44: 0xe0000501, 0x1c45: 0xe00005cb, 0x1c46: 0xe0000696, 0x1c47: 0xe000073e,
+-	0x1c48: 0xe00007ea, 0x1c49: 0xe000088f,
+-	0x1c4d: 0x404b4a20, 0x1c4e: 0x404b4c20, 0x1c4f: 0x404b4e20,
+-	0x1c50: 0xe00001ca, 0x1c51: 0xe000025e, 0x1c52: 0xe0000376, 0x1c53: 0xe0000450,
+-	0x1c54: 0xe0000525, 0x1c55: 0xe00005ef, 0x1c56: 0xe00006ba, 0x1c57: 0xe0000762,
+-	0x1c58: 0xe000080e, 0x1c59: 0xe00008b3, 0x1c5a: 0x40542e20, 0x1c5b: 0x40543020,
+-	0x1c5c: 0x40543220, 0x1c5d: 0x40543420, 0x1c5e: 0x40543620, 0x1c5f: 0x40543820,
+-	0x1c60: 0x40543a20, 0x1c61: 0x40543c20, 0x1c62: 0x40543e20, 0x1c63: 0x40544020,
+-	0x1c64: 0x40544220, 0x1c65: 0x40544420, 0x1c66: 0x40544620, 0x1c67: 0x40544820,
+-	0x1c68: 0x40544a20, 0x1c69: 0x40544c20, 0x1c6a: 0x40544e20, 0x1c6b: 0x40545020,
+-	0x1c6c: 0x40545220, 0x1c6d: 0x40545420, 0x1c6e: 0x40545620, 0x1c6f: 0x40545820,
+-	0x1c70: 0x40545a20, 0x1c71: 0x40545c20, 0x1c72: 0x40545e20, 0x1c73: 0x40546020,
+-	0x1c74: 0x40546220, 0x1c75: 0x40546420, 0x1c76: 0x40546620, 0x1c77: 0x40546820,
+-	0x1c78: 0x40546a20, 0x1c79: 0x40546c20, 0x1c7a: 0x40546e20, 0x1c7b: 0x40547020,
+-	0x1c7c: 0x40547220, 0x1c7d: 0x40547420, 0x1c7e: 0x40035820, 0x1c7f: 0x40035a20,
+-	// Block 0x72, offset 0x1c80
+-	0x1c80: 0x4005d620, 0x1c81: 0x4005d820, 0x1c82: 0x4005da20, 0x1c83: 0x4005dc20,
+-	0x1c84: 0x4005de20, 0x1c85: 0x4005e020, 0x1c86: 0x4005e220, 0x1c87: 0x4005e420,
+-	0x1c90: 0xae600000, 0x1c91: 0xae600000, 0x1c92: 0xae600000, 0x1c93: 0xa0000000,
+-	0x1c94: 0xa0100000, 0x1c95: 0xadc00000, 0x1c96: 0xadc00000, 0x1c97: 0xadc00000,
+-	0x1c98: 0xadc00000, 0x1c99: 0xadc00000, 0x1c9a: 0xae600000, 0x1c9b: 0xae600000,
+-	0x1c9c: 0xadc00000, 0x1c9d: 0xadc00000, 0x1c9e: 0xadc00000, 0x1c9f: 0xadc00000,
+-	0x1ca0: 0xae600000, 0x1ca1: 0xa0000000, 0x1ca2: 0xa0100000, 0x1ca3: 0xa0100000,
+-	0x1ca4: 0xa0100000, 0x1ca5: 0xa0100000, 0x1ca6: 0xa0100000, 0x1ca7: 0xa0100000,
+-	0x1ca8: 0xa0100000, 0x1ca9: 0x40404020, 0x1caa: 0x00404084, 0x1cab: 0x00404084,
+-	0x1cac: 0x00404084, 0x1cad: 0xadc0f302, 0x1cae: 0x00404084, 0x1caf: 0x00404084,
+-	0x1cb0: 0x00404084, 0x1cb1: 0x00404084, 0x1cb2: 0xa000f402, 0x1cb3: 0xa000f402,
+-	0x1cb4: 0xae600000, 0x1cb5: 0x40404220, 0x1cb6: 0x40404420,
+-	// Block 0x73, offset 0x1cc0
+-	0x1cc0: 0x402be620, 0x1cc1: 0x402bec20, 0x1cc2: 0x402bee20, 0x1cc3: 0x402c2420,
+-	0x1cc4: 0x402c4220, 0x1cc5: 0x402c6a20, 0x1cc6: 0x402c6c20, 0x1cc7: 0x402ca020,
+-	0x1cc8: 0x402ce620, 0x1cc9: 0x402db420, 0x1cca: 0x402ddc20, 0x1ccb: 0x402e0620,
+-	0x1ccc: 0x402e3420, 0x1ccd: 0x402e8a20, 0x1cce: 0x402eb020, 0x1ccf: 0x402eea20,
+-	0x1cd0: 0x402f0220, 0x1cd1: 0x402eec20, 0x1cd2: 0x402f0420, 0x1cd3: 0x402ef820,
+-	0x1cd4: 0x402ef620, 0x1cd5: 0x402f2a20, 0x1cd6: 0x402f0a20, 0x1cd7: 0x402f0c20,
+-	0x1cd8: 0x402f3420, 0x1cd9: 0x402f8c20, 0x1cda: 0x402fa020, 0x1cdb: 0x40303420,
+-	0x1cdc: 0x40307420, 0x1cdd: 0x40307620, 0x1cde: 0x40307820, 0x1cdf: 0x4030aa20,
+-	0x1ce0: 0x4030c620, 0x1ce1: 0x4030ea20, 0x1ce2: 0x40313220, 0x1ce3: 0x40316c20,
+-	0x1ce4: 0x4031f420, 0x1ce5: 0x4031f620, 0x1ce6: 0x40325820, 0x1ce7: 0x40327420,
+-	0x1ce8: 0x40328020, 0x1ce9: 0x40328a20, 0x1cea: 0x4032a020, 0x1ceb: 0x40348c20,
+-	0x1cec: 0x002bde9d, 0x1ced: 0xe00009e1, 0x1cee: 0x002c0a9d, 0x1cef: 0x402c2220,
+-	0x1cf0: 0x002c629d, 0x1cf1: 0x002c989d, 0x1cf2: 0x002cae9d, 0x1cf3: 0x002d229d,
+-	0x1cf4: 0x002d689d, 0x1cf5: 0x002d9a9d, 0x1cf6: 0x002dcc9d, 0x1cf7: 0x002dfe9d,
+-	0x1cf8: 0x002e229d, 0x1cf9: 0x002e829d, 0x1cfa: 0x002e9e9d, 0x1cfb: 0x402eae20,
+-	0x1cfc: 0x002ee29d, 0x1cfd: 0x002f229d, 0x1cfe: 0x002f2c9d, 0x1cff: 0x002f7a9d,
+-	// Block 0x74, offset 0x1d00
+-	0x1d00: 0x00302c9d, 0x1d01: 0x00306c9d, 0x1d02: 0x0030e29d, 0x1d03: 0x002bde94,
+-	0x1d04: 0x002bf094, 0x1d05: 0x002bf894, 0x1d06: 0x002bee94, 0x1d07: 0x002c0a94,
+-	0x1d08: 0x002c6294, 0x1d09: 0x002c9894, 0x1d0a: 0x002cb894, 0x1d0b: 0x002cc294,
+-	0x1d0c: 0x002ce694, 0x1d0d: 0x002d2294, 0x1d0e: 0x002db494, 0x1d0f: 0x002dfe94,
+-	0x1d10: 0x002e8294, 0x1d11: 0x002eda94, 0x1d12: 0x002ee294, 0x1d13: 0x002efa94,
+-	0x1d14: 0x002f0a94, 0x1d15: 0x002f0c94, 0x1d16: 0x002f2c94, 0x1d17: 0x00302c94,
+-	0x1d18: 0x00306c94, 0x1d19: 0x00307694, 0x1d1a: 0x0030a094, 0x1d1b: 0x0030be94,
+-	0x1d1c: 0x0031f694, 0x1d1d: 0x00325494, 0x1d1e: 0x00325694, 0x1d1f: 0x00325a94,
+-	0x1d20: 0x00329a94, 0x1d21: 0x00329c94, 0x1d22: 0x002d9a95, 0x1d23: 0x002f7a95,
+-	0x1d24: 0x00306c95, 0x1d25: 0x0030be95, 0x1d26: 0x00325495, 0x1d27: 0x00325695,
+-	0x1d28: 0x00328895, 0x1d29: 0x00329a95, 0x1d2a: 0x00329c95, 0x1d2b: 0x40307a20,
+-	0x1d2c: 0x402c2620, 0x1d2d: 0x402c6e20, 0x1d2e: 0x402d1220, 0x1d2f: 0x402e8c20,
+-	0x1d30: 0x402eb220, 0x1d31: 0x402f3a20, 0x1d32: 0x402f9620, 0x1d33: 0x402fce20,
+-	0x1d34: 0x402ff020, 0x1d35: 0x40304020, 0x1d36: 0x40313c20, 0x1d37: 0x402d5420,
+-	0x1d38: 0x0034ba94, 0x1d39: 0xe0000bd9, 0x1d3a: 0xe0000fc1, 0x1d3b: 0x402dbe20,
+-	0x1d3c: 0x402dca20, 0x1d3d: 0x402f3620, 0x1d3e: 0x40308420, 0x1d3f: 0x4030bc20,
+-	// Block 0x75, offset 0x1d40
+-	0x1d40: 0x402c2820, 0x1d41: 0x402c7020, 0x1d42: 0x402d1420, 0x1d43: 0x402d4220,
+-	0x1d44: 0x402e0820, 0x1d45: 0x402e5220, 0x1d46: 0x402e8e20, 0x1d47: 0x402ec620,
+-	0x1d48: 0x402f3c20, 0x1d49: 0x402faa20, 0x1d4a: 0x402ff220, 0x1d4b: 0x40301020,
+-	0x1d4c: 0x4030ca20, 0x1d4d: 0x4030fe20, 0x1d4e: 0x40313e20, 0x1d4f: 0x402bea20,
+-	0x1d50: 0x402c0020, 0x1d51: 0x402c8220, 0x1d52: 0x402caa20, 0x1d53: 0x402cca20,
+-	0x1d54: 0x402ce420, 0x1d55: 0x402cc020, 0x1d56: 0x402dc020, 0x1d57: 0x402f0620,
+-	0x1d58: 0x40302220, 0x1d59: 0x40308620, 0x1d5a: 0x40317620, 0x1d5b: 0x002c0294,
+-	0x1d5c: 0x002c3a94, 0x1d5d: 0x002c5694, 0x1d5e: 0xf0001414, 0x1d5f: 0x002cdc94,
+-	0x1d60: 0x002d0894, 0x1d61: 0x002dee94, 0x1d62: 0x002d2a94, 0x1d63: 0x00308894,
+-	0x1d64: 0x002db694, 0x1d65: 0x002dc294, 0x1d66: 0x002daa94, 0x1d67: 0x002dbe94,
+-	0x1d68: 0x002de694, 0x1d69: 0x002e5494, 0x1d6a: 0x002e5294, 0x1d6b: 0x002e2a94,
+-	0x1d6c: 0x002e9094, 0x1d6d: 0x0030ac94, 0x1d6e: 0x002eb494, 0x1d6f: 0x002ec894,
+-	0x1d70: 0x002ea694, 0x1d71: 0x002f1094, 0x1d72: 0x002f4c94, 0x1d73: 0x002ff494,
+-	0x1d74: 0x00300894, 0x1d75: 0x00304294, 0x1d76: 0x00307c94, 0x1d77: 0x0030b494,
+-	0x1d78: 0x00307494, 0x1d79: 0x0030cc94, 0x1d7a: 0x0030da94, 0x1d7b: 0x00312a94,
+-	0x1d7c: 0x00314894, 0x1d7d: 0x00315094, 0x1d7e: 0x00316494, 0x1d7f: 0x00326a94,
+-	// Block 0x76, offset 0x1d80
+-	0x1d80: 0xae605f02, 0x1d81: 0xae605f02, 0x1d82: 0xadc06002, 0x1d83: 0xae605f02,
+-	0x1d84: 0xae605f02, 0x1d85: 0xae605f02, 0x1d86: 0xae605f02, 0x1d87: 0xae605f02,
+-	0x1d88: 0xae605f02, 0x1d89: 0xae605f02, 0x1d8a: 0x84dc17bd, 0x1d8b: 0xae605f02,
+-	0x1d8c: 0xae605f02, 0x1d8d: 0xaea05f02, 0x1d8e: 0xad605f02, 0x1d8f: 0xadc06002,
+-	0x1d90: 0xaca06002, 0x1d91: 0xae605f02, 0x1d92: 0x84e618d1, 0x1d93: 0xe00009b4,
+-	0x1d94: 0xe00009d9, 0x1d95: 0xe00009f9, 0x1d96: 0xe0000a08, 0x1d97: 0xe0000a50,
+-	0x1d98: 0xe0000ab6, 0x1d99: 0xe0000ab0, 0x1d9a: 0x84e61691, 0x1d9b: 0x84e61699,
+-	0x1d9c: 0x84e616ff, 0x1d9d: 0x84e61711, 0x1d9e: 0x84e61715, 0x1d9f: 0x84e61745,
+-	0x1da0: 0x84e6174f, 0x1da1: 0x84e61753, 0x1da2: 0x84e617c1, 0x1da3: 0x84e617c5,
+-	0x1da4: 0x84e617f3, 0x1da5: 0xe0000f67, 0x1da6: 0x84e61895,
+-	0x1dbc: 0xae906002, 0x1dbd: 0xadc06002, 0x1dbe: 0xae605f02, 0x1dbf: 0xadc06002,
+-	// Block 0x77, offset 0x1dc0
+-	0x1dc0: 0xe00009b1, 0x1dc1: 0xe00009ae, 0x1dc2: 0xe0000a22, 0x1dc3: 0xe0000a1f,
+-	0x1dc4: 0xe0000a28, 0x1dc5: 0xe0000a25, 0x1dc6: 0xe0000a2e, 0x1dc7: 0xe0000a2b,
+-	0x1dc8: 0xe0000a5a, 0x1dc9: 0xe0000a56, 0x1dca: 0xe0000a8c, 0x1dcb: 0xe0000a89,
+-	0x1dcc: 0xe0000a98, 0x1dcd: 0xe0000a95, 0x1dce: 0xe0000aa4, 0x1dcf: 0xe0000aa1,
+-	0x1dd0: 0xe0000a92, 0x1dd1: 0xe0000a8f, 0x1dd2: 0xe0000a9e, 0x1dd3: 0xe0000a9b,
+-	0x1dd4: 0xe0000b55, 0x1dd5: 0xe0000b51, 0x1dd6: 0xe0000b4d, 0x1dd7: 0xe0000b49,
+-	0x1dd8: 0xe0000b7c, 0x1dd9: 0xe0000b79, 0x1dda: 0xe0000b82, 0x1ddb: 0xe0000b7f,
+-	0x1ddc: 0xe0000b39, 0x1ddd: 0xe0000b35, 0x1dde: 0xe0000b8c, 0x1ddf: 0xe0000b89,
+-	0x1de0: 0xe0000bd0, 0x1de1: 0xe0000bcd, 0x1de2: 0xe0000c00, 0x1de3: 0xe0000bfd,
+-	0x1de4: 0xe0000c0c, 0x1de5: 0xe0000c09, 0x1de6: 0xe0000bfa, 0x1de7: 0xe0000bf7,
+-	0x1de8: 0xe0000c06, 0x1de9: 0xe0000c03, 0x1dea: 0xe0000c12, 0x1deb: 0xe0000c0f,
+-	0x1dec: 0xe0000c7e, 0x1ded: 0xe0000c7b, 0x1dee: 0xe0000c4a, 0x1def: 0xe0000c46,
+-	0x1df0: 0xe0000c93, 0x1df1: 0xe0000c90, 0x1df2: 0xe0000cab, 0x1df3: 0xe0000ca8,
+-	0x1df4: 0xe0000cb1, 0x1df5: 0xe0000cae, 0x1df6: 0xe0000cde, 0x1df7: 0xe0000cdb,
+-	0x1df8: 0xe0000ce5, 0x1df9: 0xe0000ce1, 0x1dfa: 0xe0000cf2, 0x1dfb: 0xe0000cef,
+-	0x1dfc: 0xe0000cec, 0x1dfd: 0xe0000ce9, 0x1dfe: 0xe0000d1e, 0x1dff: 0xe0000d1b,
+-	// Block 0x78, offset 0x1e00
+-	0x1e00: 0xe0000d24, 0x1e01: 0xe0000d21, 0x1e02: 0xe0000d2a, 0x1e03: 0xe0000d27,
+-	0x1e04: 0xe0000d69, 0x1e05: 0xe0000d66, 0x1e06: 0xe0000d7b, 0x1e07: 0xe0000d78,
+-	0x1e08: 0xe0000d87, 0x1e09: 0xe0000d84, 0x1e0a: 0xe0000d81, 0x1e0b: 0xe0000d7e,
+-	0x1e0c: 0xe0000ded, 0x1e0d: 0xe0000de9, 0x1e0e: 0xe0000df5, 0x1e0f: 0xe0000df1,
+-	0x1e10: 0xe0000e3d, 0x1e11: 0xe0000e39, 0x1e12: 0xe0000e35, 0x1e13: 0xe0000e31,
+-	0x1e14: 0xe0000ea7, 0x1e15: 0xe0000ea4, 0x1e16: 0xe0000ead, 0x1e17: 0xe0000eaa,
+-	0x1e18: 0xe0000ed6, 0x1e19: 0xe0000ed3, 0x1e1a: 0xe0000ef4, 0x1e1b: 0xe0000ef1,
+-	0x1e1c: 0xe0000efb, 0x1e1d: 0xe0000ef7, 0x1e1e: 0xe0000f02, 0x1e1f: 0xe0000eff,
+-	0x1e20: 0xe0000f41, 0x1e21: 0xe0000f3e, 0x1e22: 0xe0000f53, 0x1e23: 0xe0000f50,
+-	0x1e24: 0xe0000f26, 0x1e25: 0xe0000f22, 0x1e26: 0xe0000f3a, 0x1e27: 0xe0000f36,
+-	0x1e28: 0xe0000f5a, 0x1e29: 0xe0000f56, 0x1e2a: 0xe0000f93, 0x1e2b: 0xe0000f90,
+-	0x1e2c: 0xe0000f9f, 0x1e2d: 0xe0000f9c, 0x1e2e: 0xe0000fb1, 0x1e2f: 0xe0000fae,
+-	0x1e30: 0xe0000fab, 0x1e31: 0xe0000fa8, 0x1e32: 0xe0001093, 0x1e33: 0xe0001090,
+-	0x1e34: 0xe000109f, 0x1e35: 0xe000109c, 0x1e36: 0xe0001099, 0x1e37: 0xe0001096,
+-	0x1e38: 0xe0001032, 0x1e39: 0xe000102e, 0x1e3a: 0xe0001046, 0x1e3b: 0xe0001042,
+-	0x1e3c: 0xe00010a9, 0x1e3d: 0xe00010a6, 0x1e3e: 0xe00010af, 0x1e3f: 0xe00010ac,
+-	// Block 0x79, offset 0x1e40
+-	0x1e40: 0xe00010d2, 0x1e41: 0xe00010cf, 0x1e42: 0xe00010cc, 0x1e43: 0xe00010c9,
+-	0x1e44: 0xe00010e1, 0x1e45: 0xe00010de, 0x1e46: 0xe00010e7, 0x1e47: 0xe00010e4,
+-	0x1e48: 0xe00010ed, 0x1e49: 0xe00010ea, 0x1e4a: 0xe00010fc, 0x1e4b: 0xe00010f9,
+-	0x1e4c: 0xe00010f6, 0x1e4d: 0xe00010f3, 0x1e4e: 0xe0001123, 0x1e4f: 0xe0001120,
+-	0x1e50: 0xe0001141, 0x1e51: 0xe000113e, 0x1e52: 0xe0001153, 0x1e53: 0xe0001150,
+-	0x1e54: 0xe0001159, 0x1e55: 0xe0001156, 0x1e56: 0xe0000c15, 0x1e57: 0xe0000f8d,
+-	0x1e58: 0xe00010db, 0x1e59: 0xe0001111, 0x1e5a: 0xf0000404, 0x1e5b: 0xe0000f70,
+-	0x1e5c: 0x40300420, 0x1e5d: 0x40300620, 0x1e5e: 0xe0000f7f, 0x1e5f: 0x402c9620,
+-	0x1e60: 0xe000099b, 0x1e61: 0xe0000998, 0x1e62: 0xe0000989, 0x1e63: 0xe0000986,
+-	0x1e64: 0xe0000928, 0x1e65: 0xe0000924, 0x1e66: 0xe0000930, 0x1e67: 0xe000092c,
+-	0x1e68: 0xe0000940, 0x1e69: 0xe000093c, 0x1e6a: 0xe0000938, 0x1e6b: 0xe0000934,
+-	0x1e6c: 0xe00009aa, 0x1e6d: 0xe00009a6, 0x1e6e: 0xe0000902, 0x1e6f: 0xe00008fe,
+-	0x1e70: 0xe000090a, 0x1e71: 0xe0000906, 0x1e72: 0xe000091a, 0x1e73: 0xe0000916,
+-	0x1e74: 0xe0000912, 0x1e75: 0xe000090e, 0x1e76: 0xe00009a2, 0x1e77: 0xe000099e,
+-	0x1e78: 0xe0000b6e, 0x1e79: 0xe0000b6b, 0x1e7a: 0xe0000b5c, 0x1e7b: 0xe0000b59,
+-	0x1e7c: 0xe0000b26, 0x1e7d: 0xe0000b23, 0x1e7e: 0xe0000afb, 0x1e7f: 0xe0000af7,
+-	// Block 0x7a, offset 0x1e80
+-	0x1e80: 0xe0000b03, 0x1e81: 0xe0000aff, 0x1e82: 0xe0000b13, 0x1e83: 0xe0000b0f,
+-	0x1e84: 0xe0000b0b, 0x1e85: 0xe0000b07, 0x1e86: 0xe0000b75, 0x1e87: 0xe0000b71,
+-	0x1e88: 0xe0000c66, 0x1e89: 0xe0000c63, 0x1e8a: 0xe0000c78, 0x1e8b: 0xe0000c75,
+-	0x1e8c: 0xe0000e84, 0x1e8d: 0xe0000e81, 0x1e8e: 0xe0000e44, 0x1e8f: 0xe0000e41,
+-	0x1e90: 0xe0000dad, 0x1e91: 0xe0000da9, 0x1e92: 0xe0000db5, 0x1e93: 0xe0000db1,
+-	0x1e94: 0xe0000dc5, 0x1e95: 0xe0000dc1, 0x1e96: 0xe0000dbd, 0x1e97: 0xe0000db9,
+-	0x1e98: 0xe0000e8b, 0x1e99: 0xe0000e87, 0x1e9a: 0xe0000e5d, 0x1e9b: 0xe0000e59,
+-	0x1e9c: 0xe0000e65, 0x1e9d: 0xe0000e61, 0x1e9e: 0xe0000e75, 0x1e9f: 0xe0000e71,
+-	0x1ea0: 0xe0000e6d, 0x1ea1: 0xe0000e69, 0x1ea2: 0xe0000e7d, 0x1ea3: 0xe0000e79,
+-	0x1ea4: 0xe000108d, 0x1ea5: 0xe000108a, 0x1ea6: 0xe000104d, 0x1ea7: 0xe000104a,
+-	0x1ea8: 0xe0001066, 0x1ea9: 0xe0001062, 0x1eaa: 0xe000106e, 0x1eab: 0xe000106a,
+-	0x1eac: 0xe000107e, 0x1ead: 0xe000107a, 0x1eae: 0xe0001076, 0x1eaf: 0xe0001072,
+-	0x1eb0: 0xe0001086, 0x1eb1: 0xe0001082, 0x1eb2: 0xe0001108, 0x1eb3: 0xe0001105,
+-	0x1eb4: 0xe0001135, 0x1eb5: 0xe0001132, 0x1eb6: 0xe000112f, 0x1eb7: 0xe000112c,
+-	0x1eb8: 0xe000111d, 0x1eb9: 0xe000111a, 0x1eba: 0xe0000d0a, 0x1ebb: 0xe0000d07,
+-	0x1ebc: 0x0030d888, 0x1ebd: 0x4030d820, 0x1ebe: 0x00312088, 0x1ebf: 0x40312020,
+-	// Block 0x7b, offset 0x1ec0
+-	0x1ec0: 0xe0001165, 0x1ec1: 0xe00011a9, 0x1ec2: 0xe000117d, 0x1ec3: 0xe00011c1,
+-	0x1ec4: 0xe000116b, 0x1ec5: 0xe00011af, 0x1ec6: 0xe000118f, 0x1ec7: 0xe00011d3,
+-	0x1ec8: 0xe0001168, 0x1ec9: 0xe00011ac, 0x1eca: 0xe0001181, 0x1ecb: 0xe00011c5,
+-	0x1ecc: 0xe000116f, 0x1ecd: 0xe00011b3, 0x1ece: 0xe0001193, 0x1ecf: 0xe00011d7,
+-	0x1ed0: 0xe000121a, 0x1ed1: 0xe0001230, 0x1ed2: 0xe0001228, 0x1ed3: 0xe000123e,
+-	0x1ed4: 0xe0001220, 0x1ed5: 0xe0001236,
+-	0x1ed8: 0xe000121d, 0x1ed9: 0xe0001233, 0x1eda: 0xe000122c, 0x1edb: 0xe0001242,
+-	0x1edc: 0xe0001224, 0x1edd: 0xe000123a,
+-	0x1ee0: 0xe0001252, 0x1ee1: 0xe0001296, 0x1ee2: 0xe000126a, 0x1ee3: 0xe00012ae,
+-	0x1ee4: 0xe0001258, 0x1ee5: 0xe000129c, 0x1ee6: 0xe000127c, 0x1ee7: 0xe00012c0,
+-	0x1ee8: 0xe0001255, 0x1ee9: 0xe0001299, 0x1eea: 0xe000126e, 0x1eeb: 0xe00012b2,
+-	0x1eec: 0xe000125c, 0x1eed: 0xe00012a0, 0x1eee: 0xe0001280, 0x1eef: 0xe00012c4,
+-	0x1ef0: 0xe00012fb, 0x1ef1: 0xe0001319, 0x1ef2: 0xe0001309, 0x1ef3: 0xe0001327,
+-	0x1ef4: 0xe0001301, 0x1ef5: 0xe000131f, 0x1ef6: 0xe0001311, 0x1ef7: 0xe000132f,
+-	0x1ef8: 0xe00012fe, 0x1ef9: 0xe000131c, 0x1efa: 0xe000130d, 0x1efb: 0xe000132b,
+-	0x1efc: 0xe0001305, 0x1efd: 0xe0001323, 0x1efe: 0xe0001315, 0x1eff: 0xe0001333,
+-	// Block 0x7c, offset 0x1f00
+-	0x1f00: 0xe000136c, 0x1f01: 0xe0001382, 0x1f02: 0xe000137a, 0x1f03: 0xe0001390,
+-	0x1f04: 0xe0001372, 0x1f05: 0xe0001388,
+-	0x1f08: 0xe000136f, 0x1f09: 0xe0001385, 0x1f0a: 0xe000137e, 0x1f0b: 0xe0001394,
+-	0x1f0c: 0xe0001376, 0x1f0d: 0xe000138c,
+-	0x1f10: 0xe00013ad, 0x1f11: 0xe00013bc, 0x1f12: 0xe00013b4, 0x1f13: 0xe00013ca,
+-	0x1f14: 0xe00013b0, 0x1f15: 0xe00013c2, 0x1f16: 0xe00013b8, 0x1f17: 0xe00013d2,
+-	0x1f19: 0xe00013bf, 0x1f1b: 0xe00013ce,
+-	0x1f1d: 0xe00013c6, 0x1f1f: 0xe00013d6,
+-	0x1f20: 0xe0001407, 0x1f21: 0xe000144b, 0x1f22: 0xe000141f, 0x1f23: 0xe0001463,
+-	0x1f24: 0xe000140d, 0x1f25: 0xe0001451, 0x1f26: 0xe0001431, 0x1f27: 0xe0001475,
+-	0x1f28: 0xe000140a, 0x1f29: 0xe000144e, 0x1f2a: 0xe0001423, 0x1f2b: 0xe0001467,
+-	0x1f2c: 0xe0001411, 0x1f2d: 0xe0001455, 0x1f2e: 0xe0001435, 0x1f2f: 0xe0001479,
+-	0x1f30: 0xe00011f7, 0x1f31: 0xe00011ed, 0x1f32: 0xe000124c, 0x1f33: 0xe0001246,
+-	0x1f34: 0xe00012e4, 0x1f35: 0xe00012da, 0x1f36: 0xe000133d, 0x1f37: 0xe0001337,
+-	0x1f38: 0xe000139e, 0x1f39: 0xe0001398, 0x1f3a: 0xe00013e0, 0x1f3b: 0xe00013da,
+-	0x1f3c: 0xe0001499, 0x1f3d: 0xe000148f,
+-	// Block 0x7d, offset 0x1f40
+-	0x1f40: 0xe00011a1, 0x1f41: 0xe00011e5, 0x1f42: 0xe0001185, 0x1f43: 0xe00011c9,
+-	0x1f44: 0xe0001173, 0x1f45: 0xe00011b7, 0x1f46: 0xe0001197, 0x1f47: 0xe00011db,
+-	0x1f48: 0xe00011a5, 0x1f49: 0xe00011e9, 0x1f4a: 0xe000118a, 0x1f4b: 0xe00011ce,
+-	0x1f4c: 0xe0001178, 0x1f4d: 0xe00011bc, 0x1f4e: 0xe000119c, 0x1f4f: 0xe00011e0,
+-	0x1f50: 0xe000128e, 0x1f51: 0xe00012d2, 0x1f52: 0xe0001272, 0x1f53: 0xe00012b6,
+-	0x1f54: 0xe0001260, 0x1f55: 0xe00012a4, 0x1f56: 0xe0001284, 0x1f57: 0xe00012c8,
+-	0x1f58: 0xe0001292, 0x1f59: 0xe00012d6, 0x1f5a: 0xe0001277, 0x1f5b: 0xe00012bb,
+-	0x1f5c: 0xe0001265, 0x1f5d: 0xe00012a9, 0x1f5e: 0xe0001289, 0x1f5f: 0xe00012cd,
+-	0x1f60: 0xe0001443, 0x1f61: 0xe0001487, 0x1f62: 0xe0001427, 0x1f63: 0xe000146b,
+-	0x1f64: 0xe0001415, 0x1f65: 0xe0001459, 0x1f66: 0xe0001439, 0x1f67: 0xe000147d,
+-	0x1f68: 0xe0001447, 0x1f69: 0xe000148b, 0x1f6a: 0xe000142c, 0x1f6b: 0xe0001470,
+-	0x1f6c: 0xe000141a, 0x1f6d: 0xe000145e, 0x1f6e: 0xe000143e, 0x1f6f: 0xe0001482,
+-	0x1f70: 0xe0001201, 0x1f71: 0xe000120e, 0x1f72: 0xe00011fd, 0x1f73: 0xe0001214,
+-	0x1f74: 0xe00011f3, 0x1f76: 0xe0001207, 0x1f77: 0xe000120a,
+-	0x1f78: 0xe0001204, 0x1f79: 0xe0001211, 0x1f7a: 0xe00011fa, 0x1f7b: 0xe00011f0,
+-	0x1f7c: 0xe0001217, 0x1f7d: 0x40063620, 0x1f7e: 0x40326c20, 0x1f7f: 0x40063620,
+-	// Block 0x7e, offset 0x1f80
+-	0x1f80: 0x40063a20, 0x1f81: 0xe00000b1, 0x1f82: 0xe00012ea, 0x1f83: 0xe00012f5,
+-	0x1f84: 0xe00012e0, 0x1f86: 0xe00012ee, 0x1f87: 0xe00012f1,
+-	0x1f88: 0xe000124f, 0x1f89: 0xe0001249, 0x1f8a: 0xe00012e7, 0x1f8b: 0xe00012dd,
+-	0x1f8c: 0xe00012f8, 0x1f8d: 0xe00000b7, 0x1f8e: 0xe00000b4, 0x1f8f: 0xe00000ba,
+-	0x1f90: 0xe0001343, 0x1f91: 0xe000135e, 0x1f92: 0xe0001356, 0x1f93: 0xe0001352,
+-	0x1f96: 0xe0001349, 0x1f97: 0xe000135a,
+-	0x1f98: 0xe0001346, 0x1f99: 0xe0001361, 0x1f9a: 0xe0001340, 0x1f9b: 0xe000133a,
+-	0x1f9d: 0xe00000c0, 0x1f9e: 0xe00000bd, 0x1f9f: 0xe00000c3,
+-	0x1fa0: 0xe00013e6, 0x1fa1: 0xe0001401, 0x1fa2: 0xe00013f9, 0x1fa3: 0xe00013f5,
+-	0x1fa4: 0xe00013a4, 0x1fa5: 0xe00013a7, 0x1fa6: 0xe00013ec, 0x1fa7: 0xe00013fd,
+-	0x1fa8: 0xe00013e9, 0x1fa9: 0xe0001404, 0x1faa: 0xe00013e3, 0x1fab: 0xe00013dd,
+-	0x1fac: 0xe00013aa, 0x1fad: 0xe00000ae, 0x1fae: 0xe00000ab, 0x1faf: 0x40061e20,
+-	0x1fb2: 0xe000149f, 0x1fb3: 0xe00014aa,
+-	0x1fb4: 0xe0001495, 0x1fb6: 0xe00014a3, 0x1fb7: 0xe00014a6,
+-	0x1fb8: 0xe00013a1, 0x1fb9: 0xe000139b, 0x1fba: 0xe000149c, 0x1fbb: 0xe0001492,
+-	0x1fbc: 0xe00014ad, 0x1fbd: 0x40062020, 0x1fbe: 0x40063820,
+-	// Block 0x7f, offset 0x1fc0
+-	0x1fc0: 0x00021284, 0x1fc1: 0x00021284, 0x1fc2: 0x00021284, 0x1fc3: 0x00021284,
+-	0x1fc4: 0x00021284, 0x1fc5: 0x00021284, 0x1fc6: 0x00021284, 0x1fc7: 0x0002129b,
+-	0x1fc8: 0x00021284, 0x1fc9: 0x00021284, 0x1fca: 0x00021284, 0x1fcb: 0xa0000000,
+-	0x1fcc: 0xa0000000, 0x1fcd: 0xa0000000, 0x1fce: 0xa0000000, 0x1fcf: 0xa0000000,
+-	0x1fd0: 0x40022620, 0x1fd1: 0x0002269b, 0x1fd2: 0x40022820, 0x1fd3: 0x40022a20,
+-	0x1fd4: 0x40022c20, 0x1fd5: 0x40022e20, 0x1fd6: 0x4004c420, 0x1fd7: 0x40021820,
+-	0x1fd8: 0x4003d420, 0x1fd9: 0x4003d620, 0x1fda: 0x4003d820, 0x1fdb: 0x4003da20,
+-	0x1fdc: 0x4003e220, 0x1fdd: 0x4003e420, 0x1fde: 0x4003e620, 0x1fdf: 0x4003e820,
+-	0x1fe0: 0x4004f820, 0x1fe1: 0x4004fa20, 0x1fe2: 0x40050220, 0x1fe3: 0x40050420,
+-	0x1fe4: 0x0002e484, 0x1fe5: 0xf0001f04, 0x1fe6: 0xf0000404, 0x1fe7: 0x40050620,
+-	0x1fe8: 0x40020e20, 0x1fe9: 0x40021020, 0x1fea: 0xa0000000, 0x1feb: 0xa0000000,
+-	0x1fec: 0xa0000000, 0x1fed: 0xa0000000, 0x1fee: 0xa0000000, 0x1fef: 0x0002129b,
+-	0x1ff0: 0x4004f020, 0x1ff1: 0x4004f420, 0x1ff2: 0x40050e20, 0x1ff3: 0xf0001f04,
+-	0x1ff4: 0xf0000404, 0x1ff5: 0x40051020, 0x1ff6: 0xf0001f04, 0x1ff7: 0xf0000404,
+-	0x1ff8: 0x40051620, 0x1ff9: 0x4003dc20, 0x1ffa: 0x4003de20, 0x1ffb: 0x40051820,
+-	0x1ffc: 0xf0001f04, 0x1ffd: 0x4002e020, 0x1ffe: 0x40021420, 0x1fff: 0x40051a20,
+-	// Block 0x80, offset 0x2000
+-	0x2000: 0x40051e20, 0x2001: 0x40052220, 0x2002: 0x40052420, 0x2003: 0x40050820,
+-	0x2004: 0x40095820, 0x2005: 0x40040c20, 0x2006: 0x40040e20, 0x2007: 0xf0001f04,
+-	0x2008: 0xf0001f04, 0x2009: 0xf0001f04, 0x200a: 0x4004e820, 0x200b: 0x4004d420,
+-	0x200c: 0x40050a20, 0x200d: 0x40050c20, 0x200e: 0x4004da20, 0x200f: 0x40026620,
+-	0x2010: 0x40052020, 0x2011: 0x4004dc20, 0x2012: 0x40095020, 0x2013: 0x40023420,
+-	0x2014: 0x40051c20, 0x2015: 0x40039c20, 0x2016: 0x40039e20, 0x2017: 0xe00000a6,
+-	0x2018: 0x4003a020, 0x2019: 0x4003a220, 0x201a: 0x4003a420, 0x201b: 0x4003a620,
+-	0x201c: 0x4003a820, 0x201d: 0x4003aa20, 0x201e: 0x4003ac20, 0x201f: 0x00021284,
+-	0x2020: 0xa0000000, 0x2021: 0xa0000000, 0x2022: 0xa0000000, 0x2023: 0xa0000000,
+-	0x2024: 0xa0000000,
+-	0x202a: 0xa0000000, 0x202b: 0xa0000000,
+-	0x202c: 0xa0000000, 0x202d: 0xa0000000, 0x202e: 0xa0000000, 0x202f: 0xa0000000,
+-	0x2030: 0x0029cc94, 0x2031: 0x002d9a94,
+-	0x2034: 0x0029d494, 0x2035: 0x0029d694, 0x2036: 0x0029d894, 0x2037: 0x0029da94,
+-	0x2038: 0x0029dc94, 0x2039: 0x0029de94, 0x203a: 0x00093894, 0x203b: 0x00094e94,
+-	0x203c: 0x00094294, 0x203d: 0x0003f494, 0x203e: 0x0003f694, 0x203f: 0x002e9e94,
+-	// Block 0x81, offset 0x2040
+-	0x2040: 0x0029cc95, 0x2041: 0x0029ce95, 0x2042: 0x0029d095, 0x2043: 0x0029d295,
+-	0x2044: 0x0029d495, 0x2045: 0x0029d695, 0x2046: 0x0029d895, 0x2047: 0x0029da95,
+-	0x2048: 0x0029dc95, 0x2049: 0x0029de95, 0x204a: 0x00093895, 0x204b: 0x00094e95,
+-	0x204c: 0x00094295, 0x204d: 0x0003f495, 0x204e: 0x0003f695,
+-	0x2050: 0x002bde95, 0x2051: 0x002c9895, 0x2052: 0x002ee295, 0x2053: 0x0030f695,
+-	0x2054: 0x002cb895, 0x2055: 0x002d6895, 0x2056: 0x002dfe95, 0x2057: 0x002e2295,
+-	0x2058: 0x002e8295, 0x2059: 0x002e9e95, 0x205a: 0x002f2c95, 0x205b: 0x002fe695,
+-	0x205c: 0x00302c95,
+-	0x2060: 0x4027f820, 0x2061: 0x4027fa20, 0x2062: 0x4027fc20, 0x2063: 0x4027fe20,
+-	0x2064: 0x40280020, 0x2065: 0x40280220, 0x2066: 0x40280420, 0x2067: 0x40280620,
+-	0x2068: 0x40282c20, 0x2069: 0x40280820, 0x206a: 0x40280a20, 0x206b: 0x40280c20,
+-	0x206c: 0x40280e20, 0x206d: 0x40281020, 0x206e: 0x40281220, 0x206f: 0x40281420,
+-	0x2070: 0x40281620, 0x2071: 0x40281820, 0x2072: 0x40281a20, 0x2073: 0x40281c20,
+-	0x2074: 0x40281e20, 0x2075: 0x40282020, 0x2076: 0x40282220, 0x2077: 0x40282420,
+-	0x2078: 0x40282620, 0x2079: 0x40282820, 0x207a: 0x40282a20,
+-	// Block 0x82, offset 0x2080
+-	0x2090: 0xae612a02, 0x2091: 0xae612b02, 0x2092: 0xa0112c02, 0x2093: 0xa0112c02,
+-	0x2094: 0xae612d02, 0x2095: 0xae612e02, 0x2096: 0xae612f02, 0x2097: 0xae613002,
+-	0x2098: 0xa0106102, 0x2099: 0xa0106102, 0x209a: 0xa0106102, 0x209b: 0xae613102,
+-	0x209c: 0xae613202, 0x209d: 0xa0006202, 0x209e: 0xa0006202, 0x209f: 0xa0006202,
+-	0x20a0: 0xa0006202, 0x20a1: 0xae613302, 0x20a2: 0xa0006202, 0x20a3: 0xa0006202,
+-	0x20a4: 0xa0006202, 0x20a5: 0xa0106102, 0x20a6: 0xa0113402, 0x20a7: 0xae613502,
+-	0x20a8: 0xadc13602, 0x20a9: 0xae613702, 0x20aa: 0xa0106102, 0x20ab: 0xa0106102,
+-	0x20ac: 0xadc06002, 0x20ad: 0xadc06002, 0x20ae: 0xadc06002, 0x20af: 0xadc06002,
+-	0x20b0: 0xae605f02,
+-	// Block 0x83, offset 0x20c0
+-	0x20c0: 0xe00009bc, 0x20c1: 0xe00009c0, 0x20c2: 0x002c3a8b, 0x20c3: 0xf0000a04,
+-	0x20c4: 0x40081c20, 0x20c5: 0xe0000a5e, 0x20c6: 0xe0000a62, 0x20c7: 0x002cc28a,
+-	0x20c8: 0x40081e20, 0x20c9: 0xf0000a04, 0x20ca: 0x002d2285, 0x20cb: 0x002d688b,
+-	0x20cc: 0x002d688b, 0x20cd: 0x002d688b, 0x20ce: 0x002d6885, 0x20cf: 0xf0000202,
+-	0x20d0: 0x002d9a8b, 0x20d1: 0x002d9a8b, 0x20d2: 0x002e228b, 0x20d3: 0x002e2285,
+-	0x20d4: 0x40082020, 0x20d5: 0x002e9e8b, 0x20d6: 0xf000040a, 0x20d7: 0x40082220,
+-	0x20d8: 0x40082420, 0x20d9: 0x002f2c8b, 0x20da: 0x002f568b, 0x20db: 0x002f7a8b,
+-	0x20dc: 0x002f7a8b, 0x20dd: 0x002f7a8b, 0x20de: 0x40082620, 0x20df: 0x40082820,
+-	0x20e0: 0xf0001414, 0x20e1: 0xe0000fbd, 0x20e2: 0xf0001414, 0x20e3: 0x40082a20,
+-	0x20e4: 0x00312a8b, 0x20e5: 0x40082c20, 0x20e6: 0x0032a288, 0x20e7: 0x40082e20,
+-	0x20e8: 0x00312a8b, 0x20e9: 0x40083020, 0x20ea: 0x002dfe88, 0x20eb: 0xe000094d,
+-	0x20ec: 0x002c0a8b, 0x20ed: 0x002c3a8b, 0x20ee: 0x40083220, 0x20ef: 0x002c9885,
+-	0x20f0: 0x002c988b, 0x20f1: 0x002d088b, 0x20f2: 0x002d1e88, 0x20f3: 0x002e828b,
+-	0x20f4: 0x002ee285, 0x20f5: 0x00389084, 0x20f6: 0x00389284, 0x20f7: 0x00389484,
+-	0x20f8: 0x00389684, 0x20f9: 0x002d9a85, 0x20fa: 0x40083420, 0x20fb: 0xe0000b95,
+-	0x20fc: 0x00327e85, 0x20fd: 0x00325685, 0x20fe: 0x0032568b, 0x20ff: 0x00327e8b,
+-	// Block 0x84, offset 0x2100
+-	0x2100: 0x00093685, 0x2101: 0x40083620, 0x2102: 0x40083820, 0x2103: 0x40083a20,
+-	0x2104: 0x40083c20, 0x2105: 0x002c628b, 0x2106: 0x002c6285, 0x2107: 0x002c9885,
+-	0x2108: 0x002d9a85, 0x2109: 0x002dcc85, 0x210a: 0x40083e20, 0x210b: 0x400a6e20,
+-	0x210c: 0x40084020, 0x210d: 0xe00009c4, 0x210e: 0x402d1e20, 0x210f: 0x40084220,
+-	0x2110: 0xe00002cb, 0x2111: 0xe00002d3, 0x2112: 0xe00002b2, 0x2113: 0xe00002bb,
+-	0x2114: 0xe00003cd, 0x2115: 0xe00002c3, 0x2116: 0xe00003d1, 0x2117: 0xe00004ab,
+-	0x2118: 0xe0000579, 0x2119: 0xe00002c7, 0x211a: 0xe0000640, 0x211b: 0xe00002cf,
+-	0x211c: 0xe00004af, 0x211d: 0xe0000644, 0x211e: 0xe0000798, 0x211f: 0xf0001e1e,
+-	0x2120: 0x002d9a8a, 0x2121: 0xf0001f0a, 0x2122: 0xf0000a0a, 0x2123: 0xf0001f0a,
+-	0x2124: 0x0030be8a, 0x2125: 0xf0001f0a, 0x2126: 0xf0000a0a, 0x2127: 0xe00010bb,
+-	0x2128: 0xf0001f0a, 0x2129: 0x0030f68a, 0x212a: 0xf0001f0a, 0x212b: 0xf0000a0a,
+-	0x212c: 0x002e228a, 0x212d: 0x002c3a8a, 0x212e: 0x002c628a, 0x212f: 0x002e828a,
+-	0x2130: 0x002d9a84, 0x2131: 0xf0001f04, 0x2132: 0xf0000404, 0x2133: 0xf0001f04,
+-	0x2134: 0x0030be84, 0x2135: 0xf0001f04, 0x2136: 0xf0000404, 0x2137: 0xe00010b6,
+-	0x2138: 0xf0001f04, 0x2139: 0x0030f684, 0x213a: 0xf0001f04, 0x213b: 0xf0000404,
+-	0x213c: 0x002e2284, 0x213d: 0x002c3a84, 0x213e: 0x002c6284, 0x213f: 0x002e8284,
+-	// Block 0x85, offset 0x2140
+-	0x2140: 0x40287c20, 0x2141: 0x40287e20, 0x2142: 0x40288020, 0x2143: 0x002c5e88,
+-	0x2144: 0x402c5e20, 0x2145: 0xe00006c9, 0x2146: 0x40288220, 0x2147: 0x40288420,
+-	0x2148: 0x40288620, 0x2149: 0xe00001e2,
+-	0x2150: 0x40084420, 0x2151: 0x40084820, 0x2152: 0x40084620, 0x2153: 0x40084a20,
+-	0x2154: 0x40084c20, 0x2155: 0x40084e20, 0x2156: 0x40085020, 0x2157: 0x40085220,
+-	0x2158: 0x40085420, 0x2159: 0x40085620, 0x215a: 0xe00000c6, 0x215b: 0xe00000c9,
+-	0x215c: 0x40085820, 0x215d: 0x40085a20, 0x215e: 0x40085c20, 0x215f: 0x40085e20,
+-	0x2160: 0x40086020, 0x2161: 0x40086220, 0x2162: 0x40086420, 0x2163: 0x40086620,
+-	0x2164: 0x40086820, 0x2165: 0x40086a20, 0x2166: 0x40086c20, 0x2167: 0x40086e20,
+-	0x2168: 0x40087020, 0x2169: 0x40087220, 0x216a: 0x40087420, 0x216b: 0x40087620,
+-	0x216c: 0x40087820, 0x216d: 0x40087a20, 0x216e: 0xe00000cc, 0x216f: 0x40087c20,
+-	0x2170: 0x40087e20, 0x2171: 0x40088020, 0x2172: 0x40088220, 0x2173: 0x40088420,
+-	0x2174: 0x40088620, 0x2175: 0x40088820, 0x2176: 0x40088a20, 0x2177: 0x40088c20,
+-	0x2178: 0x40088e20, 0x2179: 0x40089020, 0x217a: 0x40089220, 0x217b: 0x40089420,
+-	0x217c: 0x40089620, 0x217d: 0x40089820, 0x217e: 0x40089a20, 0x217f: 0x40089c20,
+-	// Block 0x86, offset 0x2180
+-	0x2180: 0x40089e20, 0x2181: 0x4008a020, 0x2182: 0x4008a220, 0x2183: 0x4008a420,
+-	0x2184: 0x4008a620, 0x2185: 0x4008a820, 0x2186: 0x4008aa20, 0x2187: 0x4008ac20,
+-	0x2188: 0x4008ae20, 0x2189: 0x4008b020, 0x218a: 0x4008b220, 0x218b: 0x4008b420,
+-	0x218c: 0x4008b620, 0x218d: 0xe00000cf, 0x218e: 0xe00000d5, 0x218f: 0xe00000d2,
+-	0x2190: 0x4008b820, 0x2191: 0x4008ba20, 0x2192: 0x4008bc20, 0x2193: 0x4008be20,
+-	0x2194: 0x4008c020, 0x2195: 0x4008c220, 0x2196: 0x4008c420, 0x2197: 0x4008c620,
+-	0x2198: 0x4008c820, 0x2199: 0x4008ca20, 0x219a: 0x4008cc20, 0x219b: 0x4008ce20,
+-	0x219c: 0x4008d020, 0x219d: 0x4008d220, 0x219e: 0x4008d420, 0x219f: 0x4008d620,
+-	0x21a0: 0x4008d820, 0x21a1: 0x4008da20, 0x21a2: 0x4008dc20, 0x21a3: 0x4008de20,
+-	0x21a4: 0x4008e020, 0x21a5: 0x4008e220, 0x21a6: 0x4008e420, 0x21a7: 0x4008e620,
+-	0x21a8: 0x4008e820, 0x21a9: 0x4008ea20, 0x21aa: 0x4008ec20, 0x21ab: 0x4008ee20,
+-	0x21ac: 0x4008f020, 0x21ad: 0x4008f220, 0x21ae: 0x4008f420, 0x21af: 0x4008f620,
+-	0x21b0: 0x4008f820, 0x21b1: 0x4008fa20, 0x21b2: 0x4008fc20, 0x21b3: 0x4008fe20,
+-	0x21b4: 0x40090020, 0x21b5: 0x40090220, 0x21b6: 0x40090420, 0x21b7: 0x40090620,
+-	0x21b8: 0x40090820, 0x21b9: 0x40090a20, 0x21ba: 0x40090c20, 0x21bb: 0x40090e20,
+-	0x21bc: 0x40091020, 0x21bd: 0x40091220, 0x21be: 0x40091420, 0x21bf: 0x40091620,
+-	// Block 0x87, offset 0x21c0
+-	0x21c0: 0x40091820, 0x21c1: 0x40091a20, 0x21c2: 0x40091c20, 0x21c3: 0x40091e20,
+-	0x21c4: 0xe00000d8, 0x21c5: 0x40092020, 0x21c6: 0x40092220, 0x21c7: 0x40092420,
+-	0x21c8: 0x40092620, 0x21c9: 0xe00000db, 0x21ca: 0x40092820, 0x21cb: 0x40092a20,
+-	0x21cc: 0xe00000de, 0x21cd: 0x40092c20, 0x21ce: 0x40093020, 0x21cf: 0x40093220,
+-	0x21d0: 0x40093420, 0x21d1: 0x40093620, 0x21d2: 0x40094e20, 0x21d3: 0x40095220,
+-	0x21d4: 0x40095420, 0x21d5: 0x40095620, 0x21d6: 0x40095a20, 0x21d7: 0x40095c20,
+-	0x21d8: 0x40095e20, 0x21d9: 0x40096020, 0x21da: 0x40096220, 0x21db: 0x40096420,
+-	0x21dc: 0x40096820, 0x21dd: 0x40096c20, 0x21de: 0x40096e20, 0x21df: 0x40097020,
+-	0x21e0: 0x40097220, 0x21e1: 0x40097420, 0x21e2: 0x40097620, 0x21e3: 0x40097820,
+-	0x21e4: 0xe00000ea, 0x21e5: 0x40097a20, 0x21e6: 0xe00000ed, 0x21e7: 0x40097c20,
+-	0x21e8: 0x40097e20, 0x21e9: 0x40098020, 0x21ea: 0x40098220, 0x21eb: 0x40098420,
+-	0x21ec: 0xf0001f04, 0x21ed: 0xf0000404, 0x21ee: 0x40098620, 0x21ef: 0xf0001f04,
+-	0x21f0: 0xf0000404, 0x21f1: 0x40098820, 0x21f2: 0x40098a20, 0x21f3: 0x40098c20,
+-	0x21f4: 0x40098e20, 0x21f5: 0x40099020, 0x21f6: 0x40099220, 0x21f7: 0x40099420,
+-	0x21f8: 0x40099620, 0x21f9: 0x40099820, 0x21fa: 0x40099a20, 0x21fb: 0x40099c20,
+-	0x21fc: 0x40099e20, 0x21fd: 0x4009a020, 0x21fe: 0x4009a220, 0x21ff: 0x4009a420,
+-	// Block 0x88, offset 0x2200
+-	0x2200: 0x4009a620, 0x2201: 0xe00000f5, 0x2202: 0x4009a820, 0x2203: 0x4009aa20,
+-	0x2204: 0xe00000f8, 0x2205: 0x4009ac20, 0x2206: 0x4009ae20, 0x2207: 0xe00000fb,
+-	0x2208: 0x4009b020, 0x2209: 0xe00000fe, 0x220a: 0x4009b220, 0x220b: 0x4009b420,
+-	0x220c: 0x4009b620, 0x220d: 0x4009b820, 0x220e: 0x4009ba20, 0x220f: 0x4009bc20,
+-	0x2210: 0x4009be20, 0x2211: 0x4009c020, 0x2212: 0x4009c220, 0x2213: 0x4009c420,
+-	0x2214: 0x4009c620, 0x2215: 0x4009c820, 0x2216: 0x4009ca20, 0x2217: 0x4009cc20,
+-	0x2218: 0x4009ce20, 0x2219: 0x4009d020, 0x221a: 0x4009d220, 0x221b: 0x4009d420,
+-	0x221c: 0x4009d620, 0x221d: 0x4009d820, 0x221e: 0x4009da20, 0x221f: 0x4009dc20,
+-	0x2220: 0xe00000e4, 0x2221: 0x4009de20, 0x2222: 0xe0000104, 0x2223: 0x4009e020,
+-	0x2224: 0x4009e220, 0x2225: 0x4009e420, 0x2226: 0x4009e620, 0x2227: 0x4009e820,
+-	0x2228: 0x4009ea20, 0x2229: 0x4009ec20, 0x222a: 0x4009ee20, 0x222b: 0x4009f020,
+-	0x222c: 0x4009f220, 0x222d: 0xe0000101, 0x222e: 0xe00000e1, 0x222f: 0xe00000e7,
+-	0x2230: 0xe0000107, 0x2231: 0xe000010a, 0x2232: 0x4009f420, 0x2233: 0x4009f620,
+-	0x2234: 0xe000010d, 0x2235: 0xe0000110, 0x2236: 0x4009f820, 0x2237: 0x4009fa20,
+-	0x2238: 0xe0000113, 0x2239: 0xe0000116, 0x223a: 0x4009fc20, 0x223b: 0x4009fe20,
+-	0x223c: 0x400a0020, 0x223d: 0x400a0220, 0x223e: 0x400a0420, 0x223f: 0x400a0620,
+-	// Block 0x89, offset 0x2240
+-	0x2240: 0xe0000119, 0x2241: 0xe000011c, 0x2242: 0x400a0820, 0x2243: 0x400a0a20,
+-	0x2244: 0xe0000125, 0x2245: 0xe0000128, 0x2246: 0x400a0c20, 0x2247: 0x400a0e20,
+-	0x2248: 0xe000012b, 0x2249: 0xe000012e, 0x224a: 0x400a1020, 0x224b: 0x400a1220,
+-	0x224c: 0x400a1420, 0x224d: 0x400a1620, 0x224e: 0x400a1820, 0x224f: 0x400a1a20,
+-	0x2250: 0x400a1c20, 0x2251: 0x400a1e20, 0x2252: 0x400a2020, 0x2253: 0x400a2220,
+-	0x2254: 0x400a2420, 0x2255: 0x400a2620, 0x2256: 0x400a2820, 0x2257: 0x400a2a20,
+-	0x2258: 0x400a2c20, 0x2259: 0x400a2e20, 0x225a: 0x400a3020, 0x225b: 0x400a3220,
+-	0x225c: 0x400a3420, 0x225d: 0x400a3620, 0x225e: 0x400a3820, 0x225f: 0x400a3a20,
+-	0x2260: 0x400a3c20, 0x2261: 0x400a3e20, 0x2262: 0x400a4020, 0x2263: 0x400a4220,
+-	0x2264: 0x400a4420, 0x2265: 0x400a4620, 0x2266: 0x400a4820, 0x2267: 0x400a4a20,
+-	0x2268: 0x400a4c20, 0x2269: 0x400a4e20, 0x226a: 0x400a5020, 0x226b: 0x400a5220,
+-	0x226c: 0xe0000137, 0x226d: 0xe000013a, 0x226e: 0xe000013d, 0x226f: 0xe0000140,
+-	0x2270: 0x400a5420, 0x2271: 0x400a5620, 0x2272: 0x400a5820, 0x2273: 0x400a5a20,
+-	0x2274: 0x400a5c20, 0x2275: 0x400a5e20, 0x2276: 0x400a6020, 0x2277: 0x400a6220,
+-	0x2278: 0x400a6420, 0x2279: 0x400a6620, 0x227a: 0x400a6820, 0x227b: 0x400a6a20,
+-	0x227c: 0x400a6c20, 0x227d: 0x400a7020, 0x227e: 0x400a7220, 0x227f: 0x400a7420,
+-	// Block 0x8a, offset 0x2280
+-	0x2280: 0x400a7620, 0x2281: 0x400a7820, 0x2282: 0x400a7a20, 0x2283: 0x400a7c20,
+-	0x2284: 0x400a7e20, 0x2285: 0x400a8020, 0x2286: 0x400a8220, 0x2287: 0x400a8420,
+-	0x2288: 0x400a8620, 0x2289: 0x400a8820, 0x228a: 0x400a8a20, 0x228b: 0x400a8c20,
+-	0x228c: 0x400a8e20, 0x228d: 0x400a9020, 0x228e: 0x400a9220, 0x228f: 0x400a9420,
+-	0x2290: 0x400a9620, 0x2291: 0x400a9820, 0x2292: 0x400a9a20, 0x2293: 0x400a9c20,
+-	0x2294: 0x400a9e20, 0x2295: 0x400aa020, 0x2296: 0x400aa220, 0x2297: 0x400aa420,
+-	0x2298: 0x400aa620, 0x2299: 0x400aa820, 0x229a: 0x400aaa20, 0x229b: 0x400aac20,
+-	0x229c: 0x400aae20, 0x229d: 0x400ab020, 0x229e: 0x400ab220, 0x229f: 0x400ab420,
+-	0x22a0: 0xe000011f, 0x22a1: 0xe0000122, 0x22a2: 0xe0000131, 0x22a3: 0xe0000134,
+-	0x22a4: 0x400ab620, 0x22a5: 0x400ab820, 0x22a6: 0x400aba20, 0x22a7: 0x400abc20,
+-	0x22a8: 0x400abe20, 0x22a9: 0x400ac020, 0x22aa: 0xe0000143, 0x22ab: 0xe0000146,
+-	0x22ac: 0xe0000149, 0x22ad: 0xe000014c, 0x22ae: 0x400ac220, 0x22af: 0x400ac420,
+-	0x22b0: 0x400ac620, 0x22b1: 0x400ac820, 0x22b2: 0x400aca20, 0x22b3: 0x400acc20,
+-	0x22b4: 0x400ace20, 0x22b5: 0x400ad020, 0x22b6: 0x400ad220, 0x22b7: 0x400ad420,
+-	0x22b8: 0x400ad620, 0x22b9: 0x400ad820, 0x22ba: 0x400ada20, 0x22bb: 0x400adc20,
+-	0x22bc: 0x400ade20, 0x22bd: 0x400ae020, 0x22be: 0x400ae220, 0x22bf: 0x400ae420,
+-	// Block 0x8b, offset 0x22c0
+-	0x22c0: 0x400ae620, 0x22c1: 0x400ae820, 0x22c2: 0x400aea20, 0x22c3: 0x400aec20,
+-	0x22c4: 0x400aee20, 0x22c5: 0x400af020, 0x22c6: 0x400af220, 0x22c7: 0x400af420,
+-	0x22c8: 0x400af620, 0x22c9: 0x400af820, 0x22ca: 0x400afa20, 0x22cb: 0x400afc20,
+-	0x22cc: 0x400afe20, 0x22cd: 0x400b0020, 0x22ce: 0x400b0220, 0x22cf: 0x400b0420,
+-	0x22d0: 0x400b0620, 0x22d1: 0x400b0820, 0x22d2: 0x400b0a20, 0x22d3: 0x400b0c20,
+-	0x22d4: 0x400b0e20, 0x22d5: 0x400b1020, 0x22d6: 0x400b1220, 0x22d7: 0x400b1420,
+-	0x22d8: 0x400b1620, 0x22d9: 0x400b1820, 0x22da: 0x400b1a20, 0x22db: 0x400b1c20,
+-	0x22dc: 0x400b1e20, 0x22dd: 0x400b2020, 0x22de: 0x400b2220, 0x22df: 0x400b2420,
+-	0x22e0: 0x400b2620, 0x22e1: 0x400b2820, 0x22e2: 0x400b2a20, 0x22e3: 0x400b2c20,
+-	0x22e4: 0x400b2e20, 0x22e5: 0x400b3020, 0x22e6: 0x400b3220, 0x22e7: 0x400b3420,
+-	0x22e8: 0x400b3620, 0x22e9: 0x40049c20, 0x22ea: 0x40049e20, 0x22eb: 0x400b3820,
+-	0x22ec: 0x400b3a20, 0x22ed: 0x400b3c20, 0x22ee: 0x400b3e20, 0x22ef: 0x400b4020,
+-	0x22f0: 0x400b4220, 0x22f1: 0x400b4420, 0x22f2: 0x400b4620, 0x22f3: 0x400b4820,
+-	0x22f4: 0x400b4a20, 0x22f5: 0x400b4c20, 0x22f6: 0x400b4e20, 0x22f7: 0x400b5020,
+-	0x22f8: 0x400b5220, 0x22f9: 0x400b5420, 0x22fa: 0x400b5620, 0x22fb: 0x400b5820,
+-	0x22fc: 0x400b5a20, 0x22fd: 0x400b5c20, 0x22fe: 0x400b5e20, 0x22ff: 0x400b6020,
+-	// Block 0x8c, offset 0x2300
+-	0x2300: 0x400b6220, 0x2301: 0x400b6420, 0x2302: 0x400b6620, 0x2303: 0x400b6820,
+-	0x2304: 0x400b6a20, 0x2305: 0x400b6c20, 0x2306: 0x400b6e20, 0x2307: 0x400b7020,
+-	0x2308: 0x400b7220, 0x2309: 0x400b7420, 0x230a: 0x400b7620, 0x230b: 0x400b7820,
+-	0x230c: 0x400b7a20, 0x230d: 0x400b7c20, 0x230e: 0x400b7e20, 0x230f: 0x400b8020,
+-	0x2310: 0x400b8220, 0x2311: 0x400b8420, 0x2312: 0x400b8620, 0x2313: 0x400b8820,
+-	0x2314: 0x400b8a20, 0x2315: 0x400b8c20, 0x2316: 0x400b8e20, 0x2317: 0x400b9020,
+-	0x2318: 0x400b9220, 0x2319: 0x400b9420, 0x231a: 0x400b9620, 0x231b: 0x400b9820,
+-	0x231c: 0x400b9a20, 0x231d: 0x400b9c20, 0x231e: 0x400b9e20, 0x231f: 0x400ba020,
+-	0x2320: 0x400ba220, 0x2321: 0x400ba420, 0x2322: 0x400ba620, 0x2323: 0x400ba820,
+-	0x2324: 0x400baa20, 0x2325: 0x400bac20, 0x2326: 0x400bae20, 0x2327: 0x400bb020,
+-	0x2328: 0x400bb220, 0x2329: 0x400bb420, 0x232a: 0x400bb620, 0x232b: 0x400bb820,
+-	0x232c: 0x400bba20, 0x232d: 0x400bbc20, 0x232e: 0x400bbe20, 0x232f: 0x400bc020,
+-	0x2330: 0x400bc220, 0x2331: 0x400bc420, 0x2332: 0x400bc620, 0x2333: 0x400bc820,
+-	0x2334: 0x400bca20, 0x2335: 0x400bcc20, 0x2336: 0x400bce20, 0x2337: 0x400bd020,
+-	0x2338: 0x400bd220, 0x2339: 0x400bd420, 0x233a: 0x400bd620, 0x233b: 0x400bd820,
+-	0x233c: 0x400bda20, 0x233d: 0x400bdc20, 0x233e: 0x400bde20, 0x233f: 0x400be020,
+-	// Block 0x8d, offset 0x2340
+-	0x2340: 0x400be220, 0x2341: 0x400be420, 0x2342: 0x400be620, 0x2343: 0x400be820,
+-	0x2344: 0x400bea20, 0x2345: 0x400bec20, 0x2346: 0x400bee20, 0x2347: 0x400bf020,
+-	0x2348: 0x400bf220, 0x2349: 0x400bf420, 0x234a: 0x400bf620, 0x234b: 0x400bf820,
+-	0x234c: 0x400bfa20, 0x234d: 0x400bfc20, 0x234e: 0x400bfe20, 0x234f: 0x400c0020,
+-	0x2350: 0x400c0220, 0x2351: 0x400c0420, 0x2352: 0x400c0620, 0x2353: 0x400c0820,
+-	0x2354: 0x400c0a20, 0x2355: 0x400c0c20, 0x2356: 0x400c0e20, 0x2357: 0x400c1020,
+-	0x2358: 0x400c1220, 0x2359: 0x400c1420, 0x235a: 0x400c1620, 0x235b: 0x400c1820,
+-	0x235c: 0x400c1a20, 0x235d: 0x400c1c20, 0x235e: 0x400c1e20, 0x235f: 0x400c2020,
+-	0x2360: 0x400c2220, 0x2361: 0x400c2420, 0x2362: 0x400c2620, 0x2363: 0x400c2820,
+-	0x2364: 0x400c2a20, 0x2365: 0x400c2c20, 0x2366: 0x400c2e20, 0x2367: 0x400c3020,
+-	0x2368: 0x400c3220, 0x2369: 0x400c3420, 0x236a: 0x400c3620, 0x236b: 0x400c3820,
+-	0x236c: 0x400c3a20, 0x236d: 0x400c3c20, 0x236e: 0x400c3e20, 0x236f: 0x400c4020,
+-	0x2370: 0x400c4220, 0x2371: 0x400c4420, 0x2372: 0x400c4620, 0x2373: 0x400c4820,
+-	0x2374: 0x400c4a20, 0x2375: 0x400c4c20, 0x2376: 0x400c4e20, 0x2377: 0x400c5020,
+-	0x2378: 0x400c5220, 0x2379: 0x400c5420, 0x237a: 0x400c5620, 0x237b: 0x400c5820,
+-	0x237c: 0x400c5a20, 0x237d: 0x400c5c20, 0x237e: 0x400c5e20, 0x237f: 0x400c6020,
+-	// Block 0x8e, offset 0x2380
+-	0x2380: 0x400c6220, 0x2381: 0x400c6420, 0x2382: 0x400c6620, 0x2383: 0x400c6820,
+-	0x2384: 0x400c6a20, 0x2385: 0x400c6c20, 0x2386: 0x400c6e20, 0x2387: 0x400c7020,
+-	0x2388: 0x400c7220, 0x2389: 0x400c7420, 0x238a: 0x400c7620, 0x238b: 0x400c7820,
+-	0x238c: 0x400c7a20, 0x238d: 0x400c7c20, 0x238e: 0x400c7e20, 0x238f: 0x400c8020,
+-	0x2390: 0x400c8220, 0x2391: 0x400c8420, 0x2392: 0x400c8620, 0x2393: 0x400c8820,
+-	0x2394: 0x400c8a20, 0x2395: 0x400c8c20, 0x2396: 0x400c8e20, 0x2397: 0x400c9020,
+-	0x2398: 0x400c9220, 0x2399: 0x400c9420, 0x239a: 0x400c9620, 0x239b: 0x400c9820,
+-	0x239c: 0x400c9a20, 0x239d: 0x400c9c20, 0x239e: 0x400c9e20, 0x239f: 0x400ca020,
+-	0x23a0: 0x400ca220, 0x23a1: 0x400ca420, 0x23a2: 0x400ca620, 0x23a3: 0x400ca820,
+-	0x23a4: 0x400caa20, 0x23a5: 0x400cac20, 0x23a6: 0x400cae20, 0x23a7: 0x400cb020,
+-	0x23a8: 0x400cb220, 0x23a9: 0x400cb420, 0x23aa: 0x400cb620, 0x23ab: 0x400cb820,
+-	0x23ac: 0x400cba20, 0x23ad: 0x400cbc20, 0x23ae: 0x400cbe20, 0x23af: 0x400cc020,
+-	0x23b0: 0x400cc220, 0x23b1: 0x400cc420, 0x23b2: 0x400cc620, 0x23b3: 0x400cc820,
+-	// Block 0x8f, offset 0x23c0
+-	0x23c0: 0x400cca20, 0x23c1: 0x400ccc20, 0x23c2: 0x400cce20, 0x23c3: 0x400cd020,
+-	0x23c4: 0x400cd220, 0x23c5: 0x400cd420, 0x23c6: 0x400cd620, 0x23c7: 0x400cd820,
+-	0x23c8: 0x400cda20, 0x23c9: 0x400cdc20, 0x23ca: 0x400cde20, 0x23cb: 0x400ce020,
+-	0x23cc: 0x400ce220, 0x23cd: 0x400ce420, 0x23ce: 0x400ce620, 0x23cf: 0x400ce820,
+-	0x23d0: 0x400cea20, 0x23d1: 0x400cec20, 0x23d2: 0x400cee20, 0x23d3: 0x400cf020,
+-	0x23d4: 0x400cf220, 0x23d5: 0x400cf420, 0x23d6: 0x400cf620, 0x23d7: 0x400cf820,
+-	0x23d8: 0x400cfa20, 0x23d9: 0x400cfc20, 0x23da: 0x400cfe20, 0x23db: 0x400d0020,
+-	0x23dc: 0x400d0220, 0x23dd: 0x400d0420, 0x23de: 0x400d0620, 0x23df: 0x400d0820,
+-	0x23e0: 0x400d0a20, 0x23e1: 0x400d0c20, 0x23e2: 0x400d0e20, 0x23e3: 0x400d1020,
+-	0x23e4: 0x400d1220, 0x23e5: 0x400d1420, 0x23e6: 0x400d1620,
+-	// Block 0x90, offset 0x2400
+-	0x2400: 0x400d1820, 0x2401: 0x400d1a20, 0x2402: 0x400d1c20, 0x2403: 0x400d1e20,
+-	0x2404: 0x400d2020, 0x2405: 0x400d2220, 0x2406: 0x400d2420, 0x2407: 0x400d2620,
+-	0x2408: 0x400d2820, 0x2409: 0x400d2a20, 0x240a: 0x400d2c20,
+-	0x2420: 0x0029ce86, 0x2421: 0x0029d086, 0x2422: 0x0029d286, 0x2423: 0x0029d486,
+-	0x2424: 0x0029d686, 0x2425: 0x0029d886, 0x2426: 0x0029da86, 0x2427: 0x0029dc86,
+-	0x2428: 0x0029de86, 0x2429: 0xf0000606, 0x242a: 0xf0000606, 0x242b: 0xf0000606,
+-	0x242c: 0xf0000606, 0x242d: 0xf0000606, 0x242e: 0xf0000606, 0x242f: 0xf0000606,
+-	0x2430: 0xf0000606, 0x2431: 0xf0000606, 0x2432: 0xf0000606, 0x2433: 0xf0000606,
+-	0x2434: 0xf0000404, 0x2435: 0xf0000404, 0x2436: 0xf0000404, 0x2437: 0xf0000404,
+-	0x2438: 0xf0000404, 0x2439: 0xf0000404, 0x243a: 0xf0000404, 0x243b: 0xf0000404,
+-	0x243c: 0xf0000404, 0x243d: 0xe0000015, 0x243e: 0xe000001a, 0x243f: 0xe000001f,
+-	// Block 0x91, offset 0x2440
+-	0x2440: 0xe0000024, 0x2441: 0xe0000029, 0x2442: 0xe000002e, 0x2443: 0xe0000033,
+-	0x2444: 0xe0000038, 0x2445: 0xe000003d, 0x2446: 0xe0000042, 0x2447: 0xe0000047,
+-	0x2448: 0xf0001f04, 0x2449: 0xf0001f04, 0x244a: 0xf0001f04, 0x244b: 0xf0001f04,
+-	0x244c: 0xf0001f04, 0x244d: 0xf0001f04, 0x244e: 0xf0001f04, 0x244f: 0xf0001f04,
+-	0x2450: 0xf0001f04, 0x2451: 0xf0000404, 0x2452: 0xf0000404, 0x2453: 0xf0000404,
+-	0x2454: 0xf0000404, 0x2455: 0xf0000404, 0x2456: 0xf0000404, 0x2457: 0xf0000404,
+-	0x2458: 0xf0000404, 0x2459: 0xf0000404, 0x245a: 0xf0000404, 0x245b: 0xf0000404,
+-	0x245c: 0xf0000404, 0x245d: 0xf0000404, 0x245e: 0xf0000404, 0x245f: 0xf0000404,
+-	0x2460: 0xf0000404, 0x2461: 0xf0000404, 0x2462: 0xf0000404, 0x2463: 0xf0000404,
+-	0x2464: 0xf0000404, 0x2465: 0xf0000404, 0x2466: 0xf0000404, 0x2467: 0xf0000404,
+-	0x2468: 0xf0000404, 0x2469: 0xf0000404, 0x246a: 0xf0000404, 0x246b: 0xf0000404,
+-	0x246c: 0xf0000404, 0x246d: 0xf0000404, 0x246e: 0xf0000404, 0x246f: 0xf0000404,
+-	0x2470: 0xf0000404, 0x2471: 0xf0000404, 0x2472: 0xf0000404, 0x2473: 0xf0000404,
+-	0x2474: 0xf0000404, 0x2475: 0xf0000404, 0x2476: 0x002bde8c, 0x2477: 0x002c0a8c,
+-	0x2478: 0x002c3a8c, 0x2479: 0x002c628c, 0x247a: 0x002c988c, 0x247b: 0x002d088c,
+-	0x247c: 0x002d228c, 0x247d: 0x002d688c, 0x247e: 0x002d9a8c, 0x247f: 0x002dcc8c,
+-	// Block 0x92, offset 0x2480
+-	0x2480: 0x002dfe8c, 0x2481: 0x002e228c, 0x2482: 0x002e828c, 0x2483: 0x002e9e8c,
+-	0x2484: 0x002ee28c, 0x2485: 0x002f2c8c, 0x2486: 0x002f568c, 0x2487: 0x002f7a8c,
+-	0x2488: 0x002fe68c, 0x2489: 0x00302c8c, 0x248a: 0x00306c8c, 0x248b: 0x0030be8c,
+-	0x248c: 0x0030e28c, 0x248d: 0x0030f68c, 0x248e: 0x0031008c, 0x248f: 0x00312a8c,
+-	0x2490: 0x002bde86, 0x2491: 0x002c0a86, 0x2492: 0x002c3a86, 0x2493: 0x002c6286,
+-	0x2494: 0x002c9886, 0x2495: 0x002d0886, 0x2496: 0x002d2286, 0x2497: 0x002d6886,
+-	0x2498: 0x002d9a86, 0x2499: 0x002dcc86, 0x249a: 0x002dfe86, 0x249b: 0x002e2286,
+-	0x249c: 0x002e8286, 0x249d: 0x002e9e86, 0x249e: 0x002ee286, 0x249f: 0x002f2c86,
+-	0x24a0: 0x002f5686, 0x24a1: 0x002f7a86, 0x24a2: 0x002fe686, 0x24a3: 0x00302c86,
+-	0x24a4: 0x00306c86, 0x24a5: 0x0030be86, 0x24a6: 0x0030e286, 0x24a7: 0x0030f686,
+-	0x24a8: 0x00310086, 0x24a9: 0x00312a86, 0x24aa: 0x0029cc86, 0x24ab: 0xe00002e6,
+-	0x24ac: 0xe00002e9, 0x24ad: 0xe00002ec, 0x24ae: 0xe00002ef, 0x24af: 0xe00002f2,
+-	0x24b0: 0xe00002f5, 0x24b1: 0xe00002f8, 0x24b2: 0xe00002fb, 0x24b3: 0xe00002fe,
+-	0x24b4: 0xe00003d5, 0x24b5: 0x0029ce86, 0x24b6: 0x0029d086, 0x24b7: 0x0029d286,
+-	0x24b8: 0x0029d486, 0x24b9: 0x0029d686, 0x24ba: 0x0029d886, 0x24bb: 0x0029da86,
+-	0x24bc: 0x0029dc86, 0x24bd: 0x0029de86, 0x24be: 0xe00002d7, 0x24bf: 0x0029cc86,
+-	// Block 0x93, offset 0x24c0
+-	0x24c0: 0x400d2e20, 0x24c1: 0x400d3020, 0x24c2: 0x400d3220, 0x24c3: 0x400d3420,
+-	0x24c4: 0x400d3620, 0x24c5: 0x400d3820, 0x24c6: 0x400d3a20, 0x24c7: 0x400d3c20,
+-	0x24c8: 0x400d3e20, 0x24c9: 0x400d4020, 0x24ca: 0x400d4220, 0x24cb: 0x400d4420,
+-	0x24cc: 0x400d4620, 0x24cd: 0x400d4820, 0x24ce: 0x400d4a20, 0x24cf: 0x400d4c20,
+-	0x24d0: 0x400d4e20, 0x24d1: 0x400d5020, 0x24d2: 0x400d5220, 0x24d3: 0x400d5420,
+-	0x24d4: 0x400d5620, 0x24d5: 0x400d5820, 0x24d6: 0x400d5a20, 0x24d7: 0x400d5c20,
+-	0x24d8: 0x400d5e20, 0x24d9: 0x400d6020, 0x24da: 0x400d6220, 0x24db: 0x400d6420,
+-	0x24dc: 0x400d6620, 0x24dd: 0x400d6820, 0x24de: 0x400d6a20, 0x24df: 0x400d6c20,
+-	0x24e0: 0x400d6e20, 0x24e1: 0x400d7020, 0x24e2: 0x400d7220, 0x24e3: 0x400d7420,
+-	0x24e4: 0x400d7620, 0x24e5: 0x400d7820, 0x24e6: 0x400d7a20, 0x24e7: 0x400d7c20,
+-	0x24e8: 0x400d7e20, 0x24e9: 0x400d8020, 0x24ea: 0x400d8220, 0x24eb: 0x400d8420,
+-	0x24ec: 0x400d8620, 0x24ed: 0x400d8820, 0x24ee: 0x400d8a20, 0x24ef: 0x400d8c20,
+-	0x24f0: 0x400d8e20, 0x24f1: 0x400d9020, 0x24f2: 0x400d9220, 0x24f3: 0x400d9420,
+-	0x24f4: 0x400d9620, 0x24f5: 0x400d9820, 0x24f6: 0x400d9a20, 0x24f7: 0x400d9c20,
+-	0x24f8: 0x400d9e20, 0x24f9: 0x400da020, 0x24fa: 0x400da220, 0x24fb: 0x400da420,
+-	0x24fc: 0x400da620, 0x24fd: 0x400da820, 0x24fe: 0x400daa20, 0x24ff: 0x400dac20,
+-	// Block 0x94, offset 0x2500
+-	0x2500: 0x400dae20, 0x2501: 0x400db020, 0x2502: 0x400db220, 0x2503: 0x400db420,
+-	0x2504: 0x400db620, 0x2505: 0x400db820, 0x2506: 0x400dba20, 0x2507: 0x400dbc20,
+-	0x2508: 0x400dbe20, 0x2509: 0x400dc020, 0x250a: 0x400dc220, 0x250b: 0x400dc420,
+-	0x250c: 0x400dc620, 0x250d: 0x400dc820, 0x250e: 0x400dca20, 0x250f: 0x400dcc20,
+-	0x2510: 0x400dce20, 0x2511: 0x400dd020, 0x2512: 0x400dd220, 0x2513: 0x400dd420,
+-	0x2514: 0x400dd620, 0x2515: 0x400dd820, 0x2516: 0x400dda20, 0x2517: 0x400ddc20,
+-	0x2518: 0x400dde20, 0x2519: 0x400de020, 0x251a: 0x400de220, 0x251b: 0x400de420,
+-	0x251c: 0x400de620, 0x251d: 0x400de820, 0x251e: 0x400dea20, 0x251f: 0x400dec20,
+-	0x2520: 0x400dee20, 0x2521: 0x400df020, 0x2522: 0x400df220, 0x2523: 0x400df420,
+-	0x2524: 0x400df620, 0x2525: 0x400df820, 0x2526: 0x400dfa20, 0x2527: 0x400dfc20,
+-	0x2528: 0x400dfe20, 0x2529: 0x400e0020, 0x252a: 0x400e0220, 0x252b: 0x400e0420,
+-	0x252c: 0x400e0620, 0x252d: 0x400e0820, 0x252e: 0x400e0a20, 0x252f: 0x400e0c20,
+-	0x2530: 0x400e0e20, 0x2531: 0x400e1020, 0x2532: 0x400e1220, 0x2533: 0x400e1420,
+-	0x2534: 0x400e1620, 0x2535: 0x400e1820, 0x2536: 0x400e1a20, 0x2537: 0x400e1c20,
+-	0x2538: 0x400e1e20, 0x2539: 0x400e2020, 0x253a: 0x400e2220, 0x253b: 0x400e2420,
+-	0x253c: 0x400e2620, 0x253d: 0x400e2820, 0x253e: 0x400e2a20, 0x253f: 0x400e2c20,
+-	// Block 0x95, offset 0x2540
+-	0x2540: 0x400e2e20, 0x2541: 0x400e3020, 0x2542: 0x400e3220, 0x2543: 0x400e3420,
+-	0x2544: 0x400e3620, 0x2545: 0x400e3820, 0x2546: 0x400e3a20, 0x2547: 0x400e3c20,
+-	0x2548: 0x400e3e20, 0x2549: 0x400e4020, 0x254a: 0x400e4220, 0x254b: 0x400e4420,
+-	0x254c: 0x400e4620, 0x254d: 0x400e4820, 0x254e: 0x400e4a20, 0x254f: 0x400e4c20,
+-	0x2550: 0x400e4e20, 0x2551: 0x400e5020, 0x2552: 0x400e5220, 0x2553: 0x400e5420,
+-	0x2554: 0x400e5620, 0x2555: 0x400e5820, 0x2556: 0x400e5a20, 0x2557: 0x400e5c20,
+-	0x2558: 0x400e5e20, 0x2559: 0x400e6020, 0x255a: 0x400e6220, 0x255b: 0x400e6420,
+-	0x255c: 0x400e6620, 0x255d: 0x400e6820, 0x255e: 0x400e6a20, 0x255f: 0x400e6c20,
+-	0x2560: 0x400e6e20, 0x2561: 0x400e7020, 0x2562: 0x400e7220, 0x2563: 0x400e7420,
+-	0x2564: 0x400e7620, 0x2565: 0x400e7820, 0x2566: 0x400e7a20, 0x2567: 0x400e7c20,
+-	0x2568: 0x400e7e20, 0x2569: 0x400e8020, 0x256a: 0x400e8220, 0x256b: 0x400e8420,
+-	0x256c: 0x400e8620, 0x256d: 0x400e8820, 0x256e: 0x400e8a20, 0x256f: 0x400e8c20,
+-	0x2570: 0x400e8e20, 0x2571: 0x400e9020, 0x2572: 0x400e9220, 0x2573: 0x400e9420,
+-	0x2574: 0x400e9620, 0x2575: 0x400e9820, 0x2576: 0x400e9a20, 0x2577: 0x400e9c20,
+-	0x2578: 0x400e9e20, 0x2579: 0x400ea020, 0x257a: 0x400ea220, 0x257b: 0x400ea420,
+-	0x257c: 0x400ea620, 0x257d: 0x400ea820, 0x257e: 0x400eaa20, 0x257f: 0x400eac20,
+-	// Block 0x96, offset 0x2580
+-	0x2580: 0x400eae20, 0x2581: 0x400eb020, 0x2582: 0x400eb220, 0x2583: 0x400eb420,
+-	0x2584: 0x400eb620, 0x2585: 0x400eb820, 0x2586: 0x400eba20, 0x2587: 0x400ebc20,
+-	0x2588: 0x400ebe20, 0x2589: 0x400ec020, 0x258a: 0x400ec220, 0x258b: 0x400ec420,
+-	0x258c: 0x400ec620, 0x258d: 0x400ec820, 0x258e: 0x400eca20, 0x258f: 0x400ecc20,
+-	0x2590: 0x400ece20, 0x2591: 0x400ed020, 0x2592: 0x400ed220, 0x2593: 0x400ed420,
+-	0x2594: 0x400ed620, 0x2595: 0x400ed820, 0x2596: 0x400eda20, 0x2597: 0x400edc20,
+-	0x2598: 0x400ede20, 0x2599: 0x400ee020, 0x259a: 0x400ee220, 0x259b: 0x400ee420,
+-	0x259c: 0x400ee620, 0x259d: 0x400ee820, 0x259e: 0x400eea20, 0x259f: 0x400eec20,
+-	0x25a0: 0x400eee20, 0x25a1: 0x400ef020, 0x25a2: 0x400ef220, 0x25a3: 0x400ef420,
+-	0x25a4: 0x400ef620, 0x25a5: 0x400ef820, 0x25a6: 0x400efa20, 0x25a7: 0x400efc20,
+-	0x25a8: 0x400efe20, 0x25a9: 0x400f0020, 0x25aa: 0x400f0220, 0x25ab: 0x400f0420,
+-	0x25ac: 0x400f0620, 0x25ad: 0x400f0820, 0x25ae: 0x400f0a20, 0x25af: 0x400f0c20,
+-	0x25b0: 0x400f0e20, 0x25b1: 0x400f1020, 0x25b2: 0x400f1220, 0x25b3: 0x400f1420,
+-	0x25b4: 0x400f1620, 0x25b5: 0x400f1820, 0x25b6: 0x400f1a20, 0x25b7: 0x400f1c20,
+-	0x25b8: 0x400f1e20, 0x25b9: 0x400f2020, 0x25ba: 0x400f2220, 0x25bb: 0x400f2420,
+-	0x25bc: 0x400f2620, 0x25bd: 0x400f2820, 0x25be: 0x400f2a20, 0x25bf: 0x400f2c20,
+-	// Block 0x97, offset 0x25c0
+-	0x25c0: 0x400f2e20, 0x25c1: 0x400f3020, 0x25c2: 0x400f3220, 0x25c3: 0x400f3420,
+-	0x25c4: 0x400f3620, 0x25c5: 0x400f3820, 0x25c6: 0x400f3a20, 0x25c7: 0x400f3c20,
+-	0x25c8: 0x400f3e20, 0x25c9: 0x400f4020, 0x25ca: 0x400f4220, 0x25cb: 0x400f4420,
+-	0x25cc: 0x400f4620, 0x25cd: 0x400f4820, 0x25ce: 0x400f4a20, 0x25cf: 0x400f4c20,
+-	0x25d0: 0x400f4e20, 0x25d1: 0x400f5020, 0x25d2: 0x400f5220, 0x25d3: 0x400f5420,
+-	0x25d4: 0x400f5620, 0x25d5: 0x400f5820, 0x25d6: 0x400f5a20, 0x25d7: 0x400f5c20,
+-	0x25d8: 0x400f5e20, 0x25d9: 0x400f6020, 0x25da: 0x400f6220, 0x25db: 0x400f6420,
+-	0x25dc: 0x400f6620, 0x25dd: 0x400f6820, 0x25de: 0x400f6a20, 0x25df: 0x400f6c20,
+-	0x25e0: 0x400f6e20, 0x25e1: 0x400f7020, 0x25e2: 0x400f7220, 0x25e3: 0x400f7420,
+-	0x25e4: 0x400f7620, 0x25e5: 0x400f7820, 0x25e6: 0x400f7a20, 0x25e7: 0x400f7c20,
+-	0x25e8: 0x400f7e20, 0x25e9: 0x400f8020, 0x25ea: 0x400f8220, 0x25eb: 0x400f8420,
+-	0x25ec: 0x400f8620, 0x25ed: 0x400f8820, 0x25ee: 0x400f8a20, 0x25ef: 0x400f8c20,
+-	0x25f0: 0x40195220, 0x25f1: 0x40195420, 0x25f2: 0x40195620, 0x25f3: 0x40195820,
+-	0x25f4: 0x40195a20, 0x25f5: 0x40195c20, 0x25f6: 0x40195e20, 0x25f7: 0x40196020,
+-	0x25f8: 0x400f8e20, 0x25f9: 0x400f9020, 0x25fa: 0x400f9220, 0x25fb: 0x400f9420,
+-	0x25fc: 0x400f9620, 0x25fd: 0x400f9820, 0x25fe: 0x400f9a20, 0x25ff: 0x400f9c20,
+-	// Block 0x98, offset 0x2600
+-	0x2600: 0x400f9e20, 0x2601: 0x400fa020, 0x2602: 0x400fa220, 0x2603: 0x400fa420,
+-	0x2604: 0x400fa620, 0x2605: 0x400fa820, 0x2606: 0x400faa20, 0x2607: 0x400fac20,
+-	0x2608: 0x400fae20, 0x2609: 0x400fb020, 0x260a: 0x400fb220, 0x260b: 0x400fb420,
+-	0x260c: 0x400fb620, 0x260d: 0x400fb820, 0x260e: 0x400fba20, 0x260f: 0x400fbc20,
+-	0x2610: 0x400fbe20, 0x2611: 0x400fc020, 0x2612: 0x400fc220, 0x2613: 0x400fc420,
+-	0x2614: 0x400fc620, 0x2615: 0x400fc820, 0x2616: 0x400fca20, 0x2617: 0x400fcc20,
+-	0x2618: 0x400fce20, 0x2619: 0x400fd020, 0x261a: 0x400fd220, 0x261b: 0x400fd420,
+-	0x261c: 0x400fd620, 0x261d: 0x400fd820, 0x261e: 0x400fda20, 0x261f: 0x400fdc20,
+-	0x2620: 0x400fde20, 0x2621: 0x400fe020, 0x2622: 0x400fe220, 0x2623: 0x400fe420,
+-	0x2624: 0x400fe620, 0x2625: 0x400fe820, 0x2626: 0x400fea20, 0x2627: 0x400fec20,
+-	0x2628: 0x400fee20, 0x2629: 0x400ff020, 0x262a: 0x400ff220, 0x262b: 0x400ff420,
+-	0x262c: 0x400ff620, 0x262d: 0x401dde20, 0x262e: 0x401de020, 0x262f: 0x401de220,
+-	0x2630: 0x400ff820, 0x2631: 0x400ffa20, 0x2632: 0x400ffc20, 0x2633: 0x400ffe20,
+-	0x2634: 0x40100020, 0x2635: 0x40100220, 0x2636: 0x40100420, 0x2637: 0x40100620,
+-	0x2638: 0x40100820, 0x2639: 0x40100a20, 0x263a: 0x40100c20, 0x263b: 0x40100e20,
+-	0x263c: 0x40101020, 0x263d: 0x40101220, 0x263e: 0x40101420, 0x263f: 0x40101620,
+-	// Block 0x99, offset 0x2640
+-	0x2640: 0x40101820, 0x2641: 0x40101a20, 0x2642: 0x40101c20, 0x2643: 0x40101e20,
+-	0x2644: 0x40102020, 0x2645: 0x40102220, 0x2646: 0x40102420, 0x2647: 0x40102620,
+-	0x2648: 0x40102820, 0x2649: 0x40102a20, 0x264a: 0x40194620, 0x264b: 0x40194820,
+-	0x264c: 0x40194a20, 0x264d: 0x40194c20, 0x264e: 0x40194e20, 0x264f: 0x40195020,
+-	0x2650: 0x40102c20, 0x2651: 0x40102e20, 0x2652: 0x40103020, 0x2653: 0x40103220,
+-	0x2654: 0x40103420, 0x2655: 0x40103620, 0x2656: 0x40103820, 0x2657: 0x40103a20,
+-	0x2658: 0x40103c20, 0x2659: 0x40103e20, 0x265a: 0x40104020, 0x265b: 0x40104220,
+-	0x265c: 0x40104420, 0x265d: 0x40104620, 0x265e: 0x40104820, 0x265f: 0x40104a20,
+-	0x2660: 0x40104c20, 0x2661: 0x40104e20, 0x2662: 0x40105020, 0x2663: 0x40105220,
+-	0x2664: 0x40105420, 0x2665: 0x40105620, 0x2666: 0x40105820, 0x2667: 0x40105a20,
+-	0x2668: 0x40105c20, 0x2669: 0x40105e20, 0x266a: 0x40106020, 0x266b: 0x40106220,
+-	0x266c: 0x40106420, 0x266d: 0x40106620, 0x266e: 0x40106820, 0x266f: 0x40106a20,
+-	0x2670: 0x40106c20, 0x2671: 0x40106e20, 0x2672: 0x40107020, 0x2673: 0x40107220,
+-	0x2674: 0x40107420, 0x2675: 0x40107620, 0x2676: 0x40107820, 0x2677: 0x40107a20,
+-	0x2678: 0x40107c20, 0x2679: 0x40107e20, 0x267a: 0x40108020, 0x267b: 0x40108220,
+-	0x267c: 0x40108420, 0x267d: 0x40108620, 0x267e: 0x40108820, 0x267f: 0x40108a20,
+-	// Block 0x9a, offset 0x2680
+-	0x2680: 0x40108c20, 0x2681: 0x40108e20, 0x2682: 0x40109020, 0x2683: 0x40109220,
+-	0x2684: 0x40109420, 0x2685: 0x40109620, 0x2686: 0x40109820, 0x2687: 0x40109a20,
+-	0x2688: 0x40109c20, 0x2689: 0x40109e20, 0x268a: 0x4010a020, 0x268b: 0x4010a220,
+-	0x268c: 0x4010a420, 0x268d: 0x4010a620, 0x268e: 0x4010a820, 0x268f: 0x4010aa20,
+-	0x2690: 0x4010ac20, 0x2691: 0x4010ae20, 0x2692: 0x4010b020, 0x2693: 0x4010b220,
+-	0x2694: 0x4010b420, 0x2695: 0x4010b620, 0x2696: 0x4010b820, 0x2697: 0x4010ba20,
+-	0x2698: 0x4010bc20, 0x2699: 0x4010be20, 0x269a: 0x4010c020, 0x269b: 0x4010c220,
+-	0x269c: 0x4010c420, 0x269d: 0x4010c620, 0x269e: 0x4010c820, 0x269f: 0x4010ca20,
+-	0x26a0: 0x4010cc20, 0x26a1: 0x4010ce20, 0x26a2: 0x4010d020, 0x26a3: 0x4010d220,
+-	0x26a4: 0x4010d420, 0x26a5: 0x4010d620, 0x26a6: 0x4010d820, 0x26a7: 0x4010da20,
+-	0x26a8: 0x4010dc20, 0x26a9: 0x4010de20, 0x26aa: 0x4010e020, 0x26ab: 0x4010e220,
+-	0x26ac: 0x4010e420, 0x26ad: 0x4010e620, 0x26ae: 0x4010e820, 0x26af: 0x4010ea20,
+-	0x26b0: 0x4010ec20, 0x26b1: 0x4010ee20, 0x26b2: 0x4010f020, 0x26b3: 0x4010f220,
+-	0x26b4: 0x4010f420, 0x26b5: 0x4010f620, 0x26b6: 0x4010f820, 0x26b7: 0x4010fa20,
+-	0x26b8: 0x4010fc20, 0x26b9: 0x4010fe20, 0x26ba: 0x40110020, 0x26bb: 0x40110220,
+-	0x26bc: 0x40110420, 0x26bd: 0x40110620, 0x26be: 0x40110820, 0x26bf: 0x40110a20,
+-	// Block 0x9b, offset 0x26c0
+-	0x26c1: 0x40114020, 0x26c2: 0x40114220, 0x26c3: 0x40114420,
+-	0x26c4: 0x40114620, 0x26c5: 0x40114820, 0x26c6: 0x40114a20, 0x26c7: 0x40114c20,
+-	0x26c8: 0x40114e20, 0x26c9: 0x40115020, 0x26ca: 0x40115220, 0x26cb: 0x40115420,
+-	0x26cc: 0x40115620, 0x26cd: 0x40115820, 0x26ce: 0x40115a20, 0x26cf: 0x40115c20,
+-	0x26d0: 0x40115e20, 0x26d1: 0x40116020, 0x26d2: 0x40116220, 0x26d3: 0x40116420,
+-	0x26d4: 0x40116620, 0x26d5: 0x40116820, 0x26d6: 0x40116a20, 0x26d7: 0x40116c20,
+-	0x26d8: 0x40116e20, 0x26d9: 0x40117020, 0x26da: 0x40117220, 0x26db: 0x40117420,
+-	0x26dc: 0x40117620, 0x26dd: 0x40117820, 0x26de: 0x40117a20, 0x26df: 0x40117c20,
+-	0x26e0: 0x40117e20, 0x26e1: 0x40118020, 0x26e2: 0x40118220, 0x26e3: 0x40118420,
+-	0x26e4: 0x40118620, 0x26e5: 0x40118820, 0x26e6: 0x40118a20, 0x26e7: 0x40118c20,
+-	0x26e8: 0x40118e20, 0x26e9: 0x40119020, 0x26ea: 0x40119220, 0x26eb: 0x40119420,
+-	0x26ec: 0x40119620, 0x26ed: 0x40119820, 0x26ee: 0x40119a20, 0x26ef: 0x40119c20,
+-	0x26f0: 0x40119e20, 0x26f1: 0x4011a020, 0x26f2: 0x4011a220, 0x26f3: 0x4011a420,
+-	0x26f4: 0x4011a620, 0x26f5: 0x4011a820, 0x26f6: 0x4011aa20, 0x26f7: 0x4011ac20,
+-	0x26f8: 0x4011ae20, 0x26f9: 0x4011b020, 0x26fa: 0x4011b220, 0x26fb: 0x4011b420,
+-	0x26fc: 0x4011b620, 0x26fd: 0x4011b820, 0x26fe: 0x4011ba20, 0x26ff: 0x4011bc20,
+-	// Block 0x9c, offset 0x2700
+-	0x2700: 0x4011be20, 0x2701: 0x4011c020, 0x2702: 0x4011c220, 0x2703: 0x4011c420,
+-	0x2704: 0x4011c620, 0x2705: 0x4011c820, 0x2706: 0x4011ca20, 0x2707: 0x4011cc20,
+-	0x2708: 0x4011ce20, 0x2709: 0x4011d020, 0x270a: 0x4011d220, 0x270b: 0x4011d420,
+-	0x270c: 0x4011d620, 0x270d: 0x4011d820, 0x270e: 0x4011da20, 0x270f: 0x4011dc20,
+-	0x2710: 0x4011de20, 0x2711: 0x4011e020, 0x2712: 0x4011e220, 0x2713: 0x4011e420,
+-	0x2714: 0x4011e620, 0x2715: 0x4011e820, 0x2716: 0x4011ea20, 0x2717: 0x4011ec20,
+-	0x2718: 0x4011ee20, 0x2719: 0x4011f020, 0x271a: 0x4011f220, 0x271b: 0x4011f420,
+-	0x271c: 0x4011f620, 0x271d: 0x4011f820, 0x271e: 0x4011fa20, 0x271f: 0x4011fc20,
+-	0x2720: 0x4011fe20, 0x2721: 0x40120020, 0x2722: 0x40120220, 0x2723: 0x40120420,
+-	0x2724: 0x40120620, 0x2725: 0x40120820, 0x2726: 0x40120a20, 0x2727: 0x40120c20,
+-	0x2728: 0x40045820, 0x2729: 0x40045a20, 0x272a: 0x40045c20, 0x272b: 0x40045e20,
+-	0x272c: 0x40046020, 0x272d: 0x40046220, 0x272e: 0x40046420, 0x272f: 0x40046620,
+-	0x2730: 0x40046820, 0x2731: 0x40046a20, 0x2732: 0x40046c20, 0x2733: 0x40046e20,
+-	0x2734: 0x40047020, 0x2735: 0x40047220, 0x2736: 0x0029ce86, 0x2737: 0x0029d086,
+-	0x2738: 0x0029d286, 0x2739: 0x0029d486, 0x273a: 0x0029d686, 0x273b: 0x0029d886,
+-	0x273c: 0x0029da86, 0x273d: 0x0029dc86, 0x273e: 0x0029de86, 0x273f: 0xe00002da,
+-	// Block 0x9d, offset 0x2740
+-	0x2740: 0x0029ce86, 0x2741: 0x0029d086, 0x2742: 0x0029d286, 0x2743: 0x0029d486,
+-	0x2744: 0x0029d686, 0x2745: 0x0029d886, 0x2746: 0x0029da86, 0x2747: 0x0029dc86,
+-	0x2748: 0x0029de86, 0x2749: 0xe00002dd, 0x274a: 0x0029ce86, 0x274b: 0x0029d086,
+-	0x274c: 0x0029d286, 0x274d: 0x0029d486, 0x274e: 0x0029d686, 0x274f: 0x0029d886,
+-	0x2750: 0x0029da86, 0x2751: 0x0029dc86, 0x2752: 0x0029de86, 0x2753: 0xe00002e0,
+-	0x2754: 0x40120e20, 0x2755: 0x40121020, 0x2756: 0x40121220, 0x2757: 0x40121420,
+-	0x2758: 0x40121620, 0x2759: 0x40121820, 0x275a: 0x40121a20, 0x275b: 0x40121c20,
+-	0x275c: 0x40121e20, 0x275d: 0x40122020, 0x275e: 0x40122220, 0x275f: 0x40122420,
+-	0x2760: 0x40122620, 0x2761: 0x40122820, 0x2762: 0x40122a20, 0x2763: 0x40122c20,
+-	0x2764: 0x40122e20, 0x2765: 0x40123020, 0x2766: 0x40123220, 0x2767: 0x40123420,
+-	0x2768: 0x40123620, 0x2769: 0x40123820, 0x276a: 0x40123a20, 0x276b: 0x40123c20,
+-	0x276c: 0x40123e20, 0x276d: 0x40124020, 0x276e: 0x40124220, 0x276f: 0x40124420,
+-	0x2770: 0x40124620, 0x2771: 0x40124820, 0x2772: 0x40124a20, 0x2773: 0x40124c20,
+-	0x2774: 0x40124e20, 0x2775: 0x40125020, 0x2776: 0x40125220, 0x2777: 0x40125420,
+-	0x2778: 0x40125620, 0x2779: 0x40125820, 0x277a: 0x40125a20, 0x277b: 0x40125c20,
+-	0x277c: 0x40125e20, 0x277d: 0x40126020, 0x277e: 0x40126220, 0x277f: 0x40126420,
+-	// Block 0x9e, offset 0x2780
+-	0x2780: 0x40126620, 0x2781: 0x40126820, 0x2782: 0x40126a20, 0x2783: 0x40126c20,
+-	0x2784: 0x40126e20, 0x2785: 0x40044020, 0x2786: 0x40044220, 0x2787: 0x40127020,
+-	0x2788: 0x40127220, 0x2789: 0x40127420, 0x278a: 0x40127620, 0x278b: 0x40127820,
+-	0x278c: 0x40127a20, 0x278d: 0x40127c20, 0x278e: 0x40127e20, 0x278f: 0x40128020,
+-	0x2790: 0x40128220, 0x2791: 0x40128420, 0x2792: 0x40128620, 0x2793: 0x40128820,
+-	0x2794: 0x40128a20, 0x2795: 0x40128c20, 0x2796: 0x40128e20, 0x2797: 0x40129020,
+-	0x2798: 0x40129220, 0x2799: 0x40129420, 0x279a: 0x40129620, 0x279b: 0x40129820,
+-	0x279c: 0x40129a20, 0x279d: 0x40129c20, 0x279e: 0x40129e20, 0x279f: 0x4012a020,
+-	0x27a0: 0x4012a220, 0x27a1: 0x4012a420, 0x27a2: 0x4012a620, 0x27a3: 0x4012a820,
+-	0x27a4: 0x4012aa20, 0x27a5: 0x4012ac20, 0x27a6: 0x40044420, 0x27a7: 0x40044620,
+-	0x27a8: 0x40044820, 0x27a9: 0x40044a20, 0x27aa: 0x40044c20, 0x27ab: 0x40044e20,
+-	0x27ac: 0x40045020, 0x27ad: 0x40045220, 0x27ae: 0x40045420, 0x27af: 0x40045620,
+-	0x27b0: 0x4012ae20, 0x27b1: 0x4012b020, 0x27b2: 0x4012b220, 0x27b3: 0x4012b420,
+-	0x27b4: 0x4012b620, 0x27b5: 0x4012b820, 0x27b6: 0x4012ba20, 0x27b7: 0x4012bc20,
+-	0x27b8: 0x4012be20, 0x27b9: 0x4012c020, 0x27ba: 0x4012c220, 0x27bb: 0x4012c420,
+-	0x27bc: 0x4012c620, 0x27bd: 0x4012c820, 0x27be: 0x4012ca20, 0x27bf: 0x4012cc20,
+-	// Block 0x9f, offset 0x27c0
+-	0x27c0: 0x40174620, 0x27c1: 0x40174820, 0x27c2: 0x40174a20, 0x27c3: 0x40174c20,
+-	0x27c4: 0x40174e20, 0x27c5: 0x40175020, 0x27c6: 0x40175220, 0x27c7: 0x40175420,
+-	0x27c8: 0x40175620, 0x27c9: 0x40175820, 0x27ca: 0x40175a20, 0x27cb: 0x40175c20,
+-	0x27cc: 0x40175e20, 0x27cd: 0x40176020, 0x27ce: 0x40176220, 0x27cf: 0x40176420,
+-	0x27d0: 0x40176620, 0x27d1: 0x40176820, 0x27d2: 0x40176a20, 0x27d3: 0x40176c20,
+-	0x27d4: 0x40176e20, 0x27d5: 0x40177020, 0x27d6: 0x40177220, 0x27d7: 0x40177420,
+-	0x27d8: 0x40177620, 0x27d9: 0x40177820, 0x27da: 0x40177a20, 0x27db: 0x40177c20,
+-	0x27dc: 0x40177e20, 0x27dd: 0x40178020, 0x27de: 0x40178220, 0x27df: 0x40178420,
+-	0x27e0: 0x40178620, 0x27e1: 0x40178820, 0x27e2: 0x40178a20, 0x27e3: 0x40178c20,
+-	0x27e4: 0x40178e20, 0x27e5: 0x40179020, 0x27e6: 0x40179220, 0x27e7: 0x40179420,
+-	0x27e8: 0x40179620, 0x27e9: 0x40179820, 0x27ea: 0x40179a20, 0x27eb: 0x40179c20,
+-	0x27ec: 0x40179e20, 0x27ed: 0x4017a020, 0x27ee: 0x4017a220, 0x27ef: 0x4017a420,
+-	0x27f0: 0x4017a620, 0x27f1: 0x4017a820, 0x27f2: 0x4017aa20, 0x27f3: 0x4017ac20,
+-	0x27f4: 0x4017ae20, 0x27f5: 0x4017b020, 0x27f6: 0x4017b220, 0x27f7: 0x4017b420,
+-	0x27f8: 0x4017b620, 0x27f9: 0x4017b820, 0x27fa: 0x4017ba20, 0x27fb: 0x4017bc20,
+-	0x27fc: 0x4017be20, 0x27fd: 0x4017c020, 0x27fe: 0x4017c220, 0x27ff: 0x4017c420,
+-	// Block 0xa0, offset 0x2800
+-	0x2800: 0x4017c620, 0x2801: 0x4017c820, 0x2802: 0x4017ca20, 0x2803: 0x4017cc20,
+-	0x2804: 0x4017ce20, 0x2805: 0x4017d020, 0x2806: 0x4017d220, 0x2807: 0x4017d420,
+-	0x2808: 0x4017d620, 0x2809: 0x4017d820, 0x280a: 0x4017da20, 0x280b: 0x4017dc20,
+-	0x280c: 0x4017de20, 0x280d: 0x4017e020, 0x280e: 0x4017e220, 0x280f: 0x4017e420,
+-	0x2810: 0x4017e620, 0x2811: 0x4017e820, 0x2812: 0x4017ea20, 0x2813: 0x4017ec20,
+-	0x2814: 0x4017ee20, 0x2815: 0x4017f020, 0x2816: 0x4017f220, 0x2817: 0x4017f420,
+-	0x2818: 0x4017f620, 0x2819: 0x4017f820, 0x281a: 0x4017fa20, 0x281b: 0x4017fc20,
+-	0x281c: 0x4017fe20, 0x281d: 0x40180020, 0x281e: 0x40180220, 0x281f: 0x40180420,
+-	0x2820: 0x40180620, 0x2821: 0x40180820, 0x2822: 0x40180a20, 0x2823: 0x40180c20,
+-	0x2824: 0x40180e20, 0x2825: 0x40181020, 0x2826: 0x40181220, 0x2827: 0x40181420,
+-	0x2828: 0x40181620, 0x2829: 0x40181820, 0x282a: 0x40181a20, 0x282b: 0x40181c20,
+-	0x282c: 0x40181e20, 0x282d: 0x40182020, 0x282e: 0x40182220, 0x282f: 0x40182420,
+-	0x2830: 0x40182620, 0x2831: 0x40182820, 0x2832: 0x40182a20, 0x2833: 0x40182c20,
+-	0x2834: 0x40182e20, 0x2835: 0x40183020, 0x2836: 0x40183220, 0x2837: 0x40183420,
+-	0x2838: 0x40183620, 0x2839: 0x40183820, 0x283a: 0x40183a20, 0x283b: 0x40183c20,
+-	0x283c: 0x40183e20, 0x283d: 0x40184020, 0x283e: 0x40184220, 0x283f: 0x40184420,
+-	// Block 0xa1, offset 0x2840
+-	0x2840: 0x40184620, 0x2841: 0x40184820, 0x2842: 0x40184a20, 0x2843: 0x40184c20,
+-	0x2844: 0x40184e20, 0x2845: 0x40185020, 0x2846: 0x40185220, 0x2847: 0x40185420,
+-	0x2848: 0x40185620, 0x2849: 0x40185820, 0x284a: 0x40185a20, 0x284b: 0x40185c20,
+-	0x284c: 0x40185e20, 0x284d: 0x40186020, 0x284e: 0x40186220, 0x284f: 0x40186420,
+-	0x2850: 0x40186620, 0x2851: 0x40186820, 0x2852: 0x40186a20, 0x2853: 0x40186c20,
+-	0x2854: 0x40186e20, 0x2855: 0x40187020, 0x2856: 0x40187220, 0x2857: 0x40187420,
+-	0x2858: 0x40187620, 0x2859: 0x40187820, 0x285a: 0x40187a20, 0x285b: 0x40187c20,
+-	0x285c: 0x40187e20, 0x285d: 0x40188020, 0x285e: 0x40188220, 0x285f: 0x40188420,
+-	0x2860: 0x40188620, 0x2861: 0x40188820, 0x2862: 0x40188a20, 0x2863: 0x40188c20,
+-	0x2864: 0x40188e20, 0x2865: 0x40189020, 0x2866: 0x40189220, 0x2867: 0x40189420,
+-	0x2868: 0x40189620, 0x2869: 0x40189820, 0x286a: 0x40189a20, 0x286b: 0x40189c20,
+-	0x286c: 0x40189e20, 0x286d: 0x4018a020, 0x286e: 0x4018a220, 0x286f: 0x4018a420,
+-	0x2870: 0x4018a620, 0x2871: 0x4018a820, 0x2872: 0x4018aa20, 0x2873: 0x4018ac20,
+-	0x2874: 0x4018ae20, 0x2875: 0x4018b020, 0x2876: 0x4018b220, 0x2877: 0x4018b420,
+-	0x2878: 0x4018b620, 0x2879: 0x4018b820, 0x287a: 0x4018ba20, 0x287b: 0x4018bc20,
+-	0x287c: 0x4018be20, 0x287d: 0x4018c020, 0x287e: 0x4018c220, 0x287f: 0x4018c420,
+-	// Block 0xa2, offset 0x2880
+-	0x2880: 0x4018c620, 0x2881: 0x4018c820, 0x2882: 0x4018ca20, 0x2883: 0x4018cc20,
+-	0x2884: 0x4018ce20, 0x2885: 0x4018d020, 0x2886: 0x4018d220, 0x2887: 0x4018d420,
+-	0x2888: 0x4018d620, 0x2889: 0x4018d820, 0x288a: 0x4018da20, 0x288b: 0x4018dc20,
+-	0x288c: 0x4018de20, 0x288d: 0x4018e020, 0x288e: 0x4018e220, 0x288f: 0x4018e420,
+-	0x2890: 0x4018e620, 0x2891: 0x4018e820, 0x2892: 0x4018ea20, 0x2893: 0x4018ec20,
+-	0x2894: 0x4018ee20, 0x2895: 0x4018f020, 0x2896: 0x4018f220, 0x2897: 0x4018f420,
+-	0x2898: 0x4018f620, 0x2899: 0x4018f820, 0x289a: 0x4018fa20, 0x289b: 0x4018fc20,
+-	0x289c: 0x4018fe20, 0x289d: 0x40190020, 0x289e: 0x40190220, 0x289f: 0x40190420,
+-	0x28a0: 0x40190620, 0x28a1: 0x40190820, 0x28a2: 0x40190a20, 0x28a3: 0x40190c20,
+-	0x28a4: 0x40190e20, 0x28a5: 0x40191020, 0x28a6: 0x40191220, 0x28a7: 0x40191420,
+-	0x28a8: 0x40191620, 0x28a9: 0x40191820, 0x28aa: 0x40191a20, 0x28ab: 0x40191c20,
+-	0x28ac: 0x40191e20, 0x28ad: 0x40192020, 0x28ae: 0x40192220, 0x28af: 0x40192420,
+-	0x28b0: 0x40192620, 0x28b1: 0x40192820, 0x28b2: 0x40192a20, 0x28b3: 0x40192c20,
+-	0x28b4: 0x40192e20, 0x28b5: 0x40193020, 0x28b6: 0x40193220, 0x28b7: 0x40193420,
+-	0x28b8: 0x40193620, 0x28b9: 0x40193820, 0x28ba: 0x40193a20, 0x28bb: 0x40193c20,
+-	0x28bc: 0x40193e20, 0x28bd: 0x40194020, 0x28be: 0x40194220, 0x28bf: 0x40194420,
+-	// Block 0xa3, offset 0x28c0
+-	0x28c0: 0x4012ce20, 0x28c1: 0x4012d020, 0x28c2: 0x4012d220, 0x28c3: 0x4012d420,
+-	0x28c4: 0x4012d620, 0x28c5: 0x4012d820, 0x28c6: 0x4012da20, 0x28c7: 0x4012dc20,
+-	0x28c8: 0x4012de20, 0x28c9: 0x4012e020, 0x28ca: 0x4012e220, 0x28cb: 0x4012e420,
+-	0x28cc: 0x4012e620, 0x28cd: 0x4012e820, 0x28ce: 0x4012ea20, 0x28cf: 0x4012ec20,
+-	0x28d0: 0x4012ee20, 0x28d1: 0x4012f020, 0x28d2: 0x4012f220, 0x28d3: 0x4012f420,
+-	0x28d4: 0x4012f620, 0x28d5: 0x4012f820, 0x28d6: 0x4012fa20, 0x28d7: 0x4012fc20,
+-	0x28d8: 0x4012fe20, 0x28d9: 0x40130020, 0x28da: 0x40130220, 0x28db: 0x40130420,
+-	0x28dc: 0x40130620, 0x28dd: 0x40130820, 0x28de: 0x40130a20, 0x28df: 0x40130c20,
+-	0x28e0: 0x40130e20, 0x28e1: 0x40131020, 0x28e2: 0x40131220, 0x28e3: 0x40131420,
+-	0x28e4: 0x40131620, 0x28e5: 0x40131820, 0x28e6: 0x40131a20, 0x28e7: 0x40131c20,
+-	0x28e8: 0x40131e20, 0x28e9: 0x40132020, 0x28ea: 0x40132220, 0x28eb: 0x40132420,
+-	0x28ec: 0x40132620, 0x28ed: 0x40132820, 0x28ee: 0x40132a20, 0x28ef: 0x40132c20,
+-	0x28f0: 0x40132e20, 0x28f1: 0x40133020, 0x28f2: 0x40133220, 0x28f3: 0x40133420,
+-	0x28f4: 0x40133620, 0x28f5: 0x40133820, 0x28f6: 0x40133a20, 0x28f7: 0x40133c20,
+-	0x28f8: 0x40133e20, 0x28f9: 0x40134020, 0x28fa: 0x40134220, 0x28fb: 0x40134420,
+-	0x28fc: 0x40134620, 0x28fd: 0x40134820, 0x28fe: 0x40134a20, 0x28ff: 0x40134c20,
+-	// Block 0xa4, offset 0x2900
+-	0x2900: 0x40134e20, 0x2901: 0x40135020, 0x2902: 0x40135220, 0x2903: 0x40135420,
+-	0x2904: 0x40135620, 0x2905: 0x40135820, 0x2906: 0x40135a20, 0x2907: 0x40135c20,
+-	0x2908: 0x40135e20, 0x2909: 0x40136020, 0x290a: 0x40136220, 0x290b: 0x40136420,
+-	0x290c: 0x40136620, 0x290d: 0x40136820, 0x290e: 0x40136a20, 0x290f: 0x40136c20,
+-	0x2910: 0x40136e20, 0x2911: 0x40137020, 0x2912: 0x40137220, 0x2913: 0x40137420,
+-	0x2914: 0x40137620, 0x2915: 0x40137820, 0x2916: 0x40137a20, 0x2917: 0x40137c20,
+-	0x2918: 0x40137e20, 0x2919: 0x40138020, 0x291a: 0x40138220, 0x291b: 0x40138420,
+-	0x291c: 0x40138620, 0x291d: 0x40138820, 0x291e: 0x40138a20, 0x291f: 0x40138c20,
+-	0x2920: 0x40138e20, 0x2921: 0x40139020, 0x2922: 0x40139220, 0x2923: 0x40139420,
+-	0x2924: 0x40139620, 0x2925: 0x40139820, 0x2926: 0x40139a20, 0x2927: 0x40139c20,
+-	0x2928: 0x40139e20, 0x2929: 0x4013a020, 0x292a: 0x4013a220, 0x292b: 0x4013a420,
+-	0x292c: 0x4013a620, 0x292d: 0x4013a820, 0x292e: 0x4013aa20, 0x292f: 0x4013ac20,
+-	0x2930: 0x4013ae20, 0x2931: 0x4013b020, 0x2932: 0x4013b220, 0x2933: 0x4013b420,
+-	0x2934: 0x4013b620, 0x2935: 0x4013b820, 0x2936: 0x4013ba20, 0x2937: 0x4013bc20,
+-	0x2938: 0x4013be20, 0x2939: 0x4013c020, 0x293a: 0x4013c220, 0x293b: 0x4013c420,
+-	0x293c: 0x4013c620, 0x293d: 0x4013c820, 0x293e: 0x4013ca20, 0x293f: 0x4013cc20,
+-	// Block 0xa5, offset 0x2940
+-	0x2940: 0x4013ce20, 0x2941: 0x4013d020, 0x2942: 0x4013d220, 0x2943: 0x40041420,
+-	0x2944: 0x40041620, 0x2945: 0x40041820, 0x2946: 0x40041a20, 0x2947: 0x40041c20,
+-	0x2948: 0x40041e20, 0x2949: 0x40042020, 0x294a: 0x40042220, 0x294b: 0x40042420,
+-	0x294c: 0x40042620, 0x294d: 0x40042820, 0x294e: 0x40042a20, 0x294f: 0x40042c20,
+-	0x2950: 0x40042e20, 0x2951: 0x40043020, 0x2952: 0x40043220, 0x2953: 0x40043420,
+-	0x2954: 0x40043620, 0x2955: 0x40043820, 0x2956: 0x40043a20, 0x2957: 0x40043c20,
+-	0x2958: 0x40043e20, 0x2959: 0x4013d420, 0x295a: 0x4013d620, 0x295b: 0x4013d820,
+-	0x295c: 0x4013da20, 0x295d: 0x4013dc20, 0x295e: 0x4013de20, 0x295f: 0x4013e020,
+-	0x2960: 0x4013e220, 0x2961: 0x4013e420, 0x2962: 0x4013e620, 0x2963: 0x4013e820,
+-	0x2964: 0x4013ea20, 0x2965: 0x4013ec20, 0x2966: 0x4013ee20, 0x2967: 0x4013f020,
+-	0x2968: 0x4013f220, 0x2969: 0x4013f420, 0x296a: 0x4013f620, 0x296b: 0x4013f820,
+-	0x296c: 0x4013fa20, 0x296d: 0x4013fc20, 0x296e: 0x4013fe20, 0x296f: 0x40140020,
+-	0x2970: 0x40140220, 0x2971: 0x40140420, 0x2972: 0x40140620, 0x2973: 0x40140820,
+-	0x2974: 0x40140a20, 0x2975: 0x40140c20, 0x2976: 0x40140e20, 0x2977: 0x40141020,
+-	0x2978: 0x40141220, 0x2979: 0x40141420, 0x297a: 0x40141620, 0x297b: 0x40141820,
+-	0x297c: 0x40141a20, 0x297d: 0x40141c20, 0x297e: 0x40141e20, 0x297f: 0x40142020,
+-	// Block 0xa6, offset 0x2980
+-	0x2980: 0x40142220, 0x2981: 0x40142420, 0x2982: 0x40142620, 0x2983: 0x40142820,
+-	0x2984: 0x40142a20, 0x2985: 0x40142c20, 0x2986: 0x40142e20, 0x2987: 0x40143020,
+-	0x2988: 0x40143220, 0x2989: 0x40143420, 0x298a: 0x40143620, 0x298b: 0x40143820,
+-	0x298c: 0x40143a20, 0x298d: 0x40143c20, 0x298e: 0x40143e20, 0x298f: 0x40144020,
+-	0x2990: 0x40144220, 0x2991: 0x40144420, 0x2992: 0x40144620, 0x2993: 0x40144820,
+-	0x2994: 0x40144a20, 0x2995: 0x40144c20, 0x2996: 0x40144e20, 0x2997: 0x40145020,
+-	0x2998: 0x4004c620, 0x2999: 0x4004c820, 0x299a: 0x4004ca20, 0x299b: 0x4004cc20,
+-	0x299c: 0x40145220, 0x299d: 0x40145420, 0x299e: 0x40145620, 0x299f: 0x40145820,
+-	0x29a0: 0x40145a20, 0x29a1: 0x40145c20, 0x29a2: 0x40145e20, 0x29a3: 0x40146020,
+-	0x29a4: 0x40146220, 0x29a5: 0x40146420, 0x29a6: 0x40146620, 0x29a7: 0x40146820,
+-	0x29a8: 0x40146a20, 0x29a9: 0x40146c20, 0x29aa: 0x40146e20, 0x29ab: 0x40147020,
+-	0x29ac: 0x40147220, 0x29ad: 0x40147420, 0x29ae: 0x40147620, 0x29af: 0x40147820,
+-	0x29b0: 0x40147a20, 0x29b1: 0x40147c20, 0x29b2: 0x40147e20, 0x29b3: 0x40148020,
+-	0x29b4: 0x40148220, 0x29b5: 0x40148420, 0x29b6: 0x40148620, 0x29b7: 0x40148820,
+-	0x29b8: 0x40148a20, 0x29b9: 0x40148c20, 0x29ba: 0x40148e20, 0x29bb: 0x40149020,
+-	0x29bc: 0x40041020, 0x29bd: 0x40041220, 0x29be: 0x40149220, 0x29bf: 0x40149420,
+-	// Block 0xa7, offset 0x29c0
+-	0x29c0: 0x40149620, 0x29c1: 0x40149820, 0x29c2: 0x40149a20, 0x29c3: 0x40149c20,
+-	0x29c4: 0x40149e20, 0x29c5: 0x4014a020, 0x29c6: 0x4014a220, 0x29c7: 0x4014a420,
+-	0x29c8: 0x4014a620, 0x29c9: 0x4014a820, 0x29ca: 0x4014aa20, 0x29cb: 0x4014ac20,
+-	0x29cc: 0xe00000f0, 0x29cd: 0x4014ae20, 0x29ce: 0x4014b020, 0x29cf: 0x4014b220,
+-	0x29d0: 0x4014b420, 0x29d1: 0x4014b620, 0x29d2: 0x4014b820, 0x29d3: 0x4014ba20,
+-	0x29d4: 0x4014bc20, 0x29d5: 0x4014be20, 0x29d6: 0x4014c020, 0x29d7: 0x4014c220,
+-	0x29d8: 0x4014c420, 0x29d9: 0x4014c620, 0x29da: 0x4014c820, 0x29db: 0x4014ca20,
+-	0x29dc: 0x4014cc20, 0x29dd: 0x4014ce20, 0x29de: 0x4014d020, 0x29df: 0x4014d220,
+-	0x29e0: 0x4014d420, 0x29e1: 0x4014d620, 0x29e2: 0x4014d820, 0x29e3: 0x4014da20,
+-	0x29e4: 0x4014dc20, 0x29e5: 0x4014de20, 0x29e6: 0x4014e020, 0x29e7: 0x4014e220,
+-	0x29e8: 0x4014e420, 0x29e9: 0x4014e620, 0x29ea: 0x4014e820, 0x29eb: 0x4014ea20,
+-	0x29ec: 0x4014ec20, 0x29ed: 0x4014ee20, 0x29ee: 0x4014f020, 0x29ef: 0x4014f220,
+-	0x29f0: 0x4014f420, 0x29f1: 0x4014f620, 0x29f2: 0x4014f820, 0x29f3: 0x4014fa20,
+-	0x29f4: 0x4014fc20, 0x29f5: 0x4014fe20, 0x29f6: 0x40150020, 0x29f7: 0x40150220,
+-	0x29f8: 0x40150420, 0x29f9: 0x40150620, 0x29fa: 0x40150820, 0x29fb: 0x40150a20,
+-	0x29fc: 0x40150c20, 0x29fd: 0x40150e20, 0x29fe: 0x40151020, 0x29ff: 0x40151220,
+-	// Block 0xa8, offset 0x2a00
+-	0x2a00: 0x40151420, 0x2a01: 0x40151620, 0x2a02: 0x40151820, 0x2a03: 0x40151a20,
+-	0x2a04: 0x40151c20, 0x2a05: 0x40151e20, 0x2a06: 0x40152020, 0x2a07: 0x40152220,
+-	0x2a08: 0x40152420, 0x2a09: 0x40152620, 0x2a0a: 0x40152820, 0x2a0b: 0x40152a20,
+-	0x2a0c: 0x40152c20, 0x2a0d: 0x40152e20, 0x2a0e: 0x40153020, 0x2a0f: 0x40153220,
+-	0x2a10: 0x40153420, 0x2a11: 0x40153620, 0x2a12: 0x40153820, 0x2a13: 0x40153a20,
+-	0x2a14: 0x40153c20, 0x2a15: 0x40153e20, 0x2a16: 0x40154020, 0x2a17: 0x40154220,
+-	0x2a18: 0x40154420, 0x2a19: 0x40154620, 0x2a1a: 0x40154820, 0x2a1b: 0x40154a20,
+-	0x2a1c: 0x40154c20, 0x2a1d: 0x40154e20, 0x2a1e: 0x40155020, 0x2a1f: 0x40155220,
+-	0x2a20: 0x40155420, 0x2a21: 0x40155620, 0x2a22: 0x40155820, 0x2a23: 0x40155a20,
+-	0x2a24: 0x40155c20, 0x2a25: 0x40155e20, 0x2a26: 0x40156020, 0x2a27: 0x40156220,
+-	0x2a28: 0x40156420, 0x2a29: 0x40156620, 0x2a2a: 0x40156820, 0x2a2b: 0x40156a20,
+-	0x2a2c: 0x40156c20, 0x2a2d: 0x40156e20, 0x2a2e: 0x40157020, 0x2a2f: 0x40157220,
+-	0x2a30: 0x40157420, 0x2a31: 0x40157620, 0x2a32: 0x40157820, 0x2a33: 0x40157a20,
+-	0x2a34: 0xf0000404, 0x2a35: 0xf0001f04, 0x2a36: 0xf0000404, 0x2a37: 0x40157c20,
+-	0x2a38: 0x40157e20, 0x2a39: 0x40158020, 0x2a3a: 0x40158220, 0x2a3b: 0x40158420,
+-	0x2a3c: 0x40158620, 0x2a3d: 0x40158820, 0x2a3e: 0x40158a20, 0x2a3f: 0x40158c20,
+-	// Block 0xa9, offset 0x2a40
+-	0x2a40: 0x40158e20, 0x2a41: 0x40159020, 0x2a42: 0x40159220, 0x2a43: 0x40159420,
+-	0x2a44: 0x40159620, 0x2a45: 0x40159820, 0x2a46: 0x40159a20, 0x2a47: 0x40159c20,
+-	0x2a48: 0x40159e20, 0x2a49: 0x4015a020, 0x2a4a: 0x4015a220, 0x2a4b: 0x4015a420,
+-	0x2a4c: 0x4015a620, 0x2a4d: 0x4015a820, 0x2a4e: 0x4015aa20, 0x2a4f: 0x4015ac20,
+-	0x2a50: 0x4015ae20, 0x2a51: 0x4015b020, 0x2a52: 0x4015b220, 0x2a53: 0x4015b420,
+-	0x2a54: 0x4015b620, 0x2a55: 0x4015b820, 0x2a56: 0x4015ba20, 0x2a57: 0x4015bc20,
+-	0x2a58: 0x4015be20, 0x2a59: 0x4015c020, 0x2a5a: 0x4015c220, 0x2a5b: 0x4015c420,
+-	0x2a5c: 0x4015c620, 0x2a5d: 0x4015c820, 0x2a5e: 0x4015ca20, 0x2a5f: 0x4015cc20,
+-	0x2a60: 0x4015ce20, 0x2a61: 0x4015d020, 0x2a62: 0x4015d220, 0x2a63: 0x4015d420,
+-	0x2a64: 0x4015d620, 0x2a65: 0x4015d820, 0x2a66: 0x4015da20, 0x2a67: 0x4015dc20,
+-	0x2a68: 0x4015de20, 0x2a69: 0x4015e020, 0x2a6a: 0x4015e220, 0x2a6b: 0x4015e420,
+-	0x2a6c: 0x4015e620, 0x2a6d: 0x4015e820, 0x2a6e: 0x4015ea20, 0x2a6f: 0x4015ec20,
+-	0x2a70: 0x4015ee20, 0x2a71: 0x4015f020, 0x2a72: 0x4015f220, 0x2a73: 0x4015f420,
+-	0x2a74: 0x4015f620, 0x2a75: 0x4015f820, 0x2a76: 0x4015fa20, 0x2a77: 0x4015fc20,
+-	0x2a78: 0x4015fe20, 0x2a79: 0x40160020, 0x2a7a: 0x40160220, 0x2a7b: 0x40160420,
+-	0x2a7c: 0x40160620, 0x2a7d: 0x40160820, 0x2a7e: 0x40160a20, 0x2a7f: 0x40160c20,
+-	// Block 0xaa, offset 0x2a80
+-	0x2a80: 0x40160e20, 0x2a81: 0x40161020, 0x2a82: 0x40161220, 0x2a83: 0x40161420,
+-	0x2a84: 0x40161620, 0x2a85: 0x40161820, 0x2a86: 0x40161a20, 0x2a87: 0x40161c20,
+-	0x2a88: 0x40161e20, 0x2a89: 0x40162020, 0x2a8a: 0x40162220, 0x2a8b: 0x40162420,
+-	0x2a8c: 0x40162620, 0x2a8d: 0x40162820, 0x2a8e: 0x40162a20, 0x2a8f: 0x40162c20,
+-	0x2a90: 0x40162e20, 0x2a91: 0x40163020, 0x2a92: 0x40163220, 0x2a93: 0x40163420,
+-	0x2a94: 0x40163620, 0x2a95: 0x40163820, 0x2a96: 0x40163a20, 0x2a97: 0x40163c20,
+-	0x2a98: 0x40163e20, 0x2a99: 0x40164020, 0x2a9a: 0x40164220, 0x2a9b: 0x40164420,
+-	0x2a9c: 0xe000014f, 0x2a9d: 0x40164620, 0x2a9e: 0x40164820, 0x2a9f: 0x40164a20,
+-	0x2aa0: 0x40164c20, 0x2aa1: 0x40164e20, 0x2aa2: 0x40165020, 0x2aa3: 0x40165220,
+-	0x2aa4: 0x40165420, 0x2aa5: 0x40165620, 0x2aa6: 0x40165820, 0x2aa7: 0x40165a20,
+-	0x2aa8: 0x40165c20, 0x2aa9: 0x40165e20, 0x2aaa: 0x40166020, 0x2aab: 0x40166220,
+-	0x2aac: 0x40166420, 0x2aad: 0x40166620, 0x2aae: 0x40166820, 0x2aaf: 0x40166a20,
+-	0x2ab0: 0x40166c20, 0x2ab1: 0x40166e20, 0x2ab2: 0x40167020, 0x2ab3: 0x40167220,
+-	0x2ab4: 0x40167420, 0x2ab5: 0x40167620, 0x2ab6: 0x40167820, 0x2ab7: 0x40167a20,
+-	0x2ab8: 0x40167c20, 0x2ab9: 0x40167e20, 0x2aba: 0x40168020, 0x2abb: 0x40168220,
+-	0x2abc: 0x40168420, 0x2abd: 0x40168620, 0x2abe: 0x40168820, 0x2abf: 0x40168a20,
+-	// Block 0xab, offset 0x2ac0
+-	0x2ac0: 0x40168c20, 0x2ac1: 0x40168e20, 0x2ac2: 0x40169020, 0x2ac3: 0x40169220,
+-	0x2ac4: 0x40169420, 0x2ac5: 0x40169620, 0x2ac6: 0x40169820, 0x2ac7: 0x40169a20,
+-	0x2ac8: 0x40169c20, 0x2ac9: 0x40169e20, 0x2aca: 0x4016a020, 0x2acb: 0x4016a220,
+-	0x2acc: 0x4016a420, 0x2acd: 0x4016a620, 0x2ace: 0x4016a820, 0x2acf: 0x4016aa20,
+-	0x2ad0: 0x4016ac20, 0x2ad1: 0x4016ae20, 0x2ad2: 0x4016b020, 0x2ad3: 0x4016b220,
+-	0x2ad4: 0x4016b420, 0x2ad5: 0x4016b620, 0x2ad6: 0x4016b820, 0x2ad7: 0x4016ba20,
+-	0x2ad8: 0x4016bc20, 0x2ad9: 0x4016be20, 0x2ada: 0x4016c020, 0x2adb: 0x4016c220,
+-	0x2adc: 0x4016c420, 0x2add: 0x4016c620, 0x2ade: 0x4016c820, 0x2adf: 0x4016ca20,
+-	0x2ae0: 0x4016cc20, 0x2ae1: 0x4016ce20, 0x2ae2: 0x4016d020, 0x2ae3: 0x4016d220,
+-	0x2ae4: 0x4016d420, 0x2ae5: 0x4016d620, 0x2ae6: 0x4016d820, 0x2ae7: 0x4016da20,
+-	0x2ae8: 0x4016dc20, 0x2ae9: 0x4016de20, 0x2aea: 0x4016e020, 0x2aeb: 0x4016e220,
+-	0x2aec: 0x4016e420, 0x2aed: 0x4016e620, 0x2aee: 0x4016e820, 0x2aef: 0x4016ea20,
+-	0x2af0: 0x4016ec20, 0x2af1: 0x4016ee20, 0x2af2: 0x4016f020, 0x2af3: 0x4016f220,
+-	0x2af4: 0x4016f420, 0x2af5: 0x4016f620, 0x2af6: 0x4016f820, 0x2af7: 0x4016fa20,
+-	0x2af8: 0x4016fc20, 0x2af9: 0x4016fe20, 0x2afa: 0x40170020, 0x2afb: 0x40170220,
+-	0x2afc: 0x40170420, 0x2afd: 0x40170620, 0x2afe: 0x40170820, 0x2aff: 0x40170a20,
+-	// Block 0xac, offset 0x2b00
+-	0x2b00: 0x40170c20, 0x2b01: 0x40170e20, 0x2b02: 0x40171020, 0x2b03: 0x40171220,
+-	0x2b04: 0x40171420, 0x2b05: 0x40171620, 0x2b06: 0x40171820, 0x2b07: 0x40171a20,
+-	0x2b08: 0x40171c20, 0x2b09: 0x40171e20, 0x2b0a: 0x40172020, 0x2b0b: 0x40172220,
+-	0x2b0c: 0x40172420,
+-	0x2b10: 0x40172620, 0x2b11: 0x40172820, 0x2b12: 0x40172a20, 0x2b13: 0x40172c20,
+-	0x2b14: 0x40172e20, 0x2b15: 0x40173020, 0x2b16: 0x40173220, 0x2b17: 0x40173420,
+-	0x2b18: 0x40173620, 0x2b19: 0x40173820,
+-	// Block 0xad, offset 0x2b40
+-	0x2b40: 0x00373888, 0x2b41: 0x00373a88, 0x2b42: 0x00373c88, 0x2b43: 0x00373e88,
+-	0x2b44: 0x00374088, 0x2b45: 0x00374288, 0x2b46: 0x00374488, 0x2b47: 0x00374688,
+-	0x2b48: 0x00374888, 0x2b49: 0x00374a88, 0x2b4a: 0x00374c88, 0x2b4b: 0x00374e88,
+-	0x2b4c: 0x00375088, 0x2b4d: 0x00375288, 0x2b4e: 0x00375488, 0x2b4f: 0x00375688,
+-	0x2b50: 0x00375888, 0x2b51: 0x00375a88, 0x2b52: 0x00375c88, 0x2b53: 0x00375e88,
+-	0x2b54: 0x00376088, 0x2b55: 0x00376288, 0x2b56: 0x00376488, 0x2b57: 0x00376688,
+-	0x2b58: 0x00376888, 0x2b59: 0x00376a88, 0x2b5a: 0x00376c88, 0x2b5b: 0x00376e88,
+-	0x2b5c: 0x00377088, 0x2b5d: 0x00377288, 0x2b5e: 0x00377488, 0x2b5f: 0x00377688,
+-	0x2b60: 0x00377888, 0x2b61: 0x00377a88, 0x2b62: 0x00377c88, 0x2b63: 0x00377e88,
+-	0x2b64: 0x00378088, 0x2b65: 0x00378288, 0x2b66: 0x00378488, 0x2b67: 0x00378688,
+-	0x2b68: 0x00378888, 0x2b69: 0x00378a88, 0x2b6a: 0x00378c88, 0x2b6b: 0x00378e88,
+-	0x2b6c: 0x00379088, 0x2b6d: 0x00379288, 0x2b6e: 0x00379488,
+-	0x2b70: 0x40373820, 0x2b71: 0x40373a20, 0x2b72: 0x40373c20, 0x2b73: 0x40373e20,
+-	0x2b74: 0x40374020, 0x2b75: 0x40374220, 0x2b76: 0x40374420, 0x2b77: 0x40374620,
+-	0x2b78: 0x40374820, 0x2b79: 0x40374a20, 0x2b7a: 0x40374c20, 0x2b7b: 0x40374e20,
+-	0x2b7c: 0x40375020, 0x2b7d: 0x40375220, 0x2b7e: 0x40375420, 0x2b7f: 0x40375620,
+-	// Block 0xae, offset 0x2b80
+-	0x2b80: 0x40375820, 0x2b81: 0x40375a20, 0x2b82: 0x40375c20, 0x2b83: 0x40375e20,
+-	0x2b84: 0x40376020, 0x2b85: 0x40376220, 0x2b86: 0x40376420, 0x2b87: 0x40376620,
+-	0x2b88: 0x40376820, 0x2b89: 0x40376a20, 0x2b8a: 0x40376c20, 0x2b8b: 0x40376e20,
+-	0x2b8c: 0x40377020, 0x2b8d: 0x40377220, 0x2b8e: 0x40377420, 0x2b8f: 0x40377620,
+-	0x2b90: 0x40377820, 0x2b91: 0x40377a20, 0x2b92: 0x40377c20, 0x2b93: 0x40377e20,
+-	0x2b94: 0x40378020, 0x2b95: 0x40378220, 0x2b96: 0x40378420, 0x2b97: 0x40378620,
+-	0x2b98: 0x40378820, 0x2b99: 0x40378a20, 0x2b9a: 0x40378c20, 0x2b9b: 0x40378e20,
+-	0x2b9c: 0x40379020, 0x2b9d: 0x40379220, 0x2b9e: 0x40379420,
+-	0x2ba0: 0x002e4088, 0x2ba1: 0x402e4020, 0x2ba2: 0x002e4288, 0x2ba3: 0x002f3688,
+-	0x2ba4: 0x002fbe88, 0x2ba5: 0x402be820, 0x2ba6: 0x40303e20, 0x2ba7: 0x002d8888,
+-	0x2ba8: 0x402d8820, 0x2ba9: 0x002e1288, 0x2baa: 0x402e1220, 0x2bab: 0x00316088,
+-	0x2bac: 0x40316020, 0x2bad: 0x002bf888, 0x2bae: 0x002e9088, 0x2baf: 0x002bf088,
+-	0x2bb0: 0x002c0288, 0x2bb1: 0x4030d420, 0x2bb2: 0x0030ec88, 0x2bb3: 0x4030ec20,
+-	0x2bb4: 0x4030d620, 0x2bb5: 0x002d8a88, 0x2bb6: 0x402d8a20, 0x2bb7: 0x402f5420,
+-	0x2bb8: 0x402cac20, 0x2bb9: 0x402fb420, 0x2bba: 0x402f0e20, 0x2bbb: 0x402cb620,
+-	0x2bbc: 0x002dcc95, 0x2bbd: 0x0030be9d, 0x2bbe: 0x002ffc88, 0x2bbf: 0x00315888,
+-	// Block 0xaf, offset 0x2bc0
+-	0x2bc0: 0x0032aa88, 0x2bc1: 0x4032aa20, 0x2bc2: 0x0032ac88, 0x2bc3: 0x4032ac20,
+-	0x2bc4: 0x0032ae88, 0x2bc5: 0x4032ae20, 0x2bc6: 0x0032b088, 0x2bc7: 0x4032b020,
+-	0x2bc8: 0x0032b288, 0x2bc9: 0x4032b220, 0x2bca: 0x0032b688, 0x2bcb: 0x4032b620,
+-	0x2bcc: 0x0032b888, 0x2bcd: 0x4032b820, 0x2bce: 0x0032ba88, 0x2bcf: 0x4032ba20,
+-	0x2bd0: 0x0032bc88, 0x2bd1: 0x4032bc20, 0x2bd2: 0x0032be88, 0x2bd3: 0x4032be20,
+-	0x2bd4: 0x0032c088, 0x2bd5: 0x4032c020, 0x2bd6: 0x0032c488, 0x2bd7: 0x4032c420,
+-	0x2bd8: 0x0032c688, 0x2bd9: 0x4032c620, 0x2bda: 0x0032c888, 0x2bdb: 0x4032c820,
+-	0x2bdc: 0x0032ce88, 0x2bdd: 0x4032ce20, 0x2bde: 0x0032d088, 0x2bdf: 0x4032d020,
+-	0x2be0: 0x0032d288, 0x2be1: 0x4032d220, 0x2be2: 0x0032d488, 0x2be3: 0x4032d420,
+-	0x2be4: 0x0032d688, 0x2be5: 0x4032d620, 0x2be6: 0x0032d888, 0x2be7: 0x4032d820,
+-	0x2be8: 0x0032da88, 0x2be9: 0x4032da20, 0x2bea: 0x0032dc88, 0x2beb: 0x4032dc20,
+-	0x2bec: 0x0032de88, 0x2bed: 0x4032de20, 0x2bee: 0x0032e088, 0x2bef: 0x4032e020,
+-	0x2bf0: 0x0032e288, 0x2bf1: 0x4032e220, 0x2bf2: 0x00331888, 0x2bf3: 0x40331820,
+-	0x2bf4: 0x00331a88, 0x2bf5: 0x40331a20, 0x2bf6: 0x0032b488, 0x2bf7: 0x4032b420,
+-	0x2bf8: 0x0032c288, 0x2bf9: 0x4032c220, 0x2bfa: 0x0032ca88, 0x2bfb: 0x4032ca20,
+-	0x2bfc: 0x0032cc88, 0x2bfd: 0x4032cc20, 0x2bfe: 0x0032e488, 0x2bff: 0x4032e420,
+-	// Block 0xb0, offset 0x2c00
+-	0x2c00: 0x0032e688, 0x2c01: 0x4032e620, 0x2c02: 0x0032ec88, 0x2c03: 0x4032ec20,
+-	0x2c04: 0x0032ee88, 0x2c05: 0x4032ee20, 0x2c06: 0x0032f088, 0x2c07: 0x4032f020,
+-	0x2c08: 0x0032f888, 0x2c09: 0x4032f820, 0x2c0a: 0x0032fc88, 0x2c0b: 0x4032fc20,
+-	0x2c0c: 0x0032fe88, 0x2c0d: 0x4032fe20, 0x2c0e: 0x00330088, 0x2c0f: 0x40330020,
+-	0x2c10: 0x00330288, 0x2c11: 0x40330220, 0x2c12: 0x00330488, 0x2c13: 0x40330420,
+-	0x2c14: 0x00330688, 0x2c15: 0x40330620, 0x2c16: 0x00330c88, 0x2c17: 0x40330c20,
+-	0x2c18: 0x00331088, 0x2c19: 0x40331020, 0x2c1a: 0x00331288, 0x2c1b: 0x40331220,
+-	0x2c1c: 0x00331488, 0x2c1d: 0x40331420, 0x2c1e: 0x00331c88, 0x2c1f: 0x40331c20,
+-	0x2c20: 0x00331e88, 0x2c21: 0x40331e20, 0x2c22: 0x00332088, 0x2c23: 0x40332020,
+-	0x2c24: 0xe00014b0, 0x2c25: 0x40173a20, 0x2c26: 0x40173c20, 0x2c27: 0x40173e20,
+-	0x2c28: 0x40174020, 0x2c29: 0x40174220, 0x2c2a: 0x40174420, 0x2c2b: 0x0032ea88,
+-	0x2c2c: 0x4032ea20, 0x2c2d: 0x00330a88, 0x2c2e: 0x40330a20, 0x2c2f: 0xae605f02,
+-	0x2c30: 0xae602a02, 0x2c31: 0xae602202, 0x2c32: 0x0032f688, 0x2c33: 0x4032f620,
+-	0x2c39: 0x4002f820, 0x2c3a: 0x4002d420, 0x2c3b: 0x4002d620,
+-	0x2c3c: 0x4003b620, 0x2c3d: 0x4028b420, 0x2c3e: 0x4002fa20, 0x2c3f: 0x4003b820,
+-	// Block 0xb1, offset 0x2c40
+-	0x2c40: 0x40379820, 0x2c41: 0x40379c20, 0x2c42: 0x4037a020, 0x2c43: 0x4037a420,
+-	0x2c44: 0x4037a820, 0x2c45: 0x4037ac20, 0x2c46: 0x4037b020, 0x2c47: 0x4037b820,
+-	0x2c48: 0x4037bc20, 0x2c49: 0x4037c020, 0x2c4a: 0x4037c420, 0x2c4b: 0x4037c820,
+-	0x2c4c: 0x4037cc20, 0x2c4d: 0x4037d420, 0x2c4e: 0x4037d820, 0x2c4f: 0x4037dc20,
+-	0x2c50: 0x4037e020, 0x2c51: 0x4037e420, 0x2c52: 0x4037e820, 0x2c53: 0x4037f020,
+-	0x2c54: 0x4037f420, 0x2c55: 0x4037f820, 0x2c56: 0x4037fc20, 0x2c57: 0x40380020,
+-	0x2c58: 0x40380420, 0x2c59: 0x40380820, 0x2c5a: 0x40380c20, 0x2c5b: 0x40381020,
+-	0x2c5c: 0x40381420, 0x2c5d: 0x40381820, 0x2c5e: 0x40381c20, 0x2c5f: 0x40382420,
+-	0x2c60: 0x40382820, 0x2c61: 0x4037b420, 0x2c62: 0x4037d020, 0x2c63: 0x4037ec20,
+-	0x2c64: 0x40382020, 0x2c65: 0x40382c20, 0x2c67: 0x40383220,
+-	0x2c6d: 0x40383c20,
+-	0x2c70: 0x403bbc20, 0x2c71: 0x403bbe20, 0x2c72: 0x403bc020, 0x2c73: 0x403bc220,
+-	0x2c74: 0x403bc420, 0x2c75: 0x403bc620, 0x2c76: 0x403bc820, 0x2c77: 0x403bca20,
+-	0x2c78: 0x403bcc20, 0x2c79: 0x403bce20, 0x2c7a: 0x403bd020, 0x2c7b: 0x403bd220,
+-	0x2c7c: 0x403bd620, 0x2c7d: 0x403bd820, 0x2c7e: 0x403bda20, 0x2c7f: 0x403bdc20,
+-	// Block 0xb2, offset 0x2c80
+-	0x2c80: 0x403bde20, 0x2c81: 0x403be020, 0x2c82: 0x403be220, 0x2c83: 0x403be420,
+-	0x2c84: 0x403be620, 0x2c85: 0x403be820, 0x2c86: 0x403bea20, 0x2c87: 0x403bec20,
+-	0x2c88: 0x403bee20, 0x2c89: 0x403bf020, 0x2c8a: 0x403bf220, 0x2c8b: 0x403bf420,
+-	0x2c8c: 0x403bf620, 0x2c8d: 0x403bf820, 0x2c8e: 0x403bfa20, 0x2c8f: 0x403bfc20,
+-	0x2c90: 0x403bfe20, 0x2c91: 0x403c0020, 0x2c92: 0x403c0220, 0x2c93: 0x403c0420,
+-	0x2c94: 0x403c0820, 0x2c95: 0x403c0a20, 0x2c96: 0x403c0c20, 0x2c97: 0x403c0e20,
+-	0x2c98: 0x403c1020, 0x2c99: 0x403c1220, 0x2c9a: 0x403c1420, 0x2c9b: 0x403c1620,
+-	0x2c9c: 0x403c1820, 0x2c9d: 0x403c1a20, 0x2c9e: 0x403c1c20, 0x2c9f: 0x403c1e20,
+-	0x2ca0: 0x403c2020, 0x2ca1: 0x403c2220, 0x2ca2: 0x403c2420, 0x2ca3: 0x403c2620,
+-	0x2ca4: 0x403c2820, 0x2ca5: 0x403c2a20, 0x2ca6: 0x403bd420, 0x2ca7: 0x403c0620,
+-	0x2caf: 0x403c2c20,
+-	0x2cb0: 0x4005e620,
+-	0x2cbf: 0xa0900000,
+-	// Block 0xb3, offset 0x2cc0
+-	0x2cc0: 0x403c4e20, 0x2cc1: 0x403c7820, 0x2cc2: 0x403c9a20, 0x2cc3: 0x403cac20,
+-	0x2cc4: 0x403cca20, 0x2cc5: 0x403d1620, 0x2cc6: 0x403d3820, 0x2cc7: 0x403d4a20,
+-	0x2cc8: 0x403d7620, 0x2cc9: 0x403d8820, 0x2cca: 0x403d9a20, 0x2ccb: 0x403dfc20,
+-	0x2ccc: 0x403e3a20, 0x2ccd: 0x403e5820, 0x2cce: 0x403e6a20, 0x2ccf: 0x403eae20,
+-	0x2cd0: 0x403ec020, 0x2cd1: 0x403ee020, 0x2cd2: 0x403f4020, 0x2cd3: 0x403e9620,
+-	0x2cd4: 0x403e9820, 0x2cd5: 0x403e9a20, 0x2cd6: 0x403e9c20,
+-	0x2ce0: 0x403f4820, 0x2ce1: 0x403f4a20, 0x2ce2: 0x403f4c20, 0x2ce3: 0x403f4e20,
+-	0x2ce4: 0x403f5020, 0x2ce5: 0x403f5220, 0x2ce6: 0x403f5420,
+-	0x2ce8: 0x403f5620, 0x2ce9: 0x403f5820, 0x2cea: 0x403f5a20, 0x2ceb: 0x403f5c20,
+-	0x2cec: 0x403f5e20, 0x2ced: 0x403f6020, 0x2cee: 0x403f6220,
+-	0x2cf0: 0x403f6420, 0x2cf1: 0x403f6620, 0x2cf2: 0x403f6820, 0x2cf3: 0x403f6a20,
+-	0x2cf4: 0x403f6c20, 0x2cf5: 0x403f6e20, 0x2cf6: 0x403f7020,
+-	0x2cf8: 0x403f7220, 0x2cf9: 0x403f7420, 0x2cfa: 0x403f7620, 0x2cfb: 0x403f7820,
+-	0x2cfc: 0x403f7a20, 0x2cfd: 0x403f7c20, 0x2cfe: 0x403f7e20,
+-	// Block 0xb4, offset 0x2d00
+-	0x2d00: 0x403f8020, 0x2d01: 0x403f8220, 0x2d02: 0x403f8420, 0x2d03: 0x403f8620,
+-	0x2d04: 0x403f8820, 0x2d05: 0x403f8a20, 0x2d06: 0x403f8c20,
+-	0x2d08: 0x403f8e20, 0x2d09: 0x403f9020, 0x2d0a: 0x403f9220, 0x2d0b: 0x403f9420,
+-	0x2d0c: 0x403f9620, 0x2d0d: 0x403f9820, 0x2d0e: 0x403f9a20,
+-	0x2d10: 0x403f9c20, 0x2d11: 0x403f9e20, 0x2d12: 0x403fa020, 0x2d13: 0x403fa220,
+-	0x2d14: 0x403fa420, 0x2d15: 0x403fa620, 0x2d16: 0x403fa820,
+-	0x2d18: 0x403faa20, 0x2d19: 0x403fac20, 0x2d1a: 0x403fae20, 0x2d1b: 0x403fb020,
+-	0x2d1c: 0x403fb220, 0x2d1d: 0x403fb420, 0x2d1e: 0x403fb620,
+-	0x2d20: 0x84e619a9, 0x2d21: 0x84e619ad, 0x2d22: 0x84e619b1, 0x2d23: 0x84e619c5,
+-	0x2d24: 0x84e619e5, 0x2d25: 0x84e619f2, 0x2d26: 0x84e61a28, 0x2d27: 0x84e61a42,
+-	0x2d28: 0x84e61a54, 0x2d29: 0x84e61a5d, 0x2d2a: 0x84e61a77, 0x2d2b: 0x84e61a87,
+-	0x2d2c: 0x84e61a94, 0x2d2d: 0x84e61a9d, 0x2d2e: 0x84e61aa6, 0x2d2f: 0x84e61ada,
+-	0x2d30: 0x84e61b01, 0x2d31: 0x84e61b0c, 0x2d32: 0x84e61b2e, 0x2d33: 0x84e61b33,
+-	0x2d34: 0x84e61b86, 0x2d35: 0xe00014d8, 0x2d36: 0x84e61991, 0x2d37: 0x84e619d9,
+-	0x2d38: 0x84e61a27, 0x2d39: 0x84e61ad1, 0x2d3a: 0x84e61b4f, 0x2d3b: 0x84e61b5c,
+-	0x2d3c: 0x84e61b61, 0x2d3d: 0x84e61b6b, 0x2d3e: 0x84e61b70, 0x2d3f: 0x84e61b7a,
+-	// Block 0xb5, offset 0x2d40
+-	0x2d40: 0x40052620, 0x2d41: 0x40052820, 0x2d42: 0x40047420, 0x2d43: 0x40047620,
+-	0x2d44: 0x40047820, 0x2d45: 0x40047a20, 0x2d46: 0x40052a20, 0x2d47: 0x40052c20,
+-	0x2d48: 0x40052e20, 0x2d49: 0x40047c20, 0x2d4a: 0x40047e20, 0x2d4b: 0x40053020,
+-	0x2d4c: 0x40048020, 0x2d4d: 0x40048220, 0x2d4e: 0x40053220, 0x2d4f: 0x40053420,
+-	0x2d50: 0x40053620, 0x2d51: 0x40053820, 0x2d52: 0x40053a20, 0x2d53: 0x40053c20,
+-	0x2d54: 0x40053e20, 0x2d55: 0x40054020, 0x2d56: 0x40054220, 0x2d57: 0x40023620,
+-	0x2d58: 0x4002e220, 0x2d59: 0x4003ba20, 0x2d5a: 0x40054420, 0x2d5b: 0x40054620,
+-	0x2d5c: 0x40048420, 0x2d5d: 0x40048620, 0x2d5e: 0x40054820, 0x2d5f: 0x40054a20,
+-	0x2d60: 0x40048820, 0x2d61: 0x40048a20, 0x2d62: 0x40048c20, 0x2d63: 0x40048e20,
+-	0x2d64: 0x40049020, 0x2d65: 0x40049220, 0x2d66: 0x40049420, 0x2d67: 0x40049620,
+-	0x2d68: 0x40049820, 0x2d69: 0x40049a20, 0x2d6a: 0x4003ae20, 0x2d6b: 0x4003b020,
+-	0x2d6c: 0x4003b220, 0x2d6d: 0x4003b420, 0x2d6e: 0x4002c820, 0x2d6f: 0x40367020,
+-	0x2d70: 0x4002fc20, 0x2d71: 0x40030820, 0x2d72: 0x40024420, 0x2d73: 0x40030a20,
+-	0x2d74: 0x40024220, 0x2d75: 0x40026820, 0x2d76: 0x4004fc20, 0x2d77: 0x4004fe20,
+-	0x2d78: 0x40050020, 0x2d79: 0x4004d020, 0x2d7a: 0x40023020, 0x2d7b: 0x40023220,
+-	// Block 0xb6, offset 0x2d80
+-	0x2d80: 0xe0002401, 0x2d81: 0xe0002416, 0x2d82: 0x029cb684, 0x2d83: 0x029cb484,
+-	0x2d84: 0xe0002404, 0x2d85: 0x029d7684, 0x2d86: 0xe0002407, 0x2d87: 0xe000240a,
+-	0x2d88: 0xe000240d, 0x2d89: 0x02a40484, 0x2d8a: 0xe0002410, 0x2d8b: 0xe0002413,
+-	0x2d8c: 0xe0002419, 0x2d8d: 0xe000241c, 0x2d8e: 0xe000241f, 0x2d8f: 0x02b84684,
+-	0x2d90: 0x02b84484, 0x2d91: 0xe0002422, 0x2d92: 0x02bbe684, 0x2d93: 0x02bcf484,
+-	0x2d94: 0x02bea284, 0x2d95: 0xe0002425, 0x2d96: 0x02bf8884, 0x2d97: 0xe0002428,
+-	0x2d98: 0x02c49884, 0x2d99: 0x02ca6a84, 0x2d9b: 0x02cbc284,
+-	0x2d9c: 0xe000242b, 0x2d9d: 0xe000242e, 0x2d9e: 0xe0002436, 0x2d9f: 0x02d79a84,
+-	0x2da0: 0x02d82284, 0x2da1: 0x02d86a84, 0x2da2: 0x02d87484, 0x2da3: 0x02e0d884,
+-	0x2da4: 0x02e45684, 0x2da5: 0xe0002439, 0x2da6: 0x029c5884, 0x2da7: 0xe000243c,
+-	0x2da8: 0x02e55a84, 0x2da9: 0xe000243f, 0x2daa: 0xe0002442, 0x2dab: 0xe0002445,
+-	0x2dac: 0xe0002448, 0x2dad: 0x02f27684, 0x2dae: 0xe000244b, 0x2daf: 0x02f9f284,
+-	0x2db0: 0x02fd3e84, 0x2db1: 0x02fea684, 0x2db2: 0x02fea484, 0x2db3: 0xe0002451,
+-	0x2db4: 0xe0002454, 0x2db5: 0xe000244e, 0x2db6: 0xe0002457, 0x2db7: 0xe000245a,
+-	0x2db8: 0x02ff1684, 0x2db9: 0x03000484, 0x2dba: 0x03010084, 0x2dbb: 0xe000245d,
+-	0x2dbc: 0xe0002460, 0x2dbd: 0xe0002463, 0x2dbe: 0x0304f284, 0x2dbf: 0xe0002466,
+-	// Block 0xb7, offset 0x2dc0
+-	0x2dc0: 0xe0002469, 0x2dc1: 0x030c9c84, 0x2dc2: 0x0310c884, 0x2dc3: 0x03130084,
+-	0x2dc4: 0x0312fe84, 0x2dc5: 0x03138284, 0x2dc6: 0x0313a484, 0x2dc7: 0xe000246c,
+-	0x2dc8: 0x03174084, 0x2dc9: 0x031a3a84, 0x2dca: 0xe000246f, 0x2dcb: 0x031ecc84,
+-	0x2dcc: 0x031f6c84, 0x2dcd: 0xe0002472, 0x2dce: 0xe0002475, 0x2dcf: 0xe0002478,
+-	0x2dd0: 0x03290a84, 0x2dd1: 0x032aee84, 0x2dd2: 0x032af084, 0x2dd3: 0x032afe84,
+-	0x2dd4: 0x032bd084, 0x2dd5: 0xe000247b, 0x2dd6: 0x032c3a84, 0x2dd7: 0xe000247e,
+-	0x2dd8: 0x032ea484, 0x2dd9: 0x032fcc84, 0x2dda: 0x0330ea84, 0x2ddb: 0x03319c84,
+-	0x2ddc: 0x0331bc84, 0x2ddd: 0x0331be84, 0x2dde: 0xe0002481, 0x2ddf: 0x0331c084,
+-	0x2de0: 0x0332c684, 0x2de1: 0xe0002484, 0x2de2: 0x0334d884, 0x2de3: 0xe0002487,
+-	0x2de4: 0xe000248a, 0x2de5: 0x0338f884, 0x2de6: 0x033c3e84, 0x2de7: 0xe000248d,
+-	0x2de8: 0x033d4c84, 0x2de9: 0x033d8884, 0x2dea: 0x033dfc84, 0x2deb: 0xe0002490,
+-	0x2dec: 0x033ea084, 0x2ded: 0xe0002493, 0x2dee: 0x033efe84, 0x2def: 0xe0002496,
+-	0x2df0: 0x033f3284, 0x2df1: 0xe0002499, 0x2df2: 0xe000249c, 0x2df3: 0x033f3e84,
+-	// Block 0xb8, offset 0x2e00
+-	0x2e00: 0x029c0084, 0x2e01: 0x029c5084, 0x2e02: 0x029c6c84, 0x2e03: 0x029c7e84,
+-	0x2e04: 0x029cb284, 0x2e05: 0x029d0a84, 0x2e06: 0x029d1884, 0x2e07: 0x029d4084,
+-	0x2e08: 0x029d7484, 0x2e09: 0x02a27e84, 0x2e0a: 0x02a2ca84, 0x2e0b: 0x02a2d684,
+-	0x2e0c: 0x02a30484, 0x2e0d: 0x02a32c84, 0x2e0e: 0x02a35684, 0x2e0f: 0x02a3c084,
+-	0x2e10: 0x02a3ea84, 0x2e11: 0x02a40084, 0x2e12: 0x02a53684, 0x2e13: 0x02a5f284,
+-	0x2e14: 0x02a62a84, 0x2e15: 0x02a63484, 0x2e16: 0x02a67084, 0x2e17: 0x02a68284,
+-	0x2e18: 0x02a6b884, 0x2e19: 0x02a6d284, 0x2e1a: 0x02a70484, 0x2e1b: 0x02a76c84,
+-	0x2e1c: 0x02a79084, 0x2e1d: 0x02a7c684, 0x2e1e: 0x02adae84, 0x2e1f: 0x02ae3e84,
+-	0x2e20: 0x02b1d684, 0x2e21: 0x02b20484, 0x2e22: 0x02b21484, 0x2e23: 0x02b22a84,
+-	0x2e24: 0x02b24e84, 0x2e25: 0x02b2e684, 0x2e26: 0x02b6a084, 0x2e27: 0x02b70084,
+-	0x2e28: 0x02b7f084, 0x2e29: 0x02b81e84, 0x2e2a: 0x02b84484, 0x2e2b: 0x02b87084,
+-	0x2e2c: 0x02b8dc84, 0x2e2d: 0x02b8e284, 0x2e2e: 0x02bbb684, 0x2e2f: 0x02bbca84,
+-	0x2e30: 0x02bbe284, 0x2e31: 0x02bbfc84, 0x2e32: 0x02bce484, 0x2e33: 0x02bcf484,
+-	0x2e34: 0x02bcfe84, 0x2e35: 0x02bde884, 0x2e36: 0x02bdfc84, 0x2e37: 0x02be1684,
+-	0x2e38: 0x02be2684, 0x2e39: 0x02bea084, 0x2e3a: 0x02bec284, 0x2e3b: 0x02bee684,
+-	0x2e3c: 0x02bf8684, 0x2e3d: 0x02c41084, 0x2e3e: 0x02c46c84, 0x2e3f: 0x02c49684,
+-	// Block 0xb9, offset 0x2e40
+-	0x2e40: 0x02ca5e84, 0x2e41: 0x02ca6884, 0x2e42: 0x02cb0e84, 0x2e43: 0x02cb2e84,
+-	0x2e44: 0x02cb4884, 0x2e45: 0x02cb7284, 0x2e46: 0x02cbc084, 0x2e47: 0x02cbca84,
+-	0x2e48: 0x02cde084, 0x2e49: 0x02ce1084, 0x2e4a: 0x02ce5084, 0x2e4b: 0x02d64084,
+-	0x2e4c: 0x02d6c484, 0x2e4d: 0x02d6f284, 0x2e4e: 0x02d76684, 0x2e4f: 0x02d79684,
+-	0x2e50: 0x02d7a884, 0x2e51: 0x02d7b684, 0x2e52: 0x02d81e84, 0x2e53: 0x02d82884,
+-	0x2e54: 0x02d86884, 0x2e55: 0x02e0d684, 0x2e56: 0x02e45484, 0x2e57: 0x02e46c84,
+-	0x2e58: 0x02e47684, 0x2e59: 0x02e47e84, 0x2e5a: 0x02e48e84, 0x2e5b: 0x02e4b284,
+-	0x2e5c: 0x02e4b684, 0x2e5d: 0x02e55884, 0x2e5e: 0x02e70884, 0x2e5f: 0x02e71284,
+-	0x2e60: 0x02e9b884, 0x2e61: 0x02e9cc84, 0x2e62: 0x02ea3084, 0x2e63: 0x02ea3e84,
+-	0x2e64: 0x02ea5084, 0x2e65: 0x02ea6084, 0x2e66: 0x02eb1684, 0x2e67: 0x02eb2484,
+-	0x2e68: 0x02ecec84, 0x2e69: 0x02ecfa84, 0x2e6a: 0x02ed5c84, 0x2e6b: 0x02ed7e84,
+-	0x2e6c: 0x02eddc84, 0x2e6d: 0x02efb684, 0x2e6e: 0x02efc484, 0x2e6f: 0x02efe684,
+-	0x2e70: 0x02f27484, 0x2e71: 0x02f37084, 0x2e72: 0x02f37c84, 0x2e73: 0x02f4e884,
+-	0x2e74: 0x02f59684, 0x2e75: 0x02f5f284, 0x2e76: 0x02f8e684, 0x2e77: 0x02f9f084,
+-	0x2e78: 0x02fe6c84, 0x2e79: 0x02fea284, 0x2e7a: 0x02ff1484, 0x2e7b: 0x02ff7a84,
+-	0x2e7c: 0x03000284, 0x2e7d: 0x03001884, 0x2e7e: 0x03002484, 0x2e7f: 0x03006684,
+-	// Block 0xba, offset 0x2e80
+-	0x2e80: 0x0300fe84, 0x2e81: 0x03011284, 0x2e82: 0x0303c684, 0x2e83: 0x0303d484,
+-	0x2e84: 0x0303e684, 0x2e85: 0x0303f884, 0x2e86: 0x03041884, 0x2e87: 0x03043684,
+-	0x2e88: 0x03043e84, 0x2e89: 0x0304dc84, 0x2e8a: 0x0304e484, 0x2e8b: 0x0304f084,
+-	0x2e8c: 0x030c9a84, 0x2e8d: 0x030cd684, 0x2e8e: 0x03108084, 0x2e8f: 0x03109884,
+-	0x2e90: 0x0310c684, 0x2e91: 0x0312fc84, 0x2e92: 0x03131684, 0x2e93: 0x0313a484,
+-	0x2e94: 0x03140084, 0x2e95: 0x03186e84, 0x2e96: 0x03188c84, 0x2e97: 0x0318aa84,
+-	0x2e98: 0x0318f084, 0x2e99: 0x03193a84, 0x2e9a: 0x031ac884, 0x2e9b: 0x031ae084,
+-	0x2e9c: 0x031b6684, 0x2e9d: 0x031d5684, 0x2e9e: 0x031d9484, 0x2e9f: 0x031f3684,
+-	0x2ea0: 0x031f6084, 0x2ea1: 0x031f6a84, 0x2ea2: 0x03212284, 0x2ea3: 0x03229284,
+-	0x2ea4: 0x03238c84, 0x2ea5: 0x03239884, 0x2ea6: 0x0323a284, 0x2ea7: 0x032aee84,
+-	0x2ea8: 0x032b0084, 0x2ea9: 0x032c3884, 0x2eaa: 0x032d6c84, 0x2eab: 0x032d7284,
+-	0x2eac: 0x032dd084, 0x2ead: 0x032ea284, 0x2eae: 0x032ebc84, 0x2eaf: 0x032ec484,
+-	0x2eb0: 0x032ed284, 0x2eb1: 0x032f9684, 0x2eb2: 0x032fda84, 0x2eb3: 0x032fe684,
+-	0x2eb4: 0x03300284, 0x2eb5: 0x03315084, 0x2eb6: 0x0331b684, 0x2eb7: 0x0331be84,
+-	0x2eb8: 0x03332c84, 0x2eb9: 0x03333284, 0x2eba: 0x03335884, 0x2ebb: 0x03355084,
+-	0x2ebc: 0x0335b084, 0x2ebd: 0x0335be84, 0x2ebe: 0x03364a84, 0x2ebf: 0x03365e84,
+-	// Block 0xbb, offset 0x2ec0
+-	0x2ec0: 0x03366484, 0x2ec1: 0x03367884, 0x2ec2: 0x0336b484, 0x2ec3: 0x0339ca84,
+-	0x2ec4: 0x033cea84, 0x2ec5: 0x033cfe84, 0x2ec6: 0x033d4a84, 0x2ec7: 0x033d7684,
+-	0x2ec8: 0x033d8684, 0x2ec9: 0x033d9a84, 0x2eca: 0x033da284, 0x2ecb: 0x033df284,
+-	0x2ecc: 0x033dfa84, 0x2ecd: 0x033e1c84, 0x2ece: 0x033e2684, 0x2ecf: 0x033e4084,
+-	0x2ed0: 0x033e7684, 0x2ed1: 0x033e9484, 0x2ed2: 0x033ea484, 0x2ed3: 0x033f1a84,
+-	0x2ed4: 0x033f3884, 0x2ed5: 0x033f4084,
+-	0x2ef0: 0x40273a20, 0x2ef1: 0x40273c20, 0x2ef2: 0x40273e20, 0x2ef3: 0x40274020,
+-	0x2ef4: 0x40274220, 0x2ef5: 0x40274420, 0x2ef6: 0x40274620, 0x2ef7: 0x40274820,
+-	0x2ef8: 0x40274a20, 0x2ef9: 0x40274c20, 0x2efa: 0x40274e20, 0x2efb: 0x40275020,
+-	// Block 0xbc, offset 0x2f00
+-	0x2f00: 0x00021283, 0x2f01: 0x40025c20, 0x2f02: 0x40030420, 0x2f03: 0x40051220,
+-	0x2f04: 0x40279a20, 0x2f05: 0x4027ca20, 0x2f06: 0xe0002206, 0x2f07: 0xe00001d3,
+-	0x2f08: 0x40049c20, 0x2f09: 0x40049e20, 0x2f0a: 0x4004a020, 0x2f0b: 0x4004a220,
+-	0x2f0c: 0x4004a420, 0x2f0d: 0x4004a620, 0x2f0e: 0x4004a820, 0x2f0f: 0x4004aa20,
+-	0x2f10: 0x4004ac20, 0x2f11: 0x4004ae20, 0x2f12: 0x40279c20, 0x2f13: 0x40279e20,
+-	0x2f14: 0x4004b020, 0x2f15: 0x4004b220, 0x2f16: 0x4004b420, 0x2f17: 0x4004b620,
+-	0x2f18: 0x4004b820, 0x2f19: 0x4004ba20, 0x2f1a: 0x4004bc20, 0x2f1b: 0x4004be20,
+-	0x2f1c: 0x40023820, 0x2f1d: 0x4003ea20, 0x2f1e: 0x4003ec20, 0x2f1f: 0x4003ee20,
+-	0x2f20: 0x4027a020, 0x2f21: 0xe0000267, 0x2f22: 0xe000037f, 0x2f23: 0xe0000459,
+-	0x2f24: 0xe000052e, 0x2f25: 0xe00005f8, 0x2f26: 0xe00006c3, 0x2f27: 0xe000076b,
+-	0x2f28: 0xe0000817, 0x2f29: 0xe00008bc, 0x2f2a: 0xada12202, 0x2f2b: 0xae412302,
+-	0x2f2c: 0xae812402, 0x2f2d: 0xade12502, 0x2f2e: 0xae012602, 0x2f2f: 0xae012702,
+-	0x2f30: 0x40023a20, 0x2f31: 0x4027ce20, 0x2f32: 0xe0000152, 0x2f33: 0x4027d020,
+-	0x2f34: 0xe0000155, 0x2f35: 0x4027d220, 0x2f36: 0x00279c84, 0x2f37: 0x4027a220,
+-	0x2f38: 0x02a68284, 0x2f39: 0x02a68884, 0x2f3a: 0x02a68a84, 0x2f3b: 0x4027cc20,
+-	0x2f3c: 0xe000231a, 0x2f3d: 0x40051420, 0x2f3e: 0x4027a420, 0x2f3f: 0x4027a620,
+-	// Block 0xbd, offset 0x2f40
+-	0x2f41: 0x0065768d, 0x2f42: 0x0065768e, 0x2f43: 0x0065788d,
+-	0x2f44: 0x0065788e, 0x2f45: 0x00657a8d, 0x2f46: 0x00657a8e, 0x2f47: 0x00657e8d,
+-	0x2f48: 0x00657e8e, 0x2f49: 0x0065808d, 0x2f4a: 0x0065808e, 0x2f4b: 0x0065828e,
+-	0x2f4c: 0xe000216a, 0x2f4d: 0x0065848e, 0x2f4e: 0xe0002188, 0x2f4f: 0x0065868e,
+-	0x2f50: 0xe00021b8, 0x2f51: 0x0065888e, 0x2f52: 0xe00021d6, 0x2f53: 0x00658a8e,
+-	0x2f54: 0xe00021e0, 0x2f55: 0x00658c8e, 0x2f56: 0xe00021ef, 0x2f57: 0x00658e8e,
+-	0x2f58: 0xe0002200, 0x2f59: 0x0065908e, 0x2f5a: 0xe000220f, 0x2f5b: 0x0065928e,
+-	0x2f5c: 0xe0002215, 0x2f5d: 0x0065948e, 0x2f5e: 0xe0002223, 0x2f5f: 0x0065968e,
+-	0x2f60: 0xe0002229, 0x2f61: 0x0065988e, 0x2f62: 0xe0002234, 0x2f63: 0x00659a8d,
+-	0x2f64: 0x00659a8e, 0x2f65: 0xe000223a, 0x2f66: 0x00659c8e, 0x2f67: 0xe0002240,
+-	0x2f68: 0x00659e8e, 0x2f69: 0xe000224a, 0x2f6a: 0x0065a08e, 0x2f6b: 0x0065a28e,
+-	0x2f6c: 0x0065a48e, 0x2f6d: 0x0065a68e, 0x2f6e: 0x0065a88e, 0x2f6f: 0x0065aa8e,
+-	0x2f70: 0xe0002258, 0x2f71: 0xe000225e, 0x2f72: 0x0065ac8e, 0x2f73: 0xe000227a,
+-	0x2f74: 0xe0002280, 0x2f75: 0x0065ae8e, 0x2f76: 0xe000229a, 0x2f77: 0xe00022a0,
+-	0x2f78: 0x0065b08e, 0x2f79: 0xe00022bd, 0x2f7a: 0xe00022c3, 0x2f7b: 0x0065b28e,
+-	0x2f7c: 0xe00022ec, 0x2f7d: 0xe00022f2, 0x2f7e: 0x0065b48e, 0x2f7f: 0x0065b68e,
+-	// Block 0xbe, offset 0x2f80
+-	0x2f80: 0x0065b88e, 0x2f81: 0x0065ba8e, 0x2f82: 0x0065bc8e, 0x2f83: 0x0065be8d,
+-	0x2f84: 0x0065be8e, 0x2f85: 0x0065c08d, 0x2f86: 0x0065c08e, 0x2f87: 0x0065c48d,
+-	0x2f88: 0x0065c48e, 0x2f89: 0x0065c68e, 0x2f8a: 0x0065c88e, 0x2f8b: 0x0065ca8e,
+-	0x2f8c: 0x0065cc8e, 0x2f8d: 0x0065ce8e, 0x2f8e: 0x0065d08d, 0x2f8f: 0x0065d08e,
+-	0x2f90: 0x0065d28e, 0x2f91: 0x0065d48e, 0x2f92: 0x0065d68e, 0x2f93: 0x0065d88e,
+-	0x2f94: 0xe000214c, 0x2f95: 0x0065828d, 0x2f96: 0x0065888d,
+-	0x2f99: 0xa0812802, 0x2f9a: 0xa0812902, 0x2f9b: 0x40063c20,
+-	0x2f9c: 0x40063e20, 0x2f9d: 0x4027d420, 0x2f9e: 0xe0000158, 0x2f9f: 0xf0001616,
+-	0x2fa0: 0x40023c20, 0x2fa1: 0x0065768f, 0x2fa2: 0x00657691, 0x2fa3: 0x0065788f,
+-	0x2fa4: 0x00657891, 0x2fa5: 0x00657a8f, 0x2fa6: 0x00657a91, 0x2fa7: 0x00657e8f,
+-	0x2fa8: 0x00657e91, 0x2fa9: 0x0065808f, 0x2faa: 0x00658091, 0x2fab: 0x00658291,
+-	0x2fac: 0xe000216d, 0x2fad: 0x00658491, 0x2fae: 0xe000218b, 0x2faf: 0x00658691,
+-	0x2fb0: 0xe00021bb, 0x2fb1: 0x00658891, 0x2fb2: 0xe00021d9, 0x2fb3: 0x00658a91,
+-	0x2fb4: 0xe00021e3, 0x2fb5: 0x00658c91, 0x2fb6: 0xe00021f2, 0x2fb7: 0x00658e91,
+-	0x2fb8: 0xe0002203, 0x2fb9: 0x00659091, 0x2fba: 0xe0002212, 0x2fbb: 0x00659291,
+-	0x2fbc: 0xe0002218, 0x2fbd: 0x00659491, 0x2fbe: 0xe0002226, 0x2fbf: 0x00659691,
+-	// Block 0xbf, offset 0x2fc0
+-	0x2fc0: 0xe000222c, 0x2fc1: 0x00659891, 0x2fc2: 0xe0002237, 0x2fc3: 0x00659a8f,
+-	0x2fc4: 0x00659a91, 0x2fc5: 0xe000223d, 0x2fc6: 0x00659c91, 0x2fc7: 0xe0002243,
+-	0x2fc8: 0x00659e91, 0x2fc9: 0xe000224d, 0x2fca: 0x0065a091, 0x2fcb: 0x0065a291,
+-	0x2fcc: 0x0065a491, 0x2fcd: 0x0065a691, 0x2fce: 0x0065a891, 0x2fcf: 0x0065aa91,
+-	0x2fd0: 0xe000225b, 0x2fd1: 0xe0002261, 0x2fd2: 0x0065ac91, 0x2fd3: 0xe000227d,
+-	0x2fd4: 0xe0002283, 0x2fd5: 0x0065ae91, 0x2fd6: 0xe000229d, 0x2fd7: 0xe00022a3,
+-	0x2fd8: 0x0065b091, 0x2fd9: 0xe00022c0, 0x2fda: 0xe00022c6, 0x2fdb: 0x0065b291,
+-	0x2fdc: 0xe00022ef, 0x2fdd: 0xe00022f5, 0x2fde: 0x0065b491, 0x2fdf: 0x0065b691,
+-	0x2fe0: 0x0065b891, 0x2fe1: 0x0065ba91, 0x2fe2: 0x0065bc91, 0x2fe3: 0x0065be8f,
+-	0x2fe4: 0x0065be91, 0x2fe5: 0x0065c08f, 0x2fe6: 0x0065c091, 0x2fe7: 0x0065c48f,
+-	0x2fe8: 0x0065c491, 0x2fe9: 0x0065c691, 0x2fea: 0x0065c891, 0x2feb: 0x0065ca91,
+-	0x2fec: 0x0065cc91, 0x2fed: 0x0065ce91, 0x2fee: 0x0065d08f, 0x2fef: 0x0065d091,
+-	0x2ff0: 0x0065d291, 0x2ff1: 0x0065d491, 0x2ff2: 0x0065d691, 0x2ff3: 0x0065d891,
+-	0x2ff4: 0xe000214f, 0x2ff5: 0x0065828f, 0x2ff6: 0x0065888f, 0x2ff7: 0xe000236a,
+-	0x2ff8: 0xe0002371, 0x2ff9: 0xe0002374, 0x2ffa: 0xe0002377, 0x2ffb: 0x40023e20,
+-	0x2ffc: 0x4027d620, 0x2ffd: 0x4027d820, 0x2ffe: 0xe000015b, 0x2fff: 0xf0001616,
+-	// Block 0xc0, offset 0x3000
+-	0x3005: 0x4065da20, 0x3006: 0x4065dc20, 0x3007: 0x4065de20,
+-	0x3008: 0x4065e020, 0x3009: 0x4065e420, 0x300a: 0x4065e620, 0x300b: 0x4065e820,
+-	0x300c: 0x4065ea20, 0x300d: 0x4065ec20, 0x300e: 0x4065ee20, 0x300f: 0x4065f420,
+-	0x3010: 0x4065f620, 0x3011: 0x4065f820, 0x3012: 0x4065fa20, 0x3013: 0x4065fe20,
+-	0x3014: 0x40660020, 0x3015: 0x40660220, 0x3016: 0x40660420, 0x3017: 0x40660620,
+-	0x3018: 0x40660820, 0x3019: 0x40660a20, 0x301a: 0x40661220, 0x301b: 0x40661420,
+-	0x301c: 0x40661820, 0x301d: 0x40661a20, 0x301e: 0x40661e20, 0x301f: 0x40662020,
+-	0x3020: 0x40662220, 0x3021: 0x40662420, 0x3022: 0x40662620, 0x3023: 0x40662820,
+-	0x3024: 0x40662a20, 0x3025: 0x40662e20, 0x3026: 0x40663620, 0x3027: 0x40663820,
+-	0x3028: 0x40663a20, 0x3029: 0x40663c20, 0x302a: 0x4065e220, 0x302b: 0x4065f020,
+-	0x302c: 0x4065fc20, 0x302d: 0x40663e20,
+-	0x3031: 0x0062ac84, 0x3032: 0x0062ae84, 0x3033: 0x00646884,
+-	0x3034: 0x0062b084, 0x3035: 0x00646c84, 0x3036: 0x00646e84, 0x3037: 0x0062b284,
+-	0x3038: 0x0062b484, 0x3039: 0x0062b684, 0x303a: 0x00647484, 0x303b: 0x00647684,
+-	0x303c: 0x00647884, 0x303d: 0x00647a84, 0x303e: 0x00647c84, 0x303f: 0x00647e84,
+-	// Block 0xc1, offset 0x3040
+-	0x3040: 0x0062e084, 0x3041: 0x0062b884, 0x3042: 0x0062ba84, 0x3043: 0x0062bc84,
+-	0x3044: 0x0062ee84, 0x3045: 0x0062be84, 0x3046: 0x0062c084, 0x3047: 0x0062c284,
+-	0x3048: 0x0062c484, 0x3049: 0x0062c684, 0x304a: 0x0062c884, 0x304b: 0x0062ca84,
+-	0x304c: 0x0062cc84, 0x304d: 0x0062ce84, 0x304e: 0x0062d084, 0x304f: 0x0063a884,
+-	0x3050: 0x0063aa84, 0x3051: 0x0063ac84, 0x3052: 0x0063ae84, 0x3053: 0x0063b084,
+-	0x3054: 0x0063b284, 0x3055: 0x0063b484, 0x3056: 0x0063b684, 0x3057: 0x0063b884,
+-	0x3058: 0x0063ba84, 0x3059: 0x0063bc84, 0x305a: 0x0063be84, 0x305b: 0x0063c084,
+-	0x305c: 0x0063c284, 0x305d: 0x0063c484, 0x305e: 0x0063c684, 0x305f: 0x0063c884,
+-	0x3060: 0x0063ca84, 0x3061: 0x0063cc84, 0x3062: 0x0063ce84, 0x3063: 0x0063d084,
+-	0x3064: 0x0063a684, 0x3065: 0x0062d484, 0x3066: 0x0062d684, 0x3067: 0x0064a284,
+-	0x3068: 0x0064a484, 0x3069: 0x0064ac84, 0x306a: 0x0064b084, 0x306b: 0x0064ba84,
+-	0x306c: 0x0064c284, 0x306d: 0x0064c684, 0x306e: 0x0062e484, 0x306f: 0x0064ce84,
+-	0x3070: 0x0064d284, 0x3071: 0x0062e684, 0x3072: 0x0062e884, 0x3073: 0x0062ec84,
+-	0x3074: 0x0062f084, 0x3075: 0x0062f284, 0x3076: 0x0062fa84, 0x3077: 0x0062fe84,
+-	0x3078: 0x00630284, 0x3079: 0x00630484, 0x307a: 0x00630684, 0x307b: 0x00630884,
+-	0x307c: 0x00630a84, 0x307d: 0x00631084, 0x307e: 0x00631884, 0x307f: 0x00632c84,
+-	// Block 0xc2, offset 0x3080
+-	0x3080: 0x00633a84, 0x3081: 0x00634484, 0x3082: 0x0064f684, 0x3083: 0x0064f884,
+-	0x3084: 0x00635a84, 0x3085: 0x00635c84, 0x3086: 0x00635e84, 0x3087: 0x0063ee84,
+-	0x3088: 0x0063f084, 0x3089: 0x0063f684, 0x308a: 0x00640884, 0x308b: 0x00640a84,
+-	0x308c: 0x00640e84, 0x308d: 0x00642284, 0x308e: 0x00642884,
+-	0x3090: 0x4027a820, 0x3091: 0x4027aa20, 0x3092: 0x029c0094, 0x3093: 0x029d1894,
+-	0x3094: 0x029c1294, 0x3095: 0x02adb694, 0x3096: 0x029c1494, 0x3097: 0x029c5a94,
+-	0x3098: 0x029c1694, 0x3099: 0x02ea6494, 0x309a: 0x029cb294, 0x309b: 0x029c3294,
+-	0x309c: 0x029c0294, 0x309d: 0x02b25294, 0x309e: 0x02ae6094, 0x309f: 0x029d7494,
+-	0x30a0: 0xe000237a, 0x30a1: 0xe0002383, 0x30a2: 0xe0002380, 0x30a3: 0xe000237d,
+-	0x30a4: 0x40661c20, 0x30a5: 0xe000238c, 0x30a6: 0x40661620, 0x30a7: 0xe0002389,
+-	0x30a8: 0xe000239e, 0x30a9: 0xe0002386, 0x30aa: 0xe0002395, 0x30ab: 0xe000239b,
+-	0x30ac: 0x40663420, 0x30ad: 0x4065f220, 0x30ae: 0xe000238f, 0x30af: 0xe0002392,
+-	0x30b0: 0x40663020, 0x30b1: 0x40663220, 0x30b2: 0x40662c20, 0x30b3: 0xe0002398,
+-	0x30b4: 0x0065dc99, 0x30b5: 0x0065e699, 0x30b6: 0x0065ee99, 0x30b7: 0x0065f499,
+-	0x30b8: 0x40660c20, 0x30b9: 0x40660e20, 0x30ba: 0x40661020,
+-	// Block 0xc3, offset 0x30c0
+-	0x30c0: 0x40275220, 0x30c1: 0x40275420, 0x30c2: 0x40275620, 0x30c3: 0x40275820,
+-	0x30c4: 0x40275a20, 0x30c5: 0x40275c20, 0x30c6: 0x40275e20, 0x30c7: 0x40276020,
+-	0x30c8: 0x40276220, 0x30c9: 0x40276420, 0x30ca: 0x40276620, 0x30cb: 0x40276820,
+-	0x30cc: 0x40276a20, 0x30cd: 0x40276c20, 0x30ce: 0x40276e20, 0x30cf: 0x40277020,
+-	0x30d0: 0x40277220, 0x30d1: 0x40277420, 0x30d2: 0x40277620, 0x30d3: 0x40277820,
+-	0x30d4: 0x40277a20, 0x30d5: 0x40277c20, 0x30d6: 0x40277e20, 0x30d7: 0x40278020,
+-	0x30d8: 0x40278220, 0x30d9: 0x40278420, 0x30da: 0x40278620, 0x30db: 0x40278820,
+-	0x30dc: 0x40278a20, 0x30dd: 0x40278c20, 0x30de: 0x40278e20, 0x30df: 0x40279020,
+-	0x30e0: 0x40279220, 0x30e1: 0x40279420, 0x30e2: 0x40279620, 0x30e3: 0x40279820,
+-	0x30f0: 0x0065868f, 0x30f1: 0x00658e8f, 0x30f2: 0x0065908f, 0x30f3: 0x00659e8f,
+-	0x30f4: 0x0065a48f, 0x30f5: 0x0065aa8f, 0x30f6: 0x0065ac8f, 0x30f7: 0x0065ae8f,
+-	0x30f8: 0x0065b08f, 0x30f9: 0x0065b28f, 0x30fa: 0x0065b88f, 0x30fb: 0x0065c68f,
+-	0x30fc: 0x0065c88f, 0x30fd: 0x0065ca8f, 0x30fe: 0x0065cc8f, 0x30ff: 0x0065ce8f,
+-	// Block 0xc4, offset 0x3100
+-	0x3100: 0xf0000404, 0x3101: 0xf0000404, 0x3102: 0xf0000404, 0x3103: 0xf0000404,
+-	0x3104: 0xf0000404, 0x3105: 0xf0000404, 0x3106: 0xf0000404, 0x3107: 0xf0000404,
+-	0x3108: 0xf0000404, 0x3109: 0xf0000404, 0x310a: 0xf0000404, 0x310b: 0xf0000404,
+-	0x310c: 0xf0000404, 0x310d: 0xf0000404, 0x310e: 0xe000004c, 0x310f: 0xe0000051,
+-	0x3110: 0xe0000056, 0x3111: 0xe000005b, 0x3112: 0xe0000060, 0x3113: 0xe0000065,
+-	0x3114: 0xe000006a, 0x3115: 0xe000006f, 0x3116: 0xe0000083, 0x3117: 0xe000008d,
+-	0x3118: 0xe0000092, 0x3119: 0xe0000097, 0x311a: 0xe000009c, 0x311b: 0xe00000a1,
+-	0x311c: 0xe0000088, 0x311d: 0xe0000074, 0x311e: 0xe000007c,
+-	0x3120: 0xf0000404, 0x3121: 0xf0000404, 0x3122: 0xf0000404, 0x3123: 0xf0000404,
+-	0x3124: 0xf0000404, 0x3125: 0xf0000404, 0x3126: 0xf0000404, 0x3127: 0xf0000404,
+-	0x3128: 0xf0000404, 0x3129: 0xf0000404, 0x312a: 0xf0000404, 0x312b: 0xf0000404,
+-	0x312c: 0xf0000404, 0x312d: 0xf0000404, 0x312e: 0xf0000404, 0x312f: 0xf0000404,
+-	0x3130: 0xf0000404, 0x3131: 0xf0000404, 0x3132: 0xf0000404, 0x3133: 0xf0000404,
+-	0x3134: 0xf0000404, 0x3135: 0xf0000404, 0x3136: 0xf0000404, 0x3137: 0xf0000404,
+-	0x3138: 0xf0000404, 0x3139: 0xf0000404, 0x313a: 0xf0000404, 0x313b: 0xf0000404,
+-	0x313c: 0xf0000404, 0x313d: 0xf0000404, 0x313e: 0xf0000404, 0x313f: 0xf0000404,
+-	// Block 0xc5, offset 0x3140
+-	0x3140: 0xf0000404, 0x3141: 0xf0000404, 0x3142: 0xf0000404, 0x3143: 0xf0000404,
+-	0x3144: 0x02aa9e86, 0x3145: 0x02bcf886, 0x3146: 0x02cb0e86, 0x3147: 0x02f71e86,
+-	0x3148: 0xe00002e3, 0x3149: 0xe00003d8, 0x314a: 0xe00004b3, 0x314b: 0xe000057d,
+-	0x314c: 0xe0000648, 0x314d: 0xe00006f0, 0x314e: 0xe000079c, 0x314f: 0xe0000841,
+-	0x3150: 0xe0000ec0, 0x3151: 0xf0000606, 0x3152: 0xf0000606, 0x3153: 0xf0000606,
+-	0x3154: 0xf0000606, 0x3155: 0xf0000606, 0x3156: 0xf0000606, 0x3157: 0xf0000606,
+-	0x3158: 0xf0000606, 0x3159: 0xf0000606, 0x315a: 0xf0000606, 0x315b: 0xf0000606,
+-	0x315c: 0xf0000606, 0x315d: 0xf0000606, 0x315e: 0xf0000606, 0x315f: 0xf0000606,
+-	0x3160: 0x0062ac86, 0x3161: 0x0062b086, 0x3162: 0x0062b286, 0x3163: 0x0062b686,
+-	0x3164: 0x0062b886, 0x3165: 0x0062ba86, 0x3166: 0x0062be86, 0x3167: 0x0062c286,
+-	0x3168: 0x0062c486, 0x3169: 0x0062c886, 0x316a: 0x0062ca86, 0x316b: 0x0062cc86,
+-	0x316c: 0x0062ce86, 0x316d: 0x0062d086, 0x316e: 0xf0000606, 0x316f: 0xf0000606,
+-	0x3170: 0xf0000606, 0x3171: 0xf0000606, 0x3172: 0xf0000606, 0x3173: 0xf0000606,
+-	0x3174: 0xf0000606, 0x3175: 0xf0000606, 0x3176: 0xf0000606, 0x3177: 0xf0000606,
+-	0x3178: 0xf0000606, 0x3179: 0xf0000606, 0x317a: 0xf0000606, 0x317b: 0xf0000606,
+-	0x317c: 0xe0002127, 0x317d: 0xe0002122, 0x317e: 0xf0000606, 0x317f: 0x4027ac20,
+-	// Block 0xc6, offset 0x3180
+-	0x3180: 0x029c0086, 0x3181: 0x029d1886, 0x3182: 0x029c1286, 0x3183: 0x02adb686,
+-	0x3184: 0x029d2886, 0x3185: 0x02a2da86, 0x3186: 0x029c0686, 0x3187: 0x02a2d686,
+-	0x3188: 0x029cba86, 0x3189: 0x02a68286, 0x318a: 0x02ce1086, 0x318b: 0x02e0d686,
+-	0x318c: 0x02d86886, 0x318d: 0x02ce5086, 0x318e: 0x0323a286, 0x318f: 0x02ae3e86,
+-	0x3190: 0x02cbca86, 0x3191: 0x02d05486, 0x3192: 0x02ce1286, 0x3193: 0x02f27c86,
+-	0x3194: 0x02a81a86, 0x3195: 0x02e4f286, 0x3196: 0x03194286, 0x3197: 0x02f2ba86,
+-	0x3198: 0x02a56886, 0x3199: 0x02f3b086, 0x319a: 0x02ea6e86, 0x319b: 0x02b2e686,
+-	0x319c: 0x0320d286, 0x319d: 0x02a25486, 0x319e: 0x02a6e086, 0x319f: 0x02d9d086,
+-	0x31a0: 0x03300a86, 0x31a1: 0x029e2286, 0x31a2: 0x02a33286, 0x31a3: 0x02d6c686,
+-	0x31a4: 0x029c1486, 0x31a5: 0x029c5a86, 0x31a6: 0x029c1686, 0x31a7: 0x02bbcc86,
+-	0x31a8: 0x02a7e686, 0x31a9: 0x02a67686, 0x31aa: 0x02b72e86, 0x31ab: 0x02b6cc86,
+-	0x31ac: 0x02edc686, 0x31ad: 0x029e0286, 0x31ae: 0x03198e86, 0x31af: 0x02a6a886,
+-	0x31b0: 0x02b23886, 0x31b1: 0xf0000606, 0x31b2: 0xf0000606, 0x31b3: 0xf0000606,
+-	0x31b4: 0xf0000606, 0x31b5: 0xf0000606, 0x31b6: 0xf0000606, 0x31b7: 0xf0000606,
+-	0x31b8: 0xf0000606, 0x31b9: 0xf0000606, 0x31ba: 0xf0000606, 0x31bb: 0xf0000606,
+-	0x31bc: 0xf0000606, 0x31bd: 0xf0000606, 0x31be: 0xf0000606, 0x31bf: 0xf0000606,
+-	// Block 0xc7, offset 0x31c0
+-	0x31c0: 0xf0001f04, 0x31c1: 0xf0001f04, 0x31c2: 0xf0001f04, 0x31c3: 0xf0001f04,
+-	0x31c4: 0xf0001f04, 0x31c5: 0xf0001f04, 0x31c6: 0xf0001f04, 0x31c7: 0xf0001f04,
+-	0x31c8: 0xf0001f04, 0x31c9: 0xf0000404, 0x31ca: 0xf0000404, 0x31cb: 0xf0000404,
+-	0x31cc: 0xf0001c1d, 0x31cd: 0xe0000b85, 0x31ce: 0xf0001d1c, 0x31cf: 0xe0000d14,
+-	0x31d0: 0x00657693, 0x31d1: 0x00657893, 0x31d2: 0x00657a93, 0x31d3: 0x00657e93,
+-	0x31d4: 0x00658093, 0x31d5: 0x00658293, 0x31d6: 0x00658493, 0x31d7: 0x00658693,
+-	0x31d8: 0x00658893, 0x31d9: 0x00658a93, 0x31da: 0x00658c93, 0x31db: 0x00658e93,
+-	0x31dc: 0x00659093, 0x31dd: 0x00659293, 0x31de: 0x00659493, 0x31df: 0x00659693,
+-	0x31e0: 0x00659893, 0x31e1: 0x00659a93, 0x31e2: 0x00659c93, 0x31e3: 0x00659e93,
+-	0x31e4: 0x0065a093, 0x31e5: 0x0065a293, 0x31e6: 0x0065a493, 0x31e7: 0x0065a693,
+-	0x31e8: 0x0065a893, 0x31e9: 0x0065aa93, 0x31ea: 0x0065ac93, 0x31eb: 0x0065ae93,
+-	0x31ec: 0x0065b093, 0x31ed: 0x0065b293, 0x31ee: 0x0065b493, 0x31ef: 0x0065b693,
+-	0x31f0: 0x0065b893, 0x31f1: 0x0065ba93, 0x31f2: 0x0065bc93, 0x31f3: 0x0065be93,
+-	0x31f4: 0x0065c093, 0x31f5: 0x0065c493, 0x31f6: 0x0065c693, 0x31f7: 0x0065c893,
+-	0x31f8: 0x0065ca93, 0x31f9: 0x0065cc93, 0x31fa: 0x0065ce93, 0x31fb: 0x0065d093,
+-	0x31fc: 0x0065d293, 0x31fd: 0x0065d493, 0x31fe: 0x0065d693,
+-	// Block 0xc8, offset 0x3200
+-	0x3200: 0xe0002131, 0x3201: 0xe0002137, 0x3202: 0xe000213c, 0x3203: 0xe000212d,
+-	0x3204: 0xe0002142, 0x3205: 0xe0002148, 0x3206: 0xe0002152, 0x3207: 0xe000215b,
+-	0x3208: 0xe0002156, 0x3209: 0xe0002166, 0x320a: 0xe0002162, 0x320b: 0xe0002170,
+-	0x320c: 0xe0002174, 0x320d: 0xe0002179, 0x320e: 0xe000217e, 0x320f: 0xe0002183,
+-	0x3210: 0xe000218e, 0x3211: 0xe0002193, 0x3212: 0xe0002198, 0x3213: 0xe000219d,
+-	0x3214: 0xf0001c1c, 0x3215: 0xe00021a4, 0x3216: 0xe00021ab, 0x3217: 0xe00021b2,
+-	0x3218: 0xe00021be, 0x3219: 0xe00021c3, 0x321a: 0xe00021ca, 0x321b: 0xe00021d1,
+-	0x321c: 0xe00021dc, 0x321d: 0xe00021eb, 0x321e: 0xe00021e6, 0x321f: 0xe00021f5,
+-	0x3220: 0xe00021fa, 0x3221: 0xe0002209, 0x3222: 0xe000221b, 0x3223: 0xe000221f,
+-	0x3224: 0xe000222f, 0x3225: 0xe0002246, 0x3226: 0xe0002250, 0x3227: 0xf0001c1c,
+-	0x3228: 0xf0001c1c, 0x3229: 0xe0002254, 0x322a: 0xe0002276, 0x322b: 0xe0002264,
+-	0x322c: 0xe000226b, 0x322d: 0xe0002270, 0x322e: 0xe0002286, 0x322f: 0xe000228d,
+-	0x3230: 0xe0002292, 0x3231: 0xe0002296, 0x3232: 0xe00022a6, 0x3233: 0xe00022ad,
+-	0x3234: 0xe00022b2, 0x3235: 0xe00022b9, 0x3236: 0xe00022d4, 0x3237: 0xe00022da,
+-	0x3238: 0xe00022de, 0x3239: 0xe00022e3, 0x323a: 0xe00022e7, 0x323b: 0xe00022c9,
+-	0x323c: 0xe00022cf, 0x323d: 0xe0002300, 0x323e: 0xe0002306, 0x323f: 0xf0001c1c,
+-	// Block 0xc9, offset 0x3240
+-	0x3240: 0xe000230b, 0x3241: 0xe00022f8, 0x3242: 0xe00022fc, 0x3243: 0xe0002311,
+-	0x3244: 0xe0002316, 0x3245: 0xe000231d, 0x3246: 0xe0002321, 0x3247: 0xe0002325,
+-	0x3248: 0xe000232b, 0x3249: 0xf0001c1c, 0x324a: 0xe0002330, 0x324b: 0xe000233c,
+-	0x324c: 0xe0002340, 0x324d: 0xe0002337, 0x324e: 0xe0002346, 0x324f: 0xe000234b,
+-	0x3250: 0xe000234f, 0x3251: 0xe0002353, 0x3252: 0xf0001c1c, 0x3253: 0xe000235e,
+-	0x3254: 0xe0002358, 0x3255: 0xf0001c1c, 0x3256: 0xe0002363, 0x3257: 0xe000236d,
+-	0x3258: 0xf0001f04, 0x3259: 0xf0001f04, 0x325a: 0xf0001f04, 0x325b: 0xf0001f04,
+-	0x325c: 0xf0001f04, 0x325d: 0xf0001f04, 0x325e: 0xf0001f04, 0x325f: 0xf0001f04,
+-	0x3260: 0xf0001f04, 0x3261: 0xf0001f04, 0x3262: 0xf0000404, 0x3263: 0xf0000404,
+-	0x3264: 0xf0000404, 0x3265: 0xf0000404, 0x3266: 0xf0000404, 0x3267: 0xf0000404,
+-	0x3268: 0xf0000404, 0x3269: 0xf0000404, 0x326a: 0xf0000404, 0x326b: 0xf0000404,
+-	0x326c: 0xf0000404, 0x326d: 0xf0000404, 0x326e: 0xf0000404, 0x326f: 0xf0000404,
+-	0x3270: 0xf0000404, 0x3271: 0xe0000c1e, 0x3272: 0xf0001c1c, 0x3273: 0xf0001d1d,
+-	0x3274: 0xe0000a31, 0x3275: 0xf0001d1c, 0x3276: 0xf0001c1c, 0x3277: 0xf0001c1c,
+-	0x3278: 0xe0000ac2, 0x3279: 0xe0000ac6, 0x327a: 0xf0001d1d, 0x327b: 0xf0001c1c,
+-	0x327c: 0xf0001c1c, 0x327d: 0xf0001c1c, 0x327e: 0xf0001c1c, 0x327f: 0xe0002431,
+-	// Block 0xca, offset 0x3280
+-	0x3280: 0xf0001d1c, 0x3281: 0xf0001d1c, 0x3282: 0xf0001d1c, 0x3283: 0xf0001d1c,
+-	0x3284: 0xf0001d1c, 0x3285: 0xf0001d1d, 0x3286: 0xf0001d1d, 0x3287: 0xf0001d1d,
+-	0x3288: 0xe0000a6b, 0x3289: 0xe0000cb4, 0x328a: 0xf0001d1c, 0x328b: 0xf0001d1c,
+-	0x328c: 0xf0001d1c, 0x328d: 0xf0001c1c, 0x328e: 0xf0001c1c, 0x328f: 0xf0001c1c,
+-	0x3290: 0xf0001c1d, 0x3291: 0xe0000cb9, 0x3292: 0xe0000d36, 0x3293: 0xe0000be3,
+-	0x3294: 0xe0000fc5, 0x3295: 0xf0001c1c, 0x3296: 0xf0001c1c, 0x3297: 0xf0001c1c,
+-	0x3298: 0xf0001c1c, 0x3299: 0xf0001c1c, 0x329a: 0xf0001c1c, 0x329b: 0xf0001c1c,
+-	0x329c: 0xf0001c1c, 0x329d: 0xf0001c1c, 0x329e: 0xf0001c1c, 0x329f: 0xe0000d3e,
+-	0x32a0: 0xe0000a72, 0x32a1: 0xf0001c1c, 0x32a2: 0xe0000cbd, 0x32a3: 0xe0000d42,
+-	0x32a4: 0xe0000a76, 0x32a5: 0xf0001c1c, 0x32a6: 0xe0000cc1, 0x32a7: 0xe0000d2d,
+-	0x32a8: 0xe0000d31, 0x32a9: 0xf0001c1d, 0x32aa: 0xe0000cc5, 0x32ab: 0xe0000d4a,
+-	0x32ac: 0xe0000be7, 0x32ad: 0xe0000f0b, 0x32ae: 0xe0000f0f, 0x32af: 0xe0000f15,
+-	0x32b0: 0xf0001c1c, 0x32b1: 0xf0001c1c, 0x32b2: 0xf0001c1c, 0x32b3: 0xf0001c1c,
+-	0x32b4: 0xf0001d1c, 0x32b5: 0xf0001d1c, 0x32b6: 0xf0001d1c, 0x32b7: 0xf0001d1c,
+-	0x32b8: 0xf0001d1c, 0x32b9: 0xf0001d1d, 0x32ba: 0xf0001d1c, 0x32bb: 0xf0001d1c,
+-	0x32bc: 0xf0001d1c, 0x32bd: 0xf0001d1c, 0x32be: 0xf0001d1c, 0x32bf: 0xf0001d1d,
+-	// Block 0xcb, offset 0x32c0
+-	0x32c0: 0xf0001d1c, 0x32c1: 0xf0001d1d, 0x32c2: 0xe00009b7, 0x32c3: 0xf0001c1d,
+-	0x32c4: 0xf0001c1c, 0x32c5: 0xf0001c1c, 0x32c6: 0xe0000a66, 0x32c7: 0xe0000a7a,
+-	0x32c8: 0xf0001d1c, 0x32c9: 0xf0001c1d, 0x32ca: 0xf0001c1c, 0x32cb: 0xf0001d1d,
+-	0x32cc: 0xf0001c1c, 0x32cd: 0xf0001d1d, 0x32ce: 0xf0001d1d, 0x32cf: 0xf0001c1c,
+-	0x32d0: 0xf0001c1c, 0x32d1: 0xf0001c1c, 0x32d2: 0xe0000d0d, 0x32d3: 0xf0001c1c,
+-	0x32d4: 0xf0001c1c, 0x32d5: 0xe0000d3a, 0x32d6: 0xe0000d46, 0x32d7: 0xf0001d1d,
+-	0x32d8: 0xe0000eb0, 0x32d9: 0xe0000eb8, 0x32da: 0xf0001d1d, 0x32db: 0xf0001c1c,
+-	0x32dc: 0xf0001c1d, 0x32dd: 0xf0001c1d, 0x32de: 0xe00010b2, 0x32df: 0xe00009c8,
+-	0x32e0: 0xf0001f04, 0x32e1: 0xf0001f04, 0x32e2: 0xf0001f04, 0x32e3: 0xf0001f04,
+-	0x32e4: 0xf0001f04, 0x32e5: 0xf0001f04, 0x32e6: 0xf0001f04, 0x32e7: 0xf0001f04,
+-	0x32e8: 0xf0001f04, 0x32e9: 0xf0000404, 0x32ea: 0xf0000404, 0x32eb: 0xf0000404,
+-	0x32ec: 0xf0000404, 0x32ed: 0xf0000404, 0x32ee: 0xf0000404, 0x32ef: 0xf0000404,
+-	0x32f0: 0xf0000404, 0x32f1: 0xf0000404, 0x32f2: 0xf0000404, 0x32f3: 0xf0000404,
+-	0x32f4: 0xf0000404, 0x32f5: 0xf0000404, 0x32f6: 0xf0000404, 0x32f7: 0xf0000404,
+-	0x32f8: 0xf0000404, 0x32f9: 0xf0000404, 0x32fa: 0xf0000404, 0x32fb: 0xf0000404,
+-	0x32fc: 0xf0000404, 0x32fd: 0xf0000404, 0x32fe: 0xf0000404, 0x32ff: 0xe0000bdf,
+-	// Block 0xcc, offset 0x3300
+-	0x3300: 0x40196220, 0x3301: 0x40196420, 0x3302: 0x40196620, 0x3303: 0x40196820,
+-	0x3304: 0x40196a20, 0x3305: 0x40196c20, 0x3306: 0x40196e20, 0x3307: 0x40197020,
+-	0x3308: 0x40197220, 0x3309: 0x40197420, 0x330a: 0x40197620, 0x330b: 0x40197820,
+-	0x330c: 0x40197a20, 0x330d: 0x40197c20, 0x330e: 0x40197e20, 0x330f: 0x40198020,
+-	0x3310: 0x40198220, 0x3311: 0x40198420, 0x3312: 0x40198620, 0x3313: 0x40198820,
+-	0x3314: 0x40198a20, 0x3315: 0x40198c20, 0x3316: 0x40198e20, 0x3317: 0x40199020,
+-	0x3318: 0x40199220, 0x3319: 0x40199420, 0x331a: 0x40199620, 0x331b: 0x40199820,
+-	0x331c: 0x40199a20, 0x331d: 0x40199c20, 0x331e: 0x40199e20, 0x331f: 0x4019a020,
+-	0x3320: 0x4019a220, 0x3321: 0x4019a420, 0x3322: 0x4019a620, 0x3323: 0x4019a820,
+-	0x3324: 0x4019aa20, 0x3325: 0x4019ac20, 0x3326: 0x4019ae20, 0x3327: 0x4019b020,
+-	0x3328: 0x4019b220, 0x3329: 0x4019b420, 0x332a: 0x4019b620, 0x332b: 0x4019b820,
+-	0x332c: 0x4019ba20, 0x332d: 0x4019bc20, 0x332e: 0x4019be20, 0x332f: 0x4019c020,
+-	0x3330: 0x4019c220, 0x3331: 0x4019c420, 0x3332: 0x4019c620, 0x3333: 0x4019c820,
+-	0x3334: 0x4019ca20, 0x3335: 0x4019cc20, 0x3336: 0x4019ce20, 0x3337: 0x4019d020,
+-	0x3338: 0x4019d220, 0x3339: 0x4019d420, 0x333a: 0x4019d620, 0x333b: 0x4019d820,
+-	0x333c: 0x4019da20, 0x333d: 0x4019dc20, 0x333e: 0x4019de20, 0x333f: 0x4019e020,
+-	// Block 0xcd, offset 0x3340
+-	0x3340: 0x40664020, 0x3341: 0x40664220, 0x3342: 0x40664420, 0x3343: 0x40664620,
+-	0x3344: 0x40664820, 0x3345: 0x40664a20, 0x3346: 0x40664c20, 0x3347: 0x40664e20,
+-	0x3348: 0x40665020, 0x3349: 0x40665220, 0x334a: 0x40665420, 0x334b: 0x40665620,
+-	0x334c: 0x40665820, 0x334d: 0x40665a20, 0x334e: 0x40665c20, 0x334f: 0x40665e20,
+-	0x3350: 0x40666020, 0x3351: 0x40666220, 0x3352: 0x40666420, 0x3353: 0x40666620,
+-	0x3354: 0x40666820, 0x3355: 0x40666a20, 0x3356: 0x40666c20, 0x3357: 0x40666e20,
+-	0x3358: 0x40667020, 0x3359: 0x40667220, 0x335a: 0x40667420, 0x335b: 0x40667620,
+-	0x335c: 0x40667820, 0x335d: 0x40667a20, 0x335e: 0x40667c20, 0x335f: 0x40667e20,
+-	0x3360: 0x40668020, 0x3361: 0x40668220, 0x3362: 0x40668420, 0x3363: 0x40668620,
+-	0x3364: 0x40668820, 0x3365: 0x40668a20, 0x3366: 0x40668c20, 0x3367: 0x40668e20,
+-	0x3368: 0x40669020, 0x3369: 0x40669220, 0x336a: 0x40669420, 0x336b: 0x40669620,
+-	0x336c: 0x40669820, 0x336d: 0x40669a20, 0x336e: 0x40669c20, 0x336f: 0x40669e20,
+-	0x3370: 0x4066a020, 0x3371: 0x4066a220, 0x3372: 0x4066a420, 0x3373: 0x4066a620,
+-	0x3374: 0x4066a820, 0x3375: 0x4066aa20, 0x3376: 0x4066ac20, 0x3377: 0x4066ae20,
+-	0x3378: 0x4066b020, 0x3379: 0x4066b220, 0x337a: 0x4066b420, 0x337b: 0x4066b620,
+-	0x337c: 0x4066b820, 0x337d: 0x4066ba20, 0x337e: 0x4066bc20, 0x337f: 0x4066be20,
+-	// Block 0xce, offset 0x3380
+-	0x3380: 0x4066c020, 0x3381: 0x4066c220, 0x3382: 0x4066c420, 0x3383: 0x4066c620,
+-	0x3384: 0x4066c820, 0x3385: 0x4066ca20, 0x3386: 0x4066cc20, 0x3387: 0x4066ce20,
+-	0x3388: 0x4066d020, 0x3389: 0x4066d220, 0x338a: 0x4066d420, 0x338b: 0x4066d620,
+-	0x338c: 0x4066d820, 0x338d: 0x4066da20, 0x338e: 0x4066dc20, 0x338f: 0x4066de20,
+-	0x3390: 0x4066e020, 0x3391: 0x4066e220, 0x3392: 0x4066e420, 0x3393: 0x4066e620,
+-	0x3394: 0x4066e820, 0x3395: 0x4066ea20, 0x3396: 0x4066ec20, 0x3397: 0x4066ee20,
+-	0x3398: 0x4066f020, 0x3399: 0x4066f220, 0x339a: 0x4066f420, 0x339b: 0x4066f620,
+-	0x339c: 0x4066f820, 0x339d: 0x4066fa20, 0x339e: 0x4066fc20, 0x339f: 0x4066fe20,
+-	0x33a0: 0x40670020, 0x33a1: 0x40670220, 0x33a2: 0x40670420, 0x33a3: 0x40670620,
+-	0x33a4: 0x40670820, 0x33a5: 0x40670a20, 0x33a6: 0x40670c20, 0x33a7: 0x40670e20,
+-	0x33a8: 0x40671020, 0x33a9: 0x40671220, 0x33aa: 0x40671420, 0x33ab: 0x40671620,
+-	0x33ac: 0x40671820, 0x33ad: 0x40671a20, 0x33ae: 0x40671c20, 0x33af: 0x40671e20,
+-	0x33b0: 0x40672020, 0x33b1: 0x40672220, 0x33b2: 0x40672420, 0x33b3: 0x40672620,
+-	0x33b4: 0x40672820, 0x33b5: 0x40672a20, 0x33b6: 0x40672c20, 0x33b7: 0x40672e20,
+-	0x33b8: 0x40673020, 0x33b9: 0x40673220, 0x33ba: 0x40673420, 0x33bb: 0x40673620,
+-	0x33bc: 0x40673820, 0x33bd: 0x40673a20, 0x33be: 0x40673c20, 0x33bf: 0x40673e20,
+-	// Block 0xcf, offset 0x33c0
+-	0x33c0: 0x40674020, 0x33c1: 0x40674220, 0x33c2: 0x40674420, 0x33c3: 0x40674620,
+-	0x33c4: 0x40674820, 0x33c5: 0x40674a20, 0x33c6: 0x40674c20, 0x33c7: 0x40674e20,
+-	0x33c8: 0x40675020, 0x33c9: 0x40675220, 0x33ca: 0x40675420, 0x33cb: 0x40675620,
+-	0x33cc: 0x40675820, 0x33cd: 0x40675a20, 0x33ce: 0x40675c20, 0x33cf: 0x40675e20,
+-	0x33d0: 0x40676020, 0x33d1: 0x40676220, 0x33d2: 0x40676420, 0x33d3: 0x40676620,
+-	0x33d4: 0x40676820, 0x33d5: 0x40676a20, 0x33d6: 0x40676c20, 0x33d7: 0x40676e20,
+-	0x33d8: 0x40677020, 0x33d9: 0x40677220, 0x33da: 0x40677420, 0x33db: 0x40677620,
+-	0x33dc: 0x40677820, 0x33dd: 0x40677a20, 0x33de: 0x40677c20, 0x33df: 0x40677e20,
+-	0x33e0: 0x40678020, 0x33e1: 0x40678220, 0x33e2: 0x40678420, 0x33e3: 0x40678620,
+-	0x33e4: 0x40678820, 0x33e5: 0x40678a20, 0x33e6: 0x40678c20, 0x33e7: 0x40678e20,
+-	0x33e8: 0x40679020, 0x33e9: 0x40679220, 0x33ea: 0x40679420, 0x33eb: 0x40679620,
+-	0x33ec: 0x40679820, 0x33ed: 0x40679a20, 0x33ee: 0x40679c20, 0x33ef: 0x40679e20,
+-	0x33f0: 0x4067a020, 0x33f1: 0x4067a220, 0x33f2: 0x4067a420, 0x33f3: 0x4067a620,
+-	0x33f4: 0x4067a820, 0x33f5: 0x4067aa20, 0x33f6: 0x4067ac20, 0x33f7: 0x4067ae20,
+-	0x33f8: 0x4067b020, 0x33f9: 0x4067b220, 0x33fa: 0x4067b420, 0x33fb: 0x4067b620,
+-	0x33fc: 0x4067b820, 0x33fd: 0x4067ba20, 0x33fe: 0x4067bc20, 0x33ff: 0x4067be20,
+-	// Block 0xd0, offset 0x3400
+-	0x3400: 0x4067c020, 0x3401: 0x4067c220, 0x3402: 0x4067c420, 0x3403: 0x4067c620,
+-	0x3404: 0x4067c820, 0x3405: 0x4067ca20, 0x3406: 0x4067cc20, 0x3407: 0x4067ce20,
+-	0x3408: 0x4067d020, 0x3409: 0x4067d220, 0x340a: 0x4067d420, 0x340b: 0x4067d620,
+-	0x340c: 0x4067d820, 0x340d: 0x4067da20, 0x340e: 0x4067dc20, 0x340f: 0x4067de20,
+-	0x3410: 0x4067e020, 0x3411: 0x4067e220, 0x3412: 0x4067e420, 0x3413: 0x4067e620,
+-	0x3414: 0x4067e820, 0x3415: 0x4067ea20, 0x3416: 0x4067ec20, 0x3417: 0x4067ee20,
+-	0x3418: 0x4067f020, 0x3419: 0x4067f220, 0x341a: 0x4067f420, 0x341b: 0x4067f620,
+-	0x341c: 0x4067f820, 0x341d: 0x4067fa20, 0x341e: 0x4067fc20, 0x341f: 0x4067fe20,
+-	0x3420: 0x40680020, 0x3421: 0x40680220, 0x3422: 0x40680420, 0x3423: 0x40680620,
+-	0x3424: 0x40680820, 0x3425: 0x40680a20, 0x3426: 0x40680c20, 0x3427: 0x40680e20,
+-	0x3428: 0x40681020, 0x3429: 0x40681220, 0x342a: 0x40681420, 0x342b: 0x40681620,
+-	0x342c: 0x40681820, 0x342d: 0x40681a20, 0x342e: 0x40681c20, 0x342f: 0x40681e20,
+-	0x3430: 0x40682020, 0x3431: 0x40682220, 0x3432: 0x40682420, 0x3433: 0x40682620,
+-	0x3434: 0x40682820, 0x3435: 0x40682a20, 0x3436: 0x40682c20, 0x3437: 0x40682e20,
+-	0x3438: 0x40683020, 0x3439: 0x40683220, 0x343a: 0x40683420, 0x343b: 0x40683620,
+-	0x343c: 0x40683820, 0x343d: 0x40683a20, 0x343e: 0x40683c20, 0x343f: 0x40683e20,
+-	// Block 0xd1, offset 0x3440
+-	0x3440: 0x40684020, 0x3441: 0x40684220, 0x3442: 0x40684420, 0x3443: 0x40684620,
+-	0x3444: 0x40684820, 0x3445: 0x40684a20, 0x3446: 0x40684c20, 0x3447: 0x40684e20,
+-	0x3448: 0x40685020, 0x3449: 0x40685220, 0x344a: 0x40685420, 0x344b: 0x40685620,
+-	0x344c: 0x40685820, 0x344d: 0x40685a20, 0x344e: 0x40685c20, 0x344f: 0x40685e20,
+-	0x3450: 0x40686020, 0x3451: 0x40686220, 0x3452: 0x40686420, 0x3453: 0x40686620,
+-	0x3454: 0x40686820, 0x3455: 0x40686a20, 0x3456: 0x40686c20, 0x3457: 0x40686e20,
+-	0x3458: 0x40687020, 0x3459: 0x40687220, 0x345a: 0x40687420, 0x345b: 0x40687620,
+-	0x345c: 0x40687820, 0x345d: 0x40687a20, 0x345e: 0x40687c20, 0x345f: 0x40687e20,
+-	0x3460: 0x40688020, 0x3461: 0x40688220, 0x3462: 0x40688420, 0x3463: 0x40688620,
+-	0x3464: 0x40688820, 0x3465: 0x40688a20, 0x3466: 0x40688c20, 0x3467: 0x40688e20,
+-	0x3468: 0x40689020, 0x3469: 0x40689220, 0x346a: 0x40689420, 0x346b: 0x40689620,
+-	0x346c: 0x40689820, 0x346d: 0x40689a20, 0x346e: 0x40689c20, 0x346f: 0x40689e20,
+-	0x3470: 0x4068a020, 0x3471: 0x4068a220, 0x3472: 0x4068a420, 0x3473: 0x4068a620,
+-	0x3474: 0x4068a820, 0x3475: 0x4068aa20, 0x3476: 0x4068ac20, 0x3477: 0x4068ae20,
+-	0x3478: 0x4068b020, 0x3479: 0x4068b220, 0x347a: 0x4068b420, 0x347b: 0x4068b620,
+-	0x347c: 0x4068b820, 0x347d: 0x4068ba20, 0x347e: 0x4068bc20, 0x347f: 0x4068be20,
+-	// Block 0xd2, offset 0x3480
+-	0x3480: 0x4068c020, 0x3481: 0x4068c220, 0x3482: 0x4068c420, 0x3483: 0x4068c620,
+-	0x3484: 0x4068c820, 0x3485: 0x4068ca20, 0x3486: 0x4068cc20, 0x3487: 0x4068ce20,
+-	0x3488: 0x4068d020, 0x3489: 0x4068d220, 0x348a: 0x4068d420, 0x348b: 0x4068d620,
+-	0x348c: 0x4068d820, 0x348d: 0x4068da20, 0x348e: 0x4068dc20, 0x348f: 0x4068de20,
+-	0x3490: 0x4068e020, 0x3491: 0x4068e220, 0x3492: 0x4068e420, 0x3493: 0x4068e620,
+-	0x3494: 0x4068e820, 0x3495: 0x4068ea20, 0x3496: 0x4068ec20, 0x3497: 0x4068ee20,
+-	0x3498: 0x4068f020, 0x3499: 0x4068f220, 0x349a: 0x4068f420, 0x349b: 0x4068f620,
+-	0x349c: 0x4068f820, 0x349d: 0x4068fa20, 0x349e: 0x4068fc20, 0x349f: 0x4068fe20,
+-	0x34a0: 0x40690020, 0x34a1: 0x40690220, 0x34a2: 0x40690420, 0x34a3: 0x40690620,
+-	0x34a4: 0x40690820, 0x34a5: 0x40690a20, 0x34a6: 0x40690c20, 0x34a7: 0x40690e20,
+-	0x34a8: 0x40691020, 0x34a9: 0x40691220, 0x34aa: 0x40691420, 0x34ab: 0x40691620,
+-	0x34ac: 0x40691820, 0x34ad: 0x40691a20, 0x34ae: 0x40691c20, 0x34af: 0x40691e20,
+-	0x34b0: 0x40692020, 0x34b1: 0x40692220, 0x34b2: 0x40692420, 0x34b3: 0x40692620,
+-	0x34b4: 0x40692820, 0x34b5: 0x40692a20, 0x34b6: 0x40692c20, 0x34b7: 0x40692e20,
+-	0x34b8: 0x40693020, 0x34b9: 0x40693220, 0x34ba: 0x40693420, 0x34bb: 0x40693620,
+-	0x34bc: 0x40693820, 0x34bd: 0x40693a20, 0x34be: 0x40693c20, 0x34bf: 0x40693e20,
+-	// Block 0xd3, offset 0x34c0
+-	0x34c0: 0x40694020, 0x34c1: 0x40694220, 0x34c2: 0x40694420, 0x34c3: 0x40694620,
+-	0x34c4: 0x40694820, 0x34c5: 0x40694a20, 0x34c6: 0x40694c20, 0x34c7: 0x40694e20,
+-	0x34c8: 0x40695020, 0x34c9: 0x40695220, 0x34ca: 0x40695420, 0x34cb: 0x40695620,
+-	0x34cc: 0x40695820, 0x34cd: 0x40695a20, 0x34ce: 0x40695c20, 0x34cf: 0x40695e20,
+-	0x34d0: 0x40696020, 0x34d1: 0x40696220, 0x34d2: 0x40696420, 0x34d3: 0x40696620,
+-	0x34d4: 0x40696820, 0x34d5: 0x40696a20, 0x34d6: 0x40696c20, 0x34d7: 0x40696e20,
+-	0x34d8: 0x40697020, 0x34d9: 0x40697220, 0x34da: 0x40697420, 0x34db: 0x40697620,
+-	0x34dc: 0x40697820, 0x34dd: 0x40697a20, 0x34de: 0x40697c20, 0x34df: 0x40697e20,
+-	0x34e0: 0x40698020, 0x34e1: 0x40698220, 0x34e2: 0x40698420, 0x34e3: 0x40698620,
+-	0x34e4: 0x40698820, 0x34e5: 0x40698a20, 0x34e6: 0x40698c20, 0x34e7: 0x40698e20,
+-	0x34e8: 0x40699020, 0x34e9: 0x40699220, 0x34ea: 0x40699420, 0x34eb: 0x40699620,
+-	0x34ec: 0x40699820, 0x34ed: 0x40699a20, 0x34ee: 0x40699c20, 0x34ef: 0x40699e20,
+-	0x34f0: 0x4069a020, 0x34f1: 0x4069a220, 0x34f2: 0x4069a420, 0x34f3: 0x4069a620,
+-	0x34f4: 0x4069a820, 0x34f5: 0x4069aa20, 0x34f6: 0x4069ac20, 0x34f7: 0x4069ae20,
+-	0x34f8: 0x4069b020, 0x34f9: 0x4069b220, 0x34fa: 0x4069b420, 0x34fb: 0x4069b620,
+-	0x34fc: 0x4069b820, 0x34fd: 0x4069ba20, 0x34fe: 0x4069bc20, 0x34ff: 0x4069be20,
+-	// Block 0xd4, offset 0x3500
+-	0x3500: 0x4069c020, 0x3501: 0x4069c220, 0x3502: 0x4069c420, 0x3503: 0x4069c620,
+-	0x3504: 0x4069c820, 0x3505: 0x4069ca20, 0x3506: 0x4069cc20, 0x3507: 0x4069ce20,
+-	0x3508: 0x4069d020, 0x3509: 0x4069d220, 0x350a: 0x4069d420, 0x350b: 0x4069d620,
+-	0x350c: 0x4069d820, 0x350d: 0x4069da20, 0x350e: 0x4069dc20, 0x350f: 0x4069de20,
+-	0x3510: 0x4069e020, 0x3511: 0x4069e220, 0x3512: 0x4069e420, 0x3513: 0x4069e620,
+-	0x3514: 0x4069e820, 0x3515: 0x4069ea20, 0x3516: 0x4069ec20, 0x3517: 0x4069ee20,
+-	0x3518: 0x4069f020, 0x3519: 0x4069f220, 0x351a: 0x4069f420, 0x351b: 0x4069f620,
+-	0x351c: 0x4069f820, 0x351d: 0x4069fa20, 0x351e: 0x4069fc20, 0x351f: 0x4069fe20,
+-	0x3520: 0x406a0020, 0x3521: 0x406a0220, 0x3522: 0x406a0420, 0x3523: 0x406a0620,
+-	0x3524: 0x406a0820, 0x3525: 0x406a0a20, 0x3526: 0x406a0c20, 0x3527: 0x406a0e20,
+-	0x3528: 0x406a1020, 0x3529: 0x406a1220, 0x352a: 0x406a1420, 0x352b: 0x406a1620,
+-	0x352c: 0x406a1820, 0x352d: 0x406a1a20, 0x352e: 0x406a1c20, 0x352f: 0x406a1e20,
+-	0x3530: 0x406a2020, 0x3531: 0x406a2220, 0x3532: 0x406a2420, 0x3533: 0x406a2620,
+-	0x3534: 0x406a2820, 0x3535: 0x406a2a20, 0x3536: 0x406a2c20, 0x3537: 0x406a2e20,
+-	0x3538: 0x406a3020, 0x3539: 0x406a3220, 0x353a: 0x406a3420, 0x353b: 0x406a3620,
+-	0x353c: 0x406a3820, 0x353d: 0x406a3a20, 0x353e: 0x406a3c20, 0x353f: 0x406a3e20,
+-	// Block 0xd5, offset 0x3540
+-	0x3540: 0x406a4020, 0x3541: 0x406a4220, 0x3542: 0x406a4420, 0x3543: 0x406a4620,
+-	0x3544: 0x406a4820, 0x3545: 0x406a4a20, 0x3546: 0x406a4c20, 0x3547: 0x406a4e20,
+-	0x3548: 0x406a5020, 0x3549: 0x406a5220, 0x354a: 0x406a5420, 0x354b: 0x406a5620,
+-	0x354c: 0x406a5820, 0x354d: 0x406a5a20, 0x354e: 0x406a5c20, 0x354f: 0x406a5e20,
+-	0x3550: 0x406a6020, 0x3551: 0x406a6220, 0x3552: 0x406a6420, 0x3553: 0x406a6620,
+-	0x3554: 0x406a6820, 0x3555: 0x406a6a20, 0x3556: 0x406a6c20, 0x3557: 0x406a6e20,
+-	0x3558: 0x406a7020, 0x3559: 0x406a7220, 0x355a: 0x406a7420, 0x355b: 0x406a7620,
+-	0x355c: 0x406a7820, 0x355d: 0x406a7a20, 0x355e: 0x406a7c20, 0x355f: 0x406a7e20,
+-	0x3560: 0x406a8020, 0x3561: 0x406a8220, 0x3562: 0x406a8420, 0x3563: 0x406a8620,
+-	0x3564: 0x406a8820, 0x3565: 0x406a8a20, 0x3566: 0x406a8c20, 0x3567: 0x406a8e20,
+-	0x3568: 0x406a9020, 0x3569: 0x406a9220, 0x356a: 0x406a9420, 0x356b: 0x406a9620,
+-	0x356c: 0x406a9820, 0x356d: 0x406a9a20, 0x356e: 0x406a9c20, 0x356f: 0x406a9e20,
+-	0x3570: 0x406aa020, 0x3571: 0x406aa220, 0x3572: 0x406aa420, 0x3573: 0x406aa620,
+-	0x3574: 0x406aa820, 0x3575: 0x406aaa20, 0x3576: 0x406aac20, 0x3577: 0x406aae20,
+-	0x3578: 0x406ab020, 0x3579: 0x406ab220, 0x357a: 0x406ab420, 0x357b: 0x406ab620,
+-	0x357c: 0x406ab820, 0x357d: 0x406aba20, 0x357e: 0x406abc20, 0x357f: 0x406abe20,
+-	// Block 0xd6, offset 0x3580
+-	0x3580: 0x406ac020, 0x3581: 0x406ac220, 0x3582: 0x406ac420, 0x3583: 0x406ac620,
+-	0x3584: 0x406ac820, 0x3585: 0x406aca20, 0x3586: 0x406acc20, 0x3587: 0x406ace20,
+-	0x3588: 0x406ad020, 0x3589: 0x406ad220, 0x358a: 0x406ad420, 0x358b: 0x406ad620,
+-	0x358c: 0x406ad820, 0x358d: 0x406ada20, 0x358e: 0x406adc20, 0x358f: 0x406ade20,
+-	0x3590: 0x406ae020, 0x3591: 0x406ae220, 0x3592: 0x406ae420, 0x3593: 0x406ae620,
+-	0x3594: 0x406ae820, 0x3595: 0x406aea20, 0x3596: 0x406aec20, 0x3597: 0x406aee20,
+-	0x3598: 0x406af020, 0x3599: 0x406af220, 0x359a: 0x406af420, 0x359b: 0x406af620,
+-	0x359c: 0x406af820, 0x359d: 0x406afa20, 0x359e: 0x406afc20, 0x359f: 0x406afe20,
+-	0x35a0: 0x406b0020, 0x35a1: 0x406b0220, 0x35a2: 0x406b0420, 0x35a3: 0x406b0620,
+-	0x35a4: 0x406b0820, 0x35a5: 0x406b0a20, 0x35a6: 0x406b0c20, 0x35a7: 0x406b0e20,
+-	0x35a8: 0x406b1020, 0x35a9: 0x406b1220, 0x35aa: 0x406b1420, 0x35ab: 0x406b1620,
+-	0x35ac: 0x406b1820, 0x35ad: 0x406b1a20, 0x35ae: 0x406b1c20, 0x35af: 0x406b1e20,
+-	0x35b0: 0x406b2020, 0x35b1: 0x406b2220, 0x35b2: 0x406b2420, 0x35b3: 0x406b2620,
+-	0x35b4: 0x406b2820, 0x35b5: 0x406b2a20, 0x35b6: 0x406b2c20, 0x35b7: 0x406b2e20,
+-	0x35b8: 0x406b3020, 0x35b9: 0x406b3220, 0x35ba: 0x406b3420, 0x35bb: 0x406b3620,
+-	0x35bc: 0x406b3820, 0x35bd: 0x406b3a20, 0x35be: 0x406b3c20, 0x35bf: 0x406b3e20,
+-	// Block 0xd7, offset 0x35c0
+-	0x35c0: 0x406b4020, 0x35c1: 0x406b4220, 0x35c2: 0x406b4420, 0x35c3: 0x406b4620,
+-	0x35c4: 0x406b4820, 0x35c5: 0x406b4a20, 0x35c6: 0x406b4c20, 0x35c7: 0x406b4e20,
+-	0x35c8: 0x406b5020, 0x35c9: 0x406b5220, 0x35ca: 0x406b5420, 0x35cb: 0x406b5620,
+-	0x35cc: 0x406b5820, 0x35cd: 0x406b5a20, 0x35ce: 0x406b5c20, 0x35cf: 0x406b5e20,
+-	0x35d0: 0x406b6020, 0x35d1: 0x406b6220, 0x35d2: 0x406b6420, 0x35d3: 0x406b6620,
+-	0x35d4: 0x406b6820, 0x35d5: 0x406b6a20, 0x35d6: 0x406b6c20, 0x35d7: 0x406b6e20,
+-	0x35d8: 0x406b7020, 0x35d9: 0x406b7220, 0x35da: 0x406b7420, 0x35db: 0x406b7620,
+-	0x35dc: 0x406b7820, 0x35dd: 0x406b7a20, 0x35de: 0x406b7c20, 0x35df: 0x406b7e20,
+-	0x35e0: 0x406b8020, 0x35e1: 0x406b8220, 0x35e2: 0x406b8420, 0x35e3: 0x406b8620,
+-	0x35e4: 0x406b8820, 0x35e5: 0x406b8a20, 0x35e6: 0x406b8c20, 0x35e7: 0x406b8e20,
+-	0x35e8: 0x406b9020, 0x35e9: 0x406b9220, 0x35ea: 0x406b9420, 0x35eb: 0x406b9620,
+-	0x35ec: 0x406b9820, 0x35ed: 0x406b9a20, 0x35ee: 0x406b9c20, 0x35ef: 0x406b9e20,
+-	0x35f0: 0x406ba020, 0x35f1: 0x406ba220, 0x35f2: 0x406ba420, 0x35f3: 0x406ba620,
+-	0x35f4: 0x406ba820, 0x35f5: 0x406baa20, 0x35f6: 0x406bac20, 0x35f7: 0x406bae20,
+-	0x35f8: 0x406bb020, 0x35f9: 0x406bb220, 0x35fa: 0x406bb420, 0x35fb: 0x406bb620,
+-	0x35fc: 0x406bb820, 0x35fd: 0x406bba20, 0x35fe: 0x406bbc20, 0x35ff: 0x406bbe20,
+-	// Block 0xd8, offset 0x3600
+-	0x3600: 0x406bc020, 0x3601: 0x406bc220, 0x3602: 0x406bc420, 0x3603: 0x406bc620,
+-	0x3604: 0x406bc820, 0x3605: 0x406bca20, 0x3606: 0x406bcc20, 0x3607: 0x406bce20,
+-	0x3608: 0x406bd020, 0x3609: 0x406bd220, 0x360a: 0x406bd420, 0x360b: 0x406bd620,
+-	0x360c: 0x406bd820, 0x360d: 0x406bda20, 0x360e: 0x406bdc20, 0x360f: 0x406bde20,
+-	0x3610: 0x406be020, 0x3611: 0x406be220, 0x3612: 0x406be420, 0x3613: 0x406be620,
+-	0x3614: 0x406be820, 0x3615: 0x406bea20, 0x3616: 0x406bec20, 0x3617: 0x406bee20,
+-	0x3618: 0x406bf020, 0x3619: 0x406bf220, 0x361a: 0x406bf420, 0x361b: 0x406bf620,
+-	0x361c: 0x406bf820, 0x361d: 0x406bfa20, 0x361e: 0x406bfc20, 0x361f: 0x406bfe20,
+-	0x3620: 0x406c0020, 0x3621: 0x406c0220, 0x3622: 0x406c0420, 0x3623: 0x406c0620,
+-	0x3624: 0x406c0820, 0x3625: 0x406c0a20, 0x3626: 0x406c0c20, 0x3627: 0x406c0e20,
+-	0x3628: 0x406c1020, 0x3629: 0x406c1220, 0x362a: 0x406c1420, 0x362b: 0x406c1620,
+-	0x362c: 0x406c1820, 0x362d: 0x406c1a20, 0x362e: 0x406c1c20, 0x362f: 0x406c1e20,
+-	0x3630: 0x406c2020, 0x3631: 0x406c2220, 0x3632: 0x406c2420, 0x3633: 0x406c2620,
+-	0x3634: 0x406c2820, 0x3635: 0x406c2a20, 0x3636: 0x406c2c20, 0x3637: 0x406c2e20,
+-	0x3638: 0x406c3020, 0x3639: 0x406c3220, 0x363a: 0x406c3420, 0x363b: 0x406c3620,
+-	0x363c: 0x406c3820, 0x363d: 0x406c3a20, 0x363e: 0x406c3c20, 0x363f: 0x406c3e20,
+-	// Block 0xd9, offset 0x3640
+-	0x3640: 0x406c4020, 0x3641: 0x406c4220, 0x3642: 0x406c4420, 0x3643: 0x406c4620,
+-	0x3644: 0x406c4820, 0x3645: 0x406c4a20, 0x3646: 0x406c4c20, 0x3647: 0x406c4e20,
+-	0x3648: 0x406c5020, 0x3649: 0x406c5220, 0x364a: 0x406c5420, 0x364b: 0x406c5620,
+-	0x364c: 0x406c5820, 0x364d: 0x406c5a20, 0x364e: 0x406c5c20, 0x364f: 0x406c5e20,
+-	0x3650: 0x406c6020, 0x3651: 0x406c6220, 0x3652: 0x406c6420, 0x3653: 0x406c6620,
+-	0x3654: 0x406c6820, 0x3655: 0x406c6a20, 0x3656: 0x406c6c20, 0x3657: 0x406c6e20,
+-	0x3658: 0x406c7020, 0x3659: 0x406c7220, 0x365a: 0x406c7420, 0x365b: 0x406c7620,
+-	0x365c: 0x406c7820, 0x365d: 0x406c7a20, 0x365e: 0x406c7c20, 0x365f: 0x406c7e20,
+-	0x3660: 0x406c8020, 0x3661: 0x406c8220, 0x3662: 0x406c8420, 0x3663: 0x406c8620,
+-	0x3664: 0x406c8820, 0x3665: 0x406c8a20, 0x3666: 0x406c8c20, 0x3667: 0x406c8e20,
+-	0x3668: 0x406c9020, 0x3669: 0x406c9220, 0x366a: 0x406c9420, 0x366b: 0x406c9620,
+-	0x366c: 0x406c9820, 0x366d: 0x406c9a20, 0x366e: 0x406c9c20, 0x366f: 0x406c9e20,
+-	0x3670: 0x406ca020, 0x3671: 0x406ca220, 0x3672: 0x406ca420, 0x3673: 0x406ca620,
+-	0x3674: 0x406ca820, 0x3675: 0x406caa20, 0x3676: 0x406cac20, 0x3677: 0x406cae20,
+-	0x3678: 0x406cb020, 0x3679: 0x406cb220, 0x367a: 0x406cb420, 0x367b: 0x406cb620,
+-	0x367c: 0x406cb820, 0x367d: 0x406cba20, 0x367e: 0x406cbc20, 0x367f: 0x406cbe20,
+-	// Block 0xda, offset 0x3680
+-	0x3680: 0x406cc020, 0x3681: 0x406cc220, 0x3682: 0x406cc420, 0x3683: 0x406cc620,
+-	0x3684: 0x406cc820, 0x3685: 0x406cca20, 0x3686: 0x406ccc20, 0x3687: 0x406cce20,
+-	0x3688: 0x406cd020, 0x3689: 0x406cd220, 0x368a: 0x406cd420, 0x368b: 0x406cd620,
+-	0x368c: 0x406cd820, 0x368d: 0x406cda20, 0x368e: 0x406cdc20, 0x368f: 0x406cde20,
+-	0x3690: 0x406ce020, 0x3691: 0x406ce220, 0x3692: 0x406ce420, 0x3693: 0x406ce620,
+-	0x3694: 0x406ce820, 0x3695: 0x406cea20, 0x3696: 0x406cec20, 0x3697: 0x406cee20,
+-	0x3698: 0x406cf020, 0x3699: 0x406cf220, 0x369a: 0x406cf420, 0x369b: 0x406cf620,
+-	0x369c: 0x406cf820, 0x369d: 0x406cfa20, 0x369e: 0x406cfc20, 0x369f: 0x406cfe20,
+-	0x36a0: 0x406d0020, 0x36a1: 0x406d0220, 0x36a2: 0x406d0420, 0x36a3: 0x406d0620,
+-	0x36a4: 0x406d0820, 0x36a5: 0x406d0a20, 0x36a6: 0x406d0c20, 0x36a7: 0x406d0e20,
+-	0x36a8: 0x406d1020, 0x36a9: 0x406d1220, 0x36aa: 0x406d1420, 0x36ab: 0x406d1620,
+-	0x36ac: 0x406d1820, 0x36ad: 0x406d1a20, 0x36ae: 0x406d1c20, 0x36af: 0x406d1e20,
+-	0x36b0: 0x406d2020, 0x36b1: 0x406d2220, 0x36b2: 0x406d2420, 0x36b3: 0x406d2620,
+-	0x36b4: 0x406d2820, 0x36b5: 0x406d2a20, 0x36b6: 0x406d2c20, 0x36b7: 0x406d2e20,
+-	0x36b8: 0x406d3020, 0x36b9: 0x406d3220, 0x36ba: 0x406d3420, 0x36bb: 0x406d3620,
+-	0x36bc: 0x406d3820, 0x36bd: 0x406d3a20, 0x36be: 0x406d3c20, 0x36bf: 0x406d3e20,
+-	// Block 0xdb, offset 0x36c0
+-	0x36c0: 0x406d4020, 0x36c1: 0x406d4220, 0x36c2: 0x406d4420, 0x36c3: 0x406d4620,
+-	0x36c4: 0x406d4820, 0x36c5: 0x406d4a20, 0x36c6: 0x406d4c20, 0x36c7: 0x406d4e20,
+-	0x36c8: 0x406d5020, 0x36c9: 0x406d5220, 0x36ca: 0x406d5420, 0x36cb: 0x406d5620,
+-	0x36cc: 0x406d5820, 0x36cd: 0x406d5a20, 0x36ce: 0x406d5c20, 0x36cf: 0x406d5e20,
+-	0x36d0: 0x406d6020, 0x36d1: 0x406d6220, 0x36d2: 0x406d6420, 0x36d3: 0x406d6620,
+-	0x36d4: 0x406d6820, 0x36d5: 0x406d6a20, 0x36d6: 0x406d6c20, 0x36d7: 0x406d6e20,
+-	0x36d8: 0x406d7020, 0x36d9: 0x406d7220, 0x36da: 0x406d7420, 0x36db: 0x406d7620,
+-	0x36dc: 0x406d7820, 0x36dd: 0x406d7a20, 0x36de: 0x406d7c20, 0x36df: 0x406d7e20,
+-	0x36e0: 0x406d8020, 0x36e1: 0x406d8220, 0x36e2: 0x406d8420, 0x36e3: 0x406d8620,
+-	0x36e4: 0x406d8820, 0x36e5: 0x406d8a20, 0x36e6: 0x406d8c20, 0x36e7: 0x406d8e20,
+-	0x36e8: 0x406d9020, 0x36e9: 0x406d9220, 0x36ea: 0x406d9420, 0x36eb: 0x406d9620,
+-	0x36ec: 0x406d9820, 0x36ed: 0x406d9a20, 0x36ee: 0x406d9c20, 0x36ef: 0x406d9e20,
+-	0x36f0: 0x406da020, 0x36f1: 0x406da220, 0x36f2: 0x406da420, 0x36f3: 0x406da620,
+-	0x36f4: 0x406da820, 0x36f5: 0x406daa20, 0x36f6: 0x406dac20, 0x36f7: 0x406dae20,
+-	0x36f8: 0x406db020, 0x36f9: 0x406db220, 0x36fa: 0x406db420, 0x36fb: 0x406db620,
+-	0x36fc: 0x406db820, 0x36fd: 0x406dba20, 0x36fe: 0x406dbc20, 0x36ff: 0x406dbe20,
+-	// Block 0xdc, offset 0x3700
+-	0x3700: 0x406dc020, 0x3701: 0x406dc220, 0x3702: 0x406dc420, 0x3703: 0x406dc620,
+-	0x3704: 0x406dc820, 0x3705: 0x406dca20, 0x3706: 0x406dcc20, 0x3707: 0x406dce20,
+-	0x3708: 0x406dd020, 0x3709: 0x406dd220, 0x370a: 0x406dd420, 0x370b: 0x406dd620,
+-	0x370c: 0x406dd820, 0x370d: 0x406dda20, 0x370e: 0x406ddc20, 0x370f: 0x406dde20,
+-	0x3710: 0x406de020, 0x3711: 0x406de220, 0x3712: 0x406de420, 0x3713: 0x406de620,
+-	0x3714: 0x406de820, 0x3715: 0x406dea20, 0x3716: 0x406dec20, 0x3717: 0x406dee20,
+-	0x3718: 0x406df020, 0x3719: 0x406df220, 0x371a: 0x406df420, 0x371b: 0x406df620,
+-	0x371c: 0x406df820, 0x371d: 0x406dfa20, 0x371e: 0x406dfc20, 0x371f: 0x406dfe20,
+-	0x3720: 0x406e0020, 0x3721: 0x406e0220, 0x3722: 0x406e0420, 0x3723: 0x406e0620,
+-	0x3724: 0x406e0820, 0x3725: 0x406e0a20, 0x3726: 0x406e0c20, 0x3727: 0x406e0e20,
+-	0x3728: 0x406e1020, 0x3729: 0x406e1220, 0x372a: 0x406e1420, 0x372b: 0x406e1620,
+-	0x372c: 0x406e1820, 0x372d: 0x406e1a20, 0x372e: 0x406e1c20, 0x372f: 0x406e1e20,
+-	0x3730: 0x406e2020, 0x3731: 0x406e2220, 0x3732: 0x406e2420, 0x3733: 0x406e2620,
+-	0x3734: 0x406e2820, 0x3735: 0x406e2a20, 0x3736: 0x406e2c20, 0x3737: 0x406e2e20,
+-	0x3738: 0x406e3020, 0x3739: 0x406e3220, 0x373a: 0x406e3420, 0x373b: 0x406e3620,
+-	0x373c: 0x406e3820, 0x373d: 0x406e3a20, 0x373e: 0x406e3c20, 0x373f: 0x406e3e20,
+-	// Block 0xdd, offset 0x3740
+-	0x3740: 0x406e4020, 0x3741: 0x406e4220, 0x3742: 0x406e4420, 0x3743: 0x406e4620,
+-	0x3744: 0x406e4820, 0x3745: 0x406e4a20, 0x3746: 0x406e4c20, 0x3747: 0x406e4e20,
+-	0x3748: 0x406e5020, 0x3749: 0x406e5220, 0x374a: 0x406e5420, 0x374b: 0x406e5620,
+-	0x374c: 0x406e5820, 0x374d: 0x406e5a20, 0x374e: 0x406e5c20, 0x374f: 0x406e5e20,
+-	0x3750: 0x406e6020, 0x3751: 0x406e6220, 0x3752: 0x406e6420, 0x3753: 0x406e6620,
+-	0x3754: 0x406e6820, 0x3755: 0x406e6a20, 0x3756: 0x406e6c20, 0x3757: 0x406e6e20,
+-	0x3758: 0x406e7020, 0x3759: 0x406e7220, 0x375a: 0x406e7420, 0x375b: 0x406e7620,
+-	0x375c: 0x406e7820, 0x375d: 0x406e7a20, 0x375e: 0x406e7c20, 0x375f: 0x406e7e20,
+-	0x3760: 0x406e8020, 0x3761: 0x406e8220, 0x3762: 0x406e8420, 0x3763: 0x406e8620,
+-	0x3764: 0x406e8820, 0x3765: 0x406e8a20, 0x3766: 0x406e8c20, 0x3767: 0x406e8e20,
+-	0x3768: 0x406e9020, 0x3769: 0x406e9220, 0x376a: 0x406e9420, 0x376b: 0x406e9620,
+-	0x376c: 0x406e9820, 0x376d: 0x406e9a20, 0x376e: 0x406e9c20, 0x376f: 0x406e9e20,
+-	0x3770: 0x406ea020, 0x3771: 0x406ea220, 0x3772: 0x406ea420, 0x3773: 0x406ea620,
+-	0x3774: 0x406ea820, 0x3775: 0x406eaa20, 0x3776: 0x406eac20, 0x3777: 0x406eae20,
+-	0x3778: 0x406eb020, 0x3779: 0x406eb220, 0x377a: 0x406eb420, 0x377b: 0x406eb620,
+-	0x377c: 0x406eb820, 0x377d: 0x406eba20, 0x377e: 0x406ebc20, 0x377f: 0x406ebe20,
+-	// Block 0xde, offset 0x3780
+-	0x3780: 0x406ec020, 0x3781: 0x406ec220, 0x3782: 0x406ec420, 0x3783: 0x406ec620,
+-	0x3784: 0x406ec820, 0x3785: 0x406eca20, 0x3786: 0x406ecc20, 0x3787: 0x406ece20,
+-	0x3788: 0x406ed020, 0x3789: 0x406ed220, 0x378a: 0x406ed420, 0x378b: 0x406ed620,
+-	0x378c: 0x406ed820, 0x378d: 0x406eda20, 0x378e: 0x406edc20, 0x378f: 0x406ede20,
+-	0x3790: 0x406ee020, 0x3791: 0x406ee220, 0x3792: 0x406ee420, 0x3793: 0x406ee620,
+-	0x3794: 0x406ee820, 0x3795: 0x406eea20, 0x3796: 0x406eec20, 0x3797: 0x406eee20,
+-	0x3798: 0x406ef020, 0x3799: 0x406ef220, 0x379a: 0x406ef420, 0x379b: 0x406ef620,
+-	0x379c: 0x406ef820, 0x379d: 0x406efa20, 0x379e: 0x406efc20, 0x379f: 0x406efe20,
+-	0x37a0: 0x406f0020, 0x37a1: 0x406f0220, 0x37a2: 0x406f0420, 0x37a3: 0x406f0620,
+-	0x37a4: 0x406f0820, 0x37a5: 0x406f0a20, 0x37a6: 0x406f0c20, 0x37a7: 0x406f0e20,
+-	0x37a8: 0x406f1020, 0x37a9: 0x406f1220, 0x37aa: 0x406f1420, 0x37ab: 0x406f1620,
+-	0x37ac: 0x406f1820, 0x37ad: 0x406f1a20, 0x37ae: 0x406f1c20, 0x37af: 0x406f1e20,
+-	0x37b0: 0x406f2020, 0x37b1: 0x406f2220, 0x37b2: 0x406f2420, 0x37b3: 0x406f2620,
+-	0x37b4: 0x406f2820, 0x37b5: 0x406f2a20, 0x37b6: 0x406f2c20, 0x37b7: 0x406f2e20,
+-	0x37b8: 0x406f3020, 0x37b9: 0x406f3220, 0x37ba: 0x406f3420, 0x37bb: 0x406f3620,
+-	0x37bc: 0x406f3820, 0x37bd: 0x406f3a20, 0x37be: 0x406f3c20, 0x37bf: 0x406f3e20,
+-	// Block 0xdf, offset 0x37c0
+-	0x37c0: 0x406f4020, 0x37c1: 0x406f4220, 0x37c2: 0x406f4420, 0x37c3: 0x406f4620,
+-	0x37c4: 0x406f4820, 0x37c5: 0x406f4a20, 0x37c6: 0x406f4c20, 0x37c7: 0x406f4e20,
+-	0x37c8: 0x406f5020, 0x37c9: 0x406f5220, 0x37ca: 0x406f5420, 0x37cb: 0x406f5620,
+-	0x37cc: 0x406f5820,
+-	0x37d0: 0x401a9020, 0x37d1: 0x401a9220, 0x37d2: 0x401a9420, 0x37d3: 0x401a9620,
+-	0x37d4: 0x401a9820, 0x37d5: 0x401a9a20, 0x37d6: 0x401a9c20, 0x37d7: 0x401a9e20,
+-	0x37d8: 0x401aa020, 0x37d9: 0x401aa220, 0x37da: 0x401aa420, 0x37db: 0x401aa620,
+-	0x37dc: 0x401aa820, 0x37dd: 0x401aaa20, 0x37de: 0x401aac20, 0x37df: 0x401aae20,
+-	0x37e0: 0x401ab020, 0x37e1: 0x401ab220, 0x37e2: 0x401ab420, 0x37e3: 0x401ab620,
+-	0x37e4: 0x401ab820, 0x37e5: 0x401aba20, 0x37e6: 0x401abc20, 0x37e7: 0x401abe20,
+-	0x37e8: 0x401ac020, 0x37e9: 0x401ac220, 0x37ea: 0x401ac420, 0x37eb: 0x401ac620,
+-	0x37ec: 0x401ac820, 0x37ed: 0x401aca20, 0x37ee: 0x401acc20, 0x37ef: 0x401ace20,
+-	0x37f0: 0x401ad020, 0x37f1: 0x401ad220, 0x37f2: 0x401ad420, 0x37f3: 0x401ad620,
+-	0x37f4: 0x401ad820, 0x37f5: 0x401ada20, 0x37f6: 0x401adc20, 0x37f7: 0x401ade20,
+-	0x37f8: 0x401ae020, 0x37f9: 0x401ae220, 0x37fa: 0x401ae420, 0x37fb: 0x401ae620,
+-	0x37fc: 0x401ae820, 0x37fd: 0x401aea20, 0x37fe: 0x401aec20, 0x37ff: 0x401aee20,
+-	// Block 0xe0, offset 0x3800
+-	0x3800: 0x401af020, 0x3801: 0x401af220, 0x3802: 0x401af420, 0x3803: 0x401af620,
+-	0x3804: 0x401af820, 0x3805: 0x401afa20, 0x3806: 0x401afc20,
+-	0x3810: 0x406f6620, 0x3811: 0x406f6820, 0x3812: 0x406f6a20, 0x3813: 0x406f6c20,
+-	0x3814: 0x406f6e20, 0x3815: 0x406f7020, 0x3816: 0x406f7220, 0x3817: 0x406f7420,
+-	0x3818: 0x406f7620, 0x3819: 0x406f7820, 0x381a: 0x406f7a20, 0x381b: 0x406f7c20,
+-	0x381c: 0x406f7e20, 0x381d: 0x406f8020, 0x381e: 0x406f8220, 0x381f: 0x406f8420,
+-	0x3820: 0x406f8620, 0x3821: 0x406f8820, 0x3822: 0x406f8a20, 0x3823: 0x406f8c20,
+-	0x3824: 0x406f8e20, 0x3825: 0x406f9020, 0x3826: 0x406f9220, 0x3827: 0x406f9420,
+-	0x3828: 0x406f9620, 0x3829: 0x406f9820, 0x382a: 0x406f9e20, 0x382b: 0x406f9a20,
+-	0x382c: 0x406fa020, 0x382d: 0x406f9c20, 0x382e: 0x406fa220, 0x382f: 0x406fa420,
+-	0x3830: 0x406fa620, 0x3831: 0x406fa820, 0x3832: 0x406faa20, 0x3833: 0x406fac20,
+-	0x3834: 0x406fae20, 0x3835: 0x406fb020, 0x3836: 0x406fb220, 0x3837: 0x406fb420,
+-	0x3838: 0x406f5a20, 0x3839: 0x406f5c20, 0x383a: 0x406f5e20, 0x383b: 0x406f6020,
+-	0x383c: 0x406f6420, 0x383d: 0x406f6220, 0x383e: 0x40025620, 0x383f: 0x4002fe20,
+-	// Block 0xe1, offset 0x3840
+-	0x3840: 0x405b8020, 0x3841: 0x405b8220, 0x3842: 0x405b8420, 0x3843: 0x405b8620,
+-	0x3844: 0x405b8820, 0x3845: 0x405b8a20, 0x3846: 0x405b8c20, 0x3847: 0x405b8e20,
+-	0x3848: 0x405b9020, 0x3849: 0x405b9220, 0x384a: 0x405b9420, 0x384b: 0x405b9620,
+-	0x384c: 0x405b9820, 0x384d: 0x405b9a20, 0x384e: 0x405b9c20, 0x384f: 0x405b9e20,
+-	0x3850: 0x405ba020, 0x3851: 0x405ba220, 0x3852: 0x405ba420, 0x3853: 0x405ba620,
+-	0x3854: 0x405ba820, 0x3855: 0x405baa20, 0x3856: 0x405bac20, 0x3857: 0x405bae20,
+-	0x3858: 0x405bb020, 0x3859: 0x405bb220, 0x385a: 0x405bb420, 0x385b: 0x405bb620,
+-	0x385c: 0x405bb820, 0x385d: 0x405bba20, 0x385e: 0x405bbc20, 0x385f: 0x405bbe20,
+-	0x3860: 0x405bc020, 0x3861: 0x405bc220, 0x3862: 0x405bc420, 0x3863: 0x405bc620,
+-	0x3864: 0x405bc820, 0x3865: 0x405bca20, 0x3866: 0x405bcc20, 0x3867: 0x405bce20,
+-	0x3868: 0x405bd020, 0x3869: 0x405bd220, 0x386a: 0x405bd420, 0x386b: 0x405bd620,
+-	0x386c: 0x405bd820, 0x386d: 0x405bda20, 0x386e: 0x405bdc20, 0x386f: 0x405bde20,
+-	0x3870: 0x405be020, 0x3871: 0x405be220, 0x3872: 0x405be420, 0x3873: 0x405be620,
+-	0x3874: 0x405be820, 0x3875: 0x405bea20, 0x3876: 0x405bec20, 0x3877: 0x405bee20,
+-	0x3878: 0x405bf020, 0x3879: 0x405bf220, 0x387a: 0x405bf420, 0x387b: 0x405bf620,
+-	0x387c: 0x405bf820, 0x387d: 0x405bfa20, 0x387e: 0x405bfc20, 0x387f: 0x405bfe20,
+-	// Block 0xe2, offset 0x3880
+-	0x3880: 0x405c0020, 0x3881: 0x405c0220, 0x3882: 0x405c0420, 0x3883: 0x405c0620,
+-	0x3884: 0x405c0820, 0x3885: 0x405c0a20, 0x3886: 0x405c0c20, 0x3887: 0x405c0e20,
+-	0x3888: 0x405c1020, 0x3889: 0x405c1220, 0x388a: 0x405c1420, 0x388b: 0x405c1620,
+-	0x388c: 0x405c1820, 0x388d: 0x405c1a20, 0x388e: 0x405c1c20, 0x388f: 0x405c1e20,
+-	0x3890: 0x405c2020, 0x3891: 0x405c2220, 0x3892: 0x405c2420, 0x3893: 0x405c2620,
+-	0x3894: 0x405c2820, 0x3895: 0x405c2a20, 0x3896: 0x405c2c20, 0x3897: 0x405c2e20,
+-	0x3898: 0x405c3020, 0x3899: 0x405c3220, 0x389a: 0x405c3420, 0x389b: 0x405c3620,
+-	0x389c: 0x405c3820, 0x389d: 0x405c3a20, 0x389e: 0x405c3c20, 0x389f: 0x405c3e20,
+-	0x38a0: 0x405c4020, 0x38a1: 0x405c4220, 0x38a2: 0x405c4420, 0x38a3: 0x405c4620,
+-	0x38a4: 0x405c4820, 0x38a5: 0x405c4a20, 0x38a6: 0x405c4c20, 0x38a7: 0x405c4e20,
+-	0x38a8: 0x405c5020, 0x38a9: 0x405c5220, 0x38aa: 0x405c5420, 0x38ab: 0x405c5620,
+-	0x38ac: 0x405c5820, 0x38ad: 0x405c5a20, 0x38ae: 0x405c5c20, 0x38af: 0x405c5e20,
+-	0x38b0: 0x405c6020, 0x38b1: 0x405c6220, 0x38b2: 0x405c6420, 0x38b3: 0x405c6620,
+-	0x38b4: 0x405c6820, 0x38b5: 0x405c6a20, 0x38b6: 0x405c6c20, 0x38b7: 0x405c6e20,
+-	0x38b8: 0x405c7020, 0x38b9: 0x405c7220, 0x38ba: 0x405c7420, 0x38bb: 0x405c7620,
+-	0x38bc: 0x405c7820, 0x38bd: 0x405c7a20, 0x38be: 0x405c7c20, 0x38bf: 0x405c7e20,
+-	// Block 0xe3, offset 0x38c0
+-	0x38c0: 0x405c8020, 0x38c1: 0x405c8220, 0x38c2: 0x405c8420, 0x38c3: 0x405c8620,
+-	0x38c4: 0x405c8820, 0x38c5: 0x405c8a20, 0x38c6: 0x405c8c20, 0x38c7: 0x405c8e20,
+-	0x38c8: 0x405c9020, 0x38c9: 0x405c9220, 0x38ca: 0x405c9420, 0x38cb: 0x405c9620,
+-	0x38cc: 0x405c9820, 0x38cd: 0x405c9a20, 0x38ce: 0x405c9c20, 0x38cf: 0x405c9e20,
+-	0x38d0: 0x405ca020, 0x38d1: 0x405ca220, 0x38d2: 0x405ca420, 0x38d3: 0x405ca620,
+-	0x38d4: 0x405ca820, 0x38d5: 0x405caa20, 0x38d6: 0x405cac20, 0x38d7: 0x405cae20,
+-	0x38d8: 0x405cb020, 0x38d9: 0x405cb220, 0x38da: 0x405cb420, 0x38db: 0x405cb620,
+-	0x38dc: 0x405cb820, 0x38dd: 0x405cba20, 0x38de: 0x405cbc20, 0x38df: 0x405cbe20,
+-	0x38e0: 0x405cc020, 0x38e1: 0x405cc220, 0x38e2: 0x405cc420, 0x38e3: 0x405cc620,
+-	0x38e4: 0x405cc820, 0x38e5: 0x405cca20, 0x38e6: 0x405ccc20, 0x38e7: 0x405cce20,
+-	0x38e8: 0x405cd020, 0x38e9: 0x405cd220, 0x38ea: 0x405cd420, 0x38eb: 0x405cd620,
+-	0x38ec: 0x405cd820, 0x38ed: 0x405cda20, 0x38ee: 0x405cdc20, 0x38ef: 0x405cde20,
+-	0x38f0: 0x405ce020, 0x38f1: 0x405ce220, 0x38f2: 0x405ce420, 0x38f3: 0x405ce620,
+-	0x38f4: 0x405ce820, 0x38f5: 0x405cea20, 0x38f6: 0x405cec20, 0x38f7: 0x405cee20,
+-	0x38f8: 0x405cf020, 0x38f9: 0x405cf220, 0x38fa: 0x405cf420, 0x38fb: 0x405cf620,
+-	0x38fc: 0x405cf820, 0x38fd: 0x405cfa20, 0x38fe: 0x405cfc20, 0x38ff: 0x405cfe20,
+-	// Block 0xe4, offset 0x3900
+-	0x3900: 0x405d0020, 0x3901: 0x405d0220, 0x3902: 0x405d0420, 0x3903: 0x405d0620,
+-	0x3904: 0x405d0820, 0x3905: 0x405d0a20, 0x3906: 0x405d0c20, 0x3907: 0x405d0e20,
+-	0x3908: 0x405d1020, 0x3909: 0x405d1220, 0x390a: 0x405d1420, 0x390b: 0x405d1620,
+-	0x390c: 0x405d1820, 0x390d: 0x405d1a20, 0x390e: 0x405d1c20, 0x390f: 0x405d1e20,
+-	0x3910: 0x405d2020, 0x3911: 0x405d2220, 0x3912: 0x405d2420, 0x3913: 0x405d2620,
+-	0x3914: 0x405d2820, 0x3915: 0x405d2a20, 0x3916: 0x405d2c20, 0x3917: 0x405d2e20,
+-	0x3918: 0x405d3020, 0x3919: 0x405d3220, 0x391a: 0x405d3420, 0x391b: 0x405d3620,
+-	0x391c: 0x405d3820, 0x391d: 0x405d3a20, 0x391e: 0x405d3c20, 0x391f: 0x405d3e20,
+-	0x3920: 0x405d4020, 0x3921: 0x405d4220, 0x3922: 0x405d4420, 0x3923: 0x405d4620,
+-	0x3924: 0x405d4820, 0x3925: 0x405d4a20, 0x3926: 0x405d4c20, 0x3927: 0x405d4e20,
+-	0x3928: 0x405d5020, 0x3929: 0x405d5220, 0x392a: 0x405d5420, 0x392b: 0x405d5620,
+-	0x392c: 0x405d5820, 0x392d: 0x405d5a20, 0x392e: 0x405d5c20, 0x392f: 0x405d5e20,
+-	0x3930: 0x405d6020, 0x3931: 0x405d6220, 0x3932: 0x405d6420, 0x3933: 0x405d6620,
+-	0x3934: 0x405d6820, 0x3935: 0x405d6a20, 0x3936: 0x405d6c20, 0x3937: 0x405d6e20,
+-	0x3938: 0x405d7020, 0x3939: 0x405d7220, 0x393a: 0x405d7420, 0x393b: 0x405d7620,
+-	0x393c: 0x405d7820, 0x393d: 0x405d7a20, 0x393e: 0x405d7c20, 0x393f: 0x405d7e20,
+-	// Block 0xe5, offset 0x3940
+-	0x3940: 0x405d8020, 0x3941: 0x405d8220, 0x3942: 0x405d8420, 0x3943: 0x405d8620,
+-	0x3944: 0x405d8820, 0x3945: 0x405d8a20, 0x3946: 0x405d8c20, 0x3947: 0x405d8e20,
+-	0x3948: 0x405d9020, 0x3949: 0x405d9220, 0x394a: 0x405d9420, 0x394b: 0x405d9620,
+-	0x394c: 0x405d9820, 0x394d: 0x40025820, 0x394e: 0x40030020, 0x394f: 0x4002d820,
+-	0x3950: 0x005c3084, 0x3951: 0x005c5484, 0x3952: 0x005c8e84, 0x3953: 0xe00020fb,
+-	0x3954: 0xe00020fe, 0x3955: 0xe0002101, 0x3956: 0xe0002104, 0x3957: 0xe0002107,
+-	0x3958: 0xe000210a, 0x3959: 0xe000210d, 0x395a: 0xe0002110, 0x395b: 0xe0002113,
+-	0x395c: 0xe0002116, 0x395d: 0xe0002119, 0x395e: 0xe000211c, 0x395f: 0xe000211f,
+-	0x3960: 0xe00001cd, 0x3961: 0xe0000261, 0x3962: 0xe0000379, 0x3963: 0xe0000453,
+-	0x3964: 0xe0000528, 0x3965: 0xe00005f2, 0x3966: 0xe00006bd, 0x3967: 0xe0000765,
+-	0x3968: 0xe0000811, 0x3969: 0xe00008b6, 0x396a: 0x005c5c84, 0x396b: 0x005d2284,
+-	// Block 0xe6, offset 0x3980
+-	0x3980: 0x0033ec88, 0x3981: 0x4033ec20, 0x3982: 0x0033fa88, 0x3983: 0x4033fa20,
+-	0x3984: 0x00340488, 0x3985: 0x40340420, 0x3986: 0x00343488, 0x3987: 0x40343420,
+-	0x3988: 0x00344e88, 0x3989: 0x40344e20, 0x398a: 0x0035a288, 0x398b: 0x4035a220,
+-	0x398c: 0x0035f088, 0x398d: 0x4035f020, 0x398e: 0x00366e88, 0x398f: 0x40366e20,
+-	0x3990: 0x00367c88, 0x3991: 0x40367c20, 0x3992: 0x0036a688, 0x3993: 0x4036a620,
+-	0x3994: 0x0036c088, 0x3995: 0x4036c020, 0x3996: 0x0036c288, 0x3997: 0x4036c220,
+-	0x3998: 0x0036de88, 0x3999: 0x4036de20, 0x399a: 0x0036e888, 0x399b: 0x4036e820,
+-	0x399c: 0x0036f288, 0x399d: 0x4036f220, 0x399e: 0x00372488, 0x399f: 0x40372420,
+-	0x39a0: 0x00360a88, 0x39a1: 0x40360a20, 0x39a2: 0x00339e88, 0x39a3: 0x40339e20,
+-	0x39a4: 0x0034a288, 0x39a5: 0x4034a220, 0x39a6: 0x0034b888, 0x39a7: 0x4034b820,
+-	0x39a8: 0x0034ee8a, 0x39a9: 0x0034ee84, 0x39aa: 0x0034ee8a, 0x39ab: 0x0034ee84,
+-	0x39ac: 0x0034ee8a, 0x39ad: 0x0034ee84, 0x39ae: 0x0034ee84, 0x39af: 0xae608402,
+-	0x39b0: 0xa0000000, 0x39b1: 0xa0000000, 0x39b2: 0xa0000000, 0x39b3: 0x4004e020,
+-	0x39b4: 0x84e619e1, 0x39b5: 0x84e61a0a, 0x39b6: 0x84e61a1b, 0x39b7: 0x84e61ab9,
+-	0x39b8: 0x84e61b3a, 0x39b9: 0x84e61b3f, 0x39ba: 0x84e61b47, 0x39bb: 0x84e61af0,
+-	0x39bc: 0xae605f02, 0x39bd: 0xae605f02, 0x39be: 0x40054c20, 0x39bf: 0x40367220,
+-	// Block 0xe7, offset 0x39c0
+-	0x39c0: 0x00339488, 0x39c1: 0x40339420, 0x39c2: 0x00341288, 0x39c3: 0x40341220,
+-	0x39c4: 0x0033d288, 0x39c5: 0x4033d220, 0x39c6: 0x00364288, 0x39c7: 0x40364220,
+-	0x39c8: 0x00340e88, 0x39c9: 0x40340e20, 0x39ca: 0x00356088, 0x39cb: 0x40356020,
+-	0x39cc: 0x00355488, 0x39cd: 0x40355420, 0x39ce: 0x00360c88, 0x39cf: 0x40360c20,
+-	0x39d0: 0x00361688, 0x39d1: 0x40361620, 0x39d2: 0x00362088, 0x39d3: 0x40362020,
+-	0x39d4: 0x0035de88, 0x39d5: 0x4035de20, 0x39d6: 0x00366488, 0x39d7: 0x40366420,
+-	0x39df: 0x84e61b67,
+-	0x39e0: 0x405d9a20, 0x39e1: 0x405d9c20, 0x39e2: 0x405d9e20, 0x39e3: 0x405da020,
+-	0x39e4: 0x405da220, 0x39e5: 0x405da420, 0x39e6: 0x405da620, 0x39e7: 0x405da820,
+-	0x39e8: 0x405daa20, 0x39e9: 0x405dac20, 0x39ea: 0x405dae20, 0x39eb: 0x405db020,
+-	0x39ec: 0x405db220, 0x39ed: 0x405db420, 0x39ee: 0x405db620, 0x39ef: 0x405db820,
+-	0x39f0: 0x405dba20, 0x39f1: 0x405dbc20, 0x39f2: 0x405dbe20, 0x39f3: 0x405dc020,
+-	0x39f4: 0x405dc220, 0x39f5: 0x405dc420, 0x39f6: 0x405dc620, 0x39f7: 0x405dc820,
+-	0x39f8: 0x405dca20, 0x39f9: 0x405dcc20, 0x39fa: 0x405dce20, 0x39fb: 0x405dd020,
+-	0x39fc: 0x405dd220, 0x39fd: 0x405dd420, 0x39fe: 0x405dd620, 0x39ff: 0x405dd820,
+-	// Block 0xe8, offset 0x3a00
+-	0x3a00: 0x405dda20, 0x3a01: 0x405ddc20, 0x3a02: 0x405dde20, 0x3a03: 0x405de020,
+-	0x3a04: 0x405de220, 0x3a05: 0x405de420, 0x3a06: 0x405de620, 0x3a07: 0x405de820,
+-	0x3a08: 0x405dea20, 0x3a09: 0x405dec20, 0x3a0a: 0x405dee20, 0x3a0b: 0x405df020,
+-	0x3a0c: 0x405df220, 0x3a0d: 0x405df420, 0x3a0e: 0x405df620, 0x3a0f: 0x405df820,
+-	0x3a10: 0x405dfa20, 0x3a11: 0x405dfc20, 0x3a12: 0x405dfe20, 0x3a13: 0x405e0020,
+-	0x3a14: 0x405e0220, 0x3a15: 0x405e0420, 0x3a16: 0x405e0620, 0x3a17: 0x405e0820,
+-	0x3a18: 0x405e0a20, 0x3a19: 0x405e0c20, 0x3a1a: 0x405e0e20, 0x3a1b: 0x405e1020,
+-	0x3a1c: 0x405e1220, 0x3a1d: 0x405e1420, 0x3a1e: 0x405e1620, 0x3a1f: 0x405e1820,
+-	0x3a20: 0x405e1a20, 0x3a21: 0x405e1c20, 0x3a22: 0x405e1e20, 0x3a23: 0x405e2020,
+-	0x3a24: 0x405e2220, 0x3a25: 0x405e2420, 0x3a26: 0x405e2620, 0x3a27: 0x405e2820,
+-	0x3a28: 0x405e2a20, 0x3a29: 0x405e2c20, 0x3a2a: 0x405e2e20, 0x3a2b: 0x405e3020,
+-	0x3a2c: 0x405e3220, 0x3a2d: 0x405e3420, 0x3a2e: 0x405e3620, 0x3a2f: 0x405e3820,
+-	0x3a30: 0xae60ef02, 0x3a31: 0xae60f002, 0x3a32: 0x40038220, 0x3a33: 0x40030220,
+-	0x3a34: 0x4002b820, 0x3a35: 0x40025a20, 0x3a36: 0x40026a20, 0x3a37: 0x4002da20,
+-	// Block 0xe9, offset 0x3a40
+-	0x3a40: 0x4006ba20, 0x3a41: 0x4006bc20, 0x3a42: 0x4006be20, 0x3a43: 0x4006c020,
+-	0x3a44: 0x4006c220, 0x3a45: 0x4006c420, 0x3a46: 0x4006c620, 0x3a47: 0x4006c820,
+-	0x3a48: 0x4006ca20, 0x3a49: 0x4006cc20, 0x3a4a: 0x4006ce20, 0x3a4b: 0x4006d020,
+-	0x3a4c: 0x4006d220, 0x3a4d: 0x4006d420, 0x3a4e: 0x4006d620, 0x3a4f: 0x4006d820,
+-	0x3a50: 0x4006da20, 0x3a51: 0x4006dc20, 0x3a52: 0x4006de20, 0x3a53: 0x4006e020,
+-	0x3a54: 0x4006e220, 0x3a55: 0x4006e420, 0x3a56: 0x4006e620, 0x3a57: 0x4006e820,
+-	0x3a58: 0x4006ea20, 0x3a59: 0x4006ec20, 0x3a5a: 0x4006ee20, 0x3a5b: 0x4006f020,
+-	0x3a5c: 0x4006f220, 0x3a5d: 0x4006f420, 0x3a5e: 0x4006f620, 0x3a5f: 0x4006f820,
+-	0x3a60: 0x4006fa20, 0x3a61: 0x4006fc20, 0x3a62: 0x0031e488, 0x3a63: 0x4031e420,
+-	0x3a64: 0x0031f888, 0x3a65: 0x4031f820, 0x3a66: 0x002d8c88, 0x3a67: 0x402d8c20,
+-	0x3a68: 0xe0000fd5, 0x3a69: 0xe0000fd2, 0x3a6a: 0x0031ae88, 0x3a6b: 0x4031ae20,
+-	0x3a6c: 0x0031b088, 0x3a6d: 0x4031b020, 0x3a6e: 0x0031b288, 0x3a6f: 0x4031b220,
+-	0x3a70: 0x402d1020, 0x3a71: 0x402fee20, 0x3a72: 0xe00009cf, 0x3a73: 0xe00009cc,
+-	0x3a74: 0xe00009ff, 0x3a75: 0xe00009fc, 0x3a76: 0xe0000a05, 0x3a77: 0xe0000a02,
+-	0x3a78: 0xe0000a0e, 0x3a79: 0xe0000a0b, 0x3a7a: 0xe0000a15, 0x3a7b: 0xe0000a11,
+-	0x3a7c: 0xe0000a1c, 0x3a7d: 0xe0000a19, 0x3a7e: 0x002c6088, 0x3a7f: 0x402c6020,
+-	// Block 0xea, offset 0x3a80
+-	0x3a80: 0x002e1488, 0x3a81: 0x402e1420, 0x3a82: 0x002e1688, 0x3a83: 0x402e1620,
+-	0x3a84: 0x002e1888, 0x3a85: 0x402e1820, 0x3a86: 0x002e3288, 0x3a87: 0x402e3220,
+-	0x3a88: 0x002e3688, 0x3a89: 0x402e3620, 0x3a8a: 0x002f1888, 0x3a8b: 0x402f1820,
+-	0x3a8c: 0x002f0888, 0x3a8d: 0x402f0820, 0x3a8e: 0xe0000ea1, 0x3a8f: 0xe0000e9e,
+-	0x3a90: 0x002f3888, 0x3a91: 0x402f3820, 0x3a92: 0x002f4688, 0x3a93: 0x402f4620,
+-	0x3a94: 0x002f4888, 0x3a95: 0x402f4820, 0x3a96: 0x002f5e88, 0x3a97: 0x402f5e20,
+-	0x3a98: 0x002f6088, 0x3a99: 0x402f6020, 0x3a9a: 0x002f8a88, 0x3a9b: 0x402f8a20,
+-	0x3a9c: 0x002fe488, 0x3a9d: 0x402fe420, 0x3a9e: 0x0030c888, 0x3a9f: 0x4030c820,
+-	0x3aa0: 0xe00010c6, 0x3aa1: 0xe00010c3, 0x3aa2: 0x00316288, 0x3aa3: 0x40316220,
+-	0x3aa4: 0x00319088, 0x3aa5: 0x40319020, 0x3aa6: 0x00319288, 0x3aa7: 0x40319220,
+-	0x3aa8: 0x00319c88, 0x3aa9: 0x40319c20, 0x3aaa: 0x00319e88, 0x3aab: 0x40319e20,
+-	0x3aac: 0x0031a088, 0x3aad: 0x4031a020, 0x3aae: 0x0031a288, 0x3aaf: 0x4031a220,
+-	0x3ab0: 0x0031a294, 0x3ab1: 0x402c9420, 0x3ab2: 0x402e6620, 0x3ab3: 0x402e9c20,
+-	0x3ab4: 0x402ed820, 0x3ab5: 0x402fe020, 0x3ab6: 0x402fe220, 0x3ab7: 0x40306220,
+-	0x3ab8: 0x4031a420, 0x3ab9: 0xe0000abc, 0x3aba: 0xe0000ab9, 0x3abb: 0xe0000b92,
+-	0x3abc: 0xe0000b8f, 0x3abd: 0xe0000bdc, 0x3abe: 0x002d5688, 0x3abf: 0x402d5620,
+-	// Block 0xeb, offset 0x3ac0
+-	0x3ac0: 0x002e7088, 0x3ac1: 0x402e7020, 0x3ac2: 0xe0000f08, 0x3ac3: 0xe0000f05,
+-	0x3ac4: 0xe0000f6d, 0x3ac5: 0xe0000f6a, 0x3ac6: 0xe0000fb7, 0x3ac7: 0xe0000fb4,
+-	0x3ac8: 0x4006fe20, 0x3ac9: 0x40070020, 0x3aca: 0x40070220, 0x3acb: 0x0031e688,
+-	0x3acc: 0x4031e620, 0x3acd: 0x00308888, 0x3ace: 0x402e5c20,
+-	0x3ad0: 0x002ec488, 0x3ad1: 0x402ec420, 0x3ad2: 0x002c4c88, 0x3ad3: 0x402c4c20,
+-	0x3ae0: 0xe0000bd6, 0x3ae1: 0xe0000bd3, 0x3ae2: 0xe0000ca5, 0x3ae3: 0xe0000ca2,
+-	0x3ae4: 0xe0000d75, 0x3ae5: 0xe0000d72, 0x3ae6: 0xe0000ee2, 0x3ae7: 0xe0000edf,
+-	0x3ae8: 0xe0000f4d, 0x3ae9: 0xe0000f4a, 0x3aea: 0x002d8088,
+-	// Block 0xec, offset 0x3b00
+-	0x3b38: 0xf0001414, 0x3b39: 0xe0000e97, 0x3b3a: 0x4030a820, 0x3b3b: 0x402d2020,
+-	0x3b3c: 0x402f4a20, 0x3b3d: 0x402e9820, 0x3b3e: 0x402db220, 0x3b3f: 0x402e9a20,
+-	// Block 0xed, offset 0x3b40
+-	0x3b40: 0x4045aa20, 0x3b41: 0x4045ac20, 0x3b42: 0x4045ae20, 0x3b43: 0x4045b020,
+-	0x3b44: 0x4045b220, 0x3b45: 0x4045b420, 0x3b46: 0x820922db, 0x3b47: 0x4045b820,
+-	0x3b48: 0x4045ba20, 0x3b49: 0x4045bc20, 0x3b4a: 0x4045be20, 0x3b4b: 0xa000f302,
+-	0x3b4c: 0x4045c020, 0x3b4d: 0x4045c220, 0x3b4e: 0x4045c420, 0x3b4f: 0x4045c620,
+-	0x3b50: 0x4045c820, 0x3b51: 0x4045ca20, 0x3b52: 0x4045cc20, 0x3b53: 0x4045ce20,
+-	0x3b54: 0x4045d020, 0x3b55: 0x4045d220, 0x3b56: 0x4045d420, 0x3b57: 0x4045d620,
+-	0x3b58: 0x4045d820, 0x3b59: 0x4045da20, 0x3b5a: 0x4045dc20, 0x3b5b: 0x4045de20,
+-	0x3b5c: 0x4045e020, 0x3b5d: 0x4045e220, 0x3b5e: 0x4045e420, 0x3b5f: 0x4045e620,
+-	0x3b60: 0x4045e820, 0x3b61: 0x4045ea20, 0x3b62: 0x4045ec20, 0x3b63: 0x4045ee20,
+-	0x3b64: 0x4045f020, 0x3b65: 0x4045f220, 0x3b66: 0x4045f420, 0x3b67: 0x4045f620,
+-	0x3b68: 0x40075020, 0x3b69: 0x40075220, 0x3b6a: 0x40075420, 0x3b6b: 0x40075620,
+-	0x3b70: 0x40284820, 0x3b71: 0x40284a20, 0x3b72: 0x40284c20, 0x3b73: 0x40284e20,
+-	0x3b74: 0x40285020, 0x3b75: 0x40285220, 0x3b76: 0x40075820, 0x3b77: 0x40075a20,
+-	0x3b78: 0x4027f020, 0x3b79: 0x40075c20,
+-	// Block 0xee, offset 0x3b80
+-	0x3b80: 0x404baa20, 0x3b81: 0x404bac20, 0x3b82: 0x404bae20, 0x3b83: 0x404bb020,
+-	0x3b84: 0x404bb220, 0x3b85: 0x404bb420, 0x3b86: 0x404bb620, 0x3b87: 0x404bb820,
+-	0x3b88: 0x404bc220, 0x3b89: 0x404bc420, 0x3b8a: 0x404bc620, 0x3b8b: 0x404bc820,
+-	0x3b8c: 0x404bca20, 0x3b8d: 0x404bcc20, 0x3b8e: 0x404bce20, 0x3b8f: 0x404bd020,
+-	0x3b90: 0x404bd220, 0x3b91: 0x404bd420, 0x3b92: 0x404bd620, 0x3b93: 0x404bd820,
+-	0x3b94: 0x404bdc20, 0x3b95: 0x404bde20, 0x3b96: 0x404be020, 0x3b97: 0x404be220,
+-	0x3b98: 0x404be820, 0x3b99: 0x404bee20, 0x3b9a: 0x404bf020, 0x3b9b: 0x404bf420,
+-	0x3b9c: 0x404bf620, 0x3b9d: 0x404bfc20, 0x3b9e: 0x404c0620, 0x3b9f: 0x404c0820,
+-	0x3ba0: 0x404c0a20, 0x3ba1: 0x404c0c20, 0x3ba2: 0x404bfe20, 0x3ba3: 0x404c0020,
+-	0x3ba4: 0x404c0220, 0x3ba5: 0x404c0420, 0x3ba6: 0x404c0e20, 0x3ba7: 0x404bda20,
+-	0x3ba8: 0x404be420, 0x3ba9: 0x404bba20, 0x3baa: 0x404bbc20, 0x3bab: 0x404bbe20,
+-	0x3bac: 0x404bc020, 0x3bad: 0x404be620, 0x3bae: 0x404bf220, 0x3baf: 0x404bf820,
+-	0x3bb0: 0x404bfa20, 0x3bb1: 0x404bea20, 0x3bb2: 0x404bec20, 0x3bb3: 0x404c1020,
+-	0x3bb4: 0x4005e820, 0x3bb5: 0x4005ea20, 0x3bb6: 0x40031820, 0x3bb7: 0x40031a20,
+-	// Block 0xef, offset 0x3bc0
+-	0x3bc0: 0xa000f302, 0x3bc1: 0xa000f402, 0x3bc2: 0x4045f820, 0x3bc3: 0x4045fa20,
+-	0x3bc4: 0x4045fc20, 0x3bc5: 0x4045fe20, 0x3bc6: 0x40460020, 0x3bc7: 0x40460220,
+-	0x3bc8: 0x40460420, 0x3bc9: 0x40460620, 0x3bca: 0x40460820, 0x3bcb: 0x40460a20,
+-	0x3bcc: 0x40460c20, 0x3bcd: 0x40460e20, 0x3bce: 0x40461020, 0x3bcf: 0x40461220,
+-	0x3bd0: 0x40461420, 0x3bd1: 0x40461620, 0x3bd2: 0x40461820, 0x3bd3: 0x40461a20,
+-	0x3bd4: 0x40461c20, 0x3bd5: 0x40461e20, 0x3bd6: 0x40462020, 0x3bd7: 0x40462220,
+-	0x3bd8: 0x40462420, 0x3bd9: 0x40462620, 0x3bda: 0x40462820, 0x3bdb: 0x40462a20,
+-	0x3bdc: 0x40462c20, 0x3bdd: 0x40462e20, 0x3bde: 0x40463020, 0x3bdf: 0x40463220,
+-	0x3be0: 0x40463420, 0x3be1: 0x40463620, 0x3be2: 0x40463820, 0x3be3: 0x40463a20,
+-	0x3be4: 0x40463c20, 0x3be5: 0x40463e20, 0x3be6: 0x40464020, 0x3be7: 0x40464220,
+-	0x3be8: 0x40464420, 0x3be9: 0x40464620, 0x3bea: 0x40464820, 0x3beb: 0x40464a20,
+-	0x3bec: 0x40464c20, 0x3bed: 0x40464e20, 0x3bee: 0x40465020, 0x3bef: 0x40465220,
+-	0x3bf0: 0x40465420, 0x3bf1: 0x40465620, 0x3bf2: 0x40465820, 0x3bf3: 0x40465a20,
+-	0x3bf4: 0x40465c20, 0x3bf5: 0x40465e20, 0x3bf6: 0x40466020, 0x3bf7: 0x40466220,
+-	0x3bf8: 0x40466420, 0x3bf9: 0x40466620, 0x3bfa: 0x40466820, 0x3bfb: 0x40466a20,
+-	0x3bfc: 0x40466c20, 0x3bfd: 0x40466e20, 0x3bfe: 0x40467020, 0x3bff: 0x40467220,
+-	// Block 0xf0, offset 0x3c00
+-	0x3c00: 0x40467420, 0x3c01: 0x40467620, 0x3c02: 0x40467820, 0x3c03: 0x40467a20,
+-	0x3c04: 0x8209233e,
+-	0x3c0e: 0x40031020, 0x3c0f: 0x40031220,
+-	0x3c10: 0xe000018b, 0x3c11: 0xe000021c, 0x3c12: 0xe0000337, 0x3c13: 0xe0000411,
+-	0x3c14: 0xe00004e6, 0x3c15: 0xe00005b0, 0x3c16: 0xe000067b, 0x3c17: 0xe0000723,
+-	0x3c18: 0xe00007cf, 0x3c19: 0xe0000874,
+-	0x3c20: 0xae600000, 0x3c21: 0xae600000, 0x3c22: 0xae600000, 0x3c23: 0xae600000,
+-	0x3c24: 0xae600000, 0x3c25: 0xae600000, 0x3c26: 0xae600000, 0x3c27: 0xae600000,
+-	0x3c28: 0xae600000, 0x3c29: 0xae600000, 0x3c2a: 0xae600000, 0x3c2b: 0xae600000,
+-	0x3c2c: 0xae600000, 0x3c2d: 0xae600000, 0x3c2e: 0xae600000, 0x3c2f: 0xae600000,
+-	0x3c30: 0xae600000, 0x3c31: 0xae600000, 0x3c32: 0x40404620, 0x3c33: 0x00404684,
+-	0x3c34: 0x00404684, 0x3c35: 0x00404684, 0x3c36: 0x00404684, 0x3c37: 0x00404684,
+-	0x3c38: 0x40056e20, 0x3c39: 0x40057020, 0x3c3a: 0x40057220, 0x3c3b: 0x40404820,
+-	// Block 0xf1, offset 0x3c40
+-	0x3c40: 0xe00001a9, 0x3c41: 0xe000023d, 0x3c42: 0xe0000355, 0x3c43: 0xe000042f,
+-	0x3c44: 0xe0000504, 0x3c45: 0xe00005ce, 0x3c46: 0xe0000699, 0x3c47: 0xe0000741,
+-	0x3c48: 0xe00007ed, 0x3c49: 0xe0000892, 0x3c4a: 0x404dd220, 0x3c4b: 0x404dd420,
+-	0x3c4c: 0x404dd620, 0x3c4d: 0x404dd820, 0x3c4e: 0x404dda20, 0x3c4f: 0x404ddc20,
+-	0x3c50: 0x404dde20, 0x3c51: 0x404de020, 0x3c52: 0x404de220, 0x3c53: 0x404de420,
+-	0x3c54: 0x404de620, 0x3c55: 0x404de820, 0x3c56: 0x404dea20, 0x3c57: 0x404dec20,
+-	0x3c58: 0x404dee20, 0x3c59: 0x404df020, 0x3c5a: 0x404df220, 0x3c5b: 0x404df420,
+-	0x3c5c: 0x404df620, 0x3c5d: 0x404df820, 0x3c5e: 0x404dfa20, 0x3c5f: 0x404dfc20,
+-	0x3c60: 0x404dfe20, 0x3c61: 0x404e0020, 0x3c62: 0x404e0220, 0x3c63: 0x404e0420,
+-	0x3c64: 0x404e0620, 0x3c65: 0x404e0820, 0x3c66: 0x404e0a20, 0x3c67: 0x404e0c20,
+-	0x3c68: 0x404e0e20, 0x3c69: 0x404e1020, 0x3c6a: 0x404e1220, 0x3c6b: 0xadc10f02,
+-	0x3c6c: 0xadc11002, 0x3c6d: 0xadc11102, 0x3c6e: 0x4005f420, 0x3c6f: 0x40032020,
+-	0x3c70: 0x404d8a20, 0x3c71: 0x404d8c20, 0x3c72: 0x404d8e20, 0x3c73: 0x404d9020,
+-	0x3c74: 0x404d9220, 0x3c75: 0x404d9420, 0x3c76: 0x404d9620, 0x3c77: 0x404d9820,
+-	0x3c78: 0x404d9a20, 0x3c79: 0x404d9c20, 0x3c7a: 0x404d9e20, 0x3c7b: 0x404da020,
+-	0x3c7c: 0x404da220, 0x3c7d: 0x404da420, 0x3c7e: 0x404da620, 0x3c7f: 0x404da820,
+-	// Block 0xf2, offset 0x3c80
+-	0x3c80: 0x404daa20, 0x3c81: 0x404dac20, 0x3c82: 0x404dae20, 0x3c83: 0x404db020,
+-	0x3c84: 0x404db220, 0x3c85: 0x404db420, 0x3c86: 0x404db620, 0x3c87: 0x404db820,
+-	0x3c88: 0x404dba20, 0x3c89: 0x404dbc20, 0x3c8a: 0x404dbe20, 0x3c8b: 0x404dc020,
+-	0x3c8c: 0x404dc220, 0x3c8d: 0x404dc420, 0x3c8e: 0x404dc620, 0x3c8f: 0x404dc820,
+-	0x3c90: 0x404dca20, 0x3c91: 0x404dcc20, 0x3c92: 0x404dce20, 0x3c93: 0x820926e8,
+-	0x3c9f: 0x40038420,
+-	0x3ca0: 0x40636a20, 0x3ca1: 0x40636c20, 0x3ca2: 0x40636e20, 0x3ca3: 0x40637020,
+-	0x3ca4: 0x40637220, 0x3ca5: 0x40637420, 0x3ca6: 0x40637620, 0x3ca7: 0x40637820,
+-	0x3ca8: 0x40637a20, 0x3ca9: 0x40637c20, 0x3caa: 0x40637e20, 0x3cab: 0x40638020,
+-	0x3cac: 0x40638220, 0x3cad: 0x40638420, 0x3cae: 0x40638620, 0x3caf: 0x40638820,
+-	0x3cb0: 0x40638a20, 0x3cb1: 0x40638c20, 0x3cb2: 0x40638e20, 0x3cb3: 0x40639020,
+-	0x3cb4: 0x40639220, 0x3cb5: 0x40639420, 0x3cb6: 0x40639620, 0x3cb7: 0x40639820,
+-	0x3cb8: 0x40639a20, 0x3cb9: 0x40639c20, 0x3cba: 0x40639e20, 0x3cbb: 0x4063a020,
+-	0x3cbc: 0x4063a220,
+-	// Block 0xf3, offset 0x3cc0
+-	0x3cc0: 0xa000f202, 0x3cc1: 0xa000f302, 0x3cc2: 0xa000f802, 0x3cc3: 0xa000f402,
+-	0x3cc4: 0x4052b220, 0x3cc5: 0x4052b420, 0x3cc6: 0x4052b620, 0x3cc7: 0x4052b820,
+-	0x3cc8: 0x4052ba20, 0x3cc9: 0x4052bc20, 0x3cca: 0x4052be20, 0x3ccb: 0x4052c020,
+-	0x3ccc: 0x4052c220, 0x3ccd: 0x4052c420, 0x3cce: 0x4052c620, 0x3ccf: 0x4052c820,
+-	0x3cd0: 0x4052ca20, 0x3cd1: 0x4052cc20, 0x3cd2: 0x4052ce20, 0x3cd3: 0x4052d020,
+-	0x3cd4: 0x4052d220, 0x3cd5: 0x4052d420, 0x3cd6: 0x4052d620, 0x3cd7: 0x4052d820,
+-	0x3cd8: 0x4052da20, 0x3cd9: 0x4052dc20, 0x3cda: 0x4052de20, 0x3cdb: 0x4052e020,
+-	0x3cdc: 0x4052e220, 0x3cdd: 0x4052e420, 0x3cde: 0x4052e620, 0x3cdf: 0x4052e820,
+-	0x3ce0: 0x4052ea20, 0x3ce1: 0x4052ec20, 0x3ce2: 0x4052ee20, 0x3ce3: 0x4052f020,
+-	0x3ce4: 0x4052f220, 0x3ce5: 0x4052f420, 0x3ce6: 0x4052f620, 0x3ce7: 0x4052f820,
+-	0x3ce8: 0x4052fa20, 0x3ce9: 0x4052fc20, 0x3cea: 0x4052fe20, 0x3ceb: 0x40530220,
+-	0x3cec: 0x00530284, 0x3ced: 0x40530620, 0x3cee: 0x40530820, 0x3cef: 0x40530a20,
+-	0x3cf0: 0x40530c20, 0x3cf1: 0x40530e20, 0x3cf2: 0x40531020, 0x3cf3: 0xa070f102,
+-	0x3cf4: 0x40531220, 0x3cf5: 0x40532420, 0x3cf6: 0x40531620, 0x3cf7: 0x40531820,
+-	0x3cf8: 0x40531a20, 0x3cf9: 0x40531c20, 0x3cfa: 0x40532020, 0x3cfb: 0x40532220,
+-	0x3cfc: 0x40531420, 0x3cfd: 0x40531e20, 0x3cfe: 0x40530020, 0x3cff: 0x40530420,
+-	// Block 0xf4, offset 0x3d00
+-	0x3d00: 0x82092993, 0x3d01: 0x40036e20, 0x3d02: 0x40037020, 0x3d03: 0x40037220,
+-	0x3d04: 0x40037420, 0x3d05: 0x40037620, 0x3d06: 0x40037820, 0x3d07: 0x4002b020,
+-	0x3d08: 0x40033620, 0x3d09: 0x40033820, 0x3d0a: 0x40037a20, 0x3d0b: 0x40037c20,
+-	0x3d0c: 0x40037e20, 0x3d0d: 0x40038020, 0x3d0f: 0x4027c020,
+-	0x3d10: 0xe00001c1, 0x3d11: 0xe0000255, 0x3d12: 0xe000036d, 0x3d13: 0xe0000447,
+-	0x3d14: 0xe000051c, 0x3d15: 0xe00005e6, 0x3d16: 0xe00006b1, 0x3d17: 0xe0000759,
+-	0x3d18: 0xe0000805, 0x3d19: 0xe00008aa,
+-	0x3d1e: 0x4005f620, 0x3d1f: 0x4005f820,
+-	// Block 0xf5, offset 0x3d40
+-	0x3d40: 0x40519c20, 0x3d41: 0x40519e20, 0x3d42: 0x4051a020, 0x3d43: 0x4051a220,
+-	0x3d44: 0x4051a420, 0x3d45: 0x4051a620, 0x3d46: 0x4051a820, 0x3d47: 0x4051aa20,
+-	0x3d48: 0x4051ac20, 0x3d49: 0x4051ae20, 0x3d4a: 0x4051b020, 0x3d4b: 0x4051b220,
+-	0x3d4c: 0x4051b420, 0x3d4d: 0x4051b620, 0x3d4e: 0x4051b820, 0x3d4f: 0x4051ba20,
+-	0x3d50: 0x4051bc20, 0x3d51: 0x4051be20, 0x3d52: 0x4051c020, 0x3d53: 0x4051c220,
+-	0x3d54: 0x4051c420, 0x3d55: 0x4051c620, 0x3d56: 0x4051c820, 0x3d57: 0x4051ca20,
+-	0x3d58: 0x4051cc20, 0x3d59: 0x4051ce20, 0x3d5a: 0x4051d020, 0x3d5b: 0x4051d220,
+-	0x3d5c: 0x4051d420, 0x3d5d: 0x4051d620, 0x3d5e: 0x4051d820, 0x3d5f: 0x4051da20,
+-	0x3d60: 0x4051dc20, 0x3d61: 0x4051de20, 0x3d62: 0x4051e020, 0x3d63: 0x4051e220,
+-	0x3d64: 0x4051e420, 0x3d65: 0x4051e620, 0x3d66: 0x4051e820, 0x3d67: 0x4051ea20,
+-	0x3d68: 0x4051ec20, 0x3d69: 0x4051f620, 0x3d6a: 0x4051f820, 0x3d6b: 0x4051fa20,
+-	0x3d6c: 0x4051fc20, 0x3d6d: 0x4051fe20, 0x3d6e: 0x40520020, 0x3d6f: 0x40520220,
+-	0x3d70: 0x40520420, 0x3d71: 0x40520620, 0x3d72: 0x40520820, 0x3d73: 0x4051ee20,
+-	0x3d74: 0x4051f020, 0x3d75: 0x4051f220, 0x3d76: 0x4051f420,
+-	// Block 0xf6, offset 0x3d80
+-	0x3d80: 0x40520a20, 0x3d81: 0x40520c20, 0x3d82: 0x40520e20, 0x3d83: 0x40521020,
+-	0x3d84: 0x40521220, 0x3d85: 0x40521420, 0x3d86: 0x40521620, 0x3d87: 0x40521820,
+-	0x3d88: 0x40521a20, 0x3d89: 0x40521c20, 0x3d8a: 0x40521e20, 0x3d8b: 0x40522020,
+-	0x3d8c: 0x40522220, 0x3d8d: 0x40522420,
+-	0x3d90: 0xe00001bb, 0x3d91: 0xe000024f, 0x3d92: 0xe0000367, 0x3d93: 0xe0000441,
+-	0x3d94: 0xe0000516, 0x3d95: 0xe00005e0, 0x3d96: 0xe00006ab, 0x3d97: 0xe0000753,
+-	0x3d98: 0xe00007ff, 0x3d99: 0xe00008a4,
+-	0x3d9c: 0x4005fa20, 0x3d9d: 0x40033a20, 0x3d9e: 0x40033c20, 0x3d9f: 0x40033e20,
+-	0x3da0: 0x404e2020, 0x3da1: 0x404e2c20, 0x3da2: 0x404e3020, 0x3da3: 0x404e3420,
+-	0x3da4: 0x404e3e20, 0x3da5: 0x404e4620, 0x3da6: 0x404e4c20, 0x3da7: 0x404e5020,
+-	0x3da8: 0x404e5420, 0x3da9: 0x404e5820, 0x3daa: 0x404e6820, 0x3dab: 0x404e6e20,
+-	0x3dac: 0x404ea820, 0x3dad: 0x404eae20, 0x3dae: 0x404eb220, 0x3daf: 0x404e7a20,
+-	0x3db0: 0x4027c220, 0x3db1: 0x404eb420, 0x3db2: 0x404e3820, 0x3db3: 0x404e8e20,
+-	0x3db4: 0x404f3a20, 0x3db5: 0x404f3c20, 0x3db6: 0x404f3e20, 0x3db7: 0x4007ac20,
+-	0x3db8: 0x4007ae20, 0x3db9: 0x4007b020, 0x3dba: 0x404e9020, 0x3dbb: 0x404f3820,
+-	// Block 0xf7, offset 0x3dc0
+-	0x3dc0: 0x4049f020, 0x3dc1: 0x4049f220, 0x3dc2: 0x4049f420, 0x3dc3: 0x4049f620,
+-	0x3dc4: 0x4049f820, 0x3dc5: 0x4049fa20, 0x3dc6: 0x4049fc20, 0x3dc7: 0x4049fe20,
+-	0x3dc8: 0x404a0020, 0x3dc9: 0x404a0220, 0x3dca: 0x404a0420, 0x3dcb: 0x404a0620,
+-	0x3dcc: 0x404a0820, 0x3dcd: 0x404a0a20, 0x3dce: 0x404a0c20, 0x3dcf: 0x404a0e20,
+-	0x3dd0: 0x404a1020, 0x3dd1: 0x404a1220, 0x3dd2: 0x404a1420, 0x3dd3: 0x404a1620,
+-	0x3dd4: 0x404a1820, 0x3dd5: 0x404a1a20, 0x3dd6: 0x404a1c20, 0x3dd7: 0x404a1e20,
+-	0x3dd8: 0x404a2020, 0x3dd9: 0x404a2220, 0x3dda: 0x404a2420, 0x3ddb: 0x404a2620,
+-	0x3ddc: 0x404a2820, 0x3ddd: 0x404a2a20, 0x3dde: 0x404a2c20, 0x3ddf: 0x404a2e20,
+-	0x3de0: 0x404a3020, 0x3de1: 0x404a3220, 0x3de2: 0x404a3420, 0x3de3: 0x404a3620,
+-	0x3de4: 0x404a3820, 0x3de5: 0x404a3a20, 0x3de6: 0x404a3c20, 0x3de7: 0x404a3e20,
+-	0x3de8: 0x404a4020, 0x3de9: 0x404a4220, 0x3dea: 0x404a4420, 0x3deb: 0x404a4620,
+-	0x3dec: 0x404a4820, 0x3ded: 0x404a4a20, 0x3dee: 0x404a4c20, 0x3def: 0x404a4e20,
+-	0x3df0: 0x82e62528, 0x3df1: 0x404a5220, 0x3df2: 0x82e6252a, 0x3df3: 0x82e6252b,
+-	0x3df4: 0x82dc252c, 0x3df5: 0xc20e0671, 0x3df6: 0xc23f0671, 0x3df7: 0x82e6252f,
+-	0x3df8: 0x82e62530, 0x3df9: 0xc2700671, 0x3dfa: 0x404a6420, 0x3dfb: 0xc2a10671,
+-	0x3dfc: 0xc2d20671, 0x3dfd: 0x404a6a20, 0x3dfe: 0x82e62536, 0x3dff: 0xae610c02,
+-	// Block 0xf8, offset 0x3e00
+-	0x3e00: 0x404a6e20, 0x3e01: 0xae610d02, 0x3e02: 0x404a7020,
+-	0x3e1b: 0x404a7220,
+-	0x3e1c: 0x404a7420, 0x3e1d: 0x4027c420, 0x3e1e: 0x40057e20, 0x3e1f: 0x40058020,
+-	0x3e20: 0x40456420, 0x3e21: 0x40456620, 0x3e22: 0x40456820, 0x3e23: 0x40456a20,
+-	0x3e24: 0x40456c20, 0x3e25: 0x40456e20, 0x3e26: 0x40457020, 0x3e27: 0x40457220,
+-	0x3e28: 0x40457420, 0x3e29: 0x40457620, 0x3e2a: 0x40457820, 0x3e2b: 0x40458a20,
+-	0x3e2c: 0x40458c20, 0x3e2d: 0x40458e20, 0x3e2e: 0x40459020, 0x3e2f: 0x40459220,
+-	0x3e30: 0x40034020, 0x3e31: 0x4002dc20, 0x3e32: 0x40452c20, 0x3e33: 0x4027c620,
+-	0x3e34: 0x4027c820, 0x3e35: 0x40459420, 0x3e36: 0x820922d4,
+-	// Block 0xf9, offset 0x3e40
+-	0x3e41: 0x403cae20, 0x3e42: 0x403cb020, 0x3e43: 0x403cb220,
+-	0x3e44: 0x403cb420, 0x3e45: 0x403cb620, 0x3e46: 0x403cb820,
+-	0x3e49: 0x403e3c20, 0x3e4a: 0x403e3e20, 0x3e4b: 0x403e4020,
+-	0x3e4c: 0x403e4220, 0x3e4d: 0x403e4420, 0x3e4e: 0x403e4620,
+-	0x3e51: 0x403dfe20, 0x3e52: 0x403e0020, 0x3e53: 0x403e0220,
+-	0x3e54: 0x403e0420, 0x3e55: 0x403e0620, 0x3e56: 0x403e0820,
+-	0x3e60: 0x403ec220, 0x3e61: 0x403ec420, 0x3e62: 0x403ec620, 0x3e63: 0x403ec820,
+-	0x3e64: 0x403eca20, 0x3e65: 0x403ecc20, 0x3e66: 0x403ece20,
+-	0x3e68: 0x403ef220, 0x3e69: 0x403ef420, 0x3e6a: 0x403ef620, 0x3e6b: 0x403ef820,
+-	0x3e6c: 0x403efa20, 0x3e6d: 0x403efc20, 0x3e6e: 0x403efe20,
+-	// Block 0xfa, offset 0x3e80
+-	0x3e80: 0x40452e20, 0x3e81: 0x40453020, 0x3e82: 0x40453220, 0x3e83: 0x40453420,
+-	0x3e84: 0x40453620, 0x3e85: 0x40453820, 0x3e86: 0x40453a20, 0x3e87: 0x40453c20,
+-	0x3e88: 0x40453e20, 0x3e89: 0x40454020, 0x3e8a: 0x40454220, 0x3e8b: 0x40454420,
+-	0x3e8c: 0x40454620, 0x3e8d: 0x40454820, 0x3e8e: 0x40454a20, 0x3e8f: 0x40454c20,
+-	0x3e90: 0x40454e20, 0x3e91: 0x40455020, 0x3e92: 0x40455220, 0x3e93: 0x40455420,
+-	0x3e94: 0x40455620, 0x3e95: 0x40455820, 0x3e96: 0x40455a20, 0x3e97: 0x40455c20,
+-	0x3e98: 0x40455e20, 0x3e99: 0x40456020, 0x3e9a: 0x40456220, 0x3e9b: 0x40459620,
+-	0x3e9c: 0x40459820, 0x3e9d: 0x40459a20, 0x3e9e: 0x40459c20, 0x3e9f: 0x40459e20,
+-	0x3ea0: 0x4045a020, 0x3ea1: 0x4045a220, 0x3ea2: 0x4045a420, 0x3ea3: 0x40457a20,
+-	0x3ea4: 0x40457c20, 0x3ea5: 0x40457e20, 0x3ea6: 0x40458020, 0x3ea7: 0x40458220,
+-	0x3ea8: 0x40458420, 0x3ea9: 0x40458620, 0x3eaa: 0x40458820, 0x3eab: 0x40034220,
+-	0x3eac: 0xa000fa02, 0x3ead: 0x820922d3,
+-	0x3eb0: 0xe0000188, 0x3eb1: 0xe0000219, 0x3eb2: 0xe0000334, 0x3eb3: 0xe000040e,
+-	0x3eb4: 0xe00004e3, 0x3eb5: 0xe00005ad, 0x3eb6: 0xe0000678, 0x3eb7: 0xe0000720,
+-	0x3eb8: 0xe00007cc, 0x3eb9: 0xe0000871,
+-	// Block 0xfb, offset 0x3ec0
+-	0x3ef0: 0x40643620, 0x3ef1: 0x40643820, 0x3ef2: 0x40643a20, 0x3ef3: 0x40643c20,
+-	0x3ef4: 0x40643e20, 0x3ef5: 0x40644020, 0x3ef6: 0x40644220, 0x3ef7: 0x40644420,
+-	0x3ef8: 0x40644620, 0x3ef9: 0x40644820, 0x3efa: 0x40644a20, 0x3efb: 0x40644c20,
+-	0x3efc: 0x40644e20, 0x3efd: 0x40645020, 0x3efe: 0x40645220, 0x3eff: 0x40645420,
+-	// Block 0xfc, offset 0x3f00
+-	0x3f00: 0x40645620, 0x3f01: 0x40645820, 0x3f02: 0x40645a20, 0x3f03: 0x40645c20,
+-	0x3f04: 0x40645e20, 0x3f05: 0x40646020, 0x3f06: 0x40646220,
+-	0x3f0b: 0x40651420,
+-	0x3f0c: 0x40651620, 0x3f0d: 0x40651820, 0x3f0e: 0x40651a20, 0x3f0f: 0x40651c20,
+-	0x3f10: 0x40651e20, 0x3f11: 0x40652020, 0x3f12: 0x40652220, 0x3f13: 0x40652420,
+-	0x3f14: 0x40652620, 0x3f15: 0x40652820, 0x3f16: 0x40652a20, 0x3f17: 0x40652c20,
+-	0x3f18: 0x40652e20, 0x3f19: 0x40653020, 0x3f1a: 0x40653220, 0x3f1b: 0x40653420,
+-	0x3f1c: 0x40653620, 0x3f1d: 0x40653820, 0x3f1e: 0x40653a20, 0x3f1f: 0x40653c20,
+-	0x3f20: 0x40653e20, 0x3f21: 0x40654020, 0x3f22: 0x40654220, 0x3f23: 0x40654420,
+-	0x3f24: 0x40654620, 0x3f25: 0x40654820, 0x3f26: 0x40654a20, 0x3f27: 0x40654c20,
+-	0x3f28: 0x40654e20, 0x3f29: 0x40655020, 0x3f2a: 0x40655220, 0x3f2b: 0x40655420,
+-	0x3f2c: 0x40655620, 0x3f2d: 0x40655820, 0x3f2e: 0x40655a20, 0x3f2f: 0x40655c20,
+-	0x3f30: 0x40655e20, 0x3f31: 0x40656020, 0x3f32: 0x40656220, 0x3f33: 0x40656420,
+-	0x3f34: 0x40656620, 0x3f35: 0x40656820, 0x3f36: 0x40656a20, 0x3f37: 0x40656c20,
+-	0x3f38: 0x40656e20, 0x3f39: 0x40657020, 0x3f3a: 0x40657220, 0x3f3b: 0x40657420,
+-	// Block 0xfd, offset 0x3f40
+-	0x3f40: 0x43189020, 0x3f41: 0x42cde820, 0x3f42: 0x431d9420, 0x3f43: 0x43199020,
+-	0x3f44: 0x42dda220, 0x3f45: 0x429c6420, 0x3f46: 0x42a7ca20, 0x3f47: 0x433f3820,
+-	0x3f48: 0x433f3820, 0x3f49: 0x42b2a220, 0x3f4a: 0x4323a220, 0x3f4b: 0x42ab0e20,
+-	0x3f4c: 0x42b29020, 0x3f4d: 0x42c3ec20, 0x3f4e: 0x42ecd220, 0x3f4f: 0x42ff0a20,
+-	0x3f50: 0x430c7e20, 0x3f51: 0x430f7420, 0x3f52: 0x4311f020, 0x3f53: 0x43211e20,
+-	0x3f54: 0x42d40420, 0x3f55: 0x42da3620, 0x3f56: 0x42e1b220, 0x3f57: 0x42e7bc20,
+-	0x3f58: 0x43087a20, 0x3f59: 0x4322d420, 0x3f5a: 0x4333e220, 0x3f5b: 0x429d0420,
+-	0x3f5c: 0x42a6ea20, 0x3f5d: 0x42d60820, 0x3f5e: 0x42e43620, 0x3f5f: 0x430c5a20,
+-	0x3f60: 0x433c3c20, 0x3f61: 0x42baa020, 0x3f62: 0x42dfd620, 0x3f63: 0x430b9a20,
+-	0x3f64: 0x4312c820, 0x3f65: 0x42c59220, 0x3f66: 0x4303b020, 0x3f67: 0x43103e20,
+-	0x3f68: 0x42bd9420, 0x3f69: 0x42ce2e20, 0x3f6a: 0x42dad420, 0x3f6b: 0x42e5f820,
+-	0x3f6c: 0x43219c20, 0x3f6d: 0x429f0c20, 0x3f6e: 0x42a36e20, 0x3f6f: 0x42a5bc20,
+-	0x3f70: 0x42c98820, 0x3f71: 0x42d5a620, 0x3f72: 0x42e42020, 0x3f73: 0x42edce20,
+-	0x3f74: 0x43000220, 0x3f75: 0x430c0c20, 0x3f76: 0x430cb820, 0x3f77: 0x431bde20,
+-	0x3f78: 0x432e6420, 0x3f79: 0x4336de20, 0x3f7a: 0x433bf420, 0x3f7b: 0x42f11820,
+-	0x3f7c: 0x42f2fe20, 0x3f7d: 0x42fb4020, 0x3f7e: 0x43079220, 0x3f7f: 0x43260820,
+-	// Block 0xfe, offset 0x3f80
+-	0x3f80: 0x433cfe20, 0x3f81: 0x4315ac20, 0x3f82: 0x42b1be20, 0x3f83: 0x42be0820,
+-	0x3f84: 0x42f8c020, 0x3f85: 0x4300fc20, 0x3f86: 0x42e4c420, 0x3f87: 0x42f19420,
+-	0x3f88: 0x43198420, 0x3f89: 0x432dee20, 0x3f8a: 0x42b1b020, 0x3f8b: 0x42b8c420,
+-	0x3f8c: 0x42d42620, 0x3f8d: 0x42dbb420, 0x3f8e: 0x42de1e20, 0x3f8f: 0x42fa5e20,
+-	0x3f90: 0x42fc6e20, 0x3f91: 0x432c9620, 0x3f92: 0x42a5a420, 0x3f93: 0x43011620,
+-	0x3f94: 0x42a3b820, 0x3f95: 0x42a39820, 0x3f96: 0x42f43820, 0x3f97: 0x42fb7c20,
+-	0x3f98: 0x4307e220, 0x3f99: 0x432cea20, 0x3f9a: 0x43170020, 0x3f9b: 0x42c59e20,
+-	0x3f9c: 0x42d40420, 0x3f9d: 0x4315fc20, 0x3f9e: 0x429c7220, 0x3f9f: 0x42b7ce20,
+-	0x3fa0: 0x42c02420, 0x3fa1: 0x42e70e20, 0x3fa2: 0x42eae020, 0x3fa3: 0x42a62e20,
+-	0x3fa4: 0x42f1f620, 0x3fa5: 0x429f7e20, 0x3fa6: 0x42bf5220, 0x3fa7: 0x429c1a20,
+-	0x3fa8: 0x42d99820, 0x3fa9: 0x42caf020, 0x3faa: 0x42fa4420, 0x3fab: 0x42a78620,
+-	0x3fac: 0x42b0bc20, 0x3fad: 0x42ee0220, 0x3fae: 0x43089220, 0x3faf: 0x43155420,
+-	0x3fb0: 0x42d77420, 0x3fb1: 0x431f6020, 0x3fb2: 0x42d91020, 0x3fb3: 0x42c5fc20,
+-	0x3fb4: 0x4305ca20, 0x3fb5: 0x42c74020, 0x3fb6: 0x42eaca20, 0x3fb7: 0x429d5c20,
+-	0x3fb8: 0x42a2d220, 0x3fb9: 0x42a39220, 0x3fba: 0x42d10220, 0x3fbb: 0x42f9ce20,
+-	0x3fbc: 0x4304de20, 0x3fbd: 0x4315a420, 0x3fbe: 0x43239e20, 0x3fbf: 0x42a5ea20,
+-	// Block 0xff, offset 0x3fc0
+-	0x3fc0: 0x42a88420, 0x3fc1: 0x42b2e620, 0x3fc2: 0x42bdd820, 0x3fc3: 0x42cb8a20,
+-	0x3fc4: 0x42dffc20, 0x3fc5: 0x42f25420, 0x3fc6: 0x432b5a20, 0x3fc7: 0x4334d420,
+-	0x3fc8: 0x433d2e20, 0x3fc9: 0x433d9c20, 0x3fca: 0x42a53620, 0x3fcb: 0x42cd8c20,
+-	0x3fcc: 0x42d6ee20, 0x3fcd: 0x431ec420, 0x3fce: 0x42bce820, 0x3fcf: 0x42c32020,
+-	0x3fd0: 0x42c40020, 0x3fd1: 0x42c93420, 0x3fd2: 0x42de4620, 0x3fd3: 0x42e29220,
+-	0x3fd4: 0x42e91220, 0x3fd5: 0x42f39420, 0x3fd6: 0x42fbe820, 0x3fd7: 0x4300de20,
+-	0x3fd8: 0x431e4c20, 0x3fd9: 0x4309dc20, 0x3fda: 0x43204620, 0x3fdb: 0x43269420,
+-	0x3fdc: 0x42a42e20, 0x3fdd: 0x42a54620, 0x3fde: 0x42a97a20, 0x3fdf: 0x42e19020,
+-	0x3fe0: 0x43118420, 0x3fe1: 0x43155420, 0x3fe2: 0x42bd9220, 0x3fe3: 0x42bfea20,
+-	0x3fe4: 0x42c6f620, 0x3fe5: 0x42d75c20, 0x3fe6: 0x42f87c20, 0x3fe7: 0x42e6ea20,
+-	0x3fe8: 0x429dc820, 0x3fe9: 0x42adf220, 0x3fea: 0x42b7ce20, 0x3feb: 0x42bb7420,
+-	0x3fec: 0x42c03820, 0x3fed: 0x42e76420, 0x3fee: 0x42e8d220, 0x3fef: 0x42ff3420,
+-	0x3ff0: 0x43008c20, 0x3ff1: 0x43246820, 0x3ff2: 0x432dec20, 0x3ff3: 0x432e9020,
+-	0x3ff4: 0x43303020, 0x3ff5: 0x429f1620, 0x3ff6: 0x42f35c20, 0x3ff7: 0x43236820,
+-	0x3ff8: 0x432d7020, 0x3ff9: 0x42c1c220, 0x3ffa: 0x429d0c20, 0x3ffb: 0x42a1b420,
+-	0x3ffc: 0x42b7dc20, 0x3ffd: 0x42b87e20, 0x3ffe: 0x42cb3220, 0x3fff: 0x42d40420,
+-	// Block 0x100, offset 0x4000
+-	0x4000: 0x42e39c20, 0x4001: 0x42ec8420, 0x4002: 0x4309f820, 0x4003: 0x4320f820,
+-	0x4004: 0x433f1a20, 0x4005: 0x42cd1020, 0x4006: 0x432c5c20, 0x4007: 0x42a51220,
+-	0x4008: 0x42cef620, 0x4009: 0x42cfe620, 0x400a: 0x42da8220, 0x400b: 0x42dd3820,
+-	0x400c: 0x42e81220, 0x400d: 0x42eab220, 0x400e: 0x42f0d620, 0x400f: 0x42fa2020,
+-	0x4010: 0x4330bc20, 0x4011: 0x42a2da20, 0x4012: 0x42c45c20, 0x4013: 0x432cf020,
+-	0x4014: 0x42a05620, 0x4015: 0x42ba3220, 0x4016: 0x42dbd420, 0x4017: 0x431e5420,
+-	0x4018: 0x42bf1620, 0x4019: 0x42c28820, 0x401a: 0x42d02e20, 0x401b: 0x42e70e20,
+-	0x401c: 0x432d0c20, 0x401d: 0x42a45220, 0x401e: 0x42a81e20, 0x401f: 0x42b8ca20,
+-	0x4020: 0x42cc2620, 0x4021: 0x42ce9c20, 0x4022: 0x42d15020, 0x4023: 0x42d9ca20,
+-	0x4024: 0x42e80c20, 0x4025: 0x42ebc420, 0x4026: 0x42fef220, 0x4027: 0x43119e20,
+-	0x4028: 0x4311c220, 0x4029: 0x43239820, 0x402a: 0x432dc420, 0x402b: 0x42a67e20,
+-	0x402c: 0x42dd7420, 0x402d: 0x42a83a20, 0x402e: 0x42e3a020, 0x402f: 0x42e93020,
+-	0x4030: 0x430bf420, 0x4031: 0x432d4620, 0x4032: 0x4338ae20, 0x4033: 0x433d3e20,
+-	0x4034: 0x42cf2e20, 0x4035: 0x42db9620, 0x4036: 0x4303d020, 0x4037: 0x42f59620,
+-	0x4038: 0x42f64020, 0x4039: 0x42f92420, 0x403a: 0x42e58020, 0x403b: 0x42e13220,
+-	0x403c: 0x4316b020, 0x403d: 0x429d8020, 0x403e: 0x43066c20, 0x403f: 0x42a47420,
+-	// Block 0x101, offset 0x4040
+-	0x4040: 0x42a40e20, 0x4041: 0x42bd4c20, 0x4042: 0x42c5a620, 0x4043: 0x42f9ac20,
+-	0x4044: 0x42b70a20, 0x4045: 0x42da3c20, 0x4046: 0x42cd6820, 0x4047: 0x431e7620,
+-	0x4048: 0x43109820, 0x4049: 0x432c9a20, 0x404a: 0x43131620, 0x404b: 0x42bda620,
+-	0x404c: 0x42a28020, 0x404d: 0x42ab8020, 0x404e: 0x43f41c20, 0x404f: 0x43f41e20,
+-	0x4050: 0x42b0b420, 0x4051: 0x43f42220, 0x4052: 0x42cce820, 0x4053: 0x43f42620,
+-	0x4054: 0x43f42820, 0x4055: 0x42a3bc20, 0x4056: 0x42e65420, 0x4057: 0x42ed9420,
+-	0x4058: 0x42f27820, 0x4059: 0x42f2bc20, 0x405a: 0x42f2ca20, 0x405b: 0x42f31e20,
+-	0x405c: 0x432eac20, 0x405d: 0x42f97c20, 0x405e: 0x42ff7a20, 0x405f: 0x43f43e20,
+-	0x4060: 0x430c2420, 0x4061: 0x43f44220, 0x4062: 0x4315f020, 0x4063: 0x43f44620,
+-	0x4064: 0x43f44820, 0x4065: 0x43207020, 0x4066: 0x4321fa20, 0x4067: 0x43f44e20,
+-	0x4068: 0x43f45020, 0x4069: 0x43f45220, 0x406a: 0x4331de20, 0x406b: 0x4331f820,
+-	0x406c: 0x43325020, 0x406d: 0x433b6820, 0x406e: 0x4321bc20, 0x406f: 0x432d6e20,
+-	0x4070: 0x429f5c20, 0x4071: 0x42a1ce20, 0x4072: 0x42a29a20, 0x4073: 0x42a59220,
+-	0x4074: 0x42a5c820, 0x4075: 0x42a6a220, 0x4076: 0x42ab3a20, 0x4077: 0x42ac0c20,
+-	0x4078: 0x42acd020, 0x4079: 0x42b08020, 0x407a: 0x42b15020, 0x407b: 0x42b8c820,
+-	0x407c: 0x42b8dc20, 0x407d: 0x42c12820, 0x407e: 0x42c2d020, 0x407f: 0x42c31c20,
+-	// Block 0x102, offset 0x4080
+-	0x4080: 0x42c3e420, 0x4081: 0x42ca9e20, 0x4082: 0x42cbc420, 0x4083: 0x42cd2220,
+-	0x4084: 0x42d10a20, 0x4085: 0x42daee20, 0x4086: 0x42dc3420, 0x4087: 0x42de4420,
+-	0x4088: 0x42e2dc20, 0x4089: 0x42e45620, 0x408a: 0x42e84420, 0x408b: 0x42f12220,
+-	0x408c: 0x42f27c20, 0x408d: 0x42f29220, 0x408e: 0x42f29020, 0x408f: 0x42f2a020,
+-	0x4090: 0x42f2ac20, 0x4091: 0x42f2ba20, 0x4092: 0x42f31a20, 0x4093: 0x42f31c20,
+-	0x4094: 0x42f48020, 0x4095: 0x42f50220, 0x4096: 0x42f78020, 0x4097: 0x42fbe820,
+-	0x4098: 0x42fc1220, 0x4099: 0x42fc8220, 0x409a: 0x42fee420, 0x409b: 0x43000a20,
+-	0x409c: 0x4303da20, 0x409d: 0x4304f220, 0x409e: 0x4304f220, 0x409f: 0x4308ae20,
+-	0x40a0: 0x43122020, 0x40a1: 0x43132c20, 0x40a2: 0x43160220, 0x40a3: 0x43167220,
+-	0x40a4: 0x4319a620, 0x40a5: 0x431a1020, 0x40a6: 0x431f6c20, 0x40a7: 0x43207020,
+-	0x40a8: 0x432dc620, 0x40a9: 0x432ffe20, 0x40aa: 0x43307620, 0x40ab: 0x42c0ea20,
+-	0x40ac: 0x4885dc20, 0x40ad: 0x43043020,
+-	0x40b0: 0x429c4c20, 0x40b1: 0x42a36a20, 0x40b2: 0x42a2d020, 0x40b3: 0x429f0020,
+-	0x40b4: 0x42a28a20, 0x40b5: 0x42a30020, 0x40b6: 0x42a58e20, 0x40b7: 0x42a5f420,
+-	0x40b8: 0x42ab3a20, 0x40b9: 0x42aaaa20, 0x40ba: 0x42ab3220, 0x40bb: 0x42abc420,
+-	0x40bc: 0x42b0b420, 0x40bd: 0x42b16620, 0x40be: 0x42b28820, 0x40bf: 0x42b2a820,
+-	// Block 0x103, offset 0x40c0
+-	0x40c0: 0x42b4c420, 0x40c1: 0x42b65020, 0x40c2: 0x42bda420, 0x40c3: 0x42bdb220,
+-	0x40c4: 0x42bed220, 0x40c5: 0x42bf5a20, 0x40c6: 0x42c1b020, 0x40c7: 0x42c29c20,
+-	0x40c8: 0x42c21020, 0x40c9: 0x42c31c20, 0x40ca: 0x42c2c020, 0x40cb: 0x42c3e420,
+-	0x40cc: 0x42c46820, 0x40cd: 0x42c78820, 0x40ce: 0x42c83820, 0x40cf: 0x42c8a420,
+-	0x40d0: 0x42caac20, 0x40d1: 0x42cce820, 0x40d2: 0x42ce2e20, 0x40d3: 0x42ce3620,
+-	0x40d4: 0x42ceac20, 0x40d5: 0x42d6f220, 0x40d6: 0x42d77420, 0x40d7: 0x42da8220,
+-	0x40d8: 0x42ddb620, 0x40d9: 0x42dd9620, 0x40da: 0x42de4420, 0x40db: 0x42e03c20,
+-	0x40dc: 0x42e2dc20, 0x40dd: 0x42ef4e20, 0x40de: 0x42e46a20, 0x40df: 0x42e55e20,
+-	0x40e0: 0x42e65420, 0x40e1: 0x42e8e220, 0x40e2: 0x42ea0c20, 0x40e3: 0x42ea7620,
+-	0x40e4: 0x42ec3a20, 0x40e5: 0x42ec3e20, 0x40e6: 0x42ed9420, 0x40e7: 0x42edb620,
+-	0x40e8: 0x42ede820, 0x40e9: 0x42ee9420, 0x40ea: 0x42ee8020, 0x40eb: 0x42f19820,
+-	0x40ec: 0x42f56220, 0x40ed: 0x42f78020, 0x40ee: 0x42f8f620, 0x40ef: 0x42fab620,
+-	0x40f0: 0x42fbe820, 0x40f1: 0x42fe7c20, 0x40f2: 0x43000a20, 0x40f3: 0x4306a420,
+-	0x40f4: 0x4307de20, 0x40f5: 0x430ef220, 0x40f6: 0x43128220, 0x40f7: 0x43130c20,
+-	0x40f8: 0x43132c20, 0x40f9: 0x43157e20, 0x40fa: 0x4315f020, 0x40fb: 0x43159620,
+-	0x40fc: 0x43160220, 0x40fd: 0x4315fc20, 0x40fe: 0x4315da20, 0x40ff: 0x43167220,
+-	// Block 0x104, offset 0x4100
+-	0x4100: 0x43171420, 0x4101: 0x431a1020, 0x4102: 0x431e7020, 0x4103: 0x4320e420,
+-	0x4104: 0x43233220, 0x4105: 0x4324ec20, 0x4106: 0x432cf820, 0x4107: 0x432dc620,
+-	0x4108: 0x432eac20, 0x4109: 0x432fb620, 0x410a: 0x432ffe20, 0x410b: 0x43301620,
+-	0x410c: 0x43307620, 0x410d: 0x43362420, 0x410e: 0x433f3820, 0x410f: 0x48509420,
+-	0x4110: 0x48508820, 0x4111: 0x4867aa20, 0x4112: 0x44773a20, 0x4113: 0x44803020,
+-	0x4114: 0x44807220, 0x4115: 0x48a49220, 0x4116: 0x48b9a020, 0x4117: 0x48fda620,
+-	0x4118: 0x433e8620, 0x4119: 0x433f1c20,
+-	// Block 0x105, offset 0x4140
+-	0x4140: 0xf0000404, 0x4141: 0xf0000404, 0x4142: 0xf0000404, 0x4143: 0xe0000b99,
+-	0x4144: 0xe0000b9d, 0x4145: 0xe0000f83, 0x4146: 0xf0000404,
+-	0x4153: 0xf0000404,
+-	0x4154: 0xf0000404, 0x4155: 0xf0000404, 0x4156: 0xf0000404, 0x4157: 0xf0000404,
+-	0x415d: 0xe000150b, 0x415e: 0xa1a09602, 0x415f: 0xe0001514,
+-	0x4160: 0x0038ae85, 0x4161: 0x00389085, 0x4162: 0x00389685, 0x4163: 0x00389885,
+-	0x4164: 0x0038a485, 0x4165: 0x0038a685, 0x4166: 0x0038a885, 0x4167: 0x0038b685,
+-	0x4168: 0x0038ba85, 0x4169: 0x00093885, 0x416a: 0xe0001542, 0x416b: 0xe000153f,
+-	0x416c: 0xe000154c, 0x416d: 0xe0001548, 0x416e: 0xe00014e1, 0x416f: 0xe00014e4,
+-	0x4170: 0xe00014e7, 0x4171: 0xe00014ea, 0x4172: 0xe00014f0, 0x4173: 0xe00014f3,
+-	0x4174: 0xe00014f6, 0x4175: 0xe00014fc, 0x4176: 0xe0001505,
+-	0x4178: 0xe0001508, 0x4179: 0xe000150e, 0x417a: 0xe000151b, 0x417b: 0xe0001518,
+-	0x417c: 0xe0001521, 0x417e: 0xe0001524,
+-	// Block 0x106, offset 0x4180
+-	0x4180: 0xe0001527, 0x4181: 0xe000152a, 0x4183: 0xe0001530,
+-	0x4184: 0xe000152d, 0x4186: 0xe0001536, 0x4187: 0xe0001539,
+-	0x4188: 0xe000153c, 0x4189: 0xe0001545, 0x418a: 0xe0001550, 0x418b: 0xe00014f9,
+-	0x418c: 0xe00014ed, 0x418d: 0xe000151e, 0x418e: 0xe0001533, 0x418f: 0xf0000404,
+-	0x4190: 0x0039249a, 0x4191: 0x00392499, 0x4192: 0x00393e9a, 0x4193: 0x00393e99,
+-	0x4194: 0x00393e97, 0x4195: 0x00393e98, 0x4196: 0x0039409a, 0x4197: 0x00394099,
+-	0x4198: 0x00394097, 0x4199: 0x00394098, 0x419a: 0x0039429a, 0x419b: 0x00394299,
+-	0x419c: 0x00394297, 0x419d: 0x00394298, 0x419e: 0x00395c9a, 0x419f: 0x00395c99,
+-	0x41a0: 0x00395c97, 0x41a1: 0x00395c98, 0x41a2: 0x0039629a, 0x41a3: 0x00396299,
+-	0x41a4: 0x00396297, 0x41a5: 0x00396298, 0x41a6: 0x00395a9a, 0x41a7: 0x00395a99,
+-	0x41a8: 0x00395a97, 0x41a9: 0x00395a98, 0x41aa: 0x003a049a, 0x41ab: 0x003a0499,
+-	0x41ac: 0x003a0497, 0x41ad: 0x003a0498, 0x41ae: 0x003a0a9a, 0x41af: 0x003a0a99,
+-	0x41b0: 0x003a0a97, 0x41b1: 0x003a0a98, 0x41b2: 0x0039689a, 0x41b3: 0x00396899,
+-	0x41b4: 0x00396897, 0x41b5: 0x00396898, 0x41b6: 0x0039669a, 0x41b7: 0x00396699,
+-	0x41b8: 0x00396697, 0x41b9: 0x00396698, 0x41ba: 0x00396a9a, 0x41bb: 0x00396a99,
+-	0x41bc: 0x00396a97, 0x41bd: 0x00396a98, 0x41be: 0x00396e9a, 0x41bf: 0x00396e99,
+-	// Block 0x107, offset 0x41c0
+-	0x41c0: 0x00396e97, 0x41c1: 0x00396e98, 0x41c2: 0x0039969a, 0x41c3: 0x00399699,
+-	0x41c4: 0x0039949a, 0x41c5: 0x00399499, 0x41c6: 0x0039989a, 0x41c7: 0x00399899,
+-	0x41c8: 0x00398c9a, 0x41c9: 0x00398c99, 0x41ca: 0x0039b69a, 0x41cb: 0x0039b699,
+-	0x41cc: 0x0039a89a, 0x41cd: 0x0039a899, 0x41ce: 0x003a1c9a, 0x41cf: 0x003a1c99,
+-	0x41d0: 0x003a1c97, 0x41d1: 0x003a1c98, 0x41d2: 0x003a2a9a, 0x41d3: 0x003a2a99,
+-	0x41d4: 0x003a2a97, 0x41d5: 0x003a2a98, 0x41d6: 0x003a329a, 0x41d7: 0x003a3299,
+-	0x41d8: 0x003a3297, 0x41d9: 0x003a3298, 0x41da: 0x003a2e9a, 0x41db: 0x003a2e99,
+-	0x41dc: 0x003a2e97, 0x41dd: 0x003a2e98, 0x41de: 0x003a589a, 0x41df: 0x003a5899,
+-	0x41e0: 0x003a5a9a, 0x41e1: 0x003a5a99, 0x41e2: 0x003a5a97, 0x41e3: 0x003a5a98,
+-	0x41e4: 0xf0001a1a, 0x41e5: 0xf0001919, 0x41e6: 0x003a6c9a, 0x41e7: 0x003a6c99,
+-	0x41e8: 0x003a6c97, 0x41e9: 0x003a6c98, 0x41ea: 0x003a6a9a, 0x41eb: 0x003a6a99,
+-	0x41ec: 0x003a6a97, 0x41ed: 0x003a6a98, 0x41ee: 0x003aaa9a, 0x41ef: 0x003aaa99,
+-	0x41f0: 0xf0001a1a, 0x41f1: 0xf0001919, 0x41f2: 0x40071820, 0x41f3: 0x40071a20,
+-	0x41f4: 0x40071c20, 0x41f5: 0x40071e20, 0x41f6: 0x40072020, 0x41f7: 0x40072220,
+-	0x41f8: 0x40072420, 0x41f9: 0x40072620, 0x41fa: 0x40072820, 0x41fb: 0x40072a20,
+-	0x41fc: 0x40072c20, 0x41fd: 0x40072e20, 0x41fe: 0x40073020, 0x41ff: 0x40073220,
+-	// Block 0x108, offset 0x4200
+-	0x4200: 0x40073420, 0x4201: 0x40073620,
+-	0x4213: 0x003a269a,
+-	0x4214: 0x003a2699, 0x4215: 0x003a2697, 0x4216: 0x003a2698, 0x4217: 0x003a7c9a,
+-	0x4218: 0x003a7c99, 0x4219: 0x003a7a9a, 0x421a: 0x003a7a99, 0x421b: 0x003a7e9a,
+-	0x421c: 0x003a7e99, 0x421d: 0xf0001a1a, 0x421e: 0x003a849a, 0x421f: 0x003a8499,
+-	0x4220: 0x003a789a, 0x4221: 0x003a7899, 0x4222: 0x003a809a, 0x4223: 0x003a8099,
+-	0x4224: 0x003a989a, 0x4225: 0x003a9899, 0x4226: 0x003a9897, 0x4227: 0x003a9898,
+-	0x4228: 0x003a8e97, 0x4229: 0x003a8e98, 0x422a: 0xe0001559, 0x422b: 0xe0001556,
+-	0x422c: 0xe0001589, 0x422d: 0xe0001586, 0x422e: 0xe000158f, 0x422f: 0xe000158c,
+-	0x4230: 0xe000159b, 0x4231: 0xe0001598, 0x4232: 0xe0001595, 0x4233: 0xe0001592,
+-	0x4234: 0xe00015a1, 0x4235: 0xe000159e, 0x4236: 0xe00015bf, 0x4237: 0xe00015bc,
+-	0x4238: 0xe00015b9, 0x4239: 0xe00015ad, 0x423a: 0xe00015a7, 0x423b: 0xe00015a4,
+-	0x423c: 0x003a929a, 0x423d: 0x003a9299, 0x423e: 0x003a9297, 0x423f: 0x003a9298,
+-	// Block 0x109, offset 0x4240
+-	0x4240: 0xe000155f, 0x4241: 0xe0001565, 0x4242: 0xe000157a, 0x4243: 0xe00015b0,
+-	0x4244: 0xe00015b6, 0x4245: 0xf0001a1a, 0x4246: 0xf0001a1a, 0x4247: 0xf0001a1a,
+-	0x4248: 0xf0001a1a, 0x4249: 0xf0001a1a, 0x424a: 0xf0001a1a, 0x424b: 0xf0001a1a,
+-	0x424c: 0xf0001a1a, 0x424d: 0xf0001a1a, 0x424e: 0xf0001a1a, 0x424f: 0xf0001a1a,
+-	0x4250: 0xf0001a1a, 0x4251: 0xf0001a1a, 0x4252: 0xf0001a1a, 0x4253: 0xf0001a1a,
+-	0x4254: 0xf0001a1a, 0x4255: 0xf0001a1a, 0x4256: 0xf0001a1a, 0x4257: 0xf0001a1a,
+-	0x4258: 0xf0001a1a, 0x4259: 0xf0001a1a, 0x425a: 0xf0001a1a, 0x425b: 0xf0001a1a,
+-	0x425c: 0xf0001a1a, 0x425d: 0xf0001a1a, 0x425e: 0xf0001a1a, 0x425f: 0xf0001a1a,
+-	0x4260: 0xf0001a1a, 0x4261: 0xf0001a1a, 0x4262: 0xf0001a1a, 0x4263: 0xf0001a1a,
+-	0x4264: 0xf0001a1a, 0x4265: 0xf0001a1a, 0x4266: 0xf0001a1a, 0x4267: 0xf0001a1a,
+-	0x4268: 0xf0001a1a, 0x4269: 0xf0001a1a, 0x426a: 0xf0001a1a, 0x426b: 0xf0001a1a,
+-	0x426c: 0xf0001a1a, 0x426d: 0xf0001a1a, 0x426e: 0xf0001a1a, 0x426f: 0xf0001a1a,
+-	0x4270: 0xf0001a1a, 0x4271: 0xf0001a1a, 0x4272: 0xf0001a1a, 0x4273: 0xf0001a1a,
+-	0x4274: 0xf0001a1a, 0x4275: 0xf0001a1a, 0x4276: 0xf0001a1a, 0x4277: 0xf0001a1a,
+-	0x4278: 0xf0001a1a, 0x4279: 0xf0001a1a, 0x427a: 0xf0001a1a, 0x427b: 0xf0001a1a,
+-	0x427c: 0xf0001a1a, 0x427d: 0xf0001a1a, 0x427e: 0xf0001a1a, 0x427f: 0xf0001a1a,
+-	// Block 0x10a, offset 0x4280
+-	0x4280: 0xf0001a1a, 0x4281: 0xf0001a1a, 0x4282: 0xf0001a1a, 0x4283: 0xf0001a1a,
+-	0x4284: 0xf0001a1a, 0x4285: 0xf0001a1a, 0x4286: 0xf0001a1a, 0x4287: 0xf0001a1a,
+-	0x4288: 0xf0001a1a, 0x4289: 0xf0001a1a, 0x428a: 0xf0001a1a, 0x428b: 0xf0001a1a,
+-	0x428c: 0xf0001a1a, 0x428d: 0xf0001a1a, 0x428e: 0xf0001a1a, 0x428f: 0xf0001a1a,
+-	0x4290: 0xf0001a1a, 0x4291: 0xf0001a1a, 0x4292: 0xf0001a1a, 0x4293: 0xf0001a1a,
+-	0x4294: 0xf0001a1a, 0x4295: 0xf0001a1a, 0x4296: 0xf0001a1a, 0x4297: 0xf0001a1a,
+-	0x4298: 0xf0001a1a, 0x4299: 0xf0001a1a, 0x429a: 0xf0001a1a, 0x429b: 0xf0001a1a,
+-	0x429c: 0xf0001a1a, 0x429d: 0xf0001a1a, 0x429e: 0xe0000003, 0x429f: 0xe0000006,
+-	0x42a0: 0xe0000009, 0x42a1: 0xe000000c, 0x42a2: 0xe000000f, 0x42a3: 0xe0000012,
+-	0x42a4: 0xe000156b, 0x42a5: 0xe000156e, 0x42a6: 0xe0001577, 0x42a7: 0xe000157d,
+-	0x42a8: 0xe00015aa, 0x42a9: 0xe00015b3, 0x42aa: 0xf0001919, 0x42ab: 0xf0001919,
+-	0x42ac: 0xf0001919, 0x42ad: 0xf0001919, 0x42ae: 0xf0001919, 0x42af: 0xf0001919,
+-	0x42b0: 0xf0001919, 0x42b1: 0xf0001919, 0x42b2: 0xf0001919, 0x42b3: 0xf0001919,
+-	0x42b4: 0xf0001919, 0x42b5: 0xf0001919, 0x42b6: 0xf0001919, 0x42b7: 0xf0001919,
+-	0x42b8: 0xf0001919, 0x42b9: 0xf0001919, 0x42ba: 0xf0001919, 0x42bb: 0xf0001919,
+-	0x42bc: 0xf0001919, 0x42bd: 0xf0001919, 0x42be: 0xf0001919, 0x42bf: 0xf0001919,
+-	// Block 0x10b, offset 0x42c0
+-	0x42c0: 0xf0001919, 0x42c1: 0xf0001919, 0x42c2: 0xf0001919, 0x42c3: 0xf0001919,
+-	0x42c4: 0xf0001919, 0x42c5: 0xf0001919, 0x42c6: 0xf0001919, 0x42c7: 0xf0001919,
+-	0x42c8: 0xf0001919, 0x42c9: 0xf0001919, 0x42ca: 0xf0001919, 0x42cb: 0xf0001919,
+-	0x42cc: 0xf0001919, 0x42cd: 0xf0001919, 0x42ce: 0xf0001919, 0x42cf: 0xf0001919,
+-	0x42d0: 0xf0001919, 0x42d1: 0xf0001919, 0x42d2: 0xf0001919, 0x42d3: 0xf0001919,
+-	0x42d4: 0xf0001919, 0x42d5: 0xf0001919, 0x42d6: 0xf0001919, 0x42d7: 0xe000155c,
+-	0x42d8: 0xe0001562, 0x42d9: 0xe0001568, 0x42da: 0xe0001571, 0x42db: 0xe0001580,
+-	0x42dc: 0xf0001717, 0x42dd: 0xf0001717, 0x42de: 0xf0001717, 0x42df: 0xf0001717,
+-	0x42e0: 0xf0001717, 0x42e1: 0xf0001717, 0x42e2: 0xf0001717, 0x42e3: 0xf0001717,
+-	0x42e4: 0xf0001717, 0x42e5: 0xf0001717, 0x42e6: 0xf0001717, 0x42e7: 0xf0001717,
+-	0x42e8: 0xf0001717, 0x42e9: 0xf0001717, 0x42ea: 0xf0001717, 0x42eb: 0xf0001717,
+-	0x42ec: 0xf0001717, 0x42ed: 0xf0001717, 0x42ee: 0xf0001717, 0x42ef: 0xf0001717,
+-	0x42f0: 0xf0001717, 0x42f1: 0xf0001717, 0x42f2: 0xf0001717, 0x42f3: 0xf0001717,
+-	0x42f4: 0xf0001717, 0x42f5: 0xf0001717, 0x42f6: 0xf0001717, 0x42f7: 0xf0001717,
+-	0x42f8: 0xf0001717, 0x42f9: 0xf0001717, 0x42fa: 0xf0001717, 0x42fb: 0xf0001717,
+-	0x42fc: 0xf0001717, 0x42fd: 0xf0001717, 0x42fe: 0xf0001717, 0x42ff: 0xf0001717,
+-	// Block 0x10c, offset 0x4300
+-	0x4300: 0xf0001717, 0x4301: 0xf0001717, 0x4302: 0xf0001717, 0x4303: 0xf0001717,
+-	0x4304: 0xf0001717, 0x4305: 0xf0001717, 0x4306: 0xf0001717, 0x4307: 0xf0001717,
+-	0x4308: 0xf0001717, 0x4309: 0xf0001717, 0x430a: 0xf0001717, 0x430b: 0xf0001717,
+-	0x430c: 0xf0001717, 0x430d: 0xf0001717, 0x430e: 0xf0001717, 0x430f: 0xf0001717,
+-	0x4310: 0xf0001717, 0x4311: 0xf0001717, 0x4312: 0xf0001717, 0x4313: 0xf0001717,
+-	0x4314: 0xf0001717, 0x4315: 0xf0001717, 0x4316: 0xf0001717, 0x4317: 0xf0001717,
+-	0x4318: 0xf0001717, 0x4319: 0xf0001717, 0x431a: 0xf0001717, 0x431b: 0xf0001717,
+-	0x431c: 0xf0001717, 0x431d: 0xf0001717, 0x431e: 0xf0001717, 0x431f: 0xe0001574,
+-	0x4320: 0xe0001583, 0x4321: 0xf0001818, 0x4322: 0xf0001818, 0x4323: 0xf0001818,
+-	0x4324: 0xf0001818, 0x4325: 0xf0001818, 0x4326: 0xf0001818, 0x4327: 0xf0001818,
+-	0x4328: 0xf0001818, 0x4329: 0xf0001818, 0x432a: 0xf0001818, 0x432b: 0xf0001818,
+-	0x432c: 0xf0001818, 0x432d: 0xf0001818, 0x432e: 0xf0001818, 0x432f: 0xf0001818,
+-	0x4330: 0xf0001818, 0x4331: 0xf0001818, 0x4332: 0xf0001818, 0x4333: 0xf0001818,
+-	0x4334: 0xf0001818, 0x4335: 0xf0001a1a, 0x4336: 0xf0001a1a, 0x4337: 0xf0001a1a,
+-	0x4338: 0xf0001a1a, 0x4339: 0xf0001a1a, 0x433a: 0xf0001a1a, 0x433b: 0xf0001a1a,
+-	0x433c: 0xf0001a1a, 0x433d: 0xf0001a1a, 0x433e: 0xf0001a1a, 0x433f: 0xf0001a1a,
+-	// Block 0x10d, offset 0x4340
+-	0x4340: 0xf0001a1a, 0x4341: 0xf0001a1a, 0x4342: 0xf0001a1a, 0x4343: 0xf0001a1a,
+-	0x4344: 0xf0001a1a, 0x4345: 0xf0001a1a, 0x4346: 0xf0001a1a, 0x4347: 0xf0001a1a,
+-	0x4348: 0xf0001a1a, 0x4349: 0xf0001a1a, 0x434a: 0xf0001a1a, 0x434b: 0xf0001a1a,
+-	0x434c: 0xf0001a1a, 0x434d: 0xf0001a1a, 0x434e: 0xf0001a1a, 0x434f: 0xf0001a1a,
+-	0x4350: 0xf0001a1a, 0x4351: 0xf0001919, 0x4352: 0xf0001919, 0x4353: 0xf0001919,
+-	0x4354: 0xf0001919, 0x4355: 0xf0001919, 0x4356: 0xf0001919, 0x4357: 0xf0001919,
+-	0x4358: 0xf0001919, 0x4359: 0xf0001919, 0x435a: 0xf0001919, 0x435b: 0xf0001919,
+-	0x435c: 0xf0001919, 0x435d: 0xf0001919, 0x435e: 0xf0001919, 0x435f: 0xf0001919,
+-	0x4360: 0xf0001919, 0x4361: 0xf0001919, 0x4362: 0xf0001919, 0x4363: 0xf0001919,
+-	0x4364: 0xf0001919, 0x4365: 0xf0001919, 0x4366: 0xf0001919, 0x4367: 0xf0001919,
+-	0x4368: 0xf0001919, 0x4369: 0xf0001919, 0x436a: 0xf0001919, 0x436b: 0xf0001919,
+-	0x436c: 0xf0001919, 0x436d: 0xf0001717, 0x436e: 0xf0001717, 0x436f: 0xf0001717,
+-	0x4370: 0xf0001717, 0x4371: 0xf0001717, 0x4372: 0xf0001717, 0x4373: 0xf0001717,
+-	0x4374: 0xf0001818, 0x4375: 0xf0001818, 0x4376: 0xf0001818, 0x4377: 0xf0001818,
+-	0x4378: 0xf0001818, 0x4379: 0xf0001818, 0x437a: 0xf0001818, 0x437b: 0xf0001818,
+-	0x437c: 0xf0001919, 0x437d: 0xf0001a1a, 0x437e: 0x4004c020, 0x437f: 0x4004c220,
+-	// Block 0x10e, offset 0x4380
+-	0x4390: 0xe00015d4, 0x4391: 0xe00015e4, 0x4392: 0xe00015e0, 0x4393: 0xe00015e8,
+-	0x4394: 0xe00015ec, 0x4395: 0xe00015f8, 0x4396: 0xe00015fc, 0x4397: 0xe0001600,
+-	0x4398: 0xe0001621, 0x4399: 0xe000161d, 0x439a: 0xe0001635, 0x439b: 0xe0001631,
+-	0x439c: 0xe0001646, 0x439d: 0xe000163e, 0x439e: 0xe0001642, 0x439f: 0xe000165a,
+-	0x43a0: 0xe0001656, 0x43a1: 0xe0001652, 0x43a2: 0xe0001662, 0x43a3: 0xe000165e,
+-	0x43a4: 0xe000168a, 0x43a5: 0xe0001686, 0x43a6: 0xe00016b6, 0x43a7: 0xe000166e,
+-	0x43a8: 0xe000166a, 0x43a9: 0xe0001666, 0x43aa: 0xe000167a, 0x43ab: 0xe0001676,
+-	0x43ac: 0xe0001682, 0x43ad: 0xe000167e, 0x43ae: 0xe00016ba, 0x43af: 0xe00016c6,
+-	0x43b0: 0xe00016c2, 0x43b1: 0xe00016ce, 0x43b2: 0xe00016ca, 0x43b3: 0xe00016d2,
+-	0x43b4: 0xe00016d6, 0x43b5: 0xe00016de, 0x43b6: 0xe00016eb, 0x43b7: 0xe00016e7,
+-	0x43b8: 0xe00016ef, 0x43b9: 0xe00016f7, 0x43ba: 0xe00016ff, 0x43bb: 0xe00016fb,
+-	0x43bc: 0xe0001707, 0x43bd: 0xe0001703, 0x43be: 0xe0001717, 0x43bf: 0xe000171b,
+-	// Block 0x10f, offset 0x43c0
+-	0x43c0: 0xe0001759, 0x43c1: 0xe0001761, 0x43c2: 0xe000175d, 0x43c3: 0xe0001741,
+-	0x43c4: 0xe0001745, 0x43c5: 0xe0001769, 0x43c6: 0xe0001765, 0x43c7: 0xe0001771,
+-	0x43c8: 0xe000176d, 0x43c9: 0xe000178c, 0x43ca: 0xe0001790, 0x43cb: 0xe0001799,
+-	0x43cc: 0xe000177c, 0x43cd: 0xe0001784, 0x43ce: 0xe000179d, 0x43cf: 0xe00017a1,
+-	0x43d2: 0xe0001780, 0x43d3: 0xe00017d9,
+-	0x43d4: 0xe00017dd, 0x43d5: 0xe00017c5, 0x43d6: 0xe00017c9, 0x43d7: 0xe00017b9,
+-	0x43d8: 0xe00017b5, 0x43d9: 0xe00017bd, 0x43da: 0xe00017d5, 0x43db: 0xe00017d1,
+-	0x43dc: 0xe00017f8, 0x43dd: 0xe00017f4, 0x43de: 0xe00015d0, 0x43df: 0xe00015dc,
+-	0x43e0: 0xe00015d8, 0x43e1: 0xe00015f4, 0x43e2: 0xe00015f0, 0x43e3: 0xe0001608,
+-	0x43e4: 0xe0001604, 0x43e5: 0xe0001629, 0x43e6: 0xe000160c, 0x43e7: 0xe0001625,
+-	0x43e8: 0xe000164a, 0x43e9: 0xe000168e, 0x43ea: 0xe0001672, 0x43eb: 0xe00016be,
+-	0x43ec: 0xe0001751, 0x43ed: 0xe0001775, 0x43ee: 0xe00017f0, 0x43ef: 0xe00017ec,
+-	0x43f0: 0xe00017fc, 0x43f1: 0xe00017a9, 0x43f2: 0xe000171f, 0x43f3: 0xe00017cd,
+-	0x43f4: 0xe0001713, 0x43f5: 0xe0001755, 0x43f6: 0xe00016f3, 0x43f7: 0xe000172b,
+-	0x43f8: 0xe00017ad, 0x43f9: 0xe00017a5, 0x43fa: 0xe0001749, 0x43fb: 0xe0001727,
+-	0x43fc: 0xe000174d, 0x43fd: 0xe00017b1, 0x43fe: 0xe0001610, 0x43ff: 0xe000162d,
+-	// Block 0x110, offset 0x4400
+-	0x4400: 0xe0001788, 0x4401: 0xe000170b, 0x4402: 0xe00015cc, 0x4403: 0xe0001723,
+-	0x4404: 0xe00016da, 0x4405: 0xe00016b2, 0x4406: 0xe000164e, 0x4407: 0xe00017c1,
+-	0x4430: 0xe00016ae, 0x4431: 0xe000170f, 0x4432: 0xe00015c7, 0x4433: 0xe00015c2,
+-	0x4434: 0xe0001794, 0x4435: 0xe0001692, 0x4436: 0xe0001639, 0x4437: 0xe00016e2,
+-	0x4438: 0xe00017e7, 0x4439: 0xe0001697, 0x443a: 0xe000169b, 0x443b: 0xe0001614,
+-	0x443c: 0x40282e20, 0x443d: 0x40071620,
+-	// Block 0x111, offset 0x4440
+-	0x4440: 0xa0000000, 0x4441: 0xa0000000, 0x4442: 0xa0000000, 0x4443: 0xa0000000,
+-	0x4444: 0xa0000000, 0x4445: 0xa0000000, 0x4446: 0xa0000000, 0x4447: 0xa0000000,
+-	0x4448: 0xa0000000, 0x4449: 0xa0000000, 0x444a: 0xa0000000, 0x444b: 0xa0000000,
+-	0x444c: 0xa0000000, 0x444d: 0xa0000000, 0x444e: 0xa0000000, 0x444f: 0xa0000000,
+-	0x4450: 0x00024096, 0x4451: 0x00025c96, 0x4452: 0x00030496, 0x4453: 0x00026c96,
+-	0x4454: 0x00026296, 0x4455: 0x0002ba96, 0x4456: 0x0002c496, 0x4457: 0x0004b496,
+-	0x4458: 0x0004b696, 0x4459: 0xf0001616,
+-	0x4460: 0xae608202, 0x4461: 0xae600000, 0x4462: 0xae608102, 0x4463: 0xae600000,
+-	0x4464: 0xae600000, 0x4465: 0xae600000, 0x4466: 0xae600000,
+-	0x4470: 0xf0001f16, 0x4471: 0x00022c96, 0x4472: 0x00022a96, 0x4473: 0x00021696,
+-	0x4474: 0x00021696, 0x4475: 0x0003f496, 0x4476: 0x0003f696, 0x4477: 0x0003fc96,
+-	0x4478: 0x0003fe96, 0x4479: 0x0004b096, 0x447a: 0x0004b296, 0x447b: 0x0004ac96,
+-	0x447c: 0x0004ae96, 0x447d: 0x0004a096, 0x447e: 0x0004a296, 0x447f: 0x00049c96,
+-	// Block 0x112, offset 0x4480
+-	0x4480: 0x00049e96, 0x4481: 0x0004a496, 0x4482: 0x0004a696, 0x4483: 0x0004a896,
+-	0x4484: 0x0004aa96, 0x4485: 0x40025e20, 0x4486: 0x40026020, 0x4487: 0x0003f896,
+-	0x4488: 0x0003fa96, 0x4489: 0x00021484, 0x448a: 0x00021484, 0x448b: 0x00021484,
+-	0x448c: 0x00021484, 0x448d: 0x00021684, 0x448e: 0x00021684, 0x448f: 0x00021684,
+-	0x4490: 0x0002408f, 0x4491: 0x00025c8f, 0x4492: 0x0002e48f,
+-	0x4494: 0x0002628f, 0x4495: 0x00026c8f, 0x4496: 0x0002c48f, 0x4497: 0x0002ba8f,
+-	0x4498: 0x00022c8f, 0x4499: 0x0003f48f, 0x449a: 0x0003f68f, 0x449b: 0x0003fc8f,
+-	0x449c: 0x0003fe8f, 0x449d: 0x0004b08f, 0x449e: 0x0004b28f, 0x449f: 0x0004ea8f,
+-	0x44a0: 0x0004e68f, 0x44a1: 0x0004d88f, 0x44a2: 0x0009388f, 0x44a3: 0x00021a8f,
+-	0x44a4: 0x0009408f, 0x44a5: 0x0009448f, 0x44a6: 0x0009428f,
+-	0x44a8: 0x0004e48f, 0x44a9: 0x0027de8f, 0x44aa: 0x0004ec8f, 0x44ab: 0x0004d68f,
+-	0x44b0: 0xa000a21a, 0x44b1: 0xa000a218, 0x44b2: 0xa000a51a, 0x44b3: 0xa0000000,
+-	0x44b4: 0xa000a91a, 0x44b6: 0xa000ad1a, 0x44b7: 0xa000ad18,
+-	0x44b8: 0xa000b21a, 0x44b9: 0xa000b218, 0x44ba: 0xa000b61a, 0x44bb: 0xa000b618,
+-	0x44bc: 0xa000ba1a, 0x44bd: 0xa000ba18, 0x44be: 0xa000bc1a, 0x44bf: 0xa000bc18,
+-	// Block 0x113, offset 0x44c0
+-	0x44c0: 0x00391c9a, 0x44c1: 0x00391e9a, 0x44c2: 0x00391e99, 0x44c3: 0x0039209a,
+-	0x44c4: 0x00392099, 0x44c5: 0x0039269a, 0x44c6: 0x00392699, 0x44c7: 0x0039289a,
+-	0x44c8: 0x00392899, 0x44c9: 0x0039309a, 0x44ca: 0x00393099, 0x44cb: 0x00393097,
+-	0x44cc: 0x00393098, 0x44cd: 0x0039389a, 0x44ce: 0x00393899, 0x44cf: 0x00393c9a,
+-	0x44d0: 0x00393c99, 0x44d1: 0x00393c97, 0x44d2: 0x00393c98, 0x44d3: 0x0039549a,
+-	0x44d4: 0x00395499, 0x44d5: 0x0039569a, 0x44d6: 0x00395699, 0x44d7: 0x00395697,
+-	0x44d8: 0x00395698, 0x44d9: 0x0039589a, 0x44da: 0x00395899, 0x44db: 0x00395897,
+-	0x44dc: 0x00395898, 0x44dd: 0x0039649a, 0x44de: 0x00396499, 0x44df: 0x00396497,
+-	0x44e0: 0x00396498, 0x44e1: 0x0039729a, 0x44e2: 0x00397299, 0x44e3: 0x00397297,
+-	0x44e4: 0x00397298, 0x44e5: 0x0039749a, 0x44e6: 0x00397499, 0x44e7: 0x00397497,
+-	0x44e8: 0x00397498, 0x44e9: 0x0039889a, 0x44ea: 0x00398899, 0x44eb: 0x00398a9a,
+-	0x44ec: 0x00398a99, 0x44ed: 0x0039a49a, 0x44ee: 0x0039a499, 0x44ef: 0x0039a69a,
+-	0x44f0: 0x0039a699, 0x44f1: 0x0039c69a, 0x44f2: 0x0039c699, 0x44f3: 0x0039c697,
+-	0x44f4: 0x0039c698, 0x44f5: 0x0039c89a, 0x44f6: 0x0039c899, 0x44f7: 0x0039c897,
+-	0x44f8: 0x0039c898, 0x44f9: 0x0039dc9a, 0x44fa: 0x0039dc99, 0x44fb: 0x0039dc97,
+-	0x44fc: 0x0039dc98, 0x44fd: 0x0039de9a, 0x44fe: 0x0039de99, 0x44ff: 0x0039de97,
+-	// Block 0x114, offset 0x4500
+-	0x4500: 0x0039de98, 0x4501: 0x0039e69a, 0x4502: 0x0039e699, 0x4503: 0x0039e697,
+-	0x4504: 0x0039e698, 0x4505: 0x0039e89a, 0x4506: 0x0039e899, 0x4507: 0x0039e897,
+-	0x4508: 0x0039e898, 0x4509: 0x0039ee9a, 0x450a: 0x0039ee99, 0x450b: 0x0039ee97,
+-	0x450c: 0x0039ee98, 0x450d: 0x0039f09a, 0x450e: 0x0039f099, 0x450f: 0x0039f097,
+-	0x4510: 0x0039f098, 0x4511: 0x0039fc9a, 0x4512: 0x0039fc99, 0x4513: 0x0039fc97,
+-	0x4514: 0x0039fc98, 0x4515: 0x003a129a, 0x4516: 0x003a1299, 0x4517: 0x003a1297,
+-	0x4518: 0x003a1298, 0x4519: 0x003a1a9a, 0x451a: 0x003a1a99, 0x451b: 0x003a1a97,
+-	0x451c: 0x003a1a98, 0x451d: 0x003a409a, 0x451e: 0x003a4099, 0x451f: 0x003a4097,
+-	0x4520: 0x003a4098, 0x4521: 0x003a4e9a, 0x4522: 0x003a4e99, 0x4523: 0x003a4e97,
+-	0x4524: 0x003a4e98, 0x4525: 0x003a569a, 0x4526: 0x003a5699, 0x4527: 0x003a5697,
+-	0x4528: 0x003a5698, 0x4529: 0x003a689a, 0x452a: 0x003a6899, 0x452b: 0x003a6897,
+-	0x452c: 0x003a6898, 0x452d: 0x003a749a, 0x452e: 0x003a7499, 0x452f: 0x003a8e9a,
+-	0x4530: 0x003a8e99, 0x4531: 0x003a909a, 0x4532: 0x003a9099, 0x4533: 0x003a9097,
+-	0x4534: 0x003a9098, 0x4535: 0xe0001732, 0x4536: 0xe000172f, 0x4537: 0xe0001738,
+-	0x4538: 0xe0001735, 0x4539: 0xe000173e, 0x453a: 0xe000173b, 0x453b: 0xf0001a1a,
+-	0x453c: 0xf0001919, 0x453f: 0xa0000000,
+-	// Block 0x115, offset 0x4540
+-	0x4541: 0x0002ba83, 0x4542: 0x0003e083, 0x4543: 0x0004ea83,
+-	0x4544: 0x0027de83, 0x4545: 0x0004ec83, 0x4546: 0x0004e683, 0x4547: 0x0003d283,
+-	0x4548: 0x0003f483, 0x4549: 0x0003f683, 0x454a: 0x0004d883, 0x454b: 0x00093883,
+-	0x454c: 0x00024083, 0x454d: 0x00021a83, 0x454e: 0x0002e483, 0x454f: 0x0004e283,
+-	0x4550: 0x0029cc83, 0x4551: 0x0029ce83, 0x4552: 0x0029d083, 0x4553: 0x0029d283,
+-	0x4554: 0x0029d483, 0x4555: 0x0029d683, 0x4556: 0x0029d883, 0x4557: 0x0029da83,
+-	0x4558: 0x0029dc83, 0x4559: 0x0029de83, 0x455a: 0x00026c83, 0x455b: 0x00026283,
+-	0x455c: 0x00094083, 0x455d: 0x00094283, 0x455e: 0x00094483, 0x455f: 0x0002c483,
+-	0x4560: 0x0004d683, 0x4561: 0x002bde89, 0x4562: 0x002c0a89, 0x4563: 0x002c3a89,
+-	0x4564: 0x002c6289, 0x4565: 0x002c9889, 0x4566: 0x002d0889, 0x4567: 0x002d2289,
+-	0x4568: 0x002d6889, 0x4569: 0x002d9a89, 0x456a: 0x002dcc89, 0x456b: 0x002dfe89,
+-	0x456c: 0x002e2289, 0x456d: 0x002e8289, 0x456e: 0x002e9e89, 0x456f: 0x002ee289,
+-	0x4570: 0x002f2c89, 0x4571: 0x002f5689, 0x4572: 0x002f7a89, 0x4573: 0x002fe689,
+-	0x4574: 0x00302c89, 0x4575: 0x00306c89, 0x4576: 0x0030be89, 0x4577: 0x0030e289,
+-	0x4578: 0x0030f689, 0x4579: 0x00310089, 0x457a: 0x00312a89, 0x457b: 0x0003f883,
+-	0x457c: 0x0004e483, 0x457d: 0x0003fa83, 0x457e: 0x00062483, 0x457f: 0x00021683,
+-	// Block 0x116, offset 0x4580
+-	0x4580: 0x00061e83, 0x4581: 0x002bde83, 0x4582: 0x002c0a83, 0x4583: 0x002c3a83,
+-	0x4584: 0x002c6283, 0x4585: 0x002c9883, 0x4586: 0x002d0883, 0x4587: 0x002d2283,
+-	0x4588: 0x002d6883, 0x4589: 0x002d9a83, 0x458a: 0x002dcc83, 0x458b: 0x002dfe83,
+-	0x458c: 0x002e2283, 0x458d: 0x002e8283, 0x458e: 0x002e9e83, 0x458f: 0x002ee283,
+-	0x4590: 0x002f2c83, 0x4591: 0x002f5683, 0x4592: 0x002f7a83, 0x4593: 0x002fe683,
+-	0x4594: 0x00302c83, 0x4595: 0x00306c83, 0x4596: 0x0030be83, 0x4597: 0x0030e283,
+-	0x4598: 0x0030f683, 0x4599: 0x00310083, 0x459a: 0x00312a83, 0x459b: 0x0003fc83,
+-	0x459c: 0x00094883, 0x459d: 0x0003fe83, 0x459e: 0x00094c83, 0x459f: 0x00041883,
+-	0x45a0: 0x00041a83, 0x45a1: 0x00030492, 0x45a2: 0x0004a492, 0x45a3: 0x0004a692,
+-	0x45a4: 0x00025c92, 0x45a5: 0x00023e92, 0x45a6: 0x0065d692, 0x45a7: 0x00657690,
+-	0x45a8: 0x00657890, 0x45a9: 0x00657a90, 0x45aa: 0x00657e90, 0x45ab: 0x00658090,
+-	0x45ac: 0x0065be90, 0x45ad: 0x0065c090, 0x45ae: 0x0065c490, 0x45af: 0x00659a90,
+-	0x45b0: 0x0027d692, 0x45b1: 0x00657692, 0x45b2: 0x00657892, 0x45b3: 0x00657a92,
+-	0x45b4: 0x00657e92, 0x45b5: 0x00658092, 0x45b6: 0x00658292, 0x45b7: 0x00658492,
+-	0x45b8: 0x00658692, 0x45b9: 0x00658892, 0x45ba: 0x00658a92, 0x45bb: 0x00658c92,
+-	0x45bc: 0x00658e92, 0x45bd: 0x00659092, 0x45be: 0x00659292, 0x45bf: 0x00659492,
+-	// Block 0x117, offset 0x45c0
+-	0x45c0: 0x00659692, 0x45c1: 0x00659892, 0x45c2: 0x00659a92, 0x45c3: 0x00659c92,
+-	0x45c4: 0x00659e92, 0x45c5: 0x0065a092, 0x45c6: 0x0065a292, 0x45c7: 0x0065a492,
+-	0x45c8: 0x0065a692, 0x45c9: 0x0065a892, 0x45ca: 0x0065aa92, 0x45cb: 0x0065ac92,
+-	0x45cc: 0x0065ae92, 0x45cd: 0x0065b092, 0x45ce: 0x0065b292, 0x45cf: 0x0065b492,
+-	0x45d0: 0x0065b692, 0x45d1: 0x0065b892, 0x45d2: 0x0065ba92, 0x45d3: 0x0065bc92,
+-	0x45d4: 0x0065be92, 0x45d5: 0x0065c092, 0x45d6: 0x0065c492, 0x45d7: 0x0065c692,
+-	0x45d8: 0x0065c892, 0x45d9: 0x0065ca92, 0x45da: 0x0065cc92, 0x45db: 0x0065ce92,
+-	0x45dc: 0x0065d092, 0x45dd: 0x0065d892, 0x45de: 0xa0012812, 0x45df: 0xa0012912,
+-	0x45e0: 0x0063a692, 0x45e1: 0x0062ac92, 0x45e2: 0x0062ae92, 0x45e3: 0x00646892,
+-	0x45e4: 0x0062b092, 0x45e5: 0x00646c92, 0x45e6: 0x00646e92, 0x45e7: 0x0062b292,
+-	0x45e8: 0x0062b492, 0x45e9: 0x0062b692, 0x45ea: 0x00647492, 0x45eb: 0x00647692,
+-	0x45ec: 0x00647892, 0x45ed: 0x00647a92, 0x45ee: 0x00647c92, 0x45ef: 0x00647e92,
+-	0x45f0: 0x0062e092, 0x45f1: 0x0062b892, 0x45f2: 0x0062ba92, 0x45f3: 0x0062bc92,
+-	0x45f4: 0x0062ee92, 0x45f5: 0x0062be92, 0x45f6: 0x0062c092, 0x45f7: 0x0062c292,
+-	0x45f8: 0x0062c492, 0x45f9: 0x0062c692, 0x45fa: 0x0062c892, 0x45fb: 0x0062ca92,
+-	0x45fc: 0x0062cc92, 0x45fd: 0x0062ce92, 0x45fe: 0x0062d092,
+-	// Block 0x118, offset 0x4600
+-	0x4602: 0x0063a892, 0x4603: 0x0063aa92,
+-	0x4604: 0x0063ac92, 0x4605: 0x0063ae92, 0x4606: 0x0063b092, 0x4607: 0x0063b292,
+-	0x460a: 0x0063b492, 0x460b: 0x0063b692,
+-	0x460c: 0x0063b892, 0x460d: 0x0063ba92, 0x460e: 0x0063bc92, 0x460f: 0x0063be92,
+-	0x4612: 0x0063c092, 0x4613: 0x0063c292,
+-	0x4614: 0x0063c492, 0x4615: 0x0063c692, 0x4616: 0x0063c892, 0x4617: 0x0063ca92,
+-	0x461a: 0x0063cc92, 0x461b: 0x0063ce92,
+-	0x461c: 0x0063d092,
+-	0x4620: 0x0027dc83, 0x4621: 0x0027e083, 0x4622: 0x00094683, 0x4623: 0x00062683,
+-	0x4624: 0x00094a83, 0x4625: 0x0027e283, 0x4626: 0x00280883,
+-	0x4628: 0x000d3292, 0x4629: 0x00084492, 0x462a: 0x00084892, 0x462b: 0x00084692,
+-	0x462c: 0x00084a92, 0x462d: 0x000e6e92, 0x462e: 0x000ec492,
+-	0x4639: 0xa0000000, 0x463a: 0xa0000000, 0x463b: 0xa0000000,
+-	0x463c: 0x4027ae20, 0x463d: 0x4027b020, 0x463e: 0x00000285, 0x463f: 0x2bfffe85,
+-	// Block 0x119, offset 0x4640
+-	0x4640: 0x40731a20, 0x4641: 0x40731c20, 0x4642: 0x40731e20, 0x4643: 0x40732020,
+-	0x4644: 0x40732220, 0x4645: 0x40732420, 0x4646: 0x40732620, 0x4647: 0x40732820,
+-	0x4648: 0x40732a20, 0x4649: 0x40732c20, 0x464a: 0x40732e20, 0x464b: 0x40733020,
+-	0x464d: 0x40733220, 0x464e: 0x40733420, 0x464f: 0x40733620,
+-	0x4650: 0x40733820, 0x4651: 0x40733a20, 0x4652: 0x40733c20, 0x4653: 0x40733e20,
+-	0x4654: 0x40734020, 0x4655: 0x40734220, 0x4656: 0x40734420, 0x4657: 0x40734620,
+-	0x4658: 0x40734820, 0x4659: 0x40734a20, 0x465a: 0x40734c20, 0x465b: 0x40734e20,
+-	0x465c: 0x40735020, 0x465d: 0x40735220, 0x465e: 0x40735420, 0x465f: 0x40735620,
+-	0x4660: 0x40735820, 0x4661: 0x40735a20, 0x4662: 0x40735c20, 0x4663: 0x40735e20,
+-	0x4664: 0x40736020, 0x4665: 0x40736220, 0x4666: 0x40736420,
+-	0x4668: 0x40736620, 0x4669: 0x40736820, 0x466a: 0x40736a20, 0x466b: 0x40736c20,
+-	0x466c: 0x40736e20, 0x466d: 0x40737020, 0x466e: 0x40737220, 0x466f: 0x40737420,
+-	0x4670: 0x40737620, 0x4671: 0x40737820, 0x4672: 0x40737a20, 0x4673: 0x40737c20,
+-	0x4674: 0x40737e20, 0x4675: 0x40738020, 0x4676: 0x40738220, 0x4677: 0x40738420,
+-	0x4678: 0x40738620, 0x4679: 0x40738820, 0x467a: 0x40738a20,
+-	0x467c: 0x40738c20, 0x467d: 0x40738e20, 0x467f: 0x40739020,
+-	// Block 0x11a, offset 0x4680
+-	0x4680: 0x40739220, 0x4681: 0x40739420, 0x4682: 0x40739620, 0x4683: 0x40739820,
+-	0x4684: 0x40739a20, 0x4685: 0x40739c20, 0x4686: 0x40739e20, 0x4687: 0x4073a020,
+-	0x4688: 0x4073a220, 0x4689: 0x4073a420, 0x468a: 0x4073a620, 0x468b: 0x4073a820,
+-	0x468c: 0x4073aa20, 0x468d: 0x4073ac20,
+-	0x4690: 0x4073ae20, 0x4691: 0x4073b020, 0x4692: 0x4073b220, 0x4693: 0x4073b420,
+-	0x4694: 0x4073b620, 0x4695: 0x4073b820, 0x4696: 0x4073ba20, 0x4697: 0x4073bc20,
+-	0x4698: 0x4073be20, 0x4699: 0x4073c020, 0x469a: 0x4073c220, 0x469b: 0x4073c420,
+-	0x469c: 0x4073c620, 0x469d: 0x4073c820,
+-	// Block 0x11b, offset 0x46c0
+-	0x46c0: 0x4073ca20, 0x46c1: 0x4073cc20, 0x46c2: 0x4073ce20, 0x46c3: 0x4073d020,
+-	0x46c4: 0x4073d220, 0x46c5: 0x4073d420, 0x46c6: 0x4073d620, 0x46c7: 0x4073d820,
+-	0x46c8: 0x4073da20, 0x46c9: 0x4073dc20, 0x46ca: 0x4073de20, 0x46cb: 0x4073e020,
+-	0x46cc: 0x4073e220, 0x46cd: 0x4073e420, 0x46ce: 0x4073e620, 0x46cf: 0x4073e820,
+-	0x46d0: 0x4073ea20, 0x46d1: 0x4073ec20, 0x46d2: 0x4073ee20, 0x46d3: 0x4073f020,
+-	0x46d4: 0x4073f220, 0x46d5: 0x4073f420, 0x46d6: 0x4073f620, 0x46d7: 0x4073f820,
+-	0x46d8: 0x4073fa20, 0x46d9: 0x4073fc20, 0x46da: 0x4073fe20, 0x46db: 0x40740020,
+-	0x46dc: 0x40740220, 0x46dd: 0x40740420, 0x46de: 0x40740620, 0x46df: 0x40740820,
+-	0x46e0: 0x40740a20, 0x46e1: 0x40740c20, 0x46e2: 0x40740e20, 0x46e3: 0x40741020,
+-	0x46e4: 0x40741220, 0x46e5: 0x40741420, 0x46e6: 0x40741620, 0x46e7: 0x40741820,
+-	0x46e8: 0x40741a20, 0x46e9: 0x40741c20, 0x46ea: 0x40741e20, 0x46eb: 0x40742020,
+-	0x46ec: 0x40742220, 0x46ed: 0x40742420, 0x46ee: 0x40742620, 0x46ef: 0x40742820,
+-	0x46f0: 0x40742a20, 0x46f1: 0x40742c20, 0x46f2: 0x40742e20, 0x46f3: 0x40743020,
+-	0x46f4: 0x40743220, 0x46f5: 0x40743420, 0x46f6: 0x40743620, 0x46f7: 0x40743820,
+-	0x46f8: 0x40743a20, 0x46f9: 0x40743c20, 0x46fa: 0x40743e20, 0x46fb: 0x40744020,
+-	0x46fc: 0x40744220, 0x46fd: 0x40744420, 0x46fe: 0x40744620, 0x46ff: 0x40744820,
+-	// Block 0x11c, offset 0x4700
+-	0x4700: 0x40744a20, 0x4701: 0x40744c20, 0x4702: 0x40744e20, 0x4703: 0x40745020,
+-	0x4704: 0x40745220, 0x4705: 0x40745420, 0x4706: 0x40745620, 0x4707: 0x40745820,
+-	0x4708: 0x40745a20, 0x4709: 0x40745c20, 0x470a: 0x40745e20, 0x470b: 0x40746020,
+-	0x470c: 0x40746220, 0x470d: 0x40746420, 0x470e: 0x40746620, 0x470f: 0x40746820,
+-	0x4710: 0x40746a20, 0x4711: 0x40746c20, 0x4712: 0x40746e20, 0x4713: 0x40747020,
+-	0x4714: 0x40747220, 0x4715: 0x40747420, 0x4716: 0x40747620, 0x4717: 0x40747820,
+-	0x4718: 0x40747a20, 0x4719: 0x40747c20, 0x471a: 0x40747e20, 0x471b: 0x40748020,
+-	0x471c: 0x40748220, 0x471d: 0x40748420, 0x471e: 0x40748620, 0x471f: 0x40748820,
+-	0x4720: 0x40748a20, 0x4721: 0x40748c20, 0x4722: 0x40748e20, 0x4723: 0x40749020,
+-	0x4724: 0x40749220, 0x4725: 0x40749420, 0x4726: 0x40749620, 0x4727: 0x40749820,
+-	0x4728: 0x40749a20, 0x4729: 0x40749c20, 0x472a: 0x40749e20, 0x472b: 0x4074a020,
+-	0x472c: 0x4074a220, 0x472d: 0x4074a420, 0x472e: 0x4074a620, 0x472f: 0x4074a820,
+-	0x4730: 0x4074aa20, 0x4731: 0x4074ac20, 0x4732: 0x4074ae20, 0x4733: 0x4074b020,
+-	0x4734: 0x4074b220, 0x4735: 0x4074b420, 0x4736: 0x4074b620, 0x4737: 0x4074b820,
+-	0x4738: 0x4074ba20, 0x4739: 0x4074bc20, 0x473a: 0x4074be20,
+-	// Block 0x11d, offset 0x4740
+-	0x4740: 0x4003be20, 0x4741: 0x4003c020, 0x4742: 0x4003c220,
+-	0x4747: 0xe000026a,
+-	0x4748: 0xe0000382, 0x4749: 0xe000045c, 0x474a: 0xe0000531, 0x474b: 0xe00005fb,
+-	0x474c: 0xe00006c6, 0x474d: 0xe000076e, 0x474e: 0xe000081a, 0x474f: 0xe00008bf,
+-	0x4750: 0x4028ba20, 0x4751: 0x4028bc20, 0x4752: 0x4028be20, 0x4753: 0x4028c020,
+-	0x4754: 0x4028c220, 0x4755: 0x4028c420, 0x4756: 0x4028c620, 0x4757: 0x4028c820,
+-	0x4758: 0x4028ca20, 0x4759: 0x4028cc20, 0x475a: 0x4028ce20, 0x475b: 0x4028d020,
+-	0x475c: 0x4028d220, 0x475d: 0x4028d420, 0x475e: 0x4028d620, 0x475f: 0x4028d820,
+-	0x4760: 0x4028da20, 0x4761: 0x4028dc20, 0x4762: 0x4028de20, 0x4763: 0x4028e020,
+-	0x4764: 0x4028e220, 0x4765: 0x4028e420, 0x4766: 0x4028e620, 0x4767: 0x4028e820,
+-	0x4768: 0x4028ea20, 0x4769: 0x4028ec20, 0x476a: 0x4028ee20, 0x476b: 0x4028f020,
+-	0x476c: 0x4028f220, 0x476d: 0x4028f420, 0x476e: 0x4028f620, 0x476f: 0x4028f820,
+-	0x4770: 0x4028fa20, 0x4771: 0x4028fc20, 0x4772: 0x4028fe20, 0x4773: 0x40290020,
+-	0x4777: 0x401afe20,
+-	0x4778: 0x401b0020, 0x4779: 0x401b0220, 0x477a: 0x401b0420, 0x477b: 0x401b0620,
+-	0x477c: 0x401b0820, 0x477d: 0x401b0a20, 0x477e: 0x401b0c20, 0x477f: 0x401b0e20,
+-	// Block 0x11e, offset 0x4780
+-	0x4780: 0x40290220, 0x4781: 0x40290420, 0x4782: 0xe000026d, 0x4783: 0xe00005fe,
+-	0x4784: 0x40290620, 0x4785: 0x40290820, 0x4786: 0x40290a20, 0x4787: 0x40290c20,
+-	0x4788: 0xe0000601, 0x4789: 0x40290e20, 0x478a: 0x40291020, 0x478b: 0x40291220,
+-	0x478c: 0x40291420, 0x478d: 0x40291620, 0x478e: 0x40291820, 0x478f: 0xe0000604,
+-	0x4790: 0x40291a20, 0x4791: 0x40291c20, 0x4792: 0x40291e20, 0x4793: 0x40292020,
+-	0x4794: 0x40292220, 0x4795: 0x40292420, 0x4796: 0x40292620, 0x4797: 0x40292820,
+-	0x4798: 0xe0000270, 0x4799: 0xe0000273, 0x479a: 0xe0000276, 0x479b: 0xe0000385,
+-	0x479c: 0xe0000388, 0x479d: 0xe000038b, 0x479e: 0xe000038e, 0x479f: 0xe0000607,
+-	0x47a0: 0x40292a20, 0x47a1: 0x40292c20, 0x47a2: 0x40292e20, 0x47a3: 0x40293020,
+-	0x47a4: 0x40293220, 0x47a5: 0x40293420, 0x47a6: 0x40293620, 0x47a7: 0x40293820,
+-	0x47a8: 0x40293a20, 0x47a9: 0x40293c20, 0x47aa: 0x40293e20, 0x47ab: 0x40294020,
+-	0x47ac: 0x40294220, 0x47ad: 0x40294420, 0x47ae: 0x40294620, 0x47af: 0x40294820,
+-	0x47b0: 0x40294a20, 0x47b1: 0x40294c20, 0x47b2: 0x40294e20, 0x47b3: 0xe000060a,
+-	0x47b4: 0x40295020, 0x47b5: 0x40295220, 0x47b6: 0x40295420, 0x47b7: 0x40295620,
+-	0x47b8: 0x40295820, 0x47b9: 0x401b1020, 0x47ba: 0x401b1220, 0x47bb: 0x401b1420,
+-	0x47bc: 0x401b1620, 0x47bd: 0x401b1820, 0x47be: 0x401b1a20, 0x47bf: 0x401b1c20,
+-	// Block 0x11f, offset 0x47c0
+-	0x47c0: 0x401b1e20, 0x47c1: 0x401b2020, 0x47c2: 0x401b2220, 0x47c3: 0x401b2420,
+-	0x47c4: 0x401b2620, 0x47c5: 0x401b2820, 0x47c6: 0x401b2a20, 0x47c7: 0x401b2c20,
+-	0x47c8: 0x401b2e20, 0x47c9: 0x401b3020, 0x47ca: 0xe00001d6,
+-	0x47d0: 0x401b3220, 0x47d1: 0x401b3420, 0x47d2: 0x401b3620, 0x47d3: 0x401b3820,
+-	0x47d4: 0x401b3a20, 0x47d5: 0x401b3c20, 0x47d6: 0x401b3e20, 0x47d7: 0x401b4020,
+-	0x47d8: 0x401b4220, 0x47d9: 0x401b4420, 0x47da: 0x401b4620, 0x47db: 0x401b4820,
+-	// Block 0x120, offset 0x4800
+-	0x4810: 0x401b4a20, 0x4811: 0x401b4c20, 0x4812: 0x401b4e20, 0x4813: 0x401b5020,
+-	0x4814: 0x401b5220, 0x4815: 0x401b5420, 0x4816: 0x401b5620, 0x4817: 0x401b5820,
+-	0x4818: 0x401b5a20, 0x4819: 0x401b5c20, 0x481a: 0x401b5e20, 0x481b: 0x401b6020,
+-	0x481c: 0x401b6220, 0x481d: 0x401b6420, 0x481e: 0x401b6620, 0x481f: 0x401b6820,
+-	0x4820: 0x401b6a20, 0x4821: 0x401b6c20, 0x4822: 0x401b6e20, 0x4823: 0x401b7020,
+-	0x4824: 0x401b7220, 0x4825: 0x401b7420, 0x4826: 0x401b7620, 0x4827: 0x401b7820,
+-	0x4828: 0x401b7a20, 0x4829: 0x401b7c20, 0x482a: 0x401b7e20, 0x482b: 0x401b8020,
+-	0x482c: 0x401b8220, 0x482d: 0x401b8420, 0x482e: 0x401b8620, 0x482f: 0x401b8820,
+-	0x4830: 0x401b8a20, 0x4831: 0x401b8c20, 0x4832: 0x401b8e20, 0x4833: 0x401b9020,
+-	0x4834: 0x401b9220, 0x4835: 0x401b9420, 0x4836: 0x401b9620, 0x4837: 0x401b9820,
+-	0x4838: 0x401b9a20, 0x4839: 0x401b9c20, 0x483a: 0x401b9e20, 0x483b: 0x401ba020,
+-	0x483c: 0x401ba220, 0x483d: 0xadc13802,
+-	// Block 0x121, offset 0x4840
+-	0x4840: 0x4070b820, 0x4841: 0x4070ba20, 0x4842: 0x4070bc20, 0x4843: 0x4070be20,
+-	0x4844: 0x4070c020, 0x4845: 0x4070c220, 0x4846: 0x4070c420, 0x4847: 0x4070c620,
+-	0x4848: 0x4070c820, 0x4849: 0x4070ca20, 0x484a: 0x4070cc20, 0x484b: 0x4070ce20,
+-	0x484c: 0x4070d020, 0x484d: 0x4070d220, 0x484e: 0x4070d420, 0x484f: 0x4070d620,
+-	0x4850: 0x4070d820, 0x4851: 0x4070da20, 0x4852: 0x4070dc20, 0x4853: 0x4070de20,
+-	0x4854: 0x4070e020, 0x4855: 0x4070e220, 0x4856: 0x4070e420, 0x4857: 0x4070e620,
+-	0x4858: 0x4070e820, 0x4859: 0x4070ea20, 0x485a: 0x4070ec20, 0x485b: 0x4070ee20,
+-	0x485c: 0x4070f020,
+-	0x4860: 0x4070f220, 0x4861: 0x4070f420, 0x4862: 0x4070f620, 0x4863: 0x4070f820,
+-	0x4864: 0x4070fa20, 0x4865: 0x4070fc20, 0x4866: 0x4070fe20, 0x4867: 0x40710020,
+-	0x4868: 0x40710220, 0x4869: 0x40710420, 0x486a: 0x40710620, 0x486b: 0x40710820,
+-	0x486c: 0x40710a20, 0x486d: 0x40710c20, 0x486e: 0x40710e20, 0x486f: 0x40711020,
+-	0x4870: 0x40711220, 0x4871: 0x40711420, 0x4872: 0x40711620, 0x4873: 0x40711820,
+-	0x4874: 0x40711a20, 0x4875: 0x40711c20, 0x4876: 0x40711e20, 0x4877: 0x40712020,
+-	0x4878: 0x40712220, 0x4879: 0x40712420, 0x487a: 0x40712620, 0x487b: 0x40712820,
+-	0x487c: 0x40712a20, 0x487d: 0x40712c20, 0x487e: 0x40712e20, 0x487f: 0x40713020,
+-	// Block 0x122, offset 0x4880
+-	0x4880: 0x40713220, 0x4881: 0x40713420, 0x4882: 0x40713620, 0x4883: 0x40713820,
+-	0x4884: 0x40713a20, 0x4885: 0x40713c20, 0x4886: 0x40713e20, 0x4887: 0x40714020,
+-	0x4888: 0x40714220, 0x4889: 0x40714420, 0x488a: 0x40714620, 0x488b: 0x40714820,
+-	0x488c: 0x40714a20, 0x488d: 0x40714c20, 0x488e: 0x40714e20, 0x488f: 0x40715020,
+-	0x4890: 0x40715220,
+-	// Block 0x123, offset 0x48c0
+-	0x48c0: 0x40718820, 0x48c1: 0x40718a20, 0x48c2: 0x40718c20, 0x48c3: 0x40718e20,
+-	0x48c4: 0x40719020, 0x48c5: 0x40719220, 0x48c6: 0x40719420, 0x48c7: 0x40719620,
+-	0x48c8: 0x40719820, 0x48c9: 0x40719a20, 0x48ca: 0x40719c20, 0x48cb: 0x40719e20,
+-	0x48cc: 0x4071a020, 0x48cd: 0x4071a220, 0x48ce: 0x4071a420, 0x48cf: 0x4071a620,
+-	0x48d0: 0x4071a820, 0x48d1: 0x4071aa20, 0x48d2: 0x4071ac20, 0x48d3: 0x4071ae20,
+-	0x48d4: 0x4071b020, 0x48d5: 0x4071b220, 0x48d6: 0x4071b420, 0x48d7: 0x4071b620,
+-	0x48d8: 0x4071b820, 0x48d9: 0x4071ba20, 0x48da: 0x4071bc20, 0x48db: 0x4071be20,
+-	0x48dc: 0x4071c020, 0x48dd: 0x4071c220, 0x48de: 0x4071c420,
+-	0x48e0: 0xe0000279, 0x48e1: 0xe000060d, 0x48e2: 0x4028b620, 0x48e3: 0x4028b820,
+-	0x48f0: 0x4071c620, 0x48f1: 0x4071c820, 0x48f2: 0x4071ca20, 0x48f3: 0x4071cc20,
+-	0x48f4: 0x4071ce20, 0x48f5: 0x4071d020, 0x48f6: 0x4071d220, 0x48f7: 0x4071d420,
+-	0x48f8: 0x4071d620, 0x48f9: 0x4071d820, 0x48fa: 0x4071da20, 0x48fb: 0x4071dc20,
+-	0x48fc: 0x4071de20, 0x48fd: 0x4071e020, 0x48fe: 0x4071e220, 0x48ff: 0x4071e420,
+-	// Block 0x124, offset 0x4900
+-	0x4900: 0x4071e620, 0x4901: 0x4071e820, 0x4902: 0x4071ea20, 0x4903: 0x4071ec20,
+-	0x4904: 0x4071ee20, 0x4905: 0x4071f020, 0x4906: 0x4071f220, 0x4907: 0x4071f420,
+-	0x4908: 0x4071f620, 0x4909: 0x4071f820, 0x490a: 0x4071fa20,
+-	// Block 0x125, offset 0x4940
+-	0x4940: 0x40765020, 0x4941: 0x40765220, 0x4942: 0x40765420, 0x4943: 0x40765620,
+-	0x4944: 0x40765820, 0x4945: 0x40765a20, 0x4946: 0x40765c20, 0x4947: 0x40765e20,
+-	0x4948: 0x40766020, 0x4949: 0x40766220, 0x494a: 0x40766420, 0x494b: 0x40766620,
+-	0x494c: 0x40766820, 0x494d: 0x40766a20, 0x494e: 0x40766c20, 0x494f: 0x40766e20,
+-	0x4950: 0x40767020, 0x4951: 0x40767220, 0x4952: 0x40767420, 0x4953: 0x40767620,
+-	0x4954: 0x40767820, 0x4955: 0x40767a20, 0x4956: 0x40767c20, 0x4957: 0x40767e20,
+-	0x4958: 0x40768020, 0x4959: 0x40768220, 0x495a: 0x40768420, 0x495b: 0x40768620,
+-	0x495c: 0x40768820, 0x495d: 0x40768a20, 0x495f: 0x4003c420,
+-	0x4960: 0x40768c20, 0x4961: 0x40768e20, 0x4962: 0x40769020, 0x4963: 0x40769220,
+-	0x4964: 0x40769420, 0x4965: 0x40769620, 0x4966: 0x40769820, 0x4967: 0x40769a20,
+-	0x4968: 0x40769c20, 0x4969: 0x40769e20, 0x496a: 0x4076a020, 0x496b: 0x4076a220,
+-	0x496c: 0x4076a420, 0x496d: 0x4076a620, 0x496e: 0x4076a820, 0x496f: 0x4076aa20,
+-	0x4970: 0x4076ac20, 0x4971: 0x4076ae20, 0x4972: 0x4076b020, 0x4973: 0x4076b220,
+-	0x4974: 0x4076b420, 0x4975: 0x4076b620, 0x4976: 0x4076b820, 0x4977: 0x4076ba20,
+-	0x4978: 0x4076bc20, 0x4979: 0x4076be20, 0x497a: 0x4076c020, 0x497b: 0x4076c220,
+-	0x497c: 0x4076c420, 0x497d: 0x4076c620, 0x497e: 0x4076c820, 0x497f: 0x4076ca20,
+-	// Block 0x126, offset 0x4980
+-	0x4980: 0x4076cc20, 0x4981: 0x4076ce20, 0x4982: 0x4076d020, 0x4983: 0x4076d220,
+-	0x4988: 0x4076d420, 0x4989: 0x4076d620, 0x498a: 0x4076d820, 0x498b: 0x4076da20,
+-	0x498c: 0x4076dc20, 0x498d: 0x4076de20, 0x498e: 0x4076e020, 0x498f: 0x4076e220,
+-	0x4990: 0x4003c620, 0x4991: 0xe000027c, 0x4992: 0xe0000391, 0x4993: 0x40295a20,
+-	0x4994: 0x40295c20, 0x4995: 0x40295e20,
+-	// Block 0x127, offset 0x49c0
+-	0x49c0: 0x0071fc88, 0x49c1: 0x0071fe88, 0x49c2: 0x00720088, 0x49c3: 0x00720288,
+-	0x49c4: 0x00720488, 0x49c5: 0x00720688, 0x49c6: 0x00720888, 0x49c7: 0x00720a88,
+-	0x49c8: 0x00720c88, 0x49c9: 0x00720e88, 0x49ca: 0x00721088, 0x49cb: 0x00721288,
+-	0x49cc: 0x00721488, 0x49cd: 0x00721688, 0x49ce: 0x00721888, 0x49cf: 0x00721a88,
+-	0x49d0: 0x00721c88, 0x49d1: 0x00721e88, 0x49d2: 0x00722088, 0x49d3: 0x00722288,
+-	0x49d4: 0x00722488, 0x49d5: 0x00722688, 0x49d6: 0x00722888, 0x49d7: 0x00722a88,
+-	0x49d8: 0x00722c88, 0x49d9: 0x00722e88, 0x49da: 0x00723088, 0x49db: 0x00723288,
+-	0x49dc: 0x00723488, 0x49dd: 0x00723688, 0x49de: 0x00723888, 0x49df: 0x00723a88,
+-	0x49e0: 0x00723c88, 0x49e1: 0x00723e88, 0x49e2: 0x00724088, 0x49e3: 0x00724288,
+-	0x49e4: 0x00724488, 0x49e5: 0x00724688, 0x49e6: 0x00724888, 0x49e7: 0x00724a88,
+-	0x49e8: 0x4071fc20, 0x49e9: 0x4071fe20, 0x49ea: 0x40720020, 0x49eb: 0x40720220,
+-	0x49ec: 0x40720420, 0x49ed: 0x40720620, 0x49ee: 0x40720820, 0x49ef: 0x40720a20,
+-	0x49f0: 0x40720c20, 0x49f1: 0x40720e20, 0x49f2: 0x40721020, 0x49f3: 0x40721220,
+-	0x49f4: 0x40721420, 0x49f5: 0x40721620, 0x49f6: 0x40721820, 0x49f7: 0x40721a20,
+-	0x49f8: 0x40721c20, 0x49f9: 0x40721e20, 0x49fa: 0x40722020, 0x49fb: 0x40722220,
+-	0x49fc: 0x40722420, 0x49fd: 0x40722620, 0x49fe: 0x40722820, 0x49ff: 0x40722a20,
+-	// Block 0x128, offset 0x4a00
+-	0x4a00: 0x40722c20, 0x4a01: 0x40722e20, 0x4a02: 0x40723020, 0x4a03: 0x40723220,
+-	0x4a04: 0x40723420, 0x4a05: 0x40723620, 0x4a06: 0x40723820, 0x4a07: 0x40723a20,
+-	0x4a08: 0x40723c20, 0x4a09: 0x40723e20, 0x4a0a: 0x40724020, 0x4a0b: 0x40724220,
+-	0x4a0c: 0x40724420, 0x4a0d: 0x40724620, 0x4a0e: 0x40724820, 0x4a0f: 0x40724a20,
+-	0x4a10: 0x40724c20, 0x4a11: 0x40724e20, 0x4a12: 0x40725020, 0x4a13: 0x40725220,
+-	0x4a14: 0x40725420, 0x4a15: 0x40725620, 0x4a16: 0x40725820, 0x4a17: 0x40725a20,
+-	0x4a18: 0x40725c20, 0x4a19: 0x40725e20, 0x4a1a: 0x40726020, 0x4a1b: 0x40726220,
+-	0x4a1c: 0x40726420, 0x4a1d: 0x40726620, 0x4a1e: 0x40726820, 0x4a1f: 0x40726a20,
+-	0x4a20: 0x40726c20, 0x4a21: 0x40726e20, 0x4a22: 0x40727020, 0x4a23: 0x40727220,
+-	0x4a24: 0x40727420, 0x4a25: 0x40727620, 0x4a26: 0x40727820, 0x4a27: 0x40727a20,
+-	0x4a28: 0x40727c20, 0x4a29: 0x40727e20, 0x4a2a: 0x40728020, 0x4a2b: 0x40728220,
+-	0x4a2c: 0x40728420, 0x4a2d: 0x40728620, 0x4a2e: 0x40728820, 0x4a2f: 0x40728a20,
+-	0x4a30: 0x40728c20, 0x4a31: 0x40728e20, 0x4a32: 0x40729020, 0x4a33: 0x40729220,
+-	0x4a34: 0x40729420, 0x4a35: 0x40729620, 0x4a36: 0x40729820, 0x4a37: 0x40729a20,
+-	0x4a38: 0x40729c20, 0x4a39: 0x40729e20, 0x4a3a: 0x4072a020, 0x4a3b: 0x4072a220,
+-	0x4a3c: 0x4072a420, 0x4a3d: 0x4072a620, 0x4a3e: 0x4072a820, 0x4a3f: 0x4072aa20,
+-	// Block 0x129, offset 0x4a40
+-	0x4a40: 0x4072ac20, 0x4a41: 0x4072ae20, 0x4a42: 0x4072b020, 0x4a43: 0x4072b220,
+-	0x4a44: 0x4072b420, 0x4a45: 0x4072b620, 0x4a46: 0x4072b820, 0x4a47: 0x4072ba20,
+-	0x4a48: 0x4072bc20, 0x4a49: 0x4072be20, 0x4a4a: 0x4072c020, 0x4a4b: 0x4072c220,
+-	0x4a4c: 0x4072c420, 0x4a4d: 0x4072c620, 0x4a4e: 0x4072c820, 0x4a4f: 0x4072ca20,
+-	0x4a50: 0x4072cc20, 0x4a51: 0x4072ce20, 0x4a52: 0x4072d020, 0x4a53: 0x4072d220,
+-	0x4a54: 0x4072d420, 0x4a55: 0x4072d620, 0x4a56: 0x4072d820, 0x4a57: 0x4072da20,
+-	0x4a58: 0x4072dc20, 0x4a59: 0x4072de20, 0x4a5a: 0x4072e020, 0x4a5b: 0x4072e220,
+-	0x4a5c: 0x4072e420, 0x4a5d: 0x4072e620,
+-	0x4a60: 0xe0000167, 0x4a61: 0xe00001f5, 0x4a62: 0xe0000310, 0x4a63: 0xe00003ea,
+-	0x4a64: 0xe00004c5, 0x4a65: 0xe000058f, 0x4a66: 0xe000065a, 0x4a67: 0xe0000702,
+-	0x4a68: 0xe00007ae, 0x4a69: 0xe0000853,
+-	// Block 0x12a, offset 0x4a80
+-	0x4a80: 0x4074c020, 0x4a81: 0x4074c220, 0x4a82: 0x4074c420, 0x4a83: 0x4074c620,
+-	0x4a84: 0x4074c820, 0x4a85: 0x4074ca20,
+-	0x4a88: 0x4074cc20, 0x4a8a: 0x4074ce20, 0x4a8b: 0x4074d020,
+-	0x4a8c: 0x4074d220, 0x4a8d: 0x4074d420, 0x4a8e: 0x4074d620, 0x4a8f: 0x4074d820,
+-	0x4a90: 0x4074da20, 0x4a91: 0x4074dc20, 0x4a92: 0x4074de20, 0x4a93: 0x4074e020,
+-	0x4a94: 0x4074e220, 0x4a95: 0x4074e420, 0x4a96: 0x4074e620, 0x4a97: 0x4074e820,
+-	0x4a98: 0x4074ea20, 0x4a99: 0x4074ec20, 0x4a9a: 0x4074ee20, 0x4a9b: 0x4074f020,
+-	0x4a9c: 0x4074f220, 0x4a9d: 0x4074f420, 0x4a9e: 0x4074f620, 0x4a9f: 0x4074f820,
+-	0x4aa0: 0x4074fa20, 0x4aa1: 0x4074fc20, 0x4aa2: 0x4074fe20, 0x4aa3: 0x40750020,
+-	0x4aa4: 0x40750220, 0x4aa5: 0x40750420, 0x4aa6: 0x40750620, 0x4aa7: 0x40750820,
+-	0x4aa8: 0x40750a20, 0x4aa9: 0x40750c20, 0x4aaa: 0x40750e20, 0x4aab: 0x40751020,
+-	0x4aac: 0x40751220, 0x4aad: 0x40751420, 0x4aae: 0x40751620, 0x4aaf: 0x40751820,
+-	0x4ab0: 0x40751a20, 0x4ab1: 0x40751c20, 0x4ab2: 0x40751e20, 0x4ab3: 0x40752020,
+-	0x4ab4: 0x40752220, 0x4ab5: 0x40752420, 0x4ab7: 0x40752620,
+-	0x4ab8: 0x40752820,
+-	0x4abc: 0x40752a20, 0x4abf: 0x40752c20,
+-	// Block 0x12b, offset 0x4ac0
+-	0x4ac0: 0x4075d220, 0x4ac1: 0x4075d420, 0x4ac2: 0x4075d620, 0x4ac3: 0x4075d820,
+-	0x4ac4: 0x4075da20, 0x4ac5: 0x4075dc20, 0x4ac6: 0x4075de20, 0x4ac7: 0x4075e020,
+-	0x4ac8: 0x4075e220, 0x4ac9: 0x4075e420, 0x4aca: 0x4075e620, 0x4acb: 0x4075e820,
+-	0x4acc: 0x4075ea20, 0x4acd: 0x4075ec20, 0x4ace: 0x4075ee20, 0x4acf: 0x4075f020,
+-	0x4ad0: 0x4075f220, 0x4ad1: 0x4075f420, 0x4ad2: 0x4075f620, 0x4ad3: 0x4075f820,
+-	0x4ad4: 0x4075fa20, 0x4ad5: 0x4075fc20, 0x4ad7: 0x40038620,
+-	0x4ad8: 0xe0000297, 0x4ad9: 0xe00003b2, 0x4ada: 0xe000048c, 0x4adb: 0x40296820,
+-	0x4adc: 0x40296a20, 0x4add: 0x40296c20, 0x4ade: 0x40296e20, 0x4adf: 0x40297020,
+-	// Block 0x12c, offset 0x4b00
+-	0x4b00: 0x4038bc20, 0x4b01: 0x4038be20, 0x4b02: 0x4038c020, 0x4b03: 0x4038c220,
+-	0x4b04: 0x4038c420, 0x4b05: 0x4038c620, 0x4b06: 0x4038c820, 0x4b07: 0x4038ca20,
+-	0x4b08: 0x4038cc20, 0x4b09: 0x4038ce20, 0x4b0a: 0x4038d020, 0x4b0b: 0x4038d220,
+-	0x4b0c: 0x4038d420, 0x4b0d: 0x4038d620, 0x4b0e: 0x4038d820, 0x4b0f: 0x4038da20,
+-	0x4b10: 0x4038dc20, 0x4b11: 0x4038de20, 0x4b12: 0x4038e020, 0x4b13: 0x4038e220,
+-	0x4b14: 0x4038e420, 0x4b15: 0x4038e620, 0x4b16: 0xe0000294, 0x4b17: 0x40296220,
+-	0x4b18: 0x40296420, 0x4b19: 0x40296620, 0x4b1a: 0xe00003af, 0x4b1b: 0xe0000489,
+-	0x4b1f: 0x4003c820,
+-	0x4b20: 0x40715420, 0x4b21: 0x40715620, 0x4b22: 0x40715820, 0x4b23: 0x40715a20,
+-	0x4b24: 0x40715c20, 0x4b25: 0x40715e20, 0x4b26: 0x40716020, 0x4b27: 0x40716220,
+-	0x4b28: 0x40716420, 0x4b29: 0x40716620, 0x4b2a: 0x40716820, 0x4b2b: 0x40716a20,
+-	0x4b2c: 0x40716c20, 0x4b2d: 0x40716e20, 0x4b2e: 0x40717020, 0x4b2f: 0x40717220,
+-	0x4b30: 0x40717420, 0x4b31: 0x40717620, 0x4b32: 0x40717820, 0x4b33: 0x40717a20,
+-	0x4b34: 0x40717c20, 0x4b35: 0x40717e20, 0x4b36: 0x40718020, 0x4b37: 0x40718220,
+-	0x4b38: 0x40718420, 0x4b39: 0x40718620,
+-	0x4b3f: 0x4003bc20,
+-	// Block 0x12d, offset 0x4b40
+-	0x4b40: 0xe00023a4, 0x4b41: 0xe00023a7, 0x4b42: 0xe00023aa, 0x4b43: 0xe00023ad,
+-	0x4b44: 0xe00023b0, 0x4b45: 0xe00023b3, 0x4b46: 0xe00023b6, 0x4b47: 0xe00023b9,
+-	0x4b48: 0xe00023bc, 0x4b49: 0xe00023bf, 0x4b4a: 0xe00023c2, 0x4b4b: 0xe00023c5,
+-	0x4b4c: 0xe00023c8, 0x4b4d: 0xe00023cb, 0x4b4e: 0xe00023ce, 0x4b4f: 0xe00023d1,
+-	0x4b50: 0xe00023d4, 0x4b51: 0xe00023d7, 0x4b52: 0xe00023da, 0x4b53: 0xe00023e0,
+-	0x4b54: 0xe00023e3, 0x4b55: 0xe00023e6, 0x4b56: 0xe00023e9, 0x4b57: 0xe00023ec,
+-	0x4b58: 0xe00023ef, 0x4b59: 0xe00023f2, 0x4b5a: 0xe00023f5, 0x4b5b: 0xe00023f8,
+-	0x4b5c: 0xe00023fb, 0x4b5d: 0xe00023fe, 0x4b5e: 0x40865220, 0x4b5f: 0x40865420,
+-	0x4b60: 0x40862020, 0x4b61: 0x40862220, 0x4b62: 0x40862420, 0x4b63: 0x40862620,
+-	0x4b64: 0x40862820, 0x4b65: 0x40862a20, 0x4b66: 0x40862c20, 0x4b67: 0x40862e20,
+-	0x4b68: 0x40863020, 0x4b69: 0x40863220, 0x4b6a: 0x40863420, 0x4b6b: 0x40863620,
+-	0x4b6c: 0x40863820, 0x4b6d: 0x40863a20, 0x4b6e: 0x40863c20, 0x4b6f: 0x40863e20,
+-	0x4b70: 0xe00023dd, 0x4b71: 0x40864020, 0x4b72: 0x40864220, 0x4b73: 0x40864420,
+-	0x4b74: 0x40864620, 0x4b75: 0x40864820, 0x4b76: 0x40864a20, 0x4b77: 0x40864c20,
+-	0x4b7e: 0x40864e20, 0x4b7f: 0x40865020,
+-	// Block 0x12e, offset 0x4b80
+-	0x4b80: 0x4048bc20, 0x4b81: 0x4048be20, 0x4b82: 0x4048c020, 0x4b83: 0x4048c220,
+-	0x4b85: 0x4048c420, 0x4b86: 0x4048c620,
+-	0x4b8c: 0x4048c820, 0x4b8d: 0xadc06002, 0x4b8e: 0xa000f302, 0x4b8f: 0xae60f402,
+-	0x4b90: 0x4048ca20, 0x4b91: 0x4048cc20, 0x4b92: 0x4048ce20, 0x4b93: 0x4048d020,
+-	0x4b95: 0x4048d220, 0x4b96: 0x4048d420, 0x4b97: 0x4048d620,
+-	0x4b99: 0x4048d820, 0x4b9a: 0x4048da20, 0x4b9b: 0x4048dc20,
+-	0x4b9c: 0x4048de20, 0x4b9d: 0x4048e020, 0x4b9e: 0x4048e220, 0x4b9f: 0x4048e420,
+-	0x4ba0: 0x4048e620, 0x4ba1: 0x4048e820, 0x4ba2: 0x4048ea20, 0x4ba3: 0x4048ec20,
+-	0x4ba4: 0x4048ee20, 0x4ba5: 0x4048f020, 0x4ba6: 0x4048f220, 0x4ba7: 0x4048f420,
+-	0x4ba8: 0x4048f620, 0x4ba9: 0x4048f820, 0x4baa: 0x4048fa20, 0x4bab: 0x4048fc20,
+-	0x4bac: 0x4048fe20, 0x4bad: 0x40490020, 0x4bae: 0x40490220, 0x4baf: 0x40490420,
+-	0x4bb0: 0x40490620, 0x4bb1: 0x40490820, 0x4bb2: 0x40490a20, 0x4bb3: 0x40490c20,
+-	0x4bb8: 0xae60fb02, 0x4bb9: 0xa010fc02, 0x4bba: 0xadc0fd02,
+-	0x4bbf: 0x82092487,
+-	// Block 0x12f, offset 0x4bc0
+-	0x4bc0: 0xe00002ac, 0x4bc1: 0xe00003c7, 0x4bc2: 0xe00004a1, 0x4bc3: 0xe0000573,
+-	0x4bc4: 0x40299820, 0x4bc5: 0x40299a20, 0x4bc6: 0x40299c20, 0x4bc7: 0x40299e20,
+-	0x4bd0: 0x40060620, 0x4bd1: 0x40060820, 0x4bd2: 0x40060a20, 0x4bd3: 0x40060c20,
+-	0x4bd4: 0x40060e20, 0x4bd5: 0x40061020, 0x4bd6: 0x40034420, 0x4bd7: 0x40034620,
+-	0x4bd8: 0x40061220,
+-	0x4be0: 0x40752e20, 0x4be1: 0x40753020, 0x4be2: 0x40753220, 0x4be3: 0x40753420,
+-	0x4be4: 0x40753620, 0x4be5: 0x40753820, 0x4be6: 0x40753a20, 0x4be7: 0x40753c20,
+-	0x4be8: 0x40753e20, 0x4be9: 0x40754020, 0x4bea: 0x40754220, 0x4beb: 0x40754420,
+-	0x4bec: 0x40754620, 0x4bed: 0x40754820, 0x4bee: 0x40754a20, 0x4bef: 0x40754c20,
+-	0x4bf0: 0x40754e20, 0x4bf1: 0x40755020, 0x4bf2: 0x40755220, 0x4bf3: 0x40755420,
+-	0x4bf4: 0x40755620, 0x4bf5: 0x40755820, 0x4bf6: 0x40755a20, 0x4bf7: 0x40755c20,
+-	0x4bf8: 0x40755e20, 0x4bf9: 0x40756020, 0x4bfa: 0x40756220, 0x4bfb: 0x40756420,
+-	0x4bfc: 0x40756620, 0x4bfd: 0xe0000291, 0x4bfe: 0x40296020, 0x4bff: 0x40061c20,
+-	// Block 0x130, offset 0x4c00
+-	0x4c00: 0x40756820, 0x4c01: 0x40756a20, 0x4c02: 0x40756c20, 0x4c03: 0x40756e20,
+-	0x4c04: 0x40757020, 0x4c05: 0x40757220, 0x4c06: 0x40757420, 0x4c07: 0x40757620,
+-	0x4c08: 0x40757820, 0x4c09: 0x40757a20, 0x4c0a: 0x40757c20, 0x4c0b: 0x40757e20,
+-	0x4c0c: 0x40758020, 0x4c0d: 0x40758220, 0x4c0e: 0x40758420, 0x4c0f: 0x40758620,
+-	0x4c10: 0x40758820, 0x4c11: 0x40758a20, 0x4c12: 0x40758c20, 0x4c13: 0x40758e20,
+-	0x4c14: 0x40759020, 0x4c15: 0x40759220, 0x4c16: 0x40759420, 0x4c17: 0x40759620,
+-	0x4c18: 0x40759820, 0x4c19: 0x40759a20, 0x4c1a: 0x40759c20, 0x4c1b: 0x40759e20,
+-	0x4c1c: 0x4075a020, 0x4c1d: 0x4075a220, 0x4c1e: 0x4075a420, 0x4c1f: 0x4075a620,
+-	0x4c20: 0x4075a820, 0x4c21: 0x4075aa20, 0x4c22: 0x4075ac20, 0x4c23: 0x4075ae20,
+-	0x4c24: 0x4075b020, 0x4c25: 0x4075b220, 0x4c26: 0x4075b420, 0x4c27: 0x4075b620,
+-	0x4c28: 0x4075b820, 0x4c29: 0x4075ba20, 0x4c2a: 0x4075bc20, 0x4c2b: 0x4075be20,
+-	0x4c2c: 0x4075c020, 0x4c2d: 0x4075c220, 0x4c2e: 0xe00023a1, 0x4c2f: 0x4075c420,
+-	0x4c30: 0x4075c620, 0x4c31: 0x4075c820, 0x4c32: 0x4075ca20, 0x4c33: 0x4075cc20,
+-	0x4c34: 0x4075ce20, 0x4c35: 0x4075d020,
+-	0x4c39: 0x40061420, 0x4c3a: 0x40038820, 0x4c3b: 0x40038a20,
+-	0x4c3c: 0x40038c20, 0x4c3d: 0x40038e20, 0x4c3e: 0x40039020, 0x4c3f: 0x40039220,
+-	// Block 0x131, offset 0x4c40
+-	0x4c40: 0x4075fe20, 0x4c41: 0x40760020, 0x4c42: 0x40760220, 0x4c43: 0x40760420,
+-	0x4c44: 0x40760620, 0x4c45: 0x40760820, 0x4c46: 0x40760a20, 0x4c47: 0x40760c20,
+-	0x4c48: 0x40760e20, 0x4c49: 0x40761020, 0x4c4a: 0x40761220, 0x4c4b: 0x40761420,
+-	0x4c4c: 0x40761620, 0x4c4d: 0x40761820, 0x4c4e: 0x40761a20, 0x4c4f: 0x40761c20,
+-	0x4c50: 0x40761e20, 0x4c51: 0x40762020, 0x4c52: 0x40762220, 0x4c53: 0x40762420,
+-	0x4c54: 0x40762620, 0x4c55: 0x40762820,
+-	0x4c58: 0xe000029a, 0x4c59: 0xe00003b5, 0x4c5a: 0xe000048f, 0x4c5b: 0xe0000561,
+-	0x4c5c: 0x40297220, 0x4c5d: 0x40297420, 0x4c5e: 0x40297620, 0x4c5f: 0x40297820,
+-	0x4c60: 0x40762a20, 0x4c61: 0x40762c20, 0x4c62: 0x40762e20, 0x4c63: 0x40763020,
+-	0x4c64: 0x40763220, 0x4c65: 0x40763420, 0x4c66: 0x40763620, 0x4c67: 0x40763820,
+-	0x4c68: 0x40763a20, 0x4c69: 0x40763c20, 0x4c6a: 0x40763e20, 0x4c6b: 0x40764020,
+-	0x4c6c: 0x40764220, 0x4c6d: 0x40764420, 0x4c6e: 0x40764620, 0x4c6f: 0x40764820,
+-	0x4c70: 0x40764a20, 0x4c71: 0x40764c20, 0x4c72: 0x40764e20,
+-	0x4c78: 0xe000029d, 0x4c79: 0xe00003b8, 0x4c7a: 0xe0000492, 0x4c7b: 0xe0000564,
+-	0x4c7c: 0x40297a20, 0x4c7d: 0x40297c20, 0x4c7e: 0x40297e20, 0x4c7f: 0x40298020,
+-	// Block 0x132, offset 0x4c80
+-	0x4c80: 0x405b2620, 0x4c81: 0xe00020a7, 0x4c82: 0x405b2820, 0x4c83: 0x405b2a20,
+-	0x4c84: 0xe00020aa, 0x4c85: 0x405b2c20, 0x4c86: 0x405b2e20, 0x4c87: 0x405b3020,
+-	0x4c88: 0xe00020ad, 0x4c89: 0x405b3220, 0x4c8a: 0xe00020b0, 0x4c8b: 0x405b3420,
+-	0x4c8c: 0xe00020b3, 0x4c8d: 0x405b3620, 0x4c8e: 0xe00020b6, 0x4c8f: 0x405b3820,
+-	0x4c90: 0xe00020b9, 0x4c91: 0x405b3a20, 0x4c92: 0xe00020bc, 0x4c93: 0x405b3c20,
+-	0x4c94: 0x405b3e20, 0x4c95: 0xe00020bf, 0x4c96: 0x405b4020, 0x4c97: 0xe00020c2,
+-	0x4c98: 0x405b4220, 0x4c99: 0xe00020c5, 0x4c9a: 0x405b4420, 0x4c9b: 0xe00020c8,
+-	0x4c9c: 0x405b4620, 0x4c9d: 0xe00020cb, 0x4c9e: 0x405b4820, 0x4c9f: 0xe00020ce,
+-	0x4ca0: 0x405b4a20, 0x4ca1: 0x405b4c20, 0x4ca2: 0x405b4e20, 0x4ca3: 0x405b5020,
+-	0x4ca4: 0x405b5220, 0x4ca5: 0xe00020d1, 0x4ca6: 0x405b5420, 0x4ca7: 0xe00020d4,
+-	0x4ca8: 0x405b5620, 0x4ca9: 0xe00020d7, 0x4caa: 0x405b5820, 0x4cab: 0xe00020da,
+-	0x4cac: 0x405b5a20, 0x4cad: 0x405b5c20, 0x4cae: 0xe00020dd, 0x4caf: 0x405b5e20,
+-	0x4cb0: 0x405b6020, 0x4cb1: 0x405b6220, 0x4cb2: 0x405b6420, 0x4cb3: 0xe00020e0,
+-	0x4cb4: 0x405b6620, 0x4cb5: 0xe00020e3, 0x4cb6: 0x405b6820, 0x4cb7: 0xe00020e6,
+-	0x4cb8: 0x405b6a20, 0x4cb9: 0xe00020e9, 0x4cba: 0x405b6c20, 0x4cbb: 0xe00020ec,
+-	0x4cbc: 0x405b6e20, 0x4cbd: 0x405b7020, 0x4cbe: 0x405b7220, 0x4cbf: 0x405b7420,
+-	// Block 0x133, offset 0x4cc0
+-	0x4cc0: 0xe00020ef, 0x4cc1: 0x405b7620, 0x4cc2: 0xe00020f2, 0x4cc3: 0x405b7820,
+-	0x4cc4: 0xe00020f5, 0x4cc5: 0x405b7a20, 0x4cc6: 0xe00020f8, 0x4cc7: 0x405b7c20,
+-	0x4cc8: 0x405b7e20,
+-	// Block 0x134, offset 0x4d00
+-	0x4d20: 0xe00001ec, 0x4d21: 0xe0000307, 0x4d22: 0xe00003e1, 0x4d23: 0xe00004bc,
+-	0x4d24: 0xe0000586, 0x4d25: 0xe0000651, 0x4d26: 0xe00006f9, 0x4d27: 0xe00007a5,
+-	0x4d28: 0xe000084a, 0x4d29: 0x40288820, 0x4d2a: 0x40288a20, 0x4d2b: 0x40288c20,
+-	0x4d2c: 0x40288e20, 0x4d2d: 0x40289020, 0x4d2e: 0x40289220, 0x4d2f: 0x40289420,
+-	0x4d30: 0x40289620, 0x4d31: 0x40289820, 0x4d32: 0x40289a20, 0x4d33: 0x40289c20,
+-	0x4d34: 0x40289e20, 0x4d35: 0x4028a020, 0x4d36: 0x4028a220, 0x4d37: 0x4028a420,
+-	0x4d38: 0x4028a620, 0x4d39: 0x4028a820, 0x4d3a: 0x4028aa20, 0x4d3b: 0x4028ac20,
+-	0x4d3c: 0x4028ae20, 0x4d3d: 0x4028b020, 0x4d3e: 0x4028b220,
+-	// Block 0x135, offset 0x4d40
+-	0x4d40: 0xa000f202, 0x4d41: 0xa000f302, 0x4d42: 0xa000f402, 0x4d43: 0x40489220,
+-	0x4d44: 0x40489420, 0x4d45: 0x40483420, 0x4d46: 0x40483620, 0x4d47: 0x40483820,
+-	0x4d48: 0x40483a20, 0x4d49: 0x40483c20, 0x4d4a: 0x40483e20, 0x4d4b: 0x40484020,
+-	0x4d4c: 0x40484220, 0x4d4d: 0x40484420, 0x4d4e: 0x40484620, 0x4d4f: 0x40484820,
+-	0x4d50: 0x40484a20, 0x4d51: 0x40484c20, 0x4d52: 0x40484e20, 0x4d53: 0x40485020,
+-	0x4d54: 0x40485220, 0x4d55: 0x40485420, 0x4d56: 0x40485620, 0x4d57: 0x40485820,
+-	0x4d58: 0x40485a20, 0x4d59: 0x40485c20, 0x4d5a: 0x40485e20, 0x4d5b: 0x40486020,
+-	0x4d5c: 0x40486220, 0x4d5d: 0x40486420, 0x4d5e: 0x40486620, 0x4d5f: 0x40486820,
+-	0x4d60: 0x40486a20, 0x4d61: 0x40486c20, 0x4d62: 0x40486e20, 0x4d63: 0x40487020,
+-	0x4d64: 0x40487220, 0x4d65: 0x40487420, 0x4d66: 0x40487620, 0x4d67: 0x40487820,
+-	0x4d68: 0x40487a20, 0x4d69: 0x40487c20, 0x4d6a: 0x40487e20, 0x4d6b: 0x40488020,
+-	0x4d6c: 0x40488220, 0x4d6d: 0x40488420, 0x4d6e: 0x40488620, 0x4d6f: 0x40488820,
+-	0x4d70: 0x40488a20, 0x4d71: 0x40488c20, 0x4d72: 0x40488e20, 0x4d73: 0x40489020,
+-	0x4d74: 0x40489620, 0x4d75: 0x40489820, 0x4d76: 0x40489a20, 0x4d77: 0x40489c20,
+-	0x4d78: 0x40489e20, 0x4d79: 0x4048a020, 0x4d7a: 0x4048a220, 0x4d7b: 0x4048a420,
+-	0x4d7c: 0x4048a620, 0x4d7d: 0x4048a820, 0x4d7e: 0x4048aa20, 0x4d7f: 0x4048ac20,
+-	// Block 0x136, offset 0x4d80
+-	0x4d80: 0x4048ae20, 0x4d81: 0x4048b020, 0x4d82: 0x4048b220, 0x4d83: 0x4048b420,
+-	0x4d84: 0x4048b620, 0x4d85: 0x4048b820, 0x4d86: 0x8209245d, 0x4d87: 0x40034820,
+-	0x4d88: 0x40034a20, 0x4d89: 0x4005fc20, 0x4d8a: 0x4005fe20, 0x4d8b: 0x40060020,
+-	0x4d8c: 0x40060220, 0x4d8d: 0x40060420,
+-	0x4d92: 0xe00002a9, 0x4d93: 0xe00003c4,
+-	0x4d94: 0xe000049e, 0x4d95: 0xe0000570, 0x4d96: 0xe000063a, 0x4d97: 0xe00006ea,
+-	0x4d98: 0xe0000792, 0x4d99: 0xe000083b, 0x4d9a: 0xe00008e6, 0x4d9b: 0x40298220,
+-	0x4d9c: 0x40298420, 0x4d9d: 0x40298620, 0x4d9e: 0x40298820, 0x4d9f: 0x40298a20,
+-	0x4da0: 0x40298c20, 0x4da1: 0x40298e20, 0x4da2: 0x40299020, 0x4da3: 0x40299220,
+-	0x4da4: 0x40299420, 0x4da5: 0x40299620, 0x4da6: 0xe00001df, 0x4da7: 0xe00002a6,
+-	0x4da8: 0xe00003c1, 0x4da9: 0xe000049b, 0x4daa: 0xe000056d, 0x4dab: 0xe0000637,
+-	0x4dac: 0xe00006e7, 0x4dad: 0xe000078f, 0x4dae: 0xe0000838, 0x4daf: 0xe00008e3,
+-	// Block 0x137, offset 0x4dc0
+-	0x4dc0: 0xa000f202, 0x4dc1: 0xa000f302, 0x4dc2: 0xa000f402, 0x4dc3: 0x40467e20,
+-	0x4dc4: 0x40468020, 0x4dc5: 0x40468220, 0x4dc6: 0x40468420, 0x4dc7: 0x40468620,
+-	0x4dc8: 0x40468820, 0x4dc9: 0x40468a20, 0x4dca: 0x40468c20, 0x4dcb: 0x40468e20,
+-	0x4dcc: 0x40469020, 0x4dcd: 0x40469220, 0x4dce: 0x40469420, 0x4dcf: 0x40469620,
+-	0x4dd0: 0x40469820, 0x4dd1: 0x40469a20, 0x4dd2: 0x40469c20, 0x4dd3: 0x40469e20,
+-	0x4dd4: 0x4046a020, 0x4dd5: 0x4046a220, 0x4dd6: 0x4046a420, 0x4dd7: 0x4046a620,
+-	0x4dd8: 0x4046a820, 0x4dd9: 0x4046aa20, 0x4dda: 0xe0001878, 0x4ddb: 0x4046ac20,
+-	0x4ddc: 0xe000187b, 0x4ddd: 0x4046ae20, 0x4dde: 0x4046b020, 0x4ddf: 0x4046b220,
+-	0x4de0: 0x4046b420, 0x4de1: 0x4046b620, 0x4de2: 0x4046b820, 0x4de3: 0x4046ba20,
+-	0x4de4: 0x4046bc20, 0x4de5: 0x4046be20, 0x4de6: 0x4046c020, 0x4de7: 0x4046c220,
+-	0x4de8: 0x4046c420, 0x4de9: 0x4046c620, 0x4dea: 0x4046c820, 0x4deb: 0xe000187e,
+-	0x4dec: 0x4046ca20, 0x4ded: 0x4046cc20, 0x4dee: 0x4046ce20, 0x4def: 0x4046d020,
+-	0x4df0: 0x4046d220, 0x4df1: 0x4046d420, 0x4df2: 0x4046d620, 0x4df3: 0x4046d820,
+-	0x4df4: 0x4046da20, 0x4df5: 0x4046dc20, 0x4df6: 0x4046de20, 0x4df7: 0x4046e020,
+-	0x4df8: 0x4046e220, 0x4df9: 0x82092372, 0x4dfa: 0xa070f102, 0x4dfb: 0x40061620,
+-	0x4dfc: 0x40061820, 0x4dfd: 0xa0000000, 0x4dfe: 0x40039420, 0x4dff: 0x40039620,
+-	// Block 0x138, offset 0x4e00
+-	0x4e00: 0x40034c20, 0x4e01: 0x40034e20,
+-	0x4e10: 0x4072e820, 0x4e11: 0x4072ea20, 0x4e12: 0x4072ec20, 0x4e13: 0x4072ee20,
+-	0x4e14: 0x4072f020, 0x4e15: 0x4072f220, 0x4e16: 0x4072f420, 0x4e17: 0x4072f620,
+-	0x4e18: 0x4072f820, 0x4e19: 0x4072fa20, 0x4e1a: 0x4072fc20, 0x4e1b: 0x4072fe20,
+-	0x4e1c: 0x40730020, 0x4e1d: 0x40730220, 0x4e1e: 0x40730420, 0x4e1f: 0x40730620,
+-	0x4e20: 0x40730820, 0x4e21: 0x40730a20, 0x4e22: 0x40730c20, 0x4e23: 0x40730e20,
+-	0x4e24: 0x40731020, 0x4e25: 0x40731220, 0x4e26: 0x40731420, 0x4e27: 0x40731620,
+-	0x4e28: 0x40731820,
+-	0x4e30: 0xe00001d0, 0x4e31: 0xe0000264, 0x4e32: 0xe000037c, 0x4e33: 0xe0000456,
+-	0x4e34: 0xe000052b, 0x4e35: 0xe00005f5, 0x4e36: 0xe00006c0, 0x4e37: 0xe0000768,
+-	0x4e38: 0xe0000814, 0x4e39: 0xe00008b9,
+-	// Block 0x139, offset 0x4e40
+-	0x4e40: 0xae60f202, 0x4e41: 0xae60f302, 0x4e42: 0xae60f402, 0x4e43: 0x404f4020,
+-	0x4e44: 0x404f4220, 0x4e45: 0x404f4420, 0x4e46: 0x404f4620, 0x4e47: 0x404f4820,
+-	0x4e48: 0x404f4a20, 0x4e49: 0x404f4c20, 0x4e4a: 0x404f4e20, 0x4e4b: 0x404f5020,
+-	0x4e4c: 0x404f5220, 0x4e4d: 0x404f5420, 0x4e4e: 0x404f5620, 0x4e4f: 0x404f5820,
+-	0x4e50: 0x404f5a20, 0x4e51: 0x404f5c20, 0x4e52: 0x404f5e20, 0x4e53: 0x404f6020,
+-	0x4e54: 0x404f6220, 0x4e55: 0x404f6420, 0x4e56: 0x404f6620, 0x4e57: 0x404f6820,
+-	0x4e58: 0x404f6a20, 0x4e59: 0x404f6c20, 0x4e5a: 0x404f6e20, 0x4e5b: 0x404f7020,
+-	0x4e5c: 0x404f7220, 0x4e5d: 0x404f7420, 0x4e5e: 0x404f7620, 0x4e5f: 0x404f7820,
+-	0x4e60: 0x404f7a20, 0x4e61: 0x404f7c20, 0x4e62: 0x404f7e20, 0x4e63: 0x404f8020,
+-	0x4e64: 0x404f8220, 0x4e65: 0x404f8420, 0x4e66: 0x404f8620, 0x4e67: 0x404f8820,
+-	0x4e68: 0x404f8a20, 0x4e69: 0x404f8c20, 0x4e6a: 0x404f8e20, 0x4e6b: 0x404f9020,
+-	0x4e6c: 0x404f9220, 0x4e6d: 0x404f9420, 0x4e6e: 0x404f9620, 0x4e6f: 0x404f9820,
+-	0x4e70: 0x404f9a20, 0x4e71: 0xc31507e1, 0x4e72: 0xc31707e1, 0x4e73: 0x820927d0,
+-	0x4e74: 0x820927d1, 0x4e76: 0xe00001b2, 0x4e77: 0xe0000246,
+-	0x4e78: 0xe000035e, 0x4e79: 0xe0000438, 0x4e7a: 0xe000050d, 0x4e7b: 0xe00005d7,
+-	0x4e7c: 0xe00006a2, 0x4e7d: 0xe000074a, 0x4e7e: 0xe00007f6, 0x4e7f: 0xe000089b,
+-	// Block 0x13a, offset 0x4e80
+-	0x4e80: 0x40039820, 0x4e81: 0x40035020, 0x4e82: 0x40035220, 0x4e83: 0x4002de20,
+-	// Block 0x13b, offset 0x4ec0
+-	0x4ec0: 0xa000f202, 0x4ec1: 0xa000f302, 0x4ec2: 0xa000f402, 0x4ec3: 0x4046e820,
+-	0x4ec4: 0x4046ea20, 0x4ec5: 0x4046ec20, 0x4ec6: 0x4046ee20, 0x4ec7: 0x4046f020,
+-	0x4ec8: 0x4046f220, 0x4ec9: 0x4046f420, 0x4eca: 0x4046f620, 0x4ecb: 0x4046f820,
+-	0x4ecc: 0x4046fa20, 0x4ecd: 0x4046fc20, 0x4ece: 0x4046fe20, 0x4ecf: 0x40470020,
+-	0x4ed0: 0x40470220, 0x4ed1: 0x40470420, 0x4ed2: 0x40470620, 0x4ed3: 0x40470820,
+-	0x4ed4: 0x40470a20, 0x4ed5: 0x40470c20, 0x4ed6: 0x40470e20, 0x4ed7: 0x40471020,
+-	0x4ed8: 0x40471220, 0x4ed9: 0x40471420, 0x4eda: 0x40471620, 0x4edb: 0x40471820,
+-	0x4edc: 0x40471a20, 0x4edd: 0x40471c20, 0x4ede: 0x40471e20, 0x4edf: 0x40472020,
+-	0x4ee0: 0x40472220, 0x4ee1: 0x40472420, 0x4ee2: 0x40472620, 0x4ee3: 0x40472820,
+-	0x4ee4: 0x40472a20, 0x4ee5: 0x40472c20, 0x4ee6: 0x40472e20, 0x4ee7: 0x40473020,
+-	0x4ee8: 0x40473220, 0x4ee9: 0x40473420, 0x4eea: 0x40473620, 0x4eeb: 0x40473820,
+-	0x4eec: 0x40473a20, 0x4eed: 0x40473c20, 0x4eee: 0x40473e20, 0x4eef: 0x40474020,
+-	0x4ef0: 0x40474220, 0x4ef1: 0x40474420, 0x4ef2: 0x40474620, 0x4ef3: 0x40474820,
+-	0x4ef4: 0x40474a20, 0x4ef5: 0x40474c20, 0x4ef6: 0x40474e20, 0x4ef7: 0x40475020,
+-	0x4ef8: 0x40475220, 0x4ef9: 0x40475420, 0x4efa: 0x40475620, 0x4efb: 0x40475820,
+-	0x4efc: 0x40475a20, 0x4efd: 0x40475c20, 0x4efe: 0x40475e20, 0x4eff: 0x40476020,
+-	// Block 0x13c, offset 0x4f00
+-	0x4f00: 0x820923b1, 0x4f01: 0x40476420, 0x4f02: 0x40476620, 0x4f03: 0x40476820,
+-	0x4f04: 0x4046e620, 0x4f05: 0x40035420, 0x4f06: 0x40035620, 0x4f07: 0x40061a20,
+-	0x4f08: 0x40039a20,
+-	0x4f10: 0xe00001d9, 0x4f11: 0xe00002a0, 0x4f12: 0xe00003bb, 0x4f13: 0xe0000495,
+-	0x4f14: 0xe0000567, 0x4f15: 0xe0000631, 0x4f16: 0xe00006e1, 0x4f17: 0xe0000789,
+-	0x4f18: 0xe0000832, 0x4f19: 0xe00008dd,
+-	// Block 0x13d, offset 0x4f40
+-	0x4f40: 0x40476a20, 0x4f41: 0x40476c20, 0x4f42: 0x40476e20, 0x4f43: 0x40477020,
+-	0x4f44: 0x40477220, 0x4f45: 0x40477420, 0x4f46: 0x40477620, 0x4f47: 0x40477820,
+-	0x4f48: 0x40477a20, 0x4f49: 0x40477c20, 0x4f4a: 0x40478420, 0x4f4b: 0x40478620,
+-	0x4f4c: 0x40478820, 0x4f4d: 0x40478a20, 0x4f4e: 0x40478c20, 0x4f4f: 0x40478e20,
+-	0x4f50: 0x40479020, 0x4f51: 0x40479220, 0x4f52: 0x40479420, 0x4f53: 0x40479620,
+-	0x4f54: 0x40479820, 0x4f55: 0x40479a20, 0x4f56: 0x40479c20, 0x4f57: 0x40479e20,
+-	0x4f58: 0x4047a020, 0x4f59: 0x4047a220, 0x4f5a: 0x4047a420, 0x4f5b: 0x4047a620,
+-	0x4f5c: 0x4047a820, 0x4f5d: 0x4047aa20, 0x4f5e: 0x4047ac20, 0x4f5f: 0x4047ae20,
+-	0x4f60: 0x4047b020, 0x4f61: 0x4047b220, 0x4f62: 0x4047b420, 0x4f63: 0x4047b620,
+-	0x4f64: 0x4047b820, 0x4f65: 0x4047ba20, 0x4f66: 0x4047bc20, 0x4f67: 0x40478020,
+-	0x4f68: 0x40477e20, 0x4f69: 0x40478220, 0x4f6a: 0x4047be20, 0x4f6b: 0xa000f302,
+-	0x4f6c: 0xa000f402, 0x4f6d: 0x4047c020, 0x4f6e: 0x4047c220, 0x4f6f: 0x4047c420,
+-	0x4f70: 0x4047c620, 0x4f71: 0x4047c820, 0x4f72: 0x4047ca20, 0x4f73: 0x4047cc20,
+-	0x4f74: 0x4047ce20, 0x4f75: 0x4047d020, 0x4f76: 0x820923e9, 0x4f77: 0xa070f102,
+-	// Block 0x13e, offset 0x4f80
+-	0x4f80: 0xe00001dc, 0x4f81: 0xe00002a3, 0x4f82: 0xe00003be, 0x4f83: 0xe0000498,
+-	0x4f84: 0xe000056a, 0x4f85: 0xe0000634, 0x4f86: 0xe00006e4, 0x4f87: 0xe000078c,
+-	0x4f88: 0xe0000835, 0x4f89: 0xe00008e0,
+-	// Block 0x13f, offset 0x4fc0
+-	0x4fc0: 0x4076e420, 0x4fc1: 0x4076e620, 0x4fc2: 0x4076e820, 0x4fc3: 0x4076ea20,
+-	0x4fc4: 0x4076ec20, 0x4fc5: 0x4076ee20, 0x4fc6: 0x4076f020, 0x4fc7: 0x4076f220,
+-	0x4fc8: 0x4076f420, 0x4fc9: 0x4076f620, 0x4fca: 0x4076f820, 0x4fcb: 0x4076fa20,
+-	0x4fcc: 0x4076fc20, 0x4fcd: 0x4076fe20, 0x4fce: 0x40770020, 0x4fcf: 0x40770220,
+-	0x4fd0: 0x40770420, 0x4fd1: 0x40770620, 0x4fd2: 0x40770820, 0x4fd3: 0x40770a20,
+-	0x4fd4: 0x40770c20, 0x4fd5: 0x40770e20, 0x4fd6: 0x40771020, 0x4fd7: 0x40771220,
+-	0x4fd8: 0x40771420, 0x4fd9: 0x40771620, 0x4fda: 0x40771820, 0x4fdb: 0x40771a20,
+-	0x4fdc: 0x40771c20, 0x4fdd: 0x40771e20, 0x4fde: 0x40772020, 0x4fdf: 0x40772220,
+-	0x4fe0: 0x40772420, 0x4fe1: 0x40772620, 0x4fe2: 0x40772820, 0x4fe3: 0x40772a20,
+-	0x4fe4: 0x40772c20, 0x4fe5: 0x40772e20, 0x4fe6: 0x40773020, 0x4fe7: 0x40773220,
+-	0x4fe8: 0x40773420, 0x4fe9: 0x40773620, 0x4fea: 0x40773820, 0x4feb: 0x40773a20,
+-	0x4fec: 0x40773c20, 0x4fed: 0x40773e20, 0x4fee: 0x40774020, 0x4fef: 0x40774220,
+-	0x4ff0: 0x40774420, 0x4ff1: 0x40774620, 0x4ff2: 0x40774820, 0x4ff3: 0x40774a20,
+-	0x4ff4: 0x40774c20, 0x4ff5: 0x40774e20, 0x4ff6: 0x40775020, 0x4ff7: 0x40775220,
+-	0x4ff8: 0x40775420, 0x4ff9: 0x40775620, 0x4ffa: 0x40775820, 0x4ffb: 0x40775a20,
+-	0x4ffc: 0x40775c20, 0x4ffd: 0x40775e20, 0x4ffe: 0x40776020, 0x4fff: 0x40776220,
+-	// Block 0x140, offset 0x5000
+-	0x5000: 0x40776420, 0x5001: 0x40776620, 0x5002: 0x40776820, 0x5003: 0x40776a20,
+-	0x5004: 0x40776c20, 0x5005: 0x40776e20, 0x5006: 0x40777020, 0x5007: 0x40777220,
+-	0x5008: 0x40777420, 0x5009: 0x40777620, 0x500a: 0x40777820, 0x500b: 0x40777a20,
+-	0x500c: 0x40777c20, 0x500d: 0x40777e20, 0x500e: 0x40778020, 0x500f: 0x40778220,
+-	0x5010: 0x40778420, 0x5011: 0x40778620, 0x5012: 0x40778820, 0x5013: 0x40778a20,
+-	0x5014: 0x40778c20, 0x5015: 0x40778e20, 0x5016: 0x40779020, 0x5017: 0x40779220,
+-	0x5018: 0x40779420, 0x5019: 0x40779620, 0x501a: 0x40779820, 0x501b: 0x40779a20,
+-	0x501c: 0x40779c20, 0x501d: 0x40779e20, 0x501e: 0x4077a020, 0x501f: 0x4077a220,
+-	0x5020: 0x4077a420, 0x5021: 0x4077a620, 0x5022: 0x4077a820, 0x5023: 0x4077aa20,
+-	0x5024: 0x4077ac20, 0x5025: 0x4077ae20, 0x5026: 0x4077b020, 0x5027: 0x4077b220,
+-	0x5028: 0x4077b420, 0x5029: 0x4077b620, 0x502a: 0x4077b820, 0x502b: 0x4077ba20,
+-	0x502c: 0x4077bc20, 0x502d: 0x4077be20, 0x502e: 0x4077c020, 0x502f: 0x4077c220,
+-	0x5030: 0x4077c420, 0x5031: 0x4077c620, 0x5032: 0x4077c820, 0x5033: 0x4077ca20,
+-	0x5034: 0x4077cc20, 0x5035: 0x4077ce20, 0x5036: 0x4077d020, 0x5037: 0x4077d220,
+-	0x5038: 0x4077d420, 0x5039: 0x4077d620, 0x503a: 0x4077d820, 0x503b: 0x4077da20,
+-	0x503c: 0x4077dc20, 0x503d: 0x4077de20, 0x503e: 0x4077e020, 0x503f: 0x4077e220,
+-	// Block 0x141, offset 0x5040
+-	0x5040: 0x4077e420, 0x5041: 0x4077e620, 0x5042: 0x4077e820, 0x5043: 0x4077ea20,
+-	0x5044: 0x4077ec20, 0x5045: 0x4077ee20, 0x5046: 0x4077f020, 0x5047: 0x4077f220,
+-	0x5048: 0x4077f420, 0x5049: 0x4077f620, 0x504a: 0x4077f820, 0x504b: 0x4077fa20,
+-	0x504c: 0x4077fc20, 0x504d: 0x4077fe20, 0x504e: 0x40780020, 0x504f: 0x40780220,
+-	0x5050: 0x40780420, 0x5051: 0x40780620, 0x5052: 0x40780820, 0x5053: 0x40780a20,
+-	0x5054: 0x40780c20, 0x5055: 0x40780e20, 0x5056: 0x40781020, 0x5057: 0x40781220,
+-	0x5058: 0x40781420, 0x5059: 0x40781620, 0x505a: 0x40781820, 0x505b: 0x40781a20,
+-	0x505c: 0x40781c20, 0x505d: 0x40781e20, 0x505e: 0x40782020, 0x505f: 0x40782220,
+-	0x5060: 0x40782420, 0x5061: 0x40782620, 0x5062: 0x40782820, 0x5063: 0x40782a20,
+-	0x5064: 0x40782c20, 0x5065: 0x40782e20, 0x5066: 0x40783020, 0x5067: 0x40783220,
+-	0x5068: 0x40783420, 0x5069: 0x40783620, 0x506a: 0x40783820, 0x506b: 0x40783a20,
+-	0x506c: 0x40783c20, 0x506d: 0x40783e20, 0x506e: 0x40784020, 0x506f: 0x40784220,
+-	0x5070: 0x40784420, 0x5071: 0x40784620, 0x5072: 0x40784820, 0x5073: 0x40784a20,
+-	0x5074: 0x40784c20, 0x5075: 0x40784e20, 0x5076: 0x40785020, 0x5077: 0x40785220,
+-	0x5078: 0x40785420, 0x5079: 0x40785620, 0x507a: 0x40785820, 0x507b: 0x40785a20,
+-	0x507c: 0x40785c20, 0x507d: 0x40785e20, 0x507e: 0x40786020, 0x507f: 0x40786220,
+-	// Block 0x142, offset 0x5080
+-	0x5080: 0x40786420, 0x5081: 0x40786620, 0x5082: 0x40786820, 0x5083: 0x40786a20,
+-	0x5084: 0x40786c20, 0x5085: 0x40786e20, 0x5086: 0x40787020, 0x5087: 0x40787220,
+-	0x5088: 0x40787420, 0x5089: 0x40787620, 0x508a: 0x40787820, 0x508b: 0x40787a20,
+-	0x508c: 0x40787c20, 0x508d: 0x40787e20, 0x508e: 0x40788020, 0x508f: 0x40788220,
+-	0x5090: 0x40788420, 0x5091: 0x40788620, 0x5092: 0x40788820, 0x5093: 0x40788a20,
+-	0x5094: 0x40788c20, 0x5095: 0x40788e20, 0x5096: 0x40789020, 0x5097: 0x40789220,
+-	0x5098: 0x40789420, 0x5099: 0x40789620, 0x509a: 0x40789820, 0x509b: 0x40789a20,
+-	0x509c: 0x40789c20, 0x509d: 0x40789e20, 0x509e: 0x4078a020, 0x509f: 0x4078a220,
+-	0x50a0: 0x4078a420, 0x50a1: 0x4078a620, 0x50a2: 0x4078a820, 0x50a3: 0x4078aa20,
+-	0x50a4: 0x4078ac20, 0x50a5: 0x4078ae20, 0x50a6: 0x4078b020, 0x50a7: 0x4078b220,
+-	0x50a8: 0x4078b420, 0x50a9: 0x4078b620, 0x50aa: 0x4078b820, 0x50ab: 0x4078ba20,
+-	0x50ac: 0x4078bc20, 0x50ad: 0x4078be20, 0x50ae: 0x4078c020, 0x50af: 0x4078c220,
+-	0x50b0: 0x4078c420, 0x50b1: 0x4078c620, 0x50b2: 0x4078c820, 0x50b3: 0x4078ca20,
+-	0x50b4: 0x4078cc20, 0x50b5: 0x4078ce20, 0x50b6: 0x4078d020, 0x50b7: 0x4078d220,
+-	0x50b8: 0x4078d420, 0x50b9: 0x4078d620, 0x50ba: 0x4078d820, 0x50bb: 0x4078da20,
+-	0x50bc: 0x4078dc20, 0x50bd: 0x4078de20, 0x50be: 0x4078e020, 0x50bf: 0x4078e220,
+-	// Block 0x143, offset 0x50c0
+-	0x50c0: 0x4078e420, 0x50c1: 0x4078e620, 0x50c2: 0x4078e820, 0x50c3: 0x4078ea20,
+-	0x50c4: 0x4078ec20, 0x50c5: 0x4078ee20, 0x50c6: 0x4078f020, 0x50c7: 0x4078f220,
+-	0x50c8: 0x4078f420, 0x50c9: 0x4078f620, 0x50ca: 0x4078f820, 0x50cb: 0x4078fa20,
+-	0x50cc: 0x4078fc20, 0x50cd: 0x4078fe20, 0x50ce: 0x40790020, 0x50cf: 0x40790220,
+-	0x50d0: 0x40790420, 0x50d1: 0x40790620, 0x50d2: 0x40790820, 0x50d3: 0x40790a20,
+-	0x50d4: 0x40790c20, 0x50d5: 0x40790e20, 0x50d6: 0x40791020, 0x50d7: 0x40791220,
+-	0x50d8: 0x40791420, 0x50d9: 0x40791620, 0x50da: 0x40791820, 0x50db: 0x40791a20,
+-	0x50dc: 0x40791c20, 0x50dd: 0x40791e20, 0x50de: 0x40792020, 0x50df: 0x40792220,
+-	0x50e0: 0x40792420, 0x50e1: 0x40792620, 0x50e2: 0x40792820, 0x50e3: 0x40792a20,
+-	0x50e4: 0x40792c20, 0x50e5: 0x40792e20, 0x50e6: 0x40793020, 0x50e7: 0x40793220,
+-	0x50e8: 0x40793420, 0x50e9: 0x40793620, 0x50ea: 0x40793820, 0x50eb: 0x40793a20,
+-	0x50ec: 0x40793c20, 0x50ed: 0x40793e20, 0x50ee: 0x40794020, 0x50ef: 0x40794220,
+-	0x50f0: 0x40794420, 0x50f1: 0x40794620, 0x50f2: 0x40794820, 0x50f3: 0x40794a20,
+-	0x50f4: 0x40794c20, 0x50f5: 0x40794e20, 0x50f6: 0x40795020, 0x50f7: 0x40795220,
+-	0x50f8: 0x40795420, 0x50f9: 0x40795620, 0x50fa: 0x40795820, 0x50fb: 0x40795a20,
+-	0x50fc: 0x40795c20, 0x50fd: 0x40795e20, 0x50fe: 0x40796020, 0x50ff: 0x40796220,
+-	// Block 0x144, offset 0x5100
+-	0x5100: 0x40796420, 0x5101: 0x40796620, 0x5102: 0x40796820, 0x5103: 0x40796a20,
+-	0x5104: 0x40796c20, 0x5105: 0x40796e20, 0x5106: 0x40797020, 0x5107: 0x40797220,
+-	0x5108: 0x40797420, 0x5109: 0x40797620, 0x510a: 0x40797820, 0x510b: 0x40797a20,
+-	0x510c: 0x40797c20, 0x510d: 0x40797e20, 0x510e: 0x40798020, 0x510f: 0x40798220,
+-	0x5110: 0x40798420, 0x5111: 0x40798620, 0x5112: 0x40798820, 0x5113: 0x40798a20,
+-	0x5114: 0x40798c20, 0x5115: 0x40798e20, 0x5116: 0x40799020, 0x5117: 0x40799220,
+-	0x5118: 0x40799420, 0x5119: 0x40799620, 0x511a: 0x40799820, 0x511b: 0x40799a20,
+-	0x511c: 0x40799c20, 0x511d: 0x40799e20, 0x511e: 0x4079a020, 0x511f: 0x4079a220,
+-	0x5120: 0x4079a420, 0x5121: 0x4079a620, 0x5122: 0x4079a820, 0x5123: 0x4079aa20,
+-	0x5124: 0x4079ac20, 0x5125: 0x4079ae20, 0x5126: 0x4079b020, 0x5127: 0x4079b220,
+-	0x5128: 0x4079b420, 0x5129: 0x4079b620, 0x512a: 0x4079b820, 0x512b: 0x4079ba20,
+-	0x512c: 0x4079bc20, 0x512d: 0x4079be20, 0x512e: 0x4079c020, 0x512f: 0x4079c220,
+-	0x5130: 0x4079c420, 0x5131: 0x4079c620, 0x5132: 0x4079c820, 0x5133: 0x4079ca20,
+-	0x5134: 0x4079cc20, 0x5135: 0x4079ce20, 0x5136: 0x4079d020, 0x5137: 0x4079d220,
+-	0x5138: 0x4079d420, 0x5139: 0x4079d620, 0x513a: 0x4079d820, 0x513b: 0x4079da20,
+-	0x513c: 0x4079dc20, 0x513d: 0x4079de20, 0x513e: 0x4079e020, 0x513f: 0x4079e220,
+-	// Block 0x145, offset 0x5140
+-	0x5140: 0x4079e420, 0x5141: 0x4079e620, 0x5142: 0x4079e820, 0x5143: 0x4079ea20,
+-	0x5144: 0x4079ec20, 0x5145: 0x4079ee20, 0x5146: 0x4079f020, 0x5147: 0x4079f220,
+-	0x5148: 0x4079f420, 0x5149: 0x4079f620, 0x514a: 0x4079f820, 0x514b: 0x4079fa20,
+-	0x514c: 0x4079fc20, 0x514d: 0x4079fe20, 0x514e: 0x407a0020, 0x514f: 0x407a0220,
+-	0x5150: 0x407a0420, 0x5151: 0x407a0620, 0x5152: 0x407a0820, 0x5153: 0x407a0a20,
+-	0x5154: 0x407a0c20, 0x5155: 0x407a0e20, 0x5156: 0x407a1020, 0x5157: 0x407a1220,
+-	0x5158: 0x407a1420, 0x5159: 0x407a1620, 0x515a: 0x407a1820, 0x515b: 0x407a1a20,
+-	0x515c: 0x407a1c20, 0x515d: 0x407a1e20, 0x515e: 0x407a2020, 0x515f: 0x407a2220,
+-	0x5160: 0x407a2420, 0x5161: 0x407a2620, 0x5162: 0x407a2820, 0x5163: 0x407a2a20,
+-	0x5164: 0x407a2c20, 0x5165: 0x407a2e20, 0x5166: 0x407a3020, 0x5167: 0x407a3220,
+-	0x5168: 0x407a3420, 0x5169: 0x407a3620, 0x516a: 0x407a3820, 0x516b: 0x407a3a20,
+-	0x516c: 0x407a3c20, 0x516d: 0x407a3e20, 0x516e: 0x407a4020, 0x516f: 0x407a4220,
+-	0x5170: 0x407a4420, 0x5171: 0x407a4620, 0x5172: 0x407a4820, 0x5173: 0x407a4a20,
+-	0x5174: 0x407a4c20, 0x5175: 0x407a4e20, 0x5176: 0x407a5020, 0x5177: 0x407a5220,
+-	0x5178: 0x407a5420, 0x5179: 0x407a5620, 0x517a: 0x407a5820, 0x517b: 0x407a5a20,
+-	0x517c: 0x407a5c20, 0x517d: 0x407a5e20, 0x517e: 0x407a6020, 0x517f: 0x407a6220,
+-	// Block 0x146, offset 0x5180
+-	0x5180: 0x407a6420, 0x5181: 0x407a6620, 0x5182: 0x407a6820, 0x5183: 0x407a6a20,
+-	0x5184: 0x407a6c20, 0x5185: 0x407a6e20, 0x5186: 0x407a7020, 0x5187: 0x407a7220,
+-	0x5188: 0x407a7420, 0x5189: 0x407a7620, 0x518a: 0x407a7820, 0x518b: 0x407a7a20,
+-	0x518c: 0x407a7c20, 0x518d: 0x407a7e20, 0x518e: 0x407a8020, 0x518f: 0x407a8220,
+-	0x5190: 0x407a8420, 0x5191: 0x407a8620, 0x5192: 0x407a8820, 0x5193: 0x407a8a20,
+-	0x5194: 0x407a8c20, 0x5195: 0x407a8e20, 0x5196: 0x407a9020, 0x5197: 0x407a9220,
+-	0x5198: 0x407a9420, 0x5199: 0x407a9620, 0x519a: 0x407a9820, 0x519b: 0x407a9a20,
+-	0x519c: 0x407a9c20, 0x519d: 0x407a9e20, 0x519e: 0x407aa020, 0x519f: 0x407aa220,
+-	0x51a0: 0x407aa420, 0x51a1: 0x407aa620, 0x51a2: 0x407aa820, 0x51a3: 0x407aaa20,
+-	0x51a4: 0x407aac20, 0x51a5: 0x407aae20, 0x51a6: 0x407ab020, 0x51a7: 0x407ab220,
+-	0x51a8: 0x407ab420, 0x51a9: 0x407ab620, 0x51aa: 0x407ab820, 0x51ab: 0x407aba20,
+-	0x51ac: 0x407abc20, 0x51ad: 0x407abe20, 0x51ae: 0x407ac020, 0x51af: 0x407ac220,
+-	0x51b0: 0x407ac420, 0x51b1: 0x407ac620, 0x51b2: 0x407ac820, 0x51b3: 0x407aca20,
+-	0x51b4: 0x407acc20, 0x51b5: 0x407ace20, 0x51b6: 0x407ad020, 0x51b7: 0x407ad220,
+-	0x51b8: 0x407ad420, 0x51b9: 0x407ad620, 0x51ba: 0x407ad820, 0x51bb: 0x407ada20,
+-	0x51bc: 0x407adc20, 0x51bd: 0x407ade20, 0x51be: 0x407ae020, 0x51bf: 0x407ae220,
+-	// Block 0x147, offset 0x51c0
+-	0x51c0: 0x407ae420, 0x51c1: 0x407ae620, 0x51c2: 0x407ae820, 0x51c3: 0x407aea20,
+-	0x51c4: 0x407aec20, 0x51c5: 0x407aee20, 0x51c6: 0x407af020, 0x51c7: 0x407af220,
+-	0x51c8: 0x407af420, 0x51c9: 0x407af620, 0x51ca: 0x407af820, 0x51cb: 0x407afa20,
+-	0x51cc: 0x407afc20, 0x51cd: 0x407afe20, 0x51ce: 0x407b0020, 0x51cf: 0x407b0220,
+-	0x51d0: 0x407b0420, 0x51d1: 0x407b0620, 0x51d2: 0x407b0820, 0x51d3: 0x407b0a20,
+-	0x51d4: 0x407b0c20, 0x51d5: 0x407b0e20, 0x51d6: 0x407b1020, 0x51d7: 0x407b1220,
+-	0x51d8: 0x407b1420, 0x51d9: 0x407b1620, 0x51da: 0x407b1820, 0x51db: 0x407b1a20,
+-	0x51dc: 0x407b1c20, 0x51dd: 0x407b1e20, 0x51de: 0x407b2020, 0x51df: 0x407b2220,
+-	0x51e0: 0x407b2420, 0x51e1: 0x407b2620, 0x51e2: 0x407b2820, 0x51e3: 0x407b2a20,
+-	0x51e4: 0x407b2c20, 0x51e5: 0x407b2e20, 0x51e6: 0x407b3020, 0x51e7: 0x407b3220,
+-	0x51e8: 0x407b3420, 0x51e9: 0x407b3620, 0x51ea: 0x407b3820, 0x51eb: 0x407b3a20,
+-	0x51ec: 0x407b3c20, 0x51ed: 0x407b3e20, 0x51ee: 0x407b4020, 0x51ef: 0x407b4220,
+-	0x51f0: 0x407b4420, 0x51f1: 0x407b4620, 0x51f2: 0x407b4820, 0x51f3: 0x407b4a20,
+-	0x51f4: 0x407b4c20, 0x51f5: 0x407b4e20, 0x51f6: 0x407b5020, 0x51f7: 0x407b5220,
+-	0x51f8: 0x407b5420, 0x51f9: 0x407b5620, 0x51fa: 0x407b5820, 0x51fb: 0x407b5a20,
+-	0x51fc: 0x407b5c20, 0x51fd: 0x407b5e20, 0x51fe: 0x407b6020, 0x51ff: 0x407b6220,
+-	// Block 0x148, offset 0x5200
+-	0x5200: 0x407b6420, 0x5201: 0x407b6620, 0x5202: 0x407b6820, 0x5203: 0x407b6a20,
+-	0x5204: 0x407b6c20, 0x5205: 0x407b6e20, 0x5206: 0x407b7020, 0x5207: 0x407b7220,
+-	0x5208: 0x407b7420, 0x5209: 0x407b7620, 0x520a: 0x407b7820, 0x520b: 0x407b7a20,
+-	0x520c: 0x407b7c20, 0x520d: 0x407b7e20, 0x520e: 0x407b8020, 0x520f: 0x407b8220,
+-	0x5210: 0x407b8420, 0x5211: 0x407b8620, 0x5212: 0x407b8820, 0x5213: 0x407b8a20,
+-	0x5214: 0x407b8c20, 0x5215: 0x407b8e20, 0x5216: 0x407b9020, 0x5217: 0x407b9220,
+-	0x5218: 0x407b9420, 0x5219: 0x407b9620, 0x521a: 0x407b9820, 0x521b: 0x407b9a20,
+-	0x521c: 0x407b9c20, 0x521d: 0x407b9e20, 0x521e: 0x407ba020, 0x521f: 0x407ba220,
+-	0x5220: 0x407ba420, 0x5221: 0x407ba620, 0x5222: 0x407ba820, 0x5223: 0x407baa20,
+-	0x5224: 0x407bac20, 0x5225: 0x407bae20, 0x5226: 0x407bb020, 0x5227: 0x407bb220,
+-	0x5228: 0x407bb420, 0x5229: 0x407bb620, 0x522a: 0x407bb820, 0x522b: 0x407bba20,
+-	0x522c: 0x407bbc20, 0x522d: 0x407bbe20, 0x522e: 0x407bc020, 0x522f: 0x407bc220,
+-	0x5230: 0x407bc420, 0x5231: 0x407bc620, 0x5232: 0x407bc820, 0x5233: 0x407bca20,
+-	0x5234: 0x407bcc20, 0x5235: 0x407bce20, 0x5236: 0x407bd020, 0x5237: 0x407bd220,
+-	0x5238: 0x407bd420, 0x5239: 0x407bd620, 0x523a: 0x407bd820, 0x523b: 0x407bda20,
+-	0x523c: 0x407bdc20, 0x523d: 0x407bde20, 0x523e: 0x407be020, 0x523f: 0x407be220,
+-	// Block 0x149, offset 0x5240
+-	0x5240: 0x407be420, 0x5241: 0x407be620, 0x5242: 0x407be820, 0x5243: 0x407bea20,
+-	0x5244: 0x407bec20, 0x5245: 0x407bee20, 0x5246: 0x407bf020, 0x5247: 0x407bf220,
+-	0x5248: 0x407bf420, 0x5249: 0x407bf620, 0x524a: 0x407bf820, 0x524b: 0x407bfa20,
+-	0x524c: 0x407bfc20, 0x524d: 0x407bfe20, 0x524e: 0x407c0020, 0x524f: 0x407c0220,
+-	0x5250: 0x407c0420, 0x5251: 0x407c0620, 0x5252: 0x407c0820, 0x5253: 0x407c0a20,
+-	0x5254: 0x407c0c20, 0x5255: 0x407c0e20, 0x5256: 0x407c1020, 0x5257: 0x407c1220,
+-	0x5258: 0x407c1420, 0x5259: 0x407c1620, 0x525a: 0x407c1820, 0x525b: 0x407c1a20,
+-	0x525c: 0x407c1c20, 0x525d: 0x407c1e20, 0x525e: 0x407c2020, 0x525f: 0x407c2220,
+-	0x5260: 0x407c2420, 0x5261: 0x407c2620, 0x5262: 0x407c2820, 0x5263: 0x407c2a20,
+-	0x5264: 0x407c2c20, 0x5265: 0x407c2e20, 0x5266: 0x407c3020, 0x5267: 0x407c3220,
+-	0x5268: 0x407c3420, 0x5269: 0x407c3620, 0x526a: 0x407c3820, 0x526b: 0x407c3a20,
+-	0x526c: 0x407c3c20, 0x526d: 0x407c3e20, 0x526e: 0x407c4020, 0x526f: 0x407c4220,
+-	0x5270: 0x407c4420, 0x5271: 0x407c4620, 0x5272: 0x407c4820, 0x5273: 0x407c4a20,
+-	0x5274: 0x407c4c20, 0x5275: 0x407c4e20, 0x5276: 0x407c5020, 0x5277: 0x407c5220,
+-	0x5278: 0x407c5420, 0x5279: 0x407c5620, 0x527a: 0x407c5820, 0x527b: 0x407c5a20,
+-	0x527c: 0x407c5c20, 0x527d: 0x407c5e20, 0x527e: 0x407c6020, 0x527f: 0x407c6220,
+-	// Block 0x14a, offset 0x5280
+-	0x5280: 0x407c6420, 0x5281: 0x407c6620, 0x5282: 0x407c6820, 0x5283: 0x407c6a20,
+-	0x5284: 0x407c6c20, 0x5285: 0x407c6e20, 0x5286: 0x407c7020, 0x5287: 0x407c7220,
+-	0x5288: 0x407c7420, 0x5289: 0x407c7620, 0x528a: 0x407c7820, 0x528b: 0x407c7a20,
+-	0x528c: 0x407c7c20, 0x528d: 0x407c7e20, 0x528e: 0x407c8020, 0x528f: 0x407c8220,
+-	0x5290: 0x407c8420, 0x5291: 0x407c8620, 0x5292: 0x407c8820, 0x5293: 0x407c8a20,
+-	0x5294: 0x407c8c20, 0x5295: 0x407c8e20, 0x5296: 0x407c9020, 0x5297: 0x407c9220,
+-	0x5298: 0x407c9420, 0x5299: 0x407c9620, 0x529a: 0x407c9820, 0x529b: 0x407c9a20,
+-	0x529c: 0x407c9c20, 0x529d: 0x407c9e20, 0x529e: 0x407ca020, 0x529f: 0x407ca220,
+-	0x52a0: 0x407ca420, 0x52a1: 0x407ca620, 0x52a2: 0x407ca820, 0x52a3: 0x407caa20,
+-	0x52a4: 0x407cac20, 0x52a5: 0x407cae20, 0x52a6: 0x407cb020, 0x52a7: 0x407cb220,
+-	0x52a8: 0x407cb420, 0x52a9: 0x407cb620, 0x52aa: 0x407cb820, 0x52ab: 0x407cba20,
+-	0x52ac: 0x407cbc20, 0x52ad: 0x407cbe20, 0x52ae: 0x407cc020, 0x52af: 0x407cc220,
+-	0x52b0: 0x407cc420, 0x52b1: 0x407cc620, 0x52b2: 0x407cc820, 0x52b3: 0x407cca20,
+-	0x52b4: 0x407ccc20, 0x52b5: 0x407cce20, 0x52b6: 0x407cd020, 0x52b7: 0x407cd220,
+-	0x52b8: 0x407cd420, 0x52b9: 0x407cd620, 0x52ba: 0x407cd820, 0x52bb: 0x407cda20,
+-	0x52bc: 0x407cdc20, 0x52bd: 0x407cde20, 0x52be: 0x407ce020, 0x52bf: 0x407ce220,
+-	// Block 0x14b, offset 0x52c0
+-	0x52c0: 0x407ce420, 0x52c1: 0x407ce620, 0x52c2: 0x407ce820, 0x52c3: 0x407cea20,
+-	0x52c4: 0x407cec20, 0x52c5: 0x407cee20, 0x52c6: 0x407cf020, 0x52c7: 0x407cf220,
+-	0x52c8: 0x407cf420, 0x52c9: 0x407cf620, 0x52ca: 0x407cf820, 0x52cb: 0x407cfa20,
+-	0x52cc: 0x407cfc20, 0x52cd: 0x407cfe20, 0x52ce: 0x407d0020, 0x52cf: 0x407d0220,
+-	0x52d0: 0x407d0420, 0x52d1: 0x407d0620, 0x52d2: 0x407d0820, 0x52d3: 0x407d0a20,
+-	0x52d4: 0x407d0c20, 0x52d5: 0x407d0e20, 0x52d6: 0x407d1020, 0x52d7: 0x407d1220,
+-	0x52d8: 0x407d1420, 0x52d9: 0x407d1620, 0x52da: 0x407d1820, 0x52db: 0x407d1a20,
+-	0x52dc: 0x407d1c20, 0x52dd: 0x407d1e20, 0x52de: 0x407d2020, 0x52df: 0x407d2220,
+-	0x52e0: 0x407d2420, 0x52e1: 0x407d2620, 0x52e2: 0x407d2820, 0x52e3: 0x407d2a20,
+-	0x52e4: 0x407d2c20, 0x52e5: 0x407d2e20, 0x52e6: 0x407d3020, 0x52e7: 0x407d3220,
+-	0x52e8: 0x407d3420, 0x52e9: 0x407d3620, 0x52ea: 0x407d3820, 0x52eb: 0x407d3a20,
+-	0x52ec: 0x407d3c20, 0x52ed: 0x407d3e20, 0x52ee: 0x407d4020, 0x52ef: 0x407d4220,
+-	0x52f0: 0x407d4420, 0x52f1: 0x407d4620, 0x52f2: 0x407d4820, 0x52f3: 0x407d4a20,
+-	0x52f4: 0x407d4c20, 0x52f5: 0x407d4e20, 0x52f6: 0x407d5020, 0x52f7: 0x407d5220,
+-	0x52f8: 0x407d5420, 0x52f9: 0x407d5620, 0x52fa: 0x407d5820, 0x52fb: 0x407d5a20,
+-	0x52fc: 0x407d5c20, 0x52fd: 0x407d5e20, 0x52fe: 0x407d6020, 0x52ff: 0x407d6220,
+-	// Block 0x14c, offset 0x5300
+-	0x5300: 0x407d6420, 0x5301: 0x407d6620, 0x5302: 0x407d6820, 0x5303: 0x407d6a20,
+-	0x5304: 0x407d6c20, 0x5305: 0x407d6e20, 0x5306: 0x407d7020, 0x5307: 0x407d7220,
+-	0x5308: 0x407d7420, 0x5309: 0x407d7620, 0x530a: 0x407d7820, 0x530b: 0x407d7a20,
+-	0x530c: 0x407d7c20, 0x530d: 0x407d7e20, 0x530e: 0x407d8020, 0x530f: 0x407d8220,
+-	0x5310: 0x407d8420, 0x5311: 0x407d8620, 0x5312: 0x407d8820, 0x5313: 0x407d8a20,
+-	0x5314: 0x407d8c20, 0x5315: 0x407d8e20, 0x5316: 0x407d9020, 0x5317: 0x407d9220,
+-	0x5318: 0x407d9420, 0x5319: 0x407d9620, 0x531a: 0x407d9820, 0x531b: 0x407d9a20,
+-	0x531c: 0x407d9c20, 0x531d: 0x407d9e20, 0x531e: 0x407da020, 0x531f: 0x407da220,
+-	0x5320: 0x407da420, 0x5321: 0x407da620, 0x5322: 0x407da820, 0x5323: 0x407daa20,
+-	0x5324: 0x407dac20, 0x5325: 0x407dae20, 0x5326: 0x407db020, 0x5327: 0x407db220,
+-	0x5328: 0x407db420, 0x5329: 0x407db620, 0x532a: 0x407db820, 0x532b: 0x407dba20,
+-	0x532c: 0x407dbc20, 0x532d: 0x407dbe20, 0x532e: 0x407dc020,
+-	// Block 0x14d, offset 0x5340
+-	0x5340: 0xe0000394, 0x5341: 0xe000045f, 0x5342: 0xe0000534, 0x5343: 0xe0000610,
+-	0x5344: 0xe00006cc, 0x5345: 0xe0000771, 0x5346: 0xe000081d, 0x5347: 0xe00008c2,
+-	0x5348: 0xe0000462, 0x5349: 0xe0000537, 0x534a: 0xe0000613, 0x534b: 0xe00006cf,
+-	0x534c: 0xe0000774, 0x534d: 0xe0000820, 0x534e: 0xe00008c5, 0x534f: 0xe000053a,
+-	0x5350: 0xe0000616, 0x5351: 0xe00006d2, 0x5352: 0xe0000777, 0x5353: 0xe0000823,
+-	0x5354: 0xe00008c8, 0x5355: 0xe000027f, 0x5356: 0xe0000397, 0x5357: 0xe0000465,
+-	0x5358: 0xe000053d, 0x5359: 0xe0000619, 0x535a: 0xe00006d5, 0x535b: 0xe000077a,
+-	0x535c: 0xe0000826, 0x535d: 0xe00008cb, 0x535e: 0xe0000282, 0x535f: 0xe000039a,
+-	0x5360: 0xe0000468, 0x5361: 0xe0000540, 0x5362: 0xe000061c, 0x5363: 0xe000039d,
+-	0x5364: 0xe000046b, 0x5365: 0xe000046e, 0x5366: 0xe0000543, 0x5367: 0xe000061f,
+-	0x5368: 0xe00006d8, 0x5369: 0xe000077d, 0x536a: 0xe0000829, 0x536b: 0xe00008ce,
+-	0x536c: 0xe0000285, 0x536d: 0xe00003a0, 0x536e: 0xe0000471, 0x536f: 0xe0000474,
+-	0x5370: 0xe0000546, 0x5371: 0xe0000622, 0x5372: 0x4029a020, 0x5373: 0x4029a220,
+-	0x5374: 0xe0000288, 0x5375: 0xe00003a3, 0x5376: 0xe0000477, 0x5377: 0xe000047a,
+-	0x5378: 0xe0000549, 0x5379: 0xe0000625, 0x537a: 0xe000047d, 0x537b: 0xe0000480,
+-	0x537c: 0xe000054c, 0x537d: 0xe000054f, 0x537e: 0xe0000552, 0x537f: 0xe0000555,
+-	// Block 0x14e, offset 0x5380
+-	0x5380: 0xe00006db, 0x5381: 0xe0000780, 0x5382: 0xe0000783, 0x5383: 0xe0000786,
+-	0x5384: 0xe000082c, 0x5385: 0xe000082f, 0x5386: 0xe00008d1, 0x5387: 0xe00008d4,
+-	0x5388: 0xe00008d7, 0x5389: 0xe00008da, 0x538a: 0xe00003a6, 0x538b: 0xe0000483,
+-	0x538c: 0xe0000558, 0x538d: 0xe0000628, 0x538e: 0xe00006de, 0x538f: 0xe000028b,
+-	0x5390: 0xe00003a9, 0x5391: 0xe0000486, 0x5392: 0xe000055b, 0x5393: 0xe000055e,
+-	0x5394: 0xe000062b, 0x5395: 0xe000062e, 0x5396: 0x4029a420, 0x5397: 0x4029a620,
+-	0x5398: 0xe000028e, 0x5399: 0xe00003ac, 0x539a: 0x4029a820, 0x539b: 0x4029aa20,
+-	0x539c: 0x4029ac20, 0x539d: 0x4029ae20, 0x539e: 0x4029b020, 0x539f: 0x4029b220,
+-	0x53a0: 0x4029b420, 0x53a1: 0x4029b620, 0x53a2: 0x4029b820,
+-	0x53b0: 0x4003ca20, 0x53b1: 0x4003cc20, 0x53b2: 0x4003ce20, 0x53b3: 0x4003d020,
+-	// Block 0x14f, offset 0x53c0
+-	0x53c0: 0x407dc220, 0x53c1: 0x407dc420, 0x53c2: 0x407dc620, 0x53c3: 0x407dc820,
+-	0x53c4: 0x407dca20, 0x53c5: 0x407dcc20, 0x53c6: 0x407dce20, 0x53c7: 0x407dd020,
+-	0x53c8: 0x407dd220, 0x53c9: 0x407dd420, 0x53ca: 0x407dd620, 0x53cb: 0x407dd820,
+-	0x53cc: 0x407dda20, 0x53cd: 0x407ddc20, 0x53ce: 0x407dde20, 0x53cf: 0x407de020,
+-	0x53d0: 0x407de220, 0x53d1: 0x407de420, 0x53d2: 0x407de620, 0x53d3: 0x407de820,
+-	0x53d4: 0x407dea20, 0x53d5: 0x407dec20, 0x53d6: 0x407dee20, 0x53d7: 0x407df020,
+-	0x53d8: 0x407df220, 0x53d9: 0x407df420, 0x53da: 0x407df620, 0x53db: 0x407df820,
+-	0x53dc: 0x407dfa20, 0x53dd: 0x407dfc20, 0x53de: 0x407dfe20, 0x53df: 0x407e0020,
+-	0x53e0: 0x407e0220, 0x53e1: 0x407e0420, 0x53e2: 0x407e0620, 0x53e3: 0x407e0820,
+-	0x53e4: 0x407e0a20, 0x53e5: 0x407e0c20, 0x53e6: 0x407e0e20, 0x53e7: 0x407e1020,
+-	0x53e8: 0x407e1220, 0x53e9: 0x407e1420, 0x53ea: 0x407e1620, 0x53eb: 0x407e1820,
+-	0x53ec: 0x407e1a20, 0x53ed: 0x407e1c20, 0x53ee: 0x407e1e20, 0x53ef: 0x407e2020,
+-	0x53f0: 0x407e2220, 0x53f1: 0x407e2420, 0x53f2: 0x407e2620, 0x53f3: 0x407e2820,
+-	0x53f4: 0x407e2a20, 0x53f5: 0x407e2c20, 0x53f6: 0x407e2e20, 0x53f7: 0x407e3020,
+-	0x53f8: 0x407e3220, 0x53f9: 0x407e3420, 0x53fa: 0x407e3620, 0x53fb: 0x407e3820,
+-	0x53fc: 0x407e3a20, 0x53fd: 0x407e3c20, 0x53fe: 0x407e3e20, 0x53ff: 0x407e4020,
+-	// Block 0x150, offset 0x5400
+-	0x5400: 0x407e4220, 0x5401: 0x407e4420, 0x5402: 0x407e4620, 0x5403: 0x407e4820,
+-	0x5404: 0x407e4a20, 0x5405: 0x407e4c20, 0x5406: 0x407e4e20, 0x5407: 0x407e5020,
+-	0x5408: 0x407e5220, 0x5409: 0x407e5420, 0x540a: 0x407e5620, 0x540b: 0x407e5820,
+-	0x540c: 0x407e5a20, 0x540d: 0x407e5c20, 0x540e: 0x407e5e20, 0x540f: 0x407e6020,
+-	0x5410: 0x407e6220, 0x5411: 0x407e6420, 0x5412: 0x407e6620, 0x5413: 0x407e6820,
+-	0x5414: 0x407e6a20, 0x5415: 0x407e6c20, 0x5416: 0x407e6e20, 0x5417: 0x407e7020,
+-	0x5418: 0x407e7220, 0x5419: 0x407e7420, 0x541a: 0x407e7620, 0x541b: 0x407e7820,
+-	0x541c: 0x407e7a20, 0x541d: 0x407e7c20, 0x541e: 0x407e7e20, 0x541f: 0x407e8020,
+-	0x5420: 0x407e8220, 0x5421: 0x407e8420, 0x5422: 0x407e8620, 0x5423: 0x407e8820,
+-	0x5424: 0x407e8a20, 0x5425: 0x407e8c20, 0x5426: 0x407e8e20, 0x5427: 0x407e9020,
+-	0x5428: 0x407e9220, 0x5429: 0x407e9420, 0x542a: 0x407e9620, 0x542b: 0x407e9820,
+-	0x542c: 0x407e9a20, 0x542d: 0x407e9c20, 0x542e: 0x407e9e20, 0x542f: 0x407ea020,
+-	0x5430: 0x407ea220, 0x5431: 0x407ea420, 0x5432: 0x407ea620, 0x5433: 0x407ea820,
+-	0x5434: 0x407eaa20, 0x5435: 0x407eac20, 0x5436: 0x407eae20, 0x5437: 0x407eb020,
+-	0x5438: 0x407eb220, 0x5439: 0x407eb420, 0x543a: 0x407eb620, 0x543b: 0x407eb820,
+-	0x543c: 0x407eba20, 0x543d: 0x407ebc20, 0x543e: 0x407ebe20, 0x543f: 0x407ec020,
+-	// Block 0x151, offset 0x5440
+-	0x5440: 0x407ec220, 0x5441: 0x407ec420, 0x5442: 0x407ec620, 0x5443: 0x407ec820,
+-	0x5444: 0x407eca20, 0x5445: 0x407ecc20, 0x5446: 0x407ece20, 0x5447: 0x407ed020,
+-	0x5448: 0x407ed220, 0x5449: 0x407ed420, 0x544a: 0x407ed620, 0x544b: 0x407ed820,
+-	0x544c: 0x407eda20, 0x544d: 0x407edc20, 0x544e: 0x407ede20, 0x544f: 0x407ee020,
+-	0x5450: 0x407ee220, 0x5451: 0x407ee420, 0x5452: 0x407ee620, 0x5453: 0x407ee820,
+-	0x5454: 0x407eea20, 0x5455: 0x407eec20, 0x5456: 0x407eee20, 0x5457: 0x407ef020,
+-	0x5458: 0x407ef220, 0x5459: 0x407ef420, 0x545a: 0x407ef620, 0x545b: 0x407ef820,
+-	0x545c: 0x407efa20, 0x545d: 0x407efc20, 0x545e: 0x407efe20, 0x545f: 0x407f0020,
+-	0x5460: 0x407f0220, 0x5461: 0x407f0420, 0x5462: 0x407f0620, 0x5463: 0x407f0820,
+-	0x5464: 0x407f0a20, 0x5465: 0x407f0c20, 0x5466: 0x407f0e20, 0x5467: 0x407f1020,
+-	0x5468: 0x407f1220, 0x5469: 0x407f1420, 0x546a: 0x407f1620, 0x546b: 0x407f1820,
+-	0x546c: 0x407f1a20, 0x546d: 0x407f1c20, 0x546e: 0x407f1e20, 0x546f: 0x407f2020,
+-	0x5470: 0x407f2220, 0x5471: 0x407f2420, 0x5472: 0x407f2620, 0x5473: 0x407f2820,
+-	0x5474: 0x407f2a20, 0x5475: 0x407f2c20, 0x5476: 0x407f2e20, 0x5477: 0x407f3020,
+-	0x5478: 0x407f3220, 0x5479: 0x407f3420, 0x547a: 0x407f3620, 0x547b: 0x407f3820,
+-	0x547c: 0x407f3a20, 0x547d: 0x407f3c20, 0x547e: 0x407f3e20, 0x547f: 0x407f4020,
+-	// Block 0x152, offset 0x5480
+-	0x5480: 0x407f4220, 0x5481: 0x407f4420, 0x5482: 0x407f4620, 0x5483: 0x407f4820,
+-	0x5484: 0x407f4a20, 0x5485: 0x407f4c20, 0x5486: 0x407f4e20, 0x5487: 0x407f5020,
+-	0x5488: 0x407f5220, 0x5489: 0x407f5420, 0x548a: 0x407f5620, 0x548b: 0x407f5820,
+-	0x548c: 0x407f5a20, 0x548d: 0x407f5c20, 0x548e: 0x407f5e20, 0x548f: 0x407f6020,
+-	0x5490: 0x407f6220, 0x5491: 0x407f6420, 0x5492: 0x407f6620, 0x5493: 0x407f6820,
+-	0x5494: 0x407f6a20, 0x5495: 0x407f6c20, 0x5496: 0x407f6e20, 0x5497: 0x407f7020,
+-	0x5498: 0x407f7220, 0x5499: 0x407f7420, 0x549a: 0x407f7620, 0x549b: 0x407f7820,
+-	0x549c: 0x407f7a20, 0x549d: 0x407f7c20, 0x549e: 0x407f7e20, 0x549f: 0x407f8020,
+-	0x54a0: 0x407f8220, 0x54a1: 0x407f8420, 0x54a2: 0x407f8620, 0x54a3: 0x407f8820,
+-	0x54a4: 0x407f8a20, 0x54a5: 0x407f8c20, 0x54a6: 0x407f8e20, 0x54a7: 0x407f9020,
+-	0x54a8: 0x407f9220, 0x54a9: 0x407f9420, 0x54aa: 0x407f9620, 0x54ab: 0x407f9820,
+-	0x54ac: 0x407f9a20, 0x54ad: 0x407f9c20, 0x54ae: 0x407f9e20, 0x54af: 0x407fa020,
+-	0x54b0: 0x407fa220, 0x54b1: 0x407fa420, 0x54b2: 0x407fa620, 0x54b3: 0x407fa820,
+-	0x54b4: 0x407faa20, 0x54b5: 0x407fac20, 0x54b6: 0x407fae20, 0x54b7: 0x407fb020,
+-	0x54b8: 0x407fb220, 0x54b9: 0x407fb420, 0x54ba: 0x407fb620, 0x54bb: 0x407fb820,
+-	0x54bc: 0x407fba20, 0x54bd: 0x407fbc20, 0x54be: 0x407fbe20, 0x54bf: 0x407fc020,
+-	// Block 0x153, offset 0x54c0
+-	0x54c0: 0x407fc220, 0x54c1: 0x407fc420, 0x54c2: 0x407fc620, 0x54c3: 0x407fc820,
+-	0x54c4: 0x407fca20, 0x54c5: 0x407fcc20, 0x54c6: 0x407fce20, 0x54c7: 0x407fd020,
+-	0x54c8: 0x407fd220, 0x54c9: 0x407fd420, 0x54ca: 0x407fd620, 0x54cb: 0x407fd820,
+-	0x54cc: 0x407fda20, 0x54cd: 0x407fdc20, 0x54ce: 0x407fde20, 0x54cf: 0x407fe020,
+-	0x54d0: 0x407fe220, 0x54d1: 0x407fe420, 0x54d2: 0x407fe620, 0x54d3: 0x407fe820,
+-	0x54d4: 0x407fea20, 0x54d5: 0x407fec20, 0x54d6: 0x407fee20, 0x54d7: 0x407ff020,
+-	0x54d8: 0x407ff220, 0x54d9: 0x407ff420, 0x54da: 0x407ff620, 0x54db: 0x407ff820,
+-	0x54dc: 0x407ffa20, 0x54dd: 0x407ffc20, 0x54de: 0x407ffe20, 0x54df: 0x40800020,
+-	0x54e0: 0x40800220, 0x54e1: 0x40800420, 0x54e2: 0x40800620, 0x54e3: 0x40800820,
+-	0x54e4: 0x40800a20, 0x54e5: 0x40800c20, 0x54e6: 0x40800e20, 0x54e7: 0x40801020,
+-	0x54e8: 0x40801220, 0x54e9: 0x40801420, 0x54ea: 0x40801620, 0x54eb: 0x40801820,
+-	0x54ec: 0x40801a20, 0x54ed: 0x40801c20, 0x54ee: 0x40801e20, 0x54ef: 0x40802020,
+-	0x54f0: 0x40802220, 0x54f1: 0x40802420, 0x54f2: 0x40802620, 0x54f3: 0x40802820,
+-	0x54f4: 0x40802a20, 0x54f5: 0x40802c20, 0x54f6: 0x40802e20, 0x54f7: 0x40803020,
+-	0x54f8: 0x40803220, 0x54f9: 0x40803420, 0x54fa: 0x40803620, 0x54fb: 0x40803820,
+-	0x54fc: 0x40803a20, 0x54fd: 0x40803c20, 0x54fe: 0x40803e20, 0x54ff: 0x40804020,
+-	// Block 0x154, offset 0x5500
+-	0x5500: 0x40804220, 0x5501: 0x40804420, 0x5502: 0x40804620, 0x5503: 0x40804820,
+-	0x5504: 0x40804a20, 0x5505: 0x40804c20, 0x5506: 0x40804e20, 0x5507: 0x40805020,
+-	0x5508: 0x40805220, 0x5509: 0x40805420, 0x550a: 0x40805620, 0x550b: 0x40805820,
+-	0x550c: 0x40805a20, 0x550d: 0x40805c20, 0x550e: 0x40805e20, 0x550f: 0x40806020,
+-	0x5510: 0x40806220, 0x5511: 0x40806420, 0x5512: 0x40806620, 0x5513: 0x40806820,
+-	0x5514: 0x40806a20, 0x5515: 0x40806c20, 0x5516: 0x40806e20, 0x5517: 0x40807020,
+-	0x5518: 0x40807220, 0x5519: 0x40807420, 0x551a: 0x40807620, 0x551b: 0x40807820,
+-	0x551c: 0x40807a20, 0x551d: 0x40807c20, 0x551e: 0x40807e20, 0x551f: 0x40808020,
+-	0x5520: 0x40808220, 0x5521: 0x40808420, 0x5522: 0x40808620, 0x5523: 0x40808820,
+-	0x5524: 0x40808a20, 0x5525: 0x40808c20, 0x5526: 0x40808e20, 0x5527: 0x40809020,
+-	0x5528: 0x40809220, 0x5529: 0x40809420, 0x552a: 0x40809620, 0x552b: 0x40809820,
+-	0x552c: 0x40809a20, 0x552d: 0x40809c20, 0x552e: 0x40809e20, 0x552f: 0x4080a020,
+-	0x5530: 0x4080a220, 0x5531: 0x4080a420, 0x5532: 0x4080a620, 0x5533: 0x4080a820,
+-	0x5534: 0x4080aa20, 0x5535: 0x4080ac20, 0x5536: 0x4080ae20, 0x5537: 0x4080b020,
+-	0x5538: 0x4080b220, 0x5539: 0x4080b420, 0x553a: 0x4080b620, 0x553b: 0x4080b820,
+-	0x553c: 0x4080ba20, 0x553d: 0x4080bc20, 0x553e: 0x4080be20, 0x553f: 0x4080c020,
+-	// Block 0x155, offset 0x5540
+-	0x5540: 0x4080c220, 0x5541: 0x4080c420, 0x5542: 0x4080c620, 0x5543: 0x4080c820,
+-	0x5544: 0x4080ca20, 0x5545: 0x4080cc20, 0x5546: 0x4080ce20, 0x5547: 0x4080d020,
+-	0x5548: 0x4080d220, 0x5549: 0x4080d420, 0x554a: 0x4080d620, 0x554b: 0x4080d820,
+-	0x554c: 0x4080da20, 0x554d: 0x4080dc20, 0x554e: 0x4080de20, 0x554f: 0x4080e020,
+-	0x5550: 0x4080e220, 0x5551: 0x4080e420, 0x5552: 0x4080e620, 0x5553: 0x4080e820,
+-	0x5554: 0x4080ea20, 0x5555: 0x4080ec20, 0x5556: 0x4080ee20, 0x5557: 0x4080f020,
+-	0x5558: 0x4080f220, 0x5559: 0x4080f420, 0x555a: 0x4080f620, 0x555b: 0x4080f820,
+-	0x555c: 0x4080fa20, 0x555d: 0x4080fc20, 0x555e: 0x4080fe20, 0x555f: 0x40810020,
+-	0x5560: 0x40810220, 0x5561: 0x40810420, 0x5562: 0x40810620, 0x5563: 0x40810820,
+-	0x5564: 0x40810a20, 0x5565: 0x40810c20, 0x5566: 0x40810e20, 0x5567: 0x40811020,
+-	0x5568: 0x40811220, 0x5569: 0x40811420, 0x556a: 0x40811620, 0x556b: 0x40811820,
+-	0x556c: 0x40811a20, 0x556d: 0x40811c20, 0x556e: 0x40811e20, 0x556f: 0x40812020,
+-	0x5570: 0x40812220, 0x5571: 0x40812420, 0x5572: 0x40812620, 0x5573: 0x40812820,
+-	0x5574: 0x40812a20, 0x5575: 0x40812c20, 0x5576: 0x40812e20, 0x5577: 0x40813020,
+-	0x5578: 0x40813220, 0x5579: 0x40813420, 0x557a: 0x40813620, 0x557b: 0x40813820,
+-	0x557c: 0x40813a20, 0x557d: 0x40813c20, 0x557e: 0x40813e20, 0x557f: 0x40814020,
+-	// Block 0x156, offset 0x5580
+-	0x5580: 0x40814220, 0x5581: 0x40814420, 0x5582: 0x40814620, 0x5583: 0x40814820,
+-	0x5584: 0x40814a20, 0x5585: 0x40814c20, 0x5586: 0x40814e20, 0x5587: 0x40815020,
+-	0x5588: 0x40815220, 0x5589: 0x40815420, 0x558a: 0x40815620, 0x558b: 0x40815820,
+-	0x558c: 0x40815a20, 0x558d: 0x40815c20, 0x558e: 0x40815e20, 0x558f: 0x40816020,
+-	0x5590: 0x40816220, 0x5591: 0x40816420, 0x5592: 0x40816620, 0x5593: 0x40816820,
+-	0x5594: 0x40816a20, 0x5595: 0x40816c20, 0x5596: 0x40816e20, 0x5597: 0x40817020,
+-	0x5598: 0x40817220, 0x5599: 0x40817420, 0x559a: 0x40817620, 0x559b: 0x40817820,
+-	0x559c: 0x40817a20, 0x559d: 0x40817c20, 0x559e: 0x40817e20, 0x559f: 0x40818020,
+-	0x55a0: 0x40818220, 0x55a1: 0x40818420, 0x55a2: 0x40818620, 0x55a3: 0x40818820,
+-	0x55a4: 0x40818a20, 0x55a5: 0x40818c20, 0x55a6: 0x40818e20, 0x55a7: 0x40819020,
+-	0x55a8: 0x40819220, 0x55a9: 0x40819420, 0x55aa: 0x40819620, 0x55ab: 0x40819820,
+-	0x55ac: 0x40819a20, 0x55ad: 0x40819c20, 0x55ae: 0x40819e20, 0x55af: 0x4081a020,
+-	0x55b0: 0x4081a220, 0x55b1: 0x4081a420, 0x55b2: 0x4081a620, 0x55b3: 0x4081a820,
+-	0x55b4: 0x4081aa20, 0x55b5: 0x4081ac20, 0x55b6: 0x4081ae20, 0x55b7: 0x4081b020,
+-	0x55b8: 0x4081b220, 0x55b9: 0x4081b420, 0x55ba: 0x4081b620, 0x55bb: 0x4081b820,
+-	0x55bc: 0x4081ba20, 0x55bd: 0x4081bc20, 0x55be: 0x4081be20, 0x55bf: 0x4081c020,
+-	// Block 0x157, offset 0x55c0
+-	0x55c0: 0x4081c220, 0x55c1: 0x4081c420, 0x55c2: 0x4081c620, 0x55c3: 0x4081c820,
+-	0x55c4: 0x4081ca20, 0x55c5: 0x4081cc20, 0x55c6: 0x4081ce20, 0x55c7: 0x4081d020,
+-	0x55c8: 0x4081d220, 0x55c9: 0x4081d420, 0x55ca: 0x4081d620, 0x55cb: 0x4081d820,
+-	0x55cc: 0x4081da20, 0x55cd: 0x4081dc20, 0x55ce: 0x4081de20, 0x55cf: 0x4081e020,
+-	0x55d0: 0x4081e220, 0x55d1: 0x4081e420, 0x55d2: 0x4081e620, 0x55d3: 0x4081e820,
+-	0x55d4: 0x4081ea20, 0x55d5: 0x4081ec20, 0x55d6: 0x4081ee20, 0x55d7: 0x4081f020,
+-	0x55d8: 0x4081f220, 0x55d9: 0x4081f420, 0x55da: 0x4081f620, 0x55db: 0x4081f820,
+-	0x55dc: 0x4081fa20, 0x55dd: 0x4081fc20, 0x55de: 0x4081fe20, 0x55df: 0x40820020,
+-	0x55e0: 0x40820220, 0x55e1: 0x40820420, 0x55e2: 0x40820620, 0x55e3: 0x40820820,
+-	0x55e4: 0x40820a20, 0x55e5: 0x40820c20, 0x55e6: 0x40820e20, 0x55e7: 0x40821020,
+-	0x55e8: 0x40821220, 0x55e9: 0x40821420, 0x55ea: 0x40821620, 0x55eb: 0x40821820,
+-	0x55ec: 0x40821a20, 0x55ed: 0x40821c20, 0x55ee: 0x40821e20, 0x55ef: 0x40822020,
+-	0x55f0: 0x40822220, 0x55f1: 0x40822420, 0x55f2: 0x40822620, 0x55f3: 0x40822820,
+-	0x55f4: 0x40822a20, 0x55f5: 0x40822c20, 0x55f6: 0x40822e20, 0x55f7: 0x40823020,
+-	0x55f8: 0x40823220, 0x55f9: 0x40823420, 0x55fa: 0x40823620, 0x55fb: 0x40823820,
+-	0x55fc: 0x40823a20, 0x55fd: 0x40823c20, 0x55fe: 0x40823e20, 0x55ff: 0x40824020,
+-	// Block 0x158, offset 0x5600
+-	0x5600: 0x40824220, 0x5601: 0x40824420, 0x5602: 0x40824620, 0x5603: 0x40824820,
+-	0x5604: 0x40824a20, 0x5605: 0x40824c20, 0x5606: 0x40824e20, 0x5607: 0x40825020,
+-	0x5608: 0x40825220, 0x5609: 0x40825420, 0x560a: 0x40825620, 0x560b: 0x40825820,
+-	0x560c: 0x40825a20, 0x560d: 0x40825c20, 0x560e: 0x40825e20, 0x560f: 0x40826020,
+-	0x5610: 0x40826220, 0x5611: 0x40826420, 0x5612: 0x40826620, 0x5613: 0x40826820,
+-	0x5614: 0x40826a20, 0x5615: 0x40826c20, 0x5616: 0x40826e20, 0x5617: 0x40827020,
+-	0x5618: 0x40827220, 0x5619: 0x40827420, 0x561a: 0x40827620, 0x561b: 0x40827820,
+-	0x561c: 0x40827a20, 0x561d: 0x40827c20, 0x561e: 0x40827e20, 0x561f: 0x40828020,
+-	0x5620: 0x40828220, 0x5621: 0x40828420, 0x5622: 0x40828620, 0x5623: 0x40828820,
+-	0x5624: 0x40828a20, 0x5625: 0x40828c20, 0x5626: 0x40828e20, 0x5627: 0x40829020,
+-	0x5628: 0x40829220, 0x5629: 0x40829420, 0x562a: 0x40829620, 0x562b: 0x40829820,
+-	0x562c: 0x40829a20, 0x562d: 0x40829c20, 0x562e: 0x40829e20, 0x562f: 0x4082a020,
+-	0x5630: 0x4082a220, 0x5631: 0x4082a420, 0x5632: 0x4082a620, 0x5633: 0x4082a820,
+-	0x5634: 0x4082aa20, 0x5635: 0x4082ac20, 0x5636: 0x4082ae20, 0x5637: 0x4082b020,
+-	0x5638: 0x4082b220, 0x5639: 0x4082b420, 0x563a: 0x4082b620, 0x563b: 0x4082b820,
+-	0x563c: 0x4082ba20, 0x563d: 0x4082bc20, 0x563e: 0x4082be20, 0x563f: 0x4082c020,
+-	// Block 0x159, offset 0x5640
+-	0x5640: 0x4082c220, 0x5641: 0x4082c420, 0x5642: 0x4082c620, 0x5643: 0x4082c820,
+-	0x5644: 0x4082ca20, 0x5645: 0x4082cc20, 0x5646: 0x4082ce20, 0x5647: 0x4082d020,
+-	0x5648: 0x4082d220, 0x5649: 0x4082d420, 0x564a: 0x4082d620, 0x564b: 0x4082d820,
+-	0x564c: 0x4082da20, 0x564d: 0x4082dc20, 0x564e: 0x4082de20, 0x564f: 0x4082e020,
+-	0x5650: 0x4082e220, 0x5651: 0x4082e420, 0x5652: 0x4082e620, 0x5653: 0x4082e820,
+-	0x5654: 0x4082ea20, 0x5655: 0x4082ec20, 0x5656: 0x4082ee20, 0x5657: 0x4082f020,
+-	0x5658: 0x4082f220, 0x5659: 0x4082f420, 0x565a: 0x4082f620, 0x565b: 0x4082f820,
+-	0x565c: 0x4082fa20, 0x565d: 0x4082fc20, 0x565e: 0x4082fe20, 0x565f: 0x40830020,
+-	0x5660: 0x40830220, 0x5661: 0x40830420, 0x5662: 0x40830620, 0x5663: 0x40830820,
+-	0x5664: 0x40830a20, 0x5665: 0x40830c20, 0x5666: 0x40830e20, 0x5667: 0x40831020,
+-	0x5668: 0x40831220, 0x5669: 0x40831420, 0x566a: 0x40831620, 0x566b: 0x40831820,
+-	0x566c: 0x40831a20, 0x566d: 0x40831c20, 0x566e: 0x40831e20, 0x566f: 0x40832020,
+-	0x5670: 0x40832220, 0x5671: 0x40832420, 0x5672: 0x40832620, 0x5673: 0x40832820,
+-	0x5674: 0x40832a20, 0x5675: 0x40832c20, 0x5676: 0x40832e20, 0x5677: 0x40833020,
+-	0x5678: 0x40833220, 0x5679: 0x40833420, 0x567a: 0x40833620, 0x567b: 0x40833820,
+-	0x567c: 0x40833a20, 0x567d: 0x40833c20, 0x567e: 0x40833e20, 0x567f: 0x40834020,
+-	// Block 0x15a, offset 0x5680
+-	0x5680: 0x40834220, 0x5681: 0x40834420, 0x5682: 0x40834620, 0x5683: 0x40834820,
+-	0x5684: 0x40834a20, 0x5685: 0x40834c20, 0x5686: 0x40834e20, 0x5687: 0x40835020,
+-	0x5688: 0x40835220, 0x5689: 0x40835420, 0x568a: 0x40835620, 0x568b: 0x40835820,
+-	0x568c: 0x40835a20, 0x568d: 0x40835c20, 0x568e: 0x40835e20, 0x568f: 0x40836020,
+-	0x5690: 0x40836220, 0x5691: 0x40836420, 0x5692: 0x40836620, 0x5693: 0x40836820,
+-	0x5694: 0x40836a20, 0x5695: 0x40836c20, 0x5696: 0x40836e20, 0x5697: 0x40837020,
+-	0x5698: 0x40837220, 0x5699: 0x40837420, 0x569a: 0x40837620, 0x569b: 0x40837820,
+-	0x569c: 0x40837a20, 0x569d: 0x40837c20, 0x569e: 0x40837e20, 0x569f: 0x40838020,
+-	0x56a0: 0x40838220, 0x56a1: 0x40838420, 0x56a2: 0x40838620, 0x56a3: 0x40838820,
+-	0x56a4: 0x40838a20, 0x56a5: 0x40838c20, 0x56a6: 0x40838e20, 0x56a7: 0x40839020,
+-	0x56a8: 0x40839220, 0x56a9: 0x40839420, 0x56aa: 0x40839620, 0x56ab: 0x40839820,
+-	0x56ac: 0x40839a20, 0x56ad: 0x40839c20, 0x56ae: 0x40839e20, 0x56af: 0x4083a020,
+-	0x56b0: 0x4083a220, 0x56b1: 0x4083a420, 0x56b2: 0x4083a620, 0x56b3: 0x4083a820,
+-	0x56b4: 0x4083aa20, 0x56b5: 0x4083ac20, 0x56b6: 0x4083ae20, 0x56b7: 0x4083b020,
+-	0x56b8: 0x4083b220, 0x56b9: 0x4083b420, 0x56ba: 0x4083b620, 0x56bb: 0x4083b820,
+-	0x56bc: 0x4083ba20, 0x56bd: 0x4083bc20, 0x56be: 0x4083be20, 0x56bf: 0x4083c020,
+-	// Block 0x15b, offset 0x56c0
+-	0x56c0: 0x4083c220, 0x56c1: 0x4083c420, 0x56c2: 0x4083c620, 0x56c3: 0x4083c820,
+-	0x56c4: 0x4083ca20, 0x56c5: 0x4083cc20, 0x56c6: 0x4083ce20, 0x56c7: 0x4083d020,
+-	0x56c8: 0x4083d220, 0x56c9: 0x4083d420, 0x56ca: 0x4083d620, 0x56cb: 0x4083d820,
+-	0x56cc: 0x4083da20, 0x56cd: 0x4083dc20, 0x56ce: 0x4083de20, 0x56cf: 0x4083e020,
+-	0x56d0: 0x4083e220, 0x56d1: 0x4083e420, 0x56d2: 0x4083e620, 0x56d3: 0x4083e820,
+-	0x56d4: 0x4083ea20, 0x56d5: 0x4083ec20, 0x56d6: 0x4083ee20, 0x56d7: 0x4083f020,
+-	0x56d8: 0x4083f220, 0x56d9: 0x4083f420, 0x56da: 0x4083f620, 0x56db: 0x4083f820,
+-	0x56dc: 0x4083fa20, 0x56dd: 0x4083fc20, 0x56de: 0x4083fe20, 0x56df: 0x40840020,
+-	0x56e0: 0x40840220, 0x56e1: 0x40840420, 0x56e2: 0x40840620, 0x56e3: 0x40840820,
+-	0x56e4: 0x40840a20, 0x56e5: 0x40840c20, 0x56e6: 0x40840e20, 0x56e7: 0x40841020,
+-	0x56e8: 0x40841220, 0x56e9: 0x40841420, 0x56ea: 0x40841620, 0x56eb: 0x40841820,
+-	0x56ec: 0x40841a20, 0x56ed: 0x40841c20, 0x56ee: 0x40841e20, 0x56ef: 0x40842020,
+-	0x56f0: 0x40842220, 0x56f1: 0x40842420, 0x56f2: 0x40842620, 0x56f3: 0x40842820,
+-	0x56f4: 0x40842a20, 0x56f5: 0x40842c20, 0x56f6: 0x40842e20, 0x56f7: 0x40843020,
+-	0x56f8: 0x40843220, 0x56f9: 0x40843420, 0x56fa: 0x40843620, 0x56fb: 0x40843820,
+-	0x56fc: 0x40843a20, 0x56fd: 0x40843c20, 0x56fe: 0x40843e20, 0x56ff: 0x40844020,
+-	// Block 0x15c, offset 0x5700
+-	0x5700: 0x40844220, 0x5701: 0x40844420, 0x5702: 0x40844620, 0x5703: 0x40844820,
+-	0x5704: 0x40844a20, 0x5705: 0x40844c20, 0x5706: 0x40844e20, 0x5707: 0x40845020,
+-	0x5708: 0x40845220, 0x5709: 0x40845420, 0x570a: 0x40845620, 0x570b: 0x40845820,
+-	0x570c: 0x40845a20, 0x570d: 0x40845c20, 0x570e: 0x40845e20, 0x570f: 0x40846020,
+-	0x5710: 0x40846220, 0x5711: 0x40846420, 0x5712: 0x40846620, 0x5713: 0x40846820,
+-	0x5714: 0x40846a20, 0x5715: 0x40846c20, 0x5716: 0x40846e20, 0x5717: 0x40847020,
+-	0x5718: 0x40847220, 0x5719: 0x40847420, 0x571a: 0x40847620, 0x571b: 0x40847820,
+-	0x571c: 0x40847a20, 0x571d: 0x40847c20, 0x571e: 0x40847e20, 0x571f: 0x40848020,
+-	0x5720: 0x40848220, 0x5721: 0x40848420, 0x5722: 0x40848620, 0x5723: 0x40848820,
+-	0x5724: 0x40848a20, 0x5725: 0x40848c20, 0x5726: 0x40848e20, 0x5727: 0x40849020,
+-	0x5728: 0x40849220, 0x5729: 0x40849420, 0x572a: 0x40849620, 0x572b: 0x40849820,
+-	0x572c: 0x40849a20, 0x572d: 0x40849c20, 0x572e: 0x40849e20, 0x572f: 0x4084a020,
+-	0x5730: 0x4084a220, 0x5731: 0x4084a420, 0x5732: 0x4084a620, 0x5733: 0x4084a820,
+-	0x5734: 0x4084aa20, 0x5735: 0x4084ac20, 0x5736: 0x4084ae20, 0x5737: 0x4084b020,
+-	0x5738: 0x4084b220, 0x5739: 0x4084b420, 0x573a: 0x4084b620, 0x573b: 0x4084b820,
+-	0x573c: 0x4084ba20, 0x573d: 0x4084bc20, 0x573e: 0x4084be20, 0x573f: 0x4084c020,
+-	// Block 0x15d, offset 0x5740
+-	0x5740: 0x4084c220, 0x5741: 0x4084c420, 0x5742: 0x4084c620, 0x5743: 0x4084c820,
+-	0x5744: 0x4084ca20, 0x5745: 0x4084cc20, 0x5746: 0x4084ce20, 0x5747: 0x4084d020,
+-	0x5748: 0x4084d220, 0x5749: 0x4084d420, 0x574a: 0x4084d620, 0x574b: 0x4084d820,
+-	0x574c: 0x4084da20, 0x574d: 0x4084dc20, 0x574e: 0x4084de20, 0x574f: 0x4084e020,
+-	0x5750: 0x4084e220, 0x5751: 0x4084e420, 0x5752: 0x4084e620, 0x5753: 0x4084e820,
+-	0x5754: 0x4084ea20, 0x5755: 0x4084ec20, 0x5756: 0x4084ee20, 0x5757: 0x4084f020,
+-	0x5758: 0x4084f220, 0x5759: 0x4084f420, 0x575a: 0x4084f620, 0x575b: 0x4084f820,
+-	0x575c: 0x4084fa20, 0x575d: 0x4084fc20, 0x575e: 0x4084fe20, 0x575f: 0x40850020,
+-	0x5760: 0x40850220, 0x5761: 0x40850420, 0x5762: 0x40850620, 0x5763: 0x40850820,
+-	0x5764: 0x40850a20, 0x5765: 0x40850c20, 0x5766: 0x40850e20, 0x5767: 0x40851020,
+-	0x5768: 0x40851220, 0x5769: 0x40851420, 0x576a: 0x40851620, 0x576b: 0x40851820,
+-	0x576c: 0x40851a20, 0x576d: 0x40851c20, 0x576e: 0x40851e20, 0x576f: 0x40852020,
+-	0x5770: 0x40852220, 0x5771: 0x40852420, 0x5772: 0x40852620, 0x5773: 0x40852820,
+-	0x5774: 0x40852a20, 0x5775: 0x40852c20, 0x5776: 0x40852e20, 0x5777: 0x40853020,
+-	0x5778: 0x40853220, 0x5779: 0x40853420, 0x577a: 0x40853620, 0x577b: 0x40853820,
+-	0x577c: 0x40853a20, 0x577d: 0x40853c20, 0x577e: 0x40853e20, 0x577f: 0x40854020,
+-	// Block 0x15e, offset 0x5780
+-	0x5780: 0x40854220, 0x5781: 0x40854420, 0x5782: 0x40854620, 0x5783: 0x40854820,
+-	0x5784: 0x40854a20, 0x5785: 0x40854c20, 0x5786: 0x40854e20, 0x5787: 0x40855020,
+-	0x5788: 0x40855220, 0x5789: 0x40855420, 0x578a: 0x40855620, 0x578b: 0x40855820,
+-	0x578c: 0x40855a20, 0x578d: 0x40855c20, 0x578e: 0x40855e20, 0x578f: 0x40856020,
+-	0x5790: 0x40856220, 0x5791: 0x40856420, 0x5792: 0x40856620, 0x5793: 0x40856820,
+-	0x5794: 0x40856a20, 0x5795: 0x40856c20, 0x5796: 0x40856e20, 0x5797: 0x40857020,
+-	0x5798: 0x40857220, 0x5799: 0x40857420, 0x579a: 0x40857620, 0x579b: 0x40857820,
+-	0x579c: 0x40857a20, 0x579d: 0x40857c20, 0x579e: 0x40857e20, 0x579f: 0x40858020,
+-	0x57a0: 0x40858220, 0x57a1: 0x40858420, 0x57a2: 0x40858620, 0x57a3: 0x40858820,
+-	0x57a4: 0x40858a20, 0x57a5: 0x40858c20, 0x57a6: 0x40858e20, 0x57a7: 0x40859020,
+-	0x57a8: 0x40859220, 0x57a9: 0x40859420, 0x57aa: 0x40859620, 0x57ab: 0x40859820,
+-	0x57ac: 0x40859a20, 0x57ad: 0x40859c20, 0x57ae: 0x40859e20, 0x57af: 0x4085a020,
+-	0x57b0: 0x4085a220, 0x57b1: 0x4085a420, 0x57b2: 0x4085a620, 0x57b3: 0x4085a820,
+-	0x57b4: 0x4085aa20, 0x57b5: 0x4085ac20, 0x57b6: 0x4085ae20, 0x57b7: 0x4085b020,
+-	0x57b8: 0x4085b220, 0x57b9: 0x4085b420, 0x57ba: 0x4085b620, 0x57bb: 0x4085b820,
+-	0x57bc: 0x4085ba20, 0x57bd: 0x4085bc20, 0x57be: 0x4085be20, 0x57bf: 0x4085c020,
+-	// Block 0x15f, offset 0x57c0
+-	0x57c0: 0x4085c220, 0x57c1: 0x4085c420, 0x57c2: 0x4085c620, 0x57c3: 0x4085c820,
+-	0x57c4: 0x4085ca20, 0x57c5: 0x4085cc20, 0x57c6: 0x4085ce20, 0x57c7: 0x4085d020,
+-	0x57c8: 0x4085d220, 0x57c9: 0x4085d420, 0x57ca: 0x4085d620, 0x57cb: 0x4085d820,
+-	0x57cc: 0x4085da20, 0x57cd: 0x4085dc20, 0x57ce: 0x4085de20, 0x57cf: 0x4085e020,
+-	0x57d0: 0x4085e220, 0x57d1: 0x4085e420, 0x57d2: 0x4085e620, 0x57d3: 0x4085e820,
+-	0x57d4: 0x4085ea20, 0x57d5: 0x4085ec20, 0x57d6: 0x4085ee20, 0x57d7: 0x4085f020,
+-	0x57d8: 0x4085f220, 0x57d9: 0x4085f420, 0x57da: 0x4085f620, 0x57db: 0x4085f820,
+-	0x57dc: 0x4085fa20, 0x57dd: 0x4085fc20, 0x57de: 0x4085fe20, 0x57df: 0x40860020,
+-	0x57e0: 0x40860220, 0x57e1: 0x40860420, 0x57e2: 0x40860620, 0x57e3: 0x40860820,
+-	0x57e4: 0x40860a20, 0x57e5: 0x40860c20, 0x57e6: 0x40860e20, 0x57e7: 0x40861020,
+-	0x57e8: 0x40861220, 0x57e9: 0x40861420, 0x57ea: 0x40861620, 0x57eb: 0x40861820,
+-	0x57ec: 0x40861a20, 0x57ed: 0x40861c20, 0x57ee: 0x40861e20,
+-	// Block 0x160, offset 0x5800
+-	0x5800: 0x405e3a20, 0x5801: 0x405e3c20, 0x5802: 0x405e3e20, 0x5803: 0x405e4020,
+-	0x5804: 0x405e4220, 0x5805: 0x405e4420, 0x5806: 0x405e4620, 0x5807: 0x405e4820,
+-	0x5808: 0x405e4a20, 0x5809: 0x405e4c20, 0x580a: 0x405e4e20, 0x580b: 0x405e5020,
+-	0x580c: 0x405e5220, 0x580d: 0x405e5420, 0x580e: 0x405e5620, 0x580f: 0x405e5820,
+-	0x5810: 0x405e5a20, 0x5811: 0x405e5c20, 0x5812: 0x405e5e20, 0x5813: 0x405e6020,
+-	0x5814: 0x405e6220, 0x5815: 0x405e6420, 0x5816: 0x405e6620, 0x5817: 0x405e6820,
+-	0x5818: 0x405e6a20, 0x5819: 0x405e6c20, 0x581a: 0x405e6e20, 0x581b: 0x405e7020,
+-	0x581c: 0x405e7220, 0x581d: 0x405e7420, 0x581e: 0x405e7620, 0x581f: 0x405e7820,
+-	0x5820: 0x405e7a20, 0x5821: 0x405e7c20, 0x5822: 0x405e7e20, 0x5823: 0x405e8020,
+-	0x5824: 0x405e8220, 0x5825: 0x405e8420, 0x5826: 0x405e8620, 0x5827: 0x405e8820,
+-	0x5828: 0x405e8a20, 0x5829: 0x405e8c20, 0x582a: 0x405e8e20, 0x582b: 0x405e9020,
+-	0x582c: 0x405e9220, 0x582d: 0x405e9420, 0x582e: 0x405e9620, 0x582f: 0x405e9820,
+-	0x5830: 0x405e9a20, 0x5831: 0x405e9c20, 0x5832: 0x405e9e20, 0x5833: 0x405ea020,
+-	0x5834: 0x405ea220, 0x5835: 0x405ea420, 0x5836: 0x405ea620, 0x5837: 0x405ea820,
+-	0x5838: 0x405eaa20, 0x5839: 0x405eac20, 0x583a: 0x405eae20, 0x583b: 0x405eb020,
+-	0x583c: 0x405eb220, 0x583d: 0x405eb420, 0x583e: 0x405eb620, 0x583f: 0x405eb820,
+-	// Block 0x161, offset 0x5840
+-	0x5840: 0x405eba20, 0x5841: 0x405ebc20, 0x5842: 0x405ebe20, 0x5843: 0x405ec020,
+-	0x5844: 0x405ec220, 0x5845: 0x405ec420, 0x5846: 0x405ec620, 0x5847: 0x405ec820,
+-	0x5848: 0x405eca20, 0x5849: 0x405ecc20, 0x584a: 0x405ece20, 0x584b: 0x405ed020,
+-	0x584c: 0x405ed220, 0x584d: 0x405ed420, 0x584e: 0x405ed620, 0x584f: 0x405ed820,
+-	0x5850: 0x405eda20, 0x5851: 0x405edc20, 0x5852: 0x405ede20, 0x5853: 0x405ee020,
+-	0x5854: 0x405ee220, 0x5855: 0x405ee420, 0x5856: 0x405ee620, 0x5857: 0x405ee820,
+-	0x5858: 0x405eea20, 0x5859: 0x405eec20, 0x585a: 0x405eee20, 0x585b: 0x405ef020,
+-	0x585c: 0x405ef220, 0x585d: 0x405ef420, 0x585e: 0x405ef620, 0x585f: 0x405ef820,
+-	0x5860: 0x405efa20, 0x5861: 0x405efc20, 0x5862: 0x405efe20, 0x5863: 0x405f0020,
+-	0x5864: 0x405f0220, 0x5865: 0x405f0420, 0x5866: 0x405f0620, 0x5867: 0x405f0820,
+-	0x5868: 0x405f0a20, 0x5869: 0x405f0c20, 0x586a: 0x405f0e20, 0x586b: 0x405f1020,
+-	0x586c: 0x405f1220, 0x586d: 0x405f1420, 0x586e: 0x405f1620, 0x586f: 0x405f1820,
+-	0x5870: 0x405f1a20, 0x5871: 0x405f1c20, 0x5872: 0x405f1e20, 0x5873: 0x405f2020,
+-	0x5874: 0x405f2220, 0x5875: 0x405f2420, 0x5876: 0x405f2620, 0x5877: 0x405f2820,
+-	0x5878: 0x405f2a20, 0x5879: 0x405f2c20, 0x587a: 0x405f2e20, 0x587b: 0x405f3020,
+-	0x587c: 0x405f3220, 0x587d: 0x405f3420, 0x587e: 0x405f3620, 0x587f: 0x405f3820,
+-	// Block 0x162, offset 0x5880
+-	0x5880: 0x405f3a20, 0x5881: 0x405f3c20, 0x5882: 0x405f3e20, 0x5883: 0x405f4020,
+-	0x5884: 0x405f4220, 0x5885: 0x405f4420, 0x5886: 0x405f4620, 0x5887: 0x405f4820,
+-	0x5888: 0x405f4a20, 0x5889: 0x405f4c20, 0x588a: 0x405f4e20, 0x588b: 0x405f5020,
+-	0x588c: 0x405f5220, 0x588d: 0x405f5420, 0x588e: 0x405f5620, 0x588f: 0x405f5820,
+-	0x5890: 0x405f5a20, 0x5891: 0x405f5c20, 0x5892: 0x405f5e20, 0x5893: 0x405f6020,
+-	0x5894: 0x405f6220, 0x5895: 0x405f6420, 0x5896: 0x405f6620, 0x5897: 0x405f6820,
+-	0x5898: 0x405f6a20, 0x5899: 0x405f6c20, 0x589a: 0x405f6e20, 0x589b: 0x405f7020,
+-	0x589c: 0x405f7220, 0x589d: 0x405f7420, 0x589e: 0x405f7620, 0x589f: 0x405f7820,
+-	0x58a0: 0x405f7a20, 0x58a1: 0x405f7c20, 0x58a2: 0x405f7e20, 0x58a3: 0x405f8020,
+-	0x58a4: 0x405f8220, 0x58a5: 0x405f8420, 0x58a6: 0x405f8620, 0x58a7: 0x405f8820,
+-	0x58a8: 0x405f8a20, 0x58a9: 0x405f8c20, 0x58aa: 0x405f8e20, 0x58ab: 0x405f9020,
+-	0x58ac: 0x405f9220, 0x58ad: 0x405f9420, 0x58ae: 0x405f9620, 0x58af: 0x405f9820,
+-	0x58b0: 0x405f9a20, 0x58b1: 0x405f9c20, 0x58b2: 0x405f9e20, 0x58b3: 0x405fa020,
+-	0x58b4: 0x405fa220, 0x58b5: 0x405fa420, 0x58b6: 0x405fa620, 0x58b7: 0x405fa820,
+-	0x58b8: 0x405faa20, 0x58b9: 0x405fac20, 0x58ba: 0x405fae20, 0x58bb: 0x405fb020,
+-	0x58bc: 0x405fb220, 0x58bd: 0x405fb420, 0x58be: 0x405fb620, 0x58bf: 0x405fb820,
+-	// Block 0x163, offset 0x58c0
+-	0x58c0: 0x405fba20, 0x58c1: 0x405fbc20, 0x58c2: 0x405fbe20, 0x58c3: 0x405fc020,
+-	0x58c4: 0x405fc220, 0x58c5: 0x405fc420, 0x58c6: 0x405fc620, 0x58c7: 0x405fc820,
+-	0x58c8: 0x405fca20, 0x58c9: 0x405fcc20, 0x58ca: 0x405fce20, 0x58cb: 0x405fd020,
+-	0x58cc: 0x405fd220, 0x58cd: 0x405fd420, 0x58ce: 0x405fd620, 0x58cf: 0x405fd820,
+-	0x58d0: 0x405fda20, 0x58d1: 0x405fdc20, 0x58d2: 0x405fde20, 0x58d3: 0x405fe020,
+-	0x58d4: 0x405fe220, 0x58d5: 0x405fe420, 0x58d6: 0x405fe620, 0x58d7: 0x405fe820,
+-	0x58d8: 0x405fea20, 0x58d9: 0x405fec20, 0x58da: 0x405fee20, 0x58db: 0x405ff020,
+-	0x58dc: 0x405ff220, 0x58dd: 0x405ff420, 0x58de: 0x405ff620, 0x58df: 0x405ff820,
+-	0x58e0: 0x405ffa20, 0x58e1: 0x405ffc20, 0x58e2: 0x405ffe20, 0x58e3: 0x40600020,
+-	0x58e4: 0x40600220, 0x58e5: 0x40600420, 0x58e6: 0x40600620, 0x58e7: 0x40600820,
+-	0x58e8: 0x40600a20, 0x58e9: 0x40600c20, 0x58ea: 0x40600e20, 0x58eb: 0x40601020,
+-	0x58ec: 0x40601220, 0x58ed: 0x40601420, 0x58ee: 0x40601620, 0x58ef: 0x40601820,
+-	0x58f0: 0x40601a20, 0x58f1: 0x40601c20, 0x58f2: 0x40601e20, 0x58f3: 0x40602020,
+-	0x58f4: 0x40602220, 0x58f5: 0x40602420, 0x58f6: 0x40602620, 0x58f7: 0x40602820,
+-	0x58f8: 0x40602a20, 0x58f9: 0x40602c20, 0x58fa: 0x40602e20, 0x58fb: 0x40603020,
+-	0x58fc: 0x40603220, 0x58fd: 0x40603420, 0x58fe: 0x40603620, 0x58ff: 0x40603820,
+-	// Block 0x164, offset 0x5900
+-	0x5900: 0x40603a20, 0x5901: 0x40603c20, 0x5902: 0x40603e20, 0x5903: 0x40604020,
+-	0x5904: 0x40604220, 0x5905: 0x40604420, 0x5906: 0x40604620, 0x5907: 0x40604820,
+-	0x5908: 0x40604a20, 0x5909: 0x40604c20, 0x590a: 0x40604e20, 0x590b: 0x40605020,
+-	0x590c: 0x40605220, 0x590d: 0x40605420, 0x590e: 0x40605620, 0x590f: 0x40605820,
+-	0x5910: 0x40605a20, 0x5911: 0x40605c20, 0x5912: 0x40605e20, 0x5913: 0x40606020,
+-	0x5914: 0x40606220, 0x5915: 0x40606420, 0x5916: 0x40606620, 0x5917: 0x40606820,
+-	0x5918: 0x40606a20, 0x5919: 0x40606c20, 0x591a: 0x40606e20, 0x591b: 0x40607020,
+-	0x591c: 0x40607220, 0x591d: 0x40607420, 0x591e: 0x40607620, 0x591f: 0x40607820,
+-	0x5920: 0x40607a20, 0x5921: 0x40607c20, 0x5922: 0x40607e20, 0x5923: 0x40608020,
+-	0x5924: 0x40608220, 0x5925: 0x40608420, 0x5926: 0x40608620, 0x5927: 0x40608820,
+-	0x5928: 0x40608a20, 0x5929: 0x40608c20, 0x592a: 0x40608e20, 0x592b: 0x40609020,
+-	0x592c: 0x40609220, 0x592d: 0x40609420, 0x592e: 0x40609620, 0x592f: 0x40609820,
+-	0x5930: 0x40609a20, 0x5931: 0x40609c20, 0x5932: 0x40609e20, 0x5933: 0x4060a020,
+-	0x5934: 0x4060a220, 0x5935: 0x4060a420, 0x5936: 0x4060a620, 0x5937: 0x4060a820,
+-	0x5938: 0x4060aa20, 0x5939: 0x4060ac20, 0x593a: 0x4060ae20, 0x593b: 0x4060b020,
+-	0x593c: 0x4060b220, 0x593d: 0x4060b420, 0x593e: 0x4060b620, 0x593f: 0x4060b820,
+-	// Block 0x165, offset 0x5940
+-	0x5940: 0x4060ba20, 0x5941: 0x4060bc20, 0x5942: 0x4060be20, 0x5943: 0x4060c020,
+-	0x5944: 0x4060c220, 0x5945: 0x4060c420, 0x5946: 0x4060c620, 0x5947: 0x4060c820,
+-	0x5948: 0x4060ca20, 0x5949: 0x4060cc20, 0x594a: 0x4060ce20, 0x594b: 0x4060d020,
+-	0x594c: 0x4060d220, 0x594d: 0x4060d420, 0x594e: 0x4060d620, 0x594f: 0x4060d820,
+-	0x5950: 0x4060da20, 0x5951: 0x4060dc20, 0x5952: 0x4060de20, 0x5953: 0x4060e020,
+-	0x5954: 0x4060e220, 0x5955: 0x4060e420, 0x5956: 0x4060e620, 0x5957: 0x4060e820,
+-	0x5958: 0x4060ea20, 0x5959: 0x4060ec20, 0x595a: 0x4060ee20, 0x595b: 0x4060f020,
+-	0x595c: 0x4060f220, 0x595d: 0x4060f420, 0x595e: 0x4060f620, 0x595f: 0x4060f820,
+-	0x5960: 0x4060fa20, 0x5961: 0x4060fc20, 0x5962: 0x4060fe20, 0x5963: 0x40610020,
+-	0x5964: 0x40610220, 0x5965: 0x40610420, 0x5966: 0x40610620, 0x5967: 0x40610820,
+-	0x5968: 0x40610a20, 0x5969: 0x40610c20, 0x596a: 0x40610e20, 0x596b: 0x40611020,
+-	0x596c: 0x40611220, 0x596d: 0x40611420, 0x596e: 0x40611620, 0x596f: 0x40611820,
+-	0x5970: 0x40611a20, 0x5971: 0x40611c20, 0x5972: 0x40611e20, 0x5973: 0x40612020,
+-	0x5974: 0x40612220, 0x5975: 0x40612420, 0x5976: 0x40612620, 0x5977: 0x40612820,
+-	0x5978: 0x40612a20, 0x5979: 0x40612c20, 0x597a: 0x40612e20, 0x597b: 0x40613020,
+-	0x597c: 0x40613220, 0x597d: 0x40613420, 0x597e: 0x40613620, 0x597f: 0x40613820,
+-	// Block 0x166, offset 0x5980
+-	0x5980: 0x40613a20, 0x5981: 0x40613c20, 0x5982: 0x40613e20, 0x5983: 0x40614020,
+-	0x5984: 0x40614220, 0x5985: 0x40614420, 0x5986: 0x40614620, 0x5987: 0x40614820,
+-	0x5988: 0x40614a20, 0x5989: 0x40614c20, 0x598a: 0x40614e20, 0x598b: 0x40615020,
+-	0x598c: 0x40615220, 0x598d: 0x40615420, 0x598e: 0x40615620, 0x598f: 0x40615820,
+-	0x5990: 0x40615a20, 0x5991: 0x40615c20, 0x5992: 0x40615e20, 0x5993: 0x40616020,
+-	0x5994: 0x40616220, 0x5995: 0x40616420, 0x5996: 0x40616620, 0x5997: 0x40616820,
+-	0x5998: 0x40616a20, 0x5999: 0x40616c20, 0x599a: 0x40616e20, 0x599b: 0x40617020,
+-	0x599c: 0x40617220, 0x599d: 0x40617420, 0x599e: 0x40617620, 0x599f: 0x40617820,
+-	0x59a0: 0x40617a20, 0x59a1: 0x40617c20, 0x59a2: 0x40617e20, 0x59a3: 0x40618020,
+-	0x59a4: 0x40618220, 0x59a5: 0x40618420, 0x59a6: 0x40618620, 0x59a7: 0x40618820,
+-	0x59a8: 0x40618a20, 0x59a9: 0x40618c20, 0x59aa: 0x40618e20, 0x59ab: 0x40619020,
+-	0x59ac: 0x40619220, 0x59ad: 0x40619420, 0x59ae: 0x40619620, 0x59af: 0x40619820,
+-	0x59b0: 0x40619a20, 0x59b1: 0x40619c20, 0x59b2: 0x40619e20, 0x59b3: 0x4061a020,
+-	0x59b4: 0x4061a220, 0x59b5: 0x4061a420, 0x59b6: 0x4061a620, 0x59b7: 0x4061a820,
+-	0x59b8: 0x4061aa20, 0x59b9: 0x4061ac20, 0x59ba: 0x4061ae20, 0x59bb: 0x4061b020,
+-	0x59bc: 0x4061b220, 0x59bd: 0x4061b420, 0x59be: 0x4061b620, 0x59bf: 0x4061b820,
+-	// Block 0x167, offset 0x59c0
+-	0x59c0: 0x4061ba20, 0x59c1: 0x4061bc20, 0x59c2: 0x4061be20, 0x59c3: 0x4061c020,
+-	0x59c4: 0x4061c220, 0x59c5: 0x4061c420, 0x59c6: 0x4061c620, 0x59c7: 0x4061c820,
+-	0x59c8: 0x4061ca20, 0x59c9: 0x4061cc20, 0x59ca: 0x4061ce20, 0x59cb: 0x4061d020,
+-	0x59cc: 0x4061d220, 0x59cd: 0x4061d420, 0x59ce: 0x4061d620, 0x59cf: 0x4061d820,
+-	0x59d0: 0x4061da20, 0x59d1: 0x4061dc20, 0x59d2: 0x4061de20, 0x59d3: 0x4061e020,
+-	0x59d4: 0x4061e220, 0x59d5: 0x4061e420, 0x59d6: 0x4061e620, 0x59d7: 0x4061e820,
+-	0x59d8: 0x4061ea20, 0x59d9: 0x4061ec20, 0x59da: 0x4061ee20, 0x59db: 0x4061f020,
+-	0x59dc: 0x4061f220, 0x59dd: 0x4061f420, 0x59de: 0x4061f620, 0x59df: 0x4061f820,
+-	0x59e0: 0x4061fa20, 0x59e1: 0x4061fc20, 0x59e2: 0x4061fe20, 0x59e3: 0x40620020,
+-	0x59e4: 0x40620220, 0x59e5: 0x40620420, 0x59e6: 0x40620620, 0x59e7: 0x40620820,
+-	0x59e8: 0x40620a20, 0x59e9: 0x40620c20, 0x59ea: 0x40620e20, 0x59eb: 0x40621020,
+-	0x59ec: 0x40621220, 0x59ed: 0x40621420, 0x59ee: 0x40621620, 0x59ef: 0x40621820,
+-	0x59f0: 0x40621a20, 0x59f1: 0x40621c20, 0x59f2: 0x40621e20, 0x59f3: 0x40622020,
+-	0x59f4: 0x40622220, 0x59f5: 0x40622420, 0x59f6: 0x40622620, 0x59f7: 0x40622820,
+-	0x59f8: 0x40622a20, 0x59f9: 0x40622c20, 0x59fa: 0x40622e20, 0x59fb: 0x40623020,
+-	0x59fc: 0x40623220, 0x59fd: 0x40623420, 0x59fe: 0x40623620, 0x59ff: 0x40623820,
+-	// Block 0x168, offset 0x5a00
+-	0x5a00: 0x40623a20, 0x5a01: 0x40623c20, 0x5a02: 0x40623e20, 0x5a03: 0x40624020,
+-	0x5a04: 0x40624220, 0x5a05: 0x40624420, 0x5a06: 0x40624620, 0x5a07: 0x40624820,
+-	0x5a08: 0x40624a20, 0x5a09: 0x40624c20, 0x5a0a: 0x40624e20, 0x5a0b: 0x40625020,
+-	0x5a0c: 0x40625220, 0x5a0d: 0x40625420, 0x5a0e: 0x40625620, 0x5a0f: 0x40625820,
+-	0x5a10: 0x40625a20, 0x5a11: 0x40625c20, 0x5a12: 0x40625e20, 0x5a13: 0x40626020,
+-	0x5a14: 0x40626220, 0x5a15: 0x40626420, 0x5a16: 0x40626620, 0x5a17: 0x40626820,
+-	0x5a18: 0x40626a20, 0x5a19: 0x40626c20, 0x5a1a: 0x40626e20, 0x5a1b: 0x40627020,
+-	0x5a1c: 0x40627220, 0x5a1d: 0x40627420, 0x5a1e: 0x40627620, 0x5a1f: 0x40627820,
+-	0x5a20: 0x40627a20, 0x5a21: 0x40627c20, 0x5a22: 0x40627e20, 0x5a23: 0x40628020,
+-	0x5a24: 0x40628220, 0x5a25: 0x40628420, 0x5a26: 0x40628620, 0x5a27: 0x40628820,
+-	0x5a28: 0x40628a20, 0x5a29: 0x40628c20, 0x5a2a: 0x40628e20, 0x5a2b: 0x40629020,
+-	0x5a2c: 0x40629220, 0x5a2d: 0x40629420, 0x5a2e: 0x40629620, 0x5a2f: 0x40629820,
+-	0x5a30: 0x40629a20, 0x5a31: 0x40629c20, 0x5a32: 0x40629e20, 0x5a33: 0x4062a020,
+-	0x5a34: 0x4062a220, 0x5a35: 0x4062a420, 0x5a36: 0x4062a620, 0x5a37: 0x4062a820,
+-	0x5a38: 0x4062aa20,
+-	// Block 0x169, offset 0x5a40
+-	0x5a40: 0x406fb620, 0x5a41: 0x406fb820, 0x5a42: 0x406fba20, 0x5a43: 0x406fbc20,
+-	0x5a44: 0x406fbe20, 0x5a45: 0x406fc020, 0x5a46: 0x006fbe84, 0x5a47: 0x406fc220,
+-	0x5a48: 0x406fc420, 0x5a49: 0x406fc620, 0x5a4a: 0x406fc820, 0x5a4b: 0x406fca20,
+-	0x5a4c: 0x406fcc20, 0x5a4d: 0x406fce20, 0x5a4e: 0x406fd020, 0x5a4f: 0x406fd220,
+-	0x5a50: 0x406fd420, 0x5a51: 0x406fd620, 0x5a52: 0x406fd820, 0x5a53: 0x006fd484,
+-	0x5a54: 0x406fda20, 0x5a55: 0x406fdc20, 0x5a56: 0x406fde20, 0x5a57: 0x406fe020,
+-	0x5a58: 0x406fe220, 0x5a59: 0x406fe420, 0x5a5a: 0x406fe620, 0x5a5b: 0x406fe820,
+-	0x5a5c: 0x406fea20, 0x5a5d: 0x406fec20, 0x5a5e: 0x406fee20, 0x5a5f: 0x406ff020,
+-	0x5a60: 0x406ff220, 0x5a61: 0x406ff420, 0x5a62: 0x406ff620, 0x5a63: 0x406ff820,
+-	0x5a64: 0x406ffa20, 0x5a65: 0x006ff884, 0x5a66: 0x406ffc20, 0x5a67: 0x406ffe20,
+-	0x5a68: 0x40700020, 0x5a69: 0x40700220, 0x5a6a: 0x40700420, 0x5a6b: 0x40700620,
+-	0x5a6c: 0x40700820, 0x5a6d: 0x40700a20, 0x5a6e: 0x40700c20, 0x5a6f: 0x40700e20,
+-	0x5a70: 0x40701020, 0x5a71: 0x40701220, 0x5a72: 0x40701420, 0x5a73: 0x40701620,
+-	0x5a74: 0x40701820, 0x5a75: 0x40701a20, 0x5a76: 0x40701c20, 0x5a77: 0x40701e20,
+-	0x5a78: 0x40702020, 0x5a79: 0x40702220, 0x5a7a: 0x40702420, 0x5a7b: 0x40702620,
+-	0x5a7c: 0x40702820, 0x5a7d: 0x40702a20, 0x5a7e: 0x40702c20, 0x5a7f: 0x00702a84,
+-	// Block 0x16a, offset 0x5a80
+-	0x5a80: 0x40702e20, 0x5a81: 0x40703020, 0x5a82: 0x40703220, 0x5a83: 0x40703420,
+-	0x5a84: 0x40703620,
+-	0x5a90: 0x40703820, 0x5a91: 0x40703a20, 0x5a92: 0x40703c20, 0x5a93: 0x40703e20,
+-	0x5a94: 0x40704020, 0x5a95: 0x40704220, 0x5a96: 0x40704420, 0x5a97: 0x40704620,
+-	0x5a98: 0x40704820, 0x5a99: 0x40704a20, 0x5a9a: 0x40704c20, 0x5a9b: 0x40704e20,
+-	0x5a9c: 0x40705020, 0x5a9d: 0x40705220, 0x5a9e: 0x40705420, 0x5a9f: 0x40705620,
+-	0x5aa0: 0x40705820, 0x5aa1: 0x40705a20, 0x5aa2: 0x40705c20, 0x5aa3: 0x40705e20,
+-	0x5aa4: 0x40706020, 0x5aa5: 0x40706220, 0x5aa6: 0x40706420, 0x5aa7: 0x40706620,
+-	0x5aa8: 0x40706820, 0x5aa9: 0x40706a20, 0x5aaa: 0x40706c20, 0x5aab: 0x40706e20,
+-	0x5aac: 0x40707020, 0x5aad: 0x40707220, 0x5aae: 0x40707420, 0x5aaf: 0x40707620,
+-	0x5ab0: 0x40707820, 0x5ab1: 0x40707a20, 0x5ab2: 0x40707c20, 0x5ab3: 0x40707e20,
+-	0x5ab4: 0x40708020, 0x5ab5: 0x40708220, 0x5ab6: 0x40708420, 0x5ab7: 0x40708620,
+-	0x5ab8: 0x40708820, 0x5ab9: 0x40708a20, 0x5aba: 0x40708c20, 0x5abb: 0x40708e20,
+-	0x5abc: 0x40709020, 0x5abd: 0x40709220, 0x5abe: 0x40709420,
+-	// Block 0x16b, offset 0x5ac0
+-	0x5acf: 0x40709620,
+-	0x5ad0: 0x40709820, 0x5ad1: 0x40709a20, 0x5ad2: 0x40709c20, 0x5ad3: 0x40709e20,
+-	0x5ad4: 0x4070a020, 0x5ad5: 0x4070a220, 0x5ad6: 0x4070a420, 0x5ad7: 0x4070a620,
+-	0x5ad8: 0x4070a820, 0x5ad9: 0x4070aa20, 0x5ada: 0x4070ac20, 0x5adb: 0x4070ae20,
+-	0x5adc: 0x4070b020, 0x5add: 0x4070b220, 0x5ade: 0x4070b420, 0x5adf: 0x4070b620,
+-	// Block 0x16c, offset 0x5b00
+-	0x5b00: 0x00657c91, 0x5b01: 0x0065c28e,
+-	// Block 0x16d, offset 0x5b40
+-	0x5b40: 0x401ba420, 0x5b41: 0x401ba620, 0x5b42: 0x401ba820, 0x5b43: 0x401baa20,
+-	0x5b44: 0x401bac20, 0x5b45: 0x401bae20, 0x5b46: 0x401bb020, 0x5b47: 0x401bb220,
+-	0x5b48: 0x401bb420, 0x5b49: 0x401bb620, 0x5b4a: 0x401bb820, 0x5b4b: 0x401bba20,
+-	0x5b4c: 0x401bbc20, 0x5b4d: 0x401bbe20, 0x5b4e: 0x401bc020, 0x5b4f: 0x401bc220,
+-	0x5b50: 0x401bc420, 0x5b51: 0x401bc620, 0x5b52: 0x401bc820, 0x5b53: 0x401bca20,
+-	0x5b54: 0x401bcc20, 0x5b55: 0x401bce20, 0x5b56: 0x401bd020, 0x5b57: 0x401bd220,
+-	0x5b58: 0x401bd420, 0x5b59: 0x401bd620, 0x5b5a: 0x401bd820, 0x5b5b: 0x401bda20,
+-	0x5b5c: 0x401bdc20, 0x5b5d: 0x401bde20, 0x5b5e: 0x401be020, 0x5b5f: 0x401be220,
+-	0x5b60: 0x401be420, 0x5b61: 0x401be620, 0x5b62: 0x401be820, 0x5b63: 0x401bea20,
+-	0x5b64: 0x401bec20, 0x5b65: 0x401bee20, 0x5b66: 0x401bf020, 0x5b67: 0x401bf220,
+-	0x5b68: 0x401bf420, 0x5b69: 0x401bf620, 0x5b6a: 0x401bf820, 0x5b6b: 0x401bfa20,
+-	0x5b6c: 0x401bfc20, 0x5b6d: 0x401bfe20, 0x5b6e: 0x401c0020, 0x5b6f: 0x401c0220,
+-	0x5b70: 0x401c0420, 0x5b71: 0x401c0620, 0x5b72: 0x401c0820, 0x5b73: 0x401c0a20,
+-	0x5b74: 0x401c0c20, 0x5b75: 0x401c0e20, 0x5b76: 0x401c1020, 0x5b77: 0x401c1220,
+-	0x5b78: 0x401c1420, 0x5b79: 0x401c1620, 0x5b7a: 0x401c1820, 0x5b7b: 0x401c1a20,
+-	0x5b7c: 0x401c1c20, 0x5b7d: 0x401c1e20, 0x5b7e: 0x401c2020, 0x5b7f: 0x401c2220,
+-	// Block 0x16e, offset 0x5b80
+-	0x5b80: 0x401c2420, 0x5b81: 0x401c2620, 0x5b82: 0x401c2820, 0x5b83: 0x401c2a20,
+-	0x5b84: 0x401c2c20, 0x5b85: 0x401c2e20, 0x5b86: 0x401c3020, 0x5b87: 0x401c3220,
+-	0x5b88: 0x401c3420, 0x5b89: 0x401c3620, 0x5b8a: 0x401c3820, 0x5b8b: 0x401c3a20,
+-	0x5b8c: 0x401c3c20, 0x5b8d: 0x401c3e20, 0x5b8e: 0x401c4020, 0x5b8f: 0x401c4220,
+-	0x5b90: 0x401c4420, 0x5b91: 0x401c4620, 0x5b92: 0x401c4820, 0x5b93: 0x401c4a20,
+-	0x5b94: 0x401c4c20, 0x5b95: 0x401c4e20, 0x5b96: 0x401c5020, 0x5b97: 0x401c5220,
+-	0x5b98: 0x401c5420, 0x5b99: 0x401c5620, 0x5b9a: 0x401c5820, 0x5b9b: 0x401c5a20,
+-	0x5b9c: 0x401c5c20, 0x5b9d: 0x401c5e20, 0x5b9e: 0x401c6020, 0x5b9f: 0x401c6220,
+-	0x5ba0: 0x401c6420, 0x5ba1: 0x401c6620, 0x5ba2: 0x401c6820, 0x5ba3: 0x401c6a20,
+-	0x5ba4: 0x401c6c20, 0x5ba5: 0x401c6e20, 0x5ba6: 0x401c7020, 0x5ba7: 0x401c7220,
+-	0x5ba8: 0x401c7420, 0x5ba9: 0x401c7620, 0x5baa: 0x401c7820, 0x5bab: 0x401c7a20,
+-	0x5bac: 0x401c7c20, 0x5bad: 0x401c7e20, 0x5bae: 0x401c8020, 0x5baf: 0x401c8220,
+-	0x5bb0: 0x401c8420, 0x5bb1: 0x401c8620, 0x5bb2: 0x401c8820, 0x5bb3: 0x401c8a20,
+-	0x5bb4: 0x401c8c20, 0x5bb5: 0x401c8e20, 0x5bb6: 0x401c9020, 0x5bb7: 0x401c9220,
+-	0x5bb8: 0x401c9420, 0x5bb9: 0x401c9620, 0x5bba: 0x401c9820, 0x5bbb: 0x401c9a20,
+-	0x5bbc: 0x401c9c20, 0x5bbd: 0x401c9e20, 0x5bbe: 0x401ca020, 0x5bbf: 0x401ca220,
+-	// Block 0x16f, offset 0x5bc0
+-	0x5bc0: 0x401ca420, 0x5bc1: 0x401ca620, 0x5bc2: 0x401ca820, 0x5bc3: 0x401caa20,
+-	0x5bc4: 0x401cac20, 0x5bc5: 0x401cae20, 0x5bc6: 0x401cb020, 0x5bc7: 0x401cb220,
+-	0x5bc8: 0x401cb420, 0x5bc9: 0x401cb620, 0x5bca: 0x401cb820, 0x5bcb: 0x401cba20,
+-	0x5bcc: 0x401cbc20, 0x5bcd: 0x401cbe20, 0x5bce: 0x401cc020, 0x5bcf: 0x401cc220,
+-	0x5bd0: 0x401cc420, 0x5bd1: 0x401cc620, 0x5bd2: 0x401cc820, 0x5bd3: 0x401cca20,
+-	0x5bd4: 0x401ccc20, 0x5bd5: 0x401cce20, 0x5bd6: 0x401cd020, 0x5bd7: 0x401cd220,
+-	0x5bd8: 0x401cd420, 0x5bd9: 0x401cd620, 0x5bda: 0x401cd820, 0x5bdb: 0x401cda20,
+-	0x5bdc: 0x401cdc20, 0x5bdd: 0x401cde20, 0x5bde: 0x401ce020, 0x5bdf: 0x401ce220,
+-	0x5be0: 0x401ce420, 0x5be1: 0x401ce620, 0x5be2: 0x401ce820, 0x5be3: 0x401cea20,
+-	0x5be4: 0x401cec20, 0x5be5: 0x401cee20, 0x5be6: 0x401cf020, 0x5be7: 0x401cf220,
+-	0x5be8: 0x401cf420, 0x5be9: 0x401cf620, 0x5bea: 0x401cf820, 0x5beb: 0x401cfa20,
+-	0x5bec: 0x401cfc20, 0x5bed: 0x401cfe20, 0x5bee: 0x401d0020, 0x5bef: 0x401d0220,
+-	0x5bf0: 0x401d0420, 0x5bf1: 0x401d0620, 0x5bf2: 0x401d0820, 0x5bf3: 0x401d0a20,
+-	0x5bf4: 0x401d0c20, 0x5bf5: 0x401d0e20, 0x5bf6: 0x401d1020, 0x5bf7: 0x401d1220,
+-	0x5bf8: 0x401d1420, 0x5bf9: 0x401d1620, 0x5bfa: 0x401d1820, 0x5bfb: 0x401d1a20,
+-	0x5bfc: 0x401d1c20, 0x5bfd: 0x401d1e20, 0x5bfe: 0x401d2020, 0x5bff: 0x401d2220,
+-	// Block 0x170, offset 0x5c00
+-	0x5c00: 0x401d2420, 0x5c01: 0x401d2620, 0x5c02: 0x401d2820, 0x5c03: 0x401d2a20,
+-	0x5c04: 0x401d2c20, 0x5c05: 0x401d2e20, 0x5c06: 0x401d3020, 0x5c07: 0x401d3220,
+-	0x5c08: 0x401d3420, 0x5c09: 0x401d3620, 0x5c0a: 0x401d3820, 0x5c0b: 0x401d3a20,
+-	0x5c0c: 0x401d3c20, 0x5c0d: 0x401d3e20, 0x5c0e: 0x401d4020, 0x5c0f: 0x401d4220,
+-	0x5c10: 0x401d4420, 0x5c11: 0x401d4620, 0x5c12: 0x401d4820, 0x5c13: 0x401d4a20,
+-	0x5c14: 0x401d4c20, 0x5c15: 0x401d4e20, 0x5c16: 0x401d5020, 0x5c17: 0x401d5220,
+-	0x5c18: 0x401d5420, 0x5c19: 0x401d5620, 0x5c1a: 0x401d5820, 0x5c1b: 0x401d5a20,
+-	0x5c1c: 0x401d5c20, 0x5c1d: 0x401d5e20, 0x5c1e: 0x401d6020, 0x5c1f: 0x401d6220,
+-	0x5c20: 0x401d6420, 0x5c21: 0x401d6620, 0x5c22: 0x401d6820, 0x5c23: 0x401d6a20,
+-	0x5c24: 0x401d6c20, 0x5c25: 0x401d6e20, 0x5c26: 0x401d7020, 0x5c27: 0x401d7220,
+-	0x5c28: 0x401d7420, 0x5c29: 0x401d7620, 0x5c2a: 0x401d7820, 0x5c2b: 0x401d7a20,
+-	0x5c2c: 0x401d7c20, 0x5c2d: 0x401d7e20, 0x5c2e: 0x401d8020, 0x5c2f: 0x401d8220,
+-	0x5c30: 0x401d8420, 0x5c31: 0x401d8620, 0x5c32: 0x401d8820, 0x5c33: 0x401d8a20,
+-	0x5c34: 0x401d8c20, 0x5c35: 0x401d8e20,
+-	// Block 0x171, offset 0x5c40
+-	0x5c40: 0x401d9020, 0x5c41: 0x401d9220, 0x5c42: 0x401d9420, 0x5c43: 0x401d9620,
+-	0x5c44: 0x401d9820, 0x5c45: 0x401d9a20, 0x5c46: 0x401d9c20, 0x5c47: 0x401d9e20,
+-	0x5c48: 0x401da020, 0x5c49: 0x401da220, 0x5c4a: 0x401da420, 0x5c4b: 0x401da620,
+-	0x5c4c: 0x401da820, 0x5c4d: 0x401daa20, 0x5c4e: 0x401dac20, 0x5c4f: 0x401dae20,
+-	0x5c50: 0x401db020, 0x5c51: 0x401db220, 0x5c52: 0x401db420, 0x5c53: 0x401db620,
+-	0x5c54: 0x401db820, 0x5c55: 0x401dba20, 0x5c56: 0x401dbc20, 0x5c57: 0x401dbe20,
+-	0x5c58: 0x401dc020, 0x5c59: 0x401dc220, 0x5c5a: 0x401dc420, 0x5c5b: 0x401dc620,
+-	0x5c5c: 0x401dc820, 0x5c5d: 0x401dca20, 0x5c5e: 0x401dcc20, 0x5c5f: 0x401dce20,
+-	0x5c60: 0x401dd020, 0x5c61: 0x401dd220, 0x5c62: 0x401dd420, 0x5c63: 0x401dd620,
+-	0x5c64: 0x401dd820, 0x5c65: 0x401dda20, 0x5c66: 0x401ddc20,
+-	0x5c69: 0x401e0420, 0x5c6a: 0x401de420, 0x5c6b: 0x401de620,
+-	0x5c6c: 0x401de820, 0x5c6d: 0x401dea20, 0x5c6e: 0x401dec20, 0x5c6f: 0x401dee20,
+-	0x5c70: 0x401df020, 0x5c71: 0x401df220, 0x5c72: 0x401df420, 0x5c73: 0x401df620,
+-	0x5c74: 0x401df820, 0x5c75: 0x401dfa20, 0x5c76: 0x401dfc20, 0x5c77: 0x401dfe20,
+-	0x5c78: 0x401e0020, 0x5c79: 0x401e0220, 0x5c7a: 0x401e0620, 0x5c7b: 0x401e0820,
+-	0x5c7c: 0x401e0a20, 0x5c7d: 0x401e0c20, 0x5c7e: 0x401e0e20, 0x5c7f: 0x401e1020,
+-	// Block 0x172, offset 0x5c80
+-	0x5c80: 0x401e1220, 0x5c81: 0x401e1420, 0x5c82: 0x401e1620, 0x5c83: 0x401e1820,
+-	0x5c84: 0x401e1a20, 0x5c85: 0x401e1c20, 0x5c86: 0x401e1e20, 0x5c87: 0x401e2020,
+-	0x5c88: 0x401e2220, 0x5c89: 0x401e2420, 0x5c8a: 0x401e2620, 0x5c8b: 0x401e2820,
+-	0x5c8c: 0x401e2a20, 0x5c8d: 0x401e2c20, 0x5c8e: 0x401e2e20, 0x5c8f: 0x401e3020,
+-	0x5c90: 0x401e3220, 0x5c91: 0x401e3420, 0x5c92: 0x401e3620, 0x5c93: 0x401e3820,
+-	0x5c94: 0x401e3a20, 0x5c95: 0x401e3c20, 0x5c96: 0x401e3e20, 0x5c97: 0x401e4020,
+-	0x5c98: 0x401e4220, 0x5c99: 0x401e4420, 0x5c9a: 0x401e4620, 0x5c9b: 0x401e4820,
+-	0x5c9c: 0x401e4a20, 0x5c9d: 0x401e4c20, 0x5c9e: 0x401e4020, 0x5c9f: 0x401e4220,
+-	0x5ca0: 0x401e4220, 0x5ca1: 0x401e4220, 0x5ca2: 0x401e4220, 0x5ca3: 0x401e4220,
+-	0x5ca4: 0x401e4220, 0x5ca5: 0xad800000, 0x5ca6: 0xad800000, 0x5ca7: 0xa0100000,
+-	0x5ca8: 0xa0100000, 0x5ca9: 0xa0100000, 0x5caa: 0x401e4e20, 0x5cab: 0x401e5020,
+-	0x5cac: 0x401e5220, 0x5cad: 0xae200000, 0x5cae: 0xad800000, 0x5caf: 0xad800000,
+-	0x5cb0: 0xad800000, 0x5cb1: 0xad800000, 0x5cb2: 0xad800000, 0x5cb3: 0xa0000000,
+-	0x5cb4: 0xa0000000, 0x5cb5: 0xa0000000, 0x5cb6: 0xa0000000, 0x5cb7: 0xa0000000,
+-	0x5cb8: 0xa0000000, 0x5cb9: 0xa0000000, 0x5cba: 0xa0000000, 0x5cbb: 0xadc00000,
+-	0x5cbc: 0xadc00000, 0x5cbd: 0xadc00000, 0x5cbe: 0xadc00000, 0x5cbf: 0xadc00000,
+-	// Block 0x173, offset 0x5cc0
+-	0x5cc0: 0xadc00000, 0x5cc1: 0xadc00000, 0x5cc2: 0xadc00000, 0x5cc3: 0x401e5420,
+-	0x5cc4: 0x401e5620, 0x5cc5: 0xae600000, 0x5cc6: 0xae600000, 0x5cc7: 0xae600000,
+-	0x5cc8: 0xae600000, 0x5cc9: 0xae600000, 0x5cca: 0xadc00000, 0x5ccb: 0xadc00000,
+-	0x5ccc: 0x401e5820, 0x5ccd: 0x401e5a20, 0x5cce: 0x401e5c20, 0x5ccf: 0x401e5e20,
+-	0x5cd0: 0x401e6020, 0x5cd1: 0x401e6220, 0x5cd2: 0x401e6420, 0x5cd3: 0x401e6620,
+-	0x5cd4: 0x401e6820, 0x5cd5: 0x401e6a20, 0x5cd6: 0x401e6c20, 0x5cd7: 0x401e6e20,
+-	0x5cd8: 0x401e7020, 0x5cd9: 0x401e7220, 0x5cda: 0x401e7420, 0x5cdb: 0x401e7620,
+-	0x5cdc: 0x401e7820, 0x5cdd: 0x401e7a20, 0x5cde: 0x401e7c20, 0x5cdf: 0x401e7e20,
+-	0x5ce0: 0x401e8020, 0x5ce1: 0x401e8220, 0x5ce2: 0x401e8420, 0x5ce3: 0x401e8620,
+-	0x5ce4: 0x401e8820, 0x5ce5: 0x401e8a20, 0x5ce6: 0x401e8c20, 0x5ce7: 0x401e8e20,
+-	0x5ce8: 0x401e9020, 0x5ce9: 0x401e9220, 0x5cea: 0xae600000, 0x5ceb: 0xae600000,
+-	0x5cec: 0xae600000, 0x5ced: 0xae600000, 0x5cee: 0x401e9420, 0x5cef: 0x401e9620,
+-	0x5cf0: 0x401e9820, 0x5cf1: 0x401e9a20, 0x5cf2: 0x401e9c20, 0x5cf3: 0x401e9e20,
+-	0x5cf4: 0x401ea020, 0x5cf5: 0x401ea220, 0x5cf6: 0x401ea420, 0x5cf7: 0x401ea620,
+-	0x5cf8: 0x401ea820, 0x5cf9: 0x401eaa20, 0x5cfa: 0x401eac20, 0x5cfb: 0x401eaa20,
+-	0x5cfc: 0x401eac20, 0x5cfd: 0x401eaa20, 0x5cfe: 0x401eac20, 0x5cff: 0x401eaa20,
+-	// Block 0x174, offset 0x5d00
+-	0x5d00: 0x401eac20, 0x5d01: 0x401eae20, 0x5d02: 0x401eb020, 0x5d03: 0x401eb220,
+-	0x5d04: 0x401eb420, 0x5d05: 0x401eb620, 0x5d06: 0x401eb820, 0x5d07: 0x401eba20,
+-	0x5d08: 0x401ebc20, 0x5d09: 0x401ebe20, 0x5d0a: 0x401ec020, 0x5d0b: 0x401ec220,
+-	0x5d0c: 0x401ec420, 0x5d0d: 0x401ec620, 0x5d0e: 0x401ec820, 0x5d0f: 0x401eca20,
+-	0x5d10: 0x401ecc20, 0x5d11: 0x401ece20, 0x5d12: 0x401ed020, 0x5d13: 0x401ed220,
+-	0x5d14: 0x401ed420, 0x5d15: 0x401ed620, 0x5d16: 0x401ed820, 0x5d17: 0x401eda20,
+-	0x5d18: 0x401edc20, 0x5d19: 0x401ede20, 0x5d1a: 0x401ee020, 0x5d1b: 0x401ee220,
+-	0x5d1c: 0x401ee420, 0x5d1d: 0x401ee620,
+-	// Block 0x175, offset 0x5d40
+-	0x5d40: 0x401ee820, 0x5d41: 0x401eea20, 0x5d42: 0x401eec20, 0x5d43: 0x401eee20,
+-	0x5d44: 0x401ef020, 0x5d45: 0x401ef220, 0x5d46: 0x401ef420, 0x5d47: 0x401ef620,
+-	0x5d48: 0x401ef820, 0x5d49: 0x401efa20, 0x5d4a: 0x401efc20, 0x5d4b: 0x401efe20,
+-	0x5d4c: 0x401f0020, 0x5d4d: 0x401f0220, 0x5d4e: 0x401f0420, 0x5d4f: 0x401f0620,
+-	0x5d50: 0x401f0820, 0x5d51: 0x401f0a20, 0x5d52: 0x401f0c20, 0x5d53: 0x401f0e20,
+-	0x5d54: 0x401f1020, 0x5d55: 0x401f1220, 0x5d56: 0x401f1420, 0x5d57: 0x401f1620,
+-	0x5d58: 0x401f1820, 0x5d59: 0x401f1a20, 0x5d5a: 0x401f1c20, 0x5d5b: 0x401f1e20,
+-	0x5d5c: 0x401f2020, 0x5d5d: 0x401f2220, 0x5d5e: 0x401f2420, 0x5d5f: 0x401f2620,
+-	0x5d60: 0x401f2820, 0x5d61: 0x401f2a20, 0x5d62: 0x401f2c20, 0x5d63: 0x401f2e20,
+-	0x5d64: 0x401f3020, 0x5d65: 0x401f3220, 0x5d66: 0x401f3420, 0x5d67: 0x401f3620,
+-	0x5d68: 0x401f3820, 0x5d69: 0x401f3a20, 0x5d6a: 0x401f3c20, 0x5d6b: 0x401f3e20,
+-	0x5d6c: 0x401f4020, 0x5d6d: 0x401f4220, 0x5d6e: 0x401f4420, 0x5d6f: 0x401f4620,
+-	0x5d70: 0x401f4820, 0x5d71: 0x401f4a20, 0x5d72: 0x401f4c20, 0x5d73: 0x401f4e20,
+-	0x5d74: 0x401f5020, 0x5d75: 0x401f5220, 0x5d76: 0x401f5420, 0x5d77: 0x401f5620,
+-	0x5d78: 0x401f5820, 0x5d79: 0x401f5a20, 0x5d7a: 0x401f5c20, 0x5d7b: 0x401f5e20,
+-	0x5d7c: 0x401f6020, 0x5d7d: 0x401f6220, 0x5d7e: 0x401f6420, 0x5d7f: 0x401f6620,
+-	// Block 0x176, offset 0x5d80
+-	0x5d80: 0x401f6820, 0x5d81: 0x401f6a20, 0x5d82: 0xae600000, 0x5d83: 0xae600000,
+-	0x5d84: 0xae600000, 0x5d85: 0x401f6c20,
+-	// Block 0x177, offset 0x5dc0
+-	0x5dc0: 0x4019e220, 0x5dc1: 0x4019e420, 0x5dc2: 0x4019e620, 0x5dc3: 0x4019e820,
+-	0x5dc4: 0x4019ea20, 0x5dc5: 0x4019ec20, 0x5dc6: 0x4019ee20, 0x5dc7: 0x4019f020,
+-	0x5dc8: 0x4019f220, 0x5dc9: 0x4019f420, 0x5dca: 0x4019f620, 0x5dcb: 0x4019f820,
+-	0x5dcc: 0x4019fa20, 0x5dcd: 0x4019fc20, 0x5dce: 0x4019fe20, 0x5dcf: 0x401a0020,
+-	0x5dd0: 0x401a0220, 0x5dd1: 0x401a0420, 0x5dd2: 0x401a0620, 0x5dd3: 0x401a0820,
+-	0x5dd4: 0x401a0a20, 0x5dd5: 0x401a0c20, 0x5dd6: 0x401a0e20, 0x5dd7: 0x401a1020,
+-	0x5dd8: 0x401a1220, 0x5dd9: 0x401a1420, 0x5dda: 0x401a1620, 0x5ddb: 0x401a1820,
+-	0x5ddc: 0x401a1a20, 0x5ddd: 0x401a1c20, 0x5dde: 0x401a1e20, 0x5ddf: 0x401a2020,
+-	0x5de0: 0x401a2220, 0x5de1: 0x401a2420, 0x5de2: 0x401a2620, 0x5de3: 0x401a2820,
+-	0x5de4: 0x401a2a20, 0x5de5: 0x401a2c20, 0x5de6: 0x401a2e20, 0x5de7: 0x401a3020,
+-	0x5de8: 0x401a3220, 0x5de9: 0x401a3420, 0x5dea: 0x401a3620, 0x5deb: 0x401a3820,
+-	0x5dec: 0x401a3a20, 0x5ded: 0x401a3c20, 0x5dee: 0x401a3e20, 0x5def: 0x401a4020,
+-	0x5df0: 0x401a4220, 0x5df1: 0x401a4420, 0x5df2: 0x401a4620, 0x5df3: 0x401a4820,
+-	0x5df4: 0x401a4a20, 0x5df5: 0x401a4c20, 0x5df6: 0x401a4e20, 0x5df7: 0x401a5020,
+-	0x5df8: 0x401a5220, 0x5df9: 0x401a5420, 0x5dfa: 0x401a5620, 0x5dfb: 0x401a5820,
+-	0x5dfc: 0x401a5a20, 0x5dfd: 0x401a5c20, 0x5dfe: 0x401a5e20, 0x5dff: 0x401a6020,
+-	// Block 0x178, offset 0x5e00
+-	0x5e00: 0x401a6220, 0x5e01: 0x401a6420, 0x5e02: 0x401a6620, 0x5e03: 0x401a6820,
+-	0x5e04: 0x401a6a20, 0x5e05: 0x401a6c20, 0x5e06: 0x401a6e20, 0x5e07: 0x401a7020,
+-	0x5e08: 0x401a7220, 0x5e09: 0x401a7420, 0x5e0a: 0x401a7620, 0x5e0b: 0x401a7820,
+-	0x5e0c: 0x401a7a20, 0x5e0d: 0x401a7c20, 0x5e0e: 0x401a7e20, 0x5e0f: 0x401a8020,
+-	0x5e10: 0x401a8220, 0x5e11: 0x401a8420, 0x5e12: 0x401a8620, 0x5e13: 0x401a8820,
+-	0x5e14: 0x401a8a20, 0x5e15: 0x401a8c20, 0x5e16: 0x401a8e20,
+-	0x5e20: 0xe00002af, 0x5e21: 0xe00003ca, 0x5e22: 0xe00004a4, 0x5e23: 0xe0000576,
+-	0x5e24: 0xe000063d, 0x5e25: 0xe00006ed, 0x5e26: 0xe0000795, 0x5e27: 0xe000083e,
+-	0x5e28: 0xe00008e9, 0x5e29: 0x4029ba20, 0x5e2a: 0x4029bc20, 0x5e2b: 0x4029be20,
+-	0x5e2c: 0x4029c020, 0x5e2d: 0x4029c220, 0x5e2e: 0x4029c420, 0x5e2f: 0x4029c620,
+-	0x5e30: 0x4029c820, 0x5e31: 0x4029ca20,
+-	// Block 0x179, offset 0x5e40
+-	0x5e40: 0x002bde8b, 0x5e41: 0x002c0a8b, 0x5e42: 0x002c3a8b, 0x5e43: 0x002c628b,
+-	0x5e44: 0x002c988b, 0x5e45: 0x002d088b, 0x5e46: 0x002d228b, 0x5e47: 0x002d688b,
+-	0x5e48: 0x002d9a8b, 0x5e49: 0x002dcc8b, 0x5e4a: 0x002dfe8b, 0x5e4b: 0x002e228b,
+-	0x5e4c: 0x002e828b, 0x5e4d: 0x002e9e8b, 0x5e4e: 0x002ee28b, 0x5e4f: 0x002f2c8b,
+-	0x5e50: 0x002f568b, 0x5e51: 0x002f7a8b, 0x5e52: 0x002fe68b, 0x5e53: 0x00302c8b,
+-	0x5e54: 0x00306c8b, 0x5e55: 0x0030be8b, 0x5e56: 0x0030e28b, 0x5e57: 0x0030f68b,
+-	0x5e58: 0x0031008b, 0x5e59: 0x00312a8b, 0x5e5a: 0x002bde85, 0x5e5b: 0x002c0a85,
+-	0x5e5c: 0x002c3a85, 0x5e5d: 0x002c6285, 0x5e5e: 0x002c9885, 0x5e5f: 0x002d0885,
+-	0x5e60: 0x002d2285, 0x5e61: 0x002d6885, 0x5e62: 0x002d9a85, 0x5e63: 0x002dcc85,
+-	0x5e64: 0x002dfe85, 0x5e65: 0x002e2285, 0x5e66: 0x002e8285, 0x5e67: 0x002e9e85,
+-	0x5e68: 0x002ee285, 0x5e69: 0x002f2c85, 0x5e6a: 0x002f5685, 0x5e6b: 0x002f7a85,
+-	0x5e6c: 0x002fe685, 0x5e6d: 0x00302c85, 0x5e6e: 0x00306c85, 0x5e6f: 0x0030be85,
+-	0x5e70: 0x0030e285, 0x5e71: 0x0030f685, 0x5e72: 0x00310085, 0x5e73: 0x00312a85,
+-	0x5e74: 0x002bde8b, 0x5e75: 0x002c0a8b, 0x5e76: 0x002c3a8b, 0x5e77: 0x002c628b,
+-	0x5e78: 0x002c988b, 0x5e79: 0x002d088b, 0x5e7a: 0x002d228b, 0x5e7b: 0x002d688b,
+-	0x5e7c: 0x002d9a8b, 0x5e7d: 0x002dcc8b, 0x5e7e: 0x002dfe8b, 0x5e7f: 0x002e228b,
+-	// Block 0x17a, offset 0x5e80
+-	0x5e80: 0x002e828b, 0x5e81: 0x002e9e8b, 0x5e82: 0x002ee28b, 0x5e83: 0x002f2c8b,
+-	0x5e84: 0x002f568b, 0x5e85: 0x002f7a8b, 0x5e86: 0x002fe68b, 0x5e87: 0x00302c8b,
+-	0x5e88: 0x00306c8b, 0x5e89: 0x0030be8b, 0x5e8a: 0x0030e28b, 0x5e8b: 0x0030f68b,
+-	0x5e8c: 0x0031008b, 0x5e8d: 0x00312a8b, 0x5e8e: 0x002bde85, 0x5e8f: 0x002c0a85,
+-	0x5e90: 0x002c3a85, 0x5e91: 0x002c6285, 0x5e92: 0x002c9885, 0x5e93: 0x002d0885,
+-	0x5e94: 0x002d2285, 0x5e96: 0x002d9a85, 0x5e97: 0x002dcc85,
+-	0x5e98: 0x002dfe85, 0x5e99: 0x002e2285, 0x5e9a: 0x002e8285, 0x5e9b: 0x002e9e85,
+-	0x5e9c: 0x002ee285, 0x5e9d: 0x002f2c85, 0x5e9e: 0x002f5685, 0x5e9f: 0x002f7a85,
+-	0x5ea0: 0x002fe685, 0x5ea1: 0x00302c85, 0x5ea2: 0x00306c85, 0x5ea3: 0x0030be85,
+-	0x5ea4: 0x0030e285, 0x5ea5: 0x0030f685, 0x5ea6: 0x00310085, 0x5ea7: 0x00312a85,
+-	0x5ea8: 0x002bde8b, 0x5ea9: 0x002c0a8b, 0x5eaa: 0x002c3a8b, 0x5eab: 0x002c628b,
+-	0x5eac: 0x002c988b, 0x5ead: 0x002d088b, 0x5eae: 0x002d228b, 0x5eaf: 0x002d688b,
+-	0x5eb0: 0x002d9a8b, 0x5eb1: 0x002dcc8b, 0x5eb2: 0x002dfe8b, 0x5eb3: 0x002e228b,
+-	0x5eb4: 0x002e828b, 0x5eb5: 0x002e9e8b, 0x5eb6: 0x002ee28b, 0x5eb7: 0x002f2c8b,
+-	0x5eb8: 0x002f568b, 0x5eb9: 0x002f7a8b, 0x5eba: 0x002fe68b, 0x5ebb: 0x00302c8b,
+-	0x5ebc: 0x00306c8b, 0x5ebd: 0x0030be8b, 0x5ebe: 0x0030e28b, 0x5ebf: 0x0030f68b,
+-	// Block 0x17b, offset 0x5ec0
+-	0x5ec0: 0x0031008b, 0x5ec1: 0x00312a8b, 0x5ec2: 0x002bde85, 0x5ec3: 0x002c0a85,
+-	0x5ec4: 0x002c3a85, 0x5ec5: 0x002c6285, 0x5ec6: 0x002c9885, 0x5ec7: 0x002d0885,
+-	0x5ec8: 0x002d2285, 0x5ec9: 0x002d6885, 0x5eca: 0x002d9a85, 0x5ecb: 0x002dcc85,
+-	0x5ecc: 0x002dfe85, 0x5ecd: 0x002e2285, 0x5ece: 0x002e8285, 0x5ecf: 0x002e9e85,
+-	0x5ed0: 0x002ee285, 0x5ed1: 0x002f2c85, 0x5ed2: 0x002f5685, 0x5ed3: 0x002f7a85,
+-	0x5ed4: 0x002fe685, 0x5ed5: 0x00302c85, 0x5ed6: 0x00306c85, 0x5ed7: 0x0030be85,
+-	0x5ed8: 0x0030e285, 0x5ed9: 0x0030f685, 0x5eda: 0x00310085, 0x5edb: 0x00312a85,
+-	0x5edc: 0x002bde8b, 0x5ede: 0x002c3a8b, 0x5edf: 0x002c628b,
+-	0x5ee2: 0x002d228b,
+-	0x5ee5: 0x002dcc8b, 0x5ee6: 0x002dfe8b,
+-	0x5ee9: 0x002e9e8b, 0x5eea: 0x002ee28b, 0x5eeb: 0x002f2c8b,
+-	0x5eec: 0x002f568b, 0x5eee: 0x002fe68b, 0x5eef: 0x00302c8b,
+-	0x5ef0: 0x00306c8b, 0x5ef1: 0x0030be8b, 0x5ef2: 0x0030e28b, 0x5ef3: 0x0030f68b,
+-	0x5ef4: 0x0031008b, 0x5ef5: 0x00312a8b, 0x5ef6: 0x002bde85, 0x5ef7: 0x002c0a85,
+-	0x5ef8: 0x002c3a85, 0x5ef9: 0x002c6285, 0x5efb: 0x002d0885,
+-	0x5efd: 0x002d6885, 0x5efe: 0x002d9a85, 0x5eff: 0x002dcc85,
+-	// Block 0x17c, offset 0x5f00
+-	0x5f00: 0x002dfe85, 0x5f01: 0x002e2285, 0x5f02: 0x002e8285, 0x5f03: 0x002e9e85,
+-	0x5f05: 0x002f2c85, 0x5f06: 0x002f5685, 0x5f07: 0x002f7a85,
+-	0x5f08: 0x002fe685, 0x5f09: 0x00302c85, 0x5f0a: 0x00306c85, 0x5f0b: 0x0030be85,
+-	0x5f0c: 0x0030e285, 0x5f0d: 0x0030f685, 0x5f0e: 0x00310085, 0x5f0f: 0x00312a85,
+-	0x5f10: 0x002bde8b, 0x5f11: 0x002c0a8b, 0x5f12: 0x002c3a8b, 0x5f13: 0x002c628b,
+-	0x5f14: 0x002c988b, 0x5f15: 0x002d088b, 0x5f16: 0x002d228b, 0x5f17: 0x002d688b,
+-	0x5f18: 0x002d9a8b, 0x5f19: 0x002dcc8b, 0x5f1a: 0x002dfe8b, 0x5f1b: 0x002e228b,
+-	0x5f1c: 0x002e828b, 0x5f1d: 0x002e9e8b, 0x5f1e: 0x002ee28b, 0x5f1f: 0x002f2c8b,
+-	0x5f20: 0x002f568b, 0x5f21: 0x002f7a8b, 0x5f22: 0x002fe68b, 0x5f23: 0x00302c8b,
+-	0x5f24: 0x00306c8b, 0x5f25: 0x0030be8b, 0x5f26: 0x0030e28b, 0x5f27: 0x0030f68b,
+-	0x5f28: 0x0031008b, 0x5f29: 0x00312a8b, 0x5f2a: 0x002bde85, 0x5f2b: 0x002c0a85,
+-	0x5f2c: 0x002c3a85, 0x5f2d: 0x002c6285, 0x5f2e: 0x002c9885, 0x5f2f: 0x002d0885,
+-	0x5f30: 0x002d2285, 0x5f31: 0x002d6885, 0x5f32: 0x002d9a85, 0x5f33: 0x002dcc85,
+-	0x5f34: 0x002dfe85, 0x5f35: 0x002e2285, 0x5f36: 0x002e8285, 0x5f37: 0x002e9e85,
+-	0x5f38: 0x002ee285, 0x5f39: 0x002f2c85, 0x5f3a: 0x002f5685, 0x5f3b: 0x002f7a85,
+-	0x5f3c: 0x002fe685, 0x5f3d: 0x00302c85, 0x5f3e: 0x00306c85, 0x5f3f: 0x0030be85,
+-	// Block 0x17d, offset 0x5f40
+-	0x5f40: 0x0030e285, 0x5f41: 0x0030f685, 0x5f42: 0x00310085, 0x5f43: 0x00312a85,
+-	0x5f44: 0x002bde8b, 0x5f45: 0x002c0a8b, 0x5f47: 0x002c628b,
+-	0x5f48: 0x002c988b, 0x5f49: 0x002d088b, 0x5f4a: 0x002d228b,
+-	0x5f4d: 0x002dcc8b, 0x5f4e: 0x002dfe8b, 0x5f4f: 0x002e228b,
+-	0x5f50: 0x002e828b, 0x5f51: 0x002e9e8b, 0x5f52: 0x002ee28b, 0x5f53: 0x002f2c8b,
+-	0x5f54: 0x002f568b, 0x5f56: 0x002fe68b, 0x5f57: 0x00302c8b,
+-	0x5f58: 0x00306c8b, 0x5f59: 0x0030be8b, 0x5f5a: 0x0030e28b, 0x5f5b: 0x0030f68b,
+-	0x5f5c: 0x0031008b, 0x5f5e: 0x002bde85, 0x5f5f: 0x002c0a85,
+-	0x5f60: 0x002c3a85, 0x5f61: 0x002c6285, 0x5f62: 0x002c9885, 0x5f63: 0x002d0885,
+-	0x5f64: 0x002d2285, 0x5f65: 0x002d6885, 0x5f66: 0x002d9a85, 0x5f67: 0x002dcc85,
+-	0x5f68: 0x002dfe85, 0x5f69: 0x002e2285, 0x5f6a: 0x002e8285, 0x5f6b: 0x002e9e85,
+-	0x5f6c: 0x002ee285, 0x5f6d: 0x002f2c85, 0x5f6e: 0x002f5685, 0x5f6f: 0x002f7a85,
+-	0x5f70: 0x002fe685, 0x5f71: 0x00302c85, 0x5f72: 0x00306c85, 0x5f73: 0x0030be85,
+-	0x5f74: 0x0030e285, 0x5f75: 0x0030f685, 0x5f76: 0x00310085, 0x5f77: 0x00312a85,
+-	0x5f78: 0x002bde8b, 0x5f79: 0x002c0a8b, 0x5f7b: 0x002c628b,
+-	0x5f7c: 0x002c988b, 0x5f7d: 0x002d088b, 0x5f7e: 0x002d228b,
+-	// Block 0x17e, offset 0x5f80
+-	0x5f80: 0x002d9a8b, 0x5f81: 0x002dcc8b, 0x5f82: 0x002dfe8b, 0x5f83: 0x002e228b,
+-	0x5f84: 0x002e828b, 0x5f86: 0x002ee28b,
+-	0x5f8a: 0x002fe68b, 0x5f8b: 0x00302c8b,
+-	0x5f8c: 0x00306c8b, 0x5f8d: 0x0030be8b, 0x5f8e: 0x0030e28b, 0x5f8f: 0x0030f68b,
+-	0x5f90: 0x0031008b, 0x5f92: 0x002bde85, 0x5f93: 0x002c0a85,
+-	0x5f94: 0x002c3a85, 0x5f95: 0x002c6285, 0x5f96: 0x002c9885, 0x5f97: 0x002d0885,
+-	0x5f98: 0x002d2285, 0x5f99: 0x002d6885, 0x5f9a: 0x002d9a85, 0x5f9b: 0x002dcc85,
+-	0x5f9c: 0x002dfe85, 0x5f9d: 0x002e2285, 0x5f9e: 0x002e8285, 0x5f9f: 0x002e9e85,
+-	0x5fa0: 0x002ee285, 0x5fa1: 0x002f2c85, 0x5fa2: 0x002f5685, 0x5fa3: 0x002f7a85,
+-	0x5fa4: 0x002fe685, 0x5fa5: 0x00302c85, 0x5fa6: 0x00306c85, 0x5fa7: 0x0030be85,
+-	0x5fa8: 0x0030e285, 0x5fa9: 0x0030f685, 0x5faa: 0x00310085, 0x5fab: 0x00312a85,
+-	0x5fac: 0x002bde8b, 0x5fad: 0x002c0a8b, 0x5fae: 0x002c3a8b, 0x5faf: 0x002c628b,
+-	0x5fb0: 0x002c988b, 0x5fb1: 0x002d088b, 0x5fb2: 0x002d228b, 0x5fb3: 0x002d688b,
+-	0x5fb4: 0x002d9a8b, 0x5fb5: 0x002dcc8b, 0x5fb6: 0x002dfe8b, 0x5fb7: 0x002e228b,
+-	0x5fb8: 0x002e828b, 0x5fb9: 0x002e9e8b, 0x5fba: 0x002ee28b, 0x5fbb: 0x002f2c8b,
+-	0x5fbc: 0x002f568b, 0x5fbd: 0x002f7a8b, 0x5fbe: 0x002fe68b, 0x5fbf: 0x00302c8b,
+-	// Block 0x17f, offset 0x5fc0
+-	0x5fc0: 0x00306c8b, 0x5fc1: 0x0030be8b, 0x5fc2: 0x0030e28b, 0x5fc3: 0x0030f68b,
+-	0x5fc4: 0x0031008b, 0x5fc5: 0x00312a8b, 0x5fc6: 0x002bde85, 0x5fc7: 0x002c0a85,
+-	0x5fc8: 0x002c3a85, 0x5fc9: 0x002c6285, 0x5fca: 0x002c9885, 0x5fcb: 0x002d0885,
+-	0x5fcc: 0x002d2285, 0x5fcd: 0x002d6885, 0x5fce: 0x002d9a85, 0x5fcf: 0x002dcc85,
+-	0x5fd0: 0x002dfe85, 0x5fd1: 0x002e2285, 0x5fd2: 0x002e8285, 0x5fd3: 0x002e9e85,
+-	0x5fd4: 0x002ee285, 0x5fd5: 0x002f2c85, 0x5fd6: 0x002f5685, 0x5fd7: 0x002f7a85,
+-	0x5fd8: 0x002fe685, 0x5fd9: 0x00302c85, 0x5fda: 0x00306c85, 0x5fdb: 0x0030be85,
+-	0x5fdc: 0x0030e285, 0x5fdd: 0x0030f685, 0x5fde: 0x00310085, 0x5fdf: 0x00312a85,
+-	0x5fe0: 0x002bde8b, 0x5fe1: 0x002c0a8b, 0x5fe2: 0x002c3a8b, 0x5fe3: 0x002c628b,
+-	0x5fe4: 0x002c988b, 0x5fe5: 0x002d088b, 0x5fe6: 0x002d228b, 0x5fe7: 0x002d688b,
+-	0x5fe8: 0x002d9a8b, 0x5fe9: 0x002dcc8b, 0x5fea: 0x002dfe8b, 0x5feb: 0x002e228b,
+-	0x5fec: 0x002e828b, 0x5fed: 0x002e9e8b, 0x5fee: 0x002ee28b, 0x5fef: 0x002f2c8b,
+-	0x5ff0: 0x002f568b, 0x5ff1: 0x002f7a8b, 0x5ff2: 0x002fe68b, 0x5ff3: 0x00302c8b,
+-	0x5ff4: 0x00306c8b, 0x5ff5: 0x0030be8b, 0x5ff6: 0x0030e28b, 0x5ff7: 0x0030f68b,
+-	0x5ff8: 0x0031008b, 0x5ff9: 0x00312a8b, 0x5ffa: 0x002bde85, 0x5ffb: 0x002c0a85,
+-	0x5ffc: 0x002c3a85, 0x5ffd: 0x002c6285, 0x5ffe: 0x002c9885, 0x5fff: 0x002d0885,
+-	// Block 0x180, offset 0x6000
+-	0x6000: 0x002d2285, 0x6001: 0x002d6885, 0x6002: 0x002d9a85, 0x6003: 0x002dcc85,
+-	0x6004: 0x002dfe85, 0x6005: 0x002e2285, 0x6006: 0x002e8285, 0x6007: 0x002e9e85,
+-	0x6008: 0x002ee285, 0x6009: 0x002f2c85, 0x600a: 0x002f5685, 0x600b: 0x002f7a85,
+-	0x600c: 0x002fe685, 0x600d: 0x00302c85, 0x600e: 0x00306c85, 0x600f: 0x0030be85,
+-	0x6010: 0x0030e285, 0x6011: 0x0030f685, 0x6012: 0x00310085, 0x6013: 0x00312a85,
+-	0x6014: 0x002bde8b, 0x6015: 0x002c0a8b, 0x6016: 0x002c3a8b, 0x6017: 0x002c628b,
+-	0x6018: 0x002c988b, 0x6019: 0x002d088b, 0x601a: 0x002d228b, 0x601b: 0x002d688b,
+-	0x601c: 0x002d9a8b, 0x601d: 0x002dcc8b, 0x601e: 0x002dfe8b, 0x601f: 0x002e228b,
+-	0x6020: 0x002e828b, 0x6021: 0x002e9e8b, 0x6022: 0x002ee28b, 0x6023: 0x002f2c8b,
+-	0x6024: 0x002f568b, 0x6025: 0x002f7a8b, 0x6026: 0x002fe68b, 0x6027: 0x00302c8b,
+-	0x6028: 0x00306c8b, 0x6029: 0x0030be8b, 0x602a: 0x0030e28b, 0x602b: 0x0030f68b,
+-	0x602c: 0x0031008b, 0x602d: 0x00312a8b, 0x602e: 0x002bde85, 0x602f: 0x002c0a85,
+-	0x6030: 0x002c3a85, 0x6031: 0x002c6285, 0x6032: 0x002c9885, 0x6033: 0x002d0885,
+-	0x6034: 0x002d2285, 0x6035: 0x002d6885, 0x6036: 0x002d9a85, 0x6037: 0x002dcc85,
+-	0x6038: 0x002dfe85, 0x6039: 0x002e2285, 0x603a: 0x002e8285, 0x603b: 0x002e9e85,
+-	0x603c: 0x002ee285, 0x603d: 0x002f2c85, 0x603e: 0x002f5685, 0x603f: 0x002f7a85,
+-	// Block 0x181, offset 0x6040
+-	0x6040: 0x002fe685, 0x6041: 0x00302c85, 0x6042: 0x00306c85, 0x6043: 0x0030be85,
+-	0x6044: 0x0030e285, 0x6045: 0x0030f685, 0x6046: 0x00310085, 0x6047: 0x00312a85,
+-	0x6048: 0x002bde8b, 0x6049: 0x002c0a8b, 0x604a: 0x002c3a8b, 0x604b: 0x002c628b,
+-	0x604c: 0x002c988b, 0x604d: 0x002d088b, 0x604e: 0x002d228b, 0x604f: 0x002d688b,
+-	0x6050: 0x002d9a8b, 0x6051: 0x002dcc8b, 0x6052: 0x002dfe8b, 0x6053: 0x002e228b,
+-	0x6054: 0x002e828b, 0x6055: 0x002e9e8b, 0x6056: 0x002ee28b, 0x6057: 0x002f2c8b,
+-	0x6058: 0x002f568b, 0x6059: 0x002f7a8b, 0x605a: 0x002fe68b, 0x605b: 0x00302c8b,
+-	0x605c: 0x00306c8b, 0x605d: 0x0030be8b, 0x605e: 0x0030e28b, 0x605f: 0x0030f68b,
+-	0x6060: 0x0031008b, 0x6061: 0x00312a8b, 0x6062: 0x002bde85, 0x6063: 0x002c0a85,
+-	0x6064: 0x002c3a85, 0x6065: 0x002c6285, 0x6066: 0x002c9885, 0x6067: 0x002d0885,
+-	0x6068: 0x002d2285, 0x6069: 0x002d6885, 0x606a: 0x002d9a85, 0x606b: 0x002dcc85,
+-	0x606c: 0x002dfe85, 0x606d: 0x002e2285, 0x606e: 0x002e8285, 0x606f: 0x002e9e85,
+-	0x6070: 0x002ee285, 0x6071: 0x002f2c85, 0x6072: 0x002f5685, 0x6073: 0x002f7a85,
+-	0x6074: 0x002fe685, 0x6075: 0x00302c85, 0x6076: 0x00306c85, 0x6077: 0x0030be85,
+-	0x6078: 0x0030e285, 0x6079: 0x0030f685, 0x607a: 0x00310085, 0x607b: 0x00312a85,
+-	0x607c: 0x002bde8b, 0x607d: 0x002c0a8b, 0x607e: 0x002c3a8b, 0x607f: 0x002c628b,
+-	// Block 0x182, offset 0x6080
+-	0x6080: 0x002c988b, 0x6081: 0x002d088b, 0x6082: 0x002d228b, 0x6083: 0x002d688b,
+-	0x6084: 0x002d9a8b, 0x6085: 0x002dcc8b, 0x6086: 0x002dfe8b, 0x6087: 0x002e228b,
+-	0x6088: 0x002e828b, 0x6089: 0x002e9e8b, 0x608a: 0x002ee28b, 0x608b: 0x002f2c8b,
+-	0x608c: 0x002f568b, 0x608d: 0x002f7a8b, 0x608e: 0x002fe68b, 0x608f: 0x00302c8b,
+-	0x6090: 0x00306c8b, 0x6091: 0x0030be8b, 0x6092: 0x0030e28b, 0x6093: 0x0030f68b,
+-	0x6094: 0x0031008b, 0x6095: 0x00312a8b, 0x6096: 0x002bde85, 0x6097: 0x002c0a85,
+-	0x6098: 0x002c3a85, 0x6099: 0x002c6285, 0x609a: 0x002c9885, 0x609b: 0x002d0885,
+-	0x609c: 0x002d2285, 0x609d: 0x002d6885, 0x609e: 0x002d9a85, 0x609f: 0x002dcc85,
+-	0x60a0: 0x002dfe85, 0x60a1: 0x002e2285, 0x60a2: 0x002e8285, 0x60a3: 0x002e9e85,
+-	0x60a4: 0x002ee285, 0x60a5: 0x002f2c85, 0x60a6: 0x002f5685, 0x60a7: 0x002f7a85,
+-	0x60a8: 0x002fe685, 0x60a9: 0x00302c85, 0x60aa: 0x00306c85, 0x60ab: 0x0030be85,
+-	0x60ac: 0x0030e285, 0x60ad: 0x0030f685, 0x60ae: 0x00310085, 0x60af: 0x00312a85,
+-	0x60b0: 0x002bde8b, 0x60b1: 0x002c0a8b, 0x60b2: 0x002c3a8b, 0x60b3: 0x002c628b,
+-	0x60b4: 0x002c988b, 0x60b5: 0x002d088b, 0x60b6: 0x002d228b, 0x60b7: 0x002d688b,
+-	0x60b8: 0x002d9a8b, 0x60b9: 0x002dcc8b, 0x60ba: 0x002dfe8b, 0x60bb: 0x002e228b,
+-	0x60bc: 0x002e828b, 0x60bd: 0x002e9e8b, 0x60be: 0x002ee28b, 0x60bf: 0x002f2c8b,
+-	// Block 0x183, offset 0x60c0
+-	0x60c0: 0x002f568b, 0x60c1: 0x002f7a8b, 0x60c2: 0x002fe68b, 0x60c3: 0x00302c8b,
+-	0x60c4: 0x00306c8b, 0x60c5: 0x0030be8b, 0x60c6: 0x0030e28b, 0x60c7: 0x0030f68b,
+-	0x60c8: 0x0031008b, 0x60c9: 0x00312a8b, 0x60ca: 0x002bde85, 0x60cb: 0x002c0a85,
+-	0x60cc: 0x002c3a85, 0x60cd: 0x002c6285, 0x60ce: 0x002c9885, 0x60cf: 0x002d0885,
+-	0x60d0: 0x002d2285, 0x60d1: 0x002d6885, 0x60d2: 0x002d9a85, 0x60d3: 0x002dcc85,
+-	0x60d4: 0x002dfe85, 0x60d5: 0x002e2285, 0x60d6: 0x002e8285, 0x60d7: 0x002e9e85,
+-	0x60d8: 0x002ee285, 0x60d9: 0x002f2c85, 0x60da: 0x002f5685, 0x60db: 0x002f7a85,
+-	0x60dc: 0x002fe685, 0x60dd: 0x00302c85, 0x60de: 0x00306c85, 0x60df: 0x0030be85,
+-	0x60e0: 0x0030e285, 0x60e1: 0x0030f685, 0x60e2: 0x00310085, 0x60e3: 0x00312a85,
+-	0x60e4: 0x002da285, 0x60e5: 0x002dd485,
+-	0x60e8: 0x0032528b, 0x60e9: 0x0032548b, 0x60ea: 0x0032568b, 0x60eb: 0x00325a8b,
+-	0x60ec: 0x00325c8b, 0x60ed: 0x0032648b, 0x60ee: 0x0032688b, 0x60ef: 0x00326a8b,
+-	0x60f0: 0x00326c8b, 0x60f1: 0x0032708b, 0x60f2: 0x0032728b, 0x60f3: 0x0032768b,
+-	0x60f4: 0x0032788b, 0x60f5: 0x00327a8b, 0x60f6: 0x00327c8b, 0x60f7: 0x00327e8b,
+-	0x60f8: 0x0032888b, 0x60f9: 0x00326a8b, 0x60fa: 0x00328e8b, 0x60fb: 0x0032968b,
+-	0x60fc: 0x0032988b, 0x60fd: 0x00329a8b, 0x60fe: 0x00329c8b, 0x60ff: 0x00329e8b,
+-	// Block 0x184, offset 0x6100
+-	0x6100: 0x0032a28b, 0x6101: 0x00092485, 0x6102: 0x00325285, 0x6103: 0x00325485,
+-	0x6104: 0x00325685, 0x6105: 0x00325a85, 0x6106: 0x00325c85, 0x6107: 0x00326485,
+-	0x6108: 0x00326885, 0x6109: 0x00326a85, 0x610a: 0x00326c85, 0x610b: 0x00327085,
+-	0x610c: 0x00327285, 0x610d: 0x00327685, 0x610e: 0x00327885, 0x610f: 0x00327a85,
+-	0x6110: 0x00327c85, 0x6111: 0x00327e85, 0x6112: 0x00328885, 0x6113: 0x00328e85,
+-	0x6114: 0x00328e85, 0x6115: 0x00329685, 0x6116: 0x00329885, 0x6117: 0x00329a85,
+-	0x6118: 0x00329c85, 0x6119: 0x00329e85, 0x611a: 0x0032a285, 0x611b: 0x00091c85,
+-	0x611c: 0x00325c85, 0x611d: 0x00326a85, 0x611e: 0x00327085, 0x611f: 0x00329a85,
+-	0x6120: 0x00328885, 0x6121: 0x00327e85, 0x6122: 0x0032528b, 0x6123: 0x0032548b,
+-	0x6124: 0x0032568b, 0x6125: 0x00325a8b, 0x6126: 0x00325c8b, 0x6127: 0x0032648b,
+-	0x6128: 0x0032688b, 0x6129: 0x00326a8b, 0x612a: 0x00326c8b, 0x612b: 0x0032708b,
+-	0x612c: 0x0032728b, 0x612d: 0x0032768b, 0x612e: 0x0032788b, 0x612f: 0x00327a8b,
+-	0x6130: 0x00327c8b, 0x6131: 0x00327e8b, 0x6132: 0x0032888b, 0x6133: 0x00326a8b,
+-	0x6134: 0x00328e8b, 0x6135: 0x0032968b, 0x6136: 0x0032988b, 0x6137: 0x00329a8b,
+-	0x6138: 0x00329c8b, 0x6139: 0x00329e8b, 0x613a: 0x0032a28b, 0x613b: 0x00092485,
+-	0x613c: 0x00325285, 0x613d: 0x00325485, 0x613e: 0x00325685, 0x613f: 0x00325a85,
+-	// Block 0x185, offset 0x6140
+-	0x6140: 0x00325c85, 0x6141: 0x00326485, 0x6142: 0x00326885, 0x6143: 0x00326a85,
+-	0x6144: 0x00326c85, 0x6145: 0x00327085, 0x6146: 0x00327285, 0x6147: 0x00327685,
+-	0x6148: 0x00327885, 0x6149: 0x00327a85, 0x614a: 0x00327c85, 0x614b: 0x00327e85,
+-	0x614c: 0x00328885, 0x614d: 0x00328e85, 0x614e: 0x00328e85, 0x614f: 0x00329685,
+-	0x6150: 0x00329885, 0x6151: 0x00329a85, 0x6152: 0x00329c85, 0x6153: 0x00329e85,
+-	0x6154: 0x0032a285, 0x6155: 0x00091c85, 0x6156: 0x00325c85, 0x6157: 0x00326a85,
+-	0x6158: 0x00327085, 0x6159: 0x00329a85, 0x615a: 0x00328885, 0x615b: 0x00327e85,
+-	0x615c: 0x0032528b, 0x615d: 0x0032548b, 0x615e: 0x0032568b, 0x615f: 0x00325a8b,
+-	0x6160: 0x00325c8b, 0x6161: 0x0032648b, 0x6162: 0x0032688b, 0x6163: 0x00326a8b,
+-	0x6164: 0x00326c8b, 0x6165: 0x0032708b, 0x6166: 0x0032728b, 0x6167: 0x0032768b,
+-	0x6168: 0x0032788b, 0x6169: 0x00327a8b, 0x616a: 0x00327c8b, 0x616b: 0x00327e8b,
+-	0x616c: 0x0032888b, 0x616d: 0x00326a8b, 0x616e: 0x00328e8b, 0x616f: 0x0032968b,
+-	0x6170: 0x0032988b, 0x6171: 0x00329a8b, 0x6172: 0x00329c8b, 0x6173: 0x00329e8b,
+-	0x6174: 0x0032a28b, 0x6175: 0x00092485, 0x6176: 0x00325285, 0x6177: 0x00325485,
+-	0x6178: 0x00325685, 0x6179: 0x00325a85, 0x617a: 0x00325c85, 0x617b: 0x00326485,
+-	0x617c: 0x00326885, 0x617d: 0x00326a85, 0x617e: 0x00326c85, 0x617f: 0x00327085,
+-	// Block 0x186, offset 0x6180
+-	0x6180: 0x00327285, 0x6181: 0x00327685, 0x6182: 0x00327885, 0x6183: 0x00327a85,
+-	0x6184: 0x00327c85, 0x6185: 0x00327e85, 0x6186: 0x00328885, 0x6187: 0x00328e85,
+-	0x6188: 0x00328e85, 0x6189: 0x00329685, 0x618a: 0x00329885, 0x618b: 0x00329a85,
+-	0x618c: 0x00329c85, 0x618d: 0x00329e85, 0x618e: 0x0032a285, 0x618f: 0x00091c85,
+-	0x6190: 0x00325c85, 0x6191: 0x00326a85, 0x6192: 0x00327085, 0x6193: 0x00329a85,
+-	0x6194: 0x00328885, 0x6195: 0x00327e85, 0x6196: 0x0032528b, 0x6197: 0x0032548b,
+-	0x6198: 0x0032568b, 0x6199: 0x00325a8b, 0x619a: 0x00325c8b, 0x619b: 0x0032648b,
+-	0x619c: 0x0032688b, 0x619d: 0x00326a8b, 0x619e: 0x00326c8b, 0x619f: 0x0032708b,
+-	0x61a0: 0x0032728b, 0x61a1: 0x0032768b, 0x61a2: 0x0032788b, 0x61a3: 0x00327a8b,
+-	0x61a4: 0x00327c8b, 0x61a5: 0x00327e8b, 0x61a6: 0x0032888b, 0x61a7: 0x00326a8b,
+-	0x61a8: 0x00328e8b, 0x61a9: 0x0032968b, 0x61aa: 0x0032988b, 0x61ab: 0x00329a8b,
+-	0x61ac: 0x00329c8b, 0x61ad: 0x00329e8b, 0x61ae: 0x0032a28b, 0x61af: 0x00092485,
+-	0x61b0: 0x00325285, 0x61b1: 0x00325485, 0x61b2: 0x00325685, 0x61b3: 0x00325a85,
+-	0x61b4: 0x00325c85, 0x61b5: 0x00326485, 0x61b6: 0x00326885, 0x61b7: 0x00326a85,
+-	0x61b8: 0x00326c85, 0x61b9: 0x00327085, 0x61ba: 0x00327285, 0x61bb: 0x00327685,
+-	0x61bc: 0x00327885, 0x61bd: 0x00327a85, 0x61be: 0x00327c85, 0x61bf: 0x00327e85,
+-	// Block 0x187, offset 0x61c0
+-	0x61c0: 0x00328885, 0x61c1: 0x00328e85, 0x61c2: 0x00328e85, 0x61c3: 0x00329685,
+-	0x61c4: 0x00329885, 0x61c5: 0x00329a85, 0x61c6: 0x00329c85, 0x61c7: 0x00329e85,
+-	0x61c8: 0x0032a285, 0x61c9: 0x00091c85, 0x61ca: 0x00325c85, 0x61cb: 0x00326a85,
+-	0x61cc: 0x00327085, 0x61cd: 0x00329a85, 0x61ce: 0x00328885, 0x61cf: 0x00327e85,
+-	0x61d0: 0x0032528b, 0x61d1: 0x0032548b, 0x61d2: 0x0032568b, 0x61d3: 0x00325a8b,
+-	0x61d4: 0x00325c8b, 0x61d5: 0x0032648b, 0x61d6: 0x0032688b, 0x61d7: 0x00326a8b,
+-	0x61d8: 0x00326c8b, 0x61d9: 0x0032708b, 0x61da: 0x0032728b, 0x61db: 0x0032768b,
+-	0x61dc: 0x0032788b, 0x61dd: 0x00327a8b, 0x61de: 0x00327c8b, 0x61df: 0x00327e8b,
+-	0x61e0: 0x0032888b, 0x61e1: 0x00326a8b, 0x61e2: 0x00328e8b, 0x61e3: 0x0032968b,
+-	0x61e4: 0x0032988b, 0x61e5: 0x00329a8b, 0x61e6: 0x00329c8b, 0x61e7: 0x00329e8b,
+-	0x61e8: 0x0032a28b, 0x61e9: 0x00092485, 0x61ea: 0x00325285, 0x61eb: 0x00325485,
+-	0x61ec: 0x00325685, 0x61ed: 0x00325a85, 0x61ee: 0x00325c85, 0x61ef: 0x00326485,
+-	0x61f0: 0x00326885, 0x61f1: 0x00326a85, 0x61f2: 0x00326c85, 0x61f3: 0x00327085,
+-	0x61f4: 0x00327285, 0x61f5: 0x00327685, 0x61f6: 0x00327885, 0x61f7: 0x00327a85,
+-	0x61f8: 0x00327c85, 0x61f9: 0x00327e85, 0x61fa: 0x00328885, 0x61fb: 0x00328e85,
+-	0x61fc: 0x00328e85, 0x61fd: 0x00329685, 0x61fe: 0x00329885, 0x61ff: 0x00329a85,
+-	// Block 0x188, offset 0x6200
+-	0x6200: 0x00329c85, 0x6201: 0x00329e85, 0x6202: 0x0032a285, 0x6203: 0x00091c85,
+-	0x6204: 0x00325c85, 0x6205: 0x00326a85, 0x6206: 0x00327085, 0x6207: 0x00329a85,
+-	0x6208: 0x00328885, 0x6209: 0x00327e85, 0x620a: 0x00325e8b, 0x620b: 0x00325e85,
+-	0x620e: 0x0029cc85, 0x620f: 0x0029ce85,
+-	0x6210: 0x0029d085, 0x6211: 0x0029d285, 0x6212: 0x0029d485, 0x6213: 0x0029d685,
+-	0x6214: 0x0029d885, 0x6215: 0x0029da85, 0x6216: 0x0029dc85, 0x6217: 0x0029de85,
+-	0x6218: 0x0029cc85, 0x6219: 0x0029ce85, 0x621a: 0x0029d085, 0x621b: 0x0029d285,
+-	0x621c: 0x0029d485, 0x621d: 0x0029d685, 0x621e: 0x0029d885, 0x621f: 0x0029da85,
+-	0x6220: 0x0029dc85, 0x6221: 0x0029de85, 0x6222: 0x0029cc85, 0x6223: 0x0029ce85,
+-	0x6224: 0x0029d085, 0x6225: 0x0029d285, 0x6226: 0x0029d485, 0x6227: 0x0029d685,
+-	0x6228: 0x0029d885, 0x6229: 0x0029da85, 0x622a: 0x0029dc85, 0x622b: 0x0029de85,
+-	0x622c: 0x0029cc85, 0x622d: 0x0029ce85, 0x622e: 0x0029d085, 0x622f: 0x0029d285,
+-	0x6230: 0x0029d485, 0x6231: 0x0029d685, 0x6232: 0x0029d885, 0x6233: 0x0029da85,
+-	0x6234: 0x0029dc85, 0x6235: 0x0029de85, 0x6236: 0x0029cc85, 0x6237: 0x0029ce85,
+-	0x6238: 0x0029d085, 0x6239: 0x0029d285, 0x623a: 0x0029d485, 0x623b: 0x0029d685,
+-	0x623c: 0x0029d885, 0x623d: 0x0029da85, 0x623e: 0x0029dc85, 0x623f: 0x0029de85,
+-	// Block 0x189, offset 0x6240
+-	0x6240: 0x00393885, 0x6241: 0x00393c85, 0x6242: 0x00396485, 0x6243: 0x00398885,
+-	0x6245: 0x003a7485, 0x6246: 0x0039a685, 0x6247: 0x00397285,
+-	0x6248: 0x0039e685, 0x6249: 0x003a9085, 0x624a: 0x003a1a85, 0x624b: 0x003a4085,
+-	0x624c: 0x003a4e85, 0x624d: 0x003a5685, 0x624e: 0x0039c685, 0x624f: 0x0039ee85,
+-	0x6250: 0x0039fc85, 0x6251: 0x0039dc85, 0x6252: 0x003a1285, 0x6253: 0x0039a485,
+-	0x6254: 0x0039c885, 0x6255: 0x00395685, 0x6256: 0x00395885, 0x6257: 0x00397485,
+-	0x6258: 0x00398a85, 0x6259: 0x0039de85, 0x625a: 0x0039e885, 0x625b: 0x0039f085,
+-	0x625c: 0x00393a85, 0x625d: 0x003a5885, 0x625e: 0x0039fe85, 0x625f: 0x003a1085,
+-	0x6261: 0x00393c85, 0x6262: 0x00396485,
+-	0x6264: 0x003a6885, 0x6267: 0x00397285,
+-	0x6269: 0x003a9085, 0x626a: 0x003a1a85, 0x626b: 0x003a4085,
+-	0x626c: 0x003a4e85, 0x626d: 0x003a5685, 0x626e: 0x0039c685, 0x626f: 0x0039ee85,
+-	0x6270: 0x0039fc85, 0x6271: 0x0039dc85, 0x6272: 0x003a1285,
+-	0x6274: 0x0039c885, 0x6275: 0x00395685, 0x6276: 0x00395885, 0x6277: 0x00397485,
+-	0x6279: 0x0039de85, 0x627b: 0x0039f085,
+-	// Block 0x18a, offset 0x6280
+-	0x6282: 0x00396485,
+-	0x6287: 0x00397285,
+-	0x6289: 0x003a9085, 0x628b: 0x003a4085,
+-	0x628d: 0x003a5685, 0x628e: 0x0039c685, 0x628f: 0x0039ee85,
+-	0x6291: 0x0039dc85, 0x6292: 0x003a1285,
+-	0x6294: 0x0039c885, 0x6297: 0x00397485,
+-	0x6299: 0x0039de85, 0x629b: 0x0039f085,
+-	0x629d: 0x003a5885, 0x629f: 0x003a1085,
+-	0x62a1: 0x00393c85, 0x62a2: 0x00396485,
+-	0x62a4: 0x003a6885, 0x62a7: 0x00397285,
+-	0x62a8: 0x0039e685, 0x62a9: 0x003a9085, 0x62aa: 0x003a1a85,
+-	0x62ac: 0x003a4e85, 0x62ad: 0x003a5685, 0x62ae: 0x0039c685, 0x62af: 0x0039ee85,
+-	0x62b0: 0x0039fc85, 0x62b1: 0x0039dc85, 0x62b2: 0x003a1285,
+-	0x62b4: 0x0039c885, 0x62b5: 0x00395685, 0x62b6: 0x00395885, 0x62b7: 0x00397485,
+-	0x62b9: 0x0039de85, 0x62ba: 0x0039e885, 0x62bb: 0x0039f085,
+-	0x62bc: 0x00393a85, 0x62be: 0x0039fe85,
+-	// Block 0x18b, offset 0x62c0
+-	0x62c0: 0x00393885, 0x62c1: 0x00393c85, 0x62c2: 0x00396485, 0x62c3: 0x00398885,
+-	0x62c4: 0x003a6885, 0x62c5: 0x003a7485, 0x62c6: 0x0039a685, 0x62c7: 0x00397285,
+-	0x62c8: 0x0039e685, 0x62c9: 0x003a9085, 0x62cb: 0x003a4085,
+-	0x62cc: 0x003a4e85, 0x62cd: 0x003a5685, 0x62ce: 0x0039c685, 0x62cf: 0x0039ee85,
+-	0x62d0: 0x0039fc85, 0x62d1: 0x0039dc85, 0x62d2: 0x003a1285, 0x62d3: 0x0039a485,
+-	0x62d4: 0x0039c885, 0x62d5: 0x00395685, 0x62d6: 0x00395885, 0x62d7: 0x00397485,
+-	0x62d8: 0x00398a85, 0x62d9: 0x0039de85, 0x62da: 0x0039e885, 0x62db: 0x0039f085,
+-	0x62e1: 0x00393c85, 0x62e2: 0x00396485, 0x62e3: 0x00398885,
+-	0x62e5: 0x003a7485, 0x62e6: 0x0039a685, 0x62e7: 0x00397285,
+-	0x62e8: 0x0039e685, 0x62e9: 0x003a9085, 0x62eb: 0x003a4085,
+-	0x62ec: 0x003a4e85, 0x62ed: 0x003a5685, 0x62ee: 0x0039c685, 0x62ef: 0x0039ee85,
+-	0x62f0: 0x0039fc85, 0x62f1: 0x0039dc85, 0x62f2: 0x003a1285, 0x62f3: 0x0039a485,
+-	0x62f4: 0x0039c885, 0x62f5: 0x00395685, 0x62f6: 0x00395885, 0x62f7: 0x00397485,
+-	0x62f8: 0x00398a85, 0x62f9: 0x0039de85, 0x62fa: 0x0039e885, 0x62fb: 0x0039f085,
+-	// Block 0x18c, offset 0x6300
+-	0x6330: 0x40070a20, 0x6331: 0x40070c20,
+-	// Block 0x18d, offset 0x6340
+-	0x6340: 0x401f6e20, 0x6341: 0x401f7020, 0x6342: 0x401f7220, 0x6343: 0x401f7420,
+-	0x6344: 0x401f7620, 0x6345: 0x401f7820, 0x6346: 0x401f7a20, 0x6347: 0x401f7c20,
+-	0x6348: 0x401f7e20, 0x6349: 0x401f8020, 0x634a: 0x401f8220, 0x634b: 0x401f8420,
+-	0x634c: 0x401f8620, 0x634d: 0x401f8820, 0x634e: 0x401f8a20, 0x634f: 0x401f8c20,
+-	0x6350: 0x401f8e20, 0x6351: 0x401f9020, 0x6352: 0x401f9220, 0x6353: 0x401f9420,
+-	0x6354: 0x401f9620, 0x6355: 0x401f9820, 0x6356: 0x401f9a20, 0x6357: 0x401f9c20,
+-	0x6358: 0x401f9e20, 0x6359: 0x401fa020, 0x635a: 0x401fa220, 0x635b: 0x401fa420,
+-	0x635c: 0x401fa620, 0x635d: 0x401fa820, 0x635e: 0x401faa20, 0x635f: 0x401fac20,
+-	0x6360: 0x401fae20, 0x6361: 0x401fb020, 0x6362: 0x401fb220, 0x6363: 0x401fb420,
+-	0x6364: 0x401fb620, 0x6365: 0x401fb820, 0x6366: 0x401fba20, 0x6367: 0x401fbc20,
+-	0x6368: 0x401fbe20, 0x6369: 0x401fc020, 0x636a: 0x401fc220, 0x636b: 0x401fc420,
+-	0x6370: 0x401fc620, 0x6371: 0x401fc820, 0x6372: 0x401fca20, 0x6373: 0x401fcc20,
+-	0x6374: 0x401fce20, 0x6375: 0x401fd020, 0x6376: 0x401fd220, 0x6377: 0x401fd420,
+-	0x6378: 0x401fd620, 0x6379: 0x401fd820, 0x637a: 0x401fda20, 0x637b: 0x401fdc20,
+-	0x637c: 0x401fde20, 0x637d: 0x401fe020, 0x637e: 0x401fe220, 0x637f: 0x401fe420,
+-	// Block 0x18e, offset 0x6380
+-	0x6380: 0x401fe620, 0x6381: 0x401fe820, 0x6382: 0x401fea20, 0x6383: 0x401fec20,
+-	0x6384: 0x401fee20, 0x6385: 0x401ff020, 0x6386: 0x401ff220, 0x6387: 0x401ff420,
+-	0x6388: 0x401ff620, 0x6389: 0x401ff820, 0x638a: 0x401ffa20, 0x638b: 0x401ffc20,
+-	0x638c: 0x401ffe20, 0x638d: 0x40200020, 0x638e: 0x40200220, 0x638f: 0x40200420,
+-	0x6390: 0x40200620, 0x6391: 0x40200820, 0x6392: 0x40200a20, 0x6393: 0x40200c20,
+-	0x6394: 0x40200e20, 0x6395: 0x40201020, 0x6396: 0x40201220, 0x6397: 0x40201420,
+-	0x6398: 0x40201620, 0x6399: 0x40201820, 0x639a: 0x40201a20, 0x639b: 0x40201c20,
+-	0x639c: 0x40201e20, 0x639d: 0x40202020, 0x639e: 0x40202220, 0x639f: 0x40202420,
+-	0x63a0: 0x40202620, 0x63a1: 0x40202820, 0x63a2: 0x40202a20, 0x63a3: 0x40202c20,
+-	0x63a4: 0x40202e20, 0x63a5: 0x40203020, 0x63a6: 0x40203220, 0x63a7: 0x40203420,
+-	0x63a8: 0x40203620, 0x63a9: 0x40203820, 0x63aa: 0x40203a20, 0x63ab: 0x40203c20,
+-	0x63ac: 0x40203e20, 0x63ad: 0x40204020, 0x63ae: 0x40204220, 0x63af: 0x40204420,
+-	0x63b0: 0x40204620, 0x63b1: 0x40204820, 0x63b2: 0x40204a20, 0x63b3: 0x40204c20,
+-	0x63b4: 0x40204e20, 0x63b5: 0x40205020, 0x63b6: 0x40205220, 0x63b7: 0x40205420,
+-	0x63b8: 0x40205620, 0x63b9: 0x40205820, 0x63ba: 0x40205a20, 0x63bb: 0x40205c20,
+-	0x63bc: 0x40205e20, 0x63bd: 0x40206020, 0x63be: 0x40206220, 0x63bf: 0x40206420,
+-	// Block 0x18f, offset 0x63c0
+-	0x63c0: 0x40206620, 0x63c1: 0x40206820, 0x63c2: 0x40206a20, 0x63c3: 0x40206c20,
+-	0x63c4: 0x40206e20, 0x63c5: 0x40207020, 0x63c6: 0x40207220, 0x63c7: 0x40207420,
+-	0x63c8: 0x40207620, 0x63c9: 0x40207820, 0x63ca: 0x40207a20, 0x63cb: 0x40207c20,
+-	0x63cc: 0x40207e20, 0x63cd: 0x40208020, 0x63ce: 0x40208220, 0x63cf: 0x40208420,
+-	0x63d0: 0x40208620, 0x63d1: 0x40208820, 0x63d2: 0x40208a20, 0x63d3: 0x40208c20,
+-	0x63e0: 0x40208e20, 0x63e1: 0x40209020, 0x63e2: 0x40209220, 0x63e3: 0x40209420,
+-	0x63e4: 0x40209620, 0x63e5: 0x40209820, 0x63e6: 0x40209a20, 0x63e7: 0x40209c20,
+-	0x63e8: 0x40209e20, 0x63e9: 0x4020a020, 0x63ea: 0x4020a220, 0x63eb: 0x4020a420,
+-	0x63ec: 0x4020a620, 0x63ed: 0x4020a820, 0x63ee: 0x4020aa20,
+-	0x63f1: 0x4020ac20, 0x63f2: 0x4020ae20, 0x63f3: 0x4020b020,
+-	0x63f4: 0x4020b220, 0x63f5: 0x4020b420, 0x63f6: 0x4020b620, 0x63f7: 0x4020b820,
+-	0x63f8: 0x4020ba20, 0x63f9: 0x4020bc20, 0x63fa: 0x4020be20, 0x63fb: 0x4020c020,
+-	0x63fc: 0x4020c220, 0x63fd: 0x4020c420, 0x63fe: 0x4020c620,
+-	// Block 0x190, offset 0x6400
+-	0x6401: 0x4020c820, 0x6402: 0x4020ca20, 0x6403: 0x4020cc20,
+-	0x6404: 0x4020ce20, 0x6405: 0x4020d020, 0x6406: 0x4020d220, 0x6407: 0x4020d420,
+-	0x6408: 0x4020d620, 0x6409: 0x4020d820, 0x640a: 0x4020da20, 0x640b: 0x4020dc20,
+-	0x640c: 0x4020de20, 0x640d: 0x4020e020, 0x640e: 0x4020e220, 0x640f: 0x4020e420,
+-	0x6411: 0x4020e620, 0x6412: 0x4020e820, 0x6413: 0x4020ea20,
+-	0x6414: 0x4020ec20, 0x6415: 0x4020ee20, 0x6416: 0x4020f020, 0x6417: 0x4020f220,
+-	0x6418: 0x4020f420, 0x6419: 0x4020f620, 0x641a: 0x4020f820, 0x641b: 0x4020fa20,
+-	0x641c: 0x4020fc20, 0x641d: 0x4020fe20, 0x641e: 0x40210020, 0x641f: 0x40210220,
+-	// Block 0x191, offset 0x6440
+-	0x6440: 0xf0001f04, 0x6441: 0xf0001f04, 0x6442: 0xf0001f04, 0x6443: 0xf0001f04,
+-	0x6444: 0xf0001f04, 0x6445: 0xf0001f04, 0x6446: 0xf0001f04, 0x6447: 0xf0001f04,
+-	0x6448: 0xf0001f04, 0x6449: 0xf0001f04, 0x644a: 0xf0001f04,
+-	0x6450: 0xf0000a04, 0x6451: 0xf0000a04, 0x6452: 0xf0000a04, 0x6453: 0xf0000a04,
+-	0x6454: 0xf0000a04, 0x6455: 0xf0000a04, 0x6456: 0xf0000a04, 0x6457: 0xf0000a04,
+-	0x6458: 0xf0000a04, 0x6459: 0xf0000a04, 0x645a: 0xf0000a04, 0x645b: 0xf0000a04,
+-	0x645c: 0xf0000a04, 0x645d: 0xf0000a04, 0x645e: 0xf0000a04, 0x645f: 0xf0000a04,
+-	0x6460: 0xf0000a04, 0x6461: 0xf0000a04, 0x6462: 0xf0000a04, 0x6463: 0xf0000a04,
+-	0x6464: 0xf0000a04, 0x6465: 0xf0000a04, 0x6466: 0xf0000a04, 0x6467: 0xf0000a04,
+-	0x6468: 0xf0000a04, 0x6469: 0xf0000a04, 0x646a: 0xf0000a04, 0x646b: 0x002c3a8c,
+-	0x646c: 0x002f7a8c, 0x646d: 0xf0000c0c, 0x646e: 0xf0000c0c,
+-	0x6470: 0x002bde9d, 0x6471: 0x002c0a9d, 0x6472: 0x002c3a9d, 0x6473: 0x002c629d,
+-	0x6474: 0x002c989d, 0x6475: 0x002d089d, 0x6476: 0x002d229d, 0x6477: 0x002d689d,
+-	0x6478: 0x002d9a9d, 0x6479: 0x002dcc9d, 0x647a: 0x002dfe9d, 0x647b: 0x002e229d,
+-	0x647c: 0x002e829d, 0x647d: 0x002e9e9d, 0x647e: 0x002ee29d, 0x647f: 0x002f2c9d,
+-	// Block 0x192, offset 0x6480
+-	0x6480: 0x002f569d, 0x6481: 0x002f7a9d, 0x6482: 0x002fe69d, 0x6483: 0x00302c9d,
+-	0x6484: 0x00306c9d, 0x6485: 0x0030be9d, 0x6486: 0x0030e29d, 0x6487: 0x0030f69d,
+-	0x6488: 0x0031009d, 0x6489: 0x00312a9d, 0x648a: 0xf0001d1d, 0x648b: 0xf0001d1d,
+-	0x648c: 0xf0001d1d, 0x648d: 0xf0001d1d, 0x648e: 0xe0000ebc, 0x648f: 0xf0001d1d,
+-	0x6490: 0x002bde8c, 0x6491: 0x002c0a8c, 0x6492: 0x002c3a8c, 0x6493: 0x002c628c,
+-	0x6494: 0x002c988c, 0x6495: 0x002d088c, 0x6496: 0x002d228c, 0x6497: 0x002d688c,
+-	0x6498: 0x002d9a8c, 0x6499: 0x002dcc8c, 0x649a: 0x002dfe8c, 0x649b: 0x002e228c,
+-	0x649c: 0x002e828c, 0x649d: 0x002e9e8c, 0x649e: 0x002ee28c, 0x649f: 0x002f2c8c,
+-	0x64a0: 0x002f568c, 0x64a1: 0x002f7a8c, 0x64a2: 0x002fe68c, 0x64a3: 0x00302c8c,
+-	0x64a4: 0x00306c8c, 0x64a5: 0x0030be8c, 0x64a6: 0x0030e28c, 0x64a7: 0x0030f68c,
+-	0x64a8: 0x0031008c, 0x64a9: 0x00312a8c, 0x64aa: 0xf0001414, 0x64ab: 0xf0001414,
+-	0x64b0: 0x002bde9d, 0x64b1: 0x002c0a9d, 0x64b2: 0x002c3a9d, 0x64b3: 0x002c629d,
+-	0x64b4: 0x002c989d, 0x64b5: 0x002d089d, 0x64b6: 0x002d229d, 0x64b7: 0x002d689d,
+-	0x64b8: 0x002d9a9d, 0x64b9: 0x002dcc9d, 0x64ba: 0x002dfe9d, 0x64bb: 0x002e229d,
+-	0x64bc: 0x002e829d, 0x64bd: 0x002e9e9d, 0x64be: 0x002ee29d, 0x64bf: 0x002f2c9d,
+-	// Block 0x193, offset 0x64c0
+-	0x64c0: 0x002f569d, 0x64c1: 0x002f7a9d, 0x64c2: 0x002fe69d, 0x64c3: 0x00302c9d,
+-	0x64c4: 0x00306c9d, 0x64c5: 0x0030be9d, 0x64c6: 0x0030e29d, 0x64c7: 0x0030f69d,
+-	0x64c8: 0x0031009d, 0x64c9: 0x00312a9d, 0x64ca: 0x002f2c9d, 0x64cb: 0xe0000c81,
+-	0x64cc: 0xe0000eb5, 0x64cd: 0xe0000f74, 0x64ce: 0xe00009d2, 0x64cf: 0xe00010f0,
+-	0x64d0: 0xf0001d1d, 0x64d1: 0xe0000a6f, 0x64d2: 0xe0000a7e, 0x64d3: 0xe0000ba4,
+-	0x64d4: 0xe0000c84, 0x64d5: 0xe0000d8a, 0x64d6: 0xe0000d8e, 0x64d7: 0xe0000e9b,
+-	0x64d8: 0xe0000f77, 0x64d9: 0xe00010a2, 0x64da: 0xe00010c0,
+-	// Block 0x194, offset 0x6500
+-	0x6526: 0x40110c20, 0x6527: 0x40110e20,
+-	0x6528: 0x40111020, 0x6529: 0x40111220, 0x652a: 0x40111420, 0x652b: 0x40111620,
+-	0x652c: 0x40111820, 0x652d: 0x40111a20, 0x652e: 0x40111c20, 0x652f: 0x40111e20,
+-	0x6530: 0x40112020, 0x6531: 0x40112220, 0x6532: 0x40112420, 0x6533: 0x40112620,
+-	0x6534: 0x40112820, 0x6535: 0x40112a20, 0x6536: 0x40112c20, 0x6537: 0x40112e20,
+-	0x6538: 0x40113020, 0x6539: 0x40113220, 0x653a: 0x40113420, 0x653b: 0x40113620,
+-	0x653c: 0x40113820, 0x653d: 0x40113a20, 0x653e: 0x40113c20, 0x653f: 0x40113e20,
+-	// Block 0x195, offset 0x6540
+-	0x6540: 0xf0001c1c, 0x6541: 0xf0001c1c, 0x6542: 0x00658c9c,
+-	0x6550: 0x02c4969c, 0x6551: 0x02b6ae9c, 0x6552: 0x02a7989c, 0x6553: 0xf0001c1c,
+-	0x6554: 0x029d189c, 0x6555: 0x02b2349c, 0x6556: 0x0313c69c, 0x6557: 0x02b2529c,
+-	0x6558: 0x029d489c, 0x6559: 0x02cc409c, 0x655a: 0x02e2429c, 0x655b: 0x02cb329c,
+-	0x655c: 0x02a49a9c, 0x655d: 0x02bf189c, 0x655e: 0x02a31a9c, 0x655f: 0x02cb609c,
+-	0x6560: 0x02a43a9c, 0x6561: 0x02fa849c, 0x6562: 0x02ea3e9c, 0x6563: 0x0319529c,
+-	0x6564: 0x02b1e09c, 0x6565: 0x02a8729c, 0x6566: 0x02de289c, 0x6567: 0x02c52a9c,
+-	0x6568: 0x02c6aa9c, 0x6569: 0x029c009c, 0x656a: 0x029c129c, 0x656b: 0x0320949c,
+-	0x656c: 0x02bbcc9c, 0x656d: 0x029c5a9c, 0x656e: 0x02a7e69c, 0x656f: 0x02c60e9c,
+-	0x6570: 0x031ae09c, 0x6571: 0x02c4a69c, 0x6572: 0x02f3029c, 0x6573: 0x02f4f49c,
+-	0x6574: 0x02a8109c, 0x6575: 0x02dd009c, 0x6576: 0x02ce129c, 0x6577: 0x02ce109c,
+-	0x6578: 0x02ea669c, 0x6579: 0x02a4e49c, 0x657a: 0x02ab6c9c,
+-	// Block 0x196, offset 0x6580
+-	0x6580: 0xf0000404, 0x6581: 0xf0000404, 0x6582: 0xf0000404, 0x6583: 0xf0000404,
+-	0x6584: 0xf0000404, 0x6585: 0xf0000404, 0x6586: 0xf0000404, 0x6587: 0xf0000404,
+-	0x6588: 0xf0000404,
+-	0x6590: 0x02bf2e86, 0x6591: 0x02a7de86,
+-	// Block 0x197, offset 0x65c0
+-	0x65c0: 0x40210420, 0x65c1: 0x40210620, 0x65c2: 0x40210820, 0x65c3: 0x40210a20,
+-	0x65c4: 0x40210c20, 0x65c5: 0x40210e20, 0x65c6: 0x40211020, 0x65c7: 0x40211220,
+-	0x65c8: 0x40211420, 0x65c9: 0x40211620, 0x65ca: 0x40211820, 0x65cb: 0x40211a20,
+-	0x65cc: 0x40211c20, 0x65cd: 0x40211e20, 0x65ce: 0x40212020, 0x65cf: 0x40212220,
+-	0x65d0: 0x40212420, 0x65d1: 0x40212620, 0x65d2: 0x40212820, 0x65d3: 0x40212a20,
+-	0x65d4: 0x40212c20, 0x65d5: 0x40212e20, 0x65d6: 0x40213020, 0x65d7: 0x40213220,
+-	0x65d8: 0x40213420, 0x65d9: 0x40213620, 0x65da: 0x40213820, 0x65db: 0x40213a20,
+-	0x65dc: 0x40213c20, 0x65dd: 0x40213e20, 0x65de: 0x40214020, 0x65df: 0x40214220,
+-	0x65e0: 0x40214420,
+-	0x65f0: 0x40214620, 0x65f1: 0x40214820, 0x65f2: 0x40214a20, 0x65f3: 0x40214c20,
+-	0x65f4: 0x40214e20, 0x65f5: 0x40215020, 0x65f7: 0x40215220,
+-	0x65f8: 0x40215420, 0x65f9: 0x40215620, 0x65fa: 0x40215820, 0x65fb: 0x40215a20,
+-	0x65fc: 0x40215c20, 0x65fd: 0x40215e20, 0x65fe: 0x40216020, 0x65ff: 0x40216220,
+-	// Block 0x198, offset 0x6600
+-	0x6600: 0x40216420, 0x6601: 0x40216620, 0x6602: 0x40216820, 0x6603: 0x40216a20,
+-	0x6604: 0x40216c20, 0x6605: 0x40216e20, 0x6606: 0x40217020, 0x6607: 0x40217220,
+-	0x6608: 0x40217420, 0x6609: 0x40217620, 0x660a: 0x40217820, 0x660b: 0x40217a20,
+-	0x660c: 0x40217c20, 0x660d: 0x40217e20, 0x660e: 0x40218020, 0x660f: 0x40218220,
+-	0x6610: 0x40218420, 0x6611: 0x40218620, 0x6612: 0x40218820, 0x6613: 0x40218a20,
+-	0x6614: 0x40218c20, 0x6615: 0x40218e20, 0x6616: 0x40219020, 0x6617: 0x40219220,
+-	0x6618: 0x40219420, 0x6619: 0x40219620, 0x661a: 0x40219820, 0x661b: 0x40219a20,
+-	0x661c: 0x40219c20, 0x661d: 0x40219e20, 0x661e: 0x4021a020, 0x661f: 0x4021a220,
+-	0x6620: 0x4021a420, 0x6621: 0x4021a620, 0x6622: 0x4021a820, 0x6623: 0x4021aa20,
+-	0x6624: 0x4021ac20, 0x6625: 0x4021ae20, 0x6626: 0x4021b020, 0x6627: 0x4021b220,
+-	0x6628: 0x4021b420, 0x6629: 0x4021b620, 0x662a: 0x4021b820, 0x662b: 0x4021ba20,
+-	0x662c: 0x4021bc20, 0x662d: 0x4021be20, 0x662e: 0x4021c020, 0x662f: 0x4021c220,
+-	0x6630: 0x4021c420, 0x6631: 0x4021c620, 0x6632: 0x4021c820, 0x6633: 0x4021ca20,
+-	0x6634: 0x4021cc20, 0x6635: 0x4021ce20, 0x6636: 0x4021d020, 0x6637: 0x4021d220,
+-	0x6638: 0x4021d420, 0x6639: 0x4021d620, 0x663a: 0x4021d820, 0x663b: 0x4021da20,
+-	0x663c: 0x4021dc20,
+-	// Block 0x199, offset 0x6640
+-	0x6640: 0x4021de20, 0x6641: 0x4021e020, 0x6642: 0x4021e220, 0x6643: 0x4021e420,
+-	0x6644: 0x4021e620, 0x6645: 0x4021e820, 0x6646: 0x4021ea20, 0x6647: 0x4021ec20,
+-	0x6648: 0x4021ee20, 0x6649: 0x4021f020, 0x664a: 0x4021f220, 0x664b: 0x4021f420,
+-	0x664c: 0x4021f620, 0x664d: 0x4021f820, 0x664e: 0x4021fa20, 0x664f: 0x4021fc20,
+-	0x6650: 0x4021fe20, 0x6651: 0x40220020, 0x6652: 0x40220220, 0x6653: 0x40220420,
+-	0x6660: 0x40220620, 0x6661: 0x40220820, 0x6662: 0x40220a20, 0x6663: 0x40220c20,
+-	0x6664: 0x40220e20, 0x6665: 0x40221020, 0x6666: 0x40221220, 0x6667: 0x40221420,
+-	0x6668: 0x40221620, 0x6669: 0x40221820, 0x666a: 0x40221a20, 0x666b: 0x40221c20,
+-	0x666c: 0x40221e20, 0x666d: 0x40222020, 0x666e: 0x40222220, 0x666f: 0x40222420,
+-	0x6670: 0x40222620, 0x6671: 0x40222820, 0x6672: 0x40222a20, 0x6673: 0x40222c20,
+-	0x6674: 0x40222e20, 0x6675: 0x40223020, 0x6676: 0x40223220, 0x6677: 0x40223420,
+-	0x6678: 0x40223620, 0x6679: 0x40223820, 0x667a: 0x40223a20, 0x667b: 0x40223c20,
+-	0x667c: 0x40223e20, 0x667d: 0x40224020, 0x667e: 0x40224220, 0x667f: 0x40224420,
+-	// Block 0x19a, offset 0x6680
+-	0x6680: 0x40224620, 0x6681: 0x40224820, 0x6682: 0x40224a20, 0x6683: 0x40224c20,
+-	0x6684: 0x40224e20, 0x6686: 0x40225020, 0x6687: 0x40225220,
+-	0x6688: 0x40225420, 0x6689: 0x40225620, 0x668a: 0x40225820,
+-	0x66a0: 0x40225a20, 0x66a1: 0x40225c20, 0x66a2: 0x40225e20, 0x66a3: 0x40226020,
+-	0x66a4: 0x40226220, 0x66a5: 0x40226420, 0x66a6: 0x40226620, 0x66a7: 0x40226820,
+-	0x66a8: 0x40226a20, 0x66a9: 0x40226c20, 0x66aa: 0x40226e20, 0x66ab: 0x40227020,
+-	0x66ac: 0x40227220, 0x66ad: 0x40227420, 0x66ae: 0x40227620, 0x66af: 0x40227820,
+-	0x66b0: 0x40227a20,
+-	// Block 0x19b, offset 0x66c0
+-	0x66c0: 0x40227c20, 0x66c1: 0x40227e20, 0x66c2: 0x40228020, 0x66c3: 0x40228220,
+-	0x66c4: 0x40228420, 0x66c5: 0x40228620, 0x66c6: 0x40228820, 0x66c7: 0x40228a20,
+-	0x66c8: 0x40228c20, 0x66c9: 0x40228e20, 0x66ca: 0x40229020, 0x66cb: 0x40229220,
+-	0x66cc: 0x40229420, 0x66cd: 0x40229620, 0x66ce: 0x40229820, 0x66cf: 0x40229a20,
+-	0x66d0: 0x40229c20, 0x66d1: 0x40229e20, 0x66d2: 0x4022a020, 0x66d3: 0x4022a220,
+-	0x66d4: 0x4022a420, 0x66d5: 0x4022a620, 0x66d6: 0x4022a820, 0x66d7: 0x4022aa20,
+-	0x66d8: 0x4022ac20, 0x66d9: 0x4022ae20, 0x66da: 0x4022b020, 0x66db: 0x4022b220,
+-	0x66dc: 0x4022b420, 0x66dd: 0x4022b620, 0x66de: 0x4022b820, 0x66df: 0x4022ba20,
+-	0x66e0: 0x4022bc20, 0x66e1: 0x4022be20, 0x66e2: 0x4022c020, 0x66e3: 0x4022c220,
+-	0x66e4: 0x4022c420, 0x66e5: 0x4022c620, 0x66e6: 0x4022c820, 0x66e7: 0x4022ca20,
+-	0x66e8: 0x4022cc20, 0x66e9: 0x4022ce20, 0x66ea: 0x4022d020, 0x66eb: 0x4022d220,
+-	0x66ec: 0x4022d420, 0x66ed: 0x4022d620, 0x66ee: 0x4022d820, 0x66ef: 0x4022da20,
+-	0x66f0: 0x4022dc20, 0x66f1: 0x4022de20, 0x66f2: 0x4022e020, 0x66f3: 0x4022e220,
+-	0x66f4: 0x4022e420, 0x66f5: 0x4022e620, 0x66f6: 0x4022e820, 0x66f7: 0x4022ea20,
+-	0x66f8: 0x4022ec20, 0x66f9: 0x4022ee20, 0x66fa: 0x4022f020, 0x66fb: 0x4022f220,
+-	0x66fc: 0x4022f420, 0x66fd: 0x4022f620, 0x66fe: 0x4022f820,
+-	// Block 0x19c, offset 0x6700
+-	0x6700: 0x4022fa20, 0x6702: 0x4022fc20, 0x6703: 0x4022fe20,
+-	0x6704: 0x40230020, 0x6705: 0x40230220, 0x6706: 0x40230420, 0x6707: 0x40230620,
+-	0x6708: 0x40230820, 0x6709: 0x40230a20, 0x670a: 0x40230c20, 0x670b: 0x40230e20,
+-	0x670c: 0x40231020, 0x670d: 0x40231220, 0x670e: 0x40231420, 0x670f: 0x40231620,
+-	0x6710: 0x40231820, 0x6711: 0x40231a20, 0x6712: 0x40231c20, 0x6713: 0x40231e20,
+-	0x6714: 0x40232020, 0x6715: 0x40232220, 0x6716: 0x40232420, 0x6717: 0x40232620,
+-	0x6718: 0x40232820, 0x6719: 0x40232a20, 0x671a: 0x40232c20, 0x671b: 0x40232e20,
+-	0x671c: 0x40233020, 0x671d: 0x40233220, 0x671e: 0x40233420, 0x671f: 0x40233620,
+-	0x6720: 0x40233820, 0x6721: 0x40233a20, 0x6722: 0x40233c20, 0x6723: 0x40233e20,
+-	0x6724: 0x40234020, 0x6725: 0x40234220, 0x6726: 0x40234420, 0x6727: 0x40234620,
+-	0x6728: 0x40234820, 0x6729: 0x40234a20, 0x672a: 0x40234c20, 0x672b: 0x40234e20,
+-	0x672c: 0x40235020, 0x672d: 0x40235220, 0x672e: 0x40235420, 0x672f: 0x40235620,
+-	0x6730: 0x40235820, 0x6731: 0x40235a20, 0x6732: 0x40235c20, 0x6733: 0x40235e20,
+-	0x6734: 0x40236020, 0x6735: 0x40236220, 0x6736: 0x40236420, 0x6737: 0x40236620,
+-	0x6738: 0x40236820, 0x6739: 0x40236a20, 0x673a: 0x40236c20, 0x673b: 0x40236e20,
+-	0x673c: 0x40237020, 0x673d: 0x40237220, 0x673e: 0x40237420, 0x673f: 0x40237620,
+-	// Block 0x19d, offset 0x6740
+-	0x6740: 0x40237820, 0x6741: 0x40237a20, 0x6742: 0x40237c20, 0x6743: 0x40237e20,
+-	0x6744: 0x40238020, 0x6745: 0x40238220, 0x6746: 0x40238420, 0x6747: 0x40238620,
+-	0x6748: 0x40238820, 0x6749: 0x40238a20, 0x674a: 0x40238c20, 0x674b: 0x40238e20,
+-	0x674c: 0x40239020, 0x674d: 0x40239220, 0x674e: 0x40239420, 0x674f: 0x40239620,
+-	0x6750: 0x40239820, 0x6751: 0x40239a20, 0x6752: 0x40239c20, 0x6753: 0x40239e20,
+-	0x6754: 0x4023a020, 0x6755: 0x4023a220, 0x6756: 0x4023a420, 0x6757: 0x4023a620,
+-	0x6758: 0x4023a820, 0x6759: 0x4023aa20, 0x675a: 0x4023ac20, 0x675b: 0x4023ae20,
+-	0x675c: 0x4023b020, 0x675d: 0x4023b220, 0x675e: 0x4023b420, 0x675f: 0x4023b620,
+-	0x6760: 0x4023b820, 0x6761: 0x4023ba20, 0x6762: 0x4023bc20, 0x6763: 0x4023be20,
+-	0x6764: 0x4023c020, 0x6765: 0x4023c220, 0x6766: 0x4023c420, 0x6767: 0x4023c620,
+-	0x6768: 0x4023c820, 0x6769: 0x4023ca20, 0x676a: 0x4023cc20, 0x676b: 0x4023ce20,
+-	0x676c: 0x4023d020, 0x676d: 0x4023d220, 0x676e: 0x4023d420, 0x676f: 0x4023d620,
+-	0x6770: 0x4023d820, 0x6771: 0x4023da20, 0x6772: 0x4023dc20, 0x6773: 0x4023de20,
+-	0x6774: 0x4023e020, 0x6775: 0x4023e220, 0x6776: 0x4023e420, 0x6777: 0x4023e620,
+-	0x6778: 0x4023e820, 0x6779: 0x4023ea20, 0x677a: 0x4023ec20, 0x677b: 0x4023ee20,
+-	0x677c: 0x4023f020, 0x677d: 0x4023f220, 0x677e: 0x4023f420, 0x677f: 0x4023f620,
+-	// Block 0x19e, offset 0x6780
+-	0x6780: 0x4023f820, 0x6781: 0x4023fa20, 0x6782: 0x4023fc20, 0x6783: 0x4023fe20,
+-	0x6784: 0x40240020, 0x6785: 0x40240220, 0x6786: 0x40240420, 0x6787: 0x40240620,
+-	0x6788: 0x40240820, 0x6789: 0x40240a20, 0x678a: 0x40240c20, 0x678b: 0x40240e20,
+-	0x678c: 0x40241020, 0x678d: 0x40241220, 0x678e: 0x40241420, 0x678f: 0x40241620,
+-	0x6790: 0x40241820, 0x6791: 0x40241a20, 0x6792: 0x40241c20, 0x6793: 0x40241e20,
+-	0x6794: 0x40242020, 0x6795: 0x40242220, 0x6796: 0x40242420, 0x6797: 0x40242620,
+-	0x6798: 0x40242820, 0x6799: 0x40242a20, 0x679a: 0x40242c20, 0x679b: 0x40242e20,
+-	0x679c: 0x40243020, 0x679d: 0x40243220, 0x679e: 0x40243420, 0x679f: 0x40243620,
+-	0x67a0: 0x40243820, 0x67a1: 0x40243a20, 0x67a2: 0x40243c20, 0x67a3: 0x40243e20,
+-	0x67a4: 0x40244020, 0x67a5: 0x40244220, 0x67a6: 0x40244420, 0x67a7: 0x40244620,
+-	0x67a8: 0x40244820, 0x67a9: 0x40244a20, 0x67aa: 0x40244c20, 0x67ab: 0x40244e20,
+-	0x67ac: 0x40245020, 0x67ad: 0x40245220, 0x67ae: 0x40245420, 0x67af: 0x40245620,
+-	0x67b0: 0x40245820, 0x67b1: 0x40245a20, 0x67b2: 0x40245c20, 0x67b3: 0x40245e20,
+-	0x67b4: 0x40246020, 0x67b5: 0x40246220, 0x67b6: 0x40246420, 0x67b7: 0x40246620,
+-	0x67b9: 0x40246820, 0x67ba: 0x40246a20, 0x67bb: 0x40246c20,
+-	0x67bc: 0x40246e20,
+-	// Block 0x19f, offset 0x67c0
+-	0x67c0: 0x40247020, 0x67c1: 0x40247220, 0x67c2: 0x40247420, 0x67c3: 0x40247620,
+-	0x67c4: 0x40247820, 0x67c5: 0x40247a20, 0x67c6: 0x40247c20, 0x67c7: 0x40247e20,
+-	0x67c8: 0x40248020, 0x67c9: 0x40248220, 0x67ca: 0x40248420, 0x67cb: 0x40248620,
+-	0x67cc: 0x40248820, 0x67cd: 0x40248a20, 0x67ce: 0x40248c20, 0x67cf: 0x40248e20,
+-	0x67d0: 0x40249020, 0x67d1: 0x40249220, 0x67d2: 0x40249420, 0x67d3: 0x40249620,
+-	0x67d4: 0x40249820, 0x67d5: 0x40249a20, 0x67d6: 0x40249c20, 0x67d7: 0x40249e20,
+-	0x67d8: 0x4024a020, 0x67d9: 0x4024a220, 0x67da: 0x4024a420, 0x67db: 0x4024a620,
+-	0x67dc: 0x4024a820, 0x67dd: 0x4024aa20, 0x67de: 0x4024ac20, 0x67df: 0x4024ae20,
+-	0x67e0: 0x4024b020, 0x67e1: 0x4024b220, 0x67e2: 0x4024b420, 0x67e3: 0x4024b620,
+-	0x67e4: 0x4024b820, 0x67e5: 0x4024ba20, 0x67e6: 0x4024bc20, 0x67e7: 0x4024be20,
+-	0x67e8: 0x4024c020, 0x67e9: 0x4024c220, 0x67ea: 0x4024c420, 0x67eb: 0x4024c620,
+-	0x67ec: 0x4024c820, 0x67ed: 0x4024ca20, 0x67ee: 0x4024cc20, 0x67ef: 0x4024ce20,
+-	0x67f0: 0x4024d020, 0x67f1: 0x4024d220, 0x67f2: 0x4024d420, 0x67f3: 0x4024d620,
+-	0x67f4: 0x4024d820, 0x67f5: 0x4024da20, 0x67f6: 0x4024dc20, 0x67f7: 0x4024de20,
+-	0x67f8: 0x4024e020, 0x67f9: 0x4024e220, 0x67fa: 0x4024e420, 0x67fb: 0x4024e620,
+-	0x67fc: 0x4024e820, 0x67fd: 0x4024ea20,
+-	// Block 0x1a0, offset 0x6800
+-	0x6800: 0x4024ec20, 0x6801: 0x4024ee20, 0x6802: 0x4024f020, 0x6803: 0x4024f220,
+-	0x6810: 0x4024f420, 0x6811: 0x4024f620, 0x6812: 0x4024f820, 0x6813: 0x4024fa20,
+-	0x6814: 0x4024fc20, 0x6815: 0x4024fe20, 0x6816: 0x40250020, 0x6817: 0x40250220,
+-	0x6818: 0x40250420, 0x6819: 0x40250620, 0x681a: 0x40250820, 0x681b: 0x40250a20,
+-	0x681c: 0x40250c20, 0x681d: 0x40250e20, 0x681e: 0x40251020, 0x681f: 0x40251220,
+-	0x6820: 0x40251420, 0x6821: 0x40251620, 0x6822: 0x40251820, 0x6823: 0x40251a20,
+-	0x6824: 0x40251c20, 0x6825: 0x40251e20, 0x6826: 0x40252020, 0x6827: 0x40252220,
+-	// Block 0x1a1, offset 0x6840
+-	0x687b: 0x40252420,
+-	0x687c: 0x40252620, 0x687d: 0x40252820, 0x687e: 0x40252a20, 0x687f: 0x40252c20,
+-	// Block 0x1a2, offset 0x6880
+-	0x6880: 0x40252e20, 0x6881: 0x40253020, 0x6882: 0x40253220, 0x6883: 0x40253420,
+-	0x6884: 0x40253620, 0x6885: 0x40253820, 0x6886: 0x40253a20, 0x6887: 0x40253c20,
+-	0x6888: 0x40253e20, 0x6889: 0x40254020, 0x688a: 0x40254220, 0x688b: 0x40254420,
+-	0x688c: 0x40254620, 0x688d: 0x40254820, 0x688e: 0x40254a20, 0x688f: 0x40254c20,
+-	0x6890: 0x40254e20, 0x6891: 0x40255020, 0x6892: 0x40255220, 0x6893: 0x40255420,
+-	0x6894: 0x40255620, 0x6895: 0x40255820, 0x6896: 0x40255a20, 0x6897: 0x40255c20,
+-	0x6898: 0x40255e20, 0x6899: 0x40256020, 0x689a: 0x40256220, 0x689b: 0x40256420,
+-	0x689c: 0x40256620, 0x689d: 0x40256820, 0x689e: 0x40256a20, 0x689f: 0x40256c20,
+-	0x68a0: 0x40256e20, 0x68a1: 0x40257020, 0x68a2: 0x40257220, 0x68a3: 0x40257420,
+-	0x68a4: 0x40257620, 0x68a5: 0x40257820, 0x68a6: 0x40257a20, 0x68a7: 0x40257c20,
+-	0x68a8: 0x40257e20, 0x68a9: 0x40258020, 0x68aa: 0x40258220, 0x68ab: 0x40258420,
+-	0x68ac: 0x40258620, 0x68ad: 0x40258820, 0x68ae: 0x40258a20, 0x68af: 0x40258c20,
+-	0x68b0: 0x40258e20, 0x68b1: 0x40259020, 0x68b2: 0x40259220, 0x68b3: 0x40259420,
+-	0x68b4: 0x40259620, 0x68b5: 0x40259820, 0x68b6: 0x40259a20, 0x68b7: 0x40259c20,
+-	0x68b8: 0x40259e20, 0x68b9: 0x4025a020, 0x68ba: 0x4025a220, 0x68bb: 0x4025a420,
+-	0x68bc: 0x4025a620, 0x68bd: 0x4025a820, 0x68be: 0x4025aa20, 0x68bf: 0x4025ac20,
+-	// Block 0x1a3, offset 0x68c0
+-	0x68c0: 0x4025ae20,
+-	0x68c5: 0x4025b020, 0x68c6: 0x4025b220, 0x68c7: 0x4025b420,
+-	0x68c8: 0x4025b620, 0x68c9: 0x4025b820, 0x68ca: 0x4025ba20, 0x68cb: 0x4025bc20,
+-	0x68cc: 0x4025be20, 0x68cd: 0x4025c020, 0x68ce: 0x4025c220, 0x68cf: 0x4025c420,
+-	// Block 0x1a4, offset 0x6900
+-	0x6900: 0x4025c620, 0x6901: 0x4025c820, 0x6902: 0x4025ca20, 0x6903: 0x4025cc20,
+-	0x6904: 0x4025ce20, 0x6905: 0x4025d020, 0x6906: 0x4025d220, 0x6907: 0x4025d420,
+-	0x6908: 0x4025d620, 0x6909: 0x4025d820, 0x690a: 0x4025da20, 0x690b: 0x4025dc20,
+-	0x690c: 0x4025de20, 0x690d: 0x4025e020, 0x690e: 0x4025e220, 0x690f: 0x4025e420,
+-	0x6910: 0x4025e620, 0x6911: 0x4025e820, 0x6912: 0x4025ea20, 0x6913: 0x4025ec20,
+-	0x6914: 0x4025ee20, 0x6915: 0x4025f020, 0x6916: 0x4025f220, 0x6917: 0x4025f420,
+-	0x6918: 0x4025f620, 0x6919: 0x4025f820, 0x691a: 0x4025fa20, 0x691b: 0x4025fc20,
+-	0x691c: 0x4025fe20, 0x691d: 0x40260020, 0x691e: 0x40260220, 0x691f: 0x40260420,
+-	0x6920: 0x40260620, 0x6921: 0x40260820, 0x6922: 0x40260a20, 0x6923: 0x40260c20,
+-	0x6924: 0x40260e20, 0x6925: 0x40261020, 0x6926: 0x40261220, 0x6927: 0x40261420,
+-	0x6928: 0x40261620, 0x6929: 0x40261820, 0x692a: 0x40261a20, 0x692b: 0x40261c20,
+-	0x692c: 0x40261e20, 0x692d: 0x40262020, 0x692e: 0x40262220, 0x692f: 0x40262420,
+-	0x6930: 0x40262620, 0x6931: 0x40262820, 0x6932: 0x40262a20, 0x6933: 0x40262c20,
+-	0x6934: 0x40262e20, 0x6935: 0x40263020, 0x6936: 0x40263220, 0x6937: 0x40263420,
+-	0x6938: 0x40263620, 0x6939: 0x40263820, 0x693a: 0x40263a20, 0x693b: 0x40263c20,
+-	0x693c: 0x40263e20, 0x693d: 0x40264020, 0x693e: 0x40264220, 0x693f: 0x40264420,
+-	// Block 0x1a5, offset 0x6940
+-	0x6940: 0x40264620, 0x6941: 0x40264820, 0x6942: 0x40264a20, 0x6943: 0x40264c20,
+-	0x6944: 0x40264e20, 0x6945: 0x40265020,
+-	// Block 0x1a6, offset 0x6980
+-	0x6980: 0x40265220, 0x6981: 0x40265420, 0x6982: 0x40265620, 0x6983: 0x40265820,
+-	0x6984: 0x40265a20, 0x6985: 0x40265c20, 0x6986: 0x40265e20, 0x6987: 0x40266020,
+-	0x6988: 0x40266220, 0x6989: 0x40266420, 0x698a: 0x40266620, 0x698b: 0x40266820,
+-	0x698c: 0x40266a20, 0x698d: 0x40266c20, 0x698e: 0x40266e20, 0x698f: 0x40267020,
+-	0x6990: 0x40267220, 0x6991: 0x40267420, 0x6992: 0x40267620, 0x6993: 0x40267820,
+-	0x6994: 0x40267a20, 0x6995: 0x40267c20, 0x6996: 0x40267e20, 0x6997: 0x40268020,
+-	0x6998: 0x40268220, 0x6999: 0x40268420, 0x699a: 0x40268620, 0x699b: 0x40268820,
+-	0x699c: 0x40268a20, 0x699d: 0x40268c20, 0x699e: 0x40268e20, 0x699f: 0x40269020,
+-	0x69a0: 0x40269220, 0x69a1: 0x40269420, 0x69a2: 0x40269620, 0x69a3: 0x40269820,
+-	0x69a4: 0x40269a20, 0x69a5: 0x40269c20, 0x69a6: 0x40269e20, 0x69a7: 0x4026a020,
+-	0x69a8: 0x4026a220, 0x69a9: 0x4026a420, 0x69aa: 0x4026a620, 0x69ab: 0x4026a820,
+-	0x69ac: 0x4026aa20, 0x69ad: 0x4026ac20, 0x69ae: 0x4026ae20, 0x69af: 0x4026b020,
+-	0x69b0: 0x4026b220, 0x69b1: 0x4026b420, 0x69b2: 0x4026b620, 0x69b3: 0x4026b820,
+-	0x69b4: 0x4026ba20, 0x69b5: 0x4026bc20, 0x69b6: 0x4026be20, 0x69b7: 0x4026c020,
+-	0x69b8: 0x4026c220, 0x69b9: 0x4026c420, 0x69ba: 0x4026c620, 0x69bb: 0x4026c820,
+-	0x69bc: 0x4026ca20, 0x69bd: 0x4026cc20, 0x69be: 0x4026ce20, 0x69bf: 0x4026d020,
+-	// Block 0x1a7, offset 0x69c0
+-	0x69c0: 0x4026d220, 0x69c1: 0x4026d420, 0x69c2: 0x4026d620, 0x69c3: 0x4026d820,
+-	0x69c4: 0x4026da20, 0x69c5: 0x4026dc20, 0x69c6: 0x4026de20, 0x69c7: 0x4026e020,
+-	0x69c8: 0x4026e220, 0x69c9: 0x4026e420, 0x69ca: 0x4026e620, 0x69cb: 0x4026e820,
+-	0x69cc: 0x4026ea20, 0x69cd: 0x4026ec20, 0x69ce: 0x4026ee20, 0x69cf: 0x4026f020,
+-	0x69d0: 0x4026f220, 0x69d1: 0x4026f420, 0x69d2: 0x4026f620, 0x69d3: 0x4026f820,
+-	0x69d4: 0x4026fa20, 0x69d5: 0x4026fc20, 0x69d6: 0x4026fe20, 0x69d7: 0x40270020,
+-	0x69d8: 0x40270220, 0x69d9: 0x40270420, 0x69da: 0x40270620, 0x69db: 0x40270820,
+-	0x69dc: 0x40270a20, 0x69dd: 0x40270c20, 0x69de: 0x40270e20, 0x69df: 0x40271020,
+-	0x69e0: 0x40271220, 0x69e1: 0x40271420, 0x69e2: 0x40271620, 0x69e3: 0x40271820,
+-	0x69e4: 0x40271a20, 0x69e5: 0x40271c20, 0x69e6: 0x40271e20, 0x69e7: 0x40272020,
+-	0x69e8: 0x40272220, 0x69e9: 0x40272420, 0x69ea: 0x40272620, 0x69eb: 0x40272820,
+-	0x69ec: 0x40272a20, 0x69ed: 0x40272c20, 0x69ee: 0x40272e20, 0x69ef: 0x40273020,
+-	0x69f0: 0x40273220, 0x69f1: 0x40273420, 0x69f2: 0x40273620, 0x69f3: 0x40273820,
+-	// Block 0x1a8, offset 0x6a00
+-	0x6a00: 0x429c7a20, 0x6a01: 0x429c7020, 0x6a02: 0x429c8220, 0x6a03: 0x48024420,
+-	0x6a04: 0x429ec020, 0x6a05: 0x429f5c20, 0x6a06: 0x429f7620, 0x6a07: 0x42a00420,
+-	0x6a08: 0x42a0f420, 0x6a09: 0x42a13220, 0x6a0a: 0x42a1ce20, 0x6a0b: 0x42a19e20,
+-	0x6a0c: 0x44693c20, 0x6a0d: 0x480c7420, 0x6a0e: 0x42a29a20, 0x6a0f: 0x42a2a820,
+-	0x6a10: 0x42a2c820, 0x6a11: 0x42a2ee20, 0x6a12: 0x480a3820, 0x6a13: 0x44697220,
+-	0x6a14: 0x42a2ce20, 0x6a15: 0x42a31a20, 0x6a16: 0x480a9620, 0x6a17: 0x42a32e20,
+-	0x6a18: 0x42a34820, 0x6a19: 0x429d9820, 0x6a1a: 0x42a35820, 0x6a1b: 0x42a36a20,
+-	0x6a1c: 0x4923be20, 0x6a1d: 0x42a3ea20, 0x6a1e: 0x42a40620, 0x6a1f: 0x4469be20,
+-	0x6a20: 0x42a47620, 0x6a21: 0x42a48c20, 0x6a22: 0x42a4e420, 0x6a23: 0x42a4ee20,
+-	0x6a24: 0x446a2a20, 0x6a25: 0x42a58e20, 0x6a26: 0x42a59220, 0x6a27: 0x42a5c820,
+-	0x6a28: 0x42a5f420, 0x6a29: 0x42a60a20, 0x6a2a: 0x42a60c20, 0x6a2b: 0x42a62e20,
+-	0x6a2c: 0x42a69220, 0x6a2d: 0x42a6a220, 0x6a2e: 0x42a6b420, 0x6a2f: 0x42a6e620,
+-	0x6a30: 0x42a6fa20, 0x6a31: 0x42a6fe20, 0x6a32: 0x42a6fe20, 0x6a33: 0x42a6fe20,
+-	0x6a34: 0x48145820, 0x6a35: 0x42e0e020, 0x6a36: 0x42a79420, 0x6a37: 0x42a7be20,
+-	0x6a38: 0x4816c620, 0x6a39: 0x42a7d620, 0x6a3a: 0x42a7e220, 0x6a3b: 0x42a80c20,
+-	0x6a3c: 0x42a93c20, 0x6a3d: 0x42a87020, 0x6a3e: 0x42a89020, 0x6a3f: 0x42a8d020,
+-	// Block 0x1a9, offset 0x6a40
+-	0x6a40: 0x42a94420, 0x6a41: 0x42a9ec20, 0x6a42: 0x42aa2020, 0x6a43: 0x42aaa620,
+-	0x6a44: 0x42aac620, 0x6a45: 0x42ab0820, 0x6a46: 0x42ab0820, 0x6a47: 0x42ab3220,
+-	0x6a48: 0x42ab5620, 0x6a49: 0x42ab6620, 0x6a4a: 0x42ab8420, 0x6a4b: 0x42ae2c20,
+-	0x6a4c: 0x42ac0c20, 0x6a4d: 0x42ae2e20, 0x6a4e: 0x42aca220, 0x6a4f: 0x42ace820,
+-	0x6a50: 0x42a40e20, 0x6a51: 0x42b1dc20, 0x6a52: 0x42af9c20, 0x6a53: 0x42afe820,
+-	0x6a54: 0x42b01a20, 0x6a55: 0x42af1620, 0x6a56: 0x42b06420, 0x6a57: 0x42b06220,
+-	0x6a58: 0x42b15820, 0x6a59: 0x4829c820, 0x6a5a: 0x42b1e420, 0x6a5b: 0x42b1ee20,
+-	0x6a5c: 0x42b20c20, 0x6a5d: 0x42b23420, 0x6a5e: 0x42b24420, 0x6a5f: 0x42b2c420,
+-	0x6a60: 0x482d5020, 0x6a61: 0x482dd420, 0x6a62: 0x42b3d820, 0x6a63: 0x42b43620,
+-	0x6a64: 0x42b44e20, 0x6a65: 0x42b3b020, 0x6a66: 0x42b4cc20, 0x6a67: 0x446ddc20,
+-	0x6a68: 0x446df820, 0x6a69: 0x42b61020, 0x6a6a: 0x42b67c20, 0x6a6b: 0x42b67c20,
+-	0x6a6c: 0x48339020, 0x6a6d: 0x42b78620, 0x6a6e: 0x42b7b020, 0x6a6f: 0x42b7ce20,
+-	0x6a70: 0x42b7e620, 0x6a71: 0x48363020, 0x6a72: 0x42b7fe20, 0x6a73: 0x42b80c20,
+-	0x6a74: 0x42bea620, 0x6a75: 0x42b84420, 0x6a76: 0x446f0220, 0x6a77: 0x42b8c020,
+-	0x6a78: 0x42b8dc20, 0x6a79: 0x42b98020, 0x6a7a: 0x42b91a20, 0x6a7b: 0x483bc820,
+-	0x6a7c: 0x42ba8620, 0x6a7d: 0x483bcc20, 0x6a7e: 0x42badc20, 0x6a7f: 0x42bad620,
+-	// Block 0x1aa, offset 0x6a80
+-	0x6a80: 0x42baf820, 0x6a81: 0x42bbc220, 0x6a82: 0x42bbc420, 0x6a83: 0x44705e20,
+-	0x6a84: 0x42bbfa20, 0x6a85: 0x42bc5020, 0x6a86: 0x42bc7a20, 0x6a87: 0x42bcd220,
+-	0x6a88: 0x4470c420, 0x6a89: 0x48430620, 0x6a8a: 0x4470f820, 0x6a8b: 0x42bd6020,
+-	0x6a8c: 0x42bd6620, 0x6a8d: 0x42bd6c20, 0x6a8e: 0x42bd9420, 0x6a8f: 0x49472420,
+-	0x6a90: 0x42bdfc20, 0x6a91: 0x48466220, 0x6a92: 0x48466220, 0x6a93: 0x43040220,
+-	0x6a94: 0x42be4420, 0x6a95: 0x42be4420, 0x6a96: 0x44718e20, 0x6a97: 0x48657020,
+-	0x6a98: 0x48c3b420, 0x6a99: 0x42bec420, 0x6a9a: 0x42bed620, 0x6a9b: 0x4471c620,
+-	0x6a9c: 0x42bf3420, 0x6a9d: 0x42bf9a20, 0x6a9e: 0x42bfae20, 0x6a9f: 0x42bff220,
+-	0x6aa0: 0x42c10220, 0x6aa1: 0x44727420, 0x6aa2: 0x44723820, 0x6aa3: 0x42c12820,
+-	0x6aa4: 0x484da820, 0x6aa5: 0x42c18e20, 0x6aa6: 0x42c29020, 0x6aa7: 0x42c29820,
+-	0x6aa8: 0x42c29c20, 0x6aa9: 0x42c29820, 0x6aaa: 0x42c2f420, 0x6aab: 0x42c31c20,
+-	0x6aac: 0x42c36420, 0x6aad: 0x42c34820, 0x6aae: 0x42c35e20, 0x6aaf: 0x42c3bc20,
+-	0x6ab0: 0x42c3e420, 0x6ab1: 0x42c3ec20, 0x6ab2: 0x42c42020, 0x6ab3: 0x42c43620,
+-	0x6ab4: 0x42c4ba20, 0x6ab5: 0x42c56220, 0x6ab6: 0x42c5a820, 0x6ab7: 0x42c6a020,
+-	0x6ab8: 0x48561820, 0x6ab9: 0x42c67a20, 0x6aba: 0x42c5f820, 0x6abb: 0x42c6d020,
+-	0x6abc: 0x42c70620, 0x6abd: 0x42c7c820, 0x6abe: 0x4857e220, 0x6abf: 0x42c84420,
+-	// Block 0x1ab, offset 0x6ac0
+-	0x6ac0: 0x42c78a20, 0x6ac1: 0x42c75220, 0x6ac2: 0x44745c20, 0x6ac3: 0x42c8d220,
+-	0x6ac4: 0x42c8fc20, 0x6ac5: 0x42c93a20, 0x6ac6: 0x42c8ee20, 0x6ac7: 0x4474d820,
+-	0x6ac8: 0x42ca9e20, 0x6ac9: 0x42cad820, 0x6aca: 0x48601420, 0x6acb: 0x42cbc620,
+-	0x6acc: 0x42cdf020, 0x6acd: 0x42cc9220, 0x6ace: 0x44763220, 0x6acf: 0x42cd2220,
+-	0x6ad0: 0x44761020, 0x6ad1: 0x4475c820, 0x6ad2: 0x42a32420, 0x6ad3: 0x42a32a20,
+-	0x6ad4: 0x42ce0020, 0x6ad5: 0x42cd3820, 0x6ad6: 0x43015a20, 0x6ad7: 0x4487b220,
+-	0x6ad8: 0x42ce2e20, 0x6ad9: 0x42ce3620, 0x6ada: 0x42ce4220, 0x6adb: 0x42cebc20,
+-	0x6adc: 0x42cea620, 0x6add: 0x48678620, 0x6ade: 0x44769220, 0x6adf: 0x42cff420,
+-	0x6ae0: 0x42cf0a20, 0x6ae1: 0x42d0a420, 0x6ae2: 0x42d10a20, 0x6ae3: 0x4868da20,
+-	0x6ae4: 0x42d11c20, 0x6ae5: 0x42d03e20, 0x6ae6: 0x42d22820, 0x6ae7: 0x44773a20,
+-	0x6ae8: 0x42d28420, 0x6ae9: 0x42d34620, 0x6aea: 0x42d3d420, 0x6aeb: 0x42d55020,
+-	0x6aec: 0x486d4620, 0x6aed: 0x42d5b620, 0x6aee: 0x44783020, 0x6aef: 0x42d64220,
+-	0x6af0: 0x48714e20, 0x6af1: 0x42d6a820, 0x6af2: 0x44789c20, 0x6af3: 0x42d6e420,
+-	0x6af4: 0x42d73e20, 0x6af5: 0x42d77420, 0x6af6: 0x42d77620, 0x6af7: 0x48751a20,
+-	0x6af8: 0x483a1620, 0x6af9: 0x4875f420, 0x6afa: 0x42d89c20, 0x6afb: 0x48797820,
+-	0x6afc: 0x42d97e20, 0x6afd: 0x42d99a20, 0x6afe: 0x42d8ce20, 0x6aff: 0x42da2c20,
+-	// Block 0x1ac, offset 0x6b00
+-	0x6b00: 0x42da7c20, 0x6b01: 0x42daee20, 0x6b02: 0x42da8220, 0x6b03: 0x42dad220,
+-	0x6b04: 0x42daf020, 0x6b05: 0x42db0a20, 0x6b06: 0x487a3c20, 0x6b07: 0x42da6820,
+-	0x6b08: 0x42dc5e20, 0x6b09: 0x42dcdc20, 0x6b0a: 0x447a6620, 0x6b0b: 0x42dd9620,
+-	0x6b0c: 0x42dd8e20, 0x6b0d: 0x487da220, 0x6b0e: 0x42dbf220, 0x6b0f: 0x42dedc20,
+-	0x6b10: 0x487ebc20, 0x6b11: 0x487f1c20, 0x6b12: 0x42df8c20, 0x6b13: 0x42e07220,
+-	0x6b14: 0x42e03c20, 0x6b15: 0x42e03620, 0x6b16: 0x447b2c20, 0x6b17: 0x42e09420,
+-	0x6b18: 0x42e0fa20, 0x6b19: 0x42e0ee20, 0x6b1a: 0x42e15a20, 0x6b1b: 0x480a4a20,
+-	0x6b1c: 0x42e28a20, 0x6b1d: 0x4884c620, 0x6b1e: 0x42e33820, 0x6b1f: 0x48875620,
+-	0x6b20: 0x42e45020, 0x6b21: 0x42e46a20, 0x6b22: 0x42e4a020, 0x6b23: 0x488c1020,
+-	0x6b24: 0x42e50020, 0x6b25: 0x42e52a20, 0x6b26: 0x488e6a20, 0x6b27: 0x48902820,
+-	0x6b28: 0x42e6f420, 0x6b29: 0x42e71620, 0x6b2a: 0x447d5820, 0x6b2b: 0x42e74a20,
+-	0x6b2c: 0x447d7020, 0x6b2d: 0x447d7020, 0x6b2e: 0x42e88e20, 0x6b2f: 0x42e8b820,
+-	0x6b30: 0x42e8e220, 0x6b31: 0x42e90a20, 0x6b32: 0x42e99420, 0x6b33: 0x447e3620,
+-	0x6b34: 0x42ea4820, 0x6b35: 0x48986c20, 0x6b36: 0x42ea7c20, 0x6b37: 0x48992420,
+-	0x6b38: 0x42eae020, 0x6b39: 0x48433e20, 0x6b3a: 0x42ec2020, 0x6b3b: 0x489f4220,
+-	0x6b3c: 0x489f7020, 0x6b3d: 0x48a08820, 0x6b3e: 0x447ff820, 0x6b3f: 0x44801020,
+-	// Block 0x1ad, offset 0x6b40
+-	0x6b40: 0x42ede820, 0x6b41: 0x48a1e620, 0x6b42: 0x48a1e420, 0x6b43: 0x48a23220,
+-	0x6b44: 0x48a26620, 0x6b45: 0x42ee3c20, 0x6b46: 0x42ee3e20, 0x6b47: 0x42ee3e20,
+-	0x6b48: 0x42ee9420, 0x6b49: 0x44807220, 0x6b4a: 0x42ef1620, 0x6b4b: 0x44808c20,
+-	0x6b4c: 0x44812c20, 0x6b4d: 0x48a83a20, 0x6b4e: 0x42f09c20, 0x6b4f: 0x42f11820,
+-	0x6b50: 0x42f19820, 0x6b51: 0x4481c620, 0x6b52: 0x48ac4c20, 0x6b53: 0x42f2ac20,
+-	0x6b54: 0x48ad3420, 0x6b55: 0x48ad8a20, 0x6b56: 0x42f31e20, 0x6b57: 0x42f3d620,
+-	0x6b58: 0x44825e20, 0x6b59: 0x42f48020, 0x6b5a: 0x42f49420, 0x6b5b: 0x42f49e20,
+-	0x6b5c: 0x48b2f820, 0x6b5d: 0x48b54e20, 0x6b5e: 0x48b54e20, 0x6b5f: 0x42f5dc20,
+-	0x6b60: 0x44840420, 0x6b61: 0x48b75620, 0x6b62: 0x42f78c20, 0x6b63: 0x42f79220,
+-	0x6b64: 0x44844e20, 0x6b65: 0x48b90020, 0x6b66: 0x42f9a420, 0x6b67: 0x44854020,
+-	0x6b68: 0x42f9d020, 0x6b69: 0x42f9c620, 0x6b6a: 0x42fa0020, 0x6b6b: 0x48bf0c20,
+-	0x6b6c: 0x42fac620, 0x6b6d: 0x44860220, 0x6b6e: 0x42fb8e20, 0x6b6f: 0x42fc0420,
+-	0x6b70: 0x42fc8a20, 0x6b71: 0x44866820, 0x6b72: 0x48c45020, 0x6b73: 0x48c48e20,
+-	0x6b74: 0x4486b220, 0x6b75: 0x48c5b220, 0x6b76: 0x42fef420, 0x6b77: 0x48c67c20,
+-	0x6b78: 0x42ff2a20, 0x6b79: 0x42fff420, 0x6b7a: 0x43000a20, 0x6b7b: 0x48c9b420,
+-	0x6b7c: 0x48ca4620, 0x6b7d: 0x4300c020, 0x6b7e: 0x48cb5020, 0x6b7f: 0x4300e020,
+-	// Block 0x1ae, offset 0x6b80
+-	0x6b80: 0x4866be20, 0x6b81: 0x4487aa20, 0x6b82: 0x43016420, 0x6b83: 0x43020620,
+-	0x6b84: 0x44881620, 0x6b85: 0x43027c20, 0x6b86: 0x42b56a20, 0x6b87: 0x48cf4e20,
+-	0x6b88: 0x48cf6a20, 0x6b89: 0x48672620, 0x6b8a: 0x48673820, 0x6b8b: 0x43040220,
+-	0x6b8c: 0x43040820, 0x6b8d: 0x431f3c20, 0x6b8e: 0x4488d620, 0x6b8f: 0x43052220,
+-	0x6b90: 0x43051620, 0x6b91: 0x43053a20, 0x6b92: 0x42a56620, 0x6b93: 0x43056220,
+-	0x6b94: 0x43056620, 0x6b95: 0x43057a20, 0x6b96: 0x4305cc20, 0x6b97: 0x48d67820,
+-	0x6b98: 0x4305ca20, 0x6b99: 0x43063a20, 0x6b9a: 0x4306c620, 0x6b9b: 0x43075a20,
+-	0x6b9c: 0x43064620, 0x6b9d: 0x43077a20, 0x6b9e: 0x4307ce20, 0x6b9f: 0x4308ae20,
+-	0x6ba0: 0x4306a620, 0x6ba1: 0x43079420, 0x6ba2: 0x43079820, 0x6ba3: 0x4307b820,
+-	0x6ba4: 0x48d86c20, 0x6ba5: 0x48dad620, 0x6ba6: 0x48d9aa20, 0x6ba7: 0x448a5620,
+-	0x6ba8: 0x4309e220, 0x6ba9: 0x4309e620, 0x6baa: 0x430a2c20, 0x6bab: 0x48e79420,
+-	0x6bac: 0x430ac820, 0x6bad: 0x48de5820, 0x6bae: 0x448aba20, 0x6baf: 0x448ac220,
+-	0x6bb0: 0x48df6220, 0x6bb1: 0x48e1a420, 0x6bb2: 0x448ad620, 0x6bb3: 0x430ca020,
+-	0x6bb4: 0x430cb820, 0x6bb5: 0x430cce20, 0x6bb6: 0x430cd220, 0x6bb7: 0x430d5220,
+-	0x6bb8: 0x430d1020, 0x6bb9: 0x430e1c20, 0x6bba: 0x430dc420, 0x6bbb: 0x430ef220,
+-	0x6bbc: 0x430e5020, 0x6bbd: 0x430ed620, 0x6bbe: 0x430f0c20, 0x6bbf: 0x448bae20,
+-	// Block 0x1af, offset 0x6bc0
+-	0x6bc0: 0x430fc220, 0x6bc1: 0x43100220, 0x6bc2: 0x448bf220, 0x6bc3: 0x4310c020,
+-	0x6bc4: 0x4310c620, 0x6bc5: 0x48ecce20, 0x6bc6: 0x4311ae20, 0x6bc7: 0x4311bc20,
+-	0x6bc8: 0x448c6a20, 0x6bc9: 0x4311f420, 0x6bca: 0x44697620, 0x6bcb: 0x48f15c20,
+-	0x6bcc: 0x48f2cc20, 0x6bcd: 0x448d7c20, 0x6bce: 0x448d8e20, 0x6bcf: 0x43154020,
+-	0x6bd0: 0x4315da20, 0x6bd1: 0x43171420, 0x6bd2: 0x4318aa20, 0x6bd3: 0x48f95020,
+-	0x6bd4: 0x43195620, 0x6bd5: 0x43198220, 0x6bd6: 0x431a3620, 0x6bd7: 0x431aee20,
+-	0x6bd8: 0x48fe5e20, 0x6bd9: 0x48100820, 0x6bda: 0x431b9620, 0x6bdb: 0x431b7820,
+-	0x6bdc: 0x431be020, 0x6bdd: 0x4811bc20, 0x6bde: 0x431da820, 0x6bdf: 0x431e7020,
+-	0x6be0: 0x490ba420, 0x6be1: 0x490bda20, 0x6be2: 0x43212820, 0x6be3: 0x4321e220,
+-	0x6be4: 0x43222220, 0x6be5: 0x490e5c20, 0x6be6: 0x43223620, 0x6be7: 0x43247020,
+-	0x6be8: 0x4325ae20, 0x6be9: 0x4325b020, 0x6bea: 0x4324f820, 0x6beb: 0x4327f220,
+-	0x6bec: 0x43282a20, 0x6bed: 0x4917f420, 0x6bee: 0x432b1620, 0x6bef: 0x44932a20,
+-	0x6bf0: 0x432b6e20, 0x6bf1: 0x491aee20, 0x6bf2: 0x4493cc20, 0x6bf3: 0x432d8620,
+-	0x6bf4: 0x42bb6420, 0x6bf5: 0x432e4620, 0x6bf6: 0x49228a20, 0x6bf7: 0x49243420,
+-	0x6bf8: 0x4494dc20, 0x6bf9: 0x4494ec20, 0x6bfa: 0x432fc020, 0x6bfb: 0x49281420,
+-	0x6bfc: 0x44956420, 0x6bfd: 0x49292c20, 0x6bfe: 0x43301620, 0x6bff: 0x43301620,
+-	// Block 0x1b0, offset 0x6c00
+-	0x6c00: 0x43305220, 0x6c01: 0x492b6c20, 0x6c02: 0x4331c420, 0x6c03: 0x44966620,
+-	0x6c04: 0x43325220, 0x6c05: 0x43334e20, 0x6c06: 0x43338420, 0x6c07: 0x4333fc20,
+-	0x6c08: 0x44979c20, 0x6c09: 0x49366020, 0x6c0a: 0x43362420, 0x6c0b: 0x43388020,
+-	0x6c0c: 0x4339fa20, 0x6c0d: 0x44999c20, 0x6c0e: 0x4499da20, 0x6c0f: 0x433ace20,
+-	0x6c10: 0x49419c20, 0x6c11: 0x4499f020, 0x6c12: 0x49420a20, 0x6c13: 0x49441c20,
+-	0x6c14: 0x49452220, 0x6c15: 0x433d7620, 0x6c16: 0x449aac20, 0x6c17: 0x433df220,
+-	0x6c18: 0x433dfc20, 0x6c19: 0x433e0a20, 0x6c1a: 0x433e1e20, 0x6c1b: 0x433e2c20,
+-	0x6c1c: 0x433e7620, 0x6c1d: 0x494c0020,
+-	// Block 0x1b1, offset 0x6c40
+-	0x6c41: 0xa0000000,
+-	0x6c60: 0xa0000000, 0x6c61: 0xa0000000, 0x6c62: 0xa0000000, 0x6c63: 0xa0000000,
+-	0x6c64: 0xa0000000, 0x6c65: 0xa0000000, 0x6c66: 0xa0000000, 0x6c67: 0xa0000000,
+-	0x6c68: 0xa0000000, 0x6c69: 0xa0000000, 0x6c6a: 0xa0000000, 0x6c6b: 0xa0000000,
+-	0x6c6c: 0xa0000000, 0x6c6d: 0xa0000000, 0x6c6e: 0xa0000000, 0x6c6f: 0xa0000000,
+-	0x6c70: 0xa0000000, 0x6c71: 0xa0000000, 0x6c72: 0xa0000000, 0x6c73: 0xa0000000,
+-	0x6c74: 0xa0000000, 0x6c75: 0xa0000000, 0x6c76: 0xa0000000, 0x6c77: 0xa0000000,
+-	0x6c78: 0xa0000000, 0x6c79: 0xa0000000, 0x6c7a: 0xa0000000, 0x6c7b: 0xa0000000,
+-	0x6c7c: 0xa0000000, 0x6c7d: 0xa0000000, 0x6c7e: 0xa0000000, 0x6c7f: 0xa0000000,
+-	// Block 0x1b2, offset 0x6c80
+-	0x6c80: 0xa0000000, 0x6c81: 0xa0000000, 0x6c82: 0xa0000000, 0x6c83: 0xa0000000,
+-	0x6c84: 0xa0000000, 0x6c85: 0xa0000000, 0x6c86: 0xa0000000, 0x6c87: 0xa0000000,
+-	0x6c88: 0xa0000000, 0x6c89: 0xa0000000, 0x6c8a: 0xa0000000, 0x6c8b: 0xa0000000,
+-	0x6c8c: 0xa0000000, 0x6c8d: 0xa0000000, 0x6c8e: 0xa0000000, 0x6c8f: 0xa0000000,
+-	0x6c90: 0xa0000000, 0x6c91: 0xa0000000, 0x6c92: 0xa0000000, 0x6c93: 0xa0000000,
+-	0x6c94: 0xa0000000, 0x6c95: 0xa0000000, 0x6c96: 0xa0000000, 0x6c97: 0xa0000000,
+-	0x6c98: 0xa0000000, 0x6c99: 0xa0000000, 0x6c9a: 0xa0000000, 0x6c9b: 0xa0000000,
+-	0x6c9c: 0xa0000000, 0x6c9d: 0xa0000000, 0x6c9e: 0xa0000000, 0x6c9f: 0xa0000000,
+-	0x6ca0: 0xa0000000, 0x6ca1: 0xa0000000, 0x6ca2: 0xa0000000, 0x6ca3: 0xa0000000,
+-	0x6ca4: 0xa0000000, 0x6ca5: 0xa0000000, 0x6ca6: 0xa0000000, 0x6ca7: 0xa0000000,
+-	0x6ca8: 0xa0000000, 0x6ca9: 0xa0000000, 0x6caa: 0xa0000000, 0x6cab: 0xa0000000,
+-	0x6cac: 0xa0000000, 0x6cad: 0xa0000000, 0x6cae: 0xa0000000, 0x6caf: 0xa0000000,
+-	0x6cb0: 0xa0000000, 0x6cb1: 0xa0000000, 0x6cb2: 0xa0000000, 0x6cb3: 0xa0000000,
+-	0x6cb4: 0xa0000000, 0x6cb5: 0xa0000000, 0x6cb6: 0xa0000000, 0x6cb7: 0xa0000000,
+-	0x6cb8: 0xa0000000, 0x6cb9: 0xa0000000, 0x6cba: 0xa0000000, 0x6cbb: 0xa0000000,
+-	0x6cbc: 0xa0000000, 0x6cbd: 0xa0000000, 0x6cbe: 0xa0000000, 0x6cbf: 0xa0000000,
+-	// Block 0x1b3, offset 0x6cc0
+-	0x6cc0: 0xa0000000, 0x6cc1: 0xa0000000, 0x6cc2: 0xa0000000, 0x6cc3: 0xa0000000,
+-	0x6cc4: 0xa0000000, 0x6cc5: 0xa0000000, 0x6cc6: 0xa0000000, 0x6cc7: 0xa0000000,
+-	0x6cc8: 0xa0000000, 0x6cc9: 0xa0000000, 0x6cca: 0xa0000000, 0x6ccb: 0xa0000000,
+-	0x6ccc: 0xa0000000, 0x6ccd: 0xa0000000, 0x6cce: 0xa0000000, 0x6ccf: 0xa0000000,
+-	0x6cd0: 0xa0000000, 0x6cd1: 0xa0000000, 0x6cd2: 0xa0000000, 0x6cd3: 0xa0000000,
+-	0x6cd4: 0xa0000000, 0x6cd5: 0xa0000000, 0x6cd6: 0xa0000000, 0x6cd7: 0xa0000000,
+-	0x6cd8: 0xa0000000, 0x6cd9: 0xa0000000, 0x6cda: 0xa0000000, 0x6cdb: 0xa0000000,
+-	0x6cdc: 0xa0000000, 0x6cdd: 0xa0000000, 0x6cde: 0xa0000000, 0x6cdf: 0xa0000000,
+-	0x6ce0: 0xa0000000, 0x6ce1: 0xa0000000, 0x6ce2: 0xa0000000, 0x6ce3: 0xa0000000,
+-	0x6ce4: 0xa0000000, 0x6ce5: 0xa0000000, 0x6ce6: 0xa0000000, 0x6ce7: 0xa0000000,
+-	0x6ce8: 0xa0000000, 0x6ce9: 0xa0000000, 0x6cea: 0xa0000000, 0x6ceb: 0xa0000000,
+-	0x6cec: 0xa0000000, 0x6ced: 0xa0000000, 0x6cee: 0xa0000000, 0x6cef: 0xa0000000,
+-	// Block 0x1b4, offset 0x6d00
+-	0x6d00: 0xe0000cfe, 0x6d01: 0xe0000cf8, 0x6d02: 0xe0000cf5, 0x6d03: 0xe0000d51,
+-	0x6d04: 0xe0000d4e, 0x6d05: 0xe0000d6f, 0x6d06: 0xe0000d6c, 0x6d07: 0xe0000d5d,
+-	0x6d08: 0xe0000d5a, 0x6d09: 0x002e9e89, 0x6d0a: 0x002eda88, 0x6d0b: 0x402eda20,
+-	0x6d0c: 0xe0000e2e, 0x6d0d: 0xe0000e2b, 0x6d0e: 0xe0000da0, 0x6d0f: 0xe0000d9d,
+-	0x6d10: 0xe0000de0, 0x6d11: 0xe0000ddd, 0x6d12: 0xe0000e93, 0x6d13: 0xe0000e8f,
+-	0x6d14: 0xe0000eca, 0x6d15: 0xe0000ec7, 0x6d16: 0xe0000edc, 0x6d17: 0xe0000ed9,
+-	0x6d18: 0xe0000ed0, 0x6d19: 0xe0000ecd, 0x6d1a: 0xe0000f1f, 0x6d1b: 0xe0000f1c,
+-	0x6d1c: 0xe0000f2d, 0x6d1d: 0xe0000f2a, 0x6d1e: 0xe0000f47, 0x6d1f: 0xe0000f44,
+-	0x6d20: 0xe0000f33, 0x6d21: 0xe0000f30, 0x6d22: 0xe0000f99, 0x6d23: 0xe0000f96,
+-	0x6d24: 0xe0000f8a, 0x6d25: 0xe0000f87, 0x6d26: 0x00303688, 0x6d27: 0x40303620,
+-	0x6d28: 0xe000102b, 0x6d29: 0xe0001028, 0x6d2a: 0xe000103f, 0x6d2b: 0xe000103c,
+-	0x6d2c: 0xe0000fe7, 0x6d2d: 0xe0000fe4, 0x6d2e: 0xe0000ff9, 0x6d2f: 0xe0000ff6,
+-	0x6d30: 0xe0001025, 0x6d31: 0xe0001022, 0x6d32: 0xe0001039, 0x6d33: 0xe0001036,
+-	0x6d34: 0xe00010d8, 0x6d35: 0xe00010d5, 0x6d36: 0xe000110e, 0x6d37: 0xe000110b,
+-	0x6d38: 0xe0001117, 0x6d39: 0xe000113b, 0x6d3a: 0xe0001138, 0x6d3b: 0xe000114d,
+-	0x6d3c: 0xe000114a, 0x6d3d: 0xe0001147, 0x6d3e: 0xe0001144, 0x6d3f: 0xe0000f64,
+-	// Block 0x1b5, offset 0x6d40
+-	0x6d40: 0xa0000000, 0x6d41: 0xa0000000, 0x6d42: 0xa0000000, 0x6d43: 0xa0000000,
+-	0x6d44: 0xa0000000, 0x6d46: 0x40096620, 0x6d47: 0x40096a20,
+-	0x6d48: 0x40070820, 0x6d49: 0x4004f220, 0x6d4a: 0x4004f620, 0x6d4b: 0x4027e620,
+-	0x6d4c: 0x40024820, 0x6d4d: 0x40024a20, 0x6d4e: 0x40070e20, 0x6d4f: 0x40071020,
+-	0x6d50: 0xae600000, 0x6d51: 0xae600000, 0x6d52: 0xae600000, 0x6d53: 0xae600000,
+-	0x6d54: 0xae600000, 0x6d55: 0xae600000, 0x6d56: 0xae600000, 0x6d57: 0xae600000,
+-	0x6d58: 0xa1e00000, 0x6d59: 0xa1f00000, 0x6d5a: 0xa2000000, 0x6d5b: 0x40026420,
+-	0x6d5e: 0x40027020, 0x6d5f: 0x4002cc20,
+-	0x6d60: 0x403aa220, 0x6d61: 0x40391c20, 0x6d62: 0x40391e20, 0x6d63: 0x40392020,
+-	0x6d64: 0x40392620, 0x6d65: 0x40392820, 0x6d66: 0x40393020, 0x6d67: 0xc0520151,
+-	0x6d68: 0x40393c20, 0x6d69: 0x40395621, 0x6d6a: 0x40395620, 0x6d6b: 0x40395820,
+-	0x6d6c: 0x40396420, 0x6d6d: 0x40397220, 0x6d6e: 0x40397420, 0x6d6f: 0x40398820,
+-	0x6d70: 0x40398a20, 0x6d71: 0x4039a420, 0x6d72: 0x4039a620, 0x6d73: 0x4039c620,
+-	0x6d74: 0x4039c820, 0x6d75: 0x4039dc20, 0x6d76: 0x4039de20, 0x6d77: 0x4039e620,
+-	0x6d78: 0x4039e820, 0x6d79: 0x4039ee20, 0x6d7a: 0x4039f020, 0x6d7b: 0x403a3820,
+-	0x6d7c: 0x403a3a20, 0x6d7d: 0x403a9c20, 0x6d7e: 0x403a9e20, 0x6d7f: 0x403aa020,
+-	// Block 0x1b6, offset 0x6d80
+-	0x6d80: 0xa0000000, 0x6d81: 0x4039fc20, 0x6d82: 0x403a1220, 0x6d83: 0x403a1a20,
+-	0x6d84: 0x403a4020, 0x6d85: 0x403a4e20, 0x6d86: 0x403a5620, 0x6d87: 0x403a6820,
+-	0x6d88: 0xc0560171, 0x6d89: 0x403a9021, 0x6d8a: 0xc0580171, 0x6d8b: 0xa1b0a202,
+-	0x6d8c: 0xa1c0a502, 0x6d8d: 0xa1d0a902, 0x6d8e: 0xa1e0ad02, 0x6d8f: 0xa1f0b202,
+-	0x6d90: 0xa200b602, 0x6d91: 0xa210ba02, 0x6d92: 0xa220bc02, 0x6d93: 0xae60bd02,
+-	0x6d94: 0xae60be02, 0x6d95: 0xadc0bf02, 0x6d96: 0xadc0c102, 0x6d97: 0xae60c202,
+-	0x6d98: 0xae60c302, 0x6d99: 0xae60c402, 0x6d9a: 0xae60c502, 0x6d9b: 0xae60c602,
+-	0x6d9c: 0xadc0c702, 0x6d9d: 0xae60c802, 0x6d9e: 0xae60c902, 0x6d9f: 0xadc0c002,
+-	0x6da0: 0xe000015e, 0x6da1: 0xe00001e6, 0x6da2: 0xe0000301, 0x6da3: 0xe00003db,
+-	0x6da4: 0xe00004b6, 0x6da5: 0xe0000580, 0x6da6: 0xe000064b, 0x6da7: 0xe00006f3,
+-	0x6da8: 0xe000079f, 0x6da9: 0xe0000844, 0x6daa: 0x4004ee20, 0x6dab: 0x40024c20,
+-	0x6dac: 0x40024e20, 0x6dad: 0x4004de20, 0x6dae: 0x40393a20, 0x6daf: 0x403a1020,
+-	0x6db0: 0xa230d102, 0x6db1: 0x40392420, 0x6db2: 0x40392220, 0x6db3: 0x40392a20,
+-	0x6db4: 0x00391c84, 0x6db5: 0xf0000404, 0x6db6: 0xf0000404, 0x6db7: 0xf0000404,
+-	0x6db8: 0xf0000404, 0x6db9: 0x40395a20, 0x6dba: 0x40395c20, 0x6dbb: 0x40393e20,
+-	0x6dbc: 0x40395e20, 0x6dbd: 0x40396020, 0x6dbe: 0x40394020, 0x6dbf: 0x40396220,
+-	// Block 0x1b7, offset 0x6dc0
+-	0x6dc0: 0x40073420, 0x6dc1: 0x40073620,
+-	0x6dd3: 0x003a269a,
+-	0x6dd4: 0x003a2699, 0x6dd5: 0x003a2697, 0x6dd6: 0x003a2698, 0x6dd7: 0x003a7c9a,
+-	0x6dd8: 0x003a7c99, 0x6dd9: 0x003a7a9a, 0x6dda: 0x003a7a99, 0x6ddb: 0x003a7e9a,
+-	0x6ddc: 0x003a7e99, 0x6ddd: 0xf0001a1a, 0x6dde: 0x003a849a, 0x6ddf: 0x003a8499,
+-	0x6de0: 0x003a789a, 0x6de1: 0x003a7899, 0x6de2: 0x003a809a, 0x6de3: 0x003a8099,
+-	0x6de4: 0x003a989a, 0x6de5: 0x003a9899, 0x6de6: 0x003a9897, 0x6de7: 0x003a9898,
+-	0x6de8: 0x003a90a3, 0x6de9: 0x003a90a4, 0x6dea: 0xe0001559, 0x6deb: 0xe0001556,
+-	0x6dec: 0xe0001589, 0x6ded: 0xe0001586, 0x6dee: 0xe000158f, 0x6def: 0xe000158c,
+-	0x6df0: 0xe000159b, 0x6df1: 0xe0001598, 0x6df2: 0xe0001595, 0x6df3: 0xe0001592,
+-	0x6df4: 0xe00015a1, 0x6df5: 0xe000159e, 0x6df6: 0xe00015bf, 0x6df7: 0xe00015bc,
+-	0x6df8: 0xe00015b9, 0x6df9: 0xe00015ad, 0x6dfa: 0xe00015a7, 0x6dfb: 0xe00015a4,
+-	0x6dfc: 0x003a929a, 0x6dfd: 0x003a9299, 0x6dfe: 0x003a9297, 0x6dff: 0x003a9298,
+-	// Block 0x1b8, offset 0x6e00
+-	0x6e00: 0xe000155f, 0x6e01: 0xe0001565, 0x6e02: 0xe000157a, 0x6e03: 0xe00015b0,
+-	0x6e04: 0xe00015b6, 0x6e05: 0xf0001a1a, 0x6e06: 0xf0001a1a, 0x6e07: 0xf0001a1a,
+-	0x6e08: 0xf0001a1a, 0x6e09: 0xe00024a2, 0x6e0a: 0xf0001a1a, 0x6e0b: 0xf0001a1a,
+-	0x6e0c: 0xf0001a1a, 0x6e0d: 0xf0001a1a, 0x6e0e: 0xf0001a1a, 0x6e0f: 0xe00024a8,
+-	0x6e10: 0xf0001a1a, 0x6e11: 0xf0001a1a, 0x6e12: 0xf0001a1a, 0x6e13: 0xe00024ae,
+-	0x6e14: 0xf0001a1a, 0x6e15: 0xf0001a1a, 0x6e16: 0xf0001a1a, 0x6e17: 0xf0001a1a,
+-	0x6e18: 0xf0001a1a, 0x6e19: 0xf0001a1a, 0x6e1a: 0xf0001a1a, 0x6e1b: 0xf0001a1a,
+-	0x6e1c: 0xf0001a1a, 0x6e1d: 0xf0001a1a, 0x6e1e: 0xf0001a1a, 0x6e1f: 0xf0001a1a,
+-	0x6e20: 0xf0001a1a, 0x6e21: 0xf0001a1a, 0x6e22: 0xf0001a1a, 0x6e23: 0xf0001a1a,
+-	0x6e24: 0xf0001a1a, 0x6e25: 0xf0001a1a, 0x6e26: 0xf0001a1a, 0x6e27: 0xf0001a1a,
+-	0x6e28: 0xf0001a1a, 0x6e29: 0xf0001a1a, 0x6e2a: 0xf0001a1a, 0x6e2b: 0xf0001a1a,
+-	0x6e2c: 0xf0001a1a, 0x6e2d: 0xf0001a1a, 0x6e2e: 0xf0001a1a, 0x6e2f: 0xf0001a1a,
+-	0x6e30: 0xf0001a1a, 0x6e31: 0xe00024f0, 0x6e32: 0xf0001a1a, 0x6e33: 0xf0001a1a,
+-	0x6e34: 0xf0001a1a, 0x6e35: 0xe00024f6, 0x6e36: 0xf0001a1a, 0x6e37: 0xf0001a1a,
+-	0x6e38: 0xf0001a1a, 0x6e39: 0xf0001a1a, 0x6e3a: 0xf0001a1a, 0x6e3b: 0xf0001a1a,
+-	0x6e3c: 0xf0001a1a, 0x6e3d: 0xe00024fc, 0x6e3e: 0xf0001a1a, 0x6e3f: 0xf0001a1a,
+-	// Block 0x1b9, offset 0x6e40
+-	0x6e40: 0xf0001a1a, 0x6e41: 0xf0001a1a, 0x6e42: 0xf0001a1a, 0x6e43: 0xe0002502,
+-	0x6e44: 0xf0001a1a, 0x6e45: 0xf0001a1a, 0x6e46: 0xf0001a1a, 0x6e47: 0xf0001a1a,
+-	0x6e48: 0xf0001a1a, 0x6e49: 0xe0002505, 0x6e4a: 0xf0001a1a, 0x6e4b: 0xf0001a1a,
+-	0x6e4c: 0xf0001a1a, 0x6e4d: 0xf0001a1a, 0x6e4e: 0xf0001a1a, 0x6e4f: 0xe000250b,
+-	0x6e50: 0xf0001a1a, 0x6e51: 0xf0001a1a, 0x6e52: 0xf0001a1a, 0x6e53: 0xe000250e,
+-	0x6e54: 0xf0001a1a, 0x6e55: 0xf0001a1a, 0x6e56: 0xf0001a1a, 0x6e57: 0xf0001a1a,
+-	0x6e58: 0xf0001a1a, 0x6e59: 0xe0002514, 0x6e5a: 0xf0001a1a, 0x6e5b: 0xf0001a1a,
+-	0x6e5c: 0xf0001a1a, 0x6e5d: 0x003a90a8, 0x6e5e: 0xe0000003, 0x6e5f: 0xe0000006,
+-	0x6e60: 0xe0000009, 0x6e61: 0xe000000c, 0x6e62: 0xe000000f, 0x6e63: 0xe0000012,
+-	0x6e64: 0xe000156b, 0x6e65: 0xe000156e, 0x6e66: 0xe0001577, 0x6e67: 0xe000157d,
+-	0x6e68: 0xe00015aa, 0x6e69: 0xe00015b3, 0x6e6a: 0xf0001919, 0x6e6b: 0xf0001919,
+-	0x6e6c: 0xf0001919, 0x6e6d: 0xf0001919, 0x6e6e: 0xe000249f, 0x6e6f: 0xf0001919,
+-	0x6e70: 0xf0001919, 0x6e71: 0xf0001919, 0x6e72: 0xf0001919, 0x6e73: 0xf0001919,
+-	0x6e74: 0xe00024a5, 0x6e75: 0xf0001919, 0x6e76: 0xf0001919, 0x6e77: 0xf0001919,
+-	0x6e78: 0xf0001919, 0x6e79: 0xf0001919, 0x6e7a: 0xe00024ab, 0x6e7b: 0xf0001919,
+-	0x6e7c: 0xe00024ed, 0x6e7d: 0xf0001919, 0x6e7e: 0xe00024f3, 0x6e7f: 0xf0001919,
+-	// Block 0x1ba, offset 0x6e80
+-	0x6e80: 0xf0001919, 0x6e81: 0xf0001919, 0x6e82: 0xf0001919, 0x6e83: 0xe00024f9,
+-	0x6e84: 0xf0001919, 0x6e85: 0xf0001919, 0x6e86: 0xe00024ff, 0x6e87: 0xf0001919,
+-	0x6e88: 0xf0001919, 0x6e89: 0xf0001919, 0x6e8a: 0xf0001919, 0x6e8b: 0xf0001919,
+-	0x6e8c: 0xf0001919, 0x6e8d: 0xf0001919, 0x6e8e: 0xe0002508, 0x6e8f: 0xf0001919,
+-	0x6e90: 0x003a90a7, 0x6e91: 0xf0001919, 0x6e92: 0xf0001919, 0x6e93: 0xf0001919,
+-	0x6e94: 0xf0001919, 0x6e95: 0xe0002511, 0x6e96: 0xf0001919, 0x6e97: 0xe000155c,
+-	0x6e98: 0xe0001562, 0x6e99: 0xe0001568, 0x6e9a: 0xe0001571, 0x6e9b: 0xe0001580,
+-	0x6e9c: 0xf0001717, 0x6e9d: 0xf0001717, 0x6e9e: 0xf0001717, 0x6e9f: 0xf0001717,
+-	0x6ea0: 0xf0001717, 0x6ea1: 0xf0001717, 0x6ea2: 0xf0001717, 0x6ea3: 0xf0001717,
+-	0x6ea4: 0xf0001717, 0x6ea5: 0xf0001717, 0x6ea6: 0xf0001717, 0x6ea7: 0xf0001717,
+-	0x6ea8: 0xf0001717, 0x6ea9: 0xf0001717, 0x6eaa: 0xf0001717, 0x6eab: 0xf0001717,
+-	0x6eac: 0xf0001717, 0x6ead: 0xf0001717, 0x6eae: 0xf0001717, 0x6eaf: 0xf0001717,
+-	0x6eb0: 0xf0001717, 0x6eb1: 0xf0001717, 0x6eb2: 0xf0001717, 0x6eb3: 0xf0001717,
+-	0x6eb4: 0xf0001717, 0x6eb5: 0xf0001717, 0x6eb6: 0xf0001717, 0x6eb7: 0xf0001717,
+-	0x6eb8: 0xf0001717, 0x6eb9: 0xf0001717, 0x6eba: 0xf0001717, 0x6ebb: 0xf0001717,
+-	0x6ebc: 0xf0001717, 0x6ebd: 0xf0001717, 0x6ebe: 0xf0001717, 0x6ebf: 0xf0001717,
+-	// Block 0x1bb, offset 0x6ec0
+-	0x6ec0: 0xf0001717, 0x6ec1: 0xf0001717, 0x6ec2: 0xf0001717, 0x6ec3: 0xf0001717,
+-	0x6ec4: 0xf0001717, 0x6ec5: 0xf0001717, 0x6ec6: 0xf0001717, 0x6ec7: 0xf0001717,
+-	0x6ec8: 0xf0001717, 0x6ec9: 0xf0001717, 0x6eca: 0xf0001717, 0x6ecb: 0xf0001717,
+-	0x6ecc: 0xf0001717, 0x6ecd: 0xf0001717, 0x6ece: 0xf0001717, 0x6ecf: 0xf0001717,
+-	0x6ed0: 0xf0001717, 0x6ed1: 0xf0001717, 0x6ed2: 0xf0001717, 0x6ed3: 0xf0001717,
+-	0x6ed4: 0xf0001717, 0x6ed5: 0xf0001717, 0x6ed6: 0xf0001717, 0x6ed7: 0xf0001717,
+-	0x6ed8: 0xf0001717, 0x6ed9: 0xf0001717, 0x6eda: 0xf0001717, 0x6edb: 0xf0001717,
+-	0x6edc: 0xf0001717, 0x6edd: 0xf0001717, 0x6ede: 0xf0001717, 0x6edf: 0xe0001574,
+-	0x6ee0: 0xe0001583, 0x6ee1: 0xf0001818, 0x6ee2: 0xf0001818, 0x6ee3: 0xf0001818,
+-	0x6ee4: 0xf0001818, 0x6ee5: 0xf0001818, 0x6ee6: 0xf0001818, 0x6ee7: 0xf0001818,
+-	0x6ee8: 0xf0001818, 0x6ee9: 0xf0001818, 0x6eea: 0xf0001818, 0x6eeb: 0xf0001818,
+-	0x6eec: 0xf0001818, 0x6eed: 0xf0001818, 0x6eee: 0xf0001818, 0x6eef: 0xf0001818,
+-	0x6ef0: 0xf0001818, 0x6ef1: 0xf0001818, 0x6ef2: 0xf0001818, 0x6ef3: 0xf0001818,
+-	0x6ef4: 0xf0001818, 0x6ef5: 0xe00024de, 0x6ef6: 0xf0001a1a, 0x6ef7: 0xe00024e4,
+-	0x6ef8: 0xf0001a1a, 0x6ef9: 0xe00024ea, 0x6efa: 0xf0001a1a, 0x6efb: 0xe00024c6,
+-	0x6efc: 0xf0001a1a, 0x6efd: 0xe00024cc, 0x6efe: 0xf0001a1a, 0x6eff: 0xe00024ba,
+-	// Block 0x1bc, offset 0x6f00
+-	0x6f00: 0xf0001a1a, 0x6f01: 0xe00024b4, 0x6f02: 0xf0001a1a, 0x6f03: 0xe00024c0,
+-	0x6f04: 0xf0001a1a, 0x6f05: 0xe00024d2, 0x6f06: 0xf0001a1a, 0x6f07: 0xe00024d8,
+-	0x6f08: 0xf0001a1a, 0x6f09: 0xf0001a1a, 0x6f0a: 0xf0001a1a, 0x6f0b: 0xf0001a1a,
+-	0x6f0c: 0xf0001a1a, 0x6f0d: 0xf0001a1a, 0x6f0e: 0xf0001a1a, 0x6f0f: 0xf0001a1a,
+-	0x6f10: 0xf0001a1a, 0x6f11: 0xe00024db, 0x6f12: 0xf0001919, 0x6f13: 0xe00024e1,
+-	0x6f14: 0xf0001919, 0x6f15: 0xe00024e7, 0x6f16: 0xf0001919, 0x6f17: 0xe00024c3,
+-	0x6f18: 0xf0001919, 0x6f19: 0xe00024c9, 0x6f1a: 0xf0001919, 0x6f1b: 0xe00024b7,
+-	0x6f1c: 0xf0001919, 0x6f1d: 0xe00024b1, 0x6f1e: 0xf0001919, 0x6f1f: 0xe00024bd,
+-	0x6f20: 0xf0001919, 0x6f21: 0xe00024cf, 0x6f22: 0xf0001919, 0x6f23: 0xe00024d5,
+-	0x6f24: 0xf0001919, 0x6f25: 0xf0001919, 0x6f26: 0xf0001919, 0x6f27: 0xf0001919,
+-	0x6f28: 0xf0001919, 0x6f29: 0xf0001919, 0x6f2a: 0xf0001919, 0x6f2b: 0xf0001919,
+-	0x6f2c: 0xf0001919, 0x6f2d: 0xf0001717, 0x6f2e: 0xf0001717, 0x6f2f: 0xf0001717,
+-	0x6f30: 0xf0001717, 0x6f31: 0xf0001717, 0x6f32: 0xf0001717, 0x6f33: 0xf0001717,
+-	0x6f34: 0xf0001818, 0x6f35: 0xf0001818, 0x6f36: 0xf0001818, 0x6f37: 0xf0001818,
+-	0x6f38: 0xf0001818, 0x6f39: 0xf0001818, 0x6f3a: 0xf0001818, 0x6f3b: 0xf0001818,
+-	0x6f3c: 0xf0001919, 0x6f3d: 0xf0001a1a, 0x6f3e: 0x4004c020, 0x6f3f: 0x4004c220,
+-	// Block 0x1bd, offset 0x6f40
+-	0x6f40: 0x00391c9a, 0x6f41: 0x00391e9a, 0x6f42: 0x00391e99, 0x6f43: 0x0039209a,
+-	0x6f44: 0x00392099, 0x6f45: 0x0039269a, 0x6f46: 0x00392699, 0x6f47: 0x0039289a,
+-	0x6f48: 0x00392899, 0x6f49: 0x0039309a, 0x6f4a: 0x00393099, 0x6f4b: 0x00393097,
+-	0x6f4c: 0x00393098, 0x6f4d: 0x0039389a, 0x6f4e: 0x00393899, 0x6f4f: 0x00393c9a,
+-	0x6f50: 0x00393c99, 0x6f51: 0x00393c97, 0x6f52: 0x00393c98, 0x6f53: 0x003956a4,
+-	0x6f54: 0x003956a3, 0x6f55: 0x0039569a, 0x6f56: 0x00395699, 0x6f57: 0x00395697,
+-	0x6f58: 0x00395698, 0x6f59: 0x0039589a, 0x6f5a: 0x00395899, 0x6f5b: 0x00395897,
+-	0x6f5c: 0x00395898, 0x6f5d: 0x0039649a, 0x6f5e: 0x00396499, 0x6f5f: 0x00396497,
+-	0x6f60: 0x00396498, 0x6f61: 0x0039729a, 0x6f62: 0x00397299, 0x6f63: 0x00397297,
+-	0x6f64: 0x00397298, 0x6f65: 0x0039749a, 0x6f66: 0x00397499, 0x6f67: 0x00397497,
+-	0x6f68: 0x00397498, 0x6f69: 0x0039889a, 0x6f6a: 0x00398899, 0x6f6b: 0x00398a9a,
+-	0x6f6c: 0x00398a99, 0x6f6d: 0x0039a49a, 0x6f6e: 0x0039a499, 0x6f6f: 0x0039a69a,
+-	0x6f70: 0x0039a699, 0x6f71: 0x0039c69a, 0x6f72: 0x0039c699, 0x6f73: 0x0039c697,
+-	0x6f74: 0x0039c698, 0x6f75: 0x0039c89a, 0x6f76: 0x0039c899, 0x6f77: 0x0039c897,
+-	0x6f78: 0x0039c898, 0x6f79: 0x0039dc9a, 0x6f7a: 0x0039dc99, 0x6f7b: 0x0039dc97,
+-	0x6f7c: 0x0039dc98, 0x6f7d: 0x0039de9a, 0x6f7e: 0x0039de99, 0x6f7f: 0x0039de97,
+-	// Block 0x1be, offset 0x6f80
+-	0x6f80: 0x0039de98, 0x6f81: 0x0039e69a, 0x6f82: 0x0039e699, 0x6f83: 0x0039e697,
+-	0x6f84: 0x0039e698, 0x6f85: 0x0039e89a, 0x6f86: 0x0039e899, 0x6f87: 0x0039e897,
+-	0x6f88: 0x0039e898, 0x6f89: 0x0039ee9a, 0x6f8a: 0x0039ee99, 0x6f8b: 0x0039ee97,
+-	0x6f8c: 0x0039ee98, 0x6f8d: 0x0039f09a, 0x6f8e: 0x0039f099, 0x6f8f: 0x0039f097,
+-	0x6f90: 0x0039f098, 0x6f91: 0x0039fc9a, 0x6f92: 0x0039fc99, 0x6f93: 0x0039fc97,
+-	0x6f94: 0x0039fc98, 0x6f95: 0x003a129a, 0x6f96: 0x003a1299, 0x6f97: 0x003a1297,
+-	0x6f98: 0x003a1298, 0x6f99: 0x003a1a9a, 0x6f9a: 0x003a1a99, 0x6f9b: 0x003a1a97,
+-	0x6f9c: 0x003a1a98, 0x6f9d: 0x003a409a, 0x6f9e: 0x003a4099, 0x6f9f: 0x003a4097,
+-	0x6fa0: 0x003a4098, 0x6fa1: 0x003a4e9a, 0x6fa2: 0x003a4e99, 0x6fa3: 0x003a4e97,
+-	0x6fa4: 0x003a4e98, 0x6fa5: 0x003a569a, 0x6fa6: 0x003a5699, 0x6fa7: 0x003a5697,
+-	0x6fa8: 0x003a5698, 0x6fa9: 0x003a689a, 0x6faa: 0x003a6899, 0x6fab: 0x003a6897,
+-	0x6fac: 0x003a6898, 0x6fad: 0x003a749a, 0x6fae: 0x003a7499, 0x6faf: 0x003a90a6,
+-	0x6fb0: 0x003a90a5, 0x6fb1: 0x003a909a, 0x6fb2: 0x003a9099, 0x6fb3: 0x003a9097,
+-	0x6fb4: 0x003a9098, 0x6fb5: 0xe0001732, 0x6fb6: 0xe000172f, 0x6fb7: 0xe0001738,
+-	0x6fb8: 0xe0001735, 0x6fb9: 0xe000173e, 0x6fba: 0xe000173b, 0x6fbb: 0xf0001a1a,
+-	0x6fbc: 0xf0001919, 0x6fbf: 0xa0000000,
+-	// Block 0x1bf, offset 0x6fc0
+-	0x6fc1: 0x40409a20, 0x6fc2: 0x40409820, 0x6fc3: 0x40409c20,
+-	0x6fc5: 0x40407c20, 0x6fc6: 0x40407e20, 0x6fc7: 0x40408020,
+-	0x6fc8: 0x40408220, 0x6fc9: 0x40408420, 0x6fca: 0x40408620, 0x6fcb: 0x40408820,
+-	0x6fcc: 0x40408c20, 0x6fcf: 0x40409020,
+-	0x6fd0: 0x40409220, 0x6fd3: 0x40409420,
+-	0x6fd4: 0x40409620, 0x6fd5: 0xc33108b1, 0x6fd6: 0x40409a20, 0x6fd7: 0x40409c20,
+-	0x6fd8: 0x40409e20, 0x6fd9: 0x4040a020, 0x6fda: 0x4040a220, 0x6fdb: 0x4040a420,
+-	0x6fdc: 0x4040a620, 0x6fdd: 0x4040a820, 0x6fde: 0x4040aa20, 0x6fdf: 0x4040ac20,
+-	0x6fe0: 0x4040ae20, 0x6fe1: 0x4040b020, 0x6fe2: 0x4040b220, 0x6fe3: 0x4040b420,
+-	0x6fe4: 0xc32f0851, 0x6fe5: 0x4040b820, 0x6fe6: 0x4040ba20, 0x6fe7: 0x4040bc20,
+-	0x6fe8: 0x4040be20, 0x6fea: 0x4040c020, 0x6feb: 0x4040c220,
+-	0x6fec: 0x4040c420, 0x6fed: 0x4040c620, 0x6fee: 0x4040c820, 0x6fef: 0x4040ca20,
+-	0x6ff0: 0x4040cc20, 0x6ff2: 0x4040d020,
+-	0x6ff6: 0x4040d420, 0x6ff7: 0x4040d620,
+-	0x6ff8: 0x4040d820, 0x6ff9: 0x4040da20,
+-	0x6ffc: 0xa070f102, 0x6ffd: 0x4040dc20, 0x6ffe: 0x4040de20, 0x6fff: 0x4040e020,
+-	// Block 0x1c0, offset 0x7000
+-	0x7000: 0xa0000000, 0x7001: 0xa0000000, 0x7002: 0xa0000000, 0x7003: 0xa0000000,
+-	0x7004: 0xa0000000, 0x7005: 0xa0000000, 0x7006: 0xa0000000, 0x7007: 0xa0000000,
+-	0x7008: 0xa0000000, 0x7009: 0x40020020, 0x700a: 0x40020220, 0x700b: 0x40020420,
+-	0x700c: 0x40020620, 0x700d: 0x40020820, 0x700e: 0xa0000000, 0x700f: 0xa0000000,
+-	0x7010: 0xa0000000, 0x7011: 0xa0000000, 0x7012: 0xa0000000, 0x7013: 0xa0000000,
+-	0x7014: 0xa0000000, 0x7015: 0xa0000000, 0x7016: 0xa0000000, 0x7017: 0xa0000000,
+-	0x7018: 0xa0000000, 0x7019: 0xa0000000, 0x701a: 0xa0000000, 0x701b: 0xa0000000,
+-	0x701c: 0xa0000000, 0x701d: 0xa0000000, 0x701e: 0xa0000000, 0x701f: 0xa0000000,
+-	0x7020: 0x40021220, 0x7021: 0x4002ba20, 0x7022: 0x4003e020, 0x7023: 0x4004ea20,
+-	0x7024: 0x4027de20, 0x7025: 0x4004ec20, 0x7026: 0x4004e620, 0x7027: 0x4003d220,
+-	0x7028: 0x4003f420, 0x7029: 0x4003f620, 0x702a: 0x4004d820, 0x702b: 0x40093820,
+-	0x702c: 0x40024020, 0x702d: 0x40021a20, 0x702e: 0x4002e420, 0x702f: 0x4004e220,
+-	0x7030: 0x4029cc20, 0x7031: 0x4029ce20, 0x7032: 0x4029d020, 0x7033: 0x4029d220,
+-	0x7034: 0x4029d420, 0x7035: 0x4029d620, 0x7036: 0x4029d820, 0x7037: 0x4029da20,
+-	0x7038: 0x4029dc20, 0x7039: 0x4029de20, 0x703a: 0x40026c20, 0x703b: 0x40026220,
+-	0x703c: 0x40094020, 0x703d: 0x40094220, 0x703e: 0x40094420, 0x703f: 0x4002c420,
+-	// Block 0x1c1, offset 0x7040
+-	0x7040: 0x4004d620, 0x7041: 0x002bde88, 0x7042: 0x002c0a88, 0x7043: 0xc3350911,
+-	0x7044: 0x002c6288, 0x7045: 0x002c9888, 0x7046: 0x002d0888, 0x7047: 0xc33900d1,
+-	0x7048: 0x002d6888, 0x7049: 0xc33b0931, 0x704a: 0x002dcc88, 0x704b: 0x002dfe88,
+-	0x704c: 0xc0030002, 0x704d: 0x002e8288, 0x704e: 0x002e9e88, 0x704f: 0xc33f0071,
+-	0x7050: 0x002f2c88, 0x7051: 0x002e0083, 0x7052: 0x002f7a88, 0x7053: 0xc3430911,
+-	0x7054: 0x00302c88, 0x7055: 0xc3470071, 0x7056: 0x0030be88, 0x7057: 0x0030e288,
+-	0x7058: 0x002d6a83, 0x7059: 0x00310088, 0x705a: 0x00312a88, 0x705b: 0x4003f820,
+-	0x705c: 0x4004e420, 0x705d: 0x4003fa20, 0x705e: 0x40062420, 0x705f: 0x40021620,
+-	0x7060: 0x40061e20, 0x7061: 0x402bde20, 0x7062: 0x402c0a20, 0x7063: 0xc3330911,
+-	0x7064: 0x402c6220, 0x7065: 0x402c9820, 0x7066: 0x402d0820, 0x7067: 0xc33700d1,
+-	0x7068: 0x402d6820, 0x7069: 0x402d9a20, 0x706a: 0x402dcc20, 0x706b: 0x402dfe20,
+-	0x706c: 0xc0000002, 0x706d: 0x402e8220, 0x706e: 0x402e9e20, 0x706f: 0xc33d0071,
+-	0x7070: 0x402f2c20, 0x7071: 0x402e0020, 0x7072: 0x402f7a20, 0x7073: 0xc3410911,
+-	0x7074: 0x40302c20, 0x7075: 0xc3450071, 0x7076: 0x4030be20, 0x7077: 0x4030e220,
+-	0x7078: 0x402d6a20, 0x7079: 0x40310020, 0x707a: 0x40312a20, 0x707b: 0x4003fc20,
+-	0x707c: 0x40094820, 0x707d: 0x4003fe20, 0x707e: 0x40094c20, 0x707f: 0xa0000000,
+-	// Block 0x1c2, offset 0x7080
+-	0x7080: 0xe00008f5, 0x7081: 0xe00008ef, 0x7082: 0xe0000921, 0x7083: 0xe0000969,
+-	0x7084: 0xe000095b, 0x7085: 0xe000094d, 0x7086: 0xe00009dd, 0x7087: 0x002c3c83,
+-	0x7088: 0xe0000ae8, 0x7089: 0xe0000ae2, 0x708a: 0xe0000af4, 0x708b: 0xe0000b20,
+-	0x708c: 0xe0002543, 0x708d: 0xe0002540, 0x708e: 0xe0002549, 0x708f: 0xe000254f,
+-	0x7090: 0xe0000ab3, 0x7091: 0xe0000d63, 0x7092: 0xe0000d9a, 0x7093: 0xe0000d94,
+-	0x7094: 0xe0000da6, 0x7095: 0xe0000de6, 0x7096: 0x002ee483, 0x7097: 0x40093e20,
+-	0x7098: 0xe0000e12, 0x7099: 0xe0000fe1, 0x709a: 0xe0000fdb, 0x709b: 0xe0000fed,
+-	0x709c: 0x00306e83, 0x709d: 0xe0001102, 0x709e: 0x00318888, 0x709f: 0xe0000f7b,
+-	0x70a0: 0xe00008f2, 0x70a1: 0xe00008ec, 0x70a2: 0xe000091e, 0x70a3: 0xe0000966,
+-	0x70a4: 0xe0000958, 0x70a5: 0xe000094a, 0x70a6: 0xe00009d5, 0x70a7: 0x402c3c20,
+-	0x70a8: 0xe0000ae5, 0x70a9: 0xe0000adf, 0x70aa: 0xe0000af1, 0x70ab: 0xe0000b1d,
+-	0x70ac: 0xe0000c28, 0x70ad: 0xe0000c22, 0x70ae: 0xe0000c34, 0x70af: 0xe0000c40,
+-	0x70b0: 0xe0000aad, 0x70b1: 0xe0000d60, 0x70b2: 0xe0000d97, 0x70b3: 0xe0000d91,
+-	0x70b4: 0xe0000da3, 0x70b5: 0xe0000de3, 0x70b6: 0x402ee420, 0x70b7: 0x40093c20,
+-	0x70b8: 0xe0000e0f, 0x70b9: 0xe0000fde, 0x70ba: 0xe0000fd8, 0x70bb: 0xe0000fea,
+-	0x70bc: 0x40306e20, 0x70bd: 0xe00010ff, 0x70be: 0x40318820, 0x70bf: 0xe0001114,
+-	// Block 0x1c3, offset 0x70c0
+-	0x70c0: 0xe0000983, 0x70c1: 0xe0000980, 0x70c2: 0xe00008fb, 0x70c3: 0xe00008f8,
+-	0x70c4: 0xe000097d, 0x70c5: 0xe000097a, 0x70c6: 0xe0000a38, 0x70c7: 0xe0000a35,
+-	0x70c8: 0xe0000a3e, 0x70c9: 0xe0000a3b, 0x70ca: 0xe0000a4a, 0x70cb: 0xe0000a47,
+-	0x70cc: 0xe0000a44, 0x70cd: 0xe0000a41, 0x70ce: 0xe0000a86, 0x70cf: 0xe0000a83,
+-	0x70d0: 0xe0000aaa, 0x70d1: 0xe0000aa7, 0x70d2: 0xe0000b46, 0x70d3: 0xe0000b43,
+-	0x70d4: 0xe0000aee, 0x70d5: 0xe0000aeb, 0x70d6: 0xe0000b2c, 0x70d7: 0xe0000b29,
+-	0x70d8: 0xe0000b40, 0x70d9: 0xe0000b3d, 0x70da: 0xe0000b1a, 0x70db: 0xe0000b17,
+-	0x70dc: 0xe0000bb8, 0x70dd: 0xe0000bb5, 0x70de: 0x002d2483, 0x70df: 0x402d2420,
+-	0x70e0: 0xe0000bc4, 0x70e1: 0xe0000bc1, 0x70e2: 0xe0000bca, 0x70e3: 0xe0000bc7,
+-	0x70e4: 0xe0000bee, 0x70e5: 0xe0000beb, 0x70e6: 0xe0000c1b, 0x70e7: 0xe0000c18,
+-	0x70e8: 0xe0002556, 0x70e9: 0xe0000c4e, 0x70ea: 0xe000255c, 0x70eb: 0xe0000c5d,
+-	0x70ec: 0xe0002546, 0x70ed: 0xe0000c2e, 0x70ee: 0xe0002559, 0x70ef: 0xe0000c57,
+-	0x70f0: 0x002d9a83, 0x70f1: 0x402d9820, 0x70f2: 0xe0002575, 0x70f3: 0xf0000404,
+-	0x70f4: 0xe0000c8a, 0x70f5: 0xe0000c87, 0x70f6: 0xe0000c9f, 0x70f7: 0xe0000c9c,
+-	0x70f8: 0x402f7220, 0x70f9: 0xe0000ccc, 0x70fa: 0xe0000cc9, 0x70fb: 0xe0000cd8,
+-	0x70fc: 0xe0000cd5, 0x70fd: 0xe0000cd2, 0x70fe: 0xe0000ccf, 0x70ff: 0xe0000d04,
+-	// Block 0x1c4, offset 0x7100
+-	0x7100: 0xe0000cfe, 0x7101: 0xe0000cf8, 0x7102: 0xe0000cf5, 0x7103: 0xe0000d51,
+-	0x7104: 0xe0000d4e, 0x7105: 0xe0000d6f, 0x7106: 0xe0000d6c, 0x7107: 0xe0000d5d,
+-	0x7108: 0xe0000d5a, 0x7109: 0xf0000404, 0x710a: 0x002eda88, 0x710b: 0x402eda20,
+-	0x710c: 0xe0000e2e, 0x710d: 0xe0000e2b, 0x710e: 0xe0000da0, 0x710f: 0xe0000d9d,
+-	0x7110: 0xe0000de0, 0x7111: 0xe0000ddd, 0x7112: 0xe0000e93, 0x7113: 0xe0000e8f,
+-	0x7114: 0xe0000eca, 0x7115: 0xe0000ec7, 0x7116: 0xe0000edc, 0x7117: 0xe0000ed9,
+-	0x7118: 0xe0000ed0, 0x7119: 0xe0000ecd, 0x711a: 0xe0000f1f, 0x711b: 0xe0000f1c,
+-	0x711c: 0xe0000f2d, 0x711d: 0xe0000f2a, 0x711e: 0x002fe883, 0x711f: 0x402fe820,
+-	0x7120: 0xe0000f33, 0x7121: 0xe0000f30, 0x7122: 0xe0000f99, 0x7123: 0xe0000f96,
+-	0x7124: 0xe0000f8a, 0x7125: 0xe0000f87, 0x7126: 0x00303688, 0x7127: 0x40303620,
+-	0x7128: 0xe000102b, 0x7129: 0xe0001028, 0x712a: 0xe000103f, 0x712b: 0xe000103c,
+-	0x712c: 0xe0000fe7, 0x712d: 0xe0000fe4, 0x712e: 0xe0000ff9, 0x712f: 0xe0000ff6,
+-	0x7130: 0xe0001025, 0x7131: 0xe0001022, 0x7132: 0xe0001039, 0x7133: 0xe0001036,
+-	0x7134: 0xe00010d8, 0x7135: 0xe00010d5, 0x7136: 0xe000110e, 0x7137: 0xe000110b,
+-	0x7138: 0xe0001117, 0x7139: 0xe000113b, 0x713a: 0xe0001138, 0x713b: 0xe000114d,
+-	0x713c: 0xe000114a, 0x713d: 0xe0001147, 0x713e: 0xe0001144, 0x713f: 0xe0000f64,
+-	// Block 0x1c5, offset 0x7140
+-	0x7140: 0x402c1a20, 0x7141: 0x002c2a88, 0x7142: 0x002c3288, 0x7143: 0x402c3220,
+-	0x7144: 0x0031c488, 0x7145: 0x4031c420, 0x7146: 0x002efa88, 0x7147: 0x002c4e88,
+-	0x7148: 0x402c4e20, 0x7149: 0x002c7288, 0x714a: 0x002c7a88, 0x714b: 0x002c8488,
+-	0x714c: 0x402c8420, 0x714d: 0xe000115c, 0x714e: 0x002cae88, 0x714f: 0x002c9a83,
+-	0x7150: 0x002cc288, 0x7151: 0x002d1688, 0x7152: 0x402d1620, 0x7153: 0x002d4488,
+-	0x7154: 0x002d5888, 0x7155: 0x402d7820, 0x7156: 0x002dc288, 0x7157: 0x002db688,
+-	0x7158: 0x002e0a88, 0x7159: 0x402e0a20, 0x715a: 0x402e3820, 0x715b: 0x402e7220,
+-	0x715c: 0x0030a088, 0x715d: 0x002eb488, 0x715e: 0x402ebc20, 0x715f: 0x002f1088,
+-	0x7160: 0xe0000e56, 0x7161: 0xe0000e53, 0x7162: 0x002d6088, 0x7163: 0x402d6020,
+-	0x7164: 0x002f3e88, 0x7165: 0x402f3e20, 0x7166: 0x002f8288, 0x7167: 0x0031b488,
+-	0x7168: 0x4031b420, 0x7169: 0x00300888, 0x716a: 0x40301220, 0x716b: 0x40304220,
+-	0x716c: 0x00304a88, 0x716d: 0x40304a20, 0x716e: 0x00305288, 0x716f: 0xe000105f,
+-	0x7170: 0xe000105c, 0x7171: 0x0030b488, 0x7172: 0x0030cc88, 0x7173: 0x00311888,
+-	0x7174: 0x40311820, 0x7175: 0x00313488, 0x7176: 0x40313420, 0x7177: 0x00316488,
+-	0x7178: 0x00316e88, 0x7179: 0x40316e20, 0x717a: 0x40317820, 0x717b: 0x4031a620,
+-	0x717c: 0x0031bc88, 0x717d: 0x4031bc20, 0x717e: 0xe0000fc9, 0x717f: 0x40319420,
+-	// Block 0x1c6, offset 0x7180
+-	0x7180: 0x40321220, 0x7181: 0x40321a20, 0x7182: 0x40322220, 0x7183: 0x40322a20,
+-	0x7184: 0xe0000ad5, 0x7185: 0xe0000ad1, 0x7186: 0xe0000acd, 0x7187: 0xf0000a0a,
+-	0x7188: 0xf000040a, 0x7189: 0xf0000404, 0x718a: 0xf0000a0a, 0x718b: 0xf000040a,
+-	0x718c: 0xf0000404, 0x718d: 0xe0000947, 0x718e: 0xe0000944, 0x718f: 0xe000254c,
+-	0x7190: 0xe0000c3a, 0x7191: 0xe0000dcc, 0x7192: 0xe0000dc9, 0x7193: 0xe0000ff3,
+-	0x7194: 0xe0000ff0, 0x7195: 0xe00025a8, 0x7196: 0xe00025a5, 0x7197: 0xe0002596,
+-	0x7198: 0xe0002593, 0x7199: 0xe00025a2, 0x719a: 0xe000259f, 0x719b: 0xe000259c,
+-	0x719c: 0xe0002599, 0x719d: 0x402cae20, 0x719e: 0xe0000962, 0x719f: 0xe000095e,
+-	0x71a0: 0xe0000976, 0x71a1: 0xe0000972, 0x71a2: 0xe00009f4, 0x71a3: 0xe00009ef,
+-	0x71a4: 0x002d3a88, 0x71a5: 0x402d3a20, 0x71a6: 0xe0000bbe, 0x71a7: 0xe0000bbb,
+-	0x71a8: 0xe0000c99, 0x71a9: 0xe0000c96, 0x71aa: 0xe0000e20, 0x71ab: 0xe0000e1d,
+-	0x71ac: 0xe0000e27, 0x71ad: 0xe0000e23, 0x71ae: 0xe0001162, 0x71af: 0xe000115f,
+-	0x71b0: 0xe0000c8d, 0x71b1: 0xf0000a0a, 0x71b2: 0xf000040a, 0x71b3: 0xf0000404,
+-	0x71b4: 0xe0000bac, 0x71b5: 0xe0000ba9, 0x71b6: 0x002d7888, 0x71b7: 0x00319488,
+-	0x71b8: 0xe0000d57, 0x71b9: 0xe0000d54, 0x71ba: 0xe0000954, 0x71bb: 0xe0000950,
+-	0x71bc: 0xe00009ea, 0x71bd: 0xe00009e5, 0x71be: 0xe0000e19, 0x71bf: 0xe0000e15,
+-	// Block 0x1c7, offset 0x71c0
+-	0x71c0: 0xe000098f, 0x71c1: 0xe000098c, 0x71c2: 0xe0000995, 0x71c3: 0xe0000992,
+-	0x71c4: 0xe0000b62, 0x71c5: 0xe0000b5f, 0x71c6: 0xe0000b68, 0x71c7: 0xe0000b65,
+-	0x71c8: 0xe0002562, 0x71c9: 0xe0000c69, 0x71ca: 0xe0002565, 0x71cb: 0xe0000c6f,
+-	0x71cc: 0xe0000e4a, 0x71cd: 0xe0000e47, 0x71ce: 0xe0000e50, 0x71cf: 0xe0000e4d,
+-	0x71d0: 0xe0000ee8, 0x71d1: 0xe0000ee5, 0x71d2: 0xe0000eee, 0x71d3: 0xe0000eeb,
+-	0x71d4: 0xe0001053, 0x71d5: 0xe0001050, 0x71d6: 0xe0001059, 0x71d7: 0xe0001056,
+-	0x71d8: 0xe0000f61, 0x71d9: 0xe0000f5e, 0x71da: 0xe0000fa5, 0x71db: 0xe0000fa2,
+-	0x71dc: 0x00312288, 0x71dd: 0x40312220, 0x71de: 0xe0000bf4, 0x71df: 0xe0000bf1,
+-	0x71e0: 0x002ebc88, 0x71e1: 0x402c8c20, 0x71e2: 0x002f2288, 0x71e3: 0x402f2220,
+-	0x71e4: 0x00314088, 0x71e5: 0x40314020, 0x71e6: 0xe000096f, 0x71e7: 0xe000096c,
+-	0x71e8: 0xe0000b32, 0x71e9: 0xe0000b2f, 0x71ea: 0xe0002590, 0x71eb: 0xe000258d,
+-	0x71ec: 0xe0000dfd, 0x71ed: 0xe0000df9, 0x71ee: 0xe0000e04, 0x71ef: 0xe0000e01,
+-	0x71f0: 0xe0000e0b, 0x71f1: 0xe0000e07, 0x71f2: 0xe0001129, 0x71f3: 0xe0001126,
+-	0x71f4: 0x402e5e20, 0x71f5: 0x402ed020, 0x71f6: 0x40305a20, 0x71f7: 0x402dd420,
+-	0x71f8: 0xe0000abf, 0x71f9: 0xe0000ec4, 0x71fa: 0x002be888, 0x71fb: 0x002c4488,
+-	0x71fc: 0x402c4420, 0x71fd: 0x002e3888, 0x71fe: 0x00303e88, 0x71ff: 0x402ffc20,
+-	// Block 0x1c8, offset 0x7200
+-	0x7200: 0x40315820, 0x7201: 0x0031d488, 0x7202: 0x4031d420, 0x7203: 0x002c1a88,
+-	0x7204: 0x00307c88, 0x7205: 0x0030da88, 0x7206: 0x002ca288, 0x7207: 0x402ca220,
+-	0x7208: 0x002dde88, 0x7209: 0x402dde20, 0x720a: 0x002f6a88, 0x720b: 0x402f6a20,
+-	0x720c: 0x002f8e88, 0x720d: 0x402f8e20, 0x720e: 0x00311088, 0x720f: 0x40311020,
+-	0x7210: 0x402bf020, 0x7211: 0x402bf820, 0x7212: 0x402c0220, 0x7213: 0x402c2a20,
+-	0x7214: 0x402efa20, 0x7215: 0x402c5620, 0x7216: 0x402c7220, 0x7217: 0x402c7a20,
+-	0x7218: 0x402ccc20, 0x7219: 0x402c9a20, 0x721a: 0x402cd420, 0x721b: 0x402cc220,
+-	0x721c: 0x402cdc20, 0x721d: 0x402ce820, 0x721e: 0x402cf020, 0x721f: 0x402dee20,
+-	0x7220: 0x402d4420, 0x7221: 0x402d2a20, 0x7222: 0x402d3220, 0x7223: 0x402d5820,
+-	0x7224: 0x402d0020, 0x7225: 0x40308820, 0x7226: 0x402d8020, 0x7227: 0x402d8e20,
+-	0x7228: 0x402db620, 0x7229: 0x402dc220, 0x722a: 0x402daa20, 0x722b: 0x402e4220,
+-	0x722c: 0x402e4a20, 0x722d: 0x402e5420, 0x722e: 0x402e6820, 0x722f: 0x4030a020,
+-	0x7230: 0x4030ac20, 0x7231: 0x402e9020, 0x7232: 0x402eb420, 0x7233: 0x402ec820,
+-	0x7234: 0x402ea620, 0x7235: 0x402f1020, 0x7236: 0x402eee20, 0x7237: 0x402f1a20,
+-	0x7238: 0x402f4c20, 0x7239: 0x402f9820, 0x723a: 0x402fa220, 0x723b: 0x402fac20,
+-	0x723c: 0x402fb620, 0x723d: 0x402fbe20, 0x723e: 0x402fc620, 0x723f: 0x402fd020,
+-	// Block 0x1c9, offset 0x7240
+-	0x7240: 0xe00009b1, 0x7241: 0xe00009ae, 0x7242: 0xe0000a22, 0x7243: 0xe0000a1f,
+-	0x7244: 0xe0000a28, 0x7245: 0xe0000a25, 0x7246: 0xe0000a2e, 0x7247: 0xe0000a2b,
+-	0x7248: 0xe0002531, 0x7249: 0xe000252e, 0x724a: 0xe0000a8c, 0x724b: 0xe0000a89,
+-	0x724c: 0xe0000a98, 0x724d: 0xe0000a95, 0x724e: 0xe0000aa4, 0x724f: 0xe0000aa1,
+-	0x7250: 0xe0000a92, 0x7251: 0xe0000a8f, 0x7252: 0xe0000a9e, 0x7253: 0xe0000a9b,
+-	0x7254: 0xe0000b55, 0x7255: 0xe0000b51, 0x7256: 0xe0000b4d, 0x7257: 0xe0000b49,
+-	0x7258: 0xe0000b7c, 0x7259: 0xe0000b79, 0x725a: 0xe0000b82, 0x725b: 0xe0000b7f,
+-	0x725c: 0xe0000b39, 0x725d: 0xe0000b35, 0x725e: 0xe0000b8c, 0x725f: 0xe0000b89,
+-	0x7260: 0xe0000bd0, 0x7261: 0xe0000bcd, 0x7262: 0xe0000c00, 0x7263: 0xe0000bfd,
+-	0x7264: 0xe0000c0c, 0x7265: 0xe0000c09, 0x7266: 0xe0000bfa, 0x7267: 0xe0000bf7,
+-	0x7268: 0xe0000c06, 0x7269: 0xe0000c03, 0x726a: 0xe0000c12, 0x726b: 0xe0000c0f,
+-	0x726c: 0xe000256b, 0x726d: 0xe0000c7b, 0x726e: 0xe0002552, 0x726f: 0xe0000c46,
+-	0x7270: 0xe0000c93, 0x7271: 0xe0000c90, 0x7272: 0xe0000cab, 0x7273: 0xe0000ca8,
+-	0x7274: 0xe0000cb1, 0x7275: 0xe0000cae, 0x7276: 0xe0000cde, 0x7277: 0xe0000cdb,
+-	0x7278: 0xe0000ce5, 0x7279: 0xe0000ce1, 0x727a: 0xe0000cf2, 0x727b: 0xe0000cef,
+-	0x727c: 0xe0000cec, 0x727d: 0xe0000ce9, 0x727e: 0xe0000d1e, 0x727f: 0xe0000d1b,
+-	// Block 0x1ca, offset 0x7280
+-	0x7280: 0xe0000d24, 0x7281: 0xe0000d21, 0x7282: 0xe0000d2a, 0x7283: 0xe0000d27,
+-	0x7284: 0xe0000d69, 0x7285: 0xe0000d66, 0x7286: 0xe0000d7b, 0x7287: 0xe0000d78,
+-	0x7288: 0xe0000d87, 0x7289: 0xe0000d84, 0x728a: 0xe0000d81, 0x728b: 0xe0000d7e,
+-	0x728c: 0xe0000ded, 0x728d: 0xe0000de9, 0x728e: 0xe000258a, 0x728f: 0xe0002587,
+-	0x7290: 0xe0000e3d, 0x7291: 0xe0000e39, 0x7292: 0xe0000e35, 0x7293: 0xe0000e31,
+-	0x7294: 0xe0000ea7, 0x7295: 0xe0000ea4, 0x7296: 0xe0000ead, 0x7297: 0xe0000eaa,
+-	0x7298: 0xe0000ed6, 0x7299: 0xe0000ed3, 0x729a: 0xe0000ef4, 0x729b: 0xe0000ef1,
+-	0x729c: 0xe0000efb, 0x729d: 0xe0000ef7, 0x729e: 0xe0000f02, 0x729f: 0xe0000eff,
+-	0x72a0: 0xe0000f41, 0x72a1: 0xe0000f3e, 0x72a2: 0xe0000f53, 0x72a3: 0xe0000f50,
+-	0x72a4: 0xe0000f26, 0x72a5: 0xe0000f22, 0x72a6: 0xe0000f3a, 0x72a7: 0xe0000f36,
+-	0x72a8: 0xe0000f5a, 0x72a9: 0xe0000f56, 0x72aa: 0xe0000f93, 0x72ab: 0xe0000f90,
+-	0x72ac: 0xe0000f9f, 0x72ad: 0xe0000f9c, 0x72ae: 0xe0000fb1, 0x72af: 0xe0000fae,
+-	0x72b0: 0xe0000fab, 0x72b1: 0xe0000fa8, 0x72b2: 0xe0001093, 0x72b3: 0xe0001090,
+-	0x72b4: 0xe000109f, 0x72b5: 0xe000109c, 0x72b6: 0xe0001099, 0x72b7: 0xe0001096,
+-	0x72b8: 0xe0001032, 0x72b9: 0xe000102e, 0x72ba: 0xe00025a8, 0x72bb: 0xe00025a5,
+-	0x72bc: 0xe00010a9, 0x72bd: 0xe00010a6, 0x72be: 0xe00010af, 0x72bf: 0xe00010ac,
+-	// Block 0x1cb, offset 0x72c0
+-	0x72c0: 0xe00010d2, 0x72c1: 0xe00010cf, 0x72c2: 0xe00010cc, 0x72c3: 0xe00010c9,
+-	0x72c4: 0xe00010e1, 0x72c5: 0xe00010de, 0x72c6: 0xe00010e7, 0x72c7: 0xe00010e4,
+-	0x72c8: 0xe00010ed, 0x72c9: 0xe00010ea, 0x72ca: 0xe000253d, 0x72cb: 0xe000253a,
+-	0x72cc: 0xe0002537, 0x72cd: 0xe0002534, 0x72ce: 0xe0001123, 0x72cf: 0xe0001120,
+-	0x72d0: 0xe0001141, 0x72d1: 0xe000113e, 0x72d2: 0xe0001153, 0x72d3: 0xe0001150,
+-	0x72d4: 0xe0001159, 0x72d5: 0xe0001156, 0x72d6: 0xe0000c15, 0x72d7: 0xe0000f8d,
+-	0x72d8: 0xe00010db, 0x72d9: 0xe0001111, 0x72da: 0xf0000404, 0x72db: 0xe0000f70,
+-	0x72dc: 0x40300420, 0x72dd: 0x40300620, 0x72de: 0xe0000f7f, 0x72df: 0x402c9620,
+-	0x72e0: 0xe000099b, 0x72e1: 0xe0000998, 0x72e2: 0xe0000989, 0x72e3: 0xe0000986,
+-	0x72e4: 0xe0000928, 0x72e5: 0xe0000924, 0x72e6: 0xe0000930, 0x72e7: 0xe000092c,
+-	0x72e8: 0xe0000940, 0x72e9: 0xe000093c, 0x72ea: 0xe0000938, 0x72eb: 0xe0000934,
+-	0x72ec: 0xe00009aa, 0x72ed: 0xe00009a6, 0x72ee: 0xe0000902, 0x72ef: 0xe00008fe,
+-	0x72f0: 0xe000090a, 0x72f1: 0xe0000906, 0x72f2: 0xe000091a, 0x72f3: 0xe0000916,
+-	0x72f4: 0xe0000912, 0x72f5: 0xe000090e, 0x72f6: 0xe00009a2, 0x72f7: 0xe000099e,
+-	0x72f8: 0xe0000b6e, 0x72f9: 0xe0000b6b, 0x72fa: 0xe0000b5c, 0x72fb: 0xe0000b59,
+-	0x72fc: 0xe0000b26, 0x72fd: 0xe0000b23, 0x72fe: 0xe0000afb, 0x72ff: 0xe0000af7,
+-	// Block 0x1cc, offset 0x7300
+-	0x7300: 0xe0000b03, 0x7301: 0xe0000aff, 0x7302: 0xe0000b13, 0x7303: 0xe0000b0f,
+-	0x7304: 0xe0000b0b, 0x7305: 0xe0000b07, 0x7306: 0xe0000b75, 0x7307: 0xe0000b71,
+-	0x7308: 0xe000255f, 0x7309: 0xe0000c63, 0x730a: 0xe0002568, 0x730b: 0xe0000c75,
+-	0x730c: 0xe0000e84, 0x730d: 0xe0000e81, 0x730e: 0xe0000e44, 0x730f: 0xe0000e41,
+-	0x7310: 0xe0000dad, 0x7311: 0xe0000da9, 0x7312: 0xe0000db5, 0x7313: 0xe0000db1,
+-	0x7314: 0xe0000dc5, 0x7315: 0xe0000dc1, 0x7316: 0xe0000dbd, 0x7317: 0xe0000db9,
+-	0x7318: 0xe0000e8b, 0x7319: 0xe0000e87, 0x731a: 0xe0000e5d, 0x731b: 0xe0000e59,
+-	0x731c: 0xe0000e65, 0x731d: 0xe0000e61, 0x731e: 0xe0000e75, 0x731f: 0xe0000e71,
+-	0x7320: 0xe0000e6d, 0x7321: 0xe0000e69, 0x7322: 0xe0000e7d, 0x7323: 0xe0000e79,
+-	0x7324: 0xe000108d, 0x7325: 0xe000108a, 0x7326: 0xe000104d, 0x7327: 0xe000104a,
+-	0x7328: 0xe0001066, 0x7329: 0xe0001062, 0x732a: 0xe000106e, 0x732b: 0xe000106a,
+-	0x732c: 0xe000107e, 0x732d: 0xe000107a, 0x732e: 0xe0001076, 0x732f: 0xe0001072,
+-	0x7330: 0xe0001086, 0x7331: 0xe0001082, 0x7332: 0xe0001108, 0x7333: 0xe0001105,
+-	0x7334: 0xe0001135, 0x7335: 0xe0001132, 0x7336: 0xe000112f, 0x7337: 0xe000112c,
+-	0x7338: 0xe000111d, 0x7339: 0xe000111a, 0x733a: 0xe0000d0a, 0x733b: 0xe0000d07,
+-	0x733c: 0x0030d888, 0x733d: 0x4030d820, 0x733e: 0x00312088, 0x733f: 0x40312020,
+-	// Block 0x1cd, offset 0x7340
+-	0x7340: 0x00093685, 0x7341: 0x40083620, 0x7342: 0x40083820, 0x7343: 0x40083a20,
+-	0x7344: 0x40083c20, 0x7345: 0x002c628b, 0x7346: 0x002c6285, 0x7347: 0x002c9885,
+-	0x7348: 0x002d9a85, 0x7349: 0x002dcc85, 0x734a: 0x40083e20, 0x734b: 0x400a6e20,
+-	0x734c: 0x40084020, 0x734d: 0xe00009c4, 0x734e: 0x402d1e20, 0x734f: 0x40084220,
+-	0x7350: 0xe00002cb, 0x7351: 0xe00002d3, 0x7352: 0xe00002b2, 0x7353: 0xe00002bb,
+-	0x7354: 0xe00003cd, 0x7355: 0xe00002c3, 0x7356: 0xe00003d1, 0x7357: 0xe00004ab,
+-	0x7358: 0xe0000579, 0x7359: 0xe00002c7, 0x735a: 0xe0000640, 0x735b: 0xe00002cf,
+-	0x735c: 0xe00004af, 0x735d: 0xe0000644, 0x735e: 0xe0000798, 0x735f: 0xf0001e1e,
+-	0x7360: 0x002d9a8a, 0x7361: 0xe000256e, 0x7362: 0xe0002571, 0x7363: 0xe000257b,
+-	0x7364: 0x0030be8a, 0x7365: 0xe00025ab, 0x7366: 0xe00025ae, 0x7367: 0xe00010bb,
+-	0x7368: 0xe0002581, 0x7369: 0x0030f68a, 0x736a: 0xe00025b5, 0x736b: 0xe00025bc,
+-	0x736c: 0x002e228a, 0x736d: 0x002c3a8a, 0x736e: 0x002c628a, 0x736f: 0x002e828a,
+-	0x7370: 0x002d9a84, 0x7371: 0xf0001f04, 0x7372: 0xf0000404, 0x7373: 0xf0001f04,
+-	0x7374: 0x0030be84, 0x7375: 0xf0001f04, 0x7376: 0xf0000404, 0x7377: 0xe00010b6,
+-	0x7378: 0xe000257e, 0x7379: 0x0030f684, 0x737a: 0xe00025b2, 0x737b: 0xe00025b8,
+-	0x737c: 0x002e2284, 0x737d: 0x002c3a84, 0x737e: 0x002c6284, 0x737f: 0x002e8284,
+-	// Block 0x1ce, offset 0x7380
+-	0x7380: 0xe0000024, 0x7381: 0xe0000029, 0x7382: 0xe000002e, 0x7383: 0xe0000033,
+-	0x7384: 0xe0000038, 0x7385: 0xe000003d, 0x7386: 0xe0000042, 0x7387: 0xe0000047,
+-	0x7388: 0xf0001f04, 0x7389: 0xf0001f04, 0x738a: 0xf0001f04, 0x738b: 0xf0001f04,
+-	0x738c: 0xf0001f04, 0x738d: 0xf0001f04, 0x738e: 0xf0001f04, 0x738f: 0xf0001f04,
+-	0x7390: 0xf0001f04, 0x7391: 0xf0000404, 0x7392: 0xf0000404, 0x7393: 0xf0000404,
+-	0x7394: 0xf0000404, 0x7395: 0xf0000404, 0x7396: 0xf0000404, 0x7397: 0xf0000404,
+-	0x7398: 0xf0000404, 0x7399: 0xf0000404, 0x739a: 0xf0000404, 0x739b: 0xf0000404,
+-	0x739c: 0xf0000404, 0x739d: 0xf0000404, 0x739e: 0xf0000404, 0x739f: 0xf0000404,
+-	0x73a0: 0xf0000404, 0x73a1: 0xf0000404, 0x73a2: 0xf0000404, 0x73a3: 0xf0000404,
+-	0x73a4: 0xf0000404, 0x73a5: 0xf0000404, 0x73a6: 0xf0000404, 0x73a7: 0xf0000404,
+-	0x73a8: 0xf0000404, 0x73a9: 0xf0000404, 0x73aa: 0xf0000404, 0x73ab: 0xf0000404,
+-	0x73ac: 0xe000251b, 0x73ad: 0xf0000404, 0x73ae: 0xf0000404, 0x73af: 0xf0000404,
+-	0x73b0: 0xf0000404, 0x73b1: 0xf0000404, 0x73b2: 0xf0000404, 0x73b3: 0xe0002523,
+-	0x73b4: 0xf0000404, 0x73b5: 0xf0000404, 0x73b6: 0x002bde8c, 0x73b7: 0x002c0a8c,
+-	0x73b8: 0x002c3a8c, 0x73b9: 0x002c628c, 0x73ba: 0x002c988c, 0x73bb: 0x002d088c,
+-	0x73bc: 0x002d228c, 0x73bd: 0x002d688c, 0x73be: 0x002d9a8c, 0x73bf: 0x002dcc8c,
+-	// Block 0x1cf, offset 0x73c0
+-	0x73c0: 0xe000230b, 0x73c1: 0xe00022f8, 0x73c2: 0xe00022fc, 0x73c3: 0xe0002311,
+-	0x73c4: 0xe0002316, 0x73c5: 0xe000231d, 0x73c6: 0xe0002321, 0x73c7: 0xe0002325,
+-	0x73c8: 0xe000232b, 0x73c9: 0xf0001c1c, 0x73ca: 0xe0002330, 0x73cb: 0xe000233c,
+-	0x73cc: 0xe0002340, 0x73cd: 0xe0002337, 0x73ce: 0xe0002346, 0x73cf: 0xe000234b,
+-	0x73d0: 0xe000234f, 0x73d1: 0xe0002353, 0x73d2: 0xf0001c1c, 0x73d3: 0xe000235e,
+-	0x73d4: 0xe0002358, 0x73d5: 0xf0001c1c, 0x73d6: 0xe0002363, 0x73d7: 0xe000236d,
+-	0x73d8: 0xf0001f04, 0x73d9: 0xf0001f04, 0x73da: 0xf0001f04, 0x73db: 0xf0001f04,
+-	0x73dc: 0xf0001f04, 0x73dd: 0xf0001f04, 0x73de: 0xf0001f04, 0x73df: 0xf0001f04,
+-	0x73e0: 0xf0001f04, 0x73e1: 0xf0001f04, 0x73e2: 0xf0000404, 0x73e3: 0xf0000404,
+-	0x73e4: 0xf0000404, 0x73e5: 0xf0000404, 0x73e6: 0xf0000404, 0x73e7: 0xf0000404,
+-	0x73e8: 0xf0000404, 0x73e9: 0xf0000404, 0x73ea: 0xf0000404, 0x73eb: 0xf0000404,
+-	0x73ec: 0xf0000404, 0x73ed: 0xf0000404, 0x73ee: 0xf0000404, 0x73ef: 0xf0000404,
+-	0x73f0: 0xf0000404, 0x73f1: 0xe0000c1e, 0x73f2: 0xf0001c1c, 0x73f3: 0xf0001d1d,
+-	0x73f4: 0xe0000a31, 0x73f5: 0xf0001d1c, 0x73f6: 0xf0001c1c, 0x73f7: 0xf0001c1c,
+-	0x73f8: 0xe0000ac2, 0x73f9: 0xe0000ac6, 0x73fa: 0xe0002578, 0x73fb: 0xf0001c1c,
+-	0x73fc: 0xf0001c1c, 0x73fd: 0xf0001c1c, 0x73fe: 0xf0001c1c, 0x73ff: 0xe0002431,
+-	// Block 0x1d0, offset 0x7400
+-	0x7400: 0xf0001d1c, 0x7401: 0xf0001d1d, 0x7402: 0xe00009b7, 0x7403: 0xe000252b,
+-	0x7404: 0xf0001c1c, 0x7405: 0xf0001c1c, 0x7406: 0xe0000a66, 0x7407: 0xe0000a7a,
+-	0x7408: 0xf0001d1c, 0x7409: 0xf0001c1d, 0x740a: 0xf0001c1c, 0x740b: 0xf0001d1d,
+-	0x740c: 0xf0001c1c, 0x740d: 0xf0001d1d, 0x740e: 0xf0001d1d, 0x740f: 0xf0001c1c,
+-	0x7410: 0xf0001c1c, 0x7411: 0xf0001c1c, 0x7412: 0xe0000d0d, 0x7413: 0xe0002584,
+-	0x7414: 0xf0001c1c, 0x7415: 0xe0000d3a, 0x7416: 0xe0000d46, 0x7417: 0xf0001d1d,
+-	0x7418: 0xe0000eb0, 0x7419: 0xe0000eb8, 0x741a: 0xf0001d1d, 0x741b: 0xf0001c1c,
+-	0x741c: 0xf0001c1d, 0x741d: 0xf0001c1d, 0x741e: 0xe00010b2, 0x741f: 0xe00009c8,
+-	0x7420: 0xf0001f04, 0x7421: 0xf0001f04, 0x7422: 0xf0001f04, 0x7423: 0xf0001f04,
+-	0x7424: 0xf0001f04, 0x7425: 0xf0001f04, 0x7426: 0xf0001f04, 0x7427: 0xf0001f04,
+-	0x7428: 0xf0001f04, 0x7429: 0xf0000404, 0x742a: 0xf0000404, 0x742b: 0xf0000404,
+-	0x742c: 0xf0000404, 0x742d: 0xf0000404, 0x742e: 0xf0000404, 0x742f: 0xf0000404,
+-	0x7430: 0xf0000404, 0x7431: 0xf0000404, 0x7432: 0xf0000404, 0x7433: 0xf0000404,
+-	0x7434: 0xf0000404, 0x7435: 0xf0000404, 0x7436: 0xf0000404, 0x7437: 0xf0000404,
+-	0x7438: 0xf0000404, 0x7439: 0xf0000404, 0x743a: 0xf0000404, 0x743b: 0xf0000404,
+-	0x743c: 0xf0000404, 0x743d: 0xf0000404, 0x743e: 0xf0000404, 0x743f: 0xe0000bdf,
+-	// Block 0x1d1, offset 0x7440
+-	0x7440: 0xf0001f04, 0x7441: 0xf0001f04, 0x7442: 0xf0001f04, 0x7443: 0xf0001f04,
+-	0x7444: 0xf0001f04, 0x7445: 0xf0001f04, 0x7446: 0xf0001f04, 0x7447: 0xf0001f04,
+-	0x7448: 0xf0001f04, 0x7449: 0xf0001f04, 0x744a: 0xf0001f04,
+-	0x7450: 0xf0000a04, 0x7451: 0xf0000a04, 0x7452: 0xf0000a04, 0x7453: 0xf0000a04,
+-	0x7454: 0xf0000a04, 0x7455: 0xf0000a04, 0x7456: 0xf0000a04, 0x7457: 0xf0000a04,
+-	0x7458: 0xe0002517, 0x7459: 0xf0000a04, 0x745a: 0xf0000a04, 0x745b: 0xf0000a04,
+-	0x745c: 0xf0000a04, 0x745d: 0xf0000a04, 0x745e: 0xf0000a04, 0x745f: 0xf0000a04,
+-	0x7460: 0xe000251f, 0x7461: 0xf0000a04, 0x7462: 0xf0000a04, 0x7463: 0xf0000a04,
+-	0x7464: 0xf0000a04, 0x7465: 0xf0000a04, 0x7466: 0xf0000a04, 0x7467: 0xe0002527,
+-	0x7468: 0xf0000a04, 0x7469: 0xf0000a04, 0x746a: 0xf0000a04, 0x746b: 0x002c3a8c,
+-	0x746c: 0x002f7a8c, 0x746d: 0xf0000c0c, 0x746e: 0xf0000c0c,
+-	0x7470: 0x002bde9d, 0x7471: 0x002c0a9d, 0x7472: 0x002c3a9d, 0x7473: 0x002c629d,
+-	0x7474: 0x002c989d, 0x7475: 0x002d089d, 0x7476: 0x002d229d, 0x7477: 0x002d689d,
+-	0x7478: 0x002d9a9d, 0x7479: 0x002dcc9d, 0x747a: 0x002dfe9d, 0x747b: 0x002e229d,
+-	0x747c: 0x002e829d, 0x747d: 0x002e9e9d, 0x747e: 0x002ee29d, 0x747f: 0x002f2c9d,
+-	// Block 0x1d2, offset 0x7480
+-	0x7480: 0xe00014bd, 0x7481: 0x0033b483, 0x7482: 0x00339688, 0x7483: 0x0033a288,
+-	0x7484: 0x0033c288, 0x7485: 0x0033fc88, 0x7486: 0xc02a0071, 0x7487: 0x00343688,
+-	0x7488: 0x00344688, 0x7489: 0x00349a88, 0x748a: 0x0034e488, 0x748b: 0x00356288,
+-	0x748c: 0x00356a88, 0x748d: 0xe00014cf, 0x748e: 0x00357a88, 0x748f: 0x00365488,
+-	0x7490: 0xc0090041, 0x7491: 0x00335288, 0x7492: 0x00335a88, 0x7493: 0xc0130092,
+-	0x7494: 0x00338a88, 0x7495: 0xc34c0041, 0x7496: 0xc01c0071, 0x7497: 0xc0200071,
+-	0x7498: 0xc0250041, 0x7499: 0x00343e88, 0x749a: 0xc0370092, 0x749b: 0x00348488,
+-	0x749c: 0x0034a888, 0x749d: 0x0034ba88, 0x749e: 0xc02e0071, 0x749f: 0x00350e88,
+-	0x74a0: 0x00352888, 0x74a1: 0x00353a88, 0x74a2: 0x00354c88, 0x74a3: 0xc03e00f1,
+-	0x74a4: 0x0035ac88, 0x74a5: 0x0035b488, 0x74a6: 0x00360288, 0x74a7: 0xc0440071,
+-	0x74a8: 0x00365c88, 0x74a9: 0x00366688, 0x74aa: 0x00367488, 0x74ab: 0xc0480071,
+-	0x74ac: 0x00368e88, 0x74ad: 0xc04c0071, 0x74ae: 0x0036b888, 0x74af: 0x0036c488,
+-	0x74b0: 0xc0060041, 0x74b1: 0x40335220, 0x74b2: 0x40335a20, 0x74b3: 0xc0100092,
+-	0x74b4: 0x40338a20, 0x74b5: 0xc3490041, 0x74b6: 0xc01a0071, 0x74b7: 0xc01e0071,
+-	0x74b8: 0xc0220041, 0x74b9: 0x40343e20, 0x74ba: 0xc0340092, 0x74bb: 0x40348420,
+-	0x74bc: 0x4034a820, 0x74bd: 0x4034ba20, 0x74be: 0xc02c0071, 0x74bf: 0x40350e20,
+-	// Block 0x1d3, offset 0x74c0
+-	0x74c0: 0x40352820, 0x74c1: 0x40353a20, 0x74c2: 0x40354c20, 0x74c3: 0xc03a00f1,
+-	0x74c4: 0x4035ac20, 0x74c5: 0x4035b420, 0x74c6: 0x40360220, 0x74c7: 0xc0420071,
+-	0x74c8: 0x40365c20, 0x74c9: 0x40366620, 0x74ca: 0x40367420, 0x74cb: 0xc0460071,
+-	0x74cc: 0x40368e20, 0x74cd: 0xc04a0071, 0x74ce: 0x4036b820, 0x74cf: 0x4036c420,
+-	0x74d0: 0xe00014ba, 0x74d1: 0x4033b420, 0x74d2: 0x40339620, 0x74d3: 0x4033a220,
+-	0x74d4: 0x4033c220, 0x74d5: 0x4033fc20, 0x74d6: 0xc0280071, 0x74d7: 0x40343620,
+-	0x74d8: 0x40344620, 0x74d9: 0x40349a20, 0x74da: 0x4034e420, 0x74db: 0x40356220,
+-	0x74dc: 0x40356a20, 0x74dd: 0xe00014cc, 0x74de: 0x40357a20, 0x74df: 0x40365420,
+-	0x74e0: 0x0035e088, 0x74e1: 0x4035e020, 0x74e2: 0x00369e88, 0x74e3: 0x40369e20,
+-	0x74e4: 0x0036ce88, 0x74e5: 0x4036ce20, 0x74e6: 0x0036d688, 0x74e7: 0x4036d620,
+-	0x74e8: 0x0036ea88, 0x74e9: 0x4036ea20, 0x74ea: 0x0036e088, 0x74eb: 0x4036e020,
+-	0x74ec: 0x0036f488, 0x74ed: 0x4036f420, 0x74ee: 0x0036fc88, 0x74ef: 0x4036fc20,
+-	0x74f0: 0x00370488, 0x74f1: 0x40370420, 0x74f2: 0x00370c88, 0x74f3: 0x40370c20,
+-	0x74f4: 0xc0500131, 0x74f5: 0xc04e0131, 0x74f6: 0x00371c88, 0x74f7: 0x40371c20,
+-	0x74f8: 0x0035a488, 0x74f9: 0x4035a420, 0x74fa: 0x0035fa88, 0x74fb: 0x4035fa20,
+-	0x74fc: 0x0035f288, 0x74fd: 0x4035f220, 0x74fe: 0x0035e888, 0x74ff: 0x4035e820,
+-	// Block 0x1d4, offset 0x7500
+-	0x7501: 0x40409c20, 0x7502: 0x40409820, 0x7503: 0x40409a20,
+-	0x7505: 0x40407c20, 0x7506: 0x40407e20, 0x7507: 0x40408020,
+-	0x7508: 0x40408220, 0x7509: 0x40408420, 0x750a: 0x40408620, 0x750b: 0x40408820,
+-	0x750c: 0x40408c20, 0x750f: 0x40409020,
+-	0x7510: 0x40409220, 0x7513: 0x40409420,
+-	0x7514: 0x40409620, 0x7515: 0x40409820, 0x7516: 0x40409a20, 0x7517: 0x40409c20,
+-	0x7518: 0x40409e20, 0x7519: 0x4040a020, 0x751a: 0x4040a220, 0x751b: 0x4040a420,
+-	0x751c: 0x4040a620, 0x751d: 0x4040a820, 0x751e: 0x4040aa20, 0x751f: 0x4040ac20,
+-	0x7520: 0x4040ae20, 0x7521: 0x4040b020, 0x7522: 0x4040b220, 0x7523: 0x4040b420,
+-	0x7524: 0x4040b620, 0x7525: 0x4040b820, 0x7526: 0x4040ba20, 0x7527: 0x4040bc20,
+-	0x7528: 0x4040be20, 0x752a: 0x4040c020, 0x752b: 0x4040c220,
+-	0x752c: 0x4040c420, 0x752d: 0x4040c620, 0x752e: 0x4040c820, 0x752f: 0x4040ca20,
+-	0x7530: 0x4040cc20, 0x7532: 0x4040d020,
+-	0x7536: 0x4040d420, 0x7537: 0x4040d620,
+-	0x7538: 0x4040d820, 0x7539: 0x4040da20,
+-	0x753c: 0xa070f102, 0x753d: 0x4040dc20, 0x753e: 0x4040de20, 0x753f: 0x4040e020,
+-	// Block 0x1d5, offset 0x7540
+-	0x7540: 0xa0000000, 0x7541: 0xa0000000, 0x7542: 0xa0000000, 0x7543: 0xa0000000,
+-	0x7544: 0xa0000000, 0x7545: 0xa0000000, 0x7546: 0xa0000000, 0x7547: 0xa0000000,
+-	0x7548: 0xa0000000, 0x7549: 0x40020020, 0x754a: 0x40020220, 0x754b: 0x40020420,
+-	0x754c: 0x40020620, 0x754d: 0x40020820, 0x754e: 0xa0000000, 0x754f: 0xa0000000,
+-	0x7550: 0xa0000000, 0x7551: 0xa0000000, 0x7552: 0xa0000000, 0x7553: 0xa0000000,
+-	0x7554: 0xa0000000, 0x7555: 0xa0000000, 0x7556: 0xa0000000, 0x7557: 0xa0000000,
+-	0x7558: 0xa0000000, 0x7559: 0xa0000000, 0x755a: 0xa0000000, 0x755b: 0xa0000000,
+-	0x755c: 0xa0000000, 0x755d: 0xa0000000, 0x755e: 0xa0000000, 0x755f: 0xa0000000,
+-	0x7560: 0x40021220, 0x7561: 0x4002ba20, 0x7562: 0x4003e020, 0x7563: 0x4004ea20,
+-	0x7564: 0x4027de20, 0x7565: 0x4004ec20, 0x7566: 0x4004e620, 0x7567: 0x4003d220,
+-	0x7568: 0x4003f420, 0x7569: 0x4003f620, 0x756a: 0x4004d820, 0x756b: 0x40093820,
+-	0x756c: 0x40024020, 0x756d: 0x40021a20, 0x756e: 0x4002e420, 0x756f: 0x4004e220,
+-	0x7570: 0x4029cc20, 0x7571: 0x4029ce20, 0x7572: 0x4029d020, 0x7573: 0x4029d220,
+-	0x7574: 0x4029d420, 0x7575: 0x4029d620, 0x7576: 0x4029d820, 0x7577: 0x4029da20,
+-	0x7578: 0x4029dc20, 0x7579: 0x4029de20, 0x757a: 0x40026c20, 0x757b: 0x40026220,
+-	0x757c: 0x40094020, 0x757d: 0x40094220, 0x757e: 0x40094420, 0x757f: 0x4002c420,
+-	// Block 0x1d6, offset 0x7580
+-	0x7580: 0x4004d620, 0x7581: 0x002bde88, 0x7582: 0x002c0a88, 0x7583: 0x002c3a88,
+-	0x7584: 0x002c6288, 0x7585: 0x002c9888, 0x7586: 0x002d0888, 0x7587: 0x002d2288,
+-	0x7588: 0x002d6888, 0x7589: 0x002d9a88, 0x758a: 0x002dcc88, 0x758b: 0x002dfe88,
+-	0x758c: 0xc3520002, 0x758d: 0x002e8288, 0x758e: 0x002e9e88, 0x758f: 0x002ee288,
+-	0x7590: 0x002f2c88, 0x7591: 0x002f5688, 0x7592: 0x002f7a88, 0x7593: 0x002fe688,
+-	0x7594: 0x00302c88, 0x7595: 0x00306c88, 0x7596: 0x0030be88, 0x7597: 0x0030e288,
+-	0x7598: 0x0030f688, 0x7599: 0x00310088, 0x759a: 0x00312a88, 0x759b: 0x4003f820,
+-	0x759c: 0x4004e420, 0x759d: 0x4003fa20, 0x759e: 0x40062420, 0x759f: 0x40021620,
+-	0x75a0: 0x40061e20, 0x75a1: 0x402bde20, 0x75a2: 0x402c0a20, 0x75a3: 0x402c3a20,
+-	0x75a4: 0x402c6220, 0x75a5: 0x402c9820, 0x75a6: 0x402d0820, 0x75a7: 0x402d2220,
+-	0x75a8: 0x402d6820, 0x75a9: 0x402d9a20, 0x75aa: 0x402dcc20, 0x75ab: 0x402dfe20,
+-	0x75ac: 0xc34f0002, 0x75ad: 0x402e8220, 0x75ae: 0x402e9e20, 0x75af: 0x402ee220,
+-	0x75b0: 0x402f2c20, 0x75b1: 0x402f5620, 0x75b2: 0x402f7a20, 0x75b3: 0x402fe620,
+-	0x75b4: 0x40302c20, 0x75b5: 0x40306c20, 0x75b6: 0x4030be20, 0x75b7: 0x4030e220,
+-	0x75b8: 0x4030f620, 0x75b9: 0x40310020, 0x75ba: 0x40312a20, 0x75bb: 0x4003fc20,
+-	0x75bc: 0x40094820, 0x75bd: 0x4003fe20, 0x75be: 0x40094c20, 0x75bf: 0xa0000000,
+-	// Block 0x1d7, offset 0x75c0
+-	0x75c0: 0xe0000983, 0x75c1: 0xe0000980, 0x75c2: 0xe00008fb, 0x75c3: 0xe00008f8,
+-	0x75c4: 0xe000097d, 0x75c5: 0xe000097a, 0x75c6: 0xe0000a38, 0x75c7: 0xe0000a35,
+-	0x75c8: 0xe0000a3e, 0x75c9: 0xe0000a3b, 0x75ca: 0xe0000a4a, 0x75cb: 0xe0000a47,
+-	0x75cc: 0xe0000a44, 0x75cd: 0xe0000a41, 0x75ce: 0xe0000a86, 0x75cf: 0xe0000a83,
+-	0x75d0: 0xe0000aaa, 0x75d1: 0xe0000aa7, 0x75d2: 0xe0000b46, 0x75d3: 0xe0000b43,
+-	0x75d4: 0xe0000aee, 0x75d5: 0xe0000aeb, 0x75d6: 0xe0000b2c, 0x75d7: 0xe0000b29,
+-	0x75d8: 0xe0000b40, 0x75d9: 0xe0000b3d, 0x75da: 0xe0000b1a, 0x75db: 0xe0000b17,
+-	0x75dc: 0xe0000bb8, 0x75dd: 0xe0000bb5, 0x75de: 0xe0000bb2, 0x75df: 0xe0000baf,
+-	0x75e0: 0xe0000bc4, 0x75e1: 0xe0000bc1, 0x75e2: 0xe0000bca, 0x75e3: 0xe0000bc7,
+-	0x75e4: 0xe0000bee, 0x75e5: 0xe0000beb, 0x75e6: 0xe0000c1b, 0x75e7: 0xe0000c18,
+-	0x75e8: 0xe0000c51, 0x75e9: 0xe0000c4e, 0x75ea: 0xe0000c60, 0x75eb: 0xe0000c5d,
+-	0x75ec: 0xe0000c31, 0x75ed: 0xe0000c2e, 0x75ee: 0xe0000c5a, 0x75ef: 0xe0000c57,
+-	0x75f0: 0xe0000c54, 0x75f1: 0x402da220, 0x75f2: 0xf0000a0a, 0x75f3: 0xf0000404,
+-	0x75f4: 0xe0000c8a, 0x75f5: 0xe0000c87, 0x75f6: 0xe0000c9f, 0x75f7: 0xe0000c9c,
+-	0x75f8: 0x402f7220, 0x75f9: 0xe0000ccc, 0x75fa: 0xe0000cc9, 0x75fb: 0xe0000cd8,
+-	0x75fc: 0xe0000cd5, 0x75fd: 0xe0000cd2, 0x75fe: 0xe0000ccf, 0x75ff: 0x002e22a3,
+-	// Block 0x1d8, offset 0x7600
+-	0x7600: 0x402e2221, 0x7601: 0xe0000cf8, 0x7602: 0xe0000cf5, 0x7603: 0xe0000d51,
+-	0x7604: 0xe0000d4e, 0x7605: 0xe0000d6f, 0x7606: 0xe0000d6c, 0x7607: 0xe0000d5d,
+-	0x7608: 0xe0000d5a, 0x7609: 0xf0000404, 0x760a: 0x002eda88, 0x760b: 0x402eda20,
+-	0x760c: 0xe0000e2e, 0x760d: 0xe0000e2b, 0x760e: 0xe0000da0, 0x760f: 0xe0000d9d,
+-	0x7610: 0xe0000de0, 0x7611: 0xe0000ddd, 0x7612: 0xe0000e93, 0x7613: 0xe0000e8f,
+-	0x7614: 0xe0000eca, 0x7615: 0xe0000ec7, 0x7616: 0xe0000edc, 0x7617: 0xe0000ed9,
+-	0x7618: 0xe0000ed0, 0x7619: 0xe0000ecd, 0x761a: 0xe0000f1f, 0x761b: 0xe0000f1c,
+-	0x761c: 0xe0000f2d, 0x761d: 0xe0000f2a, 0x761e: 0xe0000f47, 0x761f: 0xe0000f44,
+-	0x7620: 0xe0000f33, 0x7621: 0xe0000f30, 0x7622: 0xe0000f99, 0x7623: 0xe0000f96,
+-	0x7624: 0xe0000f8a, 0x7625: 0xe0000f87, 0x7626: 0x00303688, 0x7627: 0x40303620,
+-	0x7628: 0xe000102b, 0x7629: 0xe0001028, 0x762a: 0xe000103f, 0x762b: 0xe000103c,
+-	0x762c: 0xe0000fe7, 0x762d: 0xe0000fe4, 0x762e: 0xe0000ff9, 0x762f: 0xe0000ff6,
+-	0x7630: 0xe0001025, 0x7631: 0xe0001022, 0x7632: 0xe0001039, 0x7633: 0xe0001036,
+-	0x7634: 0xe00010d8, 0x7635: 0xe00010d5, 0x7636: 0xe000110e, 0x7637: 0xe000110b,
+-	0x7638: 0xe0001117, 0x7639: 0xe000113b, 0x763a: 0xe0001138, 0x763b: 0xe000114d,
+-	0x763c: 0xe000114a, 0x763d: 0xe0001147, 0x763e: 0xe0001144, 0x763f: 0xe0000f64,
+-	// Block 0x1d9, offset 0x7640
+-	0x7640: 0xa0000000, 0x7641: 0xa0000000, 0x7642: 0xa0000000, 0x7643: 0xa0000000,
+-	0x7644: 0xa0000000, 0x7645: 0xa0000000, 0x7646: 0xa0000000, 0x7647: 0xa0000000,
+-	0x7648: 0xa0000000, 0x7649: 0x40020020, 0x764a: 0x40020220, 0x764b: 0x40020420,
+-	0x764c: 0x40020620, 0x764d: 0x40020820, 0x764e: 0xa0000000, 0x764f: 0xa0000000,
+-	0x7650: 0xa0000000, 0x7651: 0xa0000000, 0x7652: 0xa0000000, 0x7653: 0xa0000000,
+-	0x7654: 0xa0000000, 0x7655: 0xa0000000, 0x7656: 0xa0000000, 0x7657: 0xa0000000,
+-	0x7658: 0xa0000000, 0x7659: 0xa0000000, 0x765a: 0xa0000000, 0x765b: 0xa0000000,
+-	0x765c: 0xa0000000, 0x765d: 0xa0000000, 0x765e: 0xa0000000, 0x765f: 0xa0000000,
+-	0x7660: 0x40021220, 0x7661: 0x4002ba20, 0x7662: 0x4003e020, 0x7663: 0x4004ea20,
+-	0x7664: 0x4027de20, 0x7665: 0x4004ec20, 0x7666: 0x4004e620, 0x7667: 0x4003d220,
+-	0x7668: 0x4003f420, 0x7669: 0x4003f620, 0x766a: 0x4004d820, 0x766b: 0x40093820,
+-	0x766c: 0x40024020, 0x766d: 0x40021a20, 0x766e: 0x4002e420, 0x766f: 0x4004e220,
+-	0x7670: 0x4029cc20, 0x7671: 0x4029ce20, 0x7672: 0x4029d020, 0x7673: 0x4029d220,
+-	0x7674: 0x4029d420, 0x7675: 0x4029d620, 0x7676: 0x4029d820, 0x7677: 0x4029da20,
+-	0x7678: 0x4029dc20, 0x7679: 0x4029de20, 0x767a: 0x40026c20, 0x767b: 0x40026220,
+-	0x767c: 0x40094020, 0x767d: 0x40094220, 0x767e: 0x40094420, 0x767f: 0x4002c420,
+-	// Block 0x1da, offset 0x7680
+-	0x7680: 0x4004d620, 0x7681: 0x002bde88, 0x7682: 0x002c0a88, 0x7683: 0xc3590953,
+-	0x7684: 0x002c6288, 0x7685: 0x002c9888, 0x7686: 0x002d0888, 0x7687: 0x002d2288,
+-	0x7688: 0x002d6888, 0x7689: 0x002d9a88, 0x768a: 0x002dcc88, 0x768b: 0x002dfe88,
+-	0x768c: 0xc0030002, 0x768d: 0x002e8288, 0x768e: 0x002e9e88, 0x768f: 0x002ee288,
+-	0x7690: 0x002f2c88, 0x7691: 0x002f5688, 0x7692: 0xc35f0991, 0x7693: 0xc3430991,
+-	0x7694: 0x00302c88, 0x7695: 0x00306c88, 0x7696: 0x0030be88, 0x7697: 0x0030e288,
+-	0x7698: 0x0030f688, 0x7699: 0x00310088, 0x769a: 0xc3630991, 0x769b: 0x4003f820,
+-	0x769c: 0x4004e420, 0x769d: 0x4003fa20, 0x769e: 0x40062420, 0x769f: 0x40021620,
+-	0x76a0: 0x40061e20, 0x76a1: 0x402bde20, 0x76a2: 0x402c0a20, 0x76a3: 0xc3550953,
+-	0x76a4: 0x402c6220, 0x76a5: 0x402c9820, 0x76a6: 0x402d0820, 0x76a7: 0x402d2220,
+-	0x76a8: 0x402d6820, 0x76a9: 0x402d9a20, 0x76aa: 0x402dcc20, 0x76ab: 0x402dfe20,
+-	0x76ac: 0xc0000002, 0x76ad: 0x402e8220, 0x76ae: 0x402e9e20, 0x76af: 0x402ee220,
+-	0x76b0: 0x402f2c20, 0x76b1: 0x402f5620, 0x76b2: 0xc35d0991, 0x76b3: 0xc3410991,
+-	0x76b4: 0x40302c20, 0x76b5: 0x40306c20, 0x76b6: 0x4030be20, 0x76b7: 0x4030e220,
+-	0x76b8: 0x4030f620, 0x76b9: 0x40310020, 0x76ba: 0xc3610991, 0x76bb: 0x4003fc20,
+-	0x76bc: 0x40094820, 0x76bd: 0x4003fe20, 0x76be: 0x40094c20, 0x76bf: 0xa0000000,
+-	// Block 0x1db, offset 0x76c0
+-	0x76c0: 0xe0000983, 0x76c1: 0xe0000980, 0x76c2: 0xe00008fb, 0x76c3: 0xe00008f8,
+-	0x76c4: 0xe000097d, 0x76c5: 0xe000097a, 0x76c6: 0xe0000a38, 0x76c7: 0xe0000a35,
+-	0x76c8: 0xe0000a3e, 0x76c9: 0xe0000a3b, 0x76ca: 0xe0000a4a, 0x76cb: 0xe0000a47,
+-	0x76cc: 0x002c3c83, 0x76cd: 0x402c3c20, 0x76ce: 0xe0000a86, 0x76cf: 0xe0000a83,
+-	0x76d0: 0xe0000aaa, 0x76d1: 0xe0000aa7, 0x76d2: 0xe0000b46, 0x76d3: 0xe0000b43,
+-	0x76d4: 0xe0000aee, 0x76d5: 0xe0000aeb, 0x76d6: 0xe0000b2c, 0x76d7: 0xe0000b29,
+-	0x76d8: 0xe0000b40, 0x76d9: 0xe0000b3d, 0x76da: 0xe0000b1a, 0x76db: 0xe0000b17,
+-	0x76dc: 0xe0000bb8, 0x76dd: 0xe0000bb5, 0x76de: 0xe0000bb2, 0x76df: 0xe0000baf,
+-	0x76e0: 0xe0000bc4, 0x76e1: 0xe0000bc1, 0x76e2: 0xe0000bca, 0x76e3: 0xe0000bc7,
+-	0x76e4: 0xe0000bee, 0x76e5: 0xe0000beb, 0x76e6: 0xe0000c1b, 0x76e7: 0xe0000c18,
+-	0x76e8: 0xe0000c51, 0x76e9: 0xe0000c4e, 0x76ea: 0xe0000c60, 0x76eb: 0xe0000c5d,
+-	0x76ec: 0xe0000c31, 0x76ed: 0xe0000c2e, 0x76ee: 0xe0000c5a, 0x76ef: 0xe0000c57,
+-	0x76f0: 0xe0000c54, 0x76f1: 0x402da220, 0x76f2: 0xf0000a0a, 0x76f3: 0xf0000404,
+-	0x76f4: 0xe0000c8a, 0x76f5: 0xe0000c87, 0x76f6: 0xe0000c9f, 0x76f7: 0xe0000c9c,
+-	0x76f8: 0x402f7220, 0x76f9: 0xe0000ccc, 0x76fa: 0xe0000cc9, 0x76fb: 0xe0000cd8,
+-	0x76fc: 0xe0000cd5, 0x76fd: 0xe0000cd2, 0x76fe: 0xe0000ccf, 0x76ff: 0xe0000d04,
+-	// Block 0x1dc, offset 0x7700
+-	0x7700: 0xe0000cfe, 0x7701: 0xe0000cf8, 0x7702: 0xe0000cf5, 0x7703: 0xe0000d51,
+-	0x7704: 0xe0000d4e, 0x7705: 0xe0000d6f, 0x7706: 0xe0000d6c, 0x7707: 0xe0000d5d,
+-	0x7708: 0xe0000d5a, 0x7709: 0xf0000404, 0x770a: 0x002eda88, 0x770b: 0x402eda20,
+-	0x770c: 0xe0000e2e, 0x770d: 0xe0000e2b, 0x770e: 0xe0000da0, 0x770f: 0xe0000d9d,
+-	0x7710: 0xe0000de0, 0x7711: 0xe0000ddd, 0x7712: 0xe0000e93, 0x7713: 0xe0000e8f,
+-	0x7714: 0xe0000eca, 0x7715: 0xe0000ec7, 0x7716: 0xe0000edc, 0x7717: 0xe0000ed9,
+-	0x7718: 0x002f7c83, 0x7719: 0x402f7c20, 0x771a: 0xe0000f1f, 0x771b: 0xe0000f1c,
+-	0x771c: 0xe0000f2d, 0x771d: 0xe0000f2a, 0x771e: 0xe0000f47, 0x771f: 0xe0000f44,
+-	0x7720: 0x002fe883, 0x7721: 0x402fe820, 0x7722: 0xe0000f99, 0x7723: 0xe0000f96,
+-	0x7724: 0xe0000f8a, 0x7725: 0xe0000f87, 0x7726: 0x00303688, 0x7727: 0x40303620,
+-	0x7728: 0xe000102b, 0x7729: 0xe0001028, 0x772a: 0xe000103f, 0x772b: 0xe000103c,
+-	0x772c: 0xe0000fe7, 0x772d: 0xe0000fe4, 0x772e: 0xe0000ff9, 0x772f: 0xe0000ff6,
+-	0x7730: 0xe0001025, 0x7731: 0xe0001022, 0x7732: 0xe0001039, 0x7733: 0xe0001036,
+-	0x7734: 0xe00010d8, 0x7735: 0xe00010d5, 0x7736: 0xe000110e, 0x7737: 0xe000110b,
+-	0x7738: 0xe0001117, 0x7739: 0xe000113b, 0x773a: 0xe0001138, 0x773b: 0xe000114d,
+-	0x773c: 0xe000114a, 0x773d: 0x00312c83, 0x773e: 0x40312c20, 0x773f: 0xe0000f64,
+-	// Block 0x1dd, offset 0x7740
+-	0x7740: 0xe0000d24, 0x7741: 0xe0000d21, 0x7742: 0xe0000d2a, 0x7743: 0xe0000d27,
+-	0x7744: 0xe0000d69, 0x7745: 0xe0000d66, 0x7746: 0xe0000d7b, 0x7747: 0xe0000d78,
+-	0x7748: 0xe0000d87, 0x7749: 0xe0000d84, 0x774a: 0xe0000d81, 0x774b: 0xe0000d7e,
+-	0x774c: 0xe0000ded, 0x774d: 0xe0000de9, 0x774e: 0xe0000df5, 0x774f: 0xe0000df1,
+-	0x7750: 0xe0000e3d, 0x7751: 0xe0000e39, 0x7752: 0xe0000e35, 0x7753: 0xe0000e31,
+-	0x7754: 0xe0000ea7, 0x7755: 0xe0000ea4, 0x7756: 0xe0000ead, 0x7757: 0xe0000eaa,
+-	0x7758: 0xe0000ed6, 0x7759: 0xe0000ed3, 0x775a: 0xe0000ef4, 0x775b: 0xe0000ef1,
+-	0x775c: 0xe0000efb, 0x775d: 0xe0000ef7, 0x775e: 0xe0000f02, 0x775f: 0xe0000eff,
+-	0x7760: 0xe0000f41, 0x7761: 0xe0000f3e, 0x7762: 0xe0000f53, 0x7763: 0xe0000f50,
+-	0x7764: 0xe0000f26, 0x7765: 0xe0000f22, 0x7766: 0xe00025c3, 0x7767: 0xe00025c0,
+-	0x7768: 0xe0000f5a, 0x7769: 0xe0000f56, 0x776a: 0xe0000f93, 0x776b: 0xe0000f90,
+-	0x776c: 0xe0000f9f, 0x776d: 0xe0000f9c, 0x776e: 0xe0000fb1, 0x776f: 0xe0000fae,
+-	0x7770: 0xe0000fab, 0x7771: 0xe0000fa8, 0x7772: 0xe0001093, 0x7773: 0xe0001090,
+-	0x7774: 0xe000109f, 0x7775: 0xe000109c, 0x7776: 0xe0001099, 0x7777: 0xe0001096,
+-	0x7778: 0xe0001032, 0x7779: 0xe000102e, 0x777a: 0xe0001046, 0x777b: 0xe0001042,
+-	0x777c: 0xe00010a9, 0x777d: 0xe00010a6, 0x777e: 0xe00010af, 0x777f: 0xe00010ac,
+-	// Block 0x1de, offset 0x7780
+-	0x7780: 0xa0000000, 0x7781: 0xa0000000, 0x7782: 0xa0000000, 0x7783: 0xa0000000,
+-	0x7784: 0xa0000000, 0x7785: 0xa0000000, 0x7786: 0xa0000000, 0x7787: 0xa0000000,
+-	0x7788: 0xa0000000, 0x7789: 0x40020020, 0x778a: 0x40020220, 0x778b: 0x40020420,
+-	0x778c: 0x40020620, 0x778d: 0x40020820, 0x778e: 0xa0000000, 0x778f: 0xa0000000,
+-	0x7790: 0xa0000000, 0x7791: 0xa0000000, 0x7792: 0xa0000000, 0x7793: 0xa0000000,
+-	0x7794: 0xa0000000, 0x7795: 0xa0000000, 0x7796: 0xa0000000, 0x7797: 0xa0000000,
+-	0x7798: 0xa0000000, 0x7799: 0xa0000000, 0x779a: 0xa0000000, 0x779b: 0xa0000000,
+-	0x779c: 0xa0000000, 0x779d: 0xa0000000, 0x779e: 0xa0000000, 0x779f: 0xa0000000,
+-	0x77a0: 0x40021220, 0x77a1: 0x4002ba20, 0x77a2: 0x4003e020, 0x77a3: 0x4004ea20,
+-	0x77a4: 0x4027de20, 0x77a5: 0x4004ec20, 0x77a6: 0x4004e620, 0x77a7: 0x4003d220,
+-	0x77a8: 0x4003f420, 0x77a9: 0x4003f620, 0x77aa: 0x4004d820, 0x77ab: 0x40093820,
+-	0x77ac: 0x40024020, 0x77ad: 0x40021a20, 0x77ae: 0x4002e420, 0x77af: 0x4004e220,
+-	0x77b0: 0x4029cc20, 0x77b1: 0x4029ce20, 0x77b2: 0x4029d020, 0x77b3: 0x4029d220,
+-	0x77b4: 0x4029d420, 0x77b5: 0x4029d620, 0x77b6: 0x4029d820, 0x77b7: 0x4029da20,
+-	0x77b8: 0x4029dc20, 0x77b9: 0x4029de20, 0x77ba: 0x40026c20, 0x77bb: 0x40026220,
+-	0x77bc: 0x40094020, 0x77bd: 0x40094220, 0x77be: 0x40094420, 0x77bf: 0x4002c420,
+-	// Block 0x1df, offset 0x77c0
+-	0x77c0: 0x4004d620, 0x77c1: 0x002bde88, 0x77c2: 0x002c0a88, 0x77c3: 0xc36509c2,
+-	0x77c4: 0xc36a09f2, 0x77c5: 0x002c9888, 0x77c6: 0xc36f0a22, 0x77c7: 0x002d2288,
+-	0x77c8: 0x002d6888, 0x77c9: 0x002d9a88, 0x77ca: 0x002dcc88, 0x77cb: 0x002dfe88,
+-	0x77cc: 0xc37b0ac4, 0x77cd: 0x002e8288, 0x77ce: 0xc3740a52, 0x77cf: 0x002ee288,
+-	0x77d0: 0xc38209c2, 0x77d1: 0x002f5688, 0x77d2: 0xc38509c2, 0x77d3: 0x002fe688,
+-	0x77d4: 0xc38a09c2, 0x77d5: 0x00306c88, 0x77d6: 0x0030be88, 0x77d7: 0x0030e288,
+-	0x77d8: 0x0030f688, 0x77d9: 0x00310088, 0x77da: 0x00312a88, 0x77db: 0x4003f820,
+-	0x77dc: 0x4004e420, 0x77dd: 0x4003fa20, 0x77de: 0x40062420, 0x77df: 0x40021620,
+-	0x77e0: 0x40061e20, 0x77e1: 0x402bde20, 0x77e2: 0x402c0a20, 0x77e3: 0xc33309b1,
+-	0x77e4: 0xc36809e1, 0x77e5: 0x402c9820, 0x77e6: 0xc36d0a11, 0x77e7: 0x402d2220,
+-	0x77e8: 0x402d6820, 0x77e9: 0x402d9a20, 0x77ea: 0x402dcc20, 0x77eb: 0x402dfe20,
+-	0x77ec: 0xc3770a73, 0x77ed: 0x402e8220, 0x77ee: 0xc3720a41, 0x77ef: 0x402ee220,
+-	0x77f0: 0xc38009b1, 0x77f1: 0x402f5620, 0x77f2: 0xc35d09b1, 0x77f3: 0x402fe620,
+-	0x77f4: 0xc38809b1, 0x77f5: 0x40306c20, 0x77f6: 0x4030be20, 0x77f7: 0x4030e220,
+-	0x77f8: 0x4030f620, 0x77f9: 0x40310020, 0x77fa: 0x40312a20, 0x77fb: 0x4003fc20,
+-	0x77fc: 0x40094820, 0x77fd: 0x4003fe20, 0x77fe: 0x40094c20, 0x77ff: 0xa0000000,
+-	// Block 0x1e0, offset 0x7800
+-	0x7800: 0xa0000000, 0x7801: 0xa0000000, 0x7802: 0xa0000000, 0x7803: 0xa0000000,
+-	0x7804: 0xa0000000, 0x7805: 0xa0000000, 0x7806: 0xa0000000, 0x7807: 0xa0000000,
+-	0x7808: 0xa0000000, 0x7809: 0x40020020, 0x780a: 0x40020220, 0x780b: 0x40020420,
+-	0x780c: 0x40020620, 0x780d: 0x40020820, 0x780e: 0xa0000000, 0x780f: 0xa0000000,
+-	0x7810: 0xa0000000, 0x7811: 0xa0000000, 0x7812: 0xa0000000, 0x7813: 0xa0000000,
+-	0x7814: 0xa0000000, 0x7815: 0xa0000000, 0x7816: 0xa0000000, 0x7817: 0xa0000000,
+-	0x7818: 0xa0000000, 0x7819: 0xa0000000, 0x781a: 0xa0000000, 0x781b: 0xa0000000,
+-	0x781c: 0xa0000000, 0x781d: 0xa0000000, 0x781e: 0xa0000000, 0x781f: 0xa0000000,
+-	0x7820: 0x40021220, 0x7821: 0x4002ba20, 0x7822: 0x4003e020, 0x7823: 0x4004ea20,
+-	0x7824: 0x4027de20, 0x7825: 0x4004ec20, 0x7826: 0x4004e620, 0x7827: 0x4003d220,
+-	0x7828: 0x4003f420, 0x7829: 0x4003f620, 0x782a: 0x4004d820, 0x782b: 0x40093820,
+-	0x782c: 0x40024020, 0x782d: 0x40021a20, 0x782e: 0x4002e420, 0x782f: 0x4004e220,
+-	0x7830: 0x4029cc20, 0x7831: 0x4029ce20, 0x7832: 0x4029d020, 0x7833: 0x4029d220,
+-	0x7834: 0x4029d420, 0x7835: 0x4029d620, 0x7836: 0x4029d820, 0x7837: 0x4029da20,
+-	0x7838: 0x4029dc20, 0x7839: 0x4029de20, 0x783a: 0x40026c20, 0x783b: 0x40026220,
+-	0x783c: 0x40094020, 0x783d: 0x40094220, 0x783e: 0x40094420, 0x783f: 0x4002c420,
+-	// Block 0x1e1, offset 0x7840
+-	0x7840: 0x4004d620, 0x7841: 0xc3970b93, 0x7842: 0x002c0a88, 0x7843: 0x002c3a88,
+-	0x7844: 0x002c6288, 0x7845: 0xc39e0be1, 0x7846: 0x002d0888, 0x7847: 0x002d2288,
+-	0x7848: 0x002d6888, 0x7849: 0x002d9a88, 0x784a: 0x002dcc88, 0x784b: 0x002dfe88,
+-	0x784c: 0xc0030002, 0x784d: 0x002e8288, 0x784e: 0x002e9e88, 0x784f: 0xc3a30b21,
+-	0x7850: 0x002f2c88, 0x7851: 0x002f5688, 0x7852: 0x002f7a88, 0x7853: 0x002fe688,
+-	0x7854: 0x00302c88, 0x7855: 0xc3900b21, 0x7856: 0x0030be88, 0x7857: 0x0030e288,
+-	0x7858: 0x0030f688, 0x7859: 0x00310088, 0x785a: 0x00312a88, 0x785b: 0x4003f820,
+-	0x785c: 0x4004e420, 0x785d: 0x4003fa20, 0x785e: 0x40062420, 0x785f: 0x40021620,
+-	0x7860: 0x40061e20, 0x7861: 0xc3930b52, 0x7862: 0x402c0a20, 0x7863: 0x402c3a20,
+-	0x7864: 0x402c6220, 0x7865: 0xc39c0be1, 0x7866: 0x402d0820, 0x7867: 0x402d2220,
+-	0x7868: 0x402d6820, 0x7869: 0x402d9a20, 0x786a: 0x402dcc20, 0x786b: 0x402dfe20,
+-	0x786c: 0xc0000002, 0x786d: 0x402e8220, 0x786e: 0x402e9e20, 0x786f: 0xc3a00b21,
+-	0x7870: 0x402f2c20, 0x7871: 0x402f5620, 0x7872: 0x402f7a20, 0x7873: 0x402fe620,
+-	0x7874: 0x40302c20, 0x7875: 0xc38d0b21, 0x7876: 0x4030be20, 0x7877: 0x4030e220,
+-	0x7878: 0x4030f620, 0x7879: 0x40310020, 0x787a: 0x40312a20, 0x787b: 0x4003fc20,
+-	0x787c: 0x40094820, 0x787d: 0x4003fe20, 0x787e: 0x40094c20, 0x787f: 0xa0000000,
+-	// Block 0x1e2, offset 0x7880
+-	0x7880: 0xe00008f5, 0x7881: 0xe00008ef, 0x7882: 0xe0000921, 0x7883: 0xe0000969,
+-	0x7884: 0x00320ca3, 0x7885: 0x00321083, 0x7886: 0x00320c83, 0x7887: 0xe0000a53,
+-	0x7888: 0xe0000ae8, 0x7889: 0xe0000ae2, 0x788a: 0xe0000af4, 0x788b: 0xe0000b20,
+-	0x788c: 0xe0000c2b, 0x788d: 0xe0000c25, 0x788e: 0xe0000c37, 0x788f: 0xe0000c43,
+-	0x7890: 0x002c62c3, 0x7891: 0xe0000d63, 0x7892: 0xe0000d9a, 0x7893: 0xe0000d94,
+-	0x7894: 0xe0000da6, 0x7895: 0xe0000de6, 0x7896: 0x00320ea3, 0x7897: 0x40093e20,
+-	0x7898: 0x00320e83, 0x7899: 0xe0000fe1, 0x789a: 0xe0000fdb, 0x789b: 0xe0000fed,
+-	0x789c: 0x003100a3, 0x789d: 0xe0001102, 0x789e: 0xe00025cc, 0x789f: 0xe0000f7b,
+-	0x78a0: 0xe00008f2, 0x78a1: 0xe00008ec, 0x78a2: 0xe000091e, 0x78a3: 0xe0000966,
+-	0x78a4: 0x40320c21, 0x78a5: 0x40321020, 0x78a6: 0x40320c20, 0x78a7: 0xe0000a4d,
+-	0x78a8: 0xe0000ae5, 0x78a9: 0xe0000adf, 0x78aa: 0xe0000af1, 0x78ab: 0xe0000b1d,
+-	0x78ac: 0xe0000c28, 0x78ad: 0xe0000c22, 0x78ae: 0xe0000c34, 0x78af: 0xe0000c40,
+-	0x78b0: 0x402c6222, 0x78b1: 0xe0000d60, 0x78b2: 0xe0000d97, 0x78b3: 0xe0000d91,
+-	0x78b4: 0xe0000da3, 0x78b5: 0xe0000de3, 0x78b6: 0x40320e21, 0x78b7: 0x40093c20,
+-	0x78b8: 0x40320e20, 0x78b9: 0xe0000fde, 0x78ba: 0xe0000fd8, 0x78bb: 0xe0000fea,
+-	0x78bc: 0x40310021, 0x78bd: 0xe00010ff, 0x78be: 0xe00025c9, 0x78bf: 0xe0001114,
+-	// Block 0x1e3, offset 0x78c0
+-	0x78c0: 0xe0000983, 0x78c1: 0xe0000980, 0x78c2: 0xe00008fb, 0x78c3: 0xe00008f8,
+-	0x78c4: 0xe000097d, 0x78c5: 0xe000097a, 0x78c6: 0xe0000a38, 0x78c7: 0xe0000a35,
+-	0x78c8: 0xe0000a3e, 0x78c9: 0xe0000a3b, 0x78ca: 0xe0000a4a, 0x78cb: 0xe0000a47,
+-	0x78cc: 0xe0000a44, 0x78cd: 0xe0000a41, 0x78ce: 0xe0000a86, 0x78cf: 0xe0000a83,
+-	0x78d0: 0x002c62a3, 0x78d1: 0x402c6221, 0x78d2: 0xe0000b46, 0x78d3: 0xe0000b43,
+-	0x78d4: 0xe0000aee, 0x78d5: 0xe0000aeb, 0x78d6: 0xe0000b2c, 0x78d7: 0xe0000b29,
+-	0x78d8: 0x00320cc3, 0x78d9: 0x40320c22, 0x78da: 0xe0000b1a, 0x78db: 0xe0000b17,
+-	0x78dc: 0xe0000bb8, 0x78dd: 0xe0000bb5, 0x78de: 0xe0000bb2, 0x78df: 0xe0000baf,
+-	0x78e0: 0xe0000bc4, 0x78e1: 0xe0000bc1, 0x78e2: 0xe0000bca, 0x78e3: 0xe0000bc7,
+-	0x78e4: 0xe0000bee, 0x78e5: 0xe0000beb, 0x78e6: 0xe0000c1b, 0x78e7: 0xe0000c18,
+-	0x78e8: 0xe0000c51, 0x78e9: 0xe0000c4e, 0x78ea: 0xe0000c60, 0x78eb: 0xe0000c5d,
+-	0x78ec: 0xe0000c31, 0x78ed: 0xe0000c2e, 0x78ee: 0xe0000c5a, 0x78ef: 0xe0000c57,
+-	0x78f0: 0xe0000c54, 0x78f1: 0x402da220, 0x78f2: 0xf0000a0a, 0x78f3: 0xf0000404,
+-	0x78f4: 0xe0000c8a, 0x78f5: 0xe0000c87, 0x78f6: 0xe0000c9f, 0x78f7: 0xe0000c9c,
+-	0x78f8: 0x402f7220, 0x78f9: 0xe0000ccc, 0x78fa: 0xe0000cc9, 0x78fb: 0xe0000cd8,
+-	0x78fc: 0xe0000cd5, 0x78fd: 0xe0000cd2, 0x78fe: 0xe0000ccf, 0x78ff: 0xe0000d04,
+-	// Block 0x1e4, offset 0x7900
+-	0x7900: 0xe0000cfe, 0x7901: 0xe0000cf8, 0x7902: 0xe0000cf5, 0x7903: 0xe0000d51,
+-	0x7904: 0xe0000d4e, 0x7905: 0xe0000d6f, 0x7906: 0xe0000d6c, 0x7907: 0xe0000d5d,
+-	0x7908: 0xe0000d5a, 0x7909: 0xf0000404, 0x790a: 0x002eda88, 0x790b: 0x402eda20,
+-	0x790c: 0xe0000e2e, 0x790d: 0xe0000e2b, 0x790e: 0xe0000da0, 0x790f: 0xe0000d9d,
+-	0x7910: 0x00320ec3, 0x7911: 0x40320e22, 0x7912: 0x00320ee3, 0x7913: 0x40320e23,
+-	0x7914: 0xe0000eca, 0x7915: 0xe0000ec7, 0x7916: 0xe0000edc, 0x7917: 0xe0000ed9,
+-	0x7918: 0xe0000ed0, 0x7919: 0xe0000ecd, 0x791a: 0xe0000f1f, 0x791b: 0xe0000f1c,
+-	0x791c: 0xe0000f2d, 0x791d: 0xe0000f2a, 0x791e: 0xe0000f47, 0x791f: 0xe0000f44,
+-	0x7920: 0xe0000f33, 0x7921: 0xe0000f30, 0x7922: 0xe0000f99, 0x7923: 0xe0000f96,
+-	0x7924: 0xe0000f8a, 0x7925: 0xe0000f87, 0x7926: 0x00303688, 0x7927: 0x40303620,
+-	0x7928: 0xe000102b, 0x7929: 0xe0001028, 0x792a: 0xe000103f, 0x792b: 0xe000103c,
+-	0x792c: 0xe0000fe7, 0x792d: 0xe0000fe4, 0x792e: 0xe0000ff9, 0x792f: 0xe0000ff6,
+-	0x7930: 0x003100c3, 0x7931: 0x40310022, 0x7932: 0xe0001039, 0x7933: 0xe0001036,
+-	0x7934: 0xe00010d8, 0x7935: 0xe00010d5, 0x7936: 0xe000110e, 0x7937: 0xe000110b,
+-	0x7938: 0xe0001117, 0x7939: 0xe000113b, 0x793a: 0xe0001138, 0x793b: 0xe000114d,
+-	0x793c: 0xe000114a, 0x793d: 0xe0001147, 0x793e: 0xe0001144, 0x793f: 0xe0000f64,
+-	// Block 0x1e5, offset 0x7940
+-	0x7940: 0x40321220, 0x7941: 0x40321a20, 0x7942: 0x40322220, 0x7943: 0x40322a20,
+-	0x7944: 0xe0000ad5, 0x7945: 0xe0000ad1, 0x7946: 0xe0000acd, 0x7947: 0xf0000a0a,
+-	0x7948: 0xf000040a, 0x7949: 0xf0000404, 0x794a: 0xf0000a0a, 0x794b: 0xf000040a,
+-	0x794c: 0xf0000404, 0x794d: 0xe0000947, 0x794e: 0xe0000944, 0x794f: 0xe0000c3d,
+-	0x7950: 0xe0000c3a, 0x7951: 0xe0000dcc, 0x7952: 0xe0000dc9, 0x7953: 0xe0000ff3,
+-	0x7954: 0xe0000ff0, 0x7955: 0xe00025e4, 0x7956: 0xe00025e1, 0x7957: 0xe00025d2,
+-	0x7958: 0xe00025cf, 0x7959: 0xe00025de, 0x795a: 0xe00025db, 0x795b: 0xe00025d8,
+-	0x795c: 0xe00025d5, 0x795d: 0x402cae20, 0x795e: 0xe00025f6, 0x795f: 0xe00025f3,
+-	0x7960: 0xe0000976, 0x7961: 0xe0000972, 0x7962: 0xe00025f0, 0x7963: 0xe00025ed,
+-	0x7964: 0x002d3a88, 0x7965: 0x402d3a20, 0x7966: 0xe0000bbe, 0x7967: 0xe0000bbb,
+-	0x7968: 0xe0000c99, 0x7969: 0xe0000c96, 0x796a: 0xe0000e20, 0x796b: 0xe0000e1d,
+-	0x796c: 0xe0000e27, 0x796d: 0xe0000e23, 0x796e: 0xe0001162, 0x796f: 0xe000115f,
+-	0x7970: 0xe0000c8d, 0x7971: 0xf0000a0a, 0x7972: 0xf000040a, 0x7973: 0xf0000404,
+-	0x7974: 0xe0000bac, 0x7975: 0xe0000ba9, 0x7976: 0x002d7888, 0x7977: 0x00319488,
+-	0x7978: 0xe0000d57, 0x7979: 0xe0000d54, 0x797a: 0xe000260e, 0x797b: 0xe000260b,
+-	0x797c: 0xe00025ea, 0x797d: 0xe00025e7, 0x797e: 0xe00025fc, 0x797f: 0xe00025f9,
+-	// Block 0x1e6, offset 0x7980
+-	0x7980: 0xe000098f, 0x7981: 0xe000098c, 0x7982: 0xe0000995, 0x7983: 0xe0000992,
+-	0x7984: 0xe0000b62, 0x7985: 0xe0000b5f, 0x7986: 0xe0000b68, 0x7987: 0xe0000b65,
+-	0x7988: 0xe0000c6c, 0x7989: 0xe0000c69, 0x798a: 0xe0000c72, 0x798b: 0xe0000c6f,
+-	0x798c: 0xe0000e4a, 0x798d: 0xe0000e47, 0x798e: 0xe0000e50, 0x798f: 0xe0000e4d,
+-	0x7990: 0xe0000ee8, 0x7991: 0xe0000ee5, 0x7992: 0xe0000eee, 0x7993: 0xe0000eeb,
+-	0x7994: 0xe0001053, 0x7995: 0xe0001050, 0x7996: 0xe0001059, 0x7997: 0xe0001056,
+-	0x7998: 0xe0000f61, 0x7999: 0xe0000f5e, 0x799a: 0xe0000fa5, 0x799b: 0xe0000fa2,
+-	0x799c: 0x00312288, 0x799d: 0x40312220, 0x799e: 0xe0000bf4, 0x799f: 0xe0000bf1,
+-	0x79a0: 0x002ebc88, 0x79a1: 0x402c8c20, 0x79a2: 0x002f2288, 0x79a3: 0x402f2220,
+-	0x79a4: 0x00314088, 0x79a5: 0x40314020, 0x79a6: 0xe000096f, 0x79a7: 0xe000096c,
+-	0x79a8: 0xe0000b32, 0x79a9: 0xe0000b2f, 0x79aa: 0xe0002608, 0x79ab: 0xe0002605,
+-	0x79ac: 0xe0000dfd, 0x79ad: 0xe0000df9, 0x79ae: 0xe0000e04, 0x79af: 0xe0000e01,
+-	0x79b0: 0xe0000e0b, 0x79b1: 0xe0000e07, 0x79b2: 0xe0001129, 0x79b3: 0xe0001126,
+-	0x79b4: 0x402e5e20, 0x79b5: 0x402ed020, 0x79b6: 0x40305a20, 0x79b7: 0x402dd420,
+-	0x79b8: 0xe0000abf, 0x79b9: 0xe0000ec4, 0x79ba: 0x002be888, 0x79bb: 0x002c4488,
+-	0x79bc: 0x402c4420, 0x79bd: 0x002e3888, 0x79be: 0x00303e88, 0x79bf: 0x402ffc20,
+-	// Block 0x1e7, offset 0x79c0
+-	0x79c0: 0x402c2820, 0x79c1: 0x402c7020, 0x79c2: 0x402d1420, 0x79c3: 0x402d4220,
+-	0x79c4: 0x402e0820, 0x79c5: 0x402e5220, 0x79c6: 0x402e8e20, 0x79c7: 0x402ec620,
+-	0x79c8: 0x402f3c20, 0x79c9: 0x402faa20, 0x79ca: 0x402ff220, 0x79cb: 0x40301020,
+-	0x79cc: 0x4030ca20, 0x79cd: 0x4030fe20, 0x79ce: 0x40313e20, 0x79cf: 0x402bea20,
+-	0x79d0: 0x402c0020, 0x79d1: 0x402c8220, 0x79d2: 0x402caa20, 0x79d3: 0x402cca20,
+-	0x79d4: 0x402ce420, 0x79d5: 0x402cc020, 0x79d6: 0x402dc020, 0x79d7: 0x402f0620,
+-	0x79d8: 0x40302220, 0x79d9: 0x40308620, 0x79da: 0x40317620, 0x79db: 0x002c0294,
+-	0x79dc: 0x002c3a94, 0x79dd: 0x002c5694, 0x79de: 0xe00025c6, 0x79df: 0x002cdc94,
+-	0x79e0: 0x002d0894, 0x79e1: 0x002dee94, 0x79e2: 0x002d2a94, 0x79e3: 0x00308894,
+-	0x79e4: 0x002db694, 0x79e5: 0x002dc294, 0x79e6: 0x002daa94, 0x79e7: 0x002dbe94,
+-	0x79e8: 0x002de694, 0x79e9: 0x002e5494, 0x79ea: 0x002e5294, 0x79eb: 0x002e2a94,
+-	0x79ec: 0x002e9094, 0x79ed: 0x0030ac94, 0x79ee: 0x002eb494, 0x79ef: 0x002ec894,
+-	0x79f0: 0x002ea694, 0x79f1: 0x002f1094, 0x79f2: 0x002f4c94, 0x79f3: 0x002ff494,
+-	0x79f4: 0x00300894, 0x79f5: 0x00304294, 0x79f6: 0x00307c94, 0x79f7: 0x0030b494,
+-	0x79f8: 0x00307494, 0x79f9: 0x0030cc94, 0x79fa: 0x0030da94, 0x79fb: 0x00312a94,
+-	0x79fc: 0x00314894, 0x79fd: 0x00315094, 0x79fe: 0x00316494, 0x79ff: 0x00326a94,
+-	// Block 0x1e8, offset 0x7a00
+-	0x7a00: 0xe0000d24, 0x7a01: 0xe0000d21, 0x7a02: 0xe0000d2a, 0x7a03: 0xe0000d27,
+-	0x7a04: 0xe0000d69, 0x7a05: 0xe0000d66, 0x7a06: 0xe0000d7b, 0x7a07: 0xe0000d78,
+-	0x7a08: 0xe0000d87, 0x7a09: 0xe0000d84, 0x7a0a: 0xe0000d81, 0x7a0b: 0xe0000d7e,
+-	0x7a0c: 0xe0000ded, 0x7a0d: 0xe0000de9, 0x7a0e: 0xe0002602, 0x7a0f: 0xe00025ff,
+-	0x7a10: 0xe0000e3d, 0x7a11: 0xe0000e39, 0x7a12: 0xe0000e35, 0x7a13: 0xe0000e31,
+-	0x7a14: 0xe0000ea7, 0x7a15: 0xe0000ea4, 0x7a16: 0xe0000ead, 0x7a17: 0xe0000eaa,
+-	0x7a18: 0xe0000ed6, 0x7a19: 0xe0000ed3, 0x7a1a: 0xe0000ef4, 0x7a1b: 0xe0000ef1,
+-	0x7a1c: 0xe0000efb, 0x7a1d: 0xe0000ef7, 0x7a1e: 0xe0000f02, 0x7a1f: 0xe0000eff,
+-	0x7a20: 0xe0000f41, 0x7a21: 0xe0000f3e, 0x7a22: 0xe0000f53, 0x7a23: 0xe0000f50,
+-	0x7a24: 0xe0000f26, 0x7a25: 0xe0000f22, 0x7a26: 0xe0000f3a, 0x7a27: 0xe0000f36,
+-	0x7a28: 0xe0000f5a, 0x7a29: 0xe0000f56, 0x7a2a: 0xe0000f93, 0x7a2b: 0xe0000f90,
+-	0x7a2c: 0xe0000f9f, 0x7a2d: 0xe0000f9c, 0x7a2e: 0xe0000fb1, 0x7a2f: 0xe0000fae,
+-	0x7a30: 0xe0000fab, 0x7a31: 0xe0000fa8, 0x7a32: 0xe0001093, 0x7a33: 0xe0001090,
+-	0x7a34: 0xe000109f, 0x7a35: 0xe000109c, 0x7a36: 0xe0001099, 0x7a37: 0xe0001096,
+-	0x7a38: 0xe0001032, 0x7a39: 0xe000102e, 0x7a3a: 0xe00025e4, 0x7a3b: 0xe00025e1,
+-	0x7a3c: 0xe00010a9, 0x7a3d: 0xe00010a6, 0x7a3e: 0xe00010af, 0x7a3f: 0xe00010ac,
+-	// Block 0x1e9, offset 0x7a40
+-	0x7a40: 0xe00009bc, 0x7a41: 0xe00009c0, 0x7a42: 0x002c3a8b, 0x7a43: 0xf0000a04,
+-	0x7a44: 0x40081c20, 0x7a45: 0xe0000a5e, 0x7a46: 0xe0000a62, 0x7a47: 0x002cc28a,
+-	0x7a48: 0x40081e20, 0x7a49: 0xf0000a04, 0x7a4a: 0x002d2285, 0x7a4b: 0x002d688b,
+-	0x7a4c: 0x002d688b, 0x7a4d: 0x002d688b, 0x7a4e: 0x002d6885, 0x7a4f: 0xf0000202,
+-	0x7a50: 0x002d9a8b, 0x7a51: 0x002d9a8b, 0x7a52: 0x002e228b, 0x7a53: 0x002e2285,
+-	0x7a54: 0x40082020, 0x7a55: 0x002e9e8b, 0x7a56: 0xf000040a, 0x7a57: 0x40082220,
+-	0x7a58: 0x40082420, 0x7a59: 0x002f2c8b, 0x7a5a: 0x002f568b, 0x7a5b: 0x002f7a8b,
+-	0x7a5c: 0x002f7a8b, 0x7a5d: 0x002f7a8b, 0x7a5e: 0x40082620, 0x7a5f: 0x40082820,
+-	0x7a60: 0xf0001414, 0x7a61: 0xe0000fbd, 0x7a62: 0xf0001414, 0x7a63: 0x40082a20,
+-	0x7a64: 0x00312a8b, 0x7a65: 0x40082c20, 0x7a66: 0x0032a288, 0x7a67: 0x40082e20,
+-	0x7a68: 0x00312a8b, 0x7a69: 0x40083020, 0x7a6a: 0x002dfe88, 0x7a6b: 0x00321083,
+-	0x7a6c: 0x002c0a8b, 0x7a6d: 0x002c3a8b, 0x7a6e: 0x40083220, 0x7a6f: 0x002c9885,
+-	0x7a70: 0x002c988b, 0x7a71: 0x002d088b, 0x7a72: 0x002d1e88, 0x7a73: 0x002e828b,
+-	0x7a74: 0x002ee285, 0x7a75: 0x00389084, 0x7a76: 0x00389284, 0x7a77: 0x00389484,
+-	0x7a78: 0x00389684, 0x7a79: 0x002d9a85, 0x7a7a: 0x40083420, 0x7a7b: 0xe0000b95,
+-	0x7a7c: 0x00327e85, 0x7a7d: 0x00325685, 0x7a7e: 0x0032568b, 0x7a7f: 0x00327e8b,
+-	// Block 0x1ea, offset 0x7a80
+-	0x7a80: 0x40078220, 0x7a81: 0x40075e20, 0x7a82: 0x40076020, 0x7a83: 0x40076220,
+-	0x7a84: 0x40058220, 0x7a85: 0x40058420, 0x7a86: 0x40058620, 0x7a87: 0x40058820,
+-	0x7a88: 0x40058a20, 0x7a89: 0x40058c20, 0x7a8a: 0x40058e20, 0x7a8b: 0x4027bc20,
+-	0x7a8c: 0x0027bc83, 0x7a8d: 0x4027bc21, 0x7a8e: 0x4027bc22, 0x7a8f: 0x4027bc23,
+-	0x7a90: 0x4027bc24, 0x7a91: 0x4027bc25, 0x7a92: 0x4005a020, 0x7a93: 0x40076420,
+-	0x7a94: 0x4027bc26, 0x7a95: 0x40076620, 0x7a96: 0x40076820, 0x7a97: 0x40076a20,
+-	0x7a98: 0xadc00000, 0x7a99: 0xadc00000, 0x7a9a: 0x40076c20, 0x7a9b: 0x40076e20,
+-	0x7a9c: 0x40077020, 0x7a9d: 0x40077220, 0x7a9e: 0x40077420, 0x7a9f: 0x40077620,
+-	0x7aa0: 0xe00001a0, 0x7aa1: 0xe0000234, 0x7aa2: 0xe000034c, 0x7aa3: 0xe0000426,
+-	0x7aa4: 0xe00004fb, 0x7aa5: 0xe00005c5, 0x7aa6: 0xe0000690, 0x7aa7: 0xe0000738,
+-	0x7aa8: 0xe00007e4, 0x7aa9: 0xe0000889, 0x7aaa: 0xe0000237, 0x7aab: 0xe000034f,
+-	0x7aac: 0xe0000429, 0x7aad: 0xe00004fe, 0x7aae: 0xe00005c8, 0x7aaf: 0xe0000693,
+-	0x7ab0: 0xe000073b, 0x7ab1: 0xe00007e7, 0x7ab2: 0xe000088c, 0x7ab3: 0xe00001a3,
+-	0x7ab4: 0x4027bc27, 0x7ab5: 0xadc00000, 0x7ab6: 0x40077a20, 0x7ab7: 0xadc00000,
+-	0x7ab8: 0x40077c20, 0x7ab9: 0xae611002, 0x7aba: 0x40040020, 0x7abb: 0x40040220,
+-	0x7abc: 0x40040420, 0x7abd: 0x40040620, 0x7abe: 0xa0000000, 0x7abf: 0xa0000000,
+-	// Block 0x1eb, offset 0x7ac0
+-	0x7ac0: 0x404a7620, 0x7ac1: 0x404a7c20, 0x7ac2: 0xc4cf2161, 0x7ac3: 0xe0002632,
+-	0x7ac4: 0x404a8420, 0x7ac5: 0x404a8820, 0x7ac6: 0x404a8c20, 0x7ac7: 0x404a9020,
+-	0x7ac9: 0x404a9420, 0x7aca: 0x004aa883, 0x7acb: 0x004aac83,
+-	0x7acc: 0x004ab083, 0x7acd: 0xe000266a, 0x7ace: 0x004ab483, 0x7acf: 0x404aa820,
+-	0x7ad0: 0x404aac20, 0x7ad1: 0xc3a90c31, 0x7ad2: 0xe0002667, 0x7ad3: 0x404ab420,
+-	0x7ad4: 0x404ab820, 0x7ad5: 0x404abc20, 0x7ad6: 0xc3f31211, 0x7ad7: 0xe000268b,
+-	0x7ad8: 0xc45418e1, 0x7ad9: 0x404ac820, 0x7ada: 0x404acc20, 0x7adb: 0x404ad020,
+-	0x7adc: 0xe00026ac, 0x7add: 0x404ad420, 0x7ade: 0x404ad820, 0x7adf: 0x404adc20,
+-	0x7ae0: 0xc48f1d01, 0x7ae1: 0x404ae420, 0x7ae2: 0xc43c1761, 0x7ae3: 0xc4491831,
+-	0x7ae4: 0x404af220, 0x7ae5: 0x004af283, 0x7ae6: 0xc4831c51, 0x7ae7: 0x404afe20,
+-	0x7ae8: 0x404b0220, 0x7ae9: 0xe0002611, 0x7aea: 0x004ae883, 0x7aeb: 0x404a7a20,
+-	0x7aec: 0x404aec20,
+-	0x7af1: 0xc51b0751, 0x7af2: 0x8282258c, 0x7af3: 0x8281258d,
+-	0x7af4: 0x82842590, 0x7af5: 0x82812591, 0x7af6: 0x404b2420, 0x7af7: 0x404b2620,
+-	0x7af8: 0x404b2820, 0x7af9: 0x404b2a20, 0x7afa: 0x82822596, 0x7afb: 0x83822596,
+-	0x7afc: 0x82822598, 0x7afd: 0x83822598, 0x7afe: 0x004ac483, 0x7aff: 0xae611102,
+-	// Block 0x1ec, offset 0x7b00
+-	0x7b00: 0x8382258c, 0x7b01: 0x8281258f, 0x7b02: 0x004ac484, 0x7b03: 0x004ac485,
+-	0x7b04: 0xae610e02, 0x7b05: 0xae611202, 0x7b06: 0xae600000, 0x7b07: 0xae600000,
+-	0x7b08: 0xc3a60c01, 0x7b09: 0xc5062551, 0x7b0a: 0xae611502, 0x7b0b: 0xc5042521,
+-	0x7b0c: 0x404b0e20, 0x7b0d: 0x404b0820, 0x7b0e: 0x404b0c20, 0x7b0f: 0x404b1020,
+-	0x7b10: 0x82822599, 0x7b11: 0x8282259a, 0x7b12: 0x8282259b, 0x7b13: 0xe00026d6,
+-	0x7b14: 0x8282259c, 0x7b15: 0x8282259d, 0x7b16: 0x8282259e, 0x7b17: 0x8282259f,
+-	0x7b19: 0x828225a0, 0x7b1a: 0x838225a1, 0x7b1b: 0x838225a2,
+-	0x7b1c: 0x838225a3, 0x7b1d: 0xe00026dc, 0x7b1e: 0x838225a4, 0x7b1f: 0x828225a1,
+-	0x7b20: 0x828225a2, 0x7b21: 0x828225a3, 0x7b22: 0xe00026d9, 0x7b23: 0x828225a4,
+-	0x7b24: 0x828225a5, 0x7b25: 0x828225a6, 0x7b26: 0x828225a7, 0x7b27: 0xe00026df,
+-	0x7b28: 0x828225a8, 0x7b29: 0x828225a9, 0x7b2a: 0x828225aa, 0x7b2b: 0x828225ab,
+-	0x7b2c: 0xe00026e2, 0x7b2d: 0x828225ac, 0x7b2e: 0x828225ad, 0x7b2f: 0x828225ae,
+-	0x7b30: 0x828225af, 0x7b31: 0x828225b0, 0x7b32: 0xc5092581, 0x7b33: 0xc5122581,
+-	0x7b34: 0x828225b3, 0x7b35: 0x838225b3, 0x7b36: 0x828225b4, 0x7b37: 0x828225b5,
+-	0x7b38: 0x828225b6, 0x7b39: 0xe00026d3, 0x7b3a: 0x838225ac, 0x7b3b: 0x838225b0,
+-	0x7b3c: 0x838225b1, 0x7b3e: 0x40077e20, 0x7b3f: 0x40078020,
+-	// Block 0x1ed, offset 0x7b40
+-	0x7b40: 0xa0000000, 0x7b41: 0xa0000000, 0x7b42: 0xa0000000, 0x7b43: 0xa0000000,
+-	0x7b44: 0xa0000000, 0x7b45: 0xa0000000, 0x7b46: 0xa0000000, 0x7b47: 0xa0000000,
+-	0x7b48: 0xa0000000, 0x7b49: 0x40020020, 0x7b4a: 0x40020220, 0x7b4b: 0x40020420,
+-	0x7b4c: 0x40020620, 0x7b4d: 0x40020820, 0x7b4e: 0xa0000000, 0x7b4f: 0xa0000000,
+-	0x7b50: 0xa0000000, 0x7b51: 0xa0000000, 0x7b52: 0xa0000000, 0x7b53: 0xa0000000,
+-	0x7b54: 0xa0000000, 0x7b55: 0xa0000000, 0x7b56: 0xa0000000, 0x7b57: 0xa0000000,
+-	0x7b58: 0xa0000000, 0x7b59: 0xa0000000, 0x7b5a: 0xa0000000, 0x7b5b: 0xa0000000,
+-	0x7b5c: 0xa0000000, 0x7b5d: 0xa0000000, 0x7b5e: 0xa0000000, 0x7b5f: 0xa0000000,
+-	0x7b60: 0x40021220, 0x7b61: 0x4002ba20, 0x7b62: 0x4003e020, 0x7b63: 0x4004ea20,
+-	0x7b64: 0x4027de20, 0x7b65: 0x4004ec20, 0x7b66: 0x4004e620, 0x7b67: 0x4003d220,
+-	0x7b68: 0x4003f420, 0x7b69: 0x4003f620, 0x7b6a: 0x4004d820, 0x7b6b: 0x40093820,
+-	0x7b6c: 0x40024020, 0x7b6d: 0x40021a20, 0x7b6e: 0x4002e420, 0x7b6f: 0x4004e220,
+-	0x7b70: 0x4029cc20, 0x7b71: 0x4029ce20, 0x7b72: 0x4029d020, 0x7b73: 0x4029d220,
+-	0x7b74: 0x4029d420, 0x7b75: 0x4029d620, 0x7b76: 0x4029d820, 0x7b77: 0x4029da20,
+-	0x7b78: 0x4029dc20, 0x7b79: 0x4029de20, 0x7b7a: 0x40026c20, 0x7b7b: 0x40026220,
+-	0x7b7c: 0x40094020, 0x7b7d: 0x40094220, 0x7b7e: 0x40094420, 0x7b7f: 0x4002c420,
+-	// Block 0x1ee, offset 0x7b80
+-	0x7b80: 0x4004d620, 0x7b81: 0x002bde88, 0x7b82: 0x002c0a88, 0x7b83: 0x002c3a88,
+-	0x7b84: 0xc36a2662, 0x7b85: 0x002c9888, 0x7b86: 0x002d0888, 0x7b87: 0xc51f2692,
+-	0x7b88: 0x002d6888, 0x7b89: 0x002d9a88, 0x7b8a: 0x002dcc88, 0x7b8b: 0xc52426c2,
+-	0x7b8c: 0xc0030002, 0x7b8d: 0x002e8288, 0x7b8e: 0xc52926f2, 0x7b8f: 0x002ee288,
+-	0x7b90: 0x002f2c88, 0x7b91: 0x002f5688, 0x7b92: 0x002f7a88, 0x7b93: 0x002fe688,
+-	0x7b94: 0xc38a2722, 0x7b95: 0x00306c88, 0x7b96: 0x0030be88, 0x7b97: 0x0030e288,
+-	0x7b98: 0x002d6a83, 0x7b99: 0x00310088, 0x7b9a: 0x00312a88, 0x7b9b: 0x4003f820,
+-	0x7b9c: 0x4004e420, 0x7b9d: 0x4003fa20, 0x7b9e: 0x40062420, 0x7b9f: 0x40021620,
+-	0x7ba0: 0x40061e20, 0x7ba1: 0x402bde20, 0x7ba2: 0x402c0a20, 0x7ba3: 0x402c3a20,
+-	0x7ba4: 0xc3682651, 0x7ba5: 0x402c9820, 0x7ba6: 0x402d0820, 0x7ba7: 0xc3372681,
+-	0x7ba8: 0x402d6820, 0x7ba9: 0x402d9a20, 0x7baa: 0x402dcc20, 0x7bab: 0xc52226b1,
+-	0x7bac: 0xc0000002, 0x7bad: 0x402e8220, 0x7bae: 0xc52726e1, 0x7baf: 0x402ee220,
+-	0x7bb0: 0x402f2c20, 0x7bb1: 0x402f5620, 0x7bb2: 0x402f7a20, 0x7bb3: 0x402fe620,
+-	0x7bb4: 0xc3882711, 0x7bb5: 0x40306c20, 0x7bb6: 0x4030be20, 0x7bb7: 0x4030e220,
+-	0x7bb8: 0x402d6a20, 0x7bb9: 0x40310020, 0x7bba: 0x40312a20, 0x7bbb: 0x4003fc20,
+-	0x7bbc: 0x40094820, 0x7bbd: 0x4003fe20, 0x7bbe: 0x40094c20, 0x7bbf: 0xa0000000,
+-	// Block 0x1ef, offset 0x7bc0
+-	0x7bc0: 0xe00008f5, 0x7bc1: 0xe00008ef, 0x7bc2: 0xe00026e8, 0x7bc3: 0xe0000969,
+-	0x7bc4: 0xe000095b, 0x7bc5: 0xe000094d, 0x7bc6: 0xe00009dd, 0x7bc7: 0xe0000a53,
+-	0x7bc8: 0xe0000ae8, 0x7bc9: 0xe0000ae2, 0x7bca: 0xe000271c, 0x7bcb: 0xe0000b20,
+-	0x7bcc: 0xe0000c2b, 0x7bcd: 0xe0000c25, 0x7bce: 0xe0002756, 0x7bcf: 0xe0000c43,
+-	0x7bd0: 0xe0000ab3, 0x7bd1: 0xe0000d63, 0x7bd2: 0xe0000d9a, 0x7bd3: 0xe0000d94,
+-	0x7bd4: 0xe0002762, 0x7bd5: 0xe0000de6, 0x7bd6: 0xe0000dd2, 0x7bd7: 0x40093e20,
+-	0x7bd8: 0xe0000e12, 0x7bd9: 0xe0000fe1, 0x7bda: 0xe0000fdb, 0x7bdb: 0xe0002796,
+-	0x7bdc: 0xe0000fff, 0x7bdd: 0xe0001102, 0x7bde: 0x00318888, 0x7bdf: 0xe0000f7b,
+-	0x7be0: 0xe00008f2, 0x7be1: 0xe00008ec, 0x7be2: 0xe00026e5, 0x7be3: 0xe0000966,
+-	0x7be4: 0xe0000958, 0x7be5: 0xe000094a, 0x7be6: 0xe00009d5, 0x7be7: 0xe0000a4d,
+-	0x7be8: 0xe0000ae5, 0x7be9: 0xe0000adf, 0x7bea: 0xe0002719, 0x7beb: 0xe0000b1d,
+-	0x7bec: 0xe0000c28, 0x7bed: 0xe0000c22, 0x7bee: 0xe0002753, 0x7bef: 0xe0000c40,
+-	0x7bf0: 0xe0000aad, 0x7bf1: 0xe0000d60, 0x7bf2: 0xe0000d97, 0x7bf3: 0xe0000d91,
+-	0x7bf4: 0xe000275f, 0x7bf5: 0xe0000de3, 0x7bf6: 0xe0000dcf, 0x7bf7: 0x40093c20,
+-	0x7bf8: 0xe0000e0f, 0x7bf9: 0xe0000fde, 0x7bfa: 0xe0000fd8, 0x7bfb: 0xe0002793,
+-	0x7bfc: 0xe0000ffc, 0x7bfd: 0xe00010ff, 0x7bfe: 0x40318820, 0x7bff: 0xe0001114,
+-	// Block 0x1f0, offset 0x7c00
+-	0x7c00: 0xe0000983, 0x7c01: 0xe0000980, 0x7c02: 0xe00008fb, 0x7c03: 0xe00008f8,
+-	0x7c04: 0xe000097d, 0x7c05: 0xe000097a, 0x7c06: 0xe0000a38, 0x7c07: 0xe0000a35,
+-	0x7c08: 0xe0002716, 0x7c09: 0xe0002713, 0x7c0a: 0xe0000a4a, 0x7c0b: 0xe0000a47,
+-	0x7c0c: 0xe0000a44, 0x7c0d: 0xe0000a41, 0x7c0e: 0xe0000a86, 0x7c0f: 0xe0000a83,
+-	0x7c10: 0xe0000aaa, 0x7c11: 0xe0000aa7, 0x7c12: 0xe0000b46, 0x7c13: 0xe0000b43,
+-	0x7c14: 0xe0000aee, 0x7c15: 0xe0000aeb, 0x7c16: 0xe0000b2c, 0x7c17: 0xe0000b29,
+-	0x7c18: 0xe0000b40, 0x7c19: 0xe0000b3d, 0x7c1a: 0xe0000b1a, 0x7c1b: 0xe0000b17,
+-	0x7c1c: 0xe000274a, 0x7c1d: 0xe0002747, 0x7c1e: 0xe0000bb2, 0x7c1f: 0xe0000baf,
+-	0x7c20: 0xe0000bc4, 0x7c21: 0xe0000bc1, 0x7c22: 0xe0000bca, 0x7c23: 0xe0000bc7,
+-	0x7c24: 0xe0002750, 0x7c25: 0xe000274d, 0x7c26: 0xe0000c1b, 0x7c27: 0xe0000c18,
+-	0x7c28: 0xe0000c51, 0x7c29: 0xe0000c4e, 0x7c2a: 0xe0000c60, 0x7c2b: 0xe0000c5d,
+-	0x7c2c: 0xe0000c31, 0x7c2d: 0xe0000c2e, 0x7c2e: 0xe0000c5a, 0x7c2f: 0xe0000c57,
+-	0x7c30: 0xe0000c54, 0x7c31: 0x402da220, 0x7c32: 0xf0000a0a, 0x7c33: 0xf0000404,
+-	0x7c34: 0xe000275c, 0x7c35: 0xe0002759, 0x7c36: 0xe0000c9f, 0x7c37: 0xe0000c9c,
+-	0x7c38: 0x402f7220, 0x7c39: 0xe0000ccc, 0x7c3a: 0xe0000cc9, 0x7c3b: 0xe0000cd8,
+-	0x7c3c: 0xe0000cd5, 0x7c3d: 0xe0000cd2, 0x7c3e: 0xe0000ccf, 0x7c3f: 0xe0000d04,
+-	// Block 0x1f1, offset 0x7c40
+-	0x7c40: 0xe0000cfe, 0x7c41: 0xe0000cf8, 0x7c42: 0xe0000cf5, 0x7c43: 0xe0000d51,
+-	0x7c44: 0xe0000d4e, 0x7c45: 0xe0000d6f, 0x7c46: 0xe0000d6c, 0x7c47: 0xe0000d5d,
+-	0x7c48: 0xe0000d5a, 0x7c49: 0xf0000404, 0x7c4a: 0x002ea283, 0x7c4b: 0x402ea220,
+-	0x7c4c: 0xe0000e2e, 0x7c4d: 0xe0000e2b, 0x7c4e: 0xe0000da0, 0x7c4f: 0xe0000d9d,
+-	0x7c50: 0xe0000de0, 0x7c51: 0xe0000ddd, 0x7c52: 0xe0000e93, 0x7c53: 0xe0000e8f,
+-	0x7c54: 0xe0000eca, 0x7c55: 0xe0000ec7, 0x7c56: 0xe0000edc, 0x7c57: 0xe0000ed9,
+-	0x7c58: 0xe0000ed0, 0x7c59: 0xe0000ecd, 0x7c5a: 0xe0000f1f, 0x7c5b: 0xe0000f1c,
+-	0x7c5c: 0xe0002790, 0x7c5d: 0xe000278d, 0x7c5e: 0xe0000f47, 0x7c5f: 0xe0000f44,
+-	0x7c60: 0xe0000f33, 0x7c61: 0xe0000f30, 0x7c62: 0xe0000f99, 0x7c63: 0xe0000f96,
+-	0x7c64: 0xe0000f8a, 0x7c65: 0xe0000f87, 0x7c66: 0x00303688, 0x7c67: 0x40303620,
+-	0x7c68: 0xe000102b, 0x7c69: 0xe0001028, 0x7c6a: 0xe000103f, 0x7c6b: 0xe000103c,
+-	0x7c6c: 0xe0000fe7, 0x7c6d: 0xe0000fe4, 0x7c6e: 0xe0000ff9, 0x7c6f: 0xe0000ff6,
+-	0x7c70: 0xe0001025, 0x7c71: 0xe0001022, 0x7c72: 0xe0001039, 0x7c73: 0xe0001036,
+-	0x7c74: 0xe000279c, 0x7c75: 0xe0002799, 0x7c76: 0xe00027a2, 0x7c77: 0xe000279f,
+-	0x7c78: 0xe0001117, 0x7c79: 0xe000113b, 0x7c7a: 0xe0001138, 0x7c7b: 0xe000114d,
+-	0x7c7c: 0xe000114a, 0x7c7d: 0xe0001147, 0x7c7e: 0xe0001144, 0x7c7f: 0xe0000f64,
+-	// Block 0x1f2, offset 0x7c80
+-	0x7c80: 0x402c1a20, 0x7c81: 0x002c2a88, 0x7c82: 0x002c3288, 0x7c83: 0x402c3220,
+-	0x7c84: 0x0031c488, 0x7c85: 0x4031c420, 0x7c86: 0x002ee483, 0x7c87: 0x002c4e88,
+-	0x7c88: 0x402c4e20, 0x7c89: 0x002c6683, 0x7c8a: 0x002c7a88, 0x7c8b: 0x002c8488,
+-	0x7c8c: 0x402c8420, 0x7c8d: 0xe000115c, 0x7c8e: 0x002cae88, 0x7c8f: 0x002cb888,
+-	0x7c90: 0x002c9a83, 0x7c91: 0x002d0a83, 0x7c92: 0x402d0a20, 0x7c93: 0x002d4488,
+-	0x7c94: 0x002d2683, 0x7c95: 0x402d7820, 0x7c96: 0x002dc288, 0x7c97: 0x002db688,
+-	0x7c98: 0x002e0a88, 0x7c99: 0x402e0a20, 0x7c9a: 0x402e3820, 0x7c9b: 0x402e7220,
+-	0x7c9c: 0x0030a088, 0x7c9d: 0x002eb488, 0x7c9e: 0x402ebc20, 0x7c9f: 0x002f1088,
+-	0x7ca0: 0xe0000e56, 0x7ca1: 0xe0000e53, 0x7ca2: 0x002d6088, 0x7ca3: 0x402d6020,
+-	0x7ca4: 0x002f3e88, 0x7ca5: 0x402f3e20, 0x7ca6: 0x002f8288, 0x7ca7: 0x0031b488,
+-	0x7ca8: 0x4031b420, 0x7ca9: 0x00300888, 0x7caa: 0x40301220, 0x7cab: 0x40304220,
+-	0x7cac: 0x00304a88, 0x7cad: 0x40304a20, 0x7cae: 0x00305288, 0x7caf: 0xe000105f,
+-	0x7cb0: 0xe000105c, 0x7cb1: 0x0030b488, 0x7cb2: 0x0030c083, 0x7cb3: 0x00311888,
+-	0x7cb4: 0x40311820, 0x7cb5: 0x00313488, 0x7cb6: 0x40313420, 0x7cb7: 0x00316488,
+-	0x7cb8: 0x00316e88, 0x7cb9: 0x40316e20, 0x7cba: 0x40317820, 0x7cbb: 0x4031a620,
+-	0x7cbc: 0x0031bc88, 0x7cbd: 0x4031bc20, 0x7cbe: 0xe0000fc9, 0x7cbf: 0x40319420,
+-	// Block 0x1f3, offset 0x7cc0
+-	0x7cc0: 0x40315820, 0x7cc1: 0x0031d488, 0x7cc2: 0x4031d420, 0x7cc3: 0x002c1a88,
+-	0x7cc4: 0x00307c88, 0x7cc5: 0x0030da88, 0x7cc6: 0x002ca288, 0x7cc7: 0x402ca220,
+-	0x7cc8: 0x002dde88, 0x7cc9: 0x402dde20, 0x7cca: 0x002f6a88, 0x7ccb: 0x402f6a20,
+-	0x7ccc: 0x002f8e88, 0x7ccd: 0x402f8e20, 0x7cce: 0x00311088, 0x7ccf: 0x40311020,
+-	0x7cd0: 0x402bf020, 0x7cd1: 0x402bf820, 0x7cd2: 0x402c0220, 0x7cd3: 0x402c2a20,
+-	0x7cd4: 0x402ee420, 0x7cd5: 0x402c5620, 0x7cd6: 0x402c6620, 0x7cd7: 0x402c7a20,
+-	0x7cd8: 0x402ccc20, 0x7cd9: 0x402cb820, 0x7cda: 0x402cd420, 0x7cdb: 0x402c9a20,
+-	0x7cdc: 0x402cdc20, 0x7cdd: 0x402ce820, 0x7cde: 0x402cf020, 0x7cdf: 0x402dee20,
+-	0x7ce0: 0x402d4420, 0x7ce1: 0x402d2a20, 0x7ce2: 0x402d3220, 0x7ce3: 0x402d2620,
+-	0x7ce4: 0x402d0020, 0x7ce5: 0x40308820, 0x7ce6: 0x402d8020, 0x7ce7: 0x402d8e20,
+-	0x7ce8: 0x402db620, 0x7ce9: 0x402dc220, 0x7cea: 0x402daa20, 0x7ceb: 0x402e4220,
+-	0x7cec: 0x402e4a20, 0x7ced: 0x402e5420, 0x7cee: 0x402e6820, 0x7cef: 0x4030a020,
+-	0x7cf0: 0x4030ac20, 0x7cf1: 0x402e9020, 0x7cf2: 0x402eb420, 0x7cf3: 0x402ec820,
+-	0x7cf4: 0x402ea620, 0x7cf5: 0x402f1020, 0x7cf6: 0x402eee20, 0x7cf7: 0x402f1a20,
+-	0x7cf8: 0x402f4c20, 0x7cf9: 0x402f9820, 0x7cfa: 0x402fa220, 0x7cfb: 0x402fac20,
+-	0x7cfc: 0x402fb620, 0x7cfd: 0x402fbe20, 0x7cfe: 0x402fc620, 0x7cff: 0x402fd020,
+-	// Block 0x1f4, offset 0x7d00
+-	0x7d00: 0x402f8220, 0x7d01: 0x402fd820, 0x7d02: 0x402ff420, 0x7d03: 0x40300820,
+-	0x7d04: 0x402df620, 0x7d05: 0x40301a20, 0x7d06: 0x40302420, 0x7d07: 0x40306420,
+-	0x7d08: 0x40305220, 0x7d09: 0x40307c20, 0x7d0a: 0x4030b420, 0x7d0b: 0x4030c020,
+-	0x7d0c: 0x4030da20, 0x7d0d: 0x4030ee20, 0x7d0e: 0x402e7a20, 0x7d0f: 0x40310820,
+-	0x7d10: 0x40314820, 0x7d11: 0x40315020, 0x7d12: 0x40316420, 0x7d13: 0x40318020,
+-	0x7d14: 0x4031cc20, 0x7d15: 0x4031e820, 0x7d16: 0x40320a20, 0x7d17: 0x40323220,
+-	0x7d18: 0x40323a20, 0x7d19: 0x402c1220, 0x7d1a: 0x402cf820, 0x7d1b: 0x402d4c20,
+-	0x7d1c: 0x402d7020, 0x7d1d: 0x402de620, 0x7d1e: 0x402e1a20, 0x7d1f: 0x402e2a20,
+-	0x7d20: 0x402f6220, 0x7d21: 0x4031fa20, 0x7d22: 0x40320220, 0x7d23: 0xe0000aca,
+-	0x7d24: 0xe0000adc, 0x7d25: 0xe0000ad9, 0x7d26: 0xe0000fcc, 0x7d27: 0xe0000fcf,
+-	0x7d28: 0xe0000fba, 0x7d29: 0xe0000ba1, 0x7d2a: 0xe0000d11, 0x7d2b: 0xe0000d18,
+-	0x7d2c: 0x40324220, 0x7d2d: 0x40324a20, 0x7d2e: 0x40309020, 0x7d2f: 0x40309820,
+-	0x7d30: 0x002d6894, 0x7d31: 0x002d8094, 0x7d32: 0x002dcc94, 0x7d33: 0x002f7a94,
+-	0x7d34: 0x002f9894, 0x7d35: 0x002fac94, 0x7d36: 0x002fd894, 0x7d37: 0x0030e294,
+-	0x7d38: 0x00310094, 0x7d39: 0x40064020, 0x7d3a: 0x40064420, 0x7d3b: 0x402d9620,
+-	0x7d3c: 0x4031de20, 0x7d3d: 0x402d9820, 0x7d3e: 0x4031e220, 0x7d3f: 0x4031f020,
+-	// Block 0x1f5, offset 0x7d40
+-	0x7d40: 0xae603502, 0x7d41: 0xae603202, 0x7d42: 0xae604202, 0x7d43: 0xae604e02,
+-	0x7d44: 0xae605b02, 0x7d45: 0xae606302, 0x7d46: 0xae603702, 0x7d47: 0xae605202,
+-	0x7d48: 0xae604702, 0x7d49: 0xae606402, 0x7d4a: 0xae604302, 0x7d4b: 0xae604d02,
+-	0x7d4c: 0xae604102, 0x7d4d: 0xae605f02, 0x7d4e: 0xae605f02, 0x7d4f: 0xae606502,
+-	0x7d50: 0xae606602, 0x7d51: 0xae606702, 0x7d52: 0xae605f02, 0x7d53: 0xae602202,
+-	0x7d54: 0xae602a02, 0x7d55: 0xae805f02, 0x7d56: 0xadc06002, 0x7d57: 0xadc06002,
+-	0x7d58: 0xadc06002, 0x7d59: 0xadc06002, 0x7d5a: 0xae805f02, 0x7d5b: 0xad806802,
+-	0x7d5c: 0xadc06002, 0x7d5d: 0xadc06002, 0x7d5e: 0xadc06002, 0x7d5f: 0xadc06002,
+-	0x7d60: 0xadc06002, 0x7d61: 0xaca06e02, 0x7d62: 0xaca06f02, 0x7d63: 0xadc07002,
+-	0x7d64: 0xadc07502, 0x7d65: 0xadc07602, 0x7d66: 0xadc07702, 0x7d67: 0xaca05602,
+-	0x7d68: 0xaca05902, 0x7d69: 0xadc06002, 0x7d6a: 0xadc06002, 0x7d6b: 0xadc06002,
+-	0x7d6c: 0xadc06002, 0x7d6d: 0xadc07802, 0x7d6e: 0xadc07902, 0x7d6f: 0xadc06002,
+-	0x7d70: 0xadc07a02, 0x7d71: 0xadc07b02, 0x7d72: 0xadc02102, 0x7d73: 0xadc06002,
+-	0x7d74: 0xa0107c02, 0x7d75: 0xa0107d02, 0x7d76: 0xa0106102, 0x7d77: 0xa0106102,
+-	0x7d78: 0xa0105402, 0x7d79: 0xadc07e02, 0x7d7a: 0xadc06002, 0x7d7b: 0xadc06002,
+-	0x7d7c: 0xadc06002, 0x7d7d: 0xae605f02, 0x7d7e: 0xae605f02, 0x7d7f: 0xae605f02,
+-	// Block 0x1f6, offset 0x7d80
+-	0x7d80: 0xe00010d2, 0x7d81: 0xe00010cf, 0x7d82: 0xe00010cc, 0x7d83: 0xe00010c9,
+-	0x7d84: 0xe00010e1, 0x7d85: 0xe00010de, 0x7d86: 0xe00010e7, 0x7d87: 0xe00010e4,
+-	0x7d88: 0xe00010ed, 0x7d89: 0xe00010ea, 0x7d8a: 0xe000253d, 0x7d8b: 0xe000253a,
+-	0x7d8c: 0xe0002537, 0x7d8d: 0xe0002534, 0x7d8e: 0xe0001123, 0x7d8f: 0xe0001120,
+-	0x7d90: 0xe00027a8, 0x7d91: 0xe00027a5, 0x7d92: 0xe0001153, 0x7d93: 0xe0001150,
+-	0x7d94: 0xe0001159, 0x7d95: 0xe0001156, 0x7d96: 0xe0000c15, 0x7d97: 0xe0000f8d,
+-	0x7d98: 0xe00010db, 0x7d99: 0xe0001111, 0x7d9a: 0xf0000404, 0x7d9b: 0xe0000f70,
+-	0x7d9c: 0x40300420, 0x7d9d: 0x40300620, 0x7d9e: 0xe0000f7f, 0x7d9f: 0x402c9620,
+-	0x7da0: 0xe000099b, 0x7da1: 0xe0000998, 0x7da2: 0xe0000989, 0x7da3: 0xe0000986,
+-	0x7da4: 0xe00026ef, 0x7da5: 0xe00026eb, 0x7da6: 0xe00026f7, 0x7da7: 0xe00026f3,
+-	0x7da8: 0xe0002707, 0x7da9: 0xe0002703, 0x7daa: 0xe00026ff, 0x7dab: 0xe00026fb,
+-	0x7dac: 0xe000270f, 0x7dad: 0xe000270b, 0x7dae: 0xe0000902, 0x7daf: 0xe00008fe,
+-	0x7db0: 0xe000090a, 0x7db1: 0xe0000906, 0x7db2: 0xe000091a, 0x7db3: 0xe0000916,
+-	0x7db4: 0xe0000912, 0x7db5: 0xe000090e, 0x7db6: 0xe00009a2, 0x7db7: 0xe000099e,
+-	0x7db8: 0xe0000b6e, 0x7db9: 0xe0000b6b, 0x7dba: 0xe0000b5c, 0x7dbb: 0xe0000b59,
+-	0x7dbc: 0xe0000b26, 0x7dbd: 0xe0000b23, 0x7dbe: 0xe0002723, 0x7dbf: 0xe000271f,
+-	// Block 0x1f7, offset 0x7dc0
+-	0x7dc0: 0xe000272b, 0x7dc1: 0xe0002727, 0x7dc2: 0xe000273b, 0x7dc3: 0xe0002737,
+-	0x7dc4: 0xe0002733, 0x7dc5: 0xe000272f, 0x7dc6: 0xe0002743, 0x7dc7: 0xe000273f,
+-	0x7dc8: 0xe0000c66, 0x7dc9: 0xe0000c63, 0x7dca: 0xe0000c78, 0x7dcb: 0xe0000c75,
+-	0x7dcc: 0xe0000e84, 0x7dcd: 0xe0000e81, 0x7dce: 0xe0000e44, 0x7dcf: 0xe0000e41,
+-	0x7dd0: 0xe0002769, 0x7dd1: 0xe0002765, 0x7dd2: 0xe0002771, 0x7dd3: 0xe000276d,
+-	0x7dd4: 0xe0002781, 0x7dd5: 0xe000277d, 0x7dd6: 0xe0002779, 0x7dd7: 0xe0002775,
+-	0x7dd8: 0xe0002789, 0x7dd9: 0xe0002785, 0x7dda: 0xe0000e5d, 0x7ddb: 0xe0000e59,
+-	0x7ddc: 0xe0000e65, 0x7ddd: 0xe0000e61, 0x7dde: 0xe0000e75, 0x7ddf: 0xe0000e71,
+-	0x7de0: 0xe0000e6d, 0x7de1: 0xe0000e69, 0x7de2: 0xe0000e7d, 0x7de3: 0xe0000e79,
+-	0x7de4: 0xe000108d, 0x7de5: 0xe000108a, 0x7de6: 0xe000104d, 0x7de7: 0xe000104a,
+-	0x7de8: 0xe0001066, 0x7de9: 0xe0001062, 0x7dea: 0xe000106e, 0x7deb: 0xe000106a,
+-	0x7dec: 0xe000107e, 0x7ded: 0xe000107a, 0x7dee: 0xe0001076, 0x7def: 0xe0001072,
+-	0x7df0: 0xe0001086, 0x7df1: 0xe0001082, 0x7df2: 0xe0001108, 0x7df3: 0xe0001105,
+-	0x7df4: 0xe0001135, 0x7df5: 0xe0001132, 0x7df6: 0xe000112f, 0x7df7: 0xe000112c,
+-	0x7df8: 0xe000111d, 0x7df9: 0xe000111a, 0x7dfa: 0xe0000d0a, 0x7dfb: 0xe0000d07,
+-	0x7dfc: 0x0030d888, 0x7dfd: 0x4030d820, 0x7dfe: 0x00312088, 0x7dff: 0x40312020,
+-	// Block 0x1f8, offset 0x7e00
+-	0x7e00: 0x00093685, 0x7e01: 0x40083620, 0x7e02: 0x40083820, 0x7e03: 0x40083a20,
+-	0x7e04: 0x40083c20, 0x7e05: 0x002c628b, 0x7e06: 0x002c6285, 0x7e07: 0x002c9885,
+-	0x7e08: 0x002d9a85, 0x7e09: 0x002dcc85, 0x7e0a: 0x40083e20, 0x7e0b: 0x400a6e20,
+-	0x7e0c: 0x40084020, 0x7e0d: 0xe00009c4, 0x7e0e: 0x402d1e20, 0x7e0f: 0x40084220,
+-	0x7e10: 0xe00002cb, 0x7e11: 0xe00002d3, 0x7e12: 0xe00002b2, 0x7e13: 0xe00002bb,
+-	0x7e14: 0xe00003cd, 0x7e15: 0xe00002c3, 0x7e16: 0xe00003d1, 0x7e17: 0xe00004ab,
+-	0x7e18: 0xe0000579, 0x7e19: 0xe00002c7, 0x7e1a: 0xe0000640, 0x7e1b: 0xe00002cf,
+-	0x7e1c: 0xe00004af, 0x7e1d: 0xe0000644, 0x7e1e: 0xe0000798, 0x7e1f: 0xf0001e1e,
+-	0x7e20: 0x002d9a8a, 0x7e21: 0xf0001f0a, 0x7e22: 0xf0000a0a, 0x7e23: 0xf0001f0a,
+-	0x7e24: 0x0030be8a, 0x7e25: 0xf0001f0a, 0x7e26: 0xf0000a0a, 0x7e27: 0xe00010bb,
+-	0x7e28: 0xe0002581, 0x7e29: 0x0030f68a, 0x7e2a: 0xe00025b5, 0x7e2b: 0xe00025bc,
+-	0x7e2c: 0x002e228a, 0x7e2d: 0x002c3a8a, 0x7e2e: 0x002c628a, 0x7e2f: 0x002e828a,
+-	0x7e30: 0x002d9a84, 0x7e31: 0xf0001f04, 0x7e32: 0xf0000404, 0x7e33: 0xf0001f04,
+-	0x7e34: 0x0030be84, 0x7e35: 0xf0001f04, 0x7e36: 0xf0000404, 0x7e37: 0xe00010b6,
+-	0x7e38: 0xe000257e, 0x7e39: 0x0030f684, 0x7e3a: 0xe00025b2, 0x7e3b: 0xe00025b8,
+-	0x7e3c: 0x002e2284, 0x7e3d: 0x002c3a84, 0x7e3e: 0x002c6284, 0x7e3f: 0x002e8284,
+-	// Block 0x1f9, offset 0x7e40
+-	0x7e40: 0xe0000024, 0x7e41: 0xe0000029, 0x7e42: 0xe000002e, 0x7e43: 0xe0000033,
+-	0x7e44: 0xe0000038, 0x7e45: 0xe000003d, 0x7e46: 0xe0000042, 0x7e47: 0xe0000047,
+-	0x7e48: 0xf0001f04, 0x7e49: 0xf0001f04, 0x7e4a: 0xf0001f04, 0x7e4b: 0xf0001f04,
+-	0x7e4c: 0xf0001f04, 0x7e4d: 0xf0001f04, 0x7e4e: 0xf0001f04, 0x7e4f: 0xf0001f04,
+-	0x7e50: 0xf0001f04, 0x7e51: 0xf0000404, 0x7e52: 0xf0000404, 0x7e53: 0xf0000404,
+-	0x7e54: 0xf0000404, 0x7e55: 0xf0000404, 0x7e56: 0xf0000404, 0x7e57: 0xf0000404,
+-	0x7e58: 0xf0000404, 0x7e59: 0xf0000404, 0x7e5a: 0xf0000404, 0x7e5b: 0xf0000404,
+-	0x7e5c: 0xf0000404, 0x7e5d: 0xf0000404, 0x7e5e: 0xf0000404, 0x7e5f: 0xf0000404,
+-	0x7e60: 0xf0000404, 0x7e61: 0xf0000404, 0x7e62: 0xf0000404, 0x7e63: 0xf0000404,
+-	0x7e64: 0xf0000404, 0x7e65: 0xf0000404, 0x7e66: 0xf0000404, 0x7e67: 0xf0000404,
+-	0x7e68: 0xf0000404, 0x7e69: 0xf0000404, 0x7e6a: 0xf0000404, 0x7e6b: 0xf0000404,
+-	0x7e6c: 0xf0000404, 0x7e6d: 0xf0000404, 0x7e6e: 0xf0000404, 0x7e6f: 0xf0000404,
+-	0x7e70: 0xf0000404, 0x7e71: 0xf0000404, 0x7e72: 0xf0000404, 0x7e73: 0xe0002523,
+-	0x7e74: 0xf0000404, 0x7e75: 0xf0000404, 0x7e76: 0x002bde8c, 0x7e77: 0x002c0a8c,
+-	0x7e78: 0x002c3a8c, 0x7e79: 0x002c628c, 0x7e7a: 0x002c988c, 0x7e7b: 0x002d088c,
+-	0x7e7c: 0x002d228c, 0x7e7d: 0x002d688c, 0x7e7e: 0x002d9a8c, 0x7e7f: 0x002dcc8c,
+-	// Block 0x1fa, offset 0x7e80
+-	0x7e80: 0xf0001d1c, 0x7e81: 0xf0001d1d, 0x7e82: 0xe00009b7, 0x7e83: 0xf0001c1d,
+-	0x7e84: 0xf0001c1c, 0x7e85: 0xf0001c1c, 0x7e86: 0xe0000a66, 0x7e87: 0xe0000a7a,
+-	0x7e88: 0xf0001d1c, 0x7e89: 0xf0001c1d, 0x7e8a: 0xf0001c1c, 0x7e8b: 0xf0001d1d,
+-	0x7e8c: 0xf0001c1c, 0x7e8d: 0xf0001d1d, 0x7e8e: 0xf0001d1d, 0x7e8f: 0xf0001c1c,
+-	0x7e90: 0xf0001c1c, 0x7e91: 0xf0001c1c, 0x7e92: 0xe0000d0d, 0x7e93: 0xe0002584,
+-	0x7e94: 0xf0001c1c, 0x7e95: 0xe0000d3a, 0x7e96: 0xe0000d46, 0x7e97: 0xf0001d1d,
+-	0x7e98: 0xe0000eb0, 0x7e99: 0xe0000eb8, 0x7e9a: 0xf0001d1d, 0x7e9b: 0xf0001c1c,
+-	0x7e9c: 0xf0001c1d, 0x7e9d: 0xf0001c1d, 0x7e9e: 0xe00010b2, 0x7e9f: 0xe00009c8,
+-	0x7ea0: 0xf0001f04, 0x7ea1: 0xf0001f04, 0x7ea2: 0xf0001f04, 0x7ea3: 0xf0001f04,
+-	0x7ea4: 0xf0001f04, 0x7ea5: 0xf0001f04, 0x7ea6: 0xf0001f04, 0x7ea7: 0xf0001f04,
+-	0x7ea8: 0xf0001f04, 0x7ea9: 0xf0000404, 0x7eaa: 0xf0000404, 0x7eab: 0xf0000404,
+-	0x7eac: 0xf0000404, 0x7ead: 0xf0000404, 0x7eae: 0xf0000404, 0x7eaf: 0xf0000404,
+-	0x7eb0: 0xf0000404, 0x7eb1: 0xf0000404, 0x7eb2: 0xf0000404, 0x7eb3: 0xf0000404,
+-	0x7eb4: 0xf0000404, 0x7eb5: 0xf0000404, 0x7eb6: 0xf0000404, 0x7eb7: 0xf0000404,
+-	0x7eb8: 0xf0000404, 0x7eb9: 0xf0000404, 0x7eba: 0xf0000404, 0x7ebb: 0xf0000404,
+-	0x7ebc: 0xf0000404, 0x7ebd: 0xf0000404, 0x7ebe: 0xf0000404, 0x7ebf: 0xe0000bdf,
+-	// Block 0x1fb, offset 0x7ec0
+-	0x7ec0: 0xf0001f04, 0x7ec1: 0xf0001f04, 0x7ec2: 0xf0001f04, 0x7ec3: 0xf0001f04,
+-	0x7ec4: 0xf0001f04, 0x7ec5: 0xf0001f04, 0x7ec6: 0xf0001f04, 0x7ec7: 0xf0001f04,
+-	0x7ec8: 0xf0001f04, 0x7ec9: 0xf0001f04, 0x7eca: 0xf0001f04,
+-	0x7ed0: 0xf0000a04, 0x7ed1: 0xf0000a04, 0x7ed2: 0xf0000a04, 0x7ed3: 0xf0000a04,
+-	0x7ed4: 0xf0000a04, 0x7ed5: 0xf0000a04, 0x7ed6: 0xf0000a04, 0x7ed7: 0xf0000a04,
+-	0x7ed8: 0xf0000a04, 0x7ed9: 0xf0000a04, 0x7eda: 0xf0000a04, 0x7edb: 0xf0000a04,
+-	0x7edc: 0xf0000a04, 0x7edd: 0xf0000a04, 0x7ede: 0xf0000a04, 0x7edf: 0xf0000a04,
+-	0x7ee0: 0xf0000a04, 0x7ee1: 0xf0000a04, 0x7ee2: 0xf0000a04, 0x7ee3: 0xf0000a04,
+-	0x7ee4: 0xf0000a04, 0x7ee5: 0xf0000a04, 0x7ee6: 0xf0000a04, 0x7ee7: 0xe0002527,
+-	0x7ee8: 0xf0000a04, 0x7ee9: 0xf0000a04, 0x7eea: 0xf0000a04, 0x7eeb: 0x002c3a8c,
+-	0x7eec: 0x002f7a8c, 0x7eed: 0xf0000c0c, 0x7eee: 0xf0000c0c,
+-	0x7ef0: 0x002bde9d, 0x7ef1: 0x002c0a9d, 0x7ef2: 0x002c3a9d, 0x7ef3: 0x002c629d,
+-	0x7ef4: 0x002c989d, 0x7ef5: 0x002d089d, 0x7ef6: 0x002d229d, 0x7ef7: 0x002d689d,
+-	0x7ef8: 0x002d9a9d, 0x7ef9: 0x002dcc9d, 0x7efa: 0x002dfe9d, 0x7efb: 0x002e229d,
+-	0x7efc: 0x002e829d, 0x7efd: 0x002e9e9d, 0x7efe: 0x002ee29d, 0x7eff: 0x002f2c9d,
+-	// Block 0x1fc, offset 0x7f00
+-	0x7f00: 0xa0000000, 0x7f01: 0xa0000000, 0x7f02: 0xa0000000, 0x7f03: 0xa0000000,
+-	0x7f04: 0xa0000000, 0x7f05: 0xa0000000, 0x7f06: 0xa0000000, 0x7f07: 0xa0000000,
+-	0x7f08: 0xa0000000, 0x7f09: 0x40020020, 0x7f0a: 0x40020220, 0x7f0b: 0x40020420,
+-	0x7f0c: 0x40020620, 0x7f0d: 0x40020820, 0x7f0e: 0xa0000000, 0x7f0f: 0xa0000000,
+-	0x7f10: 0xa0000000, 0x7f11: 0xa0000000, 0x7f12: 0xa0000000, 0x7f13: 0xa0000000,
+-	0x7f14: 0xa0000000, 0x7f15: 0xa0000000, 0x7f16: 0xa0000000, 0x7f17: 0xa0000000,
+-	0x7f18: 0xa0000000, 0x7f19: 0xa0000000, 0x7f1a: 0xa0000000, 0x7f1b: 0xa0000000,
+-	0x7f1c: 0xa0000000, 0x7f1d: 0xa0000000, 0x7f1e: 0xa0000000, 0x7f1f: 0xa0000000,
+-	0x7f20: 0x402be020, 0x7f21: 0x402be220, 0x7f22: 0x402be420, 0x7f23: 0x402c5a20,
+-	0x7f24: 0x402be620, 0x7f25: 0x402be820, 0x7f26: 0x402c5820, 0x7f27: 0x402bea20,
+-	0x7f28: 0x402bec20, 0x7f29: 0x402bee20, 0x7f2a: 0x4004d820, 0x7f2b: 0x40093820,
+-	0x7f2c: 0x40024020, 0x7f2d: 0x40021a20, 0x7f2e: 0x4002e420, 0x7f2f: 0x4004e220,
+-	0x7f30: 0x4029cc20, 0x7f31: 0x4029ce20, 0x7f32: 0x4029d020, 0x7f33: 0x4029d220,
+-	0x7f34: 0x4029d420, 0x7f35: 0x4029d620, 0x7f36: 0x4029d820, 0x7f37: 0x402c5e20,
+-	0x7f38: 0x4029dc20, 0x7f39: 0x4029de20, 0x7f3a: 0x40026c20, 0x7f3b: 0x402c6220,
+-	0x7f3c: 0x40094020, 0x7f3d: 0x40094220, 0x7f3e: 0x40094420, 0x7f3f: 0x4002c420,
+-	// Block 0x1fd, offset 0x7f40
+-	0x7f40: 0x402bf020, 0x7f41: 0x402bf220, 0x7f42: 0x402bf420, 0x7f43: 0x402bf620,
+-	0x7f44: 0x402bf820, 0x7f45: 0x402bfa20, 0x7f46: 0x402bfc20, 0x7f47: 0x402bfe20,
+-	0x7f48: 0x402c0020, 0x7f49: 0x402c0220, 0x7f4a: 0x402c0420, 0x7f4b: 0x402c0620,
+-	0x7f4c: 0xc52f0002, 0x7f4d: 0x402c0a20, 0x7f4e: 0x402c0c20, 0x7f4f: 0x402c0e20,
+-	0x7f50: 0x402c1020, 0x7f51: 0x402c1220, 0x7f52: 0x402c1420, 0x7f53: 0x402c1620,
+-	0x7f54: 0x402c1820, 0x7f55: 0x402c1a20, 0x7f56: 0x402c1c20, 0x7f57: 0x402c1e20,
+-	0x7f58: 0x402c2020, 0x7f59: 0x402c2220, 0x7f5a: 0x402c2420, 0x7f5b: 0x4003f820,
+-	0x7f5c: 0x4004e420, 0x7f5d: 0x4003fa20, 0x7f5e: 0x40062420, 0x7f5f: 0x40021620,
+-	0x7f60: 0x402c2620, 0x7f61: 0x402c2820, 0x7f62: 0x402c5020, 0x7f63: 0x402c5220,
+-	0x7f64: 0x402c5420, 0x7f65: 0x402c5620, 0x7f66: 0x402c6020, 0x7f67: 0x402c2a20,
+-	0x7f68: 0x402c2c20, 0x7f69: 0x402c2e20, 0x7f6a: 0x402c3020, 0x7f6b: 0x402c3220,
+-	0x7f6c: 0xc52c0002, 0x7f6d: 0x402c3620, 0x7f6e: 0x402c3820, 0x7f6f: 0x402c3a20,
+-	0x7f70: 0x402c3c20, 0x7f71: 0x402c3e20, 0x7f72: 0x402c4020, 0x7f73: 0x402c4220,
+-	0x7f74: 0x402c4420, 0x7f75: 0x402c4620, 0x7f76: 0x402c4820, 0x7f77: 0x402c4a20,
+-	0x7f78: 0x402c5c20, 0x7f79: 0x402c4c20, 0x7f7a: 0x402c4e20, 0x7f7b: 0x4003fc20,
+-	0x7f7c: 0x40094820, 0x7f7d: 0x4003fe20, 0x7f7e: 0x40094c20, 0x7f7f: 0xa0000000,
+-	// Block 0x1fe, offset 0x7f80
+-	0x7f80: 0xe000299a, 0x7f81: 0xe0002997, 0x7f82: 0xe00029b0, 0x7f83: 0xe00029d4,
+-	0x7f84: 0xe00029cd, 0x7f85: 0xe00029c6, 0x7f86: 0xe00009dd, 0x7f87: 0xe0002a10,
+-	0x7f88: 0xe0002a2c, 0x7f89: 0xe0002a29, 0x7f8a: 0xe0002a32, 0x7f8b: 0xe0002a48,
+-	0x7f8c: 0xe0002aac, 0x7f8d: 0xe0002aa9, 0x7f8e: 0xe0002ab2, 0x7f8f: 0xe0002ab8,
+-	0x7f90: 0xe0000ab3, 0x7f91: 0xe0002b14, 0x7f92: 0xe0002b29, 0x7f93: 0xe0002b26,
+-	0x7f94: 0xe0002b2f, 0x7f95: 0xe0002b4f, 0x7f96: 0xe0002b45, 0x7f97: 0x40093e20,
+-	0x7f98: 0xe0000e12, 0x7f99: 0xe0002bf9, 0x7f9a: 0xe0002bf6, 0x7f9b: 0xe0002bff,
+-	0x7f9c: 0xe0002c08, 0x7f9d: 0xe0002c79, 0x7f9e: 0x00318888, 0x7f9f: 0xe0000f7b,
+-	0x7fa0: 0xe0002ca9, 0x7fa1: 0xe0002ca6, 0x7fa2: 0xe0002cbf, 0x7fa3: 0xe0002ce3,
+-	0x7fa4: 0xe0002cdc, 0x7fa5: 0xe0002cd5, 0x7fa6: 0xe00009d5, 0x7fa7: 0xe0002f58,
+-	0x7fa8: 0xe0002f74, 0x7fa9: 0xe0002f71, 0x7faa: 0xe0002f7a, 0x7fab: 0xe0002f90,
+-	0x7fac: 0xe0002d3a, 0x7fad: 0xe0002d37, 0x7fae: 0xe0002d40, 0x7faf: 0xe0002d46,
+-	0x7fb0: 0xe0000aad, 0x7fb1: 0xe0002da2, 0x7fb2: 0xe0002db7, 0x7fb3: 0xe0002db4,
+-	0x7fb4: 0xe0002dbd, 0x7fb5: 0xe0002ddd, 0x7fb6: 0xe0002dd3, 0x7fb7: 0x40093c20,
+-	0x7fb8: 0xe0000e0f, 0x7fb9: 0xe0002e96, 0x7fba: 0xe0002e93, 0x7fbb: 0xe0002e9c,
+-	0x7fbc: 0xe0002ea5, 0x7fbd: 0xe0002f13, 0x7fbe: 0x40318820, 0x7fbf: 0xe0002f1f,
+-	// Block 0x1ff, offset 0x7fc0
+-	0x7fc0: 0xe00029e1, 0x7fc1: 0xe0002cf0, 0x7fc2: 0xe000299d, 0x7fc3: 0xe0002cac,
+-	0x7fc4: 0xe00029de, 0x7fc5: 0xe0002ced, 0x7fc6: 0xe0002a04, 0x7fc7: 0xe0002f4c,
+-	0x7fc8: 0xe0002a07, 0x7fc9: 0xe0002f4f, 0x7fca: 0xe0002a0d, 0x7fcb: 0xe0002f55,
+-	0x7fcc: 0xe0002a0a, 0x7fcd: 0xe0002f52, 0x7fce: 0xe0002a17, 0x7fcf: 0xe0002f5f,
+-	0x7fd0: 0xe0000aaa, 0x7fd1: 0xe0000aa7, 0x7fd2: 0xe0002a5b, 0x7fd3: 0xe0002fa3,
+-	0x7fd4: 0xe0002a2f, 0x7fd5: 0xe0002f77, 0x7fd6: 0xe0002a4e, 0x7fd7: 0xe0002f96,
+-	0x7fd8: 0xe0002a58, 0x7fd9: 0xe0002fa0, 0x7fda: 0xe0002a45, 0x7fdb: 0xe0002f8d,
+-	0x7fdc: 0xe0002a85, 0x7fdd: 0xe0002d10, 0x7fde: 0xe0002a82, 0x7fdf: 0xe0002d0d,
+-	0x7fe0: 0xe0002a8b, 0x7fe1: 0xe0002d16, 0x7fe2: 0xe0002a8e, 0x7fe3: 0xe0002d19,
+-	0x7fe4: 0xe0002a94, 0x7fe5: 0xe0002d1f, 0x7fe6: 0xe0000c1b, 0x7fe7: 0xe0000c18,
+-	0x7fe8: 0xe0002abf, 0x7fe9: 0xe0002d4d, 0x7fea: 0xe0002ac8, 0x7feb: 0xe0002d53,
+-	0x7fec: 0xe0002aaf, 0x7fed: 0xe0002d3d, 0x7fee: 0xe0002ac5, 0x7fef: 0xe0002d50,
+-	0x7ff0: 0xe0002ac2, 0x7ff1: 0x402da220, 0x7ff2: 0xe0002575, 0x7ff3: 0xe0003010,
+-	0x7ff4: 0xe0002ada, 0x7ff5: 0xe0002d65, 0x7ff6: 0xe0002ae3, 0x7ff7: 0xe0002d71,
+-	0x7ff8: 0x402f7220, 0x7ff9: 0xe0002aec, 0x7ffa: 0xe0002d7a, 0x7ffb: 0xe0002af2,
+-	0x7ffc: 0xe0002d80, 0x7ffd: 0xe0002aef, 0x7ffe: 0xe0002d7d, 0x7fff: 0xe0000d04,
+-	// Block 0x200, offset 0x8000
+-	0x8000: 0xe0000cfe, 0x8001: 0xe0000cf8, 0x8002: 0xe0000cf5, 0x8003: 0xe0002b0b,
+-	0x8004: 0xe0002d99, 0x8005: 0xe0002b1a, 0x8006: 0xe0002da8, 0x8007: 0xe0002b11,
+-	0x8008: 0xe0002d9f, 0x8009: 0xe00030dd, 0x800a: 0x002eda88, 0x800b: 0x402eda20,
+-	0x800c: 0xe0002b6c, 0x800d: 0xe0002dfa, 0x800e: 0xe0002b2c, 0x800f: 0xe0002dba,
+-	0x8010: 0xe0002b4c, 0x8011: 0xe0002dda, 0x8012: 0xe0000e93, 0x8013: 0xe0000e8f,
+-	0x8014: 0xe0002ba4, 0x8015: 0xe0002e3e, 0x8016: 0xe0002bad, 0x8017: 0xe0002e47,
+-	0x8018: 0xe0002ba7, 0x8019: 0xe0002e41, 0x801a: 0xe0002bc0, 0x801b: 0xe0002e5a,
+-	0x801c: 0xe0002bc7, 0x801d: 0xe0002e61, 0x801e: 0xe0002bd4, 0x801f: 0xe0002e6e,
+-	0x8020: 0xe0002bca, 0x8021: 0xe0002e64, 0x8022: 0xe0002be7, 0x8023: 0xe0002e84,
+-	0x8024: 0xe0002be1, 0x8025: 0xe0002e7b, 0x8026: 0x00303688, 0x8027: 0x40303620,
+-	0x8028: 0xe0002c1e, 0x8029: 0xe0002ebb, 0x802a: 0xe0002c28, 0x802b: 0xe0002ec5,
+-	0x802c: 0xe0002bfc, 0x802d: 0xe0002e99, 0x802e: 0xe0002c05, 0x802f: 0xe0002ea2,
+-	0x8030: 0xe0002c1b, 0x8031: 0xe0002eb8, 0x8032: 0xe0002c25, 0x8033: 0xe0002ec2,
+-	0x8034: 0xe0002c67, 0x8035: 0xe0002f04, 0x8036: 0xe0002c7f, 0x8037: 0xe0002f19,
+-	0x8038: 0xe0002c82, 0x8039: 0xe0002c94, 0x803a: 0xe0002f31, 0x803b: 0xe0002c9d,
+-	0x803c: 0xe0002f3a, 0x803d: 0xe0002c9a, 0x803e: 0xe0002f37, 0x803f: 0xe0000f64,
+-	// Block 0x201, offset 0x8040
+-	0x8040: 0x402c1a20, 0x8041: 0x002c2a88, 0x8042: 0x002c3288, 0x8043: 0x402c3220,
+-	0x8044: 0x0031c488, 0x8045: 0x4031c420, 0x8046: 0x002efa88, 0x8047: 0x002c4e88,
+-	0x8048: 0x402c4e20, 0x8049: 0x002c7288, 0x804a: 0x002c7a88, 0x804b: 0x002c8488,
+-	0x804c: 0x402c8420, 0x804d: 0xe000115c, 0x804e: 0x002cae88, 0x804f: 0x002cb888,
+-	0x8050: 0x002cc288, 0x8051: 0x002d1688, 0x8052: 0x402d1620, 0x8053: 0x002d4488,
+-	0x8054: 0x002d5888, 0x8055: 0x402d7820, 0x8056: 0x002dc288, 0x8057: 0x002db688,
+-	0x8058: 0x002e0a88, 0x8059: 0x402e0a20, 0x805a: 0x402e3820, 0x805b: 0x402e7220,
+-	0x805c: 0x0030a088, 0x805d: 0x002eb488, 0x805e: 0x402ebc20, 0x805f: 0x002f1088,
+-	0x8060: 0xe0002b80, 0x8061: 0xe0002e0e, 0x8062: 0x002d6088, 0x8063: 0x402d6020,
+-	0x8064: 0x002f3e88, 0x8065: 0x402f3e20, 0x8066: 0x002f8288, 0x8067: 0x0031b488,
+-	0x8068: 0x4031b420, 0x8069: 0x00300888, 0x806a: 0x40301220, 0x806b: 0x40304220,
+-	0x806c: 0x00304a88, 0x806d: 0x40304a20, 0x806e: 0x00305288, 0x806f: 0xe0002c38,
+-	0x8070: 0xe0002ed5, 0x8071: 0x0030b488, 0x8072: 0x0030cc88, 0x8073: 0x00311888,
+-	0x8074: 0x40311820, 0x8075: 0x00313488, 0x8076: 0x40313420, 0x8077: 0x00316488,
+-	0x8078: 0x00316e88, 0x8079: 0x40316e20, 0x807a: 0x40317820, 0x807b: 0x4031a620,
+-	0x807c: 0x0031bc88, 0x807d: 0x4031bc20, 0x807e: 0xe0000fc9, 0x807f: 0x40319420,
+-	// Block 0x202, offset 0x8080
+-	0x8080: 0x40321220, 0x8081: 0x40321a20, 0x8082: 0x40322220, 0x8083: 0x40322a20,
+-	0x8084: 0xe0000ad5, 0x8085: 0xe0000ad1, 0x8086: 0xe0000acd, 0x8087: 0xe0003040,
+-	0x8088: 0xe000303d, 0x8089: 0xe000303a, 0x808a: 0xe0003088, 0x808b: 0xe0003085,
+-	0x808c: 0xe0003082, 0x808d: 0xe00029c3, 0x808e: 0xe0002cd2, 0x808f: 0xe0002ab5,
+-	0x8090: 0xe0002d43, 0x8091: 0xe0002b42, 0x8092: 0xe0002dd0, 0x8093: 0xe0002c02,
+-	0x8094: 0xe0002e9f, 0x8095: 0xe0002c17, 0x8096: 0xe0002eb4, 0x8097: 0xe0002c0b,
+-	0x8098: 0xe0002ea8, 0x8099: 0xe0002c13, 0x809a: 0xe0002eb0, 0x809b: 0xe0002c0f,
+-	0x809c: 0xe0002eac, 0x809d: 0x402cae20, 0x809e: 0xe00029d0, 0x809f: 0xe0002cdf,
+-	0x80a0: 0xe00029da, 0x80a1: 0xe0002ce9, 0x80a2: 0xe00009f4, 0x80a3: 0xe00009ef,
+-	0x80a4: 0x002d3a88, 0x80a5: 0x402d3a20, 0x80a6: 0xe0002a88, 0x80a7: 0xe0002d13,
+-	0x80a8: 0xe0002ae0, 0x80a9: 0xe0002d6e, 0x80aa: 0xe0002b65, 0x80ab: 0xe0002df3,
+-	0x80ac: 0xe0002b68, 0x80ad: 0xe0002df6, 0x80ae: 0xe0001162, 0x80af: 0xe000115f,
+-	0x80b0: 0xe0002d68, 0x80b1: 0xe0002fe2, 0x80b2: 0xe0002fdf, 0x80b3: 0xe0002fdc,
+-	0x80b4: 0xe0002a7f, 0x80b5: 0xe0002d0a, 0x80b6: 0x002d7888, 0x80b7: 0x00319488,
+-	0x80b8: 0xe0002b0e, 0x80b9: 0xe0002d9c, 0x80ba: 0xe00029c9, 0x80bb: 0xe0002cd8,
+-	0x80bc: 0xe00009ea, 0x80bd: 0xe00009e5, 0x80be: 0xe0000e19, 0x80bf: 0xe0000e15,
+-	// Block 0x203, offset 0x80c0
+-	0x80c0: 0xe00029e7, 0x80c1: 0xe0002cf6, 0x80c2: 0xe00029ea, 0x80c3: 0xe0002cf9,
+-	0x80c4: 0xe0002a69, 0x80c5: 0xe0002fb1, 0x80c6: 0xe0002a6c, 0x80c7: 0xe0002fb4,
+-	0x80c8: 0xe0002ace, 0x80c9: 0xe0002d59, 0x80ca: 0xe0002ad1, 0x80cb: 0xe0002d5c,
+-	0x80cc: 0xe0002b7a, 0x80cd: 0xe0002e08, 0x80ce: 0xe0002b7d, 0x80cf: 0xe0002e0b,
+-	0x80d0: 0xe0002bb0, 0x80d1: 0xe0002e4a, 0x80d2: 0xe0002bb3, 0x80d3: 0xe0002e4d,
+-	0x80d4: 0xe0002c32, 0x80d5: 0xe0002ecf, 0x80d6: 0xe0002c35, 0x80d7: 0xe0002ed2,
+-	0x80d8: 0xe0002bde, 0x80d9: 0xe0002e78, 0x80da: 0xe0002bed, 0x80db: 0xe0002e8a,
+-	0x80dc: 0x00312288, 0x80dd: 0x40312220, 0x80de: 0xe0002a97, 0x80df: 0xe0002d22,
+-	0x80e0: 0x002ebc88, 0x80e1: 0x402c8c20, 0x80e2: 0x002f2288, 0x80e3: 0x402f2220,
+-	0x80e4: 0x00314088, 0x80e5: 0x40314020, 0x80e6: 0xe00029d7, 0x80e7: 0xe0002ce6,
+-	0x80e8: 0xe0002a51, 0x80e9: 0xe0002f99, 0x80ea: 0xe0002b48, 0x80eb: 0xe0002dd6,
+-	0x80ec: 0xe0002b5a, 0x80ed: 0xe0002de8, 0x80ee: 0xe0002b5e, 0x80ef: 0xe0002dec,
+-	0x80f0: 0xe0002b61, 0x80f1: 0xe0002def, 0x80f2: 0xe0002c8b, 0x80f3: 0xe0002f28,
+-	0x80f4: 0x402e5e20, 0x80f5: 0x402ed020, 0x80f6: 0x40305a20, 0x80f7: 0x402dd420,
+-	0x80f8: 0xe0000abf, 0x80f9: 0xe0000ec4, 0x80fa: 0x002be888, 0x80fb: 0x002c4488,
+-	0x80fc: 0x402c4420, 0x80fd: 0x002e3888, 0x80fe: 0x00303e88, 0x80ff: 0x402ffc20,
+-	// Block 0x204, offset 0x8100
+-	0x8100: 0xae603502, 0x8101: 0xae603202, 0x8102: 0xae604502, 0x8103: 0xae602202,
+-	0x8104: 0xe0000000, 0x8105: 0xaf007f02, 0x8106: 0xae605f02, 0x8107: 0xadc06002,
+-	0x8108: 0xadc06002, 0x8109: 0xadc06002, 0x810a: 0xae605f02, 0x810b: 0xae605f02,
+-	0x810c: 0xae605f02, 0x810d: 0xadc06002, 0x810e: 0xadc06002, 0x810f: 0xa0000000,
+-	0x8110: 0xae605f02, 0x8111: 0xae605f02, 0x8112: 0xae605f02, 0x8113: 0xadc06002,
+-	0x8114: 0xadc06002, 0x8115: 0xadc06002, 0x8116: 0xadc06002, 0x8117: 0xae605f02,
+-	0x8118: 0xae808002, 0x8119: 0xadc06002, 0x811a: 0xadc06002, 0x811b: 0xae605f02,
+-	0x811c: 0xae906002, 0x811d: 0xaea05f02, 0x811e: 0xaea05f02, 0x811f: 0xae906002,
+-	0x8120: 0xaea08102, 0x8121: 0xaea08202, 0x8122: 0xae906002, 0x8123: 0x84e615ef,
+-	0x8124: 0x84e6164c, 0x8125: 0x84e616cd, 0x8126: 0x84e61771, 0x8127: 0x84e61836,
+-	0x8128: 0x84e6161d, 0x8129: 0x84e61631, 0x812a: 0x84e616b4, 0x812b: 0x84e61741,
+-	0x812c: 0x84e617bd, 0x812d: 0x84e61816, 0x812e: 0x84e6185f, 0x812f: 0x84e6187b,
+-	0x8130: 0x00326688, 0x8131: 0x40326620, 0x8132: 0x0032a688, 0x8133: 0x4032a620,
+-	0x8134: 0x40064020, 0x8135: 0x40064220, 0x8136: 0x00326088, 0x8137: 0x40326020,
+-	0x813a: 0x00326c84, 0x813b: 0x40329220,
+-	0x813c: 0x40329020, 0x813d: 0x40329420, 0x813e: 0x402c6220,
+-	// Block 0x205, offset 0x8140
+-	0x8140: 0xe00029f8, 0x8141: 0xe0002d07, 0x8142: 0xe00029fb, 0x8143: 0xe0002f43,
+-	0x8144: 0xe00029fe, 0x8145: 0xe0002f46, 0x8146: 0xe0002a01, 0x8147: 0xe0002f49,
+-	0x8148: 0xe0002a13, 0x8149: 0xe0002f5b, 0x814a: 0xe0002a1a, 0x814b: 0xe0002f62,
+-	0x814c: 0xe0002a20, 0x814d: 0xe0002f68, 0x814e: 0xe0002a26, 0x814f: 0xe0002f6e,
+-	0x8150: 0xe0002a1d, 0x8151: 0xe0002f65, 0x8152: 0xe0002a23, 0x8153: 0xe0002f6b,
+-	0x8154: 0xe0002a62, 0x8155: 0xe0002faa, 0x8156: 0xe0002a5e, 0x8157: 0xe0002fa6,
+-	0x8158: 0xe0002a76, 0x8159: 0xe0002fbe, 0x815a: 0xe0002a79, 0x815b: 0xe0002fc1,
+-	0x815c: 0xe0002a54, 0x815d: 0xe0002f9c, 0x815e: 0xe0002a7c, 0x815f: 0xe0002fca,
+-	0x8160: 0xe0002a91, 0x8161: 0xe0002d1c, 0x8162: 0xe0002a9d, 0x8163: 0xe0002d28,
+-	0x8164: 0xe0002aa3, 0x8165: 0xe0002d2e, 0x8166: 0xe0002a9a, 0x8167: 0xe0002d25,
+-	0x8168: 0xe0002aa0, 0x8169: 0xe0002d2b, 0x816a: 0xe0002aa6, 0x816b: 0xe0002d31,
+-	0x816c: 0xe0002ad7, 0x816d: 0xe0002d62, 0x816e: 0xe0002abb, 0x816f: 0xe0002d49,
+-	0x8170: 0xe0002add, 0x8171: 0xe0002d6b, 0x8172: 0xe0002ae6, 0x8173: 0xe0002d74,
+-	0x8174: 0xe0002ae9, 0x8175: 0xe0002d77, 0x8176: 0xe0002af5, 0x8177: 0xe0002d83,
+-	0x8178: 0xe0002af8, 0x8179: 0xe0002d86, 0x817a: 0xe0002aff, 0x817b: 0xe0002d8d,
+-	0x817c: 0xe0002afc, 0x817d: 0xe0002d8a, 0x817e: 0xe0002b02, 0x817f: 0xe0002d90,
+-	// Block 0x206, offset 0x8180
+-	0x8180: 0xe0002b05, 0x8181: 0xe0002d93, 0x8182: 0xe0002b08, 0x8183: 0xe0002d96,
+-	0x8184: 0xe0002b17, 0x8185: 0xe0002da5, 0x8186: 0xe0002b1d, 0x8187: 0xe0002dab,
+-	0x8188: 0xe0002b23, 0x8189: 0xe0002db1, 0x818a: 0xe0002b20, 0x818b: 0xe0002dae,
+-	0x818c: 0xe0002b52, 0x818d: 0xe0002de0, 0x818e: 0xe0002b56, 0x818f: 0xe0002de4,
+-	0x8190: 0xe0002b73, 0x8191: 0xe0002e01, 0x8192: 0xe0002b6f, 0x8193: 0xe0002dfd,
+-	0x8194: 0xe0002b9e, 0x8195: 0xe0002e38, 0x8196: 0xe0002ba1, 0x8197: 0xe0002e3b,
+-	0x8198: 0xe0002baa, 0x8199: 0xe0002e44, 0x819a: 0xe0002bb6, 0x819b: 0xe0002e50,
+-	0x819c: 0xe0002bb9, 0x819d: 0xe0002e53, 0x819e: 0xe0002bbd, 0x819f: 0xe0002e57,
+-	0x81a0: 0xe0002bd1, 0x81a1: 0xe0002e6b, 0x81a2: 0xe0002bd7, 0x81a3: 0xe0002e71,
+-	0x81a4: 0xe0002bc3, 0x81a5: 0xe0002e5d, 0x81a6: 0xe0002bcd, 0x81a7: 0xe0002e67,
+-	0x81a8: 0xe0002bda, 0x81a9: 0xe0002e74, 0x81aa: 0xe0002be4, 0x81ab: 0xe0002e81,
+-	0x81ac: 0xe0002bea, 0x81ad: 0xe0002e87, 0x81ae: 0xe0002bf3, 0x81af: 0xe0002e90,
+-	0x81b0: 0xe0002bf0, 0x81b1: 0xe0002e8d, 0x81b2: 0xe0002c52, 0x81b3: 0xe0002eef,
+-	0x81b4: 0xe0002c58, 0x81b5: 0xe0002ef5, 0x81b6: 0xe0002c55, 0x81b7: 0xe0002ef2,
+-	0x81b8: 0xe0002c21, 0x81b9: 0xe0002ebe, 0x81ba: 0xe0002c2b, 0x81bb: 0xe0002ec8,
+-	0x81bc: 0xe0002c5b, 0x81bd: 0xe0002ef8, 0x81be: 0xe0002c5e, 0x81bf: 0xe0002efb,
+-	// Block 0x207, offset 0x81c0
+-	0x81c0: 0xe0002c64, 0x81c1: 0xe0002f01, 0x81c2: 0xe0002c61, 0x81c3: 0xe0002efe,
+-	0x81c4: 0xe0002c6a, 0x81c5: 0xe0002f0a, 0x81c6: 0xe0002c6d, 0x81c7: 0xe0002f0d,
+-	0x81c8: 0xe0002c70, 0x81c9: 0xe0002f10, 0x81ca: 0xe0002c76, 0x81cb: 0xe0002fc7,
+-	0x81cc: 0xe0002c73, 0x81cd: 0xe0002fc4, 0x81ce: 0xe0002c88, 0x81cf: 0xe0002f25,
+-	0x81d0: 0xe0002c97, 0x81d1: 0xe0002f34, 0x81d2: 0xe0002ca0, 0x81d3: 0xe0002f3d,
+-	0x81d4: 0xe0002ca3, 0x81d5: 0xe0002f40, 0x81d6: 0xe0002d34, 0x81d7: 0xe0002e7e,
+-	0x81d8: 0xe0002f07, 0x81d9: 0xe0002f1c, 0x81da: 0xe0002994, 0x81db: 0xe0000f70,
+-	0x81dc: 0x40300420, 0x81dd: 0x40300620, 0x81de: 0xe0000f7f, 0x81df: 0x402c9620,
+-	0x81e0: 0xe00029ed, 0x81e1: 0xe0002cfc, 0x81e2: 0xe00029e4, 0x81e3: 0xe0002cf3,
+-	0x81e4: 0xe00029b3, 0x81e5: 0xe0002cc2, 0x81e6: 0xe00029b7, 0x81e7: 0xe0002cc6,
+-	0x81e8: 0xe00029bf, 0x81e9: 0xe0002cce, 0x81ea: 0xe00029bb, 0x81eb: 0xe0002cca,
+-	0x81ec: 0xe00029f4, 0x81ed: 0xe0002d03, 0x81ee: 0xe00029a0, 0x81ef: 0xe0002caf,
+-	0x81f0: 0xe00029a4, 0x81f1: 0xe0002cb3, 0x81f2: 0xe00029ac, 0x81f3: 0xe0002cbb,
+-	0x81f4: 0xe00029a8, 0x81f5: 0xe0002cb7, 0x81f6: 0xe00029f0, 0x81f7: 0xe0002cff,
+-	0x81f8: 0xe0002a6f, 0x81f9: 0xe0002fb7, 0x81fa: 0xe0002a66, 0x81fb: 0xe0002fae,
+-	0x81fc: 0xe0002a4b, 0x81fd: 0xe0002f93, 0x81fe: 0xe0002a35, 0x81ff: 0xe0002f7d,
+-	// Block 0x208, offset 0x8200
+-	0x8200: 0xe0002a39, 0x8201: 0xe0002f81, 0x8202: 0xe0002a41, 0x8203: 0xe0002f89,
+-	0x8204: 0xe0002a3d, 0x8205: 0xe0002f85, 0x8206: 0xe0002a72, 0x8207: 0xe0002fba,
+-	0x8208: 0xe0002acb, 0x8209: 0xe0002d56, 0x820a: 0xe0002ad4, 0x820b: 0xe0002d5f,
+-	0x820c: 0xe0002b97, 0x820d: 0xe0002e25, 0x820e: 0xe0002b77, 0x820f: 0xe0002e05,
+-	0x8210: 0xe0002b32, 0x8211: 0xe0002dc0, 0x8212: 0xe0002b36, 0x8213: 0xe0002dc4,
+-	0x8214: 0xe0002b3e, 0x8215: 0xe0002dcc, 0x8216: 0xe0002b3a, 0x8217: 0xe0002dc8,
+-	0x8218: 0xe0002b9a, 0x8219: 0xe0002e28, 0x821a: 0xe0002b83, 0x821b: 0xe0002e11,
+-	0x821c: 0xe0002b87, 0x821d: 0xe0002e15, 0x821e: 0xe0002b8f, 0x821f: 0xe0002e1d,
+-	0x8220: 0xe0002b8b, 0x8221: 0xe0002e19, 0x8222: 0xe0002b93, 0x8223: 0xe0002e21,
+-	0x8224: 0xe0002c4f, 0x8225: 0xe0002eec, 0x8226: 0xe0002c2f, 0x8227: 0xe0002ecc,
+-	0x8228: 0xe0002c3b, 0x8229: 0xe0002ed8, 0x822a: 0xe0002c3f, 0x822b: 0xe0002edc,
+-	0x822c: 0xe0002c47, 0x822d: 0xe0002ee4, 0x822e: 0xe0002c43, 0x822f: 0xe0002ee0,
+-	0x8230: 0xe0002c4b, 0x8231: 0xe0002ee8, 0x8232: 0xe0002c7c, 0x8233: 0xe0002f16,
+-	0x8234: 0xe0002c91, 0x8235: 0xe0002f2e, 0x8236: 0xe0002c8e, 0x8237: 0xe0002f2b,
+-	0x8238: 0xe0002c85, 0x8239: 0xe0002f22, 0x823a: 0xe0000d0a, 0x823b: 0xe0000d07,
+-	0x823c: 0x0030d888, 0x823d: 0x4030d820, 0x823e: 0x00312088, 0x823f: 0x40312020,
+-	// Block 0x209, offset 0x8240
+-	0x8240: 0x40063a20, 0x8241: 0xe00000b1, 0x8242: 0xe00012ea, 0x8243: 0xe00012f5,
+-	0x8244: 0xe00012e0, 0x8246: 0xe00012ee, 0x8247: 0xe00012f1,
+-	0x8248: 0xe000124f, 0x8249: 0xe0001249, 0x824a: 0xe00012e7, 0x824b: 0xe00012dd,
+-	0x824c: 0xe00012f8, 0x824d: 0xe00000b7, 0x824e: 0xe00000b4, 0x824f: 0xe00000ba,
+-	0x8250: 0xe0001343, 0x8251: 0xe000135e, 0x8252: 0xe0001356, 0x8253: 0xe0001352,
+-	0x8256: 0xe0001349, 0x8257: 0xe000135a,
+-	0x8258: 0xe0001346, 0x8259: 0xe0001361, 0x825a: 0xe0001340, 0x825b: 0xe000133a,
+-	0x825d: 0xe00000c0, 0x825e: 0xe00000bd, 0x825f: 0xe00000c3,
+-	0x8260: 0xe00013e6, 0x8261: 0xe0001401, 0x8262: 0xe00013f9, 0x8263: 0xe00013f5,
+-	0x8264: 0xe00013a4, 0x8265: 0xe00013a7, 0x8266: 0xe00013ec, 0x8267: 0xe00013fd,
+-	0x8268: 0xe00013e9, 0x8269: 0xe0001404, 0x826a: 0xe00013e3, 0x826b: 0xe00013dd,
+-	0x826c: 0xe00013aa, 0x826d: 0xe00000ae, 0x826e: 0xe00000ab, 0x826f: 0x402c2620,
+-	0x8272: 0xe000149f, 0x8273: 0xe00014aa,
+-	0x8274: 0xe0001495, 0x8276: 0xe00014a3, 0x8277: 0xe00014a6,
+-	0x8278: 0xe00013a1, 0x8279: 0xe000139b, 0x827a: 0xe000149c, 0x827b: 0xe0001492,
+-	0x827c: 0xe00014ad, 0x827d: 0x40062020, 0x827e: 0x40063820,
+-	// Block 0x20a, offset 0x8280
+-	0x8280: 0x00021284, 0x8281: 0x00021284, 0x8282: 0x00021284, 0x8283: 0x00021284,
+-	0x8284: 0x00021284, 0x8285: 0x00021284, 0x8286: 0x00021284, 0x8287: 0x0002129b,
+-	0x8288: 0x00021284, 0x8289: 0x00021284, 0x828a: 0x00021284, 0x828b: 0xa0000000,
+-	0x828c: 0xa0000000, 0x828d: 0xa0000000, 0x828e: 0xa0000000, 0x828f: 0xa0000000,
+-	0x8290: 0x40022620, 0x8291: 0x0002269b, 0x8292: 0x40022820, 0x8293: 0x40022a20,
+-	0x8294: 0x40022c20, 0x8295: 0x40022e20, 0x8296: 0x4004c420, 0x8297: 0x40021820,
+-	0x8298: 0x4003d420, 0x8299: 0x4003d620, 0x829a: 0x4003d820, 0x829b: 0x4003da20,
+-	0x829c: 0x4003e220, 0x829d: 0x4003e420, 0x829e: 0x4003e620, 0x829f: 0x4003e820,
+-	0x82a0: 0x4004f820, 0x82a1: 0x4004fa20, 0x82a2: 0x40050220, 0x82a3: 0x40050420,
+-	0x82a4: 0x0002e484, 0x82a5: 0xf0001f04, 0x82a6: 0xf0000404, 0x82a7: 0x40050620,
+-	0x82a8: 0x40020e20, 0x82a9: 0x40021020, 0x82aa: 0xa0000000, 0x82ab: 0xa0000000,
+-	0x82ac: 0xa0000000, 0x82ad: 0xa0000000, 0x82ae: 0xa0000000, 0x82af: 0x0002129b,
+-	0x82b0: 0x4004f020, 0x82b1: 0x4004f420, 0x82b2: 0x40050e20, 0x82b3: 0xf0001f04,
+-	0x82b4: 0xf0000404, 0x82b5: 0x40051020, 0x82b6: 0xf0001f04, 0x82b7: 0xf0000404,
+-	0x82b8: 0x40051620, 0x82b9: 0x4003dc20, 0x82ba: 0x4003de20, 0x82bb: 0x40051820,
+-	0x82bc: 0xe00027ab, 0x82bd: 0x4002e020, 0x82be: 0x40021420, 0x82bf: 0x40051a20,
+-	// Block 0x20b, offset 0x82c0
+-	0x82c0: 0x40051e20, 0x82c1: 0x40052220, 0x82c2: 0x40052420, 0x82c3: 0x40050820,
+-	0x82c4: 0x40095820, 0x82c5: 0x40040c20, 0x82c6: 0x40040e20, 0x82c7: 0xf0001f04,
+-	0x82c8: 0xe00027b1, 0x82c9: 0xe00027ae, 0x82ca: 0x4004e820, 0x82cb: 0x4004d420,
+-	0x82cc: 0x40050a20, 0x82cd: 0x40050c20, 0x82ce: 0x4004da20, 0x82cf: 0x40026620,
+-	0x82d0: 0x40052020, 0x82d1: 0x4004dc20, 0x82d2: 0x40095020, 0x82d3: 0x40023420,
+-	0x82d4: 0x40051c20, 0x82d5: 0x40039c20, 0x82d6: 0x40039e20, 0x82d7: 0xe00000a6,
+-	0x82d8: 0x4003a020, 0x82d9: 0x4003a220, 0x82da: 0x4003a420, 0x82db: 0x4003a620,
+-	0x82dc: 0x4003a820, 0x82dd: 0x4003aa20, 0x82de: 0x4003ac20, 0x82df: 0x00021284,
+-	0x82e0: 0xa0000000, 0x82e1: 0xa0000000, 0x82e2: 0xa0000000, 0x82e3: 0xa0000000,
+-	0x82e4: 0xa0000000,
+-	0x82ea: 0xa0000000, 0x82eb: 0xa0000000,
+-	0x82ec: 0xa0000000, 0x82ed: 0xa0000000, 0x82ee: 0xa0000000, 0x82ef: 0xa0000000,
+-	0x82f0: 0x0029cc94, 0x82f1: 0x002d9a94,
+-	0x82f4: 0x0029d494, 0x82f5: 0x0029d694, 0x82f6: 0x0029d894, 0x82f7: 0x0029da94,
+-	0x82f8: 0x0029dc94, 0x82f9: 0x0029de94, 0x82fa: 0x00093894, 0x82fb: 0x00094e94,
+-	0x82fc: 0x00094294, 0x82fd: 0x0003f494, 0x82fe: 0x0003f694, 0x82ff: 0x002e9e94,
+-	// Block 0x20c, offset 0x8300
+-	0x8300: 0xe00009bc, 0x8301: 0xe00009c0, 0x8302: 0x002c3a8b, 0x8303: 0xe0002960,
+-	0x8304: 0x40081c20, 0x8305: 0xe0000a5e, 0x8306: 0xe0000a62, 0x8307: 0x002cc28a,
+-	0x8308: 0x40081e20, 0x8309: 0xe0002963, 0x830a: 0x002d2285, 0x830b: 0x002d688b,
+-	0x830c: 0x002d688b, 0x830d: 0x002d688b, 0x830e: 0x002d6885, 0x830f: 0xf0000202,
+-	0x8310: 0x002d9a8b, 0x8311: 0x002d9a8b, 0x8312: 0x002e228b, 0x8313: 0x002e2285,
+-	0x8314: 0x40082020, 0x8315: 0x002e9e8b, 0x8316: 0xe000308e, 0x8317: 0x40082220,
+-	0x8318: 0x40082420, 0x8319: 0x002f2c8b, 0x831a: 0x002f568b, 0x831b: 0x002f7a8b,
+-	0x831c: 0x002f7a8b, 0x831d: 0x002f7a8b, 0x831e: 0x40082620, 0x831f: 0x40082820,
+-	0x8320: 0xe00030bb, 0x8321: 0xe0000fbd, 0x8322: 0xe00030ca, 0x8323: 0x40082a20,
+-	0x8324: 0x00312a8b, 0x8325: 0x40082c20, 0x8326: 0x0032a288, 0x8327: 0x40082e20,
+-	0x8328: 0x00312a8b, 0x8329: 0x40083020, 0x832a: 0x402c0620, 0x832b: 0xe00029c6,
+-	0x832c: 0x002c0a8b, 0x832d: 0x002c3a8b, 0x832e: 0x40083220, 0x832f: 0x002c9885,
+-	0x8330: 0x002c988b, 0x8331: 0x002d088b, 0x8332: 0x002d1e88, 0x8333: 0x002e828b,
+-	0x8334: 0x002ee285, 0x8335: 0x00389084, 0x8336: 0x00389284, 0x8337: 0x00389484,
+-	0x8338: 0x00389684, 0x8339: 0x002d9a85, 0x833a: 0x40083420, 0x833b: 0xe0000b95,
+-	0x833c: 0x00327e85, 0x833d: 0x00325685, 0x833e: 0x0032568b, 0x833f: 0x00327e8b,
+-	// Block 0x20d, offset 0x8340
+-	0x8340: 0x00093685, 0x8341: 0x40083620, 0x8342: 0x40083820, 0x8343: 0x40083a20,
+-	0x8344: 0x40083c20, 0x8345: 0x002c628b, 0x8346: 0x002c6285, 0x8347: 0x002c9885,
+-	0x8348: 0x002d9a85, 0x8349: 0x002dcc85, 0x834a: 0x40083e20, 0x834b: 0x400a6e20,
+-	0x834c: 0x40084020, 0x834d: 0xe00009c4, 0x834e: 0x402d1e20, 0x834f: 0x40084220,
+-	0x8350: 0xe00002cb, 0x8351: 0xe00002d3, 0x8352: 0xe00002b2, 0x8353: 0xe00002bb,
+-	0x8354: 0xe00003cd, 0x8355: 0xe00002c3, 0x8356: 0xe00003d1, 0x8357: 0xe00004ab,
+-	0x8358: 0xe0000579, 0x8359: 0xe00002c7, 0x835a: 0xe0000640, 0x835b: 0xe00002cf,
+-	0x835c: 0xe00004af, 0x835d: 0xe0000644, 0x835e: 0xe0000798, 0x835f: 0xf0001e1e,
+-	0x8360: 0x002d9a8a, 0x8361: 0xe000256e, 0x8362: 0xe0002571, 0x8363: 0xe000257b,
+-	0x8364: 0x0030be8a, 0x8365: 0xe00025ab, 0x8366: 0xe00025ae, 0x8367: 0xe00010bb,
+-	0x8368: 0xe0002581, 0x8369: 0x0030f68a, 0x836a: 0xe00025b5, 0x836b: 0xe00025bc,
+-	0x836c: 0x002e228a, 0x836d: 0x002c3a8a, 0x836e: 0x002c628a, 0x836f: 0x002e828a,
+-	0x8370: 0x002d9a84, 0x8371: 0xe0003009, 0x8372: 0xe000300c, 0x8373: 0xe0003016,
+-	0x8374: 0x0030be84, 0x8375: 0xe00030cd, 0x8376: 0xe00030d0, 0x8377: 0xe00010b6,
+-	0x8378: 0xe000257e, 0x8379: 0x0030f684, 0x837a: 0xe00025b2, 0x837b: 0xe00025b8,
+-	0x837c: 0x002e2284, 0x837d: 0x002c3a84, 0x837e: 0x002c6284, 0x837f: 0x002e8284,
+-	// Block 0x20e, offset 0x8380
+-	0x8380: 0x400d1820, 0x8381: 0x400d1a20, 0x8382: 0x400d1c20, 0x8383: 0x400d1e20,
+-	0x8384: 0x400d2020, 0x8385: 0x400d2220, 0x8386: 0x400d2420, 0x8387: 0x400d2620,
+-	0x8388: 0x400d2820, 0x8389: 0x400d2a20, 0x838a: 0x400d2c20,
+-	0x83a0: 0x0029ce86, 0x83a1: 0x0029d086, 0x83a2: 0x0029d286, 0x83a3: 0x0029d486,
+-	0x83a4: 0x0029d686, 0x83a5: 0x0029d886, 0x83a6: 0x0029da86, 0x83a7: 0x0029dc86,
+-	0x83a8: 0x0029de86, 0x83a9: 0xf0000606, 0x83aa: 0xf0000606, 0x83ab: 0xf0000606,
+-	0x83ac: 0xf0000606, 0x83ad: 0xf0000606, 0x83ae: 0xf0000606, 0x83af: 0xf0000606,
+-	0x83b0: 0xe0002966, 0x83b1: 0xf0000606, 0x83b2: 0xf0000606, 0x83b3: 0xf0000606,
+-	0x83b4: 0xe00027b4, 0x83b5: 0xe00027b8, 0x83b6: 0xe00027bc, 0x83b7: 0xe00027c0,
+-	0x83b8: 0xe00027c4, 0x83b9: 0xe00027c8, 0x83ba: 0xe00027cc, 0x83bb: 0xe00027d0,
+-	0x83bc: 0xe00027d4, 0x83bd: 0xe0000015, 0x83be: 0xe000001a, 0x83bf: 0xe000001f,
+-	// Block 0x20f, offset 0x83c0
+-	0x83c0: 0xe0000024, 0x83c1: 0xe0000029, 0x83c2: 0xe000002e, 0x83c3: 0xe0000033,
+-	0x83c4: 0xe0000038, 0x83c5: 0xe000003d, 0x83c6: 0xe0000042, 0x83c7: 0xe0000047,
+-	0x83c8: 0xf0001f04, 0x83c9: 0xf0001f04, 0x83ca: 0xf0001f04, 0x83cb: 0xf0001f04,
+-	0x83cc: 0xf0001f04, 0x83cd: 0xf0001f04, 0x83ce: 0xe0002985, 0x83cf: 0xf0001f04,
+-	0x83d0: 0xf0001f04, 0x83d1: 0xf0000404, 0x83d2: 0xf0000404, 0x83d3: 0xf0000404,
+-	0x83d4: 0xf0000404, 0x83d5: 0xf0000404, 0x83d6: 0xf0000404, 0x83d7: 0xf0000404,
+-	0x83d8: 0xe0002969, 0x83d9: 0xf0000404, 0x83da: 0xf0000404, 0x83db: 0xf0000404,
+-	0x83dc: 0xe00027d8, 0x83dd: 0xe00027e0, 0x83de: 0xe00027e8, 0x83df: 0xe00027f0,
+-	0x83e0: 0xe00027f8, 0x83e1: 0xe0002800, 0x83e2: 0xe0002808, 0x83e3: 0xe0002810,
+-	0x83e4: 0xe0002818, 0x83e5: 0xe000281c, 0x83e6: 0xe0002824, 0x83e7: 0xe000282c,
+-	0x83e8: 0xe0002834, 0x83e9: 0xe000283c, 0x83ea: 0xe0002844, 0x83eb: 0xe000284c,
+-	0x83ec: 0xe000251b, 0x83ed: 0xe0002854, 0x83ee: 0xe000285c, 0x83ef: 0xe0002864,
+-	0x83f0: 0xe000286c, 0x83f1: 0xe0002874, 0x83f2: 0xe000287c, 0x83f3: 0xe0002523,
+-	0x83f4: 0xe0002884, 0x83f5: 0xe000288c, 0x83f6: 0x002bde8c, 0x83f7: 0x002c0a8c,
+-	0x83f8: 0x002c3a8c, 0x83f9: 0x002c628c, 0x83fa: 0x002c988c, 0x83fb: 0x002d088c,
+-	0x83fc: 0x002d228c, 0x83fd: 0x002d688c, 0x83fe: 0x002d9a8c, 0x83ff: 0x002dcc8c,
+-	// Block 0x210, offset 0x8400
+-	0x8400: 0xe0002894, 0x8401: 0xe0002898, 0x8402: 0xe000289c, 0x8403: 0xe00028a0,
+-	0x8404: 0xe00028a4, 0x8405: 0xe00028a8, 0x8406: 0xe00028ac, 0x8407: 0xe00028b0,
+-	0x8408: 0xe00028b4, 0x8409: 0xe00028b8, 0x840a: 0xe00028bc, 0x840b: 0xe00028c0,
+-	0x840c: 0xe00028c4, 0x840d: 0xe00028c8, 0x840e: 0xe000004c, 0x840f: 0xe0000051,
+-	0x8410: 0xe0000056, 0x8411: 0xe000005b, 0x8412: 0xe0000060, 0x8413: 0xe0000065,
+-	0x8414: 0xe000006a, 0x8415: 0xe000006f, 0x8416: 0xe0000083, 0x8417: 0xe000008d,
+-	0x8418: 0xe0000092, 0x8419: 0xe0000097, 0x841a: 0xe000009c, 0x841b: 0xe00000a1,
+-	0x841c: 0xe0000088, 0x841d: 0xe0000074, 0x841e: 0xe000007c,
+-	0x8420: 0xe00028cc, 0x8421: 0xe00028dc, 0x8422: 0xe00028d4, 0x8423: 0xe000290c,
+-	0x8424: 0xe00028e0, 0x8425: 0xe00028f4, 0x8426: 0xe00028d0, 0x8427: 0xe00028f0,
+-	0x8428: 0xe00028d8, 0x8429: 0xe00028fc, 0x842a: 0xe000291c, 0x842b: 0xe0002930,
+-	0x842c: 0xe000292c, 0x842d: 0xe0002924, 0x842e: 0xe0002958, 0x842f: 0xe0002910,
+-	0x8430: 0xe0002918, 0x8431: 0xe0002928, 0x8432: 0xe0002920, 0x8433: 0xe000293c,
+-	0x8434: 0xe0002904, 0x8435: 0xe0002934, 0x8436: 0xe0002950, 0x8437: 0xe0002940,
+-	0x8438: 0xe00028f8, 0x8439: 0xe00028e4, 0x843a: 0xe0002908, 0x843b: 0xe0002914,
+-	0x843c: 0xe0002938, 0x843d: 0xe00028e8, 0x843e: 0xe0002954, 0x843f: 0xe0002900,
+-	// Block 0x211, offset 0x8440
+-	0x8440: 0xe0002944, 0x8441: 0xe00028ec, 0x8442: 0xe0002948, 0x8443: 0xe000294c,
+-	0x8444: 0x02aa9e86, 0x8445: 0x02bcf886, 0x8446: 0x02cb0e86, 0x8447: 0x02f71e86,
+-	0x8448: 0xe00002e3, 0x8449: 0xe00003d8, 0x844a: 0xe00004b3, 0x844b: 0xe000057d,
+-	0x844c: 0xe0000648, 0x844d: 0xe00006f0, 0x844e: 0xe000079c, 0x844f: 0xe0000841,
+-	0x8450: 0xe0000ec0, 0x8451: 0xf0000606, 0x8452: 0xf0000606, 0x8453: 0xf0000606,
+-	0x8454: 0xf0000606, 0x8455: 0xf0000606, 0x8456: 0xf0000606, 0x8457: 0xe0002975,
+-	0x8458: 0xf0000606, 0x8459: 0xf0000606, 0x845a: 0xf0000606, 0x845b: 0xf0000606,
+-	0x845c: 0xf0000606, 0x845d: 0xf0000606, 0x845e: 0xf0000606, 0x845f: 0xf0000606,
+-	0x8460: 0x0062ac86, 0x8461: 0x0062b086, 0x8462: 0x0062b286, 0x8463: 0x0062b686,
+-	0x8464: 0x0062b886, 0x8465: 0x0062ba86, 0x8466: 0x0062be86, 0x8467: 0x0062c286,
+-	0x8468: 0x0062c486, 0x8469: 0x0062c886, 0x846a: 0x0062ca86, 0x846b: 0x0062cc86,
+-	0x846c: 0x0062ce86, 0x846d: 0x0062d086, 0x846e: 0xf0000606, 0x846f: 0xf0000606,
+-	0x8470: 0xf0000606, 0x8471: 0xf0000606, 0x8472: 0xf0000606, 0x8473: 0xf0000606,
+-	0x8474: 0xf0000606, 0x8475: 0xf0000606, 0x8476: 0xf0000606, 0x8477: 0xf0000606,
+-	0x8478: 0xf0000606, 0x8479: 0xf0000606, 0x847a: 0xf0000606, 0x847b: 0xf0000606,
+-	0x847c: 0xe0002127, 0x847d: 0xe0002122, 0x847e: 0xf0000606, 0x847f: 0x4027ac20,
+-	// Block 0x212, offset 0x8480
+-	0x8480: 0x029c0086, 0x8481: 0x029d1886, 0x8482: 0x029c1286, 0x8483: 0x02adb686,
+-	0x8484: 0x029d2886, 0x8485: 0x02a2da86, 0x8486: 0x029c0686, 0x8487: 0x02a2d686,
+-	0x8488: 0x029cba86, 0x8489: 0x02a68286, 0x848a: 0x02ce1086, 0x848b: 0x02e0d686,
+-	0x848c: 0x02d86886, 0x848d: 0x02ce5086, 0x848e: 0x0323a286, 0x848f: 0x02ae3e86,
+-	0x8490: 0x02cbca86, 0x8491: 0x02d05486, 0x8492: 0x02ce1286, 0x8493: 0x02f27c86,
+-	0x8494: 0x02a81a86, 0x8495: 0x02e4f286, 0x8496: 0x03194286, 0x8497: 0x02f2ba86,
+-	0x8498: 0x02a56886, 0x8499: 0x02f3b086, 0x849a: 0x02ea6e86, 0x849b: 0x02b2e686,
+-	0x849c: 0x0320d286, 0x849d: 0x02a25486, 0x849e: 0x02a6e086, 0x849f: 0x02d9d086,
+-	0x84a0: 0x03300a86, 0x84a1: 0x029e2286, 0x84a2: 0x02a33286, 0x84a3: 0x02d6c686,
+-	0x84a4: 0x029c1486, 0x84a5: 0x029c5a86, 0x84a6: 0x029c1686, 0x84a7: 0x02bbcc86,
+-	0x84a8: 0x02a7e686, 0x84a9: 0x02a67686, 0x84aa: 0x02b72e86, 0x84ab: 0x02b6cc86,
+-	0x84ac: 0x02edc686, 0x84ad: 0x029e0286, 0x84ae: 0x03198e86, 0x84af: 0x02a6a886,
+-	0x84b0: 0x02b23886, 0x84b1: 0xf0000606, 0x84b2: 0xe000297c, 0x84b3: 0xf0000606,
+-	0x84b4: 0xf0000606, 0x84b5: 0xf0000606, 0x84b6: 0xf0000606, 0x84b7: 0xf0000606,
+-	0x84b8: 0xf0000606, 0x84b9: 0xf0000606, 0x84ba: 0xf0000606, 0x84bb: 0xf0000606,
+-	0x84bc: 0xe000297f, 0x84bd: 0xf0000606, 0x84be: 0xf0000606, 0x84bf: 0xf0000606,
+-	// Block 0x213, offset 0x84c0
+-	0x84c0: 0xf0001f04, 0x84c1: 0xf0001f04, 0x84c2: 0xf0001f04, 0x84c3: 0xf0001f04,
+-	0x84c4: 0xf0001f04, 0x84c5: 0xf0001f04, 0x84c6: 0xe000298b, 0x84c7: 0xf0001f04,
+-	0x84c8: 0xf0001f04, 0x84c9: 0xf0000404, 0x84ca: 0xf0000404, 0x84cb: 0xf0000404,
+-	0x84cc: 0xe0002ffd, 0x84cd: 0xe0000b85, 0x84ce: 0xe0002fe5, 0x84cf: 0xe0000d14,
+-	0x84d0: 0x00657693, 0x84d1: 0x00657893, 0x84d2: 0x00657a93, 0x84d3: 0x00657e93,
+-	0x84d4: 0x00658093, 0x84d5: 0x00658293, 0x84d6: 0x00658493, 0x84d7: 0x00658693,
+-	0x84d8: 0x00658893, 0x84d9: 0x00658a93, 0x84da: 0x00658c93, 0x84db: 0x00658e93,
+-	0x84dc: 0x00659093, 0x84dd: 0x00659293, 0x84de: 0x00659493, 0x84df: 0x00659693,
+-	0x84e0: 0x00659893, 0x84e1: 0x00659a93, 0x84e2: 0x00659c93, 0x84e3: 0x00659e93,
+-	0x84e4: 0x0065a093, 0x84e5: 0x0065a293, 0x84e6: 0x0065a493, 0x84e7: 0x0065a693,
+-	0x84e8: 0x0065a893, 0x84e9: 0x0065aa93, 0x84ea: 0x0065ac93, 0x84eb: 0x0065ae93,
+-	0x84ec: 0x0065b093, 0x84ed: 0x0065b293, 0x84ee: 0x0065b493, 0x84ef: 0x0065b693,
+-	0x84f0: 0x0065b893, 0x84f1: 0x0065ba93, 0x84f2: 0x0065bc93, 0x84f3: 0x0065be93,
+-	0x84f4: 0x0065c093, 0x84f5: 0x0065c493, 0x84f6: 0x0065c693, 0x84f7: 0x0065c893,
+-	0x84f8: 0x0065ca93, 0x84f9: 0x0065cc93, 0x84fa: 0x0065ce93, 0x84fb: 0x0065d093,
+-	0x84fc: 0x0065d293, 0x84fd: 0x0065d493, 0x84fe: 0x0065d693,
+-	// Block 0x214, offset 0x8500
+-	0x8500: 0xe000230b, 0x8501: 0xe00022f8, 0x8502: 0xe00022fc, 0x8503: 0xe0002311,
+-	0x8504: 0xe0002316, 0x8505: 0xe000231d, 0x8506: 0xe0002321, 0x8507: 0xe0002325,
+-	0x8508: 0xe000232b, 0x8509: 0xf0001c1c, 0x850a: 0xe0002330, 0x850b: 0xe000233c,
+-	0x850c: 0xe0002340, 0x850d: 0xe0002337, 0x850e: 0xe0002346, 0x850f: 0xe000234b,
+-	0x8510: 0xe000234f, 0x8511: 0xe0002353, 0x8512: 0xf0001c1c, 0x8513: 0xe000235e,
+-	0x8514: 0xe0002358, 0x8515: 0xf0001c1c, 0x8516: 0xe0002363, 0x8517: 0xe000236d,
+-	0x8518: 0xf0001f04, 0x8519: 0xf0001f04, 0x851a: 0xf0001f04, 0x851b: 0xf0001f04,
+-	0x851c: 0xf0001f04, 0x851d: 0xf0001f04, 0x851e: 0xf0001f04, 0x851f: 0xe000298e,
+-	0x8520: 0xf0001f04, 0x8521: 0xf0001f04, 0x8522: 0xf0000404, 0x8523: 0xf0000404,
+-	0x8524: 0xf0000404, 0x8525: 0xf0000404, 0x8526: 0xf0000404, 0x8527: 0xf0000404,
+-	0x8528: 0xf0000404, 0x8529: 0xe0002971, 0x852a: 0xf0000404, 0x852b: 0xf0000404,
+-	0x852c: 0xf0000404, 0x852d: 0xf0000404, 0x852e: 0xf0000404, 0x852f: 0xf0000404,
+-	0x8530: 0xf0000404, 0x8531: 0xe0000c1e, 0x8532: 0xe0002fcd, 0x8533: 0xe0002991,
+-	0x8534: 0xe0000a31, 0x8535: 0xe000309a, 0x8536: 0xe00030a3, 0x8537: 0xe0002fd9,
+-	0x8538: 0xe0000ac2, 0x8539: 0xe0000ac6, 0x853a: 0xe0002578, 0x853b: 0xf0001c1c,
+-	0x853c: 0xf0001c1c, 0x853d: 0xf0001c1c, 0x853e: 0xf0001c1c, 0x853f: 0xe0002431,
+-	// Block 0x215, offset 0x8540
+-	0x8540: 0xe000309d, 0x8541: 0xe000307c, 0x8542: 0xe00030e0, 0x8543: 0xe000304f,
+-	0x8544: 0xe0003019, 0x8545: 0xe000301c, 0x8546: 0xe0003055, 0x8547: 0xe0002ff4,
+-	0x8548: 0xe0000a6b, 0x8549: 0xe0000cb4, 0x854a: 0xe00030a6, 0x854b: 0xe000307f,
+-	0x854c: 0xe00030e3, 0x854d: 0xe00030e6, 0x854e: 0xe000305e, 0x854f: 0xe000301f,
+-	0x8550: 0xe0003006, 0x8551: 0xe0000cb9, 0x8552: 0xe0000d36, 0x8553: 0xe0000be3,
+-	0x8554: 0xe0000fc5, 0x8555: 0xe00030e9, 0x8556: 0xe0003061, 0x8557: 0xe0002fd6,
+-	0x8558: 0xe0003025, 0x8559: 0xe0002ff1, 0x855a: 0xe000308b, 0x855b: 0xe00030ec,
+-	0x855c: 0xe0003064, 0x855d: 0xe0002e35, 0x855e: 0xe0003028, 0x855f: 0xe0000d3e,
+-	0x8560: 0xe0000a72, 0x8561: 0xe0003049, 0x8562: 0xe0000cbd, 0x8563: 0xe0000d42,
+-	0x8564: 0xe0000a76, 0x8565: 0xe000304c, 0x8566: 0xe0000cc1, 0x8567: 0xe0000d2d,
+-	0x8568: 0xe0000d31, 0x8569: 0xe00030a0, 0x856a: 0xe0000cc5, 0x856b: 0xe0000d4a,
+-	0x856c: 0xe0000be7, 0x856d: 0xe0000f0b, 0x856e: 0xe0000f0f, 0x856f: 0xe0000f15,
+-	0x8570: 0xe00030af, 0x8571: 0xe0003091, 0x8572: 0xe00030ef, 0x8573: 0xe0003067,
+-	0x8574: 0xe00030b2, 0x8575: 0xe0003094, 0x8576: 0xe00030f2, 0x8577: 0xe000306a,
+-	0x8578: 0xe0003031, 0x8579: 0xe000306d, 0x857a: 0xe00030b5, 0x857b: 0xe0003097,
+-	0x857c: 0xe00030f5, 0x857d: 0xe0003073, 0x857e: 0xe0003034, 0x857f: 0xe0003076,
+-	// Block 0x216, offset 0x8580
+-	0x8580: 0xe0003037, 0x8581: 0xe0003079, 0x8582: 0xe00009b7, 0x8583: 0xe000252b,
+-	0x8584: 0xe0002e2c, 0x8585: 0xe0002e32, 0x8586: 0xe0000a66, 0x8587: 0xe0000a7a,
+-	0x8588: 0xe0002fd0, 0x8589: 0xe0002ff7, 0x858a: 0xe0002ffa, 0x858b: 0xe0003000,
+-	0x858c: 0xe0003013, 0x858d: 0xe0003022, 0x858e: 0xe000302b, 0x858f: 0xe000302e,
+-	0x8590: 0xe0003043, 0x8591: 0xe0003046, 0x8592: 0xe0000d0d, 0x8593: 0xe0002584,
+-	0x8594: 0xe0003052, 0x8595: 0xe0000d3a, 0x8596: 0xe0000d46, 0x8597: 0xe00030a9,
+-	0x8598: 0xe0000eb0, 0x8599: 0xe0000eb8, 0x859a: 0xe00030ac, 0x859b: 0xe00030be,
+-	0x859c: 0xe00030c7, 0x859d: 0xe00030d4, 0x859e: 0xe00010b2, 0x859f: 0xe00009c8,
+-	0x85a0: 0xf0001f04, 0x85a1: 0xf0001f04, 0x85a2: 0xf0001f04, 0x85a3: 0xf0001f04,
+-	0x85a4: 0xf0001f04, 0x85a5: 0xf0001f04, 0x85a6: 0xe0002988, 0x85a7: 0xf0001f04,
+-	0x85a8: 0xf0001f04, 0x85a9: 0xf0000404, 0x85aa: 0xf0000404, 0x85ab: 0xf0000404,
+-	0x85ac: 0xf0000404, 0x85ad: 0xf0000404, 0x85ae: 0xf0000404, 0x85af: 0xf0000404,
+-	0x85b0: 0xe000296d, 0x85b1: 0xf0000404, 0x85b2: 0xf0000404, 0x85b3: 0xf0000404,
+-	0x85b4: 0xf0000404, 0x85b5: 0xf0000404, 0x85b6: 0xf0000404, 0x85b7: 0xf0000404,
+-	0x85b8: 0xf0000404, 0x85b9: 0xf0000404, 0x85ba: 0xe0002978, 0x85bb: 0xf0000404,
+-	0x85bc: 0xf0000404, 0x85bd: 0xf0000404, 0x85be: 0xf0000404, 0x85bf: 0xe0000bdf,
+-	// Block 0x217, offset 0x85c0
+-	0x85c0: 0xe0002fe8, 0x85c1: 0xe0002feb, 0x85c2: 0xe0002fee, 0x85c3: 0xe0000b99,
+-	0x85c4: 0xe0000b9d, 0x85c5: 0xe0000f83, 0x85c6: 0xe00030c4,
+-	0x85d3: 0xf0000404,
+-	0x85d4: 0xf0000404, 0x85d5: 0xf0000404, 0x85d6: 0xf0000404, 0x85d7: 0xf0000404,
+-	0x85dd: 0xe000150b, 0x85de: 0xa1a09602, 0x85df: 0xe0001514,
+-	0x85e0: 0x0038ae85, 0x85e1: 0x00389085, 0x85e2: 0x00389685, 0x85e3: 0x00389885,
+-	0x85e4: 0x0038a485, 0x85e5: 0x0038a685, 0x85e6: 0x0038a885, 0x85e7: 0x0038b685,
+-	0x85e8: 0x0038ba85, 0x85e9: 0x00093885, 0x85ea: 0xe0001542, 0x85eb: 0xe000153f,
+-	0x85ec: 0xe000154c, 0x85ed: 0xe0001548, 0x85ee: 0xe00014e1, 0x85ef: 0xe00014e4,
+-	0x85f0: 0xe00014e7, 0x85f1: 0xe00014ea, 0x85f2: 0xe00014f0, 0x85f3: 0xe00014f3,
+-	0x85f4: 0xe00014f6, 0x85f5: 0xe00014fc, 0x85f6: 0xe0001505,
+-	0x85f8: 0xe0001508, 0x85f9: 0xe000150e, 0x85fa: 0xe000151b, 0x85fb: 0xe0001518,
+-	0x85fc: 0xe0001521, 0x85fe: 0xe0001524,
+-	// Block 0x218, offset 0x8600
+-	0x8600: 0xf0001f04, 0x8601: 0xf0001f04, 0x8602: 0xf0001f04, 0x8603: 0xf0001f04,
+-	0x8604: 0xf0001f04, 0x8605: 0xf0001f04, 0x8606: 0xf0001f04, 0x8607: 0xf0001f04,
+-	0x8608: 0xe0002982, 0x8609: 0xf0001f04, 0x860a: 0xf0001f04,
+-	0x8610: 0xe00027dc, 0x8611: 0xe00027e4, 0x8612: 0xe00027ec, 0x8613: 0xe00027f4,
+-	0x8614: 0xe00027fc, 0x8615: 0xe0002804, 0x8616: 0xe000280c, 0x8617: 0xe0002814,
+-	0x8618: 0xe0002517, 0x8619: 0xe0002820, 0x861a: 0xe0002828, 0x861b: 0xe0002830,
+-	0x861c: 0xe0002838, 0x861d: 0xe0002840, 0x861e: 0xe0002848, 0x861f: 0xe0002850,
+-	0x8620: 0xe000251f, 0x8621: 0xe0002858, 0x8622: 0xe0002860, 0x8623: 0xe0002868,
+-	0x8624: 0xe0002870, 0x8625: 0xe0002878, 0x8626: 0xe0002880, 0x8627: 0xe0002527,
+-	0x8628: 0xe0002888, 0x8629: 0xe0002890, 0x862a: 0xe000295c, 0x862b: 0x002c3a8c,
+-	0x862c: 0x002f7a8c, 0x862d: 0xe0002e2f, 0x862e: 0xe00030da,
+-	0x8630: 0x002bde9d, 0x8631: 0x002c0a9d, 0x8632: 0x002c3a9d, 0x8633: 0x002c629d,
+-	0x8634: 0x002c989d, 0x8635: 0x002d089d, 0x8636: 0x002d229d, 0x8637: 0x002d689d,
+-	0x8638: 0x002d9a9d, 0x8639: 0x002dcc9d, 0x863a: 0x002dfe9d, 0x863b: 0x002e229d,
+-	0x863c: 0x002e829d, 0x863d: 0x002e9e9d, 0x863e: 0x002ee29d, 0x863f: 0x002f2c9d,
+-	// Block 0x219, offset 0x8640
+-	0x8640: 0x002f569d, 0x8641: 0x002f7a9d, 0x8642: 0x002fe69d, 0x8643: 0x00302c9d,
+-	0x8644: 0x00306c9d, 0x8645: 0x0030be9d, 0x8646: 0x0030e29d, 0x8647: 0x0030f69d,
+-	0x8648: 0x0031009d, 0x8649: 0x00312a9d, 0x864a: 0xe0003003, 0x864b: 0xe0003070,
+-	0x864c: 0xe00030b8, 0x864d: 0xe00030c1, 0x864e: 0xe0000ebc, 0x864f: 0xe00030d7,
+-	0x8650: 0x002bde8c, 0x8651: 0x002c0a8c, 0x8652: 0x002c3a8c, 0x8653: 0x002c628c,
+-	0x8654: 0x002c988c, 0x8655: 0x002d088c, 0x8656: 0x002d228c, 0x8657: 0x002d688c,
+-	0x8658: 0x002d9a8c, 0x8659: 0x002dcc8c, 0x865a: 0x002dfe8c, 0x865b: 0x002e228c,
+-	0x865c: 0x002e828c, 0x865d: 0x002e9e8c, 0x865e: 0x002ee28c, 0x865f: 0x002f2c8c,
+-	0x8660: 0x002f568c, 0x8661: 0x002f7a8c, 0x8662: 0x002fe68c, 0x8663: 0x00302c8c,
+-	0x8664: 0x00306c8c, 0x8665: 0x0030be8c, 0x8666: 0x0030e28c, 0x8667: 0x0030f68c,
+-	0x8668: 0x0031008c, 0x8669: 0x00312a8c, 0x866a: 0xe0003058, 0x866b: 0xe000305b,
+-	0x8670: 0x002bde9d, 0x8671: 0x002c0a9d, 0x8672: 0x002c3a9d, 0x8673: 0x002c629d,
+-	0x8674: 0x002c989d, 0x8675: 0x002d089d, 0x8676: 0x002d229d, 0x8677: 0x002d689d,
+-	0x8678: 0x002d9a9d, 0x8679: 0x002dcc9d, 0x867a: 0x002dfe9d, 0x867b: 0x002e229d,
+-	0x867c: 0x002e829d, 0x867d: 0x002e9e9d, 0x867e: 0x002ee29d, 0x867f: 0x002f2c9d,
+-	// Block 0x21a, offset 0x8680
+-	0x8680: 0x002f569d, 0x8681: 0x002f7a9d, 0x8682: 0x002fe69d, 0x8683: 0x00302c9d,
+-	0x8684: 0x00306c9d, 0x8685: 0x0030be9d, 0x8686: 0x0030e29d, 0x8687: 0x0030f69d,
+-	0x8688: 0x0031009d, 0x8689: 0x00312a9d, 0x868a: 0x002f2c9d, 0x868b: 0xe0000c81,
+-	0x868c: 0xe0000eb5, 0x868d: 0xe0000f74, 0x868e: 0xe00009d2, 0x868f: 0xe00010f0,
+-	0x8690: 0xe0002fd3, 0x8691: 0xe0000a6f, 0x8692: 0xe0000a7e, 0x8693: 0xe0000ba4,
+-	0x8694: 0xe0000c84, 0x8695: 0xe0000d8a, 0x8696: 0xe0000d8e, 0x8697: 0xe0000e9b,
+-	0x8698: 0xe0000f77, 0x8699: 0xe00010a2, 0x869a: 0xe00010c0,
+-	// Block 0x21b, offset 0x86c0
+-	0x86c0: 0xa0000000, 0x86c1: 0xa0000000, 0x86c2: 0xa0000000, 0x86c3: 0xa0000000,
+-	0x86c4: 0xa0000000, 0x86c5: 0xa0000000, 0x86c6: 0xa0000000, 0x86c7: 0xa0000000,
+-	0x86c8: 0xa0000000, 0x86c9: 0x40020020, 0x86ca: 0x40020220, 0x86cb: 0x40020420,
+-	0x86cc: 0x40020620, 0x86cd: 0x40020820, 0x86ce: 0xa0000000, 0x86cf: 0xa0000000,
+-	0x86d0: 0xa0000000, 0x86d1: 0xa0000000, 0x86d2: 0xa0000000, 0x86d3: 0xa0000000,
+-	0x86d4: 0xa0000000, 0x86d5: 0xa0000000, 0x86d6: 0xa0000000, 0x86d7: 0xa0000000,
+-	0x86d8: 0xa0000000, 0x86d9: 0xa0000000, 0x86da: 0xa0000000, 0x86db: 0xa0000000,
+-	0x86dc: 0xa0000000, 0x86dd: 0xa0000000, 0x86de: 0xa0000000, 0x86df: 0xa0000000,
+-	0x86e0: 0x40021220, 0x86e1: 0x4002ba20, 0x86e2: 0x4003e020, 0x86e3: 0x4004ea20,
+-	0x86e4: 0x4027de20, 0x86e5: 0x4004ec20, 0x86e6: 0x4004e620, 0x86e7: 0x4003d220,
+-	0x86e8: 0x4003f420, 0x86e9: 0x4003f620, 0x86ea: 0x4004d820, 0x86eb: 0x40093820,
+-	0x86ec: 0x40024020, 0x86ed: 0x40021a20, 0x86ee: 0x4002e420, 0x86ef: 0x4004e220,
+-	0x86f0: 0x4029cc20, 0x86f1: 0x4029ce20, 0x86f2: 0x4029d020, 0x86f3: 0x4029d220,
+-	0x86f4: 0x4029d420, 0x86f5: 0x4029d620, 0x86f6: 0x4029d820, 0x86f7: 0x4029da20,
+-	0x86f8: 0x4029dc20, 0x86f9: 0x4029de20, 0x86fa: 0x40026c20, 0x86fb: 0x40026220,
+-	0x86fc: 0x40094020, 0x86fd: 0x40094220, 0x86fe: 0x40094420, 0x86ff: 0x4002c420,
+-	// Block 0x21c, offset 0x8700
+-	0x8700: 0x4004d620, 0x8701: 0x002bde88, 0x8702: 0x002c0a88, 0x8703: 0xc3352741,
+-	0x8704: 0x002c6288, 0x8705: 0x002c9888, 0x8706: 0x002d0888, 0x8707: 0xc3392741,
+-	0x8708: 0xc5342741, 0x8709: 0x002d9a88, 0x870a: 0xc5382741, 0x870b: 0x002dfe88,
+-	0x870c: 0xc0030002, 0x870d: 0x002e8288, 0x870e: 0x002e9e88, 0x870f: 0x002ee288,
+-	0x8710: 0x002f2c88, 0x8711: 0x002f5688, 0x8712: 0x002f7a88, 0x8713: 0xc3432741,
+-	0x8714: 0x00302c88, 0x8715: 0xc34700d1, 0x8716: 0x0030be88, 0x8717: 0x0030e288,
+-	0x8718: 0x0030f688, 0x8719: 0x00310088, 0x871a: 0x00312a88, 0x871b: 0x4003f820,
+-	0x871c: 0x4004e420, 0x871d: 0x4003fa20, 0x871e: 0x40062420, 0x871f: 0x40021620,
+-	0x8720: 0x40061e20, 0x8721: 0x402bde20, 0x8722: 0x402c0a20, 0x8723: 0xc3332741,
+-	0x8724: 0x402c6220, 0x8725: 0x402c9820, 0x8726: 0x402d0820, 0x8727: 0xc3372741,
+-	0x8728: 0xc5322741, 0x8729: 0x402d9a20, 0x872a: 0xc5362741, 0x872b: 0x402dfe20,
+-	0x872c: 0xc0000002, 0x872d: 0x402e8220, 0x872e: 0x402e9e20, 0x872f: 0x402ee220,
+-	0x8730: 0x402f2c20, 0x8731: 0x402f5620, 0x8732: 0x402f7a20, 0x8733: 0xc3412741,
+-	0x8734: 0x40302c20, 0x8735: 0xc34500d1, 0x8736: 0x4030be20, 0x8737: 0x4030e220,
+-	0x8738: 0x4030f620, 0x8739: 0x40310020, 0x873a: 0x40312a20, 0x873b: 0x4003fc20,
+-	0x873c: 0x40094820, 0x873d: 0x4003fe20, 0x873e: 0x40094c20, 0x873f: 0xa0000000,
+-	// Block 0x21d, offset 0x8740
+-	0x8740: 0xe0000983, 0x8741: 0xe0000980, 0x8742: 0xe00008fb, 0x8743: 0xe00008f8,
+-	0x8744: 0xe000097d, 0x8745: 0xe000097a, 0x8746: 0xe0000a38, 0x8747: 0xe0000a35,
+-	0x8748: 0x002c3c83, 0x8749: 0x402c3c20, 0x874a: 0xe0000a4a, 0x874b: 0xe0000a47,
+-	0x874c: 0xe0000a44, 0x874d: 0xe0000a41, 0x874e: 0xe0000a86, 0x874f: 0xe0000a83,
+-	0x8750: 0xe0000aaa, 0x8751: 0xe0000aa7, 0x8752: 0xe0000b46, 0x8753: 0xe0000b43,
+-	0x8754: 0xe0000aee, 0x8755: 0xe0000aeb, 0x8756: 0xe0000b2c, 0x8757: 0xe0000b29,
+-	0x8758: 0xe0000b40, 0x8759: 0xe0000b3d, 0x875a: 0xe0000b1a, 0x875b: 0xe0000b17,
+-	0x875c: 0x002d2483, 0x875d: 0x402d2420, 0x875e: 0xe0000bb2, 0x875f: 0xe0000baf,
+-	0x8760: 0xe0000bc4, 0x8761: 0xe0000bc1, 0x8762: 0xe0000bca, 0x8763: 0xe0000bc7,
+-	0x8764: 0x002d6a83, 0x8765: 0x402d6a20, 0x8766: 0xe0000c1b, 0x8767: 0xe0000c18,
+-	0x8768: 0xe0000c51, 0x8769: 0xe0000c4e, 0x876a: 0xe0000c60, 0x876b: 0xe0000c5d,
+-	0x876c: 0xe0000c31, 0x876d: 0xe0000c2e, 0x876e: 0xe0000c5a, 0x876f: 0xe0000c57,
+-	0x8770: 0xe0000c54, 0x8771: 0x402da220, 0x8772: 0xf0000a0a, 0x8773: 0xf0000404,
+-	0x8774: 0x002dce83, 0x8775: 0x402dce20, 0x8776: 0xe0000c9f, 0x8777: 0xe0000c9c,
+-	0x8778: 0x402f7220, 0x8779: 0xe0000ccc, 0x877a: 0xe0000cc9, 0x877b: 0xe0000cd8,
+-	0x877c: 0xe0000cd5, 0x877d: 0xe0000cd2, 0x877e: 0xe0000ccf, 0x877f: 0xe0000d04,
+-	// Block 0x21e, offset 0x8780
+-	0x8780: 0xe0000cfe, 0x8781: 0xe0000cf8, 0x8782: 0xe0000cf5, 0x8783: 0xe0000d51,
+-	0x8784: 0xe0000d4e, 0x8785: 0xe0000d6f, 0x8786: 0xe0000d6c, 0x8787: 0xe0000d5d,
+-	0x8788: 0xe0000d5a, 0x8789: 0xf0000404, 0x878a: 0x002eda88, 0x878b: 0x402eda20,
+-	0x878c: 0xe0000e2e, 0x878d: 0xe0000e2b, 0x878e: 0xe0000da0, 0x878f: 0xe0000d9d,
+-	0x8790: 0xe0000de0, 0x8791: 0xe0000ddd, 0x8792: 0xe0000e93, 0x8793: 0xe0000e8f,
+-	0x8794: 0xe0000eca, 0x8795: 0xe0000ec7, 0x8796: 0xe0000edc, 0x8797: 0xe0000ed9,
+-	0x8798: 0xe0000ed0, 0x8799: 0xe0000ecd, 0x879a: 0xe0000f1f, 0x879b: 0xe0000f1c,
+-	0x879c: 0x002fe883, 0x879d: 0x402fe820, 0x879e: 0xe0000f47, 0x879f: 0xe0000f44,
+-	0x87a0: 0xe0000f33, 0x87a1: 0xe0000f30, 0x87a2: 0xe0000f99, 0x87a3: 0xe0000f96,
+-	0x87a4: 0xe0000f8a, 0x87a5: 0xe0000f87, 0x87a6: 0x00303688, 0x87a7: 0x40303620,
+-	0x87a8: 0xe000102b, 0x87a9: 0xe0001028, 0x87aa: 0xe000103f, 0x87ab: 0xe000103c,
+-	0x87ac: 0x00306e83, 0x87ad: 0x40306e20, 0x87ae: 0xe0000ff9, 0x87af: 0xe0000ff6,
+-	0x87b0: 0xe0001025, 0x87b1: 0xe0001022, 0x87b2: 0xe0001039, 0x87b3: 0xe0001036,
+-	0x87b4: 0xe00010d8, 0x87b5: 0xe00010d5, 0x87b6: 0xe000110e, 0x87b7: 0xe000110b,
+-	0x87b8: 0xe0001117, 0x87b9: 0xe000113b, 0x87ba: 0xe0001138, 0x87bb: 0xe000114d,
+-	0x87bc: 0xe000114a, 0x87bd: 0xe0001147, 0x87be: 0xe0001144, 0x87bf: 0xe0000f64,
+-	// Block 0x21f, offset 0x87c0
+-	0x87c0: 0xa0000000, 0x87c1: 0xa0000000, 0x87c2: 0xa0000000, 0x87c3: 0xa0000000,
+-	0x87c4: 0xa0000000, 0x87c5: 0xa0000000, 0x87c6: 0xa0000000, 0x87c7: 0xa0000000,
+-	0x87c8: 0xa0000000, 0x87c9: 0x40020020, 0x87ca: 0x40020220, 0x87cb: 0x40020420,
+-	0x87cc: 0x40020620, 0x87cd: 0x40020820, 0x87ce: 0xa0000000, 0x87cf: 0xa0000000,
+-	0x87d0: 0xa0000000, 0x87d1: 0xa0000000, 0x87d2: 0xa0000000, 0x87d3: 0xa0000000,
+-	0x87d4: 0xa0000000, 0x87d5: 0xa0000000, 0x87d6: 0xa0000000, 0x87d7: 0xa0000000,
+-	0x87d8: 0xa0000000, 0x87d9: 0xa0000000, 0x87da: 0xa0000000, 0x87db: 0xa0000000,
+-	0x87dc: 0xa0000000, 0x87dd: 0xa0000000, 0x87de: 0xa0000000, 0x87df: 0xa0000000,
+-	0x87e0: 0x40021220, 0x87e1: 0x4002ba20, 0x87e2: 0x4003e020, 0x87e3: 0x4004ea20,
+-	0x87e4: 0x4027de20, 0x87e5: 0x4004ec20, 0x87e6: 0x4004e620, 0x87e7: 0x4003d220,
+-	0x87e8: 0x4003f420, 0x87e9: 0x4003f620, 0x87ea: 0x4004d820, 0x87eb: 0x40093820,
+-	0x87ec: 0x40024020, 0x87ed: 0x40021a20, 0x87ee: 0x4002e420, 0x87ef: 0x4004e220,
+-	0x87f0: 0x4029cc20, 0x87f1: 0x4029ce20, 0x87f2: 0x4029d020, 0x87f3: 0x4029d220,
+-	0x87f4: 0x4029d420, 0x87f5: 0x4029d620, 0x87f6: 0x4029d820, 0x87f7: 0x4029da20,
+-	0x87f8: 0x4029dc20, 0x87f9: 0x4029de20, 0x87fa: 0x40026c20, 0x87fb: 0x40026220,
+-	0x87fc: 0x40094020, 0x87fd: 0x40094220, 0x87fe: 0x40094420, 0x87ff: 0x4002c420,
+-	// Block 0x220, offset 0x8800
+-	0x8800: 0x4004d620, 0x8801: 0x002bde88, 0x8802: 0x002c0a88, 0x8803: 0x002c3a88,
+-	0x8804: 0x002c6288, 0x8805: 0x002c9888, 0x8806: 0x002d0888, 0x8807: 0x002d2288,
+-	0x8808: 0x002d6888, 0x8809: 0x002d9a88, 0x880a: 0x002dcc88, 0x880b: 0x002dfe88,
+-	0x880c: 0xc0030002, 0x880d: 0x002e8288, 0x880e: 0xc53a2761, 0x880f: 0x002ee288,
+-	0x8810: 0x002f2c88, 0x8811: 0x002f5688, 0x8812: 0x002f7a88, 0x8813: 0x002fe688,
+-	0x8814: 0x00302c88, 0x8815: 0x00306c88, 0x8816: 0x0030be88, 0x8817: 0x0030e288,
+-	0x8818: 0x0030f688, 0x8819: 0x00310088, 0x881a: 0x00312a88, 0x881b: 0x4003f820,
+-	0x881c: 0x4004e420, 0x881d: 0x4003fa20, 0x881e: 0x40062420, 0x881f: 0x40021620,
+-	0x8820: 0x40061e20, 0x8821: 0x402bde20, 0x8822: 0x402c0a20, 0x8823: 0x402c3a20,
+-	0x8824: 0x402c6220, 0x8825: 0x402c9820, 0x8826: 0x402d0820, 0x8827: 0x402d2220,
+-	0x8828: 0x402d6820, 0x8829: 0x402d9a20, 0x882a: 0x402dcc20, 0x882b: 0x402dfe20,
+-	0x882c: 0xc0000002, 0x882d: 0x402e8220, 0x882e: 0xc5272761, 0x882f: 0x402ee220,
+-	0x8830: 0x402f2c20, 0x8831: 0x402f5620, 0x8832: 0x402f7a20, 0x8833: 0x402fe620,
+-	0x8834: 0x40302c20, 0x8835: 0x40306c20, 0x8836: 0x4030be20, 0x8837: 0x4030e220,
+-	0x8838: 0x4030f620, 0x8839: 0x40310020, 0x883a: 0x40312a20, 0x883b: 0x4003fc20,
+-	0x883c: 0x40094820, 0x883d: 0x4003fe20, 0x883e: 0x40094c20, 0x883f: 0xa0000000,
+-	// Block 0x221, offset 0x8840
+-	0x8840: 0xe00008f5, 0x8841: 0xe00008ef, 0x8842: 0xe0000921, 0x8843: 0xe0000969,
+-	0x8844: 0xe000095b, 0x8845: 0xe000094d, 0x8846: 0xe00009dd, 0x8847: 0xe0000a53,
+-	0x8848: 0xe0000ae8, 0x8849: 0xe0000ae2, 0x884a: 0xe0000af4, 0x884b: 0xe0000b20,
+-	0x884c: 0xe0000c2b, 0x884d: 0xe0000c25, 0x884e: 0xe0000c37, 0x884f: 0xe0000c43,
+-	0x8850: 0xe0000ab3, 0x8851: 0x002ea083, 0x8852: 0xe0000d9a, 0x8853: 0xe0000d94,
+-	0x8854: 0xe0000da6, 0x8855: 0xe0000de6, 0x8856: 0xe0000dd2, 0x8857: 0x40093e20,
+-	0x8858: 0xe0000e12, 0x8859: 0xe0000fe1, 0x885a: 0xe0000fdb, 0x885b: 0xe0000fed,
+-	0x885c: 0xe0000fff, 0x885d: 0xe0001102, 0x885e: 0x00318888, 0x885f: 0xe0000f7b,
+-	0x8860: 0xe00008f2, 0x8861: 0xe00008ec, 0x8862: 0xe000091e, 0x8863: 0xe0000966,
+-	0x8864: 0xe0000958, 0x8865: 0xe000094a, 0x8866: 0xe00009d5, 0x8867: 0xe0000a4d,
+-	0x8868: 0xe0000ae5, 0x8869: 0xe0000adf, 0x886a: 0xe0000af1, 0x886b: 0xe0000b1d,
+-	0x886c: 0xe0000c28, 0x886d: 0xe0000c22, 0x886e: 0xe0000c34, 0x886f: 0xe0000c40,
+-	0x8870: 0xe0000aad, 0x8871: 0x402ea020, 0x8872: 0xe0000d97, 0x8873: 0xe0000d91,
+-	0x8874: 0xe0000da3, 0x8875: 0xe0000de3, 0x8876: 0xe0000dcf, 0x8877: 0x40093c20,
+-	0x8878: 0xe0000e0f, 0x8879: 0xe0000fde, 0x887a: 0xe0000fd8, 0x887b: 0xe0000fea,
+-	0x887c: 0xe0000ffc, 0x887d: 0xe00010ff, 0x887e: 0x40318820, 0x887f: 0xe0001114,
+-	// Block 0x222, offset 0x8880
+-	0x8880: 0xa0000000, 0x8881: 0xa0000000, 0x8882: 0xa0000000, 0x8883: 0xa0000000,
+-	0x8884: 0xa0000000, 0x8885: 0xa0000000, 0x8886: 0xa0000000, 0x8887: 0xa0000000,
+-	0x8888: 0xa0000000, 0x8889: 0x40020020, 0x888a: 0x40020220, 0x888b: 0x40020420,
+-	0x888c: 0x40020620, 0x888d: 0x40020820, 0x888e: 0xa0000000, 0x888f: 0xa0000000,
+-	0x8890: 0xa0000000, 0x8891: 0xa0000000, 0x8892: 0xa0000000, 0x8893: 0xa0000000,
+-	0x8894: 0xa0000000, 0x8895: 0xa0000000, 0x8896: 0xa0000000, 0x8897: 0xa0000000,
+-	0x8898: 0xa0000000, 0x8899: 0xa0000000, 0x889a: 0xa0000000, 0x889b: 0xa0000000,
+-	0x889c: 0xa0000000, 0x889d: 0xa0000000, 0x889e: 0xa0000000, 0x889f: 0xa0000000,
+-	0x88a0: 0x40021220, 0x88a1: 0x4002ba20, 0x88a2: 0x4003e020, 0x88a3: 0x4004ea20,
+-	0x88a4: 0x4027de20, 0x88a5: 0x4004ec20, 0x88a6: 0x4004e620, 0x88a7: 0x4003d220,
+-	0x88a8: 0x4003f420, 0x88a9: 0x4003f620, 0x88aa: 0x4004d820, 0x88ab: 0x40093820,
+-	0x88ac: 0x40024020, 0x88ad: 0x40021a20, 0x88ae: 0x4002e420, 0x88af: 0x4004e220,
+-	0x88b0: 0x4029cc20, 0x88b1: 0x4029ce20, 0x88b2: 0x4029d020, 0x88b3: 0x4029d220,
+-	0x88b4: 0x4029d420, 0x88b5: 0x4029d620, 0x88b6: 0x4029d820, 0x88b7: 0x4029da20,
+-	0x88b8: 0x4029dc20, 0x88b9: 0x4029de20, 0x88ba: 0x40026c20, 0x88bb: 0x40026220,
+-	0x88bc: 0x40094020, 0x88bd: 0x40094220, 0x88be: 0x40094420, 0x88bf: 0x4002c420,
+-	// Block 0x223, offset 0x88c0
+-	0x88c0: 0x4004d620, 0x88c1: 0xc54c0071, 0x88c2: 0x002c0a88, 0x88c3: 0x002c3a88,
+-	0x88c4: 0x002c6288, 0x88c5: 0x002c9888, 0x88c6: 0x002d0888, 0x88c7: 0x002d2288,
+-	0x88c8: 0x002d6888, 0x88c9: 0x002d9a88, 0x88ca: 0x002dcc88, 0x88cb: 0x002dfe88,
+-	0x88cc: 0xc0030002, 0x88cd: 0x002e8288, 0x88ce: 0x002e9e88, 0x88cf: 0xc5472781,
+-	0x88d0: 0x002f2c88, 0x88d1: 0x002f5688, 0x88d2: 0x002f7a88, 0x88d3: 0xc53e0991,
+-	0x88d4: 0x00302c88, 0x88d5: 0xc5500071, 0x88d6: 0x0030be88, 0x88d7: 0x0030bea3,
+-	0x88d8: 0x0030f688, 0x88d9: 0x00310088, 0x88da: 0xc5420991, 0x88db: 0x4003f820,
+-	0x88dc: 0x4004e420, 0x88dd: 0x4003fa20, 0x88de: 0x40062420, 0x88df: 0x40021620,
+-	0x88e0: 0x40061e20, 0x88e1: 0xc54a0071, 0x88e2: 0x402c0a20, 0x88e3: 0x402c3a20,
+-	0x88e4: 0x402c6220, 0x88e5: 0x402c9820, 0x88e6: 0x402d0820, 0x88e7: 0x402d2220,
+-	0x88e8: 0x402d6820, 0x88e9: 0x402d9a20, 0x88ea: 0x402dcc20, 0x88eb: 0x402dfe20,
+-	0x88ec: 0xc0000002, 0x88ed: 0x402e8220, 0x88ee: 0x402e9e20, 0x88ef: 0xc5442781,
+-	0x88f0: 0x402f2c20, 0x88f1: 0x402f5620, 0x88f2: 0x402f7a20, 0x88f3: 0xc53c0991,
+-	0x88f4: 0x40302c20, 0x88f5: 0xc54e0071, 0x88f6: 0x4030be20, 0x88f7: 0x4030be21,
+-	0x88f8: 0x4030f620, 0x88f9: 0x40310020, 0x88fa: 0xc5400991, 0x88fb: 0x4003fc20,
+-	0x88fc: 0x40094820, 0x88fd: 0x4003fe20, 0x88fe: 0x40094c20, 0x88ff: 0xa0000000,
+-	// Block 0x224, offset 0x8900
+-	0x8900: 0xe00008f5, 0x8901: 0xe00008ef, 0x8902: 0xe0000921, 0x8903: 0xe0000969,
+-	0x8904: 0x0030f083, 0x8905: 0xe000094d, 0x8906: 0xe00009dd, 0x8907: 0xe0000a53,
+-	0x8908: 0xe0000ae8, 0x8909: 0xe0000ae2, 0x890a: 0xe0000af4, 0x890b: 0xe0000b20,
+-	0x890c: 0xe0000c2b, 0x890d: 0xe0000c25, 0x890e: 0xe0000c37, 0x890f: 0xe0000c43,
+-	0x8910: 0xe0000ab3, 0x8911: 0xe0000d63, 0x8912: 0xe0000d9a, 0x8913: 0xe0000d94,
+-	0x8914: 0xe0000da6, 0x8915: 0x0030ee83, 0x8916: 0x0030f283, 0x8917: 0x40093e20,
+-	0x8918: 0xe0000e12, 0x8919: 0xe0000fe1, 0x891a: 0xe0000fdb, 0x891b: 0xe0000fed,
+-	0x891c: 0x0030f483, 0x891d: 0xe0001102, 0x891e: 0x00318888, 0x891f: 0xe0000f7b,
+-	0x8920: 0xe00008f2, 0x8921: 0xe00008ec, 0x8922: 0xe000091e, 0x8923: 0xe0000966,
+-	0x8924: 0x4030f020, 0x8925: 0xe000094a, 0x8926: 0xe00009d5, 0x8927: 0xe0000a4d,
+-	0x8928: 0xe0000ae5, 0x8929: 0xe0000adf, 0x892a: 0xe0000af1, 0x892b: 0xe0000b1d,
+-	0x892c: 0xe0000c28, 0x892d: 0xe0000c22, 0x892e: 0xe0000c34, 0x892f: 0xe0000c40,
+-	0x8930: 0xe0000aad, 0x8931: 0xe0000d60, 0x8932: 0xe0000d97, 0x8933: 0xe0000d91,
+-	0x8934: 0xe0000da3, 0x8935: 0x4030ee20, 0x8936: 0x4030f220, 0x8937: 0x40093c20,
+-	0x8938: 0xe0000e0f, 0x8939: 0xe0000fde, 0x893a: 0xe0000fd8, 0x893b: 0xe0000fea,
+-	0x893c: 0x4030f420, 0x893d: 0xe00010ff, 0x893e: 0x40318820, 0x893f: 0xe0001114,
+-	// Block 0x225, offset 0x8940
+-	0x8940: 0xe0000cfe, 0x8941: 0xe0000cf8, 0x8942: 0xe0000cf5, 0x8943: 0xe0000d51,
+-	0x8944: 0xe0000d4e, 0x8945: 0xe0000d6f, 0x8946: 0xe0000d6c, 0x8947: 0xe0000d5d,
+-	0x8948: 0xe0000d5a, 0x8949: 0xf0000404, 0x894a: 0x002eda88, 0x894b: 0x402eda20,
+-	0x894c: 0xe0000e2e, 0x894d: 0xe0000e2b, 0x894e: 0xe0000da0, 0x894f: 0xe0000d9d,
+-	0x8950: 0xe0000de0, 0x8951: 0xe0000ddd, 0x8952: 0xe0000e93, 0x8953: 0xe0000e8f,
+-	0x8954: 0xe0000eca, 0x8955: 0xe0000ec7, 0x8956: 0xe0000edc, 0x8957: 0xe0000ed9,
+-	0x8958: 0xe0000ed0, 0x8959: 0xe0000ecd, 0x895a: 0xe0000f1f, 0x895b: 0xe0000f1c,
+-	0x895c: 0xe0000f2d, 0x895d: 0xe0000f2a, 0x895e: 0xe0000f47, 0x895f: 0xe0000f44,
+-	0x8960: 0x00302683, 0x8961: 0x40302620, 0x8962: 0xe0000f99, 0x8963: 0xe0000f96,
+-	0x8964: 0xe0000f8a, 0x8965: 0xe0000f87, 0x8966: 0x00303688, 0x8967: 0x40303620,
+-	0x8968: 0xe000102b, 0x8969: 0xe0001028, 0x896a: 0xe000103f, 0x896b: 0xe000103c,
+-	0x896c: 0xe0000fe7, 0x896d: 0xe0000fe4, 0x896e: 0xe0000ff9, 0x896f: 0xe0000ff6,
+-	0x8970: 0xe0001025, 0x8971: 0xe0001022, 0x8972: 0xe0001039, 0x8973: 0xe0001036,
+-	0x8974: 0xe000312b, 0x8975: 0xe0003128, 0x8976: 0xe000110e, 0x8977: 0xe000110b,
+-	0x8978: 0xe0001117, 0x8979: 0xe0003101, 0x897a: 0xe00030fe, 0x897b: 0xe000310d,
+-	0x897c: 0xe000310a, 0x897d: 0x00302a83, 0x897e: 0x40302a20, 0x897f: 0xe0000f64,
+-	// Block 0x226, offset 0x8980
+-	0x8980: 0x40321220, 0x8981: 0x40321a20, 0x8982: 0x40322220, 0x8983: 0x40322a20,
+-	0x8984: 0xe0000ad5, 0x8985: 0xe0000ad1, 0x8986: 0xe0000acd, 0x8987: 0xf0000a0a,
+-	0x8988: 0xf000040a, 0x8989: 0xf0000404, 0x898a: 0xf0000a0a, 0x898b: 0xf000040a,
+-	0x898c: 0xf0000404, 0x898d: 0xe0000947, 0x898e: 0xe0000944, 0x898f: 0xe0000c3d,
+-	0x8990: 0xe0000c3a, 0x8991: 0xe0000dcc, 0x8992: 0xe0000dc9, 0x8993: 0xe0000ff3,
+-	0x8994: 0xe0000ff0, 0x8995: 0xe0003182, 0x8996: 0xe000317f, 0x8997: 0xe0003170,
+-	0x8998: 0xe000316d, 0x8999: 0xe000317c, 0x899a: 0xe0003179, 0x899b: 0xe0003176,
+-	0x899c: 0xe0003173, 0x899d: 0x402cae20, 0x899e: 0xe0003164, 0x899f: 0xe0003161,
+-	0x89a0: 0xe0000976, 0x89a1: 0xe0000972, 0x89a2: 0xe00009f4, 0x89a3: 0xe00009ef,
+-	0x89a4: 0x002d3a88, 0x89a5: 0x402d3a20, 0x89a6: 0xe0000bbe, 0x89a7: 0xe0000bbb,
+-	0x89a8: 0xe0000c99, 0x89a9: 0xe0000c96, 0x89aa: 0xe0000e20, 0x89ab: 0xe0000e1d,
+-	0x89ac: 0xe0000e27, 0x89ad: 0xe0000e23, 0x89ae: 0xe0001162, 0x89af: 0xe000115f,
+-	0x89b0: 0xe0000c8d, 0x89b1: 0xe0002fe2, 0x89b2: 0xe0002fdf, 0x89b3: 0xe0002fdc,
+-	0x89b4: 0xe0000bac, 0x89b5: 0xe0000ba9, 0x89b6: 0x002d7888, 0x89b7: 0x00319488,
+-	0x89b8: 0xe0000d57, 0x89b9: 0xe0000d54, 0x89ba: 0xe0000954, 0x89bb: 0xe0000950,
+-	0x89bc: 0xe00009ea, 0x89bd: 0xe00009e5, 0x89be: 0xe0000e19, 0x89bf: 0xe0000e15,
+-	// Block 0x227, offset 0x89c0
+-	0x89c0: 0xe000098f, 0x89c1: 0xe000098c, 0x89c2: 0xe0000995, 0x89c3: 0xe0000992,
+-	0x89c4: 0xe0000b62, 0x89c5: 0xe0000b5f, 0x89c6: 0xe0000b68, 0x89c7: 0xe0000b65,
+-	0x89c8: 0xe0000c6c, 0x89c9: 0xe0000c69, 0x89ca: 0xe0000c72, 0x89cb: 0xe0000c6f,
+-	0x89cc: 0xe0000e4a, 0x89cd: 0xe0000e47, 0x89ce: 0xe0000e50, 0x89cf: 0xe0000e4d,
+-	0x89d0: 0xe0000ee8, 0x89d1: 0xe0000ee5, 0x89d2: 0xe0000eee, 0x89d3: 0xe0000eeb,
+-	0x89d4: 0xe0001053, 0x89d5: 0xe0001050, 0x89d6: 0xe0001059, 0x89d7: 0xe0001056,
+-	0x89d8: 0xe0000f61, 0x89d9: 0xe0000f5e, 0x89da: 0xe0000fa5, 0x89db: 0xe0000fa2,
+-	0x89dc: 0x00312288, 0x89dd: 0x40312220, 0x89de: 0xe0000bf4, 0x89df: 0xe0000bf1,
+-	0x89e0: 0x002ebc88, 0x89e1: 0x402c8c20, 0x89e2: 0x002f2288, 0x89e3: 0x402f2220,
+-	0x89e4: 0x00314088, 0x89e5: 0x40314020, 0x89e6: 0xe000096f, 0x89e7: 0xe000096c,
+-	0x89e8: 0xe0000b32, 0x89e9: 0xe0000b2f, 0x89ea: 0xe000316a, 0x89eb: 0xe0003167,
+-	0x89ec: 0xe0003158, 0x89ed: 0xe0003155, 0x89ee: 0xe0000e04, 0x89ef: 0xe0000e01,
+-	0x89f0: 0xe0000e0b, 0x89f1: 0xe0000e07, 0x89f2: 0xe0001129, 0x89f3: 0xe0001126,
+-	0x89f4: 0x402e5e20, 0x89f5: 0x402ed020, 0x89f6: 0x40305a20, 0x89f7: 0x402dd420,
+-	0x89f8: 0xe0000abf, 0x89f9: 0xe0000ec4, 0x89fa: 0x002be888, 0x89fb: 0x002c4488,
+-	0x89fc: 0x402c4420, 0x89fd: 0x002e3888, 0x89fe: 0x00303e88, 0x89ff: 0x402ffc20,
+-	// Block 0x228, offset 0x8a00
+-	0x8a00: 0xe0000d24, 0x8a01: 0xe0000d21, 0x8a02: 0xe0000d2a, 0x8a03: 0xe0000d27,
+-	0x8a04: 0xe0000d69, 0x8a05: 0xe0000d66, 0x8a06: 0xe0000d7b, 0x8a07: 0xe0000d78,
+-	0x8a08: 0xe0000d87, 0x8a09: 0xe0000d84, 0x8a0a: 0xe0000d81, 0x8a0b: 0xe0000d7e,
+-	0x8a0c: 0xe0003146, 0x8a0d: 0xe0003143, 0x8a0e: 0xe0003152, 0x8a0f: 0xe000314f,
+-	0x8a10: 0xe0000e3d, 0x8a11: 0xe0000e39, 0x8a12: 0xe0000e35, 0x8a13: 0xe0000e31,
+-	0x8a14: 0xe0000ea7, 0x8a15: 0xe0000ea4, 0x8a16: 0xe0000ead, 0x8a17: 0xe0000eaa,
+-	0x8a18: 0xe0000ed6, 0x8a19: 0xe0000ed3, 0x8a1a: 0xe0000ef4, 0x8a1b: 0xe0000ef1,
+-	0x8a1c: 0xe0000efb, 0x8a1d: 0xe0000ef7, 0x8a1e: 0xe0000f02, 0x8a1f: 0xe0000eff,
+-	0x8a20: 0xe0000f41, 0x8a21: 0xe0000f3e, 0x8a22: 0xe0000f53, 0x8a23: 0xe0000f50,
+-	0x8a24: 0xe0000f26, 0x8a25: 0xe0000f22, 0x8a26: 0xe00030fb, 0x8a27: 0xe00030f8,
+-	0x8a28: 0xe0000f5a, 0x8a29: 0xe0000f56, 0x8a2a: 0xe0000f93, 0x8a2b: 0xe0000f90,
+-	0x8a2c: 0xe0000f9f, 0x8a2d: 0xe0000f9c, 0x8a2e: 0xe0000fb1, 0x8a2f: 0xe0000fae,
+-	0x8a30: 0xe0000fab, 0x8a31: 0xe0000fa8, 0x8a32: 0xe0001093, 0x8a33: 0xe0001090,
+-	0x8a34: 0xe000109f, 0x8a35: 0xe000109c, 0x8a36: 0xe0001099, 0x8a37: 0xe0001096,
+-	0x8a38: 0xe0001032, 0x8a39: 0xe000102e, 0x8a3a: 0xe0003182, 0x8a3b: 0xe000317f,
+-	0x8a3c: 0xe00010a9, 0x8a3d: 0xe00010a6, 0x8a3e: 0xe00010af, 0x8a3f: 0xe00010ac,
+-	// Block 0x229, offset 0x8a40
+-	0x8a40: 0xe0003125, 0x8a41: 0xe0003122, 0x8a42: 0xe000311f, 0x8a43: 0xe000311c,
+-	0x8a44: 0xe0003134, 0x8a45: 0xe0003131, 0x8a46: 0xe000313a, 0x8a47: 0xe0003137,
+-	0x8a48: 0xe0003140, 0x8a49: 0xe000313d, 0x8a4a: 0xe00010fc, 0x8a4b: 0xe00010f9,
+-	0x8a4c: 0xe00010f6, 0x8a4d: 0xe00010f3, 0x8a4e: 0xe0001123, 0x8a4f: 0xe0001120,
+-	0x8a50: 0xe0003107, 0x8a51: 0xe0003104, 0x8a52: 0xe0003113, 0x8a53: 0xe0003110,
+-	0x8a54: 0xe0003119, 0x8a55: 0xe0003116, 0x8a56: 0xe0000c15, 0x8a57: 0xe0000f8d,
+-	0x8a58: 0xe000312e, 0x8a59: 0xe0001111, 0x8a5a: 0xf0000404, 0x8a5b: 0xe0000f70,
+-	0x8a5c: 0x40300420, 0x8a5d: 0x40300620, 0x8a5e: 0xe0000f7f, 0x8a5f: 0x402c9620,
+-	0x8a60: 0xe000099b, 0x8a61: 0xe0000998, 0x8a62: 0xe0000989, 0x8a63: 0xe0000986,
+-	0x8a64: 0xe0000928, 0x8a65: 0xe0000924, 0x8a66: 0xe0000930, 0x8a67: 0xe000092c,
+-	0x8a68: 0xe0000940, 0x8a69: 0xe000093c, 0x8a6a: 0xe0000938, 0x8a6b: 0xe0000934,
+-	0x8a6c: 0xe00009aa, 0x8a6d: 0xe00009a6, 0x8a6e: 0xe0000902, 0x8a6f: 0xe00008fe,
+-	0x8a70: 0xe000090a, 0x8a71: 0xe0000906, 0x8a72: 0xe000091a, 0x8a73: 0xe0000916,
+-	0x8a74: 0xe0000912, 0x8a75: 0xe000090e, 0x8a76: 0xe00009a2, 0x8a77: 0xe000099e,
+-	0x8a78: 0xe0000b6e, 0x8a79: 0xe0000b6b, 0x8a7a: 0xe0000b5c, 0x8a7b: 0xe0000b59,
+-	0x8a7c: 0xe0000b26, 0x8a7d: 0xe0000b23, 0x8a7e: 0xe0000afb, 0x8a7f: 0xe0000af7,
+-	// Block 0x22a, offset 0x8a80
+-	0x8a80: 0xe0000b03, 0x8a81: 0xe0000aff, 0x8a82: 0xe0000b13, 0x8a83: 0xe0000b0f,
+-	0x8a84: 0xe0000b0b, 0x8a85: 0xe0000b07, 0x8a86: 0xe0000b75, 0x8a87: 0xe0000b71,
+-	0x8a88: 0xe0000c66, 0x8a89: 0xe0000c63, 0x8a8a: 0xe0000c78, 0x8a8b: 0xe0000c75,
+-	0x8a8c: 0xe0000e84, 0x8a8d: 0xe0000e81, 0x8a8e: 0xe0000e44, 0x8a8f: 0xe0000e41,
+-	0x8a90: 0xe0000dad, 0x8a91: 0xe0000da9, 0x8a92: 0xe0000db5, 0x8a93: 0xe0000db1,
+-	0x8a94: 0xe0000dc5, 0x8a95: 0xe0000dc1, 0x8a96: 0xe000314c, 0x8a97: 0xe0003149,
+-	0x8a98: 0xe0000e8b, 0x8a99: 0xe0000e87, 0x8a9a: 0xe0000e5d, 0x8a9b: 0xe0000e59,
+-	0x8a9c: 0xe0000e65, 0x8a9d: 0xe0000e61, 0x8a9e: 0xe0000e75, 0x8a9f: 0xe0000e71,
+-	0x8aa0: 0xe000315e, 0x8aa1: 0xe000315b, 0x8aa2: 0xe0000e7d, 0x8aa3: 0xe0000e79,
+-	0x8aa4: 0xe000108d, 0x8aa5: 0xe000108a, 0x8aa6: 0xe000104d, 0x8aa7: 0xe000104a,
+-	0x8aa8: 0xe0001066, 0x8aa9: 0xe0001062, 0x8aaa: 0xe000106e, 0x8aab: 0xe000106a,
+-	0x8aac: 0xe000107e, 0x8aad: 0xe000107a, 0x8aae: 0xe0001076, 0x8aaf: 0xe0001072,
+-	0x8ab0: 0xe0001086, 0x8ab1: 0xe0001082, 0x8ab2: 0xe0001108, 0x8ab3: 0xe0001105,
+-	0x8ab4: 0xe0001135, 0x8ab5: 0xe0001132, 0x8ab6: 0xe000112f, 0x8ab7: 0xe000112c,
+-	0x8ab8: 0xe000111d, 0x8ab9: 0xe000111a, 0x8aba: 0xe0000d0a, 0x8abb: 0xe0000d07,
+-	0x8abc: 0x0030d888, 0x8abd: 0x4030d820, 0x8abe: 0x00312088, 0x8abf: 0x40312020,
+-	// Block 0x22b, offset 0x8ac0
+-	0x8ac0: 0xe0000024, 0x8ac1: 0xe0000029, 0x8ac2: 0xe000002e, 0x8ac3: 0xe0000033,
+-	0x8ac4: 0xe0000038, 0x8ac5: 0xe000003d, 0x8ac6: 0xe0000042, 0x8ac7: 0xe0000047,
+-	0x8ac8: 0xf0001f04, 0x8ac9: 0xf0001f04, 0x8aca: 0xf0001f04, 0x8acb: 0xf0001f04,
+-	0x8acc: 0xf0001f04, 0x8acd: 0xf0001f04, 0x8ace: 0xf0001f04, 0x8acf: 0xf0001f04,
+-	0x8ad0: 0xf0001f04, 0x8ad1: 0xf0000404, 0x8ad2: 0xf0000404, 0x8ad3: 0xf0000404,
+-	0x8ad4: 0xf0000404, 0x8ad5: 0xf0000404, 0x8ad6: 0xf0000404, 0x8ad7: 0xf0000404,
+-	0x8ad8: 0xf0000404, 0x8ad9: 0xf0000404, 0x8ada: 0xf0000404, 0x8adb: 0xf0000404,
+-	0x8adc: 0xf0000404, 0x8add: 0xf0000404, 0x8ade: 0xf0000404, 0x8adf: 0xf0000404,
+-	0x8ae0: 0xf0000404, 0x8ae1: 0xf0000404, 0x8ae2: 0xf0000404, 0x8ae3: 0xf0000404,
+-	0x8ae4: 0xf0000404, 0x8ae5: 0xf0000404, 0x8ae6: 0xf0000404, 0x8ae7: 0xf0000404,
+-	0x8ae8: 0xf0000404, 0x8ae9: 0xf0000404, 0x8aea: 0xf0000404, 0x8aeb: 0xf0000404,
+-	0x8aec: 0xf0000404, 0x8aed: 0xf0000404, 0x8aee: 0xf0000404, 0x8aef: 0xf0000404,
+-	0x8af0: 0xf0000404, 0x8af1: 0xf0000404, 0x8af2: 0xe000287c, 0x8af3: 0xf0000404,
+-	0x8af4: 0xf0000404, 0x8af5: 0xe000288c, 0x8af6: 0x002bde8c, 0x8af7: 0x002c0a8c,
+-	0x8af8: 0x002c3a8c, 0x8af9: 0x002c628c, 0x8afa: 0x002c988c, 0x8afb: 0x002d088c,
+-	0x8afc: 0x002d228c, 0x8afd: 0x002d688c, 0x8afe: 0x002d9a8c, 0x8aff: 0x002dcc8c,
+-	// Block 0x22c, offset 0x8b00
+-	0x8b00: 0xf0001d1c, 0x8b01: 0xf0001d1c, 0x8b02: 0xf0001d1c, 0x8b03: 0xf0001d1c,
+-	0x8b04: 0xf0001d1c, 0x8b05: 0xf0001d1d, 0x8b06: 0xf0001d1d, 0x8b07: 0xf0001d1d,
+-	0x8b08: 0xe0000a6b, 0x8b09: 0xe0000cb4, 0x8b0a: 0xf0001d1c, 0x8b0b: 0xf0001d1c,
+-	0x8b0c: 0xf0001d1c, 0x8b0d: 0xf0001c1c, 0x8b0e: 0xf0001c1c, 0x8b0f: 0xf0001c1c,
+-	0x8b10: 0xe0003006, 0x8b11: 0xe0000cb9, 0x8b12: 0xe0000d36, 0x8b13: 0xe0000be3,
+-	0x8b14: 0xe0000fc5, 0x8b15: 0xf0001c1c, 0x8b16: 0xf0001c1c, 0x8b17: 0xf0001c1c,
+-	0x8b18: 0xf0001c1c, 0x8b19: 0xf0001c1c, 0x8b1a: 0xf0001c1c, 0x8b1b: 0xf0001c1c,
+-	0x8b1c: 0xf0001c1c, 0x8b1d: 0xf0001c1c, 0x8b1e: 0xf0001c1c, 0x8b1f: 0xe0000d3e,
+-	0x8b20: 0xe0000a72, 0x8b21: 0xf0001c1c, 0x8b22: 0xe0000cbd, 0x8b23: 0xe0000d42,
+-	0x8b24: 0xe0000a76, 0x8b25: 0xf0001c1c, 0x8b26: 0xe0000cc1, 0x8b27: 0xe0000d2d,
+-	0x8b28: 0xe0000d31, 0x8b29: 0xf0001c1d, 0x8b2a: 0xe0000cc5, 0x8b2b: 0xe0000d4a,
+-	0x8b2c: 0xe0000be7, 0x8b2d: 0xe0000f0b, 0x8b2e: 0xe0000f0f, 0x8b2f: 0xe0000f15,
+-	0x8b30: 0xf0001c1c, 0x8b31: 0xf0001c1c, 0x8b32: 0xf0001c1c, 0x8b33: 0xf0001c1c,
+-	0x8b34: 0xf0001d1c, 0x8b35: 0xf0001d1c, 0x8b36: 0xf0001d1c, 0x8b37: 0xf0001d1c,
+-	0x8b38: 0xf0001d1c, 0x8b39: 0xf0001d1d, 0x8b3a: 0xe00030b5, 0x8b3b: 0xe0003097,
+-	0x8b3c: 0xe00030f5, 0x8b3d: 0xe0003073, 0x8b3e: 0xe0003034, 0x8b3f: 0xe0003076,
+-	// Block 0x22d, offset 0x8b40
+-	0x8b40: 0xf0001d1c, 0x8b41: 0xf0001d1d, 0x8b42: 0xe00009b7, 0x8b43: 0xf0001c1d,
+-	0x8b44: 0xf0001c1c, 0x8b45: 0xf0001c1c, 0x8b46: 0xe0000a66, 0x8b47: 0xe0000a7a,
+-	0x8b48: 0xf0001d1c, 0x8b49: 0xf0001c1d, 0x8b4a: 0xf0001c1c, 0x8b4b: 0xf0001d1d,
+-	0x8b4c: 0xf0001c1c, 0x8b4d: 0xf0001d1d, 0x8b4e: 0xf0001d1d, 0x8b4f: 0xf0001c1c,
+-	0x8b50: 0xf0001c1c, 0x8b51: 0xf0001c1c, 0x8b52: 0xe0000d0d, 0x8b53: 0xf0001c1c,
+-	0x8b54: 0xf0001c1c, 0x8b55: 0xe0000d3a, 0x8b56: 0xe0000d46, 0x8b57: 0xf0001d1d,
+-	0x8b58: 0xe0000eb0, 0x8b59: 0xe0000eb8, 0x8b5a: 0xf0001d1d, 0x8b5b: 0xf0001c1c,
+-	0x8b5c: 0xf0001c1d, 0x8b5d: 0xe00030d4, 0x8b5e: 0xe00010b2, 0x8b5f: 0xe00009c8,
+-	0x8b60: 0xf0001f04, 0x8b61: 0xf0001f04, 0x8b62: 0xf0001f04, 0x8b63: 0xf0001f04,
+-	0x8b64: 0xf0001f04, 0x8b65: 0xf0001f04, 0x8b66: 0xf0001f04, 0x8b67: 0xf0001f04,
+-	0x8b68: 0xf0001f04, 0x8b69: 0xf0000404, 0x8b6a: 0xf0000404, 0x8b6b: 0xf0000404,
+-	0x8b6c: 0xf0000404, 0x8b6d: 0xf0000404, 0x8b6e: 0xf0000404, 0x8b6f: 0xf0000404,
+-	0x8b70: 0xf0000404, 0x8b71: 0xf0000404, 0x8b72: 0xf0000404, 0x8b73: 0xf0000404,
+-	0x8b74: 0xf0000404, 0x8b75: 0xf0000404, 0x8b76: 0xf0000404, 0x8b77: 0xf0000404,
+-	0x8b78: 0xf0000404, 0x8b79: 0xf0000404, 0x8b7a: 0xf0000404, 0x8b7b: 0xf0000404,
+-	0x8b7c: 0xf0000404, 0x8b7d: 0xf0000404, 0x8b7e: 0xf0000404, 0x8b7f: 0xe0000bdf,
+-	// Block 0x22e, offset 0x8b80
+-	0x8b80: 0xf0001f04, 0x8b81: 0xf0001f04, 0x8b82: 0xf0001f04, 0x8b83: 0xf0001f04,
+-	0x8b84: 0xf0001f04, 0x8b85: 0xf0001f04, 0x8b86: 0xf0001f04, 0x8b87: 0xf0001f04,
+-	0x8b88: 0xf0001f04, 0x8b89: 0xf0001f04, 0x8b8a: 0xf0001f04,
+-	0x8b90: 0xf0000a04, 0x8b91: 0xf0000a04, 0x8b92: 0xf0000a04, 0x8b93: 0xf0000a04,
+-	0x8b94: 0xf0000a04, 0x8b95: 0xf0000a04, 0x8b96: 0xf0000a04, 0x8b97: 0xf0000a04,
+-	0x8b98: 0xf0000a04, 0x8b99: 0xf0000a04, 0x8b9a: 0xf0000a04, 0x8b9b: 0xf0000a04,
+-	0x8b9c: 0xf0000a04, 0x8b9d: 0xf0000a04, 0x8b9e: 0xf0000a04, 0x8b9f: 0xf0000a04,
+-	0x8ba0: 0xf0000a04, 0x8ba1: 0xf0000a04, 0x8ba2: 0xf0000a04, 0x8ba3: 0xf0000a04,
+-	0x8ba4: 0xf0000a04, 0x8ba5: 0xf0000a04, 0x8ba6: 0xe0002880, 0x8ba7: 0xf0000a04,
+-	0x8ba8: 0xf0000a04, 0x8ba9: 0xe0002890, 0x8baa: 0xf0000a04, 0x8bab: 0x002c3a8c,
+-	0x8bac: 0x002f7a8c, 0x8bad: 0xf0000c0c, 0x8bae: 0xe00030da,
+-	0x8bb0: 0x002bde9d, 0x8bb1: 0x002c0a9d, 0x8bb2: 0x002c3a9d, 0x8bb3: 0x002c629d,
+-	0x8bb4: 0x002c989d, 0x8bb5: 0x002d089d, 0x8bb6: 0x002d229d, 0x8bb7: 0x002d689d,
+-	0x8bb8: 0x002d9a9d, 0x8bb9: 0x002dcc9d, 0x8bba: 0x002dfe9d, 0x8bbb: 0x002e229d,
+-	0x8bbc: 0x002e829d, 0x8bbd: 0x002e9e9d, 0x8bbe: 0x002ee29d, 0x8bbf: 0x002f2c9d,
+-	// Block 0x22f, offset 0x8bc0
+-	0x8bc0: 0x002f569d, 0x8bc1: 0x002f7a9d, 0x8bc2: 0x002fe69d, 0x8bc3: 0x00302c9d,
+-	0x8bc4: 0x00306c9d, 0x8bc5: 0x0030be9d, 0x8bc6: 0x0030e29d, 0x8bc7: 0x0030f69d,
+-	0x8bc8: 0x0031009d, 0x8bc9: 0x00312a9d, 0x8bca: 0xf0001d1d, 0x8bcb: 0xf0001d1d,
+-	0x8bcc: 0xf0001d1d, 0x8bcd: 0xf0001d1d, 0x8bce: 0xe0000ebc, 0x8bcf: 0xe00030d7,
+-	0x8bd0: 0x002bde8c, 0x8bd1: 0x002c0a8c, 0x8bd2: 0x002c3a8c, 0x8bd3: 0x002c628c,
+-	0x8bd4: 0x002c988c, 0x8bd5: 0x002d088c, 0x8bd6: 0x002d228c, 0x8bd7: 0x002d688c,
+-	0x8bd8: 0x002d9a8c, 0x8bd9: 0x002dcc8c, 0x8bda: 0x002dfe8c, 0x8bdb: 0x002e228c,
+-	0x8bdc: 0x002e828c, 0x8bdd: 0x002e9e8c, 0x8bde: 0x002ee28c, 0x8bdf: 0x002f2c8c,
+-	0x8be0: 0x002f568c, 0x8be1: 0x002f7a8c, 0x8be2: 0x002fe68c, 0x8be3: 0x00302c8c,
+-	0x8be4: 0x00306c8c, 0x8be5: 0x0030be8c, 0x8be6: 0x0030e28c, 0x8be7: 0x0030f68c,
+-	0x8be8: 0x0031008c, 0x8be9: 0x00312a8c, 0x8bea: 0xf0001414, 0x8beb: 0xf0001414,
+-	0x8bf0: 0x002bde9d, 0x8bf1: 0x002c0a9d, 0x8bf2: 0x002c3a9d, 0x8bf3: 0x002c629d,
+-	0x8bf4: 0x002c989d, 0x8bf5: 0x002d089d, 0x8bf6: 0x002d229d, 0x8bf7: 0x002d689d,
+-	0x8bf8: 0x002d9a9d, 0x8bf9: 0x002dcc9d, 0x8bfa: 0x002dfe9d, 0x8bfb: 0x002e229d,
+-	0x8bfc: 0x002e829d, 0x8bfd: 0x002e9e9d, 0x8bfe: 0x002ee29d, 0x8bff: 0x002f2c9d,
+-	// Block 0x230, offset 0x8c00
+-	0x8c00: 0xa0000000, 0x8c01: 0xa0000000, 0x8c02: 0xa0000000, 0x8c03: 0xa0000000,
+-	0x8c04: 0xa0000000, 0x8c06: 0x40096620, 0x8c07: 0x40096a20,
+-	0x8c08: 0x40070820, 0x8c09: 0x4004f220, 0x8c0a: 0x4004f620, 0x8c0b: 0x4027e620,
+-	0x8c0c: 0x40024820, 0x8c0d: 0x40024a20, 0x8c0e: 0x40070e20, 0x8c0f: 0x40071020,
+-	0x8c10: 0xae600000, 0x8c11: 0xae600000, 0x8c12: 0xae600000, 0x8c13: 0xae600000,
+-	0x8c14: 0xae600000, 0x8c15: 0xae600000, 0x8c16: 0xae600000, 0x8c17: 0xae600000,
+-	0x8c18: 0xa1e00000, 0x8c19: 0xa1f00000, 0x8c1a: 0xa2000000, 0x8c1b: 0x40026420,
+-	0x8c1e: 0x40027020, 0x8c1f: 0x4002cc20,
+-	0x8c20: 0x403aa220, 0x8c21: 0x40393a20, 0x8c22: 0x40393620, 0x8c23: 0x40393a21,
+-	0x8c24: 0x40393a25, 0x8c25: 0x40393a23, 0x8c26: 0x00393b44, 0x8c27: 0xc5520151,
+-	0x8c28: 0x40393c20, 0x8c29: 0x403a8823, 0x8c2a: 0x40395620, 0x8c2b: 0x40395820,
+-	0x8c2c: 0x40396420, 0x8c2d: 0x40397220, 0x8c2e: 0x40397420, 0x8c2f: 0x40398820,
+-	0x8c30: 0x40398a20, 0x8c31: 0x4039a420, 0x8c32: 0x4039a620, 0x8c33: 0x4039c620,
+-	0x8c34: 0x4039c820, 0x8c35: 0x4039dc20, 0x8c36: 0x4039de20, 0x8c37: 0x4039e620,
+-	0x8c38: 0x4039e820, 0x8c39: 0x4039ee20, 0x8c3a: 0x4039f020, 0x8c3b: 0x403a3820,
+-	0x8c3c: 0x403a3a20, 0x8c3d: 0x403a9c20, 0x8c3e: 0x403a9e20, 0x8c3f: 0x403aa020,
+-	// Block 0x231, offset 0x8c40
+-	0x8c40: 0xa0000000, 0x8c41: 0x4039fc20, 0x8c42: 0x403a1220, 0x8c43: 0x403a1c23,
+-	0x8c44: 0x403a4020, 0x8c45: 0x403a4e20, 0x8c46: 0x403a5620, 0x8c47: 0x403a8820,
+-	0x8c48: 0xc5560171, 0x8c49: 0xc55a0171, 0x8c4a: 0xc55c0171, 0x8c4b: 0xa000b002,
+-	0x8c4c: 0xa000b202, 0x8c4d: 0xa000b102, 0x8c4e: 0xa1e0ad02, 0x8c4f: 0xa000af02,
+-	0x8c50: 0xa000ae02, 0x8c51: 0xa210ba02, 0x8c52: 0xa220bc02, 0x8c53: 0xae60bd02,
+-	0x8c54: 0xae60be02, 0x8c55: 0xadc0bf02, 0x8c56: 0xadc0c102, 0x8c57: 0xae60c202,
+-	0x8c58: 0xae60c302, 0x8c59: 0xae60c402, 0x8c5a: 0xae60c502, 0x8c5b: 0xae60c602,
+-	0x8c5c: 0xadc0c702, 0x8c5d: 0xae60c802, 0x8c5e: 0xae60c902, 0x8c5f: 0xadc0c002,
+-	0x8c60: 0xe000015e, 0x8c61: 0xe00001e6, 0x8c62: 0xe0000301, 0x8c63: 0xe00003db,
+-	0x8c64: 0xe00004b6, 0x8c65: 0xe0000580, 0x8c66: 0xe000064b, 0x8c67: 0xe00006f3,
+-	0x8c68: 0xe000079f, 0x8c69: 0xe0000844, 0x8c6a: 0x4004ee20, 0x8c6b: 0x40024c20,
+-	0x8c6c: 0x40024e20, 0x8c6d: 0x4004de20, 0x8c6e: 0x40393a20, 0x8c6f: 0x403a1020,
+-	0x8c70: 0xa230d102, 0x8c71: 0x40393821, 0x8c72: 0x40393a22, 0x8c73: 0x40393a24,
+-	0x8c74: 0x00391c84, 0x8c75: 0xf0000404, 0x8c76: 0xf0000404, 0x8c77: 0xf0000404,
+-	0x8c78: 0xe0003275, 0x8c79: 0x40395a20, 0x8c7a: 0x40395c20, 0x8c7b: 0x40393e20,
+-	0x8c7c: 0x40395e20, 0x8c7d: 0x40396020, 0x8c7e: 0x40394020, 0x8c7f: 0x40396220,
+-	// Block 0x232, offset 0x8c80
+-	0x8c80: 0x40394220, 0x8c81: 0x40397620, 0x8c82: 0x40397820, 0x8c83: 0x40396620,
+-	0x8c84: 0x40396820, 0x8c85: 0x40397a20, 0x8c86: 0x40396a20, 0x8c87: 0x40396e20,
+-	0x8c88: 0x40398c20, 0x8c89: 0x40398e20, 0x8c8a: 0x40399020, 0x8c8b: 0x40399220,
+-	0x8c8c: 0x40399420, 0x8c8d: 0x40399620, 0x8c8e: 0x40399820, 0x8c8f: 0x40399a20,
+-	0x8c90: 0x40399c20, 0x8c91: 0x4039a820, 0x8c92: 0x4039aa20, 0x8c93: 0x4039ac20,
+-	0x8c94: 0x4039ae20, 0x8c95: 0x4039b020, 0x8c96: 0x4039b220, 0x8c97: 0x4039b420,
+-	0x8c98: 0x4039b620, 0x8c99: 0x4039b820, 0x8c9a: 0x4039ca20, 0x8c9b: 0x4039cc20,
+-	0x8c9c: 0x4039ce20, 0x8c9d: 0x4039e020, 0x8c9e: 0x4039e220, 0x8c9f: 0x4039ea20,
+-	0x8ca0: 0x4039f220, 0x8ca1: 0x4039fe20, 0x8ca2: 0x403a0020, 0x8ca3: 0x403a0220,
+-	0x8ca4: 0x403a0420, 0x8ca5: 0x403a0820, 0x8ca6: 0x403a0a20, 0x8ca7: 0x403a1420,
+-	0x8ca8: 0x403a1620, 0x8ca9: 0x403a1c20, 0x8caa: 0x403a1c21, 0x8cab: 0x403a1c22,
+-	0x8cac: 0x403a1c24, 0x8cad: 0x403a1c25, 0x8cae: 0x403a1c26, 0x8caf: 0x403a2a20,
+-	0x8cb0: 0x403a2c20, 0x8cb1: 0x403a2e20, 0x8cb2: 0x403a3020, 0x8cb3: 0x403a3220,
+-	0x8cb4: 0x403a3420, 0x8cb5: 0x403a4220, 0x8cb6: 0x403a4420, 0x8cb7: 0x403a4620,
+-	0x8cb8: 0x403a4820, 0x8cb9: 0x403a6020, 0x8cba: 0x403a5820, 0x8cbb: 0x403a5a20,
+-	0x8cbc: 0x403a5c20, 0x8cbd: 0x403a5e20, 0x8cbe: 0x403a8826, 0x8cbf: 0x40396c20,
+-	// Block 0x233, offset 0x8cc0
+-	0x8cc0: 0x403a8825, 0x8cc1: 0x403a8822, 0x8cc2: 0xe000326c, 0x8cc3: 0x403a8824,
+-	0x8cc4: 0x403a7620, 0x8cc5: 0x403a7820, 0x8cc6: 0x403a7a20, 0x8cc7: 0x403a7c20,
+-	0x8cc8: 0x403a7e20, 0x8cc9: 0x403a8020, 0x8cca: 0x403a8220, 0x8ccb: 0x403a8420,
+-	0x8ccc: 0xc5580171, 0x8ccd: 0x403a9226, 0x8cce: 0x403a9227, 0x8ccf: 0x403a8620,
+-	0x8cd0: 0x403a9224, 0x8cd1: 0x403a9225, 0x8cd2: 0x403a9222, 0x8cd3: 0xe00032ab,
+-	0x8cd4: 0x4002e820, 0x8cd5: 0xc55e0171, 0x8cd6: 0xae600000, 0x8cd7: 0xae600000,
+-	0x8cd8: 0xae600000, 0x8cd9: 0xae600000, 0x8cda: 0xae600000, 0x8cdb: 0xae600000,
+-	0x8cdc: 0xae600000, 0x8cdd: 0xa0000000, 0x8cde: 0x40071220, 0x8cdf: 0xae600000,
+-	0x8ce0: 0xae600000, 0x8ce1: 0xae600000, 0x8ce2: 0xae600000, 0x8ce3: 0xadc00000,
+-	0x8ce4: 0xae600000, 0x8ce5: 0x003a7484, 0x8ce6: 0x003a9084, 0x8ce7: 0xae600000,
+-	0x8ce8: 0xae600000, 0x8ce9: 0x40071420, 0x8cea: 0xadc00000, 0x8ceb: 0xae600000,
+-	0x8cec: 0xae600000, 0x8ced: 0xadc00000, 0x8cee: 0x40399e20, 0x8cef: 0x4039ba20,
+-	0x8cf0: 0xe0000161, 0x8cf1: 0xe00001e9, 0x8cf2: 0xe0000304, 0x8cf3: 0xe00003de,
+-	0x8cf4: 0xe00004b9, 0x8cf5: 0xe0000583, 0x8cf6: 0xe000064e, 0x8cf7: 0xe00006f6,
+-	0x8cf8: 0xe00007a2, 0x8cf9: 0xe0000847, 0x8cfa: 0x4039d020, 0x8cfb: 0x4039e420,
+-	0x8cfc: 0x4039f420, 0x8cfd: 0xe0001553, 0x8cfe: 0xe0001779, 0x8cff: 0x403a7020,
+-	// Block 0x234, offset 0x8d00
+-	0x8d00: 0x00396e97, 0x8d01: 0x00396e98, 0x8d02: 0x0039969a, 0x8d03: 0x00399699,
+-	0x8d04: 0x0039949a, 0x8d05: 0x00399499, 0x8d06: 0x0039989a, 0x8d07: 0x00399899,
+-	0x8d08: 0x00398c9a, 0x8d09: 0x00398c99, 0x8d0a: 0x0039b69a, 0x8d0b: 0x0039b699,
+-	0x8d0c: 0x0039a89a, 0x8d0d: 0x0039a899, 0x8d0e: 0x003a1c9a, 0x8d0f: 0x003a1c99,
+-	0x8d10: 0x003a1c97, 0x8d11: 0x003a1c98, 0x8d12: 0x003a2a9a, 0x8d13: 0x003a2a99,
+-	0x8d14: 0x003a2a97, 0x8d15: 0x003a2a98, 0x8d16: 0x003a329a, 0x8d17: 0x003a3299,
+-	0x8d18: 0x003a3297, 0x8d19: 0x003a3298, 0x8d1a: 0x003a2e9a, 0x8d1b: 0x003a2e99,
+-	0x8d1c: 0x003a2e97, 0x8d1d: 0x003a2e98, 0x8d1e: 0x003a589a, 0x8d1f: 0x003a5899,
+-	0x8d20: 0x003a5a9a, 0x8d21: 0x003a5a99, 0x8d22: 0x003a5a97, 0x8d23: 0x003a5a98,
+-	0x8d24: 0xe0003269, 0x8d25: 0xe0003266, 0x8d26: 0x003a6c9a, 0x8d27: 0x003a6c99,
+-	0x8d28: 0x003a6c97, 0x8d29: 0x003a6c98, 0x8d2a: 0x003a6a9a, 0x8d2b: 0x003a6a99,
+-	0x8d2c: 0x003a6a97, 0x8d2d: 0x003a6a98, 0x8d2e: 0x003aaa9a, 0x8d2f: 0x003aaa99,
+-	0x8d30: 0xe00032b1, 0x8d31: 0xe00032ae, 0x8d32: 0x40071820, 0x8d33: 0x40071a20,
+-	0x8d34: 0x40071c20, 0x8d35: 0x40071e20, 0x8d36: 0x40072020, 0x8d37: 0x40072220,
+-	0x8d38: 0x40072420, 0x8d39: 0x40072620, 0x8d3a: 0x40072820, 0x8d3b: 0x40072a20,
+-	0x8d3c: 0x40072c20, 0x8d3d: 0x40072e20, 0x8d3e: 0x40073020, 0x8d3f: 0x40073220,
+-	// Block 0x235, offset 0x8d40
+-	0x8d40: 0xe000155f, 0x8d41: 0xe0001565, 0x8d42: 0xe000157a, 0x8d43: 0xe00015b0,
+-	0x8d44: 0xe00015b6, 0x8d45: 0xf0001a1a, 0x8d46: 0xf0001a1a, 0x8d47: 0xf0001a1a,
+-	0x8d48: 0xf0001a1a, 0x8d49: 0xe00024a2, 0x8d4a: 0xe000319a, 0x8d4b: 0xf0001a1a,
+-	0x8d4c: 0xf0001a1a, 0x8d4d: 0xf0001a1a, 0x8d4e: 0xf0001a1a, 0x8d4f: 0xe00024a8,
+-	0x8d50: 0xe00031a6, 0x8d51: 0xf0001a1a, 0x8d52: 0xf0001a1a, 0x8d53: 0xe00024ae,
+-	0x8d54: 0xe00031af, 0x8d55: 0xf0001a1a, 0x8d56: 0xf0001a1a, 0x8d57: 0xf0001a1a,
+-	0x8d58: 0xf0001a1a, 0x8d59: 0xf0001a1a, 0x8d5a: 0xf0001a1a, 0x8d5b: 0xf0001a1a,
+-	0x8d5c: 0xf0001a1a, 0x8d5d: 0xf0001a1a, 0x8d5e: 0xf0001a1a, 0x8d5f: 0xf0001a1a,
+-	0x8d60: 0xf0001a1a, 0x8d61: 0xf0001a1a, 0x8d62: 0xf0001a1a, 0x8d63: 0xf0001a1a,
+-	0x8d64: 0xf0001a1a, 0x8d65: 0xf0001a1a, 0x8d66: 0xf0001a1a, 0x8d67: 0xf0001a1a,
+-	0x8d68: 0xf0001a1a, 0x8d69: 0xf0001a1a, 0x8d6a: 0xf0001a1a, 0x8d6b: 0xf0001a1a,
+-	0x8d6c: 0xf0001a1a, 0x8d6d: 0xf0001a1a, 0x8d6e: 0xf0001a1a, 0x8d6f: 0xf0001a1a,
+-	0x8d70: 0xf0001a1a, 0x8d71: 0xe00024f0, 0x8d72: 0xe00031fd, 0x8d73: 0xf0001a1a,
+-	0x8d74: 0xf0001a1a, 0x8d75: 0xe00024f6, 0x8d76: 0xe0003203, 0x8d77: 0xe0003209,
+-	0x8d78: 0xe000320f, 0x8d79: 0xe0003215, 0x8d7a: 0xe000321b, 0x8d7b: 0xe0003227,
+-	0x8d7c: 0xe0003233, 0x8d7d: 0xe00024fc, 0x8d7e: 0xe0003239, 0x8d7f: 0xf0001a1a,
+-	// Block 0x236, offset 0x8d80
+-	0x8d80: 0xf0001a1a, 0x8d81: 0xf0001a1a, 0x8d82: 0xf0001a1a, 0x8d83: 0xe0002502,
+-	0x8d84: 0xe0003242, 0x8d85: 0xf0001a1a, 0x8d86: 0xf0001a1a, 0x8d87: 0xf0001a1a,
+-	0x8d88: 0xf0001a1a, 0x8d89: 0xe0002505, 0x8d8a: 0xe0003245, 0x8d8b: 0xf0001a1a,
+-	0x8d8c: 0xf0001a1a, 0x8d8d: 0xf0001a1a, 0x8d8e: 0xf0001a1a, 0x8d8f: 0xe000250b,
+-	0x8d90: 0xe0003251, 0x8d91: 0xe000325a, 0x8d92: 0xe0003260, 0x8d93: 0xe000250e,
+-	0x8d94: 0xe0003263, 0x8d95: 0xe000327b, 0x8d96: 0xe0003281, 0x8d97: 0xe0003287,
+-	0x8d98: 0xe0003299, 0x8d99: 0xe0002514, 0x8d9a: 0xe00032a8, 0x8d9b: 0xf0001a1a,
+-	0x8d9c: 0xf0001a1a, 0x8d9d: 0xe0003272, 0x8d9e: 0xe0000003, 0x8d9f: 0xe0000006,
+-	0x8da0: 0xe0000009, 0x8da1: 0xe000000c, 0x8da2: 0xe000000f, 0x8da3: 0xe0000012,
+-	0x8da4: 0xe000156b, 0x8da5: 0xe000156e, 0x8da6: 0xe0001577, 0x8da7: 0xe000157d,
+-	0x8da8: 0xe00015aa, 0x8da9: 0xe00015b3, 0x8daa: 0xf0001919, 0x8dab: 0xf0001919,
+-	0x8dac: 0xf0001919, 0x8dad: 0xf0001919, 0x8dae: 0xe000249f, 0x8daf: 0xe0003197,
+-	0x8db0: 0xf0001919, 0x8db1: 0xf0001919, 0x8db2: 0xf0001919, 0x8db3: 0xf0001919,
+-	0x8db4: 0xe00024a5, 0x8db5: 0xe00031a3, 0x8db6: 0xf0001919, 0x8db7: 0xf0001919,
+-	0x8db8: 0xf0001919, 0x8db9: 0xf0001919, 0x8dba: 0xe00024ab, 0x8dbb: 0xe00031ac,
+-	0x8dbc: 0xe00024ed, 0x8dbd: 0xe00031fa, 0x8dbe: 0xe00024f3, 0x8dbf: 0xe0003200,
+-	// Block 0x237, offset 0x8dc0
+-	0x8dc0: 0xe0003206, 0x8dc1: 0xe0003224, 0x8dc2: 0xe0003230, 0x8dc3: 0xe00024f9,
+-	0x8dc4: 0xe0003236, 0x8dc5: 0xf0001919, 0x8dc6: 0xe00024ff, 0x8dc7: 0xe000323f,
+-	0x8dc8: 0xf0001919, 0x8dc9: 0xf0001919, 0x8dca: 0xf0001919, 0x8dcb: 0xf0001919,
+-	0x8dcc: 0xf0001919, 0x8dcd: 0xf0001919, 0x8dce: 0xe0002508, 0x8dcf: 0xe000324e,
+-	0x8dd0: 0xe000326f, 0x8dd1: 0xe000328a, 0x8dd2: 0xe000328d, 0x8dd3: 0xe0003296,
+-	0x8dd4: 0xe000329c, 0x8dd5: 0xe0002511, 0x8dd6: 0xe00032a5, 0x8dd7: 0xe000155c,
+-	0x8dd8: 0xe0001562, 0x8dd9: 0xe0001568, 0x8dda: 0xe0001571, 0x8ddb: 0xe0001580,
+-	0x8ddc: 0xf0001717, 0x8ddd: 0xf0001717, 0x8dde: 0xf0001717, 0x8ddf: 0xf0001717,
+-	0x8de0: 0xe0003191, 0x8de1: 0xf0001717, 0x8de2: 0xf0001717, 0x8de3: 0xf0001717,
+-	0x8de4: 0xf0001717, 0x8de5: 0xe000319d, 0x8de6: 0xf0001717, 0x8de7: 0xf0001717,
+-	0x8de8: 0xf0001717, 0x8de9: 0xf0001717, 0x8dea: 0xf0001717, 0x8deb: 0xf0001717,
+-	0x8dec: 0xf0001717, 0x8ded: 0xf0001717, 0x8dee: 0xf0001717, 0x8def: 0xf0001717,
+-	0x8df0: 0xf0001717, 0x8df1: 0xf0001717, 0x8df2: 0xf0001717, 0x8df3: 0xf0001717,
+-	0x8df4: 0xf0001717, 0x8df5: 0xf0001717, 0x8df6: 0xf0001717, 0x8df7: 0xf0001717,
+-	0x8df8: 0xf0001717, 0x8df9: 0xf0001717, 0x8dfa: 0xf0001717, 0x8dfb: 0xf0001717,
+-	0x8dfc: 0xf0001717, 0x8dfd: 0xf0001717, 0x8dfe: 0xf0001717, 0x8dff: 0xf0001717,
+-	// Block 0x238, offset 0x8e00
+-	0x8e00: 0xf0001717, 0x8e01: 0xf0001717, 0x8e02: 0xf0001717, 0x8e03: 0xf0001717,
+-	0x8e04: 0xe000320c, 0x8e05: 0xe0003212, 0x8e06: 0xe0003218, 0x8e07: 0xe000321e,
+-	0x8e08: 0xe000322a, 0x8e09: 0xf0001717, 0x8e0a: 0xf0001717, 0x8e0b: 0xf0001717,
+-	0x8e0c: 0xf0001717, 0x8e0d: 0xe000323c, 0x8e0e: 0xf0001717, 0x8e0f: 0xf0001717,
+-	0x8e10: 0xf0001717, 0x8e11: 0xf0001717, 0x8e12: 0xf0001717, 0x8e13: 0xf0001717,
+-	0x8e14: 0xf0001717, 0x8e15: 0xf0001717, 0x8e16: 0xe0003248, 0x8e17: 0xe0003257,
+-	0x8e18: 0xe000325d, 0x8e19: 0xe0003254, 0x8e1a: 0xe0003278, 0x8e1b: 0xe000327e,
+-	0x8e1c: 0xe0003284, 0x8e1d: 0xe0003290, 0x8e1e: 0xe000329f, 0x8e1f: 0xe0001574,
+-	0x8e20: 0xe0001583, 0x8e21: 0xf0001818, 0x8e22: 0xe0003194, 0x8e23: 0xf0001818,
+-	0x8e24: 0xe00031a0, 0x8e25: 0xf0001818, 0x8e26: 0xe00031a9, 0x8e27: 0xf0001818,
+-	0x8e28: 0xe00031c7, 0x8e29: 0xf0001818, 0x8e2a: 0xe00031d3, 0x8e2b: 0xe0003221,
+-	0x8e2c: 0xe000322d, 0x8e2d: 0xf0001818, 0x8e2e: 0xf0001818, 0x8e2f: 0xe000324b,
+-	0x8e30: 0xe0003293, 0x8e31: 0xe00032a2, 0x8e32: 0xf0001818, 0x8e33: 0xe0003185,
+-	0x8e34: 0xe0003188, 0x8e35: 0xe00024de, 0x8e36: 0xe00031eb, 0x8e37: 0xe00024e4,
+-	0x8e38: 0xe00031f1, 0x8e39: 0xe00024ea, 0x8e3a: 0xe00031f7, 0x8e3b: 0xe00024c6,
+-	0x8e3c: 0xe00031cd, 0x8e3d: 0xe00024cc, 0x8e3e: 0xe00031d9, 0x8e3f: 0xe00024ba,
+-	// Block 0x239, offset 0x8e40
+-	0x8e40: 0xe00031bb, 0x8e41: 0xe00024b4, 0x8e42: 0xe00031b5, 0x8e43: 0xe00024c0,
+-	0x8e44: 0xe00031c1, 0x8e45: 0xe00024d2, 0x8e46: 0xe00031df, 0x8e47: 0xe00024d8,
+-	0x8e48: 0xe00031e5, 0x8e49: 0xf0001a1a, 0x8e4a: 0xf0001a1a, 0x8e4b: 0xf0001a1a,
+-	0x8e4c: 0xf0001a1a, 0x8e4d: 0xf0001a1a, 0x8e4e: 0xf0001a1a, 0x8e4f: 0xf0001a1a,
+-	0x8e50: 0xf0001a1a, 0x8e51: 0xe00024db, 0x8e52: 0xe00031e8, 0x8e53: 0xe00024e1,
+-	0x8e54: 0xe00031ee, 0x8e55: 0xe00024e7, 0x8e56: 0xe00031f4, 0x8e57: 0xe00024c3,
+-	0x8e58: 0xe00031ca, 0x8e59: 0xe00024c9, 0x8e5a: 0xe00031d6, 0x8e5b: 0xe00024b7,
+-	0x8e5c: 0xe00031b8, 0x8e5d: 0xe00024b1, 0x8e5e: 0xe00031b2, 0x8e5f: 0xe00024bd,
+-	0x8e60: 0xe00031be, 0x8e61: 0xe00024cf, 0x8e62: 0xe00031dc, 0x8e63: 0xe00024d5,
+-	0x8e64: 0xe00031e2, 0x8e65: 0xf0001919, 0x8e66: 0xf0001919, 0x8e67: 0xf0001919,
+-	0x8e68: 0xf0001919, 0x8e69: 0xf0001919, 0x8e6a: 0xf0001919, 0x8e6b: 0xf0001919,
+-	0x8e6c: 0xf0001919, 0x8e6d: 0xf0001717, 0x8e6e: 0xf0001717, 0x8e6f: 0xf0001717,
+-	0x8e70: 0xf0001717, 0x8e71: 0xe00031c4, 0x8e72: 0xe00031d0, 0x8e73: 0xf0001717,
+-	0x8e74: 0xf0001818, 0x8e75: 0xf0001818, 0x8e76: 0xf0001818, 0x8e77: 0xf0001818,
+-	0x8e78: 0xf0001818, 0x8e79: 0xf0001818, 0x8e7a: 0xf0001818, 0x8e7b: 0xf0001818,
+-	0x8e7c: 0xe000318b, 0x8e7d: 0xe000318e, 0x8e7e: 0x4004c020, 0x8e7f: 0x4004c220,
+-	// Block 0x23a, offset 0x8e80
+-	0x8e80: 0xa0000000, 0x8e81: 0xa0000000, 0x8e82: 0xa0000000, 0x8e83: 0xa0000000,
+-	0x8e84: 0xa0000000, 0x8e85: 0xa0000000, 0x8e86: 0xa0000000, 0x8e87: 0xa0000000,
+-	0x8e88: 0xa0000000, 0x8e89: 0x40020020, 0x8e8a: 0x40020220, 0x8e8b: 0x40020420,
+-	0x8e8c: 0x40020620, 0x8e8d: 0x40020820, 0x8e8e: 0xa0000000, 0x8e8f: 0xa0000000,
+-	0x8e90: 0xa0000000, 0x8e91: 0xa0000000, 0x8e92: 0xa0000000, 0x8e93: 0xa0000000,
+-	0x8e94: 0xa0000000, 0x8e95: 0xa0000000, 0x8e96: 0xa0000000, 0x8e97: 0xa0000000,
+-	0x8e98: 0xa0000000, 0x8e99: 0xa0000000, 0x8e9a: 0xa0000000, 0x8e9b: 0xa0000000,
+-	0x8e9c: 0xa0000000, 0x8e9d: 0xa0000000, 0x8e9e: 0xa0000000, 0x8e9f: 0xa0000000,
+-	0x8ea0: 0x40021220, 0x8ea1: 0x4002ba20, 0x8ea2: 0x4003e020, 0x8ea3: 0x4004ea20,
+-	0x8ea4: 0x4027de20, 0x8ea5: 0x4004ec20, 0x8ea6: 0x4004e620, 0x8ea7: 0x4003d220,
+-	0x8ea8: 0x4003f420, 0x8ea9: 0x4003f620, 0x8eaa: 0x4004d820, 0x8eab: 0x40093820,
+-	0x8eac: 0x40024020, 0x8ead: 0x40021a20, 0x8eae: 0x4002e420, 0x8eaf: 0x4004e220,
+-	0x8eb0: 0x4029cc20, 0x8eb1: 0x4029ce20, 0x8eb2: 0x4029d020, 0x8eb3: 0x4029d220,
+-	0x8eb4: 0x4029d420, 0x8eb5: 0x4029d620, 0x8eb6: 0x4029d820, 0x8eb7: 0x4029da20,
+-	0x8eb8: 0x4029dc20, 0x8eb9: 0x4029de20, 0x8eba: 0x40026c20, 0x8ebb: 0x40026220,
+-	0x8ebc: 0x40094020, 0x8ebd: 0x40094220, 0x8ebe: 0x40094420, 0x8ebf: 0x4002c420,
+-	// Block 0x23b, offset 0x8ec0
+-	0x8ec0: 0x4004d620, 0x8ec1: 0xc56727b1, 0x8ec2: 0x002c0a88, 0x8ec3: 0x002c3a88,
+-	0x8ec4: 0x002c6288, 0x8ec5: 0x002c9888, 0x8ec6: 0x002d0888, 0x8ec7: 0x002d2288,
+-	0x8ec8: 0x002d6888, 0x8ec9: 0x002d9a88, 0x8eca: 0x002dcc88, 0x8ecb: 0x002dfe88,
+-	0x8ecc: 0xc0030002, 0x8ecd: 0x002e8288, 0x8ece: 0x002e9e88, 0x8ecf: 0xc56c0071,
+-	0x8ed0: 0x002f2c88, 0x8ed1: 0x002f5688, 0x8ed2: 0x002f7a88, 0x8ed3: 0x002fe688,
+-	0x8ed4: 0x00302c88, 0x8ed5: 0xc5620071, 0x8ed6: 0x0030be88, 0x8ed7: 0x0030e288,
+-	0x8ed8: 0x0030f688, 0x8ed9: 0x00310088, 0x8eda: 0x00312a88, 0x8edb: 0x4003f820,
+-	0x8edc: 0x4004e420, 0x8edd: 0x4003fa20, 0x8ede: 0x40062420, 0x8edf: 0x40021620,
+-	0x8ee0: 0x40061e20, 0x8ee1: 0xc56427b1, 0x8ee2: 0x402c0a20, 0x8ee3: 0x402c3a20,
+-	0x8ee4: 0x402c6220, 0x8ee5: 0x402c9820, 0x8ee6: 0x402d0820, 0x8ee7: 0x402d2220,
+-	0x8ee8: 0x402d6820, 0x8ee9: 0x402d9a20, 0x8eea: 0x402dcc20, 0x8eeb: 0x402dfe20,
+-	0x8eec: 0xc0000002, 0x8eed: 0x402e8220, 0x8eee: 0x402e9e20, 0x8eef: 0xc56a0071,
+-	0x8ef0: 0x402f2c20, 0x8ef1: 0x402f5620, 0x8ef2: 0x402f7a20, 0x8ef3: 0x402fe620,
+-	0x8ef4: 0x40302c20, 0x8ef5: 0xc5600071, 0x8ef6: 0x4030be20, 0x8ef7: 0x4030e220,
+-	0x8ef8: 0x4030f620, 0x8ef9: 0x40310020, 0x8efa: 0x40312a20, 0x8efb: 0x4003fc20,
+-	0x8efc: 0x40094820, 0x8efd: 0x4003fe20, 0x8efe: 0x40094c20, 0x8eff: 0xa0000000,
+-	// Block 0x23c, offset 0x8f00
+-	0x8f00: 0xe00008f5, 0x8f01: 0xe00008ef, 0x8f02: 0xe0000921, 0x8f03: 0xe0000969,
+-	0x8f04: 0x00320e83, 0x8f05: 0x00320c83, 0x8f06: 0x00320ea3, 0x8f07: 0xe0000a53,
+-	0x8f08: 0xe0000ae8, 0x8f09: 0xe0000ae2, 0x8f0a: 0xe0000af4, 0x8f0b: 0xe0000b20,
+-	0x8f0c: 0xe0000c2b, 0x8f0d: 0xe0000c25, 0x8f0e: 0xe0000c37, 0x8f0f: 0xe0000c43,
+-	0x8f10: 0xe0000ab3, 0x8f11: 0xe0000d63, 0x8f12: 0xe0000d9a, 0x8f13: 0xe0000d94,
+-	0x8f14: 0xe0000da6, 0x8f15: 0xe0000de6, 0x8f16: 0x00321083, 0x8f17: 0x40093e20,
+-	0x8f18: 0x003210a3, 0x8f19: 0xe0000fe1, 0x8f1a: 0xe0000fdb, 0x8f1b: 0xe0000fed,
+-	0x8f1c: 0x003100a3, 0x8f1d: 0xe0001102, 0x8f1e: 0x00318888, 0x8f1f: 0xe0000f7b,
+-	0x8f20: 0xe00008f2, 0x8f21: 0xe00008ec, 0x8f22: 0xe000091e, 0x8f23: 0xe0000966,
+-	0x8f24: 0x40320e20, 0x8f25: 0x40320c20, 0x8f26: 0x40320e21, 0x8f27: 0xe0000a4d,
+-	0x8f28: 0xe0000ae5, 0x8f29: 0xe0000adf, 0x8f2a: 0xe0000af1, 0x8f2b: 0xe0000b1d,
+-	0x8f2c: 0xe0000c28, 0x8f2d: 0xe0000c22, 0x8f2e: 0xe0000c34, 0x8f2f: 0xe0000c40,
+-	0x8f30: 0xe0000aad, 0x8f31: 0xe0000d60, 0x8f32: 0xe0000d97, 0x8f33: 0xe0000d91,
+-	0x8f34: 0xe0000da3, 0x8f35: 0xe0000de3, 0x8f36: 0x40321020, 0x8f37: 0x40093c20,
+-	0x8f38: 0x40321021, 0x8f39: 0xe0000fde, 0x8f3a: 0xe0000fd8, 0x8f3b: 0xe0000fea,
+-	0x8f3c: 0x40310021, 0x8f3d: 0xe00010ff, 0x8f3e: 0x40318820, 0x8f3f: 0xe0001114,
+-	// Block 0x23d, offset 0x8f40
+-	0x8f40: 0xe0000983, 0x8f41: 0xe0000980, 0x8f42: 0xe00008fb, 0x8f43: 0xe00008f8,
+-	0x8f44: 0xe000097d, 0x8f45: 0xe000097a, 0x8f46: 0xe0000a38, 0x8f47: 0xe0000a35,
+-	0x8f48: 0xe0000a3e, 0x8f49: 0xe0000a3b, 0x8f4a: 0xe0000a4a, 0x8f4b: 0xe0000a47,
+-	0x8f4c: 0xe0000a44, 0x8f4d: 0xe0000a41, 0x8f4e: 0xe0000a86, 0x8f4f: 0xe0000a83,
+-	0x8f50: 0xe00032b7, 0x8f51: 0xe00032b4, 0x8f52: 0xe0000b46, 0x8f53: 0xe0000b43,
+-	0x8f54: 0xe0000aee, 0x8f55: 0xe0000aeb, 0x8f56: 0xe0000b2c, 0x8f57: 0xe0000b29,
+-	0x8f58: 0xe0000b40, 0x8f59: 0xe0000b3d, 0x8f5a: 0xe0000b1a, 0x8f5b: 0xe0000b17,
+-	0x8f5c: 0xe0000bb8, 0x8f5d: 0xe0000bb5, 0x8f5e: 0xe0000bb2, 0x8f5f: 0xe0000baf,
+-	0x8f60: 0xe0000bc4, 0x8f61: 0xe0000bc1, 0x8f62: 0xe0000bca, 0x8f63: 0xe0000bc7,
+-	0x8f64: 0xe0000bee, 0x8f65: 0xe0000beb, 0x8f66: 0xe0000c1b, 0x8f67: 0xe0000c18,
+-	0x8f68: 0xe0000c51, 0x8f69: 0xe0000c4e, 0x8f6a: 0xe0000c60, 0x8f6b: 0xe0000c5d,
+-	0x8f6c: 0xe0000c31, 0x8f6d: 0xe0000c2e, 0x8f6e: 0xe0000c5a, 0x8f6f: 0xe0000c57,
+-	0x8f70: 0xe0000c54, 0x8f71: 0x402da220, 0x8f72: 0xf0000a0a, 0x8f73: 0xf0000404,
+-	0x8f74: 0xe0000c8a, 0x8f75: 0xe0000c87, 0x8f76: 0xe0000c9f, 0x8f77: 0xe0000c9c,
+-	0x8f78: 0x402f7220, 0x8f79: 0xe0000ccc, 0x8f7a: 0xe0000cc9, 0x8f7b: 0xe0000cd8,
+-	0x8f7c: 0xe0000cd5, 0x8f7d: 0xe0000cd2, 0x8f7e: 0xe0000ccf, 0x8f7f: 0xe0000d04,
+-	// Block 0x23e, offset 0x8f80
+-	0x8f80: 0xe0000cfe, 0x8f81: 0xe0000cf8, 0x8f82: 0xe0000cf5, 0x8f83: 0xe0000d51,
+-	0x8f84: 0xe0000d4e, 0x8f85: 0xe0000d6f, 0x8f86: 0xe0000d6c, 0x8f87: 0xe0000d5d,
+-	0x8f88: 0xe0000d5a, 0x8f89: 0xf0000404, 0x8f8a: 0xe00032c3, 0x8f8b: 0xe00032c0,
+-	0x8f8c: 0xe0000e2e, 0x8f8d: 0xe0000e2b, 0x8f8e: 0xe0000da0, 0x8f8f: 0xe0000d9d,
+-	0x8f90: 0xe0000de0, 0x8f91: 0xe0000ddd, 0x8f92: 0xe0000e93, 0x8f93: 0xe0000e8f,
+-	0x8f94: 0xe0000eca, 0x8f95: 0xe0000ec7, 0x8f96: 0xe0000edc, 0x8f97: 0xe0000ed9,
+-	0x8f98: 0xe0000ed0, 0x8f99: 0xe0000ecd, 0x8f9a: 0xe0000f1f, 0x8f9b: 0xe0000f1c,
+-	0x8f9c: 0xe0000f2d, 0x8f9d: 0xe0000f2a, 0x8f9e: 0xe0000f47, 0x8f9f: 0xe0000f44,
+-	0x8fa0: 0xe0000f33, 0x8fa1: 0xe0000f30, 0x8fa2: 0xe0000f99, 0x8fa3: 0xe0000f96,
+-	0x8fa4: 0xe0000f8a, 0x8fa5: 0xe0000f87, 0x8fa6: 0xe00032c9, 0x8fa7: 0xe00032c6,
+-	0x8fa8: 0xe000102b, 0x8fa9: 0xe0001028, 0x8faa: 0xe000103f, 0x8fab: 0xe000103c,
+-	0x8fac: 0xe0000fe7, 0x8fad: 0xe0000fe4, 0x8fae: 0xe0000ff9, 0x8faf: 0xe0000ff6,
+-	0x8fb0: 0xe0001025, 0x8fb1: 0xe0001022, 0x8fb2: 0xe0001039, 0x8fb3: 0xe0001036,
+-	0x8fb4: 0xe00010d8, 0x8fb5: 0xe00010d5, 0x8fb6: 0xe000110e, 0x8fb7: 0xe000110b,
+-	0x8fb8: 0xe0001117, 0x8fb9: 0xe000113b, 0x8fba: 0xe0001138, 0x8fbb: 0xe000114d,
+-	0x8fbc: 0xe000114a, 0x8fbd: 0xe0001147, 0x8fbe: 0xe0001144, 0x8fbf: 0xe0000f64,
+-	// Block 0x23f, offset 0x8fc0
+-	0x8fc0: 0x402c1a20, 0x8fc1: 0x002c2a88, 0x8fc2: 0x002c3288, 0x8fc3: 0x402c3220,
+-	0x8fc4: 0x0031c488, 0x8fc5: 0x4031c420, 0x8fc6: 0x002efa88, 0x8fc7: 0x002c4e88,
+-	0x8fc8: 0x402c4e20, 0x8fc9: 0x002c7288, 0x8fca: 0x002c7a88, 0x8fcb: 0x002c8488,
+-	0x8fcc: 0x402c8420, 0x8fcd: 0xe000115c, 0x8fce: 0x002cae88, 0x8fcf: 0x002cb888,
+-	0x8fd0: 0x002cc288, 0x8fd1: 0x002d1688, 0x8fd2: 0x402d1620, 0x8fd3: 0x002d4488,
+-	0x8fd4: 0x002d5888, 0x8fd5: 0x402d7820, 0x8fd6: 0x002dc288, 0x8fd7: 0x002db688,
+-	0x8fd8: 0x002e0a88, 0x8fd9: 0x402e0a20, 0x8fda: 0x402e3820, 0x8fdb: 0x402e7220,
+-	0x8fdc: 0x0030a088, 0x8fdd: 0x002eb488, 0x8fde: 0x402ebc20, 0x8fdf: 0x002f1088,
+-	0x8fe0: 0xe0000e56, 0x8fe1: 0xe0000e53, 0x8fe2: 0x002d6088, 0x8fe3: 0x402d6020,
+-	0x8fe4: 0x002f3e88, 0x8fe5: 0x402f3e20, 0x8fe6: 0x002f8288, 0x8fe7: 0x0031b488,
+-	0x8fe8: 0x4031b420, 0x8fe9: 0x00300888, 0x8fea: 0x40301220, 0x8feb: 0x40304220,
+-	0x8fec: 0x00304a88, 0x8fed: 0x40304a20, 0x8fee: 0x00305288, 0x8fef: 0xe000105f,
+-	0x8ff0: 0xe000105c, 0x8ff1: 0x0030b488, 0x8ff2: 0x0030cc88, 0x8ff3: 0x00311888,
+-	0x8ff4: 0x40311820, 0x8ff5: 0x00313488, 0x8ff6: 0x40313420, 0x8ff7: 0xe00032cf,
+-	0x8ff8: 0x00316e88, 0x8ff9: 0x40316e20, 0x8ffa: 0x40317820, 0x8ffb: 0x4031a620,
+-	0x8ffc: 0x0031bc88, 0x8ffd: 0x4031bc20, 0x8ffe: 0xe0000fc9, 0x8fff: 0x40319420,
+-	// Block 0x240, offset 0x9000
+-	0x9000: 0x40321220, 0x9001: 0x40321a20, 0x9002: 0x40322220, 0x9003: 0x40322a20,
+-	0x9004: 0xe0000ad5, 0x9005: 0xe0000ad1, 0x9006: 0xe0000acd, 0x9007: 0xf0000a0a,
+-	0x9008: 0xf000040a, 0x9009: 0xf0000404, 0x900a: 0xf0000a0a, 0x900b: 0xf000040a,
+-	0x900c: 0xf0000404, 0x900d: 0xe0000947, 0x900e: 0xe0000944, 0x900f: 0xe0000c3d,
+-	0x9010: 0xe0000c3a, 0x9011: 0xe0000dcc, 0x9012: 0xe0000dc9, 0x9013: 0xe0000ff3,
+-	0x9014: 0xe0000ff0, 0x9015: 0xe00025e4, 0x9016: 0xe00025e1, 0x9017: 0xe00025d2,
+-	0x9018: 0xe00025cf, 0x9019: 0xe00025de, 0x901a: 0xe00025db, 0x901b: 0xe00025d8,
+-	0x901c: 0xe00025d5, 0x901d: 0x402cae20, 0x901e: 0xe00032dd, 0x901f: 0xe00032da,
+-	0x9020: 0xe0000976, 0x9021: 0xe0000972, 0x9022: 0xe0002608, 0x9023: 0xe0002605,
+-	0x9024: 0xe00032bd, 0x9025: 0xe00032ba, 0x9026: 0xe0000bbe, 0x9027: 0xe0000bbb,
+-	0x9028: 0xe0000c99, 0x9029: 0xe0000c96, 0x902a: 0xe0000e20, 0x902b: 0xe0000e1d,
+-	0x902c: 0xe0000e27, 0x902d: 0xe0000e23, 0x902e: 0xe00032d6, 0x902f: 0xe00032d2,
+-	0x9030: 0xe0000c8d, 0x9031: 0xf0000a0a, 0x9032: 0xf000040a, 0x9033: 0xf0000404,
+-	0x9034: 0xe0000bac, 0x9035: 0xe0000ba9, 0x9036: 0x002d7888, 0x9037: 0x00319488,
+-	0x9038: 0xe0000d57, 0x9039: 0xe0000d54, 0x903a: 0xe00025ea, 0x903b: 0xe00025e7,
+-	0x903c: 0xe00032e3, 0x903d: 0xe00032e0, 0x903e: 0xe00032f5, 0x903f: 0xe00032f2,
+-	// Block 0x241, offset 0x9040
+-	0x9040: 0xe000098f, 0x9041: 0xe000098c, 0x9042: 0xe0000995, 0x9043: 0xe0000992,
+-	0x9044: 0xe0000b62, 0x9045: 0xe0000b5f, 0x9046: 0xe0000b68, 0x9047: 0xe0000b65,
+-	0x9048: 0xe0000c6c, 0x9049: 0xe0000c69, 0x904a: 0xe0000c72, 0x904b: 0xe0000c6f,
+-	0x904c: 0xe0000e4a, 0x904d: 0xe0000e47, 0x904e: 0xe0000e50, 0x904f: 0xe0000e4d,
+-	0x9050: 0xe0000ee8, 0x9051: 0xe0000ee5, 0x9052: 0xe0000eee, 0x9053: 0xe0000eeb,
+-	0x9054: 0xe0001053, 0x9055: 0xe0001050, 0x9056: 0xe0001059, 0x9057: 0xe0001056,
+-	0x9058: 0xe0000f61, 0x9059: 0xe0000f5e, 0x905a: 0xe0000fa5, 0x905b: 0xe0000fa2,
+-	0x905c: 0x00312288, 0x905d: 0x40312220, 0x905e: 0xe0000bf4, 0x905f: 0xe0000bf1,
+-	0x9060: 0x002ebc88, 0x9061: 0x402c8c20, 0x9062: 0x002f2288, 0x9063: 0x402f2220,
+-	0x9064: 0x00314088, 0x9065: 0x40314020, 0x9066: 0xe000096f, 0x9067: 0xe000096c,
+-	0x9068: 0xe0000b32, 0x9069: 0xe0000b2f, 0x906a: 0xe00032ef, 0x906b: 0xe00032ec,
+-	0x906c: 0xe0000dfd, 0x906d: 0xe0000df9, 0x906e: 0xe0000e04, 0x906f: 0xe0000e01,
+-	0x9070: 0xe0000e0b, 0x9071: 0xe0000e07, 0x9072: 0xe0001129, 0x9073: 0xe0001126,
+-	0x9074: 0x402e5e20, 0x9075: 0x402ed020, 0x9076: 0x40305a20, 0x9077: 0x402dd420,
+-	0x9078: 0xe0000abf, 0x9079: 0xe0000ec4, 0x907a: 0x002be888, 0x907b: 0x002c4488,
+-	0x907c: 0x402c4420, 0x907d: 0x002e3888, 0x907e: 0x00303e88, 0x907f: 0x402ffc20,
+-	// Block 0x242, offset 0x9080
+-	0x9080: 0x402f8220, 0x9081: 0x402fd820, 0x9082: 0x402ff420, 0x9083: 0x40300820,
+-	0x9084: 0x402df620, 0x9085: 0x40301a20, 0x9086: 0x40302420, 0x9087: 0x40306420,
+-	0x9088: 0x40305220, 0x9089: 0x40307c20, 0x908a: 0x4030b420, 0x908b: 0x4030cc20,
+-	0x908c: 0x4030da20, 0x908d: 0x4030ee20, 0x908e: 0x402e7a20, 0x908f: 0x40310820,
+-	0x9090: 0x40314820, 0x9091: 0x40315020, 0x9092: 0xe00032cc, 0x9093: 0x40318020,
+-	0x9094: 0x4031cc20, 0x9095: 0x4031e820, 0x9096: 0x40320a20, 0x9097: 0x40323220,
+-	0x9098: 0x40323a20, 0x9099: 0x402c1220, 0x909a: 0x402cf820, 0x909b: 0x402d4c20,
+-	0x909c: 0x402d7020, 0x909d: 0x402de620, 0x909e: 0x402e1a20, 0x909f: 0x402e2a20,
+-	0x90a0: 0x402f6220, 0x90a1: 0x4031fa20, 0x90a2: 0x40320220, 0x90a3: 0xe0000aca,
+-	0x90a4: 0xe0000adc, 0x90a5: 0xe0000ad9, 0x90a6: 0xe0000fcc, 0x90a7: 0xe0000fcf,
+-	0x90a8: 0xe0000fba, 0x90a9: 0xe0000ba1, 0x90aa: 0xe0000d11, 0x90ab: 0xe0000d18,
+-	0x90ac: 0x40324220, 0x90ad: 0x40324a20, 0x90ae: 0x40309020, 0x90af: 0x40309820,
+-	0x90b0: 0x002d6894, 0x90b1: 0x002d8094, 0x90b2: 0x002dcc94, 0x90b3: 0x002f7a94,
+-	0x90b4: 0x002f9894, 0x90b5: 0x002fac94, 0x90b6: 0x002fd894, 0x90b7: 0x0030e294,
+-	0x90b8: 0x00310094, 0x90b9: 0x40064020, 0x90ba: 0x40064420, 0x90bb: 0x402d9620,
+-	0x90bc: 0x4031de20, 0x90bd: 0x402d9820, 0x90be: 0x4031e220, 0x90bf: 0x4031f020,
+-	// Block 0x243, offset 0x90c0
+-	0x90c0: 0xe0000d24, 0x90c1: 0xe0000d21, 0x90c2: 0xe0000d2a, 0x90c3: 0xe0000d27,
+-	0x90c4: 0xe0000d69, 0x90c5: 0xe0000d66, 0x90c6: 0xe0000d7b, 0x90c7: 0xe0000d78,
+-	0x90c8: 0xe0000d87, 0x90c9: 0xe0000d84, 0x90ca: 0xe0000d81, 0x90cb: 0xe0000d7e,
+-	0x90cc: 0xe0000ded, 0x90cd: 0xe0000de9, 0x90ce: 0xe00032e9, 0x90cf: 0xe00032e6,
+-	0x90d0: 0xe0000e3d, 0x90d1: 0xe0000e39, 0x90d2: 0xe0000e35, 0x90d3: 0xe0000e31,
+-	0x90d4: 0xe0000ea7, 0x90d5: 0xe0000ea4, 0x90d6: 0xe0000ead, 0x90d7: 0xe0000eaa,
+-	0x90d8: 0xe0000ed6, 0x90d9: 0xe0000ed3, 0x90da: 0xe0000ef4, 0x90db: 0xe0000ef1,
+-	0x90dc: 0xe0000efb, 0x90dd: 0xe0000ef7, 0x90de: 0xe0000f02, 0x90df: 0xe0000eff,
+-	0x90e0: 0xe0000f41, 0x90e1: 0xe0000f3e, 0x90e2: 0xe0000f53, 0x90e3: 0xe0000f50,
+-	0x90e4: 0xe0000f26, 0x90e5: 0xe0000f22, 0x90e6: 0xe0000f3a, 0x90e7: 0xe0000f36,
+-	0x90e8: 0xe0000f5a, 0x90e9: 0xe0000f56, 0x90ea: 0xe0000f93, 0x90eb: 0xe0000f90,
+-	0x90ec: 0xe0000f9f, 0x90ed: 0xe0000f9c, 0x90ee: 0xe0000fb1, 0x90ef: 0xe0000fae,
+-	0x90f0: 0xe0000fab, 0x90f1: 0xe0000fa8, 0x90f2: 0xe0001093, 0x90f3: 0xe0001090,
+-	0x90f4: 0xe000109f, 0x90f5: 0xe000109c, 0x90f6: 0xe0001099, 0x90f7: 0xe0001096,
+-	0x90f8: 0xe0001032, 0x90f9: 0xe000102e, 0x90fa: 0xe00025e4, 0x90fb: 0xe00025e1,
+-	0x90fc: 0xe00010a9, 0x90fd: 0xe00010a6, 0x90fe: 0xe00010af, 0x90ff: 0xe00010ac,
+-	// Block 0x244, offset 0x9100
+-	0x9100: 0xe00009bc, 0x9101: 0xe00009c0, 0x9102: 0x002c3a8b, 0x9103: 0xf0000a04,
+-	0x9104: 0x40081c20, 0x9105: 0xe0000a5e, 0x9106: 0xe0000a62, 0x9107: 0x002cc28a,
+-	0x9108: 0x40081e20, 0x9109: 0xf0000a04, 0x910a: 0x002d2285, 0x910b: 0x002d688b,
+-	0x910c: 0x002d688b, 0x910d: 0x002d688b, 0x910e: 0x002d6885, 0x910f: 0xf0000202,
+-	0x9110: 0x002d9a8b, 0x9111: 0x002d9a8b, 0x9112: 0x002e228b, 0x9113: 0x002e2285,
+-	0x9114: 0x40082020, 0x9115: 0x002e9e8b, 0x9116: 0xf000040a, 0x9117: 0x40082220,
+-	0x9118: 0x40082420, 0x9119: 0x002f2c8b, 0x911a: 0x002f568b, 0x911b: 0x002f7a8b,
+-	0x911c: 0x002f7a8b, 0x911d: 0x002f7a8b, 0x911e: 0x40082620, 0x911f: 0x40082820,
+-	0x9120: 0xf0001414, 0x9121: 0xe0000fbd, 0x9122: 0xf0001414, 0x9123: 0x40082a20,
+-	0x9124: 0x00312a8b, 0x9125: 0x40082c20, 0x9126: 0x0032a288, 0x9127: 0x40082e20,
+-	0x9128: 0x00312a8b, 0x9129: 0x40083020, 0x912a: 0x002dfe88, 0x912b: 0x00320c83,
+-	0x912c: 0x002c0a8b, 0x912d: 0x002c3a8b, 0x912e: 0x40083220, 0x912f: 0x002c9885,
+-	0x9130: 0x002c988b, 0x9131: 0x002d088b, 0x9132: 0x002d1e88, 0x9133: 0x002e828b,
+-	0x9134: 0x002ee285, 0x9135: 0x00389084, 0x9136: 0x00389284, 0x9137: 0x00389484,
+-	0x9138: 0x00389684, 0x9139: 0x002d9a85, 0x913a: 0x40083420, 0x913b: 0xe0000b95,
+-	0x913c: 0x00327e85, 0x913d: 0x00325685, 0x913e: 0x0032568b, 0x913f: 0x00327e8b,
+-	// Block 0x245, offset 0x9140
+-	0x9140: 0xa0000000, 0x9141: 0xa0000000, 0x9142: 0xa0000000, 0x9143: 0xa0000000,
+-	0x9144: 0xa0000000, 0x9145: 0xa0000000, 0x9146: 0xa0000000, 0x9147: 0xa0000000,
+-	0x9148: 0xa0000000, 0x9149: 0x40020020, 0x914a: 0x40020220, 0x914b: 0x40020420,
+-	0x914c: 0x40020620, 0x914d: 0x40020820, 0x914e: 0xa0000000, 0x914f: 0xa0000000,
+-	0x9150: 0xa0000000, 0x9151: 0xa0000000, 0x9152: 0xa0000000, 0x9153: 0xa0000000,
+-	0x9154: 0xa0000000, 0x9155: 0xa0000000, 0x9156: 0xa0000000, 0x9157: 0xa0000000,
+-	0x9158: 0xa0000000, 0x9159: 0xa0000000, 0x915a: 0xa0000000, 0x915b: 0xa0000000,
+-	0x915c: 0xa0000000, 0x915d: 0xa0000000, 0x915e: 0xa0000000, 0x915f: 0xa0000000,
+-	0x9160: 0x40021220, 0x9161: 0x4002ba20, 0x9162: 0x4003e020, 0x9163: 0x4004ea20,
+-	0x9164: 0x4027de20, 0x9165: 0x4004ec20, 0x9166: 0x4004e620, 0x9167: 0x4003d220,
+-	0x9168: 0x4003f420, 0x9169: 0x4003f620, 0x916a: 0x4004d820, 0x916b: 0x40093820,
+-	0x916c: 0x40024020, 0x916d: 0x40021a20, 0x916e: 0x4002e420, 0x916f: 0x4004e220,
+-	0x9170: 0x4029cc20, 0x9171: 0x4029ce20, 0x9172: 0x4029d020, 0x9173: 0x4029d220,
+-	0x9174: 0x4029d420, 0x9175: 0x4029d620, 0x9176: 0x4029d820, 0x9177: 0x4029da20,
+-	0x9178: 0x4029dc20, 0x9179: 0x4029de20, 0x917a: 0x40026c20, 0x917b: 0x40026220,
+-	0x917c: 0x40094020, 0x917d: 0x40094220, 0x917e: 0x40094420, 0x917f: 0x4002c420,
+-	// Block 0x246, offset 0x9180
+-	0x9180: 0x4004d620, 0x9181: 0x002bde88, 0x9182: 0x002c0a88, 0x9183: 0x002c3a88,
+-	0x9184: 0x002c6288, 0x9185: 0x002c9888, 0x9186: 0x002d0888, 0x9187: 0x002d2288,
+-	0x9188: 0x002d6888, 0x9189: 0x002d9a88, 0x918a: 0x002dcc88, 0x918b: 0x002dfe88,
+-	0x918c: 0xc0030002, 0x918d: 0x002e8288, 0x918e: 0xc5712813, 0x918f: 0x002ee288,
+-	0x9190: 0x002f2c88, 0x9191: 0x002f5688, 0x9192: 0x002f7a88, 0x9193: 0x002fe688,
+-	0x9194: 0x00302c88, 0x9195: 0x00306c88, 0x9196: 0x0030be88, 0x9197: 0x0030e288,
+-	0x9198: 0x0030f688, 0x9199: 0x00310088, 0x919a: 0x00312a88, 0x919b: 0x4003f820,
+-	0x919c: 0x4004e420, 0x919d: 0x4003fa20, 0x919e: 0x40062420, 0x919f: 0x40021620,
+-	0x91a0: 0x40061e20, 0x91a1: 0x402bde20, 0x91a2: 0x402c0a20, 0x91a3: 0x402c3a20,
+-	0x91a4: 0x402c6220, 0x91a5: 0x402c9820, 0x91a6: 0x402d0820, 0x91a7: 0x402d2220,
+-	0x91a8: 0x402d6820, 0x91a9: 0x402d9a20, 0x91aa: 0x402dcc20, 0x91ab: 0x402dfe20,
+-	0x91ac: 0xc0000002, 0x91ad: 0x402e8220, 0x91ae: 0xc56e27e2, 0x91af: 0x402ee220,
+-	0x91b0: 0x402f2c20, 0x91b1: 0x402f5620, 0x91b2: 0x402f7a20, 0x91b3: 0x402fe620,
+-	0x91b4: 0x40302c20, 0x91b5: 0x40306c20, 0x91b6: 0x4030be20, 0x91b7: 0x4030e220,
+-	0x91b8: 0x4030f620, 0x91b9: 0x40310020, 0x91ba: 0x40312a20, 0x91bb: 0x4003fc20,
+-	0x91bc: 0x40094820, 0x91bd: 0x4003fe20, 0x91be: 0x40094c20, 0x91bf: 0xa0000000,
+-	// Block 0x247, offset 0x91c0
+-	0x91c1: 0x40417021, 0x91c2: 0x40417020, 0x91c3: 0x40417220,
+-	0x91c5: 0x40417020, 0x91c6: 0x40417220, 0x91c7: 0x40417420,
+-	0x91c8: 0x40417620, 0x91c9: 0x40417820, 0x91ca: 0x40417a20, 0x91cb: 0x40417c20,
+-	0x91cc: 0x40418020, 0x91cd: 0x40418420, 0x91cf: 0x40418620,
+-	0x91d0: 0x40418820, 0x91d1: 0x40418a20, 0x91d3: 0x40418c20,
+-	0x91d4: 0x40418e20, 0x91d5: 0x40419020, 0x91d6: 0x40419220, 0x91d7: 0x40419420,
+-	0x91d8: 0x40419620, 0x91d9: 0x40419820, 0x91da: 0x40419a20, 0x91db: 0x40419c20,
+-	0x91dc: 0x40419e20, 0x91dd: 0x4041a020, 0x91de: 0x4041a220, 0x91df: 0x4041a420,
+-	0x91e0: 0x4041a620, 0x91e1: 0x4041a820, 0x91e2: 0x4041aa20, 0x91e3: 0x4041ac20,
+-	0x91e4: 0x4041ae20, 0x91e5: 0x4041b020, 0x91e6: 0x4041b220, 0x91e7: 0x4041b420,
+-	0x91e8: 0x4041b620, 0x91ea: 0x4041b820, 0x91eb: 0x4041ba20,
+-	0x91ec: 0x4041bc20, 0x91ed: 0x4041be20, 0x91ee: 0x4041c020, 0x91ef: 0x4041c220,
+-	0x91f0: 0x4041c420, 0x91f2: 0x4041c620, 0x91f3: 0x4041d220,
+-	0x91f5: 0x4041c820, 0x91f6: 0x4041ca20, 0x91f7: 0x4041cc20,
+-	0x91f8: 0x4041ce20, 0x91f9: 0x4041d020,
+-	0x91fc: 0xa070f102, 0x91fd: 0x4041d420, 0x91fe: 0x4041d620, 0x91ff: 0x4041d820,
+-	// Block 0x248, offset 0x9200
+-	0x9200: 0xa0000000, 0x9201: 0xa0000000, 0x9202: 0xa0000000, 0x9203: 0xa0000000,
+-	0x9204: 0xa0000000, 0x9205: 0xa0000000, 0x9206: 0xa0000000, 0x9207: 0xa0000000,
+-	0x9208: 0xa0000000, 0x9209: 0x40020020, 0x920a: 0x40020220, 0x920b: 0x40020420,
+-	0x920c: 0x40020620, 0x920d: 0x40020820, 0x920e: 0xa0000000, 0x920f: 0xa0000000,
+-	0x9210: 0xa0000000, 0x9211: 0xa0000000, 0x9212: 0xa0000000, 0x9213: 0xa0000000,
+-	0x9214: 0xa0000000, 0x9215: 0xa0000000, 0x9216: 0xa0000000, 0x9217: 0xa0000000,
+-	0x9218: 0xa0000000, 0x9219: 0xa0000000, 0x921a: 0xa0000000, 0x921b: 0xa0000000,
+-	0x921c: 0xa0000000, 0x921d: 0xa0000000, 0x921e: 0xa0000000, 0x921f: 0xa0000000,
+-	0x9220: 0x40021220, 0x9221: 0x4002ba20, 0x9222: 0x4003e020, 0x9223: 0x4004ea20,
+-	0x9224: 0x4027de20, 0x9225: 0x4004ec20, 0x9226: 0x4004e620, 0x9227: 0xc57b26f2,
+-	0x9228: 0x4003f420, 0x9229: 0x4003f620, 0x922a: 0x4004d820, 0x922b: 0x40093820,
+-	0x922c: 0x40024020, 0x922d: 0x40021a20, 0x922e: 0x4002e420, 0x922f: 0x4004e220,
+-	0x9230: 0x4029cc20, 0x9231: 0x4029ce20, 0x9232: 0x4029d020, 0x9233: 0x4029d220,
+-	0x9234: 0x4029d420, 0x9235: 0x4029d620, 0x9236: 0x4029d820, 0x9237: 0x4029da20,
+-	0x9238: 0x4029dc20, 0x9239: 0x4029de20, 0x923a: 0x40026c20, 0x923b: 0x40026220,
+-	0x923c: 0x40094020, 0x923d: 0x40094220, 0x923e: 0x40094420, 0x923f: 0x4002c420,
+-	// Block 0x249, offset 0x9240
+-	0x9240: 0x4004d620, 0x9241: 0x002bde88, 0x9242: 0x002c0a88, 0x9243: 0x002c3a88,
+-	0x9244: 0x002c6288, 0x9245: 0x002c9888, 0x9246: 0x002d0888, 0x9247: 0x002d2288,
+-	0x9248: 0x002d6888, 0x9249: 0x002d9a88, 0x924a: 0x002dcc88, 0x924b: 0x002dfe88,
+-	0x924c: 0xc0030002, 0x924d: 0x002e8288, 0x924e: 0x002e9e88, 0x924f: 0x002ee288,
+-	0x9250: 0x002f2c88, 0x9251: 0x002f5688, 0x9252: 0x002f7a88, 0x9253: 0xc57509c2,
+-	0x9254: 0xc38a2722, 0x9255: 0x00306c88, 0x9256: 0x0030be88, 0x9257: 0x0030e288,
+-	0x9258: 0x0030f688, 0x9259: 0x00310088, 0x925a: 0x00312a88, 0x925b: 0x4003f820,
+-	0x925c: 0x4004e420, 0x925d: 0x4003fa20, 0x925e: 0x40062420, 0x925f: 0x40021620,
+-	0x9260: 0x40061e20, 0x9261: 0x402bde20, 0x9262: 0x402c0a20, 0x9263: 0x402c3a20,
+-	0x9264: 0x402c6220, 0x9265: 0x402c9820, 0x9266: 0x402d0820, 0x9267: 0x402d2220,
+-	0x9268: 0x402d6820, 0x9269: 0x402d9a20, 0x926a: 0x402dcc20, 0x926b: 0x402dfe20,
+-	0x926c: 0xc0000002, 0x926d: 0x402e8220, 0x926e: 0x402e9e20, 0x926f: 0x402ee220,
+-	0x9270: 0x402f2c20, 0x9271: 0x402f5620, 0x9272: 0x402f7a20, 0x9273: 0xc34109b1,
+-	0x9274: 0xc3882711, 0x9275: 0x40306c20, 0x9276: 0x4030be20, 0x9277: 0x4030e220,
+-	0x9278: 0x4030f620, 0x9279: 0x40310020, 0x927a: 0x40312a20, 0x927b: 0x4003fc20,
+-	0x927c: 0x40094820, 0x927d: 0x4003fe20, 0x927e: 0x40094c20, 0x927f: 0xa0000000,
+-	// Block 0x24a, offset 0x9280
+-	0x9280: 0x402c1a20, 0x9281: 0x002c0c83, 0x9282: 0x002c3288, 0x9283: 0x402c3220,
+-	0x9284: 0x0031c488, 0x9285: 0x4031c420, 0x9286: 0x002efa88, 0x9287: 0x002c4e88,
+-	0x9288: 0x402c4e20, 0x9289: 0x002c7288, 0x928a: 0x002c6483, 0x928b: 0x002c8488,
+-	0x928c: 0x402c8420, 0x928d: 0xe000115c, 0x928e: 0x002cae88, 0x928f: 0x002cb888,
+-	0x9290: 0x002cc288, 0x9291: 0x002d1688, 0x9292: 0x402d1620, 0x9293: 0x002d4488,
+-	0x9294: 0x002d5888, 0x9295: 0x402d7820, 0x9296: 0x002dc288, 0x9297: 0x002db688,
+-	0x9298: 0x002e0083, 0x9299: 0x402e0020, 0x929a: 0x402e3820, 0x929b: 0x402e7220,
+-	0x929c: 0x0030a088, 0x929d: 0x002eb488, 0x929e: 0x402ebc20, 0x929f: 0x002f1088,
+-	0x92a0: 0xe0000e56, 0x92a1: 0xe0000e53, 0x92a2: 0x002d6088, 0x92a3: 0x402d6020,
+-	0x92a4: 0x002f3e88, 0x92a5: 0x402f3e20, 0x92a6: 0x002f8288, 0x92a7: 0x0031b488,
+-	0x92a8: 0x4031b420, 0x92a9: 0x00300888, 0x92aa: 0x40301220, 0x92ab: 0x40304220,
+-	0x92ac: 0x00304a88, 0x92ad: 0x40304a20, 0x92ae: 0x00305288, 0x92af: 0xe000105f,
+-	0x92b0: 0xe000105c, 0x92b1: 0x0030b488, 0x92b2: 0x0030cc88, 0x92b3: 0x00310285,
+-	0x92b4: 0x40310220, 0x92b5: 0x00313488, 0x92b6: 0x40313420, 0x92b7: 0x00316488,
+-	0x92b8: 0x00316e88, 0x92b9: 0x40316e20, 0x92ba: 0x40317820, 0x92bb: 0x4031a620,
+-	0x92bc: 0x0031bc88, 0x92bd: 0x4031bc20, 0x92be: 0xe0000fc9, 0x92bf: 0x40319420,
+-	// Block 0x24b, offset 0x92c0
+-	0x92c0: 0x40315820, 0x92c1: 0x0031d488, 0x92c2: 0x4031d420, 0x92c3: 0x002c1a88,
+-	0x92c4: 0x00307c88, 0x92c5: 0x0030da88, 0x92c6: 0x002ca288, 0x92c7: 0x402ca220,
+-	0x92c8: 0x002dde88, 0x92c9: 0x402dde20, 0x92ca: 0x002f6a88, 0x92cb: 0x402f6a20,
+-	0x92cc: 0x002f8e88, 0x92cd: 0x402f8e20, 0x92ce: 0x00311088, 0x92cf: 0x40311020,
+-	0x92d0: 0x402bf020, 0x92d1: 0x402bf820, 0x92d2: 0x402c0220, 0x92d3: 0x402c0c20,
+-	0x92d4: 0x402efa20, 0x92d5: 0x402c5620, 0x92d6: 0x402c7220, 0x92d7: 0x402c6420,
+-	0x92d8: 0x402ccc20, 0x92d9: 0x402cb820, 0x92da: 0x402cd420, 0x92db: 0x402cc220,
+-	0x92dc: 0x402cdc20, 0x92dd: 0x402ce820, 0x92de: 0x402cf020, 0x92df: 0x402dee20,
+-	0x92e0: 0x402d4420, 0x92e1: 0x402d2a20, 0x92e2: 0x402d3220, 0x92e3: 0x402d5820,
+-	0x92e4: 0x402d0020, 0x92e5: 0x40308820, 0x92e6: 0x402d8020, 0x92e7: 0x402d8e20,
+-	0x92e8: 0x402db620, 0x92e9: 0x402dc220, 0x92ea: 0x402daa20, 0x92eb: 0x402e4220,
+-	0x92ec: 0x402e4a20, 0x92ed: 0x402e5420, 0x92ee: 0x402e6820, 0x92ef: 0x4030a020,
+-	0x92f0: 0x4030ac20, 0x92f1: 0x402e9020, 0x92f2: 0x402eb420, 0x92f3: 0x402ec820,
+-	0x92f4: 0x402ea620, 0x92f5: 0x402f1020, 0x92f6: 0x402eee20, 0x92f7: 0x402f1a20,
+-	0x92f8: 0x402f4c20, 0x92f9: 0x402f9820, 0x92fa: 0x402fa220, 0x92fb: 0x402fac20,
+-	0x92fc: 0x402fb620, 0x92fd: 0x402fbe20, 0x92fe: 0x402fc620, 0x92ff: 0x402fd020,
+-	// Block 0x24c, offset 0x9300
+-	0x9300: 0x402f8220, 0x9301: 0x402fd820, 0x9302: 0x402ff420, 0x9303: 0x40300820,
+-	0x9304: 0x402df620, 0x9305: 0x40301a20, 0x9306: 0x40302420, 0x9307: 0x40306420,
+-	0x9308: 0x40305220, 0x9309: 0x40307c20, 0x930a: 0x4030b420, 0x930b: 0x4030cc20,
+-	0x930c: 0x4030da20, 0x930d: 0x4030ee20, 0x930e: 0x402e7a20, 0x930f: 0x40310820,
+-	0x9310: 0x40314820, 0x9311: 0x40315020, 0x9312: 0x40316420, 0x9313: 0x40318020,
+-	0x9314: 0x4031cc20, 0x9315: 0x4031e820, 0x9316: 0x40320a20, 0x9317: 0x40323220,
+-	0x9318: 0x40323a20, 0x9319: 0x402c1220, 0x931a: 0x402cf820, 0x931b: 0x402d4c20,
+-	0x931c: 0x402d7020, 0x931d: 0x402de620, 0x931e: 0x402e1a20, 0x931f: 0x402e2a20,
+-	0x9320: 0x402f6220, 0x9321: 0x4031fa20, 0x9322: 0x40320220, 0x9323: 0xe0000aca,
+-	0x9324: 0xe0000adc, 0x9325: 0xe0000ad9, 0x9326: 0xe0000fcc, 0x9327: 0xe0000fcf,
+-	0x9328: 0xe0000fba, 0x9329: 0xe0000ba1, 0x932a: 0xe0000d11, 0x932b: 0xe0000d18,
+-	0x932c: 0x40324220, 0x932d: 0x40324a20, 0x932e: 0x40309020, 0x932f: 0x40309820,
+-	0x9330: 0x002d6894, 0x9331: 0x002d8094, 0x9332: 0x002dcc94, 0x9333: 0x002f7a94,
+-	0x9334: 0x002f9894, 0x9335: 0x002fac94, 0x9336: 0x002fd894, 0x9337: 0x0030e294,
+-	0x9338: 0x00310094, 0x9339: 0x40064020, 0x933a: 0x40064420, 0x933b: 0x402d9620,
+-	0x933c: 0xc57826f2, 0x933d: 0x402d9820, 0x933e: 0x4031e220, 0x933f: 0x4031f020,
+-	// Block 0x24d, offset 0x9340
+-	0x9340: 0xa0000000, 0x9341: 0xa0000000, 0x9342: 0xa0000000, 0x9343: 0xa0000000,
+-	0x9344: 0xa0000000, 0x9345: 0xa0000000, 0x9346: 0xa0000000, 0x9347: 0xa0000000,
+-	0x9348: 0xa0000000, 0x9349: 0x40020020, 0x934a: 0x40020220, 0x934b: 0x40020420,
+-	0x934c: 0x40020620, 0x934d: 0x40020820, 0x934e: 0xa0000000, 0x934f: 0xa0000000,
+-	0x9350: 0xa0000000, 0x9351: 0xa0000000, 0x9352: 0xa0000000, 0x9353: 0xa0000000,
+-	0x9354: 0xa0000000, 0x9355: 0xa0000000, 0x9356: 0xa0000000, 0x9357: 0xa0000000,
+-	0x9358: 0xa0000000, 0x9359: 0xa0000000, 0x935a: 0xa0000000, 0x935b: 0xa0000000,
+-	0x935c: 0xa0000000, 0x935d: 0xa0000000, 0x935e: 0xa0000000, 0x935f: 0xa0000000,
+-	0x9360: 0x40021220, 0x9361: 0x4002ba20, 0x9362: 0x4003e020, 0x9363: 0x4004ea20,
+-	0x9364: 0x4027de20, 0x9365: 0x4004ec20, 0x9366: 0x4004e620, 0x9367: 0x4003d220,
+-	0x9368: 0x4003f420, 0x9369: 0x4003f620, 0x936a: 0x4004d820, 0x936b: 0x40093820,
+-	0x936c: 0x40024020, 0x936d: 0x40021a20, 0x936e: 0x4002e420, 0x936f: 0x4004e220,
+-	0x9370: 0x4029cc20, 0x9371: 0x4029ce20, 0x9372: 0x4029d020, 0x9373: 0x4029d220,
+-	0x9374: 0x4029d420, 0x9375: 0x4029d620, 0x9376: 0x4029d820, 0x9377: 0x4029da20,
+-	0x9378: 0x4029dc20, 0x9379: 0x4029de20, 0x937a: 0x40026c20, 0x937b: 0x40026220,
+-	0x937c: 0x40094020, 0x937d: 0x40094220, 0x937e: 0x40094420, 0x937f: 0x4002c420,
+-	// Block 0x24e, offset 0x9380
+-	0x9380: 0x4004d620, 0x9381: 0x002bde83, 0x9382: 0x002c0a88, 0x9383: 0x002c3a88,
+-	0x9384: 0x002c6288, 0x9385: 0x002be083, 0x9386: 0x002d0888, 0x9387: 0x002d2288,
+-	0x9388: 0x002be883, 0x9389: 0x002be283, 0x938a: 0x002dcc88, 0x938b: 0x002bea83,
+-	0x938c: 0xc5810002, 0x938d: 0x002bee83, 0x938e: 0x002bf083, 0x938f: 0x002be483,
+-	0x9390: 0x002bf283, 0x9391: 0x002f5688, 0x9392: 0x002f7a88, 0x9393: 0x002fe688,
+-	0x9394: 0x00302c88, 0x9395: 0x002be683, 0x9396: 0x0030be88, 0x9397: 0x002bf483,
+-	0x9398: 0x0030f688, 0x9399: 0x00310088, 0x939a: 0x00312a88, 0x939b: 0x4003f820,
+-	0x939c: 0x4004e420, 0x939d: 0x4003fa20, 0x939e: 0x40062420, 0x939f: 0x40021620,
+-	0x93a0: 0x40061e20, 0x93a1: 0x402bde20, 0x93a2: 0x402c0a20, 0x93a3: 0x402c3a20,
+-	0x93a4: 0x402c6220, 0x93a5: 0x402be020, 0x93a6: 0x402d0820, 0x93a7: 0x402d2220,
+-	0x93a8: 0x402be820, 0x93a9: 0x402be220, 0x93aa: 0x402dcc20, 0x93ab: 0x402bea20,
+-	0x93ac: 0xc57e0002, 0x93ad: 0x402bee20, 0x93ae: 0x402bf020, 0x93af: 0x402be420,
+-	0x93b0: 0x402bf220, 0x93b1: 0x402f5620, 0x93b2: 0x402f7a20, 0x93b3: 0x402fe620,
+-	0x93b4: 0x40302c20, 0x93b5: 0x402be620, 0x93b6: 0x4030be20, 0x93b7: 0x402bf420,
+-	0x93b8: 0x4030f620, 0x93b9: 0x40310020, 0x93ba: 0x40312a20, 0x93bb: 0x4003fc20,
+-	0x93bc: 0x40094820, 0x93bd: 0x4003fe20, 0x93be: 0x40094c20, 0x93bf: 0xa0000000,
+-	// Block 0x24f, offset 0x93c0
+-	0x93c0: 0xe00032fb, 0x93c1: 0xe00032f8, 0x93c2: 0xe0003311, 0x93c3: 0xe0003335,
+-	0x93c4: 0xe000332e, 0x93c5: 0xe0003327, 0x93c6: 0xe00009dd, 0x93c7: 0xe0000a53,
+-	0x93c8: 0xe0003365, 0x93c9: 0xe000335f, 0x93ca: 0xe0003371, 0x93cb: 0xe000339d,
+-	0x93cc: 0xe000340b, 0x93cd: 0xe0003405, 0x93ce: 0xe0003417, 0x93cf: 0xe0003423,
+-	0x93d0: 0xe0000ab3, 0x93d1: 0xe00036b9, 0x93d2: 0xe000346a, 0x93d3: 0xe0003464,
+-	0x93d4: 0xe0003476, 0x93d5: 0xe00034b6, 0x93d6: 0xe00034a2, 0x93d7: 0x40093e20,
+-	0x93d8: 0xe0000e12, 0x93d9: 0xe000355a, 0x93da: 0xe0003554, 0x93db: 0xe0003566,
+-	0x93dc: 0xe0003578, 0x93dd: 0xe0001102, 0x93de: 0x00318888, 0x93df: 0xe0000f7b,
+-	0x93e0: 0xe00008f2, 0x93e1: 0xe00008ec, 0x93e2: 0xe000091e, 0x93e3: 0xe0000966,
+-	0x93e4: 0xe0000958, 0x93e5: 0xe000094a, 0x93e6: 0xe00009d5, 0x93e7: 0xe0000a4d,
+-	0x93e8: 0xe0003362, 0x93e9: 0xe000335c, 0x93ea: 0xe000336e, 0x93eb: 0xe000339a,
+-	0x93ec: 0xe0003408, 0x93ed: 0xe0003402, 0x93ee: 0xe0003414, 0x93ef: 0xe0003420,
+-	0x93f0: 0xe0000aad, 0x93f1: 0xe00036b6, 0x93f2: 0xe0003467, 0x93f3: 0xe0003461,
+-	0x93f4: 0xe0003473, 0x93f5: 0xe00034b3, 0x93f6: 0xe000349f, 0x93f7: 0x40093c20,
+-	0x93f8: 0xe0000e0f, 0x93f9: 0xe0003557, 0x93fa: 0xe0003551, 0x93fb: 0xe0003563,
+-	0x93fc: 0xe0003575, 0x93fd: 0xe00010ff, 0x93fe: 0x40318820, 0x93ff: 0xe0001114,
+-	// Block 0x250, offset 0x9400
+-	0x9400: 0xe0003342, 0x9401: 0xe0000980, 0x9402: 0xe00032fe, 0x9403: 0xe00008f8,
+-	0x9404: 0xe000333f, 0x9405: 0xe000097a, 0x9406: 0xe0000a38, 0x9407: 0xe0000a35,
+-	0x9408: 0xe0000a3e, 0x9409: 0xe0000a3b, 0x940a: 0xe0000a4a, 0x940b: 0xe0000a47,
+-	0x940c: 0xe0000a44, 0x940d: 0xe0000a41, 0x940e: 0xe0000a86, 0x940f: 0xe0000a83,
+-	0x9410: 0xe0000aaa, 0x9411: 0xe0000aa7, 0x9412: 0xe00033c3, 0x9413: 0xe00033c0,
+-	0x9414: 0xe000336b, 0x9415: 0xe0003368, 0x9416: 0xe00033a9, 0x9417: 0xe00033a6,
+-	0x9418: 0xe00033bd, 0x9419: 0xe00033ba, 0x941a: 0xe0003397, 0x941b: 0xe0003394,
+-	0x941c: 0xe0000bb8, 0x941d: 0xe0000bb5, 0x941e: 0xe0000bb2, 0x941f: 0xe0000baf,
+-	0x9420: 0xe0000bc4, 0x9421: 0xe0000bc1, 0x9422: 0xe0000bca, 0x9423: 0xe0000bc7,
+-	0x9424: 0xe000361e, 0x9425: 0xe000361b, 0x9426: 0xe0000c1b, 0x9427: 0xe0000c18,
+-	0x9428: 0xe0003431, 0x9429: 0xe000342e, 0x942a: 0xe0003440, 0x942b: 0xe000343d,
+-	0x942c: 0xe0003411, 0x942d: 0xe000340e, 0x942e: 0xe000343a, 0x942f: 0xe0003437,
+-	0x9430: 0xe0003434, 0x9431: 0x402da220, 0x9432: 0xe0002575, 0x9433: 0xe0003010,
+-	0x9434: 0xe0000c8a, 0x9435: 0xe0000c87, 0x9436: 0xe0003657, 0x9437: 0xe0003654,
+-	0x9438: 0x402f7220, 0x9439: 0xe0003669, 0x943a: 0xe0003666, 0x943b: 0xe0003675,
+-	0x943c: 0xe0003672, 0x943d: 0xe000366f, 0x943e: 0xe000366c, 0x943f: 0xe0000d04,
+-	// Block 0x251, offset 0x9440
+-	0x9440: 0xe0000cfe, 0x9441: 0xe0000cf8, 0x9442: 0xe0000cf5, 0x9443: 0xe00036a7,
+-	0x9444: 0xe00036a4, 0x9445: 0xe00036c5, 0x9446: 0xe00036c2, 0x9447: 0xe00036b3,
+-	0x9448: 0xe00036b0, 0x9449: 0xe00030dd, 0x944a: 0x002eda88, 0x944b: 0x402eda20,
+-	0x944c: 0xe00034f0, 0x944d: 0xe00034ed, 0x944e: 0xe0003470, 0x944f: 0xe000346d,
+-	0x9450: 0xe00034b0, 0x9451: 0xe00034ad, 0x9452: 0xe0000e93, 0x9453: 0xe0000e8f,
+-	0x9454: 0xe0000eca, 0x9455: 0xe0000ec7, 0x9456: 0xe0000edc, 0x9457: 0xe0000ed9,
+-	0x9458: 0xe0000ed0, 0x9459: 0xe0000ecd, 0x945a: 0xe0000f1f, 0x945b: 0xe0000f1c,
+-	0x945c: 0xe0000f2d, 0x945d: 0xe0000f2a, 0x945e: 0xe0000f47, 0x945f: 0xe0000f44,
+-	0x9460: 0xe0000f33, 0x9461: 0xe0000f30, 0x9462: 0xe0000f99, 0x9463: 0xe0000f96,
+-	0x9464: 0xe0000f8a, 0x9465: 0xe0000f87, 0x9466: 0x00303688, 0x9467: 0x40303620,
+-	0x9468: 0xe00035a4, 0x9469: 0xe00035a1, 0x946a: 0xe00035b8, 0x946b: 0xe00035b5,
+-	0x946c: 0xe0003560, 0x946d: 0xe000355d, 0x946e: 0xe0003572, 0x946f: 0xe000356f,
+-	0x9470: 0xe000359e, 0x9471: 0xe000359b, 0x9472: 0xe00035b2, 0x9473: 0xe00035af,
+-	0x9474: 0xe00036ef, 0x9475: 0xe00036ec, 0x9476: 0xe000110e, 0x9477: 0xe000110b,
+-	0x9478: 0xe0001117, 0x9479: 0xe000113b, 0x947a: 0xe0001138, 0x947b: 0xe000114d,
+-	0x947c: 0xe000114a, 0x947d: 0xe0001147, 0x947e: 0xe0001144, 0x947f: 0xe0000f64,
+-	// Block 0x252, offset 0x9480
+-	0x9480: 0x402c1a20, 0x9481: 0x002c2a88, 0x9482: 0x002c3288, 0x9483: 0x402c3220,
+-	0x9484: 0x0031c488, 0x9485: 0x4031c420, 0x9486: 0x002efa88, 0x9487: 0x002c4e88,
+-	0x9488: 0x402c4e20, 0x9489: 0x002c7288, 0x948a: 0x002c7a88, 0x948b: 0x002c8488,
+-	0x948c: 0x402c8420, 0x948d: 0xe000115c, 0x948e: 0x002cae88, 0x948f: 0x002cb888,
+-	0x9490: 0x002cc288, 0x9491: 0x002d1688, 0x9492: 0x402d1620, 0x9493: 0x002d4488,
+-	0x9494: 0x002d5888, 0x9495: 0x402d7820, 0x9496: 0x002dc288, 0x9497: 0x002db688,
+-	0x9498: 0x002e0a88, 0x9499: 0x402e0a20, 0x949a: 0x402e3820, 0x949b: 0x402e7220,
+-	0x949c: 0x0030a088, 0x949d: 0x002eb488, 0x949e: 0x402ebc20, 0x949f: 0x002f1088,
+-	0x94a0: 0xe0003518, 0x94a1: 0xe0003515, 0x94a2: 0x002d6088, 0x94a3: 0x402d6020,
+-	0x94a4: 0x002f3e88, 0x94a5: 0x402f3e20, 0x94a6: 0x002f8288, 0x94a7: 0x0031b488,
+-	0x94a8: 0x4031b420, 0x94a9: 0x00300888, 0x94aa: 0x40301220, 0x94ab: 0x40304220,
+-	0x94ac: 0x00304a88, 0x94ad: 0x40304a20, 0x94ae: 0x00305288, 0x94af: 0xe00035d8,
+-	0x94b0: 0xe00035d5, 0x94b1: 0x0030b488, 0x94b2: 0x0030cc88, 0x94b3: 0x00311888,
+-	0x94b4: 0x40311820, 0x94b5: 0x00313488, 0x94b6: 0x40313420, 0x94b7: 0x00316488,
+-	0x94b8: 0x00316e88, 0x94b9: 0x40316e20, 0x94ba: 0x40317820, 0x94bb: 0x4031a620,
+-	0x94bc: 0x0031bc88, 0x94bd: 0x4031bc20, 0x94be: 0xe0000fc9, 0x94bf: 0x40319420,
+-	// Block 0x253, offset 0x94c0
+-	0x94c0: 0x40321220, 0x94c1: 0x40321a20, 0x94c2: 0x40322220, 0x94c3: 0x40322a20,
+-	0x94c4: 0xe0000ad5, 0x94c5: 0xe0000ad1, 0x94c6: 0xe0000acd, 0x94c7: 0xe0003040,
+-	0x94c8: 0xe000303d, 0x94c9: 0xe000303a, 0x94ca: 0xe0003088, 0x94cb: 0xe0003085,
+-	0x94cc: 0xe0003082, 0x94cd: 0xe0003324, 0x94ce: 0xe0000944, 0x94cf: 0xe000341d,
+-	0x94d0: 0xe000341a, 0x94d1: 0xe000349c, 0x94d2: 0xe0003499, 0x94d3: 0xe000356c,
+-	0x94d4: 0xe0003569, 0x94d5: 0xe0003597, 0x94d6: 0xe0003593, 0x94d7: 0xe000357f,
+-	0x94d8: 0xe000357b, 0x94d9: 0xe000358f, 0x94da: 0xe000358b, 0x94db: 0xe0003587,
+-	0x94dc: 0xe0003583, 0x94dd: 0x402cae20, 0x94de: 0xe0003331, 0x94df: 0xe000095e,
+-	0x94e0: 0xe000333b, 0x94e1: 0xe0000972, 0x94e2: 0xe00009f4, 0x94e3: 0xe00009ef,
+-	0x94e4: 0x002d3a88, 0x94e5: 0x402d3a20, 0x94e6: 0xe0000bbe, 0x94e7: 0xe0000bbb,
+-	0x94e8: 0xe0003651, 0x94e9: 0xe000364e, 0x94ea: 0xe00034e2, 0x94eb: 0xe00034df,
+-	0x94ec: 0xe00034e9, 0x94ed: 0xe00034e5, 0x94ee: 0xe0001162, 0x94ef: 0xe000115f,
+-	0x94f0: 0xe0000c8d, 0x94f1: 0xf0000a0a, 0x94f2: 0xf000040a, 0x94f3: 0xf0000404,
+-	0x94f4: 0xe0000bac, 0x94f5: 0xe0000ba9, 0x94f6: 0x002d7888, 0x94f7: 0x00319488,
+-	0x94f8: 0xe00036ad, 0x94f9: 0xe00036aa, 0x94fa: 0xe000332a, 0x94fb: 0xe0000950,
+-	0x94fc: 0xe00009ea, 0x94fd: 0xe00009e5, 0x94fe: 0xe0000e19, 0x94ff: 0xe0000e15,
+-	// Block 0x254, offset 0x9500
+-	0x9500: 0xe0003348, 0x9501: 0xe000098c, 0x9502: 0xe000334b, 0x9503: 0xe0000992,
+-	0x9504: 0xe00033df, 0x9505: 0xe00033dc, 0x9506: 0xe00033e5, 0x9507: 0xe00033e2,
+-	0x9508: 0xe000344c, 0x9509: 0xe0003449, 0x950a: 0xe0003452, 0x950b: 0xe000344f,
+-	0x950c: 0xe000350c, 0x950d: 0xe0003509, 0x950e: 0xe0003512, 0x950f: 0xe000350f,
+-	0x9510: 0xe0000ee8, 0x9511: 0xe0000ee5, 0x9512: 0xe0000eee, 0x9513: 0xe0000eeb,
+-	0x9514: 0xe00035cc, 0x9515: 0xe00035c9, 0x9516: 0xe00035d2, 0x9517: 0xe00035cf,
+-	0x9518: 0xe0000f61, 0x9519: 0xe0000f5e, 0x951a: 0xe0000fa5, 0x951b: 0xe0000fa2,
+-	0x951c: 0x00312288, 0x951d: 0x40312220, 0x951e: 0xe0003624, 0x951f: 0xe0003621,
+-	0x9520: 0x002ebc88, 0x9521: 0x402c8c20, 0x9522: 0x002f2288, 0x9523: 0x402f2220,
+-	0x9524: 0x00314088, 0x9525: 0x40314020, 0x9526: 0xe0003338, 0x9527: 0xe000096c,
+-	0x9528: 0xe00033af, 0x9529: 0xe00033ac, 0x952a: 0xe00034a9, 0x952b: 0xe00034a5,
+-	0x952c: 0xe00034cd, 0x952d: 0xe00034c9, 0x952e: 0xe00034d4, 0x952f: 0xe00034d1,
+-	0x9530: 0xe00034db, 0x9531: 0xe00034d7, 0x9532: 0xe0001129, 0x9533: 0xe0001126,
+-	0x9534: 0x402e5e20, 0x9535: 0x402ed020, 0x9536: 0x40305a20, 0x9537: 0x402dd420,
+-	0x9538: 0xe0000abf, 0x9539: 0xe0000ec4, 0x953a: 0x002be888, 0x953b: 0x002c4488,
+-	0x953c: 0x402c4420, 0x953d: 0x002e3888, 0x953e: 0x00303e88, 0x953f: 0x402ffc20,
+-	// Block 0x255, offset 0x9540
+-	0x9540: 0x402f8220, 0x9541: 0x402fd820, 0x9542: 0x402ff420, 0x9543: 0x40300820,
+-	0x9544: 0x402df620, 0x9545: 0x40301a20, 0x9546: 0x40302420, 0x9547: 0x40306420,
+-	0x9548: 0x40305220, 0x9549: 0x40307c20, 0x954a: 0x4030b420, 0x954b: 0x4030cc20,
+-	0x954c: 0x4030da20, 0x954d: 0x4030ee20, 0x954e: 0x402e7a20, 0x954f: 0x40310820,
+-	0x9550: 0x40314820, 0x9551: 0x40315020, 0x9552: 0x40316420, 0x9553: 0x40318020,
+-	0x9554: 0x4031cc20, 0x9555: 0x4031e820, 0x9556: 0x40320a20, 0x9557: 0x40323220,
+-	0x9558: 0x40323a20, 0x9559: 0x402c1220, 0x955a: 0x402cf820, 0x955b: 0x402d4c20,
+-	0x955c: 0x402d7020, 0x955d: 0x402de620, 0x955e: 0x402e1a20, 0x955f: 0x402e2a20,
+-	0x9560: 0x402f6220, 0x9561: 0x4031fa20, 0x9562: 0x40320220, 0x9563: 0xe0000aca,
+-	0x9564: 0xe0000adc, 0x9565: 0xe0000ad9, 0x9566: 0xe0000fcc, 0x9567: 0xe0000fcf,
+-	0x9568: 0xe0000fba, 0x9569: 0xe0000ba1, 0x956a: 0xe0000d11, 0x956b: 0xe0000d18,
+-	0x956c: 0x40324220, 0x956d: 0x40324a20, 0x956e: 0x40309020, 0x956f: 0x40309820,
+-	0x9570: 0x002d6894, 0x9571: 0x002d8094, 0x9572: 0x002dcc94, 0x9573: 0x002f7a94,
+-	0x9574: 0x002f9894, 0x9575: 0x002fac94, 0x9576: 0x002fd894, 0x9577: 0x0030e294,
+-	0x9578: 0x00310094, 0x9579: 0x40064020, 0x957a: 0x40064420, 0x957b: 0x402bf620,
+-	0x957c: 0x4031de20, 0x957d: 0x402d9820, 0x957e: 0x4031e220, 0x957f: 0x4031f020,
+-	// Block 0x256, offset 0x9580
+-	0x9580: 0xe0003359, 0x9581: 0xe00009ae, 0x9582: 0xe0000a22, 0x9583: 0xe0000a1f,
+-	0x9584: 0xe0000a28, 0x9585: 0xe0000a25, 0x9586: 0xe0000a2e, 0x9587: 0xe0000a2b,
+-	0x9588: 0xe0000a5a, 0x9589: 0xe0000a56, 0x958a: 0xe0000a8c, 0x958b: 0xe0000a89,
+-	0x958c: 0xe0000a98, 0x958d: 0xe0000a95, 0x958e: 0xe0000aa4, 0x958f: 0xe0000aa1,
+-	0x9590: 0xe0000a92, 0x9591: 0xe0000a8f, 0x9592: 0xe0000a9e, 0x9593: 0xe0000a9b,
+-	0x9594: 0xe00033d2, 0x9595: 0xe00033ce, 0x9596: 0xe00033ca, 0x9597: 0xe00033c6,
+-	0x9598: 0xe00033f9, 0x9599: 0xe00033f6, 0x959a: 0xe00033ff, 0x959b: 0xe00033fc,
+-	0x959c: 0xe00033b6, 0x959d: 0xe00033b2, 0x959e: 0xe0000b8c, 0x959f: 0xe0000b89,
+-	0x95a0: 0xe0000bd0, 0x95a1: 0xe0000bcd, 0x95a2: 0xe0003630, 0x95a3: 0xe000362d,
+-	0x95a4: 0xe000363c, 0x95a5: 0xe0003639, 0x95a6: 0xe000362a, 0x95a7: 0xe0003627,
+-	0x95a8: 0xe0003636, 0x95a9: 0xe0003633, 0x95aa: 0xe0003642, 0x95ab: 0xe000363f,
+-	0x95ac: 0xe000345e, 0x95ad: 0xe000345b, 0x95ae: 0xe000342a, 0x95af: 0xe0003426,
+-	0x95b0: 0xe000364b, 0x95b1: 0xe0003648, 0x95b2: 0xe000365d, 0x95b3: 0xe000365a,
+-	0x95b4: 0xe0003663, 0x95b5: 0xe0003660, 0x95b6: 0xe000367b, 0x95b7: 0xe0003678,
+-	0x95b8: 0xe0003682, 0x95b9: 0xe000367e, 0x95ba: 0xe000368f, 0x95bb: 0xe000368c,
+-	0x95bc: 0xe0003689, 0x95bd: 0xe0003686, 0x95be: 0xe0003695, 0x95bf: 0xe0003692,
+-	// Block 0x257, offset 0x95c0
+-	0x95c0: 0xe000369b, 0x95c1: 0xe0003698, 0x95c2: 0xe00036a1, 0x95c3: 0xe000369e,
+-	0x95c4: 0xe00036bf, 0x95c5: 0xe00036bc, 0x95c6: 0xe00036cb, 0x95c7: 0xe00036c8,
+-	0x95c8: 0xe00036d7, 0x95c9: 0xe00036d4, 0x95ca: 0xe00036d1, 0x95cb: 0xe00036ce,
+-	0x95cc: 0xe00034bd, 0x95cd: 0xe00034b9, 0x95ce: 0xe00034c5, 0x95cf: 0xe00034c1,
+-	0x95d0: 0xe00034ff, 0x95d1: 0xe00034fb, 0x95d2: 0xe00034f7, 0x95d3: 0xe00034f3,
+-	0x95d4: 0xe00036da, 0x95d5: 0xe0002997, 0x95d6: 0xe00036dd, 0x95d7: 0xe00029d7,
+-	0x95d8: 0xe0000ed6, 0x95d9: 0xe0000ed3, 0x95da: 0xe0000ef4, 0x95db: 0xe0000ef1,
+-	0x95dc: 0xe0000efb, 0x95dd: 0xe0000ef7, 0x95de: 0xe0000f02, 0x95df: 0xe0000eff,
+-	0x95e0: 0xe0000f41, 0x95e1: 0xe0000f3e, 0x95e2: 0xe0000f53, 0x95e3: 0xe0000f50,
+-	0x95e4: 0xe0000f26, 0x95e5: 0xe0000f22, 0x95e6: 0xe0000f3a, 0x95e7: 0xe0000f36,
+-	0x95e8: 0xe0000f5a, 0x95e9: 0xe0000f56, 0x95ea: 0xe0000f93, 0x95eb: 0xe0000f90,
+-	0x95ec: 0xe0000f9f, 0x95ed: 0xe0000f9c, 0x95ee: 0xe0000fb1, 0x95ef: 0xe0000fae,
+-	0x95f0: 0xe0000fab, 0x95f1: 0xe0000fa8, 0x95f2: 0xe000360c, 0x95f3: 0xe0003609,
+-	0x95f4: 0xe0003618, 0x95f5: 0xe0003615, 0x95f6: 0xe0003612, 0x95f7: 0xe000360f,
+-	0x95f8: 0xe00035ab, 0x95f9: 0xe00035a7, 0x95fa: 0xe00035bf, 0x95fb: 0xe00035bb,
+-	0x95fc: 0xe00010a9, 0x95fd: 0xe00010a6, 0x95fe: 0xe00010af, 0x95ff: 0xe00010ac,
+-	// Block 0x258, offset 0x9600
+-	0x9600: 0xe00036e9, 0x9601: 0xe00036e6, 0x9602: 0xe00036e3, 0x9603: 0xe00036e0,
+-	0x9604: 0xe00036f8, 0x9605: 0xe00036f5, 0x9606: 0xe00036fb, 0x9607: 0xe00029fb,
+-	0x9608: 0xe00036fe, 0x9609: 0xe00029fe, 0x960a: 0xe00010fc, 0x960b: 0xe00010f9,
+-	0x960c: 0xe00010f6, 0x960d: 0xe00010f3, 0x960e: 0xe0001123, 0x960f: 0xe0001120,
+-	0x9610: 0xe0001141, 0x9611: 0xe000113e, 0x9612: 0xe0001153, 0x9613: 0xe0001150,
+-	0x9614: 0xe0001159, 0x9615: 0xe0001156, 0x9616: 0xe0003645, 0x9617: 0xe0000f8d,
+-	0x9618: 0xe00036f2, 0x9619: 0xe0001111, 0x961a: 0xf0000404, 0x961b: 0xe0000f70,
+-	0x961c: 0x40300420, 0x961d: 0x40300620, 0x961e: 0xe0000f7f, 0x961f: 0x402c9620,
+-	0x9620: 0xe000334e, 0x9621: 0xe0000998, 0x9622: 0xe0003345, 0x9623: 0xe0000986,
+-	0x9624: 0xe0003314, 0x9625: 0xe0000924, 0x9626: 0xe0003318, 0x9627: 0xe000092c,
+-	0x9628: 0xe0003320, 0x9629: 0xe000093c, 0x962a: 0xe000331c, 0x962b: 0xe0000934,
+-	0x962c: 0xe0003355, 0x962d: 0xe00009a6, 0x962e: 0xe0003301, 0x962f: 0xe00008fe,
+-	0x9630: 0xe0003305, 0x9631: 0xe0000906, 0x9632: 0xe000330d, 0x9633: 0xe0000916,
+-	0x9634: 0xe0003309, 0x9635: 0xe000090e, 0x9636: 0xe0003351, 0x9637: 0xe000099e,
+-	0x9638: 0xe00033eb, 0x9639: 0xe00033e8, 0x963a: 0xe00033d9, 0x963b: 0xe00033d6,
+-	0x963c: 0xe00033a3, 0x963d: 0xe00033a0, 0x963e: 0xe0003378, 0x963f: 0xe0003374,
+-	// Block 0x259, offset 0x9640
+-	0x9640: 0xe0003380, 0x9641: 0xe000337c, 0x9642: 0xe0003390, 0x9643: 0xe000338c,
+-	0x9644: 0xe0003388, 0x9645: 0xe0003384, 0x9646: 0xe00033f2, 0x9647: 0xe00033ee,
+-	0x9648: 0xe0003446, 0x9649: 0xe0003443, 0x964a: 0xe0003458, 0x964b: 0xe0003455,
+-	0x964c: 0xe0003546, 0x964d: 0xe0003543, 0x964e: 0xe0003506, 0x964f: 0xe0003503,
+-	0x9650: 0xe000347d, 0x9651: 0xe0003479, 0x9652: 0xe0003485, 0x9653: 0xe0003481,
+-	0x9654: 0xe0003495, 0x9655: 0xe0003491, 0x9656: 0xe000348d, 0x9657: 0xe0003489,
+-	0x9658: 0xe000354d, 0x9659: 0xe0003549, 0x965a: 0xe000351f, 0x965b: 0xe000351b,
+-	0x965c: 0xe0003527, 0x965d: 0xe0003523, 0x965e: 0xe0003537, 0x965f: 0xe0003533,
+-	0x9660: 0xe000352f, 0x9661: 0xe000352b, 0x9662: 0xe000353f, 0x9663: 0xe000353b,
+-	0x9664: 0xe0003606, 0x9665: 0xe0003603, 0x9666: 0xe00035c6, 0x9667: 0xe00035c3,
+-	0x9668: 0xe00035df, 0x9669: 0xe00035db, 0x966a: 0xe00035e7, 0x966b: 0xe00035e3,
+-	0x966c: 0xe00035f7, 0x966d: 0xe00035f3, 0x966e: 0xe00035ef, 0x966f: 0xe00035eb,
+-	0x9670: 0xe00035ff, 0x9671: 0xe00035fb, 0x9672: 0xe0001108, 0x9673: 0xe0001105,
+-	0x9674: 0xe0001135, 0x9675: 0xe0001132, 0x9676: 0xe000112f, 0x9677: 0xe000112c,
+-	0x9678: 0xe000111d, 0x9679: 0xe000111a, 0x967a: 0xe0000d0a, 0x967b: 0xe0000d07,
+-	0x967c: 0x0030d888, 0x967d: 0x4030d820, 0x967e: 0x00312088, 0x967f: 0x40312020,
+-	// Block 0x25a, offset 0x9680
+-	0x9680: 0xe00009bc, 0x9681: 0xe00009c0, 0x9682: 0x002c3a8b, 0x9683: 0xf0000a04,
+-	0x9684: 0x40081c20, 0x9685: 0xe0000a5e, 0x9686: 0xe0000a62, 0x9687: 0x002cc28a,
+-	0x9688: 0x40081e20, 0x9689: 0xf0000a04, 0x968a: 0x002d2285, 0x968b: 0x002d688b,
+-	0x968c: 0x002d688b, 0x968d: 0x002d688b, 0x968e: 0x002d6885, 0x968f: 0xf0000202,
+-	0x9690: 0x002d9a8b, 0x9691: 0x002d9a8b, 0x9692: 0x002e228b, 0x9693: 0x002e2285,
+-	0x9694: 0x40082020, 0x9695: 0x002e9e8b, 0x9696: 0xe000308e, 0x9697: 0x40082220,
+-	0x9698: 0x40082420, 0x9699: 0x002f2c8b, 0x969a: 0x002f568b, 0x969b: 0x002f7a8b,
+-	0x969c: 0x002f7a8b, 0x969d: 0x002f7a8b, 0x969e: 0x40082620, 0x969f: 0x40082820,
+-	0x96a0: 0xe00030bb, 0x96a1: 0xe0000fbd, 0x96a2: 0xe00030ca, 0x96a3: 0x40082a20,
+-	0x96a4: 0x00312a8b, 0x96a5: 0x40082c20, 0x96a6: 0x0032a288, 0x96a7: 0x40082e20,
+-	0x96a8: 0x00312a8b, 0x96a9: 0x40083020, 0x96aa: 0x002bea83, 0x96ab: 0xe0003327,
+-	0x96ac: 0x002c0a8b, 0x96ad: 0x002c3a8b, 0x96ae: 0x40083220, 0x96af: 0x002c9885,
+-	0x96b0: 0x002c988b, 0x96b1: 0x002d088b, 0x96b2: 0x002d1e88, 0x96b3: 0x002e828b,
+-	0x96b4: 0x002ee285, 0x96b5: 0x00389084, 0x96b6: 0x00389284, 0x96b7: 0x00389484,
+-	0x96b8: 0x00389684, 0x96b9: 0x002d9a85, 0x96ba: 0x40083420, 0x96bb: 0xe0000b95,
+-	0x96bc: 0x00327e85, 0x96bd: 0x00325685, 0x96be: 0x0032568b, 0x96bf: 0x00327e8b,
+-	// Block 0x25b, offset 0x96c0
+-	0x96c0: 0xe0000024, 0x96c1: 0xe0000029, 0x96c2: 0xe000002e, 0x96c3: 0xe0000033,
+-	0x96c4: 0xe0000038, 0x96c5: 0xe000003d, 0x96c6: 0xe0000042, 0x96c7: 0xe0000047,
+-	0x96c8: 0xf0001f04, 0x96c9: 0xf0001f04, 0x96ca: 0xf0001f04, 0x96cb: 0xf0001f04,
+-	0x96cc: 0xf0001f04, 0x96cd: 0xf0001f04, 0x96ce: 0xf0001f04, 0x96cf: 0xf0001f04,
+-	0x96d0: 0xf0001f04, 0x96d1: 0xf0000404, 0x96d2: 0xf0000404, 0x96d3: 0xf0000404,
+-	0x96d4: 0xf0000404, 0x96d5: 0xf0000404, 0x96d6: 0xf0000404, 0x96d7: 0xf0000404,
+-	0x96d8: 0xf0000404, 0x96d9: 0xf0000404, 0x96da: 0xf0000404, 0x96db: 0xf0000404,
+-	0x96dc: 0xf0000404, 0x96dd: 0xf0000404, 0x96de: 0xf0000404, 0x96df: 0xf0000404,
+-	0x96e0: 0xe00027f8, 0x96e1: 0xf0000404, 0x96e2: 0xf0000404, 0x96e3: 0xe0002810,
+-	0x96e4: 0xe0002818, 0x96e5: 0xf0000404, 0x96e6: 0xe0002824, 0x96e7: 0xe000282c,
+-	0x96e8: 0xe0002834, 0x96e9: 0xe000283c, 0x96ea: 0xe0002844, 0x96eb: 0xe000284c,
+-	0x96ec: 0xf0000404, 0x96ed: 0xf0000404, 0x96ee: 0xf0000404, 0x96ef: 0xf0000404,
+-	0x96f0: 0xe000286c, 0x96f1: 0xf0000404, 0x96f2: 0xe000287c, 0x96f3: 0xf0000404,
+-	0x96f4: 0xf0000404, 0x96f5: 0xf0000404, 0x96f6: 0x002bde8c, 0x96f7: 0x002c0a8c,
+-	0x96f8: 0x002c3a8c, 0x96f9: 0x002c628c, 0x96fa: 0x002c988c, 0x96fb: 0x002d088c,
+-	0x96fc: 0x002d228c, 0x96fd: 0x002d688c, 0x96fe: 0x002d9a8c, 0x96ff: 0x002dcc8c,
+-	// Block 0x25c, offset 0x9700
+-	0x9700: 0xf0001f04, 0x9701: 0xf0001f04, 0x9702: 0xf0001f04, 0x9703: 0xf0001f04,
+-	0x9704: 0xf0001f04, 0x9705: 0xf0001f04, 0x9706: 0xf0001f04, 0x9707: 0xf0001f04,
+-	0x9708: 0xf0001f04, 0x9709: 0xf0000404, 0x970a: 0xf0000404, 0x970b: 0xf0000404,
+-	0x970c: 0xe0002ffd, 0x970d: 0xe0000b85, 0x970e: 0xe0002fe5, 0x970f: 0xe0000d14,
+-	0x9710: 0x00657693, 0x9711: 0x00657893, 0x9712: 0x00657a93, 0x9713: 0x00657e93,
+-	0x9714: 0x00658093, 0x9715: 0x00658293, 0x9716: 0x00658493, 0x9717: 0x00658693,
+-	0x9718: 0x00658893, 0x9719: 0x00658a93, 0x971a: 0x00658c93, 0x971b: 0x00658e93,
+-	0x971c: 0x00659093, 0x971d: 0x00659293, 0x971e: 0x00659493, 0x971f: 0x00659693,
+-	0x9720: 0x00659893, 0x9721: 0x00659a93, 0x9722: 0x00659c93, 0x9723: 0x00659e93,
+-	0x9724: 0x0065a093, 0x9725: 0x0065a293, 0x9726: 0x0065a493, 0x9727: 0x0065a693,
+-	0x9728: 0x0065a893, 0x9729: 0x0065aa93, 0x972a: 0x0065ac93, 0x972b: 0x0065ae93,
+-	0x972c: 0x0065b093, 0x972d: 0x0065b293, 0x972e: 0x0065b493, 0x972f: 0x0065b693,
+-	0x9730: 0x0065b893, 0x9731: 0x0065ba93, 0x9732: 0x0065bc93, 0x9733: 0x0065be93,
+-	0x9734: 0x0065c093, 0x9735: 0x0065c493, 0x9736: 0x0065c693, 0x9737: 0x0065c893,
+-	0x9738: 0x0065ca93, 0x9739: 0x0065cc93, 0x973a: 0x0065ce93, 0x973b: 0x0065d093,
+-	0x973c: 0x0065d293, 0x973d: 0x0065d493, 0x973e: 0x0065d693,
+-	// Block 0x25d, offset 0x9740
+-	0x9740: 0xe000230b, 0x9741: 0xe00022f8, 0x9742: 0xe00022fc, 0x9743: 0xe0002311,
+-	0x9744: 0xe0002316, 0x9745: 0xe000231d, 0x9746: 0xe0002321, 0x9747: 0xe0002325,
+-	0x9748: 0xe000232b, 0x9749: 0xf0001c1c, 0x974a: 0xe0002330, 0x974b: 0xe000233c,
+-	0x974c: 0xe0002340, 0x974d: 0xe0002337, 0x974e: 0xe0002346, 0x974f: 0xe000234b,
+-	0x9750: 0xe000234f, 0x9751: 0xe0002353, 0x9752: 0xf0001c1c, 0x9753: 0xe000235e,
+-	0x9754: 0xe0002358, 0x9755: 0xf0001c1c, 0x9756: 0xe0002363, 0x9757: 0xe000236d,
+-	0x9758: 0xf0001f04, 0x9759: 0xf0001f04, 0x975a: 0xf0001f04, 0x975b: 0xf0001f04,
+-	0x975c: 0xf0001f04, 0x975d: 0xf0001f04, 0x975e: 0xf0001f04, 0x975f: 0xf0001f04,
+-	0x9760: 0xf0001f04, 0x9761: 0xf0001f04, 0x9762: 0xf0000404, 0x9763: 0xf0000404,
+-	0x9764: 0xf0000404, 0x9765: 0xf0000404, 0x9766: 0xf0000404, 0x9767: 0xf0000404,
+-	0x9768: 0xf0000404, 0x9769: 0xf0000404, 0x976a: 0xf0000404, 0x976b: 0xf0000404,
+-	0x976c: 0xf0000404, 0x976d: 0xf0000404, 0x976e: 0xf0000404, 0x976f: 0xf0000404,
+-	0x9770: 0xf0000404, 0x9771: 0xe0000c1e, 0x9772: 0xf0001c1c, 0x9773: 0xe0002991,
+-	0x9774: 0xe0000a31, 0x9775: 0xe000309a, 0x9776: 0xe00030a3, 0x9777: 0xe0002fd9,
+-	0x9778: 0xe0000ac2, 0x9779: 0xe0000ac6, 0x977a: 0xe0002578, 0x977b: 0xf0001c1c,
+-	0x977c: 0xf0001c1c, 0x977d: 0xf0001c1c, 0x977e: 0xf0001c1c, 0x977f: 0xe0002431,
+-	// Block 0x25e, offset 0x9780
+-	0x9780: 0xe000309d, 0x9781: 0xe000307c, 0x9782: 0xf0001d1c, 0x9783: 0xe000304f,
+-	0x9784: 0xe0003019, 0x9785: 0xe000301c, 0x9786: 0xe0003055, 0x9787: 0xf0001d1d,
+-	0x9788: 0xe0000a6b, 0x9789: 0xe0000cb4, 0x978a: 0xe00030a6, 0x978b: 0xe000307f,
+-	0x978c: 0xf0001d1c, 0x978d: 0xf0001c1c, 0x978e: 0xe000305e, 0x978f: 0xe000301f,
+-	0x9790: 0xe0003006, 0x9791: 0xe0000cb9, 0x9792: 0xe0000d36, 0x9793: 0xe0000be3,
+-	0x9794: 0xe0000fc5, 0x9795: 0xe00030e9, 0x9796: 0xe0003061, 0x9797: 0xe0002fd6,
+-	0x9798: 0xe0003025, 0x9799: 0xe0002ff1, 0x979a: 0xe000308b, 0x979b: 0xe00030ec,
+-	0x979c: 0xe0003064, 0x979d: 0xe0002e35, 0x979e: 0xe0003028, 0x979f: 0xe0000d3e,
+-	0x97a0: 0xe0000a72, 0x97a1: 0xe0003049, 0x97a2: 0xe0000cbd, 0x97a3: 0xe0000d42,
+-	0x97a4: 0xe0000a76, 0x97a5: 0xe000304c, 0x97a6: 0xe0000cc1, 0x97a7: 0xe0000d2d,
+-	0x97a8: 0xe0000d31, 0x97a9: 0xe00030a0, 0x97aa: 0xe0000cc5, 0x97ab: 0xe0000d4a,
+-	0x97ac: 0xe0000be7, 0x97ad: 0xe0000f0b, 0x97ae: 0xe0000f0f, 0x97af: 0xe0000f15,
+-	0x97b0: 0xe00030af, 0x97b1: 0xe0003091, 0x97b2: 0xf0001c1c, 0x97b3: 0xe0003067,
+-	0x97b4: 0xe00030b2, 0x97b5: 0xe0003094, 0x97b6: 0xf0001d1c, 0x97b7: 0xe000306a,
+-	0x97b8: 0xe0003031, 0x97b9: 0xe000306d, 0x97ba: 0xe00030b5, 0x97bb: 0xe0003097,
+-	0x97bc: 0xe00030f5, 0x97bd: 0xe0003073, 0x97be: 0xe0003034, 0x97bf: 0xe0003076,
+-	// Block 0x25f, offset 0x97c0
+-	0x97c0: 0xe0003037, 0x97c1: 0xe0003079, 0x97c2: 0xe00009b7, 0x97c3: 0xf0001c1d,
+-	0x97c4: 0xf0001c1c, 0x97c5: 0xf0001c1c, 0x97c6: 0xe0000a66, 0x97c7: 0xe0000a7a,
+-	0x97c8: 0xf0001d1c, 0x97c9: 0xf0001c1d, 0x97ca: 0xe0002ffa, 0x97cb: 0xe0003000,
+-	0x97cc: 0xe0003013, 0x97cd: 0xe0003022, 0x97ce: 0xe000302b, 0x97cf: 0xe000302e,
+-	0x97d0: 0xe0003043, 0x97d1: 0xe0003046, 0x97d2: 0xe0000d0d, 0x97d3: 0xe0002584,
+-	0x97d4: 0xe0003052, 0x97d5: 0xe0000d3a, 0x97d6: 0xe0000d46, 0x97d7: 0xe00030a9,
+-	0x97d8: 0xe0000eb0, 0x97d9: 0xe0000eb8, 0x97da: 0xe00030ac, 0x97db: 0xf0001c1c,
+-	0x97dc: 0xf0001c1d, 0x97dd: 0xe00030d4, 0x97de: 0xe00010b2, 0x97df: 0xe00009c8,
+-	0x97e0: 0xf0001f04, 0x97e1: 0xf0001f04, 0x97e2: 0xf0001f04, 0x97e3: 0xf0001f04,
+-	0x97e4: 0xf0001f04, 0x97e5: 0xf0001f04, 0x97e6: 0xf0001f04, 0x97e7: 0xf0001f04,
+-	0x97e8: 0xf0001f04, 0x97e9: 0xf0000404, 0x97ea: 0xf0000404, 0x97eb: 0xf0000404,
+-	0x97ec: 0xf0000404, 0x97ed: 0xf0000404, 0x97ee: 0xf0000404, 0x97ef: 0xf0000404,
+-	0x97f0: 0xf0000404, 0x97f1: 0xf0000404, 0x97f2: 0xf0000404, 0x97f3: 0xf0000404,
+-	0x97f4: 0xf0000404, 0x97f5: 0xf0000404, 0x97f6: 0xf0000404, 0x97f7: 0xf0000404,
+-	0x97f8: 0xf0000404, 0x97f9: 0xf0000404, 0x97fa: 0xf0000404, 0x97fb: 0xf0000404,
+-	0x97fc: 0xf0000404, 0x97fd: 0xf0000404, 0x97fe: 0xf0000404, 0x97ff: 0xe0000bdf,
+-	// Block 0x260, offset 0x9800
+-	0x9800: 0xf0000404, 0x9801: 0xe0002feb, 0x9802: 0xe0002fee, 0x9803: 0xe0000b99,
+-	0x9804: 0xe0000b9d, 0x9805: 0xe0000f83, 0x9806: 0xf0000404,
+-	0x9813: 0xf0000404,
+-	0x9814: 0xf0000404, 0x9815: 0xf0000404, 0x9816: 0xf0000404, 0x9817: 0xf0000404,
+-	0x981d: 0xe000150b, 0x981e: 0xa1a09602, 0x981f: 0xe0001514,
+-	0x9820: 0x0038ae85, 0x9821: 0x00389085, 0x9822: 0x00389685, 0x9823: 0x00389885,
+-	0x9824: 0x0038a485, 0x9825: 0x0038a685, 0x9826: 0x0038a885, 0x9827: 0x0038b685,
+-	0x9828: 0x0038ba85, 0x9829: 0x00093885, 0x982a: 0xe0001542, 0x982b: 0xe000153f,
+-	0x982c: 0xe000154c, 0x982d: 0xe0001548, 0x982e: 0xe00014e1, 0x982f: 0xe00014e4,
+-	0x9830: 0xe00014e7, 0x9831: 0xe00014ea, 0x9832: 0xe00014f0, 0x9833: 0xe00014f3,
+-	0x9834: 0xe00014f6, 0x9835: 0xe00014fc, 0x9836: 0xe0001505,
+-	0x9838: 0xe0001508, 0x9839: 0xe000150e, 0x983a: 0xe000151b, 0x983b: 0xe0001518,
+-	0x983c: 0xe0001521, 0x983e: 0xe0001524,
+-	// Block 0x261, offset 0x9840
+-	0x9840: 0xf0001f04, 0x9841: 0xf0001f04, 0x9842: 0xf0001f04, 0x9843: 0xf0001f04,
+-	0x9844: 0xf0001f04, 0x9845: 0xf0001f04, 0x9846: 0xf0001f04, 0x9847: 0xf0001f04,
+-	0x9848: 0xf0001f04, 0x9849: 0xf0001f04, 0x984a: 0xf0001f04,
+-	0x9850: 0xf0000a04, 0x9851: 0xf0000a04, 0x9852: 0xf0000a04, 0x9853: 0xf0000a04,
+-	0x9854: 0xe00027fc, 0x9855: 0xf0000a04, 0x9856: 0xf0000a04, 0x9857: 0xe0002814,
+-	0x9858: 0xe0002517, 0x9859: 0xf0000a04, 0x985a: 0xe0002828, 0x985b: 0xe0002830,
+-	0x985c: 0xe0002838, 0x985d: 0xe0002840, 0x985e: 0xe0002848, 0x985f: 0xe0002850,
+-	0x9860: 0xf0000a04, 0x9861: 0xf0000a04, 0x9862: 0xf0000a04, 0x9863: 0xf0000a04,
+-	0x9864: 0xe0002870, 0x9865: 0xf0000a04, 0x9866: 0xe0002880, 0x9867: 0xf0000a04,
+-	0x9868: 0xf0000a04, 0x9869: 0xf0000a04, 0x986a: 0xf0000a04, 0x986b: 0x002c3a8c,
+-	0x986c: 0x002f7a8c, 0x986d: 0xf0000c0c, 0x986e: 0xe00030da,
+-	0x9870: 0x002bde9d, 0x9871: 0x002c0a9d, 0x9872: 0x002c3a9d, 0x9873: 0x002c629d,
+-	0x9874: 0x002c989d, 0x9875: 0x002d089d, 0x9876: 0x002d229d, 0x9877: 0x002d689d,
+-	0x9878: 0x002d9a9d, 0x9879: 0x002dcc9d, 0x987a: 0x002dfe9d, 0x987b: 0x002e229d,
+-	0x987c: 0x002e829d, 0x987d: 0x002e9e9d, 0x987e: 0x002ee29d, 0x987f: 0x002f2c9d,
+-	// Block 0x262, offset 0x9880
+-	0x9880: 0x002f569d, 0x9881: 0x002f7a9d, 0x9882: 0x002fe69d, 0x9883: 0x00302c9d,
+-	0x9884: 0x00306c9d, 0x9885: 0x0030be9d, 0x9886: 0x0030e29d, 0x9887: 0x0030f69d,
+-	0x9888: 0x0031009d, 0x9889: 0x00312a9d, 0x988a: 0xe0003003, 0x988b: 0xe0003070,
+-	0x988c: 0xf0001d1d, 0x988d: 0xf0001d1d, 0x988e: 0xe0000ebc, 0x988f: 0xe00030d7,
+-	0x9890: 0x002bde8c, 0x9891: 0x002c0a8c, 0x9892: 0x002c3a8c, 0x9893: 0x002c628c,
+-	0x9894: 0x002c988c, 0x9895: 0x002d088c, 0x9896: 0x002d228c, 0x9897: 0x002d688c,
+-	0x9898: 0x002d9a8c, 0x9899: 0x002dcc8c, 0x989a: 0x002dfe8c, 0x989b: 0x002e228c,
+-	0x989c: 0x002e828c, 0x989d: 0x002e9e8c, 0x989e: 0x002ee28c, 0x989f: 0x002f2c8c,
+-	0x98a0: 0x002f568c, 0x98a1: 0x002f7a8c, 0x98a2: 0x002fe68c, 0x98a3: 0x00302c8c,
+-	0x98a4: 0x00306c8c, 0x98a5: 0x0030be8c, 0x98a6: 0x0030e28c, 0x98a7: 0x0030f68c,
+-	0x98a8: 0x0031008c, 0x98a9: 0x00312a8c, 0x98aa: 0xe0003058, 0x98ab: 0xe000305b,
+-	0x98b0: 0x002bde9d, 0x98b1: 0x002c0a9d, 0x98b2: 0x002c3a9d, 0x98b3: 0x002c629d,
+-	0x98b4: 0x002c989d, 0x98b5: 0x002d089d, 0x98b6: 0x002d229d, 0x98b7: 0x002d689d,
+-	0x98b8: 0x002d9a9d, 0x98b9: 0x002dcc9d, 0x98ba: 0x002dfe9d, 0x98bb: 0x002e229d,
+-	0x98bc: 0x002e829d, 0x98bd: 0x002e9e9d, 0x98be: 0x002ee29d, 0x98bf: 0x002f2c9d,
+-	// Block 0x263, offset 0x98c0
+-	0x98c0: 0xa000f202, 0x98c1: 0x403fba21, 0x98c2: 0x403fba20, 0x98c3: 0x403fbc20,
+-	0x98c4: 0x403fbc20, 0x98c5: 0x403fbe20, 0x98c6: 0x403fc020, 0x98c7: 0x403fcc20,
+-	0x98c8: 0x403fce20, 0x98c9: 0x403fd020, 0x98ca: 0x403fd220, 0x98cb: 0x403fd420,
+-	0x98cc: 0x403fd820, 0x98cd: 0x403fdc20, 0x98ce: 0x403fde20, 0x98cf: 0x403fe020,
+-	0x98d0: 0x403fe220, 0x98d1: 0x403fe420, 0x98d2: 0x403fe620, 0x98d3: 0x403fe820,
+-	0x98d4: 0x403fea20, 0x98d5: 0x403fec20, 0x98d6: 0x403fee20, 0x98d7: 0x403ff020,
+-	0x98d8: 0x403ff420, 0x98d9: 0x403ff620, 0x98da: 0x403ff820, 0x98db: 0x403ffa20,
+-	0x98dc: 0x403ffc20, 0x98dd: 0x40400220, 0x98de: 0x40400420, 0x98df: 0x40400620,
+-	0x98e0: 0x40400820, 0x98e1: 0x40400a20, 0x98e2: 0x40400e20, 0x98e3: 0x40401020,
+-	0x98e4: 0x40401220, 0x98e5: 0x40401420, 0x98e6: 0x40401620, 0x98e7: 0x40401820,
+-	0x98e8: 0x40401a20, 0x98e9: 0xe0001830, 0x98ea: 0x40401c20, 0x98eb: 0x40401e20,
+-	0x98ec: 0x40402020, 0x98ed: 0x40402420, 0x98ee: 0x40402620, 0x98ef: 0x40402820,
+-	0x98f0: 0x40402c20, 0x98f1: 0xe0001839, 0x98f2: 0x40402e20, 0x98f3: 0x40403020,
+-	0x98f4: 0xe000183c, 0x98f5: 0x40403220, 0x98f6: 0x40403420, 0x98f7: 0x40403620,
+-	0x98f8: 0x40403820, 0x98f9: 0x40403a20, 0x98fa: 0x40404c20, 0x98fb: 0x40404e20,
+-	0x98fc: 0xa070f102, 0x98fd: 0x40403c20, 0x98fe: 0x40404a20, 0x98ff: 0x40405620,
+-	// Block 0x264, offset 0x9900
+-	0x9900: 0xa0000000, 0x9901: 0xa0000000, 0x9902: 0xa0000000, 0x9903: 0xa0000000,
+-	0x9904: 0xa0000000, 0x9905: 0xa0000000, 0x9906: 0xa0000000, 0x9907: 0xa0000000,
+-	0x9908: 0xa0000000, 0x9909: 0x40020020, 0x990a: 0x40020220, 0x990b: 0x40020420,
+-	0x990c: 0x40020620, 0x990d: 0x40020820, 0x990e: 0xa0000000, 0x990f: 0xa0000000,
+-	0x9910: 0xa0000000, 0x9911: 0xa0000000, 0x9912: 0xa0000000, 0x9913: 0xa0000000,
+-	0x9914: 0xa0000000, 0x9915: 0xa0000000, 0x9916: 0xa0000000, 0x9917: 0xa0000000,
+-	0x9918: 0xa0000000, 0x9919: 0xa0000000, 0x991a: 0xa0000000, 0x991b: 0xa0000000,
+-	0x991c: 0xa0000000, 0x991d: 0xa0000000, 0x991e: 0xa0000000, 0x991f: 0xa0000000,
+-	0x9920: 0x40021220, 0x9921: 0x4002ba20, 0x9922: 0x4003e020, 0x9923: 0x4004ea20,
+-	0x9924: 0x4027de20, 0x9925: 0x4004ec20, 0x9926: 0x4004e620, 0x9927: 0x4003d220,
+-	0x9928: 0x4003f420, 0x9929: 0x4003f620, 0x992a: 0x4004d820, 0x992b: 0x40093820,
+-	0x992c: 0x40024020, 0x992d: 0x40021a20, 0x992e: 0x4002e420, 0x992f: 0x4004e220,
+-	0x9930: 0x4029cc20, 0x9931: 0x4029ce20, 0x9932: 0x4029d020, 0x9933: 0x4029d220,
+-	0x9934: 0x4029d420, 0x9935: 0x4029d620, 0x9936: 0x4029d820, 0x9937: 0x4029da20,
+-	0x9938: 0x4029dc20, 0x9939: 0x4029de20, 0x993a: 0x40026c20, 0x993b: 0x40026220,
+-	0x993c: 0x40094020, 0x993d: 0x40094220, 0x993e: 0x40094420, 0x993f: 0x4002c420,
+-	// Block 0x265, offset 0x9940
+-	0x9940: 0x4004d620, 0x9941: 0x002bde88, 0x9942: 0x002c0a88, 0x9943: 0xc5872851,
+-	0x9944: 0xc58d28d3, 0x9945: 0x002c9888, 0x9946: 0x002d0888, 0x9947: 0x002d2288,
+-	0x9948: 0x002d6888, 0x9949: 0x002d9a88, 0x994a: 0x002dcc88, 0x994b: 0x002dfe88,
+-	0x994c: 0xc59229a4, 0x994d: 0x002e8288, 0x994e: 0xc5972a12, 0x994f: 0x002ee288,
+-	0x9950: 0x002f2c88, 0x9951: 0x002f5688, 0x9952: 0x002f7a88, 0x9953: 0xc3430991,
+-	0x9954: 0x00302c88, 0x9955: 0x00306c88, 0x9956: 0x0030be88, 0x9957: 0x0030e288,
+-	0x9958: 0x0030f688, 0x9959: 0x00310088, 0x995a: 0xc3630991, 0x995b: 0x4003f820,
+-	0x995c: 0x4004e420, 0x995d: 0x4003fa20, 0x995e: 0x40062420, 0x995f: 0x40021620,
+-	0x9960: 0x40061e20, 0x9961: 0x402bde20, 0x9962: 0x402c0a20, 0x9963: 0xc5842851,
+-	0x9964: 0xc58a2882, 0x9965: 0x402c9820, 0x9966: 0x402d0820, 0x9967: 0x402d2220,
+-	0x9968: 0x402d6820, 0x9969: 0x402d9a20, 0x996a: 0x402dcc20, 0x996b: 0x402dfe20,
+-	0x996c: 0xc3772953, 0x996d: 0x402e8220, 0x996e: 0xc5272a01, 0x996f: 0x402ee220,
+-	0x9970: 0x402f2c20, 0x9971: 0x402f5620, 0x9972: 0x402f7a20, 0x9973: 0xc3410991,
+-	0x9974: 0x40302c20, 0x9975: 0x40306c20, 0x9976: 0x4030be20, 0x9977: 0x4030e220,
+-	0x9978: 0x4030f620, 0x9979: 0x40310020, 0x997a: 0xc3610991, 0x997b: 0x4003fc20,
+-	0x997c: 0x40094820, 0x997d: 0x4003fe20, 0x997e: 0x40094c20, 0x997f: 0xa0000000,
+-	// Block 0x266, offset 0x9980
+-	0x9980: 0xe0000983, 0x9981: 0xe0000980, 0x9982: 0xe00008fb, 0x9983: 0xe00008f8,
+-	0x9984: 0xe000097d, 0x9985: 0xe000097a, 0x9986: 0x002c3e83, 0x9987: 0x402c3e20,
+-	0x9988: 0xe0000a3e, 0x9989: 0xe0000a3b, 0x998a: 0xe0000a4a, 0x998b: 0xe0000a47,
+-	0x998c: 0x002c3c83, 0x998d: 0x402c3c20, 0x998e: 0xe0000a86, 0x998f: 0xe0000a83,
+-	0x9990: 0x002c6683, 0x9991: 0x402c6620, 0x9992: 0xe0000b46, 0x9993: 0xe0000b43,
+-	0x9994: 0xe0000aee, 0x9995: 0xe0000aeb, 0x9996: 0xe0000b2c, 0x9997: 0xe0000b29,
+-	0x9998: 0xe0000b40, 0x9999: 0xe0000b3d, 0x999a: 0xe0000b1a, 0x999b: 0xe0000b17,
+-	0x999c: 0xe0000bb8, 0x999d: 0xe0000bb5, 0x999e: 0xe0000bb2, 0x999f: 0xe0000baf,
+-	0x99a0: 0xe0000bc4, 0x99a1: 0xe0000bc1, 0x99a2: 0xe0000bca, 0x99a3: 0xe0000bc7,
+-	0x99a4: 0xe0000bee, 0x99a5: 0xe0000beb, 0x99a6: 0xe0000c1b, 0x99a7: 0xe0000c18,
+-	0x99a8: 0xe0000c51, 0x99a9: 0xe0000c4e, 0x99aa: 0xe0000c60, 0x99ab: 0xe0000c5d,
+-	0x99ac: 0xe0000c31, 0x99ad: 0xe0000c2e, 0x99ae: 0xe0000c5a, 0x99af: 0xe0000c57,
+-	0x99b0: 0xe0000c54, 0x99b1: 0x402da220, 0x99b2: 0xf0000a0a, 0x99b3: 0xf0000404,
+-	0x99b4: 0xe0000c8a, 0x99b5: 0xe0000c87, 0x99b6: 0xe0000c9f, 0x99b7: 0xe0000c9c,
+-	0x99b8: 0x402f7220, 0x99b9: 0xe0000ccc, 0x99ba: 0xe0000cc9, 0x99bb: 0xe0000cd8,
+-	0x99bc: 0xe0000cd5, 0x99bd: 0xe0000cd2, 0x99be: 0xe0000ccf, 0x99bf: 0xe0000d04,
+-	// Block 0x267, offset 0x99c0
+-	0x99c0: 0xe0000cfe, 0x99c1: 0xe0000cf8, 0x99c2: 0xe0000cf5, 0x99c3: 0xe0000d51,
+-	0x99c4: 0xe0000d4e, 0x99c5: 0xe0000d6f, 0x99c6: 0xe0000d6c, 0x99c7: 0xe0000d5d,
+-	0x99c8: 0xe0000d5a, 0x99c9: 0xf0000404, 0x99ca: 0x002eda88, 0x99cb: 0x402eda20,
+-	0x99cc: 0xe0000e2e, 0x99cd: 0xe0000e2b, 0x99ce: 0xe0000da0, 0x99cf: 0xe0000d9d,
+-	0x99d0: 0xe0000de0, 0x99d1: 0xe0000ddd, 0x99d2: 0xe0000e93, 0x99d3: 0xe0000e8f,
+-	0x99d4: 0xe0000eca, 0x99d5: 0xe0000ec7, 0x99d6: 0xe0000edc, 0x99d7: 0xe0000ed9,
+-	0x99d8: 0xe0000ed0, 0x99d9: 0xe0000ecd, 0x99da: 0xe0000f1f, 0x99db: 0xe0000f1c,
+-	0x99dc: 0xe0000f2d, 0x99dd: 0xe0000f2a, 0x99de: 0xe0000f47, 0x99df: 0xe0000f44,
+-	0x99e0: 0x002fe883, 0x99e1: 0x402fe820, 0x99e2: 0xe0000f99, 0x99e3: 0xe0000f96,
+-	0x99e4: 0xe0000f8a, 0x99e5: 0xe0000f87, 0x99e6: 0x00303688, 0x99e7: 0x40303620,
+-	0x99e8: 0xe000102b, 0x99e9: 0xe0001028, 0x99ea: 0xe000103f, 0x99eb: 0xe000103c,
+-	0x99ec: 0xe0000fe7, 0x99ed: 0xe0000fe4, 0x99ee: 0xe0000ff9, 0x99ef: 0xe0000ff6,
+-	0x99f0: 0xe0001025, 0x99f1: 0xe0001022, 0x99f2: 0xe0001039, 0x99f3: 0xe0001036,
+-	0x99f4: 0xe00010d8, 0x99f5: 0xe00010d5, 0x99f6: 0xe000110e, 0x99f7: 0xe000110b,
+-	0x99f8: 0xe0001117, 0x99f9: 0xe000113b, 0x99fa: 0xe0001138, 0x99fb: 0xe000114d,
+-	0x99fc: 0xe000114a, 0x99fd: 0x00312c83, 0x99fe: 0x40312c20, 0x99ff: 0xe0000f64,
+-	// Block 0x268, offset 0x9a00
+-	0x9a00: 0x40321220, 0x9a01: 0x40321a20, 0x9a02: 0x40322220, 0x9a03: 0x40322a20,
+-	0x9a04: 0x002c6487, 0x9a05: 0x002c6485, 0x9a06: 0x002c6483, 0x9a07: 0x002e2487,
+-	0x9a08: 0x002e2485, 0x9a09: 0x002e2483, 0x9a0a: 0x002ea087, 0x9a0b: 0x002ea085,
+-	0x9a0c: 0x002ea083, 0x9a0d: 0xe0000947, 0x9a0e: 0xe0000944, 0x9a0f: 0xe0000c3d,
+-	0x9a10: 0xe0000c3a, 0x9a11: 0xe0000dcc, 0x9a12: 0xe0000dc9, 0x9a13: 0xe0000ff3,
+-	0x9a14: 0xe0000ff0, 0x9a15: 0xe000101e, 0x9a16: 0xe000101a, 0x9a17: 0xe0001006,
+-	0x9a18: 0xe0001002, 0x9a19: 0xe0001016, 0x9a1a: 0xe0001012, 0x9a1b: 0xe000100e,
+-	0x9a1c: 0xe000100a, 0x9a1d: 0x402cae20, 0x9a1e: 0xe0000962, 0x9a1f: 0xe000095e,
+-	0x9a20: 0xe0000976, 0x9a21: 0xe0000972, 0x9a22: 0xe00009f4, 0x9a23: 0xe00009ef,
+-	0x9a24: 0x002d3a88, 0x9a25: 0x402d3a20, 0x9a26: 0xe0000bbe, 0x9a27: 0xe0000bbb,
+-	0x9a28: 0xe0000c99, 0x9a29: 0xe0000c96, 0x9a2a: 0xe0000e20, 0x9a2b: 0xe0000e1d,
+-	0x9a2c: 0xe0000e27, 0x9a2d: 0xe0000e23, 0x9a2e: 0xe0001162, 0x9a2f: 0xe000115f,
+-	0x9a30: 0xe0000c8d, 0x9a31: 0xf0000a0a, 0x9a32: 0xf000040a, 0x9a33: 0xf0000404,
+-	0x9a34: 0xe0000bac, 0x9a35: 0xe0000ba9, 0x9a36: 0x002d7888, 0x9a37: 0x00319488,
+-	0x9a38: 0xe0000d57, 0x9a39: 0xe0000d54, 0x9a3a: 0xe0000954, 0x9a3b: 0xe0000950,
+-	0x9a3c: 0xe00009ea, 0x9a3d: 0xe00009e5, 0x9a3e: 0xe0000e19, 0x9a3f: 0xe0000e15,
+-	// Block 0x269, offset 0x9a40
+-	0x9a40: 0xe00009b1, 0x9a41: 0xe00009ae, 0x9a42: 0xe0000a22, 0x9a43: 0xe0000a1f,
+-	0x9a44: 0xe0000a28, 0x9a45: 0xe0000a25, 0x9a46: 0xe0000a2e, 0x9a47: 0xe0000a2b,
+-	0x9a48: 0xe0003704, 0x9a49: 0xe0003701, 0x9a4a: 0xe0000a8c, 0x9a4b: 0xe0000a89,
+-	0x9a4c: 0xe0000a98, 0x9a4d: 0xe0000a95, 0x9a4e: 0xe0000aa4, 0x9a4f: 0xe0000aa1,
+-	0x9a50: 0xe0000a92, 0x9a51: 0xe0000a8f, 0x9a52: 0xe0000a9e, 0x9a53: 0xe0000a9b,
+-	0x9a54: 0xe0000b55, 0x9a55: 0xe0000b51, 0x9a56: 0xe0000b4d, 0x9a57: 0xe0000b49,
+-	0x9a58: 0xe0000b7c, 0x9a59: 0xe0000b79, 0x9a5a: 0xe0000b82, 0x9a5b: 0xe0000b7f,
+-	0x9a5c: 0xe0000b39, 0x9a5d: 0xe0000b35, 0x9a5e: 0xe0000b8c, 0x9a5f: 0xe0000b89,
+-	0x9a60: 0xe0000bd0, 0x9a61: 0xe0000bcd, 0x9a62: 0xe0000c00, 0x9a63: 0xe0000bfd,
+-	0x9a64: 0xe0000c0c, 0x9a65: 0xe0000c09, 0x9a66: 0xe0000bfa, 0x9a67: 0xe0000bf7,
+-	0x9a68: 0xe0000c06, 0x9a69: 0xe0000c03, 0x9a6a: 0xe0000c12, 0x9a6b: 0xe0000c0f,
+-	0x9a6c: 0xe0000c7e, 0x9a6d: 0xe0000c7b, 0x9a6e: 0xe0000c4a, 0x9a6f: 0xe0000c46,
+-	0x9a70: 0xe0000c93, 0x9a71: 0xe0000c90, 0x9a72: 0xe0000cab, 0x9a73: 0xe0000ca8,
+-	0x9a74: 0xe0000cb1, 0x9a75: 0xe0000cae, 0x9a76: 0xe0000cde, 0x9a77: 0xe0000cdb,
+-	0x9a78: 0xe0000ce5, 0x9a79: 0xe0000ce1, 0x9a7a: 0xe0000cf2, 0x9a7b: 0xe0000cef,
+-	0x9a7c: 0xe0000cec, 0x9a7d: 0xe0000ce9, 0x9a7e: 0xe0000d1e, 0x9a7f: 0xe0000d1b,
+-	// Block 0x26a, offset 0x9a80
+-	0x9a80: 0xa0000000, 0x9a81: 0xa0000000, 0x9a82: 0xa0000000, 0x9a83: 0xa0000000,
+-	0x9a84: 0xa0000000, 0x9a85: 0xa0000000, 0x9a86: 0xa0000000, 0x9a87: 0xa0000000,
+-	0x9a88: 0xa0000000, 0x9a89: 0x40020020, 0x9a8a: 0x40020220, 0x9a8b: 0x40020420,
+-	0x9a8c: 0x40020620, 0x9a8d: 0x40020820, 0x9a8e: 0xa0000000, 0x9a8f: 0xa0000000,
+-	0x9a90: 0xa0000000, 0x9a91: 0xa0000000, 0x9a92: 0xa0000000, 0x9a93: 0xa0000000,
+-	0x9a94: 0xa0000000, 0x9a95: 0xa0000000, 0x9a96: 0xa0000000, 0x9a97: 0xa0000000,
+-	0x9a98: 0xa0000000, 0x9a99: 0xa0000000, 0x9a9a: 0xa0000000, 0x9a9b: 0xa0000000,
+-	0x9a9c: 0xa0000000, 0x9a9d: 0xa0000000, 0x9a9e: 0xa0000000, 0x9a9f: 0xa0000000,
+-	0x9aa0: 0x40021220, 0x9aa1: 0x4002ba20, 0x9aa2: 0x4003e020, 0x9aa3: 0x4004ea20,
+-	0x9aa4: 0x4027de20, 0x9aa5: 0x4004ec20, 0x9aa6: 0x4004e620, 0x9aa7: 0x4003d220,
+-	0x9aa8: 0x4003f420, 0x9aa9: 0x4003f620, 0x9aaa: 0x4004d820, 0x9aab: 0x40093820,
+-	0x9aac: 0x40024020, 0x9aad: 0x40021a20, 0x9aae: 0x4002e420, 0x9aaf: 0x4004e220,
+-	0x9ab0: 0x4029cc20, 0x9ab1: 0x4029ce20, 0x9ab2: 0x4029d020, 0x9ab3: 0x4029d220,
+-	0x9ab4: 0x4029d420, 0x9ab5: 0x4029d620, 0x9ab6: 0x4029d820, 0x9ab7: 0x4029da20,
+-	0x9ab8: 0x4029dc20, 0x9ab9: 0x4029de20, 0x9aba: 0x40026c20, 0x9abb: 0x40026220,
+-	0x9abc: 0x40094020, 0x9abd: 0x40094220, 0x9abe: 0x40094420, 0x9abf: 0x4002c420,
+-	// Block 0x26b, offset 0x9ac0
+-	0x9ac0: 0x4004d620, 0x9ac1: 0x002bde88, 0x9ac2: 0x002c0a88, 0x9ac3: 0xc59d2a64,
+-	0x9ac4: 0xc5a72b14, 0x9ac5: 0x002c9888, 0x9ac6: 0x002d0888, 0x9ac7: 0xc5b32be4,
+-	0x9ac8: 0x002d6888, 0x9ac9: 0x002d9a88, 0x9aca: 0x002dcc88, 0x9acb: 0x002dfe88,
+-	0x9acc: 0xc5bd2cb6, 0x9acd: 0x002e8288, 0x9ace: 0xc5c72d84, 0x9acf: 0xc5cf0b21,
+-	0x9ad0: 0x002f2c88, 0x9ad1: 0x002f5688, 0x9ad2: 0x002f7a88, 0x9ad3: 0xc5d52e14,
+-	0x9ad4: 0xc5dd2ea4, 0x9ad5: 0xc5e50b21, 0x9ad6: 0x0030be88, 0x9ad7: 0x0030e288,
+-	0x9ad8: 0x0030f688, 0x9ad9: 0x00310088, 0x9ada: 0xc5eb2f34, 0x9adb: 0x4003f820,
+-	0x9adc: 0x4004e420, 0x9add: 0x4003fa20, 0x9ade: 0x40062420, 0x9adf: 0x40021620,
+-	0x9ae0: 0x40061e20, 0x9ae1: 0x402bde20, 0x9ae2: 0x402c0a20, 0x9ae3: 0xc59a2a32,
+-	0x9ae4: 0xc5a22ac2, 0x9ae5: 0x402c9820, 0x9ae6: 0x402d0820, 0x9ae7: 0xc5b02bb2,
+-	0x9ae8: 0x402d6820, 0x9ae9: 0x402d9a20, 0x9aea: 0x402dcc20, 0x9aeb: 0x402dfe20,
+-	0x9aec: 0xc5b82c44, 0x9aed: 0x402e8220, 0x9aee: 0xc5c42d52, 0x9aef: 0xc5cc0b21,
+-	0x9af0: 0x402f2c20, 0x9af1: 0x402f5620, 0x9af2: 0x402f7a20, 0x9af3: 0xc5d22de2,
+-	0x9af4: 0xc5da2e72, 0x9af5: 0xc5e20b21, 0x9af6: 0x4030be20, 0x9af7: 0x4030e220,
+-	0x9af8: 0x4030f620, 0x9af9: 0x40310020, 0x9afa: 0xc5e82f02, 0x9afb: 0x4003fc20,
+-	0x9afc: 0x40094820, 0x9afd: 0x4003fe20, 0x9afe: 0x40094c20, 0x9aff: 0xa0000000,
+-	// Block 0x26c, offset 0x9b00
+-	0x9b00: 0xe00008f5, 0x9b01: 0xe00008ef, 0x9b02: 0xe0000921, 0x9b03: 0xe0000969,
+-	0x9b04: 0xe000095b, 0x9b05: 0xe000094d, 0x9b06: 0xe00009dd, 0x9b07: 0xe0000a53,
+-	0x9b08: 0xe0000ae8, 0x9b09: 0xe0000ae2, 0x9b0a: 0xe0000af4, 0x9b0b: 0xe0000b20,
+-	0x9b0c: 0xe0000c2b, 0x9b0d: 0xe0000c25, 0x9b0e: 0xe0000c37, 0x9b0f: 0xe0000c43,
+-	0x9b10: 0xe0000ab3, 0x9b11: 0xe0000d63, 0x9b12: 0xe0000d9a, 0x9b13: 0xe0000d94,
+-	0x9b14: 0xe0000da6, 0x9b15: 0xe0000de6, 0x9b16: 0x002ee483, 0x9b17: 0x40093e20,
+-	0x9b18: 0xe0000e12, 0x9b19: 0xe0000fe1, 0x9b1a: 0xe0000fdb, 0x9b1b: 0xe0000fed,
+-	0x9b1c: 0x00306e83, 0x9b1d: 0xe0001102, 0x9b1e: 0x00318888, 0x9b1f: 0xe0000f7b,
+-	0x9b20: 0xe00008f2, 0x9b21: 0xe00008ec, 0x9b22: 0xe000091e, 0x9b23: 0xe0000966,
+-	0x9b24: 0xe0000958, 0x9b25: 0xe000094a, 0x9b26: 0xe00009d5, 0x9b27: 0xe0000a4d,
+-	0x9b28: 0xe0000ae5, 0x9b29: 0xe0000adf, 0x9b2a: 0xe0000af1, 0x9b2b: 0xe0000b1d,
+-	0x9b2c: 0xe0000c28, 0x9b2d: 0xe0000c22, 0x9b2e: 0xe0000c34, 0x9b2f: 0xe0000c40,
+-	0x9b30: 0xe0000aad, 0x9b31: 0xe0000d60, 0x9b32: 0xe0000d97, 0x9b33: 0xe0000d91,
+-	0x9b34: 0xe0000da3, 0x9b35: 0xe0000de3, 0x9b36: 0x402ee420, 0x9b37: 0x40093c20,
+-	0x9b38: 0xe0000e0f, 0x9b39: 0xe0000fde, 0x9b3a: 0xe0000fd8, 0x9b3b: 0xe0000fea,
+-	0x9b3c: 0x40306e20, 0x9b3d: 0xe00010ff, 0x9b3e: 0x40318820, 0x9b3f: 0xe0001114,
+-	// Block 0x26d, offset 0x9b40
+-	0x9b40: 0xe0000cfe, 0x9b41: 0xe0000cf8, 0x9b42: 0xe0000cf5, 0x9b43: 0xe0000d51,
+-	0x9b44: 0xe0000d4e, 0x9b45: 0xe0000d6f, 0x9b46: 0xe0000d6c, 0x9b47: 0xe0000d5d,
+-	0x9b48: 0xe0000d5a, 0x9b49: 0xf0000404, 0x9b4a: 0x002eda88, 0x9b4b: 0x402eda20,
+-	0x9b4c: 0xe0000e2e, 0x9b4d: 0xe0000e2b, 0x9b4e: 0xe0000da0, 0x9b4f: 0xe0000d9d,
+-	0x9b50: 0x002ee4a3, 0x9b51: 0x402ee421, 0x9b52: 0xe0000e93, 0x9b53: 0xe0000e8f,
+-	0x9b54: 0xe0000eca, 0x9b55: 0xe0000ec7, 0x9b56: 0xe0000edc, 0x9b57: 0xe0000ed9,
+-	0x9b58: 0xe0000ed0, 0x9b59: 0xe0000ecd, 0x9b5a: 0xe0000f1f, 0x9b5b: 0xe0000f1c,
+-	0x9b5c: 0xe0000f2d, 0x9b5d: 0xe0000f2a, 0x9b5e: 0xe0000f47, 0x9b5f: 0xe0000f44,
+-	0x9b60: 0xe0000f33, 0x9b61: 0xe0000f30, 0x9b62: 0xe0000f99, 0x9b63: 0xe0000f96,
+-	0x9b64: 0xe0000f8a, 0x9b65: 0xe0000f87, 0x9b66: 0x00303688, 0x9b67: 0x40303620,
+-	0x9b68: 0xe000102b, 0x9b69: 0xe0001028, 0x9b6a: 0xe000103f, 0x9b6b: 0xe000103c,
+-	0x9b6c: 0xe0000fe7, 0x9b6d: 0xe0000fe4, 0x9b6e: 0xe0000ff9, 0x9b6f: 0xe0000ff6,
+-	0x9b70: 0x00306ea3, 0x9b71: 0x40306e21, 0x9b72: 0xe0001039, 0x9b73: 0xe0001036,
+-	0x9b74: 0xe00010d8, 0x9b75: 0xe00010d5, 0x9b76: 0xe000110e, 0x9b77: 0xe000110b,
+-	0x9b78: 0xe0001117, 0x9b79: 0xe000113b, 0x9b7a: 0xe0001138, 0x9b7b: 0xe000114d,
+-	0x9b7c: 0xe000114a, 0x9b7d: 0xe0001147, 0x9b7e: 0xe0001144, 0x9b7f: 0xe0000f64,
+-	// Block 0x26e, offset 0x9b80
+-	0x9b80: 0x40321220, 0x9b81: 0x40321a20, 0x9b82: 0x40322220, 0x9b83: 0x40322a20,
+-	0x9b84: 0xe0000ad5, 0x9b85: 0xe0000ad1, 0x9b86: 0xe0000acd, 0x9b87: 0xf0000a0a,
+-	0x9b88: 0xf000040a, 0x9b89: 0xf0000404, 0x9b8a: 0xf0000a0a, 0x9b8b: 0xf000040a,
+-	0x9b8c: 0xf0000404, 0x9b8d: 0xe0000947, 0x9b8e: 0xe0000944, 0x9b8f: 0xe0000c3d,
+-	0x9b90: 0xe0000c3a, 0x9b91: 0xe0000dcc, 0x9b92: 0xe0000dc9, 0x9b93: 0xe0000ff3,
+-	0x9b94: 0xe0000ff0, 0x9b95: 0xe00025a8, 0x9b96: 0xe00025a5, 0x9b97: 0xe0002596,
+-	0x9b98: 0xe0002593, 0x9b99: 0xe00025a2, 0x9b9a: 0xe000259f, 0x9b9b: 0xe000259c,
+-	0x9b9c: 0xe0002599, 0x9b9d: 0x402cae20, 0x9b9e: 0xe0000962, 0x9b9f: 0xe000095e,
+-	0x9ba0: 0xe0000976, 0x9ba1: 0xe0000972, 0x9ba2: 0xe00009f4, 0x9ba3: 0xe00009ef,
+-	0x9ba4: 0x002d3a88, 0x9ba5: 0x402d3a20, 0x9ba6: 0xe0000bbe, 0x9ba7: 0xe0000bbb,
+-	0x9ba8: 0xe0000c99, 0x9ba9: 0xe0000c96, 0x9baa: 0xe0000e20, 0x9bab: 0xe0000e1d,
+-	0x9bac: 0xe0000e27, 0x9bad: 0xe0000e23, 0x9bae: 0xe0001162, 0x9baf: 0xe000115f,
+-	0x9bb0: 0xe0000c8d, 0x9bb1: 0xf0000a0a, 0x9bb2: 0xf000040a, 0x9bb3: 0xf0000404,
+-	0x9bb4: 0xe0000bac, 0x9bb5: 0xe0000ba9, 0x9bb6: 0x002d7888, 0x9bb7: 0x00319488,
+-	0x9bb8: 0xe0000d57, 0x9bb9: 0xe0000d54, 0x9bba: 0xe0000954, 0x9bbb: 0xe0000950,
+-	0x9bbc: 0xe00009ea, 0x9bbd: 0xe00009e5, 0x9bbe: 0xe0000e19, 0x9bbf: 0xe0000e15,
+-	// Block 0x26f, offset 0x9bc0
+-	0x9bc0: 0xe000098f, 0x9bc1: 0xe000098c, 0x9bc2: 0xe0000995, 0x9bc3: 0xe0000992,
+-	0x9bc4: 0xe0000b62, 0x9bc5: 0xe0000b5f, 0x9bc6: 0xe0000b68, 0x9bc7: 0xe0000b65,
+-	0x9bc8: 0xe0000c6c, 0x9bc9: 0xe0000c69, 0x9bca: 0xe0000c72, 0x9bcb: 0xe0000c6f,
+-	0x9bcc: 0xe0000e4a, 0x9bcd: 0xe0000e47, 0x9bce: 0xe0000e50, 0x9bcf: 0xe0000e4d,
+-	0x9bd0: 0xe0000ee8, 0x9bd1: 0xe0000ee5, 0x9bd2: 0xe0000eee, 0x9bd3: 0xe0000eeb,
+-	0x9bd4: 0xe0001053, 0x9bd5: 0xe0001050, 0x9bd6: 0xe0001059, 0x9bd7: 0xe0001056,
+-	0x9bd8: 0xe0000f61, 0x9bd9: 0xe0000f5e, 0x9bda: 0xe0000fa5, 0x9bdb: 0xe0000fa2,
+-	0x9bdc: 0x00312288, 0x9bdd: 0x40312220, 0x9bde: 0xe0000bf4, 0x9bdf: 0xe0000bf1,
+-	0x9be0: 0x002ebc88, 0x9be1: 0x402c8c20, 0x9be2: 0x002f2288, 0x9be3: 0x402f2220,
+-	0x9be4: 0x00314088, 0x9be5: 0x40314020, 0x9be6: 0xe000096f, 0x9be7: 0xe000096c,
+-	0x9be8: 0xe0000b32, 0x9be9: 0xe0000b2f, 0x9bea: 0xe0002590, 0x9beb: 0xe000258d,
+-	0x9bec: 0xe0000dfd, 0x9bed: 0xe0000df9, 0x9bee: 0xe0000e04, 0x9bef: 0xe0000e01,
+-	0x9bf0: 0xe0000e0b, 0x9bf1: 0xe0000e07, 0x9bf2: 0xe0001129, 0x9bf3: 0xe0001126,
+-	0x9bf4: 0x402e5e20, 0x9bf5: 0x402ed020, 0x9bf6: 0x40305a20, 0x9bf7: 0x402dd420,
+-	0x9bf8: 0xe0000abf, 0x9bf9: 0xe0000ec4, 0x9bfa: 0x002be888, 0x9bfb: 0x002c4488,
+-	0x9bfc: 0x402c4420, 0x9bfd: 0x002e3888, 0x9bfe: 0x00303e88, 0x9bff: 0x402ffc20,
+-	// Block 0x270, offset 0x9c00
+-	0x9c00: 0x00339288, 0x9c01: 0x40339220, 0x9c02: 0x0033a088, 0x9c03: 0x4033a020,
+-	0x9c04: 0x0033ee88, 0x9c05: 0x4033ee20, 0x9c06: 0x00341088, 0x9c07: 0x40341020,
+-	0x9c08: 0x0034a488, 0x9c09: 0x4034a420, 0x9c0a: 0x0034ec88, 0x9c0b: 0x4034ec20,
+-	0x9c0c: 0x00354288, 0x9c0d: 0x40354220, 0x9c0e: 0x00355688, 0x9c0f: 0x40355620,
+-	0x9c10: 0x0033f088, 0x9c11: 0x4033f020, 0x9c12: 0x00349688, 0x9c13: 0x40349620,
+-	0x9c14: 0x0034a688, 0x9c15: 0x4034a620, 0x9c16: 0x00353888, 0x9c17: 0x40353820,
+-	0x9c18: 0x0036cc88, 0x9c19: 0x4036cc20, 0x9c1a: 0x00348288, 0x9c1b: 0x40348220,
+-	0x9c1c: 0x00372e88, 0x9c1d: 0x40372e20, 0x9c1e: 0x00348088, 0x9c1f: 0x40348020,
+-	0x9c20: 0x00349888, 0x9c21: 0x40349820, 0x9c22: 0x0034da88, 0x9c23: 0x4034da20,
+-	0x9c24: 0x00351688, 0x9c25: 0x40351620, 0x9c26: 0x0035dc88, 0x9c27: 0x4035dc20,
+-	0x9c31: 0x00384288, 0x9c32: 0x00384488, 0x9c33: 0x00384688,
+-	0x9c34: 0x00384888, 0x9c35: 0xc5f02f91, 0x9c36: 0x00384c88, 0x9c37: 0x00384e88,
+-	0x9c38: 0x00385088, 0x9c39: 0x00385288, 0x9c3a: 0x00385488, 0x9c3b: 0x00385688,
+-	0x9c3c: 0x00385888, 0x9c3d: 0x00385a88, 0x9c3e: 0x00385c88, 0x9c3f: 0x00385e88,
+-	// Block 0x271, offset 0x9c40
+-	0x9c40: 0x40388020, 0x9c41: 0x40388220, 0x9c42: 0x40388420, 0x9c43: 0x40388620,
+-	0x9c44: 0x40388820, 0x9c45: 0x40388a20, 0x9c46: 0x40388c20, 0x9c47: 0x40388a20,
+-	0x9c49: 0x40026e20, 0x9c4a: 0x40021c20,
+-	0x9c4f: 0x4027e420,
+-	0x9c51: 0xadc00000, 0x9c52: 0xae600000, 0x9c53: 0xae600000,
+-	0x9c54: 0xae600000, 0x9c55: 0xae600000, 0x9c56: 0xadc00000, 0x9c57: 0xae600000,
+-	0x9c58: 0xae600000, 0x9c59: 0xae600000, 0x9c5a: 0xade00000, 0x9c5b: 0xadc00000,
+-	0x9c5c: 0xae600000, 0x9c5d: 0xae600000, 0x9c5e: 0xae600000, 0x9c5f: 0xae600000,
+-	0x9c60: 0xae600000, 0x9c61: 0xae600000, 0x9c62: 0xadc00000, 0x9c63: 0xadc00000,
+-	0x9c64: 0xadc00000, 0x9c65: 0xadc00000, 0x9c66: 0xadc00000, 0x9c67: 0xadc00000,
+-	0x9c68: 0xae600000, 0x9c69: 0xae600000, 0x9c6a: 0xadc00000, 0x9c6b: 0xae600000,
+-	0x9c6c: 0xae600000, 0x9c6d: 0xade00000, 0x9c6e: 0xae400000, 0x9c6f: 0xae600000,
+-	0x9c70: 0xa0a08502, 0x9c71: 0xa0b08602, 0x9c72: 0xa0c08702, 0x9c73: 0xa0d08802,
+-	0x9c74: 0xa0e08902, 0x9c75: 0xa0f08a02, 0x9c76: 0xa1008b02, 0x9c77: 0xa1108c02,
+-	0x9c78: 0xa1208d02, 0x9c79: 0xa1308e02, 0x9c7a: 0xa1308e02, 0x9c7b: 0xa1408f02,
+-	0x9c7c: 0xa1509202, 0x9c7d: 0xa1600000, 0x9c7e: 0x40055420, 0x9c7f: 0xa1709502,
+-	// Block 0x272, offset 0x9c80
+-	0x9c80: 0xa0000000, 0x9c81: 0xa0000000, 0x9c82: 0xa0000000, 0x9c83: 0xa0000000,
+-	0x9c84: 0xa0000000, 0x9c85: 0xa0000000, 0x9c86: 0xa0000000, 0x9c87: 0xa0000000,
+-	0x9c88: 0xa0000000, 0x9c89: 0x40020020, 0x9c8a: 0x40020220, 0x9c8b: 0x40020420,
+-	0x9c8c: 0x40020620, 0x9c8d: 0x40020820, 0x9c8e: 0xa0000000, 0x9c8f: 0xa0000000,
+-	0x9c90: 0xa0000000, 0x9c91: 0xa0000000, 0x9c92: 0xa0000000, 0x9c93: 0xa0000000,
+-	0x9c94: 0xa0000000, 0x9c95: 0xa0000000, 0x9c96: 0xa0000000, 0x9c97: 0xa0000000,
+-	0x9c98: 0xa0000000, 0x9c99: 0xa0000000, 0x9c9a: 0xa0000000, 0x9c9b: 0xa0000000,
+-	0x9c9c: 0xa0000000, 0x9c9d: 0xa0000000, 0x9c9e: 0xa0000000, 0x9c9f: 0xa0000000,
+-	0x9ca0: 0x40021220, 0x9ca1: 0x4002ba20, 0x9ca2: 0x4003e020, 0x9ca3: 0x4004ea20,
+-	0x9ca4: 0x4027de20, 0x9ca5: 0x4004ec20, 0x9ca6: 0x4004e620, 0x9ca7: 0x4003d220,
+-	0x9ca8: 0x4003f420, 0x9ca9: 0x4003f620, 0x9caa: 0x4004d820, 0x9cab: 0x40093820,
+-	0x9cac: 0x40024020, 0x9cad: 0x40021a20, 0x9cae: 0x4002e420, 0x9caf: 0x4004e220,
+-	0x9cb0: 0x4029cc20, 0x9cb1: 0x4029ce20, 0x9cb2: 0x4029d020, 0x9cb3: 0x4029d220,
+-	0x9cb4: 0x4029d420, 0x9cb5: 0x4029d620, 0x9cb6: 0x4029d820, 0x9cb7: 0x4029da20,
+-	0x9cb8: 0x4029dc20, 0x9cb9: 0x4029de20, 0x9cba: 0x40026c20, 0x9cbb: 0x40026220,
+-	0x9cbc: 0x40094020, 0x9cbd: 0x40094220, 0x9cbe: 0x40094420, 0x9cbf: 0x4002c420,
+-	// Block 0x273, offset 0x9cc0
+-	0x9cc0: 0x4004d620, 0x9cc1: 0x002bde88, 0x9cc2: 0x002c0a88, 0x9cc3: 0xc5f409c2,
+-	0x9cc4: 0x002c6288, 0x9cc5: 0x002c9888, 0x9cc6: 0x002d0888, 0x9cc7: 0xc5fb2fe6,
+-	0x9cc8: 0x002d6888, 0x9cc9: 0xc6043041, 0x9cca: 0x002dcc88, 0x9ccb: 0xc6093084,
+-	0x9ccc: 0xc0030002, 0x9ccd: 0x002e8288, 0x9cce: 0xc6123105, 0x9ccf: 0xc33f3041,
+-	0x9cd0: 0x002f2c88, 0x9cd1: 0x002f5688, 0x9cd2: 0x002f7a88, 0x9cd3: 0xc57509c2,
+-	0x9cd4: 0x00302c88, 0x9cd5: 0xc3473041, 0x9cd6: 0x0030be88, 0x9cd7: 0x0030e288,
+-	0x9cd8: 0x0030f688, 0x9cd9: 0x00310088, 0x9cda: 0x00312a88, 0x9cdb: 0x4003f820,
+-	0x9cdc: 0x4004e420, 0x9cdd: 0x4003fa20, 0x9cde: 0x40062420, 0x9cdf: 0x40021620,
+-	0x9ce0: 0x40061e20, 0x9ce1: 0x402bde20, 0x9ce2: 0x402c0a20, 0x9ce3: 0xc5f209b1,
+-	0x9ce4: 0x402c6220, 0x9ce5: 0x402c9820, 0x9ce6: 0x402d0820, 0x9ce7: 0xc5f72fb3,
+-	0x9ce8: 0x402d6820, 0x9ce9: 0xc6023041, 0x9cea: 0x402dcc20, 0x9ceb: 0xc6063062,
+-	0x9cec: 0xc0000002, 0x9ced: 0x402e8220, 0x9cee: 0xc60e30c3, 0x9cef: 0xc33d3041,
+-	0x9cf0: 0x402f2c20, 0x9cf1: 0x402f5620, 0x9cf2: 0x402f7a20, 0x9cf3: 0xc34109b1,
+-	0x9cf4: 0x40302c20, 0x9cf5: 0xc3453041, 0x9cf6: 0x4030be20, 0x9cf7: 0x4030e220,
+-	0x9cf8: 0x4030f620, 0x9cf9: 0x40310020, 0x9cfa: 0x40312a20, 0x9cfb: 0x4003fc20,
+-	0x9cfc: 0x40094820, 0x9cfd: 0x4003fe20, 0x9cfe: 0x40094c20, 0x9cff: 0xa0000000,
+-	// Block 0x274, offset 0x9d00
+-	0x9d00: 0xe0000d24, 0x9d01: 0xe0000d21, 0x9d02: 0xe0000d2a, 0x9d03: 0xe0000d27,
+-	0x9d04: 0x002ea083, 0x9d05: 0x402ea020, 0x9d06: 0xe0000d7b, 0x9d07: 0xe0000d78,
+-	0x9d08: 0xe0000d87, 0x9d09: 0xe0000d84, 0x9d0a: 0xe0000d81, 0x9d0b: 0xe0000d7e,
+-	0x9d0c: 0xe0000ded, 0x9d0d: 0xe0000de9, 0x9d0e: 0xe0000df5, 0x9d0f: 0xe0000df1,
+-	0x9d10: 0xe0000e3d, 0x9d11: 0xe0000e39, 0x9d12: 0xe0000e35, 0x9d13: 0xe0000e31,
+-	0x9d14: 0xe0000ea7, 0x9d15: 0xe0000ea4, 0x9d16: 0xe0000ead, 0x9d17: 0xe0000eaa,
+-	0x9d18: 0xe0000ed6, 0x9d19: 0xe0000ed3, 0x9d1a: 0xe0000ef4, 0x9d1b: 0xe0000ef1,
+-	0x9d1c: 0xe0000efb, 0x9d1d: 0xe0000ef7, 0x9d1e: 0xe0000f02, 0x9d1f: 0xe0000eff,
+-	0x9d20: 0xe0000f41, 0x9d21: 0xe0000f3e, 0x9d22: 0xe0000f53, 0x9d23: 0xe0000f50,
+-	0x9d24: 0xe0000f26, 0x9d25: 0xe0000f22, 0x9d26: 0xe0000f3a, 0x9d27: 0xe0000f36,
+-	0x9d28: 0xe0000f5a, 0x9d29: 0xe0000f56, 0x9d2a: 0xe0000f93, 0x9d2b: 0xe0000f90,
+-	0x9d2c: 0xe0000f9f, 0x9d2d: 0xe0000f9c, 0x9d2e: 0xe0000fb1, 0x9d2f: 0xe0000fae,
+-	0x9d30: 0xe0000fab, 0x9d31: 0xe0000fa8, 0x9d32: 0xe0001093, 0x9d33: 0xe0001090,
+-	0x9d34: 0xe000109f, 0x9d35: 0xe000109c, 0x9d36: 0xe0001099, 0x9d37: 0xe0001096,
+-	0x9d38: 0xe0001032, 0x9d39: 0xe000102e, 0x9d3a: 0xe0001046, 0x9d3b: 0xe0001042,
+-	0x9d3c: 0xe00010a9, 0x9d3d: 0xe00010a6, 0x9d3e: 0xe00010af, 0x9d3f: 0xe00010ac,
+-	// Block 0x275, offset 0x9d40
+-	0x9d40: 0xe0000b03, 0x9d41: 0xe0000aff, 0x9d42: 0xe0000b13, 0x9d43: 0xe0000b0f,
+-	0x9d44: 0xe0000b0b, 0x9d45: 0xe0000b07, 0x9d46: 0xe0000b75, 0x9d47: 0xe0000b71,
+-	0x9d48: 0xe0000c66, 0x9d49: 0xe0000c63, 0x9d4a: 0x002d9c83, 0x9d4b: 0x402d9c20,
+-	0x9d4c: 0x002ee483, 0x9d4d: 0x402ee420, 0x9d4e: 0xe0000e44, 0x9d4f: 0xe0000e41,
+-	0x9d50: 0xe0000dad, 0x9d51: 0xe0000da9, 0x9d52: 0xe0000db5, 0x9d53: 0xe0000db1,
+-	0x9d54: 0xe0000dc5, 0x9d55: 0xe0000dc1, 0x9d56: 0xe0000dbd, 0x9d57: 0xe0000db9,
+-	0x9d58: 0xe000375b, 0x9d59: 0xe0003758, 0x9d5a: 0xe0000e5d, 0x9d5b: 0xe0000e59,
+-	0x9d5c: 0xe0000e65, 0x9d5d: 0xe0000e61, 0x9d5e: 0xe0000e75, 0x9d5f: 0xe0000e71,
+-	0x9d60: 0xe0000e6d, 0x9d61: 0xe0000e69, 0x9d62: 0xe0003761, 0x9d63: 0xe000375e,
+-	0x9d64: 0x00306e83, 0x9d65: 0x40306e20, 0x9d66: 0xe000104d, 0x9d67: 0xe000104a,
+-	0x9d68: 0xe0001066, 0x9d69: 0xe0001062, 0x9d6a: 0xe000106e, 0x9d6b: 0xe000106a,
+-	0x9d6c: 0xe000107e, 0x9d6d: 0xe000107a, 0x9d6e: 0xe0001076, 0x9d6f: 0xe0001072,
+-	0x9d70: 0xe0003767, 0x9d71: 0xe0003764, 0x9d72: 0xe0001108, 0x9d73: 0xe0001105,
+-	0x9d74: 0xe0001135, 0x9d75: 0xe0001132, 0x9d76: 0xe000112f, 0x9d77: 0xe000112c,
+-	0x9d78: 0xe000111d, 0x9d79: 0xe000111a, 0x9d7a: 0xe0000d0a, 0x9d7b: 0xe0000d07,
+-	0x9d7c: 0x0030d888, 0x9d7d: 0x4030d820, 0x9d7e: 0x00312088, 0x9d7f: 0x40312020,
+-	// Block 0x276, offset 0x9d80
+-	0x9d80: 0xa0000000, 0x9d81: 0xa0000000, 0x9d82: 0xa0000000, 0x9d83: 0xa0000000,
+-	0x9d84: 0xa0000000, 0x9d85: 0xa0000000, 0x9d86: 0xa0000000, 0x9d87: 0xa0000000,
+-	0x9d88: 0xa0000000, 0x9d89: 0x40020020, 0x9d8a: 0x40020220, 0x9d8b: 0x40020420,
+-	0x9d8c: 0x40020620, 0x9d8d: 0x40020820, 0x9d8e: 0xa0000000, 0x9d8f: 0xa0000000,
+-	0x9d90: 0xa0000000, 0x9d91: 0xa0000000, 0x9d92: 0xa0000000, 0x9d93: 0xa0000000,
+-	0x9d94: 0xa0000000, 0x9d95: 0xa0000000, 0x9d96: 0xa0000000, 0x9d97: 0xa0000000,
+-	0x9d98: 0xa0000000, 0x9d99: 0xa0000000, 0x9d9a: 0xa0000000, 0x9d9b: 0xa0000000,
+-	0x9d9c: 0xa0000000, 0x9d9d: 0xa0000000, 0x9d9e: 0xa0000000, 0x9d9f: 0xa0000000,
+-	0x9da0: 0x40021220, 0x9da1: 0x4002ba20, 0x9da2: 0x4003e020, 0x9da3: 0x4004ea20,
+-	0x9da4: 0x4027de20, 0x9da5: 0x4004ec20, 0x9da6: 0x4004e620, 0x9da7: 0x4003d220,
+-	0x9da8: 0x4003f420, 0x9da9: 0x4003f620, 0x9daa: 0x4004d820, 0x9dab: 0x40093820,
+-	0x9dac: 0x40024020, 0x9dad: 0x40021a20, 0x9dae: 0x4002e420, 0x9daf: 0x4004e220,
+-	0x9db0: 0x4029cc20, 0x9db1: 0x4029ce20, 0x9db2: 0x4029d020, 0x9db3: 0x4029d220,
+-	0x9db4: 0x4029d420, 0x9db5: 0x4029d620, 0x9db6: 0x4029d820, 0x9db7: 0x4029da20,
+-	0x9db8: 0x4029dc20, 0x9db9: 0x4029de20, 0x9dba: 0x40026c20, 0x9dbb: 0x40026220,
+-	0x9dbc: 0x40094020, 0x9dbd: 0x40094220, 0x9dbe: 0x40094420, 0x9dbf: 0x4002c420,
+-	// Block 0x277, offset 0x9dc0
+-	0x9dc0: 0x4004d620, 0x9dc1: 0xc61c3161, 0x9dc2: 0x002c0a88, 0x9dc3: 0x002c3a88,
+-	0x9dc4: 0x002c6288, 0x9dc5: 0xc62231a1, 0x9dc6: 0x002d0888, 0x9dc7: 0x002d2288,
+-	0x9dc8: 0x002d6888, 0x9dc9: 0xc62631a1, 0x9dca: 0x002dcc88, 0x9dcb: 0x002dfe88,
+-	0x9dcc: 0xc0030002, 0x9dcd: 0x002e8288, 0x9dce: 0x002e9e88, 0x9dcf: 0xc62b31c1,
+-	0x9dd0: 0x002f2c88, 0x9dd1: 0x002f5688, 0x9dd2: 0x002f7a88, 0x9dd3: 0x002fe688,
+-	0x9dd4: 0x00302c88, 0x9dd5: 0xc63031a1, 0x9dd6: 0x0030be88, 0x9dd7: 0x0030e288,
+-	0x9dd8: 0x0030f688, 0x9dd9: 0xc63431a1, 0x9dda: 0x00312a88, 0x9ddb: 0x4003f820,
+-	0x9ddc: 0x4004e420, 0x9ddd: 0x4003fa20, 0x9dde: 0x40062420, 0x9ddf: 0x40021620,
+-	0x9de0: 0x40061e20, 0x9de1: 0xc6183161, 0x9de2: 0x402c0a20, 0x9de3: 0x402c3a20,
+-	0x9de4: 0x402c6220, 0x9de5: 0xc62031a1, 0x9de6: 0x402d0820, 0x9de7: 0x402d2220,
+-	0x9de8: 0x402d6820, 0x9de9: 0xc62431a1, 0x9dea: 0x402dcc20, 0x9deb: 0x402dfe20,
+-	0x9dec: 0xc0000002, 0x9ded: 0x402e8220, 0x9dee: 0x402e9e20, 0x9def: 0xc62831c1,
+-	0x9df0: 0x402f2c20, 0x9df1: 0x402f5620, 0x9df2: 0x402f7a20, 0x9df3: 0x402fe620,
+-	0x9df4: 0x40302c20, 0x9df5: 0xc62e31a1, 0x9df6: 0x4030be20, 0x9df7: 0x4030e220,
+-	0x9df8: 0x4030f620, 0x9df9: 0xc63231a1, 0x9dfa: 0x40312a20, 0x9dfb: 0x4003fc20,
+-	0x9dfc: 0x40094820, 0x9dfd: 0x4003fe20, 0x9dfe: 0x40094c20, 0x9dff: 0xa0000000,
+-	// Block 0x278, offset 0x9e00
+-	0x9e00: 0xe00008f5, 0x9e01: 0x002c0883, 0x9e02: 0xe0000921, 0x9e03: 0xe0000969,
+-	0x9e04: 0x00320ca3, 0x9e05: 0x00321083, 0x9e06: 0x00320c83, 0x9e07: 0xe0000a53,
+-	0x9e08: 0xe0000ae8, 0x9e09: 0x002d0683, 0x9e0a: 0xe0000af4, 0x9e0b: 0xe0000b20,
+-	0x9e0c: 0xe0000c2b, 0x9e0d: 0x002dca83, 0x9e0e: 0xe0000c37, 0x9e0f: 0xe0000c43,
+-	0x9e10: 0x002c6483, 0x9e11: 0xe0000d63, 0x9e12: 0xe0000d9a, 0x9e13: 0x002f2a83,
+-	0x9e14: 0xe0000da6, 0x9e15: 0xe0000de6, 0x9e16: 0x00320e83, 0x9e17: 0x40093e20,
+-	0x9e18: 0x00320ea3, 0x9e19: 0xe0000fe1, 0x9e1a: 0x0030bc83, 0x9e1b: 0xe0000fed,
+-	0x9e1c: 0xe0000fff, 0x9e1d: 0x00312883, 0x9e1e: 0x00318888, 0x9e1f: 0xe0000f7b,
+-	0x9e20: 0xe00008f2, 0x9e21: 0x402c0820, 0x9e22: 0xe000091e, 0x9e23: 0xe0000966,
+-	0x9e24: 0x40320c21, 0x9e25: 0x40321020, 0x9e26: 0x40320c20, 0x9e27: 0xe0000a4d,
+-	0x9e28: 0xe0000ae5, 0x9e29: 0x402d0620, 0x9e2a: 0xe0000af1, 0x9e2b: 0xe0000b1d,
+-	0x9e2c: 0xe0000c28, 0x9e2d: 0x402dca20, 0x9e2e: 0xe0000c34, 0x9e2f: 0xe0000c40,
+-	0x9e30: 0x402c6420, 0x9e31: 0xe0000d60, 0x9e32: 0xe0000d97, 0x9e33: 0x402f2a20,
+-	0x9e34: 0xe0000da3, 0x9e35: 0xe0000de3, 0x9e36: 0x40320e20, 0x9e37: 0x40093c20,
+-	0x9e38: 0x40320e21, 0x9e39: 0xe0000fde, 0x9e3a: 0x4030bc20, 0x9e3b: 0xe0000fea,
+-	0x9e3c: 0xe0000ffc, 0x9e3d: 0x40312820, 0x9e3e: 0x40318820, 0x9e3f: 0xe0001114,
+-	// Block 0x279, offset 0x9e40
+-	0x9e40: 0xe0000983, 0x9e41: 0xe0000980, 0x9e42: 0xe00008fb, 0x9e43: 0xe00008f8,
+-	0x9e44: 0xe000097d, 0x9e45: 0xe000097a, 0x9e46: 0xe0000a38, 0x9e47: 0xe0000a35,
+-	0x9e48: 0xe0000a3e, 0x9e49: 0xe0000a3b, 0x9e4a: 0xe0000a4a, 0x9e4b: 0xe0000a47,
+-	0x9e4c: 0xe0000a44, 0x9e4d: 0xe0000a41, 0x9e4e: 0xe0000a86, 0x9e4f: 0xe0000a83,
+-	0x9e50: 0x002c62a3, 0x9e51: 0x402c6221, 0x9e52: 0xe0000b46, 0x9e53: 0xe0000b43,
+-	0x9e54: 0xe0000aee, 0x9e55: 0xe0000aeb, 0x9e56: 0xe0000b2c, 0x9e57: 0xe0000b29,
+-	0x9e58: 0xe0000b40, 0x9e59: 0xe0000b3d, 0x9e5a: 0xe0000b1a, 0x9e5b: 0xe0000b17,
+-	0x9e5c: 0xe0000bb8, 0x9e5d: 0xe0000bb5, 0x9e5e: 0xe0000bb2, 0x9e5f: 0xe0000baf,
+-	0x9e60: 0xe0000bc4, 0x9e61: 0xe0000bc1, 0x9e62: 0xe0000bca, 0x9e63: 0xe0000bc7,
+-	0x9e64: 0xe0000bee, 0x9e65: 0xe0000beb, 0x9e66: 0xe0000c1b, 0x9e67: 0xe0000c18,
+-	0x9e68: 0xe0000c51, 0x9e69: 0xe0000c4e, 0x9e6a: 0xe0000c60, 0x9e6b: 0xe0000c5d,
+-	0x9e6c: 0xe0000c31, 0x9e6d: 0xe0000c2e, 0x9e6e: 0xe0000c5a, 0x9e6f: 0xe0000c57,
+-	0x9e70: 0xe0000c54, 0x9e71: 0x402da220, 0x9e72: 0xf0000a0a, 0x9e73: 0xf0000404,
+-	0x9e74: 0xe0000c8a, 0x9e75: 0xe0000c87, 0x9e76: 0xe0000c9f, 0x9e77: 0xe0000c9c,
+-	0x9e78: 0x402f7220, 0x9e79: 0xe0000ccc, 0x9e7a: 0xe0000cc9, 0x9e7b: 0xe0000cd8,
+-	0x9e7c: 0xe0000cd5, 0x9e7d: 0xe0000cd2, 0x9e7e: 0xe0000ccf, 0x9e7f: 0xe0000d04,
+-	// Block 0x27a, offset 0x9e80
+-	0x9e80: 0x40321220, 0x9e81: 0x40321a20, 0x9e82: 0x40322220, 0x9e83: 0x40322a20,
+-	0x9e84: 0xe0000ad5, 0x9e85: 0xe0000ad1, 0x9e86: 0xe0000acd, 0x9e87: 0xf0000a0a,
+-	0x9e88: 0xf000040a, 0x9e89: 0xf0000404, 0x9e8a: 0xf0000a0a, 0x9e8b: 0xf000040a,
+-	0x9e8c: 0xf0000404, 0x9e8d: 0xe0000947, 0x9e8e: 0xe0000944, 0x9e8f: 0xe0000c3d,
+-	0x9e90: 0xe0000c3a, 0x9e91: 0xe0000dcc, 0x9e92: 0xe0000dc9, 0x9e93: 0xe0000ff3,
+-	0x9e94: 0xe0000ff0, 0x9e95: 0xe000101e, 0x9e96: 0xe000101a, 0x9e97: 0xe00037a3,
+-	0x9e98: 0xe00037a0, 0x9e99: 0xe0001016, 0x9e9a: 0xe0001012, 0x9e9b: 0xe000100e,
+-	0x9e9c: 0xe000100a, 0x9e9d: 0x402cae20, 0x9e9e: 0xe00025f6, 0x9e9f: 0xe00025f3,
+-	0x9ea0: 0xe0000976, 0x9ea1: 0xe0000972, 0x9ea2: 0xe00025f0, 0x9ea3: 0xe00025ed,
+-	0x9ea4: 0x002d3a88, 0x9ea5: 0x402d3a20, 0x9ea6: 0xe0000bbe, 0x9ea7: 0xe0000bbb,
+-	0x9ea8: 0xe0000c99, 0x9ea9: 0xe0000c96, 0x9eaa: 0xe0000e20, 0x9eab: 0xe0000e1d,
+-	0x9eac: 0xe0000e27, 0x9ead: 0xe0000e23, 0x9eae: 0xe0001162, 0x9eaf: 0xe000115f,
+-	0x9eb0: 0xe0000c8d, 0x9eb1: 0xf0000a0a, 0x9eb2: 0xf000040a, 0x9eb3: 0xf0000404,
+-	0x9eb4: 0xe0000bac, 0x9eb5: 0xe0000ba9, 0x9eb6: 0x002d7888, 0x9eb7: 0x00319488,
+-	0x9eb8: 0xe0000d57, 0x9eb9: 0xe0000d54, 0x9eba: 0xe000260e, 0x9ebb: 0xe000260b,
+-	0x9ebc: 0xe00025ea, 0x9ebd: 0xe00025e7, 0x9ebe: 0xe00032e3, 0x9ebf: 0xe00032e0,
+-	// Block 0x27b, offset 0x9ec0
+-	0x9ec0: 0xe000098f, 0x9ec1: 0xe000098c, 0x9ec2: 0xe0000995, 0x9ec3: 0xe0000992,
+-	0x9ec4: 0xe0000b62, 0x9ec5: 0xe0000b5f, 0x9ec6: 0xe0000b68, 0x9ec7: 0xe0000b65,
+-	0x9ec8: 0xe0000c6c, 0x9ec9: 0xe0000c69, 0x9eca: 0xe0000c72, 0x9ecb: 0xe0000c6f,
+-	0x9ecc: 0xe0000e4a, 0x9ecd: 0xe0000e47, 0x9ece: 0xe0000e50, 0x9ecf: 0xe0000e4d,
+-	0x9ed0: 0xe0000ee8, 0x9ed1: 0xe0000ee5, 0x9ed2: 0xe0000eee, 0x9ed3: 0xe0000eeb,
+-	0x9ed4: 0xe0001053, 0x9ed5: 0xe0001050, 0x9ed6: 0xe0001059, 0x9ed7: 0xe0001056,
+-	0x9ed8: 0xe0000f61, 0x9ed9: 0xe0000f5e, 0x9eda: 0xe0000fa5, 0x9edb: 0xe0000fa2,
+-	0x9edc: 0x00312288, 0x9edd: 0x40312220, 0x9ede: 0xe0000bf4, 0x9edf: 0xe0000bf1,
+-	0x9ee0: 0x002ebc88, 0x9ee1: 0x402c8c20, 0x9ee2: 0x002f2288, 0x9ee3: 0x402f2220,
+-	0x9ee4: 0x00314088, 0x9ee5: 0x40314020, 0x9ee6: 0xe000096f, 0x9ee7: 0xe000096c,
+-	0x9ee8: 0xe0000b32, 0x9ee9: 0xe0000b2f, 0x9eea: 0xe00032dd, 0x9eeb: 0xe00032da,
+-	0x9eec: 0xe0000dfd, 0x9eed: 0xe0000df9, 0x9eee: 0xe0000e04, 0x9eef: 0xe0000e01,
+-	0x9ef0: 0xe0000e0b, 0x9ef1: 0xe0000e07, 0x9ef2: 0xe0001129, 0x9ef3: 0xe0001126,
+-	0x9ef4: 0x402e5e20, 0x9ef5: 0x402ed020, 0x9ef6: 0x40305a20, 0x9ef7: 0x402dd420,
+-	0x9ef8: 0xe0000abf, 0x9ef9: 0xe0000ec4, 0x9efa: 0x002be888, 0x9efb: 0x002c4488,
+-	0x9efc: 0x402c4420, 0x9efd: 0x002e3888, 0x9efe: 0x00303e88, 0x9eff: 0x402ffc20,
+-	// Block 0x27c, offset 0x9f00
+-	0x9f00: 0xe00009b1, 0x9f01: 0xe00009ae, 0x9f02: 0xe0000a22, 0x9f03: 0xe0000a1f,
+-	0x9f04: 0xe0000a28, 0x9f05: 0xe0000a25, 0x9f06: 0xe0000a2e, 0x9f07: 0xe0000a2b,
+-	0x9f08: 0xe0000a5a, 0x9f09: 0xe0000a56, 0x9f0a: 0xe0000a8c, 0x9f0b: 0xe0000a89,
+-	0x9f0c: 0xe0000a98, 0x9f0d: 0xe0000a95, 0x9f0e: 0xe0000aa4, 0x9f0f: 0xe0000aa1,
+-	0x9f10: 0xe0000a92, 0x9f11: 0xe0000a8f, 0x9f12: 0xe0000a9e, 0x9f13: 0xe0000a9b,
+-	0x9f14: 0xe0000b55, 0x9f15: 0xe0000b51, 0x9f16: 0xe000377f, 0x9f17: 0xe000377c,
+-	0x9f18: 0xe0000b7c, 0x9f19: 0xe0000b79, 0x9f1a: 0xe0000b82, 0x9f1b: 0xe0000b7f,
+-	0x9f1c: 0xe0000b39, 0x9f1d: 0xe0000b35, 0x9f1e: 0xe0000b8c, 0x9f1f: 0xe0000b89,
+-	0x9f20: 0xe0000bd0, 0x9f21: 0xe0000bcd, 0x9f22: 0xe0000c00, 0x9f23: 0xe0000bfd,
+-	0x9f24: 0xe0000c0c, 0x9f25: 0xe0000c09, 0x9f26: 0xe0000bfa, 0x9f27: 0xe0000bf7,
+-	0x9f28: 0xe0000c06, 0x9f29: 0xe0000c03, 0x9f2a: 0xe0000c12, 0x9f2b: 0xe0000c0f,
+-	0x9f2c: 0xe0000c7e, 0x9f2d: 0xe0000c7b, 0x9f2e: 0xe0003785, 0x9f2f: 0xe0003782,
+-	0x9f30: 0xe0000c93, 0x9f31: 0xe0000c90, 0x9f32: 0xe0000cab, 0x9f33: 0xe0000ca8,
+-	0x9f34: 0xe0000cb1, 0x9f35: 0xe0000cae, 0x9f36: 0xe0000cde, 0x9f37: 0xe0000cdb,
+-	0x9f38: 0xe0000ce5, 0x9f39: 0xe0000ce1, 0x9f3a: 0xe0000cf2, 0x9f3b: 0xe0000cef,
+-	0x9f3c: 0xe0000cec, 0x9f3d: 0xe0000ce9, 0x9f3e: 0xe0000d1e, 0x9f3f: 0xe0000d1b,
+-	// Block 0x27d, offset 0x9f40
+-	0x9f40: 0xe0000d24, 0x9f41: 0xe0000d21, 0x9f42: 0xe0000d2a, 0x9f43: 0xe0000d27,
+-	0x9f44: 0xe0000d69, 0x9f45: 0xe0000d66, 0x9f46: 0xe0000d7b, 0x9f47: 0xe0000d78,
+-	0x9f48: 0xe0000d87, 0x9f49: 0xe0000d84, 0x9f4a: 0xe0000d81, 0x9f4b: 0xe0000d7e,
+-	0x9f4c: 0xe0003791, 0x9f4d: 0xe000378e, 0x9f4e: 0xe00037b5, 0x9f4f: 0xe00037b2,
+-	0x9f50: 0xe0000e3d, 0x9f51: 0xe0000e39, 0x9f52: 0xe0003797, 0x9f53: 0xe0003794,
+-	0x9f54: 0xe0000ea7, 0x9f55: 0xe0000ea4, 0x9f56: 0xe0000ead, 0x9f57: 0xe0000eaa,
+-	0x9f58: 0xe0000ed6, 0x9f59: 0xe0000ed3, 0x9f5a: 0xe0000ef4, 0x9f5b: 0xe0000ef1,
+-	0x9f5c: 0xe0000efb, 0x9f5d: 0xe0000ef7, 0x9f5e: 0xe0000f02, 0x9f5f: 0xe0000eff,
+-	0x9f60: 0xe0000f41, 0x9f61: 0xe0000f3e, 0x9f62: 0xe0000f53, 0x9f63: 0xe0000f50,
+-	0x9f64: 0xe0000f26, 0x9f65: 0xe0000f22, 0x9f66: 0xe0000f3a, 0x9f67: 0xe0000f36,
+-	0x9f68: 0xe0000f5a, 0x9f69: 0xe0000f56, 0x9f6a: 0xe0000f93, 0x9f6b: 0xe0000f90,
+-	0x9f6c: 0xe0000f9f, 0x9f6d: 0xe0000f9c, 0x9f6e: 0xe0000fb1, 0x9f6f: 0xe0000fae,
+-	0x9f70: 0xe0000fab, 0x9f71: 0xe0000fa8, 0x9f72: 0xe0001093, 0x9f73: 0xe0001090,
+-	0x9f74: 0xe000109f, 0x9f75: 0xe000109c, 0x9f76: 0xe0001099, 0x9f77: 0xe0001096,
+-	0x9f78: 0xe00037a9, 0x9f79: 0xe00037a6, 0x9f7a: 0xe0001046, 0x9f7b: 0xe0001042,
+-	0x9f7c: 0xe00010a9, 0x9f7d: 0xe00010a6, 0x9f7e: 0xe00010af, 0x9f7f: 0xe00010ac,
+-	// Block 0x27e, offset 0x9f80
+-	0x9f80: 0xe00010d2, 0x9f81: 0xe00010cf, 0x9f82: 0xe00010cc, 0x9f83: 0xe00010c9,
+-	0x9f84: 0xe00010e1, 0x9f85: 0xe00010de, 0x9f86: 0xe00010e7, 0x9f87: 0xe00010e4,
+-	0x9f88: 0xe00010ed, 0x9f89: 0xe00010ea, 0x9f8a: 0xe00010fc, 0x9f8b: 0xe00010f9,
+-	0x9f8c: 0xe00010f6, 0x9f8d: 0xe00010f3, 0x9f8e: 0xe0001123, 0x9f8f: 0xe0001120,
+-	0x9f90: 0xe0001141, 0x9f91: 0xe000113e, 0x9f92: 0xe0001153, 0x9f93: 0xe0001150,
+-	0x9f94: 0xe0001159, 0x9f95: 0xe0001156, 0x9f96: 0xe0000c15, 0x9f97: 0xe0000f8d,
+-	0x9f98: 0xe00010db, 0x9f99: 0xe0001111, 0x9f9a: 0xf0000404, 0x9f9b: 0xe0000f70,
+-	0x9f9c: 0x40300420, 0x9f9d: 0x40300620, 0x9f9e: 0xe0000f7f, 0x9f9f: 0x402c9620,
+-	0x9fa0: 0xe000099b, 0x9fa1: 0xe0000998, 0x9fa2: 0xe0000989, 0x9fa3: 0xe0000986,
+-	0x9fa4: 0xe0003773, 0x9fa5: 0xe0003770, 0x9fa6: 0xe0000930, 0x9fa7: 0xe000092c,
+-	0x9fa8: 0xe0000940, 0x9fa9: 0xe000093c, 0x9faa: 0xe0000938, 0x9fab: 0xe0000934,
+-	0x9fac: 0xe00009aa, 0x9fad: 0xe00009a6, 0x9fae: 0xe000376d, 0x9faf: 0xe000376a,
+-	0x9fb0: 0xe000090a, 0x9fb1: 0xe0000906, 0x9fb2: 0xe000091a, 0x9fb3: 0xe0000916,
+-	0x9fb4: 0xe0000912, 0x9fb5: 0xe000090e, 0x9fb6: 0xe00009a2, 0x9fb7: 0xe000099e,
+-	0x9fb8: 0xe0000b6e, 0x9fb9: 0xe0000b6b, 0x9fba: 0xe0000b5c, 0x9fbb: 0xe0000b59,
+-	0x9fbc: 0xe0000b26, 0x9fbd: 0xe0000b23, 0x9fbe: 0xe0003779, 0x9fbf: 0xe0003776,
+-	// Block 0x27f, offset 0x9fc0
+-	0x9fc0: 0xe0000b03, 0x9fc1: 0xe0000aff, 0x9fc2: 0xe0000b13, 0x9fc3: 0xe0000b0f,
+-	0x9fc4: 0xe0000b0b, 0x9fc5: 0xe0000b07, 0x9fc6: 0xe0000b75, 0x9fc7: 0xe0000b71,
+-	0x9fc8: 0xe0000c66, 0x9fc9: 0xe0000c63, 0x9fca: 0xe0000c78, 0x9fcb: 0xe0000c75,
+-	0x9fcc: 0xe0000e84, 0x9fcd: 0xe0000e81, 0x9fce: 0xe0000e44, 0x9fcf: 0xe0000e41,
+-	0x9fd0: 0xe000378b, 0x9fd1: 0xe0003788, 0x9fd2: 0xe0000db5, 0x9fd3: 0xe0000db1,
+-	0x9fd4: 0xe0000dc5, 0x9fd5: 0xe0000dc1, 0x9fd6: 0xe0000dbd, 0x9fd7: 0xe0000db9,
+-	0x9fd8: 0xe0000e8b, 0x9fd9: 0xe0000e87, 0x9fda: 0xe000379d, 0x9fdb: 0xe000379a,
+-	0x9fdc: 0xe0000e65, 0x9fdd: 0xe0000e61, 0x9fde: 0xe0000e75, 0x9fdf: 0xe0000e71,
+-	0x9fe0: 0xe0000e6d, 0x9fe1: 0xe0000e69, 0x9fe2: 0xe0000e7d, 0x9fe3: 0xe0000e79,
+-	0x9fe4: 0xe000108d, 0x9fe5: 0xe000108a, 0x9fe6: 0xe000104d, 0x9fe7: 0xe000104a,
+-	0x9fe8: 0xe00037af, 0x9fe9: 0xe00037ac, 0x9fea: 0xe000106e, 0x9feb: 0xe000106a,
+-	0x9fec: 0xe000107e, 0x9fed: 0xe000107a, 0x9fee: 0xe0001076, 0x9fef: 0xe0001072,
+-	0x9ff0: 0xe0001086, 0x9ff1: 0xe0001082, 0x9ff2: 0xe0001108, 0x9ff3: 0xe0001105,
+-	0x9ff4: 0xe0001135, 0x9ff5: 0xe0001132, 0x9ff6: 0xe000112f, 0x9ff7: 0xe000112c,
+-	0x9ff8: 0xe000111d, 0x9ff9: 0xe000111a, 0x9ffa: 0xe0000d0a, 0x9ffb: 0xe0000d07,
+-	0x9ffc: 0x0030d888, 0x9ffd: 0x4030d820, 0x9ffe: 0x00312088, 0x9fff: 0x40312020,
+-	// Block 0x280, offset 0xa000
+-	0xa000: 0x40021220, 0xa001: 0x40025c20, 0xa002: 0x40030420, 0xa003: 0x40051220,
+-	0xa004: 0x40279a20, 0xa005: 0x4027ca20, 0xa006: 0xe0002206, 0xa007: 0xe00001d3,
+-	0xa008: 0x40049c20, 0xa009: 0x40049e20, 0xa00a: 0x4004a020, 0xa00b: 0x4004a220,
+-	0xa00c: 0x4004a420, 0xa00d: 0x4004a620, 0xa00e: 0x4004a820, 0xa00f: 0x4004aa20,
+-	0xa010: 0x4004ac20, 0xa011: 0x4004ae20, 0xa012: 0x40279c20, 0xa013: 0x40279e20,
+-	0xa014: 0x4004b020, 0xa015: 0x4004b220, 0xa016: 0x4004b420, 0xa017: 0x4004b620,
+-	0xa018: 0x4004b820, 0xa019: 0x4004ba20, 0xa01a: 0x4004bc20, 0xa01b: 0x4004be20,
+-	0xa01c: 0x40023820, 0xa01d: 0x4003ea20, 0xa01e: 0x4003ec20, 0xa01f: 0x4003ee20,
+-	0xa020: 0x4027a020, 0xa021: 0xe0000267, 0xa022: 0xe000037f, 0xa023: 0xe0000459,
+-	0xa024: 0xe000052e, 0xa025: 0xe00005f8, 0xa026: 0xe00006c3, 0xa027: 0xe000076b,
+-	0xa028: 0xe0000817, 0xa029: 0xe00008bc, 0xa02a: 0xada12202, 0xa02b: 0xae412302,
+-	0xa02c: 0xae812402, 0xa02d: 0xade12502, 0xa02e: 0xae012602, 0xa02f: 0xae012702,
+-	0xa030: 0x40023a20, 0xa031: 0x4027ce20, 0xa032: 0xe0000152, 0xa033: 0x4027d020,
+-	0xa034: 0xe0000155, 0xa035: 0x4027d220, 0xa036: 0x00279c84, 0xa037: 0x4027a220,
+-	0xa038: 0x02a68284, 0xa039: 0x02a68884, 0xa03a: 0x02a68a84, 0xa03b: 0x4027cc20,
+-	0xa03c: 0xe000231a, 0xa03d: 0x40051420, 0xa03e: 0x4027a420, 0xa03f: 0x4027a620,
+-	// Block 0x281, offset 0xa040
+-	0xa041: 0xc63631f1, 0xa042: 0xc63c31f1, 0xa043: 0xc70631f1,
+-	0xa044: 0xc70c31f1, 0xa045: 0xc7c439e1, 0xa046: 0xc7ce33a1, 0xa047: 0xc8ad31f1,
+-	0xa048: 0xc8b331f1, 0xa049: 0xc96231f1, 0xa04a: 0xc96831f1, 0xa04b: 0xc6483271,
+-	0xa04c: 0xc65531f1, 0xa04d: 0xc71233a1, 0xa04e: 0xc7273631, 0xa04f: 0xc7f033a1,
+-	0xa050: 0xc8053631, 0xa051: 0xc8bf3271, 0xa052: 0xc8cc31f1, 0xa053: 0xc96e33a1,
+-	0xa054: 0xc9833631, 0xa055: 0xc65b33a1, 0xa056: 0xc6703631, 0xa057: 0xc73433a1,
+-	0xa058: 0xc7493631, 0xa059: 0xc81233a1, 0xa05a: 0xc8273631, 0xa05b: 0xc8d233a1,
+-	0xa05c: 0xc8e73631, 0xa05d: 0xc98b33a1, 0xa05e: 0xc9a03631, 0xa05f: 0xc67833a1,
+-	0xa060: 0xc68d3631, 0xa061: 0xc75133a1, 0xa062: 0xc7663631, 0xa063: 0xc82f39e1,
+-	0xa064: 0xc83933a1, 0xa065: 0xc84e3631, 0xa066: 0xc8ef33a1, 0xa067: 0xc9043631,
+-	0xa068: 0xc9ad33a1, 0xa069: 0xc9c23631, 0xa06a: 0xc69531f1, 0xa06b: 0xc76e31f1,
+-	0xa06c: 0xc85931f1, 0xa06d: 0xc90c31f1, 0xa06e: 0xc9ca31f1, 0xa06f: 0xc6a036b1,
+-	0xa070: 0xc6bb3631, 0xa071: 0xc6c33631, 0xa072: 0xc77936b1, 0xa073: 0xc7943631,
+-	0xa074: 0xc79c3631, 0xa075: 0xc86436b1, 0xa076: 0xc87f3631, 0xa077: 0xc8873631,
+-	0xa078: 0xc91736b1, 0xa079: 0xc9323631, 0xa07a: 0xc93a3631, 0xa07b: 0xc9d536b1,
+-	0xa07c: 0xc9f03631, 0xa07d: 0xc9f83631, 0xa07e: 0xc6cb31f1, 0xa07f: 0xc7a431f1,
+-	// Block 0x282, offset 0xa080
+-	0xa080: 0xc89231f1, 0xa081: 0xc94231f1, 0xa082: 0xca0031f1, 0xa083: 0xc6d131f1,
+-	0xa084: 0xc6d731f1, 0xa085: 0xc89831f1, 0xa086: 0xc89e31f1, 0xa087: 0xca0631f1,
+-	0xa088: 0xca0c31f1, 0xa089: 0xc6e031f1, 0xa08a: 0xc7ad31f1, 0xa08b: 0xc8a731f1,
+-	0xa08c: 0xc94b31f1, 0xa08d: 0xca1531f1, 0xa08e: 0xc6e639e1, 0xa08f: 0xc6f039e1,
+-	0xa090: 0xc7b339e1, 0xa091: 0xc95139e1, 0xa092: 0xca1b39e1, 0xa093: 0xca313a71,
+-	0xa094: 0xc7e33631, 0xa095: 0xc64231f1, 0xa096: 0xc8b931f1,
+-	0xa099: 0xa0812802, 0xa09a: 0xa0812902, 0xa09b: 0x40063c20,
+-	0xa09c: 0x40063e20, 0xa09d: 0x4027d820, 0xa09e: 0xe000015b, 0xa09f: 0xe0003bee,
+-	0xa0a0: 0x40023c20, 0xa0a1: 0xc6393241, 0xa0a2: 0xc63f3241, 0xa0a3: 0xc7093241,
+-	0xa0a4: 0xc70f3241, 0xa0a5: 0xc7c935c1, 0xa0a6: 0xc7d634c1, 0xa0a7: 0xc8b03241,
+-	0xa0a8: 0xc8b63241, 0xa0a9: 0xc9653241, 0xa0aa: 0xc96b3241, 0xa0ab: 0xc64d3321,
+-	0xa0ac: 0xc6583241, 0xa0ad: 0xc71a34c1, 0xa0ae: 0xc72b3681, 0xa0af: 0xc7f834c1,
+-	0xa0b0: 0xc8093681, 0xa0b1: 0xc8c43321, 0xa0b2: 0xc8cf3241, 0xa0b3: 0xc97634c1,
+-	0xa0b4: 0xc9873681, 0xa0b5: 0xc66334c1, 0xa0b6: 0xc6743681, 0xa0b7: 0xc73c34c1,
+-	0xa0b8: 0xc74d3681, 0xa0b9: 0xc81a34c1, 0xa0ba: 0xc82b3681, 0xa0bb: 0xc8da34c1,
+-	0xa0bc: 0xc8eb3681, 0xa0bd: 0xc99334c1, 0xa0be: 0xc9a43681, 0xa0bf: 0xc68034c1,
+-	// Block 0x283, offset 0xa0c0
+-	0xa0c0: 0xc6913681, 0xa0c1: 0xc75934c1, 0xa0c2: 0xc76a3681, 0xa0c3: 0xc83435c1,
+-	0xa0c4: 0xc84134c1, 0xa0c5: 0xc8523681, 0xa0c6: 0xc8f734c1, 0xa0c7: 0xc9083681,
+-	0xa0c8: 0xc9b534c1, 0xa0c9: 0xc9c63681, 0xa0ca: 0xc6983241, 0xa0cb: 0xc7713241,
+-	0xa0cc: 0xc85c3241, 0xa0cd: 0xc90f3241, 0xa0ce: 0xc9cd3241, 0xa0cf: 0xc6ab3861,
+-	0xa0d0: 0xc6bf3681, 0xa0d1: 0xc6c73681, 0xa0d2: 0xc7843861, 0xa0d3: 0xc7983681,
+-	0xa0d4: 0xc7a03681, 0xa0d5: 0xc86f3861, 0xa0d6: 0xc8833681, 0xa0d7: 0xc88b3681,
+-	0xa0d8: 0xc9223861, 0xa0d9: 0xc9363681, 0xa0da: 0xc93e3681, 0xa0db: 0xc9e03861,
+-	0xa0dc: 0xc9f43681, 0xa0dd: 0xc9fc3681, 0xa0de: 0xc6ce3241, 0xa0df: 0xc7a73241,
+-	0xa0e0: 0xc8953241, 0xa0e1: 0xc9453241, 0xa0e2: 0xca033241, 0xa0e3: 0xc6d43241,
+-	0xa0e4: 0xc6da3241, 0xa0e5: 0xc89b3241, 0xa0e6: 0xc8a13241, 0xa0e7: 0xca093241,
+-	0xa0e8: 0xca0f3241, 0xa0e9: 0xc6e33241, 0xa0ea: 0xc7b03241, 0xa0eb: 0xc8aa3241,
+-	0xa0ec: 0xc94e3241, 0xa0ed: 0xca183241, 0xa0ee: 0xc6eb35c1, 0xa0ef: 0xc6f534c1,
+-	0xa0f0: 0xc7b834c1, 0xa0f1: 0xc95634c1, 0xa0f2: 0xca2034c1, 0xa0f3: 0xca313aa1,
+-	0xa0f4: 0xc7e73681, 0xa0f5: 0xc6453241, 0xa0f6: 0xc8bc3241, 0xa0f7: 0xc7023681,
+-	0xa0f8: 0xc7c03681, 0xa0f9: 0xc95e3681, 0xa0fa: 0xca2d3681, 0xa0fb: 0x40023e20,
+-	0xa0fc: 0x4027d620, 0xa0fd: 0x4027d820, 0xa0fe: 0xe000015b, 0xa0ff: 0xe0003a95,
+-	// Block 0x284, offset 0xa100
+-	0xa105: 0x4065da20, 0xa106: 0x4065dc20, 0xa107: 0x4065de20,
+-	0xa108: 0x4065e020, 0xa109: 0x4065e420, 0xa10a: 0x4065e620, 0xa10b: 0x4065e820,
+-	0xa10c: 0x4065ea20, 0xa10d: 0x4065ec20, 0xa10e: 0x4065ee20, 0xa10f: 0x4065f420,
+-	0xa110: 0x4065f620, 0xa111: 0x4065f820, 0xa112: 0x4065fa20, 0xa113: 0x4065fe20,
+-	0xa114: 0x40660020, 0xa115: 0x40660220, 0xa116: 0x40660420, 0xa117: 0x40660620,
+-	0xa118: 0x40660820, 0xa119: 0x40660a20, 0xa11a: 0x40661220, 0xa11b: 0x40661420,
+-	0xa11c: 0x40661820, 0xa11d: 0x40661a20, 0xa11e: 0x40661e20, 0xa11f: 0x40662020,
+-	0xa120: 0x40662220, 0xa121: 0x40662420, 0xa122: 0x40662620, 0xa123: 0x40662820,
+-	0xa124: 0x40662a20, 0xa125: 0x40662e20, 0xa126: 0x40663620, 0xa127: 0x40663820,
+-	0xa128: 0x40663a20, 0xa129: 0x40663c20, 0xa12a: 0x4065e220, 0xa12b: 0x4065f020,
+-	0xa12c: 0x4065fc20, 0xa12d: 0x40663e20,
+-	0xa131: 0x4062ac20, 0xa132: 0x4062ae20, 0xa133: 0x40646820,
+-	0xa134: 0x4062b020, 0xa135: 0x40646c20, 0xa136: 0x40646e20, 0xa137: 0x4062b220,
+-	0xa138: 0x4062b420, 0xa139: 0x4062b620, 0xa13a: 0x40647420, 0xa13b: 0x40647620,
+-	0xa13c: 0x40647820, 0xa13d: 0x40647a20, 0xa13e: 0x40647c20, 0xa13f: 0x40647e20,
+-	// Block 0x285, offset 0xa140
+-	0xa140: 0x4062e020, 0xa141: 0x4062b820, 0xa142: 0x4062ba20, 0xa143: 0x4062bc20,
+-	0xa144: 0x4062ee20, 0xa145: 0x4062be20, 0xa146: 0x4062c020, 0xa147: 0x4062c220,
+-	0xa148: 0x4062c420, 0xa149: 0x4062c620, 0xa14a: 0x4062c820, 0xa14b: 0x4062ca20,
+-	0xa14c: 0x4062cc20, 0xa14d: 0x4062ce20, 0xa14e: 0x4062d020, 0xa14f: 0x4063a820,
+-	0xa150: 0x4063aa20, 0xa151: 0x4063ac20, 0xa152: 0x4063ae20, 0xa153: 0x4063b020,
+-	0xa154: 0x4063b220, 0xa155: 0x4063b420, 0xa156: 0x4063b620, 0xa157: 0x4063b820,
+-	0xa158: 0x4063ba20, 0xa159: 0x4063bc20, 0xa15a: 0x4063be20, 0xa15b: 0x4063c020,
+-	0xa15c: 0x4063c220, 0xa15d: 0x4063c420, 0xa15e: 0x4063c620, 0xa15f: 0x4063c820,
+-	0xa160: 0x4063ca20, 0xa161: 0x4063cc20, 0xa162: 0x4063ce20, 0xa163: 0x4063d020,
+-	0xa164: 0x4063a620, 0xa165: 0x0062d484, 0xa166: 0x0062d684, 0xa167: 0x0064a284,
+-	0xa168: 0x0064a484, 0xa169: 0x0064ac84, 0xa16a: 0x0064b084, 0xa16b: 0x0064ba84,
+-	0xa16c: 0x0064c284, 0xa16d: 0x0064c684, 0xa16e: 0x0062e484, 0xa16f: 0x0064ce84,
+-	0xa170: 0x0064d284, 0xa171: 0x0062e684, 0xa172: 0x0062e884, 0xa173: 0x0062ec84,
+-	0xa174: 0x0062f084, 0xa175: 0x0062f284, 0xa176: 0x0062fa84, 0xa177: 0x0062fe84,
+-	0xa178: 0x00630284, 0xa179: 0x00630484, 0xa17a: 0x00630684, 0xa17b: 0x00630884,
+-	0xa17c: 0x00630a84, 0xa17d: 0x00631084, 0xa17e: 0x00631884, 0xa17f: 0x00632c84,
+-	// Block 0x286, offset 0xa180
+-	0xa180: 0x40275220, 0xa181: 0x40275420, 0xa182: 0x40275620, 0xa183: 0x40275820,
+-	0xa184: 0x40275a20, 0xa185: 0x40275c20, 0xa186: 0x40275e20, 0xa187: 0x40276020,
+-	0xa188: 0x40276220, 0xa189: 0x40276420, 0xa18a: 0x40276620, 0xa18b: 0x40276820,
+-	0xa18c: 0x40276a20, 0xa18d: 0x40276c20, 0xa18e: 0x40276e20, 0xa18f: 0x40277020,
+-	0xa190: 0x40277220, 0xa191: 0x40277420, 0xa192: 0x40277620, 0xa193: 0x40277820,
+-	0xa194: 0x40277a20, 0xa195: 0x40277c20, 0xa196: 0x40277e20, 0xa197: 0x40278020,
+-	0xa198: 0x40278220, 0xa199: 0x40278420, 0xa19a: 0x40278620, 0xa19b: 0x40278820,
+-	0xa19c: 0x40278a20, 0xa19d: 0x40278c20, 0xa19e: 0x40278e20, 0xa19f: 0x40279020,
+-	0xa1a0: 0x40279220, 0xa1a1: 0x40279420, 0xa1a2: 0x40279620, 0xa1a3: 0x40279820,
+-	0xa1b0: 0xc7eb35c1, 0xa1b1: 0xc72f35c1, 0xa1b2: 0xc80d35c1, 0xa1b3: 0xc9a835c1,
+-	0xa1b4: 0xc8563241, 0xa1b5: 0xc69b35c1, 0xa1b6: 0xc77435c1, 0xa1b7: 0xc85f35c1,
+-	0xa1b8: 0xc91235c1, 0xa1b9: 0xc9d035c1, 0xa1ba: 0xc88f3241, 0xa1bb: 0xc6dd3241,
+-	0xa1bc: 0xc7aa3241, 0xa1bd: 0xc8a43241, 0xa1be: 0xc9483241, 0xa1bf: 0xca123241,
+-	// Block 0x287, offset 0xa1c0
+-	0xa1c0: 0xf0000404, 0xa1c1: 0xf0000404, 0xa1c2: 0xf0000404, 0xa1c3: 0xf0000404,
+-	0xa1c4: 0xf0000404, 0xa1c5: 0xf0000404, 0xa1c6: 0xf0000404, 0xa1c7: 0xf0000404,
+-	0xa1c8: 0xf0000404, 0xa1c9: 0xf0000404, 0xa1ca: 0xf0000404, 0xa1cb: 0xf0000404,
+-	0xa1cc: 0xf0000404, 0xa1cd: 0xf0000404, 0xa1ce: 0xe000004c, 0xa1cf: 0xe0000051,
+-	0xa1d0: 0xe0000056, 0xa1d1: 0xe000005b, 0xa1d2: 0xe0000060, 0xa1d3: 0xe0000065,
+-	0xa1d4: 0xe000006a, 0xa1d5: 0xe000006f, 0xa1d6: 0xe0000083, 0xa1d7: 0xe000008d,
+-	0xa1d8: 0xe0000092, 0xa1d9: 0xe0000097, 0xa1da: 0xe000009c, 0xa1db: 0xe00000a1,
+-	0xa1dc: 0xe0000088, 0xa1dd: 0xe0000074, 0xa1de: 0xe000007c,
+-	0xa1e0: 0xe00028cc, 0xa1e1: 0xe00028dc, 0xa1e2: 0xe00028d4, 0xa1e3: 0xe000290c,
+-	0xa1e4: 0xe00028e0, 0xa1e5: 0xe00028f4, 0xa1e6: 0xe00028d0, 0xa1e7: 0xe00028f0,
+-	0xa1e8: 0xe00028d8, 0xa1e9: 0xe00028fc, 0xa1ea: 0xe000291c, 0xa1eb: 0xe0002930,
+-	0xa1ec: 0xe000292c, 0xa1ed: 0xe0002924, 0xa1ee: 0xe0002958, 0xa1ef: 0xe0002910,
+-	0xa1f0: 0xe0002918, 0xa1f1: 0xe0002928, 0xa1f2: 0xe0002920, 0xa1f3: 0xe000293c,
+-	0xa1f4: 0xe0002904, 0xa1f5: 0xe0002934, 0xa1f6: 0xe0002950, 0xa1f7: 0xe0002940,
+-	0xa1f8: 0xe00028f8, 0xa1f9: 0xe00028e4, 0xa1fa: 0xe0002908, 0xa1fb: 0xe0002914,
+-	0xa1fc: 0xe0002938, 0xa1fd: 0xe00028e8, 0xa1fe: 0xe0002954, 0xa1ff: 0xe0002900,
+-	// Block 0x288, offset 0xa200
+-	0xa200: 0xe0002944, 0xa201: 0xe00028ec, 0xa202: 0xe0002948, 0xa203: 0xe000294c,
+-	0xa204: 0x02aa9e86, 0xa205: 0x02bcf886, 0xa206: 0x02cb0e86, 0xa207: 0x02f71e86,
+-	0xa208: 0xe00002e3, 0xa209: 0xe00003d8, 0xa20a: 0xe00004b3, 0xa20b: 0xe000057d,
+-	0xa20c: 0xe0000648, 0xa20d: 0xe00006f0, 0xa20e: 0xe000079c, 0xa20f: 0xe0000841,
+-	0xa210: 0xe0000ec0, 0xa211: 0xf0000606, 0xa212: 0xf0000606, 0xa213: 0xf0000606,
+-	0xa214: 0xf0000606, 0xa215: 0xf0000606, 0xa216: 0xf0000606, 0xa217: 0xf0000606,
+-	0xa218: 0xf0000606, 0xa219: 0xf0000606, 0xa21a: 0xf0000606, 0xa21b: 0xf0000606,
+-	0xa21c: 0xf0000606, 0xa21d: 0xf0000606, 0xa21e: 0xf0000606, 0xa21f: 0xf0000606,
+-	0xa220: 0x0062ac86, 0xa221: 0x0062b086, 0xa222: 0x0062b286, 0xa223: 0x0062b686,
+-	0xa224: 0x0062b886, 0xa225: 0x0062ba86, 0xa226: 0x0062be86, 0xa227: 0x0062c286,
+-	0xa228: 0x0062c486, 0xa229: 0x0062c886, 0xa22a: 0x0062ca86, 0xa22b: 0x0062cc86,
+-	0xa22c: 0x0062ce86, 0xa22d: 0x0062d086, 0xa22e: 0xf0000606, 0xa22f: 0xf0000606,
+-	0xa230: 0xf0000606, 0xa231: 0xf0000606, 0xa232: 0xf0000606, 0xa233: 0xf0000606,
+-	0xa234: 0xf0000606, 0xa235: 0xf0000606, 0xa236: 0xf0000606, 0xa237: 0xf0000606,
+-	0xa238: 0xf0000606, 0xa239: 0xf0000606, 0xa23a: 0xf0000606, 0xa23b: 0xf0000606,
+-	0xa23c: 0xe0002127, 0xa23d: 0xe0002122, 0xa23e: 0xf0000606, 0xa23f: 0x4027ac20,
+-	// Block 0x289, offset 0xa240
+-	0xa240: 0xe000384d, 0xa241: 0xe000388e, 0xa242: 0xe000389f, 0xa243: 0xe00038a8,
+-	0xa244: 0xe00038b1, 0xa245: 0xe00038ba, 0xa246: 0xe000298b, 0xa247: 0xe00038c3,
+-	0xa248: 0xe00038cc, 0xa249: 0xe00037fa, 0xa24a: 0xe0003806, 0xa24b: 0xe0003812,
+-	0xa24c: 0xf0001c1d, 0xa24d: 0xe0000b85, 0xa24e: 0xf0001d1c, 0xa24f: 0xe0000d14,
+-	0xa250: 0x00657693, 0xa251: 0x00657893, 0xa252: 0x00657a93, 0xa253: 0x00657e93,
+-	0xa254: 0x00658093, 0xa255: 0x00658293, 0xa256: 0x00658493, 0xa257: 0x00658693,
+-	0xa258: 0x00658893, 0xa259: 0x00658a93, 0xa25a: 0x00658c93, 0xa25b: 0x00658e93,
+-	0xa25c: 0x00659093, 0xa25d: 0x00659293, 0xa25e: 0x00659493, 0xa25f: 0x00659693,
+-	0xa260: 0x00659893, 0xa261: 0x00659a93, 0xa262: 0x00659c93, 0xa263: 0x00659e93,
+-	0xa264: 0x0065a093, 0xa265: 0x0065a293, 0xa266: 0x0065a493, 0xa267: 0x0065a693,
+-	0xa268: 0x0065a893, 0xa269: 0x0065aa93, 0xa26a: 0x0065ac93, 0xa26b: 0x0065ae93,
+-	0xa26c: 0x0065b093, 0xa26d: 0x0065b293, 0xa26e: 0x0065b493, 0xa26f: 0x0065b693,
+-	0xa270: 0x0065b893, 0xa271: 0x0065ba93, 0xa272: 0x0065bc93, 0xa273: 0x0065be93,
+-	0xa274: 0x0065c093, 0xa275: 0x0065c493, 0xa276: 0x0065c693, 0xa277: 0x0065c893,
+-	0xa278: 0x0065ca93, 0xa279: 0x0065cc93, 0xa27a: 0x0065ce93, 0xa27b: 0x0065d093,
+-	0xa27c: 0x0065d293, 0xa27d: 0x0065d493, 0xa27e: 0x0065d693,
+-	// Block 0x28a, offset 0xa280
+-	0xa280: 0xe000230b, 0xa281: 0xe00022f8, 0xa282: 0xe00022fc, 0xa283: 0xe0002311,
+-	0xa284: 0xe0002316, 0xa285: 0xe000231d, 0xa286: 0xe0002321, 0xa287: 0xe0002325,
+-	0xa288: 0xe000232b, 0xa289: 0xf0001c1c, 0xa28a: 0xe0002330, 0xa28b: 0xe000233c,
+-	0xa28c: 0xe0002340, 0xa28d: 0xe0002337, 0xa28e: 0xe0002346, 0xa28f: 0xe000234b,
+-	0xa290: 0xe000234f, 0xa291: 0xe0002353, 0xa292: 0xf0001c1c, 0xa293: 0xe000235e,
+-	0xa294: 0xe0002358, 0xa295: 0xf0001c1c, 0xa296: 0xe0002363, 0xa297: 0xe000236d,
+-	0xa298: 0xe00037f3, 0xa299: 0xe0003850, 0xa29a: 0xe0003891, 0xa29b: 0xe00038a2,
+-	0xa29c: 0xe00038ab, 0xa29d: 0xe00038b4, 0xa29e: 0xe00038bd, 0xa29f: 0xe000298e,
+-	0xa2a0: 0xe00038c6, 0xa2a1: 0xe00038cf, 0xa2a2: 0xe00037fe, 0xa2a3: 0xe000380a,
+-	0xa2a4: 0xe0003816, 0xa2a5: 0xe000381e, 0xa2a6: 0xe0003826, 0xa2a7: 0xe000382e,
+-	0xa2a8: 0xe0003836, 0xa2a9: 0xe0002971, 0xa2aa: 0xe000383e, 0xa2ab: 0xe0003846,
+-	0xa2ac: 0xe0003857, 0xa2ad: 0xe000385f, 0xa2ae: 0xe0003867, 0xa2af: 0xe000386f,
+-	0xa2b0: 0xe0003877, 0xa2b1: 0xe0000c1e, 0xa2b2: 0xf0001c1c, 0xa2b3: 0xf0001d1d,
+-	0xa2b4: 0xe0000a31, 0xa2b5: 0xf0001d1c, 0xa2b6: 0xf0001c1c, 0xa2b7: 0xf0001c1c,
+-	0xa2b8: 0xe0000ac2, 0xa2b9: 0xe0000ac6, 0xa2ba: 0xf0001d1d, 0xa2bb: 0xe0003c4c,
+-	0xa2bc: 0xe0003c52, 0xa2bd: 0xe0003c49, 0xa2be: 0xe0003c4f, 0xa2bf: 0xe0002431,
+-	// Block 0x28b, offset 0xa2c0
+-	0xa2c0: 0xf0001d1c, 0xa2c1: 0xf0001d1d, 0xa2c2: 0xe00009b7, 0xa2c3: 0xf0001c1d,
+-	0xa2c4: 0xf0001c1c, 0xa2c5: 0xf0001c1c, 0xa2c6: 0xe0000a66, 0xa2c7: 0xe0000a7a,
+-	0xa2c8: 0xf0001d1c, 0xa2c9: 0xf0001c1d, 0xa2ca: 0xf0001c1c, 0xa2cb: 0xf0001d1d,
+-	0xa2cc: 0xf0001c1c, 0xa2cd: 0xf0001d1d, 0xa2ce: 0xf0001d1d, 0xa2cf: 0xf0001c1c,
+-	0xa2d0: 0xf0001c1c, 0xa2d1: 0xf0001c1c, 0xa2d2: 0xe0000d0d, 0xa2d3: 0xf0001c1c,
+-	0xa2d4: 0xf0001c1c, 0xa2d5: 0xe0000d3a, 0xa2d6: 0xe0000d46, 0xa2d7: 0xf0001d1d,
+-	0xa2d8: 0xe0000eb0, 0xa2d9: 0xe0000eb8, 0xa2da: 0xf0001d1d, 0xa2db: 0xf0001c1c,
+-	0xa2dc: 0xf0001c1d, 0xa2dd: 0xf0001c1d, 0xa2de: 0xe00010b2, 0xa2df: 0xe00009c8,
+-	0xa2e0: 0xe000384a, 0xa2e1: 0xe000388b, 0xa2e2: 0xe000389c, 0xa2e3: 0xe00038a5,
+-	0xa2e4: 0xe00038ae, 0xa2e5: 0xe00038b7, 0xa2e6: 0xe0002988, 0xa2e7: 0xe00038c0,
+-	0xa2e8: 0xe00038c9, 0xa2e9: 0xe00037f6, 0xa2ea: 0xe0003802, 0xa2eb: 0xe000380e,
+-	0xa2ec: 0xe000381a, 0xa2ed: 0xe0003822, 0xa2ee: 0xe000382a, 0xa2ef: 0xe0003832,
+-	0xa2f0: 0xe000296d, 0xa2f1: 0xe000383a, 0xa2f2: 0xe0003842, 0xa2f3: 0xe0003853,
+-	0xa2f4: 0xe000385b, 0xa2f5: 0xe0003863, 0xa2f6: 0xe000386b, 0xa2f7: 0xe0003873,
+-	0xa2f8: 0xe000387b, 0xa2f9: 0xe000387f, 0xa2fa: 0xe0002978, 0xa2fb: 0xe0003883,
+-	0xa2fc: 0xe0003887, 0xa2fd: 0xe0003894, 0xa2fe: 0xe0003898, 0xa2ff: 0xe0000bdf,
+-	// Block 0x28c, offset 0xa300
+-	0xa300: 0x6c009820, 0xa301: 0x6c0ea820, 0xa303: 0x6c08fe20,
+-	0xa307: 0x6c148c20,
+-	0xa308: 0x6c0ad420, 0xa309: 0x6c083420, 0xa30a: 0x6c0ad220, 0xa30b: 0x6c01b020,
+-	0xa30d: 0x6c12c420, 0xa30e: 0x6c158a20,
+-	0xa310: 0x6c172e20, 0xa311: 0x6c00da20,
+-	0xa314: 0x6c02d020, 0xa315: 0x6c173020, 0xa316: 0x6c0bc820, 0xa317: 0x6c18e620,
+-	0xa318: 0x6c041820, 0xa319: 0x6c134c20,
+-	0xa31e: 0x6c0ad620,
+-	0xa321: 0x6c164420,
+-	0xa326: 0x6c135c20,
+-	0xa32a: 0x6c173220,
+-	0xa32d: 0x6c0e8020,
+-	0xa331: 0x6c173420, 0xa332: 0x6c051c20,
+-	0xa336: 0x6c173620,
+-	0xa338: 0x6c036a20, 0xa339: 0x6c0e1420, 0xa33b: 0x6c095e20,
+-	0xa33c: 0x6c173820, 0xa33f: 0x6c173a20,
+-	// Block 0x28d, offset 0xa340
+-	0xa342: 0x6c173c20, 0xa343: 0x6c110e20,
+-	0xa345: 0x6c041a20,
+-	0xa34b: 0x6c111220,
+-	0xa34d: 0x6c10ae20, 0xa34e: 0x6c062620, 0xa34f: 0x6c13fa20,
+-	0xa355: 0x6c29d820, 0xa356: 0x6c173e20, 0xa357: 0x6c0ad820,
+-	0xa358: 0x6c174020, 0xa359: 0x6c01a220,
+-	0xa35d: 0x6c04f220, 0xa35e: 0x6c068020, 0xa35f: 0x6c152220,
+-	0xa362: 0x6c1b9e20,
+-	0xa371: 0x6c15ec20, 0xa373: 0x6c10e220,
+-	0xa37e: 0x6c02fa20,
+-	// Block 0x28e, offset 0xa380
+-	0xa380: 0x6c03d620, 0xa382: 0x6c174220,
+-	0xa385: 0x6c174420, 0xa386: 0x6c163e20,
+-	0xa388: 0x6c158620, 0xa389: 0x6c0d0c20, 0xa38a: 0x6c174820, 0xa38b: 0x6c08c020,
+-	0xa38c: 0x6c10ce20, 0xa38e: 0x6c174e20,
+-	0xa391: 0x6c00f820, 0xa392: 0x6c065e20,
+-	0xa394: 0x6c065c20, 0xa395: 0x6c008c20,
+-	0xa398: 0x6c171a20, 0xa399: 0x6c171820, 0xa39b: 0x6c077e20,
+-	0xa39c: 0x6c000220, 0xa39e: 0x6c175020, 0xa39f: 0x6c175220,
+-	0xa3a0: 0x6c175420, 0xa3a1: 0x6c13fc20, 0xa3a2: 0x6c175620,
+-	0xa3a4: 0x6c068420, 0xa3a5: 0x6c008e20, 0xa3a6: 0x6c147820,
+-	0xa3a8: 0x6c046420, 0xa3ab: 0x6c046620,
+-	0xa3ac: 0x6c046820, 0xa3ad: 0x6c0f3420, 0xa3ae: 0x6c164020,
+-	0xa3b0: 0x6c175820, 0xa3b3: 0x6c175a20,
+-	0xa3b6: 0x6c175c20,
+-	0xa3ba: 0x6c0b5e20,
+-	// Block 0x28f, offset 0xa3c0
+-	0xa3c0: 0x6c09c020, 0xa3c1: 0x6c0b6020, 0xa3c2: 0x6c176620,
+-	0xa3c4: 0x6c176220, 0xa3c6: 0x6c176420, 0xa3c7: 0x6c041c20,
+-	0xa3ca: 0x6c075e20, 0xa3cb: 0x6c021820,
+-	0xa3cd: 0x6c176020, 0xa3ce: 0x6c175e20, 0xa3cf: 0x6c132a20,
+-	0xa3d4: 0x6c086020, 0xa3d5: 0x6c085e20, 0xa3d6: 0x6c0d7420, 0xa3d7: 0x6c176820,
+-	0xa3d8: 0x6c12c620, 0xa3d9: 0x6c0c4e20,
+-	0xa3de: 0x6c176a20, 0xa3df: 0x6c176e20,
+-	0xa3e3: 0x6c0dc220,
+-	0xa3e4: 0x6c168a20, 0xa3e5: 0x6c005420,
+-	0xa3ed: 0x6c176c20, 0xa3ee: 0x6c01b420,
+-	0xa3f0: 0x6c04b020, 0xa3f2: 0x6c0e8220,
+-	0xa3f6: 0x6c05c220, 0xa3f7: 0x6c177020,
+-	0xa3fb: 0x6c10ec20,
+-	// Block 0x290, offset 0xa400
+-	0xa401: 0x6c038620,
+-	0xa409: 0x6c177220, 0xa40a: 0x6c005620,
+-	0xa40d: 0x6c066020, 0xa40e: 0x6c038820, 0xa40f: 0x6c131020,
+-	0xa410: 0x6c11c420, 0xa411: 0x6c041e20,
+-	0xa41a: 0x6c021a20,
+-	0xa41c: 0x6c17b820, 0xa41d: 0x6c0fae20,
+-	0xa42f: 0x6c117c20,
+-	0xa430: 0x6c177620,
+-	0xa434: 0x6c11d820, 0xa436: 0x6c168c20,
+-	0xa438: 0x6c0b1e20, 0xa43a: 0x6c086220,
+-	0xa43c: 0x6c08c220, 0xa43d: 0x6c01b820,
+-	// Block 0x291, offset 0xa440
+-	0xa443: 0x6c0f1220,
+-	0xa446: 0x6c0df820, 0xa447: 0x6c177e20,
+-	0xa44d: 0x6c005820, 0xa44e: 0x6c0f3620, 0xa44f: 0x6c09c220,
+-	0xa450: 0x6c078020, 0xa451: 0x6c155420, 0xa453: 0x6c0d9420,
+-	0xa455: 0x6c01b620, 0xa457: 0x6c177c20,
+-	0xa459: 0x6c158820, 0xa45a: 0x6c177420, 0xa45b: 0x6c177820,
+-	0xa45c: 0x6c07f420, 0xa45d: 0x6c177a20, 0xa45e: 0x6c1ade20,
+-	0xa469: 0x6c178a20,
+-	0xa46f: 0x6c179020,
+-	0xa470: 0x6c178c20, 0xa473: 0x6c01bc20,
+-	0xa475: 0x6c134e20, 0xa476: 0x6c178020,
+-	0xa47b: 0x6c178820,
+-	0xa47c: 0x6c068620, 0xa47f: 0x6c086420,
+-	// Block 0x292, offset 0xa480
+-	0xa483: 0x6c02fc20,
+-	0xa486: 0x6c179220,
+-	0xa488: 0x6c178220, 0xa48b: 0x6c168e20,
+-	0xa48d: 0x6c08c420, 0xa48f: 0x6c178420,
+-	0xa491: 0x6c178e20,
+-	0xa496: 0x6c179420,
+-	0xa498: 0x6c178620, 0xa49b: 0x6c046a20,
+-	0xa49d: 0x6c005a20,
+-	0xa4a0: 0x6c046c20, 0xa4a1: 0x6c01ba20,
+-	0xa4ab: 0x6c1ae020,
+-	0xa4ad: 0x6c148620, 0xa4ae: 0x6c12f820, 0xa4af: 0x6c068820,
+-	0xa4b5: 0x6c0b2220, 0xa4b6: 0x6c163620,
+-	0xa4bf: 0x6c138820,
+-	// Block 0x293, offset 0xa4c0
+-	0xa4c2: 0x6c055420, 0xa4c3: 0x6c0d4220,
+-	0xa4c4: 0x6c020020,
+-	0xa4ca: 0x6c09f220,
+-	0xa4ce: 0x6c179c20,
+-	0xa4d0: 0x6c17a620, 0xa4d1: 0x6c17a220,
+-	0xa4d4: 0x6c179820, 0xa4d7: 0x6c0d5620,
+-	0xa4d8: 0x6c179e20, 0xa4da: 0x6c17a420, 0xa4db: 0x6c17a020,
+-	0xa4dd: 0x6c139220, 0xa4df: 0x6c179a20,
+-	0xa4e1: 0x6c0b2020, 0xa4e3: 0x6c147a20,
+-	0xa4e4: 0x6c17a820, 0xa4e5: 0x6c17aa20,
+-	0xa4ee: 0x6c099420, 0xa4ef: 0x6c17c420,
+-	0xa4f3: 0x6c114420,
+-	0xa4f5: 0x6c128820, 0xa4f6: 0x6c17ba20,
+-	0xa4f8: 0x6c13b820, 0xa4fa: 0x6c01a420,
+-	0xa4fe: 0x6c17c220,
+-	// Block 0x294, offset 0xa500
+-	0xa505: 0x6c17b620, 0xa506: 0x6c17c820,
+-	0xa509: 0x6c0ce020, 0xa50b: 0x6c062820,
+-	0xa50d: 0x6c115c20, 0xa50f: 0x6c233820,
+-	0xa511: 0x6c17c620, 0xa512: 0x6c0fe620,
+-	0xa514: 0x6c17b020, 0xa516: 0x6c068c20,
+-	0xa519: 0x6c068a20, 0xa51a: 0x6c17ac20,
+-	0xa51f: 0x6c094420,
+-	0xa521: 0x6c17bc20, 0xa523: 0x6c13b620,
+-	0xa524: 0x6c0e4e20, 0xa525: 0x6c17b420, 0xa526: 0x6c05c620,
+-	0xa528: 0x6c17ae20, 0xa529: 0x6c17be20, 0xa52a: 0x6c17b220, 0xa52b: 0x6c166a20,
+-	0xa52c: 0x6c17c020, 0xa52d: 0x6c170620,
+-	0xa536: 0x6c04f420,
+-	0xa539: 0x6c05c420,
+-	// Block 0x295, offset 0xa540
+-	0xa543: 0x6c17ca20,
+-	0xa547: 0x6c17cc20,
+-	0xa548: 0x6c17d420, 0xa549: 0x6c005c20,
+-	0xa54f: 0x6c137820,
+-	0xa550: 0x6c17d220,
+-	0xa555: 0x6c17d020, 0xa556: 0x6c17d820,
+-	0xa55a: 0x6c17d620,
+-	0xa55c: 0x6c0f3820,
+-	0xa565: 0x6c05c820,
+-	0xa56c: 0x6c17da20,
+-	0xa572: 0x6c091a20,
+-	0xa574: 0x6c0d4420, 0xa575: 0x6c0f3a20, 0xa576: 0x6c051420,
+-	0xa578: 0x6c17dc20,
+-	0xa57d: 0x6c03d820,
+-	// Block 0x296, offset 0xa580
+-	0xa580: 0x6c17de20,
+-	0xa585: 0x6c17e220,
+-	0xa58d: 0x6c13fe20,
+-	0xa591: 0x6c05b020,
+-	0xa598: 0x6c083620, 0xa599: 0x6c124e20, 0xa59a: 0x6c17e020,
+-	0xa5ac: 0x6c07a220, 0xa5ad: 0x6c159220,
+-	0xa5b2: 0x6c17e620, 0xa5b3: 0x6c17ec20,
+-	0xa5b4: 0x6c17e420, 0xa5b5: 0x6c07a020, 0xa5b7: 0x6c0a4620,
+-	0xa5be: 0x6c055620,
+-	// Block 0x297, offset 0xa5c0
+-	0xa5c2: 0x6c17ee20,
+-	0xa5c5: 0x6c04c620,
+-	0xa5c9: 0x6c17e820, 0xa5ca: 0x6c17ea20,
+-	0xa5cd: 0x6c104620, 0xa5cf: 0x6c0d3420,
+-	0xa5d1: 0x6c046e20,
+-	0xa5d5: 0x6c142e20, 0xa5d6: 0x6c17f020,
+-	0xa5da: 0x6c164220,
+-	0xa5de: 0x6c17f220,
+-	0xa5e3: 0x6c17f820,
+-	0xa5e5: 0x6c17f420, 0xa5e7: 0x6c0cd820,
+-	0xa5ed: 0x6c17f620, 0xa5ee: 0x6c17fa20,
+-	0xa5f5: 0x6c17fe20,
+-	0xa5f9: 0x6c17fc20, 0xa5fb: 0x6c136820,
+-	// Block 0x298, offset 0xa600
+-	0xa600: 0x6c03da20, 0xa601: 0x6c180220, 0xa602: 0x6c180420,
+-	0xa604: 0x6c019620,
+-	0xa609: 0x6c180020,
+-	0xa612: 0x6c097820,
+-	0xa614: 0x6c180a20, 0xa615: 0x6c180820, 0xa616: 0x6c180620,
+-	0xa618: 0x6c179620, 0xa61a: 0x6c180c20,
+-	0xa61f: 0x6c0a4820,
+-	0xa621: 0x6c180e20,
+-	0xa62a: 0x6c155620,
+-	0xa632: 0x6c150220,
+-	0xa637: 0x6c181220,
+-	0xa63a: 0x6c181020, 0xa63b: 0x6c181620,
+-	0xa63c: 0x6c181420, 0xa63f: 0x6c181820,
+-	// Block 0x299, offset 0xa640
+-	0xa640: 0x6c181a20, 0xa641: 0x6c00a820, 0xa643: 0x6c060a20,
+-	0xa644: 0x6c055a20, 0xa645: 0x6c09c420, 0xa646: 0x6c0eaa20, 0xa647: 0x6c047020,
+-	0xa648: 0x6c0c5020, 0xa649: 0x6c068e20, 0xa64b: 0x6c073820,
+-	0xa64c: 0x6c181e20, 0xa64d: 0x6c14e020, 0xa64e: 0x6c0fb820,
+-	0xa650: 0x6c08c620, 0xa652: 0x6c181c20,
+-	0xa654: 0x6c182020,
+-	0xa65a: 0x6c0fe820,
+-	0xa65c: 0x6c02de20,
+-	0xa662: 0x6c182220,
+-	0xa665: 0x6c10e420,
+-	0xa668: 0x6c0ca420, 0xa669: 0x6c182620, 0xa66a: 0x6c182820, 0xa66b: 0x6c11b820,
+-	0xa66c: 0x6c069020, 0xa66d: 0x6c16fa20, 0xa66e: 0x6c182a20,
+-	0xa671: 0x6c047420,
+-	0xa675: 0x6c135020, 0xa676: 0x6c0d6420, 0xa677: 0x6c050a20,
+-	0xa678: 0x6c0f9620,
+-	0xa67c: 0x6c05ca20,
+-	// Block 0x29a, offset 0xa680
+-	0xa680: 0x6c182c20, 0xa682: 0x6c182e20,
+-	0xa685: 0x6c10ac20, 0xa686: 0x6c013a20,
+-	0xa689: 0x6c183420, 0xa68a: 0x6c081220,
+-	0xa68c: 0x6c183220, 0xa68d: 0x6c07a420, 0xa68f: 0x6c183620,
+-	0xa690: 0x6c27ee20, 0xa691: 0x6c183820, 0xa692: 0x6c141620, 0xa693: 0x6c183a20,
+-	0xa695: 0x6c183c20, 0xa696: 0x6c183e20, 0xa697: 0x6c0ada20,
+-	0xa699: 0x6c092820,
+-	0xa6a0: 0x6c02fe20, 0xa6a2: 0x6c184420,
+-	0xa6a4: 0x6c184020, 0xa6a5: 0x6c14ca20, 0xa6a6: 0x6c184220,
+-	0xa6a8: 0x6c12d020, 0xa6a9: 0x6c184620, 0xa6aa: 0x6c184820, 0xa6ab: 0x6c184a20,
+-	0xa6ac: 0x6c0fea20,
+-	0xa6b0: 0x6c185220, 0xa6b1: 0x6c184e20, 0xa6b2: 0x6c185020, 0xa6b3: 0x6c184c20,
+-	0xa6b4: 0x6c07de20, 0xa6b5: 0x6c185420, 0xa6b6: 0x6c152420, 0xa6b7: 0x6c169020,
+-	0xa6bd: 0x6c185620,
+-	// Block 0x29b, offset 0xa6c0
+-	0xa6c4: 0x6c0bd020, 0xa6c5: 0x6c185820, 0xa6c6: 0x6c0a0020,
+-	0xa6c9: 0x6c185a20, 0xa6cb: 0x6c0eac20,
+-	0xa6cc: 0x6c164620, 0xa6cd: 0x6c0fec20,
+-	0xa6d6: 0x6c18ec20,
+-	0xa6db: 0x6c185c20,
+-	0xa6dc: 0x6c31a420, 0xa6dd: 0x6c04b220,
+-	0xa6e0: 0x6c185e20, 0xa6e1: 0x6c145020,
+-	0xa6e6: 0x6c0a1c20, 0xa6e7: 0x6c0df020,
+-	0xa6e9: 0x6c186220, 0xa6ea: 0x6c10b020,
+-	0xa6ed: 0x6c186420,
+-	0xa6f0: 0x6c186620, 0xa6f1: 0x6c025020,
+-	0xa6f5: 0x6c186820, 0xa6f6: 0x6c047620,
+-	0xa6f8: 0x6c108020, 0xa6f9: 0x6c017020, 0xa6fa: 0x6c09ec20,
+-	0xa6fd: 0x6c11a220, 0xa6fe: 0x6c186a20,
+-	// Block 0x29c, offset 0xa700
+-	0xa700: 0x6c0fee20, 0xa703: 0x6c0b6220,
+-	0xa704: 0x6c186c20, 0xa706: 0x6c133020, 0xa707: 0x6c0c3420,
+-	0xa708: 0x6c02f420, 0xa70a: 0x6c030220, 0xa70b: 0x6c186e20,
+-	0xa70e: 0x6c187220,
+-	0xa711: 0x6c055820,
+-	0xa714: 0x6c187020, 0xa717: 0x6c16ae20,
+-	0xa71d: 0x6c0a1e20,
+-	0xa724: 0x6c11da20, 0xa725: 0x6c137020, 0xa727: 0x6c187420,
+-	0xa729: 0x6c15fc20, 0xa72a: 0x6c187620,
+-	0xa72e: 0x6c187820,
+-	0xa730: 0x6c102820, 0xa733: 0x6c187a20,
+-	0xa736: 0x6c0bd220, 0xa737: 0x6c081420,
+-	0xa738: 0x6c05cc20, 0xa739: 0x6c187c20, 0xa73a: 0x6c086620, 0xa73b: 0x6c073a20,
+-	// Block 0x29d, offset 0xa740
+-	0xa743: 0x6c0f3c20,
+-	0xa744: 0x6c188020, 0xa747: 0x6c0d4620,
+-	0xa74a: 0x6c07f620, 0xa74b: 0x6c188220,
+-	0xa74c: 0x6c188420, 0xa74d: 0x6c0c9c20, 0xa74f: 0x6c187e20,
+-	0xa754: 0x6c188820, 0xa756: 0x6c140020,
+-	0xa75b: 0x6c072420,
+-	0xa75e: 0x6c188620,
+-	0xa763: 0x6c05ce20,
+-	0xa764: 0x6c07d420, 0xa765: 0x6c117e20,
+-	0xa769: 0x6c188e20, 0xa76a: 0x6c188a20,
+-	0xa76f: 0x6c131220,
+-	0xa770: 0x6c0adc20, 0xa771: 0x6c189c20, 0xa772: 0x6c02bc20, 0xa773: 0x6c189020,
+-	0xa774: 0x6c188c20, 0xa775: 0x6c0cda20,
+-	0xa77d: 0x6c189420, 0xa77f: 0x6c189220,
+-	// Block 0x29e, offset 0xa780
+-	0xa783: 0x6c027c20,
+-	0xa787: 0x6c05a420,
+-	0xa788: 0x6c189e20, 0xa789: 0x6c162220,
+-	0xa78d: 0x6c189620,
+-	0xa791: 0x6c18a020, 0xa792: 0x6c189a20,
+-	0xa794: 0x6c189820,
+-	0xa79b: 0x6c166620,
+-	0xa79f: 0x6c069220,
+-	0xa7a0: 0x6c01be20, 0xa7a3: 0x6c16b020,
+-	0xa7a9: 0x6c0a3620, 0xa7aa: 0x6c0fdc20, 0xa7ab: 0x6c072620,
+-	0xa7ac: 0x6c18a620, 0xa7ad: 0x6c18a820,
+-	0xa7b1: 0x6c169220,
+-	0xa7b4: 0x6c16da20, 0xa7b5: 0x6c18ac20,
+-	0xa7b9: 0x6c069420,
+-	0xa7bc: 0x6c18aa20, 0xa7be: 0x6c025220,
+-	// Block 0x29f, offset 0xa7c0
+-	0xa7c1: 0x6c18ae20, 0xa7c3: 0x6c144020,
+-	0xa7c5: 0x6c0ee820, 0xa7c7: 0x6c155820,
+-	0xa7c9: 0x6c138a20,
+-	0xa7cd: 0x6c18b020,
+-	0xa7d2: 0x6c2f1420,
+-	0xa7d5: 0x6c104820, 0xa7d7: 0x6c18b220,
+-	0xa7d8: 0x6c030420, 0xa7d9: 0x6c14b620,
+-	0xa7dd: 0x6c0a4a20, 0xa7de: 0x6c18b420, 0xa7df: 0x6c13a620,
+-	0xa7e0: 0x6c18bc20, 0xa7e2: 0x6c0bd420, 0xa7e3: 0x6c18b620,
+-	0xa7e4: 0x6c04c820, 0xa7e6: 0x6c18b820, 0xa7e7: 0x6c030620,
+-	0xa7f2: 0x6c054020, 0xa7f3: 0x6c18be20,
+-	0xa7f5: 0x6c18c020,
+-	0xa7f8: 0x6c18c220, 0xa7f9: 0x6c18c420, 0xa7fa: 0x6c094620,
+-	0xa7fe: 0x6c069620, 0xa7ff: 0x6c150c20,
+-	// Block 0x2a0, offset 0xa800
+-	0xa801: 0x6c152020, 0xa802: 0x6c10d620,
+-	0xa805: 0x6c13ba20, 0xa806: 0x6c18c620,
+-	0xa808: 0x6c18c820,
+-	0xa80d: 0x6c18cc20, 0xa80f: 0x6c18d020,
+-	0xa810: 0x6c18ce20,
+-	0xa815: 0x6c18d220, 0xa816: 0x6c01b220, 0xa817: 0x6c142c20,
+-	0xa819: 0x6c081020, 0xa81a: 0x6c18d420,
+-	0xa81d: 0x6c0cee20,
+-	0xa820: 0x6c0a4c20, 0xa821: 0x6c047a20, 0xa823: 0x6c18d620,
+-	0xa82a: 0x6c121620,
+-	0xa82f: 0x6c18d820,
+-	0xa831: 0x6c18da20, 0xa833: 0x6c18dc20,
+-	0xa838: 0x6c18de20, 0xa839: 0x6c126420, 0xa83a: 0x6c04f820, 0xa83b: 0x6c008a20,
+-	0xa83f: 0x6c106620,
+-	// Block 0x2a1, offset 0xa840
+-	0xa840: 0x6c18e020, 0xa841: 0x6c09c620, 0xa843: 0x6c0c5220,
+-	0xa845: 0x6c18e420, 0xa846: 0x6c18e220, 0xa847: 0x6c0a4e20,
+-	0xa848: 0x6c066220, 0xa849: 0x6c18e820, 0xa84a: 0x6c11dc20,
+-	0xa84d: 0x6c18ea20,
+-	0xa851: 0x6c121820, 0xa852: 0x6c0d6020, 0xa853: 0x6c0dd420,
+-	0xa854: 0x6c047820, 0xa857: 0x6c10c420,
+-	0xa858: 0x6c0e1620, 0xa85a: 0x6c118020,
+-	0xa85c: 0x6c143020, 0xa85e: 0x6c18ee20,
+-	0xa860: 0x6c0c5420,
+-	0xa866: 0x6c054e20,
+-	0xa869: 0x6c18f020,
+-	0xa86e: 0x6c18f220, 0xa86f: 0x6c00d420,
+-	0xa870: 0x6c00aa20, 0xa871: 0x6c038a20, 0xa873: 0x6c0d4820,
+-	0xa874: 0x6c040e20, 0xa875: 0x6c15ee20, 0xa877: 0x6c18f820,
+-	0xa878: 0x6c01a620, 0xa87b: 0x6c18f620,
+-	0xa87f: 0x6c047c20,
+-	// Block 0x2a2, offset 0xa880
+-	0xa882: 0x6c18fa20,
+-	0xa884: 0x6c153220,
+-	0xa896: 0x6c18fc20,
+-	0xa898: 0x6c166c20, 0xa89a: 0x6c069820,
+-	0xa89f: 0x6c060c20,
+-	0xa8a0: 0x6c18fe20,
+-	0xa8a5: 0x6c190220, 0xa8a6: 0x6c190020,
+-	0xa8a8: 0x6c0b8220, 0xa8a9: 0x6c00ee20,
+-	0xa8ad: 0x6c013820, 0xa8ae: 0x6c190420,
+-	0xa8b0: 0x6c190620, 0xa8b3: 0x6c060e20,
+-	0xa8b6: 0x6c190820,
+-	0xa8bb: 0x6c044820,
+-	// Block 0x2a3, offset 0xa8c0
+-	0xa8c2: 0x6c083820, 0xa8c3: 0x6c190a20,
+-	0xa8c8: 0x6c147c20, 0xa8c9: 0x6c078220, 0xa8ca: 0x6c042020, 0xa8cb: 0x6c155a20,
+-	0xa8cc: 0x6c0cdc20, 0xa8cd: 0x6c11de20, 0xa8ce: 0x6c098a20,
+-	0xa8d4: 0x6c09da20, 0xa8d6: 0x6c096020, 0xa8d7: 0x6c097a20,
+-	0xa8d9: 0x6c0a3820, 0xa8db: 0x6c11e020,
+-	0xa8df: 0x6c191020,
+-	0xa8e1: 0x6c010220, 0xa8e2: 0x6c0cde20, 0xa8e3: 0x6c069a20,
+-	0xa8e4: 0x6c062a20, 0xa8e5: 0x6c04f620,
+-	0xa8e8: 0x6c191820, 0xa8e9: 0x6c0df620, 0xa8ea: 0x6c0df420, 0xa8eb: 0x6c047e20,
+-	0xa8ec: 0x6c0a5020, 0xa8ed: 0x6c191a20, 0xa8ee: 0x6c191620, 0xa8ef: 0x6c01c020,
+-	0xa8f0: 0x6c0dc420, 0xa8f1: 0x6c090020, 0xa8f2: 0x6c086a20, 0xa8f3: 0x6c00c820,
+-	0xa8f6: 0x6c02d420, 0xa8f7: 0x6c072820,
+-	0xa8f8: 0x6c086820, 0xa8fa: 0x6c191c20,
+-	// Block 0x2a4, offset 0xa900
+-	0xa901: 0x6c191e20, 0xa903: 0x6c03fe20,
+-	0xa904: 0x6c028020,
+-	0xa908: 0x6c072a20, 0xa909: 0x6c03fc20, 0xa90a: 0x6c0f2e20, 0xa90b: 0x6c00c620,
+-	0xa90c: 0x6c104a20, 0xa90d: 0x6c14cc20, 0xa90e: 0x6c069e20, 0xa90f: 0x6c15fe20,
+-	0xa910: 0x6c0fba20, 0xa911: 0x6c069c20,
+-	0xa91b: 0x6c054220,
+-	0xa91d: 0x6c193020, 0xa91f: 0x6c04ee20,
+-	0xa920: 0x6c142820,
+-	0xa926: 0x6c121a20,
+-	0xa929: 0x6c192e20, 0xa92b: 0x6c036c20,
+-	0xa92c: 0x6c192420, 0xa92d: 0x6c192620, 0xa92e: 0x6c192a20,
+-	0xa936: 0x6c192c20,
+-	0xa938: 0x6c042220, 0xa939: 0x6c0b8620, 0xa93b: 0x6c133220,
+-	0xa93c: 0x6c192820, 0xa93d: 0x6c192020, 0xa93e: 0x6c066620,
+-	// Block 0x2a5, offset 0xa940
+-	0xa940: 0x6c192220, 0xa942: 0x6c16cc20,
+-	0xa946: 0x6c13bc20,
+-	0xa948: 0x6c0f4020, 0xa949: 0x6c066420, 0xa94a: 0x6c073c20,
+-	0xa94e: 0x6c193220,
+-	0xa951: 0x6c10a220,
+-	0xa95f: 0x6c193a20,
+-	0xa968: 0x6c098c20, 0xa96a: 0x6c097c20,
+-	0xa970: 0x6c194020, 0xa971: 0x6c193c20, 0xa973: 0x6c149620,
+-	0xa975: 0x6c193620, 0xa976: 0x6c194820, 0xa977: 0x6c193e20,
+-	0xa97b: 0x6c194420,
+-	0xa97c: 0x6c062c20, 0xa97d: 0x6c14ce20,
+-	// Block 0x2a6, offset 0xa980
+-	0xa980: 0x6c194620,
+-	0xa984: 0x6c194a20, 0xa986: 0x6c194e20,
+-	0xa98b: 0x6c07f820,
+-	0xa98c: 0x6c170820, 0xa98e: 0x6c193820, 0xa98f: 0x6c193420,
+-	0xa990: 0x6c194c20, 0xa992: 0x6c194220,
+-	0xa9a2: 0x6c195220,
+-	0xa9a4: 0x6c196420, 0xa9a5: 0x6c195620,
+-	0xa9a8: 0x6c195e20, 0xa9ab: 0x6c196020,
+-	0xa9ac: 0x6c195820, 0xa9af: 0x6c199a20,
+-	0xa9b2: 0x6c07ea20, 0xa9b3: 0x6c025620,
+-	0xa9b8: 0x6c195420,
+-	0xa9bc: 0x6c196820, 0xa9bd: 0x6c00ac20, 0xa9be: 0x6c196620,
+-	// Block 0x2a7, offset 0xa9c0
+-	0xa9c0: 0x6c000a20, 0xa9c1: 0x6c12b020, 0xa9c2: 0x6c196220,
+-	0xa9c4: 0x6c195a20, 0xa9c7: 0x6c195020,
+-	0xa9c8: 0x6c195c20, 0xa9c9: 0x6c07a820,
+-	0xa9d8: 0x6c196a20,
+-	0xa9e1: 0x6c00ae20, 0xa9e2: 0x6c197c20,
+-	0xa9e5: 0x6c196c20, 0xa9e6: 0x6c196e20,
+-	0xa9e8: 0x6c0a5220, 0xa9e9: 0x6c146620,
+-	0xa9ed: 0x6c197820, 0xa9ee: 0x6c197620,
+-	0xa9f2: 0x6c0f8a20,
+-	0xa9fa: 0x6c197a20,
+-	0xa9fd: 0x6c197420,
+-	// Block 0x2a8, offset 0xaa00
+-	0xaa04: 0x6c00e420, 0xaa06: 0x6c078420, 0xaa07: 0x6c0b2420,
+-	0xaa0f: 0x6c197020,
+-	0xaa10: 0x6c0ff020,
+-	0xaa14: 0x6c197220, 0xaa16: 0x6c000420,
+-	0xaa2e: 0x6c198620, 0xaa2f: 0x6c155220,
+-	0xaa31: 0x6c0a5620, 0xaa33: 0x6c199220,
+-	0xaa38: 0x6c199020, 0xaa39: 0x6c197e20,
+-	0xaa3e: 0x6c0d7e20,
+-	// Block 0x2a9, offset 0xaa40
+-	0xaa40: 0x6c198020,
+-	0xaa44: 0x6c0dd620, 0xaa45: 0x6c198a20, 0xaa46: 0x6c0a5420,
+-	0xaa4c: 0x6c198420, 0xaa4f: 0x6c151820,
+-	0xaa53: 0x6c055c20,
+-	0xaa56: 0x6c198c20, 0xaa57: 0x6c198e20,
+-	0xaa5c: 0x6c198820, 0xaa5d: 0x6c199420,
+-	0xaa63: 0x6c198220,
+-	0xaa7b: 0x6c19a020,
+-	0xaa7c: 0x6c19aa20, 0xaa7e: 0x6c19a220,
+-	// Block 0x2aa, offset 0xaa80
+-	0xaa80: 0x6c199820, 0xaa83: 0x6c19ac20,
+-	0xaa84: 0x6c0c9e20, 0xaa87: 0x6c19b020,
+-	0xaa89: 0x6c06a020, 0xaa8a: 0x6c199c20, 0xaa8b: 0x6c0eae20,
+-	0xaa98: 0x6c19a420, 0xaa99: 0x6c199620, 0xaa9a: 0x6c030a20,
+-	0xaa9c: 0x6c038c20, 0xaa9d: 0x6c02be20, 0xaa9e: 0x6c19a620, 0xaa9f: 0x6c199e20,
+-	0xaaa7: 0x6c05d020,
+-	0xaaa8: 0x6c19b220, 0xaaa9: 0x6c19ae20, 0xaaaa: 0x6c0ce220, 0xaaab: 0x6c040020,
+-	0xaaac: 0x6c048020, 0xaaae: 0x6c19a820,
+-	0xaab0: 0x6c051020,
+-	0xaab6: 0x6c010420,
+-	// Block 0x2ab, offset 0xaac0
+-	0xaac4: 0x6c19ba20, 0xaac5: 0x6c19b620, 0xaac7: 0x6c1a2820,
+-	0xaad4: 0x6c19c020,
+-	0xaada: 0x6c19b420,
+-	0xaadc: 0x6c19bc20, 0xaadf: 0x6c19b820,
+-	0xaae3: 0x6c086c20,
+-	0xaae4: 0x6c19be20,
+-	0xaaf7: 0x6c19c420,
+-	0xaaf9: 0x6c19ce20,
+-	0xaafd: 0x6c19ca20, 0xaafe: 0x6c19c820,
+-	// Block 0x2ac, offset 0xab00
+-	0xab06: 0x6c0e1820,
+-	0xab09: 0x6c01c220,
+-	0xab14: 0x6c19c220, 0xab16: 0x6c19c620, 0xab17: 0x6c0a5820,
+-	0xab18: 0x6c00e220, 0xab1b: 0x6c19cc20,
+-	0xab29: 0x6c01f420,
+-	0xab2f: 0x6c19e220,
+-	0xab31: 0x6c0b0020, 0xab32: 0x6c19da20,
+-	0xab34: 0x6c19d620, 0xab36: 0x6c19d820,
+-	0xab38: 0x6c19dc20,
+-	// Block 0x2ad, offset 0xab40
+-	0xab42: 0x6c00f620,
+-	0xab4c: 0x6c0cae20, 0xab4e: 0x6c19d020,
+-	0xab50: 0x6c19d220,
+-	0xab5b: 0x6c02e820,
+-	0xab64: 0x6c19e020,
+-	0xab68: 0x6c038e20, 0xab6a: 0x6c19e620, 0xab6b: 0x6c19de20,
+-	0xab6c: 0x6c19e420,
+-	0xab74: 0x6c133420,
+-	0xab78: 0x6c109220, 0xab7a: 0x6c11d020,
+-	// Block 0x2ae, offset 0xab80
+-	0xab80: 0x6c19ea20,
+-	0xab86: 0x6c19e820, 0xab87: 0x6c027e20,
+-	0xab8a: 0x6c19ec20,
+-	0xab8f: 0x6c19f220,
+-	0xab94: 0x6c19f020,
+-	0xaba0: 0x6c19ee20, 0xaba2: 0x6c111620,
+-	0xaba5: 0x6c19f420,
+-	0xabae: 0x6c19f620,
+-	0xabb4: 0x6c19fa20, 0xabb6: 0x6c19f820,
+-	0xabbc: 0x6c19fe20,
+-	// Block 0x2af, offset 0xabc0
+-	0xabc0: 0x6c1a0420, 0xabc1: 0x6c1a0020, 0xabc2: 0x6c19fc20, 0xabc3: 0x6c1a0220,
+-	0xabc8: 0x6c1a0620,
+-	0xabce: 0x6c1a0820,
+-	0xabd1: 0x6c1a0a20, 0xabd3: 0x6c1a0c20,
+-	0xabd7: 0x6c1a0e20,
+-	0xabd8: 0x6c183020, 0xabda: 0x6c098820, 0xabdb: 0x6c086e20,
+-	0xabde: 0x6c021e20,
+-	0xabe0: 0x6c00b020, 0xabe3: 0x6c0e3c20,
+-	0xabee: 0x6c1a1020,
+-	0xabf0: 0x6c076020, 0xabf2: 0x6c005e20, 0xabf3: 0x6c0b8020,
+-	0xabf9: 0x6c1a1220, 0xabfa: 0x6c062e20,
+-	0xabfd: 0x6c073e20, 0xabff: 0x6c1a1620,
+-	// Block 0x2b0, offset 0xac00
+-	0xac00: 0x6c1a1420, 0xac03: 0x6c139820,
+-	0xac04: 0x6c1a1820,
+-	0xac08: 0x6c1a1c20, 0xac09: 0x6c1a1a20, 0xac0b: 0x6c1a1e20,
+-	0xac0d: 0x6c1a2020, 0xac0f: 0x6c05d220,
+-	0xac12: 0x6c013c20, 0xac13: 0x6c1a2220,
+-	0xac16: 0x6c1a2620,
+-	0xac18: 0x6c1a2420,
+-	0xac1c: 0x6c1a2a20, 0xac1f: 0x6c0fe020,
+-	0xac26: 0x6c1a2c20, 0xac27: 0x6c002a20,
+-	0xac28: 0x6c07d620,
+-	0xac2d: 0x6c055e20,
+-	0xac30: 0x6c0e5220,
+-	0xac37: 0x6c1a2e20,
+-	0xac38: 0x6c1a3020, 0xac3b: 0x6c1a3420,
+-	// Block 0x2b1, offset 0xac40
+-	0xac40: 0x6c1a3620, 0xac42: 0x6c07e020,
+-	0xac47: 0x6c04ca20,
+-	0xac4a: 0x6c140220,
+-	0xac4e: 0x6c1a3220, 0xac4f: 0x6c1a3820,
+-	0xac50: 0x6c079a20, 0xac51: 0x6c06a220,
+-	0xac61: 0x6c1a4020,
+-	0xac64: 0x6c076220, 0xac66: 0x6c0e1a20,
+-	0xac69: 0x6c1a3a20, 0xac6a: 0x6c0f2420,
+-	0xac7f: 0x6c1a4220,
+-	// Block 0x2b2, offset 0xac80
+-	0xac82: 0x6c0b8820,
+-	0xac88: 0x6c1a3e20, 0xac89: 0x6c1a4420, 0xac8b: 0x6c056220,
+-	0xac93: 0x6c1a4620,
+-	0xaca0: 0x6c1a4820, 0xaca2: 0x6c06a420, 0xaca3: 0x6c027420,
+-	0xaca4: 0x6c1a4c20,
+-	0xacaa: 0x6c1a4e20,
+-	0xacb0: 0x6c1a5020, 0xacb3: 0x6c1a4a20,
+-	// Block 0x2b3, offset 0xacc0
+-	0xacc0: 0x6c1a3c20, 0xacc3: 0x6c1a5220,
+-	0xacc6: 0x6c1a5420,
+-	0xaccb: 0x6c145c20,
+-	0xacce: 0x6c0ade20,
+-	0xacd2: 0x6c1a5820, 0xacd3: 0x6c1a5a20,
+-	0xacd4: 0x6c1a5620, 0xacd6: 0x6c1a5e20,
+-	0xacdc: 0x6c111420, 0xacdf: 0x6c009020,
+-	0xace0: 0x6c12c820, 0xace3: 0x6c1a6020,
+-	0xacf4: 0x6c0b0220, 0xacf7: 0x6c090220,
+-	0xacf9: 0x6c115e20, 0xacfa: 0x6c039020,
+-	0xacfc: 0x6c07ee20,
+-	// Block 0x2b4, offset 0xad00
+-	0xad00: 0x6c144620, 0xad02: 0x6c104c20,
+-	0xad05: 0x6c05d420, 0xad06: 0x6c0d9620,
+-	0xad0a: 0x6c1a5c20, 0xad0b: 0x6c1a6220,
+-	0xad15: 0x6c0d8020,
+-	0xad19: 0x6c1a6420,
+-	0xad1d: 0x6c1a6620,
+-	0xad21: 0x6c1a6a20,
+-	0xad24: 0x6c0f4220,
+-	0xad2a: 0x6c030c20,
+-	0xad2f: 0x6c319c20,
+-	0xad30: 0x6c013e20, 0xad31: 0x6c13be20,
+-	0xad34: 0x6c0ae020, 0xad35: 0x6c0fbc20,
+-	0xad3a: 0x6c07e420,
+-	0xad3d: 0x6c1a7620,
+-	// Block 0x2b5, offset 0xad40
+-	0xad40: 0x6c135220, 0xad41: 0x6c168220,
+-	0xad4a: 0x6c022020, 0xad4b: 0x6c1a6e20,
+-	0xad51: 0x6c0cb020, 0xad52: 0x6c1a7420,
+-	0xad54: 0x6c0ff220, 0xad57: 0x6c0fbe20,
+-	0xad58: 0x6c0ff420, 0xad59: 0x6c11d220, 0xad5a: 0x6c0f0a20,
+-	0xad5e: 0x6c07aa20,
+-	0xad62: 0x6c1a6c20,
+-	0xad69: 0x6c016820, 0xad6b: 0x6c0f9820,
+-	0xad70: 0x6c1a7020, 0xad72: 0x6c1a6820,
+-	0xad75: 0x6c0b6420,
+-	0xad79: 0x6c1a7820,
+-	0xad7e: 0x6c09e820,
+-	// Block 0x2b6, offset 0xad80
+-	0xad83: 0x6c048220,
+-	0xad85: 0x6c1a7a20,
+-	0xad93: 0x6c13a820,
+-	0xad97: 0x6c0d3620,
+-	0xad9c: 0x6c0efc20, 0xad9f: 0x6c1a7e20,
+-	0xada8: 0x6c143220, 0xadab: 0x6c1a8020,
+-	0xadae: 0x6c1a8a20,
+-	0xadb3: 0x6c133620,
+-	0xadb8: 0x6c1a8820, 0xadb9: 0x6c1a7c20, 0xadba: 0x6c1a8220, 0xadbb: 0x6c1a8620,
+-	0xadbe: 0x6c076420,
+-	// Block 0x2b7, offset 0xadc0
+-	0xadc1: 0x6c136a20,
+-	0xadc5: 0x6c1a8c20, 0xadc7: 0x6c0e3e20,
+-	0xadca: 0x6c022220,
+-	0xadcc: 0x6c0ae220,
+-	0xadd1: 0x6c1a9020, 0xadd3: 0x6c1a8e20,
+-	0xadd5: 0x6c072c20, 0xadd7: 0x6c1a9220,
+-	0xadd8: 0x6c1a9620, 0xadd9: 0x6c1a9420,
+-	0xaddc: 0x6c1a9a20, 0xadde: 0x6c1a8420, 0xaddf: 0x6c1a9e20,
+-	0xade4: 0x6c1a9c20, 0xade5: 0x6c1a9820,
+-	0xadeb: 0x6c087020,
+-	0xadec: 0x6c0b6620, 0xadee: 0x6c0ce420, 0xadef: 0x6c1aa020,
+-	0xadf0: 0x6c0bf820, 0xadf1: 0x6c009a20, 0xadf2: 0x6c116c20,
+-	0xadf7: 0x6c0f2620,
+-	0xadf9: 0x6c1aa420, 0xadfa: 0x6c1aa220, 0xadfb: 0x6c1aa620,
+-	0xadfc: 0x6c1aa820, 0xadfd: 0x6c1aaa20,
+-	// Block 0x2b8, offset 0xae00
+-	0xae02: 0x6c1aac20,
+-	0xae09: 0x6c137a20, 0xae0a: 0x6c1aae20,
+-	0xae0f: 0x6c01c420,
+-	0xae10: 0x6c1ab020,
+-	0xae15: 0x6c158420, 0xae16: 0x6c025420,
+-	0xae18: 0x6c18f420, 0xae19: 0x6c09dc20, 0xae1a: 0x6c0d7620, 0xae1b: 0x6c1ab220,
+-	0xae1c: 0x6c152620,
+-	0xae22: 0x6c14b820,
+-	0xae25: 0x6c1ab620, 0xae27: 0x6c0dc620,
+-	0xae29: 0x6c0f9a20, 0xae2a: 0x6c0d7820, 0xae2b: 0x6c12ca20,
+-	0xae2c: 0x6c1ab820, 0xae2d: 0x6c1aba20, 0xae2e: 0x6c017220,
+-	0xae31: 0x6c090420, 0xae32: 0x6c1abc20,
+-	0xae37: 0x6c006020,
+-	0xae38: 0x6c1abe20,
+-	0xae3e: 0x6c1ac020,
+-	// Block 0x2b9, offset 0xae40
+-	0xae44: 0x6c014020, 0xae47: 0x6c039220,
+-	0xae48: 0x6c10a820, 0xae49: 0x6c13c020,
+-	0xae4e: 0x6c1ac820, 0xae4f: 0x6c0ce620,
+-	0xae50: 0x6c1ac620, 0xae51: 0x6c056420,
+-	0xae54: 0x6c144a20, 0xae55: 0x6c1ac420, 0xae57: 0x6c0ff620,
+-	0xae58: 0x6c1acc20, 0xae5a: 0x6c1aca20,
+-	0xae60: 0x6c1ad020, 0xae62: 0x6c1ace20,
+-	0xae65: 0x6c017420, 0xae67: 0x6c1ad220,
+-	0xae68: 0x6c0a5a20, 0xae69: 0x6c1ad620, 0xae6a: 0x6c0dfe20,
+-	0xae6c: 0x6c1ad420, 0xae6e: 0x6c133e20,
+-	0xae73: 0x6c0a3a20,
+-	0xae74: 0x6c0fe220,
+-	0xae78: 0x6c1ad820,
+-	0xae7d: 0x6c06a620,
+-	// Block 0x2ba, offset 0xae80
+-	0xae81: 0x6c1ada20, 0xae82: 0x6c10e620, 0xae83: 0x6c121c20,
+-	0xae84: 0x6c14f220,
+-	0xae8a: 0x6c10ee20,
+-	0xae8d: 0x6c1aec20,
+-	0xae93: 0x6c03dc20,
+-	0xae96: 0x6c159620,
+-	0xae99: 0x6c14ae20, 0xae9b: 0x6c1baa20,
+-	0xae9d: 0x6c1adc20,
+-	0xaea3: 0x6c1ae220,
+-	0xaea5: 0x6c0d8220,
+-	0xaea8: 0x6c140420,
+-	0xaeac: 0x6c0fc020,
+-	0xaeb2: 0x6c1ae420,
+-	0xaeb9: 0x6c145e20, 0xaebb: 0x6c07ac20,
+-	0xaebe: 0x6c0a5c20,
+-	// Block 0x2bb, offset 0xaec0
+-	0xaec6: 0x6c1ae620,
+-	0xaec9: 0x6c087420, 0xaecb: 0x6c087220,
+-	0xaed0: 0x6c003220, 0xaed1: 0x6c063020, 0xaed3: 0x6c0bd620,
+-	0xaed4: 0x6c006220,
+-	0xaed9: 0x6c1aee20, 0xaeda: 0x6c1af020,
+-	0xaedc: 0x6c1aea20,
+-	0xaee5: 0x6c00ec20, 0xaee6: 0x6c030e20,
+-	0xaee8: 0x6c1ae820, 0xaeea: 0x6c14da20, 0xaeeb: 0x6c127e20,
+-	0xaef6: 0x6c001020,
+-	0xaefb: 0x6c00b220,
+-	0xaeff: 0x6c087620,
+-	// Block 0x2bc, offset 0xaf00
+-	0xaf01: 0x6c006420, 0xaf03: 0x6c000620,
+-	0xaf09: 0x6c1afa20,
+-	0xaf11: 0x6c1af620,
+-	0xaf18: 0x6c14c820, 0xaf1a: 0x6c1afc20,
+-	0xaf1c: 0x6c1af820, 0xaf1f: 0x6c1af420,
+-	0xaf20: 0x6c0b2620,
+-	0xaf25: 0x6c1af220,
+-	0xaf29: 0x6c138c20,
+-	0xaf2f: 0x6c066820,
+-	0xaf35: 0x6c1b0420, 0xaf36: 0x6c1b0620,
+-	0xaf3c: 0x6c0a5e20,
+-	// Block 0x2bd, offset 0xaf40
+-	0xaf40: 0x6c1afe20, 0xaf41: 0x6c16dc20,
+-	0xaf46: 0x6c113c20,
+-	0xaf49: 0x6c1b0220,
+-	0xaf5a: 0x6c076620,
+-	0xaf62: 0x6c1b0820,
+-	0xaf66: 0x6c12cc20,
+-	0xaf6a: 0x6c1b0a20,
+-	0xaf6c: 0x6c1b0020,
+-	0xaf7f: 0x6c14c620,
+-	// Block 0x2be, offset 0xaf80
+-	0xaf92: 0x6c116020,
+-	0xaf9a: 0x6c1b0c20, 0xaf9b: 0x6c128020,
+-	0xafbc: 0x6c1b0e20, 0xafbd: 0x6c1b1620, 0xafbe: 0x6c1b1020,
+-	// Block 0x2bf, offset 0xafc0
+-	0xafc1: 0x6c01c620, 0xafc2: 0x6c1b1420,
+-	0xafc9: 0x6c090620, 0xafcb: 0x6c1b1220,
+-	0xafcc: 0x6c05d620,
+-	0xafd0: 0x6c1b2e20,
+-	0xafd6: 0x6c1b2020, 0xafd7: 0x6c1b1a20,
+-	0xafe1: 0x6c0e7c20, 0xafe3: 0x6c1b1820,
+-	0xafe6: 0x6c1b1c20,
+-	0xafe9: 0x6c1b1e20,
+-	0xaffa: 0x6c1b2220, 0xaffb: 0x6c1b2420,
+-	// Block 0x2c0, offset 0xb000
+-	0xb009: 0x6c039420, 0xb00b: 0x6c1b2820,
+-	0xb00c: 0x6c1b2620,
+-	0xb016: 0x6c1b2a20,
+-	0xb022: 0x6c0ae420,
+-	0xb02a: 0x6c1b3020,
+-	0xb02c: 0x6c0f2820,
+-	0xb030: 0x6c010620, 0xb032: 0x6c1b2c20,
+-	0xb036: 0x6c1b3220,
+-	0xb03e: 0x6c1b3420,
+-	// Block 0x2c1, offset 0xb040
+-	0xb040: 0x6c1b3a20, 0xb043: 0x6c1b3620,
+-	0xb045: 0x6c1b3820,
+-	0xb050: 0x6c087820, 0xb051: 0x6c1b3c20,
+-	0xb054: 0x6c06a820, 0xb055: 0x6c1b3e20, 0xb057: 0x6c08c820,
+-	0xb058: 0x6c0d6820, 0xb05a: 0x6c1b4020, 0xb05b: 0x6c1b4220,
+-	0xb05c: 0x6c088820, 0xb05d: 0x6c06aa20, 0xb05f: 0x6c14f420,
+-	0xb063: 0x6c03bc20,
+-	0xb064: 0x6c063220, 0xb065: 0x6c1b4420, 0xb066: 0x6c02a420,
+-	0xb069: 0x6c1b4620, 0xb06b: 0x6c0d6a20,
+-	0xb070: 0x6c1b4820, 0xb071: 0x6c1b9820, 0xb073: 0x6c1b4a20,
+-	0xb075: 0x6c1b4c20,
+-	0xb078: 0x6c1b4e20, 0xb07a: 0x6c1b5220,
+-	// Block 0x2c2, offset 0xb080
+-	0xb080: 0x6c1b5420, 0xb083: 0x6c1b5620,
+-	0xb085: 0x6c0dd820, 0xb087: 0x6c00ca20,
+-	0xb088: 0x6c096220, 0xb089: 0x6c004420, 0xb08b: 0x6c0cea20,
+-	0xb08c: 0x6c031020, 0xb08d: 0x6c08fa20, 0xb08f: 0x6c06ac20,
+-	0xb095: 0x6c0ff820, 0xb097: 0x6c098e20,
+-	0xb098: 0x6c031220, 0xb099: 0x6c0e8420, 0xb09a: 0x6c0f4420, 0xb09b: 0x6c003020,
+-	0xb09c: 0x6c03de20, 0xb09d: 0x6c13c220, 0xb09f: 0x6c091420,
+-	0xb0a2: 0x6c041020, 0xb0a3: 0x6c0c5620,
+-	0xb0a4: 0x6c090820, 0xb0a5: 0x6c155c20, 0xb0a6: 0x6c1b5820,
+-	0xb0ae: 0x6c042420,
+-	0xb0b0: 0x6c07ae20, 0xb0b3: 0x6c025820,
+-	0xb0b4: 0x6c014220, 0xb0b5: 0x6c0a6020, 0xb0b6: 0x6c01c820,
+-	0xb0b8: 0x6c1b5a20, 0xb0b9: 0x6c159820,
+-	0xb0bf: 0x6c09de20,
+-	// Block 0x2c3, offset 0xb0c0
+-	0xb0c2: 0x6c095820, 0xb0c3: 0x6c1b5c20,
+-	0xb0c4: 0x6c039620, 0xb0c5: 0x6c108c20, 0xb0c6: 0x6c14a220, 0xb0c7: 0x6c1b5e20,
+-	0xb0c9: 0x6c1b6020,
+-	0xb0cc: 0x6c12ce20,
+-	0xb0d0: 0x6c1b6420, 0xb0d2: 0x6c030020, 0xb0d3: 0x6c051620,
+-	0xb0d4: 0x6c1b6220,
+-	0xb0db: 0x6c031420,
+-	0xb0dd: 0x6c0b2820, 0xb0de: 0x6c1b6c20, 0xb0df: 0x6c081620,
+-	0xb0e1: 0x6c01ca20, 0xb0e2: 0x6c1b6a20,
+-	0xb0e4: 0x6c1b6620, 0xb0e5: 0x6c1b6e20, 0xb0e6: 0x6c1b6820, 0xb0e7: 0x6c10fa20,
+-	0xb0e8: 0x6c205420, 0xb0e9: 0x6c0b2a20, 0xb0eb: 0x6c1b7020,
+-	0xb0ee: 0x6c164820,
+-	0xb0f0: 0x6c1b7220, 0xb0f3: 0x6c1b7620,
+-	0xb0f5: 0x6c0eb020, 0xb0f6: 0x6c1b7420,
+-	0xb0f8: 0x6c0bc620, 0xb0fa: 0x6c08ca20,
+-	0xb0fe: 0x6c0d9820, 0xb0ff: 0x6c097e20,
+-	// Block 0x2c4, offset 0xb100
+-	0xb101: 0x6c130620, 0xb102: 0x6c0c5820,
+-	0xb104: 0x6c092a20, 0xb105: 0x6c1b7820, 0xb106: 0x6c0a6220, 0xb107: 0x6c1b7a20,
+-	0xb108: 0x6c1b7c20, 0xb109: 0x6c006620, 0xb10a: 0x6c0d6c20, 0xb10b: 0x6c0b6820,
+-	0xb10d: 0x6c1b7e20, 0xb10e: 0x6c104e20, 0xb10f: 0x6c0a6420,
+-	0xb111: 0x6c0a6620, 0xb113: 0x6c1b8020,
+-	0xb116: 0x6c0c5a20,
+-	0xb11a: 0x6c0a6820,
+-	0xb120: 0x6c1b8220, 0xb122: 0x6c1b8420,
+-	0xb124: 0x6c151020,
+-	0xb128: 0x6c1b8620,
+-	0xb12d: 0x6c04b420,
+-	0xb131: 0x6c099020,
+-	0xb138: 0x6c1b8820, 0xb139: 0x6c1b8a20, 0xb13a: 0x6c094820, 0xb13b: 0x6c0b1c20,
+-	0xb13c: 0x6c10d020, 0xb13d: 0x6c0b6c20, 0xb13e: 0x6c125020, 0xb13f: 0x6c10e820,
+-	// Block 0x2c5, offset 0xb140
+-	0xb140: 0x6c04ba20, 0xb141: 0x6c1b8c20,
+-	0xb145: 0x6c044a20, 0xb146: 0x6c1b8e20,
+-	0xb148: 0x6c052420, 0xb14a: 0x6c108620, 0xb14b: 0x6c019820,
+-	0xb14d: 0x6c087a20, 0xb14e: 0x6c1b9020, 0xb14f: 0x6c1b9620,
+-	0xb150: 0x6c1b9420, 0xb151: 0x6c052220, 0xb153: 0x6c1b9220,
+-	0xb155: 0x6c0f9c20,
+-	0xb15e: 0x6c0d5820,
+-	0xb160: 0x6c0fc220, 0xb161: 0x6c092020,
+-	0xb164: 0x6c0cec20, 0xb165: 0x6c160020,
+-	0xb16c: 0x6c1b9a20, 0xb16e: 0x6c1b9c20, 0xb16f: 0x6c109420,
+-	0xb171: 0x6c083a20,
+-	0xb176: 0x6c1ba020,
+-	0xb179: 0x6c1ba220,
+-	// Block 0x2c6, offset 0xb180
+-	0xb18c: 0x6c1ba420,
+-	0xb190: 0x6c039820, 0xb191: 0x6c1ba620,
+-	0xb194: 0x6c1ba820,
+-	0xb1a1: 0x6c019020,
+-	0xb1a8: 0x6c0cb220, 0xb1a9: 0x6c037820, 0xb1ab: 0x6c1bac20,
+-	0xb1ac: 0x6c14a020,
+-	0xb1b1: 0x6c0d9c20, 0xb1b3: 0x6c02a620,
+-	0xb1b6: 0x6c1bb020, 0xb1b7: 0x6c1bb420,
+-	0xb1b8: 0x6c036e20, 0xb1bb: 0x6c1bae20,
+-	0xb1bc: 0x6c1bb220, 0xb1be: 0x6c1bb820,
+-	// Block 0x2c7, offset 0xb1c0
+-	0xb1c5: 0x6c1bb620, 0xb1c7: 0x6c1bba20,
+-	0xb1d9: 0x6c1bbc20,
+-	0xb1e0: 0x6c106220, 0xb1e1: 0x6c048420,
+-	0xb1e8: 0x6c020220, 0xb1e9: 0x6c1bbe20, 0xb1ea: 0x6c1bc820,
+-	0xb1ed: 0x6c1bc420, 0xb1ef: 0x6c13c620,
+-	0xb1f0: 0x6c13c420,
+-	0xb1f6: 0x6c0ffa20,
+-	0xb1fa: 0x6c1bc220, 0xb1fb: 0x6c09f420,
+-	0xb1fd: 0x6c1bc020,
+-	// Block 0x2c8, offset 0xb200
+-	0xb207: 0x6c0ba820,
+-	0xb20b: 0x6c1bca20,
+-	0xb20e: 0x6c07ec20,
+-	0xb211: 0x6c1bd620,
+-	0xb214: 0x6c1bd820, 0xb215: 0x6c1bcc20, 0xb216: 0x6c025a20, 0xb217: 0x6c1bce20,
+-	0xb218: 0x6c1be020, 0xb219: 0x6c1bde20, 0xb21a: 0x6c1bdc20, 0xb21b: 0x6c1bd420,
+-	0xb21f: 0x6c1bd220,
+-	0xb222: 0x6c1bda20,
+-	0xb229: 0x6c13c820,
+-	// Block 0x2c9, offset 0xb240
+-	0xb24b: 0x6c1be820,
+-	0xb24c: 0x6c1be220, 0xb24e: 0x6c1be620,
+-	0xb250: 0x6c15f020, 0xb252: 0x6c1be420,
+-	0xb25c: 0x6c1bd020,
+-	0xb269: 0x6c0baa20,
+-	0xb26c: 0x6c1bea20, 0xb26f: 0x6c078620,
+-	0xb273: 0x6c1bec20,
+-	0xb276: 0x6c1bee20,
+-	// Block 0x2ca, offset 0xb280
+-	0xb282: 0x6c1bf420,
+-	0xb284: 0x6c1bf220, 0xb287: 0x6c1bf020,
+-	0xb28b: 0x6c0ffc20,
+-	0xb28c: 0x6c1bc620,
+-	0xb290: 0x6c1c0020,
+-	0xb29d: 0x6c1bf820,
+-	0xb2a2: 0x6c1bf620,
+-	0xb2ac: 0x6c1bfa20, 0xb2ae: 0x6c1bfc20,
+-	0xb2b7: 0x6c1c0220,
+-	0xb2ba: 0x6c169420,
+-	0xb2bc: 0x6c1c0420, 0xb2bd: 0x6c1bfe20,
+-	// Block 0x2cb, offset 0xb2c0
+-	0xb2c9: 0x6c1c0620,
+-	0xb2cc: 0x6c037020, 0xb2cd: 0x6c1c0820,
+-	0xb2d2: 0x6c1c0c20, 0xb2d3: 0x6c1c0a20,
+-	0xb2d6: 0x6c1c0e20,
+-	0xb2db: 0x6c1c1020,
+-	0xb2dd: 0x6c0c5c20, 0xb2de: 0x6c099220,
+-	0xb2e1: 0x6c0a1420, 0xb2e3: 0x6c0d0220,
+-	0xb2e5: 0x6c06ae20, 0xb2e6: 0x6c078820, 0xb2e7: 0x6c06b020,
+-	0xb2e8: 0x6c044c20, 0xb2eb: 0x6c1c1220,
+-	0xb2ee: 0x6c078a20,
+-	0xb2f1: 0x6c063420, 0xb2f2: 0x6c1c1420, 0xb2f3: 0x6c149c20,
+-	0xb2f4: 0x6c112a20, 0xb2f5: 0x6c1c1620, 0xb2f7: 0x6c06b220,
+-	0xb2fb: 0x6c030820,
+-	0xb2fd: 0x6c0e0220, 0xb2fe: 0x6c04cc20,
+-	// Block 0x2cc, offset 0xb300
+-	0xb302: 0x6c087c20, 0xb303: 0x6c12d220,
+-	0xb306: 0x6c11e220,
+-	0xb30b: 0x6c1c1820,
+-	0xb30c: 0x6c039a20,
+-	0xb311: 0x6c1c1e20,
+-	0xb316: 0x6c0eb220,
+-	0xb319: 0x6c1c1c20, 0xb31a: 0x6c1c1a20, 0xb31b: 0x6c1c2020,
+-	0xb31d: 0x6c0f4620,
+-	0xb325: 0x6c0b8a20,
+-	0xb32b: 0x6c087e20,
+-	0xb32d: 0x6c0c1420, 0xb32f: 0x6c0d9e20,
+-	0xb330: 0x6c03b020, 0xb333: 0x6c0eb420,
+-	0xb336: 0x6c1c2220, 0xb337: 0x6c1c2420,
+-	0xb338: 0x6c0ae620,
+-	0xb33d: 0x6c140620,
+-	// Block 0x2cd, offset 0xb340
+-	0xb340: 0x6c1c2a20, 0xb343: 0x6c1c2820,
+-	0xb344: 0x6c1c2620, 0xb345: 0x6c131620, 0xb347: 0x6c1c3820,
+-	0xb34c: 0x6c144820, 0xb34e: 0x6c1c2c20,
+-	0xb354: 0x6c1c3020, 0xb355: 0x6c146a20, 0xb357: 0x6c1c2e20,
+-	0xb35f: 0x6c1c3220,
+-	0xb361: 0x6c11b020, 0xb362: 0x6c1c3420, 0xb363: 0x6c135420,
+-	0xb364: 0x6c1c3620,
+-	0xb372: 0x6c031620, 0xb373: 0x6c135620,
+-	0xb374: 0x6c110220, 0xb375: 0x6c1c3a20, 0xb376: 0x6c1c3c20,
+-	0xb378: 0x6c06b420, 0xb379: 0x6c031820, 0xb37a: 0x6c1c3e20, 0xb37b: 0x6c061020,
+-	0xb37c: 0x6c159420, 0xb37d: 0x6c155e20, 0xb37e: 0x6c039c20, 0xb37f: 0x6c1c4220,
+-	// Block 0x2ce, offset 0xb380
+-	0xb381: 0x6c0eb620, 0xb383: 0x6c06b620,
+-	0xb384: 0x6c0a6a20, 0xb387: 0x6c121e20,
+-	0xb38a: 0x6c0a6c20,
+-	0xb38f: 0x6c0a3c20,
+-	0xb395: 0x6c0f4820, 0xb396: 0x6c13ca20, 0xb397: 0x6c0f9e20,
+-	0xb39a: 0x6c06b820,
+-	0xb39c: 0x6c12d420,
+-	0xb3a0: 0x6c1c4420,
+-	0xb3a6: 0x6c0fde20, 0xb3a7: 0x6c079c20,
+-	0xb3ab: 0x6c063620,
+-	0xb3ad: 0x6c0f4a20,
+-	0xb3b5: 0x6c004620, 0xb3b6: 0x6c0a2820, 0xb3b7: 0x6c06ba20,
+-	0xb3b8: 0x6c159a20,
+-	// Block 0x2cf, offset 0xb3c0
+-	0xb3c1: 0x6c1c4620, 0xb3c2: 0x6c1c4820, 0xb3c3: 0x6c114620,
+-	0xb3c8: 0x6c1c4a20, 0xb3c9: 0x6c16b620, 0xb3ca: 0x6c16de20,
+-	0xb3cf: 0x6c1c4e20,
+-	0xb3d0: 0x6c1c4c20, 0xb3d3: 0x6c028220,
+-	0xb3d6: 0x6c1c5020,
+-	0xb3da: 0x6c1c5620, 0xb3db: 0x6c1c5820,
+-	0xb3dd: 0x6c1c5420, 0xb3df: 0x6c129c20,
+-	0xb3e0: 0x6c0a6e20, 0xb3e1: 0x6c1c5c20, 0xb3e2: 0x6c1c5a20, 0xb3e3: 0x6c1c5220,
+-	0xb3e8: 0x6c1c5e20, 0xb3e9: 0x6c1c6020,
+-	0xb3ec: 0x6c1c6220,
+-	0xb3f0: 0x6c1c6820, 0xb3f1: 0x6c1c6420, 0xb3f3: 0x6c1c6620,
+-	0xb3f4: 0x6c1c6a20, 0xb3f6: 0x6c014420, 0xb3f7: 0x6c0f4c20,
+-	0xb3f8: 0x6c1c6c20, 0xb3fa: 0x6c05d820, 0xb3fb: 0x6c022420,
+-	0xb3fc: 0x6c111020, 0xb3fe: 0x6c1c6e20, 0xb3ff: 0x6c10de20,
+-	// Block 0x2d0, offset 0xb400
+-	0xb401: 0x6c138e20, 0xb403: 0x6c1c7020,
+-	0xb404: 0x6c16e020,
+-	0xb409: 0x6c1c7220, 0xb40a: 0x6c135820, 0xb40b: 0x6c1c7820,
+-	0xb40c: 0x6c172c20, 0xb40d: 0x6c174c20, 0xb40f: 0x6c08f020,
+-	0xb410: 0x6c10d220, 0xb411: 0x6c1c7a20, 0xb413: 0x6c042620,
+-	0xb414: 0x6c0eb820, 0xb415: 0x6c00b420, 0xb416: 0x6c1c7c20, 0xb417: 0x6c132420,
+-	0xb418: 0x6c06bc20, 0xb41b: 0x6c0e5420,
+-	0xb41f: 0x6c0f4e20,
+-	0xb425: 0x6c152e20, 0xb426: 0x6c061220, 0xb427: 0x6c063820,
+-	0xb429: 0x6c1c7e20,
+-	0xb42d: 0x6c1c8020, 0xb42f: 0x6c1c8c20,
+-	0xb431: 0x6c095a20,
+-	0xb435: 0x6c0eba20, 0xb437: 0x6c048620,
+-	0xb438: 0x6c1c8220,
+-	0xb43c: 0x6c127220, 0xb43e: 0x6c0e4020,
+-	// Block 0x2d1, offset 0xb440
+-	0xb441: 0x6c1c8420,
+-	0xb448: 0x6c1c8620, 0xb44a: 0x6c048820,
+-	0xb44c: 0x6c1c8820, 0xb44e: 0x6c1c8a20,
+-	0xb451: 0x6c1c8e20, 0xb453: 0x6c101820,
+-	0xb456: 0x6c1c9020, 0xb457: 0x6c1c9220,
+-	0xb459: 0x6c1c9420,
+-	0xb45c: 0x6c1c7620, 0xb45d: 0x6c1c7420,
+-	0xb461: 0x6c1c9620, 0xb462: 0x6c056620,
+-	0xb466: 0x6c126a20,
+-	0xb469: 0x6c07b020, 0xb46a: 0x6c128a20, 0xb46b: 0x6c0ebc20,
+-	0xb46c: 0x6c12b220, 0xb46d: 0x6c1c9820,
+-	0xb470: 0x6c0a7020, 0xb471: 0x6c010820, 0xb473: 0x6c1c9a20,
+-	0xb477: 0x6c1c9c20,
+-	0xb479: 0x6c153420,
+-	0xb47c: 0x6c122020, 0xb47f: 0x6c1ca220,
+-	// Block 0x2d2, offset 0xb480
+-	0xb480: 0x6c017620, 0xb481: 0x6c0bd820, 0xb482: 0x6c1ca020, 0xb483: 0x6c1c9e20,
+-	0xb484: 0x6c056820, 0xb485: 0x6c0da020, 0xb487: 0x6c1caa20,
+-	0xb488: 0x6c1ca620, 0xb48a: 0x6c1ca420, 0xb48b: 0x6c161620,
+-	0xb48c: 0x6c066a20,
+-	0xb490: 0x6c0a3e20, 0xb491: 0x6c1ca820, 0xb492: 0x6c0fc420, 0xb493: 0x6c09c820,
+-	0xb497: 0x6c106820,
+-	0xb498: 0x6c1cb020, 0xb499: 0x6c1cae20,
+-	0xb49e: 0x6c1cac20,
+-	0xb4a0: 0x6c1cb220, 0xb4a1: 0x6c066c20,
+-	0xb4a8: 0x6c1cb420, 0xb4a9: 0x6c131420, 0xb4aa: 0x6c0a0220,
+-	0xb4ad: 0x6c1cb620, 0xb4ae: 0x6c125220,
+-	0xb4b3: 0x6c106a20,
+-	0xb4b4: 0x6c0ebe20,
+-	0xb4b9: 0x6c0f8c20,
+-	0xb4bc: 0x6c1cb820, 0xb4bd: 0x6c03c220,
+-	// Block 0x2d3, offset 0xb4c0
+-	0xb4c3: 0x6c0b2c20,
+-	0xb4c5: 0x6c127420,
+-	0xb4cc: 0x6c039e20, 0xb4cd: 0x6c10f020,
+-	0xb4d6: 0x6c1cba20, 0xb4d7: 0x6c088020,
+-	0xb4d8: 0x6c140820, 0xb4d9: 0x6c140a20,
+-	0xb4dc: 0x6c017820, 0xb4dd: 0x6c1cc420,
+-	0xb4e0: 0x6c0e8620,
+-	0xb4e4: 0x6c1cbe20,
+-	0xb4eb: 0x6c022620,
+-	0xb4f0: 0x6c1d2420, 0xb4f1: 0x6c1cc220,
+-	0xb4f5: 0x6c110420,
+-	0xb4f8: 0x6c1cc020, 0xb4fb: 0x6c1cbc20,
+-	0xb4fd: 0x6c075020, 0xb4ff: 0x6c1cc820,
+-	// Block 0x2d4, offset 0xb500
+-	0xb50e: 0x6c1cd420, 0xb50f: 0x6c1ce020,
+-	0xb510: 0x6c1cd020, 0xb512: 0x6c0fe420,
+-	0xb515: 0x6c1cda20, 0xb516: 0x6c12d620,
+-	0xb519: 0x6c1cce20, 0xb51b: 0x6c1cd820,
+-	0xb51c: 0x6c169620, 0xb51d: 0x6c088220,
+-	0xb520: 0x6c0da220, 0xb521: 0x6c1cca20,
+-	0xb525: 0x6c042820, 0xb526: 0x6c1cde20, 0xb527: 0x6c0bda20,
+-	0xb528: 0x6c014620, 0xb529: 0x6c1cd220, 0xb52a: 0x6c022820, 0xb52b: 0x6c1cdc20,
+-	0xb52f: 0x6c048a20,
+-	0xb531: 0x6c1cd620,
+-	0xb53a: 0x6c1ce220,
+-	// Block 0x2d5, offset 0xb540
+-	0xb541: 0x6c1ce620, 0xb542: 0x6c1cfa20, 0xb543: 0x6c1cf620,
+-	0xb546: 0x6c1cf020,
+-	0xb54a: 0x6c1cee20, 0xb54b: 0x6c16b820,
+-	0xb54d: 0x6c1cf220,
+-	0xb550: 0x6c048c20, 0xb552: 0x6c06be20,
+-	0xb555: 0x6c0a4020,
+-	0xb559: 0x6c1d0020, 0xb55a: 0x6c1ce420,
+-	0xb55f: 0x6c1cec20,
+-	0xb560: 0x6c1ccc20, 0xb562: 0x6c022c20, 0xb563: 0x6c1cf420,
+-	0xb564: 0x6c1cf820, 0xb565: 0x6c0e5620,
+-	0xb568: 0x6c076820, 0xb569: 0x6c01a820, 0xb56a: 0x6c1ce820, 0xb56b: 0x6c1cfe20,
+-	0xb56c: 0x6c1cfc20, 0xb56d: 0x6c048e20, 0xb56f: 0x6c0d4a20,
+-	0xb570: 0x6c02c020,
+-	0xb575: 0x6c056a20, 0xb577: 0x6c1cea20,
+-	// Block 0x2d6, offset 0xb580
+-	0xb581: 0x6c1d0220, 0xb583: 0x6c1d0820,
+-	0xb584: 0x6c1d0c20,
+-	0xb589: 0x6c090a20, 0xb58b: 0x6c1d1820,
+-	0xb58c: 0x6c0f5020, 0xb58d: 0x6c1d0420,
+-	0xb592: 0x6c1d1420,
+-	0xb594: 0x6c022a20, 0xb596: 0x6c1d1020, 0xb597: 0x6c1d1220,
+-	0xb59a: 0x6c1d0a20, 0xb59b: 0x6c1d0e20,
+-	0xb59f: 0x6c066e20,
+-	0xb5a0: 0x6c156020, 0xb5a3: 0x6c031a20,
+-	0xb5a6: 0x6c012e20, 0xb5a7: 0x6c1d1620,
+-	0xb5a9: 0x6c111820, 0xb5aa: 0x6c001a20,
+-	0xb5b2: 0x6c122220, 0xb5b3: 0x6c1cc620,
+-	0xb5b4: 0x6c1d2220, 0xb5b5: 0x6c1d2a20, 0xb5b6: 0x6c151a20,
+-	0xb5b8: 0x6c1d1c20,
+-	0xb5bc: 0x6c0ffe20, 0xb5bd: 0x6c1d2620,
+-	// Block 0x2d7, offset 0xb5c0
+-	0xb5c5: 0x6c0ae820, 0xb5c6: 0x6c1d2820, 0xb5c7: 0x6c109620,
+-	0xb5d1: 0x6c171220, 0xb5d3: 0x6c1d2020,
+-	0xb5d8: 0x6c1d2c20, 0xb5da: 0x6c075220,
+-	0xb5dc: 0x6c0c1620, 0xb5df: 0x6c006820,
+-	0xb5e0: 0x6c1d1e20, 0xb5e1: 0x6c1d1a20, 0xb5e3: 0x6c0cf020,
+-	0xb5e7: 0x6c1d0620,
+-	0xb5e8: 0x6c083c20,
+-	0xb5f0: 0x6c0d8420, 0xb5f1: 0x6c1d4420, 0xb5f3: 0x6c0cf220,
+-	0xb5f4: 0x6c1d3a20, 0xb5f6: 0x6c1d3420, 0xb5f7: 0x6c1d3620,
+-	0xb5f9: 0x6c095c20, 0xb5fa: 0x6c1d3c20, 0xb5fb: 0x6c1d4220,
+-	// Block 0x2d8, offset 0xb600
+-	0xb600: 0x6c1d3820, 0xb601: 0x6c099620, 0xb603: 0x6c1d3e20,
+-	0xb606: 0x6c1d3220,
+-	0xb608: 0x6c154820, 0xb609: 0x6c154620,
+-	0xb60d: 0x6c1d4620, 0xb60e: 0x6c1d4820, 0xb60f: 0x6c006a20,
+-	0xb615: 0x6c1d3020,
+-	0xb61a: 0x6c050c20, 0xb61b: 0x6c000c20,
+-	0xb61f: 0x6c031c20,
+-	0xb621: 0x6c1d4020,
+-	0xb627: 0x6c1d5020,
+-	0xb628: 0x6c1d4e20,
+-	0xb62c: 0x6c1d5820,
+-	0xb634: 0x6c1d5a20,
+-	0xb63c: 0x6c1d5620, 0xb63d: 0x6c1d5c20, 0xb63e: 0x6c1d4c20, 0xb63f: 0x6c1d5420,
+-	// Block 0x2d9, offset 0xb640
+-	0xb642: 0x6c1d5e20,
+-	0xb644: 0x6c1d6020, 0xb647: 0x6c1d4a20,
+-	0xb648: 0x6c08cc20, 0xb64a: 0x6c1d5220, 0xb64b: 0x6c0da420,
+-	0xb64c: 0x6c06c020, 0xb64d: 0x6c1d2e20, 0xb64e: 0x6c0b2e20,
+-	0xb653: 0x6c1d7a20,
+-	0xb655: 0x6c13aa20,
+-	0xb658: 0x6c1d6620, 0xb659: 0x6c1d6820, 0xb65a: 0x6c1d6a20,
+-	0xb65d: 0x6c1d7820, 0xb65f: 0x6c1d7620,
+-	0xb662: 0x6c148e20, 0xb663: 0x6c031e20,
+-	0xb665: 0x6c1d7220, 0xb667: 0x6c056e20,
+-	0xb668: 0x6c025c20, 0xb66b: 0x6c1d6c20,
+-	0xb66e: 0x6c163820, 0xb66f: 0x6c1d7020,
+-	0xb670: 0x6c006c20, 0xb671: 0x6c1d7420, 0xb673: 0x6c1d6220,
+-	0xb674: 0x6c1d6e20, 0xb675: 0x6c1d7c20, 0xb676: 0x6c056c20, 0xb677: 0x6c1d6420,
+-	0xb67e: 0x6c15c620,
+-	// Block 0x2da, offset 0xb680
+-	0xb682: 0x6c156220,
+-	0xb687: 0x6c1d8220,
+-	0xb68a: 0x6c1d8a20,
+-	0xb68e: 0x6c0d3820,
+-	0xb690: 0x6c16ba20, 0xb691: 0x6c1d8c20,
+-	0xb694: 0x6c1d8620, 0xb696: 0x6c1d8020,
+-	0xb699: 0x6c1d7e20, 0xb69a: 0x6c1d8820,
+-	0xb6a4: 0x6c133820, 0xb6a7: 0x6c105020,
+-	0xb6a9: 0x6c057020, 0xb6ab: 0x6c1d8e20,
+-	0xb6ac: 0x6c1d8420, 0xb6ae: 0x6c1d9020,
+-	0xb6b2: 0x6c05da20,
+-	0xb6b6: 0x6c019a20,
+-	0xb6ba: 0x6c1da020,
+-	0xb6be: 0x6c032020,
+-	// Block 0x2db, offset 0xb6c0
+-	0xb6c3: 0x6c1d9c20,
+-	0xb6c6: 0x6c1d9e20, 0xb6c7: 0x6c076a20,
+-	0xb6c8: 0x6c1d9a20, 0xb6c9: 0x6c1d9620, 0xb6ca: 0x6c1d9420, 0xb6cb: 0x6c1da220,
+-	0xb6cc: 0x6c1d9220, 0xb6cd: 0x6c1da620,
+-	0xb6d0: 0x6c022e20,
+-	0xb6e3: 0x6c1daa20,
+-	0xb6e6: 0x6c1da820,
+-	0xb6f2: 0x6c0ec020,
+-	0xb6f4: 0x6c1db020, 0xb6f6: 0x6c1dac20, 0xb6f7: 0x6c1d9820,
+-	0xb6f8: 0x6c05dc20, 0xb6fa: 0x6c1dae20,
+-	0xb6fc: 0x6c1db620, 0xb6fd: 0x6c1db420, 0xb6fe: 0x6c1db820, 0xb6ff: 0x6c1db220,
+-	// Block 0x2dc, offset 0xb700
+-	0xb700: 0x6c1dba20,
+-	0xb708: 0x6c1dbc20, 0xb709: 0x6c1dbe20, 0xb70a: 0x6c13ac20,
+-	0xb70c: 0x6c1dc220, 0xb70d: 0x6c1dc020, 0xb70e: 0x6c09ca20,
+-	0xb710: 0x6c0bdc20, 0xb711: 0x6c020420, 0xb712: 0x6c023020,
+-	0xb714: 0x6c1dc420, 0xb716: 0x6c003e20,
+-	0xb71a: 0x6c0c1820, 0xb71b: 0x6c1dc620,
+-	0xb71d: 0x6c2c0020, 0xb71e: 0x6c1dc820, 0xb71f: 0x6c05a620,
+-	0xb721: 0x6c1dca20,
+-	0xb726: 0x6c0c5e20,
+-	0xb72a: 0x6c1dcc20,
+-	0xb72e: 0x6c1dce20, 0xb72f: 0x6c03e020,
+-	0xb730: 0x6c1dd020, 0xb732: 0x6c1dd220, 0xb733: 0x6c1dd420,
+-	0xb734: 0x6c0da620,
+-	0xb738: 0x6c063a20, 0xb73b: 0x6c151220,
+-	0xb73f: 0x6c140c20,
+-	// Block 0x2dd, offset 0xb740
+-	0xb740: 0x6c0a2020, 0xb741: 0x6c1dd620,
+-	0xb747: 0x6c0c6020,
+-	0xb748: 0x6c2d6c20, 0xb749: 0x6c122420, 0xb74b: 0x6c096420,
+-	0xb74d: 0x6c07b220, 0xb74e: 0x6c1dd820,
+-	0xb753: 0x6c0d8620,
+-	0xb755: 0x6c132620,
+-	0xb758: 0x6c0dda20, 0xb75b: 0x6c1dde20,
+-	0xb75e: 0x6c1dda20,
+-	0xb760: 0x6c1de020, 0xb763: 0x6c1ddc20,
+-	0xb768: 0x6c1de220,
+-	0xb76e: 0x6c133a20,
+-	0xb771: 0x6c002e20,
+-	0xb776: 0x6c12d820,
+-	0xb779: 0x6c122620,
+-	0xb77c: 0x6c1de420, 0xb77e: 0x6c1dea20, 0xb77f: 0x6c0a7220,
+-	// Block 0x2de, offset 0xb780
+-	0xb780: 0x6c03e220, 0xb782: 0x6c1de620, 0xb783: 0x6c1df420,
+-	0xb784: 0x6c0a7420,
+-	0xb789: 0x6c1de820, 0xb78a: 0x6c112c20,
+-	0xb791: 0x6c15c820, 0xb792: 0x6c1dec20, 0xb793: 0x6c1dee20,
+-	0xb794: 0x6c1df620, 0xb795: 0x6c100020, 0xb796: 0x6c1df020, 0xb797: 0x6c06c220,
+-	0xb798: 0x6c0c3c20, 0xb79b: 0x6c1e1220,
+-	0xb79c: 0x6c11c820, 0xb79e: 0x6c0ddc20,
+-	0xb7ab: 0x6c122820,
+-	0xb7ac: 0x6c1e9c20,
+-	0xb7b1: 0x6c13cc20,
+-	0xb7b5: 0x6c0f5220,
+-	0xb7b9: 0x6c147e20, 0xb7bb: 0x6c1dfc20,
+-	0xb7bc: 0x6c017a20, 0xb7bd: 0x6c0e8820,
+-	// Block 0x2df, offset 0xb7c0
+-	0xb7c2: 0x6c1e0e20,
+-	0xb7c5: 0x6c0e1c20, 0xb7c6: 0x6c1e0220, 0xb7c7: 0x6c1e1020,
+-	0xb7c8: 0x6c1e0620, 0xb7c9: 0x6c1e1420, 0xb7ca: 0x6c1e0c20,
+-	0xb7cc: 0x6c1e0a20, 0xb7cd: 0x6c118220, 0xb7cf: 0x6c1dfe20,
+-	0xb7d0: 0x6c023220, 0xb7d1: 0x6c1dfa20, 0xb7d2: 0x6c044e20, 0xb7d3: 0x6c0dde20,
+-	0xb7d4: 0x6c1df220, 0xb7d7: 0x6c1df820,
+-	0xb7d8: 0x6c06c420, 0xb7d9: 0x6c0c3620, 0xb7db: 0x6c0a7620,
+-	0xb7dc: 0x6c1e0820, 0xb7dd: 0x6c114820,
+-	0xb7e0: 0x6c045020, 0xb7e1: 0x6c028420,
+-	0xb7ec: 0x6c02c220, 0xb7ed: 0x6c0b0620, 0xb7ee: 0x6c1e1820, 0xb7ef: 0x6c1e2220,
+-	0xb7f1: 0x6c1e1a20, 0xb7f3: 0x6c05de20,
+-	0xb7f5: 0x6c1e2420, 0xb7f6: 0x6c081820, 0xb7f7: 0x6c072e20,
+-	0xb7fe: 0x6c099820, 0xb7ff: 0x6c1e0020,
+-	// Block 0x2e0, offset 0xb800
+-	0xb801: 0x6c08ce20, 0xb802: 0x6c1e1e20,
+-	0xb807: 0x6c088420,
+-	0xb808: 0x6c1e2020, 0xb809: 0x6c004820,
+-	0xb80c: 0x6c1e1620,
+-	0xb811: 0x6c0ec220,
+-	0xb819: 0x6c045220,
+-	0xb81f: 0x6c049020,
+-	0xb827: 0x6c1e1c20,
+-	0xb828: 0x6c000e20, 0xb82b: 0x6c079e20,
+-	0xb82f: 0x6c0b3020,
+-	0xb83a: 0x6c0f5420,
+-	0xb83d: 0x6c120820, 0xb83e: 0x6c1e2820, 0xb83f: 0x6c0cf820,
+-	// Block 0x2e1, offset 0xb840
+-	0xb849: 0x6c0d4c20,
+-	0xb84c: 0x6c082a20, 0xb84d: 0x6c1e2a20, 0xb84f: 0x6c1e2e20,
+-	0xb850: 0x6c1e2620,
+-	0xb855: 0x6c139a20, 0xb857: 0x6c0eea20,
+-	0xb85c: 0x6c0cf420,
+-	0xb867: 0x6c13ce20,
+-	0xb868: 0x6c092c20, 0xb869: 0x6c1e4620, 0xb86b: 0x6c1e4420,
+-	0xb86e: 0x6c0bb420,
+-	0xb872: 0x6c05e020,
+-	0xb876: 0x6c1e3820, 0xb877: 0x6c0a7a20,
+-	0xb87a: 0x6c10b820, 0xb87b: 0x6c110620,
+-	// Block 0x2e2, offset 0xb880
+-	0xb880: 0x6c1e3420, 0xb883: 0x6c0cf620,
+-	0xb888: 0x6c098020, 0xb889: 0x6c1e3e20,
+-	0xb88c: 0x6c0a7820, 0xb88e: 0x6c1e3220, 0xb88f: 0x6c1e3c20,
+-	0xb892: 0x6c114a20,
+-	0xb896: 0x6c1e3020,
+-	0xb898: 0x6c052620, 0xb89b: 0x6c02ae20,
+-	0xb89f: 0x6c1e4020,
+-	0xb8a0: 0x6c161e20, 0xb8a1: 0x6c07b420, 0xb8a2: 0x6c0e1e20, 0xb8a3: 0x6c1e3a20,
+-	0xb8a5: 0x6c0c3820, 0xb8a7: 0x6c06c620,
+-	0xb8a8: 0x6c0b8c20, 0xb8a9: 0x6c014820, 0xb8aa: 0x6c0cb420, 0xb8ab: 0x6c1e3620,
+-	0xb8ac: 0x6c03f620,
+-	0xb8b2: 0x6c057220,
+-	0xb8b4: 0x6c0f0e20, 0xb8b5: 0x6c1e4220,
+-	0xb8bb: 0x6c0cfa20,
+-	0xb8be: 0x6c1e4820,
+-	// Block 0x2e3, offset 0xb8c0
+-	0xb8c0: 0x6c1e4c20, 0xb8c3: 0x6c0d6620,
+-	0xb8c4: 0x6c1e5820, 0xb8c6: 0x6c1e4e20,
+-	0xb8c9: 0x6c1e5220,
+-	0xb8cf: 0x6c129e20,
+-	0xb8d0: 0x6c0f5620, 0xb8d2: 0x6c1e5420,
+-	0xb8d6: 0x6c156420,
+-	0xb8da: 0x6c159c20, 0xb8db: 0x6c032220,
+-	0xb8e1: 0x6c001c20, 0xb8e3: 0x6c1e5020,
+-	0xb8e9: 0x6c1e4a20,
+-	0xb8ee: 0x6c03a020,
+-	0xb8f4: 0x6c014a20, 0xb8f6: 0x6c1e5620,
+-	0xb8fa: 0x6c159e20,
+-	// Block 0x2e4, offset 0xb900
+-	0xb906: 0x6c1e5e20,
+-	0xb90d: 0x6c0d6e20, 0xb90f: 0x6c1e6c20,
+-	0xb913: 0x6c1e6020,
+-	0xb916: 0x6c1e5a20, 0xb917: 0x6c1e6820,
+-	0xb91c: 0x6c1e2c20,
+-	0xb926: 0x6c1e6220,
+-	0xb928: 0x6c1e6a20,
+-	0xb92c: 0x6c11e420, 0xb92d: 0x6c100220,
+-	0xb934: 0x6c1e5c20, 0xb936: 0x6c1e6420,
+-	0xb93a: 0x6c057420,
+-	0xb93e: 0x6c07fa20,
+-	// Block 0x2e5, offset 0xb940
+-	0xb942: 0x6c0c3a20,
+-	0xb94e: 0x6c1e7420,
+-	0xb958: 0x6c0f7820,
+-	0xb967: 0x6c1e6e20,
+-	0xb969: 0x6c145420,
+-	0xb96f: 0x6c1e7020,
+-	0xb976: 0x6c1e7220,
+-	0xb978: 0x6c14ec20, 0xb97a: 0x6c0bc420,
+-	// Block 0x2e6, offset 0xb980
+-	0xb983: 0x6c05a820,
+-	0xb988: 0x6c1e8020,
+-	0xb992: 0x6c083e20, 0xb993: 0x6c1e7a20,
+-	0xb995: 0x6c1e7820,
+-	0xb99a: 0x6c110820,
+-	0xb99e: 0x6c105220,
+-	0xb9a4: 0x6c0f8e20, 0xb9a5: 0x6c1e7c20,
+-	0xb9a9: 0x6c1e7e20, 0xb9ab: 0x6c12fa20,
+-	0xb9ad: 0x6c112e20, 0xb9ae: 0x6c081a20,
+-	0xb9b0: 0x6c0c6220, 0xb9b2: 0x6c143420,
+-	0xb9b9: 0x6c028620, 0xb9bb: 0x6c1e8c20,
+-	0xb9bc: 0x6c1e8220,
+-	// Block 0x2e7, offset 0xb9c0
+-	0xb9c1: 0x6c15a020, 0xb9c2: 0x6c1e9020,
+-	0xb9c5: 0x6c1e8820, 0xb9c7: 0x6c1e8a20,
+-	0xb9cd: 0x6c0cfc20,
+-	0xb9d2: 0x6c1e8620,
+-	0xb9d4: 0x6c1e0420,
+-	0xb9d8: 0x6c1e8e20, 0xb9da: 0x6c1e8420,
+-	0xb9e0: 0x6c1e9820, 0xb9e1: 0x6c1e9a20, 0xb9e2: 0x6c0f7a20, 0xb9e3: 0x6c1e9e20,
+-	0xb9e6: 0x6c081c20, 0xb9e7: 0x6c1e9420,
+-	0xb9ec: 0x6c03e420, 0xb9ef: 0x6c1ea020,
+-	0xb9f1: 0x6c1e9220, 0xb9f2: 0x6c1ea820,
+-	0xb9f4: 0x6c1ea620, 0xb9f6: 0x6c1ea420,
+-	0xb9fa: 0x6c1eaa20,
+-	0xb9fd: 0x6c1eae20, 0xb9fe: 0x6c0aea20,
+-	// Block 0x2e8, offset 0xba00
+-	0xba00: 0x6c1eac20,
+-	0xba05: 0x6c1eb420,
+-	0xba18: 0x6c1eb020,
+-	0xba1c: 0x6c1eb220, 0xba1d: 0x6c1e6620,
+-	0xba23: 0x6c1eb820,
+-	0xba24: 0x6c1eb620,
+-	0xba2a: 0x6c1e7620, 0xba2b: 0x6c1eba20,
+-	0xba2c: 0x6c1ea220, 0xba2f: 0x6c088620,
+-	0xba34: 0x6c1ebc20, 0xba35: 0x6c1ebe20, 0xba36: 0x6c1ec220, 0xba37: 0x6c1ec020,
+-	0xba38: 0x6c1ec420, 0xba39: 0x6c023420, 0xba3b: 0x6c06c820,
+-	0xba3e: 0x6c13d020, 0xba3f: 0x6c0bde20,
+-	// Block 0x2e9, offset 0xba40
+-	0xba45: 0x6c063c20,
+-	0xba48: 0x6c1ec820,
+-	0xba4d: 0x6c1ece20, 0xba4f: 0x6c12c020,
+-	0xba51: 0x6c042a20,
+-	0xba55: 0x6c1ecc20, 0xba56: 0x6c1eca20, 0xba57: 0x6c114c20,
+-	0xba58: 0x6c1ed020, 0xba59: 0x6c049220,
+-	0xba5d: 0x6c1ed420, 0xba5e: 0x6c1ed220,
+-	0xba62: 0x6c032420, 0xba63: 0x6c084020,
+-	0xba66: 0x6c109820,
+-	0xba6c: 0x6c057620,
+-	0xba70: 0x6c0bac20, 0xba72: 0x6c1ed620,
+-	0xba74: 0x6c0be020, 0xba75: 0x6c0f7c20, 0xba77: 0x6c12da20,
+-	0xba78: 0x6c1ed820,
+-	// Block 0x2ea, offset 0xba80
+-	0xba82: 0x6c1eda20, 0xba83: 0x6c1edc20,
+-	0xba87: 0x6c134820,
+-	0xba88: 0x6c1b5020, 0xba89: 0x6c0c0c20,
+-	0xba8c: 0x6c12b420, 0xba8e: 0x6c07c820,
+-	0xba90: 0x6c122a20, 0xba91: 0x6c11e620,
+-	0xba97: 0x6c0fc620,
+-	0xba99: 0x6c164a20, 0xba9b: 0x6c1ee020,
+-	0xba9c: 0x6c093020, 0xba9f: 0x6c1ee220,
+-	0xbaa1: 0x6c002c20,
+-	0xbaa4: 0x6c04d020, 0xbaa5: 0x6c0c1a20, 0xbaa7: 0x6c12dc20,
+-	0xbaab: 0x6c1ee420,
+-	0xbaac: 0x6c085820, 0xbaad: 0x6c0e4220, 0xbaaf: 0x6c088a20,
+-	0xbab0: 0x6c0b3220,
+-	0xbab7: 0x6c1ee620,
+-	0xbab9: 0x6c13d220,
+-	0xbabc: 0x6c016a20, 0xbabd: 0x6c088c20,
+-	// Block 0x2eb, offset 0xbac0
+-	0xbac1: 0x6c1eec20, 0xbac3: 0x6c1ee820,
+-	0xbac4: 0x6c1eee20, 0xbac5: 0x6c163a20, 0xbac6: 0x6c1eea20,
+-	0xbacb: 0x6c0c7620,
+-	0xbacc: 0x6c1ef020, 0xbacf: 0x6c0d5c20,
+-	0xbad2: 0x6c1ef220,
+-	0xbad7: 0x6c03a420,
+-	0xbad9: 0x6c1ef620, 0xbadb: 0x6c1ef420,
+-	0xbae0: 0x6c1ef820, 0xbae1: 0x6c1efa20, 0xbae2: 0x6c03a620,
+-	0xbae5: 0x6c10e020, 0xbae6: 0x6c0e2020, 0xbae7: 0x6c044420,
+-	0xbae8: 0x6c088e20, 0xbae9: 0x6c0cfe20,
+-	0xbaec: 0x6c0a0420, 0xbaed: 0x6c002020,
+-	0xbaf1: 0x6c1efc20,
+-	0xbafa: 0x6c017c20, 0xbafb: 0x6c1f0420,
+-	// Block 0x2ec, offset 0xbb00
+-	0xbb02: 0x6c06ca20, 0xbb03: 0x6c1f0220,
+-	0xbb06: 0x6c076e20, 0xbb07: 0x6c0a7c20,
+-	0xbb0a: 0x6c1f0020,
+-	0xbb0c: 0x6c0a7e20, 0xbb0e: 0x6c14d020, 0xbb0f: 0x6c076c20,
+-	0xbb13: 0x6c006e20,
+-	0xbb14: 0x6c0c1c20,
+-	0xbb1c: 0x6c1f0e20, 0xbb1f: 0x6c0be220,
+-	0xbb20: 0x6c010a20,
+-	0xbb25: 0x6c09f620, 0xbb27: 0x6c146020,
+-	0xbb28: 0x6c07fc20,
+-	0xbb2d: 0x6c0a8020, 0xbb2f: 0x6c0bce20,
+-	0xbb34: 0x6c1f0c20, 0xbb35: 0x6c1f0820, 0xbb36: 0x6c1f0a20,
+-	0xbb3c: 0x6c0e8a20, 0xbb3f: 0x6c1f4a20,
+-	// Block 0x2ed, offset 0xbb40
+-	0xbb41: 0x6c1f1620, 0xbb42: 0x6c08d020, 0xbb43: 0x6c06cc20,
+-	0xbb44: 0x6c1f1220,
+-	0xbb49: 0x6c1f1420, 0xbb4b: 0x6c0b3420,
+-	0xbb4f: 0x6c1f1020,
+-	0xbb52: 0x6c083220,
+-	0xbb5d: 0x6c1f1a20, 0xbb5e: 0x6c1f1820, 0xbb5f: 0x6c1f2220,
+-	0xbb62: 0x6c1f2420,
+-	0xbb64: 0x6c1f1c20, 0xbb66: 0x6c023820, 0xbb67: 0x6c1f1e20,
+-	0xbb68: 0x6c1f2020, 0xbb69: 0x6c120a20,
+-	0xbb6e: 0x6c12de20, 0xbb6f: 0x6c057820,
+-	0xbb70: 0x6c1f2620,
+-	0xbb74: 0x6c0be420, 0xbb76: 0x6c0a8220,
+-	0xbb7a: 0x6c0e5820,
+-	// Block 0x2ee, offset 0xbb80
+-	0xbb81: 0x6c04b620, 0xbb83: 0x6c1f2820,
+-	0xbb84: 0x6c1f3020, 0xbb87: 0x6c01ce20,
+-	0xbb88: 0x6c1f2a20, 0xbb89: 0x6c1f2e20,
+-	0xbb8e: 0x6c1f2c20,
+-	0xbb91: 0x6c0a2220,
+-	0xbb96: 0x6c0e4420, 0xbb97: 0x6c004a20,
+-	0xbb98: 0x6c1f3220,
+-	0xbb9d: 0x6c1f3420,
+-	0xbba2: 0x6c0ec420,
+-	0xbba6: 0x6c16aa20,
+-	0xbbab: 0x6c085a20,
+-	0xbbae: 0x6c13ae20,
+-	0xbbb4: 0x6c140e20,
+-	0xbbb8: 0x6c1f4220, 0xbbb9: 0x6c1f3820,
+-	0xbbbc: 0x6c1f3e20, 0xbbbe: 0x6c1f3c20,
+-	// Block 0x2ef, offset 0xbbc0
+-	0xbbc1: 0x6c1f3620,
+-	0xbbc4: 0x6c1f4020, 0xbbc7: 0x6c10a420,
+-	0xbbc9: 0x6c1f3a20,
+-	0xbbd6: 0x6c1f4420,
+-	0xbbd9: 0x6c0a2420, 0xbbda: 0x6c1f4620,
+-	0xbbdc: 0x6c15a220, 0xbbdd: 0x6c119420,
+-	0xbbe0: 0x6c1f4820,
+-	0xbbe6: 0x6c1f4c20,
+-	0xbbe9: 0x6c1f4e20,
+-	0xbbf0: 0x6c1f5020, 0xbbf2: 0x6c04bc20, 0xbbf3: 0x6c010c20,
+-	0xbbf4: 0x6c06ce20, 0xbbf5: 0x6c1f5220, 0xbbf7: 0x6c1f5420,
+-	0xbbf8: 0x6c0a2e20, 0xbbf9: 0x6c0d0020,
+-	0xbbfc: 0x6c191220, 0xbbfd: 0x6c0cb820, 0xbbfe: 0x6c0cb620, 0xbbff: 0x6c0da820,
+-	// Block 0x2f0, offset 0xbc00
+-	0xbc00: 0x6c07a620, 0xbc03: 0x6c17ce20,
+-	0xbc08: 0x6c05c020, 0xbc09: 0x6c156620, 0xbc0b: 0x6c13d420,
+-	0xbc0d: 0x6c131820, 0xbc0f: 0x6c1f5620,
+-	0xbc14: 0x6c07fe20, 0xbc15: 0x6c0eee20, 0xbc16: 0x6c1f5820, 0xbc17: 0x6c16e220,
+-	0xbc1b: 0x6c141020,
+-	0xbc1d: 0x6c0ec620, 0xbc1e: 0x6c1f5a20, 0xbc1f: 0x6c03a820,
+-	0xbc26: 0x6c1f5c20, 0xbc27: 0x6c1f5e20,
+-	0xbc28: 0x6c150420, 0xbc2a: 0x6c149820, 0xbc2b: 0x6c148020,
+-	0xbc2c: 0x6c144c20, 0xbc2d: 0x6c081e20, 0xbc2e: 0x6c1f6220,
+-	0xbc31: 0x6c096620,
+-	0xbc34: 0x6c143620, 0xbc36: 0x6c1f6620, 0xbc37: 0x6c1f6c20,
+-	0xbc38: 0x6c1f6a20, 0xbc3a: 0x6c03a220,
+-	0xbc3d: 0x6c042c20, 0xbc3f: 0x6c1f6420,
+-	// Block 0x2f1, offset 0xbc40
+-	0xbc41: 0x6c1f6820,
+-	0xbc46: 0x6c1f6e20,
+-	0xbc49: 0x6c0bb620,
+-	0xbc4e: 0x6c160220, 0xbc4f: 0x6c005220,
+-	0xbc50: 0x6c07d820, 0xbc51: 0x6c0d7020, 0xbc53: 0x6c094a20,
+-	0xbc56: 0x6c0aee20,
+-	0xbc59: 0x6c1f7420,
+-	0xbc5c: 0x6c0fc820, 0xbc5e: 0x6c1f7020, 0xbc5f: 0x6c0d4e20,
+-	0xbc60: 0x6c1f7220, 0xbc61: 0x6c0aec20, 0xbc62: 0x6c150a20, 0xbc63: 0x6c1f7620,
+-	0xbc64: 0x6c1f7820, 0xbc65: 0x6c15dc20,
+-	0xbc6a: 0x6c1f8220,
+-	0xbc6d: 0x6c06d020, 0xbc6f: 0x6c114e20,
+-	0xbc70: 0x6c1f7c20, 0xbc71: 0x6c100420, 0xbc72: 0x6c1efe20, 0xbc73: 0x6c1f0620,
+-	0xbc75: 0x6c040a20, 0xbc77: 0x6c113220,
+-	0xbc7c: 0x6c1f8020, 0xbc7e: 0x6c0a8420, 0xbc7f: 0x6c11e820,
+-	// Block 0x2f2, offset 0xbc80
+-	0xbc85: 0x6c1f8c20, 0xbc87: 0x6c125420,
+-	0xbc89: 0x6c1f7a20, 0xbc8b: 0x6c1f8620,
+-	0xbc8c: 0x6c1f8420,
+-	0xbc90: 0x6c0c1e20,
+-	0xbc95: 0x6c146e20, 0xbc97: 0x6c166e20,
+-	0xbc9a: 0x6c146220,
+-	0xbc9c: 0x6c01d020, 0xbc9d: 0x6c089020,
+-	0xbca0: 0x6c171420, 0xbca1: 0x6c1f8a20, 0xbca2: 0x6c0bae20,
+-	0xbca6: 0x6c1f8820,
+-	0xbca9: 0x6c1f7e20,
+-	0xbcaf: 0x6c063e20,
+-	0xbcb3: 0x6c1f9620,
+-	0xbcb4: 0x6c1f9220, 0xbcb6: 0x6c01d220, 0xbcb7: 0x6c1f8e20,
+-	0xbcb8: 0x6c1f9a20, 0xbcb9: 0x6c1fa620,
+-	// Block 0x2f3, offset 0xbcc0
+-	0xbcc1: 0x6c0d8820,
+-	0xbcc4: 0x6c135a20, 0xbcc6: 0x6c1faa20,
+-	0xbcca: 0x6c126020,
+-	0xbcce: 0x6c1fa820, 0xbccf: 0x6c118420,
+-	0xbcd0: 0x6c141220, 0xbcd1: 0x6c032620, 0xbcd3: 0x6c0c6e20,
+-	0xbcd4: 0x6c09cc20,
+-	0xbcd8: 0x6c0f1620, 0xbcda: 0x6c156820,
+-	0xbcdd: 0x6c1fa020, 0xbcde: 0x6c1f9e20,
+-	0xbce2: 0x6c1fa220,
+-	0xbce4: 0x6c1f9c20, 0xbce7: 0x6c1fac20,
+-	0xbce9: 0x6c1f9820,
+-	0xbcec: 0x6c1f9420, 0xbcee: 0x6c1fa420, 0xbcef: 0x6c1f9020,
+-	0xbcf1: 0x6c0e8c20, 0xbcf3: 0x6c154020,
+-	0xbcf4: 0x6c091c20, 0xbcf5: 0x6c080020,
+-	0xbcfb: 0x6c078c20,
+-	0xbcfe: 0x6c147220, 0xbcff: 0x6c027620,
+-	// Block 0x2f4, offset 0xbd00
+-	0xbd02: 0x6c0f0c20, 0xbd03: 0x6c107c20,
+-	0xbd04: 0x6c010e20,
+-	0xbd13: 0x6c0c6420,
+-	0xbd16: 0x6c0be820, 0xbd17: 0x6c053820,
+-	0xbd1e: 0x6c1fb020,
+-	0xbd21: 0x6c06d220, 0xbd22: 0x6c02ec20,
+-	0xbd29: 0x6c1fb420, 0xbd2a: 0x6c02dc20, 0xbd2b: 0x6c1fc020,
+-	0xbd32: 0x6c1fba20,
+-	0xbd34: 0x6c0c6620,
+-	0xbd38: 0x6c028a20, 0xbd39: 0x6c077020,
+-	0xbd3c: 0x6c028820, 0xbd3d: 0x6c07b620,
+-	// Block 0x2f5, offset 0xbd40
+-	0xbd40: 0x6c1fb620, 0xbd41: 0x6c05ae20, 0xbd42: 0x6c057a20, 0xbd43: 0x6c100620,
+-	0xbd46: 0x6c1fb220,
+-	0xbd48: 0x6c004c20,
+-	0xbd4d: 0x6c1fb820, 0xbd4e: 0x6c1fbc20,
+-	0xbd50: 0x6c04c220, 0xbd51: 0x6c053c20, 0xbd53: 0x6c032820,
+-	0xbd54: 0x6c040220,
+-	0xbd59: 0x6c1fc220,
+-	0xbd5c: 0x6c080a20, 0xbd5d: 0x6c147620, 0xbd5f: 0x6c084220,
+-	0xbd63: 0x6c1fc420,
+-	0xbd67: 0x6c127c20,
+-	0xbd74: 0x6c1fdc20, 0xbd76: 0x6c019e20, 0xbd77: 0x6c1fc620,
+-	0xbd7e: 0x6c1fe820, 0xbd7f: 0x6c1fc820,
+-	// Block 0x2f6, offset 0xbd80
+-	0xbd81: 0x6c164c20, 0xbd83: 0x6c1fd620,
+-	0xbd85: 0x6c116220,
+-	0xbd8d: 0x6c1fe620, 0xbd8f: 0x6c1fcc20,
+-	0xbd93: 0x6c002820,
+-	0xbd94: 0x6c1fd020, 0xbd97: 0x6c06d420,
+-	0xbd9b: 0x6c1fd420,
+-	0xbd9d: 0x6c1fd220, 0xbd9f: 0x6c1fca20,
+-	0xbda0: 0x6c1fe020, 0xbda2: 0x6c0a8620,
+-	0xbda6: 0x6c1ab420, 0xbda7: 0x6c067020,
+-	0xbda8: 0x6c160420,
+-	0xbdad: 0x6c1fce20, 0xbdaf: 0x6c0f5820,
+-	0xbdb0: 0x6c023a20, 0xbdb1: 0x6c077220, 0xbdb3: 0x6c1fbe20,
+-	0xbdb5: 0x6c1fde20, 0xbdb6: 0x6c02b620,
+-	0xbdb9: 0x6c1fda20, 0xbdba: 0x6c1fe220,
+-	0xbdbc: 0x6c100820,
+-	// Block 0x2f7, offset 0xbdc0
+-	0xbdc4: 0x6c03ac20, 0xbdc6: 0x6c201e20,
+-	0xbdc9: 0x6c14e220, 0xbdca: 0x6c1fec20, 0xbdcb: 0x6c03aa20,
+-	0xbdcd: 0x6c1ffa20,
+-	0xbdd2: 0x6c141420,
+-	0xbdd4: 0x6c1ffc20, 0xbdd5: 0x6c200020, 0xbdd7: 0x6c200820,
+-	0xbdd8: 0x6c1ff020, 0xbdda: 0x6c0e0820,
+-	0xbddf: 0x6c100a20,
+-	0xbde0: 0x6c201020, 0xbde1: 0x6c1ff620, 0xbde3: 0x6c200a20,
+-	0xbde7: 0x6c1ffe20,
+-	0xbdee: 0x6c0b3620, 0xbdef: 0x6c201220,
+-	0xbdf2: 0x6c0be620,
+-	0xbdf9: 0x6c200e20, 0xbdfa: 0x6c032a20,
+-	// Block 0x2f8, offset 0xbe00
+-	0xbe00: 0x6c172420, 0xbe01: 0x6c1fea20,
+-	0xbe04: 0x6c200620, 0xbe05: 0x6c007020,
+-	0xbe08: 0x6c1fee20, 0xbe0b: 0x6c14c420,
+-	0xbe0c: 0x6c1ff820, 0xbe0d: 0x6c0b0820, 0xbe0e: 0x6c0efe20, 0xbe0f: 0x6c1fe420,
+-	0xbe12: 0x6c200420,
+-	0xbe19: 0x6c0bb820, 0xbe1a: 0x6c201820, 0xbe1b: 0x6c02d620,
+-	0xbe1c: 0x6c05e220,
+-	0xbe21: 0x6c201c20, 0xbe22: 0x6c1ff220, 0xbe23: 0x6c201a20,
+-	0xbe25: 0x6c200c20, 0xbe26: 0x6c1ff420,
+-	0xbe28: 0x6c201420, 0xbe2a: 0x6c201620,
+-	0xbe30: 0x6c203820,
+-	0xbe34: 0x6c108420, 0xbe36: 0x6c200220,
+-	0xbe39: 0x6c203020,
+-	0xbe3d: 0x6c203420, 0xbe3f: 0x6c0f2020,
+-	// Block 0x2f9, offset 0xbe40
+-	0xbe4a: 0x6c15a420,
+-	0xbe53: 0x6c130820,
+-	0xbe54: 0x6c202a20, 0xbe55: 0x6c0d8c20,
+-	0xbe59: 0x6c203620, 0xbe5a: 0x6c0cba20,
+-	0xbe5c: 0x6c202420, 0xbe5d: 0x6c203e20, 0xbe5e: 0x6c203c20,
+-	0xbe60: 0x6c10c620, 0xbe61: 0x6c203a20, 0xbe62: 0x6c10bc20,
+-	0xbe6a: 0x6c204220, 0xbe6b: 0x6c202820,
+-	0xbe6d: 0x6c04b820, 0xbe6e: 0x6c202e20, 0xbe6f: 0x6c0a0620,
+-	0xbe73: 0x6c116420,
+-	0xbe74: 0x6c203220, 0xbe75: 0x6c04be20, 0xbe77: 0x6c202220,
+-	0xbe78: 0x6c202620, 0xbe79: 0x6c202020,
+-	0xbe7c: 0x6c16e420, 0xbe7d: 0x6c02a820, 0xbe7e: 0x6c202c20,
+-	// Block 0x2fa, offset 0xbe80
+-	0xbe81: 0x6c204020, 0xbe82: 0x6c025e20,
+-	0xbe8a: 0x6c07e620,
+-	0xbe8e: 0x6c013620,
+-	0xbe91: 0x6c206220,
+-	0xbe94: 0x6c16e620, 0xbe95: 0x6c206820,
+-	0xbe9b: 0x6c0b3820,
+-	0xbe9c: 0x6c206620,
+-	0xbea0: 0x6c206420,
+-	0xbea7: 0x6c205e20,
+-	0xbeae: 0x6c204620,
+-	0xbeb1: 0x6c208020, 0xbeb2: 0x6c204420,
+-	0xbeb4: 0x6c206a20,
+-	0xbebb: 0x6c205a20,
+-	0xbebe: 0x6c205020, 0xbebf: 0x6c204a20,
+-	// Block 0x2fb, offset 0xbec0
+-	0xbec1: 0x6c204c20, 0xbec3: 0x6c205c20,
+-	0xbec7: 0x6c319e20,
+-	0xbeca: 0x6c205620, 0xbecb: 0x6c06d620,
+-	0xbecc: 0x6c0f0020, 0xbecd: 0x6c0d0420, 0xbece: 0x6c205220,
+-	0xbed0: 0x6c204820, 0xbed3: 0x6c204e20,
+-	0xbed8: 0x6c15a620, 0xbed9: 0x6c146820,
+-	0xbedd: 0x6c205820, 0xbede: 0x6c206c20,
+-	0xbee7: 0x6c207c20,
+-	0xbee8: 0x6c206e20, 0xbeeb: 0x6c208820,
+-	0xbeed: 0x6c208420,
+-	0xbef2: 0x6c207a20,
+-	0xbef9: 0x6c207820, 0xbefb: 0x6c0f1020,
+-	0xbefd: 0x6c0d0620, 0xbeff: 0x6c207420,
+-	// Block 0x2fc, offset 0xbf00
+-	0xbf02: 0x6c207020,
+-	0xbf05: 0x6c207e20,
+-	0xbf0a: 0x6c208a20, 0xbf0b: 0x6c124a20,
+-	0xbf0c: 0x6c209620,
+-	0xbf12: 0x6c208c20, 0xbf13: 0x6c209220,
+-	0xbf14: 0x6c208620, 0xbf17: 0x6c0e9c20,
+-	0xbf19: 0x6c128c20, 0xbf1b: 0x6c207220,
+-	0xbf1e: 0x6c208220, 0xbf1f: 0x6c0a8820,
+-	0xbf21: 0x6c14ee20, 0xbf22: 0x6c20aa20, 0xbf23: 0x6c209020,
+-	0xbf29: 0x6c05e420, 0xbf2a: 0x6c017e20, 0xbf2b: 0x6c02b220,
+-	0xbf2e: 0x6c206020,
+-	0xbf35: 0x6c0a8a20, 0xbf36: 0x6c209a20,
+-	0xbf38: 0x6c20a820, 0xbf39: 0x6c098220, 0xbf3a: 0x6c02d820,
+-	0xbf3d: 0x6c0e1020,
+-	// Block 0x2fd, offset 0xbf40
+-	0xbf44: 0x6c209420, 0xbf47: 0x6c209e20,
+-	0xbf48: 0x6c20a620, 0xbf4b: 0x6c049420,
+-	0xbf58: 0x6c040420, 0xbf59: 0x6c20a220,
+-	0xbf5f: 0x6c03ae20,
+-	0xbf61: 0x6c107e20, 0xbf62: 0x6c20a020,
+-	0xbf66: 0x6c20a420,
+-	0xbf72: 0x6c209820,
+-	0xbf78: 0x6c209c20,
+-	0xbf7f: 0x6c02b420,
+-	// Block 0x2fe, offset 0xbf80
+-	0xbf80: 0x6c0e4620,
+-	0xbf84: 0x6c20b220,
+-	0xbf8d: 0x6c20ae20, 0xbf8e: 0x6c067220,
+-	0xbf90: 0x6c20ac20,
+-	0xbf97: 0x6c20b820,
+-	0xbf9c: 0x6c1fae20,
+-	0xbfa0: 0x6c20b020, 0xbfa2: 0x6c20b420, 0xbfa3: 0x6c20b620,
+-	0xbfaa: 0x6c20ce20,
+-	0xbfac: 0x6c20c620, 0xbfae: 0x6c1fd820,
+-	0xbfb3: 0x6c20c420,
+-	0xbfb8: 0x6c20c220, 0xbfbb: 0x6c20bc20,
+-	// Block 0x2ff, offset 0xbfc0
+-	0xbfc1: 0x6c208e20, 0xbfc2: 0x6c20c020, 0xbfc3: 0x6c20be20,
+-	0xbfd1: 0x6c20ca20, 0xbfd3: 0x6c16d020,
+-	0xbfda: 0x6c20d020, 0xbfdb: 0x6c051e20,
+-	0xbfde: 0x6c20c820, 0xbfdf: 0x6c20cc20,
+-	0xbfe8: 0x6c11ae20, 0xbfea: 0x6c20d220,
+-	0xbffa: 0x6c20da20, 0xbffb: 0x6c20d420,
+-	// Block 0x300, offset 0xc000
+-	0xc004: 0x6c15f220, 0xc005: 0x6c20d620,
+-	0xc00a: 0x6c207620,
+-	0xc012: 0x6c20dc20,
+-	0xc016: 0x6c20de20,
+-	0xc01d: 0x6c00e620, 0xc01f: 0x6c20e220,
+-	0xc020: 0x6c05b220, 0xc021: 0x6c08d220, 0xc023: 0x6c04d220,
+-	0xc027: 0x6c018020,
+-	0xc032: 0x6c15ca20,
+-	0xc037: 0x6c20e620,
+-	0xc038: 0x6c20e420, 0xc039: 0x6c20ea20, 0xc03a: 0x6c03e620,
+-	0xc03d: 0x6c04d420, 0xc03e: 0x6c032c20,
+-	// Block 0x301, offset 0xc040
+-	0xc043: 0x6c20f020,
+-	0xc047: 0x6c20ee20,
+-	0xc049: 0x6c20f220,
+-	0xc04c: 0x6c01d420, 0xc04e: 0x6c0e2220,
+-	0xc050: 0x6c20f420, 0xc053: 0x6c032e20,
+-	0xc054: 0x6c20f820,
+-	0xc059: 0x6c20f620, 0xc05b: 0x6c20fa20,
+-	0xc05f: 0x6c20fc20,
+-	0xc061: 0x6c20fe20, 0xc062: 0x6c089220, 0xc063: 0x6c0bea20,
+-	0xc064: 0x6c075a20, 0xc066: 0x6c12fc20,
+-	0xc069: 0x6c139c20, 0xc06a: 0x6c170c20,
+-	0xc06f: 0x6c08be20,
+-	0xc073: 0x6c07b820,
+-	0xc074: 0x6c16ac20,
+-	0xc078: 0x6c210020, 0xc079: 0x6c210220, 0xc07b: 0x6c089420,
+-	0xc07f: 0x6c210420,
+-	// Block 0x302, offset 0xc080
+-	0xc080: 0x6c210620, 0xc083: 0x6c210a20,
+-	0xc084: 0x6c210820, 0xc086: 0x6c144420,
+-	0xc089: 0x6c0a0820, 0xc08a: 0x6c096820, 0xc08b: 0x6c085c20,
+-	0xc08d: 0x6c210c20,
+-	0xc095: 0x6c211020, 0xc096: 0x6c0b0a20,
+-	0xc098: 0x6c210e20,
+-	0xc09e: 0x6c211220,
+-	0xc0a4: 0x6c211420,
+-	0xc0aa: 0x6c211620, 0xc0ab: 0x6c211820,
+-	0xc0af: 0x6c211a20,
+-	0xc0b1: 0x6c211e20, 0xc0b2: 0x6c211c20, 0xc0b3: 0x6c212020,
+-	0xc0b4: 0x6c018220, 0xc0b5: 0x6c0e4820, 0xc0b7: 0x6c212220,
+-	0xc0ba: 0x6c082020, 0xc0bb: 0x6c028c20,
+-	0xc0bc: 0x6c212420, 0xc0bf: 0x6c0fb020,
+-	// Block 0x303, offset 0xc0c0
+-	0xc0c0: 0x6c1a7220,
+-	0xc0c5: 0x6c03b220, 0xc0c6: 0x6c212620,
+-	0xc0cb: 0x6c212820,
+-	0xc0cd: 0x6c13b020, 0xc0ce: 0x6c146420,
+-	0xc0d2: 0x6c107620, 0xc0d3: 0x6c212a20,
+-	0xc0d4: 0x6c122c20,
+-	0xc0d8: 0x6c125620, 0xc0db: 0x6c14f620,
+-	0xc0df: 0x6c212c20,
+-	0xc0eb: 0x6c213020,
+-	0xc0ec: 0x6c212e20, 0xc0ef: 0x6c213420,
+-	0xc0f3: 0x6c213220,
+-	// Block 0x304, offset 0xc100
+-	0xc108: 0x6c213820,
+-	0xc10f: 0x6c089620,
+-	0xc111: 0x6c14b220, 0xc113: 0x6c213a20,
+-	0xc114: 0x6c213c20, 0xc117: 0x6c03b420,
+-	0xc11b: 0x6c213e20,
+-	0xc123: 0x6c214220,
+-	0xc124: 0x6c214020,
+-	0xc134: 0x6c0b8e20, 0xc137: 0x6c128e20,
+-	0xc138: 0x6c011020,
+-	0xc13e: 0x6c11ea20,
+-	// Block 0x305, offset 0xc140
+-	0xc140: 0x6c0f5a20, 0xc141: 0x6c09ce20, 0xc142: 0x6c042e20,
+-	0xc14e: 0x6c11ec20,
+-	0xc150: 0x6c08ec20,
+-	0xc155: 0x6c214620, 0xc157: 0x6c033020,
+-	0xc15a: 0x6c016c20,
+-	0xc15d: 0x6c10cc20, 0xc15e: 0x6c214420, 0xc15f: 0x6c06d820,
+-	0xc160: 0x6c0e5a20, 0xc162: 0x6c214820,
+-	0xc168: 0x6c215820, 0xc16a: 0x6c214a20,
+-	0xc170: 0x6c0d7a20, 0xc172: 0x6c043020, 0xc173: 0x6c215a20,
+-	0xc17a: 0x6c05b420,
+-	0xc17d: 0x6c03b620, 0xc17e: 0x6c215620,
+-	// Block 0x306, offset 0xc180
+-	0xc181: 0x6c215220, 0xc182: 0x6c214c20, 0xc183: 0x6c15cc20,
+-	0xc188: 0x6c0ef020,
+-	0xc18c: 0x6c109a20, 0xc18d: 0x6c214e20,
+-	0xc190: 0x6c215e20, 0xc192: 0x6c215c20, 0xc193: 0x6c052a20,
+-	0xc196: 0x6c019220,
+-	0xc199: 0x6c078e20, 0xc19a: 0x6c215020, 0xc19b: 0x6c215420,
+-	0xc1a1: 0x6c144220, 0xc1a2: 0x6c0de020,
+-	0xc1ab: 0x6c148220,
+-	0xc1ae: 0x6c216e20,
+-	0xc1b1: 0x6c217020, 0xc1b3: 0x6c01d620,
+-	0xc1b8: 0x6c132820, 0xc1b9: 0x6c154a20, 0xc1ba: 0x6c217420, 0xc1bb: 0x6c08d620,
+-	0xc1bc: 0x6c0a8c20, 0xc1bd: 0x6c216620, 0xc1be: 0x6c217220, 0xc1bf: 0x6c014c20,
+-	// Block 0x307, offset 0xc1c0
+-	0xc1c1: 0x6c049620,
+-	0xc1c4: 0x6c216020, 0xc1c5: 0x6c216a20,
+-	0xc1c9: 0x6c0c6820, 0xc1ca: 0x6c118620,
+-	0xc1cc: 0x6c122e20,
+-	0xc1d3: 0x6c216420,
+-	0xc1d5: 0x6c13d620, 0xc1d7: 0x6c216820,
+-	0xc1d9: 0x6c217a20, 0xc1db: 0x6c217620,
+-	0xc1dd: 0x6c216c20,
+-	0xc1e1: 0x6c13d820, 0xc1e2: 0x6c113420, 0xc1e3: 0x6c043220,
+-	0xc1e5: 0x6c0f7620,
+-	0xc1e8: 0x6c0e8e20, 0xc1ea: 0x6c217c20,
+-	0xc1ef: 0x6c217820,
+-	0xc1f0: 0x6c0daa20, 0xc1f1: 0x6c216220, 0xc1f3: 0x6c011220,
+-	// Block 0x308, offset 0xc200
+-	0xc20b: 0x6c15a820,
+-	0xc20c: 0x6c219220,
+-	0xc212: 0x6c219020,
+-	0xc217: 0x6c0c6c20,
+-	0xc219: 0x6c218a20, 0xc21b: 0x6c15e420,
+-	0xc21e: 0x6c105420, 0xc21f: 0x6c217e20,
+-	0xc225: 0x6c0efa20,
+-	0xc229: 0x6c011420, 0xc22a: 0x6c06da20, 0xc22b: 0x6c218420,
+-	0xc232: 0x6c099a20, 0xc233: 0x6c218e20,
+-	0xc235: 0x6c218c20, 0xc236: 0x6c218220,
+-	0xc238: 0x6c218820, 0xc23b: 0x6c02c420,
+-	0xc23d: 0x6c218620, 0xc23e: 0x6c113620,
+-	// Block 0x309, offset 0xc240
+-	0xc241: 0x6c162420,
+-	0xc244: 0x6c0af020, 0xc245: 0x6c0c6a20,
+-	0xc259: 0x6c219e20, 0xc25a: 0x6c219a20,
+-	0xc25c: 0x6c12b620,
+-	0xc263: 0x6c219420,
+-	0xc264: 0x6c219820, 0xc266: 0x6c00f020,
+-	0xc269: 0x6c06dc20, 0xc26a: 0x6c16e820,
+-	0xc26c: 0x6c026e20, 0xc26e: 0x6c12e020,
+-	0xc274: 0x6c15ce20, 0xc277: 0x6c023c20,
+-	0xc278: 0x6c0b3a20, 0xc279: 0x6c219c20,
+-	// Block 0x30a, offset 0xc280
+-	0xc285: 0x6c21a620,
+-	0xc288: 0x6c0a8e20,
+-	0xc28c: 0x6c156c20, 0xc28e: 0x6c21a020,
+-	0xc293: 0x6c219620,
+-	0xc295: 0x6c21a220,
+-	0xc299: 0x6c168420, 0xc29b: 0x6c101220,
+-	0xc29c: 0x6c106c20,
+-	0xc2af: 0x6c026020,
+-	0xc2b2: 0x6c012620,
+-	0xc2b5: 0x6c21ae20,
+-	0xc2b8: 0x6c21b420,
+-	0xc2bc: 0x6c164e20,
+-	// Block 0x30b, offset 0xc2c0
+-	0xc2c0: 0x6c15d420,
+-	0xc2c5: 0x6c21c220, 0xc2c6: 0x6c21b620, 0xc2c7: 0x6c21b020,
+-	0xc2cb: 0x6c167020,
+-	0xc2cc: 0x6c21bc20,
+-	0xc2d1: 0x6c09e020, 0xc2d2: 0x6c21c020,
+-	0xc2d5: 0x6c21ca20,
+-	0xc2d8: 0x6c100e20, 0xc2d9: 0x6c21c620,
+-	0xc2de: 0x6c21ba20,
+-	0xc2e1: 0x6c0e2420,
+-	0xc2e4: 0x6c21c820, 0xc2e6: 0x6c21b220,
+-	0xc2e8: 0x6c21be20, 0xc2ea: 0x6c21cc20, 0xc2eb: 0x6c00b820,
+-	0xc2ec: 0x6c21b820, 0xc2ee: 0x6c21ce20,
+-	0xc2f1: 0x6c0b3c20, 0xc2f3: 0x6c0a0a20,
+-	0xc2f5: 0x6c132220, 0xc2f7: 0x6c077420,
+-	0xc2f9: 0x6c21a820, 0xc2fa: 0x6c21c420, 0xc2fb: 0x6c0fa020,
+-	// Block 0x30c, offset 0xc300
+-	0xc305: 0x6c0bec20, 0xc307: 0x6c02c620,
+-	0xc308: 0x6c07ba20, 0xc309: 0x6c0a9020, 0xc30a: 0x6c21ac20, 0xc30b: 0x6c09d020,
+-	0xc313: 0x6c057c20,
+-	0xc315: 0x6c21aa20,
+-	0xc319: 0x6c21d620, 0xc31a: 0x6c0a2620, 0xc31b: 0x6c061420,
+-	0xc31d: 0x6c21f420, 0xc31f: 0x6c21e820,
+-	0xc320: 0x6c045420, 0xc321: 0x6c0fca20, 0xc323: 0x6c21de20,
+-	0xc324: 0x6c21f020, 0xc325: 0x6c001e20, 0xc326: 0x6c00e020,
+-	0xc329: 0x6c01aa20, 0xc32b: 0x6c21e220,
+-	0xc32c: 0x6c0d5020, 0xc32d: 0x6c21d020, 0xc32e: 0x6c21d420, 0xc32f: 0x6c06de20,
+-	0xc338: 0x6c21f620, 0xc33a: 0x6c21ec20,
+-	0xc33e: 0x6c21dc20,
+-	// Block 0x30d, offset 0xc340
+-	0xc343: 0x6c21ea20,
+-	0xc34a: 0x6c14a620,
+-	0xc34d: 0x6c21e620, 0xc34e: 0x6c21ee20,
+-	0xc356: 0x6c064020,
+-	0xc358: 0x6c0a9220, 0xc35b: 0x6c0e2620,
+-	0xc35f: 0x6c21da20,
+-	0xc367: 0x6c156a20,
+-	0xc36b: 0x6c21e020,
+-	0xc36e: 0x6c21d220, 0xc36f: 0x6c101020,
+-	0xc372: 0x6c21d820,
+-	0xc376: 0x6c21e420,
+-	0xc37e: 0x6c172620, 0xc37f: 0x6c090c20,
+-	// Block 0x30e, offset 0xc380
+-	0xc380: 0x6c149020, 0xc382: 0x6c21f820,
+-	0xc38c: 0x6c11bc20, 0xc38f: 0x6c221020,
+-	0xc390: 0x6c061620,
+-	0xc396: 0x6c0a0c20,
+-	0xc398: 0x6c21fc20,
+-	0xc39c: 0x6c162620, 0xc39d: 0x6c06e020, 0xc39f: 0x6c221620,
+-	0xc3a2: 0x6c009c20,
+-	0xc3a5: 0x6c221220,
+-	0xc3aa: 0x6c21fa20,
+-	0xc3af: 0x6c220620,
+-	0xc3b2: 0x6c220a20,
+-	0xc3b6: 0x6c15aa20, 0xc3b7: 0x6c220020,
+-	0xc3ba: 0x6c0f8820,
+-	0xc3bd: 0x6c220420,
+-	// Block 0x30f, offset 0xc3c0
+-	0xc3c2: 0x6c221420,
+-	0xc3c4: 0x6c220820, 0xc3c5: 0x6c14de20,
+-	0xc3c9: 0x6c21fe20, 0xc3cb: 0x6c08d420,
+-	0xc3cc: 0x6c222e20,
+-	0xc3d1: 0x6c02c820, 0xc3d3: 0x6c220220,
+-	0xc3d4: 0x6c220c20, 0xc3d5: 0x6c220e20,
+-	0xc3dd: 0x6c0dd020, 0xc3de: 0x6c0dac20,
+-	0xc3ec: 0x6c221e20, 0xc3ef: 0x6c222a20,
+-	0xc3f2: 0x6c222620,
+-	0xc3f4: 0x6c0f7e20, 0xc3f7: 0x6c223420,
+-	0xc3f8: 0x6c222020,
+-	0xc3fe: 0x6c222220, 0xc3ff: 0x6c21f220,
+-	// Block 0x310, offset 0xc400
+-	0xc401: 0x6c045e20, 0xc402: 0x6c129020,
+-	0xc406: 0x6c090e20,
+-	0xc409: 0x6c074a20,
+-	0xc40f: 0x6c16ea20,
+-	0xc411: 0x6c221a20, 0xc413: 0x6c223220,
+-	0xc414: 0x6c014e20, 0xc415: 0x6c0d0820,
+-	0xc420: 0x6c119620, 0xc422: 0x6c033220, 0xc423: 0x6c16bc20,
+-	0xc42b: 0x6c149220,
+-	0xc42c: 0x6c0f1420,
+-	0xc431: 0x6c222820, 0xc432: 0x6c222c20,
+-	0xc438: 0x6c0ca020,
+-	0xc43e: 0x6c223020, 0xc43f: 0x6c222420,
+-	// Block 0x311, offset 0xc440
+-	0xc441: 0x6c221820,
+-	0xc445: 0x6c033620,
+-	0xc454: 0x6c05b620,
+-	0xc458: 0x6c224c20, 0xc45b: 0x6c224220,
+-	0xc45c: 0x6c0c7020, 0xc45f: 0x6c02ba20,
+-	0xc464: 0x6c0a0e20, 0xc466: 0x6c225420,
+-	0xc46d: 0x6c224620, 0xc46e: 0x6c0ec820, 0xc46f: 0x6c224020,
+-	0xc470: 0x6c0f2220,
+-	0xc474: 0x6c228620,
+-	0xc478: 0x6c223a20, 0xc47a: 0x6c223820,
+-	0xc47c: 0x6c224a20,
+-	// Block 0x312, offset 0xc480
+-	0xc480: 0x6c223e20, 0xc481: 0x6c223c20, 0xc482: 0x6c224820,
+-	0xc484: 0x6c0bc220, 0xc486: 0x6c223620,
+-	0xc48e: 0x6c224e20,
+-	0xc491: 0x6c225020,
+-	0xc497: 0x6c033420,
+-	0xc4a1: 0x6c225a20, 0xc4a3: 0x6c225820,
+-	0xc4a4: 0x6c225c20,
+-	0xc4aa: 0x6c226220,
+-	0xc4b1: 0x6c0fb220, 0xc4b3: 0x6c225620,
+-	0xc4b9: 0x6c225e20,
+-	// Block 0x313, offset 0xc4c0
+-	0xc4c0: 0x6c05aa20, 0xc4c1: 0x6c0dea20, 0xc4c2: 0x6c225220, 0xc4c3: 0x6c111a20,
+-	0xc4c6: 0x6c226020,
+-	0xc4d4: 0x6c226a20, 0xc4d5: 0x6c226620,
+-	0xc4d8: 0x6c226c20, 0xc4db: 0x6c227220,
+-	0xc4df: 0x6c226420,
+-	0xc4e0: 0x6c073020, 0xc4e1: 0x6c10f420,
+-	0xc4e4: 0x6c21a420,
+-	0xc4eb: 0x6c15f420,
+-	0xc4ec: 0x6c226820, 0xc4ee: 0x6c227020, 0xc4ef: 0x6c0de220,
+-	0xc4f1: 0x6c226e20, 0xc4f3: 0x6c224420,
+-	0xc4f6: 0x6c2e8020,
+-	0xc4fa: 0x6c227820,
+-	0xc4fe: 0x6c228020,
+-	// Block 0x314, offset 0xc500
+-	0xc501: 0x6c227c20,
+-	0xc509: 0x6c227420, 0xc50b: 0x6c227620,
+-	0xc50f: 0x6c227e20,
+-	0xc511: 0x6c227a20,
+-	0xc515: 0x6c12b820,
+-	0xc518: 0x6c228a20, 0xc51a: 0x6c228420, 0xc51b: 0x6c228220,
+-	0xc51d: 0x6c228820, 0xc51e: 0x6c109020, 0xc51f: 0x6c228c20,
+-	0xc526: 0x6c0e9e20, 0xc527: 0x6c0dd220,
+-	0xc52c: 0x6c0bca20,
+-	0xc530: 0x6c228e20, 0xc532: 0x6c229220,
+-	0xc53e: 0x6c229020,
+-	// Block 0x315, offset 0xc540
+-	0xc54c: 0x6c221c20,
+-	0xc551: 0x6c229420,
+-	0xc558: 0x6c10b620,
+-	0xc563: 0x6c229620,
+-	0xc56b: 0x6c01d820,
+-	0xc56f: 0x6c101420,
+-	0xc570: 0x6c023e20,
+-	0xc578: 0x6c043420,
+-	0xc57c: 0x6c094c20, 0xc57d: 0x6c07bc20,
+-	// Block 0x316, offset 0xc580
+-	0xc589: 0x6c16d220, 0xc58a: 0x6c0b9020,
+-	0xc58e: 0x6c015020,
+-	0xc592: 0x6c229a20,
+-	0xc599: 0x6c229820,
+-	0xc5ac: 0x6c22a020, 0xc5ad: 0x6c0e2820, 0xc5ae: 0x6c22a620, 0xc5af: 0x6c229c20,
+-	0xc5b3: 0x6c22a420,
+-	0xc5b8: 0x6c22a220, 0xc5b9: 0x6c0fac20, 0xc5ba: 0x6c007220,
+-	// Block 0x317, offset 0xc5c0
+-	0xc5c8: 0x6c16b220, 0xc5cb: 0x6c22aa20,
+-	0xc5cf: 0x6c00cc20,
+-	0xc5d9: 0x6c22ae20,
+-	0xc5dd: 0x6c22ac20, 0xc5df: 0x6c22a820,
+-	0xc5f1: 0x6c229e20,
+-	0xc5f9: 0x6c13da20,
+-	0xc5fd: 0x6c22b220,
+-	// Block 0x318, offset 0xc600
+-	0xc609: 0x6c22b020,
+-	0xc614: 0x6c015220,
+-	0xc619: 0x6c22b620, 0xc61a: 0x6c133c20,
+-	0xc61c: 0x6c22b420,
+-	0xc621: 0x6c14ba20,
+-	0xc626: 0x6c0a9620,
+-	0xc636: 0x6c0ca220,
+-	0xc63c: 0x6c0a9420,
+-	// Block 0x319, offset 0xc640
+-	0xc649: 0x6c16be20,
+-	0xc64c: 0x6c22c220, 0xc64e: 0x6c0c7220,
+-	0xc655: 0x6c22ba20, 0xc656: 0x6c22c420,
+-	0xc659: 0x6c015420,
+-	0xc662: 0x6c22c020,
+-	0xc664: 0x6c116620, 0xc665: 0x6c22b820, 0xc666: 0x6c22be20, 0xc667: 0x6c0a9820,
+-	0xc669: 0x6c120220,
+-	0xc66c: 0x6c22c620, 0xc66e: 0x6c093220,
+-	0xc67d: 0x6c0c7420,
+-	// Block 0x31a, offset 0xc680
+-	0xc684: 0x6c22cc20,
+-	0xc688: 0x6c22bc20, 0xc68a: 0x6c053220,
+-	0xc68f: 0x6c22c820,
+-	0xc694: 0x6c15ac20, 0xc695: 0x6c22ce20,
+-	0xc699: 0x6c31a620,
+-	0xc69f: 0x6c09ea20,
+-	0xc6a8: 0x6c22d020,
+-	0xc6ac: 0x6c22d220,
+-	0xc6b1: 0x6c110020,
+-	0xc6b9: 0x6c22d620,
+-	0xc6be: 0x6c22d820,
+-	// Block 0x31b, offset 0xc6c0
+-	0xc6c3: 0x6c110a20,
+-	0xc6c8: 0x6c101620, 0xc6c9: 0x6c22dc20,
+-	0xc6ce: 0x6c22e020,
+-	0xc6d0: 0x6c167220, 0xc6d2: 0x6c22da20,
+-	0xc6d4: 0x6c22de20, 0xc6d5: 0x6c015620, 0xc6d7: 0x6c22d420,
+-	0xc6df: 0x6c19d420,
+-	0xc6e0: 0x6c22e220,
+-	0xc6e5: 0x6c0d0a20, 0xc6e6: 0x6c084420, 0xc6e7: 0x6c22e620,
+-	0xc6ec: 0x6c22e420, 0xc6ed: 0x6c0b0c20, 0xc6ee: 0x6c191420,
+-	0xc6f5: 0x6c22e820,
+-	0xc6f9: 0x6c22ec20, 0xc6fb: 0x6c22ca20,
+-	0xc6fc: 0x6c22ea20, 0xc6ff: 0x6c22ee20,
+-	// Block 0x31c, offset 0xc700
+-	0xc706: 0x6c119820,
+-	0xc70d: 0x6c22f020,
+-	0xc710: 0x6c22f220,
+-	0xc71b: 0x6c22f420,
+-	0xc728: 0x6c22f620, 0xc72a: 0x6c0f2c20,
+-	0xc72c: 0x6c22fa20, 0xc72d: 0x6c22f820,
+-	0xc730: 0x6c22fc20, 0xc732: 0x6c22fe20,
+-	0xc735: 0x6c094e20, 0xc736: 0x6c12e220,
+-	0xc73a: 0x6c152820, 0xc73b: 0x6c230020,
+-	0xc73c: 0x6c230220, 0xc73d: 0x6c0ce820, 0xc73e: 0x6c08d820, 0xc73f: 0x6c230420,
+-	// Block 0x31d, offset 0xc740
+-	0xc740: 0x6c230620,
+-	0xc746: 0x6c230820, 0xc747: 0x6c137c20,
+-	0xc748: 0x6c11ee20, 0xc74b: 0x6c230a20,
+-	0xc74c: 0x6c115220,
+-	0xc752: 0x6c0eca20,
+-	0xc758: 0x6c230c20, 0xc759: 0x6c020620, 0xc75b: 0x6c044620,
+-	0xc75d: 0x6c14dc20, 0xc75f: 0x6c14bc20,
+-	0xc761: 0x6c01a020, 0xc762: 0x6c16ec20,
+-	0xc767: 0x6c143820,
+-	0xc769: 0x6c132c20,
+-	0xc772: 0x6c0bee20,
+-	0xc774: 0x6c230e20,
+-	0xc779: 0x6c106e20,
+-	0xc77d: 0x6c05e620, 0xc77e: 0x6c231020,
+-	// Block 0x31e, offset 0xc780
+-	0xc780: 0x6c07c020, 0xc781: 0x6c231420, 0xc782: 0x6c231220,
+-	0xc787: 0x6c231620,
+-	0xc792: 0x6c231820,
+-	0xc796: 0x6c231a20,
+-	0xc7a0: 0x6c03e820, 0xc7a2: 0x6c231c20,
+-	0xc7a7: 0x6c231e20,
+-	0xc7ac: 0x6c05e820, 0xc7af: 0x6c11f020,
+-	0xc7b2: 0x6c232220,
+-	0xc7b6: 0x6c0af220,
+-	0xc7b9: 0x6c232020,
+-	// Block 0x31f, offset 0xc7c0
+-	0xc7c2: 0x6c049820, 0xc7c3: 0x6c232420,
+-	0xc7c4: 0x6c232820, 0xc7c6: 0x6c232620,
+-	0xc7ce: 0x6c232a20,
+-	0xc7d0: 0x6c064220, 0xc7d2: 0x6c232c20,
+-	0xc7d7: 0x6c04fa20,
+-	0xc7d9: 0x6c0cbc20, 0xc7db: 0x6c075620,
+-	0xc7e0: 0x6c233020, 0xc7e1: 0x6c233220, 0xc7e2: 0x6c232e20,
+-	0xc7e9: 0x6c096a20,
+-	0xc7ec: 0x6c107820, 0xc7ed: 0x6c049a20,
+-	0xc7f7: 0x6c233620,
+-	0xc7f8: 0x6c0e0c20, 0xc7f9: 0x6c233420,
+-	0xc7fc: 0x6c16ee20, 0xc7fd: 0x6c116820,
+-	// Block 0x320, offset 0xc800
+-	0xc80a: 0x6c233c20,
+-	0xc816: 0x6c234020, 0xc817: 0x6c233a20,
+-	0xc81b: 0x6c14f820,
+-	0xc81c: 0x6c233e20, 0xc81d: 0x6c234220, 0xc81f: 0x6c165020,
+-	0xc825: 0x6c234a20,
+-	0xc829: 0x6c234820, 0xc82a: 0x6c0ea020, 0xc82b: 0x6c10fe20,
+-	0xc82e: 0x6c05ea20, 0xc82f: 0x6c234620,
+-	0xc834: 0x6c234420, 0xc836: 0x6c156e20, 0xc837: 0x6c157020,
+-	0xc83e: 0x6c234c20, 0xc83f: 0x6c015820,
+-	// Block 0x321, offset 0xc840
+-	0xc844: 0x6c074820, 0xc845: 0x6c089820,
+-	0xc84e: 0x6c234e20, 0xc84f: 0x6c235020,
+-	0xc857: 0x6c235420,
+-	0xc863: 0x6c09d220,
+-	0xc868: 0x6c235820, 0xc86a: 0x6c235620,
+-	0xc870: 0x6c235a20, 0xc872: 0x6c028e20,
+-	0xc875: 0x6c235e20,
+-	0xc878: 0x6c235c20, 0xc87a: 0x6c236220, 0xc87b: 0x6c236020,
+-	// Block 0x322, offset 0xc880
+-	0xc884: 0x6c061820, 0xc887: 0x6c161820,
+-	0xc889: 0x6c04c020, 0xc88b: 0x6c018420,
+-	0xc896: 0x6c04fc20,
+-	0xc8a9: 0x6c037220,
+-	0xc8b2: 0x6c169820, 0xc8b3: 0x6c236620,
+-	0xc8bb: 0x6c236a20,
+-	// Block 0x323, offset 0xc8c0
+-	0xc8c0: 0x6c236c20, 0xc8c2: 0x6c01da20,
+-	0xc8c8: 0x6c236420, 0xc8ca: 0x6c084620,
+-	0xc8cd: 0x6c0ef220, 0xc8ce: 0x6c236820,
+-	0xc8de: 0x6c237220,
+-	0xc8e0: 0x6c096c20,
+-	0xc8e5: 0x6c236e20,
+-	0xc8ea: 0x6c056020,
+-	0xc8ed: 0x6c11f220, 0xc8ee: 0x6c237020,
+-	0xc8f1: 0x6c23a620,
+-	0xc8f8: 0x6c237c20,
+-	0xc8fe: 0x6c061a20,
+-	// Block 0x324, offset 0xc900
+-	0xc903: 0x6c043620,
+-	0xc905: 0x6c237620, 0xc906: 0x6c160620,
+-	0xc909: 0x6c162820,
+-	0xc922: 0x6c0de420,
+-	0xc925: 0x6c237a20,
+-	0xc932: 0x6c237e20, 0xc933: 0x6c167420,
+-	0xc934: 0x6c04d620, 0xc935: 0x6c125820, 0xc936: 0x6c113820,
+-	0xc93a: 0x6c238020,
+-	0xc93f: 0x6c238420,
+-	// Block 0x325, offset 0xc940
+-	0xc941: 0x6c238a20,
+-	0xc955: 0x6c238220,
+-	0xc959: 0x6c238820, 0xc95a: 0x6c067420, 0xc95b: 0x6c011620,
+-	0xc95c: 0x6c238c20, 0xc95e: 0x6c0ba420, 0xc95f: 0x6c238620,
+-	0xc960: 0x6c168020, 0xc963: 0x6c239220,
+-	0xc964: 0x6c31a220,
+-	0xc969: 0x6c238e20, 0xc96a: 0x6c239420,
+-	0xc96f: 0x6c237820,
+-	0xc970: 0x6c239020, 0xc973: 0x6c079020,
+-	0xc976: 0x6c239620,
+-	0xc97e: 0x6c239820,
+-	// Block 0x326, offset 0xc980
+-	0xc983: 0x6c160820,
+-	0xc98b: 0x6c239a20,
+-	0xc99e: 0x6c239c20,
+-	0xc9a2: 0x6c237420,
+-	0xc9a7: 0x6c239e20,
+-	0xc9b0: 0x6c033820,
+-	0xc9bd: 0x6c08da20,
+-	// Block 0x327, offset 0xc9c0
+-	0xc9ca: 0x6c23a020,
+-	0xc9cf: 0x6c23a220,
+-	0xc9d4: 0x6c23a420,
+-	0xc9dc: 0x6c00f220,
+-	0xc9e0: 0x6c23a820, 0xc9e2: 0x6c129220, 0xc9e3: 0x6c23aa20,
+-	0xc9e6: 0x6c02f820, 0xc9e7: 0x6c23ac20,
+-	0xc9e9: 0x6c23ae20,
+-	0xc9ee: 0x6c23b020,
+-	0xc9f0: 0x6c23b420, 0xc9f1: 0x6c23b620, 0xc9f2: 0x6c23b220,
+-	0xc9f6: 0x6c12c220, 0xc9f7: 0x6c23ba20,
+-	0xc9f8: 0x6c23b820,
+-	// Block 0x328, offset 0xca00
+-	0xca03: 0x6c23be20,
+-	0xca04: 0x6c23bc20, 0xca05: 0x6c23c020,
+-	0xca0c: 0x6c23c220, 0xca0d: 0x6c23c620, 0xca0e: 0x6c23c420,
+-	0xca11: 0x6c074e20, 0xca13: 0x6c23ca20,
+-	0xca15: 0x6c23c820,
+-	0xca18: 0x6c033a20, 0xca1a: 0x6c0b6a20,
+-	0xca1c: 0x6c0fa420, 0xca1e: 0x6c23cc20, 0xca1f: 0x6c0bf020,
+-	0xca23: 0x6c084820,
+-	0xca25: 0x6c016e20, 0xca26: 0x6c23ce20,
+-	0xca28: 0x6c15ae20, 0xca2b: 0x6c139e20,
+-	0xca2c: 0x6c23d020,
+-	0xca30: 0x6c0fb420, 0xca31: 0x6c157220, 0xca32: 0x6c06e220, 0xca33: 0x6c0b3e20,
+-	0xca37: 0x6c0e4a20,
+-	0xca38: 0x6c18ca20, 0xca3a: 0x6c0ecc20, 0xca3b: 0x6c020820,
+-	0xca3c: 0x6c23d220,
+-	// Block 0x329, offset 0xca40
+-	0xca44: 0x6c23d420, 0xca46: 0x6c23de20,
+-	0xca49: 0x6c23da20, 0xca4a: 0x6c23d820, 0xca4b: 0x6c1ec620,
+-	0xca4c: 0x6c024020, 0xca4d: 0x6c23d620, 0xca4f: 0x6c007420,
+-	0xca51: 0x6c11b420,
+-	0xca54: 0x6c11f420,
+-	0xca59: 0x6c162a20, 0xca5a: 0x6c23e020, 0xca5b: 0x6c23dc20,
+-	0xca5c: 0x6c0e6c20, 0xca5d: 0x6c0bcc20,
+-	0xca60: 0x6c11b620, 0xca62: 0x6c127620,
+-	0xca64: 0x6c23e420, 0xca65: 0x6c162020, 0xca66: 0x6c057e20, 0xca67: 0x6c23e620,
+-	0xca69: 0x6c23e220, 0xca6a: 0x6c120c20, 0xca6b: 0x6c23e820,
+-	0xca6d: 0x6c23ea20,
+-	0xca70: 0x6c007620, 0xca73: 0x6c0af420,
+-	0xca74: 0x6c23f420, 0xca76: 0x6c23ee20, 0xca77: 0x6c10c220,
+-	0xca78: 0x6c23ec20,
+-	0xca7f: 0x6c03b820,
+-	// Block 0x32a, offset 0xca80
+-	0xca82: 0x6c23fa20,
+-	0xca86: 0x6c23f020, 0xca87: 0x6c23f220,
+-	0xca89: 0x6c23f820, 0xca8a: 0x6c23f620, 0xca8b: 0x6c126620,
+-	0xca8e: 0x6c0cc020, 0xca8f: 0x6c0cbe20,
+-	0xca91: 0x6c03ea20,
+-	0xca94: 0x6c23fc20,
+-	0xca9a: 0x6c23fe20,
+-	0xca9d: 0x6c240020,
+-	0xcaa3: 0x6c240420,
+-	0xcaa5: 0x6c240220,
+-	0xcaab: 0x6c012820,
+-	0xcab1: 0x6c241420, 0xcab2: 0x6c123020, 0xcab3: 0x6c240820,
+-	0xcab5: 0x6c240c20,
+-	0xcab8: 0x6c241020, 0xcab9: 0x6c0b4020,
+-	0xcabc: 0x6c241220, 0xcabd: 0x6c240e20, 0xcabe: 0x6c091020,
+-	// Block 0x32b, offset 0xcac0
+-	0xcac2: 0x6c240620, 0xcac3: 0x6c240a20,
+-	0xcac5: 0x6c12a020, 0xcac7: 0x6c0a9a20,
+-	0xcaca: 0x6c241820,
+-	0xcacd: 0x6c241620,
+-	0xcad2: 0x6c241a20,
+-	0xcad4: 0x6c08dc20, 0xcad5: 0x6c077620,
+-	0xcad8: 0x6c101a20, 0xcad9: 0x6c241c20, 0xcadb: 0x6c0f0620,
+-	0xcade: 0x6c242020,
+-	0xcae2: 0x6c160a20, 0xcae3: 0x6c241e20,
+-	0xcae9: 0x6c0d0e20,
+-	0xcaf0: 0x6c242a20, 0xcaf2: 0x6c242e20, 0xcaf3: 0x6c243020,
+-	0xcaf4: 0x6c0e5c20,
+-	0xcafa: 0x6c242c20,
+-	0xcafc: 0x6c242620, 0xcafe: 0x6c242220, 0xcaff: 0x6c242420,
+-	// Block 0x32c, offset 0xcb00
+-	0xcb01: 0x6c242820,
+-	0xcb09: 0x6c243620, 0xcb0b: 0x6c243220,
+-	0xcb0d: 0x6c243420,
+-	0xcb1f: 0x6c243820,
+-	0xcb20: 0x6c243c20, 0xcb21: 0x6c243e20, 0xcb22: 0x6c244020,
+-	0xcb24: 0x6c244220, 0xcb27: 0x6c243a20,
+-	0xcb30: 0x6c244620,
+-	0xcb34: 0x6c244420,
+-	0xcb3b: 0x6c244820,
+-	// Block 0x32d, offset 0xcb40
+-	0xcb42: 0x6c165220,
+-	0xcb46: 0x6c244e20, 0xcb47: 0x6c244a20,
+-	0xcb48: 0x6c244c20,
+-	0xcb4c: 0x6c037420,
+-	0xcb52: 0x6c154c20,
+-	0xcb56: 0x6c136c20,
+-	0xcb58: 0x6c245220,
+-	0xcb5c: 0x6c245020,
+-	0xcb61: 0x6c245420, 0xcb62: 0x6c245620,
+-	0xcb67: 0x6c245e20,
+-	0xcb68: 0x6c245820, 0xcb69: 0x6c245a20, 0xcb6a: 0x6c245c20,
+-	0xcb6c: 0x6c246020,
+-	0xcb70: 0x6c246220, 0xcb72: 0x6c246420,
+-	0xcb76: 0x6c246620,
+-	0xcb78: 0x6c246820, 0xcb7a: 0x6c11be20, 0xcb7b: 0x6c0fcc20,
+-	0xcb7c: 0x6c246a20, 0xcb7d: 0x6c118820, 0xcb7e: 0x6c128420,
+-	// Block 0x32e, offset 0xcb80
+-	0xcb80: 0x6c246c20, 0xcb83: 0x6c246e20,
+-	0xcb84: 0x6c0f8020, 0xcb86: 0x6c024220, 0xcb87: 0x6c06e420,
+-	0xcb88: 0x6c247020, 0xcb8b: 0x6c247220,
+-	0xcb8e: 0x6c247420,
+-	0xcb90: 0x6c082620, 0xcb93: 0x6c247820,
+-	0xcb96: 0x6c247620,
+-	0xcb99: 0x6c247a20, 0xcb9a: 0x6c247c20,
+-	0xcbae: 0x6c123220,
+-	0xcbb0: 0x6c247e20,
+-	0xcbb4: 0x6c248020, 0xcbb7: 0x6c317020,
+-	0xcbb8: 0x6c248220, 0xcbb9: 0x6c248420, 0xcbba: 0x6c248620,
+-	0xcbbf: 0x6c083020,
+-	// Block 0x32f, offset 0xcbc0
+-	0xcbc2: 0x6c248820, 0xcbc3: 0x6c115020,
+-	0xcbc6: 0x6c145220,
+-	0xcbc8: 0x6c011820, 0xcbca: 0x6c012a20,
+-	0xcbcd: 0x6c248a20,
+-	0xcbd2: 0x6c248e20,
+-	0xcbd6: 0x6c248c20, 0xcbd7: 0x6c100c20,
+-	0xcbdb: 0x6c0bf220,
+-	0xcbdc: 0x6c20e820, 0xcbde: 0x6c249020, 0xcbdf: 0x6c14d220,
+-	0xcbe1: 0x6c249220, 0xcbe3: 0x6c033c20,
+-	0xcbe4: 0x6c120e20, 0xcbe5: 0x6c249420, 0xcbe7: 0x6c249620,
+-	0xcbea: 0x6c249820,
+-	0xcbee: 0x6c150820,
+-	0xcbf2: 0x6c14fa20,
+-	0xcbf4: 0x6c0eec20,
+-	0xcbf8: 0x6c0d1020, 0xcbfb: 0x6c249c20,
+-	0xcbfe: 0x6c0a1020,
+-	// Block 0x330, offset 0xcc00
+-	0xcc01: 0x6c0a9c20,
+-	0xcc04: 0x6c24a220, 0xcc07: 0x6c24a020,
+-	0xcc08: 0x6c249e20, 0xcc09: 0x6c125a20, 0xcc0b: 0x6c033e20,
+-	0xcc0c: 0x6c05f220,
+-	0xcc1b: 0x6c24ae20,
+-	0xcc1e: 0x6c24a820, 0xcc1f: 0x6c0b4220,
+-	0xcc20: 0x6c14b420,
+-	0xcc24: 0x6c24a620, 0xcc25: 0x6c24aa20, 0xcc26: 0x6c24ac20,
+-	0xcc29: 0x6c24a420,
+-	0xcc37: 0x6c24b020,
+-	0xcc38: 0x6c24b220, 0xcc3a: 0x6c0ece20,
+-	0xcc3c: 0x6c037620,
+-	// Block 0x331, offset 0xcc40
+-	0xcc40: 0x6c0e7e20,
+-	0xcc47: 0x6c24b420,
+-	0xcc5a: 0x6c24b620, 0xcc5b: 0x6c24bc20,
+-	0xcc61: 0x6c0b9220, 0xcc63: 0x6c107020,
+-	0xcc65: 0x6c24be20, 0xcc66: 0x6c143a20,
+-	0xcc68: 0x6c24b820, 0xcc6b: 0x6c24ba20,
+-	0xcc79: 0x6c24c420,
+-	0xcc7e: 0x6c24c220, 0xcc7f: 0x6c24c020,
+-	// Block 0x332, offset 0xcc80
+-	0xcc8b: 0x6c24c820,
+-	0xcc8e: 0x6c24c620,
+-	0xcc91: 0x6c24ca20,
+-	0xcc9e: 0x6c24ce20,
+-	0xcca0: 0x6c24cc20,
+-	0xcca5: 0x6c137220,
+-	0xccac: 0x6c09f820, 0xccad: 0x6c165420,
+-	0xccb0: 0x6c24d020, 0xccb3: 0x6c105620,
+-	0xccb6: 0x6c24d220,
+-	0xccb9: 0x6c24d420, 0xccbb: 0x6c24dc20,
+-	0xccbc: 0x6c24d820, 0xccbd: 0x6c24da20, 0xccbf: 0x6c24d620,
+-	// Block 0x333, offset 0xccc0
+-	0xccc7: 0x6c24de20,
+-	0xcccd: 0x6c24e020,
+-	0xccd7: 0x6c24e220,
+-	0xccda: 0x6c24e420, 0xccdb: 0x6c14be20,
+-	0xccdc: 0x6c24e620,
+-	0xcce2: 0x6c153020, 0xcce3: 0x6c24e820,
+-	0xcce5: 0x6c0e5020, 0xcce7: 0x6c117820,
+-	0xcce9: 0x6c04fe20,
+-	0xcced: 0x6c0e2a20, 0xccee: 0x6c24ea20, 0xccef: 0x6c049c20,
+-	0xccf3: 0x6c0c2020,
+-	0xccfc: 0x6c24ec20,
+-	// Block 0x334, offset 0xcd00
+-	0xcd02: 0x6c079220,
+-	0xcd0c: 0x6c24ee20,
+-	0xcd12: 0x6c24f020,
+-	0xcd14: 0x6c05ec20, 0xcd15: 0x6c07c220,
+-	0xcd20: 0x6c24f420,
+-	0xcd25: 0x6c0fd820, 0xcd26: 0x6c07c420, 0xcd27: 0x6c040820,
+-	0xcd32: 0x6c13dc20,
+-	0xcd34: 0x6c113a20,
+-	0xcd3a: 0x6c0fda20,
+-	0xcd3f: 0x6c071420,
+-	// Block 0x335, offset 0xcd40
+-	0xcd45: 0x6c24f820,
+-	0xcd5d: 0x6c0a9e20,
+-	0xcd6b: 0x6c162c20,
+-	0xcd6c: 0x6c06e620, 0xcd6f: 0x6c05ee20,
+-	0xcd72: 0x6c11a620,
+-	0xcd74: 0x6c24fc20,
+-	0xcd7c: 0x6c250020,
+-	// Block 0x336, offset 0xcd80
+-	0xcd81: 0x6c067620,
+-	0xcd86: 0x6c24fe20, 0xcd87: 0x6c0f5c20,
+-	0xcd8c: 0x6c250420, 0xcd8d: 0x6c026220, 0xcd8e: 0x6c24fa20,
+-	0xcd91: 0x6c123420, 0xcd93: 0x6c00dc20,
+-	0xcd95: 0x6c07f020, 0xcd97: 0x6c172820,
+-	0xcd9a: 0x6c250220,
+-	0xcda3: 0x6c250620,
+-	0xcda7: 0x6c136e20,
+-	0xcda9: 0x6c0c3220, 0xcdaa: 0x6c250a20,
+-	0xcdaf: 0x6c250c20,
+-	0xcdb5: 0x6c250820,
+-	0xcdba: 0x6c029020,
+-	0xcdbc: 0x6c251820, 0xcdbe: 0x6c251620,
+-	// Block 0x337, offset 0xcdc0
+-	0xcdc1: 0x6c08de20,
+-	0xcdc5: 0x6c251a20, 0xcdc6: 0x6c251020,
+-	0xcdca: 0x6c251c20, 0xcdcb: 0x6c251220,
+-	0xcdd0: 0x6c121020, 0xcdd1: 0x6c250e20,
+-	0xcdd4: 0x6c251420,
+-	0xcdda: 0x6c252220,
+-	0xcde7: 0x6c252020,
+-	0xcde8: 0x6c145620,
+-	0xcdec: 0x6c251e20, 0xcdef: 0x6c009620,
+-	0xcdf4: 0x6c252620,
+-	0xcdfd: 0x6c252420,
+-	// Block 0x338, offset 0xce00
+-	0xce01: 0x6c0aa020,
+-	0xce07: 0x6c252820,
+-	0xce0e: 0x6c0cc220,
+-	0xce11: 0x6c252c20, 0xce12: 0x6c252a20,
+-	0xce19: 0x6c252e20,
+-	0xce26: 0x6c24f220,
+-	0xce2a: 0x6c24f620, 0xce2b: 0x6c253220,
+-	0xce2c: 0x6c253020,
+-	0xce3a: 0x6c08e020,
+-	0xce3c: 0x6c169a20, 0xce3e: 0x6c093420,
+-	// Block 0x339, offset 0xce40
+-	0xce40: 0x6c253420, 0xce41: 0x6c055220,
+-	0xce47: 0x6c03ec20,
+-	0xce48: 0x6c03ba20, 0xce49: 0x6c089a20,
+-	0xce50: 0x6c157420, 0xce53: 0x6c254020,
+-	0xce55: 0x6c253e20, 0xce56: 0x6c0cc420, 0xce57: 0x6c253820,
+-	0xce5a: 0x6c253c20,
+-	0xce5d: 0x6c09e220, 0xce5e: 0x6c0b4420, 0xce5f: 0x6c253a20,
+-	0xce60: 0x6c253620, 0xce62: 0x6c10f820,
+-	0xce65: 0x6c0aa220,
+-	0xce68: 0x6c129420,
+-	0xce6d: 0x6c07c620,
+-	0xce77: 0x6c101c20,
+-	0xce7a: 0x6c254220,
+-	0xce7f: 0x6c254420,
+-	// Block 0x33a, offset 0xce80
+-	0xce80: 0x6c257020, 0xce81: 0x6c04d820,
+-	0xce84: 0x6c16fe20, 0xce85: 0x6c0ca620,
+-	0xce8a: 0x6c254620,
+-	0xce8d: 0x6c01dc20, 0xce8e: 0x6c0f5e20, 0xce8f: 0x6c131a20,
+-	0xce9d: 0x6c254820,
+-	0xcea6: 0x6c046020, 0xcea7: 0x6c254a20,
+-	0xceaa: 0x6c254e20,
+-	0xceae: 0x6c255020,
+-	0xceb0: 0x6c10f620, 0xceb3: 0x6c255220,
+-	0xceb9: 0x6c255420, 0xceba: 0x6c255620,
+-	0xcebd: 0x6c04da20, 0xcebe: 0x6c01de20, 0xcebf: 0x6c107220,
+-	// Block 0x33b, offset 0xcec0
+-	0xcec0: 0x6c099c20, 0xcec1: 0x6c089c20,
+-	0xcec9: 0x6c255820, 0xcecb: 0x6c099e20,
+-	0xced1: 0x6c01cc20, 0xced2: 0x6c12a220,
+-	0xced5: 0x6c255a20,
+-	0xced8: 0x6c123620,
+-	0xcedf: 0x6c0cc620,
+-	0xcee1: 0x6c256020, 0xcee3: 0x6c256220,
+-	0xcee4: 0x6c117620, 0xcee6: 0x6c0b4620, 0xcee7: 0x6c255c20,
+-	0xcee9: 0x6c0e7620,
+-	0xceec: 0x6c255e20,
+-	0xcef0: 0x6c0aa420,
+-	0xcefb: 0x6c007820,
+-	// Block 0x33c, offset 0xcf00
+-	0xcf00: 0x6c03be20,
+-	0xcf08: 0x6c256420, 0xcf0b: 0x6c0f6020,
+-	0xcf0d: 0x6c256620, 0xcf0e: 0x6c0c0e20,
+-	0xcf14: 0x6c14aa20, 0xcf17: 0x6c126220,
+-	0xcf18: 0x6c256820, 0xcf19: 0x6c256a20, 0xcf1a: 0x6c0e5e20,
+-	0xcf1c: 0x6c165620, 0xcf1f: 0x6c256e20,
+-	0xcf20: 0x6c256c20,
+-	0xcf2e: 0x6c096e20,
+-	0xcf31: 0x6c257220, 0xcf32: 0x6c00a020,
+-	0xcf37: 0x6c257820,
+-	0xcf3b: 0x6c257420,
+-	0xcf3c: 0x6c01e020, 0xcf3d: 0x6c058020, 0xcf3e: 0x6c257620, 0xcf3f: 0x6c06e820,
+-	// Block 0x33d, offset 0xcf40
+-	0xcf40: 0x6c074020, 0xcf42: 0x6c13a420, 0xcf43: 0x6c257a20,
+-	0xcf46: 0x6c143c20,
+-	0xcf49: 0x6c257e20,
+-	0xcf4d: 0x6c0c2220, 0xcf4e: 0x6c011a20, 0xcf4f: 0x6c01ac20,
+-	0xcf50: 0x6c001820,
+-	0xcf57: 0x6c257c20,
+-	0xcf61: 0x6c258020, 0xcf62: 0x6c258220, 0xcf63: 0x6c0af620,
+-	0xcf69: 0x6c258420, 0xcf6b: 0x6c029220,
+-	0xcf70: 0x6c258820,
+-	0xcf74: 0x6c05b820, 0xcf76: 0x6c043820,
+-	0xcf79: 0x6c258a20, 0xcf7a: 0x6c051220,
+-	0xcf7d: 0x6c258c20, 0xcf7f: 0x6c0c7820,
+-	// Block 0x33e, offset 0xcf80
+-	0xcf81: 0x6c108220, 0xcf83: 0x6c0c4020,
+-	0xcf84: 0x6c080220,
+-	0xcf88: 0x6c258e20,
+-	0xcf92: 0x6c0e7820, 0xcf93: 0x6c0d1220,
+-	0xcf95: 0x6c259220, 0xcf96: 0x6c259620, 0xcf97: 0x6c259020,
+-	0xcf98: 0x6c259420,
+-	0xcf9f: 0x6c052820,
+-	0xcfa9: 0x6c259820, 0xcfaa: 0x6c053020,
+-	0xcfae: 0x6c043a20, 0xcfaf: 0x6c15b020,
+-	0xcfb0: 0x6c259c20,
+-	0xcfb6: 0x6c259e20,
+-	0xcfba: 0x6c00d820,
+-	0xcfbf: 0x6c25a420,
+-	// Block 0x33f, offset 0xcfc0
+-	0xcfc3: 0x6c02e020,
+-	0xcfc4: 0x6c25a220, 0xcfc5: 0x6c25a020, 0xcfc7: 0x6c25a820,
+-	0xcfc8: 0x6c259a20, 0xcfca: 0x6c25aa20, 0xcfcb: 0x6c161a20,
+-	0xcfcd: 0x6c25ac20, 0xcfcf: 0x6c25ae20,
+-	0xcfd2: 0x6c1ac220, 0xcfd3: 0x6c25b220,
+-	0xcfd5: 0x6c25b020,
+-	0xcfd9: 0x6c25b420, 0xcfda: 0x6c25b620,
+-	0xcfdc: 0x6c163220, 0xcfdd: 0x6c25b820, 0xcfdf: 0x6c2f4820,
+-	0xcfe0: 0x6c0aa620, 0xcfe1: 0x6c25ba20, 0xcfe2: 0x6c25bc20, 0xcfe3: 0x6c09fa20,
+-	0xcfe5: 0x6c105820, 0xcfe6: 0x6c25be20,
+-	0xcfea: 0x6c0e0420,
+-	0xcfed: 0x6c25c020, 0xcfef: 0x6c0e2c20,
+-	0xcff0: 0x6c25c220,
+-	0xcff6: 0x6c047220,
+-	0xcff8: 0x6c182420, 0xcff9: 0x6c0e6e20, 0xcffa: 0x6c08f620,
+-	0xcfff: 0x6c034020,
+-	// Block 0x340, offset 0xd000
+-	0xd002: 0x6c25c420,
+-	0xd004: 0x6c25de20, 0xd006: 0x6c25ca20,
+-	0xd008: 0x6c043c20, 0xd00a: 0x6c25c820, 0xd00b: 0x6c25e220,
+-	0xd00f: 0x6c25c620,
+-	0xd011: 0x6c0aa820,
+-	0xd018: 0x6c25ce20, 0xd019: 0x6c25d020, 0xd01b: 0x6c0f8220,
+-	0xd01e: 0x6c25d220,
+-	0xd020: 0x6c02b020,
+-	0xd025: 0x6c0b7820, 0xd026: 0x6c12e420,
+-	0xd028: 0x6c25d620,
+-	0xd02c: 0x6c0dc820,
+-	0xd033: 0x6c25cc20,
+-	0xd035: 0x6c25d420, 0xd036: 0x6c25d820,
+-	0xd039: 0x6c080e20,
+-	// Block 0x341, offset 0xd040
+-	0xd045: 0x6c25e620, 0xd046: 0x6c127820,
+-	0xd048: 0x6c11ac20, 0xd049: 0x6c101e20, 0xd04b: 0x6c04dc20,
+-	0xd04c: 0x6c25e420, 0xd04d: 0x6c25e020, 0xd04f: 0x6c11ca20,
+-	0xd050: 0x6c25da20, 0xd051: 0x6c0e7020, 0xd052: 0x6c102220,
+-	0xd054: 0x6c102020, 0xd056: 0x6c080420,
+-	0xd05d: 0x6c260a20,
+-	0xd065: 0x6c25ea20, 0xd067: 0x6c25ee20,
+-	0xd06c: 0x6c25f420, 0xd06e: 0x6c25f620,
+-	0xd070: 0x6c25f020, 0xd071: 0x6c25f220,
+-	0xd074: 0x6c25ec20, 0xd075: 0x6c25e820,
+-	0xd07a: 0x6c25dc20,
+-	// Block 0x342, offset 0xd080
+-	0xd086: 0x6c137620, 0xd087: 0x6c01e220,
+-	0xd08b: 0x6c260420,
+-	0xd08d: 0x6c25fe20, 0xd08f: 0x6c260820,
+-	0xd092: 0x6c260620,
+-	0xd094: 0x6c118a20, 0xd095: 0x6c149e20, 0xd097: 0x6c084a20,
+-	0xd098: 0x6c25fa20, 0xd099: 0x6c260c20, 0xd09a: 0x6c260220,
+-	0xd09c: 0x6c260020, 0xd09d: 0x6c25f820, 0xd09f: 0x6c25fc20,
+-	0xd0a1: 0x6c034220,
+-	0xd0aa: 0x6c0e2e20,
+-	0xd0ad: 0x6c0c7a20,
+-	0xd0b1: 0x6c11a420,
+-	0xd0b4: 0x6c261620,
+-	0xd0b8: 0x6c11a820,
+-	// Block 0x343, offset 0xd0c0
+-	0xd0c0: 0x6c0c4220, 0xd0c1: 0x6c261020,
+-	0xd0c4: 0x6c11fe20, 0xd0c6: 0x6c261820, 0xd0c7: 0x6c137e20,
+-	0xd0c9: 0x6c0e6a20, 0xd0cb: 0x6c260e20,
+-	0xd0cc: 0x6c261220, 0xd0cf: 0x6c261420,
+-	0xd0dd: 0x6c261a20,
+-	0xd0e0: 0x6c091820,
+-	0xd0e4: 0x6c107420, 0xd0e5: 0x6c262420, 0xd0e6: 0x6c262220,
+-	0xd0e9: 0x6c261c20,
+-	0xd0ed: 0x6c16f020,
+-	0xd0f3: 0x6c262e20,
+-	0xd0f6: 0x6c263620, 0xd0f7: 0x6c263020,
+-	// Block 0x344, offset 0xd100
+-	0xd100: 0x6c262820,
+-	0xd107: 0x6c262a20,
+-	0xd10d: 0x6c263420,
+-	0xd111: 0x6c261e20, 0xd112: 0x6c190c20, 0xd113: 0x6c262c20,
+-	0xd114: 0x6c262020, 0xd117: 0x6c263220,
+-	0xd11f: 0x6c263e20,
+-	0xd121: 0x6c034420, 0xd123: 0x6c263820,
+-	0xd127: 0x6c263a20,
+-	0xd12a: 0x6c263c20, 0xd12b: 0x6c264220,
+-	0xd137: 0x6c264020,
+-	0xd138: 0x6c124c20,
+-	0xd13d: 0x6c264420, 0xd13e: 0x6c16c020, 0xd13f: 0x6c13b220,
+-	// Block 0x345, offset 0xd140
+-	0xd140: 0x6c264e20, 0xd143: 0x6c264820,
+-	0xd14c: 0x6c264620, 0xd14d: 0x6c0c2420, 0xd14f: 0x6c264c20,
+-	0xd150: 0x6c265020,
+-	0xd154: 0x6c264a20, 0xd156: 0x6c265820,
+-	0xd158: 0x6c265220,
+-	0xd15f: 0x6c265420,
+-	0xd160: 0x6c262620,
+-	0xd164: 0x6c265620, 0xd165: 0x6c265a20,
+-	0xd16c: 0x6c265c20,
+-	0xd173: 0x6c136420,
+-	0xd175: 0x6c265e20,
+-	0xd17e: 0x6c151420,
+-	// Block 0x346, offset 0xd180
+-	0xd181: 0x6c04c420, 0xd182: 0x6c053620, 0xd183: 0x6c266020,
+-	0xd189: 0x6c134020, 0xd18b: 0x6c0b9420,
+-	0xd18d: 0x6c14b020,
+-	0xd190: 0x6c266220, 0xd192: 0x6c162e20,
+-	0xd195: 0x6c118c20, 0xd197: 0x6c0cc820,
+-	0xd198: 0x6c110c20, 0xd19b: 0x6c09e620,
+-	0xd19f: 0x6c004020,
+-	0xd1a1: 0x6c266c20, 0xd1a2: 0x6c266820,
+-	0xd1a4: 0x6c266420, 0xd1a5: 0x6c02f220, 0xd1a7: 0x6c0aaa20,
+-	0xd1a8: 0x6c266e20, 0xd1ab: 0x6c266a20,
+-	0xd1ad: 0x6c266620, 0xd1ae: 0x6c267620,
+-	0xd1b1: 0x6c267420, 0xd1b2: 0x6c267220, 0xd1b3: 0x6c267020,
+-	0xd1b9: 0x6c267820,
+-	0xd1bd: 0x6c267a20, 0xd1be: 0x6c0bf420,
+-	// Block 0x347, offset 0xd1c0
+-	0xd1c0: 0x6c267c20, 0xd1c2: 0x6c268020,
+-	0xd1c5: 0x6c267e20,
+-	0xd1ca: 0x6c064420,
+-	0xd1ce: 0x6c0cac20,
+-	0xd1d2: 0x6c268420,
+-	0xd1d6: 0x6c102420,
+-	0xd1d8: 0x6c268220,
+-	0xd1dc: 0x6c268620, 0xd1de: 0x6c134220, 0xd1df: 0x6c0d1420,
+-	0xd1e0: 0x6c06ea20, 0xd1e2: 0x6c268820,
+-	0xd1e7: 0x6c165820,
+-	0xd1ef: 0x6c268c20,
+-	0xd1f2: 0x6c268e20,
+-	0xd1f4: 0x6c269020, 0xd1f6: 0x6c269220,
+-	0xd1f8: 0x6c089e20, 0xd1fa: 0x6c269420, 0xd1fb: 0x6c058220,
+-	0xd1fe: 0x6c044020,
+-	// Block 0x348, offset 0xd200
+-	0xd200: 0x6c03c020, 0xd202: 0x6c269820,
+-	0xd204: 0x6c153620, 0xd205: 0x6c06ec20, 0xd206: 0x6c269620,
+-	0xd20a: 0x6c269e20, 0xd20b: 0x6c151c20,
+-	0xd20d: 0x6c111c20,
+-	0xd210: 0x6c128220,
+-	0xd214: 0x6c0a1220, 0xd215: 0x6c269c20, 0xd217: 0x6c093620,
+-	0xd218: 0x6c06ee20, 0xd219: 0x6c08a020, 0xd21a: 0x6c043e20, 0xd21b: 0x6c134420,
+-	0xd21c: 0x6c269a20,
+-	0xd220: 0x6c0cca20, 0xd221: 0x6c141820, 0xd222: 0x6c080620,
+-	0xd22b: 0x6c08a220,
+-	0xd22c: 0x6c0f2a20, 0xd22e: 0x6c26a420, 0xd22f: 0x6c168620,
+-	0xd230: 0x6c07ca20, 0xd232: 0x6c26a620, 0xd233: 0x6c0b4820,
+-	0xd235: 0x6c26aa20,
+-	0xd239: 0x6c0aac20, 0xd23a: 0x6c077820,
+-	0xd23f: 0x6c26a820,
+-	// Block 0x349, offset 0xd240
+-	0xd242: 0x6c09a020, 0xd243: 0x6c061c20,
+-	0xd244: 0x6c0ccc20, 0xd245: 0x6c26a020, 0xd246: 0x6c26ac20,
+-	0xd24b: 0x6c26a220,
+-	0xd24c: 0x6c058420, 0xd24e: 0x6c26b220, 0xd24f: 0x6c26ba20,
+-	0xd250: 0x6c05ba20,
+-	0xd256: 0x6c26b020,
+-	0xd25b: 0x6c26c220,
+-	0xd25e: 0x6c06f020,
+-	0xd261: 0x6c15e620, 0xd262: 0x6c003820, 0xd263: 0x6c26bc20,
+-	0xd266: 0x6c044220,
+-	0xd268: 0x6c26b620,
+-	0xd26e: 0x6c26b820,
+-	0xd271: 0x6c102620, 0xd272: 0x6c26b420, 0xd273: 0x6c26ae20,
+-	0xd275: 0x6c024420, 0xd276: 0x6c0c4820,
+-	0xd279: 0x6c05f020,
+-	0xd27d: 0x6c26c620,
+-	// Block 0x34a, offset 0xd280
+-	0xd289: 0x6c26c020,
+-	0xd28f: 0x6c26c420,
+-	0xd293: 0x6c26be20,
+-	0xd299: 0x6c058620, 0xd29a: 0x6c0d5e20, 0xd29b: 0x6c26c820,
+-	0xd29c: 0x6c0d1820, 0xd29f: 0x6c26e220,
+-	0xd2a2: 0x6c26da20, 0xd2a3: 0x6c26ce20,
+-	0xd2ab: 0x6c26d620,
+-	0xd2ac: 0x6c098420, 0xd2ad: 0x6c007a20, 0xd2ae: 0x6c26cc20, 0xd2af: 0x6c26dc20,
+-	0xd2b0: 0x6c26e420, 0xd2b1: 0x6c06f220, 0xd2b2: 0x6c14fc20,
+-	0xd2b4: 0x6c0f1c20, 0xd2b5: 0x6c26d020,
+-	0xd2b8: 0x6c26e020, 0xd2ba: 0x6c26ca20, 0xd2bb: 0x6c0e3020,
+-	0xd2bd: 0x6c26d420, 0xd2be: 0x6c003a20, 0xd2bf: 0x6c14e420,
+-	// Block 0x34b, offset 0xd2c0
+-	0xd2c7: 0x6c26d220,
+-	0xd2ca: 0x6c04de20, 0xd2cb: 0x6c123820,
+-	0xd2cf: 0x6c0d1620,
+-	0xd2d1: 0x6c166820, 0xd2d2: 0x6c0a2a20,
+-	0xd2d5: 0x6c273220,
+-	0xd2d8: 0x6c26e620, 0xd2da: 0x6c0c7c20,
+-	0xd2dc: 0x6c26de20, 0xd2dd: 0x6c26e820, 0xd2de: 0x6c26ec20,
+-	0xd2e0: 0x6c0f6220, 0xd2e1: 0x6c26f220,
+-	0xd2e4: 0x6c26ea20,
+-	0xd2e8: 0x6c138020, 0xd2e9: 0x6c034620,
+-	0xd2ec: 0x6c14e620, 0xd2ef: 0x6c007c20,
+-	0xd2f2: 0x6c26f020,
+-	0xd2f4: 0x6c16c220,
+-	0xd2fb: 0x6c26ee20,
+-	// Block 0x34c, offset 0xd300
+-	0xd301: 0x6c015a20,
+-	0xd304: 0x6c10c020, 0xd305: 0x6c26f420,
+-	0xd309: 0x6c270220, 0xd30a: 0x6c26f620, 0xd30b: 0x6c270420,
+-	0xd312: 0x6c26fc20,
+-	0xd31b: 0x6c119a20,
+-	0xd31e: 0x6c092420, 0xd31f: 0x6c270020,
+-	0xd321: 0x6c26fa20, 0xd322: 0x6c270620, 0xd323: 0x6c26f820,
+-	0xd326: 0x6c09d420,
+-	0xd32b: 0x6c13de20,
+-	0xd32e: 0x6c09e420,
+-	0xd331: 0x6c26fe20, 0xd332: 0x6c271620,
+-	0xd335: 0x6c270e20, 0xd337: 0x6c271420,
+-	0xd339: 0x6c271020, 0xd33a: 0x6c271820, 0xd33b: 0x6c270c20,
+-	0xd33d: 0x6c26d820, 0xd33e: 0x6c0c2620,
+-	// Block 0x34d, offset 0xd340
+-	0xd341: 0x6c11f620, 0xd343: 0x6c271220,
+-	0xd346: 0x6c270820,
+-	0xd34a: 0x6c0c7e20, 0xd34b: 0x6c058820,
+-	0xd34d: 0x6c09a220,
+-	0xd354: 0x6c0b0e20, 0xd355: 0x6c0ca820, 0xd356: 0x6c271e20,
+-	0xd359: 0x6c272220, 0xd35a: 0x6c272420,
+-	0xd35d: 0x6c271c20, 0xd35e: 0x6c272020,
+-	0xd366: 0x6c270a20, 0xd367: 0x6c271a20,
+-	0xd369: 0x6c272a20, 0xd36a: 0x6c272820,
+-	0xd36d: 0x6c148820,
+-	0xd370: 0x6c053a20,
+-	0xd379: 0x6c272620, 0xd37b: 0x6c272e20,
+-	0xd37c: 0x6c272c20, 0xd37d: 0x6c273420, 0xd37f: 0x6c273820,
+-	// Block 0x34e, offset 0xd380
+-	0xd382: 0x6c084c20, 0xd383: 0x6c273020,
+-	0xd388: 0x6c273a20, 0xd389: 0x6c273c20,
+-	0xd38c: 0x6c273e20, 0xd38e: 0x6c274a20, 0xd38f: 0x6c0fa220,
+-	0xd390: 0x6c274220, 0xd392: 0x6c274020, 0xd393: 0x6c274420,
+-	0xd394: 0x6c274620, 0xd396: 0x6c274820,
+-	0xd39b: 0x6c274c20,
+-	0xd39c: 0x6c274e20,
+-	// Block 0x34f, offset 0xd3c0
+-	0xd3f6: 0x6c034820,
+-	0xd3f8: 0x6c275020, 0xd3fa: 0x6c275220,
+-	// Block 0x350, offset 0xd400
+-	0xd405: 0x6c275420,
+-	0xd40c: 0x6c275620, 0xd40d: 0x6c275820, 0xd40e: 0x6c275a20,
+-	0xd410: 0x6c275c20, 0xd411: 0x6c275e20,
+-	0xd414: 0x6c276220, 0xd415: 0x6c276020,
+-	0xd418: 0x6c276420,
+-	0xd41f: 0x6c276620,
+-	0xd420: 0x6c276820,
+-	0xd427: 0x6c276e20,
+-	0xd428: 0x6c276a20, 0xd429: 0x6c276c20, 0xd42a: 0x6c07da20, 0xd42b: 0x6c058a20,
+-	0xd42e: 0x6c0e6020,
+-	0xd430: 0x6c11c620, 0xd432: 0x6c0a2c20,
+-	0xd435: 0x6c113e20, 0xd437: 0x6c123a20,
+-	0xd438: 0x6c277020, 0xd439: 0x6c1da420,
+-	// Block 0x351, offset 0xd440
+-	0xd442: 0x6c277220, 0xd443: 0x6c277620,
+-	0xd445: 0x6c15d620, 0xd446: 0x6c277420, 0xd447: 0x6c277a20,
+-	0xd448: 0x6c277820, 0xd44a: 0x6c15b220,
+-	0xd44c: 0x6c277c20, 0xd44e: 0x6c125c20,
+-	0xd454: 0x6c277e20,
+-	0xd45a: 0x6c278420,
+-	0xd45d: 0x6c278220, 0xd45e: 0x6c278020,
+-	0xd463: 0x6c278620,
+-	0xd464: 0x6c054820,
+-	0xd468: 0x6c0c8020, 0xd469: 0x6c03ee20,
+-	0xd46e: 0x6c278e20, 0xd46f: 0x6c278820,
+-	0xd472: 0x6c278a20,
+-	0xd476: 0x6c279020,
+-	0xd478: 0x6c279220, 0xd479: 0x6c278c20,
+-	0xd47d: 0x6c00ce20,
+-	// Block 0x352, offset 0xd480
+-	0xd481: 0x6c018620,
+-	0xd485: 0x6c279620, 0xd486: 0x6c279820,
+-	0xd48a: 0x6c279a20,
+-	0xd48c: 0x6c15d020,
+-	0xd492: 0x6c09a420,
+-	0xd494: 0x6c279e20, 0xd495: 0x6c279c20,
+-	0xd4a0: 0x6c0b9620, 0xd4a1: 0x6c27a020,
+-	0xd4a6: 0x6c27a220,
+-	0xd4a9: 0x6c27a420, 0xd4ab: 0x6c037a20,
+-	0xd4b0: 0x6c034a20, 0xd4b3: 0x6c27a620,
+-	0xd4b9: 0x6c27a820, 0xd4bb: 0x6c144e20,
+-	0xd4bc: 0x6c15d220,
+-	// Block 0x353, offset 0xd4c0
+-	0xd4c0: 0x6c15b420, 0xd4c1: 0x6c16f220, 0xd4c3: 0x6c06f620,
+-	0xd4c4: 0x6c27ae20, 0xd4c5: 0x6c093820, 0xd4c6: 0x6c27ac20,
+-	0xd4cb: 0x6c27b020,
+-	0xd4cc: 0x6c08e220,
+-	0xd4d0: 0x6c0d9a20, 0xd4d2: 0x6c27b220,
+-	0xd4d5: 0x6c06f420, 0xd4d7: 0x6c14fe20,
+-	0xd4d8: 0x6c27b420, 0xd4d9: 0x6c27b620,
+-	0xd4dc: 0x6c27b820,
+-	0xd4e1: 0x6c27ba20,
+-	0xd4e8: 0x6c27bc20,
+-	0xd4f3: 0x6c08e420,
+-	0xd4f6: 0x6c152a20,
+-	0xd4fb: 0x6c27c020,
+-	0xd4fd: 0x6c0e3220, 0xd4ff: 0x6c27be20,
+-	// Block 0x354, offset 0xd500
+-	0xd506: 0x6c27c420,
+-	0xd50a: 0x6c27c220,
+-	0xd512: 0x6c27c620,
+-	0xd516: 0x6c0bf620,
+-	0xd518: 0x6c27c820, 0xd51a: 0x6c27ca20,
+-	0xd51e: 0x6c134a20, 0xd51f: 0x6c27cc20,
+-	0xd521: 0x6c0d1a20, 0xd522: 0x6c27ce20,
+-	0xd528: 0x6c27d020,
+-	0xd52f: 0x6c16c420,
+-	0xd530: 0x6c27d620, 0xd532: 0x6c27d420, 0xd533: 0x6c27d220,
+-	0xd534: 0x6c0ed020, 0xd536: 0x6c27d820, 0xd537: 0x6c0b1020,
+-	0xd539: 0x6c27da20,
+-	0xd53d: 0x6c27dc20, 0xd53e: 0x6c16f420, 0xd53f: 0x6c27de20,
+-	// Block 0x355, offset 0xd540
+-	0xd544: 0x6c27e020, 0xd545: 0x6c27e420, 0xd546: 0x6c27e220, 0xd547: 0x6c11aa20,
+-	0xd549: 0x6c10da20, 0xd54b: 0x6c170020,
+-	0xd54c: 0x6c11b220,
+-	0xd553: 0x6c27e820,
+-	0xd556: 0x6c0aae20,
+-	0xd558: 0x6c127020, 0xd55a: 0x6c27ea20, 0xd55b: 0x6c27e620,
+-	0xd55d: 0x6c034c20,
+-	0xd561: 0x6c064820, 0xd562: 0x6c08a420,
+-	0xd565: 0x6c123c20,
+-	0xd569: 0x6c05f420, 0xd56a: 0x6c141a20,
+-	0xd56c: 0x6c27f020, 0xd56d: 0x6c27ec20, 0xd56f: 0x6c06f820,
+-	0xd571: 0x6c06fa20, 0xd572: 0x6c009220,
+-	0xd574: 0x6c07e820,
+-	0xd57a: 0x6c115620,
+-	// Block 0x356, offset 0xd580
+-	0xd583: 0x6c007e20,
+-	0xd584: 0x6c27fa20, 0xd586: 0x6c0e3420,
+-	0xd58c: 0x6c115420, 0xd58e: 0x6c0dae20,
+-	0xd596: 0x6c27fe20,
+-	0xd599: 0x6c27f620, 0xd59a: 0x6c27fc20, 0xd59b: 0x6c27f220,
+-	0xd59d: 0x6c27f820, 0xd59e: 0x6c13e020,
+-	0xd5a1: 0x6c064a20,
+-	0xd5a4: 0x6c00ba20, 0xd5a5: 0x6c27f420,
+-	0xd5af: 0x6c280220,
+-	0xd5b1: 0x6c280420,
+-	0xd5b4: 0x6c105a20,
+-	0xd5b8: 0x6c049e20,
+-	0xd5bc: 0x6c281a20, 0xd5bd: 0x6c111e20,
+-	// Block 0x357, offset 0xd5c0
+-	0xd5c2: 0x6c08a620,
+-	0xd5c5: 0x6c04a020, 0xd5c6: 0x6c0c1020, 0xd5c7: 0x6c171020,
+-	0xd5c8: 0x6c14ac20, 0xd5c9: 0x6c280020, 0xd5ca: 0x6c0c2820,
+-	0xd5da: 0x6c041220, 0xd5db: 0x6c280620,
+-	0xd5e3: 0x6c280a20,
+-	0xd5e9: 0x6c280820,
+-	0xd5ef: 0x6c280c20,
+-	0xd5f1: 0x6c0e0020, 0xd5f3: 0x6c112020,
+-	0xd5f9: 0x6c0ed220,
+-	0xd5fe: 0x6c281420,
+-	// Block 0x358, offset 0xd600
+-	0xd606: 0x6c281220,
+-	0xd60b: 0x6c280e20,
+-	0xd60e: 0x6c0b6e20,
+-	0xd610: 0x6c12e620, 0xd611: 0x6c281820, 0xd613: 0x6c281620,
+-	0xd614: 0x6c06fc20, 0xd615: 0x6c172a20,
+-	0xd61f: 0x6c283820,
+-	0xd625: 0x6c282020, 0xd626: 0x6c282220,
+-	0xd62b: 0x6c097020,
+-	0xd62e: 0x6c281e20,
+-	0xd630: 0x6c074c20, 0xd631: 0x6c281c20,
+-	0xd634: 0x6c282420,
+-	0xd638: 0x6c0ed420, 0xd639: 0x6c131c20, 0xd63a: 0x6c0c8220,
+-	0xd63f: 0x6c0db020,
+-	// Block 0x359, offset 0xd640
+-	0xd640: 0x6c282c20, 0xd642: 0x6c282e20, 0xd643: 0x6c282620,
+-	0xd648: 0x6c282820, 0xd64a: 0x6c282a20,
+-	0xd64f: 0x6c06fe20,
+-	0xd653: 0x6c283a20,
+-	0xd655: 0x6c283220,
+-	0xd65a: 0x6c12e820,
+-	0xd65c: 0x6c146c20, 0xd65d: 0x6c126c20,
+-	0xd660: 0x6c283020, 0xd663: 0x6c283620,
+-	0xd664: 0x6c283420,
+-	0xd668: 0x6c141c20, 0xd669: 0x6c283c20,
+-	0xd670: 0x6c283e20, 0xd673: 0x6c0caa20,
+-	0xd675: 0x6c284020,
+-	0xd678: 0x6c284420, 0xd67a: 0x6c284c20,
+-	0xd67d: 0x6c284620, 0xd67e: 0x6c284220, 0xd67f: 0x6c112220,
+-	// Block 0x35a, offset 0xd680
+-	0xd680: 0x6c284820, 0xd682: 0x6c284a20,
+-	0xd686: 0x6c019c20,
+-	0xd688: 0x6c285820, 0xd689: 0x6c284e20,
+-	0xd68d: 0x6c285020,
+-	0xd691: 0x6c285220, 0xd693: 0x6c0d3a20,
+-	0xd698: 0x6c285620, 0xd699: 0x6c285420, 0xd69a: 0x6c285a20,
+-	0xd69f: 0x6c285c20,
+-	0xd6a0: 0x6c285e20, 0xd6a3: 0x6c0b4a20,
+-	0xd6a5: 0x6c020a20, 0xd6a7: 0x6c286020,
+-	0xd6a8: 0x6c167620, 0xd6aa: 0x6c08e620,
+-	0xd6ad: 0x6c09a620,
+-	0xd6b3: 0x6c08a820,
+-	0xd6b4: 0x6c0e6220,
+-	0xd6ba: 0x6c286220, 0xd6bb: 0x6c286420,
+-	0xd6bc: 0x6c00de20, 0xd6be: 0x6c286620,
+-	// Block 0x35b, offset 0xd6c0
+-	0xd6c1: 0x6c286820, 0xd6c2: 0x6c286a20,
+-	0xd6c5: 0x6c286c20, 0xd6c7: 0x6c286e20,
+-	0xd6c8: 0x6c04a220, 0xd6c9: 0x6c1e9620, 0xd6ca: 0x6c287020,
+-	0xd6cc: 0x6c0c4a20, 0xd6cd: 0x6c287220, 0xd6ce: 0x6c092620,
+-	0xd6d0: 0x6c287420, 0xd6d2: 0x6c174a20,
+-	0xd6d6: 0x6c287620, 0xd6d7: 0x6c139420,
+-	0xd6d8: 0x6c036820, 0xd6db: 0x6c0c8420,
+-	0xd6dc: 0x6c09fc20, 0xd6de: 0x6c12fe20, 0xd6df: 0x6c09a820,
+-	0xd6e9: 0x6c287820, 0xd6ea: 0x6c070020, 0xd6eb: 0x6c287a20,
+-	0xd6ec: 0x6c11f820, 0xd6ee: 0x6c289620,
+-	0xd6f3: 0x6c287e20,
+-	0xd6f5: 0x6c0d8a20, 0xd6f6: 0x6c118e20, 0xd6f7: 0x6c061e20,
+-	0xd6f8: 0x6c287c20, 0xd6f9: 0x6c0c8620,
+-	// Block 0x35c, offset 0xd700
+-	0xd700: 0x6c288020,
+-	0xd707: 0x6c0f6420,
+-	0xd718: 0x6c288420, 0xd719: 0x6c288220, 0xd71a: 0x6c288820,
+-	0xd71d: 0x6c288620, 0xd71f: 0x6c288a20,
+-	0xd722: 0x6c288e20,
+-	0xd724: 0x6c288c20, 0xd726: 0x6c034e20,
+-	0xd728: 0x6c289020, 0xd72a: 0x6c289220, 0xd72b: 0x6c289420,
+-	0xd72e: 0x6c077a20, 0xd72f: 0x6c165a20,
+-	0xd731: 0x6c289820, 0xd732: 0x6c0b1220,
+-	0xd736: 0x6c015c20, 0xd737: 0x6c289a20,
+-	0xd738: 0x6c289c20,
+-	0xd73e: 0x6c289e20,
+-	// Block 0x35d, offset 0xd740
+-	0xd74b: 0x6c00a420,
+-	0xd74d: 0x6c28a020,
+-	0xd752: 0x6c28a220,
+-	0xd759: 0x6c12ea20,
+-	0xd75d: 0x6c091e20, 0xd75f: 0x6c28a620,
+-	0xd765: 0x6c024620, 0xd766: 0x6c002420,
+-	0xd76b: 0x6c28a420,
+-	0xd76c: 0x6c28aa20, 0xd76d: 0x6c114020, 0xd76f: 0x6c0b4c20,
+-	0xd771: 0x6c01e420, 0xd773: 0x6c13e220,
+-	0xd778: 0x6c059e20, 0xd779: 0x6c04e020, 0xd77b: 0x6c28a820,
+-	0xd77d: 0x6c020c20,
+-	// Block 0x35e, offset 0xd780
+-	0xd785: 0x6c02f620,
+-	0xd791: 0x6c015e20, 0xd792: 0x6c28b220, 0xd793: 0x6c169c20,
+-	0xd794: 0x6c0db220, 0xd797: 0x6c12a420,
+-	0xd799: 0x6c28ca20, 0xd79b: 0x6c01e620,
+-	0xd79c: 0x6c28c620, 0xd79e: 0x6c28c220, 0xd79f: 0x6c28b020,
+-	0xd7a1: 0x6c28ac20, 0xd7a3: 0x6c28ae20,
+-	0xd7a5: 0x6c095620, 0xd7a6: 0x6c050020, 0xd7a7: 0x6c0ea220,
+-	0xd7ab: 0x6c108a20,
+-	0xd7b1: 0x6c011e20, 0xd7b3: 0x6c28b620,
+-	0xd7b4: 0x6c28b420,
+-	0xd7b9: 0x6c28c020, 0xd7ba: 0x6c28b820, 0xd7bb: 0x6c28be20,
+-	// Block 0x35f, offset 0xd7c0
+-	0xd7c2: 0x6c14f020, 0xd7c3: 0x6c28bc20,
+-	0xd7c4: 0x6c01e820, 0xd7c5: 0x6c02ee20, 0xd7c6: 0x6c28c420,
+-	0xd7c9: 0x6c28c820,
+-	0xd7ce: 0x6c058c20,
+-	0xd7d6: 0x6c28d020, 0xd7d7: 0x6c28e220,
+-	0xd7d8: 0x6c28e420,
+-	0xd7dc: 0x6c001620,
+-	0xd7e3: 0x6c28f220,
+-	0xd7e8: 0x6c00a220, 0xd7eb: 0x6c28e020,
+-	0xd7ef: 0x6c28de20,
+-	0xd7f1: 0x6c28d420, 0xd7f2: 0x6c28d220,
+-	0xd7f4: 0x6c28ce20, 0xd7f5: 0x6c28cc20, 0xd7f6: 0x6c0e7a20,
+-	0xd7f8: 0x6c0dee20, 0xd7f9: 0x6c28d820,
+-	// Block 0x360, offset 0xd800
+-	0xd800: 0x6c28d620,
+-	0xd805: 0x6c28dc20,
+-	0xd809: 0x6c0d1c20, 0xd80a: 0x6c058e20,
+-	0xd80f: 0x6c00fe20,
+-	0xd810: 0x6c28da20, 0xd812: 0x6c070220,
+-	0xd818: 0x6c0d1e20,
+-	0xd833: 0x6c28fe20,
+-	0xd835: 0x6c290020, 0xd837: 0x6c01ea20,
+-	0xd83b: 0x6c019420,
+-	0xd83c: 0x6c28fa20,
+-	// Block 0x361, offset 0xd840
+-	0xd845: 0x6c28e620, 0xd847: 0x6c28f620,
+-	0xd849: 0x6c290420, 0xd84a: 0x6c28f820,
+-	0xd84e: 0x6c28f420,
+-	0xd853: 0x6c28ba20,
+-	0xd856: 0x6c28f020,
+-	0xd85a: 0x6c28e820,
+-	0xd85e: 0x6c035020, 0xd85f: 0x6c28ec20,
+-	0xd860: 0x6c290220, 0xd862: 0x6c28ee20,
+-	0xd868: 0x6c290620, 0xd86a: 0x6c28ea20, 0xd86b: 0x6c119c20,
+-	0xd871: 0x6c15de20,
+-	0xd875: 0x6c28fc20,
+-	0xd87d: 0x6c292820,
+-	// Block 0x362, offset 0xd880
+-	0xd881: 0x6c291820,
+-	0xd885: 0x6c0bba20,
+-	0xd88a: 0x6c03f820,
+-	0xd88c: 0x6c04e220, 0xd88e: 0x6c290e20,
+-	0xd893: 0x6c01ee20,
+-	0xd896: 0x6c0ab020,
+-	0xd898: 0x6c291420,
+-	0xd89c: 0x6c07cc20, 0xd89f: 0x6c0fce20,
+-	0xd8a0: 0x6c291e20,
+-	0xd8a9: 0x6c13b420, 0xd8ab: 0x6c290c20,
+-	0xd8af: 0x6c01ec20,
+-	0xd8b0: 0x6c064c20, 0xd8b1: 0x6c126e20, 0xd8b2: 0x6c292020,
+-	0xd8b4: 0x6c290820, 0xd8b7: 0x6c291a20,
+-	0xd8bb: 0x6c292e20,
+-	0xd8bd: 0x6c291020,
+-	// Block 0x363, offset 0xd8c0
+-	0xd8c3: 0x6c291220,
+-	0xd8c4: 0x6c105c20, 0xd8c7: 0x6c291c20,
+-	0xd8cb: 0x6c291620,
+-	0xd8cc: 0x6c13e420, 0xd8cd: 0x6c292220, 0xd8ce: 0x6c008020,
+-	0xd8d3: 0x6c290a20,
+-	0xd8e0: 0x6c292620, 0xd8e2: 0x6c292420,
+-	0xd8e9: 0x6c117a20, 0xd8ea: 0x6c293220,
+-	0xd8ec: 0x6c294820,
+-	0xd8f1: 0x6c02f020,
+-	0xd8f5: 0x6c294e20,
+-	0xd8f8: 0x6c292a20,
+-	0xd8fc: 0x6c293420, 0xd8fd: 0x6c15e820,
+-	// Block 0x364, offset 0xd900
+-	0xd906: 0x6c294620,
+-	0xd909: 0x6c15b620,
+-	0xd90e: 0x6c161c20,
+-	0xd917: 0x6c0ea420,
+-	0xd91b: 0x6c02ca20,
+-	0xd921: 0x6c130020, 0xd922: 0x6c295220, 0xd923: 0x6c102a20,
+-	0xd926: 0x6c002220,
+-	0xd929: 0x6c294420, 0xd92b: 0x6c293c20,
+-	0xd92c: 0x6c0d2020, 0xd92d: 0x6c293020, 0xd92e: 0x6c294020, 0xd92f: 0x6c294a20,
+-	0xd931: 0x6c10fc20,
+-	0xd935: 0x6c001420, 0xd937: 0x6c293a20,
+-	0xd939: 0x6c294c20, 0xd93a: 0x6c130c20,
+-	// Block 0x365, offset 0xd940
+-	0xd942: 0x6c294220,
+-	0xd944: 0x6c293820,
+-	0xd94b: 0x6c0ab220,
+-	0xd950: 0x6c09aa20,
+-	0xd954: 0x6c08e820,
+-	0xd959: 0x6c150020,
+-	0xd95c: 0x6c12aa20, 0xd95f: 0x6c295820,
+-	0xd961: 0x6c296a20,
+-	0xd96d: 0x6c293e20,
+-	0xd972: 0x6c02e220,
+-	0xd978: 0x6c0af820, 0xd979: 0x6c295420, 0xd97b: 0x6c295e20,
+-	0xd97c: 0x6c0d2220, 0xd97f: 0x6c295620,
+-	// Block 0x366, offset 0xd980
+-	0xd981: 0x6c296420,
+-	0xd984: 0x6c0e7220, 0xd986: 0x6c296620,
+-	0xd989: 0x6c15b820, 0xd98a: 0x6c295020, 0xd98b: 0x6c026420,
+-	0xd98d: 0x6c295c20,
+-	0xd990: 0x6c296220, 0xd991: 0x6c14a820,
+-	0xd996: 0x6c296820,
+-	0xd999: 0x6c295a20, 0xd99a: 0x6c296020,
+-	0xd9ac: 0x6c13e620, 0xd9ae: 0x6c16c620,
+-	0xd9b4: 0x6c297020,
+-	0xd9bc: 0x6c297e20, 0xd9bf: 0x6c296e20,
+-	// Block 0x367, offset 0xd9c0
+-	0xd9c0: 0x6c091620,
+-	0xd9c6: 0x6c292c20,
+-	0xd9d1: 0x6c137420, 0xd9d3: 0x6c149420,
+-	0xd9d4: 0x6c297c20, 0xd9d5: 0x6c297a20, 0xd9d7: 0x6c297220,
+-	0xd9d8: 0x6c297420, 0xd9da: 0x6c00e820,
+-	0xd9df: 0x6c297820,
+-	0xd9e1: 0x6c296c20,
+-	0xd9e6: 0x6c0f1a20,
+-	0xd9ec: 0x6c297620, 0xd9ed: 0x6c00bc20,
+-	0xd9f5: 0x6c0d3c20,
+-	0xd9fd: 0x6c135e20,
+-	// Block 0x368, offset 0xda00
+-	0xda00: 0x6c298020, 0xda01: 0x6c298820, 0xda03: 0x6c121220,
+-	0xda08: 0x6c298620, 0xda09: 0x6c0ab420, 0xda0a: 0x6c092220, 0xda0b: 0x6c298c20,
+-	0xda0e: 0x6c04a420,
+-	0xda15: 0x6c298e20, 0xda17: 0x6c130e20,
+-	0xda18: 0x6c298420, 0xda1a: 0x6c293620,
+-	0xda23: 0x6c298220,
+-	0xda28: 0x6c172220, 0xda29: 0x6c102c20, 0xda2a: 0x6c130220,
+-	0xda2d: 0x6c299c20,
+-	0xda37: 0x6c29a820,
+-	0xda3e: 0x6c29aa20,
+-	// Block 0x369, offset 0xda40
+-	0xda40: 0x6c299020,
+-	0xda44: 0x6c119020, 0xda47: 0x6c29a420,
+-	0xda48: 0x6c299420, 0xda4a: 0x6c299820,
+-	0xda50: 0x6c29ac20, 0xda51: 0x6c299620,
+-	0xda54: 0x6c299e20, 0xda57: 0x6c016020,
+-	0xda59: 0x6c10b220, 0xda5b: 0x6c29a020,
+-	0xda5c: 0x6c29a620,
+-	0xda64: 0x6c299220, 0xda66: 0x6c0c8820,
+-	0xda68: 0x6c299a20, 0xda69: 0x6c082220, 0xda6a: 0x6c0b4e20, 0xda6b: 0x6c054420,
+-	0xda6c: 0x6c153820, 0xda6e: 0x6c154220, 0xda6f: 0x6c0a3020,
+-	0xda79: 0x6c29b420, 0xda7a: 0x6c29b020,
+-	// Block 0x36a, offset 0xda80
+-	0xda81: 0x6c172020,
+-	0xda89: 0x6c29ae20,
+-	0xda8d: 0x6c15f620, 0xda8f: 0x6c29b220,
+-	0xda90: 0x6c29b620,
+-	0xda95: 0x6c29b820,
+-	0xda9c: 0x6c29be20, 0xda9d: 0x6c29ba20,
+-	0xdaa4: 0x6c102e20, 0xdaa5: 0x6c29bc20,
+-	0xdaa9: 0x6c11fa20, 0xdaaa: 0x6c29a220,
+-	0xdab7: 0x6c0a3220,
+-	0xdab9: 0x6c29c020, 0xdaba: 0x6c29ca20, 0xdabb: 0x6c0d2420,
+-	0xdabe: 0x6c29c820,
+-	// Block 0x36b, offset 0xdac0
+-	0xdac2: 0x6c298a20,
+-	0xdac6: 0x6c29cc20, 0xdac7: 0x6c0cce20,
+-	0xdaca: 0x6c29c220, 0xdacb: 0x6c29c620,
+-	0xdad3: 0x6c29c420,
+-	0xdad6: 0x6c20d820, 0xdad7: 0x6c20ba20,
+-	0xdada: 0x6c29d020,
+-	0xdae2: 0x6c29ce20,
+-	0xdaed: 0x6c15f820, 0xdaef: 0x6c249a20,
+-	0xdaf0: 0x6c29d220,
+-	0xdaff: 0x6c29d420,
+-	// Block 0x36c, offset 0xdb00
+-	0xdb0d: 0x6c29d620, 0xdb0e: 0x6c064e20,
+-	0xdb10: 0x6c041420,
+-	0xdb14: 0x6c29da20, 0xdb15: 0x6c186020,
+-	0xdb1a: 0x6c045620,
+-	0xdb1c: 0x6c163c20, 0xdb1e: 0x6c050e20, 0xdb1f: 0x6c29dc20,
+-	0xdb27: 0x6c29de20,
+-	0xdb2b: 0x6c0e9020,
+-	0xdb31: 0x6c29e020,
+-	0xdb39: 0x6c10dc20, 0xdb3b: 0x6c003420,
+-	// Block 0x36d, offset 0xdb40
+-	0xdb4a: 0x6c01fe20, 0xdb4b: 0x6c29ea20,
+-	0xdb4c: 0x6c29ec20,
+-	0xdb53: 0x6c29e220,
+-	0xdb55: 0x6c084e20,
+-	0xdb63: 0x6c29e420,
+-	0xdb64: 0x6c112820,
+-	0xdb69: 0x6c29e620, 0xdb6a: 0x6c29e820, 0xdb6b: 0x6c29fc20,
+-	0xdb6f: 0x6c29f020,
+-	0xdb70: 0x6c29f620,
+-	0xdb76: 0x6c29ee20,
+-	// Block 0x36e, offset 0xdb80
+-	0xdb84: 0x6c29f220, 0xdb86: 0x6c29f420, 0xdb87: 0x6c094020,
+-	0xdb89: 0x6c29f820, 0xdb8b: 0x6c0e3620,
+-	0xdb8d: 0x6c059020, 0xdb8e: 0x6c027820,
+-	0xdb94: 0x6c29fe20,
+-	0xdb99: 0x6c027220, 0xdb9b: 0x6c2a0820,
+-	0xdb9e: 0x6c2a0020, 0xdb9f: 0x6c2a0620,
+-	0xdba4: 0x6c11d420,
+-	0xdba9: 0x6c2a0220,
+-	0xdbac: 0x6c2a0420, 0xdbad: 0x6c12ac20, 0xdbae: 0x6c121420, 0xdbaf: 0x6c2a0a20,
+-	0xdbb8: 0x6c0df220, 0xdbb9: 0x6c2a1e20, 0xdbbb: 0x6c2a1620,
+-	0xdbbe: 0x6c020e20,
+-	// Block 0x36f, offset 0xdbc0
+-	0xdbc0: 0x6c2a1220, 0xdbc2: 0x6c13e820, 0xdbc3: 0x6c2a1420,
+-	0xdbc6: 0x6c2a0e20,
+-	0xdbc8: 0x6c2a1020, 0xdbc9: 0x6c2a1a20, 0xdbca: 0x6c2a2020,
+-	0xdbcd: 0x6c2a1c20,
+-	0xdbd1: 0x6c2a1820, 0xdbd2: 0x6c2a0c20,
+-	0xdbd8: 0x6c0e6420, 0xdbda: 0x6c2a2e20,
+-	0xdbdc: 0x6c14a420,
+-	0xdbe5: 0x6c2a2a20,
+-	0xdbe9: 0x6c2a2c20,
+-	0xdbf4: 0x6c2a2220, 0xdbf7: 0x6c2a2620,
+-	0xdbfb: 0x6c2a2820,
+-	0xdbff: 0x6c2a2420,
+-	// Block 0x370, offset 0xdc00
+-	0xdc09: 0x6c0c4c20, 0xdc0b: 0x6c16f620,
+-	0xdc0c: 0x6c2a3620, 0xdc0e: 0x6c2a3820,
+-	0xdc13: 0x6c2a4420,
+-	0xdc15: 0x6c0b1820, 0xdc17: 0x6c2a3c20,
+-	0xdc19: 0x6c2a4220,
+-	0xdc1f: 0x6c2a3220,
+-	0xdc20: 0x6c2a3020, 0xdc23: 0x6c2a4620,
+-	0xdc26: 0x6c01f020,
+-	0xdc28: 0x6c2a3e20, 0xdc2a: 0x6c2a4820,
+-	0xdc2e: 0x6c2a4020,
+-	0xdc34: 0x6c2a3a20, 0xdc36: 0x6c0ed620,
+-	0xdc38: 0x6c2a3420,
+-	0xdc3f: 0x6c117420,
+-	// Block 0x371, offset 0xdc40
+-	0xdc42: 0x6c2a5020,
+-	0xdc4d: 0x6c158220,
+-	0xdc5f: 0x6c2a4e20,
+-	0xdc62: 0x6c2a4c20,
+-	0xdc6b: 0x6c2a5e20,
+-	0xdc6f: 0x6c2a5220,
+-	0xdc73: 0x6c2a6220,
+-	0xdc7a: 0x6c15d820, 0xdc7b: 0x6c2a6820,
+-	0xdc7d: 0x6c2a5620,
+-	// Block 0x372, offset 0xdc80
+-	0xdc80: 0x6c2a5820,
+-	0xdc84: 0x6c2a6020, 0xdc86: 0x6c2a6620, 0xdc87: 0x6c2a6420,
+-	0xdc8b: 0x6c2a5420,
+-	0xdc90: 0x6c2a5a20, 0xdc92: 0x6c2a7c20,
+-	0xdca0: 0x6c2a6e20,
+-	0xdcaf: 0x6c2a6a20,
+-	0xdcb2: 0x6c2a6c20,
+-	0xdcb6: 0x6c2a7620, 0xdcb7: 0x6c2a7820,
+-	0xdcb9: 0x6c024820, 0xdcbb: 0x6c03f020,
+-	0xdcbe: 0x6c2a7420,
+-	// Block 0x373, offset 0xdcc0
+-	0xdcc5: 0x6c2a4a20,
+-	0xdccd: 0x6c2a7220, 0xdcce: 0x6c2a7a20, 0xdccf: 0x6c2a7020,
+-	0xdcd1: 0x6c2a7e20,
+-	0xdcd5: 0x6c2a8220, 0xdcd6: 0x6c2a8020,
+-	0xdce1: 0x6c2a8620, 0xdce2: 0x6c2a8420, 0xdce3: 0x6c29fa20,
+-	0xdce7: 0x6c2a8e20,
+-	0xdcf1: 0x6c2a8820,
+-	0xdcf6: 0x6c2a8a20,
+-	0xdcf9: 0x6c2a8c20, 0xdcfb: 0x6c2a9020,
+-	// Block 0x374, offset 0xdd00
+-	0xdd00: 0x6c05bc20, 0xdd02: 0x6c2a9420,
+-	0xdd04: 0x6c2a9220, 0xdd06: 0x6c09ac20,
+-	0xdd0c: 0x6c070420, 0xdd0d: 0x6c218020,
+-	0xdd12: 0x6c2a9620, 0xdd13: 0x6c09ee20,
+-	0xdd17: 0x6c026620,
+-	0xdd19: 0x6c2a9820, 0xdd1b: 0x6c012020,
+-	0xdd1d: 0x6c0ab620, 0xdd1e: 0x6c2a9a20,
+-	0xdd21: 0x6c070620, 0xdd22: 0x6c2a9c20, 0xdd23: 0x6c008220,
+-	0xdd28: 0x6c129620, 0xdd2b: 0x6c2a9e20,
+-	0xdd30: 0x6c0b9820, 0xdd32: 0x6c2aac20,
+-	0xdd35: 0x6c2aa620, 0xdd37: 0x6c0e9220,
+-	0xdd3d: 0x6c2aa820, 0xdd3e: 0x6c2aa220, 0xdd3f: 0x6c04e420,
+-	// Block 0x375, offset 0xdd40
+-	0xdd41: 0x6c2aa020, 0xdd42: 0x6c2aae20,
+-	0xdd48: 0x6c055020, 0xdd4b: 0x6c0db420,
+-	0xdd4d: 0x6c2aba20,
+-	0xdd52: 0x6c2ab220,
+-	0xdd56: 0x6c0d6220, 0xdd57: 0x6c2ab020,
+-	0xdd59: 0x6c2ab620,
+-	0xdd5e: 0x6c2aa420,
+-	0xdd62: 0x6c2ab820,
+-	0xdd64: 0x6c2abc20,
+-	0xdd6b: 0x6c123e20,
+-	0xdd6e: 0x6c2ab420,
+-	0xdd70: 0x6c2abe20, 0xdd71: 0x6c2ac220,
+-	0xdd74: 0x6c064620, 0xdd75: 0x6c2aaa20, 0xdd77: 0x6c004220,
+-	0xdd7f: 0x6c2ac020,
+-	// Block 0x376, offset 0xdd80
+-	0xdd81: 0x6c07ce20, 0xdd82: 0x6c16b420, 0xdd83: 0x6c2ac420,
+-	0xdd84: 0x6c2ac620, 0xdd85: 0x6c0d2620,
+-	0xdd8f: 0x6c160c20,
+-	0xdd94: 0x6c2ac820, 0xdd95: 0x6c157620,
+-	0xdd98: 0x6c2aca20, 0xdd99: 0x6c2acc20,
+-	0xdd9c: 0x6c13a020, 0xdd9d: 0x6c2ace20, 0xdd9f: 0x6c079820,
+-	0xdda1: 0x6c160e20,
+-	0xdda8: 0x6c2ad820,
+-	0xddb2: 0x6c2ada20, 0xddb3: 0x6c0ab820,
+-	0xddb4: 0x6c2ad620,
+-	0xddb8: 0x6c15da20, 0xddb9: 0x6c2ad020,
+-	0xddbc: 0x6c2ad420, 0xddbd: 0x6c0bfa20, 0xddbe: 0x6c0bc020,
+-	// Block 0x377, offset 0xddc0
+-	0xddc2: 0x6c2ad220,
+-	0xddc4: 0x6c2adc20, 0xddc7: 0x6c131e20,
+-	0xddca: 0x6c2ae020,
+-	0xddcc: 0x6c2ade20,
+-	0xddd0: 0x6c02cc20, 0xddd2: 0x6c13ea20, 0xddd3: 0x6c2ae220,
+-	0xdddd: 0x6c2afa20, 0xddde: 0x6c2ae620,
+-	0xdde5: 0x6c2ae820,
+-	0xddea: 0x6c2aea20, 0xddeb: 0x6c2aec20,
+-	0xddf6: 0x6c2af420,
+-	0xddf8: 0x6c2af620, 0xddfb: 0x6c2af220,
+-	// Block 0x378, offset 0xde00
+-	0xde01: 0x6c2aee20, 0xde03: 0x6c2ae420,
+-	0xde04: 0x6c2af020,
+-	0xde0c: 0x6c2af820, 0xde0d: 0x6c2ed820,
+-	0xde16: 0x6c018820,
+-	0xde1e: 0x6c2afe20, 0xde1f: 0x6c04e620,
+-	0xde20: 0x6c2afc20,
+-	0xde24: 0x6c2b0220, 0xde26: 0x6c2b0020,
+-	0xde2a: 0x6c2b0620,
+-	0xde2d: 0x6c2b0420, 0xde2f: 0x6c2b0820,
+-	0xde32: 0x6c09ae20,
+-	0xde34: 0x6c2b0a20, 0xde37: 0x6c2b0c20,
+-	0xde3e: 0x6c2b0e20, 0xde3f: 0x6c0bfc20,
+-	// Block 0x379, offset 0xde40
+-	0xde41: 0x6c15ba20, 0xde43: 0x6c2b1020,
+-	0xde46: 0x6c132020, 0xde47: 0x6c113020,
+-	0xde48: 0x6c2b1220, 0xde4a: 0x6c2b1420, 0xde4b: 0x6c05f620,
+-	0xde4f: 0x6c03c420,
+-	0xde53: 0x6c2b1620,
+-	0xde56: 0x6c08aa20, 0xde57: 0x6c112620,
+-	0xde58: 0x6c2b1820, 0xde5a: 0x6c029420,
+-	0xde61: 0x6c2b1a20,
+-	0xde66: 0x6c2b1e20, 0xde67: 0x6c15fa20,
+-	0xde69: 0x6c2b1c20, 0xde6a: 0x6c0b5020,
+-	0xde6c: 0x6c2b2020, 0xde6f: 0x6c2b2220,
+-	0xde72: 0x6c2b2420, 0xde73: 0x6c035220,
+-	0xde7a: 0x6c2b2620,
+-	0xde7d: 0x6c2b2820, 0xde7f: 0x6c2b2a20,
+-	// Block 0x37a, offset 0xde80
+-	0xde80: 0x6c2b2c20,
+-	0xde92: 0x6c029620,
+-	0xde9a: 0x6c2b2e20,
+-	0xde9c: 0x6c2b3020, 0xde9d: 0x6c2b3220,
+-	0xdea3: 0x6c021c20,
+-	0xdea6: 0x6c0b1420, 0xdea7: 0x6c2b3420,
+-	0xdeb4: 0x6c2b3620,
+-	0xdeb8: 0x6c2b3820,
+-	// Block 0x37b, offset 0xdec0
+-	0xdec0: 0x6c062020, 0xdec2: 0x6c0f6620, 0xdec3: 0x6c2b3a20,
+-	0xdec8: 0x6c059220, 0xdeca: 0x6c0b7020,
+-	0xdecc: 0x6c2b4020, 0xdece: 0x6c103020,
+-	0xded0: 0x6c2b3e20, 0xded3: 0x6c054620,
+-	0xded6: 0x6c2b3c20, 0xded7: 0x6c0de620,
+-	0xded8: 0x6c03c620, 0xdedb: 0x6c2b4220,
+-	0xdedd: 0x6c2b4420, 0xdedf: 0x6c0aba20,
+-	0xdee3: 0x6c05be20,
+-	0xdee5: 0x6c2b4620,
+-	0xdeea: 0x6c13ec20,
+-	0xdeed: 0x6c0c3e20,
+-	0xdef1: 0x6c045820, 0xdef3: 0x6c153a20,
+-	0xdef4: 0x6c0cd020, 0xdef6: 0x6c2b4820,
+-	0xdefa: 0x6c0b5220, 0xdefb: 0x6c0e9420,
+-	0xdefc: 0x6c0abc20,
+-	// Block 0x37c, offset 0xdf00
+-	0xdf01: 0x6c2b4a20,
+-	0xdf06: 0x6c2b5020,
+-	0xdf08: 0x6c2b5220,
+-	0xdf10: 0x6c079420, 0xdf11: 0x6c0d7c20, 0xdf12: 0x6c2b4e20,
+-	0xdf14: 0x6c0abe20, 0xdf15: 0x6c129820,
+-	0xdf1b: 0x6c2b4c20,
+-	0xdf1e: 0x6c08ac20,
+-	0xdf20: 0x6c012220, 0xdf22: 0x6c2b5a20, 0xdf23: 0x6c059420,
+-	0xdf26: 0x6c08b020,
+-	0xdf29: 0x6c08ae20, 0xdf2b: 0x6c171e20,
+-	0xdf2c: 0x6c2b5820, 0xdf2d: 0x6c2b5620, 0xdf2e: 0x6c0c8a20,
+-	0xdf30: 0x6c040620, 0xdf31: 0x6c170a20, 0xdf32: 0x6c026820, 0xdf33: 0x6c0ac020,
+-	0xdf3c: 0x6c2b5420,
+-	// Block 0x37d, offset 0xdf40
+-	0xdf42: 0x6c2b5e20,
+-	0xdf44: 0x6c2b6020, 0xdf45: 0x6c2b5c20, 0xdf47: 0x6c065020,
+-	0xdf49: 0x6c158c20,
+-	0xdf4c: 0x6c08b220, 0xdf4d: 0x6c10f220,
+-	0xdf51: 0x6c2b6620, 0xdf53: 0x6c0c0020,
+-	0xdf55: 0x6c0e3820,
+-	0xdf58: 0x6c157820, 0xdf5a: 0x6c2b6c20,
+-	0xdf5e: 0x6c067820,
+-	0xdf60: 0x6c0bfe20, 0xdf61: 0x6c2b6420, 0xdf63: 0x6c2b6e20,
+-	0xdf64: 0x6c067a20, 0xdf65: 0x6c2b6820, 0xdf66: 0x6c2b6a20,
+-	0xdf68: 0x6c2b6220,
+-	0xdf6c: 0x6c0c4420, 0xdf6d: 0x6c107a20,
+-	0xdf70: 0x6c0e1220, 0xdf72: 0x6c01f220,
+-	0xdf79: 0x6c124020,
+-	0xdf7c: 0x6c03f220, 0xdf7f: 0x6c0ed820,
+-	// Block 0x37e, offset 0xdf80
+-	0xdf82: 0x6c2b7420,
+-	0xdf84: 0x6c2b7020, 0xdf87: 0x6c0e4c20,
+-	0xdf8b: 0x6c0c0220,
+-	0xdf8c: 0x6c035420, 0xdf8d: 0x6c2b7220, 0xdf8f: 0x6c0b7a20,
+-	0xdf92: 0x6c165c20,
+-	0xdf96: 0x6c170420,
+-	0xdf9a: 0x6c2b7620, 0xdf9b: 0x6c2b8c20,
+-	0xdf9c: 0x6c0eda20, 0xdf9e: 0x6c2b8a20,
+-	0xdfa0: 0x6c2b8420, 0xdfa1: 0x6c2b9420, 0xdfa2: 0x6c2b8620,
+-	0xdfa4: 0x6c2b7e20, 0xdfa6: 0x6c0f6820, 0xdfa7: 0x6c2b7c20,
+-	0xdfab: 0x6c2b7820,
+-	0xdfad: 0x6c154e20, 0xdfae: 0x6c08b420,
+-	0xdfb1: 0x6c2b8020, 0xdfb3: 0x6c2b7a20,
+-	0xdfb7: 0x6c2b8820,
+-	0xdfb8: 0x6c0a3420, 0xdfba: 0x6c062220,
+-	0xdfbe: 0x6c0dec20,
+-	// Block 0x37f, offset 0xdfc0
+-	0xdfc0: 0x6c141e20, 0xdfc1: 0x6c013020, 0xdfc2: 0x6c008420,
+-	0xdfc4: 0x6c103220, 0xdfc7: 0x6c2b9020,
+-	0xdfcc: 0x6c2b8e20, 0xdfce: 0x6c10b420,
+-	0xdfd0: 0x6c2b9820,
+-	0xdfd4: 0x6c2b8220, 0xdfd6: 0x6c2b9620, 0xdfd7: 0x6c2b9a20,
+-	0xdfd9: 0x6c05f820, 0xdfda: 0x6c2b9220, 0xdfdb: 0x6c070820,
+-	0xdfdd: 0x6c093a20,
+-	0xdfe0: 0x6c2b9c20, 0xdfe1: 0x6c15bc20,
+-	0xdfe6: 0x6c2ba220,
+-	0xdfe8: 0x6c2ba820, 0xdfeb: 0x6c2ba420,
+-	0xdfec: 0x6c128620,
+-	0xdff3: 0x6c2b9e20,
+-	0xdff9: 0x6c04e820,
+-	0xdffe: 0x6c2ba620,
+-	// Block 0x380, offset 0xe000
+-	0xe001: 0x6c2baa20,
+-	0xe009: 0x6c2bb220,
+-	0xe00c: 0x6c2bac20, 0xe00e: 0x6c2bb020, 0xe00f: 0x6c2bae20,
+-	0xe016: 0x6c2bb420,
+-	0xe018: 0x6c08f220, 0xe01a: 0x6c2bb820, 0xe01b: 0x6c2bb620,
+-	0xe01c: 0x6c12ec20, 0xe01f: 0x6c2bbc20,
+-	0xe026: 0x6c059620,
+-	0xe02b: 0x6c2bba20,
+-	0xe02c: 0x6c2bbe20, 0xe02f: 0x6c2bc020,
+-	0xe030: 0x6c03f420, 0xe031: 0x6c279420, 0xe032: 0x6c0afa20,
+-	0xe034: 0x6c2bc220, 0xe037: 0x6c067c20,
+-	0xe03d: 0x6c2bc420,
+-	// Block 0x381, offset 0xe040
+-	0xe040: 0x6c2bc620, 0xe043: 0x6c085020,
+-	0xe04a: 0x6c1ede20,
+-	0xe04c: 0x6c2bc820, 0xe04e: 0x6c2bca20,
+-	0xe050: 0x6c09b020, 0xe052: 0x6c2bcc20, 0xe053: 0x6c2bce20,
+-	0xe056: 0x6c2bd020,
+-	0xe059: 0x6c2bd220, 0xe05a: 0x6c2bd420,
+-	// Block 0x382, offset 0xe080
+-	0xe0b7: 0x6c0e0a20,
+-	0xe0ba: 0x6c2bd620,
+-	0xe0bf: 0x6c2bda20,
+-	// Block 0x383, offset 0xe0c0
+-	0xe0c1: 0x6c2bd820,
+-	0xe0c6: 0x6c103420,
+-	0xe0c8: 0x6c2bdc20, 0xe0ca: 0x6c13ee20,
+-	0xe0cc: 0x6c2bde20, 0xe0ce: 0x6c2be020,
+-	0xe0d0: 0x6c2be220,
+-	0xe0d5: 0x6c2be420,
+-	0xe0da: 0x6c109c20,
+-	0xe0e1: 0x6c0ac220, 0xe0e2: 0x6c2be620,
+-	0xe0ea: 0x6c073220, 0xe0eb: 0x6c174620,
+-	0xe0ec: 0x6c2be820,
+-	0xe0f8: 0x6c2bea20, 0xe0f9: 0x6c129a20, 0xe0fa: 0x6c2bec20,
+-	0xe0fc: 0x6c2bfc20,
+-	// Block 0x384, offset 0xe100
+-	0xe102: 0x6c2bee20,
+-	0xe105: 0x6c2bf220,
+-	0xe109: 0x6c2bf020, 0xe10a: 0x6c2bf420,
+-	0xe10c: 0x6c142020, 0xe10d: 0x6c2bf620, 0xe10e: 0x6c2bf820,
+-	0xe114: 0x6c2bfa20,
+-	0xe118: 0x6c2bfe20,
+-	0xe11d: 0x6c024e20, 0xe11e: 0x6c0f3e20,
+-	0xe120: 0x6c12ee20, 0xe121: 0x6c07dc20, 0xe122: 0x6c070a20,
+-	0xe127: 0x6c12ba20,
+-	0xe128: 0x6c01f620, 0xe129: 0x6c11fc20, 0xe12a: 0x6c2c0420, 0xe12b: 0x6c035620,
+-	0xe12c: 0x6c0c2a20, 0xe12d: 0x6c2c0220, 0xe12e: 0x6c2c0c20, 0xe12f: 0x6c0ea620,
+-	0xe130: 0x6c151620, 0xe132: 0x6c2c0820, 0xe133: 0x6c2c0a20,
+-	0xe134: 0x6c03c820, 0xe136: 0x6c2c0e20, 0xe137: 0x6c116a20,
+-	0xe138: 0x6c0db620, 0xe13b: 0x6c124220,
+-	0xe13c: 0x6c0fa620, 0xe13d: 0x6c2c0620, 0xe13f: 0x6c142220,
+-	// Block 0x385, offset 0xe140
+-	0xe140: 0x6c021020, 0xe141: 0x6c2c1220, 0xe142: 0x6c16d420, 0xe143: 0x6c0ef420,
+-	0xe144: 0x6c170e20, 0xe147: 0x6c08b620,
+-	0xe148: 0x6c2c1020, 0xe14a: 0x6c0d5a20,
+-	0xe14d: 0x6c2c3220, 0xe14e: 0x6c0c8c20,
+-	0xe151: 0x6c10d820, 0xe153: 0x6c12bc20,
+-	0xe15a: 0x6c2c1820, 0xe15b: 0x6c085220,
+-	0xe15c: 0x6c08b820, 0xe15e: 0x6c0ac420,
+-	0xe160: 0x6c116e20, 0xe162: 0x6c05fa20, 0xe163: 0x6c2c1620,
+-	0xe164: 0x6c2c1420, 0xe166: 0x6c12f020,
+-	0xe16a: 0x6c091220,
+-	0xe16d: 0x6c0fd020,
+-	0xe17a: 0x6c2c1c20, 0xe17b: 0x6c2c1e20,
+-	0xe17c: 0x6c070c20, 0xe17d: 0x6c2c1a20,
+-	// Block 0x386, offset 0xe180
+-	0xe184: 0x6c2c2020, 0xe185: 0x6c2c2220, 0xe187: 0x6c2c2620,
+-	0xe188: 0x6c0d3e20, 0xe18a: 0x6c2c2420, 0xe18b: 0x6c037c20,
+-	0xe18d: 0x6c2c2a20, 0xe18f: 0x6c2c2820,
+-	0xe190: 0x6c2c2c20, 0xe193: 0x6c2c3020,
+-	0xe194: 0x6c2c3420, 0xe196: 0x6c2c3620,
+-	// Block 0x387, offset 0xe1c0
+-	0xe1e4: 0x6c0c2c20, 0xe1e6: 0x6c092e20, 0xe1e7: 0x6c2c3820,
+-	0xe1eb: 0x6c029820,
+-	0xe1ed: 0x6c2c3a20,
+-	0xe1f0: 0x6c0d2820, 0xe1f1: 0x6c2c3c20, 0xe1f3: 0x6c2c3e20,
+-	0xe1f4: 0x6c12f220, 0xe1f7: 0x6c03ca20,
+-	// Block 0x388, offset 0xe200
+-	0xe201: 0x6c2c4020,
+-	0xe205: 0x6c0edc20,
+-	0xe20a: 0x6c013220,
+-	0xe219: 0x6c2c4220,
+-	0xe223: 0x6c097220,
+-	0xe228: 0x6c0bb020,
+-	0xe233: 0x6c0d5220,
+-	0xe23a: 0x6c2c4820,
+-	0xe23e: 0x6c2c4620,
+-	// Block 0x389, offset 0xe240
+-	0xe242: 0x6c2c4420,
+-	0xe24b: 0x6c2c5420,
+-	0xe24c: 0x6c2c5020, 0xe24f: 0x6c2c4a20,
+-	0xe256: 0x6c2c4e20,
+-	0xe25a: 0x6c2c4c20, 0xe25b: 0x6c2c5220,
+-	0xe25d: 0x6c045a20, 0xe25f: 0x6c2c5a20,
+-	0xe261: 0x6c0c2e20, 0xe263: 0x6c2c5c20,
+-	0xe268: 0x6c065220, 0xe26a: 0x6c2c5620, 0xe26b: 0x6c2c5820,
+-	0xe26f: 0x6c16d620,
+-	0xe273: 0x6c0ede20,
+-	0xe275: 0x6c0c8e20,
+-	0xe27c: 0x6c2c5e20, 0xe27f: 0x6c2c6420,
+-	// Block 0x38a, offset 0xe280
+-	0xe288: 0x6c2c6020, 0xe289: 0x6c2c6220, 0xe28a: 0x6c15be20,
+-	0xe28f: 0x6c103620,
+-	0xe290: 0x6c2c6a20,
+-	0xe29d: 0x6c2c6620, 0xe29e: 0x6c2c6820, 0xe29f: 0x6c2c6c20,
+-	0xe2aa: 0x6c2c8820,
+-	0xe2b0: 0x6c2c7220,
+-	0xe2b4: 0x6c2c7420, 0xe2b5: 0x6c2c7020,
+-	// Block 0x38b, offset 0xe2c0
+-	0xe2c2: 0x6c2c6e20,
+-	0xe2c4: 0x6c0f6a20, 0xe2c7: 0x6c2c7820,
+-	0xe2c8: 0x6c2c8020, 0xe2c9: 0x6c2c7a20, 0xe2ca: 0x6c2c7620,
+-	0xe2cc: 0x6c2c7c20,
+-	0xe2d0: 0x6c2c7e20,
+-	0xe2d5: 0x6c2c8c20,
+-	0xe2d9: 0x6c2c8220,
+-	0xe2df: 0x6c0c3020,
+-	0xe2e0: 0x6c2c8620, 0xe2e3: 0x6c2c8a20,
+-	0xe2e4: 0x6c2c8420,
+-	0xe2f2: 0x6c2c9020,
+-	0xe2f4: 0x6c09b220, 0xe2f6: 0x6c2c8e20,
+-	0xe2fc: 0x6c2c9220,
+-	// Block 0x38c, offset 0xe300
+-	0xe301: 0x6c2c9420,
+-	0xe304: 0x6c2c9a20, 0xe305: 0x6c2c9820, 0xe307: 0x6c2c9620,
+-	0xe30a: 0x6c2c9e20, 0xe30b: 0x6c2c9c20,
+-	0xe30d: 0x6c153c20,
+-	0xe311: 0x6c2ca220, 0xe313: 0x6c2ca020,
+-	0xe314: 0x6c2ca420,
+-	0xe319: 0x6c2ca620,
+-	0xe321: 0x6c2caa20,
+-	0xe32a: 0x6c2ca820, 0xe32b: 0x6c0b5420,
+-	0xe32c: 0x6c2cac20, 0xe32f: 0x6c050220,
+-	0xe330: 0x6c2cae20, 0xe331: 0x6c2cb220,
+-	0xe33e: 0x6c2cb420,
+-	// Block 0x38d, offset 0xe340
+-	0xe345: 0x6c2cb620, 0xe346: 0x6c2cb020,
+-	0xe348: 0x6c2cb820, 0xe34a: 0x6c093c20, 0xe34b: 0x6c2cba20,
+-	0xe34c: 0x6c03cc20, 0xe34d: 0x6c054a20,
+-	0xe352: 0x6c05fc20,
+-	0xe35b: 0x6c2cbc20,
+-	0xe35f: 0x6c10c820,
+-	0xe362: 0x6c0fa820, 0xe363: 0x6c2cbe20,
+-	0xe36b: 0x6c2cc420,
+-	0xe378: 0x6c08f820, 0xe37b: 0x6c2cc220,
+-	0xe37c: 0x6c2cc020, 0xe37d: 0x6c059820, 0xe37e: 0x6c2cc620,
+-	// Block 0x38e, offset 0xe380
+-	0xe383: 0x6c029a20,
+-	0xe385: 0x6c2cca20,
+-	0xe389: 0x6c07d020, 0xe38a: 0x6c2cc820,
+-	0xe38c: 0x6c2cda20,
+-	0xe392: 0x6c2cce20, 0xe393: 0x6c2cd220,
+-	0xe394: 0x6c13a220, 0xe395: 0x6c2ccc20,
+-	0xe399: 0x6c2cd020, 0xe39b: 0x6c2cd820,
+-	0xe39c: 0x6c2cd420, 0xe39d: 0x6c03ce20, 0xe39f: 0x6c2cd620,
+-	0xe3a6: 0x6c2cdc20,
+-	0xe3a9: 0x6c115820, 0xe3aa: 0x6c167820,
+-	0xe3af: 0x6c09b420,
+-	0xe3b3: 0x6c2cde20,
+-	0xe3b8: 0x6c155020, 0xe3b9: 0x6c2ce220, 0xe3bb: 0x6c2ce020,
+-	0xe3be: 0x6c2ce820, 0xe3bf: 0x6c158e20,
+-	// Block 0x38f, offset 0xe3c0
+-	0xe3c2: 0x6c2ce620,
+-	0xe3c4: 0x6c02ce20, 0xe3c5: 0x6c2ce420, 0xe3c6: 0x6c2cee20,
+-	0xe3c9: 0x6c2cec20,
+-	0xe3cc: 0x6c2cea20, 0xe3cd: 0x6c0f9020, 0xe3ce: 0x6c2cf020,
+-	0xe3d7: 0x6c2cf220,
+-	0xe3dc: 0x6c2cf420, 0xe3df: 0x6c073420,
+-	0xe3e1: 0x6c052e20, 0xe3e2: 0x6c2cf620, 0xe3e3: 0x6c2cf820,
+-	0xe3e4: 0x6c2cfa20,
+-	// Block 0x390, offset 0xe400
+-	0xe41b: 0x6c0b5620,
+-	0xe41c: 0x6c2cfc20, 0xe41e: 0x6c08ea20, 0xe41f: 0x6c2cfe20,
+-	0xe423: 0x6c2d0020,
+-	0xe427: 0x6c18a420,
+-	0xe428: 0x6c18a220,
+-	0xe42d: 0x6c2d0220, 0xe42e: 0x6c273620, 0xe42f: 0x6c2d0420,
+-	0xe430: 0x6c0dfc20, 0xe431: 0x6c0b1a20, 0xe432: 0x6c112420,
+-	0xe437: 0x6c2d0620,
+-	0xe43a: 0x6c138220, 0xe43b: 0x6c0f1820,
+-	0xe43c: 0x6c075820, 0xe43f: 0x6c0e0620,
+-	// Block 0x391, offset 0xe440
+-	0xe442: 0x6c00d020,
+-	0xe444: 0x6c148420, 0xe445: 0x6c0b7220,
+-	0xe44e: 0x6c05a020,
+-	0xe451: 0x6c04ea20,
+-	0xe454: 0x6c138420,
+-	0xe45a: 0x6c2d0820,
+-	0xe462: 0x6c2d0c20,
+-	0xe465: 0x6c2d0a20, 0xe466: 0x6c01f820,
+-	0xe469: 0x6c10d420, 0xe46a: 0x6c2d0e20, 0xe46b: 0x6c119220,
+-	0xe46d: 0x6c0f9220, 0xe46f: 0x6c2d1020,
+-	0xe470: 0x6c09f020,
+-	0xe474: 0x6c2d1420, 0xe477: 0x6c14d420,
+-	0xe478: 0x6c2d3220, 0xe479: 0x6c2d1820, 0xe47a: 0x6c2d1a20,
+-	0xe47d: 0x6c0f0220,
+-	// Block 0x392, offset 0xe480
+-	0xe480: 0x6c0db820, 0xe481: 0x6c0d2a20, 0xe483: 0x6c103820,
+-	0xe485: 0x6c2d1620, 0xe486: 0x6c041620,
+-	0xe48b: 0x6c2d2820,
+-	0xe48d: 0x6c2d2220, 0xe48e: 0x6c2d3c20, 0xe48f: 0x6c103a20,
+-	0xe490: 0x6c0e7420, 0xe491: 0x6c2d1c20, 0xe493: 0x6c0f6c20,
+-	0xe494: 0x6c0fd220, 0xe495: 0x6c2d1e20, 0xe496: 0x6c2d2620, 0xe497: 0x6c0b8420,
+-	0xe499: 0x6c117220, 0xe49a: 0x6c0f0820,
+-	0xe49d: 0x6c0c0420, 0xe49e: 0x6c2d2420, 0xe49f: 0x6c0d5420,
+-	0xe4a0: 0x6c0d4020, 0xe4a1: 0x6c2d2020, 0xe4a2: 0x6c001220, 0xe4a3: 0x6c16c820,
+-	0xe4a7: 0x6c2d2a20,
+-	0xe4ae: 0x6c0dba20,
+-	0xe4b1: 0x6c09b620, 0xe4b2: 0x6c0b5820,
+-	0xe4b5: 0x6c2d2e20, 0xe4b6: 0x6c2d2c20,
+-	0xe4b8: 0x6c009e20, 0xe4b9: 0x6c2d3020,
+-	0xe4bc: 0x6c127a20, 0xe4be: 0x6c2d4020,
+-	// Block 0x393, offset 0xe4c0
+-	0xe4c1: 0x6c109e20, 0xe4c2: 0x6c0b9a20,
+-	0xe4c5: 0x6c0e6620, 0xe4c7: 0x6c051820,
+-	0xe4c9: 0x6c2d3e20, 0xe4ca: 0x6c157a20, 0xe4cb: 0x6c00fa20,
+-	0xe4cd: 0x6c138620, 0xe4ce: 0x6c01fa20, 0xe4cf: 0x6c2d3420,
+-	0xe4d0: 0x6c2d3620, 0xe4d1: 0x6c2d3820, 0xe4d2: 0x6c2d3a20, 0xe4d3: 0x6c105e20,
+-	0xe4d4: 0x6c0dfa20, 0xe4d5: 0x6c008620, 0xe4d6: 0x6c2d4220,
+-	0xe4d8: 0x6c2d4420, 0xe4d9: 0x6c31a020,
+-	0xe4dc: 0x6c0d7220, 0xe4de: 0x6c2d4620,
+-	0xe4e0: 0x6c016220, 0xe4e1: 0x6c0cd420, 0xe4e3: 0x6c05fe20,
+-	0xe4e5: 0x6c15c020,
+-	0xe4e8: 0x6c2d4820, 0xe4e9: 0x6c0f8420,
+-	0xe4ed: 0x6c0d2c20, 0xe4ee: 0x6c093e20, 0xe4ef: 0x6c2d4a20,
+-	0xe4f2: 0x6c2d5020,
+-	0xe4f5: 0x6c0a1620, 0xe4f6: 0x6c2d4c20, 0xe4f7: 0x6c0c9220,
+-	0xe4f8: 0x6c0c9020, 0xe4fa: 0x6c008820,
+-	0xe4fc: 0x6c165e20, 0xe4fd: 0x6c2d5420, 0xe4ff: 0x6c124420,
+-	// Block 0x394, offset 0xe500
+-	0xe500: 0x6c2d5820, 0xe501: 0x6c2d5620, 0xe502: 0x6c2d5220, 0xe503: 0x6c25a620,
+-	0xe504: 0x6c035820, 0xe507: 0x6c2d1220,
+-	0xe509: 0x6c2d5c20, 0xe50a: 0x6c2d5a20,
+-	0xe50f: 0x6c2d5e20,
+-	0xe511: 0x6c157c20,
+-	0xe523: 0x6c10aa20,
+-	0xe526: 0x6c13f020,
+-	0xe528: 0x6c2d6020, 0xe52a: 0x6c094220,
+-	0xe52f: 0x6c2d6220,
+-	0xe531: 0x6c2d6420,
+-	0xe535: 0x6c2d6620,
+-	0xe538: 0x6c0f6e20,
+-	// Block 0x395, offset 0xe540
+-	0xe541: 0x6c009420,
+-	0xe54a: 0x6c070e20,
+-	0xe54e: 0x6c16f820,
+-	0xe55b: 0x6c2d6e20,
+-	0xe561: 0x6c054c20, 0xe562: 0x6c2d6820,
+-	0xe564: 0x6c2d6a20,
+-	0xe568: 0x6c130420,
+-	0xe56d: 0x6c029c20,
+-	0xe575: 0x6c157e20, 0xe577: 0x6c04a620,
+-	0xe57d: 0x6c0fd420,
+-	// Block 0x396, offset 0xe580
+-	0xe582: 0x6c2d7020,
+-	0xe592: 0x6c2d7220,
+-	0xe599: 0x6c2d7420,
+-	0xe5ad: 0x6c0f7020,
+-	0xe5b0: 0x6c2d7820, 0xe5b2: 0x6c2d7620,
+-	// Block 0x397, offset 0xe5c0
+-	0xe5c9: 0x6c108e20, 0xe5ca: 0x6c2d7a20, 0xe5cb: 0x6c09b820,
+-	0xe5cc: 0x6c095020, 0xe5cd: 0x6c115a20, 0xe5ce: 0x6c0e9620,
+-	0xe5d2: 0x6c097420,
+-	0xe5d4: 0x6c0b9c20, 0xe5d6: 0x6c2d7c20,
+-	0xe5d8: 0x6c2d7e20,
+-	0xe5e2: 0x6c0b7e20, 0xe5e3: 0x6c2d8020,
+-	0xe5e5: 0x6c2d8220,
+-	0xe5e9: 0x6c2d8420, 0xe5ea: 0x6c15ea20,
+-	0xe5ec: 0x6c09ba20,
+-	0xe5f2: 0x6c2d8820, 0xe5f3: 0x6c2d8620,
+-	0xe5f5: 0x6c071020, 0xe5f7: 0x6c074220,
+-	0xe5f8: 0x6c085420,
+-	// Block 0x398, offset 0xe600
+-	0xe602: 0x6c2d8e20,
+-	0xe607: 0x6c0a1820,
+-	0xe609: 0x6c2d8c20, 0xe60b: 0x6c2d8a20,
+-	0xe60d: 0x6c0dca20,
+-	0xe610: 0x6c067e20, 0xe612: 0x6c0c0620,
+-	0xe617: 0x6c11c020,
+-	0xe61c: 0x6c09be20,
+-	0xe622: 0x6c2d9020,
+-	0xe624: 0x6c0ac620,
+-	0xe62a: 0x6c2d9620, 0xe62b: 0x6c2d9220,
+-	0xe62f: 0x6c2d9420,
+-	0xe634: 0x6c2d9a20, 0xe635: 0x6c2d9820,
+-	0xe638: 0x6c0afc20, 0xe63a: 0x6c2d9c20,
+-	// Block 0x399, offset 0xe640
+-	0xe640: 0x6c2d9e20, 0xe641: 0x6c2da020,
+-	0xe646: 0x6c120020, 0xe647: 0x6c07be20,
+-	0xe648: 0x6c095220, 0xe649: 0x6c2da220, 0xe64b: 0x6c2da420,
+-	0xe64c: 0x6c161020, 0xe64d: 0x6c09d620, 0xe64e: 0x6c152c20, 0xe64f: 0x6c166020,
+-	0xe650: 0x6c2da620, 0xe651: 0x6c04ec20,
+-	0xe656: 0x6c2da820,
+-	0xe658: 0x6c0f7220, 0xe65b: 0x6c2dae20,
+-	0xe65c: 0x6c02e420, 0xe65d: 0x6c0b5a20, 0xe65f: 0x6c2daa20,
+-	0xe661: 0x6c2dac20, 0xe663: 0x6c0f3020,
+-	0xe666: 0x6c143e20, 0xe667: 0x6c052020,
+-	0xe675: 0x6c2db220, 0xe676: 0x6c2db420,
+-	0xe67c: 0x6c2db020, 0xe67f: 0x6c2db820,
+-	// Block 0x39a, offset 0xe680
+-	0xe68d: 0x6c10a620, 0xe68e: 0x6c027a20,
+-	0xe691: 0x6c2dc020,
+-	0xe694: 0x6c2dba20, 0xe695: 0x6c2dbe20,
+-	0xe69e: 0x6c2db620,
+-	0xe6a9: 0x6c2e4c20,
+-	0xe6ac: 0x6c2dbc20,
+-	0xe6b4: 0x6c169e20, 0xe6b7: 0x6c065420,
+-	0xe6bf: 0x6c2dd020,
+-	// Block 0x39b, offset 0xe6c0
+-	0xe6c4: 0x6c0f9420, 0xe6c5: 0x6c2dc620,
+-	0xe6c8: 0x6c2dcc20, 0xe6c9: 0x6c2dc820, 0xe6cb: 0x6c2dd220,
+-	0xe6d0: 0x6c2dd420,
+-	0xe6d7: 0x6c2dc420,
+-	0xe6da: 0x6c2dde20, 0xe6db: 0x6c016420,
+-	0xe6de: 0x6c2dc220,
+-	0xe6e2: 0x6c11ba20,
+-	0xe6e4: 0x6c2dca20, 0xe6e6: 0x6c0ac820,
+-	0xe6f1: 0x6c071220,
+-	0xe6fe: 0x6c142420,
+-	// Block 0x39c, offset 0xe700
+-	0xe700: 0x6c04f020, 0xe703: 0x6c09d820,
+-	0xe705: 0x6c106020,
+-	0xe711: 0x6c0c9620, 0xe713: 0x6c2dda20,
+-	0xe715: 0x6c2dce20, 0xe716: 0x6c2dd820,
+-	0xe718: 0x6c14d620, 0xe71a: 0x6c0ee020, 0xe71b: 0x6c2ddc20,
+-	0xe71c: 0x6c2dd620,
+-	0xe72d: 0x6c0c9420,
+-	0xe737: 0x6c2de420,
+-	0xe739: 0x6c2de220,
+-	// Block 0x39d, offset 0xe740
+-	0xe74f: 0x6c2de020,
+-	0xe752: 0x6c13f220,
+-	0xe764: 0x6c0a4220,
+-	0xe769: 0x6c2de620, 0xe76a: 0x6c139620,
+-	0xe76d: 0x6c012420,
+-	0xe772: 0x6c12a820, 0xe773: 0x6c0e9820,
+-	0xe778: 0x6c045c20, 0xe77a: 0x6c2dea20,
+-	0xe77c: 0x6c071620,
+-	// Block 0x39e, offset 0xe780
+-	0xe786: 0x6c082c20,
+-	0xe78f: 0x6c2de820,
+-	0xe790: 0x6c0b9e20,
+-	0xe798: 0x6c0ba020, 0xe799: 0x6c2df020, 0xe79a: 0x6c2df420,
+-	0xe7a0: 0x6c0afe20, 0xe7a2: 0x6c2df220, 0xe7a3: 0x6c2df620,
+-	0xe7a6: 0x6c04ce20,
+-	0xe7a8: 0x6c12a620, 0xe7ab: 0x6c095420,
+-	0xe7ac: 0x6c16ca20, 0xe7ae: 0x6c2dee20, 0xe7af: 0x6c080820,
+-	0xe7b2: 0x6c170220,
+-	0xe7b5: 0x6c2dfa20,
+-	0xe7ba: 0x6c2df820, 0xe7bb: 0x6c2dfc20,
+-	// Block 0x39f, offset 0xe7c0
+-	0xe7c4: 0x6c2dec20,
+-	0xe7cb: 0x6c10ba20,
+-	0xe7cd: 0x6c0fd620,
+-	0xe7d4: 0x6c0f1e20, 0xe7d6: 0x6c2e0620,
+-	0xe7db: 0x6c0e3a20,
+-	0xe7dc: 0x6c2dfe20,
+-	0xe7e0: 0x6c2e0020,
+-	0xe7ec: 0x6c053e20, 0xe7ee: 0x6c2e0420,
+-	0xe7f5: 0x6c060020,
+-	0xe7fc: 0x6c2e0220, 0xe7fe: 0x6c0aca20,
+-	// Block 0x3a0, offset 0xe800
+-	0xe80c: 0x6c02e620,
+-	0xe814: 0x6c2e0e20, 0xe816: 0x6c079620, 0xe817: 0x6c0d2e20,
+-	0xe81a: 0x6c0f0420,
+-	0xe827: 0x6c026a20,
+-	0xe82c: 0x6c2e0a20, 0xe82d: 0x6c2e0c20, 0xe82e: 0x6c0ef620,
+-	0xe830: 0x6c2e0820,
+-	0xe839: 0x6c2e1020,
+-	// Block 0x3a1, offset 0xe840
+-	0xe843: 0x6c2e1c20,
+-	0xe848: 0x6c2e2220,
+-	0xe850: 0x6c2e2020, 0xe851: 0x6c0f8620,
+-	0xe856: 0x6c2e1220, 0xe857: 0x6c2e1420,
+-	0xe858: 0x6c2e1a20,
+-	0xe85d: 0x6c2e1e20,
+-	0xe861: 0x6c04a820,
+-	0xe864: 0x6c2e2420, 0xe865: 0x6c2e1820,
+-	0xe868: 0x6c2e1620,
+-	// Block 0x3a2, offset 0xe880
+-	0xe883: 0x6c2e2c20,
+-	0xe887: 0x6c2e2e20,
+-	0xe890: 0x6c2e3020, 0xe893: 0x6c2e2a20,
+-	0xe894: 0x6c2e2820,
+-	0xe898: 0x6c0acc20, 0xe899: 0x6c103c20, 0xe89a: 0x6c2e2620,
+-	0xe8a1: 0x6c2e3820,
+-	0xe8ab: 0x6c2e3420,
+-	0xe8b5: 0x6c2e3620, 0xe8b6: 0x6c2e3220,
+-	0xe8b8: 0x6c0de820, 0xe8ba: 0x6c2e3a20,
+-	// Block 0x3a3, offset 0xe8c0
+-	0xe8c1: 0x6c2e3c20,
+-	0xe8c4: 0x6c2e4020,
+-	0xe8d1: 0x6c035a20, 0xe8d2: 0x6c2e3e20, 0xe8d3: 0x6c154420,
+-	0xe8da: 0x6c2e5620, 0xe8db: 0x6c2e4220,
+-	0xe8de: 0x6c2e4820,
+-	0xe8e0: 0x6c2e4420, 0xe8e2: 0x6c2e4620,
+-	0xe8ea: 0x6c2e4a20,
+-	0xe8f0: 0x6c2e4e20,
+-	0xe8f5: 0x6c2e5020, 0xe8f7: 0x6c2e5220,
+-	0xe8fc: 0x6c2e5820, 0xe8fd: 0x6c2e5420, 0xe8fe: 0x6c2e5a20, 0xe8ff: 0x6c2e5e20,
+-	// Block 0x3a4, offset 0xe900
+-	0xe901: 0x6c2e5c20,
+-	// Block 0x3a5, offset 0xe940
+-	0xe977: 0x6c0ee220,
+-	// Block 0x3a6, offset 0xe980
+-	0xe980: 0x6c151e20, 0xe982: 0x6c2e6020, 0xe983: 0x6c0c9820,
+-	0xe987: 0x6c2e6220,
+-	0xe989: 0x6c136020, 0xe98a: 0x6c2e6420, 0xe98b: 0x6c024a20,
+-	0xe98f: 0x6c00f420,
+-	0xe991: 0x6c035e20, 0xe993: 0x6c035c20,
+-	0xe994: 0x6c2e6620, 0xe996: 0x6c2e6820,
+-	0xe998: 0x6c2e6a20, 0xe999: 0x6c2e6c20,
+-	0xe9a0: 0x6c2e6e20, 0xe9a2: 0x6c036020, 0xe9a3: 0x6c029e20,
+-	0xe9a4: 0x6c071820, 0xe9a5: 0x6c11cc20, 0xe9a7: 0x6c2e7220,
+-	0xe9a8: 0x6c2e7020,
+-	0xe9ad: 0x6c2e7420,
+-	0xe9b2: 0x6c013420,
+-	0xe9b9: 0x6c2e7a20, 0xe9bb: 0x6c2e7820,
+-	0xe9bc: 0x6c2e7620, 0xe9be: 0x6c2e7c20,
+-	// Block 0x3a7, offset 0xe9c0
+-	0xe9c3: 0x6c2e8220,
+-	0xe9c7: 0x6c004e20,
+-	0xe9ca: 0x6c2e7e20,
+-	0xe9cc: 0x6c2e8620, 0xe9cd: 0x6c2e8420,
+-	0xe9d4: 0x6c2e8a20, 0xe9d5: 0x6c2e8820, 0xe9d6: 0x6c2e8c20,
+-	0xe9d8: 0x6c104420,
+-	0xe9dc: 0x6c2e8e20,
+-	0xe9e1: 0x6c2e9020, 0xe9e2: 0x6c2e9420,
+-	0xe9e5: 0x6c2e9220,
+-	// Block 0x3a8, offset 0xea00
+-	0xea1c: 0x6c12f420,
+-	0xea21: 0x6c2e9620,
+-	0xea28: 0x6c2e9820, 0xea2a: 0x6c07e220,
+-	0xea2e: 0x6c2e9a20, 0xea2f: 0x6c2e9c20,
+-	0xea32: 0x6c142620,
+-	0xea3b: 0x6c0cd220,
+-	0xea3f: 0x6c000820,
+-	// Block 0x3a9, offset 0xea40
+-	0xea40: 0x6c0d8e20, 0xea42: 0x6c2e9e20,
+-	0xea44: 0x6c12f620,
+-	0xea4b: 0x6c2ea420,
+-	0xea4c: 0x6c2ea020, 0xea4d: 0x6c071a20, 0xea4f: 0x6c2ea220,
+-	0xea50: 0x6c062420,
+-	0xea5b: 0x6c136220,
+-	0xea5c: 0x6c2ea820, 0xea5d: 0x6c2eac20, 0xea5e: 0x6c2eaa20, 0xea5f: 0x6c2eae20,
+-	0xea62: 0x6c00be20, 0xea63: 0x6c0b7420,
+-	0xea64: 0x6c0a4420, 0xea65: 0x6c036220, 0xea66: 0x6c2eb020,
+-	0xea6a: 0x6c117020,
+-	0xea6c: 0x6c2eb420,
+-	0xea70: 0x6c00c020, 0xea72: 0x6c2eb220, 0xea73: 0x6c0ef820,
+-	0xea75: 0x6c166220, 0xea76: 0x6c103e20, 0xea77: 0x6c2ea620,
+-	0xea78: 0x6c161420, 0xea7a: 0x6c060220,
+-	0xea7d: 0x6c15c220,
+-	// Block 0x3aa, offset 0xea80
+-	0xea85: 0x6c051a20, 0xea86: 0x6c163020,
+-	0xea88: 0x6c053420, 0xea8a: 0x6c0dbc20, 0xea8b: 0x6c281020,
+-	0xea8d: 0x6c2eb620, 0xea8e: 0x6c024c20, 0xea8f: 0x6c0ba220,
+-	0xea94: 0x6c02a020, 0xea95: 0x6c2eba20, 0xea97: 0x6c2ebc20,
+-	0xea98: 0x6c2eb820, 0xea99: 0x6c05ac20, 0xea9b: 0x6c07d220,
+-	0xea9c: 0x6c0ace20,
+-	0xeaa0: 0x6c00c220, 0xeaa3: 0x6c167a20,
+-	0xeaa7: 0x6c2ec020,
+-	0xeaa8: 0x6c2d4e20, 0xeaaa: 0x6c2ebe20,
+-	0xeab0: 0x6c2ec620, 0xeab1: 0x6c2ec220, 0xeab2: 0x6c2ec420,
+-	0xeab4: 0x6c2ec820, 0xeab6: 0x6c2eca20, 0xeab7: 0x6c16a020,
+-	0xeab8: 0x6c2ecc20, 0xeab9: 0x6c2ece20, 0xeabb: 0x6c0c1220,
+-	0xeabc: 0x6c11d620,
+-	// Block 0x3ab, offset 0xeac0
+-	0xeac0: 0x6c0bbe20, 0xeac1: 0x6c037e20,
+-	0xeac4: 0x6c158020, 0xeac5: 0x6c021220, 0xeac6: 0x6c09bc20, 0xeac7: 0x6c065620,
+-	0xeac9: 0x6c2ed420, 0xeacb: 0x6c2ed220,
+-	0xeacc: 0x6c08ba20, 0xeacd: 0x6c2ed620, 0xeace: 0x6c2ed020,
+-	0xead1: 0x6c082420,
+-	0xead5: 0x6c2ede20, 0xead6: 0x6c2a5c20,
+-	0xead9: 0x6c190e20, 0xeadb: 0x6c0bb220,
+-	0xeadc: 0x6c2eda20,
+-	0xeae2: 0x6c161220, 0xeae3: 0x6c10ca20,
+-	0xeae8: 0x6c00d220, 0xeaea: 0x6c0c4620, 0xeaeb: 0x6c08fc20,
+-	0xeaf0: 0x6c134620, 0xeaf2: 0x6c00fc20,
+-	0xeaf6: 0x6c16a220, 0xeaf7: 0x6c15e220,
+-	0xeaf9: 0x6c2ee020, 0xeafb: 0x6c0fb620,
+-	// Block 0x3ac, offset 0xeb00
+-	0xeb00: 0x6c098620,
+-	0xeb04: 0x6c2ee220, 0xeb06: 0x6c2ee420, 0xeb07: 0x6c0b5c20,
+-	0xeb08: 0x6c2ee620, 0xeb0a: 0x6c16a420,
+-	0xeb0d: 0x6c2edc20, 0xeb0e: 0x6c2eea20, 0xeb0f: 0x6c2eee20,
+-	0xeb11: 0x6c2eec20, 0xeb13: 0x6c2ee820,
+-	0xeb16: 0x6c2ef020,
+-	0xeb19: 0x6c2ef220,
+-	0xeb1c: 0x6c0d3020, 0xeb1e: 0x6c01fc20,
+-	0xeb24: 0x6c2ef420, 0xeb27: 0x6c14c020,
+-	0xeb2a: 0x6c2ef620,
+-	0xeb30: 0x6c2ef820, 0xeb32: 0x6c16d820,
+-	0xeb38: 0x6c1f6020, 0xeb39: 0x6c2efa20,
+-	0xeb3d: 0x6c2efc20, 0xeb3e: 0x6c2efe20,
+-	// Block 0x3ad, offset 0xeb40
+-	0xeb42: 0x6c2f0620,
+-	0xeb44: 0x6c2f0020, 0xeb46: 0x6c2f0220,
+-	0xeb48: 0x6c2f0420, 0xeb49: 0x6c2f0820,
+-	0xeb52: 0x6c0c0820,
+-	0xeb56: 0x6c153e20,
+-	0xeb59: 0x6c0c0a20,
+-	0xeb5c: 0x6c2f0a20, 0xeb5e: 0x6c124620,
+-	0xeb60: 0x6c2f0c20, 0xeb61: 0x6c314420, 0xeb62: 0x6c14e820,
+-	0xeb64: 0x6c2f0e20, 0xeb66: 0x6c2f1020,
+-	0xeb68: 0x6c2f1220, 0xeb69: 0x6c02a220, 0xeb6b: 0x6c2f1620,
+-	0xeb6d: 0x6c0b7620,
+-	0xeb71: 0x6c2f1820,
+-	0xeb74: 0x6c052c20,
+-	0xeb79: 0x6c2f1a20, 0xeb7a: 0x6c2f2220,
+-	0xeb7c: 0x6c2f1e20,
+-	// Block 0x3ae, offset 0xeb80
+-	0xeb81: 0x6c2f2020,
+-	0xeb84: 0x6c02da20, 0xeb85: 0x6c2f1c20, 0xeb86: 0x6c2f2420,
+-	0xeb8b: 0x6c2f2620,
+-	0xeb8d: 0x6c005020, 0xeb8f: 0x6c2f2820,
+-	0xeb90: 0x6c2f2a20,
+-	0xeb98: 0x6c0ad020,
+-	0xeb9c: 0x6c2f2c20,
+-	0xeba0: 0x6c03fa20, 0xeba3: 0x6c2f3220,
+-	0xeba6: 0x6c2f3020,
+-	0xeba8: 0x6c2f2e20, 0xebab: 0x6c2ba020,
+-	0xebad: 0x6c139020,
+-	0xebb3: 0x6c2f3420,
+-	0xebb4: 0x6c2f3620,
+-	// Block 0x3af, offset 0xebc0
+-	0xebc3: 0x6c2f3820,
+-	0xebc6: 0x6c2f3a20,
+-	0xebc8: 0x6c2f3c20, 0xebcb: 0x6c2f3e20,
+-	0xebd3: 0x6c036420,
+-	0xebdc: 0x6c2f4020,
+-	0xebed: 0x6c2f4220, 0xebee: 0x6c10ea20,
+-	0xebf2: 0x6c2f4620, 0xebf3: 0x6c01ae20,
+-	0xebf5: 0x6c2f4c20, 0xebf6: 0x6c2f4a20,
+-	0xebfb: 0x6c00c420,
+-	0xebff: 0x6c04aa20,
+-	// Block 0x3b0, offset 0xec00
+-	0xec01: 0x6c136620, 0xec02: 0x6c0ee420, 0xec03: 0x6c075c20,
+-	0xec05: 0x6c071c20, 0xec06: 0x6c0a1a20,
+-	0xec08: 0x6c0b7c20,
+-	0xec0c: 0x6c2f5020, 0xec0f: 0x6c2f4e20,
+-	0xec10: 0x6c159020, 0xec11: 0x6c038020, 0xec12: 0x6c120420, 0xec13: 0x6c10a020,
+-	0xec17: 0x6c0bbc20,
+-	0xec18: 0x6c166420, 0xec1a: 0x6c059a20,
+-	0xec21: 0x6c2f5620,
+-	0xec24: 0x6c2f5420,
+-	0xec2c: 0x6c142a20, 0xec2d: 0x6c104020,
+-	0xec34: 0x6c011c20, 0xec37: 0x6c2f5820,
+-	0xec38: 0x6c2f5220, 0xec3b: 0x6c12be20,
+-	0xec3c: 0x6c15e020, 0xec3d: 0x6c2f5a20,
+-	// Block 0x3b1, offset 0xec40
+-	0xec46: 0x6c2f5c20,
+-	0xec4b: 0x6c2f6020,
+-	0xec4c: 0x6c0dcc20, 0xec4d: 0x6c02aa20, 0xec4e: 0x6c02ac20, 0xec4f: 0x6c2f5e20,
+-	0xec54: 0x6c038220, 0xec55: 0x6c060420,
+-	0xec58: 0x6c038420, 0xec5b: 0x6c0faa20,
+-	0xec5e: 0x6c168820,
+-	0xec67: 0x6c065820,
+-	0xec6b: 0x6c2f6220,
+-	0xec6f: 0x6c2f6420,
+-	0xec70: 0x6c2f6620, 0xec71: 0x6c2f6820, 0xec73: 0x6c2f6c20,
+-	0xec74: 0x6c2f6a20,
+-	// Block 0x3b2, offset 0xec80
+-	0xeca8: 0x6c130a20, 0xecaa: 0x6c2f6e20,
+-	0xecaf: 0x6c2f7020,
+-	0xecb1: 0x6c2f7220,
+-	0xecb6: 0x6c2f7420,
+-	// Block 0x3b3, offset 0xecc0
+-	0xecc3: 0x6c2f7820,
+-	0xecc4: 0x6c2f7620, 0xecc6: 0x6c2f7a20,
+-	0xecdb: 0x6c124820,
+-	0xecdc: 0x6c27aa20, 0xecdf: 0x6c0b1620,
+-	0xece2: 0x6c03d020,
+-	0xece9: 0x6c2f7c20, 0xeceb: 0x6c2f7e20,
+-	0xeced: 0x6c18ba20, 0xecee: 0x6c20ec20, 0xecef: 0x6c120620,
+-	0xecf2: 0x6c00b620,
+-	0xecf4: 0x6c003620,
+-	0xecfc: 0x6c08bc20, 0xecfd: 0x6c13f420, 0xecfe: 0x6c0b0420,
+-	// Block 0x3b4, offset 0xed00
+-	0xed03: 0x6c2f8020,
+-	0xed05: 0x6c150e20,
+-	0xed09: 0x6c2f8220, 0xed0a: 0x6c15c420,
+-	0xed0c: 0x6c010020,
+-	0xed10: 0x6c085620, 0xed12: 0x6c2f8420, 0xed13: 0x6c021420,
+-	0xed14: 0x6c2f8620,
+-	0xed18: 0x6c2f8820,
+-	0xed1d: 0x6c2f8c20, 0xed1e: 0x6c2f8e20,
+-	0xed20: 0x6c2f9220, 0xed21: 0x6c2f8a20,
+-	0xed24: 0x6c2f9020,
+-	0xed28: 0x6c036620,
+-	0xed2c: 0x6c2f9420, 0xed2e: 0x6c2f9620,
+-	0xed3d: 0x6c2f9820, 0xed3e: 0x6c2f9a20,
+-	// Block 0x3b5, offset 0xed40
+-	0xed42: 0x6c2f9c20,
+-	0xed45: 0x6c2fa020,
+-	0xed49: 0x6c2f9e20, 0xed4b: 0x6c2fa420,
+-	0xed4c: 0x6c2faa20,
+-	0xed50: 0x6c2fa220, 0xed51: 0x6c2fa620, 0xed52: 0x6c2fa820,
+-	0xed55: 0x6c2fac20, 0xed57: 0x6c04ac20,
+-	// Block 0x3b6, offset 0xed80
+-	0xed96: 0x6c097620, 0xed97: 0x6c2fae20,
+-	0xed98: 0x6c2fb020, 0xed99: 0x6c071e20,
+-	0xeda5: 0x6c2fb220,
+-	0xeda8: 0x6c027020,
+-	0xedac: 0x6c114220, 0xedad: 0x6c2fb420, 0xedae: 0x6c2fb620,
+-	0xedb3: 0x6c0e6820,
+-	0xedb4: 0x6c10be20,
+-	0xedbc: 0x6c2fb820,
+-	// Block 0x3b7, offset 0xedc0
+-	0xedc1: 0x6c119e20,
+-	0xedc4: 0x6c0d9020, 0xedc5: 0x6c012c20, 0xedc6: 0x6c050420,
+-	0xedc8: 0x6c050620,
+-	0xedd0: 0x6c0e9a20, 0xedd1: 0x6c2fc220, 0xedd2: 0x6c050820,
+-	0xedd5: 0x6c021620,
+-	0xedd8: 0x6c2fc020, 0xeddb: 0x6c2fbc20,
+-	0xeddd: 0x6c2fbe20, 0xeddf: 0x6c2fba20,
+-	0xede2: 0x6c2fd620,
+-	0xeded: 0x6c2fc420, 0xedee: 0x6c2fc620,
+-	0xedf1: 0x6c2fc820, 0xedf2: 0x6c2fca20,
+-	0xedf8: 0x6c2fce20, 0xedfb: 0x6c2fcc20,
+-	0xedff: 0x6c09fe20,
+-	// Block 0x3b8, offset 0xee00
+-	0xee01: 0x6c2fd020,
+-	0xee05: 0x6c2fd420,
+-	0xee0e: 0x6c03d220, 0xee0f: 0x6c2fd220,
+-	0xee12: 0x6c0d3220, 0xee13: 0x6c060620,
+-	0xee19: 0x6c2fd820,
+-	0xee28: 0x6c0d9220, 0xee2b: 0x6c2fda20,
+-	0xee30: 0x6c104220,
+-	0xee37: 0x6c2fdc20,
+-	0xee3e: 0x6c2fe620,
+-	// Block 0x3b9, offset 0xee40
+-	0xee40: 0x6c2fe220, 0xee42: 0x6c2fe020, 0xee43: 0x6c2fe420,
+-	0xee45: 0x6c2fde20,
+-	0xee4d: 0x6c2fea20,
+-	0xee55: 0x6c2fe820, 0xee57: 0x6c2fee20,
+-	0xee5a: 0x6c04ae20, 0xee5b: 0x6c2fec20,
+-	0xee5f: 0x6c2ff020,
+-	0xee62: 0x6c2ff220,
+-	0xee64: 0x6c2ff620, 0xee65: 0x6c2ff420,
+-	0xee69: 0x6c2ff820, 0xee6a: 0x6c2ffc20, 0xee6b: 0x6c2ffa20,
+-	// Block 0x3ba, offset 0xee80
+-	0xeea8: 0x6c075420,
+-	0xeead: 0x6c2ffe20,
+-	0xeeb0: 0x6c300020,
+-	0xeeb8: 0x6c026c20,
+-	0xeebc: 0x6c300220,
+-	// Block 0x3bb, offset 0xeec0
+-	0xeec0: 0x6c300420,
+-	0xeec4: 0x6c0ba620,
+-	0xeecf: 0x6c300620,
+-	0xeed1: 0x6c300820, 0xeed3: 0x6c300a20,
+-	0xeed4: 0x6c300c20,
+-	0xeed8: 0x6c072020,
+-	0xeede: 0x6c300e20, 0xeedf: 0x6c301020,
+-	0xeee2: 0x6c301220, 0xeee3: 0x6c301420,
+-	0xeee6: 0x6c301620,
+-	0xeeea: 0x6c11c220, 0xeeeb: 0x6c301a20,
+-	0xeeed: 0x6c126820, 0xeeee: 0x6c301c20, 0xeeef: 0x6c301820,
+-	0xeef1: 0x6c302020,
+-	0xeef4: 0x6c301e20, 0xeef7: 0x6c302220,
+-	0xeefb: 0x6c302420,
+-	// Block 0x3bc, offset 0xef00
+-	0xef06: 0x6c302620,
+-	0xef18: 0x6c302820, 0xef1a: 0x6c302a20,
+-	0xef1f: 0x6c302c20,
+-	0xef22: 0x6c302e20, 0xef23: 0x6c303020,
+-	0xef25: 0x6c303220, 0xef27: 0x6c303420,
+-	0xef28: 0x6c303620, 0xef29: 0x6c303820, 0xef2a: 0x6c303a20,
+-	0xef2e: 0x6c303c20, 0xef2f: 0x6c303e20,
+-	0xef31: 0x6c20e020, 0xef32: 0x6c304020,
+-	0xef3b: 0x6c268a20,
+-	0xef3c: 0x6c03d420,
+-	// Block 0x3bd, offset 0xef40
+-	0xef41: 0x6c023620, 0xef42: 0x6c077c20, 0xef43: 0x6c304420,
+-	0xef44: 0x6c304220, 0xef45: 0x6c149a20,
+-	0xef4d: 0x6c304820, 0xef4e: 0x6c304a20, 0xef4f: 0x6c304620,
+-	0xef51: 0x6c304c20,
+-	0xef54: 0x6c145820,
+-	0xef58: 0x6c304e20, 0xef5a: 0x6c046220,
+-	0xef6f: 0x6c16ce20,
+-	0xef74: 0x6c305020,
+-	// Block 0x3be, offset 0xef80
+-	0xef83: 0x6c305420,
+-	0xef8e: 0x6c003c20,
+-	0xef91: 0x6c305620, 0xef92: 0x6c132e20, 0xef93: 0x6c305220,
+-	0xef96: 0x6c305820, 0xef97: 0x6c305a20,
+-	0xef9f: 0x6c305c20,
+-	0xefa0: 0x6c305e20,
+-	0xefa8: 0x6c306020, 0xefaa: 0x6c147020, 0xefab: 0x6c082e20,
+-	0xefad: 0x6c080c20, 0xefae: 0x6c0c9a20,
+-	0xefb4: 0x6c306220,
+-	0xefb9: 0x6c306820,
+-	// Block 0x3bf, offset 0xefc0
+-	0xefc0: 0x6c306420,
+-	0xefc6: 0x6c306a20,
+-	0xefc9: 0x6c068220, 0xefca: 0x6c306620,
+-	0xefcf: 0x6c306c20,
+-	0xefd1: 0x6c306e20, 0xefd2: 0x6c307020,
+-	0xefd4: 0x6c307820, 0xefd6: 0x6c082820,
+-	0xefdb: 0x6c0dc020,
+-	0xefe1: 0x6c307a20, 0xefe2: 0x6c307420, 0xefe3: 0x6c307220,
+-	0xefe4: 0x6c307620,
+-	0xefe8: 0x6c05a220,
+-	0xeff0: 0x6c308220, 0xeff1: 0x6c308020, 0xeff2: 0x6c307e20,
+-	0xeff5: 0x6c002620,
+-	// Block 0x3c0, offset 0xf000
+-	0xf004: 0x6c309620, 0xf006: 0x6c308e20,
+-	0xf008: 0x6c309020, 0xf009: 0x6c308820, 0xf00a: 0x6c309420,
+-	0xf00c: 0x6c308c20, 0xf00d: 0x6c02b820,
+-	0xf010: 0x6c171c20, 0xf012: 0x6c309220, 0xf013: 0x6c308a20,
+-	0xf014: 0x6c308620, 0xf015: 0x6c308420,
+-	0xf01b: 0x6c309a20,
+-	0xf021: 0x6c30a020,
+-	0xf024: 0x6c309e20, 0xf025: 0x6c309c20,
+-	0xf02d: 0x6c12ae20, 0xf02e: 0x6c309820, 0xf02f: 0x6c00a620,
+-	0xf030: 0x6c30a220, 0xf032: 0x6c30a620,
+-	0xf039: 0x6c02d220, 0xf03a: 0x6c307c20, 0xf03b: 0x6c00ea20,
+-	0xf03e: 0x6c30aa20,
+-	// Block 0x3c1, offset 0xf040
+-	0xf046: 0x6c30a820, 0xf047: 0x6c30a420,
+-	0xf048: 0x6c0e0e20,
+-	0xf052: 0x6c147420,
+-	0xf057: 0x6c167c20,
+-	0xf05a: 0x6c30ac20,
+-	0xf060: 0x6c30ae20,
+-	0xf067: 0x6c30b020,
+-	0xf076: 0x6c30b220,
+-	0xf078: 0x6c30b420,
+-	// Block 0x3c2, offset 0xf080
+-	0xf0a5: 0x6c0ee620, 0xf0a7: 0x6c30b620,
+-	0xf0a9: 0x6c11ce20, 0xf0ab: 0x6c30c020,
+-	0xf0ac: 0x6c30b820,
+-	0xf0b0: 0x6c30ba20, 0xf0b3: 0x6c13f620,
+-	0xf0b4: 0x6c14d820, 0xf0b6: 0x6c108820,
+-	// Block 0x3c3, offset 0xf0c0
+-	0xf0c3: 0x6c30c220,
+-	0xf0c6: 0x6c30c420, 0xf0c7: 0x6c106420,
+-	0xf0c8: 0x6c30be20, 0xf0c9: 0x6c30bc20,
+-	0xf0ce: 0x6c018c20,
+-	0xf0d2: 0x6c30d420,
+-	0xf0d5: 0x6c30d220,
+-	0xf0db: 0x6c016620,
+-	0xf0df: 0x6c30ce20,
+-	0xf0e3: 0x6c30cc20,
+-	0xf0e6: 0x6c30c820,
+-	0xf0e8: 0x6c02ea20, 0xf0ea: 0x6c30c620, 0xf0eb: 0x6c08f420,
+-	0xf0ec: 0x6c018a20,
+-	0xf0fb: 0x6c072220,
+-	0xf0fe: 0x6c30da20, 0xf0ff: 0x6c30d820,
+-	// Block 0x3c4, offset 0xf100
+-	0xf101: 0x6c30d620,
+-	0xf104: 0x6c30d020, 0xf106: 0x6c30dc20,
+-	0xf108: 0x6c30de20,
+-	0xf110: 0x6c30e820, 0xf111: 0x6c30e620,
+-	0xf119: 0x6c30ea20,
+-	0xf11c: 0x6c00d620, 0xf11d: 0x6c30e020, 0xf11e: 0x6c30e220,
+-	0xf120: 0x6c074420, 0xf121: 0x6c14c220,
+-	0xf124: 0x6c30e420,
+-	0xf12c: 0x6c13f820, 0xf12f: 0x6c30f420,
+-	0xf132: 0x6c30ec20,
+-	0xf13a: 0x6c30f620,
+-	// Block 0x3c5, offset 0xf140
+-	0xf147: 0x6c30f020,
+-	0xf149: 0x6c30ee20,
+-	0xf14f: 0x6c059c20,
+-	0xf15a: 0x6c30f820,
+-	0xf164: 0x6c30fa20,
+-	0xf169: 0x6c30fc20, 0xf16b: 0x6c30f220,
+-	0xf16f: 0x6c30ca20,
+-	0xf172: 0x6c30fe20,
+-	0xf174: 0x6c0f3220,
+-	0xf178: 0x6c310620, 0xf17a: 0x6c310820, 0xf17b: 0x6c310420,
+-	// Block 0x3c6, offset 0xf180
+-	0xf181: 0x6c310220, 0xf182: 0x6c310e20,
+-	0xf184: 0x6c310020, 0xf186: 0x6c310a20,
+-	0xf18f: 0x6c310c20,
+-	0xf193: 0x6c311220,
+-	0xf199: 0x6c311020,
+-	0xf1a6: 0x6c311620,
+-	0xf1ad: 0x6c311820, 0xf1af: 0x6c311a20,
+-	0xf1b2: 0x6c171620,
+-	0xf1b8: 0x6c311420, 0xf1b9: 0x6c0dce20, 0xf1ba: 0x6c07f220,
+-	0xf1bd: 0x6c311c20,
+-	// Block 0x3c7, offset 0xf1c0
+-	0xf1da: 0x6c311e20, 0xf1db: 0x6c312020,
+-	0xf1de: 0x6c312220,
+-	// Block 0x3c8, offset 0xf200
+-	0xf235: 0x6c312420,
+-	0xf238: 0x6c060820, 0xf239: 0x6c312620,
+-	0xf23d: 0x6c312820, 0xf23f: 0x6c08ee20,
+-	// Block 0x3c9, offset 0xf240
+-	0xf241: 0x6c312a20,
+-	0xf248: 0x6c312c20, 0xf24b: 0x6c312e20,
+-	0xf24c: 0x6c313020,
+-	0xf251: 0x6c313620, 0xf252: 0x6c313220, 0xf253: 0x6c16fc20,
+-	0xf255: 0x6c313420, 0xf257: 0x6c16a620,
+-	0xf25d: 0x6c313820, 0xf25f: 0x6c167e20,
+-	0xf265: 0x6c313a20, 0xf266: 0x6c11a020,
+-	0xf269: 0x6c313c20, 0xf26a: 0x6c314020,
+-	0xf26d: 0x6c314220,
+-	0xf278: 0x6c313e20, 0xf279: 0x6c073620, 0xf27a: 0x6c14ea20, 0xf27b: 0x6c145a20,
+-	0xf27c: 0x6c1c4020, 0xf27e: 0x6c213620, 0xf27f: 0x6c148a20,
+-	// Block 0x3ca, offset 0xf280
+-	0xf284: 0x6c018e20,
+-	0xf28c: 0x6c314620, 0xf28d: 0x6c040c20, 0xf28e: 0x6c314820, 0xf28f: 0x6c314a20,
+-	0xf290: 0x6c314c20, 0xf292: 0x6c074620,
+-	0xf294: 0x6c314e20,
+-	0xf298: 0x6c235220, 0xf299: 0x6c150620, 0xf29b: 0x6c0dbe20,
+-	0xf29c: 0x6c315020, 0xf29d: 0x6c315420, 0xf29e: 0x6c315220,
+-	0xf2a0: 0x6c315620,
+-	0xf2a5: 0x6c315820,
+-	0xf2a8: 0x6c315a20,
+-	0xf2af: 0x6c315c20,
+-	0xf2b4: 0x6c315e20, 0xf2b6: 0x6c316020, 0xf2b7: 0x6c316220,
+-	0xf2b9: 0x6c316420, 0xf2bb: 0x6c316620,
+-	0xf2bc: 0x6c316820, 0xf2bd: 0x6c316a20,
+-	// Block 0x3cb, offset 0xf2c0
+-	0xf2c7: 0x6c316c20,
+-	0xf2c8: 0x6c316e20,
+-	0xf2ce: 0x6c0f7420,
+-	0xf2d3: 0x6c065a20,
+-	0xf2d5: 0x6c317220,
+-	0xf2e0: 0x6c0cd620, 0xf2e1: 0x6c317420,
+-	0xf2ec: 0x6c317620,
+-	0xf2fb: 0x6c125e20,
+-	0xf2fe: 0x6c317820,
+-	// Block 0x3cc, offset 0xf300
+-	0xf30a: 0x6c317a20, 0xf30b: 0x6c254c20,
+-	0xf30e: 0x6c2c2e20, 0xf30f: 0x6c2f4420,
+-	0xf312: 0x6c317c20,
+-	0xf314: 0x6c317e20,
+-	0xf31f: 0x6c318220,
+-	0xf320: 0x6c318420, 0xf321: 0x6c318620, 0xf322: 0x6c16a820, 0xf323: 0x6c318020,
+-	0xf326: 0x6c318820, 0xf327: 0x6c318a20,
+-	0xf32a: 0x6c318e20,
+-	0xf32c: 0x6c318c20,
+-	0xf332: 0x6c319220,
+-	0xf336: 0x6c319420, 0xf337: 0x6c319020,
+-	// Block 0x3cd, offset 0xf340
+-	0xf34d: 0x6c163420,
+-	0xf355: 0x6c319620,
+-	0xf35c: 0x6c319820, 0xf35d: 0x6c258620,
+-	0xf360: 0x6c319a20,
+-	// Block 0x3ce, offset 0xf380
+-	0xf380: 0x6c2bdc20, 0xf381: 0x6c06ce20, 0xf382: 0x6c093c20, 0xf383: 0x6c2c1020,
+-	0xf384: 0x6c02c820, 0xf385: 0x6c051c20, 0xf386: 0x6c04f620, 0xf387: 0x6c319820,
+-	0xf388: 0x6c319820, 0xf389: 0x6c056420, 0xf38a: 0x6c04ec20, 0xf38b: 0x6c19b020,
+-	0xf38c: 0x6c10a820, 0xf38d: 0x6c1dac20, 0xf38e: 0x6c245a20, 0xf38f: 0x6c15d620,
+-	0xf390: 0x6c29d420, 0xf391: 0x6c15d820, 0xf392: 0x6c15da20, 0xf393: 0x6c2d5e20,
+-	0xf394: 0x6c207020, 0xf395: 0x6c15e420, 0xf396: 0x6c22ae20, 0xf397: 0x6c237220,
+-	0xf398: 0x6c15e820, 0xf399: 0x6c15ea20, 0xf39a: 0x6c2fc820, 0xf39b: 0x6c174220,
+-	0xf39c: 0x6c15ee20, 0xf39d: 0x6c15f220, 0xf39e: 0x6c22f420, 0xf39f: 0x6c15f820,
+-	0xf3a0: 0x6c312220, 0xf3a1: 0x6c15f020, 0xf3a2: 0x6c15f420, 0xf3a3: 0x6c15f620,
+-	0xf3a4: 0x6c2b0220, 0xf3a5: 0x6c1e1420, 0xf3a6: 0x6c285620, 0xf3a7: 0x43103e20,
+-	0xf3a8: 0x6c16de20, 0xf3a9: 0x6c16e220, 0xf3aa: 0x6c16e820, 0xf3ab: 0x6c16ee20,
+-	0xf3ac: 0x6c16f820, 0xf3ad: 0x6c179220, 0xf3ae: 0x6c169020, 0xf3af: 0x6c18b420,
+-	0xf3b0: 0x42c98820, 0xf3b1: 0x6c16d020, 0xf3b2: 0x6c22f220, 0xf3b3: 0x6c249620,
+-	0xf3b4: 0x6c16f220, 0xf3b5: 0x6c29cc20, 0xf3b6: 0x6c163c20, 0xf3b7: 0x6c16d620,
+-	0xf3b8: 0x6c16d820, 0xf3b9: 0x6c16ce20, 0xf3ba: 0x6c07f220, 0xf3bb: 0x6c250420,
+-	0xf3bc: 0x6c254420, 0xf3bd: 0x42fb4020, 0xf3be: 0x43079220, 0xf3bf: 0x43260820,
+-	// Block 0x3cf, offset 0xf3c0
+-	0xf3c0: 0x6c08ee20, 0xf3c1: 0x6c170420, 0xf3c2: 0x6c1a9e20, 0xf3c3: 0x6c16e020,
+-	0xf3c4: 0x6c262620, 0xf3c5: 0x6c16f420, 0xf3c6: 0x6c16ec20, 0xf3c7: 0x6c251c20,
+-	0xf3c8: 0x6c16d420, 0xf3c9: 0x6c15e220, 0xf3ca: 0x6c1a9620, 0xf3cb: 0x42b8c420,
+-	0xf3cc: 0x6c209220, 0xf3cd: 0x42dbb420, 0xf3ce: 0x6c16ea20, 0xf3cf: 0x6c168620,
+-	0xf3d0: 0x6c271420, 0xf3d1: 0x6c2ea420, 0xf3d2: 0x6c2f1420, 0xf3d3: 0x6c170020,
+-	0xf3d4: 0x6c31a420, 0xf3d5: 0x6c164620, 0xf3d6: 0x6c165620, 0xf3d7: 0x6c003a20,
+-	0xf3d8: 0x6c126e20, 0xf3d9: 0x6c166220, 0xf3da: 0x6c2bc620, 0xf3db: 0x6c1dfe20,
+-	0xf3dc: 0x6c207020, 0xf3dd: 0x6c0dec20, 0xf3de: 0x6c0e1420, 0xf3df: 0x6c10fa20,
+-	0xf3e0: 0x6c0fe420, 0xf3e1: 0x6c161820, 0xf3e2: 0x6c007620, 0xf3e3: 0x6c142c20,
+-	0xf3e4: 0x42f1f620, 0xf3e5: 0x6c138820, 0xf3e6: 0x6c131420, 0xf3e7: 0x6c12c420,
+-	0xf3e8: 0x6c122e20, 0xf3e9: 0x6c1ed820, 0xf3ea: 0x6c080620, 0xf3eb: 0x6c190a20,
+-	0xf3ec: 0x6c07aa20, 0xf3ed: 0x6c0a9c20, 0xf3ee: 0x6c15b620, 0xf3ef: 0x43155420,
+-	0xf3f0: 0x6c082020, 0xf3f1: 0x6c0dfc20, 0xf3f2: 0x6c0ef020, 0xf3f3: 0x6c099820,
+-	0xf3f4: 0x6c095620, 0xf3f5: 0x6c161e20, 0xf3f6: 0x6c162020, 0xf3f7: 0x6c164020,
+-	0xf3f8: 0x6c182620, 0xf3f9: 0x6c185a20, 0xf3fa: 0x6c164c20, 0xf3fb: 0x6c165820,
+-	0xf3fc: 0x6c165a20, 0xf3fd: 0x6c165c20, 0xf3fe: 0x6c166020, 0xf3ff: 0x6c18c020,
+-	// Block 0x3d0, offset 0xf400
+-	0xf400: 0x6c16cc20, 0xf401: 0x6c0a3a20, 0xf402: 0x6c1c6220, 0xf403: 0x6c163a20,
+-	0xf404: 0x6c228020, 0xf405: 0x6c24f620, 0xf406: 0x6c2e7420, 0xf407: 0x6c2ffc20,
+-	0xf408: 0x6c16a620, 0xf409: 0x6c314820, 0xf40a: 0x6c166620, 0xf40b: 0x42cd8c20,
+-	0xf40c: 0x42d6ee20, 0xf40d: 0x6c2cf620, 0xf40e: 0x6c110220, 0xf40f: 0x6c16ba20,
+-	0xf410: 0x6c1dba20, 0xf411: 0x6c110820, 0xf412: 0x6c16bc20, 0xf413: 0x6c16be20,
+-	0xf414: 0x42e91220, 0xf415: 0x42f39420, 0xf416: 0x6c16c220, 0xf417: 0x6c16c420,
+-	0xf418: 0x6c2cdc20, 0xf419: 0x6c16c620, 0xf41a: 0x6c16c820, 0xf41b: 0x43269420,
+-	0xf41c: 0x6c16ae20, 0xf41d: 0x6c16b020, 0xf41e: 0x6c00ac20, 0xf41f: 0x6c16b220,
+-	0xf420: 0x6c16b420, 0xf421: 0x43155420, 0xf422: 0x6c16b620, 0xf423: 0x6c110420,
+-	0xf424: 0x6c110620, 0xf425: 0x42d75c20, 0xf426: 0x6c16c020, 0xf427: 0x6c235e20,
+-	0xf428: 0x6c168a20, 0xf429: 0x6c1a1220, 0xf42a: 0x6c10fa20, 0xf42b: 0x6c169420,
+-	0xf42c: 0x6c169620, 0xf42d: 0x6c169820, 0xf42e: 0x6c238e20, 0xf42f: 0x6c278420,
+-	0xf430: 0x6c27c420, 0xf431: 0x6c169e20, 0xf432: 0x6c16a220, 0xf433: 0x6c2f0420,
+-	0xf434: 0x6c166420, 0xf435: 0x6c168e20, 0xf436: 0x6c255020, 0xf437: 0x6c2d9a20,
+-	0xf438: 0x6c2ecc20, 0xf439: 0x6c1d1a20, 0xf43a: 0x6c163e20, 0xf43b: 0x6c164220,
+-	0xf43c: 0x6c164820, 0xf43d: 0x6c10e820, 0xf43e: 0x6c164a20, 0xf43f: 0x6c207020,
+-	// Block 0x3d1, offset 0xf440
+-	0xf440: 0x6c22e020, 0xf441: 0x6c165220, 0xf442: 0x6c297e20, 0xf443: 0x6c165e20,
+-	0xf444: 0x6c163420, 0xf445: 0x6c1f2a20, 0xf446: 0x6c2e9a20, 0xf447: 0x6c162220,
+-	0xf448: 0x42cef620, 0xf449: 0x6c154020, 0xf44a: 0x6c162420, 0xf44b: 0x6c162620,
+-	0xf44c: 0x6c162820, 0xf44d: 0x6c162a20, 0xf44e: 0x6c162c20, 0xf44f: 0x6c128220,
+-	0xf450: 0x6c168820, 0xf451: 0x6c16fa20, 0xf452: 0x6c1dce20, 0xf453: 0x6c161420,
+-	0xf454: 0x6c166a20, 0xf455: 0x6c1bde20, 0xf456: 0x6c21cc20, 0xf457: 0x6c167820,
+-	0xf458: 0x6c161620, 0xf459: 0x6c1d6020, 0xf45a: 0x6c053820, 0xf45b: 0x6c161820,
+-	0xf45c: 0x6c163020, 0xf45d: 0x6c15fc20, 0xf45e: 0x6c15fe20, 0xf45f: 0x6c160020,
+-	0xf460: 0x6c006e20, 0xf461: 0x6c160220, 0xf462: 0x6c160420, 0xf463: 0x6c0f7620,
+-	0xf464: 0x6c160620, 0xf465: 0x6c160a20, 0xf466: 0x6c1da420, 0xf467: 0x6c160c20,
+-	0xf468: 0x6c160e20, 0xf469: 0x6c161020, 0xf46a: 0x6c161220, 0xf46b: 0x6c106620,
+-	0xf46c: 0x6c0f8820, 0xf46d: 0x6c193020, 0xf46e: 0x6c167220, 0xf46f: 0x42e93020,
+-	0xf470: 0x6c29ca20, 0xf471: 0x6c167a20, 0xf472: 0x6c167c20, 0xf473: 0x6c167e20,
+-	0xf474: 0x6c166e20, 0xf475: 0x6c167020, 0xf476: 0x6c167620, 0xf477: 0x6c161a20,
+-	0xf478: 0x6c02b020, 0xf479: 0x6c162e20, 0xf47a: 0x42e58020, 0xf47b: 0x6c229820,
+-	0xf47c: 0x6c08f220, 0xf47d: 0x6c09c020, 0xf47e: 0x6c0e7a20, 0xf47f: 0x6c086620,
+-	// Block 0x3d2, offset 0xf480
+-	0xf480: 0x6c0c3420, 0xf481: 0x6c0fde20, 0xf482: 0x6c0dde20, 0xf483: 0x6c102420,
+-	0xf484: 0x6c0dd820, 0xf485: 0x6c105420, 0xf486: 0x6c140e20, 0xf487: 0x6c2ce020,
+-	0xf488: 0x6c070420, 0xf489: 0x6c071a20, 0xf48a: 0x6c05f620, 0xf48b: 0x6c028220,
+-	0xf48c: 0x6c181a20, 0xf48d: 0x42ab8020, 0xf48e: 0x43f41c20, 0xf48f: 0x43f41e20,
+-	0xf490: 0x6c0f0a20, 0xf491: 0x43f42220, 0xf492: 0x6c0be420, 0xf493: 0x43f42620,
+-	0xf494: 0x43f42820, 0xf495: 0x42a3bc20, 0xf496: 0x6c0ea020, 0xf497: 0x6c012a20,
+-	0xf498: 0x6c169a20, 0xf499: 0x6c0b4420, 0xf49a: 0x6c0aa220, 0xf49b: 0x6c131a20,
+-	0xf49c: 0x6c153e20, 0xf49d: 0x6c0bf420, 0xf49e: 0x6c00ce20, 0xf49f: 0x43f43e20,
+-	0xf4a0: 0x430c2420, 0xf4a1: 0x43f44220, 0xf4a2: 0x6c0a3420, 0xf4a3: 0x43f44620,
+-	0xf4a4: 0x43f44820, 0xf4a5: 0x6c009e20, 0xf4a6: 0x6c0fd420, 0xf4a7: 0x43f44e20,
+-	0xf4a8: 0x43f45020, 0xf4a9: 0x43f45220, 0xf4aa: 0x6c120620, 0xf4ab: 0x6c08bc20,
+-	0xf4ac: 0x6c036620, 0xf4ad: 0x6c0f3220, 0xf4ae: 0x4321bc20, 0xf4af: 0x6c16a020,
+-	0xf4b0: 0x6c12f820, 0xf4b1: 0x6c0cd820, 0xf4b2: 0x6c14e020, 0xf4b3: 0x6c138a20,
+-	0xf4b4: 0x6c04c820, 0xf4b5: 0x6c121820, 0xf4b6: 0x6c02be20, 0xf4b7: 0x6c0e1820,
+-	0xf4b8: 0x6c038e20, 0xf4b9: 0x6c135220, 0xf4ba: 0x6c143220, 0xf4bb: 0x6c0cec20,
+-	0xf4bc: 0x6c1b9c20, 0xf4bd: 0x6c022a20, 0xf4be: 0x6c025c20, 0xf4bf: 0x6c0d3820,
+-	// Block 0x3d3, offset 0xf4c0
+-	0xf4c0: 0x6c0ec020, 0xf4c1: 0x6c12c020, 0xf4c2: 0x6c03a620, 0xf4c3: 0x6c0a2220,
+-	0xf4c4: 0x6c116220, 0xf4c5: 0x6c023c20, 0xf4c6: 0x6c0a2620, 0xf4c7: 0x6c033220,
+-	0xf4c8: 0x6c093220, 0xf4c9: 0x42e45620, 0xf4ca: 0x6c0de420, 0xf4cb: 0x6c123420,
+-	0xf4cc: 0x6c093420, 0xf4cd: 0x6c089a20, 0xf4ce: 0x6c03ba20, 0xf4cf: 0x6c157420,
+-	0xf4d0: 0x6c0cc420, 0xf4d1: 0x6c09e220, 0xf4d2: 0x6c01dc20, 0xf4d3: 0x6c0f5e20,
+-	0xf4d4: 0x6c074020, 0xf4d5: 0x6c108220, 0xf4d6: 0x6c0c4220, 0xf4d7: 0x6c16c220,
+-	0xf4d8: 0x6c270220, 0xf4d9: 0x6c11f620, 0xf4da: 0x6c0a2c20, 0xf4db: 0x6c093820,
+-	0xf4dc: 0x6c09a620, 0xf4dd: 0x4304f220, 0xf4de: 0x4304f220, 0xf4df: 0x6c0ea420,
+-	0xf4e0: 0x6c02cc20, 0xf4e1: 0x6c08aa20, 0xf4e2: 0x6c013020, 0xf4e3: 0x6c04e820,
+-	0xf4e4: 0x6c12bc20, 0xf4e5: 0x6c0d3e20, 0xf4e6: 0x431f6c20, 0xf4e7: 0x6c009e20,
+-	0xf4e8: 0x6c10ca20, 0xf4e9: 0x6c04aa20, 0xf4ea: 0x6c12be20, 0xf4eb: 0x6c056a20,
+-	0xf4ec: 0x4885dc20, 0xf4ed: 0x6c036820,
+-	0xf4f0: 0x6c135c20, 0xf4f1: 0x6c185420, 0xf4f2: 0x6c0ca420, 0xf4f3: 0x429f0020,
+-	0xf4f4: 0x6c09c420, 0xf4f5: 0x6c182c20, 0xf4f6: 0x6c155820, 0xf4f7: 0x6c094620,
+-	0xf4f8: 0x6c02be20, 0xf4f9: 0x42aaaa20, 0xf4fa: 0x6c199620, 0xf4fb: 0x42abc420,
+-	0xf4fc: 0x6c0f0a20, 0xf4fd: 0x6c133620, 0xf4fe: 0x6c014020, 0xf4ff: 0x6c144a20,
+-	// Block 0x3d4, offset 0xf500
+-	0xf500: 0x6c1b0820, 0xf501: 0x42b65020, 0xf502: 0x42bda420, 0xf503: 0x42bdb220,
+-	0xf504: 0x6c07b020, 0xf505: 0x6c1cb620, 0xf506: 0x6c1d2c20, 0xf507: 0x6c0b2e20,
+-	0xf508: 0x6c154820, 0xf509: 0x6c0d3820, 0xf50a: 0x42c2c020, 0xf50b: 0x6c0ec020,
+-	0xf50c: 0x6c0da620, 0xf50d: 0x6c1e5820, 0xf50e: 0x6c1e2c20, 0xf50f: 0x42c8a420,
+-	0xf510: 0x6c1eca20, 0xf511: 0x6c0be420, 0xf512: 0x6c16e220, 0xf513: 0x6c141020,
+-	0xf514: 0x6c0aee20, 0xf515: 0x6c210220, 0xf516: 0x6c082020, 0xf517: 0x6c162420,
+-	0xf518: 0x42ddb620, 0xf519: 0x6c08d420, 0xf51a: 0x6c033220, 0xf51b: 0x6c109020,
+-	0xf51c: 0x6c093220, 0xf51d: 0x42ef4e20, 0xf51e: 0x6c094e20, 0xf51f: 0x6c11f020,
+-	0xf520: 0x6c0ea020, 0xf521: 0x42e8e220, 0xf522: 0x42ea0c20, 0xf523: 0x6c020820,
+-	0xf524: 0x42ec3a20, 0xf525: 0x6c243820, 0xf526: 0x6c012a20, 0xf527: 0x6c0bf220,
+-	0xf528: 0x6c0eec20, 0xf529: 0x42ee9420, 0xf52a: 0x6c0e7e20, 0xf52b: 0x42f19820,
+-	0xf52c: 0x42f56220, 0xf52d: 0x6c0c4220, 0xf52e: 0x42f8f620, 0xf52f: 0x6c26c220,
+-	0xf530: 0x6c16c220, 0xf531: 0x42fe7c20, 0xf532: 0x6c093820, 0xf533: 0x6c070220,
+-	0xf534: 0x6c01ec20, 0xf535: 0x430ef220, 0xf536: 0x6c2aee20, 0xf537: 0x6c132020,
+-	0xf538: 0x6c08aa20, 0xf539: 0x6c0ed820, 0xf53a: 0x6c0a3420, 0xf53b: 0x6c0c0220,
+-	0xf53c: 0x6c013020, 0xf53d: 0x6c0dec20, 0xf53e: 0x6c154e20, 0xf53f: 0x6c04e820,
+-	// Block 0x3d5, offset 0xf540
+-	0xf540: 0x6c1ede20, 0xf541: 0x6c0d3e20, 0xf542: 0x6c155020, 0xf543: 0x6c2d5020,
+-	0xf544: 0x43233220, 0xf545: 0x4324ec20, 0xf546: 0x432cf820, 0xf547: 0x6c10ca20,
+-	0xf548: 0x6c153e20, 0xf549: 0x432fb620, 0xf54a: 0x6c04aa20, 0xf54b: 0x43301620,
+-	0xf54c: 0x6c12be20, 0xf54d: 0x43362420, 0xf54e: 0x6c319820, 0xf54f: 0x48509420,
+-	0xf550: 0x48508820, 0xf551: 0x4867aa20, 0xf552: 0x44773a20, 0xf553: 0x44803020,
+-	0xf554: 0x44807220, 0xf555: 0x48a49220, 0xf556: 0x48b9a020, 0xf557: 0x48fda620,
+-	0xf558: 0x433e8620, 0xf559: 0x433f1c20,
+-	// Block 0x3d6, offset 0xf580
+-	0xf581: 0x4002ba20, 0xf582: 0xe00037ec, 0xf583: 0x4004ea20,
+-	0xf584: 0x4027de20, 0xf585: 0x4004ec20, 0xf586: 0xe00037dc, 0xf587: 0x4003d220,
+-	0xf588: 0x4003f420, 0xf589: 0x4003f620, 0xf58a: 0x4004d820, 0xf58b: 0x40093820,
+-	0xf58c: 0x40024020, 0xf58d: 0x40021a20, 0xf58e: 0x4002e420, 0xf58f: 0x4004e220,
+-	0xf590: 0x4029cc20, 0xf591: 0x4029ce20, 0xf592: 0x4029d020, 0xf593: 0x4029d220,
+-	0xf594: 0x4029d420, 0xf595: 0x4029d620, 0xf596: 0x4029d820, 0xf597: 0x4029da20,
+-	0xf598: 0x4029dc20, 0xf599: 0x4029de20, 0xf59a: 0x40026c20, 0xf59b: 0x40026220,
+-	0xf59c: 0xe00037e7, 0xf59d: 0x40094220, 0xf59e: 0xe00037e2, 0xf59f: 0x4002c420,
+-	0xf5a0: 0x4004d620, 0xf5a1: 0x002bde88, 0xf5a2: 0x002c0a88, 0xf5a3: 0x002c3a88,
+-	0xf5a4: 0x002c6288, 0xf5a5: 0x002c9888, 0xf5a6: 0x002d0888, 0xf5a7: 0x002d2288,
+-	0xf5a8: 0x002d6888, 0xf5a9: 0x002d9a88, 0xf5aa: 0x002dcc88, 0xf5ab: 0x002dfe88,
+-	0xf5ac: 0x002e2288, 0xf5ad: 0x002e8288, 0xf5ae: 0x002e9e88, 0xf5af: 0x002ee288,
+-	0xf5b0: 0x002f2c88, 0xf5b1: 0x002f5688, 0xf5b2: 0x002f7a88, 0xf5b3: 0x002fe688,
+-	0xf5b4: 0x00302c88, 0xf5b5: 0x00306c88, 0xf5b6: 0x0030be88, 0xf5b7: 0x0030e288,
+-	0xf5b8: 0x0030f688, 0xf5b9: 0x00310088, 0xf5ba: 0x00312a88, 0xf5bb: 0x4003f820,
+-	0xf5bc: 0x4003d220, 0xf5bd: 0x4003fa20, 0xf5be: 0x40062420, 0xf5bf: 0x40021620,
+-	// Block 0x3d7, offset 0xf5c0
+-	0xf5c0: 0x40061e20, 0xf5c1: 0x402bde20, 0xf5c2: 0x402c0a20, 0xf5c3: 0x402c3a20,
+-	0xf5c4: 0x402c6220, 0xf5c5: 0x402c9820, 0xf5c6: 0x402d0820, 0xf5c7: 0x402d2220,
+-	0xf5c8: 0x402d6820, 0xf5c9: 0x402d9a20, 0xf5ca: 0x402dcc20, 0xf5cb: 0x402dfe20,
+-	0xf5cc: 0x402e2220, 0xf5cd: 0x402e8220, 0xf5ce: 0x402e9e20, 0xf5cf: 0x402ee220,
+-	0xf5d0: 0x402f2c20, 0xf5d1: 0x402f5620, 0xf5d2: 0x402f7a20, 0xf5d3: 0x402fe620,
+-	0xf5d4: 0x40302c20, 0xf5d5: 0x40306c20, 0xf5d6: 0x4030be20, 0xf5d7: 0x4030e220,
+-	0xf5d8: 0x4030f620, 0xf5d9: 0x40310020, 0xf5da: 0x40312a20, 0xf5db: 0x4003fc20,
+-	0xf5dc: 0x40094820, 0xf5dd: 0x4003fe20, 0xf5de: 0x40094c20, 0xf5df: 0x00041883,
+-	0xf5e0: 0x00041a83, 0xf5e1: 0x40030420, 0xf5e2: 0x4004a420, 0xf5e3: 0x4004a620,
+-	0xf5e4: 0x40025c20, 0xf5e5: 0x00023e92, 0xf5e6: 0xca2835c1, 0xf5e7: 0xc6393241,
+-	0xf5e8: 0xc7093241, 0xf5e9: 0xc7c935c1, 0xf5ea: 0xc8b03241, 0xf5eb: 0xc9653241,
+-	0xf5ec: 0xc6d43241, 0xf5ed: 0xc89b3241, 0xf5ee: 0xca093241, 0xf5ef: 0xc83435c1,
+-	0xf5f0: 0x0027d692, 0xf5f1: 0xc63f3241, 0xf5f2: 0xc70f3241, 0xf5f3: 0xc7de35c1,
+-	0xf5f4: 0xc8b63241, 0xf5f5: 0xc96b3241, 0xf5f6: 0xc6523241, 0xf5f7: 0xc72235c1,
+-	0xf5f8: 0xc80035c1, 0xf5f9: 0xc8c93241, 0xf5fa: 0xc97e35c1, 0xf5fb: 0xc66b35c1,
+-	0xf5fc: 0xc74435c1, 0xf5fd: 0xc82235c1, 0xf5fe: 0xc8e235c1, 0xf5ff: 0xc99b35c1,
+-	// Block 0x3d8, offset 0xf600
+-	0xf600: 0xc68835c1, 0xf601: 0xc76135c1, 0xf602: 0xc84935c1, 0xf603: 0xc8ff35c1,
+-	0xf604: 0xc9bd35c1, 0xf605: 0xc6983241, 0xf606: 0xc7713241, 0xf607: 0xc85c3241,
+-	0xf608: 0xc90f3241, 0xf609: 0xc9cd3241, 0xf60a: 0xc6b635c1, 0xf60b: 0xc78f35c1,
+-	0xf60c: 0xc87a35c1, 0xf60d: 0xc92d35c1, 0xf60e: 0xc9eb35c1, 0xf60f: 0xc6ce3241,
+-	0xf610: 0xc7a73241, 0xf611: 0xc8953241, 0xf612: 0xc9453241, 0xf613: 0xca033241,
+-	0xf614: 0xc6da3241, 0xf615: 0xc8a13241, 0xf616: 0xca0f3241, 0xf617: 0xc6e33241,
+-	0xf618: 0xc7b03241, 0xf619: 0xc8aa3241, 0xf61a: 0xc94e3241, 0xf61b: 0xca183241,
+-	0xf61c: 0xc6fd35c1, 0xf61d: 0xca313aa1, 0xf61e: 0xa0012812, 0xf61f: 0xa0012912,
+-	0xf620: 0x4063a620, 0xf621: 0x4062ac20, 0xf622: 0x4062ae20, 0xf623: 0x40646820,
+-	0xf624: 0x4062b020, 0xf625: 0x40646c20, 0xf626: 0x40646e20, 0xf627: 0x4062b220,
+-	0xf628: 0x4062b420, 0xf629: 0x4062b620, 0xf62a: 0x40647420, 0xf62b: 0x40647620,
+-	0xf62c: 0x40647820, 0xf62d: 0x40647a20, 0xf62e: 0x40647c20, 0xf62f: 0x40647e20,
+-	0xf630: 0x4062e020, 0xf631: 0x4062b820, 0xf632: 0x4062ba20, 0xf633: 0x4062bc20,
+-	0xf634: 0x4062ee20, 0xf635: 0x4062be20, 0xf636: 0x4062c020, 0xf637: 0x4062c220,
+-	0xf638: 0x4062c420, 0xf639: 0x4062c620, 0xf63a: 0x4062c820, 0xf63b: 0x4062ca20,
+-	0xf63c: 0x4062cc20, 0xf63d: 0x4062ce20, 0xf63e: 0x4062d020,
+-	// Block 0x3d9, offset 0xf640
+-	0xf642: 0x4063a820, 0xf643: 0x4063aa20,
+-	0xf644: 0x4063ac20, 0xf645: 0x4063ae20, 0xf646: 0x4063b020, 0xf647: 0x4063b220,
+-	0xf64a: 0x4063b420, 0xf64b: 0x4063b620,
+-	0xf64c: 0x4063b820, 0xf64d: 0x4063ba20, 0xf64e: 0x4063bc20, 0xf64f: 0x4063be20,
+-	0xf652: 0x4063c020, 0xf653: 0x4063c220,
+-	0xf654: 0x4063c420, 0xf655: 0x4063c620, 0xf656: 0x4063c820, 0xf657: 0x4063ca20,
+-	0xf65a: 0x4063cc20, 0xf65b: 0x4063ce20,
+-	0xf65c: 0x4063d020,
+-	0xf660: 0x4027dc20, 0xf661: 0x4027e020, 0xf662: 0x40094620, 0xf663: 0x40021220,
+-	0xf664: 0x40094a20, 0xf665: 0x4027e220, 0xf666: 0x40280820,
+-	0xf668: 0x400d3220, 0xf669: 0x40084420, 0xf66a: 0x40084820, 0xf66b: 0x40084620,
+-	0xf66c: 0x40084a20, 0xf66d: 0x400e6e20, 0xf66e: 0x400ec420,
+-	0xf679: 0xa0000000, 0xf67a: 0xa0000000, 0xf67b: 0xa0000000,
+-	0xf67c: 0x4027ae20, 0xf67d: 0x4027b020, 0xf67e: 0x00000285, 0xf67f: 0x2bfffe85,
+-	// Block 0x3da, offset 0xf680
+-	0xf680: 0xe00037d0, 0xf681: 0xe00037b8, 0xf682: 0xe00037bc, 0xf683: 0xe00037c4,
+-	0xf684: 0xe00037d4, 0xf685: 0xe00037c8, 0xf686: 0xe00037d8, 0xf687: 0xe00037c0,
+-	0xf688: 0xe00037cc,
+-	0xf690: 0x02bf2e86, 0xf691: 0x02a7de86,
+-	// Block 0x3db, offset 0xf6c0
+-	0xf6c0: 0x429c7a20, 0xf6c1: 0x6c036a20, 0xf6c2: 0x429c8220, 0xf6c3: 0x48024420,
+-	0xf6c4: 0x429ec020, 0xf6c5: 0x6c12f820, 0xf6c6: 0x429f7620, 0xf6c7: 0x42a00420,
+-	0xf6c8: 0x42a0f420, 0xf6c9: 0x6c124e20, 0xf6ca: 0x6c0cd820, 0xf6cb: 0x6c0d3420,
+-	0xf6cc: 0x44693c20, 0xf6cd: 0x480c7420, 0xf6ce: 0x6c14e020, 0xf6cf: 0x6c182020,
+-	0xf6d0: 0x42a2c820, 0xf6d1: 0x6c050a20, 0xf6d2: 0x480a3820, 0xf6d3: 0x44697220,
+-	0xf6d4: 0x42a2ce20, 0xf6d5: 0x6c07a420, 0xf6d6: 0x480a9620, 0xf6d7: 0x6c0ada20,
+-	0xf6d8: 0x6c184020, 0xf6d9: 0x429d9820, 0xf6da: 0x6c0fea20, 0xf6db: 0x6c185420,
+-	0xf6dc: 0x4923be20, 0xf6dd: 0x6c186820, 0xf6de: 0x6c0b6220, 0xf6df: 0x4469be20,
+-	0xf6e0: 0x6c073a20, 0xf6e1: 0x42a48c20, 0xf6e2: 0x6c02bc20, 0xf6e3: 0x42a4ee20,
+-	0xf6e4: 0x446a2a20, 0xf6e5: 0x6c155820, 0xf6e6: 0x6c138a20, 0xf6e7: 0x6c04c820,
+-	0xf6e8: 0x6c094620, 0xf6e9: 0x6c13ba20, 0xf6ea: 0x6c18c620, 0xf6eb: 0x6c142c20,
+-	0xf6ec: 0x6c18e820, 0xf6ed: 0x6c121820, 0xf6ee: 0x6c118020, 0xf6ef: 0x6c0d4820,
+-	0xf6f0: 0x42a6fa20, 0xf6f1: 0x6c047c20, 0xf6f2: 0x6c047c20, 0xf6f3: 0x6c047c20,
+-	0xf6f4: 0x48145820, 0xf6f5: 0x6c023e20, 0xf6f6: 0x6c042020, 0xf6f7: 0x6c191020,
+-	0xf6f8: 0x4816c620, 0xf6f9: 0x6c047e20, 0xf6fa: 0x6c090020, 0xf6fb: 0x42a80c20,
+-	0xf6fc: 0x42a93c20, 0xf6fd: 0x6c042220, 0xf6fe: 0x6c0f4020, 0xf6ff: 0x6c098c20,
+-	// Block 0x3dc, offset 0xf700
+-	0xf700: 0x6c195220, 0xf701: 0x42a9ec20, 0xf702: 0x6c0ff020, 0xf703: 0x6c055c20,
+-	0xf704: 0x6c198220, 0xf705: 0x6c0c9e20, 0xf706: 0x6c0c9e20, 0xf707: 0x6c199620,
+-	0xf708: 0x6c040020, 0xf709: 0x42ab6620, 0xf70a: 0x42ab8420, 0xf70b: 0x6c1a2620,
+-	0xf70c: 0x6c0e1820, 0xf70d: 0x42ae2e20, 0xf70e: 0x42aca220, 0xf70f: 0x6c133420,
+-	0xf710: 0x6c0c3420, 0xf711: 0x6c0ce420, 0xf712: 0x6c0ade20, 0xf713: 0x6c0b0220,
+-	0xf714: 0x42b01a20, 0xf715: 0x6c056220, 0xf716: 0x42b06420, 0xf717: 0x6c13be20,
+-	0xf718: 0x42b15820, 0xf719: 0x4829c820, 0xf71a: 0x6c116c20, 0xf71b: 0x6c0f2620,
+-	0xf71c: 0x42b20c20, 0xf71d: 0x6c0d7620, 0xf71e: 0x6c14b820, 0xf71f: 0x6c1ace20,
+-	0xf720: 0x482d5020, 0xf721: 0x482dd420, 0xf722: 0x42b3d820, 0xf723: 0x42b43620,
+-	0xf724: 0x42b44e20, 0xf725: 0x42b3b020, 0xf726: 0x6c12cc20, 0xf727: 0x446ddc20,
+-	0xf728: 0x446df820, 0xf729: 0x42b61020, 0xf72a: 0x6c1b3420, 0xf72b: 0x6c1b3420,
+-	0xf72c: 0x48339020, 0xf72d: 0x6c1b5c20, 0xf72e: 0x42b7b020, 0xf72f: 0x6c10fa20,
+-	0xf730: 0x6c1b7620, 0xf731: 0x48363020, 0xf732: 0x6c097e20, 0xf733: 0x6c0a6220,
+-	0xf734: 0x6c101820, 0xf735: 0x6c1b8420, 0xf736: 0x446f0220, 0xf737: 0x6c0fc220,
+-	0xf738: 0x6c1b9c20, 0xf739: 0x42b98020, 0xf73a: 0x42b91a20, 0xf73b: 0x483bc820,
+-	0xf73c: 0x42ba8620, 0xf73d: 0x483bcc20, 0xf73e: 0x42badc20, 0xf73f: 0x42bad620,
+-	// Block 0x3dd, offset 0xf740
+-	0xf740: 0x42baf820, 0xf741: 0x6c0a1420, 0xf742: 0x42bbc420, 0xf743: 0x44705e20,
+-	0xf744: 0x6c0e0220, 0xf745: 0x42bc5020, 0xf746: 0x6c140620, 0xf747: 0x42bcd220,
+-	0xf748: 0x4470c420, 0xf749: 0x48430620, 0xf74a: 0x4470f820, 0xf74b: 0x42bd6020,
+-	0xf74c: 0x42bd6620, 0xf74d: 0x6c0a2820, 0xf74e: 0x6c16de20, 0xf74f: 0x49472420,
+-	0xf750: 0x6c1c6e20, 0xf751: 0x48466220, 0xf752: 0x48466220, 0xf753: 0x6c286820,
+-	0xf754: 0x42be4420, 0xf755: 0x42be4420, 0xf756: 0x44718e20, 0xf757: 0x48657020,
+-	0xf758: 0x48c3b420, 0xf759: 0x6c056620, 0xf75a: 0x6c0ebc20, 0xf75b: 0x4471c620,
+-	0xf75c: 0x42bf3420, 0xf75d: 0x6c10f020, 0xf75e: 0x6c088020, 0xf75f: 0x42bff220,
+-	0xf760: 0x6c1d0220, 0xf761: 0x44727420, 0xf762: 0x44723820, 0xf763: 0x6c022a20,
+-	0xf764: 0x484da820, 0xf765: 0x6c109620, 0xf766: 0x6c08cc20, 0xf767: 0x6c06c020,
+-	0xf768: 0x6c0b2e20, 0xf769: 0x6c06c020, 0xf76a: 0x42c2f420, 0xf76b: 0x6c0d3820,
+-	0xf76c: 0x6c05da20, 0xf76d: 0x6c133820, 0xf76e: 0x42c35e20, 0xf76f: 0x42c3bc20,
+-	0xf770: 0x6c0ec020, 0xf771: 0x6c1dac20, 0xf772: 0x6c0bdc20, 0xf773: 0x6c1dc620,
+-	0xf774: 0x42c4ba20, 0xf775: 0x6c13cc20, 0xf776: 0x6c1df220, 0xf777: 0x6c1e2620,
+-	0xf778: 0x48561820, 0xf779: 0x6c120820, 0xf77a: 0x42c5f820, 0xf77b: 0x6c092c20,
+-	0xf77c: 0x6c0cf620, 0xf77d: 0x42c7c820, 0xf77e: 0x4857e220, 0xf77f: 0x42c84420,
+-	// Block 0x3de, offset 0xf780
+-	0xf780: 0x42c78a20, 0xf781: 0x6c014820, 0xf782: 0x44745c20, 0xf783: 0x6c145420,
+-	0xf784: 0x42c8fc20, 0xf785: 0x42c93a20, 0xf786: 0x42c8ee20, 0xf787: 0x4474d820,
+-	0xf788: 0x6c12c020, 0xf789: 0x6c057620, 0xf78a: 0x48601420, 0xf78b: 0x42cbc620,
+-	0xf78c: 0x6c0a2e20, 0xf78d: 0x6c1f1420, 0xf78e: 0x44763220, 0xf78f: 0x6c0a2220,
+-	0xf790: 0x44761020, 0xf791: 0x4475c820, 0xf792: 0x6c141620, 0xf793: 0x6c183c20,
+-	0xf794: 0x6c07a620, 0xf795: 0x42cd3820, 0xf796: 0x6c27ec20, 0xf797: 0x4487b220,
+-	0xf798: 0x6c16e220, 0xf799: 0x6c141020, 0xf79a: 0x42ce4220, 0xf79b: 0x6c1f7020,
+-	0xf79c: 0x6c094a20, 0xf79d: 0x48678620, 0xf79e: 0x44769220, 0xf79f: 0x42cff420,
+-	0xf7a0: 0x6c1f8c20, 0xf7a1: 0x42d0a420, 0xf7a2: 0x6c116220, 0xf7a3: 0x4868da20,
+-	0xf7a4: 0x42d11c20, 0xf7a5: 0x42d03e20, 0xf7a6: 0x42d22820, 0xf7a7: 0x44773a20,
+-	0xf7a8: 0x42d28420, 0xf7a9: 0x42d34620, 0xf7aa: 0x42d3d420, 0xf7ab: 0x42d55020,
+-	0xf7ac: 0x486d4620, 0xf7ad: 0x6c051e20, 0xf7ae: 0x44783020, 0xf7af: 0x6c08d220,
+-	0xf7b0: 0x48714e20, 0xf7b1: 0x6c20f820, 0xf7b2: 0x44789c20, 0xf7b3: 0x42d6e420,
+-	0xf7b4: 0x42d73e20, 0xf7b5: 0x6c082020, 0xf7b6: 0x6c028c20, 0xf7b7: 0x48751a20,
+-	0xf7b8: 0x483a1620, 0xf7b9: 0x4875f420, 0xf7ba: 0x6c11ec20, 0xf7bb: 0x48797820,
+-	0xf7bc: 0x6c014c20, 0xf7bd: 0x42d99a20, 0xf7be: 0x42d8ce20, 0xf7bf: 0x42da2c20,
+-	// Block 0x3df, offset 0xf7c0
+-	0xf7c0: 0x6c113620, 0xf7c1: 0x6c023c20, 0xf7c2: 0x6c162420, 0xf7c3: 0x6c06dc20,
+-	0xf7c4: 0x6c0b3a20, 0xf7c5: 0x6c21a620, 0xf7c6: 0x487a3c20, 0xf7c7: 0x42da6820,
+-	0xf7c8: 0x6c06de20, 0xf7c9: 0x6c21d220, 0xf7ca: 0x447a6620, 0xf7cb: 0x6c08d420,
+-	0xf7cc: 0x42dd8e20, 0xf7cd: 0x487da220, 0xf7ce: 0x6c21a820, 0xf7cf: 0x6c0ec820,
+-	0xf7d0: 0x487ebc20, 0xf7d1: 0x487f1c20, 0xf7d2: 0x6c226020, 0xf7d3: 0x42e07220,
+-	0xf7d4: 0x6c109020, 0xf7d5: 0x6c228220, 0xf7d6: 0x447b2c20, 0xf7d7: 0x42e09420,
+-	0xf7d8: 0x6c07bc20, 0xf7d9: 0x42e0ee20, 0xf7da: 0x6c0e2820, 0xf7db: 0x480a4a20,
+-	0xf7dc: 0x42e28a20, 0xf7dd: 0x4884c620, 0xf7de: 0x42e33820, 0xf7df: 0x48875620,
+-	0xf7e0: 0x6c22f620, 0xf7e1: 0x6c094e20, 0xf7e2: 0x42e4a020, 0xf7e3: 0x488c1020,
+-	0xf7e4: 0x6c07c020, 0xf7e5: 0x42e52a20, 0xf7e6: 0x488e6a20, 0xf7e7: 0x48902820,
+-	0xf7e8: 0x6c236220, 0xf7e9: 0x6c018420, 0xf7ea: 0x447d5820, 0xf7eb: 0x42e74a20,
+-	0xf7ec: 0x447d7020, 0xf7ed: 0x447d7020, 0xf7ee: 0x42e88e20, 0xf7ef: 0x6c238c20,
+-	0xf7f0: 0x42e8e220, 0xf7f1: 0x42e90a20, 0xf7f2: 0x6c23a020, 0xf7f3: 0x447e3620,
+-	0xf7f4: 0x42ea4820, 0xf7f5: 0x48986c20, 0xf7f6: 0x42ea7c20, 0xf7f7: 0x48992420,
+-	0xf7f8: 0x6c007620, 0xf7f9: 0x48433e20, 0xf7fa: 0x42ec2020, 0xf7fb: 0x489f4220,
+-	0xf7fc: 0x489f7020, 0xf7fd: 0x48a08820, 0xf7fe: 0x447ff820, 0xf7ff: 0x44801020,
+-	// Block 0x3e0, offset 0xf800
+-	0xf800: 0x6c0eec20, 0xf801: 0x48a1e620, 0xf802: 0x48a1e420, 0xf803: 0x48a23220,
+-	0xf804: 0x48a26620, 0xf805: 0x6c24a820, 0xf806: 0x6c0b4220, 0xf807: 0x6c0b4220,
+-	0xf808: 0x42ee9420, 0xf809: 0x44807220, 0xf80a: 0x6c24c820, 0xf80b: 0x44808c20,
+-	0xf80c: 0x44812c20, 0xf80d: 0x48a83a20, 0xf80e: 0x42f09c20, 0xf80f: 0x6c250420,
+-	0xf810: 0x42f19820, 0xf811: 0x4481c620, 0xf812: 0x48ac4c20, 0xf813: 0x6c0cc420,
+-	0xf814: 0x48ad3420, 0xf815: 0x48ad8a20, 0xf816: 0x6c131a20, 0xf817: 0x42f3d620,
+-	0xf818: 0x44825e20, 0xf819: 0x6c074020, 0xf81a: 0x42f49420, 0xf81b: 0x6c01ac20,
+-	0xf81c: 0x48b2f820, 0xf81d: 0x48b54e20, 0xf81e: 0x48b54e20, 0xf81f: 0x42f5dc20,
+-	0xf820: 0x44840420, 0xf821: 0x48b75620, 0xf822: 0x6c261820, 0xf823: 0x6c0e6a20,
+-	0xf824: 0x44844e20, 0xf825: 0x48b90020, 0xf826: 0x6c268420, 0xf827: 0x44854020,
+-	0xf828: 0x42f9d020, 0xf829: 0x42f9c620, 0xf82a: 0x6c03c020, 0xf82b: 0x48bf0c20,
+-	0xf82c: 0x6c26bc20, 0xf82d: 0x44860220, 0xf82e: 0x6c26d220, 0xf82f: 0x42fc0420,
+-	0xf830: 0x42fc8a20, 0xf831: 0x44866820, 0xf832: 0x48c45020, 0xf833: 0x48c48e20,
+-	0xf834: 0x4486b220, 0xf835: 0x48c5b220, 0xf836: 0x42fef420, 0xf837: 0x48c67c20,
+-	0xf838: 0x42ff2a20, 0xf839: 0x42fff420, 0xf83a: 0x6c093820, 0xf83b: 0x48c9b420,
+-	0xf83c: 0x48ca4620, 0xf83d: 0x4300c020, 0xf83e: 0x48cb5020, 0xf83f: 0x6c27d620,
+-	// Block 0x3e1, offset 0xf840
+-	0xf840: 0x4866be20, 0xf841: 0x4487aa20, 0xf842: 0x6c009220, 0xf843: 0x43020620,
+-	0xf844: 0x44881620, 0xf845: 0x6c281420, 0xf846: 0x42b56a20, 0xf847: 0x48cf4e20,
+-	0xf848: 0x48cf6a20, 0xf849: 0x48672620, 0xf84a: 0x48673820, 0xf84b: 0x6c286820,
+-	0xf84c: 0x43040820, 0xf84d: 0x6c08ea20, 0xf84e: 0x4488d620, 0xf84f: 0x43052220,
+-	0xf850: 0x6c00a420, 0xf851: 0x6c091e20, 0xf852: 0x42a56620, 0xf853: 0x6c01e420,
+-	0xf854: 0x6c13e220, 0xf855: 0x6c020c20, 0xf856: 0x6c050020, 0xf857: 0x48d67820,
+-	0xf858: 0x6c095620, 0xf859: 0x43063a20, 0xf85a: 0x4306c620, 0xf85b: 0x43075a20,
+-	0xf85c: 0x6c28f220, 0xf85d: 0x6c292820, 0xf85e: 0x4307ce20, 0xf85f: 0x6c0ea420,
+-	0xf860: 0x4306a620, 0xf861: 0x6c03f820, 0xf862: 0x6c04e220, 0xf863: 0x6c07cc20,
+-	0xf864: 0x48d86c20, 0xf865: 0x48dad620, 0xf866: 0x48d9aa20, 0xf867: 0x448a5620,
+-	0xf868: 0x4309e220, 0xf869: 0x4309e620, 0xf86a: 0x430a2c20, 0xf86b: 0x48e79420,
+-	0xf86c: 0x430ac820, 0xf86d: 0x48de5820, 0xf86e: 0x448aba20, 0xf86f: 0x448ac220,
+-	0xf870: 0x48df6220, 0xf871: 0x48e1a420, 0xf872: 0x448ad620, 0xf873: 0x6c041420,
+-	0xf874: 0x6c163c20, 0xf875: 0x6c29de20, 0xf876: 0x430cd220, 0xf877: 0x6c29e620,
+-	0xf878: 0x430d1020, 0xf879: 0x430e1c20, 0xf87a: 0x430dc420, 0xf87b: 0x430ef220,
+-	0xf87c: 0x430e5020, 0xf87d: 0x430ed620, 0xf87e: 0x430f0c20, 0xf87f: 0x448bae20,
+-	// Block 0x3e2, offset 0xf880
+-	0xf880: 0x430fc220, 0xf881: 0x43100220, 0xf882: 0x448bf220, 0xf883: 0x4310c020,
+-	0xf884: 0x6c008220, 0xf885: 0x48ecce20, 0xf886: 0x4311ae20, 0xf887: 0x4311bc20,
+-	0xf888: 0x448c6a20, 0xf889: 0x4311f420, 0xf88a: 0x44697620, 0xf88b: 0x48f15c20,
+-	0xf88c: 0x48f2cc20, 0xf88d: 0x448d7c20, 0xf88e: 0x448d8e20, 0xf88f: 0x6c0bfe20,
+-	0xf890: 0x6c154e20, 0xf891: 0x6c1ede20, 0xf892: 0x6c2be420, 0xf893: 0x48f95020,
+-	0xf894: 0x6c035620, 0xf895: 0x6c2c1220, 0xf896: 0x431a3620, 0xf897: 0x6c03ca20,
+-	0xf898: 0x48fe5e20, 0xf899: 0x48100820, 0xf89a: 0x6c2c5420, 0xf89b: 0x431b7820,
+-	0xf89c: 0x431be020, 0xf89d: 0x4811bc20, 0xf89e: 0x431da820, 0xf89f: 0x6c155020,
+-	0xf8a0: 0x490ba420, 0xf8a1: 0x490bda20, 0xf8a2: 0x43212820, 0xf8a3: 0x4321e220,
+-	0xf8a4: 0x43222220, 0xf8a5: 0x490e5c20, 0xf8a6: 0x43223620, 0xf8a7: 0x43247020,
+-	0xf8a8: 0x4325ae20, 0xf8a9: 0x4325b020, 0xf8aa: 0x4324f820, 0xf8ab: 0x4327f220,
+-	0xf8ac: 0x43282a20, 0xf8ad: 0x4917f420, 0xf8ae: 0x6c024a20, 0xf8af: 0x44932a20,
+-	0xf8b0: 0x432b6e20, 0xf8b1: 0x491aee20, 0xf8b2: 0x4493cc20, 0xf8b3: 0x432d8620,
+-	0xf8b4: 0x42bb6420, 0xf8b5: 0x432e4620, 0xf8b6: 0x49228a20, 0xf8b7: 0x49243420,
+-	0xf8b8: 0x4494dc20, 0xf8b9: 0x4494ec20, 0xf8ba: 0x432fc020, 0xf8bb: 0x49281420,
+-	0xf8bc: 0x44956420, 0xf8bd: 0x49292c20, 0xf8be: 0x43301620, 0xf8bf: 0x43301620,
+-	// Block 0x3e3, offset 0xf8c0
+-	0xf8c0: 0x43305220, 0xf8c1: 0x492b6c20, 0xf8c2: 0x6c03d020, 0xf8c3: 0x44966620,
+-	0xf8c4: 0x43325220, 0xf8c5: 0x43334e20, 0xf8c6: 0x43338420, 0xf8c7: 0x4333fc20,
+-	0xf8c8: 0x44979c20, 0xf8c9: 0x49366020, 0xf8ca: 0x43362420, 0xf8cb: 0x43388020,
+-	0xf8cc: 0x4339fa20, 0xf8cd: 0x44999c20, 0xf8ce: 0x4499da20, 0xf8cf: 0x433ace20,
+-	0xf8d0: 0x49419c20, 0xf8d1: 0x4499f020, 0xf8d2: 0x49420a20, 0xf8d3: 0x49441c20,
+-	0xf8d4: 0x49452220, 0xf8d5: 0x6c145a20, 0xf8d6: 0x449aac20, 0xf8d7: 0x6c316420,
+-	0xf8d8: 0x433dfc20, 0xf8d9: 0x433e0a20, 0xf8da: 0x433e1e20, 0xf8db: 0x433e2c20,
+-	0xf8dc: 0x6c125e20, 0xf8dd: 0x494c0020,
+-	// Block 0x3e4, offset 0xf900
+-	0xf900: 0xe00014bd, 0xf901: 0x0033b483, 0xf902: 0x00339688, 0xf903: 0x0033a288,
+-	0xf904: 0x0033c288, 0xf905: 0x0033fc88, 0xf906: 0xca350071, 0xf907: 0x00343688,
+-	0xf908: 0x00344688, 0xf909: 0x00349a88, 0xf90a: 0x0034e488, 0xf90b: 0x00356288,
+-	0xf90c: 0x00356a88, 0xf90d: 0xe00014cf, 0xf90e: 0x00357a88, 0xf90f: 0x00365488,
+-	0xf910: 0xc0090041, 0xf911: 0x00335288, 0xf912: 0x00335a88, 0xf913: 0xc0130092,
+-	0xf914: 0x00338a88, 0xf915: 0xc34c0041, 0xf916: 0xc01c0071, 0xf917: 0xc0200071,
+-	0xf918: 0xc0250041, 0xf919: 0x00343e88, 0xf91a: 0xc0370092, 0xf91b: 0x00348488,
+-	0xf91c: 0x0034a888, 0xf91d: 0x0034ba88, 0xf91e: 0xc02e0071, 0xf91f: 0x00350e88,
+-	0xf920: 0x00352888, 0xf921: 0x00353a88, 0xf922: 0x00354c88, 0xf923: 0xc03e00f1,
+-	0xf924: 0x0035ac88, 0xf925: 0x0035b488, 0xf926: 0x00360288, 0xf927: 0xc0440071,
+-	0xf928: 0x00365c88, 0xf929: 0x00366688, 0xf92a: 0x00367488, 0xf92b: 0xc0480071,
+-	0xf92c: 0x00368e88, 0xf92d: 0xc04c0071, 0xf92e: 0x0036b888, 0xf92f: 0x0036c488,
+-	0xf930: 0xc0060041, 0xf931: 0x40335220, 0xf932: 0x40335a20, 0xf933: 0xc0100092,
+-	0xf934: 0x40338a20, 0xf935: 0xc3490041, 0xf936: 0xc01a0071, 0xf937: 0xc01e0071,
+-	0xf938: 0xc0220041, 0xf939: 0x40343e20, 0xf93a: 0xc0340092, 0xf93b: 0x40348420,
+-	0xf93c: 0x4034a820, 0xf93d: 0x4034ba20, 0xf93e: 0xc02c0071, 0xf93f: 0x40350e20,
+-	// Block 0x3e5, offset 0xf940
+-	0xf940: 0x40352820, 0xf941: 0x40353a20, 0xf942: 0x40354c20, 0xf943: 0xc03a00f1,
+-	0xf944: 0x4035ac20, 0xf945: 0x4035b420, 0xf946: 0x40360220, 0xf947: 0xc0420071,
+-	0xf948: 0x40365c20, 0xf949: 0x40366620, 0xf94a: 0x40367420, 0xf94b: 0xc0460071,
+-	0xf94c: 0x40368e20, 0xf94d: 0xc04a0071, 0xf94e: 0x4036b820, 0xf94f: 0x4036c420,
+-	0xf950: 0xe00014ba, 0xf951: 0x4033b420, 0xf952: 0x40339620, 0xf953: 0x4033a220,
+-	0xf954: 0x4033c220, 0xf955: 0x4033fc20, 0xf956: 0xca330071, 0xf957: 0x40343620,
+-	0xf958: 0x40344620, 0xf959: 0x40349a20, 0xf95a: 0x4034e420, 0xf95b: 0x40356220,
+-	0xf95c: 0x40356a20, 0xf95d: 0xe00014cc, 0xf95e: 0x40357a20, 0xf95f: 0x40365420,
+-	0xf960: 0x0035e088, 0xf961: 0x4035e020, 0xf962: 0x00369e88, 0xf963: 0x40369e20,
+-	0xf964: 0x0036ce88, 0xf965: 0x4036ce20, 0xf966: 0x0036d688, 0xf967: 0x4036d620,
+-	0xf968: 0x0036ea88, 0xf969: 0x4036ea20, 0xf96a: 0x0036e088, 0xf96b: 0x4036e020,
+-	0xf96c: 0x0036f488, 0xf96d: 0x4036f420, 0xf96e: 0x0036fc88, 0xf96f: 0x4036fc20,
+-	0xf970: 0x00370488, 0xf971: 0x40370420, 0xf972: 0x00370c88, 0xf973: 0x40370c20,
+-	0xf974: 0xc0500131, 0xf975: 0xc04e0131, 0xf976: 0x00371c88, 0xf977: 0x40371c20,
+-	0xf978: 0x0035a488, 0xf979: 0x4035a420, 0xf97a: 0x0035fa88, 0xf97b: 0x4035fa20,
+-	0xf97c: 0x0035f288, 0xf97d: 0x4035f220, 0xf97e: 0x0035e888, 0xf97f: 0x4035e820,
+-	// Block 0x3e6, offset 0xf980
+-	0xf980: 0x00352088, 0xf981: 0x40352020, 0xf982: 0x40070620, 0xf983: 0xae608302,
+-	0xf984: 0xae605f02, 0xf985: 0xae602a02, 0xf986: 0xae602202, 0xf987: 0xae605f02,
+-	0xf988: 0xa0000000, 0xf989: 0xa0000000, 0xf98a: 0x00341c88, 0xf98b: 0x40341c20,
+-	0xf98c: 0x00369688, 0xf98d: 0x40369620, 0xf98e: 0x00353088, 0xf98f: 0x40353020,
+-	0xf990: 0xe00014b7, 0xf991: 0xe00014b4, 0xf992: 0x00336a88, 0xf993: 0x40336a20,
+-	0xf994: 0x00337a88, 0xf995: 0x40337a20, 0xf996: 0x0033dc88, 0xf997: 0x4033dc20,
+-	0xf998: 0x0033aa88, 0xf999: 0x4033aa20, 0xf99a: 0x00345888, 0xf99b: 0x40345820,
+-	0xf99c: 0x00347888, 0xf99d: 0x40347820, 0xf99e: 0x00347088, 0xf99f: 0x40347020,
+-	0xf9a0: 0x00346888, 0xf9a1: 0x40346820, 0xf9a2: 0x0034ca88, 0xf9a3: 0x4034ca20,
+-	0xf9a4: 0x0034dc88, 0xf9a5: 0x4034dc20, 0xf9a6: 0x00351888, 0xf9a7: 0x40351820,
+-	0xf9a8: 0x00372688, 0xf9a9: 0x40372620, 0xf9aa: 0x00354488, 0xf9ab: 0x40354420,
+-	0xf9ac: 0x00355888, 0xf9ad: 0x40355820, 0xf9ae: 0x00359c83, 0xf9af: 0x40359c20,
+-	0xf9b0: 0x00359a88, 0xf9b1: 0x40359a20, 0xf9b2: 0x0035cc88, 0xf9b3: 0x4035cc20,
+-	0xf9b4: 0x00360e88, 0xf9b5: 0x40360e20, 0xf9b6: 0x00362a88, 0xf9b7: 0x40362a20,
+-	0xf9b8: 0x00363a88, 0xf9b9: 0x40363a20, 0xf9ba: 0x0035d488, 0xf9bb: 0x4035d420,
+-	0xf9bc: 0x00364488, 0xf9bd: 0x40364420, 0xf9be: 0x00364c88, 0xf9bf: 0x40364c20,
+-	// Block 0x3e7, offset 0xf9c0
+-	0xf9c0: 0xa0000000, 0xf9c1: 0xa0000000, 0xf9c2: 0xa0000000, 0xf9c3: 0xa0000000,
+-	0xf9c4: 0xa0000000, 0xf9c5: 0xa0000000, 0xf9c6: 0xa0000000, 0xf9c7: 0xa0000000,
+-	0xf9c8: 0xa0000000, 0xf9c9: 0x40020020, 0xf9ca: 0x40020220, 0xf9cb: 0x40020420,
+-	0xf9cc: 0x40020620, 0xf9cd: 0x40020820, 0xf9ce: 0xa0000000, 0xf9cf: 0xa0000000,
+-	0xf9d0: 0xa0000000, 0xf9d1: 0xa0000000, 0xf9d2: 0xa0000000, 0xf9d3: 0xa0000000,
+-	0xf9d4: 0xa0000000, 0xf9d5: 0xa0000000, 0xf9d6: 0xa0000000, 0xf9d7: 0xa0000000,
+-	0xf9d8: 0xa0000000, 0xf9d9: 0xa0000000, 0xf9da: 0xa0000000, 0xf9db: 0xa0000000,
+-	0xf9dc: 0xa0000000, 0xf9dd: 0xa0000000, 0xf9de: 0xa0000000, 0xf9df: 0xa0000000,
+-	0xf9e0: 0x40021220, 0xf9e1: 0x4002ba20, 0xf9e2: 0x4003e020, 0xf9e3: 0x4004ea20,
+-	0xf9e4: 0x4027de20, 0xf9e5: 0x4004ec20, 0xf9e6: 0x4004e620, 0xf9e7: 0x4003d220,
+-	0xf9e8: 0x4003f420, 0xf9e9: 0x4003f620, 0xf9ea: 0x4004d820, 0xf9eb: 0x40093820,
+-	0xf9ec: 0x40024020, 0xf9ed: 0x40021a20, 0xf9ee: 0x4002e420, 0xf9ef: 0x4004e220,
+-	0xf9f0: 0x4029cc20, 0xf9f1: 0x4029ce20, 0xf9f2: 0x4029d020, 0xf9f3: 0x4029d220,
+-	0xf9f4: 0x4029d420, 0xf9f5: 0x4029d620, 0xf9f6: 0x4029d820, 0xf9f7: 0x4029da20,
+-	0xf9f8: 0x4029dc20, 0xf9f9: 0x4029de20, 0xf9fa: 0x40026c20, 0xf9fb: 0x40026220,
+-	0xf9fc: 0x40094020, 0xf9fd: 0x40094220, 0xf9fe: 0x40094420, 0xf9ff: 0x4002c420,
+-	// Block 0x3e8, offset 0xfa00
+-	0xfa00: 0x4004d620, 0xfa01: 0xca3c27b1, 0xfa02: 0x002c0a88, 0xfa03: 0x002c3a88,
+-	0xfa04: 0x002c6288, 0xfa05: 0xc39e0be1, 0xfa06: 0x002d0888, 0xfa07: 0x002d2288,
+-	0xfa08: 0x002d6888, 0xfa09: 0x002d9a88, 0xfa0a: 0x002dcc88, 0xfa0b: 0xca373ad1,
+-	0xfa0c: 0xc0030002, 0xfa0d: 0x002e8288, 0xfa0e: 0x002e9e88, 0xfa0f: 0xc3a30b21,
+-	0xfa10: 0x002f2c88, 0xfa11: 0x002f5688, 0xfa12: 0x002f7a88, 0xfa13: 0x002fe688,
+-	0xfa14: 0x00302c88, 0xfa15: 0xc3900b21, 0xfa16: 0x0030be88, 0xfa17: 0x0030e288,
+-	0xfa18: 0x0030f688, 0xfa19: 0x00310088, 0xfa1a: 0x00312a88, 0xfa1b: 0x4003f820,
+-	0xfa1c: 0x4004e420, 0xfa1d: 0x4003fa20, 0xfa1e: 0x40062420, 0xfa1f: 0x40021620,
+-	0xfa20: 0x40061e20, 0xfa21: 0xca3927b1, 0xfa22: 0x402c0a20, 0xfa23: 0x402c3a20,
+-	0xfa24: 0x402c6220, 0xfa25: 0xc39c0be1, 0xfa26: 0x402d0820, 0xfa27: 0x402d2220,
+-	0xfa28: 0x402d6820, 0xfa29: 0x402d9a20, 0xfa2a: 0x402dcc20, 0xfa2b: 0x402dfe20,
+-	0xfa2c: 0xc0000002, 0xfa2d: 0x402e8220, 0xfa2e: 0x402e9e20, 0xfa2f: 0xc3a00b21,
+-	0xfa30: 0x402f2c20, 0xfa31: 0x402f5620, 0xfa32: 0x402f7a20, 0xfa33: 0x402fe620,
+-	0xfa34: 0x40302c20, 0xfa35: 0xc38d0b21, 0xfa36: 0x4030be20, 0xfa37: 0x4030e220,
+-	0xfa38: 0x4030f620, 0xfa39: 0x40310020, 0xfa3a: 0x40312a20, 0xfa3b: 0x4003fc20,
+-	0xfa3c: 0x40094820, 0xfa3d: 0x4003fe20, 0xfa3e: 0x40094c20, 0xfa3f: 0xa0000000,
+-	// Block 0x3e9, offset 0xfa40
+-	0xfa40: 0xe0000983, 0xfa41: 0xe0000980, 0xfa42: 0xe00008fb, 0xfa43: 0xe00008f8,
+-	0xfa44: 0xe000097d, 0xfa45: 0xe000097a, 0xfa46: 0xe0000a38, 0xfa47: 0xe0000a35,
+-	0xfa48: 0xe0000a3e, 0xfa49: 0xe0000a3b, 0xfa4a: 0xe0000a4a, 0xfa4b: 0xe0000a47,
+-	0xfa4c: 0xe0000a44, 0xfa4d: 0xe0000a41, 0xfa4e: 0xe0000a86, 0xfa4f: 0xe0000a83,
+-	0xfa50: 0x002c62a3, 0xfa51: 0x402c6221, 0xfa52: 0xe0000b46, 0xfa53: 0xe0000b43,
+-	0xfa54: 0xe0000aee, 0xfa55: 0xe0000aeb, 0xfa56: 0xe0000b2c, 0xfa57: 0xe0000b29,
+-	0xfa58: 0x00320cc3, 0xfa59: 0x40320c22, 0xfa5a: 0xe0000b1a, 0xfa5b: 0xe0000b17,
+-	0xfa5c: 0xe0000bb8, 0xfa5d: 0xe0000bb5, 0xfa5e: 0xe0000bb2, 0xfa5f: 0xe0000baf,
+-	0xfa60: 0xe0000bc4, 0xfa61: 0xe0000bc1, 0xfa62: 0xe0000bca, 0xfa63: 0xe0000bc7,
+-	0xfa64: 0xe0000bee, 0xfa65: 0xe0000beb, 0xfa66: 0xe0000c1b, 0xfa67: 0xe0000c18,
+-	0xfa68: 0xe0000c51, 0xfa69: 0xe0000c4e, 0xfa6a: 0xe0000c60, 0xfa6b: 0xe0000c5d,
+-	0xfa6c: 0xe0000c31, 0xfa6d: 0xe0000c2e, 0xfa6e: 0xe0000c5a, 0xfa6f: 0xe0000c57,
+-	0xfa70: 0xe0000c54, 0xfa71: 0x402da220, 0xfa72: 0xf0000a0a, 0xfa73: 0xf0000404,
+-	0xfa74: 0xe0000c8a, 0xfa75: 0xe0000c87, 0xfa76: 0xe0000c9f, 0xfa77: 0xe0000c9c,
+-	0xfa78: 0x402f5621, 0xfa79: 0xe0000ccc, 0xfa7a: 0xe0000cc9, 0xfa7b: 0xe0000cd8,
+-	0xfa7c: 0xe0000cd5, 0xfa7d: 0xe0000cd2, 0xfa7e: 0xe0000ccf, 0xfa7f: 0xe0000d04,
+-	// Block 0x3ea, offset 0xfa80
+-	0xfa80: 0xca3f3ae1, 0xfa81: 0xca413ae1, 0xfa82: 0xca433ae1, 0xfa83: 0xca453ae1,
+-	0xfa84: 0xca473ae1, 0xfa85: 0xca493ae1, 0xfa86: 0xca4b3ae1, 0xfa87: 0xca4d3ae1,
+-	0xfa88: 0xca4f3ae1, 0xfa89: 0xca513ae1, 0xfa8a: 0xca533ae1, 0xfa8b: 0xca553ae1,
+-	0xfa8c: 0xca573ae1, 0xfa8d: 0xca593ae1, 0xfa8e: 0xca5b3ae1, 0xfa8f: 0xca5d3ae1,
+-	0xfa90: 0xca5f3ae1, 0xfa91: 0xca613ae1, 0xfa92: 0xca633ae1, 0xfa93: 0xca653ae1,
+-	0xfa94: 0xca673ae1, 0xfa95: 0xca693ae1, 0xfa96: 0xca6b3ae1, 0xfa97: 0xca6d3ae1,
+-	0xfa98: 0xca6f3ae1, 0xfa99: 0xca713ae1, 0xfa9a: 0xca733ae1, 0xfa9b: 0xca773ae1,
+-	0xfa9c: 0xca7d3ae1, 0xfa9d: 0xca813ae1, 0xfa9e: 0xca833ae1, 0xfa9f: 0xca853ae1,
+-	0xfaa0: 0xca873ae1, 0xfaa1: 0xca893ae1, 0xfaa2: 0xca8b3ae1, 0xfaa3: 0xca8b3ae1,
+-	0xfaa4: 0xe0003cf5, 0xfaa5: 0xe0003cf8, 0xfaa6: 0xe0003cfb, 0xfaa7: 0xe0003cfe,
+-	0xfaa8: 0xe0003d01, 0xfaa9: 0xe0003d05, 0xfaaa: 0xe0003d08, 0xfaab: 0xca753ae1,
+-	0xfaac: 0xca793ae1, 0xfaad: 0xca7b3ae1, 0xfaae: 0xca7f3ae1, 0xfaaf: 0xe0003d0c,
+-	0xfab0: 0xe0003d0f, 0xfab1: 0xe0003d12, 0xfab2: 0xe0003d15, 0xfab3: 0xe0003d18,
+-	0xfab4: 0xa0000000, 0xfab5: 0xa0000000, 0xfab6: 0xca903b41, 0xfab7: 0xca923b71,
+-	0xfab8: 0x40501220, 0xfab9: 0x40501420, 0xfaba: 0x40501620, 0xfabb: 0xca8d3b11,
+-	0xfabc: 0x40501a20, 0xfabd: 0x40501c20, 0xfabe: 0x40501e20, 0xfabf: 0x40502020,
+-	// Block 0x3eb, offset 0xfac0
+-	0xfac0: 0x40502220, 0xfac1: 0xca943b71, 0xfac2: 0x40502620, 0xfac3: 0x40502820,
+-	0xfac4: 0xca963b71, 0xfac5: 0x40502c20, 0xfac6: 0x40503020, 0xfac7: 0x40503420,
+-	0xfac8: 0xadc11802, 0xfac9: 0xadc11b02, 0xfaca: 0xadc11c02, 0xfacb: 0xadc11a02,
+-	0xfacc: 0xa0005f02, 0xfacd: 0xadc11d02, 0xface: 0xadc11402, 0xfacf: 0xadc11502,
+-	0xfad0: 0xadc11702, 0xfad1: 0xadc11602, 0xfad2: 0x82092817, 0xfad3: 0xa0000000,
+-	0xfad4: 0x40032620, 0xfad5: 0x40032820, 0xfad6: 0x4002ac20, 0xfad7: 0x4027bc20,
+-	0xfad8: 0xe0003c55, 0xfad9: 0x4005be20, 0xfada: 0x4005c020, 0xfadb: 0x4027f620,
+-	0xfadc: 0x404fea20, 0xfadd: 0xadc11902,
+-	0xfae0: 0xe00001b5, 0xfae1: 0xe0000249, 0xfae2: 0xe0000361, 0xfae3: 0xe000043b,
+-	0xfae4: 0xe0000510, 0xfae5: 0xe00005da, 0xfae6: 0xe00006a5, 0xfae7: 0xe000074d,
+-	0xfae8: 0xe00007f9, 0xfae9: 0xe000089e,
+-	0xfaf0: 0xe00001b8, 0xfaf1: 0xe000024c, 0xfaf2: 0xe0000364, 0xfaf3: 0xe000043e,
+-	0xfaf4: 0xe0000513, 0xfaf5: 0xe00005dd, 0xfaf6: 0xe00006a8, 0xfaf7: 0xe0000750,
+-	0xfaf8: 0xe00007fc, 0xfaf9: 0xe00008a1,
+-	// Block 0x3ec, offset 0xfb00
+-	0xfb02: 0x40439020, 0xfb03: 0x40439220,
+-	0xfb05: 0x40437020, 0xfb06: 0x40437220, 0xfb07: 0x40437420,
+-	0xfb08: 0x40437620, 0xfb09: 0x40437820, 0xfb0a: 0x40437a20, 0xfb0b: 0x40437c20,
+-	0xfb0c: 0x40438020, 0xfb0e: 0x40438420, 0xfb0f: 0x40438620,
+-	0xfb10: 0x40438820, 0xfb12: 0x40438a20, 0xfb13: 0x40438c20,
+-	0xfb14: 0x40438e20, 0xfb15: 0x40439020, 0xfb16: 0x40439220, 0xfb17: 0x40439420,
+-	0xfb18: 0x40439620, 0xfb19: 0x40439820, 0xfb1a: 0x40439a20, 0xfb1b: 0x40439c20,
+-	0xfb1c: 0x40439e20, 0xfb1d: 0x4043a020, 0xfb1e: 0x4043a220, 0xfb1f: 0x4043a420,
+-	0xfb20: 0x4043a620, 0xfb21: 0x4043a820, 0xfb22: 0x4043aa20, 0xfb23: 0x4043ac20,
+-	0xfb24: 0x4043ae20, 0xfb25: 0x4043b020, 0xfb26: 0x4043b220, 0xfb27: 0x4043b420,
+-	0xfb28: 0x4043b620, 0xfb2a: 0x4043b820, 0xfb2b: 0x4043ba20,
+-	0xfb2c: 0x4043bc20, 0xfb2d: 0x4043be20, 0xfb2e: 0x4043c020, 0xfb2f: 0x4043c220,
+-	0xfb30: 0x4043c420, 0xfb31: 0x4043c620, 0xfb32: 0x4043c820, 0xfb33: 0x4043d420,
+-	0xfb35: 0x4043ca20, 0xfb36: 0x4043cc20, 0xfb37: 0x4043ce20,
+-	0xfb38: 0x4043d020, 0xfb39: 0x4043d220,
+-	0xfb3c: 0xa070f102, 0xfb3d: 0x4043d820, 0xfb3e: 0x4043de20, 0xfb3f: 0xc06a0311,
+-	// Block 0x3ed, offset 0xfb40
+-	0xfb40: 0x4043e220, 0xfb41: 0x4043e420, 0xfb42: 0x4043e620, 0xfb43: 0x4043e820,
+-	0xfb44: 0x4043ea20, 0xfb46: 0xc06c0341, 0xfb47: 0x4043f220,
+-	0xfb48: 0x4043f420, 0xfb4a: 0xc0710311, 0xfb4b: 0x4043f820,
+-	0xfb4c: 0x4043fa20, 0xfb4d: 0x820921fe,
+-	0xfb55: 0x4043fe20, 0xfb56: 0x40440020,
+-	0xfb5e: 0x4043d620,
+-	0xfb60: 0x40437e20, 0xfb61: 0x40438220, 0xfb62: 0x4043ec20, 0xfb63: 0x4043ee20,
+-	0xfb66: 0xe0000182, 0xfb67: 0xe0000213,
+-	0xfb68: 0xe000032e, 0xfb69: 0xe0000408, 0xfb6a: 0xe00004dd, 0xfb6b: 0xe00005a7,
+-	0xfb6c: 0xe0000672, 0xfb6d: 0xe000071a, 0xfb6e: 0xe00007c6, 0xfb6f: 0xe000086b,
+-	0xfb71: 0x40439420, 0xfb72: 0x40439620,
+-	// Block 0x3ee, offset 0xfb80
+-	0xfb80: 0xf0000404, 0xfb81: 0xf0000404, 0xfb82: 0xf0000404, 0xfb83: 0xf0000404,
+-	0xfb84: 0xf0000404, 0xfb85: 0xf0000404, 0xfb86: 0xf0000404, 0xfb87: 0xf0000404,
+-	0xfb88: 0xf0000404, 0xfb89: 0xf0000404, 0xfb8a: 0xf0000404, 0xfb8b: 0xf0000404,
+-	0xfb8c: 0xf0000404, 0xfb8d: 0xf0000404, 0xfb8e: 0xe000004c, 0xfb8f: 0xe0000051,
+-	0xfb90: 0xe0000056, 0xfb91: 0xe000005b, 0xfb92: 0xe0000060, 0xfb93: 0xe0000065,
+-	0xfb94: 0xe000006a, 0xfb95: 0xe000006f, 0xfb96: 0xe0000083, 0xfb97: 0xe000008d,
+-	0xfb98: 0xe0000092, 0xfb99: 0xe0000097, 0xfb9a: 0xe000009c, 0xfb9b: 0xe00000a1,
+-	0xfb9c: 0xe0000088, 0xfb9d: 0xe0000074, 0xfb9e: 0xe000007c,
+-	0xfba0: 0xe00028cc, 0xfba1: 0xe00028dc, 0xfba2: 0xe00028d4, 0xfba3: 0xe000290c,
+-	0xfba4: 0xe00028e0, 0xfba5: 0xe00028f4, 0xfba6: 0xe00028d0, 0xfba7: 0xe00028f0,
+-	0xfba8: 0xe00028d8, 0xfba9: 0xe00028fc, 0xfbaa: 0xe000291c, 0xfbab: 0xe0002930,
+-	0xfbac: 0xe000292c, 0xfbad: 0xe0002924, 0xfbae: 0xe0002958, 0xfbaf: 0xe0002910,
+-	0xfbb0: 0xe0002918, 0xfbb1: 0xe0002928, 0xfbb2: 0xe0002920, 0xfbb3: 0xe000293c,
+-	0xfbb4: 0xe0002904, 0xfbb5: 0xe0002934, 0xfbb6: 0xe0002950, 0xfbb7: 0xe0002940,
+-	0xfbb8: 0xf0000404, 0xfbb9: 0xe00028e4, 0xfbba: 0xe0002908, 0xfbbb: 0xf0000404,
+-	0xfbbc: 0xe0002938, 0xfbbd: 0xe00028e8, 0xfbbe: 0xe0002954, 0xfbbf: 0xe0002900,
+-	// Block 0x3ef, offset 0xfbc0
+-	0xfbc0: 0xe0008111, 0xfbc1: 0xe0008704, 0xfbc3: 0xe0009605,
+-	0xfbc7: 0xe00059e2,
+-	0xfbc8: 0xe00082d9, 0xfbc9: 0xe0006807, 0xfbca: 0xe000685b, 0xfbcb: 0xe0009ba8,
+-	0xfbcd: 0xe0006344,
+-	0xfbd1: 0xe0009471,
+-	0xfbd4: 0xe0008e00, 0xfbd5: 0xe0006503, 0xfbd6: 0xe0006bd3,
+-	0xfbd8: 0xe0004805, 0xfbd9: 0xe00061d3,
+-	0xfbde: 0xe0006f79, 0xfbdf: 0xe0008ac2,
+-	0xfbe6: 0xe0006217,
+-	0xfbeb: 0xe0007199,
+-	0xfbed: 0xe0008b9c,
+-	0xfbf0: 0xe000632c, 0xfbf1: 0xe0004654, 0xfbf2: 0xe00045a1,
+-	0xfbf8: 0xe000a16b, 0xfbf9: 0xe0004ee5, 0xfbfb: 0xe0008a4a,
+-	// Block 0x3f0, offset 0xfc00
+-	0xfc02: 0xe000779e, 0xfc03: 0xe0004dcf,
+-	0xfc05: 0xe0004808,
+-	0xfc0b: 0xe0008c10,
+-	0xfc0d: 0xe000668e, 0xfc0e: 0xe0009fd3, 0xfc0f: 0xe0009b9c,
+-	0xfc16: 0xe000472d,
+-	0xfc18: 0xe0006f7d, 0xfc19: 0xe0007f61,
+-	0xfc1d: 0xe000480b, 0xfc1e: 0xe000410f, 0xfc1f: 0xe00073bb,
+-	0xfc27: 0xe00052c3,
+-	0xfc2b: 0xe0003e6f,
+-	0xfc2c: 0xe000411f, 0xfc2d: 0xe00051dc,
+-	0xfc33: 0xe0007dca,
+-	0xfc36: 0xe00062e8, 0xfc37: 0xe00067f3,
+-	0xfc3c: 0xe0008b98, 0xfc3e: 0xe00040c7,
+-	// Block 0x3f1, offset 0xfc40
+-	0xfc42: 0xe0005366,
+-	0xfc46: 0xe0005756,
+-	0xfc48: 0xe000756c, 0xfc4b: 0xe0006691,
+-	0xfc4c: 0xe0008014, 0xfc4e: 0xe0007b81, 0xfc4f: 0xe0007be1,
+-	0xfc50: 0xe0007c95, 0xfc51: 0xe0007c45, 0xfc52: 0xe0009fd6,
+-	0xfc54: 0xe0007813, 0xfc55: 0xe0008708,
+-	0xfc58: 0xe0004bee, 0xfc59: 0xe0004bfe, 0xfc5b: 0xe0006694,
+-	0xfc5e: 0xe0007163, 0xfc5f: 0xe0004afe,
+-	0xfc61: 0xe0005a76, 0xfc62: 0xe0009cfa,
+-	0xfc64: 0xe0004781, 0xfc65: 0xe0009d4a, 0xfc66: 0xe0007596,
+-	0xfc68: 0xe0009f3c, 0xfc6b: 0xe0009dc9,
+-	0xfc6c: 0xe0004250, 0xfc6d: 0xe000870c, 0xfc6e: 0xe000544c,
+-	0xfc73: 0xe0005ec7,
+-	0xfc74: 0xe0007be4, 0xfc76: 0xe0004ee9,
+-	0xfc79: 0xe0005de1, 0xfc7a: 0xe00080a1,
+-	// Block 0x3f2, offset 0xfc80
+-	0xfc80: 0xe0007150, 0xfc81: 0xe00080a5,
+-	0xfc84: 0xe0009547, 0xfc86: 0xe00063c2, 0xfc87: 0xe000480e,
+-	0xfc8a: 0xe0004b72, 0xfc8b: 0xe0003ffb,
+-	0xfc8d: 0xe0008179,
+-	0xfc94: 0xe000818d, 0xfc95: 0xe0006697, 0xfc96: 0xe0009666, 0xfc97: 0xe00082dd,
+-	0xfc98: 0xe0006347, 0xfc99: 0xe0006a0b,
+-	0xfc9d: 0xe00051ec, 0xfc9e: 0xe00080e5, 0xfc9f: 0xe00090b7,
+-	0xfca1: 0xe000a492, 0xfca3: 0xe0005079,
+-	0xfca4: 0xe00055bf, 0xfca5: 0xe0008017,
+-	0xfcae: 0xe0003d72,
+-	0xfcb0: 0xe00072e2, 0xfcb2: 0xe0008ba0, 0xfcb3: 0xe0006581,
+-	0xfcb5: 0xe000786a, 0xfcb6: 0xe00040cb, 0xfcb7: 0xe0003ffe,
+-	0xfcbb: 0xe000813d,
+-	0xfcbf: 0xe0006013,
+-	// Block 0x3f3, offset 0xfcc0
+-	0xfcc0: 0xe0008a04, 0xfcc1: 0xe0004c06,
+-	0xfcc9: 0xe0009cfe, 0xfcca: 0xe000801a, 0xfccb: 0xe0004bba,
+-	0xfccd: 0xe0007816, 0xfcce: 0xe0004c09, 0xfccf: 0xe000627c,
+-	0xfcd0: 0xe00060eb, 0xfcd1: 0xe000a40c,
+-	0xfcef: 0xe000608f,
+-	0xfcf0: 0xe0004432,
+-	0xfcf4: 0xe0005edf, 0xfcf6: 0xe00055c3,
+-	0xfcf8: 0xe0007078, 0xfcfa: 0xe000669a,
+-	0xfcfc: 0xe000669d, 0xfcfd: 0xe0003d1b,
+-	// Block 0x3f4, offset 0xfd00
+-	0xfd02: 0xe00087e0, 0xfd03: 0xe0008520,
+-	0xfd06: 0xe0004eed, 0xfd07: 0xe000841a,
+-	0xfd08: 0xe0009a1d, 0xfd09: 0xe00048a7, 0xfd0b: 0xe0006c66,
+-	0xfd0d: 0xe0007d55, 0xfd0e: 0xe000841d, 0xfd0f: 0xe0008a4d,
+-	0xfd10: 0xe0008a2c, 0xfd11: 0xe0007b84, 0xfd13: 0xe0006463,
+-	0xfd14: 0xe00086b4, 0xfd15: 0xe0009bab, 0xfd16: 0xe0009b6c, 0xfd17: 0xe0009690,
+-	0xfd19: 0xe000756f, 0xfd1a: 0xe0008115, 0xfd1b: 0xe00064af,
+-	0xfd1c: 0xe0008229, 0xfd1d: 0xe00048aa, 0xfd1e: 0xe0004e1c, 0xfd1f: 0xe0009871,
+-	0xfd29: 0xe000991b, 0xfd2a: 0xe000a2af,
+-	0xfd2f: 0xe0007418,
+-	0xfd30: 0xe0006093, 0xfd33: 0xe0003d1e,
+-	0xfd36: 0xe0004d36,
+-	0xfd38: 0xe00046a0, 0xfd39: 0xe0004a28, 0xfd3a: 0xe0008524, 0xfd3b: 0xe000892e,
+-	0xfd3c: 0xe00047cc, 0xfd3d: 0xe0008e2a, 0xfd3e: 0xe0008119, 0xfd3f: 0xe00066a0,
+-	// Block 0x3f5, offset 0xfd40
+-	0xfd41: 0xe000707c, 0xfd43: 0xe0003de3,
+-	0xfd44: 0xe0008d68, 0xfd46: 0xe000542a,
+-	0xfd48: 0xe0009563, 0xfd49: 0xe00045c9, 0xfd4a: 0xe00046b8, 0xfd4b: 0xe0005637,
+-	0xfd4d: 0xe0006fa9, 0xfd4f: 0xe0008a50,
+-	0xfd51: 0xe0007dcd,
+-	0xfd54: 0xe0005c36, 0xfd56: 0xe000582b, 0xfd57: 0xe0005230,
+-	0xfd58: 0xe0008e03, 0xfd5a: 0xe0006ef8, 0xfd5b: 0xe0004531,
+-	0xfd5c: 0xe0008ac5, 0xfd5d: 0xe0007fbd,
+-	0xfd6e: 0xe0005bee, 0xfd6f: 0xe000a32d,
+-	0xfd72: 0xe0008d44,
+-	0xfd75: 0xe0009611, 0xfd76: 0xe0005498,
+-	0xfd7b: 0xe0009757,
+-	0xfd7f: 0xe000996f,
+-	// Block 0x3f6, offset 0xfd80
+-	0xfd81: 0xe0007be7, 0xfd82: 0xe0004354, 0xfd83: 0xe0009333,
+-	0xfd84: 0xe0007166, 0xfd85: 0xe00048ad,
+-	0xfd89: 0xe0007819, 0xfd8a: 0xe0008b0c,
+-	0xfd8c: 0xe0006267, 0xfd8e: 0xe00088a4, 0xfd8f: 0xe0006c69,
+-	0xfd90: 0xe00058ee, 0xfd91: 0xe0007afd, 0xfd93: 0xe0004254,
+-	0xfd94: 0xe0009e54, 0xfd97: 0xe0006cab,
+-	0xfd98: 0xe00063c5, 0xfd9a: 0xe00058a3, 0xfd9b: 0xe0005b87,
+-	0xfd9d: 0xe0006237, 0xfd9f: 0xe00066a3,
+-	0xfda0: 0xe0009ef0, 0xfda1: 0xe0007080, 0xfda3: 0xe000786d,
+-	0xfdae: 0xe0006d4a, 0xfdaf: 0xe000634a,
+-	0xfdb0: 0xe000a132, 0xfdb1: 0xe0004811, 0xfdb3: 0xe000604a,
+-	0xfdb4: 0xe0009103, 0xfdb5: 0xe0009aa6, 0xfdb6: 0xe0006e70,
+-	0xfdb8: 0xe00062ec, 0xfdba: 0xe0007522,
+-	0xfdbe: 0xe0006584,
+-	// Block 0x3f7, offset 0xfdc0
+-	0xfdc0: 0xe0008fa2, 0xfdc2: 0xe00061d7,
+-	0xfdc5: 0xe0006f40, 0xfdc6: 0xe0005450,
+-	0xfdc9: 0xe0008f4a, 0xfdcb: 0xe0004001,
+-	0xfdcd: 0xe0006047, 0xfdcf: 0xe0006e74,
+-	0xfdd1: 0xe0005d50, 0xfdd2: 0xe00050c7,
+-	0xfdd4: 0xe0004996, 0xfdd6: 0xe0009db1,
+-	0xfdd8: 0xe0005035, 0xfdd9: 0xe000a330, 0xfdda: 0xe0007fc0,
+-	0xfddc: 0xe000905b, 0xfdde: 0xe0004258, 0xfddf: 0xe0008e06,
+-	0xfde1: 0xe0008f4e, 0xfde2: 0xe000920b, 0xfde3: 0xe0005fa3,
+-	0xfde4: 0xe0009566, 0xfde5: 0xe0004571, 0xfde6: 0xe00049c2, 0xfde7: 0xe00089c0,
+-	0xfde8: 0xe000406d, 0xfde9: 0xe0009107, 0xfdea: 0xe00077a1, 0xfdeb: 0xe000582f,
+-	0xfdec: 0xe00096b7, 0xfded: 0xe0007a20, 0xfdee: 0xe0005327,
+-	0xfdf0: 0xe000589b,
+-	0xfdfb: 0xe00073be,
+-	// Block 0x3f8, offset 0xfe00
+-	0xfe03: 0xe00074e2,
+-	0xfe04: 0xe0004d87, 0xfe07: 0xe0003d21,
+-	0xfe08: 0xe0004163, 0xfe09: 0xe0007d58, 0xfe0a: 0xe0007bea,
+-	0xfe0e: 0xe0007a3e, 0xfe0f: 0xe0009973,
+-	0xfe13: 0xe00071f2,
+-	0xfe15: 0xe0009d4d, 0xfe16: 0xe0008e2d,
+-	0xfe18: 0xe0003e43, 0xfe1a: 0xe0008a53,
+-	0xfe1c: 0xe0008710,
+-	0xfe20: 0xe0007aad, 0xfe22: 0xe00092dc,
+-	0xfe25: 0xe00040cf,
+-	0xfe2a: 0xe0009ba4,
+-	0xfe30: 0xe0006aff, 0xfe32: 0xe0006ffd,
+-	0xfe34: 0xe0009543, 0xfe35: 0xe0008714, 0xfe36: 0xe0007b87,
+-	0xfe38: 0xe0009856,
+-	// Block 0x3f9, offset 0xfe40
+-	0xfe40: 0xe0004730,
+-	0xfe45: 0xe000634d,
+-	0xfe4b: 0xe0003fb7,
+-	0xfe4d: 0xe0005fa7,
+-	0xfe51: 0xe0004113, 0xfe52: 0xe0009fbb,
+-	0xfe54: 0xe000422c, 0xfe56: 0xe0008fa6,
+-	0xfe58: 0xe0006793, 0xfe59: 0xe0006506, 0xfe5a: 0xe000a315, 0xfe5b: 0xe0007b59,
+-	0xfe5d: 0xe0009783, 0xfe5e: 0xe0006742,
+-	0xfe62: 0xe0003d75,
+-	0xfe6c: 0xe00093b7, 0xfe6d: 0xe0007b01, 0xfe6e: 0xe0008931,
+-	0xfe72: 0xe000781c, 0xfe73: 0xe0008528,
+-	0xfe74: 0xe00048b0, 0xfe75: 0xe0008fee, 0xfe77: 0xe000685f,
+-	0xfe7d: 0xe0008369, 0xfe7e: 0xe000425c, 0xfe7f: 0xe00074fa,
+-	// Block 0x3fa, offset 0xfe80
+-	0xfe82: 0xe00057cd,
+-	0xfe84: 0xe0009ad0, 0xfe85: 0xe0004b0e,
+-	0xfe89: 0xe000919b, 0xfe8a: 0xe0006a0f,
+-	0xfe8f: 0xe0006863,
+-	0xfe91: 0xe0004784,
+-	0xfe95: 0xe0006280, 0xfe96: 0xe000a4da,
+-	0xfe9a: 0xe0005759, 0xfe9b: 0xe0004cc6,
+-	0xfe9e: 0xe0007d5b,
+-	0xfea2: 0xe000910b,
+-	0xfea5: 0xe0007a59, 0xfea6: 0xe000941d, 0xfea7: 0xe0006f81,
+-	0xfea9: 0xe0009c4e,
+-	0xfeac: 0xe00092df, 0xfead: 0xe0008ee2, 0xfeae: 0xe0005234,
+-	0xfeb5: 0xe0003fbb,
+-	0xfeb9: 0xe0003d24, 0xfebb: 0xe000613b,
+-	0xfebe: 0xe0007333, 0xfebf: 0xe00066a6,
+-	// Block 0x3fb, offset 0xfec0
+-	0xfec0: 0xe0007fc3, 0xfec1: 0xe0008b10, 0xfec2: 0xe0004e5c, 0xfec3: 0xe000910f,
+-	0xfec4: 0xe00074ca, 0xfec6: 0xe0004260, 0xfec7: 0xe0009ea4,
+-	0xfec9: 0xe000412b, 0xfecb: 0xe0004fc5,
+-	0xfed0: 0xe000663a, 0xfed2: 0xe0007dd0, 0xfed3: 0xe00050a9,
+-	0xfed4: 0xe0008ac8, 0xfed5: 0xe0008871, 0xfed7: 0xe0007ff6,
+-	0xfed8: 0xe0008d48, 0xfeda: 0xe0005b3b, 0xfedb: 0xe0005d35,
+-	0xfedc: 0xe0004e20, 0xfedf: 0xe0006867,
+-	0xfee1: 0xe000571d, 0xfee2: 0xe00054ce,
+-	0xfee4: 0xe0009a6e, 0xfee5: 0xe0007ec1, 0xfee7: 0xe0008ea6,
+-	0xfeea: 0xe0007b8a, 0xfeeb: 0xe000a04e,
+-	0xfef1: 0xe0005701, 0xfef2: 0xe0008420, 0xfef3: 0xe0008f0a,
+-	0xfef5: 0xe0006e78, 0xfef7: 0xe000549b,
+-	0xfef9: 0xe0008eaa, 0xfefa: 0xe0004d56, 0xfefb: 0xe0005039,
+-	0xfefc: 0xe0007526,
+-	// Block 0x3fc, offset 0xff00
+-	0xff00: 0xe000790d, 0xff01: 0xe0007ec5, 0xff03: 0xe0007ca1,
+-	0xff04: 0xe0009f40, 0xff05: 0xe00094d1, 0xff06: 0xe00088a7, 0xff07: 0xe000a43a,
+-	0xff08: 0xe0006a13, 0xff09: 0xe00046bc, 0xff0b: 0xe0004ae2,
+-	0xff0c: 0xe00097af, 0xff0d: 0xe0005b5b, 0xff0e: 0xe0009805,
+-	0xff12: 0xe0007169,
+-	0xff15: 0xe0007000, 0xff17: 0xe000763e,
+-	0xff1a: 0xe000503d,
+-	0xff1c: 0xe0005270,
+-	0xff22: 0xe0004bf2,
+-	0xff25: 0xe000816d, 0xff27: 0xe0004dd2,
+-	0xff28: 0xe000852c, 0xff29: 0xe0005454, 0xff2a: 0xe0007dd3, 0xff2b: 0xe0009907,
+-	0xff2c: 0xe0004535, 0xff2d: 0xe000581b, 0xff2e: 0xe0009fa0,
+-	0xff31: 0xe0004539,
+-	0xff35: 0xe00061db, 0xff36: 0xe0004c0c, 0xff37: 0xe0004814,
+-	0xff38: 0xe0008530,
+-	0xff3c: 0xe0004214,
+-	// Block 0x3fd, offset 0xff40
+-	0xff40: 0xe0004c0f,
+-	0xff46: 0xe0007568,
+-	0xff49: 0xe00076b6, 0xff4a: 0xe0009018,
+-	0xff4d: 0xe00083b5, 0xff4f: 0xe0004304,
+-	0xff52: 0xe0005bf1, 0xff53: 0xe00048b3,
+-	0xff55: 0xe0005b5f, 0xff57: 0xe0007b05,
+-	0xff58: 0xe0007e54,
+-	0xff60: 0xe0004614, 0xff63: 0xe000953a,
+-	0xff64: 0xe0007d09, 0xff65: 0xe0005bab,
+-	0xff6a: 0xe0005b4b,
+-	0xff6c: 0xe00051f0,
+-	0xff70: 0xe000667e, 0xff71: 0xe000a051, 0xff72: 0xe00094e9,
+-	0xff76: 0xe00073c1, 0xff77: 0xe000543c,
+-	0xff7d: 0xe000556f,
+-	// Block 0x3fe, offset 0xff80
+-	0xff84: 0xe0009040, 0xff85: 0xe0004435, 0xff86: 0xe0008b14,
+-	0xff89: 0xe0005458, 0xff8a: 0xe000923f, 0xff8b: 0xe00088aa,
+-	0xff8c: 0xe0005883, 0xff8d: 0xe00051f4,
+-	0xff92: 0xe0007ff9,
+-	0xff94: 0xe0008faa,
+-	0xff9b: 0xe0005877,
+-	0xff9c: 0xe0005873, 0xff9d: 0xe0007fad, 0xff9e: 0xe000a4dd,
+-	0xffa0: 0xe0004a2b, 0xffa1: 0xe0006103,
+-	0xffa9: 0xe0005c7f,
+-	0xffad: 0xe0006682,
+-	0xffb0: 0xe000a1f7, 0xffb1: 0xe0004004, 0xffb3: 0xe00052ef,
+-	0xffb4: 0xe0006686, 0xffb6: 0xe000a43e,
+-	0xffb8: 0xe000914b, 0xffb9: 0xe0007a5c, 0xffba: 0xe00094c1,
+-	0xffbd: 0xe0009c7e,
+-	// Block 0x3ff, offset 0xffc0
+-	0xffc0: 0xe00050ca, 0xffc1: 0xe0008934, 0xffc3: 0xe00080a9,
+-	0xffc6: 0xe0006417, 0xffc7: 0xe0008664,
+-	0xffc8: 0xe00077a4, 0xffca: 0xe0003de7,
+-	0xffce: 0xe0005d54,
+-	0xffd1: 0xe0009f44, 0xffd3: 0xe00079dc,
+-	0xffd6: 0xe0007d4d, 0xffd7: 0xe0005573,
+-	0xffdd: 0xe000928b,
+-	0xffe4: 0xe00098df, 0xffe5: 0xe00061bb, 0xffe6: 0xe000415b, 0xffe7: 0xe000415f,
+-	0xffe9: 0xe00058a6, 0xffea: 0xe0006797,
+-	0xffee: 0xe0004690,
+-	0xfff0: 0xe00050cd, 0xfff1: 0xe0008fae, 0xfff2: 0xe0004a8b, 0xfff3: 0xe0004438,
+-	0xfff6: 0xe000882c, 0xfff7: 0xe0006d2f,
+-	0xfff8: 0xe00049c6, 0xfff9: 0xe0008ec6, 0xfffa: 0xe0008190, 0xfffb: 0xe0003d9f,
+-	// Block 0x400, offset 0x10000
+-	0x10003: 0xe000924f,
+-	0x10004: 0xe0004308, 0x10007: 0xe00095e1,
+-	0x10009: 0xe0008a3b, 0x1000a: 0xe000677b, 0x1000b: 0xe0004ae6,
+-	0x1000c: 0xe00053a2, 0x1000d: 0xe0008534,
+-	0x10014: 0xe000905f, 0x10015: 0xe0006587, 0x10016: 0xe0006350, 0x10017: 0xe0008291,
+-	0x1001a: 0xe0006745, 0x1001b: 0xe0003f57,
+-	0x1001d: 0xe0005e7b, 0x1001e: 0xe0004cc9, 0x1001f: 0xe0009173,
+-	0x10021: 0xe0006b1f,
+-	0x10029: 0xe000817d, 0x1002a: 0xe0008538,
+-	0x1002f: 0xe0006353,
+-	0x10032: 0xe0009c72,
+-	0x10034: 0xe0004034, 0x10035: 0xe0008f52, 0x10037: 0xe00067c3,
+-	0x1003a: 0xe00058f1,
+-	0x1003d: 0xe0009aa9, 0x1003f: 0xe000928e,
+-	// Block 0x401, offset 0x10040
+-	0x10042: 0xe0004a2e, 0x10043: 0xe000a2ca,
+-	0x10047: 0xe0004aea,
+-	0x10048: 0xe000613f, 0x10049: 0xe00057e2,
+-	0x1004d: 0xe000412f,
+-	0x10051: 0xe000882f, 0x10052: 0xe0004133, 0x10053: 0xe0007ffc,
+-	0x10057: 0xe0008eae,
+-	0x10058: 0xe00059b0, 0x1005b: 0xe00054ef,
+-	0x1005f: 0xe000453d,
+-	0x10060: 0xe0003d27, 0x10063: 0xe0005577,
+-	0x10064: 0xe0004b12,
+-	0x10069: 0xe00088ad, 0x1006a: 0xe0004e2c, 0x1006b: 0xe000414f,
+-	0x1006c: 0xe00048b6, 0x1006d: 0xe00092e2,
+-	0x1007e: 0xe0009da1,
+-	// Block 0x402, offset 0x10080
+-	0x10081: 0xe0004264, 0x10083: 0xe0005f63,
+-	0x10085: 0xe00095e5, 0x10087: 0xe0007b09,
+-	0x10089: 0xe0005b63,
+-	0x1008c: 0xe00049ea, 0x1008d: 0xe0004268,
+-	0x10092: 0xe0005867,
+-	0x10095: 0xe00051f8, 0x10096: 0xe0007c1d,
+-	0x10098: 0xe0003eaf, 0x10099: 0xe0005cf3, 0x1009b: 0xe000a375,
+-	0x1009d: 0xe0006f85, 0x1009e: 0xe000564c, 0x1009f: 0xe0005bf4,
+-	0x100a0: 0xe0005827, 0x100a1: 0xe0009ad3, 0x100a2: 0xe0006bd6, 0x100a3: 0xe00084a4,
+-	0x100a4: 0xe0004b16, 0x100a6: 0xe00092e5,
+-	0x100b3: 0xe000a379,
+-	0x100b5: 0xe000549e,
+-	0x100b8: 0xe00049ca, 0x100ba: 0xe000822d, 0x100bb: 0xe0004abe,
+-	0x100be: 0xe0004817, 0x100bf: 0xe0005d9c,
+-	// Block 0x403, offset 0x100c0
+-	0x100c1: 0xe0005d80, 0x100c2: 0xe0004dde, 0x100c3: 0xe0004037,
+-	0x100c5: 0xe0009a20,
+-	0x100c8: 0xe000a442, 0x100ca: 0xe0004952,
+-	0x100cc: 0xe0009cde, 0x100cd: 0xe0009a23, 0x100cf: 0xe0009a26,
+-	0x100d0: 0xe0006284,
+-	0x100d5: 0xe0006509, 0x100d6: 0xe000a108, 0x100d7: 0xe0006413,
+-	0x100d9: 0xe0006fac,
+-	0x100e0: 0xe00082e1, 0x100e1: 0xe00046c0, 0x100e3: 0xe0003f3b,
+-	0x100e7: 0xe0009f20,
+-	0x100ea: 0xe000650c,
+-	0x100ef: 0xe000a273,
+-	0x100f1: 0xe0004a31,
+-	0x100f6: 0xe00048b9,
+-	0x100f9: 0xe0009b44,
+-	0x100fd: 0xe00074fe, 0x100fe: 0xe0009997, 0x100ff: 0xe0004ecc,
+-	// Block 0x404, offset 0x10100
+-	0x10100: 0xe000481a, 0x10101: 0xe0007154, 0x10103: 0xe00090bb,
+-	0x10104: 0xe0008171, 0x10105: 0xe000683f, 0x10107: 0xe0006f89,
+-	0x10108: 0xe000781f, 0x10109: 0xe000a3d9, 0x1010a: 0xe0005ee3,
+-	0x1010d: 0xe00059e6,
+-	0x10111: 0xe000650f, 0x10112: 0xe00089b4, 0x10113: 0xe00096bb,
+-	0x10114: 0xe0009ef4, 0x10117: 0xe0004d9f,
+-	0x1011a: 0xe0005e7f,
+-	0x1011c: 0xe0006288, 0x1011e: 0xe000617f,
+-	0x10120: 0xe0008690, 0x10121: 0xe00082c5,
+-	0x10126: 0xe0004718,
+-	0x10128: 0xe0006acb,
+-	0x1012c: 0xe00072fe, 0x1012e: 0xe00095ab, 0x1012f: 0xe0005cc3,
+-	0x10130: 0xe00080ad, 0x10131: 0xe0007d5e, 0x10132: 0xe0006c6c, 0x10133: 0xe0008bb4,
+-	0x10134: 0xe0003da3, 0x10135: 0xe000536a, 0x10137: 0xe00049ce,
+-	0x10138: 0xe0006748, 0x10139: 0xe000a436, 0x1013a: 0xe0004b4a, 0x1013b: 0xe0003dcb,
+-	0x1013d: 0xe0008bb0, 0x1013e: 0xe00071f6, 0x1013f: 0xe000426c,
+-	// Block 0x405, offset 0x10140
+-	0x10144: 0xe000736f,
+-	0x10153: 0xe0007312,
+-	0x10156: 0xe0006017,
+-	0x10158: 0xe00058a9, 0x1015a: 0xe000a333,
+-	0x1015d: 0xe0008937, 0x1015f: 0xe0007ca5,
+-	0x10160: 0xe000954b,
+-	0x10165: 0xe0004a02, 0x10166: 0xe0009bae,
+-	0x1016a: 0xe0004b4e,
+-	0x1016d: 0xe000768e, 0x1016e: 0xe0007003,
+-	0x10172: 0xe00054d1,
+-	0x10179: 0xe00048bc, 0x1017b: 0xe0004070,
+-	// Block 0x406, offset 0x10180
+-	0x10183: 0xe0008ee6,
+-	0x10185: 0xe0008f0e,
+-	0x10188: 0xe0007b8d, 0x10189: 0xe0008e09, 0x1018a: 0xe0004bbe, 0x1018b: 0xe0007b90,
+-	0x1018d: 0xe0005ee7,
+-	0x10194: 0xe0006e40, 0x10196: 0xe0009510, 0x10197: 0xe0006d4d,
+-	0x1019b: 0xe0005eeb,
+-	0x1019f: 0xe0006e01,
+-	0x101a1: 0xe00077a7, 0x101a2: 0xe0009377, 0x101a3: 0xe000481d,
+-	0x101a4: 0xe00043c0, 0x101a5: 0xe0004820, 0x101a6: 0xe0005603,
+-	0x101a8: 0xe000513f, 0x101a9: 0xe00043c3, 0x101aa: 0xe0008c13, 0x101ab: 0xe0004a5e,
+-	0x101ac: 0xe0006bf7, 0x101ad: 0xe000990b, 0x101ae: 0xe00087e4, 0x101af: 0xe0003d2a,
+-	0x101b0: 0xe00097b2, 0x101b1: 0xe0008d6c, 0x101b2: 0xe00066a9, 0x101b3: 0xe0007b93,
+-	0x101b4: 0xe00048bf, 0x101b5: 0xe00098b5, 0x101b6: 0xe0009f24,
+-	0x101b8: 0xe00066ac,
+-	// Block 0x407, offset 0x101c0
+-	0x101c1: 0xe0007bed, 0x101c3: 0xe000a482,
+-	0x101c4: 0xe0003da7,
+-	0x101c8: 0xe0009cc2, 0x101c9: 0xe0004d3a, 0x101ca: 0xe00084a8, 0x101cb: 0xe0009373,
+-	0x101cc: 0xe00051fc, 0x101cd: 0xe0005baf, 0x101ce: 0xe000a336, 0x101cf: 0xe00058ac,
+-	0x101d0: 0xe0009808, 0x101d1: 0xe0009dcd,
+-	0x101db: 0xe0004962,
+-	0x101dd: 0xe0005918, 0x101df: 0xe0007f69,
+-	0x101e0: 0xe00099f3,
+-	0x101e6: 0xe0006356,
+-	0x101e9: 0xe000641b, 0x101eb: 0xe0009c82,
+-	0x101ec: 0xe0007f2d, 0x101ee: 0xe00085c4,
+-	0x101f3: 0xe0007825,
+-	0x101f6: 0xe0004e98,
+-	0x101f8: 0xe000a4b6, 0x101f9: 0xe0009513, 0x101fb: 0xe0005d58,
+-	0x101fc: 0xe000a339, 0x101fd: 0xe000a354, 0x101fe: 0xe0007822,
+-	// Block 0x408, offset 0x10200
+-	0x10200: 0xe0009bd2, 0x10202: 0xe00054a1,
+-	0x10206: 0xe0005ae8,
+-	0x10208: 0xe0008718, 0x1020a: 0xe00043c6,
+-	0x1020e: 0xe0009093,
+-	0x10211: 0xe0009713,
+-	0x1021d: 0xe000738b,
+-	0x10222: 0xe0004eba,
+-	0x10224: 0xe0005607, 0x10226: 0xe0007e57,
+-	0x10228: 0xe0008a5f, 0x1022a: 0xe0008a5c, 0x1022b: 0xe000920f,
+-	0x10230: 0xe00081db, 0x10231: 0xe00043c9, 0x10233: 0xe0005da8,
+-	0x10235: 0xe0003d2d, 0x10236: 0xe0004e3e,
+-	0x1023b: 0xe0007084,
+-	0x1023c: 0xe0009fd9, 0x1023d: 0xe0005bb3, 0x1023f: 0xe000409d,
+-	// Block 0x409, offset 0x10240
+-	0x10240: 0xe0008423,
+-	0x10244: 0xe00051e4, 0x10246: 0xe0009a29, 0x10247: 0xe0009b70,
+-	0x1024b: 0xe000674b,
+-	0x1024c: 0xe000a10b, 0x1024d: 0xe0009d80, 0x1024e: 0xe0004823, 0x1024f: 0xe000776e,
+-	0x10250: 0xe0006359,
+-	0x10256: 0xe0003d78,
+-	0x10260: 0xe0008ddc, 0x10262: 0xe00071fa,
+-	0x10264: 0xe0009669, 0x10265: 0xe000a516,
+-	0x10268: 0xe0008193, 0x1026b: 0xe0008c16,
+-	0x1026c: 0xe0004787, 0x1026f: 0xe0003dcf,
+-	0x10273: 0xe0009d50,
+-	0x10278: 0xe0009c86, 0x1027b: 0xe000a41b,
+-	0x1027c: 0xe0004721, 0x1027d: 0xe00080b1, 0x1027f: 0xe000805c,
+-	// Block 0x40a, offset 0x10280
+-	0x10280: 0xe0007315, 0x10281: 0xe0009af7, 0x10282: 0xe00070d4, 0x10283: 0xe0005238,
+-	0x10284: 0xe000a0cc, 0x10286: 0xe00095ae, 0x10287: 0xe0007979,
+-	0x10288: 0xe0009cc6, 0x10289: 0xe00083b8,
+-	0x102a1: 0xe0007ca9,
+-	0x102a5: 0xe0003d30, 0x102a6: 0xe000719c,
+-	0x102a8: 0xe0009291, 0x102a9: 0xe00058f4,
+-	0x102ad: 0xe0004489, 0x102ae: 0xe000a2ee,
+-	0x102b1: 0xe0005f8f, 0x102b2: 0xe000914f,
+-	0x102ba: 0xe0009a2c,
+-	0x102bd: 0xe000430c, 0x102bf: 0xe0003d7b,
+-	// Block 0x40b, offset 0x102c0
+-	0x102c4: 0xe000991e, 0x102c6: 0xe00066af, 0x102c7: 0xe0008cb8,
+-	0x102c9: 0xe0007336,
+-	0x102ce: 0xe00058af, 0x102cf: 0xe000a519,
+-	0x102d0: 0xe0005009,
+-	0x102d4: 0xe0007870,
+-	0x102dc: 0xe0005a52,
+-	0x102eb: 0xe0004ba6,
+-	0x102ee: 0xe0006e04, 0x102ef: 0xe0007dd6,
+-	0x102f1: 0xe0008f56, 0x102f3: 0xe00054d4,
+-	0x102f5: 0xe0007286,
+-	0x102fc: 0xe0006843, 0x102fe: 0xe000966c,
+-	// Block 0x40c, offset 0x10300
+-	0x10300: 0xe0007339, 0x10302: 0xe0004e8a,
+-	0x10304: 0xe00096bf, 0x10306: 0xe000686b,
+-	0x1030f: 0xe0005d5c,
+-	0x10313: 0xe0004357,
+-	0x10316: 0xe0004f81, 0x10317: 0xe0004fc9,
+-	0x1031c: 0xe0009177, 0x1031e: 0xe000716c,
+-	0x10323: 0xe0009c8a,
+-	0x1033b: 0xe0007006,
+-	0x1033c: 0xe0008832, 0x1033d: 0xe00072a6, 0x1033e: 0xe0009420,
+-	// Block 0x40d, offset 0x10340
+-	0x10340: 0xe0004049, 0x10341: 0xe000793d, 0x10343: 0xe0004db3,
+-	0x10344: 0xe0006a17, 0x10346: 0xe0009153, 0x10347: 0xe000530f,
+-	0x10349: 0xe000a33c, 0x1034a: 0xe0009c8e, 0x1034b: 0xe0009213,
+-	0x10351: 0xe0007f81, 0x10353: 0xe0007ab0,
+-	0x10354: 0xe00071fe,
+-	0x10358: 0xe00090bf, 0x10359: 0xe000a3dc, 0x1035a: 0xe000a16f,
+-	0x1035c: 0xe000a4e0, 0x1035d: 0xe0003e73, 0x1035e: 0xe0008bb8, 0x1035f: 0xe0007da0,
+-	0x10363: 0xe000a357,
+-	0x10364: 0xe000a257, 0x10367: 0xe000a3bd,
+-	0x10368: 0xe0005480, 0x10369: 0xe0007dd9, 0x1036a: 0xe000686f, 0x1036b: 0xe0004d52,
+-	0x1036c: 0xe000478a, 0x1036e: 0xe0004ef1,
+-	0x10370: 0xe000706c,
+-	// Block 0x40e, offset 0x10380
+-	0x10385: 0xe000a33f, 0x10387: 0xe0006907,
+-	0x10389: 0xe0006c6f,
+-	0x10391: 0xe0009ce2,
+-	0x10394: 0xe0008cbc,
+-	0x1039a: 0xe0007828, 0x1039b: 0xe0004230,
+-	0x1039c: 0xe0004c12, 0x1039f: 0xe0008e0c,
+-	0x103a0: 0xe000535e, 0x103a2: 0xe0007911, 0x103a3: 0xe00066b2,
+-	0x103a4: 0xe0009569,
+-	0x103b7: 0xe0007873,
+-	0x103bd: 0xe0006d50, 0x103be: 0xe0008a62, 0x103bf: 0xe000976b,
+-	// Block 0x40f, offset 0x103c0
+-	0x103c4: 0xe00047cf, 0x103c6: 0xe0009717,
+-	0x103c8: 0xe000893a, 0x103c9: 0xe0003d33,
+-	0x103cc: 0xe0009ad6, 0x103cd: 0xe00057d0, 0x103ce: 0xe0007266,
+-	0x103d0: 0xe00047d2, 0x103d2: 0xe0009fbe,
+-	0x103d4: 0xe0004826, 0x103d6: 0xe0009028, 0x103d7: 0xe0006873,
+-	0x103e9: 0xe000a135,
+-	0x103ec: 0xe00093c0, 0x103ef: 0xe0006bfa,
+-	0x103f2: 0xe00088b0,
+-	0x103f4: 0xe0009516, 0x103f6: 0xe0006faf, 0x103f7: 0xe000a054,
+-	0x103f8: 0xe0005d38, 0x103f9: 0xe000577a, 0x103fb: 0xe000a51c,
+-	0x103ff: 0xe0005d4c,
+-	// Block 0x410, offset 0x10400
+-	0x10401: 0xe0007876, 0x10402: 0xe0008b58,
+-	0x10409: 0xe0004fcd, 0x1040b: 0xe0009811,
+-	0x1040d: 0xe00092e8, 0x1040e: 0xe000768a, 0x1040f: 0xe000a4c6,
+-	0x10413: 0xe0009df1,
+-	0x10424: 0xe0004baa, 0x10425: 0xe0004e60,
+-	0x10428: 0xe0004c15, 0x10429: 0xe0007202, 0x1042a: 0xe000893d, 0x1042b: 0xe000a4e3,
+-	0x1042c: 0xe0006995, 0x1042d: 0xe00047d5, 0x1042f: 0xe000733c,
+-	0x10432: 0xe0009660,
+-	0x10434: 0xe000641f, 0x10436: 0xe0003e97,
+-	0x10438: 0xe0009815, 0x1043a: 0xe00070d8,
+-	// Block 0x411, offset 0x10440
+-	0x10440: 0xe0004e24,
+-	0x10444: 0xe000a2d2, 0x10446: 0xe000a2f1, 0x10447: 0xe0009bd5,
+-	0x1044f: 0xe000926a,
+-	0x10459: 0xe00047d8, 0x1045a: 0xe0007f31,
+-	0x10465: 0xe00075ca,
+-	0x1046c: 0xe0006602, 0x1046e: 0xe0009dd1,
+-	0x10473: 0xe00044a5,
+-	0x10474: 0xe000752a, 0x10476: 0xe00073ab,
+-	0x1047c: 0xe0008231,
+-	// Block 0x412, offset 0x10480
+-	0x10480: 0xe00085c8, 0x10481: 0xe0006b67, 0x10482: 0xe000a318, 0x10483: 0xe00082c9,
+-	0x10488: 0xe00077da, 0x10489: 0xe000532a, 0x1048a: 0xe0004dc3,
+-	0x1048d: 0xe000a4e6,
+-	0x10491: 0xe0009337,
+-	0x1049a: 0xe0006d53, 0x1049b: 0xe00066b5,
+-	0x1049e: 0xe000a276, 0x1049f: 0xe00070dc,
+-	0x104a0: 0xe00080b5,
+-	0x104a6: 0xe0007642,
+-	0x104ab: 0xe000a0c8,
+-	0x104ae: 0xe000797c,
+-	0x104b0: 0xe00044b9,
+-	0x104b7: 0xe0004ad6,
+-	0x104b9: 0xe00055c7, 0x104ba: 0xe00043cc,
+-	0x104bf: 0xe0007e5a,
+-	// Block 0x413, offset 0x104c0
+-	0x104c1: 0xe0007f35, 0x104c2: 0xe000a0a8, 0x104c3: 0xe0009a2f,
+-	0x104c4: 0xe00074a0,
+-	0x104c8: 0xe00049d2, 0x104c9: 0xe00074be, 0x104ca: 0xe0009243, 0x104cb: 0xe000493a,
+-	0x104cd: 0xe0007d61,
+-	0x104d2: 0xe0007cb1, 0x104d3: 0xe0007cad,
+-	0x104d6: 0xe00050d0,
+-	0x104d8: 0xe0004ef5,
+-	0x104dc: 0xe0007d0d, 0x104df: 0xe000980b,
+-	0x104e5: 0xe00056c5,
+-	0x104e8: 0xe00083bb,
+-	0x104ec: 0xe0007879, 0x104ed: 0xe0004a61, 0x104ee: 0xe000658a,
+-	0x104f0: 0xe0008c19,
+-	0x104fb: 0xe0004c18,
+-	0x104fe: 0xe0004bd6,
+-	// Block 0x414, offset 0x10500
+-	0x10500: 0xe0008c1c, 0x10502: 0xe00098e3,
+-	0x10507: 0xe0004ac2,
+-	0x1050a: 0xe0005fab,
+-	0x1050c: 0xe0006467, 0x1050d: 0xe0004f85, 0x1050e: 0xe0003eb3, 0x1050f: 0xe0006080,
+-	0x10510: 0xe0008a2f, 0x10511: 0xe0004051,
+-	0x10521: 0xe0009885,
+-	0x10524: 0xe00044bd, 0x10526: 0xe000971b, 0x10527: 0xe0009097,
+-	0x10528: 0xe000805f, 0x10529: 0xe0003eff, 0x1052a: 0xe00099c7,
+-	0x1052e: 0xe000507f, 0x1052f: 0xe0006083,
+-	0x10530: 0xe0004270, 0x10531: 0xe0007302, 0x10533: 0xe0007ab3,
+-	0x10535: 0xe0004829, 0x10537: 0xe0003d7e,
+-	0x10538: 0xe00048c2, 0x1053b: 0xe0008c73,
+-	0x1053c: 0xe00096c3,
+-	// Block 0x415, offset 0x10540
+-	0x10542: 0xe0006d56,
+-	0x10548: 0xe000507c, 0x1054b: 0xe0009f48,
+-	0x1054c: 0xe000523c,
+-	0x10553: 0xe0009d53,
+-	0x10555: 0xe000a35a,
+-	0x1055e: 0xe0009693,
+-	0x10560: 0xe0007f11, 0x10562: 0xe000482c, 0x10563: 0xe0007cb5,
+-	0x10564: 0xe0008da4,
+-	0x10578: 0xe00079e0,
+-	0x1057d: 0xe0007f39,
+-	// Block 0x416, offset 0x10580
+-	0x10583: 0xe0007318,
+-	0x10586: 0xe0003dd3, 0x10587: 0xe0007b0d,
+-	0x10588: 0xe0008b18, 0x10589: 0xe0009f28, 0x1058b: 0xe0005abe,
+-	0x1058e: 0xe0006b83, 0x1058f: 0xe0007646,
+-	0x10591: 0xe000917b, 0x10592: 0xe00053aa,
+-	0x1059c: 0xe00073d9, 0x1059f: 0xe000759a,
+-	0x105a0: 0xe000635c,
+-	0x105a4: 0xe000658d,
+-	0x105ad: 0xe00097d9,
+-	0x105b0: 0xe0008ff1, 0x105b3: 0xe0003f03,
+-	0x105b4: 0xe0007030, 0x105b7: 0xe0008dc4,
+-	0x105b9: 0xe000604d, 0x105ba: 0xe0004c1b, 0x105bb: 0xe0008b5c,
+-	0x105bc: 0xe0004c1e, 0x105bd: 0xe0006c72,
+-	// Block 0x417, offset 0x105c0
+-	0x105c0: 0xe0004986, 0x105c2: 0xe000500d, 0x105c3: 0xe00044e1,
+-	0x105c5: 0xe00041a0, 0x105c6: 0xe0009841,
+-	0x105c8: 0xe0003f5b, 0x105c9: 0xe0007eb1, 0x105ca: 0xe00071ba, 0x105cb: 0xe00064f7,
+-	0x105d7: 0xe00051e8,
+-	0x105d9: 0xe00080e9,
+-	0x105dd: 0xe00045cc, 0x105de: 0xe00091e3,
+-	0x105e0: 0xe000a35d, 0x105e1: 0xe000623a, 0x105e3: 0xe0007bf0,
+-	0x105e4: 0xe0008835, 0x105e6: 0xe000439c, 0x105e7: 0xe00075ce,
+-	0x105ea: 0xe0003eb7,
+-	0x105ef: 0xe0007a5f,
+-	0x105f0: 0xe00074e6, 0x105f1: 0xe000623d,
+-	0x105f4: 0xe00082e5, 0x105f5: 0xe00050d3,
+-	0x105fa: 0xe000435a,
+-	// Block 0x418, offset 0x10600
+-	0x10600: 0xe000621b,
+-	0x10609: 0xe000909b, 0x1060a: 0xe0004733, 0x1060b: 0xe0007702,
+-	0x1060c: 0xe0009787, 0x1060d: 0xe0006fa1, 0x1060f: 0xe0004007,
+-	0x10610: 0xe0006c75, 0x10611: 0xe0006bfd, 0x10612: 0xe0007009,
+-	0x10614: 0xe0009777, 0x10617: 0xe00050d6,
+-	0x10618: 0xe0005011, 0x10619: 0xe000443b, 0x1061a: 0xe000937b,
+-	0x1061e: 0xe00068fb,
+-	0x10621: 0xe000853c, 0x10622: 0xe000782b,
+-	0x10624: 0xe000a37d,
+-	0x10629: 0xe00076ba,
+-	0x10635: 0xe0008cc0,
+-	0x10639: 0xe0008eea,
+-	0x1063c: 0xe0008540, 0x1063d: 0xe00068d7, 0x1063e: 0xe0006e44,
+-	// Block 0x419, offset 0x10640
+-	0x10640: 0xe0008c76, 0x10641: 0xe0005a2e, 0x10643: 0xe0004274,
+-	0x10645: 0xe000693b,
+-	0x10649: 0xe0007b11, 0x1064a: 0xe00086b8,
+-	0x1064d: 0xe0004ccc,
+-	0x10650: 0xe0004b52, 0x10653: 0xe0005cc6,
+-	0x1065c: 0xe00093d8, 0x1065d: 0xe0007ab6, 0x1065e: 0xe0008bd8, 0x1065f: 0xe0009df4,
+-	0x10661: 0xe0006a8b, 0x10663: 0xe00062c0,
+-	0x10668: 0xe0005d44, 0x10669: 0xe00051a8, 0x1066b: 0xe0008b60,
+-	0x1066e: 0xe000966f,
+-	0x10670: 0xe0004fd1, 0x10671: 0xe00052f3, 0x10673: 0xe0006423,
+-	0x1067a: 0xe000782e, 0x1067b: 0xe00082e9,
+-	0x1067e: 0xe0003deb,
+-	// Block 0x41a, offset 0x10680
+-	0x10681: 0xe0006143, 0x10683: 0xe0003fbf,
+-	0x10685: 0xe0007919, 0x10687: 0xe0004ef9,
+-	0x1068e: 0xe000a381,
+-	0x10691: 0xe0009bea, 0x10693: 0xe00072d2,
+-	0x10694: 0xe0005142, 0x10695: 0xe0009fdc,
+-	0x10698: 0xe00057a6, 0x10699: 0xe00046c4, 0x1069a: 0xe000567f,
+-	0x1069c: 0xe0004fd5, 0x1069d: 0xe0007e5d, 0x1069e: 0xe0004736, 0x1069f: 0xe00056e5,
+-	0x106a4: 0xe000741c,
+-	0x106ab: 0xe00066b8,
+-	0x106ac: 0xe0008141, 0x106af: 0xe00082ed,
+-	0x106b9: 0xe000811d, 0x106ba: 0xe0009fdf, 0x106bb: 0xe000693e,
+-	0x106bd: 0xe0006d59,
+-	// Block 0x41b, offset 0x106c0
+-	0x106c6: 0xe0006330,
+-	0x106c8: 0xe00083e8,
+-	0x106cf: 0xe0009bb1,
+-	0x106d0: 0xe0009f8c,
+-	0x106d4: 0xe0004c21, 0x106d5: 0xe00069b3, 0x106d6: 0xe0007a2f,
+-	0x106d9: 0xe0006e48, 0x106da: 0xe0004edc,
+-	0x106dc: 0xe00073c4,
+-	0x106e2: 0xe0005c8f,
+-	0x106e4: 0xe00080ed, 0x106e5: 0xe00045cf, 0x106e7: 0xe0005082,
+-	0x106e9: 0xe00090c3, 0x106ea: 0xe00097b5, 0x106eb: 0xe000635f,
+-	0x106ec: 0xe0009663, 0x106ed: 0xe0007a62, 0x106ee: 0xe00072e6, 0x106ef: 0xe0009d36,
+-	0x106f1: 0xe00070fc,
+-	0x106f7: 0xe000801d,
+-	0x106f8: 0xe00045d2,
+-	0x106fe: 0xe0009ef8,
+-	// Block 0x41c, offset 0x10700
+-	0x10704: 0xe000752e, 0x10707: 0xe0004c24,
+-	0x10708: 0xe0004dd5, 0x10709: 0xe00062f0,
+-	0x1070e: 0xe0004a64, 0x1070f: 0xe0008a65,
+-	0x10710: 0xe000a173, 0x10711: 0xe000435d, 0x10713: 0xe0008e30,
+-	0x10714: 0xe0006427, 0x10715: 0xe0009e34, 0x10717: 0xe0009859,
+-	0x10718: 0xe000836d, 0x1071a: 0xe0009d56,
+-	0x10720: 0xe0008544, 0x10722: 0xe00066bb,
+-	0x10727: 0xe0007831,
+-	0x10729: 0xe00055a7, 0x1072a: 0xe000974f, 0x1072b: 0xe0007ec9,
+-	0x1072c: 0xe00082f1, 0x1072d: 0xe00069b7, 0x1072e: 0xe000642b,
+-	0x10733: 0xe0004ded,
+-	0x10734: 0xe0004e2f, 0x10736: 0xe0004de1,
+-	0x10738: 0xe0003def,
+-	0x1073d: 0xe0009fe2,
+-	// Block 0x41d, offset 0x10740
+-	0x10742: 0xe0007572, 0x10743: 0xe0006512,
+-	0x10744: 0xe0005a7a,
+-	0x1074a: 0xe0008145,
+-	0x10751: 0xe00098b8, 0x10752: 0xe0009868, 0x10753: 0xe0004c27,
+-	0x10756: 0xe0007a65, 0x10757: 0xe0004b76,
+-	0x10759: 0xe0005cc9,
+-	0x1075d: 0xe0008371,
+-	0x10763: 0xe0006590,
+-	0x10765: 0xe0009672, 0x10767: 0xe00079e4,
+-	0x10768: 0xe0005faf,
+-	0x1076c: 0xe000985c, 0x1076f: 0xe00094a1,
+-	0x10772: 0xe0004f6d,
+-	0x10779: 0xe0005ac1, 0x1077b: 0xe0009043,
+-	0x1077e: 0xe00091e7,
+-	// Block 0x41e, offset 0x10780
+-	0x10783: 0xe000871c,
+-	0x10786: 0xe0005bf7,
+-	0x10788: 0xe000560b, 0x10789: 0xe0008196, 0x1078b: 0xe0006fb2,
+-	0x1078d: 0xe00067c7,
+-	0x10790: 0xe0008426, 0x10791: 0xe00043cf, 0x10792: 0xe000674e, 0x10793: 0xe0006b87,
+-	0x10794: 0xe0007d64,
+-	0x10799: 0xe0008149, 0x1079a: 0xe0007a68,
+-	0x1079c: 0xe0003f5f, 0x1079d: 0xe0008a56, 0x1079e: 0xe0004d46,
+-	0x107a3: 0xe00047db,
+-	0x107a4: 0xe00048c5, 0x107a5: 0xe0005c39, 0x107a6: 0xe0003df3,
+-	0x107a8: 0xe0008020, 0x107aa: 0xe0008d70,
+-	0x107ac: 0xe000a4e9, 0x107ae: 0xe0009d02,
+-	0x107b8: 0xe00075d2, 0x107ba: 0xe00070e0, 0x107bb: 0xe00080b9,
+-	0x107bf: 0xe0008199,
+-	// Block 0x41f, offset 0x107c0
+-	0x107c1: 0xe0007d67, 0x107c3: 0xe0007a23,
+-	0x107c9: 0xe000668a,
+-	0x107d1: 0xe00066be, 0x107d3: 0xe0005de4,
+-	0x107d8: 0xe0004dc7, 0x107d9: 0xe0009f90, 0x107db: 0xe0007834,
+-	0x107dc: 0xe0004d59, 0x107df: 0xe00075d6,
+-	0x107e0: 0xe0007088, 0x107e3: 0xe0008874,
+-	0x107e5: 0xe000716f, 0x107e7: 0xe00097dc,
+-	0x107e9: 0xe00059ea,
+-	0x107ed: 0xe000733f,
+-	0x107f5: 0xe0009423, 0x107f6: 0xe0009519,
+-	0x107fc: 0xe0008f5a, 0x107ff: 0xe000719f,
+-	// Block 0x420, offset 0x10800
+-	0x10800: 0xe00071a2, 0x10801: 0xe00057a9,
+-	0x10806: 0xe0009888,
+-	0x10809: 0xe0007994,
+-	0x1080c: 0xe0006e7c,
+-	0x10810: 0xe000797f,
+-	0x1081a: 0xe000a090,
+-	0x10822: 0xe0006515, 0x10823: 0xe00080f1,
+-	0x10826: 0xe0006362, 0x10827: 0xe00087e8,
+-	0x1082a: 0xe00053da,
+-	0x10832: 0xe000a138,
+-	0x10837: 0xe00087ec,
+-	0x1083f: 0xe0006998,
+-	// Block 0x421, offset 0x10840
+-	0x10844: 0xe0005de7,
+-	0x1084d: 0xe00063c8,
+-	0x10852: 0xe0005ac4, 0x10853: 0xe000a25b,
+-	0x10855: 0xe00072aa,
+-	0x1085a: 0xe0005dab, 0x1085b: 0xe0007cb9,
+-	0x1085f: 0xe0006b03,
+-	0x10862: 0xe0005c3c,
+-	0x10864: 0xe0006fb5, 0x10867: 0xe0007a2c,
+-	0x1086a: 0xe000787c,
+-	0x10873: 0xe0007070,
+-	0x10875: 0xe0008189,
+-	0x1087a: 0xe0005dea, 0x1087b: 0xe0005f43,
+-	0x1087c: 0xe00078e1, 0x1087d: 0xe00059b3, 0x1087e: 0xe00048c8, 0x1087f: 0xe0004748,
+-	// Block 0x422, offset 0x10880
+-	0x10881: 0xe0003d36, 0x10882: 0xe0006d5c,
+-	0x10884: 0xe0007cbd,
+-	0x10888: 0xe00073af, 0x10889: 0xe0008d74, 0x1088b: 0xe0004e78,
+-	0x1088c: 0xe0009eec,
+-	0x10896: 0xe0009ad9, 0x10897: 0xe00048cb,
+-	0x10899: 0xe0006a8f, 0x1089a: 0xe0005a32, 0x1089b: 0xe00077dd,
+-	0x108a0: 0xe00058f7, 0x108a1: 0xe00084ac, 0x108a2: 0xe0004a8e, 0x108a3: 0xe0007502,
+-	0x108a5: 0xe00085cc, 0x108a6: 0xe0009d06,
+-	0x108a9: 0xe0004e90, 0x108ab: 0xe0005c3f,
+-	0x108ad: 0xe000a057, 0x108ae: 0xe000a05a, 0x108af: 0xe000787f,
+-	0x108b6: 0xe00092eb,
+-	0x108ba: 0xe0009c52, 0x108bb: 0xe0009c56,
+-	0x108bd: 0xe000577d,
+-	// Block 0x423, offset 0x108c0
+-	0x108c0: 0xe0004a91,
+-	0x108c5: 0xe000a10e,
+-	0x108c8: 0xe0007ab9, 0x108c9: 0xe000a4ec, 0x108cb: 0xe0006a1b,
+-	0x108cc: 0xe000478d,
+-	0x108d6: 0xe00099f6,
+-	0x108d9: 0xe0008375, 0x108db: 0xe0009ea8,
+-	0x108e5: 0xe0008940,
+-	0x108e8: 0xe00081de, 0x108ea: 0xe0006606,
+-	0x108ed: 0xe0004de4,
+-	0x108f0: 0xe0007776, 0x108f2: 0xe0004e7b,
+-	0x108f4: 0xe0007772,
+-	0x108fe: 0xe0005386, 0x108ff: 0xe000764a,
+-	// Block 0x424, offset 0x10900
+-	0x10900: 0xe0006877, 0x10903: 0xe0007420,
+-	0x10905: 0xe0006b3f,
+-	0x1090c: 0xe0005553,
+-	0x10910: 0xe000819c, 0x10911: 0xe0009ed4,
+-	0x10914: 0xe0004541, 0x10915: 0xe0008181, 0x10916: 0xe00081e1, 0x10917: 0xe000819f,
+-	0x10918: 0xe00089a8, 0x1091a: 0xe0006365, 0x1091b: 0xe000993c,
+-	0x1091c: 0xe00081a2, 0x1091d: 0xe000a2f4, 0x1091f: 0xe0005b23,
+-	0x10921: 0xe00097df, 0x10923: 0xe0004360,
+-	0x10924: 0xe00043d2, 0x10925: 0xe0004e41,
+-	0x10929: 0xe0009d59, 0x1092b: 0xe0006cd7,
+-	0x10930: 0xe0006e4c, 0x10931: 0xe000827d,
+-	0x10935: 0xe0006368, 0x10936: 0xe00081e4,
+-	0x10938: 0xe0009bee, 0x1093a: 0xe0007ddc,
+-	0x1093c: 0xe0007516, 0x1093f: 0xe00067cb,
+-	// Block 0x425, offset 0x10940
+-	0x10941: 0xe000846e, 0x10942: 0xe0007b5d,
+-	0x10945: 0xe00050bb, 0x10947: 0xe0007b96,
+-	0x10948: 0xe0006d5f, 0x10949: 0xe000721e, 0x1094a: 0xe0003d81, 0x1094b: 0xe0006d03,
+-	0x1094c: 0xe0007998, 0x1094f: 0xe0004761,
+-	0x10953: 0xe000628c,
+-	0x10955: 0xe000978f, 0x10956: 0xe000a2d6, 0x10957: 0xe00089c4,
+-	0x10958: 0xe0004618, 0x10959: 0xe0008a68, 0x1095a: 0xe0008720, 0x1095b: 0xe000799c,
+-	0x1095c: 0xe0007fc6,
+-	0x10962: 0xe000404d, 0x10963: 0xe0006a1f,
+-	0x10964: 0xe0007100, 0x10965: 0xe0007ddf, 0x10966: 0xe000a177,
+-	0x1096c: 0xe0006b8b, 0x1096e: 0xe00049a6,
+-	0x10970: 0xe00083be, 0x10973: 0xe0009d5c,
+-	0x10974: 0xe00075da, 0x10975: 0xe0006c00, 0x10976: 0xe0003d39,
+-	0x10978: 0xe000708c, 0x10979: 0xe0007b15,
+-	0x1097f: 0xe0006e50,
+-	// Block 0x426, offset 0x10980
+-	0x10980: 0xe0008ff4, 0x10982: 0xe00084b0, 0x10983: 0xe0007cc1,
+-	0x10984: 0xe0004c2a, 0x10985: 0xe00080bd, 0x10986: 0xe0005e67, 0x10987: 0xe000482f,
+-	0x1098c: 0xe000636b,
+-	0x10990: 0xe0005ac7, 0x10992: 0xe0009c16, 0x10993: 0xe0007b99,
+-	0x10994: 0xe0007034, 0x10996: 0xe0009635, 0x10997: 0xe0004e18,
+-	0x10998: 0xe00095b1,
+-	0x1099e: 0xe00059c2, 0x1099f: 0xe0008eca,
+-	0x109a1: 0xe00045a5, 0x109a2: 0xe0009615,
+-	0x109a4: 0xe0007837, 0x109a5: 0xe0007a6b, 0x109a6: 0xe0007104, 0x109a7: 0xe0004e14,
+-	0x109a8: 0xe0008ff7, 0x109a9: 0xe0007114, 0x109ab: 0xe00066c1,
+-	0x109ac: 0xe000461c, 0x109ad: 0xe0009fc1, 0x109ae: 0xe000575c, 0x109af: 0xe0008b1c,
+-	0x109b0: 0xe000a1af,
+-	0x109b5: 0xe000937f, 0x109b6: 0xe0006240,
+-	0x109b8: 0xe0009363, 0x109ba: 0xe00066c4,
+-	// Block 0x427, offset 0x109c0
+-	0x109c1: 0xe00062f4,
+-	0x109c4: 0xe00066c7, 0x109c5: 0xe0004b02, 0x109c7: 0xe00082f5,
+-	0x109c8: 0xe0008548, 0x109c9: 0xe0007d6a, 0x109ca: 0xe00089ac, 0x109cb: 0xe0007118,
+-	0x109cc: 0xe0008acb, 0x109cd: 0xe0005085, 0x109ce: 0xe00050d9, 0x109cf: 0xe0006c03,
+-	0x109d1: 0xe0006c06,
+-	0x109d4: 0xe0008062, 0x109d6: 0xe000919f,
+-	0x109d9: 0xe000687b,
+-	0x109df: 0xe0006a93,
+-	0x109e0: 0xe0006a97,
+-	0x109e4: 0xe0007b9c,
+-	0x109e8: 0xe0005fb3, 0x109eb: 0xe0007a14,
+-	0x109f1: 0xe000951c,
+-	0x109f8: 0xe0006fb8, 0x109f9: 0xe0007ecd, 0x109fa: 0xe0009063, 0x109fb: 0xe00043d5,
+-	0x109fc: 0xe0004eb4, 0x109fe: 0xe0005dae, 0x109ff: 0xe0004e75,
+-	// Block 0x428, offset 0x10a00
+-	0x10a00: 0xe000493e, 0x10a01: 0xe0006593,
+-	0x10a05: 0xe0004073, 0x10a06: 0xe0004363, 0x10a07: 0xe00085d0,
+-	0x10a08: 0xe000498a, 0x10a0b: 0xe00078b5,
+-	0x10a0d: 0xe0006fbe, 0x10a0e: 0xe0006fbb,
+-	0x10a10: 0xe0004b06, 0x10a11: 0xe0006acf,
+-	0x10a15: 0xe000854c,
+-	0x10a1b: 0xe00061df,
+-	0x10a20: 0xe00050dc, 0x10a22: 0xe00057ac,
+-	0x10a24: 0xe000955f, 0x10a25: 0xe00058b2,
+-	0x10a28: 0xe00048ce,
+-	0x10a2c: 0xe0006caf, 0x10a2f: 0xe00052a3,
+-	0x10a31: 0xe000679b, 0x10a33: 0xe0006a9b,
+-	0x10a39: 0xe000a486, 0x10a3a: 0xe0004ccf,
+-	// Block 0x429, offset 0x10a40
+-	0x10a48: 0xe0009bd8, 0x10a4a: 0xe0008684,
+-	0x10a4c: 0xe0004bda, 0x10a4f: 0xe00079e8,
+-	0x10a50: 0xe0004c2d, 0x10a51: 0xe000829d, 0x10a52: 0xe0004234,
+-	0x10a54: 0xe0008e33,
+-	0x10a5d: 0xe000825d,
+-	0x10a61: 0xe0003f63, 0x10a63: 0xe00048d1,
+-	0x10a65: 0xe00098bb, 0x10a66: 0xe0005994, 0x10a67: 0xe00092ee,
+-	0x10a68: 0xe0008471, 0x10a69: 0xe000728a, 0x10a6a: 0xe00064bf, 0x10a6b: 0xe0006d62,
+-	0x10a6c: 0xe0003f3f, 0x10a6d: 0xe000560f,
+-	0x10a71: 0xe0005088, 0x10a73: 0xe00071be,
+-	0x10a75: 0xe0009fe5, 0x10a77: 0xe0005e0b,
+-	0x10a78: 0xe0007222, 0x10a7a: 0xe00055cb,
+-	0x10a7e: 0xe0008694,
+-	// Block 0x42a, offset 0x10a80
+-	0x10a80: 0xe0006d65,
+-	0x10a92: 0xe0005240,
+-	0x10a99: 0xe000956c,
+-	0x10aa0: 0xe000687f,
+-	0x10aa8: 0xe0007172, 0x10aa9: 0xe00071a5,
+-	0x10aad: 0xe00092f1, 0x10aaf: 0xe00062f8,
+-	0x10ab0: 0xe00062fc, 0x10ab1: 0xe0004e44,
+-	0x10ab4: 0xe0009e58, 0x10ab6: 0xe00050df,
+-	0x10abb: 0xe0008b20,
+-	0x10abd: 0xe0009efc,
+-	// Block 0x42b, offset 0x10ac0
+-	0x10ac6: 0xe0004575, 0x10ac7: 0xe0006f30,
+-	0x10acd: 0xe000542d, 0x10ace: 0xe0004c30,
+-	0x10ad0: 0xe00044e5, 0x10ad1: 0xe00044c1,
+-	0x10ad4: 0xe00093ba, 0x10ad5: 0xe0007342, 0x10ad6: 0xe000731b, 0x10ad7: 0xe0003f67,
+-	0x10ad9: 0xe0005833, 0x10adb: 0xe000499a,
+-	0x10adf: 0xe0007f85,
+-	0x10ae2: 0xe000840a,
+-	0x10ae4: 0xe000a31b, 0x10ae6: 0xe000753a, 0x10ae7: 0xe0006f34,
+-	0x10ae9: 0xe00064df,
+-	0x10af4: 0xe0007a41,
+-	0x10afd: 0xe00083eb,
+-	// Block 0x42c, offset 0x10b00
+-	0x10b01: 0xe0003f07, 0x10b02: 0xe0005853,
+-	0x10b0b: 0xe0005db1,
+-	0x10b0c: 0xe0003ebb, 0x10b0e: 0xe0007bf3,
+-	0x10b10: 0xe00053b2, 0x10b13: 0xe00072ae,
+-	0x10b14: 0xe0007a44,
+-	0x10b29: 0xe0006f38,
+-	0x10b2c: 0xe0007a32, 0x10b2f: 0xe0008e0f,
+-	0x10b31: 0xe0007b61,
+-	// Block 0x42d, offset 0x10b40
+-	0x10b41: 0xe00057d3, 0x10b42: 0xe0008379,
+-	0x10b44: 0xe0008f12, 0x10b47: 0xe0004832,
+-	0x10b4b: 0xe00050e2,
+-	0x10b52: 0xe0008c04,
+-	0x10b54: 0xe0004bae, 0x10b55: 0xe00092f4,
+-	0x10b59: 0xe000593c,
+-	0x10b5d: 0xe00052cb,
+-	0x10b60: 0xe0004790, 0x10b62: 0xe0007a6e,
+-	0x10b67: 0xe00075ba,
+-	0x10b6a: 0xe0007552, 0x10b6b: 0xe000755a,
+-	0x10b6e: 0xe0009e28,
+-	0x10b70: 0xe0009d83,
+-	0x10b77: 0xe0007fff,
+-	0x10b78: 0xe0007706, 0x10b7a: 0xe00055cf,
+-	0x10b7c: 0xe0006941, 0x10b7d: 0xe00071c2,
+-	// Block 0x42e, offset 0x10b80
+-	0x10b89: 0xe0008f16, 0x10b8b: 0xe0004a94,
+-	0x10b8d: 0xe0007a35,
+-	0x10b91: 0xe0008eb2, 0x10b92: 0xe00059ee, 0x10b93: 0xe00085d4,
+-	0x10b96: 0xe000728e,
+-	0x10b9a: 0xe0009e10,
+-	0x10b9d: 0xe00090c7, 0x10b9e: 0xe0008a6b,
+-	0x10ba1: 0xe0006e8c, 0x10ba2: 0xe0006c09,
+-	0x10ba5: 0xe0004545, 0x10ba6: 0xe0008a32, 0x10ba7: 0xe0004793,
+-	0x10ba8: 0xe0004076, 0x10bab: 0xe0005cf6,
+-	0x10bae: 0xe0008e12,
+-	0x10bb1: 0xe0004c33, 0x10bb2: 0xe0008023, 0x10bb3: 0xe00066ca,
+-	0x10bb4: 0xe000988b, 0x10bb5: 0xe00095b4, 0x10bb7: 0xe0009d0a,
+-	0x10bb9: 0xe0004b56,
+-	0x10bbd: 0xe0006cdb, 0x10bbe: 0xe00040d3,
+-	// Block 0x42f, offset 0x10bc0
+-	0x10bc2: 0xe0006fc1, 0x10bc3: 0xe0009a32,
+-	0x10bc6: 0xe0006107,
+-	0x10bc9: 0xe000646b,
+-	0x10bcc: 0xe000a4ef,
+-	0x10bd1: 0xe0009793,
+-	0x10bd5: 0xe0005a6e, 0x10bd6: 0xe00091eb,
+-	0x10bd9: 0xe0008d78, 0x10bda: 0xe0009426, 0x10bdb: 0xe0006097,
+-	0x10bdd: 0xe0008838,
+-	0x10be5: 0xe0006d68,
+-	0x10be8: 0xe0006beb, 0x10beb: 0xe00066cd,
+-	0x10bed: 0xe00069bb,
+-	0x10bf3: 0xe00082f9,
+-	0x10bf6: 0xe000508b, 0x10bf7: 0xe0007e60,
+-	0x10bf8: 0xe0006883,
+-	0x10bfd: 0xe0005bfa, 0x10bff: 0xe000a342,
+-	// Block 0x430, offset 0x10c00
+-	0x10c00: 0xe0008724, 0x10c03: 0xe0007da3,
+-	0x10c04: 0xe00071c6, 0x10c05: 0xe0009a92, 0x10c07: 0xe0005fb7,
+-	0x10c0c: 0xe000a1fb, 0x10c0e: 0xe0005b53,
+-	0x10c14: 0xe0005a36, 0x10c15: 0xe00059c6,
+-	0x10c18: 0xe000902c,
+-	0x10c1e: 0xe00062c4, 0x10c1f: 0xe000956f,
+-	0x10c21: 0xe00060b3, 0x10c22: 0xe0005015, 0x10c23: 0xe00099f9,
+-	0x10c28: 0xe00091c3, 0x10c2a: 0xe0005c9b, 0x10c2b: 0xe000601b,
+-	0x10c2c: 0xe0008ace,
+-	0x10c30: 0xe0009e14, 0x10c31: 0xe000538a, 0x10c32: 0xe0003df7, 0x10c33: 0xe00099cb,
+-	0x10c34: 0xe0004df4, 0x10c37: 0xe00061e3,
+-	0x10c38: 0xe0009db5, 0x10c39: 0xe0003dfb, 0x10c3a: 0xe0007abc, 0x10c3b: 0xe000a17b,
+-	0x10c3c: 0xe0007de2, 0x10c3d: 0xe0007de5, 0x10c3e: 0xe0004c36, 0x10c3f: 0xe000753e,
+-	// Block 0x431, offset 0x10c40
+-	0x10c44: 0xe00082fd, 0x10c47: 0xe0006518,
+-	0x10c4a: 0xe0006887, 0x10c4b: 0xe0004cd2,
+-	0x10c4f: 0xe0006944,
+-	0x10c55: 0xe0008429, 0x10c56: 0xe0009a71, 0x10c57: 0xe0008698,
+-	0x10c5a: 0xe0004278,
+-	0x10c5c: 0xe000636e,
+-	0x10c60: 0xe000688b,
+-	0x10c66: 0xe00050e5, 0x10c67: 0xe0008a35,
+-	0x10c6b: 0xe00043d8,
+-	0x10c6d: 0xe0008728,
+-	0x10c73: 0xe0006596,
+-	0x10c75: 0xe0007292, 0x10c76: 0xe0006947, 0x10c77: 0xe0003f6b,
+-	0x10c78: 0xe0007b19,
+-	0x10c7d: 0xe0007bf6, 0x10c7e: 0xe0007de8,
+-	// Block 0x432, offset 0x10c80
+-	0x10c81: 0xe0009557, 0x10c82: 0xe000688f,
+-	0x10c88: 0xe0009bb4, 0x10c89: 0xe0005593, 0x10c8a: 0xe00053f2, 0x10c8b: 0xe0006e07,
+-	0x10c90: 0xe0004835, 0x10c91: 0xe0004b5a, 0x10c93: 0xe00045f0,
+-	0x10c95: 0xe0007f89, 0x10c96: 0xe000575f,
+-	0x10c9a: 0xe0008a6e, 0x10c9b: 0xe0008550,
+-	0x10c9d: 0xe000700c, 0x10c9e: 0xe000a4b2, 0x10c9f: 0xe0005ccc,
+-	0x10ca0: 0xe0008f5e, 0x10ca1: 0xe0005d3b, 0x10ca2: 0xe00099fc, 0x10ca3: 0xe00046c8,
+-	0x10ca5: 0xe000474b, 0x10ca7: 0xe000837d,
+-	0x10ca8: 0xe0009d86, 0x10ca9: 0xe000587b,
+-	0x10cac: 0xe00054a4,
+-	0x10cb1: 0xe0007941, 0x10cb3: 0xe000921f,
+-	0x10cb6: 0xe00075de, 0x10cb7: 0xe000872c,
+-	0x10cba: 0xe00040d7, 0x10cbb: 0xe000a279,
+-	0x10cbf: 0xe0008175,
+-	// Block 0x433, offset 0x10cc0
+-	0x10cc1: 0xe0006183, 0x10cc3: 0xe0004cd5,
+-	0x10cc4: 0xe00056e9, 0x10cc7: 0xe0003f0b,
+-	0x10cc8: 0xe0009e44, 0x10cca: 0xe00099ff, 0x10ccb: 0xe0008095,
+-	0x10ccf: 0xe0007038,
+-	0x10cd1: 0xe0006fc4, 0x10cd3: 0xe00049aa,
+-	0x10cd4: 0xe00088b3, 0x10cd5: 0xe00080c1, 0x10cd7: 0xe00064b3,
+-	0x10cd8: 0xe000a0d0, 0x10cdb: 0xe0008026,
+-	0x10cdf: 0xe000883b,
+-	0x10ce2: 0xe0005145,
+-	0x10ce5: 0xe0005ded, 0x10ce6: 0xe0009e5c, 0x10ce7: 0xe0009fe8,
+-	0x10ce9: 0xe0004e32,
+-	0x10ced: 0xe0005df0,
+-	0x10cf1: 0xe00073dc,
+-	0x10cf4: 0xe00051d0, 0x10cf5: 0xe0008301,
+-	0x10cfa: 0xe0003f6f,
+-	0x10cfc: 0xe0009b48,
+-	// Block 0x434, offset 0x10d00
+-	0x10d00: 0xe00048d4,
+-	0x10d06: 0xe00061cb,
+-	0x10d08: 0xe000971f, 0x10d0a: 0xe0003f73,
+-	0x10d0c: 0xe0005db4, 0x10d0e: 0xe00059f2,
+-	0x10d14: 0xe00056c9, 0x10d16: 0xe0004efd, 0x10d17: 0xe0009fa3,
+-	0x10d18: 0xe000926d, 0x10d19: 0xe000a3ee, 0x10d1b: 0xe0008029,
+-	0x10d1d: 0xe0008065,
+-	0x10d22: 0xe0009f4c,
+-	0x10d24: 0xe0005244, 0x10d26: 0xe00074ea, 0x10d27: 0xe0007c21,
+-	0x10d29: 0xe0008ffa, 0x10d2a: 0xe0009aac, 0x10d2b: 0xe00088b6,
+-	0x10d2c: 0xe000660a, 0x10d2d: 0xe000994b,
+-	0x10d30: 0xe0008f62, 0x10d31: 0xe000770a,
+-	0x10d37: 0xe0005fbb,
+-	0x10d39: 0xe000759e,
+-	0x10d3c: 0xe0009b1f, 0x10d3f: 0xe00064b7,
+-	// Block 0x435, offset 0x10d40
+-	0x10d40: 0xe0007a00, 0x10d41: 0xe0008730, 0x10d42: 0xe0008943,
+-	0x10d45: 0xe000508e, 0x10d47: 0xe0006e90,
+-	0x10d48: 0xe000a46a, 0x10d49: 0xe0007474, 0x10d4a: 0xe000a27c, 0x10d4b: 0xe0005847,
+-	0x10d4c: 0xe000a345,
+-	0x10d50: 0xe000694a, 0x10d51: 0xe000427c, 0x10d52: 0xe00050e8,
+-	0x10d57: 0xe00052c7,
+-	0x10d58: 0xe0006050, 0x10d59: 0xe00066d0,
+-	0x10d5c: 0xe00068db, 0x10d5e: 0xe00089c8,
+-	0x10d60: 0xe0005430, 0x10d61: 0xe00074a3, 0x10d63: 0xe0008e36,
+-	0x10d67: 0xe000999b,
+-	0x10d68: 0xe000a1ff, 0x10d69: 0xe0006290, 0x10d6a: 0xe0006e94,
+-	0x10d6c: 0xe000601f, 0x10d6d: 0xe0007abf, 0x10d6e: 0xe0005db7, 0x10d6f: 0xe0009fc4,
+-	0x10d75: 0xe0008de4, 0x10d77: 0xe00050bf,
+-	0x10d79: 0xe0009157,
+-	0x10d7c: 0xe0007ac2, 0x10d7d: 0xe000a3f1,
+-	// Block 0x436, offset 0x10d80
+-	0x10d83: 0xe000711c,
+-	0x10d85: 0xe0009b4c,
+-	0x10d89: 0xe0005148,
+-	0x10d8c: 0xe0004c39, 0x10d8d: 0xe00080c5,
+-	0x10d90: 0xe000976f, 0x10d92: 0xe000987d,
+-	0x10d96: 0xe0009367, 0x10d97: 0xe0008c1f,
+-	0x10d98: 0xe0005a7e, 0x10d99: 0xe0005a82,
+-	0x10d9d: 0xe00091c7, 0x10d9e: 0xe0005e3f, 0x10d9f: 0xe0005e43,
+-	0x10da0: 0xe00094d5, 0x10da1: 0xe00094ed,
+-	0x10da4: 0xe0007882,
+-	0x10da8: 0xe00079ec, 0x10dab: 0xe000965d,
+-	0x10dad: 0xe0006197, 0x10dae: 0xe0004cd8,
+-	0x10db1: 0xe0009639,
+-	0x10db5: 0xe0004e04,
+-	0x10db8: 0xe0004ea6, 0x10dbb: 0xe000a46e,
+-	0x10dbc: 0xe0003fc3, 0x10dbd: 0xe000a0bc, 0x10dbf: 0xe000642f,
+-	// Block 0x437, offset 0x10dc0
+-	0x10dca: 0xe00092f7,
+-	0x10dcd: 0xe0008261, 0x10dcf: 0xe00072ea,
+-	0x10dd2: 0xe0004e35,
+-	0x10dd4: 0xe00087f0, 0x10dd5: 0xe00098be, 0x10dd6: 0xe0009a35, 0x10dd7: 0xe0009217,
+-	0x10dd9: 0xe000a05d, 0x10ddb: 0xe0004f71,
+-	0x10ddc: 0xe00055d3, 0x10ddd: 0xe00066d3,
+-	0x10de0: 0xe00097b8, 0x10de1: 0xe000802c,
+-	0x10de5: 0xe0004bc2, 0x10de6: 0xe00099db, 0x10de7: 0xe0006b8f,
+-	0x10de8: 0xe0007cc5, 0x10de9: 0xe0004ebd, 0x10dea: 0xe0004739,
+-	0x10def: 0xe0004153,
+-	0x10df3: 0xe000a25f,
+-	// Block 0x438, offset 0x10e00
+-	0x10e01: 0xe000814d, 0x10e02: 0xe0006e98, 0x10e03: 0xe0006fc7,
+-	0x10e06: 0xe0009d3a, 0x10e07: 0xe00046ec,
+-	0x10e08: 0xe0005c42, 0x10e0a: 0xe0009f2c,
+-	0x10e0d: 0xe000a203,
+-	0x10e10: 0xe0004549, 0x10e12: 0xe0009d0e,
+-	0x10e15: 0xe000694d,
+-	0x10e19: 0xe0007424, 0x10e1a: 0xe0007562,
+-	0x10e1d: 0xe0004694, 0x10e1f: 0xe000a44e,
+-	0x10e20: 0xe000474e, 0x10e22: 0xe000a27f, 0x10e23: 0xe00081a5,
+-	0x10e24: 0xe000a42a, 0x10e25: 0xe0009572,
+-	0x10e28: 0xe0009c1a, 0x10e29: 0xe0007f15, 0x10e2a: 0xe0003dab, 0x10e2b: 0xe0009835,
+-	0x10e2c: 0xe0004e08, 0x10e2d: 0xe000454d, 0x10e2f: 0xe000703c,
+-	0x10e30: 0xe000a4ba,
+-	// Block 0x439, offset 0x10e40
+-	0x10e41: 0xe000764e, 0x10e43: 0xe00044e9,
+-	0x10e44: 0xe00092fa, 0x10e45: 0xe000767a,
+-	0x10e49: 0xe0007108, 0x10e4b: 0xe0005940,
+-	0x10e4c: 0xe000883e, 0x10e4d: 0xe0009c1e, 0x10e4f: 0xe0009f30,
+-	0x10e52: 0xe0007fa1,
+-	0x10e54: 0xe000a282, 0x10e55: 0xe000a51f, 0x10e56: 0xe0009921, 0x10e57: 0xe0005d84,
+-	0x10e5a: 0xe0006d07, 0x10e5b: 0xe0008554,
+-	0x10e5f: 0xe000783a,
+-	0x10e60: 0xe0007deb, 0x10e62: 0xe0005484, 0x10e63: 0xe000a17f,
+-	0x10e64: 0xe0009383, 0x10e67: 0xe00058b5,
+-	0x10e70: 0xe00089cc, 0x10e71: 0xe0006599, 0x10e72: 0xe000651b, 0x10e73: 0xe00050c3,
+-	0x10e74: 0xe00094f5, 0x10e75: 0xe0008fb2, 0x10e76: 0xe0005e0f,
+-	0x10e78: 0xe0004366, 0x10e7b: 0xe0009dc5,
+-	0x10e7c: 0xe00050eb, 0x10e7d: 0xe0009046, 0x10e7e: 0xe0004579,
+-	// Block 0x43a, offset 0x10e80
+-	0x10e84: 0xe0004df0, 0x10e85: 0xe0008734, 0x10e86: 0xe0009429, 0x10e87: 0xe00051ac,
+-	0x10e89: 0xe00091cb, 0x10e8b: 0xe00079f0,
+-	0x10e8f: 0xe00053de,
+-	0x10e91: 0xe000a084, 0x10e93: 0xe00049ee,
+-	0x10e95: 0xe000909f,
+-	0x10e98: 0xe0005aa6, 0x10e99: 0xe000917f, 0x10e9a: 0xe000a0c0, 0x10e9b: 0xe000a0ac,
+-	0x10e9c: 0xe00069bf, 0x10e9d: 0xe0008fb6, 0x10e9f: 0xe0007dee,
+-	0x10ea0: 0xe0009fa6, 0x10ea1: 0xe00071ca, 0x10ea2: 0xe0006d3b,
+-	0x10eb0: 0xe0009675, 0x10eb1: 0xe0004e6c, 0x10eb2: 0xe0007c75, 0x10eb3: 0xe0006893,
+-	0x10eb4: 0xe0009501, 0x10eb6: 0xe000a207, 0x10eb7: 0xe0008b64,
+-	0x10eb8: 0xe0004310, 0x10eb9: 0xe00073c7, 0x10eba: 0xe0006b93, 0x10ebb: 0xe000954f,
+-	0x10ebc: 0xe000999f,
+-	// Block 0x43b, offset 0x10ec0
+-	0x10ec0: 0xe00092fd, 0x10ec1: 0xe0006d6b, 0x10ec3: 0xe0006a9f,
+-	0x10ec6: 0xe00040db,
+-	0x10ec8: 0xe0007df1, 0x10ec9: 0xe0007df4,
+-	0x10ecd: 0xe0005e13, 0x10ece: 0xe000996b, 0x10ecf: 0xe0007fc9,
+-	0x10ed4: 0xe0007f8d, 0x10ed5: 0xe00071ce,
+-	0x10eda: 0xe0007b9f, 0x10edb: 0xe000731e,
+-	0x10edc: 0xe0009f34, 0x10edf: 0xe0003ebf,
+-	0x10ee7: 0xe000473c,
+-	0x10eec: 0xe0006c78, 0x10eed: 0xe0004cdb,
+-	0x10ef0: 0xe000a20b,
+-	0x10ef4: 0xe0008f66, 0x10ef7: 0xe000400a,
+-	0x10efc: 0xe0007090, 0x10efe: 0xe000400d, 0x10eff: 0xe0007cc9,
+-	// Block 0x43c, offset 0x10f00
+-	0x10f02: 0xe0007b1d,
+-	0x10f04: 0xe000584b, 0x10f06: 0xe000514b, 0x10f07: 0xe0007f19,
+-	0x10f08: 0xe00081a8, 0x10f0a: 0xe0004218, 0x10f0b: 0xe00097bb,
+-	0x10f0c: 0xe000a20f, 0x10f0d: 0xe00078e5,
+-	0x10f12: 0xe0008a08, 0x10f13: 0xe0009aaf,
+-	0x10f15: 0xe0005bfd,
+-	0x10f18: 0xe0008eee, 0x10f19: 0xe0008ef2, 0x10f1a: 0xe0008f1a,
+-	0x10f1d: 0xe0009875, 0x10f1f: 0xe000981d,
+-	0x10f20: 0xe0007885, 0x10f22: 0xe00059f6, 0x10f23: 0xe0004620,
+-	0x10f24: 0xe0003daf, 0x10f27: 0xe0009fa9,
+-	0x10f28: 0xe0004010, 0x10f2b: 0xe00089d0,
+-	0x10f2e: 0xe00054a7,
+-	0x10f30: 0xe0007d6d, 0x10f31: 0xe0004f35, 0x10f33: 0xe0003e47,
+-	0x10f34: 0xe0006f6d, 0x10f35: 0xe0007b65, 0x10f36: 0xe0004280, 0x10f37: 0xe0003f77,
+-	0x10f3a: 0xe00057d6,
+-	0x10f3d: 0xe0009067, 0x10f3e: 0xe0007add,
+-	// Block 0x43d, offset 0x10f40
+-	0x10f41: 0xe0009387, 0x10f42: 0xe0007ba2, 0x10f43: 0xe0007b69,
+-	0x10f4a: 0xe000651e,
+-	0x10f4d: 0xe00047de, 0x10f4e: 0xe0008bdc,
+-	0x10f50: 0xe0005523, 0x10f51: 0xe000666e, 0x10f52: 0xe0004a34,
+-	0x10f54: 0xe0009294, 0x10f56: 0xe0007f3d,
+-	0x10f58: 0xe000a4f5, 0x10f59: 0xe000a4f2, 0x10f5a: 0xe0009723,
+-	0x10f64: 0xe0006433, 0x10f67: 0xe0005200,
+-	0x10f68: 0xe0003f0f, 0x10f69: 0xe0004166, 0x10f6b: 0xe0005e17,
+-	0x10f6c: 0xe0004284, 0x10f6e: 0xe0005cf9, 0x10f6f: 0xe0008f1e,
+-	0x10f72: 0xe0009e00,
+-	0x10f76: 0xe00074ce,
+-	0x10f78: 0xe0006b43, 0x10f7a: 0xe0004f89, 0x10f7b: 0xe000973b,
+-	0x10f7c: 0xe0004314, 0x10f7e: 0xe0003ec3,
+-	// Block 0x43e, offset 0x10f80
+-	0x10f83: 0xe0004b1a,
+-	0x10f86: 0xe0008946, 0x10f87: 0xe0003dff,
+-	0x10f88: 0xe0009d5f, 0x10f89: 0xe0007fb1, 0x10f8a: 0xe000783d, 0x10f8b: 0xe0005cfc,
+-	0x10f8c: 0xe00075be,
+-	0x10f95: 0xe00076be, 0x10f97: 0xe0009bdb,
+-	0x10f9e: 0xe0005c9f, 0x10f9f: 0xe00050ac,
+-	0x10fa3: 0xe0005d88,
+-	0x10fa6: 0xe0004d5c,
+-	0x10fb2: 0xe0008de8,
+-	0x10fb6: 0xe0005312, 0x10fb7: 0xe000a285,
+-	0x10fb8: 0xe0009e60, 0x10fba: 0xe0008ef6,
+-	0x10fbc: 0xe0004838, 0x10fbd: 0xe000a1b3, 0x10fbe: 0xe0006b6b, 0x10fbf: 0xe0007fcc,
+-	// Block 0x43f, offset 0x10fc0
+-	0x10fc0: 0xe0005527,
+-	0x10fc7: 0xe0005019,
+-	0x10fc8: 0xe00045a8, 0x10fca: 0xe0005cff,
+-	0x10fcc: 0xe0006f1c, 0x10fcd: 0xe0006d6e, 0x10fce: 0xe0007efd,
+-	0x10fd0: 0xe0006b97, 0x10fd1: 0xe0007175, 0x10fd2: 0xe0004369,
+-	0x10fd4: 0xe0008295, 0x10fd5: 0xe0008381, 0x10fd6: 0xe000a088,
+-	0x10fda: 0xe000906b,
+-	0x10fde: 0xe000726a, 0x10fdf: 0xe0004aee,
+-	0x10fe1: 0xe0003ec7, 0x10fe2: 0xe0008de0,
+-	0x10fe7: 0xe0008fba,
+-	0x10fe9: 0xe00085d8, 0x10fea: 0xe0008668,
+-	0x10fee: 0xe000581f,
+-	0x10ff0: 0xe0008558, 0x10ff1: 0xe000a4f8, 0x10ff2: 0xe000a522, 0x10ff3: 0xe0008e5e,
+-	0x10ff4: 0xe0005091, 0x10ff5: 0xe00048d7, 0x10ff6: 0xe0009feb,
+-	0x10ff9: 0xe000738f,
+-	0x10ffe: 0xe00054aa, 0x10fff: 0xe0005fbf,
+-	// Block 0x440, offset 0x11000
+-	0x11000: 0xe0006c0c, 0x11001: 0xe0009977, 0x11003: 0xe0004318,
+-	0x11007: 0xe0006a23,
+-	0x11008: 0xe0009fee, 0x11009: 0xe0006521, 0x1100a: 0xe00076c2, 0x1100b: 0xe0006d71,
+-	0x1100d: 0xe00083c1, 0x1100e: 0xe0008eda,
+-	0x11011: 0xe00062c8, 0x11012: 0xe0006086, 0x11013: 0xe0009678,
+-	0x11017: 0xe00083ee,
+-	0x11018: 0xe00096c7, 0x1101b: 0xe0003fc7,
+-	0x11023: 0xe00048da,
+-	0x11028: 0xe00080f5,
+-	0x1102e: 0xe0006437,
+-	0x11031: 0xe0004bc6, 0x11033: 0xe0005f47,
+-	0x11036: 0xe0006371,
+-	0x11039: 0xe0006524, 0x1103a: 0xe0008c79,
+-	0x1103c: 0xe0007373, 0x1103e: 0xe0008949, 0x1103f: 0xe0006f8d,
+-	// Block 0x441, offset 0x11040
+-	0x11040: 0xe0004c3c, 0x11043: 0xe000619b,
+-	0x11044: 0xe0009297, 0x11046: 0xe0005d8c,
+-	0x11049: 0xe00041f0, 0x1104a: 0xe000988e,
+-	0x11051: 0xe00074d2, 0x11052: 0xe0006950,
+-	0x11054: 0xe00063cb, 0x11055: 0xe000985f, 0x11056: 0xe000528e, 0x11057: 0xe0009d12,
+-	0x11058: 0xe000866c, 0x1105b: 0xe0009a38,
+-	0x11068: 0xe00099df, 0x1106b: 0xe0009b22,
+-	0x1106c: 0xe00097e2,
+-	0x11071: 0xe0009a3b,
+-	0x11075: 0xe000842c,
+-	0x11079: 0xe0005a56,
+-	0x1107c: 0xe00072d6, 0x1107d: 0xe00093db,
+-	// Block 0x442, offset 0x11080
+-	0x11082: 0xe00064bb,
+-	0x11084: 0xe0008ad1, 0x11085: 0xe0004f39, 0x11086: 0xe00096ef, 0x11087: 0xe0005d02,
+-	0x11088: 0xe0004e0c, 0x11089: 0xe00053e2, 0x1108a: 0xe00063ce,
+-	0x1108c: 0xe0005eef, 0x1108d: 0xe0005e83, 0x1108f: 0xe0004d5f,
+-	0x11090: 0xe000473f, 0x11091: 0xe0004238, 0x11092: 0xe0004079, 0x11093: 0xe000906f,
+-	0x11094: 0xe0005f67, 0x11095: 0xe0009696, 0x11096: 0xe000967b, 0x11097: 0xe0007a71,
+-	0x11098: 0xe000483b, 0x11099: 0xe00089b8, 0x1109b: 0xe000929a,
+-	0x1109c: 0xe0006053,
+-	0x110ac: 0xe0004698, 0x110ad: 0xe0007040, 0x110ae: 0xe0004d3e, 0x110af: 0xe0008be4,
+-	0x110b1: 0xe0004551, 0x110b3: 0xe00049d6,
+-	0x110b5: 0xe00089b0, 0x110b6: 0xe0008ede, 0x110b7: 0xe00043db,
+-	0x110bd: 0xe00077e0, 0x110be: 0xe0006f5d, 0x110bf: 0xe0004d62,
+-	// Block 0x443, offset 0x110c0
+-	0x110c1: 0xe0008c22, 0x110c2: 0xe0004724,
+-	0x110c7: 0xe0008c25,
+-	0x110c9: 0xe0007226,
+-	0x110cc: 0xe0004188,
+-	0x110d0: 0xe0004d68, 0x110d1: 0xe00050ee, 0x110d2: 0xe0005587,
+-	0x110e8: 0xe0007345, 0x110ea: 0xe0004d6b, 0x110eb: 0xe0008a38,
+-	0x110ef: 0xe0008cc4,
+-	0x110f9: 0xe0007fa5, 0x110fa: 0xe0008738, 0x110fb: 0xe00075e6,
+-	0x110fd: 0xe00059fa, 0x110fe: 0xe0009f00,
+-	// Block 0x444, offset 0x11100
+-	0x11102: 0xe0007888, 0x11103: 0xe000497a,
+-	0x11104: 0xe00048dd, 0x11106: 0xe00044ed,
+-	0x11109: 0xe0008e42,
+-	0x1110c: 0xe000990f, 0x1110d: 0xe0009c5a, 0x1110e: 0xe0006c7b, 0x1110f: 0xe0004d97,
+-	0x11110: 0xe00075e2,
+-	0x11115: 0xe0009a3e, 0x11117: 0xe00090a3,
+-	0x11127: 0xe0006300,
+-	0x11128: 0xe00066d6, 0x11129: 0xe000558b, 0x1112b: 0xe0005d90,
+-	0x1112e: 0xe000407c,
+-	0x11131: 0xe0007348, 0x11132: 0xe00049da,
+-	0x11136: 0xe000942c, 0x11137: 0xe00091ef,
+-	0x1113a: 0xe0004d9b, 0x1113b: 0xe0004e10,
+-	0x1113f: 0xe0006953,
+-	// Block 0x445, offset 0x11140
+-	0x11140: 0xe000a472, 0x11143: 0xe0006c0f,
+-	0x11144: 0xe0005843, 0x11147: 0xe0009183,
+-	0x11148: 0xe0006d74, 0x11149: 0xe00050f1, 0x1114a: 0xe00063d1,
+-	0x1114c: 0xe0008305, 0x1114e: 0xe0004cde, 0x1114f: 0xe000514e,
+-	0x11152: 0xe0006056,
+-	0x11156: 0xe0007377,
+-	0x11158: 0xe000498e, 0x1115b: 0xe000471b,
+-	0x1115c: 0xe00077e3, 0x1115f: 0xe00087f4,
+-	0x11160: 0xe0005440, 0x11161: 0xe0008ffd, 0x11162: 0xe000975b,
+-	0x11165: 0xe00086e0, 0x11167: 0xe0004555,
+-	0x11168: 0xe00093de, 0x11169: 0xe0007532, 0x1116a: 0xe00088b9,
+-	0x1116c: 0xe0004956,
+-	0x1117e: 0xe0007652,
+-	// Block 0x446, offset 0x11180
+-	0x11180: 0xe0003e03, 0x11183: 0xe00085dc,
+-	0x11184: 0xe0007df7, 0x11186: 0xe0004a67,
+-	0x11189: 0xe0007e63,
+-	0x1118f: 0xe0005ccf,
+-	0x11190: 0xe0008841,
+-	0x11196: 0xe0007f95,
+-	0x1119a: 0xe0007428, 0x1119b: 0xe000a183,
+-	0x1119f: 0xe000699b,
+-	0x111a0: 0xe000726e, 0x111a1: 0xe00071d2, 0x111a3: 0xe0009504,
+-	0x111a9: 0xe000403a, 0x111ab: 0xe000942f,
+-	0x111ad: 0xe0004169, 0x111ae: 0xe000a3f4,
+-	0x111b2: 0xe0006b07,
+-	0x111b4: 0xe0007ccd, 0x111b5: 0xe00040f7, 0x111b6: 0xe00073ca, 0x111b7: 0xe000682f,
+-	// Block 0x447, offset 0x111c0
+-	0x111c6: 0xe00048e0,
+-	0x111c9: 0xe0003dd7,
+-	0x111cd: 0xe0006cdf, 0x111cf: 0xe0005e87,
+-	0x111d2: 0xe0006023,
+-	0x111d4: 0xe0006c12, 0x111d6: 0xe0007a74, 0x111d7: 0xe00050f4,
+-	0x111dc: 0xe0006d77,
+-	0x111e2: 0xe0008cc8,
+-	0x111e4: 0xe0007393, 0x111e5: 0xe0009432,
+-	0x111e8: 0xe000978b, 0x111ea: 0xe0005041, 0x111eb: 0xe0005f4b,
+-	0x111ec: 0xe0005ef3, 0x111ed: 0xe000977b, 0x111ef: 0xe0005151,
+-	0x111f0: 0xe0004521,
+-	0x111f6: 0xe0008fbe,
+-	0x111fa: 0xe000a40f,
+-	0x111fe: 0xe0008e46,
+-	// Block 0x448, offset 0x11200
+-	0x11218: 0xe00084b4,
+-	0x11220: 0xe000938b,
+-	0x11227: 0xe00093c3,
+-	0x11229: 0xe0005998,
+-	0x1122d: 0xe00090a7, 0x1122f: 0xe0008c28,
+-	0x11233: 0xe00048e3,
+-	0x11238: 0xe0005c00, 0x11239: 0xe0005c03, 0x1123a: 0xe00086e4, 0x1123b: 0xe0006b47,
+-	0x1123d: 0xe0009adc,
+-	// Block 0x449, offset 0x11240
+-	0x11245: 0xe0004a37,
+-	0x11248: 0xe000564f,
+-	0x11250: 0xe00097fa, 0x11251: 0xe00097f6, 0x11252: 0xe00067f7, 0x11253: 0xe0007a77,
+-	0x11255: 0xe000699e,
+-	0x11259: 0xe0008b68, 0x1125a: 0xe0004df8,
+-	0x1125d: 0xe000a406, 0x1125e: 0xe000501d, 0x1125f: 0xe00047e1,
+-	0x11264: 0xe000915b, 0x11265: 0xe0005f6b,
+-	0x11269: 0xe0005780, 0x1126b: 0xe0005d05,
+-	0x1126d: 0xe0009891, 0x1126e: 0xe00093b3,
+-	0x11270: 0xe0008e6a, 0x11272: 0xe0005e8b,
+-	0x1127b: 0xe0004f59,
+-	0x1127c: 0xe0003f13, 0x1127e: 0xe00045d5, 0x1127f: 0xe0004147,
+-	// Block 0x44a, offset 0x11280
+-	0x11281: 0xe000791d,
+-	0x11284: 0xe0005652, 0x11285: 0xe00090cb, 0x11287: 0xe00097ee,
+-	0x11289: 0xe0008e62, 0x1128a: 0xe000416c,
+-	0x1128d: 0xe00088bc, 0x1128e: 0xe0004288,
+-	0x11290: 0xe000a1b7, 0x11292: 0xe0004b7a,
+-	0x11294: 0xe0004f8d, 0x11295: 0xe000a41e, 0x11297: 0xe0006167,
+-	0x11298: 0xe0006147, 0x1129a: 0xe000407f,
+-	0x112a0: 0xe0008877, 0x112a1: 0xe0005094, 0x112a2: 0xe00096cb, 0x112a3: 0xe0005154,
+-	0x112a5: 0xe00053b6, 0x112a6: 0xe0008ece, 0x112a7: 0xe0004082,
+-	0x112ac: 0xe0007fcf, 0x112ad: 0xe000a13b, 0x112af: 0xe000663e,
+-	0x112b1: 0xe0003ddb, 0x112b2: 0xe0009073,
+-	0x112b4: 0xe000a147,
+-	0x112ba: 0xe0009894,
+-	0x112be: 0xe0007a7a,
+-	// Block 0x44b, offset 0x112c0
+-	0x112c0: 0xe0005ef7, 0x112c2: 0xe0005735,
+-	0x112c4: 0xe0009802, 0x112c7: 0xe0009e18,
+-	0x112ca: 0xe000550b,
+-	0x112cf: 0xe0005705,
+-	0x112d4: 0xe000538e,
+-	0x112d8: 0xe000742c, 0x112d9: 0xe0008f22,
+-	0x112dd: 0xe0006b5b,
+-	0x112e2: 0xe0008eb6, 0x112e3: 0xe000552b,
+-	0x112e4: 0xe000973f,
+-	0x112ea: 0xe0004796, 0x112eb: 0xe000a14b,
+-	0x112ec: 0xe00053ba, 0x112ef: 0xe0008c2b,
+-	0x112f2: 0xe0004ce1,
+-	0x112f6: 0xe0006d7a, 0x112f7: 0xe00043de,
+-	0x112f8: 0xe0007dfa, 0x112f9: 0xe0004013, 0x112fb: 0xe0004559,
+-	0x112fd: 0xe0005f4f, 0x112fe: 0xe0005fc3, 0x112ff: 0xe000873c,
+-	// Block 0x44c, offset 0x11300
+-	0x11305: 0xe00043e1,
+-	0x11308: 0xe000a2f7, 0x11309: 0xe0005df3,
+-	0x1130d: 0xe0006956, 0x1130e: 0xe0004799, 0x1130f: 0xe0005e1b,
+-	0x11311: 0xe000483e,
+-	0x11314: 0xe00074c1, 0x11315: 0xe00095ed, 0x11316: 0xe0007840, 0x11317: 0xe0009924,
+-	0x1131d: 0xe0009a11, 0x1131e: 0xe0008f6a,
+-	0x11322: 0xe0003ecb, 0x11323: 0xe000679f,
+-	0x11326: 0xe00051b0,
+-	0x1132c: 0xe000428c, 0x1132d: 0xe0007430,
+-	0x11332: 0xe00043e4,
+-	0x11334: 0xe0008740, 0x11335: 0xe00084b8, 0x11337: 0xe0006374,
+-	0x11338: 0xe0006d7d,
+-	0x1133e: 0xe0006a27,
+-	// Block 0x44d, offset 0x11340
+-	0x11341: 0xe0005291, 0x11342: 0xe0005597, 0x11343: 0xe0009a02,
+-	0x11345: 0xe000a2fa, 0x11347: 0xe0005d60,
+-	0x1134c: 0xe000660e,
+-	0x11350: 0xe0006527, 0x11351: 0xe0005efb,
+-	0x11357: 0xe0005273,
+-	0x11359: 0xe0005762, 0x1135b: 0xe000448d,
+-	0x1135c: 0xe00066d9, 0x1135d: 0xe0003d84, 0x1135f: 0xe0008db8,
+-	0x11361: 0xe0007256,
+-	0x11364: 0xe0004b1e, 0x11365: 0xe0009077, 0x11367: 0xe0006377,
+-	0x1136b: 0xe0008235,
+-	0x1136c: 0xe0008efa, 0x1136f: 0xe00066dc,
+-	0x11370: 0xe0007094, 0x11371: 0xe0008265, 0x11372: 0xe0008e66,
+-	0x11377: 0xe0004f01,
+-	0x11379: 0xe0005fc7,
+-	0x1137c: 0xe00074a6, 0x1137d: 0xe0006fca, 0x1137f: 0xe0007e66,
+-	// Block 0x44e, offset 0x11380
+-	0x11381: 0xe0005fcb, 0x11382: 0xe0004ce4, 0x11383: 0xe00085e0,
+-	0x11384: 0xe0005c45, 0x11385: 0xe00054ad, 0x11386: 0xe000993f,
+-	0x1138a: 0xe0006027, 0x1138b: 0xe0006a2b,
+-	0x1138c: 0xe0008744, 0x1138f: 0xe0008994,
+-	0x11392: 0xe00057e5,
+-	0x11397: 0xe0004c3f,
+-	0x113a0: 0xe0005d08, 0x113a3: 0xe0004c42,
+-	0x113a5: 0xe0008121, 0x113a6: 0xe0004f05,
+-	0x113a8: 0xe0008c2e, 0x113a9: 0xe00088bf,
+-	0x113ac: 0xe0006e9c, 0x113ad: 0xe0007c25,
+-	0x113b1: 0xe0009c22, 0x113b2: 0xe00050af,
+-	0x113b4: 0xe0007ba5,
+-	0x113ba: 0xe0007a04, 0x113bb: 0xe0005e1f,
+-	0x113bc: 0xe0005e23, 0x113bd: 0xe00051b4, 0x113bf: 0xe0007843,
+-	// Block 0x44f, offset 0x113c0
+-	0x113c0: 0xe0007ee9, 0x113c3: 0xe000955b,
+-	0x113c6: 0xe00044c5, 0x113c7: 0xe0006f91,
+-	0x113c9: 0xe0005fcf, 0x113ca: 0xe0009ff1,
+-	0x113cc: 0xe0008f6e, 0x113ce: 0xe0005bb7, 0x113cf: 0xe000a094,
+-	0x113d0: 0xe000643b, 0x113d1: 0xe0004b7e, 0x113d3: 0xe00075a2,
+-	0x113d4: 0xe00069c3, 0x113d5: 0xe000a45a,
+-	0x113db: 0xe00040a0,
+-	0x113de: 0xe00061e7, 0x113df: 0xe0006b9b,
+-	0x113e0: 0xe000770e, 0x113e1: 0xe0009eac,
+-	0x113e4: 0xe0005613, 0x113e5: 0xe00094b5, 0x113e7: 0xe0005aca,
+-	0x113e8: 0xe0008239, 0x113eb: 0xe00048e6,
+-	0x113ed: 0xe0006c15, 0x113ef: 0xe0006fcd,
+-	0x113f0: 0xe0009bb7, 0x113f1: 0xe0007c29,
+-	0x113f4: 0xe0005cd2, 0x113f5: 0xe0004ed4, 0x113f6: 0xe0008f72, 0x113f7: 0xe00078e9,
+-	0x113fa: 0xe00061eb, 0x113fb: 0xe00072ee,
+-	// Block 0x450, offset 0x11400
+-	0x11401: 0xe00088c2, 0x11402: 0xe0006fd0, 0x11403: 0xe000a213,
+-	0x11404: 0xe000a217,
+-	0x11408: 0xe00047e4, 0x11409: 0xe0008ccc, 0x1140b: 0xe0008cd0,
+-	0x1140c: 0xe00068df, 0x1140e: 0xe000a0f4, 0x1140f: 0xe000722a,
+-	0x11419: 0xe0008b24, 0x1141b: 0xe0009e64,
+-	0x1141d: 0xe0008a71, 0x1141e: 0xe000a4fb, 0x1141f: 0xe0006b9f,
+-	0x11421: 0xe0009a74, 0x11422: 0xe0008688,
+-	0x11424: 0xe0007846, 0x11425: 0xe000a18b, 0x11426: 0xe000a288, 0x11427: 0xe0009ff4,
+-	0x11428: 0xe0007098, 0x11429: 0xe00059fe, 0x1142b: 0xe00096cf,
+-	0x1142c: 0xe0006e0a, 0x1142e: 0xe0006243, 0x1142f: 0xe0004290,
+-	0x11430: 0xe00069ef, 0x11433: 0xe00069c7,
+-	0x11434: 0xe0009223, 0x11436: 0xe0008748, 0x11437: 0xe0004a52,
+-	0x11438: 0xe000874c, 0x1143a: 0xe0008c31, 0x1143b: 0xe00072b2,
+-	// Block 0x451, offset 0x11440
+-	0x11444: 0xe000a3c1, 0x11447: 0xe0003d3c,
+-	0x11448: 0xe000a399, 0x11449: 0xe000a3f7, 0x1144b: 0xe0005e47,
+-	0x1144c: 0xe0004a97, 0x1144e: 0xe0007712,
+-	0x11450: 0xe0007d70, 0x11451: 0xe0006959,
+-	0x11456: 0xe0004d7b, 0x11457: 0xe0007296,
+-	0x11458: 0xe0007434,
+-	0x1145d: 0xe0005bbb, 0x1145e: 0xe00047e7,
+-	0x11460: 0xe00043e7, 0x11462: 0xe0008f76, 0x11463: 0xe0004ce7,
+-	0x1146b: 0xe00082a1,
+-	0x1146c: 0xe0006b0b, 0x1146e: 0xe0005c06,
+-	0x11471: 0xe0004ed8, 0x11472: 0xe0008309, 0x11473: 0xe0009fac,
+-	0x11474: 0xe0009a96, 0x11475: 0xe0009c5e,
+-	0x11478: 0xe0005783, 0x11479: 0xe0006b23, 0x1147b: 0xe0004294,
+-	0x1147e: 0xe00051b8, 0x1147f: 0xe000a525,
+-	// Block 0x452, offset 0x11480
+-	0x11480: 0xe0007565, 0x11481: 0xe0004cea,
+-	0x11484: 0xe00076e6, 0x11485: 0xe00076f2, 0x11486: 0xe00054f3, 0x11487: 0xe0004f91,
+-	0x11489: 0xe000a2fd,
+-	0x11493: 0xe0009a77,
+-	0x11496: 0xe0007321,
+-	0x11499: 0xe000695c, 0x1149a: 0xe0005ca3, 0x1149b: 0xe000a39d,
+-	0x1149c: 0xe0007a7d, 0x1149d: 0xe0009a9a,
+-	0x114a0: 0xe00046cc, 0x114a3: 0xe0007656,
+-	0x114a6: 0xe000a4fe,
+-	0x114a8: 0xe0005709, 0x114a9: 0xe0004dcb, 0x114aa: 0xe000532d,
+-	0x114ac: 0xe0006d3e, 0x114ae: 0xe0007542, 0x114af: 0xe000934b,
+-	0x114b0: 0xe00079fc, 0x114b2: 0xe0004491, 0x114b3: 0xe00077aa,
+-	0x114b4: 0xe0004298, 0x114b7: 0xe0003e77,
+-	0x114b8: 0xe000695f, 0x114b9: 0xe00088c8, 0x114ba: 0xe00088c5,
+-	0x114bc: 0xe0005a02, 0x114be: 0xe0008be0, 0x114bf: 0xe0009252,
+-	// Block 0x453, offset 0x114c0
+-	0x114c0: 0xe00093bd, 0x114c3: 0xe000a28b,
+-	0x114c5: 0xe0004123,
+-	0x114c8: 0xe0007d41, 0x114c9: 0xe0007dfd, 0x114cb: 0xe00064e3,
+-	0x114cc: 0xe0005f53, 0x114cd: 0xe0006294,
+-	0x114d4: 0xe000677f, 0x114d5: 0xe0008dbc, 0x114d7: 0xe00053f6,
+-	0x114db: 0xe0005a86,
+-	0x114dd: 0xe00088cb, 0x114de: 0xe0004c45, 0x114df: 0xe0004c48,
+-	0x114e3: 0xe0005248,
+-	0x114e6: 0xe0005c93, 0x114e7: 0xe00056ed,
+-	0x114e8: 0xe0005c63, 0x114ea: 0xe0005dba, 0x114eb: 0xe0005a5a,
+-	0x114ec: 0xe00062e4, 0x114ed: 0xe0008ed2, 0x114ee: 0xe00094c5,
+-	0x114f1: 0xe0008a74, 0x114f3: 0xe0009913,
+-	0x114f4: 0xe0005e8f, 0x114f6: 0xe000967e,
+-	0x114fa: 0xe0004a16,
+-	0x114fd: 0xe000a348,
+-	// Block 0x454, offset 0x11500
+-	0x11505: 0xe0007bf9, 0x11506: 0xe0003e07,
+-	0x11509: 0xe000680b,
+-	0x1150e: 0xe00058b8, 0x1150f: 0xe0009db9,
+-	0x11510: 0xe00083c4, 0x11511: 0xe000936b, 0x11513: 0xe0009ab2,
+-	0x11516: 0xe000830d,
+-	0x1151c: 0xe0005276, 0x1151e: 0xe0004c4b, 0x1151f: 0xe0006cb3,
+-	0x11520: 0xe0003fcb,
+-	0x1152a: 0xe0009300,
+-	0x1152c: 0xe0007d11, 0x1152d: 0xe0009d16, 0x1152f: 0xe0006059,
+-	0x11530: 0xe0004117, 0x11531: 0xe0005204, 0x11532: 0xe000443e, 0x11533: 0xe0005cd5,
+-	0x11535: 0xe000842f, 0x11537: 0xe0009897,
+-	0x1153b: 0xe0004ea0,
+-	0x1153c: 0xe0008474, 0x1153e: 0xe0006d0b, 0x1153f: 0xe00098e7,
+-	// Block 0x455, offset 0x11540
+-	0x11547: 0xe000652a,
+-	0x11549: 0xe0007a08, 0x1154b: 0xe0005fd3,
+-	0x1154c: 0xe000646f, 0x1154f: 0xe0004da3,
+-	0x11550: 0xe00069cb, 0x11553: 0xe0005279,
+-	0x11555: 0xe0009619, 0x11557: 0xe000596c,
+-	0x11558: 0xe00077e6, 0x11559: 0xe0007982, 0x1155a: 0xe0005acd,
+-	0x1155c: 0xe00045ab, 0x1155d: 0xe0008c34,
+-	0x1156f: 0xe00043ea,
+-	0x11570: 0xe00099cf, 0x11572: 0xe000700f, 0x11573: 0xe0008c37,
+-	0x11576: 0xe0003d3f, 0x11577: 0xe0003d42,
+-	0x11578: 0xe0004841,
+-	0x1157e: 0xe0006fd3,
+-	// Block 0x456, offset 0x11580
+-	0x11581: 0xe0009699,
+-	0x11584: 0xe00061ef, 0x11585: 0xe0004ec0,
+-	0x1158a: 0xe0008a0c,
+-	0x1158f: 0xe000609b,
+-	0x11590: 0xe0005c09, 0x11591: 0xe0003ecf, 0x11592: 0xe0009609, 0x11593: 0xe0007692,
+-	0x11594: 0xe0007e00, 0x11597: 0xe0006d23,
+-	0x11598: 0xe00081e7, 0x11599: 0xe0009ce6, 0x1159a: 0xe0007e03,
+-	0x1159d: 0xe00096d3, 0x1159e: 0xe0008269, 0x1159f: 0xe0004db7,
+-	0x115a2: 0xe0008477,
+-	0x115a9: 0xe0004844,
+-	0x115ac: 0xe0003e0b, 0x115af: 0xe0003d45,
+-	0x115b0: 0xe0004dd8, 0x115b1: 0xe0008a77, 0x115b3: 0xe00057e8,
+-	0x115b4: 0xe0006fd6, 0x115b5: 0xe000901c, 0x115b6: 0xe00066df,
+-	0x115b9: 0xe0007012, 0x115bb: 0xe00066e2,
+-	0x115be: 0xe0008750,
+-	// Block 0x457, offset 0x115c0
+-	0x115c3: 0xe000a2b2,
+-	0x115d2: 0xe0006ea0, 0x115d3: 0xe000855c,
+-	0x115d6: 0xe0006962, 0x115d7: 0xe000584f,
+-	0x115dd: 0xe00046a4, 0x115de: 0xe0003e4b,
+-	0x115e1: 0xe000479c, 0x115e2: 0xe000609f,
+-	0x115ea: 0xe0008a7a,
+-	0x115ee: 0xe0008068, 0x115ef: 0xe0007c2d,
+-	0x115f1: 0xe000457d, 0x115f2: 0xe0004441,
+-	0x115f4: 0xe00085e4,
+-	0x115f8: 0xe0009da5, 0x115f9: 0xe0004b22, 0x115fb: 0xe0007074,
+-	0x115fc: 0xe0004170, 0x115fd: 0xe00083c7,
+-	// Block 0x458, offset 0x11600
+-	0x11600: 0xe000411b, 0x11601: 0xe0009d1a, 0x11602: 0xe000436c, 0x11603: 0xe00050f7,
+-	0x11604: 0xe00046f0, 0x11606: 0xe00046f4,
+-	0x11608: 0xe000722e, 0x11609: 0xe0007246,
+-	0x1160e: 0xe0008d7c,
+-	0x11610: 0xe0005208, 0x11611: 0xe0006897, 0x11613: 0xe000a18f,
+-	0x11614: 0xe0004d42,
+-	0x1162d: 0xe0008cd4, 0x1162f: 0xe00087f8,
+-	0x11634: 0xe00063d4, 0x11636: 0xe0009821, 0x11637: 0xe0003ddf,
+-	0x1163e: 0xe000497e, 0x1163f: 0xe0003e0f,
+-	// Block 0x459, offset 0x11640
+-	0x11641: 0xe000545c, 0x11643: 0xe00087fc,
+-	0x11645: 0xe0005ad0, 0x11646: 0xe000602b,
+-	0x1164f: 0xe0004495,
+-	0x11653: 0xe00083ca,
+-	0x11654: 0xe0009575, 0x11657: 0xe000429c,
+-	0x1165b: 0xe0004d6e,
+-	0x1165d: 0xe00088ce, 0x1165f: 0xe000a300,
+-	0x11660: 0xe00054d7, 0x11661: 0xe00079a0, 0x11662: 0xe000929d, 0x11663: 0xe0007138,
+-	0x11667: 0xe0007849,
+-	0x11668: 0xe00058bb,
+-	0x1166d: 0xe00066e5, 0x1166f: 0xe0008844,
+-	0x11670: 0xe000436f, 0x11671: 0xe00044c9, 0x11673: 0xe0006c18,
+-	0x11675: 0xe000610b, 0x11676: 0xe0005dbd,
+-	// Block 0x45a, offset 0x11680
+-	0x11684: 0xe0004c51, 0x11685: 0xe00061f3,
+-	0x11689: 0xe0005b67, 0x1168a: 0xe0004ced, 0x1168b: 0xe0004c4e,
+-	0x1168c: 0xe0009012, 0x1168d: 0xe00044cd,
+-	0x11690: 0xe000659c, 0x11692: 0xe0006304,
+-	0x11695: 0xe00089d4, 0x11696: 0xe0008800, 0x11697: 0xe00088d1,
+-	0x11698: 0xe0004af2, 0x1169a: 0xe00064e7,
+-	0x1169f: 0xe000520c,
+-	0x116a0: 0xe0005021, 0x116a3: 0xe0009270,
+-	0x116a7: 0xe0008281,
+-	0x116a8: 0xe0004372,
+-	0x116ac: 0xe00049f2, 0x116ae: 0xe000680f,
+-	0x116b2: 0xe0006965,
+-	0x116b9: 0xe00050fa, 0x116ba: 0xe0004624, 0x116bb: 0xe0006473,
+-	0x116bc: 0xe0006477,
+-	// Block 0x45b, offset 0x116c0
+-	0x116c0: 0xe00079a4, 0x116c1: 0xe0004600,
+-	0x116c4: 0xe00086ec, 0x116c5: 0xe0007fd2,
+-	0x116cb: 0xe0005488,
+-	0x116cd: 0xe0007044, 0x116ce: 0xe00093e1,
+-	0x116d1: 0xe000659f, 0x116d2: 0xe00092a0,
+-	0x116d9: 0xe0008fc2,
+-	0x116e7: 0xe0005bbf,
+-	0x116f0: 0xe00073cd,
+-	0x116f4: 0xe0004f3d, 0x116f6: 0xe0008a10,
+-	0x116f9: 0xe000963d,
+-	0x116fd: 0xe00075ea, 0x116ff: 0xe00094b9,
+-	// Block 0x45c, offset 0x11700
+-	0x11702: 0xe0006751,
+-	0x1170a: 0xe0007438,
+-	0x1170f: 0xe0004a9a,
+-	0x11713: 0xe0009b03,
+-	0x11714: 0xe0006ad3, 0x11715: 0xe0009681, 0x11717: 0xe00040df,
+-	0x11719: 0xe0005d0b, 0x1171a: 0xe00092a3,
+-	0x1171d: 0xe0005557, 0x1171e: 0xe0005887,
+-	0x11720: 0xe0004da7, 0x11721: 0xe0007e06, 0x11722: 0xe0007e09, 0x11723: 0xe0005dc0,
+-	0x11725: 0xe0007d15,
+-	0x11728: 0xe0008754, 0x1172a: 0xe00086f0, 0x1172b: 0xe0008bc4,
+-	0x1172c: 0xe0003e9b, 0x1172d: 0xe0007556, 0x1172e: 0xe0008432, 0x1172f: 0xe0006ea4,
+-	0x11733: 0xe0005aeb,
+-	0x11735: 0xe0004af6, 0x11737: 0xe0009d62,
+-	0x11738: 0xe00093e4, 0x11739: 0xe0007716,
+-	// Block 0x45d, offset 0x11740
+-	0x1174e: 0xe0003d87,
+-	0x11751: 0xe00063d7,
+-	0x11754: 0xe0005412, 0x11755: 0xe0007b21,
+-	0x11758: 0xe00048e9, 0x1175b: 0xe0008cd8,
+-	0x1175c: 0xe0005fd7, 0x1175f: 0xe00083f1,
+-	0x11764: 0xe0004127, 0x11765: 0xe000a21b, 0x11766: 0xe0003e4f, 0x11767: 0xe000652d,
+-	0x1176d: 0xe0006754, 0x1176e: 0xe000771a,
+-	0x11770: 0xe0008c7c, 0x11771: 0xe00093c6,
+-	0x11774: 0xe00057eb, 0x11777: 0xe00047ea,
+-	0x1177b: 0xe000977f,
+-	0x1177c: 0xe0009cea, 0x1177e: 0xe0004525,
+-	// Block 0x45e, offset 0x11780
+-	0x11780: 0xe0004444, 0x11781: 0xe00043ed, 0x11783: 0xe0005eff,
+-	0x11787: 0xe00085e8,
+-	0x1178a: 0xe0006783, 0x1178b: 0xe0004847,
+-	0x1178c: 0xe0009844, 0x1178d: 0xe0008f7a, 0x1178e: 0xe0008e39,
+-	0x11790: 0xe0004742, 0x11793: 0xe0004581,
+-	0x117a5: 0xe0009fc7, 0x117a6: 0xe0007b6d, 0x117a7: 0xe0008f26,
+-	0x117a8: 0xe00045f4, 0x117a9: 0xe000403d, 0x117aa: 0xe0004016,
+-	0x117ad: 0xe0006917,
+-	0x117b2: 0xe00044a9,
+-	0x117b9: 0xe0004447, 0x117bb: 0xe0004a6a,
+-	0x117bd: 0xe00088d4, 0x117bf: 0xe0004b26,
+-	// Block 0x45f, offset 0x117c0
+-	0x117c0: 0xe0008504, 0x117c2: 0xe00071d6,
+-	0x117c5: 0xe0008a14,
+-	0x117ca: 0xe00060b7, 0x117cb: 0xe0009839,
+-	0x117d1: 0xe0005460, 0x117d2: 0xe0005e73, 0x117d3: 0xe00057af,
+-	0x117d4: 0xe0006c7e, 0x117d7: 0xe0008435,
+-	0x117d9: 0xe0009ab5, 0x117db: 0xe0004a9d,
+-	0x117de: 0xe00093e7, 0x117df: 0xe0008311,
+-	0x117e1: 0xe0005c0c, 0x117e3: 0xe000743c,
+-	0x117eb: 0xe00041cc,
+-	0x117f5: 0xe00092a6,
+-	0x117f8: 0xe0005e93, 0x117f9: 0xe0006d80, 0x117fa: 0xe000a111, 0x117fb: 0xe0004a3a,
+-	0x117fd: 0xe0008b28,
+-	// Block 0x460, offset 0x11800
+-	0x11803: 0xe00060fb,
+-	0x11804: 0xe0003ed3, 0x11807: 0xe000953d,
+-	0x11808: 0xe0007a80, 0x1180a: 0xe000580c, 0x1180b: 0xe000479f,
+-	0x11810: 0xe00096f3, 0x11812: 0xe0007c49, 0x11813: 0xe0006ea8,
+-	0x11818: 0xe0004ade, 0x11819: 0xe00052cf, 0x1181a: 0xe0006e80,
+-	0x1181f: 0xe0004c54,
+-	0x11821: 0xe000689b, 0x11822: 0xe000969c,
+-	0x11826: 0xe000524c,
+-	0x1182b: 0xe000a2da,
+-	0x11835: 0xe00067cf,
+-	0x1183f: 0xe0003fcf,
+-	// Block 0x461, offset 0x11840
+-	0x11840: 0xe0004f09,
+-	0x11844: 0xe0004174,
+-	0x11849: 0xe0008758,
+-	0x1184d: 0xe00074d6, 0x1184e: 0xe0004b82,
+-	0x11850: 0xe00091cf,
+-	0x11854: 0xe0005045, 0x11857: 0xe000614b,
+-	0x1185c: 0xe000a28e, 0x1185d: 0xe0008bd0, 0x1185f: 0xe0003d8a,
+-	0x11860: 0xe000431c, 0x11862: 0xe0004137, 0x11863: 0xe0008315,
+-	0x1186e: 0xe0005157,
+-	0x11873: 0xe0006612,
+-	0x11876: 0xe00076ca,
+-	0x1187b: 0xe0009c92,
+-	0x1187c: 0xe0007f41, 0x1187f: 0xe00076c6,
+-	// Block 0x462, offset 0x11880
+-	0x11882: 0xe00050fd, 0x11883: 0xe0004a19,
+-	0x11893: 0xe0005655,
+-	0x1189a: 0xe00054b0, 0x1189b: 0xe0008bbc,
+-	0x1189c: 0xe000444a, 0x1189d: 0xe00051a0, 0x1189e: 0xe000765a, 0x1189f: 0xe000550f,
+-	0x118aa: 0xe0005513,
+-	0x118ac: 0xe00095f5,
+-	0x118b6: 0xe0009e04,
+-	0x118bb: 0xe000739b,
+-	0x118bc: 0xe00091d3,
+-	// Block 0x463, offset 0x118c0
+-	0x118c2: 0xe0005ecb, 0x118c3: 0xe0008f2a,
+-	0x118c4: 0xe000536e,
+-	0x118ca: 0xe00049de,
+-	0x118cc: 0xe0008319,
+-	0x118d1: 0xe0008eba, 0x118d2: 0xe0005372,
+-	0x118d6: 0xe00053be,
+-	0x118de: 0xe0005617,
+-	0x118e0: 0xe000a4a6, 0x118e1: 0xe0008e15, 0x118e3: 0xe000a45e,
+-	0x118ec: 0xe0009d89,
+-	0x118f2: 0xe0007ae1,
+-	0x118f7: 0xe000a528,
+-	0x118f8: 0xe000734b, 0x118f9: 0xe0008002, 0x118fa: 0xe0004c57, 0x118fb: 0xe000a3b5,
+-	0x118fd: 0xe000a4aa, 0x118fe: 0xe0004628, 0x118ff: 0xe0003f17,
+-	// Block 0x464, offset 0x11900
+-	0x11903: 0xe0006847,
+-	0x11906: 0xe000a4ae, 0x11907: 0xe0009e1c,
+-	0x11909: 0xe000423c,
+-	0x1190c: 0xe0003d48, 0x1190e: 0xe0009727,
+-	0x11910: 0xe000484a,
+-	0x11914: 0xe0009dfd,
+-	0x11919: 0xe000a4ca, 0x1191a: 0xe0006aa3, 0x1191b: 0xe0003f1b,
+-	0x1191f: 0xe0007575,
+-	0x11920: 0xe0009187, 0x11921: 0xe000a187, 0x11922: 0xe0008c3a, 0x11923: 0xe000875c,
+-	0x11924: 0xe0008e18, 0x11925: 0xe0006246, 0x11926: 0xe0005d0e, 0x11927: 0xe0004cf0,
+-	0x1192a: 0xe0007a26,
+-	0x11932: 0xe0006bd9,
+-	0x11937: 0xe00054f7,
+-	0x11938: 0xe0004a55, 0x1193b: 0xe00066e8,
+-	0x1193f: 0xe0005c87,
+-	// Block 0x465, offset 0x11940
+-	0x11940: 0xe0007ac5, 0x11942: 0xe000894c, 0x11943: 0xe00072f2,
+-	0x11944: 0xe0008cdc, 0x11946: 0xe00097be,
+-	0x11949: 0xe0006eac, 0x1194a: 0xe0006d83,
+-	0x1194d: 0xe0009adf,
+-	0x11951: 0xe0004c02,
+-	0x11956: 0xe0007048,
+-	0x11958: 0xe0008285,
+-	0x1195e: 0xe0007c4d,
+-	0x11962: 0xe0009273,
+-	0x11964: 0xe00068e3,
+-	0x1196b: 0xe0009743,
+-	0x1196d: 0xe0003fd3, 0x1196e: 0xe000559b, 0x1196f: 0xe0006616,
+-	0x11972: 0xe0006b27, 0x11973: 0xe0006e0d,
+-	0x11975: 0xe0004f0d, 0x11977: 0xe0007f1d,
+-	0x1197a: 0xe00067fb,
+-	0x1197c: 0xe0003db3, 0x1197d: 0xe000a31e, 0x1197f: 0xe0008560,
+-	// Block 0x466, offset 0x11980
+-	0x11981: 0xe000a3df,
+-	0x11984: 0xe000418c, 0x11985: 0xe0007fd5, 0x11986: 0xe000484d,
+-	0x1198b: 0xe0005d11,
+-	0x1198d: 0xe0005c0f, 0x1198f: 0xe0005ad3,
+-	0x11992: 0xe0005178, 0x11993: 0xe0007eb5,
+-	0x11994: 0xe0006530, 0x11996: 0xe0006533, 0x11997: 0xe0006536,
+-	0x11998: 0xe0006539, 0x1199a: 0xe0008f2e, 0x1199b: 0xe0005c12,
+-	0x119ab: 0xe0009ff7,
+-	0x119ac: 0xe0004850, 0x119af: 0xe0004fd9,
+-	0x119b3: 0xe0009540,
+-	0x119bf: 0xe00067ef,
+-	// Block 0x467, offset 0x119c0
+-	0x119c5: 0xe0008fc6,
+-	0x119c8: 0xe0008564,
+-	0x119cf: 0xe0007160,
+-	0x119d0: 0xe000847a, 0x119d1: 0xe0005e27, 0x119d3: 0xe0005b27,
+-	0x119db: 0xe000647b,
+-	0x119e3: 0xe0004c5a,
+-	0x119e4: 0xe00080f9,
+-	0x119f3: 0xe00078ed,
+-	0x119f4: 0xe0006d86, 0x119f7: 0xe0006672,
+-	0x119f8: 0xe000771e,
+-	0x119fe: 0xe000610f, 0x119ff: 0xe0004a3d,
+-	// Block 0x468, offset 0x11a00
+-	0x11a00: 0xe0008760, 0x11a01: 0xe0008bc8, 0x11a02: 0xe0004853, 0x11a03: 0xe0009917,
+-	0x11a0b: 0xe000826d,
+-	0x11a0e: 0xe0006113, 0x11a0f: 0xe00050b2,
+-	0x11a10: 0xe00069cf, 0x11a12: 0xe0005aaa,
+-	0x11a14: 0xe000a496, 0x11a15: 0xe00067a3, 0x11a17: 0xe0009c26,
+-	0x11a19: 0xe000788b, 0x11a1a: 0xe000784c, 0x11a1b: 0xe00070e4,
+-	0x11a1c: 0xe0006757, 0x11a1d: 0xe0007578, 0x11a1e: 0xe000a0d4, 0x11a1f: 0xe0003f7b,
+-	0x11a20: 0xe0008c3d,
+-	0x11a28: 0xe0004519, 0x11a2a: 0xe0007a0c,
+-	0x11a2d: 0xe00077ad,
+-	0x11a30: 0xe00097c1, 0x11a32: 0xe0004bca,
+-	0x11a34: 0xe0009903, 0x11a36: 0xe0005d64,
+-	0x11a3a: 0xe00041f4,
+-	0x11a3d: 0xe0004c5d, 0x11a3e: 0xe000643f,
+-	// Block 0x469, offset 0x11a40
+-	0x11a41: 0xe0007120, 0x11a42: 0xe0004c60, 0x11a43: 0xe00078b9,
+-	0x11a44: 0xe0007c79, 0x11a45: 0xe0007cd1, 0x11a46: 0xe0009d1e, 0x11a47: 0xe00075ee,
+-	0x11a48: 0xe000961d, 0x11a49: 0xe0009641,
+-	0x11a4c: 0xe00051bc, 0x11a4d: 0xe000a060,
+-	0x11a50: 0xe0005c67, 0x11a52: 0xe0005c8b, 0x11a53: 0xe0004ff5,
+-	0x11a54: 0xe0005b6b, 0x11a55: 0xe0005da0, 0x11a56: 0xe00094d9,
+-	0x11a58: 0xe00065a2, 0x11a59: 0xe00066eb, 0x11a5a: 0xe0008c40, 0x11a5b: 0xe0009927,
+-	0x11a6b: 0xe0005a5e,
+-	0x11a6c: 0xe0005aee, 0x11a6e: 0xe0008438,
+-	0x11a70: 0xe00096f7, 0x11a71: 0xe000969f, 0x11a73: 0xe0009bba,
+-	0x11a78: 0xe000653c, 0x11a79: 0xe0007e0c, 0x11a7b: 0xe0009578,
+-	0x11a7c: 0xe0006c1b, 0x11a7d: 0xe00043f0, 0x11a7e: 0xe00091a3, 0x11a7f: 0xe00075f2,
+-	// Block 0x46a, offset 0x11a80
+-	0x11a81: 0xe000a21f, 0x11a82: 0xe0009f50,
+-	0x11a84: 0xe0006ad7, 0x11a85: 0xe0006e10, 0x11a86: 0xe0008135,
+-	0x11a89: 0xe00090cf, 0x11a8a: 0xe0005e97,
+-	0x11a8c: 0xe0009b50,
+-	0x11a90: 0xe000586f, 0x11a91: 0xe0007e69, 0x11a93: 0xe000a0d8,
+-	0x11a94: 0xe0003f1f, 0x11a95: 0xe0006133, 0x11a97: 0xe00066ee,
+-	0x11a99: 0xe00099e3, 0x11a9a: 0xe00081ea, 0x11a9b: 0xe0006117,
+-	0x11a9c: 0xe0008c7f, 0x11a9d: 0xe0006c81,
+-	0x11aa0: 0xe000561b, 0x11aa1: 0xe0009a41, 0x11aa2: 0xe000989a, 0x11aa3: 0xe0007f99,
+-	0x11aa5: 0xe0004eb7,
+-	0x11aa8: 0xe0008a7d, 0x11aab: 0xe0009e68,
+-	0x11aae: 0xe0005f03, 0x11aaf: 0xe0005e2b,
+-	0x11ab0: 0xe00097c4, 0x11ab1: 0xe0007306, 0x11ab3: 0xe0007722,
+-	// Block 0x46b, offset 0x11ac0
+-	0x11ac4: 0xe000a2b5, 0x11ac7: 0xe00080fd,
+-	0x11aca: 0xe0009113, 0x11acb: 0xe0007440,
+-	0x11acc: 0xe000557b,
+-	0x11ad1: 0xe0006249, 0x11ad2: 0xe0006bee,
+-	0x11ad7: 0xe0006bdc,
+-	0x11ad9: 0xe0006d89, 0x11adb: 0xe0005342,
+-	0x11ade: 0xe0005210, 0x11adf: 0xe000806b,
+-	0x11ae5: 0xe0008ce0, 0x11ae7: 0xe0007e0f,
+-	0x11ae9: 0xe0006adb, 0x11aea: 0xe000a0dc, 0x11aeb: 0xe0009e48,
+-	0x11aec: 0xe0006ccf, 0x11aee: 0xe000515a,
+-	0x11af2: 0xe0008a80,
+-	0x11af5: 0xe0006eb0, 0x11af6: 0xe000a446,
+-	0x11af8: 0xe00046d0, 0x11af9: 0xe0007cd5, 0x11afa: 0xe0005be7, 0x11afb: 0xe000a1df,
+-	0x11afc: 0xe0007985, 0x11afd: 0xe000a4be, 0x11afe: 0xe000989d,
+-	// Block 0x46c, offset 0x11b00
+-	0x11b01: 0xe00057ee,
+-	0x11b19: 0xe0008670, 0x11b1a: 0xe0008b2c,
+-	0x11b1c: 0xe000661a,
+-	0x11b21: 0xe0005f93, 0x11b23: 0xe00079a8,
+-	0x11b24: 0xe0004771, 0x11b25: 0xe0007fa9, 0x11b26: 0xe0009a44, 0x11b27: 0xe000777a,
+-	0x11b29: 0xe0009ffa, 0x11b2a: 0xe00053fa,
+-	0x11b2c: 0xe00058be, 0x11b2e: 0xe000637a,
+-	0x11b34: 0xe0007ae5, 0x11b37: 0xe0009d65,
+-	0x11b38: 0xe0009621, 0x11b39: 0xe0009f04,
+-	0x11b3f: 0xe000992a,
+-	// Block 0x46d, offset 0x11b40
+-	0x11b42: 0xe000515d,
+-	0x11b45: 0xe000767e, 0x11b47: 0xe00042a0,
+-	0x11b48: 0xe0006c1e, 0x11b49: 0xe0006b5f,
+-	0x11b4c: 0xe0007b25, 0x11b4d: 0xe000a303, 0x11b4e: 0xe00075f6,
+-	0x11b51: 0xe0006cb7, 0x11b53: 0xe00075fa,
+-	0x11b54: 0xe00082b5, 0x11b55: 0xe0009255, 0x11b56: 0xe00058fa,
+-	0x11b6a: 0xe00063da, 0x11b6b: 0xe0004658,
+-	0x11b6f: 0xe0007324,
+-	0x11b72: 0xe000737b,
+-	0x11b74: 0xe00079f4, 0x11b75: 0xe0009c96, 0x11b77: 0xe0005250,
+-	0x11b78: 0xe000a360,
+-	0x11b7c: 0xe000548c, 0x11b7f: 0xe00096fb,
+-	// Block 0x46e, offset 0x11b80
+-	0x11b80: 0xe0008764, 0x11b83: 0xe00049e2,
+-	0x11b84: 0xe000957b, 0x11b85: 0xe00069d3, 0x11b86: 0xe000a306, 0x11b87: 0xe0004c63,
+-	0x11b88: 0xe000499e, 0x11b8b: 0xe0005970,
+-	0x11b8f: 0xe0009ffd,
+-	0x11b91: 0xe0006e54, 0x11b92: 0xe000904c,
+-	0x11b96: 0xe0004e7e,
+-	0x11b98: 0xe0005100, 0x11b99: 0xe00089d8, 0x11b9a: 0xe00057b2,
+-	0x11b9d: 0xe00065a5, 0x11b9e: 0xe0006d0f,
+-	0x11ba0: 0xe00065a8, 0x11ba1: 0xe0004f95, 0x11ba2: 0xe00075c2,
+-	0x11ba4: 0xe00074c4, 0x11ba5: 0xe00056cd, 0x11ba6: 0xe0003f23,
+-	0x11ba8: 0xe0008768, 0x11baa: 0xe0005837, 0x11bab: 0xe0007f6d,
+-	0x11bac: 0xe0006f43, 0x11bae: 0xe000a291,
+-	0x11bb1: 0xe0007124, 0x11bb3: 0xe0006eb4,
+-	0x11bb5: 0xe00075fe, 0x11bb6: 0xe0005436, 0x11bb7: 0xe000a098,
+-	0x11bb8: 0xe0009227, 0x11bb9: 0xe0007536, 0x11bba: 0xe00090d3, 0x11bbb: 0xe00091a7,
+-	0x11bbc: 0xe0005ce7,
+-	// Block 0x46f, offset 0x11bc0
+-	0x11bd7: 0xe0006813,
+-	0x11bd9: 0xe000a193, 0x11bda: 0xe000843b, 0x11bdb: 0xe0003ed7,
+-	0x11bdd: 0xe000986b, 0x11bdf: 0xe000876c,
+-	0x11be0: 0xe0004085, 0x11be1: 0xe0005103, 0x11be3: 0xe00066f1,
+-	0x11be4: 0xe0005f6f, 0x11be5: 0xe00071da, 0x11be6: 0xe0007961,
+-	0x11be8: 0xe0007a47, 0x11beb: 0xe0006adf,
+-	0x11bec: 0xe0009553, 0x11bed: 0xe0007d73, 0x11bef: 0xe0009d22,
+-	0x11bf2: 0xe0006a2f,
+-	0x11bf4: 0xe0003e7b, 0x11bf6: 0xe0007726, 0x11bf7: 0xe000765e,
+-	0x11bf8: 0xe0007e12, 0x11bfa: 0xe0005cd8,
+-	0x11bfc: 0xe0005dc3, 0x11bfd: 0xe00083cd, 0x11bfe: 0xe000a09c,
+-	// Block 0x470, offset 0x11c00
+-	0x11c03: 0xe000605c,
+-	0x11c04: 0xe0005dc6, 0x11c05: 0xe000555b,
+-	0x11c0a: 0xe0008a83,
+-	0x11c0d: 0xe0004f11, 0x11c0e: 0xe0005b8b,
+-	0x11c11: 0xe00069a1, 0x11c13: 0xe000647f,
+-	0x11c14: 0xe00085ec, 0x11c16: 0xe000a000,
+-	0x11c18: 0xe000689f, 0x11c1b: 0xe0004f99,
+-	0x11c1c: 0xe000704c, 0x11c1e: 0xe0008770, 0x11c1f: 0xe000a223,
+-	0x11c23: 0xe0005e4b,
+-	0x11c27: 0xe0007b29,
+-	0x11c2b: 0xe00093ea,
+-	0x11c2e: 0xe00080c9, 0x11c2f: 0xe0009797,
+-	0x11c32: 0xe0007cd9, 0x11c33: 0xe0004dab,
+-	0x11c3a: 0xe000624c,
+-	// Block 0x471, offset 0x11c40
+-	0x11c4f: 0xe0005049,
+-	0x11c50: 0xe0007cdd,
+-	0x11c55: 0xe0005ca7, 0x11c56: 0xe0008b30,
+-	0x11c58: 0xe0009cee,
+-	0x11c5c: 0xe00057f1, 0x11c5d: 0xe0004856, 0x11c5f: 0xe0005bc3,
+-	0x11c62: 0xe0008125,
+-	0x11c65: 0xe000637d, 0x11c67: 0xe0005857,
+-	0x11c6a: 0xe0004375, 0x11c6b: 0xe00078c9,
+-	0x11c6f: 0xe0006c21,
+-	0x11c71: 0xe0008ce4, 0x11c72: 0xe0006e13,
+-	0x11c75: 0xe0007f45, 0x11c76: 0xe0007b2d, 0x11c77: 0xe000a0b0,
+-	0x11c7a: 0xe0004ed0,
+-	0x11c7d: 0xe0007af5,
+-	// Block 0x472, offset 0x11c80
+-	0x11c82: 0xe0005fdb, 0x11c83: 0xe0007945,
+-	0x11c84: 0xe0008f7e, 0x11c85: 0xe0005b9b,
+-	0x11c88: 0xe000a063, 0x11c89: 0xe000a227, 0x11c8b: 0xe00081ab,
+-	0x11c8c: 0xe000907b, 0x11c8e: 0xe0009f54,
+-	0x11c91: 0xe000a1e3, 0x11c93: 0xe00083d0,
+-	0x11c94: 0xe0005106, 0x11c95: 0xe00052f7,
+-	0x11c99: 0xe000a2b8,
+-	0x11cac: 0xe000a066, 0x11cad: 0xe0009b74, 0x11caf: 0xe0009258,
+-	0x11cb4: 0xe00084bc, 0x11cb5: 0xe0005e77, 0x11cb7: 0xe0005682,
+-	0x11cb8: 0xe000a003,
+-	0x11cbe: 0xe00044d1, 0x11cbf: 0xe0005a06,
+-	// Block 0x473, offset 0x11cc0
+-	0x11cc1: 0xe00074a9, 0x11cc2: 0xe0009ab8,
+-	0x11cc4: 0xe000734e, 0x11cc6: 0xe000960d,
+-	0x11cc9: 0xe00056d1,
+-	0x11ccc: 0xe0004b5e, 0x11ccf: 0xe00057b5,
+-	0x11cd1: 0xe0004019, 0x11cd3: 0xe00058fd,
+-	0x11cd4: 0xe0007602, 0x11cd5: 0xe00088d7,
+-	0x11cd9: 0xe0004f41, 0x11cda: 0xe00048ec,
+-	0x11ce0: 0xe00059ca, 0x11ce2: 0xe0009c2a, 0x11ce3: 0xe000552f,
+-	0x11cea: 0xe0008005, 0x11ceb: 0xe0005a0a,
+-	0x11cec: 0xe0008c43, 0x11ced: 0xe0005aae,
+-	0x11cf0: 0xe00064fb, 0x11cf1: 0xe0006d8c, 0x11cf2: 0xe0008f82, 0x11cf3: 0xe0008385,
+-	0x11cf8: 0xe000869c,
+-	0x11cfc: 0xe00093c9, 0x11cfe: 0xe0007478, 0x11cff: 0xe000831d,
+-	// Block 0x474, offset 0x11d00
+-	0x11d01: 0xe000772a,
+-	0x11d0f: 0xe0007ef5,
+-	0x11d11: 0xe0005f73,
+-	0x11d14: 0xe00041f8, 0x11d17: 0xe0008dc8,
+-	0x11d18: 0xe0005f07, 0x11d19: 0xe0004aa0, 0x11d1a: 0xe0006e58, 0x11d1b: 0xe00082a5,
+-	0x11d1c: 0xe00082b9, 0x11d1d: 0xe000a4ce, 0x11d1e: 0xe0005658, 0x11d1f: 0xe00069d7,
+-	0x11d21: 0xe00051d4, 0x11d22: 0xe000a22b,
+-	0x11d24: 0xe0007ed1, 0x11d26: 0xe0005786,
+-	0x11d2d: 0xe0004f9d, 0x11d2e: 0xe00088da, 0x11d2f: 0xe000713c,
+-	0x11d30: 0xe0004a1c,
+-	0x11d34: 0xe000847d,
+-	0x11d38: 0xe00067d3, 0x11d3a: 0xe0008289,
+-	0x11d3c: 0xe0005214, 0x11d3d: 0xe000624f, 0x11d3e: 0xe000591c,
+-	// Block 0x475, offset 0x11d40
+-	0x11d41: 0xe0006833, 0x11d42: 0xe0008df0,
+-	0x11d44: 0xe0008dec, 0x11d46: 0xe0007ac8,
+-	0x11d48: 0xe000915f, 0x11d49: 0xe0003f27, 0x11d4b: 0xe000a2e2,
+-	0x11d4c: 0xe0007015, 0x11d4d: 0xe0008a86, 0x11d4e: 0xe000994f,
+-	0x11d50: 0xe0007c51, 0x11d52: 0xe000a0f8,
+-	0x11d54: 0xe000a006, 0x11d57: 0xe0003e13,
+-	0x11d58: 0xe00067d7,
+-	0x11d5f: 0xe000587f,
+-	0x11d61: 0xe000894f, 0x11d63: 0xe0009c2e,
+-	0x11d64: 0xe00097f2, 0x11d67: 0xe000563a,
+-	0x11d68: 0xe00069a4,
+-	0x11d6e: 0xe000a294, 0x11d6f: 0xe0008e6e,
+-	0x11d71: 0xe0008568, 0x11d73: 0xe000784f,
+-	0x11d76: 0xe00085f0,
+-	0x11d79: 0xe0004fa1,
+-	0x11d7e: 0xe0004f5d,
+-	// Block 0x476, offset 0x11d80
+-	0x11d80: 0xe0004178, 0x11d81: 0xe00096d7, 0x11d82: 0xe000559f, 0x11d83: 0xe0004e50,
+-	0x11d86: 0xe0006483, 0x11d87: 0xe000691b,
+-	0x11d89: 0xe0006e16, 0x11d8a: 0xe00077b0,
+-	0x11d95: 0xe0006f59,
+-	0x11d98: 0xe0004e28, 0x11d9a: 0xe000772e, 0x11d9b: 0xe0005cab,
+-	0x11d9e: 0xe00065ab, 0x11d9f: 0xe0008847,
+-	0x11da0: 0xe000a009, 0x11da1: 0xe0007e15,
+-	0x11da4: 0xe0005109,
+-	0x11da9: 0xe000a00c, 0x11dab: 0xe00053c2,
+-	0x11dac: 0xe0008b34, 0x11dae: 0xe00062cc, 0x11daf: 0xe00096db,
+-	0x11db1: 0xe000661e, 0x11db3: 0xe00082bd,
+-	0x11db4: 0xe000777e,
+-	0x11dba: 0xe0009117,
+-	0x11dbe: 0xe00054b3,
+-	// Block 0x477, offset 0x11dc0
+-	0x11dc1: 0xe0007444,
+-	0x11dc5: 0xe0009f58, 0x11dc6: 0xe000517c, 0x11dc7: 0xe0007a18,
+-	0x11dc9: 0xe00066f4, 0x11dcb: 0xe0007128,
+-	0x11dcf: 0xe00057f4,
+-	0x11dd1: 0xe0009a9e, 0x11dd2: 0xe000691f, 0x11dd3: 0xe0008df4,
+-	0x11dd5: 0xe0006622,
+-	0x11dd8: 0xe000565b, 0x11dda: 0xe0009c32, 0x11ddb: 0xe0007732,
+-	0x11ddc: 0xe0007f01, 0x11ddd: 0xe00054fb, 0x11dde: 0xe0008774, 0x11ddf: 0xe0006c24,
+-	0x11de3: 0xe0009d68,
+-	0x11de6: 0xe0008480, 0x11de7: 0xe00056f1,
+-	0x11de8: 0xe0005720,
+-	0x11def: 0xe0007736,
+-	0x11df0: 0xe0005df6, 0x11df2: 0xe00055ab,
+-	0x11df7: 0xe000807d,
+-	0x11df8: 0xe00091d7,
+-	0x11dfc: 0xe000747c, 0x11dfe: 0xe0005376,
+-	// Block 0x478, offset 0x11e00
+-	0x11e04: 0xe0006b6f,
+-	0x11e0c: 0xe000462c, 0x11e0e: 0xe00076ce,
+-	0x11e10: 0xe0009f5c, 0x11e11: 0xe0006d32, 0x11e13: 0xe0005392,
+-	0x11e18: 0xe000972b,
+-	0x11e1d: 0xe000a00f, 0x11e1e: 0xe00098c1,
+-	0x11e23: 0xe0005a0e,
+-	0x11e29: 0xe00076d2, 0x11e2b: 0xe000a114,
+-	0x11e2f: 0xe0008804,
+-	0x11e30: 0xe000a297,
+-	0x11e38: 0xe0004859,
+-	0x11e3c: 0xe000823d, 0x11e3d: 0xe00083d3, 0x11e3e: 0xe00083f4,
+-	// Block 0x479, offset 0x11e40
+-	0x11e41: 0xe0004cf3,
+-	0x11e45: 0xe00042a4, 0x11e46: 0xe0005d94,
+-	0x11e4a: 0xe000951f,
+-	0x11e4e: 0xe0007696,
+-	0x11e52: 0xe00092a9,
+-	0x11e55: 0xe0009d3e,
+-	0x11e58: 0xe000a462, 0x11e59: 0xe00081ae, 0x11e5a: 0xe00046d4,
+-	0x11e61: 0xe0008778,
+-	0x11e64: 0xe0006c27,
+-	0x11e6b: 0xe0009e6c,
+-	0x11e6c: 0xe0004088, 0x11e6d: 0xe000972f, 0x11e6e: 0xe0009a7a, 0x11e6f: 0xe0009f60,
+-	0x11e70: 0xe0009a7d, 0x11e73: 0xe00061f7,
+-	0x11e77: 0xe0008a89,
+-	0x11e78: 0xe0008241, 0x11e79: 0xe00086a0,
+-	// Block 0x47a, offset 0x11e80
+-	0x11e88: 0xe000557f, 0x11e8a: 0xe0007480, 0x11e8b: 0xe000a412,
+-	0x11e8f: 0xe0007852,
+-	0x11e93: 0xe000439f,
+-	0x11e98: 0xe000a0e0, 0x11e99: 0xe0005346,
+-	0x11e9c: 0xe000a3cd, 0x11e9d: 0xe0008be8, 0x11e9f: 0xe0007606,
+-	0x11eb1: 0xe00042a8,
+-	0x11eb9: 0xe0009953,
+-	0x11ebd: 0xe0006308,
+-	// Block 0x47b, offset 0x11ec0
+-	0x11ec4: 0xe000a385,
+-	0x11ec9: 0xe00074ee,
+-	0x11ecc: 0xe0008b38,
+-	0x11ed9: 0xe000605f, 0x11eda: 0xe0006443,
+-	0x11edc: 0xe000a0b4, 0x11ede: 0xe00051c0,
+-	0x11ee0: 0xe0006f46, 0x11ee1: 0xe0005d14,
+-	0x11ee6: 0xe00092ac,
+-	0x11eed: 0xe0004324, 0x11eee: 0xe000a476, 0x11eef: 0xe0008271,
+-	0x11ef0: 0xe000769a, 0x11ef1: 0xe0009e4c,
+-	0x11ef6: 0xe000760a,
+-	// Block 0x47c, offset 0x11f00
+-	0x11f06: 0xe0009bde, 0x11f07: 0xe000a3fa,
+-	0x11f09: 0xe0005533, 0x11f0a: 0xe000a3c5,
+-	0x11f0c: 0xe000a22f, 0x11f0e: 0xe000856c,
+-	0x11f10: 0xe000773a, 0x11f12: 0xe0007da6,
+-	0x11f16: 0xe0004d7f, 0x11f17: 0xe0004d8b,
+-	0x11f19: 0xe000760e,
+-	0x11f1c: 0xe0007c31, 0x11f1e: 0xe00067ff,
+-	0x11f22: 0xe0004320,
+-	0x11f24: 0xe0005ad6, 0x11f25: 0xe000a197, 0x11f26: 0xe000a34b, 0x11f27: 0xe00088dd,
+-	0x11f28: 0xe0007a4a, 0x11f29: 0xe00060bb,
+-	0x11f2c: 0xe0007448, 0x11f2e: 0xe00081b1,
+-	0x11f3d: 0xe0006a33,
+-	// Block 0x47d, offset 0x11f40
+-	0x11f40: 0xe00076f6,
+-	0x11f44: 0xe0007050, 0x11f45: 0xe00078f1, 0x11f47: 0xe000a321,
+-	0x11f49: 0xe0007c55, 0x11f4a: 0xe0007c99,
+-	0x11f4f: 0xe000a389,
+-	0x11f52: 0xe0009f64,
+-	0x11f54: 0xe0007b31,
+-	0x11f59: 0xe000a501, 0x11f5b: 0xe0009ae2,
+-	0x11f5f: 0xe0006e5c,
+-	0x11f60: 0xe0006f71, 0x11f62: 0xe000630c,
+-	0x11f64: 0xe0008099,
+-	0x11f68: 0xe0007da9,
+-	0x11f6c: 0xe0007855, 0x11f6f: 0xe0006aa7,
+-	0x11f71: 0xe0007682, 0x11f72: 0xe0004328,
+-	0x11f79: 0xe000a504, 0x11f7a: 0xe000a507,
+-	0x11f7e: 0xe000957e,
+-	// Block 0x47e, offset 0x11f80
+-	0x11f81: 0xe00076ea, 0x11f83: 0xe0007612,
+-	0x11f88: 0xe00052d3, 0x11f89: 0xe00051c4, 0x11f8b: 0xe0009303,
+-	0x11f8e: 0xe0005765,
+-	0x11f90: 0xe0005920, 0x11f92: 0xe0006c2a,
+-	0x11f94: 0xe00060bf, 0x11f95: 0xe0007616, 0x11f96: 0xe0007140,
+-	0x11f99: 0xe000979f,
+-	0x11f9f: 0xe000773e,
+-	0x11fa0: 0xe0007c41,
+-	0x11fa5: 0xe00088e0, 0x11fa6: 0xe0008e72, 0x11fa7: 0xe0006d8f,
+-	0x11fac: 0xe000a3e2, 0x11fad: 0xe000933b, 0x11fae: 0xe0006b63,
+-	0x11fb9: 0xe000a52b, 0x11fbb: 0xe000a38d,
+-	0x11fbc: 0xe000709c, 0x11fbe: 0xe000510c, 0x11fbf: 0xe0007a83,
+-	// Block 0x47f, offset 0x11fc0
+-	0x11fc0: 0xe0009e38,
+-	0x11fc6: 0xe0009aa2, 0x11fc7: 0xe0006b0f,
+-	0x11fcb: 0xe000a3a1,
+-	0x11fcc: 0xe00046f8, 0x11fcd: 0xe0006787,
+-	0x11fd0: 0xe000565e,
+-	0x11fd4: 0xe000a52e, 0x11fd7: 0xe00076fa,
+-	0x11fda: 0xe00073f8, 0x11fdb: 0xe000537a,
+-	0x11fdf: 0xe000465c,
+-	0x11fe5: 0xe000934f,
+-	0x11fe8: 0xe0008ebe, 0x11fea: 0xe00088e3,
+-	0x11fec: 0xe00098a0, 0x11fed: 0xe00083fa,
+-	0x11ff0: 0xe0007ce1, 0x11ff2: 0xe0007d76,
+-	0x11ff5: 0xe0008245, 0x11ff6: 0xe0006380,
+-	0x11ff8: 0xe00098c4, 0x11ff9: 0xe0004ee2, 0x11ffa: 0xe00073d0, 0x11ffb: 0xe000a309,
+-	0x11ffd: 0xe00068a3, 0x11ffe: 0xe000802f,
+-	// Block 0x480, offset 0x12000
+-	0x12000: 0xe00068a7, 0x12002: 0xe0008389,
+-	0x12006: 0xe0008321, 0x12007: 0xe000997b,
+-	0x12008: 0xe00098eb, 0x1200b: 0xe00085f4,
+-	0x1200c: 0xe000992d,
+-	0x12012: 0xe00091f3, 0x12013: 0xe000602f,
+-	0x12014: 0xe0005ecf, 0x12016: 0xe0007e6c,
+-	0x12018: 0xe0005180, 0x12019: 0xe0007178, 0x1201a: 0xe00097fe, 0x1201b: 0xe0007ba8,
+-	0x1201d: 0xe0006626, 0x1201f: 0xe0005c15,
+-	0x12021: 0xe0005c18, 0x12022: 0xe0005723,
+-	0x12027: 0xe0005c6b,
+-	0x12029: 0xe0005da4,
+-	0x1202f: 0xe000444d,
+-	0x12032: 0xe0006923,
+-	0x12034: 0xe0008483,
+-	0x12038: 0xe00081ed, 0x12039: 0xe0009879,
+-	0x1203d: 0xe00041a4,
+-	// Block 0x481, offset 0x12040
+-	0x12040: 0xe0006968, 0x12041: 0xe00058c1,
+-	0x12047: 0xe0006487,
+-	0x1204d: 0xe00040fb,
+-	0x12052: 0xe000a069,
+-	0x12056: 0xe0005362,
+-	0x12062: 0xe0005184,
+-	0x12067: 0xe000a50a,
+-	0x1206c: 0xe00041a8, 0x1206f: 0xe000611b,
+-	0x12073: 0xe0008275,
+-	0x12074: 0xe000724a, 0x12075: 0xe000a53b,
+-	// Block 0x482, offset 0x12080
+-	0x12080: 0xe00068ab, 0x12082: 0xe00046d8,
+-	0x12084: 0xe00084c0,
+-	0x12089: 0xe00065ae,
+-	0x1208e: 0xe00072da,
+-	0x12090: 0xe000a012, 0x12092: 0xe00065b1,
+-	0x12097: 0xe000485c,
+-	0x12099: 0xe000843e,
+-	0x120a1: 0xe00047a2, 0x120a2: 0xe0009bfe,
+-	0x120a5: 0xe0006efc,
+-	0x120a8: 0xe0007f0d, 0x120a9: 0xe0006d92,
+-	0x120b4: 0xe0009a14, 0x120b7: 0xe00041d0,
+-	0x120b8: 0xe00058c4, 0x120b9: 0xe0009f08, 0x120ba: 0xe0007f49, 0x120bb: 0xe00067db,
+-	0x120bc: 0xe00053fe, 0x120bd: 0xe0009930,
+-	// Block 0x483, offset 0x120c0
+-	0x120c9: 0xe0004cf6, 0x120ca: 0xe00077b3,
+-	0x120d3: 0xe00045d8,
+-	0x120d6: 0xe0008f86, 0x120d7: 0xe0008008,
+-	0x120d8: 0xe000887a, 0x120d9: 0xe000840e, 0x120db: 0xe0005b2b,
+-	0x120dc: 0xe0006fd9, 0x120dd: 0xe00089bc,
+-	0x120e2: 0xe000a06c,
+-	0x120e5: 0xe0007a38, 0x120e7: 0xe0007988,
+-	0x120e8: 0xe0007d19, 0x120e9: 0xe0006ba3, 0x120ea: 0xe0008441, 0x120eb: 0xe0005cdb,
+-	0x120f1: 0xe0004e47,
+-	0x120f4: 0xe000a363, 0x120f6: 0xe0007e18, 0x120f7: 0xe0007e1b,
+-	0x120fe: 0xe000a1e7, 0x120ff: 0xe0007ce5,
+-	// Block 0x484, offset 0x12100
+-	0x12103: 0xe0007351,
+-	0x12104: 0xe00078bd, 0x12105: 0xe00066f7,
+-	0x12110: 0xe0008325, 0x12112: 0xe0007858,
+-	0x12117: 0xe0004a06,
+-	0x12118: 0xe0009a17,
+-	0x1211c: 0xe0005944,
+-	0x12120: 0xe0005789,
+-	0x12128: 0xe0005188, 0x12129: 0xe00077e9, 0x1212a: 0xe000a29a, 0x1212b: 0xe0009e2c,
+-	0x1212c: 0xe0009d8c, 0x1212f: 0xe000a3a5,
+-	0x12130: 0xe0007742, 0x12132: 0xe000a2ce,
+-	0x12135: 0xe00055b3, 0x12137: 0xe00046fc,
+-	0x12138: 0xe0006d95, 0x1213a: 0xe0004f61, 0x1213b: 0xe0009e08,
+-	0x1213c: 0xe0005df9,
+-	// Block 0x485, offset 0x12140
+-	0x12141: 0xe0009e30,
+-	0x12144: 0xe0009e70, 0x12146: 0xe00081b4, 0x12147: 0xe0006cf7,
+-	0x12148: 0xe0005685, 0x12149: 0xe00078c1, 0x1214b: 0xe0007a10,
+-	0x1214e: 0xe000877c,
+-	0x12154: 0xe00090d7, 0x12155: 0xe0003e53, 0x12156: 0xe000485f, 0x12157: 0xe0007bab,
+-	0x12158: 0xe0004c66,
+-	0x1215e: 0xe00063dd, 0x1215f: 0xe0005e2f,
+-	0x12160: 0xe0004040,
+-	0x12166: 0xe0004208, 0x12167: 0xe0007ed5,
+-	0x12169: 0xe00079ac, 0x1216b: 0xe0005af1,
+-	0x1216d: 0xe000662a,
+-	0x12172: 0xe00055d7, 0x12173: 0xe0005097,
+-	0x12177: 0xe00086bc,
+-	0x12179: 0xe0009e74, 0x1217b: 0xe00098c7,
+-	// Block 0x486, offset 0x12180
+-	0x12180: 0xe0005e9b, 0x12182: 0xe0003d4b,
+-	0x12186: 0xe000806e,
+-	0x12188: 0xe0003d8d, 0x12189: 0xe0005e33, 0x1218a: 0xe00067a7,
+-	0x1218c: 0xe0009b54, 0x1218d: 0xe0008ce8, 0x1218f: 0xe0003db7,
+-	0x12192: 0xe0008d4c,
+-	0x12196: 0xe00046dc,
+-	0x12199: 0xe000455d,
+-	0x1219d: 0xe000a34e, 0x1219e: 0xe000534a,
+-	0x121a0: 0xe0008a8c, 0x121a2: 0xe0007f4d, 0x121a3: 0xe0006eb8,
+-	0x121a4: 0xe0006252, 0x121a5: 0xe0008032, 0x121a6: 0xe0009dd5,
+-	0x121a9: 0xe0009f68, 0x121aa: 0xe0004a6d, 0x121ab: 0xe00094f1,
+-	0x121ad: 0xe0005f0b, 0x121ae: 0xe0009942,
+-	0x121b5: 0xe0008808, 0x121b7: 0xe0005d17,
+-	0x121b9: 0xe0006ba7,
+-	0x121bd: 0xe0008780, 0x121be: 0xe0009e78,
+-	// Block 0x487, offset 0x121c0
+-	0x121c1: 0xe0006a37, 0x121c3: 0xe0004862,
+-	0x121c4: 0xe0009eb0, 0x121c5: 0xe0005402, 0x121c6: 0xe00058c7, 0x121c7: 0xe0006d98,
+-	0x121c9: 0xe00057f7,
+-	0x121d3: 0xe00079b0,
+-	0x121db: 0xe0009625,
+-	0x121e0: 0xe0008570, 0x121e1: 0xe0006e60, 0x121e2: 0xe00096df,
+-	0x121e4: 0xe0008412, 0x121e5: 0xe000a015, 0x121e6: 0xe0004c69,
+-	0x121e8: 0xe00044d5, 0x121ea: 0xe0004c6c, 0x121eb: 0xe0006310,
+-	0x121ec: 0xe00079b4, 0x121ee: 0xe00089dc, 0x121ef: 0xe0004630,
+-	0x121f0: 0xe000769e, 0x121f1: 0xe0008952, 0x121f2: 0xe0006089, 0x121f3: 0xe0005974,
+-	0x121f4: 0xe0004b86, 0x121f5: 0xe000653f, 0x121f6: 0xe00098a3,
+-	0x121f8: 0xe00096e3, 0x121fa: 0xe0006137,
+-	0x121ff: 0xe000a0a0,
+-	// Block 0x488, offset 0x12200
+-	0x12200: 0xe0007bae, 0x12201: 0xe0005c1b, 0x12203: 0xe00094bd,
+-	0x12204: 0xe0006a3b, 0x12205: 0xe000887d, 0x12206: 0xe0006bcb,
+-	0x1220b: 0xe0007d79,
+-	0x1220e: 0xe0009d8f,
+-	0x12215: 0xe0009bbd, 0x12217: 0xe0007ce9,
+-	0x12219: 0xe0004e38, 0x1221a: 0xe000a018, 0x1221b: 0xe0007746,
+-	0x1221c: 0xe0007e1e, 0x1221d: 0xe000a263, 0x1221e: 0xe000696b, 0x1221f: 0xe0006f49,
+-	0x12220: 0xe00057fa, 0x12222: 0xe0007b35, 0x12223: 0xe0006d41,
+-	0x12224: 0xe0007a86, 0x12225: 0xe00078cd,
+-	0x12228: 0xe0008cec, 0x12229: 0xe0009f6c, 0x1222a: 0xe000599b,
+-	0x1222d: 0xe000504d, 0x1222f: 0xe0005406,
+-	0x12230: 0xe0004751, 0x12231: 0xe00085f8, 0x12232: 0xe0008fca, 0x12233: 0xe0008e3c,
+-	0x1223d: 0xe0008a18, 0x1223e: 0xe0004b2a,
+-	// Block 0x489, offset 0x12240
+-	0x12240: 0xe00093cc, 0x12242: 0xe0004c6f, 0x12243: 0xe00058ca,
+-	0x12246: 0xe00048ef, 0x12247: 0xe0006a3f,
+-	0x12249: 0xe0005537, 0x1224a: 0xe0005d98, 0x1224b: 0xe0008329,
+-	0x12258: 0xe0005924,
+-	0x1225c: 0xe000a233, 0x1225d: 0xe0004754, 0x1225e: 0xe0005e9f, 0x1225f: 0xe00042ac,
+-	0x12261: 0xe0008cf0, 0x12263: 0xe0004c72,
+-	0x12265: 0xe00042b0, 0x12267: 0xe000614f,
+-	0x12268: 0xe0008e76, 0x1226a: 0xe00088e6, 0x1226b: 0xe0005051,
+-	0x12270: 0xe000a19b, 0x12272: 0xe0006d9b,
+-	0x12275: 0xe000757b,
+-	0x12279: 0xe0006e64,
+-	0x1227d: 0xe00068fe, 0x1227f: 0xe0006a43,
+-	// Block 0x48a, offset 0x12280
+-	0x12286: 0xe0008d80,
+-	0x1228a: 0xe00042b4,
+-	0x1228f: 0xe00056f5,
+-	0x12294: 0xe000774a,
+-	0x12298: 0xe0004634, 0x1229a: 0xe0008e7a, 0x1229b: 0xe000a1bb,
+-	0x1229c: 0xe00045ae,
+-	0x122a0: 0xe000a01b, 0x122a2: 0xe0009abb, 0x122a3: 0xe00098ef,
+-	0x122a6: 0xe0007964,
+-	0x122a9: 0xe000911b,
+-	0x122ae: 0xe0007921,
+-	0x122b2: 0xe0009819,
+-	0x122b7: 0xe00081b7,
+-	// Block 0x48b, offset 0x122c0
+-	0x122c1: 0xe00061fb, 0x122c3: 0xe0009435,
+-	0x122c4: 0xe00041ac,
+-	0x122cc: 0xe00048f2, 0x122cd: 0xe0005b3f, 0x122ce: 0xe00085fc,
+-	0x122d1: 0xe0008bec, 0x122d3: 0xe000616b,
+-	0x122d5: 0xe0007925,
+-	0x122d8: 0xe0003edb, 0x122da: 0xe000712c, 0x122db: 0xe00091ab,
+-	0x122de: 0xe00068e7, 0x122df: 0xe0006927,
+-	0x122e3: 0xe00067ab,
+-	0x122e5: 0xe000692b, 0x122e6: 0xe0006c2d,
+-	0x122e8: 0xe0007b39, 0x122eb: 0xe0006255,
+-	0x122ec: 0xe0007b3d,
+-	0x122f0: 0xe0008574, 0x122f1: 0xe0007e21, 0x122f2: 0xe0003f43, 0x122f3: 0xe00070a0,
+-	0x122f7: 0xe0004daf,
+-	0x122f8: 0xe0008578, 0x122fa: 0xe0008784,
+-	0x122ff: 0xe0005b43,
+-	// Block 0x48c, offset 0x12300
+-	0x12307: 0xe0004ac6,
+-	0x1230a: 0xe000432c, 0x1230b: 0xe0008600,
+-	0x1230c: 0xe0004378, 0x1230e: 0xe00041d4, 0x1230f: 0xe0007a3b,
+-	0x12311: 0xe000857c, 0x12313: 0xe0004ff9,
+-	0x12314: 0xe0005f0f,
+-	0x12319: 0xe00057fd, 0x1231a: 0xe000648b, 0x1231b: 0xe0008cf4,
+-	0x1231c: 0xe0009475, 0x1231d: 0xe0005d1a,
+-	0x12320: 0xe0008604, 0x12322: 0xe0009b58,
+-	0x12324: 0xe00095b7, 0x12325: 0xe0005444, 0x12326: 0xe000a415, 0x12327: 0xe0005448,
+-	0x1232a: 0xe00060c3, 0x1232b: 0xe000a13e,
+-	0x1232f: 0xe0008b3c,
+-	0x12330: 0xe0008035,
+-	0x12335: 0xe000a117, 0x12336: 0xe0005025,
+-	0x12338: 0xe0004c75, 0x1233a: 0xe0003f7f,
+-	0x1233f: 0xe0004c78,
+-	// Block 0x48d, offset 0x12340
+-	0x12346: 0xe0003f83, 0x12347: 0xe0008a8f,
+-	0x12348: 0xe000616f, 0x1234a: 0xe00091f7, 0x1234b: 0xe0009b5c,
+-	0x1234e: 0xe0006c33, 0x1234f: 0xe0006c30,
+-	0x12351: 0xe0007fd8,
+-	0x12354: 0xe000880c,
+-	0x12359: 0xe000a49a, 0x1235a: 0xe00048f5,
+-	0x1235d: 0xe00067af,
+-	0x12363: 0xe0007bfc,
+-	0x12365: 0xe000401c,
+-	0x12369: 0xe0009507, 0x1236b: 0xe00075a6,
+-	0x12371: 0xe0009a47, 0x12372: 0xe0009b25, 0x12373: 0xe0003edf,
+-	0x12374: 0xe00071a8, 0x12375: 0xe00081ba,
+-	0x12378: 0xe0004f65, 0x12379: 0xe0008cf8,
+-	0x1237c: 0xe0005218, 0x1237d: 0xe0008444, 0x1237e: 0xe0008d84,
+-	// Block 0x48e, offset 0x12380
+-	0x12380: 0xe00048f8, 0x12382: 0xe0003d4e, 0x12383: 0xe0009eb4,
+-	0x12385: 0xe00061ff, 0x12387: 0xe0008bf0,
+-	0x1238a: 0xe0008608,
+-	0x1238d: 0xe0008038, 0x1238e: 0xe0009d92,
+-	0x12392: 0xe000744c, 0x12393: 0xe00095ba,
+-	0x12394: 0xe0009581, 0x12395: 0xe000a466,
+-	0x12398: 0xe000527c, 0x12399: 0xe00042b8, 0x1239b: 0xe0009825,
+-	0x1239e: 0xe00065b4,
+-	0x123a2: 0xe00058cd, 0x123a3: 0xe0008c82,
+-	0x123a4: 0xe0008a3e, 0x123a7: 0xe000675a,
+-	0x123b0: 0xe0004fa5, 0x123b2: 0xe000599e, 0x123b3: 0xe0005980,
+-	0x123b4: 0xe0009584,
+-	0x123b9: 0xe00065b7, 0x123ba: 0xe0006542,
+-	0x123bc: 0xe00043f3, 0x123bf: 0xe0007dac,
+-	// Block 0x48f, offset 0x123c0
+-	0x123c0: 0xe00074ac, 0x123c1: 0xe000950a,
+-	0x123c7: 0xe0008a1c,
+-	0x123c8: 0xe00043a2, 0x123c9: 0xe0007e6f, 0x123cb: 0xe0009b17,
+-	0x123cd: 0xe0007450,
+-	0x123d0: 0xe0007e72,
+-	0x123d5: 0xe0009be1,
+-	0x123d9: 0xe0006c36,
+-	0x123df: 0xe00078d1,
+-	0x123e0: 0xe000907f, 0x123e1: 0xe0008f8a, 0x123e2: 0xe0005f13,
+-	0x123e4: 0xe0005800, 0x123e6: 0xe0006d9e, 0x123e7: 0xe0009c02,
+-	0x123ef: 0xe00089a4,
+-	0x123f0: 0xe0005330, 0x123f3: 0xe0009438,
+-	0x123f4: 0xe000838d,
+-	0x123fb: 0xe00057b8,
+-	// Block 0x490, offset 0x12400
+-	0x12402: 0xe0005768, 0x12403: 0xe000585f,
+-	0x12406: 0xe0005688,
+-	0x12408: 0xe0009a1a, 0x12409: 0xe0004f45,
+-	0x1240c: 0xe000729a, 0x1240e: 0xe0003e17,
+-	0x12412: 0xe0007e24,
+-	0x12415: 0xe0007949, 0x12416: 0xe0006153,
+-	0x12418: 0xe00054da,
+-	0x1241c: 0xe000860c,
+-	0x12421: 0xe0009587, 0x12422: 0xe0007484,
+-	0x12424: 0xe0008674, 0x12425: 0xe0008df8, 0x12427: 0xe0005517,
+-	0x12428: 0xe0004604, 0x12429: 0xe0005315,
+-	0x1242c: 0xe0006a47, 0x1242d: 0xe0007782, 0x1242e: 0xe0007f51, 0x1242f: 0xe00048fb,
+-	0x12430: 0xe0007929, 0x12431: 0xe0009747, 0x12432: 0xe0008580,
+-	0x12438: 0xe000437b, 0x1243b: 0xe00052d7,
+-	0x1243c: 0xe0005f77, 0x1243d: 0xe00060a3, 0x1243e: 0xe00060a7,
+-	// Block 0x491, offset 0x12440
+-	0x12440: 0xe0004bde, 0x12441: 0xe0008955, 0x12443: 0xe0005c48,
+-	0x12444: 0xe00084c4, 0x12446: 0xe000401f, 0x12447: 0xe000a237,
+-	0x1244b: 0xe0004450,
+-	0x1244e: 0xe00047a5,
+-	0x12450: 0xe00043f6, 0x12453: 0xe000a01e,
+-	0x12456: 0xe000a1bf,
+-	0x1245a: 0xe0007354, 0x1245b: 0xe000a324,
+-	0x1245c: 0xe000a06f, 0x1245e: 0xe000a072,
+-	0x12464: 0xe00098ca,
+-	0x1246c: 0xe0009c06, 0x1246e: 0xe0009b28,
+-	0x12474: 0xe0008b6c, 0x12476: 0xe000675d,
+-	0x12478: 0xe0004982, 0x1247a: 0xe00093ed,
+-	0x1247f: 0xe0005bc7,
+-	// Block 0x492, offset 0x12480
+-	0x12482: 0xe0007bb1, 0x12483: 0xe0006062,
+-	0x12486: 0xe0006447,
+-	0x12488: 0xe000774e, 0x1248a: 0xe0008081,
+-	0x1248c: 0xe00079f8, 0x1248d: 0xe0009cf2, 0x1248e: 0xe000730a,
+-	0x12492: 0xe0009cca,
+-	0x12494: 0xe000a2bb, 0x12496: 0xe0004022,
+-	0x12499: 0xe000626a, 0x1249b: 0xe0006bab,
+-	0x1249c: 0xe000510f, 0x1249e: 0xe000828d, 0x1249f: 0xe0005b33,
+-	0x124a1: 0xe0008cfc, 0x124a3: 0xe0003ee3,
+-	0x124a4: 0xe0005f17, 0x124a5: 0xe0004660, 0x124a7: 0xe0005661,
+-	0x124aa: 0xe00097a3,
+-	0x124ac: 0xe0004453, 0x124ae: 0xe0005c6f,
+-	0x124b1: 0xe0007bff, 0x124b2: 0xe0005b2f,
+-	0x124b4: 0xe0008ca0,
+-	0x124b8: 0xe00068af, 0x124b9: 0xe0006f00, 0x124bb: 0xe0009fca,
+-	0x124bc: 0xe0005f1b, 0x124be: 0xe0006ebc,
+-	// Block 0x493, offset 0x124c0
+-	0x124c1: 0xe0006baf,
+-	0x124c4: 0xe0005b6f, 0x124c7: 0xe0005cea,
+-	0x124c8: 0xe000975f, 0x124c9: 0xe0005dc9, 0x124ca: 0xe0005c4b, 0x124cb: 0xe0003e1b,
+-	0x124cc: 0xe0009eb8,
+-	0x124da: 0xe0006933, 0x124db: 0xe0005af4,
+-	0x124de: 0xe0008d00,
+-	0x124e0: 0xe0005b73,
+-	0x124e5: 0xe00081f0, 0x124e6: 0xe00081f3,
+-	0x124e8: 0xe00082cd, 0x124e9: 0xe0009e7c,
+-	0x124f4: 0xe0006f04, 0x124f7: 0xe00049e6,
+-	0x124f8: 0xe0005c1e, 0x124fa: 0xe00088e9, 0x124fb: 0xe0007488,
+-	0x124fc: 0xe0007232, 0x124fe: 0xe0008bac,
+-	// Block 0x494, offset 0x12500
+-	0x12500: 0xe0008e4a,
+-	0x12506: 0xe000a1c3, 0x12507: 0xe0008880,
+-	0x1250d: 0xe0009e80,
+-	0x12512: 0xe0006b4b,
+-	0x1251a: 0xe0007357, 0x1251b: 0xe0008788,
+-	0x1251f: 0xe0006e19,
+-	0x12520: 0xe00049f6, 0x12521: 0xe0006da1, 0x12522: 0xe0006e1c, 0x12523: 0xe000518c,
+-	0x12525: 0xe00065ba, 0x12526: 0xe0005c73,
+-	0x12528: 0xe00077ec, 0x1252b: 0xe00091fb,
+-	0x12537: 0xe00040ff,
+-	0x12539: 0xe0005112,
+-	0x1253d: 0xe0004aa3, 0x1253e: 0xe00043f9, 0x1253f: 0xe00077b6,
+-	// Block 0x495, offset 0x12540
+-	0x1254b: 0xe0008d04,
+-	0x1254d: 0xe0006e1f, 0x1254e: 0xe0009c7a,
+-	0x12551: 0xe0005bcb,
+-	0x12556: 0xe00077ef,
+-	0x12559: 0xe00059da,
+-	0x1255e: 0xe0005a12,
+-	0x12560: 0xe0005055, 0x12562: 0xe0005caf,
+-	0x12565: 0xe00061bf,
+-	0x1256a: 0xe0008dfc,
+-	0x1256c: 0xe0006ec0, 0x1256d: 0xe000576b,
+-	0x12570: 0xe0003ee7, 0x12573: 0xe000521c,
+-	0x12579: 0xe000735a, 0x1257b: 0xe00091af,
+-	0x1257c: 0xe000413b, 0x1257d: 0xe0004456, 0x1257f: 0xe0004865,
+-	// Block 0x496, offset 0x12580
+-	0x12587: 0xe0005cb3,
+-	0x12589: 0xe0006642,
+-	0x1258d: 0xe000a15b,
+-	0x12597: 0xe000933f,
+-	0x12599: 0xe0003f2b, 0x1259a: 0xe0009353, 0x1259b: 0xe0005c21,
+-	0x1259c: 0xe0004bf6, 0x1259e: 0xe0007ef9,
+-	0x125a1: 0xe000a15f, 0x125a2: 0xe0006fdc, 0x125a3: 0xe0007fdb,
+-	0x125a5: 0xe0008c46, 0x125a7: 0xe00070e8,
+-	0x125a9: 0xe0004868,
+-	0x125ad: 0xe0004f15, 0x125ae: 0xe0007a29, 0x125af: 0xe00047a8,
+-	0x125b0: 0xe0008c08, 0x125b3: 0xe00069db,
+-	0x125ba: 0xe00096ff, 0x125bb: 0xe0004529,
+-	0x125bc: 0xe0003fd7, 0x125bd: 0xe00069f3,
+-	// Block 0x497, offset 0x125c0
+-	0x125c2: 0xe00066fa,
+-	0x125cc: 0xe0009276, 0x125cf: 0xe000648f,
+-	0x125d1: 0xe00071ab, 0x125d2: 0xe0006545,
+-	0x125e2: 0xe0005333,
+-	0x125e5: 0xe0008c49, 0x125e6: 0xe0009000, 0x125e7: 0xe0009629,
+-	0x125ec: 0xe0005984, 0x125ed: 0xe00099bf,
+-	0x125f0: 0xe000995b, 0x125f2: 0xe0009a4a,
+-	0x125f4: 0xe00098a6,
+-	// Block 0x498, offset 0x12600
+-	0x12603: 0xe0008ad4,
+-	0x12605: 0xe0004a70,
+-	0x1260f: 0xe000761a,
+-	0x1261c: 0xe000405d, 0x1261d: 0xe00092af,
+-	0x12620: 0xe0005416,
+-	0x12627: 0xe0007b71,
+-	0x12628: 0xe0008e3f, 0x1262b: 0xe0005803,
+-	0x1262c: 0xe00042bc, 0x1262e: 0xe0009c0a, 0x1262f: 0xe000761e,
+-	0x1263c: 0xe00064eb,
+-	// Block 0x499, offset 0x12640
+-	0x12641: 0xe0004c7b,
+-	0x12647: 0xe000878c,
+-	0x1264c: 0xe00056a9, 0x1264d: 0xe0007327, 0x1264e: 0xe0006d35, 0x1264f: 0xe0008279,
+-	0x12651: 0xe0006548, 0x12653: 0xe00050b5,
+-	0x12657: 0xe00079b8,
+-	0x1265f: 0xe0006b13,
+-	0x12663: 0xe0003e7f,
+-	0x12664: 0xe0007786, 0x12667: 0xe0006157,
+-	0x12668: 0xe0007a4d, 0x12669: 0xe00069df,
+-	0x1266d: 0xe00097a7,
+-	0x1267a: 0xe000a14f, 0x1267b: 0xe000a153,
+-	0x1267c: 0xe00059a1, 0x1267e: 0xe0004e00,
+-	// Block 0x49a, offset 0x12680
+-	0x12681: 0xe00081bd,
+-	0x12685: 0xe0005fdf,
+-	0x12688: 0xe0007a50, 0x1268a: 0xe0005726, 0x1268b: 0xe0008e1b,
+-	0x1268e: 0xe000437e, 0x1268f: 0xe00055af,
+-	0x12690: 0xe0005f1f, 0x12691: 0xe000735d,
+-	0x12694: 0xe0009030, 0x12695: 0xe0004043,
+-	0x1269a: 0xe0008610,
+-	0x126a0: 0xe0004e81,
+-	0x126a7: 0xe0008508,
+-	0x126a8: 0xe00059a4, 0x126aa: 0xe00093cf,
+-	0x126ac: 0xe00042c0, 0x126af: 0xe0004c7e,
+-	0x126b4: 0xe00052fb, 0x126b5: 0xe0003e1f, 0x126b7: 0xe0005948,
+-	0x126ba: 0xe0004700, 0x126bb: 0xe0005f23,
+-	0x126bc: 0xe00082d1, 0x126bd: 0xe00047ed,
+-	// Block 0x49b, offset 0x126c0
+-	0x126c1: 0xe00092b2,
+-	0x126cc: 0xe0005738, 0x126ce: 0xe00092b5, 0x126cf: 0xe0004be2,
+-	0x126d1: 0xe0005059, 0x126d2: 0xe000800b,
+-	0x126d6: 0xe000757e,
+-	0x126d9: 0xe0007360,
+-	0x126e7: 0xe000573b,
+-	0x126ea: 0xe00054b6, 0x126eb: 0xe00054ff,
+-	0x126ec: 0xe0005f27, 0x126ed: 0xe000a163,
+-	0x126f1: 0xe000570d,
+-	0x126fa: 0xe0006fdf,
+-	0x126fe: 0xe00066fd,
+-	// Block 0x49c, offset 0x12700
+-	0x12700: 0xe0006700, 0x12701: 0xe0004c81,
+-	0x12705: 0xe0007acb, 0x12706: 0xe000911f, 0x12707: 0xe0004c84,
+-	0x12708: 0xe0004c87, 0x12709: 0xe0008c4c, 0x1270a: 0xe000995f,
+-	0x12710: 0xe0007bb4, 0x12713: 0xe00064c3,
+-	0x12714: 0xe00063e0, 0x12715: 0xe00065bd, 0x12716: 0xe00088ec, 0x12717: 0xe0008c4f,
+-	0x1271a: 0xe00088ef, 0x1271b: 0xe000408b,
+-	0x1271c: 0xe000a021, 0x1271d: 0xe0009479, 0x1271e: 0xe00070a4, 0x1271f: 0xe0006e22,
+-	0x12720: 0xe0006703, 0x12722: 0xe0004ec3,
+-	0x12725: 0xe00068b3, 0x12727: 0xe0008958,
+-	0x12728: 0xe0009abe,
+-	0x1272d: 0xe000884a,
+-	0x1273a: 0xe0004c8a,
+-	0x1273c: 0xe0004664, 0x1273f: 0xe00056ad,
+-	// Block 0x49d, offset 0x12740
+-	0x12740: 0xe0009aff, 0x12741: 0xe0004b8a,
+-	0x1274a: 0xe00043a5, 0x1274b: 0xe0008101,
+-	0x1274d: 0xe000a11a, 0x1274e: 0xe0008790, 0x1274f: 0xe0006298,
+-	0x12751: 0xe0007bb7,
+-	0x12754: 0xe0008883,
+-	0x1275d: 0xe0008cb4,
+-	0x12766: 0xe00074af, 0x12767: 0xe000a50d,
+-	0x12768: 0xe0004cf9, 0x1276a: 0xe0006a4b, 0x1276b: 0xe0004fdd,
+-	0x1276e: 0xe000563d,
+-	0x12770: 0xe0004ec6, 0x12771: 0xe0005115, 0x12773: 0xe0007454,
+-	0x12774: 0xe00073fc,
+-	0x12779: 0xe0007bba, 0x1277a: 0xe000794d, 0x1277b: 0xe0005900,
+-	0x1277d: 0xe0004b8e, 0x1277e: 0xe000a11d, 0x1277f: 0xe0005190,
+-	// Block 0x49e, offset 0x12780
+-	0x12780: 0xe0006da4, 0x12781: 0xe0006706,
+-	0x12786: 0xe0003e57,
+-	0x12789: 0xe0006203, 0x1278a: 0xe0004dfc, 0x1278b: 0xe00093f0,
+-	0x12791: 0xe00045b1, 0x12792: 0xe00092b8,
+-	0x12795: 0xe000654b,
+-	0x12798: 0xe000654e,
+-	0x1279f: 0xe00088f2,
+-	0x127a2: 0xe000561f, 0x127a3: 0xe0005a72,
+-	0x127a4: 0xe0009655, 0x127a6: 0xe0008d08, 0x127a7: 0xe00072f6,
+-	0x127a9: 0xe0008d88, 0x127aa: 0xe0008c85, 0x127ab: 0xe00094cd,
+-	0x127ac: 0xe00040a3,
+-	0x127b8: 0xe0003e9f, 0x127bb: 0xe000803b,
+-	// Block 0x49f, offset 0x127c0
+-	0x127c0: 0xe000a510, 0x127c1: 0xe0004459, 0x127c2: 0xe000541a,
+-	0x127c5: 0xe0006bdf,
+-	0x127c8: 0xe0003e23, 0x127ca: 0xe0008886, 0x127cb: 0xe0008794,
+-	0x127cc: 0xe0005160, 0x127cd: 0xe00092bb,
+-	0x127d4: 0xe0008151, 0x127d7: 0xe0009933,
+-	0x127d9: 0xe0008ca4, 0x127da: 0xe000958a,
+-	0x127dc: 0xe000588b, 0x127de: 0xe00045db, 0x127df: 0xe0009afb,
+-	0x127e0: 0xe00088f5,
+-	0x127e7: 0xe0006b17,
+-	0x127ee: 0xe00089e0,
+-	0x127f1: 0xe0009659,
+-	0x127f6: 0xe0007c35, 0x127f7: 0xe0008ca8,
+-	0x127f9: 0xe0008d50, 0x127fb: 0xe0005118,
+-	0x127fc: 0xe0003d51, 0x127fd: 0xe0004381, 0x127ff: 0xe00043fc,
+-	// Block 0x4a0, offset 0x12800
+-	0x12800: 0xe0004499,
+-	0x12805: 0xe0003fdb, 0x12806: 0xe0005c77,
+-	0x12809: 0xe000958d,
+-	0x1280d: 0xe00084c8, 0x1280e: 0xe0007752,
+-	0x12817: 0xe0006da7,
+-	0x12820: 0xe0004e64, 0x12821: 0xe000690b, 0x12822: 0xe00077b9,
+-	0x12829: 0xe00078d5, 0x1282b: 0xe000a157,
+-	0x12830: 0xe0007458,
+-	0x12834: 0xe0009ed8, 0x12835: 0xe0007272, 0x12836: 0xe000486b,
+-	0x12839: 0xe00049ae, 0x1283a: 0xe0004561,
+-	0x1283d: 0xe0008798, 0x1283e: 0xe0007ace, 0x1283f: 0xe00090db,
+-	// Block 0x4a1, offset 0x12840
+-	0x12840: 0xe00052bb, 0x12841: 0xe00051e0, 0x12842: 0xe000568b, 0x12843: 0xe000868c,
+-	0x12844: 0xe0008e4e, 0x12845: 0xe0007ad1, 0x12846: 0xe00099c3,
+-	0x12848: 0xe0007a89, 0x1284a: 0xe000798b,
+-	0x12852: 0xe0008d8c, 0x12853: 0xe0008f8e,
+-	0x12855: 0xe00088f8, 0x12856: 0xe00047f0, 0x12857: 0xe0008fce,
+-	0x12858: 0xe0004966, 0x1285b: 0xe00048fe,
+-	0x1285f: 0xe0004992,
+-	0x12860: 0xe00045de, 0x12863: 0xe0006cfb,
+-	0x12869: 0xe0007967, 0x1286a: 0xe000796a,
+-	0x1286c: 0xe0007e75, 0x1286e: 0xe00049b2, 0x1286f: 0xe0007a8c,
+-	0x12873: 0xe0007e78,
+-	0x12876: 0xe0004901,
+-	0x12879: 0xe000788e, 0x1287a: 0xe0004a73, 0x1287b: 0xe0008fd2,
+-	0x1287e: 0xe0004668, 0x1287f: 0xe0005863,
+-	// Block 0x4a2, offset 0x12880
+-	0x12884: 0xe0008e7e, 0x12885: 0xe0004a76, 0x12887: 0xe000527f,
+-	0x12888: 0xe000895b, 0x1288a: 0xe0008678, 0x1288b: 0xe0005988,
+-	0x12897: 0xe0005cde,
+-	0x12899: 0xe0008efe,
+-	0x1289d: 0xe0006207, 0x1289f: 0xe00042c4,
+-	0x128a0: 0xe000832d, 0x128a2: 0xe0006760, 0x128a3: 0xe0008b40,
+-	0x128a5: 0xe0005220, 0x128a6: 0xe0006d27,
+-	0x128aa: 0xe0006daa,
+-	0x128ad: 0xe0003e83, 0x128af: 0xe0004f19,
+-	0x128b6: 0xe00042c8,
+-	0x128b8: 0xe0004330, 0x128b9: 0xe0008b04, 0x128ba: 0xe000947d,
+-	0x128bd: 0xe0007c02, 0x128bf: 0xe0003e27,
+-	// Block 0x4a3, offset 0x128c0
+-	0x128c6: 0xe00098cd,
+-	0x128c8: 0xe0004be6, 0x128ca: 0xe000895e,
+-	0x128cc: 0xe00071ae, 0x128cf: 0xe000a0c4,
+-	0x128d1: 0xe0006c39, 0x128d2: 0xe0004bb2,
+-	0x128d8: 0xe00086c0, 0x128d9: 0xe000692f, 0x128db: 0xe00084cc,
+-	0x128de: 0xe00097c7,
+-	0x128e0: 0xe000598c,
+-	0x128e5: 0xe0006763, 0x128e6: 0xe0006383, 0x128e7: 0xe0009034,
+-	0x128e8: 0xe0006493,
+-	0x128ec: 0xe000884d, 0x128ed: 0xe00055db, 0x128ef: 0xe0004e4a,
+-	0x128f3: 0xe0003d90,
+-	0x128f5: 0xe0006127,
+-	0x128f9: 0xe0006be2,
+-	// Block 0x4a4, offset 0x12900
+-	0x12905: 0xe0006aab, 0x12906: 0xe0009b60,
+-	0x12908: 0xe00046a8, 0x12909: 0xe00052db, 0x1290b: 0xe0004b2e,
+-	0x1290c: 0xe0008584, 0x1290d: 0xe0006ec4, 0x1290f: 0xe00060ef,
+-	0x12910: 0xe00046e0, 0x12911: 0xe0009481, 0x12912: 0xe0009829, 0x12913: 0xe00043a8,
+-	0x12914: 0xe0004ffd, 0x12916: 0xe0009020,
+-	0x1291f: 0xe00063e3,
+-	0x12920: 0xe0004aca,
+-	0x12925: 0xe00040a6, 0x12926: 0xe000466c, 0x12927: 0xe00041d8,
+-	0x12929: 0xe000983d,
+-	0x1292c: 0xe0006bb3, 0x1292e: 0xe000696e,
+-	0x12931: 0xe0006c84, 0x12933: 0xe0008810,
+-	0x12935: 0xe0007622,
+-	0x1293d: 0xe000785b,
+-	// Block 0x4a5, offset 0x12940
+-	0x12947: 0xe0004025,
+-	0x1294b: 0xe0008588,
+-	0x1294d: 0xe000445c, 0x1294e: 0xe000a075, 0x1294f: 0xe00083fe,
+-	0x12952: 0xe000943e,
+-	0x12954: 0xe0005ea3, 0x12955: 0xe0004c8d, 0x12957: 0xe00067b3,
+-	0x12959: 0xe00062d0, 0x1295a: 0xe0008e1e,
+-	0x1295c: 0xe0004585, 0x1295d: 0xe000421c,
+-	0x12960: 0xe0009441, 0x12961: 0xe0004638,
+-	0x1296d: 0xe000858c,
+-	0x12971: 0xe00068b7,
+-	0x12974: 0xe00082a9,
+-	0x12978: 0xe0008447,
+-	0x1297e: 0xe0006c87,
+-	// Block 0x4a6, offset 0x12980
+-	0x12980: 0xe000867c, 0x12981: 0xe000a23b,
+-	0x12984: 0xe000611f, 0x12986: 0xe0008590, 0x12987: 0xe000997f,
+-	0x12989: 0xe0009485, 0x1298a: 0xe000a0fc, 0x1298b: 0xe0009f38,
+-	0x1298c: 0xe000a366,
+-	0x12992: 0xe0007054,
+-	0x12994: 0xe0007c7d,
+-	0x12999: 0xe000445f, 0x1299b: 0xe0007400,
+-	0x1299d: 0xe0004904,
+-	0x129a0: 0xe0006c3c,
+-	0x129a4: 0xe0005194, 0x129a6: 0xe00065c0,
+-	0x129a9: 0xe0006709, 0x129aa: 0xe0008c88,
+-	0x129b3: 0xe0009b78,
+-	0x129b7: 0xe0006334,
+-	0x129be: 0xe0005ba3,
+-	// Block 0x4a7, offset 0x129c0
+-	0x129c0: 0xe0009038,
+-	0x129c7: 0xe0008998,
+-	0x129c9: 0xe0009444, 0x129cb: 0xe0004a40,
+-	0x129cf: 0xe00056d5,
+-	0x129d2: 0xe0008e82,
+-	0x129de: 0xe0004f1d, 0x129df: 0xe00086c4,
+-	0x129e0: 0xe000626d, 0x129e1: 0xe0003e2b,
+-	0x129e7: 0xe000a23f,
+-	0x129ea: 0xe00082ad, 0x129eb: 0xe0006c3f,
+-	0x129f7: 0xe00091db,
+-	0x129f8: 0xe00098d0,
+-	0x129fd: 0xe00091b3, 0x129fe: 0xe00055a3, 0x129ff: 0xe0006386,
+-	// Block 0x4a8, offset 0x12a00
+-	0x12a03: 0xe00053c6,
+-	0x12a0c: 0xe0008a92, 0x12a0d: 0xe00084d0,
+-	0x12a10: 0xe00052ff, 0x12a12: 0xe0008ad7,
+-	0x12a14: 0xe0006e25,
+-	0x12a1b: 0xe0008614,
+-	0x12a1c: 0xe0009703, 0x12a1f: 0xe000573e,
+-	0x12a20: 0xe00056f9,
+-	0x12a24: 0xe00091b7, 0x12a25: 0xe0007404, 0x12a27: 0xe00040a9,
+-	0x12a29: 0xe000619f,
+-	0x12a2c: 0xe00058d0,
+-	0x12a32: 0xe0007e7b, 0x12a33: 0xe0005dcc,
+-	0x12a3e: 0xe0008105,
+-	// Block 0x4a9, offset 0x12a40
+-	0x12a41: 0xe0009123, 0x12a43: 0xe0006551,
+-	0x12a49: 0xe000644b,
+-	0x12a4d: 0xe0005c4e,
+-	0x12a52: 0xe0005990,
+-	0x12a55: 0xe0005ea7, 0x12a57: 0xe00088fb,
+-	0x12a58: 0xe00086a4,
+-	0x12a5f: 0xe0006cbb,
+-	0x12a62: 0xe00081f6,
+-	0x12a64: 0xe0007d51, 0x12a65: 0xe0008b08, 0x12a66: 0xe000594c, 0x12a67: 0xe0008331,
+-	0x12a68: 0xe00060af,
+-	0x12a6e: 0xe0005464,
+-	0x12a71: 0xe0005468, 0x12a72: 0xe0008e8a, 0x12a73: 0xe0004055,
+-	0x12a79: 0xe0006dad,
+-	0x12a7c: 0xe0005950, 0x12a7d: 0xe0008a20, 0x12a7e: 0xe000879c,
+-	// Block 0x4aa, offset 0x12a80
+-	0x12a85: 0xe0007e7e, 0x12a86: 0xe0005b8f,
+-	0x12a8a: 0xe000a024,
+-	0x12a95: 0xe0004462, 0x12a96: 0xe0005029, 0x12a97: 0xe0004907,
+-	0x12a99: 0xe0008961, 0x12a9a: 0xe0008391,
+-	0x12a9c: 0xe0005dfc, 0x12a9d: 0xe0006823, 0x12a9e: 0xe000644f, 0x12a9f: 0xe00088fe,
+-	0x12aa0: 0xe0003f87, 0x12aa2: 0xe0005c51,
+-	0x12aa5: 0xe0004d71, 0x12aa7: 0xe000546c,
+-	0x12aaf: 0xe0004d74,
+-	0x12ab2: 0xe00054dd,
+-	0x12ab4: 0xe000850c, 0x12ab6: 0xe0008964,
+-	0x12ab8: 0xe0005b57, 0x12aba: 0xe0004aa6, 0x12abb: 0xe0004384,
+-	0x12abe: 0xe0004a79,
+-	// Block 0x4ab, offset 0x12ac0
+-	0x12ac0: 0xe0004c90, 0x12ac2: 0xe0008a95, 0x12ac3: 0xe0006f08,
+-	0x12ac4: 0xe00073e0, 0x12ac5: 0xe000a0e4, 0x12ac6: 0xe0007bbd, 0x12ac7: 0xe000a48a,
+-	0x12ac8: 0xe000a19f, 0x12aca: 0xe0005d68, 0x12acb: 0xe0005d6c,
+-	0x12acd: 0xe0004dbb,
+-	0x12ad0: 0xe0004ea3, 0x12ad3: 0xe00069a7,
+-	0x12ad4: 0xe0006ec8, 0x12ad5: 0xe00065c3, 0x12ad7: 0xe000670c,
+-	0x12ad8: 0xe0004765, 0x12ad9: 0xe0008c52, 0x12ada: 0xe0004bce, 0x12adb: 0xe0006453,
+-	0x12adc: 0xe0007c81,
+-	0x12ae0: 0xe0006c42, 0x12ae1: 0xe0005fe3, 0x12ae2: 0xe000690f,
+-	0x12aeb: 0xe00081c0,
+-	0x12aec: 0xe0008a98, 0x12aee: 0xe0008ed6, 0x12aef: 0xe00057bb,
+-	0x12af0: 0xe0006be5, 0x12af1: 0xe00064c7, 0x12af2: 0xe0006b1b, 0x12af3: 0xe00070a8,
+-	0x12af5: 0xe000844a,
+-	0x12af9: 0xe0006c45, 0x12afa: 0xe0003eeb,
+-	// Block 0x4ac, offset 0x12b00
+-	0x12b02: 0xe00089e4, 0x12b03: 0xe0009e84,
+-	0x12b04: 0xe0008901, 0x12b05: 0xe00042cc, 0x12b06: 0xe0005f2b,
+-	0x12b09: 0xe0006f2c,
+-	0x12b0d: 0xe000815d,
+-	0x12b10: 0xe00041fc,
+-	0x12b16: 0xe0004704,
+-	0x12b19: 0xe000a1c7, 0x12b1b: 0xe000896a,
+-	0x12b1c: 0xe0009ee4, 0x12b1e: 0xe00047ab,
+-	0x12b21: 0xe000534e, 0x12b22: 0xe0009e88, 0x12b23: 0xe000621f,
+-	0x12b26: 0xe0004bd2,
+-	0x12b28: 0xe0007f05, 0x12b29: 0xe0008967, 0x12b2a: 0xe00080cd,
+-	0x12b2e: 0xe0006971,
+-	0x12b30: 0xe0008da8, 0x12b31: 0xe000982d, 0x12b32: 0xe000670f, 0x12b33: 0xe0003f8b,
+-	0x12b36: 0xe0008680,
+-	0x12b39: 0xe00041b0, 0x12b3a: 0xe00095bd,
+-	0x12b3f: 0xe000486e,
+-	// Block 0x4ad, offset 0x12b40
+-	0x12b43: 0xe0009306,
+-	0x12b46: 0xe0004334,
+-	0x12b4e: 0xe00087a0, 0x12b4f: 0xe0006db0,
+-	0x12b53: 0xe00042d0,
+-	0x12b58: 0xe0006338,
+-	0x12b5c: 0xe00089e8,
+-	0x12b60: 0xe00056b1, 0x12b62: 0xe0008a9b, 0x12b63: 0xe00049fa,
+-	0x12b65: 0xe0004cfc, 0x12b66: 0xe0004cff, 0x12b67: 0xe0008b70,
+-	0x12b69: 0xe0007d1d, 0x12b6b: 0xe0006aaf,
+-	0x12b6c: 0xe0006db3, 0x12b6d: 0xe0007e27, 0x12b6e: 0xe00043ab,
+-	0x12b70: 0xe0004670, 0x12b71: 0xe0003f8f, 0x12b72: 0xe0005a8a,
+-	0x12b74: 0xe0009163, 0x12b75: 0xe0009003,
+-	0x12b78: 0xe000583b, 0x12b7a: 0xe0004c93, 0x12b7b: 0xe0009733,
+-	0x12b7d: 0xe0008249, 0x12b7e: 0xe000588f, 0x12b7f: 0xe0005b77,
+-	// Block 0x4ae, offset 0x12b80
+-	0x12b84: 0xe00044f1, 0x12b87: 0xe0009590,
+-	0x12b8a: 0xe0004d32, 0x12b8b: 0xe0006554,
+-	0x12b8c: 0xe0007e81, 0x12b8d: 0xe0005e4f,
+-	0x12b96: 0xe0006974, 0x12b97: 0xe00068eb,
+-	0x12b98: 0xe0009c9a, 0x12b9a: 0xe0006a4f,
+-	0x12b9c: 0xe0005b93, 0x12b9d: 0xe0008dcc, 0x12b9e: 0xe0004f21,
+-	0x12ba0: 0xe000925b, 0x12ba1: 0xe0005e37, 0x12ba3: 0xe0007626,
+-	0x12ba6: 0xe0007018,
+-	0x12ba8: 0xe0009983, 0x12ba9: 0xe00079bc,
+-	0x12bac: 0xe0005b7b, 0x12baf: 0xe0007d7c,
+-	0x12bb4: 0xe000553b, 0x12bb6: 0xe00099a3,
+-	0x12bb9: 0xe0008889, 0x12bbb: 0xe0009593,
+-	// Block 0x4af, offset 0x12bc0
+-	0x12bc8: 0xe000778a, 0x12bc9: 0xe0008d0c, 0x12bca: 0xe000737f, 0x12bcb: 0xe0009447,
+-	0x12bd0: 0xe000944a, 0x12bd1: 0xe0004240,
+-	0x12bd5: 0xe00078d9, 0x12bd7: 0xe00093d2,
+-	0x12bd8: 0xe00043ae, 0x12bdb: 0xe0005eab,
+-	0x12bdd: 0xe0008d10, 0x12bde: 0xe000a027, 0x12bdf: 0xe0007ae9,
+-	0x12be0: 0xe00044ad, 0x12be1: 0xe00083d6, 0x12be2: 0xe0005303, 0x12be3: 0xe0009e8c,
+-	0x12beb: 0xe0006314,
+-	0x12bee: 0xe0009489, 0x12bef: 0xe000762a,
+-	0x12bf1: 0xe00089ec, 0x12bf2: 0xe000580f, 0x12bf3: 0xe00041dc,
+-	0x12bf5: 0xe0005a3a, 0x12bf7: 0xe00057be,
+-	0x12bf9: 0xe0009ae5, 0x12bfb: 0xe0005dff,
+-	0x12bfd: 0xe000938f, 0x12bfe: 0xe00084d4,
+-	// Block 0x4b0, offset 0x12c00
+-	0x12c01: 0xe00060c7, 0x12c03: 0xe00064ef,
+-	0x12c04: 0xe00077f2, 0x12c05: 0xe0006c8a, 0x12c06: 0xe0005d1d, 0x12c07: 0xe0007a8f,
+-	0x12c08: 0xe0003fdf,
+-	0x12c10: 0xe0006bf1, 0x12c12: 0xe0008bf4,
+-	0x12c14: 0xe0008cac, 0x12c15: 0xe0006a53, 0x12c16: 0xe00067df, 0x12c17: 0xe0005954,
+-	0x12c19: 0xe00060d7, 0x12c1a: 0xe000578c,
+-	0x12c1e: 0xe0007a92,
+-	0x12c21: 0xe0006db6, 0x12c22: 0xe0004a43,
+-	0x12c29: 0xe0006f95, 0x12c2a: 0xe000a29d, 0x12c2b: 0xe0004387,
+-	0x12c2d: 0xe00041b4, 0x12c2f: 0xe0009ebc,
+-	0x12c30: 0xe0008904,
+-	0x12c36: 0xe00074de,
+-	0x12c39: 0xe00075aa,
+-	0x12c3c: 0xe000438a, 0x12c3d: 0xe0006646, 0x12c3e: 0xe00041e0,
+-	// Block 0x4b1, offset 0x12c40
+-	0x12c41: 0xe000a3a9, 0x12c42: 0xe0008e86,
+-	0x12c47: 0xe0005741,
+-	0x12c48: 0xe000a53f, 0x12c4a: 0xe0004708,
+-	0x12c4c: 0xe0006cbf, 0x12c4d: 0xe0005812, 0x12c4f: 0xe0008594,
+-	0x12c53: 0xe0007756,
+-	0x12c54: 0xe00083f7, 0x12c56: 0xe0006b2b,
+-	0x12c58: 0xe0008e8e, 0x12c5b: 0xe0005198,
+-	0x12c5c: 0xe00053ca,
+-	// Block 0x4b2, offset 0x12c80
+-	0x12cb6: 0xe0006389, 0x12cb7: 0xe0006766,
+-	0x12cb8: 0xe0009d26, 0x12cba: 0xe0004200,
+-	0x12cbe: 0xe0006223, 0x12cbf: 0xe0009d42,
+-	// Block 0x4b3, offset 0x12cc0
+-	0x12cc3: 0xe00073b3,
+-	0x12cc4: 0xe000433c, 0x12cc5: 0xe0009be4, 0x12cc7: 0xe0008b74,
+-	0x12ccb: 0xe0007951,
+-	0x12ccc: 0xe000739f, 0x12ccd: 0xe0005744, 0x12cce: 0xe0004fe1,
+-	0x12cd0: 0xe000463c,
+-	0x12cd4: 0xe0005a8e, 0x12cd5: 0xe0009c36,
+-	0x12cd8: 0xe00063e6,
+-	0x12cdd: 0xe0008486, 0x12cdf: 0xe0004465,
+-	0x12ce0: 0xe0005e53, 0x12ce1: 0xe0003fe3, 0x12ce3: 0xe0004727,
+-	0x12ce6: 0xe00063e9,
+-	0x12ce8: 0xe0007546, 0x12cea: 0xe0008a47, 0x12ceb: 0xe000471e,
+-	0x12cee: 0xe0009596,
+-	0x12cf0: 0xe00060f3, 0x12cf2: 0xe0006977,
+-	0x12cf5: 0xe0005ad9, 0x12cf7: 0xe00098a9,
+-	0x12cf8: 0xe00060ff, 0x12cf9: 0xe00058d3,
+-	0x12cfc: 0xe0009b7c, 0x12cfd: 0xe00043b1, 0x12cfe: 0xe0008c0c,
+-	// Block 0x4b4, offset 0x12d00
+-	0x12d02: 0xe00041e4,
+-	0x12d05: 0xe0005318, 0x12d06: 0xe00065c6, 0x12d07: 0xe0004d02,
+-	0x12d08: 0xe0004c96, 0x12d0a: 0xe000745c,
+-	0x12d0c: 0xe0003f93, 0x12d0e: 0xe0005dcf,
+-	0x12d14: 0xe00043ff, 0x12d16: 0xe0004468, 0x12d17: 0xe0003fe7,
+-	0x12d18: 0xe0008395, 0x12d1a: 0xe00055df,
+-	0x12d1d: 0xe0008489, 0x12d1e: 0xe0006db9,
+-	0x12d24: 0xe000496a,
+-	0x12d28: 0xe0006a57, 0x12d29: 0xe0007fde, 0x12d2b: 0xe0003feb,
+-	0x12d2f: 0xe0003ea3,
+-	0x12d32: 0xe000a513,
+-	0x12d36: 0xe0008618,
+-	0x12d38: 0xe00058d6, 0x12d39: 0xe0004059,
+-	0x12d3d: 0xe0007bc0,
+-	// Block 0x4b5, offset 0x12d40
+-	0x12d41: 0xe000792d,
+-	0x12d45: 0xe0006fe2,
+-	0x12d4a: 0xe0008085,
+-	0x12d4c: 0xe0008089, 0x12d4e: 0xe00055e3,
+-	0x12d52: 0xe0006f61,
+-	0x12d54: 0xe00068bb, 0x12d55: 0xe000a4c2, 0x12d56: 0xe000a4d2,
+-	0x12d5b: 0xe0006c8d,
+-	0x12d5f: 0xe00084d8,
+-	0x12d60: 0xe0009522, 0x12d61: 0xe0006557, 0x12d63: 0xe000684b,
+-	0x12d64: 0xe000701b, 0x12d66: 0xe000861c,
+-	0x12d69: 0xe0009987, 0x12d6b: 0xe00079c0,
+-	0x12d6c: 0xe000a409, 0x12d6e: 0xe0009da9,
+-	0x12d70: 0xe0009c3a, 0x12d73: 0xe00077f5,
+-	0x12d79: 0xe00047ae, 0x12d7a: 0xe000446b, 0x12d7b: 0xe00060db,
+-	0x12d7c: 0xe000808d, 0x12d7e: 0xe0009ec0,
+-	// Block 0x4b6, offset 0x12d80
+-	0x12d80: 0xe0007a95, 0x12d81: 0xe0005664, 0x12d83: 0xe0004402,
+-	0x12d84: 0xe0005c54, 0x12d85: 0xe00081c3, 0x12d86: 0xe0004c99,
+-	0x12d89: 0xe0004871,
+-	0x12d8c: 0xe000803e,
+-	0x12d90: 0xe0004ddb, 0x12d91: 0xe0004f49, 0x12d92: 0xe0005747,
+-	0x12d94: 0xe00081f9, 0x12d95: 0xe00042d4, 0x12d96: 0xe0009309, 0x12d97: 0xe0005c24,
+-	0x12d98: 0xe0007c59, 0x12d99: 0xe00098d3,
+-	0x12d9e: 0xe0003d93,
+-	0x12da1: 0xe00069aa,
+-	0x12da6: 0xe0007c05,
+-	0x12da8: 0xe0004e8d,
+-	0x12dac: 0xe00057d9, 0x12dad: 0xe0004c9c,
+-	0x12db0: 0xe0007c08, 0x12db3: 0xe0008041,
+-	0x12db6: 0xe00073d3,
+-	0x12dbd: 0xe0009763, 0x12dbf: 0xe00042d8,
+-	// Block 0x4b7, offset 0x12dc0
+-	0x12dc3: 0xe0004fa9,
+-	0x12dc6: 0xe00055e7,
+-	0x12dca: 0xe000576e,
+-	0x12dd2: 0xe00046ac,
+-	0x12dd5: 0xe000a078, 0x12dd6: 0xe0006bb7,
+-	0x12dd8: 0xe0006676, 0x12dda: 0xe0009525,
+-	0x12dde: 0xe0005d70,
+-	0x12def: 0xe000553f,
+-	0x12df0: 0xe0009393, 0x12df1: 0xe0007891, 0x12df2: 0xe0006bbb, 0x12df3: 0xe0007b41,
+-	0x12df5: 0xe0007a53, 0x12df6: 0xe0006b73, 0x12df7: 0xe0008cb0,
+-	0x12dfd: 0xe000922b, 0x12dfe: 0xe00056fd, 0x12dff: 0xe0007ef1,
+-	// Block 0x4b8, offset 0x12e00
+-	0x12e04: 0xe0008044, 0x12e05: 0xe0006e68, 0x12e06: 0xe0006712, 0x12e07: 0xe0008907,
+-	0x12e09: 0xe0007eb9, 0x12e0b: 0xe000586b,
+-	0x12e0c: 0xe0004c9f,
+-	0x12e13: 0xe000a267,
+-	0x12e16: 0xe00092be,
+-	0x12e18: 0xe0008ada, 0x12e1a: 0xe0005294, 0x12e1b: 0xe0009d2a,
+-	0x12e1d: 0xe0003e2f,
+-	0x12e21: 0xe0004405, 0x12e22: 0xe0008c55,
+-	0x12e25: 0xe000655a, 0x12e26: 0xe0006497,
+-	0x12e29: 0xe00041b8, 0x12e2a: 0xe0005fe7, 0x12e2b: 0xe0006f0c,
+-	0x12e2d: 0xe0004e9c, 0x12e2f: 0xe0004bfa,
+-	0x12e31: 0xe0004769, 0x12e32: 0xe0007ebd,
+-	0x12e34: 0xe000a30c, 0x12e35: 0xe0004d05,
+-	0x12e3a: 0xe0009a05,
+-	// Block 0x4b9, offset 0x12e40
+-	0x12e43: 0xe0007d7f,
+-	0x12e44: 0xe0008a59, 0x12e46: 0xe0004f4d,
+-	0x12e4a: 0xe000490a,
+-	0x12e4c: 0xe0006065, 0x12e4e: 0xe00097ca,
+-	0x12e55: 0xe00063ec, 0x12e56: 0xe0005f57,
+-	0x12e59: 0xe000896d, 0x12e5a: 0xe0006068, 0x12e5b: 0xe0003f47,
+-	0x12e5e: 0xe0009a4d,
+-	0x12e60: 0xe00040ac, 0x12e61: 0xe000a02a,
+-	0x12e64: 0xe0007ed9, 0x12e65: 0xe000697a,
+-	0x12e6f: 0xe000446e,
+-	0x12e71: 0xe00046e4,
+-	0x12e74: 0xe0005224, 0x12e77: 0xe000a452,
+-	0x12e78: 0xe000a44a,
+-	0x12e7d: 0xe0004eb0, 0x12e7e: 0xe00081fc,
+-	// Block 0x4ba, offset 0x12e80
+-	0x12e82: 0xe0008c58,
+-	0x12e85: 0xe0009f0c, 0x12e86: 0xe0009528, 0x12e87: 0xe0009f10,
+-	0x12e88: 0xe0005b03, 0x12e89: 0xe0005b17, 0x12e8a: 0xe0009083,
+-	0x12e96: 0xe0005f97,
+-	0x12e98: 0xe00079c4, 0x12e9a: 0xe0003dbb, 0x12e9b: 0xe00042dc,
+-	0x12ea3: 0xe0006ecc,
+-	0x12ea4: 0xe00070ec, 0x12ea7: 0xe00093d5,
+-	0x12ea9: 0xe0006dbc, 0x12eab: 0xe0009753,
+-	0x12eaf: 0xe0009a50,
+-	0x12eb0: 0xe0005297,
+-	0x12eb9: 0xe0008f92, 0x12eba: 0xe0006e28,
+-	0x12ebe: 0xe000655d,
+-	// Block 0x4bb, offset 0x12ec0
+-	0x12ec1: 0xe00061a7,
+-	0x12ec6: 0xe0008620,
+-	0x12eca: 0xe00069f7, 0x12ecb: 0xe0007383,
+-	0x12ece: 0xe00070ac,
+-	0x12ed0: 0xe000638c, 0x12ed1: 0xe000638f, 0x12ed2: 0xe00040af, 0x12ed3: 0xe00065c9,
+-	0x12ed4: 0xe0003f97, 0x12ed5: 0xe00079c8,
+-	0x12ee0: 0xe0008add,
+-	0x12ee4: 0xe00072b6, 0x12ee5: 0xe0006bbf, 0x12ee6: 0xe0004e6f,
+-	0x12eeb: 0xe00089f0,
+-	0x12eed: 0xe0007206,
+-	0x12ef0: 0xe0007a98, 0x12ef1: 0xe00040e3,
+-	0x12ef4: 0xe0007e84, 0x12ef6: 0xe0004f51, 0x12ef7: 0xe0009b40,
+-	0x12ef8: 0xe0008335, 0x12ef9: 0xe000629c, 0x12efa: 0xe0006a5b,
+-	0x12eff: 0xe0009847,
+-	// Block 0x4bc, offset 0x12f00
+-	0x12f00: 0xe0005feb, 0x12f02: 0xe00054e0, 0x12f03: 0xe0007915,
+-	0x12f04: 0xe0006e2b, 0x12f06: 0xe0006c90,
+-	0x12f08: 0xe000417c, 0x12f0a: 0xe0005eaf, 0x12f0b: 0xe000578f,
+-	0x12f0f: 0xe0004408,
+-	0x12f1a: 0xe0006392,
+-	0x12f1c: 0xe00059ce, 0x12f1d: 0xe0006f4d, 0x12f1e: 0xe0008624,
+-	0x12f20: 0xe00047b1, 0x12f23: 0xe0008d90,
+-	0x12f28: 0xe0009957, 0x12f29: 0xe0004ec9,
+-	0x12f30: 0xe00060df, 0x12f33: 0xe0006a5f,
+-	0x12f34: 0xe0005d3e, 0x12f35: 0xe00094f8,
+-	0x12f38: 0xe0006e2e, 0x12f39: 0xe000649b, 0x12f3a: 0xe0007fb5,
+-	0x12f3d: 0xe0004fad, 0x12f3e: 0xe000a2a0, 0x12f3f: 0xe0004e54,
+-	// Block 0x4bd, offset 0x12f40
+-	0x12f40: 0xe00052a7, 0x12f42: 0xe0006560,
+-	0x12f46: 0xe00074da,
+-	0x12f4a: 0xe0008970,
+-	0x12f4d: 0xe0008850, 0x12f4f: 0xe000664a,
+-	0x12f51: 0xe0004e4d,
+-	0x12f58: 0xe00053e6, 0x12f59: 0xe0007662, 0x12f5a: 0xe00054e3,
+-	0x12f5d: 0xe0005336, 0x12f5f: 0xe0008339,
+-	0x12f60: 0xe000555f, 0x12f63: 0xe00070b0,
+-	0x12f65: 0xe000796d, 0x12f67: 0xe000833d,
+-	0x12f68: 0xe0005978, 0x12f6a: 0xe00081c6,
+-	0x12f6c: 0xe000751e, 0x12f6d: 0xe000952b,
+-	0x12f73: 0xe0008c5b,
+-	0x12f74: 0xe0009599, 0x12f76: 0xe0009127,
+-	0x12f7a: 0xe000509a, 0x12f7b: 0xe0008d14,
+-	0x12f7c: 0xe0004874, 0x12f7e: 0xe0007e2a,
+-	// Block 0x4be, offset 0x12f80
+-	0x12f81: 0xe0007593, 0x12f82: 0xe0007b75, 0x12f83: 0xe00069fb,
+-	0x12f85: 0xe0004877, 0x12f87: 0xe0007581,
+-	0x12f88: 0xe000a4d6, 0x12f8a: 0xe000487a,
+-	0x12f8c: 0xe0006ae3, 0x12f8d: 0xe0006715,
+-	0x12f90: 0xe0008c8b, 0x12f92: 0xe000697d,
+-	0x12f96: 0xe0009a80,
+-	0x12f9b: 0xe00090df,
+-	0x12f9c: 0xe0006ed0, 0x12f9e: 0xe0005d20, 0x12f9f: 0xe0008a9e,
+-	0x12fa1: 0xe0003f9b,
+-	0x12faa: 0xe0009d2e, 0x12fab: 0xe0005fef,
+-	0x12fac: 0xe0005f2f,
+-	0x12fb3: 0xe00094a5,
+-	0x12fb5: 0xe0009684, 0x12fb6: 0xe0005eb3, 0x12fb7: 0xe0009e90,
+-	0x12fb8: 0xe0003d96, 0x12fb9: 0xe0006a63,
+-	0x12fbd: 0xe0006033,
+-	// Block 0x4bf, offset 0x12fc0
+-	0x12fc0: 0xe0006395,
+-	0x12fc5: 0xe0007584, 0x12fc7: 0xe00087a4,
+-	0x12fd1: 0xe00099a7,
+-	0x12fd8: 0xe0006c93, 0x12fd9: 0xe0008f96, 0x12fda: 0xe0008973,
+-	0x12fdf: 0xe0005254,
+-	0x12fe4: 0xe0007fe1, 0x12fe6: 0xe0009c9e,
+-	0x12fe8: 0xe0005cb7, 0x12fea: 0xe000568e, 0x12feb: 0xe0005691,
+-	0x12fee: 0xe0003e33, 0x12fef: 0xe0005470,
+-	0x12ff1: 0xe0003e37, 0x12ff2: 0xe0006913,
+-	0x12ff4: 0xe00064cb, 0x12ff6: 0xe00076a2,
+-	0x12ff8: 0xe00092c1,
+-	0x12ffe: 0xe000732a,
+-	// Block 0x4c0, offset 0x13000
+-	0x1300a: 0xe000912b, 0x1300b: 0xe0007bc3,
+-	0x1300d: 0xe000824d, 0x1300e: 0xe00049b6,
+-	0x13012: 0xe0005a92,
+-	0x13014: 0xe000a3e5,
+-	0x13018: 0xe00065cc, 0x13019: 0xe0006398, 0x1301a: 0xe00052ab,
+-	0x1301d: 0xe0008c5e, 0x1301f: 0xe0006817,
+-	0x13021: 0xe000414b, 0x13022: 0xe0008109, 0x13023: 0xe00063ef,
+-	0x13025: 0xe0004028, 0x13026: 0xe000a02d, 0x13027: 0xe00069ad,
+-	0x13028: 0xe0004bea, 0x13029: 0xe0004b92, 0x1302a: 0xe0004d08, 0x1302b: 0xe0007d21,
+-	0x1302c: 0xe0006457, 0x1302d: 0xe00098ac, 0x1302e: 0xe00077bc, 0x1302f: 0xe0007130,
+-	0x13030: 0xe0004d0b, 0x13031: 0xe000a120, 0x13033: 0xe0005ff3,
+-	0x13037: 0xe0008c61,
+-	0x13038: 0xe0007c5d, 0x13039: 0xe0004b32, 0x1303b: 0xe00093f3,
+-	0x1303c: 0xe0005c27, 0x1303d: 0xe000717b, 0x1303e: 0xe00065cf, 0x1303f: 0xe0008185,
+-	// Block 0x4c1, offset 0x13040
+-	0x13045: 0xe00077f8,
+-	0x13051: 0xe0007ced, 0x13052: 0xe00076a6, 0x13053: 0xe0005623,
+-	0x13054: 0xe00097cd, 0x13055: 0xe00092c4, 0x13057: 0xe0005ce1,
+-	0x1305b: 0xe0003d54,
+-	0x1305c: 0xe0005c83, 0x1305e: 0xe0009a53, 0x1305f: 0xe000487d,
+-	0x13060: 0xe0005e57, 0x13061: 0xe0008047, 0x13063: 0xe00040b2,
+-	0x13065: 0xe00073e4, 0x13066: 0xe000440b, 0x13067: 0xe000844d,
+-	0x1306b: 0xe00086c8,
+-	0x13071: 0xe000775a, 0x13073: 0xe0005258,
+-	0x13074: 0xe000848c,
+-	0x13079: 0xe00099e7, 0x1307a: 0xe0005af7, 0x1307b: 0xe00063f2,
+-	0x1307d: 0xe000440e, 0x1307e: 0xe0009b64, 0x1307f: 0xe0005e02,
+-	// Block 0x4c2, offset 0x13080
+-	0x13080: 0xe00064cf, 0x13081: 0xe0008b94, 0x13082: 0xe0005d23, 0x13083: 0xe0006123,
+-	0x13084: 0xe0003d57, 0x13085: 0xe0005c2a,
+-	0x13088: 0xe00081ff, 0x13089: 0xe0005a62,
+-	0x13097: 0xe0005bcf,
+-	0x1309b: 0xe0003e5b,
+-	0x1309c: 0xe000912f, 0x1309d: 0xe0009015,
+-	0x130a3: 0xe0007894,
+-	0x130a8: 0xe00081c9, 0x130aa: 0xe000470c, 0x130ab: 0xe0005a96,
+-	0x130af: 0xe00062a0,
+-	0x130b1: 0xe0006dbf, 0x130b2: 0xe0008202, 0x130b3: 0xe0003fef,
+-	0x130b4: 0xe000a2a3, 0x130b5: 0xe00080d1, 0x130b6: 0xe0004edf,
+-	0x130b8: 0xe0007b45, 0x130b9: 0xe0007587,
+-	0x130bc: 0xe000525c,
+-	// Block 0x4c3, offset 0x130c0
+-	0x130c0: 0xe0006ed4, 0x130c3: 0xe0008628,
+-	0x130c7: 0xe0009dbd,
+-	0x130c9: 0xe00092c7, 0x130ca: 0xe0009f70,
+-	0x130cf: 0xe0008155,
+-	0x130d0: 0xe0009133, 0x130d1: 0xe000804a, 0x130d2: 0xe000a243,
+-	0x130f3: 0xe0005282,
+-	0x130f7: 0xe0009bc0,
+-	0x130fb: 0xe00084dc,
+-	// Block 0x4c4, offset 0x13100
+-	0x13105: 0xe0005903,
+-	0x13109: 0xe00058d9, 0x1310a: 0xe0008341,
+-	0x1310e: 0xe0006718,
+-	0x13112: 0xe00040b5, 0x13113: 0xe0005afa,
+-	0x13116: 0xe00042e0,
+-	0x13118: 0xe00070b4, 0x1311a: 0xe0007666, 0x1311b: 0xe0008814,
+-	0x1311d: 0xe0008a41, 0x1311e: 0xe00079cc, 0x1311f: 0xe0009cae,
+-	0x13120: 0xe0007e87, 0x13122: 0xe0009f14,
+-	0x13128: 0xe000541e, 0x13129: 0xe000639b, 0x1312a: 0xe000717e, 0x1312b: 0xe00059d2,
+-	0x1313d: 0xe0005a9a, 0x1313e: 0xe0005ab2, 0x1313f: 0xe0008205,
+-	// Block 0x4c5, offset 0x13140
+-	0x13141: 0xe000922f, 0x13142: 0xe0008510,
+-	0x13145: 0xe0004640,
+-	0x13149: 0xe00056b5, 0x1314a: 0xe0004942,
+-	0x1314c: 0xe0004ace,
+-	0x13151: 0xe00095c0, 0x13153: 0xe00045b4,
+-	0x13154: 0xe00062d4, 0x13156: 0xe0008f9a,
+-	0x13158: 0xe0006f3c,
+-	0x1315c: 0xe0009006, 0x1315f: 0xe0005163,
+-	0x13160: 0xe00098d6, 0x13161: 0xe0009cb2,
+-	0x13169: 0xe0006258, 0x1316b: 0xe0004b36,
+-	0x1316f: 0xe000a123,
+-	0x13170: 0xe0004411, 0x13171: 0xe0005893, 0x13172: 0xe0006563,
+-	0x13174: 0xe000729e, 0x13176: 0xe000633c,
+-	0x13179: 0xe0008450,
+-	0x1317d: 0xe0006e6c,
+-	// Block 0x4c6, offset 0x13180
+-	0x13183: 0xe00094fb,
+-	0x13184: 0xe000511b, 0x13186: 0xe00065d2, 0x13187: 0xe0008399,
+-	0x1318a: 0xe0005433, 0x1318b: 0xe000904f,
+-	0x1318c: 0xe0005b37, 0x1318d: 0xe00099d3, 0x1318e: 0xe0007d82,
+-	0x131a9: 0xe00093f6,
+-	0x131ac: 0xe0005a16,
+-	0x131b1: 0xe000a3c9,
+-	0x131b5: 0xe000798e,
+-	0x131b8: 0xe0007e2d, 0x131b9: 0xe00099ab,
+-	0x131bc: 0xe000720a, 0x131bd: 0xe0005352,
+-	// Block 0x4c7, offset 0x131c0
+-	0x131c6: 0xe0006270,
+-	0x131c9: 0xe00076ee, 0x131ca: 0xe00072ba,
+-	0x131d1: 0xe0009b1b,
+-	0x131d7: 0xe0008453,
+-	0x131da: 0xe0007144, 0x131db: 0xe0003e87,
+-	0x131e1: 0xe0009a56, 0x131e3: 0xe0005228,
+-	0x131e6: 0xe0007d85,
+-	0x131e9: 0xe00098d9, 0x131ea: 0xe00043b4, 0x131eb: 0xe000a030,
+-	0x131ec: 0xe0008345, 0x131ed: 0xe0003d99, 0x131ef: 0xe00073e8,
+-	0x131f1: 0xe000939f, 0x131f3: 0xe0007daf,
+-	0x131f5: 0xe0004a7c, 0x131f7: 0xe000a3ad,
+-	0x131fa: 0xe0008bcc,
+-	// Block 0x4c8, offset 0x13200
+-	0x13202: 0xe0009279,
+-	0x13210: 0xe0006dc2,
+-	0x13214: 0xe0006fe5,
+-	0x13219: 0xe0005c97,
+-	0x1321c: 0xe00067b7, 0x1321f: 0xe000490d,
+-	0x13221: 0xe0005ff7,
+-	0x13228: 0xe0009137,
+-	0x1322d: 0xe000944d, 0x1322f: 0xe0004757,
+-	0x13232: 0xe0009a59,
+-	0x13234: 0xe000678b,
+-	0x13238: 0xe0008bf8, 0x13239: 0xe0004244, 0x1323a: 0xe0008dac, 0x1323b: 0xe00073ec,
+-	0x1323c: 0xe0008f9e, 0x1323f: 0xe000a033,
+-	// Block 0x4c9, offset 0x13240
+-	0x13240: 0xe0006ce3, 0x13241: 0xe0008d54, 0x13242: 0xe0005bd3,
+-	0x13244: 0xe000948d, 0x13246: 0xe00069e3,
+-	0x13249: 0xe0007b49, 0x1324a: 0xe0007955, 0x1324b: 0xe000402b,
+-	0x1324d: 0xe0006fe8,
+-	0x13250: 0xe0007af9, 0x13251: 0xe000671b, 0x13253: 0xe000608c,
+-	0x13256: 0xe00065d5,
+-	0x1325a: 0xe0006dc5,
+-	0x1326c: 0xe0006318, 0x1326d: 0xe00072be, 0x1326e: 0xe0005543, 0x1326f: 0xe00093a3,
+-	0x13271: 0xe00099eb,
+-	0x13274: 0xe0006ed8,
+-	0x1327c: 0xe0005771, 0x1327d: 0xe0009b80,
+-	// Block 0x4ca, offset 0x13280
+-	0x13280: 0xe00063f5,
+-	0x13286: 0xe000589f,
+-	0x13291: 0xe0005b9f, 0x13293: 0xe0005a1a,
+-	0x13294: 0xe00062a4, 0x13295: 0xe000927c, 0x13297: 0xe00081cc,
+-	0x13298: 0xe000681b, 0x1329a: 0xe0007c8d,
+-	0x1329e: 0xe00057c1, 0x1329f: 0xe0008ae0,
+-	0x132a1: 0xe0009009, 0x132a3: 0xe0008349,
+-	0x132a5: 0xe0009397, 0x132a6: 0xe0008976,
+-	0x132aa: 0xe00086cc,
+-	0x132ac: 0xe0006c48, 0x132ad: 0xe0007f71, 0x132af: 0xe0008d18,
+-	0x132bd: 0xe0009a08, 0x132bf: 0xe0007d88,
+-	// Block 0x4cb, offset 0x132c0
+-	0x132c1: 0xe0004fb1, 0x132c3: 0xe00060cb,
+-	0x132c6: 0xe000913b,
+-	0x132c9: 0xe00092ca, 0x132ca: 0xe00077fb, 0x132cb: 0xe00077fe,
+-	0x132ce: 0xe00047b4,
+-	0x132d3: 0xe0007c61,
+-	0x132d5: 0xe0007e8a, 0x132d6: 0xe00040b8,
+-	0x132d8: 0xe0007ad4, 0x132d9: 0xe0009faf,
+-	0x132de: 0xe000927f,
+-	0x132e1: 0xe000649f, 0x132e3: 0xe0006edc,
+-	0x132e4: 0xe0007e8d,
+-	0x132e8: 0xe0004a0a, 0x132e9: 0xe000979b, 0x132ea: 0xe0005d26, 0x132eb: 0xe0005260,
+-	0x132ed: 0xe0006c4b,
+-	0x132fa: 0xe0008bd4,
+-	0x132fe: 0xe000574a,
+-	// Block 0x4cc, offset 0x13300
+-	0x13300: 0xe00078f5,
+-	0x13304: 0xe0005eb7, 0x13306: 0xe0007363, 0x13307: 0xe0005dd2,
+-	0x13309: 0xe0007801, 0x1330a: 0xe00043b7,
+-	0x1330c: 0xe0009ded, 0x1330f: 0xe0007fe4,
+-	0x13311: 0xe0003f9f,
+-	0x13314: 0xe000834d, 0x13317: 0xe0007d25,
+-	0x13319: 0xe00095c3, 0x1331b: 0xe0006ae7,
+-	0x1331d: 0xe0004fe5,
+-	0x13324: 0xe0009d95, 0x13325: 0xe0009357, 0x13326: 0xe00090e3,
+-	0x13328: 0xe000a3b9, 0x13329: 0xe0006803, 0x1332a: 0xe00070b8,
+-	0x1332f: 0xe0006980,
+-	0x13330: 0xe000a391,
+-	0x1333a: 0xe0008853,
+-	// Block 0x4cd, offset 0x13340
+-	0x13341: 0xe0004414,
+-	0x13349: 0xe00081cf,
+-	0x1334d: 0xe00053ce, 0x1334e: 0xe00070bc, 0x1334f: 0xe0008351,
+-	0x13350: 0xe0005ced,
+-	0x13355: 0xe0007bc6,
+-	0x1335c: 0xe00054b9, 0x1335d: 0xe00077bf,
+-	0x13364: 0xe00052df, 0x13365: 0xe00073f0,
+-	0x13369: 0xe00060cf, 0x1336a: 0xe0006dc8,
+-	0x13377: 0xe0008456,
+-	0x13379: 0xe0007366, 0x1337a: 0xe0005928, 0x1337b: 0xe000890a,
+-	0x1337d: 0xe00095f9, 0x1337f: 0xe00045f8,
+-	// Block 0x4ce, offset 0x13380
+-	0x13380: 0xe0009707, 0x13382: 0xe00077c2,
+-	0x13384: 0xe0004d0e, 0x13386: 0xe0005667, 0x13387: 0xe0006c4e,
+-	0x1338a: 0xe00078dd, 0x1338b: 0xe000664e,
+-	0x13396: 0xe000751a, 0x13397: 0xe000615b,
+-	0x13398: 0xe000748c, 0x1339a: 0xe0006a67,
+-	0x133a2: 0xe0005711,
+-	0x133a7: 0xe00040bb,
+-	0x133a9: 0xe00060e3,
+-	0x133ad: 0xe000537e, 0x133af: 0xe00097ab,
+-	0x133bc: 0xe0005e05, 0x133bf: 0xe000531b,
+-	// Block 0x4cf, offset 0x133c0
+-	0x133c1: 0xe0004d11,
+-	0x133ce: 0xe000a036,
+-	0x133d0: 0xe0009bf2, 0x133d3: 0xe000a327,
+-	0x133d4: 0xe00040e7, 0x133d5: 0xe0009049,
+-	0x133db: 0xe0009df7,
+-	0x133dc: 0xe000566a, 0x133de: 0xe0007bc9, 0x133df: 0xe000a039,
+-	0x133e7: 0xe000a418,
+-	0x133eb: 0xe000a3e8,
+-	0x133ec: 0xe0004aa9, 0x133ef: 0xe0004aac,
+-	0x133f1: 0xe0006f55,
+-	0x133f8: 0xe0008208, 0x133f9: 0xe000a0e8, 0x133fa: 0xe000a3eb, 0x133fb: 0xe0005b47,
+-	// Block 0x4d0, offset 0x13400
+-	0x1340a: 0xe0005d74, 0x1340b: 0xe0007804,
+-	0x1340c: 0xe0005ffb, 0x1340d: 0xe00065d8,
+-	0x13413: 0xe00080d5,
+-	0x13415: 0xe000913f,
+-	0x13423: 0xe0004565,
+-	0x13424: 0xe000890d,
+-	0x13428: 0xe00063f8, 0x13429: 0xe000959c, 0x1342a: 0xe000529a,
+-	0x1342f: 0xe0004910,
+-	0x13430: 0xe0007e90, 0x13431: 0xe000903c,
+-	0x13434: 0xe0007e93,
+-	// Block 0x4d1, offset 0x13440
+-	0x13440: 0xe0008ae3,
+-	0x13445: 0xe00086d0, 0x13446: 0xe000848f, 0x13447: 0xe000671e,
+-	0x13449: 0xe0005627, 0x1344b: 0xe0004f25,
+-	0x13454: 0xe000a2a6,
+-	0x13459: 0xe0007970, 0x1345b: 0xe0008aa1,
+-	0x1345e: 0xe000a1f3, 0x1345f: 0xe00047b7,
+-	0x13463: 0xe0004d4a,
+-	0x13464: 0xe0009cce,
+-	0x13469: 0xe0004589,
+-	0x1346c: 0xe000458d, 0x1346d: 0xe0008d94,
+-	0x13478: 0xe0006c96, 0x13479: 0xe0007b79, 0x1347b: 0xe0006bf4,
+-	0x1347e: 0xe0007181,
+-	// Block 0x4d2, offset 0x13480
+-	0x13480: 0xe0009343, 0x13482: 0xe000631c, 0x13483: 0xe00070c0,
+-	0x13486: 0xe0009ec4,
+-	0x13488: 0xe000785e, 0x13489: 0xe00063fb, 0x1348a: 0xe0005906, 0x1348b: 0xe0005422,
+-	0x13491: 0xe0004f55,
+-	0x13498: 0xe0008c64, 0x1349a: 0xe0006566,
+-	0x1349c: 0xe0005e6b, 0x1349d: 0xe0004d14,
+-	0x134a1: 0xe0006769,
+-	0x134a5: 0xe00069ff,
+-	0x134a8: 0xe00086f4, 0x134a9: 0xe0008979,
+-	0x134b4: 0xe00090ab, 0x134b5: 0xe000766a, 0x134b7: 0xe00049fe,
+-	0x134ba: 0xe0007807, 0x134bb: 0xe0009247,
+-	0x134bf: 0xe0007d29,
+-	// Block 0x4d3, offset 0x134c0
+-	0x134c0: 0xe0005264,
+-	0x134cc: 0xe00045e1, 0x134ce: 0xe0003e8f,
+-	0x134d5: 0xe0007058, 0x134d7: 0xe000a247,
+-	0x134d9: 0xe00099af,
+-	0x134df: 0xe0007d8b,
+-	0x134e0: 0xe00062d8,
+-	0x134e4: 0xe0007e96, 0x134e5: 0xe0005c57, 0x134e6: 0xe0009bc3,
+-	0x134e8: 0xe0006f51,
+-	0x134ee: 0xe00062dc,
+-	0x134f4: 0xe000a03c, 0x134f6: 0xe00086e8,
+-	0x134f8: 0xe0007973,
+-	// Block 0x4d4, offset 0x13500
+-	0x13502: 0xe000540a, 0x13503: 0xe0006037,
+-	0x1350c: 0xe0005f5b, 0x1350d: 0xe0007f09,
+-	0x13518: 0xe000800e,
+-	0x1351e: 0xe00059b6, 0x1351f: 0xe0005bd7,
+-	0x13522: 0xe0009f74, 0x13523: 0xe0005307,
+-	0x1352d: 0xe0005909,
+-	0x13533: 0xe000502d,
+-	0x13534: 0xe0008d58,
+-	0x1353a: 0xe000531e, 0x1353b: 0xe00057dc,
+-	0x1353d: 0xe0008a24,
+-	// Block 0x4d5, offset 0x13540
+-	0x13540: 0xe0006cff,
+-	0x13544: 0xe0009651, 0x13547: 0xe00059b9,
+-	0x1354a: 0xe0005c5a, 0x1354b: 0xe000710c,
+-	0x13552: 0xe0005ab6,
+-	0x1355a: 0xe0009963, 0x1355b: 0xe0009967,
+-	0x13560: 0xe0005f33, 0x13563: 0xe0004d17,
+-	0x1356c: 0xe0006a6b, 0x1356f: 0xe0007a9b,
+-	0x13572: 0xe00094dd,
+-	0x13577: 0xe000505d,
+-	0x13579: 0xe0009d6b, 0x1357b: 0xe0007fe7,
+-	0x1357e: 0xe0006b2f,
+-	// Block 0x4d6, offset 0x13580
+-	0x13585: 0xe0006f99,
+-	0x1358d: 0xe0003ea7,
+-	0x13591: 0xe000778e,
+-	0x13595: 0xe000766e,
+-	0x1359f: 0xe00053ea,
+-	0x135a1: 0xe00054e6, 0x135a2: 0xe0008b44, 0x135a3: 0xe00054bc,
+-	0x135b1: 0xe0004417, 0x135b2: 0xe00041e8,
+-	0x135b6: 0xe00082b1,
+-	0x135b9: 0xe000529d, 0x135bb: 0xe0005a1e,
+-	// Block 0x4d7, offset 0x135c0
+-	0x135c0: 0xe0009edc,
+-	0x135c4: 0xe0004eac, 0x135c6: 0xe0008ba4,
+-	0x135ca: 0xe0005ba7,
+-	0x135cc: 0xe0009dc1, 0x135cd: 0xe000762e, 0x135ce: 0xe0003e5f,
+-	0x135d2: 0xe0009e94, 0x135d3: 0xe0006f20,
+-	0x135d7: 0xe0003d5a,
+-	0x135d9: 0xe0007184, 0x135db: 0xe0007d8e,
+-	0x135dd: 0xe00094e1, 0x135de: 0xe0007db2,
+-	0x135e1: 0xe0009f78, 0x135e2: 0xe0004880, 0x135e3: 0xe0007fea,
+-	0x135e8: 0xe0009ac1, 0x135eb: 0xe000681f,
+-	0x135ee: 0xe00044f5,
+-	0x135f0: 0xe0006d44, 0x135f2: 0xe0004dbf,
+-	0x135f7: 0xe00094e5,
+-	0x135fd: 0xe0008161, 0x135fe: 0xe0004b96, 0x135ff: 0xe0004b9a,
+-	// Block 0x4d8, offset 0x13600
+-	0x13601: 0xe0007cf1, 0x13602: 0xe0005beb,
+-	0x13608: 0xe0003d5d, 0x1360b: 0xe000509d,
+-	0x1360d: 0xe0009a5c,
+-	0x13612: 0xe0004f29,
+-	0x13616: 0xe0006dcb, 0x13617: 0xe0008d1c,
+-	0x1361b: 0xe0008492,
+-	0x1361d: 0xe00063fe, 0x1361e: 0xe00044d9,
+-	0x13622: 0xe00060e7,
+-	0x1362a: 0xe00040be, 0x1362b: 0xe0009b2b,
+-	0x13634: 0xe000441a,
+-	// Block 0x4d9, offset 0x13640
+-	0x13640: 0xe000810d, 0x13641: 0xe00083d9, 0x13642: 0xe0005583,
+-	0x13645: 0xe000839d,
+-	0x1364a: 0xe0004e84,
+-	0x1364d: 0xe00044f9, 0x1364f: 0xe00058dc,
+-	0x13652: 0xe0006401,
+-	0x13654: 0xe00077c5, 0x13655: 0xe0007e30,
+-	0x13658: 0xe0004913, 0x13659: 0xe000496e,
+-	0x1365c: 0xe000625b, 0x1365d: 0xe0008355, 0x1365f: 0xe0006721,
+-	0x13661: 0xe00058df,
+-	0x13668: 0xe0006569,
+-	0x1366f: 0xe0008ae6,
+-	0x13671: 0xe0009ae8, 0x13673: 0xe00068bf,
+-	0x13674: 0xe000606b, 0x13675: 0xe000606e,
+-	0x13678: 0xe0005321, 0x13679: 0xe00045e4,
+-	0x1367d: 0xe0008856, 0x1367e: 0xe00040c1,
+-	// Block 0x4da, offset 0x13680
+-	0x13684: 0xe0009052, 0x13687: 0xe00062a8,
+-	0x1368a: 0xe00099b3,
+-	0x1368c: 0xe00044fd,
+-	0x13690: 0xe0003e8b, 0x13692: 0xe0009a5f, 0x13693: 0xe000625e,
+-	0x13695: 0xe0007e99,
+-	0x13698: 0xe0007d91, 0x13699: 0xe0006071, 0x1369a: 0xe0008495,
+-	0x136a5: 0xe0007aed, 0x136a7: 0xe0004340,
+-	0x136aa: 0xe000984a, 0x136ab: 0xe00095c6,
+-	0x136b0: 0xe0004103,
+-	0x136b6: 0xe0006f65,
+-	0x136b8: 0xe00057c4, 0x136ba: 0xe000921b, 0x136bb: 0xe0006aeb,
+-	// Block 0x4db, offset 0x136c0
+-	0x136c1: 0xe0003fa3,
+-	0x136c4: 0xe0007460,
+-	0x136cd: 0xe00082d5,
+-	0x136d6: 0xe0007897,
+-	0x136d8: 0xe000475a,
+-	0x136dc: 0xe00091df, 0x136de: 0xe0006173, 0x136df: 0xe0004b9e,
+-	0x136e0: 0xe0005061,
+-	0x136e4: 0xe00053d2,
+-	0x136ea: 0xe0005a66,
+-	0x136ed: 0xe000a543, 0x136ef: 0xe00095fd,
+-	0x136f2: 0xe0006f69,
+-	0x136f4: 0xe0005396,
+-	0x136ff: 0xe0006983,
+-	// Block 0x4dc, offset 0x13700
+-	0x13701: 0xe0007a9e, 0x13703: 0xe0004fb5,
+-	0x13706: 0xe00062ac, 0x13707: 0xe0009936,
+-	0x13708: 0xe0009dad, 0x13709: 0xe0004d1a, 0x1370b: 0xe00041bc,
+-	0x1370f: 0xe0004a7f,
+-	0x13713: 0xe0005b4f,
+-	0x13716: 0xe0006feb, 0x13717: 0xe000676c,
+-	0x13718: 0xe00086d4,
+-	0x13721: 0xe0004180,
+-	0x13728: 0xe000720e, 0x13729: 0xe000511e, 0x1372a: 0xe00095f1,
+-	0x1372c: 0xe0004d1d, 0x1372f: 0xe0004916,
+-	0x13732: 0xe0004b3a,
+-	0x13737: 0xe0009055,
+-	0x1373a: 0xe0003dbf,
+-	0x1373d: 0xe00053d6, 0x1373f: 0xe0008514,
+-	// Block 0x4dd, offset 0x13740
+-	0x13740: 0xe0004644,
+-	0x13752: 0xe0003dc3,
+-	0x13754: 0xe0004b62, 0x13756: 0xe000420c,
+-	0x1375a: 0xe0004471,
+-	0x1375c: 0xe000820b, 0x1375d: 0xe0008498,
+-	0x13763: 0xe0009d6e,
+-	0x13765: 0xe0004775,
+-	0x13771: 0xe0009b84, 0x13773: 0xe00044b1,
+-	0x13774: 0xe00068c3,
+-	0x13778: 0xe0009347,
+-	// Block 0x4de, offset 0x13780
+-	0x13780: 0xe00074f2, 0x13782: 0xe00087a8, 0x13783: 0xe000639e,
+-	0x13787: 0xe0004779,
+-	0x13788: 0xe000438d, 0x13789: 0xe000612b, 0x1378a: 0xe00070c4,
+-	0x1378c: 0xe000a0ec, 0x1378e: 0xe000980e,
+-	0x13790: 0xe0007276, 0x13791: 0xe0008071, 0x13793: 0xe000a395,
+-	0x13794: 0xe0007f55, 0x13795: 0xe00067e3, 0x13796: 0xe000a48e, 0x13797: 0xe00096e7,
+-	0x13798: 0xe0004ca2, 0x1379b: 0xe0007976,
+-	0x1379d: 0xe0007187, 0x1379f: 0xe0006d13,
+-	0x137a2: 0xe000a47a, 0x137a3: 0xe0004204,
+-	0x137a5: 0xe0004e94,
+-	0x137aa: 0xe0005fff,
+-	0x137ad: 0xe0006aef,
+-	0x137b1: 0xe0009dfa,
+-	0x137b4: 0xe0006c51, 0x137b6: 0xe0003d60,
+-	0x137ba: 0xe0008d20, 0x137bb: 0xe0008aa4,
+-	0x137bc: 0xe0008818, 0x137be: 0xe000820e,
+-	// Block 0x4df, offset 0x137c0
+-	0x137c1: 0xe0004474,
+-	0x137c6: 0xe000849b,
+-	0x137cb: 0xe0008ae9,
+-	0x137d0: 0xe0006724, 0x137d1: 0xe0008074,
+-	0x137d4: 0xe0008910, 0x137d5: 0xe00099d7, 0x137d6: 0xe0009b34, 0x137d7: 0xe0009f94,
+-	0x137d8: 0xe00049a2, 0x137db: 0xe0008459,
+-	0x137de: 0xe0006727,
+-	0x137e0: 0xe000775e, 0x137e1: 0xe000a369, 0x137e2: 0xe0006ee0, 0x137e3: 0xe00077c8,
+-	0x137e6: 0xe0006fee,
+-	0x137e9: 0xe0006ff1, 0x137eb: 0xe00096a2,
+-	0x137ec: 0xe0004919, 0x137ed: 0xe0004a1f, 0x137ee: 0xe0008598,
+-	0x137f0: 0xe000a537, 0x137f1: 0xe000a126, 0x137f2: 0xe0009d71, 0x137f3: 0xe00068c7,
+-	0x137f5: 0xe0006a6f,
+-	0x137f9: 0xe00091bb,
+-	0x137fc: 0xe000a2be, 0x137ff: 0xe000472a,
+-	// Block 0x4e0, offset 0x13800
+-	0x13802: 0xe000897c,
+-	0x13804: 0xe000574d, 0x13805: 0xe0008aa7, 0x13806: 0xe0004710, 0x13807: 0xe00045b7,
+-	0x1380c: 0xe0008c67, 0x1380d: 0xe00080d9,
+-	0x13811: 0xe0004714, 0x13813: 0xe0006986,
+-	0x13815: 0xe0009737,
+-	0x13818: 0xe0007e33, 0x1381a: 0xe000930c,
+-	0x1381e: 0xe00074b2,
+-	0x13820: 0xe0006bc3, 0x13821: 0xe0004390, 0x13822: 0xe0009ec8, 0x13823: 0xe0005d29,
+-	0x13824: 0xe0007861, 0x13825: 0xe000441d, 0x13826: 0xe0006d17, 0x13827: 0xe0009a83,
+-	0x13828: 0xe000a2a9, 0x1382a: 0xe0006af3,
+-	0x13830: 0xe0006dce, 0x13832: 0xe00045ba,
+-	0x13839: 0xe000656c,
+-	0x1383c: 0xe0007fed, 0x1383e: 0xe0007f21, 0x1383f: 0xe0008913,
+-	// Block 0x4e1, offset 0x13840
+-	0x13842: 0xe00091bf,
+-	0x13844: 0xe0006ee4, 0x13847: 0xe0004fb9,
+-	0x13849: 0xe0007db5, 0x1384b: 0xe0009233,
+-	0x1384d: 0xe0008402, 0x1384f: 0xe00093f9,
+-	0x13852: 0xe0005474,
+-	0x13856: 0xe00056e1,
+-	0x1385b: 0xe0007e36,
+-	0x1385c: 0xe00091ff, 0x1385e: 0xe00099b7, 0x1385f: 0xe000701e,
+-	0x13860: 0xe000a3d1, 0x13861: 0xe0006ff4,
+-	0x13864: 0xe0007212, 0x13866: 0xe000925e, 0x13867: 0xe0009d74,
+-	0x1386a: 0xe00087ac, 0x1386b: 0xe0003e3b,
+-	0x1386d: 0xe0007e39, 0x1386e: 0xe00081d2,
+-	0x13870: 0xe0007021, 0x13871: 0xe000a3fd, 0x13873: 0xe00072c2,
+-	0x13874: 0xe0009cb6, 0x13876: 0xe0007134, 0x13877: 0xe0009b07,
+-	0x13878: 0xe0008859, 0x1387a: 0xe00074f6,
+-	0x1387c: 0xe000a3d5, 0x1387e: 0xe0004d77,
+-	// Block 0x4e2, offset 0x13880
+-	0x13880: 0xe0005c2d, 0x13881: 0xe000725a, 0x13882: 0xe0007d94,
+-	0x13884: 0xe00052e3, 0x13887: 0xe0004107,
+-	0x1388c: 0xe0003d9c, 0x1388e: 0xe0005dd5,
+-	0x13890: 0xe0005e6f, 0x13891: 0xe0009fcd,
+-	0x13894: 0xe0009bf6, 0x13896: 0xe0006cc3, 0x13897: 0xe0006003,
+-	0x13899: 0xe0004220, 0x1389a: 0xe0008091, 0x1389b: 0xe0003fa7,
+-	0x1389c: 0xe0007d2d, 0x1389d: 0xe000672a,
+-	0x138a0: 0xe0007aa1, 0x138a3: 0xe0007c0b,
+-	0x138a6: 0xe0004344,
+-	0x138a8: 0xe0005c30, 0x138ab: 0xe00084e0,
+-	0x138ac: 0xe0005806,
+-	0x138b3: 0xe0004883,
+-	0x138b7: 0xe000789a,
+-	0x138b9: 0xe0004b3e,
+-	0x138be: 0xe0005a3e,
+-	// Block 0x4e3, offset 0x138c0
+-	0x138c1: 0xe000a129, 0x138c3: 0xe000a36c,
+-	0x138c9: 0xe0008bfc,
+-	0x138cc: 0xe0007991, 0x138ce: 0xe000a42e, 0x138cf: 0xe0004ca5,
+-	0x138d4: 0xe0006ab3, 0x138d6: 0xe0008f32,
+-	0x138d8: 0xe000705c, 0x138d9: 0xe000930f, 0x138da: 0xe0004fbd,
+-	0x138dc: 0xe0006261, 0x138df: 0xe000897f,
+-	0x138e6: 0xe00042e4,
+-	0x138eb: 0xe0006b4f,
+-	0x138ec: 0xe000656f, 0x138ef: 0xe00075ae,
+-	0x138f0: 0xe0007ff0, 0x138f1: 0xe0006ab7,
+-	0x138f4: 0xe00041c0, 0x138f7: 0xe000a03f,
+-	0x138fd: 0xe00077cb, 0x138ff: 0xe0009fd0,
+-	// Block 0x4e4, offset 0x13900
+-	0x13900: 0xe000519c,
+-	0x13909: 0xe0007e9c, 0x1390a: 0xe0006187,
+-	0x1390c: 0xe0007672, 0x1390e: 0xe0006e31,
+-	0x13910: 0xe0006dd1, 0x13912: 0xe0008f02, 0x13913: 0xe0007464,
+-	0x13916: 0xe0008f06,
+-	0x1391a: 0xe0008e92,
+-	0x1391c: 0xe0005065, 0x1391e: 0xe0007506,
+-	// Block 0x4e5, offset 0x13940
+-	0x13977: 0xe000449d,
+-	0x1397f: 0xe0004393,
+-	// Block 0x4e6, offset 0x13980
+-	0x13981: 0xe000a1eb,
+-	0x13986: 0xe0005285, 0x13987: 0xe0003ff3,
+-	0x13988: 0xe0004ca8, 0x13989: 0xe0007024, 0x1398a: 0xe0009b0b,
+-	0x1398c: 0xe00079d0, 0x1398e: 0xe0006e34,
+-	0x13995: 0xe0006ff7, 0x13996: 0xe00094a9,
+-	0x1399a: 0xe00051c8,
+-	0x139a1: 0xe00068cb, 0x139a2: 0xe000a1cb,
+-	0x139a8: 0xe000a531, 0x139aa: 0xe000a042, 0x139ab: 0xe00077ce,
+-	0x139ac: 0xe000849e,
+-	0x139b3: 0xe0006652,
+-	0x139b8: 0xe00095c9, 0x139b9: 0xe0009ac4, 0x139ba: 0xe0006ffa,
+-	// Block 0x4e7, offset 0x139c0
+-	0x139c2: 0xe00092cd, 0x139c3: 0xe0005b1b,
+-	0x139ca: 0xe0005b07,
+-	0x139cc: 0xe0005c33, 0x139cd: 0xe000590c,
+-	0x139d3: 0xe0005cf0,
+-	0x139d4: 0xe00065db,
+-	0x139d8: 0xe0005b1f,
+-	0x139dd: 0xe0009939, 0x139de: 0xe00087b0,
+-	0x139e0: 0xe00063a1, 0x139e1: 0xe00083dc, 0x139e2: 0xe0004569,
+-	0x139e7: 0xe000662e,
+-	0x139e8: 0xe000a12c, 0x139e9: 0xe00098f3, 0x139ea: 0xe0009767, 0x139eb: 0xe0004648,
+-	0x139ec: 0xe0009024, 0x139ef: 0xe000845c,
+-	0x139f0: 0xe0006be8, 0x139f2: 0xe0008211, 0x139f3: 0xe0008050,
+-	0x139f4: 0xe0004a58, 0x139f6: 0xe00099bb, 0x139f7: 0xe0005adc,
+-	0x139f8: 0xe00050a0, 0x139fa: 0xe000a26b, 0x139fb: 0xe0006572,
+-	0x139fc: 0xe0009203, 0x139fd: 0xe000804d, 0x139ff: 0xe0005d2c,
+-	// Block 0x4e8, offset 0x13a00
+-	0x13a00: 0xe0009bc6, 0x13a01: 0xe000645b, 0x13a02: 0xe0005729, 0x13a03: 0xe0008159,
+-	0x13a04: 0xe000a2ac, 0x13a06: 0xe00061ab, 0x13a07: 0xe00081d5,
+-	0x13a08: 0xe0003d63, 0x13a0a: 0xe00084e4,
+-	0x13a11: 0xe0008d24, 0x13a13: 0xe0006632,
+-	0x13a19: 0xe0008aec, 0x13a1a: 0xe000572c,
+-	0x13a1c: 0xe000672d, 0x13a1e: 0xe00068cf,
+-	0x13a20: 0xe0006074, 0x13a21: 0xe0004061, 0x13a22: 0xe0009e98, 0x13a23: 0xe0005adf,
+-	0x13a24: 0xe00090e7, 0x13a26: 0xe00063a4,
+-	0x13a2a: 0xe0008d98,
+-	0x13a2c: 0xe00083a1, 0x13a2d: 0xe0005121,
+-	0x13a34: 0xe000572f,
+-	0x13a3b: 0xe00063a7,
+-	0x13a3c: 0xe0004886, 0x13a3d: 0xe0006901,
+-	// Block 0x4e9, offset 0x13a40
+-	0x13a44: 0xe0008c6a, 0x13a45: 0xe00094fe, 0x13a47: 0xe0007edd,
+-	0x13a48: 0xe0008c00, 0x13a4a: 0xe0008e96, 0x13a4b: 0xe000724e,
+-	0x13a4d: 0xe0006b33, 0x13a4f: 0xe0007792,
+-	0x13a50: 0xe00070f0, 0x13a53: 0xe0008359,
+-	0x13a54: 0xe00065de, 0x13a56: 0xe0006cc7,
+-	0x13a5b: 0xe0004591,
+-	// Block 0x4ea, offset 0x13a80
+-	0x13aa4: 0xe00084e8, 0x13aa6: 0xe0006730, 0x13aa7: 0xe0004d8f,
+-	0x13aab: 0xe0009e3c,
+-	0x13aad: 0xe0008214,
+-	0x13ab0: 0xe0008aaa, 0x13ab3: 0xe0004a82,
+-	0x13ab4: 0xe00063aa, 0x13ab6: 0xe0003e63, 0x13ab7: 0xe0004cab,
+-	// Block 0x4eb, offset 0x13ac0
+-	0x13ac1: 0xe0008d5c,
+-	0x13ac5: 0xe00092d0,
+-	0x13aca: 0xe0007d45,
+-	0x13ace: 0xe0008aef,
+-	0x13ad0: 0xe0009ee8,
+-	0x13ad9: 0xe0008916,
+-	0x13ae0: 0xe0009312, 0x13ae3: 0xe000952e,
+-	0x13ae8: 0xe00093fc, 0x13aeb: 0xe00047f3,
+-	0x13af2: 0xe0008ec2, 0x13af3: 0xe000899c,
+-	0x13afa: 0xe00063ad,
+-	0x13afe: 0xe0008c6d,
+-	// Block 0x4ec, offset 0x13b00
+-	0x13b02: 0xe0004d20,
+-	0x13b06: 0xe00097d0,
+-	0x13b0b: 0xe0005f7b,
+-	0x13b0c: 0xe0008d9c, 0x13b0e: 0xe00096a5, 0x13b0f: 0xe0003d66,
+-	0x13b15: 0xe00086f8, 0x13b16: 0xe00090af, 0x13b17: 0xe0006404,
+-	0x13b1b: 0xe00098af,
+-	0x13b1d: 0xe000408e, 0x13b1f: 0xe0004b66,
+-	0x13b21: 0xe00084ec, 0x13b23: 0xe0006a73,
+-	0x13b28: 0xe00045bd, 0x13b2a: 0xe0004a46, 0x13b2b: 0xe0004595,
+-	0x13b2c: 0xe0004aaf, 0x13b2f: 0xe000566d,
+-	0x13b31: 0xe00095cc, 0x13b33: 0xe0005124,
+-	0x13b3c: 0xe000495a,
+-	// Block 0x4ed, offset 0x13b40
+-	0x13b46: 0xe0008b78,
+-	0x13b48: 0xe0006c99, 0x13b49: 0xe0005490, 0x13b4a: 0xe0007b4d,
+-	0x13b4f: 0xe0005001,
+-	0x13b50: 0xe00090eb,
+-	0x13b54: 0xe000970b,
+-	0x13b5d: 0xe00045e7, 0x13b5e: 0xe0004091, 0x13b5f: 0xe0008c8e,
+-	0x13b6a: 0xe00089f4,
+-	0x13b70: 0xe0007e3c,
+-	0x13b74: 0xe0007b7d, 0x13b75: 0xe00089f8, 0x13b76: 0xe000888c,
+-	0x13b7d: 0xe0007c0e,
+-	// Block 0x4ee, offset 0x13b80
+-	0x13b80: 0xe00086fc, 0x13b82: 0xe0007e3f,
+-	0x13b84: 0xe000885c, 0x13b87: 0xe00040eb,
+-	0x13b88: 0xe0005127, 0x13b89: 0xe0008e21, 0x13b8a: 0xe0009fb2,
+-	0x13b8c: 0xe0008fd6, 0x13b8f: 0xe000888f,
+-	0x13b95: 0xe0009b88,
+-	0x13b99: 0xe0009491,
+-	0x13b9c: 0xe00094ad, 0x13b9f: 0xe00084f0,
+-	0x13ba0: 0xe0009087, 0x13ba3: 0xe0005a42,
+-	0x13ba4: 0xe0008a28,
+-	0x13bb2: 0xe0008b7c,
+-	0x13bb4: 0xe0009495, 0x13bb6: 0xe0004a0e,
+-	0x13bbb: 0xe00047f6,
+-	// Block 0x4ef, offset 0x13bc0
+-	0x13bc1: 0xe0008919,
+-	0x13bc5: 0xe000935b, 0x13bc7: 0xe000845f,
+-	0x13bc9: 0xe00051d8, 0x13bca: 0xe0008aad, 0x13bcb: 0xe0008892,
+-	0x13bcd: 0xe00073f4,
+-	0x13bd0: 0xe00055b7, 0x13bd1: 0xe00090b3, 0x13bd3: 0xe0008c91,
+-	0x13bd4: 0xe000862c,
+-	0x13bd9: 0xe0005958,
+-	0x13be1: 0xe0006b77,
+-	0x13be9: 0xe0004608, 0x13bea: 0xe000592c, 0x13beb: 0xe00070c8,
+-	0x13bec: 0xe00049ba,
+-	0x13bf1: 0xe00096a8, 0x13bf3: 0xe00049be,
+-	// Block 0x4f0, offset 0x13c00
+-	0x13c00: 0xe0004889,
+-	0x13c06: 0xe0009282,
+-	0x13c0a: 0xe0008e24, 0x13c0b: 0xe000725e,
+-	0x13c0c: 0xe0004a22, 0x13c0d: 0xe0004972,
+-	0x13c12: 0xe0009e0c,
+-	0x13c1f: 0xe0007632,
+-	0x13c28: 0xe000562b, 0x13c2b: 0xe0008d28,
+-	0x13c38: 0xe0009499, 0x13c39: 0xe0008c94, 0x13c3a: 0xe0009315, 0x13c3b: 0xe0003d69,
+-	0x13c3c: 0xe0008139, 0x13c3e: 0xe0007060,
+-	// Block 0x4f1, offset 0x13c40
+-	0x13c43: 0xe00047ba,
+-	0x13c45: 0xe0005670, 0x13c47: 0xe0008630,
+-	0x13c48: 0xe0008af2, 0x13c49: 0xe00083df,
+-	0x13c52: 0xe0009207, 0x13c53: 0xe0005a22,
+-	0x13c54: 0xe0006264, 0x13c55: 0xe00042e8,
+-	0x13c5b: 0xe0005478,
+-	0x13c5c: 0xe000959f, 0x13c5d: 0xe000a400, 0x13c5e: 0xe0005a9e, 0x13c5f: 0xe0009167,
+-	0x13c66: 0xe0005547, 0x13c67: 0xe000620b,
+-	0x13c68: 0xe0004674, 0x13c69: 0xe0006077, 0x13c6a: 0xe000583f,
+-	0x13c6f: 0xe0008dd0,
+-	0x13c70: 0xe0007490, 0x13c73: 0xe0008ab0,
+-	0x13c78: 0xe0006dd4, 0x13c79: 0xe00062b0, 0x13c7b: 0xe00062b4,
+-	0x13c7e: 0xe000859c, 0x13c7f: 0xe000758a,
+-	// Block 0x4f2, offset 0x13c80
+-	0x13c80: 0xe00078f9, 0x13c82: 0xe00044b5,
+-	0x13c84: 0xe0009c76, 0x13c85: 0xe0007cf5, 0x13c86: 0xe00056d9,
+-	0x13c89: 0xe00085a0,
+-	0x13c8d: 0xe000916b, 0x13c8e: 0xe00047bd,
+-	0x13c92: 0xe00064a3,
+-	0x13c94: 0xe000595c, 0x13c97: 0xe0003f2f,
+-	0x13c98: 0xe000a1cf,
+-	0x13c9d: 0xe000758d, 0x13c9e: 0xe0009cba, 0x13c9f: 0xe000476d,
+-	0x13ca1: 0xe00065e1, 0x13ca2: 0xe0005503, 0x13ca3: 0xe000551b,
+-	0x13ca4: 0xe0005694,
+-	// Block 0x4f3, offset 0x13cc0
+-	0x13cdb: 0xe00070cc,
+-	0x13cdc: 0xe0004420, 0x13cdf: 0xe0009b37,
+-	0x13ce2: 0xe00053ae, 0x13ce3: 0xe00053a6,
+-	0x13ce6: 0xe00098f7,
+-	0x13ce8: 0xe000618b,
+-	0x13ced: 0xe0006733, 0x13cee: 0xe00061a3, 0x13cef: 0xe000618f,
+-	0x13cf0: 0xe0008d2c, 0x13cf1: 0xe0007af1, 0x13cf2: 0xe0004e58,
+-	0x13cfb: 0xe0007158,
+-	0x13cff: 0xe0009143,
+-	// Block 0x4f4, offset 0x13d00
+-	0x13d00: 0xe0003e67, 0x13d02: 0xe0007bcc, 0x13d03: 0xe000789d,
+-	0x13d04: 0xe000a49e, 0x13d05: 0xe00070d0,
+-	0x13d0d: 0xe00052bf, 0x13d0e: 0xe0007762,
+-	0x13d11: 0xe0004b42, 0x13d13: 0xe00071b1,
+-	0x13d14: 0xe0005f37, 0x13d15: 0xe00078a0,
+-	0x13d22: 0xe0009318,
+-	0x13d24: 0xe0008077, 0x13d25: 0xe0009f98, 0x13d26: 0xe0003d6c,
+-	0x13d28: 0xe00097e5, 0x13d2a: 0xe00084f4, 0x13d2b: 0xe0005ebb,
+-	0x13d2c: 0xe0007a1c, 0x13d2d: 0xe0008da0,
+-	0x13d30: 0xe0006f24, 0x13d32: 0xe0004157,
+-	0x13d34: 0xe000a2c1, 0x13d37: 0xe0005dd8,
+-	0x13d38: 0xe0006227, 0x13d39: 0xe00084f8, 0x13d3a: 0xe0004de7,
+-	0x13d3d: 0xe00093ff,
+-	// Block 0x4f5, offset 0x13d40
+-	0x13d40: 0xe000984d, 0x13d41: 0xe0006d1b, 0x13d42: 0xe000469c, 0x13d43: 0xe000512a,
+-	0x13d45: 0xe000a351, 0x13d46: 0xe00075b2,
+-	0x13d48: 0xe0009f7c, 0x13d4b: 0xe0009a62,
+-	0x13d4c: 0xe0007e9f, 0x13d4d: 0xe0006c54, 0x13d4f: 0xe0009862,
+-	0x13d50: 0xe000949d, 0x13d51: 0xe000488c,
+-	0x13d54: 0xe000512d, 0x13d55: 0xe00042ec, 0x13d56: 0xe0008518, 0x13d57: 0xe0005288,
+-	0x13d59: 0xe0008462, 0x13d5a: 0xe0009831,
+-	0x13d5d: 0xe0006989, 0x13d5e: 0xe00055eb, 0x13d5f: 0xe0006ccb,
+-	0x13d60: 0xe000891c, 0x13d61: 0xe0008b48, 0x13d62: 0xe0006320, 0x13d63: 0xe000554b,
+-	0x13d6e: 0xe0009261,
+-	0x13d71: 0xe0008ab3, 0x13d72: 0xe0008d30,
+-	0x13d74: 0xe000970f, 0x13d75: 0xe0004a85, 0x13d76: 0xe0007db8,
+-	0x13d78: 0xe0008129,
+-	0x13d7c: 0xe0009ba0, 0x13d7e: 0xe0007e45,
+-	// Block 0x4f6, offset 0x13d80
+-	0x13d81: 0xe00052af, 0x13d82: 0xe0006dd7,
+-	0x13d87: 0xe0007bcf,
+-	0x13d89: 0xe000881c, 0x13d8a: 0xe0007e42, 0x13d8b: 0xe0007c65,
+-	0x13d8d: 0xe000998b, 0x13d8e: 0xe00045c0, 0x13d8f: 0xe000727a,
+-	0x13d90: 0xe0009bc9, 0x13d91: 0xe000a24b, 0x13d92: 0xe0008af5, 0x13d93: 0xe0005130,
+-	0x13d94: 0xe0004f69, 0x13d95: 0xe0007d97,
+-	0x13d98: 0xe000491c, 0x13d99: 0xe0007aa4, 0x13d9b: 0xe0005815,
+-	0x13d9c: 0xe0006ce7, 0x13d9d: 0xe0005005, 0x13d9e: 0xe0009264,
+-	0x13da0: 0xe0007cf9, 0x13da1: 0xe0006c57, 0x13da3: 0xe00041c4,
+-	0x13da8: 0xe00078a3, 0x13da9: 0xe00084fc,
+-	0x13dac: 0xe0006cd3, 0x13dad: 0xe000891f, 0x13dae: 0xe0008e27, 0x13daf: 0xe00052b3,
+-	0x13db2: 0xe0008c70,
+-	0x13db5: 0xe0008b4c, 0x13db6: 0xe0007ad7, 0x13db7: 0xe00090ef,
+-	0x13db8: 0xe0006a77, 0x13dba: 0xe0007e48,
+-	0x13dbc: 0xe0005774, 0x13dbd: 0xe0004094, 0x13dbf: 0xe0009b2e,
+-	// Block 0x4f7, offset 0x13dc0
+-	0x13dc0: 0xe0007aa7, 0x13dc1: 0xe0005ae2, 0x13dc2: 0xe0009d77, 0x13dc3: 0xe0006dda,
+-	0x13dc4: 0xe000a1a3, 0x13dc5: 0xe0008634, 0x13dc7: 0xe0008053,
+-	0x13dc8: 0xe00059d6, 0x13dca: 0xe0006193,
+-	0x13dcc: 0xe00054e9, 0x13dcf: 0xe0005324,
+-	0x13dd0: 0xe000590f, 0x13dd1: 0xe0007f9d,
+-	0x13dd5: 0xe0007931,
+-	0x13dd9: 0xe0005aa2,
+-	0x13de0: 0xe0006656, 0x13de2: 0xe0009f80, 0x13de3: 0xe0004d65,
+-	0x13de6: 0xe0006007,
+-	0x13de8: 0xe000936f, 0x13dea: 0xe0006736,
+-	0x13def: 0xe0003eef,
+-	0x13df0: 0xe00097d3, 0x13df1: 0xe000488f, 0x13df3: 0xe00065e4,
+-	0x13df5: 0xe0006c5a,
+-	0x13df8: 0xe0008465,
+-	0x13dfd: 0xe0004ab2,
+-	// Block 0x4f8, offset 0x13e00
+-	0x13e01: 0xe0007c39, 0x13e03: 0xe0009cf6,
+-	0x13e04: 0xe0004b0a, 0x13e05: 0xe0008db0,
+-	0x13e0a: 0xe00047c0,
+-	0x13e1c: 0xe0004477, 0x13e1d: 0xe0009c0e, 0x13e1e: 0xe000540e,
+-	0x13e21: 0xe0004976, 0x13e22: 0xe0007796,
+-	0x13e28: 0xe00063b0, 0x13e2a: 0xe0009058, 0x13e2b: 0xe00065e7,
+-	0x13e2d: 0xe00045fc, 0x13e2f: 0xe0004fe9,
+-	0x13e34: 0xe0009645, 0x13e35: 0xe0007bd2,
+-	0x13e3d: 0xe0005133,
+-	// Block 0x4f9, offset 0x13e40
+-	0x13e42: 0xe00071de,
+-	0x13e52: 0xe0009402,
+-	0x13e55: 0xe0009dd9,
+-	0x13e59: 0xe0006575,
+-	0x13e5e: 0xe0007f59,
+-	0x13e62: 0xe000750a, 0x13e63: 0xe00083a5,
+-	0x13e67: 0xe00052e7,
+-	0x13e6d: 0xe00087b4,
+-	0x13e70: 0xe0005960, 0x13e71: 0xe00098dc, 0x13e72: 0xe0004f2d,
+-	0x13e74: 0xe000755e,
+-	0x13e7d: 0xe0008638,
+-	// Block 0x4fa, offset 0x13e80
+-	0x13e88: 0xe000551f, 0x13e89: 0xe0007e4b, 0x13e8a: 0xe00087b8, 0x13e8b: 0xe0009405,
+-	0x13e8c: 0xe0008251, 0x13e8d: 0xe000607a, 0x13e8e: 0xe0008ab6,
+-	0x13e92: 0xe0008ab9,
+-	0x13e96: 0xe0009773, 0x13e97: 0xe000a36f,
+-	0x13ea2: 0xe00092d3, 0x13ea3: 0xe0003f33,
+-	0x13ea4: 0xe000447a, 0x13ea5: 0xe0006c9c,
+-	0x13ea9: 0xe0005bdb, 0x13eaa: 0xe0005356,
+-	0x13eac: 0xe0006ddd,
+-	0x13eb2: 0xe0008820,
+-	0x13eb4: 0xe0005166, 0x13eb5: 0xe000a30f, 0x13eb6: 0xe0005afd, 0x13eb7: 0xe000a08c,
+-	0x13eb8: 0xe00067bb, 0x13eb9: 0xe0005750,
+-	// Block 0x4fb, offset 0x13ec0
+-	0x13ec3: 0xe000754a,
+-	0x13ec7: 0xe0006ee8,
+-	0x13ec9: 0xe0009531, 0x13ecb: 0xe00092d6,
+-	0x13ecd: 0xe000885f,
+-	0x13ed0: 0xe000a07b, 0x13ed2: 0xe0006bc7,
+-	0x13edc: 0xe0009408, 0x13ede: 0xe00078fd,
+-	0x13ee2: 0xe0009d98,
+-	0x13eea: 0xe0005792, 0x13eeb: 0xe0007ff3,
+-	0x13eec: 0xe000835d, 0x13eee: 0xe00092d9, 0x13eef: 0xe0009fb5,
+-	0x13ef1: 0xe0005f7f, 0x13ef2: 0xe0004e68,
+-	0x13ef4: 0xe0005640, 0x13ef5: 0xe0004069,
+-	// Block 0x4fc, offset 0x13f00
+-	0x13f00: 0xe0007468, 0x13f01: 0xe000a47e, 0x13f03: 0xe0007027,
+-	0x13f05: 0xe00076d6, 0x13f07: 0xe000900c,
+-	0x13f09: 0xe0007e4e, 0x13f0b: 0xe00069e7,
+-	0x13f0c: 0xe00058e2, 0x13f0d: 0xe0008ba8, 0x13f0e: 0xe00073d6, 0x13f0f: 0xe000547c,
+-	0x13f10: 0xe00058e5, 0x13f11: 0xe0004d4e,
+-	0x13f17: 0xe0006d47,
+-	0x13f18: 0xe00087bc,
+-	0x13f1c: 0xe00063b3, 0x13f1d: 0xe000962d,
+-	0x13f23: 0xe0008922,
+-	0x13f24: 0xe0006827, 0x13f26: 0xe000491f, 0x13f27: 0xe00090f3,
+-	0x13f2a: 0xe0007bd5,
+-	0x13f2d: 0xe0004599,
+-	0x13f35: 0xe000900f,
+-	0x13f3f: 0xe0004b6a,
+-	// Block 0x4fd, offset 0x13f40
+-	0x13f47: 0xe0006407,
+-	0x13f4d: 0xe00052b7,
+-	0x13f50: 0xe000413f, 0x13f51: 0xe00098fb, 0x13f52: 0xe0006837,
+-	0x13f54: 0xe000931b, 0x13f57: 0xe0007ee1,
+-	0x13f5c: 0xe000a2e6, 0x13f5e: 0xe0004ad2, 0x13f5f: 0xe0008982,
+-	0x13f74: 0xe00055ef, 0x13f75: 0xe000622b, 0x13f77: 0xe000447d,
+-	0x13f78: 0xe0005f9b, 0x13f7a: 0xe00078c5,
+-	0x13f7f: 0xe00085a4,
+-	// Block 0x4fe, offset 0x13f80
+-	0x13f80: 0xe0003f4b, 0x13f81: 0xe0008d60,
+-	0x13f85: 0xe0004097,
+-	0x13f89: 0xe0009e9c, 0x13f8b: 0xe0009a86,
+-	0x13f8e: 0xe0006937, 0x13f8f: 0xe00069b0,
+-	0x13f90: 0xe0006a03, 0x13f92: 0xe0008af8,
+-	0x13f97: 0xe0004224,
+-	0x13f9b: 0xe0007636,
+-	0x13f9e: 0xe0007d49,
+-	0x13fa2: 0xe0005f83,
+-	0x13fa4: 0xe0004892, 0x13fa5: 0xe0006f28, 0x13fa6: 0xe00087c0,
+-	0x13fb7: 0xe000a100,
+-	0x13fb8: 0xe00047f9,
+-	0x13fbc: 0xe0006233, 0x13fbe: 0xe0005c5d,
+-	// Block 0x4ff, offset 0x13fc0
+-	0x13fc0: 0xe0007f25, 0x13fc3: 0xe000939b,
+-	0x13fc5: 0xe000522c,
+-	0x13fcb: 0xe0008165,
+-	0x13fd1: 0xe0006a7b, 0x13fd3: 0xe00085a8,
+-	0x13fd5: 0xe000918b, 0x13fd6: 0xe0006de0,
+-	0x13fd8: 0xe0005bdf, 0x13fd9: 0xe00045ea, 0x13fda: 0xe0008985, 0x13fdb: 0xe0006b53,
+-	0x13fdc: 0xe0009ca2,
+-	0x13ff3: 0xe00077d1,
+-	0x13ff6: 0xe0004895, 0x13ff7: 0xe0006c5d,
+-	0x13ff9: 0xe0006de3,
+-	// Block 0x500, offset 0x14000
+-	0x14006: 0xe0007eed,
+-	0x1400c: 0xe00087c4, 0x1400f: 0xe0009f18,
+-	0x14011: 0xe000863c, 0x14012: 0xe0006324,
+-	0x14017: 0xe0009ecc,
+-	0x1401f: 0xe0009649,
+-	0x14024: 0xe000698c, 0x14025: 0xe0008824,
+-	0x1402a: 0xe0009a65,
+-	0x14032: 0xe000622f,
+-	0x14038: 0xe000409a, 0x14039: 0xe0008fda, 0x1403a: 0xe0007d31,
+-	0x1403c: 0xe0003fab, 0x1403d: 0xe0008988,
+-	// Block 0x501, offset 0x14040
+-	0x14044: 0xe00056b9, 0x14046: 0xe0008fde,
+-	0x1404f: 0xe00071b4,
+-	0x14050: 0xe000940b,
+-	0x14055: 0xe0004501,
+-	0x14058: 0xe000940e, 0x14059: 0xe00095cf, 0x1405a: 0xe0008406,
+-	0x1405e: 0xe0006eec, 0x1405f: 0xe0004fc1,
+-	0x14060: 0xe00087c8, 0x14061: 0xe0004cae, 0x14062: 0xe00085ac, 0x14063: 0xe000918f,
+-	0x14064: 0xe0004cb1, 0x14066: 0xe0004ba2, 0x14067: 0xe0004678,
+-	0x14068: 0xe0005ce4, 0x1406a: 0xe0008640, 0x1406b: 0xe00069eb,
+-	0x1406c: 0xe0005268, 0x1406e: 0xe0004423, 0x1406f: 0xe0008e52,
+-	// Block 0x502, offset 0x14080
+-	0x14088: 0xe0007766, 0x14089: 0xe000702a, 0x1408a: 0xe000554f, 0x1408b: 0xe00045c3,
+-	0x1408d: 0xe0005136,
+-	0x14094: 0xe00071e2, 0x14097: 0xe0008895,
+-	0x1409b: 0xe0004f31,
+-	0x1409c: 0xe0009be7, 0x1409d: 0xe0007c11,
+-	0x140a4: 0xe000684f,
+-	0x140ab: 0xe000931e,
+-	0x140ac: 0xe0009321, 0x140ae: 0xe0007e51,
+-	0x140b0: 0xe000a1d3,
+-	0x140b5: 0xe00040ef,
+-	0x140bc: 0xe0009631, 0x140be: 0xe00089fc,
+-	// Block 0x503, offset 0x140c0
+-	0x140ca: 0xe000603b,
+-	0x140cc: 0xe0004228,
+-	0x140d4: 0xe0007b51, 0x140d6: 0xe0006d38, 0x140d7: 0xe0008416,
+-	0x140da: 0xe0009411, 0x140db: 0xe0005ed3,
+-	0x140df: 0xe00068ef,
+-	0x140e1: 0xe0008217, 0x140e3: 0xe0009f84,
+-	0x140e4: 0xe000a26f, 0x140e7: 0xe000402e,
+-	0x140ec: 0xe000a045, 0x140ed: 0xe0008d34,
+-	0x140f0: 0xe000812d,
+-	// Block 0x504, offset 0x14100
+-	0x14103: 0xe00089a0,
+-	0x14107: 0xe0006abb,
+-	0x14108: 0xe0005563, 0x1410a: 0xe00078a6, 0x1410b: 0xe0005a46,
+-	0x1410c: 0xe00059de,
+-	0x14111: 0xe0008500,
+-	0x14116: 0xe00078a9, 0x14117: 0xe0004065,
+-	0x14118: 0xe00083a9,
+-	0x1411c: 0xe0005069, 0x1411d: 0xe0005a4a, 0x1411e: 0xe0007b55, 0x1411f: 0xe00067e7,
+-	0x14121: 0xe00042f0, 0x14122: 0xe0009aeb,
+-	0x14124: 0xe00057c7, 0x14126: 0xe00093a7,
+-	0x14128: 0xe0008f36,
+-	0x14136: 0xe0008dd4,
+-	0x1413b: 0xe0005964,
+-	// Block 0x505, offset 0x14140
+-	0x14143: 0xe0004e87,
+-	0x14144: 0xe000a2de,
+-	0x1414f: 0xe0008b80,
+-	0x14150: 0xe0005795, 0x14153: 0xe00050b8,
+-	0x14154: 0xe0007148,
+-	0x14158: 0xe0008a00, 0x14159: 0xe000530b,
+-	0x14165: 0xe0006a7f,
+-	0x1416a: 0xe0005697, 0x1416b: 0xe00085b0,
+-	0x14175: 0xe000916f, 0x14176: 0xe000a1d7,
+-	0x14178: 0xe00096eb, 0x1417a: 0xe000506d,
+-	// Block 0x506, offset 0x14180
+-	0x14182: 0xe000a3b1,
+-	0x14184: 0xe0008abc,
+-	0x1418a: 0xe000a167,
+-	0x1418c: 0xe000665a,
+-	0x14191: 0xe0003ef3, 0x14192: 0xe0003ef7,
+-	0x14195: 0xe0008db4,
+-	0x1419b: 0xe00046e8,
+-	0x1419e: 0xe00053ee,
+-	0x141a0: 0xe000678f, 0x141a2: 0xe00054ec, 0x141a3: 0xe0009aee,
+-	0x141aa: 0xe000569a,
+-	0x141b0: 0xe0007408, 0x141b1: 0xe0008f3a, 0x141b2: 0xe0007494,
+-	0x141b5: 0xe000467c, 0x141b7: 0xe0006b7b,
+-	0x141bc: 0xe0005339, 0x141bd: 0xe0008e9a, 0x141be: 0xe000539a, 0x141bf: 0xe0008e56,
+-	// Block 0x507, offset 0x141c0
+-	0x141f7: 0xe0008361,
+-	// Block 0x508, offset 0x14200
+-	0x14200: 0xe0005d78, 0x14203: 0xe0006b37,
+-	0x14208: 0xe0009c62, 0x14209: 0xe0009a0b, 0x1420a: 0xe00067eb, 0x1420b: 0xe0004031,
+-	0x1420e: 0xe000477d, 0x1420f: 0xe0007ee5,
+-	0x14211: 0xe0009c3e, 0x14212: 0xe0009c42, 0x14213: 0xe0003e3f,
+-	0x14214: 0xe0005e3b,
+-	0x14218: 0xe0003f4f,
+-	0x1421f: 0xe00065ea,
+-	0x14223: 0xe0003dc7,
+-	0x14224: 0xe0009cd2, 0x14225: 0xe00060f7,
+-	0x14228: 0xe0004a88, 0x14229: 0xe0005e5b, 0x1422b: 0xe0004505,
+-	0x1422c: 0xe0005426, 0x1422d: 0xe00054bf,
+-	0x14231: 0xe0007686,
+-	0x14236: 0xe0008fe2,
+-	0x14239: 0xe000754e, 0x1423b: 0xe00076aa,
+-	0x1423c: 0xe0007262, 0x1423d: 0xe000a0b8, 0x1423e: 0xe00075c6,
+-	// Block 0x509, offset 0x14240
+-	0x14243: 0xe0004190,
+-	0x14247: 0xe00072a2,
+-	0x14248: 0xe0007dbb, 0x1424a: 0xe000a1ef, 0x1424b: 0xe0004210,
+-	0x1424c: 0xe000539e, 0x1424d: 0xe0005169,
+-	0x14253: 0xe0004046,
+-	0x14254: 0xe0009cd6, 0x14255: 0xe0004a12, 0x14256: 0xe0009881,
+-	0x1425a: 0xe0004ab5,
+-	0x1425c: 0xe000464c, 0x1425e: 0xe0009cbe,
+-	0x14260: 0xe0004a49, 0x14261: 0xe00090f7, 0x14262: 0xe000615f,
+-	0x14265: 0xe0004f75,
+-	// Block 0x50a, offset 0x14280
+-	0x1429c: 0xe00063b6,
+-	0x142a1: 0xe00090fb,
+-	0x142a4: 0xe00095d2,
+-	0x142a8: 0xe0007397, 0x142aa: 0xe00098ff,
+-	0x142ae: 0xe00079d4, 0x142af: 0xe0008c97,
+-	0x142b2: 0xe000600b,
+-	0x142bb: 0xe0008925,
+-	0x142bf: 0xe000718a,
+-	// Block 0x50b, offset 0x142c0
+-	0x142c0: 0xe0009687, 0x142c2: 0xe0009b31,
+-	0x142c4: 0xe00063b9,
+-	0x142cb: 0xe00057ca,
+-	0x142cc: 0xe0005b0b, 0x142cd: 0xe0003faf,
+-	0x142d0: 0xe0009c46,
+-	0x142d8: 0xe0009f9c, 0x142db: 0xe0009a0e,
+-	0x142dc: 0xe0009cda, 0x142dd: 0xe0006b3b, 0x142de: 0xe0006f9d, 0x142df: 0xe000908b,
+-	0x142e1: 0xe00052a0, 0x142e2: 0xe0007cfd, 0x142e3: 0xe0008d38,
+-	0x142e4: 0xe0008862,
+-	0x142ea: 0xe000607d,
+-	0x142ec: 0xe0009450,
+-	0x142f0: 0xe0007f75, 0x142f2: 0xe0006e37, 0x142f3: 0xe0008d3c,
+-	0x142f4: 0xe00065ed, 0x142f5: 0xe0005897, 0x142f6: 0xe0005139, 0x142f7: 0xe0009ca6,
+-	0x142f8: 0xe0005823,
+-	0x142fc: 0xe00084a1, 0x142fd: 0xe000746c,
+-	// Block 0x50c, offset 0x14300
+-	0x14304: 0xe0008898, 0x14305: 0xe0007bd8, 0x14306: 0xe000585b,
+-	0x1430a: 0xe00050a3, 0x1430b: 0xe0006de6,
+-	0x1430d: 0xe000a24f, 0x1430e: 0xe0004396,
+-	0x14311: 0xe0004d23,
+-	0x14314: 0xe0004184, 0x14315: 0xe0007c69, 0x14317: 0xe0007a56,
+-	0x14318: 0xe000732d, 0x14319: 0xe0004afa, 0x1431b: 0xe0008865,
+-	0x1431c: 0xe0008365,
+-	0x14323: 0xe0005930,
+-	0x14324: 0xe0009853, 0x14327: 0xe0006de9,
+-	0x14328: 0xe0006dec, 0x14329: 0xe00078ac, 0x1432a: 0xe0009e20,
+-	0x14330: 0xe0006f75, 0x14331: 0xe0007f29, 0x14333: 0xe000a421,
+-	0x14334: 0xe0005715, 0x14336: 0xe000807a, 0x14337: 0xe0005643,
+-	0x14338: 0xe0005646, 0x14339: 0xe0009453, 0x1433b: 0xe000908f,
+-	0x1433c: 0xe0008b84,
+-	// Block 0x50d, offset 0x14340
+-	0x14340: 0xe0008255, 0x14341: 0xe0007236,
+-	0x14344: 0xe0007c9d, 0x14345: 0xe000718d, 0x14346: 0xe0008dd8, 0x14347: 0xe0004426,
+-	0x14349: 0xe00095a2, 0x1434b: 0xe0008b50,
+-	0x1434c: 0xe00081d8, 0x1434d: 0xe0007935, 0x1434e: 0xe0008468,
+-	0x14355: 0xe0008928, 0x14356: 0xe0006def,
+-	0x14359: 0xe000715c, 0x1435a: 0xe0004680, 0x1435b: 0xe0009414,
+-	0x1435c: 0xe00082c1, 0x1435d: 0xe0007959, 0x1435e: 0xe00043ba,
+-	0x14362: 0xe00058e8, 0x14363: 0xe0004d83,
+-	0x14368: 0xe0007bdb, 0x14369: 0xe0007bde, 0x1436a: 0xe0006af7,
+-	0x1436f: 0xe0005d7c,
+-	0x14370: 0xe000645f, 0x14372: 0xe0007c6d,
+-	0x14376: 0xe00055f3, 0x14377: 0xe0005732,
+-	0x14379: 0xe0005ebf, 0x1437a: 0xe0005cbb, 0x1437b: 0xe00085b4,
+-	// Block 0x50e, offset 0x14380
+-	0x14380: 0xe0006df2,
+-	0x14384: 0xe0006c9f, 0x14385: 0xe0006853, 0x14386: 0xe00087cc, 0x14387: 0xe0008d40,
+-	0x14388: 0xe0009945, 0x14389: 0xe0005b00,
+-	0x1438c: 0xe0008afb, 0x1438d: 0xe000460c, 0x1438e: 0xe0006857, 0x1438f: 0xe00065f0,
+-	0x14391: 0xe00086a8, 0x14393: 0xe00077d4,
+-	0x14394: 0xe0008afe, 0x14396: 0xe000597c,
+-	0x14399: 0xe000776a,
+-	0x1439c: 0xe00068d3, 0x1439e: 0xe0009bcc,
+-	0x143a3: 0xe0007c85,
+-	0x143a6: 0xe000665e, 0x143a7: 0xe0005d2f,
+-	0x143aa: 0xe0007f91,
+-	0x143b0: 0xe00067bf, 0x143b2: 0xe0005673,
+-	0x143b8: 0xe0009948, 0x143b9: 0xe0006163,
+-	0x143bd: 0xe0008868,
+-	// Block 0x50f, offset 0x143c0
+-	0x143c2: 0xe0005507,
+-	0x143c4: 0xe0007330, 0x143c6: 0xe0009285,
+-	0x143c8: 0xe00055f7, 0x143c9: 0xe0007369,
+-	0x143cc: 0xe0006273,
+-	0x143d1: 0xe0009237,
+-	0x143d6: 0xe00087d0,
+-	0x143da: 0xe0008828, 0x143db: 0xe0008644,
+-	0x143dc: 0xe00087d4, 0x143dd: 0xe0009147, 0x143de: 0xe0006578,
+-	0x143e0: 0xe0004480, 0x143e1: 0xe0005ddb, 0x143e2: 0xe0005b7f,
+-	0x143e6: 0xe0008648,
+-	0x143e8: 0xe00076fe, 0x143e9: 0xe0009e40,
+-	0x143ed: 0xe00080dd,
+-	0x143f3: 0xe0004b6e,
+-	0x143f4: 0xe000a12f, 0x143f5: 0xe0004ea9, 0x143f7: 0xe00080e1,
+-	0x143fa: 0xe0005a6a,
+-	0x143fc: 0xe0004f79,
+-	// Block 0x510, offset 0x14400
+-	0x14400: 0xe000516c, 0x14401: 0xe0009b3a,
+-	0x14404: 0xe0009a89, 0x14405: 0xe000730e,
+-	0x1440b: 0xe0009fb8,
+-	0x1440d: 0xe000723a, 0x1440f: 0xe000456d,
+-	0x14418: 0xe0009324,
+-	0x14420: 0xe0004946, 0x14423: 0xe0007ea2,
+-	0x14426: 0xe0009456,
+-	0x14428: 0xe0003e93, 0x1442b: 0xe000494a,
+-	0x1442c: 0xe000410b, 0x1442d: 0xe000998f,
+-	0x14431: 0xe000516f,
+-	0x14434: 0xe00065f3,
+-	0x14438: 0xe0009b8c, 0x14439: 0xe0004610,
+-	// Block 0x511, offset 0x14440
+-	0x14441: 0xe0003ff7, 0x14443: 0xe0004f7d,
+-	0x14446: 0xe00090ff,
+-	0x1444b: 0xe0007d9a,
+-	0x1444d: 0xe00064d3,
+-	0x14450: 0xe0003f53, 0x14453: 0xe0009c4a,
+-	0x14459: 0xe0007dbe,
+-	0x1445c: 0xe000513c, 0x1445d: 0xe0004922, 0x1445e: 0xe0007901,
+-	0x14460: 0xe0009b90, 0x14461: 0xe0007dc1,
+-	0x1446d: 0xe0004925, 0x1446e: 0xe0004928,
+-	0x14471: 0xe0006b57, 0x14472: 0xe000889b, 0x14473: 0xe0007f79,
+-	0x14475: 0xe0007c89, 0x14476: 0xe0006c60,
+-	0x1447a: 0xe000779a, 0x1447b: 0xe0007c71,
+-	0x1447f: 0xe0009ddd,
+-	// Block 0x512, offset 0x14480
+-	0x14480: 0xe000a048, 0x14481: 0xe0009ee0, 0x14482: 0xe00087d8, 0x14483: 0xe00042f4,
+-	0x14485: 0xe0009d32, 0x14486: 0xe0006ef0,
+-	0x14488: 0xe0006df5, 0x1448a: 0xe0007c3d,
+-	0x1448c: 0xe0006d1f, 0x1448d: 0xe0004ab8, 0x1448e: 0xe0004d26, 0x1448f: 0xe0009d46,
+-	0x14490: 0xe00077d7, 0x14491: 0xe00079d8, 0x14492: 0xe0005f3b, 0x14493: 0xe00051cc,
+-	0x14496: 0xe0005f5f, 0x14497: 0xe00098b2,
+-	0x14498: 0xe00055fb,
+-	0x1449e: 0xe000727e,
+-	0x144a1: 0xe000a547, 0x144a3: 0xe00070f4,
+-	0x144a6: 0xe0009d9b,
+-	0x144ab: 0xe000640a,
+-	0x144ad: 0xe000528b, 0x144ae: 0xe000a2c4,
+-	0x144b0: 0xe0009f1c,
+-	0x144b7: 0xe00072c6,
+-	0x144b8: 0xe00042f8, 0x144b9: 0xe0009850, 0x144bb: 0xe0006636,
+-	0x144bf: 0xe000821a,
+-	// Block 0x513, offset 0x144c0
+-	0x144c2: 0xe0005753,
+-	0x144c6: 0xe00045c6, 0x144c7: 0xe000950d,
+-	0x144c8: 0xe0004338, 0x144cb: 0xe000702d,
+-	0x144cc: 0xe000886b, 0x144cd: 0xe0007387, 0x144ce: 0xe00071e6,
+-	0x144d2: 0xe000795d, 0x144d3: 0xe000864c,
+-	0x144d4: 0xe000723e,
+-	0x144d8: 0xe0007d01, 0x144d9: 0xe00068f3, 0x144da: 0xe00085b8,
+-	0x144de: 0xe0005809,
+-	0x144e5: 0xe000a04b, 0x144e6: 0xe0009327, 0x144e7: 0xe0004429,
+-	0x144eb: 0xe00085bc,
+-	0x144ef: 0xe0009ea0,
+-	0x144f0: 0xe0006662, 0x144f1: 0xe000569d, 0x144f3: 0xe0006b7f,
+-	0x144f4: 0xe0004684,
+-	// Block 0x514, offset 0x14500
+-	0x14528: 0xe0009b0f,
+-	0x1452d: 0xe00086d8, 0x1452f: 0xe000683b,
+-	0x14531: 0xe00097d6, 0x14532: 0xe000558f,
+-	0x14536: 0xe000492b,
+-	0x1453a: 0xe0007498,
+-	0x1453c: 0xe0006e3a, 0x1453f: 0xe000612f,
+-	// Block 0x515, offset 0x14540
+-	0x14542: 0xe0005798,
+-	0x14544: 0xe0009aca, 0x14547: 0xe0009ac7,
+-	0x14549: 0xe000579b, 0x1454b: 0xe0007110,
+-	0x1455b: 0xe000657b,
+-	0x1455c: 0xe00060d3, 0x1455f: 0xe0007064,
+-	0x14561: 0xe0006ceb, 0x14562: 0xe0004cb4,
+-	0x14566: 0xe0008650, 0x14567: 0xe0006cef,
+-	0x1456a: 0xe0008169, 0x1456b: 0xe00074c7,
+-	0x1456d: 0xe00095e9, 0x1456e: 0xe0007f7d, 0x1456f: 0xe0005f3f,
+-	0x14571: 0xe0006cf3,
+-	0x14574: 0xe0008056,
+-	0x1457b: 0xe0009193,
+-	0x1457c: 0xe0006739, 0x1457d: 0xe0009a68, 0x1457e: 0xe0007068,
+-	// Block 0x516, offset 0x14580
+-	0x14583: 0xe00047c3,
+-	0x14589: 0xe0009de1, 0x1458a: 0xe0007470,
+-	0x1458c: 0xe0008059,
+-	0x14590: 0xe0008e9e, 0x14592: 0xe0004e72, 0x14593: 0xe0007190,
+-	0x14594: 0xe0009a8c, 0x14595: 0xe0008b88,
+-	0x14598: 0xe0007590, 0x1459a: 0xe000a32a,
+-	0x1459e: 0xe00085c0,
+-	0x145a0: 0xe000620f,
+-	0x145a6: 0xe00083ad, 0x145a7: 0xe0007dc4,
+-	0x145a8: 0xe0004650, 0x145aa: 0xe0004d93,
+-	0x145ac: 0xe000a07e, 0x145ae: 0xe0009197,
+-	0x145b0: 0xe0008654, 0x145b1: 0xe000a372, 0x145b3: 0xe0005071,
+-	0x145b9: 0xe0005075,
+-	0x145bc: 0xe000a534, 0x145bd: 0xe0004a4c,
+-	// Block 0x517, offset 0x145c0
+-	0x145c2: 0xe0007905,
+-	0x145c5: 0xe0005a26,
+-	0x145c8: 0xe0006e3d, 0x145c9: 0xe0004b46, 0x145cb: 0xe0004a25,
+-	0x145cc: 0xe0008ea2, 0x145cd: 0xe0006a83,
+-	0x145d0: 0xe0008011, 0x145d1: 0xe0004cb7, 0x145d2: 0xe0007aaa,
+-	0x145d4: 0xe0007939, 0x145d5: 0xe0005172, 0x145d7: 0xe0009de5,
+-	0x145dc: 0xe00076da, 0x145de: 0xe0008f3e,
+-	// Block 0x518, offset 0x14600
+-	0x14616: 0xe0006df8, 0x14617: 0xe0004abb,
+-	0x14618: 0xe000475d, 0x14619: 0xe0009de9,
+-	0x1461d: 0xe0009b68,
+-	0x14623: 0xe00072ca,
+-	0x14625: 0xe00062b8,
+-	0x14628: 0xe0009f88,
+-	0x1462c: 0xe00059a7, 0x1462d: 0xe00074b5, 0x1462e: 0xe0009b13,
+-	0x14630: 0xe000851c, 0x14631: 0xe000968a, 0x14633: 0xe00095a5,
+-	0x14634: 0xe0006ef4,
+-	0x14639: 0xe0008131,
+-	// Block 0x519, offset 0x14640
+-	0x14641: 0xe0005ec3,
+-	0x14644: 0xe00097e8,
+-	0x14648: 0xe000492e, 0x14649: 0xe0004348,
+-	0x1464f: 0xe00040c4,
+-	0x14650: 0xe0008abf, 0x14651: 0xe0004e3b, 0x14652: 0xe0004898,
+-	0x14655: 0xe0003d6f,
+-	0x14658: 0xe00097eb, 0x14659: 0xe00063bc, 0x1465b: 0xe000676f,
+-	0x1465c: 0xe0009b94, 0x1465d: 0xe000968d, 0x1465e: 0xe00096ab, 0x1465f: 0xe000673c,
+-	0x14662: 0xe00061af,
+-	0x14668: 0xe0006f10, 0x1466a: 0xe00070f8,
+-	0x1466d: 0xe0009d7a, 0x1466e: 0xe0005ed7,
+-	0x14671: 0xe000535a,
+-	0x14678: 0xe000964d, 0x1467b: 0xe0009c66,
+-	0x1467d: 0xe0009ed0, 0x1467f: 0xe0008b54,
+-	// Block 0x51a, offset 0x14680
+-	0x14681: 0xe000667a, 0x14682: 0xe0006bcf, 0x14683: 0xe000736c,
+-	0x14684: 0xe00056dd, 0x14685: 0xe0009459,
+-	0x14688: 0xe0006213, 0x1468b: 0xe0005439,
+-	0x1468d: 0xe00045ed, 0x1468e: 0xe0004cba, 0x1468f: 0xe0004cbd,
+-	0x14691: 0xe00065f6,
+-	0x14696: 0xe0005d41,
+-	0x14698: 0xe00093ab, 0x14699: 0xe0009993, 0x1469b: 0xe00065f9,
+-	0x146ab: 0xe00040f3,
+-	0x146ad: 0xe0008bc0,
+-	0x146b0: 0xe00052eb,
+-	0x146b5: 0xe0007d35, 0x146b6: 0xe0009417, 0x146b7: 0xe0006c63,
+-	0x146b8: 0xe0006abf,
+-	0x146be: 0xe000533c,
+-	// Block 0x51b, offset 0x146c0
+-	0x146c0: 0xe0005b0f, 0x146c1: 0xe00078af, 0x146c2: 0xe0008f42, 0x146c3: 0xe0009acd,
+-	0x146c4: 0xe00093af, 0x146c5: 0xe000489b,
+-	0x146ca: 0xe000a141,
+-	0x146cc: 0xe0006e84, 0x146cd: 0xe000a312, 0x146ce: 0xe0005968, 0x146cf: 0xe0008299,
+-	0x146d2: 0xe000974b,
+-	0x146d5: 0xe00047c6, 0x146d7: 0xe0009e24,
+-	0x146d8: 0xe000533f, 0x146da: 0xe00042fc, 0x146db: 0xe00075b6,
+-	0x146df: 0xe0009534,
+-	0x146e2: 0xe00054c2,
+-	0x146e4: 0xe000749c, 0x146e5: 0xe0004cc0,
+-	0x146e9: 0xe000a1a7, 0x146ea: 0xe00054c5,
+-	// Block 0x51c, offset 0x14700
+-	0x14728: 0xe000451d, 0x1472a: 0xe0007dc7,
+-	0x14730: 0xe000986e,
+-	0x14738: 0xe0009d7d, 0x14739: 0xe00047fc,
+-	0x1473c: 0xe0004194, 0x1473f: 0xe00061b3,
+-	// Block 0x51d, offset 0x14740
+-	0x14740: 0xe00065fc,
+-	0x14746: 0xe0005edb,
+-	0x1474f: 0xe00057df,
+-	0x14751: 0xe000935f, 0x14753: 0xe0006dfb,
+-	0x14754: 0xe0009267, 0x14756: 0xe0004688, 0x14757: 0xe00056a0,
+-	0x14758: 0xe000442c,
+-	0x1475f: 0xe0009af1,
+-	0x14761: 0xe0004509, 0x14763: 0xe000603f,
+-	0x14765: 0xe00076ae, 0x14766: 0xe0005c60,
+-	0x1476b: 0xe000932a,
+-	0x1476d: 0xe000821d, 0x1476e: 0xe0005f87,
+-	0x14770: 0xe0009288, 0x14772: 0xe0009b3d,
+-	0x14774: 0xe00064d7,
+-	0x14779: 0xe000a424, 0x1477a: 0xe00046b0, 0x1477b: 0xe00043bd,
+-	0x1477d: 0xe0008a44,
+-	// Block 0x51e, offset 0x14780
+-	0x14782: 0xe0006666,
+-	0x14785: 0xe00064ff, 0x14786: 0xe0006d2b,
+-	0x1478a: 0xe0006f14, 0x1478b: 0xe0008658,
+-	0x1478d: 0xe000a081,
+-	0x14790: 0xe0004d29, 0x14792: 0xe0008d64,
+-	0x14796: 0xe000682b,
+-	0x14798: 0xe0005a4e, 0x14799: 0xe0006fa5, 0x1479a: 0xe0006dfe,
+-	0x1479f: 0xe000a1db,
+-	0x147a2: 0xe000666a, 0x147a3: 0xe00055bb,
+-	0x147a7: 0xe0005777,
+-	0x147a8: 0xe000a104, 0x147a9: 0xe0009e50, 0x147aa: 0xe0009865,
+-	0x147ae: 0xe0004931, 0x147af: 0xe0008fe6,
+-	0x147b1: 0xe0007c91, 0x147b2: 0xe0004198,
+-	0x147ba: 0xe00068f7,
+-	0x147bc: 0xe0004a5b,
+-	// Block 0x51f, offset 0x147c0
+-	0x147c1: 0xe0004745, 0x147c2: 0xe000a0a4, 0x147c3: 0xe0005f8b,
+-	0x147c4: 0xe00060ab, 0x147c5: 0xe0005ae5,
+-	0x147c8: 0xe0006ca2, 0x147cb: 0xe000945c,
+-	0x147cd: 0xe0005aba, 0x147ce: 0xe0005494, 0x147cf: 0xe0007d9d,
+-	0x147d1: 0xe0005912,
+-	0x147d4: 0xe00059aa,
+-	0x147d8: 0xe00076de, 0x147da: 0xe00074b8,
+-	0x147e6: 0xe0006772,
+-	0x147ef: 0xe0005676,
+-	0x147f4: 0xe0006043,
+-	// Block 0x520, offset 0x14800
+-	0x14800: 0xe00096ae, 0x14803: 0xe00099ef,
+-	0x1480e: 0xe00086ac,
+-	0x14811: 0xe0009a6b, 0x14812: 0xe000640d, 0x14813: 0xe0008220,
+-	0x14817: 0xe000526c,
+-	0x1481f: 0xe0007242,
+-	0x14827: 0xe000889e,
+-	0x14828: 0xe0008c9a, 0x1482a: 0xe0007ea5, 0x1482b: 0xe00047c9,
+-	0x1482d: 0xe0009d9e, 0x1482e: 0xe0006a87,
+-	0x14839: 0xe0006ca5,
+-	// Block 0x521, offset 0x14840
+-	0x14841: 0xe000434c,
+-	0x14846: 0xe0009a8f,
+-	0x14849: 0xe00058eb, 0x1484a: 0xe0006775,
+-	0x14854: 0xe00095d5, 0x14856: 0xe000923b,
+-	0x1485b: 0xe000898b,
+-	0x14862: 0xe000780a,
+-	0x14864: 0xe00044dd,
+-	0x14868: 0xe0004300,
+-	0x14877: 0xe00088a1,
+-	// Block 0x522, offset 0x14880
+-	0x14888: 0xe0008700, 0x1488a: 0xe0005567,
+-	0x1488c: 0xe000945f, 0x1488d: 0xe000941a,
+-	0x14890: 0xe00071ea, 0x14892: 0xe00062bc, 0x14893: 0xe0006904,
+-	0x14895: 0xe0009bcf,
+-	0x148a4: 0xe0006778, 0x148a5: 0xe000a1ab,
+-	0x148ad: 0xe0004d2c, 0x148ae: 0xe0007909, 0x148af: 0xe000740c,
+-	0x148b1: 0xe000556b, 0x148b2: 0xe0007864,
+-	0x148b5: 0xe0005e5f,
+-	0x148b9: 0xe00041ec, 0x148ba: 0xe0006ca8, 0x148bb: 0xe0005a2a,
+-	0x148be: 0xe0009af4,
+-	// Block 0x523, offset 0x148c0
+-	0x148c7: 0xe0003fb3,
+-	0x148c9: 0xe00061c3,
+-	0x148cf: 0xe000714c,
+-	0x148d2: 0xe0008b8c, 0x148d3: 0xe0006ac3,
+-	0x148d7: 0xe0005934,
+-	0x148e0: 0xe000a2c7, 0x148e3: 0xe000865c,
+-	0x148e7: 0xe0005649,
+-	0x148f8: 0xe00056a3, 0x148fb: 0xe0006ac7,
+-	// Block 0x524, offset 0x14900
+-	0x14925: 0xe000892b, 0x14926: 0xe0007f65, 0x14927: 0xe00063bf,
+-	0x14929: 0xe000489e,
+-	0x14933: 0xe0006328,
+-	0x14934: 0xe0005be3, 0x14936: 0xe000763a,
+-	// Block 0x525, offset 0x14940
+-	0x14943: 0xe000419c,
+-	0x14946: 0xe0008dc0, 0x14947: 0xe0006276,
+-	0x14948: 0xe0007252, 0x14949: 0xe0007193,
+-	0x1494c: 0xe0006340,
+-	0x14952: 0xe000562f,
+-	0x14955: 0xe00096b1,
+-	0x14958: 0xe00061b7, 0x14959: 0xe00095d8, 0x1495b: 0xe0007d05,
+-	0x1495f: 0xe00095db,
+-	0x14963: 0xe0004483,
+-	0x14966: 0xe00072fa,
+-	0x14968: 0xe00072de,
+-	0x14970: 0xe00046b4,
+-	0x14976: 0xe0007282,
+-	0x1497b: 0xe000a0f0,
+-	// Block 0x526, offset 0x14980
+-	0x14981: 0xe00047ff, 0x14982: 0xe000a427,
+-	0x14984: 0xe00095de,
+-	0x14991: 0xe00041c8, 0x14993: 0xe0005f9f,
+-	0x14994: 0xe0008b90,
+-	0x1499d: 0xe0007196, 0x1499e: 0xe00071b7,
+-	0x149a0: 0xe00044a1, 0x149a1: 0xe0005d32,
+-	0x149a9: 0xe00062e0,
+-	0x149ac: 0xe00064f3, 0x149af: 0xe0009b98,
+-	0x149b0: 0xe000898e, 0x149b2: 0xe0008259,
+-	0x149b7: 0xe0007d39,
+-	0x149bb: 0xe0009462,
+-	0x149be: 0xe000450d,
+-	// Block 0x527, offset 0x149c0
+-	0x149c4: 0xe000924b,
+-	0x149c9: 0xe0006f18,
+-	0x149d6: 0xe0009465,
+-	0x149da: 0xe0007216,
+-	0x149e1: 0xe0003eab,
+-	0x149e4: 0xe0004511,
+-	0x149e9: 0xe0005c7b,
+-	0x149ec: 0xe0008fea, 0x149ef: 0xe00073a3,
+-	0x149f4: 0xe0009bfa, 0x149f5: 0xe0009468,
+-	0x149f8: 0xe0007410, 0x149f9: 0xe0005818, 0x149fb: 0xe000452d,
+-	0x149ff: 0xe0008223,
+-	// Block 0x528, offset 0x14a00
+-	0x14a01: 0xe000809d, 0x14a02: 0xe0007ada,
+-	0x14a04: 0xe0004399, 0x14a07: 0xe0004934,
+-	0x14a13: 0xe0008226,
+-	0x14a16: 0xe000780d, 0x14a17: 0xe00048a1,
+-	0x14a19: 0xe0008c9d,
+-	0x14a26: 0xe000932d,
+-	0x14a29: 0xe00061cf, 0x14a2a: 0xe00073b7, 0x14a2b: 0xe0006e88,
+-	0x14a30: 0xe0007676, 0x14a31: 0xe0004486, 0x14a32: 0xe0009537, 0x14a33: 0xe0009c6a,
+-	0x14a38: 0xe000a432, 0x14a39: 0xe0007fb9, 0x14a3a: 0xe0005679,
+-	0x14a3d: 0xe0009c12, 0x14a3f: 0xe0006177,
+-	// Block 0x529, offset 0x14a40
+-	0x14a47: 0xe0008660,
+-	0x14a4f: 0xe0005cbf,
+-	0x14a55: 0xe00056a6,
+-	0x14a5a: 0xe00073a7, 0x14a5b: 0xe000468c,
+-	0x14a5c: 0xe0004937, 0x14a5e: 0xe0005382,
+-	// Block 0x52a, offset 0x14a80
+-	0x14ab5: 0xe000567c, 0x14ab7: 0xe0005633,
+-	0x14ab9: 0xe0009caa, 0x14abb: 0xe0003f37,
+-	0x14abd: 0xe00076b2, 0x14abf: 0xe00056bd,
+-	// Block 0x52b, offset 0x14ac0
+-	0x14ac0: 0xe0007c14, 0x14ac2: 0xe0004a4f,
+-	0x14ac4: 0xe000946b,
+-	0x14acb: 0xe0005e08,
+-	0x14acc: 0xe0007c17, 0x14acf: 0xe0004ada,
+-	0x14ad1: 0xe0007810, 0x14ad2: 0xe0004cc3, 0x14ad3: 0xe00056c1,
+-	0x14ad7: 0xe00054c8,
+-	0x14add: 0xe000673f, 0x14ade: 0xe00083b1, 0x14adf: 0xe0005938,
+-	0x14ae4: 0xe000946e, 0x14ae5: 0xe0005b13,
+-	0x14ae9: 0xe0006410, 0x14aea: 0xe0005b97,
+-	0x14aef: 0xe000495e,
+-	0x14af4: 0xe000494e, 0x14af5: 0xe0005b83,
+-	0x14afb: 0xe00059ad,
+-	0x14afd: 0xe00059bc, 0x14afe: 0xe000a403, 0x14aff: 0xe00059bf,
+-	// Block 0x52c, offset 0x14b00
+-	0x14b03: 0xe000a253,
+-	0x14b05: 0xe0004bb6,
+-	0x14b0c: 0xe000a2ea, 0x14b0d: 0xe000698f, 0x14b0e: 0xe00054cb, 0x14b0f: 0xe00086dc,
+-	0x14b10: 0xe0005915, 0x14b11: 0xe000a456,
+-	0x14b14: 0xe0004143, 0x14b16: 0xe0004d2f,
+-	0x14b18: 0xe0005d48, 0x14b1a: 0xe0004248, 0x14b1b: 0xe00050a6,
+-	0x14b1c: 0xe00094c9, 0x14b1d: 0xe0007ea8, 0x14b1e: 0xe00086b0,
+-	0x14b20: 0xe000a54b,
+-	0x14b25: 0xe0004350,
+-	0x14b28: 0xe0005031,
+-	0x14b2e: 0xe0004fed, 0x14b2f: 0xe00072ce,
+-	0x14b32: 0xe0008f46,
+-	0x14b34: 0xe0005dde, 0x14b35: 0xe0004ff1, 0x14b36: 0xe00076e2, 0x14b37: 0xe00051a4,
+-	0x14b3a: 0xe00064a7, 0x14b3b: 0xe00064db,
+-	0x14b3c: 0xe0006279, 0x14b3d: 0xe0005e63, 0x14b3f: 0xe0007d3d,
+-	// Block 0x52d, offset 0x14b40
+-	0x14b40: 0xe00094b1, 0x14b42: 0xe0008991,
+-	0x14b44: 0xe0008b01, 0x14b47: 0xe0007867,
+-	0x14b48: 0xe00061c7, 0x14b49: 0xe00096b4, 0x14b4a: 0xe000617b,
+-	0x14b4e: 0xe00087dc,
+-	0x14b50: 0xe0004dea, 0x14b53: 0xe000442f,
+-	0x14b57: 0xe0005175,
+-	0x14b59: 0xe00065ff,
+-	0x14b60: 0xe0006992, 0x14b62: 0xe00064ab,
+-	0x14b6b: 0xe0006a07,
+-	0x14b6c: 0xe0007eab, 0x14b6f: 0xe00078b2,
+-	0x14b74: 0xe000750e,
+-	0x14b78: 0xe000424c, 0x14b79: 0xe0007512, 0x14b7b: 0xe000657e,
+-	0x14b7e: 0xe0009c6e,
+-	// Block 0x52e, offset 0x14b80
+-	0x14b8a: 0xe000886e, 0x14b8b: 0xe00083e2,
+-	0x14b8e: 0xe00083e5,
+-	0x14b92: 0xe00095a8,
+-	0x14b94: 0xe0009601, 0x14b95: 0xe000a4a2, 0x14b97: 0xe0007f5d,
+-	0x14b9f: 0xe000846b,
+-	0x14ba0: 0xe0009330, 0x14ba1: 0xe00055ff,
+-	0x14ba6: 0xe0003e6b, 0x14ba7: 0xe0006afb,
+-	0x14ba9: 0xe0004802, 0x14baa: 0xe0008e5a, 0x14bab: 0xe0004515,
+-	0x14bac: 0xe00074bb,
+-	0x14bb2: 0xe0007c1a,
+-	0x14bb6: 0xe000721a, 0x14bb7: 0xe00071ee,
+-	// Block 0x52f, offset 0x14bc0
+-	0x14bcd: 0xe000579e, 0x14bce: 0xe0005719,
+-	0x14bd0: 0xe000600f, 0x14bd2: 0xe00057a2,
+-	0x14bd4: 0xe000459d, 0x14bd5: 0xe0003efb,
+-	0x14bdc: 0xe00048a4, 0x14bdd: 0xe000943b,
+-	0x14be0: 0xe0007414, 0x14be2: 0xe000a144,
+-	0x14be5: 0xe0007eae,
+-	// Block 0x530, offset 0x14c00
+-	0x14c00: 0xe0004ca8, 0x14c01: 0xe0004298, 0x14c02: 0xe0008e24, 0x14c03: 0xe0003d63,
+-	0x14c04: 0xe000a1e3, 0x14c05: 0xe00045a1, 0x14c06: 0xe0004820, 0x14c07: 0xe00048a4,
+-	0x14c08: 0xe00048a4, 0x14c09: 0xe000435d, 0x14c0a: 0xe0004d4e, 0x14c0b: 0xe000530f,
+-	0x14c0c: 0xe0004dd5, 0x14c0d: 0xe0005312, 0x14c0e: 0xe0005315, 0x14c0f: 0xe0005318,
+-	0x14c10: 0xe000531b, 0x14c11: 0xe000531e, 0x14c12: 0xe0005321, 0x14c13: 0xe0005324,
+-	0x14c14: 0xe00071d6, 0x14c15: 0xe0005342, 0x14c16: 0xe0005346, 0x14c17: 0xe000534a,
+-	0x14c18: 0xe0005352, 0x14c19: 0xe0005356, 0x14c1a: 0xe000535a, 0x14c1b: 0xe0005366,
+-	0x14c1c: 0xe000536a, 0x14c1d: 0xe000536e, 0x14c1e: 0xe000537a, 0x14c1f: 0xe000537e,
+-	0x14c20: 0xe0005382, 0x14c21: 0xe00053b2, 0x14c22: 0xe00053c2, 0x14c23: 0xe00053ce,
+-	0x14c24: 0xe00053d2, 0x14c25: 0xe00053e2, 0x14c26: 0xe00053e6, 0x14c27: 0xe00053ea,
+-	0x14c28: 0xe00053f2, 0x14c29: 0xe00053f6, 0x14c2a: 0xe00053fa, 0x14c2b: 0xe00053fe,
+-	0x14c2c: 0x43219c20, 0x14c2d: 0xe000542a, 0x14c2e: 0xe000543c, 0x14c2f: 0xe000564c,
+-	0x14c30: 0xe0005652, 0x14c31: 0xe0005655, 0x14c32: 0xe000565e, 0x14c33: 0xe0005661,
+-	0x14c34: 0xe0005664, 0x14c35: 0xe0005667, 0x14c36: 0xe000566a, 0x14c37: 0xe000566d,
+-	0x14c38: 0xe0005673, 0x14c39: 0xe0005676, 0x14c3a: 0xe0005679, 0x14c3b: 0xe00056a9,
+-	0x14c3c: 0xe00056ad, 0x14c3d: 0xe00056b1, 0x14c3e: 0xe00056b5, 0x14c3f: 0xe00056b9,
+-	// Block 0x531, offset 0x14c40
+-	0x14c40: 0xe00056bd, 0x14c41: 0xe00056e1, 0x14c42: 0xe00056e5, 0x14c43: 0xe00056e9,
+-	0x14c44: 0xe00056f9, 0x14c45: 0xe00056fd, 0x14c46: 0xe0005723, 0x14c47: 0xe0005726,
+-	0x14c48: 0xe0005729, 0x14c49: 0xe0005732, 0x14c4a: 0xe00057a6, 0x14c4b: 0xe00057ac,
+-	0x14c4c: 0xe00057af, 0x14c4d: 0xe00057b2, 0x14c4e: 0xe00057b5, 0x14c4f: 0xe00057bb,
+-	0x14c50: 0xe00057be, 0x14c51: 0xe00057ca, 0x14c52: 0xe0005867, 0x14c53: 0xe000586b,
+-	0x14c54: 0xe0005873, 0x14c55: 0xe0005883, 0x14c56: 0xe000588b, 0x14c57: 0xe000588f,
+-	0x14c58: 0xe0005893, 0x14c59: 0xe0005897, 0x14c5a: 0xe000519c, 0x14c5b: 0xe0004d5f,
+-	0x14c5c: 0xe00071d6, 0x14c5d: 0xe0004d77, 0x14c5e: 0xe0004ee5, 0x14c5f: 0xe0004e14,
+-	0x14c60: 0xe0004e35, 0x14c61: 0xe0006cf7, 0x14c62: 0xe0008035, 0x14c63: 0xe0006413,
+-	0x14c64: 0xe0005f23, 0x14c65: 0xe000996f, 0x14c66: 0xe0006290, 0x14c67: 0xe0006344,
+-	0x14c68: 0xe0009b50, 0x14c69: 0xe0006d7d, 0x14c6a: 0xe000690f, 0x14c6b: 0xe0008ee6,
+-	0x14c6c: 0xe00068fb, 0x14c6d: 0xe0006baf, 0x14c6e: 0xe00076ee, 0x14c6f: 0xe0006af3,
+-	0x14c70: 0xe00067fb, 0x14c71: 0xe0008d2c, 0x14c72: 0xe000961d, 0x14c73: 0xe0006f5d,
+-	0x14c74: 0xe00073e4, 0x14c75: 0xe0005440, 0x14c76: 0xe0005444, 0x14c77: 0xe000544c,
+-	0x14c78: 0xe0005454, 0x14c79: 0xe0005458, 0x14c7a: 0xe000545c, 0x14c7b: 0xe000546c,
+-	0x14c7c: 0xe0005470, 0x14c7d: 0xe0005474, 0x14c7e: 0xe000547c, 0x14c7f: 0xe000549e,
+-	// Block 0x532, offset 0x14c80
+-	0x14c80: 0xe00054a1, 0x14c81: 0xe0004ded, 0x14c82: 0xe00054a4, 0x14c83: 0xe00054ad,
+-	0x14c84: 0xe00054b3, 0x14c85: 0xe00054b6, 0x14c86: 0xe00054bf, 0x14c87: 0xe00054c5,
+-	0x14c88: 0xe00054c8, 0x14c89: 0xe00054cb, 0x14c8a: 0xe00054ef, 0x14c8b: 0xe00054f3,
+-	0x14c8c: 0xe00054f7, 0x14c8d: 0xe0005503, 0x14c8e: 0xe0004df4, 0x14c8f: 0xe0005523,
+-	0x14c90: 0xe0005527, 0x14c91: 0xe0004df8, 0x14c92: 0xe000552f, 0x14c93: 0xe0005533,
+-	0x14c94: 0xe0005537, 0x14c95: 0xe0004dfc, 0x14c96: 0xe000553b, 0x14c97: 0xe000553f,
+-	0x14c98: 0xe0005547, 0x14c99: 0xe0005543, 0x14c9a: 0xe000554b, 0x14c9b: 0xe000554f,
+-	0x14c9c: 0xe0005573, 0x14c9d: 0xe0005577, 0x14c9e: 0xe00080b1, 0x14c9f: 0xe000557f,
+-	0x14ca0: 0xe0005583, 0x14ca1: 0xe0006af3, 0x14ca2: 0xe0005593, 0x14ca3: 0xe0004e04,
+-	0x14ca4: 0xe0004e10, 0x14ca5: 0xe000559b, 0x14ca6: 0xe00055a3, 0x14ca7: 0xe00055b3,
+-	0x14ca8: 0xe00055bf, 0x14ca9: 0xe00055c7, 0x14caa: 0xe0004e14, 0x14cab: 0xe00055cf,
+-	0x14cac: 0xe00055d3, 0x14cad: 0xe00055d7, 0x14cae: 0xe0009f6c, 0x14caf: 0xe00055df,
+-	0x14cb0: 0xe00055e7, 0x14cb1: 0xe00055ef, 0x14cb2: 0xe00055f3, 0x14cb3: 0xe00055f7,
+-	0x14cb4: 0xe00055fb, 0x14cb5: 0xe0005637, 0x14cb6: 0xe000563d, 0x14cb7: 0xe0005640,
+-	0x14cb8: 0xe0005646, 0x14cb9: 0xe00071ca, 0x14cba: 0xe0005756, 0x14cbb: 0xe0005759,
+-	0x14cbc: 0xe000575c, 0x14cbd: 0xe0004e75, 0x14cbe: 0xe0005762, 0x14cbf: 0xe00071d6,
+-	// Block 0x533, offset 0x14cc0
+-	0x14cc0: 0xe0005765, 0x14cc1: 0xe0005768, 0x14cc2: 0xe0005771, 0x14cc3: 0xe0005774,
+-	0x14cc4: 0xe000579e, 0x14cc5: 0xe000a399, 0x14cc6: 0xe00079d4, 0x14cc7: 0xe00057e2,
+-	0x14cc8: 0xe0004ea0, 0x14cc9: 0xe00057e8, 0x14cca: 0xe00057ee, 0x14ccb: 0xe00057f1,
+-	0x14ccc: 0xe00057f7, 0x14ccd: 0xe00057fd, 0x14cce: 0xe0005803, 0x14ccf: 0xe0004ea3,
+-	0x14cd0: 0xe0005809, 0x14cd1: 0xe000581b, 0x14cd2: 0xe000581f, 0x14cd3: 0xe0005823,
+-	0x14cd4: 0xe000582f, 0x14cd5: 0xe0005833, 0x14cd6: 0xe0005837, 0x14cd7: 0xe000583f,
+-	0x14cd8: 0xe0005847, 0x14cd9: 0xe000584b, 0x14cda: 0xe000584f, 0x14cdb: 0xe0006cf7,
+-	0x14cdc: 0xe000585b, 0x14cdd: 0xe00058a6, 0x14cde: 0xe00058ac, 0x14cdf: 0xe00058b2,
+-	0x14ce0: 0xe00075a2, 0x14ce1: 0xe00058b8, 0x14ce2: 0xe00058bb, 0x14ce3: 0xe0004eb7,
+-	0x14ce4: 0xe00058c7, 0x14ce5: 0xe00058cd, 0x14ce6: 0xe00058d3, 0x14ce7: 0xe00058dc,
+-	0x14ce8: 0xe00058df, 0x14ce9: 0xe00058e2, 0x14cea: 0xe00058e8, 0x14ceb: 0xe0004ecc,
+-	0x14cec: 0xe0004ed0, 0x14ced: 0xe0005918, 0x14cee: 0xe0005920, 0x14cef: 0xe0005924,
+-	0x14cf0: 0xe0005928, 0x14cf1: 0xe0005930, 0x14cf2: 0xe0005934, 0x14cf3: 0xe0005938,
+-	0x14cf4: 0xe000596c, 0x14cf5: 0xe0005970, 0x14cf6: 0xe0005978, 0x14cf7: 0xe0005988,
+-	0x14cf8: 0xe000598c, 0x14cf9: 0xe0005990, 0x14cfa: 0xe00068ab, 0x14cfb: 0xe00081ae,
+-	0x14cfc: 0xe000705c, 0x14cfd: 0xe0007150, 0x14cfe: 0xe0004edf, 0x14cff: 0xe0008190,
+-	// Block 0x534, offset 0x14d00
+-	0x14d00: 0xe0008664, 0x14d01: 0xe00050e5, 0x14d02: 0xe000906f, 0x14d03: 0xe0005029,
+-	0x14d04: 0xe00050bb, 0x14d05: 0xe0005210, 0x14d06: 0xe0009a96, 0x14d07: 0xe00062b4,
+-	0x14d08: 0xe0009dc1, 0x14d09: 0xe0003faf, 0x14d0a: 0xe00041bc, 0x14d0b: 0xe00045f0,
+-	0x14d0c: 0xe000790d, 0x14d0d: 0x42ab8020, 0x14d0e: 0x43f41c20, 0x14d0f: 0x43f41e20,
+-	0x14d10: 0xe000937b, 0x14d11: 0x43f42220, 0x14d12: 0xe0009223, 0x14d13: 0x43f42620,
+-	0x14d14: 0x43f42820, 0x14d15: 0xe000a4dd, 0x14d16: 0xe0008441, 0x14d17: 0xe0008081,
+-	0x14d18: 0x42f27820, 0x14d19: 0xe00070a4, 0x14d1a: 0xe00068b3, 0x14d1b: 0xe0006298,
+-	0x14d1c: 0xe00087d0, 0x14d1d: 0xe000879c, 0x14d1e: 0xe0007bc0, 0x14d1f: 0x43f43e20,
+-	0x14d20: 0x430c2420, 0x14d21: 0x43f44220, 0x14d22: 0xe0008859, 0x14d23: 0x43f44620,
+-	0x14d24: 0x43f44820, 0x14d25: 0xe0008129, 0x14d26: 0xe0005133, 0x14d27: 0x43f44e20,
+-	0x14d28: 0x43f45020, 0x14d29: 0x43f45220, 0x14d2a: 0xe0005f3f, 0x14d2b: 0xe0006739,
+-	0x14d2c: 0xe0004650, 0x14d2d: 0xe0009bfa, 0x14d2e: 0xe000540e, 0x14d2f: 0xe0005643,
+-	0x14d30: 0xe0005bee, 0x14d31: 0xe0006f81, 0x14d32: 0xe0005b5b, 0x14d33: 0xe0005b63,
+-	0x14d34: 0xe0004b16, 0x14d35: 0xe000650f, 0x14d36: 0xe0003e73, 0x14d37: 0xe0009717,
+-	0x14d38: 0xe0004c15, 0x14d39: 0xe000621b, 0x14d3a: 0xe0005d44, 0x14d3b: 0xe000955f,
+-	0x14d3c: 0x42b8dc20, 0x14d3d: 0xe000a282, 0x14d3e: 0xe0004010, 0x14d3f: 0xe0008bdc,
+-	// Block 0x535, offset 0x14d40
+-	0x14d40: 0xe0008de8, 0x14d41: 0xe0005e1b, 0x14d42: 0x42cbc420, 0x14d43: 0xe0006959,
+-	0x14d44: 0xe0005ad0, 0x14d45: 0xe0009d65, 0x14d46: 0xe000843b, 0x14d47: 0xe0009c2a,
+-	0x14d48: 0xe00081b1, 0x14d49: 0x42e45620, 0x14d4a: 0xe00096df, 0x14d4b: 0xe0006548,
+-	0x14d4c: 0xe00066fd, 0x14d4d: 0xe0008c4c, 0x14d4e: 0xe0004c87, 0x14d4f: 0xe0007bb4,
+-	0x14d50: 0xe00088ec, 0x14d51: 0xe0009479, 0x14d52: 0xe000a11a, 0x14d53: 0xe0008790,
+-	0x14d54: 0xe0004499, 0x14d55: 0xe00051e0, 0x14d56: 0xe000867c, 0x14d57: 0xe000553b,
+-	0x14d58: 0xe0008d0c, 0x14d59: 0xe00060c7, 0x14d5a: 0xe0006977, 0x14d5b: 0xe00081c3,
+-	0x14d5c: 0xe000952b, 0x14d5d: 0x4304f220, 0x14d5e: 0x4304f220, 0x14d5f: 0xe0008453,
+-	0x14d60: 0xe0003e8b, 0x14d61: 0xe0006feb, 0x14d62: 0xe000725a, 0x14d63: 0xe0004b3e,
+-	0x14d64: 0xe0006632, 0x14d65: 0xe0008c00, 0x14d66: 0x431f6c20, 0x14d67: 0xe0008129,
+-	0x14d68: 0xe0004d83, 0x14d69: 0xe0009ddd, 0x14d6a: 0xe0006636, 0x14d6b: 0x42c0ea20,
+-	0x14d6c: 0x4885dc20, 0x14d6d: 0x43043020,
+-	0x14d70: 0xe0006217, 0x14d71: 0x42a36a20, 0x14d72: 0xe000852c, 0x14d73: 0x429f0020,
+-	0x14d74: 0xe00094d1, 0x14d75: 0xe0004c0f, 0x14d76: 0xe0007b09, 0x14d77: 0xe000822d,
+-	0x14d78: 0xe0003e73, 0x14d79: 0x42aaaa20, 0x14d7a: 0xe000a3dc, 0x14d7b: 0xe0007911,
+-	0x14d7c: 0xe000937b, 0x14d7d: 0xe0006423, 0x14d7e: 0xe000752e, 0x14d7f: 0xe0006427,
+-	// Block 0x536, offset 0x14d80
+-	0x14d80: 0xe0006515, 0x14d81: 0xe00081de, 0x14d82: 0x42bda420, 0x14d83: 0x42bdb220,
+-	0x14d84: 0xe0008ffa, 0x14d85: 0xe0007abf, 0x14d86: 0xe0005aa6, 0x14d87: 0x42c29c20,
+-	0x14d88: 0xe0007df1, 0x14d89: 0xe0008bdc, 0x14d8a: 0xe0007885, 0x14d8b: 0xe0008de8,
+-	0x14d8c: 0xe0005091, 0x14d8d: 0xe0007df7, 0x14d8e: 0xe0006d77, 0x14d8f: 0x42c8a420,
+-	0x14d90: 0xe0007840, 0x14d91: 0xe0009223, 0x14d92: 0xe00053f6, 0x14d93: 0xe0005a86,
+-	0x14d94: 0xe000830d, 0x14d95: 0x42d6f220, 0x14d96: 0xe00067fb, 0x14d97: 0xe00057ee,
+-	0x14d98: 0x42ddb620, 0x14d99: 0xe00081ab, 0x14d9a: 0xe0009c2a, 0x14d9b: 0xe0008774,
+-	0x14d9c: 0xe00081b1, 0x14d9d: 0x42ef4e20, 0x14d9e: 0xe0008245, 0x14d9f: 0xe000611b,
+-	0x14da0: 0xe0008441, 0x14da1: 0xe00085f8, 0x14da2: 0x42ea0c20, 0x14da3: 0x42ea7620,
+-	0x14da4: 0x42ec3a20, 0x14da5: 0xe00078d1, 0x14da6: 0xe0008081, 0x14da7: 0xe0006bab,
+-	0x14da8: 0xe0008ca0, 0x14da9: 0x42ee9420, 0x14daa: 0xe0008e4a, 0x14dab: 0x42f19820,
+-	0x14dac: 0x42f56220, 0x14dad: 0xe000867c, 0x14dae: 0x42f8f620, 0x14daf: 0xe000896a,
+-	0x14db0: 0xe000553b, 0x14db1: 0xe0006223, 0x14db2: 0xe00081c3, 0x14db3: 0xe000a243,
+-	0x14db4: 0xe000a123, 0x14db5: 0x430ef220, 0x14db6: 0xe0003fa3, 0x14db7: 0xe00062ac,
+-	0x14db8: 0xe0006feb, 0x14db9: 0xe0008913, 0x14dba: 0xe0008859, 0x14dbb: 0xe0009233,
+-	0x14dbc: 0xe000725a, 0x14dbd: 0xe0004d77, 0x14dbe: 0xe0007e39, 0x14dbf: 0xe0004b3e,
+-	// Block 0x537, offset 0x14dc0
+-	0x14dc0: 0xe0006187, 0x14dc1: 0xe0008c00, 0x14dc2: 0xe0006dd4, 0x14dc3: 0xe0008c70,
+-	0x14dc4: 0x43233220, 0x14dc5: 0x4324ec20, 0x14dc6: 0xe00084a1, 0x14dc7: 0xe0004d83,
+-	0x14dc8: 0xe00087d0, 0x14dc9: 0x432fb620, 0x14dca: 0xe0009ddd, 0x14dcb: 0x43301620,
+-	0x14dcc: 0xe0006636, 0x14dcd: 0xe0008d64, 0x14dce: 0xe00048a4, 0x14dcf: 0x48509420,
+-	0x14dd0: 0x48508820, 0x14dd1: 0x4867aa20, 0x14dd2: 0x44773a20, 0x14dd3: 0x44803020,
+-	0x14dd4: 0x44807220, 0x14dd5: 0x48a49220, 0x14dd6: 0x48b9a020, 0x14dd7: 0x48fda620,
+-	0x14dd8: 0x433e8620, 0x14dd9: 0xe0005719,
+-	// Block 0x538, offset 0x14e00
+-	0x14e00: 0xe00037d0, 0x14e01: 0xe00037b8, 0x14e02: 0xe00037bc, 0x14e03: 0xe00037c4,
+-	0x14e04: 0xe00037d4, 0x14e05: 0xe00037c8, 0x14e06: 0xf0000404, 0x14e07: 0xe00037c0,
+-	0x14e08: 0xe00037cc,
+-	0x14e10: 0x02bf2e86, 0x14e11: 0x02a7de86,
+-	// Block 0x539, offset 0x14e40
+-	0x14e40: 0x429c7a20, 0x14e41: 0xe000a16b, 0x14e42: 0x429c8220, 0x14e43: 0x48024420,
+-	0x14e44: 0x429ec020, 0x14e45: 0xe0005bee, 0x14e46: 0xe0009757, 0x14e47: 0xe00061d7,
+-	0x14e48: 0x42a0f420, 0x14e49: 0xe0006506, 0x14e4a: 0xe0006f81, 0x14e4b: 0xe0006863,
+-	0x14e4c: 0x44693c20, 0x14e4d: 0x480c7420, 0x14e4e: 0xe0005b5b, 0x14e4f: 0x42a2a820,
+-	0x14e50: 0x42a2c820, 0x14e51: 0xe0004814, 0x14e52: 0x480a3820, 0x14e53: 0x44697220,
+-	0x14e54: 0xe0004dd2, 0x14e55: 0xe00083b5, 0x14e56: 0x480a9620, 0x14e57: 0xe0007b05,
+-	0x14e58: 0xe0007d09, 0x14e59: 0x429d9820, 0x14e5a: 0xe00051f0, 0x14e5b: 0x42a36a20,
+-	0x14e5c: 0x4923be20, 0x14e5d: 0x42a3ea20, 0x14e5e: 0xe00080a9, 0x14e5f: 0x4469be20,
+-	0x14e60: 0xe0003d9f, 0x14e61: 0x42a48c20, 0x14e62: 0xe0009c72, 0x14e63: 0xe00067c3,
+-	0x14e64: 0x446a2a20, 0x14e65: 0xe0007b09, 0x14e66: 0xe0005b63, 0x14e67: 0xe0004b16,
+-	0x14e68: 0xe000822d, 0x14e69: 0xe0009a20, 0x14e6a: 0x42a60c20, 0x14e6b: 0xe0006413,
+-	0x14e6c: 0xe000a3d9, 0x14e6d: 0xe000650f, 0x14e6e: 0xe0005e7f, 0x14e6f: 0xe0008bb4,
+-	0x14e70: 0xe0008bb0, 0x14e71: 0xe000426c, 0x14e72: 0xe000426c, 0x14e73: 0xe000426c,
+-	0x14e74: 0x48145820, 0x14e75: 0xe000a297, 0x14e76: 0xe0004bbe, 0x14e77: 0xe0006e01,
+-	0x14e78: 0x4816c620, 0x14e79: 0xe0004a5e, 0x14e7a: 0xe0008d6c, 0x14e7b: 0x42a80c20,
+-	0x14e7c: 0x42a93c20, 0x14e7d: 0xe000a4b6, 0x14e7e: 0xe0008718, 0x14e7f: 0xe0008a5f,
+-	// Block 0x53a, offset 0x14e80
+-	0x14e80: 0xe00071fa, 0x14e81: 0x42a9ec20, 0x14e82: 0xe0005009, 0x14e83: 0xe0004357,
+-	0x14e84: 0xe0009c8a, 0x14e85: 0xe0006a17, 0x14e86: 0xe0006a17, 0x14e87: 0xe000a3dc,
+-	0x14e88: 0xe0004d52, 0x14e89: 0x42ab6620, 0x14e8a: 0x42ab8420, 0x14e8b: 0xe00050d0,
+-	0x14e8c: 0xe0009717, 0x14e8d: 0x42ae2e20, 0x14e8e: 0x42aca220, 0x14e8f: 0xe000641f,
+-	0x14e90: 0xe0008664, 0x14e91: 0x42b1dc20, 0x14e92: 0xe0006b83, 0x14e93: 0xe0007030,
+-	0x14e94: 0x42b01a20, 0x14e95: 0xe0009f48, 0x14e96: 0x42b06420, 0x14e97: 0xe000623d,
+-	0x14e98: 0x42b15820, 0x14e99: 0x4829c820, 0x14e9a: 0x42b1e420, 0x14e9b: 0x42b1ee20,
+-	0x14e9c: 0xe0006330, 0x14e9d: 0xe0004edc, 0x14e9e: 0xe0005c8f, 0x14e9f: 0xe00066bb,
+-	0x14ea0: 0x482d5020, 0x14ea1: 0x482dd420, 0x14ea2: 0xe000a4e9, 0x14ea3: 0xe0007834,
+-	0x14ea4: 0xe00097dc, 0x14ea5: 0x42b3b020, 0x14ea6: 0xe0006362, 0x14ea7: 0x446ddc20,
+-	0x14ea8: 0x446df820, 0x14ea9: 0xe0007ab9, 0x14eaa: 0xe0005386, 0x14eab: 0xe0005386,
+-	0x14eac: 0x48339020, 0x14ead: 0xe0007cc1, 0x14eae: 0xe00095b1, 0x14eaf: 0xe0004e14,
+-	0x14eb0: 0x42b7e620, 0x14eb1: 0x48363020, 0x14eb2: 0x42b7fe20, 0x14eb3: 0x42b80c20,
+-	0x14eb4: 0x42bea620, 0x14eb5: 0x42b84420, 0x14eb6: 0x446f0220, 0x14eb7: 0xe00050dc,
+-	0x14eb8: 0x42b8dc20, 0x14eb9: 0xe0006d65, 0x14eba: 0x42b91a20, 0x14ebb: 0x483bc820,
+-	0x14ebc: 0x42ba8620, 0x14ebd: 0x483bcc20, 0x14ebe: 0x42badc20, 0x14ebf: 0x42bad620,
+-	// Block 0x53b, offset 0x14ec0
+-	0x14ec0: 0x42baf820, 0x14ec1: 0xe0006e8c, 0x14ec2: 0xe0006c09, 0x14ec3: 0x44705e20,
+-	0x14ec4: 0xe0006cdb, 0x14ec5: 0xe0006beb, 0x14ec6: 0xe0005bfa, 0x14ec7: 0x42bcd220,
+-	0x14ec8: 0x4470c420, 0x14ec9: 0x48430620, 0x14eca: 0x4470f820, 0x14ecb: 0x42bd6020,
+-	0x14ecc: 0xe0006596, 0x14ecd: 0xe0006947, 0x14ece: 0xe00053f2, 0x14ecf: 0x49472420,
+-	0x14ed0: 0x42bdfc20, 0x14ed1: 0x48466220, 0x14ed2: 0x48466220, 0x14ed3: 0xe0007593,
+-	0x14ed4: 0xe0005145, 0x14ed5: 0xe0005145, 0x14ed6: 0x44718e20, 0x14ed7: 0x48657020,
+-	0x14ed8: 0x48c3b420, 0x14ed9: 0xe0009f4c, 0x14eda: 0xe00088b6, 0x14edb: 0x4471c620,
+-	0x14edc: 0x42bf3420, 0x14edd: 0xe00080c5, 0x14ede: 0xe0008c1f, 0x14edf: 0x42bff220,
+-	0x14ee0: 0xe000764e, 0x14ee1: 0x44727420, 0x14ee2: 0x44723820, 0x14ee3: 0xe000a282,
+-	0x14ee4: 0x484da820, 0x14ee5: 0xe00051ac, 0x14ee6: 0xe00081a8, 0x14ee7: 0xe000a20f,
+-	0x14ee8: 0x42c29c20, 0x14ee9: 0xe000a20f, 0x14eea: 0xe00057d6, 0x14eeb: 0xe0008bdc,
+-	0x14eec: 0xe0009e00, 0x14eed: 0xe0006433, 0x14eee: 0xe0008f1e, 0x14eef: 0xe0005c9f,
+-	0x14ef0: 0xe0008de8, 0x14ef1: 0xe0005312, 0x14ef2: 0xe0006b97, 0x14ef3: 0x42c43620,
+-	0x14ef4: 0x42c4ba20, 0x14ef5: 0xe0009a3b, 0x14ef6: 0xe0005f67, 0x14ef7: 0xe00075e2,
+-	0x14ef8: 0x48561820, 0x14ef9: 0xe00059fa, 0x14efa: 0x42c5f820, 0x14efb: 0xe00066d6,
+-	0x14efc: 0xe0006c0f, 0x14efd: 0x42c7c820, 0x14efe: 0x4857e220, 0x14eff: 0xe0008cc8,
+-	// Block 0x53c, offset 0x14f00
+-	0x14f00: 0x42c78a20, 0x14f01: 0xe0007532, 0x14f02: 0x44745c20, 0x14f03: 0xe0005998,
+-	0x14f04: 0x42c8fc20, 0x14f05: 0xe000a406, 0x14f06: 0x42c8ee20, 0x14f07: 0x4474d820,
+-	0x14f08: 0xe0005e1b, 0x14f09: 0xe000428c, 0x14f0a: 0x48601420, 0x14f0b: 0xe0004c42,
+-	0x14f0c: 0xe000695f, 0x14f0d: 0xe0008ccc, 0x14f0e: 0x44763220, 0x14f0f: 0xe0006959,
+-	0x14f10: 0x44761020, 0x14f11: 0x4475c820, 0x14f12: 0xe0005bf1, 0x14f13: 0xe0005b5f,
+-	0x14f14: 0xe00093bd, 0x14f15: 0x42cd3820, 0x14f16: 0xe0004e9c, 0x14f17: 0x4487b220,
+-	0x14f18: 0xe00053f6, 0x14f19: 0xe0005a86, 0x14f1a: 0x42ce4220, 0x14f1b: 0xe0004c4b,
+-	0x14f1c: 0xe0009ab2, 0x14f1d: 0x48678620, 0x14f1e: 0x44769220, 0x14f1f: 0x42cff420,
+-	0x14f20: 0x42cf0a20, 0x14f21: 0x42d0a420, 0x14f22: 0xe0005ad0, 0x14f23: 0x4868da20,
+-	0x14f24: 0x42d11c20, 0x14f25: 0x42d03e20, 0x14f26: 0x42d22820, 0x14f27: 0x44773a20,
+-	0x14f28: 0xe0006751, 0x14f29: 0x42d34620, 0x14f2a: 0xe0004016, 0x14f2b: 0x42d55020,
+-	0x14f2c: 0x486d4620, 0x14f2d: 0xe0008bbc, 0x14f2e: 0x44783020, 0x14f2f: 0xe0008e15,
+-	0x14f30: 0x48714e20, 0x14f31: 0xe0009dfd, 0x14f32: 0x44789c20, 0x14f33: 0xe0006bd9,
+-	0x14f34: 0x42d73e20, 0x14f35: 0xe00067fb, 0x14f36: 0x42d77620, 0x14f37: 0x48751a20,
+-	0x14f38: 0x483a1620, 0x14f39: 0x4875f420, 0x14f3a: 0xe0006113, 0x14f3b: 0x48797820,
+-	0x14f3c: 0xe00075f2, 0x14f3d: 0x42d99a20, 0x14f3e: 0x42d8ce20, 0x14f3f: 0x42da2c20,
+-	// Block 0x53d, offset 0x14f40
+-	0x14f40: 0xe000989d, 0x14f41: 0xe0009d65, 0x14f42: 0xe00057ee, 0x14f43: 0xe0009ffa,
+-	0x14f44: 0xe0009621, 0x14f45: 0xe000767e, 0x14f46: 0x487a3c20, 0x14f47: 0x42da6820,
+-	0x14f48: 0xe0009d22, 0x14f49: 0xe00080c9, 0x14f4a: 0x447a6620, 0x14f4b: 0xe00081ab,
+-	0x14f4c: 0x42dd8e20, 0x14f4d: 0x487da220, 0x14f4e: 0xe0007536, 0x14f4f: 0xe00088da,
+-	0x14f50: 0x487ebc20, 0x14f51: 0x487f1c20, 0x14f52: 0xe0006483, 0x14f53: 0x42e07220,
+-	0x14f54: 0xe0008774, 0x14f55: 0xe0007732, 0x14f56: 0x447b2c20, 0x14f57: 0x42e09420,
+-	0x14f58: 0xe00083d3, 0x14f59: 0x42e0ee20, 0x14f5a: 0xe000972f, 0x14f5b: 0x480a4a20,
+-	0x14f5c: 0x42e28a20, 0x14f5d: 0x4884c620, 0x14f5e: 0x42e33820, 0x14f5f: 0x48875620,
+-	0x14f60: 0xe0008ebe, 0x14f61: 0xe0008245, 0x14f62: 0x42e4a020, 0x14f63: 0x488c1020,
+-	0x14f64: 0xe0006968, 0x14f65: 0x42e52a20, 0x14f66: 0x488e6a20, 0x14f67: 0x48902820,
+-	0x14f68: 0xe0004f61, 0x14f69: 0xe0007a10, 0x14f6a: 0x447d5820, 0x14f6b: 0x42e74a20,
+-	0x14f6c: 0x447d7020, 0x14f6d: 0x447d7020, 0x14f6e: 0x42e88e20, 0x14f6f: 0xe0007e1e,
+-	0x14f70: 0xe00085f8, 0x14f71: 0x42e90a20, 0x14f72: 0xe00042b4, 0x14f73: 0x447e3620,
+-	0x14f74: 0x42ea4820, 0x14f75: 0x48986c20, 0x14f76: 0x42ea7c20, 0x14f77: 0x48992420,
+-	0x14f78: 0xe0008035, 0x14f79: 0x48433e20, 0x14f7a: 0xe0007e72, 0x14f7b: 0x489f4220,
+-	0x14f7c: 0x489f7020, 0x14f7d: 0x48a08820, 0x14f7e: 0x447ff820, 0x14f7f: 0x44801020,
+-	// Block 0x53e, offset 0x14f80
+-	0x14f80: 0xe0008ca0, 0x14f81: 0x48a1e620, 0x14f82: 0x48a1e420, 0x14f83: 0x48a23220,
+-	0x14f84: 0x48a26620, 0x14f85: 0xe0008d00, 0x14f86: 0x42ee3e20, 0x14f87: 0x42ee3e20,
+-	0x14f88: 0x42ee9420, 0x14f89: 0x44807220, 0x14f8a: 0xe0008d04, 0x14f8b: 0x44808c20,
+-	0x14f8c: 0x44812c20, 0x14f8d: 0x48a83a20, 0x14f8e: 0x42f09c20, 0x14f8f: 0xe00056a9,
+-	0x14f90: 0x42f19820, 0x14f91: 0x4481c620, 0x14f92: 0x48ac4c20, 0x14f93: 0xe00088ec,
+-	0x14f94: 0x48ad3420, 0x14f95: 0x48ad8a20, 0x14f96: 0xe0006298, 0x14f97: 0xe00094cd,
+-	0x14f98: 0x44825e20, 0x14f99: 0xe0004499, 0x14f9a: 0x42f49420, 0x14f9b: 0x42f49e20,
+-	0x14f9c: 0x48b2f820, 0x14f9d: 0x48b54e20, 0x14f9e: 0x48b54e20, 0x14f9f: 0x42f5dc20,
+-	0x14fa0: 0x44840420, 0x14fa1: 0x48b75620, 0x14fa2: 0xe0008590, 0x14fa3: 0xe0009485,
+-	0x14fa4: 0x44844e20, 0x14fa5: 0x48b90020, 0x14fa6: 0x42f9a420, 0x14fa7: 0x44854020,
+-	0x14fa8: 0x42f9d020, 0x14fa9: 0x42f9c620, 0x14faa: 0xe0004c90, 0x14fab: 0x48bf0c20,
+-	0x14fac: 0xe000621f, 0x14fad: 0x44860220, 0x14fae: 0xe0009590, 0x14faf: 0x42fc0420,
+-	0x14fb0: 0xe0006c8a, 0x14fb1: 0x44866820, 0x14fb2: 0x48c45020, 0x14fb3: 0x48c48e20,
+-	0x14fb4: 0x4486b220, 0x14fb5: 0x48c5b220, 0x14fb6: 0x42fef420, 0x14fb7: 0x48c67c20,
+-	0x14fb8: 0x42ff2a20, 0x14fb9: 0xe000446b, 0x14fba: 0xe00081c3, 0x14fbb: 0x48c9b420,
+-	0x14fbc: 0x48ca4620, 0x14fbd: 0x4300c020, 0x14fbe: 0x48cb5020, 0x14fbf: 0xe0009393,
+-	// Block 0x53f, offset 0x14fc0
+-	0x14fc0: 0x4866be20, 0x14fc1: 0x4487aa20, 0x14fc2: 0xe0007ebd, 0x14fc3: 0x43020620,
+-	0x14fc4: 0x44881620, 0x14fc5: 0xe000655d, 0x14fc6: 0xe0008189, 0x14fc7: 0x48cf4e20,
+-	0x14fc8: 0x48cf6a20, 0x14fc9: 0x48672620, 0x14fca: 0x48673820, 0x14fcb: 0xe0007593,
+-	0x14fcc: 0x43040820, 0x14fcd: 0x431f3c20, 0x14fce: 0x4488d620, 0x14fcf: 0x43052220,
+-	0x14fd0: 0xe0007bc3, 0x14fd1: 0xe0008c5e, 0x14fd2: 0x42a56620, 0x14fd3: 0xe000a120,
+-	0x14fd4: 0xe0005ff3, 0x14fd5: 0xe000717b, 0x14fd6: 0xe000440b, 0x14fd7: 0x48d67820,
+-	0x14fd8: 0xe00073e4, 0x14fd9: 0xe0009015, 0x14fda: 0x4306c620, 0x14fdb: 0x43075a20,
+-	0x14fdc: 0xe0007894, 0x14fdd: 0xe0005a9a, 0x14fde: 0x4307ce20, 0x14fdf: 0xe0008453,
+-	0x14fe0: 0x4306a620, 0x14fe1: 0xe0004942, 0x14fe2: 0xe0004ace, 0x14fe3: 0xe0009006,
+-	0x14fe4: 0x48d86c20, 0x14fe5: 0x48dad620, 0x14fe6: 0x48d9aa20, 0x14fe7: 0x448a5620,
+-	0x14fe8: 0xe00099eb, 0x14fe9: 0x4309e620, 0x14fea: 0x430a2c20, 0x14feb: 0x48e79420,
+-	0x14fec: 0xe0007e8d, 0x14fed: 0x48de5820, 0x14fee: 0x448aba20, 0x14fef: 0x448ac220,
+-	0x14ff0: 0x48df6220, 0x14ff1: 0x48e1a420, 0x14ff2: 0x448ad620, 0x14ff3: 0xe0009bf2,
+-	0x14ff4: 0xe000566a, 0x14ff5: 0xe000a418, 0x14ff6: 0x430cd220, 0x14ff7: 0xe000959c,
+-	0x14ff8: 0x430d1020, 0x14ff9: 0x430e1c20, 0x14ffa: 0x430dc420, 0x14ffb: 0x430ef220,
+-	0x14ffc: 0xe00086f4, 0x14ffd: 0x430ed620, 0x14ffe: 0x430f0c20, 0x14fff: 0x448bae20,
+-	// Block 0x540, offset 0x15000
+-	0x15000: 0x430fc220, 0x15001: 0x43100220, 0x15002: 0x448bf220, 0x15003: 0x4310c020,
+-	0x15004: 0xe0007fea, 0x15005: 0x48ecce20, 0x15006: 0x4311ae20, 0x15007: 0x4311bc20,
+-	0x15008: 0x448c6a20, 0x15009: 0x4311f420, 0x1500a: 0x44697620, 0x1500b: 0x48f15c20,
+-	0x1500c: 0x48f2cc20, 0x1500d: 0x448d7c20, 0x1500e: 0x448d8e20, 0x1500f: 0xe0006bc3,
+-	0x15010: 0xe0007e39, 0x15011: 0xe0006187, 0x15012: 0xe0006ff7, 0x15013: 0x48f95020,
+-	0x15014: 0xe0004648, 0x15015: 0xe000645b, 0x15016: 0xe0004591, 0x15017: 0xe0004cab,
+-	0x15018: 0x48fe5e20, 0x15019: 0x48100820, 0x1501a: 0xe0005f7b, 0x1501b: 0x431b7820,
+-	0x1501c: 0x431be020, 0x1501d: 0x4811bc20, 0x1501e: 0x431da820, 0x1501f: 0xe0006dd4,
+-	0x15020: 0x490ba420, 0x15021: 0x490bda20, 0x15022: 0x43212820, 0x15023: 0x4321e220,
+-	0x15024: 0x43222220, 0x15025: 0x490e5c20, 0x15026: 0x43223620, 0x15027: 0xe0005f9b,
+-	0x15028: 0xe0009ecc, 0x15029: 0x4325b020, 0x1502a: 0xe0006233, 0x1502b: 0x4327f220,
+-	0x1502c: 0x43282a20, 0x1502d: 0x4917f420, 0x1502e: 0xe0004031, 0x1502f: 0x44932a20,
+-	0x15030: 0x432b6e20, 0x15031: 0x491aee20, 0x15032: 0x4493cc20, 0x15033: 0x432d8620,
+-	0x15034: 0x42bb6420, 0x15035: 0xe0007c85, 0x15036: 0x49228a20, 0x15037: 0x49243420,
+-	0x15038: 0x4494dc20, 0x15039: 0x4494ec20, 0x1503a: 0xe0009b90, 0x1503b: 0x49281420,
+-	0x1503c: 0x44956420, 0x1503d: 0x49292c20, 0x1503e: 0x43301620, 0x1503f: 0x43301620,
+-	// Block 0x541, offset 0x15040
+-	0x15040: 0x43305220, 0x15041: 0x492b6c20, 0x15042: 0xe0004cb4, 0x15043: 0x44966620,
+-	0x15044: 0x43325220, 0x15045: 0x43334e20, 0x15046: 0x43338420, 0x15047: 0x4333fc20,
+-	0x15048: 0x44979c20, 0x15049: 0x49366020, 0x1504a: 0xe0008d64, 0x1504b: 0x43388020,
+-	0x1504c: 0x4339fa20, 0x1504d: 0x44999c20, 0x1504e: 0x4499da20, 0x1504f: 0x433ace20,
+-	0x15050: 0x49419c20, 0x15051: 0x4499f020, 0x15052: 0x49420a20, 0x15053: 0x49441c20,
+-	0x15054: 0x49452220, 0x15055: 0xe00059ad, 0x15056: 0x449aac20, 0x15057: 0x433df220,
+-	0x15058: 0x433dfc20, 0x15059: 0x433e0a20, 0x1505a: 0x433e1e20, 0x1505b: 0x433e2c20,
+-	0x1505c: 0xe000657e, 0x1505d: 0x494c0020,
+-	// Block 0x542, offset 0x15080
+-	0x15080: 0xa000f202, 0x15081: 0x403fba21, 0x15082: 0x403fba20, 0x15083: 0x403fbc20,
+-	0x15084: 0x403fbc20, 0x15085: 0x403fbe20, 0x15086: 0x403fc020, 0x15087: 0x403fcc20,
+-	0x15088: 0x403fce20, 0x15089: 0x403fd020, 0x1508a: 0x403fd220, 0x1508b: 0x403fd420,
+-	0x1508c: 0x403fd820, 0x1508d: 0x403fdc20, 0x1508e: 0x403fde20, 0x1508f: 0x403fe020,
+-	0x15090: 0x403fe220, 0x15091: 0x403fe420, 0x15092: 0x403fe620, 0x15093: 0x403fe820,
+-	0x15094: 0x403fea20, 0x15095: 0xca983ba1, 0x15096: 0x403fee20, 0x15097: 0x403ff020,
+-	0x15098: 0x403ff420, 0x15099: 0x403ff620, 0x1509a: 0x403ff820, 0x1509b: 0x403ffa20,
+-	0x1509c: 0x403ffc20, 0x1509d: 0x40400220, 0x1509e: 0x40400420, 0x1509f: 0x40400620,
+-	0x150a0: 0x40400820, 0x150a1: 0x40400a20, 0x150a2: 0x40400e20, 0x150a3: 0x40401020,
+-	0x150a4: 0x40401220, 0x150a5: 0x40401420, 0x150a6: 0x40401620, 0x150a7: 0x40401820,
+-	0x150a8: 0x40401a20, 0x150a9: 0xe0001830, 0x150aa: 0x40401c20, 0x150ab: 0x40401e20,
+-	0x150ac: 0x40402020, 0x150ad: 0x40402420, 0x150ae: 0x40402620, 0x150af: 0x40402820,
+-	0x150b0: 0x40402c20, 0x150b1: 0xe0001839, 0x150b2: 0x40402e20, 0x150b3: 0x40403c20,
+-	0x150b4: 0xe000a54f, 0x150b5: 0x40403220, 0x150b6: 0x40403420, 0x150b7: 0x40403620,
+-	0x150b8: 0x40403820, 0x150b9: 0x40403a20, 0x150ba: 0x40404c20, 0x150bb: 0x40404e20,
+-	0x150bc: 0xa070f102, 0x150bd: 0x40403c20, 0x150be: 0x40404a20, 0x150bf: 0x40405620,
+-	// Block 0x543, offset 0x150c0
+-	0x150c0: 0x402c1a20, 0x150c1: 0x002c2a88, 0x150c2: 0x002c3288, 0x150c3: 0x402c3220,
+-	0x150c4: 0x0031c488, 0x150c5: 0x4031c420, 0x150c6: 0x002ee2a3, 0x150c7: 0x002c4e88,
+-	0x150c8: 0x402c4e20, 0x150c9: 0x002c7288, 0x150ca: 0x002c7a88, 0x150cb: 0x002c8488,
+-	0x150cc: 0x402c8420, 0x150cd: 0xe000115c, 0x150ce: 0x002cae88, 0x150cf: 0x002cb888,
+-	0x150d0: 0x002c9a83, 0x150d1: 0x002d1688, 0x150d2: 0x402d1620, 0x150d3: 0x002d4488,
+-	0x150d4: 0x002d5888, 0x150d5: 0x402d7820, 0x150d6: 0x002dc288, 0x150d7: 0x002db688,
+-	0x150d8: 0x002e0a88, 0x150d9: 0x402e0a20, 0x150da: 0x402e3820, 0x150db: 0x402e7220,
+-	0x150dc: 0x0030a088, 0x150dd: 0x002eb488, 0x150de: 0x402ebc20, 0x150df: 0x002f1088,
+-	0x150e0: 0xe0000e56, 0x150e1: 0xe0000e53, 0x150e2: 0x002d6088, 0x150e3: 0x402d6020,
+-	0x150e4: 0x002f3e88, 0x150e5: 0x402f3e20, 0x150e6: 0x002f8288, 0x150e7: 0x0031b488,
+-	0x150e8: 0x4031b420, 0x150e9: 0x00300888, 0x150ea: 0x40301220, 0x150eb: 0x40304220,
+-	0x150ec: 0x00304a88, 0x150ed: 0x40304a20, 0x150ee: 0x00305288, 0x150ef: 0xe000105f,
+-	0x150f0: 0xe000105c, 0x150f1: 0x0030b488, 0x150f2: 0x0030cc88, 0x150f3: 0x00311888,
+-	0x150f4: 0x40311820, 0x150f5: 0x00313488, 0x150f6: 0x40313420, 0x150f7: 0x00316488,
+-	0x150f8: 0x00316e88, 0x150f9: 0x40316e20, 0x150fa: 0x40317820, 0x150fb: 0x4031a620,
+-	0x150fc: 0x0031bc88, 0x150fd: 0x4031bc20, 0x150fe: 0xe0000fc9, 0x150ff: 0x40319420,
+-	// Block 0x544, offset 0x15100
+-	0x15100: 0x40315820, 0x15101: 0x0031d488, 0x15102: 0x4031d420, 0x15103: 0x002c1a88,
+-	0x15104: 0x00307c88, 0x15105: 0x0030da88, 0x15106: 0x002ca288, 0x15107: 0x402ca220,
+-	0x15108: 0x002dde88, 0x15109: 0x402dde20, 0x1510a: 0x002f6a88, 0x1510b: 0x402f6a20,
+-	0x1510c: 0x002f8e88, 0x1510d: 0x402f8e20, 0x1510e: 0x00311088, 0x1510f: 0x40311020,
+-	0x15110: 0x402bf020, 0x15111: 0x402bf820, 0x15112: 0x402c0220, 0x15113: 0x402c2a20,
+-	0x15114: 0x402ee221, 0x15115: 0x402c5620, 0x15116: 0x402c7220, 0x15117: 0x402c7a20,
+-	0x15118: 0x402ccc20, 0x15119: 0x402cb820, 0x1511a: 0x402cd420, 0x1511b: 0x402c9a20,
+-	0x1511c: 0x402cdc20, 0x1511d: 0x402ce820, 0x1511e: 0x402cf020, 0x1511f: 0x402dee20,
+-	0x15120: 0x402d4420, 0x15121: 0x402d2a20, 0x15122: 0x402d3220, 0x15123: 0x402d5820,
+-	0x15124: 0x402d0020, 0x15125: 0x40308820, 0x15126: 0x402d8020, 0x15127: 0x402d8e20,
+-	0x15128: 0x402db620, 0x15129: 0x402dc220, 0x1512a: 0x402daa20, 0x1512b: 0x402e4220,
+-	0x1512c: 0x402e4a20, 0x1512d: 0x402e5420, 0x1512e: 0x402e6820, 0x1512f: 0x4030a020,
+-	0x15130: 0x4030ac20, 0x15131: 0x402e9020, 0x15132: 0x402eb420, 0x15133: 0x402ec820,
+-	0x15134: 0x402ea620, 0x15135: 0x402f1020, 0x15136: 0x402eee20, 0x15137: 0x402f1a20,
+-	0x15138: 0x402f4c20, 0x15139: 0x402f9820, 0x1513a: 0x402fa220, 0x1513b: 0x402fac20,
+-	0x1513c: 0x402fb620, 0x1513d: 0x402fbe20, 0x1513e: 0x402fc620, 0x1513f: 0x402fd020,
+-	// Block 0x545, offset 0x15140
+-	0x15140: 0xa0000000, 0x15141: 0xa0000000, 0x15142: 0xa0000000, 0x15143: 0xa0000000,
+-	0x15144: 0xa0000000, 0x15145: 0xa0000000, 0x15146: 0xa0000000, 0x15147: 0xa0000000,
+-	0x15148: 0xa0000000, 0x15149: 0x40020020, 0x1514a: 0x40020220, 0x1514b: 0x40020420,
+-	0x1514c: 0x40020620, 0x1514d: 0x40020820, 0x1514e: 0xa0000000, 0x1514f: 0xa0000000,
+-	0x15150: 0xa0000000, 0x15151: 0xa0000000, 0x15152: 0xa0000000, 0x15153: 0xa0000000,
+-	0x15154: 0xa0000000, 0x15155: 0xa0000000, 0x15156: 0xa0000000, 0x15157: 0xa0000000,
+-	0x15158: 0xa0000000, 0x15159: 0xa0000000, 0x1515a: 0xa0000000, 0x1515b: 0xa0000000,
+-	0x1515c: 0xa0000000, 0x1515d: 0xa0000000, 0x1515e: 0xa0000000, 0x1515f: 0xa0000000,
+-	0x15160: 0x40021220, 0x15161: 0x4002ba20, 0x15162: 0x4003e020, 0x15163: 0x4004ea20,
+-	0x15164: 0x4027de20, 0x15165: 0x4004ec20, 0x15166: 0x4004e620, 0x15167: 0x4003d220,
+-	0x15168: 0x4003f420, 0x15169: 0x4003f620, 0x1516a: 0x4004d820, 0x1516b: 0x40093820,
+-	0x1516c: 0x40024020, 0x1516d: 0x40021a20, 0x1516e: 0x4002e420, 0x1516f: 0x4004e220,
+-	0x15170: 0x4029cc20, 0x15171: 0x4029ce20, 0x15172: 0x4029d020, 0x15173: 0x4029d220,
+-	0x15174: 0x4029d420, 0x15175: 0x4029d620, 0x15176: 0x4029d820, 0x15177: 0x4029da20,
+-	0x15178: 0x4029dc20, 0x15179: 0x4029de20, 0x1517a: 0x40026c20, 0x1517b: 0x40026220,
+-	0x1517c: 0x40094020, 0x1517d: 0x40094220, 0x1517e: 0x40094420, 0x1517f: 0x4002c420,
+-	// Block 0x546, offset 0x15180
+-	0x15180: 0x4004d620, 0x15181: 0xcaa00be1, 0x15182: 0x002c0a88, 0x15183: 0xc3350991,
+-	0x15184: 0x002c6288, 0x15185: 0xcaa53c31, 0x15186: 0x002d0888, 0x15187: 0x002d2288,
+-	0x15188: 0x002d6888, 0x15189: 0xcaaa0be1, 0x1518a: 0x002dcc88, 0x1518b: 0x002dfe88,
+-	0x1518c: 0xc0030002, 0x1518d: 0x002e8288, 0x1518e: 0x002e9e88, 0x1518f: 0x002ee288,
+-	0x15190: 0x002f2c88, 0x15191: 0x002f5688, 0x15192: 0x002f7a88, 0x15193: 0xc3430991,
+-	0x15194: 0x00302c88, 0x15195: 0xcaaf3c61, 0x15196: 0x0030be88, 0x15197: 0x0030e288,
+-	0x15198: 0x0030f688, 0x15199: 0x002d9ac3, 0x1519a: 0xc3630991, 0x1519b: 0x4003f820,
+-	0x1519c: 0x4004e420, 0x1519d: 0x4003fa20, 0x1519e: 0x40062420, 0x1519f: 0x40021620,
+-	0x151a0: 0x40061e20, 0x151a1: 0xca9e0be1, 0x151a2: 0x402c0a20, 0x151a3: 0xc3330991,
+-	0x151a4: 0x402c6220, 0x151a5: 0xcaa23c31, 0x151a6: 0x402d0820, 0x151a7: 0x402d2220,
+-	0x151a8: 0x402d6820, 0x151a9: 0xcaa80be1, 0x151aa: 0x402dcc20, 0x151ab: 0x402dfe20,
+-	0x151ac: 0xc0000002, 0x151ad: 0x402e8220, 0x151ae: 0x402e9e20, 0x151af: 0x402ee220,
+-	0x151b0: 0x402f2c20, 0x151b1: 0x402f5620, 0x151b2: 0x402f7a20, 0x151b3: 0xc3410991,
+-	0x151b4: 0x40302c20, 0x151b5: 0xcaac3c61, 0x151b6: 0x4030be20, 0x151b7: 0x4030e220,
+-	0x151b8: 0x4030f620, 0x151b9: 0x402d9a22, 0x151ba: 0xc3610991, 0x151bb: 0x4003fc20,
+-	0x151bc: 0x40094820, 0x151bd: 0x4003fe20, 0x151be: 0x40094c20, 0x151bf: 0xa0000000,
+-	// Block 0x547, offset 0x151c0
+-	0x151c0: 0xe00008f5, 0x151c1: 0xe00008ef, 0x151c2: 0xe0000921, 0x151c3: 0xe0000969,
+-	0x151c4: 0xe000095b, 0x151c5: 0xe000094d, 0x151c6: 0xe00009dd, 0x151c7: 0xe0000a53,
+-	0x151c8: 0xe0000ae8, 0x151c9: 0xe0000ae2, 0x151ca: 0xe0000af4, 0x151cb: 0xe0000b20,
+-	0x151cc: 0xe0000c2b, 0x151cd: 0xe0000c25, 0x151ce: 0xe0000c37, 0x151cf: 0xe0000c43,
+-	0x151d0: 0xe0000ab3, 0x151d1: 0xe0000d63, 0x151d2: 0xe0000d9a, 0x151d3: 0xe0000d94,
+-	0x151d4: 0xe0000da6, 0x151d5: 0xe0000de6, 0x151d6: 0xe0000dd2, 0x151d7: 0x40093e20,
+-	0x151d8: 0xe0000e12, 0x151d9: 0xe0000fe1, 0x151da: 0xe0000fdb, 0x151db: 0xe0000fed,
+-	0x151dc: 0xe0000fff, 0x151dd: 0xe000a555, 0x151de: 0x00318888, 0x151df: 0xe0000f7b,
+-	0x151e0: 0xe00008f2, 0x151e1: 0xe00008ec, 0x151e2: 0xe000091e, 0x151e3: 0xe0000966,
+-	0x151e4: 0xe0000958, 0x151e5: 0xe000094a, 0x151e6: 0xe00009d5, 0x151e7: 0xe0000a4d,
+-	0x151e8: 0xe0000ae5, 0x151e9: 0xe0000adf, 0x151ea: 0xe0000af1, 0x151eb: 0xe0000b1d,
+-	0x151ec: 0xe0000c28, 0x151ed: 0xe0000c22, 0x151ee: 0xe0000c34, 0x151ef: 0xe0000c40,
+-	0x151f0: 0xe0000aad, 0x151f1: 0xe0000d60, 0x151f2: 0xe0000d97, 0x151f3: 0xe0000d91,
+-	0x151f4: 0xe0000da3, 0x151f5: 0xe0000de3, 0x151f6: 0xe0000dcf, 0x151f7: 0x40093c20,
+-	0x151f8: 0xe0000e0f, 0x151f9: 0xe0000fde, 0x151fa: 0xe0000fd8, 0x151fb: 0xe0000fea,
+-	0x151fc: 0xe0000ffc, 0x151fd: 0xe000a552, 0x151fe: 0x40318820, 0x151ff: 0xe000a567,
+-	// Block 0x548, offset 0x15200
+-	0x15200: 0xe0000983, 0x15201: 0xe0000980, 0x15202: 0xe00008fb, 0x15203: 0xe00008f8,
+-	0x15204: 0x002bdea3, 0x15205: 0x402bde21, 0x15206: 0xe0000a38, 0x15207: 0xe0000a35,
+-	0x15208: 0xe0000a3e, 0x15209: 0xe0000a3b, 0x1520a: 0xe0000a4a, 0x1520b: 0xe0000a47,
+-	0x1520c: 0x002c3c83, 0x1520d: 0x402c3c20, 0x1520e: 0xe0000a86, 0x1520f: 0xe0000a83,
+-	0x15210: 0xe0000aaa, 0x15211: 0xe0000aa7, 0x15212: 0xe0000b46, 0x15213: 0xe0000b43,
+-	0x15214: 0xe0000aee, 0x15215: 0xe0000aeb, 0x15216: 0x002c98c3, 0x15217: 0x402c9822,
+-	0x15218: 0x002c98a3, 0x15219: 0x402c9821, 0x1521a: 0xe0000b1a, 0x1521b: 0xe0000b17,
+-	0x1521c: 0xe0000bb8, 0x1521d: 0xe0000bb5, 0x1521e: 0xe0000bb2, 0x1521f: 0xe0000baf,
+-	0x15220: 0xe0000bc4, 0x15221: 0xe0000bc1, 0x15222: 0xe0000bca, 0x15223: 0xe0000bc7,
+-	0x15224: 0xe0000bee, 0x15225: 0xe0000beb, 0x15226: 0xe0000c1b, 0x15227: 0xe0000c18,
+-	0x15228: 0xe0000c51, 0x15229: 0xe0000c4e, 0x1522a: 0xe0000c60, 0x1522b: 0xe0000c5d,
+-	0x1522c: 0xe0000c31, 0x1522d: 0xe0000c2e, 0x1522e: 0x002d9aa3, 0x1522f: 0x402d9a21,
+-	0x15230: 0xe0000c54, 0x15231: 0x402da220, 0x15232: 0xf0000a0a, 0x15233: 0xf0000404,
+-	0x15234: 0xe0000c8a, 0x15235: 0xe0000c87, 0x15236: 0xe0000c9f, 0x15237: 0xe0000c9c,
+-	0x15238: 0x402f7220, 0x15239: 0xe0000ccc, 0x1523a: 0xe0000cc9, 0x1523b: 0xe0000cd8,
+-	0x1523c: 0xe0000cd5, 0x1523d: 0xe0000cd2, 0x1523e: 0xe0000ccf, 0x1523f: 0xe0000d04,
+-	// Block 0x549, offset 0x15240
+-	0x15240: 0xe0000cfe, 0x15241: 0xe0000cf8, 0x15242: 0xe0000cf5, 0x15243: 0xe0000d51,
+-	0x15244: 0xe0000d4e, 0x15245: 0xe0000d6f, 0x15246: 0xe0000d6c, 0x15247: 0xe0000d5d,
+-	0x15248: 0xe0000d5a, 0x15249: 0xf0000404, 0x1524a: 0x002eda88, 0x1524b: 0x402eda20,
+-	0x1524c: 0xe0000e2e, 0x1524d: 0xe0000e2b, 0x1524e: 0xe0000da0, 0x1524f: 0xe0000d9d,
+-	0x15250: 0xe0000de0, 0x15251: 0xe0000ddd, 0x15252: 0xe0000e93, 0x15253: 0xe0000e8f,
+-	0x15254: 0xe0000eca, 0x15255: 0xe0000ec7, 0x15256: 0xe0000edc, 0x15257: 0xe0000ed9,
+-	0x15258: 0xe0000ed0, 0x15259: 0xe0000ecd, 0x1525a: 0xe0000f1f, 0x1525b: 0xe0000f1c,
+-	0x1525c: 0xe0000f2d, 0x1525d: 0xe0000f2a, 0x1525e: 0xe0000f47, 0x1525f: 0xe0000f44,
+-	0x15260: 0x002fe883, 0x15261: 0x402fe820, 0x15262: 0xe0000f99, 0x15263: 0xe0000f96,
+-	0x15264: 0xe0000f8a, 0x15265: 0xe0000f87, 0x15266: 0x00303688, 0x15267: 0x40303620,
+-	0x15268: 0xe000102b, 0x15269: 0xe0001028, 0x1526a: 0x00306cc3, 0x1526b: 0x40306c22,
+-	0x1526c: 0xe0000fe7, 0x1526d: 0xe0000fe4, 0x1526e: 0xe0000ff9, 0x1526f: 0xe0000ff6,
+-	0x15270: 0xe0001025, 0x15271: 0xe0001022, 0x15272: 0x00306ca3, 0x15273: 0x40306c21,
+-	0x15274: 0xe00010d8, 0x15275: 0xe00010d5, 0x15276: 0xe000a561, 0x15277: 0xe000a55e,
+-	0x15278: 0xe000a56a, 0x15279: 0xe000113b, 0x1527a: 0xe0001138, 0x1527b: 0xe000114d,
+-	0x1527c: 0xe000114a, 0x1527d: 0x00312c83, 0x1527e: 0x40312c20, 0x1527f: 0xe0000f64,
+-	// Block 0x54a, offset 0x15280
+-	0x15280: 0x40321220, 0x15281: 0x40321a20, 0x15282: 0x40322220, 0x15283: 0x40322a20,
+-	0x15284: 0xe0000ad5, 0x15285: 0xe0000ad1, 0x15286: 0xe0000acd, 0x15287: 0xf0000a0a,
+-	0x15288: 0xf000040a, 0x15289: 0xf0000404, 0x1528a: 0xf0000a0a, 0x1528b: 0xf000040a,
+-	0x1528c: 0xf0000404, 0x1528d: 0xe0000947, 0x1528e: 0xe0000944, 0x1528f: 0xe0000c3d,
+-	0x15290: 0xe0000c3a, 0x15291: 0xe0000dcc, 0x15292: 0xe0000dc9, 0x15293: 0xe0000ff3,
+-	0x15294: 0xe0000ff0, 0x15295: 0xe000a58e, 0x15296: 0xe000a58b, 0x15297: 0xe0001006,
+-	0x15298: 0xe0001002, 0x15299: 0xe0001016, 0x1529a: 0xe0001012, 0x1529b: 0xe000100e,
+-	0x1529c: 0xe000100a, 0x1529d: 0x402cae20, 0x1529e: 0xe0000962, 0x1529f: 0xe000095e,
+-	0x152a0: 0xe0000976, 0x152a1: 0xe0000972, 0x152a2: 0xe00009f4, 0x152a3: 0xe00009ef,
+-	0x152a4: 0x002d3a88, 0x152a5: 0x402d3a20, 0x152a6: 0xe0000bbe, 0x152a7: 0xe0000bbb,
+-	0x152a8: 0xe0000c99, 0x152a9: 0xe0000c96, 0x152aa: 0xe0000e20, 0x152ab: 0xe0000e1d,
+-	0x152ac: 0xe0000e27, 0x152ad: 0xe0000e23, 0x152ae: 0xe0001162, 0x152af: 0xe000115f,
+-	0x152b0: 0xe0000c8d, 0x152b1: 0xf0000a0a, 0x152b2: 0xf000040a, 0x152b3: 0xf0000404,
+-	0x152b4: 0xe0000bac, 0x152b5: 0xe0000ba9, 0x152b6: 0x002d7888, 0x152b7: 0x00319488,
+-	0x152b8: 0xe0000d57, 0x152b9: 0xe0000d54, 0x152ba: 0xe0000954, 0x152bb: 0xe0000950,
+-	0x152bc: 0xe00009ea, 0x152bd: 0xe00009e5, 0x152be: 0xe0000e19, 0x152bf: 0xe0000e15,
+-	// Block 0x54b, offset 0x152c0
+-	0x152c0: 0xe000098f, 0x152c1: 0xe000098c, 0x152c2: 0xe0000995, 0x152c3: 0xe0000992,
+-	0x152c4: 0xe0000b62, 0x152c5: 0xe0000b5f, 0x152c6: 0xe0000b68, 0x152c7: 0xe0000b65,
+-	0x152c8: 0xe0000c6c, 0x152c9: 0xe0000c69, 0x152ca: 0xe0000c72, 0x152cb: 0xe0000c6f,
+-	0x152cc: 0xe0000e4a, 0x152cd: 0xe0000e47, 0x152ce: 0xe0000e50, 0x152cf: 0xe0000e4d,
+-	0x152d0: 0xe0000ee8, 0x152d1: 0xe0000ee5, 0x152d2: 0xe0000eee, 0x152d3: 0xe0000eeb,
+-	0x152d4: 0xe0001053, 0x152d5: 0xe0001050, 0x152d6: 0xe0001059, 0x152d7: 0xe0001056,
+-	0x152d8: 0xe0000f61, 0x152d9: 0xe0000f5e, 0x152da: 0xe0000fa5, 0x152db: 0xe0000fa2,
+-	0x152dc: 0x00312288, 0x152dd: 0x40312220, 0x152de: 0xe0000bf4, 0x152df: 0xe0000bf1,
+-	0x152e0: 0x002ebc88, 0x152e1: 0x402c8c20, 0x152e2: 0x002f2288, 0x152e3: 0x402f2220,
+-	0x152e4: 0x00314088, 0x152e5: 0x40314020, 0x152e6: 0xe000096f, 0x152e7: 0xe000096c,
+-	0x152e8: 0xe0000b32, 0x152e9: 0xe0000b2f, 0x152ea: 0xe0000dd9, 0x152eb: 0xe0000dd5,
+-	0x152ec: 0xe0000dfd, 0x152ed: 0xe0000df9, 0x152ee: 0xe0000e04, 0x152ef: 0xe0000e01,
+-	0x152f0: 0xe0000e0b, 0x152f1: 0xe0000e07, 0x152f2: 0xe000a57c, 0x152f3: 0xe000a579,
+-	0x152f4: 0x402e5e20, 0x152f5: 0x402ed020, 0x152f6: 0x40305a20, 0x152f7: 0x402dd420,
+-	0x152f8: 0xe0000abf, 0x152f9: 0xe0000ec4, 0x152fa: 0x002be888, 0x152fb: 0x002c4488,
+-	0x152fc: 0x402c4420, 0x152fd: 0x002e3888, 0x152fe: 0x00303e88, 0x152ff: 0x402ffc20,
+-	// Block 0x54c, offset 0x15300
+-	0x15300: 0xae603502, 0x15301: 0xae603202, 0x15302: 0xae603c02, 0x15303: 0xae604e02,
+-	0x15304: 0xae605b02, 0x15305: 0xae606302, 0x15306: 0xae603702, 0x15307: 0xca9a3c01,
+-	0x15308: 0xae604702, 0x15309: 0xae606402, 0x1530a: 0xae604302, 0x1530b: 0xae604d02,
+-	0x1530c: 0xae604102, 0x1530d: 0xae605f02, 0x1530e: 0xae605f02, 0x1530f: 0xae606502,
+-	0x15310: 0xae606602, 0x15311: 0xae606702, 0x15312: 0xae605f02, 0x15313: 0xae602202,
+-	0x15314: 0xae602a02, 0x15315: 0xae805f02, 0x15316: 0xadc06002, 0x15317: 0xadc06002,
+-	0x15318: 0xadc06002, 0x15319: 0xadc06002, 0x1531a: 0xae805f02, 0x1531b: 0xad806802,
+-	0x1531c: 0xadc06002, 0x1531d: 0xadc06002, 0x1531e: 0xadc06002, 0x1531f: 0xadc06002,
+-	0x15320: 0xadc06002, 0x15321: 0xaca06e02, 0x15322: 0xaca06f02, 0x15323: 0xadc07002,
+-	0x15324: 0xadc07502, 0x15325: 0xadc07602, 0x15326: 0xadc07702, 0x15327: 0xaca05602,
+-	0x15328: 0xaca05902, 0x15329: 0xadc06002, 0x1532a: 0xadc06002, 0x1532b: 0xadc06002,
+-	0x1532c: 0xadc06002, 0x1532d: 0xadc07802, 0x1532e: 0xadc07902, 0x1532f: 0xadc06002,
+-	0x15330: 0xadc07a02, 0x15331: 0xadc07b02, 0x15332: 0xadc02102, 0x15333: 0xadc06002,
+-	0x15334: 0xa0107c02, 0x15335: 0xa0107d02, 0x15336: 0xa0106102, 0x15337: 0xa0106102,
+-	0x15338: 0xa0105402, 0x15339: 0xadc07e02, 0x1533a: 0xadc06002, 0x1533b: 0xadc06002,
+-	0x1533c: 0xadc06002, 0x1533d: 0xae605f02, 0x1533e: 0xae605f02, 0x1533f: 0xae605f02,
+-	// Block 0x54d, offset 0x15340
+-	0x15340: 0xe0000d24, 0x15341: 0xe0000d21, 0x15342: 0xe0000d2a, 0x15343: 0xe0000d27,
+-	0x15344: 0xe0000d69, 0x15345: 0xe0000d66, 0x15346: 0xe0000d7b, 0x15347: 0xe0000d78,
+-	0x15348: 0xe0000d87, 0x15349: 0xe0000d84, 0x1534a: 0xe0000d81, 0x1534b: 0xe0000d7e,
+-	0x1534c: 0xe0000ded, 0x1534d: 0xe0000de9, 0x1534e: 0xe0000df5, 0x1534f: 0xe0000df1,
+-	0x15350: 0xe0000e3d, 0x15351: 0xe0000e39, 0x15352: 0xe0000e35, 0x15353: 0xe0000e31,
+-	0x15354: 0xe0000ea7, 0x15355: 0xe0000ea4, 0x15356: 0xe0000ead, 0x15357: 0xe0000eaa,
+-	0x15358: 0xe0000ed6, 0x15359: 0xe0000ed3, 0x1535a: 0xe0000ef4, 0x1535b: 0xe0000ef1,
+-	0x1535c: 0xe0000efb, 0x1535d: 0xe0000ef7, 0x1535e: 0xe0000f02, 0x1535f: 0xe0000eff,
+-	0x15360: 0xe0000f41, 0x15361: 0xe0000f3e, 0x15362: 0xe0000f53, 0x15363: 0xe0000f50,
+-	0x15364: 0xe0000f26, 0x15365: 0xe0000f22, 0x15366: 0xe00025c3, 0x15367: 0xe00025c0,
+-	0x15368: 0xe0000f5a, 0x15369: 0xe0000f56, 0x1536a: 0xe0000f93, 0x1536b: 0xe0000f90,
+-	0x1536c: 0xe0000f9f, 0x1536d: 0xe0000f9c, 0x1536e: 0xe0000fb1, 0x1536f: 0xe0000fae,
+-	0x15370: 0xe0000fab, 0x15371: 0xe0000fa8, 0x15372: 0xe0001093, 0x15373: 0xe0001090,
+-	0x15374: 0xe000109f, 0x15375: 0xe000109c, 0x15376: 0xe0001099, 0x15377: 0xe0001096,
+-	0x15378: 0xe0001032, 0x15379: 0xe000102e, 0x1537a: 0xe000a58e, 0x1537b: 0xe000a58b,
+-	0x1537c: 0xe00010a9, 0x1537d: 0xe00010a6, 0x1537e: 0xe00010af, 0x1537f: 0xe00010ac,
+-	// Block 0x54e, offset 0x15380
+-	0x15380: 0xe00010d2, 0x15381: 0xe00010cf, 0x15382: 0xe00010cc, 0x15383: 0xe00010c9,
+-	0x15384: 0xe00010e1, 0x15385: 0xe00010de, 0x15386: 0xe00010e7, 0x15387: 0xe00010e4,
+-	0x15388: 0xe00010ed, 0x15389: 0xe00010ea, 0x1538a: 0xe00010fc, 0x1538b: 0xe00010f9,
+-	0x1538c: 0xe00010f6, 0x1538d: 0xe00010f3, 0x1538e: 0xe000a576, 0x1538f: 0xe000a573,
+-	0x15390: 0xe0001141, 0x15391: 0xe000113e, 0x15392: 0xe0001153, 0x15393: 0xe0001150,
+-	0x15394: 0xe0001159, 0x15395: 0xe0001156, 0x15396: 0xe0000c15, 0x15397: 0xe0000f8d,
+-	0x15398: 0xe00010db, 0x15399: 0xe000a564, 0x1539a: 0xf0000404, 0x1539b: 0xe0000f70,
+-	0x1539c: 0x40300420, 0x1539d: 0x40300620, 0x1539e: 0xe0000f7f, 0x1539f: 0x402c9620,
+-	0x153a0: 0xe000099b, 0x153a1: 0xe0000998, 0x153a2: 0xe0000989, 0x153a3: 0xe0000986,
+-	0x153a4: 0xe0000928, 0x153a5: 0xe0000924, 0x153a6: 0xe0000930, 0x153a7: 0xe000092c,
+-	0x153a8: 0xe0000940, 0x153a9: 0xe000093c, 0x153aa: 0xe0000938, 0x153ab: 0xe0000934,
+-	0x153ac: 0xe00009aa, 0x153ad: 0xe00009a6, 0x153ae: 0xe0000902, 0x153af: 0xe00008fe,
+-	0x153b0: 0xe000090a, 0x153b1: 0xe0000906, 0x153b2: 0xe000091a, 0x153b3: 0xe0000916,
+-	0x153b4: 0xe0000912, 0x153b5: 0xe000090e, 0x153b6: 0xe00009a2, 0x153b7: 0xe000099e,
+-	0x153b8: 0xe0000b6e, 0x153b9: 0xe0000b6b, 0x153ba: 0xe0000b5c, 0x153bb: 0xe0000b59,
+-	0x153bc: 0xe0000b26, 0x153bd: 0xe0000b23, 0x153be: 0xe0000afb, 0x153bf: 0xe0000af7,
+-	// Block 0x54f, offset 0x153c0
+-	0x153c0: 0xe0000b03, 0x153c1: 0xe0000aff, 0x153c2: 0xe0000b13, 0x153c3: 0xe0000b0f,
+-	0x153c4: 0xe0000b0b, 0x153c5: 0xe0000b07, 0x153c6: 0xe0000b75, 0x153c7: 0xe0000b71,
+-	0x153c8: 0xe0000c66, 0x153c9: 0xe0000c63, 0x153ca: 0xe0000c78, 0x153cb: 0xe0000c75,
+-	0x153cc: 0xe0000e84, 0x153cd: 0xe0000e81, 0x153ce: 0xe0000e44, 0x153cf: 0xe0000e41,
+-	0x153d0: 0xe0000dad, 0x153d1: 0xe0000da9, 0x153d2: 0xe0000db5, 0x153d3: 0xe0000db1,
+-	0x153d4: 0xe0000dc5, 0x153d5: 0xe0000dc1, 0x153d6: 0xe0000dbd, 0x153d7: 0xe0000db9,
+-	0x153d8: 0xe0000e8b, 0x153d9: 0xe0000e87, 0x153da: 0xe0000e5d, 0x153db: 0xe0000e59,
+-	0x153dc: 0xe0000e65, 0x153dd: 0xe0000e61, 0x153de: 0xe0000e75, 0x153df: 0xe0000e71,
+-	0x153e0: 0xe0000e6d, 0x153e1: 0xe0000e69, 0x153e2: 0xe0000e7d, 0x153e3: 0xe0000e79,
+-	0x153e4: 0xe000108d, 0x153e5: 0xe000108a, 0x153e6: 0xe000104d, 0x153e7: 0xe000104a,
+-	0x153e8: 0xe0001066, 0x153e9: 0xe0001062, 0x153ea: 0xe000106e, 0x153eb: 0xe000106a,
+-	0x153ec: 0xe000107e, 0x153ed: 0xe000107a, 0x153ee: 0xe0001076, 0x153ef: 0xe0001072,
+-	0x153f0: 0xe0001086, 0x153f1: 0xe0001082, 0x153f2: 0xe000a55b, 0x153f3: 0xe000a558,
+-	0x153f4: 0xe000a588, 0x153f5: 0xe000a585, 0x153f6: 0xe000a582, 0x153f7: 0xe000a57f,
+-	0x153f8: 0xe000a570, 0x153f9: 0xe000a56d, 0x153fa: 0xe0000d0a, 0x153fb: 0xe0000d07,
+-	0x153fc: 0x0030d888, 0x153fd: 0x4030d820, 0x153fe: 0x00312088, 0x153ff: 0x40312020,
+-	// Block 0x550, offset 0x15400
+-	0x15400: 0xe0000024, 0x15401: 0xe0000029, 0x15402: 0xe000002e, 0x15403: 0xe0000033,
+-	0x15404: 0xe0000038, 0x15405: 0xe000003d, 0x15406: 0xe0000042, 0x15407: 0xe0000047,
+-	0x15408: 0xf0001f04, 0x15409: 0xf0001f04, 0x1540a: 0xf0001f04, 0x1540b: 0xf0001f04,
+-	0x1540c: 0xf0001f04, 0x1540d: 0xf0001f04, 0x1540e: 0xf0001f04, 0x1540f: 0xf0001f04,
+-	0x15410: 0xf0001f04, 0x15411: 0xf0000404, 0x15412: 0xf0000404, 0x15413: 0xf0000404,
+-	0x15414: 0xf0000404, 0x15415: 0xf0000404, 0x15416: 0xf0000404, 0x15417: 0xf0000404,
+-	0x15418: 0xf0000404, 0x15419: 0xf0000404, 0x1541a: 0xf0000404, 0x1541b: 0xf0000404,
+-	0x1541c: 0xf0000404, 0x1541d: 0xf0000404, 0x1541e: 0xf0000404, 0x1541f: 0xf0000404,
+-	0x15420: 0xf0000404, 0x15421: 0xf0000404, 0x15422: 0xf0000404, 0x15423: 0xf0000404,
+-	0x15424: 0xf0000404, 0x15425: 0xf0000404, 0x15426: 0xf0000404, 0x15427: 0xf0000404,
+-	0x15428: 0xf0000404, 0x15429: 0xf0000404, 0x1542a: 0xf0000404, 0x1542b: 0xf0000404,
+-	0x1542c: 0xf0000404, 0x1542d: 0xf0000404, 0x1542e: 0xf0000404, 0x1542f: 0xf0000404,
+-	0x15430: 0xf0000404, 0x15431: 0xf0000404, 0x15432: 0xf0000404, 0x15433: 0xf0000404,
+-	0x15434: 0xe0002884, 0x15435: 0xf0000404, 0x15436: 0x002bde8c, 0x15437: 0x002c0a8c,
+-	0x15438: 0x002c3a8c, 0x15439: 0x002c628c, 0x1543a: 0x002c988c, 0x1543b: 0x002d088c,
+-	0x1543c: 0x002d228c, 0x1543d: 0x002d688c, 0x1543e: 0x002d9a8c, 0x1543f: 0x002dcc8c,
+-	// Block 0x551, offset 0x15440
+-	0x15440: 0xf0001d1c, 0x15441: 0xf0001d1d, 0x15442: 0xe00009b7, 0x15443: 0xf0001c1d,
+-	0x15444: 0xf0001c1c, 0x15445: 0xf0001c1c, 0x15446: 0xe0000a66, 0x15447: 0xe0000a7a,
+-	0x15448: 0xf0001d1c, 0x15449: 0xe0002ff7, 0x1544a: 0xf0001c1c, 0x1544b: 0xf0001d1d,
+-	0x1544c: 0xf0001c1c, 0x1544d: 0xf0001d1d, 0x1544e: 0xf0001d1d, 0x1544f: 0xf0001c1c,
+-	0x15450: 0xf0001c1c, 0x15451: 0xf0001c1c, 0x15452: 0xe0000d0d, 0x15453: 0xf0001c1c,
+-	0x15454: 0xf0001c1c, 0x15455: 0xe0000d3a, 0x15456: 0xe0000d46, 0x15457: 0xf0001d1d,
+-	0x15458: 0xe0000eb0, 0x15459: 0xe0000eb8, 0x1545a: 0xf0001d1d, 0x1545b: 0xf0001c1c,
+-	0x1545c: 0xf0001c1d, 0x1545d: 0xf0001c1d, 0x1545e: 0xe00010b2, 0x1545f: 0xe00009c8,
+-	0x15460: 0xf0001f04, 0x15461: 0xf0001f04, 0x15462: 0xf0001f04, 0x15463: 0xf0001f04,
+-	0x15464: 0xf0001f04, 0x15465: 0xf0001f04, 0x15466: 0xf0001f04, 0x15467: 0xf0001f04,
+-	0x15468: 0xf0001f04, 0x15469: 0xf0000404, 0x1546a: 0xf0000404, 0x1546b: 0xf0000404,
+-	0x1546c: 0xf0000404, 0x1546d: 0xf0000404, 0x1546e: 0xf0000404, 0x1546f: 0xf0000404,
+-	0x15470: 0xf0000404, 0x15471: 0xf0000404, 0x15472: 0xf0000404, 0x15473: 0xf0000404,
+-	0x15474: 0xf0000404, 0x15475: 0xf0000404, 0x15476: 0xf0000404, 0x15477: 0xf0000404,
+-	0x15478: 0xf0000404, 0x15479: 0xf0000404, 0x1547a: 0xf0000404, 0x1547b: 0xf0000404,
+-	0x1547c: 0xf0000404, 0x1547d: 0xf0000404, 0x1547e: 0xf0000404, 0x1547f: 0xe0000bdf,
+-	// Block 0x552, offset 0x15480
+-	0x15480: 0xf0001f04, 0x15481: 0xf0001f04, 0x15482: 0xf0001f04, 0x15483: 0xf0001f04,
+-	0x15484: 0xf0001f04, 0x15485: 0xf0001f04, 0x15486: 0xf0001f04, 0x15487: 0xf0001f04,
+-	0x15488: 0xf0001f04, 0x15489: 0xf0001f04, 0x1548a: 0xf0001f04,
+-	0x15490: 0xf0000a04, 0x15491: 0xf0000a04, 0x15492: 0xf0000a04, 0x15493: 0xf0000a04,
+-	0x15494: 0xf0000a04, 0x15495: 0xf0000a04, 0x15496: 0xf0000a04, 0x15497: 0xf0000a04,
+-	0x15498: 0xf0000a04, 0x15499: 0xf0000a04, 0x1549a: 0xf0000a04, 0x1549b: 0xf0000a04,
+-	0x1549c: 0xf0000a04, 0x1549d: 0xf0000a04, 0x1549e: 0xf0000a04, 0x1549f: 0xf0000a04,
+-	0x154a0: 0xf0000a04, 0x154a1: 0xf0000a04, 0x154a2: 0xf0000a04, 0x154a3: 0xf0000a04,
+-	0x154a4: 0xf0000a04, 0x154a5: 0xf0000a04, 0x154a6: 0xf0000a04, 0x154a7: 0xf0000a04,
+-	0x154a8: 0xe0002888, 0x154a9: 0xf0000a04, 0x154aa: 0xf0000a04, 0x154ab: 0x002c3a8c,
+-	0x154ac: 0x002f7a8c, 0x154ad: 0xf0000c0c, 0x154ae: 0xf0000c0c,
+-	0x154b0: 0x002bde9d, 0x154b1: 0x002c0a9d, 0x154b2: 0x002c3a9d, 0x154b3: 0x002c629d,
+-	0x154b4: 0x002c989d, 0x154b5: 0x002d089d, 0x154b6: 0x002d229d, 0x154b7: 0x002d689d,
+-	0x154b8: 0x002d9a9d, 0x154b9: 0x002dcc9d, 0x154ba: 0x002dfe9d, 0x154bb: 0x002e229d,
+-	0x154bc: 0x002e829d, 0x154bd: 0x002e9e9d, 0x154be: 0x002ee29d, 0x154bf: 0x002f2c9d,
+-	// Block 0x553, offset 0x154c0
+-	0x154c0: 0xa0000000, 0x154c1: 0xa0000000, 0x154c2: 0xa0000000, 0x154c3: 0xa0000000,
+-	0x154c4: 0xa0000000, 0x154c5: 0xa0000000, 0x154c6: 0xa0000000, 0x154c7: 0xa0000000,
+-	0x154c8: 0xa0000000, 0x154c9: 0x40020020, 0x154ca: 0x40020220, 0x154cb: 0x40020420,
+-	0x154cc: 0x40020620, 0x154cd: 0x40020820, 0x154ce: 0xa0000000, 0x154cf: 0xa0000000,
+-	0x154d0: 0xa0000000, 0x154d1: 0xa0000000, 0x154d2: 0xa0000000, 0x154d3: 0xa0000000,
+-	0x154d4: 0xa0000000, 0x154d5: 0xa0000000, 0x154d6: 0xa0000000, 0x154d7: 0xa0000000,
+-	0x154d8: 0xa0000000, 0x154d9: 0xa0000000, 0x154da: 0xa0000000, 0x154db: 0xa0000000,
+-	0x154dc: 0xa0000000, 0x154dd: 0xa0000000, 0x154de: 0xa0000000, 0x154df: 0xa0000000,
+-	0x154e0: 0x40021220, 0x154e1: 0x4002ba20, 0x154e2: 0x4003e020, 0x154e3: 0x4004ea20,
+-	0x154e4: 0x4027de20, 0x154e5: 0x4004ec20, 0x154e6: 0x4004e620, 0x154e7: 0x4003d220,
+-	0x154e8: 0x4003f420, 0x154e9: 0x4003f620, 0x154ea: 0x4004d820, 0x154eb: 0x40093820,
+-	0x154ec: 0x40024020, 0x154ed: 0x40021a20, 0x154ee: 0x4002e420, 0x154ef: 0x4004e220,
+-	0x154f0: 0x4029cc20, 0x154f1: 0x4029ce20, 0x154f2: 0x4029d020, 0x154f3: 0x4029d220,
+-	0x154f4: 0x4029d420, 0x154f5: 0x4029d620, 0x154f6: 0x4029d820, 0x154f7: 0x4029da20,
+-	0x154f8: 0x4029dc20, 0x154f9: 0x4029de20, 0x154fa: 0x40026c20, 0x154fb: 0x40026220,
+-	0x154fc: 0x40094020, 0x154fd: 0x40094220, 0x154fe: 0x40094420, 0x154ff: 0x4002c420,
+-	// Block 0x554, offset 0x15500
+-	0x15500: 0x4004d620, 0x15501: 0x002bde88, 0x15502: 0x002c0a88, 0x15503: 0xcab40991,
+-	0x15504: 0x002c6288, 0x15505: 0x002c9888, 0x15506: 0x002d0888, 0x15507: 0xcab80911,
+-	0x15508: 0x002d6888, 0x15509: 0x002d9a88, 0x1550a: 0x002dcc88, 0x1550b: 0xcabc0911,
+-	0x1550c: 0xcac23c93, 0x1550d: 0x002e8288, 0x1550e: 0xcac80911, 0x1550f: 0x002ee288,
+-	0x15510: 0x002f2c88, 0x15511: 0x002f5688, 0x15512: 0xcacc0911, 0x15513: 0xcad00991,
+-	0x15514: 0x00302c88, 0x15515: 0x00306c88, 0x15516: 0x0030be88, 0x15517: 0x0030e288,
+-	0x15518: 0x0030f688, 0x15519: 0x00310088, 0x1551a: 0xcad40991, 0x1551b: 0x4003f820,
+-	0x1551c: 0x4004e420, 0x1551d: 0x4003fa20, 0x1551e: 0x40062420, 0x1551f: 0x40021620,
+-	0x15520: 0x40061e20, 0x15521: 0x402bde20, 0x15522: 0x402c0a20, 0x15523: 0xcab20991,
+-	0x15524: 0x402c6220, 0x15525: 0x402c9820, 0x15526: 0x402d0820, 0x15527: 0xcab60911,
+-	0x15528: 0x402d6820, 0x15529: 0x402d9a20, 0x1552a: 0x402dcc20, 0x1552b: 0xcaba0911,
+-	0x1552c: 0xcabe3c93, 0x1552d: 0x402e8220, 0x1552e: 0xcac60911, 0x1552f: 0x402ee220,
+-	0x15530: 0x402f2c20, 0x15531: 0x402f5620, 0x15532: 0xcaca0911, 0x15533: 0xcace0991,
+-	0x15534: 0x40302c20, 0x15535: 0x40306c20, 0x15536: 0x4030be20, 0x15537: 0x4030e220,
+-	0x15538: 0x4030f620, 0x15539: 0x40310020, 0x1553a: 0xcad20991, 0x1553b: 0x4003fc20,
+-	0x1553c: 0x40094820, 0x1553d: 0x4003fe20, 0x1553e: 0x40094c20, 0x1553f: 0xa0000000,
+-	// Block 0x555, offset 0x15540
+-	0x15540: 0xe0000983, 0x15541: 0xe0000980, 0x15542: 0xe00008fb, 0x15543: 0xe00008f8,
+-	0x15544: 0xe000097d, 0x15545: 0xe000097a, 0x15546: 0xe0000a38, 0x15547: 0xe0000a35,
+-	0x15548: 0xe0000a3e, 0x15549: 0xe0000a3b, 0x1554a: 0xe0000a4a, 0x1554b: 0xe0000a47,
+-	0x1554c: 0x002c6083, 0x1554d: 0x402c6020, 0x1554e: 0xe0000a86, 0x1554f: 0xe0000a83,
+-	0x15550: 0xe0000aaa, 0x15551: 0xe0000aa7, 0x15552: 0xe0000b46, 0x15553: 0xe0000b43,
+-	0x15554: 0xe0000aee, 0x15555: 0xe0000aeb, 0x15556: 0xe0000b2c, 0x15557: 0xe0000b29,
+-	0x15558: 0xe0000b40, 0x15559: 0xe0000b3d, 0x1555a: 0xe0000b1a, 0x1555b: 0xe0000b17,
+-	0x1555c: 0xe0000bb8, 0x1555d: 0xe0000bb5, 0x1555e: 0xe0000bb2, 0x1555f: 0xe0000baf,
+-	0x15560: 0xe0000bc4, 0x15561: 0xe0000bc1, 0x15562: 0x002d6683, 0x15563: 0x402d6620,
+-	0x15564: 0xe0000bee, 0x15565: 0xe0000beb, 0x15566: 0xe0000c1b, 0x15567: 0xe0000c18,
+-	0x15568: 0xe0000c51, 0x15569: 0xe0000c4e, 0x1556a: 0xe0000c60, 0x1556b: 0xe0000c5d,
+-	0x1556c: 0xe0000c31, 0x1556d: 0xe0000c2e, 0x1556e: 0xe0000c5a, 0x1556f: 0xe0000c57,
+-	0x15570: 0xe0000c54, 0x15571: 0x402da220, 0x15572: 0xf0000a0a, 0x15573: 0xf0000404,
+-	0x15574: 0xe0000c8a, 0x15575: 0xe0000c87, 0x15576: 0x002e2083, 0x15577: 0x402e2020,
+-	0x15578: 0x402f7220, 0x15579: 0xe0000ccc, 0x1557a: 0xe0000cc9, 0x1557b: 0x002e8083,
+-	0x1557c: 0x402e8020, 0x1557d: 0xe0000cd2, 0x1557e: 0xe0000ccf, 0x1557f: 0xe0000d04,
+-	// Block 0x556, offset 0x15580
+-	0x15580: 0xe0000cfe, 0x15581: 0xe0000cf8, 0x15582: 0xe0000cf5, 0x15583: 0xe0000d51,
+-	0x15584: 0xe0000d4e, 0x15585: 0x002ee083, 0x15586: 0x402ee020, 0x15587: 0xe0000d5d,
+-	0x15588: 0xe0000d5a, 0x15589: 0xf0000404, 0x1558a: 0x002eda88, 0x1558b: 0x402eda20,
+-	0x1558c: 0xe0000e2e, 0x1558d: 0xe0000e2b, 0x1558e: 0xe0000da0, 0x1558f: 0xe0000d9d,
+-	0x15590: 0xe0000de0, 0x15591: 0xe0000ddd, 0x15592: 0xe0000e93, 0x15593: 0xe0000e8f,
+-	0x15594: 0xe0000eca, 0x15595: 0xe0000ec7, 0x15596: 0x002fe483, 0x15597: 0x402fe420,
+-	0x15598: 0xe0000ed0, 0x15599: 0xe0000ecd, 0x1559a: 0xe0000f1f, 0x1559b: 0xe0000f1c,
+-	0x1559c: 0xe0000f2d, 0x1559d: 0xe0000f2a, 0x1559e: 0xe0000f47, 0x1559f: 0xe0000f44,
+-	0x155a0: 0x00302a83, 0x155a1: 0x40302a20, 0x155a2: 0xe0000f99, 0x155a3: 0xe0000f96,
+-	0x155a4: 0xe0000f8a, 0x155a5: 0xe0000f87, 0x155a6: 0x00303688, 0x155a7: 0x40303620,
+-	0x155a8: 0xe000102b, 0x155a9: 0xe0001028, 0x155aa: 0xe000103f, 0x155ab: 0xe000103c,
+-	0x155ac: 0xe0000fe7, 0x155ad: 0xe0000fe4, 0x155ae: 0xe0000ff9, 0x155af: 0xe0000ff6,
+-	0x155b0: 0xe0001025, 0x155b1: 0xe0001022, 0x155b2: 0xe0001039, 0x155b3: 0xe0001036,
+-	0x155b4: 0xe00010d8, 0x155b5: 0xe00010d5, 0x155b6: 0xe000110e, 0x155b7: 0xe000110b,
+-	0x155b8: 0xe0001117, 0x155b9: 0xe000113b, 0x155ba: 0xe0001138, 0x155bb: 0xe000114d,
+-	0x155bc: 0xe000114a, 0x155bd: 0x00316283, 0x155be: 0x40316220, 0x155bf: 0xe0000f64,
+-	// Block 0x557, offset 0x155c0
+-	0x155c0: 0xe0000d24, 0x155c1: 0xe0000d21, 0x155c2: 0xe0000d2a, 0x155c3: 0xe0000d27,
+-	0x155c4: 0xe0000d69, 0x155c5: 0xe0000d66, 0x155c6: 0xe0000d7b, 0x155c7: 0xe0000d78,
+-	0x155c8: 0xe0000d87, 0x155c9: 0xe0000d84, 0x155ca: 0xe0000d81, 0x155cb: 0xe0000d7e,
+-	0x155cc: 0xe0000ded, 0x155cd: 0xe0000de9, 0x155ce: 0xe0000df5, 0x155cf: 0xe0000df1,
+-	0x155d0: 0xe0000e3d, 0x155d1: 0xe0000e39, 0x155d2: 0xe0000e35, 0x155d3: 0xe0000e31,
+-	0x155d4: 0xe0000ea7, 0x155d5: 0xe0000ea4, 0x155d6: 0xe0000ead, 0x155d7: 0xe0000eaa,
+-	0x155d8: 0xe0000ed6, 0x155d9: 0xe0000ed3, 0x155da: 0xe0000ef4, 0x155db: 0xe0000ef1,
+-	0x155dc: 0xe0000efb, 0x155dd: 0xe0000ef7, 0x155de: 0xe0000f02, 0x155df: 0xe0000eff,
+-	0x155e0: 0xe0000f41, 0x155e1: 0xe0000f3e, 0x155e2: 0xe0000f53, 0x155e3: 0xe0000f50,
+-	0x155e4: 0xe0000f26, 0x155e5: 0xe0000f22, 0x155e6: 0xe000a594, 0x155e7: 0xe000a591,
+-	0x155e8: 0xe0000f5a, 0x155e9: 0xe0000f56, 0x155ea: 0xe0000f93, 0x155eb: 0xe0000f90,
+-	0x155ec: 0xe0000f9f, 0x155ed: 0xe0000f9c, 0x155ee: 0xe0000fb1, 0x155ef: 0xe0000fae,
+-	0x155f0: 0xe0000fab, 0x155f1: 0xe0000fa8, 0x155f2: 0xe0001093, 0x155f3: 0xe0001090,
+-	0x155f4: 0xe000109f, 0x155f5: 0xe000109c, 0x155f6: 0xe0001099, 0x155f7: 0xe0001096,
+-	0x155f8: 0xe0001032, 0x155f9: 0xe000102e, 0x155fa: 0xe0001046, 0x155fb: 0xe0001042,
+-	0x155fc: 0xe00010a9, 0x155fd: 0xe00010a6, 0x155fe: 0xe00010af, 0x155ff: 0xe00010ac,
+-	// Block 0x558, offset 0x15600
+-	0x15602: 0xe000a5ac, 0x15603: 0xa000f402,
+-	0x15605: 0x40440220, 0x15606: 0x40440420, 0x15607: 0x40440620,
+-	0x15608: 0x40440820, 0x15609: 0x40440a20, 0x1560a: 0x40440c20, 0x1560b: 0x40440e20,
+-	0x1560c: 0x40441220, 0x1560e: 0x40441620, 0x1560f: 0x40441820,
+-	0x15610: 0x40441a20, 0x15612: 0x40441c20, 0x15613: 0x40441e20,
+-	0x15614: 0x40442020, 0x15615: 0xcad63cf1, 0x15616: 0x40442420, 0x15617: 0x40442620,
+-	0x15618: 0x40442820, 0x15619: 0x40442a20, 0x1561a: 0x40442c20, 0x1561b: 0x40442e20,
+-	0x1561c: 0x40443020, 0x1561d: 0x40443220, 0x1561e: 0x40443420, 0x1561f: 0x40443620,
+-	0x15620: 0x40443820, 0x15621: 0x40443a20, 0x15622: 0x40443c20, 0x15623: 0xcad83d51,
+-	0x15624: 0x40444020, 0x15625: 0x40444220, 0x15626: 0x40444420, 0x15627: 0x40444620,
+-	0x15628: 0xcadc3cf1, 0x15629: 0x40444a20, 0x1562a: 0x40444c20, 0x1562b: 0x40444e20,
+-	0x1562c: 0x40445020, 0x1562d: 0x40445220, 0x1562e: 0x40445420, 0x1562f: 0x40445620,
+-	0x15630: 0xcade3cf1, 0x15631: 0x40446a20, 0x15632: 0xcae03cf1, 0x15633: 0xcae23cf1,
+-	0x15634: 0x40446820, 0x15635: 0x40445c20, 0x15636: 0x40445e20, 0x15637: 0x40446020,
+-	0x15638: 0x40446220, 0x15639: 0x40446420, 0x1563a: 0x40446c20,
+-	0x1563d: 0xa000f502, 0x1563e: 0x40447020, 0x1563f: 0x40447220,
+-	// Block 0x559, offset 0x15640
+-	0x15640: 0x40447420, 0x15641: 0x40447620, 0x15642: 0x40447820, 0x15643: 0x40447a20,
+-	0x15644: 0x40447c20, 0x15646: 0xcae403b1, 0x15647: 0xc0760401,
+-	0x15648: 0x40448620, 0x1564a: 0x40448820, 0x1564b: 0x40448a20,
+-	0x1564c: 0x00448c83, 0x1564d: 0x82092248, 0x1564e: 0xe000186c,
+-	0x15657: 0x40448c20,
+-	0x15660: 0x40441020, 0x15661: 0x40441420, 0x15662: 0x40447e20, 0x15663: 0x40448020,
+-	0x15666: 0xe0000185, 0x15667: 0xe0000216,
+-	0x15668: 0xe0000331, 0x15669: 0xe000040b, 0x1566a: 0xe00004e0, 0x1566b: 0xe00005aa,
+-	0x1566c: 0xe0000675, 0x1566d: 0xe000071d, 0x1566e: 0xe00007c9, 0x1566f: 0xe000086e,
+-	0x15670: 0x40285a20, 0x15671: 0x40285c20, 0x15672: 0x40285e20, 0x15673: 0x40286020,
+-	0x15674: 0x40286220, 0x15675: 0x40286420,
+-	0x15679: 0x40074e20, 0x1567a: 0xe000a5a0, 0x1567b: 0xcada3dc1,
+-	0x1567c: 0xe000a5b2, 0x1567d: 0xe000a5b8, 0x1567e: 0xe000a5be, 0x1567f: 0xe000a59a,
+-	// Block 0x55a, offset 0x15680
+-	0x15680: 0xa000f202, 0x15681: 0x403fba21, 0x15682: 0x403fba20, 0x15683: 0x403fbc20,
+-	0x15684: 0x403fbc20, 0x15685: 0x403fbe20, 0x15686: 0x403fc020, 0x15687: 0x403fcc20,
+-	0x15688: 0x403fce20, 0x15689: 0x403fd020, 0x1568a: 0x403fd220, 0x1568b: 0x403fd420,
+-	0x1568c: 0x403fd820, 0x1568d: 0x403fdc20, 0x1568e: 0x403fde20, 0x1568f: 0x403fe020,
+-	0x15690: 0x403fe220, 0x15691: 0x403fe420, 0x15692: 0x403fe620, 0x15693: 0x403fe820,
+-	0x15694: 0x403fea20, 0x15695: 0xca983ba1, 0x15696: 0x403fee20, 0x15697: 0x403ff020,
+-	0x15698: 0x403ff420, 0x15699: 0x403ff620, 0x1569a: 0x403ff820, 0x1569b: 0x403ffa20,
+-	0x1569c: 0xcae73df1, 0x1569d: 0x40400220, 0x1569e: 0x40400420, 0x1569f: 0x40400620,
+-	0x156a0: 0x40400820, 0x156a1: 0x40400a20, 0x156a2: 0x40400e20, 0x156a3: 0x40401020,
+-	0x156a4: 0x40401220, 0x156a5: 0x40401420, 0x156a6: 0x40401620, 0x156a7: 0x40401820,
+-	0x156a8: 0x40401a20, 0x156a9: 0xe0001830, 0x156aa: 0x40401c20, 0x156ab: 0x40401e20,
+-	0x156ac: 0x40402020, 0x156ad: 0x40402420, 0x156ae: 0x40402620, 0x156af: 0x40402820,
+-	0x156b0: 0x40402c20, 0x156b1: 0xe0001839, 0x156b2: 0x40402e20, 0x156b3: 0x40403c20,
+-	0x156b4: 0xe000a54f, 0x156b5: 0x40403220, 0x156b6: 0x40403420, 0x156b7: 0x40403620,
+-	0x156b8: 0x40403820, 0x156b9: 0x40403a20, 0x156ba: 0x40404c20, 0x156bb: 0x40404e20,
+-	0x156bc: 0xa070f102, 0x156bd: 0x40403c20, 0x156be: 0x40404a20, 0x156bf: 0x40405620,
+-	// Block 0x55b, offset 0x156c0
+-	0x156c0: 0xa0000000, 0x156c1: 0xa0000000, 0x156c2: 0xa0000000, 0x156c3: 0xa0000000,
+-	0x156c4: 0xa0000000, 0x156c5: 0xa0000000, 0x156c6: 0xa0000000, 0x156c7: 0xa0000000,
+-	0x156c8: 0xa0000000, 0x156c9: 0x40020020, 0x156ca: 0x40020220, 0x156cb: 0x40020420,
+-	0x156cc: 0x40020620, 0x156cd: 0x40020820, 0x156ce: 0xa0000000, 0x156cf: 0xa0000000,
+-	0x156d0: 0xa0000000, 0x156d1: 0xa0000000, 0x156d2: 0xa0000000, 0x156d3: 0xa0000000,
+-	0x156d4: 0xa0000000, 0x156d5: 0xa0000000, 0x156d6: 0xa0000000, 0x156d7: 0xa0000000,
+-	0x156d8: 0xa0000000, 0x156d9: 0xa0000000, 0x156da: 0xa0000000, 0x156db: 0xa0000000,
+-	0x156dc: 0xa0000000, 0x156dd: 0xa0000000, 0x156de: 0xa0000000, 0x156df: 0xa0000000,
+-	0x156e0: 0x40021220, 0x156e1: 0x4002ba20, 0x156e2: 0x4003e020, 0x156e3: 0x4004ea20,
+-	0x156e4: 0x4027de20, 0x156e5: 0x4004ec20, 0x156e6: 0x4004e620, 0x156e7: 0x4003d220,
+-	0x156e8: 0x4003f420, 0x156e9: 0x4003f620, 0x156ea: 0x4004d820, 0x156eb: 0x40093820,
+-	0x156ec: 0x40024020, 0x156ed: 0x40021a20, 0x156ee: 0x4002e420, 0x156ef: 0x4004e220,
+-	0x156f0: 0x4029cc20, 0x156f1: 0x4029ce20, 0x156f2: 0x4029d020, 0x156f3: 0x4029d220,
+-	0x156f4: 0x4029d420, 0x156f5: 0x4029d620, 0x156f6: 0x4029d820, 0x156f7: 0x4029da20,
+-	0x156f8: 0x4029dc20, 0x156f9: 0x4029de20, 0x156fa: 0x40026c20, 0x156fb: 0x40026220,
+-	0x156fc: 0x40094020, 0x156fd: 0x40094220, 0x156fe: 0x40094420, 0x156ff: 0x4002c420,
+-	// Block 0x55c, offset 0x15700
+-	0x15700: 0x4004d620, 0x15701: 0x002bde88, 0x15702: 0x002c0a88, 0x15703: 0xcae90931,
+-	0x15704: 0x002c6288, 0x15705: 0x002c9888, 0x15706: 0x002d0888, 0x15707: 0xcaed3e52,
+-	0x15708: 0x002d6888, 0x15709: 0x002d9a88, 0x1570a: 0x002dcc88, 0x1570b: 0x002dfe88,
+-	0x1570c: 0xc0030002, 0x1570d: 0x002e8288, 0x1570e: 0x002e9e88, 0x1570f: 0x002ee288,
+-	0x15710: 0x002f2c88, 0x15711: 0x002f5688, 0x15712: 0x002f7a88, 0x15713: 0x002fe688,
+-	0x15714: 0x00302c88, 0x15715: 0x00306c88, 0x15716: 0x0030be88, 0x15717: 0x0030e288,
+-	0x15718: 0x0030f688, 0x15719: 0x00310088, 0x1571a: 0xcaf50931, 0x1571b: 0x4003f820,
+-	0x1571c: 0x4004e420, 0x1571d: 0x4003fa20, 0x1571e: 0x40062420, 0x1571f: 0x40021620,
+-	0x15720: 0x40061e20, 0x15721: 0x402bde20, 0x15722: 0x402c0a20, 0x15723: 0xcaeb0931,
+-	0x15724: 0x402c6220, 0x15725: 0x402c9820, 0x15726: 0x402d0820, 0x15727: 0xcaf13e52,
+-	0x15728: 0x402d6820, 0x15729: 0x402d9a20, 0x1572a: 0x402dcc20, 0x1572b: 0x402dfe20,
+-	0x1572c: 0xc0000002, 0x1572d: 0x402e8220, 0x1572e: 0x402e9e20, 0x1572f: 0x402ee220,
+-	0x15730: 0x402f2c20, 0x15731: 0x402f5620, 0x15732: 0x402f7a20, 0x15733: 0x402fe620,
+-	0x15734: 0x40302c20, 0x15735: 0x40306c20, 0x15736: 0x4030be20, 0x15737: 0x4030e220,
+-	0x15738: 0x4030f620, 0x15739: 0x40310020, 0x1573a: 0xcaf70931, 0x1573b: 0x4003fc20,
+-	0x1573c: 0x40094820, 0x1573d: 0x4003fe20, 0x1573e: 0x40094c20, 0x1573f: 0xa0000000,
+-	// Block 0x55d, offset 0x15740
+-	0x15740: 0xe0000983, 0x15741: 0xe0000980, 0x15742: 0xe00008fb, 0x15743: 0xe00008f8,
+-	0x15744: 0xe000097d, 0x15745: 0xe000097a, 0x15746: 0xe0000a38, 0x15747: 0xe0000a35,
+-	0x15748: 0xe0000a3e, 0x15749: 0xe0000a3b, 0x1574a: 0x402c3820, 0x1574b: 0x002c3883,
+-	0x1574c: 0xe0000a44, 0x1574d: 0xe0000a41, 0x1574e: 0xe0000a86, 0x1574f: 0xe0000a83,
+-	0x15750: 0xe0000aaa, 0x15751: 0xe0000aa7, 0x15752: 0xe0000b46, 0x15753: 0xe0000b43,
+-	0x15754: 0xe0000aee, 0x15755: 0xe0000aeb, 0x15756: 0xe0000b2c, 0x15757: 0xe0000b29,
+-	0x15758: 0xe0000b40, 0x15759: 0xe0000b3d, 0x1575a: 0xe0000b1a, 0x1575b: 0xe0000b17,
+-	0x1575c: 0xe0000bb8, 0x1575d: 0xe0000bb5, 0x1575e: 0xe0000bb2, 0x1575f: 0xe0000baf,
+-	0x15760: 0x402d2020, 0x15761: 0x002d2083, 0x15762: 0xe0000bca, 0x15763: 0xe0000bc7,
+-	0x15764: 0xe0000bee, 0x15765: 0xe0000beb, 0x15766: 0x402d9820, 0x15767: 0x002d9883,
+-	0x15768: 0xe0000c51, 0x15769: 0xe0000c4e, 0x1576a: 0xe0000c60, 0x1576b: 0xe0000c5d,
+-	0x1576c: 0xe0000c31, 0x1576d: 0xe0000c2e, 0x1576e: 0xe0000c5a, 0x1576f: 0xe0000c57,
+-	0x15770: 0xe0000c54, 0x15771: 0x402da220, 0x15772: 0xf0000a0a, 0x15773: 0xf0000404,
+-	0x15774: 0xe0000c8a, 0x15775: 0xe0000c87, 0x15776: 0xe0000c9f, 0x15777: 0xe0000c9c,
+-	0x15778: 0x402f7220, 0x15779: 0xe0000ccc, 0x1577a: 0xe0000cc9, 0x1577b: 0xe0000cd8,
+-	0x1577c: 0xe0000cd5, 0x1577d: 0xe0000cd2, 0x1577e: 0xe0000ccf, 0x1577f: 0xe0000d04,
+-	// Block 0x55e, offset 0x15780
+-	0x15780: 0xe0000cfe, 0x15781: 0xe0000cf8, 0x15782: 0xe0000cf5, 0x15783: 0xe0000d51,
+-	0x15784: 0xe0000d4e, 0x15785: 0xe0000d6f, 0x15786: 0xe0000d6c, 0x15787: 0xe0000d5d,
+-	0x15788: 0xe0000d5a, 0x15789: 0xf0000404, 0x1578a: 0x002eda88, 0x1578b: 0x402eda20,
+-	0x1578c: 0xe0000e2e, 0x1578d: 0xe0000e2b, 0x1578e: 0xe0000da0, 0x1578f: 0xe0000d9d,
+-	0x15790: 0xe0000de0, 0x15791: 0xe0000ddd, 0x15792: 0xe0000e93, 0x15793: 0xe0000e8f,
+-	0x15794: 0xe0000eca, 0x15795: 0xe0000ec7, 0x15796: 0xe0000edc, 0x15797: 0xe0000ed9,
+-	0x15798: 0xe0000ed0, 0x15799: 0xe0000ecd, 0x1579a: 0xe0000f1f, 0x1579b: 0xe0000f1c,
+-	0x1579c: 0xe0000f2d, 0x1579d: 0xe0000f2a, 0x1579e: 0xe0000f47, 0x1579f: 0xe0000f44,
+-	0x157a0: 0xe0000f33, 0x157a1: 0xe0000f30, 0x157a2: 0xe0000f99, 0x157a3: 0xe0000f96,
+-	0x157a4: 0xe0000f8a, 0x157a5: 0xe0000f87, 0x157a6: 0x00303688, 0x157a7: 0x40303620,
+-	0x157a8: 0xe000102b, 0x157a9: 0xe0001028, 0x157aa: 0xe000103f, 0x157ab: 0xe000103c,
+-	0x157ac: 0xe0000fe7, 0x157ad: 0xe0000fe4, 0x157ae: 0xe0000ff9, 0x157af: 0xe0000ff6,
+-	0x157b0: 0xe0001025, 0x157b1: 0xe0001022, 0x157b2: 0xe0001039, 0x157b3: 0xe0001036,
+-	0x157b4: 0xe00010d8, 0x157b5: 0xe00010d5, 0x157b6: 0xe000110e, 0x157b7: 0xe000110b,
+-	0x157b8: 0xe0001117, 0x157b9: 0xe000113b, 0x157ba: 0xe0001138, 0x157bb: 0x40312820,
+-	0x157bc: 0x00312883, 0x157bd: 0xe0001147, 0x157be: 0xe0001144, 0x157bf: 0xe0000f64,
+-	// Block 0x55f, offset 0x157c0
+-	0x157c0: 0xe00009bc, 0x157c1: 0xe00009c0, 0x157c2: 0x002c3a8b, 0x157c3: 0xf0000a04,
+-	0x157c4: 0x40081c20, 0x157c5: 0xe0000a5e, 0x157c6: 0xe0000a62, 0x157c7: 0x002cc28a,
+-	0x157c8: 0x40081e20, 0x157c9: 0xf0000a04, 0x157ca: 0x002d2285, 0x157cb: 0x002d688b,
+-	0x157cc: 0x002d688b, 0x157cd: 0x002d688b, 0x157ce: 0x002d6885, 0x157cf: 0xe000a5c1,
+-	0x157d0: 0x002d9a8b, 0x157d1: 0x002d9a8b, 0x157d2: 0x002e228b, 0x157d3: 0x002e2285,
+-	0x157d4: 0x40082020, 0x157d5: 0x002e9e8b, 0x157d6: 0xf000040a, 0x157d7: 0x40082220,
+-	0x157d8: 0x40082420, 0x157d9: 0x002f2c8b, 0x157da: 0x002f568b, 0x157db: 0x002f7a8b,
+-	0x157dc: 0x002f7a8b, 0x157dd: 0x002f7a8b, 0x157de: 0x40082620, 0x157df: 0x40082820,
+-	0x157e0: 0xf0001414, 0x157e1: 0xe0000fbd, 0x157e2: 0xf0001414, 0x157e3: 0x40082a20,
+-	0x157e4: 0x00312a8b, 0x157e5: 0x40082c20, 0x157e6: 0x0032a288, 0x157e7: 0x40082e20,
+-	0x157e8: 0x00312a8b, 0x157e9: 0x40083020, 0x157ea: 0x002dfe88, 0x157eb: 0xe000094d,
+-	0x157ec: 0x002c0a8b, 0x157ed: 0x002c3a8b, 0x157ee: 0x40083220, 0x157ef: 0x002c9885,
+-	0x157f0: 0x002c988b, 0x157f1: 0x002d088b, 0x157f2: 0x002d1e88, 0x157f3: 0x002e828b,
+-	0x157f4: 0x002ee285, 0x157f5: 0x00389084, 0x157f6: 0x00389284, 0x157f7: 0x00389484,
+-	0x157f8: 0x00389684, 0x157f9: 0x002d9a85, 0x157fa: 0x40083420, 0x157fb: 0xe0000b95,
+-	0x157fc: 0x00327e85, 0x157fd: 0x00325685, 0x157fe: 0x0032568b, 0x157ff: 0x00327e8b,
+-	// Block 0x560, offset 0x15800
+-	0x15838: 0xe000a5c4, 0x15839: 0xe0000e97, 0x1583a: 0x4030a820, 0x1583b: 0x402d2020,
+-	0x1583c: 0x402f4a20, 0x1583d: 0x402e9820, 0x1583e: 0x402db220, 0x1583f: 0x402e9a20,
+-	// Block 0x561, offset 0x15840
+-	0x15840: 0xccd58051, 0x15841: 0xcda08051, 0x15842: 0xcda38051, 0x15843: 0xcda88051,
+-	0x15844: 0xcdab9311, 0x15845: 0xcdae8051, 0x15846: 0xcdb18051, 0x15847: 0xcdb48051,
+-	0x15848: 0xcdb79371, 0x15849: 0xcdb98051, 0x1584a: 0xcdbc8051, 0x1584b: 0xcdbf8051,
+-	0x1584c: 0xcdc28051, 0x1584d: 0xcdc58051, 0x1584e: 0xcdc88051, 0x1584f: 0xcdcb8051,
+-	0x15850: 0xcdce8051, 0x15851: 0xcaf93e91, 0x15852: 0xcdd18051, 0x15853: 0xcdd48051,
+-	0x15854: 0xcafd3f91, 0x15855: 0xcdd78051, 0x15856: 0xcdda8051, 0x15857: 0xcddd8051,
+-	0x15858: 0xcde08051, 0x15859: 0xcde38051, 0x1585a: 0xcde68051, 0x1585b: 0xcde98051,
+-	0x1585c: 0xcb014061, 0x1585d: 0xcdec9371, 0x1585e: 0xcb084261, 0x1585f: 0xcdee8051,
+-	0x15860: 0xcdf19371, 0x15861: 0xcdf39371, 0x15862: 0x404ec420, 0x15863: 0xe000a600,
+-	0x15864: 0xe000a606, 0x15865: 0xcb0c4301, 0x15866: 0xe000a610, 0x15867: 0xe000a613,
+-	0x15868: 0xe000a616, 0x15869: 0xcb0f4371, 0x1586a: 0xe000a8ed, 0x1586b: 0xcd198081,
+-	0x1586c: 0xccd88081, 0x1586d: 0xcc4e6de1, 0x1586e: 0x404eea20, 0x1586f: 0xcd5a8951,
+-	0x15870: 0x404ef420, 0x15871: 0xcb8852f1, 0x15872: 0x404f0620, 0x15873: 0x404eec20,
+-	0x15874: 0x404f0a20, 0x15875: 0x404f0220, 0x15876: 0x404f0c20, 0x15877: 0xcda692e1,
+-	0x15878: 0x404f3020, 0x15879: 0x8209278a, 0x1587a: 0x8209278b, 0x1587b: 0xcdf593a1,
+-	0x1587c: 0xcdf993a1, 0x1587d: 0xcdfd9411, 0x1587e: 0x40510e20, 0x1587f: 0xe000a5fc,
+-	// Block 0x562, offset 0x15880
+-	0x15880: 0xe00001ac, 0x15881: 0xe0000240, 0x15882: 0xe0000358, 0x15883: 0xe0000432,
+-	0x15884: 0xe0000507, 0x15885: 0xe00005d1, 0x15886: 0xe000069c, 0x15887: 0xe0000744,
+-	0x15888: 0xe00007f0, 0x15889: 0xe0000895, 0x1588a: 0x40032220, 0x1588b: 0x40032420,
+-	0x1588c: 0xe000a5d4, 0x1588d: 0xe000a5db, 0x1588e: 0xcb0641d1, 0x1588f: 0xe000a603,
+-	0x15890: 0x404ea020, 0x15891: 0x404ea220, 0x15892: 0x404ece20, 0x15893: 0x404ed020,
+-	0x15894: 0x404ed220, 0x15895: 0x404ed420, 0x15896: 0x404ef620, 0x15897: 0x404ef820,
+-	0x15898: 0x404efa20, 0x15899: 0x404efc20, 0x1589a: 0x404e2620, 0x1589b: 0x404e3c20,
+-	0x1589c: 0x404eb820, 0x1589d: 0x404eba20, 0x1589e: 0x40510020, 0x1589f: 0x40510220,
+-	0x158a0: 0x40510820, 0x158a1: 0x404e4020, 0x158a2: 0x404f0c20, 0x158a3: 0x404f1820,
+-	0x158a4: 0x404f1a20, 0x158a5: 0x404ea420, 0x158a6: 0x404ec020, 0x158a7: 0x404f0e20,
+-	0x158a8: 0x404f1020, 0x158a9: 0x404f1c20, 0x158aa: 0x404f1e20, 0x158ab: 0x404f2020,
+-	0x158ac: 0x404f2220, 0x158ad: 0x404f2420, 0x158ae: 0x404e5c20, 0x158af: 0x404ebc20,
+-	0x158b0: 0x404ebe20, 0x158b1: 0x404ee820, 0x158b2: 0x404ee220, 0x158b3: 0x404ef020,
+-	0x158b4: 0x404ef220, 0x158b5: 0x404e1620, 0x158b6: 0x404e1a20, 0x158b7: 0x404e1e20,
+-	0x158b8: 0x404e2a20, 0x158b9: 0x404e3620, 0x158ba: 0x404e4420, 0x158bb: 0x404e6420,
+-	0x158bc: 0x404e6c20, 0x158bd: 0x404e7620, 0x158be: 0x404e7820, 0x158bf: 0x404e8020,
+-	// Block 0x563, offset 0x158c0
+-	0x158c0: 0x404e9e20, 0x158c1: 0x404eac20, 0x158c2: 0x40510c20, 0x158c3: 0x404ee020,
+-	0x158c4: 0x404f0020, 0x158c5: 0x404f0420, 0x158c6: 0x404f1220, 0x158c7: 0x404f2620,
+-	0x158c8: 0x404f2a20, 0x158c9: 0x404f2e20, 0x158ca: 0x404f3020, 0x158cb: 0x404f2820,
+-	0x158cc: 0x404f2c20, 0x158cd: 0xadc11302, 0x158ce: 0x404e7c20, 0x158cf: 0x404f3220,
+-	0x158d0: 0xe00001af, 0x158d1: 0xe0000243, 0x158d2: 0xe000035b, 0x158d3: 0xe0000435,
+-	0x158d4: 0xe000050a, 0x158d5: 0xe00005d4, 0x158d6: 0xe000069f, 0x158d7: 0xe0000747,
+-	0x158d8: 0xe00007f3, 0x158d9: 0xe0000898, 0x158da: 0x404f3420, 0x158db: 0x404f3620,
+-	0x158dc: 0x404ee420, 0x158dd: 0x404f0820, 0x158de: 0x4007a820, 0x158df: 0x4007aa20,
+-	0x158e0: 0x00379888, 0x158e1: 0x00379c88, 0x158e2: 0x0037a088, 0x158e3: 0x0037a488,
+-	0x158e4: 0x0037a888, 0x158e5: 0x0037ac88, 0x158e6: 0x0037b088, 0x158e7: 0x0037b888,
+-	0x158e8: 0x0037bc88, 0x158e9: 0x0037c088, 0x158ea: 0x0037c488, 0x158eb: 0x0037c888,
+-	0x158ec: 0x0037cc88, 0x158ed: 0x0037d488, 0x158ee: 0x0037d888, 0x158ef: 0x0037dc88,
+-	0x158f0: 0x0037e088, 0x158f1: 0x0037e488, 0x158f2: 0x0037e888, 0x158f3: 0x0037f088,
+-	0x158f4: 0x0037f488, 0x158f5: 0x0037f888, 0x158f6: 0x0037fc88, 0x158f7: 0x00380088,
+-	0x158f8: 0x00380488, 0x158f9: 0x00380888, 0x158fa: 0x00380c88, 0x158fb: 0x00381088,
+-	0x158fc: 0x00381488, 0x158fd: 0x00381888, 0x158fe: 0x00381c88, 0x158ff: 0x00382488,
+-	// Block 0x564, offset 0x15900
+-	0x15900: 0xa0000000, 0x15901: 0xa0000000, 0x15902: 0xa0000000, 0x15903: 0xa0000000,
+-	0x15904: 0xa0000000, 0x15905: 0xa0000000, 0x15906: 0xa0000000, 0x15907: 0xa0000000,
+-	0x15908: 0xa0000000, 0x15909: 0x40020020, 0x1590a: 0x40020220, 0x1590b: 0x40020420,
+-	0x1590c: 0x40020620, 0x1590d: 0x40020820, 0x1590e: 0xa0000000, 0x1590f: 0xa0000000,
+-	0x15910: 0xa0000000, 0x15911: 0xa0000000, 0x15912: 0xa0000000, 0x15913: 0xa0000000,
+-	0x15914: 0xa0000000, 0x15915: 0xa0000000, 0x15916: 0xa0000000, 0x15917: 0xa0000000,
+-	0x15918: 0xa0000000, 0x15919: 0xa0000000, 0x1591a: 0xa0000000, 0x1591b: 0xa0000000,
+-	0x1591c: 0xa0000000, 0x1591d: 0xa0000000, 0x1591e: 0xa0000000, 0x1591f: 0xa0000000,
+-	0x15920: 0x40021220, 0x15921: 0x4002ba20, 0x15922: 0x4003e020, 0x15923: 0x4004ea20,
+-	0x15924: 0x4027de20, 0x15925: 0x4004ec20, 0x15926: 0x4004e620, 0x15927: 0x4003d220,
+-	0x15928: 0x4003f420, 0x15929: 0x4003f620, 0x1592a: 0x4004d820, 0x1592b: 0x40093820,
+-	0x1592c: 0x40024020, 0x1592d: 0x40021a20, 0x1592e: 0x4002e420, 0x1592f: 0x4004e220,
+-	0x15930: 0x4029cc20, 0x15931: 0x4029ce20, 0x15932: 0x4029d020, 0x15933: 0x4029d220,
+-	0x15934: 0x4029d420, 0x15935: 0x4029d620, 0x15936: 0x4029d820, 0x15937: 0x4029da20,
+-	0x15938: 0x4029dc20, 0x15939: 0x4029de20, 0x1593a: 0x40026c20, 0x1593b: 0x40026220,
+-	0x1593c: 0x40094020, 0x1593d: 0x40094220, 0x1593e: 0x40094420, 0x1593f: 0x4002c420,
+-	// Block 0x565, offset 0x15940
+-	0x15940: 0x4004d620, 0x15941: 0xce030b93, 0x15942: 0x002c0a88, 0x15943: 0x002c3a88,
+-	0x15944: 0x002c6288, 0x15945: 0xc39e0be1, 0x15946: 0x002d0888, 0x15947: 0x002d2288,
+-	0x15948: 0x002d6888, 0x15949: 0x002d9a88, 0x1594a: 0x002dcc88, 0x1594b: 0x002dfe88,
+-	0x1594c: 0xc0030002, 0x1594d: 0x002e8288, 0x1594e: 0x002e9e88, 0x1594f: 0xc3a30b21,
+-	0x15950: 0x002f2c88, 0x15951: 0x002f5688, 0x15952: 0x002f7a88, 0x15953: 0x002fe688,
+-	0x15954: 0x00302c88, 0x15955: 0xc3900b21, 0x15956: 0x0030be88, 0x15957: 0x0030e288,
+-	0x15958: 0x0030f688, 0x15959: 0x00310088, 0x1595a: 0x00312a88, 0x1595b: 0x4003f820,
+-	0x1595c: 0x4004e420, 0x1595d: 0x4003fa20, 0x1595e: 0x40062420, 0x1595f: 0x40021620,
+-	0x15960: 0x40061e20, 0x15961: 0xcdff0b52, 0x15962: 0x402c0a20, 0x15963: 0x402c3a20,
+-	0x15964: 0x402c6220, 0x15965: 0xc39c0be1, 0x15966: 0x402d0820, 0x15967: 0x402d2220,
+-	0x15968: 0x402d6820, 0x15969: 0x402d9a20, 0x1596a: 0x402dcc20, 0x1596b: 0x402dfe20,
+-	0x1596c: 0xc0000002, 0x1596d: 0x402e8220, 0x1596e: 0x402e9e20, 0x1596f: 0xc3a00b21,
+-	0x15970: 0x402f2c20, 0x15971: 0x402f5620, 0x15972: 0x402f7a20, 0x15973: 0x402fe620,
+-	0x15974: 0x40302c20, 0x15975: 0xc38d0b21, 0x15976: 0x4030be20, 0x15977: 0x4030e220,
+-	0x15978: 0x4030f620, 0x15979: 0x40310020, 0x1597a: 0x40312a20, 0x1597b: 0x4003fc20,
+-	0x1597c: 0x40094820, 0x1597d: 0x4003fe20, 0x1597e: 0x40094c20, 0x1597f: 0xa0000000,
+-	// Block 0x566, offset 0x15980
+-	0x15980: 0xa0000000, 0x15981: 0xa0000000, 0x15982: 0xa0000000, 0x15983: 0xa0000000,
+-	0x15984: 0xa0000000, 0x15985: 0xa0000000, 0x15986: 0xa0000000, 0x15987: 0xa0000000,
+-	0x15988: 0xa0000000, 0x15989: 0x40020020, 0x1598a: 0x40020220, 0x1598b: 0x40020420,
+-	0x1598c: 0x40020620, 0x1598d: 0x40020820, 0x1598e: 0xa0000000, 0x1598f: 0xa0000000,
+-	0x15990: 0xa0000000, 0x15991: 0xa0000000, 0x15992: 0xa0000000, 0x15993: 0xa0000000,
+-	0x15994: 0xa0000000, 0x15995: 0xa0000000, 0x15996: 0xa0000000, 0x15997: 0xa0000000,
+-	0x15998: 0xa0000000, 0x15999: 0xa0000000, 0x1599a: 0xa0000000, 0x1599b: 0xa0000000,
+-	0x1599c: 0xa0000000, 0x1599d: 0xa0000000, 0x1599e: 0xa0000000, 0x1599f: 0xa0000000,
+-	0x159a0: 0x40021220, 0x159a1: 0x4002ba20, 0x159a2: 0x4003e020, 0x159a3: 0x4004ea20,
+-	0x159a4: 0x4027de20, 0x159a5: 0x4004ec20, 0x159a6: 0x4004e620, 0x159a7: 0x4003d220,
+-	0x159a8: 0x4003f420, 0x159a9: 0x4003f620, 0x159aa: 0x4004d820, 0x159ab: 0x40093820,
+-	0x159ac: 0x40024020, 0x159ad: 0x40021a20, 0x159ae: 0x4002e420, 0x159af: 0x4004e220,
+-	0x159b0: 0x4029cc20, 0x159b1: 0x4029ce20, 0x159b2: 0x4029d020, 0x159b3: 0x4029d220,
+-	0x159b4: 0x4029d420, 0x159b5: 0x4029d620, 0x159b6: 0x4029d820, 0x159b7: 0x4029da20,
+-	0x159b8: 0x4029dc20, 0x159b9: 0x4029de20, 0x159ba: 0x40026c20, 0x159bb: 0x40026220,
+-	0x159bc: 0x40094020, 0x159bd: 0x40094220, 0x159be: 0x40094420, 0x159bf: 0x4002c420,
+-	// Block 0x567, offset 0x159c0
+-	0x159c0: 0x4004d620, 0x159c1: 0x002bde88, 0x159c2: 0x002c0a88, 0x159c3: 0x002c3a88,
+-	0x159c4: 0x002c6288, 0x159c5: 0xce0a2741, 0x159c6: 0x002d0888, 0x159c7: 0x002d2288,
+-	0x159c8: 0x002d6888, 0x159c9: 0x002d9a88, 0x159ca: 0x002dcc88, 0x159cb: 0x002dfe88,
+-	0x159cc: 0xc0030002, 0x159cd: 0x002e8288, 0x159ce: 0x002e9e88, 0x159cf: 0xc33f2741,
+-	0x159d0: 0x002f2c88, 0x159d1: 0x002f5688, 0x159d2: 0x002f7a88, 0x159d3: 0xc3430991,
+-	0x159d4: 0x00302c88, 0x159d5: 0x00306c88, 0x159d6: 0x0030be88, 0x159d7: 0x0030e288,
+-	0x159d8: 0x0030f688, 0x159d9: 0x00310088, 0x159da: 0x00312a88, 0x159db: 0x4003f820,
+-	0x159dc: 0x4004e420, 0x159dd: 0x4003fa20, 0x159de: 0x40062420, 0x159df: 0x40021620,
+-	0x159e0: 0x40061e20, 0x159e1: 0x402bde20, 0x159e2: 0x402c0a20, 0x159e3: 0x402c3a20,
+-	0x159e4: 0x402c6220, 0x159e5: 0xce082741, 0x159e6: 0x402d0820, 0x159e7: 0x402d2220,
+-	0x159e8: 0x402d6820, 0x159e9: 0x402d9a20, 0x159ea: 0x402dcc20, 0x159eb: 0x402dfe20,
+-	0x159ec: 0xc0000002, 0x159ed: 0x402e8220, 0x159ee: 0x402e9e20, 0x159ef: 0xc33d2741,
+-	0x159f0: 0x402f2c20, 0x159f1: 0x402f5620, 0x159f2: 0x402f7a20, 0x159f3: 0xc3410991,
+-	0x159f4: 0x40302c20, 0x159f5: 0x40306c20, 0x159f6: 0x4030be20, 0x159f7: 0x4030e220,
+-	0x159f8: 0x4030f620, 0x159f9: 0x40310020, 0x159fa: 0x40312a20, 0x159fb: 0x4003fc20,
+-	0x159fc: 0x40094820, 0x159fd: 0x4003fe20, 0x159fe: 0x40094c20, 0x159ff: 0xa0000000,
+-	// Block 0x568, offset 0x15a00
+-	0x15a00: 0xe00008f5, 0x15a01: 0xe00008ef, 0x15a02: 0xe0000921, 0x15a03: 0xe0000969,
+-	0x15a04: 0xe000095b, 0x15a05: 0xe000094d, 0x15a06: 0xe00009dd, 0x15a07: 0xe0000a53,
+-	0x15a08: 0xe0000ae8, 0x15a09: 0xe0000ae2, 0x15a0a: 0x002c9a83, 0x15a0b: 0xe0000b20,
+-	0x15a0c: 0xe0000c2b, 0x15a0d: 0xe0000c25, 0x15a0e: 0xe0000c37, 0x15a0f: 0xe0000c43,
+-	0x15a10: 0xe0000ab3, 0x15a11: 0xe0000d63, 0x15a12: 0xe0000d9a, 0x15a13: 0xe0000d94,
+-	0x15a14: 0x002ee483, 0x15a15: 0xe0000de6, 0x15a16: 0xe0000dd2, 0x15a17: 0x40093e20,
+-	0x15a18: 0xe0000e12, 0x15a19: 0xe0000fe1, 0x15a1a: 0xe0000fdb, 0x15a1b: 0xe0000fed,
+-	0x15a1c: 0xe0000fff, 0x15a1d: 0xe0001102, 0x15a1e: 0x00318888, 0x15a1f: 0xe0000f7b,
+-	0x15a20: 0xe00008f2, 0x15a21: 0xe00008ec, 0x15a22: 0xe000091e, 0x15a23: 0xe0000966,
+-	0x15a24: 0xe0000958, 0x15a25: 0xe000094a, 0x15a26: 0xe00009d5, 0x15a27: 0xe0000a4d,
+-	0x15a28: 0xe0000ae5, 0x15a29: 0xe0000adf, 0x15a2a: 0x402c9a20, 0x15a2b: 0xe0000b1d,
+-	0x15a2c: 0xe0000c28, 0x15a2d: 0xe0000c22, 0x15a2e: 0xe0000c34, 0x15a2f: 0xe0000c40,
+-	0x15a30: 0xe0000aad, 0x15a31: 0xe0000d60, 0x15a32: 0xe0000d97, 0x15a33: 0xe0000d91,
+-	0x15a34: 0x402ee420, 0x15a35: 0xe0000de3, 0x15a36: 0xe0000dcf, 0x15a37: 0x40093c20,
+-	0x15a38: 0xe0000e0f, 0x15a39: 0xe0000fde, 0x15a3a: 0xe0000fd8, 0x15a3b: 0xe0000fea,
+-	0x15a3c: 0xe0000ffc, 0x15a3d: 0xe00010ff, 0x15a3e: 0x40318820, 0x15a3f: 0xe0001114,
+-	// Block 0x569, offset 0x15a40
+-	0x15a40: 0xe0000cfe, 0x15a41: 0xe0000cf8, 0x15a42: 0xe0000cf5, 0x15a43: 0xe0000d51,
+-	0x15a44: 0xe0000d4e, 0x15a45: 0xe0000d6f, 0x15a46: 0xe0000d6c, 0x15a47: 0xe0000d5d,
+-	0x15a48: 0xe0000d5a, 0x15a49: 0xf0000404, 0x15a4a: 0x002eda88, 0x15a4b: 0x402eda20,
+-	0x15a4c: 0xe0000e2e, 0x15a4d: 0xe0000e2b, 0x15a4e: 0xe0000da0, 0x15a4f: 0xe0000d9d,
+-	0x15a50: 0xe0000de0, 0x15a51: 0xe0000ddd, 0x15a52: 0xe0000e93, 0x15a53: 0xe0000e8f,
+-	0x15a54: 0xe0000eca, 0x15a55: 0xe0000ec7, 0x15a56: 0xe0000edc, 0x15a57: 0xe0000ed9,
+-	0x15a58: 0xe0000ed0, 0x15a59: 0xe0000ecd, 0x15a5a: 0xe0000f1f, 0x15a5b: 0xe0000f1c,
+-	0x15a5c: 0xe0000f2d, 0x15a5d: 0xe0000f2a, 0x15a5e: 0xe0000f47, 0x15a5f: 0xe0000f44,
+-	0x15a60: 0x002fe883, 0x15a61: 0x402fe820, 0x15a62: 0xe0000f99, 0x15a63: 0xe0000f96,
+-	0x15a64: 0xe0000f8a, 0x15a65: 0xe0000f87, 0x15a66: 0x00303688, 0x15a67: 0x40303620,
+-	0x15a68: 0xe000102b, 0x15a69: 0xe0001028, 0x15a6a: 0xe000103f, 0x15a6b: 0xe000103c,
+-	0x15a6c: 0xe0000fe7, 0x15a6d: 0xe0000fe4, 0x15a6e: 0xe0000ff9, 0x15a6f: 0xe0000ff6,
+-	0x15a70: 0xe0001025, 0x15a71: 0xe0001022, 0x15a72: 0xe0001039, 0x15a73: 0xe0001036,
+-	0x15a74: 0xe00010d8, 0x15a75: 0xe00010d5, 0x15a76: 0xe000110e, 0x15a77: 0xe000110b,
+-	0x15a78: 0xe0001117, 0x15a79: 0xe000113b, 0x15a7a: 0xe0001138, 0x15a7b: 0xe000114d,
+-	0x15a7c: 0xe000114a, 0x15a7d: 0xe0001147, 0x15a7e: 0xe0001144, 0x15a7f: 0xe0000f64,
+-	// Block 0x56a, offset 0x15a80
+-	0x15a80: 0xe00010d2, 0x15a81: 0xe00010cf, 0x15a82: 0xe00010cc, 0x15a83: 0xe00010c9,
+-	0x15a84: 0xe00010e1, 0x15a85: 0xe00010de, 0x15a86: 0xe00010e7, 0x15a87: 0xe00010e4,
+-	0x15a88: 0xe00010ed, 0x15a89: 0xe00010ea, 0x15a8a: 0xe00010fc, 0x15a8b: 0xe00010f9,
+-	0x15a8c: 0xe00010f6, 0x15a8d: 0xe00010f3, 0x15a8e: 0xe0001123, 0x15a8f: 0xe0001120,
+-	0x15a90: 0xe0001141, 0x15a91: 0xe000113e, 0x15a92: 0xe0001153, 0x15a93: 0xe0001150,
+-	0x15a94: 0xe0001159, 0x15a95: 0xe0001156, 0x15a96: 0xe0000c15, 0x15a97: 0xe0000f8d,
+-	0x15a98: 0xe00010db, 0x15a99: 0xe0001111, 0x15a9a: 0xf0000404, 0x15a9b: 0xe0000f70,
+-	0x15a9c: 0x40300420, 0x15a9d: 0x40300620, 0x15a9e: 0xe0000f7f, 0x15a9f: 0x402c9620,
+-	0x15aa0: 0xe000099b, 0x15aa1: 0xe0000998, 0x15aa2: 0xe0000989, 0x15aa3: 0xe0000986,
+-	0x15aa4: 0xe0000928, 0x15aa5: 0xe0000924, 0x15aa6: 0xe0000930, 0x15aa7: 0xe000092c,
+-	0x15aa8: 0xe0000940, 0x15aa9: 0xe000093c, 0x15aaa: 0xe0000938, 0x15aab: 0xe0000934,
+-	0x15aac: 0xe00009aa, 0x15aad: 0xe00009a6, 0x15aae: 0xe0000902, 0x15aaf: 0xe00008fe,
+-	0x15ab0: 0xe000090a, 0x15ab1: 0xe0000906, 0x15ab2: 0xe000091a, 0x15ab3: 0xe0000916,
+-	0x15ab4: 0xe0000912, 0x15ab5: 0xe000090e, 0x15ab6: 0xe00009a2, 0x15ab7: 0xe000099e,
+-	0x15ab8: 0xe0000b6e, 0x15ab9: 0xe0000b6b, 0x15aba: 0xe0000b5c, 0x15abb: 0xe0000b59,
+-	0x15abc: 0xe0000b26, 0x15abd: 0xe0000b23, 0x15abe: 0xe000a8fc, 0x15abf: 0xe000a8f9,
+-	// Block 0x56b, offset 0x15ac0
+-	0x15ac0: 0xe000a902, 0x15ac1: 0xe000a8ff, 0x15ac2: 0xe000a90e, 0x15ac3: 0xe000a90b,
+-	0x15ac4: 0xe000a908, 0x15ac5: 0xe000a905, 0x15ac6: 0xe000a914, 0x15ac7: 0xe000a911,
+-	0x15ac8: 0xe0000c66, 0x15ac9: 0xe0000c63, 0x15aca: 0xe0000c78, 0x15acb: 0xe0000c75,
+-	0x15acc: 0xe0000e84, 0x15acd: 0xe0000e81, 0x15ace: 0xe0000e44, 0x15acf: 0xe0000e41,
+-	0x15ad0: 0xe000a91a, 0x15ad1: 0xe000a917, 0x15ad2: 0xe000a920, 0x15ad3: 0xe000a91d,
+-	0x15ad4: 0xe000a926, 0x15ad5: 0xe000a923, 0x15ad6: 0xe000258a, 0x15ad7: 0xe0002587,
+-	0x15ad8: 0xe000a92c, 0x15ad9: 0xe000a929, 0x15ada: 0xe0000e5d, 0x15adb: 0xe0000e59,
+-	0x15adc: 0xe0000e65, 0x15add: 0xe0000e61, 0x15ade: 0xe0000e75, 0x15adf: 0xe0000e71,
+-	0x15ae0: 0xe0000e6d, 0x15ae1: 0xe0000e69, 0x15ae2: 0xe0000e7d, 0x15ae3: 0xe0000e79,
+-	0x15ae4: 0xe000108d, 0x15ae5: 0xe000108a, 0x15ae6: 0xe000104d, 0x15ae7: 0xe000104a,
+-	0x15ae8: 0xe0001066, 0x15ae9: 0xe0001062, 0x15aea: 0xe000106e, 0x15aeb: 0xe000106a,
+-	0x15aec: 0xe000107e, 0x15aed: 0xe000107a, 0x15aee: 0xe0001076, 0x15aef: 0xe0001072,
+-	0x15af0: 0xe0001086, 0x15af1: 0xe0001082, 0x15af2: 0xe0001108, 0x15af3: 0xe0001105,
+-	0x15af4: 0xe0001135, 0x15af5: 0xe0001132, 0x15af6: 0xe000112f, 0x15af7: 0xe000112c,
+-	0x15af8: 0xe000111d, 0x15af9: 0xe000111a, 0x15afa: 0xe0000d0a, 0x15afb: 0xe0000d07,
+-	0x15afc: 0x0030d888, 0x15afd: 0x4030d820, 0x15afe: 0x00312088, 0x15aff: 0x40312020,
+-	// Block 0x56c, offset 0x15b00
+-	0x15b00: 0xa0000000, 0x15b01: 0xa0000000, 0x15b02: 0xa0000000, 0x15b03: 0xa0000000,
+-	0x15b04: 0xa0000000, 0x15b05: 0xa0000000, 0x15b06: 0xa0000000, 0x15b07: 0xa0000000,
+-	0x15b08: 0xa0000000, 0x15b09: 0x40020020, 0x15b0a: 0x40020220, 0x15b0b: 0x40020420,
+-	0x15b0c: 0x40020620, 0x15b0d: 0x40020820, 0x15b0e: 0xa0000000, 0x15b0f: 0xa0000000,
+-	0x15b10: 0xa0000000, 0x15b11: 0xa0000000, 0x15b12: 0xa0000000, 0x15b13: 0xa0000000,
+-	0x15b14: 0xa0000000, 0x15b15: 0xa0000000, 0x15b16: 0xa0000000, 0x15b17: 0xa0000000,
+-	0x15b18: 0xa0000000, 0x15b19: 0xa0000000, 0x15b1a: 0xa0000000, 0x15b1b: 0xa0000000,
+-	0x15b1c: 0xa0000000, 0x15b1d: 0xa0000000, 0x15b1e: 0xa0000000, 0x15b1f: 0xa0000000,
+-	0x15b20: 0x40021220, 0x15b21: 0x4002ba20, 0x15b22: 0x4003e020, 0x15b23: 0x4004ea20,
+-	0x15b24: 0x4027de20, 0x15b25: 0x4004ec20, 0x15b26: 0x4004e620, 0x15b27: 0x4003d220,
+-	0x15b28: 0x4003f420, 0x15b29: 0x4003f620, 0x15b2a: 0x4004d820, 0x15b2b: 0x40093820,
+-	0x15b2c: 0x40024020, 0x15b2d: 0x40021a20, 0x15b2e: 0x4002e420, 0x15b2f: 0x4004e220,
+-	0x15b30: 0x4029cc20, 0x15b31: 0x4029ce20, 0x15b32: 0x4029d020, 0x15b33: 0x4029d220,
+-	0x15b34: 0x4029d420, 0x15b35: 0x4029d620, 0x15b36: 0x4029d820, 0x15b37: 0x4029da20,
+-	0x15b38: 0x4029dc20, 0x15b39: 0x4029de20, 0x15b3a: 0x40026c20, 0x15b3b: 0x40026220,
+-	0x15b3c: 0x40094020, 0x15b3d: 0x40094220, 0x15b3e: 0x40094420, 0x15b3f: 0x4002c420,
+-	// Block 0x56d, offset 0x15b40
+-	0x15b40: 0x4004d620, 0x15b41: 0x002bde88, 0x15b42: 0x002c0a88, 0x15b43: 0xce0e09c2,
+-	0x15b44: 0xce1309c2, 0x15b45: 0x002c9888, 0x15b46: 0x002d0888, 0x15b47: 0x002d2288,
+-	0x15b48: 0x002d6888, 0x15b49: 0x002d9a88, 0x15b4a: 0x002dcc88, 0x15b4b: 0xce1809c2,
+-	0x15b4c: 0xc0030002, 0x15b4d: 0x002e8288, 0x15b4e: 0xce1d26f2, 0x15b4f: 0x002ee288,
+-	0x15b50: 0xce2209c2, 0x15b51: 0x002f5688, 0x15b52: 0x002f7a88, 0x15b53: 0xce2709b1,
+-	0x15b54: 0x00302c88, 0x15b55: 0x00306c88, 0x15b56: 0x0030be88, 0x15b57: 0x0030e288,
+-	0x15b58: 0x0030f688, 0x15b59: 0x00310088, 0x15b5a: 0x00312a88, 0x15b5b: 0x4003f820,
+-	0x15b5c: 0x4004e420, 0x15b5d: 0x4003fa20, 0x15b5e: 0x40062420, 0x15b5f: 0x40021620,
+-	0x15b60: 0x40061e20, 0x15b61: 0x402bde20, 0x15b62: 0x402c0a20, 0x15b63: 0xce0c09b1,
+-	0x15b64: 0xce1109b1, 0x15b65: 0x402c9820, 0x15b66: 0x402d0820, 0x15b67: 0x402d2220,
+-	0x15b68: 0x402d6820, 0x15b69: 0x402d9a20, 0x15b6a: 0x402dcc20, 0x15b6b: 0xce1609b1,
+-	0x15b6c: 0xc0000002, 0x15b6d: 0x402e8220, 0x15b6e: 0xce1b26e1, 0x15b6f: 0x402ee220,
+-	0x15b70: 0xce2009b1, 0x15b71: 0x402f5620, 0x15b72: 0x402f7a20, 0x15b73: 0xce2509b1,
+-	0x15b74: 0x40302c20, 0x15b75: 0x40306c20, 0x15b76: 0x4030be20, 0x15b77: 0x4030e220,
+-	0x15b78: 0x4030f620, 0x15b79: 0x40310020, 0x15b7a: 0x40312a20, 0x15b7b: 0x4003fc20,
+-	0x15b7c: 0x40094820, 0x15b7d: 0x4003fe20, 0x15b7e: 0x40094c20, 0x15b7f: 0xa0000000,
+-	// Block 0x56e, offset 0x15b80
+-	0x15b81: 0x40421220, 0x15b82: 0x40421420, 0x15b83: 0x40421620,
+-	0x15b85: 0x4041f620, 0x15b86: 0x4041f820, 0x15b87: 0x4041fa20,
+-	0x15b88: 0x4041fc20, 0x15b89: 0x4041fe20, 0x15b8a: 0x40420020, 0x15b8b: 0x40420220,
+-	0x15b8c: 0x40420620, 0x15b8f: 0x40420a20,
+-	0x15b90: 0x40420c20, 0x15b93: 0x40420e20,
+-	0x15b94: 0x40421020, 0x15b95: 0xce299441, 0x15b96: 0x40421420, 0x15b97: 0x40421620,
+-	0x15b98: 0x40421820, 0x15b99: 0x40421a20, 0x15b9a: 0x40421c20, 0x15b9b: 0x40421e20,
+-	0x15b9c: 0x40422020, 0x15b9d: 0x40422220, 0x15b9e: 0x40422420, 0x15b9f: 0x40422620,
+-	0x15ba0: 0x40422820, 0x15ba1: 0x40422a20, 0x15ba2: 0x40422c20, 0x15ba3: 0x40422e20,
+-	0x15ba4: 0x40423020, 0x15ba5: 0x40423220, 0x15ba6: 0x40423420, 0x15ba7: 0x40423620,
+-	0x15ba8: 0x40423820, 0x15baa: 0x40423a20, 0x15bab: 0x40423c20,
+-	0x15bac: 0x40423e20, 0x15bad: 0x40424020, 0x15bae: 0x40424220, 0x15baf: 0x40424420,
+-	0x15bb0: 0x40424820, 0x15bb2: 0x40424a20, 0x15bb3: 0x40424c20,
+-	0x15bb5: 0x40424e20, 0x15bb6: 0x40425220, 0x15bb7: 0x40425420,
+-	0x15bb8: 0x40425620, 0x15bb9: 0x40425820,
+-	0x15bbc: 0xa070f102, 0x15bbd: 0x40425a20, 0x15bbe: 0x40425c20, 0x15bbf: 0x40425e20,
+-	// Block 0x56f, offset 0x15bc0
+-	0x15bc0: 0x40426020, 0x15bc1: 0x40426220, 0x15bc2: 0x40426420, 0x15bc3: 0x40426620,
+-	0x15bc4: 0x40426820, 0x15bc7: 0xc05d01e1,
+-	0x15bc8: 0x40427020, 0x15bcb: 0x40427220,
+-	0x15bcc: 0x40427420, 0x15bcd: 0x8209213b,
+-	0x15bd6: 0x40427820, 0x15bd7: 0x40427a20,
+-	0x15bdc: 0xe000185d, 0x15bdd: 0xe0001860, 0x15bdf: 0x40424421,
+-	0x15be0: 0x40420420, 0x15be1: 0x40420820, 0x15be2: 0x40426a20, 0x15be3: 0x40426c20,
+-	0x15be6: 0xe0000176, 0x15be7: 0xe0000204,
+-	0x15be8: 0xe000031f, 0x15be9: 0xe00003f9, 0x15bea: 0xe00004d4, 0x15beb: 0xe000059e,
+-	0x15bec: 0xe0000669, 0x15bed: 0xe0000711, 0x15bee: 0xe00007bd, 0x15bef: 0xe0000862,
+-	0x15bf0: 0x40073c20, 0x15bf1: 0x40425020, 0x15bf2: 0x40283c20, 0x15bf3: 0x40283e20,
+-	0x15bf4: 0x40284020, 0x15bf5: 0x40284220, 0x15bf6: 0x40284420, 0x15bf7: 0x40284620,
+-	// Block 0x570, offset 0x15c00
+-	0x15c01: 0xa000f902, 0x15c02: 0xa000f802, 0x15c03: 0xa000f402,
+-	0x15c05: 0x40410620, 0x15c06: 0x40410820, 0x15c07: 0x40411020,
+-	0x15c08: 0x40411220, 0x15c09: 0x40410020, 0x15c0a: 0x40410220,
+-	0x15c0f: 0x40411420,
+-	0x15c10: 0x40410a20, 0x15c13: 0x40410420,
+-	0x15c14: 0x40410c20, 0x15c15: 0x40411c20, 0x15c16: 0x40411e20, 0x15c17: 0x40412020,
+-	0x15c18: 0x40412220, 0x15c19: 0x40412420, 0x15c1a: 0x40412620, 0x15c1b: 0x40412820,
+-	0x15c1c: 0x40412a20, 0x15c1d: 0x40412c20, 0x15c1e: 0x40412e20, 0x15c1f: 0x40413020,
+-	0x15c20: 0x40413220, 0x15c21: 0x40413420, 0x15c22: 0x40413620, 0x15c23: 0x40413820,
+-	0x15c24: 0x40413a20, 0x15c25: 0x40413c20, 0x15c26: 0x40413e20, 0x15c27: 0x40414020,
+-	0x15c28: 0x40414220, 0x15c2a: 0x40414420, 0x15c2b: 0x40414620,
+-	0x15c2c: 0x40414820, 0x15c2d: 0x40414a20, 0x15c2e: 0x40414c20, 0x15c2f: 0x40414e20,
+-	0x15c30: 0x40415220, 0x15c32: 0x40415420, 0x15c33: 0xe000a93e,
+-	0x15c35: 0x40415620, 0x15c36: 0xe000a92f,
+-	0x15c38: 0x40411620, 0x15c39: 0x40411820,
+-	0x15c3c: 0xa000fa02, 0x15c3e: 0x40415a20, 0x15c3f: 0x40415c20,
+-	// Block 0x571, offset 0x15c40
+-	0x15c40: 0x40415e20, 0x15c41: 0x40416020, 0x15c42: 0x40416220,
+-	0x15c47: 0x40416420,
+-	0x15c48: 0x40416620, 0x15c4b: 0x40416820,
+-	0x15c4c: 0x40416a20, 0x15c4d: 0x40415a20,
+-	0x15c51: 0x40411a20,
+-	0x15c59: 0xe000a932, 0x15c5a: 0xe000a935, 0x15c5b: 0xe000a938,
+-	0x15c5c: 0x40415820, 0x15c5e: 0xe000a93b,
+-	0x15c66: 0xe0000170, 0x15c67: 0xe00001fe,
+-	0x15c68: 0xe0000319, 0x15c69: 0xe00003f3, 0x15c6a: 0xe00004ce, 0x15c6b: 0xe0000598,
+-	0x15c6c: 0xe0000663, 0x15c6d: 0xe000070b, 0x15c6e: 0xe00007b7, 0x15c6f: 0xe000085c,
+-	0x15c70: 0xa000f702, 0x15c71: 0xa000f602, 0x15c72: 0x40410e20, 0x15c73: 0x4040fe20,
+-	0x15c74: 0x4040fc20, 0x15c75: 0x40415020,
+-	// Block 0x572, offset 0x15c80
+-	0x15c80: 0xa0000000, 0x15c81: 0xa0000000, 0x15c82: 0xa0000000, 0x15c83: 0xa0000000,
+-	0x15c84: 0xa0000000, 0x15c85: 0xa0000000, 0x15c86: 0xa0000000, 0x15c87: 0xa0000000,
+-	0x15c88: 0xa0000000, 0x15c89: 0x40020020, 0x15c8a: 0x40020220, 0x15c8b: 0x40020420,
+-	0x15c8c: 0x40020620, 0x15c8d: 0x40020820, 0x15c8e: 0xa0000000, 0x15c8f: 0xa0000000,
+-	0x15c90: 0xa0000000, 0x15c91: 0xa0000000, 0x15c92: 0xa0000000, 0x15c93: 0xa0000000,
+-	0x15c94: 0xa0000000, 0x15c95: 0xa0000000, 0x15c96: 0xa0000000, 0x15c97: 0xa0000000,
+-	0x15c98: 0xa0000000, 0x15c99: 0xa0000000, 0x15c9a: 0xa0000000, 0x15c9b: 0xa0000000,
+-	0x15c9c: 0xa0000000, 0x15c9d: 0xa0000000, 0x15c9e: 0xa0000000, 0x15c9f: 0xa0000000,
+-	0x15ca0: 0x40021220, 0x15ca1: 0x4002ba20, 0x15ca2: 0x4003e020, 0x15ca3: 0x4004ea20,
+-	0x15ca4: 0x4027de20, 0x15ca5: 0x4004ec20, 0x15ca6: 0x4004e620, 0x15ca7: 0x4003d220,
+-	0x15ca8: 0x4003f420, 0x15ca9: 0x4003f620, 0x15caa: 0x4004d820, 0x15cab: 0x40093820,
+-	0x15cac: 0x40024020, 0x15cad: 0x40021a20, 0x15cae: 0x4002e420, 0x15caf: 0x4004e220,
+-	0x15cb0: 0x4029cc20, 0x15cb1: 0x4029ce20, 0x15cb2: 0x4029d020, 0x15cb3: 0x4029d220,
+-	0x15cb4: 0x4029d420, 0x15cb5: 0x4029d620, 0x15cb6: 0x4029d820, 0x15cb7: 0x4029da20,
+-	0x15cb8: 0x4029dc20, 0x15cb9: 0x4029de20, 0x15cba: 0x40026c20, 0x15cbb: 0x40026220,
+-	0x15cbc: 0x40094020, 0x15cbd: 0x40094220, 0x15cbe: 0x40094420, 0x15cbf: 0x4002c420,
+-	// Block 0x573, offset 0x15cc0
+-	0x15cc0: 0x4004d620, 0x15cc1: 0xce2d0be1, 0x15cc2: 0x002c0a88, 0x15cc3: 0xc33531a1,
+-	0x15cc4: 0x002c6288, 0x15cc5: 0xce0a0be1, 0x15cc6: 0x002d0888, 0x15cc7: 0x002d2288,
+-	0x15cc8: 0x002d6888, 0x15cc9: 0x002d9a88, 0x15cca: 0x002dcc88, 0x15ccb: 0x002dfe88,
+-	0x15ccc: 0xc0030002, 0x15ccd: 0x002e8288, 0x15cce: 0xc53a31a1, 0x15ccf: 0xc33f31a1,
+-	0x15cd0: 0x002f2c88, 0x15cd1: 0x002f5688, 0x15cd2: 0x002f7a88, 0x15cd3: 0xc34331a1,
+-	0x15cd4: 0x00302c88, 0x15cd5: 0x00306c88, 0x15cd6: 0x0030be88, 0x15cd7: 0x0030e288,
+-	0x15cd8: 0x0030f688, 0x15cd9: 0x00310088, 0x15cda: 0xce3294a1, 0x15cdb: 0x4003f820,
+-	0x15cdc: 0x4004e420, 0x15cdd: 0x4003fa20, 0x15cde: 0x40062420, 0x15cdf: 0x40021620,
+-	0x15ce0: 0x40061e20, 0x15ce1: 0xce2b0be1, 0x15ce2: 0x402c0a20, 0x15ce3: 0xc33331a1,
+-	0x15ce4: 0x402c6220, 0x15ce5: 0xce080be1, 0x15ce6: 0x402d0820, 0x15ce7: 0x402d2220,
+-	0x15ce8: 0x402d6820, 0x15ce9: 0x402d9a20, 0x15cea: 0x402dcc20, 0x15ceb: 0x402dfe20,
+-	0x15cec: 0xc0000002, 0x15ced: 0x402e8220, 0x15cee: 0xc52731a1, 0x15cef: 0xc33d31a1,
+-	0x15cf0: 0x402f2c20, 0x15cf1: 0x402f5620, 0x15cf2: 0x402f7a20, 0x15cf3: 0xc34131a1,
+-	0x15cf4: 0x40302c20, 0x15cf5: 0x40306c20, 0x15cf6: 0x4030be20, 0x15cf7: 0x4030e220,
+-	0x15cf8: 0x4030f620, 0x15cf9: 0x40310020, 0x15cfa: 0xce2f94a1, 0x15cfb: 0x4003fc20,
+-	0x15cfc: 0x40094820, 0x15cfd: 0x4003fe20, 0x15cfe: 0x40094c20, 0x15cff: 0xa0000000,
+-	// Block 0x574, offset 0x15d00
+-	0x15d00: 0xe00008f5, 0x15d01: 0xe00008ef, 0x15d02: 0xe0000921, 0x15d03: 0xe0000969,
+-	0x15d04: 0xe000095b, 0x15d05: 0xe000094d, 0x15d06: 0xe00009dd, 0x15d07: 0xe0000a53,
+-	0x15d08: 0xe0000ae8, 0x15d09: 0xe0000ae2, 0x15d0a: 0xe0000af4, 0x15d0b: 0xe0000b20,
+-	0x15d0c: 0xe0000c2b, 0x15d0d: 0xe0000c25, 0x15d0e: 0xe0000c37, 0x15d0f: 0xe0000c43,
+-	0x15d10: 0xe0000ab3, 0x15d11: 0xe0000d63, 0x15d12: 0xe0000d9a, 0x15d13: 0x002ee483,
+-	0x15d14: 0xe0000da6, 0x15d15: 0xe0000de6, 0x15d16: 0xe0000dd2, 0x15d17: 0x40093e20,
+-	0x15d18: 0xe0000e12, 0x15d19: 0xe0000fe1, 0x15d1a: 0xe0000fdb, 0x15d1b: 0xe0000fed,
+-	0x15d1c: 0xe0000fff, 0x15d1d: 0xe0001102, 0x15d1e: 0x00318888, 0x15d1f: 0xe0000f7b,
+-	0x15d20: 0xe00008f2, 0x15d21: 0xe00008ec, 0x15d22: 0xe000091e, 0x15d23: 0xe0000966,
+-	0x15d24: 0xe0000958, 0x15d25: 0xe000094a, 0x15d26: 0xe00009d5, 0x15d27: 0xe0000a4d,
+-	0x15d28: 0xe0000ae5, 0x15d29: 0xe0000adf, 0x15d2a: 0xe0000af1, 0x15d2b: 0xe0000b1d,
+-	0x15d2c: 0xe0000c28, 0x15d2d: 0xe0000c22, 0x15d2e: 0xe0000c34, 0x15d2f: 0xe0000c40,
+-	0x15d30: 0xe0000aad, 0x15d31: 0xe0000d60, 0x15d32: 0xe0000d97, 0x15d33: 0x402ee420,
+-	0x15d34: 0xe0000da3, 0x15d35: 0xe0000de3, 0x15d36: 0xe0000dcf, 0x15d37: 0x40093c20,
+-	0x15d38: 0xe0000e0f, 0x15d39: 0xe0000fde, 0x15d3a: 0xe0000fd8, 0x15d3b: 0xe0000fea,
+-	0x15d3c: 0xe0000ffc, 0x15d3d: 0xe00010ff, 0x15d3e: 0x40318820, 0x15d3f: 0xe0001114,
+-	// Block 0x575, offset 0x15d40
+-	0x15d40: 0xe0000983, 0x15d41: 0xe0000980, 0x15d42: 0xe00008fb, 0x15d43: 0xe00008f8,
+-	0x15d44: 0x002be083, 0x15d45: 0x402be020, 0x15d46: 0x002c3c83, 0x15d47: 0x402c3c20,
+-	0x15d48: 0xe0000a3e, 0x15d49: 0xe0000a3b, 0x15d4a: 0xe0000a4a, 0x15d4b: 0xe0000a47,
+-	0x15d4c: 0xe0000a44, 0x15d4d: 0xe0000a41, 0x15d4e: 0xe0000a86, 0x15d4f: 0xe0000a83,
+-	0x15d50: 0xe0000aaa, 0x15d51: 0xe0000aa7, 0x15d52: 0xe0000b46, 0x15d53: 0xe0000b43,
+-	0x15d54: 0xe0000aee, 0x15d55: 0xe0000aeb, 0x15d56: 0xe0000b2c, 0x15d57: 0xe0000b29,
+-	0x15d58: 0x002c9a83, 0x15d59: 0x402c9a20, 0x15d5a: 0xe0000b1a, 0x15d5b: 0xe0000b17,
+-	0x15d5c: 0xe0000bb8, 0x15d5d: 0xe0000bb5, 0x15d5e: 0xe0000bb2, 0x15d5f: 0xe0000baf,
+-	0x15d60: 0xe0000bc4, 0x15d61: 0xe0000bc1, 0x15d62: 0xe0000bca, 0x15d63: 0xe0000bc7,
+-	0x15d64: 0xe0000bee, 0x15d65: 0xe0000beb, 0x15d66: 0xe0000c1b, 0x15d67: 0xe0000c18,
+-	0x15d68: 0xe0000c51, 0x15d69: 0xe0000c4e, 0x15d6a: 0xe0000c60, 0x15d6b: 0xe0000c5d,
+-	0x15d6c: 0xe0000c31, 0x15d6d: 0xe0000c2e, 0x15d6e: 0xe0000c5a, 0x15d6f: 0xe0000c57,
+-	0x15d70: 0xe0000c54, 0x15d71: 0x402da220, 0x15d72: 0xf0000a0a, 0x15d73: 0xf0000404,
+-	0x15d74: 0xe0000c8a, 0x15d75: 0xe0000c87, 0x15d76: 0xe0000c9f, 0x15d77: 0xe0000c9c,
+-	0x15d78: 0x402f7220, 0x15d79: 0xe0000ccc, 0x15d7a: 0xe0000cc9, 0x15d7b: 0xe0000cd8,
+-	0x15d7c: 0xe0000cd5, 0x15d7d: 0xe0000cd2, 0x15d7e: 0xe0000ccf, 0x15d7f: 0xe0000d04,
+-	// Block 0x576, offset 0x15d80
+-	0x15d80: 0xe0000cfe, 0x15d81: 0x002e2483, 0x15d82: 0x402e2420, 0x15d83: 0x002ea083,
+-	0x15d84: 0x402ea020, 0x15d85: 0xe0000d6f, 0x15d86: 0xe0000d6c, 0x15d87: 0xe0000d5d,
+-	0x15d88: 0xe0000d5a, 0x15d89: 0xf0000404, 0x15d8a: 0x002eda88, 0x15d8b: 0x402eda20,
+-	0x15d8c: 0xe0000e2e, 0x15d8d: 0xe0000e2b, 0x15d8e: 0xe0000da0, 0x15d8f: 0xe0000d9d,
+-	0x15d90: 0xe0000de0, 0x15d91: 0xe0000ddd, 0x15d92: 0xe0000e93, 0x15d93: 0xe0000e8f,
+-	0x15d94: 0xe0000eca, 0x15d95: 0xe0000ec7, 0x15d96: 0xe0000edc, 0x15d97: 0xe0000ed9,
+-	0x15d98: 0xe0000ed0, 0x15d99: 0xe0000ecd, 0x15d9a: 0x002fe883, 0x15d9b: 0x402fe820,
+-	0x15d9c: 0xe0000f2d, 0x15d9d: 0xe0000f2a, 0x15d9e: 0xe0000f47, 0x15d9f: 0xe0000f44,
+-	0x15da0: 0xe0000f33, 0x15da1: 0xe0000f30, 0x15da2: 0xe0000f99, 0x15da3: 0xe0000f96,
+-	0x15da4: 0xe0000f8a, 0x15da5: 0xe0000f87, 0x15da6: 0x00303688, 0x15da7: 0x40303620,
+-	0x15da8: 0xe000102b, 0x15da9: 0xe0001028, 0x15daa: 0xe000103f, 0x15dab: 0xe000103c,
+-	0x15dac: 0xe0000fe7, 0x15dad: 0xe0000fe4, 0x15dae: 0xe0000ff9, 0x15daf: 0xe0000ff6,
+-	0x15db0: 0xe0001025, 0x15db1: 0xe0001022, 0x15db2: 0xe0001039, 0x15db3: 0xe0001036,
+-	0x15db4: 0xe00010d8, 0x15db5: 0xe00010d5, 0x15db6: 0xe000110e, 0x15db7: 0xe000110b,
+-	0x15db8: 0xe0001117, 0x15db9: 0x00312c83, 0x15dba: 0x40312c20, 0x15dbb: 0x00312e83,
+-	0x15dbc: 0x40312e20, 0x15dbd: 0xe0001147, 0x15dbe: 0xe0001144, 0x15dbf: 0xe0000f64,
+-	// Block 0x577, offset 0x15dc0
+-	0x15dc0: 0xe00009b1, 0x15dc1: 0xe00009ae, 0x15dc2: 0xe0000a22, 0x15dc3: 0xe0000a1f,
+-	0x15dc4: 0xe0000a28, 0x15dc5: 0xe0000a25, 0x15dc6: 0xe0000a2e, 0x15dc7: 0xe0000a2b,
+-	0x15dc8: 0xe000a944, 0x15dc9: 0xe000a941, 0x15dca: 0xe0000a8c, 0x15dcb: 0xe0000a89,
+-	0x15dcc: 0xe0000a98, 0x15dcd: 0xe0000a95, 0x15dce: 0xe0000aa4, 0x15dcf: 0xe0000aa1,
+-	0x15dd0: 0xe0000a92, 0x15dd1: 0xe0000a8f, 0x15dd2: 0xe0000a9e, 0x15dd3: 0xe0000a9b,
+-	0x15dd4: 0xe0000b55, 0x15dd5: 0xe0000b51, 0x15dd6: 0xe0000b4d, 0x15dd7: 0xe0000b49,
+-	0x15dd8: 0xe0000b7c, 0x15dd9: 0xe0000b79, 0x15dda: 0xe0000b82, 0x15ddb: 0xe0000b7f,
+-	0x15ddc: 0xe0000b39, 0x15ddd: 0xe0000b35, 0x15dde: 0xe0000b8c, 0x15ddf: 0xe0000b89,
+-	0x15de0: 0xe0000bd0, 0x15de1: 0xe0000bcd, 0x15de2: 0xe0000c00, 0x15de3: 0xe0000bfd,
+-	0x15de4: 0xe0000c0c, 0x15de5: 0xe0000c09, 0x15de6: 0xe0000bfa, 0x15de7: 0xe0000bf7,
+-	0x15de8: 0xe0000c06, 0x15de9: 0xe0000c03, 0x15dea: 0xe0000c12, 0x15deb: 0xe0000c0f,
+-	0x15dec: 0xe0000c7e, 0x15ded: 0xe0000c7b, 0x15dee: 0xe0000c4a, 0x15def: 0xe0000c46,
+-	0x15df0: 0xe0000c93, 0x15df1: 0xe0000c90, 0x15df2: 0xe0000cab, 0x15df3: 0xe0000ca8,
+-	0x15df4: 0xe0000cb1, 0x15df5: 0xe0000cae, 0x15df6: 0xe0000cde, 0x15df7: 0xe0000cdb,
+-	0x15df8: 0xe0000ce5, 0x15df9: 0xe0000ce1, 0x15dfa: 0xe0000cf2, 0x15dfb: 0xe0000cef,
+-	0x15dfc: 0xe0000cec, 0x15dfd: 0xe0000ce9, 0x15dfe: 0xe0000d1e, 0x15dff: 0xe0000d1b,
+-	// Block 0x578, offset 0x15e00
+-	0x15e00: 0xe0000d24, 0x15e01: 0xe0000d21, 0x15e02: 0xe0000d2a, 0x15e03: 0xe0000d27,
+-	0x15e04: 0xe0000d69, 0x15e05: 0xe0000d66, 0x15e06: 0xe0000d7b, 0x15e07: 0xe0000d78,
+-	0x15e08: 0xe0000d87, 0x15e09: 0xe0000d84, 0x15e0a: 0xe0000d81, 0x15e0b: 0xe0000d7e,
+-	0x15e0c: 0xe000258a, 0x15e0d: 0xe0002587, 0x15e0e: 0xe0000df5, 0x15e0f: 0xe0000df1,
+-	0x15e10: 0xe0000e3d, 0x15e11: 0xe0000e39, 0x15e12: 0xe0002590, 0x15e13: 0xe000258d,
+-	0x15e14: 0xe0000ea7, 0x15e15: 0xe0000ea4, 0x15e16: 0xe0000ead, 0x15e17: 0xe0000eaa,
+-	0x15e18: 0xe0000ed6, 0x15e19: 0xe0000ed3, 0x15e1a: 0xe0000ef4, 0x15e1b: 0xe0000ef1,
+-	0x15e1c: 0xe0000efb, 0x15e1d: 0xe0000ef7, 0x15e1e: 0xe0000f02, 0x15e1f: 0xe0000eff,
+-	0x15e20: 0xe0000f41, 0x15e21: 0xe0000f3e, 0x15e22: 0xe0000f53, 0x15e23: 0xe0000f50,
+-	0x15e24: 0xe00025c3, 0x15e25: 0xe00025c0, 0x15e26: 0xe0000f3a, 0x15e27: 0xe0000f36,
+-	0x15e28: 0xe0000f5a, 0x15e29: 0xe0000f56, 0x15e2a: 0xe0000f93, 0x15e2b: 0xe0000f90,
+-	0x15e2c: 0xe0000f9f, 0x15e2d: 0xe0000f9c, 0x15e2e: 0xe0000fb1, 0x15e2f: 0xe0000fae,
+-	0x15e30: 0xe0000fab, 0x15e31: 0xe0000fa8, 0x15e32: 0xe0001093, 0x15e33: 0xe0001090,
+-	0x15e34: 0xe000109f, 0x15e35: 0xe000109c, 0x15e36: 0xe0001099, 0x15e37: 0xe0001096,
+-	0x15e38: 0xe0001032, 0x15e39: 0xe000102e, 0x15e3a: 0xe0001046, 0x15e3b: 0xe0001042,
+-	0x15e3c: 0xe00010a9, 0x15e3d: 0xe00010a6, 0x15e3e: 0xe00010af, 0x15e3f: 0xe00010ac,
+-	// Block 0x579, offset 0x15e40
+-	0x15e40: 0xe0000b03, 0x15e41: 0xe0000aff, 0x15e42: 0xe0000b13, 0x15e43: 0xe0000b0f,
+-	0x15e44: 0xe0000b0b, 0x15e45: 0xe0000b07, 0x15e46: 0xe0000b75, 0x15e47: 0xe0000b71,
+-	0x15e48: 0xe0000c66, 0x15e49: 0xe0000c63, 0x15e4a: 0xe0000c78, 0x15e4b: 0xe0000c75,
+-	0x15e4c: 0xe0000e84, 0x15e4d: 0xe0000e81, 0x15e4e: 0xe0000e44, 0x15e4f: 0xe0000e41,
+-	0x15e50: 0xe000375b, 0x15e51: 0xe0003758, 0x15e52: 0xe0000db5, 0x15e53: 0xe0000db1,
+-	0x15e54: 0xe0000dc5, 0x15e55: 0xe0000dc1, 0x15e56: 0xe0000dbd, 0x15e57: 0xe0000db9,
+-	0x15e58: 0xe0000e8b, 0x15e59: 0xe0000e87, 0x15e5a: 0xe0003761, 0x15e5b: 0xe000375e,
+-	0x15e5c: 0xe0000e65, 0x15e5d: 0xe0000e61, 0x15e5e: 0xe0000e75, 0x15e5f: 0xe0000e71,
+-	0x15e60: 0xe0000e6d, 0x15e61: 0xe0000e69, 0x15e62: 0xe0000e7d, 0x15e63: 0xe0000e79,
+-	0x15e64: 0xe000108d, 0x15e65: 0xe000108a, 0x15e66: 0xe000104d, 0x15e67: 0xe000104a,
+-	0x15e68: 0xe0001066, 0x15e69: 0xe0001062, 0x15e6a: 0xe000106e, 0x15e6b: 0xe000106a,
+-	0x15e6c: 0xe000107e, 0x15e6d: 0xe000107a, 0x15e6e: 0xe0001076, 0x15e6f: 0xe0001072,
+-	0x15e70: 0xe0001086, 0x15e71: 0xe0001082, 0x15e72: 0xe0001108, 0x15e73: 0xe0001105,
+-	0x15e74: 0xe0001135, 0x15e75: 0xe0001132, 0x15e76: 0xe000112f, 0x15e77: 0xe000112c,
+-	0x15e78: 0xe000111d, 0x15e79: 0xe000111a, 0x15e7a: 0xe0000d0a, 0x15e7b: 0xe0000d07,
+-	0x15e7c: 0x0030d888, 0x15e7d: 0x4030d820, 0x15e7e: 0x00312088, 0x15e7f: 0x40312020,
+-	// Block 0x57a, offset 0x15e80
+-	0x15e80: 0xa0000000, 0x15e81: 0xa0000000, 0x15e82: 0xa0000000, 0x15e83: 0xa0000000,
+-	0x15e84: 0xa0000000, 0x15e86: 0x40096620, 0x15e87: 0x40096a20,
+-	0x15e88: 0x40070820, 0x15e89: 0x4004f220, 0x15e8a: 0x4004f620, 0x15e8b: 0x4027e620,
+-	0x15e8c: 0x40024820, 0x15e8d: 0x40024a20, 0x15e8e: 0x40070e20, 0x15e8f: 0x40071020,
+-	0x15e90: 0xae600000, 0x15e91: 0xae600000, 0x15e92: 0xae600000, 0x15e93: 0xae600000,
+-	0x15e94: 0xae600000, 0x15e95: 0xae600000, 0x15e96: 0xae600000, 0x15e97: 0xae600000,
+-	0x15e98: 0xa1e00000, 0x15e99: 0xa1f00000, 0x15e9a: 0xa2000000, 0x15e9b: 0x40026420,
+-	0x15e9e: 0x40027020, 0x15e9f: 0x4002cc20,
+-	0x15ea0: 0x403aa220, 0x15ea1: 0x40393a20, 0x15ea2: 0x40393620, 0x15ea3: 0x40393821,
+-	0x15ea4: 0x403a7421, 0x15ea5: 0x40393824, 0x15ea6: 0x003a9344, 0x15ea7: 0xce350151,
+-	0x15ea8: 0x40393c20, 0x15ea9: 0x403a6824, 0x15eaa: 0x40395620, 0x15eab: 0x40395820,
+-	0x15eac: 0x40396420, 0x15ead: 0xce390171, 0x15eae: 0x40397420, 0x15eaf: 0x40398820,
+-	0x15eb0: 0x40398a20, 0x15eb1: 0x4039a420, 0x15eb2: 0x4039a620, 0x15eb3: 0x4039c620,
+-	0x15eb4: 0x4039c820, 0x15eb5: 0x4039dc20, 0x15eb6: 0x4039de20, 0x15eb7: 0x4039e620,
+-	0x15eb8: 0x4039e820, 0x15eb9: 0x4039ee20, 0x15eba: 0x4039f020, 0x15ebb: 0x403a3820,
+-	0x15ebc: 0x403a3a20, 0x15ebd: 0x403a9c20, 0x15ebe: 0x403a9e20, 0x15ebf: 0x403aa020,
+-	// Block 0x57b, offset 0x15ec0
+-	0x15ec0: 0xa0000000, 0x15ec1: 0x4039fc20, 0x15ec2: 0x403a1220, 0x15ec3: 0x403a1c22,
+-	0x15ec4: 0x403a4020, 0x15ec5: 0x403a4e20, 0x15ec6: 0x403a5620, 0x15ec7: 0xce3d0171,
+-	0x15ec8: 0xce3f0171, 0x15ec9: 0xce430171, 0x15eca: 0xce450171, 0x15ecb: 0xa000b002,
+-	0x15ecc: 0xa000b202, 0x15ecd: 0xa000b102, 0x15ece: 0xa1e0ad02, 0x15ecf: 0xa000af02,
+-	0x15ed0: 0xa000ae02, 0x15ed1: 0xa210ba02, 0x15ed2: 0xa220bc02, 0x15ed3: 0xae60bd02,
+-	0x15ed4: 0xae60be02, 0x15ed5: 0xadc0bf02, 0x15ed6: 0xadc0c102, 0x15ed7: 0xae60c202,
+-	0x15ed8: 0xae60c302, 0x15ed9: 0xae60c402, 0x15eda: 0xae60c502, 0x15edb: 0xae60c602,
+-	0x15edc: 0xadc0c702, 0x15edd: 0xae60c802, 0x15ede: 0xae60c902, 0x15edf: 0xadc0c002,
+-	0x15ee0: 0xe000015e, 0x15ee1: 0xe00001e6, 0x15ee2: 0xe0000301, 0x15ee3: 0xe00003db,
+-	0x15ee4: 0xe00004b6, 0x15ee5: 0xe0000580, 0x15ee6: 0xe000064b, 0x15ee7: 0xe00006f3,
+-	0x15ee8: 0xe000079f, 0x15ee9: 0xe0000844, 0x15eea: 0x4004ee20, 0x15eeb: 0x40024c20,
+-	0x15eec: 0x40024e20, 0x15eed: 0x4004de20, 0x15eee: 0x40393a20, 0x15eef: 0x403a1020,
+-	0x15ef0: 0xa230d102, 0x15ef1: 0x40393823, 0x15ef2: 0x40393822, 0x15ef3: 0x40393825,
+-	0x15ef4: 0x00391c84, 0x15ef5: 0xf0000404, 0x15ef6: 0xf0000404, 0x15ef7: 0xe000a94a,
+-	0x15ef8: 0xe0003275, 0x15ef9: 0x40395821, 0x15efa: 0x40395c20, 0x15efb: 0x40393e20,
+-	0x15efc: 0x40395820, 0x15efd: 0x40396020, 0x15efe: 0x40394020, 0x15eff: 0x40396220,
+-	// Block 0x57c, offset 0x15f00
+-	0x15f00: 0x40394220, 0x15f01: 0x40396620, 0x15f02: 0x40397820, 0x15f03: 0x40396620,
+-	0x15f04: 0x40396820, 0x15f05: 0x40396c20, 0x15f06: 0x40396a20, 0x15f07: 0x40396e20,
+-	0x15f08: 0x40398a21, 0x15f09: 0x40398a20, 0x15f0a: 0x40399020, 0x15f0b: 0x40399220,
+-	0x15f0c: 0x40399420, 0x15f0d: 0x40399620, 0x15f0e: 0x40399820, 0x15f0f: 0x40399a20,
+-	0x15f10: 0x40399c20, 0x15f11: 0x4039a621, 0x15f12: 0x4039aa20, 0x15f13: 0x4039a620,
+-	0x15f14: 0x4039ae20, 0x15f15: 0x4039b020, 0x15f16: 0x4039b820, 0x15f17: 0x4039b420,
+-	0x15f18: 0x4039b620, 0x15f19: 0x4039b820, 0x15f1a: 0x4039ca20, 0x15f1b: 0x4039cc20,
+-	0x15f1c: 0x4039ce20, 0x15f1d: 0x4039e020, 0x15f1e: 0x4039e220, 0x15f1f: 0x4039ea20,
+-	0x15f20: 0x4039f220, 0x15f21: 0x4039fe20, 0x15f22: 0x403a0020, 0x15f23: 0x403a0220,
+-	0x15f24: 0x403a0420, 0x15f25: 0x403a0820, 0x15f26: 0x403a0a20, 0x15f27: 0x403a1420,
+-	0x15f28: 0x403a1620, 0x15f29: 0x403a1c20, 0x15f2a: 0x403a1c21, 0x15f2b: 0x403a2020,
+-	0x15f2c: 0x403a2220, 0x15f2d: 0x403a2620, 0x15f2e: 0x403a2820, 0x15f2f: 0x403a2021,
+-	0x15f30: 0x403a2c20, 0x15f31: 0x403a2e20, 0x15f32: 0x403a3020, 0x15f33: 0x403a3220,
+-	0x15f34: 0x403a3420, 0x15f35: 0x403a4220, 0x15f36: 0x403a4420, 0x15f37: 0x403a4620,
+-	0x15f38: 0x403a4820, 0x15f39: 0x403a6020, 0x15f3a: 0x403a5820, 0x15f3b: 0x403a5c21,
+-	0x15f3c: 0x403a5c20, 0x15f3d: 0x403a5e20, 0x15f3e: 0x403a6823, 0x15f3f: 0x40396c20,
+-	// Block 0x57d, offset 0x15f40
+-	0x15f40: 0x003a6883, 0x15f41: 0x403a6822, 0x15f42: 0xe000a947, 0x15f43: 0x403a6825,
+-	0x15f44: 0x403a7620, 0x15f45: 0x403a7820, 0x15f46: 0x403a7a20, 0x15f47: 0x403a7422,
+-	0x15f48: 0x403a7e20, 0x15f49: 0x403a7423, 0x15f4a: 0x403a8220, 0x15f4b: 0x403a8420,
+-	0x15f4c: 0xce410171, 0x15f4d: 0x403a9225, 0x15f4e: 0x403a9620, 0x15f4f: 0x403a8620,
+-	0x15f50: 0x403a9224, 0x15f51: 0x403a9a20, 0x15f52: 0x403a9222, 0x15f53: 0xe00032ab,
+-	0x15f54: 0x4002e820, 0x15f55: 0xce3b0171, 0x15f56: 0xae600000, 0x15f57: 0xae600000,
+-	0x15f58: 0xae600000, 0x15f59: 0xae600000, 0x15f5a: 0xae600000, 0x15f5b: 0xae600000,
+-	0x15f5c: 0xae600000, 0x15f5d: 0xa0000000, 0x15f5e: 0x40071220, 0x15f5f: 0xae600000,
+-	0x15f60: 0xae600000, 0x15f61: 0xae600000, 0x15f62: 0xae600000, 0x15f63: 0xadc00000,
+-	0x15f64: 0xae600000, 0x15f65: 0x003a7484, 0x15f66: 0x003a9084, 0x15f67: 0xae600000,
+-	0x15f68: 0xae600000, 0x15f69: 0x40071420, 0x15f6a: 0xadc00000, 0x15f6b: 0xae600000,
+-	0x15f6c: 0xae600000, 0x15f6d: 0xadc00000, 0x15f6e: 0x40399e20, 0x15f6f: 0x4039ba20,
+-	0x15f70: 0xe0000161, 0x15f71: 0xe00001e9, 0x15f72: 0xe0000304, 0x15f73: 0xe00003de,
+-	0x15f74: 0xe00004b9, 0x15f75: 0xe0000583, 0x15f76: 0xe000064e, 0x15f77: 0xe00006f6,
+-	0x15f78: 0xe00007a2, 0x15f79: 0xe0000847, 0x15f7a: 0x4039d020, 0x15f7b: 0x4039e420,
+-	0x15f7c: 0x4039f420, 0x15f7d: 0xe0001553, 0x15f7e: 0xe0001779, 0x15f7f: 0x403a7020,
+-	// Block 0x57e, offset 0x15f80
+-	0x15f80: 0x00021284, 0x15f81: 0x00021284, 0x15f82: 0x00021284, 0x15f83: 0x00021284,
+-	0x15f84: 0x00021284, 0x15f85: 0x00021284, 0x15f86: 0x00021284, 0x15f87: 0x0002129b,
+-	0x15f88: 0x00021284, 0x15f89: 0x00021284, 0x15f8a: 0x00021284, 0x15f8b: 0xa0000000,
+-	0x15f8c: 0x40021221, 0x15f8d: 0x40021222, 0x15f8e: 0xa0000000, 0x15f8f: 0xa0000000,
+-	0x15f90: 0x40022620, 0x15f91: 0x0002269b, 0x15f92: 0x40022820, 0x15f93: 0x40022a20,
+-	0x15f94: 0x40022c20, 0x15f95: 0x40022e20, 0x15f96: 0x4004c420, 0x15f97: 0x40021820,
+-	0x15f98: 0x4003d420, 0x15f99: 0x4003d620, 0x15f9a: 0x4003d820, 0x15f9b: 0x4003da20,
+-	0x15f9c: 0x4003e220, 0x15f9d: 0x4003e420, 0x15f9e: 0x4003e620, 0x15f9f: 0x4003e820,
+-	0x15fa0: 0x4004f820, 0x15fa1: 0x4004fa20, 0x15fa2: 0x40050220, 0x15fa3: 0x40050420,
+-	0x15fa4: 0x0002e484, 0x15fa5: 0xf0001f04, 0x15fa6: 0xf0000404, 0x15fa7: 0x40050620,
+-	0x15fa8: 0x40020e20, 0x15fa9: 0x40021020, 0x15faa: 0xa0000000, 0x15fab: 0xa0000000,
+-	0x15fac: 0xa0000000, 0x15fad: 0xa0000000, 0x15fae: 0xa0000000, 0x15faf: 0x0002129b,
+-	0x15fb0: 0x4004f020, 0x15fb1: 0x4004f420, 0x15fb2: 0x40050e20, 0x15fb3: 0xf0001f04,
+-	0x15fb4: 0xf0000404, 0x15fb5: 0x40051020, 0x15fb6: 0xf0001f04, 0x15fb7: 0xf0000404,
+-	0x15fb8: 0x40051620, 0x15fb9: 0x4003dc20, 0x15fba: 0x4003de20, 0x15fbb: 0x40051820,
+-	0x15fbc: 0xf0001f04, 0x15fbd: 0x4002e020, 0x15fbe: 0x40021420, 0x15fbf: 0x40051a20,
+-	// Block 0x57f, offset 0x15fc0
+-	0x15fc0: 0x40073420, 0x15fc1: 0x40073620,
+-	0x15fd3: 0x003a269a,
+-	0x15fd4: 0x003a2699, 0x15fd5: 0x003a2697, 0x15fd6: 0x003a2698, 0x15fd7: 0x003a7c9a,
+-	0x15fd8: 0x003a7c99, 0x15fd9: 0x003a7a9a, 0x15fda: 0x003a7a99, 0x15fdb: 0x003a7e9a,
+-	0x15fdc: 0x003a7e99, 0x15fdd: 0xe000a94d, 0x15fde: 0x003a849a, 0x15fdf: 0x003a8499,
+-	0x15fe0: 0x003a789a, 0x15fe1: 0x003a7899, 0x15fe2: 0x003a809a, 0x15fe3: 0x003a8099,
+-	0x15fe4: 0x003a989a, 0x15fe5: 0x003a9899, 0x15fe6: 0x003a9897, 0x15fe7: 0x003a9898,
+-	0x15fe8: 0x003a8e97, 0x15fe9: 0x003a8e98, 0x15fea: 0xe0001559, 0x15feb: 0xe0001556,
+-	0x15fec: 0xe0001589, 0x15fed: 0xe0001586, 0x15fee: 0xe000158f, 0x15fef: 0xe000158c,
+-	0x15ff0: 0xe000159b, 0x15ff1: 0xe0001598, 0x15ff2: 0xe0001595, 0x15ff3: 0xe0001592,
+-	0x15ff4: 0xe00015a1, 0x15ff5: 0xe000159e, 0x15ff6: 0xe00015bf, 0x15ff7: 0xe00015bc,
+-	0x15ff8: 0xe00015b9, 0x15ff9: 0xe00015ad, 0x15ffa: 0xe00015a7, 0x15ffb: 0xe00015a4,
+-	0x15ffc: 0x003a929a, 0x15ffd: 0x003a9299, 0x15ffe: 0x003a9297, 0x15fff: 0x003a9298,
+-	// Block 0x580, offset 0x16000
+-	0x16000: 0xf0001a1a, 0x16001: 0xf0001a1a, 0x16002: 0xf0001a1a, 0x16003: 0xe0002502,
+-	0x16004: 0xe0003242, 0x16005: 0xf0001a1a, 0x16006: 0xf0001a1a, 0x16007: 0xf0001a1a,
+-	0x16008: 0xf0001a1a, 0x16009: 0xe0002505, 0x1600a: 0xe0003245, 0x1600b: 0xf0001a1a,
+-	0x1600c: 0xf0001a1a, 0x1600d: 0xf0001a1a, 0x1600e: 0xf0001a1a, 0x1600f: 0xe000250b,
+-	0x16010: 0xe0003251, 0x16011: 0xf0001a1a, 0x16012: 0xf0001a1a, 0x16013: 0xe000250e,
+-	0x16014: 0xe0003263, 0x16015: 0xe000327b, 0x16016: 0xe0003281, 0x16017: 0xe0003287,
+-	0x16018: 0xe0003299, 0x16019: 0xe0002514, 0x1601a: 0xe00032a8, 0x1601b: 0xf0001a1a,
+-	0x1601c: 0xf0001a1a, 0x1601d: 0xe0003272, 0x1601e: 0xe0000003, 0x1601f: 0xe0000006,
+-	0x16020: 0xe0000009, 0x16021: 0xe000000c, 0x16022: 0xe000000f, 0x16023: 0xe0000012,
+-	0x16024: 0xe000156b, 0x16025: 0xe000156e, 0x16026: 0xe0001577, 0x16027: 0xe000157d,
+-	0x16028: 0xe00015aa, 0x16029: 0xe00015b3, 0x1602a: 0xf0001919, 0x1602b: 0xf0001919,
+-	0x1602c: 0xf0001919, 0x1602d: 0xf0001919, 0x1602e: 0xe000249f, 0x1602f: 0xe0003197,
+-	0x16030: 0xf0001919, 0x16031: 0xf0001919, 0x16032: 0xf0001919, 0x16033: 0xf0001919,
+-	0x16034: 0xe00024a5, 0x16035: 0xe00031a3, 0x16036: 0xf0001919, 0x16037: 0xf0001919,
+-	0x16038: 0xf0001919, 0x16039: 0xf0001919, 0x1603a: 0xe00024ab, 0x1603b: 0xe00031ac,
+-	0x1603c: 0xe00024ed, 0x1603d: 0xe00031fa, 0x1603e: 0xe00024f3, 0x1603f: 0xe0003200,
+-	// Block 0x581, offset 0x16040
+-	0x16040: 0xe0003206, 0x16041: 0xe0003224, 0x16042: 0xe0003230, 0x16043: 0xe00024f9,
+-	0x16044: 0xe0003236, 0x16045: 0xf0001919, 0x16046: 0xe00024ff, 0x16047: 0xe000323f,
+-	0x16048: 0xf0001919, 0x16049: 0xf0001919, 0x1604a: 0xf0001919, 0x1604b: 0xf0001919,
+-	0x1604c: 0xf0001919, 0x1604d: 0xf0001919, 0x1604e: 0xe0002508, 0x1604f: 0xe000324e,
+-	0x16050: 0xe000326f, 0x16051: 0xe000328a, 0x16052: 0xe000328d, 0x16053: 0xe0003296,
+-	0x16054: 0xe000329c, 0x16055: 0xe0002511, 0x16056: 0xe00032a5, 0x16057: 0xe000155c,
+-	0x16058: 0xe0001562, 0x16059: 0xe0001568, 0x1605a: 0xe0001571, 0x1605b: 0xe0001580,
+-	0x1605c: 0xf0001717, 0x1605d: 0xf0001717, 0x1605e: 0xf0001717, 0x1605f: 0xf0001717,
+-	0x16060: 0xf0001717, 0x16061: 0xf0001717, 0x16062: 0xf0001717, 0x16063: 0xf0001717,
+-	0x16064: 0xf0001717, 0x16065: 0xf0001717, 0x16066: 0xf0001717, 0x16067: 0xf0001717,
+-	0x16068: 0xf0001717, 0x16069: 0xf0001717, 0x1606a: 0xf0001717, 0x1606b: 0xf0001717,
+-	0x1606c: 0xf0001717, 0x1606d: 0xf0001717, 0x1606e: 0xf0001717, 0x1606f: 0xf0001717,
+-	0x16070: 0xf0001717, 0x16071: 0xf0001717, 0x16072: 0xf0001717, 0x16073: 0xf0001717,
+-	0x16074: 0xf0001717, 0x16075: 0xf0001717, 0x16076: 0xf0001717, 0x16077: 0xf0001717,
+-	0x16078: 0xf0001717, 0x16079: 0xf0001717, 0x1607a: 0xf0001717, 0x1607b: 0xf0001717,
+-	0x1607c: 0xf0001717, 0x1607d: 0xf0001717, 0x1607e: 0xf0001717, 0x1607f: 0xf0001717,
+-	// Block 0x582, offset 0x16080
+-	0x16080: 0xf0001717, 0x16081: 0xf0001717, 0x16082: 0xf0001717, 0x16083: 0xf0001717,
+-	0x16084: 0xe000320c, 0x16085: 0xe0003212, 0x16086: 0xe0003218, 0x16087: 0xe000321e,
+-	0x16088: 0xe000322a, 0x16089: 0xf0001717, 0x1608a: 0xf0001717, 0x1608b: 0xf0001717,
+-	0x1608c: 0xf0001717, 0x1608d: 0xf0001717, 0x1608e: 0xf0001717, 0x1608f: 0xf0001717,
+-	0x16090: 0xf0001717, 0x16091: 0xf0001717, 0x16092: 0xf0001717, 0x16093: 0xf0001717,
+-	0x16094: 0xf0001717, 0x16095: 0xf0001717, 0x16096: 0xf0001717, 0x16097: 0xf0001717,
+-	0x16098: 0xf0001717, 0x16099: 0xf0001717, 0x1609a: 0xe0003278, 0x1609b: 0xe000327e,
+-	0x1609c: 0xe0003284, 0x1609d: 0xe0003290, 0x1609e: 0xe000329f, 0x1609f: 0xe0001574,
+-	0x160a0: 0xe0001583, 0x160a1: 0xf0001818, 0x160a2: 0xf0001818, 0x160a3: 0xf0001818,
+-	0x160a4: 0xf0001818, 0x160a5: 0xf0001818, 0x160a6: 0xf0001818, 0x160a7: 0xf0001818,
+-	0x160a8: 0xf0001818, 0x160a9: 0xf0001818, 0x160aa: 0xf0001818, 0x160ab: 0xe0003221,
+-	0x160ac: 0xe000322d, 0x160ad: 0xf0001818, 0x160ae: 0xf0001818, 0x160af: 0xf0001818,
+-	0x160b0: 0xe0003293, 0x160b1: 0xe00032a2, 0x160b2: 0xf0001818, 0x160b3: 0xe0003185,
+-	0x160b4: 0xe0003188, 0x160b5: 0xe00024de, 0x160b6: 0xe00031eb, 0x160b7: 0xe00024e4,
+-	0x160b8: 0xe00031f1, 0x160b9: 0xe00024ea, 0x160ba: 0xe00031f7, 0x160bb: 0xe00024c6,
+-	0x160bc: 0xe00031cd, 0x160bd: 0xe00024cc, 0x160be: 0xe00031d9, 0x160bf: 0xe00024ba,
+-	// Block 0x583, offset 0x160c0
+-	0x160c0: 0xe00031bb, 0x160c1: 0xe00024b4, 0x160c2: 0xe00031b5, 0x160c3: 0xe00024c0,
+-	0x160c4: 0xe00031c1, 0x160c5: 0xe00024d2, 0x160c6: 0xe00031df, 0x160c7: 0xe00024d8,
+-	0x160c8: 0xe00031e5, 0x160c9: 0xf0001a1a, 0x160ca: 0xf0001a1a, 0x160cb: 0xf0001a1a,
+-	0x160cc: 0xf0001a1a, 0x160cd: 0xf0001a1a, 0x160ce: 0xf0001a1a, 0x160cf: 0xf0001a1a,
+-	0x160d0: 0xf0001a1a, 0x160d1: 0xe00024db, 0x160d2: 0xe00031e8, 0x160d3: 0xe00024e1,
+-	0x160d4: 0xe00031ee, 0x160d5: 0xe00024e7, 0x160d6: 0xe00031f4, 0x160d7: 0xe00024c3,
+-	0x160d8: 0xe00031ca, 0x160d9: 0xe00024c9, 0x160da: 0xe00031d6, 0x160db: 0xe00024b7,
+-	0x160dc: 0xe00031b8, 0x160dd: 0xe00024b1, 0x160de: 0xe00031b2, 0x160df: 0xe00024bd,
+-	0x160e0: 0xe00031be, 0x160e1: 0xe00024cf, 0x160e2: 0xe00031dc, 0x160e3: 0xe00024d5,
+-	0x160e4: 0xe00031e2, 0x160e5: 0xf0001919, 0x160e6: 0xf0001919, 0x160e7: 0xf0001919,
+-	0x160e8: 0xf0001919, 0x160e9: 0xf0001919, 0x160ea: 0xf0001919, 0x160eb: 0xf0001919,
+-	0x160ec: 0xf0001919, 0x160ed: 0xf0001717, 0x160ee: 0xf0001717, 0x160ef: 0xf0001717,
+-	0x160f0: 0xf0001717, 0x160f1: 0xf0001717, 0x160f2: 0xf0001717, 0x160f3: 0xf0001717,
+-	0x160f4: 0xf0001818, 0x160f5: 0xf0001818, 0x160f6: 0xf0001818, 0x160f7: 0xf0001818,
+-	0x160f8: 0xf0001818, 0x160f9: 0xf0001818, 0x160fa: 0xf0001818, 0x160fb: 0xf0001818,
+-	0x160fc: 0xe000318b, 0x160fd: 0xe000318e, 0x160fe: 0x4004c020, 0x160ff: 0x4004c220,
+-	// Block 0x584, offset 0x16100
+-	0x16100: 0xa0000000, 0x16101: 0xa0000000, 0x16102: 0xa0000000, 0x16103: 0xa0000000,
+-	0x16104: 0xa0000000, 0x16105: 0xa0000000, 0x16106: 0xa0000000, 0x16107: 0xa0000000,
+-	0x16108: 0xa0000000, 0x16109: 0x40020020, 0x1610a: 0x40020220, 0x1610b: 0x40020420,
+-	0x1610c: 0x40020620, 0x1610d: 0x40020820, 0x1610e: 0xa0000000, 0x1610f: 0xa0000000,
+-	0x16110: 0xa0000000, 0x16111: 0xa0000000, 0x16112: 0xa0000000, 0x16113: 0xa0000000,
+-	0x16114: 0xa0000000, 0x16115: 0xa0000000, 0x16116: 0xa0000000, 0x16117: 0xa0000000,
+-	0x16118: 0xa0000000, 0x16119: 0xa0000000, 0x1611a: 0xa0000000, 0x1611b: 0xa0000000,
+-	0x1611c: 0xa0000000, 0x1611d: 0xa0000000, 0x1611e: 0xa0000000, 0x1611f: 0xa0000000,
+-	0x16120: 0x40021220, 0x16121: 0x4002ba20, 0x16122: 0x4003e020, 0x16123: 0x4004ea20,
+-	0x16124: 0x4027de20, 0x16125: 0x4004ec20, 0x16126: 0x4004e620, 0x16127: 0x4003d220,
+-	0x16128: 0x4003f420, 0x16129: 0x4003f620, 0x1612a: 0x4004d820, 0x1612b: 0x40093820,
+-	0x1612c: 0x40024020, 0x1612d: 0x40021a20, 0x1612e: 0x4002e420, 0x1612f: 0x4004e220,
+-	0x16130: 0x4029cc20, 0x16131: 0x4029ce20, 0x16132: 0x4029d020, 0x16133: 0x4029d220,
+-	0x16134: 0x4029d420, 0x16135: 0x4029d620, 0x16136: 0x4029d820, 0x16137: 0x4029da20,
+-	0x16138: 0x4029dc20, 0x16139: 0x4029de20, 0x1613a: 0x40026c20, 0x1613b: 0x40026220,
+-	0x1613c: 0x40094020, 0x1613d: 0x40094220, 0x1613e: 0x40094420, 0x1613f: 0x4002c420,
+-	// Block 0x585, offset 0x16140
+-	0x16140: 0x4004d620, 0x16141: 0xce4a94d1, 0x16142: 0x002c0a88, 0x16143: 0x002c3a88,
+-	0x16144: 0x002c6288, 0x16145: 0x002c9888, 0x16146: 0x002d0888, 0x16147: 0x002d2288,
+-	0x16148: 0x002d6888, 0x16149: 0xc6042741, 0x1614a: 0x002dcc88, 0x1614b: 0x002dfe88,
+-	0x1614c: 0xc0030002, 0x1614d: 0x002e8288, 0x1614e: 0x002e9e88, 0x1614f: 0x002ee288,
+-	0x16150: 0x002f2c88, 0x16151: 0x002f5688, 0x16152: 0x002f7a88, 0x16153: 0xce509501,
+-	0x16154: 0xce569501, 0x16155: 0x00306c88, 0x16156: 0x0030be88, 0x16157: 0x0030e288,
+-	0x16158: 0x0030f688, 0x16159: 0x00310088, 0x1615a: 0x00312a88, 0x1615b: 0x4003f820,
+-	0x1615c: 0x4004e420, 0x1615d: 0x4003fa20, 0x1615e: 0x40062420, 0x1615f: 0x40021620,
+-	0x16160: 0x40061e20, 0x16161: 0xce4794d1, 0x16162: 0x402c0a20, 0x16163: 0x402c3a20,
+-	0x16164: 0x402c6220, 0x16165: 0x402c9820, 0x16166: 0x402d0820, 0x16167: 0x402d2220,
+-	0x16168: 0x402d6820, 0x16169: 0xc6022741, 0x1616a: 0x402dcc20, 0x1616b: 0x402dfe20,
+-	0x1616c: 0xc0000002, 0x1616d: 0x402e8220, 0x1616e: 0x402e9e20, 0x1616f: 0x402ee220,
+-	0x16170: 0x402f2c20, 0x16171: 0x402f5620, 0x16172: 0x402f7a20, 0x16173: 0xce4d9501,
+-	0x16174: 0xce539501, 0x16175: 0x40306c20, 0x16176: 0x4030be20, 0x16177: 0x4030e220,
+-	0x16178: 0x4030f620, 0x16179: 0x40310020, 0x1617a: 0x40312a20, 0x1617b: 0x4003fc20,
+-	0x1617c: 0x40094820, 0x1617d: 0x4003fe20, 0x1617e: 0x40094c20, 0x1617f: 0xa0000000,
+-	// Block 0x586, offset 0x16180
+-	0x16180: 0xe00008f5, 0x16181: 0xe00008ef, 0x16182: 0x002be283, 0x16183: 0xe0000969,
+-	0x16184: 0xe000095b, 0x16185: 0xe000094d, 0x16186: 0xe00009dd, 0x16187: 0xe0000a53,
+-	0x16188: 0xe0000ae8, 0x16189: 0xe0000ae2, 0x1618a: 0xe0000af4, 0x1618b: 0xe0000b20,
+-	0x1618c: 0xe0000c2b, 0x1618d: 0xe0000c25, 0x1618e: 0x002d9c83, 0x1618f: 0xe0000c43,
+-	0x16190: 0xe0000ab3, 0x16191: 0xe0000d63, 0x16192: 0xe0000d9a, 0x16193: 0xe0000d94,
+-	0x16194: 0xe0000da6, 0x16195: 0xe0000de6, 0x16196: 0xe0000dd2, 0x16197: 0x40093e20,
+-	0x16198: 0xe0000e12, 0x16199: 0xe0000fe1, 0x1619a: 0xe0000fdb, 0x1619b: 0xe0000fed,
+-	0x1619c: 0xe0000fff, 0x1619d: 0xe0001102, 0x1619e: 0x00318888, 0x1619f: 0xe0000f7b,
+-	0x161a0: 0xe00008f2, 0x161a1: 0xe00008ec, 0x161a2: 0x402be220, 0x161a3: 0xe0000966,
+-	0x161a4: 0xe0000958, 0x161a5: 0xe000094a, 0x161a6: 0xe00009d5, 0x161a7: 0xe0000a4d,
+-	0x161a8: 0xe0000ae5, 0x161a9: 0xe0000adf, 0x161aa: 0xe0000af1, 0x161ab: 0xe0000b1d,
+-	0x161ac: 0xe0000c28, 0x161ad: 0xe0000c22, 0x161ae: 0x402d9c20, 0x161af: 0xe0000c40,
+-	0x161b0: 0xe0000aad, 0x161b1: 0xe0000d60, 0x161b2: 0xe0000d97, 0x161b3: 0xe0000d91,
+-	0x161b4: 0xe0000da3, 0x161b5: 0xe0000de3, 0x161b6: 0xe0000dcf, 0x161b7: 0x40093c20,
+-	0x161b8: 0xe0000e0f, 0x161b9: 0xe0000fde, 0x161ba: 0xe0000fd8, 0x161bb: 0xe0000fea,
+-	0x161bc: 0xe0000ffc, 0x161bd: 0xe00010ff, 0x161be: 0x40318820, 0x161bf: 0xe0001114,
+-	// Block 0x587, offset 0x161c0
+-	0x161c0: 0xe0000983, 0x161c1: 0xe0000980, 0x161c2: 0x002be083, 0x161c3: 0x402be020,
+-	0x161c4: 0xe000097d, 0x161c5: 0xe000097a, 0x161c6: 0xe0000a38, 0x161c7: 0xe0000a35,
+-	0x161c8: 0xe0000a3e, 0x161c9: 0xe0000a3b, 0x161ca: 0xe0000a4a, 0x161cb: 0xe0000a47,
+-	0x161cc: 0xe0000a44, 0x161cd: 0xe0000a41, 0x161ce: 0xe0000a86, 0x161cf: 0xe0000a83,
+-	0x161d0: 0xe0000aaa, 0x161d1: 0xe0000aa7, 0x161d2: 0xe0000b46, 0x161d3: 0xe0000b43,
+-	0x161d4: 0xe0000aee, 0x161d5: 0xe0000aeb, 0x161d6: 0xe0000b2c, 0x161d7: 0xe0000b29,
+-	0x161d8: 0xe0000b40, 0x161d9: 0xe0000b3d, 0x161da: 0xe0000b1a, 0x161db: 0xe0000b17,
+-	0x161dc: 0xe0000bb8, 0x161dd: 0xe0000bb5, 0x161de: 0xe0000bb2, 0x161df: 0xe0000baf,
+-	0x161e0: 0xe0000bc4, 0x161e1: 0xe0000bc1, 0x161e2: 0xe0000bca, 0x161e3: 0xe0000bc7,
+-	0x161e4: 0xe0000bee, 0x161e5: 0xe0000beb, 0x161e6: 0xe0000c1b, 0x161e7: 0xe0000c18,
+-	0x161e8: 0xe0000c51, 0x161e9: 0xe0000c4e, 0x161ea: 0xe0000c60, 0x161eb: 0xe0000c5d,
+-	0x161ec: 0xe0000c31, 0x161ed: 0xe0000c2e, 0x161ee: 0xe0000c5a, 0x161ef: 0xe0000c57,
+-	0x161f0: 0xe0000c54, 0x161f1: 0x402da220, 0x161f2: 0xf0000a0a, 0x161f3: 0xf0000404,
+-	0x161f4: 0xe0000c8a, 0x161f5: 0xe0000c87, 0x161f6: 0xe0000c9f, 0x161f7: 0xe0000c9c,
+-	0x161f8: 0x402f7220, 0x161f9: 0xe0000ccc, 0x161fa: 0xe0000cc9, 0x161fb: 0xe0000cd8,
+-	0x161fc: 0xe0000cd5, 0x161fd: 0xe0000cd2, 0x161fe: 0xe0000ccf, 0x161ff: 0xe0000d04,
+-	// Block 0x588, offset 0x16200
+-	0x16200: 0xe0000cfe, 0x16201: 0xe0000cf8, 0x16202: 0xe0000cf5, 0x16203: 0xe0000d51,
+-	0x16204: 0xe0000d4e, 0x16205: 0xe0000d6f, 0x16206: 0xe0000d6c, 0x16207: 0xe0000d5d,
+-	0x16208: 0xe0000d5a, 0x16209: 0xf0000404, 0x1620a: 0x002eda88, 0x1620b: 0x402eda20,
+-	0x1620c: 0xe0000e2e, 0x1620d: 0xe0000e2b, 0x1620e: 0xe0000da0, 0x1620f: 0xe0000d9d,
+-	0x16210: 0xe0000de0, 0x16211: 0xe0000ddd, 0x16212: 0xe0000e93, 0x16213: 0xe0000e8f,
+-	0x16214: 0xe0000eca, 0x16215: 0xe0000ec7, 0x16216: 0xe0000edc, 0x16217: 0xe0000ed9,
+-	0x16218: 0xe0000ed0, 0x16219: 0xe0000ecd, 0x1621a: 0xe0000f1f, 0x1621b: 0xe0000f1c,
+-	0x1621c: 0xe0000f2d, 0x1621d: 0xe0000f2a, 0x1621e: 0x002fe883, 0x1621f: 0x402fe820,
+-	0x16220: 0xe0000f33, 0x16221: 0xe0000f30, 0x16222: 0x00302e83, 0x16223: 0x40302e20,
+-	0x16224: 0xe0000f8a, 0x16225: 0xe0000f87, 0x16226: 0x00303688, 0x16227: 0x40303620,
+-	0x16228: 0xe000102b, 0x16229: 0xe0001028, 0x1622a: 0xe000103f, 0x1622b: 0xe000103c,
+-	0x1622c: 0xe0000fe7, 0x1622d: 0xe0000fe4, 0x1622e: 0xe0000ff9, 0x1622f: 0xe0000ff6,
+-	0x16230: 0xe0001025, 0x16231: 0xe0001022, 0x16232: 0xe0001039, 0x16233: 0xe0001036,
+-	0x16234: 0xe00010d8, 0x16235: 0xe00010d5, 0x16236: 0xe000110e, 0x16237: 0xe000110b,
+-	0x16238: 0xe0001117, 0x16239: 0xe000113b, 0x1623a: 0xe0001138, 0x1623b: 0xe000114d,
+-	0x1623c: 0xe000114a, 0x1623d: 0xe0001147, 0x1623e: 0xe0001144, 0x1623f: 0xe0000f64,
+-	// Block 0x589, offset 0x16240
+-	0x16240: 0xe000098f, 0x16241: 0xe000098c, 0x16242: 0xe0000995, 0x16243: 0xe0000992,
+-	0x16244: 0xe0000b62, 0x16245: 0xe0000b5f, 0x16246: 0xe0000b68, 0x16247: 0xe0000b65,
+-	0x16248: 0xe0000c6c, 0x16249: 0xe0000c69, 0x1624a: 0xe0000c72, 0x1624b: 0xe0000c6f,
+-	0x1624c: 0xe0000e4a, 0x1624d: 0xe0000e47, 0x1624e: 0xe0000e50, 0x1624f: 0xe0000e4d,
+-	0x16250: 0xe0000ee8, 0x16251: 0xe0000ee5, 0x16252: 0xe0000eee, 0x16253: 0xe0000eeb,
+-	0x16254: 0xe0001053, 0x16255: 0xe0001050, 0x16256: 0xe0001059, 0x16257: 0xe0001056,
+-	0x16258: 0x002fe883, 0x16259: 0x402fe820, 0x1625a: 0x00302e83, 0x1625b: 0x40302e20,
+-	0x1625c: 0x00312288, 0x1625d: 0x40312220, 0x1625e: 0xe0000bf4, 0x1625f: 0xe0000bf1,
+-	0x16260: 0x002ebc88, 0x16261: 0x402c8c20, 0x16262: 0x002f2288, 0x16263: 0x402f2220,
+-	0x16264: 0x00314088, 0x16265: 0x40314020, 0x16266: 0xe000096f, 0x16267: 0xe000096c,
+-	0x16268: 0xe0000b32, 0x16269: 0xe0000b2f, 0x1626a: 0xe0000dd9, 0x1626b: 0xe0000dd5,
+-	0x1626c: 0xe0000dfd, 0x1626d: 0xe0000df9, 0x1626e: 0xe0000e04, 0x1626f: 0xe0000e01,
+-	0x16270: 0xe0000e0b, 0x16271: 0xe0000e07, 0x16272: 0xe0001129, 0x16273: 0xe0001126,
+-	0x16274: 0x402e5e20, 0x16275: 0x402ed020, 0x16276: 0x40305a20, 0x16277: 0x402dd420,
+-	0x16278: 0xe0000abf, 0x16279: 0xe0000ec4, 0x1627a: 0x002be888, 0x1627b: 0x002c4488,
+-	0x1627c: 0x402c4420, 0x1627d: 0x002e3888, 0x1627e: 0x00303e88, 0x1627f: 0x402ffc20,
+-	// Block 0x58a, offset 0x16280
+-	0x16280: 0xe00010d2, 0x16281: 0xe00010cf, 0x16282: 0xe00010cc, 0x16283: 0xe00010c9,
+-	0x16284: 0xe00010e1, 0x16285: 0xe00010de, 0x16286: 0xe00010e7, 0x16287: 0xe00010e4,
+-	0x16288: 0xe00010ed, 0x16289: 0xe00010ea, 0x1628a: 0xe00010fc, 0x1628b: 0xe00010f9,
+-	0x1628c: 0xe00010f6, 0x1628d: 0xe00010f3, 0x1628e: 0xe0001123, 0x1628f: 0xe0001120,
+-	0x16290: 0xe0001141, 0x16291: 0xe000113e, 0x16292: 0xe0001153, 0x16293: 0xe0001150,
+-	0x16294: 0xe0001159, 0x16295: 0xe0001156, 0x16296: 0xe0000c15, 0x16297: 0xe0000f8d,
+-	0x16298: 0xe00010db, 0x16299: 0xe0001111, 0x1629a: 0xf0000404, 0x1629b: 0xe0000f70,
+-	0x1629c: 0x40300420, 0x1629d: 0x40300620, 0x1629e: 0xe0000f7f, 0x1629f: 0x402c9620,
+-	0x162a0: 0xe000099b, 0x162a1: 0xe0000998, 0x162a2: 0xe0000989, 0x162a3: 0xe0000986,
+-	0x162a4: 0xe0003405, 0x162a5: 0xe0003402, 0x162a6: 0xe000340b, 0x162a7: 0xe0003408,
+-	0x162a8: 0xe0003446, 0x162a9: 0xe0003443, 0x162aa: 0xe0003431, 0x162ab: 0xe000342e,
+-	0x162ac: 0xe0003458, 0x162ad: 0xe0003455, 0x162ae: 0xe000335f, 0x162af: 0xe000335c,
+-	0x162b0: 0xe0003365, 0x162b1: 0xe0003362, 0x162b2: 0xe00033d9, 0x162b3: 0xe00033d6,
+-	0x162b4: 0xe00033a3, 0x162b5: 0xe00033a0, 0x162b6: 0xe00033eb, 0x162b7: 0xe00033e8,
+-	0x162b8: 0xe0000b6e, 0x162b9: 0xe0000b6b, 0x162ba: 0xe0000b5c, 0x162bb: 0xe0000b59,
+-	0x162bc: 0xe0000b26, 0x162bd: 0xe0000b23, 0x162be: 0xe0000afb, 0x162bf: 0xe0000af7,
+-	// Block 0x58b, offset 0x162c0
+-	0x162c0: 0xa0000000, 0x162c1: 0xa0000000, 0x162c2: 0xa0000000, 0x162c3: 0xa0000000,
+-	0x162c4: 0xa0000000, 0x162c5: 0xa0000000, 0x162c6: 0xa0000000, 0x162c7: 0xa0000000,
+-	0x162c8: 0xa0000000, 0x162c9: 0x40020020, 0x162ca: 0x40020220, 0x162cb: 0x40020420,
+-	0x162cc: 0x40020620, 0x162cd: 0x40020820, 0x162ce: 0xa0000000, 0x162cf: 0xa0000000,
+-	0x162d0: 0xa0000000, 0x162d1: 0xa0000000, 0x162d2: 0xa0000000, 0x162d3: 0xa0000000,
+-	0x162d4: 0xa0000000, 0x162d5: 0xa0000000, 0x162d6: 0xa0000000, 0x162d7: 0xa0000000,
+-	0x162d8: 0xa0000000, 0x162d9: 0xa0000000, 0x162da: 0xa0000000, 0x162db: 0xa0000000,
+-	0x162dc: 0xa0000000, 0x162dd: 0xa0000000, 0x162de: 0xa0000000, 0x162df: 0xa0000000,
+-	0x162e0: 0x40021220, 0x162e1: 0x4002ba20, 0x162e2: 0x4003e020, 0x162e3: 0x4004ea20,
+-	0x162e4: 0x4027de20, 0x162e5: 0x4004ec20, 0x162e6: 0x4004e620, 0x162e7: 0x4003d220,
+-	0x162e8: 0x4003f420, 0x162e9: 0x4003f620, 0x162ea: 0x4004d820, 0x162eb: 0x40093820,
+-	0x162ec: 0x40024020, 0x162ed: 0x40021a20, 0x162ee: 0x4002e420, 0x162ef: 0x4004e220,
+-	0x162f0: 0x4029cc20, 0x162f1: 0x4029ce20, 0x162f2: 0x4029d020, 0x162f3: 0x4029d220,
+-	0x162f4: 0x4029d420, 0x162f5: 0x4029d620, 0x162f6: 0x4029d820, 0x162f7: 0x4029da20,
+-	0x162f8: 0x4029dc20, 0x162f9: 0x4029de20, 0x162fa: 0x40026c20, 0x162fb: 0x40026220,
+-	0x162fc: 0x40094020, 0x162fd: 0x40094220, 0x162fe: 0x40094420, 0x162ff: 0x4002c420,
+-	// Block 0x58c, offset 0x16300
+-	0x16300: 0x4004d620, 0x16301: 0xce5f9521, 0x16302: 0x002c0a88, 0x16303: 0xce670991,
+-	0x16304: 0x002c6288, 0x16305: 0x002c9888, 0x16306: 0x002d0888, 0x16307: 0xce6f0991,
+-	0x16308: 0x002d6888, 0x16309: 0x002d9a88, 0x1630a: 0x002dcc88, 0x1630b: 0xcabc0991,
+-	0x1630c: 0xc0030002, 0x1630d: 0x002e8288, 0x1630e: 0xce749571, 0x1630f: 0xce8195a1,
+-	0x16310: 0x002f2c88, 0x16311: 0x002f5688, 0x16312: 0x002f7a88, 0x16313: 0xcad00991,
+-	0x16314: 0x00302c88, 0x16315: 0xc3900b21, 0x16316: 0x0030be88, 0x16317: 0x0030e288,
+-	0x16318: 0x0030f688, 0x16319: 0x00310088, 0x1631a: 0xce790991, 0x1631b: 0x4003f820,
+-	0x1631c: 0x4004e420, 0x1631d: 0x4003fa20, 0x1631e: 0x40062420, 0x1631f: 0x40021620,
+-	0x16320: 0x40061e20, 0x16321: 0xce599521, 0x16322: 0x402c0a20, 0x16323: 0xce650991,
+-	0x16324: 0x402c6220, 0x16325: 0x402c9820, 0x16326: 0x402d0820, 0x16327: 0xce6d0991,
+-	0x16328: 0x402d6820, 0x16329: 0x402d9a20, 0x1632a: 0x402dcc20, 0x1632b: 0xcaba0991,
+-	0x1632c: 0xc0000002, 0x1632d: 0x402e8220, 0x1632e: 0xce719571, 0x1632f: 0xce7b95a1,
+-	0x16330: 0x402f2c20, 0x16331: 0x402f5620, 0x16332: 0x402f7a20, 0x16333: 0xcace0991,
+-	0x16334: 0x40302c20, 0x16335: 0xc38d0b21, 0x16336: 0x4030be20, 0x16337: 0x4030e220,
+-	0x16338: 0x4030f620, 0x16339: 0x40310020, 0x1633a: 0xce770991, 0x1633b: 0x4003fc20,
+-	0x1633c: 0x40094820, 0x1633d: 0x4003fe20, 0x1633e: 0x40094c20, 0x1633f: 0xa0000000,
+-	// Block 0x58d, offset 0x16340
+-	0x16340: 0xe00008f5, 0x16341: 0x002c0883, 0x16342: 0xe0000921, 0x16343: 0x00320ea3,
+-	0x16344: 0x00320e83, 0x16345: 0x00320c83, 0x16346: 0x00320a83, 0x16347: 0xe0000a53,
+-	0x16348: 0xe0000ae8, 0x16349: 0xe0000ae2, 0x1634a: 0xe0000af4, 0x1634b: 0xe0000b20,
+-	0x1634c: 0xe0000c2b, 0x1634d: 0xe0000c25, 0x1634e: 0xe0000c37, 0x1634f: 0xe0000c43,
+-	0x16350: 0x002c96a3, 0x16351: 0x002ee0c3, 0x16352: 0xe0000d9a, 0x16353: 0xe0000d94,
+-	0x16354: 0x003210e3, 0x16355: 0x003210c3, 0x16356: 0x00321083, 0x16357: 0x40093e20,
+-	0x16358: 0x00320883, 0x16359: 0xe0000fe1, 0x1635a: 0xe0000fdb, 0x1635b: 0xe0000fed,
+-	0x1635c: 0x003100a3, 0x1635d: 0xe0001102, 0x1635e: 0x00306aa3, 0x1635f: 0xe0000f7b,
+-	0x16360: 0xe00008f2, 0x16361: 0x402c0820, 0x16362: 0xe000091e, 0x16363: 0x40320e21,
+-	0x16364: 0x40320e20, 0x16365: 0x40320c20, 0x16366: 0x40320a20, 0x16367: 0xe0000a4d,
+-	0x16368: 0xe0000ae5, 0x16369: 0xe0000adf, 0x1636a: 0xe0000af1, 0x1636b: 0xe0000b1d,
+-	0x1636c: 0xe0000c28, 0x1636d: 0xe0000c22, 0x1636e: 0xe0000c34, 0x1636f: 0xe0000c40,
+-	0x16370: 0x402c9621, 0x16371: 0x402ee022, 0x16372: 0xe0000d97, 0x16373: 0xe0000d91,
+-	0x16374: 0x40321023, 0x16375: 0x40321022, 0x16376: 0x40321020, 0x16377: 0x40093c20,
+-	0x16378: 0x40320820, 0x16379: 0xe0000fde, 0x1637a: 0xe0000fd8, 0x1637b: 0xe0000fea,
+-	0x1637c: 0x40310021, 0x1637d: 0xe00010ff, 0x1637e: 0x40306a21, 0x1637f: 0xe0001114,
+-	// Block 0x58e, offset 0x16380
+-	0x16380: 0xe0000983, 0x16381: 0xe0000980, 0x16382: 0xe00008fb, 0x16383: 0xe00008f8,
+-	0x16384: 0xe000097d, 0x16385: 0xe000097a, 0x16386: 0xe0000a38, 0x16387: 0xe0000a35,
+-	0x16388: 0xe0000a3e, 0x16389: 0xe0000a3b, 0x1638a: 0xe0000a4a, 0x1638b: 0xe0000a47,
+-	0x1638c: 0x002c5c83, 0x1638d: 0x402c5c20, 0x1638e: 0xe0000a86, 0x1638f: 0xe0000a83,
+-	0x16390: 0x002c9683, 0x16391: 0x402c9620, 0x16392: 0xe0000b46, 0x16393: 0xe0000b43,
+-	0x16394: 0xe0000aee, 0x16395: 0xe0000aeb, 0x16396: 0xe0000b2c, 0x16397: 0xe0000b29,
+-	0x16398: 0xe0000b40, 0x16399: 0xe0000b3d, 0x1639a: 0xe0000b1a, 0x1639b: 0xe0000b17,
+-	0x1639c: 0xe0000bb8, 0x1639d: 0xe0000bb5, 0x1639e: 0xe0000bb2, 0x1639f: 0xe0000baf,
+-	0x163a0: 0xe0000bc4, 0x163a1: 0xe0000bc1, 0x163a2: 0xe0000bca, 0x163a3: 0xe0000bc7,
+-	0x163a4: 0xe0000bee, 0x163a5: 0xe0000beb, 0x163a6: 0xe0000c1b, 0x163a7: 0xe0000c18,
+-	0x163a8: 0xe0000c51, 0x163a9: 0xe0000c4e, 0x163aa: 0xe0000c60, 0x163ab: 0xe0000c5d,
+-	0x163ac: 0xe0000c31, 0x163ad: 0xe0000c2e, 0x163ae: 0xe0000c5a, 0x163af: 0xe0000c57,
+-	0x163b0: 0xe0000c54, 0x163b1: 0x402da220, 0x163b2: 0xf0000a0a, 0x163b3: 0xf0000404,
+-	0x163b4: 0xe0000c8a, 0x163b5: 0xe0000c87, 0x163b6: 0xe0000c9f, 0x163b7: 0xe0000c9c,
+-	0x163b8: 0x402f7220, 0x163b9: 0xe0000ccc, 0x163ba: 0xe0000cc9, 0x163bb: 0xe0000cd8,
+-	0x163bc: 0xe0000cd5, 0x163bd: 0xe0000cd2, 0x163be: 0xe0000ccf, 0x163bf: 0xe0000d04,
+-	// Block 0x58f, offset 0x163c0
+-	0x163c0: 0xe0000cfe, 0x163c1: 0xe0000cf8, 0x163c2: 0xe0000cf5, 0x163c3: 0x002ee0a3,
+-	0x163c4: 0x402ee021, 0x163c5: 0xe0000d6f, 0x163c6: 0xe0000d6c, 0x163c7: 0xe0000d5d,
+-	0x163c8: 0xe0000d5a, 0x163c9: 0xf0000404, 0x163ca: 0x002ee083, 0x163cb: 0x402ee020,
+-	0x163cc: 0xe0000e2e, 0x163cd: 0xe0000e2b, 0x163ce: 0xe0000da0, 0x163cf: 0xe0000d9d,
+-	0x163d0: 0x003210a3, 0x163d1: 0x40321021, 0x163d2: 0x003208a3, 0x163d3: 0x40320821,
+-	0x163d4: 0xe0000eca, 0x163d5: 0xe0000ec7, 0x163d6: 0xe0000edc, 0x163d7: 0xe0000ed9,
+-	0x163d8: 0xe0000ed0, 0x163d9: 0xe0000ecd, 0x163da: 0xe0000f1f, 0x163db: 0xe0000f1c,
+-	0x163dc: 0xe0000f2d, 0x163dd: 0xe0000f2a, 0x163de: 0xe0000f47, 0x163df: 0xe0000f44,
+-	0x163e0: 0x00302a83, 0x163e1: 0x40302a20, 0x163e2: 0xe0000f99, 0x163e3: 0xe0000f96,
+-	0x163e4: 0xe0000f8a, 0x163e5: 0xe0000f87, 0x163e6: 0x00306a83, 0x163e7: 0x40306a20,
+-	0x163e8: 0xe000102b, 0x163e9: 0xe0001028, 0x163ea: 0xe000103f, 0x163eb: 0xe000103c,
+-	0x163ec: 0xe0000fe7, 0x163ed: 0xe0000fe4, 0x163ee: 0xe0000ff9, 0x163ef: 0xe0000ff6,
+-	0x163f0: 0x003100c3, 0x163f1: 0x40310022, 0x163f2: 0xe0001039, 0x163f3: 0xe0001036,
+-	0x163f4: 0xe00010d8, 0x163f5: 0xe00010d5, 0x163f6: 0xe000110e, 0x163f7: 0xe000110b,
+-	0x163f8: 0xe0001117, 0x163f9: 0xe000113b, 0x163fa: 0xe0001138, 0x163fb: 0xe000114d,
+-	0x163fc: 0xe000114a, 0x163fd: 0x00320683, 0x163fe: 0x40320620, 0x163ff: 0xe0000f64,
+-	// Block 0x590, offset 0x16400
+-	0x16400: 0x402c1a20, 0x16401: 0x002c2a88, 0x16402: 0x002c3288, 0x16403: 0x402c3220,
+-	0x16404: 0x0031c488, 0x16405: 0x4031c420, 0x16406: 0x002efa88, 0x16407: 0x002c4e88,
+-	0x16408: 0x402c4e20, 0x16409: 0x002c7288, 0x1640a: 0x002c7a88, 0x1640b: 0x002c8488,
+-	0x1640c: 0x402c8420, 0x1640d: 0xe000115c, 0x1640e: 0x002cae88, 0x1640f: 0x002cb888,
+-	0x16410: 0x002cc288, 0x16411: 0x002d1688, 0x16412: 0x402d1620, 0x16413: 0x002d4488,
+-	0x16414: 0x002d5888, 0x16415: 0x402d7820, 0x16416: 0x002dc288, 0x16417: 0x002db688,
+-	0x16418: 0x002e0a88, 0x16419: 0x402e0a20, 0x1641a: 0x402e3820, 0x1641b: 0x402e7220,
+-	0x1641c: 0x0030a088, 0x1641d: 0x002eb488, 0x1641e: 0x402ebc20, 0x1641f: 0x002f1088,
+-	0x16420: 0xe0000e56, 0x16421: 0xe0000e53, 0x16422: 0x002d6088, 0x16423: 0x402d6020,
+-	0x16424: 0x002f3e88, 0x16425: 0x402f3e20, 0x16426: 0x002f8288, 0x16427: 0x0031b488,
+-	0x16428: 0x4031b420, 0x16429: 0x00300888, 0x1642a: 0x40301220, 0x1642b: 0x40304220,
+-	0x1642c: 0x00304a88, 0x1642d: 0x40304a20, 0x1642e: 0x00305288, 0x1642f: 0xe000105f,
+-	0x16430: 0xe000105c, 0x16431: 0x0030b488, 0x16432: 0x0030cc88, 0x16433: 0x00311888,
+-	0x16434: 0x40311820, 0x16435: 0x00313488, 0x16436: 0x40313420, 0x16437: 0xce6b0991,
+-	0x16438: 0x00316e88, 0x16439: 0x40316e20, 0x1643a: 0x40317820, 0x1643b: 0x4031a620,
+-	0x1643c: 0x0031bc88, 0x1643d: 0x4031bc20, 0x1643e: 0xe0000fc9, 0x1643f: 0x40319420,
+-	// Block 0x591, offset 0x16440
+-	0x16440: 0x40321220, 0x16441: 0x40321a20, 0x16442: 0x40322220, 0x16443: 0x40322a20,
+-	0x16444: 0xe0000ad5, 0x16445: 0xe0000ad1, 0x16446: 0xe0000acd, 0x16447: 0xf0000a0a,
+-	0x16448: 0xf000040a, 0x16449: 0xf0000404, 0x1644a: 0xf0000a0a, 0x1644b: 0xf000040a,
+-	0x1644c: 0xf0000404, 0x1644d: 0xe0000947, 0x1644e: 0xe0000944, 0x1644f: 0xe0000c3d,
+-	0x16450: 0xe0000c3a, 0x16451: 0xe0000dcc, 0x16452: 0xe0000dc9, 0x16453: 0xe0000ff3,
+-	0x16454: 0xe0000ff0, 0x16455: 0xe00025e4, 0x16456: 0xe00025e1, 0x16457: 0xe00025d2,
+-	0x16458: 0xe00025cf, 0x16459: 0xe00025de, 0x1645a: 0xe00025db, 0x1645b: 0xe00025d8,
+-	0x1645c: 0xe00025d5, 0x1645d: 0x402cae20, 0x1645e: 0xe00032dd, 0x1645f: 0xe00032da,
+-	0x16460: 0xe00025f6, 0x16461: 0xe00025f3, 0x16462: 0xe000a95f, 0x16463: 0xe000a95c,
+-	0x16464: 0x002d6683, 0x16465: 0x402d6620, 0x16466: 0x002d6483, 0x16467: 0x402d6420,
+-	0x16468: 0x002e2083, 0x16469: 0x402e2020, 0x1646a: 0x00321103, 0x1646b: 0x40321024,
+-	0x1646c: 0xe000a9a7, 0x1646d: 0xe000a9a4, 0x1646e: 0x002c6083, 0x1646f: 0x402c6020,
+-	0x16470: 0xe0000c8d, 0x16471: 0xf0000a0a, 0x16472: 0xf000040a, 0x16473: 0xf0000404,
+-	0x16474: 0xe0000bac, 0x16475: 0xe0000ba9, 0x16476: 0x002d7888, 0x16477: 0x00319488,
+-	0x16478: 0xe0000d57, 0x16479: 0xe0000d54, 0x1647a: 0xe00025ea, 0x1647b: 0xe00025e7,
+-	0x1647c: 0xe000a959, 0x1647d: 0xe000a956, 0x1647e: 0xe000a953, 0x1647f: 0xe000a950,
+-	// Block 0x592, offset 0x16480
+-	0x16480: 0xe000098f, 0x16481: 0xe000098c, 0x16482: 0xe0000995, 0x16483: 0xe0000992,
+-	0x16484: 0xe0000b62, 0x16485: 0xe0000b5f, 0x16486: 0xe0000b68, 0x16487: 0xe0000b65,
+-	0x16488: 0xe0000c6c, 0x16489: 0xe0000c69, 0x1648a: 0xe0000c72, 0x1648b: 0xe0000c6f,
+-	0x1648c: 0xe0000e4a, 0x1648d: 0xe0000e47, 0x1648e: 0xe0000e50, 0x1648f: 0xe0000e4d,
+-	0x16490: 0xe0000ee8, 0x16491: 0xe0000ee5, 0x16492: 0xe0000eee, 0x16493: 0xe0000eeb,
+-	0x16494: 0xe0001053, 0x16495: 0xe0001050, 0x16496: 0xe0001059, 0x16497: 0xe0001056,
+-	0x16498: 0xe0000f61, 0x16499: 0xe0000f5e, 0x1649a: 0xe0000fa5, 0x1649b: 0xe0000fa2,
+-	0x1649c: 0x00312288, 0x1649d: 0x40312220, 0x1649e: 0xe0000bf4, 0x1649f: 0xe0000bf1,
+-	0x164a0: 0x002ebc88, 0x164a1: 0x402c8c20, 0x164a2: 0x002f2288, 0x164a3: 0x402f2220,
+-	0x164a4: 0x00314088, 0x164a5: 0x40314020, 0x164a6: 0x00320ca3, 0x164a7: 0x40320c21,
+-	0x164a8: 0xe0000b32, 0x164a9: 0xe0000b2f, 0x164aa: 0xe00032ef, 0x164ab: 0xe00032ec,
+-	0x164ac: 0xe000a97d, 0x164ad: 0xe000a97a, 0x164ae: 0xe0000e04, 0x164af: 0xe0000e01,
+-	0x164b0: 0xe0000e0b, 0x164b1: 0xe0000e07, 0x164b2: 0xe0001129, 0x164b3: 0xe0001126,
+-	0x164b4: 0x402e5e20, 0x164b5: 0x402ed020, 0x164b6: 0x40305a20, 0x164b7: 0x402dd420,
+-	0x164b8: 0xe0000abf, 0x164b9: 0xe0000ec4, 0x164ba: 0x002be888, 0x164bb: 0x002c4488,
+-	0x164bc: 0x402c4420, 0x164bd: 0x002e3888, 0x164be: 0x00303e88, 0x164bf: 0x402ffc20,
+-	// Block 0x593, offset 0x164c0
+-	0x164c0: 0x402f8220, 0x164c1: 0x402fd820, 0x164c2: 0x402ff420, 0x164c3: 0x40300820,
+-	0x164c4: 0x402df620, 0x164c5: 0x40301a20, 0x164c6: 0x40302420, 0x164c7: 0x40306420,
+-	0x164c8: 0x40305220, 0x164c9: 0x40307c20, 0x164ca: 0x4030b420, 0x164cb: 0x4030cc20,
+-	0x164cc: 0x4030da20, 0x164cd: 0x4030ee20, 0x164ce: 0x402e7a20, 0x164cf: 0x40310820,
+-	0x164d0: 0x40314820, 0x164d1: 0x40315020, 0x164d2: 0xce690991, 0x164d3: 0x40318020,
+-	0x164d4: 0x4031cc20, 0x164d5: 0x4031e820, 0x164d6: 0x40320a20, 0x164d7: 0x40323220,
+-	0x164d8: 0x40323a20, 0x164d9: 0x402c1220, 0x164da: 0x402cf820, 0x164db: 0x402d4c20,
+-	0x164dc: 0x402d7020, 0x164dd: 0x402de620, 0x164de: 0x402e1a20, 0x164df: 0x402e2a20,
+-	0x164e0: 0x402f6220, 0x164e1: 0x4031fa20, 0x164e2: 0x40320220, 0x164e3: 0xe0000aca,
+-	0x164e4: 0xe0000adc, 0x164e5: 0xe0000ad9, 0x164e6: 0xe0000fcc, 0x164e7: 0xe0000fcf,
+-	0x164e8: 0xe0000fba, 0x164e9: 0xe0000ba1, 0x164ea: 0xe0000d11, 0x164eb: 0xe0000d18,
+-	0x164ec: 0x40324220, 0x164ed: 0x40324a20, 0x164ee: 0x40309020, 0x164ef: 0x40309820,
+-	0x164f0: 0x002d6894, 0x164f1: 0x002d8094, 0x164f2: 0x002dcc94, 0x164f3: 0x002f7a94,
+-	0x164f4: 0x002f9894, 0x164f5: 0x002fac94, 0x164f6: 0x002fd894, 0x164f7: 0x0030e294,
+-	0x164f8: 0x00310094, 0x164f9: 0x40064020, 0x164fa: 0x40064420, 0x164fb: 0x402d9620,
+-	0x164fc: 0x4031de20, 0x164fd: 0x402d9820, 0x164fe: 0x4031e220, 0x164ff: 0x4031f020,
+-	// Block 0x594, offset 0x16500
+-	0x16500: 0xe0000d24, 0x16501: 0xe0000d21, 0x16502: 0xe0000d2a, 0x16503: 0xe0000d27,
+-	0x16504: 0xe0000d69, 0x16505: 0xe0000d66, 0x16506: 0xe0000d7b, 0x16507: 0xe0000d78,
+-	0x16508: 0xe0000d87, 0x16509: 0xe0000d84, 0x1650a: 0xe0000d81, 0x1650b: 0xe0000d7e,
+-	0x1650c: 0xe000a971, 0x1650d: 0xe000a96e, 0x1650e: 0xe000a977, 0x1650f: 0xe000a974,
+-	0x16510: 0xe0000e3d, 0x16511: 0xe0000e39, 0x16512: 0xe0000e35, 0x16513: 0xe0000e31,
+-	0x16514: 0xe0000ea7, 0x16515: 0xe0000ea4, 0x16516: 0xe0000ead, 0x16517: 0xe0000eaa,
+-	0x16518: 0xe0000ed6, 0x16519: 0xe0000ed3, 0x1651a: 0xe0000ef4, 0x1651b: 0xe0000ef1,
+-	0x1651c: 0xe0000efb, 0x1651d: 0xe0000ef7, 0x1651e: 0xe0000f02, 0x1651f: 0xe0000eff,
+-	0x16520: 0xe0000f41, 0x16521: 0xe0000f3e, 0x16522: 0xe0000f53, 0x16523: 0xe0000f50,
+-	0x16524: 0xe0000f26, 0x16525: 0xe0000f22, 0x16526: 0xe000a594, 0x16527: 0xe000a591,
+-	0x16528: 0xe0000f5a, 0x16529: 0xe0000f56, 0x1652a: 0xe0000f93, 0x1652b: 0xe0000f90,
+-	0x1652c: 0xe0000f9f, 0x1652d: 0xe0000f9c, 0x1652e: 0xe0000fb1, 0x1652f: 0xe0000fae,
+-	0x16530: 0xe0000fab, 0x16531: 0xe0000fa8, 0x16532: 0xe0001093, 0x16533: 0xe0001090,
+-	0x16534: 0xe000109f, 0x16535: 0xe000109c, 0x16536: 0xe0001099, 0x16537: 0xe0001096,
+-	0x16538: 0xe0001032, 0x16539: 0xe000102e, 0x1653a: 0xe00025e4, 0x1653b: 0xe00025e1,
+-	0x1653c: 0xe00010a9, 0x1653d: 0xe00010a6, 0x1653e: 0xe00010af, 0x1653f: 0xe00010ac,
+-	// Block 0x595, offset 0x16540
+-	0x16540: 0xe00010d2, 0x16541: 0xe00010cf, 0x16542: 0xe00010cc, 0x16543: 0xe00010c9,
+-	0x16544: 0xe00010e1, 0x16545: 0xe00010de, 0x16546: 0xe00010e7, 0x16547: 0xe00010e4,
+-	0x16548: 0xe00010ed, 0x16549: 0xe00010ea, 0x1654a: 0xe00010fc, 0x1654b: 0xe00010f9,
+-	0x1654c: 0xe00010f6, 0x1654d: 0xe00010f3, 0x1654e: 0xe0001123, 0x1654f: 0xe0001120,
+-	0x16550: 0xe0001141, 0x16551: 0xe000113e, 0x16552: 0xe0001153, 0x16553: 0xe0001150,
+-	0x16554: 0xe0001159, 0x16555: 0xe0001156, 0x16556: 0xe0000c15, 0x16557: 0xe0000f8d,
+-	0x16558: 0xe00010db, 0x16559: 0xe0001111, 0x1655a: 0xf0000404, 0x1655b: 0xe0000f70,
+-	0x1655c: 0x40300420, 0x1655d: 0x40300620, 0x1655e: 0xe0000f7f, 0x1655f: 0x402c9620,
+-	0x16560: 0xe000099b, 0x16561: 0xe0000998, 0x16562: 0xe0000989, 0x16563: 0xe0000986,
+-	0x16564: 0xe0003773, 0x16565: 0xe0003770, 0x16566: 0xe0000930, 0x16567: 0xe000092c,
+-	0x16568: 0xe0000940, 0x16569: 0xe000093c, 0x1656a: 0xe000a96b, 0x1656b: 0xe000a968,
+-	0x1656c: 0xe00009aa, 0x1656d: 0xe00009a6, 0x1656e: 0xe000376d, 0x1656f: 0xe000376a,
+-	0x16570: 0xe000090a, 0x16571: 0xe0000906, 0x16572: 0xe000091a, 0x16573: 0xe0000916,
+-	0x16574: 0xe000a965, 0x16575: 0xe000a962, 0x16576: 0xe00009a2, 0x16577: 0xe000099e,
+-	0x16578: 0xe0000b6e, 0x16579: 0xe0000b6b, 0x1657a: 0xe0000b5c, 0x1657b: 0xe0000b59,
+-	0x1657c: 0xe0000b26, 0x1657d: 0xe0000b23, 0x1657e: 0xe0000afb, 0x1657f: 0xe0000af7,
+-	// Block 0x596, offset 0x16580
+-	0x16580: 0xe0000b03, 0x16581: 0xe0000aff, 0x16582: 0xe0000b13, 0x16583: 0xe0000b0f,
+-	0x16584: 0xe0000b0b, 0x16585: 0xe0000b07, 0x16586: 0xe0000b75, 0x16587: 0xe0000b71,
+-	0x16588: 0xe0000c66, 0x16589: 0xe0000c63, 0x1658a: 0xe0000c78, 0x1658b: 0xe0000c75,
+-	0x1658c: 0xe0000e84, 0x1658d: 0xe0000e81, 0x1658e: 0xe0000e44, 0x1658f: 0xe0000e41,
+-	0x16590: 0xe000a989, 0x16591: 0xe000a986, 0x16592: 0xe000a98f, 0x16593: 0xe000a98c,
+-	0x16594: 0xe000a99b, 0x16595: 0xe000a998, 0x16596: 0xe000a995, 0x16597: 0xe000a992,
+-	0x16598: 0xe000a9a1, 0x16599: 0xe000a99e, 0x1659a: 0xe0000e5d, 0x1659b: 0xe0000e59,
+-	0x1659c: 0xe0000e65, 0x1659d: 0xe0000e61, 0x1659e: 0xe0000e75, 0x1659f: 0xe0000e71,
+-	0x165a0: 0xe000a983, 0x165a1: 0xe000a980, 0x165a2: 0xe0000e7d, 0x165a3: 0xe0000e79,
+-	0x165a4: 0xe000108d, 0x165a5: 0xe000108a, 0x165a6: 0xe000104d, 0x165a7: 0xe000104a,
+-	0x165a8: 0xe0001066, 0x165a9: 0xe0001062, 0x165aa: 0xe000106e, 0x165ab: 0xe000106a,
+-	0x165ac: 0xe000107e, 0x165ad: 0xe000107a, 0x165ae: 0xe0001076, 0x165af: 0xe0001072,
+-	0x165b0: 0xe0001086, 0x165b1: 0xe0001082, 0x165b2: 0xe0001108, 0x165b3: 0xe0001105,
+-	0x165b4: 0xe0001135, 0x165b5: 0xe0001132, 0x165b6: 0xe000112f, 0x165b7: 0xe000112c,
+-	0x165b8: 0xe000111d, 0x165b9: 0xe000111a, 0x165ba: 0xe0000d0a, 0x165bb: 0xe0000d07,
+-	0x165bc: 0x0030d888, 0x165bd: 0x4030d820, 0x165be: 0x00312088, 0x165bf: 0x40312020,
+-	// Block 0x597, offset 0x165c0
+-	0x165c2: 0x4044b620, 0x165c3: 0x4044b820,
+-	0x165c5: 0x40449220, 0x165c6: 0x40449420, 0x165c7: 0x40449620,
+-	0x165c8: 0x40449820, 0x165c9: 0x40449a20, 0x165ca: 0x40449c20, 0x165cb: 0x40449e20,
+-	0x165cc: 0x4044a020, 0x165cd: 0x4044a220, 0x165ce: 0x4044a420, 0x165cf: 0x4044a620,
+-	0x165d0: 0x4044a820, 0x165d1: 0x4044aa20, 0x165d2: 0x4044ac20, 0x165d3: 0x4044ae20,
+-	0x165d4: 0x4044b020, 0x165d5: 0x4044b220, 0x165d6: 0x4044b420,
+-	0x165da: 0x4044b620, 0x165db: 0x4044b820,
+-	0x165dc: 0x4044ba20, 0x165dd: 0x4044bc20, 0x165de: 0x4044be20, 0x165df: 0x4044c020,
+-	0x165e0: 0x4044c220, 0x165e1: 0x4044c420, 0x165e2: 0x4044c620, 0x165e3: 0x4044c820,
+-	0x165e4: 0x4044ce20, 0x165e5: 0x4044cc20, 0x165e6: 0x4044ce20, 0x165e7: 0x4044d020,
+-	0x165e8: 0x4044d220, 0x165e9: 0x4044d420, 0x165ea: 0x4044d620, 0x165eb: 0x4044d820,
+-	0x165ec: 0x4044da20, 0x165ed: 0x4044dc20, 0x165ee: 0x4044de20, 0x165ef: 0x4044e020,
+-	0x165f0: 0x4044e220, 0x165f1: 0x4044e420, 0x165f3: 0x4044e620,
+-	0x165f4: 0x4044e820, 0x165f5: 0x4044ea20, 0x165f6: 0x4044ec20, 0x165f7: 0x4044ee20,
+-	0x165f8: 0x4044f020, 0x165f9: 0x4044f220, 0x165fa: 0x4044f420, 0x165fb: 0x4044f620,
+-	0x165fd: 0x4044f820,
+-	// Block 0x598, offset 0x16600
+-	0x16600: 0xa0000000, 0x16601: 0xa0000000, 0x16602: 0xa0000000, 0x16603: 0xa0000000,
+-	0x16604: 0xa0000000, 0x16605: 0xa0000000, 0x16606: 0xa0000000, 0x16607: 0xa0000000,
+-	0x16608: 0xa0000000, 0x16609: 0x40020020, 0x1660a: 0x40020220, 0x1660b: 0x40020420,
+-	0x1660c: 0x40020620, 0x1660d: 0x40020820, 0x1660e: 0xa0000000, 0x1660f: 0xa0000000,
+-	0x16610: 0xa0000000, 0x16611: 0xa0000000, 0x16612: 0xa0000000, 0x16613: 0xa0000000,
+-	0x16614: 0xa0000000, 0x16615: 0xa0000000, 0x16616: 0xa0000000, 0x16617: 0xa0000000,
+-	0x16618: 0xa0000000, 0x16619: 0xa0000000, 0x1661a: 0xa0000000, 0x1661b: 0xa0000000,
+-	0x1661c: 0xa0000000, 0x1661d: 0xa0000000, 0x1661e: 0xa0000000, 0x1661f: 0xa0000000,
+-	0x16620: 0x40021220, 0x16621: 0x4002ba20, 0x16622: 0x4003e020, 0x16623: 0x4004ea20,
+-	0x16624: 0x4027de20, 0x16625: 0x4004ec20, 0x16626: 0x4004e620, 0x16627: 0x4003d220,
+-	0x16628: 0x4003f420, 0x16629: 0x4003f620, 0x1662a: 0x4004d820, 0x1662b: 0x40093820,
+-	0x1662c: 0x40024020, 0x1662d: 0x40021a20, 0x1662e: 0x4002e420, 0x1662f: 0x4004e220,
+-	0x16630: 0x4029cc20, 0x16631: 0x4029ce20, 0x16632: 0x4029d020, 0x16633: 0x4029d220,
+-	0x16634: 0x4029d420, 0x16635: 0x4029d620, 0x16636: 0x4029d820, 0x16637: 0x4029da20,
+-	0x16638: 0x4029dc20, 0x16639: 0x4029de20, 0x1663a: 0x40026c20, 0x1663b: 0x40026220,
+-	0x1663c: 0x40094020, 0x1663d: 0x40094220, 0x1663e: 0x40094420, 0x1663f: 0x4002c420,
+-	// Block 0x599, offset 0x16640
+-	0x16640: 0x4004d620, 0x16641: 0xce2d0071, 0x16642: 0x002c0a88, 0x16643: 0xc3590953,
+-	0x16644: 0x002c6288, 0x16645: 0x002c9888, 0x16646: 0x002d0888, 0x16647: 0x002d2288,
+-	0x16648: 0x002d6888, 0x16649: 0x002d9a88, 0x1664a: 0x002dcc88, 0x1664b: 0x002dfe88,
+-	0x1664c: 0xc0030002, 0x1664d: 0x002e8288, 0x1664e: 0x002e9e88, 0x1664f: 0xc33f2741,
+-	0x16650: 0x002f2c88, 0x16651: 0x002f5688, 0x16652: 0xc35f0991, 0x16653: 0xc3430991,
+-	0x16654: 0x00302c88, 0x16655: 0x00306c88, 0x16656: 0x0030be88, 0x16657: 0x0030e288,
+-	0x16658: 0x0030f688, 0x16659: 0x00310088, 0x1665a: 0xc3630991, 0x1665b: 0x4003f820,
+-	0x1665c: 0x4004e420, 0x1665d: 0x4003fa20, 0x1665e: 0x40062420, 0x1665f: 0x40021620,
+-	0x16660: 0x40061e20, 0x16661: 0xce2b0071, 0x16662: 0x402c0a20, 0x16663: 0xc3550953,
+-	0x16664: 0x402c6220, 0x16665: 0x402c9820, 0x16666: 0x402d0820, 0x16667: 0x402d2220,
+-	0x16668: 0x402d6820, 0x16669: 0x402d9a20, 0x1666a: 0x402dcc20, 0x1666b: 0x402dfe20,
+-	0x1666c: 0xc0000002, 0x1666d: 0x402e8220, 0x1666e: 0x402e9e20, 0x1666f: 0xc33d2741,
+-	0x16670: 0x402f2c20, 0x16671: 0x402f5620, 0x16672: 0xc35d0991, 0x16673: 0xc3410991,
+-	0x16674: 0x40302c20, 0x16675: 0x40306c20, 0x16676: 0x4030be20, 0x16677: 0x4030e220,
+-	0x16678: 0x4030f620, 0x16679: 0x40310020, 0x1667a: 0xc3610991, 0x1667b: 0x4003fc20,
+-	0x1667c: 0x40094820, 0x1667d: 0x4003fe20, 0x1667e: 0x40094c20, 0x1667f: 0xa0000000,
+-	// Block 0x59a, offset 0x16680
+-	0x16680: 0xe00008f5, 0x16681: 0xe00008ef, 0x16682: 0xe0000921, 0x16683: 0xe0000969,
+-	0x16684: 0x002be083, 0x16685: 0xe000094d, 0x16686: 0xe00009dd, 0x16687: 0xe0000a53,
+-	0x16688: 0xe0000ae8, 0x16689: 0xe0000ae2, 0x1668a: 0xe0000af4, 0x1668b: 0xe0000b20,
+-	0x1668c: 0xe0000c2b, 0x1668d: 0xe0000c25, 0x1668e: 0xe0000c37, 0x1668f: 0xe0000c43,
+-	0x16690: 0xe0000ab3, 0x16691: 0xe0000d63, 0x16692: 0xe0000d9a, 0x16693: 0xe0000d94,
+-	0x16694: 0x002ee483, 0x16695: 0xe0000de6, 0x16696: 0xe0000dd2, 0x16697: 0x40093e20,
+-	0x16698: 0xe0000e12, 0x16699: 0xe0000fe1, 0x1669a: 0xe0000fdb, 0x1669b: 0xe0000fed,
+-	0x1669c: 0xe0000fff, 0x1669d: 0xe0001102, 0x1669e: 0x00318888, 0x1669f: 0xe0000f7b,
+-	0x166a0: 0xe00008f2, 0x166a1: 0xe00008ec, 0x166a2: 0xe000091e, 0x166a3: 0xe0000966,
+-	0x166a4: 0x402be020, 0x166a5: 0xe000094a, 0x166a6: 0xe00009d5, 0x166a7: 0xe0000a4d,
+-	0x166a8: 0xe0000ae5, 0x166a9: 0xe0000adf, 0x166aa: 0xe0000af1, 0x166ab: 0xe0000b1d,
+-	0x166ac: 0xe0000c28, 0x166ad: 0xe0000c22, 0x166ae: 0xe0000c34, 0x166af: 0xe0000c40,
+-	0x166b0: 0xe0000aad, 0x166b1: 0xe0000d60, 0x166b2: 0xe0000d97, 0x166b3: 0xe0000d91,
+-	0x166b4: 0x402ee420, 0x166b5: 0xe0000de3, 0x166b6: 0xe0000dcf, 0x166b7: 0x40093c20,
+-	0x166b8: 0xe0000e0f, 0x166b9: 0xe0000fde, 0x166ba: 0xe0000fd8, 0x166bb: 0xe0000fea,
+-	0x166bc: 0xe0000ffc, 0x166bd: 0xe00010ff, 0x166be: 0x40318820, 0x166bf: 0xe0001114,
+-	// Block 0x59b, offset 0x166c0
+-	0x166c0: 0x40321220, 0x166c1: 0x40321a20, 0x166c2: 0x40322220, 0x166c3: 0x40322a20,
+-	0x166c4: 0xe0000ad5, 0x166c5: 0xe0000ad1, 0x166c6: 0xe0000acd, 0x166c7: 0xf0000a0a,
+-	0x166c8: 0xf000040a, 0x166c9: 0xf0000404, 0x166ca: 0xf0000a0a, 0x166cb: 0xf000040a,
+-	0x166cc: 0xf0000404, 0x166cd: 0xe0000947, 0x166ce: 0xe0000944, 0x166cf: 0xe0000c3d,
+-	0x166d0: 0xe0000c3a, 0x166d1: 0xe0000dcc, 0x166d2: 0xe0000dc9, 0x166d3: 0xe0000ff3,
+-	0x166d4: 0xe0000ff0, 0x166d5: 0xe000101e, 0x166d6: 0xe000101a, 0x166d7: 0xe0001006,
+-	0x166d8: 0xe0001002, 0x166d9: 0xe0001016, 0x166da: 0xe0001012, 0x166db: 0xe000100e,
+-	0x166dc: 0xe000100a, 0x166dd: 0x402cae20, 0x166de: 0xe00033c3, 0x166df: 0xe00033c0,
+-	0x166e0: 0xe0000976, 0x166e1: 0xe0000972, 0x166e2: 0xe00009f4, 0x166e3: 0xe00009ef,
+-	0x166e4: 0x002d3a88, 0x166e5: 0x402d3a20, 0x166e6: 0xe0000bbe, 0x166e7: 0xe0000bbb,
+-	0x166e8: 0xe0000c99, 0x166e9: 0xe0000c96, 0x166ea: 0xe0000e20, 0x166eb: 0xe0000e1d,
+-	0x166ec: 0xe0000e27, 0x166ed: 0xe0000e23, 0x166ee: 0xe0001162, 0x166ef: 0xe000115f,
+-	0x166f0: 0xe0000c8d, 0x166f1: 0xf0000a0a, 0x166f2: 0xf000040a, 0x166f3: 0xf0000404,
+-	0x166f4: 0xe0000bac, 0x166f5: 0xe0000ba9, 0x166f6: 0x002d7888, 0x166f7: 0x00319488,
+-	0x166f8: 0xe0000d57, 0x166f9: 0xe0000d54, 0x166fa: 0xe0000954, 0x166fb: 0xe0000950,
+-	0x166fc: 0xe00009ea, 0x166fd: 0xe00009e5, 0x166fe: 0xe0000e19, 0x166ff: 0xe0000e15,
+-	// Block 0x59c, offset 0x16700
+-	0x16700: 0xe0000b03, 0x16701: 0xe0000aff, 0x16702: 0xe0000b13, 0x16703: 0xe0000b0f,
+-	0x16704: 0xe0000b0b, 0x16705: 0xe0000b07, 0x16706: 0xe0000b75, 0x16707: 0xe0000b71,
+-	0x16708: 0xe0000c66, 0x16709: 0xe0000c63, 0x1670a: 0xe0000c78, 0x1670b: 0xe0000c75,
+-	0x1670c: 0xe0000e84, 0x1670d: 0xe0000e81, 0x1670e: 0xe0000e44, 0x1670f: 0xe0000e41,
+-	0x16710: 0xe000a91a, 0x16711: 0xe000a917, 0x16712: 0xe000a920, 0x16713: 0xe000a91d,
+-	0x16714: 0xe000a926, 0x16715: 0xe000a923, 0x16716: 0xe000258a, 0x16717: 0xe0002587,
+-	0x16718: 0xe000a92c, 0x16719: 0xe000a929, 0x1671a: 0xe0000e5d, 0x1671b: 0xe0000e59,
+-	0x1671c: 0xe0000e65, 0x1671d: 0xe0000e61, 0x1671e: 0xe0000e75, 0x1671f: 0xe0000e71,
+-	0x16720: 0xe0000e6d, 0x16721: 0xe0000e69, 0x16722: 0xe0000e7d, 0x16723: 0xe0000e79,
+-	0x16724: 0xe000108d, 0x16725: 0xe000108a, 0x16726: 0xe000104d, 0x16727: 0xe000104a,
+-	0x16728: 0xe0001066, 0x16729: 0xe0001062, 0x1672a: 0xe000106e, 0x1672b: 0xe000106a,
+-	0x1672c: 0xe000107e, 0x1672d: 0xe000107a, 0x1672e: 0xe0001076, 0x1672f: 0xe0001072,
+-	0x16730: 0xe0001086, 0x16731: 0xe0001082, 0x16732: 0xe0001108, 0x16733: 0xe0001105,
+-	0x16734: 0xe0001135, 0x16735: 0xe0001132, 0x16736: 0xe000112f, 0x16737: 0xe000112c,
+-	0x16738: 0xe000111d, 0x16739: 0xe000111a, 0x1673a: 0xe0000d0a, 0x1673b: 0xe0000d07,
+-	0x1673c: 0x0030d888, 0x1673d: 0x4030d820, 0x1673e: 0x00312088, 0x1673f: 0x40312020,
+-	// Block 0x59d, offset 0x16740
+-	0x16740: 0xa0000000, 0x16741: 0xa0000000, 0x16742: 0xa0000000, 0x16743: 0xa0000000,
+-	0x16744: 0xa0000000, 0x16745: 0xa0000000, 0x16746: 0xa0000000, 0x16747: 0xa0000000,
+-	0x16748: 0xa0000000, 0x16749: 0x40020020, 0x1674a: 0x40020220, 0x1674b: 0x40020420,
+-	0x1674c: 0x40020620, 0x1674d: 0x40020820, 0x1674e: 0xa0000000, 0x1674f: 0xa0000000,
+-	0x16750: 0xa0000000, 0x16751: 0xa0000000, 0x16752: 0xa0000000, 0x16753: 0xa0000000,
+-	0x16754: 0xa0000000, 0x16755: 0xa0000000, 0x16756: 0xa0000000, 0x16757: 0xa0000000,
+-	0x16758: 0xa0000000, 0x16759: 0xa0000000, 0x1675a: 0xa0000000, 0x1675b: 0xa0000000,
+-	0x1675c: 0xa0000000, 0x1675d: 0xa0000000, 0x1675e: 0xa0000000, 0x1675f: 0xa0000000,
+-	0x16760: 0x40021220, 0x16761: 0x4002ba20, 0x16762: 0x4003e020, 0x16763: 0x4004ea20,
+-	0x16764: 0x4027de20, 0x16765: 0x4004ec20, 0x16766: 0x4004e620, 0x16767: 0x4003d220,
+-	0x16768: 0x4003f420, 0x16769: 0x4003f620, 0x1676a: 0x4004d820, 0x1676b: 0x40093820,
+-	0x1676c: 0x40024020, 0x1676d: 0x40021a20, 0x1676e: 0x4002e420, 0x1676f: 0x4004e220,
+-	0x16770: 0x4029cc20, 0x16771: 0x4029ce20, 0x16772: 0x4029d020, 0x16773: 0x4029d220,
+-	0x16774: 0x4029d420, 0x16775: 0x4029d620, 0x16776: 0x4029d820, 0x16777: 0x4029da20,
+-	0x16778: 0x4029dc20, 0x16779: 0x4029de20, 0x1677a: 0x40026c20, 0x1677b: 0x40026220,
+-	0x1677c: 0x40094020, 0x1677d: 0x40094220, 0x1677e: 0x40094420, 0x1677f: 0x4002c420,
+-	// Block 0x59e, offset 0x16780
+-	0x16780: 0x4004d620, 0x16781: 0x002bde88, 0x16782: 0x002c0a88, 0x16783: 0xc5872851,
+-	0x16784: 0x002c6288, 0x16785: 0x002c9888, 0x16786: 0x002d0888, 0x16787: 0x002d2288,
+-	0x16788: 0x002d6888, 0x16789: 0x002d9a88, 0x1678a: 0x002dcc88, 0x1678b: 0x002dfe88,
+-	0x1678c: 0xc0030002, 0x1678d: 0x002e8288, 0x1678e: 0x002e9e88, 0x1678f: 0x002ee288,
+-	0x16790: 0x002f2c88, 0x16791: 0x002f5688, 0x16792: 0x002f7a88, 0x16793: 0xc3430991,
+-	0x16794: 0x00302c88, 0x16795: 0x00306c88, 0x16796: 0x0030be88, 0x16797: 0x0030e288,
+-	0x16798: 0x0030f688, 0x16799: 0x00310088, 0x1679a: 0xc3630991, 0x1679b: 0x4003f820,
+-	0x1679c: 0x4004e420, 0x1679d: 0x4003fa20, 0x1679e: 0x40062420, 0x1679f: 0x40021620,
+-	0x167a0: 0x40061e20, 0x167a1: 0x402bde20, 0x167a2: 0x402c0a20, 0x167a3: 0xc5842851,
+-	0x167a4: 0x402c6220, 0x167a5: 0x402c9820, 0x167a6: 0x402d0820, 0x167a7: 0x402d2220,
+-	0x167a8: 0x402d6820, 0x167a9: 0x402d9a20, 0x167aa: 0x402dcc20, 0x167ab: 0x402dfe20,
+-	0x167ac: 0xc0000002, 0x167ad: 0x402e8220, 0x167ae: 0x402e9e20, 0x167af: 0x402ee220,
+-	0x167b0: 0x402f2c20, 0x167b1: 0x402f5620, 0x167b2: 0x402f7a20, 0x167b3: 0xc3410991,
+-	0x167b4: 0x40302c20, 0x167b5: 0x40306c20, 0x167b6: 0x4030be20, 0x167b7: 0x4030e220,
+-	0x167b8: 0x4030f620, 0x167b9: 0x40310020, 0x167ba: 0xc3610991, 0x167bb: 0x4003fc20,
+-	0x167bc: 0x40094820, 0x167bd: 0x4003fe20, 0x167be: 0x40094c20, 0x167bf: 0xa0000000,
+-	// Block 0x59f, offset 0x167c0
+-	0x167c0: 0xe0000983, 0x167c1: 0xe0000980, 0x167c2: 0xe00008fb, 0x167c3: 0xe00008f8,
+-	0x167c4: 0xe000097d, 0x167c5: 0xe000097a, 0x167c6: 0x002c3e83, 0x167c7: 0x402c3e20,
+-	0x167c8: 0xe0000a3e, 0x167c9: 0xe0000a3b, 0x167ca: 0xe0000a4a, 0x167cb: 0xe0000a47,
+-	0x167cc: 0x002c3c83, 0x167cd: 0x402c3c20, 0x167ce: 0xe0000a86, 0x167cf: 0xe0000a83,
+-	0x167d0: 0x002c6483, 0x167d1: 0x402c6420, 0x167d2: 0xe0000b46, 0x167d3: 0xe0000b43,
+-	0x167d4: 0xe0000aee, 0x167d5: 0xe0000aeb, 0x167d6: 0xe0000b2c, 0x167d7: 0xe0000b29,
+-	0x167d8: 0xe0000b40, 0x167d9: 0xe0000b3d, 0x167da: 0xe0000b1a, 0x167db: 0xe0000b17,
+-	0x167dc: 0xe0000bb8, 0x167dd: 0xe0000bb5, 0x167de: 0xe0000bb2, 0x167df: 0xe0000baf,
+-	0x167e0: 0xe0000bc4, 0x167e1: 0xe0000bc1, 0x167e2: 0xe0000bca, 0x167e3: 0xe0000bc7,
+-	0x167e4: 0xe0000bee, 0x167e5: 0xe0000beb, 0x167e6: 0xe0000c1b, 0x167e7: 0xe0000c18,
+-	0x167e8: 0xe0000c51, 0x167e9: 0xe0000c4e, 0x167ea: 0xe0000c60, 0x167eb: 0xe0000c5d,
+-	0x167ec: 0xe0000c31, 0x167ed: 0xe0000c2e, 0x167ee: 0xe0000c5a, 0x167ef: 0xe0000c57,
+-	0x167f0: 0xe0000c54, 0x167f1: 0x402da220, 0x167f2: 0xf0000a0a, 0x167f3: 0xf0000404,
+-	0x167f4: 0xe0000c8a, 0x167f5: 0xe0000c87, 0x167f6: 0xe0000c9f, 0x167f7: 0xe0000c9c,
+-	0x167f8: 0x402f7220, 0x167f9: 0xe0000ccc, 0x167fa: 0xe0000cc9, 0x167fb: 0xe0000cd8,
+-	0x167fc: 0xe0000cd5, 0x167fd: 0xe0000cd2, 0x167fe: 0xe0000ccf, 0x167ff: 0xe0000d04,
+-	// Block 0x5a0, offset 0x16800
+-	0x16800: 0xa0000000, 0x16801: 0xa0000000, 0x16802: 0xa0000000, 0x16803: 0xa0000000,
+-	0x16804: 0xa0000000, 0x16805: 0xa0000000, 0x16806: 0xa0000000, 0x16807: 0xa0000000,
+-	0x16808: 0xa0000000, 0x16809: 0x40020020, 0x1680a: 0x40020220, 0x1680b: 0x40020420,
+-	0x1680c: 0x40020620, 0x1680d: 0x40020820, 0x1680e: 0xa0000000, 0x1680f: 0xa0000000,
+-	0x16810: 0xa0000000, 0x16811: 0xa0000000, 0x16812: 0xa0000000, 0x16813: 0xa0000000,
+-	0x16814: 0xa0000000, 0x16815: 0xa0000000, 0x16816: 0xa0000000, 0x16817: 0xa0000000,
+-	0x16818: 0xa0000000, 0x16819: 0xa0000000, 0x1681a: 0xa0000000, 0x1681b: 0xa0000000,
+-	0x1681c: 0xa0000000, 0x1681d: 0xa0000000, 0x1681e: 0xa0000000, 0x1681f: 0xa0000000,
+-	0x16820: 0x40021220, 0x16821: 0x4002ba20, 0x16822: 0x4003e020, 0x16823: 0x4004ea20,
+-	0x16824: 0x4027de20, 0x16825: 0x4004ec20, 0x16826: 0x4004e620, 0x16827: 0x4003d220,
+-	0x16828: 0x4003f420, 0x16829: 0x4003f620, 0x1682a: 0x4004d820, 0x1682b: 0x40093820,
+-	0x1682c: 0x40024020, 0x1682d: 0x40021a20, 0x1682e: 0x4002e420, 0x1682f: 0x4004e220,
+-	0x16830: 0x4029cc20, 0x16831: 0x4029ce20, 0x16832: 0x4029d020, 0x16833: 0x4029d220,
+-	0x16834: 0x4029d420, 0x16835: 0x4029d620, 0x16836: 0x4029d820, 0x16837: 0x4029da20,
+-	0x16838: 0x4029dc20, 0x16839: 0x4029de20, 0x1683a: 0x40026c20, 0x1683b: 0x40026220,
+-	0x1683c: 0x40094020, 0x1683d: 0x40094220, 0x1683e: 0x40094420, 0x1683f: 0x4002c420,
+-	// Block 0x5a1, offset 0x16840
+-	0x16840: 0x4004d620, 0x16841: 0x002bde88, 0x16842: 0x002c0a88, 0x16843: 0xcab40911,
+-	0x16844: 0xce8909c2, 0x16845: 0xc6220071, 0x16846: 0x002d0888, 0x16847: 0xce8c2a12,
+-	0x16848: 0x002d6888, 0x16849: 0x002d9a88, 0x1684a: 0x002dcc88, 0x1684b: 0x002dfe88,
+-	0x1684c: 0xce930ac4, 0x1684d: 0x002e8288, 0x1684e: 0xce982a12, 0x1684f: 0x002ee288,
+-	0x16850: 0x002f2c88, 0x16851: 0x002f5688, 0x16852: 0xce9b9602, 0x16853: 0xce9e09c2,
+-	0x16854: 0xcea309c2, 0x16855: 0x00306c88, 0x16856: 0x0030be88, 0x16857: 0x0030e288,
+-	0x16858: 0xcea809c2, 0x16859: 0x00310088, 0x1685a: 0xceab09c2, 0x1685b: 0x4003f820,
+-	0x1685c: 0x4004e420, 0x1685d: 0x4003fa20, 0x1685e: 0x40062420, 0x1685f: 0x40021620,
+-	0x16860: 0x40061e20, 0x16861: 0x402bde20, 0x16862: 0x402c0a20, 0x16863: 0xcab20911,
+-	0x16864: 0xce8709b1, 0x16865: 0xc6200071, 0x16866: 0x402d0820, 0x16867: 0xcab62a01,
+-	0x16868: 0x402d6820, 0x16869: 0x402d9a20, 0x1686a: 0x402dcc20, 0x1686b: 0x402dfe20,
+-	0x1686c: 0xce8f0a73, 0x1686d: 0x402e8220, 0x1686e: 0xcac62a01, 0x1686f: 0x402ee220,
+-	0x16870: 0x402f2c20, 0x16871: 0x402f5620, 0x16872: 0xcaca95f1, 0x16873: 0xcace09b1,
+-	0x16874: 0xcea109b1, 0x16875: 0x40306c20, 0x16876: 0x4030be20, 0x16877: 0x4030e220,
+-	0x16878: 0xcea609b1, 0x16879: 0x40310020, 0x1687a: 0xcad209b1, 0x1687b: 0x4003fc20,
+-	0x1687c: 0x40094820, 0x1687d: 0x4003fe20, 0x1687e: 0x40094c20, 0x1687f: 0xa0000000,
+-	// Block 0x5a2, offset 0x16880
+-	0x16880: 0xe00008f5, 0x16881: 0xe00008ef, 0x16882: 0xe0000921, 0x16883: 0xe0000969,
+-	0x16884: 0xe000095b, 0x16885: 0xe000094d, 0x16886: 0xe00009dd, 0x16887: 0x002c6083,
+-	0x16888: 0xe0000ae8, 0x16889: 0xe0000ae2, 0x1688a: 0xe0000af4, 0x1688b: 0x002d0683,
+-	0x1688c: 0xe0000c2b, 0x1688d: 0xe0000c25, 0x1688e: 0xe0000c37, 0x1688f: 0xe0000c43,
+-	0x16890: 0xe0000ab3, 0x16891: 0xe0000d63, 0x16892: 0xe0000d9a, 0x16893: 0xe0000d94,
+-	0x16894: 0xe0000da6, 0x16895: 0xe0000de6, 0x16896: 0xe0000dd2, 0x16897: 0x40093e20,
+-	0x16898: 0xe0000e12, 0x16899: 0xe0000fe1, 0x1689a: 0xe0000fdb, 0x1689b: 0xe0000fed,
+-	0x1689c: 0xe0000fff, 0x1689d: 0xe0001102, 0x1689e: 0x00318888, 0x1689f: 0xe0000f7b,
+-	0x168a0: 0xe00008f2, 0x168a1: 0xe00008ec, 0x168a2: 0xe000091e, 0x168a3: 0xe0000966,
+-	0x168a4: 0xe0000958, 0x168a5: 0xe000094a, 0x168a6: 0xe00009d5, 0x168a7: 0x402c6020,
+-	0x168a8: 0xe0000ae5, 0x168a9: 0xe0000adf, 0x168aa: 0xe0000af1, 0x168ab: 0x402d0620,
+-	0x168ac: 0xe0000c28, 0x168ad: 0xe0000c22, 0x168ae: 0xe0000c34, 0x168af: 0xe0000c40,
+-	0x168b0: 0xe0000aad, 0x168b1: 0xe0000d60, 0x168b2: 0xe0000d97, 0x168b3: 0xe0000d91,
+-	0x168b4: 0xe0000da3, 0x168b5: 0xe0000de3, 0x168b6: 0xe0000dcf, 0x168b7: 0x40093c20,
+-	0x168b8: 0xe0000e0f, 0x168b9: 0xe0000fde, 0x168ba: 0xe0000fd8, 0x168bb: 0xe0000fea,
+-	0x168bc: 0xe0000ffc, 0x168bd: 0xe00010ff, 0x168be: 0x40318820, 0x168bf: 0xe0001114,
+-	// Block 0x5a3, offset 0x168c0
+-	0x168c0: 0xe00009b1, 0x168c1: 0xe00009ae, 0x168c2: 0xe0000a22, 0x168c3: 0xe0000a1f,
+-	0x168c4: 0xe0000a28, 0x168c5: 0xe0000a25, 0x168c6: 0xe0000a2e, 0x168c7: 0xe0000a2b,
+-	0x168c8: 0xe000a9ad, 0x168c9: 0xe000a9aa, 0x168ca: 0xe0000a8c, 0x168cb: 0xe0000a89,
+-	0x168cc: 0xe0000a98, 0x168cd: 0xe0000a95, 0x168ce: 0xe0000aa4, 0x168cf: 0xe0000aa1,
+-	0x168d0: 0xe0000a92, 0x168d1: 0xe0000a8f, 0x168d2: 0xe0000a9e, 0x168d3: 0xe0000a9b,
+-	0x168d4: 0xe0000b55, 0x168d5: 0xe0000b51, 0x168d6: 0xe0000b4d, 0x168d7: 0xe0000b49,
+-	0x168d8: 0xe0000b7c, 0x168d9: 0xe0000b79, 0x168da: 0xe0000b82, 0x168db: 0xe0000b7f,
+-	0x168dc: 0xe0000b39, 0x168dd: 0xe0000b35, 0x168de: 0xe0000b8c, 0x168df: 0xe0000b89,
+-	0x168e0: 0xe0000bd0, 0x168e1: 0xe0000bcd, 0x168e2: 0xe0000c00, 0x168e3: 0xe0000bfd,
+-	0x168e4: 0xe0000c0c, 0x168e5: 0xe0000c09, 0x168e6: 0xe0000bfa, 0x168e7: 0xe0000bf7,
+-	0x168e8: 0xe0000c06, 0x168e9: 0xe0000c03, 0x168ea: 0xe0000c12, 0x168eb: 0xe0000c0f,
+-	0x168ec: 0xe0000c7e, 0x168ed: 0xe0000c7b, 0x168ee: 0xe0000c4a, 0x168ef: 0xe0000c46,
+-	0x168f0: 0xe0000c93, 0x168f1: 0xe0000c90, 0x168f2: 0xe0000cab, 0x168f3: 0xe0000ca8,
+-	0x168f4: 0xe0000cb1, 0x168f5: 0xe0000cae, 0x168f6: 0xe0000cde, 0x168f7: 0xe0000cdb,
+-	0x168f8: 0xe0000ce5, 0x168f9: 0xe0000ce1, 0x168fa: 0xe0000cf2, 0x168fb: 0xe0000cef,
+-	0x168fc: 0xe0000cec, 0x168fd: 0xe0000ce9, 0x168fe: 0xe0000d1e, 0x168ff: 0xe0000d1b,
+-	// Block 0x5a4, offset 0x16900
+-	0x16900: 0xa0000000, 0x16901: 0xa0000000, 0x16902: 0xa0000000, 0x16903: 0xa0000000,
+-	0x16904: 0xa0000000, 0x16905: 0xa0000000, 0x16906: 0xa0000000, 0x16907: 0xa0000000,
+-	0x16908: 0xa0000000, 0x16909: 0x40020020, 0x1690a: 0x40020220, 0x1690b: 0x40020420,
+-	0x1690c: 0x40020620, 0x1690d: 0x40020820, 0x1690e: 0xa0000000, 0x1690f: 0xa0000000,
+-	0x16910: 0xa0000000, 0x16911: 0xa0000000, 0x16912: 0xa0000000, 0x16913: 0xa0000000,
+-	0x16914: 0xa0000000, 0x16915: 0xa0000000, 0x16916: 0xa0000000, 0x16917: 0xa0000000,
+-	0x16918: 0xa0000000, 0x16919: 0xa0000000, 0x1691a: 0xa0000000, 0x1691b: 0xa0000000,
+-	0x1691c: 0xa0000000, 0x1691d: 0xa0000000, 0x1691e: 0xa0000000, 0x1691f: 0xa0000000,
+-	0x16920: 0x40021220, 0x16921: 0x4002ba20, 0x16922: 0x4003e020, 0x16923: 0x4004ea20,
+-	0x16924: 0x4027de20, 0x16925: 0x4004ec20, 0x16926: 0x4004e620, 0x16927: 0x4003d220,
+-	0x16928: 0x4003f420, 0x16929: 0x4003f620, 0x1692a: 0x4004d820, 0x1692b: 0x40093820,
+-	0x1692c: 0x40024020, 0x1692d: 0x40021a20, 0x1692e: 0x4002e420, 0x1692f: 0x4004e220,
+-	0x16930: 0x4029cc20, 0x16931: 0x4029ce20, 0x16932: 0x4029d020, 0x16933: 0x4029d220,
+-	0x16934: 0x4029d420, 0x16935: 0x4029d620, 0x16936: 0x4029d820, 0x16937: 0x4029da20,
+-	0x16938: 0x4029dc20, 0x16939: 0x4029de20, 0x1693a: 0x40026c20, 0x1693b: 0x40026220,
+-	0x1693c: 0x40094020, 0x1693d: 0x40094220, 0x1693e: 0x40094420, 0x1693f: 0x4002c420,
+-	// Block 0x5a5, offset 0x16940
+-	0x16940: 0x4004d620, 0x16941: 0xc56727b1, 0x16942: 0x002c0a88, 0x16943: 0x002c3a88,
+-	0x16944: 0x002c6288, 0x16945: 0xceb00be1, 0x16946: 0x002d0888, 0x16947: 0x002d2288,
+-	0x16948: 0x002d6888, 0x16949: 0x002d9a88, 0x1694a: 0x002dcc88, 0x1694b: 0x002dfe88,
+-	0x1694c: 0xc0030002, 0x1694d: 0x002e8288, 0x1694e: 0x002e9e88, 0x1694f: 0xceb69621,
+-	0x16950: 0x002f2c88, 0x16951: 0x002f5688, 0x16952: 0x002f7a88, 0x16953: 0x002fe688,
+-	0x16954: 0x00302c88, 0x16955: 0xc3900b21, 0x16956: 0x0030be88, 0x16957: 0x0030e288,
+-	0x16958: 0x0030f688, 0x16959: 0x00310088, 0x1695a: 0x00312a88, 0x1695b: 0x4003f820,
+-	0x1695c: 0x4004e420, 0x1695d: 0x4003fa20, 0x1695e: 0x40062420, 0x1695f: 0x40021620,
+-	0x16960: 0x40061e20, 0x16961: 0xc56427b1, 0x16962: 0x402c0a20, 0x16963: 0x402c3a20,
+-	0x16964: 0x402c6220, 0x16965: 0xceae0be1, 0x16966: 0x402d0820, 0x16967: 0x402d2220,
+-	0x16968: 0x402d6820, 0x16969: 0x402d9a20, 0x1696a: 0x402dcc20, 0x1696b: 0x402dfe20,
+-	0x1696c: 0xc0000002, 0x1696d: 0x402e8220, 0x1696e: 0x402e9e20, 0x1696f: 0xceb29621,
+-	0x16970: 0x402f2c20, 0x16971: 0x402f5620, 0x16972: 0x402f7a20, 0x16973: 0x402fe620,
+-	0x16974: 0x40302c20, 0x16975: 0xc38d0b21, 0x16976: 0x4030be20, 0x16977: 0x4030e220,
+-	0x16978: 0x4030f620, 0x16979: 0x40310020, 0x1697a: 0x40312a20, 0x1697b: 0x4003fc20,
+-	0x1697c: 0x40094820, 0x1697d: 0x4003fe20, 0x1697e: 0x40094c20, 0x1697f: 0xa0000000,
+-	// Block 0x5a6, offset 0x16980
+-	0x16980: 0xe00008f5, 0x16981: 0xe00008ef, 0x16982: 0xe0000921, 0x16983: 0xe0000969,
+-	0x16984: 0x00320e83, 0x16985: 0x00320c83, 0x16986: 0x00320ea3, 0x16987: 0xe0000a53,
+-	0x16988: 0xe0000ae8, 0x16989: 0xe0000ae2, 0x1698a: 0xe0000af4, 0x1698b: 0xe0000b20,
+-	0x1698c: 0xe0000c2b, 0x1698d: 0xe0000c25, 0x1698e: 0xe0000c37, 0x1698f: 0xe0000c43,
+-	0x16990: 0x002c62c3, 0x16991: 0xe0000d63, 0x16992: 0xe0000d9a, 0x16993: 0xe0000d94,
+-	0x16994: 0x00321103, 0x16995: 0xe0000de6, 0x16996: 0x00321083, 0x16997: 0x40093e20,
+-	0x16998: 0x003210a3, 0x16999: 0xe0000fe1, 0x1699a: 0xe0000fdb, 0x1699b: 0xe0000fed,
+-	0x1699c: 0x003100a3, 0x1699d: 0xe0001102, 0x1699e: 0xe00025cc, 0x1699f: 0xe0000f7b,
+-	0x169a0: 0xe00008f2, 0x169a1: 0xe00008ec, 0x169a2: 0xe000091e, 0x169a3: 0xe0000966,
+-	0x169a4: 0x40320e20, 0x169a5: 0x40320c20, 0x169a6: 0x40320e21, 0x169a7: 0xe0000a4d,
+-	0x169a8: 0xe0000ae5, 0x169a9: 0xe0000adf, 0x169aa: 0xe0000af1, 0x169ab: 0xe0000b1d,
+-	0x169ac: 0xe0000c28, 0x169ad: 0xe0000c22, 0x169ae: 0xe0000c34, 0x169af: 0xe0000c40,
+-	0x169b0: 0x402c6222, 0x169b1: 0xe0000d60, 0x169b2: 0xe0000d97, 0x169b3: 0xe0000d91,
+-	0x169b4: 0x40321024, 0x169b5: 0xe0000de3, 0x169b6: 0x40321020, 0x169b7: 0x40093c20,
+-	0x169b8: 0x40321021, 0x169b9: 0xe0000fde, 0x169ba: 0xe0000fd8, 0x169bb: 0xe0000fea,
+-	0x169bc: 0x40310021, 0x169bd: 0xe00010ff, 0x169be: 0xe00025c9, 0x169bf: 0xe0001114,
+-	// Block 0x5a7, offset 0x169c0
+-	0x169c0: 0xe0000983, 0x169c1: 0xe0000980, 0x169c2: 0xe00008fb, 0x169c3: 0xe00008f8,
+-	0x169c4: 0xe000097d, 0x169c5: 0xe000097a, 0x169c6: 0xe0000a38, 0x169c7: 0xe0000a35,
+-	0x169c8: 0xe0000a3e, 0x169c9: 0xe0000a3b, 0x169ca: 0xe0000a4a, 0x169cb: 0xe0000a47,
+-	0x169cc: 0xe0000a44, 0x169cd: 0xe0000a41, 0x169ce: 0xe0000a86, 0x169cf: 0xe0000a83,
+-	0x169d0: 0x002c62a3, 0x169d1: 0x402c6221, 0x169d2: 0xe0000b46, 0x169d3: 0xe0000b43,
+-	0x169d4: 0xe0000aee, 0x169d5: 0xe0000aeb, 0x169d6: 0xe0000b2c, 0x169d7: 0xe0000b29,
+-	0x169d8: 0x00320ec3, 0x169d9: 0x40320e22, 0x169da: 0xe0000b1a, 0x169db: 0xe0000b17,
+-	0x169dc: 0xe0000bb8, 0x169dd: 0xe0000bb5, 0x169de: 0xe0000bb2, 0x169df: 0xe0000baf,
+-	0x169e0: 0xe0000bc4, 0x169e1: 0xe0000bc1, 0x169e2: 0xe0000bca, 0x169e3: 0xe0000bc7,
+-	0x169e4: 0xe0000bee, 0x169e5: 0xe0000beb, 0x169e6: 0xe0000c1b, 0x169e7: 0xe0000c18,
+-	0x169e8: 0xe0000c51, 0x169e9: 0xe0000c4e, 0x169ea: 0xe0000c60, 0x169eb: 0xe0000c5d,
+-	0x169ec: 0xe0000c31, 0x169ed: 0xe0000c2e, 0x169ee: 0xe0000c5a, 0x169ef: 0xe0000c57,
+-	0x169f0: 0xe0000c54, 0x169f1: 0x402da220, 0x169f2: 0xf0000a0a, 0x169f3: 0xf0000404,
+-	0x169f4: 0xe0000c8a, 0x169f5: 0xe0000c87, 0x169f6: 0xe0000c9f, 0x169f7: 0xe0000c9c,
+-	0x169f8: 0x402f7220, 0x169f9: 0xe0000ccc, 0x169fa: 0xe0000cc9, 0x169fb: 0xe0000cd8,
+-	0x169fc: 0xe0000cd5, 0x169fd: 0xe0000cd2, 0x169fe: 0xe0000ccf, 0x169ff: 0xe0000d04,
+-	// Block 0x5a8, offset 0x16a00
+-	0x16a00: 0xe0000cfe, 0x16a01: 0xe0000cf8, 0x16a02: 0xe0000cf5, 0x16a03: 0xe0000d51,
+-	0x16a04: 0xe0000d4e, 0x16a05: 0xe0000d6f, 0x16a06: 0xe0000d6c, 0x16a07: 0xe0000d5d,
+-	0x16a08: 0xe0000d5a, 0x16a09: 0xf0000404, 0x16a0a: 0x002eda88, 0x16a0b: 0x402eda20,
+-	0x16a0c: 0xe0000e2e, 0x16a0d: 0xe0000e2b, 0x16a0e: 0xe0000da0, 0x16a0f: 0xe0000d9d,
+-	0x16a10: 0x003210c3, 0x16a11: 0x40321022, 0x16a12: 0x003210e3, 0x16a13: 0x40321023,
+-	0x16a14: 0xe0000eca, 0x16a15: 0xe0000ec7, 0x16a16: 0xe0000edc, 0x16a17: 0xe0000ed9,
+-	0x16a18: 0xe0000ed0, 0x16a19: 0xe0000ecd, 0x16a1a: 0xe0000f1f, 0x16a1b: 0xe0000f1c,
+-	0x16a1c: 0xe0000f2d, 0x16a1d: 0xe0000f2a, 0x16a1e: 0xe0000f47, 0x16a1f: 0xe0000f44,
+-	0x16a20: 0xe0000f33, 0x16a21: 0xe0000f30, 0x16a22: 0xe0000f99, 0x16a23: 0xe0000f96,
+-	0x16a24: 0xe0000f8a, 0x16a25: 0xe0000f87, 0x16a26: 0x00303688, 0x16a27: 0x40303620,
+-	0x16a28: 0xe000102b, 0x16a29: 0xe0001028, 0x16a2a: 0xe000103f, 0x16a2b: 0xe000103c,
+-	0x16a2c: 0xe0000fe7, 0x16a2d: 0xe0000fe4, 0x16a2e: 0xe0000ff9, 0x16a2f: 0xe0000ff6,
+-	0x16a30: 0x003100c3, 0x16a31: 0x40310022, 0x16a32: 0xe0001039, 0x16a33: 0xe0001036,
+-	0x16a34: 0xe00010d8, 0x16a35: 0xe00010d5, 0x16a36: 0xe000110e, 0x16a37: 0xe000110b,
+-	0x16a38: 0xe0001117, 0x16a39: 0xe000113b, 0x16a3a: 0xe0001138, 0x16a3b: 0xe000114d,
+-	0x16a3c: 0xe000114a, 0x16a3d: 0xe0001147, 0x16a3e: 0xe0001144, 0x16a3f: 0xe0000f64,
+-	// Block 0x5a9, offset 0x16a40
+-	0x16a40: 0x40321220, 0x16a41: 0x40321a20, 0x16a42: 0x40322220, 0x16a43: 0x40322a20,
+-	0x16a44: 0xe0000ad5, 0x16a45: 0xe0000ad1, 0x16a46: 0xe0000acd, 0x16a47: 0xf0000a0a,
+-	0x16a48: 0xf000040a, 0x16a49: 0xf0000404, 0x16a4a: 0xf0000a0a, 0x16a4b: 0xf000040a,
+-	0x16a4c: 0xf0000404, 0x16a4d: 0xe0000947, 0x16a4e: 0xe0000944, 0x16a4f: 0xe0000c3d,
+-	0x16a50: 0xe0000c3a, 0x16a51: 0xe0000dcc, 0x16a52: 0xe0000dc9, 0x16a53: 0xe0000ff3,
+-	0x16a54: 0xe0000ff0, 0x16a55: 0xe00025e4, 0x16a56: 0xe00025e1, 0x16a57: 0xe00025d2,
+-	0x16a58: 0xe00025cf, 0x16a59: 0xe00025de, 0x16a5a: 0xe00025db, 0x16a5b: 0xe00025d8,
+-	0x16a5c: 0xe00025d5, 0x16a5d: 0x402cae20, 0x16a5e: 0xe00032dd, 0x16a5f: 0xe00032da,
+-	0x16a60: 0xe0000976, 0x16a61: 0xe0000972, 0x16a62: 0xe0002608, 0x16a63: 0xe0002605,
+-	0x16a64: 0x002d3a88, 0x16a65: 0x402d3a20, 0x16a66: 0xe0000bbe, 0x16a67: 0xe0000bbb,
+-	0x16a68: 0xe0000c99, 0x16a69: 0xe0000c96, 0x16a6a: 0xe0000e20, 0x16a6b: 0xe0000e1d,
+-	0x16a6c: 0xe0000e27, 0x16a6d: 0xe0000e23, 0x16a6e: 0xe0001162, 0x16a6f: 0xe000115f,
+-	0x16a70: 0xe0000c8d, 0x16a71: 0xf0000a0a, 0x16a72: 0xf000040a, 0x16a73: 0xf0000404,
+-	0x16a74: 0xe0000bac, 0x16a75: 0xe0000ba9, 0x16a76: 0x002d7888, 0x16a77: 0x00319488,
+-	0x16a78: 0xe0000d57, 0x16a79: 0xe0000d54, 0x16a7a: 0xe00025ea, 0x16a7b: 0xe00025e7,
+-	0x16a7c: 0xe00032e3, 0x16a7d: 0xe00032e0, 0x16a7e: 0xe00032f5, 0x16a7f: 0xe00032f2,
+-	// Block 0x5aa, offset 0x16a80
+-	0x16a80: 0xe0000b03, 0x16a81: 0xe0000aff, 0x16a82: 0xe0000b13, 0x16a83: 0xe0000b0f,
+-	0x16a84: 0xe0000b0b, 0x16a85: 0xe0000b07, 0x16a86: 0xe0000b75, 0x16a87: 0xe0000b71,
+-	0x16a88: 0xe0000c66, 0x16a89: 0xe0000c63, 0x16a8a: 0xe0000c78, 0x16a8b: 0xe0000c75,
+-	0x16a8c: 0xe0000e84, 0x16a8d: 0xe0000e81, 0x16a8e: 0xe0000e44, 0x16a8f: 0xe0000e41,
+-	0x16a90: 0xe000a9b3, 0x16a91: 0xe000a9b0, 0x16a92: 0xe000a9b9, 0x16a93: 0xe000a9b6,
+-	0x16a94: 0xe000a9c5, 0x16a95: 0xe000a9c2, 0x16a96: 0xe000a9bf, 0x16a97: 0xe000a9bc,
+-	0x16a98: 0xe000a9cb, 0x16a99: 0xe000a9c8, 0x16a9a: 0xe0000e5d, 0x16a9b: 0xe0000e59,
+-	0x16a9c: 0xe0000e65, 0x16a9d: 0xe0000e61, 0x16a9e: 0xe0000e75, 0x16a9f: 0xe0000e71,
+-	0x16aa0: 0xe0000e6d, 0x16aa1: 0xe0000e69, 0x16aa2: 0xe0000e7d, 0x16aa3: 0xe0000e79,
+-	0x16aa4: 0xe000108d, 0x16aa5: 0xe000108a, 0x16aa6: 0xe000104d, 0x16aa7: 0xe000104a,
+-	0x16aa8: 0xe0001066, 0x16aa9: 0xe0001062, 0x16aaa: 0xe000106e, 0x16aab: 0xe000106a,
+-	0x16aac: 0xe000107e, 0x16aad: 0xe000107a, 0x16aae: 0xe0001076, 0x16aaf: 0xe0001072,
+-	0x16ab0: 0xe0001086, 0x16ab1: 0xe0001082, 0x16ab2: 0xe0001108, 0x16ab3: 0xe0001105,
+-	0x16ab4: 0xe0001135, 0x16ab5: 0xe0001132, 0x16ab6: 0xe000112f, 0x16ab7: 0xe000112c,
+-	0x16ab8: 0xe000111d, 0x16ab9: 0xe000111a, 0x16aba: 0xe0000d0a, 0x16abb: 0xe0000d07,
+-	0x16abc: 0x0030d888, 0x16abd: 0x4030d820, 0x16abe: 0x00312088, 0x16abf: 0x40312020,
+-	// Block 0x5ab, offset 0x16ac0
+-	0x16ac2: 0x40429620, 0x16ac3: 0x40429820,
+-	0x16ac5: 0x40427e20, 0x16ac6: 0x40428020, 0x16ac7: 0x40428220,
+-	0x16ac8: 0x40428420, 0x16ac9: 0x40428620, 0x16aca: 0x40428820,
+-	0x16ace: 0x40428a20, 0x16acf: 0x40428c20,
+-	0x16ad0: 0x40428e20, 0x16ad2: 0xc0610231, 0x16ad3: 0x40429220,
+-	0x16ad4: 0x40429420, 0x16ad5: 0xceba9661,
+-	0x16ad9: 0xcebe96f1, 0x16ada: 0xcec096f1,
+-	0x16adc: 0xcee096f1, 0x16ade: 0xcec296f1, 0x16adf: 0xcec496f1,
+-	0x16ae3: 0xcec696f1,
+-	0x16ae4: 0xcec896f1,
+-	0x16ae8: 0xceca96f1, 0x16ae9: 0xcede96f1, 0x16aea: 0xcecc96f1,
+-	0x16aee: 0xcece96f1, 0x16aef: 0xced096f1,
+-	0x16af0: 0xced296f1, 0x16af1: 0xcedc96f1, 0x16af2: 0xced496f1, 0x16af3: 0xceda96f1,
+-	0x16af4: 0xced896f1, 0x16af5: 0xced696f1, 0x16af6: 0xcee296f1, 0x16af7: 0xcee496f1,
+-	0x16af8: 0xcee696f1, 0x16af9: 0xcee896f1,
+-	0x16afe: 0x4042c620, 0x16aff: 0x4042c820,
+-	// Block 0x5ac, offset 0x16b00
+-	0x16b01: 0x40430020, 0x16b02: 0x40430220, 0x16b03: 0x40430420,
+-	0x16b05: 0x4042e020, 0x16b06: 0x4042e220, 0x16b07: 0x4042e420,
+-	0x16b08: 0x4042e620, 0x16b09: 0x4042e820, 0x16b0a: 0x4042ea20, 0x16b0b: 0x4042ec20,
+-	0x16b0c: 0x4042f020, 0x16b0e: 0x4042f420, 0x16b0f: 0x4042f620,
+-	0x16b10: 0x4042f820, 0x16b12: 0x4042fa20, 0x16b13: 0x4042fc20,
+-	0x16b14: 0x4042fe20, 0x16b15: 0x40430020, 0x16b16: 0x40430220, 0x16b17: 0x40430420,
+-	0x16b18: 0x40430620, 0x16b19: 0x40430820, 0x16b1a: 0x40430a20, 0x16b1b: 0x40430e20,
+-	0x16b1c: 0x40431020, 0x16b1d: 0x40431420, 0x16b1e: 0x40431620, 0x16b1f: 0x40431820,
+-	0x16b20: 0x40431a20, 0x16b21: 0x40431c20, 0x16b22: 0x40431e20, 0x16b23: 0x40432020,
+-	0x16b24: 0x40432220, 0x16b25: 0x40432420, 0x16b26: 0x40432620, 0x16b27: 0x40432820,
+-	0x16b28: 0x40432a20, 0x16b2a: 0x40432c20, 0x16b2b: 0x40432e20,
+-	0x16b2c: 0x40433020, 0x16b2d: 0x40433220, 0x16b2e: 0x40433420, 0x16b2f: 0x40433620,
+-	0x16b30: 0x40433820, 0x16b31: 0x40433a20, 0x16b32: 0x40433c20, 0x16b33: 0x40434820,
+-	0x16b35: 0x40433e20, 0x16b36: 0x40434020, 0x16b37: 0x40434220,
+-	0x16b38: 0x40434420, 0x16b39: 0x40434620,
+-	0x16b3d: 0x40434a20, 0x16b3e: 0x40434c20, 0x16b3f: 0x40434e20,
+-	// Block 0x5ad, offset 0x16b40
+-	0x16b41: 0x40491020, 0x16b42: 0x40491220, 0x16b43: 0x40491420,
+-	0x16b44: 0x40491620, 0x16b45: 0x40491820, 0x16b46: 0x40491a20, 0x16b47: 0x40491c20,
+-	0x16b48: 0x40491e20, 0x16b49: 0x40492020, 0x16b4a: 0x40492220, 0x16b4b: 0x40492420,
+-	0x16b4c: 0x40492620, 0x16b4d: 0x40492820, 0x16b4e: 0x40492a20, 0x16b4f: 0x40492c20,
+-	0x16b50: 0x40492e20, 0x16b51: 0x40493020, 0x16b52: 0x40493220, 0x16b53: 0x40493420,
+-	0x16b54: 0x40493620, 0x16b55: 0x40493820, 0x16b56: 0x40493a20, 0x16b57: 0x40493c20,
+-	0x16b58: 0x40493e20, 0x16b59: 0x40494020, 0x16b5a: 0x40494220, 0x16b5b: 0x40494420,
+-	0x16b5c: 0x40494620, 0x16b5d: 0x40494820, 0x16b5e: 0x40494a20, 0x16b5f: 0x40494c20,
+-	0x16b60: 0x40494e20, 0x16b61: 0x40495020, 0x16b62: 0x40495220, 0x16b63: 0x40495420,
+-	0x16b64: 0x40495620, 0x16b65: 0x40495820, 0x16b66: 0x40495a20, 0x16b67: 0x40495c20,
+-	0x16b68: 0x40495e20, 0x16b69: 0x40496020, 0x16b6a: 0x40496220, 0x16b6b: 0x40496420,
+-	0x16b6c: 0x40496620, 0x16b6d: 0x40496820, 0x16b6e: 0x40496a20, 0x16b6f: 0x40057820,
+-	0x16b70: 0x40496e20, 0x16b71: 0x40497020, 0x16b72: 0x40497220, 0x16b73: 0xe000a9d1,
+-	0x16b74: 0x40497620, 0x16b75: 0x40497820, 0x16b76: 0x40497a20, 0x16b77: 0x40497c20,
+-	0x16b78: 0x826724bf, 0x16b79: 0x826724c0, 0x16b7a: 0x40498e20,
+-	0x16b7f: 0x4027f420,
+-	// Block 0x5ae, offset 0x16b80
+-	0x16b80: 0xc07f04e1, 0x16b81: 0xc0ae04e1, 0x16b82: 0xc0dd04e1, 0x16b83: 0xc10c04e1,
+-	0x16b84: 0xc13b04e1, 0x16b85: 0x00497283, 0x16b86: 0x40057e20, 0x16b87: 0xa000ff02,
+-	0x16b88: 0xa6b10002, 0x16b89: 0xa6b10102, 0x16b8a: 0xa6b10202, 0x16b8b: 0xa6b10302,
+-	0x16b8c: 0xa000ff02, 0x16b8d: 0xceea9721, 0x16b8e: 0xa000fe02, 0x16b8f: 0x40057820,
+-	0x16b90: 0xe000019a, 0x16b91: 0xe000022e, 0x16b92: 0xe0000346, 0x16b93: 0xe0000420,
+-	0x16b94: 0xe00004f5, 0x16b95: 0xe00005bf, 0x16b96: 0xe000068a, 0x16b97: 0xe0000732,
+-	0x16b98: 0xe00007de, 0x16b99: 0xe0000883, 0x16b9a: 0x40057a20, 0x16b9b: 0x40057c20,
+-	// Block 0x5af, offset 0x16bc0
+-	0x16bc0: 0xa0000000, 0x16bc1: 0xa0000000, 0x16bc2: 0xa0000000, 0x16bc3: 0xa0000000,
+-	0x16bc4: 0xa0000000, 0x16bc5: 0xa0000000, 0x16bc6: 0xa0000000, 0x16bc7: 0xa0000000,
+-	0x16bc8: 0xa0000000, 0x16bc9: 0x40020020, 0x16bca: 0x40020220, 0x16bcb: 0x40020420,
+-	0x16bcc: 0x40020620, 0x16bcd: 0x40020820, 0x16bce: 0xa0000000, 0x16bcf: 0xa0000000,
+-	0x16bd0: 0xa0000000, 0x16bd1: 0xa0000000, 0x16bd2: 0xa0000000, 0x16bd3: 0xa0000000,
+-	0x16bd4: 0xa0000000, 0x16bd5: 0xa0000000, 0x16bd6: 0xa0000000, 0x16bd7: 0xa0000000,
+-	0x16bd8: 0xa0000000, 0x16bd9: 0xa0000000, 0x16bda: 0xa0000000, 0x16bdb: 0xa0000000,
+-	0x16bdc: 0xa0000000, 0x16bdd: 0xa0000000, 0x16bde: 0xa0000000, 0x16bdf: 0xa0000000,
+-	0x16be0: 0x40021220, 0x16be1: 0x4002ba20, 0x16be2: 0x4003e020, 0x16be3: 0x4004ea20,
+-	0x16be4: 0x4027de20, 0x16be5: 0x4004ec20, 0x16be6: 0x4004e620, 0x16be7: 0x4003d220,
+-	0x16be8: 0x4003f420, 0x16be9: 0x4003f620, 0x16bea: 0x4004d820, 0x16beb: 0x40093820,
+-	0x16bec: 0x40024020, 0x16bed: 0x40021a20, 0x16bee: 0x4002e420, 0x16bef: 0x4004e220,
+-	0x16bf0: 0x4029cc20, 0x16bf1: 0x4029ce20, 0x16bf2: 0x4029d020, 0x16bf3: 0x4029d220,
+-	0x16bf4: 0x4029d420, 0x16bf5: 0x4029d620, 0x16bf6: 0x4029d820, 0x16bf7: 0x4029da20,
+-	0x16bf8: 0x4029dc20, 0x16bf9: 0x4029de20, 0x16bfa: 0x40026c20, 0x16bfb: 0x40026220,
+-	0x16bfc: 0x40094020, 0x16bfd: 0x40094220, 0x16bfe: 0x40094420, 0x16bff: 0x4002c420,
+-	// Block 0x5b0, offset 0x16c00
+-	0x16c00: 0x4004d620, 0x16c01: 0xcef09771, 0x16c02: 0x002c0a88, 0x16c03: 0x002c3a88,
+-	0x16c04: 0x002c6288, 0x16c05: 0xcef69771, 0x16c06: 0x002d0888, 0x16c07: 0x002d2288,
+-	0x16c08: 0x002d6888, 0x16c09: 0xcefc9771, 0x16c0a: 0x002dcc88, 0x16c0b: 0x002dfe88,
+-	0x16c0c: 0xc0030002, 0x16c0d: 0x002e8288, 0x16c0e: 0xc5290a52, 0x16c0f: 0xcf029771,
+-	0x16c10: 0x002f2c88, 0x16c11: 0x002f5688, 0x16c12: 0x002f7a88, 0x16c13: 0x002fe688,
+-	0x16c14: 0x00302c88, 0x16c15: 0xcf089771, 0x16c16: 0x0030be88, 0x16c17: 0x0030e288,
+-	0x16c18: 0x0030f688, 0x16c19: 0x00310088, 0x16c1a: 0x00312a88, 0x16c1b: 0x4003f820,
+-	0x16c1c: 0x4004e420, 0x16c1d: 0x4003fa20, 0x16c1e: 0x40062420, 0x16c1f: 0x40021620,
+-	0x16c20: 0x40061e20, 0x16c21: 0xceed9771, 0x16c22: 0x402c0a20, 0x16c23: 0x402c3a20,
+-	0x16c24: 0x402c6220, 0x16c25: 0xcef39771, 0x16c26: 0x402d0820, 0x16c27: 0x402d2220,
+-	0x16c28: 0x402d6820, 0x16c29: 0xcef99771, 0x16c2a: 0x402dcc20, 0x16c2b: 0x402dfe20,
+-	0x16c2c: 0xc0000002, 0x16c2d: 0x402e8220, 0x16c2e: 0xc5270a41, 0x16c2f: 0xceff9771,
+-	0x16c30: 0x402f2c20, 0x16c31: 0x402f5620, 0x16c32: 0x402f7a20, 0x16c33: 0x402fe620,
+-	0x16c34: 0x40302c20, 0x16c35: 0xcf059771, 0x16c36: 0x4030be20, 0x16c37: 0x4030e220,
+-	0x16c38: 0x4030f620, 0x16c39: 0x40310020, 0x16c3a: 0x40312a20, 0x16c3b: 0x4003fc20,
+-	0x16c3c: 0x40094820, 0x16c3d: 0x4003fe20, 0x16c3e: 0x40094c20, 0x16c3f: 0xa0000000,
+-	// Block 0x5b1, offset 0x16c40
+-	0x16c40: 0xe00008f5, 0x16c41: 0x002bdea3, 0x16c42: 0xe0000921, 0x16c43: 0xe0000969,
+-	0x16c44: 0xe000095b, 0x16c45: 0xe000094d, 0x16c46: 0xe00009dd, 0x16c47: 0xe0000a53,
+-	0x16c48: 0xe0000ae8, 0x16c49: 0x002c98a3, 0x16c4a: 0xe0000af4, 0x16c4b: 0xe0000b20,
+-	0x16c4c: 0xe0000c2b, 0x16c4d: 0x002d9aa3, 0x16c4e: 0xe0000c37, 0x16c4f: 0xe0000c43,
+-	0x16c50: 0xe0000ab3, 0x16c51: 0xe0000d63, 0x16c52: 0xe0000d9a, 0x16c53: 0x002ee2a3,
+-	0x16c54: 0xe0000da6, 0x16c55: 0xe0000de6, 0x16c56: 0xe0000dd2, 0x16c57: 0x40093e20,
+-	0x16c58: 0xe0000e12, 0x16c59: 0xe0000fe1, 0x16c5a: 0x00306ca3, 0x16c5b: 0xe0000fed,
+-	0x16c5c: 0xe0000fff, 0x16c5d: 0xe0001102, 0x16c5e: 0x00318888, 0x16c5f: 0xe0000f7b,
+-	0x16c60: 0xe00008f2, 0x16c61: 0x402bde21, 0x16c62: 0xe000091e, 0x16c63: 0xe0000966,
+-	0x16c64: 0xe0000958, 0x16c65: 0xe000094a, 0x16c66: 0xe00009d5, 0x16c67: 0xe0000a4d,
+-	0x16c68: 0xe0000ae5, 0x16c69: 0x402c9821, 0x16c6a: 0xe0000af1, 0x16c6b: 0xe0000b1d,
+-	0x16c6c: 0xe0000c28, 0x16c6d: 0x402d9a21, 0x16c6e: 0xe0000c34, 0x16c6f: 0xe0000c40,
+-	0x16c70: 0xe0000aad, 0x16c71: 0xe0000d60, 0x16c72: 0xe0000d97, 0x16c73: 0x402ee221,
+-	0x16c74: 0xe0000da3, 0x16c75: 0xe0000de3, 0x16c76: 0xe0000dcf, 0x16c77: 0x40093c20,
+-	0x16c78: 0xe0000e0f, 0x16c79: 0xe0000fde, 0x16c7a: 0x40306c21, 0x16c7b: 0xe0000fea,
+-	0x16c7c: 0xe0000ffc, 0x16c7d: 0xe00010ff, 0x16c7e: 0x40318820, 0x16c7f: 0xe0001114,
+-	// Block 0x5b2, offset 0x16c80
+-	0x16c80: 0x002bdec3, 0x16c81: 0x402bde22, 0x16c82: 0xe00008fb, 0x16c83: 0xe00008f8,
+-	0x16c84: 0xe000097d, 0x16c85: 0xe000097a, 0x16c86: 0xe0000a38, 0x16c87: 0xe0000a35,
+-	0x16c88: 0xe0000a3e, 0x16c89: 0xe0000a3b, 0x16c8a: 0xe0000a4a, 0x16c8b: 0xe0000a47,
+-	0x16c8c: 0xe0000a44, 0x16c8d: 0xe0000a41, 0x16c8e: 0xe0000a86, 0x16c8f: 0xe0000a83,
+-	0x16c90: 0xe0000aaa, 0x16c91: 0xe0000aa7, 0x16c92: 0x002c98c3, 0x16c93: 0x402c9822,
+-	0x16c94: 0xe0000aee, 0x16c95: 0xe0000aeb, 0x16c96: 0xe0000b2c, 0x16c97: 0xe0000b29,
+-	0x16c98: 0xe0000b40, 0x16c99: 0xe0000b3d, 0x16c9a: 0xe0000b1a, 0x16c9b: 0xe0000b17,
+-	0x16c9c: 0xe0000bb8, 0x16c9d: 0xe0000bb5, 0x16c9e: 0xe0000bb2, 0x16c9f: 0xe0000baf,
+-	0x16ca0: 0xe0000bc4, 0x16ca1: 0xe0000bc1, 0x16ca2: 0xe0000bca, 0x16ca3: 0xe0000bc7,
+-	0x16ca4: 0xe0000bee, 0x16ca5: 0xe0000beb, 0x16ca6: 0xe0000c1b, 0x16ca7: 0xe0000c18,
+-	0x16ca8: 0xe0000c51, 0x16ca9: 0xe0000c4e, 0x16caa: 0x002d9ac3, 0x16cab: 0x402d9a22,
+-	0x16cac: 0xe0000c31, 0x16cad: 0xe0000c2e, 0x16cae: 0xe0000c5a, 0x16caf: 0xe0000c57,
+-	0x16cb0: 0xe0000c54, 0x16cb1: 0x402da220, 0x16cb2: 0xf0000a0a, 0x16cb3: 0xf0000404,
+-	0x16cb4: 0xe0000c8a, 0x16cb5: 0xe0000c87, 0x16cb6: 0xe0000c9f, 0x16cb7: 0xe0000c9c,
+-	0x16cb8: 0x402f7220, 0x16cb9: 0xe0000ccc, 0x16cba: 0xe0000cc9, 0x16cbb: 0xe0000cd8,
+-	0x16cbc: 0xe0000cd5, 0x16cbd: 0xe0000cd2, 0x16cbe: 0xe0000ccf, 0x16cbf: 0xe0000d04,
+-	// Block 0x5b3, offset 0x16cc0
+-	0x16cc0: 0xe0000cfe, 0x16cc1: 0xe0000cf8, 0x16cc2: 0xe0000cf5, 0x16cc3: 0xe0000d51,
+-	0x16cc4: 0xe0000d4e, 0x16cc5: 0xe0000d6f, 0x16cc6: 0xe0000d6c, 0x16cc7: 0xe0000d5d,
+-	0x16cc8: 0xe0000d5a, 0x16cc9: 0xf0000404, 0x16cca: 0x002ea086, 0x16ccb: 0x002ea085,
+-	0x16ccc: 0x002ee2c3, 0x16ccd: 0x402ee222, 0x16cce: 0xe0000da0, 0x16ccf: 0xe0000d9d,
+-	0x16cd0: 0xe0000de0, 0x16cd1: 0xe0000ddd, 0x16cd2: 0xe0000e93, 0x16cd3: 0xe0000e8f,
+-	0x16cd4: 0xe0000eca, 0x16cd5: 0xe0000ec7, 0x16cd6: 0xe0000edc, 0x16cd7: 0xe0000ed9,
+-	0x16cd8: 0xe0000ed0, 0x16cd9: 0xe0000ecd, 0x16cda: 0xe0000f1f, 0x16cdb: 0xe0000f1c,
+-	0x16cdc: 0xe0000f2d, 0x16cdd: 0xe0000f2a, 0x16cde: 0xe0000f47, 0x16cdf: 0xe0000f44,
+-	0x16ce0: 0xe0000f33, 0x16ce1: 0xe0000f30, 0x16ce2: 0xe0000f99, 0x16ce3: 0xe0000f96,
+-	0x16ce4: 0xe0000f8a, 0x16ce5: 0xe0000f87, 0x16ce6: 0x00303688, 0x16ce7: 0x40303620,
+-	0x16ce8: 0xe000102b, 0x16ce9: 0xe0001028, 0x16cea: 0x00306cc3, 0x16ceb: 0x40306c22,
+-	0x16cec: 0xe0000fe7, 0x16ced: 0xe0000fe4, 0x16cee: 0xe0000ff9, 0x16cef: 0xe0000ff6,
+-	0x16cf0: 0xe0001025, 0x16cf1: 0xe0001022, 0x16cf2: 0xe0001039, 0x16cf3: 0xe0001036,
+-	0x16cf4: 0xe00010d8, 0x16cf5: 0xe00010d5, 0x16cf6: 0xe000110e, 0x16cf7: 0xe000110b,
+-	0x16cf8: 0xe0001117, 0x16cf9: 0xe000113b, 0x16cfa: 0xe0001138, 0x16cfb: 0xe000114d,
+-	0x16cfc: 0xe000114a, 0x16cfd: 0xe0001147, 0x16cfe: 0xe0001144, 0x16cff: 0xe0000f64,
+-	// Block 0x5b4, offset 0x16d00
+-	0x16d00: 0x40321220, 0x16d01: 0x40321a20, 0x16d02: 0x40322220, 0x16d03: 0x40322a20,
+-	0x16d04: 0xe0000ad5, 0x16d05: 0xe0000ad1, 0x16d06: 0xe0000acd, 0x16d07: 0xf0000a0a,
+-	0x16d08: 0xf000040a, 0x16d09: 0xf0000404, 0x16d0a: 0xf0000a0a, 0x16d0b: 0xf000040a,
+-	0x16d0c: 0xf0000404, 0x16d0d: 0xe0000947, 0x16d0e: 0xe0000944, 0x16d0f: 0xe0000c3d,
+-	0x16d10: 0xe0000c3a, 0x16d11: 0xe0000dcc, 0x16d12: 0xe0000dc9, 0x16d13: 0xe0000ff3,
+-	0x16d14: 0xe0000ff0, 0x16d15: 0xe000a58e, 0x16d16: 0xe000a58b, 0x16d17: 0xe000aa43,
+-	0x16d18: 0xe000aa40, 0x16d19: 0xe0001016, 0x16d1a: 0xe0001012, 0x16d1b: 0xe000100e,
+-	0x16d1c: 0xe000100a, 0x16d1d: 0x402cae20, 0x16d1e: 0xe000a9e9, 0x16d1f: 0xe000a9e6,
+-	0x16d20: 0xe000a9ef, 0x16d21: 0xe000a9ec, 0x16d22: 0xe00009f4, 0x16d23: 0xe00009ef,
+-	0x16d24: 0x002d3a88, 0x16d25: 0x402d3a20, 0x16d26: 0xe0000bbe, 0x16d27: 0xe0000bbb,
+-	0x16d28: 0xe0000c99, 0x16d29: 0xe0000c96, 0x16d2a: 0xe0000e20, 0x16d2b: 0xe0000e1d,
+-	0x16d2c: 0xe000aa3d, 0x16d2d: 0xe000aa3a, 0x16d2e: 0xe0001162, 0x16d2f: 0xe000115f,
+-	0x16d30: 0xe0000c8d, 0x16d31: 0xf0000a0a, 0x16d32: 0xf000040a, 0x16d33: 0xf0000404,
+-	0x16d34: 0xe0000bac, 0x16d35: 0xe0000ba9, 0x16d36: 0x002d7888, 0x16d37: 0x00319488,
+-	0x16d38: 0xe0000d57, 0x16d39: 0xe0000d54, 0x16d3a: 0xe000a9e3, 0x16d3b: 0xe000a9e0,
+-	0x16d3c: 0xe00009ea, 0x16d3d: 0xe00009e5, 0x16d3e: 0xe0000e19, 0x16d3f: 0xe0000e15,
+-	// Block 0x5b5, offset 0x16d40
+-	0x16d40: 0xe000098f, 0x16d41: 0xe000098c, 0x16d42: 0xe0000995, 0x16d43: 0xe0000992,
+-	0x16d44: 0xe0000b62, 0x16d45: 0xe0000b5f, 0x16d46: 0xe0000b68, 0x16d47: 0xe0000b65,
+-	0x16d48: 0xe0000c6c, 0x16d49: 0xe0000c69, 0x16d4a: 0xe0000c72, 0x16d4b: 0xe0000c6f,
+-	0x16d4c: 0xe0000e4a, 0x16d4d: 0xe0000e47, 0x16d4e: 0xe0000e50, 0x16d4f: 0xe0000e4d,
+-	0x16d50: 0xe0000ee8, 0x16d51: 0xe0000ee5, 0x16d52: 0xe0000eee, 0x16d53: 0xe0000eeb,
+-	0x16d54: 0xe0001053, 0x16d55: 0xe0001050, 0x16d56: 0xe0001059, 0x16d57: 0xe0001056,
+-	0x16d58: 0xe0000f61, 0x16d59: 0xe0000f5e, 0x16d5a: 0xe0000fa5, 0x16d5b: 0xe0000fa2,
+-	0x16d5c: 0x00312288, 0x16d5d: 0x40312220, 0x16d5e: 0xe0000bf4, 0x16d5f: 0xe0000bf1,
+-	0x16d60: 0x002ebc88, 0x16d61: 0x402c8c20, 0x16d62: 0x002f2288, 0x16d63: 0x402f2220,
+-	0x16d64: 0x00314088, 0x16d65: 0x40314020, 0x16d66: 0xe000096f, 0x16d67: 0xe000096c,
+-	0x16d68: 0xe0000b32, 0x16d69: 0xe0000b2f, 0x16d6a: 0xe000aa2b, 0x16d6b: 0xe000aa28,
+-	0x16d6c: 0xe000aa31, 0x16d6d: 0xe000aa2e, 0x16d6e: 0xe0000e04, 0x16d6f: 0xe0000e01,
+-	0x16d70: 0xe000aa37, 0x16d71: 0xe000aa34, 0x16d72: 0xe0001129, 0x16d73: 0xe0001126,
+-	0x16d74: 0x402e5e20, 0x16d75: 0x402ed020, 0x16d76: 0x40305a20, 0x16d77: 0x402dd420,
+-	0x16d78: 0xe0000abf, 0x16d79: 0xe0000ec4, 0x16d7a: 0x002be888, 0x16d7b: 0x002c4488,
+-	0x16d7c: 0x402c4420, 0x16d7d: 0x002e3888, 0x16d7e: 0x00303e88, 0x16d7f: 0x402ffc20,
+-	// Block 0x5b6, offset 0x16d80
+-	0x16d80: 0x402f8220, 0x16d81: 0x402fd820, 0x16d82: 0x402ff420, 0x16d83: 0x40300820,
+-	0x16d84: 0x402df620, 0x16d85: 0x40301a20, 0x16d86: 0x40302420, 0x16d87: 0x40306420,
+-	0x16d88: 0x40305220, 0x16d89: 0x40307c20, 0x16d8a: 0x4030b420, 0x16d8b: 0x4030cc20,
+-	0x16d8c: 0x4030da20, 0x16d8d: 0x4030ee20, 0x16d8e: 0x402e7a20, 0x16d8f: 0x40310820,
+-	0x16d90: 0x40314820, 0x16d91: 0x40315020, 0x16d92: 0x40316420, 0x16d93: 0x40318020,
+-	0x16d94: 0x4031cc20, 0x16d95: 0x4031e820, 0x16d96: 0x40320a20, 0x16d97: 0x40323220,
+-	0x16d98: 0x40323a20, 0x16d99: 0x402c1220, 0x16d9a: 0x402cf820, 0x16d9b: 0x402d4c20,
+-	0x16d9c: 0x402d7020, 0x16d9d: 0x402de620, 0x16d9e: 0x402e1a20, 0x16d9f: 0x402e2a20,
+-	0x16da0: 0x402f6220, 0x16da1: 0x4031fa20, 0x16da2: 0x40320220, 0x16da3: 0xe0000aca,
+-	0x16da4: 0xe0000adc, 0x16da5: 0xe0000ad9, 0x16da6: 0xe0000fcc, 0x16da7: 0xe0000fcf,
+-	0x16da8: 0xe0000fba, 0x16da9: 0xe0000ba1, 0x16daa: 0xe0000d11, 0x16dab: 0xe0000d18,
+-	0x16dac: 0x40324220, 0x16dad: 0x40324a20, 0x16dae: 0x40309020, 0x16daf: 0x40309820,
+-	0x16db0: 0x002d6894, 0x16db1: 0x002d8094, 0x16db2: 0x002dcc94, 0x16db3: 0x002f7a94,
+-	0x16db4: 0x002f9894, 0x16db5: 0x002fac94, 0x16db6: 0x002fd894, 0x16db7: 0x0030e294,
+-	0x16db8: 0x00310094, 0x16db9: 0x40064020, 0x16dba: 0x40064420, 0x16dbb: 0x40312c20,
+-	0x16dbc: 0x4031de20, 0x16dbd: 0x00312c83, 0x16dbe: 0x4031e220, 0x16dbf: 0x4031f020,
+-	// Block 0x5b7, offset 0x16dc0
+-	0x16dc0: 0xe00009b1, 0x16dc1: 0xe00009ae, 0x16dc2: 0xe0000a22, 0x16dc3: 0xe0000a1f,
+-	0x16dc4: 0xe0000a28, 0x16dc5: 0xe0000a25, 0x16dc6: 0xe0000a2e, 0x16dc7: 0xe0000a2b,
+-	0x16dc8: 0xe0000a5a, 0x16dc9: 0xe0000a56, 0x16dca: 0xe0000a8c, 0x16dcb: 0xe0000a89,
+-	0x16dcc: 0xe0000a98, 0x16dcd: 0xe0000a95, 0x16dce: 0xe0000aa4, 0x16dcf: 0xe0000aa1,
+-	0x16dd0: 0xe0000a92, 0x16dd1: 0xe0000a8f, 0x16dd2: 0xe0000a9e, 0x16dd3: 0xe0000a9b,
+-	0x16dd4: 0xe000aa01, 0x16dd5: 0xe000a9fe, 0x16dd6: 0xe000a9fb, 0x16dd7: 0xe000a9f8,
+-	0x16dd8: 0xe0000b7c, 0x16dd9: 0xe0000b79, 0x16dda: 0xe0000b82, 0x16ddb: 0xe0000b7f,
+-	0x16ddc: 0xe0000b39, 0x16ddd: 0xe0000b35, 0x16dde: 0xe0000b8c, 0x16ddf: 0xe0000b89,
+-	0x16de0: 0xe0000bd0, 0x16de1: 0xe0000bcd, 0x16de2: 0xe0000c00, 0x16de3: 0xe0000bfd,
+-	0x16de4: 0xe0000c0c, 0x16de5: 0xe0000c09, 0x16de6: 0xe0000bfa, 0x16de7: 0xe0000bf7,
+-	0x16de8: 0xe0000c06, 0x16de9: 0xe0000c03, 0x16dea: 0xe0000c12, 0x16deb: 0xe0000c0f,
+-	0x16dec: 0xe0000c7e, 0x16ded: 0xe0000c7b, 0x16dee: 0xe000aa07, 0x16def: 0xe000aa04,
+-	0x16df0: 0xe0000c93, 0x16df1: 0xe0000c90, 0x16df2: 0xe0000cab, 0x16df3: 0xe0000ca8,
+-	0x16df4: 0xe0000cb1, 0x16df5: 0xe0000cae, 0x16df6: 0xe0000cde, 0x16df7: 0xe0000cdb,
+-	0x16df8: 0xe0000ce5, 0x16df9: 0xe0000ce1, 0x16dfa: 0xe0000cf2, 0x16dfb: 0xe0000cef,
+-	0x16dfc: 0xe0000cec, 0x16dfd: 0xe0000ce9, 0x16dfe: 0xe0000d1e, 0x16dff: 0xe0000d1b,
+-	// Block 0x5b8, offset 0x16e00
+-	0x16e00: 0xe0000d24, 0x16e01: 0xe0000d21, 0x16e02: 0xe0000d2a, 0x16e03: 0xe0000d27,
+-	0x16e04: 0xe0000d69, 0x16e05: 0xe0000d66, 0x16e06: 0xe0000d7b, 0x16e07: 0xe0000d78,
+-	0x16e08: 0xe0000d87, 0x16e09: 0xe0000d84, 0x16e0a: 0xe0000d81, 0x16e0b: 0xe0000d7e,
+-	0x16e0c: 0xe000aa13, 0x16e0d: 0xe000aa10, 0x16e0e: 0xe0000df5, 0x16e0f: 0xe0000df1,
+-	0x16e10: 0xe000aa25, 0x16e11: 0xe000aa22, 0x16e12: 0xe000aa1f, 0x16e13: 0xe000aa1c,
+-	0x16e14: 0xe0000ea7, 0x16e15: 0xe0000ea4, 0x16e16: 0xe0000ead, 0x16e17: 0xe0000eaa,
+-	0x16e18: 0xe0000ed6, 0x16e19: 0xe0000ed3, 0x16e1a: 0xe0000ef4, 0x16e1b: 0xe0000ef1,
+-	0x16e1c: 0xe0000efb, 0x16e1d: 0xe0000ef7, 0x16e1e: 0xe0000f02, 0x16e1f: 0xe0000eff,
+-	0x16e20: 0xe0000f41, 0x16e21: 0xe0000f3e, 0x16e22: 0xe0000f53, 0x16e23: 0xe0000f50,
+-	0x16e24: 0xe0000f26, 0x16e25: 0xe0000f22, 0x16e26: 0xe0000f3a, 0x16e27: 0xe0000f36,
+-	0x16e28: 0xe0000f5a, 0x16e29: 0xe0000f56, 0x16e2a: 0xe0000f93, 0x16e2b: 0xe0000f90,
+-	0x16e2c: 0xe0000f9f, 0x16e2d: 0xe0000f9c, 0x16e2e: 0xe0000fb1, 0x16e2f: 0xe0000fae,
+-	0x16e30: 0xe0000fab, 0x16e31: 0xe0000fa8, 0x16e32: 0xe0001093, 0x16e33: 0xe0001090,
+-	0x16e34: 0xe000109f, 0x16e35: 0xe000109c, 0x16e36: 0xe0001099, 0x16e37: 0xe0001096,
+-	0x16e38: 0xe000aa49, 0x16e39: 0xe000aa46, 0x16e3a: 0xe000a58e, 0x16e3b: 0xe000a58b,
+-	0x16e3c: 0xe00010a9, 0x16e3d: 0xe00010a6, 0x16e3e: 0xe00010af, 0x16e3f: 0xe00010ac,
+-	// Block 0x5b9, offset 0x16e40
+-	0x16e40: 0xe00010d2, 0x16e41: 0xe00010cf, 0x16e42: 0xe00010cc, 0x16e43: 0xe00010c9,
+-	0x16e44: 0xe00010e1, 0x16e45: 0xe00010de, 0x16e46: 0xe00010e7, 0x16e47: 0xe00010e4,
+-	0x16e48: 0xe00010ed, 0x16e49: 0xe00010ea, 0x16e4a: 0xe00010fc, 0x16e4b: 0xe00010f9,
+-	0x16e4c: 0xe00010f6, 0x16e4d: 0xe00010f3, 0x16e4e: 0xe0001123, 0x16e4f: 0xe0001120,
+-	0x16e50: 0xe0001141, 0x16e51: 0xe000113e, 0x16e52: 0xe0001153, 0x16e53: 0xe0001150,
+-	0x16e54: 0xe0001159, 0x16e55: 0xe0001156, 0x16e56: 0xe0000c15, 0x16e57: 0xe0000f8d,
+-	0x16e58: 0xe00010db, 0x16e59: 0xe0001111, 0x16e5a: 0xf0000404, 0x16e5b: 0xe0000f70,
+-	0x16e5c: 0x40300420, 0x16e5d: 0x40300620, 0x16e5e: 0xe0000f7f, 0x16e5f: 0x402c9620,
+-	0x16e60: 0xe000099b, 0x16e61: 0xe0000998, 0x16e62: 0xe0000989, 0x16e63: 0xe0000986,
+-	0x16e64: 0xe000a9dd, 0x16e65: 0xe000a9da, 0x16e66: 0xe0000930, 0x16e67: 0xe000092c,
+-	0x16e68: 0xe0000940, 0x16e69: 0xe000093c, 0x16e6a: 0xe0000938, 0x16e6b: 0xe0000934,
+-	0x16e6c: 0xe00009aa, 0x16e6d: 0xe00009a6, 0x16e6e: 0xe000a9d7, 0x16e6f: 0xe000a9d4,
+-	0x16e70: 0xe000090a, 0x16e71: 0xe0000906, 0x16e72: 0xe000091a, 0x16e73: 0xe0000916,
+-	0x16e74: 0xe0000912, 0x16e75: 0xe000090e, 0x16e76: 0xe00009a2, 0x16e77: 0xe000099e,
+-	0x16e78: 0xe0000b6e, 0x16e79: 0xe0000b6b, 0x16e7a: 0xe0000b5c, 0x16e7b: 0xe0000b59,
+-	0x16e7c: 0xe0000b26, 0x16e7d: 0xe0000b23, 0x16e7e: 0xe000a9f5, 0x16e7f: 0xe000a9f2,
+-	// Block 0x5ba, offset 0x16e80
+-	0x16e80: 0xe0000b03, 0x16e81: 0xe0000aff, 0x16e82: 0xe0000b13, 0x16e83: 0xe0000b0f,
+-	0x16e84: 0xe0000b0b, 0x16e85: 0xe0000b07, 0x16e86: 0xe0000b75, 0x16e87: 0xe0000b71,
+-	0x16e88: 0xe0000c66, 0x16e89: 0xe0000c63, 0x16e8a: 0xe0000c78, 0x16e8b: 0xe0000c75,
+-	0x16e8c: 0xe0000e84, 0x16e8d: 0xe0000e81, 0x16e8e: 0xe0000e44, 0x16e8f: 0xe0000e41,
+-	0x16e90: 0xe000aa0d, 0x16e91: 0xe000aa0a, 0x16e92: 0xe0000db5, 0x16e93: 0xe0000db1,
+-	0x16e94: 0xe0000dc5, 0x16e95: 0xe0000dc1, 0x16e96: 0xe0000dbd, 0x16e97: 0xe0000db9,
+-	0x16e98: 0xe0000e8b, 0x16e99: 0xe0000e87, 0x16e9a: 0xe000aa19, 0x16e9b: 0xe000aa16,
+-	0x16e9c: 0xe0000e65, 0x16e9d: 0xe0000e61, 0x16e9e: 0xe0000e75, 0x16e9f: 0xe0000e71,
+-	0x16ea0: 0xe0000e6d, 0x16ea1: 0xe0000e69, 0x16ea2: 0xe0000e7d, 0x16ea3: 0xe0000e79,
+-	0x16ea4: 0xe000108d, 0x16ea5: 0xe000108a, 0x16ea6: 0xe000104d, 0x16ea7: 0xe000104a,
+-	0x16ea8: 0xe000aa4f, 0x16ea9: 0xe000aa4c, 0x16eaa: 0xe000106e, 0x16eab: 0xe000106a,
+-	0x16eac: 0xe000107e, 0x16ead: 0xe000107a, 0x16eae: 0xe0001076, 0x16eaf: 0xe0001072,
+-	0x16eb0: 0xe0001086, 0x16eb1: 0xe0001082, 0x16eb2: 0xe0001108, 0x16eb3: 0xe0001105,
+-	0x16eb4: 0xe0001135, 0x16eb5: 0xe0001132, 0x16eb6: 0xe000112f, 0x16eb7: 0xe000112c,
+-	0x16eb8: 0xe000111d, 0x16eb9: 0xe000111a, 0x16eba: 0xe0000d0a, 0x16ebb: 0xe0000d07,
+-	0x16ebc: 0x0030d888, 0x16ebd: 0x4030d820, 0x16ebe: 0x00312088, 0x16ebf: 0x40312020,
+-	// Block 0x5bb, offset 0x16ec0
+-	0x16ec0: 0xa0000000, 0x16ec1: 0xa0000000, 0x16ec2: 0xa0000000, 0x16ec3: 0xa0000000,
+-	0x16ec4: 0xa0000000, 0x16ec5: 0xa0000000, 0x16ec6: 0xa0000000, 0x16ec7: 0xa0000000,
+-	0x16ec8: 0xa0000000, 0x16ec9: 0x40020020, 0x16eca: 0x40020220, 0x16ecb: 0x40020420,
+-	0x16ecc: 0x40020620, 0x16ecd: 0x40020820, 0x16ece: 0xa0000000, 0x16ecf: 0xa0000000,
+-	0x16ed0: 0xa0000000, 0x16ed1: 0xa0000000, 0x16ed2: 0xa0000000, 0x16ed3: 0xa0000000,
+-	0x16ed4: 0xa0000000, 0x16ed5: 0xa0000000, 0x16ed6: 0xa0000000, 0x16ed7: 0xa0000000,
+-	0x16ed8: 0xa0000000, 0x16ed9: 0xa0000000, 0x16eda: 0xa0000000, 0x16edb: 0xa0000000,
+-	0x16edc: 0xa0000000, 0x16edd: 0xa0000000, 0x16ede: 0xa0000000, 0x16edf: 0xa0000000,
+-	0x16ee0: 0x40021220, 0x16ee1: 0x4002ba20, 0x16ee2: 0x4003e020, 0x16ee3: 0x4004ea20,
+-	0x16ee4: 0x4027de20, 0x16ee5: 0x4004ec20, 0x16ee6: 0x4004e620, 0x16ee7: 0x4003d220,
+-	0x16ee8: 0x4003f420, 0x16ee9: 0x4003f620, 0x16eea: 0x4004d820, 0x16eeb: 0x40093820,
+-	0x16eec: 0x40024020, 0x16eed: 0x40021a20, 0x16eee: 0x4002e420, 0x16eef: 0x4004e220,
+-	0x16ef0: 0x4029cc20, 0x16ef1: 0x4029ce20, 0x16ef2: 0x4029d020, 0x16ef3: 0x4029d220,
+-	0x16ef4: 0x4029d420, 0x16ef5: 0x4029d620, 0x16ef6: 0x4029d820, 0x16ef7: 0x4029da20,
+-	0x16ef8: 0x4029dc20, 0x16ef9: 0x4029de20, 0x16efa: 0x40026c20, 0x16efb: 0x40026220,
+-	0x16efc: 0x40094020, 0x16efd: 0x40094220, 0x16efe: 0x40094420, 0x16eff: 0x4002c420,
+-	// Block 0x5bc, offset 0x16f00
+-	0x16f00: 0x4004d620, 0x16f01: 0x002bde88, 0x16f02: 0x002c0a88, 0x16f03: 0xc3350911,
+-	0x16f04: 0x002c6288, 0x16f05: 0x002c9888, 0x16f06: 0x002d0888, 0x16f07: 0xc33900d1,
+-	0x16f08: 0x002d6888, 0x16f09: 0xc33b0931, 0x16f0a: 0x002dcc88, 0x16f0b: 0x002dfe88,
+-	0x16f0c: 0xc0030002, 0x16f0d: 0x002e8288, 0x16f0e: 0x002e9e88, 0x16f0f: 0xc33f0071,
+-	0x16f10: 0x002f2c88, 0x16f11: 0x002f5688, 0x16f12: 0x002f7a88, 0x16f13: 0xc3430911,
+-	0x16f14: 0x00302c88, 0x16f15: 0xc3470071, 0x16f16: 0x0030be88, 0x16f17: 0x0030e288,
+-	0x16f18: 0x0030f688, 0x16f19: 0x00310088, 0x16f1a: 0x00312a88, 0x16f1b: 0x4003f820,
+-	0x16f1c: 0x4004e420, 0x16f1d: 0x4003fa20, 0x16f1e: 0x40062420, 0x16f1f: 0x40021620,
+-	0x16f20: 0x40061e20, 0x16f21: 0x402bde20, 0x16f22: 0x402c0a20, 0x16f23: 0xc3330911,
+-	0x16f24: 0x402c6220, 0x16f25: 0x402c9820, 0x16f26: 0x402d0820, 0x16f27: 0xc33700d1,
+-	0x16f28: 0x402d6820, 0x16f29: 0x402d9a20, 0x16f2a: 0x402dcc20, 0x16f2b: 0x402dfe20,
+-	0x16f2c: 0xc0000002, 0x16f2d: 0x402e8220, 0x16f2e: 0x402e9e20, 0x16f2f: 0xc33d0071,
+-	0x16f30: 0x402f2c20, 0x16f31: 0x402f5620, 0x16f32: 0x402f7a20, 0x16f33: 0xc3410911,
+-	0x16f34: 0x40302c20, 0x16f35: 0xc3450071, 0x16f36: 0x4030be20, 0x16f37: 0x4030e220,
+-	0x16f38: 0x4030f620, 0x16f39: 0x40310020, 0x16f3a: 0x40312a20, 0x16f3b: 0x4003fc20,
+-	0x16f3c: 0x40094820, 0x16f3d: 0x4003fe20, 0x16f3e: 0x40094c20, 0x16f3f: 0xa0000000,
+-	// Block 0x5bd, offset 0x16f40
+-	0x16f40: 0x00093685, 0x16f41: 0x40083620, 0x16f42: 0x40083820, 0x16f43: 0x40083a20,
+-	0x16f44: 0x40083c20, 0x16f45: 0x002c628b, 0x16f46: 0x002c6285, 0x16f47: 0x002c9885,
+-	0x16f48: 0x002d9a85, 0x16f49: 0x002dcc85, 0x16f4a: 0x40083e20, 0x16f4b: 0x400a6e20,
+-	0x16f4c: 0x40084020, 0x16f4d: 0xe00009c4, 0x16f4e: 0x402d1e20, 0x16f4f: 0x40084220,
+-	0x16f50: 0xe00002cb, 0x16f51: 0xe00002d3, 0x16f52: 0xe00002b2, 0x16f53: 0xe00002bb,
+-	0x16f54: 0xe00003cd, 0x16f55: 0xe00002c3, 0x16f56: 0xe00003d1, 0x16f57: 0xe00004ab,
+-	0x16f58: 0xe0000579, 0x16f59: 0xe00002c7, 0x16f5a: 0xe0000640, 0x16f5b: 0xe00002cf,
+-	0x16f5c: 0xe00004af, 0x16f5d: 0xe0000644, 0x16f5e: 0xe0000798, 0x16f5f: 0xf0001e1e,
+-	0x16f60: 0x002d9a8a, 0x16f61: 0xe000256e, 0x16f62: 0xe0002571, 0x16f63: 0xe000257b,
+-	0x16f64: 0x0030be8a, 0x16f65: 0xe00025ab, 0x16f66: 0xe00025ae, 0x16f67: 0xe00010bb,
+-	0x16f68: 0xe0002581, 0x16f69: 0x0030f68a, 0x16f6a: 0xe00025b5, 0x16f6b: 0xe00025bc,
+-	0x16f6c: 0x002e228a, 0x16f6d: 0x002c3a8a, 0x16f6e: 0x002c628a, 0x16f6f: 0x002e828a,
+-	0x16f70: 0x002d9a84, 0x16f71: 0xf0001f04, 0x16f72: 0xf0000404, 0x16f73: 0xf0001f04,
+-	0x16f74: 0x0030be84, 0x16f75: 0xf0001f04, 0x16f76: 0xf0000404, 0x16f77: 0xe00010b6,
+-	0x16f78: 0xf0001f04, 0x16f79: 0x0030f684, 0x16f7a: 0xf0001f04, 0x16f7b: 0xf0000404,
+-	0x16f7c: 0x002e2284, 0x16f7d: 0x002c3a84, 0x16f7e: 0x002c6284, 0x16f7f: 0x002e8284,
+-	// Block 0x5be, offset 0x16f80
+-	0x16f80: 0xf0001f04, 0x16f81: 0xf0001f04, 0x16f82: 0xf0001f04, 0x16f83: 0xf0001f04,
+-	0x16f84: 0xf0001f04, 0x16f85: 0xf0001f04, 0x16f86: 0xf0001f04, 0x16f87: 0xf0001f04,
+-	0x16f88: 0xf0001f04, 0x16f89: 0xf0001f04, 0x16f8a: 0xf0001f04,
+-	0x16f90: 0xf0000a04, 0x16f91: 0xf0000a04, 0x16f92: 0xf0000a04, 0x16f93: 0xf0000a04,
+-	0x16f94: 0xf0000a04, 0x16f95: 0xf0000a04, 0x16f96: 0xf0000a04, 0x16f97: 0xf0000a04,
+-	0x16f98: 0xe0002517, 0x16f99: 0xf0000a04, 0x16f9a: 0xf0000a04, 0x16f9b: 0xf0000a04,
+-	0x16f9c: 0xf0000a04, 0x16f9d: 0xf0000a04, 0x16f9e: 0xf0000a04, 0x16f9f: 0xf0000a04,
+-	0x16fa0: 0xf0000a04, 0x16fa1: 0xf0000a04, 0x16fa2: 0xf0000a04, 0x16fa3: 0xf0000a04,
+-	0x16fa4: 0xf0000a04, 0x16fa5: 0xf0000a04, 0x16fa6: 0xf0000a04, 0x16fa7: 0xf0000a04,
+-	0x16fa8: 0xf0000a04, 0x16fa9: 0xf0000a04, 0x16faa: 0xf0000a04, 0x16fab: 0x002c3a8c,
+-	0x16fac: 0x002f7a8c, 0x16fad: 0xf0000c0c, 0x16fae: 0xf0000c0c,
+-	0x16fb0: 0x002bde9d, 0x16fb1: 0x002c0a9d, 0x16fb2: 0x002c3a9d, 0x16fb3: 0x002c629d,
+-	0x16fb4: 0x002c989d, 0x16fb5: 0x002d089d, 0x16fb6: 0x002d229d, 0x16fb7: 0x002d689d,
+-	0x16fb8: 0x002d9a9d, 0x16fb9: 0x002dcc9d, 0x16fba: 0x002dfe9d, 0x16fbb: 0x002e229d,
+-	0x16fbc: 0x002e829d, 0x16fbd: 0x002e9e9d, 0x16fbe: 0x002ee29d, 0x16fbf: 0x002f2c9d,
+-	// Block 0x5bf, offset 0x16fc0
+-	0x16fc0: 0x00352088, 0x16fc1: 0x40352020, 0x16fc2: 0x40070620, 0x16fc3: 0xae608302,
+-	0x16fc4: 0xae605f02, 0x16fc5: 0xae602a02, 0x16fc6: 0xae602202, 0x16fc7: 0xae605f02,
+-	0x16fc8: 0xa0000000, 0x16fc9: 0xa0000000, 0x16fca: 0x00341c88, 0x16fcb: 0x40341c20,
+-	0x16fcc: 0x00369688, 0x16fcd: 0x40369620, 0x16fce: 0x00353088, 0x16fcf: 0x40353020,
+-	0x16fd0: 0x00336483, 0x16fd1: 0x40336420, 0x16fd2: 0x00336a88, 0x16fd3: 0x40336a20,
+-	0x16fd4: 0x00337a88, 0x16fd5: 0x40337a20, 0x16fd6: 0x0033dc88, 0x16fd7: 0x4033dc20,
+-	0x16fd8: 0x0033aa88, 0x16fd9: 0x4033aa20, 0x16fda: 0x00345888, 0x16fdb: 0x40345820,
+-	0x16fdc: 0x00347888, 0x16fdd: 0x40347820, 0x16fde: 0x00347088, 0x16fdf: 0x40347020,
+-	0x16fe0: 0x00346888, 0x16fe1: 0x40346820, 0x16fe2: 0x0034ca88, 0x16fe3: 0x4034ca20,
+-	0x16fe4: 0x0034dc88, 0x16fe5: 0x4034dc20, 0x16fe6: 0x00351888, 0x16fe7: 0x40351820,
+-	0x16fe8: 0x00372688, 0x16fe9: 0x40372620, 0x16fea: 0x00354488, 0x16feb: 0x40354420,
+-	0x16fec: 0x00355888, 0x16fed: 0x40355820, 0x16fee: 0x00359288, 0x16fef: 0x40359220,
+-	0x16ff0: 0x00359a88, 0x16ff1: 0x40359a20, 0x16ff2: 0x0035cc88, 0x16ff3: 0x4035cc20,
+-	0x16ff4: 0x00360e88, 0x16ff5: 0x40360e20, 0x16ff6: 0x00362a88, 0x16ff7: 0x40362a20,
+-	0x16ff8: 0x00363a88, 0x16ff9: 0x40363a20, 0x16ffa: 0x0035d488, 0x16ffb: 0x4035d420,
+-	0x16ffc: 0x00364488, 0x16ffd: 0x40364420, 0x16ffe: 0x00364c88, 0x16fff: 0x40364c20,
+-	// Block 0x5c0, offset 0x17000
+-	0x17000: 0xa0000000, 0x17001: 0xa0000000, 0x17002: 0xa0000000, 0x17003: 0xa0000000,
+-	0x17004: 0xa0000000, 0x17006: 0x40096620, 0x17007: 0x40096a20,
+-	0x17008: 0x40070820, 0x17009: 0x4004f220, 0x1700a: 0x4004f620, 0x1700b: 0x4027e620,
+-	0x1700c: 0x40024820, 0x1700d: 0x40024a20, 0x1700e: 0x40070e20, 0x1700f: 0x40071020,
+-	0x17010: 0xa0000001, 0x17011: 0xa0000002, 0x17012: 0xa0000004, 0x17013: 0xa0000003,
+-	0x17014: 0xa0000005, 0x17015: 0xae600000, 0x17016: 0xae600000, 0x17017: 0xae600000,
+-	0x17018: 0xa1e00000, 0x17019: 0xa1f00000, 0x1701a: 0xa2000000, 0x1701b: 0x40026420,
+-	0x1701e: 0x40027020, 0x1701f: 0x4002cc20,
+-	0x17020: 0x403aa220, 0x17021: 0x4039a620, 0x17022: 0x40393a20, 0x17023: 0x40393821,
+-	0x17024: 0x40399c21, 0x17025: 0x40392820, 0x17026: 0x4039a821, 0x17027: 0xcf0b0151,
+-	0x17028: 0xcf0f97a1, 0x17029: 0x40395420, 0x1702a: 0xcf1397a1, 0x1702b: 0x40394c20,
+-	0x1702c: 0xcf1797a1, 0x1702d: 0x40395620, 0x1702e: 0x40395820, 0x1702f: 0xcf1b97a1,
+-	0x17030: 0x40396220, 0x17031: 0xcf1f97a1, 0x17032: 0x40396c20, 0x17033: 0x40397020,
+-	0x17034: 0x40397220, 0x17035: 0x40397420, 0x17036: 0x40397620, 0x17037: 0x40397820,
+-	0x17038: 0x40397a20, 0x17039: 0x40397c20, 0x1703a: 0x40397e20, 0x1703b: 0x403a3820,
+-	0x1703c: 0x403a3a20, 0x1703d: 0x403a9c20, 0x1703e: 0x403a9e20, 0x1703f: 0x403aa020,
+-	// Block 0x5c1, offset 0x17040
+-	0x17040: 0xa0000000, 0x17041: 0x40398020, 0x17042: 0x40398220, 0x17043: 0x403a1a20,
+-	0x17044: 0xcf2797a1, 0x17045: 0xcf2997a1, 0x17046: 0xcf2b97a1, 0x17047: 0x403a6820,
+-	0x17048: 0xcf2f97c2, 0x17049: 0x403a8e20, 0x1704a: 0xcf340171, 0x1704b: 0xa000c302,
+-	0x1704c: 0xa000c502, 0x1704d: 0xa000c402, 0x1704e: 0xa000bd02, 0x1704f: 0xa000bf02,
+-	0x17050: 0xa000be02, 0x17051: 0xa000c702, 0x17052: 0xa220bc02, 0x17053: 0xa000c902,
+-	0x17054: 0xa000c602, 0x17055: 0xadc0bf02, 0x17056: 0xa000c102, 0x17057: 0xa000c202,
+-	0x17058: 0xa000c802, 0x17059: 0xae60c402, 0x1705a: 0xae60c502, 0x1705b: 0xae60c602,
+-	0x1705c: 0xadc0c702, 0x1705d: 0xae60c802, 0x1705e: 0xae60c902, 0x1705f: 0xadc0c002,
+-	0x17060: 0xe000015e, 0x17061: 0xe00001e6, 0x17062: 0xe0000301, 0x17063: 0xe00003db,
+-	0x17064: 0xe00004b6, 0x17065: 0xe0000580, 0x17066: 0xe000064b, 0x17067: 0xe00006f3,
+-	0x17068: 0xe000079f, 0x17069: 0xe0000844, 0x1706a: 0x4004ee20, 0x1706b: 0x40024c20,
+-	0x1706c: 0x40024e20, 0x1706d: 0x4004de20, 0x1706e: 0x40393a20, 0x1706f: 0x403a1020,
+-	0x17070: 0xa000c002, 0x17071: 0x40392420, 0x17072: 0x40392220, 0x17073: 0x40392a20,
+-	0x17074: 0x00391c84, 0x17075: 0xf0000404, 0x17076: 0xe000ac3b, 0x17077: 0xf0000404,
+-	0x17078: 0xf0000404, 0x17079: 0xcf1597a1, 0x1707a: 0x40395c20, 0x1707b: 0x40393e20,
+-	0x1707c: 0x40395e20, 0x1707d: 0x40396020, 0x1707e: 0xcf1197a1, 0x1707f: 0x40396220,
+-	// Block 0x5c2, offset 0x17080
+-	0x17080: 0x40394220, 0x17081: 0x40397620, 0x17082: 0x40397820, 0x17083: 0x40396620,
+-	0x17084: 0x40396820, 0x17085: 0x40397a20, 0x17086: 0xcf1997a1, 0x17087: 0x40396e20,
+-	0x17088: 0xcf1d97a1, 0x17089: 0x40398e20, 0x1708a: 0x40399020, 0x1708b: 0x40399220,
+-	0x1708c: 0x40399420, 0x1708d: 0x40399620, 0x1708e: 0x40399820, 0x1708f: 0x40399a20,
+-	0x17090: 0x40399c20, 0x17091: 0xcf2197a1, 0x17092: 0x4039aa20, 0x17093: 0x4039ac20,
+-	0x17094: 0x4039ae20, 0x17095: 0x4039b020, 0x17096: 0x4039b220, 0x17097: 0x4039b420,
+-	0x17098: 0x40396e20, 0x17099: 0x4039b820, 0x1709a: 0x4039ca20, 0x1709b: 0x4039cc20,
+-	0x1709c: 0x4039ce20, 0x1709d: 0x4039e020, 0x1709e: 0x4039e220, 0x1709f: 0x4039ea20,
+-	0x170a0: 0x4039f220, 0x170a1: 0x4039fe20, 0x170a2: 0x403a0020, 0x170a3: 0x403a0220,
+-	0x170a4: 0x403a0420, 0x170a5: 0x403a0820, 0x170a6: 0x403a0a20, 0x170a7: 0x403a1420,
+-	0x170a8: 0x403a1620, 0x170a9: 0xcf2397a1, 0x170aa: 0x403a1e20, 0x170ab: 0x403a2020,
+-	0x170ac: 0x403a2220, 0x170ad: 0x403a2620, 0x170ae: 0x403a2820, 0x170af: 0xcf2597a1,
+-	0x170b0: 0x403a2c20, 0x170b1: 0x403a2e20, 0x170b2: 0x403a3020, 0x170b3: 0x403a3220,
+-	0x170b4: 0x403a3420, 0x170b5: 0x403a4220, 0x170b6: 0x403a4420, 0x170b7: 0x403a4620,
+-	0x170b8: 0x403a4820, 0x170b9: 0x403a6020, 0x170ba: 0xcf2d97a1, 0x170bb: 0x403a5a20,
+-	0x170bc: 0x403a5c20, 0x170bd: 0x403a5e20, 0x170be: 0x4039a220, 0x170bf: 0x40396c20,
+-	// Block 0x5c3, offset 0x170c0
+-	0x170c0: 0xe000ac38, 0x170c1: 0xcf320171, 0x170c2: 0x4039a021, 0x170c3: 0x4039a420,
+-	0x170c4: 0x403a7620, 0x170c5: 0x403a7820, 0x170c6: 0x403a7a20, 0x170c7: 0x403a7c20,
+-	0x170c8: 0x403a7e20, 0x170c9: 0x403a8020, 0x170ca: 0x403a8220, 0x170cb: 0x403a8420,
+-	0x170cc: 0xcf3697a1, 0x170cd: 0x403a9420, 0x170ce: 0x403a9620, 0x170cf: 0x403a8620,
+-	0x170d0: 0x403a9820, 0x170d1: 0x403a9a20, 0x170d2: 0xcf380171, 0x170d3: 0x4039ac21,
+-	0x170d4: 0x4002e820, 0x170d5: 0x403a7220, 0x170d6: 0xae600000, 0x170d7: 0xae600000,
+-	0x170d8: 0xae600000, 0x170d9: 0xae600000, 0x170da: 0xae600000, 0x170db: 0xae600000,
+-	0x170dc: 0xae600000, 0x170dd: 0xa0000000, 0x170de: 0x40071220, 0x170df: 0xae600000,
+-	0x170e0: 0xae600000, 0x170e1: 0xae600000, 0x170e2: 0xae600000, 0x170e3: 0xadc00000,
+-	0x170e4: 0xae600000, 0x170e5: 0x003a7484, 0x170e6: 0x003a9084, 0x170e7: 0xae600000,
+-	0x170e8: 0xae600000, 0x170e9: 0x40071420, 0x170ea: 0xadc00000, 0x170eb: 0xae600000,
+-	0x170ec: 0xae600000, 0x170ed: 0xadc00000, 0x170ee: 0x40399e20, 0x170ef: 0x4039ba20,
+-	0x170f0: 0xe0000161, 0x170f1: 0xe00001e9, 0x170f2: 0xe0000304, 0x170f3: 0xe00003de,
+-	0x170f4: 0xe00004b9, 0x170f5: 0xe0000583, 0x170f6: 0xe000064e, 0x170f7: 0xe00006f6,
+-	0x170f8: 0xe00007a2, 0x170f9: 0xe0000847, 0x170fa: 0x4039d020, 0x170fb: 0x4039e420,
+-	0x170fc: 0x4039f420, 0x170fd: 0xe0001553, 0x170fe: 0xe0001779, 0x170ff: 0x403a7020,
+-	// Block 0x5c4, offset 0x17100
+-	0x17100: 0xe000155f, 0x17101: 0xe0001565, 0x17102: 0xe000157a, 0x17103: 0xe00015b0,
+-	0x17104: 0xe00015b6, 0x17105: 0xe000aa58, 0x17106: 0xe000aa5e, 0x17107: 0xe000aa64,
+-	0x17108: 0xe000aa76, 0x17109: 0xf0001a1a, 0x1710a: 0xf0001a1a, 0x1710b: 0xe000aa7f,
+-	0x1710c: 0xe000aa85, 0x1710d: 0xe000aa8b, 0x1710e: 0xe000aa9d, 0x1710f: 0xe00024a8,
+-	0x17110: 0xe00031a6, 0x17111: 0xe000aaa3, 0x17112: 0xe000aab5, 0x17113: 0xe00024ae,
+-	0x17114: 0xe00031af, 0x17115: 0xe000aabe, 0x17116: 0xe000aac4, 0x17117: 0xe000aaca,
+-	0x17118: 0xe000aad0, 0x17119: 0xe000aad6, 0x1711a: 0xe000aad9, 0x1711b: 0xe000aadf,
+-	0x1711c: 0xe000aaee, 0x1711d: 0xe000aaf7, 0x1711e: 0xe000ab00, 0x1711f: 0xe000ab0f,
+-	0x17120: 0xe000ab4b, 0x17121: 0xe000ab5a, 0x17122: 0xe000ab60, 0x17123: 0xe000ab66,
+-	0x17124: 0xe000ab6c, 0x17125: 0xe000ab78, 0x17126: 0xe000ab7e, 0x17127: 0xe000ab87,
+-	0x17128: 0xe000ab90, 0x17129: 0xe000ab96, 0x1712a: 0xe000ab9c, 0x1712b: 0xe000aba2,
+-	0x1712c: 0xe000aba8, 0x1712d: 0xe000abae, 0x1712e: 0xe000abb4, 0x1712f: 0xe000abba,
+-	0x17130: 0xe000abc0, 0x17131: 0xe00024f0, 0x17132: 0xe00031fd, 0x17133: 0xe000abc6,
+-	0x17134: 0xe000abcc, 0x17135: 0xe00024f6, 0x17136: 0xe0003203, 0x17137: 0xf0001a1a,
+-	0x17138: 0xe000320f, 0x17139: 0xe0003215, 0x1713a: 0xe000321b, 0x1713b: 0xe0003227,
+-	0x1713c: 0xe0003233, 0x1713d: 0xf0001a1a, 0x1713e: 0xf0001a1a, 0x1713f: 0xe000abd8,
+-	// Block 0x5c5, offset 0x17140
+-	0x17140: 0xe000abde, 0x17141: 0xe000abe4, 0x17142: 0xe000abf0, 0x17143: 0xe0002502,
+-	0x17144: 0xe0003242, 0x17145: 0xe000abf9, 0x17146: 0xe000abff, 0x17147: 0xe000ac05,
+-	0x17148: 0xe000ac0e, 0x17149: 0xe0002505, 0x1714a: 0xe0003245, 0x1714b: 0xe000ac14,
+-	0x1714c: 0xe000ac1a, 0x1714d: 0xe000ac20, 0x1714e: 0xe000ac32, 0x1714f: 0xe000250b,
+-	0x17150: 0xe0003251, 0x17151: 0xe000325a, 0x17152: 0xe0003260, 0x17153: 0xf0001a1a,
+-	0x17154: 0xf0001a1a, 0x17155: 0xe000327b, 0x17156: 0xe0003281, 0x17157: 0xe0003287,
+-	0x17158: 0xe0003299, 0x17159: 0xf0001a1a, 0x1715a: 0xf0001a1a, 0x1715b: 0xe000aae2,
+-	0x1715c: 0xe000aae5, 0x1715d: 0xe0003272, 0x1715e: 0xe0000003, 0x1715f: 0xe0000006,
+-	0x17160: 0xe0000009, 0x17161: 0xe000000c, 0x17162: 0xe000000f, 0x17163: 0xe0000012,
+-	0x17164: 0xe000156b, 0x17165: 0xe000156e, 0x17166: 0xe0001577, 0x17167: 0xe000157d,
+-	0x17168: 0xe00015aa, 0x17169: 0xe00015b3, 0x1716a: 0xe000aa67, 0x1716b: 0xe000aa6a,
+-	0x1716c: 0xe000aa73, 0x1716d: 0xe000aa79, 0x1716e: 0xf0001919, 0x1716f: 0xf0001919,
+-	0x17170: 0xe000aa8e, 0x17171: 0xe000aa91, 0x17172: 0xe000aa9a, 0x17173: 0xe000aaa0,
+-	0x17174: 0xe00024a5, 0x17175: 0xe00031a3, 0x17176: 0xe000aaa6, 0x17177: 0xe000aaa9,
+-	0x17178: 0xe000aab2, 0x17179: 0xe000aab8, 0x1717a: 0xe00024ab, 0x1717b: 0xe00031ac,
+-	0x1717c: 0xe00024ed, 0x1717d: 0xe00031fa, 0x1717e: 0xe00024f3, 0x1717f: 0xe0003200,
+-	// Block 0x5c6, offset 0x17180
+-	0x17180: 0xf0001919, 0x17181: 0xe0003224, 0x17182: 0xe0003230, 0x17183: 0xf0001919,
+-	0x17184: 0xf0001919, 0x17185: 0xe000abed, 0x17186: 0xe00024ff, 0x17187: 0xe000323f,
+-	0x17188: 0xe000abf3, 0x17189: 0xe000ac0b, 0x1718a: 0xe000ac23, 0x1718b: 0xe000ac26,
+-	0x1718c: 0xe000ac2f, 0x1718d: 0xe000ac35, 0x1718e: 0xe0002508, 0x1718f: 0xe000324e,
+-	0x17190: 0xe000326f, 0x17191: 0xe000328a, 0x17192: 0xe000328d, 0x17193: 0xe0003296,
+-	0x17194: 0xe000329c, 0x17195: 0xf0001919, 0x17196: 0xf0001919, 0x17197: 0xe000155c,
+-	0x17198: 0xe0001562, 0x17199: 0xe0001568, 0x1719a: 0xe0001571, 0x1719b: 0xe0001580,
+-	0x1719c: 0xe000aa55, 0x1719d: 0xe000aa5b, 0x1719e: 0xe000aa61, 0x1719f: 0xe000aa6d,
+-	0x171a0: 0xf0001717, 0x171a1: 0xe000aa7c, 0x171a2: 0xe000aa82, 0x171a3: 0xe000aa88,
+-	0x171a4: 0xe000aa94, 0x171a5: 0xe000319d, 0x171a6: 0xe000aaac, 0x171a7: 0xe000aabb,
+-	0x171a8: 0xe000aac1, 0x171a9: 0xe000aac7, 0x171aa: 0xe000aacd, 0x171ab: 0xe000aad3,
+-	0x171ac: 0xe000aadc, 0x171ad: 0xe000aae8, 0x171ae: 0xe000aaf1, 0x171af: 0xe000aafa,
+-	0x171b0: 0xe000ab09, 0x171b1: 0xe000ab48, 0x171b2: 0xe000ab4e, 0x171b3: 0xe000ab57,
+-	0x171b4: 0xe000ab5d, 0x171b5: 0xe000ab63, 0x171b6: 0xe000ab69, 0x171b7: 0xe000ab75,
+-	0x171b8: 0xe000ab7b, 0x171b9: 0xe000ab8a, 0x171ba: 0xe000ab93, 0x171bb: 0xe000ab99,
+-	0x171bc: 0xe000ab9f, 0x171bd: 0xe000aba5, 0x171be: 0xe000abab, 0x171bf: 0xe000abb1,
+-	// Block 0x5c7, offset 0x171c0
+-	0x171c0: 0xe000abb7, 0x171c1: 0xe000abbd, 0x171c2: 0xe000abc3, 0x171c3: 0xe000abc9,
+-	0x171c4: 0xe000320c, 0x171c5: 0xe0003212, 0x171c6: 0xe0003218, 0x171c7: 0xe000321e,
+-	0x171c8: 0xe000322a, 0x171c9: 0xe000abd5, 0x171ca: 0xe000abdb, 0x171cb: 0xe000abe1,
+-	0x171cc: 0xe000abe7, 0x171cd: 0xe000323c, 0x171ce: 0xe000abf6, 0x171cf: 0xe000abfc,
+-	0x171d0: 0xe000ac02, 0x171d1: 0xe000ac08, 0x171d2: 0xe000ac11, 0x171d3: 0xe000ac17,
+-	0x171d4: 0xe000ac1d, 0x171d5: 0xe000ac29, 0x171d6: 0xe0003248, 0x171d7: 0xe0003257,
+-	0x171d8: 0xe000325d, 0x171d9: 0xe0003254, 0x171da: 0xe0003278, 0x171db: 0xe000327e,
+-	0x171dc: 0xe0003284, 0x171dd: 0xe0003290, 0x171de: 0xf0001717, 0x171df: 0xe0001574,
+-	0x171e0: 0xe0001583, 0x171e1: 0xe000aa70, 0x171e2: 0xf0001818, 0x171e3: 0xe000aa97,
+-	0x171e4: 0xe00031a0, 0x171e5: 0xe000aaaf, 0x171e6: 0xe00031a9, 0x171e7: 0xe000ab0c,
+-	0x171e8: 0xe00031c7, 0x171e9: 0xe000ab3f, 0x171ea: 0xe00031d3, 0x171eb: 0xe0003221,
+-	0x171ec: 0xe000322d, 0x171ed: 0xe000abea, 0x171ee: 0xe000ac2c, 0x171ef: 0xe000324b,
+-	0x171f0: 0xe0003293, 0x171f1: 0xf0001818, 0x171f2: 0xe000aa52, 0x171f3: 0xe0003185,
+-	0x171f4: 0xe0003188, 0x171f5: 0xe00024de, 0x171f6: 0xe00031eb, 0x171f7: 0xe00024e4,
+-	0x171f8: 0xe00031f1, 0x171f9: 0xe00024ea, 0x171fa: 0xe00031f7, 0x171fb: 0xe00024c6,
+-	0x171fc: 0xe00031cd, 0x171fd: 0xe00024cc, 0x171fe: 0xe00031d9, 0x171ff: 0xe00024ba,
+-	// Block 0x5c8, offset 0x17200
+-	0x17200: 0xe00031bb, 0x17201: 0xe00024b4, 0x17202: 0xe00031b5, 0x17203: 0xe00024c0,
+-	0x17204: 0xe00031c1, 0x17205: 0xe00024d2, 0x17206: 0xe00031df, 0x17207: 0xe00024d8,
+-	0x17208: 0xe00031e5, 0x17209: 0xe000ab1b, 0x1720a: 0xe000ab27, 0x1720b: 0xe000ab33,
+-	0x1720c: 0xe000ab45, 0x1720d: 0xe000ab39, 0x1720e: 0xe000ab06, 0x1720f: 0xe000ab54,
+-	0x17210: 0xe000ab72, 0x17211: 0xe00024db, 0x17212: 0xe00031e8, 0x17213: 0xe00024e1,
+-	0x17214: 0xe00031ee, 0x17215: 0xe00024e7, 0x17216: 0xe00031f4, 0x17217: 0xe00024c3,
+-	0x17218: 0xe00031ca, 0x17219: 0xe00024c9, 0x1721a: 0xe00031d6, 0x1721b: 0xe00024b7,
+-	0x1721c: 0xe00031b8, 0x1721d: 0xe00024b1, 0x1721e: 0xe00031b2, 0x1721f: 0xe00024bd,
+-	0x17220: 0xe00031be, 0x17221: 0xe00024cf, 0x17222: 0xe00031dc, 0x17223: 0xe00024d5,
+-	0x17224: 0xe00031e2, 0x17225: 0xe000ab18, 0x17226: 0xe000ab24, 0x17227: 0xe000ab30,
+-	0x17228: 0xe000ab42, 0x17229: 0xe000ab36, 0x1722a: 0xe000ab03, 0x1722b: 0xe000ab51,
+-	0x1722c: 0xe000ab6f, 0x1722d: 0xe000ab12, 0x1722e: 0xe000ab1e, 0x1722f: 0xe000ab2a,
+-	0x17230: 0xe000ab3c, 0x17231: 0xe00031c4, 0x17232: 0xe00031d0, 0x17233: 0xe000ab81,
+-	0x17234: 0xe000aaeb, 0x17235: 0xe000aaf4, 0x17236: 0xe000aafd, 0x17237: 0xe000ab15,
+-	0x17238: 0xe000ab21, 0x17239: 0xe000ab2d, 0x1723a: 0xe000ab84, 0x1723b: 0xe000ab8d,
+-	0x1723c: 0xe000318b, 0x1723d: 0xe000318e, 0x1723e: 0x4004c020, 0x1723f: 0x4004c220,
+-	// Block 0x5c9, offset 0x17240
+-	0x17240: 0x0039de98, 0x17241: 0x0039e69a, 0x17242: 0x0039e699, 0x17243: 0x0039e697,
+-	0x17244: 0x0039e698, 0x17245: 0x0039e89a, 0x17246: 0x0039e899, 0x17247: 0x0039e897,
+-	0x17248: 0x0039e898, 0x17249: 0x0039ee9a, 0x1724a: 0x0039ee99, 0x1724b: 0x0039ee97,
+-	0x1724c: 0x0039ee98, 0x1724d: 0x0039f09a, 0x1724e: 0x0039f099, 0x1724f: 0x0039f097,
+-	0x17250: 0x0039f098, 0x17251: 0x0039fc9a, 0x17252: 0x0039fc99, 0x17253: 0x0039fc97,
+-	0x17254: 0x0039fc98, 0x17255: 0x003a129a, 0x17256: 0x003a1299, 0x17257: 0x003a1297,
+-	0x17258: 0x003a1298, 0x17259: 0x003a1a9a, 0x1725a: 0x003a1a99, 0x1725b: 0x003a1a97,
+-	0x1725c: 0x003a1a98, 0x1725d: 0x003a409a, 0x1725e: 0x003a4099, 0x1725f: 0x003a4097,
+-	0x17260: 0x003a4098, 0x17261: 0x003a4e9a, 0x17262: 0x003a4e99, 0x17263: 0x003a4e97,
+-	0x17264: 0x003a4e98, 0x17265: 0x003a569a, 0x17266: 0x003a5699, 0x17267: 0x003a5697,
+-	0x17268: 0x003a5698, 0x17269: 0x003a689a, 0x1726a: 0x003a6899, 0x1726b: 0x003a6897,
+-	0x1726c: 0x003a6898, 0x1726d: 0x003a749a, 0x1726e: 0x003a7499, 0x1726f: 0x003a8e9a,
+-	0x17270: 0x003a8e99, 0x17271: 0x003a909a, 0x17272: 0x003a9099, 0x17273: 0x003a9097,
+-	0x17274: 0x003a9098, 0x17275: 0xe0001732, 0x17276: 0xe000172f, 0x17277: 0xe0001738,
+-	0x17278: 0xe0001735, 0x17279: 0xe000173e, 0x1727a: 0xe000173b, 0x1727b: 0xe000abd2,
+-	0x1727c: 0xe000abcf, 0x1727f: 0xa0000000,
+-	// Block 0x5ca, offset 0x17280
+-	0x17280: 0xa0000000, 0x17281: 0xa0000000, 0x17282: 0xa0000000, 0x17283: 0xa0000000,
+-	0x17284: 0xa0000000, 0x17285: 0xa0000000, 0x17286: 0xa0000000, 0x17287: 0xa0000000,
+-	0x17288: 0xa0000000, 0x17289: 0x40020020, 0x1728a: 0x40020220, 0x1728b: 0x40020420,
+-	0x1728c: 0x40020620, 0x1728d: 0x40020820, 0x1728e: 0xa0000000, 0x1728f: 0xa0000000,
+-	0x17290: 0xa0000000, 0x17291: 0xa0000000, 0x17292: 0xa0000000, 0x17293: 0xa0000000,
+-	0x17294: 0xa0000000, 0x17295: 0xa0000000, 0x17296: 0xa0000000, 0x17297: 0xa0000000,
+-	0x17298: 0xa0000000, 0x17299: 0xa0000000, 0x1729a: 0xa0000000, 0x1729b: 0xa0000000,
+-	0x1729c: 0xa0000000, 0x1729d: 0xa0000000, 0x1729e: 0xa0000000, 0x1729f: 0xa0000000,
+-	0x172a0: 0x40021220, 0x172a1: 0x4002ba20, 0x172a2: 0x4003e020, 0x172a3: 0x4004ea20,
+-	0x172a4: 0x4027de20, 0x172a5: 0x4004ec20, 0x172a6: 0x4004e620, 0x172a7: 0x4003d220,
+-	0x172a8: 0x4003f420, 0x172a9: 0x4003f620, 0x172aa: 0x4004d820, 0x172ab: 0x40093820,
+-	0x172ac: 0x40024020, 0x172ad: 0x40021a20, 0x172ae: 0x4002e420, 0x172af: 0x4004e220,
+-	0x172b0: 0x4029cc20, 0x172b1: 0x4029ce20, 0x172b2: 0x4029d020, 0x172b3: 0x4029d220,
+-	0x172b4: 0x4029d420, 0x172b5: 0x4029d620, 0x172b6: 0x4029d820, 0x172b7: 0x4029da20,
+-	0x172b8: 0x4029dc20, 0x172b9: 0x4029de20, 0x172ba: 0x40026c20, 0x172bb: 0x40026220,
+-	0x172bc: 0x40094020, 0x172bd: 0x40094220, 0x172be: 0x40094420, 0x172bf: 0x4002c420,
+-	// Block 0x5cb, offset 0x172c0
+-	0x172c0: 0x4004d620, 0x172c1: 0xce4a94d1, 0x172c2: 0x002c0a88, 0x172c3: 0x002c3a88,
+-	0x172c4: 0x002c6288, 0x172c5: 0xce0a2741, 0x172c6: 0x002d0888, 0x172c7: 0x002d2288,
+-	0x172c8: 0x002d6888, 0x172c9: 0x002d9a88, 0x172ca: 0x002dcc88, 0x172cb: 0x002dfe88,
+-	0x172cc: 0xc0030002, 0x172cd: 0x002e8288, 0x172ce: 0x002e9e88, 0x172cf: 0xcf3d9801,
+-	0x172d0: 0x002f2c88, 0x172d1: 0x002f5688, 0x172d2: 0x002f7a88, 0x172d3: 0x002fe688,
+-	0x172d4: 0x00302c88, 0x172d5: 0xc3479831, 0x172d6: 0x0030be88, 0x172d7: 0x0030e288,
+-	0x172d8: 0x0030f688, 0x172d9: 0x00310088, 0x172da: 0x00312a88, 0x172db: 0x4003f820,
+-	0x172dc: 0x4004e420, 0x172dd: 0x4003fa20, 0x172de: 0x40062420, 0x172df: 0x40021620,
+-	0x172e0: 0x40061e20, 0x172e1: 0xce4794d1, 0x172e2: 0x402c0a20, 0x172e3: 0x402c3a20,
+-	0x172e4: 0x402c6220, 0x172e5: 0xce082741, 0x172e6: 0x402d0820, 0x172e7: 0x402d2220,
+-	0x172e8: 0x402d6820, 0x172e9: 0x402d9a20, 0x172ea: 0x402dcc20, 0x172eb: 0x402dfe20,
+-	0x172ec: 0xc0000002, 0x172ed: 0x402e8220, 0x172ee: 0x402e9e20, 0x172ef: 0xcf3a9801,
+-	0x172f0: 0x402f2c20, 0x172f1: 0x402f5620, 0x172f2: 0x402f7a20, 0x172f3: 0x402fe620,
+-	0x172f4: 0x40302c20, 0x172f5: 0xc3459831, 0x172f6: 0x4030be20, 0x172f7: 0x4030e220,
+-	0x172f8: 0x4030f620, 0x172f9: 0x40310020, 0x172fa: 0x40312a20, 0x172fb: 0x4003fc20,
+-	0x172fc: 0x40094820, 0x172fd: 0x4003fe20, 0x172fe: 0x40094c20, 0x172ff: 0xa0000000,
+-	// Block 0x5cc, offset 0x17300
+-	0x17300: 0xe00008f5, 0x17301: 0xe000ac59, 0x17302: 0x002be283, 0x17303: 0xe000ac53,
+-	0x17304: 0xe000095b, 0x17305: 0xe000094d, 0x17306: 0xe00009dd, 0x17307: 0xe0000a53,
+-	0x17308: 0xe0000ae8, 0x17309: 0xe000accd, 0x1730a: 0x002c9a83, 0x1730b: 0xe0000b20,
+-	0x1730c: 0xe0000c2b, 0x1730d: 0xe000ad11, 0x1730e: 0xe0000c37, 0x1730f: 0xe0000c43,
+-	0x17310: 0xe0000ab3, 0x17311: 0xe000ad51, 0x17312: 0xe0000d9a, 0x17313: 0xe000ad87,
+-	0x17314: 0x002ee483, 0x17315: 0xe000ad69, 0x17316: 0xe0000dd2, 0x17317: 0x40093e20,
+-	0x17318: 0xe0000e12, 0x17319: 0xe0000fe1, 0x1731a: 0xe000ae29, 0x1731b: 0xe0000fed,
+-	0x1731c: 0xe0000fff, 0x1731d: 0xe000ae79, 0x1731e: 0x00318888, 0x1731f: 0xe0000f7b,
+-	0x17320: 0xe00008f2, 0x17321: 0xe000ac56, 0x17322: 0x402be220, 0x17323: 0xe000ac50,
+-	0x17324: 0xe0000958, 0x17325: 0xe000094a, 0x17326: 0xe00009d5, 0x17327: 0xe0000a4d,
+-	0x17328: 0xe0000ae5, 0x17329: 0xe000acca, 0x1732a: 0x402c9a20, 0x1732b: 0xe0000b1d,
+-	0x1732c: 0xe0000c28, 0x1732d: 0xe000ad0e, 0x1732e: 0xe0000c34, 0x1732f: 0xe0000c40,
+-	0x17330: 0xe0000aad, 0x17331: 0xe000ad4e, 0x17332: 0xe0000d97, 0x17333: 0xe000ad84,
+-	0x17334: 0x402ee420, 0x17335: 0xe000ad66, 0x17336: 0xe0000dcf, 0x17337: 0x40093c20,
+-	0x17338: 0xe0000e0f, 0x17339: 0xe0000fde, 0x1733a: 0xe000ae26, 0x1733b: 0xe0000fea,
+-	0x1733c: 0xe0000ffc, 0x1733d: 0xe000ae76, 0x1733e: 0x40318820, 0x1733f: 0xe0001114,
+-	// Block 0x5cd, offset 0x17340
+-	0x17340: 0xe0000983, 0x17341: 0xe0000980, 0x17342: 0x002be083, 0x17343: 0x402be020,
+-	0x17344: 0xe000097d, 0x17345: 0xe000097a, 0x17346: 0xe000acad, 0x17347: 0xe000acaa,
+-	0x17348: 0xe0000a3e, 0x17349: 0xe0000a3b, 0x1734a: 0xe0000a4a, 0x1734b: 0xe0000a47,
+-	0x1734c: 0xe0000a44, 0x1734d: 0xe0000a41, 0x1734e: 0xe0000a86, 0x1734f: 0xe0000a83,
+-	0x17350: 0x002c6483, 0x17351: 0x402c6420, 0x17352: 0xe0000b46, 0x17353: 0xe0000b43,
+-	0x17354: 0xe0000aee, 0x17355: 0xe0000aeb, 0x17356: 0xe0000b2c, 0x17357: 0xe0000b29,
+-	0x17358: 0xe0000b40, 0x17359: 0xe0000b3d, 0x1735a: 0xe0000b1a, 0x1735b: 0xe0000b17,
+-	0x1735c: 0xe0000bb8, 0x1735d: 0xe0000bb5, 0x1735e: 0xe0000bb2, 0x1735f: 0xe0000baf,
+-	0x17360: 0xe0000bc4, 0x17361: 0xe0000bc1, 0x17362: 0xe0000bca, 0x17363: 0xe0000bc7,
+-	0x17364: 0xe0000bee, 0x17365: 0xe0000beb, 0x17366: 0xe0000c1b, 0x17367: 0xe0000c18,
+-	0x17368: 0xe000ad0b, 0x17369: 0xe000ad08, 0x1736a: 0xe0000c60, 0x1736b: 0xe0000c5d,
+-	0x1736c: 0xe0000c31, 0x1736d: 0xe0000c2e, 0x1736e: 0xe0000c5a, 0x1736f: 0xe0000c57,
+-	0x17370: 0xe0000c54, 0x17371: 0x402da220, 0x17372: 0xf0000a0a, 0x17373: 0xf0000404,
+-	0x17374: 0xe0000c8a, 0x17375: 0xe0000c87, 0x17376: 0xe0000c9f, 0x17377: 0xe0000c9c,
+-	0x17378: 0x402f7220, 0x17379: 0xe000ad31, 0x1737a: 0xe000ad2e, 0x1737b: 0xe0000cd8,
+-	0x1737c: 0xe0000cd5, 0x1737d: 0xe0000cd2, 0x1737e: 0xe0000ccf, 0x1737f: 0xe0000d04,
+-	// Block 0x5ce, offset 0x17380
+-	0x17380: 0xe0000cfe, 0x17381: 0xe0000cf8, 0x17382: 0xe0000cf5, 0x17383: 0xe000ad57,
+-	0x17384: 0xe000ad54, 0x17385: 0xe0000d6f, 0x17386: 0xe0000d6c, 0x17387: 0xe0000d5d,
+-	0x17388: 0xe0000d5a, 0x17389: 0xf0000404, 0x1738a: 0x002eda88, 0x1738b: 0x402eda20,
+-	0x1738c: 0xe0000e2e, 0x1738d: 0xe0000e2b, 0x1738e: 0xe0000da0, 0x1738f: 0xe0000d9d,
+-	0x17390: 0xe0000de0, 0x17391: 0xe0000ddd, 0x17392: 0xe0000e93, 0x17393: 0xe0000e8f,
+-	0x17394: 0xe000addf, 0x17395: 0xe000addc, 0x17396: 0xe0000edc, 0x17397: 0xe0000ed9,
+-	0x17398: 0xe0000ed0, 0x17399: 0xe0000ecd, 0x1739a: 0xe000adf3, 0x1739b: 0xe000adf0,
+-	0x1739c: 0xe0000f2d, 0x1739d: 0xe0000f2a, 0x1739e: 0xe0000f47, 0x1739f: 0xe0000f44,
+-	0x173a0: 0xe0000f33, 0x173a1: 0xe0000f30, 0x173a2: 0xe0000f99, 0x173a3: 0xe0000f96,
+-	0x173a4: 0xe0000f8a, 0x173a5: 0xe0000f87, 0x173a6: 0x00303688, 0x173a7: 0x40303620,
+-	0x173a8: 0xe000ae1b, 0x173a9: 0xe000ae18, 0x173aa: 0xe000103f, 0x173ab: 0xe000103c,
+-	0x173ac: 0xe0000fe7, 0x173ad: 0xe0000fe4, 0x173ae: 0xe0000ff9, 0x173af: 0xe0000ff6,
+-	0x173b0: 0xe0001025, 0x173b1: 0xe0001022, 0x173b2: 0xe0001039, 0x173b3: 0xe0001036,
+-	0x173b4: 0xe00010d8, 0x173b5: 0xe00010d5, 0x173b6: 0xe000110e, 0x173b7: 0xe000110b,
+-	0x173b8: 0xe0001117, 0x173b9: 0xe000ae85, 0x173ba: 0xe000ae82, 0x173bb: 0xe000114d,
+-	0x173bc: 0xe000114a, 0x173bd: 0xe0001147, 0x173be: 0xe0001144, 0x173bf: 0xe0000f64,
+-	// Block 0x5cf, offset 0x173c0
+-	0x173c0: 0x402c1a20, 0x173c1: 0x002c2a88, 0x173c2: 0x002c3288, 0x173c3: 0x402c3220,
+-	0x173c4: 0x0031c488, 0x173c5: 0x4031c420, 0x173c6: 0x002efa88, 0x173c7: 0x002c4e88,
+-	0x173c8: 0x402c4e20, 0x173c9: 0x002c7288, 0x173ca: 0x002c7a88, 0x173cb: 0x002c8488,
+-	0x173cc: 0x402c8420, 0x173cd: 0xe000115c, 0x173ce: 0x002cae88, 0x173cf: 0x002cb888,
+-	0x173d0: 0x002cc288, 0x173d1: 0x002d1688, 0x173d2: 0x402d1620, 0x173d3: 0x002d4488,
+-	0x173d4: 0x002d5888, 0x173d5: 0x402d7820, 0x173d6: 0x002dc288, 0x173d7: 0x002db688,
+-	0x173d8: 0x002e0a88, 0x173d9: 0x402e0a20, 0x173da: 0x402e3820, 0x173db: 0x402e7220,
+-	0x173dc: 0x0030a088, 0x173dd: 0x002eb488, 0x173de: 0x402ebc20, 0x173df: 0x002f1088,
+-	0x173e0: 0x002ee683, 0x173e1: 0x402ee620, 0x173e2: 0x002d6088, 0x173e3: 0x402d6020,
+-	0x173e4: 0x002f3e88, 0x173e5: 0x402f3e20, 0x173e6: 0x002f8288, 0x173e7: 0x0031b488,
+-	0x173e8: 0x4031b420, 0x173e9: 0x00300888, 0x173ea: 0x40301220, 0x173eb: 0x40304220,
+-	0x173ec: 0x00304a88, 0x173ed: 0x40304a20, 0x173ee: 0x00305288, 0x173ef: 0x00306e83,
+-	0x173f0: 0x40306e20, 0x173f1: 0x0030b488, 0x173f2: 0x0030cc88, 0x173f3: 0x00311888,
+-	0x173f4: 0x40311820, 0x173f5: 0x00313488, 0x173f6: 0x40313420, 0x173f7: 0x00316488,
+-	0x173f8: 0x00316e88, 0x173f9: 0x40316e20, 0x173fa: 0x40317820, 0x173fb: 0x4031a620,
+-	0x173fc: 0x0031bc88, 0x173fd: 0x4031bc20, 0x173fe: 0xe0000fc9, 0x173ff: 0x40319420,
+-	// Block 0x5d0, offset 0x17400
+-	0x17400: 0x40321220, 0x17401: 0x40321a20, 0x17402: 0x40322220, 0x17403: 0x40322a20,
+-	0x17404: 0xe0000ad5, 0x17405: 0xe0000ad1, 0x17406: 0xe0000acd, 0x17407: 0xf0000a0a,
+-	0x17408: 0xf000040a, 0x17409: 0xf0000404, 0x1740a: 0xf0000a0a, 0x1740b: 0xf000040a,
+-	0x1740c: 0xf0000404, 0x1740d: 0xe0000947, 0x1740e: 0xe0000944, 0x1740f: 0xe0000c3d,
+-	0x17410: 0xe0000c3a, 0x17411: 0xe0000dcc, 0x17412: 0xe0000dc9, 0x17413: 0xe0000ff3,
+-	0x17414: 0xe0000ff0, 0x17415: 0xe000101e, 0x17416: 0xe000101a, 0x17417: 0xe000ae36,
+-	0x17418: 0xe000ae32, 0x17419: 0xe0001016, 0x1741a: 0xe0001012, 0x1741b: 0xe000100e,
+-	0x1741c: 0xe000100a, 0x1741d: 0x402cae20, 0x1741e: 0xe0000962, 0x1741f: 0xe000095e,
+-	0x17420: 0xe0000976, 0x17421: 0xe0000972, 0x17422: 0xe00009f4, 0x17423: 0xe00009ef,
+-	0x17424: 0x002d3a88, 0x17425: 0x402d3a20, 0x17426: 0xe0000bbe, 0x17427: 0xe0000bbb,
+-	0x17428: 0xe0000c99, 0x17429: 0xe0000c96, 0x1742a: 0xe0000e20, 0x1742b: 0xe0000e1d,
+-	0x1742c: 0xe0000e27, 0x1742d: 0xe0000e23, 0x1742e: 0xe0001162, 0x1742f: 0xe000115f,
+-	0x17430: 0xe0000c8d, 0x17431: 0xf0000a0a, 0x17432: 0xf000040a, 0x17433: 0xf0000404,
+-	0x17434: 0xe000acf9, 0x17435: 0xe000acf6, 0x17436: 0x002d7888, 0x17437: 0x00319488,
+-	0x17438: 0xe0000d57, 0x17439: 0xe0000d54, 0x1743a: 0xe000ac66, 0x1743b: 0xe000ac62,
+-	0x1743c: 0xe000ac6f, 0x1743d: 0xe000ac6a, 0x1743e: 0xe000ad94, 0x1743f: 0xe000ad90,
+-	// Block 0x5d1, offset 0x17440
+-	0x17440: 0xe000098f, 0x17441: 0xe000098c, 0x17442: 0xe0000995, 0x17443: 0xe0000992,
+-	0x17444: 0xe0000b62, 0x17445: 0xe0000b5f, 0x17446: 0xe0000b68, 0x17447: 0xe0000b65,
+-	0x17448: 0xe0000c6c, 0x17449: 0xe0000c69, 0x1744a: 0xe0000c72, 0x1744b: 0xe0000c6f,
+-	0x1744c: 0xe0000e4a, 0x1744d: 0xe0000e47, 0x1744e: 0xe0000e50, 0x1744f: 0xe0000e4d,
+-	0x17450: 0xe0000ee8, 0x17451: 0xe0000ee5, 0x17452: 0xe0000eee, 0x17453: 0xe0000eeb,
+-	0x17454: 0xe0001053, 0x17455: 0xe0001050, 0x17456: 0xe0001059, 0x17457: 0xe0001056,
+-	0x17458: 0xe0000f61, 0x17459: 0xe0000f5e, 0x1745a: 0xe0000fa5, 0x1745b: 0xe0000fa2,
+-	0x1745c: 0x00312288, 0x1745d: 0x40312220, 0x1745e: 0xe0000bf4, 0x1745f: 0xe0000bf1,
+-	0x17460: 0x002ebc88, 0x17461: 0x402c8c20, 0x17462: 0x002f2288, 0x17463: 0x402f2220,
+-	0x17464: 0x00314088, 0x17465: 0x40314020, 0x17466: 0xe000096f, 0x17467: 0xe000096c,
+-	0x17468: 0xe0000b32, 0x17469: 0xe0000b2f, 0x1746a: 0xe0000dd9, 0x1746b: 0xe0000dd5,
+-	0x1746c: 0xe000ad80, 0x1746d: 0xe000ad7c, 0x1746e: 0xe0000e04, 0x1746f: 0xe0000e01,
+-	0x17470: 0xe0000e0b, 0x17471: 0xe0000e07, 0x17472: 0xe0001129, 0x17473: 0xe0001126,
+-	0x17474: 0x402e5e20, 0x17475: 0x402ed020, 0x17476: 0x40305a20, 0x17477: 0x402dd420,
+-	0x17478: 0xe0000abf, 0x17479: 0xe0000ec4, 0x1747a: 0x002be888, 0x1747b: 0x002c4488,
+-	0x1747c: 0x402c4420, 0x1747d: 0x002e3888, 0x1747e: 0x00303e88, 0x1747f: 0x402ffc20,
+-	// Block 0x5d2, offset 0x17480
+-	0x17480: 0xae603502, 0x17481: 0xae603802, 0x17482: 0xae603c02, 0x17483: 0xae603702,
+-	0x17484: 0xae605b02, 0x17485: 0xae606302, 0x17486: 0xae603702, 0x17487: 0xae605202,
+-	0x17488: 0xae604702, 0x17489: 0xae603602, 0x1748a: 0xae604302, 0x1748b: 0xae604d02,
+-	0x1748c: 0xae604102, 0x1748d: 0xae605f02, 0x1748e: 0xae605f02, 0x1748f: 0xae606502,
+-	0x17490: 0xae606602, 0x17491: 0xae606702, 0x17492: 0xae605f02, 0x17493: 0xae602202,
+-	0x17494: 0xae602a02, 0x17495: 0xae805f02, 0x17496: 0xadc06002, 0x17497: 0xadc06002,
+-	0x17498: 0xadc06002, 0x17499: 0xadc06002, 0x1749a: 0xae805f02, 0x1749b: 0xad806802,
+-	0x1749c: 0xadc06002, 0x1749d: 0xadc06002, 0x1749e: 0xadc06002, 0x1749f: 0xadc06002,
+-	0x174a0: 0xadc06002, 0x174a1: 0xaca06e02, 0x174a2: 0xaca06f02, 0x174a3: 0xae603902,
+-	0x174a4: 0xadc07502, 0x174a5: 0xadc07602, 0x174a6: 0xadc07702, 0x174a7: 0xaca05602,
+-	0x174a8: 0xaca05902, 0x174a9: 0xadc06002, 0x174aa: 0xadc06002, 0x174ab: 0xadc06002,
+-	0x174ac: 0xadc06002, 0x174ad: 0xadc07802, 0x174ae: 0xadc07902, 0x174af: 0xadc06002,
+-	0x174b0: 0xadc07a02, 0x174b1: 0xadc07b02, 0x174b2: 0xadc02102, 0x174b3: 0xadc06002,
+-	0x174b4: 0xa0107c02, 0x174b5: 0xa0107d02, 0x174b6: 0xa0106102, 0x174b7: 0xa0106102,
+-	0x174b8: 0xa0105402, 0x174b9: 0xadc07e02, 0x174ba: 0xadc06002, 0x174bb: 0xadc06002,
+-	0x174bc: 0xadc06002, 0x174bd: 0xae605f02, 0x174be: 0xae605f02, 0x174bf: 0xae605f02,
+-	// Block 0x5d3, offset 0x174c0
+-	0x174c0: 0xae603502, 0x174c1: 0xae603802, 0x174c2: 0xae604502, 0x174c3: 0xae602202,
+-	0x174c4: 0xe000ac3e, 0x174c5: 0xaf007f02, 0x174c6: 0xae605f02, 0x174c7: 0xadc06002,
+-	0x174c8: 0xadc06002, 0x174c9: 0xadc06002, 0x174ca: 0xae605f02, 0x174cb: 0xae605f02,
+-	0x174cc: 0xae605f02, 0x174cd: 0xadc06002, 0x174ce: 0xadc06002, 0x174cf: 0xa0000000,
+-	0x174d0: 0xae605f02, 0x174d1: 0xae605f02, 0x174d2: 0xae605f02, 0x174d3: 0xadc06002,
+-	0x174d4: 0xadc06002, 0x174d5: 0xadc06002, 0x174d6: 0xadc06002, 0x174d7: 0xae605f02,
+-	0x174d8: 0xae808002, 0x174d9: 0xadc06002, 0x174da: 0xadc06002, 0x174db: 0xae605f02,
+-	0x174dc: 0xae906002, 0x174dd: 0xaea05f02, 0x174de: 0xaea05f02, 0x174df: 0xae906002,
+-	0x174e0: 0xaea08102, 0x174e1: 0xaea08202, 0x174e2: 0xae906002, 0x174e3: 0x84e615ef,
+-	0x174e4: 0x84e6164c, 0x174e5: 0x84e616cd, 0x174e6: 0x84e61771, 0x174e7: 0x84e61836,
+-	0x174e8: 0x84e6161d, 0x174e9: 0x84e61631, 0x174ea: 0x84e616b4, 0x174eb: 0x84e61741,
+-	0x174ec: 0x84e617bd, 0x174ed: 0x84e61816, 0x174ee: 0x84e6185f, 0x174ef: 0x84e6187b,
+-	0x174f0: 0x00326688, 0x174f1: 0x40326620, 0x174f2: 0x0032a688, 0x174f3: 0x4032a620,
+-	0x174f4: 0x40064020, 0x174f5: 0x40064220, 0x174f6: 0x00326088, 0x174f7: 0x40326020,
+-	0x174fa: 0x00326c84, 0x174fb: 0x40329220,
+-	0x174fc: 0x40329020, 0x174fd: 0x40329420, 0x174fe: 0x40026220,
+-	// Block 0x5d4, offset 0x17500
+-	0x17504: 0x40062020, 0x17505: 0xe000ac41, 0x17506: 0xe000aeb5, 0x17507: 0x40030620,
+-	0x17508: 0xe000aecf, 0x17509: 0xe000aef9, 0x1750a: 0xe000af13,
+-	0x1750c: 0xe000af2d, 0x1750e: 0xe000af3f, 0x1750f: 0xe000af6d,
+-	0x17510: 0xe000af16, 0x17511: 0x00325288, 0x17512: 0x00325488, 0x17513: 0x00325688,
+-	0x17514: 0x00325a88, 0x17515: 0x00325c88, 0x17516: 0x00326488, 0x17517: 0x00326888,
+-	0x17518: 0x00326a88, 0x17519: 0x00326c88, 0x1751a: 0x00327088, 0x1751b: 0x00327288,
+-	0x1751c: 0x00327688, 0x1751d: 0x00327888, 0x1751e: 0x00327a88, 0x1751f: 0x00327c88,
+-	0x17520: 0x00327e88, 0x17521: 0x00328888, 0x17523: 0x00328e88,
+-	0x17524: 0x00329688, 0x17525: 0x00329888, 0x17526: 0x00329a88, 0x17527: 0x00329c88,
+-	0x17528: 0x00329e88, 0x17529: 0x0032a288, 0x1752a: 0xe000134f, 0x1752b: 0xe00013f2,
+-	0x1752c: 0xe000aeb2, 0x1752d: 0xe000aecc, 0x1752e: 0xe000aef6, 0x1752f: 0xe000af10,
+-	0x17530: 0xe000af42, 0x17531: 0x40325220, 0x17532: 0x40325420, 0x17533: 0x40325620,
+-	0x17534: 0x40325a20, 0x17535: 0x40325c20, 0x17536: 0x40326420, 0x17537: 0x40326820,
+-	0x17538: 0x40326a20, 0x17539: 0x40326c20, 0x1753a: 0x40327020, 0x1753b: 0x40327220,
+-	0x1753c: 0x40327620, 0x1753d: 0x40327820, 0x1753e: 0x40327a20, 0x1753f: 0x40327c20,
+-	// Block 0x5d5, offset 0x17540
+-	0x17540: 0x40327e20, 0x17541: 0x40328820, 0x17542: 0x00328e99, 0x17543: 0x40328e20,
+-	0x17544: 0x40329620, 0x17545: 0x40329820, 0x17546: 0x40329a20, 0x17547: 0x40329c20,
+-	0x17548: 0x40329e20, 0x17549: 0x4032a220, 0x1754a: 0xe000134c, 0x1754b: 0xe00013ef,
+-	0x1754c: 0xe000af2a, 0x1754d: 0xe000af3c, 0x1754e: 0xe000af6a, 0x1754f: 0xe0001368,
+-	0x17550: 0x00325484, 0x17551: 0x00326a84, 0x17552: 0x0032988a, 0x17553: 0xf000020a,
+-	0x17554: 0xf000020a, 0x17555: 0x00329a84, 0x17556: 0x00327e84, 0x17557: 0xe0001364,
+-	0x17558: 0x00328688, 0x17559: 0x40328620, 0x1755a: 0x00326288, 0x1755b: 0x40326220,
+-	0x1755c: 0x00325e88, 0x1755d: 0x40325e20, 0x1755e: 0x00328488, 0x1755f: 0x40328420,
+-	0x17560: 0x0032a488, 0x17561: 0x4032a420, 0x17562: 0x0032e888, 0x17563: 0x4032e820,
+-	0x17564: 0x0032f288, 0x17565: 0x4032f220, 0x17566: 0x0032f488, 0x17567: 0x4032f420,
+-	0x17568: 0x0032fa88, 0x17569: 0x4032fa20, 0x1756a: 0x00330888, 0x1756b: 0x40330820,
+-	0x1756c: 0x00330e88, 0x1756d: 0x40330e20, 0x1756e: 0x00331688, 0x1756f: 0x40331620,
+-	0x17570: 0x00327084, 0x17571: 0x00328884, 0x17572: 0x00328e84, 0x17573: 0x40326e20,
+-	0x17574: 0x00326a8a, 0x17575: 0x00325c84, 0x17576: 0x40092e20, 0x17577: 0x0032a888,
+-	0x17578: 0x4032a820, 0x17579: 0x00328e8a, 0x1757a: 0x00328288, 0x1757b: 0x40328220,
+-	0x1757c: 0x40328c20, 0x1757d: 0x00329288, 0x1757e: 0x00329088, 0x1757f: 0x00329488,
+-	// Block 0x5d6, offset 0x17580
+-	0x17580: 0xe00009b1, 0x17581: 0xe00009ae, 0x17582: 0xe0000a22, 0x17583: 0xe0000a1f,
+-	0x17584: 0xe000aca7, 0x17585: 0xe000aca4, 0x17586: 0xe0000a2e, 0x17587: 0xe0000a2b,
+-	0x17588: 0xe000acb4, 0x17589: 0xe000acb0, 0x1758a: 0xe0000a8c, 0x1758b: 0xe0000a89,
+-	0x1758c: 0xe000acbb, 0x1758d: 0xe000acb8, 0x1758e: 0xe0000aa4, 0x1758f: 0xe0000aa1,
+-	0x17590: 0xe0000a92, 0x17591: 0xe0000a8f, 0x17592: 0xe0000a9e, 0x17593: 0xe0000a9b,
+-	0x17594: 0xe0000b55, 0x17595: 0xe0000b51, 0x17596: 0xe000acda, 0x17597: 0xe000acd6,
+-	0x17598: 0xe0000b7c, 0x17599: 0xe0000b79, 0x1759a: 0xe0000b82, 0x1759b: 0xe0000b7f,
+-	0x1759c: 0xe0000b39, 0x1759d: 0xe0000b35, 0x1759e: 0xe0000b8c, 0x1759f: 0xe0000b89,
+-	0x175a0: 0xe0000bd0, 0x175a1: 0xe0000bcd, 0x175a2: 0xe0000c00, 0x175a3: 0xe0000bfd,
+-	0x175a4: 0xe000acff, 0x175a5: 0xe000acfc, 0x175a6: 0xe0000bfa, 0x175a7: 0xe0000bf7,
+-	0x175a8: 0xe0000c06, 0x175a9: 0xe0000c03, 0x175aa: 0xe0000c12, 0x175ab: 0xe0000c0f,
+-	0x175ac: 0xe0000c7e, 0x175ad: 0xe0000c7b, 0x175ae: 0xe000ad1e, 0x175af: 0xe000ad1a,
+-	0x175b0: 0xe000ad25, 0x175b1: 0xe000ad22, 0x175b2: 0xe000ad2b, 0x175b3: 0xe000ad28,
+-	0x175b4: 0xe0000cb1, 0x175b5: 0xe0000cae, 0x175b6: 0xe000ad37, 0x175b7: 0xe000ad34,
+-	0x175b8: 0xe000ad3e, 0x175b9: 0xe000ad3a, 0x175ba: 0xe0000cf2, 0x175bb: 0xe0000cef,
+-	0x175bc: 0xe0000cec, 0x175bd: 0xe0000ce9, 0x175be: 0xe000ad45, 0x175bf: 0xe000ad42,
+-	// Block 0x5d7, offset 0x175c0
+-	0x175c0: 0xe0000d24, 0x175c1: 0xe0000d21, 0x175c2: 0xe000ad4b, 0x175c3: 0xe000ad48,
+-	0x175c4: 0xe0000d69, 0x175c5: 0xe0000d66, 0x175c6: 0xe000ad5d, 0x175c7: 0xe000ad5a,
+-	0x175c8: 0xe0000d87, 0x175c9: 0xe0000d84, 0x175ca: 0xe0000d81, 0x175cb: 0xe0000d7e,
+-	0x175cc: 0xe000ad70, 0x175cd: 0xe000ad6c, 0x175ce: 0xe000ad78, 0x175cf: 0xe000ad74,
+-	0x175d0: 0xe0000e3d, 0x175d1: 0xe0000e39, 0x175d2: 0xe000ad9c, 0x175d3: 0xe000ad98,
+-	0x175d4: 0xe000add9, 0x175d5: 0xe000add6, 0x175d6: 0xe0000ead, 0x175d7: 0xe0000eaa,
+-	0x175d8: 0xe0000ed6, 0x175d9: 0xe0000ed3, 0x175da: 0xe000ade5, 0x175db: 0xe000ade2,
+-	0x175dc: 0xe000adec, 0x175dd: 0xe000ade8, 0x175de: 0xe0000f02, 0x175df: 0xe0000eff,
+-	0x175e0: 0xe0000f41, 0x175e1: 0xe0000f3e, 0x175e2: 0xe000ae01, 0x175e3: 0xe000adfe,
+-	0x175e4: 0xe000adfa, 0x175e5: 0xe000adf6, 0x175e6: 0xe0000f3a, 0x175e7: 0xe0000f36,
+-	0x175e8: 0xe000ae08, 0x175e9: 0xe000ae04, 0x175ea: 0xe0000f93, 0x175eb: 0xe0000f90,
+-	0x175ec: 0xe000ae0f, 0x175ed: 0xe000ae0c, 0x175ee: 0xe0000fb1, 0x175ef: 0xe0000fae,
+-	0x175f0: 0xe0000fab, 0x175f1: 0xe0000fa8, 0x175f2: 0xe0001093, 0x175f3: 0xe0001090,
+-	0x175f4: 0xe000109f, 0x175f5: 0xe000109c, 0x175f6: 0xe0001099, 0x175f7: 0xe0001096,
+-	0x175f8: 0xe000ae22, 0x175f9: 0xe000ae1e, 0x175fa: 0xe0001046, 0x175fb: 0xe0001042,
+-	0x175fc: 0xe000ae55, 0x175fd: 0xe000ae52, 0x175fe: 0xe000ae5b, 0x175ff: 0xe000ae58,
+-	// Block 0x5d8, offset 0x17600
+-	0x17600: 0xe00010d2, 0x17601: 0xe00010cf, 0x17602: 0xe000ae61, 0x17603: 0xe000ae5e,
+-	0x17604: 0xe00010e1, 0x17605: 0xe00010de, 0x17606: 0xe00010e7, 0x17607: 0xe00010e4,
+-	0x17608: 0xe000ae67, 0x17609: 0xe000ae64, 0x1760a: 0xe00010fc, 0x1760b: 0xe00010f9,
+-	0x1760c: 0xe00010f6, 0x1760d: 0xe00010f3, 0x1760e: 0xe0001123, 0x1760f: 0xe0001120,
+-	0x17610: 0xe0001141, 0x17611: 0xe000113e, 0x17612: 0xe000ae8b, 0x17613: 0xe000ae88,
+-	0x17614: 0xe0001159, 0x17615: 0xe0001156, 0x17616: 0xe0000c15, 0x17617: 0xe0000f8d,
+-	0x17618: 0xe00010db, 0x17619: 0xe0001111, 0x1761a: 0xf0000404, 0x1761b: 0xe0000f70,
+-	0x1761c: 0x40300420, 0x1761d: 0x40300620, 0x1761e: 0xe0000f7f, 0x1761f: 0x402c9620,
+-	0x17620: 0xe000ac5f, 0x17621: 0xe000ac5c, 0x17622: 0xe000ac4d, 0x17623: 0xe000ac4a,
+-	0x17624: 0xe000ac9b, 0x17625: 0xe000ac98, 0x17626: 0xe000340b, 0x17627: 0xe0003408,
+-	0x17628: 0xe000ac8f, 0x17629: 0xe000ac8c, 0x1762a: 0xe000ac95, 0x1762b: 0xe000ac92,
+-	0x1762c: 0xe000aca1, 0x1762d: 0xe000ac9e, 0x1762e: 0xe000ac83, 0x1762f: 0xe000ac80,
+-	0x17630: 0xe0003365, 0x17631: 0xe0003362, 0x17632: 0xe000ac77, 0x17633: 0xe000ac74,
+-	0x17634: 0xe000ac7d, 0x17635: 0xe000ac7a, 0x17636: 0xe000ac89, 0x17637: 0xe000ac86,
+-	0x17638: 0xe000acd3, 0x17639: 0xe000acd0, 0x1763a: 0xe000acc1, 0x1763b: 0xe000acbe,
+-	0x1763c: 0xe000acc7, 0x1763d: 0xe000acc4, 0x1763e: 0xe000aced, 0x1763f: 0xe000acea,
+-	// Block 0x5d9, offset 0x17640
+-	0x17640: 0xe000a902, 0x17641: 0xe000a8ff, 0x17642: 0xe000ace1, 0x17643: 0xe000acde,
+-	0x17644: 0xe000ace7, 0x17645: 0xe000ace4, 0x17646: 0xe000acf3, 0x17647: 0xe000acf0,
+-	0x17648: 0xe000ad05, 0x17649: 0xe000ad02, 0x1764a: 0xe000ad17, 0x1764b: 0xe000ad14,
+-	0x1764c: 0xe000ad8d, 0x1764d: 0xe000ad8a, 0x1764e: 0xe000ad63, 0x1764f: 0xe000ad60,
+-	0x17650: 0xe000adaf, 0x17651: 0xe000adac, 0x17652: 0xe000a920, 0x17653: 0xe000a91d,
+-	0x17654: 0xe000ada3, 0x17655: 0xe000ada0, 0x17656: 0xe000ada9, 0x17657: 0xe000ada6,
+-	0x17658: 0xe000adb5, 0x17659: 0xe000adb2, 0x1765a: 0xe000adcd, 0x1765b: 0xe000adca,
+-	0x1765c: 0xe000adbb, 0x1765d: 0xe000adb8, 0x1765e: 0xe000adc1, 0x1765f: 0xe000adbe,
+-	0x17660: 0xe000adc7, 0x17661: 0xe000adc4, 0x17662: 0xe000add3, 0x17663: 0xe000add0,
+-	0x17664: 0xe000ae2f, 0x17665: 0xe000ae2c, 0x17666: 0xe000ae15, 0x17667: 0xe000ae12,
+-	0x17668: 0xe000ae49, 0x17669: 0xe000ae46, 0x1766a: 0xe000259c, 0x1766b: 0xe0002599,
+-	0x1766c: 0xe000ae3d, 0x1766d: 0xe000ae3a, 0x1766e: 0xe000ae43, 0x1766f: 0xe000ae40,
+-	0x17670: 0xe000ae4f, 0x17671: 0xe000ae4c, 0x17672: 0xe0001108, 0x17673: 0xe0001105,
+-	0x17674: 0xe000ae7f, 0x17675: 0xe000ae7c, 0x17676: 0xe000ae6d, 0x17677: 0xe000ae6a,
+-	0x17678: 0xe000ae73, 0x17679: 0xe000ae70, 0x1767a: 0xe0000d0a, 0x1767b: 0xe0000d07,
+-	0x1767c: 0x0030d888, 0x1767d: 0x4030d820, 0x1767e: 0x00312088, 0x1767f: 0x40312020,
+-	// Block 0x5da, offset 0x17680
+-	0x17680: 0xe0001165, 0x17681: 0xe00011a9, 0x17682: 0xe000117d, 0x17683: 0xe00011c1,
+-	0x17684: 0xe000ae8e, 0x17685: 0xe000aea0, 0x17686: 0xe000118f, 0x17687: 0xe00011d3,
+-	0x17688: 0xe0001168, 0x17689: 0xe00011ac, 0x1768a: 0xe0001181, 0x1768b: 0xe00011c5,
+-	0x1768c: 0xe000ae92, 0x1768d: 0xe000aea4, 0x1768e: 0xe0001193, 0x1768f: 0xe00011d7,
+-	0x17690: 0xe000121a, 0x17691: 0xe0001230, 0x17692: 0xe0001228, 0x17693: 0xe000123e,
+-	0x17694: 0xe000aebc, 0x17695: 0xe000aec4,
+-	0x17698: 0xe000121d, 0x17699: 0xe0001233, 0x1769a: 0xe000122c, 0x1769b: 0xe0001242,
+-	0x1769c: 0xe000aec0, 0x1769d: 0xe000aec8,
+-	0x176a0: 0xe0001252, 0x176a1: 0xe0001296, 0x176a2: 0xe000126a, 0x176a3: 0xe00012ae,
+-	0x176a4: 0xe000aed2, 0x176a5: 0xe000aee4, 0x176a6: 0xe000127c, 0x176a7: 0xe00012c0,
+-	0x176a8: 0xe0001255, 0x176a9: 0xe0001299, 0x176aa: 0xe000126e, 0x176ab: 0xe00012b2,
+-	0x176ac: 0xe000aed6, 0x176ad: 0xe000aee8, 0x176ae: 0xe0001280, 0x176af: 0xe00012c4,
+-	0x176b0: 0xe00012fb, 0x176b1: 0xe0001319, 0x176b2: 0xe0001309, 0x176b3: 0xe0001327,
+-	0x176b4: 0xe000af00, 0x176b5: 0xe000af08, 0x176b6: 0xe0001311, 0x176b7: 0xe000132f,
+-	0x176b8: 0xe00012fe, 0x176b9: 0xe000131c, 0x176ba: 0xe000130d, 0x176bb: 0xe000132b,
+-	0x176bc: 0xe000af04, 0x176bd: 0xe000af0c, 0x176be: 0xe0001315, 0x176bf: 0xe0001333,
+-	// Block 0x5db, offset 0x176c0
+-	0x176c0: 0xe000136c, 0x176c1: 0xe0001382, 0x176c2: 0xe000137a, 0x176c3: 0xe0001390,
+-	0x176c4: 0xe000af1a, 0x176c5: 0xe000af22,
+-	0x176c8: 0xe000136f, 0x176c9: 0xe0001385, 0x176ca: 0xe000137e, 0x176cb: 0xe0001394,
+-	0x176cc: 0xe000af1e, 0x176cd: 0xe000af26,
+-	0x176d0: 0xe00013ad, 0x176d1: 0xe00013bc, 0x176d2: 0xe00013b4, 0x176d3: 0xe00013ca,
+-	0x176d4: 0xe000af30, 0x176d5: 0xe000af34, 0x176d6: 0xe00013b8, 0x176d7: 0xe00013d2,
+-	0x176d9: 0xe00013bf, 0x176db: 0xe00013ce,
+-	0x176dd: 0xe000af38, 0x176df: 0xe00013d6,
+-	0x176e0: 0xe0001407, 0x176e1: 0xe000144b, 0x176e2: 0xe000141f, 0x176e3: 0xe0001463,
+-	0x176e4: 0xe000af46, 0x176e5: 0xe000af58, 0x176e6: 0xe0001431, 0x176e7: 0xe0001475,
+-	0x176e8: 0xe000140a, 0x176e9: 0xe000144e, 0x176ea: 0xe0001423, 0x176eb: 0xe0001467,
+-	0x176ec: 0xe000af4a, 0x176ed: 0xe000af5c, 0x176ee: 0xe0001435, 0x176ef: 0xe0001479,
+-	0x176f0: 0xe00011f7, 0x176f1: 0xe000aeb2, 0x176f2: 0xe000124c, 0x176f3: 0xe000aecc,
+-	0x176f4: 0xe00012e4, 0x176f5: 0xe000aef6, 0x176f6: 0xe000133d, 0x176f7: 0xe000af10,
+-	0x176f8: 0xe000139e, 0x176f9: 0xe000af2a, 0x176fa: 0xe00013e0, 0x176fb: 0xe000af3c,
+-	0x176fc: 0xe0001499, 0x176fd: 0xe000af6a,
+-	// Block 0x5dc, offset 0x17700
+-	0x17700: 0xe00011a1, 0x17701: 0xe00011e5, 0x17702: 0xe0001185, 0x17703: 0xe00011c9,
+-	0x17704: 0xe000ae96, 0x17705: 0xe000aea8, 0x17706: 0xe0001197, 0x17707: 0xe00011db,
+-	0x17708: 0xe00011a5, 0x17709: 0xe00011e9, 0x1770a: 0xe000118a, 0x1770b: 0xe00011ce,
+-	0x1770c: 0xe000ae9b, 0x1770d: 0xe000aead, 0x1770e: 0xe000119c, 0x1770f: 0xe00011e0,
+-	0x17710: 0xe000128e, 0x17711: 0xe00012d2, 0x17712: 0xe0001272, 0x17713: 0xe00012b6,
+-	0x17714: 0xe000aeda, 0x17715: 0xe000aeec, 0x17716: 0xe0001284, 0x17717: 0xe00012c8,
+-	0x17718: 0xe0001292, 0x17719: 0xe00012d6, 0x1771a: 0xe0001277, 0x1771b: 0xe00012bb,
+-	0x1771c: 0xe000aedf, 0x1771d: 0xe000aef1, 0x1771e: 0xe0001289, 0x1771f: 0xe00012cd,
+-	0x17720: 0xe0001443, 0x17721: 0xe0001487, 0x17722: 0xe0001427, 0x17723: 0xe000146b,
+-	0x17724: 0xe000af4e, 0x17725: 0xe000af60, 0x17726: 0xe0001439, 0x17727: 0xe000147d,
+-	0x17728: 0xe0001447, 0x17729: 0xe000148b, 0x1772a: 0xe000142c, 0x1772b: 0xe0001470,
+-	0x1772c: 0xe000af53, 0x1772d: 0xe000af65, 0x1772e: 0xe000143e, 0x1772f: 0xe0001482,
+-	0x17730: 0xe0001201, 0x17731: 0xe000120e, 0x17732: 0xe00011fd, 0x17733: 0xe0001214,
+-	0x17734: 0xe000aeb8, 0x17736: 0xe0001207, 0x17737: 0xe000120a,
+-	0x17738: 0xe0001204, 0x17739: 0xe0001211, 0x1773a: 0xe00011fa, 0x1773b: 0xe000aeb5,
+-	0x1773c: 0xe0001217, 0x1773d: 0x40063620, 0x1773e: 0x40326c20, 0x1773f: 0x40063620,
+-	// Block 0x5dd, offset 0x17740
+-	0x17740: 0x40063a20, 0x17741: 0xe00000b1, 0x17742: 0xe00012ea, 0x17743: 0xe00012f5,
+-	0x17744: 0xe000aefc, 0x17746: 0xe00012ee, 0x17747: 0xe00012f1,
+-	0x17748: 0xe000124f, 0x17749: 0xe000aecf, 0x1774a: 0xe00012e7, 0x1774b: 0xe000aef9,
+-	0x1774c: 0xe00012f8, 0x1774d: 0xe00000b7, 0x1774e: 0xe000ac44, 0x1774f: 0xe00000ba,
+-	0x17750: 0xe0001343, 0x17751: 0xe000135e, 0x17752: 0xe0001356, 0x17753: 0xe000af16,
+-	0x17756: 0xe0001349, 0x17757: 0xe000135a,
+-	0x17758: 0xe0001346, 0x17759: 0xe0001361, 0x1775a: 0xe0001340, 0x1775b: 0xe000af13,
+-	0x1775d: 0xe00000c0, 0x1775e: 0xe000ac47, 0x1775f: 0xe00000c3,
+-	0x17760: 0xe00013e6, 0x17761: 0xe0001401, 0x17762: 0xe00013f9, 0x17763: 0xe000af42,
+-	0x17764: 0xe00013a4, 0x17765: 0xe00013a7, 0x17766: 0xe00013ec, 0x17767: 0xe00013fd,
+-	0x17768: 0xe00013e9, 0x17769: 0xe0001404, 0x1776a: 0xe00013e3, 0x1776b: 0xe000af3f,
+-	0x1776c: 0xe00013aa, 0x1776d: 0xe00000ae, 0x1776e: 0xe000ac41, 0x1776f: 0x40061e20,
+-	0x17772: 0xe000149f, 0x17773: 0xe00014aa,
+-	0x17774: 0xe000af70, 0x17776: 0xe00014a3, 0x17777: 0xe00014a6,
+-	0x17778: 0xe00013a1, 0x17779: 0xe000af2d, 0x1777a: 0xe000149c, 0x1777b: 0xe000af6d,
+-	0x1777c: 0xe00014ad, 0x1777d: 0x40062020, 0x1777e: 0x40063820,
+-	// Block 0x5de, offset 0x17780
+-	0x17780: 0xa0000000, 0x17781: 0xa0000000, 0x17782: 0xa0000000, 0x17783: 0xa0000000,
+-	0x17784: 0xa0000000, 0x17785: 0xa0000000, 0x17786: 0xa0000000, 0x17787: 0xa0000000,
+-	0x17788: 0xa0000000, 0x17789: 0x40020020, 0x1778a: 0x40020220, 0x1778b: 0x40020420,
+-	0x1778c: 0x40020620, 0x1778d: 0x40020820, 0x1778e: 0xa0000000, 0x1778f: 0xa0000000,
+-	0x17790: 0xa0000000, 0x17791: 0xa0000000, 0x17792: 0xa0000000, 0x17793: 0xa0000000,
+-	0x17794: 0xa0000000, 0x17795: 0xa0000000, 0x17796: 0xa0000000, 0x17797: 0xa0000000,
+-	0x17798: 0xa0000000, 0x17799: 0xa0000000, 0x1779a: 0xa0000000, 0x1779b: 0xa0000000,
+-	0x1779c: 0xa0000000, 0x1779d: 0xa0000000, 0x1779e: 0xa0000000, 0x1779f: 0xa0000000,
+-	0x177a0: 0x40021220, 0x177a1: 0x4002ba20, 0x177a2: 0x4003e020, 0x177a3: 0x4004ea20,
+-	0x177a4: 0x4027de20, 0x177a5: 0x4004ec20, 0x177a6: 0x4004e620, 0x177a7: 0x4003d220,
+-	0x177a8: 0x4003f420, 0x177a9: 0x4003f620, 0x177aa: 0x4004d820, 0x177ab: 0x40093820,
+-	0x177ac: 0x40024020, 0x177ad: 0x40021a20, 0x177ae: 0x4002e420, 0x177af: 0x4004e220,
+-	0x177b0: 0x4029cc20, 0x177b1: 0x4029ce20, 0x177b2: 0x4029d020, 0x177b3: 0x4029d220,
+-	0x177b4: 0x4029d420, 0x177b5: 0x4029d620, 0x177b6: 0x4029d820, 0x177b7: 0x4029da20,
+-	0x177b8: 0x4029dc20, 0x177b9: 0x4029de20, 0x177ba: 0x40026c20, 0x177bb: 0x40026220,
+-	0x177bc: 0x40094020, 0x177bd: 0x40094220, 0x177be: 0x40094420, 0x177bf: 0x4002c420,
+-	// Block 0x5df, offset 0x177c0
+-	0x177c0: 0x4004d620, 0x177c1: 0x002bde88, 0x177c2: 0x002c0a88, 0x177c3: 0x002c3a88,
+-	0x177c4: 0x002c6288, 0x177c5: 0x002c9888, 0x177c6: 0x002d0888, 0x177c7: 0x002d2288,
+-	0x177c8: 0x002d6888, 0x177c9: 0x002d9a88, 0x177ca: 0x002dcc88, 0x177cb: 0x002dfe88,
+-	0x177cc: 0xc0030002, 0x177cd: 0x002e8288, 0x177ce: 0x002e9e88, 0x177cf: 0x002ee288,
+-	0x177d0: 0x002f2c88, 0x177d1: 0x002f5688, 0x177d2: 0x002f7a88, 0x177d3: 0x002fe688,
+-	0x177d4: 0x00302c88, 0x177d5: 0x00306c88, 0x177d6: 0x0030be88, 0x177d7: 0x0030e288,
+-	0x177d8: 0x0030f688, 0x177d9: 0x00310088, 0x177da: 0x00312a88, 0x177db: 0x4003f820,
+-	0x177dc: 0x4004e420, 0x177dd: 0x4003fa20, 0x177de: 0x40062420, 0x177df: 0x40021620,
+-	0x177e0: 0x40061e20, 0x177e1: 0xcf409852, 0x177e2: 0x402c0a20, 0x177e3: 0xcf4509b1,
+-	0x177e4: 0x402c6220, 0x177e5: 0xcf4798d1, 0x177e6: 0x402d0820, 0x177e7: 0x402d2220,
+-	0x177e8: 0x402d6820, 0x177e9: 0xcf4998e1, 0x177ea: 0x402dcc20, 0x177eb: 0x402dfe20,
+-	0x177ec: 0xc0000002, 0x177ed: 0x402e8220, 0x177ee: 0x402e9e20, 0x177ef: 0xcf4b98f2,
+-	0x177f0: 0x402f2c20, 0x177f1: 0x402f5620, 0x177f2: 0x402f7a20, 0x177f3: 0xcf509971,
+-	0x177f4: 0x40302c20, 0x177f5: 0xcf529992, 0x177f6: 0x4030be20, 0x177f7: 0x4030e220,
+-	0x177f8: 0x4030f620, 0x177f9: 0x40310020, 0x177fa: 0x40312a20, 0x177fb: 0x4003fc20,
+-	0x177fc: 0x40094820, 0x177fd: 0x4003fe20, 0x177fe: 0x40094c20, 0x177ff: 0xa0000000,
+-	// Block 0x5e0, offset 0x17800
+-	0x17800: 0xe00008f5, 0x17801: 0xe00008ef, 0x17802: 0xe0000921, 0x17803: 0xe0000969,
+-	0x17804: 0xe000095b, 0x17805: 0xe000094d, 0x17806: 0xe00009dd, 0x17807: 0xe0000a53,
+-	0x17808: 0xe0000ae8, 0x17809: 0xe0000ae2, 0x1780a: 0xe0000af4, 0x1780b: 0xe0000b20,
+-	0x1780c: 0xe0000c2b, 0x1780d: 0xe0000c25, 0x1780e: 0xe0000c37, 0x1780f: 0xe0000c43,
+-	0x17810: 0xe0000ab3, 0x17811: 0xe0000d63, 0x17812: 0xe0000d9a, 0x17813: 0xe0000d94,
+-	0x17814: 0xe0000da6, 0x17815: 0xe0000de6, 0x17816: 0xe0000dd2, 0x17817: 0x40093e20,
+-	0x17818: 0xe0000e12, 0x17819: 0xe0000fe1, 0x1781a: 0xe0000fdb, 0x1781b: 0xe0000fed,
+-	0x1781c: 0xe0000fff, 0x1781d: 0xe0001102, 0x1781e: 0x00318888, 0x1781f: 0xe0000f7b,
+-	0x17820: 0xe00008f2, 0x17821: 0xe00008ec, 0x17822: 0xe000091e, 0x17823: 0xe0000966,
+-	0x17824: 0xcf4398b1, 0x17825: 0xe000094a, 0x17826: 0xe00009d5, 0x17827: 0xe0000a4d,
+-	0x17828: 0xe0000ae5, 0x17829: 0xe0000adf, 0x1782a: 0xe0000af1, 0x1782b: 0xe0000b1d,
+-	0x1782c: 0xe0000c28, 0x1782d: 0xe0000c22, 0x1782e: 0xe0000c34, 0x1782f: 0xe0000c40,
+-	0x17830: 0xe0000aad, 0x17831: 0xe0000d60, 0x17832: 0xe0000d97, 0x17833: 0xe0000d91,
+-	0x17834: 0xe0000da3, 0x17835: 0xe0000de3, 0x17836: 0xcf4e9951, 0x17837: 0x40093c20,
+-	0x17838: 0xe0000e0f, 0x17839: 0xe0000fde, 0x1783a: 0xe0000fd8, 0x1783b: 0xe0000fea,
+-	0x1783c: 0xcf5599f1, 0x1783d: 0xe00010ff, 0x1783e: 0x40318820, 0x1783f: 0xe0001114,
+-	// Block 0x5e1, offset 0x17840
+-	0x17840: 0xa0000000, 0x17841: 0xa0000000, 0x17842: 0xa0000000, 0x17843: 0xa0000000,
+-	0x17844: 0xa0000000, 0x17845: 0xa0000000, 0x17846: 0xa0000000, 0x17847: 0xa0000000,
+-	0x17848: 0xa0000000, 0x17849: 0x40020020, 0x1784a: 0x40020220, 0x1784b: 0x40020420,
+-	0x1784c: 0x40020620, 0x1784d: 0x40020820, 0x1784e: 0xa0000000, 0x1784f: 0xa0000000,
+-	0x17850: 0xa0000000, 0x17851: 0xa0000000, 0x17852: 0xa0000000, 0x17853: 0xa0000000,
+-	0x17854: 0xa0000000, 0x17855: 0xa0000000, 0x17856: 0xa0000000, 0x17857: 0xa0000000,
+-	0x17858: 0xa0000000, 0x17859: 0xa0000000, 0x1785a: 0xa0000000, 0x1785b: 0xa0000000,
+-	0x1785c: 0xa0000000, 0x1785d: 0xa0000000, 0x1785e: 0xa0000000, 0x1785f: 0xa0000000,
+-	0x17860: 0x40021220, 0x17861: 0x4002ba20, 0x17862: 0x4003e020, 0x17863: 0x4004ea20,
+-	0x17864: 0x4027de20, 0x17865: 0x4004ec20, 0x17866: 0x4004e620, 0x17867: 0x4003d220,
+-	0x17868: 0x4003f420, 0x17869: 0x4003f620, 0x1786a: 0x4004d820, 0x1786b: 0x40093820,
+-	0x1786c: 0x40024020, 0x1786d: 0x40021a20, 0x1786e: 0x4002e420, 0x1786f: 0x4004e220,
+-	0x17870: 0x4029cc20, 0x17871: 0x4029ce20, 0x17872: 0x4029d020, 0x17873: 0x4029d220,
+-	0x17874: 0x4029d420, 0x17875: 0x4029d620, 0x17876: 0x4029d820, 0x17877: 0x4029da20,
+-	0x17878: 0x4029dc20, 0x17879: 0x4029de20, 0x1787a: 0x40026c20, 0x1787b: 0x40026220,
+-	0x1787c: 0x40094020, 0x1787d: 0x40094220, 0x1787e: 0x40094420, 0x1787f: 0x4002c420,
+-	// Block 0x5e2, offset 0x17880
+-	0x17880: 0x4004d620, 0x17881: 0x002bde88, 0x17882: 0x002c0a88, 0x17883: 0x002c3a88,
+-	0x17884: 0x002c6288, 0x17885: 0xce0a3041, 0x17886: 0x002d0888, 0x17887: 0xc51f2692,
+-	0x17888: 0x002d6888, 0x17889: 0x002d9a88, 0x1788a: 0x002dcc88, 0x1788b: 0x002dfe88,
+-	0x1788c: 0xc0030002, 0x1788d: 0x002e8288, 0x1788e: 0x002e9e88, 0x1788f: 0xc33f3041,
+-	0x17890: 0x002f2c88, 0x17891: 0x002f5688, 0x17892: 0x002f7a88, 0x17893: 0xc3433041,
+-	0x17894: 0x00302c88, 0x17895: 0x00306c88, 0x17896: 0x0030be88, 0x17897: 0x0030e288,
+-	0x17898: 0x0030f688, 0x17899: 0x00310088, 0x1789a: 0x00312a88, 0x1789b: 0x4003f820,
+-	0x1789c: 0x4004e420, 0x1789d: 0x4003fa20, 0x1789e: 0x40062420, 0x1789f: 0x40021620,
+-	0x178a0: 0x40061e20, 0x178a1: 0x402bde20, 0x178a2: 0x402c0a20, 0x178a3: 0x402c3a20,
+-	0x178a4: 0x402c6220, 0x178a5: 0xce083041, 0x178a6: 0x402d0820, 0x178a7: 0xc3372681,
+-	0x178a8: 0x402d6820, 0x178a9: 0x402d9a20, 0x178aa: 0x402dcc20, 0x178ab: 0x402dfe20,
+-	0x178ac: 0xc0000002, 0x178ad: 0x402e8220, 0x178ae: 0x402e9e20, 0x178af: 0xc33d3041,
+-	0x178b0: 0x402f2c20, 0x178b1: 0x402f5620, 0x178b2: 0x402f7a20, 0x178b3: 0xc3413041,
+-	0x178b4: 0x40302c20, 0x178b5: 0x40306c20, 0x178b6: 0x4030be20, 0x178b7: 0x4030e220,
+-	0x178b8: 0x4030f620, 0x178b9: 0x40310020, 0x178ba: 0x40312a20, 0x178bb: 0x4003fc20,
+-	0x178bc: 0x40094820, 0x178bd: 0x4003fe20, 0x178be: 0x40094c20, 0x178bf: 0xa0000000,
+-	// Block 0x5e3, offset 0x178c0
+-	0x178c0: 0xe0000d24, 0x178c1: 0xe0000d21, 0x178c2: 0xe0000d2a, 0x178c3: 0xe0000d27,
+-	0x178c4: 0xe0000d69, 0x178c5: 0xe0000d66, 0x178c6: 0xe0000d7b, 0x178c7: 0xe0000d78,
+-	0x178c8: 0xe0000d87, 0x178c9: 0xe0000d84, 0x178ca: 0xe0000d81, 0x178cb: 0xe0000d7e,
+-	0x178cc: 0xe0000ded, 0x178cd: 0xe0000de9, 0x178ce: 0xe0000df5, 0x178cf: 0xe0000df1,
+-	0x178d0: 0xe0000e3d, 0x178d1: 0xe0000e39, 0x178d2: 0xe0000e35, 0x178d3: 0xe0000e31,
+-	0x178d4: 0xe0000ea7, 0x178d5: 0xe0000ea4, 0x178d6: 0xe0000ead, 0x178d7: 0xe0000eaa,
+-	0x178d8: 0xe0000ed6, 0x178d9: 0xe0000ed3, 0x178da: 0xe0000ef4, 0x178db: 0xe0000ef1,
+-	0x178dc: 0xe0000efb, 0x178dd: 0xe0000ef7, 0x178de: 0xe0000f02, 0x178df: 0xe0000eff,
+-	0x178e0: 0xe0000f41, 0x178e1: 0xe0000f3e, 0x178e2: 0x002fe883, 0x178e3: 0x402fe820,
+-	0x178e4: 0xe0000f26, 0x178e5: 0xe0000f22, 0x178e6: 0xe0000f3a, 0x178e7: 0xe0000f36,
+-	0x178e8: 0xe00025c3, 0x178e9: 0xe00025c0, 0x178ea: 0xe0000f93, 0x178eb: 0xe0000f90,
+-	0x178ec: 0xe0000f9f, 0x178ed: 0xe0000f9c, 0x178ee: 0xe0000fb1, 0x178ef: 0xe0000fae,
+-	0x178f0: 0xe0000fab, 0x178f1: 0xe0000fa8, 0x178f2: 0xe0001093, 0x178f3: 0xe0001090,
+-	0x178f4: 0xe000109f, 0x178f5: 0xe000109c, 0x178f6: 0xe0001099, 0x178f7: 0xe0001096,
+-	0x178f8: 0xe0001032, 0x178f9: 0xe000102e, 0x178fa: 0xe0001046, 0x178fb: 0xe0001042,
+-	0x178fc: 0xe00010a9, 0x178fd: 0xe00010a6, 0x178fe: 0xe00010af, 0x178ff: 0xe00010ac,
+-	// Block 0x5e4, offset 0x17900
+-	0x17900: 0xe00010d2, 0x17901: 0xe00010cf, 0x17902: 0xe00010cc, 0x17903: 0xe00010c9,
+-	0x17904: 0xe00010e1, 0x17905: 0xe00010de, 0x17906: 0xe00010e7, 0x17907: 0xe00010e4,
+-	0x17908: 0xe00010ed, 0x17909: 0xe00010ea, 0x1790a: 0xe00010fc, 0x1790b: 0xe00010f9,
+-	0x1790c: 0xe00010f6, 0x1790d: 0xe00010f3, 0x1790e: 0xe0001123, 0x1790f: 0xe0001120,
+-	0x17910: 0xe0001141, 0x17911: 0xe000113e, 0x17912: 0xe0001153, 0x17913: 0xe0001150,
+-	0x17914: 0xe0001159, 0x17915: 0xe0001156, 0x17916: 0xe0000c15, 0x17917: 0xe0000f8d,
+-	0x17918: 0xe00010db, 0x17919: 0xe0001111, 0x1791a: 0xf0000404, 0x1791b: 0xe0000f70,
+-	0x1791c: 0x40300420, 0x1791d: 0x40300620, 0x1791e: 0xe0000f7f, 0x1791f: 0x402c9620,
+-	0x17920: 0xe000099b, 0x17921: 0xe0000998, 0x17922: 0xe0000989, 0x17923: 0xe0000986,
+-	0x17924: 0xe0000928, 0x17925: 0xe0000924, 0x17926: 0xe0000930, 0x17927: 0xe000092c,
+-	0x17928: 0xe0000940, 0x17929: 0xe000093c, 0x1792a: 0xe0000938, 0x1792b: 0xe0000934,
+-	0x1792c: 0xe00009aa, 0x1792d: 0xe00009a6, 0x1792e: 0xe0000902, 0x1792f: 0xe00008fe,
+-	0x17930: 0xe000090a, 0x17931: 0xe0000906, 0x17932: 0xe000091a, 0x17933: 0xe0000916,
+-	0x17934: 0xe0000912, 0x17935: 0xe000090e, 0x17936: 0xe00009a2, 0x17937: 0xe000099e,
+-	0x17938: 0x002c9a83, 0x17939: 0x402c9a20, 0x1793a: 0xe0000b5c, 0x1793b: 0xe0000b59,
+-	0x1793c: 0xe0000b26, 0x1793d: 0xe0000b23, 0x1793e: 0xe0000afb, 0x1793f: 0xe0000af7,
+-	// Block 0x5e5, offset 0x17940
+-	0x17940: 0xe0000b03, 0x17941: 0xe0000aff, 0x17942: 0xe0000b13, 0x17943: 0xe0000b0f,
+-	0x17944: 0xe0000b0b, 0x17945: 0xe0000b07, 0x17946: 0xe000af86, 0x17947: 0xe000af83,
+-	0x17948: 0xe0000c66, 0x17949: 0xe0000c63, 0x1794a: 0xe0000c78, 0x1794b: 0xe0000c75,
+-	0x1794c: 0x002ee483, 0x1794d: 0x402ee420, 0x1794e: 0xe0000e44, 0x1794f: 0xe0000e41,
+-	0x17950: 0xe0000dad, 0x17951: 0xe0000da9, 0x17952: 0xe0000db5, 0x17953: 0xe0000db1,
+-	0x17954: 0xe0000dc5, 0x17955: 0xe0000dc1, 0x17956: 0xe0000dbd, 0x17957: 0xe0000db9,
+-	0x17958: 0xe000375b, 0x17959: 0xe0003758, 0x1795a: 0xe0000e5d, 0x1795b: 0xe0000e59,
+-	0x1795c: 0xe0000e65, 0x1795d: 0xe0000e61, 0x1795e: 0xe0000e75, 0x1795f: 0xe0000e71,
+-	0x17960: 0xe0000e6d, 0x17961: 0xe0000e69, 0x17962: 0xe0003761, 0x17963: 0xe000375e,
+-	0x17964: 0xe000108d, 0x17965: 0xe000108a, 0x17966: 0xe000104d, 0x17967: 0xe000104a,
+-	0x17968: 0xe0001066, 0x17969: 0xe0001062, 0x1796a: 0xe000106e, 0x1796b: 0xe000106a,
+-	0x1796c: 0xe000107e, 0x1796d: 0xe000107a, 0x1796e: 0xe0001076, 0x1796f: 0xe0001072,
+-	0x17970: 0xe0001086, 0x17971: 0xe0001082, 0x17972: 0xe0001108, 0x17973: 0xe0001105,
+-	0x17974: 0xe0001135, 0x17975: 0xe0001132, 0x17976: 0xe000112f, 0x17977: 0xe000112c,
+-	0x17978: 0xe000111d, 0x17979: 0xe000111a, 0x1797a: 0xe0000d0a, 0x1797b: 0xe0000d07,
+-	0x1797c: 0x0030d888, 0x1797d: 0x4030d820, 0x1797e: 0x00312088, 0x1797f: 0x40312020,
+-	// Block 0x5e6, offset 0x17980
+-	0x17980: 0xa0000000, 0x17981: 0xa0000000, 0x17982: 0xa0000000, 0x17983: 0xa0000000,
+-	0x17984: 0xa0000000, 0x17985: 0xa0000000, 0x17986: 0xa0000000, 0x17987: 0xa0000000,
+-	0x17988: 0xa0000000, 0x17989: 0x40020020, 0x1798a: 0x40020220, 0x1798b: 0x40020420,
+-	0x1798c: 0x40020620, 0x1798d: 0x40020820, 0x1798e: 0xa0000000, 0x1798f: 0xa0000000,
+-	0x17990: 0xa0000000, 0x17991: 0xa0000000, 0x17992: 0xa0000000, 0x17993: 0xa0000000,
+-	0x17994: 0xa0000000, 0x17995: 0xa0000000, 0x17996: 0xa0000000, 0x17997: 0xa0000000,
+-	0x17998: 0xa0000000, 0x17999: 0xa0000000, 0x1799a: 0xa0000000, 0x1799b: 0xa0000000,
+-	0x1799c: 0xa0000000, 0x1799d: 0xa0000000, 0x1799e: 0xa0000000, 0x1799f: 0xa0000000,
+-	0x179a0: 0x40021220, 0x179a1: 0x4002ba20, 0x179a2: 0x4003e020, 0x179a3: 0x4004ea20,
+-	0x179a4: 0x4027de20, 0x179a5: 0x4004ec20, 0x179a6: 0x4004e620, 0x179a7: 0x4003d220,
+-	0x179a8: 0x4003f420, 0x179a9: 0x4003f620, 0x179aa: 0x4004d820, 0x179ab: 0x40093820,
+-	0x179ac: 0x40024020, 0x179ad: 0x40021a20, 0x179ae: 0x4002e420, 0x179af: 0x4004e220,
+-	0x179b0: 0x4029cc20, 0x179b1: 0x4029ce20, 0x179b2: 0x4029d020, 0x179b3: 0x4029d220,
+-	0x179b4: 0x4029d420, 0x179b5: 0x4029d620, 0x179b6: 0x4029d820, 0x179b7: 0x4029da20,
+-	0x179b8: 0x4029dc20, 0x179b9: 0x4029de20, 0x179ba: 0x40026c20, 0x179bb: 0x40026220,
+-	0x179bc: 0x40094020, 0x179bd: 0x40094220, 0x179be: 0x40094420, 0x179bf: 0x4002c420,
+-	// Block 0x5e7, offset 0x179c0
+-	0x179c0: 0x4004d620, 0x179c1: 0xcf5c9a11, 0x179c2: 0x002c0a88, 0x179c3: 0x002c3a88,
+-	0x179c4: 0x002c6288, 0x179c5: 0xcf6a9a51, 0x179c6: 0x002d0888, 0x179c7: 0x002d2288,
+-	0x179c8: 0x002d6888, 0x179c9: 0xcf7e9a11, 0x179ca: 0x002dcc88, 0x179cb: 0x002dfe88,
+-	0x179cc: 0xc0030002, 0x179cd: 0xcf889a11, 0x179ce: 0xcf929a11, 0x179cf: 0xcf9c9a11,
+-	0x179d0: 0x002f2c88, 0x179d1: 0x002f5688, 0x179d2: 0x002f7a88, 0x179d3: 0x002fe688,
+-	0x179d4: 0x00302c88, 0x179d5: 0xcfab9b11, 0x179d6: 0x0030be88, 0x179d7: 0x0030e288,
+-	0x179d8: 0x0030f688, 0x179d9: 0x00310088, 0x179da: 0x00312a88, 0x179db: 0x4003f820,
+-	0x179dc: 0x4004e420, 0x179dd: 0x4003fa20, 0x179de: 0x40062420, 0x179df: 0x40021620,
+-	0x179e0: 0x40061e20, 0x179e1: 0xcf579a11, 0x179e2: 0x402c0a20, 0x179e3: 0x402c3a20,
+-	0x179e4: 0x402c6220, 0x179e5: 0xcf619a51, 0x179e6: 0x402d0820, 0x179e7: 0x402d2220,
+-	0x179e8: 0x402d6820, 0x179e9: 0xcf799a11, 0x179ea: 0x402dcc20, 0x179eb: 0x402dfe20,
+-	0x179ec: 0xc0000002, 0x179ed: 0xcf839a11, 0x179ee: 0xcf8d9a11, 0x179ef: 0xcf979a11,
+-	0x179f0: 0x402f2c20, 0x179f1: 0x402f5620, 0x179f2: 0x402f7a20, 0x179f3: 0x402fe620,
+-	0x179f4: 0x40302c20, 0x179f5: 0xcfa19b11, 0x179f6: 0x4030be20, 0x179f7: 0x4030e220,
+-	0x179f8: 0x4030f620, 0x179f9: 0x40310020, 0x179fa: 0x40312a20, 0x179fb: 0x4003fc20,
+-	0x179fc: 0x40094820, 0x179fd: 0x4003fe20, 0x179fe: 0x40094c20, 0x179ff: 0xa0000000,
+-	// Block 0x5e8, offset 0x17a00
+-	0x17a00: 0x002bde63, 0x17a01: 0x002bde23, 0x17a02: 0xe0000921, 0x17a03: 0xe0000969,
+-	0x17a04: 0xe000095b, 0x17a05: 0xe000094d, 0x17a06: 0xe00009dd, 0x17a07: 0xe0000a53,
+-	0x17a08: 0x002c9863, 0x17a09: 0x002c9823, 0x17a0a: 0xcf769ae1, 0x17a0b: 0xe0000b20,
+-	0x17a0c: 0x002d9a63, 0x17a0d: 0x002d9a23, 0x17a0e: 0xe0000c37, 0x17a0f: 0xe0000c43,
+-	0x17a10: 0xe0000ab3, 0x17a11: 0xe0000d63, 0x17a12: 0x002ee263, 0x17a13: 0x002ee223,
+-	0x17a14: 0xe0000da6, 0x17a15: 0xe0000de6, 0x17a16: 0xe0000dd2, 0x17a17: 0x40093e20,
+-	0x17a18: 0xe0000e12, 0x17a19: 0x00306c63, 0x17a1a: 0x00306c23, 0x17a1b: 0xe0000fed,
+-	0x17a1c: 0x00306d23, 0x17a1d: 0xe0001102, 0x17a1e: 0x00318888, 0x17a1f: 0xe0000f7b,
+-	0x17a20: 0x402bde1f, 0x17a21: 0x402bde1d, 0x17a22: 0xe000091e, 0x17a23: 0xe0000966,
+-	0x17a24: 0xe0000958, 0x17a25: 0xe000094a, 0x17a26: 0xe00009d5, 0x17a27: 0xe0000a4d,
+-	0x17a28: 0x402c981f, 0x17a29: 0x402c981d, 0x17a2a: 0xcf739ae1, 0x17a2b: 0xe0000b1d,
+-	0x17a2c: 0x402d9a1f, 0x17a2d: 0x402d9a1d, 0x17a2e: 0xe0000c34, 0x17a2f: 0xe0000c40,
+-	0x17a30: 0xe0000aad, 0x17a31: 0xe0000d60, 0x17a32: 0x402ee21f, 0x17a33: 0x402ee21d,
+-	0x17a34: 0xe0000da3, 0x17a35: 0xe0000de3, 0x17a36: 0xe0000dcf, 0x17a37: 0x40093c20,
+-	0x17a38: 0xe0000e0f, 0x17a39: 0x40306c1f, 0x17a3a: 0x40306c1d, 0x17a3b: 0xe0000fea,
+-	0x17a3c: 0x40306c25, 0x17a3d: 0xe00010ff, 0x17a3e: 0x40318820, 0x17a3f: 0xe0001114,
+-	// Block 0x5e9, offset 0x17a40
+-	0x17a40: 0x002bde03, 0x17a41: 0x402bde1c, 0x17a42: 0xe00008fb, 0x17a43: 0xe00008f8,
+-	0x17a44: 0xe000097d, 0x17a45: 0xe000097a, 0x17a46: 0xe0000a38, 0x17a47: 0xe0000a35,
+-	0x17a48: 0xe0000a3e, 0x17a49: 0xe0000a3b, 0x17a4a: 0xe0000a4a, 0x17a4b: 0xe0000a47,
+-	0x17a4c: 0xe0000a44, 0x17a4d: 0xe0000a41, 0x17a4e: 0xe0000a86, 0x17a4f: 0xe0000a83,
+-	0x17a50: 0xe0000aaa, 0x17a51: 0xe0000aa7, 0x17a52: 0x002c9803, 0x17a53: 0x402c981c,
+-	0x17a54: 0xe0000aee, 0x17a55: 0xe0000aeb, 0x17a56: 0xe0000b2c, 0x17a57: 0xe0000b29,
+-	0x17a58: 0xe0000b40, 0x17a59: 0xe0000b3d, 0x17a5a: 0x002c9843, 0x17a5b: 0x402c981e,
+-	0x17a5c: 0xe0000bb8, 0x17a5d: 0xe0000bb5, 0x17a5e: 0xe0000bb2, 0x17a5f: 0xe0000baf,
+-	0x17a60: 0xe0000bc4, 0x17a61: 0xe0000bc1, 0x17a62: 0xe0000bca, 0x17a63: 0xe0000bc7,
+-	0x17a64: 0xe0000bee, 0x17a65: 0xe0000beb, 0x17a66: 0xe0000c1b, 0x17a67: 0xe0000c18,
+-	0x17a68: 0xe0000c51, 0x17a69: 0xe0000c4e, 0x17a6a: 0x002d9a03, 0x17a6b: 0x402d9a1c,
+-	0x17a6c: 0xe0000c31, 0x17a6d: 0xe0000c2e, 0x17a6e: 0xe0000c5a, 0x17a6f: 0xe0000c57,
+-	0x17a70: 0xe0000c54, 0x17a71: 0x402da220, 0x17a72: 0xf0000a0a, 0x17a73: 0xf0000404,
+-	0x17a74: 0xe0000c8a, 0x17a75: 0xe0000c87, 0x17a76: 0xe0000c9f, 0x17a77: 0xe0000c9c,
+-	0x17a78: 0x402f7220, 0x17a79: 0xe0000ccc, 0x17a7a: 0xe0000cc9, 0x17a7b: 0xe0000cd8,
+-	0x17a7c: 0xe0000cd5, 0x17a7d: 0xe0000cd2, 0x17a7e: 0xe0000ccf, 0x17a7f: 0xe0000d04,
+-	// Block 0x5ea, offset 0x17a80
+-	0x17a80: 0xe0000cfe, 0x17a81: 0xe0000cf8, 0x17a82: 0xe0000cf5, 0x17a83: 0x002e9e23,
+-	0x17a84: 0x402e9e1d, 0x17a85: 0xe0000d6f, 0x17a86: 0xe0000d6c, 0x17a87: 0x002e9e43,
+-	0x17a88: 0x402e9e1e, 0x17a89: 0xf0000404, 0x17a8a: 0x002eda88, 0x17a8b: 0x402eda20,
+-	0x17a8c: 0x002ee203, 0x17a8d: 0x402ee21c, 0x17a8e: 0xe0000da0, 0x17a8f: 0xe0000d9d,
+-	0x17a90: 0xe0000de0, 0x17a91: 0xe0000ddd, 0x17a92: 0xe0000e93, 0x17a93: 0xe0000e8f,
+-	0x17a94: 0xe0000eca, 0x17a95: 0xe0000ec7, 0x17a96: 0xe0000edc, 0x17a97: 0xe0000ed9,
+-	0x17a98: 0xe0000ed0, 0x17a99: 0xe0000ecd, 0x17a9a: 0xe0000f1f, 0x17a9b: 0xe0000f1c,
+-	0x17a9c: 0xe0000f2d, 0x17a9d: 0xe0000f2a, 0x17a9e: 0xe0000f47, 0x17a9f: 0xe0000f44,
+-	0x17aa0: 0xe0000f33, 0x17aa1: 0xe0000f30, 0x17aa2: 0xe0000f99, 0x17aa3: 0xe0000f96,
+-	0x17aa4: 0xe0000f8a, 0x17aa5: 0xe0000f87, 0x17aa6: 0x00303688, 0x17aa7: 0x40303620,
+-	0x17aa8: 0xe000102b, 0x17aa9: 0xe0001028, 0x17aaa: 0x00306c03, 0x17aab: 0x40306c1c,
+-	0x17aac: 0xe0000fe7, 0x17aad: 0xe0000fe4, 0x17aae: 0xe0000ff9, 0x17aaf: 0xe0000ff6,
+-	0x17ab0: 0xe0001025, 0x17ab1: 0xe0001022, 0x17ab2: 0xe0001039, 0x17ab3: 0xe0001036,
+-	0x17ab4: 0xe00010d8, 0x17ab5: 0xe00010d5, 0x17ab6: 0xe000110e, 0x17ab7: 0xe000110b,
+-	0x17ab8: 0xe0001117, 0x17ab9: 0xe000113b, 0x17aba: 0xe0001138, 0x17abb: 0xe000114d,
+-	0x17abc: 0xe000114a, 0x17abd: 0xe0001147, 0x17abe: 0xe0001144, 0x17abf: 0xe0000f64,
+-	// Block 0x5eb, offset 0x17ac0
+-	0x17ac0: 0x40321220, 0x17ac1: 0x40321a20, 0x17ac2: 0x40322220, 0x17ac3: 0x40322a20,
+-	0x17ac4: 0xe0000ad5, 0x17ac5: 0xe0000ad1, 0x17ac6: 0xe0000acd, 0x17ac7: 0xf0000a0a,
+-	0x17ac8: 0xf000040a, 0x17ac9: 0xf0000404, 0x17aca: 0xf0000a0a, 0x17acb: 0xf000040a,
+-	0x17acc: 0xf0000404, 0x17acd: 0x002bde43, 0x17ace: 0x402bde1e, 0x17acf: 0x002d9a43,
+-	0x17ad0: 0x402d9a1e, 0x17ad1: 0x002ee243, 0x17ad2: 0x402ee21e, 0x17ad3: 0x00306c43,
+-	0x17ad4: 0x40306c1e, 0x17ad5: 0x00306ca3, 0x17ad6: 0x40306c21, 0x17ad7: 0x00306cc3,
+-	0x17ad8: 0x40306c22, 0x17ad9: 0x00306ce3, 0x17ada: 0x40306c23, 0x17adb: 0x00306d03,
+-	0x17adc: 0x40306c24, 0x17add: 0x402cae20, 0x17ade: 0xe000b0e0, 0x17adf: 0xe000b0dd,
+-	0x17ae0: 0xe000b0e6, 0x17ae1: 0xe000b0e3, 0x17ae2: 0xe00009f4, 0x17ae3: 0xe00009ef,
+-	0x17ae4: 0x002d3a88, 0x17ae5: 0x402d3a20, 0x17ae6: 0xe0000bbe, 0x17ae7: 0xe0000bbb,
+-	0x17ae8: 0xe0000c99, 0x17ae9: 0xe0000c96, 0x17aea: 0xe0000e20, 0x17aeb: 0xe0000e1d,
+-	0x17aec: 0xe000b13a, 0x17aed: 0xe000b137, 0x17aee: 0xe0001162, 0x17aef: 0xe000115f,
+-	0x17af0: 0xe0000c8d, 0x17af1: 0xf0000a0a, 0x17af2: 0xf000040a, 0x17af3: 0xf0000404,
+-	0x17af4: 0xe0000bac, 0x17af5: 0xe0000ba9, 0x17af6: 0x002d7888, 0x17af7: 0x00319488,
+-	0x17af8: 0x002e9e63, 0x17af9: 0x402e9e1f, 0x17afa: 0xe000b0f8, 0x17afb: 0xe000b0f5,
+-	0x17afc: 0xe00009ea, 0x17afd: 0xe00009e5, 0x17afe: 0xe0000e19, 0x17aff: 0xe0000e15,
+-	// Block 0x5ec, offset 0x17b00
+-	0x17b00: 0xe000098f, 0x17b01: 0xe000098c, 0x17b02: 0xe0000995, 0x17b03: 0xe0000992,
+-	0x17b04: 0xe0000b62, 0x17b05: 0xe0000b5f, 0x17b06: 0xe0000b68, 0x17b07: 0xe0000b65,
+-	0x17b08: 0xe0000c6c, 0x17b09: 0xe0000c69, 0x17b0a: 0xe0000c72, 0x17b0b: 0xe0000c6f,
+-	0x17b0c: 0xe0000e4a, 0x17b0d: 0xe0000e47, 0x17b0e: 0xe0000e50, 0x17b0f: 0xe0000e4d,
+-	0x17b10: 0xe0000ee8, 0x17b11: 0xe0000ee5, 0x17b12: 0xe0000eee, 0x17b13: 0xe0000eeb,
+-	0x17b14: 0xe0001053, 0x17b15: 0xe0001050, 0x17b16: 0xe0001059, 0x17b17: 0xe0001056,
+-	0x17b18: 0xe0000f61, 0x17b19: 0xe0000f5e, 0x17b1a: 0xe0000fa5, 0x17b1b: 0xe0000fa2,
+-	0x17b1c: 0x00312288, 0x17b1d: 0x40312220, 0x17b1e: 0xe0000bf4, 0x17b1f: 0xe0000bf1,
+-	0x17b20: 0x002ebc88, 0x17b21: 0x402c8c20, 0x17b22: 0x002f2288, 0x17b23: 0x402f2220,
+-	0x17b24: 0x00314088, 0x17b25: 0x40314020, 0x17b26: 0xe000096f, 0x17b27: 0xe000096c,
+-	0x17b28: 0xe0000b32, 0x17b29: 0xe0000b2f, 0x17b2a: 0xe000b128, 0x17b2b: 0xe000b125,
+-	0x17b2c: 0xe000b12e, 0x17b2d: 0xe000b12b, 0x17b2e: 0xe0000e04, 0x17b2f: 0xe0000e01,
+-	0x17b30: 0xe000b134, 0x17b31: 0xe000b131, 0x17b32: 0xe0001129, 0x17b33: 0xe0001126,
+-	0x17b34: 0x402e5e20, 0x17b35: 0x402ed020, 0x17b36: 0x40305a20, 0x17b37: 0x402dd420,
+-	0x17b38: 0xe0000abf, 0x17b39: 0xe0000ec4, 0x17b3a: 0x002be888, 0x17b3b: 0x002c4488,
+-	0x17b3c: 0x402c4420, 0x17b3d: 0x002e3888, 0x17b3e: 0x00303e88, 0x17b3f: 0x402ffc20,
+-	// Block 0x5ed, offset 0x17b40
+-	0x17b40: 0xe00009b1, 0x17b41: 0xe00009ae, 0x17b42: 0xe0000a22, 0x17b43: 0xe0000a1f,
+-	0x17b44: 0xe0000a28, 0x17b45: 0xe0000a25, 0x17b46: 0xe0000a2e, 0x17b47: 0xe0000a2b,
+-	0x17b48: 0xe0000a5a, 0x17b49: 0xe0000a56, 0x17b4a: 0xe0000a8c, 0x17b4b: 0xe0000a89,
+-	0x17b4c: 0xe0000a98, 0x17b4d: 0xe0000a95, 0x17b4e: 0xe0000aa4, 0x17b4f: 0xe0000aa1,
+-	0x17b50: 0xe0000a92, 0x17b51: 0xe0000a8f, 0x17b52: 0xe0000a9e, 0x17b53: 0xe0000a9b,
+-	0x17b54: 0xe000b110, 0x17b55: 0xe000b10d, 0x17b56: 0xe000b10a, 0x17b57: 0xe000b107,
+-	0x17b58: 0xe0000b7c, 0x17b59: 0xe0000b79, 0x17b5a: 0xe0000b82, 0x17b5b: 0xe0000b7f,
+-	0x17b5c: 0xe0000b39, 0x17b5d: 0xe0000b35, 0x17b5e: 0xe0000b8c, 0x17b5f: 0xe0000b89,
+-	0x17b60: 0xe0000bd0, 0x17b61: 0xe0000bcd, 0x17b62: 0xe0000c00, 0x17b63: 0xe0000bfd,
+-	0x17b64: 0xe0000c0c, 0x17b65: 0xe0000c09, 0x17b66: 0xe0000bfa, 0x17b67: 0xe0000bf7,
+-	0x17b68: 0xe0000c06, 0x17b69: 0xe0000c03, 0x17b6a: 0xe0000c12, 0x17b6b: 0xe0000c0f,
+-	0x17b6c: 0xe0000c7e, 0x17b6d: 0xe0000c7b, 0x17b6e: 0xe000b116, 0x17b6f: 0xe000b113,
+-	0x17b70: 0xe0000c93, 0x17b71: 0xe0000c90, 0x17b72: 0xe0000cab, 0x17b73: 0xe0000ca8,
+-	0x17b74: 0xe0000cb1, 0x17b75: 0xe0000cae, 0x17b76: 0xe0000cde, 0x17b77: 0xe0000cdb,
+-	0x17b78: 0xe0000ce5, 0x17b79: 0xe0000ce1, 0x17b7a: 0xe0000cf2, 0x17b7b: 0xe0000cef,
+-	0x17b7c: 0xe0000cec, 0x17b7d: 0xe0000ce9, 0x17b7e: 0x002e8223, 0x17b7f: 0x402e821d,
+-	// Block 0x5ee, offset 0x17b80
+-	0x17b80: 0xe0000d24, 0x17b81: 0xe0000d21, 0x17b82: 0xe0000d2a, 0x17b83: 0xe0000d27,
+-	0x17b84: 0xe0000d69, 0x17b85: 0xe0000d66, 0x17b86: 0xe0000d7b, 0x17b87: 0xe0000d78,
+-	0x17b88: 0xe0000d87, 0x17b89: 0xe0000d84, 0x17b8a: 0xe0000d81, 0x17b8b: 0xe0000d7e,
+-	0x17b8c: 0xe000b146, 0x17b8d: 0xe000b143, 0x17b8e: 0xe0000df5, 0x17b8f: 0xe0000df1,
+-	0x17b90: 0xe000b122, 0x17b91: 0xe000b11f, 0x17b92: 0xe000b11c, 0x17b93: 0xe000b119,
+-	0x17b94: 0xe0000ea7, 0x17b95: 0xe0000ea4, 0x17b96: 0xe0000ead, 0x17b97: 0xe0000eaa,
+-	0x17b98: 0xe0000ed6, 0x17b99: 0xe0000ed3, 0x17b9a: 0xe0000ef4, 0x17b9b: 0xe0000ef1,
+-	0x17b9c: 0xe0000efb, 0x17b9d: 0xe0000ef7, 0x17b9e: 0xe0000f02, 0x17b9f: 0xe0000eff,
+-	0x17ba0: 0xe0000f41, 0x17ba1: 0xe0000f3e, 0x17ba2: 0xe0000f53, 0x17ba3: 0xe0000f50,
+-	0x17ba4: 0xe0000f26, 0x17ba5: 0xe0000f22, 0x17ba6: 0xe0000f3a, 0x17ba7: 0xe0000f36,
+-	0x17ba8: 0xe0000f5a, 0x17ba9: 0xe0000f56, 0x17baa: 0xe0000f93, 0x17bab: 0xe0000f90,
+-	0x17bac: 0xe0000f9f, 0x17bad: 0xe0000f9c, 0x17bae: 0xe0000fb1, 0x17baf: 0xe0000fae,
+-	0x17bb0: 0xe0000fab, 0x17bb1: 0xe0000fa8, 0x17bb2: 0xe0001093, 0x17bb3: 0xe0001090,
+-	0x17bb4: 0xe000109f, 0x17bb5: 0xe000109c, 0x17bb6: 0xe0001099, 0x17bb7: 0xe0001096,
+-	0x17bb8: 0xe000b164, 0x17bb9: 0xe000b161, 0x17bba: 0xe000b15e, 0x17bbb: 0xe000b15b,
+-	0x17bbc: 0xe00010a9, 0x17bbd: 0xe00010a6, 0x17bbe: 0xe00010af, 0x17bbf: 0xe00010ac,
+-	// Block 0x5ef, offset 0x17bc0
+-	0x17bc0: 0xe00010d2, 0x17bc1: 0xe00010cf, 0x17bc2: 0xe00010cc, 0x17bc3: 0xe00010c9,
+-	0x17bc4: 0xe00010e1, 0x17bc5: 0xe00010de, 0x17bc6: 0xe00010e7, 0x17bc7: 0xe00010e4,
+-	0x17bc8: 0xe00010ed, 0x17bc9: 0xe00010ea, 0x17bca: 0xe00010fc, 0x17bcb: 0xe00010f9,
+-	0x17bcc: 0xe00010f6, 0x17bcd: 0xe00010f3, 0x17bce: 0xe0001123, 0x17bcf: 0xe0001120,
+-	0x17bd0: 0xe0001141, 0x17bd1: 0xe000113e, 0x17bd2: 0xe0001153, 0x17bd3: 0xe0001150,
+-	0x17bd4: 0xe0001159, 0x17bd5: 0xe0001156, 0x17bd6: 0xe0000c15, 0x17bd7: 0xe0000f8d,
+-	0x17bd8: 0xe00010db, 0x17bd9: 0xe0001111, 0x17bda: 0xf0000404, 0x17bdb: 0xe0000f70,
+-	0x17bdc: 0x40300420, 0x17bdd: 0x40300620, 0x17bde: 0xe0000f7f, 0x17bdf: 0x402c9620,
+-	0x17be0: 0xe000099b, 0x17be1: 0xe0000998, 0x17be2: 0xe0000989, 0x17be3: 0xe0000986,
+-	0x17be4: 0xe000b0f2, 0x17be5: 0xe000b0ef, 0x17be6: 0xe000b104, 0x17be7: 0xe000b101,
+-	0x17be8: 0xe0000940, 0x17be9: 0xe000093c, 0x17bea: 0xe0000938, 0x17beb: 0xe0000934,
+-	0x17bec: 0xe00009aa, 0x17bed: 0xe00009a6, 0x17bee: 0xe000b0ec, 0x17bef: 0xe000b0e9,
+-	0x17bf0: 0xe000b0fe, 0x17bf1: 0xe000b0fb, 0x17bf2: 0xe000091a, 0x17bf3: 0xe0000916,
+-	0x17bf4: 0xe0000912, 0x17bf5: 0xe000090e, 0x17bf6: 0xe00009a2, 0x17bf7: 0xe000099e,
+-	0x17bf8: 0xe0000b6e, 0x17bf9: 0xe0000b6b, 0x17bfa: 0xe0000b5c, 0x17bfb: 0xe0000b59,
+-	0x17bfc: 0xe0000b26, 0x17bfd: 0xe0000b23, 0x17bfe: 0x002c98c3, 0x17bff: 0x402c9822,
+-	// Block 0x5f0, offset 0x17c00
+-	0x17c00: 0x002c9903, 0x17c01: 0x402c9824, 0x17c02: 0xe0000b13, 0x17c03: 0xe0000b0f,
+-	0x17c04: 0xe0000b0b, 0x17c05: 0xe0000b07, 0x17c06: 0xe0000b75, 0x17c07: 0xe0000b71,
+-	0x17c08: 0xe0000c66, 0x17c09: 0xe0000c63, 0x17c0a: 0xe0000c78, 0x17c0b: 0xe0000c75,
+-	0x17c0c: 0xe0000e84, 0x17c0d: 0xe0000e81, 0x17c0e: 0xe0000e44, 0x17c0f: 0xe0000e41,
+-	0x17c10: 0xe000b140, 0x17c11: 0xe000b13d, 0x17c12: 0xe000b152, 0x17c13: 0xe000b14f,
+-	0x17c14: 0xe0000dc5, 0x17c15: 0xe0000dc1, 0x17c16: 0xe0000dbd, 0x17c17: 0xe0000db9,
+-	0x17c18: 0xe0000e8b, 0x17c19: 0xe0000e87, 0x17c1a: 0xe000b14c, 0x17c1b: 0xe000b149,
+-	0x17c1c: 0xe000b158, 0x17c1d: 0xe000b155, 0x17c1e: 0xe0000e75, 0x17c1f: 0xe0000e71,
+-	0x17c20: 0xe0000e6d, 0x17c21: 0xe0000e69, 0x17c22: 0xe0000e7d, 0x17c23: 0xe0000e79,
+-	0x17c24: 0xe000108d, 0x17c25: 0xe000108a, 0x17c26: 0xe000104d, 0x17c27: 0xe000104a,
+-	0x17c28: 0xe000b16a, 0x17c29: 0xe000b167, 0x17c2a: 0xe000b170, 0x17c2b: 0xe000b16d,
+-	0x17c2c: 0xe000107e, 0x17c2d: 0xe000107a, 0x17c2e: 0xe0001076, 0x17c2f: 0xe0001072,
+-	0x17c30: 0xe0001086, 0x17c31: 0xe0001082, 0x17c32: 0xe0001108, 0x17c33: 0xe0001105,
+-	0x17c34: 0xe0001135, 0x17c35: 0xe0001132, 0x17c36: 0xe000112f, 0x17c37: 0xe000112c,
+-	0x17c38: 0xe000111d, 0x17c39: 0xe000111a, 0x17c3a: 0xe0000d0a, 0x17c3b: 0xe0000d07,
+-	0x17c3c: 0x0030d888, 0x17c3d: 0x4030d820, 0x17c3e: 0x00312088, 0x17c3f: 0x40312020,
+-	// Block 0x5f1, offset 0x17c40
+-	0x17c40: 0x6d200220, 0x17c41: 0x6c16fe20, 0x17c42: 0x6d0bdc20, 0x17c43: 0x6d1b3420,
+-	0x17c44: 0x6d0bd620, 0x17c45: 0x6cc58020, 0x17c46: 0x6c6ece20, 0x17c47: 0xe000240a,
+-	0x17c48: 0x6c29ae20, 0x17c49: 0x6c29ca20, 0x17c4a: 0x6c100220, 0x17c4b: 0x6c6b9220,
+-	0x17c4c: 0x6cff9e20, 0x17c4d: 0x6cffa020, 0x17c4e: 0x6cf39620, 0x17c4f: 0x6cedd020,
+-	0x17c50: 0x6cedd220, 0x17c51: 0x6cf39820, 0x17c52: 0x6cd8fa20, 0x17c53: 0x6d10c420,
+-	0x17c54: 0x6c630820, 0x17c55: 0x6c616620, 0x17c56: 0x6d036620, 0x17c57: 0x6d036820,
+-	0x17c58: 0x6cd49220, 0x17c59: 0x6cdbee20, 0x17c5b: 0x6cc64c20,
+-	0x17c5c: 0x6cc63420, 0x17c5d: 0x6d266620, 0x17c5e: 0x6c271e20, 0x17c5f: 0x2ca22083,
+-	0x17c60: 0x6c9f8820, 0x17c61: 0x6cd74220, 0x17c62: 0x6cd74420, 0x17c63: 0x6c0c6c20,
+-	0x17c64: 0x6d2ff820, 0x17c65: 0x6d2ff220, 0x17c66: 0x6cbb3620, 0x17c67: 0x6ca96420,
+-	0x17c68: 0x6cc38820, 0x17c69: 0xe000243f, 0x17c6a: 0xe0002442, 0x17c6b: 0x6ca2c020,
+-	0x17c6c: 0x6cd2f220, 0x17c6d: 0x6cd40820, 0x17c6e: 0x6cd30220, 0x17c6f: 0x6cd86820,
+-	0x17c70: 0x6cd86a20, 0x17c71: 0x6c429620, 0x17c72: 0x6cee4220, 0x17c73: 0xe0002451,
+-	0x17c74: 0x6cee4020, 0x17c75: 0xe000244e, 0x17c76: 0x6cc5ba20, 0x17c77: 0x6cc60a20,
+-	0x17c78: 0x02ff1684, 0x17c79: 0x03000484, 0x17c7a: 0x6d24ba20, 0x17c7b: 0x6d24bc20,
+-	0x17c7c: 0x6cc78020, 0x17c7d: 0x6c719e20, 0x17c7e: 0x6c12be20, 0x17c7f: 0x6c12c220,
+-	// Block 0x5f2, offset 0x17c80
+-	0x17c80: 0x6c12c420, 0x17c81: 0x6c562e20, 0x17c82: 0x6d199a20, 0x17c83: 0x6cf76620,
+-	0x17c84: 0x6cf94e20, 0x17c85: 0x6c673620, 0x17c86: 0x0313a484, 0x17c87: 0xe000246c,
+-	0x17c88: 0x6d0d2e20, 0x17c89: 0x6c077420, 0x17c8a: 0xe000246f, 0x17c8b: 0x6c17e220,
+-	0x17c8c: 0x6c21a220, 0x17c8d: 0x6c21a620, 0x17c8e: 0x6c21f020, 0x17c8f: 0x6c3f9a20,
+-	0x17c90: 0x6c6c7c20, 0x17c91: 0x6c16dc20, 0x17c92: 0x6c16de20, 0x17c93: 0x6d2f1620,
+-	0x17c94: 0x6c9ae820, 0x17c95: 0xe000247b, 0x17c96: 0x6c3f9c20, 0x17c97: 0x6d222020,
+-	0x17c98: 0x6cbe6a20, 0x17c99: 0x6cef7e20, 0x17c9a: 0x6d13ae20, 0x17c9b: 0x6c3c9820,
+-	0x17c9c: 0x6c3a3020, 0x17c9d: 0x6cd29c20, 0x17c9e: 0xe0002481, 0x17c9f: 0x6cd29e20,
+-	0x17ca0: 0x6cd2a020, 0x17ca1: 0xe0002484, 0x17ca2: 0x6c96ae20, 0x17ca3: 0x6c476c20,
+-	0x17ca4: 0x6c4b2420, 0x17ca5: 0x6d220e20, 0x17ca6: 0x6ca7ce20, 0x17ca7: 0x6c920a20,
+-	0x17ca8: 0x6c975620, 0x17ca9: 0x6c5a4020, 0x17caa: 0x6c9e4820, 0x17cab: 0x6cb6bc20,
+-	0x17cac: 0x6cb6be20, 0x17cad: 0x6c1bd020, 0x17cae: 0x6c1bd220, 0x17caf: 0x6c902820,
+-	0x17cb0: 0x6c902a20, 0x17cb1: 0x6c4ab620, 0x17cb2: 0x6c4ab420, 0x17cb3: 0x2c4a3883,
+-	// Block 0x5f3, offset 0x17cc0
+-	0x17cc0: 0x2d13b686, 0x17cc1: 0x2c4bb683, 0x17cc2: 0x2d3a5283, 0x17cc3: 0x2cb1dc83,
+-	0x17cc4: 0x2d15aa84, 0x17cc5: 0x2c73be83, 0x17cc6: 0x2c37b486, 0x17cc7: 0x2ce7e283,
+-	0x17cc8: 0x2cc55a84, 0x17cc9: 0x2c372e83, 0x17cca: 0x2cc80e83, 0x17ccb: 0x2c030a84,
+-	0x17ccc: 0x2c6ed083, 0x17ccd: 0x2c9d1683, 0x17cce: 0x2c0d9e83, 0x17ccf: 0x2c610c83,
+-	0x17cd0: 0x2cb9ec83, 0x17cd1: 0x2c29b083, 0x17cd2: 0x2c855c83, 0x17cd3: 0x2c059c83,
+-	0x17cd4: 0x2c08aa83, 0x17cd5: 0x2c397e83, 0x17cd6: 0x2cf83483, 0x17cd7: 0x2cd22485,
+-	0x17cd8: 0x2c100483, 0x17cd9: 0x2c6a4e83, 0x17cda: 0x2c16e083, 0x17cdb: 0x2cd7b483,
+-	0x17cdc: 0x2d200483, 0x17cdd: 0x2c79c883, 0x17cde: 0x2ceed683, 0x17cdf: 0x2ce91084,
+-	0x17ce0: 0x2cd2e283, 0x17ce1: 0x2d34ca83, 0x17ce2: 0x2cdba683, 0x17ce3: 0x2cf55a83,
+-	0x17ce4: 0x2c26e483, 0x17ce5: 0x2caa6e84, 0x17ce6: 0x2d3f6883, 0x17ce7: 0x2c9db683,
+-	0x17ce8: 0x2c25b083, 0x17ce9: 0x2cffa283, 0x17cea: 0x2d1edc83, 0x17ceb: 0x2cd18a83,
+-	0x17cec: 0x2c17fa83, 0x17ced: 0x2cccb083, 0x17cee: 0x2c1fd683, 0x17cef: 0x2c454a83,
+-	0x17cf0: 0x2c610e83, 0x17cf1: 0x2c6c1a83, 0x17cf2: 0x2c420a83, 0x17cf3: 0x2d107e83,
+-	0x17cf4: 0x2c4a0283, 0x17cf5: 0x2d1ac083, 0x17cf6: 0x2c45cc83, 0x17cf7: 0x2d163c83,
+-	0x17cf8: 0x2c454c83, 0x17cf9: 0x2c616883, 0x17cfa: 0x2cccb283, 0x17cfb: 0x2c1bd483,
+-	0x17cfc: 0x2d02a283, 0x17cfd: 0x2c436083, 0x17cfe: 0x2c563883, 0x17cff: 0x2cd43684,
+-	// Block 0x5f4, offset 0x17d00
+-	0x17d00: 0x2d337e83, 0x17d01: 0x2cb3fc83, 0x17d02: 0x2cf17a84, 0x17d03: 0x2c30f883,
+-	0x17d04: 0x2c6c1e83, 0x17d05: 0x2c398083, 0x17d06: 0x2cf39a83, 0x17d07: 0x2cc63684,
+-	0x17d08: 0x2d264283, 0x17d09: 0x2d266885, 0x17d0a: 0x2ca25c84, 0x17d0b: 0x2cba3883,
+-	0x17d0c: 0x2d34cc83, 0x17d0d: 0x2c271283, 0x17d0e: 0x2cd49883, 0x17d0f: 0x2cf39c83,
+-	0x17d10: 0x2c08ac83, 0x17d11: 0x2c98c083, 0x17d12: 0x2cd2e483, 0x17d13: 0x2cb72683,
+-	0x17d14: 0x2cd70284, 0x17d15: 0x2c5d8484, 0x17d16: 0x2d2f8083, 0x17d17: 0x2c3fa083,
+-	0x17d18: 0x2d10c683, 0x17d19: 0x2cac5083, 0x17d1a: 0x2cb14483, 0x17d1b: 0x2d0b0883,
+-	0x17d1c: 0x2ca96683, 0x17d1d: 0x2cc34c83, 0x17d1e: 0x2d07fa83, 0x17d1f: 0x2d22b883,
+-	0x17d20: 0x2c483e83, 0x17d21: 0x2cec0c83, 0x17d22: 0x2c415c83, 0x17d23: 0x2cd0d284,
+-	0x17d24: 0x2d1e6c83, 0x17d25: 0x2ce47e83, 0x17d26: 0x2cb04483, 0x17d27: 0x2ca54083,
+-	0x17d28: 0x2c0e4683, 0x17d29: 0x2c040883, 0x17d2a: 0x2cafa883, 0x17d2b: 0x2c9f8a83,
+-	0x17d2c: 0x2ca26483, 0x17d2d: 0x2c98c283, 0x17d2e: 0x2cd2a883, 0x17d2f: 0x2cd22c83,
+-	0x17d30: 0x2cd2f483, 0x17d31: 0x2cc74083, 0x17d32: 0x2c50b283, 0x17d33: 0x2d08f283,
+-	0x17d34: 0x2c856c83, 0x17d35: 0x2d39f083, 0x17d36: 0x2c9cd683, 0x17d37: 0x2c9d1a83,
+-	0x17d38: 0x2c3d1a83, 0x17d39: 0x2cedf483, 0x17d3a: 0x2d0f7683, 0x17d3b: 0x2d221c83,
+-	0x17d3c: 0x2c819a83, 0x17d3d: 0x2c373083, 0x17d3e: 0x2c82b283, 0x17d3f: 0x2c378483,
+-	// Block 0x5f5, offset 0x17d40
+-	0x17d40: 0x2d22c683, 0x17d41: 0x2cc78283, 0x17d42: 0x2c189483, 0x17d43: 0x2d3f2a83,
+-	0x17d44: 0x2d357083, 0x17d45: 0x2c6fd083, 0x17d46: 0x2ccf0683, 0x17d47: 0x2c201683,
+-	0x17d48: 0x2d385283, 0x17d49: 0x2c449e83, 0x17d4a: 0x2ccb1483, 0x17d4b: 0x2c12aa83,
+-	0x17d4c: 0x2c549483, 0x17d4d: 0x2c1d0883, 0x17d4e: 0x2d093883, 0x17d4f: 0x2d03ba83,
+-	0x17d50: 0x2d13be83, 0x17d51: 0x2d0b7083, 0x17d52: 0x2c665283, 0x17d53: 0x2c68c683,
+-	0x17d54: 0x2d0c5c83, 0x17d55: 0x2c475c83, 0x17d56: 0x2c30fa83, 0x17d57: 0x2cd2b083,
+-	0x17d58: 0x2d357c83, 0x17d59: 0x2c06dc83, 0x17d5a: 0x2c1be883, 0x17d5b: 0x2d407e84,
+-	0x17d5c: 0x2d40a683, 0x17d5d: 0x2ccfa483, 0x17d5e: 0x2c17ce83, 0x17d5f: 0x2d02ae83,
+-	0x17d60: 0x2c18a083, 0x17d61: 0x2c21a883, 0x17d62: 0x2d169e83, 0x17d63: 0x2d1fa483,
+-	0x17d64: 0x2c0b7883, 0x17d65: 0x2c84fc83, 0x17d66: 0x2c6c2e84, 0x17d67: 0x2d2f0083,
+-	0x17d68: 0x2c9ac683, 0x17d69: 0x2c3fba83, 0x17d6a: 0x2c859883, 0x17d6b: 0x2d3c5683,
+-	0x17d6c: 0x2d222283, 0x17d6d: 0x2cbe3083, 0x17d6e: 0x2c39f283, 0x17d6f: 0x2c9e5683,
+-	0x17d70: 0x2c43d083, 0x17d71: 0x2ceeee83, 0x17d72: 0x2c6fb483, 0x17d73: 0x2d19ba83,
+-	0x17d74: 0x2d12dc83, 0x17d75: 0x2c3c2c83, 0x17d76: 0x2c39f483, 0x17d77: 0x2cd25883,
+-	0x17d78: 0x2cd44283, 0x17d79: 0x2cfd6683, 0x17d7a: 0x2c969883, 0x17d7b: 0x2c476e83,
+-	0x17d7c: 0x2c42bc83, 0x17d7d: 0x2c0bf483, 0x17d7e: 0x2c310e83, 0x17d7f: 0x2c170e83,
+-	// Block 0x5f6, offset 0x17d80
+-	0x17d80: 0x2c43e083, 0x17d81: 0x2c4ae283, 0x17d82: 0x2d211283, 0x17d83: 0x2ca79a83,
+-	0x17d84: 0x2c91bc83, 0x17d85: 0x2c924c83, 0x17d86: 0x2c973283, 0x17d87: 0x2c966883,
+-	0x17d88: 0x2c59ce83, 0x17d89: 0x2cd56083, 0x17d8a: 0x2c521c83, 0x17d8b: 0x2d353483,
+-	0x17d8c: 0x2c9e3283, 0x17d8d: 0x2c2f7483, 0x17d8e: 0x2c47a683, 0x17d8f: 0x2cd56683,
+-	0x17d90: 0x2c08a283, 0x17d91: 0x2cb63483, 0x17d92: 0x2c1bc283, 0x17d93: 0x2c8fb083,
+-	0x17d94: 0x2c4a9683, 0x17d95: 0x2d26f683,
+-	0x17db0: 0x40273a20, 0x17db1: 0x40273c20, 0x17db2: 0x40273e20, 0x17db3: 0x40274020,
+-	0x17db4: 0x40274220, 0x17db5: 0x40274420, 0x17db6: 0x40274620, 0x17db7: 0x40274820,
+-	0x17db8: 0x40274a20, 0x17db9: 0x40274c20, 0x17dba: 0x40274e20, 0x17dbb: 0x40275020,
+-	// Block 0x5f7, offset 0x17dc0
+-	0x17dc0: 0x00021283, 0x17dc1: 0x40025c20, 0x17dc2: 0x40030420, 0x17dc3: 0x40051220,
+-	0x17dc4: 0x40279a20, 0x17dc5: 0x4027ca20, 0x17dc6: 0xe0002206, 0x17dc7: 0x6c8c9620,
+-	0x17dc8: 0x40049c20, 0x17dc9: 0x40049e20, 0x17dca: 0x4004a020, 0x17dcb: 0x4004a220,
+-	0x17dcc: 0x4004a420, 0x17dcd: 0x4004a620, 0x17dce: 0x4004a820, 0x17dcf: 0x4004aa20,
+-	0x17dd0: 0x4004ac20, 0x17dd1: 0x4004ae20, 0x17dd2: 0x40279c20, 0x17dd3: 0x40279e20,
+-	0x17dd4: 0x4004b020, 0x17dd5: 0x4004b220, 0x17dd6: 0x4004b420, 0x17dd7: 0x4004b620,
+-	0x17dd8: 0x4004b820, 0x17dd9: 0x4004ba20, 0x17dda: 0x4004bc20, 0x17ddb: 0x4004be20,
+-	0x17ddc: 0x40023820, 0x17ddd: 0x4003ea20, 0x17dde: 0x4003ec20, 0x17ddf: 0x4003ee20,
+-	0x17de0: 0x4027a020, 0x17de1: 0xe0000267, 0x17de2: 0xe000037f, 0x17de3: 0xe0000459,
+-	0x17de4: 0xe000052e, 0x17de5: 0xe00005f8, 0x17de6: 0xe00006c3, 0x17de7: 0xe000076b,
+-	0x17de8: 0xe0000817, 0x17de9: 0xe00008bc, 0x17dea: 0xada12202, 0x17deb: 0xae412302,
+-	0x17dec: 0xae812402, 0x17ded: 0xade12502, 0x17dee: 0xae012602, 0x17def: 0xae012702,
+-	0x17df0: 0x40023a20, 0x17df1: 0x4027ce20, 0x17df2: 0xe0000152, 0x17df3: 0x4027d020,
+-	0x17df4: 0xe0000155, 0x17df5: 0x4027d220, 0x17df6: 0x00279c84, 0x17df7: 0x4027a220,
+-	0x17df8: 0x2cd22484, 0x17df9: 0x2ca75483, 0x17dfa: 0x2cc96283, 0x17dfb: 0x4027cc20,
+-	0x17dfc: 0xe000231a, 0x17dfd: 0x40051420, 0x17dfe: 0x4027a420, 0x17dff: 0x4027a620,
+-	// Block 0x5f8, offset 0x17e00
+-	0x17e00: 0x00633a84, 0x17e01: 0x00634484, 0x17e02: 0x0064f684, 0x17e03: 0x0064f884,
+-	0x17e04: 0x00635a84, 0x17e05: 0x00635c84, 0x17e06: 0x00635e84, 0x17e07: 0x0063ee84,
+-	0x17e08: 0x0063f084, 0x17e09: 0x0063f684, 0x17e0a: 0x00640884, 0x17e0b: 0x00640a84,
+-	0x17e0c: 0x00640e84, 0x17e0d: 0x00642284, 0x17e0e: 0x00642884,
+-	0x17e10: 0x4027a820, 0x17e11: 0x4027aa20, 0x17e12: 0x2d13b685, 0x17e13: 0x2c37b485,
+-	0x17e14: 0x2cc9f285, 0x17e15: 0x2cd87484, 0x17e16: 0x2cce4884, 0x17e17: 0x2d378285,
+-	0x17e18: 0x2cfa2684, 0x17e19: 0x2c63fc83, 0x17e1a: 0x2d15aa83, 0x17e1b: 0x2c0dba83,
+-	0x17e1c: 0x2c2f4083, 0x17e1d: 0x2ce45484, 0x17e1e: 0x2c2a8a83, 0x17e1f: 0x2cc55a83,
+-	0x17e20: 0xe000237a, 0x17e21: 0xe0002383, 0x17e22: 0xe0002380, 0x17e23: 0xe000237d,
+-	0x17e24: 0x40661c20, 0x17e25: 0xe000238c, 0x17e26: 0x40661620, 0x17e27: 0xe0002389,
+-	0x17e28: 0xe000239e, 0x17e29: 0xe0002386, 0x17e2a: 0xe0002395, 0x17e2b: 0xe000239b,
+-	0x17e2c: 0x40663420, 0x17e2d: 0x4065f220, 0x17e2e: 0xe000238f, 0x17e2f: 0xe0002392,
+-	0x17e30: 0x40663020, 0x17e31: 0x40663220, 0x17e32: 0x40662c20, 0x17e33: 0xe0002398,
+-	0x17e34: 0x0065dc99, 0x17e35: 0x0065e699, 0x17e36: 0x0065ee99, 0x17e37: 0x0065f499,
+-	0x17e38: 0x40660c20, 0x17e39: 0x40660e20, 0x17e3a: 0x40661020,
+-	// Block 0x5f9, offset 0x17e40
+-	0x17e40: 0xf0000404, 0x17e41: 0xf0000404, 0x17e42: 0xf0000404, 0x17e43: 0xf0000404,
+-	0x17e44: 0xf0000404, 0x17e45: 0xf0000404, 0x17e46: 0xf0000404, 0x17e47: 0xf0000404,
+-	0x17e48: 0xf0000404, 0x17e49: 0xf0000404, 0x17e4a: 0xf0000404, 0x17e4b: 0xf0000404,
+-	0x17e4c: 0xf0000404, 0x17e4d: 0xf0000404, 0x17e4e: 0xe000004c, 0x17e4f: 0xe0000051,
+-	0x17e50: 0xe0000056, 0x17e51: 0xe000005b, 0x17e52: 0xe0000060, 0x17e53: 0xe0000065,
+-	0x17e54: 0xe000006a, 0x17e55: 0xe000006f, 0x17e56: 0xe0000083, 0x17e57: 0xe000008d,
+-	0x17e58: 0xe0000092, 0x17e59: 0xe0000097, 0x17e5a: 0xe000009c, 0x17e5b: 0xe00000a1,
+-	0x17e5c: 0xe0000088, 0x17e5d: 0xe0000074, 0x17e5e: 0xe000007c,
+-	0x17e60: 0xe000aff9, 0x17e61: 0xe000af95, 0x17e62: 0xe000afcd, 0x17e63: 0xe000afdd,
+-	0x17e64: 0xe000afe9, 0x17e65: 0xe000afb5, 0x17e66: 0xe000afc1, 0x17e67: 0xe000af89,
+-	0x17e68: 0xe000afad, 0x17e69: 0xe000afd5, 0x17e6a: 0xe000b001, 0x17e6b: 0xe000af9d,
+-	0x17e6c: 0xe000afd9, 0x17e6d: 0xe000afbd, 0x17e6e: 0xe000afa9, 0x17e6f: 0xe000afe5,
+-	0x17e70: 0xe000afc9, 0x17e71: 0xe000b009, 0x17e72: 0xe000affd, 0x17e73: 0xe000afd1,
+-	0x17e74: 0xe000afb9, 0x17e75: 0xe000afe1, 0x17e76: 0xe000af8d, 0x17e77: 0xe000b00d,
+-	0x17e78: 0xe000afb1, 0x17e79: 0xe000af91, 0x17e7a: 0xe000af99, 0x17e7b: 0xe000aff5,
+-	0x17e7c: 0xe000afa5, 0x17e7d: 0xe000afc5, 0x17e7e: 0xe000b011, 0x17e7f: 0xe000afed,
+-	// Block 0x5fa, offset 0x17e80
+-	0x17e80: 0xe000afa1, 0x17e81: 0xe000aff1, 0x17e82: 0xe000b015, 0x17e83: 0xe000b005,
+-	0x17e84: 0x2cf20683, 0x17e85: 0x2d200c83, 0x17e86: 0x2cf17a83, 0x17e87: 0x2d32e283,
+-	0x17e88: 0xe00002e3, 0x17e89: 0xe00003d8, 0x17e8a: 0xe00004b3, 0x17e8b: 0xe000057d,
+-	0x17e8c: 0xe0000648, 0x17e8d: 0xe00006f0, 0x17e8e: 0xe000079c, 0x17e8f: 0xe0000841,
+-	0x17e90: 0xe0000ec0, 0x17e91: 0xf0000606, 0x17e92: 0xf0000606, 0x17e93: 0xf0000606,
+-	0x17e94: 0xf0000606, 0x17e95: 0xf0000606, 0x17e96: 0xf0000606, 0x17e97: 0xf0000606,
+-	0x17e98: 0xf0000606, 0x17e99: 0xf0000606, 0x17e9a: 0xf0000606, 0x17e9b: 0xf0000606,
+-	0x17e9c: 0xf0000606, 0x17e9d: 0xf0000606, 0x17e9e: 0xf0000606, 0x17e9f: 0xf0000606,
+-	0x17ea0: 0x0062ac86, 0x17ea1: 0x0062b086, 0x17ea2: 0x0062b286, 0x17ea3: 0x0062b686,
+-	0x17ea4: 0x0062b886, 0x17ea5: 0x0062ba86, 0x17ea6: 0x0062be86, 0x17ea7: 0x0062c286,
+-	0x17ea8: 0x0062c486, 0x17ea9: 0x0062c886, 0x17eaa: 0x0062ca86, 0x17eab: 0x0062cc86,
+-	0x17eac: 0x0062ce86, 0x17ead: 0x0062d086, 0x17eae: 0xf0000606, 0x17eaf: 0xf0000606,
+-	0x17eb0: 0xf0000606, 0x17eb1: 0xf0000606, 0x17eb2: 0xf0000606, 0x17eb3: 0xf0000606,
+-	0x17eb4: 0xf0000606, 0x17eb5: 0xf0000606, 0x17eb6: 0xf0000606, 0x17eb7: 0xf0000606,
+-	0x17eb8: 0xf0000606, 0x17eb9: 0xf0000606, 0x17eba: 0xf0000606, 0x17ebb: 0xf0000606,
+-	0x17ebc: 0xe0002127, 0x17ebd: 0xe0002122, 0x17ebe: 0xf0000606, 0x17ebf: 0x4027ac20,
+-	// Block 0x5fb, offset 0x17ec0
+-	0x17ec0: 0x2d13b684, 0x17ec1: 0x2c37b484, 0x17ec2: 0x2cc9f284, 0x17ec3: 0x2cd87483,
+-	0x17ec4: 0x2cf41483, 0x17ec5: 0x2c8f2483, 0x17ec6: 0x2cb4c683, 0x17ec7: 0x2c030a83,
+-	0x17ec8: 0x2c6f9a83, 0x17ec9: 0x2cd22483, 0x17eca: 0x2d266884, 0x17ecb: 0x2c5d8483,
+-	0x17ecc: 0x2cd70283, 0x17ecd: 0x2ca25c83, 0x17ece: 0x2c6c2e83, 0x17ecf: 0x2ce91083,
+-	0x17ed0: 0x2cc63683, 0x17ed1: 0x2d399283, 0x17ed2: 0x2d1f9884, 0x17ed3: 0x2ccf3683,
+-	0x17ed4: 0x2c9fe683, 0x17ed5: 0x2ce27083, 0x17ed6: 0x2c110e83, 0x17ed7: 0x2d3ac683,
+-	0x17ed8: 0x2c814083, 0x17ed9: 0x2c9d3483, 0x17eda: 0x2ca3e283, 0x17edb: 0x2caa6e83,
+-	0x17edc: 0x2cd3bc83, 0x17edd: 0x2d1eb483, 0x17ede: 0x2d1b3683, 0x17edf: 0x2d3ab083,
+-	0x17ee0: 0x2cfe3a83, 0x17ee1: 0x2d04b283, 0x17ee2: 0x2d013e83, 0x17ee3: 0x2d333683,
+-	0x17ee4: 0x2cce4883, 0x17ee5: 0x2d378284, 0x17ee6: 0x2cfa2683, 0x17ee7: 0x2d426084,
+-	0x17ee8: 0x2d200884, 0x17ee9: 0x2d13c083, 0x17eea: 0x2d3f7083, 0x17eeb: 0x2d08f883,
+-	0x17eec: 0x2c64ca83, 0x17eed: 0x2cb6c883, 0x17eee: 0x2d3e6083, 0x17eef: 0x2d007083,
+-	0x17ef0: 0x2d12ca83, 0x17ef1: 0xf0000606, 0x17ef2: 0xf0000606, 0x17ef3: 0xf0000606,
+-	0x17ef4: 0xf0000606, 0x17ef5: 0xf0000606, 0x17ef6: 0xf0000606, 0x17ef7: 0xf0000606,
+-	0x17ef8: 0xf0000606, 0x17ef9: 0xf0000606, 0x17efa: 0xf0000606, 0x17efb: 0xf0000606,
+-	0x17efc: 0xf0000606, 0x17efd: 0xf0000606, 0x17efe: 0xf0000606, 0x17eff: 0xf0000606,
+-	// Block 0x5fc, offset 0x17f00
+-	0x17f00: 0xf0000203, 0x17f01: 0xf0000203, 0x17f02: 0xf0000203, 0x17f03: 0xf0000203,
+-	0x17f04: 0xf0000203, 0x17f05: 0xf0000203, 0x17f06: 0xf0000203, 0x17f07: 0xf0000203,
+-	0x17f08: 0xf0000203, 0x17f09: 0xe000b045, 0x17f0a: 0xe000b051, 0x17f0b: 0xe000b05d,
+-	0x17f0c: 0xf0001c1d, 0x17f0d: 0xe0000b85, 0x17f0e: 0xf0001d1c, 0x17f0f: 0xe0000d14,
+-	0x17f10: 0x00657693, 0x17f11: 0x00657893, 0x17f12: 0x00657a93, 0x17f13: 0x00657e93,
+-	0x17f14: 0x00658093, 0x17f15: 0x00658293, 0x17f16: 0x00658493, 0x17f17: 0x00658693,
+-	0x17f18: 0x00658893, 0x17f19: 0x00658a93, 0x17f1a: 0x00658c93, 0x17f1b: 0x00658e93,
+-	0x17f1c: 0x00659093, 0x17f1d: 0x00659293, 0x17f1e: 0x00659493, 0x17f1f: 0x00659693,
+-	0x17f20: 0x00659893, 0x17f21: 0x00659a93, 0x17f22: 0x00659c93, 0x17f23: 0x00659e93,
+-	0x17f24: 0x0065a093, 0x17f25: 0x0065a293, 0x17f26: 0x0065a493, 0x17f27: 0x0065a693,
+-	0x17f28: 0x0065a893, 0x17f29: 0x0065aa93, 0x17f2a: 0x0065ac93, 0x17f2b: 0x0065ae93,
+-	0x17f2c: 0x0065b093, 0x17f2d: 0x0065b293, 0x17f2e: 0x0065b493, 0x17f2f: 0x0065b693,
+-	0x17f30: 0x0065b893, 0x17f31: 0x0065ba93, 0x17f32: 0x0065bc93, 0x17f33: 0x0065be93,
+-	0x17f34: 0x0065c093, 0x17f35: 0x0065c493, 0x17f36: 0x0065c693, 0x17f37: 0x0065c893,
+-	0x17f38: 0x0065ca93, 0x17f39: 0x0065cc93, 0x17f3a: 0x0065ce93, 0x17f3b: 0x0065d093,
+-	0x17f3c: 0x0065d293, 0x17f3d: 0x0065d493, 0x17f3e: 0x0065d693,
+-	// Block 0x5fd, offset 0x17f40
+-	0x17f40: 0xe000230b, 0x17f41: 0xe00022f8, 0x17f42: 0xe00022fc, 0x17f43: 0xe0002311,
+-	0x17f44: 0xe0002316, 0x17f45: 0xe000231d, 0x17f46: 0xe0002321, 0x17f47: 0xe0002325,
+-	0x17f48: 0xe000232b, 0x17f49: 0xf0001c1c, 0x17f4a: 0xe0002330, 0x17f4b: 0xe000233c,
+-	0x17f4c: 0xe0002340, 0x17f4d: 0xe0002337, 0x17f4e: 0xe0002346, 0x17f4f: 0xe000234b,
+-	0x17f50: 0xe000234f, 0x17f51: 0xe0002353, 0x17f52: 0xf0001c1c, 0x17f53: 0xe000235e,
+-	0x17f54: 0xe0002358, 0x17f55: 0xf0001c1c, 0x17f56: 0xe0002363, 0x17f57: 0xe000236d,
+-	0x17f58: 0xf0000203, 0x17f59: 0xf0000203, 0x17f5a: 0xf0000203, 0x17f5b: 0xf0000203,
+-	0x17f5c: 0xf0000203, 0x17f5d: 0xf0000203, 0x17f5e: 0xf0000203, 0x17f5f: 0xf0000203,
+-	0x17f60: 0xf0000203, 0x17f61: 0xf0000203, 0x17f62: 0xe000b03d, 0x17f63: 0xe000b049,
+-	0x17f64: 0xe000b055, 0x17f65: 0xe000b061, 0x17f66: 0xe000b069, 0x17f67: 0xe000b071,
+-	0x17f68: 0xe000b079, 0x17f69: 0xe000b081, 0x17f6a: 0xe000b089, 0x17f6b: 0xe000b091,
+-	0x17f6c: 0xe000b099, 0x17f6d: 0xe000b0a1, 0x17f6e: 0xe000b0a9, 0x17f6f: 0xe000b0b1,
+-	0x17f70: 0xe000b0b9, 0x17f71: 0xe0000c1e, 0x17f72: 0xf0001c1c, 0x17f73: 0xf0001d1d,
+-	0x17f74: 0xe0000a31, 0x17f75: 0xf0001d1c, 0x17f76: 0xf0001c1c, 0x17f77: 0xf0001c1c,
+-	0x17f78: 0xe0000ac2, 0x17f79: 0xe0000ac6, 0x17f7a: 0xf0001d1d, 0x17f7b: 0xf0000203,
+-	0x17f7c: 0xf0000203, 0x17f7d: 0xf0000203, 0x17f7e: 0xf0000203, 0x17f7f: 0xe000b173,
+-	// Block 0x5fe, offset 0x17f80
+-	0x17f80: 0xf0001d1c, 0x17f81: 0xf0001d1d, 0x17f82: 0xe00009b7, 0x17f83: 0xf0001c1d,
+-	0x17f84: 0xf0001c1c, 0x17f85: 0xf0001c1c, 0x17f86: 0xe0000a66, 0x17f87: 0xe0000a7a,
+-	0x17f88: 0xf0001d1c, 0x17f89: 0xf0001c1d, 0x17f8a: 0xf0001c1c, 0x17f8b: 0xf0001d1d,
+-	0x17f8c: 0xf0001c1c, 0x17f8d: 0xf0001d1d, 0x17f8e: 0xf0001d1d, 0x17f8f: 0xf0001c1c,
+-	0x17f90: 0xf0001c1c, 0x17f91: 0xf0001c1c, 0x17f92: 0xe0000d0d, 0x17f93: 0xf0001c1c,
+-	0x17f94: 0xf0001c1c, 0x17f95: 0xe0000d3a, 0x17f96: 0xe0000d46, 0x17f97: 0xf0001d1d,
+-	0x17f98: 0xe0000eb0, 0x17f99: 0xe0000eb8, 0x17f9a: 0xf0001d1d, 0x17f9b: 0xf0001c1c,
+-	0x17f9c: 0xf0001c1d, 0x17f9d: 0xf0001c1d, 0x17f9e: 0xe00010b2, 0x17f9f: 0xe00009c8,
+-	0x17fa0: 0xf0000203, 0x17fa1: 0xf0000203, 0x17fa2: 0xf0000203, 0x17fa3: 0xf0000203,
+-	0x17fa4: 0xf0000203, 0x17fa5: 0xf0000203, 0x17fa6: 0xf0000203, 0x17fa7: 0xf0000203,
+-	0x17fa8: 0xf0000203, 0x17fa9: 0xe000b041, 0x17faa: 0xe000b04d, 0x17fab: 0xe000b059,
+-	0x17fac: 0xe000b065, 0x17fad: 0xe000b06d, 0x17fae: 0xe000b075, 0x17faf: 0xe000b07d,
+-	0x17fb0: 0xe000b085, 0x17fb1: 0xe000b08d, 0x17fb2: 0xe000b095, 0x17fb3: 0xe000b09d,
+-	0x17fb4: 0xe000b0a5, 0x17fb5: 0xe000b0ad, 0x17fb6: 0xe000b0b5, 0x17fb7: 0xe000b0bd,
+-	0x17fb8: 0xe000b0c1, 0x17fb9: 0xe000b0c5, 0x17fba: 0xe000b0c9, 0x17fbb: 0xe000b0cd,
+-	0x17fbc: 0xe000b0d1, 0x17fbd: 0xe000b0d5, 0x17fbe: 0xe000b0d9, 0x17fbf: 0xe0000bdf,
+-	// Block 0x5ff, offset 0x17fc0
+-	0x17fc0: 0x6cbf9220, 0x17fc1: 0x6ce52c20,
+-	0x17fc4: 0x6c7ae020, 0x17fc5: 0x6cf41220, 0x17fc6: 0x6d1ac620,
+-	0x17fcc: 0x6d144820,
+-	0x17fd6: 0x6d006c20,
+-	0x17fdc: 0x6c1d9020,
+-	0x17fe1: 0x6caae820,
+-	0x17fe4: 0x6c27da20,
+-	0x17fe8: 0x6d067820, 0x17fe9: 0x6d03c420, 0x17feb: 0x6d044c20,
+-	0x17fec: 0x6c8e4020, 0x17fed: 0x6c8c1820, 0x17fee: 0x6cfd7e20, 0x17fef: 0x6d1dbe20,
+-	0x17ff0: 0x6d030e20, 0x17ff1: 0x6d31ac20, 0x17ff2: 0x6c272020, 0x17ff3: 0x6cf49420,
+-	0x17ff4: 0x6cac3820, 0x17ff7: 0x6c968e20,
+-	0x17ff8: 0x6cba3c20, 0x17ff9: 0x6d165420, 0x17ffa: 0x6d1a2020, 0x17ffb: 0x6ca58220,
+-	0x17ffc: 0x6c1a7e20, 0x17ffd: 0x6c3c1020,
+-	// Block 0x600, offset 0x18000
+-	0x18001: 0x6d3cec20, 0x18002: 0x6c39ba20, 0x18003: 0x6c029620,
+-	0x18004: 0x6cf41c20, 0x18005: 0x6d427220, 0x18007: 0x6d38f620,
+-	0x18008: 0x6c304e20, 0x18009: 0x6cda7e20, 0x1800a: 0x6d16a020, 0x1800b: 0x6cbefc20,
+-	0x1800c: 0x6c7b8220, 0x1800d: 0x6c831e20, 0x1800e: 0x6ca4da20, 0x1800f: 0x6d3aa820,
+-	0x18010: 0x6cd4a220,
+-	0x18014: 0x6d062820, 0x18017: 0x6ccfb620,
+-	0x18018: 0x6c6bc820, 0x18019: 0x6c2e6620, 0x1801a: 0x6caab620, 0x1801b: 0x6cda8420,
+-	0x1801c: 0x6d16d820, 0x1801d: 0x6c905020, 0x1801e: 0x6d1d3220, 0x1801f: 0x6c081020,
+-	0x18023: 0x6c7f9220,
+-	0x18024: 0x6c9e7220, 0x18025: 0x6d171820, 0x18026: 0x6c85be20, 0x18027: 0x6c61c020,
+-	0x18028: 0x6d223420, 0x18029: 0x6c953c20, 0x1802a: 0x6c147420,
+-	0x1802e: 0x6c5ce420, 0x1802f: 0x6d063820,
+-	0x18030: 0x6c5bb220, 0x18031: 0x6cc53820, 0x18033: 0x6d392620,
+-	0x18035: 0x6c4ebe20, 0x18036: 0x6cf88220, 0x18037: 0x6cdf7420,
+-	0x18038: 0x6d10f020, 0x18039: 0x6c5bba20, 0x1803a: 0x6c75b820, 0x1803b: 0x6c96c020,
+-	0x1803c: 0x6c94ac20, 0x1803d: 0x6ce0fa20, 0x1803e: 0x6d110220, 0x1803f: 0x6d2fba20,
+-	// Block 0x601, offset 0x18040
+-	0x18040: 0x6d2cf420, 0x18041: 0x6d226420, 0x18042: 0x6d3d7620, 0x18043: 0x6c37d620,
+-	0x18044: 0x6cc4cc20, 0x18045: 0x6cb70820, 0x18046: 0x6c1c3e20, 0x18047: 0x6cf45620,
+-	0x18048: 0x6c4eda20, 0x18049: 0x6ce17820, 0x1804a: 0x6ccb3220,
+-	0x1804c: 0x6cbf4820, 0x1804d: 0x6c824020, 0x1804e: 0x6cc97c20,
+-	0x18051: 0x6c7cda20, 0x18052: 0x6cb44620, 0x18053: 0x6cde8a20,
+-	0x18054: 0x6cd53020, 0x18055: 0x6d0f6820, 0x18056: 0x6cab8a20, 0x18057: 0x6cdf3620,
+-	0x18059: 0x6c9dd220, 0x1805a: 0x6d1b7820, 0x1805b: 0x6c2e3a20,
+-	0x1805c: 0x6d228820, 0x1805d: 0x6c9eec20, 0x1805e: 0x6c75ee20, 0x1805f: 0x6ca7b820,
+-	0x18060: 0x6d023a20, 0x18061: 0x6d1f8820,
+-	0x18064: 0x6c185420, 0x18065: 0x6c3c7620, 0x18066: 0x6c82f820, 0x18067: 0x6c874020,
+-	0x18069: 0x6c95d420, 0x1806b: 0x6c617420,
+-	0x18070: 0x6cc2b020, 0x18072: 0x6c110220, 0x18073: 0x6c898420,
+-	0x18074: 0x6c475620, 0x18075: 0x6c994020, 0x18077: 0x6c489020,
+-	0x18078: 0x6cdc2820, 0x1807b: 0x6c996a20,
+-	0x1807c: 0x6c976220, 0x1807d: 0x6cc29820, 0x1807e: 0x6cd39420, 0x1807f: 0x6c84b620,
+-	// Block 0x602, offset 0x18080
+-	0x18081: 0x6cedee20, 0x18082: 0x6c79d820, 0x18083: 0x6c325420,
+-	0x18084: 0x6d325a20, 0x18085: 0x6ce62020,
+-	0x18088: 0x6c0e0620, 0x18089: 0x6c5d9e20, 0x1808a: 0x6c305420, 0x1808b: 0x6c460e20,
+-	0x1808c: 0x6c195220, 0x1808e: 0x6cbd2020, 0x1808f: 0x6c6f0020,
+-	0x18090: 0x6c922620, 0x18091: 0x6d042020, 0x18093: 0x6ca3f820,
+-	0x18094: 0x6d01a220, 0x18096: 0x6c09be20, 0x18097: 0x6c6b0420,
+-	0x18098: 0x6cda9c20, 0x1809a: 0x6c455220,
+-	0x1809c: 0x6d200620, 0x1809d: 0x6d03b620, 0x1809e: 0x6cb83c20, 0x1809f: 0x6cafae20,
+-	0x180a0: 0x6c2d3620, 0x180a1: 0x6c3f3c20, 0x180a2: 0x6c95de20, 0x180a3: 0x6cb84220,
+-	0x180a4: 0x6cb84420, 0x180a5: 0x6ce0ba20, 0x180a6: 0x6c03fa20, 0x180a7: 0x6c418420,
+-	0x180a8: 0x6c222420, 0x180a9: 0x6d077e20, 0x180aa: 0x6c80f620,
+-	0x180ad: 0x6ccf0c20, 0x180af: 0x6c83a820,
+-	0x180b0: 0x6c578820, 0x180b1: 0x6ce7ea20, 0x180b2: 0x6cb0f020, 0x180b3: 0x6c2b2420,
+-	0x180b4: 0x6cc85e20, 0x180b5: 0x6c360820, 0x180b6: 0x6cbcb020, 0x180b7: 0x6d178c20,
+-	0x180b8: 0x6d3d0020, 0x180b9: 0x6cc8cc20, 0x180ba: 0x6c649420,
+-	0x180bc: 0x6c1c2e20, 0x180bd: 0x6c1d1820, 0x180be: 0x6cf66220,
+-	// Block 0x603, offset 0x180c0
+-	0x180c0: 0x6c94b420, 0x180c1: 0x6c2aa020, 0x180c2: 0x6c8bbe20, 0x180c3: 0x6c747020,
+-	0x180c4: 0x6cdae020, 0x180c5: 0x6cfffa20, 0x180c6: 0x6d299020,
+-	0x180c9: 0x6d3a7620, 0x180ca: 0x6d2e0e20, 0x180cb: 0x6c64f020,
+-	0x180cc: 0x6d408c20, 0x180cd: 0x6c1fa020, 0x180ce: 0x6d022a20, 0x180cf: 0x6c869820,
+-	0x180d1: 0x6c1c8e20, 0x180d2: 0x6cf7b820, 0x180d3: 0x6c656020,
+-	0x180d5: 0x6c5fc020, 0x180d7: 0x6c3a7c20,
+-	0x180d8: 0x6c1f0620, 0x180d9: 0x6c07d420, 0x180da: 0x6c6a7820,
+-	0x180dc: 0x6c036c20, 0x180dd: 0x6c898a20, 0x180de: 0x6c7b1e20,
+-	0x180e0: 0x6cf95e20, 0x180e1: 0x6c0ca420, 0x180e2: 0x6c747420, 0x180e3: 0x6c825c20,
+-	0x180e4: 0x6d035020, 0x180e5: 0x6c045820, 0x180e6: 0x6d103220, 0x180e7: 0x6c940a20,
+-	0x180e8: 0x6c070a20, 0x180e9: 0x6c362420, 0x180ea: 0x6c91c220,
+-	0x180ed: 0x6c181220, 0x180ee: 0x6caad020, 0x180ef: 0x6d07fe20,
+-	0x180f0: 0x6c525220, 0x180f1: 0x6d224420, 0x180f3: 0x6c4b0620,
+-	0x180f4: 0x6d17dc20, 0x180f5: 0x6d085020, 0x180f6: 0x6c462c20, 0x180f7: 0x6c910020,
+-	0x180f8: 0x6ce2f020, 0x180f9: 0x6c820420, 0x180fa: 0x6cd2f820,
+-	0x180fc: 0x6cdcee20, 0x180fd: 0x6d11ec20, 0x180fe: 0x6cfa6820, 0x180ff: 0x6d408420,
+-	// Block 0x604, offset 0x18100
+-	0x18101: 0x6cc3a220, 0x18102: 0x6d1a2220, 0x18103: 0x6cf56420,
+-	0x18104: 0x6d34d420, 0x18105: 0x6c639620, 0x18106: 0x6c564e20, 0x18107: 0x6c7e3620,
+-	0x18108: 0x6d15c620, 0x18109: 0x6c788020, 0x1810a: 0x6c3d4620, 0x1810b: 0x6cbd6020,
+-	0x1810c: 0x6c009220, 0x1810e: 0x6c78ac20, 0x1810f: 0x6c1e8820,
+-	0x18110: 0x6d014620, 0x18111: 0x6c1e9a20, 0x18112: 0x6ceeac20,
+-	0x18115: 0x6c58ea20, 0x18116: 0x6cda8a20, 0x18117: 0x6d203a20,
+-	0x18119: 0x6c75e020, 0x1811a: 0x6d2f7e20, 0x1811b: 0x6d066620,
+-	0x1811c: 0x6cd2ac20, 0x1811e: 0x6cd64220, 0x1811f: 0x6c7cea20,
+-	0x18120: 0x6cd6a220, 0x18121: 0x6c515420, 0x18122: 0x6c414e20, 0x18123: 0x6d0d3020,
+-	0x18124: 0x6cbfec20, 0x18125: 0x6ccf9820, 0x18126: 0x6c577a20, 0x18127: 0x6cf56820,
+-	0x18128: 0x6c391820, 0x18129: 0x6cad2420, 0x1812a: 0x6c281e20, 0x1812b: 0x6c39bc20,
+-	0x1812c: 0x6c455c20, 0x1812d: 0x6c022620, 0x1812e: 0x6c3f3020, 0x1812f: 0x6ca54420,
+-	0x18130: 0x6d093a20, 0x18131: 0x6d1ee420, 0x18132: 0x6c572620,
+-	0x18134: 0x6c189620, 0x18135: 0x6c4c5420, 0x18136: 0x6ca2c820, 0x18137: 0x6c577e20,
+-	0x18138: 0x6c858820, 0x18139: 0x6c37fa20, 0x1813a: 0x6cfe8020, 0x1813b: 0x6cb3ea20,
+-	0x1813d: 0x6cd88820,
+-	// Block 0x605, offset 0x18140
+-	0x18140: 0x6c821c20, 0x18141: 0x6c8c4820, 0x18142: 0x6d16dc20, 0x18143: 0x6c544c20,
+-	0x18145: 0x6d068c20, 0x18146: 0x6cc17620, 0x18147: 0x6c373a20,
+-	0x1814a: 0x6d09e220,
+-	0x1814f: 0x6ca80020,
+-	0x18150: 0x6cef9a20, 0x18151: 0x6d017820, 0x18152: 0x6ce31420, 0x18153: 0x6c532620,
+-	0x18154: 0x6cea7820, 0x18155: 0x6ca80220, 0x18156: 0x6ca80420, 0x18157: 0x6d1a4020,
+-	0x18158: 0x6d313420,
+-	0x1815e: 0x6cec5020, 0x1815f: 0x6cd45a20,
+-	0x18160: 0x6caaea20, 0x18161: 0x6d12e420, 0x18162: 0x6cb5b620, 0x18163: 0x6ce82620,
+-	0x18164: 0x6c4df820, 0x18165: 0x6c75ac20, 0x18166: 0x6c302c20, 0x18167: 0x6c5cba20,
+-	0x18168: 0x6c923220, 0x18169: 0x6c707a20, 0x1816a: 0x6c5db820, 0x1816b: 0x6c8cdc20,
+-	0x1816d: 0x6ce4e420, 0x1816e: 0x6c94e820,
+-	0x18175: 0x6c43e220, 0x18176: 0x6d0c0620, 0x18177: 0x6cd26420,
+-	0x18178: 0x6d090c20, 0x18179: 0x6cae3020, 0x1817a: 0x6c217820, 0x1817b: 0x6ca96c20,
+-	0x1817c: 0x6c348a20, 0x1817d: 0x6d2aca20, 0x1817e: 0x6c362820, 0x1817f: 0x6d00a820,
+-	// Block 0x606, offset 0x18180
+-	0x18180: 0x6d1ea020, 0x18181: 0x6c362a20, 0x18182: 0x6cd13420, 0x18183: 0x6cf1dc20,
+-	0x18184: 0x6c7a3e20, 0x18185: 0x6c555020, 0x18186: 0x6c43e620, 0x18187: 0x6cf9c020,
+-	0x18188: 0x6c97dc20, 0x18189: 0x6c94a820, 0x1818a: 0x6c602a20, 0x1818b: 0x6c53f620,
+-	0x1818c: 0x6d361620, 0x1818f: 0x6cec5420,
+-	0x18191: 0x6c046820, 0x18192: 0x6c00a020, 0x18193: 0x6d3c6220,
+-	0x18194: 0x6cb8ec20, 0x18195: 0x6c46ac20, 0x18196: 0x6c289220, 0x18197: 0x6c06a820,
+-	0x18198: 0x6c0f0e20, 0x18199: 0x6c1e6020, 0x1819a: 0x6c862820, 0x1819b: 0x6cfff620,
+-	0x1819c: 0x6d054020,
+-	0x181a2: 0x6c537020, 0x181a3: 0x6ce40620,
+-	0x181a4: 0x6c244220, 0x181a5: 0x6c7e0a20, 0x181a6: 0x6c816020, 0x181a7: 0x6d367820,
+-	0x181a8: 0x6d004e20, 0x181a9: 0x6cf66620, 0x181ab: 0x6cbcce20,
+-	0x181ac: 0x6d2be820, 0x181ad: 0x6cf66820,
+-	0x181b0: 0x6c23a220, 0x181b1: 0x6c607a20, 0x181b2: 0x6c5dec20, 0x181b3: 0x6cde1220,
+-	0x181b4: 0x6d0cbe20, 0x181b5: 0x6d072420, 0x181b6: 0x6cb31c20, 0x181b7: 0x6cc9dc20,
+-	0x181bb: 0x6c4c3a20,
+-	0x181bc: 0x6d133620, 0x181bd: 0x6cfdfe20, 0x181be: 0x6d08e620, 0x181bf: 0x6c516c20,
+-	// Block 0x607, offset 0x181c0
+-	0x181c0: 0x6d42aa20, 0x181c1: 0x6d188020, 0x181c2: 0x6c226620,
+-	0x181c4: 0x6c837020, 0x181c5: 0x6cfba620, 0x181c6: 0x6cdf5620, 0x181c7: 0x6cc6bc20,
+-	0x181c8: 0x6d18be20, 0x181c9: 0x6d372220, 0x181ca: 0x6cf6fe20, 0x181cb: 0x6cfbb420,
+-	0x181cc: 0x6c72aa20, 0x181cd: 0x6c60d620, 0x181ce: 0x6c4e6820,
+-	0x181d0: 0x6cad9e20, 0x181d1: 0x6c86e620, 0x181d3: 0x6c7fe020,
+-	0x181d4: 0x6cc9e020, 0x181d5: 0x6c4e7020, 0x181d6: 0x6d0cfe20, 0x181d7: 0x6cc16020,
+-	0x181d9: 0x6d0d1620, 0x181da: 0x6c4e7420, 0x181db: 0x6c76ba20,
+-	0x181dc: 0x6c1bce20, 0x181dd: 0x6ca7e820, 0x181de: 0x6c5d9620,
+-	0x181e0: 0x6c092820, 0x181e1: 0x6cf98a20, 0x181e2: 0x6cf24820, 0x181e3: 0x6d080420,
+-	0x181e4: 0x6cec9420, 0x181e5: 0x6d1f8a20, 0x181e6: 0x6cbd4c20, 0x181e7: 0x6d066c20,
+-	0x181e8: 0x6ca7f020, 0x181e9: 0x6c091620, 0x181ea: 0x6c501020, 0x181eb: 0x6c6e0820,
+-	0x181ec: 0x6c02bc20, 0x181ed: 0x6c02be20,
+-	0x181f0: 0x6d311e20, 0x181f1: 0x6cdf8a20, 0x181f2: 0x6c70f220,
+-	0x181f4: 0x6d427a20, 0x181f5: 0x6c106220, 0x181f6: 0x6c6a8a20, 0x181f7: 0x6c009020,
+-	0x181f8: 0x6d29fc20, 0x181f9: 0x6c222620, 0x181fa: 0x6c37fc20,
+-	0x181ff: 0x6ca80620,
+-	// Block 0x608, offset 0x18200
+-	0x18200: 0x6c8f2a20, 0x18201: 0x6c99e220, 0x18202: 0x6c334420, 0x18203: 0x6c052020,
+-	0x18204: 0x6c095a20, 0x18205: 0x6c05ee20, 0x18207: 0x6c1f2c20,
+-	0x18208: 0x6cfa3620, 0x18209: 0x6ce4e820, 0x1820a: 0x6c16a220,
+-	0x1820d: 0x6c342420, 0x1820e: 0x6cee7e20, 0x1820f: 0x6c3fea20,
+-	0x18210: 0x6c348c20, 0x18211: 0x6d225420, 0x18212: 0x6d12ac20, 0x18213: 0x6c7c7620,
+-	0x18214: 0x6cefb620, 0x18215: 0x6c7b2220, 0x18217: 0x6cee8020,
+-	0x18218: 0x6d10a420, 0x18219: 0x6c903420, 0x1821a: 0x6d037a20, 0x1821b: 0x6d3b7c20,
+-	0x1821c: 0x6c1b3020, 0x1821d: 0x6d00b420, 0x1821e: 0x6ca83a20, 0x1821f: 0x6c810020,
+-	0x18220: 0x6d13fe20, 0x18221: 0x6d3f9e20, 0x18222: 0x6c976a20, 0x18223: 0x6d2f3820,
+-	0x18224: 0x6cfa4220, 0x18225: 0x6c4bfe20, 0x18226: 0x6d00c820,
+-	0x18228: 0x6c625c20, 0x18229: 0x6c8a0220, 0x1822a: 0x6d184820, 0x1822b: 0x6c607c20,
+-	0x1822c: 0x6d1a8e20, 0x1822e: 0x6c266020, 0x1822f: 0x6d184a20,
+-	0x18230: 0x6d020a20, 0x18231: 0x6c506220, 0x18232: 0x6d1e5c20, 0x18233: 0x6c76ea20,
+-	0x18234: 0x6c163220, 0x18235: 0x6cdf3e20, 0x18236: 0x6ce13020, 0x18237: 0x6d34a220,
+-	0x18238: 0x6c066e20, 0x18239: 0x6c9b5220, 0x1823a: 0x6c7ca220, 0x1823b: 0x6c153620,
+-	0x1823c: 0x6c82e020, 0x1823e: 0x6cf91220,
+-	// Block 0x609, offset 0x18240
+-	0x18240: 0x6cf72820, 0x18241: 0x6cbc7220, 0x18242: 0x6ca47e20, 0x18243: 0x6d274e20,
+-	0x18245: 0x6c8f7220, 0x18246: 0x6c3fbe20, 0x18247: 0x6d3f7220,
+-	0x18249: 0x6c475e20, 0x1824a: 0x6c762820, 0x1824b: 0x6c2dd420,
+-	0x1824c: 0x6c57aa20, 0x1824d: 0x6c7ce020, 0x1824f: 0x6c42fc20,
+-	0x18250: 0x6ce26020, 0x18252: 0x6ccd2a20, 0x18253: 0x6c7f3a20,
+-	0x18254: 0x6ca7f420, 0x18255: 0x6c3de220, 0x18256: 0x6c42fe20, 0x18257: 0x6cbc8420,
+-	0x18258: 0x6c04e420, 0x18259: 0x6c632620, 0x1825a: 0x6c796a20, 0x1825b: 0x6cf85620,
+-	0x1825c: 0x6d230820, 0x1825d: 0x6d3c5a20, 0x1825e: 0x6cd05820, 0x1825f: 0x6c21ba20,
+-	0x18260: 0x6cfed420, 0x18261: 0x6c615220, 0x18262: 0x6caa3820, 0x18263: 0x6cff6a20,
+-	0x18264: 0x6d165a20, 0x18265: 0x6d20a820, 0x18266: 0x6d145420, 0x18267: 0x6d0d3620,
+-	0x18268: 0x6cd04020, 0x18269: 0x6cc4aa20, 0x1826a: 0x6c501220, 0x1826b: 0x6cc96620,
+-	0x1826c: 0x6c755820, 0x1826d: 0x6d1ee820, 0x1826f: 0x6d02fc20,
+-	0x18270: 0x6cadae20, 0x18271: 0x6cbfa020, 0x18272: 0x6c14b820,
+-	0x18274: 0x6c106420, 0x18275: 0x6c2fdc20, 0x18276: 0x6cd88a20, 0x18277: 0x6c378620,
+-	0x18279: 0x6c992820, 0x1827a: 0x6d281820, 0x1827b: 0x6c5e8a20,
+-	0x1827d: 0x6cbc1e20, 0x1827e: 0x6d045820, 0x1827f: 0x6cad4a20,
+-	// Block 0x60a, offset 0x18280
+-	0x18280: 0x6c1e7420, 0x18281: 0x6cae5220, 0x18282: 0x6caad620, 0x18283: 0x6c6a8c20,
+-	0x18284: 0x6d13d420, 0x18285: 0x6c37c220, 0x18286: 0x6c34d420,
+-	0x1828a: 0x6c347c20,
+-	0x1828d: 0x6cbca420, 0x1828e: 0x6c938220, 0x1828f: 0x6cc02620,
+-	0x18290: 0x6cda1020, 0x18291: 0x6c11f020, 0x18292: 0x6c310020, 0x18293: 0x6cf5b820,
+-	0x18294: 0x6c3c2e20, 0x18295: 0x6d172220, 0x18296: 0x6cdd0e20, 0x18297: 0x6cbc7a20,
+-	0x18298: 0x6cb37620, 0x18299: 0x6d02c020, 0x1829a: 0x6ce7b020, 0x1829b: 0x6d032820,
+-	0x1829c: 0x6d1f1220, 0x1829d: 0x6c06fe20, 0x1829e: 0x6c905820,
+-	0x182a3: 0x6d279820,
+-	0x182a4: 0x6c83ac20, 0x182a5: 0x6cde4420, 0x182a6: 0x6c802620, 0x182a7: 0x6c97b820,
+-	0x182a8: 0x6cbb3a20, 0x182a9: 0x6d38d220, 0x182aa: 0x6d0e5c20, 0x182ab: 0x6cf5de20,
+-	0x182ac: 0x6c923620, 0x182ad: 0x6cf5e020, 0x182ae: 0x6ccae220, 0x182af: 0x6c395220,
+-	0x182b1: 0x6cefb820, 0x182b2: 0x6c383a20, 0x182b3: 0x6d179020,
+-	0x182b4: 0x6ca4f420, 0x182b5: 0x6c196c20, 0x182b6: 0x6ce09820, 0x182b7: 0x6c5ec620,
+-	0x182b8: 0x6cd5d020, 0x182b9: 0x6cb10e20, 0x182ba: 0x6c012e20, 0x182bb: 0x6c7ac420,
+-	0x182bc: 0x6c139820, 0x182be: 0x6cfb5a20, 0x182bf: 0x6d361c20,
+-	// Block 0x60b, offset 0x182c0
+-	0x182c2: 0x6c3c4820, 0x182c3: 0x6c88f420,
+-	0x182c4: 0x6d0a0a20, 0x182c5: 0x6d06ee20, 0x182c6: 0x6c9d5020, 0x182c7: 0x6c5bd620,
+-	0x182c8: 0x6ca29220, 0x182c9: 0x6d1d8c20, 0x182ca: 0x6d2df420, 0x182cb: 0x6d17de20,
+-	0x182cc: 0x6caa1e20, 0x182cd: 0x6ce10020, 0x182ce: 0x6cf63e20, 0x182cf: 0x6d27ac20,
+-	0x182d0: 0x6cd5e220, 0x182d1: 0x6c3e9420, 0x182d2: 0x6d17e020, 0x182d3: 0x6c26b020,
+-	0x182d5: 0x6c881e20, 0x182d6: 0x6c127a20, 0x182d7: 0x6c116e20,
+-	0x182d8: 0x6c725e20, 0x182d9: 0x6c927a20, 0x182da: 0x6cdae220, 0x182db: 0x6ca59a20,
+-	0x182dc: 0x6c02dc20, 0x182dd: 0x6c018c20, 0x182de: 0x6cba6420,
+-	0x182e0: 0x6c24d420, 0x182e1: 0x6c232420, 0x182e3: 0x6cc48220,
+-	0x182e4: 0x6ca73220, 0x182e5: 0x6c96fe20, 0x182e6: 0x6d030220, 0x182e7: 0x6d26e020,
+-	0x182e8: 0x6ca38220, 0x182e9: 0x6c02ee20, 0x182ea: 0x6cd01620, 0x182eb: 0x6c96dc20,
+-	0x182ee: 0x6c807a20, 0x182ef: 0x6cf6e620,
+-	0x182f0: 0x6d26f820, 0x182f1: 0x6d372620, 0x182f2: 0x6cf26420, 0x182f3: 0x6c57f620,
+-	0x182f4: 0x6c9c1820, 0x182f5: 0x6ca7bc20, 0x182f6: 0x6ced6620, 0x182f7: 0x6c9c9c20,
+-	0x182f8: 0x6ca89e20, 0x182f9: 0x6cc1f820, 0x182fa: 0x6d29b820, 0x182fb: 0x6c893e20,
+-	0x182fc: 0x6d34c620, 0x182fd: 0x6d3eda20, 0x182fe: 0x6c4d1a20, 0x182ff: 0x6d066e20,
+-	// Block 0x60c, offset 0x18300
+-	0x18300: 0x6c501820, 0x18301: 0x6d078020, 0x18302: 0x6d35b020, 0x18303: 0x6c9e1220,
+-	0x18304: 0x6c214820, 0x18305: 0x6c46b020, 0x18307: 0x6c216020,
+-	0x18308: 0x6c946a20, 0x18309: 0x6d3a9820, 0x1830a: 0x6cd43820, 0x1830b: 0x6c8a5e20,
+-	0x1830c: 0x6c6fcc20, 0x1830d: 0x6d014020, 0x1830e: 0x6c2f9220, 0x1830f: 0x6c6bae20,
+-	0x18310: 0x6cc65220, 0x18311: 0x6c982e20, 0x18313: 0x6c788a20,
+-	0x18314: 0x6d119620, 0x18315: 0x6ca8fc20, 0x18316: 0x6d148e20, 0x18317: 0x6c80a620,
+-	0x18318: 0x6d1df020, 0x18319: 0x6d1a4420, 0x1831a: 0x6d0c7e20, 0x1831b: 0x6cda9e20,
+-	0x1831d: 0x6c8baa20, 0x1831e: 0x6d0aec20, 0x1831f: 0x6c98d820,
+-	0x18320: 0x6c9ff420, 0x18321: 0x6d41aa20, 0x18322: 0x6d225620, 0x18323: 0x6d179220,
+-	0x18324: 0x6c46b220, 0x18325: 0x6c9cfa20, 0x18326: 0x6c75c820, 0x18327: 0x6cf1e420,
+-	0x18329: 0x6c773a20, 0x1832a: 0x6c2d7020, 0x1832b: 0x6c8f9820,
+-	0x1832d: 0x6d040620, 0x1832e: 0x6c255420, 0x1832f: 0x6cbbec20,
+-	0x18330: 0x6c9dde20, 0x18331: 0x6c9c1c20, 0x18332: 0x6cbdf420,
+-	0x18334: 0x6cecc220, 0x18335: 0x6c2a5e20, 0x18336: 0x6c009420,
+-	0x18338: 0x6c0b8c20, 0x18339: 0x6ca9fe20, 0x1833a: 0x6c882020, 0x1833b: 0x6c6caa20,
+-	0x1833c: 0x6d207020, 0x1833d: 0x6c20bc20, 0x1833e: 0x6d426420, 0x1833f: 0x6c0fe020,
+-	// Block 0x60d, offset 0x18340
+-	0x18340: 0x6c5a9020, 0x18341: 0x6d11f020, 0x18342: 0x6ce9e020, 0x18343: 0x6c61e220,
+-	0x18344: 0x6c012420, 0x18345: 0x6c95fa20, 0x18346: 0x6c613220, 0x18347: 0x6cefba20,
+-	0x18348: 0x6c0e7420, 0x18349: 0x6d289020, 0x1834a: 0x6d06f020, 0x1834b: 0x6ca71220,
+-	0x1834c: 0x6d281420, 0x1834e: 0x6c039820, 0x1834f: 0x6d301a20,
+-	0x18350: 0x6c705420, 0x18351: 0x6cef9020, 0x18352: 0x6d016e20, 0x18353: 0x6cb75420,
+-	0x18354: 0x6d149020, 0x18355: 0x6d017020, 0x18356: 0x6c222a20, 0x18357: 0x6cc02820,
+-	0x18358: 0x6c316a20, 0x18359: 0x6ca7d420, 0x1835a: 0x6cb78a20, 0x1835b: 0x6c613c20,
+-	0x1835c: 0x6ce99420, 0x1835e: 0x6cd94c20, 0x1835f: 0x6c2d7420,
+-	0x18360: 0x6c816820, 0x18361: 0x6d2e2c20,
+-	0x18364: 0x6d1a1c20, 0x18365: 0x6c132620, 0x18366: 0x6c611220, 0x18367: 0x6c5b8620,
+-	0x18368: 0x6d3ede20, 0x18369: 0x6c7f8820, 0x1836a: 0x6ca49020, 0x1836b: 0x6c71f020,
+-	0x1836c: 0x6cbdfc20, 0x1836d: 0x6c272620, 0x1836f: 0x6c6a6020,
+-	0x18370: 0x6d062620, 0x18371: 0x6c22fa20, 0x18372: 0x6d1e6e20, 0x18373: 0x6c30d820,
+-	0x18374: 0x6c1afe20, 0x18376: 0x6c9f9020, 0x18377: 0x6c59a820,
+-	0x18378: 0x6cdc2020, 0x18379: 0x6c785620, 0x1837a: 0x6d40aa20, 0x1837b: 0x6c501a20,
+-	0x1837c: 0x6c19ba20, 0x1837d: 0x6d094220, 0x1837e: 0x6ca5bc20, 0x1837f: 0x6c1bec20,
+-	// Block 0x60e, offset 0x18380
+-	0x18380: 0x6c87f020, 0x18381: 0x6c01a020, 0x18382: 0x6ca22a20, 0x18383: 0x6cd7ca20,
+-	0x18384: 0x6cfdb220, 0x18385: 0x6d0f9020, 0x18386: 0x6c572c20, 0x18387: 0x6c261620,
+-	0x18388: 0x6cc02a20, 0x18389: 0x6c814c20, 0x1838a: 0x6c3e2e20, 0x1838b: 0x6c334620,
+-	0x1838c: 0x6c984c20, 0x1838d: 0x6c80a820, 0x1838e: 0x6ceb7220, 0x1838f: 0x6c4df220,
+-	0x18390: 0x6c988820, 0x18391: 0x6c0ed220, 0x18392: 0x6cc43220, 0x18393: 0x6cb59e20,
+-	0x18394: 0x6c4df420, 0x18396: 0x6c905c20,
+-	0x18398: 0x6ce57e20, 0x18399: 0x6d2aba20, 0x1839a: 0x6cb5ba20, 0x1839b: 0x6d298a20,
+-	0x1839c: 0x6c9c4620, 0x1839d: 0x6cadd220, 0x1839e: 0x6d2e5620, 0x1839f: 0x6cfe2c20,
+-	0x183a0: 0x6c429c20, 0x183a2: 0x6cb5bc20,
+-	0x183a4: 0x6c923820, 0x183a6: 0x6d283020, 0x183a7: 0x6c362e20,
+-	0x183a8: 0x6c329a20, 0x183a9: 0x6c9f5020, 0x183aa: 0x6cee8420, 0x183ab: 0x6cc2ec20,
+-	0x183ac: 0x6cda1c20, 0x183ad: 0x6c9f5220, 0x183ae: 0x6ce85e20,
+-	0x183b0: 0x6ca03620, 0x183b1: 0x6d11b420, 0x183b2: 0x6c746220, 0x183b3: 0x6c862c20,
+-	0x183b4: 0x6c7b2620, 0x183b5: 0x6c42a420, 0x183b6: 0x6d257e20, 0x183b7: 0x6c26fa20,
+-	0x183b9: 0x6c816220, 0x183ba: 0x6c909c20, 0x183bb: 0x6cba6620,
+-	0x183bc: 0x6c025c20, 0x183bd: 0x6c0c7620, 0x183be: 0x6d1d9a20, 0x183bf: 0x6c989820,
+-	// Block 0x60f, offset 0x183c0
+-	0x183c0: 0x6c29e020, 0x183c2: 0x6c025e20,
+-	0x183c4: 0x6cf78e20, 0x183c5: 0x6c3ed420, 0x183c6: 0x6c27f820, 0x183c7: 0x6c701420,
+-	0x183c8: 0x6cc90220, 0x183c9: 0x6ce77a20, 0x183ca: 0x6cc13220, 0x183cb: 0x6c368220,
+-	0x183cc: 0x6cb51a20, 0x183cd: 0x6c607e20, 0x183ce: 0x6c608020, 0x183cf: 0x6c574c20,
+-	0x183d0: 0x6c69b820, 0x183d1: 0x6d41cc20, 0x183d2: 0x6c0c7a20, 0x183d3: 0x6c9b4620,
+-	0x183d4: 0x6c045620, 0x183d5: 0x6cf01420, 0x183d6: 0x6d160e20, 0x183d7: 0x6c02f020,
+-	0x183d8: 0x6d229e20, 0x183d9: 0x6c4ff020, 0x183da: 0x6c336620, 0x183db: 0x6cf31a20,
+-	0x183dc: 0x6ca6d620, 0x183dd: 0x6c249e20, 0x183df: 0x6c846e20,
+-	0x183e0: 0x6c916c20, 0x183e1: 0x6ca7be20, 0x183e2: 0x6c57f820, 0x183e3: 0x6c86f020,
+-	0x183e5: 0x6c941c20, 0x183e6: 0x6c3c7e20, 0x183e7: 0x6c9d0c20,
+-	0x183e8: 0x6d249e20, 0x183ea: 0x6c71e620,
+-	0x183ed: 0x6d2dec20, 0x183ee: 0x6cae8220, 0x183ef: 0x6d15b220,
+-	0x183f1: 0x6c61e420, 0x183f2: 0x6c08ae20,
+-	0x183f4: 0x6cc5b420, 0x183f5: 0x6c597220, 0x183f6: 0x6c388020, 0x183f7: 0x6c43c220,
+-	0x183f8: 0x6c7a8020, 0x183f9: 0x6c6bb420, 0x183fa: 0x6ccbc220,
+-	0x183fc: 0x6cd7c220, 0x183fd: 0x6ce71620, 0x183fe: 0x6d24c820, 0x183ff: 0x6d3e0420,
+-	// Block 0x610, offset 0x18400
+-	0x18400: 0x6c092c20, 0x18401: 0x6c7ad820, 0x18402: 0x6c859e20, 0x18403: 0x6c598220,
+-	0x18404: 0x6d09e620, 0x18405: 0x6caad820, 0x18407: 0x6d303820,
+-	0x18408: 0x6cf20220, 0x18409: 0x6cfb4420, 0x1840a: 0x6cb85a20, 0x1840b: 0x6d127a20,
+-	0x1840c: 0x6c996c20, 0x1840f: 0x6cd5d420,
+-	0x18411: 0x6cbb7a20, 0x18412: 0x6d3cd220, 0x18413: 0x6c7d6020,
+-	0x18414: 0x6cf4ea20, 0x18415: 0x6d1bb820, 0x18416: 0x6c207220, 0x18417: 0x6ce33e20,
+-	0x18418: 0x6c880e20, 0x18419: 0x6c087820, 0x1841a: 0x6c464e20, 0x1841b: 0x6c986820,
+-	0x1841c: 0x6d01d020, 0x1841d: 0x6c3cec20, 0x1841e: 0x6c909e20, 0x1841f: 0x6d2a1820,
+-	0x18420: 0x6d335e20, 0x18421: 0x6c1ea220, 0x18422: 0x6c980020, 0x18423: 0x6c8faa20,
+-	0x18425: 0x6d1b8620, 0x18426: 0x6cb1f020, 0x18427: 0x6d337020,
+-	0x18428: 0x6c653020, 0x18429: 0x6c945420, 0x1842a: 0x6ca7e420, 0x1842b: 0x6d179a20,
+-	0x1842d: 0x6c623420, 0x1842e: 0x6c60a420, 0x1842f: 0x6d2d1a20,
+-	0x18430: 0x6d221a20, 0x18431: 0x6c6fa620, 0x18432: 0x6c585620, 0x18433: 0x6d34e220,
+-	0x18434: 0x6c7e3c20, 0x18435: 0x6c8ca820, 0x18436: 0x6d34f020, 0x18437: 0x6c079420,
+-	0x18438: 0x6d2cae20, 0x18439: 0x6c705820, 0x1843a: 0x6c286620, 0x1843b: 0x6c8a9020,
+-	0x1843c: 0x6d16e820, 0x1843d: 0x6d2fa020, 0x1843e: 0x6cfc8e20, 0x1843f: 0x6c1bf820,
+-	// Block 0x611, offset 0x18440
+-	0x18440: 0x6c22ba20, 0x18441: 0x6c1b8420, 0x18442: 0x6d0d5420, 0x18443: 0x6c80aa20,
+-	0x18444: 0x6c310220, 0x18445: 0x6c905e20, 0x18446: 0x6c14ec20,
+-	0x18448: 0x6ce9a020, 0x18449: 0x6c13da20, 0x1844a: 0x6c006620, 0x1844b: 0x6c1b9c20,
+-	0x1844d: 0x6d1cec20, 0x1844e: 0x6d305a20, 0x1844f: 0x6ce7ee20,
+-	0x18451: 0x6ce9a620, 0x18452: 0x6c13f420, 0x18453: 0x6d11be20,
+-	0x18454: 0x6d3ffe20, 0x18456: 0x6cac4020, 0x18457: 0x6cbc5620,
+-	0x18458: 0x6c883220, 0x18459: 0x6cbd9c20, 0x1845a: 0x6c91d820, 0x1845b: 0x6d0eb820,
+-	0x1845c: 0x6c778e20, 0x1845d: 0x6cda5e20, 0x1845e: 0x6d192820, 0x1845f: 0x6c14b420,
+-	0x18460: 0x6c6ef620, 0x18461: 0x6c67b020, 0x18463: 0x6c6ea820,
+-	0x18465: 0x6c305c20, 0x18467: 0x6c733620,
+-	0x18468: 0x6c4e8420, 0x18469: 0x6c2c1020,
+-	0x1846c: 0x6c52f620, 0x1846e: 0x6c1b0820, 0x1846f: 0x6c2dae20,
+-	0x18470: 0x6c093020, 0x18472: 0x6d0a6e20, 0x18473: 0x6c913e20,
+-	0x18475: 0x6d007e20, 0x18476: 0x6c094420,
+-	0x18478: 0x6c095c20, 0x1847a: 0x6cfb4620, 0x1847b: 0x6cc8c820,
+-	0x1847c: 0x6c0d1420, 0x1847d: 0x6c379620, 0x1847e: 0x6c736220,
+-	// Block 0x612, offset 0x18480
+-	0x18480: 0x6d324820, 0x18481: 0x6c072e20, 0x18482: 0x6c365620, 0x18483: 0x6d227a20,
+-	0x18484: 0x6cc1b220, 0x18485: 0x6d299420, 0x18486: 0x6c9ca820, 0x18487: 0x6d16b220,
+-	0x18488: 0x6cd8e620,
+-	0x1848c: 0x6ccd6e20, 0x1848d: 0x6cdf1620, 0x1848e: 0x6ca28220, 0x1848f: 0x6c6e8220,
+-	0x18490: 0x6c0b9620, 0x18491: 0x6cc68e20, 0x18492: 0x6c136e20, 0x18493: 0x6c120220,
+-	0x18494: 0x6c2f4820,
+-	0x18499: 0x6c2b5620, 0x1849a: 0x6ce7ac20, 0x1849b: 0x6cde3220,
+-	0x1849c: 0x6d03ce20, 0x1849d: 0x6cd90a20, 0x1849e: 0x6c343e20, 0x1849f: 0x6cf85e20,
+-	0x184a0: 0x6ce1b220, 0x184a2: 0x6ce31620, 0x184a3: 0x6ccd7820,
+-	0x184a4: 0x6c667620, 0x184a5: 0x6d35da20, 0x184a6: 0x6cee7220, 0x184a7: 0x6d1b4620,
+-	0x184aa: 0x6c58d620, 0x184ab: 0x6d37f220,
+-	0x184ac: 0x6cb78c20, 0x184ad: 0x6d3f8820, 0x184af: 0x6d01c220,
+-	0x184b0: 0x6d01d220, 0x184b1: 0x6d2ade20, 0x184b2: 0x6cef1e20,
+-	0x184b5: 0x6cde9820, 0x184b6: 0x6d2d9820, 0x184b7: 0x6ca95820,
+-	0x184bb: 0x6d166620,
+-	0x184bc: 0x6cc58420, 0x184bd: 0x6cd59620, 0x184be: 0x6c142a20, 0x184bf: 0x6d3d1e20,
+-	// Block 0x613, offset 0x184c0
+-	0x184c1: 0x6c9e0620, 0x184c2: 0x6c5fdc20, 0x184c3: 0x6c39a420,
+-	0x184c4: 0x6cadfe20, 0x184c5: 0x6c008e20, 0x184c6: 0x6c392020, 0x184c7: 0x6c029a20,
+-	0x184c8: 0x6cbe0220, 0x184c9: 0x6cb82220, 0x184ca: 0x6cffd020, 0x184cb: 0x6c3b1020,
+-	0x184cc: 0x6c417420, 0x184cd: 0x6cbb6620, 0x184ce: 0x6c437a20, 0x184cf: 0x6ce71c20,
+-	0x184d0: 0x6c14ba20, 0x184d1: 0x6d201620, 0x184d2: 0x6c42b420, 0x184d3: 0x6c07a820,
+-	0x184d4: 0x6c3fb420, 0x184d5: 0x6c1f0c20, 0x184d6: 0x6d3aac20,
+-	0x184d8: 0x6d390020, 0x184da: 0x6c4f6220, 0x184db: 0x6ca8e420,
+-	0x184dc: 0x6c73f820, 0x184dd: 0x6c1cb020, 0x184de: 0x6c143820, 0x184df: 0x6c799c20,
+-	0x184e0: 0x6c8ae820, 0x184e1: 0x6c85a020, 0x184e2: 0x6d22e020,
+-	0x184e4: 0x6d20d620, 0x184e5: 0x6c4d5820, 0x184e6: 0x6c85a220, 0x184e7: 0x6c53ee20,
+-	0x184e8: 0x6c45d820, 0x184e9: 0x6c789820, 0x184ea: 0x6d260c20, 0x184eb: 0x6c2a6220,
+-	0x184ec: 0x6c5b9a20, 0x184ee: 0x6c4a2220, 0x184ef: 0x6c6f0620,
+-	0x184f0: 0x6d429a20, 0x184f1: 0x6c3fce20, 0x184f2: 0x6cbcb220, 0x184f3: 0x6c06c820,
+-	0x184f4: 0x6c180a20, 0x184f5: 0x6c223e20, 0x184f6: 0x6c985020, 0x184f7: 0x6c4d9820,
+-	0x184f8: 0x6cf86a20, 0x184f9: 0x6cc02e20, 0x184fa: 0x6c5a4620,
+-	0x184fd: 0x6c1d9620, 0x184fe: 0x6cca4c20, 0x184ff: 0x6d0bf420,
+-	// Block 0x614, offset 0x18500
+-	0x18500: 0x6d345620, 0x18501: 0x6c2a6c20, 0x18502: 0x6ce27420, 0x18503: 0x6c9aec20,
+-	0x18504: 0x6c8ce220, 0x18505: 0x6cd45e20, 0x18506: 0x6ce9fa20, 0x18507: 0x6c119220,
+-	0x18508: 0x6c2ea020, 0x18509: 0x6c181420, 0x1850a: 0x6cae9c20, 0x1850b: 0x6d13f020,
+-	0x1850c: 0x6c711220, 0x1850d: 0x6c61e820, 0x1850e: 0x6c7f0620, 0x1850f: 0x6ce4ea20,
+-	0x18510: 0x6d261a20, 0x18512: 0x6c112820, 0x18513: 0x6cb4e420,
+-	0x18514: 0x6d230e20, 0x18515: 0x6c880220, 0x18516: 0x6c231420,
+-	0x1851a: 0x6d212020, 0x1851b: 0x6c603220,
+-	0x1851c: 0x6cf09420, 0x1851d: 0x6c9cf020, 0x1851e: 0x6cdc3e20, 0x1851f: 0x6d00aa20,
+-	0x18520: 0x6d059620, 0x18521: 0x6c1c1c20, 0x18522: 0x6cc06020, 0x18523: 0x6c5bde20,
+-	0x18525: 0x6d212220, 0x18526: 0x6cbcc620, 0x18527: 0x6cd74e20,
+-	0x18528: 0x6cd72620, 0x18529: 0x6c349020, 0x1852a: 0x6c908820,
+-	0x1852c: 0x6cad0620, 0x1852d: 0x6cdf7820, 0x1852e: 0x6d393020, 0x1852f: 0x6d1af420,
+-	0x18530: 0x6ccab420, 0x18531: 0x6c3a5a20, 0x18532: 0x6c187620, 0x18533: 0x6d258020,
+-	0x18534: 0x6d151620, 0x18535: 0x6c5d2a20, 0x18536: 0x6ccb3420, 0x18537: 0x6d131020,
+-	0x18538: 0x6c9fbc20, 0x18539: 0x6c3bbe20, 0x1853a: 0x6c513620,
+-	0x1853c: 0x6d1b6420, 0x1853d: 0x6c130220, 0x1853e: 0x6ca6b620, 0x1853f: 0x6c02e820,
+-	// Block 0x615, offset 0x18540
+-	0x18540: 0x6c3cb420, 0x18541: 0x6c883420, 0x18542: 0x6c16be20, 0x18543: 0x6c15c820,
+-	0x18544: 0x6c967020, 0x18545: 0x6c2e5a20, 0x18546: 0x6c54e620, 0x18547: 0x6c928020,
+-	0x18549: 0x6d184c20, 0x1854a: 0x6c574e20, 0x1854b: 0x6d2bf220,
+-	0x1854c: 0x6c550020, 0x1854d: 0x6c368420, 0x1854e: 0x6c5dee20, 0x1854f: 0x6cdcf820,
+-	0x18550: 0x6ca6bc20, 0x18551: 0x6cfcf620, 0x18552: 0x6c842620, 0x18553: 0x6cfcf820,
+-	0x18554: 0x6d0eba20, 0x18555: 0x6c8fa420, 0x18556: 0x6c9af620, 0x18557: 0x6c6c5c20,
+-	0x18558: 0x6c5f5020, 0x1855a: 0x6c0b5a20, 0x1855b: 0x6d22a420,
+-	0x1855c: 0x6c5e0620, 0x1855d: 0x6c9ea420, 0x1855e: 0x6c1df220, 0x1855f: 0x6c970620,
+-	0x18561: 0x6c822c20, 0x18562: 0x6c6b5620, 0x18563: 0x6cf10a20,
+-	0x18564: 0x6d192a20, 0x18565: 0x6d07e020, 0x18566: 0x6cf91420, 0x18567: 0x6c11e220,
+-	0x18568: 0x6c7fe420, 0x18569: 0x6d1b2220, 0x1856a: 0x6d027220, 0x1856b: 0x6d28a620,
+-	0x1856c: 0x6c95d220, 0x1856d: 0x6c8dd220, 0x1856e: 0x6cb97020, 0x1856f: 0x6c5d9a20,
+-	0x18570: 0x6c646a20, 0x18571: 0x6cf2a820,
+-	0x18574: 0x6c43d420, 0x18575: 0x6d399020, 0x18576: 0x6c2e8220, 0x18577: 0x6d1e2c20,
+-	0x18578: 0x6c614220, 0x18579: 0x6d0fc020, 0x1857a: 0x6cc82220, 0x1857b: 0x6cf79a20,
+-	0x1857c: 0x6cd6f020, 0x1857d: 0x6d240820, 0x1857e: 0x6d146020, 0x1857f: 0x6cb9f220,
+-	// Block 0x616, offset 0x18580
+-	0x18580: 0x6c5fde20, 0x18581: 0x6cc26420, 0x18582: 0x6ce48a20, 0x18583: 0x6cd42820,
+-	0x18584: 0x6cb9ee20, 0x18585: 0x6ca26020, 0x18586: 0x6c6c2620, 0x18587: 0x6c992420,
+-	0x18588: 0x6d1ac820, 0x18589: 0x6c412a20, 0x1858a: 0x6cb2ee20, 0x1858b: 0x6d084020,
+-	0x1858c: 0x6c994220, 0x1858d: 0x6c39c020, 0x1858e: 0x6d0b1020, 0x1858f: 0x6c425420,
+-	0x18590: 0x6cd95020, 0x18591: 0x6c5a8a20, 0x18592: 0x6d22d620, 0x18593: 0x6c484820,
+-	0x18594: 0x6c48e820, 0x18595: 0x6c8ef820, 0x18596: 0x6c35de20, 0x18597: 0x6d3eec20,
+-	0x18598: 0x6d3f3220, 0x18599: 0x6c093820, 0x1859a: 0x6cec1620,
+-	0x1859c: 0x6c8acc20, 0x1859f: 0x6c7af620,
+-	0x185a1: 0x6c4d5a20, 0x185a2: 0x6d19b020, 0x185a3: 0x6d398820,
+-	0x185a4: 0x6c1d4820, 0x185a5: 0x6cfbea20, 0x185a6: 0x6d087420,
+-	0x185a8: 0x6cc01420, 0x185a9: 0x6cae0c20, 0x185aa: 0x6c4ad620, 0x185ab: 0x6c373e20,
+-	0x185ac: 0x6c45dc20, 0x185ad: 0x6cbf0820, 0x185ae: 0x6c54ac20, 0x185af: 0x6c81a620,
+-	0x185b0: 0x6c85a420, 0x185b1: 0x6c192220, 0x185b2: 0x6cca1620, 0x185b3: 0x6d3df420,
+-	0x185b4: 0x6cf2ae20, 0x185b5: 0x6cb3d420, 0x185b6: 0x6c793020, 0x185b7: 0x6cea8820,
+-	0x185b8: 0x6cae5c20, 0x185b9: 0x6ce27620, 0x185ba: 0x6cde4a20, 0x185bb: 0x6d3d4c20,
+-	0x185bc: 0x6c0c8e20, 0x185bd: 0x6c480e20, 0x185be: 0x6c54be20,
+-	// Block 0x617, offset 0x185c0
+-	0x185c0: 0x6c0de020, 0x185c1: 0x6d35de20, 0x185c2: 0x6c302e20, 0x185c3: 0x6c332220,
+-	0x185c4: 0x6d387220, 0x185c5: 0x6ca58a20, 0x185c6: 0x6c8c1c20, 0x185c7: 0x6cb32a20,
+-	0x185c8: 0x6c613420, 0x185c9: 0x6c9f5420, 0x185ca: 0x6cefc220, 0x185cb: 0x6c17ea20,
+-	0x185cc: 0x6c46b620, 0x185cd: 0x6c053220, 0x185ce: 0x6cc7aa20, 0x185cf: 0x6cdfa820,
+-	0x185d0: 0x6c103a20, 0x185d1: 0x6d3f8c20, 0x185d2: 0x6c7c3c20, 0x185d3: 0x6c815820,
+-	0x185d4: 0x6c4ec220, 0x185d5: 0x6d1c7020, 0x185d6: 0x6d362620, 0x185d7: 0x6c6ac620,
+-	0x185d8: 0x6d040220, 0x185d9: 0x6d00b820, 0x185da: 0x6d0a1620, 0x185db: 0x6ccd4620,
+-	0x185dc: 0x6cb9a620, 0x185dd: 0x6d004620, 0x185de: 0x6cdacc20, 0x185df: 0x6c4d1820,
+-	0x185e0: 0x6c9d5820, 0x185e1: 0x6c5cee20, 0x185e2: 0x6caf7220,
+-	0x185e4: 0x6c5be020, 0x185e5: 0x6ca34c20, 0x185e6: 0x6cd96220, 0x185e7: 0x6c07bc20,
+-	0x185e8: 0x6c1d7220, 0x185e9: 0x6c6ae220, 0x185ea: 0x6c5a6e20, 0x185eb: 0x6c802c20,
+-	0x185ed: 0x6c56b420, 0x185ee: 0x6c30b620, 0x185ef: 0x6c5de420,
+-	0x185f0: 0x6c4bd420, 0x185f1: 0x6d111c20, 0x185f2: 0x6c130420, 0x185f3: 0x6c4b1220,
+-	0x185f4: 0x6c66a620, 0x185f5: 0x6c65c020, 0x185f6: 0x6c29e620, 0x185f7: 0x6c6d2420,
+-	0x185f8: 0x6c96cc20, 0x185f9: 0x6c5bf820, 0x185fa: 0x6c9e3420, 0x185fb: 0x6c11a820,
+-	0x185fc: 0x6c94ba20, 0x185fd: 0x6cb0aa20, 0x185fe: 0x6d105a20, 0x185ff: 0x6c726420,
+-	// Block 0x618, offset 0x18600
+-	0x18600: 0x6c726620, 0x18601: 0x6cc3dc20, 0x18603: 0x6cb91220,
+-	0x18604: 0x6ccc8e20, 0x18606: 0x6c701820, 0x18607: 0x6c5df020,
+-	0x18608: 0x6d27fa20, 0x18609: 0x6c26b820, 0x1860a: 0x6d07ba20, 0x1860b: 0x6cff0420,
+-	0x1860c: 0x6c3ac620, 0x1860d: 0x6c131020, 0x1860e: 0x6d132420,
+-	0x18610: 0x6c2a9820, 0x18612: 0x6cbda020, 0x18613: 0x6c5b6a20,
+-	0x18614: 0x6cea6c20, 0x18616: 0x6cbb2420, 0x18617: 0x6cf7a020,
+-	0x18618: 0x6ca64a20, 0x18619: 0x6cc9ce20, 0x1861a: 0x6c9b5620, 0x1861b: 0x6ce95e20,
+-	0x1861c: 0x6c804220, 0x1861d: 0x6c4ff220, 0x1861e: 0x6c22e620, 0x1861f: 0x6d2d4e20,
+-	0x18620: 0x6c023220, 0x18621: 0x6c95c420, 0x18622: 0x6c9efa20,
+-	0x18624: 0x6c3daa20, 0x18626: 0x6d010c20, 0x18627: 0x6c0f8c20,
+-	0x18628: 0x6c5c6820, 0x18629: 0x6cbeb820, 0x1862a: 0x6d010e20,
+-	0x1862d: 0x6c0fa220, 0x1862e: 0x6cb9dc20, 0x1862f: 0x6cb34020,
+-	0x18630: 0x6c696820, 0x18631: 0x6c750a20, 0x18632: 0x6c7dc620, 0x18633: 0x6cd97a20,
+-	0x18634: 0x6c718e20, 0x18635: 0x6c36f020, 0x18636: 0x6ca8c020, 0x18637: 0x6cb95a20,
+-	0x18638: 0x6c2f1a20, 0x18639: 0x6c2f1c20, 0x1863b: 0x6cb4da20,
+-	0x1863c: 0x6d33c220, 0x1863d: 0x6cb5c620, 0x1863e: 0x6d3c8620, 0x1863f: 0x6c7a1c20,
+-	// Block 0x619, offset 0x18640
+-	0x18640: 0x6d20b420, 0x18641: 0x6cbd5820, 0x18642: 0x6c7a2620, 0x18643: 0x6c50d420,
+-	0x18644: 0x6c3e0a20, 0x18646: 0x6c2be220, 0x18647: 0x6cfca620,
+-	0x18648: 0x6c4b3c20, 0x18649: 0x6c50ee20, 0x1864a: 0x6cc44620, 0x1864b: 0x6c4eaa20,
+-	0x1864c: 0x6ce7b420, 0x1864d: 0x6c0ee620, 0x1864e: 0x6ccd3e20, 0x1864f: 0x6c08de20,
+-	0x18650: 0x6c924e20, 0x18651: 0x6d12f020, 0x18652: 0x6ca5e220, 0x18653: 0x6c1fba20,
+-	0x18654: 0x6cca5020, 0x18655: 0x6c2e2820, 0x18656: 0x6c925020, 0x18657: 0x6ce81220,
+-	0x18658: 0x6c88bc20, 0x18659: 0x6c786620, 0x1865a: 0x6cca5220, 0x1865b: 0x6d31e420,
+-	0x1865c: 0x6c1fc020, 0x1865d: 0x6c890220, 0x1865e: 0x6c998c20,
+-	0x18660: 0x6cb90620, 0x18661: 0x6c769220, 0x18662: 0x6cceb620, 0x18663: 0x6cfeea20,
+-	0x18664: 0x6c0a2020, 0x18665: 0x6d2bf420, 0x18666: 0x6d1b7220, 0x18667: 0x6cf6bc20,
+-	0x18668: 0x6ccdaa20, 0x18669: 0x6cdb1220, 0x1866a: 0x6cc98e20, 0x1866b: 0x6cc8e820,
+-	0x1866c: 0x6c219c20, 0x1866d: 0x6c917c20, 0x1866e: 0x6c8d9820, 0x1866f: 0x6c13c620,
+-	0x18671: 0x6c593020,
+-	0x18674: 0x6c63a220, 0x18675: 0x6c04ee20, 0x18676: 0x6c553220, 0x18677: 0x6c30ec20,
+-	0x18679: 0x6c90f020, 0x1867a: 0x6c70d220, 0x1867b: 0x6c73a620,
+-	0x1867c: 0x6c785c20, 0x1867d: 0x6cdd5220, 0x1867e: 0x6c95f020, 0x1867f: 0x6d303c20,
+-	// Block 0x61a, offset 0x18680
+-	0x18680: 0x6c2f7220, 0x18681: 0x6c32d220, 0x18682: 0x6d3b1c20, 0x18683: 0x6d0d3a20,
+-	0x18684: 0x6cacf420, 0x18685: 0x6c13d820,
+-	0x1868a: 0x6d15e620,
+-	0x1868d: 0x6d1f3420, 0x1868e: 0x6c5ae620, 0x1868f: 0x6d11c820,
+-	0x18690: 0x6d118020, 0x18691: 0x6d34d620, 0x18692: 0x6c45d220, 0x18693: 0x6cb6d420,
+-	0x18694: 0x6c44ac20, 0x18697: 0x6c545c20,
+-	0x18698: 0x6c9d2420, 0x18699: 0x6c3df020, 0x1869a: 0x6c54a020, 0x1869b: 0x6c4a1a20,
+-	0x1869c: 0x6ce05620, 0x1869d: 0x6c2b1a20, 0x1869f: 0x6d0c7220,
+-	0x186a2: 0x6cc26620,
+-	0x186a4: 0x6c16e420, 0x186a5: 0x6ca02e20, 0x186a6: 0x6ce1bc20, 0x186a7: 0x6c063c20,
+-	0x186a8: 0x6c011e20, 0x186ab: 0x6cfbf620,
+-	0x186af: 0x6c996e20,
+-	0x186b0: 0x6c811c20, 0x186b1: 0x6ca42220, 0x186b2: 0x6c070c20, 0x186b3: 0x6c18be20,
+-	0x186b5: 0x6c3a0420, 0x186b6: 0x6d38e620, 0x186b7: 0x6c5ece20,
+-	0x186b8: 0x6c6a1420, 0x186b9: 0x6cd5d620, 0x186bb: 0x6c7dd220,
+-	0x186bc: 0x6c2ea620, 0x186bd: 0x6c925220,
+-	// Block 0x61b, offset 0x186c0
+-	0x186c2: 0x6d215020, 0x186c3: 0x6cdf2620,
+-	0x186c4: 0x6c162e20, 0x186c5: 0x6c97de20, 0x186c6: 0x6c9fb820, 0x186c7: 0x6c593220,
+-	0x186c8: 0x6cf15420, 0x186c9: 0x6caa9220, 0x186ca: 0x6c593420, 0x186cb: 0x6c540a20,
+-	0x186cc: 0x6c6e8e20, 0x186cd: 0x6c0f2620, 0x186ce: 0x6cfc2020, 0x186cf: 0x6c864820,
+-	0x186d0: 0x6c6d2620, 0x186d2: 0x6c989c20, 0x186d3: 0x6cb1ba20,
+-	0x186d4: 0x6c4fde20, 0x186d5: 0x6d0fd620, 0x186d7: 0x6cfd0a20,
+-	0x186d8: 0x6cdb1420, 0x186d9: 0x6cf01620, 0x186da: 0x6c183c20, 0x186db: 0x6cf6be20,
+-	0x186dc: 0x6c6d4c20, 0x186dd: 0x6c135a20, 0x186de: 0x6c51e420, 0x186df: 0x6c3b4020,
+-	0x186e0: 0x6ccca620, 0x186e1: 0x6c8d6a20, 0x186e3: 0x6c337220,
+-	0x186e4: 0x6cb54220, 0x186e5: 0x6cb4b820, 0x186e6: 0x6d26fa20, 0x186e7: 0x6c0f8e20,
+-	0x186e9: 0x6c5c7820, 0x186ea: 0x6c2f0220, 0x186eb: 0x6d0ef620,
+-	0x186ec: 0x6c72d020, 0x186ed: 0x6c69e020, 0x186ee: 0x6ca44c20, 0x186ef: 0x6c8b8620,
+-	0x186f0: 0x6d20aa20, 0x186f1: 0x6ce41c20, 0x186f2: 0x6ce47620, 0x186f3: 0x6cf42a20,
+-	0x186f4: 0x6c53a220, 0x186f5: 0x6cff7220, 0x186f6: 0x6c503620,
+-	0x186f8: 0x6ce55c20, 0x186f9: 0x6d32ca20, 0x186fb: 0x6c59a020,
+-	0x186fc: 0x6c403420, 0x186ff: 0x6cea2c20,
+-	// Block 0x61c, offset 0x18700
+-	0x18701: 0x6cc61a20, 0x18702: 0x6c68ba20,
+-	0x18704: 0x6d031c20, 0x18707: 0x6d260020,
+-	0x18708: 0x6c73ee20, 0x18709: 0x6c572820, 0x1870b: 0x6c056020,
+-	0x1870c: 0x6ca1c420, 0x1870e: 0x6c425e20, 0x1870f: 0x6cef9220,
+-	0x18711: 0x6c9a8020, 0x18712: 0x6cd89c20, 0x18713: 0x6c0b8820,
+-	0x18714: 0x6c914220, 0x18715: 0x6cc0e620,
+-	0x18718: 0x6c43da20, 0x18719: 0x6d303e20, 0x1871a: 0x6c938c20, 0x1871b: 0x6cac2020,
+-	0x1871c: 0x6cc66220, 0x1871d: 0x6cc03020, 0x1871e: 0x6c8aea20, 0x1871f: 0x6c45e020,
+-	0x18720: 0x6cfbf820, 0x18721: 0x6cf86e20, 0x18722: 0x6d02c620,
+-	0x18724: 0x6ca79620,
+-	0x18728: 0x6d00a220, 0x18729: 0x6c8afe20, 0x1872a: 0x6c3d6420, 0x1872b: 0x6c25d620,
+-	0x1872c: 0x6d3d4e20, 0x1872d: 0x6c034820, 0x1872e: 0x6d429c20, 0x1872f: 0x6d305020,
+-	0x18730: 0x6d416e20, 0x18731: 0x6c510620, 0x18732: 0x6c601a20,
+-	0x18734: 0x6c648620,
+-	0x18738: 0x6ce8b020, 0x18739: 0x6cfb5c20, 0x1873a: 0x6d0d8620, 0x1873b: 0x6ce0f420,
+-	0x1873c: 0x6cde5620, 0x1873d: 0x6c2bf620, 0x1873e: 0x6c744c20, 0x1873f: 0x6c01fc20,
+-	// Block 0x61d, offset 0x18740
+-	0x18740: 0x6c4e1020, 0x18741: 0x6cff8820, 0x18742: 0x6c712020, 0x18743: 0x6cee8c20,
+-	0x18744: 0x6c054c20, 0x18745: 0x6d3c5e20, 0x18746: 0x6ca82e20, 0x18747: 0x6ce53820,
+-	0x18748: 0x6ca3c020, 0x1874b: 0x6d1fd420,
+-	0x1874c: 0x6c9dc620, 0x1874f: 0x6ca3c820,
+-	0x18750: 0x6cd13c20, 0x18751: 0x6c13a220, 0x18752: 0x6d0c1020, 0x18753: 0x6c44b620,
+-	0x18754: 0x6c1d5420, 0x18755: 0x6cc86420, 0x18756: 0x6c63ca20, 0x18757: 0x6cbd8220,
+-	0x18758: 0x6c98e620, 0x18759: 0x6c365c20, 0x1875a: 0x6c863220, 0x1875b: 0x6c1b3420,
+-	0x1875c: 0x6d29da20, 0x1875d: 0x6c513820, 0x1875e: 0x6c6ae420, 0x1875f: 0x6ca72c20,
+-	0x18761: 0x6c499020, 0x18762: 0x6c540c20, 0x18763: 0x6c414220,
+-	0x18765: 0x6c07be20, 0x18766: 0x6cdd8020, 0x18767: 0x6cf37220,
+-	0x18768: 0x6c623820, 0x18769: 0x6cf66a20, 0x1876a: 0x6cbf4a20, 0x1876b: 0x6c515820,
+-	0x1876c: 0x6cf23020, 0x1876d: 0x6cfb7220, 0x1876e: 0x6c6b0820, 0x1876f: 0x6c5cf820,
+-	0x18770: 0x6cb00420, 0x18771: 0x6cd00620, 0x18772: 0x6c1d7620, 0x18773: 0x6d324e20,
+-	0x18775: 0x6d2d8a20, 0x18776: 0x6cd78a20, 0x18777: 0x6c5f0420,
+-	0x18778: 0x6cd99420, 0x18779: 0x6d354220, 0x1877a: 0x6c07a220,
+-	0x1877e: 0x6c810e20, 0x1877f: 0x6c0a2220,
+-	// Block 0x61e, offset 0x18780
+-	0x18780: 0x6d08ae20, 0x18781: 0x6cade820, 0x18782: 0x6c278a20,
+-	0x18784: 0x6d340e20, 0x18785: 0x6cb00e20, 0x18786: 0x6c15d420, 0x18787: 0x6c0a2420,
+-	0x18788: 0x6cdafa20, 0x18789: 0x6c5df220, 0x1878a: 0x6c523420, 0x1878b: 0x6c6f2a20,
+-	0x1878c: 0x6c200620, 0x1878d: 0x6c67b420, 0x1878e: 0x6ca5a020, 0x1878f: 0x6c47be20,
+-	0x18790: 0x6c39de20, 0x18793: 0x6cde9a20,
+-	0x18794: 0x6c256020, 0x18795: 0x6cf6c220, 0x18796: 0x6c2a8420, 0x18797: 0x6cfb9020,
+-	0x18798: 0x6c7b7220, 0x18799: 0x6d308a20, 0x1879a: 0x6cddfc20, 0x1879b: 0x6c55ae20,
+-	0x1879c: 0x6c256220, 0x1879d: 0x6c92c820, 0x1879e: 0x6c738c20, 0x1879f: 0x6c92ca20,
+-	0x187a0: 0x6cba7220, 0x187a1: 0x6cad9620, 0x187a2: 0x6d326c20,
+-	0x187a4: 0x6c867a20, 0x187a5: 0x6c128e20, 0x187a6: 0x6cb64a20,
+-	0x187a9: 0x6ce41e20, 0x187aa: 0x6c8d6c20, 0x187ab: 0x6cc1d420,
+-	0x187ac: 0x6c88cc20, 0x187ad: 0x6c91e020, 0x187ae: 0x6cd54020, 0x187af: 0x6c462620,
+-	0x187b0: 0x6d309a20, 0x187b1: 0x6cad3c20, 0x187b2: 0x6c6d5a20, 0x187b3: 0x6cbe9020,
+-	0x187b6: 0x6d3fc420, 0x187b7: 0x6cb46620,
+-	0x187b8: 0x6c6cbc20, 0x187b9: 0x6c0c8620, 0x187ba: 0x6c66ee20, 0x187bb: 0x6c4bf220,
+-	0x187be: 0x6d2a3020, 0x187bf: 0x6c8b5a20,
+-	// Block 0x61f, offset 0x187c0
+-	0x187c0: 0x6c848a20, 0x187c1: 0x6c95c620, 0x187c2: 0x6cd08620, 0x187c3: 0x6c9de220,
+-	0x187c4: 0x6c66fc20, 0x187c5: 0x6c2bb020, 0x187c6: 0x6c076a20,
+-	0x187c8: 0x6c88d420, 0x187ca: 0x6cfbc620, 0x187cb: 0x6cb22220,
+-	0x187cc: 0x6cc41620, 0x187cd: 0x6c8fda20, 0x187ce: 0x6d41e020,
+-	0x187d0: 0x6c74fe20, 0x187d1: 0x6ccd2020, 0x187d2: 0x6d092620,
+-	0x187d4: 0x6d027820, 0x187d6: 0x6c804e20, 0x187d7: 0x6cb6aa20,
+-	0x187d8: 0x6d159820, 0x187d9: 0x6caad420, 0x187da: 0x6c84ca20, 0x187db: 0x6d271e20,
+-	0x187dd: 0x6d15be20, 0x187de: 0x6c1a9220, 0x187df: 0x6c619620,
+-	0x187e0: 0x6c4f4a20, 0x187e1: 0x6d015e20, 0x187e2: 0x6c792a20, 0x187e3: 0x6d3e1020,
+-	0x187e4: 0x6c509220, 0x187e5: 0x6cf86220, 0x187e6: 0x6cc26820, 0x187e7: 0x6c4d1020,
+-	0x187e8: 0x6cf95220, 0x187e9: 0x6c4d1220, 0x187ea: 0x6c4a4820, 0x187eb: 0x6c14c220,
+-	0x187ec: 0x6d09fa20, 0x187ed: 0x6d058220, 0x187ee: 0x6cd09c20, 0x187ef: 0x6c79e820,
+-	0x187f0: 0x6cf96020, 0x187f1: 0x6ccc4a20, 0x187f2: 0x6d208a20, 0x187f3: 0x6d0bae20,
+-	0x187f4: 0x6cb3f220, 0x187f5: 0x6d40bc20, 0x187f6: 0x6d1fc820, 0x187f7: 0x6d3f3e20,
+-	0x187f8: 0x6c88be20, 0x187f9: 0x6cfaaa20, 0x187fa: 0x6cfa3e20, 0x187fb: 0x6d15f620,
+-	0x187fc: 0x6ccc5820, 0x187fd: 0x6d0e8420, 0x187fe: 0x6c69a220, 0x187ff: 0x6cf66e20,
+-	// Block 0x620, offset 0x18800
+-	0x18800: 0x6c1bb620, 0x18801: 0x6cd3b220, 0x18802: 0x6c774620, 0x18803: 0x6d1afc20,
+-	0x18804: 0x6c522420, 0x18805: 0x6d189620, 0x18806: 0x6cf6e820, 0x18807: 0x6ccb6a20,
+-	0x18808: 0x6c6d5c20, 0x18809: 0x6d135e20, 0x1880a: 0x6d1ec420, 0x1880b: 0x6cc41820,
+-	0x1880c: 0x6d129a20, 0x1880d: 0x6c945e20, 0x1880e: 0x6c7d9c20, 0x1880f: 0x6d333820,
+-	0x18814: 0x6d003a20, 0x18816: 0x6c253a20, 0x18817: 0x6d04e420,
+-	0x18818: 0x6c01d820, 0x18819: 0x6d051e20, 0x1881a: 0x6c118820, 0x1881b: 0x6c201820,
+-	0x1881c: 0x6d2c1e20, 0x1881e: 0x6d16f420, 0x1881f: 0x6caf4420,
+-	0x18820: 0x6c7a3020, 0x18821: 0x6cd0fa20, 0x18822: 0x6c80bc20, 0x18823: 0x6ce9e420,
+-	0x18824: 0x6cf61020, 0x18825: 0x6c8d0620, 0x18826: 0x6cb4f820, 0x18827: 0x6cf2f020,
+-	0x18828: 0x6c88fa20, 0x18829: 0x6c319e20, 0x1882a: 0x6c9af420, 0x1882b: 0x6c807220,
+-	0x1882c: 0x6cefdc20, 0x1882d: 0x6c32ca20, 0x1882e: 0x6c7b2a20, 0x1882f: 0x6c004c20,
+-	0x18830: 0x6d291a20, 0x18831: 0x6c5bfa20, 0x18832: 0x6d182620, 0x18833: 0x6ca14c20,
+-	0x18834: 0x6d3f5e20, 0x18835: 0x6c3be820, 0x18836: 0x6caec420,
+-	0x18838: 0x6c0a6c20, 0x18839: 0x6c871e20, 0x1883a: 0x6c918220, 0x1883b: 0x6c964620,
+-	0x1883c: 0x6c4d0a20, 0x1883d: 0x6d31bc20, 0x1883e: 0x6c40ee20, 0x1883f: 0x6cc3ac20,
+-	// Block 0x621, offset 0x18840
+-	0x18840: 0x6d315220, 0x18841: 0x6c797a20, 0x18842: 0x6c1a0420, 0x18843: 0x6c6ffe20,
+-	0x18844: 0x6c746420, 0x18845: 0x6c623a20, 0x18846: 0x6c8d5620,
+-	0x18848: 0x6cceaa20, 0x18849: 0x6cc40020, 0x1884a: 0x6cc8ea20, 0x1884b: 0x6c21ac20,
+-	0x1884c: 0x6ca5b220, 0x1884d: 0x6d339820, 0x1884e: 0x6c907a20, 0x1884f: 0x6cad3620,
+-	0x18852: 0x6c063820, 0x18853: 0x6cc66420,
+-	0x18854: 0x6cfa9a20, 0x18855: 0x6c832c20, 0x18856: 0x6cfeb420, 0x18857: 0x6c3d6620,
+-	0x18858: 0x6cc18620, 0x1885a: 0x6ccbe820, 0x1885b: 0x6d352c20,
+-	0x1885c: 0x6cdfe020, 0x1885d: 0x6cc70e20, 0x1885e: 0x6cda4a20, 0x1885f: 0x6d1cf620,
+-	0x18860: 0x6c98e820, 0x18861: 0x6ca3ca20, 0x18862: 0x6c0baa20,
+-	0x18864: 0x6cd65820, 0x18865: 0x6ce11020, 0x18866: 0x6c4ee220, 0x18867: 0x6ccaf620,
+-	0x18868: 0x6cc69420, 0x1886a: 0x6c2aa820, 0x1886b: 0x6cb44e20,
+-	0x1886c: 0x6c687820, 0x1886d: 0x6ce07620, 0x1886f: 0x6cc48e20,
+-	0x18870: 0x6ca92c20, 0x18871: 0x6c8b5c20, 0x18872: 0x6c2f2020, 0x18873: 0x6c2e8620,
+-	0x18874: 0x6d381620, 0x18876: 0x6c93f420, 0x18877: 0x6c28b020,
+-	0x18878: 0x6cf56020, 0x18879: 0x6c4aba20, 0x1887a: 0x6c5fbe20, 0x1887b: 0x6ca67620,
+-	0x1887c: 0x6d164a20, 0x1887d: 0x6ca75820, 0x1887e: 0x6d221e20, 0x1887f: 0x6cedf220,
+-	// Block 0x622, offset 0x18880
+-	0x18880: 0x6c4ce620, 0x18881: 0x6d2b3c20, 0x18882: 0x6d0c5820, 0x18883: 0x6c251a20,
+-	0x18884: 0x6cfb2620, 0x18885: 0x6c68be20, 0x18886: 0x6ce80620, 0x18887: 0x6c3fac20,
+-	0x18888: 0x6cae0020, 0x1888a: 0x6d1e9220, 0x1888b: 0x6cbfa220,
+-	0x1888c: 0x6d0ad620, 0x1888d: 0x6c107220, 0x1888e: 0x6c0b7c20, 0x1888f: 0x6cd31c20,
+-	0x18890: 0x6d2c2220, 0x18891: 0x6d16c020, 0x18892: 0x6c0b7e20,
+-	0x18894: 0x6c333820, 0x18895: 0x6c7f8e20, 0x18896: 0x6d13d820, 0x18897: 0x6c149220,
+-	0x18898: 0x6c1cb220, 0x18899: 0x6d087820, 0x1889a: 0x6d069220, 0x1889b: 0x6d20d820,
+-	0x1889c: 0x6d04c020,
+-	0x188a0: 0x6cde3620, 0x188a1: 0x6c4c1620,
+-	0x188a5: 0x6c906420, 0x188a6: 0x6d018220, 0x188a7: 0x6c180c20,
+-	0x188a8: 0x6c657e20, 0x188a9: 0x6cdf9820, 0x188aa: 0x6cb08c20, 0x188ab: 0x6d296820,
+-	0x188ac: 0x6d080620, 0x188ad: 0x6cfb3c20, 0x188ae: 0x6ca7d220,
+-	0x188b4: 0x6c9d3820, 0x188b5: 0x6c61f020, 0x188b6: 0x6caa1c20, 0x188b7: 0x6c54c020,
+-	0x188b8: 0x6c571020, 0x188b9: 0x6cee1020, 0x188ba: 0x6d1f2a20, 0x188bb: 0x6d2ac020,
+-	0x188bc: 0x6c09a020, 0x188bd: 0x6c9cee20, 0x188be: 0x6cbab020, 0x188bf: 0x6d019220,
+-	// Block 0x623, offset 0x188c0
+-	0x188c0: 0x6c394420, 0x188c1: 0x6d176020, 0x188c2: 0x6cdfa020, 0x188c3: 0x6c832e20,
+-	0x188c4: 0x6d1e2e20, 0x188c6: 0x6c6d0220, 0x188c7: 0x6ccf4a20,
+-	0x188c8: 0x6d1b4820, 0x188c9: 0x6c613820, 0x188cb: 0x6cdaa620,
+-	0x188cf: 0x6cee1c20,
+-	0x188d0: 0x6c9e5820, 0x188d1: 0x6cdab420, 0x188d2: 0x6d17a620, 0x188d3: 0x6ccc8820,
+-	0x188d4: 0x6cf61420, 0x188d5: 0x6c603e20, 0x188d6: 0x6c960020, 0x188d7: 0x6d1ea620,
+-	0x188d8: 0x6c998220, 0x188d9: 0x6d2c7c20, 0x188da: 0x6cdc4020, 0x188db: 0x6d362a20,
+-	0x188dc: 0x6c0b9c20, 0x188dd: 0x6c83d820,
+-	0x188e5: 0x6cbc4820, 0x188e6: 0x6c498e20, 0x188e7: 0x6cf64a20,
+-	0x188e8: 0x6d324a20, 0x188e9: 0x6d1d9020, 0x188ea: 0x6ca84020, 0x188eb: 0x6c75ca20,
+-	0x188ec: 0x6d01c620, 0x188ed: 0x6d11b620, 0x188ee: 0x6d01c820, 0x188ef: 0x6d33f020,
+-	0x188f0: 0x6ca5a820, 0x188f2: 0x6cd7f420, 0x188f3: 0x6c903620,
+-	0x188f4: 0x6c18d220, 0x188f5: 0x6c9d5c20, 0x188f6: 0x6cc3cc20, 0x188f7: 0x6c27e420,
+-	0x188f8: 0x6ccd4820,
+-	0x188fc: 0x6cdae820, 0x188fd: 0x6d01da20, 0x188fe: 0x6c0f2820, 0x188ff: 0x6c2f7a20,
+-	// Block 0x624, offset 0x18900
+-	0x18900: 0x6d40ca20, 0x18902: 0x6cd5f220, 0x18903: 0x6ccf2220,
+-	0x18904: 0x6c4ee420, 0x18905: 0x6cdfb220, 0x18906: 0x6c431420,
+-	0x1890a: 0x6ca36420, 0x1890b: 0x6c9d7a20,
+-	0x1890c: 0x6d0a3020, 0x1890d: 0x6c9afa20, 0x1890e: 0x6c66b420, 0x1890f: 0x6c24fe20,
+-	0x18910: 0x6c749220, 0x18911: 0x6c51de20, 0x18912: 0x6c3ac820, 0x18913: 0x6cd28220,
+-	0x18914: 0x6c17f220, 0x18915: 0x6cd0c220, 0x18916: 0x6caa8a20, 0x18917: 0x6cb2c420,
+-	0x18918: 0x6c980220,
+-	0x1891d: 0x6d189a20, 0x1891e: 0x6c1dda20,
+-	0x18920: 0x6c7a6220, 0x18921: 0x6c05d420, 0x18922: 0x6c825a20, 0x18923: 0x6c787020,
+-	0x18924: 0x6ccc7820, 0x18925: 0x6c0a4e20, 0x18926: 0x6cdbfc20, 0x18927: 0x6c443420,
+-	0x18928: 0x6cb0c020, 0x18929: 0x6d189c20, 0x1892a: 0x6cfb9220, 0x1892b: 0x6ca6c820,
+-	0x1892c: 0x6d1c9820, 0x1892d: 0x6d3a8020, 0x1892e: 0x6c216220, 0x1892f: 0x6c3cbc20,
+-	0x18930: 0x6d074620, 0x18931: 0x6cb19c20, 0x18932: 0x6cf48020, 0x18933: 0x6c8a2420,
+-	0x18934: 0x6c124c20, 0x18935: 0x6d409020, 0x18936: 0x6d422a20, 0x18937: 0x6c0bc620,
+-	0x18938: 0x6d122a20, 0x18939: 0x6c58a420, 0x1893a: 0x6cac3220, 0x1893b: 0x6d04fa20,
+-	0x1893d: 0x6c82ea20, 0x1893e: 0x6cbee420, 0x1893f: 0x6d001220,
+-	// Block 0x625, offset 0x18940
+-	0x18940: 0x6c689620, 0x18941: 0x6c4c9420,
+-	0x18944: 0x6d0cf020, 0x18945: 0x6d092420, 0x18946: 0x6d39e220, 0x18947: 0x6c527e20,
+-	0x18948: 0x6d1cb820, 0x18949: 0x6cf71620,
+-	0x1894c: 0x6c889220, 0x1894d: 0x6cfc4820, 0x1894e: 0x6c58bc20, 0x1894f: 0x6d1a1620,
+-	0x18951: 0x6c892a20, 0x18952: 0x6ccd6020, 0x18953: 0x6c125220,
+-	0x18954: 0x6c077020, 0x18955: 0x6c662220, 0x18956: 0x6cd63020, 0x18957: 0x6c397a20,
+-	0x18958: 0x6c2d9820, 0x1895a: 0x6c03d820, 0x1895b: 0x6d21fe20,
+-	0x1895e: 0x6ca47420, 0x1895f: 0x6c831420,
+-	0x18960: 0x6d198220, 0x18961: 0x6c272820, 0x18963: 0x6c14ea20,
+-	0x18964: 0x6c178e20, 0x18965: 0x6c416a20, 0x18966: 0x6c6cdc20, 0x18967: 0x6ca59220,
+-	0x1896b: 0x6c8a6a20,
+-	0x1896c: 0x6ca0e620, 0x1896d: 0x6d1fb220, 0x1896f: 0x6c8f2820,
+-	0x18970: 0x6c4de620, 0x18972: 0x6d1e7420, 0x18973: 0x6c6cf020,
+-	0x18974: 0x6c1b8c20, 0x18975: 0x6cc5dc20, 0x18976: 0x6ca9b620,
+-	0x18979: 0x6c53ba20, 0x1897a: 0x6ce53620,
+-	0x1897c: 0x6c002420, 0x1897d: 0x6c485620, 0x1897e: 0x6c0bf820, 0x1897f: 0x6c0eea20,
+-	// Block 0x626, offset 0x18980
+-	0x18980: 0x6cbf1420, 0x18982: 0x6cd5d820, 0x18983: 0x6c20ee20,
+-	0x18984: 0x6c5b5420, 0x18985: 0x6c179a20, 0x18986: 0x6c3ff220, 0x18987: 0x6c5ab620,
+-	0x18988: 0x6c363a20, 0x18989: 0x6cf09a20, 0x1898a: 0x6c3b7820, 0x1898b: 0x6cdfe220,
+-	0x1898d: 0x6c94fa20, 0x1898e: 0x6c51cc20, 0x1898f: 0x6d1e4a20,
+-	0x18990: 0x6c5b5a20, 0x18992: 0x6d215820, 0x18993: 0x6d3ff820,
+-	0x18994: 0x6d0e8a20, 0x18995: 0x6cc07420, 0x18996: 0x6d2fbc20, 0x18997: 0x6c6f1a20,
+-	0x18998: 0x6cdf2820,
+-	0x1899f: 0x6cea0820,
+-	0x189a0: 0x6c8bc220, 0x189a1: 0x6c6f2620, 0x189a2: 0x6d2c8220, 0x189a3: 0x6d038620,
+-	0x189a4: 0x6c56ba20, 0x189a6: 0x6d071020,
+-	0x189aa: 0x6c254c20, 0x189ab: 0x6cbeb020,
+-	0x189ac: 0x6ca14e20, 0x189ae: 0x6d2a2220, 0x189af: 0x6c084c20,
+-	0x189b0: 0x6c1ace20, 0x189b3: 0x6d0ebc20,
+-	0x189b4: 0x6c443620, 0x189b5: 0x6ca16220, 0x189b6: 0x6c075c20, 0x189b7: 0x6c732820,
+-	0x189b8: 0x6c2ee620, 0x189b9: 0x6d2fe020, 0x189bb: 0x6cf3ea20,
+-	0x189bc: 0x6d0ebe20, 0x189be: 0x6c74c620, 0x189bf: 0x6cfade20,
+-	// Block 0x627, offset 0x189c0
+-	0x189c0: 0x6cdf4a20, 0x189c1: 0x6c4e6620, 0x189c3: 0x6c2d2c20,
+-	0x189c4: 0x6c62ac20, 0x189c5: 0x6c6b6020, 0x189c7: 0x6d414c20,
+-	0x189c9: 0x6d025820, 0x189ca: 0x6c7f7620, 0x189cb: 0x6c38e220,
+-	0x189cc: 0x6c5e4020, 0x189cd: 0x6cf92820, 0x189ce: 0x6ca8b620, 0x189cf: 0x6c9cb820,
+-	0x189d0: 0x6cc49c20, 0x189d1: 0x6c24c220, 0x189d2: 0x6d1a3220, 0x189d3: 0x6c9d2820,
+-	0x189d5: 0x6c747e20, 0x189d6: 0x6cc0ea20, 0x189d7: 0x6ce73820,
+-	0x189d8: 0x6ced7a20, 0x189d9: 0x6d2ffc20, 0x189da: 0x6c84fe20, 0x189db: 0x6cce9c20,
+-	0x189dc: 0x6c79a620, 0x189dd: 0x6cfa7e20, 0x189de: 0x6d301e20, 0x189df: 0x6d33c420,
+-	0x189e0: 0x6ce5be20, 0x189e1: 0x6cd4bc20, 0x189e2: 0x6c073e20, 0x189e3: 0x6d136220,
+-	0x189e4: 0x6cb14c20, 0x189e5: 0x6c164420, 0x189e6: 0x6c563e20, 0x189e7: 0x6c791620,
+-	0x189e8: 0x6c6f4a20, 0x189e9: 0x6c011620, 0x189ea: 0x6c213020, 0x189eb: 0x6cb97620,
+-	0x189ec: 0x6c06ea20, 0x189ed: 0x6c032620, 0x189ee: 0x6c3b6020, 0x189ef: 0x6c77d620,
+-	0x189f0: 0x6ceafc20, 0x189f1: 0x6ceafe20, 0x189f2: 0x6d423020, 0x189f3: 0x6c8cbc20,
+-	0x189f5: 0x6c4aea20, 0x189f6: 0x6d0be620, 0x189f7: 0x6cd35420,
+-	0x189f8: 0x6c545220, 0x189f9: 0x6c8b0020, 0x189fa: 0x6ccbee20, 0x189fb: 0x6cd8b220,
+-	0x189fd: 0x6c071020, 0x189fe: 0x6cc5e820, 0x189ff: 0x6c319820,
+-	// Block 0x628, offset 0x18a00
+-	0x18a00: 0x6c0eec20, 0x18a01: 0x6c895620, 0x18a02: 0x6cba0c20, 0x18a03: 0x6c3aac20,
+-	0x18a04: 0x6c624220, 0x18a05: 0x6d3ffa20, 0x18a06: 0x6c5ac820, 0x18a07: 0x6c514020,
+-	0x18a08: 0x6c83e420, 0x18a09: 0x6d259620, 0x18a0a: 0x6d26ce20, 0x18a0b: 0x6d04e620,
+-	0x18a0c: 0x6c15d620, 0x18a0d: 0x6c2b8c20, 0x18a0e: 0x6c825020, 0x18a0f: 0x6c6cae20,
+-	0x18a10: 0x6c1d1c20, 0x18a11: 0x6cd8ec20, 0x18a12: 0x6cb49a20, 0x18a13: 0x6d11d420,
+-	0x18a14: 0x6c678620, 0x18a15: 0x6c583620, 0x18a16: 0x6c595620, 0x18a17: 0x6ce1f620,
+-	0x18a18: 0x6cc82c20, 0x18a19: 0x6cf26620, 0x18a1a: 0x6d1ccc20, 0x18a1b: 0x6cc53420,
+-	0x18a1c: 0x6d1a3420, 0x18a1d: 0x6cd30e20, 0x18a1e: 0x6d1a2620, 0x18a1f: 0x6c73e220,
+-	0x18a20: 0x6cea4020, 0x18a21: 0x6d080020, 0x18a22: 0x6c632e20, 0x18a23: 0x6d379e20,
+-	0x18a24: 0x6cbc9820, 0x18a25: 0x6d3ab220, 0x18a26: 0x6c2db020,
+-	0x18a28: 0x6d201820, 0x18a2b: 0x6d14a420,
+-	0x18a2c: 0x6cd2c220, 0x18a2d: 0x6d16fa20, 0x18a2e: 0x6ca0e820,
+-	0x18a31: 0x6cc3ae20, 0x18a32: 0x6cfea420, 0x18a33: 0x6cf3ba20,
+-	0x18a34: 0x6c44c020, 0x18a35: 0x6d1ce620, 0x18a36: 0x6ce66820, 0x18a37: 0x6cd2c620,
+-	0x18a38: 0x6ca5cc20, 0x18a39: 0x6c44c620, 0x18a3a: 0x6cde5020, 0x18a3b: 0x6cf28a20,
+-	0x18a3c: 0x6c711820, 0x18a3d: 0x6c15a820, 0x18a3e: 0x6cb19620, 0x18a3f: 0x6d3d5420,
+-	// Block 0x629, offset 0x18a40
+-	0x18a40: 0x6c54c420, 0x18a41: 0x6ca4fa20, 0x18a42: 0x6d0c9820, 0x18a43: 0x6c468620,
+-	0x18a44: 0x6d225c20, 0x18a45: 0x6c540420, 0x18a47: 0x6cd7f620,
+-	0x18a48: 0x6c1aba20, 0x18a49: 0x6c56a420, 0x18a4a: 0x6d105220, 0x18a4b: 0x6cf22e20,
+-	0x18a4c: 0x6cfcd020, 0x18a4d: 0x6cb21020, 0x18a4e: 0x6cc69c20, 0x18a4f: 0x6c90a820,
+-	0x18a50: 0x6c81b420, 0x18a51: 0x6cccfe20, 0x18a52: 0x6cfef020, 0x18a53: 0x6d2ae220,
+-	0x18a54: 0x6c4d7820, 0x18a55: 0x6c38b420, 0x18a56: 0x6c4e6220, 0x18a57: 0x6c14d420,
+-	0x18a58: 0x6d2e7620, 0x18a5a: 0x6cde1620, 0x18a5b: 0x6d3b2a20,
+-	0x18a5c: 0x6ca9c820, 0x18a5d: 0x6c4f1820, 0x18a5e: 0x6d21b620, 0x18a5f: 0x6d3db420,
+-	0x18a60: 0x6d205c20, 0x18a61: 0x6c86fc20, 0x18a62: 0x6c5e2a20, 0x18a63: 0x6cf73e20,
+-	0x18a64: 0x6cfb0020, 0x18a65: 0x6c155820, 0x18a66: 0x6c889420,
+-	0x18a68: 0x6cd7be20, 0x18a69: 0x6c6fce20, 0x18a6a: 0x6cb42820, 0x18a6b: 0x6cbffc20,
+-	0x18a6c: 0x6c45d620, 0x18a6d: 0x6d3ee820, 0x18a6e: 0x6d20bc20,
+-	0x18a71: 0x6cc62820, 0x18a72: 0x6ca98420, 0x18a73: 0x6c99d820,
+-	0x18a74: 0x6c032820, 0x18a75: 0x6c6f9820, 0x18a77: 0x6d069620,
+-	0x18a78: 0x6cb29020, 0x18a79: 0x6c0b8a20, 0x18a7a: 0x6c995420,
+-	0x18a7f: 0x6d14ce20,
+-	// Block 0x62a, offset 0x18a80
+-	0x18a80: 0x6d20f620, 0x18a82: 0x6cb29220, 0x18a83: 0x6cc0f220,
+-	0x18a84: 0x6c05f420, 0x18a85: 0x6c5bae20,
+-	0x18a89: 0x6c109420, 0x18a8a: 0x6c985820, 0x18a8b: 0x6c7e7020,
+-	0x18a8c: 0x6ce8a820, 0x18a8d: 0x6cf3c220, 0x18a8e: 0x6c85ec20, 0x18a8f: 0x6c8cea20,
+-	0x18a91: 0x6c620220, 0x18a92: 0x6c75bc20, 0x18a93: 0x6d405620,
+-	0x18a94: 0x6c349220, 0x18a95: 0x6c745020, 0x18a96: 0x6c277020, 0x18a97: 0x6c073220,
+-	0x18a9d: 0x6c7e8020, 0x18a9e: 0x6c0d3e20, 0x18a9f: 0x6cdbf820,
+-	0x18aa0: 0x6ce8c220, 0x18aa1: 0x6d08e220,
+-	0x18aa7: 0x6c350c20,
+-	0x18aaa: 0x6cdc5420, 0x18aab: 0x6c0a2e20,
+-	0x18aac: 0x6ce87420, 0x18aad: 0x6ccb4a20, 0x18aae: 0x6c120020, 0x18aaf: 0x6ce8e420,
+-	0x18ab0: 0x6c9e3620, 0x18ab1: 0x6c6c5220, 0x18ab2: 0x6c93b020,
+-	0x18ab5: 0x6d2e8020, 0x18ab6: 0x6c08f620, 0x18ab7: 0x6c60ac20,
+-	0x18ab8: 0x6d2b7420, 0x18ab9: 0x6d07d620, 0x18aba: 0x6c86a020,
+-	0x18abd: 0x6cdc8220, 0x18abe: 0x6d1dc220, 0x18abf: 0x6cd57620,
+-	// Block 0x62b, offset 0x18ac0
+-	0x18ac2: 0x6c358620,
+-	0x18ac7: 0x6cbf8620,
+-	0x18ac8: 0x6c958020, 0x18ac9: 0x6d322220, 0x18aca: 0x6cea4620, 0x18acb: 0x6c46fe20,
+-	0x18acc: 0x6d223c20, 0x18acd: 0x6c82be20, 0x18ace: 0x6c0eee20, 0x18acf: 0x6ca56e20,
+-	0x18ad0: 0x6cb12020, 0x18ad1: 0x6c890e20, 0x18ad2: 0x6ce17a20, 0x18ad3: 0x6c883820,
+-	0x18ad4: 0x6cf16220, 0x18ad5: 0x6c291020, 0x18ad6: 0x6c87be20, 0x18ad7: 0x6ce65e20,
+-	0x18ad8: 0x6cec1820, 0x18ad9: 0x6d390220, 0x18ada: 0x6c426620, 0x18adb: 0x6d03d220,
+-	0x18adc: 0x6c021420, 0x18add: 0x6c393820, 0x18ade: 0x6caf0e20, 0x18adf: 0x6c0eda20,
+-	0x18ae0: 0x6ceb0620, 0x18ae1: 0x6cd4d020, 0x18ae2: 0x6d14e420, 0x18ae3: 0x6c0ef020,
+-	0x18ae4: 0x6cbcb820, 0x18ae5: 0x6ce80e20, 0x18ae6: 0x6c45e820, 0x18ae7: 0x6ce74820,
+-	0x18ae8: 0x6c4e1220, 0x18ae9: 0x6c1a0820, 0x18aea: 0x6c6ace20, 0x18aeb: 0x6c593a20,
+-	0x18aec: 0x6d042c20, 0x18aed: 0x6c2d6220, 0x18aee: 0x6c146a20, 0x18aef: 0x6c308020,
+-	0x18af0: 0x6caffc20, 0x18af1: 0x6cc86a20, 0x18af2: 0x6c8b2220, 0x18af3: 0x6cd14020,
+-	0x18af4: 0x6cab8420, 0x18af5: 0x6c2c8020, 0x18af6: 0x6d217020, 0x18af7: 0x6c200220,
+-	0x18af8: 0x6cc6a220, 0x18af9: 0x6c774820, 0x18afa: 0x6ce12420, 0x18afb: 0x6c23b620,
+-	0x18afc: 0x6cb18220, 0x18afd: 0x6c209820, 0x18afe: 0x6c92ce20, 0x18aff: 0x6ce79020,
+-	// Block 0x62c, offset 0x18b00
+-	0x18b00: 0x6d336620, 0x18b01: 0x6c86a420, 0x18b02: 0x6cc9a020, 0x18b03: 0x6cac4420,
+-	0x18b04: 0x6cd82e20, 0x18b06: 0x6c291220, 0x18b07: 0x6c55de20,
+-	0x18b08: 0x6d190c20, 0x18b09: 0x6cfd3220, 0x18b0a: 0x6d028020, 0x18b0b: 0x6c958820,
+-	0x18b0c: 0x6c8f5e20, 0x18b0e: 0x6cdfea20, 0x18b0f: 0x6c422e20,
+-	0x18b11: 0x6ce01c20,
+-	0x18b15: 0x6d1ef020, 0x18b16: 0x6ca3e020,
+-	0x18b18: 0x6c429a20, 0x18b19: 0x6c759820, 0x18b1a: 0x6c1bfe20, 0x18b1b: 0x6c464020,
+-	0x18b1c: 0x6cecfa20, 0x18b1d: 0x6c85ee20, 0x18b1e: 0x6c8e5420, 0x18b1f: 0x6c8b0a20,
+-	0x18b20: 0x6cf9c420, 0x18b21: 0x6c06ac20, 0x18b22: 0x6c018a20, 0x18b23: 0x6d237220,
+-	0x18b24: 0x6c713220, 0x18b25: 0x6cc75820, 0x18b26: 0x6d0a3420, 0x18b27: 0x6d3e7a20,
+-	0x18b28: 0x6c25ee20, 0x18b29: 0x6c120620, 0x18b2a: 0x6d2baa20, 0x18b2b: 0x6d1dc420,
+-	0x18b2c: 0x6c407420, 0x18b2d: 0x6cc88a20, 0x18b2f: 0x6cf7cc20,
+-	0x18b30: 0x6cd5e620, 0x18b31: 0x6c68c020, 0x18b32: 0x6c68c220, 0x18b33: 0x6d057020,
+-	0x18b34: 0x6d2f2620, 0x18b37: 0x6cd71220,
+-	0x18b38: 0x6c18a820, 0x18b39: 0x6c390820, 0x18b3a: 0x6c5ff820, 0x18b3b: 0x6d33a820,
+-	0x18b3d: 0x6c480420, 0x18b3e: 0x6cf4d620,
+-	// Block 0x62d, offset 0x18b40
+-	0x18b40: 0x6cbcae20, 0x18b41: 0x6cd5bc20, 0x18b42: 0x6c4d1420, 0x18b43: 0x6ceb0820,
+-	0x18b44: 0x6c319020, 0x18b45: 0x6d3f0220, 0x18b46: 0x6cc46e20, 0x18b47: 0x6ca27820,
+-	0x18b48: 0x6c3fd020, 0x18b49: 0x6c8cca20, 0x18b4a: 0x6c601e20, 0x18b4b: 0x6d04ce20,
+-	0x18b4c: 0x6d084c20, 0x18b4d: 0x6ca37820, 0x18b4e: 0x6d0aee20, 0x18b4f: 0x6c6be020,
+-	0x18b50: 0x6c85f020, 0x18b51: 0x6c269c20, 0x18b52: 0x6cc7a020, 0x18b53: 0x6d24ee20,
+-	0x18b54: 0x6c939c20, 0x18b55: 0x6cd06220, 0x18b56: 0x6c851820, 0x18b57: 0x6c89bc20,
+-	0x18b58: 0x6c450e20, 0x18b59: 0x6d033820, 0x18b5a: 0x6d004420, 0x18b5b: 0x6cbdd820,
+-	0x18b5c: 0x6cbcc220, 0x18b5d: 0x6c182020, 0x18b5e: 0x6d1f3c20, 0x18b5f: 0x6c109a20,
+-	0x18b60: 0x6c7bc220, 0x18b61: 0x6cc3be20, 0x18b62: 0x6c00aa20, 0x18b63: 0x6cbd3420,
+-	0x18b64: 0x6cbac020, 0x18b65: 0x6c1f5220, 0x18b66: 0x6cae1e20, 0x18b67: 0x6c7e0620,
+-	0x18b68: 0x6d13fa20, 0x18b69: 0x6c48ce20, 0x18b6a: 0x6cd14220, 0x18b6b: 0x6cb0fa20,
+-	0x18b6d: 0x6d393820, 0x18b6e: 0x6c59de20, 0x18b6f: 0x6c5ad620,
+-	0x18b70: 0x6c557e20, 0x18b71: 0x6c074220,
+-	0x18b74: 0x6d2bec20, 0x18b75: 0x6c624620, 0x18b76: 0x6c47c220, 0x18b77: 0x6cf6a420,
+-	0x18b78: 0x6c431620, 0x18b79: 0x6c148620, 0x18b7a: 0x6c96d620, 0x18b7b: 0x6d3b2020,
+-	0x18b7c: 0x6ce9ea20, 0x18b7d: 0x6d3ca020, 0x18b7e: 0x6cface20, 0x18b7f: 0x6c80de20,
+-	// Block 0x62e, offset 0x18b80
+-	0x18b83: 0x6d36e820,
+-	0x18b84: 0x6c00cc20, 0x18b85: 0x6cfc2e20, 0x18b86: 0x6c4c3c20, 0x18b87: 0x6cf7a220,
+-	0x18b89: 0x6ce9f020, 0x18b8a: 0x6c11de20, 0x18b8b: 0x6ccb0420,
+-	0x18b8c: 0x6cfaea20, 0x18b8d: 0x6c6c0e20, 0x18b8e: 0x6c3bfa20, 0x18b8f: 0x6cc45a20,
+-	0x18b91: 0x6d123a20, 0x18b92: 0x6c29fa20, 0x18b93: 0x6c63f420,
+-	0x18b94: 0x6c82fc20, 0x18b95: 0x6d0d0220, 0x18b96: 0x6c918e20, 0x18b97: 0x6ce9d620,
+-	0x18b98: 0x6d1cd220, 0x18b99: 0x6cb0de20, 0x18b9a: 0x6c964a20, 0x18b9b: 0x6c87a420,
+-	0x18b9c: 0x6c0d1220, 0x18b9e: 0x6c995620, 0x18b9f: 0x6c040e20,
+-	0x18ba0: 0x6c5a6a20, 0x18ba2: 0x6d121220, 0x18ba3: 0x6c50a420,
+-	0x18ba4: 0x6c218420, 0x18ba5: 0x6c516420, 0x18ba6: 0x6ca95620, 0x18ba7: 0x6c1e0220,
+-	0x18ba8: 0x6c874620, 0x18ba9: 0x6ce19420, 0x18baa: 0x6c585a20, 0x18bab: 0x6c095420,
+-	0x18bac: 0x6c033420, 0x18bad: 0x6c181020, 0x18bae: 0x6d104620, 0x18baf: 0x6c269e20,
+-	0x18bb0: 0x6c024420, 0x18bb1: 0x6d091020, 0x18bb3: 0x6d3e5220,
+-	0x18bb4: 0x6c265a20, 0x18bb5: 0x6cc4ce20, 0x18bb6: 0x6c053820, 0x18bb7: 0x6c25f020,
+-	0x18bb8: 0x6ced4e20, 0x18bb9: 0x6cdebe20, 0x18bba: 0x6c05dc20, 0x18bbb: 0x6c417a20,
+-	0x18bbc: 0x6d0c7620, 0x18bbd: 0x6cf5a620, 0x18bbe: 0x6d3ad420, 0x18bbf: 0x6d0b4e20,
+-	// Block 0x62f, offset 0x18bc0
+-	0x18bc0: 0x6c393a20, 0x18bc1: 0x6d203c20, 0x18bc2: 0x6c012820, 0x18bc3: 0x6ce9a420,
+-	0x18bc4: 0x6c9b2020, 0x18bc5: 0x6ccf5c20, 0x18bc6: 0x6c6d2e20, 0x18bc7: 0x6c47ce20,
+-	0x18bc8: 0x6c627820, 0x18bc9: 0x6cbc0020, 0x18bca: 0x6c695820, 0x18bcb: 0x6d0d0420,
+-	0x18bcc: 0x6cf92e20, 0x18bcd: 0x6c772020, 0x18bce: 0x6c9e0220, 0x18bcf: 0x6d086a20,
+-	0x18bd0: 0x6cccc420, 0x18bd1: 0x6cf2d820, 0x18bd2: 0x6cb8b420, 0x18bd3: 0x6c58f620,
+-	0x18bd4: 0x6cc5d020, 0x18bd5: 0x6d322420, 0x18bd6: 0x6ce45c20, 0x18bd7: 0x6c740020,
+-	0x18bd8: 0x6d008620, 0x18bd9: 0x6cb75820, 0x18bda: 0x6c01f820, 0x18bdb: 0x6c9a8220,
+-	0x18bdc: 0x6c476820, 0x18bde: 0x6ce1b820, 0x18bdf: 0x6c389220,
+-	0x18be0: 0x6c722c20, 0x18be1: 0x6c162820, 0x18be2: 0x6cd74c20, 0x18be3: 0x6c096820,
+-	0x18be4: 0x6c996220, 0x18be5: 0x6cd77820, 0x18be6: 0x6c477220, 0x18be7: 0x6c53a420,
+-	0x18be8: 0x6c579620, 0x18be9: 0x6c95fe20, 0x18bea: 0x6c4f7420, 0x18beb: 0x6c63b820,
+-	0x18bec: 0x6cc2e220, 0x18bed: 0x6c40f420, 0x18bee: 0x6c599020, 0x18bef: 0x6c103c20,
+-	0x18bf0: 0x6c478e20, 0x18bf1: 0x6c3c4e20, 0x18bf2: 0x6ca28820, 0x18bf3: 0x6c009c20,
+-	0x18bf4: 0x6d1cee20, 0x18bf5: 0x6cd75020, 0x18bf6: 0x6c89be20, 0x18bf7: 0x6c6ad020,
+-	0x18bf8: 0x6c1c2220, 0x18bf9: 0x6c6ad220, 0x18bfa: 0x6c1d7020, 0x18bfb: 0x6cb2e820,
+-	0x18bfc: 0x6c186a20, 0x18bfd: 0x6d0c9a20, 0x18bfe: 0x6c321c20, 0x18bff: 0x6c2c5a20,
+-	// Block 0x630, offset 0x18c00
+-	0x18c01: 0x6c89c220, 0x18c02: 0x6cfcd220, 0x18c03: 0x6c0c0420,
+-	0x18c04: 0x6d042e20, 0x18c05: 0x6c9bda20, 0x18c06: 0x6d130220, 0x18c07: 0x6c9d5e20,
+-	0x18c08: 0x6cb7a020, 0x18c09: 0x6cb7a220, 0x18c0a: 0x6cf30620, 0x18c0b: 0x6d01dc20,
+-	0x18c0c: 0x6d239820, 0x18c0d: 0x6cb87020, 0x18c0e: 0x6c1a2820, 0x18c0f: 0x6d11c220,
+-	0x18c10: 0x6d1bd420, 0x18c11: 0x6d0fd420, 0x18c12: 0x6c606820, 0x18c13: 0x6d3fa220,
+-	0x18c14: 0x6d07b220, 0x18c15: 0x6c9f6e20, 0x18c16: 0x6c907620, 0x18c17: 0x6c766e20,
+-	0x18c18: 0x6d11ca20, 0x18c19: 0x6d0dcc20, 0x18c1a: 0x6cdcfa20, 0x18c1b: 0x6c4b6c20,
+-	0x18c1c: 0x6c5a7a20, 0x18c1d: 0x6d1c8e20, 0x18c1e: 0x6cd14420, 0x18c1f: 0x6c140220,
+-	0x18c20: 0x6c883c20, 0x18c22: 0x6d082420, 0x18c23: 0x6c200e20,
+-	0x18c24: 0x6c184220, 0x18c25: 0x6ca6ca20, 0x18c26: 0x6cc27820, 0x18c27: 0x6c9e7e20,
+-	0x18c28: 0x6c5dfe20, 0x18c29: 0x6d21a420, 0x18c2a: 0x6d2e1620, 0x18c2b: 0x6c55c820,
+-	0x18c2c: 0x6c136020, 0x18c2d: 0x6c0c2c20, 0x18c2e: 0x6cb9d020, 0x18c2f: 0x6cf6ee20,
+-	0x18c30: 0x6c67c220, 0x18c31: 0x6c79c620, 0x18c32: 0x6c970220, 0x18c33: 0x6c98a220,
+-	0x18c34: 0x6d2e2220, 0x18c35: 0x6c0b5c20, 0x18c36: 0x6c5f6c20, 0x18c37: 0x6c74d820,
+-	0x18c38: 0x6ca45820, 0x18c39: 0x6c0a9020, 0x18c3a: 0x6cd3f420, 0x18c3b: 0x6cd7ac20,
+-	0x18c3c: 0x6ca18820, 0x18c3d: 0x6c8b6420, 0x18c3e: 0x6c9f0820, 0x18c3f: 0x6ca19420,
+-	// Block 0x631, offset 0x18c40
+-	0x18c40: 0x6cf74820, 0x18c41: 0x6c156820, 0x18c42: 0x6cc21620, 0x18c43: 0x6c69e620,
+-	0x18c44: 0x6c5e5a20, 0x18c45: 0x6cfb1a20, 0x18c46: 0x6d068820, 0x18c47: 0x6ca98820,
+-	0x18c48: 0x6ce74020, 0x18c49: 0x6c542220, 0x18c4a: 0x6d240e20,
+-	0x18c4c: 0x6c1ce220, 0x18c4d: 0x6c0fbc20, 0x18c4e: 0x6d415820, 0x18c4f: 0x6c2dba20,
+-	0x18c50: 0x6d3cfa20, 0x18c51: 0x6c5ea620, 0x18c52: 0x6cb86220,
+-	0x18c54: 0x6d043020, 0x18c55: 0x6c5c0020, 0x18c56: 0x6cd23420, 0x18c57: 0x6c7a1e20,
+-	0x18c59: 0x6c32f220, 0x18c5a: 0x6d10da20, 0x18c5b: 0x6d20da20,
+-	0x18c5c: 0x6c056420, 0x18c5d: 0x6c6a9220, 0x18c5e: 0x6d30e820, 0x18c5f: 0x6c634620,
+-	0x18c60: 0x6cd2c820, 0x18c61: 0x6c2bea20, 0x18c62: 0x6c302a20, 0x18c63: 0x6c223a20,
+-	0x18c64: 0x6c3fd220, 0x18c65: 0x6c9f4020, 0x18c66: 0x6d314020, 0x18c67: 0x6d31d020,
+-	0x18c69: 0x6d0e6420, 0x18c6a: 0x6cbc2020, 0x18c6b: 0x6c4f4e20,
+-	0x18c6c: 0x6c45ea20, 0x18c6d: 0x6cbb6e20, 0x18c6e: 0x6c94a220, 0x18c6f: 0x6c48f620,
+-	0x18c70: 0x6c7e7620, 0x18c71: 0x6cc8ce20, 0x18c72: 0x6c383420, 0x18c73: 0x6c260a20,
+-	0x18c74: 0x6d0c9c20, 0x18c75: 0x6c458a20, 0x18c76: 0x6c6ad420, 0x18c77: 0x6c48d020,
+-	0x18c78: 0x6c4c7020, 0x18c79: 0x6cdd7c20, 0x18c7a: 0x6cf2ba20, 0x18c7b: 0x6d335220,
+-	0x18c7c: 0x6ca84220, 0x18c7d: 0x6c2e2c20, 0x18c7e: 0x6c7f3c20, 0x18c7f: 0x6cde6420,
+-	// Block 0x632, offset 0x18c80
+-	0x18c80: 0x6c254620, 0x18c81: 0x6d0af420, 0x18c82: 0x6c4bd020,
+-	0x18c85: 0x6c2b3420, 0x18c87: 0x6c9dc820,
+-	0x18c88: 0x6c6a2a20, 0x18c89: 0x6c9f7020, 0x18c8a: 0x6c71ca20, 0x18c8b: 0x6d217420,
+-	0x18c8c: 0x6d318020, 0x18c8d: 0x6d2fc820, 0x18c8e: 0x6d2cd220, 0x18c8f: 0x6d038820,
+-	0x18c91: 0x6c049420, 0x18c92: 0x6c516620, 0x18c93: 0x6c46d220,
+-	0x18c94: 0x6c538220, 0x18c95: 0x6c816e20, 0x18c96: 0x6cf51620, 0x18c97: 0x6c0e8c20,
+-	0x18c98: 0x6c795420, 0x18c99: 0x6c92d420, 0x18c9a: 0x6c246420, 0x18c9b: 0x6c885020,
+-	0x18c9c: 0x6d141820, 0x18c9d: 0x6cbc6020, 0x18c9e: 0x6cd53820,
+-	0x18ca0: 0x6d08b220, 0x18ca1: 0x6c6c6220, 0x18ca2: 0x6cbd4220, 0x18ca3: 0x6c5b7020,
+-	0x18ca4: 0x6cdb3620, 0x18ca5: 0x6c207c20, 0x18ca6: 0x6c33b420, 0x18ca7: 0x6c8fb220,
+-	0x18ca9: 0x6ca4c820, 0x18caa: 0x6ce02220, 0x18cab: 0x6c285220,
+-	0x18cac: 0x6cf03e20, 0x18cad: 0x6c41f220, 0x18cae: 0x6c26c620, 0x18caf: 0x6c86d420,
+-	0x18cb0: 0x6c10de20, 0x18cb1: 0x6cfd3e20, 0x18cb2: 0x6cac8c20, 0x18cb3: 0x6c7eb620,
+-	0x18cb4: 0x6d39ec20, 0x18cb5: 0x6ca7c420, 0x18cb6: 0x6c580220, 0x18cb7: 0x6d1cce20,
+-	0x18cb8: 0x6cfd4620, 0x18cb9: 0x6c809020, 0x18cba: 0x6ca0a020, 0x18cbb: 0x6c03e220,
+-	0x18cbd: 0x6c4adc20, 0x18cbe: 0x6c08c620, 0x18cbf: 0x6c3d5020,
+-	// Block 0x633, offset 0x18cc0
+-	0x18cc0: 0x6c5da820, 0x18cc1: 0x6d173c20, 0x18cc2: 0x6c8f2c20,
+-	0x18cc4: 0x6d19cc20, 0x18cc5: 0x6c735c20, 0x18cc6: 0x6c5d7420, 0x18cc7: 0x6c1a0a20,
+-	0x18cc8: 0x6c311c20, 0x18cc9: 0x6c356a20, 0x18ccb: 0x6d0da620,
+-	0x18ccc: 0x6d3c9420, 0x18ccd: 0x6d2cce20, 0x18cce: 0x6cb70420, 0x18ccf: 0x6d216220,
+-	0x18cd0: 0x6cc37620, 0x18cd1: 0x6c5d7a20, 0x18cd2: 0x6ca84420, 0x18cd3: 0x6c59e220,
+-	0x18cd4: 0x6c71cc20, 0x18cd5: 0x6ccf6820,
+-	0x18cd8: 0x6caebe20, 0x18cd9: 0x6ca01820, 0x18cda: 0x6c129220, 0x18cdb: 0x6c90ba20,
+-	0x18cdc: 0x6c843e20, 0x18cdd: 0x6c205e20, 0x18cdf: 0x6c24f020,
+-	0x18ce0: 0x6ccdc820, 0x18ce1: 0x6c280a20, 0x18ce2: 0x6cb68220,
+-	0x18ce4: 0x6c7f7a20, 0x18ce5: 0x6c8de620, 0x18ce6: 0x6c8a6220, 0x18ce7: 0x6cc62220,
+-	0x18ce8: 0x6d20c820, 0x18ce9: 0x6d16ca20, 0x18cea: 0x6c2df820, 0x18ceb: 0x6cb6dc20,
+-	0x18cec: 0x6d147820, 0x18ced: 0x6ca6f420, 0x18cee: 0x6c3d5220, 0x18cef: 0x6c657420,
+-	0x18cf0: 0x6d0b1c20, 0x18cf1: 0x6c398c20, 0x18cf2: 0x6cc8c420, 0x18cf3: 0x6cfa8c20,
+-	0x18cf6: 0x6c096a20, 0x18cf7: 0x6cd25e20,
+-	0x18cf8: 0x6cb38020, 0x18cf9: 0x6ca6fc20, 0x18cfa: 0x6d35f620, 0x18cfb: 0x6ce22020,
+-	0x18cfc: 0x6ce4f020, 0x18cfd: 0x6ce4f220, 0x18cfe: 0x6cc81620, 0x18cff: 0x6d176a20,
+-	// Block 0x634, offset 0x18d00
+-	0x18d00: 0x6c8b0420, 0x18d01: 0x6c01bc20, 0x18d02: 0x6c511020, 0x18d03: 0x6cbf1620,
+-	0x18d04: 0x6c85f420, 0x18d05: 0x6c4a5c20, 0x18d06: 0x6d3f4a20, 0x18d07: 0x6cdaaa20,
+-	0x18d08: 0x6d261020, 0x18d09: 0x6d0ba220, 0x18d0a: 0x6c13dc20, 0x18d0b: 0x6ced2420,
+-	0x18d0c: 0x6c72f420, 0x18d0d: 0x6ce6cc20, 0x18d0e: 0x6d1fd020, 0x18d0f: 0x6c5bc620,
+-	0x18d10: 0x6c659c20, 0x18d11: 0x6cc89e20, 0x18d12: 0x6c986420, 0x18d13: 0x6c71b820,
+-	0x18d14: 0x6d3e5620, 0x18d15: 0x6c70a820, 0x18d16: 0x6c013a20, 0x18d17: 0x6cdc5020,
+-	0x18d18: 0x6c7f1620, 0x18d19: 0x6c5d3020, 0x18d1a: 0x6cc35e20, 0x18d1b: 0x6c167220,
+-	0x18d1c: 0x6c34fa20, 0x18d1d: 0x6c798020, 0x18d1e: 0x6ca55020, 0x18d1f: 0x6c11d220,
+-	0x18d20: 0x6ce35620, 0x18d21: 0x6d064c20, 0x18d22: 0x6c701020, 0x18d23: 0x6c59e420,
+-	0x18d24: 0x6cb7b820, 0x18d25: 0x6c6b0e20, 0x18d26: 0x6c98f220, 0x18d27: 0x6d0c2020,
+-	0x18d29: 0x6d354820, 0x18d2a: 0x6ce9b020,
+-	0x18d2c: 0x6c00c220, 0x18d2d: 0x6cad0a20, 0x18d2e: 0x6c125a20, 0x18d2f: 0x6ce12820,
+-	0x18d30: 0x6c372220, 0x18d31: 0x6c5d3c20, 0x18d32: 0x6cb63e20, 0x18d33: 0x6c1ea620,
+-	0x18d34: 0x6cdd9020, 0x18d35: 0x6d3d8820, 0x18d36: 0x6caa2620, 0x18d37: 0x6ce8f220,
+-	0x18d38: 0x6cd01a20, 0x18d39: 0x6c90f820, 0x18d3a: 0x6c0c2020, 0x18d3b: 0x6c844020,
+-	0x18d3c: 0x6c977c20, 0x18d3d: 0x6d02f020, 0x18d3e: 0x6c133c20, 0x18d3f: 0x6c5a0a20,
+-	// Block 0x635, offset 0x18d40
+-	0x18d40: 0x6c9a6c20, 0x18d41: 0x6c42e620, 0x18d42: 0x6c887620, 0x18d43: 0x6c2a3e20,
+-	0x18d44: 0x6d2e2420, 0x18d45: 0x6d3eaa20,
+-	0x18d48: 0x6d375620, 0x18d49: 0x6c03d020, 0x18d4a: 0x6c258a20, 0x18d4b: 0x6cbfe420,
+-	0x18d4d: 0x6c8fea20, 0x18d4e: 0x6cfb0a20, 0x18d4f: 0x6c3afa20,
+-	0x18d50: 0x6c4cac20, 0x18d51: 0x6c19b820, 0x18d52: 0x6c6fda20, 0x18d53: 0x6c35f620,
+-	0x18d54: 0x6c1cb420, 0x18d55: 0x6d269220, 0x18d56: 0x6c531620, 0x18d57: 0x6d119e20,
+-	0x18d58: 0x6d0ae220, 0x18d59: 0x6d10e620, 0x18d5a: 0x6ce74420, 0x18d5b: 0x6d2cc020,
+-	0x18d5c: 0x6d204020, 0x18d5d: 0x6d095620, 0x18d5e: 0x6d11aa20, 0x18d5f: 0x6c78a820,
+-	0x18d60: 0x6c591620, 0x18d61: 0x6c80cc20, 0x18d62: 0x6d26ba20, 0x18d63: 0x6c18ca20,
+-	0x18d66: 0x6cd0b220,
+-	0x18d68: 0x6ca90e20, 0x18d69: 0x6ca00a20, 0x18d6a: 0x6c52ba20, 0x18d6b: 0x6c205820,
+-	0x18d6c: 0x6d27fe20, 0x18d6d: 0x6d07be20, 0x18d6e: 0x6c6d4420, 0x18d6f: 0x6d3d9c20,
+-	0x18d70: 0x6d209c20, 0x18d71: 0x6cdfbc20, 0x18d72: 0x6c775420, 0x18d73: 0x6cbf6420,
+-	0x18d75: 0x6c1a4c20, 0x18d76: 0x6c6f8820, 0x18d77: 0x6d097620,
+-	0x18d78: 0x6d32fa20, 0x18d79: 0x6c1ce420, 0x18d7a: 0x6cac4a20, 0x18d7b: 0x6cbc6620,
+-	0x18d7d: 0x6cc1e620, 0x18d7e: 0x6c7fd620, 0x18d7f: 0x6d190e20,
+-	// Block 0x636, offset 0x18d80
+-	0x18d80: 0x6cc6de20, 0x18d81: 0x6cd84e20, 0x18d82: 0x6cb89c20, 0x18d83: 0x6cd89220,
+-	0x18d85: 0x6c380420, 0x18d87: 0x6c9b1020,
+-	0x18d88: 0x6c578e20, 0x18d8b: 0x6c4d6620,
+-	0x18d8c: 0x6cbc4420, 0x18d8d: 0x6c1f4620, 0x18d8e: 0x6cc3d420, 0x18d8f: 0x6c334e20,
+-	0x18d90: 0x6c863820, 0x18d91: 0x6c03b820, 0x18d92: 0x6c6c0420, 0x18d93: 0x6d05ee20,
+-	0x18d94: 0x6c963620, 0x18d96: 0x6d27de20, 0x18d97: 0x6d37ae20,
+-	0x18d98: 0x6c568220, 0x18d99: 0x6d1ad220, 0x18d9b: 0x6d351020,
+-	0x18d9c: 0x6cb9fa20, 0x18d9e: 0x6c419420, 0x18d9f: 0x6c667c20,
+-	0x18da0: 0x6d3ae220, 0x18da1: 0x6d3ae420, 0x18da2: 0x6c7a7820, 0x18da3: 0x6ca81a20,
+-	0x18da4: 0x6cc8ca20, 0x18da5: 0x6d2ac220, 0x18da6: 0x6c020820, 0x18da7: 0x6d363820,
+-	0x18da8: 0x6c461a20, 0x18da9: 0x6d17b220, 0x18daa: 0x6c1ab020, 0x18dab: 0x6c5ed620,
+-	0x18dac: 0x6d39a620, 0x18dad: 0x6c81b220, 0x18dae: 0x6cc5ee20, 0x18daf: 0x6cc67620,
+-	0x18db0: 0x6d32c620, 0x18db1: 0x6ca34220, 0x18db2: 0x6c12ec20,
+-	0x18db5: 0x6d151e20, 0x18db6: 0x6c746820, 0x18db7: 0x6c0cee20,
+-	0x18db8: 0x6c1a1e20, 0x18db9: 0x6c75ce20, 0x18dba: 0x6c312620, 0x18dbb: 0x6cefe420,
+-	0x18dbc: 0x6d17fa20, 0x18dbd: 0x6d306020, 0x18dbe: 0x6d0cae20,
+-	// Block 0x637, offset 0x18dc0
+-	0x18dc0: 0x6cca0220, 0x18dc1: 0x6c950220, 0x18dc2: 0x6cb2be20, 0x18dc3: 0x6d2f9020,
+-	0x18dc4: 0x6c4e2020, 0x18dc5: 0x6d239a20, 0x18dc6: 0x6c278220, 0x18dc7: 0x6d2fca20,
+-	0x18dc8: 0x6c3a3e20, 0x18dc9: 0x6ccc6620, 0x18dca: 0x6c8d3820, 0x18dcb: 0x6cde7a20,
+-	0x18dcc: 0x6cc12220, 0x18dcd: 0x6c986e20, 0x18dce: 0x6d132c20, 0x18dcf: 0x6c05d220,
+-	0x18dd0: 0x6c4b6e20, 0x18dd1: 0x6c489e20, 0x18dd2: 0x6ca43620, 0x18dd3: 0x6c442420,
+-	0x18dd5: 0x6cd28420, 0x18dd6: 0x6c782820, 0x18dd7: 0x6cdd9220,
+-	0x18dd8: 0x6c225c20, 0x18dd9: 0x6d394620, 0x18dda: 0x6cdf3820, 0x18ddb: 0x6c7b3420,
+-	0x18ddc: 0x6cbe2420, 0x18ddd: 0x6d05d820, 0x18dde: 0x6c322820, 0x18ddf: 0x6c131220,
+-	0x18de0: 0x6c58da20, 0x18de1: 0x6c234420, 0x18de2: 0x6cc9de20, 0x18de3: 0x6d336020,
+-	0x18de4: 0x6cb9be20, 0x18de5: 0x6c6c5420, 0x18de6: 0x6d3fb420, 0x18de7: 0x6cf00020,
+-	0x18dea: 0x6cf8de20, 0x18deb: 0x6ca36c20,
+-	0x18dec: 0x6cb45420, 0x18ded: 0x6cd9e020, 0x18dee: 0x6c729420, 0x18def: 0x6d319620,
+-	0x18df0: 0x6cce8620, 0x18df1: 0x6ce1e820, 0x18df2: 0x6c049c20, 0x18df3: 0x6cdea020,
+-	0x18df4: 0x6cba7c20, 0x18df5: 0x6cf23a20, 0x18df6: 0x6cc6ae20, 0x18df7: 0x6c962820,
+-	0x18df8: 0x6c55ca20, 0x18df9: 0x6cda2e20, 0x18dfa: 0x6d37cc20, 0x18dfb: 0x6cb46020,
+-	0x18dfc: 0x6c9ef620, 0x18dfd: 0x6c6c6420, 0x18dfe: 0x6cce8a20, 0x18dff: 0x6c9d8e20,
+-	// Block 0x638, offset 0x18e00
+-	0x18e00: 0x6cd61c20, 0x18e01: 0x6c8d7020, 0x18e02: 0x6c82de20, 0x18e03: 0x6c67c420,
+-	0x18e04: 0x6c838a20, 0x18e05: 0x6d370e20, 0x18e06: 0x6c2e0020,
+-	0x18e08: 0x6cca2e20, 0x18e09: 0x6c473e20, 0x18e0a: 0x6c397220, 0x18e0b: 0x6c9ab220,
+-	0x18e0c: 0x6cdc9e20, 0x18e0d: 0x6c65f620, 0x18e0e: 0x6ce15020, 0x18e0f: 0x6d025e20,
+-	0x18e10: 0x6c7a6a20, 0x18e11: 0x6cf3fe20, 0x18e12: 0x6c38d220, 0x18e13: 0x6c963820,
+-	0x18e14: 0x6c117820, 0x18e15: 0x6c136620, 0x18e16: 0x6c8d7a20, 0x18e17: 0x6d142620,
+-	0x18e18: 0x6c23be20, 0x18e19: 0x6d27ce20, 0x18e1a: 0x6c9b7420, 0x18e1b: 0x6d245020,
+-	0x18e1c: 0x6d374220, 0x18e1d: 0x6d162020, 0x18e1e: 0x6c285620, 0x18e1f: 0x6c5e2c20,
+-	0x18e20: 0x6cef5a20, 0x18e21: 0x6ce03220, 0x18e22: 0x6ccb7e20, 0x18e23: 0x6d024420,
+-	0x18e24: 0x6cda3620, 0x18e25: 0x6cd97620, 0x18e26: 0x6cb94c20, 0x18e27: 0x6c8eda20,
+-	0x18e28: 0x6d194620, 0x18e2a: 0x6c835a20, 0x18e2b: 0x6c84aa20,
+-	0x18e2c: 0x6c3af420, 0x18e2d: 0x6c8b6a20, 0x18e2e: 0x6c8c8820, 0x18e2f: 0x6cfd4820,
+-	0x18e30: 0x6d002c20, 0x18e31: 0x6cab6420, 0x18e32: 0x6c9cbc20, 0x18e33: 0x6cfb1220,
+-	0x18e34: 0x6cc4f820, 0x18e35: 0x6d3c0220, 0x18e36: 0x6cd6be20, 0x18e37: 0x6d0d1e20,
+-	0x18e38: 0x6c0be020, 0x18e39: 0x6c8df020, 0x18e3a: 0x6c531a20, 0x18e3b: 0x6cb5a620,
+-	0x18e3c: 0x6c8a9620, 0x18e3d: 0x6c04ca20, 0x18e3e: 0x6c097e20, 0x18e3f: 0x6c554820,
+-	// Block 0x639, offset 0x18e40
+-	0x18e40: 0x6c554a20, 0x18e42: 0x6c12f220, 0x18e43: 0x6cae1c20,
+-	0x18e44: 0x6cbf2c20, 0x18e45: 0x6c9ffe20, 0x18e46: 0x6c700220, 0x18e47: 0x6c10a220,
+-	0x18e48: 0x6c9a1420, 0x18e49: 0x6cca1e20, 0x18e4a: 0x6cf0a820,
+-	0x18e4d: 0x6c841e20, 0x18e4e: 0x6cc36220,
+-	0x18e50: 0x6c5cfa20, 0x18e51: 0x6cfdf220, 0x18e53: 0x6cd3c620,
+-	0x18e54: 0x6d1c9020, 0x18e56: 0x6ca43820, 0x18e57: 0x6c59f220,
+-	0x18e58: 0x6c701a20, 0x18e59: 0x6d0c2620, 0x18e5b: 0x6cc99020,
+-	0x18e5c: 0x6ce96220, 0x18e5d: 0x6d022e20, 0x18e5e: 0x6d309c20, 0x18e5f: 0x6c9ada20,
+-	0x18e60: 0x6cf8f420, 0x18e61: 0x6c978a20, 0x18e63: 0x6c5a1820,
+-	0x18e64: 0x6ce02420, 0x18e65: 0x6d001420, 0x18e66: 0x6d137220, 0x18e67: 0x6c0a9420,
+-	0x18e68: 0x6c955a20, 0x18e69: 0x6c38d420, 0x18e6a: 0x6c870620, 0x18e6b: 0x6c251220,
+-	0x18e6c: 0x6c1fa620, 0x18e6d: 0x6c2a4620, 0x18e6e: 0x6c2bb620, 0x18e6f: 0x6c7c1c20,
+-	0x18e70: 0x6c1ecc20, 0x18e71: 0x6cfb1420, 0x18e72: 0x6c165220, 0x18e73: 0x6c9cce20,
+-	0x18e74: 0x6cba8e20, 0x18e75: 0x6cc00820, 0x18e76: 0x6d322620,
+-	0x18e7a: 0x6c568620, 0x18e7b: 0x6c418c20,
+-	0x18e7c: 0x6c1b9220, 0x18e7d: 0x6c48f220, 0x18e7e: 0x6ca27a20, 0x18e7f: 0x6c0ede20,
+-	// Block 0x63a, offset 0x18e80
+-	0x18e80: 0x6c579020, 0x18e81: 0x6c44fc20, 0x18e82: 0x6d10e820, 0x18e83: 0x6c996420,
+-	0x18e84: 0x6cee0820,
+-	0x18e88: 0x6cc7a420, 0x18e89: 0x6d090820, 0x18e8a: 0x6d32b820, 0x18e8b: 0x6c9f4a20,
+-	0x18e8c: 0x6c67a420, 0x18e8e: 0x6d2e5a20, 0x18e8f: 0x6d423820,
+-	0x18e90: 0x6d26a620, 0x18e91: 0x6c8b0620, 0x18e93: 0x6d392420,
+-	0x18e94: 0x6c098020, 0x18e95: 0x6cc5f020, 0x18e96: 0x6d234e20,
+-	0x18e98: 0x6c21c020, 0x18e99: 0x6c379820, 0x18e9a: 0x6d17b420, 0x18e9b: 0x6c9cf620,
+-	0x18e9c: 0x6cbeca20, 0x18e9e: 0x6cee1e20, 0x18e9f: 0x6c621e20,
+-	0x18ea0: 0x6c104020, 0x18ea2: 0x6c0cae20, 0x18ea3: 0x6c38a820,
+-	0x18ea4: 0x6d26c820, 0x18ea5: 0x6c83ee20, 0x18ea6: 0x6c38aa20, 0x18ea7: 0x6cc1a820,
+-	0x18ea8: 0x6c3f7620, 0x18ea9: 0x6c376220, 0x18eaa: 0x6c354420, 0x18eab: 0x6d32e420,
+-	0x18eac: 0x6ce47020, 0x18ead: 0x6d239c20, 0x18eae: 0x6c6d3020, 0x18eaf: 0x6cb70c20,
+-	0x18eb0: 0x6c714220, 0x18eb1: 0x6c7f1e20, 0x18eb2: 0x6c17f020, 0x18eb3: 0x6c06d020,
+-	0x18eb4: 0x6ca9a820, 0x18eb5: 0x6d186020, 0x18eb6: 0x6d065420, 0x18eb7: 0x6ca1e020,
+-	0x18eb8: 0x6d0a3620, 0x18eb9: 0x6c3eda20, 0x18ebb: 0x6ca8ec20,
+-	0x18ebc: 0x6ce64820, 0x18ebd: 0x6c082c20, 0x18ebe: 0x6d2c8a20, 0x18ebf: 0x6ceeae20,
+-	// Block 0x63b, offset 0x18ec0
+-	0x18ec0: 0x6c782a20, 0x18ec1: 0x6d10b020, 0x18ec2: 0x6caba420, 0x18ec3: 0x6cff0820,
+-	0x18ec4: 0x6c451a20, 0x18ec5: 0x6ce13820, 0x18ec6: 0x6c4b7620, 0x18ec7: 0x6c5c3a20,
+-	0x18ec8: 0x6cddfe20, 0x18eca: 0x6d114620, 0x18ecb: 0x6c266820,
+-	0x18ecc: 0x6cb7ea20, 0x18ecd: 0x6c6cba20, 0x18ece: 0x6c94c220, 0x18ecf: 0x6c9d9020,
+-	0x18ed0: 0x6c9d9220, 0x18ed1: 0x6c64fe20, 0x18ed2: 0x6c92ec20, 0x18ed3: 0x6c38c820,
+-	0x18ed4: 0x6cab5620, 0x18ed5: 0x6c9c7e20, 0x18ed6: 0x6c6b6420, 0x18ed7: 0x6c3f9220,
+-	0x18ed8: 0x6c0d1a20, 0x18ed9: 0x6c5a7c20, 0x18eda: 0x6cda5c20, 0x18edb: 0x6d115e20,
+-	0x18edc: 0x6ca89620, 0x18edd: 0x6c6c6c20, 0x18ede: 0x6c88d620, 0x18edf: 0x6c0faa20,
+-	0x18ee0: 0x6c652420, 0x18ee1: 0x6ce3ca20, 0x18ee2: 0x6c8d8220, 0x18ee3: 0x6d415220,
+-	0x18ee4: 0x6cd20e20, 0x18ee5: 0x6d1b2620, 0x18ee6: 0x6c2a4820, 0x18ee7: 0x6c1e0620,
+-	0x18ee8: 0x6c10e220, 0x18ee9: 0x6c9f1220, 0x18eea: 0x6d0e1620, 0x18eeb: 0x6c805620,
+-	0x18eec: 0x6c1d3420, 0x18eed: 0x6c68b020, 0x18eee: 0x6cd6bc20, 0x18eef: 0x6cc2ac20,
+-	0x18ef0: 0x6ca8c820, 0x18ef1: 0x6c964c20, 0x18ef3: 0x6cd21e20,
+-	0x18ef4: 0x6c965020, 0x18ef5: 0x6d3a4c20, 0x18ef7: 0x6c1d6e20,
+-	0x18ef8: 0x6c734e20, 0x18ef9: 0x6c6f0c20, 0x18efa: 0x6c379a20, 0x18efb: 0x6d17b820,
+-	0x18efc: 0x6cc8d620, 0x18efd: 0x6c113c20, 0x18efe: 0x6cc57a20, 0x18eff: 0x6c3edc20,
+-	// Block 0x63c, offset 0x18f00
+-	0x18f00: 0x6c7fb820, 0x18f01: 0x6cdcaa20, 0x18f02: 0x6d20e220, 0x18f03: 0x6d1f1c20,
+-	0x18f04: 0x6c2d1820, 0x18f05: 0x6c8cf420, 0x18f06: 0x6d3aec20, 0x18f07: 0x6cde5220,
+-	0x18f08: 0x6cb29e20, 0x18f09: 0x6d2d2a20, 0x18f0a: 0x6c684c20, 0x18f0b: 0x6c20de20,
+-	0x18f0c: 0x6c10ac20, 0x18f0d: 0x6c7a0620, 0x18f0e: 0x6c25b620,
+-	0x18f10: 0x6c4e5220, 0x18f11: 0x6c4e5420, 0x18f12: 0x6ca20020, 0x18f13: 0x6c567420,
+-	0x18f14: 0x6c457220, 0x18f15: 0x6c2b2020, 0x18f16: 0x6c3e3c20, 0x18f17: 0x6d088020,
+-	0x18f18: 0x6c9c4c20, 0x18f19: 0x6c9a0420, 0x18f1a: 0x6c811e20, 0x18f1b: 0x6c481e20,
+-	0x18f1c: 0x6d2fc020, 0x18f1d: 0x6cde6620, 0x18f1e: 0x6d23a220, 0x18f1f: 0x6d402820,
+-	0x18f20: 0x6c844820, 0x18f21: 0x6c92d820, 0x18f22: 0x6cf3f620, 0x18f23: 0x6c826c20,
+-	0x18f24: 0x6c615e20, 0x18f25: 0x6c875220, 0x18f26: 0x6c84d820,
+-	0x18f28: 0x6cb30420, 0x18f29: 0x6d101020, 0x18f2a: 0x6cec2e20, 0x18f2b: 0x6ceb1a20,
+-	0x18f2c: 0x6cae6e20, 0x18f2e: 0x6d2fb420, 0x18f2f: 0x6c4b0220,
+-	0x18f31: 0x6d061e20, 0x18f32: 0x6ca38020, 0x18f33: 0x6cc3e420,
+-	0x18f34: 0x6ceff620, 0x18f35: 0x6d32e620, 0x18f36: 0x6c300e20, 0x18f37: 0x6cf00820,
+-	0x18f38: 0x6c0f6020, 0x18f3a: 0x6c595820, 0x18f3b: 0x6d08c020,
+-	0x18f3c: 0x6d295620, 0x18f3d: 0x6c877220, 0x18f3e: 0x6d0d6020, 0x18f3f: 0x6c59ae20,
+-	// Block 0x63d, offset 0x18f40
+-	0x18f40: 0x6d095820, 0x18f41: 0x6c554c20, 0x18f42: 0x6c05f820, 0x18f43: 0x6cc4c220,
+-	0x18f44: 0x6cfeba20, 0x18f45: 0x6cb38620, 0x18f46: 0x6c8a9820, 0x18f47: 0x6d388a20,
+-	0x18f48: 0x6d17ba20, 0x18f49: 0x6d06e220, 0x18f4a: 0x6c960820, 0x18f4b: 0x6c77be20,
+-	0x18f4c: 0x6c1f5620, 0x18f4e: 0x6ca35620, 0x18f4f: 0x6c4e2220,
+-	0x18f50: 0x6c17a220, 0x18f51: 0x6c929220, 0x18f52: 0x6d2e0620, 0x18f53: 0x6cde7c20,
+-	0x18f54: 0x6c3da220, 0x18f55: 0x6c52c820, 0x18f56: 0x6d2ba020, 0x18f57: 0x6cbc0620,
+-	0x18f58: 0x6cdb5020, 0x18f59: 0x6cb1fa20, 0x18f5a: 0x6c49ba20,
+-	0x18f5c: 0x6c5cd020, 0x18f5d: 0x6c1e8020, 0x18f5f: 0x6c374420,
+-	0x18f60: 0x6c374620, 0x18f61: 0x6cc85a20, 0x18f62: 0x6cb6e220, 0x18f63: 0x6cd8ba20,
+-	0x18f64: 0x6c713620, 0x18f66: 0x6d0dbe20, 0x18f67: 0x6c058220,
+-	0x18f68: 0x6d131e20, 0x18f69: 0x6d3e6c20, 0x18f6a: 0x6ca55220, 0x18f6b: 0x6c20b220,
+-	0x18f6c: 0x6c03c220, 0x18f6d: 0x6c126c20, 0x18f6e: 0x6ce42c20, 0x18f6f: 0x6c4f1c20,
+-	0x18f70: 0x6d425220, 0x18f71: 0x6c03d420, 0x18f72: 0x6d301420, 0x18f73: 0x6cec2820,
+-	0x18f74: 0x6c44c420, 0x18f75: 0x6c098220, 0x18f76: 0x6c37ca20, 0x18f77: 0x6d3af820,
+-	0x18f78: 0x6cf50220, 0x18f79: 0x6cf19a20, 0x18f7a: 0x6d369820, 0x18f7b: 0x6d393c20,
+-	0x18f7c: 0x6c929420, 0x18f7d: 0x6cf1a020, 0x18f7e: 0x6c4bdc20, 0x18f7f: 0x6cc08e20,
+-	// Block 0x63e, offset 0x18f80
+-	0x18f80: 0x6c7e9420, 0x18f81: 0x6d292020, 0x18f82: 0x6cda2820, 0x18f83: 0x6c9dd420,
+-	0x18f84: 0x6c2c0620, 0x18f85: 0x6cb7ec20, 0x18f86: 0x6c129a20, 0x18f87: 0x6cb1bc20,
+-	0x18f88: 0x6c887820, 0x18f89: 0x6cd21020, 0x18f8a: 0x6c8ff620, 0x18f8b: 0x6cdad620,
+-	0x18f8c: 0x6cb73220, 0x18f8d: 0x6d25fa20, 0x18f8e: 0x6c3c9e20, 0x18f8f: 0x6d056820,
+-	0x18f90: 0x6c73f620, 0x18f91: 0x6c2c3020, 0x18f92: 0x6cb14820, 0x18f93: 0x6c494a20,
+-	0x18f94: 0x6ca98620, 0x18f95: 0x6cc5d220, 0x18f96: 0x6d321c20, 0x18f97: 0x6c412e20,
+-	0x18f98: 0x6cb08a20, 0x18f99: 0x6ce05420, 0x18f9a: 0x6c179220, 0x18f9b: 0x6c217220,
+-	0x18f9c: 0x6c508e20, 0x18f9d: 0x6d3b7220, 0x18f9e: 0x6ca0ec20, 0x18f9f: 0x6c0ce020,
+-	0x18fa0: 0x6cb75e20, 0x18fa1: 0x6cd34620, 0x18fa2: 0x6c08ca20, 0x18fa3: 0x6c740620,
+-	0x18fa4: 0x6cd8a420, 0x18fa6: 0x6c485220, 0x18fa7: 0x6ca32a20,
+-	0x18fa8: 0x6c5b4e20, 0x18fa9: 0x6cf5ca20, 0x18faa: 0x6c37c820, 0x18fab: 0x6d04ca20,
+-	0x18fac: 0x6ca1ca20, 0x18fae: 0x6cf77220, 0x18faf: 0x6d360220,
+-	0x18fb0: 0x6cc8fc20, 0x18fb1: 0x6c711a20, 0x18fb2: 0x6c2e9420, 0x18fb3: 0x6d30f420,
+-	0x18fb4: 0x6cced820, 0x18fb5: 0x6c9bd220, 0x18fb6: 0x6c098420, 0x18fb7: 0x6c4eb420,
+-	0x18fb8: 0x6d210420, 0x18fb9: 0x6cfcb820, 0x18fba: 0x6cacd420, 0x18fbb: 0x6ca5a620,
+-	0x18fbc: 0x6c119820, 0x18fbd: 0x6c109c20, 0x18fbf: 0x6cb70020,
+-	// Block 0x63f, offset 0x18fc0
+-	0x18fc0: 0x6c620820, 0x18fc1: 0x6d3d6420, 0x18fc2: 0x6c925e20, 0x18fc3: 0x6c75c220,
+-	0x18fc4: 0x6cfccc20, 0x18fc5: 0x6cf62620, 0x18fc6: 0x6c113220, 0x18fc7: 0x6cf1e220,
+-	0x18fc8: 0x6d346a20, 0x18fc9: 0x6d3f5820, 0x18fca: 0x6c7d6820, 0x18fcb: 0x6c231a20,
+-	0x18fcc: 0x6ce4f820, 0x18fcd: 0x6c1f5820, 0x18fce: 0x6c2b3620, 0x18fcf: 0x6c218220,
+-	0x18fd0: 0x6cbfb620, 0x18fd1: 0x6d306220, 0x18fd2: 0x6d2be220, 0x18fd3: 0x6cc75420,
+-	0x18fd4: 0x6c0d7c20, 0x18fd5: 0x6c605c20, 0x18fd6: 0x6cf65420, 0x18fd7: 0x6d39b220,
+-	0x18fd8: 0x6c746a20, 0x18fd9: 0x6c440a20, 0x18fda: 0x6c5eee20, 0x18fdb: 0x6c265620,
+-	0x18fdc: 0x6c187c20, 0x18fdd: 0x6cddce20, 0x18fde: 0x6cc92820, 0x18fdf: 0x6cfdf420,
+-	0x18fe0: 0x6c5a5c20, 0x18fe1: 0x6cb65020, 0x18fe2: 0x6d3b1820, 0x18fe3: 0x6cdcf620,
+-	0x18fe4: 0x6c146c20, 0x18fe5: 0x6cf25a20, 0x18fe6: 0x6c781a20, 0x18fe7: 0x6c77c420,
+-	0x18fe8: 0x6c47b820, 0x18fe9: 0x6c410220, 0x18fea: 0x6c396620, 0x18feb: 0x6c234c20,
+-	0x18fec: 0x6c128c20, 0x18fed: 0x6d36bc20, 0x18fee: 0x6c15d820, 0x18fef: 0x6c825420,
+-	0x18ff0: 0x6d04ee20, 0x18ff1: 0x6d2d4820, 0x18ff2: 0x6d308220, 0x18ff3: 0x6d218a20,
+-	0x18ff4: 0x6c4b7020, 0x18ff5: 0x6c45ae20, 0x18ff6: 0x6d295020, 0x18ff7: 0x6c27fe20,
+-	0x18ff8: 0x6c5e0020, 0x18ff9: 0x6cd9e220, 0x18ffa: 0x6ce0ac20, 0x18ffb: 0x6c473020,
+-	0x18ffc: 0x6cf8e620, 0x18ffd: 0x6c978020, 0x18ffe: 0x6c346620, 0x18fff: 0x6c02f420,
+-	// Block 0x640, offset 0x19000
+-	0x19000: 0x6cb0c420, 0x19001: 0x6cf52a20, 0x19002: 0x6c007c20, 0x19003: 0x6c9b7620,
+-	0x19004: 0x6cb0d220, 0x19005: 0x6c9b7820, 0x19006: 0x6d103a20, 0x19007: 0x6d374420,
+-	0x19008: 0x6c0fac20, 0x19009: 0x6d1cc820, 0x1900a: 0x6cef6020, 0x1900b: 0x6cc50e20,
+-	0x1900c: 0x6c7ffa20, 0x1900d: 0x6d0c4620, 0x1900e: 0x6c161220, 0x1900f: 0x6cc33620,
+-	0x19010: 0x6d31d820, 0x19011: 0x6cb46a20, 0x19013: 0x6cdf2a20,
+-	0x19014: 0x6c3a9e20, 0x19015: 0x6cd55620, 0x19017: 0x6c298820,
+-	0x19018: 0x6c25f220, 0x19019: 0x6cdf9c20, 0x1901a: 0x6ce49820, 0x1901b: 0x6c1ba020,
+-	0x1901c: 0x6cde9020, 0x1901d: 0x6c642a20, 0x1901e: 0x6cd75e20, 0x1901f: 0x6c5a3220,
+-	0x19020: 0x6c8a6820, 0x19023: 0x6c185e20,
+-	0x19024: 0x6c6cf820, 0x19025: 0x6c360020, 0x19026: 0x6c464620, 0x19027: 0x6c3e6420,
+-	0x19028: 0x6c34f020, 0x1902a: 0x6c363e20, 0x1902b: 0x6c07f020,
+-	0x1902c: 0x6ce1ca20, 0x1902d: 0x6c2c6020, 0x1902f: 0x6c2c7020,
+-	0x19030: 0x6c10a620, 0x19031: 0x6ced3820, 0x19032: 0x6d2fd020, 0x19033: 0x6c950620,
+-	0x19034: 0x6cb62620, 0x19035: 0x6ca2a420, 0x19036: 0x6cba6c20,
+-	0x19038: 0x6d3fae20, 0x19039: 0x6cd9d620, 0x1903b: 0x6d1f6220,
+-	0x1903c: 0x6d38ac20, 0x1903d: 0x6cdea620, 0x1903f: 0x6cdb3c20,
+-	// Block 0x641, offset 0x19040
+-	0x19040: 0x6c10c220, 0x19041: 0x6cf7aa20, 0x19042: 0x6c67c620, 0x19043: 0x6c12ba20,
+-	0x19044: 0x6c406620, 0x19045: 0x6ce2b820, 0x19046: 0x6c185220, 0x19047: 0x6c407820,
+-	0x19048: 0x6c3ae020, 0x19049: 0x6cf48c20, 0x1904a: 0x6cf5ac20, 0x1904b: 0x6d101620,
+-	0x1904c: 0x6ca04820, 0x1904d: 0x6cad2020, 0x1904e: 0x6c98a620, 0x1904f: 0x6ccbba20,
+-	0x19050: 0x6c9bb420, 0x19051: 0x6c12a820, 0x19052: 0x6ce57220, 0x19053: 0x6c764820,
+-	0x19054: 0x6c043620, 0x19055: 0x6cffa620, 0x19056: 0x6d032620, 0x19057: 0x6cb76220,
+-	0x1905a: 0x6cceb020, 0x1905b: 0x6c590a20,
+-	0x1905c: 0x6ca96a20, 0x1905d: 0x6cff7820, 0x1905e: 0x6c18b220, 0x1905f: 0x6c27ce20,
+-	0x19060: 0x6c3c3820, 0x19061: 0x6d1ad420, 0x19062: 0x6c01fa20, 0x19063: 0x6cc4be20,
+-	0x19064: 0x6cc64420, 0x19065: 0x6c976020, 0x19066: 0x6c394c20, 0x19067: 0x6cc10220,
+-	0x19068: 0x6cd2ce20, 0x19069: 0x6c511820, 0x1906a: 0x6c0b9220, 0x1906b: 0x6c276220,
+-	0x1906c: 0x6ca11420, 0x1906d: 0x6c2aca20,
+-	0x19070: 0x6c7ba020, 0x19072: 0x6c144220, 0x19073: 0x6c349620,
+-	0x19074: 0x6d1fd220, 0x19075: 0x6c504020, 0x19077: 0x6c486020,
+-	0x19078: 0x6d095c20, 0x19079: 0x6c833620, 0x1907a: 0x6c6c9220, 0x1907b: 0x6cb70220,
+-	0x1907c: 0x6cc11020, 0x1907d: 0x6cee2220, 0x1907e: 0x6d13f620, 0x1907f: 0x6c89e620,
+-	// Block 0x642, offset 0x19080
+-	0x19082: 0x6d0cb020, 0x19083: 0x6d180220,
+-	0x19084: 0x6d1a7620, 0x19085: 0x6cb60020, 0x19086: 0x6d306420, 0x19087: 0x6cf8a620,
+-	0x19088: 0x6d180420, 0x19089: 0x6d128620, 0x1908a: 0x6cf3d820, 0x1908b: 0x6d33fa20,
+-	0x1908c: 0x6d366a20, 0x1908d: 0x6c4e5a20, 0x1908e: 0x6c21c820, 0x1908f: 0x6c3d8420,
+-	0x19090: 0x6c215220, 0x19091: 0x6cb2b620, 0x19092: 0x6c7afa20, 0x19093: 0x6c1dc220,
+-	0x19095: 0x6ceb8a20, 0x19096: 0x6cbf4220, 0x19097: 0x6c233020,
+-	0x19098: 0x6c42d220, 0x19099: 0x6c7acc20, 0x1909a: 0x6cc12620, 0x1909b: 0x6cc12820,
+-	0x1909c: 0x6d340020, 0x1909d: 0x6c9c0a20, 0x1909e: 0x6c865220, 0x1909f: 0x6d389c20,
+-	0x190a0: 0x6cde8420, 0x190a1: 0x6d340220, 0x190a2: 0x6c482420, 0x190a3: 0x6c899c20,
+-	0x190a4: 0x6c54ee20, 0x190a5: 0x6c7e8820, 0x190a6: 0x6c2d2620, 0x190a7: 0x6c22d820,
+-	0x190a8: 0x6d1bde20, 0x190ab: 0x6cb62a20,
+-	0x190ad: 0x6c144620, 0x190ae: 0x6c99b020, 0x190af: 0x6c31b020,
+-	0x190b0: 0x6d19fe20, 0x190b1: 0x6c148820, 0x190b2: 0x6cc8dc20, 0x190b3: 0x6c524020,
+-	0x190b4: 0x6cc87820, 0x190b5: 0x6c3d9420, 0x190b6: 0x6c7f4e20, 0x190b7: 0x6d043420,
+-	0x190b8: 0x6c64e020, 0x190b9: 0x6d186220, 0x190ba: 0x6c9a6820,
+-	0x190bc: 0x6c987620, 0x190bd: 0x6c627e20, 0x190be: 0x6cdd3a20, 0x190bf: 0x6c4f0c20,
+-	// Block 0x643, offset 0x190c0
+-	0x190c1: 0x6c868420, 0x190c2: 0x6d3f2220, 0x190c3: 0x6d412820,
+-	0x190c4: 0x6d114820, 0x190c5: 0x6c43a820, 0x190c6: 0x6c844c20, 0x190c7: 0x6cb71c20,
+-	0x190c8: 0x6c462420, 0x190c9: 0x6c868620, 0x190ca: 0x6c0db220, 0x190cb: 0x6cdd3c20,
+-	0x190ce: 0x6cdb3e20, 0x190cf: 0x6c1e4c20,
+-	0x190d0: 0x6c650220, 0x190d1: 0x6d010020, 0x190d2: 0x6c076420, 0x190d3: 0x6d066020,
+-	0x190d4: 0x6c6eb620, 0x190d5: 0x6cb46220, 0x190d6: 0x6c8d7220, 0x190d7: 0x6cfdd620,
+-	0x190d8: 0x6d42ac20, 0x190d9: 0x6c2e4420, 0x190da: 0x6c216a20, 0x190db: 0x6cbeb620,
+-	0x190dc: 0x6ca41020, 0x190dd: 0x6d2cfe20, 0x190de: 0x6c940820, 0x190df: 0x6d157420,
+-	0x190e0: 0x6cceba20, 0x190e1: 0x6d21ba20, 0x190e2: 0x6c575c20, 0x190e3: 0x6c845e20,
+-	0x190e4: 0x6cabce20, 0x190e7: 0x6c846020,
+-	0x190ea: 0x6cd6e620,
+-	0x190ec: 0x6d18d620, 0x190ed: 0x6ca95c20, 0x190ee: 0x6cd83820, 0x190ef: 0x6c7ab020,
+-	0x190f0: 0x6c407a20, 0x190f1: 0x6d142820, 0x190f2: 0x6c2ab820, 0x190f3: 0x6cc49620,
+-	0x190f4: 0x6c131e20, 0x190f6: 0x6ce39820, 0x190f7: 0x6cbdb420,
+-	0x190f8: 0x6c0c8820, 0x190f9: 0x6cdca420, 0x190fa: 0x6cef4c20, 0x190fb: 0x6c33bc20,
+-	0x190fc: 0x6ccb7a20, 0x190fd: 0x6c00f620, 0x190fe: 0x6cb7f420, 0x190ff: 0x6d420e20,
+-	// Block 0x644, offset 0x19100
+-	0x19100: 0x6c7b7620, 0x19101: 0x6c3a7420, 0x19103: 0x6d1b9620,
+-	0x19105: 0x6ccaea20, 0x19106: 0x6c314820, 0x19107: 0x6c5c8220,
+-	0x19108: 0x6d026220, 0x19109: 0x6d2b1c20, 0x1910a: 0x6ce03420, 0x1910b: 0x6ce15a20,
+-	0x1910c: 0x6d374620, 0x1910d: 0x6d191620, 0x1910e: 0x6c3f1c20, 0x1910f: 0x6c359420,
+-	0x19111: 0x6c75fc20, 0x19112: 0x6c638e20, 0x19113: 0x6c141220,
+-	0x19114: 0x6cfbca20, 0x19115: 0x6c981420, 0x19117: 0x6c0aba20,
+-	0x19118: 0x6c8d9220, 0x19119: 0x6c6b7620, 0x1911a: 0x6c7d3620, 0x1911b: 0x6c63f620,
+-	0x1911d: 0x6c19a420, 0x1911e: 0x6c813420, 0x1911f: 0x6d03b420,
+-	0x19120: 0x6c3af620, 0x19121: 0x6c936e20, 0x19122: 0x6d2c9e20, 0x19123: 0x6c51a420,
+-	0x19124: 0x6c5f9420, 0x19125: 0x6ca66220, 0x19126: 0x6d1cd620, 0x19127: 0x6d002e20,
+-	0x19128: 0x6ce2d820, 0x19129: 0x6c81c820, 0x1912a: 0x6d2b2820, 0x1912b: 0x6c7cba20,
+-	0x1912d: 0x6cb9e620, 0x1912e: 0x6c719020, 0x1912f: 0x6cb18c20,
+-	0x19130: 0x6c38f220, 0x19131: 0x6ce80020, 0x19132: 0x6c8c4020, 0x19133: 0x6c9cc020,
+-	0x19134: 0x6d3de820, 0x19135: 0x6d013020, 0x19136: 0x6c56ee20, 0x19137: 0x6c9cc220,
+-	0x19138: 0x6c6a4820, 0x19139: 0x6d28e220, 0x1913a: 0x6c23d620, 0x1913b: 0x6c87b220,
+-	0x1913c: 0x6cc4a020, 0x1913d: 0x6d3a4a20, 0x1913e: 0x6d1ab820, 0x1913f: 0x6c4f4020,
+-	// Block 0x645, offset 0x19140
+-	0x19141: 0x6d198620, 0x19142: 0x6c948020, 0x19143: 0x6d274420,
+-	0x19144: 0x6cc4a420, 0x19145: 0x6c8df620, 0x19146: 0x6ca78620, 0x19147: 0x6d24b620,
+-	0x19148: 0x6caaa020, 0x1914a: 0x6d174020, 0x1914b: 0x6caaa420,
+-	0x1914c: 0x6d174220, 0x1914d: 0x6cb98020, 0x1914e: 0x6cf9b620, 0x1914f: 0x6c1edc20,
+-	0x19150: 0x6d1a6820, 0x19151: 0x6c9d4820, 0x19152: 0x6cf65820, 0x19153: 0x6ca35a20,
+-	0x19154: 0x6c76de20, 0x19155: 0x6d412020, 0x19156: 0x6cf9da20, 0x19157: 0x6d0cc620,
+-	0x19158: 0x6ce8f420, 0x19159: 0x6ce30020, 0x1915a: 0x6cf38820, 0x1915b: 0x6cdda820,
+-	0x1915c: 0x6d1aaa20, 0x1915d: 0x6c1d0a20, 0x1915e: 0x6d38de20, 0x1915f: 0x6c988620,
+-	0x19160: 0x6d254820, 0x19161: 0x6caa8020, 0x19162: 0x6c9e7020, 0x19163: 0x6d2a4820,
+-	0x19164: 0x6ced1420, 0x19165: 0x6c83ca20, 0x19166: 0x6cc10420, 0x19167: 0x6ca33a20,
+-	0x19168: 0x6cd26220, 0x19169: 0x6c098c20, 0x1916a: 0x6d3e2a20, 0x1916b: 0x6c056c20,
+-	0x1916d: 0x6c736c20, 0x1916e: 0x6cfde620, 0x1916f: 0x6c7c7c20,
+-	0x19170: 0x6cac2c20, 0x19171: 0x6c7ba220, 0x19172: 0x6d0a1220, 0x19173: 0x6d2cc620,
+-	0x19174: 0x6d10fc20, 0x19175: 0x6c7d6a20, 0x19176: 0x6c5acc20, 0x19177: 0x6cf65a20,
+-	0x19178: 0x6c357420, 0x19179: 0x6d0fcc20, 0x1917a: 0x6ce59020, 0x1917b: 0x6d1f4e20,
+-	0x1917c: 0x6c746c20, 0x1917d: 0x6c83f620, 0x1917f: 0x6c842020,
+-	// Block 0x646, offset 0x19180
+-	0x19180: 0x6c198020, 0x19181: 0x6c624e20, 0x19182: 0x6c562a20, 0x19183: 0x6d2e7020,
+-	0x19184: 0x6c3f7a20, 0x19185: 0x6c16ba20, 0x19186: 0x6c495c20, 0x19187: 0x6c714420,
+-	0x19188: 0x6c9b3220, 0x19189: 0x6c167820, 0x1918a: 0x6ce0a620, 0x1918b: 0x6ca1e220,
+-	0x1918c: 0x6d039e20, 0x1918d: 0x6c852620, 0x1918e: 0x6d0c2a20, 0x1918f: 0x6cd9da20,
+-	0x19190: 0x6cd1ee20, 0x19191: 0x6d186420, 0x19192: 0x6c0e2a20, 0x19193: 0x6c234e20,
+-	0x19194: 0x6c542c20, 0x19195: 0x6ced3a20, 0x19196: 0x6c2c9620, 0x19197: 0x6c5f4420,
+-	0x19198: 0x6c443820, 0x19199: 0x6c4e3420, 0x1919a: 0x6c0f6220, 0x1919b: 0x6d04f420,
+-	0x1919c: 0x6c8ea220, 0x1919d: 0x6c11ae20, 0x1919e: 0x6c11b020, 0x1919f: 0x6d18d820,
+-	0x191a0: 0x6d082c20, 0x191a1: 0x6d0ce020, 0x191a2: 0x6d2a5c20, 0x191a3: 0x6c4f1e20,
+-	0x191a4: 0x6d1e0020, 0x191a5: 0x6d3fc820, 0x191a7: 0x6c775820,
+-	0x191a8: 0x6d21bc20, 0x191a9: 0x6cb53820, 0x191aa: 0x6d310620, 0x191ab: 0x6c967e20,
+-	0x191ae: 0x6cd6e820, 0x191af: 0x6c6d6a20,
+-	0x191b0: 0x6c49b020, 0x191b1: 0x6cb46c20, 0x191b2: 0x6c8c7220,
+-	0x191b4: 0x6ce69c20, 0x191b5: 0x6c679420, 0x191b6: 0x6c7eac20, 0x191b7: 0x6d191820,
+-	0x191b8: 0x6d1dce20, 0x191b9: 0x6c22ec20, 0x191ba: 0x6d0dfe20, 0x191bb: 0x6c6b7020,
+-	0x191bc: 0x6d09c820, 0x191bd: 0x6cf11020, 0x191be: 0x6cfc4c20, 0x191bf: 0x6ca93620,
+-	// Block 0x647, offset 0x191c0
+-	0x191c0: 0x6c408c20, 0x191c1: 0x6c445c20, 0x191c3: 0x6ca19c20,
+-	0x191c4: 0x6d3b4620, 0x191c5: 0x6ca38a20, 0x191c6: 0x6cfc5620, 0x191c7: 0x6cf1c420,
+-	0x191c8: 0x6c877820, 0x191c9: 0x6c11c220, 0x191ca: 0x6c9f1c20, 0x191cb: 0x6c655220,
+-	0x191cc: 0x6ca6e220, 0x191cd: 0x6c14b020, 0x191ce: 0x6cecb020, 0x191cf: 0x6d069c20,
+-	0x191d0: 0x6caa8220, 0x191d1: 0x6c973020, 0x191d2: 0x6d417020, 0x191d3: 0x6c770c20,
+-	0x191d4: 0x6c761620, 0x191d5: 0x6c4f7020,
+-	0x191d8: 0x6d23f420, 0x191d9: 0x6cf11220, 0x191da: 0x6d39fa20,
+-	0x191dd: 0x6d170a20, 0x191df: 0x6c2dbc20,
+-	0x191e0: 0x6c3e4420, 0x191e1: 0x6c08d620, 0x191e2: 0x6d3a6820, 0x191e3: 0x6d3f0c20,
+-	0x191e4: 0x6cd5cc20, 0x191e5: 0x6cf9ba20, 0x191e6: 0x6ca5e020,
+-	0x191e8: 0x6c68fe20, 0x191e9: 0x6d0a1420, 0x191ea: 0x6c1cc620, 0x191eb: 0x6caa2220,
+-	0x191ec: 0x6cc67e20, 0x191ed: 0x6d364220, 0x191ee: 0x6cca6e20,
+-	0x191f0: 0x6cccf020, 0x191f1: 0x6d237e20, 0x191f3: 0x6c6c4e20,
+-	0x191f5: 0x6c929c20, 0x191f6: 0x6c4db020, 0x191f7: 0x6c0cb220,
+-	0x191f8: 0x6d183a20, 0x191f9: 0x6d41c020, 0x191fa: 0x6d2e7220, 0x191fb: 0x6d23ac20,
+-	0x191fc: 0x6ced3c20, 0x191fd: 0x6ca5fe20, 0x191fe: 0x6c495e20, 0x191ff: 0x6c748420,
+-	// Block 0x648, offset 0x19200
+-	0x19200: 0x6c082820, 0x19201: 0x6c11a220, 0x19203: 0x6c351220,
+-	0x19204: 0x6cb7c620, 0x19205: 0x6d10b420, 0x19206: 0x6c7d1820, 0x19207: 0x6cc84820,
+-	0x19208: 0x6c542e20, 0x19209: 0x6d0a3820, 0x1920a: 0x6d020020,
+-	0x1920c: 0x6c7d1a20, 0x1920e: 0x6d00f020, 0x1920f: 0x6c0f6420,
+-	0x19210: 0x6c78d820, 0x19211: 0x6c24ec20, 0x19212: 0x6d074020, 0x19213: 0x6c042820,
+-	0x19214: 0x6cab5820, 0x19215: 0x6d400c20, 0x19217: 0x6ce42e20,
+-	0x19218: 0x6c1ef220, 0x19219: 0x6c1b5820, 0x1921a: 0x6ca7b420, 0x1921b: 0x6c49ac20,
+-	0x1921c: 0x6c3cbe20, 0x1921d: 0x6d023020, 0x1921e: 0x6c2aba20, 0x1921f: 0x6cef4e20,
+-	0x19220: 0x6c74e220, 0x19221: 0x6c7d2e20, 0x19222: 0x6d2bb420, 0x19223: 0x6cc9ac20,
+-	0x19224: 0x6c34bc20, 0x19225: 0x6c8d8420, 0x19226: 0x6c9b9a20,
+-	0x19228: 0x6c4cde20, 0x19229: 0x6c9b9c20, 0x1922a: 0x6c8fec20,
+-	0x1922c: 0x6d1d5e20, 0x1922e: 0x6c49c620, 0x1922f: 0x6c248820,
+-	0x19230: 0x6c84e620, 0x19231: 0x6c320c20, 0x19233: 0x6c0bf220,
+-	0x19235: 0x6cf62c20, 0x19237: 0x6c2a6620,
+-	0x19238: 0x6c2a6820, 0x19239: 0x6cfcba20, 0x1923a: 0x6c880020,
+-	0x1923c: 0x6ccedc20, 0x1923d: 0x6d00b020, 0x1923e: 0x6cd1c420, 0x1923f: 0x6cf09e20,
+-	// Block 0x649, offset 0x19240
+-	0x19242: 0x6c51d820, 0x19243: 0x6d1f5a20,
+-	0x19244: 0x6c92b220, 0x19245: 0x6c7f5020, 0x19246: 0x6d1d0e20, 0x19247: 0x6cd14c20,
+-	0x19248: 0x6c739220, 0x19249: 0x6cb7e420, 0x1924a: 0x6c65ea20, 0x1924b: 0x6d285c20,
+-	0x1924d: 0x6cb7f620, 0x1924f: 0x6c8c7c20,
+-	0x19250: 0x6c60ea20, 0x19251: 0x6c970a20, 0x19252: 0x6c208220, 0x19253: 0x6ca74620,
+-	0x19254: 0x6c0d6e20, 0x19255: 0x6c87c020, 0x19256: 0x6c8dfa20, 0x19257: 0x6c427a20,
+-	0x19258: 0x6c1a2020, 0x19259: 0x6d07b020, 0x1925a: 0x6cfc1a20, 0x1925b: 0x6c558620,
+-	0x1925c: 0x6c088620, 0x1925d: 0x6d40d020, 0x1925e: 0x6c271a20, 0x1925f: 0x6c271c20,
+-	0x19260: 0x6c5d3e20, 0x19261: 0x6cc9d020, 0x19262: 0x6c184420, 0x19263: 0x6ce37c20,
+-	0x19265: 0x6cab1a20, 0x19266: 0x6d371420, 0x19267: 0x6c8ebe20,
+-	0x19268: 0x6c3aea20, 0x19269: 0x6c695e20, 0x1926a: 0x6c493620, 0x1926b: 0x6cf7ba20,
+-	0x1926c: 0x6c8bf820, 0x1926d: 0x6d07f820, 0x1926e: 0x6cc62a20, 0x1926f: 0x6ce25a20,
+-	0x19270: 0x6cb05820, 0x19271: 0x6d032a20, 0x19272: 0x6ccd7c20, 0x19273: 0x6d360e20,
+-	0x19274: 0x6cec3220, 0x19275: 0x6ce81020, 0x19276: 0x6ce46620, 0x19277: 0x6d13e820,
+-	0x19278: 0x6d019c20, 0x19279: 0x6cb05c20, 0x1927a: 0x6d10ec20, 0x1927b: 0x6d10ee20,
+-	0x1927c: 0x6caa8620, 0x1927d: 0x6c503a20, 0x1927e: 0x6ca8e820, 0x1927f: 0x6d1b4a20,
+-	// Block 0x64a, offset 0x19280
+-	0x19280: 0x6c390a20, 0x19281: 0x6ca3fa20, 0x19282: 0x6d109c20, 0x19283: 0x6ced7e20,
+-	0x19284: 0x6d25e820, 0x19285: 0x6cf9c820, 0x19286: 0x6d392c20, 0x19287: 0x6d25ea20,
+-	0x19288: 0x6cd38a20, 0x19289: 0x6c9e5a20, 0x1928a: 0x6cf62e20, 0x1928b: 0x6c621220,
+-	0x1928c: 0x6ce22a20, 0x1928d: 0x6c3ab020, 0x1928e: 0x6d096020, 0x1928f: 0x6ca5e820,
+-	0x19290: 0x6c224620, 0x19291: 0x6c9d4a20, 0x19292: 0x6c0ba220,
+-	0x19294: 0x6ca2e620, 0x19295: 0x6d238020, 0x19296: 0x6c366220, 0x19297: 0x6d353a20,
+-	0x19298: 0x6cc57420, 0x19299: 0x6d070020, 0x1929a: 0x6c94b020, 0x1929b: 0x6c5be820,
+-	0x1929c: 0x6d0a9620, 0x1929d: 0x6ca4b820, 0x1929e: 0x6c4eee20, 0x1929f: 0x6c63d620,
+-	0x192a0: 0x6c312e20, 0x192a1: 0x6c57b420, 0x192a2: 0x6ce86c20, 0x192a3: 0x6cb26220,
+-	0x192a4: 0x6c244c20, 0x192a5: 0x6cf68220, 0x192a6: 0x6cd99820, 0x192a7: 0x6c9c6c20,
+-	0x192a8: 0x6d034420, 0x192a9: 0x6cf51a20, 0x192aa: 0x6cbf5420, 0x192ab: 0x6d2edc20,
+-	0x192ac: 0x6ce23620, 0x192ad: 0x6d043620, 0x192ae: 0x6c701e20, 0x192af: 0x6c728220,
+-	0x192b0: 0x6c5d4020, 0x192b1: 0x6ce36e20, 0x192b2: 0x6c977420, 0x192b3: 0x6d0ea420,
+-	0x192b4: 0x6c5f2020, 0x192b5: 0x6cd47a20, 0x192b6: 0x6c82d620, 0x192b7: 0x6ced4420,
+-	0x192b8: 0x6c183820, 0x192b9: 0x6c120a20, 0x192ba: 0x6c6c0620, 0x192bb: 0x6d205820,
+-	0x192bc: 0x6c5b6620, 0x192bd: 0x6d2c9420, 0x192be: 0x6cdb4820, 0x192bf: 0x6c444220,
+-	// Block 0x64b, offset 0x192c0
+-	0x192c0: 0x6ca51a20, 0x192c1: 0x6cf8f820, 0x192c3: 0x6c331a20,
+-	0x192c4: 0x6c1b6420, 0x192c5: 0x6cef5020, 0x192c6: 0x6d30ae20, 0x192c7: 0x6c4bf420,
+-	0x192c8: 0x6c175620, 0x192c9: 0x6c1ae020, 0x192ca: 0x6d2a2820, 0x192cb: 0x6c5c8420,
+-	0x192cc: 0x6c944820, 0x192cd: 0x6c8a4620, 0x192ce: 0x6c818a20, 0x192cf: 0x6cead820,
+-	0x192d0: 0x6c5b0420, 0x192d1: 0x6cf54620, 0x192d2: 0x6c02fa20, 0x192d3: 0x6ccf8620,
+-	0x192d4: 0x6cdc0220, 0x192d5: 0x6c974c20, 0x192d6: 0x6ce0b620, 0x192d7: 0x6d035a20,
+-	0x192d8: 0x6c6e4020, 0x192d9: 0x6c017620, 0x192da: 0x6cdee220, 0x192db: 0x6c156420,
+-	0x192dc: 0x6cf11a20, 0x192dd: 0x6ce98420, 0x192de: 0x6c62dc20, 0x192df: 0x6c18fa20,
+-	0x192e0: 0x6c185820, 0x192e1: 0x6d247c20, 0x192e2: 0x6cfc6020, 0x192e3: 0x6d02d020,
+-	0x192e7: 0x6ca51c20,
+-	0x192e9: 0x6d0f1020, 0x192ea: 0x6cc01e20, 0x192eb: 0x6c675820,
+-	0x192ec: 0x6cd95c20, 0x192ed: 0x6c75c420, 0x192ee: 0x6c89fc20, 0x192ef: 0x6c714e20,
+-	0x192f1: 0x6c97d220, 0x192f2: 0x6c8b7220,
+-	0x192f4: 0x6c1f3820, 0x192f5: 0x6c1bae20, 0x192f6: 0x6cfdcc20, 0x192f7: 0x6cbd3a20,
+-	0x192f8: 0x6c9a6220, 0x192f9: 0x6cd5fa20, 0x192fa: 0x6c149020, 0x192fb: 0x6c1bc420,
+-	0x192fc: 0x6c474620, 0x192fd: 0x6d21a820, 0x192fe: 0x6d1a0420,
+-	// Block 0x64c, offset 0x19300
+-	0x19300: 0x6c8eac20, 0x19301: 0x6c818020, 0x19302: 0x6cd61e20, 0x19303: 0x6d30be20,
+-	0x19304: 0x6cd6c420, 0x19305: 0x6c5aac20,
+-	0x19308: 0x6c364620, 0x1930a: 0x6ccc7020, 0x1930b: 0x6d402e20,
+-	0x1930c: 0x6c74a620, 0x1930d: 0x6c75ec20, 0x1930e: 0x6ce93820, 0x1930f: 0x6c90ca20,
+-	0x19310: 0x6cef5c20, 0x19311: 0x6c1cf420, 0x19312: 0x6d3b4820, 0x19313: 0x6c8b7420,
+-	0x19315: 0x6d30cc20, 0x19316: 0x6d2f8c20,
+-	0x19318: 0x6d178020, 0x19319: 0x6c1e5c20, 0x1931a: 0x6ca5ea20, 0x1931b: 0x6c0e7820,
+-	0x1931c: 0x6cdb8620, 0x1931d: 0x6d160620, 0x1931e: 0x6c506020, 0x1931f: 0x6d0bc820,
+-	0x19320: 0x6c58ac20, 0x19321: 0x6c980a20, 0x19322: 0x6c980c20, 0x19323: 0x6cc1f220,
+-	0x19324: 0x6c81c420, 0x19325: 0x6c4ffe20, 0x19326: 0x6d37d620, 0x19327: 0x6c9f4e20,
+-	0x19328: 0x6cfb5620, 0x19329: 0x6d324420, 0x1932a: 0x6cd55e20, 0x1932b: 0x6d423e20,
+-	0x1932c: 0x6d3afc20, 0x1932d: 0x6c46aa20, 0x1932e: 0x6d089820, 0x1932f: 0x6d17c620,
+-	0x19330: 0x6d366e20, 0x19331: 0x6d00c620, 0x19332: 0x6c6d1e20, 0x19333: 0x6c11a420,
+-	0x19335: 0x6c10ae20, 0x19336: 0x6c896a20, 0x19337: 0x6d341020,
+-	0x19338: 0x6c626c20, 0x19339: 0x6ced4620, 0x1933a: 0x6c49a420, 0x1933b: 0x6c70bc20,
+-	0x1933c: 0x6c6ea220, 0x1933d: 0x6c00c420, 0x1933e: 0x6c404220, 0x1933f: 0x6c4b7220,
+-	// Block 0x64d, offset 0x19340
+-	0x19340: 0x6c548020, 0x19341: 0x6d0ec620, 0x19342: 0x6cc87e20, 0x19343: 0x6d36ee20,
+-	0x19344: 0x6c0c9420, 0x19345: 0x6d157620, 0x19346: 0x6cdd9e20, 0x19347: 0x6c2efa20,
+-	0x19348: 0x6c4b9620, 0x19349: 0x6cd18020, 0x1934a: 0x6d0ab820, 0x1934b: 0x6c194620,
+-	0x1934c: 0x6ccf2020, 0x1934d: 0x6cbe8a20,
+-	0x19350: 0x6c218a20, 0x19351: 0x6c533820, 0x19352: 0x6c308220, 0x19353: 0x6c198220,
+-	0x19354: 0x6ceff820, 0x19355: 0x6cc7ea20, 0x19356: 0x6cd55420, 0x19357: 0x6c10f220,
+-	0x19358: 0x6c600e20, 0x19359: 0x6d28b620, 0x1935a: 0x6cb5d420, 0x1935b: 0x6d0c0220,
+-	0x1935c: 0x6c3fe820, 0x1935d: 0x6d235820, 0x1935e: 0x6c3e9020, 0x1935f: 0x6cb39220,
+-	0x19360: 0x6d33e620, 0x19361: 0x6ce06220, 0x19362: 0x6d424020, 0x19363: 0x6c17ec20,
+-	0x19364: 0x6cc19a20, 0x19365: 0x6d204e20, 0x19366: 0x6c514a20, 0x19367: 0x6c547420,
+-	0x19368: 0x6c4b0e20, 0x19369: 0x6c366620, 0x1936a: 0x6c67ea20, 0x1936b: 0x6d27f620,
+-	0x1936c: 0x6ce83020, 0x1936d: 0x6c259820, 0x1936e: 0x6ce87020, 0x1936f: 0x6c402a20,
+-	0x19370: 0x6d424c20, 0x19371: 0x6c558820, 0x19373: 0x6c0f4a20,
+-	0x19374: 0x6d2f6e20, 0x19375: 0x6c754a20, 0x19376: 0x6ce0d020, 0x19377: 0x6c74aa20,
+-	0x19378: 0x6c404620, 0x19379: 0x6c5a0220, 0x1937a: 0x6c211820, 0x1937b: 0x6d1e5e20,
+-	0x1937c: 0x6c20f020, 0x1937d: 0x6cdda020, 0x1937e: 0x6c1b5c20, 0x1937f: 0x6cb92a20,
+-	// Block 0x64e, offset 0x19380
+-	0x19380: 0x6c10fc20, 0x19381: 0x6cff9c20, 0x19382: 0x6c979220, 0x19383: 0x6c117c20,
+-	0x19384: 0x6cb7f820, 0x19385: 0x6c66f620, 0x19386: 0x6c0a9a20, 0x19387: 0x6c5f8420,
+-	0x19388: 0x6d34b820, 0x19389: 0x6d3a3620, 0x1938a: 0x6cc1f420, 0x1938b: 0x6d2e3420,
+-	0x1938c: 0x6c60fa20, 0x1938d: 0x6c0b2420, 0x1938f: 0x6c878020,
+-	0x19390: 0x6c879420, 0x19391: 0x6d272a20, 0x19392: 0x6cc34020, 0x19393: 0x6c195a20,
+-	0x19394: 0x6c3fcc20, 0x19395: 0x6c144020, 0x19396: 0x6ce19c20, 0x19397: 0x6cd37420,
+-	0x19398: 0x6c4f9620, 0x19399: 0x6cbcbe20, 0x1939a: 0x6cb5d620, 0x1939b: 0x6c0efc20,
+-	0x1939c: 0x6ca33e20, 0x1939d: 0x6ce82a20, 0x1939e: 0x6c1e7a20, 0x1939f: 0x6c243c20,
+-	0x193a0: 0x6d26c020, 0x193a1: 0x6d33e820, 0x193a2: 0x6c18cc20, 0x193a3: 0x6c1f4a20,
+-	0x193a4: 0x6c09b420, 0x193a5: 0x6c9b1c20, 0x193a6: 0x6c038020, 0x193a7: 0x6ce4a220,
+-	0x193a8: 0x6c9f5a20, 0x193a9: 0x6c8aba20, 0x193aa: 0x6c3ccc20, 0x193ab: 0x6c197420,
+-	0x193ac: 0x6cc0b820, 0x193ad: 0x6ce58820, 0x193ae: 0x6c3eac20, 0x193af: 0x6c7e0820,
+-	0x193b0: 0x6c65b820,
+-	0x193b4: 0x6d325620, 0x193b5: 0x6cc08a20, 0x193b6: 0x6d42a820, 0x193b7: 0x6c1c4c20,
+-	0x193b8: 0x6c7c9420, 0x193b9: 0x6c8b2420, 0x193ba: 0x6c074a20, 0x193bb: 0x6c326e20,
+-	0x193bc: 0x6cf46c20, 0x193be: 0x6d3d9220, 0x193bf: 0x6c92ba20,
+-	// Block 0x64f, offset 0x193c0
+-	0x193c0: 0x6ce0d220, 0x193c2: 0x6c1eaa20, 0x193c3: 0x6c89a020,
+-	0x193c4: 0x6ce51820, 0x193c5: 0x6c7dbe20, 0x193c6: 0x6c16c420, 0x193c7: 0x6c74ac20,
+-	0x193c8: 0x6ce8ec20, 0x193c9: 0x6c594e20, 0x193ca: 0x6c3aca20, 0x193cb: 0x6c0a3c20,
+-	0x193cd: 0x6cf97c20, 0x193ce: 0x6cf31820, 0x193cf: 0x6c628a20,
+-	0x193d0: 0x6cc27a20, 0x193d1: 0x6c7cdc20, 0x193d2: 0x6c55c220, 0x193d3: 0x6cbfca20,
+-	0x193d4: 0x6cdc7c20, 0x193d5: 0x6c10fa20, 0x193d7: 0x6cc0bc20,
+-	0x193d8: 0x6cb0c820, 0x193d9: 0x6cad1020, 0x193da: 0x6cec4020, 0x193db: 0x6d115620,
+-	0x193dc: 0x6cc6c220, 0x193dd: 0x6d09b620, 0x193de: 0x6c246c20, 0x193df: 0x6c2efc20,
+-	0x193e0: 0x6c1c8a20, 0x193e1: 0x6c25f620, 0x193e2: 0x6c9c1220, 0x193e3: 0x6d086420,
+-	0x193e4: 0x6c34be20, 0x193e5: 0x6c0d0420, 0x193e6: 0x6d310a20, 0x193e7: 0x6c1ec620,
+-	0x193e8: 0x6c164220, 0x193e9: 0x6c4b9e20, 0x193ea: 0x6c32e620, 0x193eb: 0x6d409420,
+-	0x193ec: 0x6c2afe20, 0x193ed: 0x6c7f3820, 0x193ee: 0x6ce2da20, 0x193ef: 0x6d272c20,
+-	0x193f0: 0x6cc34220, 0x193f1: 0x6d3a5020, 0x193f2: 0x6c8d1020, 0x193f3: 0x6c186c20,
+-	0x193f4: 0x6d31e020, 0x193f5: 0x6c400220, 0x193f6: 0x6ccf4e20, 0x193f7: 0x6ce5c620,
+-	0x193f8: 0x6c7ac820, 0x193f9: 0x6c004420, 0x193fb: 0x6cbf5620,
+-	0x193fc: 0x6cd61220, 0x193fd: 0x6c4d3420, 0x193fe: 0x6ccd5e20, 0x193ff: 0x6cec7620,
+-	// Block 0x650, offset 0x19400
+-	0x19400: 0x6d2e3620, 0x19401: 0x6c904a20, 0x19402: 0x6c6f6220, 0x19403: 0x6c85b820,
+-	0x19405: 0x6c210220, 0x19406: 0x6cc66c20, 0x19407: 0x6d26ac20,
+-	0x19408: 0x6c743a20, 0x19409: 0x6c776c20, 0x1940a: 0x6c390c20, 0x1940b: 0x6cb5da20,
+-	0x1940c: 0x6c534220, 0x1940d: 0x6c3e7220, 0x1940e: 0x6c915220, 0x1940f: 0x6c535820,
+-	0x19410: 0x6ceb2a20, 0x19411: 0x6c9f5c20, 0x19412: 0x6ce4a420, 0x19413: 0x6c737c20,
+-	0x19414: 0x6cb70620, 0x19415: 0x6d332620, 0x19416: 0x6cbece20, 0x19417: 0x6c45f220,
+-	0x19418: 0x6ce4b620, 0x19419: 0x6c80dc20, 0x1941a: 0x6c99a620, 0x1941b: 0x6d1b6a20,
+-	0x1941c: 0x6c92c020, 0x1941d: 0x6d250e20, 0x1941e: 0x6c715420, 0x1941f: 0x6cb0b820,
+-	0x19421: 0x6d00f420, 0x19422: 0x6c0bbe20, 0x19423: 0x6c5cd820,
+-	0x19424: 0x6d39cc20, 0x19425: 0x6cc6c820, 0x19426: 0x6cca8e20, 0x19427: 0x6cf38420,
+-	0x19428: 0x6c144e20, 0x19429: 0x6c795820, 0x1942a: 0x6ccdc420, 0x1942b: 0x6caede20,
+-	0x1942c: 0x6c980e20, 0x1942d: 0x6d050620, 0x1942f: 0x6c237020,
+-	0x19430: 0x6c796020, 0x19431: 0x6d3bb220, 0x19432: 0x6c154620, 0x19433: 0x6cd84220,
+-	0x19434: 0x6c1cf620, 0x19435: 0x6cdcae20, 0x19436: 0x6c076e20, 0x19437: 0x6c769e20,
+-	0x19439: 0x6d376020, 0x1943a: 0x6cf12620, 0x1943b: 0x6c9f8420,
+-	0x1943c: 0x6c8db220, 0x1943d: 0x6d414220, 0x1943e: 0x6ca8d420, 0x1943f: 0x6c8dfc20,
+-	// Block 0x651, offset 0x19440
+-	0x19440: 0x6cb77420, 0x19441: 0x6d26b020, 0x19443: 0x6d186820,
+-	0x19444: 0x6cf82220, 0x19445: 0x6c18d820, 0x19447: 0x6cc71e20,
+-	0x19448: 0x6c18f820, 0x19449: 0x6ca9da20, 0x1944a: 0x6d1ef220, 0x1944b: 0x6c618c20,
+-	0x1944c: 0x6c0ebe20, 0x1944d: 0x6c39ca20,
+-	0x19450: 0x6c242220, 0x19451: 0x6c2be820, 0x19452: 0x6c684020, 0x19453: 0x6d20fc20,
+-	0x19454: 0x6c50fe20, 0x19455: 0x6d06b220, 0x19456: 0x6d22f820, 0x19457: 0x6cc0f620,
+-	0x19459: 0x6c044420, 0x1945a: 0x6c44cc20, 0x1945b: 0x6c6f0e20,
+-	0x1945d: 0x6d0bb820, 0x1945e: 0x6cd5de20, 0x1945f: 0x6d1f3e20,
+-	0x19460: 0x6cd98e20, 0x19461: 0x6d130820, 0x19462: 0x6c125820, 0x19463: 0x6d112a20,
+-	0x19464: 0x6cd5fc20, 0x19465: 0x6d0cba20, 0x19466: 0x6cd67220, 0x19467: 0x6c8aa220,
+-	0x19468: 0x6c235020, 0x19469: 0x6d23d420, 0x1946a: 0x6c0f6620, 0x1946b: 0x6cdbfe20,
+-	0x1946d: 0x6d0eca20, 0x1946e: 0x6c834820, 0x1946f: 0x6c8bf420,
+-	0x19470: 0x6ce30220, 0x19471: 0x6c31de20, 0x19472: 0x6d272e20, 0x19473: 0x6c611620,
+-	0x19475: 0x6d278620,
+-	0x19478: 0x6c706220, 0x19479: 0x6c71a820, 0x1947a: 0x6c1e5820, 0x1947b: 0x6c18ac20,
+-	0x1947c: 0x6c457820, 0x1947d: 0x6cfe4220, 0x1947e: 0x6cfbee20, 0x1947f: 0x6c011c20,
+-	// Block 0x652, offset 0x19480
+-	0x19480: 0x6c4ae020, 0x19481: 0x6d223220, 0x19482: 0x6c82bc20,
+-	0x19484: 0x6ce89c20, 0x19485: 0x6c18b820, 0x19486: 0x6d03e020, 0x19487: 0x6cc03e20,
+-	0x19488: 0x6c4f9a20, 0x1948a: 0x6c292c20, 0x1948b: 0x6c112e20,
+-	0x1948c: 0x6c2bf420, 0x1948d: 0x6d0d7020, 0x1948e: 0x6d3e3020,
+-	0x19490: 0x6d1bc020, 0x19491: 0x6c14fa20, 0x19493: 0x6c840020,
+-	0x19494: 0x6cdd7e20, 0x19495: 0x6c969c20, 0x19496: 0x6c96a620,
+-	0x19498: 0x6ce11e20, 0x19499: 0x6cade620, 0x1949a: 0x6c90ae20, 0x1949b: 0x6cb51820,
+-	0x1949c: 0x6c25ec20, 0x1949d: 0x6ce8ee20, 0x1949e: 0x6c369a20, 0x1949f: 0x6c11aa20,
+-	0x194a0: 0x6c6b2c20, 0x194a1: 0x6d156420, 0x194a2: 0x6c60d020, 0x194a3: 0x6c294220,
+-	0x194a4: 0x6c752220, 0x194a5: 0x6c08cc20, 0x194a6: 0x6c832620, 0x194a7: 0x6d174a20,
+-	0x194a8: 0x6c214020, 0x194a9: 0x6c214620, 0x194aa: 0x6cb38820, 0x194ab: 0x6c83cc20,
+-	0x194ac: 0x6d291420, 0x194ad: 0x6cdf7020, 0x194ae: 0x6cb39420, 0x194af: 0x6c242620,
+-	0x194b0: 0x6c725020, 0x194b1: 0x6d070620, 0x194b2: 0x6c395820,
+-	0x194b4: 0x6d070820, 0x194b5: 0x6c37d420, 0x194b6: 0x6c5d7e20, 0x194b7: 0x6d39b820,
+-	0x194b8: 0x6cc4c820, 0x194b9: 0x6c381c20, 0x194ba: 0x6c72fc20, 0x194bb: 0x6c4db620,
+-	0x194bc: 0x6c896e20, 0x194bd: 0x6d341220, 0x194be: 0x6c9d8220, 0x194bf: 0x6d209a20,
+-	// Block 0x653, offset 0x194c0
+-	0x194c1: 0x6c133a20, 0x194c2: 0x6c9a2c20, 0x194c3: 0x6d1a0620,
+-	0x194c4: 0x6c9e4220, 0x194c5: 0x6ce8f620, 0x194c6: 0x6c7c9e20,
+-	0x194c9: 0x6c9d9a20, 0x194ca: 0x6cc6ca20, 0x194cb: 0x6d241c20,
+-	0x194cc: 0x6cbae620, 0x194cd: 0x6c9c8c20, 0x194ce: 0x6c718020, 0x194cf: 0x6cb07e20,
+-	0x194d0: 0x6c6cc620, 0x194d1: 0x6cee5e20, 0x194d2: 0x6c62c020, 0x194d3: 0x6c9baa20,
+-	0x194d4: 0x6c672020, 0x194d5: 0x6d098020, 0x194d6: 0x6c068220, 0x194d7: 0x6c420220,
+-	0x194d8: 0x6c161e20, 0x194d9: 0x6c87cc20, 0x194da: 0x6c851620, 0x194db: 0x6cc04020,
+-	0x194dc: 0x6c33ee20, 0x194dd: 0x6d1d3e20, 0x194de: 0x6d27ea20, 0x194df: 0x6c18ce20,
+-	0x194e0: 0x6d353220, 0x194e1: 0x6cc4ca20, 0x194e3: 0x6c94b220,
+-	0x194e4: 0x6c763a20, 0x194e5: 0x6c4b1420, 0x194e6: 0x6d26d620, 0x194e7: 0x6c5c0820,
+-	0x194e8: 0x6cb0b220, 0x194e9: 0x6c13f820, 0x194ea: 0x6c34a820, 0x194eb: 0x6c152220,
+-	0x194ec: 0x6ccc1020, 0x194ed: 0x6cd3c820, 0x194ee: 0x6ccf7620, 0x194ef: 0x6d03fa20,
+-	0x194f0: 0x6d1c9420, 0x194f1: 0x6cd3ca20, 0x194f2: 0x6c1c6420, 0x194f3: 0x6d134820,
+-	0x194f4: 0x6c4e3620, 0x194f5: 0x6c3ad420, 0x194f6: 0x6d134a20, 0x194f7: 0x6d0de220,
+-	0x194f8: 0x6d416220, 0x194f9: 0x6cd9ee20, 0x194fa: 0x6c6c6620, 0x194fb: 0x6c351a20,
+-	0x194fc: 0x6cfd2220, 0x194fd: 0x6c492e20, 0x194fe: 0x6ce1f820, 0x194ff: 0x6cbcfa20,
+-	// Block 0x654, offset 0x19500
+-	0x19500: 0x6c15f420, 0x19501: 0x6c4e4420, 0x19502: 0x6c9c1420, 0x19503: 0x6d26fc20,
+-	0x19504: 0x6c247020, 0x19505: 0x6cba8420, 0x19506: 0x6c6cc420, 0x19507: 0x6ccdd020,
+-	0x19508: 0x6ca25820, 0x19509: 0x6d251e20, 0x1950b: 0x6cae8a20,
+-	0x1950c: 0x6d336e20, 0x1950d: 0x6d374a20, 0x1950e: 0x6c216c20, 0x1950f: 0x6d22aa20,
+-	0x19510: 0x6ca1f820, 0x19511: 0x6cedae20, 0x19512: 0x6c681020, 0x19513: 0x6cb54c20,
+-	0x19514: 0x6cdb5e20, 0x19515: 0x6cb1e220, 0x19516: 0x6ce4d020, 0x19517: 0x6c7b7820,
+-	0x19518: 0x6c247a20, 0x19519: 0x6cdcb820, 0x1951b: 0x6c6a4220,
+-	0x1951c: 0x6c671420, 0x1951d: 0x6c028820, 0x1951e: 0x6c696e20, 0x1951f: 0x6d138e20,
+-	0x19521: 0x6d139020, 0x19522: 0x6c8ff020, 0x19523: 0x6d2a3620,
+-	0x19524: 0x6c05de20, 0x19525: 0x6c889a20, 0x19527: 0x6c58c620,
+-	0x19528: 0x6c942620, 0x19529: 0x6cef7820, 0x1952a: 0x6cfc5820, 0x1952b: 0x6ce60a20,
+-	0x1952c: 0x6c0fc820, 0x1952d: 0x6d337620, 0x1952e: 0x6d3a3e20, 0x1952f: 0x6c06c420,
+-	0x19530: 0x6c9bba20, 0x19531: 0x6d015220, 0x19532: 0x6cab6820, 0x19533: 0x6d1ed820,
+-	0x19535: 0x6cffc820, 0x19536: 0x6c87aa20, 0x19537: 0x6d2c6e20,
+-	0x19538: 0x6c9cd020, 0x1953a: 0x6d128420,
+-	0x1953d: 0x6cb31620, 0x1953e: 0x6d014220,
+-	// Block 0x655, offset 0x19540
+-	0x19542: 0x6ccdd220, 0x19543: 0x6d3d1420,
+-	0x19545: 0x6ccddc20, 0x19546: 0x6c754020, 0x19547: 0x6c61fc20,
+-	0x19548: 0x6c6a2620, 0x1954a: 0x6ca7a420, 0x1954b: 0x6c028420,
+-	0x1954c: 0x6c1f3a20, 0x1954d: 0x6cf4e420, 0x1954e: 0x6c495420, 0x1954f: 0x6d01b820,
+-	0x19550: 0x6ce6d020, 0x19551: 0x6d096220, 0x19552: 0x6c297220, 0x19553: 0x6d2d8620,
+-	0x19554: 0x6ce06620, 0x19555: 0x6cae7c20, 0x19556: 0x6d00d420, 0x19557: 0x6d072020,
+-	0x19558: 0x6cfcf220, 0x19559: 0x6cd8d820, 0x1955a: 0x6c7aee20, 0x1955b: 0x6d335a20,
+-	0x1955c: 0x6cf3e620, 0x1955d: 0x6c5d5c20, 0x1955e: 0x6cc90620, 0x1955f: 0x6cf1ee20,
+-	0x19560: 0x6c317a20, 0x19561: 0x6c58a020, 0x19562: 0x6c7e1420, 0x19563: 0x6c405a20,
+-	0x19564: 0x6c1fd020, 0x19565: 0x6cfba420, 0x19566: 0x6cbdae20, 0x19567: 0x6cbc8820,
+-	0x19568: 0x6c7fba20, 0x1956a: 0x6d0bca20, 0x1956b: 0x6d1c0220,
+-	0x1956c: 0x6cc40820, 0x1956d: 0x6c4f5620, 0x1956e: 0x6c218c20, 0x1956f: 0x6d371e20,
+-	0x19571: 0x6cf05620, 0x19572: 0x6d0d0620, 0x19573: 0x6cfe6a20,
+-	0x19574: 0x6d194c20, 0x19575: 0x6ca66a20, 0x19576: 0x6d335c20, 0x19577: 0x6c1fca20,
+-	0x19579: 0x6cd23020, 0x1957a: 0x6c2f4a20, 0x1957b: 0x6d3ee020,
+-	0x1957c: 0x6c73e820, 0x1957d: 0x6d067620, 0x1957e: 0x6d255a20,
+-	// Block 0x656, offset 0x19580
+-	0x19581: 0x6d063020, 0x19582: 0x6c2a0220, 0x19583: 0x6ce48620,
+-	0x19584: 0x6c448020, 0x19585: 0x6d14b420, 0x19586: 0x6c532420, 0x19587: 0x6d13dc20,
+-	0x19589: 0x6c851220, 0x1958a: 0x6c7a3820, 0x1958b: 0x6cfc0820,
+-	0x1958c: 0x6cdbbe20, 0x1958d: 0x6cf87620, 0x1958e: 0x6d088620,
+-	0x19591: 0x6c2b2a20, 0x19592: 0x6c7f0420, 0x19593: 0x6d387e20,
+-	0x19594: 0x6ca76420, 0x19595: 0x6c19f820, 0x19596: 0x6c668620, 0x19597: 0x6c09ba20,
+-	0x19598: 0x6d3bc820, 0x19599: 0x6c8d1620, 0x1959a: 0x6c504e20, 0x1959b: 0x6c058020,
+-	0x1959c: 0x6ce10a20, 0x1959d: 0x6c1ac220, 0x1959e: 0x6c96c820, 0x1959f: 0x6cfce420,
+-	0x195a0: 0x6cd69420, 0x195a1: 0x6d1da020, 0x195a2: 0x6cc12c20,
+-	0x195a4: 0x6cb44c20, 0x195a5: 0x6c5c2020, 0x195a6: 0x6cef3620, 0x195a7: 0x6d161620,
+-	0x195a8: 0x6d134c20, 0x195aa: 0x6c184820, 0x195ab: 0x6c4ff820,
+-	0x195ac: 0x6c0d5a20, 0x195ae: 0x6cfd3620, 0x195af: 0x6c155e20,
+-	0x195b0: 0x6c5d4e20, 0x195b2: 0x6c4ebc20, 0x195b3: 0x6c224220,
+-	0x195b4: 0x6d33ec20, 0x195b5: 0x6cb5f220, 0x195b6: 0x6c7c7e20, 0x195b7: 0x6cc75620,
+-	0x195b9: 0x6d1bca20, 0x195ba: 0x6d047e20,
+-	0x195bc: 0x6c55a020, 0x195bd: 0x6c250620, 0x195bf: 0x6cc3fc20,
+-	// Block 0x657, offset 0x195c0
+-	0x195c0: 0x6c2b9220, 0x195c1: 0x6cf53020, 0x195c2: 0x6cbfd020,
+-	0x195c4: 0x6d0eee20, 0x195c5: 0x6c8a5020, 0x195c6: 0x6c08a620,
+-	0x195c8: 0x6c0d7220, 0x195ca: 0x6d252c20, 0x195cb: 0x6caaa620,
+-	0x195cc: 0x6c05c620, 0x195cd: 0x6d1cf220, 0x195ce: 0x6c536c20, 0x195cf: 0x6c225820,
+-	0x195d0: 0x6cb87220, 0x195d1: 0x6ce35a20, 0x195d2: 0x6d23b220, 0x195d3: 0x6c824c20,
+-	0x195d4: 0x6c05d020, 0x195d6: 0x6c625620, 0x195d7: 0x6c3ee820,
+-	0x195d8: 0x6cfd0420, 0x195d9: 0x6c133820, 0x195da: 0x6c550620, 0x195db: 0x6ccb6620,
+-	0x195dc: 0x6c080a20, 0x195dd: 0x6cbe5620, 0x195de: 0x6d22a020, 0x195df: 0x6cebf620,
+-	0x195e0: 0x6c007a20, 0x195e1: 0x6c4e3c20, 0x195e2: 0x6c28d020, 0x195e3: 0x6c444620,
+-	0x195e4: 0x6c2b9c20, 0x195e5: 0x6c5e2020, 0x195e6: 0x6cace420,
+-	0x195e8: 0x6d3c6a20, 0x195e9: 0x6c8d7c20, 0x195ea: 0x6c970820, 0x195eb: 0x6c974820,
+-	0x195ec: 0x6c888c20, 0x195ed: 0x6cff4220, 0x195ee: 0x6d093220, 0x195ef: 0x6d327820,
+-	0x195f0: 0x6cb3b820, 0x195f1: 0x6c408e20, 0x195f2: 0x6caa0e20, 0x195f3: 0x6cf93220,
+-	0x195f4: 0x6c338e20, 0x195f5: 0x6c28f020, 0x195f6: 0x6d280c20, 0x195f7: 0x6cfd5220,
+-	0x195f8: 0x6d1b3020, 0x195f9: 0x6cd52220, 0x195fa: 0x6c339420, 0x195fb: 0x6c086820,
+-	0x195fc: 0x6c56e620, 0x195fd: 0x6c3a5420, 0x195fe: 0x6c3aa820, 0x195ff: 0x6d28be20,
+-	// Block 0x658, offset 0x19600
+-	0x19600: 0x6c075620, 0x19601: 0x6c3a2820, 0x19602: 0x6cfab820, 0x19603: 0x6cd3ae20,
+-	0x19604: 0x6c9e3020, 0x19605: 0x6d2e0820, 0x19606: 0x6d2e0a20, 0x19607: 0x6d2d8c20,
+-	0x19608: 0x6c5c4820, 0x19609: 0x6c3f8820, 0x1960a: 0x6ced5a20, 0x1960b: 0x6ca0b420,
+-	0x1960c: 0x6cbc1020, 0x1960d: 0x6c8a8a20, 0x1960f: 0x6c9f1e20,
+-	0x19610: 0x6c54d820, 0x19611: 0x6c535e20, 0x19612: 0x6d213c20, 0x19613: 0x6cb60820,
+-	0x19614: 0x6c350420, 0x19615: 0x6c020020, 0x19617: 0x6c03ba20,
+-	0x19618: 0x6c2c7820, 0x19619: 0x6d08aa20, 0x1961a: 0x6c2c8a20, 0x1961b: 0x6c0a0e20,
+-	0x1961c: 0x6d393e20, 0x1961d: 0x6cad6020, 0x1961e: 0x6ce5f620, 0x1961f: 0x6d155020,
+-	0x19621: 0x6c63ea20, 0x19622: 0x6d36f220, 0x19623: 0x6ce8f820,
+-	0x19624: 0x6d00f820, 0x19625: 0x6c28ba20, 0x19626: 0x6ce5a620, 0x19627: 0x6d022620,
+-	0x19628: 0x6c172620, 0x19629: 0x6d25f220, 0x1962a: 0x6c496a20, 0x1962b: 0x6c89a420,
+-	0x1962c: 0x6c083220, 0x1962e: 0x6c930020, 0x1962f: 0x6c60e420,
+-	0x19630: 0x6d08c220, 0x19631: 0x6cd62420, 0x19632: 0x6c318220, 0x19633: 0x6cd9f420,
+-	0x19634: 0x6c55e220, 0x19635: 0x6d286420, 0x19636: 0x6c160820, 0x19637: 0x6c054620,
+-	0x19638: 0x6cc6da20, 0x19639: 0x6c359c20, 0x1963a: 0x6cf24020, 0x1963b: 0x6c03ca20,
+-	0x1963c: 0x6c3cc220, 0x1963d: 0x6d209e20, 0x1963e: 0x6d310c20, 0x1963f: 0x6c3bae20,
+-	// Block 0x659, offset 0x19640
+-	0x19640: 0x6c496c20, 0x19641: 0x6c104c20, 0x19642: 0x6c446220, 0x19643: 0x6c33c420,
+-	0x19644: 0x6c5a3420, 0x19645: 0x6c31f820, 0x19646: 0x6ce3ce20, 0x19647: 0x6c0fcc20,
+-	0x19648: 0x6cba8a20, 0x19649: 0x6c8b8220, 0x1964a: 0x6c901620, 0x1964b: 0x6cf13420,
+-	0x1964c: 0x6d2eac20, 0x1964d: 0x6c801820, 0x1964e: 0x6cdbea20, 0x1964f: 0x6ca36020,
+-	0x19650: 0x6c0a1020, 0x19651: 0x6ceb3e20, 0x19652: 0x6d3b1a20, 0x19653: 0x6c2e5c20,
+-	0x19654: 0x6c104620, 0x19655: 0x6c716820, 0x19656: 0x6cb3b020, 0x19657: 0x6cfa0c20,
+-	0x19658: 0x6cf04420, 0x19659: 0x6cb3b420, 0x1965a: 0x6c267420, 0x1965b: 0x6c387220,
+-	0x1965c: 0x6c14e420, 0x1965d: 0x6c56f020, 0x1965e: 0x6d28c020,
+-	0x19664: 0x6c38f020, 0x19665: 0x6d028a20, 0x19666: 0x6c536020, 0x19667: 0x6c1b2e20,
+-	0x19668: 0x6c05c820, 0x19669: 0x6d1a7a20, 0x1966b: 0x6c6dd220,
+-	0x1966c: 0x6c0f6820, 0x1966d: 0x6cc88820, 0x1966e: 0x6c1e3a20, 0x1966f: 0x6d1c1220,
+-	0x19670: 0x6d143a20, 0x19671: 0x6c411820, 0x19672: 0x6c7d6c20, 0x19673: 0x6d27f020,
+-	0x19674: 0x6d31ec20, 0x19675: 0x6d0b5a20, 0x19676: 0x6c70b820, 0x19677: 0x6c547a20,
+-	0x19678: 0x6c9f7620, 0x19679: 0x6c040220, 0x1967a: 0x6c441c20, 0x1967b: 0x6c0bb220,
+-	0x1967c: 0x6d3d0820, 0x1967d: 0x6c505420, 0x1967e: 0x6d31ee20, 0x1967f: 0x6cd14a20,
+-	// Block 0x65a, offset 0x19680
+-	0x19680: 0x6c44a020, 0x19681: 0x6c0a3e20, 0x19682: 0x6c34b220, 0x19683: 0x6c216820,
+-	0x19684: 0x6c1fb220, 0x19685: 0x6cca5a20, 0x19686: 0x6c1a4620, 0x19687: 0x6cc48a20,
+-	0x19688: 0x6c191220, 0x19689: 0x6c99b820, 0x1968a: 0x6cadf220, 0x1968b: 0x6ceec220,
+-	0x1968c: 0x6cb07420, 0x1968d: 0x6c3f8c20, 0x1968e: 0x6d3d0e20, 0x1968f: 0x6cb53c20,
+-	0x19690: 0x6c8bec20, 0x19691: 0x6d142020, 0x19692: 0x6c9adc20, 0x19693: 0x6cf3f820,
+-	0x19694: 0x6cb7fa20, 0x19695: 0x6c2f0020, 0x19696: 0x6c191a20, 0x19697: 0x6cfa0e20,
+-	0x19698: 0x6c518e20, 0x19699: 0x6cca9220, 0x1969a: 0x6c487e20, 0x1969b: 0x6c543e20,
+-	0x1969c: 0x6c023420, 0x1969d: 0x6c3f9420, 0x1969e: 0x6cbbc620, 0x1969f: 0x6c5d4c20,
+-	0x196a0: 0x6cafa220, 0x196a1: 0x6d0cf820, 0x196a2: 0x6cd84420, 0x196a3: 0x6cf7b420,
+-	0x196a4: 0x6ca02420, 0x196a5: 0x6c7ce420, 0x196a6: 0x6c445620,
+-	0x196a8: 0x6c02fc20, 0x196a9: 0x6cca4220, 0x196aa: 0x6cd6ee20, 0x196ab: 0x6c90d820,
+-	0x196ac: 0x6d320620, 0x196ad: 0x6c5c9a20, 0x196ae: 0x6c156620,
+-	0x196b0: 0x6c8c8420, 0x196b1: 0x6ca2ee20, 0x196b2: 0x6c4f3c20, 0x196b3: 0x6c31fc20,
+-	0x196b4: 0x6c6d7820, 0x196b5: 0x6c9df420, 0x196b6: 0x6c38fa20, 0x196b7: 0x6c370020,
+-	0x196b8: 0x6c174220, 0x196b9: 0x6c536220, 0x196ba: 0x6c536e20, 0x196bb: 0x6d238820,
+-	0x196bc: 0x6d096a20, 0x196bd: 0x6cad3a20, 0x196be: 0x6c088220, 0x196bf: 0x6c175220,
+-	// Block 0x65b, offset 0x196c0
+-	0x196c0: 0x6d1fe220, 0x196c1: 0x6d153a20, 0x196c2: 0x6d096e20, 0x196c3: 0x6cc97e20,
+-	0x196c4: 0x6d073420, 0x196c5: 0x6c866820, 0x196c6: 0x6c868a20, 0x196c7: 0x6d263220,
+-	0x196c8: 0x6c336220, 0x196c9: 0x6c5e0420, 0x196ca: 0x6ccc7e20, 0x196cb: 0x6c838c20,
+-	0x196cc: 0x6cb3ce20, 0x196cd: 0x6c550e20, 0x196ce: 0x6c4c8e20, 0x196cf: 0x6c10c420,
+-	0x196d0: 0x6cc8a620, 0x196d1: 0x6cf0fa20, 0x196d2: 0x6cd9f620, 0x196d3: 0x6c01dc20,
+-	0x196d4: 0x6d21cc20, 0x196d5: 0x6cfd8e20, 0x196d6: 0x6c527c20, 0x196d7: 0x6d0fea20,
+-	0x196d8: 0x6cff4420, 0x196d9: 0x6d116820, 0x196db: 0x6c0ac020,
+-	0x196dd: 0x6c528420, 0x196de: 0x6ce25620, 0x196df: 0x6c8eee20,
+-	0x196e1: 0x6d3b3420, 0x196e3: 0x6cf89a20,
+-	0x196e4: 0x6d298e20, 0x196e5: 0x6d17d420, 0x196e6: 0x6c312a20, 0x196e7: 0x6d259020,
+-	0x196e8: 0x6c700820, 0x196ea: 0x6c0f2020, 0x196eb: 0x6ce35c20,
+-	0x196ec: 0x6d1d0220, 0x196ee: 0x6d154020, 0x196ef: 0x6ca70420,
+-	0x196f0: 0x6ccee220, 0x196f1: 0x6c07c020, 0x196f2: 0x6c465620, 0x196f3: 0x6c04d420,
+-	0x196f4: 0x6ca14820, 0x196f5: 0x6c410420, 0x196f6: 0x6c372620, 0x196f7: 0x6ccf2e20,
+-	0x196f9: 0x6d36d620, 0x196fa: 0x6d106c20, 0x196fb: 0x6c66ca20,
+-	0x196fc: 0x6d263420, 0x196fd: 0x6cd73020, 0x196fe: 0x6ce38420, 0x196ff: 0x6cf02020,
+-	// Block 0x65c, offset 0x19700
+-	0x19700: 0x6d0aaa20, 0x19701: 0x6d36f620, 0x19702: 0x6d18bc20, 0x19703: 0x6cc59c20,
+-	0x19704: 0x6cd3ee20, 0x19705: 0x6c55d420, 0x19706: 0x6ca55620, 0x19707: 0x6d126a20,
+-	0x19708: 0x6c66f820, 0x19709: 0x6cdc1220, 0x1970a: 0x6d1d1e20, 0x1970b: 0x6c061a20,
+-	0x1970c: 0x6c55e420, 0x1970d: 0x6c55e620, 0x1970e: 0x6d137a20,
+-	0x19710: 0x6d107420, 0x19711: 0x6c888e20, 0x19712: 0x6cf72620, 0x19713: 0x6c372820,
+-	0x19714: 0x6c331c20, 0x19715: 0x6d297e20, 0x19716: 0x6d3b4420, 0x19717: 0x6d1d2820,
+-	0x19718: 0x6d1d2c20, 0x19719: 0x6c6cca20, 0x1971a: 0x6c208820, 0x1971b: 0x6c28ec20,
+-	0x1971d: 0x6c7b4a20, 0x1971e: 0x6d196020, 0x1971f: 0x6d139a20,
+-	0x19720: 0x6c662e20, 0x19721: 0x6c372a20, 0x19722: 0x6ca93e20, 0x19723: 0x6c228820,
+-	0x19724: 0x6cba3420, 0x19725: 0x6d098220, 0x19726: 0x6c0ea420, 0x19727: 0x6c9d1420,
+-	0x19728: 0x6cd73a20, 0x19729: 0x6ca0a620, 0x1972a: 0x6c897c20, 0x1972b: 0x6cb71820,
+-	0x1972c: 0x6cb71a20, 0x1972d: 0x6cd44c20, 0x1972e: 0x6c3f2020, 0x1972f: 0x6c0f3a20,
+-	0x19730: 0x6c085820, 0x19731: 0x6c0d0020, 0x19732: 0x6d161c20, 0x19733: 0x6cf13a20,
+-	0x19734: 0x6c587e20, 0x19735: 0x6c38ac20, 0x19736: 0x6cb60e20, 0x19737: 0x6c98f620,
+-	0x19738: 0x6c060820, 0x19739: 0x6c020420, 0x1973a: 0x6c020a20, 0x1973b: 0x6c403020,
+-	0x1973c: 0x6cb63020, 0x1973d: 0x6cc45020, 0x1973e: 0x6ceb4020, 0x1973f: 0x6d187420,
+-	// Block 0x65d, offset 0x19740
+-	0x19740: 0x6c0f5420, 0x19741: 0x6cb12820, 0x19742: 0x6c039220,
+-	0x19744: 0x6d082220, 0x19747: 0x6d23fe20,
+-	0x19748: 0x6c1b5620, 0x19749: 0x6c915e20, 0x1974a: 0x6d156820, 0x1974b: 0x6c868c20,
+-	0x1974d: 0x6ca7b020, 0x1974e: 0x6cf90220, 0x1974f: 0x6cf3fa20,
+-	0x19751: 0x6c834a20, 0x19752: 0x6cb41a20, 0x19753: 0x6d3d1220,
+-	0x19754: 0x6d417e20, 0x19755: 0x6d3dc620, 0x19756: 0x6c168220, 0x19757: 0x6c01de20,
+-	0x19758: 0x6c377220, 0x19759: 0x6d244620, 0x1975a: 0x6c839c20, 0x1975b: 0x6c408220,
+-	0x1975c: 0x6d2c6420, 0x1975d: 0x6c5d0a20, 0x1975e: 0x6c218e20, 0x1975f: 0x6cd9fe20,
+-	0x19760: 0x6c089a20, 0x19761: 0x6c0ab420, 0x19762: 0x6d2c6620,
+-	0x19764: 0x6c519e20, 0x19765: 0x6c873a20, 0x19767: 0x6c4f3220,
+-	0x19768: 0x6d292220, 0x19769: 0x6c474a20, 0x1976a: 0x6c1a5e20, 0x1976b: 0x6c90dc20,
+-	0x1976c: 0x6ca19e20, 0x1976d: 0x6c9daa20, 0x1976e: 0x6c975020, 0x1976f: 0x6c030420,
+-	0x19770: 0x6d30c020, 0x19771: 0x6d3a3a20, 0x19772: 0x6c5a3820, 0x19773: 0x6c38f620,
+-	0x19774: 0x6c2b0220, 0x19775: 0x6ce7a420, 0x19777: 0x6c320220,
+-	0x19778: 0x6cf33620, 0x19779: 0x6cf13020, 0x1977a: 0x6c62f620, 0x1977b: 0x6c1ca020,
+-	0x1977c: 0x6c8c1220, 0x1977d: 0x6c0c6420, 0x1977e: 0x6c901e20, 0x1977f: 0x6c664a20,
+-	// Block 0x65e, offset 0x19780
+-	0x19780: 0x6ca8da20, 0x19781: 0x6c959e20, 0x19782: 0x6cd03420,
+-	0x19784: 0x6c487a20, 0x19785: 0x6ca8a820, 0x19786: 0x6d178a20, 0x19787: 0x6c7a4820,
+-	0x19788: 0x6cece220, 0x19789: 0x6cebee20, 0x1978a: 0x6cb87620, 0x1978b: 0x6c0f5620,
+-	0x1978c: 0x6c779220, 0x1978d: 0x6c8d5020, 0x1978e: 0x6c423020, 0x1978f: 0x6c487820,
+-	0x19790: 0x6c4d2c20, 0x19791: 0x6c7bb020, 0x19792: 0x6c527420, 0x19793: 0x6c7c4620,
+-	0x19794: 0x6d2b0a20, 0x19795: 0x6ce64e20, 0x19796: 0x6c80ee20, 0x19797: 0x6c0a8020,
+-	0x19798: 0x6c595a20, 0x19799: 0x6cb3aa20, 0x1979a: 0x6d11de20, 0x1979b: 0x6cedaa20,
+-	0x1979c: 0x6ce43c20, 0x1979d: 0x6cdc1620, 0x1979e: 0x6c7ad020, 0x1979f: 0x6c337e20,
+-	0x197a0: 0x6c02b620, 0x197a1: 0x6c671620, 0x197a2: 0x6ca09c20, 0x197a3: 0x6c7d4220,
+-	0x197a4: 0x6c7b4c20, 0x197a5: 0x6c01e620, 0x197a6: 0x6c96ea20, 0x197a7: 0x6cbeaa20,
+-	0x197a8: 0x6cbb8820, 0x197aa: 0x6c77b820, 0x197ab: 0x6c508220,
+-	0x197ac: 0x6c34c820, 0x197ad: 0x6cfaa820, 0x197ae: 0x6ca37c20, 0x197af: 0x6cdd3420,
+-	0x197b0: 0x6c6bf820, 0x197b1: 0x6caf8220, 0x197b2: 0x6cabcc20, 0x197b3: 0x6cd93020,
+-	0x197b4: 0x6c16bc20, 0x197b5: 0x6ca86c20, 0x197b6: 0x6c977620, 0x197b7: 0x6cd93e20,
+-	0x197b8: 0x6c22e420, 0x197b9: 0x6cfae420, 0x197ba: 0x6c7e2420,
+-	0x197bc: 0x6c2b9e20, 0x197bd: 0x6cb3e420, 0x197be: 0x6ce5ac20, 0x197bf: 0x6d40f420,
+-	// Block 0x65f, offset 0x197c0
+-	0x197c0: 0x6cf2c820, 0x197c1: 0x6c3ae420, 0x197c2: 0x6c115020, 0x197c3: 0x6caee220,
+-	0x197c4: 0x6cc9d620, 0x197c6: 0x6cc76e20, 0x197c7: 0x6cb68620,
+-	0x197c8: 0x6c25fc20, 0x197c9: 0x6cac8e20, 0x197ca: 0x6c0fc020, 0x197cb: 0x6c979c20,
+-	0x197cc: 0x6d401420, 0x197cd: 0x6c22f220, 0x197ce: 0x6c7d4420, 0x197cf: 0x6c62f820,
+-	0x197d0: 0x6c801420, 0x197d2: 0x6c9bc220, 0x197d3: 0x6c9df820,
+-	0x197d4: 0x6cac9620, 0x197d5: 0x6c91aa20, 0x197d6: 0x6d416020,
+-	0x197d8: 0x6c8ee220, 0x197d9: 0x6d160020, 0x197da: 0x6cf1a820, 0x197db: 0x6c866c20,
+-	0x197dc: 0x6c868e20, 0x197dd: 0x6d2bb820, 0x197de: 0x6d3a9220, 0x197df: 0x6c5cfc20,
+-	0x197e0: 0x6cd03c20, 0x197e1: 0x6c1c6620, 0x197e2: 0x6d043c20, 0x197e3: 0x6cee3a20,
+-	0x197e4: 0x6c302020, 0x197e5: 0x6c5e2220, 0x197e6: 0x6cb07a20, 0x197e7: 0x6c551420,
+-	0x197e8: 0x6c9ab420, 0x197e9: 0x6c17f420, 0x197ea: 0x6c9ab820, 0x197eb: 0x6c175820,
+-	0x197ec: 0x6c719620, 0x197ed: 0x6caa3420, 0x197ef: 0x6d197620,
+-	0x197f0: 0x6cc7f020, 0x197f1: 0x6c8e0420, 0x197f2: 0x6d0bba20,
+-	0x197f4: 0x6cb7bc20, 0x197f5: 0x6d3e7620, 0x197f7: 0x6c058c20,
+-	0x197f8: 0x6c45aa20, 0x197f9: 0x6d2af620, 0x197fa: 0x6c6bfe20, 0x197fb: 0x6d219a20,
+-	0x197fc: 0x6cbd9820, 0x197fd: 0x6c075820, 0x197fe: 0x6c035820, 0x197ff: 0x6ceb5020,
+-	// Block 0x660, offset 0x19800
+-	0x19800: 0x6d0f6c20, 0x19801: 0x6cbbfc20, 0x19802: 0x6d1ff220, 0x19803: 0x6d36fa20,
+-	0x19804: 0x6c6c0a20, 0x19805: 0x6ca16a20, 0x19806: 0x6cd12420, 0x19807: 0x6ccdb820,
+-	0x19808: 0x6cb65620, 0x19809: 0x6ccdba20, 0x1980a: 0x6c9d0420, 0x1980b: 0x6c460220,
+-	0x1980c: 0x6d157c20, 0x1980d: 0x6c453e20, 0x1980e: 0x6c454020, 0x1980f: 0x6ce82020,
+-	0x19810: 0x6c3dac20, 0x19811: 0x6d092220, 0x19812: 0x6d137e20, 0x19813: 0x6ce69a20,
+-	0x19814: 0x6ce5ae20, 0x19815: 0x6ca1f620, 0x19816: 0x6c8ec620, 0x19817: 0x6c117e20,
+-	0x19818: 0x6c848020, 0x19819: 0x6cd51820, 0x1981a: 0x6c932420, 0x1981b: 0x6c5e3a20,
+-	0x1981c: 0x6c263c20, 0x1981d: 0x6cac1220, 0x1981e: 0x6c8ed420, 0x1981f: 0x6c72b820,
+-	0x19820: 0x6d2e9220, 0x19821: 0x6c718220, 0x19822: 0x6d330a20, 0x19823: 0x6d40f820,
+-	0x19824: 0x6cfd3820, 0x19825: 0x6d375020,
+-	0x19828: 0x6c7eb020, 0x1982b: 0x6c7ebe20,
+-	0x1982c: 0x6d060a20, 0x1982d: 0x6c454220, 0x1982e: 0x6c35a220, 0x1982f: 0x6ca21e20,
+-	0x19830: 0x6d384a20, 0x19831: 0x6ce3aa20, 0x19832: 0x6d25ce20, 0x19833: 0x6d2dc020,
+-	0x19834: 0x6c454420, 0x19835: 0x6cf24420, 0x19836: 0x6c80f420, 0x19837: 0x6d21f620,
+-	0x19838: 0x6cda0820, 0x19839: 0x6d2ca020, 0x1983a: 0x6c4d3620, 0x1983b: 0x6c576e20,
+-	0x1983c: 0x6d2e3e20, 0x1983e: 0x6c90de20, 0x1983f: 0x6c165020,
+-	// Block 0x661, offset 0x19840
+-	0x19840: 0x6d376c20, 0x19841: 0x6cf12820, 0x19842: 0x6d083c20, 0x19843: 0x6d2a6420,
+-	0x19844: 0x6c9f8620, 0x19845: 0x6c4aac20, 0x19846: 0x6cda7020,
+-	0x19849: 0x6cd85420, 0x1984a: 0x6c352820, 0x1984b: 0x6c134220,
+-	0x1984c: 0x6c7b7a20, 0x1984d: 0x6ce2dc20, 0x1984e: 0x6ca57c20, 0x1984f: 0x6c819620,
+-	0x19850: 0x6c920820, 0x19851: 0x6d159e20, 0x19852: 0x6d029220, 0x19853: 0x6d0e2a20,
+-	0x19854: 0x6cbe9820, 0x19855: 0x6cb42420, 0x19856: 0x6c1e1220, 0x19857: 0x6cfbe020,
+-	0x19858: 0x6c497020, 0x19859: 0x6c6b8a20, 0x1985a: 0x6c7f8220, 0x1985b: 0x6c9bca20,
+-	0x1985c: 0x6d13ac20, 0x1985e: 0x6c869420, 0x1985f: 0x6d1b8420,
+-	0x19860: 0x6c212620, 0x19861: 0x6cbfde20, 0x19862: 0x6ce2d220, 0x19863: 0x6d21f820,
+-	0x19866: 0x6c278420, 0x19867: 0x6c327420,
+-	0x19868: 0x6c537e20, 0x1986a: 0x6cf8c220,
+-	0x1986c: 0x6cb64820, 0x1986e: 0x6d25a620, 0x1986f: 0x6c609e20,
+-	0x19870: 0x6d285020, 0x19871: 0x6c39dc20, 0x19872: 0x6c45ac20, 0x19873: 0x6c4f8820,
+-	0x19874: 0x6d326620, 0x19875: 0x6cc3f620,
+-	0x19878: 0x6c6c0220, 0x19879: 0x6cb02020, 0x1987a: 0x6c423220, 0x1987b: 0x6d082820,
+-	0x1987c: 0x6cd11420, 0x1987d: 0x6cd28c20, 0x1987e: 0x6cbc2a20, 0x1987f: 0x6c227020,
+-	// Block 0x662, offset 0x19880
+-	0x19880: 0x6c2eee20, 0x19881: 0x6c0f7220, 0x19882: 0x6c2de620, 0x19883: 0x6ced5020,
+-	0x19884: 0x6c227220, 0x19885: 0x6d355420, 0x19886: 0x6c041220, 0x19887: 0x6cf47e20,
+-	0x19888: 0x6c061820, 0x19889: 0x6c28be20, 0x1988a: 0x6c039420, 0x1988b: 0x6ce79620,
+-	0x1988d: 0x6c45bc20, 0x1988e: 0x6c702e20, 0x1988f: 0x6c4b8620,
+-	0x19890: 0x6c22e820, 0x19891: 0x6d1ff420, 0x19892: 0x6d25ba20, 0x19893: 0x6c81be20,
+-	0x19894: 0x6c716e20, 0x19895: 0x6c3f1820, 0x19896: 0x6ca88e20, 0x19897: 0x6c358c20,
+-	0x19898: 0x6c358e20, 0x19899: 0x6d040e20, 0x1989a: 0x6c771620, 0x1989b: 0x6d0ee220,
+-	0x1989c: 0x6ce90220, 0x1989d: 0x6cb3f820, 0x1989e: 0x6c083820, 0x1989f: 0x6ca02620,
+-	0x198a0: 0x6cd73620, 0x198a1: 0x6d0ef220, 0x198a2: 0x6cb68c20, 0x198a3: 0x6d25ca20,
+-	0x198a4: 0x6c0cca20, 0x198a6: 0x6d07f220, 0x198a7: 0x6c544220,
+-	0x198a8: 0x6c5a3020, 0x198a9: 0x6d10c220, 0x198aa: 0x6c73a220, 0x198ab: 0x6c7cb220,
+-	0x198ac: 0x6c36de20, 0x198ad: 0x6c60f620, 0x198ae: 0x6ca19220, 0x198af: 0x6c1d2e20,
+-	0x198b0: 0x6c062220, 0x198b1: 0x6cf54e20, 0x198b2: 0x6d327a20, 0x198b3: 0x6d076620,
+-	0x198b4: 0x6cdee820, 0x198b5: 0x6c1c9620, 0x198b6: 0x6cf74a20, 0x198b7: 0x6c23d220,
+-	0x198b8: 0x6c968620, 0x198b9: 0x6c7a1020, 0x198ba: 0x6d0f0820, 0x198bb: 0x6c11c420,
+-	0x198bd: 0x6c520e20, 0x198be: 0x6c2ac620, 0x198bf: 0x6cc49e20,
+-	// Block 0x663, offset 0x198c0
+-	0x198c0: 0x6ce7a820, 0x198c1: 0x6d248c20, 0x198c2: 0x6cfe7020, 0x198c3: 0x6ca4d820,
+-	0x198c4: 0x6cd76420, 0x198c5: 0x6c3bb220, 0x198c6: 0x6cb47820, 0x198c7: 0x6c8dba20,
+-	0x198c8: 0x6c02ba20, 0x198c9: 0x6c58d020, 0x198ca: 0x6d15a020, 0x198cb: 0x6c58d220,
+-	0x198cc: 0x6c9bc620, 0x198cd: 0x6d1c4e20, 0x198ce: 0x6c831820, 0x198cf: 0x6d0f2e20,
+-	0x198d0: 0x6c062820, 0x198d1: 0x6c2f2c20, 0x198d2: 0x6c8e0620, 0x198d3: 0x6cd1f820,
+-	0x198d4: 0x6c689020, 0x198d5: 0x6c8b4420, 0x198d6: 0x6c6dee20, 0x198d7: 0x6c718c20,
+-	0x198d8: 0x6ce30a20, 0x198d9: 0x6cb0e620, 0x198da: 0x6c42a620, 0x198db: 0x6cff3420,
+-	0x198dc: 0x6cec5e20, 0x198dd: 0x6c1fd420, 0x198de: 0x6c2bc420, 0x198df: 0x6c588e20,
+-	0x198e0: 0x6d11d220, 0x198e1: 0x6c866e20, 0x198e2: 0x6c9c7020, 0x198e3: 0x6c550a20,
+-	0x198e4: 0x6cd11620, 0x198e5: 0x6c638a20, 0x198e6: 0x6d1aa620, 0x198e7: 0x6ceec620,
+-	0x198e9: 0x6cb18e20, 0x198ea: 0x6c934420, 0x198eb: 0x6c8dbc20,
+-	0x198ec: 0x6d184420, 0x198ed: 0x6c111620, 0x198ee: 0x6ccd9820, 0x198ef: 0x6c54fe20,
+-	0x198f0: 0x6cd53620, 0x198f1: 0x6cead420, 0x198f2: 0x6ca16e20, 0x198f3: 0x6c575820,
+-	0x198f4: 0x6ce61a20, 0x198f5: 0x6c0dfe20, 0x198f6: 0x6caee620, 0x198f7: 0x6c5d0820,
+-	0x198f8: 0x6c3dae20, 0x198f9: 0x6c4cdc20, 0x198fa: 0x6c10d020, 0x198fb: 0x6c849820,
+-	0x198fc: 0x6c163e20, 0x198fd: 0x6cb03420, 0x198fe: 0x6c260020, 0x198ff: 0x6c9bb220,
+-	// Block 0x664, offset 0x19900
+-	0x19900: 0x6cddc020, 0x19901: 0x6cbb6020, 0x19902: 0x6d34c420, 0x19903: 0x6c7c2420,
+-	0x19904: 0x6c08a820, 0x19905: 0x6c029220, 0x19906: 0x6c9bc820, 0x19907: 0x6cfd0620,
+-	0x19908: 0x6c7ab420, 0x19909: 0x6ce7fc20, 0x1990a: 0x6ce93c20, 0x1990b: 0x6cf04a20,
+-	0x1990c: 0x6cfaf820, 0x1990e: 0x6ce94220, 0x1990f: 0x6c81cc20,
+-	0x19910: 0x6c162220, 0x19911: 0x6ca6c420, 0x19912: 0x6ca6d020, 0x19913: 0x6c845220,
+-	0x19914: 0x6c304620, 0x19915: 0x6c72c620, 0x19916: 0x6cba8620, 0x19917: 0x6c0fc620,
+-	0x19918: 0x6cccac20, 0x19919: 0x6d2c0e20, 0x1991a: 0x6ce25e20, 0x1991b: 0x6cba8c20,
+-	0x1991c: 0x6ca9ee20, 0x1991d: 0x6d181620, 0x1991e: 0x6c6e9e20, 0x1991f: 0x6c41e820,
+-	0x19920: 0x6c2ba020, 0x19921: 0x6c65de20, 0x19922: 0x6c9ab020, 0x19923: 0x6c26c420,
+-	0x19924: 0x6c660620, 0x19925: 0x6d244a20, 0x19926: 0x6d024c20, 0x19927: 0x6d294820,
+-	0x19928: 0x6c988020, 0x19929: 0x6c849a20, 0x1992a: 0x6c4c0a20, 0x1992b: 0x6d09ca20,
+-	0x1992c: 0x6cdedc20, 0x1992d: 0x6d310e20, 0x1992e: 0x6d107620, 0x1992f: 0x6ce98620,
+-	0x19930: 0x6cce2e20, 0x19931: 0x6cf93e20, 0x19932: 0x6cbbcc20, 0x19933: 0x6cf13620,
+-	0x19934: 0x6d1d6220, 0x19935: 0x6c1fa820, 0x19936: 0x6cc1ec20, 0x19937: 0x6cebfa20,
+-	0x19939: 0x6d343220, 0x1993a: 0x6ce6e420, 0x1993b: 0x6c47f820,
+-	0x1993c: 0x6cce3020, 0x1993d: 0x6c10ec20, 0x1993e: 0x6c3f1a20, 0x1993f: 0x6ce61e20,
+-	// Block 0x665, offset 0x19940
+-	0x19940: 0x6cded220, 0x19941: 0x6cdeea20, 0x19942: 0x6d3da620, 0x19943: 0x6c4e4020,
+-	0x19944: 0x6cb2da20, 0x19945: 0x6c519a20, 0x19946: 0x6d3c7420, 0x19947: 0x6d396e20,
+-	0x19948: 0x6c0fd220, 0x19949: 0x6c8eec20, 0x1994a: 0x6caa8c20, 0x1994b: 0x6cf71220,
+-	0x1994c: 0x6cada220, 0x1994d: 0x6c2cb420, 0x1994e: 0x6c50ac20, 0x1994f: 0x6ce44620,
+-	0x19950: 0x6cec8020, 0x19951: 0x6ce44a20, 0x19952: 0x6cb66a20, 0x19953: 0x6c62a820,
+-	0x19954: 0x6c1b6620, 0x19955: 0x6c03cc20, 0x19956: 0x6c6d7020, 0x19957: 0x6c78e820,
+-	0x19958: 0x6c873e20, 0x19959: 0x6c72c820, 0x1995a: 0x6cc25620, 0x1995b: 0x6c7ec820,
+-	0x1995c: 0x6c47f020, 0x1995d: 0x6cb88620, 0x1995e: 0x6cb6b420, 0x1995f: 0x6cfd5020,
+-	0x19960: 0x6c664220, 0x19961: 0x6cd29a20, 0x19962: 0x6c655420, 0x19963: 0x6c005e20,
+-	0x19964: 0x6c577220, 0x19965: 0x6d2c1420, 0x19966: 0x6d2b2e20, 0x19967: 0x6d11e820,
+-	0x19968: 0x6d2dd820, 0x19969: 0x6c630420, 0x1996a: 0x6c145c20, 0x1996b: 0x6d0f3420,
+-	0x1996c: 0x6c654c20, 0x1996e: 0x6d0e1020,
+-	0x19970: 0x6c68a820, 0x19971: 0x6ce7a220, 0x19972: 0x6ca41820, 0x19973: 0x6d271a20,
+-	0x19975: 0x6c1b6e20,
+-	// Block 0x666, offset 0x19980
+-	0x19980: 0x6d13b620, 0x19981: 0x6c2f4020, 0x19982: 0x6c779820, 0x19983: 0x6cb4c620,
+-	0x19984: 0x6cce4620, 0x19985: 0x6cfa2420, 0x19986: 0x6c4e4c20, 0x19987: 0x6ced6820,
+-	0x19988: 0x6d2f1820, 0x19989: 0x6cc9f220, 0x1998a: 0x6cce4820, 0x1998b: 0x6cfa2620,
+-	0x1998c: 0x6c5e6220, 0x1998d: 0x6c105620, 0x1998e: 0x6d221020, 0x1998f: 0x6c9dfa20,
+-	0x19990: 0x6c411e20, 0x19991: 0x6c1e1820, 0x19992: 0x6c1e1a20, 0x19993: 0x6d3b6c20,
+-	0x19994: 0x6cbc8e20, 0x19995: 0x6caf2220, 0x19996: 0x6cd2ea20, 0x19997: 0x6cd2e820,
+-	0x19998: 0x6cbf9420, 0x19999: 0x6c0dba20, 0x1999a: 0x6d12b820, 0x1999b: 0x6c237e20,
+-	0x1999c: 0x6c2fd620, 0x1999d: 0x6cd7b820, 0x1999e: 0x6c19b020, 0x1999f: 0x6c2fca20,
+-	0x199a0: 0x6cbf9620, 0x199a1: 0x6c898020, 0x199a2: 0x6c2fcc20, 0x199a3: 0x6d1f9a20,
+-	0x199a4: 0x6c898220, 0x199a5: 0x6d0c5420, 0x199a6: 0x6c0e0820, 0x199a7: 0x6cca9c20,
+-	0x199a8: 0x6c4bb620, 0x199a9: 0x6c6f3620, 0x199aa: 0x6c447a20, 0x199ab: 0x6d0ac420,
+-	0x199ac: 0x6cbb0220, 0x199ad: 0x6d378220, 0x199ae: 0x6c611020, 0x199af: 0x6c6ba220,
+-	0x199b0: 0x6c3c0c20, 0x199b1: 0x6c497420, 0x199b2: 0x6c202c20, 0x199b3: 0x6c159620,
+-	0x199b4: 0x6c8ba220, 0x199b5: 0x6d3d3620, 0x199b6: 0x6d3a5220, 0x199b7: 0x6c4d0420,
+-	0x199b8: 0x6cecb420, 0x199b9: 0x6c27b220, 0x199ba: 0x6cf06a20, 0x199bb: 0x6d3a5420,
+-	0x199bc: 0x6c6e0020, 0x199bd: 0x6c857420, 0x199be: 0x6c71aa20, 0x199bf: 0x6cb1dc20,
+-	// Block 0x667, offset 0x199c0
+-	0x199c0: 0x6c3dc220, 0x199c1: 0x6d144620, 0x199c2: 0x6d163420, 0x199c3: 0x6ca38c20,
+-	0x199c4: 0x6cf55020, 0x199c5: 0x6c6f9c20, 0x199c6: 0x6c6f9e20, 0x199c7: 0x6cea9020,
+-	0x199c8: 0x6c99c220, 0x199c9: 0x6d163820, 0x199ca: 0x6d13b820, 0x199cb: 0x6d337c20,
+-	0x199cc: 0x6cf33c20, 0x199cd: 0x6d2ca620, 0x199ce: 0x6c56f820, 0x199cf: 0x6c37f420,
+-	0x199d0: 0x6c820820, 0x199d1: 0x6d1a1e20, 0x199d2: 0x6cb24620, 0x199d3: 0x6caccc20,
+-	0x199d4: 0x6cbbce20, 0x199d5: 0x6c560e20, 0x199d6: 0x6c48c220, 0x199d7: 0x6c19c420,
+-	0x199d8: 0x6c19d420, 0x199d9: 0x6d15aa20, 0x199da: 0x6d1abc20, 0x199db: 0x6d0bd820,
+-	0x199dc: 0x6c9ebc20, 0x199dd: 0x6c6f9a20, 0x199de: 0x6cb6c020, 0x199df: 0x6d129c20,
+-	0x199e0: 0x6cf76820, 0x199e1: 0x6cfd5e20, 0x199e2: 0x6c412020, 0x199e3: 0x6c6fa020,
+-	0x199e4: 0x6cfa2820, 0x199e5: 0x6c563020, 0x199e6: 0x6cd49620, 0x199e7: 0x6c315a20,
+-	0x199e8: 0x6cd2aa20, 0x199e9: 0x6c5e7020, 0x199ea: 0x6ca45420, 0x199eb: 0x6c631a20,
+-	0x199ec: 0x6c71ec20, 0x199ed: 0x6cd23220, 0x199ee: 0x6c992220, 0x199ef: 0x6c549020,
+-	0x199f0: 0x6c971020, 0x199f1: 0x6c949020, 0x199f2: 0x6d3dfe20, 0x199f3: 0x6cc7f820,
+-	0x199f4: 0x6d08f620, 0x199f5: 0x6d0d4220, 0x199f6: 0x6c3f3a20, 0x199f7: 0x6ccbcc20,
+-	0x199f8: 0x6ca2f020, 0x199f9: 0x6c418220, 0x199fa: 0x6cdd5020, 0x199fb: 0x6d20d020,
+-	0x199fc: 0x6c258c20, 0x199fd: 0x6d30d420, 0x199fe: 0x6c419020, 0x199ff: 0x6d35d220,
+-	// Block 0x668, offset 0x19a00
+-	0x19a00: 0x6c4a5020, 0x19a01: 0x6c419820, 0x19a02: 0x6c949a20, 0x19a03: 0x6c8c2220,
+-	0x19a04: 0x6d17d820, 0x19a05: 0x6c73be20, 0x19a06: 0x6c823620, 0x19a07: 0x6c96ec20,
+-	0x19a08: 0x6d221220, 0x19a09: 0x6d328020, 0x19a0a: 0x6cd30620, 0x19a0b: 0x6cd31020,
+-	0x19a0c: 0x6c37b420, 0x19a0d: 0x6c1f0020, 0x19a0e: 0x6d20a220, 0x19a0f: 0x6c7c3020,
+-	0x19a10: 0x6d20a020, 0x19a11: 0x6d277420, 0x19a12: 0x6c563220, 0x19a13: 0x6cb56020,
+-	0x19a14: 0x6cf41420, 0x19a15: 0x6c6dfe20, 0x19a16: 0x6cd87220, 0x19a17: 0x6cdc1c20,
+-	0x19a18: 0x6c44a620, 0x19a19: 0x6c44a820, 0x19a1a: 0x6d0b6c20, 0x19a1b: 0x6d003620,
+-	0x19a1c: 0x6d0b7420, 0x19a1d: 0x6cb57820, 0x19a1e: 0x6d0b7c20, 0x19a1f: 0x6c5fd820,
+-	0x19a20: 0x6ce7e220, 0x19a21: 0x6cedd420, 0x19a22: 0x6c777420, 0x19a23: 0x6cde2a20,
+-	0x19a24: 0x6c682220, 0x19a25: 0x6c4d4e20, 0x19a26: 0x6d165220, 0x19a27: 0x6c158c20,
+-	0x19a28: 0x6c524420, 0x19a29: 0x6ca22220, 0x19a2a: 0x6d13b220, 0x19a2b: 0x6cfdd820,
+-	0x19a2c: 0x6c6d8e20, 0x19a2d: 0x6ce66220, 0x19a2e: 0x6c89aa20, 0x19a2f: 0x6cfdda20,
+-	0x19a30: 0x6c6d9620, 0x19a31: 0x6d12d420, 0x19a32: 0x6cbd1c20, 0x19a33: 0x6c0ece20,
+-	0x19a34: 0x6d204420, 0x19a35: 0x6d01a020, 0x19a36: 0x6c283820, 0x19a37: 0x6c880820,
+-	0x19a38: 0x6c34b420, 0x19a39: 0x6c9ae020, 0x19a3a: 0x6cc55a20, 0x19a3b: 0x6cc55c20,
+-	0x19a3c: 0x6c5fb620, 0x19a3d: 0x6c630a20, 0x19a3e: 0x6cedd620, 0x19a3f: 0x6d163a20,
+-	// Block 0x669, offset 0x19a40
+-	0x19a40: 0x6cd03620, 0x19a41: 0x6cc55e20, 0x19a42: 0x6c820220, 0x19a43: 0x6c2f4220,
+-	0x19a44: 0x6d2b3220, 0x19a45: 0x6c6c7e20, 0x19a46: 0x6cb3fa20, 0x19a47: 0x6c1d8c20,
+-	0x19a48: 0x6c030c20, 0x19a49: 0x6d2ef620, 0x19a4a: 0x6c6c1c20, 0x19a4b: 0x6c6ba420,
+-	0x19a4c: 0x6c0da020, 0x19a4d: 0x6cc61220, 0x19a4e: 0x6c237c20, 0x19a4f: 0x6c3d0820,
+-	0x19a50: 0x6cca1220, 0x19a51: 0x6c94d420, 0x19a52: 0x6c0da220, 0x19a53: 0x6c121c20,
+-	0x19a54: 0x6d3ed620, 0x19a55: 0x6cd2ee20, 0x19a56: 0x6cddda20, 0x19a57: 0x6d2f1a20,
+-	0x19a58: 0x6c3fa420, 0x19a59: 0x6cfd5620, 0x19a5a: 0x6cfa6a20, 0x19a5b: 0x6cea9220,
+-	0x19a5c: 0x6c52e820, 0x19a5d: 0x6ce70a20, 0x19a5e: 0x6cc5a620, 0x19a5f: 0x6cb88e20,
+-	0x19a60: 0x6c41c220, 0x19a61: 0x6c436220, 0x19a62: 0x6c0ea620, 0x19a63: 0x6c272220,
+-	0x19a64: 0x6c8e1820, 0x19a65: 0x6d15ae20, 0x19a66: 0x6c17b020, 0x19a67: 0x6c169020,
+-	0x19a68: 0x6cc93e20, 0x19a69: 0x6cce5a20, 0x19a6a: 0x6d144a20, 0x19a6b: 0x6ca25e20,
+-	0x19a6c: 0x6c9b0220, 0x19a6d: 0x6cc5a820, 0x19a6e: 0x6c63fe20, 0x19a6f: 0x6c17b220,
+-	0x19a70: 0x6d0ffc20, 0x19a71: 0x6cb96820, 0x19a72: 0x6d380e20, 0x19a73: 0x6cb04620,
+-	0x19a74: 0x6cf2cc20, 0x19a75: 0x6cf41820, 0x19a76: 0x6c665020, 0x19a77: 0x6c643620,
+-	0x19a78: 0x6d117e20, 0x19a79: 0x6c3c1220, 0x19a7a: 0x6c121e20, 0x19a7b: 0x6cc5ac20,
+-	0x19a7c: 0x6ceddc20, 0x19a7d: 0x6c3bc420, 0x19a7e: 0x6c2b0c20, 0x19a7f: 0x6c39b620,
+-	// Block 0x66a, offset 0x19a80
+-	0x19a80: 0x6d378420, 0x19a81: 0x6cb6c820, 0x19a82: 0x6cadf820, 0x19a83: 0x6d20a620,
+-	0x19a84: 0x6c2e0620, 0x19a85: 0x6c33d220, 0x19a86: 0x6cf49c20, 0x19a87: 0x6d165620,
+-	0x19a88: 0x6d030a20, 0x19a89: 0x6c777620, 0x19a8a: 0x6d13bc20, 0x19a8b: 0x6c5fbc20,
+-	0x19a8c: 0x6c008620, 0x19a8d: 0x6cf55420, 0x19a8e: 0x6c617220, 0x19a8f: 0x6c3dca20,
+-	0x19a90: 0x6c37f620, 0x19a91: 0x6d04b220, 0x19a92: 0x6c6ccc20, 0x19a93: 0x6caf2420,
+-	0x19a94: 0x6c281820, 0x19a95: 0x6c3d3420, 0x19a96: 0x6ce16c20, 0x19a97: 0x6d381020,
+-	0x19a98: 0x6d1e8820, 0x19a99: 0x6c5d8620, 0x19a9a: 0x6c5b8a20, 0x19a9b: 0x6d221420,
+-	0x19a9c: 0x6c251620, 0x19a9d: 0x6c1fee20, 0x19a9e: 0x6cca1420, 0x19a9f: 0x6cef8220,
+-	0x19aa0: 0x6c1ff020, 0x19aa1: 0x6c17cc20, 0x19aa2: 0x6d0b0a20, 0x19aa3: 0x6cfc7020,
+-	0x19aa4: 0x6ccdfe20, 0x19aa5: 0x6c165e20, 0x19aa6: 0x6c94d620, 0x19aa7: 0x6c122020,
+-	0x19aa8: 0x6d0a6420, 0x19aa9: 0x6d031220, 0x19aaa: 0x6cef8420, 0x19aab: 0x6d3a9a20,
+-	0x19aac: 0x6d2b5820, 0x19aad: 0x6cfb2220, 0x19aae: 0x6caa4820, 0x19aaf: 0x6c0eaa20,
+-	0x19ab0: 0x6c46e620, 0x19ab1: 0x6ca62020, 0x19ab2: 0x6ca67a20, 0x19ab3: 0x6d015420,
+-	0x19ab4: 0x6c04de20, 0x19ab5: 0x6d066a20, 0x19ab6: 0x6c8e2c20, 0x19ab7: 0x6d38f820,
+-	0x19ab8: 0x6ccfa020, 0x19ab9: 0x6cc0ca20, 0x19aba: 0x6c22ac20, 0x19abb: 0x6c07ce20,
+-	0x19abc: 0x6cd2f620, 0x19abd: 0x6c631e20, 0x19abe: 0x6caf2620, 0x19abf: 0x6d167220,
+-	// Block 0x66b, offset 0x19ac0
+-	0x19ac0: 0x6cd87c20, 0x19ac1: 0x6d15b620, 0x19ac2: 0x6d328220, 0x19ac3: 0x6c2d3420,
+-	0x19ac4: 0x6c4d9020, 0x19ac5: 0x6c972220, 0x19ac6: 0x6c286220, 0x19ac7: 0x6d3a9c20,
+-	0x19ac8: 0x6c105a20, 0x19ac9: 0x6cc0cc20, 0x19aca: 0x6c08b420, 0x19acb: 0x6d2f5020,
+-	0x19acc: 0x6c228c20, 0x19acd: 0x6cf06e20, 0x19ace: 0x6c2b0e20, 0x19acf: 0x6d3a9e20,
+-	0x19ad0: 0x6d426220, 0x19ad1: 0x6d200e20, 0x19ad2: 0x6d0ffe20, 0x19ad3: 0x6ce3ba20,
+-	0x19ad4: 0x6d2e4820, 0x19ad5: 0x6c50b820, 0x19ad6: 0x6c091020, 0x19ad7: 0x6ceae420,
+-	0x19ad8: 0x6ccf0820, 0x19ad9: 0x6d20ac20, 0x19ada: 0x6d167420, 0x19adb: 0x6c3dd020,
+-	0x19adc: 0x6d427420, 0x19add: 0x6c463420, 0x19ade: 0x6ca95020, 0x19adf: 0x6ce70e20,
+-	0x19ae0: 0x6ca62220, 0x19ae1: 0x6cfa7620, 0x19ae2: 0x6cc17220, 0x19ae3: 0x6d1d7c20,
+-	0x19ae4: 0x6cec0e20, 0x19ae5: 0x6cb8a220, 0x19ae6: 0x6cd40a20, 0x19ae7: 0x6c761a20,
+-	0x19ae8: 0x6c068820, 0x19ae9: 0x6cae0420, 0x19aea: 0x6c5b1a20, 0x19aeb: 0x6c51b620,
+-	0x19aec: 0x6c819c20, 0x19aed: 0x6cfdac20, 0x19aee: 0x6c43c420, 0x19aef: 0x6d0f8420,
+-	0x19af0: 0x6c041820, 0x19af1: 0x6c382c20, 0x19af2: 0x6ca02a20, 0x19af3: 0x6c632420,
+-	0x19af4: 0x6c37bc20, 0x19af5: 0x6c0e0a20, 0x19af6: 0x6c5fda20, 0x19af7: 0x6c523820,
+-	0x19af8: 0x6c5d6c20, 0x19af9: 0x6c4ac420, 0x19afa: 0x6cc2b620, 0x19afb: 0x6ce54820,
+-	0x19afc: 0x6c68c820, 0x19afd: 0x6c22b020, 0x19afe: 0x6d16a220, 0x19aff: 0x6cd2b220,
+-	// Block 0x66c, offset 0x19b00
+-	0x19b00: 0x6d03c620, 0x19b01: 0x6ccfa620, 0x19b02: 0x6ceaa620, 0x19b03: 0x6c76c020,
+-	0x19b04: 0x6d343a20, 0x19b05: 0x6c40dc20, 0x19b06: 0x6c7ee220, 0x19b07: 0x6d146c20,
+-	0x19b08: 0x6c1b7a20, 0x19b09: 0x6c7ad220, 0x19b0a: 0x6c49d420, 0x19b0b: 0x6c858620,
+-	0x19b0c: 0x6d19a820, 0x19b0d: 0x6cd31220, 0x19b0e: 0x6c9cda20, 0x19b0f: 0x6d398220,
+-	0x19b10: 0x6d067a20, 0x19b11: 0x6d201420, 0x19b12: 0x6c011820, 0x19b13: 0x6c921620,
+-	0x19b14: 0x6ca1c020, 0x19b15: 0x6c373420, 0x19b16: 0x6c94de20, 0x19b17: 0x6c305220,
+-	0x19b18: 0x6c143020, 0x19b19: 0x6c1a9420, 0x19b1a: 0x6d0a6a20, 0x19b1b: 0x6c456220,
+-	0x19b1c: 0x6d385620, 0x19b1d: 0x6d13ca20, 0x19b1e: 0x6cc78c20, 0x19b1f: 0x6c25a220,
+-	0x19b20: 0x6cf98820, 0x19b21: 0x6cd88620, 0x19b22: 0x6d292c20, 0x19b23: 0x6c937820,
+-	0x19b24: 0x6cdefc20, 0x19b25: 0x6c68ca20, 0x19b26: 0x6d312220, 0x19b27: 0x6c12ca20,
+-	0x19b28: 0x6cbbd020, 0x19b29: 0x6c7b1220, 0x19b2a: 0x6c147020, 0x19b2b: 0x6ca95220,
+-	0x19b2c: 0x6ca9b020, 0x19b2d: 0x6c6c8420, 0x19b2e: 0x6cf43220, 0x19b2f: 0x6c53ec20,
+-	0x19b30: 0x6c6efe20, 0x19b31: 0x6c1a6420, 0x19b32: 0x6d321e20, 0x19b33: 0x6d428220,
+-	0x19b34: 0x6c1e2620, 0x19b35: 0x6cbd1e20, 0x19b36: 0x6c937a20, 0x19b37: 0x6c70f820,
+-	0x19b38: 0x6cd5a420, 0x19b39: 0x6ce6b420, 0x19b3a: 0x6cd09220, 0x19b3b: 0x6ce9f420,
+-	0x19b3c: 0x6c0ec020, 0x19b3d: 0x6ca3e820, 0x19b3e: 0x6cfe8820, 0x19b3f: 0x6c0b8220,
+-	// Block 0x66d, offset 0x19b40
+-	0x19b40: 0x6ce9de20, 0x19b41: 0x6d222420, 0x19b42: 0x6cf85220, 0x19b43: 0x6c242e20,
+-	0x19b44: 0x6c354e20, 0x19b45: 0x6cc01020, 0x19b46: 0x6d061620, 0x19b47: 0x6c4a1820,
+-	0x19b48: 0x6c7a8420, 0x19b49: 0x6cf43420, 0x19b4a: 0x6c759620, 0x19b4b: 0x6d16da20,
+-	0x19b4c: 0x6c3f4620, 0x19b4d: 0x6c894820, 0x19b4e: 0x6d410e20, 0x19b4f: 0x6cbc3020,
+-	0x19b50: 0x6c859a20, 0x19b51: 0x6d1e1620, 0x19b52: 0x6c5d1c20, 0x19b53: 0x6c6e5220,
+-	0x19b54: 0x6cba4220, 0x19b55: 0x6cca4820, 0x19b56: 0x6cadf420, 0x19b57: 0x6cda7220,
+-	0x19b58: 0x6c3e0620, 0x19b59: 0x6cf59820, 0x19b5a: 0x6c850020, 0x19b5b: 0x6c3f4820,
+-	0x19b5c: 0x6cb24a20, 0x19b5d: 0x6c05ea20, 0x19b5e: 0x6d20d220, 0x19b5f: 0x6cb59020,
+-	0x19b60: 0x6cf99020, 0x19b61: 0x6d032220, 0x19b62: 0x6d04b620, 0x19b63: 0x6d222620,
+-	0x19b64: 0x6c2c2420, 0x19b65: 0x6c17d020, 0x19b66: 0x6c1d9220, 0x19b67: 0x6d377c20,
+-	0x19b68: 0x6d0d4e20, 0x19b69: 0x6c87e820, 0x19b6a: 0x6c859c20, 0x19b6b: 0x6c7ee420,
+-	0x19b6c: 0x6cd8fc20, 0x19b6d: 0x6c656a20, 0x19b6e: 0x6d04b820, 0x19b6f: 0x6c3f5220,
+-	0x19b70: 0x6c5daa20, 0x19b71: 0x6c721e20, 0x19b72: 0x6cffd820, 0x19b73: 0x6cabf620,
+-	0x19b74: 0x6c666420, 0x19b75: 0x6c0c8c20, 0x19b76: 0x6c1f2020, 0x19b77: 0x6c3a9420,
+-	0x19b78: 0x6c3cde20, 0x19b79: 0x6d0b8a20, 0x19b7a: 0x6c017a20, 0x19b7b: 0x6c06f820,
+-	0x19b7c: 0x6d22ea20, 0x19b7d: 0x6d02bc20, 0x19b7e: 0x6c08ce20, 0x19b7f: 0x6c561620,
+-	// Block 0x66e, offset 0x19b80
+-	0x19b80: 0x6c166220, 0x19b81: 0x6d33be20, 0x19b82: 0x6c0e1020, 0x19b83: 0x6c6fe420,
+-	0x19b84: 0x6d10de20, 0x19b85: 0x6c252020, 0x19b86: 0x6c87ea20, 0x19b87: 0x6cecf420,
+-	0x19b88: 0x6c7ee620, 0x19b89: 0x6c122820, 0x19b8a: 0x6d401c20, 0x19b8b: 0x6c448220,
+-	0x19b8c: 0x6c490a20, 0x19b8d: 0x6c06fa20, 0x19b8e: 0x6ce4dc20, 0x19b8f: 0x6cd4b420,
+-	0x19b90: 0x6cd4b620, 0x19b91: 0x6c9b0420, 0x19b92: 0x6c2a0620, 0x19b93: 0x6cdfd420,
+-	0x19b94: 0x6c740e20, 0x19b95: 0x6c20c220, 0x19b96: 0x6d041e20, 0x19b97: 0x6cae9420,
+-	0x19b98: 0x6ce17020, 0x19b99: 0x6c548e20, 0x19b9a: 0x6d15da20, 0x19b9b: 0x6cb4d620,
+-	0x19b9c: 0x6ce3de20, 0x19b9d: 0x6c421420, 0x19b9e: 0x6c6e5e20, 0x19b9f: 0x6c6bd620,
+-	0x19ba0: 0x6cdbb220, 0x19ba1: 0x6c170a20, 0x19ba2: 0x6c6a9e20, 0x19ba3: 0x6c39ce20,
+-	0x19ba4: 0x6d344420, 0x19ba5: 0x6c796c20, 0x19ba6: 0x6c734220, 0x19ba7: 0x6d3f7420,
+-	0x19ba8: 0x6c722020, 0x19ba9: 0x6cba4620, 0x19baa: 0x6ca5c820, 0x19bab: 0x6c94e420,
+-	0x19bac: 0x6d3cf420, 0x19bad: 0x6cf27e20, 0x19bae: 0x6c95a820, 0x19baf: 0x6cd91020,
+-	0x19bb0: 0x6c839220, 0x19bb1: 0x6c5d1e20, 0x19bb2: 0x6c2fea20, 0x19bb3: 0x6d3f3620,
+-	0x19bb4: 0x6c07aa20, 0x19bb5: 0x6cf43820, 0x19bb6: 0x6c722220, 0x19bb7: 0x6ca39e20,
+-	0x19bb8: 0x6c112020, 0x19bb9: 0x6c657820, 0x19bba: 0x6d2d3820, 0x19bbb: 0x6d125a20,
+-	0x19bbc: 0x6d344620, 0x19bbd: 0x6ccc4020, 0x19bbe: 0x6cbe3820, 0x19bbf: 0x6cbd1220,
+-	// Block 0x66f, offset 0x19bc0
+-	0x19bc0: 0x6d1ba420, 0x19bc1: 0x6c196620, 0x19bc2: 0x6c648020, 0x19bc3: 0x6d0d6220,
+-	0x19bc4: 0x6cc85c20, 0x19bc5: 0x6d382420, 0x19bc6: 0x6c217620, 0x19bc7: 0x6c641220,
+-	0x19bc8: 0x6c61da20, 0x19bc9: 0x6cefa820, 0x19bca: 0x6d224220, 0x19bcb: 0x6c0e1820,
+-	0x19bcc: 0x6cc91620, 0x19bcd: 0x6ce31a20, 0x19bce: 0x6cee7020, 0x19bcf: 0x6cb0ee20,
+-	0x19bd0: 0x6d0e5a20, 0x19bd1: 0x6c3c3a20, 0x19bd2: 0x6ce17220, 0x19bd3: 0x6cf2e020,
+-	0x19bd4: 0x6c360620, 0x19bd5: 0x6d009a20, 0x19bd6: 0x6c17e820, 0x19bd7: 0x6cd13020,
+-	0x19bd8: 0x6c76ca20, 0x19bd9: 0x6c2c3820, 0x19bda: 0x6d429620, 0x19bdb: 0x6c138e20,
+-	0x19bdc: 0x6ce66c20, 0x19bdd: 0x6c070620, 0x19bde: 0x6d018820, 0x19bdf: 0x6c59b020,
+-	0x19be0: 0x6d11a820, 0x19be1: 0x6d2e5420, 0x19be2: 0x6c1e2a20, 0x19be3: 0x6d0bec20,
+-	0x19be4: 0x6d1f2820, 0x19be5: 0x6c666820, 0x19be6: 0x6d063a20, 0x19be7: 0x6d2bd220,
+-	0x19be8: 0x6c220220, 0x19be9: 0x6c3fdc20, 0x19bea: 0x6c087020, 0x19beb: 0x6d35d420,
+-	0x19bec: 0x6d3fea20, 0x19bed: 0x6c9e1620, 0x19bee: 0x6c601020, 0x19bef: 0x6d15e420,
+-	0x19bf0: 0x6d018a20, 0x19bf1: 0x6d0a0420, 0x19bf2: 0x6c10f420, 0x19bf3: 0x6c329420,
+-	0x19bf4: 0x6c12da20, 0x19bf5: 0x6d314c20, 0x19bf6: 0x6cab7c20, 0x19bf7: 0x6ce7d420,
+-	0x19bf8: 0x6ce7d620, 0x19bf9: 0x6c070820, 0x19bfa: 0x6d28b220, 0x19bfb: 0x6c908420,
+-	0x19bfc: 0x6c6aac20, 0x19bfd: 0x6cefaa20, 0x19bfe: 0x6c3bd620, 0x19bff: 0x6c16a020,
+-	// Block 0x670, offset 0x19c00
+-	0x19c00: 0x6c4a5220, 0x19c01: 0x6cda1420, 0x19c02: 0x6d361420, 0x19c03: 0x6cdab020,
+-	0x19c04: 0x6cf96620, 0x19c05: 0x6c40b020, 0x19c06: 0x6d261420, 0x19c07: 0x6cc70420,
+-	0x19c08: 0x6c860420, 0x19c09: 0x6caa6420, 0x19c0a: 0x6d282c20, 0x19c0b: 0x6c67a620,
+-	0x19c0c: 0x6c96bc20, 0x19c0d: 0x6c056e20, 0x19c0e: 0x6c2cc820, 0x19c0f: 0x6ce0ee20,
+-	0x19c10: 0x6c503c20, 0x19c11: 0x6c6ac220, 0x19c12: 0x6cf60820, 0x19c13: 0x6ccd8820,
+-	0x19c14: 0x6cba5020, 0x19c15: 0x6c744020, 0x19c16: 0x6c122c20, 0x19c17: 0x6c1f3c20,
+-	0x19c18: 0x6cca1820, 0x19c19: 0x6c071c20, 0x19c1a: 0x6cffe820, 0x19c1b: 0x6d1e3420,
+-	0x19c1c: 0x6d10f220, 0x19c1d: 0x6ce09620, 0x19c1e: 0x6cdd1420, 0x19c1f: 0x6d101c20,
+-	0x19c20: 0x6c37ea20, 0x19c21: 0x6c0e1c20, 0x19c22: 0x6c635a20, 0x19c23: 0x6c271820,
+-	0x19c24: 0x6d293620, 0x19c25: 0x6ce17620, 0x19c26: 0x6c483820, 0x19c27: 0x6c0d3420,
+-	0x19c28: 0x6c1ede20, 0x19c29: 0x6caabc20, 0x19c2a: 0x6c116c20, 0x19c2b: 0x6c82c820,
+-	0x19c2c: 0x6c24ca20, 0x19c2d: 0x6d1d8820, 0x19c2e: 0x6d2a1420, 0x19c2f: 0x6d3ff620,
+-	0x19c30: 0x6c07f420, 0x19c31: 0x6cd95e20, 0x19c32: 0x6c02ce20, 0x19c33: 0x6c1ffe20,
+-	0x19c34: 0x6d226620, 0x19c35: 0x6d2d4220, 0x19c36: 0x6d40c220, 0x19c37: 0x6cce0620,
+-	0x19c38: 0x6c208e20, 0x19c39: 0x6c6e8c20, 0x19c3a: 0x6c1c2c20, 0x19c3b: 0x6ccc3220,
+-	0x19c3c: 0x6c4ecc20, 0x19c3d: 0x6d2eb820, 0x19c3e: 0x6cbe4c20, 0x19c3f: 0x6d0e8020,
+-	// Block 0x671, offset 0x19c40
+-	0x19c40: 0x6c2c6620, 0x19c41: 0x6d01bc20, 0x19c42: 0x6c909220, 0x19c43: 0x6c072020,
+-	0x19c44: 0x6cb1b020, 0x19c45: 0x6c6c9420, 0x19c46: 0x6c88f020, 0x19c47: 0x6c926020,
+-	0x19c48: 0x6c976620, 0x19c49: 0x6cb8ea20, 0x19c4a: 0x6cfaba20, 0x19c4b: 0x6ce09c20,
+-	0x19c4c: 0x6d1c7a20, 0x19c4d: 0x6c307e20, 0x19c4e: 0x6d3bd220, 0x19c4f: 0x6cfe3c20,
+-	0x19c50: 0x6ccd9220, 0x19c51: 0x6cbbe220, 0x19c52: 0x6c6f2220, 0x19c53: 0x6ce9e820,
+-	0x19c54: 0x6d420620, 0x19c55: 0x6cb44220, 0x19c56: 0x6cf66020, 0x19c57: 0x6c815e20,
+-	0x19c58: 0x6c16f020, 0x19c59: 0x6c49ec20, 0x19c5a: 0x6c89ec20, 0x19c5b: 0x6cb50420,
+-	0x19c5c: 0x6c197820, 0x19c5d: 0x6c150820, 0x19c5e: 0x6cefee20, 0x19c5f: 0x6c5efe20,
+-	0x19c60: 0x6c0e8220, 0x19c61: 0x6c5bf020, 0x19c62: 0x6c202420, 0x19c63: 0x6ce5fc20,
+-	0x19c64: 0x6c289a20, 0x19c65: 0x6c691220, 0x19c66: 0x6c700a20, 0x19c67: 0x6ccbb820,
+-	0x19c68: 0x6c3be020, 0x19c69: 0x6cfce620, 0x19c6a: 0x6c713c20, 0x19c6b: 0x6c366c20,
+-	0x19c6c: 0x6c685820, 0x19c6d: 0x6c66a420, 0x19c6e: 0x6ce76420, 0x19c6f: 0x6c8c5620,
+-	0x19c70: 0x6c0f2420, 0x19c71: 0x6c482220, 0x19c72: 0x6cfd5820, 0x19c73: 0x6cdade20,
+-	0x19c74: 0x6cfce820, 0x19c75: 0x6c676e20, 0x19c76: 0x6c9fc020, 0x19c77: 0x6d130e20,
+-	0x19c78: 0x6c6d3220, 0x19c79: 0x6c644e20, 0x19c7a: 0x6cbc5220, 0x19c7b: 0x6cb0b420,
+-	0x19c7c: 0x6c3c6020, 0x19c7d: 0x6d394220, 0x19c7e: 0x6c00c020, 0x19c7f: 0x6cc9e820,
+-	// Block 0x672, offset 0x19c80
+-	0x19c80: 0x6d154220, 0x19c81: 0x6c75d220, 0x19c82: 0x6ca9be20, 0x19c83: 0x6c151620,
+-	0x19c84: 0x6d184620, 0x19c85: 0x6c297c20, 0x19c86: 0x6c6e2420, 0x19c87: 0x6d07b620,
+-	0x19c88: 0x6c7b3020, 0x19c89: 0x6c65c820, 0x19c8a: 0x6c1f6820, 0x19c8b: 0x6c27f420,
+-	0x19c8c: 0x6c692020, 0x19c8d: 0x6ccc3420, 0x19c8e: 0x6d294020, 0x19c8f: 0x6c121820,
+-	0x19c90: 0x6c0d5020, 0x19c91: 0x6c017220, 0x19c92: 0x6cc7c420, 0x19c93: 0x6cdf3c20,
+-	0x19c94: 0x6c1dd820, 0x19c95: 0x6c148a20, 0x19c96: 0x6c7fb220, 0x19c97: 0x6ca64620,
+-	0x19c98: 0x6c6cb420, 0x19c99: 0x6cba7020, 0x19c9a: 0x6c9b3420, 0x19c9b: 0x6cf47620,
+-	0x19c9c: 0x6ca91820, 0x19c9d: 0x6cbf5a20, 0x19c9e: 0x6ca64820, 0x19c9f: 0x6c16c820,
+-	0x19ca0: 0x6c8b2e20, 0x19ca1: 0x6c82dc20, 0x19ca2: 0x6c93b820, 0x19ca3: 0x6c7bd020,
+-	0x19ca4: 0x6c066c20, 0x19ca5: 0x6d240420, 0x19ca6: 0x6c0c2a20, 0x19ca7: 0x6d297820,
+-	0x19ca8: 0x6d349e20, 0x19ca9: 0x6cd8f220, 0x19caa: 0x6d1eb420, 0x19cab: 0x6c4fe820,
+-	0x19cac: 0x6c193220, 0x19cad: 0x6c193620, 0x19cae: 0x6c86bc20, 0x19caf: 0x6ce2be20,
+-	0x19cb0: 0x6cf02420, 0x19cb1: 0x6c903a20, 0x19cb2: 0x6c1eee20, 0x19cb3: 0x6c154020,
+-	0x19cb4: 0x6cc4e020, 0x19cb5: 0x6cd51220, 0x19cb6: 0x6c5c8820, 0x19cb7: 0x6c874220,
+-	0x19cb8: 0x6c956820, 0x19cb9: 0x6d298020, 0x19cba: 0x6caace20, 0x19cbb: 0x6ce18820,
+-	0x19cbc: 0x6d0e1220, 0x19cbd: 0x6c829420, 0x19cbe: 0x6ca47c20, 0x19cbf: 0x6c372e20,
+-	// Block 0x673, offset 0x19cc0
+-	0x19cc0: 0x6cf49020, 0x19cc1: 0x6d27d220, 0x19cc2: 0x6d294a20, 0x19cc3: 0x6d252e20,
+-	0x19cc4: 0x6d044a20, 0x19cc5: 0x6c1ca820, 0x19cc6: 0x6d2f9620, 0x19cc7: 0x6d044e20,
+-	0x19cc8: 0x6cfa6e20, 0x19cc9: 0x6c49d020, 0x19cca: 0x6c332e20, 0x19ccb: 0x6c787820,
+-	0x19ccc: 0x6c333020, 0x19ccd: 0x6c9dfe20, 0x19cce: 0x6ce91c20, 0x19ccf: 0x6c169420,
+-	0x19cd0: 0x6c373220, 0x19cd1: 0x6c333220, 0x19cd2: 0x6c373620, 0x19cd3: 0x6c6c2c20,
+-	0x19cd4: 0x6ce92020, 0x19cd5: 0x6cd87e20, 0x19cd6: 0x6d0d4420, 0x19cd7: 0x6d0d5020,
+-	0x19cd8: 0x6cd2bc20, 0x19cda: 0x6c292a20, 0x19cdb: 0x6cb8c220,
+-	0x19cdc: 0x6c30a820, 0x19cdd: 0x6c3b2820, 0x19cde: 0x6c98d620, 0x19cdf: 0x6ccfe220,
+-	0x19ce0: 0x6c30aa20, 0x19ce2: 0x6c6dc620, 0x19ce3: 0x6c852e20,
+-	0x19ce4: 0x6c5a2a20, 0x19ce5: 0x6cc80e20, 0x19ce6: 0x6cedd820, 0x19ce7: 0x6ca57e20,
+-	0x19ce8: 0x6cc2b220, 0x19ce9: 0x6c898820, 0x19cea: 0x6d20d420, 0x19ceb: 0x6c030a20,
+-	0x19cec: 0x6c454e20, 0x19ced: 0x6c8f2420, 0x19cee: 0x6cf55c20, 0x19cef: 0x6c4f4220,
+-	0x19cf0: 0x6c7f8620, 0x19cf1: 0x6c460a20, 0x19cf2: 0x6ce45620, 0x19cf3: 0x6c490020,
+-	0x19cf4: 0x6d041020, 0x19cf5: 0x6c0daa20, 0x19cf6: 0x6cb57a20, 0x19cf7: 0x6c720620,
+-	0x19cf8: 0x6c2d0620, 0x19cf9: 0x6d3e0820, 0x19cfa: 0x6c3b2020, 0x19cfb: 0x6d100620,
+-	0x19cfc: 0x6c647a20, 0x19cfd: 0x6cd45820, 0x19cfe: 0x6c621420, 0x19cff: 0x6d17da20,
+-	// Block 0x674, offset 0x19d00
+-	0x19d00: 0x6c627020, 0x19d01: 0x6c15ec20, 0x19d02: 0x6c6ed020, 0x19d03: 0x6c993e20,
+-	0x19d04: 0x6cc4a620, 0x19d05: 0x6ca58020, 0x19d06: 0x6d253020, 0x19d07: 0x6c991c20,
+-	0x19d08: 0x6c424c20, 0x19d09: 0x6cc4a820, 0x19d0a: 0x6c12c620, 0x19d0b: 0x6c6ed220,
+-	0x19d0c: 0x6c12c820, 0x19d0d: 0x6d292620, 0x19d0e: 0x6c488820, 0x19d0f: 0x6c6ef020,
+-	0x19d10: 0x6c994820, 0x19d11: 0x6d390820, 0x19d12: 0x6c994e20, 0x19d13: 0x6c46a020,
+-	0x19d14: 0x6d063220, 0x19d15: 0x6c9e1820, 0x19d16: 0x6c9d1620, 0x19d17: 0x6cc6ec20,
+-	0x19d18: 0x6d1a1a20, 0x19d19: 0x6d013e20, 0x19d1a: 0x6c76bc20, 0x19d1b: 0x6c755020,
+-	0x19d1c: 0x6ca9ae20, 0x19d1d: 0x6d145a20, 0x19d1e: 0x6c9c3420, 0x19d1f: 0x6cd32820,
+-	0x19d20: 0x6c490620, 0x19d21: 0x6c9b0e20, 0x19d22: 0x6d37ec20, 0x19d23: 0x6c722620,
+-	0x19d24: 0x6d24d020, 0x19d25: 0x6c9ff220, 0x19d26: 0x6c79de20, 0x19d27: 0x6c8ba420,
+-	0x19d28: 0x6c3fe020, 0x19d29: 0x6d014420, 0x19d2a: 0x6c9d7620, 0x19d2b: 0x6c0d9e20,
+-	0x19d2c: 0x6c2fd820, 0x19d2d: 0x6cdf0c20, 0x19d2e: 0x6c425020, 0x19d2f: 0x6c3c9a20,
+-	0x19d30: 0x6c0da620, 0x19d31: 0x6c564620, 0x19d32: 0x6c1caa20, 0x19d33: 0x6c73cc20,
+-	0x19d34: 0x6c564820, 0x19d35: 0x6c7bdc20, 0x19d36: 0x6d12a220, 0x19d37: 0x6c839020,
+-	0x19d38: 0x6cac9a20, 0x19d39: 0x6c3dd220, 0x19d3a: 0x6c9f8c20, 0x19d3b: 0x6c305020,
+-	0x19d3c: 0x6cfbe620, 0x19d3d: 0x6c8ac620, 0x19d3e: 0x6cb84020, 0x19d3f: 0x6c646820,
+-	// Block 0x675, offset 0x19d40
+-	0x19d40: 0x6c6e4a20, 0x19d41: 0x6cd5a620, 0x19d42: 0x6c9a4c20, 0x19d43: 0x6ce88a20,
+-	0x19d44: 0x6cb4d820, 0x19d45: 0x6c480220, 0x19d46: 0x6d3cda20, 0x19d47: 0x6cd91220,
+-	0x19d48: 0x6c6e6020, 0x19d49: 0x6c894a20, 0x19d4a: 0x6cbec420, 0x19d4b: 0x6c2db820,
+-	0x19d4c: 0x6c8cc420, 0x19d4d: 0x6c306c20, 0x19d4e: 0x6c421620, 0x19d4f: 0x6c658220,
+-	0x19d50: 0x6d19c620, 0x19d51: 0x6c23ea20, 0x19d52: 0x6d14f220, 0x19d53: 0x6c860620,
+-	0x19d54: 0x6c20a820, 0x19d55: 0x6ca03420, 0x19d56: 0x6d3ce820, 0x19d57: 0x6c24cc20,
+-	0x19d58: 0x6cd7fe20, 0x19d59: 0x6c345c20, 0x19d5a: 0x6c6d3420, 0x19d5b: 0x6c8c2620,
+-	0x19d5c: 0x6c8c2820, 0x19d5d: 0x6ca91a20, 0x19d5e: 0x6cf6b620, 0x19d5f: 0x6c31be20,
+-	0x19d60: 0x6c610c20, 0x19d61: 0x6c387820, 0x19d62: 0x6c387a20, 0x19d63: 0x6c387c20,
+-	0x19d64: 0x6c3cd620, 0x19d65: 0x6c704a20, 0x19d66: 0x6c1ed220, 0x19d67: 0x6d337a20,
+-	0x19d68: 0x6c3c1420, 0x19d69: 0x6ca2c220, 0x19d6a: 0x6d377a20, 0x19d6b: 0x6c3dcc20,
+-	0x19d6c: 0x6c3c1620, 0x19d6d: 0x6cb27220, 0x19d6e: 0x6c3c2020, 0x19d6f: 0x6c764420,
+-	0x19d70: 0x6c59b220, 0x19d71: 0x6c765220, 0x19d72: 0x6c419a20, 0x19d73: 0x6c2ad820,
+-	0x19d74: 0x6cb2bc20, 0x19d75: 0x6cb9ec20, 0x19d76: 0x6d044820, 0x19d77: 0x6c7b0a20,
+-	0x19d78: 0x6ce83620, 0x19d79: 0x6c022420, 0x19d7a: 0x6c1e5020, 0x19d7b: 0x6c5e6820,
+-	0x19d7c: 0x6c295020, 0x19d7d: 0x6c4dd220, 0x19d7e: 0x6c4dda20, 0x19d7f: 0x6d2a3420,
+-	// Block 0x676, offset 0x19d80
+-	0x19d80: 0x6c29b020, 0x19d81: 0x6c2da220, 0x19d82: 0x6c29b220, 0x19d83: 0x6cc5a020,
+-	0x19d84: 0x6cc5a220, 0x19d85: 0x6c204a20, 0x19d86: 0x6c3b0820, 0x19d87: 0x6cbc9020,
+-	0x19d88: 0x6d163e20, 0x19d89: 0x6c5e6a20, 0x19d8a: 0x6c76a020, 0x19d8b: 0x6cba3a20,
+-	0x19d8c: 0x6c25ac20, 0x19d8d: 0x6c1e7220, 0x19d8e: 0x6cf1c620, 0x19d8f: 0x6c5e7220,
+-	0x19d90: 0x6c281c20, 0x19d91: 0x6d03b820, 0x19d92: 0x6c577820, 0x19d93: 0x6cecb620,
+-	0x19d94: 0x6c73ce20, 0x19d95: 0x6c839e20, 0x19d96: 0x6d267020, 0x19d97: 0x6c8abc20,
+-	0x19d98: 0x6c8e3e20, 0x19d99: 0x6d2aa220, 0x19d9a: 0x6c425220, 0x19d9b: 0x6c209e20,
+-	0x19d9c: 0x6c3dd420, 0x19d9d: 0x6c1e5420, 0x19d9e: 0x6cc26020, 0x19d9f: 0x6c704c20,
+-	0x19da0: 0x6cccb820, 0x19da1: 0x6c9f8e20, 0x19da2: 0x6c8c9a20, 0x19da3: 0x6d378a20,
+-	0x19da4: 0x6cac9c20, 0x19da5: 0x6c0cd820, 0x19da6: 0x6c6a6420, 0x19da7: 0x6c6a6620,
+-	0x19da8: 0x6cad4420, 0x19da9: 0x6c857620, 0x19daa: 0x6cccba20, 0x19dab: 0x6c0cda20,
+-	0x19dac: 0x6c158e20, 0x19dad: 0x6c6e0620, 0x19dae: 0x6c484420, 0x19daf: 0x6c44b820,
+-	0x19db0: 0x6c2a0020, 0x19db1: 0x6c20a220, 0x19db2: 0x6c7c3220, 0x19db3: 0x6c7a2020,
+-	0x19db4: 0x6c34ca20, 0x19db5: 0x6c37be20, 0x19db6: 0x6d358020, 0x19db7: 0x6cd64020,
+-	0x19db8: 0x6cc36e20, 0x19db9: 0x6ccbce20, 0x19dba: 0x6c22b220, 0x19dbb: 0x6c787a20,
+-	0x19dbc: 0x6c6a7620, 0x19dbd: 0x6c4b2a20, 0x19dbe: 0x6c22b420, 0x19dbf: 0x6c4b2c20,
+-	// Block 0x677, offset 0x19dc0
+-	0x19dc0: 0x6c764620, 0x19dc1: 0x6c34cc20, 0x19dc2: 0x6c619020, 0x19dc3: 0x6ce3d820,
+-	0x19dc4: 0x6c6e1420, 0x19dc5: 0x6c907c20, 0x19dc6: 0x6c95a620, 0x19dc7: 0x6d2ab220,
+-	0x19dc8: 0x6d24cc20, 0x19dc9: 0x6c260c20, 0x19dca: 0x6d08da20, 0x19dcb: 0x6c788220,
+-	0x19dcc: 0x6c7e5a20, 0x19dcd: 0x6cb97820, 0x19dce: 0x6ccbd020, 0x19dcf: 0x6c20a420,
+-	0x19dd0: 0x6c489420, 0x19dd1: 0x6c665820, 0x19dd2: 0x6c261020, 0x19dd3: 0x6c83aa20,
+-	0x19dd4: 0x6ce2e820, 0x19dd5: 0x6c3a9620, 0x19dd6: 0x6cb3c620, 0x19dd7: 0x6c15a020,
+-	0x19dd8: 0x6cb59c20, 0x19dd9: 0x6c20a620, 0x19dda: 0x6d3f3820, 0x19ddb: 0x6c426c20,
+-	0x19ddc: 0x6cec8420, 0x19ddd: 0x6c0e5a20, 0x19dde: 0x6c5e9e20, 0x19ddf: 0x6c342220,
+-	0x19de0: 0x6cbe7220, 0x19de1: 0x6ccd7420, 0x19de2: 0x6c316620, 0x19de3: 0x6c666a20,
+-	0x19de4: 0x6c61c220, 0x19de5: 0x6c0e5c20, 0x19de6: 0x6d0be220, 0x19de7: 0x6c722820,
+-	0x19de8: 0x6c5d5420, 0x19de9: 0x6cd16220, 0x19dea: 0x6c658420, 0x19deb: 0x6c344420,
+-	0x19dec: 0x6c329620, 0x19ded: 0x6cf36220, 0x19dee: 0x6c489820, 0x19def: 0x6c3fe220,
+-	0x19df0: 0x6cd15a20, 0x19df1: 0x6c667420, 0x19df2: 0x6c438c20, 0x19df3: 0x6c269420,
+-	0x19df4: 0x6c765420, 0x19df5: 0x6c20aa20, 0x19df6: 0x6c1fe220, 0x19df7: 0x6c15bc20,
+-	0x19df8: 0x6ce94e20, 0x19df9: 0x6c926220, 0x19dfa: 0x6c83de20, 0x19dfb: 0x6caf0a20,
+-	0x19dfc: 0x6ccce820, 0x19dfd: 0x6cb15620, 0x19dfe: 0x6c79bc20, 0x19dff: 0x6c690220,
+-	// Block 0x678, offset 0x19e00
+-	0x19e00: 0x6c486620, 0x19e01: 0x6cbb8a20, 0x19e02: 0x6c747220, 0x19e03: 0x6c57a820,
+-	0x19e04: 0x6d2be620, 0x19e05: 0x6d3df620, 0x19e06: 0x6c882a20, 0x19e07: 0x6c727420,
+-	0x19e08: 0x6caf8420, 0x19e09: 0x6c8e8020, 0x19e0a: 0x6c4b5e20, 0x19e0b: 0x6c692220,
+-	0x19e0c: 0x6c4b6020, 0x19e0d: 0x6c66b020, 0x19e0e: 0x6c66b220, 0x19e0f: 0x6ce0c820,
+-	0x19e10: 0x6c5d5a20, 0x19e11: 0x6c627220, 0x19e12: 0x6c66cc20, 0x19e13: 0x6d187e20,
+-	0x19e14: 0x6c66ce20, 0x19e15: 0x6d370020, 0x19e16: 0x6c154220, 0x19e17: 0x6c662020,
+-	0x19e18: 0x6ca09820, 0x19e19: 0x6c84c820, 0x19e1a: 0x6d3a8c20, 0x19e1b: 0x6c855c20,
+-	0x19e1c: 0x6d0b6220, 0x19e1d: 0x6cc36c20, 0x19e1e: 0x6c04da20, 0x19e1f: 0x6c455420,
+-	0x19e20: 0x6c631620, 0x19e21: 0x6cf55220, 0x19e22: 0x6c971e20, 0x19e23: 0x6c8abe20,
+-	0x19e24: 0x6c6cce20, 0x19e25: 0x6c792020, 0x19e26: 0x6d006420, 0x19e27: 0x6d34d220,
+-	0x19e28: 0x6c304c20, 0x19e29: 0x6d3aa020, 0x19e2a: 0x6caa4a20, 0x19e2b: 0x6c6a6820,
+-	0x19e2c: 0x6cc17420, 0x19e2d: 0x6ccec020, 0x19e2e: 0x6d167620, 0x19e2f: 0x6d398020,
+-	0x19e30: 0x6ca0c020, 0x19e31: 0x6c857a20, 0x19e32: 0x6c6cd020, 0x19e33: 0x6c813e20,
+-	0x19e34: 0x6c814020, 0x19e35: 0x6c733e20, 0x19e36: 0x6c79ce20, 0x19e37: 0x6d0f8620,
+-	0x19e38: 0x6cebc620, 0x19e39: 0x6cffd420, 0x19e3a: 0x6ca1c220, 0x19e3b: 0x6c7b8420,
+-	0x19e3c: 0x6c6a7a20, 0x19e3d: 0x6c8aca20, 0x19e3e: 0x6c50ba20, 0x19e3f: 0x6cd31420,
+-	// Block 0x679, offset 0x19e40
+-	0x19e40: 0x6c788420, 0x19e41: 0x6c6ce020, 0x19e42: 0x6c433620, 0x19e43: 0x6c0ec220,
+-	0x19e44: 0x6c9f9820, 0x19e45: 0x6c1bf420, 0x19e46: 0x6c80a020, 0x19e47: 0x6d1e1820,
+-	0x19e48: 0x6d1e1a20, 0x19e49: 0x6c9e0c20, 0x19e4a: 0x6c788620, 0x19e4b: 0x6d099220,
+-	0x19e4c: 0x6c734420, 0x19e4d: 0x6cbe7420, 0x19e4e: 0x6c922820, 0x19e4f: 0x6c107c20,
+-	0x19e50: 0x6c9bcc20, 0x19e51: 0x6c1c0420, 0x19e52: 0x6c823c20, 0x19e53: 0x6c768620,
+-	0x19e54: 0x6c9e1a20, 0x19e55: 0x6c307220, 0x19e56: 0x6d06b420, 0x19e57: 0x6d06ba20,
+-	0x19e58: 0x6c76a620, 0x19e59: 0x6cf55620, 0x19e5a: 0x6d175020, 0x19e5b: 0x6d099820,
+-	0x19e5c: 0x6cf24a20, 0x19e5d: 0x6cd16420, 0x19e5e: 0x6c815620, 0x19e5f: 0x6ca28420,
+-	0x19e60: 0x6c926420, 0x19e61: 0x6cb1b220, 0x19e62: 0x6cd39620, 0x19e63: 0x6c5ee220,
+-	0x19e64: 0x6cbd7c20, 0x19e65: 0x6c67ee20, 0x19e66: 0x6c174c20, 0x19e67: 0x6cc37420,
+-	0x19e68: 0x6cfe3e20, 0x19e69: 0x6d181c20, 0x19e6a: 0x6c747620, 0x19e6b: 0x6c385220,
+-	0x19e6c: 0x6c72fa20, 0x19e6d: 0x6ce76620, 0x19e6e: 0x6c727620, 0x19e6f: 0x6c27f620,
+-	0x19e70: 0x6d00d620, 0x19e71: 0x6c973820, 0x19e72: 0x6d09a420, 0x19e73: 0x6d09a820,
+-	0x19e74: 0x6c940220, 0x19e75: 0x6c867020, 0x19e76: 0x6c184e20, 0x19e77: 0x6cc4e220,
+-	0x19e78: 0x6cc37c20, 0x19e79: 0x6c059c20, 0x19e7a: 0x6cce9420, 0x19e7b: 0x6d277620,
+-	0x19e7c: 0x6c6f4220, 0x19e7d: 0x6c062c20, 0x19e7e: 0x6c463220, 0x19e7f: 0x6cf49220,
+-	// Block 0x67a, offset 0x19e80
+-	0x19e80: 0x6d277820, 0x19e81: 0x6cf17820, 0x19e82: 0x6c0ade20, 0x19e83: 0x6c412220,
+-	0x19e84: 0x6c412420, 0x19e85: 0x6c059e20, 0x19e86: 0x6c22f420, 0x19e87: 0x6d198a20,
+-	0x19e88: 0x6d045020, 0x19e89: 0x6cae5020, 0x19e8a: 0x6c705020, 0x19e8b: 0x6ce20420,
+-	0x19e8c: 0x6c43c620, 0x19e8d: 0x6cb42c20, 0x19e8e: 0x6c35f820, 0x19e8f: 0x6cad5a20,
+-	0x19e90: 0x6c3e4820, 0x19e91: 0x6c458820, 0x19e92: 0x6c269620, 0x19e93: 0x6c6fee20,
+-	0x19e94: 0x6cbef220, 0x19e95: 0x6c08aa20, 0x19e96: 0x6c577620, 0x19e97: 0x6c06c620,
+-	0x19e98: 0x6ca4ea20, 0x19e99: 0x6cd41420, 0x19e9a: 0x6c397e20, 0x19e9b: 0x6c6fc620,
+-	0x19e9c: 0x6d144c20, 0x19e9d: 0x6d288020, 0x19e9e: 0x6c67d020, 0x19e9f: 0x6c777820,
+-	0x19ea0: 0x6c681820, 0x19ea1: 0x6c7b8020, 0x19ea2: 0x6c549220, 0x19ea3: 0x6cf98420,
+-	0x19ea4: 0x6cc0ce20, 0x19ea5: 0x6c0b6820, 0x19ea6: 0x6c4ac620, 0x19ea7: 0x6cbc9c20,
+-	0x19ea8: 0x6d29d020, 0x19ea9: 0x6c7b8a20, 0x19eaa: 0x6c3a4c20, 0x19eab: 0x6c54b420,
+-	0x19eac: 0x6d224620, 0x19ead: 0x6c4aee20, 0x19eae: 0x6c7cf020, 0x19eaf: 0x6c5bd220,
+-	0x19eb0: 0x6c27ea20, 0x19eb1: 0x6c4b5c20, 0x19eb2: 0x6c881a20, 0x19eb3: 0x6c882c20,
+-	0x19eb4: 0x6cdb9420, 0x19eb5: 0x6c31c220, 0x19eb6: 0x6c703420, 0x19eb7: 0x6c74fa20,
+-	0x19eb8: 0x6cf83420, 0x19eb9: 0x6cb04020, 0x19eba: 0x6cc0c420, 0x19ebb: 0x6d13c020,
+-	0x19ebc: 0x6c77d420, 0x19ebd: 0x6d0d5220, 0x19ebe: 0x6c0b3220, 0x19ebf: 0x6ca68c20,
+-	// Block 0x67b, offset 0x19ec0
+-	0x19ec0: 0x6cc0f820, 0x19ec1: 0x6cd22420, 0x19ec2: 0x6d0a6020, 0x19ec3: 0x6cb88c20,
+-	0x19ec4: 0x6ca75420, 0x19ec5: 0x6cc96220, 0x19ec6: 0x6d40a220, 0x19ec7: 0x6cd0d020,
+-	0x19ec8: 0x6cf41620, 0x19ec9: 0x6c5b8420, 0x19eca: 0x6c04dc20, 0x19ecb: 0x6cd2fa20,
+-	0x19ecc: 0x6cf83620, 0x19ecd: 0x6ced6a20, 0x19ece: 0x6c572420, 0x19ecf: 0x6d006620,
+-	0x19ed0: 0x6ced6c20, 0x19ed1: 0x6c068e20, 0x19ed2: 0x6d40a820, 0x19ed3: 0x6d3cee20,
+-	0x19ed4: 0x6d007020, 0x19ed5: 0x6c27ba20, 0x19ed6: 0x6c972820, 0x19ed7: 0x6ca3ea20,
+-	0x19ed8: 0x6c27c020, 0x19ed9: 0x6c601220, 0x19eda: 0x6c0efe20, 0x19edb: 0x6cd67c20,
+-	0x19edc: 0x6c100420, 0x19edd: 0x6c7bd420, 0x19ede: 0x6c0b6420, 0x19edf: 0x6c102a20,
+-	0x19ee0: 0x6d2e4620, 0x19ee1: 0x6c761820, 0x19ee2: 0x6c913020, 0x19ee3: 0x6d1f9c20,
+-	0x19ee4: 0x6c91b420, 0x19ee5: 0x6cf58420, 0x19ee6: 0x6c48a620, 0x19ee7: 0x6cf2d420,
+-	0x19ee8: 0x6d017620, 0x19ee9: 0x6c6a4e20, 0x19eea: 0x6c6a5020, 0x19eeb: 0x6cf06820,
+-	0x19eec: 0x6c01f020, 0x19eed: 0x6cbef420, 0x19eee: 0x6d338020, 0x19eef: 0x6c991e20,
+-	0x19ef0: 0x6d1b3620, 0x19ef1: 0x6cee6620, 0x19ef2: 0x6ccec420, 0x19ef3: 0x6c5fd220,
+-	0x19ef4: 0x6cc3a020, 0x19ef5: 0x6c948c20, 0x19ef6: 0x6c1b7c20, 0x19ef7: 0x6c731020,
+-	0x19ef8: 0x6d016a20, 0x19ef9: 0x6d067e20, 0x19efa: 0x6c6c8620, 0x19efb: 0x6cc3a620,
+-	0x19efc: 0x6cf4be20, 0x19efd: 0x6c5fec20, 0x19efe: 0x6c360a20, 0x19eff: 0x6cbe3a20,
+-	// Block 0x67c, offset 0x19f00
+-	0x19f00: 0x6cf63820, 0x19f01: 0x6cca6620, 0x19f02: 0x6c16e020, 0x19f03: 0x6cef8020,
+-	0x19f04: 0x6c35c020, 0x19f05: 0x6ce62220, 0x19f06: 0x6c856020, 0x19f07: 0x6d300c20,
+-	0x19f08: 0x6c4e4e20, 0x19f09: 0x6c856420, 0x19f0a: 0x6d0b4620, 0x19f0b: 0x6d0ac820,
+-	0x19f0c: 0x6d0e3620, 0x19f0d: 0x6ccf3020, 0x19f0e: 0x6c2bca20, 0x19f0f: 0x6d2c7020,
+-	0x19f10: 0x6cacf020, 0x19f11: 0x6d0b0c20, 0x19f12: 0x6c50bc20, 0x19f13: 0x6d0b1620,
+-	0x19f14: 0x6d358220, 0x19f15: 0x6c12cc20, 0x19f16: 0x6cacf620, 0x19f17: 0x6ce31020,
+-	0x19f18: 0x6c83a420, 0x19f19: 0x6ccf3820, 0x19f1a: 0x6c546020, 0x19f1b: 0x6ce63420,
+-	0x19f1c: 0x6d416820, 0x19f1d: 0x6c261220, 0x19f1e: 0x6c3a9820, 0x19f1f: 0x6d254c20,
+-	0x19f20: 0x6c12dc20, 0x19f21: 0x6d255e20, 0x19f22: 0x6cfd6a20, 0x19f23: 0x6d0d6420,
+-	0x19f24: 0x6c860c20, 0x19f25: 0x6c744220, 0x19f26: 0x6ccc5020, 0x19f27: 0x6c2cca20,
+-	0x19f28: 0x6c1e7c20, 0x19f29: 0x6c6ff020, 0x19f2a: 0x6c6c9620, 0x19f2b: 0x6c024620,
+-	0x19f2c: 0x6c4b1020, 0x19f2d: 0x6d0e9020, 0x19f2e: 0x6cd80020, 0x19f2f: 0x6c862620,
+-	0x19f30: 0x6c16f220, 0x19f31: 0x6c7faa20, 0x19f32: 0x6c864620, 0x19f33: 0x6d0cd020,
+-	0x19f34: 0x6d0df620, 0x19f35: 0x6d25dc20, 0x19f36: 0x6cd7b420, 0x19f37: 0x6c455020,
+-	0x19f38: 0x6c8b9c20, 0x19f39: 0x6cc73e20, 0x19f3a: 0x6cc25a20, 0x19f3b: 0x6cc25c20,
+-	0x19f3c: 0x6c377c20, 0x19f3d: 0x6c82b020, 0x19f3e: 0x6c315e20, 0x19f3f: 0x6cfc7420,
+-	// Block 0x67d, offset 0x19f40
+-	0x19f40: 0x6d3b6e20, 0x19f41: 0x6cc9fa20, 0x19f42: 0x6c115a20, 0x19f43: 0x6c115e20,
+-	0x19f44: 0x6c116020, 0x19f45: 0x6c116620, 0x19f46: 0x6c00b420, 0x19f47: 0x6c278620,
+-	0x19f48: 0x6d200420, 0x19f49: 0x6c137220, 0x19f4a: 0x6c5fb820, 0x19f4b: 0x6d206820,
+-	0x19f4c: 0x6cd6a020, 0x19f4d: 0x6c390020, 0x19f4e: 0x6cd42620, 0x19f4f: 0x6c48e420,
+-	0x19f50: 0x6c035c20, 0x19f51: 0x6c37e220, 0x19f52: 0x6cc91020, 0x19f53: 0x6cd30820,
+-	0x19f54: 0x6cd4a620, 0x19f55: 0x6d3d2a20, 0x19f56: 0x6cc23c20, 0x19f57: 0x6cd45220,
+-	0x19f58: 0x6c0b7a20, 0x19f59: 0x6d068a20, 0x19f5a: 0x6c640420, 0x19f5b: 0x6cacaa20,
+-	0x19f5c: 0x6cda0c20, 0x19f5d: 0x6c433820, 0x19f5e: 0x6cf08020, 0x19f5f: 0x6cda0e20,
+-	0x19f60: 0x6c2ebc20, 0x19f61: 0x6cc8e220, 0x19f62: 0x6c23bc20, 0x19f63: 0x6c79c820,
+-	0x19f64: 0x6c475020, 0x19f65: 0x6c71ea20, 0x19f66: 0x6c8e1a20, 0x19f67: 0x6c488a20,
+-	0x19f68: 0x6c29b420, 0x19f69: 0x6c79d420, 0x19f6a: 0x6d34ce20, 0x19f6b: 0x6c697a20,
+-	0x19f6c: 0x6d2f9420, 0x19f6d: 0x6c03e820, 0x19f6e: 0x6c2f4420, 0x19f6f: 0x6c785220,
+-	0x19f70: 0x6cdf0e20, 0x19f71: 0x6c1bd620, 0x19f72: 0x6cd2a420, 0x19f73: 0x6d200820,
+-	0x19f74: 0x6cbfee20, 0x19f75: 0x6cb34620, 0x19f76: 0x6d12ba20, 0x19f77: 0x6c500e20,
+-	0x19f78: 0x6cd7bc20, 0x19f79: 0x6ce08a20, 0x19f7a: 0x6c1b7220, 0x19f7b: 0x6c820a20,
+-	0x19f7c: 0x6c2daa20, 0x19f7d: 0x6c5e6c20, 0x19f7e: 0x6c8a5c20, 0x19f7f: 0x6c529020,
+-	// Block 0x67e, offset 0x19f80
+-	0x19f80: 0x6c9ebe20, 0x19f81: 0x6d056020, 0x19f82: 0x6c982420, 0x19f83: 0x6c1a9020,
+-	0x19f84: 0x6c447c20, 0x19f85: 0x6d077820, 0x19f86: 0x6d108620, 0x19f87: 0x6d3ed820,
+-	0x19f88: 0x6c50b620, 0x19f89: 0x6c5fc220, 0x19f8a: 0x6c2e0820, 0x19f8b: 0x6c25b220,
+-	0x19f8c: 0x6ce70c20, 0x19f8d: 0x6c9fe620, 0x19f8e: 0x6c545a20, 0x19f8f: 0x6c856e20,
+-	0x19f90: 0x6ce91620, 0x19f91: 0x6cfe1620, 0x19f92: 0x6d2bc220, 0x19f93: 0x6cfa2a20,
+-	0x19f94: 0x6d12a020, 0x19f95: 0x6c937420, 0x19f96: 0x6d0aca20, 0x19f97: 0x6c96ee20,
+-	0x19f98: 0x6cab7420, 0x19f99: 0x6c5d5220, 0x19f9a: 0x6d13c220, 0x19f9b: 0x6c755420,
+-	0x19f9c: 0x6c1e1c20, 0x19f9d: 0x6c8c4420, 0x19f9e: 0x6cea1620, 0x19f9f: 0x6d1a2420,
+-	0x19fa0: 0x6c3a7e20, 0x19fa1: 0x6c08b820, 0x19fa2: 0x6cbdfe20, 0x19fa3: 0x6cbe0020,
+-	0x19fa4: 0x6c6ba820, 0x19fa5: 0x6c105c20, 0x19fa6: 0x6c3d1c20, 0x19fa7: 0x6c03ea20,
+-	0x19fa8: 0x6c339620, 0x19fa9: 0x6c3b0c20, 0x19faa: 0x6c354820, 0x19fab: 0x6c4dce20,
+-	0x19fac: 0x6ce62c20, 0x19fad: 0x6c792420, 0x19fae: 0x6cd74620, 0x19faf: 0x6cb6d020,
+-	0x19fb0: 0x6c52f020, 0x19fb1: 0x6d338620, 0x19fb2: 0x6d1aca20, 0x19fb3: 0x6cf3a020,
+-	0x19fb4: 0x6cf3a220, 0x19fb5: 0x6c178c20, 0x19fb6: 0x6ca55820, 0x19fb7: 0x6d093c20,
+-	0x19fb8: 0x6cf56a20, 0x19fb9: 0x6c20b420, 0x19fba: 0x6c309e20, 0x19fbb: 0x6cf1c820,
+-	0x19fbc: 0x6c544820, 0x19fbd: 0x6c529220, 0x19fbe: 0x6cf3a420, 0x19fbf: 0x6c433220,
+-	// Block 0x67f, offset 0x19fc0
+-	0x19fc0: 0x6d0bda20, 0x19fc1: 0x6c759420, 0x19fc2: 0x6c937620, 0x19fc3: 0x6c35d020,
+-	0x19fc4: 0x6c43c020, 0x19fc5: 0x6c99ce20, 0x19fc6: 0x6c270420, 0x19fc7: 0x6cb6d220,
+-	0x19fc8: 0x6c19b620, 0x19fc9: 0x6cf3a620, 0x19fca: 0x6c433420, 0x19fcb: 0x6c3d3820,
+-	0x19fcc: 0x6c698020, 0x19fcd: 0x6c529420, 0x19fce: 0x6c1b7820, 0x19fcf: 0x6cd0da20,
+-	0x19fd0: 0x6ca55a20, 0x19fd1: 0x6cea1820, 0x19fd2: 0x6c3f3220, 0x19fd3: 0x6d167820,
+-	0x19fd4: 0x6c270620, 0x19fd5: 0x6cab7620, 0x19fd6: 0x6c857c20, 0x19fd7: 0x6c077620,
+-	0x19fd8: 0x6d253820, 0x19fd9: 0x6c4c0e20, 0x19fda: 0x6cf21a20, 0x19fdb: 0x6cba9c20,
+-	0x19fdc: 0x6cf35020, 0x19fdd: 0x6c35da20, 0x19fde: 0x6cd19820, 0x19fdf: 0x6c731220,
+-	0x19fe0: 0x6cae4620, 0x19fe1: 0x6cf1ce20, 0x19fe2: 0x6ca55c20, 0x19fe3: 0x6c965a20,
+-	0x19fe4: 0x6c8e1c20, 0x19fe5: 0x6cc46020, 0x19fe6: 0x6d1e9420, 0x19fe7: 0x6c2bd420,
+-	0x19fe8: 0x6d385a20, 0x19fe9: 0x6cd31620, 0x19fea: 0x6d38fa20, 0x19feb: 0x6ce60e20,
+-	0x19fec: 0x6cf84420, 0x19fed: 0x6d16a820, 0x19fee: 0x6cb74220, 0x19fef: 0x6cb27420,
+-	0x19ff0: 0x6d3ef420, 0x19ff1: 0x6c46ea20, 0x19ff2: 0x6c21f420, 0x19ff3: 0x6cf07220,
+-	0x19ff4: 0x6d062a20, 0x19ff5: 0x6c000420, 0x19ff6: 0x6ca49220, 0x19ff7: 0x6c40be20,
+-	0x19ff8: 0x6cadac20, 0x19ff9: 0x6d16aa20, 0x19ffa: 0x6cfe8220, 0x19ffb: 0x6ccfa820,
+-	0x19ffc: 0x6c549820, 0x19ffd: 0x6ca04020, 0x19ffe: 0x6c267a20, 0x19fff: 0x6cc26220,
+-	// Block 0x680, offset 0x1a000
+-	0x1a000: 0x6c71a220, 0x1a001: 0x6c4dd420, 0x1a002: 0x6d288820, 0x1a003: 0x6ceaa820,
+-	0x1a004: 0x6c341a20, 0x1a005: 0x6cb3ec20, 0x1a006: 0x6cad4620, 0x1a007: 0x6c0cdc20,
+-	0x1a008: 0x6c3de020, 0x1a009: 0x6d0f4420, 0x1a00a: 0x6c50be20, 0x1a00b: 0x6d28e820,
+-	0x1a00c: 0x6c50c020, 0x1a00d: 0x6c4d0c20, 0x1a00e: 0x6c6fd420, 0x1a00f: 0x6d1e1220,
+-	0x1a010: 0x6c40aa20, 0x1a011: 0x6c264020, 0x1a012: 0x6d38fc20, 0x1a013: 0x6cec1220,
+-	0x1a014: 0x6c760c20, 0x1a015: 0x6c483220, 0x1a016: 0x6c760e20, 0x1a017: 0x6d42b820,
+-	0x1a018: 0x6c106020, 0x1a019: 0x6c8f6a20, 0x1a01a: 0x6c2fda20, 0x1a01b: 0x6ca8f420,
+-	0x1a01c: 0x6cdefe20, 0x1a01d: 0x6cd7c820, 0x1a01e: 0x6cfc7820, 0x1a01f: 0x6c5da420,
+-	0x1a020: 0x6cb75020, 0x1a021: 0x6c37c020, 0x1a022: 0x6c35e420, 0x1a023: 0x6c49da20,
+-	0x1a024: 0x6d2cb220, 0x1a025: 0x6cf85420, 0x1a026: 0x6d148a20, 0x1a027: 0x6c8b9220,
+-	0x1a028: 0x6d3e0a20, 0x1a029: 0x6c9ec020, 0x1a02a: 0x6c9c2e20, 0x1a02b: 0x6d34fa20,
+-	0x1a02c: 0x6d119420, 0x1a02d: 0x6c5e9220, 0x1a02e: 0x6d390a20, 0x1a02f: 0x6c437820,
+-	0x1a030: 0x6cd5a820, 0x1a031: 0x6d295e20, 0x1a032: 0x6cffd620, 0x1a033: 0x6c4d0e20,
+-	0x1a034: 0x6c5a8e20, 0x1a035: 0x6c7ad420, 0x1a036: 0x6c580c20, 0x1a037: 0x6ce20820,
+-	0x1a038: 0x6cfb3020, 0x1a039: 0x6c35e620, 0x1a03a: 0x6d084220, 0x1a03b: 0x6d04ba20,
+-	0x1a03c: 0x6c4c1020, 0x1a03d: 0x6d0e4220, 0x1a03e: 0x6c81a020, 0x1a03f: 0x6d13ce20,
+-	// Block 0x681, offset 0x1a040
+-	0x1a040: 0x6c001620, 0x1a041: 0x6cb23820, 0x1a042: 0x6cd04a20, 0x1a043: 0x6ce72020,
+-	0x1a044: 0x6c529a20, 0x1a045: 0x6d045c20, 0x1a046: 0x6c341c20, 0x1a047: 0x6cec4c20,
+-	0x1a048: 0x6c4cf820, 0x1a049: 0x6d28f820, 0x1a04a: 0x6d201e20, 0x1a04b: 0x6c2f3020,
+-	0x1a04c: 0x6cac1c20, 0x1a04d: 0x6cfddc20, 0x1a04e: 0x6c001420, 0x1a04f: 0x6c449c20,
+-	0x1a050: 0x6c7b8c20, 0x1a051: 0x6d0b4a20, 0x1a052: 0x6c264220, 0x1a053: 0x6cfe8a20,
+-	0x1a054: 0x6c094220, 0x1a055: 0x6c5b9620, 0x1a056: 0x6ca77420, 0x1a057: 0x6c570a20,
+-	0x1a058: 0x6d044220, 0x1a059: 0x6c7b1820, 0x1a05a: 0x6c347620, 0x1a05b: 0x6c3b1c20,
+-	0x1a05c: 0x6c619c20, 0x1a05d: 0x6ca9b220, 0x1a05e: 0x6ca1ba20, 0x1a05f: 0x6d1d7620,
+-	0x1a060: 0x6c502420, 0x1a061: 0x6d254e20, 0x1a062: 0x6c905620, 0x1a063: 0x6cb3ee20,
+-	0x1a064: 0x6c984820, 0x1a065: 0x6c438020, 0x1a066: 0x6cab2820, 0x1a067: 0x6c1a9a20,
+-	0x1a068: 0x6ccece20, 0x1a069: 0x6c87dc20, 0x1a06a: 0x6ca2f420, 0x1a06b: 0x6d40ae20,
+-	0x1a06c: 0x6c50ea20, 0x1a06d: 0x6c7a3420, 0x1a06e: 0x6cfe9220, 0x1a06f: 0x6cfc9a20,
+-	0x1a070: 0x6c814820, 0x1a071: 0x6c0e5e20, 0x1a072: 0x6d302c20, 0x1a073: 0x6d2bd020,
+-	0x1a074: 0x6c89ac20, 0x1a075: 0x6c033620, 0x1a076: 0x6c9ec220, 0x1a077: 0x6c8ae220,
+-	0x1a078: 0x6cdbb420, 0x1a079: 0x6c3e2a20, 0x1a07a: 0x6c103420, 0x1a07b: 0x6c4e9020,
+-	0x1a07c: 0x6c524620, 0x1a07d: 0x6c44f220, 0x1a07e: 0x6cd76820, 0x1a07f: 0x6c447420,
+-	// Block 0x682, offset 0x1a080
+-	0x1a080: 0x6d203620, 0x1a081: 0x6d0e4c20, 0x1a082: 0x6c46fc20, 0x1a083: 0x6c477020,
+-	0x1a084: 0x6c077820, 0x1a085: 0x6c4dec20, 0x1a086: 0x6cdd0c20, 0x1a087: 0x6c213820,
+-	0x1a088: 0x6d171c20, 0x1a089: 0x6c001820, 0x1a08a: 0x6c63ae20, 0x1a08b: 0x6ce84620,
+-	0x1a08c: 0x6cfb3220, 0x1a08d: 0x6cecf620, 0x1a08e: 0x6c85c420, 0x1a08f: 0x6cf5b220,
+-	0x1a090: 0x6ce0e820, 0x1a091: 0x6d428a20, 0x1a092: 0x6cc02420, 0x1a093: 0x6c17d420,
+-	0x1a094: 0x6cf3ac20, 0x1a095: 0x6d2a6e20, 0x1a096: 0x6d0b4c20, 0x1a097: 0x6c30a420,
+-	0x1a098: 0x6cb6e420, 0x1a099: 0x6c2b6020, 0x1a09a: 0x6cbe0c20, 0x1a09b: 0x6c96ba20,
+-	0x1a09c: 0x6ca0ee20, 0x1a09d: 0x6c461220, 0x1a09e: 0x6c30e620, 0x1a09f: 0x6cc26c20,
+-	0x1a0a0: 0x6c814a20, 0x1a0a1: 0x6c898c20, 0x1a0a2: 0x6cdd5420, 0x1a0a3: 0x6d2a7020,
+-	0x1a0a4: 0x6c58fe20, 0x1a0a5: 0x6c813620, 0x1a0a6: 0x6ccbd620, 0x1a0a7: 0x6c5ea020,
+-	0x1a0a8: 0x6d426820, 0x1a0a9: 0x6cf28420, 0x1a0aa: 0x6c3cca20, 0x1a0ab: 0x6c6cfc20,
+-	0x1a0ac: 0x6c56fc20, 0x1a0ad: 0x6cb77620, 0x1a0ae: 0x6cd45c20, 0x1a0af: 0x6ceefa20,
+-	0x1a0b0: 0x6cd64420, 0x1a0b1: 0x6c171020, 0x1a0b2: 0x6c374e20, 0x1a0b3: 0x6c85e620,
+-	0x1a0b4: 0x6cbb5620, 0x1a0b5: 0x6c017e20, 0x1a0b6: 0x6d2ab620, 0x1a0b7: 0x6d1d7820,
+-	0x1a0b8: 0x6ca75e20, 0x1a0b9: 0x6d208420, 0x1a0ba: 0x6ce4e620, 0x1a0bb: 0x6c7f4420,
+-	0x1a0bc: 0x6ccc4220, 0x1a0bd: 0x6cf5d820, 0x1a0be: 0x6ceba020, 0x1a0bf: 0x6c54b820,
+-	// Block 0x683, offset 0x1a0c0
+-	0x1a0c0: 0x6c003c20, 0x1a0c1: 0x6d2f6420, 0x1a0c2: 0x6caa1420, 0x1a0c3: 0x6c790220,
+-	0x1a0c4: 0x6d3d4420, 0x1a0c5: 0x6d3d4620, 0x1a0c6: 0x6cce0220, 0x1a0c7: 0x6c2c3a20,
+-	0x1a0c8: 0x6c524a20, 0x1a0c9: 0x6c8ba820, 0x1a0ca: 0x6c001020, 0x1a0cb: 0x6c112220,
+-	0x1a0cc: 0x6cfd6c20, 0x1a0cd: 0x6cea1e20, 0x1a0ce: 0x6cf43e20, 0x1a0cf: 0x6cf20620,
+-	0x1a0d0: 0x6c253020, 0x1a0d1: 0x6ccc4420, 0x1a0d2: 0x6c477a20, 0x1a0d3: 0x6cb6ec20,
+-	0x1a0d4: 0x6cb6ee20, 0x1a0d5: 0x6ce21620, 0x1a0d6: 0x6c287420, 0x1a0d7: 0x6c287620,
+-	0x1a0d8: 0x6d12e620, 0x1a0d9: 0x6d3f1020, 0x1a0da: 0x6c08d820, 0x1a0db: 0x6c253220,
+-	0x1a0dc: 0x6c1fc220, 0x1a0dd: 0x6c510220, 0x1a0de: 0x6d0b5020, 0x1a0df: 0x6cb6f420,
+-	0x1a0e0: 0x6d304820, 0x1a0e1: 0x6c39f620, 0x1a0e2: 0x6c898e20, 0x1a0e3: 0x6cfb5820,
+-	0x1a0e4: 0x6cafd820, 0x1a0e5: 0x6ccc4620, 0x1a0e6: 0x6c7ed420, 0x1a0e7: 0x6d2ab820,
+-	0x1a0e8: 0x6d1baa20, 0x1a0e9: 0x6c48ae20, 0x1a0ea: 0x6cabc220, 0x1a0eb: 0x6d30d620,
+-	0x1a0ec: 0x6ccb2020, 0x1a0ed: 0x6d3bc220, 0x1a0ee: 0x6ca81020, 0x1a0ef: 0x6c4cf620,
+-	0x1a0f0: 0x6c953020, 0x1a0f1: 0x6d0bf020, 0x1a0f2: 0x6c2c3c20, 0x1a0f3: 0x6cc2d220,
+-	0x1a0f4: 0x6c15a420, 0x1a0f5: 0x6c100620, 0x1a0f6: 0x6c2fa020, 0x1a0f7: 0x6c809e20,
+-	0x1a0f8: 0x6cffe420, 0x1a0f9: 0x6c710c20, 0x1a0fa: 0x6ce0f220, 0x1a0fb: 0x6c1c1a20,
+-	0x1a0fc: 0x6ce31e20, 0x1a0fd: 0x6c016c20, 0x1a0fe: 0x6c6f7020, 0x1a0ff: 0x6c288620,
+-	// Block 0x684, offset 0x1a100
+-	0x1a100: 0x6c761020, 0x1a101: 0x6d1df420, 0x1a102: 0x6cf08a20, 0x1a103: 0x6ca3fc20,
+-	0x1a104: 0x6ccd8a20, 0x1a105: 0x6d232a20, 0x1a106: 0x6d305820, 0x1a107: 0x6c7e6220,
+-	0x1a108: 0x6c6a0820, 0x1a109: 0x6c53f820, 0x1a10a: 0x6c4e5820, 0x1a10b: 0x6c2e9820,
+-	0x1a10c: 0x6d388220, 0x1a10d: 0x6c147e20, 0x1a10e: 0x6cec5220, 0x1a10f: 0x6caaec20,
+-	0x1a110: 0x6d230020, 0x1a111: 0x6d19d820, 0x1a112: 0x6d28b820, 0x1a113: 0x6d10a220,
+-	0x1a114: 0x6cab2420, 0x1a115: 0x6c9e2020, 0x1a116: 0x6c555220, 0x1a117: 0x6d27e820,
+-	0x1a118: 0x6c201e20, 0x1a119: 0x6c5bbc20, 0x1a11a: 0x6c591a20, 0x1a11b: 0x6c591c20,
+-	0x1a11c: 0x6cf7e620, 0x1a11d: 0x6c509c20, 0x1a11e: 0x6c5ec220, 0x1a11f: 0x6c7cf420,
+-	0x1a120: 0x6d37ee20, 0x1a121: 0x6cef0620, 0x1a122: 0x6ccc5220, 0x1a123: 0x6d06cc20,
+-	0x1a124: 0x6c59ba20, 0x1a125: 0x6c344a20, 0x1a126: 0x6ca82620, 0x1a127: 0x6d079020,
+-	0x1a128: 0x6c89b420, 0x1a129: 0x6d232c20, 0x1a12a: 0x6cca9e20, 0x1a12b: 0x6c1aae20,
+-	0x1a12c: 0x6cbbe020, 0x1a12d: 0x6d0e6a20, 0x1a12e: 0x6c27dc20, 0x1a12f: 0x6cae4a20,
+-	0x1a130: 0x6c116820, 0x1a131: 0x6c83d020, 0x1a132: 0x6d1d7a20, 0x1a133: 0x6d2bd620,
+-	0x1a134: 0x6cee7c20, 0x1a135: 0x6c9e6c20, 0x1a136: 0x6d1c6220, 0x1a137: 0x6cae3220,
+-	0x1a138: 0x6c103820, 0x1a139: 0x6c7c7420, 0x1a13a: 0x6cf88420, 0x1a13b: 0x6d232e20,
+-	0x1a13c: 0x6c6ac420, 0x1a13d: 0x6c912820, 0x1a13e: 0x6c7a9620, 0x1a13f: 0x6d2a8220,
+-	// Block 0x685, offset 0x1a140
+-	0x1a140: 0x6c56a220, 0x1a141: 0x6ce33c20, 0x1a142: 0x6d110420, 0x1a143: 0x6c51ca20,
+-	0x1a144: 0x6c000e20, 0x1a145: 0x6d054220, 0x1a146: 0x6cbabe20, 0x1a147: 0x6ccb2e20,
+-	0x1a148: 0x6d1d8a20, 0x1a149: 0x6cdabe20, 0x1a14a: 0x6c53a620, 0x1a14b: 0x6d00b220,
+-	0x1a14c: 0x6c00a220, 0x1a14d: 0x6cdd2420, 0x1a14e: 0x6c96f020, 0x1a14f: 0x6c139620,
+-	0x1a150: 0x6c4d6c20, 0x1a151: 0x6c780420, 0x1a152: 0x6c264c20, 0x1a153: 0x6cca7e20,
+-	0x1a154: 0x6c187220, 0x1a155: 0x6cc81820, 0x1a156: 0x6cd9aa20, 0x1a157: 0x6cebdc20,
+-	0x1a158: 0x6c5ee420, 0x1a159: 0x6cad1c20, 0x1a15a: 0x6cf36e20, 0x1a15b: 0x6cba1020,
+-	0x1a15c: 0x6cd39820, 0x1a15d: 0x6c440020, 0x1a15e: 0x6d3e3220, 0x1a15f: 0x6c6a0a20,
+-	0x1a160: 0x6c960c20, 0x1a161: 0x6cf22820, 0x1a162: 0x6cec3420, 0x1a163: 0x6cd8c820,
+-	0x1a164: 0x6c1ab420, 0x1a165: 0x6c4fca20, 0x1a166: 0x6cddd820,
+-	0x1a168: 0x6c4d1620, 0x1a169: 0x6cdd7020, 0x1a16a: 0x6cbd7e20, 0x1a16b: 0x6ca83820,
+-	0x1a16c: 0x6c50a020, 0x1a16d: 0x6d347020, 0x1a16e: 0x6cc9e220, 0x1a16f: 0x6ca2c620,
+-	0x1a170: 0x6c448a20, 0x1a171: 0x6ca2e420, 0x1a172: 0x6c2cb820, 0x1a173: 0x6c002c20,
+-	0x1a174: 0x6cbb6220, 0x1a175: 0x6ce6f620, 0x1a176: 0x6c09c220, 0x1a177: 0x6c024a20,
+-	0x1a178: 0x6c024c20, 0x1a179: 0x6c880c20, 0x1a17a: 0x6d417420, 0x1a17b: 0x6d300020,
+-	0x1a17c: 0x6ca12420, 0x1a17d: 0x6cda4620, 0x1a17e: 0x6cda2020, 0x1a17f: 0x6ce06820,
+-	// Block 0x686, offset 0x1a180
+-	0x1a180: 0x6c2b7820, 0x1a181: 0x6cb50820, 0x1a182: 0x6c69aa20, 0x1a183: 0x6c1cd020,
+-	0x1a184: 0x6c685a20, 0x1a185: 0x6c765620, 0x1a186: 0x6ce0a020, 0x1a187: 0x6cccf820,
+-	0x1a188: 0x6c127820, 0x1a189: 0x6c637620, 0x1a18a: 0x6c004620, 0x1a18b: 0x6cfee620,
+-	0x1a18c: 0x6cb1b420, 0x1a18d: 0x6c912a20, 0x1a18e: 0x6c40c020, 0x1a18f: 0x6c47aa20,
+-	0x1a190: 0x6cfee820, 0x1a191: 0x6c54e220, 0x1a192: 0x6c5bf220, 0x1a193: 0x6c4c2c20,
+-	0x1a194: 0x6cab8220, 0x1a195: 0x6cfabc20, 0x1a196: 0x6d2ad820, 0x1a197: 0x6c16b420,
+-	0x1a198: 0x6d05b820, 0x1a199: 0x6cb32e20, 0x1a19a: 0x6c2a5c20, 0x1a19b: 0x6c96f420,
+-	0x1a19c: 0x6c96ca20, 0x1a19d: 0x6c557820, 0x1a19e: 0x6c836c20, 0x1a19f: 0x6c317220,
+-	0x1a1a0: 0x6c40c220, 0x1a1a1: 0x6ce0c420, 0x1a1a2: 0x6d12ae20, 0x1a1a3: 0x6c07fe20,
+-	0x1a1a4: 0x6d1bcc20, 0x1a1a5: 0x6cc9f020, 0x1a1a6: 0x6c69ac20, 0x1a1a7: 0x6c9d6420,
+-	0x1a1a8: 0x6cfffc20, 0x1a1a9: 0x6c571220, 0x1a1aa: 0x6c971620, 0x1a1ab: 0x6cc48020,
+-	0x1a1ac: 0x6c1fc420, 0x1a1ad: 0x6cae7e20, 0x1a1ae: 0x6c816420, 0x1a1af: 0x6d000420,
+-	0x1a1b0: 0x6c5f1020, 0x1a1b1: 0x6d3a7c20, 0x1a1b2: 0x6c177020, 0x1a1b3: 0x6c7d0820,
+-	0x1a1b4: 0x6d419820, 0x1a1b5: 0x6cfefe20, 0x1a1b6: 0x6cd80c20, 0x1a1b7: 0x6c4fdc20,
+-	0x1a1b8: 0x6c3f7e20, 0x1a1b9: 0x6c8a0020, 0x1a1ba: 0x6cbbe820, 0x1a1bb: 0x6cf68e20,
+-	0x1a1bc: 0x6c1f6a20, 0x1a1bd: 0x6c15d020, 0x1a1be: 0x6c28a420, 0x1a1bf: 0x6c521e20,
+-	// Block 0x687, offset 0x1a1c0
+-	0x1a1c0: 0x6d0aa020, 0x1a1c1: 0x6c35b620, 0x1a1c2: 0x6d420a20, 0x1a1c3: 0x6c385420,
+-	0x1a1c4: 0x6c1acc20, 0x1a1c5: 0x6c5ae220, 0x1a1c6: 0x6d297220, 0x1a1c7: 0x6c207420,
+-	0x1a1c8: 0x6c245220, 0x1a1c9: 0x6c289c20, 0x1a1ca: 0x6d23ba20, 0x1a1cb: 0x6cea2420,
+-	0x1a1cc: 0x6c134a20, 0x1a1cd: 0x6c69b620, 0x1a1ce: 0x6d126220, 0x1a1cf: 0x6cf69020,
+-	0x1a1d0: 0x6cb7be20, 0x1a1d1: 0x6c4fd020, 0x1a1d2: 0x6c882e20, 0x1a1d3: 0x6d05ca20,
+-	0x1a1d4: 0x6c2aa420, 0x1a1d5: 0x6c5ae820, 0x1a1d6: 0x6d1a8c20, 0x1a1d7: 0x6cb40c20,
+-	0x1a1d8: 0x6c73b220, 0x1a1d9: 0x6cbd9220, 0x1a1da: 0x6d0a2e20, 0x1a1db: 0x6ca85a20,
+-	0x1a1dc: 0x6c912c20, 0x1a1dd: 0x6cd80e20, 0x1a1de: 0x6d0dd420, 0x1a1df: 0x6d1d4820,
+-	0x1a1e0: 0x6c265e20, 0x1a1e1: 0x6d2d9420, 0x1a1e2: 0x6cab2620, 0x1a1e3: 0x6d394e20,
+-	0x1a1e4: 0x6c6d4820, 0x1a1e5: 0x6ca9c420, 0x1a1e6: 0x6c5c2620, 0x1a1e7: 0x6d01f420,
+-	0x1a1e8: 0x6cb7ce20, 0x1a1e9: 0x6c36a620, 0x1a1ea: 0x6d2a8e20, 0x1a1eb: 0x6d140e20,
+-	0x1a1ec: 0x6cd3d620, 0x1a1ed: 0x6c69c220, 0x1a1ee: 0x6d263020, 0x1a1ef: 0x6c003420,
+-	0x1a1f0: 0x6d1dac20, 0x1a1f1: 0x6c74b420, 0x1a1f2: 0x6c7b3820, 0x1a1f3: 0x6d228a20,
+-	0x1a1f4: 0x6cae3420, 0x1a1f5: 0x6c2a2820, 0x1a1f6: 0x6c40c820, 0x1a1f7: 0x6c528e20,
+-	0x1a1f8: 0x6c33aa20, 0x1a1f9: 0x6c290220, 0x1a1fa: 0x6d036420, 0x1a1fb: 0x6cc9cc20,
+-	0x1a1fc: 0x6caf8e20, 0x1a1fd: 0x6cb07220, 0x1a1fe: 0x6d1a0e20, 0x1a1ff: 0x6d41a020,
+-	// Block 0x688, offset 0x1a200
+-	0x1a200: 0x6ca92020, 0x1a201: 0x6c2b9620, 0x1a202: 0x6c807820, 0x1a203: 0x6cddfa20,
+-	0x1a204: 0x6c5d5e20, 0x1a205: 0x6cc7cc20, 0x1a206: 0x6c4fac20, 0x1a207: 0x6cfa4820,
+-	0x1a208: 0x6d135220, 0x1a209: 0x6c343820, 0x1a20a: 0x6cb0be20, 0x1a20b: 0x6c1de020,
+-	0x1a20c: 0x6c629020, 0x1a20d: 0x6c6d5620, 0x1a20e: 0x6c4fec20, 0x1a20f: 0x6ce42820,
+-	0x1a210: 0x6c16ca20, 0x1a211: 0x6d0ac220, 0x1a212: 0x6c99c620, 0x1a213: 0x6c10d820,
+-	0x1a214: 0x6ce43820, 0x1a215: 0x6c91e420, 0x1a216: 0x6c5c6420, 0x1a217: 0x6c0f8820,
+-	0x1a218: 0x6d1eba20, 0x1a219: 0x6ca88620, 0x1a21a: 0x6d1a9e20, 0x1a21b: 0x6c56d620,
+-	0x1a21c: 0x6c99ca20, 0x1a21d: 0x6c52d220, 0x1a21e: 0x6d30a820, 0x1a21f: 0x6c846c20,
+-	0x1a220: 0x6c8eb220, 0x1a221: 0x6c4d8e20, 0x1a222: 0x6ca45620, 0x1a223: 0x6cff2e20,
+-	0x1a224: 0x6ca08220, 0x1a225: 0x6d0ee620, 0x1a226: 0x6c86e820, 0x1a227: 0x6c916820,
+-	0x1a228: 0x6c8fba20, 0x1a229: 0x6ca08c20, 0x1a22a: 0x6c28dc20, 0x1a22b: 0x6c193a20,
+-	0x1a22c: 0x6cb21e20, 0x1a22d: 0x6cb07c20, 0x1a22e: 0x6cfe5c20, 0x1a22f: 0x6c5e2420,
+-	0x1a230: 0x6ca08e20, 0x1a231: 0x6cf91e20, 0x1a232: 0x6c34c220, 0x1a233: 0x6c7ab220,
+-	0x1a234: 0x6d0ce820, 0x1a235: 0x6c154e20, 0x1a236: 0x6d1c1820, 0x1a237: 0x6cc50420,
+-	0x1a238: 0x6c2d3020, 0x1a239: 0x6c7ede20, 0x1a23a: 0x6cded620, 0x1a23b: 0x6cff4c20,
+-	0x1a23c: 0x6c74fc20, 0x1a23d: 0x6c21e420, 0x1a23e: 0x6c583c20, 0x1a23f: 0x6c5e3c20,
+-	// Block 0x689, offset 0x1a240
+-	0x1a240: 0x6d3bfe20, 0x1a241: 0x6ca8aa20, 0x1a242: 0x6cff4e20, 0x1a243: 0x6c10ee20,
+-	0x1a244: 0x6c84a420, 0x1a245: 0x6c161620, 0x1a246: 0x6c14a820, 0x1a247: 0x6c876020,
+-	0x1a248: 0x6d194020, 0x1a249: 0x6c953620, 0x1a24a: 0x6ca45e20, 0x1a24b: 0x6d28dc20,
+-	0x1a24c: 0x6cda6e20, 0x1a24d: 0x6cf82420, 0x1a24e: 0x6d2b7e20, 0x1a24f: 0x6c654e20,
+-	0x1a250: 0x6d28de20, 0x1a251: 0x6d3a8e20, 0x1a252: 0x6c800620, 0x1a253: 0x6ca8c220,
+-	0x1a254: 0x6ca45220, 0x1a255: 0x6c806220, 0x1a256: 0x6c8f6420, 0x1a257: 0x6ceed620,
+-	0x1a258: 0x6c5b1220, 0x1a259: 0x6d199c20, 0x1a25a: 0x6cbff020, 0x1a25b: 0x6cd87420,
+-	0x1a25c: 0x6ca8e220, 0x1a25d: 0x6c656220, 0x1a25e: 0x6c5b1420, 0x1a25f: 0x6d031420,
+-	0x1a260: 0x6d199e20, 0x1a261: 0x6ca3dc20, 0x1a262: 0x6ce94420, 0x1a263: 0x6ce94620,
+-	0x1a264: 0x6c33d620, 0x1a265: 0x6c777c20, 0x1a266: 0x6d24c620, 0x1a267: 0x6c6ef420,
+-	0x1a268: 0x6cb0ec20, 0x1a269: 0x6d277c20, 0x1a26a: 0x6c22f620, 0x1a26b: 0x6c551c20,
+-	0x1a26c: 0x6c5b1820, 0x1a26d: 0x6d253a20, 0x1a26e: 0x6c354a20, 0x1a26f: 0x6c4c5620,
+-	0x1a270: 0x6c7dca20, 0x1a271: 0x6c22f820, 0x1a272: 0x6ce6ee20, 0x1a273: 0x6ce88420,
+-	0x1a274: 0x6ceedc20, 0x1a275: 0x6c94d820, 0x1a276: 0x6c4c5a20, 0x1a277: 0x6cc43020,
+-	0x1a278: 0x6cc64020, 0x1a279: 0x6c8c9e20, 0x1a27a: 0x6c47fe20, 0x1a27b: 0x6c4c5c20,
+-	0x1a27c: 0x6cdf0020, 0x1a27d: 0x6c4c5e20, 0x1a27e: 0x6ce88820, 0x1a27f: 0x6d202020,
+-	// Block 0x68a, offset 0x1a280
+-	0x1a280: 0x6c4c6220, 0x1a281: 0x6d1a4220, 0x1a282: 0x6c5d2020, 0x1a283: 0x6cb48620,
+-	0x1a284: 0x6d223820, 0x1a285: 0x6c4dee20, 0x1a286: 0x6d255020, 0x1a287: 0x6c94ea20,
+-	0x1a288: 0x6cc29620, 0x1a289: 0x6d224820, 0x1a28a: 0x6cbe3e20, 0x1a28b: 0x6c4c6620,
+-	0x1a28c: 0x6c1ffa20, 0x1a28d: 0x6cef0820, 0x1a28e: 0x6d256020, 0x1a28f: 0x6cc29a20,
+-	0x1a290: 0x6c7a4020, 0x1a291: 0x6c400a20, 0x1a292: 0x6d257420, 0x1a293: 0x6d257620,
+-	0x1a294: 0x6d0bbc20, 0x1a295: 0x6ce8b620, 0x1a296: 0x6ce8d420, 0x1a297: 0x6ce8d620,
+-	0x1a298: 0x6ce95020, 0x1a299: 0x6c94b820, 0x1a29a: 0x6c5c0c20, 0x1a29b: 0x6d188220,
+-	0x1a29c: 0x6c589220, 0x1a29d: 0x6c944a20, 0x1a29e: 0x6c946e20, 0x1a29f: 0x6ce91020,
+-	0x1a2a0: 0x6d0b6620, 0x1a2a1: 0x6ce91220, 0x1a2a2: 0x6ce6aa20, 0x1a2a3: 0x6cd15220,
+-	0x1a2a4: 0x6cb48020, 0x1a2a5: 0x6c920c20, 0x1a2a6: 0x6c7b5020, 0x1a2a7: 0x6d0ac620,
+-	0x1a2a8: 0x6d292820, 0x1a2a9: 0x6ceeda20, 0x1a2aa: 0x6c436620, 0x1a2ab: 0x6d22be20,
+-	0x1a2ac: 0x6cf34020, 0x1a2ad: 0x6c4a3420, 0x1a2ae: 0x6cb04820, 0x1a2af: 0x6d145020,
+-	0x1a2b0: 0x6c2a8a20, 0x1a2b1: 0x6cb89220, 0x1a2b2: 0x6cb89420, 0x1a2b3: 0x6d320e20,
+-	0x1a2b4: 0x6d3d1a20, 0x1a2b5: 0x6c295220, 0x1a2b6: 0x6cb83e20, 0x1a2b7: 0x6cfa6220,
+-	0x1a2b8: 0x6ccdf620, 0x1a2b9: 0x6c7bd820, 0x1a2ba: 0x6c16e220, 0x1a2bb: 0x6cb56e20,
+-	0x1a2bc: 0x6ca7f220, 0x1a2bd: 0x6ca0c220, 0x1a2be: 0x6c5e7620, 0x1a2bf: 0x6c639820,
+-	// Block 0x68b, offset 0x1a2c0
+-	0x1a2c0: 0x6d34dc20, 0x1a2c1: 0x6d34de20, 0x1a2c2: 0x6c04b420, 0x1a2c3: 0x6d098e20,
+-	0x1a2c4: 0x6d167a20, 0x1a2c5: 0x6cbdc620, 0x1a2c6: 0x6c99d020, 0x1a2c7: 0x6c755620,
+-	0x1a2c8: 0x6cc6f220, 0x1a2c9: 0x6cea3c20, 0x1a2ca: 0x6c39e820, 0x1a2cb: 0x6c07a420,
+-	0x1a2cc: 0x6c07a620, 0x1a2cd: 0x6cdf8820, 0x1a2ce: 0x6c76be20, 0x1a2cf: 0x6c580a20,
+-	0x1a2d0: 0x6d427620, 0x1a2d1: 0x6c792620, 0x1a2d2: 0x6c091820, 0x1a2d3: 0x6c6e0a20,
+-	0x1a2d4: 0x6c2c1220, 0x1a2d5: 0x6c6d8620, 0x1a2d6: 0x6c617c20, 0x1a2d7: 0x6c7b0c20,
+-	0x1a2d8: 0x6c2bcc20, 0x1a2d9: 0x6c6d8820, 0x1a2da: 0x6c646220, 0x1a2db: 0x6cdfca20,
+-	0x1a2dc: 0x6c857e20, 0x1a2dd: 0x6c03a620, 0x1a2de: 0x6cf4a420, 0x1a2df: 0x6c3b5020,
+-	0x1a2e0: 0x6d3c7a20, 0x1a2e1: 0x6cb2f620, 0x1a2e2: 0x6c04e220, 0x1a2e3: 0x6ce0bc20,
+-	0x1a2e4: 0x6c7d4a20, 0x1a2e5: 0x6cc0da20, 0x1a2e6: 0x6ce05220, 0x1a2e7: 0x6d339420,
+-	0x1a2e8: 0x6ceaea20, 0x1a2e9: 0x6c417020, 0x1a2ea: 0x6cb27620, 0x1a2eb: 0x6c2d3a20,
+-	0x1a2ec: 0x6c48a820, 0x1a2ed: 0x6ca5ba20, 0x1a2ee: 0x6cdf1420, 0x1a2ef: 0x6caf3020,
+-	0x1a2f0: 0x6c6ed620, 0x1a2f1: 0x6d100020, 0x1a2f2: 0x6c3d0a20, 0x1a2f3: 0x6c02c420,
+-	0x1a2f4: 0x6c921820, 0x1a2f5: 0x6cbf9c20, 0x1a2f6: 0x6ca22620, 0x1a2f7: 0x6c785420,
+-	0x1a2f8: 0x6c469220, 0x1a2f9: 0x6d094020, 0x1a2fa: 0x6c036220, 0x1a2fb: 0x6c1b0420,
+-	0x1a2fc: 0x6c180020, 0x1a2fd: 0x6c8ca020, 0x1a2fe: 0x6d3aaa20, 0x1a2ff: 0x6c3fb020,
+-	// Block 0x68c, offset 0x1a300
+-	0x1a300: 0x6c549a20, 0x1a301: 0x6d358420, 0x1a302: 0x6c20be20, 0x1a303: 0x6c7e3a20,
+-	0x1a304: 0x6c902e20, 0x1a305: 0x6c903020, 0x1a306: 0x6c913820, 0x1a307: 0x6c02c620,
+-	0x1a308: 0x6c272e20, 0x1a309: 0x6cad4820, 0x1a30a: 0x6c9fe220, 0x1a30b: 0x6d03ca20,
+-	0x1a30c: 0x6c305620, 0x1a30d: 0x6c619e20, 0x1a30e: 0x6c51ba20, 0x1a30f: 0x6c93ce20,
+-	0x1a310: 0x6c222820, 0x1a311: 0x6c1b8220, 0x1a312: 0x6c82ba20, 0x1a313: 0x6c40e420,
+-	0x1a314: 0x6d19aa20, 0x1a315: 0x6c546220, 0x1a316: 0x6c32f420, 0x1a317: 0x6d2f9c20,
+-	0x1a318: 0x6c3e0820, 0x1a319: 0x6c49dc20, 0x1a31a: 0x6d10d420, 0x1a31b: 0x6c347820,
+-	0x1a31c: 0x6c347a20, 0x1a31d: 0x6c4ad020, 0x1a31e: 0x6c13ca20, 0x1a31f: 0x6d0f8e20,
+-	0x1a320: 0x6d1a3820, 0x1a321: 0x6c37fe20, 0x1a322: 0x6c469a20, 0x1a323: 0x6d254420,
+-	0x1a324: 0x6c2e6a20, 0x1a325: 0x6d007620, 0x1a326: 0x6c78fa20, 0x1a327: 0x6cce3220,
+-	0x1a328: 0x6cd43e20, 0x1a329: 0x6c35ec20, 0x1a32a: 0x6c0e4020, 0x1a32b: 0x6c2d4020,
+-	0x1a32c: 0x6c530c20, 0x1a32d: 0x6d0ad820, 0x1a32e: 0x6c7ad620, 0x1a32f: 0x6c26f820,
+-	0x1a330: 0x6c762020, 0x1a331: 0x6c295a20, 0x1a332: 0x6c764a20, 0x1a333: 0x6c4f9e20,
+-	0x1a334: 0x6ca4dc20, 0x1a335: 0x6c017820, 0x1a336: 0x6d036c20, 0x1a337: 0x6cfc9c20,
+-	0x1a338: 0x6d260820, 0x1a339: 0x6c051a20, 0x1a33a: 0x6c3d5a20, 0x1a33b: 0x6c03ae20,
+-	0x1a33c: 0x6d172020, 0x1a33d: 0x6d1b4220, 0x1a33e: 0x6c4e9220, 0x1a33f: 0x6d06a020,
+-	// Block 0x68d, offset 0x1a340
+-	0x1a340: 0x6c20c420, 0x1a341: 0x6cbd6220, 0x1a342: 0x6c44f420, 0x1a343: 0x6c001c20,
+-	0x1a344: 0x6c081620, 0x1a345: 0x6c39aa20, 0x1a346: 0x6cc3a820, 0x1a347: 0x6d1e2020,
+-	0x1a348: 0x6c75a020, 0x1a349: 0x6c633e20, 0x1a34a: 0x6c2c2a20, 0x1a34b: 0x6c96fa20,
+-	0x1a34c: 0x6c811420, 0x1a34d: 0x6c731820, 0x1a34e: 0x6c19c620, 0x1a34f: 0x6ccccc20,
+-	0x1a350: 0x6c6c3c20, 0x1a351: 0x6d303020, 0x1a352: 0x6c8ae420, 0x1a353: 0x6c8ae620,
+-	0x1a354: 0x6c107e20, 0x1a355: 0x6c19d820, 0x1a356: 0x6c57d820, 0x1a357: 0x6c108020,
+-	0x1a358: 0x6cd25a20, 0x1a359: 0x6d099420, 0x1a35a: 0x6c4c1820, 0x1a35b: 0x6c6eda20,
+-	0x1a35c: 0x6d12a820, 0x1a35d: 0x6ca76020, 0x1a35e: 0x6c2bee20, 0x1a35f: 0x6d230420,
+-	0x1a360: 0x6c109220, 0x1a361: 0x6d0ae820, 0x1a362: 0x6cc2d420, 0x1a363: 0x6cdc3420,
+-	0x1a364: 0x6cafdc20, 0x1a365: 0x6cbe4020, 0x1a366: 0x6cecfe20, 0x1a367: 0x6c723820,
+-	0x1a368: 0x6c951420, 0x1a369: 0x6d329220, 0x1a36a: 0x6c796e20, 0x1a36b: 0x6c1d3820,
+-	0x1a36c: 0x6c2fee20, 0x1a36d: 0x6c275a20, 0x1a36e: 0x6ce09220, 0x1a36f: 0x6c018020,
+-	0x1a370: 0x6c114220, 0x1a371: 0x6c1f2e20, 0x1a372: 0x6c081820, 0x1a373: 0x6c76ce20,
+-	0x1a374: 0x6d344c20, 0x1a375: 0x6c348420, 0x1a376: 0x6d175220, 0x1a377: 0x6d344e20,
+-	0x1a378: 0x6d175420, 0x1a379: 0x6cadd020, 0x1a37a: 0x6c5eb420, 0x1a37b: 0x6d3cdc20,
+-	0x1a37c: 0x6cb5b820, 0x1a37d: 0x6ccaee20, 0x1a37e: 0x6c723a20, 0x1a37f: 0x6ca5d420,
+-	// Block 0x68e, offset 0x1a380
+-	0x1a380: 0x6c7a3a20, 0x1a381: 0x6c78a020, 0x1a382: 0x6ce0ec20, 0x1a383: 0x6c7d5020,
+-	0x1a384: 0x6ca69620, 0x1a385: 0x6c648220, 0x1a386: 0x6c32fa20, 0x1a387: 0x6c6c8e20,
+-	0x1a388: 0x6c427620, 0x1a389: 0x6d230620, 0x1a38a: 0x6c360c20, 0x1a38b: 0x6cae9820,
+-	0x1a38c: 0x6c480820, 0x1a38d: 0x6ce92220, 0x1a38e: 0x6c839420, 0x1a38f: 0x6c39ea20,
+-	0x1a390: 0x6d0b2420, 0x1a391: 0x6cba4c20, 0x1a392: 0x6c7ddc20, 0x1a393: 0x6c01b620,
+-	0x1a394: 0x6cd0ca20, 0x1a395: 0x6c34e620, 0x1a396: 0x6ca4f220, 0x1a397: 0x6ce85c20,
+-	0x1a398: 0x6c19fa20, 0x1a399: 0x6d19da20, 0x1a39a: 0x6c5cea20, 0x1a39b: 0x6c099420,
+-	0x1a39c: 0x6c88f220, 0x1a39d: 0x6c4c1c20, 0x1a39e: 0x6c2e9a20, 0x1a39f: 0x6d3bc420,
+-	0x1a3a0: 0x6c547020, 0x1a3a1: 0x6c05fa20, 0x1a3a2: 0x6c05fc20, 0x1a3a3: 0x6d211420,
+-	0x1a3a4: 0x6c2b2e20, 0x1a3a5: 0x6c98e220, 0x1a3a6: 0x6c6a0c20, 0x1a3a7: 0x6cc83c20,
+-	0x1a3a8: 0x6d12ec20, 0x1a3a9: 0x6c452e20, 0x1a3aa: 0x6c76aa20, 0x1a3ab: 0x6d3f8020,
+-	0x1a3ac: 0x6d211620, 0x1a3ad: 0x6c59bc20, 0x1a3ae: 0x6c362c20, 0x1a3af: 0x6d10f620,
+-	0x1a3b0: 0x6d0e6c20, 0x1a3b1: 0x6c064c20, 0x1a3b2: 0x6c223620, 0x1a3b3: 0x6c99f620,
+-	0x1a3b4: 0x6c16ec20, 0x1a3b5: 0x6c321420, 0x1a3b6: 0x6ceb1c20, 0x1a3b7: 0x6d1b5020,
+-	0x1a3b8: 0x6c3ca620, 0x1a3b9: 0x6d382820, 0x1a3ba: 0x6c6be820, 0x1a3bb: 0x6c6c4420,
+-	0x1a3bc: 0x6c528820, 0x1a3bd: 0x6c428620, 0x1a3be: 0x6c210620, 0x1a3bf: 0x6c658e20,
+-	// Block 0x68f, offset 0x1a3c0
+-	0x1a3c0: 0x6cb2ec20, 0x1a3c1: 0x6c836a20, 0x1a3c2: 0x6cfe3220, 0x1a3c3: 0x6c599220,
+-	0x1a3c4: 0x6c837620, 0x1a3c5: 0x6c32c020, 0x1a3c6: 0x6cec8e20, 0x1a3c7: 0x6d079220,
+-	0x1a3c8: 0x6c61fe20, 0x1a3c9: 0x6c604a20, 0x1a3ca: 0x6c7b2420, 0x1a3cb: 0x6d1c7c20,
+-	0x1a3cc: 0x6cddee20, 0x1a3cd: 0x6c1a1620, 0x1a3ce: 0x6d1e4220, 0x1a3cf: 0x6c765c20,
+-	0x1a3d0: 0x6cdac020, 0x1a3d1: 0x6cdac220, 0x1a3d2: 0x6cd26e20, 0x1a3d3: 0x6c9d4e20,
+-	0x1a3d4: 0x6cde0820, 0x1a3d5: 0x6cf24e20, 0x1a3d6: 0x6c1a1820, 0x1a3d7: 0x6ce8b820,
+-	0x1a3d8: 0x6ce0fe20, 0x1a3d9: 0x6cc3c820, 0x1a3da: 0x6d37f420, 0x1a3db: 0x6c862a20,
+-	0x1a3dc: 0x6d37f620, 0x1a3dd: 0x6c057620, 0x1a3de: 0x6cc9c620, 0x1a3df: 0x6d2a0620,
+-	0x1a3e0: 0x6c330020, 0x1a3e1: 0x6ce4a820, 0x1a3e2: 0x6cf4f820, 0x1a3e3: 0x6d335020,
+-	0x1a3e4: 0x6d099c20, 0x1a3e5: 0x6c440420, 0x1a3e6: 0x6d324020, 0x1a3e7: 0x6c00a420,
+-	0x1a3e8: 0x6c459020, 0x1a3e9: 0x6d0ca620, 0x1a3ea: 0x6c76da20, 0x1a3eb: 0x6ce4aa20,
+-	0x1a3ec: 0x6d257820, 0x1a3ed: 0x6cf14e20, 0x1a3ee: 0x6d01be20, 0x1a3ef: 0x6c8f3220,
+-	0x1a3f0: 0x6c4d8c20, 0x1a3f1: 0x6c810220, 0x1a3f2: 0x6c16b620, 0x1a3f3: 0x6caea820,
+-	0x1a3f4: 0x6c084820, 0x1a3f5: 0x6c18da20, 0x1a3f6: 0x6c927820, 0x1a3f7: 0x6c91c620,
+-	0x1a3f8: 0x6cab3c20, 0x1a3f9: 0x6cba6220, 0x1a3fa: 0x6c9a1620, 0x1a3fb: 0x6ca12620,
+-	0x1a3fc: 0x6d3b8220, 0x1a3fd: 0x6cd6d420, 0x1a3fe: 0x6cd52e20, 0x1a3ff: 0x6c90e820,
+-	// Block 0x690, offset 0x1a400
+-	0x1a400: 0x6c1b4620, 0x1a401: 0x6c97e220, 0x1a402: 0x6c0c0620, 0x1a403: 0x6c6e9420,
+-	0x1a404: 0x6c130020, 0x1a405: 0x6cd5ee20, 0x1a406: 0x6d367a20, 0x1a407: 0x6d2ec020,
+-	0x1a408: 0x6c770a20, 0x1a409: 0x6d1d9620, 0x1a40a: 0x6c2d6e20, 0x1a40b: 0x6c190820,
+-	0x1a40c: 0x6d347c20, 0x1a40d: 0x6cf8ac20, 0x1a40e: 0x6c4c2420, 0x1a40f: 0x6cbb4620,
+-	0x1a410: 0x6c6d2220, 0x1a411: 0x6c2c7a20, 0x1a412: 0x6cce0a20, 0x1a413: 0x6ca29020,
+-	0x1a414: 0x6c24d220, 0x1a415: 0x6d0e9220, 0x1a416: 0x6cde1020, 0x1a417: 0x6d2b8220,
+-	0x1a418: 0x6cb9ac20, 0x1a419: 0x6cbb1020, 0x1a41a: 0x6c895e20, 0x1a41b: 0x6cf14220,
+-	0x1a41c: 0x6d3c9a20, 0x1a41d: 0x6cbb9820, 0x1a41e: 0x6d2b8620, 0x1a41f: 0x6d05ba20,
+-	0x1a420: 0x6ccd9a20, 0x1a421: 0x6ccd9c20, 0x1a422: 0x6c038e20, 0x1a423: 0x6cb44820,
+-	0x1a424: 0x6c7b3220, 0x1a425: 0x6c303220, 0x1a426: 0x6c38b020, 0x1a427: 0x6cc3e820,
+-	0x1a428: 0x6ca16020, 0x1a429: 0x6c33a020, 0x1a42a: 0x6c33a220, 0x1a42b: 0x6d41ea20,
+-	0x1a42c: 0x6c2c7c20, 0x1a42d: 0x6cd17220, 0x1a42e: 0x6c350820, 0x1a42f: 0x6c350e20,
+-	0x1a430: 0x6cdffc20, 0x1a431: 0x6c2ae020, 0x1a432: 0x6ca21820, 0x1a433: 0x6c3b8420,
+-	0x1a434: 0x6c59d820, 0x1a435: 0x6cdffe20, 0x1a436: 0x6c26fe20, 0x1a437: 0x6d12fa20,
+-	0x1a438: 0x6d3b5220, 0x1a439: 0x6c673a20, 0x1a43a: 0x6c02e420, 0x1a43b: 0x6cbb1e20,
+-	0x1a43c: 0x6c5f2c20, 0x1a43d: 0x6cbba220, 0x1a43e: 0x6c790a20, 0x1a43f: 0x6d188420,
+-	// Block 0x691, offset 0x1a440
+-	0x1a440: 0x6cb01a20, 0x1a441: 0x6c0a4420, 0x1a442: 0x6c2d7c20, 0x1a443: 0x6c677820,
+-	0x1a444: 0x6d12b420, 0x1a445: 0x6d1dae20, 0x1a446: 0x6d091620, 0x1a447: 0x6ce00c20,
+-	0x1a448: 0x6c803820, 0x1a449: 0x6c728820, 0x1a44a: 0x6c581420, 0x1a44b: 0x6c298e20,
+-	0x1a44c: 0x6cc50220, 0x1a44d: 0x6cba8020, 0x1a44e: 0x6d09ae20, 0x1a44f: 0x6cfd1820,
+-	0x1a450: 0x6cf81620, 0x1a451: 0x6c51ee20, 0x1a452: 0x6c00c620, 0x1a453: 0x6d0b0020,
+-	0x1a454: 0x6c29ee20, 0x1a455: 0x6c4fee20, 0x1a456: 0x6cc84a20, 0x1a457: 0x6c6d8220,
+-	0x1a458: 0x6c82e220, 0x1a459: 0x6c7c0620, 0x1a45a: 0x6c916a20, 0x1a45b: 0x6d0cea20,
+-	0x1a45c: 0x6ce03020, 0x1a45d: 0x6cf03820, 0x1a45e: 0x6c581820, 0x1a45f: 0x6c903e20,
+-	0x1a460: 0x6c904020, 0x1a461: 0x6cc8ec20, 0x1a462: 0x6c86ea20, 0x1a463: 0x6c8bfe20,
+-	0x1a464: 0x6cc50620, 0x1a465: 0x6c165c20, 0x1a466: 0x6d09c420, 0x1a467: 0x6d0d0c20,
+-	0x1a468: 0x6c829620, 0x1a469: 0x6c03da20, 0x1a46a: 0x6ceca620, 0x1a46b: 0x6cd2e220,
+-	0x1a46c: 0x6cc56020, 0x1a46d: 0x6cca6220, 0x1a46e: 0x6d3c2c20, 0x1a46f: 0x6d3c2e20,
+-	0x1a470: 0x6cd0dc20, 0x1a471: 0x6d13c620, 0x1a472: 0x6c972420, 0x1a473: 0x6c784a20,
+-	0x1a474: 0x6d3aba20, 0x1a475: 0x6d3c3620, 0x1a476: 0x6c553020, 0x1a477: 0x6c554020,
+-	0x1a478: 0x6c7da620, 0x1a479: 0x6d13ee20, 0x1a47a: 0x6c555420, 0x1a47b: 0x6d06d020,
+-	0x1a47c: 0x6c7db220, 0x1a47d: 0x6cd46e20, 0x1a47e: 0x6c989420, 0x1a47f: 0x6d41ec20,
+-	// Block 0x692, offset 0x1a480
+-	0x1a480: 0x6cd47020, 0x1a481: 0x6d141220, 0x1a482: 0x6d34ca20, 0x1a483: 0x6c474e20,
+-	0x1a484: 0x6c1f0220, 0x1a485: 0x6c67d220, 0x1a486: 0x6c3c9c20, 0x1a487: 0x6c06e020,
+-	0x1a488: 0x6d2d5820, 0x1a489: 0x6c0b8420, 0x1a48a: 0x6cdba620, 0x1a48b: 0x6cc42e20,
+-	0x1a48c: 0x6c8ca220, 0x1a48d: 0x6c3fc020, 0x1a48e: 0x6c261420, 0x1a48f: 0x6cfa3220,
+-	0x1a490: 0x6d049a20, 0x1a491: 0x6d02a020, 0x1a492: 0x6ca4cc20, 0x1a493: 0x6cfa5a20,
+-	0x1a494: 0x6c7cb420, 0x1a495: 0x6cf55a20, 0x1a496: 0x6cec6820, 0x1a497: 0x6d25f820,
+-	0x1a498: 0x6c992020, 0x1a499: 0x6cda7c20, 0x1a49a: 0x6c341620, 0x1a49b: 0x6c341820,
+-	0x1a49c: 0x6d12ca20, 0x1a49d: 0x6cbe6c20, 0x1a49e: 0x6cec6e20, 0x1a49f: 0x6c46a220,
+-	0x1a4a0: 0x6c46a420, 0x1a4a1: 0x6cb78820, 0x1a4a2: 0x6c9c0420, 0x1a4a3: 0x6c9c0820,
+-	0x1a4a4: 0x6d1a8020, 0x1a4a5: 0x6c5d9420, 0x1a4a6: 0x6c190c20, 0x1a4a7: 0x6c26e420,
+-	0x1a4a8: 0x6d2b3020, 0x1a4a9: 0x6ce45420, 0x1a4aa: 0x6cdf5a20, 0x1a4ab: 0x6c40a620,
+-	0x1a4ac: 0x6c48e220, 0x1a4ad: 0x6d108020, 0x1a4ae: 0x6d0f4020, 0x1a4af: 0x6c4f4620,
+-	0x1a4b0: 0x6c42fa20, 0x1a4b1: 0x6cd18e20, 0x1a4b2: 0x6ce1aa20, 0x1a4b3: 0x6cdf5c20,
+-	0x1a4b4: 0x6ce7e420, 0x1a4b5: 0x6d0d3420, 0x1a4b6: 0x6c08b020, 0x1a4b7: 0x6d145220,
+-	0x1a4b8: 0x6c7ab820, 0x1a4b9: 0x6c631c20, 0x1a4ba: 0x6c343a20, 0x1a4bb: 0x6c577c20,
+-	0x1a4bc: 0x6c7bce20, 0x1a4bd: 0x6d27d620, 0x1a4be: 0x6c632020, 0x1a4bf: 0x6c031820,
+-	// Block 0x693, offset 0x1a4c0
+-	0x1a4c0: 0x6c370e20, 0x1a4c1: 0x6c87ec20, 0x1a4c2: 0x6c58ee20, 0x1a4c3: 0x6c2b1220,
+-	0x1a4c4: 0x6d0d4620, 0x1a4c5: 0x6cad7e20, 0x1a4c6: 0x6c733c20, 0x1a4c7: 0x6cb57c20,
+-	0x1a4c8: 0x6ca3ac20, 0x1a4c9: 0x6c3cd820, 0x1a4ca: 0x6d007820, 0x1a4cb: 0x6c3bcc20,
+-	0x1a4cc: 0x6c2d0820, 0x1a4cd: 0x6d107820, 0x1a4ce: 0x6c7c5e20, 0x1a4cf: 0x6d408620,
+-	0x1a4d0: 0x6c58f820, 0x1a4d1: 0x6cb75220, 0x1a4d2: 0x6c762620, 0x1a4d3: 0x6d2bc820,
+-	0x1a4d4: 0x6c077c20, 0x1a4d5: 0x6d16e020, 0x1a4d6: 0x6c679e20, 0x1a4d7: 0x6ce26220,
+-	0x1a4d8: 0x6d29fe20, 0x1a4d9: 0x6c079820, 0x1a4da: 0x6cf5b420, 0x1a4db: 0x6c5a5020,
+-	0x1a4dc: 0x6c3a5020, 0x1a4dd: 0x6c2dc020, 0x1a4de: 0x6d0a8620, 0x1a4df: 0x6c07e020,
+-	0x1a4e0: 0x6c2d5620, 0x1a4e1: 0x6c02d020, 0x1a4e2: 0x6cceea20, 0x1a4e3: 0x6cf24c20,
+-	0x1a4e4: 0x6c4d0220, 0x1a4e5: 0x6c02d220, 0x1a4e6: 0x6cf4fa20, 0x1a4e7: 0x6c02d420,
+-	0x1a4e8: 0x6c67ac20, 0x1a4e9: 0x6c881c20, 0x1a4ea: 0x6c345a20, 0x1a4eb: 0x6d275e20,
+-	0x1a4ec: 0x6c67ae20, 0x1a4ed: 0x6cd3c420, 0x1a4ee: 0x6c3be620, 0x1a4ef: 0x6c5df620,
+-	0x1a4f0: 0x6c0a8620, 0x1a4f1: 0x6c944c20, 0x1a4f2: 0x6c34c620, 0x1a4f3: 0x6caa6e20,
+-	0x1a4f4: 0x6caa3a20, 0x1a4f5: 0x6c2f6820, 0x1a4f6: 0x6ca38e20, 0x1a4f7: 0x6cb89620,
+-	0x1a4f8: 0x6c645c20, 0x1a4f9: 0x6cddde20, 0x1a4fa: 0x6c6fa220, 0x1a4fb: 0x6caa8e20,
+-	0x1a4fc: 0x6c142820, 0x1a4fd: 0x6c500620, 0x1a4fe: 0x6cfa7020, 0x1a4ff: 0x6c391a20,
+-	// Block 0x694, offset 0x1a500
+-	0x1a500: 0x6c611a20, 0x1a501: 0x6cd76e20, 0x1a502: 0x6cc78a20, 0x1a503: 0x6c39f020,
+-	0x1a504: 0x6cee4420, 0x1a505: 0x6c52ec20, 0x1a506: 0x6d3c0620, 0x1a507: 0x6c3fa620,
+-	0x1a508: 0x6c965c20, 0x1a509: 0x6c27b420, 0x1a50a: 0x6cc5be20, 0x1a50b: 0x6c3d3a20,
+-	0x1a50c: 0x6c6e4820, 0x1a50d: 0x6d0c5620, 0x1a50e: 0x6c4d5420, 0x1a50f: 0x6cf1fc20,
+-	0x1a510: 0x6d378e20, 0x1a511: 0x6cabb020, 0x1a512: 0x6c323220, 0x1a513: 0x6c617e20,
+-	0x1a514: 0x6c792820, 0x1a515: 0x6d381220, 0x1a516: 0x6d108a20, 0x1a517: 0x6c6cd420,
+-	0x1a518: 0x6d277e20, 0x1a519: 0x6c9eaa20, 0x1a51a: 0x6c3d1e20, 0x1a51b: 0x6c1ca420,
+-	0x1a51c: 0x6d267a20, 0x1a51d: 0x6d3c0a20, 0x1a51e: 0x6ca96220, 0x1a51f: 0x6d0e3a20,
+-	0x1a520: 0x6ca30620, 0x1a521: 0x6d02a820, 0x1a522: 0x6c3b5220, 0x1a523: 0x6c08ba20,
+-	0x1a524: 0x6d20ae20, 0x1a525: 0x6ceb6e20, 0x1a526: 0x6c3c1820, 0x1a527: 0x6ced7220,
+-	0x1a528: 0x6c39a220, 0x1a529: 0x6cf41e20, 0x1a52a: 0x6d22cc20, 0x1a52b: 0x6c4a3620,
+-	0x1a52c: 0x6c323a20, 0x1a52d: 0x6c036420, 0x1a52e: 0x6ca5b420, 0x1a52f: 0x6d38cc20,
+-	0x1a530: 0x6d3d2c20, 0x1a531: 0x6d2f5620, 0x1a532: 0x6c267c20, 0x1a533: 0x6ca39820,
+-	0x1a534: 0x6d25fe20, 0x1a535: 0x6ce80820, 0x1a536: 0x6cfb2a20, 0x1a537: 0x6d343c20,
+-	0x1a538: 0x6c353020, 0x1a539: 0x6c9a7420, 0x1a53a: 0x6ca0c620, 0x1a53b: 0x6cb4d020,
+-	0x1a53c: 0x6c092a20, 0x1a53d: 0x6ccfaa20, 0x1a53e: 0x6cbc9420, 0x1a53f: 0x6c353220,
+-	// Block 0x695, offset 0x1a540
+-	0x1a540: 0x6c50c420, 0x1a541: 0x6d062c20, 0x1a542: 0x6c37f820, 0x1a543: 0x6d328420,
+-	0x1a544: 0x6c9f2820, 0x1a545: 0x6c04e620, 0x1a546: 0x6ca22820, 0x1a547: 0x6c3d3e20,
+-	0x1a548: 0x6c8ca420, 0x1a549: 0x6d3ee220, 0x1a54a: 0x6d3ee420, 0x1a54b: 0x6cd2b420,
+-	0x1a54c: 0x6cc4ac20, 0x1a54d: 0x6cccc020, 0x1a54e: 0x6d0f4620, 0x1a54f: 0x6c975c20,
+-	0x1a550: 0x6c6c1620, 0x1a551: 0x6c46ee20, 0x1a552: 0x6cd88020, 0x1a553: 0x6d041420,
+-	0x1a554: 0x6cef8e20, 0x1a555: 0x6d3e0c20, 0x1a556: 0x6c71f620, 0x1a557: 0x6cccc220,
+-	0x1a558: 0x6cb1e820, 0x1a559: 0x6cc5d420, 0x1a55a: 0x6d10d620, 0x1a55b: 0x6c305820,
+-	0x1a55c: 0x6c674c20, 0x1a55d: 0x6cd4b020, 0x1a55e: 0x6c5ff020, 0x1a55f: 0x6c40e620,
+-	0x1a560: 0x6cfe1c20, 0x1a561: 0x6c572a20, 0x1a562: 0x6c72da20, 0x1a563: 0x6c682c20,
+-	0x1a564: 0x6c469c20, 0x1a565: 0x6c81a220, 0x1a566: 0x6c647420, 0x1a567: 0x6c647620,
+-	0x1a568: 0x6d148c20, 0x1a569: 0x6ca75c20, 0x1a56a: 0x6d344220, 0x1a56b: 0x6c5e9820,
+-	0x1a56c: 0x6c5ea220, 0x1a56d: 0x6cfc8a20, 0x1a56e: 0x6c525620, 0x1a56f: 0x6c49de20,
+-	0x1a570: 0x6c756020, 0x1a571: 0x6c7ac020, 0x1a572: 0x6d0e4420, 0x1a573: 0x6ca02c20,
+-	0x1a574: 0x6c8ad020, 0x1a575: 0x6cae0a20, 0x1a576: 0x6c35ee20, 0x1a577: 0x6d202220,
+-	0x1a578: 0x6d0c6e20, 0x1a579: 0x6c143420, 0x1a57a: 0x6ccfb820, 0x1a57b: 0x6d19ae20,
+-	0x1a57c: 0x6cd24e20, 0x1a57d: 0x6c4ad220, 0x1a57e: 0x6cc2be20, 0x1a57f: 0x6d3e0e20,
+-	// Block 0x696, offset 0x1a580
+-	0x1a580: 0x6cd90820, 0x1a581: 0x6cee6820, 0x1a582: 0x6c530e20, 0x1a583: 0x6cec0420,
+-	0x1a584: 0x6c907e20, 0x1a585: 0x6d0b8420, 0x1a586: 0x6cc52020, 0x1a587: 0x6c682e20,
+-	0x1a588: 0x6c942e20, 0x1a589: 0x6cb24e20, 0x1a58a: 0x6cfc9e20, 0x1a58b: 0x6cced020,
+-	0x1a58c: 0x6c850820, 0x1a58d: 0x6c19c820, 0x1a58e: 0x6d017a20, 0x1a58f: 0x6c984a20,
+-	0x1a590: 0x6c3d5c20, 0x1a591: 0x6cdd1020, 0x1a592: 0x6c99e420, 0x1a593: 0x6cef9c20,
+-	0x1a594: 0x6c789420, 0x1a595: 0x6c21ae20, 0x1a596: 0x6c21b020, 0x1a597: 0x6ce6b820,
+-	0x1a598: 0x6ca78820, 0x1a599: 0x6d03da20, 0x1a59a: 0x6ca3ee20, 0x1a59b: 0x6d20ec20,
+-	0x1a59c: 0x6ca31a20, 0x1a59d: 0x6cb3c820, 0x1a59e: 0x6ca56820, 0x1a59f: 0x6c72e220,
+-	0x1a5a0: 0x6ccfc620, 0x1a5a1: 0x6d35ae20, 0x1a5a2: 0x6c4df020, 0x1a5a3: 0x6c2c2c20,
+-	0x1a5a4: 0x6d3c1020, 0x1a5a5: 0x6c355220, 0x1a5a6: 0x6cb20820, 0x1a5a7: 0x6ce9f820,
+-	0x1a5a8: 0x6cfca020, 0x1a5a9: 0x6c9e1020, 0x1a5aa: 0x6cf3ae20, 0x1a5ab: 0x6d0c7020,
+-	0x1a5ac: 0x6cf44220, 0x1a5ad: 0x6c001e20, 0x1a5ae: 0x6d0c7c20, 0x1a5af: 0x6d20ee20,
+-	0x1a5b0: 0x6cd89a20, 0x1a5b1: 0x6d20f020, 0x1a5b2: 0x6cebd020, 0x1a5b3: 0x6c87de20,
+-	0x1a5b4: 0x6cfb3a20, 0x1a5b5: 0x6c707c20, 0x1a5b6: 0x6cc24220, 0x1a5b7: 0x6d3c8020,
+-	0x1a5b8: 0x6cb4e220, 0x1a5b9: 0x6cfb4020, 0x1a5ba: 0x6d3d4820, 0x1a5bb: 0x6c2ff020,
+-	0x1a5bc: 0x6c166420, 0x1a5bd: 0x6c923420, 0x1a5be: 0x6c006420, 0x1a5bf: 0x6c353620,
+-	// Block 0x697, offset 0x1a5c0
+-	0x1a5c0: 0x6c353820, 0x1a5c1: 0x6c908620, 0x1a5c2: 0x6c9dbe20, 0x1a5c3: 0x6c239020,
+-	0x1a5c4: 0x6cb3f020, 0x1a5c5: 0x6c710e20, 0x1a5c6: 0x6cb32820, 0x1a5c7: 0x6c10f620,
+-	0x1a5c8: 0x6c8cde20, 0x1a5c9: 0x6ced0020, 0x1a5ca: 0x6c0c7220, 0x1a5cb: 0x6cfeb020,
+-	0x1a5cc: 0x6cd52620, 0x1a5cd: 0x6cb6f020, 0x1a5ce: 0x6c5ab020, 0x1a5cf: 0x6c394020,
+-	0x1a5d0: 0x6cf2b220, 0x1a5d1: 0x6cc89820, 0x1a5d2: 0x6cdfda20, 0x1a5d3: 0x6c39f820,
+-	0x1a5d4: 0x6c3b0420, 0x1a5d5: 0x6c6aae20, 0x1a5d6: 0x6ce46020, 0x1a5d7: 0x6ca5d620,
+-	0x1a5d8: 0x6cc2d820, 0x1a5d9: 0x6c6e5820, 0x1a5da: 0x6c5cbc20, 0x1a5db: 0x6c6da420,
+-	0x1a5dc: 0x6cb8d220, 0x1a5dd: 0x6c2d4c20, 0x1a5de: 0x6d042620, 0x1a5df: 0x6c568a20,
+-	0x1a5e0: 0x6cec8820, 0x1a5e1: 0x6c7ef220, 0x1a5e2: 0x6c097420, 0x1a5e3: 0x6d19dc20,
+-	0x1a5e4: 0x6c1d6820, 0x1a5e5: 0x6ca52e20, 0x1a5e6: 0x6c3fe420, 0x1a5e7: 0x6c6e6e20,
+-	0x1a5e8: 0x6c94ec20, 0x1a5e9: 0x6c01b820, 0x1a5ea: 0x6c7f9420, 0x1a5eb: 0x6c7d5220,
+-	0x1a5ec: 0x6d1a5220, 0x1a5ed: 0x6d0b9220, 0x1a5ee: 0x6c707e20, 0x1a5ef: 0x6c85e820,
+-	0x1a5f0: 0x6c2d1220, 0x1a5f1: 0x6cfb4220, 0x1a5f2: 0x6c57da20, 0x1a5f3: 0x6c579220,
+-	0x1a5f4: 0x6d1bac20, 0x1a5f5: 0x6c14ee20, 0x1a5f6: 0x6cd05a20, 0x1a5f7: 0x6ce66e20,
+-	0x1a5f8: 0x6c296420, 0x1a5f9: 0x6d11ac20, 0x1a5fa: 0x6cf4e620, 0x1a5fb: 0x6ca44820,
+-	0x1a5fc: 0x6c21b220, 0x1a5fd: 0x6c641420, 0x1a5fe: 0x6ce7d820, 0x1a5ff: 0x6d06d220,
+-	// Block 0x698, offset 0x1a600
+-	0x1a600: 0x6d233020, 0x1a601: 0x6cef0a20, 0x1a602: 0x6c2c5420, 0x1a603: 0x6cc74820,
+-	0x1a604: 0x6c9a5620, 0x1a605: 0x6c27de20, 0x1a606: 0x6cc86220, 0x1a607: 0x6cbd2c20,
+-	0x1a608: 0x6c5ab220, 0x1a609: 0x6cf2ea20, 0x1a60a: 0x6cb99420, 0x1a60b: 0x6c210820,
+-	0x1a60c: 0x6c9e7420, 0x1a60d: 0x6c3fec20, 0x1a60e: 0x6c6b9620, 0x1a60f: 0x6c329820,
+-	0x1a610: 0x6d151420, 0x1a611: 0x6d382a20, 0x1a612: 0x6c99f820, 0x1a613: 0x6c59be20,
+-	0x1a614: 0x6c9dc220, 0x1a615: 0x6c013020, 0x1a616: 0x6d1bae20, 0x1a617: 0x6d079420,
+-	0x1a618: 0x6c6a0e20, 0x1a619: 0x6cee8220, 0x1a61a: 0x6c9a8e20, 0x1a61b: 0x6d261620,
+-	0x1a61c: 0x6d32c220, 0x1a61d: 0x6cbfae20, 0x1a61e: 0x6cd37a20, 0x1a61f: 0x6d01a820,
+-	0x1a620: 0x6ceb7c20, 0x1a621: 0x6c88f620, 0x1a622: 0x6c997820, 0x1a623: 0x6cc4c420,
+-	0x1a624: 0x6cd7e620, 0x1a625: 0x6cb0f220, 0x1a626: 0x6cf08e20, 0x1a627: 0x6cebd820,
+-	0x1a628: 0x6c6ff420, 0x1a629: 0x6c555620, 0x1a62a: 0x6c02a620, 0x1a62b: 0x6cbd1420,
+-	0x1a62c: 0x6c05fe20, 0x1a62d: 0x6d059220, 0x1a62e: 0x6ce7da20, 0x1a62f: 0x6c4a6420,
+-	0x1a630: 0x6c1e8a20, 0x1a631: 0x6d110620, 0x1a632: 0x6cb09e20, 0x1a633: 0x6cf78420,
+-	0x1a634: 0x6d257a20, 0x1a635: 0x6d1d4020, 0x1a636: 0x6cc67020, 0x1a637: 0x6cc81a20,
+-	0x1a638: 0x6c1ab620, 0x1a639: 0x6c8e6620, 0x1a63a: 0x6c9a5e20, 0x1a63b: 0x6cac5c20,
+-	0x1a63c: 0x6c02a820, 0x1a63d: 0x6c966020, 0x1a63e: 0x6c46ae20, 0x1a63f: 0x6c7cf620,
+-	// Block 0x699, offset 0x1a640
+-	0x1a640: 0x6cbd8020, 0x1a641: 0x6c644820, 0x1a642: 0x6ccae420, 0x1a643: 0x6d315e20,
+-	0x1a644: 0x6d257c20, 0x1a645: 0x6c6a1020, 0x1a646: 0x6cc68020, 0x1a647: 0x6ca00420,
+-	0x1a648: 0x6d1bc220, 0x1a649: 0x6c604c20, 0x1a64a: 0x6cdac820, 0x1a64b: 0x6ca79c20,
+-	0x1a64c: 0x6cfb6c20, 0x1a64d: 0x6ce1ce20, 0x1a64e: 0x6cad0020, 0x1a64f: 0x6c80b220,
+-	0x1a650: 0x6ca4fc20, 0x1a651: 0x6c05ca20, 0x1a652: 0x6c00a620, 0x1a653: 0x6cb0a020,
+-	0x1a654: 0x6cb20e20, 0x1a655: 0x6d182020, 0x1a656: 0x6cb17e20, 0x1a657: 0x6d238a20,
+-	0x1a658: 0x6c824220, 0x1a659: 0x6d081820, 0x1a65a: 0x6c975820, 0x1a65b: 0x6d140020,
+-	0x1a65c: 0x6d2ec220, 0x1a65d: 0x6c773820, 0x1a65e: 0x6d1d9820, 0x1a65f: 0x6ca6a820,
+-	0x1a660: 0x6c840e20, 0x1a661: 0x6c2b7a20, 0x1a662: 0x6c4a7820, 0x1a663: 0x6d0c1a20,
+-	0x1a664: 0x6c6c9c20, 0x1a665: 0x6d3b8420, 0x1a666: 0x6c16b820, 0x1a667: 0x6d2ada20,
+-	0x1a668: 0x6c4dac20, 0x1a669: 0x6ca59c20, 0x1a66a: 0x6c81d820, 0x1a66b: 0x6ca05c20,
+-	0x1a66c: 0x6d300220, 0x1a66d: 0x6c56ae20, 0x1a66e: 0x6c56b020, 0x1a66f: 0x6c02d620,
+-	0x1a670: 0x6ca59e20, 0x1a671: 0x6cbb1220, 0x1a672: 0x6c96f620, 0x1a673: 0x6cb1e420,
+-	0x1a674: 0x6c472a20, 0x1a675: 0x6cf46020, 0x1a676: 0x6cbbea20, 0x1a677: 0x6ceb8820,
+-	0x1a678: 0x6d2e1020, 0x1a679: 0x6c98f020, 0x1a67a: 0x6cfb7820, 0x1a67b: 0x6cfb7a20,
+-	0x1a67c: 0x6ca14a20, 0x1a67d: 0x6c8a0420, 0x1a67e: 0x6c883020, 0x1a67f: 0x6c57b820,
+-	// Block 0x69a, offset 0x1a680
+-	0x1a680: 0x6c4a8420, 0x1a681: 0x6c2aa620, 0x1a682: 0x6d348c20, 0x1a683: 0x6d05ce20,
+-	0x1a684: 0x6d140a20, 0x1a685: 0x6c579c20, 0x1a686: 0x6cf69220, 0x1a687: 0x6c7d0a20,
+-	0x1a688: 0x6cc52820, 0x1a689: 0x6cf69420, 0x1a68a: 0x6d0ea020, 0x1a68b: 0x6c151820,
+-	0x1a68c: 0x6c686420, 0x1a68d: 0x6c9a6620, 0x1a68e: 0x6c396820, 0x1a68f: 0x6c385620,
+-	0x1a690: 0x6cfad420, 0x1a691: 0x6d188620, 0x1a692: 0x6c5c2a20, 0x1a693: 0x6c69c420,
+-	0x1a694: 0x6c405220, 0x1a695: 0x6cd3d820, 0x1a696: 0x6c0a4620, 0x1a697: 0x6ccda420,
+-	0x1a698: 0x6cdc5a20, 0x1a699: 0x6cbb2020, 0x1a69a: 0x6c88c820, 0x1a69b: 0x6c589420,
+-	0x1a69c: 0x6d02ec20, 0x1a69d: 0x6ca7aa20, 0x1a69e: 0x6c303420, 0x1a69f: 0x6d188820,
+-	0x1a6a0: 0x6c117020, 0x1a6a1: 0x6c00c820, 0x1a6a2: 0x6ca77820, 0x1a6a3: 0x6ca92220,
+-	0x1a6a4: 0x6c966420, 0x1a6a5: 0x6ce5ce20, 0x1a6a6: 0x6c1de220, 0x1a6a7: 0x6c6d5820,
+-	0x1a6a8: 0x6c226820, 0x1a6a9: 0x6d219e20, 0x1a6aa: 0x6cb21620, 0x1a6ab: 0x6cc6be20,
+-	0x1a6ac: 0x6cc7ce20, 0x1a6ad: 0x6ca3a820, 0x1a6ae: 0x6d0c3220, 0x1a6af: 0x6cdf4620,
+-	0x1a6b0: 0x6d1bfc20, 0x1a6b1: 0x6c11b620, 0x1a6b2: 0x6ca7b220, 0x1a6b3: 0x6d26ea20,
+-	0x1a6b4: 0x6d1c9620, 0x1a6b5: 0x6c9dd620, 0x1a6b6: 0x6c0ae620, 0x1a6b7: 0x6c966620,
+-	0x1a6b8: 0x6cd08020, 0x1a6b9: 0x6d043e20, 0x1a6ba: 0x6ca6d420, 0x1a6bb: 0x6c31c820,
+-	0x1a6bc: 0x6c8f2020, 0x1a6bd: 0x6d251c20, 0x1a6be: 0x6c804820, 0x1a6bf: 0x6d0ee820,
+-	// Block 0x69b, offset 0x1a6c0
+-	0x1a6c0: 0x6cd6a820, 0x1a6c1: 0x6c8d8c20, 0x1a6c2: 0x6c696620, 0x1a6c3: 0x6ca77a20,
+-	0x1a6c4: 0x6c804c20, 0x1a6c5: 0x6cb94420, 0x1a6c6: 0x6d1c1a20, 0x1a6c7: 0x6cd6ae20,
+-	0x1a6c8: 0x6c5c9020, 0x1a6c9: 0x6cc32620, 0x1a6ca: 0x6c9d0a20, 0x1a6cb: 0x6c84b820,
+-	0x1a6cc: 0x6c944e20, 0x1a6cd: 0x6d0d0e20, 0x1a6ce: 0x6d3a4020, 0x1a6cf: 0x6c805820,
+-	0x1a6d0: 0x6d3f6820, 0x1a6d1: 0x6c6a5220, 0x1a6d2: 0x6c73c420, 0x1a6d3: 0x6c73c620,
+-	0x1a6d4: 0x6c799220, 0x1a6d5: 0x6d281220, 0x1a6d6: 0x6c965e20, 0x1a6d7: 0x6d3f2820,
+-	0x1a6d8: 0x6c25a020, 0x1a6d9: 0x6cdcca20, 0x1a6da: 0x6c3dd620, 0x1a6db: 0x6c06d620,
+-	0x1a6dc: 0x6d3e0020, 0x1a6dd: 0x6cffcc20, 0x1a6de: 0x6d031a20, 0x1a6df: 0x6c9bfe20,
+-	0x1a6e0: 0x6cd88c20, 0x1a6e1: 0x6cdf0220, 0x1a6e2: 0x6c05a420, 0x1a6e3: 0x6c619220,
+-	0x1a6e4: 0x6c46f020, 0x1a6e5: 0x6caa3c20, 0x1a6e6: 0x6d08f820, 0x1a6e7: 0x6d206a20,
+-	0x1a6e8: 0x6d3ba220, 0x1a6e9: 0x6c4d1e20, 0x1a6ea: 0x6c943020, 0x1a6eb: 0x6cdcd020,
+-	0x1a6ec: 0x6ca48e20, 0x1a6ed: 0x6c9ec420, 0x1a6ee: 0x6c239220, 0x1a6ef: 0x6cb8d420,
+-	0x1a6f0: 0x6cd52820, 0x1a6f1: 0x6c11f620, 0x1a6f2: 0x6d0aea20, 0x1a6f3: 0x6d3e3420,
+-	0x1a6f4: 0x6ca63e20, 0x1a6f5: 0x6c3d8820, 0x1a6f6: 0x6d3e4e20, 0x1a6f7: 0x6c841020,
+-	0x1a6f8: 0x6d091820, 0x1a6f9: 0x6c0ff620, 0x1a6fa: 0x6cc7d020, 0x1a6fb: 0x6ca38820,
+-	0x1a6fc: 0x6ca89020, 0x1a6fd: 0x6ca89220, 0x1a6fe: 0x6d1c1c20, 0x1a6ff: 0x6c945020,
+-	// Block 0x69c, offset 0x1a700
+-	0x1a700: 0x6c9db620, 0x1a701: 0x6ca8f220, 0x1a702: 0x6cc6ee20, 0x1a703: 0x6cdddc20,
+-	0x1a704: 0x6c4ab820, 0x1a705: 0x6d2d1820, 0x1a706: 0x6cbef820, 0x1a707: 0x6d221620,
+-	0x1a708: 0x6cd43a20, 0x1a709: 0x6c011220, 0x1a70a: 0x6ce83820, 0x1a70b: 0x6cd97e20,
+-	0x1a70c: 0x6cecc020, 0x1a70d: 0x6cc78420, 0x1a70e: 0x6d118220, 0x1a70f: 0x6c52f220,
+-	0x1a710: 0x6d145e20, 0x1a711: 0x6c6e0c20, 0x1a712: 0x6d3cc820, 0x1a713: 0x6c9d2220,
+-	0x1a714: 0x6d3a5820, 0x1a715: 0x6c295620, 0x1a716: 0x6c530020, 0x1a717: 0x6d3f7020,
+-	0x1a718: 0x6c490420, 0x1a719: 0x6d38fe20, 0x1a71a: 0x6c2f9620, 0x1a71b: 0x6cecee20,
+-	0x1a71c: 0x6d198e20, 0x1a71d: 0x6c05e220, 0x1a71e: 0x6cd24220, 0x1a71f: 0x6cd24420,
+-	0x1a720: 0x6c1d3620, 0x1a721: 0x6cd04620, 0x1a722: 0x6c788c20, 0x1a723: 0x6d078220,
+-	0x1a724: 0x6cd32c20, 0x1a725: 0x6d202420, 0x1a726: 0x6c58fa20, 0x1a727: 0x6d14b820,
+-	0x1a728: 0x6ce5b820, 0x1a729: 0x6cd2be20, 0x1a72a: 0x6cfc8c20, 0x1a72b: 0x6c456e20,
+-	0x1a72c: 0x6c19ca20, 0x1a72d: 0x6cc44220, 0x1a72e: 0x6c457a20, 0x1a72f: 0x6cfe9420,
+-	0x1a730: 0x6d291220, 0x1a731: 0x6d2cba20, 0x1a732: 0x6c05f020, 0x1a733: 0x6c4d5e20,
+-	0x1a734: 0x6d0e4e20, 0x1a735: 0x6cfe9620, 0x1a736: 0x6c634020, 0x1a737: 0x6cd05020,
+-	0x1a738: 0x6c18ae20, 0x1a739: 0x6cc66020, 0x1a73a: 0x6c5a4c20, 0x1a73b: 0x6c9d3020,
+-	0x1a73c: 0x6c79e020, 0x1a73d: 0x6c7b5220, 0x1a73e: 0x6c0d2e20, 0x1a73f: 0x6cdaa020,
+-	// Block 0x69d, offset 0x1a740
+-	0x1a740: 0x6c112420, 0x1a741: 0x6d296620, 0x1a742: 0x6c61de20, 0x1a743: 0x6d24da20,
+-	0x1a744: 0x6c61e020, 0x1a745: 0x6d1a5420, 0x1a746: 0x6c9d3620, 0x1a747: 0x6c79e620,
+-	0x1a748: 0x6cbe4220, 0x1a749: 0x6cc3b420, 0x1a74a: 0x6d315620, 0x1a74b: 0x6c668820,
+-	0x1a74c: 0x6c3fee20, 0x1a74d: 0x6ca90420, 0x1a74e: 0x6c0e1e20, 0x1a74f: 0x6c587420,
+-	0x1a750: 0x6c9a9020, 0x1a751: 0x6cbdd620, 0x1a752: 0x6c4e0c20, 0x1a753: 0x6d233220,
+-	0x1a754: 0x6cd26620, 0x1a755: 0x6ca90620, 0x1a756: 0x6c6d1020, 0x1a757: 0x6ca90a20,
+-	0x1a758: 0x6d365020, 0x1a759: 0x6d226820, 0x1a75a: 0x6c060220, 0x1a75b: 0x6c7b5620,
+-	0x1a75c: 0x6ca90c20, 0x1a75d: 0x6cbddc20, 0x1a75e: 0x6ca12820, 0x1a75f: 0x6c13f220,
+-	0x1a760: 0x6c726020, 0x1a761: 0x6c489c20, 0x1a762: 0x6cbde220, 0x1a763: 0x6c54e420,
+-	0x1a764: 0x6cf50a20, 0x1a765: 0x6c89f020, 0x1a766: 0x6cd27a20, 0x1a767: 0x6ca91020,
+-	0x1a768: 0x6d2d4620, 0x1a769: 0x6cd06820, 0x1a76a: 0x6ceffc20, 0x1a76b: 0x6d014820,
+-	0x1a76c: 0x6c7b5820, 0x1a76d: 0x6c5c0e20, 0x1a76e: 0x6c8a0620, 0x1a76f: 0x6c75e220,
+-	0x1a770: 0x6c589620, 0x1a771: 0x6d18c020, 0x1a772: 0x6d156a20, 0x1a773: 0x6c061c20,
+-	0x1a774: 0x6cbd4a20, 0x1a775: 0x6c1d4620, 0x1a776: 0x6c062020, 0x1a777: 0x6c3c7c20,
+-	0x1a778: 0x6c25b020, 0x1a779: 0x6c332c20, 0x1a77a: 0x6cd87820, 0x1a77b: 0x6d09d420,
+-	0x1a77c: 0x6c29ce20, 0x1a77d: 0x6c93ca20, 0x1a77e: 0x6c333620, 0x1a77f: 0x6cd45020,
+-	// Block 0x69e, offset 0x1a780
+-	0x1a780: 0x6cb34a20, 0x1a781: 0x6c3c2420, 0x1a782: 0x6d3b7420, 0x1a783: 0x6c3d5e20,
+-	0x1a784: 0x6ccf3a20, 0x1a785: 0x6c789620, 0x1a786: 0x6c674e20, 0x1a787: 0x6c675c20,
+-	0x1a788: 0x6d3b7a20, 0x1a789: 0x6cf08420, 0x1a78a: 0x6d41e820, 0x1a78b: 0x6d0a0c20,
+-	0x1a78c: 0x6cd5d220, 0x1a78d: 0x6c335420, 0x1a78e: 0x6c29e820, 0x1a78f: 0x6cffa220,
+-	0x1a790: 0x6c6a5420, 0x1a791: 0x6cceac20, 0x1a792: 0x6c377e20, 0x1a793: 0x6c378020,
+-	0x1a794: 0x6c378220, 0x1a795: 0x6c40d020, 0x1a796: 0x6c645e20, 0x1a797: 0x6cd49a20,
+-	0x1a798: 0x6c189220, 0x1a799: 0x6cce4a20, 0x1a79a: 0x6cce4c20, 0x1a79b: 0x6ca1b420,
+-	0x1a79c: 0x6c40c620, 0x1a79d: 0x6c169e20, 0x1a79e: 0x6c8a9a20, 0x1a79f: 0x6cfc1020,
+-	0x1a7a0: 0x6cfc1220, 0x1a7a1: 0x6c7dde20, 0x1a7a2: 0x6d1edc20, 0x1a7a3: 0x6cedbc20,
+-	0x1a7a4: 0x6d1ede20, 0x1a7a5: 0x6c8a8c20, 0x1a7a6: 0x6c8a8e20, 0x1a7a7: 0x6d10ca20,
+-	0x1a7a8: 0x6c983020, 0x1a7a9: 0x6cedc620, 0x1a7aa: 0x6cedc020, 0x1a7ab: 0x6cedc220,
+-	0x1a7ac: 0x6c40d420, 0x1a7ad: 0x6d10cc20, 0x1a7ae: 0x6c34d620, 0x1a7af: 0x6c7cec20,
+-	0x1a7b0: 0x6d37f020, 0x1a7b1: 0x6c6ff620, 0x1a7b2: 0x6c419c20, 0x1a7b3: 0x6c478820,
+-	0x1a7b4: 0x6c419e20, 0x1a7b5: 0x6ce9b420, 0x1a7b6: 0x6c41b620, 0x1a7b7: 0x6c41b820,
+-	0x1a7b8: 0x6cd18a20, 0x1a7b9: 0x6d1ac220, 0x1a7ba: 0x6c1b7020, 0x1a7bb: 0x6c779020,
+-	0x1a7bc: 0x6ca5b620, 0x1a7bd: 0x6c6c8020, 0x1a7be: 0x6cef8620, 0x1a7bf: 0x6ca7d020,
+-	// Block 0x69f, offset 0x1a7c0
+-	0x1a7c0: 0x6c70f020, 0x1a7c1: 0x6cb08620, 0x1a7c2: 0x6c134e20, 0x1a7c3: 0x6cf83c20,
+-	0x1a7c4: 0x6c086c20, 0x1a7c5: 0x6c705620, 0x1a7c6: 0x6c6bbe20, 0x1a7c7: 0x6ce48020,
+-	0x1a7c8: 0x6cc0dc20, 0x1a7c9: 0x6ce44c20, 0x1a7ca: 0x6c6bc020, 0x1a7cb: 0x6cf35620,
+-	0x1a7cc: 0x6c2dfa20, 0x1a7cd: 0x6cd1a220, 0x1a7ce: 0x6cd2c020, 0x1a7cf: 0x6cb28020,
+-	0x1a7d0: 0x6c5ea420, 0x1a7d1: 0x6d017c20, 0x1a7d2: 0x6d31c620, 0x1a7d3: 0x6d017e20,
+-	0x1a7d4: 0x6ca5ca20, 0x1a7d5: 0x6d2de020, 0x1a7d6: 0x6cf5ba20, 0x1a7d7: 0x6cef9e20,
+-	0x1a7d8: 0x6c97b420, 0x1a7d9: 0x6c353a20, 0x1a7da: 0x6c910620, 0x1a7db: 0x6cb29820,
+-	0x1a7dc: 0x6ce44e20, 0x1a7dd: 0x6c3aa420, 0x1a7de: 0x6cd55820, 0x1a7df: 0x6d01aa20,
+-	0x1a7e0: 0x6ce8a020, 0x1a7e1: 0x6c939a20, 0x1a7e2: 0x6c93a620, 0x1a7e3: 0x6cf7f820,
+-	0x1a7e4: 0x6c135420, 0x1a7e5: 0x6c93ae20, 0x1a7e6: 0x6c727820, 0x1a7e7: 0x6d01f620,
+-	0x1a7e8: 0x6c72a420, 0x1a7e9: 0x6c73ba20, 0x1a7ea: 0x6c8a3020, 0x1a7eb: 0x6c74e620,
+-	0x1a7ec: 0x6cd58820, 0x1a7ed: 0x6cf93a20, 0x1a7ee: 0x6c17fa20, 0x1a7ef: 0x6cea3620,
+-	0x1a7f0: 0x6ca67420, 0x1a7f1: 0x6cccb020, 0x1a7f2: 0x6cec4820, 0x1a7f3: 0x6cfa6c20,
+-	0x1a7f4: 0x6c856820, 0x1a7f5: 0x6c35c620, 0x1a7f6: 0x6c2a5420, 0x1a7f7: 0x6c5ca820,
+-	0x1a7f8: 0x6c8f6820, 0x1a7f9: 0x6d165c20, 0x1a7fa: 0x6cb6ca20, 0x1a7fb: 0x6cc5b020,
+-	0x1a7fc: 0x6cf49e20, 0x1a7fd: 0x6c4e8020, 0x1a7fe: 0x6ccf9c20, 0x1a7ff: 0x6d221820,
+-	// Block 0x6a0, offset 0x1a800
+-	0x1a800: 0x6c1e5220, 0x1a801: 0x6cdc1e20, 0x1a802: 0x6cb6cc20, 0x1a803: 0x6cc5b220,
+-	0x1a804: 0x6d267c20, 0x1a805: 0x6c04b820, 0x1a806: 0x6d118420, 0x1a807: 0x6c01f220,
+-	0x1a808: 0x6d0b0e20, 0x1a809: 0x6cf4a620, 0x1a80a: 0x6c6a6e20, 0x1a80b: 0x6c35cc20,
+-	0x1a80c: 0x6c5fc620, 0x1a80d: 0x6cb8a420, 0x1a80e: 0x6c3b5420, 0x1a80f: 0x6cecc420,
+-	0x1a810: 0x6cb57020, 0x1a811: 0x6c132820, 0x1a812: 0x6cb96a20, 0x1a813: 0x6cb57220,
+-	0x1a814: 0x6c142e20, 0x1a815: 0x6c6bb020, 0x1a816: 0x6cc0d020, 0x1a817: 0x6c429820,
+-	0x1a818: 0x6cfc7a20, 0x1a819: 0x6c02c020, 0x1a81a: 0x6c7f8a20, 0x1a81b: 0x6c29d020,
+-	0x1a81c: 0x6c031a20, 0x1a81d: 0x6d427c20, 0x1a81e: 0x6d427e20, 0x1a81f: 0x6d100220,
+-	0x1a820: 0x6c71f820, 0x1a821: 0x6c425c20, 0x1a822: 0x6c785820, 0x1a823: 0x6c466e20,
+-	0x1a824: 0x6d08fa20, 0x1a825: 0x6cb2fa20, 0x1a826: 0x6c858a20, 0x1a827: 0x6ce56e20,
+-	0x1a828: 0x6cc0e020, 0x1a829: 0x6d0c6220, 0x1a82a: 0x6c3de420, 0x1a82b: 0x6d052e20,
+-	0x1a82c: 0x6c640020, 0x1a82d: 0x6c8e0a20, 0x1a82e: 0x6ceaec20, 0x1a82f: 0x6cafb220,
+-	0x1a830: 0x6c02c820, 0x1a831: 0x6c273020, 0x1a832: 0x6c7be020, 0x1a833: 0x6d268620,
+-	0x1a834: 0x6cc0e220, 0x1a835: 0x6c566220, 0x1a836: 0x6cb36620, 0x1a837: 0x6c9f2a20,
+-	0x1a838: 0x6c01a220, 0x1a839: 0x6ce57020, 0x1a83a: 0x6c8ca620, 0x1a83b: 0x6c1b0620,
+-	0x1a83c: 0x6cb2ea20, 0x1a83d: 0x6c2fde20, 0x1a83e: 0x6c4e8c20, 0x1a83f: 0x6c7c3420,
+-	// Block 0x6a1, offset 0x1a840
+-	0x1a840: 0x6d053020, 0x1a841: 0x6c992a20, 0x1a842: 0x6ce71420, 0x1a843: 0x6d08fc20,
+-	0x1a844: 0x6d16ae20, 0x1a845: 0x6c0be220, 0x1a846: 0x6c50d220, 0x1a847: 0x6c032c20,
+-	0x1a848: 0x6c95e620, 0x1a849: 0x6c35f020, 0x1a84a: 0x6c3fc220, 0x1a84b: 0x6d09e420,
+-	0x1a84c: 0x6c2e6c20, 0x1a84d: 0x6c921e20, 0x1a84e: 0x6c371e20, 0x1a84f: 0x6c373c20,
+-	0x1a850: 0x6c40e820, 0x1a851: 0x6cc28c20, 0x1a852: 0x6c305a20, 0x1a853: 0x6d149420,
+-	0x1a854: 0x6ca22e20, 0x1a855: 0x6cd25020, 0x1a856: 0x6c011a20, 0x1a857: 0x6ceee820,
+-	0x1a858: 0x6c586220, 0x1a859: 0x6d359620, 0x1a85a: 0x6c9d2c20, 0x1a85b: 0x6c850220,
+-	0x1a85c: 0x6c61a420, 0x1a85d: 0x6ce72220, 0x1a85e: 0x6ceeea20, 0x1a85f: 0x6d202620,
+-	0x1a860: 0x6c483420, 0x1a861: 0x6cf99420, 0x1a862: 0x6c850420, 0x1a863: 0x6d10d820,
+-	0x1a864: 0x6c698620, 0x1a865: 0x6d329420, 0x1a866: 0x6c943220, 0x1a867: 0x6c683020,
+-	0x1a868: 0x6c355420, 0x1a869: 0x6c355620, 0x1a86a: 0x6d22ee20, 0x1a86b: 0x6d007a20,
+-	0x1a86c: 0x6c100e20, 0x1a86d: 0x6cbc3620, 0x1a86e: 0x6cc43420, 0x1a86f: 0x6c3c3220,
+-	0x1a870: 0x6c3c3420, 0x1a871: 0x6ca4a220, 0x1a872: 0x6c850a20, 0x1a873: 0x6d1f1420,
+-	0x1a874: 0x6cfca220, 0x1a875: 0x6c532820, 0x1a876: 0x6c29d220, 0x1a877: 0x6ccfc820,
+-	0x1a878: 0x6c19cc20, 0x1a879: 0x6ce88e20, 0x1a87a: 0x6c44f620, 0x1a87b: 0x6c75a220,
+-	0x1a87c: 0x6c502620, 0x1a87d: 0x6cf9a020, 0x1a87e: 0x6d1a4620, 0x1a87f: 0x6d223a20,
+-	// Block 0x6a2, offset 0x1a880
+-	0x1a880: 0x6c811620, 0x1a881: 0x6c770820, 0x1a882: 0x6c814e20, 0x1a883: 0x6c7ee820,
+-	0x1a884: 0x6cfbf220, 0x1a885: 0x6cc3aa20, 0x1a886: 0x6c797020, 0x1a887: 0x6c1d1020,
+-	0x1a888: 0x6c1d1220, 0x1a889: 0x6cde4620, 0x1a88a: 0x6c8bac20, 0x1a88b: 0x6c578a20,
+-	0x1a88c: 0x6c708420, 0x1a88d: 0x6c7ef420, 0x1a88e: 0x6cb5be20, 0x1a88f: 0x6c9f4420,
+-	0x1a890: 0x6c7d5420, 0x1a891: 0x6c7d5620, 0x1a892: 0x6d40b420, 0x1a893: 0x6c480a20,
+-	0x1a894: 0x6c24c820, 0x1a895: 0x6d0b2620, 0x1a896: 0x6d0b2820, 0x1a897: 0x6c429e20,
+-	0x1a898: 0x6c94ee20, 0x1a899: 0x6c94f020, 0x1a89a: 0x6c837420, 0x1a89b: 0x6c742020,
+-	0x1a89c: 0x6c342820, 0x1a89d: 0x6d32ac20, 0x1a89e: 0x6c4c1e20, 0x1a89f: 0x6d1a5620,
+-	0x1a8a0: 0x6c2ff220, 0x1a8a1: 0x6c4dfa20, 0x1a8a2: 0x6d32ae20, 0x1a8a3: 0x6cefac20,
+-	0x1a8a4: 0x6cff7e20, 0x1a8a5: 0x6cafde20, 0x1a8a6: 0x6d0bf220, 0x1a8a7: 0x6cd91420,
+-	0x1a8a8: 0x6c6ab220, 0x1a8a9: 0x6c07e220, 0x1a8aa: 0x6d40b620, 0x1a8ab: 0x6c7a3c20,
+-	0x1a8ac: 0x6c2ff420, 0x1a8ad: 0x6d2de420, 0x1a8ae: 0x6c480c20, 0x1a8af: 0x6d1a5820,
+-	0x1a8b0: 0x6d3f6a20, 0x1a8b1: 0x6d2b4e20, 0x1a8b2: 0x6c59c020, 0x1a8b3: 0x6d211820,
+-	0x1a8b4: 0x6cec6220, 0x1a8b5: 0x6d0fb220, 0x1a8b6: 0x6c3c4a20, 0x1a8b7: 0x6cc05c20,
+-	0x1a8b8: 0x6d0fb420, 0x1a8b9: 0x6ce32020, 0x1a8ba: 0x6d15ec20, 0x1a8bb: 0x6d361e20,
+-	0x1a8bc: 0x6cd37c20, 0x1a8bd: 0x6d291620, 0x1a8be: 0x6d11ae20, 0x1a8bf: 0x6c363020,
+-	// Block 0x6a3, offset 0x1a8c0
+-	0x1a8c0: 0x6d3af220, 0x1a8c1: 0x6c76ac20, 0x1a8c2: 0x6c93dc20, 0x1a8c3: 0x6d0d7a20,
+-	0x1a8c4: 0x6c9a5820, 0x1a8c5: 0x6c4e0e20, 0x1a8c6: 0x6c5ec820, 0x1a8c7: 0x6c5eca20,
+-	0x1a8c8: 0x6c591e20, 0x1a8c9: 0x6ce67020, 0x1a8ca: 0x6cd16a20, 0x1a8cb: 0x6c99fa20,
+-	0x1a8cc: 0x6cba5220, 0x1a8cd: 0x6cf4e820, 0x1a8ce: 0x6d211a20, 0x1a8cf: 0x6d3f8420,
+-	0x1a8d0: 0x6c7f9a20, 0x1a8d1: 0x6c786420, 0x1a8d2: 0x6d0c9220, 0x1a8d3: 0x6d0c9420,
+-	0x1a8d4: 0x6cefbc20, 0x1a8d5: 0x6d3f8620, 0x1a8d6: 0x6c13e020, 0x1a8d7: 0x6cdc3c20,
+-	0x1a8d8: 0x6cc67220, 0x1a8d9: 0x6c78ee20, 0x1a8da: 0x6cbd2e20, 0x1a8db: 0x6d211c20,
+-	0x1a8dc: 0x6ce45220, 0x1a8dd: 0x6c90e220, 0x1a8de: 0x6ce8ba20, 0x1a8df: 0x6c330420,
+-	0x1a8e0: 0x6cf64220, 0x1a8e1: 0x6cf25220, 0x1a8e2: 0x6c123020, 0x1a8e3: 0x6c296c20,
+-	0x1a8e4: 0x6cc68220, 0x1a8e5: 0x6c6ae020, 0x1a8e6: 0x6c765e20, 0x1a8e7: 0x6c8e6820,
+-	0x1a8e8: 0x6cf4fc20, 0x1a8e9: 0x6cd92420, 0x1a8ea: 0x6cbb7c20, 0x1a8eb: 0x6d3e3620,
+-	0x1a8ec: 0x6cef0c20, 0x1a8ed: 0x6c07f620, 0x1a8ee: 0x6c2ccc20, 0x1a8ef: 0x6c25da20,
+-	0x1a8f0: 0x6cba1220, 0x1a8f1: 0x6d1e4420, 0x1a8f2: 0x6ca83e20, 0x1a8f3: 0x6c25dc20,
+-	0x1a8f4: 0x6c614820, 0x1a8f5: 0x6cd41620, 0x1a8f6: 0x6cc93c20, 0x1a8f7: 0x6cd96820,
+-	0x1a8f8: 0x6d3fa020, 0x1a8f9: 0x6c67f420, 0x1a8fa: 0x6c89f220, 0x1a8fb: 0x6c773c20,
+-	0x1a8fc: 0x6c15c620, 0x1a8fd: 0x6c2ec820, 0x1a8fe: 0x6c132420, 0x1a8ff: 0x6c2f7820,
+-	// Block 0x6a4, offset 0x1a900
+-	0x1a900: 0x6ce86820, 0x1a901: 0x6c90ec20, 0x1a902: 0x6d2f3a20, 0x1a903: 0x6d2dfe20,
+-	0x1a904: 0x6d2e0020, 0x1a905: 0x6c024e20, 0x1a906: 0x6c127c20, 0x1a907: 0x6cc11e20,
+-	0x1a908: 0x6cbac820, 0x1a909: 0x6c24d620, 0x1a90a: 0x6d418e20, 0x1a90b: 0x6c29e220,
+-	0x1a90c: 0x6c29e420, 0x1a90d: 0x6cf79020, 0x1a90e: 0x6d238c20, 0x1a90f: 0x6cae2620,
+-	0x1a910: 0x6c8f9a20, 0x1a911: 0x6cfe4420, 0x1a912: 0x6c135620, 0x1a913: 0x6c0e8620,
+-	0x1a914: 0x6cbd3c20, 0x1a915: 0x6c686620, 0x1a916: 0x6d0dc620, 0x1a917: 0x6c816a20,
+-	0x1a918: 0x6d2e7420, 0x1a919: 0x6c8bcc20, 0x1a91a: 0x6c8a0820, 0x1a91b: 0x6c8a0a20,
+-	0x1a91c: 0x6c6c5020, 0x1a91d: 0x6c2ae220, 0x1a91e: 0x6c350a20, 0x1a91f: 0x6d41ee20,
+-	0x1a920: 0x6c69ba20, 0x1a921: 0x6c4b6220, 0x1a922: 0x6d113420, 0x1a923: 0x6c686820,
+-	0x1a924: 0x6d113620, 0x1a925: 0x6c748e20, 0x1a926: 0x6d2d9620, 0x1a927: 0x6d188a20,
+-	0x1a928: 0x6d091a20, 0x1a929: 0x6ca4be20, 0x1a92a: 0x6d133820, 0x1a92b: 0x6d133a20,
+-	0x1a92c: 0x6d155a20, 0x1a92d: 0x6ca87020, 0x1a92e: 0x6cfc2a20, 0x1a92f: 0x6c608220,
+-	0x1a930: 0x6d020c20, 0x1a931: 0x6c786e20, 0x1a932: 0x6cf69820, 0x1a933: 0x6c2c9a20,
+-	0x1a934: 0x6c02e620, 0x1a935: 0x6d419c20, 0x1a936: 0x6cf14820, 0x1a937: 0x6d156c20,
+-	0x1a938: 0x6cc6c020, 0x1a939: 0x6c29f020, 0x1a93a: 0x6c8e1420, 0x1a93b: 0x6d28cc20,
+-	0x1a93c: 0x6d228c20, 0x1a93d: 0x6d26f220, 0x1a93e: 0x6d1b0c20, 0x1a93f: 0x6cc83820,
+-	// Block 0x6a5, offset 0x1a940
+-	0x1a940: 0x6c6b5420, 0x1a941: 0x6c869c20, 0x1a942: 0x6c4a9820, 0x1a943: 0x6c8fbe20,
+-	0x1a944: 0x6c8fc020, 0x1a945: 0x6c2ce420, 0x1a946: 0x6cc6d620, 0x1a947: 0x6cf72a20,
+-	0x1a948: 0x6c718620, 0x1a949: 0x6c155020, 0x1a94a: 0x6d1d2220, 0x1a94b: 0x6c7c5420,
+-	0x1a94c: 0x6d0cee20, 0x1a94d: 0x6ceec820, 0x1a94e: 0x6ca4d420, 0x1a94f: 0x6cc32820,
+-	0x1a950: 0x6c17ac20, 0x1a951: 0x6c24a420, 0x1a952: 0x6c945220, 0x1a953: 0x6c2cf420,
+-	0x1a954: 0x6c2cf620, 0x1a955: 0x6ca8e020, 0x1a956: 0x6d0d1220, 0x1a957: 0x6d0d1020,
+-	0x1a958: 0x6d0e2020, 0x1a959: 0x6c7cbc20, 0x1a95a: 0x6d0e2220, 0x1a95b: 0x6c1fd620,
+-	0x1a95c: 0x6c7b0820, 0x1a95d: 0x6c1fd820, 0x1a95e: 0x6d385020, 0x1a95f: 0x6c597020,
+-	0x1a960: 0x6c6d8a20, 0x1a961: 0x6d09d820, 0x1a962: 0x6c175e20, 0x1a963: 0x6c176020,
+-	0x1a964: 0x6c8b2620, 0x1a965: 0x6c454a20, 0x1a966: 0x6d426020, 0x1a967: 0x6cbc1a20,
+-	0x1a968: 0x6c71e820, 0x1a969: 0x6c45ce20, 0x1a96a: 0x6c71f220, 0x1a96b: 0x6cf35220,
+-	0x1a96c: 0x6cb4be20, 0x1a96d: 0x6cb4c020, 0x1a96e: 0x6c143620, 0x1a96f: 0x6cc05e20,
+-	0x1a970: 0x6cc08220, 0x1a971: 0x6c610e20, 0x1a972: 0x6d15ac20, 0x1a973: 0x6cd87020,
+-	0x1a974: 0x6c03e620, 0x1a975: 0x6d338a20, 0x1a976: 0x6d2f5820, 0x1a977: 0x6cfe1e20,
+-	0x1a978: 0x6d14bc20, 0x1a979: 0x6c6c8820, 0x1a97a: 0x6d0a6c20, 0x1a97b: 0x6c734020,
+-	0x1a97c: 0x6c033820, 0x1a97d: 0x6d0a8c20, 0x1a97e: 0x6c6c1a20, 0x1a97f: 0x6c3dc620,
+-	// Block 0x6a6, offset 0x1a980
+-	0x1a980: 0x6d287e20, 0x1a981: 0x6c090220, 0x1a982: 0x6cd2f020, 0x1a983: 0x6c105820,
+-	0x1a984: 0x6c2f4620, 0x1a985: 0x6cd66220, 0x1a986: 0x6c384a20, 0x1a987: 0x6ca7ec20,
+-	0x1a988: 0x6cd19020, 0x1a989: 0x6c3b0e20, 0x1a98a: 0x6cabe420, 0x1a98b: 0x6d34e020,
+-	0x1a98c: 0x6cf57a20, 0x1a98d: 0x6c565420, 0x1a98e: 0x6c286420, 0x1a98f: 0x6ceede20,
+-	0x1a990: 0x6d2f2020, 0x1a991: 0x6ce16e20, 0x1a992: 0x6c273220, 0x1a993: 0x6ca0c820,
+-	0x1a994: 0x6cae0620, 0x1a995: 0x6cabe620, 0x1a996: 0x6ce5e820, 0x1a997: 0x6c0e4c20,
+-	0x1a998: 0x6c87f220, 0x1a999: 0x6d358620, 0x1a99a: 0x6d397620, 0x1a99b: 0x6c0eb420,
+-	0x1a99c: 0x6d358820, 0x1a99d: 0x6c2c2620, 0x1a99e: 0x6ca0de20, 0x1a99f: 0x6d16e220,
+-	0x1a9a0: 0x6d16e420, 0x1a9a1: 0x6cb28220, 0x1a9a2: 0x6cb84820, 0x1a9a3: 0x6c731420,
+-	0x1a9a4: 0x6cc79220, 0x1a9a5: 0x6cd66420, 0x1a9a6: 0x6c274020, 0x1a9a7: 0x6d334020,
+-	0x1a9a8: 0x6cd71420, 0x1a9a9: 0x6cbc3820, 0x1a9aa: 0x6d313620, 0x1a9ab: 0x6cd1b020,
+-	0x1a9ac: 0x6cc44420, 0x1a9ad: 0x6cf77020, 0x1a9ae: 0x6c051c20, 0x1a9af: 0x6c275020,
+-	0x1a9b0: 0x6c4a4420, 0x1a9b1: 0x6c1d9420, 0x1a9b2: 0x6cb29a20, 0x1a9b3: 0x6d2f2c20,
+-	0x1a9b4: 0x6cca4a20, 0x1a9b5: 0x6cec8a20, 0x1a9b6: 0x6c275c20, 0x1a9b7: 0x6ceefc20,
+-	0x1a9b8: 0x6c16a420, 0x1a9b9: 0x6ccc4820, 0x1a9ba: 0x6cb5c220, 0x1a9bb: 0x6d2abe20,
+-	0x1a9bc: 0x6c4c6820, 0x1a9bd: 0x6c997a20, 0x1a9be: 0x6c321620, 0x1a9bf: 0x6c540020,
+-	// Block 0x6a7, offset 0x1a9c0
+-	0x1a9c0: 0x6d334c20, 0x1a9c1: 0x6d059420, 0x1a9c2: 0x6c9d4420, 0x1a9c3: 0x6cef0e20,
+-	0x1a9c4: 0x6cf2ec20, 0x1a9c5: 0x6c3e7620, 0x1a9c6: 0x6d179620, 0x1a9c7: 0x6c052e20,
+-	0x1a9c8: 0x6cb2a420, 0x1a9c9: 0x6c2f3a20, 0x1a9ca: 0x6c459220, 0x1a9cb: 0x6cac5e20,
+-	0x1a9cc: 0x6c5a5420, 0x1a9cd: 0x6ce1d220, 0x1a9ce: 0x6c9d5420, 0x1a9cf: 0x6c644a20,
+-	0x1a9d0: 0x6ce2a020, 0x1a9d1: 0x6c5ad020, 0x1a9d2: 0x6d37c020, 0x1a9d3: 0x6cccfa20,
+-	0x1a9d4: 0x6c97e620, 0x1a9d5: 0x6ca29420, 0x1a9d6: 0x6c0c0820, 0x1a9d7: 0x6c4c7220,
+-	0x1a9d8: 0x6d2adc20, 0x1a9d9: 0x6ca29620, 0x1a9da: 0x6c053420, 0x1a9db: 0x6d2f3c20,
+-	0x1a9dc: 0x6c6e2820, 0x1a9dd: 0x6c15d220, 0x1a9de: 0x6c3ed620, 0x1a9df: 0x6d36a620,
+-	0x1a9e0: 0x6c54f420, 0x1a9e1: 0x6c385820, 0x1a9e2: 0x6c207620, 0x1a9e3: 0x6c09f220,
+-	0x1a9e4: 0x6c0ae220, 0x1a9e5: 0x6d2f4820, 0x1a9e6: 0x6c9d8420, 0x1a9e7: 0x6cbba420,
+-	0x1a9e8: 0x6c14d820, 0x1a9e9: 0x6c3b8620, 0x1a9ea: 0x6c9b4820, 0x1a9eb: 0x6c053e20,
+-	0x1a9ec: 0x6c1de420, 0x1a9ed: 0x6c9eee20, 0x1a9ee: 0x6c1eb820, 0x1a9ef: 0x6c6b3220,
+-	0x1a9f0: 0x6cfc3e20, 0x1a9f1: 0x6c7fe220, 0x1a9f2: 0x6c420a20, 0x1a9f3: 0x6cb26e20,
+-	0x1a9f4: 0x6ca6f220, 0x1a9f5: 0x6c646020, 0x1a9f6: 0x6c0e0420, 0x1a9f7: 0x6c0e0c20,
+-	0x1a9f8: 0x6d041620, 0x1a9f9: 0x6c422620, 0x1a9fa: 0x6d107e20, 0x1a9fb: 0x6c58ec20,
+-	0x1a9fc: 0x6d200c20, 0x1a9fd: 0x6d1e9a20, 0x1a9fe: 0x6c613e20, 0x1a9ff: 0x6c4a0220,
+-	// Block 0x6a8, offset 0x1aa00
+-	0x1aa00: 0x6cb04220, 0x1aa01: 0x6ce62420, 0x1aa02: 0x6d2b3420, 0x1aa03: 0x6c4a0420,
+-	0x1aa04: 0x6d3c0820, 0x1aa05: 0x6ca1b020, 0x1aa06: 0x6cbec220, 0x1aa07: 0x6c091c20,
+-	0x1aa08: 0x6cbd5220, 0x1aa09: 0x6c33d820, 0x1aa0a: 0x6c206c20, 0x1aa0b: 0x6c4ac220,
+-	0x1aa0c: 0x6d0b4820, 0x1aa0d: 0x6c043020, 0x1aa0e: 0x6c6bb620, 0x1aa0f: 0x6d067020,
+-	0x1aa10: 0x6c913420, 0x1aa11: 0x6cf42020, 0x1aa12: 0x6d3c5420, 0x1aa13: 0x6c7a8220,
+-	0x1aa14: 0x6d1b9e20, 0x1aa15: 0x6c2bd620, 0x1aa16: 0x6cad4c20, 0x1aa17: 0x6c2d3c20,
+-	0x1aa18: 0x6d0ad020, 0x1aa19: 0x6c9eac20, 0x1aa1a: 0x6c44ba20, 0x1aa1b: 0x6c22b820,
+-	0x1aa1c: 0x6c3f3e20, 0x1aa1d: 0x6ce71820, 0x1aa1e: 0x6cacf220, 0x1aa1f: 0x6c3a8220,
+-	0x1aa20: 0x6cfdb420, 0x1aa21: 0x6d15ce20, 0x1aa22: 0x6d359820, 0x1aa23: 0x6ce54e20,
+-	0x1aa24: 0x6d359a20, 0x1aa25: 0x6d04be20, 0x1aa26: 0x6c324420, 0x1aa27: 0x6d428e20,
+-	0x1aa28: 0x6cfe9c20, 0x1aa29: 0x6ce89020, 0x1aa2a: 0x6c4ae620, 0x1aa2b: 0x6c7a8820,
+-	0x1aa2c: 0x6c984e20, 0x1aa2d: 0x6ce66420, 0x1aa2e: 0x6d1fb620, 0x1aa2f: 0x6c101020,
+-	0x1aa30: 0x6c0e0e20, 0x1aa31: 0x6c1a6e20, 0x1aa32: 0x6c7ef620, 0x1aa33: 0x6c097620,
+-	0x1aa34: 0x6c601620, 0x1aa35: 0x6c012620, 0x1aa36: 0x6cd5c220, 0x1aa37: 0x6c772c20,
+-	0x1aa38: 0x6d1d8420, 0x1aa39: 0x6ceb7820, 0x1aa3a: 0x6cd91620, 0x1aa3b: 0x6cd5c420,
+-	0x1aa3c: 0x6cbea620, 0x1aa3d: 0x6d233620, 0x1aa3e: 0x6d224a20, 0x1aa3f: 0x6c9eb420,
+-	// Block 0x6a9, offset 0x1aa40
+-	0x1aa40: 0x6cd9ac20, 0x1aa41: 0x6c12e620, 0x1aa42: 0x6cfd7220, 0x1aa43: 0x6c3aaa20,
+-	0x1aa44: 0x6c6ff820, 0x1aa45: 0x6c365420, 0x1aa46: 0x6c4a6620, 0x1aa47: 0x6c8f3420,
+-	0x1aa48: 0x6ccc5620, 0x1aa49: 0x6c881020, 0x1aa4a: 0x6c80b420, 0x1aa4b: 0x6cd9ae20,
+-	0x1aa4c: 0x6d365220, 0x1aa4d: 0x6cb3f620, 0x1aa4e: 0x6cbeac20, 0x1aa4f: 0x6c700e20,
+-	0x1aa50: 0x6c6ffa20, 0x1aa51: 0x6c6c9e20, 0x1aa52: 0x6c025020, 0x1aa53: 0x6c7e0420,
+-	0x1aa54: 0x6c90a020, 0x1aa55: 0x6d1b5e20, 0x1aa56: 0x6c8a9e20, 0x1aa57: 0x6c277e20,
+-	0x1aa58: 0x6c927c20, 0x1aa59: 0x6d182220, 0x1aa5a: 0x6c1ea420, 0x1aa5b: 0x6c151a20,
+-	0x1aa5c: 0x6ce8d820, 0x1aa5d: 0x6cd81220, 0x1aa5e: 0x6d02e420, 0x1aa5f: 0x6c9eb820,
+-	0x1aa60: 0x6c16f420, 0x1aa61: 0x6cf46220, 0x1aa62: 0x6c3ac420, 0x1aa63: 0x6c4a0820,
+-	0x1aa64: 0x6c7aa620, 0x1aa65: 0x6c7b3c20, 0x1aa66: 0x6c0a4820, 0x1aa67: 0x6cbb2220,
+-	0x1aa68: 0x6d021020, 0x1aa69: 0x6c8c2c20, 0x1aa6a: 0x6c8c2e20, 0x1aa6b: 0x6c8a3220,
+-	0x1aa6c: 0x6c916e20, 0x1aa6d: 0x6c631220, 0x1aa6e: 0x6d1d2420, 0x1aa6f: 0x6cfafa20,
+-	0x1aa70: 0x6ce65420, 0x1aa71: 0x6d1dd820, 0x1aa72: 0x6c84bc20, 0x1aa73: 0x6ce65820,
+-	0x1aa74: 0x6d1ac020, 0x1aa75: 0x6d09d220, 0x1aa76: 0x6d0c5220, 0x1aa77: 0x6ce65c20,
+-	0x1aa78: 0x6c2b5220, 0x1aa79: 0x6cac1420, 0x1aa7a: 0x6c665420, 0x1aa7b: 0x6c5b1c20,
+-	0x1aa7c: 0x6ca39a20, 0x1aa7d: 0x6c5b2220, 0x1aa7e: 0x6c45cc20, 0x1aa7f: 0x6ca75620,
+-	// Block 0x6aa, offset 0x1aa80
+-	0x1aa80: 0x6c762420, 0x1aa81: 0x6c0b6620, 0x1aa82: 0x6d166220, 0x1aa83: 0x6cb73620,
+-	0x1aa84: 0x6ca9f020, 0x1aa85: 0x6c3bc620, 0x1aa86: 0x6c71a420, 0x1aa87: 0x6d0d5620,
+-	0x1aa88: 0x6d16ea20, 0x1aa89: 0x6d2a0020, 0x1aa8a: 0x6c09f420, 0x1aa8b: 0x6d163c20,
+-	0x1aa8c: 0x6d13ba20, 0x1aa8d: 0x6c37b820, 0x1aa8e: 0x6cc9f820, 0x1aa8f: 0x6cd2fc20,
+-	0x1aa90: 0x6c37ba20, 0x1aa91: 0x6cd38020, 0x1aa92: 0x6cd39a20, 0x1aa93: 0x6c454c20,
+-	0x1aa94: 0x6c2e0420, 0x1aa95: 0x6d1ac420, 0x1aa96: 0x6c563620, 0x1aa97: 0x6c3dc820,
+-	0x1aa98: 0x6c52ea20, 0x1aa99: 0x6cf34420, 0x1aa9a: 0x6ce99c20, 0x1aa9b: 0x6c1af420,
+-	0x1aa9c: 0x6c67d420, 0x1aa9d: 0x6c03a820, 0x1aa9e: 0x6cd04420, 0x1aa9f: 0x6c2c1420,
+-	0x1aaa0: 0x6d2eb020, 0x1aaa1: 0x6c73dc20, 0x1aaa2: 0x6ce1b020, 0x1aaa3: 0x6c3f4020,
+-	0x1aaa4: 0x6c2bd820, 0x1aaa5: 0x6c9c3820, 0x1aaa6: 0x6cfb2c20, 0x1aaa7: 0x6c552220,
+-	0x1aaa8: 0x6c173820, 0x1aaa9: 0x6caa4e20, 0x1aaaa: 0x6c6e4c20, 0x1aaab: 0x6d31be20,
+-	0x1aaac: 0x6d14be20, 0x1aaad: 0x6c9ce020, 0x1aaae: 0x6cc28e20, 0x1aaaf: 0x6cec8220,
+-	0x1aab0: 0x6cce5e20, 0x1aab1: 0x6cc91820, 0x1aab2: 0x6d078620, 0x1aab3: 0x6c6e6420,
+-	0x1aab4: 0x6c2dc220, 0x1aab5: 0x6d2eb420, 0x1aab6: 0x6c67de20, 0x1aab7: 0x6cbb0820,
+-	0x1aab8: 0x6cae9a20, 0x1aab9: 0x6c287820, 0x1aaba: 0x6cbb0e20, 0x1aabb: 0x6c099620,
+-	0x1aabc: 0x6c099820, 0x1aabd: 0x6ccf4820, 0x1aabe: 0x6c288820, 0x1aabf: 0x6c65aa20,
+-	// Block 0x6ab, offset 0x1aac0
+-	0x1aac0: 0x6c46b420, 0x1aac1: 0x6c448e20, 0x1aac2: 0x6c37f020, 0x1aac3: 0x6c09c420,
+-	0x1aac4: 0x6c79c020, 0x1aac5: 0x6c673820, 0x1aac6: 0x6c0d1820, 0x1aac7: 0x6cff1420,
+-	0x1aac8: 0x6c28a620, 0x1aac9: 0x6c4c2e20, 0x1aaca: 0x6c67f820, 0x1aacb: 0x6c538620,
+-	0x1aacc: 0x6c9c7820, 0x1aacd: 0x6c4c4420, 0x1aace: 0x6ceca420, 0x1aacf: 0x6c751620,
+-	0x1aad0: 0x6c616820, 0x1aad1: 0x6c616a20, 0x1aad2: 0x6c4a3220, 0x1aad3: 0x6c28f820,
+-	0x1aad4: 0x6c921a20, 0x1aad5: 0x6c921c20, 0x1aad6: 0x6ce98820, 0x1aad7: 0x6c5bb420,
+-	0x1aad8: 0x6d362220, 0x1aad9: 0x6c5bda20, 0x1aada: 0x6c5bdc20, 0x1aadb: 0x6d155c20,
+-	0x1aadc: 0x6d155e20, 0x1aadd: 0x6d158020, 0x1aade: 0x6d158220, 0x1aadf: 0x6d265e20,
+-	0x1aae0: 0x6d266220, 0x1aae1: 0x6cccb220, 0x1aae2: 0x6d03c020, 0x1aae3: 0x6cf17c20,
+-	0x1aae4: 0x6ce71020, 0x1aae5: 0x6d0e4620, 0x1aae6: 0x6d0e4820, 0x1aae7: 0x6d22f020,
+-	0x1aae8: 0x6c1a9c20, 0x1aae9: 0x6c112620, 0x1aaea: 0x6c0bfa20, 0x1aaeb: 0x6c2dc420,
+-	0x1aaec: 0x6c0d3020, 0x1aaed: 0x6cae9e20, 0x1aaee: 0x6d1e4620, 0x1aaef: 0x6cb19820,
+-	0x1aaf0: 0x6d2ec420, 0x1aaf1: 0x6d1d0420, 0x1aaf2: 0x6c1af020, 0x1aaf3: 0x6c1bd420,
+-	0x1aaf4: 0x6d3d1c20, 0x1aaf5: 0x6ceb6c20, 0x1aaf6: 0x6c5fc820, 0x1aaf7: 0x6c39be20,
+-	0x1aaf8: 0x6d379220, 0x1aaf9: 0x6d168420, 0x1aafa: 0x6cedde20, 0x1aafb: 0x6c17fe20,
+-	0x1aafc: 0x6c08c020, 0x1aafd: 0x6c2b1620, 0x1aafe: 0x6c8caa20, 0x1aaff: 0x6c3dea20,
+-	// Block 0x6ac, offset 0x1ab00
+-	0x1ab00: 0x6cedfa20, 0x1ab01: 0x6d328820, 0x1ab02: 0x6c241e20, 0x1ab03: 0x6cedfc20,
+-	0x1ab04: 0x6c6e4e20, 0x1ab05: 0x6c274220, 0x1ab06: 0x6cf59e20, 0x1ab07: 0x6d0a7020,
+-	0x1ab08: 0x6c523a20, 0x1ab09: 0x6d0f9420, 0x1ab0a: 0x6c57e820, 0x1ab0b: 0x6c93d020,
+-	0x1ab0c: 0x6c546420, 0x1ab0d: 0x6cee0220, 0x1ab0e: 0x6c1a6620, 0x1ab0f: 0x6d35b220,
+-	0x1ab10: 0x6d061820, 0x1ab11: 0x6c6e6620, 0x1ab12: 0x6ce89220, 0x1ab13: 0x6c238e20,
+-	0x1ab14: 0x6d377e20, 0x1ab15: 0x6c7eea20, 0x1ab16: 0x6c239620, 0x1ab17: 0x6c2a9020,
+-	0x1ab18: 0x6cabf820, 0x1ab19: 0x6cf7dc20, 0x1ab1a: 0x6c300020, 0x1ab1b: 0x6c61e620,
+-	0x1ab1c: 0x6c16a620, 0x1ab1d: 0x6d35dc20, 0x1ab1e: 0x6c239820, 0x1ab1f: 0x6d387020,
+-	0x1ab20: 0x6c7ef820, 0x1ab21: 0x6d233820, 0x1ab22: 0x6d018e20, 0x1ab23: 0x6c6bdc20,
+-	0x1ab24: 0x6c667820, 0x1ab25: 0x6cd38220, 0x1ab26: 0x6c641620, 0x1ab27: 0x6c0b9820,
+-	0x1ab28: 0x6c59c220, 0x1ab29: 0x6c3ff020, 0x1ab2a: 0x6d0a0e20, 0x1ab2b: 0x6cefbe20,
+-	0x1ab2c: 0x6cad0420, 0x1ab2d: 0x6d110c20, 0x1ab2e: 0x6cee9820, 0x1ab2f: 0x6cf64820,
+-	0x1ab30: 0x6d32d020, 0x1ab31: 0x6cb1b620, 0x1ab32: 0x6ce36220, 0x1ab33: 0x6c2a7c20,
+-	0x1ab34: 0x6d32de20, 0x1ab35: 0x6d32f020, 0x1ab36: 0x6c0cf420, 0x1ab37: 0x6c2a7e20,
+-	0x1ab38: 0x6c1cd420, 0x1ab39: 0x6c183020, 0x1ab3a: 0x6c692620, 0x1ab3b: 0x6c5c2c20,
+-	0x1ab3c: 0x6c693c20, 0x1ab3d: 0x6c5af220, 0x1ab3e: 0x6c9a2e20, 0x1ab3f: 0x6c906c20,
+-	// Block 0x6ad, offset 0x1ab40
+-	0x1ab40: 0x6cfd9220, 0x1ab41: 0x6c067a20, 0x1ab42: 0x6cc1fe20, 0x1ab43: 0x6d02a220,
+-	0x1ab44: 0x6d036220, 0x1ab45: 0x6c090420, 0x1ab46: 0x6d164020, 0x1ab47: 0x6c820c20,
+-	0x1ab48: 0x6cc56420, 0x1ab49: 0x6c29b620, 0x1ab4a: 0x6c2f8e20, 0x1ab4b: 0x6c410820,
+-	0x1ab4c: 0x6c618020, 0x1ab4d: 0x6cc58620, 0x1ab4e: 0x6cc56a20, 0x1ab4f: 0x6c162620,
+-	0x1ab50: 0x6ce05020, 0x1ab51: 0x6ce26820, 0x1ab52: 0x6ce26a20, 0x1ab53: 0x6c416020,
+-	0x1ab54: 0x6cb72a20, 0x1ab55: 0x6cd2fe20, 0x1ab56: 0x6c25ae20, 0x1ab57: 0x6d357420,
+-	0x1ab58: 0x6cee4620, 0x1ab59: 0x6c982820, 0x1ab5a: 0x6cf56e20, 0x1ab5b: 0x6c388220,
+-	0x1ab5c: 0x6d1ba020, 0x1ab5d: 0x6ce4d820, 0x1ab5e: 0x6c9f2c20, 0x1ab5f: 0x6cf1ca20,
+-	0x1ab60: 0x6d379620, 0x1ab61: 0x6c1cac20, 0x1ab62: 0x6cf4b620, 0x1ab63: 0x6c5fca20,
+-	0x1ab64: 0x6cf42220, 0x1ab65: 0x6cf84620, 0x1ab66: 0x6c639a20, 0x1ab67: 0x6d1e8e20,
+-	0x1ab68: 0x6ced7420, 0x1ab69: 0x6c230220, 0x1ab6a: 0x6cd90220, 0x1ab6b: 0x6c7b0e20,
+-	0x1ab6c: 0x6d22d020, 0x1ab6d: 0x6c0b6c20, 0x1ab6e: 0x6d357620, 0x1ab6f: 0x6cb57420,
+-	0x1ab70: 0x6c251820, 0x1ab71: 0x6c189a20, 0x1ab72: 0x6cdf5e20, 0x1ab73: 0x6cea3e20,
+-	0x1ab74: 0x6cb96e20, 0x1ab75: 0x6ca75a20, 0x1ab76: 0x6c5cde20, 0x1ab77: 0x6d045420,
+-	0x1ab78: 0x6ca97620, 0x1ab79: 0x6c7bb620, 0x1ab7a: 0x6cfa7820, 0x1ab7b: 0x6d02aa20,
+-	0x1ab7c: 0x6c772420, 0x1ab7d: 0x6c549e20, 0x1ab7e: 0x6c767c20, 0x1ab7f: 0x6c3bce20,
+-	// Block 0x6ae, offset 0x1ab80
+-	0x1ab80: 0x6c57e620, 0x1ab81: 0x6cdf6220, 0x1ab82: 0x6cd95220, 0x1ab83: 0x6cf42420,
+-	0x1ab84: 0x6cab9a20, 0x1ab85: 0x6c170220, 0x1ab86: 0x6c20a020, 0x1ab87: 0x6c71fa20,
+-	0x1ab88: 0x6d16b420, 0x1ab89: 0x6c05e620, 0x1ab8a: 0x6c173a20, 0x1ab8b: 0x6c9f2e20,
+-	0x1ab8c: 0x6cadb020, 0x1ab8d: 0x6d428020, 0x1ab8e: 0x6d2b7620, 0x1ab8f: 0x6d104020,
+-	0x1ab90: 0x6c720a20, 0x1ab91: 0x6c04e820, 0x1ab92: 0x6caa5e20, 0x1ab93: 0x6ca49420,
+-	0x1ab94: 0x6d328a20, 0x1ab95: 0x6cabe820, 0x1ab96: 0x6c106a20, 0x1ab97: 0x6ce5ea20,
+-	0x1ab98: 0x6c567020, 0x1ab99: 0x6c566420, 0x1ab9a: 0x6c720c20, 0x1ab9b: 0x6c267e20,
+-	0x1ab9c: 0x6c87f420, 0x1ab9d: 0x6cd7d420, 0x1ab9e: 0x6c1d8e20, 0x1ab9f: 0x6c2c2020,
+-	0x1aba0: 0x6c274420, 0x1aba1: 0x6d147020, 0x1aba2: 0x6ce84020, 0x1aba3: 0x6d1f0620,
+-	0x1aba4: 0x6c3d4820, 0x1aba5: 0x6c5ff420, 0x1aba6: 0x6cae5420, 0x1aba7: 0x6d041820,
+-	0x1aba8: 0x6d260420, 0x1aba9: 0x6ca5be20, 0x1abaa: 0x6c48e620, 0x1abab: 0x6c3dec20,
+-	0x1abac: 0x6cf84820, 0x1abad: 0x6c093220, 0x1abae: 0x6d1e9620, 0x1abaf: 0x6cbc9620,
+-	0x1abb0: 0x6d086e20, 0x1abb1: 0x6c230820, 0x1abb2: 0x6c0dc220, 0x1abb3: 0x6c5a4220,
+-	0x1abb4: 0x6d068020, 0x1abb5: 0x6c1f0e20, 0x1abb6: 0x6c093420, 0x1abb7: 0x6cd5ac20,
+-	0x1abb8: 0x6cf5a020, 0x1abb9: 0x6cdf9620, 0x1abba: 0x6d1e8220, 0x1abbb: 0x6d3fe820,
+-	0x1abbc: 0x6c334220, 0x1abbd: 0x6ca1b220, 0x1abbe: 0x6d34f220, 0x1abbf: 0x6d16b620,
+-	// Block 0x6af, offset 0x1abc0
+-	0x1abc0: 0x6cd33220, 0x1abc1: 0x6ca59420, 0x1abc2: 0x6d09e820, 0x1abc3: 0x6cd33420,
+-	0x1abc4: 0x6cf86020, 0x1abc5: 0x6c81a420, 0x1abc6: 0x6c525820, 0x1abc7: 0x6c7b8e20,
+-	0x1abc8: 0x6ca1c620, 0x1abc9: 0x6d34fe20, 0x1abca: 0x6d008020, 0x1abcb: 0x6c88e820,
+-	0x1abcc: 0x6ce55220, 0x1abcd: 0x6c5a4820, 0x1abce: 0x6c2e7020, 0x1abcf: 0x6c502820,
+-	0x1abd0: 0x6c799e20, 0x1abd1: 0x6c4ad420, 0x1abd2: 0x6c525a20, 0x1abd3: 0x6cf5a220,
+-	0x1abd4: 0x6c68ce20, 0x1abd5: 0x6cd5b820, 0x1abd6: 0x6cd8fe20, 0x1abd7: 0x6c54aa20,
+-	0x1abd8: 0x6cbfa420, 0x1abd9: 0x6d104220, 0x1abda: 0x6c5ba820, 0x1abdb: 0x6c5b2420,
+-	0x1abdc: 0x6c1bfa20, 0x1abdd: 0x6c63b020, 0x1abde: 0x6d149a20, 0x1abdf: 0x6d045e20,
+-	0x1abe0: 0x6c48ec20, 0x1abe1: 0x6c8c4c20, 0x1abe2: 0x6c5a9220, 0x1abe3: 0x6d3f3a20,
+-	0x1abe4: 0x6d068e20, 0x1abe5: 0x6c1b8a20, 0x1abe6: 0x6cce4e20, 0x1abe7: 0x6caa7c20,
+-	0x1abe8: 0x6c524220, 0x1abe9: 0x6c371020, 0x1abea: 0x6c788e20, 0x1abeb: 0x6c305e20,
+-	0x1abec: 0x6ce48820, 0x1abed: 0x6c457c20, 0x1abee: 0x6cc29020, 0x1abef: 0x6cf94220,
+-	0x1abf0: 0x6cb84a20, 0x1abf1: 0x6d268c20, 0x1abf2: 0x6cae5820, 0x1abf3: 0x6c790020,
+-	0x1abf4: 0x6c2a6420, 0x1abf5: 0x6c5baa20, 0x1abf6: 0x6c35fa20, 0x1abf7: 0x6d003220,
+-	0x1abf8: 0x6ce7c620, 0x1abf9: 0x6d0be020, 0x1abfa: 0x6c764c20, 0x1abfb: 0x6c12ce20,
+-	0x1abfc: 0x6ca4e020, 0x1abfd: 0x6d282020, 0x1abfe: 0x6c984020, 0x1abff: 0x6d1e2a20,
+-	// Block 0x6b0, offset 0x1ac00
+-	0x1ac00: 0x6d1e2220, 0x1ac01: 0x6d24d420, 0x1ac02: 0x6caf5220, 0x1ac03: 0x6c7da020,
+-	0x1ac04: 0x6cbb6a20, 0x1ac05: 0x6d269420, 0x1ac06: 0x6d230c20, 0x1ac07: 0x6ce89420,
+-	0x1ac08: 0x6c6bd820, 0x1ac09: 0x6cf5e220, 0x1ac0a: 0x6d304a20, 0x1ac0b: 0x6c8c4e20,
+-	0x1ac0c: 0x6ce3e020, 0x1ac0d: 0x6c4e9620, 0x1ac0e: 0x6c502a20, 0x1ac0f: 0x6cbca820,
+-	0x1ac10: 0x6ce3ea20, 0x1ac11: 0x6c108220, 0x1ac12: 0x6d172620, 0x1ac13: 0x6cba4a20,
+-	0x1ac14: 0x6c5b4c20, 0x1ac15: 0x6cf5bc20, 0x1ac16: 0x6c070020, 0x1ac17: 0x6c975e20,
+-	0x1ac18: 0x6d13e420, 0x1ac19: 0x6c524820, 0x1ac1a: 0x6cd95620, 0x1ac1b: 0x6cc29420,
+-	0x1ac1c: 0x6c1a6820, 0x1ac1d: 0x6c7c3820, 0x1ac1e: 0x6cf4d020, 0x1ac1f: 0x6cf4d220,
+-	0x1ac20: 0x6d1e9e20, 0x1ac21: 0x6c83b620, 0x1ac22: 0x6c89ae20, 0x1ac23: 0x6c590e20,
+-	0x1ac24: 0x6c230c20, 0x1ac25: 0x6d175a20, 0x1ac26: 0x6d269620, 0x1ac27: 0x6c85c820,
+-	0x1ac28: 0x6ca8e620, 0x1ac29: 0x6ca4e620, 0x1ac2a: 0x6c360e20, 0x1ac2b: 0x6cc3b620,
+-	0x1ac2c: 0x6d080e20, 0x1ac2d: 0x6cb8c420, 0x1ac2e: 0x6cf4d420, 0x1ac2f: 0x6c9fa420,
+-	0x1ac30: 0x6c239a20, 0x1ac31: 0x6c3a5220, 0x1ac32: 0x6c069c20, 0x1ac33: 0x6c344c20,
+-	0x1ac34: 0x6c253420, 0x1ac35: 0x6c171220, 0x1ac36: 0x6c9af220, 0x1ac37: 0x6cca4e20,
+-	0x1ac38: 0x6c61ea20, 0x1ac39: 0x6c498820, 0x1ac3a: 0x6c497e20, 0x1ac3b: 0x6d042820,
+-	0x1ac3c: 0x6c2a0e20, 0x1ac3d: 0x6cb4e620, 0x1ac3e: 0x6c797420, 0x1ac3f: 0x6ce4ec20,
+-	// Block 0x6b1, offset 0x1ac40
+-	0x1ac40: 0x6c94f220, 0x1ac41: 0x6cf60a20, 0x1ac42: 0x6c76d220, 0x1ac43: 0x6c4bc020,
+-	0x1ac44: 0x6ca6a020, 0x1ac45: 0x6cbe7620, 0x1ac46: 0x6c1da020, 0x1ac47: 0x6c339820,
+-	0x1ac48: 0x6c4cb620, 0x1ac49: 0x6d2d7420, 0x1ac4a: 0x6c6da820, 0x1ac4b: 0x6ced0420,
+-	0x1ac4c: 0x6d24ea20, 0x1ac4d: 0x6c6c4220, 0x1ac4e: 0x6c620020, 0x1ac4f: 0x6c7f9620,
+-	0x1ac50: 0x6d231020, 0x1ac51: 0x6c5dca20, 0x1ac52: 0x6c512620, 0x1ac53: 0x6cc2da20,
+-	0x1ac54: 0x6cdfdc20, 0x1ac55: 0x6ce3ec20, 0x1ac56: 0x6ce3f420, 0x1ac57: 0x6ca81620,
+-	0x1ac58: 0x6cee0e20, 0x1ac59: 0x6c21b420, 0x1ac5a: 0x6c54bc20, 0x1ac5b: 0x6c5cc020,
+-	0x1ac5c: 0x6cf5e420, 0x1ac5d: 0x6c16ea20, 0x1ac5e: 0x6d02ca20, 0x1ac5f: 0x6ceefe20,
+-	0x1ac60: 0x6c5bc020, 0x1ac61: 0x6c363420, 0x1ac62: 0x6cdd6620, 0x1ac63: 0x6d3fee20,
+-	0x1ac64: 0x6c648420, 0x1ac65: 0x6d1e3620, 0x1ac66: 0x6c2d4e20, 0x1ac67: 0x6c723c20,
+-	0x1ac68: 0x6c11ce20, 0x1ac69: 0x6c19fc20, 0x1ac6a: 0x6c2a6e20, 0x1ac6b: 0x6c072220,
+-	0x1ac6c: 0x6cbcb420, 0x1ac6d: 0x6c119420, 0x1ac6e: 0x6c287a20, 0x1ac6f: 0x6c498020,
+-	0x1ac70: 0x6c34f420, 0x1ac71: 0x6ca4f820, 0x1ac72: 0x6d283220, 0x1ac73: 0x6cfdea20,
+-	0x1ac74: 0x6d3c8420, 0x1ac75: 0x6c2ea220, 0x1ac76: 0x6c59c420, 0x1ac77: 0x6c217e20,
+-	0x1ac78: 0x6cbf2220, 0x1ac79: 0x6cc54c20, 0x1ac7a: 0x6d037220, 0x1ac7b: 0x6c12e820,
+-	0x1ac7c: 0x6c0b3e20, 0x1ac7d: 0x6c9fac20, 0x1ac7e: 0x6d3f8a20, 0x1ac7f: 0x6ce32220,
+-	// Block 0x6b2, offset 0x1ac80
+-	0x1ac80: 0x6cbc2620, 0x1ac81: 0x6c1db820, 0x1ac82: 0x6c073020, 0x1ac83: 0x6d079820,
+-	0x1ac84: 0x6cee8620, 0x1ac85: 0x6c43ea20, 0x1ac86: 0x6cb8ee20, 0x1ac87: 0x6cefc020,
+-	0x1ac88: 0x6d236a20, 0x1ac89: 0x6d212420, 0x1ac8a: 0x6c099a20, 0x1ac8b: 0x6d079a20,
+-	0x1ac8c: 0x6c592020, 0x1ac8d: 0x6c9fb620, 0x1ac8e: 0x6c099c20, 0x1ac8f: 0x6d17e220,
+-	0x1ac90: 0x6c9e2420, 0x1ac91: 0x6d1e3820, 0x1ac92: 0x6c768820, 0x1ac93: 0x6c296620,
+-	0x1ac94: 0x6d19e020, 0x1ac95: 0x6c363620, 0x1ac96: 0x6c18c620, 0x1ac97: 0x6c998a20,
+-	0x1ac98: 0x6cb86820, 0x1ac99: 0x6c78b820, 0x1ac9a: 0x6d214820, 0x1ac9b: 0x6c00a820,
+-	0x1ac9c: 0x6cbcc020, 0x1ac9d: 0x6d0d7e20, 0x1ac9e: 0x6caaf620, 0x1ac9f: 0x6c41dc20,
+-	0x1aca0: 0x6d283420, 0x1aca1: 0x6d3ff020, 0x1aca2: 0x6cc9c220, 0x1aca3: 0x6c839620,
+-	0x1aca4: 0x6c3bd820, 0x1aca5: 0x6d1d6620, 0x1aca6: 0x6c7cf820, 0x1aca7: 0x6c7cfa20,
+-	0x1aca8: 0x6cc3d820, 0x1aca9: 0x6c459420, 0x1acaa: 0x6d27ae20, 0x1acab: 0x6cdaca20,
+-	0x1acac: 0x6cdae420, 0x1acad: 0x6cb5f820, 0x1acae: 0x6d110e20, 0x1acaf: 0x6cd96020,
+-	0x1acb0: 0x6c5a6c20, 0x1acb1: 0x6c604e20, 0x1acb2: 0x6c478c20, 0x1acb3: 0x6c726220,
+-	0x1acb4: 0x6c20ae20, 0x1acb5: 0x6ca6aa20, 0x1acb6: 0x6d00b620, 0x1acb7: 0x6c766020,
+-	0x1acb8: 0x6d332a20, 0x1acb9: 0x6d1e4820, 0x1acba: 0x6c12ae20, 0x1acbb: 0x6d0a9a20,
+-	0x1acbc: 0x6cd0aa20, 0x1acbd: 0x6c0f1020, 0x1acbe: 0x6c768e20, 0x1acbf: 0x6d262820,
+-	// Block 0x6b3, offset 0x1acc0
+-	0x1acc0: 0x6cf89e20, 0x1acc1: 0x6c5d3420, 0x1acc2: 0x6d1e5020, 0x1acc3: 0x6d102420,
+-	0x1acc4: 0x6c862e20, 0x1acc5: 0x6ccaaa20, 0x1acc6: 0x6ce1d420, 0x1acc7: 0x6d19f220,
+-	0x1acc8: 0x6c224e20, 0x1acc9: 0x6d06f220, 0x1acca: 0x6cba5820, 0x1accb: 0x6cdf7c20,
+-	0x1accc: 0x6c599420, 0x1accd: 0x6d283a20, 0x1acce: 0x6cd0ac20, 0x1accf: 0x6ca03820,
+-	0x1acd0: 0x6c463020, 0x1acd1: 0x6ccf5020, 0x1acd2: 0x6c23a420, 0x1acd3: 0x6cb15820,
+-	0x1acd4: 0x6ca29820, 0x1acd5: 0x6ca2a020, 0x1acd6: 0x6c4c7620, 0x1acd7: 0x6c1c5620,
+-	0x1acd8: 0x6c11d420, 0x1acd9: 0x6c11a620, 0x1acda: 0x6c119c20, 0x1acdb: 0x6c24da20,
+-	0x1acdc: 0x6c9fc220, 0x1acdd: 0x6ce27e20, 0x1acde: 0x6d2ec820, 0x1acdf: 0x6ce7ce20,
+-	0x1ace0: 0x6c02d820, 0x1ace1: 0x6cd6d620, 0x1ace2: 0x6c97e820, 0x1ace3: 0x6c499620,
+-	0x1ace4: 0x6cc3ea20, 0x1ace5: 0x6d2a8420, 0x1ace6: 0x6c701620, 0x1ace7: 0x6c5c1020,
+-	0x1ace8: 0x6c765820, 0x1ace9: 0x6c881220, 0x1acea: 0x6cab9e20, 0x1aceb: 0x6cd96c20,
+-	0x1acec: 0x6cbd8e20, 0x1aced: 0x6d1b7020, 0x1acee: 0x6c93f220, 0x1acef: 0x6cce0c20,
+-	0x1acf0: 0x6cf0b820, 0x1acf1: 0x6ce95220, 0x1acf2: 0x6c976c20, 0x1acf3: 0x6cb8fe20,
+-	0x1acf4: 0x6ccf6220, 0x1acf5: 0x6d1d9c20, 0x1acf6: 0x6cbed620, 0x1acf7: 0x6c773e20,
+-	0x1acf8: 0x6c2c8e20, 0x1acf9: 0x6d348e20, 0x1acfa: 0x6c90a220, 0x1acfb: 0x6c738220,
+-	0x1acfc: 0x6cb51c20, 0x1acfd: 0x6cb50c20, 0x1acfe: 0x6d23c020, 0x1acff: 0x6cb2c220,
+-	// Block 0x6b4, offset 0x1ad00
+-	0x1ad00: 0x6c89f620, 0x1ad01: 0x6c23da20, 0x1ad02: 0x6d1eae20, 0x1ad03: 0x6c1cd620,
+-	0x1ad04: 0x6d36aa20, 0x1ad05: 0x6ce7d020, 0x1ad06: 0x6c197a20, 0x1ad07: 0x6cb7c020,
+-	0x1ad08: 0x6cc12020, 0x1ad09: 0x6caebc20, 0x1ad0a: 0x6c075a20, 0x1ad0b: 0x6c0cb820,
+-	0x1ad0c: 0x6cbf5c20, 0x1ad0d: 0x6c686a20, 0x1ad0e: 0x6d2b8a20, 0x1ad0f: 0x6c1c4220,
+-	0x1ad10: 0x6c883620, 0x1ad11: 0x6cb2cc20, 0x1ad12: 0x6c7d0c20, 0x1ad13: 0x6c5c1220,
+-	0x1ad14: 0x6cbbf020, 0x1ad15: 0x6c1a3620, 0x1ad16: 0x6d1b7a20, 0x1ad17: 0x6d1b7c20,
+-	0x1ad18: 0x6cf80620, 0x1ad19: 0x6cf6ba20, 0x1ad1a: 0x6c28a820, 0x1ad1b: 0x6ce00220,
+-	0x1ad1c: 0x6c34a220, 0x1ad1d: 0x6c335e20, 0x1ad1e: 0x6c335a20, 0x1ad1f: 0x6cdaf820,
+-	0x1ad20: 0x6c74b620, 0x1ad21: 0x6c130e20, 0x1ad22: 0x6cff0220, 0x1ad23: 0x6c385a20,
+-	0x1ad24: 0x6c3be420, 0x1ad25: 0x6c817220, 0x1ad26: 0x6c81da20, 0x1ad27: 0x6c1cd820,
+-	0x1ad28: 0x6c4db820, 0x1ad29: 0x6cb7d220, 0x1ad2a: 0x6cfb7c20, 0x1ad2b: 0x6c9fc420,
+-	0x1ad2c: 0x6c6e2a20, 0x1ad2d: 0x6c8a7420, 0x1ad2e: 0x6cf46420, 0x1ad2f: 0x6c11da20,
+-	0x1ad30: 0x6c749020, 0x1ad31: 0x6c245420, 0x1ad32: 0x6cfd0820, 0x1ad33: 0x6ce06e20,
+-	0x1ad34: 0x6cd12220, 0x1ad35: 0x6caf9820, 0x1ad36: 0x6d188e20, 0x1ad37: 0x6c1f7420,
+-	0x1ad38: 0x6cfad620, 0x1ad39: 0x6ca4c020, 0x1ad3a: 0x6c28ac20, 0x1ad3b: 0x6ce07420,
+-	0x1ad3c: 0x6c6e2c20, 0x1ad3d: 0x6cd93220, 0x1ad3e: 0x6c4f0220, 0x1ad3f: 0x6c693e20,
+-	// Block 0x6b5, offset 0x1ad40
+-	0x1ad40: 0x6cf0cc20, 0x1ad41: 0x6d07cc20, 0x1ad42: 0x6c303620, 0x1ad43: 0x6cbdb020,
+-	0x1ad44: 0x6cbd9e20, 0x1ad45: 0x6c728a20, 0x1ad46: 0x6c12b220, 0x1ad47: 0x6c791020,
+-	0x1ad48: 0x6d021420, 0x1ad49: 0x6d1bfe20, 0x1ad4a: 0x6c02ea20, 0x1ad4b: 0x6c99ba20,
+-	0x1ad4c: 0x6d189020, 0x1ad4d: 0x6c8c3020, 0x1ad4e: 0x6ccb5420, 0x1ad4f: 0x6c75e420,
+-	0x1ad50: 0x6c57f220, 0x1ad51: 0x6c9afe20, 0x1ad52: 0x6c803c20, 0x1ad53: 0x6c00ca20,
+-	0x1ad54: 0x6c8c3220, 0x1ad55: 0x6d0c3c20, 0x1ad56: 0x6c7e2620, 0x1ad57: 0x6cfa4a20,
+-	0x1ad58: 0x6c1c8420, 0x1ad59: 0x6d228e20, 0x1ad5a: 0x6d1b8820, 0x1ad5b: 0x6c270e20,
+-	0x1ad5c: 0x6c9be420, 0x1ad5d: 0x6c00d820, 0x1ad5e: 0x6c9b4a20, 0x1ad5f: 0x6c337020,
+-	0x1ad60: 0x6cb65c20, 0x1ad61: 0x6ca0ac20, 0x1ad62: 0x6c7fbe20, 0x1ad63: 0x6c9b0020,
+-	0x1ad64: 0x6c1de620, 0x1ad65: 0x6d370220, 0x1ad66: 0x6cab1620, 0x1ad67: 0x6cab1820,
+-	0x1ad68: 0x6d0c3420, 0x1ad69: 0x6d103420, 0x1ad6a: 0x6c0f8a20, 0x1ad6b: 0x6d372820,
+-	0x1ad6c: 0x6c7c0c20, 0x1ad6d: 0x6c7bd220, 0x1ad6e: 0x6d1ff820, 0x1ad6f: 0x6c3db220,
+-	0x1ad70: 0x6c8eb420, 0x1ad71: 0x6c9ef020, 0x1ad72: 0x6c1a5420, 0x1ad73: 0x6c5cb020,
+-	0x1ad74: 0x6c163820, 0x1ad75: 0x6c9bea20, 0x1ad76: 0x6c804a20, 0x1ad77: 0x6c57fa20,
+-	0x1ad78: 0x6d083620, 0x1ad79: 0x6cc51a20, 0x1ad7a: 0x6c164020, 0x1ad7b: 0x6c62b820,
+-	0x1ad7c: 0x6c72ca20, 0x1ad7d: 0x6c583e20, 0x1ad7e: 0x6ccf8820, 0x1ad7f: 0x6d195a20,
+-	// Block 0x6b6, offset 0x1ad80
+-	0x1ad80: 0x6c893820, 0x1ad81: 0x6ca44020, 0x1ad82: 0x6c9cb020, 0x1ad83: 0x6ce18c20,
+-	0x1ad84: 0x6c751a20, 0x1ad85: 0x6c42b020, 0x1ad86: 0x6c42b220, 0x1ad87: 0x6d3c5220,
+-	0x1ad88: 0x6c436020, 0x1ad89: 0x6d266e20, 0x1ad8a: 0x6cf49820, 0x1ad8b: 0x6c645a20,
+-	0x1ad8c: 0x6d056420, 0x1ad8d: 0x6cd59420, 0x1ad8e: 0x6cc65020, 0x1ad8f: 0x6cf83820,
+-	0x1ad90: 0x6c19b220, 0x1ad91: 0x6cf2a620, 0x1ad92: 0x6c6bb820, 0x1ad93: 0x6c436e20,
+-	0x1ad94: 0x6c646c20, 0x1ad95: 0x6cbaa020, 0x1ad96: 0x6c5da020, 0x1ad97: 0x6cbaa220,
+-	0x1ad98: 0x6d2e4a20, 0x1ad99: 0x6c306e20, 0x1ad9a: 0x6cb81220, 0x1ad9b: 0x6c63b620,
+-	0x1ad9c: 0x6c2e9220, 0x1ad9d: 0x6d2b5e20, 0x1ad9e: 0x6c63be20, 0x1ad9f: 0x6c614420,
+-	0x1ada0: 0x6d33de20, 0x1ada1: 0x6c76b020, 0x1ada2: 0x6c603420, 0x1ada3: 0x6c7c8620,
+-	0x1ada4: 0x6c414020, 0x1ada5: 0x6c2ace20, 0x1ada6: 0x6d2e6820, 0x1ada7: 0x6cbaca20,
+-	0x1ada8: 0x6c439e20, 0x1ada9: 0x6c65bc20, 0x1adaa: 0x6c6b0620, 0x1adab: 0x6d238e20,
+-	0x1adac: 0x6c65be20, 0x1adad: 0x6d0dc820, 0x1adae: 0x6c92a020, 0x1adaf: 0x6c54f620,
+-	0x1adb0: 0x6d2e7e20, 0x1adb1: 0x6cf8da20, 0x1adb2: 0x6cf8ec20, 0x1adb3: 0x6c219a20,
+-	0x1adb4: 0x6c279420, 0x1adb5: 0x6cc20420, 0x1adb6: 0x6c563820, 0x1adb7: 0x6c563a20,
+-	0x1adb8: 0x6c563c20, 0x1adb9: 0x6c35c820, 0x1adba: 0x6cd30c20, 0x1adbb: 0x6ce3d220,
+-	0x1adbc: 0x6c992620, 0x1adbd: 0x6c566620, 0x1adbe: 0x6c858c20, 0x1adbf: 0x6c39a620,
+-	// Block 0x6b7, offset 0x1adc0
+-	0x1adc0: 0x6cdd4e20, 0x1adc1: 0x6c0b2e20, 0x1adc2: 0x6c2d4220, 0x1adc3: 0x6c6ed820,
+-	0x1adc4: 0x6cce3420, 0x1adc5: 0x6d14c020, 0x1adc6: 0x6d15dc20, 0x1adc7: 0x6ccd7a20,
+-	0x1adc8: 0x6c568c20, 0x1adc9: 0x6c3a0220, 0x1adca: 0x6d0d8020, 0x1adcb: 0x6cd43620,
+-	0x1adcc: 0x6cd48e20, 0x1adcd: 0x6c10fe20, 0x1adce: 0x6d2bc020, 0x1adcf: 0x6cbff220,
+-	0x1add0: 0x6c820e20, 0x1add1: 0x6cb3fe20, 0x1add2: 0x6c031020, 0x1add3: 0x6c26e020,
+-	0x1add4: 0x6cc61020, 0x1add5: 0x6c390220, 0x1add6: 0x6cc83020, 0x1add7: 0x6d292a20,
+-	0x1add8: 0x6cea9620, 0x1add9: 0x6d2f1e20, 0x1adda: 0x6c2df620, 0x1addb: 0x6c776620,
+-	0x1addc: 0x6d207220, 0x1addd: 0x6c7a1820, 0x1adde: 0x6c41c420, 0x1addf: 0x6ccf9e20,
+-	0x1ade0: 0x6c137820, 0x1ade1: 0x6cea9820, 0x1ade2: 0x6c475420, 0x1ade3: 0x6c79d620,
+-	0x1ade4: 0x6cf4a220, 0x1ade5: 0x6c2a9420, 0x1ade6: 0x6cb89820, 0x1ade7: 0x6d343620,
+-	0x1ade8: 0x6cc5b620, 0x1ade9: 0x6c7de620, 0x1adea: 0x6c9ac020, 0x1adeb: 0x6ccade20,
+-	0x1adec: 0x6d0f7420, 0x1aded: 0x6ca97820, 0x1adee: 0x6c051220, 0x1adef: 0x6c17e620,
+-	0x1adf0: 0x6cc53620, 0x1adf1: 0x6cf57020, 0x1adf2: 0x6cb97220, 0x1adf3: 0x6c047020,
+-	0x1adf4: 0x6c639c20, 0x1adf5: 0x6d20b220, 0x1adf6: 0x6c3dda20, 0x1adf7: 0x6c02c220,
+-	0x1adf8: 0x6cf57e20, 0x1adf9: 0x6caf2a20, 0x1adfa: 0x6d34e620, 0x1adfb: 0x6d357820,
+-	0x1adfc: 0x6c35d220, 0x1adfd: 0x6c2a9620, 0x1adfe: 0x6d2f8420, 0x1adff: 0x6c19bc20,
+-	// Block 0x6b8, offset 0x1ae00
+-	0x1ae00: 0x6c618420, 0x1ae01: 0x6d0d3c20, 0x1ae02: 0x6c7bb820, 0x1ae03: 0x6c0b6e20,
+-	0x1ae04: 0x6c173220, 0x1ae05: 0x6c704e20, 0x1ae06: 0x6cf1cc20, 0x1ae07: 0x6c551e20,
+-	0x1ae08: 0x6d267e20, 0x1ae09: 0x6c73de20, 0x1ae0a: 0x6c039a20, 0x1ae0b: 0x6cbe0420,
+-	0x1ae0c: 0x6c282020, 0x1ae0d: 0x6d331820, 0x1ae0e: 0x6d27d820, 0x1ae0f: 0x6cecc820,
+-	0x1ae10: 0x6ca54820, 0x1ae11: 0x6d168820, 0x1ae12: 0x6cd49e20, 0x1ae13: 0x6d3b5420,
+-	0x1ae14: 0x6cb3d020, 0x1ae15: 0x6ce7e620, 0x1ae16: 0x6c30da20, 0x1ae17: 0x6c777e20,
+-	0x1ae18: 0x6d301220, 0x1ae19: 0x6cb3d220, 0x1ae1a: 0x6c3f3620, 0x1ae1b: 0x6cad3220,
+-	0x1ae1c: 0x6c036020, 0x1ae1d: 0x6c029c20, 0x1ae1e: 0x6d2aa420, 0x1ae1f: 0x6ce94820,
+-	0x1ae20: 0x6c79b220, 0x1ae21: 0x6c94d020, 0x1ae22: 0x6cbb3820, 0x1ae23: 0x6d287a20,
+-	0x1ae24: 0x6c565620, 0x1ae25: 0x6c063020, 0x1ae26: 0x6c0dc420, 0x1ae27: 0x6d34f420,
+-	0x1ae28: 0x6cae5620, 0x1ae29: 0x6cdf8c20, 0x1ae2a: 0x6c106c20, 0x1ae2b: 0x6caf3620,
+-	0x1ae2c: 0x6cdf1820, 0x1ae2d: 0x6d118c20, 0x1ae2e: 0x6d31b820, 0x1ae2f: 0x6d2bc620,
+-	0x1ae30: 0x6d0f4820, 0x1ae31: 0x6c063220, 0x1ae32: 0x6c508c20, 0x1ae33: 0x6ca62820,
+-	0x1ae34: 0x6d12ce20, 0x1ae35: 0x6c2bda20, 0x1ae36: 0x6c1bee20, 0x1ae37: 0x6caf3820,
+-	0x1ae38: 0x6c632220, 0x1ae39: 0x6ca0a820, 0x1ae3a: 0x6c9a7620, 0x1ae3b: 0x6c185a20,
+-	0x1ae3c: 0x6d0ad220, 0x1ae3d: 0x6c1d6420, 0x1ae3e: 0x6cc0e420, 0x1ae3f: 0x6c9f9420,
+-	// Block 0x6b9, offset 0x1ae40
+-	0x1ae40: 0x6c1f1020, 0x1ae41: 0x6c632a20, 0x1ae42: 0x6c3dee20, 0x1ae43: 0x6d2c7220,
+-	0x1ae44: 0x6d3a5c20, 0x1ae45: 0x6c27bc20, 0x1ae46: 0x6c146020, 0x1ae47: 0x6ca2c420,
+-	0x1ae48: 0x6ca6ec20, 0x1ae49: 0x6c7e3e20, 0x1ae4a: 0x6c3f4220, 0x1ae4b: 0x6cad3420,
+-	0x1ae4c: 0x6c04ea20, 0x1ae4d: 0x6cabee20, 0x1ae4e: 0x6c8b9a20, 0x1ae4f: 0x6ca2d020,
+-	0x1ae50: 0x6c48d820, 0x1ae51: 0x6cb97420, 0x1ae52: 0x6c71fc20, 0x1ae53: 0x6cde2e20,
+-	0x1ae54: 0x6c036820, 0x1ae55: 0x6ceaac20, 0x1ae56: 0x6ceaae20, 0x1ae57: 0x6c02a020,
+-	0x1ae58: 0x6c705a20, 0x1ae59: 0x6d3cf020, 0x1ae5a: 0x6caca020, 0x1ae5b: 0x6d2f5a20,
+-	0x1ae5c: 0x6c043c20, 0x1ae5d: 0x6c043220, 0x1ae5e: 0x6c2bdc20, 0x1ae5f: 0x6ca62420,
+-	0x1ae60: 0x6c720e20, 0x1ae61: 0x6c7de820, 0x1ae62: 0x6c903220, 0x1ae63: 0x6c656420,
+-	0x1ae64: 0x6cb83420, 0x1ae65: 0x6d1d7e20, 0x1ae66: 0x6c7f8c20, 0x1ae67: 0x6ca8f620,
+-	0x1ae68: 0x6c0e5020, 0x1ae69: 0x6d2aa820, 0x1ae6a: 0x6cb8bc20, 0x1ae6b: 0x6c522e20,
+-	0x1ae6c: 0x6c7dea20, 0x1ae6d: 0x6cd33620, 0x1ae6e: 0x6c6a8e20, 0x1ae6f: 0x6d331e20,
+-	0x1ae70: 0x6ca8ee20, 0x1ae71: 0x6c45da20, 0x1ae72: 0x6c45de20, 0x1ae73: 0x6cc2ca20,
+-	0x1ae74: 0x6cd68020, 0x1ae75: 0x6c25a620, 0x1ae76: 0x6d288a20, 0x1ae77: 0x6c77a020,
+-	0x1ae78: 0x6d149c20, 0x1ae79: 0x6d008220, 0x1ae7a: 0x6c12d020, 0x1ae7b: 0x6c5a9420,
+-	0x1ae7c: 0x6cb1ea20, 0x1ae7d: 0x6d3b6620, 0x1ae7e: 0x6cd41020, 0x1ae7f: 0x6ca2d620,
+-	// Block 0x6ba, offset 0x1ae80
+-	0x1ae80: 0x6c03fc20, 0x1ae81: 0x6c1b0c20, 0x1ae82: 0x6c48ac20, 0x1ae83: 0x6d359c20,
+-	0x1ae84: 0x6c7dec20, 0x1ae85: 0x6c348020, 0x1ae86: 0x6c348220, 0x1ae87: 0x6d350020,
+-	0x1ae88: 0x6cbcaa20, 0x1ae89: 0x6c01a420, 0x1ae8a: 0x6ca9f220, 0x1ae8b: 0x6d322020,
+-	0x1ae8c: 0x6c43ca20, 0x1ae8d: 0x6c698820, 0x1ae8e: 0x6c7ae620, 0x1ae8f: 0x6c306020,
+-	0x1ae90: 0x6ca2d820, 0x1ae91: 0x6ce55420, 0x1ae92: 0x6c8ad220, 0x1ae93: 0x6d2bca20,
+-	0x1ae94: 0x6c937c20, 0x1ae95: 0x6c2e7220, 0x1ae96: 0x6cebca20, 0x1ae97: 0x6c73fa20,
+-	0x1ae98: 0x6c8b9420, 0x1ae99: 0x6c71b020, 0x1ae9a: 0x6d35b820, 0x1ae9b: 0x6c943420,
+-	0x1ae9c: 0x6d0b8620, 0x1ae9d: 0x6cf27c20, 0x1ae9e: 0x6cde3420, 0x1ae9f: 0x6d008420,
+-	0x1aea0: 0x6ca49c20, 0x1aea1: 0x6c292820, 0x1aea2: 0x6c68d020, 0x1aea3: 0x6d329820,
+-	0x1aea4: 0x6c612a20, 0x1aea5: 0x6c5a9620, 0x1aea6: 0x6cfb3420, 0x1aea7: 0x6d24be20,
+-	0x1aea8: 0x6c002020, 0x1aea9: 0x6ceab420, 0x1aeaa: 0x6caab820, 0x1aeab: 0x6c261c20,
+-	0x1aeac: 0x6c0ed420, 0x1aead: 0x6c44fa20, 0x1aeae: 0x6ce3be20, 0x1aeaf: 0x6d322c20,
+-	0x1aeb0: 0x6c19dc20, 0x1aeb1: 0x6cc94220, 0x1aeb2: 0x6cc94420, 0x1aeb3: 0x6c793220,
+-	0x1aeb4: 0x6c9a5020, 0x1aeb5: 0x6c906220, 0x1aeb6: 0x6c706820, 0x1aeb7: 0x6cae9020,
+-	0x1aeb8: 0x6c657a20, 0x1aeb9: 0x6d172820, 0x1aeba: 0x6ce6ba20, 0x1aebb: 0x6cccce20,
+-	0x1aebc: 0x6cc83a20, 0x1aebd: 0x6cecf820, 0x1aebe: 0x6d008a20, 0x1aebf: 0x6c138820,
+-	// Block 0x6bb, offset 0x1aec0
+-	0x1aec0: 0x6c3ca020, 0x1aec1: 0x6c68da20, 0x1aec2: 0x6cf43c20, 0x1aec3: 0x6c75a420,
+-	0x1aec4: 0x6c6fe820, 0x1aec5: 0x6ce7b220, 0x1aec6: 0x6c7da220, 0x1aec7: 0x6c5dac20,
+-	0x1aec8: 0x6ce89620, 0x1aec9: 0x6d3cf620, 0x1aeca: 0x6cb3d620, 0x1aecb: 0x6c938820,
+-	0x1aecc: 0x6c033a20, 0x1aecd: 0x6c4e9820, 0x1aece: 0x6cce6020, 0x1aecf: 0x6ca7da20,
+-	0x1aed0: 0x6c72e420, 0x1aed1: 0x6d2b4620, 0x1aed2: 0x6cd5ba20, 0x1aed3: 0x6d127620,
+-	0x1aed4: 0x6c741220, 0x1aed5: 0x6c103620, 0x1aed6: 0x6cecd020, 0x1aed7: 0x6c108420,
+-	0x1aed8: 0x6d421620, 0x1aed9: 0x6d172a20, 0x1aeda: 0x6d2ce820, 0x1aedb: 0x6c937e20,
+-	0x1aedc: 0x6cd9a420, 0x1aedd: 0x6ceab620, 0x1aede: 0x6c813a20, 0x1aedf: 0x6cdce620,
+-	0x1aee0: 0x6c052220, 0x1aee1: 0x6c657c20, 0x1aee2: 0x6c590220, 0x1aee3: 0x6c29d420,
+-	0x1aee4: 0x6cf13c20, 0x1aee5: 0x6ced7820, 0x1aee6: 0x6cbd6e20, 0x1aee7: 0x6caf0220,
+-	0x1aee8: 0x6ccf2c20, 0x1aee9: 0x6c8af820, 0x1aeea: 0x6c9f4620, 0x1aeeb: 0x6c9aca20,
+-	0x1aeec: 0x6c3f5a20, 0x1aeed: 0x6c041e20, 0x1aeee: 0x6c723e20, 0x1aeef: 0x6c29cc20,
+-	0x1aef0: 0x6cf2b420, 0x1aef1: 0x6c003e20, 0x1aef2: 0x6c731c20, 0x1aef3: 0x6d26a420,
+-	0x1aef4: 0x6d3fec20, 0x1aef5: 0x6c186420, 0x1aef6: 0x6c20c820, 0x1aef7: 0x6c6ab620,
+-	0x1aef8: 0x6ce85420, 0x1aef9: 0x6c07ae20, 0x1aefa: 0x6ca33220, 0x1aefb: 0x6ca72020,
+-	0x1aefc: 0x6cc90e20, 0x1aefd: 0x6d423620, 0x1aefe: 0x6cf2e220, 0x1aeff: 0x6cf5e820,
+-	// Block 0x6bc, offset 0x1af00
+-	0x1af00: 0x6cfa9820, 0x1af01: 0x6c19e620, 0x1af02: 0x6c2cc420, 0x1af03: 0x6ccae020,
+-	0x1af04: 0x6c94d220, 0x1af05: 0x6cbec620, 0x1af06: 0x6c427820, 0x1af07: 0x6c342a20,
+-	0x1af08: 0x6cd46020, 0x1af09: 0x6c2e1820, 0x1af0a: 0x6cb3d820, 0x1af0b: 0x6c2bf020,
+-	0x1af0c: 0x6d2f0420, 0x1af0d: 0x6c5d2420, 0x1af0e: 0x6c613620, 0x1af0f: 0x6ce1c220,
+-	0x1af10: 0x6cb82820, 0x1af11: 0x6cb5c420, 0x1af12: 0x6cabfa20, 0x1af13: 0x6cd4c820,
+-	0x1af14: 0x6cb8e220, 0x1af15: 0x6c8ce420, 0x1af16: 0x6d125c20, 0x1af17: 0x6d0b9c20,
+-	0x1af18: 0x6c742420, 0x1af19: 0x6d32b020, 0x1af1a: 0x6c899020, 0x1af1b: 0x6c48b020,
+-	0x1af1c: 0x6d175c20, 0x1af1d: 0x6c5dc220, 0x1af1e: 0x6ccd8220, 0x1af1f: 0x6d332020,
+-	0x1af20: 0x6c361020, 0x1af21: 0x6c112a20, 0x1af22: 0x6ce09420, 0x1af23: 0x6c181e20,
+-	0x1af24: 0x6c0db020, 0x1af25: 0x6c69fa20, 0x1af26: 0x6ce3ee20, 0x1af27: 0x6c79a420,
+-	0x1af28: 0x6ce99020, 0x1af29: 0x6d0d6620, 0x1af2a: 0x6c262220, 0x1af2b: 0x6d387420,
+-	0x1af2c: 0x6c708a20, 0x1af2d: 0x6ce53420, 0x1af2e: 0x6cb98820, 0x1af2f: 0x6c791820,
+-	0x1af30: 0x6c040020, 0x1af31: 0x6cabd420, 0x1af32: 0x6c69fc20, 0x1af33: 0x6c91ba20,
+-	0x1af34: 0x6c48cc20, 0x1af35: 0x6ca04e20, 0x1af36: 0x6c454620, 0x1af37: 0x6d35e020,
+-	0x1af38: 0x6c283420, 0x1af39: 0x6c9c2a20, 0x1af3a: 0x6c11f220, 0x1af3b: 0x6ccaa620,
+-	0x1af3c: 0x6c498220, 0x1af3d: 0x6caf1020, 0x1af3e: 0x6d261c20, 0x1af3f: 0x6caaee20,
+-	// Block 0x6bd, offset 0x1af40
+-	0x1af40: 0x6c659020, 0x1af41: 0x6d32c420, 0x1af42: 0x6c6f7220, 0x1af43: 0x6c659220,
+-	0x1af44: 0x6d212620, 0x1af45: 0x6d0ca820, 0x1af46: 0x6c7c7820, 0x1af47: 0x6ca42620,
+-	0x1af48: 0x6c52a420, 0x1af49: 0x6cc74a20, 0x1af4a: 0x6cb09620, 0x1af4b: 0x6cee8820,
+-	0x1af4c: 0x6cc9c420, 0x1af4d: 0x6d408820, 0x1af4e: 0x6d079c20, 0x1af4f: 0x6c9e7620,
+-	0x1af50: 0x6ce32420, 0x1af51: 0x6ca7dc20, 0x1af52: 0x6c139c20, 0x1af53: 0x6cd38620,
+-	0x1af54: 0x6d3ff220, 0x1af55: 0x6d324220, 0x1af56: 0x6d13f220, 0x1af57: 0x6d0a1020,
+-	0x1af58: 0x6d1df620, 0x1af59: 0x6c0af220, 0x1af5a: 0x6d0fb620, 0x1af5b: 0x6c592220,
+-	0x1af5c: 0x6d0d8220, 0x1af5d: 0x6d296a20, 0x1af5e: 0x6c018620, 0x1af5f: 0x6d059a20,
+-	0x1af60: 0x6d0bac20, 0x1af61: 0x6cf2ee20, 0x1af62: 0x6c784c20, 0x1af63: 0x6c1fb420,
+-	0x1af64: 0x6c600020, 0x1af65: 0x6ce3fa20, 0x1af66: 0x6c7e5e20, 0x1af67: 0x6c7e7a20,
+-	0x1af68: 0x6c18c820, 0x1af69: 0x6c762e20, 0x1af6a: 0x6c6f7420, 0x1af6b: 0x6c6f7c20,
+-	0x1af6c: 0x6ce8ae20, 0x1af6d: 0x6c6a1220, 0x1af6e: 0x6c5ab420, 0x1af6f: 0x6c44b420,
+-	0x1af70: 0x6c1d5020, 0x1af71: 0x6cfed620, 0x1af72: 0x6c2ea420, 0x1af73: 0x6d004020,
+-	0x1af74: 0x6d256220, 0x1af75: 0x6cb98a20, 0x1af76: 0x6d127c20, 0x1af77: 0x6c139e20,
+-	0x1af78: 0x6d2bda20, 0x1af79: 0x6c069e20, 0x1af7a: 0x6d10f820, 0x1af7b: 0x6cee8a20,
+-	0x1af7c: 0x6c086a20, 0x1af7d: 0x6c802820, 0x1af7e: 0x6cf20c20, 0x1af7f: 0x6cbe1420,
+-	// Block 0x6be, offset 0x1af80
+-	0x1af80: 0x6c14ca20, 0x1af81: 0x6c439220, 0x1af82: 0x6c90e420, 0x1af83: 0x6d3ff420,
+-	0x1af84: 0x6c44ce20, 0x1af85: 0x6c68f220, 0x1af86: 0x6c46b820, 0x1af87: 0x6cbe1a20,
+-	0x1af88: 0x6cc68420, 0x1af89: 0x6cc3ca20, 0x1af8a: 0x6c1d7420, 0x1af8b: 0x6c1fb620,
+-	0x1af8c: 0x6d2df620, 0x1af8d: 0x6cdcf020, 0x1af8e: 0x6cdcd420, 0x1af8f: 0x6c0f1220,
+-	0x1af90: 0x6c1f4e20, 0x1af91: 0x6cc67420, 0x1af92: 0x6c057a20, 0x1af93: 0x6c25ba20,
+-	0x1af94: 0x6ccaac20, 0x1af95: 0x6c780620, 0x1af96: 0x6d111020, 0x1af97: 0x6c29dc20,
+-	0x1af98: 0x6d33ee20, 0x1af99: 0x6caa6620, 0x1af9a: 0x6c7e4820, 0x1af9b: 0x6c64b020,
+-	0x1af9c: 0x6cd9b020, 0x1af9d: 0x6cc0ae20, 0x1af9e: 0x6c430820, 0x1af9f: 0x6cfc1420,
+-	0x1afa0: 0x6cd78620, 0x1afa1: 0x6cca8020, 0x1afa2: 0x6c6d1420, 0x1afa3: 0x6c9edc20,
+-	0x1afa4: 0x6c365820, 0x1afa5: 0x6c20ce20, 0x1afa6: 0x6caafc20, 0x1afa7: 0x6cccea20,
+-	0x1afa8: 0x6cde5c20, 0x1afa9: 0x6d2c7e20, 0x1afaa: 0x6ce10220, 0x1afab: 0x6cac6420,
+-	0x1afac: 0x6c048620, 0x1afad: 0x6c265020, 0x1afae: 0x6c863020, 0x1afaf: 0x6ce1d620,
+-	0x1afb0: 0x6c555c20, 0x1afb1: 0x6d365620, 0x1afb2: 0x6cebe220, 0x1afb3: 0x6c574220,
+-	0x1afb4: 0x6cb90220, 0x1afb5: 0x6cf20e20, 0x1afb6: 0x6cbb3e20, 0x1afb7: 0x6ce4ac20,
+-	0x1afb8: 0x6d316220, 0x1afb9: 0x6c365a20, 0x1afba: 0x6d00ba20, 0x1afbb: 0x6cab0220,
+-	0x1afbc: 0x6cc2fc20, 0x1afbd: 0x6c13e220, 0x1afbe: 0x6d2ccc20, 0x1afbf: 0x6c441020,
+-	// Block 0x6bf, offset 0x1afc0
+-	0x1afc0: 0x6cf44e20, 0x1afc1: 0x6c372420, 0x1afc2: 0x6ccf5220, 0x1afc3: 0x6c776820,
+-	0x1afc4: 0x6ccf5420, 0x1afc5: 0x6cd4e820, 0x1afc6: 0x6c042620, 0x1afc7: 0x6d111220,
+-	0x1afc8: 0x6c0d8020, 0x1afc9: 0x6cd9be20, 0x1afca: 0x6cdfae20, 0x1afcb: 0x6cc97820,
+-	0x1afcc: 0x6c15ca20, 0x1afcd: 0x6cdd2a20, 0x1afce: 0x6c6f8020, 0x1afcf: 0x6c1cd220,
+-	0x1afd0: 0x6c205620, 0x1afd1: 0x6c48d220, 0x1afd2: 0x6c0de620, 0x1afd3: 0x6c3cac20,
+-	0x1afd4: 0x6cd65620, 0x1afd5: 0x6c2c7e20, 0x1afd6: 0x6cb7ae20, 0x1afd7: 0x6cd9cc20,
+-	0x1afd8: 0x6d2cf820, 0x1afd9: 0x6c88c220, 0x1afda: 0x6c197c20, 0x1afdb: 0x6c1ab820,
+-	0x1afdc: 0x6c499820, 0x1afdd: 0x6c928220, 0x1afde: 0x6c961420, 0x1afdf: 0x6c90ee20,
+-	0x1afe0: 0x6d400020, 0x1afe1: 0x6c413420, 0x1afe2: 0x6c56b620, 0x1afe3: 0x6d2bea20,
+-	0x1afe4: 0x6c209420, 0x1afe5: 0x6ce19e20, 0x1afe6: 0x6c57ac20, 0x1afe7: 0x6c24dc20,
+-	0x1afe8: 0x6ca38420, 0x1afe9: 0x6ca07220, 0x1afea: 0x6c676820, 0x1afeb: 0x6c4a7a20,
+-	0x1afec: 0x6d1cfc20, 0x1afed: 0x6d348020, 0x1afee: 0x6c026020, 0x1afef: 0x6d36ae20,
+-	0x1aff0: 0x6ca85c20, 0x1aff1: 0x6c97ea20, 0x1aff2: 0x6c163020, 0x1aff3: 0x6c79c220,
+-	0x1aff4: 0x6c1e6220, 0x1aff5: 0x6ccf6420, 0x1aff6: 0x6ce95420, 0x1aff7: 0x6c691420,
+-	0x1aff8: 0x6ca05620, 0x1aff9: 0x6ca06820, 0x1affa: 0x6d306c20, 0x1affb: 0x6c11fc20,
+-	0x1affc: 0x6c794820, 0x1affd: 0x6c0c0a20, 0x1affe: 0x6c67f620, 0x1afff: 0x6d19f420,
+-	// Block 0x6c0, offset 0x1b000
+-	0x1b000: 0x6c46ce20, 0x1b001: 0x6cb90420, 0x1b002: 0x6c8aa020, 0x1b003: 0x6c608420,
+-	0x1b004: 0x6d1bce20, 0x1b005: 0x6c73b420, 0x1b006: 0x6cb1d020, 0x1b007: 0x6cb1ca20,
+-	0x1b008: 0x6c813c20, 0x1b009: 0x6c33ac20, 0x1b00a: 0x6cfcfa20, 0x1b00b: 0x6cc84420,
+-	0x1b00c: 0x6c4b6620, 0x1b00d: 0x6d297420, 0x1b00e: 0x6d185020, 0x1b00f: 0x6cfb7e20,
+-	0x1b010: 0x6c198820, 0x1b011: 0x6c198a20, 0x1b012: 0x6cc94620, 0x1b013: 0x6ca4ba20,
+-	0x1b014: 0x6c53ca20, 0x1b015: 0x6cd81620, 0x1b016: 0x6c4ee020, 0x1b017: 0x6c4a2620,
+-	0x1b018: 0x6c266420, 0x1b019: 0x6d420c20, 0x1b01a: 0x6ca73420, 0x1b01b: 0x6c8c2a20,
+-	0x1b01c: 0x6d332c20, 0x1b01d: 0x6c5ae420, 0x1b01e: 0x6d3c4820, 0x1b01f: 0x6c692820,
+-	0x1b020: 0x6c615020, 0x1b021: 0x6c126620, 0x1b022: 0x6c283c20, 0x1b023: 0x6c283e20,
+-	0x1b024: 0x6c183220, 0x1b025: 0x6c0e8820, 0x1b026: 0x6c17ee20, 0x1b027: 0x6c73b620,
+-	0x1b028: 0x6c3f8020, 0x1b029: 0x6c89d220, 0x1b02a: 0x6c07c220, 0x1b02b: 0x6c3f8220,
+-	0x1b02c: 0x6cbc5820, 0x1b02d: 0x6c0e8a20, 0x1b02e: 0x6c25c620, 0x1b02f: 0x6d3d7a20,
+-	0x1b030: 0x6d3bda20, 0x1b031: 0x6ceff020, 0x1b032: 0x6cb40e20, 0x1b033: 0x6cbe2220,
+-	0x1b034: 0x6c33a620, 0x1b035: 0x6ca73620, 0x1b036: 0x6c574420, 0x1b037: 0x6d00d820,
+-	0x1b038: 0x6c912e20, 0x1b039: 0x6c692a20, 0x1b03a: 0x6c249020, 0x1b03b: 0x6cde8c20,
+-	0x1b03c: 0x6c4f0420, 0x1b03d: 0x6cbc5c20, 0x1b03e: 0x6cf29a20, 0x1b03f: 0x6c65d620,
+-	// Block 0x6c1, offset 0x1b040
+-	0x1b040: 0x6c41ea20, 0x1b041: 0x6d1db220, 0x1b042: 0x6c825620, 0x1b043: 0x6ca46e20,
+-	0x1b044: 0x6c91da20, 0x1b045: 0x6ccda820, 0x1b046: 0x6d3d7c20, 0x1b047: 0x6d2afa20,
+-	0x1b048: 0x6cb41420, 0x1b049: 0x6c21d620, 0x1b04a: 0x6c5f5220, 0x1b04b: 0x6c293420,
+-	0x1b04c: 0x6ccb5620, 0x1b04d: 0x6c126820, 0x1b04e: 0x6cbe8c20, 0x1b04f: 0x6cbe8420,
+-	0x1b050: 0x6c595220, 0x1b051: 0x6c6a3020, 0x1b052: 0x6cbd9420, 0x1b053: 0x6c7b0220,
+-	0x1b054: 0x6c27fa20, 0x1b055: 0x6d00dc20, 0x1b056: 0x6c761420, 0x1b057: 0x6cb06e20,
+-	0x1b058: 0x6c040620, 0x1b059: 0x6c02f220, 0x1b05a: 0x6c728c20, 0x1b05b: 0x6d132620,
+-	0x1b05c: 0x6c370620, 0x1b05d: 0x6c9c2c20, 0x1b05e: 0x6cda2620, 0x1b05f: 0x6c9c7a20,
+-	0x1b060: 0x6c615420, 0x1b061: 0x6cdf4820, 0x1b062: 0x6d3da820, 0x1b063: 0x6c29f220,
+-	0x1b064: 0x6d040a20, 0x1b065: 0x6c804420, 0x1b066: 0x6c10da20, 0x1b067: 0x6c71d820,
+-	0x1b068: 0x6d129220, 0x1b069: 0x6cc80620, 0x1b06a: 0x6d136820, 0x1b06b: 0x6d135a20,
+-	0x1b06c: 0x6ca65220, 0x1b06d: 0x6cf31420, 0x1b06e: 0x6c60bc20, 0x1b06f: 0x6c0d8820,
+-	0x1b070: 0x6ca92420, 0x1b071: 0x6c43b420, 0x1b072: 0x6d370420, 0x1b073: 0x6d36de20,
+-	0x1b074: 0x6c7e1a20, 0x1b075: 0x6ca08620, 0x1b076: 0x6c66ec20, 0x1b077: 0x6d011020,
+-	0x1b078: 0x6c8b4c20, 0x1b079: 0x6cdfc020, 0x1b07a: 0x6c042a20, 0x1b07b: 0x6cda3020,
+-	0x1b07c: 0x6c91e820, 0x1b07d: 0x6c94ca20, 0x1b07e: 0x6cc54220, 0x1b07f: 0x6ce2fe20,
+-	// Block 0x6c2, offset 0x1b080
+-	0x1b080: 0x6cac4c20, 0x1b081: 0x6d103620, 0x1b082: 0x6c834c20, 0x1b083: 0x6c10dc20,
+-	0x1b084: 0x6cd51420, 0x1b085: 0x6d297a20, 0x1b086: 0x6ca74220, 0x1b087: 0x6cfc4020,
+-	0x1b088: 0x6c75fa20, 0x1b089: 0x6c5d6620, 0x1b08a: 0x6c86f420, 0x1b08b: 0x6c7ea420,
+-	0x1b08c: 0x6c58e420, 0x1b08d: 0x6d1cb620, 0x1b08e: 0x6c917020, 0x1b08f: 0x6c904420,
+-	0x1b090: 0x6cb93a20, 0x1b091: 0x6cb93c20, 0x1b092: 0x6d297c20, 0x1b093: 0x6cb94620,
+-	0x1b094: 0x6c7fe620, 0x1b095: 0x6cfafc20, 0x1b096: 0x6d1c1e20, 0x1b097: 0x6c9a3a20,
+-	0x1b098: 0x6cc50820, 0x1b099: 0x6c14e020, 0x1b09a: 0x6d1d6c20, 0x1b09b: 0x6c249820,
+-	0x1b09c: 0x6d012420, 0x1b09d: 0x6ccf8a20, 0x1b09e: 0x6c957420, 0x1b09f: 0x6c760820,
+-	0x1b0a0: 0x6c9cb220, 0x1b0a1: 0x6c84a620, 0x1b0a2: 0x6d298220, 0x1b0a3: 0x6c945820,
+-	0x1b0a4: 0x6cdfc420, 0x1b0a5: 0x6d416420, 0x1b0a6: 0x6c876620, 0x1b0a7: 0x6c2cf820,
+-	0x1b0a8: 0x6cec0020, 0x1b0a9: 0x6c293c20, 0x1b0aa: 0x6c697420, 0x1b0ab: 0x6c751c20,
+-	0x1b0ac: 0x6c805c20, 0x1b0ad: 0x6c879e20, 0x1b0ae: 0x6ca47620, 0x1b0af: 0x6d337e20,
+-	0x1b0b0: 0x6c4b2820, 0x1b0b1: 0x6c4ad820, 0x1b0b2: 0x6cb4f020, 0x1b0b3: 0x6d0a3a20,
+-	0x1b0b4: 0x6cb3fc20, 0x1b0b5: 0x6cdba820, 0x1b0b6: 0x6cd42a20, 0x1b0b7: 0x6c779a20,
+-	0x1b0b8: 0x6d1e9020, 0x1b0b9: 0x6c410c20, 0x1b0ba: 0x6d15bc20, 0x1b0bb: 0x6c455e20,
+-	0x1b0bc: 0x6c416620, 0x1b0bd: 0x6c047220, 0x1b0be: 0x6c39e220, 0x1b0bf: 0x6d334220,
+-	// Block 0x6c3, offset 0x1b0c0
+-	0x1b0c0: 0x6cb36c20, 0x1b0c1: 0x6c2cc020, 0x1b0c2: 0x6c79da20, 0x1b0c3: 0x6c9f9a20,
+-	0x1b0c4: 0x6cf4c420, 0x1b0c5: 0x6c480020, 0x1b0c6: 0x6c50f020, 0x1b0c7: 0x6c12d620,
+-	0x1b0c8: 0x6cffdc20, 0x1b0c9: 0x6c9ce620, 0x1b0ca: 0x6c1f2420, 0x1b0cb: 0x6c43d620,
+-	0x1b0cc: 0x6c2b6220, 0x1b0cd: 0x6d06b620, 0x1b0ce: 0x6c699a20, 0x1b0cf: 0x6c9fa820,
+-	0x1b0d0: 0x6c18bc20, 0x1b0d1: 0x6c6ff220, 0x1b0d2: 0x6ccfda20, 0x1b0d3: 0x6c344620,
+-	0x1b0d4: 0x6d224e20, 0x1b0d5: 0x6c1c0e20, 0x1b0d6: 0x6c024020, 0x1b0d7: 0x6c044020,
+-	0x1b0d8: 0x6d06b820, 0x1b0d9: 0x6c699c20, 0x1b0da: 0x6c344820, 0x1b0db: 0x6c88b420,
+-	0x1b0dc: 0x6ca82c20, 0x1b0dd: 0x6c097820, 0x1b0de: 0x6c172c20, 0x1b0df: 0x6c2d1a20,
+-	0x1b0e0: 0x6c342e20, 0x1b0e1: 0x6d179c20, 0x1b0e2: 0x6c41d420, 0x1b0e3: 0x6cca5420,
+-	0x1b0e4: 0x6c786820, 0x1b0e5: 0x6d0e7020, 0x1b0e6: 0x6c339a20, 0x1b0e7: 0x6c5ecc20,
+-	0x1b0e8: 0x6ce81420, 0x1b0e9: 0x6cffea20, 0x1b0ea: 0x6c345020, 0x1b0eb: 0x6c690620,
+-	0x1b0ec: 0x6c6e8420, 0x1b0ed: 0x6d0fc220, 0x1b0ee: 0x6cf9ce20, 0x1b0ef: 0x6c9f5e20,
+-	0x1b0f0: 0x6cd5e420, 0x1b0f1: 0x6c004820, 0x1b0f2: 0x6cbb8c20, 0x1b0f3: 0x6c004a20,
+-	0x1b0f4: 0x6d333220, 0x1b0f5: 0x6c2b8820, 0x1b0f6: 0x6d324c20, 0x1b0f7: 0x6c3d8e20,
+-	0x1b0f8: 0x6cd60020, 0x1b0f9: 0x6c8a1020, 0x1b0fa: 0x6cc13620, 0x1b0fb: 0x6d049e20,
+-	0x1b0fc: 0x6d161020, 0x1b0fd: 0x6c694020, 0x1b0fe: 0x6ccdfc20, 0x1b0ff: 0x6c694220,
+-	// Block 0x6c4, offset 0x1b100
+-	0x1b100: 0x6d3daa20, 0x1b101: 0x6d18c220, 0x1b102: 0x6c88ca20, 0x1b103: 0x6c0a6820,
+-	0x1b104: 0x6c848820, 0x1b105: 0x6d002220, 0x1b106: 0x6d002420, 0x1b107: 0x6cf17a20,
+-	0x1b108: 0x6d08f420, 0x1b109: 0x6cb58220, 0x1b10a: 0x6cb5a220, 0x1b10b: 0x6d2cea20,
+-	0x1b10c: 0x6c0d3620, 0x1b10d: 0x6c742620, 0x1b10e: 0x6d2cf020, 0x1b10f: 0x6c80b820,
+-	0x1b110: 0x6c3a5620, 0x1b111: 0x6c048020, 0x1b112: 0x6c048820, 0x1b113: 0x6c7fb420,
+-	0x1b114: 0x6d22a620, 0x1b115: 0x6c7ff620, 0x1b116: 0x6cf06420, 0x1b117: 0x6c30f820,
+-	0x1b118: 0x6cd0de20, 0x1b119: 0x6c8a9420, 0x1b11a: 0x6c640a20, 0x1b11b: 0x6c554420,
+-	0x1b11c: 0x6d00a020, 0x1b11d: 0x6c641820, 0x1b11e: 0x6d225820, 0x1b11f: 0x6d316420,
+-	0x1b120: 0x6c69ae20, 0x1b121: 0x6cf30220, 0x1b122: 0x6ce5ca20, 0x1b123: 0x6c313a20,
+-	0x1b124: 0x6c6c1e20, 0x1b125: 0x6c1bdc20, 0x1b126: 0x6d1a2e20, 0x1b127: 0x6c3f4420,
+-	0x1b128: 0x6cbaa420, 0x1b129: 0x6d2ddc20, 0x1b12a: 0x6cc17820, 0x1b12b: 0x6d3d3220,
+-	0x1b12c: 0x6d2de620, 0x1b12d: 0x6c32ba20, 0x1b12e: 0x6c262820, 0x1b12f: 0x6cd7e820,
+-	0x1b130: 0x6d02dc20, 0x1b131: 0x6d3d5c20, 0x1b132: 0x6d3d7e20, 0x1b133: 0x6cbd9620,
+-	0x1b134: 0x6c8bda20, 0x1b135: 0x6d3dac20, 0x1b136: 0x6c1f7c20, 0x1b137: 0x6c32e020,
+-	0x1b138: 0x6d3a9020, 0x1b139: 0x6c398020, 0x1b13a: 0x6c159820, 0x1b13b: 0x6c4f5e20,
+-	0x1b13c: 0x6d20c220, 0x1b13d: 0x6cd1aa20, 0x1b13e: 0x6cae0e20, 0x1b13f: 0x6d1f0820,
+-	// Block 0x6c5, offset 0x1b140
+-	0x1b140: 0x6c9a7c20, 0x1b141: 0x6cacfa20, 0x1b142: 0x6cb5a420, 0x1b143: 0x6d2d6820,
+-	0x1b144: 0x6c98d020, 0x1b145: 0x6c938a20, 0x1b146: 0x6cae1220, 0x1b147: 0x6caf6020,
+-	0x1b148: 0x6c8e4e20, 0x1b149: 0x6c3d6220, 0x1b14a: 0x6c39d020, 0x1b14b: 0x6d081020,
+-	0x1b14c: 0x6c6daa20, 0x1b14d: 0x6c6dac20, 0x1b14e: 0x6ca63620, 0x1b14f: 0x6d40b820,
+-	0x1b150: 0x6d2fb020, 0x1b151: 0x6d15ee20, 0x1b152: 0x6c8e6a20, 0x1b153: 0x6cce7420,
+-	0x1b154: 0x6c668a20, 0x1b155: 0x6d214c20, 0x1b156: 0x6d15fe20, 0x1b157: 0x6cb61a20,
+-	0x1b158: 0x6d36e020, 0x1b159: 0x6c385e20, 0x1b15a: 0x6cb16620, 0x1b15b: 0x6c386020,
+-	0x1b15c: 0x6d2db220, 0x1b15d: 0x6c7b4420, 0x1b15e: 0x6cdc9a20, 0x1b15f: 0x6d21d420,
+-	0x1b160: 0x6cf39a20, 0x1b161: 0x6c616c20, 0x1b162: 0x6c61a820, 0x1b163: 0x6c61ec20,
+-	0x1b164: 0x6c5dce20, 0x1b165: 0x6cc63620, 0x1b166: 0x6c285e20, 0x1b167: 0x6c6fca20,
+-	0x1b168: 0x6d34d820, 0x1b169: 0x6d2a3a20, 0x1b16a: 0x6d006820, 0x1b16b: 0x6ce54620,
+-	0x1b16c: 0x6d09d620, 0x1b16d: 0x6d066820, 0x1b16e: 0x6c40bc20, 0x1b16f: 0x6c7e5820,
+-	0x1b170: 0x6c420c20, 0x1b171: 0x6c4e8a20, 0x1b172: 0x6cdf1020, 0x1b173: 0x6c2c1620,
+-	0x1b174: 0x6d056620, 0x1b175: 0x6c159420, 0x1b176: 0x6cd23a20, 0x1b177: 0x6c7bde20,
+-	0x1b178: 0x6d0f7c20, 0x1b179: 0x6cd24620, 0x1b17a: 0x6cee4c20, 0x1b17b: 0x6c9f3020,
+-	0x1b17c: 0x6c9f3220, 0x1b17d: 0x6cea8620, 0x1b17e: 0x6c20fc20, 0x1b17f: 0x6cf42820,
+-	// Block 0x6c6, offset 0x1b180
+-	0x1b180: 0x6d278820, 0x1b181: 0x6c06e620, 0x1b182: 0x6c01f420, 0x1b183: 0x6d2b3e20,
+-	0x1b184: 0x6c04ba20, 0x1b185: 0x6c6a7420, 0x1b186: 0x6c7d4c20, 0x1b187: 0x6cd0e020,
+-	0x1b188: 0x6c566820, 0x1b189: 0x6c39c420, 0x1b18a: 0x6c501c20, 0x1b18b: 0x6c4b2e20,
+-	0x1b18c: 0x6c166020, 0x1b18d: 0x6d077c20, 0x1b18e: 0x6c9fe820, 0x1b18f: 0x6c5cb220,
+-	0x1b190: 0x6c3b1620, 0x1b191: 0x6cbdc820, 0x1b192: 0x6c54a220, 0x1b193: 0x6d16ba20,
+-	0x1b194: 0x6cf58620, 0x1b195: 0x6d02b220, 0x1b196: 0x6d0c6420, 0x1b197: 0x6d2b4020,
+-	0x1b198: 0x6c39c620, 0x1b199: 0x6cdfd220, 0x1b19a: 0x6cd09420, 0x1b19b: 0x6c721020,
+-	0x1b19c: 0x6d0f9620, 0x1b19d: 0x6d296020, 0x1b19e: 0x6c0dcc20, 0x1b19f: 0x6d036a20,
+-	0x1b1a0: 0x6d1d3420, 0x1b1a1: 0x6d087620, 0x1b1a2: 0x6cb36e20, 0x1b1a3: 0x6d31c020,
+-	0x1b1a4: 0x6c8cb420, 0x1b1a5: 0x6c210020, 0x1b1a6: 0x6c502020, 0x1b1a7: 0x6c9a7e20,
+-	0x1b1a8: 0x6d422e20, 0x1b1a9: 0x6ca0e020, 0x1b1aa: 0x6c0b8620, 0x1b1ab: 0x6d069020,
+-	0x1b1ac: 0x6c5cb420, 0x1b1ad: 0x6d2f5c20, 0x1b1ae: 0x6d401820, 0x1b1af: 0x6cd33820,
+-	0x1b1b0: 0x6cd33a20, 0x1b1b1: 0x6d22e220, 0x1b1b2: 0x6c3a8e20, 0x1b1b3: 0x6c2e7420,
+-	0x1b1b4: 0x6c993220, 0x1b1b5: 0x6ca68620, 0x1b1b6: 0x6c16e620, 0x1b1b7: 0x6cf14a20,
+-	0x1b1b8: 0x6c2fe420, 0x1b1b9: 0x6c006220, 0x1b1ba: 0x6c0dce20, 0x1b1bb: 0x6c01f620,
+-	0x1b1bc: 0x6d390e20, 0x1b1bd: 0x6c8f7420, 0x1b1be: 0x6cfbec20, 0x1b1bf: 0x6c7be820,
+-	// Block 0x6c7, offset 0x1b1c0
+-	0x1b1c0: 0x6ce5ba20, 0x1b1c1: 0x6c175c20, 0x1b1c2: 0x6cd25c20, 0x1b1c3: 0x6c5a8220,
+-	0x1b1c4: 0x6c5a4e20, 0x1b1c5: 0x6d084820, 0x1b1c6: 0x6c7c6220, 0x1b1c7: 0x6d058020,
+-	0x1b1c8: 0x6c68dc20, 0x1b1c9: 0x6c6cea20, 0x1b1ca: 0x6d35ba20, 0x1b1cb: 0x6c6cec20,
+-	0x1b1cc: 0x6cce3620, 0x1b1cd: 0x6ce72e20, 0x1b1ce: 0x6c53a020, 0x1b1cf: 0x6d0e5020,
+-	0x1b1d0: 0x6c40ec20, 0x1b1d1: 0x6cfde020, 0x1b1d2: 0x6ccc9c20, 0x1b1d3: 0x6cffa820,
+-	0x1b1d4: 0x6d12de20, 0x1b1d5: 0x6d274c20, 0x1b1d6: 0x6c5aa220, 0x1b1d7: 0x6c4dfe20,
+-	0x1b1d8: 0x6c4eac20, 0x1b1d9: 0x6c75ae20, 0x1b1da: 0x6ced0820, 0x1b1db: 0x6cfcb020,
+-	0x1b1dc: 0x6c7d5820, 0x1b1dd: 0x6d392020, 0x1b1de: 0x6cf5ea20, 0x1b1df: 0x6c19de20,
+-	0x1b1e0: 0x6cd15820, 0x1b1e1: 0x6c101420, 0x1b1e2: 0x6d304c20, 0x1b1e3: 0x6d304e20,
+-	0x1b1e4: 0x6cf4dc20, 0x1b1e5: 0x6c4eae20, 0x1b1e6: 0x6c5bb620, 0x1b1e7: 0x6c503420,
+-	0x1b1e8: 0x6c194e20, 0x1b1e9: 0x6ced1820, 0x1b1ea: 0x6ce4f420, 0x1b1eb: 0x6d3d5e20,
+-	0x1b1ec: 0x6d41b220, 0x1b1ed: 0x6d38e820, 0x1b1ee: 0x6cb48c20, 0x1b1ef: 0x6c6e2020,
+-	0x1b1f0: 0x6cf60c20, 0x1b1f1: 0x6ccd4020, 0x1b1f2: 0x6ca63820, 0x1b1f3: 0x6cf60e20,
+-	0x1b1f4: 0x6cbe7a20, 0x1b1f5: 0x6cb6fc20, 0x1b1f6: 0x6c6db420, 0x1b1f7: 0x6c4afc20,
+-	0x1b1f8: 0x6d332220, 0x1b1f9: 0x6d179e20, 0x1b1fa: 0x6d362820, 0x1b1fb: 0x6c01c220,
+-	0x1b1fc: 0x6ced1a20, 0x1b1fd: 0x6c8bb220, 0x1b1fe: 0x6c89b820, 0x1b1ff: 0x6c166e20,
+-	// Block 0x6c8, offset 0x1b200
+-	0x1b200: 0x6cee1820, 0x1b201: 0x6cffac20, 0x1b202: 0x6d298c20, 0x1b203: 0x6c3b0620,
+-	0x1b204: 0x6d07a620, 0x1b205: 0x6c453420, 0x1b206: 0x6d151820, 0x1b207: 0x6cf9d020,
+-	0x1b208: 0x6d275420, 0x1b209: 0x6c5ac220, 0x1b20a: 0x6d064220, 0x1b20b: 0x6c9fba20,
+-	0x1b20c: 0x6c7c8820, 0x1b20d: 0x6d126020, 0x1b20e: 0x6d1d3a20, 0x1b20f: 0x6cd55c20,
+-	0x1b210: 0x6cefd820, 0x1b211: 0x6cd55a20, 0x1b212: 0x6cbe8220, 0x1b213: 0x6c998e20,
+-	0x1b214: 0x6ca40020, 0x1b215: 0x6c65ac20, 0x1b216: 0x6caa9420, 0x1b217: 0x6c01c620,
+-	0x1b218: 0x6d0fc420, 0x1b219: 0x6c210a20, 0x1b21a: 0x6d111e20, 0x1b21b: 0x6cdd7820,
+-	0x1b21c: 0x6c6d2820, 0x1b21d: 0x6ca00e20, 0x1b21e: 0x6c691620, 0x1b21f: 0x6c766620,
+-	0x1b220: 0x6c430e20, 0x1b221: 0x6cf25620, 0x1b222: 0x6c171c20, 0x1b223: 0x6cb7b020,
+-	0x1b224: 0x6c505220, 0x1b225: 0x6d0e9420, 0x1b226: 0x6c864a20, 0x1b227: 0x6c00ba20,
+-	0x1b228: 0x6c623620, 0x1b229: 0x6c626020, 0x1b22a: 0x6c9af820, 0x1b22b: 0x6d299620,
+-	0x1b22c: 0x6d01f820, 0x1b22d: 0x6c505820, 0x1b22e: 0x6ca2a220, 0x1b22f: 0x6ca14020,
+-	0x1b230: 0x6c233820, 0x1b231: 0x6ca6b820, 0x1b232: 0x6d2ed420, 0x1b233: 0x6c5c1420,
+-	0x1b234: 0x6c066220, 0x1b235: 0x6c4ef820, 0x1b236: 0x6d081e20, 0x1b237: 0x6c200420,
+-	0x1b238: 0x6c8a1820, 0x1b239: 0x6cfacc20, 0x1b23a: 0x6c28ae20, 0x1b23b: 0x6c6e2e20,
+-	0x1b23c: 0x6cb1d220, 0x1b23d: 0x6c8bdc20, 0x1b23e: 0x6cea2820, 0x1b23f: 0x6cf80e20,
+-	// Block 0x6c9, offset 0x1b240
+-	0x1b240: 0x6d189220, 0x1b241: 0x6c627620, 0x1b242: 0x6c5a7620, 0x1b243: 0x6c278820,
+-	0x1b244: 0x6d131220, 0x1b245: 0x6d131420, 0x1b246: 0x6c867820, 0x1b247: 0x6ce00e20,
+-	0x1b248: 0x6ce78220, 0x1b249: 0x6cffba20, 0x1b24a: 0x6c3ace20, 0x1b24b: 0x6cd07420,
+-	0x1b24c: 0x6d2fde20, 0x1b24d: 0x6c506620, 0x1b24e: 0x6d18c420, 0x1b24f: 0x6cfdfc20,
+-	0x1b250: 0x6d03a220, 0x1b251: 0x6cd02620, 0x1b252: 0x6c694a20, 0x1b253: 0x6c067020,
+-	0x1b254: 0x6c6eaa20, 0x1b255: 0x6d0ed020, 0x1b256: 0x6c00de20, 0x1b257: 0x6d135c20,
+-	0x1b258: 0x6cc7dc20, 0x1b259: 0x6cd57420, 0x1b25a: 0x6c9b5820, 0x1b25b: 0x6d09b820,
+-	0x1b25c: 0x6d122e20, 0x1b25d: 0x6cb4bc20, 0x1b25e: 0x6c86ca20, 0x1b25f: 0x6c18f620,
+-	0x1b260: 0x6c7c0e20, 0x1b261: 0x6c2f0420, 0x1b262: 0x6c8a7e20, 0x1b263: 0x6d0ef820,
+-	0x1b264: 0x6c5e3e20, 0x1b265: 0x6c917e20, 0x1b266: 0x6cf73220, 0x1b267: 0x6cc6dc20,
+-	0x1b268: 0x6c8fd620, 0x1b269: 0x6ca47220, 0x1b26a: 0x6c95d620, 0x1b26b: 0x6c945a20,
+-	0x1b26c: 0x6cccae20, 0x1b26d: 0x6ce18e20, 0x1b26e: 0x6d0e2420, 0x1b26f: 0x6d3a4420,
+-	0x1b270: 0x6d264220, 0x1b271: 0x6d264420, 0x1b272: 0x6cc0c620, 0x1b273: 0x6d12bc20,
+-	0x1b274: 0x6c452620, 0x1b275: 0x6d12c420, 0x1b276: 0x6c54a420, 0x1b277: 0x6c50d620,
+-	0x1b278: 0x6cd4b820, 0x1b279: 0x6c127420, 0x1b27a: 0x6c127020, 0x1b27b: 0x6cd18620,
+-	0x1b27c: 0x6c97da20, 0x1b27d: 0x6c134820, 0x1b27e: 0x6c135020, 0x1b27f: 0x6ce3fc20,
+-	// Block 0x6ca, offset 0x1b280
+-	0x1b280: 0x6d41b020, 0x1b281: 0x6c11d020, 0x1b282: 0x6d06d620, 0x1b283: 0x6c5be220,
+-	0x1b284: 0x6d1af620, 0x1b285: 0x6cbcd220, 0x1b286: 0x6c3b4220, 0x1b287: 0x6cb03820,
+-	0x1b288: 0x6d266820, 0x1b289: 0x6d1f9820, 0x1b28a: 0x6cc85020, 0x1b28b: 0x6cae8e20,
+-	0x1b28c: 0x6c3b5a20, 0x1b28d: 0x6c3df220, 0x1b28e: 0x6c8cb620, 0x1b28f: 0x6c3a4820,
+-	0x1b290: 0x6cc17a20, 0x1b291: 0x6ce3da20, 0x1b292: 0x6caa7e20, 0x1b293: 0x6ce5bc20,
+-	0x1b294: 0x6cd77620, 0x1b295: 0x6d322e20, 0x1b296: 0x6c80fa20, 0x1b297: 0x6c80f820,
+-	0x1b298: 0x6d416c20, 0x1b299: 0x6c9ff620, 0x1b29a: 0x6c598c20, 0x1b29b: 0x6cee5220,
+-	0x1b29c: 0x6cea2020, 0x1b29d: 0x6c176220, 0x1b29e: 0x6c5ed220, 0x1b29f: 0x6cb4f220,
+-	0x1b2a0: 0x6d1bba20, 0x1b2a1: 0x6d3f9820, 0x1b2a2: 0x6cee5820, 0x1b2a3: 0x6ce78420,
+-	0x1b2a4: 0x6c811220, 0x1b2a5: 0x6c81fa20, 0x1b2a6: 0x6c9b5a20, 0x1b2a7: 0x6c8fd820,
+-	0x1b2a8: 0x6ca25c20, 0x1b2a9: 0x6c2ac820, 0x1b2aa: 0x6cf06c20, 0x1b2ab: 0x6ca0bc20,
+-	0x1b2ac: 0x6c079220, 0x1b2ad: 0x6d2c1620, 0x1b2ae: 0x6cd59020, 0x1b2af: 0x6cd59220,
+-	0x1b2b0: 0x6ca26220, 0x1b2b1: 0x6d397e20, 0x1b2b2: 0x6cc56620, 0x1b2b3: 0x6c031420,
+-	0x1b2b4: 0x6cb48220, 0x1b2b5: 0x6c352a20, 0x1b2b6: 0x6c347020, 0x1b2b7: 0x6c29ba20,
+-	0x1b2b8: 0x6c857220, 0x1b2b9: 0x6c4abe20, 0x1b2ba: 0x6c5e7820, 0x1b2bb: 0x6c6f4820,
+-	0x1b2bc: 0x6c08b220, 0x1b2bd: 0x6d051c20, 0x1b2be: 0x6c19b420, 0x1b2bf: 0x6c22a820,
+-	// Block 0x6cb, offset 0x1b2c0
+-	0x1b2c0: 0x6ccbc020, 0x1b2c1: 0x6cc83420, 0x1b2c2: 0x6d28ac20, 0x1b2c3: 0x6cc2b420,
+-	0x1b2c4: 0x6cb8a620, 0x1b2c5: 0x6d20b620, 0x1b2c6: 0x6c416820, 0x1b2c7: 0x6cf35420,
+-	0x1b2c8: 0x6c137c20, 0x1b2c9: 0x6cccbc20, 0x1b2ca: 0x6d09dc20, 0x1b2cb: 0x6c388420,
+-	0x1b2cc: 0x6cf4aa20, 0x1b2cd: 0x6d3ee620, 0x1b2ce: 0x6c87d820, 0x1b2cf: 0x6d041220,
+-	0x1b2d0: 0x6c110820, 0x1b2d1: 0x6c259220, 0x1b2d2: 0x6cc5c220, 0x1b2d3: 0x6c0bea20,
+-	0x1b2d4: 0x6ceaa220, 0x1b2d5: 0x6c2c1820, 0x1b2d6: 0x6d2f2220, 0x1b2d7: 0x6c983220,
+-	0x1b2d8: 0x6c1be220, 0x1b2d9: 0x6d168a20, 0x1b2da: 0x6c412c20, 0x1b2db: 0x6c456020,
+-	0x1b2dc: 0x6c323420, 0x1b2dd: 0x6c83a220, 0x1b2de: 0x6cb6d620, 0x1b2df: 0x6cd59820,
+-	0x1b2e0: 0x6c425620, 0x1b2e1: 0x6ce56a20, 0x1b2e2: 0x6c681a20, 0x1b2e3: 0x6ccdf820,
+-	0x1b2e4: 0x6cedb620, 0x1b2e5: 0x6c7ee020, 0x1b2e6: 0x6c704420, 0x1b2e7: 0x6c983420,
+-	0x1b2e8: 0x6d0f7e20, 0x1b2e9: 0x6c96b220, 0x1b2ea: 0x6c9e8820, 0x1b2eb: 0x6cd88e20,
+-	0x1b2ec: 0x6d254020, 0x1b2ed: 0x6c4f6020, 0x1b2ee: 0x6c3a8620, 0x1b2ef: 0x6c069020,
+-	0x1b2f0: 0x6c6a7e20, 0x1b2f1: 0x6c2fe020, 0x1b2f2: 0x6c430020, 0x1b2f3: 0x6d118e20,
+-	0x1b2f4: 0x6cfa7c20, 0x1b2f5: 0x6c1ed620, 0x1b2f6: 0x6c20fe20, 0x1b2f7: 0x6cabd020,
+-	0x1b2f8: 0x6cd4a820, 0x1b2f9: 0x6c578220, 0x1b2fa: 0x6d02b420, 0x1b2fb: 0x6c1e2020,
+-	0x1b2fc: 0x6d3aae20, 0x1b2fd: 0x6c1e2220, 0x1b2fe: 0x6cd90420, 0x1b2ff: 0x6c04bc20,
+-	// Block 0x6cc, offset 0x1b300
+-	0x1b300: 0x6cd90620, 0x1b301: 0x6c5fd420, 0x1b302: 0x6cf2d620, 0x1b303: 0x6c6cda20,
+-	0x1b304: 0x6c469420, 0x1b305: 0x6c5e8e20, 0x1b306: 0x6c98c620, 0x1b307: 0x6cafb820,
+-	0x1b308: 0x6c093a20, 0x1b309: 0x6cee6220, 0x1b30a: 0x6c021220, 0x1b30b: 0x6c398820,
+-	0x1b30c: 0x6c3b5c20, 0x1b30d: 0x6d16bc20, 0x1b30e: 0x6c3df420, 0x1b30f: 0x6ca3e420,
+-	0x1b310: 0x6cf58820, 0x1b311: 0x6c566a20, 0x1b312: 0x6d0ad420, 0x1b313: 0x6c30dc20,
+-	0x1b314: 0x6d02fe20, 0x1b315: 0x6d31ba20, 0x1b316: 0x6d109020, 0x1b317: 0x6c8ba020,
+-	0x1b318: 0x6cc8c220, 0x1b319: 0x6c35ac20, 0x1b31a: 0x6c99d620, 0x1b31b: 0x6d2f9a20,
+-	0x1b31c: 0x6c4cae20, 0x1b31d: 0x6d339620, 0x1b31e: 0x6c230420, 0x1b31f: 0x6d281c20,
+-	0x1b320: 0x6d41e420, 0x1b321: 0x6c30de20, 0x1b322: 0x6cd4aa20, 0x1b323: 0x6d2a3c20,
+-	0x1b324: 0x6c352c20, 0x1b325: 0x6c858e20, 0x1b326: 0x6c934620, 0x1b327: 0x6c656620,
+-	0x1b328: 0x6c19be20, 0x1b329: 0x6cd9a020, 0x1b32a: 0x6cbaa620, 0x1b32b: 0x6c3c2220,
+-	0x1b32c: 0x6ca3e620, 0x1b32d: 0x6cfe8620, 0x1b32e: 0x6cfa8a20, 0x1b32f: 0x6c7a2e20,
+-	0x1b330: 0x6cb28420, 0x1b331: 0x6cdf1c20, 0x1b332: 0x6cf7d420, 0x1b333: 0x6d350220,
+-	0x1b334: 0x6c48da20, 0x1b335: 0x6cfe8c20, 0x1b336: 0x6c643a20, 0x1b337: 0x6c633420,
+-	0x1b338: 0x6c467620, 0x1b339: 0x6c05aa20, 0x1b33a: 0x6ca0e220, 0x1b33b: 0x6d16f220,
+-	0x1b33c: 0x6d12d820, 0x1b33d: 0x6d12e020, 0x1b33e: 0x6cd33c20, 0x1b33f: 0x6ca7fa20,
+-	// Block 0x6cd, offset 0x1b340
+-	0x1b340: 0x6c08c220, 0x1b341: 0x6c34d820, 0x1b342: 0x6d149e20, 0x1b343: 0x6c8cb820,
+-	0x1b344: 0x6c0dd020, 0x1b345: 0x6ca63020, 0x1b346: 0x6c7e4020, 0x1b347: 0x6c50d820,
+-	0x1b348: 0x6c04f020, 0x1b349: 0x6c388620, 0x1b34a: 0x6d37a420, 0x1b34b: 0x6c274620,
+-	0x1b34c: 0x6c222c20, 0x1b34d: 0x6d100a20, 0x1b34e: 0x6c3d4a20, 0x1b34f: 0x6c041a20,
+-	0x1b350: 0x6ca1fe20, 0x1b351: 0x6c418620, 0x1b352: 0x6cb4d420, 0x1b353: 0x6cc4ba20,
+-	0x1b354: 0x6cc74220, 0x1b355: 0x6c995220, 0x1b356: 0x6cce9a20, 0x1b357: 0x6cd90e20,
+-	0x1b358: 0x6d30e620, 0x1b359: 0x6cf99620, 0x1b35a: 0x6d202a20, 0x1b35b: 0x6ccfba20,
+-	0x1b35c: 0x6c4b3020, 0x1b35d: 0x6ceb9a20, 0x1b35e: 0x6d2cb420, 0x1b35f: 0x6ca3ec20,
+-	0x1b360: 0x6ca8fe20, 0x1b361: 0x6d1e2420, 0x1b362: 0x6c2be420, 0x1b363: 0x6d359e20,
+-	0x1b364: 0x6d2bcc20, 0x1b365: 0x6c13cc20, 0x1b366: 0x6c287020, 0x1b367: 0x6c46f820,
+-	0x1b368: 0x6c107620, 0x1b369: 0x6c6fdc20, 0x1b36a: 0x6c022820, 0x1b36b: 0x6c3e0c20,
+-	0x1b36c: 0x6c657020, 0x1b36d: 0x6c032e20, 0x1b36e: 0x6c34da20, 0x1b36f: 0x6c77de20,
+-	0x1b370: 0x6ca3b020, 0x1b371: 0x6d3abe20, 0x1b372: 0x6c094820, 0x1b373: 0x6c8efa20,
+-	0x1b374: 0x6c147620, 0x1b375: 0x6cccd020, 0x1b376: 0x6cd89e20, 0x1b377: 0x6c1f1820,
+-	0x1b378: 0x6cadb620, 0x1b379: 0x6cd31a20, 0x1b37a: 0x6c48dc20, 0x1b37b: 0x6d2bce20,
+-	0x1b37c: 0x6d119820, 0x1b37d: 0x6c195620, 0x1b37e: 0x6c6fde20, 0x1b37f: 0x6cd33e20,
+-	// Block 0x6ce, offset 0x1b380
+-	0x1b380: 0x6d33a620, 0x1b381: 0x6c8efc20, 0x1b382: 0x6c99de20, 0x1b383: 0x6c87da20,
+-	0x1b384: 0x6cc65620, 0x1b385: 0x6d2cb620, 0x1b386: 0x6d2aa020, 0x1b387: 0x6c0bec20,
+-	0x1b388: 0x6d2e4c20, 0x1b389: 0x6d35a020, 0x1b38a: 0x6c8f7620, 0x1b38b: 0x6c306220,
+-	0x1b38c: 0x6c914420, 0x1b38d: 0x6cd0ea20, 0x1b38e: 0x6c85a620, 0x1b38f: 0x6c7f9020,
+-	0x1b390: 0x6d1e1c20, 0x1b391: 0x6cd5ae20, 0x1b392: 0x6d09f620, 0x1b393: 0x6cd68420,
+-	0x1b394: 0x6cb76820, 0x1b395: 0x6d313820, 0x1b396: 0x6cb4dc20, 0x1b397: 0x6c85ca20,
+-	0x1b398: 0x6d14c220, 0x1b399: 0x6cfdba20, 0x1b39a: 0x6d323020, 0x1b39b: 0x6c85cc20,
+-	0x1b39c: 0x6ccb1a20, 0x1b39d: 0x6c484e20, 0x1b39e: 0x6c76a420, 0x1b39f: 0x6c078420,
+-	0x1b3a0: 0x6cc58e20, 0x1b3a1: 0x6cffde20, 0x1b3a2: 0x6c041c20, 0x1b3a3: 0x6cc59020,
+-	0x1b3a4: 0x6c0e1220, 0x1b3a5: 0x6d3e1620, 0x1b3a6: 0x6c1d9820, 0x1b3a7: 0x6d172c20,
+-	0x1b3a8: 0x6c22be20, 0x1b3a9: 0x6d063420, 0x1b3aa: 0x6d399220, 0x1b3ab: 0x6c666c20,
+-	0x1b3ac: 0x6d41a820, 0x1b3ad: 0x6c374a20, 0x1b3ae: 0x6c378e20, 0x1b3af: 0x6d1fb820,
+-	0x1b3b0: 0x6c380c20, 0x1b3b1: 0x6c45e220, 0x1b3b2: 0x6c77a620, 0x1b3b3: 0x6c81ac20,
+-	0x1b3b4: 0x6d2d6a20, 0x1b3b5: 0x6c8aec20, 0x1b3b6: 0x6d19be20, 0x1b3b7: 0x6d104420,
+-	0x1b3b8: 0x6c50f220, 0x1b3b9: 0x6c449820, 0x1b3ba: 0x6d172e20, 0x1b3bb: 0x6cd34e20,
+-	0x1b3bc: 0x6c43dc20, 0x1b3bd: 0x6d28fc20, 0x1b3be: 0x6c943620, 0x1b3bf: 0x6c3e3420,
+-	// Block 0x6cf, offset 0x1b3c0
+-	0x1b3c0: 0x6c6aa620, 0x1b3c1: 0x6c525c20, 0x1b3c2: 0x6c4b3e20, 0x1b3c3: 0x6ce21020,
+-	0x1b3c4: 0x6c49e420, 0x1b3c5: 0x6ceef420, 0x1b3c6: 0x6c7b9820, 0x1b3c7: 0x6cc79620,
+-	0x1b3c8: 0x6c01ac20, 0x1b3c9: 0x6c012020, 0x1b3ca: 0x6c734a20, 0x1b3cb: 0x6d14c420,
+-	0x1b3cc: 0x6d3cf820, 0x1b3cd: 0x6c7a3620, 0x1b3ce: 0x6d35bc20, 0x1b3cf: 0x6cbf0420,
+-	0x1b3d0: 0x6ce73020, 0x1b3d1: 0x6cca6c20, 0x1b3d2: 0x6cca6a20, 0x1b3d3: 0x6c586a20,
+-	0x1b3d4: 0x6c710420, 0x1b3d5: 0x6c6fea20, 0x1b3d6: 0x6d094c20, 0x1b3d7: 0x6c34e020,
+-	0x1b3d8: 0x6d3c7c20, 0x1b3d9: 0x6d20f220, 0x1b3da: 0x6d296420,
+-	0x1b3dc: 0x6d1ba620, 0x1b3dd: 0x6c6c1820, 0x1b3de: 0x6c8f6220, 0x1b3df: 0x6d2e5020,
+-	0x1b3e0: 0x6d0ade20, 0x1b3e1: 0x6cc52620, 0x1b3e2: 0x6d313a20, 0x1b3e3: 0x6c295e20,
+-	0x1b3e4: 0x6cb4de20, 0x1b3e5: 0x6cbbd820, 0x1b3e6: 0x6c578c20, 0x1b3e7: 0x6c4b4020,
+-	0x1b3e8: 0x6c67a220, 0x1b3e9: 0x6d3c1220, 0x1b3ea: 0x6d09f820, 0x1b3eb: 0x6cdd1620,
+-	0x1b3ec: 0x6ccbe620, 0x1b3ed: 0x6d314e20, 0x1b3ee: 0x6c069a20, 0x1b3ef: 0x6ce64020,
+-	0x1b3f0: 0x6c7df220, 0x1b3f1: 0x6c6e7020, 0x1b3f2: 0x6cb3c220, 0x1b3f3: 0x6c07b020,
+-	0x1b3f4: 0x6c3e4e20, 0x1b3f5: 0x6cc89a20, 0x1b3f6: 0x6ce7b620, 0x1b3f7: 0x6c742820,
+-	0x1b3f8: 0x6cf5ec20, 0x1b3f9: 0x6c80ba20, 0x1b3fa: 0x6c8f0420, 0x1b3fb: 0x6c3c3c20,
+-	0x1b3fc: 0x6cb4e820, 0x1b3fd: 0x6cf1d420, 0x1b3fe: 0x6c756c20, 0x1b3ff: 0x6c41d620,
+-	// Block 0x6d0, offset 0x1b400
+-	0x1b400: 0x6cdaa220, 0x1b401: 0x6c894c20, 0x1b402: 0x6cc04620, 0x1b403: 0x6ce6be20,
+-	0x1b404: 0x6d1fc020, 0x1b405: 0x6c99ec20, 0x1b406: 0x6c052420, 0x1b407: 0x6c906620,
+-	0x1b408: 0x6cae6820, 0x1b409: 0x6d3c1620, 0x1b40a: 0x6c2c4020, 0x1b40b: 0x6d078c20,
+-	0x1b40c: 0x6ce8a220, 0x1b40d: 0x6d2a7e20, 0x1b40e: 0x6c022a20, 0x1b40f: 0x6c481020,
+-	0x1b410: 0x6c097a20, 0x1b411: 0x6c2b6820, 0x1b412: 0x6c4e0020, 0x1b413: 0x6d3f0820,
+-	0x1b414: 0x6d33d420, 0x1b415: 0x6cc5e620, 0x1b416: 0x6c070e20, 0x1b417: 0x6c450820,
+-	0x1b418: 0x6c658620, 0x1b419: 0x6c591020, 0x1b41a: 0x6ced0a20, 0x1b41b: 0x6caaba20,
+-	0x1b41c: 0x6c634a20, 0x1b41d: 0x6ce57c20, 0x1b41e: 0x6c61ee20, 0x1b41f: 0x6cfeb220,
+-	0x1b420: 0x6c938e20, 0x1b421: 0x6c5ce620, 0x1b422: 0x6cce6820, 0x1b423: 0x6c133020,
+-	0x1b424: 0x6c3b6c20, 0x1b425: 0x6cd91a20, 0x1b426: 0x6c9c0220, 0x1b427: 0x6cf3c020,
+-	0x1b428: 0x6c83bc20, 0x1b429: 0x6c83be20, 0x1b42a: 0x6c311020, 0x1b42b: 0x6cbdd020,
+-	0x1b42c: 0x6d1cea20, 0x1b42d: 0x6cdd1820, 0x1b42e: 0x6c708c20, 0x1b42f: 0x6ce2ea20,
+-	0x1b430: 0x6d019020, 0x1b431: 0x6c7da820, 0x1b432: 0x6d3d5020, 0x1b433: 0x6cd4ca20,
+-	0x1b434: 0x6c14c020, 0x1b435: 0x6c394220, 0x1b436: 0x6cefae20, 0x1b437: 0x6c6e7220,
+-	0x1b438: 0x6c83c020, 0x1b439: 0x6c0d3220, 0x1b43a: 0x6cfa6420, 0x1b43b: 0x6c3d1020,
+-	0x1b43c: 0x6ce21c20, 0x1b43d: 0x6d35e220, 0x1b43e: 0x6c7efa20, 0x1b43f: 0x6c87fc20,
+-	// Block 0x6d1, offset 0x1b440
+-	0x1b440: 0x6c658820, 0x1b441: 0x6d3cfc20, 0x1b442: 0x6c8ce620, 0x1b443: 0x6c83d420,
+-	0x1b444: 0x6cb79220, 0x1b445: 0x6c0e2220, 0x1b446: 0x6c94f820, 0x1b447: 0x6c231620,
+-	0x1b448: 0x6cba5420, 0x1b449: 0x6c9dc420, 0x1b44a: 0x6cb5e620, 0x1b44b: 0x6cb5e820,
+-	0x1b44c: 0x6c114620, 0x1b44d: 0x6c4bf820, 0x1b44e: 0x6c14f420, 0x1b44f: 0x6c2a7020,
+-	0x1b450: 0x6c3a5820, 0x1b451: 0x6cabfe20, 0x1b452: 0x6c057020, 0x1b453: 0x6c057220,
+-	0x1b454: 0x6c5cca20, 0x1b455: 0x6d3f8e20, 0x1b456: 0x6c1a0020, 0x1b457: 0x6d2a4c20,
+-	0x1b458: 0x6c603820, 0x1b459: 0x6c861020, 0x1b45a: 0x6caea020, 0x1b45b: 0x6d233e20,
+-	0x1b45c: 0x6d234020, 0x1b45d: 0x6c481420, 0x1b45e: 0x6c75ba20, 0x1b45f: 0x6c307620,
+-	0x1b460: 0x6ce0f620, 0x1b461: 0x6c428020, 0x1b462: 0x6cee1a20, 0x1b463: 0x6c2c5620,
+-	0x1b464: 0x6c262a20, 0x1b465: 0x6c389c20, 0x1b466: 0x6c195c20, 0x1b467: 0x6d2e6220,
+-	0x1b468: 0x6cb6fe20, 0x1b469: 0x6d24f620, 0x1b46a: 0x6d0d8820, 0x1b46b: 0x6d234220,
+-	0x1b46c: 0x6cc29e20, 0x1b46d: 0x6d17a020, 0x1b46e: 0x6ccbaa20, 0x1b46f: 0x6cc59820,
+-	0x1b470: 0x6c20d220, 0x1b471: 0x6c837820, 0x1b472: 0x6cb4f420, 0x1b473: 0x6d3d0220,
+-	0x1b474: 0x6c3e7a20, 0x1b475: 0x6c77f820, 0x1b476: 0x6c7f0820, 0x1b477: 0x6d405220,
+-	0x1b478: 0x6d405420, 0x1b479: 0x6d2fb220, 0x1b47a: 0x6c491620, 0x1b47b: 0x6c3b2a20,
+-	0x1b47c: 0x6c3b7420, 0x1b47d: 0x6ccfe620, 0x1b47e: 0x6cbe7c20, 0x1b47f: 0x6ca5e420,
+-	// Block 0x6d2, offset 0x1b480
+-	0x1b480: 0x6ced1c20, 0x1b481: 0x6c4cc020, 0x1b482: 0x6c925420, 0x1b483: 0x6c4fc620,
+-	0x1b484: 0x6c6a1620, 0x1b485: 0x6d15f020, 0x1b486: 0x6c1dae20, 0x1b487: 0x6c71b620,
+-	0x1b488: 0x6c712220, 0x1b489: 0x6c1a0220, 0x1b48a: 0x6d423a20, 0x1b48b: 0x6c895420,
+-	0x1b48c: 0x6cbab820, 0x1b48d: 0x6d346020, 0x1b48e: 0x6c20d420, 0x1b48f: 0x6d0af020,
+-	0x1b490: 0x6c709220, 0x1b491: 0x6c06a020, 0x1b492: 0x6c684620, 0x1b493: 0x6d3d6020,
+-	0x1b494: 0x6d3e3a20, 0x1b495: 0x6c0d3820, 0x1b496: 0x6caea220, 0x1b497: 0x6c2fa620,
+-	0x1b498: 0x6c1eda20, 0x1b499: 0x6c172e20, 0x1b49a: 0x6c9b0620, 0x1b49b: 0x6c57dc20,
+-	0x1b49c: 0x6c659420, 0x1b49d: 0x6c4a6820, 0x1b49e: 0x6cf88820, 0x1b49f: 0x6c319c20,
+-	0x1b4a0: 0x6cba5620, 0x1b4a1: 0x6c2a5820, 0x1b4a2: 0x6c4bb420, 0x1b4a3: 0x6c2da020,
+-	0x1b4a4: 0x6c954620, 0x1b4a5: 0x6d33e020, 0x1b4a6: 0x6cc38220, 0x1b4a7: 0x6ca04420,
+-	0x1b4a8: 0x6c40b220, 0x1b4a9: 0x6c454820, 0x1b4aa: 0x6caf1220, 0x1b4ab: 0x6d2dee20,
+-	0x1b4ac: 0x6d199420, 0x1b4ad: 0x6ceb7e20, 0x1b4ae: 0x6ccbac20, 0x1b4af: 0x6c349a20,
+-	0x1b4b0: 0x6d125e20, 0x1b4b1: 0x6c400c20, 0x1b4b2: 0x6cefda20, 0x1b4b3: 0x6cee9a20,
+-	0x1b4b4: 0x6c32c820, 0x1b4b5: 0x6c641a20, 0x1b4b6: 0x6d3f9a20, 0x1b4b7: 0x6c64b220,
+-	0x1b4b8: 0x6d151a20, 0x1b4b9: 0x6cd0ae20, 0x1b4ba: 0x6cf78620, 0x1b4bb: 0x6d0e8220,
+-	0x1b4bc: 0x6d0da220, 0x1b4bd: 0x6c200020, 0x1b4be: 0x6c64b420, 0x1b4bf: 0x6c210c20,
+-	// Block 0x6d3, offset 0x1b4c0
+-	0x1b4c0: 0x6d226a20, 0x1b4c1: 0x6c513a20, 0x1b4c2: 0x6d2be020, 0x1b4c3: 0x6cf2fa20,
+-	0x1b4c4: 0x6cb11420, 0x1b4c5: 0x6c087a20, 0x1b4c6: 0x6d10ac20, 0x1b4c7: 0x6c5dd020,
+-	0x1b4c8: 0x6d05b220, 0x1b4c9: 0x6cc92020, 0x1b4ca: 0x6d0fc620, 0x1b4cb: 0x6c7e7c20,
+-	0x1b4cc: 0x6d0caa20, 0x1b4cd: 0x6c079e20, 0x1b4ce: 0x6c5ac420, 0x1b4cf: 0x6c7c8a20,
+-	0x1b4d0: 0x6c6bea20, 0x1b4d1: 0x6c7c8c20, 0x1b4d2: 0x6cd7f220, 0x1b4d3: 0x6c3c5420,
+-	0x1b4d4: 0x6d004820, 0x1b4d5: 0x6ceb8220, 0x1b4d6: 0x6d35e420, 0x1b4d7: 0x6c668c20,
+-	0x1b4d8: 0x6ca29a20, 0x1b4d9: 0x6c999020, 0x1b4da: 0x6c1f9420, 0x1b4db: 0x6c569e20,
+-	0x1b4dc: 0x6c556c20, 0x1b4dd: 0x6c890420, 0x1b4de: 0x6c837a20, 0x1b4df: 0x6ce67e20,
+-	0x1b4e0: 0x6ca40220, 0x1b4e1: 0x6d215220, 0x1b4e2: 0x6d1f4620, 0x1b4e3: 0x6c9a0820,
+-	0x1b4e4: 0x6cd96620, 0x1b4e5: 0x6d089a20, 0x1b4e6: 0x6d089c20, 0x1b4e7: 0x6d101e20,
+-	0x1b4e8: 0x6d316620, 0x1b4e9: 0x6cb11620, 0x1b4ea: 0x6d12fe20, 0x1b4eb: 0x6c605220,
+-	0x1b4ec: 0x6c6ae620, 0x1b4ed: 0x6d130020, 0x1b4ee: 0x6c1ee020, 0x1b4ef: 0x6c33fa20,
+-	0x1b4f0: 0x6d212820, 0x1b4f1: 0x6d408a20, 0x1b4f2: 0x6cee9c20, 0x1b4f3: 0x6c9a0a20,
+-	0x1b4f4: 0x6ce40220, 0x1b4f5: 0x6c603a20, 0x1b4f6: 0x6c6ae820, 0x1b4f7: 0x6c766220,
+-	0x1b4f8: 0x6cbfb420, 0x1b4f9: 0x6d1c7e20, 0x1b4fa: 0x6cc77a20, 0x1b4fb: 0x6c59d020,
+-	0x1b4fc: 0x6c909620, 0x1b4fd: 0x6c822220, 0x1b4fe: 0x6cc38420, 0x1b4ff: 0x6cfe7620,
+-	// Block 0x6d4, offset 0x1b500
+-	0x1b500: 0x6cb23c20, 0x1b501: 0x6cd41820, 0x1b502: 0x6c414420, 0x1b503: 0x6cdfe820,
+-	0x1b504: 0x6c802e20, 0x1b505: 0x6cf15620, 0x1b506: 0x6d215420, 0x1b507: 0x6c192c20,
+-	0x1b508: 0x6c935620, 0x1b509: 0x6c71be20, 0x1b50a: 0x6cd0cc20, 0x1b50b: 0x6c1f9620,
+-	0x1b50c: 0x6cb0ea20, 0x1b50d: 0x6d01d420, 0x1b50e: 0x6c642420, 0x1b50f: 0x6d182420,
+-	0x1b510: 0x6d2e0220, 0x1b511: 0x6c3ec020, 0x1b512: 0x6cab0620, 0x1b513: 0x6c9d6620,
+-	0x1b514: 0x6c80c220, 0x1b515: 0x6cc69020, 0x1b516: 0x6c47ae20, 0x1b517: 0x6c66a820,
+-	0x1b518: 0x6c71c020, 0x1b519: 0x6cddf220, 0x1b51a: 0x6d11c020, 0x1b51b: 0x6d317a20,
+-	0x1b51c: 0x6c055220, 0x1b51d: 0x6ccc0820, 0x1b51e: 0x6d259220, 0x1b51f: 0x6d3f2020,
+-	0x1b520: 0x6ca01020, 0x1b521: 0x6cdae620, 0x1b522: 0x6c644c20, 0x1b523: 0x6d112020,
+-	0x1b524: 0x6c6b0a20, 0x1b525: 0x6c5a7420, 0x1b526: 0x6c422a20, 0x1b527: 0x6c3a6220,
+-	0x1b528: 0x6d2cd020, 0x1b529: 0x6cb9ae20, 0x1b52a: 0x6c96ce20, 0x1b52b: 0x6cdcf420,
+-	0x1b52c: 0x6d259420, 0x1b52d: 0x6d01d620, 0x1b52e: 0x6cc69220, 0x1b52f: 0x6cd27c20,
+-	0x1b530: 0x6d33fe20, 0x1b531: 0x6c24de20, 0x1b532: 0x6d27ba20, 0x1b533: 0x6ce68020,
+-	0x1b534: 0x6c8e7a20, 0x1b535: 0x6cc68620, 0x1b536: 0x6ce10e20, 0x1b537: 0x6cc3de20,
+-	0x1b538: 0x6d2cfa20, 0x1b539: 0x6cd80220, 0x1b53a: 0x6cd17420, 0x1b53b: 0x6cde7020,
+-	0x1b53c: 0x6c781420, 0x1b53d: 0x6cf66c20, 0x1b53e: 0x6c479c20, 0x1b53f: 0x6cb51020,
+-	// Block 0x6d5, offset 0x1b540
+-	0x1b540: 0x6c431020, 0x1b541: 0x6c431220, 0x1b542: 0x6cdcdc20, 0x1b543: 0x6cac6620,
+-	0x1b544: 0x6ce1da20, 0x1b545: 0x6c441220, 0x1b546: 0x6d0a1a20, 0x1b547: 0x6c2cd420,
+-	0x1b548: 0x6caa2420, 0x1b549: 0x6c606420, 0x1b54a: 0x6cd78c20, 0x1b54b: 0x6c46c220,
+-	0x1b54c: 0x6c20d820, 0x1b54d: 0x6cbacc20, 0x1b54e: 0x6c13ec20, 0x1b54f: 0x6cba1620,
+-	0x1b550: 0x6c57ec20, 0x1b551: 0x6c9a1820, 0x1b552: 0x6d070a20, 0x1b553: 0x6c42ac20,
+-	0x1b554: 0x6c42cc20, 0x1b555: 0x6d3d8020, 0x1b556: 0x6ceb3620, 0x1b557: 0x6cbc7420,
+-	0x1b558: 0x6d105c20, 0x1b559: 0x6c2cd620, 0x1b55a: 0x6c642620, 0x1b55b: 0x6c76e220,
+-	0x1b55c: 0x6d41be20, 0x1b55d: 0x6c2a5a20, 0x1b55e: 0x6c907220, 0x1b55f: 0x6c0d4420,
+-	0x1b560: 0x6d39ba20, 0x1b561: 0x6ccaa420, 0x1b562: 0x6cf79c20, 0x1b563: 0x6c5f1420,
+-	0x1b564: 0x6c882220, 0x1b565: 0x6c5c1620, 0x1b566: 0x6d1da420, 0x1b567: 0x6cba7420,
+-	0x1b568: 0x6c4cc220, 0x1b569: 0x6c414620, 0x1b56a: 0x6c415020, 0x1b56b: 0x6ce95820,
+-	0x1b56c: 0x6c57bc20, 0x1b56d: 0x6cb52020, 0x1b56e: 0x6ccbae20, 0x1b56f: 0x6c24e220,
+-	0x1b570: 0x6caeb220, 0x1b571: 0x6d1fe420, 0x1b572: 0x6c559020, 0x1b573: 0x6c67b620,
+-	0x1b574: 0x6c56be20, 0x1b575: 0x6c594a20, 0x1b576: 0x6c4b6820, 0x1b577: 0x6ca85e20,
+-	0x1b578: 0x6d185220, 0x1b579: 0x6c42d820, 0x1b57a: 0x6c774420, 0x1b57b: 0x6c4a8620,
+-	0x1b57c: 0x6c4a8820, 0x1b57d: 0x6c128a20, 0x1b57e: 0x6c97fa20, 0x1b57f: 0x6c6cac20,
+-	// Block 0x6d6, offset 0x1b580
+-	0x1b580: 0x6c2b4020, 0x1b581: 0x6d3c2220, 0x1b582: 0x6c822620, 0x1b583: 0x6c810a20,
+-	0x1b584: 0x6c18dc20, 0x1b585: 0x6c233a20, 0x1b586: 0x6c841820, 0x1b587: 0x6d04e220,
+-	0x1b588: 0x6cbe8620, 0x1b589: 0x6cd6da20, 0x1b58a: 0x6c38b220, 0x1b58b: 0x6ce7c220,
+-	0x1b58c: 0x6c499e20, 0x1b58d: 0x6d2ae820, 0x1b58e: 0x6cdafc20, 0x1b58f: 0x6c82d020,
+-	0x1b590: 0x6c91d220, 0x1b591: 0x6c896620, 0x1b592: 0x6c9d7820, 0x1b593: 0x6c90b020,
+-	0x1b594: 0x6c177420, 0x1b595: 0x6cdafe20, 0x1b596: 0x6c782220, 0x1b597: 0x6c1e6620,
+-	0x1b598: 0x6ce12020, 0x1b599: 0x6c0c1620, 0x1b59a: 0x6c92a220, 0x1b59b: 0x6c6f8420,
+-	0x1b59c: 0x6d30fc20, 0x1b59d: 0x6d2bf620, 0x1b59e: 0x6cd50020, 0x1b59f: 0x6d2ed620,
+-	0x1b5a0: 0x6c977020, 0x1b5a1: 0x6ca06a20, 0x1b5a2: 0x6ca7a820, 0x1b5a3: 0x6d106a20,
+-	0x1b5a4: 0x6ce59820, 0x1b5a5: 0x6caeb420, 0x1b5a6: 0x6d3b1e20, 0x1b5a7: 0x6ccc0e20,
+-	0x1b5a8: 0x6cf6c020, 0x1b5a9: 0x6cc31020, 0x1b5aa: 0x6c526c20, 0x1b5ab: 0x6c64ce20,
+-	0x1b5ac: 0x6c233c20, 0x1b5ad: 0x6c630e20, 0x1b5ae: 0x6d0f3a20, 0x1b5af: 0x6cbb1820,
+-	0x1b5b0: 0x6d098820, 0x1b5b1: 0x6d1be420, 0x1b5b2: 0x6c37de20, 0x1b5b3: 0x6d0a3c20,
+-	0x1b5b4: 0x6d349820, 0x1b5b5: 0x6cbbf620, 0x1b5b6: 0x6d417c20, 0x1b5b7: 0x6c23b420,
+-	0x1b5b8: 0x6cb49620, 0x1b5b9: 0x6cd60a20, 0x1b5ba: 0x6c57ae20, 0x1b5bb: 0x6c7d1e20,
+-	0x1b5bc: 0x6d319020, 0x1b5bd: 0x6d41f220, 0x1b5be: 0x6d26ec20, 0x1b5bf: 0x6ccdac20,
+-	// Block 0x6d7, offset 0x1b5c0
+-	0x1b5c0: 0x6cf6c420, 0x1b5c1: 0x6c211420, 0x1b5c2: 0x6c2d8020, 0x1b5c3: 0x6c382620,
+-	0x1b5c4: 0x6c41e620, 0x1b5c5: 0x6ca07620, 0x1b5c6: 0x6cf47a20, 0x1b5c7: 0x6cbbaa20,
+-	0x1b5c8: 0x6cc52c20, 0x1b5c9: 0x6c8c6020, 0x1b5ca: 0x6c8e9620, 0x1b5cb: 0x6cbbf820,
+-	0x1b5cc: 0x6cfd0c20, 0x1b5cd: 0x6cc90820, 0x1b5ce: 0x6c38ba20, 0x1b5cf: 0x6d2e1420,
+-	0x1b5d0: 0x6ceb4820, 0x1b5d1: 0x6c81bc20, 0x1b5d2: 0x6d27c620, 0x1b5d3: 0x6cd75a20,
+-	0x1b5d4: 0x6c33ae20, 0x1b5d5: 0x6c199220, 0x1b5d6: 0x6ce13220, 0x1b5d7: 0x6c9b3820,
+-	0x1b5d8: 0x6c715a20, 0x1b5d9: 0x6c1a4220, 0x1b5da: 0x6cdb3020, 0x1b5db: 0x6c74ba20,
+-	0x1b5dc: 0x6c74bc20, 0x1b5dd: 0x6c2d8220, 0x1b5de: 0x6c5c3020, 0x1b5df: 0x6c5f3020,
+-	0x1b5e0: 0x6caae020, 0x1b5e1: 0x6cfe4e20, 0x1b5e2: 0x6ceb8e20, 0x1b5e3: 0x6ca94620,
+-	0x1b5e4: 0x6cc8b020, 0x1b5e5: 0x6d39c420, 0x1b5e6: 0x6ce78620, 0x1b5e7: 0x6d2b8e20,
+-	0x1b5e8: 0x6c3b9420, 0x1b5e9: 0x6cbf6020, 0x1b5ea: 0x6cc4d220, 0x1b5eb: 0x6c526e20,
+-	0x1b5ec: 0x6cb9c820, 0x1b5ed: 0x6c472e20, 0x1b5ee: 0x6c8f1a20, 0x1b5ef: 0x6c81e020,
+-	0x1b5f0: 0x6c42dc20, 0x1b5f1: 0x6c1eae20, 0x1b5f2: 0x6cf94620, 0x1b5f3: 0x6cd18820,
+-	0x1b5f4: 0x6d3f6c20, 0x1b5f5: 0x6cca6820, 0x1b5f6: 0x6c60a620, 0x1b5f7: 0x6c30c620,
+-	0x1b5f8: 0x6c6eca20, 0x1b5f9: 0x6c91dc20, 0x1b5fa: 0x6c673c20, 0x1b5fb: 0x6c1f9820,
+-	0x1b5fc: 0x6d25aa20, 0x1b5fd: 0x6cde9c20, 0x1b5fe: 0x6cd50c20, 0x1b5ff: 0x6c678220,
+-	// Block 0x6d8, offset 0x1b600
+-	0x1b600: 0x6ce01820, 0x1b601: 0x6c8c3820, 0x1b602: 0x6ca9cc20, 0x1b603: 0x6d1b0620,
+-	0x1b604: 0x6cf7a820, 0x1b605: 0x6cdc8020, 0x1b606: 0x6ccd1020, 0x1b607: 0x6d41d020,
+-	0x1b608: 0x6d082a20, 0x1b609: 0x6c199a20, 0x1b60a: 0x6c423420, 0x1b60b: 0x6c716220,
+-	0x1b60c: 0x6d41d820, 0x1b60d: 0x6d18c620, 0x1b60e: 0x6cbda220, 0x1b60f: 0x6cb49c20,
+-	0x1b610: 0x6d0cd620, 0x1b611: 0x6c826020, 0x1b612: 0x6c3c6a20, 0x1b613: 0x6c5b6c20,
+-	0x1b614: 0x6c299220, 0x1b615: 0x6c629620, 0x1b616: 0x6cdc7020, 0x1b617: 0x6c0ff820,
+-	0x1b618: 0x6cb2d420, 0x1b619: 0x6c1a4420, 0x1b61a: 0x6c1ef020, 0x1b61b: 0x6d3b5a20,
+-	0x1b61c: 0x6c4b7c20, 0x1b61d: 0x6c60aa20, 0x1b61e: 0x6c6ba020, 0x1b61f: 0x6c643020,
+-	0x1b620: 0x6cbe8e20, 0x1b621: 0x6d2d2020, 0x1b622: 0x6c65e020, 0x1b623: 0x6cbb2820,
+-	0x1b624: 0x6c2a3420, 0x1b625: 0x6d161a20, 0x1b626: 0x6c0c8220, 0x1b627: 0x6cd93a20,
+-	0x1b628: 0x6ccefe20, 0x1b629: 0x6c8c3a20, 0x1b62a: 0x6c87e420, 0x1b62b: 0x6c140e20,
+-	0x1b62c: 0x6c9b5c20, 0x1b62d: 0x6d1aa020, 0x1b62e: 0x6ce24820, 0x1b62f: 0x6cdf4e20,
+-	0x1b630: 0x6c9de020, 0x1b631: 0x6cb67020, 0x1b632: 0x6ce96820, 0x1b633: 0x6c0d5c20,
+-	0x1b634: 0x6c5e0820, 0x1b635: 0x6c62aa20, 0x1b636: 0x6cb93420, 0x1b637: 0x6ca65820,
+-	0x1b638: 0x6ca92a20, 0x1b639: 0x6d142220, 0x1b63a: 0x6c432a20, 0x1b63b: 0x6c76f620,
+-	0x1b63c: 0x6d1b9220, 0x1b63d: 0x6caa2c20, 0x1b63e: 0x6cbeba20, 0x1b63f: 0x6d0de620,
+-	// Block 0x6d9, offset 0x1b640
+-	0x1b640: 0x6cb67220, 0x1b641: 0x6c9d9e20, 0x1b642: 0x6d2fe820, 0x1b643: 0x6c4b8820,
+-	0x1b644: 0x6c212220, 0x1b645: 0x6c5f6a20, 0x1b646: 0x6c7ca420, 0x1b647: 0x6cb33c20,
+-	0x1b648: 0x6c2af020, 0x1b649: 0x6c1eba20, 0x1b64a: 0x6c449020, 0x1b64b: 0x6c9de420,
+-	0x1b64c: 0x6d1ec220, 0x1b64d: 0x6d373e20, 0x1b64e: 0x6c5a6620, 0x1b64f: 0x6cb93e20,
+-	0x1b650: 0x6c82f420, 0x1b651: 0x6c827020, 0x1b652: 0x6cc9a820, 0x1b653: 0x6c91f220,
+-	0x1b654: 0x6c86cc20, 0x1b655: 0x6c24a220, 0x1b656: 0x6c941220, 0x1b657: 0x6c9efc20,
+-	0x1b658: 0x6c5c7a20, 0x1b659: 0x6cab5c20, 0x1b65a: 0x6c916220, 0x1b65b: 0x6d370620,
+-	0x1b65c: 0x6c42ea20, 0x1b65d: 0x6c31d020, 0x1b65e: 0x6d25c620, 0x1b65f: 0x6c86f620,
+-	0x1b660: 0x6c3ae820, 0x1b661: 0x6d3dba20, 0x1b662: 0x6cda3420, 0x1b663: 0x6c886020,
+-	0x1b664: 0x6c681c20, 0x1b665: 0x6c1ec420, 0x1b666: 0x6cbeec20, 0x1b667: 0x6d39e020,
+-	0x1b668: 0x6c918020, 0x1b669: 0x6d0cfc20, 0x1b66a: 0x6c871a20, 0x1b66b: 0x6d39de20,
+-	0x1b66c: 0x6c193e20, 0x1b66d: 0x6c6b5a20, 0x1b66e: 0x6c36d820, 0x1b66f: 0x6cda6820,
+-	0x1b670: 0x6c580020, 0x1b671: 0x6ca8a220, 0x1b672: 0x6d244e20, 0x1b673: 0x6c8fdc20,
+-	0x1b674: 0x6c7f7420, 0x1b675: 0x6c69f020, 0x1b676: 0x6cfc4620, 0x1b677: 0x6c4aa820,
+-	0x1b678: 0x6c71de20, 0x1b679: 0x6cff4820, 0x1b67a: 0x6c8d9a20, 0x1b67b: 0x6d1c2a20,
+-	0x1b67c: 0x6c653c20, 0x1b67d: 0x6d1b2420, 0x1b67e: 0x6d1f9620, 0x1b67f: 0x6d1cc420,
+-	// Block 0x6da, offset 0x1b680
+-	0x1b680: 0x6cfd9a20, 0x1b681: 0x6ca9e020, 0x1b682: 0x6c0fb620, 0x1b683: 0x6c156020,
+-	0x1b684: 0x6c7ff820, 0x1b685: 0x6c71e220, 0x1b686: 0x6cd6b220, 0x1b687: 0x6ccf9020,
+-	0x1b688: 0x6cef7420, 0x1b689: 0x6c23cc20, 0x1b68a: 0x6cc33020, 0x1b68b: 0x6cc20620,
+-	0x1b68c: 0x6c126220, 0x1b68d: 0x6c704820, 0x1b68e: 0x6d247a20, 0x1b68f: 0x6c957e20,
+-	0x1b690: 0x6c878a20, 0x1b691: 0x6c24a820, 0x1b692: 0x6c945c20, 0x1b693: 0x6c294420,
+-	0x1b694: 0x6c752820, 0x1b695: 0x6d0f3e20, 0x1b696: 0x6c806420, 0x1b697: 0x6c800e20,
+-	0x1b698: 0x6d3a4620, 0x1b699: 0x6c82a220, 0x1b69a: 0x6c855420, 0x1b69b: 0x6c03e020,
+-	0x1b69c: 0x6ca46620, 0x1b69d: 0x6d249220, 0x1b69e: 0x6c8dd820, 0x1b69f: 0x6c4a3020,
+-	0x1b6a0: 0x6cba3820, 0x1b6a1: 0x6c22aa20, 0x1b6a2: 0x6c596a20, 0x1b6a3: 0x6d02b620,
+-	0x1b6a4: 0x6d20b820, 0x1b6a5: 0x6d16be20, 0x1b6a6: 0x6cb8b220, 0x1b6a7: 0x6cab3020,
+-	0x1b6a8: 0x6d057820, 0x1b6a9: 0x6c173c20, 0x1b6aa: 0x6c1f1a20, 0x1b6ab: 0x6cb78020,
+-	0x1b6ac: 0x6c768220, 0x1b6ad: 0x6d173020, 0x1b6ae: 0x6c741420, 0x1b6af: 0x6cf87020,
+-	0x1b6b0: 0x6d06a420, 0x1b6b1: 0x6c509820, 0x1b6b2: 0x6d231420, 0x1b6b3: 0x6c7cf220,
+-	0x1b6b4: 0x6c80ac20, 0x1b6b5: 0x6c7b6220, 0x1b6b6: 0x6cd77c20, 0x1b6b7: 0x6cf5ee20,
+-	0x1b6b8: 0x6c002220, 0x1b6b9: 0x6d13f420, 0x1b6ba: 0x6cb4f620, 0x1b6bb: 0x6c1f9e20,
+-	0x1b6bc: 0x6c1ba620, 0x1b6bd: 0x6cbd3020, 0x1b6be: 0x6c7b6620, 0x1b6bf: 0x6c76d420,
+-	// Block 0x6db, offset 0x1b6c0
+-	0x1b6c0: 0x6c7b6820, 0x1b6c1: 0x6c76dc20, 0x1b6c2: 0x6c202220, 0x1b6c3: 0x6ccc5a20,
+-	0x1b6c4: 0x6c485a20, 0x1b6c5: 0x6d19ea20, 0x1b6c6: 0x6d02de20, 0x1b6c7: 0x6d004a20,
+-	0x1b6c8: 0x6d215620, 0x1b6c9: 0x6cba6820, 0x1b6ca: 0x6cfeec20, 0x1b6cb: 0x6d131620,
+-	0x1b6cc: 0x6c43a020, 0x1b6cd: 0x6cf37420, 0x1b6ce: 0x6ce0a820, 0x1b6cf: 0x6c6d3e20,
+-	0x1b6d0: 0x6cab4820, 0x1b6d1: 0x6c54f820, 0x1b6d2: 0x6ce40e20, 0x1b6d3: 0x6c582c20,
+-	0x1b6d4: 0x6d05d420, 0x1b6d5: 0x6cae3820, 0x1b6d6: 0x6cf81020, 0x1b6d7: 0x6d000820,
+-	0x1b6d8: 0x6c1fa220, 0x1b6d9: 0x6ccf7820, 0x1b6da: 0x6ccdae20, 0x1b6db: 0x6c4dbe20,
+-	0x1b6dc: 0x6c1f7e20, 0x1b6dd: 0x6d18c820, 0x1b6de: 0x6c36c420, 0x1b6df: 0x6d21b420,
+-	0x1b6e0: 0x6c21e220, 0x1b6e1: 0x6c596e20, 0x1b6e2: 0x6d34cc20, 0x1b6e3: 0x6d333620,
+-	0x1b6e4: 0x6c228a20, 0x1b6e5: 0x6c105e20, 0x1b6e6: 0x6cf42c20, 0x1b6e7: 0x6cb58420,
+-	0x1b6e8: 0x6c106e20, 0x1b6e9: 0x6c107020, 0x1b6ea: 0x6cec4e20, 0x1b6eb: 0x6c721220,
+-	0x1b6ec: 0x6cb97e20, 0x1b6ed: 0x6c1b1620, 0x1b6ee: 0x6ccb2a20, 0x1b6ef: 0x6c1ba820,
+-	0x1b6f0: 0x6ccb3620, 0x1b6f1: 0x6d37fa20, 0x1b6f2: 0x6cdc4620, 0x1b6f3: 0x6cdc4820,
+-	0x1b6f4: 0x6c864c20, 0x1b6f5: 0x6c263420, 0x1b6f6: 0x6d218220, 0x1b6f7: 0x6c867c20,
+-	0x1b6f8: 0x6c4a9a20, 0x1b6f9: 0x6c271220, 0x1b6fa: 0x6c35ca20, 0x1b6fb: 0x6cd86c20,
+-	0x1b6fc: 0x6c646420, 0x1b6fd: 0x6d301c20, 0x1b6fe: 0x6ca0cc20, 0x1b6ff: 0x6ca0ce20,
+-	// Block 0x6dc, offset 0x1b700
+-	0x1b700: 0x6d109220, 0x1b701: 0x6ca0d020, 0x1b702: 0x6c242020, 0x1b703: 0x6d0f5020,
+-	0x1b704: 0x6ce4da20, 0x1b705: 0x6cd0ee20, 0x1b706: 0x6c274820, 0x1b707: 0x6cce0020,
+-	0x1b708: 0x6d06a620, 0x1b709: 0x6d0a7c20, 0x1b70a: 0x6cd4ba20, 0x1b70b: 0x6c118c20,
+-	0x1b70c: 0x6c742a20, 0x1b70d: 0x6cb19420, 0x1b70e: 0x6cb85c20, 0x1b70f: 0x6cc04820,
+-	0x1b710: 0x6cdaa420, 0x1b711: 0x6cbe7820, 0x1b712: 0x6d27e620, 0x1b713: 0x6c88ee20,
+-	0x1b714: 0x6d17a220, 0x1b715: 0x6c3d2a20, 0x1b716: 0x6d346220, 0x1b717: 0x6d12f220,
+-	0x1b718: 0x6c119620, 0x1b719: 0x6c5cce20, 0x1b71a: 0x6c27e020, 0x1b71b: 0x6c603c20,
+-	0x1b71c: 0x6c2ebe20, 0x1b71d: 0x6d317c20, 0x1b71e: 0x6d27f220, 0x1b71f: 0x6cf15820,
+-	0x1b720: 0x6c1e4820, 0x1b721: 0x6c0d8220, 0x1b722: 0x6ce41220, 0x1b723: 0x6c6d4020,
+-	0x1b724: 0x6cce1620, 0x1b725: 0x6d1a9220, 0x1b726: 0x6c2dda20, 0x1b727: 0x6c702220,
+-	0x1b728: 0x6c5c3220, 0x1b729: 0x6c24b020, 0x1b72a: 0x6d189820, 0x1b72b: 0x6c27fc20,
+-	0x1b72c: 0x6c327e20, 0x1b72d: 0x6c678420, 0x1b72e: 0x6c892020, 0x1b72f: 0x6c0d8c20,
+-	0x1b730: 0x6c31d220, 0x1b731: 0x6c674020, 0x1b732: 0x6c653e20, 0x1b733: 0x6cd49820,
+-	0x1b734: 0x6cab3220, 0x1b735: 0x6c32b620, 0x1b736: 0x6d3ac020, 0x1b737: 0x6d19c020,
+-	0x1b738: 0x6cbec820, 0x1b739: 0x6d175e20, 0x1b73a: 0x6ccbda20, 0x1b73b: 0x6cbc4020,
+-	0x1b73c: 0x6c784e20, 0x1b73d: 0x6cff8a20, 0x1b73e: 0x6d0a8e20, 0x1b73f: 0x6c2d5e20,
+-	// Block 0x6dd, offset 0x1b740
+-	0x1b740: 0x6c5b5620, 0x1b741: 0x6c5b5820, 0x1b742: 0x6c47a020, 0x1b743: 0x6cbb9020,
+-	0x1b744: 0x6c5f0620, 0x1b745: 0x6d185420, 0x1b746: 0x6cab4a20, 0x1b747: 0x6c5b6220,
+-	0x1b748: 0x6c32da20, 0x1b749: 0x6d142420, 0x1b74a: 0x6cff5c20, 0x1b74b: 0x6cf39c20,
+-	0x1b74c: 0x6c497220, 0x1b74d: 0x6ca22020, 0x1b74e: 0x6c9a4820, 0x1b74f: 0x6c9a4a20,
+-	0x1b750: 0x6c006020, 0x1b751: 0x6c6b9420, 0x1b752: 0x6c318820, 0x1b753: 0x6d239020,
+-	0x1b754: 0x6c08ac20, 0x1b755: 0x6c090a20, 0x1b756: 0x6c094e20, 0x1b757: 0x6cafc220,
+-	0x1b758: 0x6cafc420, 0x1b759: 0x6c095e20, 0x1b75a: 0x6c152c20, 0x1b75b: 0x6c98c020,
+-	0x1b75c: 0x6c4fbc20, 0x1b75d: 0x6c111a20, 0x1b75e: 0x6cafba20, 0x1b75f: 0x6c8b9020,
+-	0x1b760: 0x6c633820, 0x1b761: 0x6d2d6420, 0x1b762: 0x6cc9c020, 0x1b763: 0x6ca27620,
+-	0x1b764: 0x6ceb9e20, 0x1b765: 0x6d09fc20, 0x1b766: 0x6c379020, 0x1b767: 0x6cc66620,
+-	0x1b768: 0x6cfbfa20, 0x1b769: 0x6c710620, 0x1b76a: 0x6ca21020, 0x1b76b: 0x6c4fc420,
+-	0x1b76c: 0x6cc04a20, 0x1b76d: 0x6c311220, 0x1b76e: 0x6ccbea20, 0x1b76f: 0x6ce06020,
+-	0x1b770: 0x6cadd620, 0x1b771: 0x6c712420, 0x1b772: 0x6c343020, 0x1b773: 0x6c253c20,
+-	0x1b774: 0x6c087220, 0x1b775: 0x6cca0020, 0x1b776: 0x6cca6420, 0x1b777: 0x6c999420,
+-	0x1b778: 0x6cc9c820, 0x1b779: 0x6cd4ea20, 0x1b77a: 0x6d208e20, 0x1b77b: 0x6cebac20,
+-	0x1b77c: 0x6c513c20, 0x1b77d: 0x6c668e20, 0x1b77e: 0x6cde7420, 0x1b77f: 0x6cca0620,
+-	// Block 0x6de, offset 0x1b780
+-	0x1b780: 0x6c935e20, 0x1b781: 0x6ca21620, 0x1b782: 0x6c98fa20, 0x1b783: 0x6ce78820,
+-	0x1b784: 0x6cc72220, 0x1b785: 0x6c16f820, 0x1b786: 0x6cb49820, 0x1b787: 0x6c934e20,
+-	0x1b788: 0x6d2da820, 0x1b789: 0x6ccafc20, 0x1b78a: 0x6d2daa20, 0x1b78b: 0x6c9b5e20,
+-	0x1b78c: 0x6c91f420, 0x1b78d: 0x6cc20820, 0x1b78e: 0x6c2f2220, 0x1b78f: 0x6cd2e420,
+-	0x1b790: 0x6c2b0a20, 0x1b791: 0x6c9f2620, 0x1b792: 0x6c73d220, 0x1b793: 0x6c983620,
+-	0x1b794: 0x6cb72620, 0x1b795: 0x6cb1c420, 0x1b796: 0x6ca39220, 0x1b797: 0x6cb72e20,
+-	0x1b798: 0x6c29bc20, 0x1b799: 0x6cfa7a20, 0x1b79a: 0x6c1fde20, 0x1b79b: 0x6c3b1a20,
+-	0x1b79c: 0x6d0f8820, 0x1b79d: 0x6ca58620, 0x1b79e: 0x6c0d9a20, 0x1b79f: 0x6c3e1020,
+-	0x1b7a0: 0x6ccfbc20, 0x1b7a1: 0x6c2fe620, 0x1b7a2: 0x6cbe3420, 0x1b7a3: 0x6cb76a20,
+-	0x1b7a4: 0x6d19c220, 0x1b7a5: 0x6cf5c020, 0x1b7a6: 0x6c4d6020, 0x1b7a7: 0x6d100e20,
+-	0x1b7a8: 0x6c012220, 0x1b7a9: 0x6d0b8e20, 0x1b7aa: 0x6c78a620, 0x1b7ab: 0x6cbe4420,
+-	0x1b7ac: 0x6d0bb020, 0x1b7ad: 0x6c300220, 0x1b7ae: 0x6c288a20, 0x1b7af: 0x6c93e020,
+-	0x1b7b0: 0x6cbe7e20, 0x1b7b1: 0x6d102620, 0x1b7b2: 0x6d275620, 0x1b7b3: 0x6d275c20,
+-	0x1b7b4: 0x6cd70220, 0x1b7b5: 0x6cd73c20, 0x1b7b6: 0x6d331620, 0x1b7b7: 0x6c0da420,
+-	0x1b7b8: 0x6d1e0c20, 0x1b7b9: 0x6c294e20, 0x1b7ba: 0x6cd73e20, 0x1b7bb: 0x6c821020,
+-	0x1b7bc: 0x6ca67820, 0x1b7bd: 0x6cea7620, 0x1b7be: 0x6c391420, 0x1b7bf: 0x6c4abc20,
+-	// Block 0x6df, offset 0x1b7c0
+-	0x1b7c0: 0x6ce62620, 0x1b7c1: 0x6d338220, 0x1b7c2: 0x6cc00020, 0x1b7c3: 0x6c0d1e20,
+-	0x1b7c4: 0x6d2b3620, 0x1b7c5: 0x6c9dfc20, 0x1b7c6: 0x6c248c20, 0x1b7c7: 0x6c5b8820,
+-	0x1b7c8: 0x6c2dac20, 0x1b7c9: 0x6c4e7c20, 0x1b7ca: 0x6c142c20, 0x1b7cb: 0x6d3d2020,
+-	0x1b7cc: 0x6c202a20, 0x1b7cd: 0x6cecba20, 0x1b7ce: 0x6c391c20, 0x1b7cf: 0x6c26e820,
+-	0x1b7d0: 0x6cf57220, 0x1b7d1: 0x6cea9c20, 0x1b7d2: 0x6c982a20, 0x1b7d3: 0x6cbffa20,
+-	0x1b7d4: 0x6cb73020, 0x1b7d5: 0x6ccd6a20, 0x1b7d6: 0x6cb24220, 0x1b7d7: 0x6c4e8620,
+-	0x1b7d8: 0x6cb89a20, 0x1b7d9: 0x6cf34620, 0x1b7da: 0x6cf34820, 0x1b7db: 0x6d0a6620,
+-	0x1b7dc: 0x6cd87a20, 0x1b7dd: 0x6cc7f420, 0x1b7de: 0x6c45d420, 0x1b7df: 0x6c674220,
+-	0x1b7e0: 0x6c1af620, 0x1b7e1: 0x6cf34a20, 0x1b7e2: 0x6ce92c20, 0x1b7e3: 0x6c704220,
+-	0x1b7e4: 0x6ce0b820, 0x1b7e5: 0x6d338c20, 0x1b7e6: 0x6d34e820, 0x1b7e7: 0x6cb8a820,
+-	0x1b7e8: 0x6c9d1c20, 0x1b7e9: 0x6c475820, 0x1b7ea: 0x6cedc420, 0x1b7eb: 0x6c6e0e20,
+-	0x1b7ec: 0x6c6e1020, 0x1b7ed: 0x6cc8be20, 0x1b7ee: 0x6c755a20, 0x1b7ef: 0x6c52f820,
+-	0x1b7f0: 0x6cdf6020, 0x1b7f1: 0x6cc34e20, 0x1b7f2: 0x6c5fcc20, 0x1b7f3: 0x6c0b7020,
+-	0x1b7f4: 0x6c0b7220, 0x1b7f5: 0x6c420e20, 0x1b7f6: 0x6cf1fe20, 0x1b7f7: 0x6d378820,
+-	0x1b7f8: 0x6c398420, 0x1b7f9: 0x6d045620, 0x1b7fa: 0x6c73e020, 0x1b7fb: 0x6c561020,
+-	0x1b7fc: 0x6ca96820, 0x1b7fd: 0x6cb73820, 0x1b7fe: 0x6c3b5620, 0x1b7ff: 0x6d067220,
+-	// Block 0x6e0, offset 0x1b800
+-	0x1b800: 0x6d068420, 0x1b801: 0x6cbe0620, 0x1b802: 0x6d146220, 0x1b803: 0x6cf2ce20,
+-	0x1b804: 0x6d278020, 0x1b805: 0x6d253e20, 0x1b806: 0x6c4f9020, 0x1b807: 0x6d0d3e20,
+-	0x1b808: 0x6c189c20, 0x1b809: 0x6c189e20, 0x1b80a: 0x6c286820, 0x1b80b: 0x6d1eec20,
+-	0x1b80c: 0x6c33da20, 0x1b80d: 0x6c565820, 0x1b80e: 0x6c5d9c20, 0x1b80f: 0x6cb4cc20,
+-	0x1b810: 0x6ca26820, 0x1b811: 0x6caa7620, 0x1b812: 0x6c99d220, 0x1b813: 0x6c268220,
+-	0x1b814: 0x6c9e0020, 0x1b815: 0x6c9d1e20, 0x1b816: 0x6c1cae20, 0x1b817: 0x6cacce20,
+-	0x1b818: 0x6c08bc20, 0x1b819: 0x6ccbc420, 0x1b81a: 0x6d34ea20, 0x1b81b: 0x6cae0220,
+-	0x1b81c: 0x6cac9e20, 0x1b81d: 0x6d3c7620, 0x1b81e: 0x6d288420, 0x1b81f: 0x6c463820,
+-	0x1b820: 0x6c8e4220, 0x1b821: 0x6c99d420, 0x1b822: 0x6d2aa620, 0x1b823: 0x6c3c1c20,
+-	0x1b824: 0x6cab2e20, 0x1b825: 0x6c858020, 0x1b826: 0x6c94da20, 0x1b827: 0x6c122220,
+-	0x1b828: 0x6c3c1e20, 0x1b829: 0x6ceee020, 0x1b82a: 0x6c565a20, 0x1b82b: 0x6ca0d220,
+-	0x1b82c: 0x6c9a7820, 0x1b82d: 0x6cd59e20, 0x1b82e: 0x6c71a620, 0x1b82f: 0x6d296220,
+-	0x1b830: 0x6ceab020, 0x1b831: 0x6ceaee20, 0x1b832: 0x6ceaf020, 0x1b833: 0x6c50c820,
+-	0x1b834: 0x6c859020, 0x1b835: 0x6c9cdc20, 0x1b836: 0x6d147220, 0x1b837: 0x6c37e420,
+-	0x1b838: 0x6c3a8820, 0x1b839: 0x6d1efe20, 0x1b83a: 0x6ce48420, 0x1b83b: 0x6d358a20,
+-	0x1b83c: 0x6d2f8820, 0x1b83d: 0x6c46f220, 0x1b83e: 0x6d2d6020, 0x1b83f: 0x6d0c6820,
+-	// Block 0x6e1, offset 0x1b840
+-	0x1b840: 0x6cd7ce20, 0x1b841: 0x6c7be420, 0x1b842: 0x6c6ef820, 0x1b843: 0x6c705c20,
+-	0x1b844: 0x6d016020, 0x1b845: 0x6cc00620, 0x1b846: 0x6d16c220, 0x1b847: 0x6c632c20,
+-	0x1b848: 0x6d379a20, 0x1b849: 0x6cc2c220, 0x1b84a: 0x6cb2fc20, 0x1b84b: 0x6c5b9020,
+-	0x1b84c: 0x6c9d2620, 0x1b84d: 0x6c077e20, 0x1b84e: 0x6d2aaa20, 0x1b84f: 0x6d39f420,
+-	0x1b850: 0x6c821820, 0x1b851: 0x6d1e9820, 0x1b852: 0x6c46f420, 0x1b853: 0x6c530420,
+-	0x1b854: 0x6c417620, 0x1b855: 0x6c382e20, 0x1b856: 0x6c992e20, 0x1b857: 0x6cd89020,
+-	0x1b858: 0x6c54a620, 0x1b859: 0x6cb27a20, 0x1b85a: 0x6c229220, 0x1b85b: 0x6c392220,
+-	0x1b85c: 0x6d339a20, 0x1b85d: 0x6cda8020, 0x1b85e: 0x6ca95420, 0x1b85f: 0x6c195420,
+-	0x1b860: 0x6c8cac20, 0x1b861: 0x6cad8220, 0x1b862: 0x6c0e5220, 0x1b863: 0x6cb74620,
+-	0x1b864: 0x6cd88220, 0x1b865: 0x6ca5c020, 0x1b866: 0x6c70f620, 0x1b867: 0x6cc96a20,
+-	0x1b868: 0x6d3ab020, 0x1b869: 0x6cd0e220, 0x1b86a: 0x6c832020, 0x1b86b: 0x6d087020,
+-	0x1b86c: 0x6c73f020, 0x1b86d: 0x6c3df620, 0x1b86e: 0x6caca220, 0x1b86f: 0x6c9f9620,
+-	0x1b870: 0x6cdf6820, 0x1b871: 0x6d0f4a20, 0x1b872: 0x6c612020, 0x1b873: 0x6d1e1420,
+-	0x1b874: 0x6c497c20, 0x1b875: 0x6c083a20, 0x1b876: 0x6d090020, 0x1b877: 0x6c8f6c20,
+-	0x1b878: 0x6c913a20, 0x1b879: 0x6c28f420, 0x1b87a: 0x6c95e020, 0x1b87b: 0x6d016220,
+-	0x1b87c: 0x6cb3c020, 0x1b87d: 0x6d2aac20, 0x1b87e: 0x6c6d9020, 0x1b87f: 0x6d1a3c20,
+-	// Block 0x6e2, offset 0x1b880
+-	0x1b880: 0x6cac5420, 0x1b881: 0x6c6a9020, 0x1b882: 0x6d16f620, 0x1b883: 0x6c5a9820,
+-	0x1b884: 0x6c5b2620, 0x1b885: 0x6d293020, 0x1b886: 0x6c19ce20, 0x1b887: 0x6d19b420,
+-	0x1b888: 0x6ceeec20, 0x1b889: 0x6c546620, 0x1b88a: 0x6c665a20, 0x1b88b: 0x6d0f9820,
+-	0x1b88c: 0x6c8ad420, 0x1b88d: 0x6cd8a820, 0x1b88e: 0x6c61aa20, 0x1b88f: 0x6c374020,
+-	0x1b890: 0x6d03d020, 0x1b891: 0x6c3e1220, 0x1b892: 0x6cc94c20, 0x1b893: 0x6ccb1820,
+-	0x1b894: 0x6d350420, 0x1b895: 0x6d1b3e20, 0x1b896: 0x6cf3b620, 0x1b897: 0x6cf7d620,
+-	0x1b898: 0x6c77a420, 0x1b899: 0x6d398a20, 0x1b89a: 0x6c67da20, 0x1b89b: 0x6c95e820,
+-	0x1b89c: 0x6c95f420, 0x1b89d: 0x6c01a620, 0x1b89e: 0x6c306420, 0x1b89f: 0x6ce3dc20,
+-	0x1b8a0: 0x6ca1c820, 0x1b8a1: 0x6c832220, 0x1b8a2: 0x6d13da20, 0x1b8a3: 0x6c9ce420,
+-	0x1b8a4: 0x6cc2c420, 0x1b8a5: 0x6c6c3020, 0x1b8a6: 0x6cb37020, 0x1b8a7: 0x6cef9820,
+-	0x1b8a8: 0x6cff7020, 0x1b8a9: 0x6d017220, 0x1b8aa: 0x6c531420, 0x1b8ab: 0x6d069420,
+-	0x1b8ac: 0x6cda8620, 0x1b8ad: 0x6c7b9220, 0x1b8ae: 0x6ce20a20, 0x1b8af: 0x6cbcac20,
+-	0x1b8b0: 0x6c71fe20, 0x1b8b1: 0x6c378a20, 0x1b8b2: 0x6d386020, 0x1b8b3: 0x6cc81220,
+-	0x1b8b4: 0x6cb28620, 0x1b8b5: 0x6d09ec20, 0x1b8b6: 0x6d046020, 0x1b8b7: 0x6d35a220,
+-	0x1b8b8: 0x6c49e020, 0x1b8b9: 0x6c586420, 0x1b8ba: 0x6c9fec20, 0x1b8bb: 0x6c5d7020,
+-	0x1b8bc: 0x6cebcc20, 0x1b8bd: 0x6cb84c20, 0x1b8be: 0x6cac1e20, 0x1b8bf: 0x6cf35820,
+-	// Block 0x6e3, offset 0x1b8c0
+-	0x1b8c0: 0x6cc0e820, 0x1b8c1: 0x6c8e4a20, 0x1b8c2: 0x6d16f820, 0x1b8c3: 0x6c633a20,
+-	0x1b8c4: 0x6c6e5a20, 0x1b8c5: 0x6cb9f420, 0x1b8c6: 0x6c675420, 0x1b8c7: 0x6c683220,
+-	0x1b8c8: 0x6d312a20, 0x1b8c9: 0x6cd1ac20, 0x1b8ca: 0x6d3d3420, 0x1b8cb: 0x6c12d420,
+-	0x1b8cc: 0x6c380020, 0x1b8cd: 0x6c5b9c20, 0x1b8ce: 0x6c61ac20, 0x1b8cf: 0x6c8e4620,
+-	0x1b8d0: 0x6c159c20, 0x1b8d1: 0x6c5ce020, 0x1b8d2: 0x6c561420, 0x1b8d3: 0x6ca9b420,
+-	0x1b8d4: 0x6d09ee20, 0x1b8d5: 0x6c6ce220, 0x1b8d6: 0x6c8aee20, 0x1b8d7: 0x6cc03220,
+-	0x1b8d8: 0x6cefa220, 0x1b8d9: 0x6d30ea20, 0x1b8da: 0x6c75a620, 0x1b8db: 0x6c4df620,
+-	0x1b8dc: 0x6c052620, 0x1b8dd: 0x6c985220, 0x1b8de: 0x6d3d3a20, 0x1b8df: 0x6d1f1820,
+-	0x1b8e0: 0x6cf5c220, 0x1b8e1: 0x6c0ed620, 0x1b8e2: 0x6c310420, 0x1b8e3: 0x6c590420,
+-	0x1b8e4: 0x6c532a20, 0x1b8e5: 0x6d173220, 0x1b8e6: 0x6cb48820, 0x1b8e7: 0x6d1ce420,
+-	0x1b8e8: 0x6c802420, 0x1b8e9: 0x6c502e20, 0x1b8ea: 0x6c811820, 0x1b8eb: 0x6c4e5620,
+-	0x1b8ec: 0x6c850c20, 0x1b8ed: 0x6c44be20, 0x1b8ee: 0x6c3e3620, 0x1b8ef: 0x6cf3b820,
+-	0x1b8f0: 0x6c88ea20, 0x1b8f1: 0x6c213a20, 0x1b8f2: 0x6c3ca220, 0x1b8f3: 0x6d173420,
+-	0x1b8f4: 0x6d22f220, 0x1b8f5: 0x6ce73420, 0x1b8f6: 0x6c815420, 0x1b8f7: 0x6c4d3a20,
+-	0x1b8f8: 0x6c6cee20, 0x1b8f9: 0x6c634220, 0x1b8fa: 0x6c1cb820, 0x1b8fb: 0x6c6f0820,
+-	0x1b8fc: 0x6c9a5220, 0x1b8fd: 0x6cdbb820, 0x1b8fe: 0x6c195e20, 0x1b8ff: 0x6cae1420,
+-	// Block 0x6e4, offset 0x1b900
+-	0x1b900: 0x6cfcaa20, 0x1b901: 0x6cd09820, 0x1b902: 0x6ce92e20, 0x1b903: 0x6c7dd020,
+-	0x1b904: 0x6cb25020, 0x1b905: 0x6ca80820, 0x1b906: 0x6c4e9c20, 0x1b907: 0x6c6da020,
+-	0x1b908: 0x6cfea220, 0x1b909: 0x6ccf3c20, 0x1b90a: 0x6ca71e20, 0x1b90b: 0x6ce84e20,
+-	0x1b90c: 0x6d1e2620, 0x1b90d: 0x6cffe020, 0x1b90e: 0x6cfb3620, 0x1b90f: 0x6ce6bc20,
+-	0x1b910: 0x6c355820, 0x1b911: 0x6cda8e20, 0x1b912: 0x6cea1c20, 0x1b913: 0x6c72e620,
+-	0x1b914: 0x6c132c20, 0x1b915: 0x6ce3e220, 0x1b916: 0x6c85d020, 0x1b917: 0x6cd71620,
+-	0x1b918: 0x6cd8aa20, 0x1b919: 0x6c832820, 0x1b91a: 0x6cd71820, 0x1b91b: 0x6ce1be20,
+-	0x1b91c: 0x6c318e20, 0x1b91d: 0x6c81ce20, 0x1b91e: 0x6c7eec20, 0x1b91f: 0x6c87f620,
+-	0x1b920: 0x6ceef620, 0x1b921: 0x6cf28020, 0x1b922: 0x6d279a20, 0x1b923: 0x6c590620,
+-	0x1b924: 0x6c2b6420, 0x1b925: 0x6c528a20, 0x1b926: 0x6cc8fa20, 0x1b927: 0x6c666e20,
+-	0x1b928: 0x6d2f0220, 0x1b929: 0x6ccb1c20, 0x1b92a: 0x6c3e5220, 0x1b92b: 0x6c498420,
+-	0x1b92c: 0x6d042a20, 0x1b92d: 0x6cd46420, 0x1b92e: 0x6cd69020, 0x1b92f: 0x6d0b2a20,
+-	0x1b930: 0x6c21b620, 0x1b931: 0x6d2f2e20, 0x1b932: 0x6d12e820, 0x1b933: 0x6c797620,
+-	0x1b934: 0x6cf2e420, 0x1b935: 0x6c4e0220, 0x1b936: 0x6ceac020, 0x1b937: 0x6c2ffa20,
+-	0x1b938: 0x6c510820, 0x1b939: 0x6cf28620, 0x1b93a: 0x6c708e20, 0x1b93b: 0x6ccf4020,
+-	0x1b93c: 0x6c894e20, 0x1b93d: 0x6c5cc220, 0x1b93e: 0x6cde4e20, 0x1b93f: 0x6d3cfe20,
+-	// Block 0x6e5, offset 0x1b940
+-	0x1b940: 0x6c2d5220, 0x1b941: 0x6cbcb620, 0x1b942: 0x6c2a6a20, 0x1b943: 0x6c735620,
+-	0x1b944: 0x6d3e2420, 0x1b945: 0x6cf5f020, 0x1b946: 0x6cff8220, 0x1b947: 0x6cb5ca20,
+-	0x1b948: 0x6c477e20, 0x1b949: 0x6c4cb820, 0x1b94a: 0x6d0bf620, 0x1b94b: 0x6c8bb020,
+-	0x1b94c: 0x6ce17420, 0x1b94d: 0x6d387620, 0x1b94e: 0x6caf0420, 0x1b94f: 0x6c503820,
+-	0x1b950: 0x6c166620, 0x1b951: 0x6cd4cc20, 0x1b952: 0x6cb4ea20, 0x1b953: 0x6c399020,
+-	0x1b954: 0x6d345820, 0x1b955: 0x6c923c20, 0x1b956: 0x6ca53020, 0x1b957: 0x6c711420,
+-	0x1b958: 0x6ce21e20, 0x1b959: 0x6c239c20, 0x1b95a: 0x6c833020, 0x1b95b: 0x6d30f020,
+-	0x1b95c: 0x6cb29c20, 0x1b95d: 0x6c3a3420, 0x1b95e: 0x6cd91c20, 0x1b95f: 0x6ce4ee20,
+-	0x1b960: 0x6cb09020, 0x1b961: 0x6c288020, 0x1b962: 0x6d231620, 0x1b963: 0x6ca5d820,
+-	0x1b964: 0x6d208620, 0x1b965: 0x6c923e20, 0x1b966: 0x6c421a20, 0x1b967: 0x6c9d3a20,
+-	0x1b968: 0x6c6e7420, 0x1b969: 0x6c8ce820, 0x1b96a: 0x6c94f420, 0x1b96b: 0x6d1a5c20,
+-	0x1b96c: 0x6c253620, 0x1b96d: 0x6cc18820, 0x1b96e: 0x6c57ea20, 0x1b96f: 0x6d231820,
+-	0x1b970: 0x6ca72220, 0x1b971: 0x6ccfde20, 0x1b972: 0x6c0bf620, 0x1b973: 0x6c214220,
+-	0x1b974: 0x6c54c220, 0x1b975: 0x6d24ec20, 0x1b976: 0x6c7efc20, 0x1b977: 0x6c5d2620,
+-	0x1b978: 0x6cbe4620, 0x1b979: 0x6d0bf820, 0x1b97a: 0x6cba0220, 0x1b97b: 0x6ce46220,
+-	0x1b97c: 0x6c9e9020, 0x1b97d: 0x6d350c20, 0x1b97e: 0x6d1ae420, 0x1b97f: 0x6c9d3c20,
+-	// Block 0x6e6, offset 0x1b980
+-	0x1b980: 0x6c07b220, 0x1b981: 0x6d24de20, 0x1b982: 0x6cf20820, 0x1b983: 0x6cc91c20,
+-	0x1b984: 0x6c39fa20, 0x1b985: 0x6cbe4820, 0x1b986: 0x6d24e020, 0x1b987: 0x6c786220,
+-	0x1b988: 0x6c61f220, 0x1b989: 0x6ccf4220, 0x1b98a: 0x6d24e220, 0x1b98b: 0x6ccba420,
+-	0x1b98c: 0x6c924020, 0x1b98d: 0x6d3f4420, 0x1b98e: 0x6c319620, 0x1b98f: 0x6cb81420,
+-	0x1b990: 0x6c667a20, 0x1b991: 0x6c9e1c20, 0x1b992: 0x6cb09220, 0x1b993: 0x6cf94420,
+-	0x1b994: 0x6d210220, 0x1b995: 0x6d24e420, 0x1b996: 0x6cd05c20, 0x1b997: 0x6cd09e20,
+-	0x1b998: 0x6cc74c20, 0x1b999: 0x6c592420, 0x1b99a: 0x6d3a6420, 0x1b99b: 0x6c659620,
+-	0x1b99c: 0x6caa9020, 0x1b99d: 0x6d212a20, 0x1b99e: 0x6cc06220, 0x1b99f: 0x6ce67220,
+-	0x1b9a0: 0x6cc18a20, 0x1b9a1: 0x6c325c20, 0x1b9a2: 0x6c389e20, 0x1b9a3: 0x6d2bdc20,
+-	0x1b9a4: 0x6c0f0420, 0x1b9a5: 0x6cf2f220, 0x1b9a6: 0x6cf28820, 0x1b9a7: 0x6c2c5820,
+-	0x1b9a8: 0x6cee8e20, 0x1b9a9: 0x6cf15020, 0x1b9aa: 0x6cc7ac20, 0x1b9ab: 0x6d01ae20,
+-	0x1b9ac: 0x6c12ea20, 0x1b9ad: 0x6cf09820, 0x1b9ae: 0x6c510a20, 0x1b9af: 0x6c42a220,
+-	0x1b9b0: 0x6d0d8a20, 0x1b9b1: 0x6c534a20, 0x1b9b2: 0x6d089420, 0x1b9b3: 0x6c9cf220,
+-	0x1b9b4: 0x6c786a20, 0x1b9b5: 0x6c98da20, 0x1b9b6: 0x6d1bb020, 0x1b9b7: 0x6d0d8c20,
+-	0x1b9b8: 0x6d1f3820, 0x1b9b9: 0x6c52a620, 0x1b9ba: 0x6c9e9220, 0x1b9bb: 0x6cd13a20,
+-	0x1b9bc: 0x6c9a5a20, 0x1b9bd: 0x6d290420, 0x1b9be: 0x6c5cec20, 0x1b9bf: 0x6ca3c420,
+-	// Block 0x6e7, offset 0x1b9c0
+-	0x1b9c0: 0x6c4afe20, 0x1b9c1: 0x6c1c2020, 0x1b9c2: 0x6c363820, 0x1b9c3: 0x6cac2620,
+-	0x1b9c4: 0x6c99fc20, 0x1b9c5: 0x6c88fc20, 0x1b9c6: 0x6cb79620, 0x1b9c7: 0x6cb79820,
+-	0x1b9c8: 0x6c99fe20, 0x1b9c9: 0x6ce4a020, 0x1b9ca: 0x6c23ec20, 0x1b9cb: 0x6cef1020,
+-	0x1b9cc: 0x6c116a20, 0x1b9cd: 0x6ce93220, 0x1b9ce: 0x6c9e2620, 0x1b9cf: 0x6c5bc420,
+-	0x1b9d0: 0x6ca11a20, 0x1b9d1: 0x6d059c20, 0x1b9d2: 0x6c604020, 0x1b9d3: 0x6cae4020,
+-	0x1b9d4: 0x6c649e20, 0x1b9d5: 0x6c658a20, 0x1b9d6: 0x6c555e20, 0x1b9d7: 0x6c3ce020,
+-	0x1b9d8: 0x6cfd7420, 0x1b9d9: 0x6d17a820, 0x1b9da: 0x6d1b5420, 0x1b9db: 0x6d2e6420,
+-	0x1b9dc: 0x6cd26a20, 0x1b9dd: 0x6c6a1820, 0x1b9de: 0x6c197020, 0x1b9df: 0x6c59c620,
+-	0x1b9e0: 0x6ce09a20, 0x1b9e1: 0x6d212c20, 0x1b9e2: 0x6c09a220, 0x1b9e3: 0x6c9fb020,
+-	0x1b9e4: 0x6cd1be20, 0x1b9e5: 0x6ce86020, 0x1b9e6: 0x6cd10220, 0x1b9e7: 0x6d1e3a20,
+-	0x1b9e8: 0x6c712620, 0x1b9e9: 0x6c307820, 0x1b9ea: 0x6ce98a20, 0x1b9eb: 0x6c68f620,
+-	0x1b9ec: 0x6c690820, 0x1b9ed: 0x6cc06420, 0x1b9ee: 0x6d0c0820, 0x1b9ef: 0x6ce0c020,
+-	0x1b9f0: 0x6c8f9420, 0x1b9f1: 0x6c5dd220, 0x1b9f2: 0x6d256420, 0x1b9f3: 0x6ca42820,
+-	0x1b9f4: 0x6c04f620, 0x1b9f5: 0x6d1fcc20, 0x1b9f6: 0x6cc2f020, 0x1b9f7: 0x6d3c1820,
+-	0x1b9f8: 0x6c89ba20, 0x1b9f9: 0x6c14f620, 0x1b9fa: 0x6d0c9620, 0x1b9fb: 0x6c214c20,
+-	0x1b9fc: 0x6ca83020, 0x1b9fd: 0x6d3e3e20, 0x1b9fe: 0x6cec9020, 0x1b9ff: 0x6cd1c020,
+-	// Block 0x6e8, offset 0x1ba00
+-	0x1ba00: 0x6c97ba20, 0x1ba01: 0x6d1c7220, 0x1ba02: 0x6c7ed620, 0x1ba03: 0x6c7cfc20,
+-	0x1ba04: 0x6c3d0020, 0x1ba05: 0x6c669020, 0x1ba06: 0x6d06da20, 0x1ba07: 0x6c908a20,
+-	0x1ba08: 0x6cef1220, 0x1ba09: 0x6c413620, 0x1ba0a: 0x6cfa6620, 0x1ba0b: 0x6d1c7420,
+-	0x1ba0c: 0x6cb31020, 0x1ba0d: 0x6c6d1820, 0x1ba0e: 0x6d0e8620, 0x1ba0f: 0x6ce10420,
+-	0x1ba10: 0x6d258220, 0x1ba11: 0x6cdd7a20, 0x1ba12: 0x6d258420, 0x1ba13: 0x6c881420,
+-	0x1ba14: 0x6d11b820, 0x1ba15: 0x6c9c0620, 0x1ba16: 0x6d3cde20, 0x1ba17: 0x6c1a1c20,
+-	0x1ba18: 0x6c78ba20, 0x1ba19: 0x6cdf7a20, 0x1ba1a: 0x6cde0a20, 0x1ba1b: 0x6cebe420,
+-	0x1ba1c: 0x6c8e3620, 0x1ba1d: 0x6c465220, 0x1ba1e: 0x6ccaae20, 0x1ba1f: 0x6ca00620,
+-	0x1ba20: 0x6d2cc420, 0x1ba21: 0x6cd27220, 0x1ba22: 0x6d17e820, 0x1ba23: 0x6c952220,
+-	0x1ba24: 0x6c969a20, 0x1ba25: 0x6cb48e20, 0x1ba26: 0x6cee9e20, 0x1ba27: 0x6c863420,
+-	0x1ba28: 0x6c111220, 0x1ba29: 0x6cf50020, 0x1ba2a: 0x6cf64c20, 0x1ba2b: 0x6cf15a20,
+-	0x1ba2c: 0x6cbaba20, 0x1ba2d: 0x6d2ace20, 0x1ba2e: 0x6cd1ce20, 0x1ba2f: 0x6cdace20,
+-	0x1ba30: 0x6c004220, 0x1ba31: 0x6cbd8420, 0x1ba32: 0x6cd9b220, 0x1ba33: 0x6d27b220,
+-	0x1ba34: 0x6d054420, 0x1ba35: 0x6d19ec20, 0x1ba36: 0x6cc68a20, 0x1ba37: 0x6c5d2e20,
+-	0x1ba38: 0x6cdad020, 0x1ba39: 0x6cddcc20, 0x1ba3a: 0x6ca6ac20, 0x1ba3b: 0x6cddf420,
+-	0x1ba3c: 0x6cd1d020, 0x1ba3d: 0x6cc81c20, 0x1ba3e: 0x6c002a20, 0x1ba3f: 0x6cacba20,
+-	// Block 0x6e9, offset 0x1ba40
+-	0x1ba40: 0x6c1f5020, 0x1ba41: 0x6c1e7e20, 0x1ba42: 0x6cacdc20, 0x1ba43: 0x6cf22c20,
+-	0x1ba44: 0x6c123220, 0x1ba45: 0x6c9ede20, 0x1ba46: 0x6c440620, 0x1ba47: 0x6c2cce20,
+-	0x1ba48: 0x6c504420, 0x1ba49: 0x6c5a7020, 0x1ba4a: 0x6cf8a020, 0x1ba4b: 0x6d3e4020,
+-	0x1ba4c: 0x6c2b7220, 0x1ba4d: 0x6d365a20, 0x1ba4e: 0x6d03f220, 0x1ba4f: 0x6c3f6c20,
+-	0x1ba50: 0x6c6aea20, 0x1ba51: 0x6c573e20, 0x1ba52: 0x6c439a20, 0x1ba53: 0x6d3f1a20,
+-	0x1ba54: 0x6ce1d820, 0x1ba55: 0x6ce2aa20, 0x1ba56: 0x6cdbc820, 0x1ba57: 0x6c09c820,
+-	0x1ba58: 0x6c69a420, 0x1ba59: 0x6c5be620, 0x1ba5a: 0x6c4bce20, 0x1ba5b: 0x6d1a7020,
+-	0x1ba5c: 0x6c42ca20, 0x1ba5d: 0x6c8f9620, 0x1ba5e: 0x6d362c20, 0x1ba5f: 0x6d0e8820,
+-	0x1ba60: 0x6ccf5820, 0x1ba61: 0x6c97be20, 0x1ba62: 0x6d1c8020, 0x1ba63: 0x6c215020,
+-	0x1ba64: 0x6c93e620, 0x1ba65: 0x6c807420, 0x1ba66: 0x6c943e20, 0x1ba67: 0x6d003420,
+-	0x1ba68: 0x6c0d3c20, 0x1ba69: 0x6cdfb020, 0x1ba6a: 0x6d236e20, 0x1ba6b: 0x6d052420,
+-	0x1ba6c: 0x6c56b820, 0x1ba6d: 0x6c09ca20, 0x1ba6e: 0x6c0c0c20, 0x1ba6f: 0x6d368e20,
+-	0x1ba70: 0x6c67f220, 0x1ba71: 0x6c79f620, 0x1ba72: 0x6cd0be20, 0x1ba73: 0x6cce0e20,
+-	0x1ba74: 0x6c2b3a20, 0x1ba75: 0x6c9d6820, 0x1ba76: 0x6c025220, 0x1ba77: 0x6c91cc20,
+-	0x1ba78: 0x6c562820, 0x1ba79: 0x6c54e820, 0x1ba7a: 0x6d1eac20, 0x1ba7b: 0x6c15cc20,
+-	0x1ba7c: 0x6c396420, 0x1ba7d: 0x6d1d9e20, 0x1ba7e: 0x6c4bd620, 0x1ba7f: 0x6c97c420,
+-	// Block 0x6ea, offset 0x1ba80
+-	0x1ba80: 0x6cbeae20, 0x1ba81: 0x6d216e20, 0x1ba82: 0x6cb1b820, 0x1ba83: 0x6c623e20,
+-	0x1ba84: 0x6d0b3420, 0x1ba85: 0x6c176e20, 0x1ba86: 0x6cb51220, 0x1ba87: 0x6cf7fe20,
+-	0x1ba88: 0x6c624020, 0x1ba89: 0x6c928620, 0x1ba8a: 0x6c90a620, 0x1ba8b: 0x6c8f9c20,
+-	0x1ba8c: 0x6c6ca020, 0x1ba8d: 0x6c4c7a20, 0x1ba8e: 0x6c23a620, 0x1ba8f: 0x6c910e20,
+-	0x1ba90: 0x6d349020, 0x1ba91: 0x6c414c20, 0x1ba92: 0x6cbb1a20, 0x1ba93: 0x6c83e220,
+-	0x1ba94: 0x6d0db420, 0x1ba95: 0x6c127e20, 0x1ba96: 0x6c69b020, 0x1ba97: 0x6c232a20,
+-	0x1ba98: 0x6c215620, 0x1ba99: 0x6ce95620, 0x1ba9a: 0x6cab4020, 0x1ba9b: 0x6ce2a820,
+-	0x1ba9c: 0x6d12b020, 0x1ba9d: 0x6cf79220, 0x1ba9e: 0x6c9d6a20, 0x1ba9f: 0x6ce11220,
+-	0x1baa0: 0x6ca12c20, 0x1baa1: 0x6cce1020, 0x1baa2: 0x6c4ee620, 0x1baa3: 0x6c881620,
+-	0x1baa4: 0x6c803220, 0x1baa5: 0x6cebe820, 0x1baa6: 0x6c1b4820, 0x1baa7: 0x6c41aa20,
+-	0x1baa8: 0x6c3cae20, 0x1baa9: 0x6d081a20, 0x1baaa: 0x6d140420, 0x1baab: 0x6c97ec20,
+-	0x1baac: 0x6d3f5c20, 0x1baad: 0x6c989620, 0x1baae: 0x6c774020, 0x1baaf: 0x6c961620,
+-	0x1bab0: 0x6cae7a20, 0x1bab1: 0x6cd5f420, 0x1bab2: 0x6d2f0620, 0x1bab3: 0x6d2eca20,
+-	0x1bab4: 0x6d3c4620, 0x1bab5: 0x6d070c20, 0x1bab6: 0x6c594020, 0x1bab7: 0x6c5d9020,
+-	0x1bab8: 0x6c66aa20, 0x1bab9: 0x6d0c1c20, 0x1baba: 0x6cd6d820, 0x1babb: 0x6c89f820,
+-	0x1babc: 0x6c24fa20, 0x1babd: 0x6ce36420, 0x1babe: 0x6d106020, 0x1babf: 0x6c677220,
+-	// Block 0x6eb, offset 0x1bac0
+-	0x1bac0: 0x6c23a820, 0x1bac1: 0x6d1d0620, 0x1bac2: 0x6c537220, 0x1bac3: 0x6d0a1c20,
+-	0x1bac4: 0x6cd5f620, 0x1bac5: 0x6c499a20, 0x1bac6: 0x6d1c8620, 0x1bac7: 0x6cfeee20,
+-	0x1bac8: 0x6d404220, 0x1bac9: 0x6c7de020, 0x1baca: 0x6d070e20, 0x1bacb: 0x6c890c20,
+-	0x1bacc: 0x6d369020, 0x1bacd: 0x6cef2020, 0x1bace: 0x6cb0ac20, 0x1bacf: 0x6d23c420,
+-	0x1bad0: 0x6c69be20, 0x1bad1: 0x6cb3c420, 0x1bad2: 0x6c297820, 0x1bad3: 0x6c5c1820,
+-	0x1bad4: 0x6c6b1c20, 0x1bad5: 0x6cf46820, 0x1bad6: 0x6cabdc20, 0x1bad7: 0x6c608620,
+-	0x1bad8: 0x6cac4220, 0x1bad9: 0x6cef2c20, 0x1bada: 0x6cdb1820, 0x1badb: 0x6cb9b820,
+-	0x1badc: 0x6cb9ba20, 0x1badd: 0x6cf69c20, 0x1bade: 0x6c92cc20, 0x1badf: 0x6cf8c620,
+-	0x1bae0: 0x6d0aa220, 0x1bae1: 0x6c340620, 0x1bae2: 0x6c59da20, 0x1bae3: 0x6c9fc620,
+-	0x1bae4: 0x6cc90420, 0x1bae5: 0x6cdb0020, 0x1bae6: 0x6c81b820, 0x1bae7: 0x6d318a20,
+-	0x1bae8: 0x6c23aa20, 0x1bae9: 0x6d182820, 0x1baea: 0x6d30fe20, 0x1baeb: 0x6cec9820,
+-	0x1baec: 0x6ccd9e20, 0x1baed: 0x6ce00420, 0x1baee: 0x6c177620, 0x1baef: 0x6d0a3220,
+-	0x1baf0: 0x6c7d0e20, 0x1baf1: 0x6d126420, 0x1baf2: 0x6ccee420, 0x1baf3: 0x6ce8da20,
+-	0x1baf4: 0x6d39bc20, 0x1baf5: 0x6cc95820, 0x1baf6: 0x6c522220, 0x1baf7: 0x6c0a2a20,
+-	0x1baf8: 0x6ccd0820, 0x1baf9: 0x6c151c20, 0x1bafa: 0x6c151e20, 0x1bafb: 0x6cd56820,
+-	0x1bafc: 0x6ce77c20, 0x1bafd: 0x6cb41020, 0x1bafe: 0x6c8bce20, 0x1baff: 0x6cef2e20,
+-	// Block 0x6ec, offset 0x1bb00
+-	0x1bb00: 0x6ccb6c20, 0x1bb01: 0x6ccb4620, 0x1bb02: 0x6c1a3820, 0x1bb03: 0x6c6f3020,
+-	0x1bb04: 0x6c1a3a20, 0x1bb05: 0x6c57be20, 0x1bb06: 0x6c686c20, 0x1bb07: 0x6c81dc20,
+-	0x1bb08: 0x6c183420, 0x1bb09: 0x6c41e020, 0x1bb0a: 0x6c259c20, 0x1bb0b: 0x6c53cc20,
+-	0x1bb0c: 0x6cd81820, 0x1bb0d: 0x6cd60220, 0x1bb0e: 0x6cae8420, 0x1bb0f: 0x6c4e2a20,
+-	0x1bb10: 0x6d27c020, 0x1bb11: 0x6c8f3c20, 0x1bb12: 0x6c53ce20, 0x1bb13: 0x6c3ed820,
+-	0x1bb14: 0x6c505a20, 0x1bb15: 0x6c513e20, 0x1bb16: 0x6cfb8020, 0x1bb17: 0x6c66b620,
+-	0x1bb18: 0x6ccd0a20, 0x1bb19: 0x6cf8c820, 0x1bb1a: 0x6d24c220, 0x1bb1b: 0x6c934c20,
+-	0x1bb1c: 0x6c7fac20, 0x1bb1d: 0x6ca96020, 0x1bb1e: 0x6d21a220, 0x1bb1f: 0x6c8c3420,
+-	0x1bb20: 0x6c9e4020, 0x1bb21: 0x6d2a5020, 0x1bb22: 0x6c290420, 0x1bb23: 0x6c595420,
+-	0x1bb24: 0x6d2afc20, 0x1bb25: 0x6d021620, 0x1bb26: 0x6d23ea20, 0x1bb27: 0x6c853020,
+-	0x1bb28: 0x6cd3da20, 0x1bb29: 0x6d091c20, 0x1bb2a: 0x6c8d5820, 0x1bb2b: 0x6ced9420,
+-	0x1bb2c: 0x6d3e8a20, 0x1bb2d: 0x6d1db420, 0x1bb2e: 0x6c5c3420, 0x1bb2f: 0x6c120420,
+-	0x1bb30: 0x6c891620, 0x1bb31: 0x6c2d8420, 0x1bb32: 0x6d134020, 0x1bb33: 0x6c02ec20,
+-	0x1bb34: 0x6c589820, 0x1bb35: 0x6d319220, 0x1bb36: 0x6c152420, 0x1bb37: 0x6c980420,
+-	0x1bb38: 0x6c284420, 0x1bb39: 0x6c28b220, 0x1bb3a: 0x6d189e20, 0x1bb3b: 0x6cdc5c20,
+-	0x1bb3c: 0x6cb0ba20, 0x1bb3d: 0x6c728e20, 0x1bb3e: 0x6cde8e20, 0x1bb3f: 0x6cbda420,
+-	// Block 0x6ed, offset 0x1bb40
+-	0x1bb40: 0x6c5f3420, 0x1bb41: 0x6d3d9a20, 0x1bb42: 0x6c884c20, 0x1bb43: 0x6ca9c620,
+-	0x1bb44: 0x6c4c3020, 0x1bb45: 0x6c6d4e20, 0x1bb46: 0x6c3b8c20, 0x1bb47: 0x6ccb5a20,
+-	0x1bb48: 0x6c608820, 0x1bb49: 0x6cdbda20, 0x1bb4a: 0x6c5c3620, 0x1bb4b: 0x6c1eea20,
+-	0x1bb4c: 0x6cdeac20, 0x1bb4d: 0x6cd93620, 0x1bb4e: 0x6c2f7e20, 0x1bb4f: 0x6ccba620,
+-	0x1bb50: 0x6d3a7e20, 0x1bb51: 0x6c7f5620, 0x1bb52: 0x6c0d5220, 0x1bb53: 0x6c884e20,
+-	0x1bb54: 0x6c9d0220, 0x1bb55: 0x6cd20220, 0x1bb56: 0x6cd60c20, 0x1bb57: 0x6c9d8620,
+-	0x1bb58: 0x6ca95a20, 0x1bb59: 0x6d1ca220, 0x1bb5a: 0x6d1ca420, 0x1bb5b: 0x6c9b4c20,
+-	0x1bb5c: 0x6c6d5e20, 0x1bb5d: 0x6cb65e20, 0x1bb5e: 0x6c0a7020, 0x1bb5f: 0x6c629820,
+-	0x1bb60: 0x6c4ff420, 0x1bb61: 0x6cc7d220, 0x1bb62: 0x6c256a20, 0x1bb63: 0x6cf31c20,
+-	0x1bb64: 0x6ce1f020, 0x1bb65: 0x6d1b0e20, 0x1bb66: 0x6d1b1020, 0x1bb67: 0x6c336820,
+-	0x1bb68: 0x6c226c20, 0x1bb69: 0x6c5df820, 0x1bb6a: 0x6c6eb220, 0x1bb6b: 0x6c807c20,
+-	0x1bb6c: 0x6c75f020, 0x1bb6d: 0x6c007820, 0x1bb6e: 0x6cb45820, 0x1bb6f: 0x6d3db020,
+-	0x1bb70: 0x6cef4020, 0x1bb71: 0x6c0d5420, 0x1bb72: 0x6c47d620, 0x1bb73: 0x6cb9d620,
+-	0x1bb74: 0x6d1ca620, 0x1bb75: 0x6c0d9c20, 0x1bb76: 0x6c7e1c20, 0x1bb77: 0x6c3ade20,
+-	0x1bb78: 0x6c125e20, 0x1bb79: 0x6c99c820, 0x1bb7a: 0x6c66f020, 0x1bb7b: 0x6cf02620,
+-	0x1bb7c: 0x6c963420, 0x1bb7d: 0x6d29a420, 0x1bb7e: 0x6c940e20, 0x1bb7f: 0x6c869e20,
+-	// Block 0x6ee, offset 0x1bb80
+-	0x1bb80: 0x6d1ebe20, 0x1bb81: 0x6d106e20, 0x1bb82: 0x6c91ea20, 0x1bb83: 0x6cd8f420,
+-	0x1bb84: 0x6d36e220, 0x1bb85: 0x6d1cb220, 0x1bb86: 0x6c31cc20, 0x1bb87: 0x6cee3c20,
+-	0x1bb88: 0x6c5afc20, 0x1bb89: 0x6d024020, 0x1bb8a: 0x6cac8020, 0x1bb8b: 0x6cd08420,
+-	0x1bb8c: 0x6c0c3820, 0x1bb8d: 0x6c153820, 0x1bb8e: 0x6ca17220, 0x1bb8f: 0x6c8eba20,
+-	0x1bb90: 0x6c651620, 0x1bb91: 0x6cb4ba20, 0x1bb92: 0x6ccb7420, 0x1bb93: 0x6c1a4e20,
+-	0x1bb94: 0x6c47e220, 0x1bb95: 0x6c0d6820, 0x1bb96: 0x6c5e2820, 0x1bb97: 0x6cfd3020,
+-	0x1bb98: 0x6c917220, 0x1bb99: 0x6cbe2620, 0x1bb9a: 0x6c4f2c20, 0x1bb9b: 0x6d1cba20,
+-	0x1bb9c: 0x6cc6d820, 0x1bb9d: 0x6c86f820, 0x1bb9e: 0x6c6eb420, 0x1bb9f: 0x6cff3a20,
+-	0x1bba0: 0x6d1cbc20, 0x1bba1: 0x6cdc0e20, 0x1bba2: 0x6cf03c20, 0x1bba3: 0x6d025620,
+-	0x1bba4: 0x6c57fc20, 0x1bba5: 0x6d097820, 0x1bba6: 0x6d39d420, 0x1bba7: 0x6c8fc620,
+-	0x1bba8: 0x6c7f6a20, 0x1bba9: 0x6c337820, 0x1bbaa: 0x6c38de20, 0x1bbab: 0x6c55ee20,
+-	0x1bbac: 0x6c7f6c20, 0x1bbad: 0x6cd63420, 0x1bbae: 0x6c8e3220, 0x1bbaf: 0x6d1cbe20,
+-	0x1bbb0: 0x6c9ca020, 0x1bbb1: 0x6c62c820, 0x1bbb2: 0x6c892c20, 0x1bbb3: 0x6c66fe20,
+-	0x1bbb4: 0x6d1cc620, 0x1bbb5: 0x6c3c0220, 0x1bbb6: 0x6c8c0020, 0x1bbb7: 0x6d192c20,
+-	0x1bbb8: 0x6c653220, 0x1bbb9: 0x6d270a20, 0x1bbba: 0x6c155620, 0x1bbbb: 0x6c27a620,
+-	0x1bbbc: 0x6cc4e620, 0x1bbbd: 0x6c661820, 0x1bbbe: 0x6c7fe820, 0x1bbbf: 0x6c38e020,
+-	// Block 0x6ef, offset 0x1bbc0
+-	0x1bbc0: 0x6cd6f420, 0x1bbc1: 0x6d252620, 0x1bbc2: 0x6d3dd420, 0x1bbc3: 0x6c3c8020,
+-	0x1bbc4: 0x6ccf8c20, 0x1bbc5: 0x6c830220, 0x1bbc6: 0x6c7fea20, 0x1bbc7: 0x6c23c620,
+-	0x1bbc8: 0x6cc20020, 0x1bbc9: 0x6d1dda20, 0x1bbca: 0x6cb9e020, 0x1bbcb: 0x6c383620,
+-	0x1bbcc: 0x6c49b420, 0x1bbcd: 0x6cc41a20, 0x1bbce: 0x6d0f2220, 0x1bbcf: 0x6c507c20,
+-	0x1bbd0: 0x6d1d7020, 0x1bbd1: 0x6cc95c20, 0x1bbd2: 0x6d29ba20, 0x1bbd3: 0x6c946020,
+-	0x1bbd4: 0x6d0f0420, 0x1bbd5: 0x6c84a820, 0x1bbd6: 0x6c9d0e20, 0x1bbd7: 0x6ccde820,
+-	0x1bbd8: 0x6cdfc620, 0x1bbd9: 0x6c293e20, 0x1bbda: 0x6c697620, 0x1bbdb: 0x6c161820,
+-	0x1bbdc: 0x6d1d7220, 0x1bbdd: 0x6c508420, 0x1bbde: 0x6c03dc20, 0x1bbdf: 0x6d3a4220,
+-	0x1bbe0: 0x6c805e20, 0x1bbe1: 0x6c800820, 0x1bbe2: 0x6ca47820, 0x1bbe3: 0x6cecac20,
+-	0x1bbe4: 0x6c947020, 0x1bbe5: 0x6d0a5e20, 0x1bbe6: 0x6cfc6a20, 0x1bbe7: 0x6d0f2820,
+-	0x1bbe8: 0x6c424820, 0x1bbe9: 0x6d0f3220, 0x1bbea: 0x6d24ac20, 0x1bbeb: 0x6c5d8420,
+-	0x1bbec: 0x6c0be820, 0x1bbed: 0x6c9eca20, 0x1bbee: 0x6c49d220, 0x1bbef: 0x6c2a9a20,
+-	0x1bbf0: 0x6c5a8620, 0x1bbf1: 0x6cfe7a20, 0x1bbf2: 0x6cfe7c20, 0x1bbf3: 0x6c5caa20,
+-	0x1bbf4: 0x6c529620, 0x1bbf5: 0x6c8c9c20, 0x1bbf6: 0x6d2a6620, 0x1bbf7: 0x6d3bbe20,
+-	0x1bbf8: 0x6c6faa20, 0x1bbf9: 0x6d2ca820, 0x1bbfa: 0x6d015820, 0x1bbfb: 0x6c1be420,
+-	0x1bbfc: 0x6d3d2420, 0x1bbfd: 0x6d28f220, 0x1bbfe: 0x6d28f420, 0x1bbff: 0x6c11ec20,
+-	// Block 0x6f0, offset 0x1bc00
+-	0x1bc00: 0x6d0f8020, 0x1bc01: 0x6cb74820, 0x1bc02: 0x6d379c20, 0x1bc03: 0x6c3b5e20,
+-	0x1bc04: 0x6ca98220, 0x1bc05: 0x6c6efa20, 0x1bc06: 0x6cf18220, 0x1bc07: 0x6cb36820,
+-	0x1bc08: 0x6d16c420, 0x1bc09: 0x6c913c20, 0x1bc0a: 0x6c20b620, 0x1bc0b: 0x6caf4020,
+-	0x1bc0c: 0x6c767e20, 0x1bc0d: 0x6caca420, 0x1bc0e: 0x6d0c6a20, 0x1bc0f: 0x6c768020,
+-	0x1bc10: 0x6cad2620, 0x1bc11: 0x6ca26e20, 0x1bc12: 0x6c179020, 0x1bc13: 0x6c8a9220,
+-	0x1bc14: 0x6c4b3420, 0x1bc15: 0x6c778220, 0x1bc16: 0x6c33dc20, 0x1bc17: 0x6c49d620,
+-	0x1bc18: 0x6d02b820, 0x1bc19: 0x6d358c20, 0x1bc1a: 0x6c4a2e20, 0x1bc1b: 0x6c49d820,
+-	0x1bc1c: 0x6cef9420, 0x1bc1d: 0x6cbb5420, 0x1bc1e: 0x6c0be420, 0x1bc1f: 0x6c268420,
+-	0x1bc20: 0x6cf99820, 0x1bc21: 0x6d329a20, 0x1bc22: 0x6d39fc20, 0x1bc23: 0x6c785e20,
+-	0x1bc24: 0x6d2fa220, 0x1bc25: 0x6c3e1420, 0x1bc26: 0x6c036e20, 0x1bc27: 0x6d017420,
+-	0x1bc28: 0x6c34dc20, 0x1bc29: 0x6c8e1e20, 0x1bc2a: 0x6d3cf220, 0x1bc2b: 0x6d087a20,
+-	0x1bc2c: 0x6c721420, 0x1bc2d: 0x6ce08e20, 0x1bc2e: 0x6cad8420, 0x1bc2f: 0x6c6f0220,
+-	0x1bc30: 0x6cad5020, 0x1bc31: 0x6cdf1e20, 0x1bc32: 0x6cdf2020, 0x1bc33: 0x6c0dd220,
+-	0x1bc34: 0x6d100c20, 0x1bc35: 0x6ce6f020, 0x1bc36: 0x6c4d9420, 0x1bc37: 0x6d3ac220,
+-	0x1bc38: 0x6d2cb820, 0x1bc39: 0x6c2d0a20, 0x1bc3a: 0x6cf07a20, 0x1bc3b: 0x6cd25220,
+-	0x1bc3c: 0x6c88e620, 0x1bc3d: 0x6c1bfc20, 0x1bc3e: 0x6c5a4a20, 0x1bc3f: 0x6d397820,
+-	// Block 0x6f1, offset 0x1bc40
+-	0x1bc40: 0x6c54ae20, 0x1bc41: 0x6cd77020, 0x1bc42: 0x6c806e20, 0x1bc43: 0x6ce63620,
+-	0x1bc44: 0x6c68de20, 0x1bc45: 0x6d06a820, 0x1bc46: 0x6c525e20, 0x1bc47: 0x6cc35420,
+-	0x1bc48: 0x6c8af020, 0x1bc49: 0x6c590820, 0x1bc4a: 0x6d0fa020, 0x1bc4b: 0x6d04c420,
+-	0x1bc4c: 0x6d04c620, 0x1bc4d: 0x6cfbfe20, 0x1bc4e: 0x6d1a3020, 0x1bc4f: 0x6cf36020,
+-	0x1bc50: 0x6d386620, 0x1bc51: 0x6d10e220, 0x1bc52: 0x6cd35020, 0x1bc53: 0x6cee6e20,
+-	0x1bc54: 0x6ce73620, 0x1bc55: 0x6c9ece20, 0x1bc56: 0x6d28fe20, 0x1bc57: 0x6c768420,
+-	0x1bc58: 0x6c529e20, 0x1bc59: 0x6c81d020, 0x1bc5a: 0x6cf9a820, 0x1bc5b: 0x6d3a0420,
+-	0x1bc5c: 0x6d084a20, 0x1bc5d: 0x6d32a020, 0x1bc5e: 0x6cb37820, 0x1bc5f: 0x6d0be420,
+-	0x1bc60: 0x6c5b2e20, 0x1bc61: 0x6c49e620, 0x1bc62: 0x6c180e20, 0x1bc63: 0x6c5aa420,
+-	0x1bc64: 0x6c77a820, 0x1bc65: 0x6c194c20, 0x1bc66: 0x6c389020, 0x1bc67: 0x6cce6220,
+-	0x1bc68: 0x6d12e220, 0x1bc69: 0x6c5bac20, 0x1bc6b: 0x6ce19a20,
+-	0x1bc6c: 0x6c6cf220, 0x1bc6d: 0x6cc55020, 0x1bc6e: 0x6c8b9620, 0x1bc6f: 0x6cf5f220,
+-	0x1bc70: 0x6c3e5420, 0x1bc71: 0x6c6f0a20, 0x1bc72: 0x6d019420, 0x1bc73: 0x6cb48a20,
+-	0x1bc74: 0x6ce64220, 0x1bc75: 0x6d3d3c20, 0x1bc76: 0x6ce6c020, 0x1bc77: 0x6cecd420,
+-	0x1bc78: 0x6c4d4020, 0x1bc79: 0x6cae6a20, 0x1bc7a: 0x6c80fc20, 0x1bc7b: 0x6d0e5220,
+-	0x1bc7c: 0x6d06bc20, 0x1bc7d: 0x6c3c3e20, 0x1bc7e: 0x6c1c1020, 0x1bc7f: 0x6cc66820,
+-	// Block 0x6f2, offset 0x1bc80
+-	0x1bc80: 0x6c554620, 0x1bc81: 0x6cf5f420, 0x1bc82: 0x6cd4ce20, 0x1bc83: 0x6c51c420,
+-	0x1bc84: 0x6d099620, 0x1bc85: 0x6c7a9220, 0x1bc86: 0x6c72e820, 0x1bc87: 0x6cfeb620,
+-	0x1bc88: 0x6cf5f620, 0x1bc89: 0x6d0bfa20, 0x1bc8a: 0x6c4eb220, 0x1bc8b: 0x6d3c3c20,
+-	0x1bc8c: 0x6c75b020, 0x1bc8d: 0x6c2c4220, 0x1bc8e: 0x6d019620, 0x1bc8f: 0x6c601c20,
+-	0x1bc90: 0x6cf4e020, 0x1bc91: 0x6d0bfc20, 0x1bc92: 0x6c942c20, 0x1bc93: 0x6c4e0620,
+-	0x1bc94: 0x6d0e6220, 0x1bc95: 0x6c591220, 0x1bc96: 0x6c9aee20, 0x1bc97: 0x6c711620,
+-	0x1bc98: 0x6c2a1020, 0x1bc99: 0x6c072420, 0x1bc9a: 0x6c3b7a20, 0x1bc9b: 0x6c8c5220,
+-	0x1bc9c: 0x6c7d6220, 0x1bc9d: 0x6c5d2820, 0x1bc9e: 0x6cea2220, 0x1bc9f: 0x6cf61620,
+-	0x1bca0: 0x6c253e20, 0x1bca1: 0x6cf3c820, 0x1bca2: 0x6c52a820, 0x1bca3: 0x6c179c20,
+-	0x1bca4: 0x6c3f6220, 0x1bca5: 0x6cf2f420, 0x1bca6: 0x6c684820, 0x1bca7: 0x6c231820,
+-	0x1bca8: 0x6c3ce220, 0x1bca9: 0x6cb2a620, 0x1bcaa: 0x6cbf2620, 0x1bcab: 0x6cc91e20,
+-	0x1bcac: 0x6cf61820, 0x1bcad: 0x6cbf2820, 0x1bcae: 0x6d033420, 0x1bcaf: 0x6c174420,
+-	0x1bcb0: 0x6d0e7420, 0x1bcb1: 0x6d0e7620, 0x1bcb2: 0x6d17aa20, 0x1bcb3: 0x6c744e20,
+-	0x1bcb4: 0x6d234620, 0x1bcb5: 0x6c42a820, 0x1bcb6: 0x6cc47820, 0x1bcb7: 0x6caff020,
+-	0x1bcb8: 0x6d049420, 0x1bcb9: 0x6cee6420, 0x1bcba: 0x6cd10420, 0x1bcbb: 0x6c171420,
+-	0x1bcbc: 0x6cce6e20, 0x1bcbd: 0x6d048420, 0x1bcbe: 0x6ca72420, 0x1bcbf: 0x6c44d020,
+-	// Block 0x6f3, offset 0x1bcc0
+-	0x1bcc0: 0x6cf13e20, 0x1bcc1: 0x6c18d420, 0x1bcc2: 0x6c51ce20, 0x1bcc3: 0x6c7cd220,
+-	0x1bcc4: 0x6d37fe20, 0x1bcc5: 0x6c32cc20, 0x1bcc6: 0x6cf96a20, 0x1bcc7: 0x6c5ac620,
+-	0x1bcc8: 0x6c3ce420, 0x1bcc9: 0x6c890620, 0x1bcca: 0x6d07a820, 0x1bccb: 0x6d037e20,
+-	0x1bccc: 0x6c59d220, 0x1bccd: 0x6c690a20, 0x1bcce: 0x6c64b620, 0x1bccf: 0x6c09cc20,
+-	0x1bcd0: 0x6d1bbc20, 0x1bcd1: 0x6d3a7020, 0x1bcd2: 0x6cefde20, 0x1bcd3: 0x6ce93620,
+-	0x1bcd4: 0x6ccd4a20, 0x1bcd5: 0x6cf67020, 0x1bcd6: 0x6caa9620, 0x1bcd7: 0x6caa9820,
+-	0x1bcd8: 0x6c150220, 0x1bcd9: 0x6d0c1220, 0x1bcda: 0x6c6f1020, 0x1bcdb: 0x6c6f2420,
+-	0x1bcdc: 0x6d237020, 0x1bcdd: 0x6c9a9c20, 0x1bcde: 0x6ccbfc20, 0x1bcdf: 0x6cf0a620,
+-	0x1bce0: 0x6d2c3820, 0x1bce1: 0x6d033620, 0x1bce2: 0x6cbf3e20, 0x1bce3: 0x6cc75020,
+-	0x1bce4: 0x6c9a0c20, 0x1bce5: 0x6c593620, 0x1bce6: 0x6d06f420, 0x1bce7: 0x6d2fbe20,
+-	0x1bce8: 0x6ceea020, 0x1bce9: 0x6c38a620, 0x1bcea: 0x6cc07620, 0x1bceb: 0x6cdc4a20,
+-	0x1bcec: 0x6d0fc820, 0x1bced: 0x6c8b1620, 0x1bcee: 0x6d3a6e20, 0x1bcef: 0x6c6a2220,
+-	0x1bcf0: 0x6c434e20, 0x1bcf1: 0x6c485c20, 0x1bcf2: 0x6c05b420, 0x1bcf3: 0x6c557020,
+-	0x1bcf4: 0x6d275820, 0x1bcf5: 0x6cf96c20, 0x1bcf6: 0x6cd41a20, 0x1bcf7: 0x6c89ce20,
+-	0x1bcf8: 0x6c0afa20, 0x1bcf9: 0x6c46c420, 0x1bcfa: 0x6cea0020, 0x1bcfb: 0x6ce11420,
+-	0x1bcfc: 0x6c17a020, 0x1bcfd: 0x6cccfc20, 0x1bcfe: 0x6c371a20, 0x1bcff: 0x6c0f2a20,
+-	// Block 0x6f4, offset 0x1bd00
+-	0x1bd00: 0x6c5a5a20, 0x1bd01: 0x6d00ce20, 0x1bd02: 0x6cf8ae20, 0x1bd03: 0x6cf50e20,
+-	0x1bd04: 0x6cf67220, 0x1bd05: 0x6d284220, 0x1bd06: 0x6c515a20, 0x1bd07: 0x6c51d220,
+-	0x1bd08: 0x6cf67420, 0x1bd09: 0x6d27bc20, 0x1bd0a: 0x6d048020, 0x1bd0b: 0x6ca37e20,
+-	0x1bd0c: 0x6ccd5020, 0x1bd0d: 0x6cbf8e20, 0x1bd0e: 0x6d121620, 0x1bd0f: 0x6d099e20,
+-	0x1bd10: 0x6c9d6c20, 0x1bd11: 0x6c882420, 0x1bd12: 0x6d1c8820, 0x1bd13: 0x6cf45a20,
+-	0x1bd14: 0x6cc69a20, 0x1bd15: 0x6c459e20, 0x1bd16: 0x6d0f3820, 0x1bd17: 0x6cbb5820,
+-	0x1bd18: 0x6c8e3820, 0x1bd19: 0x6cf67620, 0x1bd1a: 0x6c09f820, 0x1bd1b: 0x6c0c1820,
+-	0x1bd1c: 0x6c233e20, 0x1bd1d: 0x6c92a620, 0x1bd1e: 0x6c64d620, 0x1bd1f: 0x6cd53420,
+-	0x1bd20: 0x6d185620, 0x1bd21: 0x6c90b220, 0x1bd22: 0x6caeb620, 0x1bd23: 0x6cdbd420,
+-	0x1bd24: 0x6d185820, 0x1bd25: 0x6ce28e20, 0x1bd26: 0x6c749420, 0x1bd27: 0x6d3fb220,
+-	0x1bd28: 0x6d284620, 0x1bd29: 0x6c56c020, 0x1bd2a: 0x6d154820, 0x1bd2b: 0x6d36b420,
+-	0x1bd2c: 0x6c026220, 0x1bd2d: 0x6cf0bc20, 0x1bd2e: 0x6c8f1420, 0x1bd2f: 0x6c4efa20,
+-	0x1bd30: 0x6cab4c20, 0x1bd31: 0x6cc55420, 0x1bd32: 0x6c6f2c20, 0x1bd33: 0x6c97fc20,
+-	0x1bd34: 0x6c7de220, 0x1bd35: 0x6cce1820, 0x1bd36: 0x6c24b220, 0x1bd37: 0x6d2b9020,
+-	0x1bd38: 0x6c64f620, 0x1bd39: 0x6cf6c620, 0x1bd3a: 0x6cf6c820, 0x1bd3b: 0x6cf6ca20,
+-	0x1bd3c: 0x6d185a20, 0x1bd3d: 0x6d000c20, 0x1bd3e: 0x6c1c6e20, 0x1bd3f: 0x6c59ea20,
+-	// Block 0x6f5, offset 0x1bd40
+-	0x1bd40: 0x6c15e420, 0x1bd41: 0x6d131820, 0x1bd42: 0x6ce01020, 0x1bd43: 0x6cc48820,
+-	0x1bd44: 0x6d0ec020, 0x1bd45: 0x6cfb9420, 0x1bd46: 0x6cbbae20, 0x1bd47: 0x6c75e820,
+-	0x1bd48: 0x6c2aaa20, 0x1bd49: 0x6c340a20, 0x1bd4a: 0x6cd01820, 0x1bd4b: 0x6c687a20,
+-	0x1bd4c: 0x6c3b9620, 0x1bd4d: 0x6cd82a20, 0x1bd4e: 0x6c8a1a20, 0x1bd4f: 0x6d23ee20,
+-	0x1bd50: 0x6c8bde20, 0x1bd51: 0x6ce78a20, 0x1bd52: 0x6cce8420, 0x1bd53: 0x6c3b4620,
+-	0x1bd54: 0x6c38bc20, 0x1bd55: 0x6d0ec220, 0x1bd56: 0x6d0a3e20, 0x1bd57: 0x6c807620,
+-	0x1bd58: 0x6c9a6a20, 0x1bd59: 0x6ce1a220, 0x1bd5a: 0x6d18a220, 0x1bd5b: 0x6c6e3020,
+-	0x1bd5c: 0x6c9afc20, 0x1bd5d: 0x6c6ecc20, 0x1bd5e: 0x6c694420, 0x1bd5f: 0x6d1c9a20,
+-	0x1bd60: 0x6d23f020, 0x1bd61: 0x6d18ca20, 0x1bd62: 0x6d091e20, 0x1bd63: 0x6c7fc020,
+-	0x1bd64: 0x6cdf8020, 0x1bd65: 0x6d2a9220, 0x1bd66: 0x6c120c20, 0x1bd67: 0x6cdc7420,
+-	0x1bd68: 0x6cf6ea20, 0x1bd69: 0x6cc40220, 0x1bd6a: 0x6c235420, 0x1bd6b: 0x6c886220,
+-	0x1bd6c: 0x6c5b6e20, 0x1bd6d: 0x6d3a2c20, 0x1bd6e: 0x6d022c20, 0x1bd6f: 0x6c8d6e20,
+-	0x1bd70: 0x6ceec020, 0x1bd71: 0x6d18cc20, 0x1bd72: 0x6d00fc20, 0x1bd73: 0x6d2fe220,
+-	0x1bd74: 0x6c5c5220, 0x1bd75: 0x6c270020, 0x1bd76: 0x6ca9ce20, 0x1bd77: 0x6c7fc220,
+-	0x1bd78: 0x6cc7de20, 0x1bd79: 0x6cfc3a20, 0x1bd7a: 0x6c77b620, 0x1bd7b: 0x6d09ba20,
+-	0x1bd7c: 0x6c6d6620, 0x1bd7d: 0x6c1df820, 0x1bd7e: 0x6c2a3a20, 0x1bd7f: 0x6d123020,
+-	// Block 0x6f6, offset 0x1bd80
+-	0x1bd80: 0x6c51fc20, 0x1bd81: 0x6c807e20, 0x1bd82: 0x6c0c4220, 0x1bd83: 0x6cc6ce20,
+-	0x1bd84: 0x6c86d020, 0x1bd85: 0x6ca18220, 0x1bd86: 0x6c067820, 0x1bd87: 0x6cc93220,
+-	0x1bd88: 0x6c941420, 0x1bd89: 0x6c7ea620, 0x1bd8a: 0x6c023620, 0x1bd8b: 0x6d0ab020,
+-	0x1bd8c: 0x6c7c1020, 0x1bd8d: 0x6cd7aa20, 0x1bd8e: 0x6c8ab420, 0x1bd8f: 0x6c872020,
+-	0x1bd90: 0x6c918420, 0x1bd91: 0x6c74ea20, 0x1bd92: 0x6c8a8620, 0x1bd93: 0x6d0efa20,
+-	0x1bd94: 0x6cf73a20, 0x1bd95: 0x6d025a20, 0x1bd96: 0x6c8fde20, 0x1bd97: 0x6d136e20,
+-	0x1bd98: 0x6c121a20, 0x1bd99: 0x6cc50c20, 0x1bd9a: 0x6d271420, 0x1bd9b: 0x6c808820,
+-	0x1bd9c: 0x6c23ce20, 0x1bd9d: 0x6c750c20, 0x1bd9e: 0x6c1d3220, 0x1bd9f: 0x6c49b620,
+-	0x1bda0: 0x6c72d620, 0x1bda1: 0x6c185620, 0x1bda2: 0x6c9cba20, 0x1bda3: 0x6ce19220,
+-	0x1bda4: 0x6c809220, 0x1bda5: 0x6d3a4820, 0x1bda6: 0x6c809a20, 0x1bda7: 0x6c8dda20,
+-	0x1bda8: 0x6c24c420, 0x1bda9: 0x6d24b220, 0x1bdaa: 0x6d2f8020, 0x1bdab: 0x6d2ff420,
+-	0x1bdac: 0x6cabd220, 0x1bdad: 0x6d328c20, 0x1bdae: 0x6cad5220, 0x1bdaf: 0x6c195820,
+-	0x1bdb0: 0x6d254620, 0x1bdb1: 0x6c009620, 0x1bdb2: 0x6cf09c20, 0x1bdb3: 0x6c4f4420,
+-	0x1bdb4: 0x6c749620, 0x1bdb5: 0x6c74c820, 0x1bdb6: 0x6c3fa020, 0x1bdb7: 0x6d13b020,
+-	0x1bdb8: 0x6c03aa20, 0x1bdb9: 0x6c2e5620, 0x1bdba: 0x6d13b420, 0x1bdbb: 0x6d10c620,
+-	0x1bdbc: 0x6d411020, 0x1bdbd: 0x6cd6d020, 0x1bdbe: 0x6c379e20, 0x1bdbf: 0x6cac5020,
+-	// Block 0x6f7, offset 0x1bdc0
+-	0x1bdc0: 0x6c206e20, 0x1bdc1: 0x6c77e220, 0x1bdc2: 0x6d29d420, 0x1bdc3: 0x6c2ec020,
+-	0x1bdc4: 0x6cbace20, 0x1bdc5: 0x6d1dfc20, 0x1bdc6: 0x6cbb2a20, 0x1bdc7: 0x6cb14420,
+-	0x1bdc8: 0x6c04be20, 0x1bdc9: 0x6cacac20, 0x1bdca: 0x6c175a20, 0x1bdcb: 0x6c64a020,
+-	0x1bdcc: 0x6cac0020, 0x1bdcd: 0x6c31a020, 0x1bdce: 0x6c205420, 0x1bdcf: 0x6d215a20,
+-	0x1bdd0: 0x6d2c3a20, 0x1bdd1: 0x6c0afc20, 0x1bdd2: 0x6c2ec220, 0x1bdd3: 0x6c055420,
+-	0x1bdd4: 0x6c0f2c20, 0x1bdd5: 0x6c205a20, 0x1bdd6: 0x6d1fea20, 0x1bdd7: 0x6d206e20,
+-	0x1bdd8: 0x6c31d620, 0x1bdd9: 0x6d0b0820, 0x1bdda: 0x6c197220, 0x1bddb: 0x6ca96620,
+-	0x1bddc: 0x6ca9ac20, 0x1bddd: 0x6cb24020, 0x1bdde: 0x6c6f4c20, 0x1bddf: 0x6ca1be20,
+-	0x1bde0: 0x6cdde020, 0x1bde1: 0x6ca22420, 0x1bde2: 0x6c814220, 0x1bde3: 0x6cc5c420,
+-	0x1bde4: 0x6c981a20, 0x1bde5: 0x6c398a20, 0x1bde6: 0x6c98ca20, 0x1bde7: 0x6ca27020,
+-	0x1bde8: 0x6c426020, 0x1bde9: 0x6cf4b820, 0x1bdea: 0x6d0e4020, 0x1bdeb: 0x6c437420,
+-	0x1bdec: 0x6c06ec20, 0x1bded: 0x6cd8a020, 0x1bdee: 0x6c665e20, 0x1bdef: 0x6c476620,
+-	0x1bdf0: 0x6d202c20, 0x1bdf1: 0x6c437e20, 0x1bdf2: 0x6cd0f220, 0x1bdf3: 0x6ca23020,
+-	0x1bdf4: 0x6c2be620, 0x1bdf5: 0x6cb8be20, 0x1bdf6: 0x6cc37020, 0x1bdf7: 0x6cc2cc20,
+-	0x1bdf8: 0x6d3f4020, 0x1bdf9: 0x6ce27020, 0x1bdfa: 0x6cf5c420, 0x1bdfb: 0x6c985620,
+-	0x1bdfc: 0x6c793820, 0x1bdfd: 0x6cb8d820, 0x1bdfe: 0x6cf44620, 0x1bdff: 0x6c481220,
+-	// Block 0x6f8, offset 0x1be00
+-	0x1be00: 0x6cf61a20, 0x1be01: 0x6c83c220, 0x1be02: 0x6c83da20, 0x1be03: 0x6cb3f420,
+-	0x1be04: 0x6c5ed420, 0x1be05: 0x6c428220, 0x1be06: 0x6d346420, 0x1be07: 0x6c078820,
+-	0x1be08: 0x6cc2f220, 0x1be09: 0x6c214e20, 0x1be0a: 0x6c31a220, 0x1be0b: 0x6c724a20,
+-	0x1be0c: 0x6c636e20, 0x1be0d: 0x6c64a220, 0x1be0e: 0x6c3c5620, 0x1be0f: 0x6cb0f820,
+-	0x1be10: 0x6c780820, 0x1be11: 0x6c713020, 0x1be12: 0x6c77c220, 0x1be13: 0x6c1e9c20,
+-	0x1be14: 0x6cf8b220, 0x1be15: 0x6c074020, 0x1be16: 0x6c961820, 0x1be17: 0x6c6bf220,
+-	0x1be18: 0x6c967220, 0x1be19: 0x6cca0820, 0x1be1a: 0x6cf0be20, 0x1be1b: 0x6c98fc20,
+-	0x1be1c: 0x6c33b020, 0x1be1d: 0x6ce78c20, 0x1be1e: 0x6cbc7620, 0x1be1f: 0x6c67fc20,
+-	0x1be20: 0x6cf94820, 0x1be21: 0x6c86d220, 0x1be22: 0x6c31d820, 0x1be23: 0x6c8b5e20,
+-	0x1be24: 0x6cac1020, 0x1be25: 0x6cb16e20, 0x1be26: 0x6c0fa620, 0x1be27: 0x6cf73c20,
+-	0x1be28: 0x6c1d8620, 0x1be29: 0x6cef6820, 0x1be2a: 0x6c7cc220, 0x1be2b: 0x6c1d8a20,
+-	0x1be2c: 0x6cc34c20, 0x1be2d: 0x6cc38020, 0x1be2e: 0x6c035e20, 0x1be2f: 0x6c391620,
+-	0x1be30: 0x6cbff420, 0x1be31: 0x6c611c20, 0x1be32: 0x6c110420, 0x1be33: 0x6d3d2220,
+-	0x1be34: 0x6c019c20, 0x1be35: 0x6c436820, 0x1be36: 0x6d3c3020, 0x1be37: 0x6c4a0620,
+-	0x1be38: 0x6c96b020, 0x1be39: 0x6d1eee20, 0x1be3a: 0x6c778020, 0x1be3b: 0x6c0eae20,
+-	0x1be3c: 0x6c544a20, 0x1be3d: 0x6d0b7620, 0x1be3e: 0x6d1a2820, 0x1be3f: 0x6c582620,
+-	// Block 0x6f9, offset 0x1be40
+-	0x1be40: 0x6d3c3420, 0x1be41: 0x6d27da20, 0x1be42: 0x6c7bba20, 0x1be43: 0x6ca97a20,
+-	0x1be44: 0x6c2b5420, 0x1be45: 0x6cbe2e20, 0x1be46: 0x6d381420, 0x1be47: 0x6ca26a20,
+-	0x1be48: 0x6c06d820, 0x1be49: 0x6caf4220, 0x1be4a: 0x6c70fc20, 0x1be4b: 0x6d147420,
+-	0x1be4c: 0x6cd0e420, 0x1be4d: 0x6cad4e20, 0x1be4e: 0x6cf98e20, 0x1be4f: 0x6ceaf220,
+-	0x1be50: 0x6c552620, 0x1be51: 0x6c8cae20, 0x1be52: 0x6c3a8a20, 0x1be53: 0x6cafbe20,
+-	0x1be54: 0x6ca62a20, 0x1be55: 0x6d119020, 0x1be56: 0x6d201a20, 0x1be57: 0x6c467020,
+-	0x1be58: 0x6d094620, 0x1be59: 0x6c705e20, 0x1be5a: 0x6c286a20, 0x1be5b: 0x6c0eb820,
+-	0x1be5c: 0x6c7a7420, 0x1be5d: 0x6cfbe820, 0x1be5e: 0x6ca8f820, 0x1be5f: 0x6c586620,
+-	0x1be60: 0x6c523c20, 0x1be61: 0x6c68d420, 0x1be62: 0x6c50dc20, 0x1be63: 0x6d2fa420,
+-	0x1be64: 0x6c5ff620, 0x1be65: 0x6d0a7220, 0x1be66: 0x6cccd220, 0x1be67: 0x6cde3820,
+-	0x1be68: 0x6cc65820, 0x1be69: 0x6cd45620, 0x1be6a: 0x6ce72820, 0x1be6b: 0x6c81a820,
+-	0x1be6c: 0x6c318a20, 0x1be6d: 0x6cf99c20, 0x1be6e: 0x6cd1ae20, 0x1be6f: 0x6c7b1a20,
+-	0x1be70: 0x6d329c20, 0x1be71: 0x6d22e420, 0x1be72: 0x6cdccc20, 0x1be73: 0x6d20f420,
+-	0x1be74: 0x6c096220, 0x1be75: 0x6c985420, 0x1be76: 0x6cf5c620, 0x1be77: 0x6c734c20,
+-	0x1be78: 0x6c87e020, 0x1be79: 0x6cf9aa20, 0x1be7a: 0x6d1a4820, 0x1be7b: 0x6cdb7e20,
+-	0x1be7c: 0x6c80ae20, 0x1be7d: 0x6c070220, 0x1be7e: 0x6d35c020, 0x1be7f: 0x6d0c7420,
+-	// Block 0x6fa, offset 0x1be80
+-	0x1be80: 0x6ccbdc20, 0x1be81: 0x6c85d220, 0x1be82: 0x6c4e9e20, 0x1be83: 0x6cfc0020,
+-	0x1be84: 0x6c6dae20, 0x1be85: 0x6cabfc20, 0x1be86: 0x6c3a0620, 0x1be87: 0x6cfeb820,
+-	0x1be88: 0x6c044220, 0x1be89: 0x6cb5cc20, 0x1be8a: 0x6ca5da20, 0x1be8b: 0x6c0bfc20,
+-	0x1be8c: 0x6d1b5620, 0x1be8d: 0x6c7efe20, 0x1be8e: 0x6c8b0220, 0x1be8f: 0x6c648820,
+-	0x1be90: 0x6cbaac20, 0x1be91: 0x6c7d5a20, 0x1be92: 0x6d0c0a20, 0x1be93: 0x6c4cba20,
+-	0x1be94: 0x6d402020, 0x1be95: 0x6c9c4820, 0x1be96: 0x6c166820, 0x1be97: 0x6d13e620,
+-	0x1be98: 0x6d35e820, 0x1be99: 0x6d32b420, 0x1be9a: 0x6d0b2c20, 0x1be9b: 0x6c9bce20,
+-	0x1be9c: 0x6c10f820, 0x1be9d: 0x6c243620, 0x1be9e: 0x6cceec20, 0x1be9f: 0x6c8b9820,
+-	0x1bea0: 0x6c2d1620, 0x1bea1: 0x6c953e20, 0x1bea2: 0x6c556020, 0x1bea3: 0x6d3f9020,
+-	0x1bea4: 0x6c4b4620, 0x1bea5: 0x6cefc820, 0x1bea6: 0x6c3c4c20, 0x1bea7: 0x6cf28c20,
+-	0x1bea8: 0x6d256620, 0x1bea9: 0x6d037420, 0x1beaa: 0x6d399820, 0x1beab: 0x6c98ba20,
+-	0x1beac: 0x6cf14020, 0x1bead: 0x6c1fe420, 0x1beae: 0x6cfcce20, 0x1beaf: 0x6ce93420,
+-	0x1beb0: 0x6d0bb220, 0x1beb1: 0x6ca4ac20, 0x1beb2: 0x6d004220, 0x1beb3: 0x6c636020,
+-	0x1beb4: 0x6c540620, 0x1beb5: 0x6c0af420, 0x1beb6: 0x6d1f3a20, 0x1beb7: 0x6d1f4820,
+-	0x1beb8: 0x6c9a0020, 0x1beb9: 0x6c13e420, 0x1beba: 0x6d111420, 0x1bebb: 0x6cdcd620,
+-	0x1bebc: 0x6c0f1420, 0x1bebd: 0x6ca00820, 0x1bebe: 0x6c574020, 0x1bebf: 0x6d258620,
+-	// Block 0x6fb, offset 0x1bec0
+-	0x1bec0: 0x6cd9b420, 0x1bec1: 0x6c96c420, 0x1bec2: 0x6d258820, 0x1bec3: 0x6c270c20,
+-	0x1bec4: 0x6d239220, 0x1bec5: 0x6cd1d220, 0x1bec6: 0x6c4fcc20, 0x1bec7: 0x6cbb6420,
+-	0x1bec8: 0x6d17ea20, 0x1bec9: 0x6d316a20, 0x1beca: 0x6c123420, 0x1becb: 0x6c4fe220,
+-	0x1becc: 0x6c97ee20, 0x1becd: 0x6c6e9620, 0x1bece: 0x6c67b820, 0x1becf: 0x6ca12e20,
+-	0x1bed0: 0x6d2ecc20, 0x1bed1: 0x6c150a20, 0x1bed2: 0x6c026420, 0x1bed3: 0x6c025420,
+-	0x1bed4: 0x6c4fd420, 0x1bed5: 0x6c24e020, 0x1bed6: 0x6c07c420, 0x1bed7: 0x6c749820,
+-	0x1bed8: 0x6c0a2c20, 0x1bed9: 0x6c09fe20, 0x1beda: 0x6c59dc20, 0x1bedb: 0x6cb44a20,
+-	0x1bedc: 0x6c8bd020, 0x1bedd: 0x6d072620, 0x1bede: 0x6ce77e20, 0x1bedf: 0x6d121e20,
+-	0x1bee0: 0x6c8a1220, 0x1bee1: 0x6cd79020, 0x1bee2: 0x6cff0620, 0x1bee3: 0x6cd49020,
+-	0x1bee4: 0x6c33a820, 0x1bee5: 0x6c69c620, 0x1bee6: 0x6c442020, 0x1bee7: 0x6c739020,
+-	0x1bee8: 0x6c31b420, 0x1bee9: 0x6c5c3820, 0x1beea: 0x6c7b3e20, 0x1beeb: 0x6cfc2c20,
+-	0x1beec: 0x6d021820, 0x1beed: 0x6cde1820, 0x1beee: 0x6cfc3220, 0x1beef: 0x6d09b020,
+-	0x1bef0: 0x6ca92620, 0x1bef1: 0x6cb21820, 0x1bef2: 0x6c5dfc20, 0x1bef3: 0x6caa2a20,
+-	0x1bef4: 0x6c9be620, 0x1bef5: 0x6c8b5420, 0x1bef6: 0x6ca51e20, 0x1bef7: 0x6c4a0c20,
+-	0x1bef8: 0x6cd48420, 0x1bef9: 0x6c917420, 0x1befa: 0x6cde2020, 0x1befb: 0x6cfd3c20,
+-	0x1befc: 0x6c9ca220, 0x1befd: 0x6cc4e820, 0x1befe: 0x6c584020, 0x1beff: 0x6ca52820,
+-	// Block 0x6fc, offset 0x1bf00
+-	0x1bf00: 0x6c957820, 0x1bf01: 0x6cfc5420, 0x1bf02: 0x6cb6ac20, 0x1bf03: 0x6c751e20,
+-	0x1bf04: 0x6d07fa20, 0x1bf05: 0x6c9eae20, 0x1bf06: 0x6d3e1a20, 0x1bf07: 0x6c93d620,
+-	0x1bf08: 0x6c914c20, 0x1bf09: 0x6d22b820, 0x1bf0a: 0x6cda7a20, 0x1bf0b: 0x6cedda20,
+-	0x1bf0c: 0x6cbff620, 0x1bf0d: 0x6c40d220, 0x1bf0e: 0x6c2f4c20, 0x1bf0f: 0x6c821620,
+-	0x1bf10: 0x6c031620, 0x1bf11: 0x6c5e7c20, 0x1bf12: 0x6c52fa20, 0x1bf13: 0x6c2c1a20,
+-	0x1bf14: 0x6c202e20, 0x1bf15: 0x6c416c20, 0x1bf16: 0x6c6fac20, 0x1bf17: 0x6d20be20,
+-	0x1bf18: 0x6cb6d820, 0x1bf19: 0x6d20c020, 0x1bf1a: 0x6c170620, 0x1bf1b: 0x6c969020,
+-	0x1bf1c: 0x6c456420, 0x1bf1d: 0x6cf43020, 0x1bf1e: 0x6c3d4220, 0x1bf1f: 0x6cf18420,
+-	0x1bf20: 0x6c6bc620, 0x1bf21: 0x6d0b1a20, 0x1bf22: 0x6c0d2620, 0x1bf23: 0x6c0b8020,
+-	0x1bf24: 0x6c056220, 0x1bf25: 0x6d268820, 0x1bf26: 0x6c73f220, 0x1bf27: 0x6c9ac220,
+-	0x1bf28: 0x6c73f420, 0x1bf29: 0x6cecca20, 0x1bf2a: 0x6c646e20, 0x1bf2b: 0x6c99da20,
+-	0x1bf2c: 0x6c282420, 0x1bf2d: 0x6cb20420, 0x1bf2e: 0x6cef9620, 0x1bf2f: 0x6c585820,
+-	0x1bf30: 0x6cfc8020, 0x1bf31: 0x6cbaa820, 0x1bf32: 0x6c8cbe20, 0x1bf33: 0x6c274a20,
+-	0x1bf34: 0x6d16fc20, 0x1bf35: 0x6c016820, 0x1bf36: 0x6cb28820, 0x1bf37: 0x6c2d4620,
+-	0x1bf38: 0x6c3e1620, 0x1bf39: 0x6d080220, 0x1bf3a: 0x6cf7da20, 0x1bf3b: 0x6c0e5820,
+-	0x1bf3c: 0x6c229420, 0x1bf3d: 0x6c467820, 0x1bf3e: 0x6c640620, 0x1bf3f: 0x6cce9e20,
+-	// Block 0x6fd, offset 0x1bf40
+-	0x1bf40: 0x6cb37220, 0x1bf41: 0x6c222220, 0x1bf42: 0x6c77e420, 0x1bf43: 0x6cc4bc20,
+-	0x1bf44: 0x6cd0f420, 0x1bf45: 0x6ccfbe20, 0x1bf46: 0x6d14a820, 0x1bf47: 0x6d411220,
+-	0x1bf48: 0x6c633c20, 0x1bf49: 0x6c9f3a20, 0x1bf4a: 0x6cccd420, 0x1bf4b: 0x6c8efe20,
+-	0x1bf4c: 0x6c095020, 0x1bf4d: 0x6d312c20, 0x1bf4e: 0x6d312e20, 0x1bf4f: 0x6c73fc20,
+-	0x1bf50: 0x6c383820, 0x1bf51: 0x6c8f7820, 0x1bf52: 0x6c6c3e20, 0x1bf53: 0x6c698e20,
+-	0x1bf54: 0x6c667020, 0x1bf55: 0x6c85d420, 0x1bf56: 0x6c4a1e20, 0x1bf57: 0x6cfa9220,
+-	0x1bf58: 0x6d386820, 0x1bf59: 0x6c45e420, 0x1bf5a: 0x6d0be820, 0x1bf5b: 0x6d053420,
+-	0x1bf5c: 0x6d0fa420, 0x1bf5d: 0x6d063620, 0x1bf5e: 0x6c95f620, 0x1bf5f: 0x6cda9020,
+-	0x1bf60: 0x6d399420, 0x1bf61: 0x6cbd6420, 0x1bf62: 0x6d1a4a20, 0x1bf63: 0x6d09fe20,
+-	0x1bf64: 0x6c05f620, 0x1bf65: 0x6c379220, 0x1bf66: 0x6cfe2a20, 0x1bf67: 0x6d10e420,
+-	0x1bf68: 0x6cf9ac20, 0x1bf69: 0x6c4f6620, 0x1bf6a: 0x6c4a4a20, 0x1bf6b: 0x6c1cba20,
+-	0x1bf6c: 0x6d06ac20, 0x1bf6d: 0x6c047820, 0x1bf6e: 0x6cae1620, 0x1bf6f: 0x6c81f020,
+-	0x1bf70: 0x6c28fa20, 0x1bf71: 0x6d1d6420, 0x1bf72: 0x6c5aa620, 0x1bf73: 0x6cf19220,
+-	0x1bf74: 0x6c355c20, 0x1bf75: 0x6c19e820, 0x1bf76: 0x6c2c4420, 0x1bf77: 0x6cf44c20,
+-	0x1bf78: 0x6cf3c420, 0x1bf79: 0x6c19e020, 0x1bf7a: 0x6c75b220, 0x1bf7b: 0x6c99ee20,
+-	0x1bf7c: 0x6c071220, 0x1bf7d: 0x6ce6c220, 0x1bf7e: 0x6cfcb420, 0x1bf7f: 0x6c1f3220,
+-	// Block 0x6fe, offset 0x1bf80
+-	0x1bf80: 0x6c4e0820, 0x1bf81: 0x6d081220, 0x1bf82: 0x6d0c8820, 0x1bf83: 0x6cc05020,
+-	0x1bf84: 0x6d088a20, 0x1bf85: 0x6c80be20, 0x1bf86: 0x6c851420, 0x1bf87: 0x6d053c20,
+-	0x1bf88: 0x6c3e5620, 0x1bf89: 0x6c8e5020, 0x1bf8a: 0x6d0b1e20, 0x1bf8b: 0x6cf5f820,
+-	0x1bf8c: 0x6c8cec20, 0x1bf8d: 0x6c83c420, 0x1bf8e: 0x6c6d0420, 0x1bf8f: 0x6c88b620,
+-	0x1bf90: 0x6cdd6020, 0x1bf91: 0x6cddd620, 0x1bf92: 0x6c3cfe20, 0x1bf93: 0x6cecd620,
+-	0x1bf94: 0x6c2d5a20, 0x1bf95: 0x6cb20c20, 0x1bf96: 0x6d2df020, 0x1bf97: 0x6ccb2c20,
+-	0x1bf98: 0x6c9f5620, 0x1bf99: 0x6d234820, 0x1bf9a: 0x6c709420, 0x1bf9b: 0x6c186820,
+-	0x1bf9c: 0x6c7f0a20, 0x1bf9d: 0x6cf19620, 0x1bf9e: 0x6cd16c20, 0x1bf9f: 0x6cef1420,
+-	0x1bfa0: 0x6ce4f620, 0x1bfa1: 0x6c1f4020, 0x1bfa2: 0x6d423c20, 0x1bfa3: 0x6c081e20,
+-	0x1bfa4: 0x6c196020, 0x1bfa5: 0x6c562220, 0x1bfa6: 0x6cb5ea20, 0x1bfa7: 0x6c365e20,
+-	0x1bfa8: 0x6c7d6420, 0x1bfa9: 0x6c167020, 0x1bfaa: 0x6cb5ec20, 0x1bfab: 0x6c082020,
+-	0x1bfac: 0x6ced2020, 0x1bfad: 0x6c925620, 0x1bfae: 0x6c239e20, 0x1bfaf: 0x6c495220,
+-	0x1bfb0: 0x6d0d9020, 0x1bfb1: 0x6c2dca20, 0x1bfb2: 0x6c072620, 0x1bfb3: 0x6c8bb620,
+-	0x1bfb4: 0x6cbd7220, 0x1bfb5: 0x6caff220, 0x1bfb6: 0x6cabd620, 0x1bfb7: 0x6cc3b820,
+-	0x1bfb8: 0x6d3d6220, 0x1bfb9: 0x6cbd7420, 0x1bfba: 0x6c383c20, 0x1bfbb: 0x6c6d8020,
+-	0x1bfbc: 0x6cbf2a20, 0x1bfbd: 0x6c321a20, 0x1bfbe: 0x6c6bec20, 0x1bfbf: 0x6c5cf220,
+-	// Block 0x6ff, offset 0x1bfc0
+-	0x1bfc0: 0x6d226c20, 0x1bfc1: 0x6c999820, 0x1bfc2: 0x6c9a1020, 0x1bfc3: 0x6c210e20,
+-	0x1bfc4: 0x6d07aa20, 0x1bfc5: 0x6ce34a20, 0x1bfc6: 0x6d038020, 0x1bfc7: 0x6c277a20,
+-	0x1bfc8: 0x6cc75220, 0x1bfc9: 0x6c9f6020, 0x1bfca: 0x6c64b820, 0x1bfcb: 0x6cefe020,
+-	0x1bfcc: 0x6cc86620, 0x1bfcd: 0x6c593820, 0x1bfce: 0x6d00be20, 0x1bfcf: 0x6c1fe820,
+-	0x1bfd0: 0x6c65ae20, 0x1bfd1: 0x6d3bce20, 0x1bfd2: 0x6c171620, 0x1bfd3: 0x6c890a20,
+-	0x1bfd4: 0x6cc2fe20, 0x1bfd5: 0x6cf9d420, 0x1bfd6: 0x6c32ce20, 0x1bfd7: 0x6d262220,
+-	0x1bfd8: 0x6d0b2e20, 0x1bfd9: 0x6ca50220, 0x1bfda: 0x6c557220, 0x1bfdb: 0x6d1bbe20,
+-	0x1bfdc: 0x6d215e20, 0x1bfdd: 0x6c59d620, 0x1bfde: 0x6cc8d420, 0x1bfdf: 0x6ccb3020,
+-	0x1bfe0: 0x6c8e7c20, 0x1bfe1: 0x6cd1de20, 0x1bfe2: 0x6cc69e20, 0x1bfe3: 0x6cdd8220,
+-	0x1bfe4: 0x6d112620, 0x1bfe5: 0x6cf15c20, 0x1bfe6: 0x6cf45c20, 0x1bfe7: 0x6d317e20,
+-	0x1bfe8: 0x6c6d2a20, 0x1bfe9: 0x6d1c8a20, 0x1bfea: 0x6c969e20, 0x1bfeb: 0x6ce1dc20,
+-	0x1bfec: 0x6c8e8220, 0x1bfed: 0x6ce11820, 0x1bfee: 0x6c864e20, 0x1bfef: 0x6c80c420,
+-	0x1bff0: 0x6c4a7020, 0x1bff1: 0x6d325020, 0x1bff2: 0x6cbad020, 0x1bff3: 0x6c25be20,
+-	0x1bff4: 0x6c748020, 0x1bff5: 0x6d2f8e20, 0x1bff6: 0x6d112820, 0x1bff7: 0x6c00bc20,
+-	0x1bff8: 0x6c0d4620, 0x1bff9: 0x6cd4f620, 0x1bffa: 0x6c16c020, 0x1bffb: 0x6c7d8020,
+-	0x1bffc: 0x6d3b8820, 0x1bffd: 0x6c234020, 0x1bffe: 0x6c6cb020, 0x1bfff: 0x6d141620,
+-	// Block 0x700, offset 0x1c000
+-	0x1c000: 0x6c250020, 0x1c001: 0x6c234220, 0x1c002: 0x6cb63820, 0x1c003: 0x6c841a20,
+-	0x1c004: 0x6d1d0820, 0x1c005: 0x6cdd8a20, 0x1c006: 0x6cc08c20, 0x1c007: 0x6d082020,
+-	0x1c008: 0x6c026620, 0x1c009: 0x6c88c420, 0x1c00a: 0x6c9ad420, 0x1c00b: 0x6d2eda20,
+-	0x1c00c: 0x6d1a9620, 0x1c00d: 0x6c57e220, 0x1c00e: 0x6d1be620, 0x1c00f: 0x6cf0ce20,
+-	0x1c010: 0x6c92e620, 0x1c011: 0x6cf3ec20, 0x1c012: 0x6c2aac20, 0x1c013: 0x6d054820,
+-	0x1c014: 0x6d2b9420, 0x1c015: 0x6d0a4220, 0x1c016: 0x6cc1b420, 0x1c017: 0x6c299420,
+-	0x1c018: 0x6c8be020, 0x1c019: 0x6c8a1c20, 0x1c01a: 0x6cbf6220, 0x1c01b: 0x6cdb3420,
+-	0x1c01c: 0x6c59ec20, 0x1c01d: 0x6c4a8c20, 0x1c01e: 0x6cb45220, 0x1c01f: 0x6c6e3220,
+-	0x1c020: 0x6c38be20, 0x1c021: 0x6c6d4220, 0x1c022: 0x6c8e9820, 0x1c023: 0x6c5f3620,
+-	0x1c024: 0x6c5cae20, 0x1c025: 0x6c6e3420, 0x1c026: 0x6c00e220, 0x1c027: 0x6c0a8e20,
+-	0x1c028: 0x6c120e20, 0x1c029: 0x6cc1d820, 0x1c02a: 0x6d2a5820, 0x1c02b: 0x6c290c20,
+-	0x1c02c: 0x6c694c20, 0x1c02d: 0x6c4c0420, 0x1c02e: 0x6ce07e20, 0x1c02f: 0x6c5c5420,
+-	0x1c030: 0x6c58a620, 0x1c031: 0x6ccb7020, 0x1c032: 0x6cdc7620, 0x1c033: 0x6ce4c620,
+-	0x1c034: 0x6c1f9a20, 0x1c035: 0x6d21b820, 0x1c036: 0x6c6d6820, 0x1c037: 0x6c917620,
+-	0x1c038: 0x6c0d6020, 0x1c039: 0x6cd54220, 0x1c03a: 0x6cf21820, 0x1c03b: 0x6d41a220,
+-	0x1c03c: 0x6c7fd020, 0x1c03d: 0x6cf82020, 0x1c03e: 0x6d3ea820, 0x1c03f: 0x6d083020,
+-	// Block 0x701, offset 0x1c040
+-	0x1c040: 0x6cc88420, 0x1c041: 0x6cf31e20, 0x1c042: 0x6c415820, 0x1c043: 0x6c827220,
+-	0x1c044: 0x6c31da20, 0x1c045: 0x6c86fe20, 0x1c046: 0x6d374020, 0x1c047: 0x6cc76a20,
+-	0x1c048: 0x6c848e20, 0x1c049: 0x6d29ac20, 0x1c04a: 0x6cbf7620, 0x1c04b: 0x6ce43a20,
+-	0x1c04c: 0x6c4aa420, 0x1c04d: 0x6cdc0020, 0x1c04e: 0x6c7eb220, 0x1c04f: 0x6c8fe020,
+-	0x1c050: 0x6c918620, 0x1c051: 0x6c872620, 0x1c052: 0x6d29b220, 0x1c053: 0x6c808a20,
+-	0x1c054: 0x6d1c2e20, 0x1c055: 0x6c9cb420, 0x1c056: 0x6cfd9c20, 0x1c057: 0x6cbf8820,
+-	0x1c058: 0x6c49b820, 0x1c059: 0x6c2a5020, 0x1c05a: 0x6d29c020, 0x1c05b: 0x6c58ce20,
+-	0x1c05c: 0x6c483e20, 0x1c05d: 0x6c0eba20, 0x1c05e: 0x6c2e8820, 0x1c05f: 0x6c0ed820,
+-	0x1c060: 0x6c568e20, 0x1c061: 0x6d347620, 0x1c062: 0x6cb18020, 0x1c063: 0x6c050c20,
+-	0x1c064: 0x6cc4f020, 0x1c065: 0x6c87a220, 0x1c066: 0x6cec0c20,
+-	0x1c068: 0x6cfdaa20, 0x1c069: 0x6cb8aa20, 0x1c06a: 0x6c04c020, 0x1c06b: 0x6cae3a20,
+-	0x1c06c: 0x6c39c820, 0x1c06d: 0x6c282620, 0x1c06e: 0x6cf26c20, 0x1c06f: 0x6cab3420,
+-	0x1c072: 0x6cec4a20, 0x1c073: 0x6c552a20,
+-	0x1c074: 0x6c8cc020, 0x1c075: 0x6d14aa20, 0x1c076: 0x6cb29420, 0x1c077: 0x6c223820,
+-	0x1c078: 0x6c042020, 0x1c079: 0x6c72ea20, 0x1c07a: 0x6c16a820, 0x1c07b: 0x6c1aa820,
+-	0x1c07d: 0x6c296820, 0x1c07e: 0x6c9bd620, 0x1c07f: 0x6c109820,
+-	// Block 0x702, offset 0x1c080
+-	0x1c080: 0x6d3c8820, 0x1c081: 0x6cb2aa20, 0x1c082: 0x6c0afe20, 0x1c083: 0x6d393220,
+-	0x1c084: 0x6d316c20, 0x1c086: 0x6c225020, 0x1c087: 0x6d1bd220,
+-	0x1c088: 0x6cb7b220, 0x1c089: 0x6cfb7420, 0x1c08a: 0x6c90f220, 0x1c08b: 0x6c2c9220,
+-	0x1c08c: 0x6cab5020, 0x1c08d: 0x6c9b2e20, 0x1c08e: 0x6d3b8a20, 0x1c08f: 0x6c084e20,
+-	0x1c090: 0x6c8c6420, 0x1c091: 0x6d2bb020, 0x1c092: 0x6cf47c20, 0x1c093: 0x6cb0c220,
+-	0x1c094: 0x6c280220, 0x1c095: 0x6cf27420, 0x1c096: 0x6d1c0820, 0x1c097: 0x6d0e0420,
+-	0x1c098: 0x6c415c20, 0x1c099: 0x6c273420, 0x1c09a: 0x6cd03820, 0x1c09b: 0x6ce49a20,
+-	0x1c09c: 0x6ce49c20, 0x1c09d: 0x6c4e1c20, 0x1c09e: 0x6c16b020, 0x1c09f: 0x6cd0d220,
+-	0x1c0a0: 0x6cbe6e20, 0x1c0a1: 0x6ccfcc20, 0x1c0a2: 0x6c15aa20, 0x1c0a3: 0x6c15ac20,
+-	0x1c0a4: 0x6cc89c20, 0x1c0a5: 0x6cd10620, 0x1c0a6: 0x6cda4c20, 0x1c0a7: 0x6cd00820,
+-	0x1c0a8: 0x6d1e6c20, 0x1c0a9: 0x6cd66020, 0x1c0aa: 0x6c920e20, 0x1c0ab: 0x6c40a820,
+-	0x1c0ac: 0x6d1e1020, 0x1c0ad: 0x6c080e20, 0x1c0ae: 0x6c3cdc20, 0x1c0af: 0x6ca90820,
+-	0x1c0b0: 0x6ce47e20, 0x1c0b1: 0x6d1ee020, 0x1c0b2: 0x6c63fc20, 0x1c0b3: 0x6ccf9a20,
+-	0x1c0b4: 0x6d2c1820, 0x1c0b5: 0x6c2d3220, 0x1c0b6: 0x6c3dce20, 0x1c0b7: 0x6ca3e220,
+-	0x1c0b8: 0x6c2cbc20, 0x1c0b9: 0x6cb24820, 0x1c0ba: 0x6ce62e20, 0x1c0bb: 0x6c578420,
+-	0x1c0bc: 0x6ce6b220, 0x1c0bd: 0x6d321a20, 0x1c0be: 0x6d28f620, 0x1c0bf: 0x6c9b0820,
+-	// Block 0x703, offset 0x1c0c0
+-	0x1c0c0: 0x6c093c20, 0x1c0c1: 0x6cb58620, 0x1c0c2: 0x6c8f2620, 0x1c0c3: 0x6d09de20,
+-	0x1c0c4: 0x6c8e4420, 0x1c0c5: 0x6c170820, 0x1c0c6: 0x6ca23220, 0x1c0c7: 0x6d278a20,
+-	0x1c0c8: 0x6c393620, 0x1c0c9: 0x6c3e1820, 0x1c0ca: 0x6c44bc20, 0x1c0cb: 0x6ce48e20,
+-	0x1c0cc: 0x6c6bca20, 0x1c0cd: 0x6c6bcc20, 0x1c0ce: 0x6cc35220, 0x1c0cf: 0x6cf07c20,
+-	0x1c0d0: 0x6c3e1a20, 0x1c0d1: 0x6ce49020, 0x1c0d2: 0x6ca23420, 0x1c0d3: 0x6c341e20,
+-	0x1c0d4: 0x6cacb020, 0x1c0d5: 0x6c675620, 0x1c0d6: 0x6cebd220, 0x1c0d7: 0x6c269020,
+-	0x1c0d8: 0x6ca3f020, 0x1c0d9: 0x6c8e4c20, 0x1c0da: 0x6c079a20, 0x1c0db: 0x6d31c820,
+-	0x1c0dc: 0x6c1f2820, 0x1c0dd: 0x6ca23820, 0x1c0de: 0x6ca23a20, 0x1c0df: 0x6c12d820,
+-	0x1c0e0: 0x6ce49620, 0x1c0e1: 0x6c40f220, 0x1c0e2: 0x6c096420, 0x1c0e3: 0x6c269a20,
+-	0x1c0e4: 0x6d35ea20, 0x1c0e5: 0x6c361220, 0x1c0e6: 0x6cb5ce20, 0x1c0e7: 0x6c94a020,
+-	0x1c0e8: 0x6cac3e20, 0x1c0e9: 0x6d199020, 0x1c0ea: 0x6c384e20, 0x1c0eb: 0x6c579820,
+-	0x1c0ec: 0x6ccef220, 0x1c0ed: 0x6d212e20, 0x1c0ee: 0x6ca24220, 0x1c0ef: 0x6c75be20,
+-	0x1c0f0: 0x6d176620, 0x1c0f1: 0x6c8e5820, 0x1c0f2: 0x6ccef420, 0x1c0f3: 0x6c2eac20,
+-	0x1c0f4: 0x6c1db020, 0x1c0f5: 0x6c579e20, 0x1c0f6: 0x6c290020, 0x1c0f7: 0x6d3c9020,
+-	0x1c0f8: 0x6c5eea20, 0x1c0f9: 0x6ced2a20, 0x1c0fa: 0x6c676620, 0x1c0fb: 0x6c1a2620,
+-	0x1c0fc: 0x6c171e20, 0x1c0fd: 0x6cea8020, 0x1c0fe: 0x6c825220, 0x1c0ff: 0x6c5f1620,
+-	// Block 0x704, offset 0x1c100
+-	0x1c100: 0x6c13b020, 0x1c101: 0x6c8e9a20, 0x1c102: 0x6c2f3c20, 0x1c103: 0x6ce98220,
+-	0x1c104: 0x6c8c6c20, 0x1c105: 0x6c678c20, 0x1c106: 0x6c679020, 0x1c107: 0x6c1e0020,
+-	0x1c108: 0x6cb0d620, 0x1c109: 0x6c2f0620, 0x1c10a: 0x6c2f1020, 0x1c10b: 0x6cb04420,
+-	0x1c10c: 0x6c6a8220, 0x1c10d: 0x6c287220, 0x1c10e: 0x6cd4da20, 0x1c10f: 0x6cd4dc20,
+-	0x1c110: 0x6d369220, 0x1c111: 0x6d153420, 0x1c112: 0x6ca54020, 0x1c113: 0x6ca39420,
+-	0x1c114: 0x6c2f4e20, 0x1c115: 0x6c08be20, 0x1c116: 0x6c69f620, 0x1c117: 0x6c89da20,
+-	0x1c118: 0x6c426220, 0x1c119: 0x6c437620, 0x1c11a: 0x6c6fd620, 0x1c11b: 0x6d38da20,
+-	0x1c11c: 0x6cfa3020, 0x1c11d: 0x6ccd7220, 0x1c11e: 0x6d057220, 0x1c11f: 0x6caa9e20,
+-	0x1c120: 0x6c859220, 0x1c121: 0x6d0f8a20, 0x1c122: 0x6c192020, 0x1c123: 0x6d1f0c20,
+-	0x1c124: 0x6c033220, 0x1c125: 0x6c6bce20, 0x1c126: 0x6c73fe20, 0x1c127: 0x6cb59620,
+-	0x1c128: 0x6cf95620, 0x1c129: 0x6c251e20, 0x1c12a: 0x6c095220, 0x1c12b: 0x6d16fe20,
+-	0x1c12c: 0x6c85aa20, 0x1c12d: 0x6d401a20, 0x1c12e: 0x6c204e20, 0x1c12f: 0x6c3c2620,
+-	0x1c130: 0x6d3ad220, 0x1c131: 0x6cad8620, 0x1c132: 0x6cafd020, 0x1c133: 0x6c418a20,
+-	0x1c134: 0x6c77ee20, 0x1c135: 0x6c21fa20, 0x1c136: 0x6d08de20, 0x1c137: 0x6d33c620,
+-	0x1c138: 0x6c283020, 0x1c139: 0x6d31ca20, 0x1c13a: 0x6c380220, 0x1c13b: 0x6d350e20,
+-	0x1c13c: 0x6ce29c20, 0x1c13d: 0x6c706a20, 0x1c13e: 0x6c600220, 0x1c13f: 0x6c3a9a20,
+-	// Block 0x705, offset 0x1c140
+-	0x1c140: 0x6c706c20, 0x1c141: 0x6cccda20, 0x1c142: 0x6c634420, 0x1c143: 0x6d080820,
+-	0x1c144: 0x6d2cbc20, 0x1c145: 0x6c0e1420, 0x1c146: 0x6ca80a20, 0x1c147: 0x6d334620,
+-	0x1c148: 0x6d1d8020, 0x1c149: 0x6c6e6820, 0x1c14a: 0x6cc2e020, 0x1c14b: 0x6ce29e20,
+-	0x1c14c: 0x6ce6f420, 0x1c14d: 0x6d14e620, 0x1c14e: 0x6c6a0020, 0x1c14f: 0x6cefb020,
+-	0x1c150: 0x6c5b3620, 0x1c151: 0x6cdfa220, 0x1c152: 0x6d101220, 0x1c153: 0x6c1c1220,
+-	0x1c154: 0x6d35ec20, 0x1c155: 0x6c523220, 0x1c156: 0x6d0b5220, 0x1c157: 0x6c9a9220,
+-	0x1c158: 0x6c311a20, 0x1c159: 0x6c6e8620, 0x1c15a: 0x6cfec020, 0x1c15b: 0x6ce7c820,
+-	0x1c15c: 0x6ce86220, 0x1c15d: 0x6c986020, 0x1c15e: 0x6cb05e20, 0x1c15f: 0x6cfec220,
+-	0x1c160: 0x6cdb8020, 0x1c161: 0x6c3d7020, 0x1c162: 0x6c861220, 0x1c163: 0x6d363420,
+-	0x1c164: 0x6c25de20, 0x1c165: 0x6c345220, 0x1c166: 0x6cf4ee20, 0x1c167: 0x6ccbf420,
+-	0x1c168: 0x6c815a20, 0x1c169: 0x6cd46a20, 0x1c16a: 0x6c592620, 0x1c16b: 0x6cfb5e20,
+-	0x1c16c: 0x6d17ee20, 0x1c16d: 0x6c07f820, 0x1c16e: 0x6d2f3420, 0x1c16f: 0x6c495620,
+-	0x1c170: 0x6cdfec20, 0x1c171: 0x6c3ab820, 0x1c172: 0x6c966a20, 0x1c173: 0x6c8bba20,
+-	0x1c174: 0x6c1abc20, 0x1c175: 0x6c621a20, 0x1c176: 0x6ce50220, 0x1c177: 0x6c013820,
+-	0x1c178: 0x6c1c3220, 0x1c179: 0x6c09d020, 0x1c17a: 0x6c09d220, 0x1c17b: 0x6c9f6220,
+-	0x1c17c: 0x6c481a20, 0x1c17d: 0x6c330820, 0x1c17e: 0x6c354220, 0x1c17f: 0x6cefe220,
+-	// Block 0x706, offset 0x1c180
+-	0x1c180: 0x6d209220, 0x1c181: 0x6c254420, 0x1c182: 0x6d0b5620, 0x1c183: 0x6d3a1620,
+-	0x1c184: 0x6c244020, 0x1c185: 0x6c27e620, 0x1c186: 0x6cd0b020, 0x1c187: 0x6d380220,
+-	0x1c188: 0x6c1c4620, 0x1c189: 0x6d239420, 0x1c18a: 0x6c541c20, 0x1c18b: 0x6c3c5c20,
+-	0x1c18c: 0x6c7e8420, 0x1c18d: 0x6d0fd220, 0x1c18e: 0x6c18de20, 0x1c18f: 0x6ce8c420,
+-	0x1c190: 0x6d226e20, 0x1c191: 0x6c4c2820, 0x1c192: 0x6cf19e20, 0x1c193: 0x6c594420,
+-	0x1c194: 0x6c7aa220, 0x1c195: 0x6c642820, 0x1c196: 0x6d19f620, 0x1c197: 0x6d182c20,
+-	0x1c198: 0x6c911020, 0x1c199: 0x6ccaf820, 0x1c19a: 0x6c749a20, 0x1c19b: 0x6c1c5a20,
+-	0x1c19c: 0x6cf6a620, 0x1c19d: 0x6c492220, 0x1c19e: 0x6d185c20, 0x1c19f: 0x6cf16020,
+-	0x1c1a0: 0x6c608c20, 0x1c1a1: 0x6c205c20, 0x1c1a2: 0x6c049220, 0x1c1a3: 0x6c5bfe20,
+-	0x1c1a4: 0x6c8e8420, 0x1c1a5: 0x6c149c20, 0x1c1a6: 0x6cd47220, 0x1c1a7: 0x6caaaa20,
+-	0x1c1a8: 0x6c2cd820, 0x1c1a9: 0x6c26fc20, 0x1c1aa: 0x6c0d0e20, 0x1c1ab: 0x6cdfb820,
+-	0x1c1ac: 0x6d2f4020, 0x1c1ad: 0x6c0c1c20, 0x1c1ae: 0x6cd0c620, 0x1c1af: 0x6c246220,
+-	0x1c1b0: 0x6c95c020, 0x1c1b1: 0x6d18a420, 0x1c1b2: 0x6d403220, 0x1c1b3: 0x6c1d7c20,
+-	0x1c1b4: 0x6d2f4220, 0x1c1b5: 0x6d2d4a20, 0x1c1b6: 0x6cda4220, 0x1c1b7: 0x6ccb5e20,
+-	0x1c1b8: 0x6cc39c20, 0x1c1b9: 0x6c2e3c20, 0x1c1ba: 0x6c911a20, 0x1c1bb: 0x6c911c20,
+-	0x1c1bc: 0x6ca15220, 0x1c1bd: 0x6cbda620, 0x1c1be: 0x6d1b0820, 0x1c1bf: 0x6d1d0a20,
+-	// Block 0x707, offset 0x1c1c0
+-	0x1c1c0: 0x6c59fa20, 0x1c1c1: 0x6c3f0820, 0x1c1c2: 0x6c8a2620, 0x1c1c3: 0x6c8fac20,
+-	0x1c1c4: 0x6cbbfe20, 0x1c1c5: 0x6c8ea820, 0x1c1c6: 0x6c817a20, 0x1c1c7: 0x6cfba820,
+-	0x1c1c8: 0x6c3ad620, 0x1c1c9: 0x6c280420, 0x1c1ca: 0x6d1b7420, 0x1c1cb: 0x6c51f020,
+-	0x1c1cc: 0x6c005420, 0x1c1cd: 0x6c04a620, 0x1c1ce: 0x6cfbaa20, 0x1c1cf: 0x6c492a20,
+-	0x1c1d0: 0x6c4b8c20, 0x1c1d1: 0x6ca9f620, 0x1c1d2: 0x6d242e20, 0x1c1d3: 0x6cef4a20,
+-	0x1c1d4: 0x6d18e820, 0x1c1d5: 0x6d1dc620, 0x1c1d6: 0x6cb07820, 0x1c1d7: 0x6c82ee20,
+-	0x1c1d8: 0x6c86a820, 0x1c1d9: 0x6cd57820, 0x1c1da: 0x6c28d820, 0x1c1db: 0x6c8c3c20,
+-	0x1c1dc: 0x6c2d8c20, 0x1c1dd: 0x6c8c3e20, 0x1c1de: 0x6c7f6420, 0x1c1df: 0x6c0d1020,
+-	0x1c1e0: 0x6c62ba20, 0x1c1e1: 0x6c1ae820, 0x1c1e2: 0x6d103820, 0x1c1e3: 0x6d086220,
+-	0x1c1e4: 0x6c6a3820, 0x1c1e5: 0x6d330e20, 0x1c1e6: 0x6c99cc20, 0x1c1e7: 0x6c874420,
+-	0x1c1e8: 0x6c5e4820, 0x1c1e9: 0x6c7f7820, 0x1c1ea: 0x6c631420, 0x1c1eb: 0x6c2cf220,
+-	0x1c1ec: 0x6d086620, 0x1c1ed: 0x6d1d2e20, 0x1c1ee: 0x6d1b2820, 0x1c1ef: 0x6cc21420,
+-	0x1c1f0: 0x6d1dea20, 0x1c1f1: 0x6cdfc820, 0x1c1f2: 0x6c2cfe20, 0x1c1f3: 0x6c95da20,
+-	0x1c1f4: 0x6c947c20, 0x1c1f5: 0x6c948420, 0x1c1f6: 0x6c0e4620, 0x1c1f7: 0x6c0e5420,
+-	0x1c1f8: 0x6c4ada20, 0x1c1f9: 0x6c037020, 0x1c1fa: 0x6c37e620, 0x1c1fb: 0x6c2a9c20,
+-	0x1c1fc: 0x6c37ec20, 0x1c1fd: 0x6c040820, 0x1c1fe: 0x6c041620, 0x1c1ff: 0x6cbc8020,
+-	// Block 0x708, offset 0x1c200
+-	0x1c200: 0x6c5fd620, 0x1c201: 0x6d2a6820, 0x1c202: 0x6d2a6a20, 0x1c203: 0x6c994420,
+-	0x1c204: 0x6c2a8c20, 0x1c205: 0x6cabb820, 0x1c206: 0x6c69f820, 0x1c207: 0x6c59ac20,
+-	0x1c208: 0x6c4a3e20, 0x1c209: 0x6c229620, 0x1c20a: 0x6c8ccc20, 0x1c20b: 0x6c42b620,
+-	0x1c20c: 0x6ca0f020, 0x1c20d: 0x6c5ffa20, 0x1c20e: 0x6c68e420, 0x1c20f: 0x6caf0620,
+-	0x1c210: 0x6c42be20, 0x1c211: 0x6c004020, 0x1c212: 0x6c356620, 0x1c213: 0x6c503e20,
+-	0x1c214: 0x6c4ec420, 0x1c215: 0x6c09a420, 0x1c216: 0x6ced2220, 0x1c217: 0x6c1dbc20,
+-	0x1c218: 0x6cba5c20, 0x1c219: 0x6cf65220, 0x1c21a: 0x6c005020, 0x1c21b: 0x6cffb820,
+-	0x1c21c: 0x6c505c20, 0x1c21d: 0x6c5a7820, 0x1c21e: 0x6c505e20, 0x1c21f: 0x6d2b0220,
+-	0x1c220: 0x6c251020, 0x1c221: 0x6c506c20, 0x1c222: 0x6cffc220, 0x1c223: 0x6d132820,
+-	0x1c224: 0x6cb33820, 0x1c225: 0x6c507220, 0x1c226: 0x6c695220, 0x1c227: 0x6c00f220,
+-	0x1c228: 0x6d03ae20, 0x1c229: 0x6c5a8020, 0x1c22a: 0x6c872820, 0x1c22b: 0x6cb1a620,
+-	0x1c22c: 0x6c51a220, 0x1c22d: 0x6c69e220, 0x1c22e: 0x6cafa820, 0x1c22f: 0x6c41ca20,
+-	0x1c230: 0x6cad8820, 0x1c231: 0x6d391c20, 0x1c232: 0x6c756e20, 0x1c233: 0x6cc06620,
+-	0x1c234: 0x6c259420, 0x1c235: 0x6cc3ce20, 0x1c236: 0x6d2bee20, 0x1c237: 0x6c47b420,
+-	0x1c238: 0x6c757620, 0x1c239: 0x6c757820, 0x1c23a: 0x6d394420, 0x1c23b: 0x6d2bfe20,
+-	0x1c23c: 0x6c47d820, 0x1c23d: 0x6d2f7c20, 0x1c23e: 0x6c31e020, 0x1c23f: 0x6c9f8a20,
+-	// Block 0x709, offset 0x1c240
+-	0x1c240: 0x6cb6da20, 0x1c241: 0x6d1c5620, 0x1c242: 0x6d20c620, 0x1c243: 0x6c069220,
+-	0x1c244: 0x6d2f5e20, 0x1c245: 0x6d37a820, 0x1c246: 0x6cae3c20, 0x1c247: 0x6c50de20,
+-	0x1c248: 0x6d1c5c20, 0x1c249: 0x6c50f420, 0x1c24a: 0x6d173820, 0x1c24b: 0x6c0e6020,
+-	0x1c24c: 0x6cecfc20, 0x1c24d: 0x6c50f620, 0x1c24e: 0x6c021620, 0x1c24f: 0x6d2de220,
+-	0x1c250: 0x6d0c8020, 0x1c251: 0x6c647e20, 0x1c252: 0x6c510e20, 0x1c253: 0x6d208820,
+-	0x1c254: 0x6c7c3a20, 0x1c255: 0x6c394620, 0x1c256: 0x6c413220, 0x1c257: 0x6c2a1220,
+-	0x1c258: 0x6cac5620, 0x1c259: 0x6c3f6620, 0x1c25a: 0x6cc06820, 0x1c25b: 0x6cd15e20,
+-	0x1c25c: 0x6c2a1620, 0x1c25d: 0x6c926a20, 0x1c25e: 0x6d2df820, 0x1c25f: 0x6c9b2220,
+-	0x1c260: 0x6c841c20, 0x1c261: 0x6c6ca220, 0x1c262: 0x6d071220, 0x1c263: 0x6c64ca20,
+-	0x1c264: 0x6cac6a20, 0x1c265: 0x6c49a620, 0x1c266: 0x6c014e20, 0x1c267: 0x6c915c20,
+-	0x1c268: 0x6d065e20, 0x1c269: 0x6d38b420, 0x1c26a: 0x6c299620, 0x1c26b: 0x6c015620,
+-	0x1c26c: 0x6c47e420, 0x1c26d: 0x6c872a20, 0x1c26e: 0x6ca26420, 0x1c26f: 0x6c2f5020,
+-	0x1c270: 0x6c421020, 0x1c271: 0x6d057420, 0x1c272: 0x6c983a20, 0x1c273: 0x6cee4e20,
+-	0x1c274: 0x6d344020, 0x1c275: 0x6cb74a20, 0x1c276: 0x6d25e020, 0x1c277: 0x6ce49220,
+-	0x1c278: 0x6cfd6420, 0x1c279: 0x6c33ca20, 0x1c27a: 0x6d02ba20, 0x1c27b: 0x6cf86620,
+-	0x1c27c: 0x6cacae20, 0x1c27d: 0x6c3c2820, 0x1c27e: 0x6c33de20, 0x1c27f: 0x6c9f3c20,
+-	// Block 0x70a, offset 0x1c280
+-	0x1c280: 0x6c9fee20, 0x1c281: 0x6cd12c20, 0x1c282: 0x6cd34420, 0x1c283: 0x6d278c20,
+-	0x1c284: 0x6c9e0e20, 0x1c285: 0x6cac3a20, 0x1c286: 0x6c39cc20, 0x1c287: 0x6c9e8a20,
+-	0x1c288: 0x6c27c220, 0x1c289: 0x6c99e020, 0x1c28a: 0x6c995820, 0x1c28b: 0x6c770420,
+-	0x1c28c: 0x6cfc9020, 0x1c28d: 0x6c79ba20, 0x1c28e: 0x6cd35620, 0x1c28f: 0x6d0f5420,
+-	0x1c290: 0x6d32a220, 0x1c291: 0x6d119c20, 0x1c292: 0x6ccfce20, 0x1c293: 0x6c5dae20,
+-	0x1c294: 0x6c26ec20, 0x1c295: 0x6d31cc20, 0x1c296: 0x6c7bee20, 0x1c297: 0x6c706e20,
+-	0x1c298: 0x6cd09a20, 0x1c299: 0x6d14d020, 0x1c29a: 0x6cd12e20, 0x1c29b: 0x6c9a8a20,
+-	0x1c29c: 0x6ca0f420, 0x1c29d: 0x6d3ad620, 0x1c29e: 0x6d313c20, 0x1c29f: 0x6d313e20,
+-	0x1c2a0: 0x6c9dbc20, 0x1c2a1: 0x6cd35820, 0x1c2a2: 0x6d24d620, 0x1c2a3: 0x6c2e8a20,
+-	0x1c2a4: 0x6ca69020, 0x1c2a5: 0x6d3f4620, 0x1c2a6: 0x6d3f4820, 0x1c2a7: 0x6c179620,
+-	0x1c2a8: 0x6d2c7620, 0x1c2a9: 0x6d087e20, 0x1c2aa: 0x6c0dda20, 0x1c2ab: 0x6c9cea20,
+-	0x1c2ac: 0x6c8f7e20, 0x1c2ad: 0x6cdbc220, 0x1c2ae: 0x6ce73e20, 0x1c2af: 0x6c9c3020,
+-	0x1c2b0: 0x6c2f3620, 0x1c2b1: 0x6c2c4620, 0x1c2b2: 0x6ca54c20, 0x1c2b3: 0x6c9ff820,
+-	0x1c2b4: 0x6d088c20, 0x1c2b5: 0x6c1aaa20, 0x1c2b6: 0x6c7bf420, 0x1c2b7: 0x6c735a20,
+-	0x1c2b8: 0x6ca1ce20, 0x1c2b9: 0x6d323a20, 0x1c2ba: 0x6ce5d220, 0x1c2bb: 0x6d0fac20,
+-	0x1c2bc: 0x6d0d6c20, 0x1c2bd: 0x6ca10620, 0x1c2be: 0x6d382620, 0x1c2bf: 0x6ca0f620,
+-	// Block 0x70b, offset 0x1c2c0
+-	0x1c2c0: 0x6d311220, 0x1c2c1: 0x6d32b620, 0x1c2c2: 0x6c9a0220, 0x1c2c3: 0x6cdd1e20,
+-	0x1c2c4: 0x6cceda20, 0x1c2c5: 0x6c4ec820, 0x1c2c6: 0x6c592820, 0x1c2c7: 0x6c2c5c20,
+-	0x1c2c8: 0x6c1a7620, 0x1c2c9: 0x6c25e020, 0x1c2ca: 0x6c736420, 0x1c2cb: 0x6c356820,
+-	0x1c2cc: 0x6c97bc20, 0x1c2cd: 0x6cfcc420, 0x1c2ce: 0x6cf61e20, 0x1c2cf: 0x6c7dd420,
+-	0x1c2d0: 0x6c7f4820, 0x1c2d1: 0x6c659820, 0x1c2d2: 0x6ccd4e20, 0x1c2d3: 0x6ce50420,
+-	0x1c2d4: 0x6c4bfc20, 0x1c2d5: 0x6ced2c20, 0x1c2d6: 0x6c839820, 0x1c2d7: 0x6cd39c20,
+-	0x1c2d8: 0x6cbf4020, 0x1c2d9: 0x6c8b1820, 0x1c2da: 0x6d0b3020, 0x1c2db: 0x6c6ec820,
+-	0x1c2dc: 0x6d32d420, 0x1c2dd: 0x6c83ea20, 0x1c2de: 0x6c7f4a20, 0x1c2df: 0x6cdc4c20,
+-	0x1c2e0: 0x6c737420, 0x1c2e1: 0x6cd72820, 0x1c2e2: 0x6cdbca20, 0x1c2e3: 0x6c317420,
+-	0x1c2e4: 0x6c09d420, 0x1c2e5: 0x6cb0a620, 0x1c2e6: 0x6ca29c20, 0x1c2e7: 0x6c5cd420,
+-	0x1c2e8: 0x6ca6ae20, 0x1c2e9: 0x6c926c20, 0x1c2ea: 0x6d17f220, 0x1c2eb: 0x6c6aec20,
+-	0x1c2ec: 0x6c113620, 0x1c2ed: 0x6d38ea20, 0x1c2ee: 0x6d217220, 0x1c2ef: 0x6c5cd620,
+-	0x1c2f0: 0x6c96c620, 0x1c2f1: 0x6cfa4420, 0x1c2f2: 0x6d040420, 0x1c2f3: 0x6c5ada20,
+-	0x1c2f4: 0x6c4c0220, 0x1c2f5: 0x6d290a20, 0x1c2f6: 0x6c218620, 0x1c2f7: 0x6c64ba20,
+-	0x1c2f8: 0x6c9a9e20, 0x1c2f9: 0x6c322620, 0x1c2fa: 0x6c541e20, 0x1c2fb: 0x6d07b420,
+-	0x1c2fc: 0x6ce53c20, 0x1c2fd: 0x6c7c9220, 0x1c2fe: 0x6c42ce20, 0x1c2ff: 0x6cc8da20,
+-	// Block 0x70c, offset 0x1c300
+-	0x1c300: 0x6c99a020, 0x1c301: 0x6d071420, 0x1c302: 0x6c381e20, 0x1c303: 0x6cf30820,
+-	0x1c304: 0x6c9e7820, 0x1c305: 0x6c1e2e20, 0x1c306: 0x6c7d0620, 0x1c307: 0x6c9c3220,
+-	0x1c308: 0x6cf25e20, 0x1c309: 0x6c7a0020, 0x1c30a: 0x6c298420, 0x1c30b: 0x6c188220,
+-	0x1c30c: 0x6c782420, 0x1c30d: 0x6cda2420, 0x1c30e: 0x6cf97620, 0x1c30f: 0x6cbf5020,
+-	0x1c310: 0x6ca15420, 0x1c311: 0x6ca01620, 0x1c312: 0x6c977220, 0x1c313: 0x6cd72c20,
+-	0x1c314: 0x6d2b0420, 0x1c315: 0x6d2f4420, 0x1c316: 0x6d18a620, 0x1c317: 0x6c2dde20,
+-	0x1c318: 0x6c79c420, 0x1c319: 0x6ca15620, 0x1c31a: 0x6cd75c20, 0x1c31b: 0x6c235620,
+-	0x1c31c: 0x6c907820, 0x1c31d: 0x6c1ad020, 0x1c31e: 0x6c977820, 0x1c31f: 0x6cb19a20,
+-	0x1c320: 0x6c199420, 0x1c321: 0x6c4b1a20, 0x1c322: 0x6c9b3a20, 0x1c323: 0x6c596c20,
+-	0x1c324: 0x6cc8f220, 0x1c325: 0x6cb1d420, 0x1c326: 0x6cf6f020, 0x1c327: 0x6cbc0220,
+-	0x1c328: 0x6cb45a20, 0x1c329: 0x6d3a8420, 0x1c32a: 0x6c2aea20, 0x1c32b: 0x6cd07e20,
+-	0x1c32c: 0x6cd76020, 0x1c32d: 0x6c8a7c20, 0x1c32e: 0x6c185020, 0x1c32f: 0x6cfbac20,
+-	0x1c330: 0x6c771220, 0x1c331: 0x6d132a20, 0x1c332: 0x6d074820, 0x1c333: 0x6ce79220,
+-	0x1c334: 0x6ca1ea20, 0x1c335: 0x6c8be620, 0x1c336: 0x6c4b7e20, 0x1c337: 0x6c66e020,
+-	0x1c338: 0x6d136420, 0x1c339: 0x6c00f420, 0x1c33a: 0x6c5c6a20, 0x1c33b: 0x6d2dac20,
+-	0x1c33c: 0x6c65f220, 0x1c33d: 0x6c47e620, 0x1c33e: 0x6d2fea20, 0x1c33f: 0x6cc1e420,
+-	// Block 0x70d, offset 0x1c340
+-	0x1c340: 0x6c9a3420, 0x1c341: 0x6c1e3620, 0x1c342: 0x6ccb0620, 0x1c343: 0x6ca94c20,
+-	0x1c344: 0x6d09c020, 0x1c345: 0x6d123e20, 0x1c346: 0x6c5e1820, 0x1c347: 0x6c9b7020,
+-	0x1c348: 0x6c9de620, 0x1c349: 0x6cb22020, 0x1c34a: 0x6c9de820, 0x1c34b: 0x6c870220,
+-	0x1c34c: 0x6c7c1420, 0x1c34d: 0x6c750020, 0x1c34e: 0x6d07e220, 0x1c34f: 0x6c9dee20,
+-	0x1c350: 0x6c5e4a20, 0x1c351: 0x6c919220, 0x1c352: 0x6c9b8e20, 0x1c353: 0x6c8fe420,
+-	0x1c354: 0x6c49bc20, 0x1c355: 0x6c97d620, 0x1c356: 0x6cf82e20, 0x1c357: 0x6c1f9020,
+-	0x1c358: 0x6ce19620, 0x1c359: 0x6c771c20, 0x1c35a: 0x6d3a9620, 0x1c35b: 0x6c98c220,
+-	0x1c35c: 0x6c6c3220, 0x1c35d: 0x6c8ba620, 0x1c35e: 0x6d234a20, 0x1c35f: 0x6cd78420,
+-	0x1c360: 0x6d2ad220, 0x1c361: 0x6c752c20, 0x1c362: 0x6cd2a820, 0x1c363: 0x6d15c020,
+-	0x1c364: 0x6cd04820, 0x1c365: 0x6d339c20, 0x1c366: 0x6c53f020, 0x1c367: 0x6cd04e20,
+-	0x1c368: 0x6d1ce020, 0x1c369: 0x6c72d420, 0x1c36a: 0x6d387820, 0x1c36b: 0x6c68e820,
+-	0x1c36c: 0x6c25e220, 0x1c36d: 0x6c32ae20, 0x1c36e: 0x6c006820, 0x1c36f: 0x6c695020,
+-	0x1c370: 0x6d2b9820, 0x1c371: 0x6d265c20, 0x1c372: 0x6c03ce20, 0x1c373: 0x6cd22c20,
+-	0x1c374: 0x6c2f9420, 0x1c375: 0x6cb73a20, 0x1c376: 0x6c5e8620, 0x1c377: 0x6d3eee20,
+-	0x1c378: 0x6c417c20, 0x1c379: 0x6cf4ba20, 0x1c37a: 0x6d302020, 0x1c37b: 0x6c7a2a20,
+-	0x1c37c: 0x6c426420, 0x1c37d: 0x6cf84c20, 0x1c37e: 0x6c388820, 0x1c37f: 0x6c7be620,
+-	// Block 0x70e, offset 0x1c380
+-	0x1c380: 0x6c295820, 0x1c381: 0x6c969220, 0x1c382: 0x6ccbd220, 0x1c383: 0x6c27c420,
+-	0x1c384: 0x6c740220, 0x1c385: 0x6c85ac20, 0x1c386: 0x6c3d4e20, 0x1c387: 0x6c9f3e20,
+-	0x1c388: 0x6c35b020, 0x1c389: 0x6c5da620, 0x1c38a: 0x6c772820, 0x1c38b: 0x6d350620,
+-	0x1c38c: 0x6cb75c20, 0x1c38d: 0x6c76c420, 0x1c38e: 0x6c6bd020, 0x1c38f: 0x6c0d2a20,
+-	0x1c390: 0x6c35e020, 0x1c391: 0x6d0b8820, 0x1c392: 0x6caf4e20, 0x1c393: 0x6d302420,
+-	0x1c394: 0x6d0c7820, 0x1c395: 0x6cdc2a20, 0x1c396: 0x6d3b7820, 0x1c397: 0x6c17d220,
+-	0x1c398: 0x6c33e020, 0x1c399: 0x6cac3c20, 0x1c39a: 0x6d0e4a20, 0x1c39b: 0x6c6d7e20,
+-	0x1c39c: 0x6c3c2a20, 0x1c39d: 0x6c381020, 0x1c39e: 0x6ca0f820, 0x1c39f: 0x6d2c7820,
+-	0x1c3a0: 0x6c707020, 0x1c3a1: 0x6d22f620, 0x1c3a2: 0x6c77f020, 0x1c3a3: 0x6ceb0a20,
+-	0x1c3a4: 0x6ceb0c20, 0x1c3a5: 0x6c2bec20, 0x1c3a6: 0x6d2d3c20, 0x1c3a7: 0x6d314220,
+-	0x1c3a8: 0x6c35fc20, 0x1c3a9: 0x6c3e3820, 0x1c3aa: 0x6ca23e20, 0x1c3ab: 0x6d3ad820,
+-	0x1c3ac: 0x6c7e5c20, 0x1c3ad: 0x6c0aee20, 0x1c3ae: 0x6caa5620, 0x1c3af: 0x6cb25220,
+-	0x1c3b0: 0x6cae6020, 0x1c3b1: 0x6c8cce20, 0x1c3b2: 0x6cad8a20, 0x1c3b3: 0x6c821e20,
+-	0x1c3b4: 0x6cb37c20, 0x1c3b5: 0x6c0e6220, 0x1c3b6: 0x6cb37e20, 0x1c3b7: 0x6ccfd020,
+-	0x1c3b8: 0x6d28b020, 0x1c3b9: 0x6c009820, 0x1c3ba: 0x6c85d620, 0x1c3bb: 0x6c8f8020,
+-	0x1c3bc: 0x6ce73a20, 0x1c3bd: 0x6d1e8420, 0x1c3be: 0x6c85d820, 0x1c3bf: 0x6c7c2a20,
+-	// Block 0x70f, offset 0x1c3c0
+-	0x1c3c0: 0x6c1ed820, 0x1c3c1: 0x6c793620, 0x1c3c2: 0x6cc2e420, 0x1c3c3: 0x6d399c20,
+-	0x1c3c4: 0x6c7b9c20, 0x1c3c5: 0x6c4a5a20, 0x1c3c6: 0x6c361420, 0x1c3c7: 0x6ca4a620,
+-	0x1c3c8: 0x6cb86420, 0x1c3c9: 0x6c924420, 0x1c3ca: 0x6cefb220, 0x1c3cb: 0x6c009a20,
+-	0x1c3cc: 0x6c448420, 0x1c3cd: 0x6cfcb620, 0x1c3ce: 0x6d03e220, 0x1c3cf: 0x6d0c8a20,
+-	0x1c3d0: 0x6c307420, 0x1c3d1: 0x6cae6c20, 0x1c3d2: 0x6cf5fc20, 0x1c3d3: 0x6c81f220,
+-	0x1c3d4: 0x6c533c20, 0x1c3d5: 0x6cd78020, 0x1c3d6: 0x6cf9b020, 0x1c3d7: 0x6cbb7020,
+-	0x1c3d8: 0x6cbeea20, 0x1c3d9: 0x6cef0220, 0x1c3da: 0x6cbbdc20, 0x1c3db: 0x6d176820,
+-	0x1c3dc: 0x6c793e20, 0x1c3dd: 0x6cfec620, 0x1c3de: 0x6cc3c220, 0x1c3df: 0x6c162a20,
+-	0x1c3e0: 0x6c80c820, 0x1c3e1: 0x6c52ac20, 0x1c3e2: 0x6d213020, 0x1c3e3: 0x6cfec820,
+-	0x1c3e4: 0x6cf9c620, 0x1c3e5: 0x6c988e20, 0x1c3e6: 0x6c960220, 0x1c3e7: 0x6d1e3c20,
+-	0x1c3e8: 0x6c17dc20, 0x1c3e9: 0x6c182220, 0x1c3ea: 0x6cf2f620, 0x1c3eb: 0x6c8e5c20,
+-	0x1c3ec: 0x6d1d3c20, 0x1c3ed: 0x6c985a20, 0x1c3ee: 0x6cc3c420, 0x1c3ef: 0x6d0e7820,
+-	0x1c3f0: 0x6ccbf620, 0x1c3f1: 0x6c7dac20, 0x1c3f2: 0x6d234c20, 0x1c3f3: 0x6c1c2420,
+-	0x1c3f4: 0x6c57de20, 0x1c3f5: 0x6c91be20, 0x1c3f6: 0x6c190420, 0x1c3f7: 0x6c659a20,
+-	0x1c3f8: 0x6caaa820, 0x1c3f9: 0x6cd92620, 0x1c3fa: 0x6d3d6e20, 0x1c3fb: 0x6c794620,
+-	0x1c3fc: 0x6caeaa20, 0x1c3fd: 0x6d0c1420, 0x1c3fe: 0x6d3c9220, 0x1c3ff: 0x6c797e20,
+-	// Block 0x710, offset 0x1c400
+-	0x1c400: 0x6c19ec20, 0x1c401: 0x6cb5fc20, 0x1c402: 0x6d402220, 0x1c403: 0x6cbecc20,
+-	0x1c404: 0x6c8bbc20, 0x1c405: 0x6c757420, 0x1c406: 0x6c0e7e20, 0x1c407: 0x6c2fac20,
+-	0x1c408: 0x6c9f6420, 0x1c409: 0x6c2dce20, 0x1c40a: 0x6c64bc20, 0x1c40b: 0x6c51d020,
+-	0x1c40c: 0x6c926e20, 0x1c40d: 0x6c00ac20, 0x1c40e: 0x6cdc4e20, 0x1c40f: 0x6cc3d220,
+-	0x1c410: 0x6c837c20, 0x1c411: 0x6c06b020, 0x1c412: 0x6d1a7420, 0x1c413: 0x6c334c20,
+-	0x1c414: 0x6cf45220, 0x1c415: 0x6cb5fe20, 0x1c416: 0x6c951820, 0x1c417: 0x6ced2e20,
+-	0x1c418: 0x6c2d2020, 0x1c419: 0x6ca4b220, 0x1c41a: 0x6c073420, 0x1c41b: 0x6cb7a420,
+-	0x1c41c: 0x6c190620, 0x1c41d: 0x6cc87020, 0x1c41e: 0x6d0cb620, 0x1c41f: 0x6c2ed220,
+-	0x1c420: 0x6c2fb020, 0x1c421: 0x6c31a820, 0x1c422: 0x6ceb2e20, 0x1c423: 0x6c6b0c20,
+-	0x1c424: 0x6d1bc620, 0x1c425: 0x6c0b4420, 0x1c426: 0x6c78c620, 0x1c427: 0x6c0a0220,
+-	0x1c428: 0x6cf0b020, 0x1c429: 0x6cd79220, 0x1c42a: 0x6d318220, 0x1c42b: 0x6c32d420,
+-	0x1c42c: 0x6cf9de20, 0x1c42d: 0x6c297a20, 0x1c42e: 0x6ce35420, 0x1c42f: 0x6ca50c20,
+-	0x1c430: 0x6caf1420, 0x1c431: 0x6c65c420, 0x1c432: 0x6c2c8220, 0x1c433: 0x6ce0a220,
+-	0x1c434: 0x6c13f620, 0x1c435: 0x6ce54220, 0x1c436: 0x6cb7b420, 0x1c437: 0x6c341420,
+-	0x1c438: 0x6c3c5e20, 0x1c439: 0x6d08a420, 0x1c43a: 0x6cc3f020, 0x1c43b: 0x6cc3f220,
+-	0x1c43c: 0x6c96a020, 0x1c43d: 0x6c45a620, 0x1c43e: 0x6ca73820, 0x1c43f: 0x6cdb0820,
+-	// Block 0x711, offset 0x1c440
+-	0x1c440: 0x6c357820, 0x1c441: 0x6c225420, 0x1c442: 0x6c8e8820, 0x1c443: 0x6cd81a20,
+-	0x1c444: 0x6ce12620, 0x1c445: 0x6c058820, 0x1c446: 0x6c574620, 0x1c447: 0x6caf8620,
+-	0x1c448: 0x6ceff420, 0x1c449: 0x6cca8820, 0x1c44a: 0x6c82d220, 0x1c44b: 0x6c25c420,
+-	0x1c44c: 0x6ce4ba20, 0x1c44d: 0x6cf9e620, 0x1c44e: 0x6cf6aa20, 0x1c44f: 0x6c883e20,
+-	0x1c450: 0x6cac7020, 0x1c451: 0x6cef3020, 0x1c452: 0x6d27fc20, 0x1c453: 0x6c330e20,
+-	0x1c454: 0x6d307e20, 0x1c455: 0x6c782620, 0x1c456: 0x6c7e6020, 0x1c457: 0x6d3b8c20,
+-	0x1c458: 0x6cbed820, 0x1c459: 0x6c4be420, 0x1c45a: 0x6d3b9220, 0x1c45b: 0x6c152620,
+-	0x1c45c: 0x6cb7da20, 0x1c45d: 0x6c026c20, 0x1c45e: 0x6cae8620, 0x1c45f: 0x6c8f4020,
+-	0x1c460: 0x6c91de20, 0x1c461: 0x6c771420, 0x1c462: 0x6c209a20, 0x1c463: 0x6c190e20,
+-	0x1c464: 0x6d1afe20, 0x1c465: 0x6c82d820, 0x1c466: 0x6c0c1e20, 0x1c467: 0x6cb7dc20,
+-	0x1c468: 0x6ca07c20, 0x1c469: 0x6cb7de20, 0x1c46a: 0x6c24e820, 0x1c46b: 0x6d3fc220,
+-	0x1c46c: 0x6cbeda20, 0x1c46d: 0x6c21da20, 0x1c46e: 0x6c952a20, 0x1c46f: 0x6c5f5420,
+-	0x1c470: 0x6ccdbe20, 0x1c471: 0x6c817c20, 0x1c472: 0x6cc1c020, 0x1c473: 0x6d2b9a20,
+-	0x1c474: 0x6c2aec20, 0x1c475: 0x6c66e220, 0x1c476: 0x6cf8f220, 0x1c477: 0x6c8be820,
+-	0x1c478: 0x6c2fbe20, 0x1c479: 0x6ce01e20, 0x1c47a: 0x6c59fc20, 0x1c47b: 0x6cac7620,
+-	0x1c47c: 0x6d28ce20, 0x1c47d: 0x6cbbb820, 0x1c47e: 0x6c2b4820, 0x1c47f: 0x6c86aa20,
+-	// Block 0x712, offset 0x1c480
+-	0x1c480: 0x6c673e20, 0x1c481: 0x6c688220, 0x1c482: 0x6cf94a20, 0x1c483: 0x6d2f0e20,
+-	0x1c484: 0x6cbc0420, 0x1c485: 0x6c33b620, 0x1c486: 0x6c65f420, 0x1c487: 0x6d241220,
+-	0x1c488: 0x6d3cb420, 0x1c489: 0x6c518420, 0x1c48a: 0x6c78e020, 0x1c48b: 0x6d2b1420,
+-	0x1c48c: 0x6c826a20, 0x1c48d: 0x6c787220, 0x1c48e: 0x6c1ef620, 0x1c48f: 0x6d137020,
+-	0x1c490: 0x6cc40c20, 0x1c491: 0x6c299a20, 0x1c492: 0x6d161e20, 0x1c493: 0x6c678e20,
+-	0x1c494: 0x6caf9e20, 0x1c495: 0x6cafa020, 0x1c496: 0x6d243020, 0x1c497: 0x6cb1f420,
+-	0x1c498: 0x6c36d020, 0x1c499: 0x6c00fe20, 0x1c49a: 0x6c783e20, 0x1c49b: 0x6c652220,
+-	0x1c49c: 0x6d243220, 0x1c49d: 0x6cc88e20, 0x1c49e: 0x6c9b7220, 0x1c49f: 0x6cada020,
+-	0x1c4a0: 0x6c227820, 0x1c4a1: 0x6c0f9020, 0x1c4a2: 0x6d107c20, 0x1c4a3: 0x6c96e420,
+-	0x1c4a4: 0x6c10e620, 0x1c4a5: 0x6cfbc820, 0x1c4a6: 0x6c7c1620, 0x1c4a7: 0x6c828020,
+-	0x1c4a8: 0x6c82fe20, 0x1c4a9: 0x6d375420, 0x1c4aa: 0x6c870420, 0x1c4ab: 0x6c872e20,
+-	0x1c4ac: 0x6c38e420, 0x1c4ad: 0x6cc41c20, 0x1c4ae: 0x6cada620, 0x1c4af: 0x6d1c3020,
+-	0x1c4b0: 0x6c874a20, 0x1c4b1: 0x6c8fe620, 0x1c4b2: 0x6c8fe820, 0x1c4b3: 0x6ca19620,
+-	0x1c4b4: 0x6c0fc220, 0x1c4b5: 0x6cd6b420, 0x1c4b6: 0x6c49be20, 0x1c4b7: 0x6c800020,
+-	0x1c4b8: 0x6d298620, 0x1c4b9: 0x6d0d1820, 0x1c4ba: 0x6cd2f420, 0x1c4bb: 0x6cd2e620,
+-	0x1c4bc: 0x6c84f420, 0x1c4bd: 0x6cc61c20, 0x1c4be: 0x6ccf3620, 0x1c4bf: 0x6d268020,
+-	// Block 0x713, offset 0x1c4c0
+-	0x1c4c0: 0x6cd88420, 0x1c4c1: 0x6cb56820, 0x1c4c2: 0x6cdde220, 0x1c4c3: 0x6c96b420,
+-	0x1c4c4: 0x6d016420, 0x1c4c5: 0x6d109420, 0x1c4c6: 0x6cfa8020, 0x1c4c7: 0x6cb58820,
+-	0x1c4c8: 0x6cb58a20, 0x1c4c9: 0x6d34f820, 0x1c4ca: 0x6c07d820, 0x1c4cb: 0x6c333a20,
+-	0x1c4cc: 0x6d381820, 0x1c4cd: 0x6cc5d620, 0x1c4ce: 0x6d13cc20, 0x1c4cf: 0x6cd25420,
+-	0x1c4d0: 0x6d203020, 0x1c4d1: 0x6d35a820, 0x1c4d2: 0x6ce57a20, 0x1c4d3: 0x6c3e1e20,
+-	0x1c4d4: 0x6c3fc420, 0x1c4d5: 0x6c9d2e20, 0x1c4d6: 0x6d411420, 0x1c4d7: 0x6d33ac20,
+-	0x1c4d8: 0x6cdb9620, 0x1c4d9: 0x6c9a8420, 0x1c4da: 0x6d428620, 0x1c4db: 0x6cc0ec20,
+-	0x1c4dc: 0x6c567220, 0x1c4dd: 0x6d3ac620, 0x1c4de: 0x6cd03a20, 0x1c4df: 0x6cdc3020,
+-	0x1c4e0: 0x6c223020, 0x1c4e1: 0x6c147a20, 0x1c4e2: 0x6c9c3e20, 0x1c4e3: 0x6c939020,
+-	0x1c4e4: 0x6d223e20, 0x1c4e5: 0x6cfdbc20, 0x1c4e6: 0x6cf3c620, 0x1c4e7: 0x6ce55620,
+-	0x1c4e8: 0x6cb1ae20, 0x1c4e9: 0x6d3ada20, 0x1c4ea: 0x6c4aec20, 0x1c4eb: 0x6cf9ae20,
+-	0x1c4ec: 0x6d33c820, 0x1c4ed: 0x6c61f420, 0x1c4ee: 0x6c434620, 0x1c4ef: 0x6d314420,
+-	0x1c4f0: 0x6c434820, 0x1c4f1: 0x6cd71e20, 0x1c4f2: 0x6c6d0620, 0x1c4f3: 0x6cd0a020,
+-	0x1c4f4: 0x6c40f620, 0x1c4f5: 0x6c7daa20, 0x1c4f6: 0x6c2c4820, 0x1c4f7: 0x6c29d820,
+-	0x1c4f8: 0x6c5dc620, 0x1c4f9: 0x6ce22820, 0x1c4fa: 0x6cb5ee20, 0x1c4fb: 0x6c481620,
+-	0x1c4fc: 0x6c498a20, 0x1c4fd: 0x6d41b420, 0x1c4fe: 0x6c8d0820, 0x1c4ff: 0x6c925a20,
+-	// Block 0x714, offset 0x1c500
+-	0x1c500: 0x6c0de820, 0x1c501: 0x6c6d1a20, 0x1c502: 0x6c29da20, 0x1c503: 0x6d346620,
+-	0x1c504: 0x6c925820, 0x1c505: 0x6c14f820, 0x1c506: 0x6c06a620, 0x1c507: 0x6d30d820,
+-	0x1c508: 0x6c5aca20, 0x1c509: 0x6d1fd620, 0x1c50a: 0x6cf8a220, 0x1c50b: 0x6d19ee20,
+-	0x1c50c: 0x6d3e5420, 0x1c50d: 0x6c5dd420, 0x1c50e: 0x6d316e20, 0x1c50f: 0x6c3e9c20,
+-	0x1c510: 0x6d262420, 0x1c511: 0x6cf3d020, 0x1c512: 0x6cfc1820, 0x1c513: 0x6d0fca20,
+-	0x1c514: 0x6d33f420, 0x1c515: 0x6d13fc20, 0x1c516: 0x6c9a1220, 0x1c517: 0x6cd7f820,
+-	0x1c518: 0x6c2c6c20, 0x1c519: 0x6c077a20, 0x1c51a: 0x6d3d8220, 0x1c51b: 0x6d318420,
+-	0x1c51c: 0x6d1e5620, 0x1c51d: 0x6c606c20, 0x1c51e: 0x6c435220, 0x1c51f: 0x6ce11a20,
+-	0x1c520: 0x6cd80420, 0x1c521: 0x6c96d020, 0x1c522: 0x6cde7820, 0x1c523: 0x6c40b620,
+-	0x1c524: 0x6d07bc20, 0x1c525: 0x6cb63c20, 0x1c526: 0x6d241420, 0x1c527: 0x6cf81220,
+-	0x1c528: 0x6c5f3a20, 0x1c529: 0x6cd8e020, 0x1c52a: 0x6c152820, 0x1c52b: 0x6c28b420,
+-	0x1c52c: 0x6c4b8020, 0x1c52d: 0x6cdc7820, 0x1c52e: 0x6c853820, 0x1c52f: 0x6ca9d020,
+-	0x1c530: 0x6c9c8a20, 0x1c531: 0x6c29f820, 0x1c532: 0x6c86d620, 0x1c533: 0x6cc4ee20,
+-	0x1c534: 0x6d271620, 0x1c535: 0x6ce3b420, 0x1c536: 0x6d29c220, 0x1c537: 0x6c836420,
+-	0x1c538: 0x6cc74020, 0x1c539: 0x6d222e20, 0x1c53a: 0x6d20dc20, 0x1c53b: 0x6c83ae20,
+-	0x1c53c: 0x6d019820, 0x1c53d: 0x6cbd7620, 0x1c53e: 0x6c50b220, 0x1c53f: 0x6ce83c20,
+-	// Block 0x715, offset 0x1c540
+-	0x1c540: 0x6d052c20, 0x1c541: 0x6cd7c620, 0x1c542: 0x6cc56c20, 0x1c543: 0x6ce83e20,
+-	0x1c544: 0x6d3ef020, 0x1c545: 0x6c13c820, 0x1c546: 0x6c41cc20, 0x1c547: 0x6d16cc20,
+-	0x1c548: 0x6cfa8220, 0x1c549: 0x6c0dc620, 0x1c54a: 0x6ca6f620, 0x1c54b: 0x6cbfa620,
+-	0x1c54c: 0x6cbfa820, 0x1c54d: 0x6d37e820, 0x1c54e: 0x6c3bd420, 0x1c54f: 0x6c502220,
+-	0x1c550: 0x6d279020, 0x1c551: 0x6c77e620, 0x1c552: 0x6c9e8c20, 0x1c553: 0x6d33ae20,
+-	0x1c554: 0x6c6d9820, 0x1c555: 0x6c08c820, 0x1c556: 0x6d33b020, 0x1c557: 0x6d22e620,
+-	0x1c558: 0x6c9d3420, 0x1c559: 0x6c7a8a20, 0x1c55a: 0x6c04f420, 0x1c55b: 0x6caf5620,
+-	0x1c55c: 0x6ca5ce20, 0x1c55d: 0x6c85da20, 0x1c55e: 0x6d1f1a20, 0x1c55f: 0x6d409a20,
+-	0x1c560: 0x6caf5820, 0x1c561: 0x6c0edc20, 0x1c562: 0x6c8cd020, 0x1c563: 0x6ca0fc20,
+-	0x1c564: 0x6c1a8020, 0x1c565: 0x6ca6fe20, 0x1c566: 0x6cbd6620, 0x1c567: 0x6d0f5620,
+-	0x1c568: 0x6d423220, 0x1c569: 0x6d35c420, 0x1c56a: 0x6d33ca20, 0x1c56b: 0x6cd52420,
+-	0x1c56c: 0x6c721a20, 0x1c56d: 0x6d3ef620, 0x1c56e: 0x6c5d7220, 0x1c56f: 0x6c5ea820,
+-	0x1c570: 0x6c196220, 0x1c571: 0x6ce74220, 0x1c572: 0x6d35f820, 0x1c573: 0x6c5d7620,
+-	0x1c574: 0x6c511220, 0x1c575: 0x6d19ce20, 0x1c576: 0x6d3e2620, 0x1c577: 0x6d35fa20,
+-	0x1c578: 0x6c6a0220, 0x1c579: 0x6cc59420, 0x1c57a: 0x6c325020, 0x1c57b: 0x6d14e820,
+-	0x1c57c: 0x6d399e20, 0x1c57d: 0x6c5bb820, 0x1c57e: 0x6ca9ba20, 0x1c57f: 0x6c3ff420,
+-	// Block 0x716, offset 0x1c580
+-	0x1c580: 0x6cf62020, 0x1c581: 0x6c77aa20, 0x1c582: 0x6c80ca20, 0x1c583: 0x6c3d7420,
+-	0x1c584: 0x6d0a9020, 0x1c585: 0x6cd72020, 0x1c586: 0x6c939420, 0x1c587: 0x6c7dae20,
+-	0x1c588: 0x6c41da20, 0x1c589: 0x6c6db820, 0x1c58a: 0x6ce32e20, 0x1c58b: 0x6c1a0c20,
+-	0x1c58c: 0x6ce8b420, 0x1c58d: 0x6cce7020, 0x1c58e: 0x6cd72220, 0x1c58f: 0x6d0bc020,
+-	0x1c590: 0x6c951a20, 0x1c591: 0x6c927020, 0x1c592: 0x6c481c20, 0x1c593: 0x6d424420,
+-	0x1c594: 0x6cc59a20, 0x1c595: 0x6d3ce620, 0x1c596: 0x6c057c20, 0x1c597: 0x6c044a20,
+-	0x1c598: 0x6c5eec20, 0x1c599: 0x6d33f620, 0x1c59a: 0x6d366020, 0x1c59b: 0x6c7db420,
+-	0x1c59c: 0x6c837e20, 0x1c59d: 0x6caeac20, 0x1c59e: 0x6c780a20, 0x1c59f: 0x6c0dea20,
+-	0x1c5a0: 0x6c1dbe20, 0x1c5a1: 0x6d41b620, 0x1c5a2: 0x6d237420, 0x1c5a3: 0x6cda5220,
+-	0x1c5a4: 0x6c94ae20, 0x1c5a5: 0x6cfd8020, 0x1c5a6: 0x6d140620, 0x1c5a7: 0x6cf8b620,
+-	0x1c5a8: 0x6c0b4620, 0x1c5a9: 0x6c624820, 0x1c5aa: 0x6c3ec420, 0x1c5ab: 0x6cb0b020,
+-	0x1c5ac: 0x6cab0820, 0x1c5ad: 0x6c6a2c20, 0x1c5ae: 0x6d380420, 0x1c5af: 0x6d3fa820,
+-	0x1c5b0: 0x6d064e20, 0x1c5b1: 0x6c197e20, 0x1c5b2: 0x6c2a2220, 0x1c5b3: 0x6cf1e820,
+-	0x1c5b4: 0x6cfb8220, 0x1c5b5: 0x6d3e6820, 0x1c5b6: 0x6d23c820, 0x1c5b7: 0x6c626420,
+-	0x1c5b8: 0x6d072e20, 0x1c5b9: 0x6d31f420, 0x1c5ba: 0x6d36b820, 0x1c5bb: 0x6c2a2a20,
+-	0x1c5bc: 0x6c645420, 0x1c5bd: 0x6c5f1820, 0x1c5be: 0x6c431820, 0x1c5bf: 0x6c431a20,
+-	// Block 0x717, offset 0x1c5c0
+-	0x1c5c0: 0x6c47c420, 0x1c5c1: 0x6cc6a020, 0x1c5c2: 0x6cdc6020, 0x1c5c3: 0x6cc73c20,
+-	0x1c5c4: 0x6c627a20, 0x1c5c5: 0x6c775220, 0x1c5c6: 0x6ca2ac20, 0x1c5c7: 0x6c11dc20,
+-	0x1c5c8: 0x6c9a2620, 0x1c5c9: 0x6d370c20, 0x1c5ca: 0x6c624a20, 0x1c5cb: 0x6c92d620,
+-	0x1c5cc: 0x6cda5a20, 0x1c5cd: 0x6c5f3c20, 0x1c5ce: 0x6d1d0c20, 0x1c5cf: 0x6cf1f020,
+-	0x1c5d0: 0x6cbfc420, 0x1c5d1: 0x6ccb6020, 0x1c5d2: 0x6c51e620, 0x1c5d3: 0x6d18aa20,
+-	0x1c5d4: 0x6c59fe20, 0x1c5d5: 0x6cbce620, 0x1c5d6: 0x6c615620, 0x1c5d7: 0x6cdc8820,
+-	0x1c5d8: 0x6cff2020, 0x1c5d9: 0x6cb45e20, 0x1c5da: 0x6c688420, 0x1c5db: 0x6d3d0c20,
+-	0x1c5dc: 0x6d380c20, 0x1c5dd: 0x6d41e620, 0x1c5de: 0x6c93ba20, 0x1c5df: 0x6cdc8c20,
+-	0x1c5e0: 0x6ca9d420, 0x1c5e1: 0x6ccb7820, 0x1c5e2: 0x6c5c6c20, 0x1c5e3: 0x6cc4de20,
+-	0x1c5e4: 0x6cab1e20, 0x1c5e5: 0x6d243420, 0x1c5e6: 0x6cb1f820, 0x1c5e7: 0x6c62bc20,
+-	0x1c5e8: 0x6ce9ce20, 0x1c5e9: 0x6cf1f420, 0x1c5ea: 0x6c199e20, 0x1c5eb: 0x6c5e1a20,
+-	0x1c5ec: 0x6c7c1820, 0x1c5ed: 0x6c93c020, 0x1c5ee: 0x6c0c4c20, 0x1c5ef: 0x6ccba820,
+-	0x1c5f0: 0x6cc4f420, 0x1c5f1: 0x6d3d1620, 0x1c5f2: 0x6c84d420, 0x1c5f3: 0x6c24aa20,
+-	0x1c5f4: 0x6d08f220, 0x1c5f5: 0x6cebc420, 0x1c5f6: 0x6c6f5620, 0x1c5f7: 0x6cbefa20,
+-	0x1c5f8: 0x6cf59020, 0x1c5f9: 0x6cbefe20, 0x1c5fa: 0x6c796820, 0x1c5fb: 0x6d207a20,
+-	0x1c5fc: 0x6ccfc020, 0x1c5fd: 0x6c6e1a20, 0x1c5fe: 0x6d11f220, 0x1c5ff: 0x6c1fe020,
+-	// Block 0x718, offset 0x1c600
+-	0x1c600: 0x6d3cce20, 0x1c601: 0x6ce84420, 0x1c602: 0x6c814620, 0x1c603: 0x6cbca020,
+-	0x1c604: 0x6d2d2820, 0x1c605: 0x6d11a020, 0x1c606: 0x6c0b3020, 0x1c607: 0x6c05c420,
+-	0x1c608: 0x6d11a220, 0x1c609: 0x6c0ddc20, 0x1c60a: 0x6cebd420, 0x1c60b: 0x6d3a0820,
+-	0x1c60c: 0x6c699020, 0x1c60d: 0x6cbc3a20, 0x1c60e: 0x6c2e1020, 0x1c60f: 0x6cf36620,
+-	0x1c610: 0x6c4a5e20, 0x1c611: 0x6d10ea20, 0x1c612: 0x6d35fc20, 0x1c613: 0x6c205020,
+-	0x1c614: 0x6d120220, 0x1c615: 0x6ce5c220, 0x1c616: 0x6c69a020, 0x1c617: 0x6c205220,
+-	0x1c618: 0x6c6f1220, 0x1c619: 0x6cfeca20, 0x1c61a: 0x6c19f020, 0x1c61b: 0x6c79ec20,
+-	0x1c61c: 0x6c24ac20, 0x1c61d: 0x6cf29420, 0x1c61e: 0x6c289420, 0x1c61f: 0x6c7a4a20,
+-	0x1c620: 0x6c780c20, 0x1c621: 0x6d3d7020, 0x1c622: 0x6d05b420, 0x1c623: 0x6cda5420,
+-	0x1c624: 0x6c491c20, 0x1c625: 0x6c7c3e20, 0x1c626: 0x6c312420, 0x1c627: 0x6d3dfa20,
+-	0x1c628: 0x6d09a020, 0x1c629: 0x6cf29620, 0x1c62a: 0x6cebea20, 0x1c62b: 0x6d0bc620,
+-	0x1c62c: 0x6d217820, 0x1c62d: 0x6c726a20, 0x1c62e: 0x6cbf5220, 0x1c62f: 0x6d113a20,
+-	0x1c630: 0x6d113c20, 0x1c631: 0x6ce5cc20, 0x1c632: 0x6c177820, 0x1c633: 0x6d228020,
+-	0x1c634: 0x6ce4bc20, 0x1c635: 0x6c2e3e20, 0x1c636: 0x6c729220, 0x1c637: 0x6c8aa820,
+-	0x1c638: 0x6cf6ce20, 0x1c639: 0x6cf52220, 0x1c63a: 0x6c7c4420, 0x1c63b: 0x6c206220,
+-	0x1c63c: 0x6d2f7220, 0x1c63d: 0x6c7b7c20, 0x1c63e: 0x6c7b7420, 0x1c63f: 0x6c907420,
+-	// Block 0x719, offset 0x1c640
+-	0x1c640: 0x6c199c20, 0x1c641: 0x6c256c20, 0x1c642: 0x6cb18420, 0x1c643: 0x6d2a9420,
+-	0x1c644: 0x6c24ba20, 0x1c645: 0x6cbc6820, 0x1c646: 0x6cbf7820, 0x1c647: 0x6c314c20,
+-	0x1c648: 0x6d2a9e20, 0x1c649: 0x6c904620, 0x1c64a: 0x6cbd0a20, 0x1c64b: 0x6c856c20,
+-	0x1c64c: 0x6c1f0a20, 0x1c64d: 0x6cd40c20, 0x1c64e: 0x6c3fb820, 0x1c64f: 0x6cba9220,
+-	0x1c650: 0x6c1f1c20, 0x1c651: 0x6c531820, 0x1c652: 0x6cb59820, 0x1c653: 0x6c508620,
+-	0x1c654: 0x6cd18420, 0x1c655: 0x6c3c0820, 0x1c656: 0x6cd5b220, 0x1c657: 0x6c9eb020,
+-	0x1c658: 0x6cc24020, 0x1c659: 0x6d2e5220, 0x1c65a: 0x6d3adc20, 0x1c65b: 0x6c8cd420,
+-	0x1c65c: 0x6c8f8220, 0x1c65d: 0x6c0e1620, 0x1c65e: 0x6c6e6a20, 0x1c65f: 0x6c6e7e20,
+-	0x1c660: 0x6d2eb620, 0x1c661: 0x6c046620, 0x1c662: 0x6cd8c220, 0x1c663: 0x6c75c020,
+-	0x1c664: 0x6c534e20, 0x1c665: 0x6ce74a20, 0x1c666: 0x6cd95a20, 0x1c667: 0x6c6e8820,
+-	0x1c668: 0x6c2e2e20, 0x1c669: 0x6d17f820, 0x1c66a: 0x6cd5e820, 0x1c66b: 0x6c6e7820,
+-	0x1c66c: 0x6cc24c20, 0x1c66d: 0x6c6b1020, 0x1c66e: 0x6cb26020, 0x1c66f: 0x6c329e20,
+-	0x1c670: 0x6ccea620, 0x1c671: 0x6d3bac20, 0x1c672: 0x6c136220, 0x1c673: 0x6c2ab020,
+-	0x1c674: 0x6c259e20, 0x1c675: 0x6cec5a20, 0x1c676: 0x6c6ec020, 0x1c677: 0x6c76fa20,
+-	0x1c678: 0x6c6ec420, 0x1c679: 0x6d39f020, 0x1c67a: 0x6d39f620, 0x1c67b: 0x6c821a20,
+-	0x1c67c: 0x6cae9220, 0x1c67d: 0x6d20e020, 0x1c67e: 0x6c1b0e20, 0x1c67f: 0x6c418820,
+-	// Block 0x71a, offset 0x1c680
+-	0x1c680: 0x6c984220, 0x1c681: 0x6d39fe20, 0x1c682: 0x6cedb820, 0x1c683: 0x6c321220,
+-	0x1c684: 0x6c5eac20, 0x1c685: 0x6cff7420, 0x1c686: 0x6c03f020, 0x1c687: 0x6cdb9820,
+-	0x1c688: 0x6c5ffc20, 0x1c689: 0x6cbdce20, 0x1c68a: 0x6d2faa20, 0x1c68b: 0x6cdce820,
+-	0x1c68c: 0x6d0b2020, 0x1c68d: 0x6d3c7e20, 0x1c68e: 0x6d255220, 0x1c68f: 0x6c568420,
+-	0x1c690: 0x6c4f6820, 0x1c691: 0x6cffe220, 0x1c692: 0x6c132e20, 0x1c693: 0x6c096c20,
+-	0x1c694: 0x6c08d020, 0x1c695: 0x6c658020, 0x1c696: 0x6d15de20, 0x1c697: 0x6c2ffc20,
+-	0x1c698: 0x6ccce220, 0x1c699: 0x6cd0fe20, 0x1c69a: 0x6c264820, 0x1c69b: 0x6c2b6c20,
+-	0x1c69c: 0x6d3a0e20, 0x1c69d: 0x6ca33420, 0x1c69e: 0x6c1aac20, 0x1c69f: 0x6c470620,
+-	0x1c6a0: 0x6c85f620, 0x1c6a1: 0x6cbcba20, 0x1c6a2: 0x6c9faa20, 0x1c6a3: 0x6c05ae20,
+-	0x1c6a4: 0x6ce58220, 0x1c6a5: 0x6cd8b620, 0x1c6a6: 0x6c3e5820, 0x1c6a7: 0x6c12de20,
+-	0x1c6a8: 0x6c07b420, 0x1c6a9: 0x6cae1a20, 0x1c6aa: 0x6c26a020, 0x1c6ab: 0x6d3f0620,
+-	0x1c6ac: 0x6c2c4a20, 0x1c6ad: 0x6c8cee20, 0x1c6ae: 0x6d2ac420, 0x1c6af: 0x6caa4220,
+-	0x1c6b0: 0x6c3e5a20, 0x1c6b1: 0x6c467e20, 0x1c6b2: 0x6c389620, 0x1c6b3: 0x6c634e20,
+-	0x1c6b4: 0x6c41d820, 0x1c6b5: 0x6c394820, 0x1c6b6: 0x6cd2cc20, 0x1c6b7: 0x6c993820,
+-	0x1c6b8: 0x6cb35620, 0x1c6b9: 0x6ce45020, 0x1c6ba: 0x6c648a20, 0x1c6bb: 0x6cbf1820,
+-	0x1c6bc: 0x6c8f8a20, 0x1c6bd: 0x6c9fe420, 0x1c6be: 0x6c0af020, 0x1c6bf: 0x6c960420,
+-	// Block 0x71b, offset 0x1c6c0
+-	0x1c6c0: 0x6c4b4c20, 0x1c6c1: 0x6cc10c20, 0x1c6c2: 0x6c1b2620, 0x1c6c3: 0x6d19e220,
+-	0x1c6c4: 0x6d120820, 0x1c6c5: 0x6cfc0e20, 0x1c6c6: 0x6c08e220, 0x1c6c7: 0x6cbf1a20,
+-	0x1c6c8: 0x6c7dfa20, 0x1c6c9: 0x6c2acc20, 0x1c6ca: 0x6cff8c20, 0x1c6cb: 0x6c6c4620,
+-	0x1c6cc: 0x6cc2f420, 0x1c6cd: 0x6cdcec20, 0x1c6ce: 0x6cc7ae20, 0x1c6cf: 0x6c381420,
+-	0x1c6d0: 0x6c7b9e20, 0x1c6d1: 0x6d3af620, 0x1c6d2: 0x6ce7b820, 0x1c6d3: 0x6c5ed820,
+-	0x1c6d4: 0x6c26a820, 0x1c6d5: 0x6c4f7a20, 0x1c6d6: 0x6c12ee20, 0x1c6d7: 0x6d383020,
+-	0x1c6d8: 0x6c79ee20, 0x1c6d9: 0x6c7f0e20, 0x1c6da: 0x6c09a820, 0x1c6db: 0x6ccc8a20,
+-	0x1c6dc: 0x6c28fe20, 0x1c6dd: 0x6d32c820, 0x1c6de: 0x6c12fa20, 0x1c6df: 0x6c3d7e20,
+-	0x1c6e0: 0x6d27b420, 0x1c6e1: 0x6ce8c620, 0x1c6e2: 0x6cabd820, 0x1c6e3: 0x6c83ec20,
+-	0x1c6e4: 0x6c80d020, 0x1c6e5: 0x6c71ba20, 0x1c6e6: 0x6c495820, 0x1c6e7: 0x6c65b020,
+-	0x1c6e8: 0x6c4e1e20, 0x1c6e9: 0x6ce75620, 0x1c6ea: 0x6cf9d620, 0x1c6eb: 0x6d366220,
+-	0x1c6ec: 0x6c1a0e20, 0x1c6ed: 0x6cdb9a20, 0x1c6ee: 0x6cd39e20, 0x1c6ef: 0x6d3b0c20,
+-	0x1c6f0: 0x6d424620, 0x1c6f1: 0x6cffb020, 0x1c6f2: 0x6cce7620, 0x1c6f3: 0x6ce67620,
+-	0x1c6f4: 0x6c12fc20, 0x1c6f5: 0x6d0c9e20, 0x1c6f6: 0x6c435020, 0x1c6f7: 0x6c7b2c20,
+-	0x1c6f8: 0x6c41a020, 0x1c6f9: 0x6c1dc020, 0x1c6fa: 0x6c7c2e20, 0x1c6fb: 0x6c42aa20,
+-	0x1c6fc: 0x6d27b620, 0x1c6fd: 0x6cab2a20, 0x1c6fe: 0x6cb8f420, 0x1c6ff: 0x6cffb220,
+-	// Block 0x71c, offset 0x1c700
+-	0x1c700: 0x6c65b220, 0x1c701: 0x6cb3de20, 0x1c702: 0x6c7f1c20, 0x1c703: 0x6d405c20,
+-	0x1c704: 0x6c08ec20, 0x1c705: 0x6c0a0420, 0x1c706: 0x6c0a0620, 0x1c707: 0x6c448c20,
+-	0x1c708: 0x6cdf3020, 0x1c709: 0x6c48e020, 0x1c70a: 0x6d209420, 0x1c70b: 0x6c64cc20,
+-	0x1c70c: 0x6c2a2420, 0x1c70d: 0x6c472420, 0x1c70e: 0x6c1b4420, 0x1c70f: 0x6d32e220,
+-	0x1c710: 0x6cbed220, 0x1c711: 0x6ccc6820, 0x1c712: 0x6d38ec20, 0x1c713: 0x6c928e20,
+-	0x1c714: 0x6c0f3020, 0x1c715: 0x6c5f0a20, 0x1c716: 0x6c8bc420, 0x1c717: 0x6cdb9e20,
+-	0x1c718: 0x6c75d420, 0x1c719: 0x6c3ec820, 0x1c71a: 0x6d2c4220, 0x1c71b: 0x6c472620,
+-	0x1c71c: 0x6c798620, 0x1c71d: 0x6cb9b220, 0x1c71e: 0x6cb90a20, 0x1c71f: 0x6c75d620,
+-	0x1c720: 0x6c20dc20, 0x1c721: 0x6c495a20, 0x1c722: 0x6d250420, 0x1c723: 0x6c130820,
+-	0x1c724: 0x6d40cc20, 0x1c725: 0x6c0fe620, 0x1c726: 0x6d2ae420, 0x1c727: 0x6cbcd620,
+-	0x1c728: 0x6cebb020, 0x1c729: 0x6c954e20, 0x1c72a: 0x6c27ec20, 0x1c72b: 0x6cfef420,
+-	0x1c72c: 0x6cc92620, 0x1c72d: 0x6c66ba20, 0x1c72e: 0x6d07c020, 0x1c72f: 0x6c0b0020,
+-	0x1c730: 0x6cdcfc20, 0x1c731: 0x6cfd8620, 0x1c732: 0x6cfc2420, 0x1c733: 0x6cb2c620,
+-	0x1c734: 0x6d318c20, 0x1c735: 0x6d039420, 0x1c736: 0x6c559420, 0x1c737: 0x6d154a20,
+-	0x1c738: 0x6d3b1420, 0x1c739: 0x6d265820, 0x1c73a: 0x6c211020, 0x1c73b: 0x6c93f620,
+-	0x1c73c: 0x6cf37e20, 0x1c73d: 0x6c303820, 0x1c73e: 0x6cd79a20, 0x1c73f: 0x6c609020,
+-	// Block 0x71d, offset 0x1c740
+-	0x1c740: 0x6c6af220, 0x1c741: 0x6c59ee20, 0x1c742: 0x6d039620, 0x1c743: 0x6c9aa820,
+-	0x1c744: 0x6c396a20, 0x1c745: 0x6c200a20, 0x1c746: 0x6d3bde20, 0x1c747: 0x6cb0fc20,
+-	0x1c748: 0x6c3c6220, 0x1c749: 0x6d3a2820, 0x1c74a: 0x6c59f020, 0x1c74b: 0x6cbce020,
+-	0x1c74c: 0x6c542420, 0x1c74d: 0x6cbfbe20, 0x1c74e: 0x6c9e9a20, 0x1c74f: 0x6cba7620,
+-	0x1c750: 0x6c483c20, 0x1c751: 0x6c7d1020, 0x1c752: 0x6cd41c20, 0x1c753: 0x6c90f420,
+-	0x1c754: 0x6d27c820, 0x1c755: 0x6c517020, 0x1c756: 0x6ce13420, 0x1c757: 0x6d26ee20,
+-	0x1c758: 0x6c1d7e20, 0x1c759: 0x6c42de20, 0x1c75a: 0x6c3a7020, 0x1c75b: 0x6cc92e20,
+-	0x1c75c: 0x6d32f420, 0x1c75d: 0x6c465e20, 0x1c75e: 0x6ca87220, 0x1c75f: 0x6cba7e20,
+-	0x1c760: 0x6cffbc20, 0x1c761: 0x6c24b420, 0x1c762: 0x6c903820, 0x1c763: 0x6caec620,
+-	0x1c764: 0x6c322e20, 0x1c765: 0x6c867e20, 0x1c766: 0x6c0a5420, 0x1c767: 0x6d3d9e20,
+-	0x1c768: 0x6c1ea820, 0x1c769: 0x6ccc9020, 0x1c76a: 0x6c1b5220, 0x1c76b: 0x6d3b2c20,
+-	0x1c76c: 0x6cbada20, 0x1c76d: 0x6c8fae20, 0x1c76e: 0x6c7fb620, 0x1c76f: 0x6c64fa20,
+-	0x1c770: 0x6c10ba20, 0x1c771: 0x6c844220, 0x1c772: 0x6c5c5820, 0x1c773: 0x6c0a5620,
+-	0x1c774: 0x6c2b9020, 0x1c775: 0x6c236420, 0x1c776: 0x6d0c3620, 0x1c777: 0x6caf2020,
+-	0x1c778: 0x6c11e020, 0x1c779: 0x6d3be620, 0x1c77a: 0x6cb02220, 0x1c77b: 0x6cb19e20,
+-	0x1c77c: 0x6c30c820, 0x1c77d: 0x6d243620, 0x1c77e: 0x6c9ef820, 0x1c77f: 0x6ce96020,
+-	// Block 0x71e, offset 0x1c780
+-	0x1c780: 0x6d2b1020, 0x1c781: 0x6ccc9220, 0x1c782: 0x6c4b8420, 0x1c783: 0x6d156e20,
+-	0x1c784: 0x6c56cc20, 0x1c785: 0x6c15e620, 0x1c786: 0x6c7a0820, 0x1c787: 0x6c246820,
+-	0x1c788: 0x6cb2d620, 0x1c789: 0x6d2a9020, 0x1c78a: 0x6c5f5620, 0x1c78b: 0x6c4b1c20,
+-	0x1c78c: 0x6cdb3820, 0x1c78d: 0x6c90fc20, 0x1c78e: 0x6c131a20, 0x1c78f: 0x6c92e820,
+-	0x1c790: 0x6ca73e20, 0x1c791: 0x6cdd3820, 0x1c792: 0x6c24b620, 0x1c793: 0x6c2e5420,
+-	0x1c794: 0x6cdd4020, 0x1c795: 0x6c822a20, 0x1c796: 0x6c32dc20, 0x1c797: 0x6c89d020,
+-	0x1c798: 0x6cff2220, 0x1c799: 0x6c0f9420, 0x1c79a: 0x6c9da020, 0x1c79b: 0x6ccc9420,
+-	0x1c79c: 0x6c299c20, 0x1c79d: 0x6c8a3620, 0x1c79e: 0x6c280c20, 0x1c79f: 0x6c2d8e20,
+-	0x1c7a0: 0x6c3f9020, 0x1c7a1: 0x6c65f820, 0x1c7a2: 0x6c9fd020, 0x1c7a3: 0x6c7d2820,
+-	0x1c7a4: 0x6c27a020, 0x1c7a5: 0x6c689820, 0x1c7a6: 0x6c2ab620, 0x1c7a7: 0x6c5a0c20,
+-	0x1c7a8: 0x6cdd0020, 0x1c7a9: 0x6c818220, 0x1c7aa: 0x6d295220, 0x1c7ab: 0x6cff3c20,
+-	0x1c7ac: 0x6c931e20, 0x1c7ad: 0x6cd3f620, 0x1c7ae: 0x6d295420, 0x1c7af: 0x6cb81c20,
+-	0x1c7b0: 0x6cac0a20, 0x1c7b1: 0x6cb81e20, 0x1c7b2: 0x6cac0c20, 0x1c7b3: 0x6c41f620,
+-	0x1c7b4: 0x6c72b220, 0x1c7b5: 0x6c328a20, 0x1c7b6: 0x6c930620, 0x1c7b7: 0x6d0cf220,
+-	0x1c7b8: 0x6c0fea20, 0x1c7b9: 0x6c291820, 0x1c7ba: 0x6cc9ec20, 0x1c7bb: 0x6d3b5e20,
+-	0x1c7bc: 0x6c8fca20, 0x1c7bd: 0x6cb94020, 0x1c7be: 0x6c888420, 0x1c7bf: 0x6c10cc20,
+-	// Block 0x71f, offset 0x1c7c0
+-	0x1c7c0: 0x6d396220, 0x1c7c1: 0x6c7f6e20, 0x1c7c2: 0x6cd42020, 0x1c7c3: 0x6c7fec20,
+-	0x1c7c4: 0x6c7d3420, 0x1c7c5: 0x6d21d620, 0x1c7c6: 0x6d270420, 0x1c7c7: 0x6c500020,
+-	0x1c7c8: 0x6d31a220, 0x1c7c9: 0x6cdf5020, 0x1c7ca: 0x6ce43e20, 0x1c7cb: 0x6ca8a420,
+-	0x1c7cc: 0x6c1e0420, 0x1c7cd: 0x6c60ec20, 0x1c7ce: 0x6d199820, 0x1c7cf: 0x6cb82020,
+-	0x1c7d0: 0x6ce2ca20, 0x1c7d1: 0x6d3c0020, 0x1c7d2: 0x6d396820, 0x1c7d3: 0x6c387020,
+-	0x1c7d4: 0x6cda3c20, 0x1c7d5: 0x6d396620, 0x1c7d6: 0x6cba9820, 0x1c7d7: 0x6d3de020,
+-	0x1c7d8: 0x6ce2d420, 0x1c7d9: 0x6c933a20, 0x1c7da: 0x6c919420, 0x1c7db: 0x6c662a20,
+-	0x1c7dc: 0x6cebbe20, 0x1c7dd: 0x6d1cd420, 0x1c7de: 0x6d248620, 0x1c7df: 0x6c7f7e20,
+-	0x1c7e0: 0x6c8ff420, 0x1c7e1: 0x6cbd1620, 0x1c7e2: 0x6c88a220, 0x1c7e3: 0x6c800a20,
+-	0x1c7e4: 0x6cb95c20, 0x1c7e5: 0x6d272020, 0x1c7e6: 0x6d37e420, 0x1c7e7: 0x6cc20e20,
+-	0x1c7e8: 0x6c88a420, 0x1c7e9: 0x6c0b2820, 0x1c7ea: 0x6c32ea20, 0x1c7eb: 0x6d415a20,
+-	0x1c7ec: 0x6c84d620, 0x1c7ed: 0x6cd86220, 0x1c7ee: 0x6c958e20, 0x1c7ef: 0x6d1cde20,
+-	0x1c7f0: 0x6d273820, 0x1c7f1: 0x6d3df220, 0x1c7f2: 0x6d24ae20, 0x1c7f3: 0x6c9cd620,
+-	0x1c7f4: 0x6c2b5820, 0x1c7f5: 0x6c388a20, 0x1c7f6: 0x6ccfb020, 0x1c7f7: 0x6d302820,
+-	0x1c7f8: 0x6ccfc220, 0x1c7f9: 0x6caa7220, 0x1c7fa: 0x6c50e220, 0x1c7fb: 0x6c832420,
+-	0x1c7fc: 0x6cfa8e20, 0x1c7fd: 0x6d3efa20, 0x1c7fe: 0x6ca5c620, 0x1c7ff: 0x6c25b420,
+-	// Block 0x720, offset 0x1c800
+-	0x1c800: 0x6d2f4620, 0x1c801: 0x6cb8c020, 0x1c802: 0x6d2d5a20, 0x1c803: 0x6c08d220,
+-	0x1c804: 0x6c04c620, 0x1c805: 0x6cf4d820, 0x1c806: 0x6ccbde20, 0x1c807: 0x6c772a20,
+-	0x1c808: 0x6cc77620, 0x1c809: 0x6c3bba20, 0x1c80a: 0x6c096e20, 0x1c80b: 0x6c252620,
+-	0x1c80c: 0x6d1b9a20, 0x1c80d: 0x6d304020, 0x1c80e: 0x6c1b9020, 0x1c80f: 0x6cdf8620,
+-	0x1c810: 0x6c56fa20, 0x1c811: 0x6c033c20, 0x1c812: 0x6c85f820, 0x1c813: 0x6c419620,
+-	0x1c814: 0x6c722e20, 0x1c815: 0x6cb38420, 0x1c816: 0x6ca10c20, 0x1c817: 0x6c241020,
+-	0x1c818: 0x6d2d6e20, 0x1c819: 0x6d392220, 0x1c81a: 0x6c83c620, 0x1c81b: 0x6cdaac20,
+-	0x1c81c: 0x6ce5d620, 0x1c81d: 0x6c85fa20, 0x1c81e: 0x6cf62220, 0x1c81f: 0x6cdab620,
+-	0x1c820: 0x6c535020, 0x1c821: 0x6ce74c20, 0x1c822: 0x6d3e4420, 0x1c823: 0x6c12e020,
+-	0x1c824: 0x6d26bc20, 0x1c825: 0x6d388620, 0x1c826: 0x6c8bb820, 0x1c827: 0x6d3c1a20,
+-	0x1c828: 0x6c042220, 0x1c829: 0x6c81f620, 0x1c82a: 0x6c3bda20, 0x1c82b: 0x6c375820,
+-	0x1c82c: 0x6cc10e20, 0x1c82d: 0x6c521620, 0x1c82e: 0x6c895a20, 0x1c82f: 0x6cfcd820,
+-	0x1c830: 0x6c3ea020, 0x1c831: 0x6c895c20, 0x1c832: 0x6c11fa20, 0x1c833: 0x6c6dc220,
+-	0x1c834: 0x6c851c20, 0x1c835: 0x6d26c620, 0x1c836: 0x6c929020, 0x1c837: 0x6c714020,
+-	0x1c838: 0x6cb61e20, 0x1c839: 0x6c254e20, 0x1c83a: 0x6c045220, 0x1c83b: 0x6d2ece20,
+-	0x1c83c: 0x6c8bc620, 0x1c83d: 0x6d402620, 0x1c83e: 0x6c6dcc20, 0x1c83f: 0x6c4cc420,
+-	// Block 0x721, offset 0x1c840
+-	0x1c840: 0x6c57e020, 0x1c841: 0x6cca2220, 0x1c842: 0x6cca2620, 0x1c843: 0x6ce12a20,
+-	0x1c844: 0x6c0b4c20, 0x1c845: 0x6cc75c20, 0x1c846: 0x6c9e5c20, 0x1c847: 0x6c542620,
+-	0x1c848: 0x6d065220, 0x1c849: 0x6d402a20, 0x1c84a: 0x6c56fe20, 0x1c84b: 0x6c66be20,
+-	0x1c84c: 0x6d294e20, 0x1c84d: 0x6c225e20, 0x1c84e: 0x6c843020, 0x1c84f: 0x6d021a20,
+-	0x1c850: 0x6c3da020, 0x1c851: 0x6cab1220, 0x1c852: 0x6c076020, 0x1c853: 0x6c47d020,
+-	0x1c854: 0x6d052820, 0x1c855: 0x6c42e020, 0x1c856: 0x6ce13620, 0x1c857: 0x6cc0b220,
+-	0x1c858: 0x6c645620, 0x1c859: 0x6c126a20, 0x1c85a: 0x6d3c2420, 0x1c85b: 0x6ce14020,
+-	0x1c85c: 0x6c9c7c20, 0x1c85d: 0x6cca2c20, 0x1c85e: 0x6c3bf420, 0x1c85f: 0x6d2a2620,
+-	0x1c860: 0x6c775620, 0x1c861: 0x6c67fe20, 0x1c862: 0x6ca07e20, 0x1c863: 0x6cca3020,
+-	0x1c864: 0x6cca3220, 0x1c865: 0x6cab1c20, 0x1c866: 0x6cf70820, 0x1c867: 0x6c897420,
+-	0x1c868: 0x6c680820, 0x1c869: 0x6c7b4620, 0x1c86a: 0x6c0ffa20, 0x1c86b: 0x6c58b620,
+-	0x1c86c: 0x6cd63620, 0x1c86d: 0x6d403e20, 0x1c86e: 0x6cfd4020, 0x1c86f: 0x6cab2020,
+-	0x1c870: 0x6ce97020, 0x1c871: 0x6ca8b820, 0x1c872: 0x6c873020, 0x1c873: 0x6d42b220,
+-	0x1c874: 0x6c2bb820, 0x1c875: 0x6ca8ba20, 0x1c876: 0x6ce5e420, 0x1c877: 0x6c809820,
+-	0x1c878: 0x6c9d1a20, 0x1c879: 0x6cd7c020, 0x1c87a: 0x6c6f5820, 0x1c87b: 0x6cf83e20,
+-	0x1c87c: 0x6c456620, 0x1c87d: 0x6d331c20, 0x1c87e: 0x6c6f5e20, 0x1c87f: 0x6d201c20,
+-	// Block 0x722, offset 0x1c880
+-	0x1c880: 0x6c61b020, 0x1c881: 0x6c143a20, 0x1c882: 0x6d391020, 0x1c883: 0x6d09f020,
+-	0x1c884: 0x6d264a20, 0x1c885: 0x6c531c20, 0x1c886: 0x6d207e20, 0x1c887: 0x6c50e420,
+-	0x1c888: 0x6cecce20, 0x1c889: 0x6cc5d820, 0x1c88a: 0x6cf1d220, 0x1c88b: 0x6cf18c20,
+-	0x1c88c: 0x6cc03620, 0x1c88d: 0x6ca32820, 0x1c88e: 0x6d3e1c20, 0x1c88f: 0x6ce80c20,
+-	0x1c890: 0x6ca99020, 0x1c891: 0x6c3d1420, 0x1c892: 0x6c61d020, 0x1c893: 0x6cd4c020,
+-	0x1c894: 0x6c213c20, 0x1c895: 0x6caf5a20, 0x1c896: 0x6d323220, 0x1c897: 0x6ccbe020,
+-	0x1c898: 0x6c532e20, 0x1c899: 0x6d351220, 0x1c89a: 0x6c5ffe20, 0x1c89b: 0x6c3b2220,
+-	0x1c89c: 0x6d279e20, 0x1c89d: 0x6cc5de20, 0x1c89e: 0x6c283220, 0x1c89f: 0x6c6c4020,
+-	0x1c8a0: 0x6cda9420, 0x1c8a1: 0x6c39d220, 0x1c8a2: 0x6cdd5a20, 0x1c8a3: 0x6c252820,
+-	0x1c8a4: 0x6c6fb820, 0x1c8a5: 0x6d288c20, 0x1c8a6: 0x6c03f220, 0x1c8a7: 0x6c6c8c20,
+-	0x1c8a8: 0x6c3d6a20, 0x1c8a9: 0x6d35fe20, 0x1c8aa: 0x6c229820, 0x1c8ab: 0x6d3f1620,
+-	0x1c8ac: 0x6c1da620, 0x1c8ad: 0x6c533e20, 0x1c8ae: 0x6d288e20, 0x1c8af: 0x6c833420,
+-	0x1c8b0: 0x6cf87a20, 0x1c8b1: 0x6c3e5c20, 0x1c8b2: 0x6d019a20, 0x1c8b3: 0x6ccfe020,
+-	0x1c8b4: 0x6c0e6c20, 0x1c8b5: 0x6d3ae820, 0x1c8b6: 0x6cc0fc20, 0x1c8b7: 0x6c8cf020,
+-	0x1c8b8: 0x6d3aea20, 0x1c8b9: 0x6cced620, 0x1c8ba: 0x6c421e20, 0x1c8bb: 0x6d101420,
+-	0x1c8bc: 0x6c3e5e20, 0x1c8bd: 0x6ceb1820, 0x1c8be: 0x6d31d420, 0x1c8bf: 0x6c275e20,
+-	// Block 0x723, offset 0x1c8c0
+-	0x1c8c0: 0x6c1f3420, 0x1c8c1: 0x6cd1b420, 0x1c8c2: 0x6d37b620, 0x1c8c3: 0x6cfb4e20,
+-	0x1c8c4: 0x6d411a20, 0x1c8c5: 0x6c6ede20, 0x1c8c6: 0x6c04f820, 0x1c8c7: 0x6cc18c20,
+-	0x1c8c8: 0x6ca10e20, 0x1c8c9: 0x6cd5c620, 0x1c8ca: 0x6d41ac20, 0x1c8cb: 0x6c7c2c20,
+-	0x1c8cc: 0x6c6db020, 0x1c8cd: 0x6cc5f220, 0x1c8ce: 0x6c4f7c20, 0x1c8cf: 0x6d01b220,
+-	0x1c8d0: 0x6c6ad620, 0x1c8d1: 0x6d39a820, 0x1c8d2: 0x6c1db420, 0x1c8d3: 0x6c48b620,
+-	0x1c8d4: 0x6c042420, 0x1c8d5: 0x6c745420, 0x1c8d6: 0x6c7bf620, 0x1c8d7: 0x6c556220,
+-	0x1c8d8: 0x6c22c620, 0x1c8d9: 0x6c587820, 0x1c8da: 0x6c44d220, 0x1c8db: 0x6ce1c820,
+-	0x1c8dc: 0x6c6ad820, 0x1c8dd: 0x6c7a9a20, 0x1c8de: 0x6c68fc20, 0x1c8df: 0x6cc2f620,
+-	0x1c8e0: 0x6c411620, 0x1c8e1: 0x6c960620, 0x1c8e2: 0x6d089620, 0x1c8e3: 0x6c07ee20,
+-	0x1c8e4: 0x6cfcc620, 0x1c8e5: 0x6c3e8620, 0x1c8e6: 0x6c449420, 0x1c8e7: 0x6c307a20,
+-	0x1c8e8: 0x6cc67a20, 0x1c8e9: 0x6ce5d820, 0x1c8ea: 0x6d19e420, 0x1c8eb: 0x6c82c220,
+-	0x1c8ec: 0x6d01b420, 0x1c8ed: 0x6c736820, 0x1c8ee: 0x6d06e020, 0x1c8ef: 0x6c40f820,
+-	0x1c8f0: 0x6c2eae20, 0x1c8f1: 0x6ce7ba20, 0x1c8f2: 0x6cd7ea20, 0x1c8f3: 0x6c67e820,
+-	0x1c8f4: 0x6cfdc420, 0x1c8f5: 0x6c5bc820, 0x1c8f6: 0x6c745620, 0x1c8f7: 0x6d346820,
+-	0x1c8f8: 0x6c65b420, 0x1c8f9: 0x6c737620, 0x1c8fa: 0x6c1ac020, 0x1c8fb: 0x6c9e2c20,
+-	0x1c8fc: 0x6d31e820, 0x1c8fd: 0x6c939e20, 0x1c8fe: 0x6c1a1020, 0x1c8ff: 0x6cc07a20,
+-	// Block 0x724, offset 0x1c900
+-	0x1c900: 0x6cd4ec20, 0x1c901: 0x6c055020, 0x1c902: 0x6ce7bc20, 0x1c903: 0x6cfedc20,
+-	0x1c904: 0x6c588020, 0x1c905: 0x6cbd3620, 0x1c906: 0x6c451220, 0x1c907: 0x6d052620,
+-	0x1c908: 0x6ce34c20, 0x1c909: 0x6ce82e20, 0x1c90a: 0x6d00c020, 0x1c90b: 0x6c536420,
+-	0x1c90c: 0x6cf8a420, 0x1c90d: 0x6c3ea220, 0x1c90e: 0x6ce64620, 0x1c90f: 0x6cdbcc20,
+-	0x1c910: 0x6c335220, 0x1c911: 0x6c7db620, 0x1c912: 0x6c3d8020, 0x1c913: 0x6c6dc420,
+-	0x1c914: 0x6c56a620, 0x1c915: 0x6d33f820, 0x1c916: 0x6d0ca020, 0x1c917: 0x6c6f1c20,
+-	0x1c918: 0x6c3cb020, 0x1c919: 0x6c622020, 0x1c91a: 0x6d077420, 0x1c91b: 0x6cc60c20,
+-	0x1c91c: 0x6d3faa20, 0x1c91d: 0x6c187820, 0x1c91e: 0x6c34a420, 0x1c91f: 0x6c865020,
+-	0x1c920: 0x6c93ec20, 0x1c921: 0x6c896020, 0x1c922: 0x6c1dcc20, 0x1c923: 0x6cc36420,
+-	0x1c924: 0x6ccede20, 0x1c925: 0x6cb62020, 0x1c926: 0x6cb62220, 0x1c927: 0x6d3ce020,
+-	0x1c928: 0x6cb62420, 0x1c929: 0x6ced3420, 0x1c92a: 0x6cba6a20, 0x1c92b: 0x6cfcec20,
+-	0x1c92c: 0x6cd47420, 0x1c92d: 0x6cef2220, 0x1c92e: 0x6cb70e20, 0x1c92f: 0x6ce23020,
+-	0x1c930: 0x6ced3620, 0x1c931: 0x6c428c20, 0x1c932: 0x6cee3020, 0x1c933: 0x6c080420,
+-	0x1c934: 0x6d3cc620, 0x1c935: 0x6c113a20, 0x1c936: 0x6c4cc620, 0x1c937: 0x6c255020,
+-	0x1c938: 0x6c950420, 0x1c939: 0x6c8f1020, 0x1c93a: 0x6cb71020, 0x1c93b: 0x6d2e6e20,
+-	0x1c93c: 0x6c0a0820, 0x1c93d: 0x6c21cc20, 0x1c93e: 0x6c8d3c20, 0x1c93f: 0x6c9dca20,
+-	// Block 0x725, offset 0x1c940
+-	0x1c940: 0x6cb51420, 0x1c941: 0x6cbcd820, 0x1c942: 0x6ce4b420, 0x1c943: 0x6d3fac20,
+-	0x1c944: 0x6c4bd820, 0x1c945: 0x6d405e20, 0x1c946: 0x6cf67c20, 0x1c947: 0x6d3e6a20,
+-	0x1c948: 0x6d043220, 0x1c949: 0x6c899a20, 0x1c94a: 0x6c6ca420, 0x1c94b: 0x6c3a1220,
+-	0x1c94c: 0x6cc8a020, 0x1c94d: 0x6c9f7220, 0x1c94e: 0x6d239e20, 0x1c94f: 0x6d400420,
+-	0x1c950: 0x6c38ae20, 0x1c951: 0x6c93ee20, 0x1c952: 0x6d071620, 0x1c953: 0x6d1bd820,
+-	0x1c954: 0x6cce5620, 0x1c955: 0x6cb81820, 0x1c956: 0x6d073020, 0x1c957: 0x6cfd8820,
+-	0x1c958: 0x6c64dc20, 0x1c959: 0x6c78ce20, 0x1c95a: 0x6cfcfe20, 0x1c95b: 0x6cc87620,
+-	0x1c95c: 0x6c9dcc20, 0x1c95d: 0x6c5f1c20, 0x1c95e: 0x6c32d820, 0x1c95f: 0x6c1d1e20,
+-	0x1c960: 0x6c2c9420, 0x1c961: 0x6c9f7820, 0x1c962: 0x6c9e7c20, 0x1c963: 0x6d259c20,
+-	0x1c964: 0x6d01fe20, 0x1c965: 0x6c060e20, 0x1c966: 0x6cd82020, 0x1c967: 0x6cbfc020,
+-	0x1c968: 0x6c0b0220, 0x1c969: 0x6c58dc20, 0x1c96a: 0x6c44d820, 0x1c96b: 0x6c234620,
+-	0x1c96c: 0x6c9e3820, 0x1c96d: 0x6cf0c420, 0x1c96e: 0x6c403620, 0x1c96f: 0x6cf00620,
+-	0x1c970: 0x6ce7f420, 0x1c971: 0x6c465a20, 0x1c972: 0x6c9e9c20, 0x1c973: 0x6d00de20,
+-	0x1c974: 0x6c891220, 0x1c975: 0x6d3fb620, 0x1c976: 0x6c0bb620, 0x1c977: 0x6d284a20,
+-	0x1c978: 0x6d19fc20, 0x1c979: 0x6ce36820, 0x1c97a: 0x6c486c20, 0x1c97b: 0x6d36ea20,
+-	0x1c97c: 0x6d284c20, 0x1c97d: 0x6c198c20, 0x1c97e: 0x6c152020, 0x1c97f: 0x6c278c20,
+-	// Block 0x726, offset 0x1c980
+-	0x1c980: 0x6cf9ea20, 0x1c981: 0x6d259e20, 0x1c982: 0x6d400620, 0x1c983: 0x6d05da20,
+-	0x1c984: 0x6d1d6a20, 0x1c985: 0x6cf14420, 0x1c986: 0x6c44da20, 0x1c987: 0x6d07c220,
+-	0x1c988: 0x6d1c9c20, 0x1c989: 0x6c6d5220, 0x1c98a: 0x6d18ae20, 0x1c98b: 0x6d3ca220,
+-	0x1c98c: 0x6ca6c020, 0x1c98d: 0x6c053c20, 0x1c98e: 0x6c47c820, 0x1c98f: 0x6cac7220,
+-	0x1c990: 0x6d395420, 0x1c991: 0x6c64fc20, 0x1c992: 0x6c220a20, 0x1c993: 0x6cc31620,
+-	0x1c994: 0x6cd6e020, 0x1c995: 0x6d276620, 0x1c996: 0x6cf9f220, 0x1c997: 0x6c24ea20,
+-	0x1c998: 0x6cf6d220, 0x1c999: 0x6cc6a620, 0x1c99a: 0x6ce1ea20, 0x1c99b: 0x6c405420,
+-	0x1c99c: 0x6d27ca20, 0x1c99d: 0x6c188820, 0x1c99e: 0x6c432020, 0x1c99f: 0x6cc82820,
+-	0x1c9a0: 0x6c55b820, 0x1c9a1: 0x6d294620, 0x1c9a2: 0x6ce2b420, 0x1c9a3: 0x6cfd1020,
+-	0x1c9a4: 0x6cdb1e20, 0x1c9a5: 0x6d31fc20, 0x1c9a6: 0x6d403420, 0x1c9a7: 0x6ce1ec20,
+-	0x1c9a8: 0x6c5a8420, 0x1c9a9: 0x6c114a20, 0x1c9aa: 0x6c0a5820, 0x1c9ab: 0x6c3cf620,
+-	0x1c9ac: 0x6c246a20, 0x1c9ad: 0x6c844620, 0x1c9ae: 0x6cdd4220, 0x1c9af: 0x6d0ddc20,
+-	0x1c9b0: 0x6cf81820, 0x1c9b1: 0x6d403820, 0x1c9b2: 0x6c826420, 0x1c9b3: 0x6c739820,
+-	0x1c9b4: 0x6cba8220, 0x1c9b5: 0x6c980820, 0x1c9b6: 0x6d34a420, 0x1c9b7: 0x6c93bc20,
+-	0x1c9b8: 0x6ca2b220, 0x1c9b9: 0x6cb1a020, 0x1c9ba: 0x6c885220, 0x1c9bb: 0x6c9c8020,
+-	0x1c9bc: 0x6d08bc20, 0x1c9bd: 0x6d400a20, 0x1c9be: 0x6c5f5820, 0x1c9bf: 0x6ccd1220,
+-	// Block 0x727, offset 0x1c9c0
+-	0x1c9c0: 0x6cdc8e20, 0x1c9c1: 0x6c38ca20, 0x1c9c2: 0x6c940620, 0x1c9c3: 0x6c083020,
+-	0x1c9c4: 0x6d141e20, 0x1c9c5: 0x6ccac220, 0x1c9c6: 0x6ca1ec20, 0x1c9c7: 0x6d114c20,
+-	0x1c9c8: 0x6cbb4a20, 0x1c9c9: 0x6c5d0220, 0x1c9ca: 0x6cfd5a20, 0x1c9cb: 0x6c629a20,
+-	0x1c9cc: 0x6ccc8620, 0x1c9cd: 0x6d055220, 0x1c9ce: 0x6cc49420, 0x1c9cf: 0x6d08be20,
+-	0x1c9d0: 0x6cdca020, 0x1c9d1: 0x6cbbc020, 0x1c9d2: 0x6d2b9e20, 0x1c9d3: 0x6d427020,
+-	0x1c9d4: 0x6d341e20, 0x1c9d5: 0x6ccdca20, 0x1c9d6: 0x6cca3420, 0x1c9d7: 0x6c8bf020,
+-	0x1c9d8: 0x6d243820, 0x1c9d9: 0x6c386220, 0x1c9da: 0x6c8a3820, 0x1c9db: 0x6c21e020,
+-	0x1c9dc: 0x6d41f820, 0x1c9dd: 0x6c66f220, 0x1c9de: 0x6cc54a20, 0x1c9df: 0x6c15f020,
+-	0x1c9e0: 0x6cc8b620, 0x1c9e1: 0x6d055620, 0x1c9e2: 0x6c5c6e20, 0x1c9e3: 0x6c57ca20,
+-	0x1c9e4: 0x6d414a20, 0x1c9e5: 0x6cf70a20, 0x1c9e6: 0x6cbb4e20, 0x1c9e7: 0x6d287c20,
+-	0x1c9e8: 0x6c270220, 0x1c9e9: 0x6cd12620, 0x1c9ea: 0x6c5c7e20, 0x1c9eb: 0x6cf91620,
+-	0x1c9ec: 0x6ccb8020, 0x1c9ed: 0x6c660020, 0x1c9ee: 0x6c679220, 0x1c9ef: 0x6c58b820,
+-	0x1c9f0: 0x6d2a5e20, 0x1c9f1: 0x6c236e20, 0x1c9f2: 0x6d026020, 0x1c9f3: 0x6c695a20,
+-	0x1c9f4: 0x6c0aa820, 0x1c9f5: 0x6c28de20, 0x1c9f6: 0x6d191020, 0x1c9f7: 0x6ca9ec20,
+-	0x1c9f8: 0x6cdca220, 0x1c9f9: 0x6d191220, 0x1c9fa: 0x6ccc9a20, 0x1c9fb: 0x6d060420,
+-	0x1c9fc: 0x6c62cc20, 0x1c9fd: 0x6c0d6c20, 0x1c9fe: 0x6cba3020, 0x1c9ff: 0x6c7fee20,
+-	// Block 0x728, offset 0x1ca00
+-	0x1ca00: 0x6cb47020, 0x1ca01: 0x6d09c620, 0x1ca02: 0x6d415420, 0x1ca03: 0x6cb69620,
+-	0x1ca04: 0x6caee820, 0x1ca05: 0x6d124620, 0x1ca06: 0x6ca19a20, 0x1ca07: 0x6c835c20,
+-	0x1ca08: 0x6d012820, 0x1ca09: 0x6d415620, 0x1ca0a: 0x6c7c1a20, 0x1ca0b: 0x6d1ed220,
+-	0x1ca0c: 0x6d076220, 0x1ca0d: 0x6c828420, 0x1ca0e: 0x6cfb0420, 0x1ca0f: 0x6c156220,
+-	0x1ca10: 0x6c69f220, 0x1ca11: 0x6c919620, 0x1ca12: 0x6c156a20, 0x1ca13: 0x6d1c4020,
+-	0x1ca14: 0x6c111820, 0x1ca15: 0x6cc51620, 0x1ca16: 0x6cfb1620, 0x1ca17: 0x6d418620,
+-	0x1ca18: 0x6d415c20, 0x1ca19: 0x6c965220, 0x1ca1a: 0x6c84e020, 0x1ca1b: 0x6c2a5220,
+-	0x1ca1c: 0x6c806a20, 0x1ca1d: 0x6c82ac20, 0x1ca1e: 0x6c894020, 0x1ca1f: 0x6cd7b620,
+-	0x1ca20: 0x6c6f4620, 0x1ca21: 0x6d207420, 0x1ca22: 0x6c52ee20, 0x1ca23: 0x6d38f420,
+-	0x1ca24: 0x6cfa7420, 0x1ca25: 0x6c436a20, 0x1ca26: 0x6d264820, 0x1ca27: 0x6c5fce20,
+-	0x1ca28: 0x6cecbc20, 0x1ca29: 0x6c7bda20, 0x1ca2a: 0x6c617a20, 0x1ca2b: 0x6cc5b820,
+-	0x1ca2c: 0x6cef8820, 0x1ca2d: 0x6d278220, 0x1ca2e: 0x6c52fc20, 0x1ca2f: 0x6c213420,
+-	0x1ca30: 0x6caf2c20, 0x1ca31: 0x6ccbca20, 0x1ca32: 0x6c425820, 0x1ca33: 0x6ca30820,
+-	0x1ca34: 0x6cc5c620, 0x1ca35: 0x6d401620, 0x1ca36: 0x6c94dc20, 0x1ca37: 0x6c3b1220,
+-	0x1ca38: 0x6d34ec20, 0x1ca39: 0x6cf17e20, 0x1ca3a: 0x6c39c220, 0x1ca3b: 0x6d3aa420,
+-	0x1ca3c: 0x6d321420, 0x1ca3d: 0x6ca97c20, 0x1ca3e: 0x6cd4a020, 0x1ca3f: 0x6cfc8220,
+-	// Block 0x729, offset 0x1ca40
+-	0x1ca40: 0x6c421220, 0x1ca41: 0x6d016620, 0x1ca42: 0x6c3dfa20, 0x1ca43: 0x6c88e420,
+-	0x1ca44: 0x6d410c20, 0x1ca45: 0x6ccfb220, 0x1ca46: 0x6cf84e20, 0x1ca47: 0x6d33a020,
+-	0x1ca48: 0x6d37a020, 0x1ca49: 0x6d390420, 0x1ca4a: 0x6c04ec20, 0x1ca4b: 0x6c3dfc20,
+-	0x1ca4c: 0x6c1f1420, 0x1ca4d: 0x6ccec820, 0x1ca4e: 0x6d16ce20, 0x1ca4f: 0x6c6d9220,
+-	0x1ca50: 0x6c273820, 0x1ca51: 0x6c054a20, 0x1ca52: 0x6cc65a20, 0x1ca53: 0x6c6a9820,
+-	0x1ca54: 0x6c7a8620, 0x1ca55: 0x6cc54620, 0x1ca56: 0x6c2e7620, 0x1ca57: 0x6c4f6420,
+-	0x1ca58: 0x6c5b9e20, 0x1ca59: 0x6c449220, 0x1ca5a: 0x6d087c20, 0x1ca5b: 0x6c67dc20,
+-	0x1ca5c: 0x6c95ea20, 0x1ca5d: 0x6c740420, 0x1ca5e: 0x6c68d620, 0x1ca5f: 0x6ce7ae20,
+-	0x1ca60: 0x6c450020, 0x1ca61: 0x6cfea820, 0x1ca62: 0x6c735020, 0x1ca63: 0x6d053620,
+-	0x1ca64: 0x6cf87220, 0x1ca65: 0x6cdbf020, 0x1ca66: 0x6ce1c020, 0x1ca67: 0x6c61d220,
+-	0x1ca68: 0x6ce31820, 0x1ca69: 0x6c5eb820, 0x1ca6a: 0x6d06be20, 0x1ca6b: 0x6c8cf220,
+-	0x1ca6c: 0x6d1bb220, 0x1ca6d: 0x6d06c020, 0x1ca6e: 0x6cb6f620, 0x1ca6f: 0x6c39fc20,
+-	0x1ca70: 0x6c21b820, 0x1ca71: 0x6cce5220, 0x1ca72: 0x6c4bc220, 0x1ca73: 0x6cd11e20,
+-	0x1ca74: 0x6cef0420, 0x1ca75: 0x6c9dc020, 0x1ca76: 0x6cd46820, 0x1ca77: 0x6c081a20,
+-	0x1ca78: 0x6c1da820, 0x1ca79: 0x6ce22220, 0x1ca7a: 0x6c8f0620, 0x1ca7b: 0x6cc35a20,
+-	0x1ca7c: 0x6d3f7820, 0x1ca7d: 0x6d2e5c20, 0x1ca7e: 0x6ced0c20, 0x1ca7f: 0x6c93d820,
+-	// Block 0x72a, offset 0x1ca80
+-	0x1ca80: 0x6d3cc420, 0x1ca81: 0x6d3e2820, 0x1ca82: 0x6c78b420, 0x1ca83: 0x6cfd7820,
+-	0x1ca84: 0x6c64a420, 0x1ca85: 0x6c9e2820, 0x1ca86: 0x6c802a20, 0x1ca87: 0x6ce33020,
+-	0x1ca88: 0x6c9e9420, 0x1ca89: 0x6c5eda20, 0x1ca8a: 0x6d275020, 0x1ca8b: 0x6c5bca20,
+-	0x1ca8c: 0x6cd7ec20, 0x1ca8d: 0x6c348620, 0x1ca8e: 0x6c32c420, 0x1ca8f: 0x6c0ba020,
+-	0x1ca90: 0x6cfcc820, 0x1ca91: 0x6c464a20, 0x1ca92: 0x6d3c8a20, 0x1ca93: 0x6c58d820,
+-	0x1ca94: 0x6c2c5e20, 0x1ca95: 0x6c93a020, 0x1ca96: 0x6c0af620, 0x1ca97: 0x6c9f5820,
+-	0x1ca98: 0x6d256820, 0x1ca99: 0x6c6d1c20, 0x1ca9a: 0x6c401020, 0x1ca9b: 0x6cc81e20,
+-	0x1ca9c: 0x6d31ea20, 0x1ca9d: 0x6c3ce620, 0x1ca9e: 0x6c24ce20, 0x1ca9f: 0x6c430c20,
+-	0x1caa0: 0x6c150420, 0x1caa1: 0x6c83f020, 0x1caa2: 0x6d17fc20, 0x1caa3: 0x6c64be20,
+-	0x1caa4: 0x6c0d4020, 0x1caa5: 0x6cb15a20, 0x1caa6: 0x6c97f020, 0x1caa7: 0x6c824820,
+-	0x1caa8: 0x6d1bda20, 0x1caa9: 0x6cdd2e20, 0x1caaa: 0x6ca1d820, 0x1caab: 0x6ccaba20,
+-	0x1caac: 0x6d00e020, 0x1caad: 0x6c8a1420, 0x1caae: 0x6ccda220, 0x1caaf: 0x6d2b8c20,
+-	0x1cab0: 0x6c677a20, 0x1cab1: 0x6cba2420, 0x1cab2: 0x6cbbb220, 0x1cab3: 0x6c589a20,
+-	0x1cab4: 0x6c694620, 0x1cab5: 0x6d415020, 0x1cab6: 0x6c3d1a20, 0x1cab7: 0x6d016820,
+-	0x1cab8: 0x6c426820, 0x1cab9: 0x6c3d2420, 0x1caba: 0x6cc38a20, 0x1cabb: 0x6c3d2620,
+-	0x1cabc: 0x6cb81020, 0x1cabd: 0x6c0e6e20, 0x1cabe: 0x6cb2ac20, 0x1cabf: 0x6cfe3420,
+-	// Block 0x72b, offset 0x1cac0
+-	0x1cac0: 0x6d2ff620, 0x1cac1: 0x6c428e20, 0x1cac2: 0x6d1bdc20, 0x1cac3: 0x6d1bea20,
+-	0x1cac4: 0x6cbee020, 0x1cac5: 0x6cfa4c20, 0x1cac6: 0x6c49aa20, 0x1cac7: 0x6d41fa20,
+-	0x1cac8: 0x6ce02a20, 0x1cac9: 0x6c126020, 0x1caca: 0x6cb7fe20, 0x1cacb: 0x6cf27620,
+-	0x1cacc: 0x6d1c2220, 0x1cacd: 0x6c828620, 0x1cace: 0x6ce04820, 0x1cacf: 0x6c919820,
+-	0x1cad0: 0x6c49c420, 0x1cad1: 0x6cedf420, 0x1cad2: 0x6cedf020, 0x1cad3: 0x6c424e20,
+-	0x1cad4: 0x6cedfe20, 0x1cad5: 0x6c4e5020, 0x1cad6: 0x6c953820, 0x1cad7: 0x6c952c20,
+-	0x1cad8: 0x6c3e2220, 0x1cad9: 0x6c9c3a20, 0x1cada: 0x6c380620, 0x1cadb: 0x6c470020,
+-	0x1cadc: 0x6d3a6020, 0x1cadd: 0x6c707220, 0x1cade: 0x6c98d420, 0x1cadf: 0x6c477420,
+-	0x1cae0: 0x6c9f4220, 0x1cae1: 0x6c427220, 0x1cae2: 0x6c03f420, 0x1cae3: 0x6c48b220,
+-	0x1cae4: 0x6ce33220, 0x1cae5: 0x6c736a20, 0x1cae6: 0x6c3e8820, 0x1cae7: 0x6cd0b420,
+-	0x1cae8: 0x6d0da820, 0x1cae9: 0x6d2fc220, 0x1caea: 0x6d41b820, 0x1caeb: 0x6c48b820,
+-	0x1caec: 0x6d3d7220, 0x1caed: 0x6d237620, 0x1caee: 0x6d366620, 0x1caef: 0x6c018e20,
+-	0x1caf0: 0x6c382020, 0x1caf1: 0x6c803420, 0x1caf2: 0x6cd56220, 0x1caf3: 0x6cd80620,
+-	0x1caf4: 0x6cb00820, 0x1caf5: 0x6c96da20, 0x1caf6: 0x6c8f1620, 0x1caf7: 0x6c03f820,
+-	0x1caf8: 0x6c382420, 0x1caf9: 0x6c844a20, 0x1cafa: 0x6c177e20, 0x1cafb: 0x6cf0d020,
+-	0x1cafc: 0x6c0a3420, 0x1cafd: 0x6c629c20, 0x1cafe: 0x6d2b9c20, 0x1caff: 0x6c1ce620,
+-	// Block 0x72c, offset 0x1cb00
+-	0x1cb00: 0x6c8f2220, 0x1cb01: 0x6c5f5a20, 0x1cb02: 0x6c739e20, 0x1cb03: 0x6c9da220,
+-	0x1cb04: 0x6d2fec20, 0x1cb05: 0x6c956220, 0x1cb06: 0x6cb03220, 0x1cb07: 0x6c5f9e20,
+-	0x1cb08: 0x6c5fb020, 0x1cb09: 0x6c946820, 0x1cb0a: 0x6d0f7620, 0x1cb0b: 0x6c9cde20,
+-	0x1cb0c: 0x6cba9e20, 0x1cb0d: 0x6c268820, 0x1cb0e: 0x6c9a4e20, 0x1cb0f: 0x6d0f9a20,
+-	0x1cb10: 0x6d1fbc20, 0x1cb11: 0x6d1fb420, 0x1cb12: 0x6c3b6620, 0x1cb13: 0x6c033e20,
+-	0x1cb14: 0x6c42b820, 0x1cb15: 0x6d104a20, 0x1cb16: 0x6c477620, 0x1cb17: 0x6cbaaa20,
+-	0x1cb18: 0x6d29d620, 0x1cb19: 0x6c42ba20, 0x1cb1a: 0x6c8cf620, 0x1cb1b: 0x6d176e20,
+-	0x1cb1c: 0x6d3aee20, 0x1cb1d: 0x6c2b2820, 0x1cb1e: 0x6d04c820, 0x1cb1f: 0x6cbb3c20,
+-	0x1cb20: 0x6d14fa20, 0x1cb21: 0x6cfcca20, 0x1cb22: 0x6cc67c20, 0x1cb23: 0x6cc44a20,
+-	0x1cb24: 0x6cc44c20, 0x1cb25: 0x6cbb4420, 0x1cb26: 0x6c588220, 0x1cb27: 0x6cdd2620,
+-	0x1cb28: 0x6cfcdc20, 0x1cb29: 0x6d17fe20, 0x1cb2a: 0x6d107a20, 0x1cb2b: 0x6cbad220,
+-	0x1cb2c: 0x6cb9c220, 0x1cb2d: 0x6d218820, 0x1cb2e: 0x6c44dc20, 0x1cb2f: 0x6c6b2220,
+-	0x1cb30: 0x6ce0cc20, 0x1cb31: 0x6d25ac20, 0x1cb32: 0x6cf6d420, 0x1cb33: 0x6c38d820,
+-	0x1cb34: 0x6ccd1a20, 0x1cb35: 0x6c3ba220, 0x1cb36: 0x6ccd1e20, 0x1cb37: 0x6c88d820,
+-	0x1cb38: 0x6c827420, 0x1cb39: 0x6c44e420, 0x1cb3a: 0x6caa0820, 0x1cb3b: 0x6cbb5e20,
+-	0x1cb3c: 0x6c164620, 0x1cb3d: 0x6d221c20, 0x1cb3e: 0x6c461020, 0x1cb3f: 0x6d170420,
+-	// Block 0x72d, offset 0x1cb40
+-	0x1cb40: 0x6c1cbe20, 0x1cb41: 0x6cf22220, 0x1cb42: 0x6c3b2420, 0x1cb43: 0x6c533020,
+-	0x1cb44: 0x6c1c0820, 0x1cb45: 0x6c1c0a20, 0x1cb46: 0x6c252a20, 0x1cb47: 0x6c3e6020,
+-	0x1cb48: 0x6cf9b220, 0x1cb49: 0x6c079c20, 0x1cb4a: 0x6d177020, 0x1cb4b: 0x6c7e4220,
+-	0x1cb4c: 0x6d177220, 0x1cb4d: 0x6caf6220, 0x1cb4e: 0x6c8cf820, 0x1cb4f: 0x6c8f2e20,
+-	0x1cb50: 0x6d360020, 0x1cb51: 0x6cc18e20, 0x1cb52: 0x6cf77a20, 0x1cb53: 0x6d00ae20,
+-	0x1cb54: 0x6cfdc620, 0x1cb55: 0x6cf62420, 0x1cb56: 0x6cf88e20, 0x1cb57: 0x6c785020,
+-	0x1cb58: 0x6cbc4620, 0x1cb59: 0x6c5bcc20, 0x1cb5a: 0x6c5aba20, 0x1cb5b: 0x6cfecc20,
+-	0x1cb5c: 0x6ccc5e20, 0x1cb5d: 0x6c536620, 0x1cb5e: 0x6c676c20, 0x1cb5f: 0x6c2b7e20,
+-	0x1cb60: 0x6c255220, 0x1cb61: 0x6c3a6420, 0x1cb62: 0x6c2a2620, 0x1cb63: 0x6ccc6a20,
+-	0x1cb64: 0x6c1c4a20, 0x1cb65: 0x6d3b1620, 0x1cb66: 0x6c65d220, 0x1cb67: 0x6d07c420,
+-	0x1cb68: 0x6c1c6220, 0x1cb69: 0x6cb0fe20, 0x1cb6a: 0x6d3fb820, 0x1cb6b: 0x6cece620,
+-	0x1cb6c: 0x6c5aea20, 0x1cb6d: 0x6c542820, 0x1cb6e: 0x6c517420, 0x1cb6f: 0x6c51e820,
+-	0x1cb70: 0x6c4f0a20, 0x1cb71: 0x6c027220, 0x1cb72: 0x6cb16820, 0x1cb73: 0x6d18d020,
+-	0x1cb74: 0x6c885420, 0x1cb75: 0x6c543420, 0x1cb76: 0x6c030820, 0x1cb77: 0x6c8bf220,
+-	0x1cb78: 0x6cae4820, 0x1cb79: 0x6cbc6a20, 0x1cb7a: 0x6c027e20, 0x1cb7b: 0x6c386420,
+-	0x1cb7c: 0x6d18d220, 0x1cb7d: 0x6c5c8020, 0x1cb7e: 0x6d07e420, 0x1cb7f: 0x6c2a4a20,
+-	// Block 0x72e, offset 0x1cb80
+-	0x1cb80: 0x6d124420, 0x1cb81: 0x6c819a20, 0x1cb82: 0x6c819820, 0x1cb83: 0x6c779c20,
+-	0x1cb84: 0x6c996620, 0x1cb85: 0x6d30d220, 0x1cb86: 0x6cb5a820, 0x1cb87: 0x6c467a20,
+-	0x1cb88: 0x6c468020, 0x1cb89: 0x6c467c20, 0x1cb8a: 0x6c2f3420, 0x1cb8b: 0x6c2eb020,
+-	0x1cb8c: 0x6c373020, 0x1cb8d: 0x6cd64620, 0x1cb8e: 0x6cc85620, 0x1cb8f: 0x6ca3b220,
+-	0x1cb90: 0x6ca3b420, 0x1cb91: 0x6c329220, 0x1cb92: 0x6c82b220, 0x1cb93: 0x6ce63220,
+-	0x1cb94: 0x6d3efc20, 0x1cb95: 0x6c44c220, 0x1cb96: 0x6c17b620, 0x1cb97: 0x6c503220,
+-	0x1cb98: 0x6d27a020, 0x1cb99: 0x6c03b020, 0x1cb9a: 0x6caf6420, 0x1cb9b: 0x6d14ec20,
+-	0x1cb9c: 0x6cd8bc20, 0x1cb9d: 0x6cc26e20, 0x1cb9e: 0x6c635220, 0x1cb9f: 0x6c723220,
+-	0x1cba0: 0x6c5d5620, 0x1cba1: 0x6c1e8e20, 0x1cba2: 0x6c81d420, 0x1cba3: 0x6c951c20,
+-	0x1cba4: 0x6c607020, 0x1cba5: 0x6ce0c620, 0x1cba6: 0x6cab8e20, 0x1cba7: 0x6c90b420,
+-	0x1cba8: 0x6caa2820, 0x1cba9: 0x6c67be20, 0x1cbaa: 0x6cad1e20, 0x1cbab: 0x6d2c5620,
+-	0x1cbac: 0x6c90be20, 0x1cbad: 0x6c5f7020, 0x1cbae: 0x6c81e420, 0x1cbaf: 0x6c5e2e20,
+-	0x1cbb0: 0x6d1ed420, 0x1cbb1: 0x6ca1a020, 0x1cbb2: 0x6c580420, 0x1cbb3: 0x6c378420,
+-	0x1cbb4: 0x6d169620, 0x1cbb5: 0x6c2f5420, 0x1cbb6: 0x6d127420, 0x1cbb7: 0x6c264420,
+-	0x1cbb8: 0x6cd95820, 0x1cbb9: 0x6cbd6820, 0x1cbba: 0x6d27a220, 0x1cbbb: 0x6c1b9420,
+-	0x1cbbc: 0x6c27ca20, 0x1cbbd: 0x6c27cc20, 0x1cbbe: 0x6c533420, 0x1cbbf: 0x6c450220,
+-	// Block 0x72f, offset 0x1cbc0
+-	0x1cbc0: 0x6d344820, 0x1cbc1: 0x6cacb220, 0x1cbc2: 0x6ca80c20, 0x1cbc3: 0x6c27d420,
+-	0x1cbc4: 0x6d31d620, 0x1cbc5: 0x6c181a20, 0x1cbc6: 0x6c8cfa20, 0x1cbc7: 0x6d32ba20,
+-	0x1cbc8: 0x6d1fc220, 0x1cbc9: 0x6cec3020, 0x1cbca: 0x6c89e420, 0x1cbcb: 0x6c8f8c20,
+-	0x1cbcc: 0x6d345c20, 0x1cbcd: 0x6ca90220, 0x1cbce: 0x6ce55e20, 0x1cbcf: 0x6c375c20,
+-	0x1cbd0: 0x6d0bb420, 0x1cbd1: 0x6ce5f020, 0x1cbd2: 0x6c485e20, 0x1cbd3: 0x6d077220,
+-	0x1cbd4: 0x6c880420, 0x1cbd5: 0x6c504620, 0x1cbd6: 0x6cd16e20, 0x1cbd7: 0x6c8b1a20,
+-	0x1cbd8: 0x6cb24420, 0x1cbd9: 0x6c6dce20, 0x1cbda: 0x6c726c20, 0x1cbdb: 0x6c08ee20,
+-	0x1cbdc: 0x6c2bfe20, 0x1cbdd: 0x6c4c7c20, 0x1cbde: 0x6cf1a220, 0x1cbdf: 0x6d071a20,
+-	0x1cbe0: 0x6cb25820, 0x1cbe1: 0x6c232e20, 0x1cbe2: 0x6c2fc820, 0x1cbe3: 0x6ca5f820,
+-	0x1cbe4: 0x6ce68c20, 0x1cbe5: 0x6c71d020, 0x1cbe6: 0x6c234820, 0x1cbe7: 0x6c7c4220,
+-	0x1cbe8: 0x6c894420, 0x1cbe9: 0x6c7d1220, 0x1cbea: 0x6c234a20, 0x1cbeb: 0x6c884020,
+-	0x1cbec: 0x6cf26020, 0x1cbed: 0x6c7d1420, 0x1cbee: 0x6c885820, 0x1cbef: 0x6c886820,
+-	0x1cbf0: 0x6c236620, 0x1cbf1: 0x6c027420, 0x1cbf2: 0x6cd11820, 0x1cbf3: 0x6cd96e20,
+-	0x1cbf4: 0x6ce64c20, 0x1cbf5: 0x6c7d2a20, 0x1cbf6: 0x6ca88820, 0x1cbf7: 0x6d34aa20,
+-	0x1cbf8: 0x6c281020, 0x1cbf9: 0x6ca93420, 0x1cbfa: 0x6cbc8a20, 0x1cbfb: 0x6ca65e20,
+-	0x1cbfc: 0x6ce65220, 0x1cbfd: 0x6ce65620, 0x1cbfe: 0x6c8ff820, 0x1cbff: 0x6d22c620,
+-	// Block 0x730, offset 0x1cc00
+-	0x1cc00: 0x6d22b620, 0x1cc01: 0x6d2fac20, 0x1cc02: 0x6cd8ac20, 0x1cc03: 0x6cda8220,
+-	0x1cc04: 0x6d180020, 0x1cc05: 0x6cdad820, 0x1cc06: 0x6cd8ca20, 0x1cc07: 0x6d2fcc20,
+-	0x1cc08: 0x6d2fce20, 0x1cc09: 0x6cc78220, 0x1cc0a: 0x6d164c20, 0x1cc0b: 0x6c81fe20,
+-	0x1cc0c: 0x6c5e8020, 0x1cc0d: 0x6cbffe20, 0x1cc0e: 0x6c78f220, 0x1cc0f: 0x6c12b620,
+-	0x1cc10: 0x6c437020, 0x1cc11: 0x6c0eb020, 0x1cc12: 0x6c58f020, 0x1cc13: 0x6c597a20,
+-	0x1cc14: 0x6d15c220, 0x1cc15: 0x6cc5c820, 0x1cc16: 0x6cffd220, 0x1cc17: 0x6cc7f620,
+-	0x1cc18: 0x6d38d820, 0x1cc19: 0x6d25fc20, 0x1cc1a: 0x6c323820, 0x1cc1b: 0x6c425a20,
+-	0x1cc1c: 0x6cc65420, 0x1cc1d: 0x6c416e20, 0x1cc1e: 0x6c138020, 0x1cc1f: 0x6cf2d220,
+-	0x1cc20: 0x6c169820, 0x1cc21: 0x6c476020, 0x1cc22: 0x6d33a220, 0x1cc23: 0x6c4dd620,
+-	0x1cc24: 0x6c3d4420, 0x1cc25: 0x6c3a3220, 0x1cc26: 0x6c3b6420, 0x1cc27: 0x6cadb220,
+-	0x1cc28: 0x6cad2820, 0x1cc29: 0x6c647020, 0x1cc2a: 0x6c39a820, 0x1cc2b: 0x6d3ccc20,
+-	0x1cc2c: 0x6d1f0220, 0x1cc2d: 0x6ca31420, 0x1cc2e: 0x6c01e820, 0x1cc2f: 0x6c78f620,
+-	0x1cc30: 0x6cc46420, 0x1cc31: 0x6c456820, 0x1cc32: 0x6d22da20, 0x1cc33: 0x6cf1d020,
+-	0x1cc34: 0x6d10d020, 0x1cc35: 0x6cb58c20, 0x1cc36: 0x6cafc020, 0x1cc37: 0x6cb9f620,
+-	0x1cc38: 0x6cf59220, 0x1cc39: 0x6cf59420, 0x1cc3a: 0x6c3a8c20, 0x1cc3b: 0x6c78f820,
+-	0x1cc3c: 0x6c6e1220, 0x1cc3d: 0x6cdf6420, 0x1cc3e: 0x6cd09020, 0x1cc3f: 0x6d37e620,
+-	// Block 0x731, offset 0x1cc40
+-	0x1cc40: 0x6d2f2820, 0x1cc41: 0x6d007220, 0x1cc42: 0x6cd09620, 0x1cc43: 0x6cf07e20,
+-	0x1cc44: 0x6d391220, 0x1cc45: 0x6c2e7820, 0x1cc46: 0x6c282c20, 0x1cc47: 0x6c3a9020,
+-	0x1cc48: 0x6c037220, 0x1cc49: 0x6c0ec820, 0x1cc4a: 0x6cc17c20, 0x1cc4b: 0x6ce49420,
+-	0x1cc4c: 0x6c06f220, 0x1cc4d: 0x6c484a20, 0x1cc4e: 0x6cdf0420, 0x1cc4f: 0x6d3ef220,
+-	0x1cc50: 0x6c7a3220, 0x1cc51: 0x6d33b420, 0x1cc52: 0x6ca68820, 0x1cc53: 0x6cb28a20,
+-	0x1cc54: 0x6d3f5420, 0x1cc55: 0x6c3f4c20, 0x1cc56: 0x6cad2a20, 0x1cc57: 0x6d313020,
+-	0x1cc58: 0x6cfb3820, 0x1cc59: 0x6d428820, 0x1cc5a: 0x6cadb820, 0x1cc5b: 0x6c640820,
+-	0x1cc5c: 0x6cd15620, 0x1cc5d: 0x6d33b620, 0x1cc5e: 0x6c05ac20, 0x1cc5f: 0x6ca23620,
+-	0x1cc60: 0x6cc0ee20, 0x1cc61: 0x6c552e20, 0x1cc62: 0x6c77ea20, 0x1cc63: 0x6c1b8620,
+-	0x1cc64: 0x6d1b4020, 0x1cc65: 0x6d057a20, 0x1cc66: 0x6d0f5220, 0x1cc67: 0x6c8f7a20,
+-	0x1cc68: 0x6c306620, 0x1cc69: 0x6c761c20, 0x1cc6a: 0x6c914620, 0x1cc6b: 0x6c6e5c20,
+-	0x1cc6c: 0x6caa5820, 0x1cc6d: 0x6d0bea20, 0x1cc6e: 0x6cacd020, 0x1cc6f: 0x6c7ae820,
+-	0x1cc70: 0x6d14d620, 0x1cc71: 0x6c49e820, 0x1cc72: 0x6c4d3e20, 0x1cc73: 0x6c438220,
+-	0x1cc74: 0x6c307020, 0x1cc75: 0x6c1aa220, 0x1cc76: 0x6c683e20, 0x1cc77: 0x6d046420,
+-	0x1cc78: 0x6d046620, 0x1cc79: 0x6c374c20, 0x1cc7a: 0x6c01b020, 0x1cc7b: 0x6c526020,
+-	0x1cc7c: 0x6cb10a20, 0x1cc7d: 0x6ca5a420, 0x1cc7e: 0x6d3f5620, 0x1cc7f: 0x6c4a4c20,
+-	// Block 0x732, offset 0x1cc80
+-	0x1cc80: 0x6c19e220, 0x1cc81: 0x6ce5c020, 0x1cc82: 0x6d33ce20, 0x1cc83: 0x6c252c20,
+-	0x1cc84: 0x6c99e620, 0x1cc85: 0x6d009220, 0x1cc86: 0x6c252e20, 0x1cc87: 0x6d009420,
+-	0x1cc88: 0x6c972e20, 0x1cc89: 0x6c972a20, 0x1cc8a: 0x6c600420, 0x1cc8b: 0x6d029e20,
+-	0x1cc8c: 0x6ca8f020, 0x1cc8d: 0x6c7b2020, 0x1cc8e: 0x6cc97220, 0x1cc8f: 0x6d2a0420,
+-	0x1cc90: 0x6cb5aa20, 0x1cc91: 0x6ca4e820, 0x1cc92: 0x6c9cec20, 0x1cc93: 0x6ca9b820,
+-	0x1cc94: 0x6c943a20, 0x1cc95: 0x6ced7c20, 0x1cc96: 0x6c0ef420, 0x1cc97: 0x6cf1d820,
+-	0x1cc98: 0x6ced0e20, 0x1cc99: 0x6d04d020, 0x1cc9a: 0x6c68ea20, 0x1cc9b: 0x6c6e7a20,
+-	0x1cc9c: 0x6d1fc420, 0x1cc9d: 0x6c524e20, 0x1cc9e: 0x6c260820, 0x1cc9f: 0x6c8b0820,
+-	0x1cca0: 0x6cccdc20, 0x1cca1: 0x6ce6c420, 0x1cca2: 0x6c99f020, 0x1cca3: 0x6c214420,
+-	0x1cca4: 0x6cd0a220, 0x1cca5: 0x6cba0420, 0x1cca6: 0x6c2a9220, 0x1cca7: 0x6c72ee20,
+-	0x1cca8: 0x6c243820, 0x1cca9: 0x6d04cc20, 0x1ccaa: 0x6d032e20, 0x1ccab: 0x6ceac220,
+-	0x1ccac: 0x6cad3820, 0x1ccad: 0x6c19f220, 0x1ccae: 0x6ca56c20, 0x1ccaf: 0x6cb43620,
+-	0x1ccb0: 0x6c311420, 0x1ccb1: 0x6ceac420, 0x1ccb2: 0x6ca7d620, 0x1ccb3: 0x6ca53e20,
+-	0x1ccb4: 0x6cb05a20, 0x1ccb5: 0x6c478220, 0x1ccb6: 0x6c954020, 0x1ccb7: 0x6c85fc20,
+-	0x1ccb8: 0x6c88b820, 0x1ccb9: 0x6d2f3020, 0x1ccba: 0x6c254020, 0x1ccbb: 0x6c6a1c20,
+-	0x1ccbc: 0x6c899420, 0x1ccbd: 0x6cd6fc20, 0x1ccbe: 0x6caff420, 0x1ccbf: 0x6c0bfe20,
+-	// Block 0x733, offset 0x1ccc0
+-	0x1ccc0: 0x6c94fc20, 0x1ccc1: 0x6cb11020, 0x1ccc2: 0x6c82c420, 0x1ccc3: 0x6c7cfe20,
+-	0x1ccc4: 0x6c20d620, 0x1ccc5: 0x6c288c20, 0x1ccc6: 0x6ce4fa20, 0x1ccc7: 0x6ca57020,
+-	0x1ccc8: 0x6c6dbc20, 0x1ccc9: 0x6ca37a20, 0x1ccca: 0x6c7e7820, 0x1cccb: 0x6d12f420,
+-	0x1cccc: 0x6d0c0e20, 0x1cccd: 0x6cc5f420, 0x1ccce: 0x6cd0a420, 0x1cccf: 0x6c21c220,
+-	0x1ccd0: 0x6c3f7820, 0x1ccd1: 0x6c3f6a20, 0x1ccd2: 0x6c709620, 0x1ccd3: 0x6c3a3620,
+-	0x1ccd4: 0x6cbabc20, 0x1ccd5: 0x6ced8820, 0x1ccd6: 0x6c307c20, 0x1ccd7: 0x6caff620,
+-	0x1ccd8: 0x6c4c6e20, 0x1ccd9: 0x6d3f9220, 0x1ccda: 0x6c2fa820, 0x1ccdb: 0x6cf2fe20,
+-	0x1ccdc: 0x6c9a6020, 0x1ccdd: 0x6ca5f420, 0x1ccde: 0x6d3bd020, 0x1ccdf: 0x6c1c3420,
+-	0x1cce0: 0x6c23f020, 0x1cce1: 0x6c954820, 0x1cce2: 0x6cab8020, 0x1cce3: 0x6c2c6e20,
+-	0x1cce4: 0x6c013c20, 0x1cce5: 0x6d038220, 0x1cce6: 0x6ca50420, 0x1cce7: 0x6cd5ea20,
+-	0x1cce8: 0x6cd69220, 0x1cce9: 0x6ca42e20, 0x1ccea: 0x6d283c20, 0x1cceb: 0x6d380020,
+-	0x1ccec: 0x6cc78620, 0x1cced: 0x6c366020, 0x1ccee: 0x6cc9ca20, 0x1ccef: 0x6ce8c820,
+-	0x1ccf0: 0x6d10ae20, 0x1ccf1: 0x6c669220, 0x1ccf2: 0x6cefe620, 0x1ccf3: 0x6c690e20,
+-	0x1ccf4: 0x6d213220, 0x1ccf5: 0x6c637220, 0x1ccf6: 0x6c32d020, 0x1ccf7: 0x6c09d820,
+-	0x1ccf8: 0x6c16b220, 0x1ccf9: 0x6c401220, 0x1ccfa: 0x6cfcde20, 0x1ccfb: 0x6ca6b020,
+-	0x1ccfc: 0x6c9e2e20, 0x1ccfd: 0x6cec3820, 0x1ccfe: 0x6ce2a220, 0x1ccff: 0x6ce9e620,
+-	// Block 0x734, offset 0x1cd00
+-	0x1cd00: 0x6c055620, 0x1cd01: 0x6cba1820, 0x1cd02: 0x6c93a820, 0x1cd03: 0x6cec3a20,
+-	0x1cd04: 0x6cda3e20, 0x1cd05: 0x6ce11c20, 0x1cd06: 0x6cdaee20, 0x1cd07: 0x6d3c9820,
+-	0x1cd08: 0x6c441420, 0x1cd09: 0x6d183220, 0x1cd0a: 0x6c100a20, 0x1cd0b: 0x6c89fa20,
+-	0x1cd0c: 0x6c607220, 0x1cd0d: 0x6cb00a20, 0x1cd0e: 0x6d00d020, 0x1cd0f: 0x6c42d020,
+-	0x1cd10: 0x6c93b420, 0x1cd11: 0x6c0d8420, 0x1cd12: 0x6cab6c20, 0x1cd13: 0x6c16c220,
+-	0x1cd14: 0x6c92ae20, 0x1cd15: 0x6c4c8220, 0x1cd16: 0x6cace020, 0x1cd17: 0x6c1fbc20,
+-	0x1cd18: 0x6c0c1a20, 0x1cd19: 0x6c67c020, 0x1cd1a: 0x6c3d9220, 0x1cd1b: 0x6ce12c20,
+-	0x1cd1c: 0x6ca06e20, 0x1cd1d: 0x6cf6ac20, 0x1cd1e: 0x6d3b8e20, 0x1cd1f: 0x6c93f820,
+-	0x1cd20: 0x6c686e20, 0x1cd21: 0x6d1d4420, 0x1cd22: 0x6c936220, 0x1cd23: 0x6d36be20,
+-	0x1cd24: 0x6d098620, 0x1cd25: 0x6c211e20, 0x1cd26: 0x6c8c6620, 0x1cd27: 0x6ce78e20,
+-	0x1cd28: 0x6caec820, 0x1cd29: 0x6ca6cc20, 0x1cd2a: 0x6c1fcc20, 0x1cd2b: 0x6c8a1e20,
+-	0x1cd2c: 0x6c256620, 0x1cd2d: 0x6c4a8e20, 0x1cd2e: 0x6cff1620, 0x1cd2f: 0x6ce29020,
+-	0x1cd30: 0x6c38c220, 0x1cd31: 0x6d349a20, 0x1cd32: 0x6c688020, 0x1cd33: 0x6ccdb420,
+-	0x1cd34: 0x6c550420, 0x1cd35: 0x6c255c20, 0x1cd36: 0x6cc90a20, 0x1cd37: 0x6cfd8a20,
+-	0x1cd38: 0x6cdc1020, 0x1cd39: 0x6c3bf020, 0x1cd3a: 0x6d1c0020, 0x1cd3b: 0x6ccd1620,
+-	0x1cd3c: 0x6d3b5c20, 0x1cd3d: 0x6c284c20, 0x1cd3e: 0x6c7b4020, 0x1cd3f: 0x6ca9d220,
+-	// Block 0x735, offset 0x1cd40
+-	0x1cd40: 0x6cea7020, 0x1cd41: 0x6c886a20, 0x1cd42: 0x6c0a7620, 0x1cd43: 0x6d1dc020,
+-	0x1cd44: 0x6c74cc20, 0x1cd45: 0x6c1f8020, 0x1cd46: 0x6d18d420, 0x1cd47: 0x6c732c20,
+-	0x1cd48: 0x6c7e9820, 0x1cd49: 0x6c88ce20, 0x1cd4a: 0x6ccac420, 0x1cd4b: 0x6cea7420,
+-	0x1cd4c: 0x6c47da20, 0x1cd4d: 0x6cb67820, 0x1cd4e: 0x6c257c20, 0x1cd4f: 0x6c0d8e20,
+-	0x1cd50: 0x6d09bc20, 0x1cd51: 0x6ca53a20, 0x1cd52: 0x6cf32020, 0x1cd53: 0x6d2a0e20,
+-	0x1cd54: 0x6cfd3420, 0x1cd55: 0x6c0c4420, 0x1cd56: 0x6d044020, 0x1cd57: 0x6c7b5c20,
+-	0x1cd58: 0x6c7eaa20, 0x1cd59: 0x6d0c4220, 0x1cd5a: 0x6c918820, 0x1cd5b: 0x6c5e4220,
+-	0x1cd5c: 0x6d28a020, 0x1cd5d: 0x6c95cc20, 0x1cd5e: 0x6cc21020, 0x1cd5f: 0x6d2a1020,
+-	0x1cd60: 0x6c946c20, 0x1cd61: 0x6ca61e20, 0x1cd62: 0x6d28aa20, 0x1cd63: 0x6c189420,
+-	0x1cd64: 0x6cb8b620, 0x1cd65: 0x6cf2da20, 0x1cd66: 0x6c4a2420, 0x1cd67: 0x6d29e220,
+-	0x1cd68: 0x6c8bea20, 0x1cd69: 0x6c4a0e20, 0x1cd6a: 0x6d3f2a20, 0x1cd6b: 0x6c68c420,
+-	0x1cd6c: 0x6ca80e20, 0x1cd6d: 0x6c1e4020, 0x1cd6e: 0x6c620c20, 0x1cd6f: 0x6c42c820,
+-	0x1cd70: 0x6c1e4420, 0x1cd71: 0x6c9dce20, 0x1cd72: 0x6ca87420, 0x1cd73: 0x6d357020,
+-	0x1cd74: 0x6d35c620, 0x1cd75: 0x6c43f220, 0x1cd76: 0x6c669420, 0x1cd77: 0x6c2eb220,
+-	0x1cd78: 0x6d33e420, 0x1cd79: 0x6d04d820, 0x1cd7a: 0x6cdf3220, 0x1cd7b: 0x6d319820,
+-	0x1cd7c: 0x6c6fd020, 0x1cd7d: 0x6cfc8420, 0x1cd7e: 0x6d20ca20, 0x1cd7f: 0x6c138620,
+-	// Block 0x736, offset 0x1cd80
+-	0x1cd80: 0x6d11a420, 0x1cd81: 0x6d20e820, 0x1cd82: 0x6c1cc220, 0x1cd83: 0x6cf89020,
+-	0x1cd84: 0x6cf89220, 0x1cd85: 0x6c700620, 0x1cd86: 0x6d217a20, 0x1cd87: 0x6d227220,
+-	0x1cd88: 0x6d043820, 0x1cd89: 0x6c71d420, 0x1cd8a: 0x6c702a20, 0x1cd8b: 0x6d035820,
+-	0x1cd8c: 0x6ccf0620, 0x1cd8d: 0x6ccf2820, 0x1cd8e: 0x6ccf9620, 0x1cd8f: 0x6c6fb220,
+-	0x1cd90: 0x6cd36020, 0x1cd91: 0x6cdfa420, 0x1cd92: 0x6cd4e220, 0x1cd93: 0x6cd3b620,
+-	0x1cd94: 0x6ce50820, 0x1cd95: 0x6ce0a420, 0x1cd96: 0x6cb4b020, 0x1cd97: 0x6cb4b220,
+-	0x1cd98: 0x6c496420, 0x1cd99: 0x6c57cc20, 0x1cd9a: 0x6ce54020, 0x1cd9b: 0x6c201620,
+-	0x1cd9c: 0x6cd75220, 0x1cd9d: 0x6cf9d820, 0x1cd9e: 0x6cf45e20, 0x1cd9f: 0x6d385220,
+-	0x1cda0: 0x6c29be20, 0x1cda1: 0x6c1ff420, 0x1cda2: 0x6cccd620, 0x1cda3: 0x6d15d420,
+-	0x1cda4: 0x6c397c20, 0x1cda5: 0x6cabc020, 0x1cda6: 0x6cdf6a20, 0x1cda7: 0x6c389420,
+-	0x1cda8: 0x6c04c820, 0x1cda9: 0x6c1ff620, 0x1cdaa: 0x6c4f6c20, 0x1cdab: 0x6c39d420,
+-	0x1cdac: 0x6c047a20, 0x1cdad: 0x6c08d420, 0x1cdae: 0x6c934820, 0x1cdaf: 0x6d37b020,
+-	0x1cdb0: 0x6c667220, 0x1cdb1: 0x6c122a20, 0x1cdb2: 0x6c8cfc20, 0x1cdb3: 0x6d3a1020,
+-	0x1cdb4: 0x6d2ac620, 0x1cdb5: 0x6c34f220, 0x1cdb6: 0x6c0ef620, 0x1cdb7: 0x6cfb5020,
+-	0x1cdb8: 0x6c447620, 0x1cdb9: 0x6c1ff820, 0x1cdba: 0x6cf9b420, 0x1cdbb: 0x6c914e20,
+-	0x1cdbc: 0x6cbf2e20, 0x1cdbd: 0x6cacfc20, 0x1cdbe: 0x6cf62a20, 0x1cdbf: 0x6c7af420,
+-	// Block 0x737, offset 0x1cdc0
+-	0x1cdc0: 0x6c3ea420, 0x1cdc1: 0x6d2a8620, 0x1cdc2: 0x6c3cb220, 0x1cdc3: 0x6c83f220,
+-	0x1cdc4: 0x6cce7820, 0x1cdc5: 0x6d216420, 0x1cdc6: 0x6c80d220, 0x1cdc7: 0x6ce6ce20,
+-	0x1cdc8: 0x6d237820, 0x1cdc9: 0x6cefe820, 0x1cdca: 0x6c0f3220, 0x1cdcb: 0x6c9be020,
+-	0x1cdcc: 0x6ca76c20, 0x1cdcd: 0x6c70b420, 0x1cdce: 0x6c59f420, 0x1cdcf: 0x6cd44a20,
+-	0x1cdd0: 0x6c78d020, 0x1cdd1: 0x6c0bb820, 0x1cdd2: 0x6ca2a620, 0x1cdd3: 0x6c2ede20,
+-	0x1cdd4: 0x6c315c20, 0x1cdd5: 0x6c059020, 0x1cdd6: 0x6c13ae20, 0x1cdd7: 0x6d18b220,
+-	0x1cdd8: 0x6cd9d820, 0x1cdd9: 0x6c123a20, 0x1cdda: 0x6c129c20, 0x1cddb: 0x6c90c020,
+-	0x1cddc: 0x6c279820, 0x1cddd: 0x6d098a20, 0x1cdde: 0x6d123420, 0x1cddf: 0x6c1cee20,
+-	0x1cde0: 0x6c2b0820, 0x1cde1: 0x6c291c20, 0x1cde2: 0x6cbb2c20, 0x1cde3: 0x6c91f620,
+-	0x1cde4: 0x6d162220, 0x1cde5: 0x6c60e020, 0x1cde6: 0x6c670e20, 0x1cde7: 0x6c5e3020,
+-	0x1cde8: 0x6c9b8620, 0x1cde9: 0x6cb69820, 0x1cdea: 0x6c91fe20, 0x1cdeb: 0x6c919a20,
+-	0x1cdec: 0x6c157220, 0x1cded: 0x6cd6c020, 0x1cdee: 0x6c449e20, 0x1cdef: 0x6c894620,
+-	0x1cdf0: 0x6c647220, 0x1cdf1: 0x6c650020, 0x1cdf2: 0x6ccb1420, 0x1cdf3: 0x6d0e5420,
+-	0x1cdf4: 0x6c3e6820, 0x1cdf5: 0x6cb25a20, 0x1cdf6: 0x6d0eea20, 0x1cdf7: 0x6d0f1c20,
+-	0x1cdf8: 0x6c12aa20, 0x1cdf9: 0x6c12c020, 0x1cdfa: 0x6d164220, 0x1cdfb: 0x6c821220,
+-	0x1cdfc: 0x6ce62820, 0x1cdfd: 0x6c681e20, 0x1cdfe: 0x6c008420, 0x1cdff: 0x6ca39020,
+-	// Block 0x738, offset 0x1ce00
+-	0x1ce00: 0x6ce56820, 0x1ce01: 0x6c682020, 0x1ce02: 0x6c6a5a20, 0x1ce03: 0x6cae8c20,
+-	0x1ce04: 0x6cecbe20, 0x1ce05: 0x6d167020, 0x1ce06: 0x6c145e20, 0x1ce07: 0x6c9db820,
+-	0x1ce08: 0x6c9cd820, 0x1ce09: 0x6c416220, 0x1ce0a: 0x6cb89e20, 0x1ce0b: 0x6d22c820,
+-	0x1ce0c: 0x6d22ca20, 0x1ce0d: 0x6cce9620, 0x1ce0e: 0x6cbeee20, 0x1ce0f: 0x6c323020,
+-	0x1ce10: 0x6c564c20, 0x1ce11: 0x6cb6ce20, 0x1ce12: 0x6c982c20, 0x1ce13: 0x6d3f2e20,
+-	0x1ce14: 0x6c5ba020, 0x1ce15: 0x6cdbaa20, 0x1ce16: 0x6d357220, 0x1ce17: 0x6cfd6020,
+-	0x1ce18: 0x6cafb020, 0x1ce19: 0x6c3ddc20, 0x1ce1a: 0x6cea4220, 0x1ce1b: 0x6cef8a20,
+-	0x1ce1c: 0x6cf3a820, 0x1ce1d: 0x6d338420, 0x1ce1e: 0x6cb73e20, 0x1ce1f: 0x6cccbe20,
+-	0x1ce20: 0x6cf18020, 0x1ce21: 0x6cba3e20, 0x1ce22: 0x6cc56e20, 0x1ce23: 0x6c3dde20,
+-	0x1ce24: 0x6c79b620, 0x1ce25: 0x6c6bba20, 0x1ce26: 0x6c913620, 0x1ce27: 0x6d067420,
+-	0x1ce28: 0x6c5e8220, 0x1ce29: 0x6cbd5420, 0x1ce2a: 0x6cb57620, 0x1ce2b: 0x6d0c5a20,
+-	0x1ce2c: 0x6c3b1420, 0x1ce2d: 0x6c032020, 0x1ce2e: 0x6cc8c020, 0x1ce2f: 0x6d02ac20,
+-	0x1ce30: 0x6c618a20, 0x1ce31: 0x6c570620, 0x1ce32: 0x6c570820, 0x1ce33: 0x6c398620,
+-	0x1ce34: 0x6cf4ae20, 0x1ce35: 0x6c73e420, 0x1ce36: 0x6c466c20, 0x1ce37: 0x6d34ee20,
+-	0x1ce38: 0x6d278420, 0x1ce39: 0x6cbd5620, 0x1ce3a: 0x6c029e20, 0x1ce3b: 0x6c1e7820,
+-	0x1ce3c: 0x6c994620, 0x1ce3d: 0x6d0b1420, 0x1ce3e: 0x6c3a8020, 0x1ce3f: 0x6cc63220,
+-	// Block 0x739, offset 0x1ce40
+-	0x1ce40: 0x6c4f5a20, 0x1ce41: 0x6c22fc20, 0x1ce42: 0x6d1a2a20, 0x1ce43: 0x6d1fa220,
+-	0x1ce44: 0x6c0b7420, 0x1ce45: 0x6d169a20, 0x1ce46: 0x6cbd1020, 0x1ce47: 0x6cef8c20,
+-	0x1ce48: 0x6c858420, 0x1ce49: 0x6cb05420, 0x1ce4a: 0x6c35d420, 0x1ce4b: 0x6cfc7c20,
+-	0x1ce4c: 0x6c169a20, 0x1ce4d: 0x6c122420, 0x1ce4e: 0x6d3aa620, 0x1ce4f: 0x6cda4820,
+-	0x1ce50: 0x6ce30e20, 0x1ce51: 0x6d260220, 0x1ce52: 0x6cc4ae20, 0x1ce53: 0x6c8cb020,
+-	0x1ce54: 0x6cdf1a20, 0x1ce55: 0x6cce9820, 0x1ce56: 0x6c2b5c20, 0x1ce57: 0x6c9e6e20,
+-	0x1ce58: 0x6cbe9c20, 0x1ce59: 0x6c859620, 0x1ce5a: 0x6d1e7220, 0x1ce5b: 0x6c77d820,
+-	0x1ce5c: 0x6ca27220, 0x1ce5d: 0x6c06ee20, 0x1ce5e: 0x6c05a820, 0x1ce5f: 0x6c467220,
+-	0x1ce60: 0x6c9f3420, 0x1ce61: 0x6d15c420, 0x1ce62: 0x6d15ca20, 0x1ce63: 0x6c720020,
+-	0x1ce64: 0x6cb1de20, 0x1ce65: 0x6cc91420, 0x1ce66: 0x6c7a7620, 0x1ce67: 0x6ca8fa20,
+-	0x1ce68: 0x6ca62c20, 0x1ce69: 0x6c0ebc20, 0x1ce6a: 0x6c0dc820, 0x1ce6b: 0x6cccc620,
+-	0x1ce6c: 0x6d051a20, 0x1ce6d: 0x6d119220, 0x1ce6e: 0x6cfa8420, 0x1ce6f: 0x6c079620,
+-	0x1ce70: 0x6c530620, 0x1ce71: 0x6d1ba220, 0x1ce72: 0x6d2c7420, 0x1ce73: 0x6c2fe220,
+-	0x1ce74: 0x6c706020, 0x1ce75: 0x6c2e6220, 0x1ce76: 0x6ca7de20, 0x1ce77: 0x6c417e20,
+-	0x1ce78: 0x6c54a820, 0x1ce79: 0x6cb27c20, 0x1ce7a: 0x6c99dc20, 0x1ce7b: 0x6c3e0220,
+-	0x1ce7c: 0x6cd0e820, 0x1ce7d: 0x6c46f620, 0x1ce7e: 0x6c093e20, 0x1ce7f: 0x6cf07620,
+-	// Block 0x73a, offset 0x1ce80
+-	0x1ce80: 0x6c3e0420, 0x1ce81: 0x6d3d2e20, 0x1ce82: 0x6c994c20, 0x1ce83: 0x6c393220,
+-	0x1ce84: 0x6c633020, 0x1ce85: 0x6c98cc20, 0x1ce86: 0x6c98ce20, 0x1ce87: 0x6c036a20,
+-	0x1ce88: 0x6c223220, 0x1ce89: 0x6ca0d620, 0x1ce8a: 0x6d3e0620, 0x1ce8b: 0x6c2be020,
+-	0x1ce8c: 0x6c1b0a20, 0x1ce8d: 0x6c61b220, 0x1ce8e: 0x6c6d9420, 0x1ce8f: 0x6c8f6e20,
+-	0x1ce90: 0x6c23e220, 0x1ce91: 0x6ca78e20, 0x1ce92: 0x6d256c20, 0x1ce93: 0x6d08fe20,
+-	0x1ce94: 0x6d1c5a20, 0x1ce95: 0x6cbf0020, 0x1ce96: 0x6c43cc20, 0x1ce97: 0x6c9ff020,
+-	0x1ce98: 0x6c85ae20, 0x1ce99: 0x6cc65c20, 0x1ce9a: 0x6d1b3c20, 0x1ce9b: 0x6c44b020,
+-	0x1ce9c: 0x6cba4420, 0x1ce9d: 0x6c148e20, 0x1ce9e: 0x6c18aa20, 0x1ce9f: 0x6d22e820,
+-	0x1cea0: 0x6c4fa220, 0x1cea1: 0x6d3f3420, 0x1cea2: 0x6c8adc20, 0x1cea3: 0x6cf3bc20,
+-	0x1cea4: 0x6c61b420, 0x1cea5: 0x6c4a4020, 0x1cea6: 0x6c22bc20, 0x1cea7: 0x6c657620,
+-	0x1cea8: 0x6c223420, 0x1cea9: 0x6c469e20, 0x1ceaa: 0x6c49e220, 0x1ceab: 0x6c984420,
+-	0x1ceac: 0x6c13ce20, 0x1cead: 0x6c683620, 0x1ceae: 0x6c683820, 0x1ceaf: 0x6c3e2420,
+-	0x1ceb0: 0x6d20ea20, 0x1ceb1: 0x6d398e20, 0x1ceb2: 0x6d3e1420, 0x1ceb3: 0x6c675220,
+-	0x1ceb4: 0x6c5b2820, 0x1ceb5: 0x6d19b620, 0x1ceb6: 0x6c13d020, 0x1ceb7: 0x6c380820,
+-	0x1ceb8: 0x6cc64e20, 0x1ceb9: 0x6cc79420, 0x1ceba: 0x6c1cb620, 0x1cebb: 0x6c989220,
+-	0x1cebc: 0x6ce72c20, 0x1cebd: 0x6d381c20, 0x1cebe: 0x6cb8ac20, 0x1cebf: 0x6d3a0220,
+-	// Block 0x73b, offset 0x1cec0
+-	0x1cec0: 0x6d09f220, 0x1cec1: 0x6c586820, 0x1cec2: 0x6c3d5420, 0x1cec3: 0x6cc2c620,
+-	0x1cec4: 0x6c40ea20, 0x1cec5: 0x6c264620, 0x1cec6: 0x6c6d9a20, 0x1cec7: 0x6d041c20,
+-	0x1cec8: 0x6c201c20, 0x1cec9: 0x6c12ac20, 0x1ceca: 0x6c6d9c20, 0x1cecb: 0x6c374820,
+-	0x1cecc: 0x6c01a820, 0x1cecd: 0x6cbbd420, 0x1cece: 0x6c1b1220, 0x1cecf: 0x6cc58c20,
+-	0x1ced0: 0x6c666020, 0x1ced1: 0x6ce31220, 0x1ced2: 0x6c598420, 0x1ced3: 0x6cb28e20,
+-	0x1ced4: 0x6c85b020, 0x1ced5: 0x6c6c3620, 0x1ced6: 0x6c81aa20, 0x1ced7: 0x6cd5b620,
+-	0x1ced8: 0x6d3c0e20, 0x1ced9: 0x6c268c20, 0x1ceda: 0x6c63a820, 0x1cedb: 0x6cc52220,
+-	0x1cedc: 0x6c095620, 0x1cedd: 0x6d2ab420, 0x1cede: 0x6cbbd620, 0x1cedf: 0x6c5ba220,
+-	0x1cee0: 0x6c61b620, 0x1cee1: 0x6c295c20, 0x1cee2: 0x6d24c020, 0x1cee3: 0x6cc65e20,
+-	0x1cee4: 0x6c5cb620, 0x1cee5: 0x6d03d420, 0x1cee6: 0x6c95ec20, 0x1cee7: 0x6d1c5e20,
+-	0x1cee8: 0x6d09f420, 0x1cee9: 0x6c6ce420, 0x1ceea: 0x6cdcce20, 0x1ceeb: 0x6d19b820,
+-	0x1ceec: 0x6c971220, 0x1ceed: 0x6c532020, 0x1ceee: 0x6d391420, 0x1ceef: 0x6d11f620,
+-	0x1cef0: 0x6c324c20, 0x1cef1: 0x6cefa420, 0x1cef2: 0x6c83b020, 0x1cef3: 0x6c310820,
+-	0x1cef4: 0x6c3d6020, 0x1cef5: 0x6cc59220, 0x1cef6: 0x6d1a4c20, 0x1cef7: 0x6c50fc20,
+-	0x1cef8: 0x6c08a020, 0x1cef9: 0x6c108820, 0x1cefa: 0x6d27e220, 0x1cefb: 0x6c2b6620,
+-	0x1cefc: 0x6ce89820, 0x1cefd: 0x6cdbba20, 0x1cefe: 0x6cdbbc20, 0x1ceff: 0x6c19d020,
+-	// Block 0x73c, offset 0x1cf00
+-	0x1cf00: 0x6c18b420, 0x1cf01: 0x6cf3be20, 0x1cf02: 0x6c0ce420, 0x1cf03: 0x6cf5d020,
+-	0x1cf04: 0x6c450420, 0x1cf05: 0x6c85de20, 0x1cf06: 0x6cb43420, 0x1cf07: 0x6d3ae020,
+-	0x1cf08: 0x6ca10020, 0x1cf09: 0x6c85e020, 0x1cf0a: 0x6d3c1420, 0x1cf0b: 0x6d423420,
+-	0x1cf0c: 0x6ceab820, 0x1cf0d: 0x6cc03820, 0x1cf0e: 0x6ccbe420, 0x1cf0f: 0x6cdd1220,
+-	0x1cf10: 0x6c18b620, 0x1cf11: 0x6cae9620, 0x1cf12: 0x6c71ae20, 0x1cf13: 0x6c99e820,
+-	0x1cf14: 0x6c9b1220, 0x1cf15: 0x6d042420, 0x1cf16: 0x6c6da220, 0x1cf17: 0x6c17d820,
+-	0x1cf18: 0x6ccfd420, 0x1cf19: 0x6c756820, 0x1cf1a: 0x6d0c7a20, 0x1cf1b: 0x6ce66620,
+-	0x1cf1c: 0x6d1f2020, 0x1cf1d: 0x6c261e20, 0x1cf1e: 0x6c494c20, 0x1cf1f: 0x6c4ea020,
+-	0x1cf20: 0x6d1fbe20, 0x1cf21: 0x6c262020, 0x1cf22: 0x6c63b420, 0x1cf23: 0x6cede220,
+-	0x1cf24: 0x6cda9620, 0x1cf25: 0x6ca99220, 0x1cf26: 0x6cce6420, 0x1cf27: 0x6cfcac20,
+-	0x1cf28: 0x6c811a20, 0x1cf29: 0x6c3e4020, 0x1cf2a: 0x6c355a20, 0x1cf2b: 0x6ca10220,
+-	0x1cf2c: 0x6cf20420, 0x1cf2d: 0x6c6aa820, 0x1cf2e: 0x6ca3f420, 0x1cf2f: 0x6ca27c20,
+-	0x1cf30: 0x6c76c820, 0x1cf31: 0x6c7eee20, 0x1cf32: 0x6c87f820, 0x1cf33: 0x6cd26020,
+-	0x1cf34: 0x6cf28220, 0x1cf35: 0x6ce93020, 0x1cf36: 0x6cfa9620, 0x1cf37: 0x6c5db220,
+-	0x1cf38: 0x6d1f2220, 0x1cf39: 0x6d1c6020, 0x1cf3a: 0x6d1ba820, 0x1cf3b: 0x6c461e20,
+-	0x1cf3c: 0x6c213e20, 0x1cf3d: 0x6c988a20, 0x1cf3e: 0x6c988c20, 0x1cf3f: 0x6c22c220,
+-	// Block 0x73d, offset 0x1cf40
+-	0x1cf40: 0x6ced1020, 0x1cf41: 0x6c6db220, 0x1cf42: 0x6c2c4e20, 0x1cf43: 0x6cc18020,
+-	0x1cf44: 0x6c2ffe20, 0x1cf45: 0x6c648c20, 0x1cf46: 0x6d405020, 0x1cf47: 0x6c483a20,
+-	0x1cf48: 0x6c7e4420, 0x1cf49: 0x6c924820, 0x1cf4a: 0x6c711c20, 0x1cf4b: 0x6cf08620,
+-	0x1cf4c: 0x6c757020, 0x1cf4d: 0x6ca82220, 0x1cf4e: 0x6c7d5c20, 0x1cf4f: 0x6c511a20,
+-	0x1cf50: 0x6cb43a20, 0x1cf51: 0x6d290020, 0x1cf52: 0x6c430420, 0x1cf53: 0x6c4cbc20,
+-	0x1cf54: 0x6c3e6c20, 0x1cf55: 0x6c94f620, 0x1cf56: 0x6c166a20, 0x1cf57: 0x6c1daa20,
+-	0x1cf58: 0x6cd91e20, 0x1cf59: 0x6c20ca20, 0x1cf5a: 0x6d2e5e20, 0x1cf5b: 0x6c9acc20,
+-	0x1cf5c: 0x6c114420, 0x1cf5d: 0x6c037820, 0x1cf5e: 0x6c83c820, 0x1cf5f: 0x6ce8aa20,
+-	0x1cf60: 0x6c0e7020, 0x1cf61: 0x6c4eb620, 0x1cf62: 0x6c064620, 0x1cf63: 0x6cbe1220,
+-	0x1cf64: 0x6c731e20, 0x1cf65: 0x6cf60020, 0x1cf66: 0x6cbd6a20, 0x1cf67: 0x6c2bf220,
+-	0x1cf68: 0x6c6a0420, 0x1cf69: 0x6cb43820, 0x1cf6a: 0x6c296220, 0x1cf6b: 0x6c6c9020,
+-	0x1cf6c: 0x6cbbde20, 0x1cf6d: 0x6cdf2220, 0x1cf6e: 0x6c44c820, 0x1cf6f: 0x6c573420,
+-	0x1cf70: 0x6c470c20, 0x1cf71: 0x6c8cfe20, 0x1cf72: 0x6c39fe20, 0x1cf73: 0x6cbd7020,
+-	0x1cf74: 0x6c012a20, 0x1cf75: 0x6cee1620, 0x1cf76: 0x6c081c20, 0x1cf77: 0x6d38e220,
+-	0x1cf78: 0x6d0c0020, 0x1cf79: 0x6c709020, 0x1cf7a: 0x6c648e20, 0x1cf7b: 0x6c8c1e20,
+-	0x1cf7c: 0x6ce05c20, 0x1cf7d: 0x6cd4d420, 0x1cf7e: 0x6ce49e20, 0x1cf7f: 0x6c2a1420,
+-	// Block 0x73e, offset 0x1cf80
+-	0x1cf80: 0x6c561c20, 0x1cf81: 0x6cb5d020, 0x1cf82: 0x6c511c20, 0x1cf83: 0x6c253820,
+-	0x1cf84: 0x6ce22420, 0x1cf85: 0x6c210420, 0x1cf86: 0x6c098a20, 0x1cf87: 0x6c16aa20,
+-	0x1cf88: 0x6c586e20, 0x1cf89: 0x6c3aa620, 0x1cf8a: 0x6c7f0020, 0x1cf8b: 0x6cb4ee20,
+-	0x1cf8c: 0x6c9b1420, 0x1cf8d: 0x6cb2a020, 0x1cf8e: 0x6cee7420, 0x1cf8f: 0x6c288220,
+-	0x1cf90: 0x6ccc4e20, 0x1cf91: 0x6c587020, 0x1cf92: 0x6d0d6e20, 0x1cf93: 0x6d14ee20,
+-	0x1cf94: 0x6ce58420, 0x1cf95: 0x6cb5d220, 0x1cf96: 0x6ced1220, 0x1cf97: 0x6c12e220,
+-	0x1cf98: 0x6ca3bc20, 0x1cf99: 0x6d327c20, 0x1cf9a: 0x6ceba420, 0x1cf9b: 0x6c6f6c20,
+-	0x1cf9c: 0x6ce5ee20, 0x1cf9d: 0x6c954220, 0x1cf9e: 0x6c0ae020, 0x1cf9f: 0x6d199220,
+-	0x1cfa0: 0x6c9b1620, 0x1cfa1: 0x6c100820, 0x1cfa2: 0x6cada820, 0x1cfa3: 0x6c2fc620,
+-	0x1cfa4: 0x6d1c6420, 0x1cfa5: 0x6d1c6620, 0x1cfa6: 0x6d1c6820, 0x1cfa7: 0x6cfebc20,
+-	0x1cfa8: 0x6cc97420, 0x1cfa9: 0x6cbfb020, 0x1cfaa: 0x6c77fc20, 0x1cfab: 0x6cfe3620,
+-	0x1cfac: 0x6ced8620, 0x1cfad: 0x6d226020, 0x1cfae: 0x6d213620, 0x1cfaf: 0x6c3ffa20,
+-	0x1cfb0: 0x6c88fe20, 0x1cfb1: 0x6d07a220, 0x1cfb2: 0x6d07a420, 0x1cfb3: 0x6ca42a20,
+-	0x1cfb4: 0x6c12f620, 0x1cfb5: 0x6cf28e20, 0x1cfb6: 0x6c217a20, 0x1cfb7: 0x6cfece20,
+-	0x1cfb8: 0x6d210620, 0x1cfb9: 0x6c0b4020, 0x1cfba: 0x6c998420, 0x1cfbb: 0x6c013420,
+-	0x1cfbc: 0x6c364020, 0x1cfbd: 0x6c960a20, 0x1cfbe: 0x6d1c7820, 0x1cfbf: 0x6c7dfc20,
+-	// Block 0x73f, offset 0x1cfc0
+-	0x1cfc0: 0x6c7dfe20, 0x1cfc1: 0x6c676420, 0x1cfc2: 0x6c9e2a20, 0x1cfc3: 0x6d42a020,
+-	0x1cfc4: 0x6d42a220, 0x1cfc5: 0x6d409c20, 0x1cfc6: 0x6c060020, 0x1cfc7: 0x6cc74e20,
+-	0x1cfc8: 0x6cf7ec20, 0x1cfc9: 0x6d12f620, 0x1cfca: 0x6c013620, 0x1cfcb: 0x6cc19420,
+-	0x1cfcc: 0x6c64a820, 0x1cfcd: 0x6c3e8e20, 0x1cfce: 0x6c93e420, 0x1cfcf: 0x6c6dbe20,
+-	0x1cfd0: 0x6cae4220, 0x1cfd1: 0x6c3c5020, 0x1cfd2: 0x6c535220, 0x1cfd3: 0x6c535420,
+-	0x1cfd4: 0x6c540820, 0x1cfd5: 0x6d0e7a20, 0x1cfd6: 0x6ce86420, 0x1cfd7: 0x6d311420,
+-	0x1cfd8: 0x6d3e4620, 0x1cfd9: 0x6cfd7a20, 0x1cfda: 0x6cc5f620, 0x1cfdb: 0x6c43f420,
+-	0x1cfdc: 0x6cb82c20, 0x1cfdd: 0x6cbe8020, 0x1cfde: 0x6c9cf820, 0x1cfdf: 0x6c59c820,
+-	0x1cfe0: 0x6ccff220, 0x1cfe1: 0x6cb43c20, 0x1cfe2: 0x6c413820, 0x1cfe3: 0x6c303020,
+-	0x1cfe4: 0x6d392a20, 0x1cfe5: 0x6c669620, 0x1cfe6: 0x6cefcc20, 0x1cfe7: 0x6c0f0820,
+-	0x1cfe8: 0x6cee9220, 0x1cfe9: 0x6cabc620, 0x1cfea: 0x6c620e20, 0x1cfeb: 0x6c556620,
+-	0x1cfec: 0x6d2a0820, 0x1cfed: 0x6c636220, 0x1cfee: 0x6c32c620, 0x1cfef: 0x6d120a20,
+-	0x1cff0: 0x6cdbc420, 0x1cff1: 0x6c231c20, 0x1cff2: 0x6cc2fa20, 0x1cff3: 0x6cee9420,
+-	0x1cff4: 0x6d315820, 0x1cff5: 0x6c7c7a20, 0x1cff6: 0x6ce67820, 0x1cff7: 0x6c5cd220,
+-	0x1cff8: 0x6cf7ee20, 0x1cff9: 0x6cd1c220, 0x1cffa: 0x6cb79a20, 0x1cffb: 0x6c7f9e20,
+-	0x1cffc: 0x6d3f9420, 0x1cffd: 0x6d10a820, 0x1cffe: 0x6d24f020, 0x1cfff: 0x6c9a0620,
+-	// Block 0x740, offset 0x1d000
+-	0x1d000: 0x6d275220, 0x1d001: 0x6cd5c820, 0x1d002: 0x6c2c6220, 0x1d003: 0x6d3bc620,
+-	0x1d004: 0x6c491820, 0x1d005: 0x6cc4dc20, 0x1d006: 0x6d08e020, 0x1d007: 0x6c15b820,
+-	0x1d008: 0x6c765a20, 0x1d009: 0x6c7d0020, 0x1d00a: 0x6c571620, 0x1d00b: 0x6c67a820,
+-	0x1d00c: 0x6c908e20, 0x1d00d: 0x6cefce20, 0x1d00e: 0x6cac2a20, 0x1d00f: 0x6d206c20,
+-	0x1d010: 0x6cd9b620, 0x1d011: 0x6d1b6220, 0x1d012: 0x6cd1d420, 0x1d013: 0x6c215420,
+-	0x1d014: 0x6cd27620, 0x1d015: 0x6d275a20, 0x1d016: 0x6d317220, 0x1d017: 0x6c812220,
+-	0x1d018: 0x6cc7b420, 0x1d019: 0x6c9b2a20, 0x1d01a: 0x6c863a20, 0x1d01b: 0x6cc38e20,
+-	0x1d01c: 0x6cdb9c20, 0x1d01d: 0x6d258a20, 0x1d01e: 0x6c863c20, 0x1d01f: 0x6c71c420,
+-	0x1d020: 0x6cf65620, 0x1d021: 0x6c057e20, 0x1d022: 0x6c1e8220, 0x1d023: 0x6d062020,
+-	0x1d024: 0x6ce8cc20, 0x1d025: 0x6c8e7020, 0x1d026: 0x6c5de020, 0x1d027: 0x6c2d2220,
+-	0x1d028: 0x6cba5e20, 0x1d029: 0x6d409e20, 0x1d02a: 0x6cb39820, 0x1d02b: 0x6c25e420,
+-	0x1d02c: 0x6d24fa20, 0x1d02d: 0x6c1e9020, 0x1d02e: 0x6d237a20, 0x1d02f: 0x6c7afe20,
+-	0x1d030: 0x6cac6220, 0x1d031: 0x6cb43e20, 0x1d032: 0x6cb44020, 0x1d033: 0x6ca35820,
+-	0x1d034: 0x6cd78820, 0x1d035: 0x6cf78820, 0x1d036: 0x6c3b7c20, 0x1d037: 0x6d27b820,
+-	0x1d038: 0x6d32d220, 0x1d039: 0x6c64c020, 0x1d03a: 0x6c605e20, 0x1d03b: 0x6cc92220,
+-	0x1d03c: 0x6c123620, 0x1d03d: 0x6c371820, 0x1d03e: 0x6c9c5820, 0x1d03f: 0x6c4fa820,
+-	// Block 0x741, offset 0x1d040
+-	0x1d040: 0x6cdcd820, 0x1d041: 0x6d317420, 0x1d042: 0x6ca00c20, 0x1d043: 0x6cd9b820,
+-	0x1d044: 0x6d06fe20, 0x1d045: 0x6c8e7220, 0x1d046: 0x6cf78a20, 0x1d047: 0x6c479220,
+-	0x1d048: 0x6c80c020, 0x1d049: 0x6cc68c20, 0x1d04a: 0x6cf25420, 0x1d04b: 0x6c414820,
+-	0x1d04c: 0x6c263020, 0x1d04d: 0x6cd1d620, 0x1d04e: 0x6ce10820, 0x1d04f: 0x6c95b620,
+-	0x1d050: 0x6cc82020, 0x1d051: 0x6cdd2820, 0x1d052: 0x6d07ae20, 0x1d053: 0x6c073620,
+-	0x1d054: 0x6d11ba20, 0x1d055: 0x6c4b5620, 0x1d056: 0x6c09da20, 0x1d057: 0x6d3ffc20,
+-	0x1d058: 0x6c4bd220, 0x1d059: 0x6d42ba20, 0x1d05a: 0x6ce58620, 0x1d05b: 0x6c12fe20,
+-	0x1d05c: 0x6cae2e20, 0x1d05d: 0x6c7fa420, 0x1d05e: 0x6c28b620, 0x1d05f: 0x6c622420,
+-	0x1d060: 0x6c83f420, 0x1d061: 0x6ccffa20, 0x1d062: 0x6c810620, 0x1d063: 0x6d237c20,
+-	0x1d064: 0x6c8e2e20, 0x1d065: 0x6d1c8420, 0x1d066: 0x6ca13020, 0x1d067: 0x6c2e3020,
+-	0x1d068: 0x6ce58e20, 0x1d069: 0x6c993c20, 0x1d06a: 0x6ce6fa20, 0x1d06b: 0x6c1f5a20,
+-	0x1d06c: 0x6caeae20, 0x1d06d: 0x6c014020, 0x1d06e: 0x6c881820, 0x1d06f: 0x6c233220,
+-	0x1d070: 0x6cf80220, 0x1d071: 0x6cb2ae20, 0x1d072: 0x6cbfb820, 0x1d073: 0x6c6ca620,
+-	0x1d074: 0x6c215820, 0x1d075: 0x6c6b1420, 0x1d076: 0x6cef2420, 0x1d077: 0x6ce99620,
+-	0x1d078: 0x6c128220, 0x1d079: 0x6d23ca20, 0x1d07a: 0x6d183620, 0x1d07b: 0x6d3ed220,
+-	0x1d07c: 0x6c8a7220, 0x1d07d: 0x6c09dc20, 0x1d07e: 0x6c91ce20, 0x1d07f: 0x6d077620,
+-	// Block 0x742, offset 0x1d080
+-	0x1d080: 0x6c10a820, 0x1d081: 0x6d2ed020, 0x1d082: 0x6c824a20, 0x1d083: 0x6cbb1c20,
+-	0x1d084: 0x6c97f220, 0x1d085: 0x6d0cb820, 0x1d086: 0x6c8d3e20, 0x1d087: 0x6c621020,
+-	0x1d088: 0x6c0c0e20, 0x1d089: 0x6c4bde20, 0x1d08a: 0x6c4e5c20, 0x1d08b: 0x6c2b8220,
+-	0x1d08c: 0x6cdaf020, 0x1d08d: 0x6c929620, 0x1d08e: 0x6ccf6c20, 0x1d08f: 0x6cce1420,
+-	0x1d090: 0x6c2b8420, 0x1d091: 0x6c9ee420, 0x1d092: 0x6d09a220, 0x1d093: 0x6c97f420,
+-	0x1d094: 0x6c0f3420, 0x1d095: 0x6c2c8420, 0x1d096: 0x6c25ea20, 0x1d097: 0x6d311620,
+-	0x1d098: 0x6cd00a20, 0x1d099: 0x6d08a620, 0x1d09a: 0x6cf0b220, 0x1d09b: 0x6c558220,
+-	0x1d09c: 0x6c025620, 0x1d09d: 0x6c9cfc20, 0x1d09e: 0x6c90aa20, 0x1d09f: 0x6c244a20,
+-	0x1d0a0: 0x6d37c220, 0x1d0a1: 0x6c114820, 0x1d0a2: 0x6cb33220, 0x1d0a3: 0x6c67b220,
+-	0x1d0a4: 0x6c9d6e20, 0x1d0a5: 0x6c233420, 0x1d0a6: 0x6ca7a220, 0x1d0a7: 0x6c5c0220,
+-	0x1d0a8: 0x6c738620, 0x1d0a9: 0x6d1a8420, 0x1d0aa: 0x6c66ac20, 0x1d0ab: 0x6ca6f020,
+-	0x1d0ac: 0x6cd50220, 0x1d0ad: 0x6d19f020, 0x1d0ae: 0x6c4c7e20, 0x1d0af: 0x6c18d620,
+-	0x1d0b0: 0x6c56bc20, 0x1d0b1: 0x6ccc0020, 0x1d0b2: 0x6c79fc20, 0x1d0b3: 0x6cba6e20,
+-	0x1d0b4: 0x6c966e20, 0x1d0b5: 0x6d29e420, 0x1d0b6: 0x6d2b5a20, 0x1d0b7: 0x6cbb1620,
+-	0x1d0b8: 0x6c30ba20, 0x1d0b9: 0x6c88c620, 0x1d0ba: 0x6c8c5a20, 0x1d0bb: 0x6c79fe20,
+-	0x1d0bc: 0x6c007020, 0x1d0bd: 0x6c0a0a20, 0x1d0be: 0x6c843220, 0x1d0bf: 0x6cf00a20,
+-	// Block 0x743, offset 0x1d0c0
+-	0x1d0c0: 0x6c609620, 0x1d0c1: 0x6cb9c420, 0x1d0c2: 0x6cd17620, 0x1d0c3: 0x6c385c20,
+-	0x1d0c4: 0x6c9b3c20, 0x1d0c5: 0x6cab9020, 0x1d0c6: 0x6c15dc20, 0x1d0c7: 0x6c2d2820,
+-	0x1d0c8: 0x6d0aa420, 0x1d0c9: 0x6c687020, 0x1d0ca: 0x6cc8ac20, 0x1d0cb: 0x6cc8ae20,
+-	0x1d0cc: 0x6c82d420, 0x1d0cd: 0x6d218e20, 0x1d0ce: 0x6cbbf220, 0x1d0cf: 0x6c1ea020,
+-	0x1d0d0: 0x6c575220, 0x1d0d1: 0x6c64e220, 0x1d0d2: 0x6c971a20, 0x1d0d3: 0x6d27c220,
+-	0x1d0d4: 0x6c05b820, 0x1d0d5: 0x6d1f6820, 0x1d0d6: 0x6cc1aa20, 0x1d0d7: 0x6c92da20,
+-	0x1d0d8: 0x6cc52a20, 0x1d0d9: 0x6c5c1e20, 0x1d0da: 0x6c369020, 0x1d0db: 0x6ce36a20,
+-	0x1d0dc: 0x6c3a6a20, 0x1d0dd: 0x6c749e20, 0x1d0de: 0x6d41c820, 0x1d0df: 0x6c384020,
+-	0x1d0e0: 0x6cc7c020, 0x1d0e1: 0x6c3b8e20, 0x1d0e2: 0x6c7d1620, 0x1d0e3: 0x6cd75820,
+-	0x1d0e4: 0x6cc8a220, 0x1d0e5: 0x6d0b5e20, 0x1d0e6: 0x6d05dc20, 0x1d0e7: 0x6c403c20,
+-	0x1d0e8: 0x6c74a020, 0x1d0e9: 0x6c298a20, 0x1d0ea: 0x6cf3e420, 0x1d0eb: 0x6c303a20,
+-	0x1d0ec: 0x6cd82420, 0x1d0ed: 0x6cff1820, 0x1d0ee: 0x6cf8d020, 0x1d0ef: 0x6c8fa020,
+-	0x1d0f0: 0x6cf16420, 0x1d0f1: 0x6ccee820, 0x1d0f2: 0x6cb64220, 0x1d0f3: 0x6c64e420,
+-	0x1d0f4: 0x6d284e20, 0x1d0f5: 0x6cdcde20, 0x1d0f6: 0x6c8d5a20, 0x1d0f7: 0x6d23f220,
+-	0x1d0f8: 0x6cf9ec20, 0x1d0f9: 0x6cf27220, 0x1d0fa: 0x6c609820, 0x1d0fb: 0x6c538820,
+-	0x1d0fc: 0x6cd8ee20, 0x1d0fd: 0x6ca9ca20, 0x1d0fe: 0x6c82da20, 0x1d0ff: 0x6d07ce20,
+-	// Block 0x744, offset 0x1d100
+-	0x1d100: 0x6d285620, 0x1d101: 0x6d23cc20, 0x1d102: 0x6cf7a420, 0x1d103: 0x6c506e20,
+-	0x1d104: 0x6c05d620, 0x1d105: 0x6c4fae20, 0x1d106: 0x6c00d220, 0x1d107: 0x6ceeba20,
+-	0x1d108: 0x6c5c3c20, 0x1d109: 0x6c5c3e20, 0x1d10a: 0x6c628220, 0x1d10b: 0x6c226e20,
+-	0x1d10c: 0x6cfd8420, 0x1d10d: 0x6ced9a20, 0x1d10e: 0x6c9ee820, 0x1d10f: 0x6d18b420,
+-	0x1d110: 0x6c838820, 0x1d111: 0x6c677e20, 0x1d112: 0x6c120820, 0x1d113: 0x6cd01e20,
+-	0x1d114: 0x6cbb2620, 0x1d115: 0x6c885a20, 0x1d116: 0x6c781c20, 0x1d117: 0x6d25ae20,
+-	0x1d118: 0x6c26c020, 0x1d119: 0x6ce42220, 0x1d11a: 0x6ce0d420, 0x1d11b: 0x6d08e820,
+-	0x1d11c: 0x6c0a5c20, 0x1d11d: 0x6d2d9a20, 0x1d11e: 0x6cdce020, 0x1d11f: 0x6cfad820,
+-	0x1d120: 0x6c38c420, 0x1d121: 0x6c2f8220, 0x1d122: 0x6d021c20, 0x1d123: 0x6c47d220,
+-	0x1d124: 0x6d021e20, 0x1d125: 0x6cd56e20, 0x1d126: 0x6c66d420, 0x1d127: 0x6c4fb020,
+-	0x1d128: 0x6c52ca20, 0x1d129: 0x6cc99820, 0x1d12a: 0x6d02f220, 0x1d12b: 0x6d09aa20,
+-	0x1d12c: 0x6d122420, 0x1d12d: 0x6c046a20, 0x1d12e: 0x6cda2c20, 0x1d12f: 0x6cd57020,
+-	0x1d130: 0x6d09b420, 0x1d131: 0x6c336a20, 0x1d132: 0x6cb21a20, 0x1d133: 0x6cf01820,
+-	0x1d134: 0x6ca92820, 0x1d135: 0x6c1df020, 0x1d136: 0x6c970420, 0x1d137: 0x6cc7d420,
+-	0x1d138: 0x6cb18620, 0x1d139: 0x6cdf4c20, 0x1d13a: 0x6c62a020, 0x1d13b: 0x6d2a5a20,
+-	0x1d13c: 0x6c18f020, 0x1d13d: 0x6d319a20, 0x1d13e: 0x6c37a820, 0x1d13f: 0x6ca65420,
+-	// Block 0x745, offset 0x1d140
+-	0x1d140: 0x6d1ca820, 0x1d141: 0x6c432620, 0x1d142: 0x6c23b820, 0x1d143: 0x6cff2420,
+-	0x1d144: 0x6cb66020, 0x1d145: 0x6c382820, 0x1d146: 0x6c65e420, 0x1d147: 0x6d073e20,
+-	0x1d148: 0x6c7ca620, 0x1d149: 0x6c60c620, 0x1d14a: 0x6c0b5820, 0x1d14b: 0x6c2e4620,
+-	0x1d14c: 0x6c9d9420, 0x1d14d: 0x6c7fc420, 0x1d14e: 0x6c6d6420, 0x1d14f: 0x6c124e20,
+-	0x1d150: 0x6c9ea020, 0x1d151: 0x6cbf6e20, 0x1d152: 0x6cbcec20, 0x1d153: 0x6cfc3420,
+-	0x1d154: 0x6c8a5420, 0x1d155: 0x6cab9820, 0x1d156: 0x6cfbb620, 0x1d157: 0x6cdb4020,
+-	0x1d158: 0x6c936a20, 0x1d159: 0x6d18f020, 0x1d15a: 0x6d075220, 0x1d15b: 0x6d014c20,
+-	0x1d15c: 0x6c847220, 0x1d15d: 0x6d18f220, 0x1d15e: 0x6c7e6620, 0x1d15f: 0x6c82f020,
+-	0x1d160: 0x6c69ca20, 0x1d161: 0x6c2b9a20, 0x1d162: 0x6d355a20, 0x1d163: 0x6c06bc20,
+-	0x1d164: 0x6ce2c220, 0x1d165: 0x6d123620, 0x1d166: 0x6ca17c20, 0x1d167: 0x6c595e20,
+-	0x1d168: 0x6c0c3e20, 0x1d169: 0x6c386820, 0x1d16a: 0x6cda3220, 0x1d16b: 0x6ce02e20,
+-	0x1d16c: 0x6ce99a20, 0x1d16d: 0x6cbf8020, 0x1d16e: 0x6cbc0820, 0x1d16f: 0x6cf0f620,
+-	0x1d170: 0x6c8ebc20, 0x1d171: 0x6c5c5c20, 0x1d172: 0x6cabac20, 0x1d173: 0x6c432c20,
+-	0x1d174: 0x6d286220, 0x1d175: 0x6c068a20, 0x1d176: 0x6c870a20, 0x1d177: 0x6cd57e20,
+-	0x1d178: 0x6c1ebe20, 0x1d179: 0x6c007e20, 0x1d17a: 0x6c8c7a20, 0x1d17b: 0x6d2a6020,
+-	0x1d17c: 0x6d07e620, 0x1d17d: 0x6cbe2820, 0x1d17e: 0x6c7f7220, 0x1d17f: 0x6c5e3220,
+-	// Block 0x746, offset 0x1d180
+-	0x1d180: 0x6cebb620, 0x1d181: 0x6cf54420, 0x1d182: 0x6cc8b820, 0x1d183: 0x6cc8ba20,
+-	0x1d184: 0x6cb68420, 0x1d185: 0x6c528020, 0x1d186: 0x6c917820, 0x1d187: 0x6cda6420,
+-	0x1d188: 0x6ce9d020, 0x1d189: 0x6c9b8a20, 0x1d18a: 0x6d287020, 0x1d18b: 0x6cb2dc20,
+-	0x1d18c: 0x6d22b020, 0x1d18d: 0x6d09c220, 0x1d18e: 0x6c62be20, 0x1d18f: 0x6c6eec20,
+-	0x1d190: 0x6d07e820, 0x1d191: 0x6ca09020, 0x1d192: 0x6cc0c220, 0x1d193: 0x6cda6620,
+-	0x1d194: 0x6c6eee20, 0x1d195: 0x6c3d0420, 0x1d196: 0x6ca8a620, 0x1d197: 0x6c0ffe20,
+-	0x1d198: 0x6cc4ea20, 0x1d199: 0x6d193020, 0x1d19a: 0x6cfc4a20, 0x1d19b: 0x6d21e420,
+-	0x1d19c: 0x6c718820, 0x1d19d: 0x6c892e20, 0x1d19e: 0x6c88dc20, 0x1d19f: 0x6d1b1e20,
+-	0x1d1a0: 0x6cbb2e20, 0x1d1a1: 0x6d1c2420, 0x1d1a2: 0x6c8fcc20, 0x1d1a3: 0x6ce82220,
+-	0x1d1a4: 0x6cf05420, 0x1d1a5: 0x6d270c20, 0x1d1a6: 0x6c8d9420, 0x1d1a7: 0x6cc1f020,
+-	0x1d1a8: 0x6d117020, 0x1d1a9: 0x6c38e620, 0x1d1aa: 0x6c9a3c20, 0x1d1ab: 0x6c4f3020,
+-	0x1d1ac: 0x6c7c5620, 0x1d1ad: 0x6c7ff020, 0x1d1ae: 0x6c62d220, 0x1d1af: 0x6c29a220,
+-	0x1d1b0: 0x6c981820, 0x1d1b1: 0x6c836220, 0x1d1b2: 0x6c828820, 0x1d1b3: 0x6c5b0a20,
+-	0x1d1b4: 0x6c3c8220, 0x1d1b5: 0x6d342820, 0x1d1b6: 0x6cf10e20, 0x1d1b7: 0x6c7cb620,
+-	0x1d1b8: 0x6d2ea220, 0x1d1b9: 0x6c580620, 0x1d1ba: 0x6c84ac20, 0x1d1bb: 0x6c62e220,
+-	0x1d1bc: 0x6c9cb620, 0x1d1bd: 0x6c830a20, 0x1d1be: 0x6c582220, 0x1d1bf: 0x6c957a20,
+-	// Block 0x747, offset 0x1d1c0
+-	0x1d1c0: 0x6c5fa020, 0x1d1c1: 0x6c7cbe20, 0x1d1c2: 0x6c934020, 0x1d1c3: 0x6c655020,
+-	0x1d1c4: 0x6cc9ba20, 0x1d1c5: 0x6ce2e620, 0x1d1c6: 0x6c829e20, 0x1d1c7: 0x6cc36820,
+-	0x1d1c8: 0x6cff6020, 0x1d1c9: 0x6d197420, 0x1d1ca: 0x6c947220, 0x1d1cb: 0x6c9ae620,
+-	0x1d1cc: 0x6c0cd420, 0x1d1cd: 0x6c549420, 0x1d1ce: 0x6c561220, 0x1d1cf: 0x6c91b820,
+-	0x1d1d0: 0x6caaa220, 0x1d1d1: 0x6c93d420, 0x1d1d2: 0x6cd7da20, 0x1d1d3: 0x6cfeaa20,
+-	0x1d1d4: 0x6cb98220, 0x1d1d5: 0x6c1f3620, 0x1d1d6: 0x6c54c620, 0x1d1d7: 0x6d058a20,
+-	0x1d1d8: 0x6c25d820, 0x1d1d9: 0x6c3e6e20, 0x1d1da: 0x6d058c20, 0x1d1db: 0x6d05a820,
+-	0x1d1dc: 0x6c91c420, 0x1d1dd: 0x6c562420, 0x1d1de: 0x6d216620, 0x1d1df: 0x6c504a20,
+-	0x1d1e0: 0x6c686020, 0x1d1e1: 0x6c725820, 0x1d1e2: 0x6c4c8620, 0x1d1e3: 0x6c066820,
+-	0x1d1e4: 0x6d0cd220, 0x1d1e5: 0x6d2e8220, 0x1d1e6: 0x6d2e8420, 0x1d1e7: 0x6c7c4820,
+-	0x1d1e8: 0x6c0d5620, 0x1d1e9: 0x6cf90620, 0x1d1ea: 0x6cd63220, 0x1d1eb: 0x6c1d0820,
+-	0x1d1ec: 0x6cc00220, 0x1d1ed: 0x6c2db220, 0x1d1ee: 0x6c612620, 0x1d1ef: 0x6cc00c20,
+-	0x1d1f0: 0x6c2f5820, 0x1d1f1: 0x6cd19a20, 0x1d1f2: 0x6cf95020, 0x1d1f3: 0x6c740820,
+-	0x1d1f4: 0x6d302a20, 0x1d1f5: 0x6ccf0a20, 0x1d1f6: 0x6d208020, 0x1d1f7: 0x6c4dea20,
+-	0x1d1f8: 0x6d3efe20, 0x1d1f9: 0x6c532220, 0x1d1fa: 0x6c5a9a20, 0x1d1fb: 0x6c9b0c20,
+-	0x1d1fc: 0x6c447e20, 0x1d1fd: 0x6cdbb020, 0x1d1fe: 0x6cf95a20, 0x1d1ff: 0x6c149420,
+-	// Block 0x748, offset 0x1d200
+-	0x1d200: 0x6cd25620, 0x1d201: 0x6d15d620, 0x1d202: 0x6c969620, 0x1d203: 0x6cfe2020,
+-	0x1d204: 0x6c399420, 0x1d205: 0x6c360220, 0x1d206: 0x6c034020, 0x1d207: 0x6c1b9620,
+-	0x1d208: 0x6cb8ca20, 0x1d209: 0x6cf18e20, 0x1d20a: 0x6cf19020, 0x1d20b: 0x6cc8c620,
+-	0x1d20c: 0x6c056620, 0x1d20d: 0x6cafd220, 0x1d20e: 0x6d269a20, 0x1d20f: 0x6d269c20,
+-	0x1d210: 0x6c756a20, 0x1d211: 0x6cb5ae20, 0x1d212: 0x6ce73c20, 0x1d213: 0x6d1ad620,
+-	0x1d214: 0x6cb5b020, 0x1d215: 0x6c119020, 0x1d216: 0x6d255420, 0x1d217: 0x6c741a20,
+-	0x1d218: 0x6c5b3020, 0x1d219: 0x6cbd6c20, 0x1d21a: 0x6cb5b220, 0x1d21b: 0x6d382220,
+-	0x1d21c: 0x6d0b2220, 0x1d21d: 0x6c4fc220, 0x1d21e: 0x6ca27e20, 0x1d21f: 0x6cede420,
+-	0x1d220: 0x6c3b6820, 0x1d221: 0x6c3b6a20, 0x1d222: 0x6c4f6e20, 0x1d223: 0x6c462e20,
+-	0x1d224: 0x6d2a4620, 0x1d225: 0x6c3fd420, 0x1d226: 0x6cc47020, 0x1d227: 0x6c6bda20,
+-	0x1d228: 0x6c3e4220, 0x1d229: 0x6c1aa420, 0x1d22a: 0x6c30ea20, 0x1d22b: 0x6c064820,
+-	0x1d22c: 0x6cfc0620, 0x1d22d: 0x6ca5de20, 0x1d22e: 0x6ce27820, 0x1d22f: 0x6cbfac20,
+-	0x1d230: 0x6d1f2c20, 0x1d231: 0x6d2cc220, 0x1d232: 0x6cb2a220, 0x1d233: 0x6c1b1e20,
+-	0x1d234: 0x6d204220, 0x1d235: 0x6c511e20, 0x1d236: 0x6c4da020, 0x1d237: 0x6c723420,
+-	0x1d238: 0x6c85fe20, 0x1d239: 0x6c3fe620, 0x1d23a: 0x6cc47620, 0x1d23b: 0x6d2c2a20,
+-	0x1d23c: 0x6c468220, 0x1d23d: 0x6cafe220, 0x1d23e: 0x6cafe420, 0x1d23f: 0x6cfb5220,
+-	// Block 0x749, offset 0x1d240
+-	0x1d240: 0x6d3af020, 0x1d241: 0x6c2dc820, 0x1d242: 0x6c0ce820, 0x1d243: 0x6c0de220,
+-	0x1d244: 0x6c470e20, 0x1d245: 0x6d2d7020, 0x1d246: 0x6cc10620, 0x1d247: 0x6ccf1220,
+-	0x1d248: 0x6ce5fa20, 0x1d249: 0x6c8d0020, 0x1d24a: 0x6c478420, 0x1d24b: 0x6c288420,
+-	0x1d24c: 0x6c478620, 0x1d24d: 0x6d1c6a20, 0x1d24e: 0x6c860020, 0x1d24f: 0x6c196a20,
+-	0x1d250: 0x6cc11220, 0x1d251: 0x6ca1d620, 0x1d252: 0x6c43f620, 0x1d253: 0x6c22ca20,
+-	0x1d254: 0x6c5b3820, 0x1d255: 0x6c5b3a20, 0x1d256: 0x6c986a20, 0x1d257: 0x6c3ffc20,
+-	0x1d258: 0x6d0fbc20, 0x1d259: 0x6cebde20, 0x1d25a: 0x6c8b0e20, 0x1d25b: 0x6d39ac20,
+-	0x1d25c: 0x6d13f820, 0x1d25d: 0x6cfb6220, 0x1d25e: 0x6c7e0020, 0x1d25f: 0x6c684e20,
+-	0x1d260: 0x6c861a20, 0x1d261: 0x6d17be20, 0x1d262: 0x6cb2b020, 0x1d263: 0x6cb4fc20,
+-	0x1d264: 0x6c4cfe20, 0x1d265: 0x6ccf1a20, 0x1d266: 0x6d14fc20, 0x1d267: 0x6cee2420,
+-	0x1d268: 0x6ca11c20, 0x1d269: 0x6cbf3220, 0x1d26a: 0x6cbcc420, 0x1d26b: 0x6c4b0420,
+-	0x1d26c: 0x6cbf3420, 0x1d26d: 0x6d364020, 0x1d26e: 0x6c976420, 0x1d26f: 0x6c81f820,
+-	0x1d270: 0x6d305c20, 0x1d271: 0x6c63c220, 0x1d272: 0x6ca4ae20, 0x1d273: 0x6cd7ee20,
+-	0x1d274: 0x6cb5f020, 0x1d275: 0x6d038420, 0x1d276: 0x6c6bee20, 0x1d277: 0x6cc07c20,
+-	0x1d278: 0x6cce7a20, 0x1d279: 0x6d1e4c20, 0x1d27a: 0x6c63ce20, 0x1d27b: 0x6cea0220,
+-	0x1d27c: 0x6c17de20, 0x1d27d: 0x6c044e20, 0x1d27e: 0x6c357620, 0x1d27f: 0x6c4ed420,
+-	// Block 0x74a, offset 0x1d280
+-	0x1d280: 0x6cd56420, 0x1d281: 0x6d081620, 0x1d282: 0x6c3c5820, 0x1d283: 0x6cd0b820,
+-	0x1d284: 0x6cd0ba20, 0x1d285: 0x6c3f7020, 0x1d286: 0x6cfce020, 0x1d287: 0x6d2ffe20,
+-	0x1d288: 0x6cf3da20, 0x1d289: 0x6c3ea820, 0x1d28a: 0x6c83f820, 0x1d28b: 0x6c80d420,
+-	0x1d28c: 0x6c09de20, 0x1d28d: 0x6c1e9220, 0x1d28e: 0x6d24fc20, 0x1d28f: 0x6d1fd820,
+-	0x1d290: 0x6c6af820, 0x1d291: 0x6c288e20, 0x1d292: 0x6d0ca220, 0x1d293: 0x6ce67a20,
+-	0x1d294: 0x6c2d6820, 0x1d295: 0x6cea0420, 0x1d296: 0x6c5b3c20, 0x1d297: 0x6cf29820,
+-	0x1d298: 0x6d340420, 0x1d299: 0x6cd92c20, 0x1d29a: 0x6c3a1420, 0x1d29b: 0x6c70b620,
+-	0x1d29c: 0x6c9d7020, 0x1d29d: 0x6cb62c20, 0x1d29e: 0x6cb62e20, 0x1d29f: 0x6d23a820,
+-	0x1d2a0: 0x6c75da20, 0x1d2a1: 0x6c7e8a20, 0x1d2a2: 0x6c9be220, 0x1d2a3: 0x6cbac420,
+-	0x1d2a4: 0x6cd80820, 0x1d2a5: 0x6cf68020, 0x1d2a6: 0x6c950820, 0x1d2a7: 0x6c865420,
+-	0x1d2a8: 0x6c2ed620, 0x1d2a9: 0x6ce59a20, 0x1d2aa: 0x6ce23220, 0x1d2ab: 0x6c7d7a20,
+-	0x1d2ac: 0x6c4e2620, 0x1d2ad: 0x6c4eec20, 0x1d2ae: 0x6d23aa20, 0x1d2af: 0x6c058420,
+-	0x1d2b0: 0x6c3a4020, 0x1d2b1: 0x6cb00c20, 0x1d2b2: 0x6ceea820, 0x1d2b3: 0x6c339e20,
+-	0x1d2b4: 0x6d183820, 0x1d2b5: 0x6d250c20, 0x1d2b6: 0x6cddd020, 0x1d2b7: 0x6cc30c20,
+-	0x1d2b8: 0x6cba1a20, 0x1d2b9: 0x6cc8d820, 0x1d2ba: 0x6ca5fc20, 0x1d2bb: 0x6cbe5220,
+-	0x1d2bc: 0x6cf0b420, 0x1d2bd: 0x6c899e20, 0x1d2be: 0x6c4cc820, 0x1d2bf: 0x6cec9620,
+-	// Block 0x74b, offset 0x1d2c0
+-	0x1d2c0: 0x6c301020, 0x1d2c1: 0x6c367220, 0x1d2c2: 0x6c04d020, 0x1d2c3: 0x6c2c8620,
+-	0x1d2c4: 0x6cee3420, 0x1d2c5: 0x6c11a020, 0x1d2c6: 0x6d102820, 0x1d2c7: 0x6d1d6820,
+-	0x1d2c8: 0x6c4c3220, 0x1d2c9: 0x6c150e20, 0x1d2ca: 0x6c2fb420, 0x1d2cb: 0x6c7e8c20,
+-	0x1d2cc: 0x6c782c20, 0x1d2cd: 0x6c6afa20, 0x1d2ce: 0x6d005020, 0x1d2cf: 0x6ce68e20,
+-	0x1d2d0: 0x6c99b220, 0x1d2d1: 0x6d05de20, 0x1d2d2: 0x6c9dd020, 0x1d2d3: 0x6d219020,
+-	0x1d2d4: 0x6c6a3220, 0x1d2d5: 0x6cd28020, 0x1d2d6: 0x6d07c820, 0x1d2d7: 0x6c59f620,
+-	0x1d2d8: 0x6d0dce20, 0x1d2d9: 0x6c0b0420, 0x1d2da: 0x6cc75e20, 0x1d2db: 0x6ceeb220,
+-	0x1d2dc: 0x6c403e20, 0x1d2dd: 0x6d25a020, 0x1d2de: 0x6c9aaa20, 0x1d2df: 0x6cf14620,
+-	0x1d2e0: 0x6c3ee220, 0x1d2e1: 0x6cc7c220, 0x1d2e2: 0x6d00e220, 0x1d2e3: 0x6d1f6a20,
+-	0x1d2e4: 0x6cc09020, 0x1d2e5: 0x6c990020, 0x1d2e6: 0x6cf97820, 0x1d2e7: 0x6d1be020,
+-	0x1d2e8: 0x6cd1f020, 0x1d2e9: 0x6c1d2020, 0x1d2ea: 0x6ce0ce20, 0x1d2eb: 0x6d39be20,
+-	0x1d2ec: 0x6d3fba20, 0x1d2ed: 0x6ce36c20, 0x1d2ee: 0x6c404020, 0x1d2ef: 0x6d25a220,
+-	0x1d2f0: 0x6c7c9820, 0x1d2f1: 0x6c9b3e20, 0x1d2f2: 0x6c7e9620, 0x1d2f3: 0x6c31b220,
+-	0x1d2f4: 0x6c559620, 0x1d2f5: 0x6cbfc220, 0x1d2f6: 0x6c2ee020, 0x1d2f7: 0x6c866420,
+-	0x1d2f8: 0x6cf29c20, 0x1d2f9: 0x6d276220, 0x1d2fa: 0x6cc24e20, 0x1d2fb: 0x6ca43a20,
+-	0x1d2fc: 0x6c90b620, 0x1d2fd: 0x6c211220, 0x1d2fe: 0x6cc6a820, 0x1d2ff: 0x6d1c9220,
+-	// Block 0x74c, offset 0x1d300
+-	0x1d300: 0x6c677620, 0x1d301: 0x6c051420, 0x1d302: 0x6c80d820, 0x1d303: 0x6cad0e20,
+-	0x1d304: 0x6cd82c20, 0x1d305: 0x6cf6da20, 0x1d306: 0x6c22de20, 0x1d307: 0x6cf6dc20,
+-	0x1d308: 0x6d25b020, 0x1d309: 0x6cf23c20, 0x1d30a: 0x6c885c20, 0x1d30b: 0x6cd9dc20,
+-	0x1d30c: 0x6c04a020, 0x1d30d: 0x6cc6b220, 0x1d30e: 0x6cc6b420, 0x1d30f: 0x6c60b220,
+-	0x1d310: 0x6cf38220, 0x1d311: 0x6d055020, 0x1d312: 0x6c4f0e20, 0x1d313: 0x6cbdac20,
+-	0x1d314: 0x6d156020, 0x1d315: 0x6c089020, 0x1d316: 0x6c575420, 0x1d317: 0x6ce13c20,
+-	0x1d318: 0x6d161420, 0x1d319: 0x6c327c20, 0x1d31a: 0x6ca3d620, 0x1d31b: 0x6c517820,
+-	0x1d31c: 0x6c55c020, 0x1d31d: 0x6c4a8a20, 0x1d31e: 0x6c96a420, 0x1d31f: 0x6ca01a20,
+-	0x1d320: 0x6d18b620, 0x1d321: 0x6cf1b020, 0x1d322: 0x6d1ca020, 0x1d323: 0x6ce28420,
+-	0x1d324: 0x6d37ca20, 0x1d325: 0x6c123c20, 0x1d326: 0x6ccb1020, 0x1d327: 0x6cb81a20,
+-	0x1d328: 0x6c97c820, 0x1d329: 0x6ce5e620, 0x1d32a: 0x6cce2020, 0x1d32b: 0x6cd3e620,
+-	0x1d32c: 0x6c129e20, 0x1d32d: 0x6c1ad620, 0x1d32e: 0x6c2ca620, 0x1d32f: 0x6c027620,
+-	0x1d330: 0x6c92fa20, 0x1d331: 0x6cf0e820, 0x1d332: 0x6d371220, 0x1d333: 0x6ce14220,
+-	0x1d334: 0x6c18ea20, 0x1d335: 0x6cb16a20, 0x1d336: 0x6cc1c420, 0x1d337: 0x6cb02420,
+-	0x1d338: 0x6d21be20, 0x1d339: 0x6c66e420, 0x1d33a: 0x6c955820, 0x1d33b: 0x6c90c220,
+-	0x1d33c: 0x6cbdea20, 0x1d33d: 0x6d37ce20, 0x1d33e: 0x6d1b1420, 0x1d33f: 0x6c678820,
+-	// Block 0x74d, offset 0x1d340
+-	0x1d340: 0x6cd67620, 0x1d341: 0x6cf1b820, 0x1d342: 0x6cff2620, 0x1d343: 0x6ceda020,
+-	0x1d344: 0x6d30a220, 0x1d345: 0x6d310820, 0x1d346: 0x6c96f820, 0x1d347: 0x6c967a20,
+-	0x1d348: 0x6c4c4820, 0x1d349: 0x6c8eaa20, 0x1d34a: 0x6c990a20, 0x1d34b: 0x6cf6f220,
+-	0x1d34c: 0x6c236a20, 0x1d34d: 0x6c846220, 0x1d34e: 0x6c97d020, 0x1d34f: 0x6cff2820,
+-	0x1d350: 0x6c173020, 0x1d351: 0x6d2ee220, 0x1d352: 0x6c98a020, 0x1d353: 0x6cfe5e20,
+-	0x1d354: 0x6ca17e20, 0x1d355: 0x6d418220, 0x1d356: 0x6cd83c20, 0x1d357: 0x6cbfd420,
+-	0x1d358: 0x6ce28820, 0x1d359: 0x6d34ac20, 0x1d35a: 0x6caed820, 0x1d35b: 0x6caeda20,
+-	0x1d35c: 0x6c695620, 0x1d35d: 0x6cc1dc20, 0x1d35e: 0x6c0cc220, 0x1d35f: 0x6c8a3c20,
+-	0x1d360: 0x6cac8220, 0x1d361: 0x6c4b2220, 0x1d362: 0x6cf81c20, 0x1d363: 0x6c615a20,
+-	0x1d364: 0x6d3b9620, 0x1d365: 0x6c5a0e20, 0x1d366: 0x6c3a4220, 0x1d367: 0x6c818420,
+-	0x1d368: 0x6c74de20, 0x1d369: 0x6c74e020, 0x1d36a: 0x6c5c7220, 0x1d36b: 0x6d1aa220,
+-	0x1d36c: 0x6c153a20, 0x1d36d: 0x6c689c20, 0x1d36e: 0x6ccdcc20, 0x1d36f: 0x6ca4ca20,
+-	0x1d370: 0x6cff3e20, 0x1d371: 0x6cf40020, 0x1d372: 0x6c1d2620, 0x1d373: 0x6d0a5020,
+-	0x1d374: 0x6cd83e20, 0x1d375: 0x6c1f9c20, 0x1d376: 0x6c19a020, 0x1d377: 0x6c291e20,
+-	0x1d378: 0x6c854420, 0x1d379: 0x6d026620, 0x1d37a: 0x6ccdd420, 0x1d37b: 0x6d162420,
+-	0x1d37c: 0x6c6e3a20, 0x1d37d: 0x6c26c820, 0x1d37e: 0x6c154420, 0x1d37f: 0x6cb80020,
+-	// Block 0x74e, offset 0x1d380
+-	0x1d380: 0x6c221820, 0x1d381: 0x6cfe0220, 0x1d382: 0x6ccf7e20, 0x1d383: 0x6c95c820,
+-	0x1d384: 0x6cbdb620, 0x1d385: 0x6d1d6e20, 0x1d386: 0x6c14a220, 0x1d387: 0x6c86da20,
+-	0x1d388: 0x6d2b6a20, 0x1d389: 0x6d07ea20, 0x1d38a: 0x6c888820, 0x1d38b: 0x6d3a3220,
+-	0x1d38c: 0x6d2b1e20, 0x1d38d: 0x6d005a20, 0x1d38e: 0x6c98a420, 0x1d38f: 0x6d026820,
+-	0x1d390: 0x6cb69a20, 0x1d391: 0x6cc6e220, 0x1d392: 0x6c661a20, 0x1d393: 0x6c9bf220,
+-	0x1d394: 0x6c500220, 0x1d395: 0x6cc7e420, 0x1d396: 0x6c5e3420, 0x1d397: 0x6d3dda20,
+-	0x1d398: 0x6c6b7820, 0x1d399: 0x6cb22420, 0x1d39a: 0x6c50aa20, 0x1d39b: 0x6c9f0e20,
+-	0x1d39c: 0x6c38ee20, 0x1d39d: 0x6c828a20, 0x1d39e: 0x6c6b7220, 0x1d39f: 0x6c7ec420,
+-	0x1d3a0: 0x6c9fda20, 0x1d3a1: 0x6c84ae20, 0x1d3a2: 0x6c219020, 0x1d3a3: 0x6c873220,
+-	0x1d3a4: 0x6cbfe620, 0x1d3a5: 0x6ca8bc20, 0x1d3a6: 0x6c919c20, 0x1d3a7: 0x6c328c20,
+-	0x1d3a8: 0x6cff5620, 0x1d3a9: 0x6d39ee20, 0x1d3aa: 0x6c8ffc20, 0x1d3ab: 0x6c875620,
+-	0x1d3ac: 0x6c8ffe20, 0x1d3ad: 0x6c3c8620, 0x1d3ae: 0x6d127220, 0x1d3af: 0x6c086620,
+-	0x1d3b0: 0x6ca46020, 0x1d3b1: 0x6c47f220, 0x1d3b2: 0x6c730e20, 0x1d3b3: 0x6d1c4220,
+-	0x1d3b4: 0x6cd63820, 0x1d3b5: 0x6cf75820, 0x1d3b6: 0x6c11c820, 0x1d3b7: 0x6cc22420,
+-	0x1d3b8: 0x6cc33c20, 0x1d3b9: 0x6c329020, 0x1d3ba: 0x6c11ca20, 0x1d3bb: 0x6c97ae20,
+-	0x1d3bc: 0x6cc22e20, 0x1d3bd: 0x6c6b8e20, 0x1d3be: 0x6d3a4e20, 0x1d3bf: 0x6d3d1820,
+-	// Block 0x74f, offset 0x1d3c0
+-	0x1d3c0: 0x6d093820, 0x1d3c1: 0x6c598620, 0x1d3c2: 0x6ca9a420, 0x1d3c3: 0x6cadba20,
+-	0x1d3c4: 0x6caa8420, 0x1d3c5: 0x6d033020, 0x1d3c6: 0x6d383220, 0x1d3c7: 0x6c973420,
+-	0x1d3c8: 0x6c37ce20, 0x1d3c9: 0x6c761220, 0x1d3ca: 0x6c9f1020, 0x1d3cb: 0x6cf93c20,
+-	0x1d3cc: 0x6d03ba20, 0x1d3cd: 0x6d0d5c20, 0x1d3ce: 0x6c770620, 0x1d3cf: 0x6d260e20,
+-	0x1d3d0: 0x6cc28820, 0x1d3d1: 0x6c8d0220, 0x1d3d2: 0x6d089020, 0x1d3d3: 0x6cd5ca20,
+-	0x1d3d4: 0x6cfb5420, 0x1d3d5: 0x6ce7cc20, 0x1d3d6: 0x6cfe3820, 0x1d3d7: 0x6c6a1e20,
+-	0x1d3d8: 0x6cfb7020, 0x1d3d9: 0x6d0b3220, 0x1d3da: 0x6c559a20, 0x1d3db: 0x6cf0ca20,
+-	0x1d3dc: 0x6c2a2c20, 0x1d3dd: 0x6c1cdc20, 0x1d3de: 0x6cf0d420, 0x1d3df: 0x6c2a3620,
+-	0x1d3e0: 0x6d3cd820, 0x1d3e1: 0x6c527020, 0x1d3e2: 0x6cc22620, 0x1d3e3: 0x6d13be20,
+-	0x1d3e4: 0x6d198c20, 0x1d3e5: 0x6c103220, 0x1d3e6: 0x6c41ce20, 0x1d3e7: 0x6d20cc20,
+-	0x1d3e8: 0x6c0c7020, 0x1d3e9: 0x6c141820, 0x1d3ea: 0x6d147a20, 0x1d3eb: 0x6cccc820,
+-	0x1d3ec: 0x6c191e20, 0x1d3ed: 0x6c3d5620, 0x1d3ee: 0x6c4bbc20, 0x1d3ef: 0x6c3b1e20,
+-	0x1d3f0: 0x6cd65220, 0x1d3f1: 0x6c6a8820, 0x1d3f2: 0x6ca32020, 0x1d3f3: 0x6d37aa20,
+-	0x1d3f4: 0x6c282e20, 0x1d3f5: 0x6d170c20, 0x1d3f6: 0x6d381e20, 0x1d3f7: 0x6d37b220,
+-	0x1d3f8: 0x6c6bd220, 0x1d3f9: 0x6d350820, 0x1d3fa: 0x6d009820, 0x1d3fb: 0x6cc46820,
+-	0x1d3fc: 0x6d33ba20, 0x1d3fd: 0x6cc5da20, 0x1d3fe: 0x6cbd2620, 0x1d3ff: 0x6c6c3820,
+-	// Block 0x750, offset 0x1d400
+-	0x1d400: 0x6c756220, 0x1d401: 0x6d255820, 0x1d402: 0x6c9a8620, 0x1d403: 0x6c149620,
+-	0x1d404: 0x6c02a220, 0x1d405: 0x6ca79820, 0x1d406: 0x6c5a9e20, 0x1d407: 0x6cc46a20,
+-	0x1d408: 0x6c635620, 0x1d409: 0x6ceb1020, 0x1d40a: 0x6c8e0e20, 0x1d40b: 0x6c276620,
+-	0x1d40c: 0x6c064a20, 0x1d40d: 0x6cad5620, 0x1d40e: 0x6d120020, 0x1d40f: 0x6d429420,
+-	0x1d410: 0x6c097020, 0x1d411: 0x6cced220, 0x1d412: 0x6ce05820, 0x1d413: 0x6c723620,
+-	0x1d414: 0x6c51c220, 0x1d415: 0x6d090220, 0x1d416: 0x6d053820, 0x1d417: 0x6d31d220,
+-	0x1d418: 0x6d14da20, 0x1d419: 0x6cabea20, 0x1d41a: 0x6c0e6420, 0x1d41b: 0x6c2b2220,
+-	0x1d41c: 0x6cec2a20, 0x1d41d: 0x6c3fd620, 0x1d41e: 0x6c4bc420, 0x1d41f: 0x6d35ca20,
+-	0x1d420: 0x6d360a20, 0x1d421: 0x6cc47220, 0x1d422: 0x6cacb420, 0x1d423: 0x6d174620,
+-	0x1d424: 0x6c997420, 0x1d425: 0x6ceaba20, 0x1d426: 0x6ca32e20, 0x1d427: 0x6c464420,
+-	0x1d428: 0x6d088220, 0x1d429: 0x6d304220, 0x1d42a: 0x6cc0f420, 0x1d42b: 0x6c070420,
+-	0x1d42c: 0x6c4bc620, 0x1d42d: 0x6cf77c20, 0x1d42e: 0x6ca6ea20, 0x1d42f: 0x6c0ee020,
+-	0x1d430: 0x6c0e7220, 0x1d431: 0x6c40ac20, 0x1d432: 0x6c1bac20, 0x1d433: 0x6c1ba220,
+-	0x1d434: 0x6c7a9420, 0x1d435: 0x6cc5ea20, 0x1d436: 0x6c67e220, 0x1d437: 0x6c63ba20,
+-	0x1d438: 0x6c667e20, 0x1d439: 0x6c0efa20, 0x1d43a: 0x6c6aba20, 0x1d43b: 0x6c375420,
+-	0x1d43c: 0x6c438620, 0x1d43d: 0x6cc7a620, 0x1d43e: 0x6d39a020, 0x1d43f: 0x6c4a6020,
+-	// Block 0x751, offset 0x1d440
+-	0x1d440: 0x6d19d020, 0x1d441: 0x6c111020, 0x1d442: 0x6c8b1020, 0x1d443: 0x6c762220,
+-	0x1d444: 0x6d044420, 0x1d445: 0x6d3c1c20, 0x1d446: 0x6c28fc20, 0x1d447: 0x6d05aa20,
+-	0x1d448: 0x6c7d5e20, 0x1d449: 0x6c791a20, 0x1d44a: 0x6ca79e20, 0x1d44b: 0x6cd5dc20,
+-	0x1d44c: 0x6c63c420, 0x1d44d: 0x6c7db020, 0x1d44e: 0x6c1a1220, 0x1d44f: 0x6c852220,
+-	0x1d450: 0x6c72f620, 0x1d451: 0x6ccff420, 0x1d452: 0x6cb3da20, 0x1d453: 0x6c43fa20,
+-	0x1d454: 0x6d180820, 0x1d455: 0x6d235620, 0x1d456: 0x6d31da20, 0x1d457: 0x6c8e6020,
+-	0x1d458: 0x6cc07e20, 0x1d459: 0x6cc44820, 0x1d45a: 0x6c622620, 0x1d45b: 0x6d180a20,
+-	0x1d45c: 0x6c103e20, 0x1d45d: 0x6d3c1e20, 0x1d45e: 0x6cd72420, 0x1d45f: 0x6ccc0420,
+-	0x1d460: 0x6cc44e20, 0x1d461: 0x6c87e220, 0x1d462: 0x6c880620, 0x1d463: 0x6c88c020,
+-	0x1d464: 0x6c7a9e20, 0x1d465: 0x6c659e20, 0x1d466: 0x6c3d1820, 0x1d467: 0x6c14d020,
+-	0x1d468: 0x6c09e020, 0x1d469: 0x6c7d7020, 0x1d46a: 0x6ce22e20, 0x1d46b: 0x6d262a20,
+-	0x1d46c: 0x6c8d2220, 0x1d46d: 0x6c1bb420, 0x1d46e: 0x6c167420, 0x1d46f: 0x6c1dc420,
+-	0x1d470: 0x6c343220, 0x1d471: 0x6c0c7420, 0x1d472: 0x6c899620, 0x1d473: 0x6cce5c20,
+-	0x1d474: 0x6cade020, 0x1d475: 0x6cade220, 0x1d476: 0x6c3a0e20, 0x1d477: 0x6d24fe20,
+-	0x1d478: 0x6c95b820, 0x1d479: 0x6c4cca20, 0x1d47a: 0x6d0daa20, 0x1d47b: 0x6c31aa20,
+-	0x1d47c: 0x6ce40420, 0x1d47d: 0x6d369a20, 0x1d47e: 0x6c70ae20, 0x1d47f: 0x6d15fa20,
+-	// Block 0x752, offset 0x1d480
+-	0x1d480: 0x6c622820, 0x1d481: 0x6d346c20, 0x1d482: 0x6c48ba20, 0x1d483: 0x6c791c20,
+-	0x1d484: 0x6cb81620, 0x1d485: 0x6ce40a20, 0x1d486: 0x6ce35820, 0x1d487: 0x6c402420,
+-	0x1d488: 0x6c1d1a20, 0x1d489: 0x6d01f020, 0x1d48a: 0x6c0b4820, 0x1d48b: 0x6c2ed820,
+-	0x1d48c: 0x6c7d7c20, 0x1d48d: 0x6c32a020, 0x1d48e: 0x6d054a20, 0x1d48f: 0x6d054c20,
+-	0x1d490: 0x6c51d620, 0x1d491: 0x6d262c20, 0x1d492: 0x6c05ba20, 0x1d493: 0x6c060620,
+-	0x1d494: 0x6c402620, 0x1d495: 0x6d217c20, 0x1d496: 0x6ce98c20, 0x1d497: 0x6d0dc420,
+-	0x1d498: 0x6c5adc20, 0x1d499: 0x6c074420, 0x1d49a: 0x6c1ee220, 0x1d49b: 0x6c93aa20,
+-	0x1d49c: 0x6cadaa20, 0x1d49d: 0x6c27ee20, 0x1d49e: 0x6d27f420, 0x1d49f: 0x6cddf820,
+-	0x1d4a0: 0x6c465c20, 0x1d4a1: 0x6c265c20, 0x1d4a2: 0x6c57ee20, 0x1d4a3: 0x6cc6aa20,
+-	0x1d4a4: 0x6d262e20, 0x1d4a5: 0x6cc82620, 0x1d4a6: 0x6ca3d420, 0x1d4a7: 0x6c6f3220,
+-	0x1d4a8: 0x6cdd8620, 0x1d4a9: 0x6c04a220, 0x1d4aa: 0x6cea0a20, 0x1d4ab: 0x6c1bbe20,
+-	0x1d4ac: 0x6cca8a20, 0x1d4ad: 0x6ca7ae20, 0x1d4ae: 0x6d1bec20, 0x1d4af: 0x6c6bfa20,
+-	0x1d4b0: 0x6cb91e20, 0x1d4b1: 0x6c57f420, 0x1d4b2: 0x6c7aa820, 0x1d4b3: 0x6c884220,
+-	0x1d4b4: 0x6c7fae20, 0x1d4b5: 0x6c843420, 0x1d4b6: 0x6d30de20, 0x1d4b7: 0x6cd1fc20,
+-	0x1d4b8: 0x6c93b620, 0x1d4b9: 0x6d18b820, 0x1d4ba: 0x6c2e5e20, 0x1d4bb: 0x6d023220,
+-	0x1d4bc: 0x6cfae020, 0x1d4bd: 0x6cf0ea20, 0x1d4be: 0x6c0c7e20, 0x1d4bf: 0x6c129620,
+-	// Block 0x753, offset 0x1d4c0
+-	0x1d4c0: 0x6c5f4620, 0x1d4c1: 0x6cbb4c20, 0x1d4c2: 0x6ccbb020, 0x1d4c3: 0x6c05bc20,
+-	0x1d4c4: 0x6cfd8c20, 0x1d4c5: 0x6c0ae420, 0x1d4c6: 0x6c3f0c20, 0x1d4c7: 0x6c65e620,
+-	0x1d4c8: 0x6d3bea20, 0x1d4c9: 0x6c65e820, 0x1d4ca: 0x6c257020, 0x1d4cb: 0x6c60c820,
+-	0x1d4cc: 0x6c280620, 0x1d4cd: 0x6d28d020, 0x1d4ce: 0x6c38cc20, 0x1d4cf: 0x6c0f7e20,
+-	0x1d4d0: 0x6cfe5a20, 0x1d4d1: 0x6d030420, 0x1d4d2: 0x6c0cf820, 0x1d4d3: 0x6cc52e20,
+-	0x1d4d4: 0x6c97ca20, 0x1d4d5: 0x6c7fc620, 0x1d4d6: 0x6c02b220, 0x1d4d7: 0x6d2b1620,
+-	0x1d4d8: 0x6c4b8e20, 0x1d4d9: 0x6c12bc20, 0x1d4da: 0x6cdc9220, 0x1d4db: 0x6ca9d620,
+-	0x1d4dc: 0x6c14dc20, 0x1d4dd: 0x6c88d220, 0x1d4de: 0x6c0aac20, 0x1d4df: 0x6c6c6a20,
+-	0x1d4e0: 0x6c291620, 0x1d4e1: 0x6cd58220, 0x1d4e2: 0x6ce08020, 0x1d4e3: 0x6c0aae20,
+-	0x1d4e4: 0x6c7fd820, 0x1d4e5: 0x6cb46e20, 0x1d4e6: 0x6cc7e020, 0x1d4e7: 0x6d355e20,
+-	0x1d4e8: 0x6c32ec20, 0x1d4e9: 0x6cd58620, 0x1d4ea: 0x6cec4220, 0x1d4eb: 0x6cd40020,
+-	0x1d4ec: 0x6c042c20, 0x1d4ed: 0x6d012020, 0x1d4ee: 0x6c0fbe20, 0x1d4ef: 0x6c194220,
+-	0x1d4f0: 0x6c7f7c20, 0x1d4f1: 0x6c8fee20, 0x1d4f2: 0x6cf7c420, 0x1d4f3: 0x6cfb0c20,
+-	0x1d4f4: 0x6c800220, 0x1d4f5: 0x6d30e220, 0x1d4f6: 0x6c27aa20, 0x1d4f7: 0x6c72d820,
+-	0x1d4f8: 0x6d29c620, 0x1d4f9: 0x6cd21c20, 0x1d4fa: 0x6c663820, 0x1d4fb: 0x6cacc620,
+-	0x1d4fc: 0x6d196820, 0x1d4fd: 0x6c809c20, 0x1d4fe: 0x6d0b7020, 0x1d4ff: 0x6cf94020,
+-	// Block 0x754, offset 0x1d500
+-	0x1d500: 0x6cf57420, 0x1d501: 0x6d11f820, 0x1d502: 0x6c3cc820, 0x1d503: 0x6cdfe620,
+-	0x1d504: 0x6c40b420, 0x1d505: 0x6c3d0620, 0x1d506: 0x6c407e20, 0x1d507: 0x6c03c820,
+-	0x1d508: 0x6c519620, 0x1d509: 0x6c5fa420, 0x1d50a: 0x6c5fb420, 0x1d50b: 0x6c665220,
+-	0x1d50c: 0x6c490820, 0x1d50d: 0x6c0b9020, 0x1d50e: 0x6d0e5620, 0x1d50f: 0x6c4a6220,
+-	0x1d510: 0x6c743020, 0x1d511: 0x6cb13a20, 0x1d512: 0x6c997620, 0x1d513: 0x6c9d4020,
+-	0x1d514: 0x6c9d4220, 0x1d515: 0x6c9ed620, 0x1d516: 0x6cd36c20, 0x1d517: 0x6cd8c420,
+-	0x1d518: 0x6c14cc20, 0x1d519: 0x6c954a20, 0x1d51a: 0x6c745a20, 0x1d51b: 0x6c9d6020,
+-	0x1d51c: 0x6ce5da20, 0x1d51d: 0x6c882620, 0x1d51e: 0x6d121820, 0x1d51f: 0x6d369c20,
+-	0x1d520: 0x6c757a20, 0x1d521: 0x6cf79620, 0x1d522: 0x6ccd5a20, 0x1d523: 0x6ceeb620,
+-	0x1d524: 0x6cf8d220, 0x1d525: 0x6ce51220, 0x1d526: 0x6d21a620, 0x1d527: 0x6c803e20,
+-	0x1d528: 0x6c36aa20, 0x1d529: 0x6c322a20, 0x1d52a: 0x6cbd3e20, 0x1d52b: 0x6cad2220,
+-	0x1d52c: 0x6c62a220, 0x1d52d: 0x6ca01e20, 0x1d52e: 0x6d1caa20, 0x1d52f: 0x6c46dc20,
+-	0x1d530: 0x6cc15020, 0x1d531: 0x6d2e8c20, 0x1d532: 0x6c6d6c20, 0x1d533: 0x6c492c20,
+-	0x1d534: 0x6c2abc20, 0x1d535: 0x6c670420, 0x1d536: 0x6c956420, 0x1d537: 0x6cc28220,
+-	0x1d538: 0x6c652620, 0x1d539: 0x6cef6220, 0x1d53a: 0x6c750220, 0x1d53b: 0x6cc15c20,
+-	0x1d53c: 0x6c956a20, 0x1d53d: 0x6c805420, 0x1d53e: 0x6cd08a20, 0x1d53f: 0x6c2bba20,
+-	// Block 0x755, offset 0x1d540
+-	0x1d540: 0x6c494420, 0x1d541: 0x6c664e20, 0x1d542: 0x6c490220, 0x1d543: 0x6d0e3e20,
+-	0x1d544: 0x6c4a3a20, 0x1d545: 0x6c9d2a20, 0x1d546: 0x6cd32020, 0x1d547: 0x6c14be20,
+-	0x1d548: 0x6c802020, 0x1d549: 0x6c740a20, 0x1d54a: 0x6c61d620, 0x1d54b: 0x6cf77e20,
+-	0x1d54c: 0x6c2b6e20, 0x1d54d: 0x6ce4fc20, 0x1d54e: 0x6d216820, 0x1d54f: 0x6c46cc20,
+-	0x1d550: 0x6c6d4620, 0x1d551: 0x6cc27220, 0x1d552: 0x6c68c620, 0x1d553: 0x6cc01820,
+-	0x1d554: 0x6c6c3a20, 0x1d555: 0x6c241220, 0x1d556: 0x6c743220, 0x1d557: 0x6d360c20,
+-	0x1d558: 0x6c17bc20, 0x1d559: 0x6c600a20, 0x1d55a: 0x6c471220, 0x1d55b: 0x6c289020,
+-	0x1d55c: 0x6d3e5820, 0x1d55d: 0x6c2bf820, 0x1d55e: 0x6cce0420, 0x1d55f: 0x6c57a020,
+-	0x1d560: 0x6cc30220, 0x1d561: 0x6c440c20, 0x1d562: 0x6cd3a020, 0x1d563: 0x6c6b9820,
+-	0x1d564: 0x6c4b0a20, 0x1d565: 0x6c459820, 0x1d566: 0x6c1f5c20, 0x1d567: 0x6c6b9a20,
+-	0x1d568: 0x6c5d3a20, 0x1d569: 0x6cc08420, 0x1d56a: 0x6d039020, 0x1d56b: 0x6cdaf220,
+-	0x1d56c: 0x6ca60220, 0x1d56d: 0x6c5f1e20, 0x1d56e: 0x6c92b420, 0x1d56f: 0x6d36c020,
+-	0x1d570: 0x6d2bfa20, 0x1d571: 0x6c0a5e20, 0x1d572: 0x6d03a620, 0x1d573: 0x6c55cc20,
+-	0x1d574: 0x6cce2220, 0x1d575: 0x6c45be20, 0x1d576: 0x6d374820, 0x1d577: 0x6d092820,
+-	0x1d578: 0x6c1f8a20, 0x1d579: 0x6cf71a20, 0x1d57a: 0x6d159420, 0x1d57b: 0x6c877e20,
+-	0x1d57c: 0x6c750e20, 0x1d57d: 0x6cf75020, 0x1d57e: 0x6d0f0c20, 0x1d57f: 0x6cf75e20,
+-	// Block 0x756, offset 0x1d580
+-	0x1d580: 0x6d0c5c20, 0x1d581: 0x6d0f3620, 0x1d582: 0x6c2f9a20, 0x1d583: 0x6c3fc620,
+-	0x1d584: 0x6cc01a20, 0x1d585: 0x6cc01c20, 0x1d586: 0x6c698a20, 0x1d587: 0x6c529c20,
+-	0x1d588: 0x6c61b820, 0x1d589: 0x6c384c20, 0x1d58a: 0x6d0a7e20, 0x1d58b: 0x6c2e1420,
+-	0x1d58c: 0x6c53b820, 0x1d58d: 0x6c149820, 0x1d58e: 0x6ce25c20, 0x1d58f: 0x6d058620,
+-	0x1d590: 0x6c6aaa20, 0x1d591: 0x6d14dc20, 0x1d592: 0x6cc5e020, 0x1d593: 0x6d0ac020,
+-	0x1d594: 0x6d1a4e20, 0x1d595: 0x6ccd7e20, 0x1d596: 0x6cb77020, 0x1d597: 0x6ceabc20,
+-	0x1d598: 0x6c61d820, 0x1d599: 0x6d0a8020, 0x1d59a: 0x6d1a5020, 0x1d59b: 0x6c356020,
+-	0x1d59c: 0x6c3b2c20, 0x1d59d: 0x6d0ba420, 0x1d59e: 0x6d109e20, 0x1d59f: 0x6cd98c20,
+-	0x1d5a0: 0x6cd06020, 0x1d5a1: 0x6d1a5e20, 0x1d5a2: 0x6d02ce20, 0x1d5a3: 0x6c743420,
+-	0x1d5a4: 0x6cff8620, 0x1d5a5: 0x6ca54e20, 0x1d5a6: 0x6c18c020, 0x1d5a7: 0x6d1f2e20,
+-	0x1d5a8: 0x6d352220, 0x1d5a9: 0x6d046820, 0x1d5aa: 0x6c39d620, 0x1d5ab: 0x6d033220,
+-	0x1d5ac: 0x6c174020, 0x1d5ad: 0x6ccf4420, 0x1d5ae: 0x6cfaa220, 0x1d5af: 0x6cc94e20,
+-	0x1d5b0: 0x6d3ce220, 0x1d5b1: 0x6d063c20, 0x1d5b2: 0x6d177820, 0x1d5b3: 0x6d177a20,
+-	0x1d5b4: 0x6cdb7a20, 0x1d5b5: 0x6c1ab220, 0x1d5b6: 0x6c509e20, 0x1d5b7: 0x6ccff620,
+-	0x1d5b8: 0x6c512c20, 0x1d5b9: 0x6d06e620, 0x1d5ba: 0x6d31de20, 0x1d5bb: 0x6d3afa20,
+-	0x1d5bc: 0x6d334e20, 0x1d5bd: 0x6c46a820, 0x1d5be: 0x6d3e5c20, 0x1d5bf: 0x6d3f1c20,
+-	// Block 0x757, offset 0x1d5c0
+-	0x1d5c0: 0x6d2d7820, 0x1d5c1: 0x6c479420, 0x1d5c2: 0x6c3ffe20, 0x1d5c3: 0x6c65a020,
+-	0x1d5c4: 0x6c2eb420, 0x1d5c5: 0x6c8d0a20, 0x1d5c6: 0x6c2bfa20, 0x1d5c7: 0x6d104e20,
+-	0x1d5c8: 0x6c861c20, 0x1d5c9: 0x6ca4b020, 0x1d5ca: 0x6cacb820, 0x1d5cb: 0x6d392e20,
+-	0x1d5cc: 0x6c422220, 0x1d5cd: 0x6d17c420, 0x1d5ce: 0x6c724420, 0x1d5cf: 0x6d120c20,
+-	0x1d5d0: 0x6d2cc820, 0x1d5d1: 0x6d150020, 0x1d5d2: 0x6d150220, 0x1d5d3: 0x6cc24a20,
+-	0x1d5d4: 0x6d2fb620, 0x1d5d5: 0x6cb2b220, 0x1d5d6: 0x6c09ac20, 0x1d5d7: 0x6d049620,
+-	0x1d5d8: 0x6cc11620, 0x1d5d9: 0x6c037c20, 0x1d5da: 0x6c26aa20, 0x1d5db: 0x6d411e20,
+-	0x1d5dc: 0x6ce1cc20, 0x1d5dd: 0x6d3a7220, 0x1d5de: 0x6c224820, 0x1d5df: 0x6d305e20,
+-	0x1d5e0: 0x6d1e3e20, 0x1d5e1: 0x6d064620, 0x1d5e2: 0x6d0a2020, 0x1d5e3: 0x6d180c20,
+-	0x1d5e4: 0x6c5a5620, 0x1d5e5: 0x6c514420, 0x1d5e6: 0x6cd3a220, 0x1d5e7: 0x6c13f020,
+-	0x1d5e8: 0x6cfff820, 0x1d5e9: 0x6cd1d820, 0x1d5ea: 0x6c523e20, 0x1d5eb: 0x6c144420,
+-	0x1d5ec: 0x6c46ba20, 0x1d5ed: 0x6c4b0c20, 0x1d5ee: 0x6cc30420, 0x1d5ef: 0x6c5bea20,
+-	0x1d5f0: 0x6c6afc20, 0x1d5f1: 0x6c57a220, 0x1d5f2: 0x6c40fc20, 0x1d5f3: 0x6cfdca20,
+-	0x1d5f4: 0x6ceea420, 0x1d5f5: 0x6ccffc20, 0x1d5f6: 0x6d393420, 0x1d5f7: 0x6ce75c20,
+-	0x1d5f8: 0x6c9c6220, 0x1d5f9: 0x6d2d8420, 0x1d5fa: 0x6ca04620, 0x1d5fb: 0x6c366420,
+-	0x1d5fc: 0x6c5ace20, 0x1d5fd: 0x6d0cb220, 0x1d5fe: 0x6d046e20, 0x1d5ff: 0x6c48bc20,
+-	// Block 0x758, offset 0x1d600
+-	0x1d600: 0x6c37d220, 0x1d601: 0x6c0e2420, 0x1d602: 0x6ce5c420, 0x1d603: 0x6d152020,
+-	0x1d604: 0x6c82ca20, 0x1d605: 0x6d39b420, 0x1d606: 0x6c7ba420, 0x1d607: 0x6c7ac620,
+-	0x1d608: 0x6cf3dc20, 0x1d609: 0x6d238220, 0x1d60a: 0x6ce2a420, 0x1d60b: 0x6c625220,
+-	0x1d60c: 0x6d36a020, 0x1d60d: 0x6cc60220, 0x1d60e: 0x6c244e20, 0x1d60f: 0x6c810c20,
+-	0x1d610: 0x6c357a20, 0x1d611: 0x6c7bc620, 0x1d612: 0x6c370c20, 0x1d613: 0x6cd3b820,
+-	0x1d614: 0x6ce6d820, 0x1d615: 0x6c289620, 0x1d616: 0x6c074620, 0x1d617: 0x6c151020,
+-	0x1d618: 0x6d205620, 0x1d619: 0x6c794a20, 0x1d61a: 0x6cbc4e20, 0x1d61b: 0x6cbd3820,
+-	0x1d61c: 0x6cd65020, 0x1d61d: 0x6c014220, 0x1d61e: 0x6d227c20, 0x1d61f: 0x6cfffe20,
+-	0x1d620: 0x6c1a2220, 0x1d621: 0x6c6bf420, 0x1d622: 0x6cfcee20, 0x1d623: 0x6cf37a20,
+-	0x1d624: 0x6cf51020, 0x1d625: 0x6c435620, 0x1d626: 0x6cd99a20, 0x1d627: 0x6c101a20,
+-	0x1d628: 0x6c5c0420, 0x1d629: 0x6c6e9820, 0x1d62a: 0x6cd76a20, 0x1d62b: 0x6d325220,
+-	0x1d62c: 0x6cd76c20, 0x1d62d: 0x6c31ae20, 0x1d62e: 0x6c57e420, 0x1d62f: 0x6c172420,
+-	0x1d630: 0x6cd6fe20, 0x1d631: 0x6c6b2820, 0x1d632: 0x6c78d420, 0x1d633: 0x6cc13a20,
+-	0x1d634: 0x6c23ac20, 0x1d635: 0x6cff9820, 0x1d636: 0x6cdc6420, 0x1d637: 0x6cee3620,
+-	0x1d638: 0x6cfb8620, 0x1d639: 0x6c3a6c20, 0x1d63a: 0x6c1ad220, 0x1d63b: 0x6cde9220,
+-	0x1d63c: 0x6d186620, 0x1d63d: 0x6ca6c220, 0x1d63e: 0x6d1a9a20, 0x1d63f: 0x6c2e3820,
+-	// Block 0x759, offset 0x1d640
+-	0x1d640: 0x6cb06820, 0x1d641: 0x6d3d8c20, 0x1d642: 0x6c15de20, 0x1d643: 0x6c188420,
+-	0x1d644: 0x6d3cd620, 0x1d645: 0x6c626a20, 0x1d646: 0x6cb52820, 0x1d647: 0x6ce00820,
+-	0x1d648: 0x6d3ca420, 0x1d649: 0x6cf00c20, 0x1d64a: 0x6c714c20, 0x1d64b: 0x6cbeb220,
+-	0x1d64c: 0x6c303c20, 0x1d64d: 0x6d335420, 0x1d64e: 0x6d2af220, 0x1d64f: 0x6d406020,
+-	0x1d650: 0x6cb91620, 0x1d651: 0x6d3d8e20, 0x1d652: 0x6c89c820, 0x1d653: 0x6c66c020,
+-	0x1d654: 0x6c1f6e20, 0x1d655: 0x6c4fe420, 0x1d656: 0x6c952620, 0x1d657: 0x6cd06e20,
+-	0x1d658: 0x6c0c7820, 0x1d659: 0x6c581220, 0x1d65a: 0x6cb12620, 0x1d65b: 0x6d219420,
+-	0x1d65c: 0x6c2eea20, 0x1d65d: 0x6d05e820, 0x1d65e: 0x6cb14220, 0x1d65f: 0x6cd3de20,
+-	0x1d660: 0x6d07d220, 0x1d661: 0x6cd3e020, 0x1d662: 0x6c5d4220, 0x1d663: 0x6c57c020,
+-	0x1d664: 0x6c36ac20, 0x1d665: 0x6d384020, 0x1d666: 0x6c2c9c20, 0x1d667: 0x6d00f220,
+-	0x1d668: 0x6c3ef620, 0x1d669: 0x6cb49420, 0x1d66a: 0x6ce69020, 0x1d66b: 0x6c66d620,
+-	0x1d66c: 0x6cb71e20, 0x1d66d: 0x6d23f620, 0x1d66e: 0x6d3e9020, 0x1d66f: 0x6d3b9420,
+-	0x1d670: 0x6cf81420, 0x1d671: 0x6c5c4220, 0x1d672: 0x6d1a0220, 0x1d673: 0x6c015020,
+-	0x1d674: 0x6cfb9e20, 0x1d675: 0x6ca40e20, 0x1d676: 0x6c18ec20, 0x1d677: 0x6c3cce20,
+-	0x1d678: 0x6d39c620, 0x1d679: 0x6d0fd820, 0x1d67a: 0x6d0ec420, 0x1d67b: 0x6c5a0020,
+-	0x1d67c: 0x6d07d420, 0x1d67d: 0x6c443a20, 0x1d67e: 0x6cab0e20, 0x1d67f: 0x6cb53220,
+-	// Block 0x75a, offset 0x1d680
+-	0x1d680: 0x6ca1e820, 0x1d681: 0x6d134620, 0x1d682: 0x6cf0d620, 0x1d683: 0x6d044620,
+-	0x1d684: 0x6ce2ba20, 0x1d685: 0x6d38b620, 0x1d686: 0x6ccdc020, 0x1d687: 0x6c65ec20,
+-	0x1d688: 0x6cb33a20, 0x1d689: 0x6c7d2220, 0x1d68a: 0x6c5a6420, 0x1d68b: 0x6c5e0c20,
+-	0x1d68c: 0x6c43b620, 0x1d68d: 0x6d1cac20, 0x1d68e: 0x6c9c7420, 0x1d68f: 0x6cffc020,
+-	0x1d690: 0x6c9d9820, 0x1d691: 0x6cf81a20, 0x1d692: 0x6cbae220, 0x1d693: 0x6c188c20,
+-	0x1d694: 0x6d097220, 0x1d695: 0x6ce38820, 0x1d696: 0x6cdb4a20, 0x1d697: 0x6c059420,
+-	0x1d698: 0x6c1b5a20, 0x1d699: 0x6cb92820, 0x1d69a: 0x6cd3ea20, 0x1d69b: 0x6c67c820,
+-	0x1d69c: 0x6d25b620, 0x1d69d: 0x6d023620, 0x1d69e: 0x6c51f620, 0x1d69f: 0x6ce1f220,
+-	0x1d6a0: 0x6d115020, 0x1d6a1: 0x6d115220, 0x1d6a2: 0x6d378020, 0x1d6a3: 0x6d21c820,
+-	0x1d6a4: 0x6c0c4020, 0x1d6a5: 0x6c23e020, 0x1d6a6: 0x6cbee620, 0x1d6a7: 0x6c846420,
+-	0x1d6a8: 0x6ca08020, 0x1d6a9: 0x6ca17620, 0x1d6aa: 0x6cce2420, 0x1d6ab: 0x6d30b020,
+-	0x1d6ac: 0x6ca05420, 0x1d6ad: 0x6c660420, 0x1d6ae: 0x6d2b1820, 0x1d6af: 0x6c6a3a20,
+-	0x1d6b0: 0x6c886e20, 0x1d6b1: 0x6c90c620, 0x1d6b2: 0x6c121020, 0x1d6b3: 0x6cab5e20,
+-	0x1d6b4: 0x6c4c0620, 0x1d6b5: 0x6cf7ae20, 0x1d6b6: 0x6d3dc020, 0x1d6b7: 0x6c027a20,
+-	0x1d6b8: 0x6c027c20, 0x1d6b9: 0x6c6cc220, 0x1d6ba: 0x6d30b220, 0x1d6bb: 0x6d158620,
+-	0x1d6bc: 0x6c551220, 0x1d6bd: 0x6c680e20, 0x1d6be: 0x6c978e20, 0x1d6bf: 0x6c178a20,
+-	// Block 0x75b, offset 0x1d6c0
+-	0x1d6c0: 0x6c4f2620, 0x1d6c1: 0x6c576020, 0x1d6c2: 0x6c160020, 0x1d6c3: 0x6d060020,
+-	0x1d6c4: 0x6d2ba420, 0x1d6c5: 0x6ccb9220, 0x1d6c6: 0x6cf71c20, 0x1d6c7: 0x6d2c0420,
+-	0x1d6c8: 0x6c337a20, 0x1d6c9: 0x6d336c20, 0x1d6ca: 0x6ca4ce20, 0x1d6cb: 0x6c7fda20,
+-	0x1d6cc: 0x6c359820, 0x1d6cd: 0x6d1c2620, 0x1d6ce: 0x6c74ee20, 0x1d6cf: 0x6c5f8220,
+-	0x1d6d0: 0x6d421220, 0x1d6d1: 0x6c696020, 0x1d6d2: 0x6c0ffc20, 0x1d6d3: 0x6c5c8620,
+-	0x1d6d4: 0x6d3bf420, 0x1d6d5: 0x6cf40820, 0x1d6d6: 0x6d2b7a20, 0x1d6d7: 0x6d2c6220,
+-	0x1d6d8: 0x6cd42220, 0x1d6d9: 0x6cbc6c20, 0x1d6da: 0x6ce03620, 0x1d6db: 0x6d2b7c20,
+-	0x1d6dc: 0x6cb4a020, 0x1d6dd: 0x6cd12820, 0x1d6de: 0x6d07ee20, 0x1d6df: 0x6d2a9820,
+-	0x1d6e0: 0x6ce04020, 0x1d6e1: 0x6c293620, 0x1d6e2: 0x6cdcac20, 0x1d6e3: 0x6cfc4e20,
+-	0x1d6e4: 0x6c5f8c20, 0x1d6e5: 0x6c69d820, 0x1d6e6: 0x6c6e3c20, 0x1d6e7: 0x6d2e9820,
+-	0x1d6e8: 0x6ca45c20, 0x1d6e9: 0x6d143220, 0x1d6ea: 0x6c010420, 0x1d6eb: 0x6d2dbc20,
+-	0x1d6ec: 0x6cb0d820, 0x1d6ed: 0x6c5b7e20, 0x1d6ee: 0x6c57d420, 0x1d6ef: 0x6d193220,
+-	0x1d6f0: 0x6d193420, 0x1d6f1: 0x6ccdd620, 0x1d6f2: 0x6cc51c20, 0x1d6f3: 0x6caa3220,
+-	0x1d6f4: 0x6cba3220, 0x1d6f5: 0x6d3cbe20, 0x1d6f6: 0x6cdee420, 0x1d6f7: 0x6c56e020,
+-	0x1d6f8: 0x6d38c420, 0x1d6f9: 0x6c500420, 0x1d6fa: 0x6c010620, 0x1d6fb: 0x6d1c3420,
+-	0x1d6fc: 0x6c671a20, 0x1d6fd: 0x6d246620, 0x1d6fe: 0x6c662c20, 0x1d6ff: 0x6c5c9c20,
+-	// Block 0x75c, offset 0x1d700
+-	0x1d700: 0x6c31f020, 0x1d701: 0x6d30bc20, 0x1d702: 0x6d08d020, 0x1d703: 0x6d29bc20,
+-	0x1d704: 0x6c830c20, 0x1d705: 0x6cd08c20, 0x1d706: 0x6cf12220, 0x1d707: 0x6c161a20,
+-	0x1d708: 0x6c879020, 0x1d709: 0x6d159a20, 0x1d70a: 0x6c0bdc20, 0x1d70b: 0x6d30c820,
+-	0x1d70c: 0x6d0f0e20, 0x1d70d: 0x6c36f220, 0x1d70e: 0x6c1e0e20, 0x1d70f: 0x6cf12a20,
+-	0x1d710: 0x6c1e1020, 0x1d711: 0x6d125620, 0x1d712: 0x6c157c20, 0x1d713: 0x6cc51e20,
+-	0x1d714: 0x6d1b2c20, 0x1d715: 0x6c801020, 0x1d716: 0x6c194820, 0x1d717: 0x6d013820,
+-	0x1d718: 0x6ca8cc20, 0x1d719: 0x6c584c20, 0x1d71a: 0x6d29ca20, 0x1d71b: 0x6d197c20,
+-	0x1d71c: 0x6c294a20, 0x1d71d: 0x6d2dda20, 0x1d71e: 0x6d0f2a20, 0x1d71f: 0x6c321020,
+-	0x1d720: 0x6d0c5020, 0x1d721: 0x6c616e20, 0x1d722: 0x6c2f8c20, 0x1d723: 0x6c3fa220,
+-	0x1d724: 0x6cc5a420, 0x1d725: 0x6c5e6620, 0x1d726: 0x6c6a5c20, 0x1d727: 0x6c53b420,
+-	0x1d728: 0x6ce25820, 0x1d729: 0x6cc51820, 0x1d72a: 0x6ccd6620, 0x1d72b: 0x6cb72820,
+-	0x1d72c: 0x6cea9420, 0x1d72d: 0x6d0abe20, 0x1d72e: 0x6d164e20, 0x1d72f: 0x6d0a6220,
+-	0x1d730: 0x6c617020, 0x1d731: 0x6cc5aa20, 0x1d732: 0x6c679c20, 0x1d733: 0x6c5b8c20,
+-	0x1d734: 0x6cab2c20, 0x1d735: 0x6c71f420, 0x1d736: 0x6d0b7220, 0x1d737: 0x6ca54220,
+-	0x1d738: 0x6d062420, 0x1d739: 0x6c354620, 0x1d73a: 0x6c952020, 0x1d73b: 0x6d045220,
+-	0x1d73c: 0x6cd97c20, 0x1d73d: 0x6c3cc420, 0x1d73e: 0x6ccf3220, 0x1d73f: 0x6c39b820,
+-	// Block 0x75d, offset 0x1d740
+-	0x1d740: 0x6c73d620, 0x1d741: 0x6d333a20, 0x1d742: 0x6c475a20, 0x1d743: 0x6c508a20,
+-	0x1d744: 0x6cb27020, 0x1d745: 0x6d410820, 0x1d746: 0x6cd40e20, 0x1d747: 0x6d048620,
+-	0x1d748: 0x6d2caa20, 0x1d749: 0x6cdb7820, 0x1d74a: 0x6d31b420, 0x1d74b: 0x6c2bce20,
+-	0x1d74c: 0x6d385420, 0x1d74d: 0x6c221e20, 0x1d74e: 0x6cc0d420, 0x1d74f: 0x6d2f9820,
+-	0x1d750: 0x6c092020, 0x1d751: 0x6d169c20, 0x1d752: 0x6d146620, 0x1d753: 0x6c7b8620,
+-	0x1d754: 0x6c82b620, 0x1d755: 0x6cd32220, 0x1d756: 0x6c48aa20, 0x1d757: 0x6cd19c20,
+-	0x1d758: 0x6c5fe420, 0x1d759: 0x6c5a8c20, 0x1d75a: 0x6c19c020, 0x1d75b: 0x6d398420,
+-	0x1d75c: 0x6ccfb420, 0x1d75d: 0x6c578620, 0x1d75e: 0x6c286c20, 0x1d75f: 0x6c469620,
+-	0x1d760: 0x6cc2ba20, 0x1d761: 0x6c4aca20, 0x1d762: 0x6d09e020, 0x1d763: 0x6d16d220,
+-	0x1d764: 0x6d328e20, 0x1d765: 0x6c40de20, 0x1d766: 0x6cfdb020, 0x1d767: 0x6c143220,
+-	0x1d768: 0x6c5d1a20, 0x1d769: 0x6d062e20, 0x1d76a: 0x6d386220, 0x1d76b: 0x6c6bd420,
+-	0x1d76c: 0x6cf35c20, 0x1d76d: 0x6d223020, 0x1d76e: 0x6cbc3220, 0x1d76f: 0x6cf4ce20,
+-	0x1d770: 0x6c433c20, 0x1d771: 0x6d203220, 0x1d772: 0x6c5ba420, 0x1d773: 0x6c7bbc20,
+-	0x1d774: 0x6cd76620, 0x1d775: 0x6cd98220, 0x1d776: 0x6c370a20, 0x1d777: 0x6cbea220,
+-	0x1d778: 0x6d399620, 0x1d779: 0x6d404a20, 0x1d77a: 0x6caae620, 0x1d77b: 0x6c319420,
+-	0x1d77c: 0x6d3d3e20, 0x1d77d: 0x6c3a4e20, 0x1d77e: 0x6c789c20, 0x1d77f: 0x6cefa620,
+-	// Block 0x75e, offset 0x1d780
+-	0x1d780: 0x6d20f820, 0x1d781: 0x6cd6fa20, 0x1d782: 0x6cd05420, 0x1d783: 0x6c2e1620,
+-	0x1d784: 0x6c15a220, 0x1d785: 0x6c89b020, 0x1d786: 0x6d3cd020, 0x1d787: 0x6cdc3220,
+-	0x1d788: 0x6cdfd620, 0x1d789: 0x6cd05620, 0x1d78a: 0x6d174820, 0x1d78b: 0x6ca1d020,
+-	0x1d78c: 0x6c18c220, 0x1d78d: 0x6c2e9620, 0x1d78e: 0x6c5a5220, 0x1d78f: 0x6c668220,
+-	0x1d790: 0x6d00a620, 0x1d791: 0x6d095a20, 0x1d792: 0x6d12ea20, 0x1d793: 0x6cf08820,
+-	0x1d794: 0x6c361a20, 0x1d795: 0x6d232420, 0x1d796: 0x6d078e20, 0x1d797: 0x6c14f020,
+-	0x1d798: 0x6d3e2c20, 0x1d799: 0x6c012c20, 0x1d79a: 0x6d0e6620, 0x1d79b: 0x6c2c5020,
+-	0x1d79c: 0x6c9c4e20, 0x1d79d: 0x6cb13c20, 0x1d79e: 0x6d059020, 0x1d79f: 0x6ca05820,
+-	0x1d7a0: 0x6c292e20, 0x1d7a1: 0x6cdab820, 0x1d7a2: 0x6d01b620, 0x1d7a3: 0x6d10fe20,
+-	0x1d7a4: 0x6c057420, 0x1d7a5: 0x6cd38c20, 0x1d7a6: 0x6cb8e420, 0x1d7a7: 0x6c9d4c20,
+-	0x1d7a8: 0x6c6c9820, 0x1d7a9: 0x6c976820, 0x1d7aa: 0x6d306620, 0x1d7ab: 0x6c65b620,
+-	0x1d7ac: 0x6ca05220, 0x1d7ad: 0x6cdff420, 0x1d7ae: 0x6d2b7820, 0x1d7af: 0x6cbbe420,
+-	0x1d7b0: 0x6c7fa820, 0x1d7b1: 0x6cb49020, 0x1d7b2: 0x6c748620, 0x1d7b3: 0x6d0ea820,
+-	0x1d7b4: 0x6cba1e20, 0x1d7b5: 0x6d2d9020, 0x1d7b6: 0x6c193c20, 0x1d7b7: 0x6c475c20,
+-	0x1d7b8: 0x6cb8cc20, 0x1d7b9: 0x6c534020, 0x1d7ba: 0x6cf96420, 0x1d7bb: 0x6c602420,
+-	0x1d7bc: 0x6c536820, 0x1d7bd: 0x6c4db220, 0x1d7be: 0x6c52c020, 0x1d7bf: 0x6cf6f420,
+-	// Block 0x75f, offset 0x1d7c0
+-	0x1d7c0: 0x6cf6f620, 0x1d7c1: 0x6c5d6220, 0x1d7c2: 0x6c8a3e20, 0x1d7c3: 0x6c4e6a20,
+-	0x1d7c4: 0x6c31f220, 0x1d7c5: 0x6c900420, 0x1d7c6: 0x6c30fa20, 0x1d7c7: 0x6c675a20,
+-	0x1d7c8: 0x6cb6e820, 0x1d7c9: 0x6cd37220, 0x1d7ca: 0x6c852420, 0x1d7cb: 0x6c2a9e20,
+-	0x1d7cc: 0x6cec9a20, 0x1d7cd: 0x6c088a20, 0x1d7ce: 0x6cd60820, 0x1d7cf: 0x6cfd1c20,
+-	0x1d7d0: 0x6c3c7020, 0x1d7d1: 0x6d375a20, 0x1d7d2: 0x6d377620, 0x1d7d3: 0x6d0f2c20,
+-	0x1d7d4: 0x6d0f3020, 0x1d7d5: 0x6cd2b020, 0x1d7d6: 0x6c1f1620, 0x1d7d7: 0x6c5aae20,
+-	0x1d7d8: 0x6cea4e20, 0x1d7d9: 0x6d177c20, 0x1d7da: 0x6cea5020, 0x1d7db: 0x6d177e20,
+-	0x1d7dc: 0x6c649020, 0x1d7dd: 0x6c034a20, 0x1d7de: 0x6c547220, 0x1d7df: 0x6c364820,
+-	0x1d7e0: 0x6c1e8420, 0x1d7e1: 0x6cfe3020, 0x1d7e2: 0x6c593e20, 0x1d7e3: 0x6c64c220,
+-	0x1d7e4: 0x6c790420, 0x1d7e5: 0x6c40fe20, 0x1d7e6: 0x6c725a20, 0x1d7e7: 0x6c3d8a20,
+-	0x1d7e8: 0x6cf68420, 0x1d7e9: 0x6c0d4820, 0x1d7ea: 0x6c4fd620, 0x1d7eb: 0x6d23ce20,
+-	0x1d7ec: 0x6d39c820, 0x1d7ed: 0x6c638420, 0x1d7ee: 0x6c3b9a20, 0x1d7ef: 0x6cf6f820,
+-	0x1d7f0: 0x6c0f8020, 0x1d7f1: 0x6cf16620, 0x1d7f2: 0x6c58aa20, 0x1d7f3: 0x6c0d5820,
+-	0x1d7f4: 0x6c2ba620, 0x1d7f5: 0x6d3fce20, 0x1d7f6: 0x6c3ba620, 0x1d7f7: 0x6d191c20,
+-	0x1d7f8: 0x6d357c20, 0x1d7f9: 0x6c064020, 0x1d7fa: 0x6c147820, 0x1d7fb: 0x6c01b420,
+-	0x1d7fc: 0x6cafe620, 0x1d7fd: 0x6ca33c20, 0x1d7fe: 0x6caf6620, 0x1d7ff: 0x6c468a20,
+-	// Block 0x760, offset 0x1d800
+-	0x1d800: 0x6ca34620, 0x1d801: 0x6d204820, 0x1d802: 0x6c2dcc20, 0x1d803: 0x6ca11e20,
+-	0x1d804: 0x6cd8ce20, 0x1d805: 0x6d04dc20, 0x1d806: 0x6c588420, 0x1d807: 0x6c7d7220,
+-	0x1d808: 0x6c514820, 0x1d809: 0x6c4fce20, 0x1d80a: 0x6ca13220, 0x1d80b: 0x6c4ef020,
+-	0x1d80c: 0x6c99a420, 0x1d80d: 0x6c842220, 0x1d80e: 0x6ca60420, 0x1d80f: 0x6c08f420,
+-	0x1d810: 0x6d229620, 0x1d811: 0x6c638620, 0x1d812: 0x6ce93a20, 0x1d813: 0x6c98be20,
+-	0x1d814: 0x6cb02620, 0x1d815: 0x6cf6fa20, 0x1d816: 0x6c36b820, 0x1d817: 0x6c72ae20,
+-	0x1d818: 0x6ca17820, 0x1d819: 0x6c1e6a20, 0x1d81a: 0x6ce03820, 0x1d81b: 0x6c584e20,
+-	0x1d81c: 0x6c753620, 0x1d81d: 0x6c06dc20, 0x1d81e: 0x6d313220, 0x1d81f: 0x6d254a20,
+-	0x1d820: 0x6c3fc820, 0x1d821: 0x6c110e20, 0x1d822: 0x6c461420, 0x1d823: 0x6ce27220,
+-	0x1d824: 0x6d14de20, 0x1d825: 0x6c4f7820, 0x1d826: 0x6ced8020, 0x1d827: 0x6cb20a20,
+-	0x1d828: 0x6c5dc820, 0x1d829: 0x6c395020, 0x1d82a: 0x6cdfa620, 0x1d82b: 0x6c498620,
+-	0x1d82c: 0x6d2ac820, 0x1d82d: 0x6d345e20, 0x1d82e: 0x6c37cc20, 0x1d82f: 0x6d3afe20,
+-	0x1d830: 0x6cd38e20, 0x1d831: 0x6c09ae20, 0x1d832: 0x6d3e5e20, 0x1d833: 0x6c37d020,
+-	0x1d834: 0x6c4b4e20, 0x1d835: 0x6cb14020, 0x1d836: 0x6c0b3a20, 0x1d837: 0x6c971420,
+-	0x1d838: 0x6c277220, 0x1d839: 0x6cd16820, 0x1d83a: 0x6c7bf820, 0x1d83b: 0x6c3ab220,
+-	0x1d83c: 0x6ce5f420, 0x1d83d: 0x6d150620, 0x1d83e: 0x6c1b2a20, 0x1d83f: 0x6c998620,
+-	// Block 0x761, offset 0x1d840
+-	0x1d840: 0x6c51c820, 0x1d841: 0x6c09b020, 0x1d842: 0x6c927420, 0x1d843: 0x6c8c5420,
+-	0x1d844: 0x6c5bec20, 0x1d845: 0x6c410020, 0x1d846: 0x6cb11a20, 0x1d847: 0x6d3e6020,
+-	0x1d848: 0x6c642020, 0x1d849: 0x6d070420, 0x1d84a: 0x6d2b6020, 0x1d84b: 0x6c691020,
+-	0x1d84c: 0x6c414a20, 0x1d84d: 0x6d29dc20, 0x1d84e: 0x6c669e20, 0x1d84f: 0x6d1be220,
+-	0x1d850: 0x6d0a9c20, 0x1d851: 0x6d325420, 0x1d852: 0x6ccef820, 0x1d853: 0x6c0d4a20,
+-	0x1d854: 0x6c0d4c20, 0x1d855: 0x6cc08620, 0x1d856: 0x6ccefa20, 0x1d857: 0x6c203c20,
+-	0x1d858: 0x6d29e620, 0x1d859: 0x6d38a220, 0x1d85a: 0x6c7f5220, 0x1d85b: 0x6d299820,
+-	0x1d85c: 0x6c22e020, 0x1d85d: 0x6c188620, 0x1d85e: 0x6cce3a20, 0x1d85f: 0x6ce51620,
+-	0x1d860: 0x6cadee20, 0x1d861: 0x6c44de20, 0x1d862: 0x6cfb8820, 0x1d863: 0x6c974020,
+-	0x1d864: 0x6c66c220, 0x1d865: 0x6cdc6820, 0x1d866: 0x6c404420, 0x1d867: 0x6ce0aa20,
+-	0x1d868: 0x6c23ae20, 0x1d869: 0x6c23b020, 0x1d86a: 0x6d36c620, 0x1d86b: 0x6c5f2220,
+-	0x1d86c: 0x6d2f3e20, 0x1d86d: 0x6c322c20, 0x1d86e: 0x6c6d5420, 0x1d86f: 0x6d047420,
+-	0x1d870: 0x6c218820, 0x1d871: 0x6d280420, 0x1d872: 0x6c061420, 0x1d873: 0x6d290c20,
+-	0x1d874: 0x6c7f5820, 0x1d875: 0x6c3cf820, 0x1d876: 0x6c125c20, 0x1d877: 0x6c5f6020,
+-	0x1d878: 0x6cd17e20, 0x1d879: 0x6d18da20, 0x1d87a: 0x6d3bec20, 0x1d87b: 0x6c406820,
+-	0x1d87c: 0x6c46de20, 0x1d87d: 0x6cc9ea20, 0x1d87e: 0x6d2b1a20, 0x1d87f: 0x6c8a4020,
+-	// Block 0x762, offset 0x1d880
+-	0x1d880: 0x6d18f820, 0x1d881: 0x6c045e20, 0x1d882: 0x6c191620, 0x1d883: 0x6ceda620,
+-	0x1d884: 0x6d373220, 0x1d885: 0x6d3cb620, 0x1d886: 0x6c0c4620, 0x1d887: 0x6d276e20,
+-	0x1d888: 0x6d2bb620, 0x1d889: 0x6c28e020, 0x1d88a: 0x6d29ae20, 0x1d88b: 0x6d0eec20,
+-	0x1d88c: 0x6cb4c420, 0x1d88d: 0x6ccdd820, 0x1d88e: 0x6cedac20, 0x1d88f: 0x6d1cca20,
+-	0x1d890: 0x6c6d7220, 0x1d891: 0x6c423c20, 0x1d892: 0x6cfbd420, 0x1d893: 0x6d29f020,
+-	0x1d894: 0x6c0ac620, 0x1d895: 0x6c31f420, 0x1d896: 0x6cd54820, 0x1d897: 0x6d0f0620,
+-	0x1d898: 0x6cce4220, 0x1d899: 0x6d08d420, 0x1d89a: 0x6c907020, 0x1d89b: 0x6c424420,
+-	0x1d89c: 0x6d29f420, 0x1d89d: 0x6c06d220, 0x1d89e: 0x6d311c20, 0x1d89f: 0x6c3fa820,
+-	0x1d8a0: 0x6d253420, 0x1d8a1: 0x6c460c20, 0x1d8a2: 0x6c110c20, 0x1d8a3: 0x6d2aae20,
+-	0x1d8a4: 0x6cfb2e20, 0x1d8a5: 0x6c043820, 0x1d8a6: 0x6d2f2a20, 0x1d8a7: 0x6c5da220,
+-	0x1d8a8: 0x6d358e20, 0x1d8a9: 0x6c393420, 0x1d8aa: 0x6cdf9220, 0x1d8ab: 0x6cb20620,
+-	0x1d8ac: 0x6c0b2a20, 0x1d8ad: 0x6c469820, 0x1d8ae: 0x6d3ab420, 0x1d8af: 0x6c497a20,
+-	0x1d8b0: 0x6c37c420, 0x1d8b1: 0x6c666220, 0x1d8b2: 0x6c078220, 0x1d8b3: 0x6cd34820,
+-	0x1d8b4: 0x6ce5ec20, 0x1d8b5: 0x6c4b3a20, 0x1d8b6: 0x6c7bec20, 0x1d8b7: 0x6c274e20,
+-	0x1d8b8: 0x6c995a20, 0x1d8b9: 0x6c3a9220, 0x1d8ba: 0x6c51be20, 0x1d8bb: 0x6d14b020,
+-	0x1d8bc: 0x6d2b5c20, 0x1d8bd: 0x6d35ce20, 0x1d8be: 0x6c640e20, 0x1d8bf: 0x6c5bb020,
+-	// Block 0x763, offset 0x1d8c0
+-	0x1d8c0: 0x6d3e1e20, 0x1d8c1: 0x6c8c5020, 0x1d8c2: 0x6c922c20, 0x1d8c3: 0x6d29d820,
+-	0x1d8c4: 0x6d3e2020, 0x1d8c5: 0x6c40f020, 0x1d8c6: 0x6c6cfa20, 0x1d8c7: 0x6cc05220,
+-	0x1d8c8: 0x6d323c20, 0x1d8c9: 0x6c7f4620, 0x1d8ca: 0x6ccef020, 0x1d8cb: 0x6c400020,
+-	0x1d8cc: 0x6c322020, 0x1d8cd: 0x6c5edc20, 0x1d8ce: 0x6cd52c20, 0x1d8cf: 0x6cce3820,
+-	0x1d8d0: 0x6c22ce20, 0x1d8d1: 0x6c09b220, 0x1d8d2: 0x6d388c20, 0x1d8d3: 0x6c44d420,
+-	0x1d8d4: 0x6cadda20, 0x1d8d5: 0x6c283620, 0x1d8d6: 0x6c7f4c20, 0x1d8d7: 0x6c3ce820,
+-	0x1d8d8: 0x6d3c9e20, 0x1d8d9: 0x6c402820, 0x1d8da: 0x6d3bd620, 0x1d8db: 0x6cc9e620,
+-	0x1d8dc: 0x6d2af420, 0x1d8dd: 0x6d0ec820, 0x1d8de: 0x6d299a20, 0x1d8df: 0x6d276820,
+-	0x1d8e0: 0x6d2bb220, 0x1d8e1: 0x6ccdc220, 0x1d8e2: 0x6d1cae20, 0x1d8e3: 0x6c423e20,
+-	0x1d8e4: 0x6c1be820, 0x1d8e5: 0x6cf60220, 0x1d8e6: 0x6ccf4620, 0x1d8e7: 0x6ca42420,
+-	0x1d8e8: 0x6ce75e20, 0x1d8e9: 0x6cf8a820, 0x1d8ea: 0x6c197620, 0x1d8eb: 0x6c51dc20,
+-	0x1d8ec: 0x6c199620, 0x1d8ed: 0x6d30dc20, 0x1d8ee: 0x6cf9f620, 0x1d8ef: 0x6ce14620,
+-	0x1d8f0: 0x6d407e20, 0x1d8f1: 0x6d407c20, 0x1d8f2: 0x6c85b620, 0x1d8f3: 0x6c6f6020,
+-	0x1d8f4: 0x6c3fca20, 0x1d8f5: 0x6d2fa620, 0x1d8f6: 0x6c41d220, 0x1d8f7: 0x6cb6ea20,
+-	0x1d8f8: 0x6ccd8020, 0x1d8f9: 0x6cbf1c20, 0x1d8fa: 0x6d1adc20, 0x1d8fb: 0x6cfc0c20,
+-	0x1d8fc: 0x6c21fe20, 0x1d8fd: 0x6c743620, 0x1d8fe: 0x6cbdd420, 0x1d8ff: 0x6c1b2020,
+-	// Block 0x764, offset 0x1d900
+-	0x1d900: 0x6c220020, 0x1d901: 0x6c192820, 0x1d902: 0x6c192a20, 0x1d903: 0x6c2eb620,
+-	0x1d904: 0x6c70a020, 0x1d905: 0x6c174820, 0x1d906: 0x6c2b3020, 0x1d907: 0x6cf89620,
+-	0x1d908: 0x6d2d7a20, 0x1d909: 0x6c745c20, 0x1d90a: 0x6d26be20, 0x1d90b: 0x6cc11820,
+-	0x1d90c: 0x6c606220, 0x1d90d: 0x6c1b3e20, 0x1d90e: 0x6c1e9420, 0x1d90f: 0x6c486420,
+-	0x1d910: 0x6d096820, 0x1d911: 0x6d3e6220, 0x1d912: 0x6ce59420, 0x1d913: 0x6c349c20,
+-	0x1d914: 0x6c8b1c20, 0x1d915: 0x6c41e220, 0x1d916: 0x6cdd3220, 0x1d917: 0x6c245020,
+-	0x1d918: 0x6cf79820, 0x1d919: 0x6d2fd220, 0x1d91a: 0x6cdaf420, 0x1d91b: 0x6d1b0020,
+-	0x1d91c: 0x6c715020, 0x1d91d: 0x6c66c420, 0x1d91e: 0x6cc3f420, 0x1d91f: 0x6ce1a020,
+-	0x1d920: 0x6c21d020, 0x1d921: 0x6c250420, 0x1d922: 0x6c92b820, 0x1d923: 0x6cc27420,
+-	0x1d924: 0x6c298c20, 0x1d925: 0x6cbfc820, 0x1d926: 0x6d3e9220, 0x1d927: 0x6ce37e20,
+-	0x1d928: 0x6cc14a20, 0x1d929: 0x6c1c8820, 0x1d92a: 0x6c5a1e20, 0x1d92b: 0x6cbc0a20,
+-	0x1d92c: 0x6cbbc220, 0x1d92d: 0x6c69ce20, 0x1d92e: 0x6d2a9a20, 0x1d92f: 0x6ce44220,
+-	0x1d930: 0x6c37b020, 0x1d931: 0x6d298420, 0x1d932: 0x6d298820, 0x1d933: 0x6d40a620,
+-	0x1d934: 0x6cabbc20, 0x1d935: 0x6c064220, 0x1d936: 0x6c7a8c20, 0x1d937: 0x6c77f220,
+-	0x1d938: 0x6c33cc20, 0x1d939: 0x6c743820, 0x1d93a: 0x6c3d6c20, 0x1d93b: 0x6c190020,
+-	0x1d93c: 0x6c658c20, 0x1d93d: 0x6c39e420, 0x1d93e: 0x6d352420, 0x1d93f: 0x6cdde620,
+-	// Block 0x765, offset 0x1d940
+-	0x1d940: 0x6d26a820, 0x1d941: 0x6c03b620, 0x1d942: 0x6cb5d820, 0x1d943: 0x6d26aa20,
+-	0x1d944: 0x6cbab420, 0x1d945: 0x6ceba820, 0x1d946: 0x6cdf2420, 0x1d947: 0x6d17c820,
+-	0x1d948: 0x6ca72620, 0x1d949: 0x6c8d0e20, 0x1d94a: 0x6c9a9420, 0x1d94b: 0x6c038220,
+-	0x1d94c: 0x6c2e5820, 0x1d94d: 0x6c7a4420, 0x1d94e: 0x6ceb2420, 0x1d94f: 0x6c636620,
+-	0x1d950: 0x6c220620, 0x1d951: 0x6cad7820, 0x1d952: 0x6cb83820, 0x1d953: 0x6d3b0020,
+-	0x1d954: 0x6c70a220, 0x1d955: 0x6c2d1c20, 0x1d956: 0x6d346e20, 0x1d957: 0x6c3d7620,
+-	0x1d958: 0x6cac5a20, 0x1d959: 0x6c724e20, 0x1d95a: 0x6ccce620, 0x1d95b: 0x6c0fe420,
+-	0x1d95c: 0x6ca5ec20, 0x1d95d: 0x6c724620, 0x1d95e: 0x6c861e20, 0x1d95f: 0x6c449a20,
+-	0x1d960: 0x6d152420, 0x1d961: 0x6c5ef420, 0x1d962: 0x6c34fe20, 0x1d963: 0x6cfc1c20,
+-	0x1d964: 0x6c685420, 0x1d965: 0x6c350020, 0x1d966: 0x6d39b620, 0x1d967: 0x6cc30620,
+-	0x1d968: 0x6c7aec20, 0x1d969: 0x6d3b6820, 0x1d96a: 0x6c4b5a20, 0x1d96b: 0x6cbf4420,
+-	0x1d96c: 0x6c7cd620, 0x1d96d: 0x6cfdce20, 0x1d96e: 0x6c1c3620, 0x1d96f: 0x6c927620,
+-	0x1d970: 0x6cb11c20, 0x1d971: 0x6d367020, 0x1d972: 0x6c63d020, 0x1d973: 0x6ce5dc20,
+-	0x1d974: 0x6c113820, 0x1d975: 0x6c669820, 0x1d976: 0x6cde6a20, 0x1d977: 0x6cbb8020,
+-	0x1d978: 0x6c09e220, 0x1d979: 0x6cfab220, 0x1d97a: 0x6c350220, 0x1d97b: 0x6c5ef620,
+-	0x1d97c: 0x6c714620, 0x1d97d: 0x6c625420, 0x1d97e: 0x6cd4fa20, 0x1d97f: 0x6ce8e020,
+-	// Block 0x766, offset 0x1d980
+-	0x1d980: 0x6c1f6420, 0x1d981: 0x6c6e9a20, 0x1d982: 0x6ca85620, 0x1d983: 0x6cfef820,
+-	0x1d984: 0x6c10b020, 0x1d985: 0x6d091420, 0x1d986: 0x6c259a20, 0x1d987: 0x6ca25020,
+-	0x1d988: 0x6cd4fc20, 0x1d989: 0x6c896220, 0x1d98a: 0x6d1e5420, 0x1d98b: 0x6c691820,
+-	0x1d98c: 0x6c1dce20, 0x1d98d: 0x6cbb9220, 0x1d98e: 0x6ca1da20, 0x1d98f: 0x6cde9420,
+-	0x1d990: 0x6c66c620, 0x1d991: 0x6cb64620, 0x1d992: 0x6cf29e20, 0x1d993: 0x6cf00e20,
+-	0x1d994: 0x6c219820, 0x1d995: 0x6c6b2a20, 0x1d996: 0x6c609a20, 0x1d997: 0x6ca86420,
+-	0x1d998: 0x6c70be20, 0x1d999: 0x6c70c020, 0x1d99a: 0x6c950c20, 0x1d99b: 0x6c92bc20,
+-	0x1d99c: 0x6c839a20, 0x1d99d: 0x6c57f020, 0x1d99e: 0x6c728420, 0x1d99f: 0x6c1b4e20,
+-	0x1d9a0: 0x6ced4820, 0x1d9a1: 0x6cc31420, 0x1d9a2: 0x6ce2fa20, 0x1d9a3: 0x6c0f4c20,
+-	0x1d9a4: 0x6d40d220, 0x1d9a5: 0x6cbce220, 0x1d9a6: 0x6d160820, 0x1d9a7: 0x6c245e20,
+-	0x1d9a8: 0x6d3fbc20, 0x1d9a9: 0x6c113e20, 0x1d9aa: 0x6d3fbe20, 0x1d9ab: 0x6caf1620,
+-	0x1d9ac: 0x6d36c820, 0x1d9ad: 0x6d32d820, 0x1d9ae: 0x6c2d2a20, 0x1d9af: 0x6d349420,
+-	0x1d9b0: 0x6d21aa20, 0x1d9b1: 0x6c346220, 0x1d9b2: 0x6c340c20, 0x1d9b3: 0x6c202820,
+-	0x1d9b4: 0x6d1e6020, 0x1d9b5: 0x6d380820, 0x1d9b6: 0x6c2c9e20, 0x1d9b7: 0x6d2c9220,
+-	0x1d9b8: 0x6c191020, 0x1d9b9: 0x6c1fce20, 0x1d9ba: 0x6c66c820, 0x1d9bb: 0x6c486e20,
+-	0x1d9bc: 0x6ce13e20, 0x1d9bd: 0x6c71d620, 0x1d9be: 0x6c3efa20, 0x1d9bf: 0x6d40d820,
+-	// Block 0x767, offset 0x1d9c0
+-	0x1d9c0: 0x6c2eec20, 0x1d9c1: 0x6cb12e20, 0x1d9c2: 0x6cc76020, 0x1d9c3: 0x6cab1020,
+-	0x1d9c4: 0x6ce38020, 0x1d9c5: 0x6c142020, 0x1d9c6: 0x6ce9ec20, 0x1d9c7: 0x6c65ee20,
+-	0x1d9c8: 0x6c29f420, 0x1d9c9: 0x6c25ca20, 0x1d9ca: 0x6cb53a20, 0x1d9cb: 0x6cdeb020,
+-	0x1d9cc: 0x6cbae420, 0x1d9cd: 0x6ca74020, 0x1d9ce: 0x6c2ce020, 0x1d9cf: 0x6ce38a20,
+-	0x1d9d0: 0x6c60ce20, 0x1d9d1: 0x6ca87e20, 0x1d9d2: 0x6cac7820, 0x1d9d3: 0x6c8e3a20,
+-	0x1d9d4: 0x6d29aa20, 0x1d9d5: 0x6c0a7a20, 0x1d9d6: 0x6c1cf220, 0x1d9d7: 0x6c931020,
+-	0x1d9d8: 0x6c8a4220, 0x1d9d9: 0x6c246e20, 0x1d9da: 0x6ce0da20, 0x1d9db: 0x6c27a420,
+-	0x1d9dc: 0x6cdb5420, 0x1d9dd: 0x6cf81e20, 0x1d9de: 0x6c7ce220, 0x1d9df: 0x6c5f7820,
+-	0x1d9e0: 0x6d34ae20, 0x1d9e1: 0x6cbaee20, 0x1d9e2: 0x6c2ba820, 0x1d9e3: 0x6cac8420,
+-	0x1d9e4: 0x6d3fd020, 0x1d9e5: 0x6c887020, 0x1d9e6: 0x6c085c20, 0x1d9e7: 0x6d2a2a20,
+-	0x1d9e8: 0x6ca74820, 0x1d9e9: 0x6c0d0220, 0x1d9ea: 0x6ce9d220, 0x1d9eb: 0x6c717e20,
+-	0x1d9ec: 0x6c2ac020, 0x1d9ed: 0x6c137020, 0x1d9ee: 0x6cfaf420, 0x1d9ef: 0x6c38dc20,
+-	0x1d9f0: 0x6c1ec820, 0x1d9f1: 0x6d37d820, 0x1d9f2: 0x6c33be20, 0x1d9f3: 0x6c0e9a20,
+-	0x1d9f4: 0x6c247420, 0x1d9f5: 0x6c247620, 0x1d9f6: 0x6c74f220, 0x1d9f7: 0x6c74f420,
+-	0x1d9f8: 0x6c8c7e20, 0x1d9f9: 0x6cde0620, 0x1d9fa: 0x6cbbc420, 0x1d9fb: 0x6c73bc20,
+-	0x1d9fc: 0x6cb4a220, 0x1d9fd: 0x6c89d420, 0x1d9fe: 0x6c33c020, 0x1d9ff: 0x6c249620,
+-	// Block 0x768, offset 0x1da00
+-	0x1da00: 0x6c7c1220, 0x1da01: 0x6d2a9c20, 0x1da02: 0x6c26d220, 0x1da03: 0x6c0abc20,
+-	0x1da04: 0x6c0abe20, 0x1da05: 0x6d3a3820, 0x1da06: 0x6c72be20, 0x1da07: 0x6c1ec020,
+-	0x1da08: 0x6cbc7020, 0x1da09: 0x6c33d020, 0x1da0a: 0x6c1e0820, 0x1da0b: 0x6c5f9620,
+-	0x1da0c: 0x6cf48e20, 0x1da0d: 0x6d271820, 0x1da0e: 0x6ca74c20, 0x1da0f: 0x6c8c8220,
+-	0x1da10: 0x6c8b7620, 0x1da11: 0x6d34c020, 0x1da12: 0x6c878220, 0x1da13: 0x6d376a20,
+-	0x1da14: 0x6c156e20, 0x1da15: 0x6c1ece20, 0x1da16: 0x6c32e820, 0x1da17: 0x6cf12420,
+-	0x1da18: 0x6c900620, 0x1da19: 0x6c8c8c20, 0x1da1a: 0x6cfb0e20, 0x1da1b: 0x6cf12e20,
+-	0x1da1c: 0x6d414020, 0x1da1d: 0x6c801220, 0x1da1e: 0x6d028e20, 0x1da1f: 0x6cc4fa20,
+-	0x1da20: 0x6cc95e20, 0x1da21: 0x6ca8ce20, 0x1da22: 0x6cdef620, 0x1da23: 0x6cc22c20,
+-	0x1da24: 0x6c6c1220, 0x1da25: 0x6c249a20, 0x1da26: 0x6c260620, 0x1da27: 0x6cf83020,
+-	0x1da28: 0x6c7cc620, 0x1da29: 0x6c753a20, 0x1da2a: 0x6c8c9020, 0x1da2b: 0x6ccfa420,
+-	0x1da2c: 0x6c457e20, 0x1da2d: 0x6c27d820, 0x1da2e: 0x6c3c0a20, 0x1da2f: 0x6cc10820,
+-	0x1da30: 0x6ce3c220, 0x1da31: 0x6c349e20, 0x1da32: 0x6c34a020, 0x1da33: 0x6c459a20,
+-	0x1da34: 0x6c80da20, 0x1da35: 0x6cc60e20, 0x1da36: 0x6c95be20, 0x1da37: 0x6c007620,
+-	0x1da38: 0x6c5f2420, 0x1da39: 0x6c715220, 0x1da3a: 0x6ce18020, 0x1da3b: 0x6c79ae20,
+-	0x1da3c: 0x6c81de20, 0x1da3d: 0x6d0dd820, 0x1da3e: 0x6c9abc20, 0x1da3f: 0x6c775c20,
+-	// Block 0x769, offset 0x1da40
+-	0x1da40: 0x6cc15420, 0x1da41: 0x6c90ce20, 0x1da42: 0x6c81ea20, 0x1da43: 0x6c34c020,
+-	0x1da44: 0x6d34b420, 0x1da45: 0x6d0f3c20, 0x1da46: 0x6ce3cc20, 0x1da47: 0x6c2a4e20,
+-	0x1da48: 0x6d1d7420, 0x1da49: 0x6d249a20, 0x1da4a: 0x6c17ce20, 0x1da4b: 0x6d0b8220,
+-	0x1da4c: 0x6c4ade20, 0x1da4d: 0x6c756420, 0x1da4e: 0x6cf08220, 0x1da4f: 0x6d269e20,
+-	0x1da50: 0x6d032c20, 0x1da51: 0x6c275420, 0x1da52: 0x6d078a20, 0x1da53: 0x6c393e20,
+-	0x1da54: 0x6cc5e420, 0x1da55: 0x6cccde20, 0x1da56: 0x6c7bc020, 0x1da57: 0x6cd4d620,
+-	0x1da58: 0x6cea5220, 0x1da59: 0x6c18c420, 0x1da5a: 0x6c276820, 0x1da5b: 0x6c361c20,
+-	0x1da5c: 0x6ca34020, 0x1da5d: 0x6cb5dc20, 0x1da5e: 0x6c98de20, 0x1da5f: 0x6cc86020,
+-	0x1da60: 0x6cc5ec20, 0x1da61: 0x6cb98c20, 0x1da62: 0x6d3ba620, 0x1da63: 0x6c52a020,
+-	0x1da64: 0x6c54d220, 0x1da65: 0x6cc19c20, 0x1da66: 0x6c7bfa20, 0x1da67: 0x6c2bfc20,
+-	0x1da68: 0x6c8d1220, 0x1da69: 0x6c277420, 0x1da6a: 0x6c022c20, 0x1da6b: 0x6d31e220,
+-	0x1da6c: 0x6c395620, 0x1da6d: 0x6c7baa20, 0x1da6e: 0x6d102220, 0x1da6f: 0x6cae7420,
+-	0x1da70: 0x6c072820, 0x1da71: 0x6c471420, 0x1da72: 0x6c471620, 0x1da73: 0x6cad5e20,
+-	0x1da74: 0x6d3b0420, 0x1da75: 0x6cc71020, 0x1da76: 0x6c364a20, 0x1da77: 0x6c038420,
+-	0x1da78: 0x6d38d420, 0x1da79: 0x6d353020, 0x1da7a: 0x6d110020, 0x1da7b: 0x6c780020,
+-	0x1da7c: 0x6d17ca20, 0x1da7d: 0x6d364420, 0x1da7e: 0x6cd3a820, 0x1da7f: 0x6cb2b820,
+-	// Block 0x76a, offset 0x1da80
+-	0x1da80: 0x6c375e20, 0x1da81: 0x6c45f420, 0x1da82: 0x6c713a20, 0x1da83: 0x6c69a820,
+-	0x1da84: 0x6c49ee20, 0x1da85: 0x6c514c20, 0x1da86: 0x6c766420, 0x1da87: 0x6cc30820,
+-	0x1da88: 0x6d389420, 0x1da89: 0x6d293c20, 0x1da8a: 0x6d367220, 0x1da8b: 0x6ccef620,
+-	0x1da8c: 0x6c89c420, 0x1da8d: 0x6d23ae20, 0x1da8e: 0x6cce7c20, 0x1da8f: 0x6d1f5c20,
+-	0x1da90: 0x6ced9020, 0x1da91: 0x6d1af820, 0x1da92: 0x6d307420, 0x1da93: 0x6ced3e20,
+-	0x1da94: 0x6c3f7c20, 0x1da95: 0x6cbe5420, 0x1da96: 0x6d38a620, 0x1da97: 0x6ca60620,
+-	0x1da98: 0x6c838420, 0x1da99: 0x6d308420, 0x1da9a: 0x6d2e7a20, 0x1da9b: 0x6c89ca20,
+-	0x1da9c: 0x6d3e8220, 0x1da9d: 0x6c5aee20, 0x1da9e: 0x6cee3820, 0x1da9f: 0x6c21d220,
+-	0x1daa0: 0x6c4ccc20, 0x1daa1: 0x6c76e820, 0x1daa2: 0x6d160a20, 0x1daa3: 0x6caec220,
+-	0x1daa4: 0x6cba7a20, 0x1daa5: 0x6c4be620, 0x1daa6: 0x6ca73a20, 0x1daa7: 0x6cb2c820,
+-	0x1daa8: 0x6c496020, 0x1daa9: 0x6c075220, 0x1daaa: 0x6c950e20, 0x1daab: 0x6cac0420,
+-	0x1daac: 0x6c896c20, 0x1daad: 0x6cc88020, 0x1daae: 0x6cc76220, 0x1daaf: 0x6c631020,
+-	0x1dab0: 0x6d0fda20, 0x1dab1: 0x6cfba020, 0x1dab2: 0x6c201020, 0x1dab3: 0x6c23fe20,
+-	0x1dab4: 0x6c211c20, 0x1dab5: 0x6c443c20, 0x1dab6: 0x6d1f7220, 0x1dab7: 0x6c52cc20,
+-	0x1dab8: 0x6cd50820, 0x1dab9: 0x6c405820, 0x1daba: 0x6d3e9420, 0x1dabb: 0x6c3efc20,
+-	0x1dabc: 0x6cf16820, 0x1dabd: 0x6c07cc20, 0x1dabe: 0x6d2e2020, 0x1dabf: 0x6d21c020,
+-	// Block 0x76b, offset 0x1dac0
+-	0x1dac0: 0x6cf16a20, 0x1dac1: 0x6ce1f420, 0x1dac2: 0x6c47dc20, 0x1dac3: 0x6d319e20,
+-	0x1dac4: 0x6cfa0220, 0x1dac5: 0x6d25b820, 0x1dac6: 0x6c931220, 0x1dac7: 0x6c689e20,
+-	0x1dac8: 0x6c178620, 0x1dac9: 0x6d3bb420, 0x1daca: 0x6cf0f820, 0x1dacb: 0x6c5d0420,
+-	0x1dacc: 0x6d098c20, 0x1dacd: 0x6d30b820, 0x1dace: 0x6c69d020, 0x1dacf: 0x6d2e9020,
+-	0x1dad0: 0x6c102620, 0x1dad1: 0x6c81c620, 0x1dad2: 0x6c3ba820, 0x1dad3: 0x6c386a20,
+-	0x1dad4: 0x6c8bfc20, 0x1dad5: 0x6c445220, 0x1dad6: 0x6ccb8e20, 0x1dad7: 0x6c76fc20,
+-	0x1dad8: 0x6c58be20, 0x1dad9: 0x6d162820, 0x1dada: 0x6c60f020, 0x1dadb: 0x6d3cc020,
+-	0x1dadc: 0x6c377820, 0x1dadd: 0x6d246820, 0x1dade: 0x6c671c20, 0x1dadf: 0x6c52e020,
+-	0x1dae0: 0x6c829220, 0x1dae1: 0x6cae2c20, 0x1dae2: 0x6c878420, 0x1dae3: 0x6c879a20,
+-	0x1dae4: 0x6c91a020, 0x1dae5: 0x6c8c9220, 0x1dae6: 0x6c17ca20, 0x1dae7: 0x6d0b6a20,
+-	0x1dae8: 0x6c4ac020, 0x1dae9: 0x6d077a20, 0x1daea: 0x6c272a20, 0x1daeb: 0x6cc5ca20,
+-	0x1daec: 0x6d3ba020, 0x1daed: 0x6c35e220, 0x1daee: 0x6c94e020, 0x1daef: 0x6cc85420,
+-	0x1daf0: 0x6c529820, 0x1daf1: 0x6c46fa20, 0x1daf2: 0x6c77ec20, 0x1daf3: 0x6c914820,
+-	0x1daf4: 0x6d38d020, 0x1daf5: 0x6d350a20, 0x1daf6: 0x6d171020, 0x1daf7: 0x6c54b220,
+-	0x1daf8: 0x6d31c420, 0x1daf9: 0x6c85ba20, 0x1dafa: 0x6d10dc20, 0x1dafb: 0x6cbe3620,
+-	0x1dafc: 0x6cd36220, 0x1dafd: 0x6d293420, 0x1dafe: 0x6d35d020, 0x1daff: 0x6c699620,
+-	// Block 0x76c, offset 0x1db00
+-	0x1db00: 0x6d386c20, 0x1db01: 0x6cc2d020, 0x1db02: 0x6c922e20, 0x1db03: 0x6c699820,
+-	0x1db04: 0x6d305420, 0x1db05: 0x6c3f6020, 0x1db06: 0x6c89b220, 0x1db07: 0x6ca72a20,
+-	0x1db08: 0x6c072a20, 0x1db09: 0x6c5abc20, 0x1db0a: 0x6c4bcc20, 0x1db0b: 0x6cee2620,
+-	0x1db0c: 0x6c895820, 0x1db0d: 0x6c21c420, 0x1db0e: 0x6d3e4820, 0x1db0f: 0x6c23f420,
+-	0x1db10: 0x6c3eae20, 0x1db11: 0x6c630c20, 0x1db12: 0x6cf15e20, 0x1db13: 0x6cd4f020,
+-	0x1db14: 0x6cae2020, 0x1db15: 0x6d259a20, 0x1db16: 0x6cf9e220, 0x1db17: 0x6ca72e20,
+-	0x1db18: 0x6c92c420, 0x1db19: 0x6d309420, 0x1db1a: 0x6c8be220, 0x1db1b: 0x6d02ae20,
+-	0x1db1c: 0x6c471820, 0x1db1d: 0x6c224a20, 0x1db1e: 0x6c225220, 0x1db1f: 0x6cb0a820,
+-	0x1db20: 0x6d41ba20, 0x1db21: 0x6c0bb020, 0x1db22: 0x6c7e8e20, 0x1db23: 0x6c7e9020,
+-	0x1db24: 0x6c226020, 0x1db25: 0x6d08ea20, 0x1db26: 0x6c050620, 0x1db27: 0x6c0bc020,
+-	0x1db28: 0x6c0bc220, 0x1db29: 0x6c0bc420, 0x1db2a: 0x6d08ec20, 0x1db2b: 0x6c0bcc20,
+-	0x1db2c: 0x6c04a820, 0x1db2d: 0x6c227e20, 0x1db2e: 0x6c0bd620, 0x1db2f: 0x6c0bda20,
+-	0x1db30: 0x6c18a020, 0x1db31: 0x6cc7fc20, 0x1db32: 0x6ca9bc20, 0x1db33: 0x6ca9c220,
+-	0x1db34: 0x6c160420, 0x1db35: 0x6c21a820, 0x1db36: 0x6c21a420, 0x1db37: 0x6d198820,
+-	0x1db38: 0x6cc61820, 0x1db39: 0x6c0ae820, 0x1db3a: 0x6c0aea20, 0x1db3b: 0x6cd22e20,
+-	0x1db3c: 0x6cc83220, 0x1db3d: 0x6c89d620, 0x1db3e: 0x6c267620, 0x1db3f: 0x6c14b620,
+-	// Block 0x76d, offset 0x1db40
+-	0x1db40: 0x6c416420, 0x1db41: 0x6cb8a020, 0x1db42: 0x6d207620, 0x1db43: 0x6d207820,
+-	0x1db44: 0x6cb73420, 0x1db45: 0x6d0a6820, 0x1db46: 0x6d145820, 0x1db47: 0x6c4ce420,
+-	0x1db48: 0x6c972020, 0x1db49: 0x6cb4ca20, 0x1db4a: 0x6d288620, 0x1db4b: 0x6cee4a20,
+-	0x1db4c: 0x6ce91e20, 0x1db4d: 0x6d3cca20, 0x1db4e: 0x6d1c5820, 0x1db4f: 0x6ce3d620,
+-	0x1db50: 0x6d281620, 0x1db51: 0x6c6cd620, 0x1db52: 0x6c4f5c20, 0x1db53: 0x6d0b7a20,
+-	0x1db54: 0x6c390620, 0x1db55: 0x6cf4b020, 0x1db56: 0x6c267820, 0x1db57: 0x6c354c20,
+-	0x1db58: 0x6c4d1c20, 0x1db59: 0x6d30e420, 0x1db5a: 0x6d384c20, 0x1db5b: 0x6c6cd820,
+-	0x1db5c: 0x6d25de20, 0x1db5d: 0x6ceee420, 0x1db5e: 0x6c87ee20, 0x1db5f: 0x6c1b0220,
+-	0x1db60: 0x6c180420, 0x1db61: 0x6ca68020, 0x1db62: 0x6ce57420, 0x1db63: 0x6d359020,
+-	0x1db64: 0x6d147c20, 0x1db65: 0x6c6efc20, 0x1db66: 0x6c633220, 0x1db67: 0x6c18a620,
+-	0x1db68: 0x6c273a20, 0x1db69: 0x6c378820, 0x1db6a: 0x6c2b5e20, 0x1db6b: 0x6cb36a20,
+-	0x1db6c: 0x6d3ab620, 0x1db6d: 0x6c2e6420, 0x1db6e: 0x6d2ab020, 0x1db6f: 0x6ce20620,
+-	0x1db70: 0x6cd5a220, 0x1db71: 0x6ceaf620, 0x1db72: 0x6cc28620, 0x1db73: 0x6c6e5020,
+-	0x1db74: 0x6c5b2a20, 0x1db75: 0x6c306820, 0x1db76: 0x6d203420, 0x1db77: 0x6c9c4020,
+-	0x1db78: 0x6c083c20, 0x1db79: 0x6c5e9c20, 0x1db7a: 0x6ca39c20, 0x1db7b: 0x6d14b220,
+-	0x1db7c: 0x6c6a9a20, 0x1db7d: 0x6d3c5820, 0x1db7e: 0x6c8ade20, 0x1db7f: 0x6d0a7420,
+-	// Block 0x76e, offset 0x1db80
+-	0x1db80: 0x6ce9f620, 0x1db81: 0x6cd98420, 0x1db82: 0x6cd34a20, 0x1db83: 0x6ce20e20,
+-	0x1db84: 0x6cacf820, 0x1db85: 0x6c546820, 0x1db86: 0x6ca68a20, 0x1db87: 0x6c33e420,
+-	0x1db88: 0x6c6f0420, 0x1db89: 0x6d084620, 0x1db8a: 0x6d0a7620, 0x1db8b: 0x6c101220,
+-	0x1db8c: 0x6d1e9c20, 0x1db8d: 0x6cfeac20, 0x1db8e: 0x6cc03a20, 0x1db8f: 0x6ce82420,
+-	0x1db90: 0x6d3a0a20, 0x1db91: 0x6cc03c20, 0x1db92: 0x6c2c3420, 0x1db93: 0x6c2c3620,
+-	0x1db94: 0x6ce89a20, 0x1db95: 0x6c6e6c20, 0x1db96: 0x6ce3e620, 0x1db97: 0x6c310a20,
+-	0x1db98: 0x6d15e020, 0x1db99: 0x6d30ee20, 0x1db9a: 0x6ce6f220, 0x1db9b: 0x6c4a2020,
+-	0x1db9c: 0x6cf4da20, 0x1db9d: 0x6cd36420, 0x1db9e: 0x6c1a6a20, 0x1db9f: 0x6cda9820,
+-	0x1dba0: 0x6d2a7a20, 0x1dba1: 0x6cc43620, 0x1dba2: 0x6c3ca420, 0x1dba3: 0x6c87fa20,
+-	0x1dba4: 0x6cddc820, 0x1dba5: 0x6c5b3220, 0x1dba6: 0x6c850e20, 0x1dba7: 0x6c483620,
+-	0x1dba8: 0x6c7f0220, 0x1dba9: 0x6c07b820, 0x1dbaa: 0x6c262420, 0x1dbab: 0x6c743e20,
+-	0x1dbac: 0x6c083e20, 0x1dbad: 0x6c591820, 0x1dbae: 0x6c271620, 0x1dbaf: 0x6c924a20,
+-	0x1dbb0: 0x6d1f3220, 0x1dbb1: 0x6d387c20, 0x1dbb2: 0x6c6d0820, 0x1dbb3: 0x6d232620,
+-	0x1dbb4: 0x6c219620, 0x1dbb5: 0x6c7c6820, 0x1dbb6: 0x6cee7620, 0x1dbb7: 0x6ce3f020,
+-	0x1dbb8: 0x6d178420, 0x1dbb9: 0x6c26a220, 0x1dbba: 0x6d25e620, 0x1dbbb: 0x6c954420,
+-	0x1dbbc: 0x6c087420, 0x1dbbd: 0x6caaf220, 0x1dbbe: 0x6d213a20, 0x1dbbf: 0x6c296a20,
+-	// Block 0x76f, offset 0x1dbc0
+-	0x1dbc0: 0x6cdbf620, 0x1dbc1: 0x6c33f420, 0x1dbc2: 0x6cdc4220, 0x1dbc3: 0x6d0d9820,
+-	0x1dbc4: 0x6c1ffc20, 0x1dbc5: 0x6c1b2c20, 0x1dbc6: 0x6ce33420, 0x1dbc7: 0x6d235c20,
+-	0x1dbc8: 0x6cd26c20, 0x1dbc9: 0x6d315a20, 0x1dbca: 0x6d1f4020, 0x1dbcb: 0x6d283820,
+-	0x1dbcc: 0x6c364c20, 0x1dbcd: 0x6c0ba420, 0x1dbce: 0x6c4cec20, 0x1dbcf: 0x6c364e20,
+-	0x1dbd0: 0x6cf9ca20, 0x1dbd1: 0x6c59ca20, 0x1dbd2: 0x6cc07020, 0x1dbd3: 0x6c2a1820,
+-	0x1dbd4: 0x6c26ac20, 0x1dbd5: 0x6cef1620, 0x1dbd6: 0x6ca45020, 0x1dbd7: 0x6d150820,
+-	0x1dbd8: 0x6c46be20, 0x1dbd9: 0x6d111620, 0x1dbda: 0x6c1e4620, 0x1dbdb: 0x6c8e7420,
+-	0x1dbdc: 0x6d0a9820, 0x1dbdd: 0x6cde6c20, 0x1dbde: 0x6c2c7420, 0x1dbdf: 0x6c1b4020,
+-	0x1dbe0: 0x6d25ec20, 0x1dbe1: 0x6cdada20, 0x1dbe2: 0x6cde6e20, 0x1dbe3: 0x6cba1420,
+-	0x1dbe4: 0x6c96f220, 0x1dbe5: 0x6d111820, 0x1dbe6: 0x6c499c20, 0x1dbe7: 0x6d2ed220,
+-	0x1dbe8: 0x6c025820, 0x1dbe9: 0x6cd3bc20, 0x1dbea: 0x6c10ea20, 0x1dbeb: 0x6c1c4e20,
+-	0x1dbec: 0x6cdaf620, 0x1dbed: 0x6d2a1c20, 0x1dbee: 0x6d300420, 0x1dbef: 0x6c340220,
+-	0x1dbf0: 0x6c2c8820, 0x1dbf1: 0x6c90ac20, 0x1dbf2: 0x6c1b5020, 0x1dbf3: 0x6c25c220,
+-	0x1dbf4: 0x6c8bd620, 0x1dbf5: 0x6d41f020, 0x1dbf6: 0x6cc54820, 0x1dbf7: 0x6cb91820,
+-	0x1dbf8: 0x6d085820, 0x1dbf9: 0x6d23d620, 0x1dbfa: 0x6d154e20, 0x1dbfb: 0x6cf51c20,
+-	0x1dbfc: 0x6c8a1620, 0x1dbfd: 0x6c729820, 0x1dbfe: 0x6cd3e220, 0x1dbff: 0x6c0a6020,
+-	// Block 0x770, offset 0x1dc00
+-	0x1dc00: 0x6d10bc20, 0x1dc01: 0x6c974220, 0x1dc02: 0x6d022220, 0x1dc03: 0x6cdc9420,
+-	0x1dc04: 0x6c4d2a20, 0x1dc05: 0x6d2d9e20, 0x1dc06: 0x6ce2b020, 0x1dc07: 0x6c37aa20,
+-	0x1dc08: 0x6c9ea220, 0x1dc09: 0x6c0b0c20, 0x1dc0a: 0x6c0b1420, 0x1dc0b: 0x6c7e5220,
+-	0x1dc0c: 0x6c847a20, 0x1dc0d: 0x6d25c820, 0x1dc0e: 0x6d117620, 0x1dc0f: 0x6c957c20,
+-	0x1dc10: 0x6c854c20, 0x1dc11: 0x6d169e20, 0x1dc12: 0x6ce65a20, 0x1dc13: 0x6c2ad420,
+-	0x1dc14: 0x6cb6c420, 0x1dc15: 0x6d1d8220, 0x1dc16: 0x6cccb420, 0x1dc17: 0x6c4dc820,
+-	0x1dc18: 0x6d20a420, 0x1dc19: 0x6c982220, 0x1dc1a: 0x6cc78820, 0x1dc1b: 0x6cbef620,
+-	0x1dc1c: 0x6cedb420, 0x1dc1d: 0x6c7bd620, 0x1dc1e: 0x6c3d3620, 0x1dc1f: 0x6c777a20,
+-	0x1dc20: 0x6c0d2020, 0x1dc21: 0x6c398220, 0x1dc22: 0x6d03bc20, 0x1dc23: 0x6ca30220,
+-	0x1dc24: 0x6d02a620, 0x1dc25: 0x6cd04220, 0x1dc26: 0x6c051620, 0x1dc27: 0x6d253620,
+-	0x1dc28: 0x6c259020, 0x1dc29: 0x6c5d8a20, 0x1dc2a: 0x6d006a20, 0x1dc2b: 0x6c052c20,
+-	0x1dc2c: 0x6cf34e20, 0x1dc2d: 0x6c720220, 0x1dc2e: 0x6d1ef620, 0x1dc2f: 0x6c4dd020,
+-	0x1dc30: 0x6cdf1220, 0x1dc31: 0x6cbf9820, 0x1dc32: 0x6c092220, 0x1dc33: 0x6caf2e20,
+-	0x1dc34: 0x6c0dbe20, 0x1dc35: 0x6ccec620, 0x1dc36: 0x6c06de20, 0x1dc37: 0x6cec1020,
+-	0x1dc38: 0x6c2bd020, 0x1dc39: 0x6d404620, 0x1dc3a: 0x6d12c820, 0x1dc3b: 0x6c8b9e20,
+-	0x1dc3c: 0x6c7b8820, 0x1dc3d: 0x6c4a3c20, 0x1dc3e: 0x6d398620, 0x1dc3f: 0x6cd19e20,
+-	// Block 0x771, offset 0x1dc40
+-	0x1dc40: 0x6c7a2c20, 0x1dc41: 0x6d22dc20, 0x1dc42: 0x6c40e020, 0x1dc43: 0x6c50ce20,
+-	0x1dc44: 0x6cbc9a20, 0x1dc45: 0x6d359420, 0x1dc46: 0x6c5fe620, 0x1dc47: 0x6c585c20,
+-	0x1dc48: 0x6c545e20, 0x1dc49: 0x6d03c820, 0x1dc4a: 0x6c682a20, 0x1dc4b: 0x6cf76a20,
+-	0x1dc4c: 0x6c4a7620, 0x1dc4d: 0x6caab420, 0x1dc4e: 0x6c80a220, 0x1dc4f: 0x6c63a620,
+-	0x1dc50: 0x6c7b1420, 0x1dc51: 0x6d333e20, 0x1dc52: 0x6c813820, 0x1dc53: 0x6d281e20,
+-	0x1dc54: 0x6d0c6c20, 0x1dc55: 0x6c19c220, 0x1dc56: 0x6c30fc20, 0x1dc57: 0x6cf5ae20,
+-	0x1dc58: 0x6c935220, 0x1dc59: 0x6c3f4e20, 0x1dc5a: 0x6cf3aa20, 0x1dc5b: 0x6c3e2620,
+-	0x1dc5c: 0x6c433e20, 0x1dc5d: 0x6c500a20, 0x1dc5e: 0x6c80a420, 0x1dc5f: 0x6c63aa20,
+-	0x1dc60: 0x6c44f020, 0x1dc61: 0x6c759a20, 0x1dc62: 0x6d1ce220, 0x1dc63: 0x6c0eca20,
+-	0x1dc64: 0x6cf86820, 0x1dc65: 0x6c06f420, 0x1dc66: 0x6c85bc20, 0x1dc67: 0x6d279220,
+-	0x1dc68: 0x6c108c20, 0x1dc69: 0x6cff7a20, 0x1dc6a: 0x6cb4e020, 0x1dc6b: 0x6cafd420,
+-	0x1dc6c: 0x6cbe3c20, 0x1dc6d: 0x6c4c1a20, 0x1dc6e: 0x6d386e20, 0x1dc6f: 0x6cdfd820,
+-	0x1dc70: 0x6d404c20, 0x1dc71: 0x6cb27e20, 0x1dc72: 0x6c7ef020, 0x1dc73: 0x6ca5d020,
+-	0x1dc74: 0x6c186220, 0x1dc75: 0x6d1f2420, 0x1dc76: 0x6c10b420, 0x1dc77: 0x6cfd6820,
+-	0x1dc78: 0x6c27d020, 0x1dc79: 0x6c711e20, 0x1dc7a: 0x6d1dba20, 0x1dc7b: 0x6cbb7420,
+-	0x1dc7c: 0x6d13ea20, 0x1dc7d: 0x6c30a620, 0x1dc7e: 0x6d0d7220, 0x1dc7f: 0x6c99f220,
+-	// Block 0x772, offset 0x1dc80
+-	0x1dc80: 0x6cc91a20, 0x1dc81: 0x6c071820, 0x1dc82: 0x6c361e20, 0x1dc83: 0x6cd4d820,
+-	0x1dc84: 0x6c735e20, 0x1dc85: 0x6d225220, 0x1dc86: 0x6d282820, 0x1dc87: 0x6c53f420,
+-	0x1dc88: 0x6c7c6a20, 0x1dc89: 0x6cfd6e20, 0x1dc8a: 0x6cfd7020, 0x1dc8b: 0x6cd9a820,
+-	0x1dc8c: 0x6ce0f820, 0x1dc8d: 0x6ca00220, 0x1dc8e: 0x6cf63220, 0x1dc8f: 0x6cc7fe20,
+-	0x1dc90: 0x6c1f4c20, 0x1dc91: 0x6d3e4a20, 0x1dc92: 0x6d405820, 0x1dc93: 0x6d12f820,
+-	0x1dc94: 0x6cf36c20, 0x1dc95: 0x6cfd7c20, 0x1dc96: 0x6d27a820, 0x1dc97: 0x6c504220,
+-	0x1dc98: 0x6d1d9220, 0x1dc99: 0x6c08e620, 0x1dc9a: 0x6c998820, 0x1dc9b: 0x6c176420,
+-	0x1dc9c: 0x6c3d8620, 0x1dc9d: 0x6c8a6e20, 0x1dc9e: 0x6d1a7820, 0x1dc9f: 0x6d3b8020,
+-	0x1dca0: 0x6c56a820, 0x1dca1: 0x6cbb8220, 0x1dca2: 0x6d0c1820, 0x1dca3: 0x6d2ebc20,
+-	0x1dca4: 0x6c97e020, 0x1dca5: 0x6cbb8420, 0x1dca6: 0x6d065020, 0x1dca7: 0x6c2adc20,
+-	0x1dca8: 0x6c0a9c20, 0x1dca9: 0x6d0a2820, 0x1dcaa: 0x6c0a0c20, 0x1dcab: 0x6d2b8420,
+-	0x1dcac: 0x6cef2620, 0x1dcad: 0x6d335820, 0x1dcae: 0x6c99a820, 0x1dcaf: 0x6ccd9620,
+-	0x1dcb0: 0x6c8bc820, 0x1dcb1: 0x6cb33420, 0x1dcb2: 0x6c27f020, 0x1dcb3: 0x6c9b4020,
+-	0x1dcb4: 0x6d133220, 0x1dcb5: 0x6c12b820, 0x1dcb6: 0x6c7b3620, 0x1dcb7: 0x6c3c6420,
+-	0x1dcb8: 0x6c9b4220, 0x1dcb9: 0x6d406420, 0x1dcba: 0x6c7c0220, 0x1dcbb: 0x6c88d020,
+-	0x1dcbc: 0x6d29a220, 0x1dcbd: 0x6c153020, 0x1dcbe: 0x6d1eb820, 0x1dcbf: 0x6c5f6420,
+-	// Block 0x773, offset 0x1dcc0
+-	0x1dcc0: 0x6d0ed820, 0x1dcc1: 0x6c154820, 0x1dcc2: 0x6c25f820, 0x1dcc3: 0x6c8d8820,
+-	0x1dcc4: 0x6c583a20, 0x1dcc5: 0x6cf74020, 0x1dcc6: 0x6c3c7820, 0x1dcc7: 0x6d29b620,
+-	0x1dcc8: 0x6c875820, 0x1dcc9: 0x6d1fa420, 0x1dcca: 0x6c2f5a20, 0x1dccb: 0x6cc02020,
+-	0x1dccc: 0x6d3d4020, 0x1dccd: 0x6cae1820, 0x1dcce: 0x6d391e20, 0x1dccf: 0x6d15e220,
+-	0x1dcd0: 0x6c418e20, 0x1dcd1: 0x6d20fe20, 0x1dcd2: 0x6c6fba20, 0x1dcd3: 0x6d0d7420,
+-	0x1dcd4: 0x6d41ae20, 0x1dcd5: 0x6c98e020, 0x1dcd6: 0x6d323e20, 0x1dcd7: 0x6d06c820,
+-	0x1dcd8: 0x6c311820, 0x1dcd9: 0x6d315420, 0x1dcda: 0x6c3b3020, 0x1dcdb: 0x6d263e20,
+-	0x1dcdc: 0x6c40ae20, 0x1dcdd: 0x6d282a20, 0x1dcde: 0x6cdf7220, 0x1dcdf: 0x6ce46a20,
+-	0x1dce0: 0x6cb83a20, 0x1dce1: 0x6ceb2c20, 0x1dce2: 0x6c243e20, 0x1dce3: 0x6c4da820,
+-	0x1dce4: 0x6c471a20, 0x1dce5: 0x6cda5020, 0x1dce6: 0x6c37ee20, 0x1dce7: 0x6c1dc620,
+-	0x1dce8: 0x6d293e20, 0x1dce9: 0x6ca03a20, 0x1dcea: 0x6c81d620, 0x1dceb: 0x6c21ca20,
+-	0x1dcec: 0x6c1e4e20, 0x1dced: 0x6d205020, 0x1dcee: 0x6ce76020, 0x1dcef: 0x6d353c20,
+-	0x1dcf0: 0x6cfab420, 0x1dcf1: 0x6c67ec20, 0x1dcf2: 0x6c1a3020, 0x1dcf3: 0x6d1b6c20,
+-	0x1dcf4: 0x6ce8e220, 0x1dcf5: 0x6c69b220, 0x1dcf6: 0x6c9a1a20, 0x1dcf7: 0x6c7aa420,
+-	0x1dcf8: 0x6cdb8820, 0x1dcf9: 0x6c833c20, 0x1dcfa: 0x6cb44420, 0x1dcfb: 0x6d41c220,
+-	0x1dcfc: 0x6c4d4420, 0x1dcfd: 0x6d0e9c20, 0x1dcfe: 0x6ccc8c20, 0x1dcff: 0x6ca77e20,
+-	// Block 0x774, offset 0x1dd00
+-	0x1dd00: 0x6cef3420, 0x1dd01: 0x6c92c620, 0x1dd02: 0x6c803620, 0x1dd03: 0x6d0c2c20,
+-	0x1dd04: 0x6ce23820, 0x1dd05: 0x6cadc220, 0x1dd06: 0x6d2e1220, 0x1dd07: 0x6c215e20,
+-	0x1dd08: 0x6ce00a20, 0x1dd09: 0x6d41ca20, 0x1dd0a: 0x6d3ca620, 0x1dd0b: 0x6c246020,
+-	0x1dd0c: 0x6c7d8220, 0x1dd0d: 0x6ce38220, 0x1dd0e: 0x6cfba220, 0x1dd0f: 0x6c317620,
+-	0x1dd10: 0x6c55c420, 0x1dd11: 0x6d065c20, 0x1dd12: 0x6d040820, 0x1dd13: 0x6ce07c20,
+-	0x1dd14: 0x6cc09a20, 0x1dd15: 0x6c216420, 0x1dd16: 0x6d285a20, 0x1dd17: 0x6cb3a620,
+-	0x1dd18: 0x6c783620, 0x1dd19: 0x6cd9e620, 0x1dd1a: 0x6c9c7620, 0x1dd1b: 0x6cc31820,
+-	0x1dd1c: 0x6c1e3220, 0x1dd1d: 0x6c25cc20, 0x1dd1e: 0x6d285e20, 0x1dd1f: 0x6d1e7e20,
+-	0x1dd20: 0x6c022220, 0x1dd21: 0x6d2ce420, 0x1dd22: 0x6c4d4a20, 0x1dd23: 0x6ce14a20,
+-	0x1dd24: 0x6c680020, 0x1dd25: 0x6cb1a220, 0x1dd26: 0x6c191820, 0x1dd27: 0x6d244020,
+-	0x1dd28: 0x6c846620, 0x1dd29: 0x6d2a2c20, 0x1dd2a: 0x6c818620, 0x1dd2b: 0x6d142c20,
+-	0x1dd2c: 0x6c680a20, 0x1dd2d: 0x6c102820, 0x1dd2e: 0x6c69d420, 0x1dd2f: 0x6cf71e20,
+-	0x1dd30: 0x6ce03c20, 0x1dd31: 0x6c37f220, 0x1dd32: 0x6ca9dc20, 0x1dd33: 0x6d193620,
+-	0x1dd34: 0x6c854620, 0x1dd35: 0x6c72c020, 0x1dd36: 0x6d0efc20, 0x1dd37: 0x6d193820,
+-	0x1dd38: 0x6ca78020, 0x1dd39: 0x6cc7ec20, 0x1dd3a: 0x6d09cc20, 0x1dd3b: 0x6c1e0a20,
+-	0x1dd3c: 0x6d0f1220, 0x1dd3d: 0x6c8db420, 0x1dd3e: 0x6c9cc820, 0x1dd3f: 0x6c9cca20,
+-	// Block 0x775, offset 0x1dd40
+-	0x1dd40: 0x6ca78420, 0x1dd41: 0x6d036020, 0x1dd42: 0x6c69ea20, 0x1dd43: 0x6ccc9620,
+-	0x1dd44: 0x6c9cd420, 0x1dd45: 0x6d0f2420, 0x1dd46: 0x6c0b7820, 0x1dd47: 0x6c111e20,
+-	0x1dd48: 0x6cd37620, 0x1dd49: 0x6d204a20, 0x1dd4a: 0x6cd39220, 0x1dd4b: 0x6cd40220,
+-	0x1dd4c: 0x6c84fc20, 0x1dd4d: 0x6d382020, 0x1dd4e: 0x6d12aa20, 0x1dd4f: 0x6c89c020,
+-	0x1dd50: 0x6c847c20, 0x1dd51: 0x6c6c2e20, 0x1dd52: 0x6c6d7c20, 0x1dd53: 0x6cc02220,
+-	0x1dd54: 0x6d15d820, 0x1dd55: 0x6c8a6c20, 0x1dd56: 0x6c29c020, 0x1dd57: 0x6d2f6220,
+-	0x1dd58: 0x6c2f5c20, 0x1dd59: 0x6cb38220, 0x1dd5a: 0x6cc04220, 0x1dd5b: 0x6c034220,
+-	0x1dd5c: 0x6c3f5620, 0x1dd5d: 0x6d314820, 0x1dd5e: 0x6d344a20, 0x1dd5f: 0x6c034420,
+-	0x1dd60: 0x6c949820, 0x1dd61: 0x6c3f5820, 0x1dd62: 0x6ca3a020, 0x1dd63: 0x6c2e2020,
+-	0x1dd64: 0x6ccd8620, 0x1dd65: 0x6cbc2220, 0x1dd66: 0x6c79ea20, 0x1dd67: 0x6c203420,
+-	0x1dd68: 0x6d3f0e20, 0x1dd69: 0x6c390e20, 0x1dd6a: 0x6c573620, 0x1dd6b: 0x6c573820,
+-	0x1dd6c: 0x6c4eb820, 0x1dd6d: 0x6c427c20, 0x1dd6e: 0x6cb5de20, 0x1dd6f: 0x6c985c20,
+-	0x1dd70: 0x6cc64620, 0x1dd71: 0x6c2c5220, 0x1dd72: 0x6cd8be20, 0x1dd73: 0x6cf87e20,
+-	0x1dd74: 0x6d178620, 0x1dd75: 0x6c146620, 0x1dd76: 0x6cd1b620, 0x1dd77: 0x6ce91a20,
+-	0x1dd78: 0x6cf60620, 0x1dd79: 0x6caa7420, 0x1dd7a: 0x6cb8dc20, 0x1dd7b: 0x6cc0c020,
+-	0x1dd7c: 0x6c668420, 0x1dd7d: 0x6cb09a20, 0x1dd7e: 0x6d128220, 0x1dd7f: 0x6c6c4820,
+-	// Block 0x776, offset 0x1dd80
+-	0x1dd80: 0x6c03a020, 0x1dd81: 0x6c399620, 0x1dd82: 0x6c18d020, 0x1dd83: 0x6d03ee20,
+-	0x1dd84: 0x6c30ee20, 0x1dd85: 0x6d26c220, 0x1dd86: 0x6cb8e620, 0x1dd87: 0x6c3d7820,
+-	0x1dd88: 0x6caf6820, 0x1dd89: 0x6ca34820, 0x1dd8a: 0x6d02d820, 0x1dd8b: 0x6c356e20,
+-	0x1dd8c: 0x6c746020, 0x1dd8d: 0x6c33f820, 0x1dd8e: 0x6c464c20, 0x1dd8f: 0x6d1ae620,
+-	0x1dd90: 0x6cb99a20, 0x1dd91: 0x6c04ce20, 0x1dd92: 0x6cc97620, 0x1dd93: 0x6cc57220,
+-	0x1dd94: 0x6c174a20, 0x1dd95: 0x6ca99620, 0x1dd96: 0x6c3b3220, 0x1dd97: 0x6d27ec20,
+-	0x1dd98: 0x6c614620, 0x1dd99: 0x6cbd7820, 0x1dd9a: 0x6caf6a20, 0x1dd9b: 0x6c4c2020,
+-	0x1dd9c: 0x6c535a20, 0x1dd9d: 0x6d1a6c20, 0x1dd9e: 0x6c757220, 0x1dd9f: 0x6cd1ca20,
+-	0x1dda0: 0x6d17ce20, 0x1dda1: 0x6d37ba20, 0x1dda2: 0x6cf7f020, 0x1dda3: 0x6c413a20,
+-	0x1dda4: 0x6cc64820, 0x1dda5: 0x6c5d8e20, 0x1dda6: 0x6cdf7620, 0x1dda7: 0x6c778820,
+-	0x1dda8: 0x6d264020, 0x1dda9: 0x6c934a20, 0x1ddaa: 0x6c365020, 0x1ddab: 0x6cf21c20,
+-	0x1ddac: 0x6c345420, 0x1ddad: 0x6d3e7220, 0x1ddae: 0x6ca64020, 0x1ddaf: 0x6ce8d020,
+-	0x1ddb0: 0x6cd3aa20, 0x1ddb1: 0x6c9f6820, 0x1ddb2: 0x6c472220, 0x1ddb3: 0x6c780e20,
+-	0x1ddb4: 0x6c8d2420, 0x1ddb5: 0x6c0dec20, 0x1ddb6: 0x6cd8d020, 0x1ddb7: 0x6c47a420,
+-	0x1ddb8: 0x6c0f1c20, 0x1ddb9: 0x6caf7820, 0x1ddba: 0x6d238420, 0x1ddbb: 0x6cd8d220,
+-	0x1ddbc: 0x6d424820, 0x1ddbd: 0x6c101820, 0x1ddbe: 0x6d1f5020, 0x1ddbf: 0x6ce4b020,
+-	// Block 0x777, offset 0x1ddc0
+-	0x1ddc0: 0x6c642220, 0x1ddc1: 0x6d317620, 0x1ddc2: 0x6cd2d420, 0x1ddc3: 0x6cd3ac20,
+-	0x1ddc4: 0x6d347a20, 0x1ddc5: 0x6c725220, 0x1ddc6: 0x6c14d220, 0x1ddc7: 0x6cd1da20,
+-	0x1ddc8: 0x6cd1dc20, 0x1ddc9: 0x6d089e20, 0x1ddca: 0x6d2f6820, 0x1ddcb: 0x6c065420,
+-	0x1ddcc: 0x6c514e20, 0x1ddcd: 0x6c09e620, 0x1ddce: 0x6cd10e20, 0x1ddcf: 0x6c1e9620,
+-	0x1ddd0: 0x6cd27820, 0x1ddd1: 0x6c0f1e20, 0x1ddd2: 0x6d3b0e20, 0x1ddd3: 0x6c1c3820,
+-	0x1ddd4: 0x6d289220, 0x1ddd5: 0x6cb31420, 0x1ddd6: 0x6ce76220, 0x1ddd7: 0x6cb9aa20,
+-	0x1ddd8: 0x6c3eb020, 0x1ddd9: 0x6d2d3020, 0x1ddda: 0x6c8f0c20, 0x1dddb: 0x6cb8f820,
+-	0x1dddc: 0x6c3eb220, 0x1dddd: 0x6c864020, 0x1ddde: 0x6d26ca20, 0x1dddf: 0x6caf7a20,
+-	0x1dde0: 0x6d0f5e20, 0x1dde1: 0x6c04fe20, 0x1dde2: 0x6c0e8020, 0x1dde3: 0x6c6b0020,
+-	0x1dde4: 0x6c465420, 0x1dde5: 0x6cd5ec20, 0x1dde6: 0x6d32da20, 0x1dde7: 0x6ca24c20,
+-	0x1dde8: 0x6cf7f220, 0x1dde9: 0x6cf7f420, 0x1ddea: 0x6c2c7620, 0x1ddeb: 0x6c637420,
+-	0x1ddec: 0x6ca29e20, 0x1dded: 0x6ce06420, 0x1ddee: 0x6c588820, 0x1ddef: 0x6d15f220,
+-	0x1ddf0: 0x6cd7fa20, 0x1ddf1: 0x6c7bfe20, 0x1ddf2: 0x6c761e20, 0x1ddf3: 0x6c06ce20,
+-	0x1ddf4: 0x6c66a020, 0x1ddf5: 0x6ce77020, 0x1ddf6: 0x6d03f420, 0x1ddf7: 0x6c537820,
+-	0x1ddf8: 0x6c691c20, 0x1ddf9: 0x6c1bbc20, 0x1ddfa: 0x6c37d820, 0x1ddfb: 0x6c961a20,
+-	0x1ddfc: 0x6c0dee20, 0x1ddfd: 0x6cd3be20, 0x1ddfe: 0x6ca1dc20, 0x1ddff: 0x6c637820,
+-	// Block 0x778, offset 0x1de00
+-	0x1de00: 0x6d1a8620, 0x1de01: 0x6c757c20, 0x1de02: 0x6d389e20, 0x1de03: 0x6c1d5620,
+-	0x1de04: 0x6cfdf620, 0x1de05: 0x6ce77220, 0x1de06: 0x6ca14220, 0x1de07: 0x6c833e20,
+-	0x1de08: 0x6c5f0e20, 0x1de09: 0x6d23b020, 0x1de0a: 0x6d071e20, 0x1de0b: 0x6cc57820,
+-	0x1de0c: 0x6d421a20, 0x1de0d: 0x6d36a220, 0x1de0e: 0x6cbf4c20, 0x1de0f: 0x6ccd8e20,
+-	0x1de10: 0x6c1c5020, 0x1de11: 0x6cfc2220, 0x1de12: 0x6d03f620, 0x1de13: 0x6cc30e20,
+-	0x1de14: 0x6caf8020, 0x1de15: 0x6ce5fe20, 0x1de16: 0x6d39c020, 0x1de17: 0x6cfe4820,
+-	0x1de18: 0x6ca01220, 0x1de19: 0x6c7ada20, 0x1de1a: 0x6d112c20, 0x1de1b: 0x6cfac220,
+-	0x1de1c: 0x6cfb7620, 0x1de1d: 0x6d04ea20, 0x1de1e: 0x6c757e20, 0x1de1f: 0x6c13aa20,
+-	0x1de20: 0x6c81b620, 0x1de21: 0x6c607820, 0x1de22: 0x6cb06620, 0x1de23: 0x6cc7ba20,
+-	0x1de24: 0x6c9cfe20, 0x1de25: 0x6d140820, 0x1de26: 0x6d19fa20, 0x1de27: 0x6c49f220,
+-	0x1de28: 0x6c019020, 0x1de29: 0x6c2fd420, 0x1de2a: 0x6d1fe020, 0x1de2b: 0x6ccb3820,
+-	0x1de2c: 0x6c77c620, 0x1de2d: 0x6cb9b620, 0x1de2e: 0x6c944220, 0x1de2f: 0x6cd90020,
+-	0x1de30: 0x6c003020, 0x1de31: 0x6c2e3220, 0x1de32: 0x6c4efe20, 0x1de33: 0x6cc8de20,
+-	0x1de34: 0x6cd3cc20, 0x1de35: 0x6c795020, 0x1de36: 0x6cc09220, 0x1de37: 0x6cff0c20,
+-	0x1de38: 0x6d308620, 0x1de39: 0x6d054e20, 0x1de3a: 0x6d2a0c20, 0x1de3b: 0x6ce37020,
+-	0x1de3c: 0x6c263820, 0x1de3d: 0x6c487020, 0x1de3e: 0x6c53d220, 0x1de3f: 0x6d37c820,
+-	// Block 0x779, offset 0x1de40
+-	0x1de40: 0x6ce7de20, 0x1de41: 0x6c93ac20, 0x1de42: 0x6c9a2220, 0x1de43: 0x6c80e220,
+-	0x1de44: 0x6ced4a20, 0x1de45: 0x6d02e620, 0x1de46: 0x6d27c420, 0x1de47: 0x6c075420,
+-	0x1de48: 0x6cf51e20, 0x1de49: 0x6cdb0c20, 0x1de4a: 0x6d23dc20, 0x1de4b: 0x6c151420,
+-	0x1de4c: 0x6c2fb620, 0x1de4d: 0x6c0f4e20, 0x1de4e: 0x6c4f0020, 0x1de4f: 0x6c63de20,
+-	0x1de50: 0x6c538420, 0x1de51: 0x6c249220, 0x1de52: 0x6c3c6620, 0x1de53: 0x6c14d620,
+-	0x1de54: 0x6ced4c20, 0x1de55: 0x6d36d020, 0x1de56: 0x6cd82620, 0x1de57: 0x6d07ca20,
+-	0x1de58: 0x6c575620, 0x1de59: 0x6d228220, 0x1de5a: 0x6ce59e20, 0x1de5b: 0x6c45fa20,
+-	0x1de5c: 0x6d3d9420, 0x1de5d: 0x6c94bc20, 0x1de5e: 0x6d03fc20, 0x1de5f: 0x6cbde620,
+-	0x1de60: 0x6cd0c420, 0x1de61: 0x6c4e2e20, 0x1de62: 0x6c94be20, 0x1de63: 0x6d128a20,
+-	0x1de64: 0x6c1eac20, 0x1de65: 0x6d2bae20, 0x1de66: 0x6c70c420, 0x1de67: 0x6cfd0220,
+-	0x1de68: 0x6ce60020, 0x1de69: 0x6c987020, 0x1de6a: 0x6cb4b420, 0x1de6b: 0x6c843620,
+-	0x1de6c: 0x6cacc020, 0x1de6d: 0x6cc8e020, 0x1de6e: 0x6c1a3220, 0x1de6f: 0x6c435820,
+-	0x1de70: 0x6c852820, 0x1de71: 0x6ce28220, 0x1de72: 0x6c0e4420, 0x1de73: 0x6d3b2420,
+-	0x1de74: 0x6d327e20, 0x1de75: 0x6ce87a20, 0x1de76: 0x6c8f1820, 0x1de77: 0x6d41d420,
+-	0x1de78: 0x6c729a20, 0x1de79: 0x6c16fa20, 0x1de7a: 0x6d25f020, 0x1de7b: 0x6c66d820,
+-	0x1de7c: 0x6c429220, 0x1de7d: 0x6c2e4020, 0x1de7e: 0x6ce24020, 0x1de7f: 0x6c16c620,
+-	// Block 0x77a, offset 0x1de80
+-	0x1de80: 0x6c951020, 0x1de81: 0x6c4cd020, 0x1de82: 0x6c8d5c20, 0x1de83: 0x6c06ba20,
+-	0x1de84: 0x6c92de20, 0x1de85: 0x6c845020, 0x1de86: 0x6cbade20, 0x1de87: 0x6cb3e220,
+-	0x1de88: 0x6c732e20, 0x1de89: 0x6c9f7a20, 0x1de8a: 0x6d41d620, 0x1de8b: 0x6caeca20,
+-	0x1de8c: 0x6c01d020, 0x1de8d: 0x6caf9020, 0x1de8e: 0x6cfd1420, 0x1de8f: 0x6d0afa20,
+-	0x1de90: 0x6d3c6820, 0x1de91: 0x6c834620, 0x1de92: 0x6c783220, 0x1de93: 0x6c798a20,
+-	0x1de94: 0x6cdea820, 0x1de95: 0x6c7d8420, 0x1de96: 0x6c31bc20, 0x1de97: 0x6ca59020,
+-	0x1de98: 0x6c20e220, 0x1de99: 0x6d3e9820, 0x1de9a: 0x6d32ec20, 0x1de9b: 0x6c078c20,
+-	0x1de9c: 0x6ca87620, 0x1de9d: 0x6d403620, 0x1de9e: 0x6c216620, 0x1de9f: 0x6ce01420,
+-	0x1dea0: 0x6c2fba20, 0x1dea1: 0x6cb65420, 0x1dea2: 0x6cb9cc20, 0x1dea3: 0x6d3cac20,
+-	0x1dea4: 0x6c5f4820, 0x1dea5: 0x6d23fa20, 0x1dea6: 0x6c6cb620, 0x1dea7: 0x6c496620,
+-	0x1dea8: 0x6c990820, 0x1dea9: 0x6c167c20, 0x1deaa: 0x6ce51c20, 0x1deab: 0x6cf6de20,
+-	0x1deac: 0x6c891e20, 0x1dead: 0x6ce24220, 0x1deae: 0x6c482820, 0x1deaf: 0x6c263a20,
+-	0x1deb0: 0x6cd61420, 0x1deb1: 0x6d319c20, 0x1deb2: 0x6c92e020, 0x1deb3: 0x6c9be820,
+-	0x1deb4: 0x6c92e220, 0x1deb5: 0x6c571820, 0x1deb6: 0x6c0c8020, 0x1deb7: 0x6c40cc20,
+-	0x1deb8: 0x6c7f2c20, 0x1deb9: 0x6c790e20, 0x1deba: 0x6c39ec20, 0x1debb: 0x6cf55820,
+-	0x1debc: 0x6ca3d820, 0x1debd: 0x6ced9c20, 0x1debe: 0x6d299c20, 0x1debf: 0x6c570020,
+-	// Block 0x77b, offset 0x1dec0
+-	0x1dec0: 0x6c2a8620, 0x1dec1: 0x6cfada20, 0x1dec2: 0x6cb10220, 0x1dec3: 0x6c5d6020,
+-	0x1dec4: 0x6c89cc20, 0x1dec5: 0x6c384820, 0x1dec6: 0x6c9ad820, 0x1dec7: 0x6c767220,
+-	0x1dec8: 0x6d1bf220, 0x1dec9: 0x6c2b4a20, 0x1deca: 0x6c892220, 0x1decb: 0x6c4c4020,
+-	0x1decc: 0x6cfc3620, 0x1decd: 0x6c328220, 0x1dece: 0x6ce8fc20, 0x1decf: 0x6cef4420,
+-	0x1ded0: 0x6d3fca20, 0x1ded1: 0x6c406a20, 0x1ded2: 0x6cc76620, 0x1ded3: 0x6c60d220,
+-	0x1ded4: 0x6c36ba20, 0x1ded5: 0x6c758620, 0x1ded6: 0x6c191420, 0x1ded7: 0x6ce38c20,
+-	0x1ded8: 0x6d2c5820, 0x1ded9: 0x6c56d420, 0x1deda: 0x6d0fe020, 0x1dedb: 0x6c32de20,
+-	0x1dedc: 0x6cfa0420, 0x1dedd: 0x6d21c220, 0x1dede: 0x6c795a20, 0x1dedf: 0x6d03aa20,
+-	0x1dee0: 0x6c5a1020, 0x1dee1: 0x6cf03220, 0x1dee2: 0x6c406c20, 0x1dee3: 0x6d2f7620,
+-	0x1dee4: 0x6c13b620, 0x1dee5: 0x6cbcee20, 0x1dee6: 0x6cd20620, 0x1dee7: 0x6c52d620,
+-	0x1dee8: 0x6c7ca820, 0x1dee9: 0x6ce51e20, 0x1deea: 0x6ca1ee20, 0x1deeb: 0x6cbbbc20,
+-	0x1deec: 0x6cbbbe20, 0x1deed: 0x6c543820, 0x1deee: 0x6ce7e020, 0x1deef: 0x6c236c20,
+-	0x1def0: 0x6c58ae20, 0x1def1: 0x6d136620, 0x1def2: 0x6c9f7e20, 0x1def3: 0x6c66e620,
+-	0x1def4: 0x6c32a420, 0x1def5: 0x6c66da20, 0x1def6: 0x6cd94220, 0x1def7: 0x6c7caa20,
+-	0x1def8: 0x6c55d220, 0x1def9: 0x6d07d820, 0x1defa: 0x6c34b620, 0x1defb: 0x6c6b4a20,
+-	0x1defc: 0x6d31a020, 0x1defd: 0x6c0b0e20, 0x1defe: 0x6d37d020, 0x1deff: 0x6d3ea220,
+-	// Block 0x77c, offset 0x1df00
+-	0x1df00: 0x6d04fe20, 0x1df01: 0x6d129020, 0x1df02: 0x6c9a6e20, 0x1df03: 0x6cac3420,
+-	0x1df04: 0x6c003620, 0x1df05: 0x6c6c0c20, 0x1df06: 0x6cba9420, 0x1df07: 0x6c9a3220,
+-	0x1df08: 0x6cdda220, 0x1df09: 0x6c26ca20, 0x1df0a: 0x6c059620, 0x1df0b: 0x6cfa0a20,
+-	0x1df0c: 0x6c887a20, 0x1df0d: 0x6cddaa20, 0x1df0e: 0x6c769a20, 0x1df0f: 0x6c8ec020,
+-	0x1df10: 0x6d116420, 0x1df11: 0x6d137420, 0x1df12: 0x6caa2e20, 0x1df13: 0x6cf23e20,
+-	0x1df14: 0x6cc6d420, 0x1df15: 0x6ce15420, 0x1df16: 0x6cddac20, 0x1df17: 0x6cbaf220,
+-	0x1df18: 0x6c86e020, 0x1df19: 0x6cd7a620, 0x1df1a: 0x6c20e420, 0x1df1b: 0x6c0f9620,
+-	0x1df1c: 0x6cac8620, 0x1df1d: 0x6c266e20, 0x1df1e: 0x6c089620, 0x1df1f: 0x6cca9020,
+-	0x1df20: 0x6c429420, 0x1df21: 0x6d3ea620, 0x1df22: 0x6cf38c20, 0x1df23: 0x6d1cb420,
+-	0x1df24: 0x6c5a7e20, 0x1df25: 0x6ce5aa20, 0x1df26: 0x6c8ec220, 0x1df27: 0x6c767420,
+-	0x1df28: 0x6cdd0220, 0x1df29: 0x6ccc2220, 0x1df2a: 0x6cd9f020, 0x1df2b: 0x6ceda820,
+-	0x1df2c: 0x6c507620, 0x1df2d: 0x6d327020, 0x1df2e: 0x6d327220, 0x1df2f: 0x6c80e820,
+-	0x1df30: 0x6d18fc20, 0x1df31: 0x6d25c420, 0x1df32: 0x6ce18620, 0x1df33: 0x6ca88a20,
+-	0x1df34: 0x6cf7b020, 0x1df35: 0x6c638c20, 0x1df36: 0x6c43ba20, 0x1df37: 0x6c96a820,
+-	0x1df38: 0x6c730620, 0x1df39: 0x6cd9a220, 0x1df3a: 0x6d413420, 0x1df3b: 0x6cddae20,
+-	0x1df3c: 0x6cfa5620, 0x1df3d: 0x6c3d0220, 0x1df3e: 0x6cf21e20, 0x1df3f: 0x6ca2ec20,
+-	// Block 0x77d, offset 0x1df40
+-	0x1df40: 0x6c91fa20, 0x1df41: 0x6cddb020, 0x1df42: 0x6cab6020, 0x1df43: 0x6d40f620,
+-	0x1df44: 0x6ce96e20, 0x1df45: 0x6d050820, 0x1df46: 0x6c49b220, 0x1df47: 0x6d08cc20,
+-	0x1df48: 0x6c892620, 0x1df49: 0x6cd48620, 0x1df4a: 0x6c02f820, 0x1df4b: 0x6c97d420,
+-	0x1df4c: 0x6ca18020, 0x1df4d: 0x6c956620, 0x1df4e: 0x6c0a9e20, 0x1df4f: 0x6cf0fe20,
+-	0x1df50: 0x6c8ed020, 0x1df51: 0x6c2bb220, 0x1df52: 0x6cca3620, 0x1df53: 0x6d401220,
+-	0x1df54: 0x6d158a20, 0x1df55: 0x6c932020, 0x1df56: 0x6c028220, 0x1df57: 0x6c796220,
+-	0x1df58: 0x6cbafa20, 0x1df59: 0x6c24f820, 0x1df5a: 0x6cb54e20, 0x1df5b: 0x6c16d220,
+-	0x1df5c: 0x6ce0dc20, 0x1df5d: 0x6c981020, 0x1df5e: 0x6d1dd020, 0x1df5f: 0x6c160620,
+-	0x1df60: 0x6c3c7220, 0x1df61: 0x6c6ebe20, 0x1df62: 0x6c0c4820, 0x1df63: 0x6cd62a20,
+-	0x1df64: 0x6c912420, 0x1df65: 0x6d055820, 0x1df66: 0x6c237420, 0x1df67: 0x6c8fce20,
+-	0x1df68: 0x6d29b020, 0x1df69: 0x6c670820, 0x1df6a: 0x6c12a220, 0x1df6b: 0x6c849220,
+-	0x1df6c: 0x6cfa5c20, 0x1df6d: 0x6cf72020, 0x1df6e: 0x6c776020, 0x1df6f: 0x6cd6f820,
+-	0x1df70: 0x6c086220, 0x1df71: 0x6d2f4a20, 0x1df72: 0x6cba9620, 0x1df73: 0x6c19a620,
+-	0x1df74: 0x6c933420, 0x1df75: 0x6c576820, 0x1df76: 0x6c60f220, 0x1df77: 0x6cb47220,
+-	0x1df78: 0x6c5c8c20, 0x1df79: 0x6cbb5020, 0x1df7a: 0x6cb32420, 0x1df7b: 0x6c8c0220,
+-	0x1df7c: 0x6ccb9020, 0x1df7d: 0x6d055a20, 0x1df7e: 0x6cca3c20, 0x1df7f: 0x6c19a820,
+-	// Block 0x77e, offset 0x1df80
+-	0x1df80: 0x6c7d3a20, 0x1df81: 0x6cd84820, 0x1df82: 0x6c8f5420, 0x1df83: 0x6ca4d220,
+-	0x1df84: 0x6c5a2220, 0x1df85: 0x6cb1e020, 0x1df86: 0x6cdcb020, 0x1df87: 0x6c38ea20,
+-	0x1df88: 0x6cbc0e20, 0x1df89: 0x6cc2aa20, 0x1df8a: 0x6d0fee20, 0x1df8b: 0x6ce0de20,
+-	0x1df8c: 0x6cfe6620, 0x1df8d: 0x6c750420, 0x1df8e: 0x6c68a420, 0x1df8f: 0x6d41fc20,
+-	0x1df90: 0x6c8a4e20, 0x1df91: 0x6cbd0420, 0x1df92: 0x6c819020, 0x1df93: 0x6c338020,
+-	0x1df94: 0x6d030620, 0x1df95: 0x6d295820, 0x1df96: 0x6c5f8e20, 0x1df97: 0x6c661e20,
+-	0x1df98: 0x6d37da20, 0x1df99: 0x6c2af620, 0x1df9a: 0x6d0b0620, 0x1df9b: 0x6d1d5c20,
+-	0x1df9c: 0x6c331e20, 0x1df9d: 0x6c750620, 0x1df9e: 0x6caa3020, 0x1df9f: 0x6d295a20,
+-	0x1dfa0: 0x6cb4a420, 0x1dfa1: 0x6ce60620, 0x1dfa2: 0x6c38ec20, 0x1dfa3: 0x6d2f4c20,
+-	0x1dfa4: 0x6c2f8a20, 0x1dfa5: 0x6ccdda20, 0x1dfa6: 0x6c764220, 0x1dfa7: 0x6c653820,
+-	0x1dfa8: 0x6c3af020, 0x1dfa9: 0x6cdcba20, 0x1dfaa: 0x6c920020, 0x1dfab: 0x6c730c20,
+-	0x1dfac: 0x6c5c9420, 0x1dfad: 0x6d246a20, 0x1dfae: 0x6c889c20, 0x1dfaf: 0x6d3dcc20,
+-	0x1dfb0: 0x6cbbc820, 0x1dfb1: 0x6c672220, 0x1dfb2: 0x6d3dde20, 0x1dfb3: 0x6c828c20,
+-	0x1dfb4: 0x6c0ac820, 0x1dfb5: 0x6ce60820, 0x1dfb6: 0x6c58c220, 0x1dfb7: 0x6d138c20,
+-	0x1dfb8: 0x6c346c20, 0x1dfb9: 0x6c4cd620, 0x1dfba: 0x6c29ac20, 0x1dfbb: 0x6c72ce20,
+-	0x1dfbc: 0x6c3bac20, 0x1dfbd: 0x6c26d620, 0x1dfbe: 0x6c077220, 0x1dfbf: 0x6d194a20,
+-	// Block 0x77f, offset 0x1dfc0
+-	0x1dfc0: 0x6c010820, 0x1dfc1: 0x6d3fe220, 0x1dfc2: 0x6d0aba20, 0x1dfc3: 0x6c2e4e20,
+-	0x1dfc4: 0x6d3b4e20, 0x1dfc5: 0x6c528620, 0x1dfc6: 0x6d3cc220, 0x1dfc7: 0x6c5fa220,
+-	0x1dfc8: 0x6ca8be20, 0x1dfc9: 0x6c51a620, 0x1dfca: 0x6c5e4c20, 0x1dfcb: 0x6cbe6020,
+-	0x1dfcc: 0x6c0d7020, 0x1dfcd: 0x6d1c3e20, 0x1dfce: 0x6c7d4020, 0x1dfcf: 0x6ca93c20,
+-	0x1dfd0: 0x6d060e20, 0x1dfd1: 0x6c672620, 0x1dfd2: 0x6c672820, 0x1dfd3: 0x6cba9a20,
+-	0x1dfd4: 0x6c142620, 0x1dfd5: 0x6d377220, 0x1dfd6: 0x6c9f1620, 0x1dfd7: 0x6c84ce20,
+-	0x1dfd8: 0x6c829820, 0x1dfd9: 0x6c5fa620, 0x1dfda: 0x6d416620, 0x1dfdb: 0x6c7c2220,
+-	0x1dfdc: 0x6cce4420, 0x1dfdd: 0x6caefc20, 0x1dfde: 0x6c7ece20, 0x1dfdf: 0x6c320020,
+-	0x1dfe0: 0x6cd7b020, 0x1dfe1: 0x6c21ec20, 0x1dfe2: 0x6c942820, 0x1dfe3: 0x6c0c6220,
+-	0x1dfe4: 0x6c068420, 0x1dfe5: 0x6c920420, 0x1dfe6: 0x6cfd5c20, 0x1dfe7: 0x6c7b7e20,
+-	0x1dfe8: 0x6c901020, 0x1dfe9: 0x6c36fa20, 0x1dfea: 0x6c91a220, 0x1dfeb: 0x6d02f820,
+-	0x1dfec: 0x6c672c20, 0x1dfed: 0x6c809420, 0x1dfee: 0x6c0fd620, 0x1dfef: 0x6c655620,
+-	0x1dff0: 0x6d125820, 0x1dff1: 0x6c157e20, 0x1dff2: 0x6cfda620, 0x1dff3: 0x6c673020,
+-	0x1dff4: 0x6cf76220, 0x1dff5: 0x6c49c820, 0x1dff6: 0x6c125620, 0x1dff7: 0x6ca8d220,
+-	0x1dff8: 0x6c831620, 0x1dff9: 0x6c249c20, 0x1dffa: 0x6cc23020, 0x1dffb: 0x6cacc820,
+-	0x1dffc: 0x6c959420, 0x1dffd: 0x6d414420, 0x1dffe: 0x6c947a20, 0x1dfff: 0x6d2a3820,
+-	// Block 0x780, offset 0x1e000
+-	0x1e000: 0x6ca8d820, 0x1e001: 0x6c753e20, 0x1e002: 0x6ce19820, 0x1e003: 0x6cd58e20,
+-	0x1e004: 0x6c801c20, 0x1e005: 0x6c6c2220, 0x1e006: 0x6c40c420, 0x1e007: 0x6d15b420,
+-	0x1e008: 0x6d312020, 0x1e009: 0x6c2f5220, 0x1e00a: 0x6d2f5220, 0x1e00b: 0x6cb2f020,
+-	0x1e00c: 0x6c8a6620, 0x1e00d: 0x6ce91820, 0x1e00e: 0x6cb8ba20, 0x1e00f: 0x6c203220,
+-	0x1e010: 0x6cccca20, 0x1e011: 0x6c5fe820, 0x1e012: 0x6c388e20, 0x1e013: 0x6c2e0a20,
+-	0x1e014: 0x6c9ac420, 0x1e015: 0x6caa7020, 0x1e016: 0x6d0f8c20, 0x1e017: 0x6c146420,
+-	0x1e018: 0x6d03d620, 0x1e019: 0x6c413020, 0x1e01a: 0x6c107a20, 0x1e01b: 0x6cdf6620,
+-	0x1e01c: 0x6c721c20, 0x1e01d: 0x6c33e620, 0x1e01e: 0x6c173e20, 0x1e01f: 0x6d37ac20,
+-	0x1e020: 0x6ca32220, 0x1e021: 0x6c06f620, 0x1e022: 0x6c426a20, 0x1e023: 0x6c04c420,
+-	0x1e024: 0x6cb97a20, 0x1e025: 0x6d11fa20, 0x1e026: 0x6cbd2220, 0x1e027: 0x6c756620,
+-	0x1e028: 0x6cf35e20, 0x1e029: 0x6c463c20, 0x1e02a: 0x6c778420, 0x1e02b: 0x6c398e20,
+-	0x1e02c: 0x6c5d8c20, 0x1e02d: 0x6ce80a20, 0x1e02e: 0x6ca98e20, 0x1e02f: 0x6c039c20,
+-	0x1e030: 0x6d22fa20, 0x1e031: 0x6cb98420, 0x1e032: 0x6d32aa20, 0x1e033: 0x6cb98620,
+-	0x1e034: 0x6c477820, 0x1e035: 0x6c0e6820, 0x1e036: 0x6c353c20, 0x1e037: 0x6cb35220,
+-	0x1e038: 0x6c108e20, 0x1e039: 0x6c0ee220, 0x1e03a: 0x6d26a020, 0x1e03b: 0x6d413820,
+-	0x1e03c: 0x6ca28020, 0x1e03d: 0x6ce05a20, 0x1e03e: 0x6c641020, 0x1e03f: 0x6c2d4a20,
+-	// Block 0x781, offset 0x1e040
+-	0x1e040: 0x6d1f2620, 0x1e041: 0x6ce5f820, 0x1e042: 0x6c0ee420, 0x1e043: 0x6c8cd620,
+-	0x1e044: 0x6cd77a20, 0x1e045: 0x6cb8d020, 0x1e046: 0x6c993620, 0x1e047: 0x6c064420,
+-	0x1e048: 0x6cd36620, 0x1e049: 0x6d088420, 0x1e04a: 0x6cdde820, 0x1e04b: 0x6c097220,
+-	0x1e04c: 0x6ca5d220, 0x1e04d: 0x6caf5e20, 0x1e04e: 0x6c344220, 0x1e04f: 0x6d03e420,
+-	0x1e050: 0x6c77bc20, 0x1e051: 0x6c81b020, 0x1e052: 0x6c379420, 0x1e053: 0x6c985e20,
+-	0x1e054: 0x6d0ba820, 0x1e055: 0x6d1fc620, 0x1e056: 0x6c19f620, 0x1e057: 0x6c63bc20,
+-	0x1e058: 0x6d127e20, 0x1e059: 0x6ca4a820, 0x1e05a: 0x6d361020, 0x1e05b: 0x6c29aa20,
+-	0x1e05c: 0x6ce74620, 0x1e05d: 0x6c939820, 0x1e05e: 0x6c2e2220, 0x1e05f: 0x6d19d220,
+-	0x1e060: 0x6c765020, 0x1e061: 0x6d2c2e20, 0x1e062: 0x6d39a220, 0x1e063: 0x6cf7e420,
+-	0x1e064: 0x6c2fa220, 0x1e065: 0x6c2fd220, 0x1e066: 0x6cfaa420, 0x1e067: 0x6c573a20,
+-	0x1e068: 0x6cc2e820, 0x1e069: 0x6ccbf020, 0x1e06a: 0x6c4cfa20, 0x1e06b: 0x6c2e2420,
+-	0x1e06c: 0x6c448620, 0x1e06d: 0x6c9ffc20, 0x1e06e: 0x6d32be20, 0x1e06f: 0x6ccb2620,
+-	0x1e070: 0x6c68ec20, 0x1e071: 0x6d13ec20, 0x1e072: 0x6c15b220, 0x1e073: 0x6c1d4e20,
+-	0x1e074: 0x6ce0be20, 0x1e075: 0x6c018220, 0x1e076: 0x6d1a6220, 0x1e077: 0x6cc7a820,
+-	0x1e078: 0x6d3b0620, 0x1e079: 0x6c815c20, 0x1e07a: 0x6cb4ac20, 0x1e07b: 0x6cf3cc20,
+-	0x1e07c: 0x6c7f1020, 0x1e07d: 0x6ce27c20, 0x1e07e: 0x6c890020, 0x1e07f: 0x6c794420,
+-	// Block 0x782, offset 0x1e080
+-	0x1e080: 0x6cfed020, 0x1e081: 0x6cdd6820, 0x1e082: 0x6c851a20, 0x1e083: 0x6d2bac20,
+-	0x1e084: 0x6c1e8620, 0x1e085: 0x6c4c2220, 0x1e086: 0x6c434a20, 0x1e087: 0x6c357020,
+-	0x1e088: 0x6d053e20, 0x1e089: 0x6c262e20, 0x1e08a: 0x6c94aa20, 0x1e08b: 0x6c3c5220,
+-	0x1e08c: 0x6d02da20, 0x1e08d: 0x6c8f0a20, 0x1e08e: 0x6c763220, 0x1e08f: 0x6c65a220,
+-	0x1e090: 0x6cc8d020, 0x1e091: 0x6ce2f220, 0x1e092: 0x6c80ce20, 0x1e093: 0x6cbdda20,
+-	0x1e094: 0x6c70a420, 0x1e095: 0x6c000820, 0x1e096: 0x6cbac620, 0x1e097: 0x6d30da20,
+-	0x1e098: 0x6cab0020, 0x1e099: 0x6c263220, 0x1e09a: 0x6c98ee20, 0x1e09b: 0x6c078a20,
+-	0x1e09c: 0x6cb60620, 0x1e09d: 0x6c2a7820, 0x1e09e: 0x6c78be20, 0x1e09f: 0x6c7d7420,
+-	0x1e0a0: 0x6c167620, 0x1e0a1: 0x6cf65e20, 0x1e0a2: 0x6c482020, 0x1e0a3: 0x6c954c20,
+-	0x1e0a4: 0x6c20da20, 0x1e0a5: 0x6d3c6420, 0x1e0a6: 0x6c6c9a20, 0x1e0a7: 0x6d367420,
+-	0x1e0a8: 0x6cfab620, 0x1e0a9: 0x6c732220, 0x1e0aa: 0x6c5d5820, 0x1e0ab: 0x6caddc20,
+-	0x1e0ac: 0x6cdfee20, 0x1e0ad: 0x6c2fae20, 0x1e0ae: 0x6c66a220, 0x1e0af: 0x6c725c20,
+-	0x1e0b0: 0x6c9bdc20, 0x1e0b1: 0x6d3e6620, 0x1e0b2: 0x6cbcdc20, 0x1e0b3: 0x6d1bc820,
+-	0x1e0b4: 0x6c766a20, 0x1e0b5: 0x6cbad420, 0x1e0b6: 0x6cd80a20, 0x1e0b7: 0x6c367820,
+-	0x1e0b8: 0x6c13ac20, 0x1e0b9: 0x6cbb9420, 0x1e0ba: 0x6d37c420, 0x1e0bb: 0x6c32d620,
+-	0x1e0bc: 0x6cd9d220, 0x1e0bd: 0x6c59e820, 0x1e0be: 0x6c588c20, 0x1e0bf: 0x6c003220,
+-	// Block 0x783, offset 0x1e0c0
+-	0x1e0c0: 0x6c327020, 0x1e0c1: 0x6c9a6420, 0x1e0c2: 0x6c911420, 0x1e0c3: 0x6d3e7420,
+-	0x1e0c4: 0x6c3ac020, 0x1e0c5: 0x6c9a1c20, 0x1e0c6: 0x6ca15820, 0x1e0c7: 0x6d325c20,
+-	0x1e0c8: 0x6c0f5020, 0x1e0c9: 0x6c442a20, 0x1e0ca: 0x6ca86620, 0x1e0cb: 0x6ce18220,
+-	0x1e0cc: 0x6c730220, 0x1e0cd: 0x6ca86820, 0x1e0ce: 0x6ca2e820, 0x1e0cf: 0x6c8e8e20,
+-	0x1e0d0: 0x6c431e20, 0x1e0d1: 0x6c058a20, 0x1e0d2: 0x6d186c20, 0x1e0d3: 0x6c638020,
+-	0x1e0d4: 0x6c0d4e20, 0x1e0d5: 0x6cc6ac20, 0x1e0d6: 0x6c0c2420, 0x1e0d7: 0x6ce0d620,
+-	0x1e0d8: 0x6c980620, 0x1e0d9: 0x6c955420, 0x1e0da: 0x6c085420, 0x1e0db: 0x6d1dbc20,
+-	0x1e0dc: 0x6c6eae20, 0x1e0dd: 0x6c2b4620, 0x1e0de: 0x6d40dc20, 0x1e0df: 0x6d08b420,
+-	0x1e0e0: 0x6c8ea620, 0x1e0e1: 0x6c153220, 0x1e0e2: 0x6c74d020, 0x1e0e3: 0x6c8aac20,
+-	0x1e0e4: 0x6cb46420, 0x1e0e5: 0x6c91e220, 0x1e0e6: 0x6c336e20, 0x1e0e7: 0x6c7fc820,
+-	0x1e0e8: 0x6cb49e20, 0x1e0e9: 0x6c249420, 0x1e0ea: 0x6cbae820, 0x1e0eb: 0x6c2aee20,
+-	0x1e0ec: 0x6c5e1e20, 0x1e0ed: 0x6c826e20, 0x1e0ee: 0x6c58b220, 0x1e0ef: 0x6d3dc420,
+-	0x1e0f0: 0x6c887c20, 0x1e0f1: 0x6d18fe20, 0x1e0f2: 0x6c142420, 0x1e0f3: 0x6c0c4e20,
+-	0x1e0f4: 0x6c7eba20, 0x1e0f5: 0x6c157020, 0x1e0f6: 0x6cfda020, 0x1e0f7: 0x6d2f0020,
+-	0x1e0f8: 0x6c169c20, 0x1e0f9: 0x6c6fbc20, 0x1e0fa: 0x6c02a420, 0x1e0fb: 0x6c2eb820,
+-	0x1e0fc: 0x6cc13c20, 0x1e0fd: 0x6c8a8420, 0x1e0fe: 0x6c9caa20, 0x1e0ff: 0x6d2efa20,
+-	// Block 0x784, offset 0x1e100
+-	0x1e100: 0x6c9ac620, 0x1e101: 0x6c96b620, 0x1e102: 0x6cd68220, 0x1e103: 0x6ccd3c20,
+-	0x1e104: 0x6c5db420, 0x1e105: 0x6c9ac820, 0x1e106: 0x6d0c8e20, 0x1e107: 0x6c098e20,
+-	0x1e108: 0x6c4eba20, 0x1e109: 0x6c099020, 0x1e10a: 0x6ccdfa20, 0x1e10b: 0x6c763420,
+-	0x1e10c: 0x6c778a20, 0x1e10d: 0x6c07f220, 0x1e10e: 0x6c535c20, 0x1e10f: 0x6cc8fe20,
+-	0x1e110: 0x6cca5820, 0x1e111: 0x6cfb6420, 0x1e112: 0x6cfb6620, 0x1e113: 0x6c64ac20,
+-	0x1e114: 0x6c9fb420, 0x1e115: 0x6cf96820, 0x1e116: 0x6cd74020, 0x1e117: 0x6c312020,
+-	0x1e118: 0x6d2c3c20, 0x1e119: 0x6ca53420, 0x1e11a: 0x6d2d8820, 0x1e11b: 0x6cae7820,
+-	0x1e11c: 0x6cfa2220, 0x1e11d: 0x6c8d2820, 0x1e11e: 0x6c0bae20, 0x1e11f: 0x6c09e820,
+-	0x1e120: 0x6cc90020, 0x1e121: 0x6c00be20, 0x1e122: 0x6c492020, 0x1e123: 0x6c441620,
+-	0x1e124: 0x6c441820, 0x1e125: 0x6c382220, 0x1e126: 0x6c1f6620, 0x1e127: 0x6c53c820,
+-	0x1e128: 0x6c4a7e20, 0x1e129: 0x6c9fbe20, 0x1e12a: 0x6ccb1220, 0x1e12b: 0x6c7dc020,
+-	0x1e12c: 0x6c812c20, 0x1e12d: 0x6c935a20, 0x1e12e: 0x6ce68820, 0x1e12f: 0x6ccc7620,
+-	0x1e130: 0x6c714820, 0x1e131: 0x6d26e420, 0x1e132: 0x6d26e620, 0x1e133: 0x6c15e020,
+-	0x1e134: 0x6cc27620, 0x1e135: 0x6c8c6a20, 0x1e136: 0x6c167e20, 0x1e137: 0x6ccca420,
+-	0x1e138: 0x6c7dc220, 0x1e139: 0x6d0c3020, 0x1e13a: 0x6cf1b220, 0x1e13b: 0x6d0cd420,
+-	0x1e13c: 0x6c36b020, 0x1e13d: 0x6c5cda20, 0x1e13e: 0x6d23fc20, 0x1e13f: 0x6cf1b420,
+-	// Block 0x785, offset 0x1e140
+-	0x1e140: 0x6cfe6020, 0x1e141: 0x6c05be20, 0x1e142: 0x6c53d620, 0x1e143: 0x6cc28020,
+-	0x1e144: 0x6d11dc20, 0x1e145: 0x6cf1ba20, 0x1e146: 0x6c04d820, 0x1e147: 0x6c01d220,
+-	0x1e148: 0x6cef4620, 0x1e149: 0x6d1a1020, 0x1e14a: 0x6c7e2020, 0x1e14b: 0x6cc40a20,
+-	0x1e14c: 0x6c7fca20, 0x1e14d: 0x6c317c20, 0x1e14e: 0x6cc38620, 0x1e14f: 0x6c3c6e20,
+-	0x1e150: 0x6ce4cc20, 0x1e151: 0x6ca88c20, 0x1e152: 0x6cdec420, 0x1e153: 0x6c767620,
+-	0x1e154: 0x6c518a20, 0x1e155: 0x6cc40e20, 0x1e156: 0x6c209c20, 0x1e157: 0x6c493020,
+-	0x1e158: 0x6c314620, 0x1e159: 0x6cb72420, 0x1e15a: 0x6c7c4e20, 0x1e15b: 0x6ce15c20,
+-	0x1e15c: 0x6c493420, 0x1e15d: 0x6cb18a20, 0x1e15e: 0x6c771820, 0x1e15f: 0x6cf92420,
+-	0x1e160: 0x6c5c8e20, 0x1e161: 0x6c160e20, 0x1e162: 0x6cb0dc20, 0x1e163: 0x6c29a420,
+-	0x1e164: 0x6c58c420, 0x1e165: 0x6cdeda20, 0x1e166: 0x6cf1c220, 0x1e167: 0x6cde0220,
+-	0x1e168: 0x6c9abe20, 0x1e169: 0x6cd67e20, 0x1e16a: 0x6ccd2820, 0x1e16b: 0x6d0e3820,
+-	0x1e16c: 0x6c4e8820, 0x1e16d: 0x6c090e20, 0x1e16e: 0x6cf1f820, 0x1e16f: 0x6c208c20,
+-	0x1e170: 0x6cc8f820, 0x1e171: 0x6ceee620, 0x1e172: 0x6cfb2820, 0x1e173: 0x6c52fe20,
+-	0x1e174: 0x6c646620, 0x1e175: 0x6c9f9220, 0x1e176: 0x6c772620, 0x1e177: 0x6c9aea20,
+-	0x1e178: 0x6d2c2420, 0x1e179: 0x6ca52a20, 0x1e17a: 0x6c4a4220, 0x1e17b: 0x6cf18820,
+-	0x1e17c: 0x6cde3e20, 0x1e17d: 0x6c9fa020, 0x1e17e: 0x6c935420, 0x1e17f: 0x6c764e20,
+-	// Block 0x786, offset 0x1e180
+-	0x1e180: 0x6c380a20, 0x1e181: 0x6c43ce20, 0x1e182: 0x6c50e620, 0x1e183: 0x6c7da420,
+-	0x1e184: 0x6c6f6820, 0x1e185: 0x6d26a220, 0x1e186: 0x6c80b020, 0x1e187: 0x6c316c20,
+-	0x1e188: 0x6d232820, 0x1e189: 0x6d0c0420, 0x1e18a: 0x6c166c20, 0x1e18b: 0x6cf88020,
+-	0x1e18c: 0x6cf19420, 0x1e18d: 0x6c5cc620, 0x1e18e: 0x6d0c9020, 0x1e18f: 0x6c362020,
+-	0x1e190: 0x6c15b420, 0x1e191: 0x6c7fa020, 0x1e192: 0x6cc27020, 0x1e193: 0x6c5bce20,
+-	0x1e194: 0x6c7e0220, 0x1e195: 0x6cc3c620, 0x1e196: 0x6c515020, 0x1e197: 0x6ce4b220,
+-	0x1e198: 0x6c26b220, 0x1e199: 0x6cc39020, 0x1e19a: 0x6c4e5e20, 0x1e19b: 0x6c58a220,
+-	0x1e19c: 0x6c3fba20, 0x1e19d: 0x6c3f9e20, 0x1e19e: 0x6c820620, 0x1e19f: 0x6c332a20,
+-	0x1e1a0: 0x6d031020, 0x1e1a1: 0x6cb89020, 0x1e1a2: 0x6cf49a20, 0x1e1a3: 0x6c412620,
+-	0x1e1a4: 0x6d356a20, 0x1e1a5: 0x6d19a020, 0x1e1a6: 0x6d0f7820, 0x1e1a7: 0x6c30d620,
+-	0x1e1a8: 0x6c35ce20, 0x1e1a9: 0x6cd0d620, 0x1e1aa: 0x6c04b220, 0x1e1ab: 0x6cadc620,
+-	0x1e1ac: 0x6c792220, 0x1e1ad: 0x6d27d420, 0x1e1ae: 0x6cc84c20, 0x1e1af: 0x6d34da20,
+-	0x1e1b0: 0x6cafac20, 0x1e1b1: 0x6c6e0420, 0x1e1b2: 0x6c39a020, 0x1e1b3: 0x6d0f7a20,
+-	0x1e1b4: 0x6d19a220, 0x1e1b5: 0x6d321020, 0x1e1b6: 0x6c69f420, 0x1e1b7: 0x6c195020,
+-	0x1e1b8: 0x6c35d620, 0x1e1b9: 0x6cc0d620, 0x1e1ba: 0x6c2bd220, 0x1e1bb: 0x6d410a20,
+-	0x1e1bc: 0x6d427820, 0x1e1bd: 0x6c2d3820, 0x1e1be: 0x6c8e0820, 0x1e1bf: 0x6c000220,
+-	// Block 0x787, offset 0x1e1c0
+-	0x1e1c0: 0x6ceae620, 0x1e1c1: 0x6ceae820, 0x1e1c2: 0x6c068c20, 0x1e1c3: 0x6c0dc020,
+-	0x1e1c4: 0x6c3fae20, 0x1e1c5: 0x6c618e20, 0x1e1c6: 0x6c921420, 0x1e1c7: 0x6c902c20,
+-	0x1e1c8: 0x6c18a220, 0x1e1c9: 0x6d03c220, 0x1e1ca: 0x6c34ce20, 0x1e1cb: 0x6c910220,
+-	0x1e1cc: 0x6ca0da20, 0x1e1cd: 0x6c67d620, 0x1e1ce: 0x6cd4ae20, 0x1e1cf: 0x6c34d020,
+-	0x1e1d0: 0x6cfc8620, 0x1e1d1: 0x6c373820, 0x1e1d2: 0x6c4acc20, 0x1e1d3: 0x6d207c20,
+-	0x1e1d4: 0x6c40e220, 0x1e1d5: 0x6ccd2e20, 0x1e1d6: 0x6c759e20, 0x1e1d7: 0x6cbc3420,
+-	0x1e1d8: 0x6d03d820, 0x1e1d9: 0x6c213620, 0x1e1da: 0x6c3fd820, 0x1e1db: 0x6c095820,
+-	0x1e1dc: 0x6cf99e20, 0x1e1dd: 0x6ccd3820, 0x1e1de: 0x6cd0f620, 0x1e1df: 0x6d35aa20,
+-	0x1e1e0: 0x6cb40420, 0x1e1e1: 0x6c30e420, 0x1e1e2: 0x6d260620, 0x1e1e3: 0x6d322820,
+-	0x1e1e4: 0x6c1e7620, 0x1e1e5: 0x6cfc9820, 0x1e1e6: 0x6c2a5620, 0x1e1e7: 0x6ca7fe20,
+-	0x1e1e8: 0x6d27e020, 0x1e1e9: 0x6cfbf020, 0x1e1ea: 0x6cadce20, 0x1e1eb: 0x6c3aa020,
+-	0x1e1ec: 0x6d404e20, 0x1e1ed: 0x6d174c20, 0x1e1ee: 0x6c334820, 0x1e1ef: 0x6c94e620,
+-	0x1e1f0: 0x6d19c420, 0x1e1f1: 0x6c707820, 0x1e1f2: 0x6c20c620, 0x1e1f3: 0x6c18ba20,
+-	0x1e1f4: 0x6cafd620, 0x1e1f5: 0x6c8cd820, 0x1e1f6: 0x6ce21420, 0x1e1f7: 0x6cfcae20,
+-	0x1e1f8: 0x6c923020, 0x1e1f9: 0x6cd0fc20, 0x1e1fa: 0x6cfc0a20, 0x1e1fb: 0x6d19d420,
+-	0x1e1fc: 0x6d3a6220, 0x1e1fd: 0x6d0fb020, 0x1e1fe: 0x6cc62c20, 0x1e1ff: 0x6cf9bc20,
+-	// Block 0x788, offset 0x1e200
+-	0x1e200: 0x6c1d1420, 0x1e201: 0x6d0e6820, 0x1e202: 0x6d19d620, 0x1e203: 0x6cd5ce20,
+-	0x1e204: 0x6c2b2c20, 0x1e205: 0x6d210c20, 0x1e206: 0x6c8f9220, 0x1e207: 0x6cee7820,
+-	0x1e208: 0x6cee7a20, 0x1e209: 0x6ca82420, 0x1e20a: 0x6c334a20, 0x1e20b: 0x6cdbf220,
+-	0x1e20c: 0x6c018420, 0x1e20d: 0x6c59b620, 0x1e20e: 0x6c6a0620, 0x1e20f: 0x6cdbf420,
+-	0x1e210: 0x6d1ae220, 0x1e211: 0x6c413c20, 0x1e212: 0x6d0d9a20, 0x1e213: 0x6c5abe20,
+-	0x1e214: 0x6c43fc20, 0x1e215: 0x6d27ee20, 0x1e216: 0x6cf4f220, 0x1e217: 0x6c7c6c20,
+-	0x1e218: 0x6c009e20, 0x1e219: 0x6cf89820, 0x1e21a: 0x6ce10c20, 0x1e21b: 0x6c623020,
+-	0x1e21c: 0x6d2f3620, 0x1e21d: 0x6c29de20, 0x1e21e: 0x6c024820, 0x1e21f: 0x6cf8aa20,
+-	0x1e220: 0x6d1aee20, 0x1e221: 0x6cc9be20, 0x1e222: 0x6cc53a20, 0x1e223: 0x6c8bca20,
+-	0x1e224: 0x6ce9b220, 0x1e225: 0x6c2ade20, 0x1e226: 0x6c693820, 0x1e227: 0x6cdc5820,
+-	0x1e228: 0x6cdbfa20, 0x1e229: 0x6c02e220, 0x1e22a: 0x6cfc2620, 0x1e22b: 0x6c3b8220,
+-	0x1e22c: 0x6ca64c20, 0x1e22d: 0x6c376820, 0x1e22e: 0x6c5f4a20, 0x1e22f: 0x6c29ec20,
+-	0x1e230: 0x6cf7a620, 0x1e231: 0x6d1b0a20, 0x1e232: 0x6c358220, 0x1e233: 0x6c5af420,
+-	0x1e234: 0x6c903c20, 0x1e235: 0x6cf72220, 0x1e236: 0x6c859820, 0x1e237: 0x6c868820,
+-	0x1e238: 0x6c86b420, 0x1e239: 0x6d3c5620, 0x1e23a: 0x6c553a20, 0x1e23b: 0x6d33d220,
+-	0x1e23c: 0x6cdcea20, 0x1e23d: 0x6c735220, 0x1e23e: 0x6ca3f620, 0x1e23f: 0x6d178820,
+-	// Block 0x789, offset 0x1e240
+-	0x1e240: 0x6cc3ba20, 0x1e241: 0x6d0e7e20, 0x1e242: 0x6cbd7a20, 0x1e243: 0x6cb8e820,
+-	0x1e244: 0x6d047c20, 0x1e245: 0x6d0b5420, 0x1e246: 0x6c604620, 0x1e247: 0x6c481820,
+-	0x1e248: 0x6c587a20, 0x1e249: 0x6d367620, 0x1e24a: 0x6c46c020, 0x1e24b: 0x6c736e20,
+-	0x1e24c: 0x6c225620, 0x1e24d: 0x6d1d9420, 0x1e24e: 0x6c70b020, 0x1e24f: 0x6c1e9820,
+-	0x1e250: 0x6c54f020, 0x1e251: 0x6d28c420, 0x1e252: 0x6c961c20, 0x1e253: 0x6d219620,
+-	0x1e254: 0x6c1dde20, 0x1e255: 0x6c2de020, 0x1e256: 0x6cdbe020, 0x1e257: 0x6c4f2820,
+-	0x1e258: 0x6cf32220, 0x1e259: 0x6cd6a620, 0x1e25a: 0x6c49ae20, 0x1e25b: 0x6c1ec220,
+-	0x1e25c: 0x6d28d220, 0x1e25d: 0x6d1dcc20, 0x1e25e: 0x6c5f7c20, 0x1e25f: 0x6cf70c20,
+-	0x1e260: 0x6c1dfe20, 0x1e261: 0x6c8f5220, 0x1e262: 0x6c847e20, 0x1e263: 0x6ca41420,
+-	0x1e264: 0x6d092c20, 0x1e265: 0x6d28e420, 0x1e266: 0x6c610820, 0x1e267: 0x6c610a20,
+-	0x1e268: 0x6d222220, 0x1e269: 0x6d211020, 0x1e26a: 0x6d093020, 0x1e26b: 0x6ca2f820,
+-	0x1e26c: 0x6c3d2e20, 0x1e26d: 0x6ccb2820, 0x1e26e: 0x6ca28e20, 0x1e26f: 0x6cf19820,
+-	0x1e270: 0x6c3b3620, 0x1e271: 0x6cacda20, 0x1e272: 0x6d27aa20, 0x1e273: 0x6c862220,
+-	0x1e274: 0x6c1c3a20, 0x1e275: 0x6d0f6020, 0x1e276: 0x6c8d2a20, 0x1e277: 0x6c823e20,
+-	0x1e278: 0x6c016e20, 0x1e279: 0x6c05ce20, 0x1e27a: 0x6cf50420, 0x1e27b: 0x6c2d6a20,
+-	0x1e27c: 0x6c297420, 0x1e27d: 0x6c56ac20, 0x1e27e: 0x6cf50620, 0x1e27f: 0x6c2e3420,
+-	// Block 0x78a, offset 0x1e280
+-	0x1e280: 0x6d05c220, 0x1e281: 0x6c625820, 0x1e282: 0x6ca2a820, 0x1e283: 0x6c18e820,
+-	0x1e284: 0x6cff1020, 0x1e285: 0x6d2cde20, 0x1e286: 0x6ce68a20, 0x1e287: 0x6d325e20,
+-	0x1e288: 0x6cae2820, 0x1e289: 0x6c9a2420, 0x1e28a: 0x6c8d4c20, 0x1e28b: 0x6cb53420,
+-	0x1e28c: 0x6d38b020, 0x1e28d: 0x6c5e0220, 0x1e28e: 0x6ccc7c20, 0x1e28f: 0x6c3a1a20,
+-	0x1e290: 0x6c538a20, 0x1e291: 0x6d2da020, 0x1e292: 0x6d1a0820, 0x1e293: 0x6ca60820,
+-	0x1e294: 0x6d3b2e20, 0x1e295: 0x6cea6e20, 0x1e296: 0x6c8be420, 0x1e297: 0x6c8e3020,
+-	0x1e298: 0x6c308e20, 0x1e299: 0x6d1bf620, 0x1e29a: 0x6cf53220, 0x1e29b: 0x6c8d7420,
+-	0x1e29c: 0x6cd6a420, 0x1e29d: 0x6c8d7620, 0x1e29e: 0x6cfa0620, 0x1e29f: 0x6c539020,
+-	0x1e2a0: 0x6d1a1220, 0x1e2a1: 0x6c974420, 0x1e2a2: 0x6c974620, 0x1e2a3: 0x6d280620,
+-	0x1e2a4: 0x6c8f4c20, 0x1e2a5: 0x6c9c1620, 0x1e2a6: 0x6c0d6a20, 0x1e2a7: 0x6cf54020,
+-	0x1e2a8: 0x6cf10020, 0x1e2a9: 0x6c7e2a20, 0x1e2aa: 0x6d1aac20, 0x1e2ab: 0x6cf7b220,
+-	0x1e2ac: 0x6d191e20, 0x1e2ad: 0x6c008020, 0x1e2ae: 0x6c28e420, 0x1e2af: 0x6ce2e420,
+-	0x1e2b0: 0x6cca4020, 0x1e2b1: 0x6d246c20, 0x1e2b2: 0x6c933620, 0x1e2b3: 0x6c8fd020,
+-	0x1e2b4: 0x6c27a820, 0x1e2b5: 0x6c60f420, 0x1e2b6: 0x6cacec20, 0x1e2b7: 0x6d0ff420,
+-	0x1e2b8: 0x6c03d620, 0x1e2b9: 0x6cafa420, 0x1e2ba: 0x6cef7020, 0x1e2bb: 0x6c3c8420,
+-	0x1e2bc: 0x6cf93420, 0x1e2bd: 0x6c62e420, 0x1e2be: 0x6c970e20, 0x1e2bf: 0x6c9bac20,
+-	// Block 0x78b, offset 0x1e2c0
+-	0x1e2c0: 0x6c9bae20, 0x1e2c1: 0x6c829a20, 0x1e2c2: 0x6c87ae20, 0x1e2c3: 0x6c5e5820,
+-	0x1e2c4: 0x6c008220, 0x1e2c5: 0x6c3b0220, 0x1e2c6: 0x6c27ae20, 0x1e2c7: 0x6c901220,
+-	0x1e2c8: 0x6c8db620, 0x1e2c9: 0x6c010e20, 0x1e2ca: 0x6c3c8e20, 0x1e2cb: 0x6c87c820,
+-	0x1e2cc: 0x6c062620, 0x1e2cd: 0x6c521820, 0x1e2ce: 0x6c521020, 0x1e2cf: 0x6c521420,
+-	0x1e2d0: 0x6c0e3e20, 0x1e2d1: 0x6cbe3020, 0x1e2d2: 0x6cbe3220, 0x1e2d3: 0x6c6e8a20,
+-	0x1e2d4: 0x6ce46c20, 0x1e2d5: 0x6d317820, 0x1e2d6: 0x6c6e9220, 0x1e2d7: 0x6c198420,
+-	0x1e2d8: 0x6cbed420, 0x1e2d9: 0x6c6e9c20, 0x1e2da: 0x6c6ea620, 0x1e2db: 0x6c2d8620,
+-	0x1e2dc: 0x6c6eb020, 0x1e2dd: 0x6ce47a20, 0x1e2de: 0x6c39f220, 0x1e2df: 0x6c3a0a20,
+-	0x1e2e0: 0x6c77c820, 0x1e2e1: 0x6c9c9220, 0x1e2e2: 0x6c9e5620, 0x1e2e3: 0x6c9e5020,
+-	0x1e2e4: 0x6c065a20, 0x1e2e5: 0x6d133420, 0x1e2e6: 0x6ce52020, 0x1e2e7: 0x6c5c9820,
+-	0x1e2e8: 0x6d139c20, 0x1e2e9: 0x6c43d020, 0x1e2ea: 0x6c2f5e20, 0x1e2eb: 0x6c13ea20,
+-	0x1e2ec: 0x6cb9a020, 0x1e2ed: 0x6cc5f820, 0x1e2ee: 0x6c2b7020, 0x1e2ef: 0x6c326020,
+-	0x1e2f0: 0x6cf4f420, 0x1e2f1: 0x6cc5fa20, 0x1e2f2: 0x6cbd8820, 0x1e2f3: 0x6c6d2020,
+-	0x1e2f4: 0x6d08e420, 0x1e2f5: 0x6ca99e20, 0x1e2f6: 0x6c03a220, 0x1e2f7: 0x6d1af020,
+-	0x1e2f8: 0x6cc95020, 0x1e2f9: 0x6ca35e20, 0x1e2fa: 0x6ca14420, 0x1e2fb: 0x6d412220,
+-	0x1e2fc: 0x6c26b620, 0x1e2fd: 0x6c050020, 0x1e2fe: 0x6d183e20, 0x1e2ff: 0x6d121a20,
+-	// Block 0x78c, offset 0x1e300
+-	0x1e300: 0x6ce23420, 0x1e301: 0x6c074c20, 0x1e302: 0x6c63d820, 0x1e303: 0x6c537a20,
+-	0x1e304: 0x6cad6220, 0x1e305: 0x6d0f6420, 0x1e306: 0x6c0e4220, 0x1e307: 0x6d1a0020,
+-	0x1e308: 0x6c442c20, 0x1e309: 0x6ce23c20, 0x1e30a: 0x6c6b2e20, 0x1e30b: 0x6d00e420,
+-	0x1e30c: 0x6c014820, 0x1e30d: 0x6c014a20, 0x1e30e: 0x6c523620, 0x1e30f: 0x6c45fc20,
+-	0x1e310: 0x6cb88a20, 0x1e311: 0x6c26c220, 0x1e312: 0x6cbbf420, 0x1e313: 0x6ce64a20,
+-	0x1e314: 0x6c978620, 0x1e315: 0x6d1d4e20, 0x1e316: 0x6cdbde20, 0x1e317: 0x6ce5a020,
+-	0x1e318: 0x6cbc6220, 0x1e319: 0x6d08b820, 0x1e31a: 0x6c79ac20, 0x1e31b: 0x6c083420,
+-	0x1e31c: 0x6cdeb420, 0x1e31d: 0x6cce5820, 0x1e31e: 0x6c0dfa20, 0x1e31f: 0x6c7e2220,
+-	0x1e320: 0x6c70d420, 0x1e321: 0x6c7eda20, 0x1e322: 0x6d024a20, 0x1e323: 0x6cc76820,
+-	0x1e324: 0x6c054420, 0x1e325: 0x6c372c20, 0x1e326: 0x6cbfd620, 0x1e327: 0x6cbfd820,
+-	0x1e328: 0x6c518c20, 0x1e329: 0x6d001620, 0x1e32a: 0x6ca2ba20, 0x1e32b: 0x6c70da20,
+-	0x1e32c: 0x6c650a20, 0x1e32d: 0x6c0b1620, 0x1e32e: 0x6c2b4c20, 0x1e32f: 0x6c651c20,
+-	0x1e330: 0x6cf16e20, 0x1e331: 0x6ce1fa20, 0x1e332: 0x6c466620, 0x1e333: 0x6cdec620,
+-	0x1e334: 0x6c076c20, 0x1e335: 0x6d011c20, 0x1e336: 0x6cac8820, 0x1e337: 0x6c445420,
+-	0x1e338: 0x6c0ab020, 0x1e339: 0x6c7e2e20, 0x1e33a: 0x6ce0e020, 0x1e33b: 0x6c90d420,
+-	0x1e33c: 0x6c4ba420, 0x1e33d: 0x6cbc1220, 0x1e33e: 0x6d08ee20, 0x1e33f: 0x6c5f9820,
+-	// Block 0x78d, offset 0x1e340
+-	0x1e340: 0x6c654820, 0x1e341: 0x6c679820, 0x1e342: 0x6c164c20, 0x1e343: 0x6c26d820,
+-	0x1e344: 0x6c56e820, 0x1e345: 0x6cfc6420, 0x1e346: 0x6cb96020, 0x1e347: 0x6c320420,
+-	0x1e348: 0x6cec4420, 0x1e349: 0x6c655a20, 0x1e34a: 0x6c801e20, 0x1e34b: 0x6ceeee20,
+-	0x1e34c: 0x6cc5fc20, 0x1e34d: 0x6c3ecc20, 0x1e34e: 0x6c9aa220, 0x1e34f: 0x6cc37820,
+-	0x1e350: 0x6c442e20, 0x1e351: 0x6cf01020, 0x1e352: 0x6cbc6420, 0x1e353: 0x6c4e3e20,
+-	0x1e354: 0x6c172820, 0x1e355: 0x6c7e3420, 0x1e356: 0x6cc77c20, 0x1e357: 0x6d286620,
+-	0x1e358: 0x6ccf8020, 0x1e359: 0x6cf04620, 0x1e35a: 0x6c444e20, 0x1e35b: 0x6c046220,
+-	0x1e35c: 0x6ce1fc20, 0x1e35d: 0x6c466820, 0x1e35e: 0x6d286c20, 0x1e35f: 0x6c435e20,
+-	0x1e360: 0x6c0ab220, 0x1e361: 0x6cf05220, 0x1e362: 0x6cdcc220, 0x1e363: 0x6c31fa20,
+-	0x1e364: 0x6cec4620, 0x1e365: 0x6c320620, 0x1e366: 0x6ceed820, 0x1e367: 0x6cc5cc20,
+-	0x1e368: 0x6c3e2820, 0x1e369: 0x6c4e1a20, 0x1e36a: 0x6cefea20, 0x1e36b: 0x6d283e20,
+-	0x1e36c: 0x6ce1e020, 0x1e36d: 0x6c6fb420, 0x1e36e: 0x6c6fc420, 0x1e36f: 0x6cfad220,
+-	0x1e370: 0x6d022820, 0x1e371: 0x6cfae220, 0x1e372: 0x6c5f8820, 0x1e373: 0x6d19ba20,
+-	0x1e374: 0x6d28c220, 0x1e375: 0x6d284020, 0x1e376: 0x6ccea820, 0x1e377: 0x6c822420,
+-	0x1e378: 0x6caecc20, 0x1e379: 0x6c5a2020, 0x1e37a: 0x6d1c0420, 0x1e37b: 0x6d287220,
+-	0x1e37c: 0x6caef020, 0x1e37d: 0x6c016020, 0x1e37e: 0x6d1a1820, 0x1e37f: 0x6cfe0a20,
+-	// Block 0x78e, offset 0x1e380
+-	0x1e380: 0x6c56ea20, 0x1e381: 0x6d12dc20, 0x1e382: 0x6c2f6e20, 0x1e383: 0x6cbea820,
+-	0x1e384: 0x6c7c7020, 0x1e385: 0x6cfe3a20, 0x1e386: 0x6cd75420, 0x1e387: 0x6c4daa20,
+-	0x1e388: 0x6d05ae20, 0x1e389: 0x6d152a20, 0x1e38a: 0x6d05b620, 0x1e38b: 0x6c35b420,
+-	0x1e38c: 0x6cd99020, 0x1e38d: 0x6c7cd820, 0x1e38e: 0x6cb60c20, 0x1e38f: 0x6c4f8220,
+-	0x1e390: 0x6d238620, 0x1e391: 0x6cece020, 0x1e392: 0x6c048c20, 0x1e393: 0x6c33fe20,
+-	0x1e394: 0x6c2b8620, 0x1e395: 0x6c27f220, 0x1e396: 0x6cacbe20, 0x1e397: 0x6cb31820,
+-	0x1e398: 0x6c8e1220, 0x1e399: 0x6c182e20, 0x1e39a: 0x6c6e2620, 0x1e39b: 0x6c834020,
+-	0x1e39c: 0x6c516a20, 0x1e39d: 0x6cbb9e20, 0x1e39e: 0x6c36a020, 0x1e39f: 0x6c357c20,
+-	0x1e3a0: 0x6cf01220, 0x1e3a1: 0x6d00e620, 0x1e3a2: 0x6c7e1020, 0x1e3a3: 0x6cd07020,
+-	0x1e3a4: 0x6d156620, 0x1e3a5: 0x6cd07a20, 0x1e3a6: 0x6c4d2420, 0x1e3a7: 0x6c332820,
+-	0x1e3a8: 0x6d228420, 0x1e3a9: 0x6cb26620, 0x1e3aa: 0x6c834220, 0x1e3ab: 0x6c3f8420,
+-	0x1e3ac: 0x6c63e020, 0x1e3ad: 0x6ce7f820, 0x1e3ae: 0x6c5c4a20, 0x1e3af: 0x6c7ca020,
+-	0x1e3b0: 0x6c63ec20, 0x1e3b1: 0x6c953220, 0x1e3b2: 0x6ce6e220, 0x1e3b3: 0x6c199820,
+-	0x1e3b4: 0x6d1d1020, 0x1e3b5: 0x6d276a20, 0x1e3b6: 0x6c55c620, 0x1e3b7: 0x6c4f1020,
+-	0x1e3b8: 0x6c6e3620, 0x1e3b9: 0x6ce9be20, 0x1e3ba: 0x6ce9c020, 0x1e3bb: 0x6cb21420,
+-	0x1e3bc: 0x6c7f5a20, 0x1e3bd: 0x6ce9c220, 0x1e3be: 0x6d3eb420, 0x1e3bf: 0x6d3eb220,
+-	// Block 0x78f, offset 0x1e3c0
+-	0x1e3c0: 0x6c20e620, 0x1e3c1: 0x6c2fc020, 0x1e3c2: 0x6c7f5c20, 0x1e3c3: 0x6ce02020,
+-	0x1e3c4: 0x6c4f2220, 0x1e3c5: 0x6cb93220, 0x1e3c6: 0x6c783820, 0x1e3c7: 0x6c257220,
+-	0x1e3c8: 0x6d085e20, 0x1e3c9: 0x6cbd4420, 0x1e3ca: 0x6d157820, 0x1e3cb: 0x6cc9d420,
+-	0x1e3cc: 0x6ce39e20, 0x1e3cd: 0x6c358a20, 0x1e3ce: 0x6c36ca20, 0x1e3cf: 0x6d0ce220,
+-	0x1e3d0: 0x6cf21420, 0x1e3d1: 0x6c76f820, 0x1e3d2: 0x6d1e0220, 0x1e3d3: 0x6d3b9820,
+-	0x1e3d4: 0x6d0ce420, 0x1e3d5: 0x6cfc3c20, 0x1e3d6: 0x6d035220, 0x1e3d7: 0x6d162620,
+-	0x1e3d8: 0x6d263820, 0x1e3d9: 0x6cca9620, 0x1e3da: 0x6c2ce620, 0x1e3db: 0x6c2ce820,
+-	0x1e3dc: 0x6c67ca20, 0x1e3dd: 0x6c7c4a20, 0x1e3de: 0x6c835420, 0x1e3df: 0x6c819220,
+-	0x1e3e0: 0x6cb1a820, 0x1e3e1: 0x6cec7820, 0x1e3e2: 0x6c979a20, 0x1e3e3: 0x6c247c20,
+-	0x1e3e4: 0x6d117820, 0x1e3e5: 0x6c507e20, 0x1e3e6: 0x6cbc1420, 0x1e3e7: 0x6c482e20,
+-	0x1e3e8: 0x6d0ab620, 0x1e3e9: 0x6d0e1a20, 0x1e3ea: 0x6c5c9e20, 0x1e3eb: 0x6c164e20,
+-	0x1e3ec: 0x6cc7ee20, 0x1e3ed: 0x6c9bb620, 0x1e3ee: 0x6c0d7420, 0x1e3ef: 0x6cfc6620,
+-	0x1e3f0: 0x6cb23220, 0x1e3f1: 0x6c91a620, 0x1e3f2: 0x6c806620, 0x1e3f3: 0x6ca8d620,
+-	0x1e3f4: 0x6cc34620, 0x1e3f5: 0x6d12be20, 0x1e3f6: 0x6c2f6a20, 0x1e3f7: 0x6cbe9e20,
+-	0x1e3f8: 0x6c4d9620, 0x1e3f9: 0x6cfe2420, 0x1e3fa: 0x6cd74a20, 0x1e3fb: 0x6d057e20,
+-	0x1e3fc: 0x6d058820, 0x1e3fd: 0x6cecd220, 0x1e3fe: 0x6c480620, 0x1e3ff: 0x6c33ec20,
+-	// Block 0x790, offset 0x1e400
+-	0x1e400: 0x6cb5b420, 0x1e401: 0x6c047c20, 0x1e402: 0x6cd98820, 0x1e403: 0x6c4f7220,
+-	0x1e404: 0x6d22fc20, 0x1e405: 0x6c915420, 0x1e406: 0x6c8e1020, 0x1e407: 0x6cb30c20,
+-	0x1e408: 0x6c6e1e20, 0x1e409: 0x6c6ada20, 0x1e40a: 0x6c63c820, 0x1e40b: 0x6ce6d420,
+-	0x1e40c: 0x6c513220, 0x1e40d: 0x6d1cf420, 0x1e40e: 0x6c6f1420, 0x1e40f: 0x6c780220,
+-	0x1e410: 0x6d152c20, 0x1e411: 0x6cb21220, 0x1e412: 0x6c5bee20, 0x1e413: 0x6ce9a820,
+-	0x1e414: 0x6c4ed620, 0x1e415: 0x6d1cf820, 0x1e416: 0x6d1cfa20, 0x1e417: 0x6c781e20,
+-	0x1e418: 0x6ce37420, 0x1e419: 0x6d1dfe20, 0x1e41a: 0x6c36a220, 0x1e41b: 0x6d3b9020,
+-	0x1e41c: 0x6d0ccc20, 0x1e41d: 0x6c357e20, 0x1e41e: 0x6ca87820, 0x1e41f: 0x6c975a20,
+-	0x1e420: 0x6c2cdc20, 0x1e421: 0x6cca8c20, 0x1e422: 0x6c507820, 0x1e423: 0x6c835020,
+-	0x1e424: 0x6c163c20, 0x1e425: 0x6cc7e620, 0x1e426: 0x6cb22620, 0x1e427: 0x6cc33e20,
+-	0x1e428: 0x6c3c2c20, 0x1e429: 0x6c0c0020, 0x1e42a: 0x6c48be20, 0x1e42b: 0x6c3eb820,
+-	0x1e42c: 0x6cf96e20, 0x1e42d: 0x6d2e0c20, 0x1e42e: 0x6c0c1020, 0x1e42f: 0x6cc98020,
+-	0x1e430: 0x6c038820, 0x1e431: 0x6cdf3420, 0x1e432: 0x6c8b2a20, 0x1e433: 0x6c487420,
+-	0x1e434: 0x6d08ba20, 0x1e435: 0x6cce8820, 0x1e436: 0x6c72a820, 0x1e437: 0x6c0c3420,
+-	0x1e438: 0x6cd84020, 0x1e439: 0x6cf04820, 0x1e43a: 0x6d0fec20, 0x1e43b: 0x6d116a20,
+-	0x1e43c: 0x6cd9f820, 0x1e43d: 0x6c767820, 0x1e43e: 0x6cd9fa20, 0x1e43f: 0x6c386c20,
+-	// Block 0x791, offset 0x1e440
+-	0x1e440: 0x6c8ed220, 0x1e441: 0x6cf7bc20, 0x1e442: 0x6c8f5620, 0x1e443: 0x6cb17020,
+-	0x1e444: 0x6cb17220, 0x1e445: 0x6c8ede20, 0x1e446: 0x6c0c5620, 0x1e447: 0x6c0c5820,
+-	0x1e448: 0x6c0c5a20, 0x1e449: 0x6c8a5620, 0x1e44a: 0x6c0c9e20, 0x1e44b: 0x6ccb9c20,
+-	0x1e44c: 0x6c3c9020, 0x1e44d: 0x6d051820, 0x1e44e: 0x6c3c0e20, 0x1e44f: 0x6d0f8220,
+-	0x1e450: 0x6d2dde20, 0x1e451: 0x6c0bee20, 0x1e452: 0x6cc97020, 0x1e453: 0x6c725420,
+-	0x1e454: 0x6cd7fc20, 0x1e455: 0x6cd9c620, 0x1e456: 0x6d112e20, 0x1e457: 0x6c8e7e20,
+-	0x1e458: 0x6cb16020, 0x1e459: 0x6c0c2620, 0x1e45a: 0x6c0c2820, 0x1e45b: 0x6c39f420,
+-	0x1e45c: 0x6c387420, 0x1e45d: 0x6c3a2e20, 0x1e45e: 0x6c39ee20, 0x1e45f: 0x6cd25820,
+-	0x1e460: 0x6cd24c20, 0x1e461: 0x6c116220, 0x1e462: 0x6c5eb020, 0x1e463: 0x6c2f9e20,
+-	0x1e464: 0x6cd8ae20, 0x1e465: 0x6ceac620, 0x1e466: 0x6d2d7220, 0x1e467: 0x6cdcd220,
+-	0x1e468: 0x6cfde820, 0x1e469: 0x6cea5a20, 0x1e46a: 0x6cc5fe20, 0x1e46b: 0x6d235e20,
+-	0x1e46c: 0x6c737e20, 0x1e46d: 0x6c1c2a20, 0x1e46e: 0x6d1af220, 0x1e46f: 0x6c395c20,
+-	0x1e470: 0x6c395e20, 0x1e471: 0x6cdcda20, 0x1e472: 0x6d1ae820, 0x1e473: 0x6ce81620,
+-	0x1e474: 0x6d152e20, 0x1e475: 0x6d42a620, 0x1e476: 0x6c09ec20, 0x1e477: 0x6c6b9c20,
+-	0x1e478: 0x6ce1e220, 0x1e479: 0x6c8f0e20, 0x1e47a: 0x6c226220, 0x1e47b: 0x6ce61420,
+-	0x1e47c: 0x6cd8d420, 0x1e47d: 0x6c060420, 0x1e47e: 0x6cd3b020, 0x1e47f: 0x6c350620,
+-	// Block 0x792, offset 0x1e480
+-	0x1e480: 0x6c4d7220, 0x1e481: 0x6cc60420, 0x1e482: 0x6ce51020, 0x1e483: 0x6c691e20,
+-	0x1e484: 0x6c63da20, 0x1e485: 0x6c0df020, 0x1e486: 0x6d113020, 0x1e487: 0x6ce77420,
+-	0x1e488: 0x6c226420, 0x1e489: 0x6cfdf820, 0x1e48a: 0x6d102a20, 0x1e48b: 0x6c738a20,
+-	0x1e48c: 0x6c37a220, 0x1e48d: 0x6d0eb220, 0x1e48e: 0x6c823a20, 0x1e48f: 0x6cf68c20,
+-	0x1e490: 0x6c117220, 0x1e491: 0x6c0e8e20, 0x1e492: 0x6ca57220, 0x1e493: 0x6c36a420,
+-	0x1e494: 0x6c10b620, 0x1e495: 0x6c75e620, 0x1e496: 0x6c313620, 0x1e497: 0x6cdb0e20,
+-	0x1e498: 0x6d219820, 0x1e499: 0x6cd3d020, 0x1e49a: 0x6d114a20, 0x1e49b: 0x6c5d0020,
+-	0x1e49c: 0x6c4cd220, 0x1e49d: 0x6cd3d220, 0x1e49e: 0x6c66dc20, 0x1e49f: 0x6d3cae20,
+-	0x1e4a0: 0x6c0df420, 0x1e4a1: 0x6cfd1620, 0x1e4a2: 0x6c10c020, 0x1e4a3: 0x6d135020,
+-	0x1e4a4: 0x6ce01620, 0x1e4a5: 0x6c3a1e20, 0x1e4a6: 0x6d2ede20, 0x1e4a7: 0x6cf0de20,
+-	0x1e4a8: 0x6c496820, 0x1e4a9: 0x6c36b220, 0x1e4aa: 0x6caa9a20, 0x1e4ab: 0x6d286020,
+-	0x1e4ac: 0x6c55d620, 0x1e4ad: 0x6c5a1420, 0x1e4ae: 0x6ce61c20, 0x1e4af: 0x6c5c6220,
+-	0x1e4b0: 0x6c650c20, 0x1e4b1: 0x6c543c20, 0x1e4b2: 0x6c00e820, 0x1e4b3: 0x6ce14c20,
+-	0x1e4b4: 0x6c3b4820, 0x1e4b5: 0x6cf0ee20, 0x1e4b6: 0x6c47de20, 0x1e4b7: 0x6c13b820,
+-	0x1e4b8: 0x6cd99e20, 0x1e4b9: 0x6ce15820, 0x1e4ba: 0x6c0f9820, 0x1e4bb: 0x6c42e820,
+-	0x1e4bc: 0x6cf90c20, 0x1e4bd: 0x6c7d2620, 0x1e4be: 0x6c8f4e20, 0x1e4bf: 0x6cd9f220,
+-	// Block 0x793, offset 0x1e4c0
+-	0x1e4c0: 0x6ce24a20, 0x1e4c1: 0x6d137c20, 0x1e4c2: 0x6d27cc20, 0x1e4c3: 0x6ca08a20,
+-	0x1e4c4: 0x6ce16020, 0x1e4c5: 0x6c979420, 0x1e4c6: 0x6c0aa020, 0x1e4c7: 0x6d245620,
+-	0x1e4c8: 0x6d050a20, 0x1e4c9: 0x6c6cc820, 0x1e4ca: 0x6cca4420, 0x1e4cb: 0x6c7d3c20,
+-	0x1e4cc: 0x6d3bfc20, 0x1e4cd: 0x6ccdde20, 0x1e4ce: 0x6c1c9020, 0x1e4cf: 0x6c28e620,
+-	0x1e4d0: 0x6d193c20, 0x1e4d1: 0x6c5f9020, 0x1e4d2: 0x6cc53220, 0x1e4d3: 0x6c19ac20,
+-	0x1e4d4: 0x6d1de420, 0x1e4d5: 0x6ce20220, 0x1e4d6: 0x6cf11c20, 0x1e4d7: 0x6cfe0e20,
+-	0x1e4d8: 0x6d2dc620, 0x1e4d9: 0x6c3b4a20, 0x1e4da: 0x6c4d8a20, 0x1e4db: 0x6c9bb020,
+-	0x1e4dc: 0x6d0f1420, 0x1e4dd: 0x6ca0a220, 0x1e4de: 0x6c158020, 0x1e4df: 0x6cfe1020,
+-	0x1e4e0: 0x6c959820, 0x1e4e1: 0x6d29cc20, 0x1e4e2: 0x6ca46c20, 0x1e4e3: 0x6cd22620,
+-	0x1e4e4: 0x6c2f9020, 0x1e4e5: 0x6c5e6e20, 0x1e4e6: 0x6cea9e20, 0x1e4e7: 0x6ce0e420,
+-	0x1e4e8: 0x6cea4420, 0x1e4e9: 0x6cf84020, 0x1e4ea: 0x6cc5ce20, 0x1e4eb: 0x6d22d220,
+-	0x1e4ec: 0x6c1bea20, 0x1e4ed: 0x6c392420, 0x1e4ee: 0x6d1acc20, 0x1e4ef: 0x6c665620,
+-	0x1e4f0: 0x6cd32620, 0x1e4f1: 0x6c05e820, 0x1e4f2: 0x6cd89420, 0x1e4f3: 0x6c34d220,
+-	0x1e4f4: 0x6d147e20, 0x1e4f5: 0x6c378c20, 0x1e4f6: 0x6cc52420, 0x1e4f7: 0x6cfdde20,
+-	0x1e4f8: 0x6c50e820, 0x1e4f9: 0x6c823820, 0x1e4fa: 0x6c68d820, 0x1e4fb: 0x6cf5b020,
+-	0x1e4fc: 0x6c0dd420, 0x1e4fd: 0x6c0e6a20, 0x1e4fe: 0x6c310c20, 0x1e4ff: 0x6c360420,
+-	// Block 0x794, offset 0x1e500
+-	0x1e500: 0x6d210020, 0x1e501: 0x6ca56a20, 0x1e502: 0x6c75a820, 0x1e503: 0x6c4cbe20,
+-	0x1e504: 0x6c5ce820, 0x1e505: 0x6cfcbe20, 0x1e506: 0x6c495020, 0x1e507: 0x6c13a020,
+-	0x1e508: 0x6c7d0220, 0x1e509: 0x6c479820, 0x1e50a: 0x6cd9ba20, 0x1e50b: 0x6c14fc20,
+-	0x1e50c: 0x6d130a20, 0x1e50d: 0x6ca06020, 0x1e50e: 0x6c0f2220, 0x1e50f: 0x6c8e7620,
+-	0x1e510: 0x6d04de20, 0x1e511: 0x6c6ca820, 0x1e512: 0x6c976e20, 0x1e513: 0x6cca2820,
+-	0x1e514: 0x6d3be020, 0x1e515: 0x6ca46420, 0x1e516: 0x6cd44220, 0x1e517: 0x6c7c7220,
+-	0x1e518: 0x6c4c9020, 0x1e519: 0x6cfd6620, 0x1e51a: 0x6c3b8020, 0x1e51b: 0x6c0f3c20,
+-	0x1e51c: 0x6ca64420, 0x1e51d: 0x6c0a1420, 0x1e51e: 0x6c0f6e20, 0x1e51f: 0x6ce8fa20,
+-	0x1e520: 0x6c4dbc20, 0x1e521: 0x6c3a2020, 0x1e522: 0x6c650e20, 0x1e523: 0x6c015420,
+-	0x1e524: 0x6c00fa20, 0x1e525: 0x6c408020, 0x1e526: 0x6cfaf620, 0x1e527: 0x6d276c20,
+-	0x1e528: 0x6d02f420, 0x1e529: 0x6c3bb020, 0x1e52a: 0x6cb1fe20, 0x1e52b: 0x6d02fa20,
+-	0x1e52c: 0x6c969820, 0x1e52d: 0x6d236020, 0x1e52e: 0x6c3caa20, 0x1e52f: 0x6c4ed820,
+-	0x1e530: 0x6c2b7420, 0x1e531: 0x6ceb3220, 0x1e532: 0x6d306820, 0x1e533: 0x6c1b4220,
+-	0x1e534: 0x6d0a2420, 0x1e535: 0x6d3b1020, 0x1e536: 0x6d340c20, 0x1e537: 0x6cae2420,
+-	0x1e538: 0x6d034620, 0x1e539: 0x6cc64a20, 0x1e53a: 0x6cc97a20, 0x1e53b: 0x6d27f820,
+-	0x1e53c: 0x6cf1a420, 0x1e53d: 0x6d348a20, 0x1e53e: 0x6c28a020, 0x1e53f: 0x6c935c20,
+-	// Block 0x795, offset 0x1e540
+-	0x1e540: 0x6d1f5e20, 0x1e541: 0x6c0f3e20, 0x1e542: 0x6c060a20, 0x1e543: 0x6c748a20,
+-	0x1e544: 0x6ceb4220, 0x1e545: 0x6d184020, 0x1e546: 0x6cc13020, 0x1e547: 0x6cb4c220,
+-	0x1e548: 0x6cc13e20, 0x1e549: 0x6c6ee620, 0x1e54a: 0x6cb35c20, 0x1e54b: 0x6d2f7020,
+-	0x1e54c: 0x6d251220, 0x1e54d: 0x6cadf020, 0x1e54e: 0x6d394c20, 0x1e54f: 0x6c727220,
+-	0x1e550: 0x6d3b2620, 0x1e551: 0x6caa4420, 0x1e552: 0x6c70c820, 0x1e553: 0x6caf8820,
+-	0x1e554: 0x6d29fa20, 0x1e555: 0x6c645020, 0x1e556: 0x6c8d4e20, 0x1e557: 0x6d31f620,
+-	0x1e558: 0x6cdf3a20, 0x1e559: 0x6c404820, 0x1e55a: 0x6d103020, 0x1e55b: 0x6cd2d820,
+-	0x1e55c: 0x6c0a4020, 0x1e55d: 0x6cebc220, 0x1e55e: 0x6ceb4620, 0x1e55f: 0x6cd8e420,
+-	0x1e560: 0x6c8e9020, 0x1e561: 0x6c96de20, 0x1e562: 0x6cb13220, 0x1e563: 0x6ce24620,
+-	0x1e564: 0x6d36f820, 0x1e565: 0x6cc6b820, 0x1e566: 0x6ce2b620, 0x1e567: 0x6c308a20,
+-	0x1e568: 0x6d09ac20, 0x1e569: 0x6cc2a420, 0x1e56a: 0x6cd02220, 0x1e56b: 0x6c6ee820,
+-	0x1e56c: 0x6c37a620, 0x1e56d: 0x6c4d7a20, 0x1e56e: 0x6c0f7020, 0x1e56f: 0x6d39ce20,
+-	0x1e570: 0x6d1a0c20, 0x1e571: 0x6c962a20, 0x1e572: 0x6d397a20, 0x1e573: 0x6c28bc20,
+-	0x1e574: 0x6d023820, 0x1e575: 0x6c8eb020, 0x1e576: 0x6c716a20, 0x1e577: 0x6cd97020,
+-	0x1e578: 0x6cbd4620, 0x1e579: 0x6c987a20, 0x1e57a: 0x6c80ec20, 0x1e57b: 0x6c4f2420,
+-	0x1e57c: 0x6ce90020, 0x1e57d: 0x6d07da20, 0x1e57e: 0x6cea1420, 0x1e57f: 0x6c75f220,
+-	// Block 0x796, offset 0x1e580
+-	0x1e580: 0x6c35be20, 0x1e581: 0x6c1a7a20, 0x1e582: 0x6d03ac20, 0x1e583: 0x6c005820,
+-	0x1e584: 0x6c931420, 0x1e585: 0x6d3c6c20, 0x1e586: 0x6d38be20, 0x1e587: 0x6ccf8220,
+-	0x1e588: 0x6cb13620, 0x1e589: 0x6c7d8c20, 0x1e58a: 0x6ce24c20, 0x1e58b: 0x6c7f2e20,
+-	0x1e58c: 0x6d3fd220, 0x1e58d: 0x6c78e220, 0x1e58e: 0x6cb67c20, 0x1e58f: 0x6cb67e20,
+-	0x1e590: 0x6d0ede20, 0x1e591: 0x6c3a2220, 0x1e592: 0x6ccacc20, 0x1e593: 0x6d0df020,
+-	0x1e594: 0x6c445820, 0x1e595: 0x6d11e220, 0x1e596: 0x6cf54820, 0x1e597: 0x6cb14e20,
+-	0x1e598: 0x6c237620, 0x1e599: 0x6cb15020, 0x1e59a: 0x6cb9da20, 0x1e59b: 0x6c3a2420,
+-	0x1e59c: 0x6c5a2420, 0x1e59d: 0x6cb9d420, 0x1e59e: 0x6c5d6820, 0x1e59f: 0x6d21de20,
+-	0x1e5a0: 0x6ce3a820, 0x1e5a1: 0x6cc32420, 0x1e5a2: 0x6cfa1620, 0x1e5a3: 0x6d3fd620,
+-	0x1e5a4: 0x6c7cae20, 0x1e5a5: 0x6cc76c20, 0x1e5a6: 0x6cd84620, 0x1e5a7: 0x6c488020,
+-	0x1e5a8: 0x6ceb5c20, 0x1e5a9: 0x6c4aa220, 0x1e5aa: 0x6cda0020, 0x1e5ab: 0x6cb94a20,
+-	0x1e5ac: 0x6c1a5a20, 0x1e5ad: 0x6d374e20, 0x1e5ae: 0x6c8ed620, 0x1e5af: 0x6caef820,
+-	0x1e5b0: 0x6ce2c820, 0x1e5b1: 0x6cf7be20, 0x1e5b2: 0x6c12b420, 0x1e5b3: 0x6c31ea20,
+-	0x1e5b4: 0x6d0efe20, 0x1e5b5: 0x6d25cc20, 0x1e5b6: 0x6d407220, 0x1e5b7: 0x6ccad020,
+-	0x1e5b8: 0x6ccde020, 0x1e5b9: 0x6c84b020, 0x1e5ba: 0x6d376220, 0x1e5bb: 0x6cd6b020,
+-	0x1e5bc: 0x6c933820, 0x1e5bd: 0x6cf7c020, 0x1e5be: 0x6c956c20, 0x1e5bf: 0x6d2eec20,
+-	// Block 0x797, offset 0x1e5c0
+-	0x1e5c0: 0x6ca19020, 0x1e5c1: 0x6c030020, 0x1e5c2: 0x6c118420, 0x1e5c3: 0x6c0c5c20,
+-	0x1e5c4: 0x6c237a20, 0x1e5c5: 0x6cc16220, 0x1e5c6: 0x6c0ac220, 0x1e5c7: 0x6d376420,
+-	0x1e5c8: 0x6d248020, 0x1e5c9: 0x6d060c20, 0x1e5ca: 0x6c576c20, 0x1e5cb: 0x6c0e9e20,
+-	0x1e5cc: 0x6cdb7020, 0x1e5cd: 0x6cff5820, 0x1e5ce: 0x6c8c0a20, 0x1e5cf: 0x6d2ea420,
+-	0x1e5d0: 0x6c33c620, 0x1e5d1: 0x6c8eea20, 0x1e5d2: 0x6ceb6220, 0x1e5d3: 0x6c136a20,
+-	0x1e5d4: 0x6c2d9e20, 0x1e5d5: 0x6c68b220, 0x1e5d6: 0x6ce60c20, 0x1e5d7: 0x6d0f1620,
+-	0x1e5d8: 0x6c958620, 0x1e5d9: 0x6d2dca20, 0x1e5da: 0x6c6df820, 0x1e5db: 0x6d196a20,
+-	0x1e5dc: 0x6d139e20, 0x1e5dd: 0x6ceadc20, 0x1e5de: 0x6cb20020, 0x1e5df: 0x6d397220,
+-	0x1e5e0: 0x6d0f2620, 0x1e5e1: 0x6c902020, 0x1e5e2: 0x6c937220, 0x1e5e3: 0x6ce2e020,
+-	0x1e5e4: 0x6cfda820, 0x1e5e5: 0x6c630220, 0x1e5e6: 0x6cd6ca20, 0x1e5e7: 0x6c719c20,
+-	0x1e5e8: 0x6cf7d020, 0x1e5e9: 0x6c585020, 0x1e5ea: 0x6c84ee20, 0x1e5eb: 0x6c0c6820,
+-	0x1e5ec: 0x6c968c20, 0x1e5ed: 0x6d22ba20, 0x1e5ee: 0x6ceae220, 0x1e5ef: 0x6d09da20,
+-	0x1e5f0: 0x6c1afa20, 0x1e5f1: 0x6cc0d820, 0x1e5f2: 0x6cc63e20, 0x1e5f3: 0x6c0eb220,
+-	0x1e5f4: 0x6c935020, 0x1e5f5: 0x6d29f820, 0x1e5f6: 0x6cd2ba20, 0x1e5f7: 0x6cd89620,
+-	0x1e5f8: 0x6c3fbc20, 0x1e5f9: 0x6c706420, 0x1e5fa: 0x6d404820, 0x1e5fb: 0x6d3ab820,
+-	0x1e5fc: 0x6cebc020, 0x1e5fd: 0x6caa4020, 0x1e5fe: 0x6c643820, 0x1e5ff: 0x6d16d420,
+-	// Block 0x798, offset 0x1e600
+-	0x1e600: 0x6c273c20, 0x1e601: 0x6cfe9020, 0x1e602: 0x6c96b820, 0x1e603: 0x6d19bc20,
+-	0x1e604: 0x6c683a20, 0x1e605: 0x6c572e20, 0x1e606: 0x6c95ee20, 0x1e607: 0x6c4d5c20,
+-	0x1e608: 0x6cb10820, 0x1e609: 0x6c0bf020, 0x1e60a: 0x6c83b420, 0x1e60b: 0x6c1a6c20,
+-	0x1e60c: 0x6d0e5820, 0x1e60d: 0x6d036e20, 0x1e60e: 0x6cbd2820, 0x1e60f: 0x6c75aa20,
+-	0x1e610: 0x6cb5e220, 0x1e611: 0x6cb5e420, 0x1e612: 0x6c78aa20, 0x1e613: 0x6d3c5c20,
+-	0x1e614: 0x6d3f7e20, 0x1e615: 0x6cdaae20, 0x1e616: 0x6c116420, 0x1e617: 0x6cb14a20,
+-	0x1e618: 0x6d364820, 0x1e619: 0x6c7c8220, 0x1e61a: 0x6ccab020, 0x1e61b: 0x6cf4f620,
+-	0x1e61c: 0x6c02da20, 0x1e61d: 0x6c8e7820, 0x1e61e: 0x6cb8fa20, 0x1e61f: 0x6ccd9020,
+-	0x1e620: 0x6c0c1220, 0x1e621: 0x6c955020, 0x1e622: 0x6c233620, 0x1e623: 0x6c15e220,
+-	0x1e624: 0x6d395c20, 0x1e625: 0x6c62c420, 0x1e626: 0x6cd6ac20, 0x1e627: 0x6cfd9420,
+-	0x1e628: 0x6c476e20, 0x1e629: 0x6cefb420, 0x1e62a: 0x6cefd220, 0x1e62b: 0x6cefd420,
+-	0x1e62c: 0x6d214020, 0x1e62d: 0x6c422420, 0x1e62e: 0x6d17d620, 0x1e62f: 0x6c01ec20,
+-	0x1e630: 0x6ce7f220, 0x1e631: 0x6c6bf020, 0x1e632: 0x6c065e20, 0x1e633: 0x6c074e20,
+-	0x1e634: 0x6c220c20, 0x1e635: 0x6ce3c620, 0x1e636: 0x6c2c0020, 0x1e637: 0x6c7a5620,
+-	0x1e638: 0x6c4d2820, 0x1e639: 0x6cbba020, 0x1e63a: 0x6c543020, 0x1e63b: 0x6c7af020,
+-	0x1e63c: 0x6c443220, 0x1e63d: 0x6ce9ee20, 0x1e63e: 0x6c452020, 0x1e63f: 0x6cb12a20,
+-	// Block 0x799, offset 0x1e640
+-	0x1e640: 0x6c0a8220, 0x1e641: 0x6c783c20, 0x1e642: 0x6cb87a20, 0x1e643: 0x6d21ce20,
+-	0x1e644: 0x6cdc1420, 0x1e645: 0x6c90d020, 0x1e646: 0x6c0fb220, 0x1e647: 0x6cff4620,
+-	0x1e648: 0x6c055a20, 0x1e649: 0x6c0fb420, 0x1e64a: 0x6c221420, 0x1e64b: 0x6c7b5e20,
+-	0x1e64c: 0x6c0d9220, 0x1e64d: 0x6ca09420, 0x1e64e: 0x6c8a5220, 0x1e64f: 0x6c90da20,
+-	0x1e650: 0x6cff5220, 0x1e651: 0x6c31fe20, 0x1e652: 0x6d29f220, 0x1e653: 0x6cdc1a20,
+-	0x1e654: 0x6ce3d020, 0x1e655: 0x6c0d9620, 0x1e656: 0x6c7b6020, 0x1e657: 0x6c91a820,
+-	0x1e658: 0x6c42bc20, 0x1e659: 0x6c42c420, 0x1e65a: 0x6cbc5020, 0x1e65b: 0x6c779420,
+-	0x1e65c: 0x6cbc2c20, 0x1e65d: 0x6c819420, 0x1e65e: 0x6ccb0c20, 0x1e65f: 0x6c0bf420,
+-	0x1e660: 0x6c7d6e20, 0x1e661: 0x6c7d7620, 0x1e662: 0x6c2b7620, 0x1e663: 0x6c39da20,
+-	0x1e664: 0x6d04ec20, 0x1e665: 0x6cc47e20, 0x1e666: 0x6c98f820, 0x1e667: 0x6c28a220,
+-	0x1e668: 0x6c7d7e20, 0x1e669: 0x6c0d8620, 0x1e66a: 0x6c383e20, 0x1e66b: 0x6ce5a220,
+-	0x1e66c: 0x6caf8a20, 0x1e66d: 0x6d3e9c20, 0x1e66e: 0x6c384220, 0x1e66f: 0x6cc48620,
+-	0x1e670: 0x6ce41a20, 0x1e671: 0x6c066420, 0x1e672: 0x6c0a4220, 0x1e673: 0x6c990420,
+-	0x1e674: 0x6c3eea20, 0x1e675: 0x6c376a20, 0x1e676: 0x6cc6ba20, 0x1e677: 0x6cc14420,
+-	0x1e678: 0x6c45b620, 0x1e679: 0x6d04f820, 0x1e67a: 0x6c7e1620, 0x1e67b: 0x6c628e20,
+-	0x1e67c: 0x6caed220, 0x1e67d: 0x6d3b6020, 0x1e67e: 0x6cce8e20, 0x1e67f: 0x6cdd4420,
+-	// Block 0x79a, offset 0x1e680
+-	0x1e680: 0x6ce43620, 0x1e681: 0x6c86ba20, 0x1e682: 0x6c0d8a20, 0x1e683: 0x6d3fd420,
+-	0x1e684: 0x6c2baa20, 0x1e685: 0x6caee420, 0x1e686: 0x6cd94820, 0x1e687: 0x6d32f820,
+-	0x1e688: 0x6cc32220, 0x1e689: 0x6d3fd820, 0x1e68a: 0x6cd76220, 0x1e68b: 0x6c660e20,
+-	0x1e68c: 0x6ceb9620, 0x1e68d: 0x6c55f420, 0x1e68e: 0x6c7eae20, 0x1e68f: 0x6c6f8e20,
+-	0x1e690: 0x6cb6a020, 0x1e691: 0x6c889820, 0x1e692: 0x6d320420, 0x1e693: 0x6c0d9420,
+-	0x1e694: 0x6caefa20, 0x1e695: 0x6c96e620, 0x1e696: 0x6cca0e20, 0x1e697: 0x6c979e20,
+-	0x1e698: 0x6c97a020, 0x1e699: 0x6ccbbc20, 0x1e69a: 0x6d061020, 0x1e69b: 0x6c8b7a20,
+-	0x1e69c: 0x6cb95420, 0x1e69d: 0x6cb95220, 0x1e69e: 0x6ca46220, 0x1e69f: 0x6c58cc20,
+-	0x1e6a0: 0x6c7e3220, 0x1e6a1: 0x6ca94220, 0x1e6a2: 0x6c0d9820, 0x1e6a3: 0x6c8b8a20,
+-	0x1e6a4: 0x6cc4fe20, 0x1e6a5: 0x6c310e20, 0x1e6a6: 0x6c313420, 0x1e6a7: 0x6ca53620,
+-	0x1e6a8: 0x6c53dc20, 0x1e6a9: 0x6cf90e20, 0x1e6aa: 0x6c314e20, 0x1e6ab: 0x6c4e7220,
+-	0x1e6ac: 0x6c315420, 0x1e6ad: 0x6c315220, 0x1e6ae: 0x6c6f9620, 0x1e6af: 0x6c170e20,
+-	0x1e6b0: 0x6d249c20, 0x1e6b1: 0x6d24a420, 0x1e6b2: 0x6c43e020, 0x1e6b3: 0x6d0ecc20,
+-	0x1e6b4: 0x6c3f8e20, 0x1e6b5: 0x6cbdb820, 0x1e6b6: 0x6c4a9e20, 0x1e6b7: 0x6d3fdc20,
+-	0x1e6b8: 0x6c8f5820, 0x1e6b9: 0x6c4aa620, 0x1e6ba: 0x6cce2a20, 0x1e6bb: 0x6d248220,
+-	0x1e6bc: 0x6c4ae220, 0x1e6bd: 0x6c9a9620, 0x1e6be: 0x6c623220, 0x1e6bf: 0x6cb61220,
+-	// Block 0x79b, offset 0x1e6c0
+-	0x1e6c0: 0x6c40da20, 0x1e6c1: 0x6c7c9020, 0x1e6c2: 0x6c5cf620, 0x1e6c3: 0x6c038c20,
+-	0x1e6c4: 0x6cb39c20, 0x1e6c5: 0x6c9aa620, 0x1e6c6: 0x6d05c820, 0x1e6c7: 0x6d0dd220,
+-	0x1e6c8: 0x6cff1a20, 0x1e6c9: 0x6c89a220, 0x1e6ca: 0x6d242620, 0x1e6cb: 0x6ce9ca20,
+-	0x1e6cc: 0x6cb53e20, 0x1e6cd: 0x6cee3e20, 0x1e6ce: 0x6c89a820, 0x1e6cf: 0x6cf0f020,
+-	0x1e6d0: 0x6c41bc20, 0x1e6d1: 0x6c1aea20, 0x1e6d2: 0x6cb17420, 0x1e6d3: 0x6c0ab620,
+-	0x1e6d4: 0x6ca09620, 0x1e6d5: 0x6c616220, 0x1e6d6: 0x6d060820, 0x1e6d7: 0x6c1e3e20,
+-	0x1e6d8: 0x6d0e2620, 0x1e6d9: 0x6d2dcc20, 0x1e6da: 0x6d211220, 0x1e6db: 0x6c29c420,
+-	0x1e6dc: 0x6cc57620, 0x1e6dd: 0x6c6b0220, 0x1e6de: 0x6c03f620, 0x1e6df: 0x6c537c20,
+-	0x1e6e0: 0x6ceacc20, 0x1e6e1: 0x6c2e3620, 0x1e6e2: 0x6c614e20, 0x1e6e3: 0x6d073620,
+-	0x1e6e4: 0x6c358020, 0x1e6e5: 0x6c367c20, 0x1e6e6: 0x6ccc1220, 0x1e6e7: 0x6c4f8620,
+-	0x1e6e8: 0x6cea6620, 0x1e6e9: 0x6ca15e20, 0x1e6ea: 0x6c6c0020, 0x1e6eb: 0x6cd07220,
+-	0x1e6ec: 0x6c04d620, 0x1e6ed: 0x6d25a420, 0x1e6ee: 0x6cb01420, 0x1e6ef: 0x6c91d420,
+-	0x1e6f0: 0x6cf1aa20, 0x1e6f1: 0x6c55a620, 0x1e6f2: 0x6c915a20, 0x1e6f3: 0x6d289a20,
+-	0x1e6f4: 0x6c39ae20, 0x1e6f5: 0x6c3b9020, 0x1e6f6: 0x6ca36820, 0x1e6f7: 0x6d1f6c20,
+-	0x1e6f8: 0x6cb15220, 0x1e6f9: 0x6ca1b620, 0x1e6fa: 0x6c517e20, 0x1e6fb: 0x6cf9fa20,
+-	0x1e6fc: 0x6cc14620, 0x1e6fd: 0x6c4e3820, 0x1e6fe: 0x6caf9420, 0x1e6ff: 0x6c8d6220,
+-	// Block 0x79c, offset 0x1e700
+-	0x1e700: 0x6ceb5220, 0x1e701: 0x6c0e9820, 0x1e702: 0x6cc0a020, 0x1e703: 0x6cb2d220,
+-	0x1e704: 0x6c3f0620, 0x1e705: 0x6c0a6420, 0x1e706: 0x6c22a420, 0x1e707: 0x6cf0e020,
+-	0x1e708: 0x6c70ce20, 0x1e709: 0x6c2de220, 0x1e70a: 0x6c03c620, 0x1e70b: 0x6d1f7a20,
+-	0x1e70c: 0x6c4bf020, 0x1e70d: 0x6caf9620, 0x1e70e: 0x6ca70620, 0x1e70f: 0x6d03a020,
+-	0x1e710: 0x6cdf4020, 0x1e711: 0x6c066a20, 0x1e712: 0x6c406020, 0x1e713: 0x6d2c9820,
+-	0x1e714: 0x6c728620, 0x1e715: 0x6c473620, 0x1e716: 0x6cd41e20, 0x1e717: 0x6c309a20,
+-	0x1e718: 0x6c27b020, 0x1e719: 0x6cdeba20, 0x1e71a: 0x6c6b4c20, 0x1e71b: 0x6cd50e20,
+-	0x1e71c: 0x6c548220, 0x1e71d: 0x6cfe0420, 0x1e71e: 0x6c376e20, 0x1e71f: 0x6c01d620,
+-	0x1e720: 0x6cef4820, 0x1e721: 0x6d2fe620, 0x1e722: 0x6d39d020, 0x1e723: 0x6d1b8220,
+-	0x1e724: 0x6c8b4020, 0x1e725: 0x6c962e20, 0x1e726: 0x6ce79420, 0x1e727: 0x6ce3c820,
+-	0x1e728: 0x6d18e220, 0x1e729: 0x6c0e3020, 0x1e72a: 0x6cf03420, 0x1e72b: 0x6c688a20,
+-	0x1e72c: 0x6c7a6820, 0x1e72d: 0x6c4a9220, 0x1e72e: 0x6cfae620, 0x1e72f: 0x6c444820,
+-	0x1e730: 0x6c5b4420, 0x1e731: 0x6c81fc20, 0x1e732: 0x6c40b820, 0x1e733: 0x6c77ca20,
+-	0x1e734: 0x6d055e20, 0x1e735: 0x6c346820, 0x1e736: 0x6c758820, 0x1e737: 0x6ce3a020,
+-	0x1e738: 0x6c9e4620, 0x1e739: 0x6cce9220, 0x1e73a: 0x6d2c9a20, 0x1e73b: 0x6cdd4620,
+-	0x1e73c: 0x6cbd4820, 0x1e73d: 0x6d21d020, 0x1e73e: 0x6ca57820, 0x1e73f: 0x6d30b420,
+-	// Block 0x79d, offset 0x1e740
+-	0x1e740: 0x6c4bf620, 0x1e741: 0x6c452420, 0x1e742: 0x6cdb7c20, 0x1e743: 0x6cf40220,
+-	0x1e744: 0x6cc0a620, 0x1e745: 0x6ccd1820, 0x1e746: 0x6cb42020, 0x1e747: 0x6c596220,
+-	0x1e748: 0x6ce5a820, 0x1e749: 0x6c854020, 0x1e74a: 0x6ccc2420, 0x1e74b: 0x6ccc2620,
+-	0x1e74c: 0x6c77d020, 0x1e74d: 0x6c9b7e20, 0x1e74e: 0x6c1a8e20, 0x1e74f: 0x6c87e620,
+-	0x1e750: 0x6d409820, 0x1e751: 0x6cf94c20, 0x1e752: 0x6d1e6420, 0x1e753: 0x6ca61020,
+-	0x1e754: 0x6d3eba20, 0x1e755: 0x6cb68820, 0x1e756: 0x6d330c20, 0x1e757: 0x6cfe0620,
+-	0x1e758: 0x6ca57a20, 0x1e759: 0x6c216e20, 0x1e75a: 0x6c62c620, 0x1e75b: 0x6c2dec20,
+-	0x1e75c: 0x6cbd0020, 0x1e75d: 0x6c482c20, 0x1e75e: 0x6d38f220, 0x1e75f: 0x6c302420,
+-	0x1e760: 0x6c7f3020, 0x1e761: 0x6c3aec20, 0x1e762: 0x6ca61420, 0x1e763: 0x6d192220,
+-	0x1e764: 0x6c7d8e20, 0x1e765: 0x6c932620, 0x1e766: 0x6c703820, 0x1e767: 0x6c168620,
+-	0x1e768: 0x6c6de620, 0x1e769: 0x6c951220, 0x1e76a: 0x6c8d8a20, 0x1e76b: 0x6d406e20,
+-	0x1e76c: 0x6c849420, 0x1e76d: 0x6c9bf420, 0x1e76e: 0x6d3fde20, 0x1e76f: 0x6d375220,
+-	0x1e770: 0x6ca70c20, 0x1e771: 0x6c570420, 0x1e772: 0x6d24c420, 0x1e773: 0x6c2cb620,
+-	0x1e774: 0x6cd20c20, 0x1e775: 0x6cd02c20, 0x1e776: 0x6c5d1620, 0x1e777: 0x6ce3ac20,
+-	0x1e778: 0x6c544020, 0x1e779: 0x6d03b220, 0x1e77a: 0x6d39e420, 0x1e77b: 0x6c7ebc20,
+-	0x1e77c: 0x6d3fe020, 0x1e77d: 0x6d2b6820, 0x1e77e: 0x6c0b1820, 0x1e77f: 0x6c0b1a20,
+-	// Block 0x79e, offset 0x1e780
+-	0x1e780: 0x6c596420, 0x1e781: 0x6cc32a20, 0x1e782: 0x6d2b7020, 0x1e783: 0x6ceeca20,
+-	0x1e784: 0x6ceecc20, 0x1e785: 0x6d21e620, 0x1e786: 0x6c212420, 0x1e787: 0x6cc77020,
+-	0x1e788: 0x6c2f0a20, 0x1e789: 0x6c5a2e20, 0x1e78a: 0x6c893220, 0x1e78b: 0x6d0e0620,
+-	0x1e78c: 0x6cbfda20, 0x1e78d: 0x6cbfdc20, 0x1e78e: 0x6c661020, 0x1e78f: 0x6c089c20,
+-	0x1e790: 0x6c36dc20, 0x1e791: 0x6d0ff220, 0x1e792: 0x6c409020, 0x1e793: 0x6cc9d820,
+-	0x1e794: 0x6c41fa20, 0x1e795: 0x6cf98220, 0x1e796: 0x6ceb9820, 0x1e797: 0x6c55fa20,
+-	0x1e798: 0x6cd42420, 0x1e799: 0x6cc93420, 0x1e79a: 0x6d08d620, 0x1e79b: 0x6cf17220,
+-	0x1e79c: 0x6cba8820, 0x1e79d: 0x6c508020, 0x1e79e: 0x6cf39020, 0x1e79f: 0x6c39b420,
+-	0x1e7a0: 0x6ccad620, 0x1e7a1: 0x6c8ee420, 0x1e7a2: 0x6c96aa20, 0x1e7a3: 0x6cd29620,
+-	0x1e7a4: 0x6cd21420, 0x1e7a5: 0x6c493a20, 0x1e7a6: 0x6d3ec220, 0x1e7a7: 0x6ce2d020,
+-	0x1e7a8: 0x6cde2620, 0x1e7a9: 0x6d117a20, 0x1e7aa: 0x6c35a820, 0x1e7ab: 0x6d1e0820,
+-	0x1e7ac: 0x6cb9e420, 0x1e7ad: 0x6cb6a420, 0x1e7ae: 0x6cf17420, 0x1e7af: 0x6cc93820,
+-	0x1e7b0: 0x6cd0ce20, 0x1e7b1: 0x6c889e20, 0x1e7b2: 0x6c028e20, 0x1e7b3: 0x6c823420,
+-	0x1e7b4: 0x6c5b0c20, 0x1e7b5: 0x6c9fdc20, 0x1e7b6: 0x6c62e620, 0x1e7b7: 0x6ce5b620,
+-	0x1e7b8: 0x6cc16820, 0x1e7b9: 0x6c654a20, 0x1e7ba: 0x6cd03020, 0x1e7bb: 0x6c97a820,
+-	0x1e7bc: 0x6cf7c620, 0x1e7bd: 0x6cc0aa20, 0x1e7be: 0x6c0c9c20, 0x1e7bf: 0x6c62e820,
+-	// Block 0x79f, offset 0x1e7c0
+-	0x1e7c0: 0x6c62d820, 0x1e7c1: 0x6d3a3c20, 0x1e7c2: 0x6c679a20, 0x1e7c3: 0x6d051420,
+-	0x1e7c4: 0x6d3b9c20, 0x1e7c5: 0x6d1de620, 0x1e7c6: 0x6d2eee20, 0x1e7c7: 0x6c776420,
+-	0x1e7c8: 0x6d093620, 0x1e7c9: 0x6c0cce20, 0x1e7ca: 0x6d248a20, 0x1e7cb: 0x6cc16a20,
+-	0x1e7cc: 0x6cfe6e20, 0x1e7cd: 0x6c0ea220, 0x1e7ce: 0x6c697820, 0x1e7cf: 0x6d0a5a20,
+-	0x1e7d0: 0x6cdb7220, 0x1e7d1: 0x6c5a3a20, 0x1e7d2: 0x6d420020, 0x1e7d3: 0x6ccdee20,
+-	0x1e7d4: 0x6ccdf020, 0x1e7d5: 0x6c387620, 0x1e7d6: 0x6c4bae20, 0x1e7d7: 0x6c8c0c20,
+-	0x1e7d8: 0x6d0a5c20, 0x1e7d9: 0x6c9e8620, 0x1e7da: 0x6cf82c20, 0x1e7db: 0x6d2bbe20,
+-	0x1e7dc: 0x6cfe7820, 0x1e7dd: 0x6c3c0620, 0x1e7de: 0x6c494620, 0x1e7df: 0x6c548a20,
+-	0x1e7e0: 0x6c7b4e20, 0x1e7e1: 0x6d2b7220, 0x1e7e2: 0x6ccada20, 0x1e7e3: 0x6d2dd020,
+-	0x1e7e4: 0x6c420420, 0x1e7e5: 0x6c4bb220, 0x1e7e6: 0x6d1d6020, 0x1e7e7: 0x6c855220,
+-	0x1e7e8: 0x6c16da20, 0x1e7e9: 0x6c836e20, 0x1e7ea: 0x6cd63a20, 0x1e7eb: 0x6c011020,
+-	0x1e7ec: 0x6cc7f220, 0x1e7ed: 0x6c62fe20, 0x1e7ee: 0x6d076e20, 0x1e7ef: 0x6c56f220,
+-	0x1e7f0: 0x6cd63c20, 0x1e7f1: 0x6c87bc20, 0x1e7f2: 0x6c8b8e20, 0x1e7f3: 0x6c87c620,
+-	0x1e7f4: 0x6c9f2020, 0x1e7f5: 0x6d31a620, 0x1e7f6: 0x6cfe1220, 0x1e7f7: 0x6c370220,
+-	0x1e7f8: 0x6c91ac20, 0x1e7f9: 0x6c49ca20, 0x1e7fa: 0x6c84f020, 0x1e7fb: 0x6cfb1c20,
+-	0x1e7fc: 0x6d20ce20, 0x1e7fd: 0x6c29c220, 0x1e7fe: 0x6c613a20, 0x1e7ff: 0x6d1f4220,
+-	// Block 0x7a0, offset 0x1e800
+-	0x1e800: 0x6cea5c20, 0x1e801: 0x6c91c020, 0x1e802: 0x6c39ac20, 0x1e803: 0x6c035420,
+-	0x1e804: 0x6c515220, 0x1e805: 0x6c03be20, 0x1e806: 0x6cb2ba20, 0x1e807: 0x6ca70020,
+-	0x1e808: 0x6c915620, 0x1e809: 0x6d1f5220, 0x1e80a: 0x6d2c8020, 0x1e80b: 0x6c401420,
+-	0x1e80c: 0x6c03c020, 0x1e80d: 0x6c065620, 0x1e80e: 0x6c547620, 0x1e80f: 0x6cb00220,
+-	0x1e810: 0x6cdf2c20, 0x1e811: 0x6c4a8220, 0x1e812: 0x6c6b1620, 0x1e813: 0x6c77b420,
+-	0x1e814: 0x6ceffa20, 0x1e815: 0x6c376420, 0x1e816: 0x6ce77620, 0x1e817: 0x6d2b6220,
+-	0x1e818: 0x6c547c20, 0x1e819: 0x6c7b2e20, 0x1e81a: 0x6c625a20, 0x1e81b: 0x6c686220,
+-	0x1e81c: 0x6cfac620, 0x1e81d: 0x6d2c8820, 0x1e81e: 0x6cfdfa20, 0x1e81f: 0x6d0a2c20,
+-	0x1e820: 0x6c451e20, 0x1e821: 0x6c843820, 0x1e822: 0x6c884620, 0x1e823: 0x6c64ea20,
+-	0x1e824: 0x6c852c20, 0x1e825: 0x6cd28820, 0x1e826: 0x6ce5a420, 0x1e827: 0x6c4be820,
+-	0x1e828: 0x6ccc1620, 0x1e829: 0x6c595020, 0x1e82a: 0x6c758020, 0x1e82b: 0x6c626e20,
+-	0x1e82c: 0x6d1e5a20, 0x1e82d: 0x6cbe5820, 0x1e82e: 0x6c8d6420, 0x1e82f: 0x6cb65820,
+-	0x1e830: 0x6d406820, 0x1e831: 0x6c3a1c20, 0x1e832: 0x6c7d8620, 0x1e833: 0x6c168020,
+-	0x1e834: 0x6c482a20, 0x1e835: 0x6ca60a20, 0x1e836: 0x6ca70820, 0x1e837: 0x6c2de420,
+-	0x1e838: 0x6c6dd420, 0x1e839: 0x6cd02420, 0x1e83a: 0x6cd20020, 0x1e83b: 0x6d3e9e20,
+-	0x1e83c: 0x6c3bf820, 0x1e83d: 0x6c2ef620, 0x1e83e: 0x6c089420, 0x1e83f: 0x6c16ce20,
+-	// Block 0x7a1, offset 0x1e840
+-	0x1e840: 0x6ce39020, 0x1e841: 0x6cf16c20, 0x1e842: 0x6ceec420, 0x1e843: 0x6cc9d220,
+-	0x1e844: 0x6c36c020, 0x1e845: 0x6cbfd220, 0x1e846: 0x6c407020, 0x1e847: 0x6c5a1620,
+-	0x1e848: 0x6cc31e20, 0x1e849: 0x6c678a20, 0x1e84a: 0x6c0b1220, 0x1e84b: 0x6ccac820,
+-	0x1e84c: 0x6c028020, 0x1e84d: 0x6cb68020, 0x1e84e: 0x6cde1e20, 0x1e84f: 0x6c493220,
+-	0x1e850: 0x6d116620, 0x1e851: 0x6cad1220, 0x1e852: 0x6c651e20, 0x1e853: 0x6c823020,
+-	0x1e854: 0x6c0c9a20, 0x1e855: 0x6d093420, 0x1e856: 0x6c0cc820, 0x1e857: 0x6c979820,
+-	0x1e858: 0x6c9fd820, 0x1e859: 0x6d1dd220, 0x1e85a: 0x6cf10420, 0x1e85b: 0x6cf7b620,
+-	0x1e85c: 0x6c4ba020, 0x1e85d: 0x6ccde220, 0x1e85e: 0x6c8c0620, 0x1e85f: 0x6d41fe20,
+-	0x1e860: 0x6c56e420, 0x1e861: 0x6c41fe20, 0x1e862: 0x6c854a20, 0x1e863: 0x6d2dc820,
+-	0x1e864: 0x6c496e20, 0x1e865: 0x6ca79a20, 0x1e866: 0x6d15f420, 0x1e867: 0x6c3ebc20,
+-	0x1e868: 0x6c864220, 0x1e869: 0x6c6f7e20, 0x1e86a: 0x6c102220, 0x1e86b: 0x6d0e8e20,
+-	0x1e86c: 0x6c3f5020, 0x1e86d: 0x6c2dd020, 0x1e86e: 0x6c5efc20, 0x1e86f: 0x6c3cea20,
+-	0x1e870: 0x6cc83620, 0x1e871: 0x6c41ac20, 0x1e872: 0x6cd1e820, 0x1e873: 0x6c3cee20,
+-	0x1e874: 0x6ca01420, 0x1e875: 0x6c060c20, 0x1e876: 0x6d250820, 0x1e877: 0x6d341420,
+-	0x1e878: 0x6c56c420, 0x1e879: 0x6cbd9a20, 0x1e87a: 0x6c3d9820, 0x1e87b: 0x6c049620,
+-	0x1e87c: 0x6cf1ac20, 0x1e87d: 0x6c64ec20, 0x1e87e: 0x6cd1f620, 0x1e87f: 0x6d23e420,
+-	// Block 0x7a2, offset 0x1e880
+-	0x1e880: 0x6c3d3220, 0x1e881: 0x6d10b620, 0x1e882: 0x6c74b020, 0x1e883: 0x6c74b220,
+-	0x1e884: 0x6cb06c20, 0x1e885: 0x6c583020, 0x1e886: 0x6d326820, 0x1e887: 0x6c061220,
+-	0x1e888: 0x6d0eb420, 0x1e889: 0x6d0af620, 0x1e88a: 0x6d336420, 0x1e88b: 0x6c399c20,
+-	0x1e88c: 0x6c3cf020, 0x1e88d: 0x6cf1ae20, 0x1e88e: 0x6cab5220, 0x1e88f: 0x6c279220,
+-	0x1e890: 0x6c43ac20, 0x1e891: 0x6cc7ca20, 0x1e892: 0x6c8d6620, 0x1e893: 0x6c9eea20,
+-	0x1e894: 0x6c3eec20, 0x1e895: 0x6ceb5420, 0x1e896: 0x6c9f7c20, 0x1e897: 0x6c869620,
+-	0x1e898: 0x6c0b5020, 0x1e899: 0x6d36fc20, 0x1e89a: 0x6c43ae20, 0x1e89b: 0x6d251420,
+-	0x1e89c: 0x6c227620, 0x1e89d: 0x6cc1cc20, 0x1e89e: 0x6cff1c20, 0x1e89f: 0x6c1adc20,
+-	0x1e8a0: 0x6c28c020, 0x1e8a1: 0x6c70d020, 0x1e8a2: 0x6d11d620, 0x1e8a3: 0x6c473820,
+-	0x1e8a4: 0x6c301820, 0x1e8a5: 0x6d240020, 0x1e8a6: 0x6d0f6e20, 0x1e8a7: 0x6cc73a20,
+-	0x1e8a8: 0x6d0afe20, 0x1e8a9: 0x6ce60420, 0x1e8aa: 0x6d240220, 0x1e8ab: 0x6ce54420,
+-	0x1e8ac: 0x6d1bf820, 0x1e8ad: 0x6c331620, 0x1e8ae: 0x6cf38620, 0x1e8af: 0x6c377020,
+-	0x1e8b0: 0x6c487c20, 0x1e8b1: 0x6c00d420, 0x1e8b2: 0x6d341a20, 0x1e8b3: 0x6d0ed620,
+-	0x1e8b4: 0x6c527a20, 0x1e8b5: 0x6cff2c20, 0x1e8b6: 0x6c63f020, 0x1e8b7: 0x6c8b4220,
+-	0x1e8b8: 0x6d39d220, 0x1e8b9: 0x6d0fe220, 0x1e8ba: 0x6ce39220, 0x1e8bb: 0x6c539220,
+-	0x1e8bc: 0x6c963020, 0x1e8bd: 0x6cc7da20, 0x1e8be: 0x6ca1f220, 0x1e8bf: 0x6c43b820,
+-	// Block 0x7a3, offset 0x1e8c0
+-	0x1e8c0: 0x6cc57e20, 0x1e8c1: 0x6c688c20, 0x1e8c2: 0x6d050220, 0x1e8c3: 0x6d38ba20,
+-	0x1e8c4: 0x6d341c20, 0x1e8c5: 0x6c963220, 0x1e8c6: 0x6c528c20, 0x1e8c7: 0x6ca77620,
+-	0x1e8c8: 0x6c370820, 0x1e8c9: 0x6c944620, 0x1e8ca: 0x6c63f220, 0x1e8cb: 0x6c62b420,
+-	0x1e8cc: 0x6ce90420, 0x1e8cd: 0x6c583820, 0x1e8ce: 0x6ceb9220, 0x1e8cf: 0x6c104a20,
+-	0x1e8d0: 0x6cf40420, 0x1e8d1: 0x6c730820, 0x1e8d2: 0x6d244820, 0x1e8d3: 0x6c0f9c20,
+-	0x1e8d4: 0x6c75f620, 0x1e8d5: 0x6d0aae20, 0x1e8d6: 0x6c089220, 0x1e8d7: 0x6cf71020,
+-	0x1e8d8: 0x6c75f820, 0x1e8d9: 0x6c717620, 0x1e8da: 0x6ce87e20, 0x1e8db: 0x6c6de420,
+-	0x1e8dc: 0x6ce3a220, 0x1e8dd: 0x6c359020, 0x1e8de: 0x6c359220, 0x1e8df: 0x6c7bcc20,
+-	0x1e8e0: 0x6c55e820, 0x1e8e1: 0x6cf48a20, 0x1e8e2: 0x6cd02a20, 0x1e8e3: 0x6c7f6620,
+-	0x1e8e4: 0x6c69ee20, 0x1e8e5: 0x6cacca20, 0x1e8e6: 0x6c932820, 0x1e8e7: 0x6cb02c20,
+-	0x1e8e8: 0x6cd51a20, 0x1e8e9: 0x6c3f2220, 0x1e8ea: 0x6c015e20, 0x1e8eb: 0x6d3dd020,
+-	0x1e8ec: 0x6caef420, 0x1e8ed: 0x6cbdba20, 0x1e8ee: 0x6cb94220, 0x1e8ef: 0x6c06be20,
+-	0x1e8f0: 0x6c2dee20, 0x1e8f1: 0x6c932a20, 0x1e8f2: 0x6cc42c20, 0x1e8f3: 0x6c652a20,
+-	0x1e8f4: 0x6c718420, 0x1e8f5: 0x6ce92a20, 0x1e8f6: 0x6d0b0420, 0x1e8f7: 0x6d252020,
+-	0x1e8f8: 0x6cb68e20, 0x1e8f9: 0x6c849620, 0x1e8fa: 0x6d138620, 0x1e8fb: 0x6d3c7020,
+-	0x1e8fc: 0x6c798e20, 0x1e8fd: 0x6c352020, 0x1e8fe: 0x6c7d9020, 0x1e8ff: 0x6cd11c20,
+-	// Block 0x7a4, offset 0x1e900
+-	0x1e900: 0x6cb69020, 0x1e901: 0x6c6de820, 0x1e902: 0x6d192420, 0x1e903: 0x6d192620,
+-	0x1e904: 0x6c6dea20, 0x1e905: 0x6d3ebc20, 0x1e906: 0x6c7f3220, 0x1e907: 0x6c302620,
+-	0x1e908: 0x6cb55020, 0x1e909: 0x6c219420, 0x1e90a: 0x6c44e620, 0x1e90b: 0x6c70e020,
+-	0x1e90c: 0x6c74f620, 0x1e90d: 0x6d199620, 0x1e90e: 0x6d422420, 0x1e90f: 0x6c5f8a20,
+-	0x1e910: 0x6cd62c20, 0x1e911: 0x6d1c1420, 0x1e912: 0x6c1c9220, 0x1e913: 0x6c9e8220,
+-	0x1e914: 0x6cc77220, 0x1e915: 0x6c016220, 0x1e916: 0x6cbfe020, 0x1e917: 0x6ce3ae20,
+-	0x1e918: 0x6c55fc20, 0x1e919: 0x6ce3b020, 0x1e91a: 0x6c36e020, 0x1e91b: 0x6c6a4420,
+-	0x1e91c: 0x6c991220, 0x1e91d: 0x6c3f2620, 0x1e91e: 0x6c212820, 0x1e91f: 0x6ce90820,
+-	0x1e920: 0x6d0e0820, 0x1e921: 0x6c51a020, 0x1e922: 0x6d25d020, 0x1e923: 0x6cb10620,
+-	0x1e924: 0x6c7d9620, 0x1e925: 0x6c9a3e20, 0x1e926: 0x6c55fe20, 0x1e927: 0x6d1c1620,
+-	0x1e928: 0x6c204820, 0x1e929: 0x6cf54c20, 0x1e92a: 0x6c718a20, 0x1e92b: 0x6c309c20,
+-	0x1e92c: 0x6c124420, 0x1e92d: 0x6c39e020, 0x1e92e: 0x6c520a20, 0x1e92f: 0x6d1c3620,
+-	0x1e930: 0x6d25d220, 0x1e931: 0x6cfb0620, 0x1e932: 0x6cf24620, 0x1e933: 0x6cd21620,
+-	0x1e934: 0x6c520c20, 0x1e935: 0x6c1eca20, 0x1e936: 0x6ce16820, 0x1e937: 0x6cfa1a20,
+-	0x1e938: 0x6cc93a20, 0x1e939: 0x6c8ee620, 0x1e93a: 0x6c60fe20, 0x1e93b: 0x6c474c20,
+-	0x1e93c: 0x6c654620, 0x1e93d: 0x6cdd0420, 0x1e93e: 0x6c4f3a20, 0x1e93f: 0x6c228020,
+-	// Block 0x7a5, offset 0x1e940
+-	0x1e940: 0x6c228220, 0x1e941: 0x6d195420, 0x1e942: 0x6d124820, 0x1e943: 0x6d0f0220,
+-	0x1e944: 0x6c5f9a20, 0x1e945: 0x6c875c20, 0x1e946: 0x6ce4d220, 0x1e947: 0x6c7a0e20,
+-	0x1e948: 0x6ce30620, 0x1e949: 0x6ce30820, 0x1e94a: 0x6d195620, 0x1e94b: 0x6ce90c20,
+-	0x1e94c: 0x6c96ac20, 0x1e94d: 0x6c68ae20, 0x1e94e: 0x6c42f420, 0x1e94f: 0x6ce4d420,
+-	0x1e950: 0x6c18fe20, 0x1e951: 0x6c610020, 0x1e952: 0x6ce97620, 0x1e953: 0x6d311020,
+-	0x1e954: 0x6c029020, 0x1e955: 0x6d11e620, 0x1e956: 0x6d143c20, 0x1e957: 0x6cab6620,
+-	0x1e958: 0x6c1c9820, 0x1e959: 0x6d376e20, 0x1e95a: 0x6c8f5c20, 0x1e95b: 0x6d1de820,
+-	0x1e95c: 0x6c937020, 0x1e95d: 0x6c0aca20, 0x1e95e: 0x6cd6b820, 0x1e95f: 0x6d3de420,
+-	0x1e960: 0x6d21fa20, 0x1e961: 0x6cf41020, 0x1e962: 0x6c752620, 0x1e963: 0x6d1ab620,
+-	0x1e964: 0x6ce3b820, 0x1e965: 0x6cd85620, 0x1e966: 0x6c68b420, 0x1e967: 0x6d196c20,
+-	0x1e968: 0x6c577020, 0x1e969: 0x6c0ad020, 0x1e96a: 0x6d1c4620, 0x1e96b: 0x6cdb7420,
+-	0x1e96c: 0x6c5a3c20, 0x1e96d: 0x6c38f820, 0x1e96e: 0x6c68b620, 0x1e96f: 0x6c8a5a20,
+-	0x1e970: 0x6d0f1820, 0x1e971: 0x6c42f820, 0x1e972: 0x6c704020, 0x1e973: 0x6cfbda20,
+-	0x1e974: 0x6cfbdc20, 0x1e975: 0x6ce90e20, 0x1e976: 0x6c971c20, 0x1e977: 0x6d420220,
+-	0x1e978: 0x6d248e20, 0x1e979: 0x6d1c4a20, 0x1e97a: 0x6c934220, 0x1e97b: 0x6ce97820,
+-	0x1e97c: 0x6cfbde20, 0x1e97d: 0x6d092e20, 0x1e97e: 0x6d197820, 0x1e97f: 0x6cb0e020,
+-	// Block 0x7a6, offset 0x1e980
+-	0x1e980: 0x6c1efc20, 0x1e981: 0x6c958c20, 0x1e982: 0x6cf75c20, 0x1e983: 0x6d15a220,
+-	0x1e984: 0x6c5fb220, 0x1e985: 0x6d2b2c20, 0x1e986: 0x6d220820, 0x1e987: 0x6d2dd220,
+-	0x1e988: 0x6d13a420, 0x1e989: 0x6d0ffa20, 0x1e98a: 0x6cb0e220, 0x1e98b: 0x6ca94420,
+-	0x1e98c: 0x6c56f420, 0x1e98d: 0x6c9cd220, 0x1e98e: 0x6d1c5020, 0x1e98f: 0x6c9bc420,
+-	0x1e990: 0x6c2bc220, 0x1e991: 0x6d273620, 0x1e992: 0x6d249020, 0x1e993: 0x6c831a20,
+-	0x1e994: 0x6c068620, 0x1e995: 0x6c91ae20, 0x1e996: 0x6c521220, 0x1e997: 0x6c902220,
+-	0x1e998: 0x6cd6cc20, 0x1e999: 0x6d274020, 0x1e99a: 0x6d1c5220, 0x1e99b: 0x6c49cc20,
+-	0x1e99c: 0x6cc23820, 0x1e99d: 0x6c84f220, 0x1e99e: 0x6c948820, 0x1e99f: 0x6ca78a20,
+-	0x1e9a0: 0x6c6f5a20, 0x1e9a1: 0x6c5e8820, 0x1e9a2: 0x6d24ca20, 0x1e9a3: 0x6c9fea20,
+-	0x1e9a4: 0x6cd1a020, 0x1e9a5: 0x6cab3620, 0x1e9a6: 0x6d0ada20, 0x1e9a7: 0x6c122620,
+-	0x1e9a8: 0x6c05ec20, 0x1e9a9: 0x6d322a20, 0x1e9aa: 0x6c470420, 0x1e9ab: 0x6c2fec20,
+-	0x1e9ac: 0x6c914a20, 0x1e9ad: 0x6d0ae420, 0x1e9ae: 0x6cfeae20, 0x1e9af: 0x6d0f5820,
+-	0x1e9b0: 0x6c8cda20, 0x1e9b1: 0x6c1aa620, 0x1e9b2: 0x6cc18220, 0x1e9b3: 0x6d24d820,
+-	0x1e9b4: 0x6d090420, 0x1e9b5: 0x6ceb1220, 0x1e9b6: 0x6cd7de20, 0x1e9b7: 0x6d361220,
+-	0x1e9b8: 0x6c375620, 0x1e9b9: 0x6c485820, 0x1e9ba: 0x6d04d220, 0x1e9bb: 0x6c526620,
+-	0x1e9bc: 0x6d388020, 0x1e9bd: 0x6c438a20, 0x1e9be: 0x6c943820, 0x1e9bf: 0x6c534820,
+-	// Block 0x7a7, offset 0x1e9c0
+-	0x1e9c0: 0x6cf3ce20, 0x1e9c1: 0x6c0f0c20, 0x1e9c2: 0x6c83dc20, 0x1e9c3: 0x6c72f820,
+-	0x1e9c4: 0x6c479a20, 0x1e9c5: 0x6c357220, 0x1e9c6: 0x6d236220, 0x1e9c7: 0x6cfb6820,
+-	0x1e9c8: 0x6ce33a20, 0x1e9c9: 0x6cf45420, 0x1e9ca: 0x6cc42a20, 0x1e9cb: 0x6c9e7a20,
+-	0x1e9cc: 0x6c013e20, 0x1e9cd: 0x6c7d7820, 0x1e9ce: 0x6c06b420, 0x1e9cf: 0x6caeb020,
+-	0x1e9d0: 0x6cb8fc20, 0x1e9d1: 0x6c219220, 0x1e9d2: 0x6c44d620, 0x1e9d3: 0x6d250220,
+-	0x1e9d4: 0x6cdadc20, 0x1e9d5: 0x6c558e20, 0x1e9d6: 0x6c516020, 0x1e9d7: 0x6c367e20,
+-	0x1e9d8: 0x6c47bc20, 0x1e9d9: 0x6cbfba20, 0x1e9da: 0x6c225a20, 0x1e9db: 0x6c9a1e20,
+-	0x1e9dc: 0x6cf51220, 0x1e9dd: 0x6d187820, 0x1e9de: 0x6d122020, 0x1e9df: 0x6cf23820,
+-	0x1e9e0: 0x6c8e9420, 0x1e9e1: 0x6c60a020, 0x1e9e2: 0x6d187a20, 0x1e9e3: 0x6c64ee20,
+-	0x1e9e4: 0x6c51e220, 0x1e9e5: 0x6d141c20, 0x1e9e6: 0x6d1bfa20, 0x1e9e7: 0x6d310420,
+-	0x1e9e8: 0x6c8f4420, 0x1e9e9: 0x6c8a2e20, 0x1e9ea: 0x6c689220, 0x1e9eb: 0x6c703020,
+-	0x1e9ec: 0x6d242a20, 0x1e9ed: 0x6c931820, 0x1e9ee: 0x6c58b420, 0x1e9ef: 0x6d2db020,
+-	0x1e9f0: 0x6d1c0c20, 0x1e9f1: 0x6c56da20, 0x1e9f2: 0x6c9b8020, 0x1e9f3: 0x6c49c020,
+-	0x1e9f4: 0x6cd6ba20, 0x1e9f5: 0x6c91bc20, 0x1e9f6: 0x6c6c5820, 0x1e9f7: 0x6c8d6820,
+-	0x1e9f8: 0x6c661220, 0x1e9f9: 0x6cfbd020, 0x1e9fa: 0x6c25fe20, 0x1e9fb: 0x6c662620,
+-	0x1e9fc: 0x6c664020, 0x1e9fd: 0x6d0d1a20, 0x1e9fe: 0x6c25f420, 0x1e9ff: 0x6c924c20,
+-	// Block 0x7a8, offset 0x1ea00
+-	0x1ea00: 0x6d1eaa20, 0x1ea01: 0x6c241620, 0x1ea02: 0x6c614c20, 0x1ea03: 0x6cad6820,
+-	0x1ea04: 0x6c241820, 0x1ea05: 0x6cad6c20, 0x1ea06: 0x6d3b3220, 0x1ea07: 0x6c758220,
+-	0x1ea08: 0x6d3a8220, 0x1ea09: 0x6c651020, 0x1ea0a: 0x6c9c8420, 0x1ea0b: 0x6c9c8620,
+-	0x1ea0c: 0x6d22a820, 0x1ea0d: 0x6c8ec820, 0x1ea0e: 0x6c18f420, 0x1ea0f: 0x6c758a20,
+-	0x1ea10: 0x6c8bf620, 0x1ea11: 0x6ca61a20, 0x1ea12: 0x6cb69420, 0x1ea13: 0x6c932c20,
+-	0x1ea14: 0x6c703a20, 0x1ea15: 0x6c758c20, 0x1ea16: 0x6c6df020, 0x1ea17: 0x6c871420,
+-	0x1ea18: 0x6cfd9820, 0x1ea19: 0x6cfbd220, 0x1ea1a: 0x6c639020, 0x1ea1b: 0x6c9ca620,
+-	0x1ea1c: 0x6c875e20, 0x1ea1d: 0x6ccf8e20, 0x1ea1e: 0x6d2ef220, 0x1ea1f: 0x6c8c1020,
+-	0x1ea20: 0x6c6dfa20, 0x1ea21: 0x6cb6b620, 0x1ea22: 0x6c8de220, 0x1ea23: 0x6d0d2820,
+-	0x1ea24: 0x6c241a20, 0x1ea25: 0x6c973220, 0x1ea26: 0x6c972620, 0x1ea27: 0x6c516220,
+-	0x1ea28: 0x6c17a620, 0x1ea29: 0x6c3d9c20, 0x1ea2a: 0x6c9e5e20, 0x1ea2b: 0x6c9e3e20,
+-	0x1ea2c: 0x6c3da820, 0x1ea2d: 0x6cad9c20, 0x1ea2e: 0x6cc27e20, 0x1ea2f: 0x6cc14c20,
+-	0x1ea30: 0x6ca1f420, 0x1ea31: 0x6c3db020, 0x1ea32: 0x6cfd2c20, 0x1ea33: 0x6c7f3420,
+-	0x1ea34: 0x6cc15820, 0x1ea35: 0x6c9e6a20, 0x1ea36: 0x6c1ca620, 0x1ea37: 0x6c3c9420,
+-	0x1ea38: 0x6c3d6e20, 0x1ea39: 0x6cc14020, 0x1ea3a: 0x6c9e6420, 0x1ea3b: 0x6c966820,
+-	0x1ea3c: 0x6c99c420, 0x1ea3d: 0x6ca07020, 0x1ea3e: 0x6c5af020, 0x1ea3f: 0x6ca1b820,
+-	// Block 0x7a9, offset 0x1ea40
+-	0x1ea40: 0x6d407020, 0x1ea41: 0x6caaae20, 0x1ea42: 0x6c3bb420, 0x1ea43: 0x6c59ce20,
+-	0x1ea44: 0x6c59b820, 0x1ea45: 0x6c6c5a20, 0x1ea46: 0x6c49f620, 0x1ea47: 0x6ce47420,
+-	0x1ea48: 0x6ce81c20, 0x1ea49: 0x6c538c20, 0x1ea4a: 0x6c57c820, 0x1ea4b: 0x6c7c0820,
+-	0x1ea4c: 0x6c539a20, 0x1ea4d: 0x6cd56020, 0x1ea4e: 0x6c843a20, 0x1ea4f: 0x6ca70a20,
+-	0x1ea50: 0x6c1af220, 0x1ea51: 0x6c521c20, 0x1ea52: 0x6c521a20, 0x1ea53: 0x6d187c20,
+-	0x1ea54: 0x6cb9ce20, 0x1ea55: 0x6c284820, 0x1ea56: 0x6cf8ea20, 0x1ea57: 0x6cea2e20,
+-	0x1ea58: 0x6ca17020, 0x1ea59: 0x6ca15020, 0x1ea5a: 0x6cb9d220, 0x1ea5b: 0x6c279e20,
+-	0x1ea5c: 0x6c1f8420, 0x1ea5d: 0x6d1ff620, 0x1ea5e: 0x6c2d2e20, 0x1ea5f: 0x6d143020,
+-	0x1ea60: 0x6cfa1220, 0x1ea61: 0x6d0df220, 0x1ea62: 0x6cc15a20, 0x1ea63: 0x6c9a7220,
+-	0x1ea64: 0x6d0e0a20, 0x1ea65: 0x6cbe9420, 0x1ea66: 0x6d271220, 0x1ea67: 0x6c84a220,
+-	0x1ea68: 0x6c293820, 0x1ea69: 0x6c31ec20, 0x1ea6a: 0x6c11e820, 0x1ea6b: 0x6d0c4820,
+-	0x1ea6c: 0x6d0d0820, 0x1ea6d: 0x6d0e1420, 0x1ea6e: 0x6c285820, 0x1ea6f: 0x6c01e420,
+-	0x1ea70: 0x6d320a20, 0x1ea71: 0x6c27ac20, 0x1ea72: 0x6c11ea20, 0x1ea73: 0x6d144020,
+-	0x1ea74: 0x6c9a4620, 0x1ea75: 0x6d2e4220, 0x1ea76: 0x6d0e3420, 0x1ea77: 0x6c320e20,
+-	0x1ea78: 0x6c91b020, 0x1ea79: 0x6d353420, 0x1ea7a: 0x6c3bc220, 0x1ea7b: 0x6c3f1020,
+-	0x1ea7c: 0x6c3f9820, 0x1ea7d: 0x6c9e3220, 0x1ea7e: 0x6c9e0a20, 0x1ea7f: 0x6d25bc20,
+-	// Block 0x7aa, offset 0x1ea80
+-	0x1ea80: 0x6c247220, 0x1ea81: 0x6cc28420, 0x1ea82: 0x6c178820, 0x1ea83: 0x6cebfc20,
+-	0x1ea84: 0x6d39e620, 0x1ea85: 0x6d342a20, 0x1ea86: 0x6c9bbe20, 0x1ea87: 0x6c029420,
+-	0x1ea88: 0x6c0cd020, 0x1ea89: 0x6ceb6a20, 0x1ea8a: 0x6c0ada20, 0x1ea8b: 0x6d257220,
+-	0x1ea8c: 0x6c176620, 0x1ea8d: 0x6ceb5e20, 0x1ea8e: 0x6c2f7420, 0x1ea8f: 0x6c9d7420,
+-	0x1ea90: 0x6ca3d020, 0x1ea91: 0x6c2f7c20, 0x1ea92: 0x6d3e8420, 0x1ea93: 0x6c47a620,
+-	0x1ea94: 0x6c47a820, 0x1ea95: 0x6c302220, 0x1ea96: 0x6c3ba420, 0x1ea97: 0x6ce25020,
+-	0x1ea98: 0x6d252820, 0x1ea99: 0x6cb03a20, 0x1ea9a: 0x6c168e20, 0x1ea9b: 0x6c42f620,
+-	0x1ea9c: 0x6cb80820, 0x1ea9d: 0x6d252a20, 0x1ea9e: 0x6ce0e220, 0x1ea9f: 0x6ce29820,
+-	0x1eaa0: 0x6cd56620, 0x1eaa1: 0x6cd55220, 0x1eaa2: 0x6c3b9e20, 0x1eaa3: 0x6c3adc20,
+-	0x1eaa4: 0x6cf1be20, 0x1eaa5: 0x6c039620, 0x1eaa6: 0x6c2dea20, 0x1eaa7: 0x6ceb5a20,
+-	0x1eaa8: 0x6d37d420, 0x1eaa9: 0x6cc1ee20, 0x1eaaa: 0x6cd11a20, 0x1eaab: 0x6cd28e20,
+-	0x1eaac: 0x6d205e20, 0x1eaad: 0x6cd29420, 0x1eaae: 0x6ce69e20, 0x1eaaf: 0x6cf40c20,
+-	0x1eab0: 0x6ca77220, 0x1eab1: 0x6c6df620, 0x1eab2: 0x6c5d1020, 0x1eab3: 0x6c719820,
+-	0x1eab4: 0x6d0e1e20, 0x1eab5: 0x6ce88020, 0x1eab6: 0x6cd85c20, 0x1eab7: 0x6cf75420,
+-	0x1eab8: 0x6cfd4e20, 0x1eab9: 0x6d0e2820, 0x1eaba: 0x6c82ae20, 0x1eabb: 0x6c08a220,
+-	0x1eabc: 0x6d11da20, 0x1eabd: 0x6cc0a220, 0x1eabe: 0x6c4dc020, 0x1eabf: 0x6cf53a20,
+-	// Block 0x7ab, offset 0x1eac0
+-	0x1eac0: 0x6cf54220, 0x1eac1: 0x6c53e620, 0x1eac2: 0x6d028620, 0x1eac3: 0x6c36f820,
+-	0x1eac4: 0x6d2c1020, 0x1eac5: 0x6d055c20, 0x1eac6: 0x6cf27820, 0x1eac7: 0x6d2c1220,
+-	0x1eac8: 0x6ca9f820, 0x1eac9: 0x6ca48c20, 0x1eaca: 0x6cb63420, 0x1eacb: 0x6d2d0020,
+-	0x1eacc: 0x6c62b620, 0x1eacd: 0x6d3ebe20, 0x1eace: 0x6c5f9c20, 0x1eacf: 0x6c5fac20,
+-	0x1ead0: 0x6cb56c20, 0x1ead1: 0x6c5f2820, 0x1ead2: 0x6c1bc220, 0x1ead3: 0x6c193020,
+-	0x1ead4: 0x6c193420, 0x1ead5: 0x6c519220, 0x1ead6: 0x6d0b3a20, 0x1ead7: 0x6d1aae20,
+-	0x1ead8: 0x6d026c20, 0x1ead9: 0x6c05c020, 0x1eada: 0x6d2b2620, 0x1eadb: 0x6d027620,
+-	0x1eadc: 0x6c148c20, 0x1eadd: 0x6c1aec20, 0x1eade: 0x6d0e0c20, 0x1eadf: 0x6c71e020,
+-	0x1eae0: 0x6ce5b220, 0x1eae1: 0x6c8d9620, 0x1eae2: 0x6c8d7820, 0x1eae3: 0x6c1e6e20,
+-	0x1eae4: 0x6cc33220, 0x1eae5: 0x6d027e20, 0x1eae6: 0x6c791420, 0x1eae7: 0x6ca8ae20,
+-	0x1eae8: 0x6c703e20, 0x1eae9: 0x6d11e420, 0x1eaea: 0x6c21e820, 0x1eaeb: 0x6c7dc820,
+-	0x1eaec: 0x6d22b220, 0x1eaed: 0x6c1efa20, 0x1eaee: 0x6d163020, 0x1eaef: 0x6ca61c20,
+-	0x1eaf0: 0x6d2b2a20, 0x1eaf1: 0x6d407820, 0x1eaf2: 0x6cc25820, 0x1eaf3: 0x6d281020,
+-	0x1eaf4: 0x6d0e3020, 0x1eaf5: 0x6cab6e20, 0x1eaf6: 0x6c36fe20, 0x1eaf7: 0x6cf33820,
+-	0x1eaf8: 0x6d198020, 0x1eaf9: 0x6c221a20, 0x1eafa: 0x6d407a20, 0x1eafb: 0x6c2d0020,
+-	0x1eafc: 0x6c1efe20, 0x1eafd: 0x6c6d7a20, 0x1eafe: 0x6d0bd420, 0x1eaff: 0x6c1b8020,
+-	// Block 0x7ac, offset 0x1eb00
+-	0x1eb00: 0x6c192420, 0x1eb01: 0x6c512220, 0x1eb02: 0x6d1a6e20, 0x1eb03: 0x6c71c620,
+-	0x1eb04: 0x6c8d3220, 0x1eb05: 0x6c05b620, 0x1eb06: 0x6ce59620, 0x1eb07: 0x6d3e7820,
+-	0x1eb08: 0x6c790620, 0x1eb09: 0x6d228620, 0x1eb0a: 0x6c21d420, 0x1eb0b: 0x6cc25220,
+-	0x1eb0c: 0x6cf32620, 0x1eb0d: 0x6c8fb020, 0x1eb0e: 0x6cad1420, 0x1eb0f: 0x6c45c020,
+-	0x1eb10: 0x6cad1620, 0x1eb11: 0x6d0e0e20, 0x1eb12: 0x6c8ff220, 0x1eb13: 0x6c904820,
+-	0x1eb14: 0x6c45c820, 0x1eb15: 0x6c76b820, 0x1eb16: 0x6c26dc20, 0x1eb17: 0x6c8e0020,
+-	0x1eb18: 0x6c26de20, 0x1eb19: 0x6c8f6620, 0x1eb1a: 0x6c458620, 0x1eb1b: 0x6c76a820,
+-	0x1eb1c: 0x6c4a9620, 0x1eb1d: 0x6cbfea20, 0x1eb1e: 0x6c0cd620, 0x1eb1f: 0x6c4a3820,
+-	0x1eb20: 0x6d26f620, 0x1eb21: 0x6c20f820, 0x1eb22: 0x6c51aa20, 0x1eb23: 0x6c753020,
+-	0x1eb24: 0x6d013c20, 0x1eb25: 0x6d249820,
+-	// Block 0x7ad, offset 0x1eb40
+-	0x1eb43: 0x6ccd4220,
+-	// Block 0x7ae, offset 0x1eb80
+-	0x1eb80: 0x6cb6e820, 0x1eb81: 0x6c452620, 0x1eb82: 0x6c17ce20, 0x1eb83: 0x6c642020,
+-	0x1eb84: 0x6c573e20, 0x1eb85: 0x6c202c20, 0x1eb86: 0x6c71ea20, 0x1eb87: 0x6c4a9620,
+-	0x1eb88: 0x6c4a9620, 0x1eb89: 0x6cb75220, 0x1eb8a: 0x6c6c2e20, 0x1eb8b: 0x6c7e6220,
+-	0x1eb8c: 0x6ca3ac20, 0x1eb8d: 0x6c804a20, 0x1eb8e: 0x6c7f7820, 0x1eb8f: 0x6c956220,
+-	0x1eb90: 0x6c957a20, 0x1eb91: 0x6c955820, 0x1eb92: 0x6c95b820, 0x1eb93: 0x6c957c20,
+-	0x1eb94: 0x6c822620, 0x1eb95: 0x6c95e820, 0x1eb96: 0x6c81d020, 0x1eb97: 0x6c95f620,
+-	0x1eb98: 0x6c960a20, 0x1eb99: 0x6c81d620, 0x1eb9a: 0x6c962a20, 0x1eb9b: 0x6c949a20,
+-	0x1eb9c: 0x6c948c20, 0x1eb9d: 0x6c7ff820, 0x1eb9e: 0x6c808820, 0x1eb9f: 0x6c7ff020,
+-	0x1eba0: 0x6c948820, 0x1eba1: 0x6c7f9a20, 0x1eba2: 0x6c807c20, 0x1eba3: 0x6c7fc420,
+-	0x1eba4: 0x6c7fd820, 0x1eba5: 0x6c7e3e20, 0x1eba6: 0x6c7eaa20, 0x1eba7: 0x6c7ec420,
+-	0x1eba8: 0x6c80b420, 0x1eba9: 0x6c80f820, 0x1ebaa: 0x6c811820, 0x1ebab: 0x6c80ae20,
+-	0x1ebac: 0x6c80a220, 0x1ebad: 0x6c7ee220, 0x1ebae: 0x6c839020, 0x1ebaf: 0x6c815620,
+-	0x1ebb0: 0x6c91da20, 0x1ebb1: 0x6c91f220, 0x1ebb2: 0x6c918420, 0x1ebb3: 0x6c915c20,
+-	0x1ebb4: 0x6c819a20, 0x1ebb5: 0x6c917820, 0x1ebb6: 0x6c91c420, 0x1ebb7: 0x6c927620,
+-	0x1ebb8: 0x6c933620, 0x1ebb9: 0x6c91d420, 0x1ebba: 0x6c934220, 0x1ebbb: 0x6c926e20,
+-	0x1ebbc: 0x6c925a20, 0x1ebbd: 0x6c93ec20, 0x1ebbe: 0x6c924820, 0x1ebbf: 0x6c92de20,
+-	// Block 0x7af, offset 0x1ebc0
+-	0x1ebc0: 0x6c924c20, 0x1ebc1: 0x6c952620, 0x1ebc2: 0x6c903e20, 0x1ebc3: 0x6ca9f020,
+-	0x1ebc4: 0x6c8ff420, 0x1ebc5: 0x6c8ff820, 0x1ebc6: 0x6c814220, 0x1ebc7: 0x6c82d220,
+-	0x1ebc8: 0x6c927420, 0x1ebc9: 0x6c823e20, 0x1ebca: 0x6c82e220, 0x1ebcb: 0x6c93a620,
+-	0x1ebcc: 0x6c90b020, 0x1ebcd: 0x6c833020, 0x1ebce: 0x6c910e20, 0x1ebcf: 0x6c833420,
+-	0x1ebd0: 0x6c93bc20, 0x1ebd1: 0x6c910220, 0x1ebd2: 0x6c823c20, 0x1ebd3: 0x6c81fe20,
+-	0x1ebd4: 0x6c8c2820, 0x1ebd5: 0x6c8cc420, 0x1ebd6: 0x6c837e20, 0x1ebd7: 0x6c8d3c20,
+-	0x1ebd8: 0x6c8cfe20, 0x1ebd9: 0x6c8cd820, 0x1ebda: 0x6c31f020, 0x1ebdb: 0x6ca2d020,
+-	0x1ebdc: 0x6c822620, 0x1ebdd: 0x6cab0e20, 0x1ebde: 0x6c27b220, 0x1ebdf: 0x6ca91020,
+-	0x1ebe0: 0x6caa5e20, 0x1ebe1: 0x6c93d620, 0x1ebe2: 0x6d176620, 0x1ebe3: 0x6c06c620,
+-	0x1ebe4: 0x6cac7620, 0x1ebe5: 0x6c0b8220, 0x1ebe6: 0x6c3ff020, 0x1ebe7: 0x6c105620,
+-	0x1ebe8: 0x6c9d2620, 0x1ebe9: 0x6cd60020, 0x1ebea: 0x6cdd5a20, 0x1ebeb: 0x6c115e20,
+-	0x1ebec: 0x6cc9c620, 0x1ebed: 0x6cd12c20, 0x1ebee: 0x6d12f620, 0x1ebef: 0x6cd76a20,
+-	0x1ebf0: 0x6ccbda20, 0x1ebf1: 0x6c18a020, 0x1ebf2: 0x6c189c20, 0x1ebf3: 0x6cd41020,
+-	0x1ebf4: 0x6cc91420, 0x1ebf5: 0x6c361020, 0x1ebf6: 0x6c361220, 0x1ebf7: 0x6c89aa20,
+-	0x1ebf8: 0x6c898820, 0x1ebf9: 0x6c894a20, 0x1ebfa: 0x6c894c20, 0x1ebfb: 0x6c897420,
+-	0x1ebfc: 0x6c894620, 0x1ebfd: 0x6c89c820, 0x1ebfe: 0x6c89c020, 0x1ebff: 0x6c867020,
+-	// Block 0x7b0, offset 0x1ec00
+-	0x1ec00: 0x6c937620, 0x1ec01: 0x6caa6e20, 0x1ec02: 0x6c916e20, 0x1ec03: 0x6c938a20,
+-	0x1ec04: 0x6c940e20, 0x1ec05: 0x6c870420, 0x1ec06: 0x6c935a20, 0x1ec07: 0x6c84ee20,
+-	0x1ec08: 0x6c871420, 0x1ec09: 0x6c843a20, 0x1ec0a: 0x6c855c20, 0x1ec0b: 0x6c867820,
+-	0x1ec0c: 0x6c867c20, 0x1ec0d: 0x6c878420, 0x1ec0e: 0x6ca6f220, 0x1ec0f: 0x6c883620,
+-	0x1ec10: 0x6c893820, 0x1ec11: 0x6ca73420, 0x1ec12: 0x6c881620, 0x1ec13: 0x6c890620,
+-	0x1ec14: 0x6c88c420, 0x1ec15: 0x6ca6f620, 0x1ec16: 0x6c891220, 0x1ec17: 0x6c886820,
+-	0x1ec18: 0x6ca73a20, 0x1ec19: 0x6c881820, 0x1ec1a: 0x6c87fa20, 0x1ec1b: 0x6c892220,
+-	0x1ec1c: 0x6c8abc20, 0x1ec1d: 0x6c8abe20, 0x1ec1e: 0x6d0e4220, 0x1ec1f: 0x6c8af020,
+-	0x1ec20: 0x6c8b1020, 0x1ec21: 0x6cd76a20, 0x1ec22: 0x6c881020, 0x1ec23: 0x6ca75a20,
+-	0x1ec24: 0x6ca72020, 0x1ec25: 0x6c892020, 0x1ec26: 0x6c888420, 0x1ec27: 0x6c8b5420,
+-	0x1ec28: 0x6c8e1820, 0x1ec29: 0x6c8c9e20, 0x1ec2a: 0x6ca91020, 0x1ec2b: 0x6c8e1420,
+-	0x1ec2c: 0x6c87f420, 0x1ec2d: 0x6c8cbe20, 0x1ec2e: 0x6d1c8a20, 0x1ec2f: 0x6c8cf620,
+-	0x1ec30: 0x6c8cfa20, 0x1ec31: 0x6c8d2420, 0x1ec32: 0x6c8d2a20, 0x1ec33: 0x6c8db620,
+-	0x1ec34: 0x6c8e1220, 0x1ec35: 0x6c858620, 0x1ec36: 0x6c853820, 0x1ec37: 0x6c854620,
+-	0x1ec38: 0x6c86b420, 0x1ec39: 0x6c363420, 0x1ec3a: 0x6c823620, 0x1ec3b: 0x6c89ec20,
+-	0x1ec3c: 0x6c8a0620, 0x1ec3d: 0x6ca7d020, 0x1ec3e: 0x6c8a9420, 0x1ec3f: 0x6c822620,
+-	// Block 0x7b1, offset 0x1ec40
+-	0x1ec40: 0x6c8a1a20, 0x1ec41: 0x6c8a2620, 0x1ec42: 0x6c8a7220, 0x1ec43: 0x6c8a1620,
+-	0x1ec44: 0x6c8fb020, 0x1ec45: 0x6d275420, 0x1ec46: 0x6cc84c20, 0x1ec47: 0x6c8e8020,
+-	0x1ec48: 0x6c1e2020, 0x1ec49: 0x6c8efa20, 0x1ec4a: 0x6c8e4a20, 0x1ec4b: 0x6c8e3620,
+-	0x1ec4c: 0x6c8e5020, 0x1ec4d: 0x6c8e4c20, 0x1ec4e: 0x6c8e5c20, 0x1ec4f: 0x6ca99020,
+-	0x1ec50: 0x6c835420, 0x1ec51: 0x6c8f2420, 0x1ec52: 0x6c92a020, 0x1ec53: 0x6c923020,
+-	0x1ec54: 0x6c94e420, 0x1ec55: 0x6c94f020, 0x1ec56: 0x6c94f420, 0x1ec57: 0x6c950e20,
+-	0x1ec58: 0x6c93d020, 0x1ec59: 0x6c862e20, 0x1ec5a: 0x6c85ca20, 0x1ec5b: 0x6c93d620,
+-	0x1ec5c: 0x6c8f9220, 0x1ec5d: 0x6c857620, 0x1ec5e: 0x6c856e20, 0x1ec5f: 0x6c93ae20,
+-	0x1ec60: 0x6d16ba20, 0x1ec61: 0x6c87d820, 0x1ec62: 0x6c83bc20, 0x1ec63: 0x6ca5c020,
+-	0x1ec64: 0x6c851420, 0x1ec65: 0x6c861220, 0x1ec66: 0x6c844a20, 0x1ec67: 0x6c852220,
+-	0x1ec68: 0x6c87e220, 0x1ec69: 0x6c84fc20, 0x1ec6a: 0x6c847e20, 0x1ec6b: 0x6ca68c20,
+-	0x1ec6c: 0x6ca6ac20, 0x1ec6d: 0x6c8c4420, 0x1ec6e: 0x6c8bde20, 0x1ec6f: 0x6c8be020,
+-	0x1ec70: 0x6c8c7a20, 0x1ec71: 0x6c8bca20, 0x1ec72: 0x6c8c0c20, 0x1ec73: 0x6c8c1020,
+-	0x1ec74: 0x6c8ba020, 0x1ec75: 0x6c8bb020, 0x1ec76: 0x6c8bea20, 0x1ec77: 0x6c856c20,
+-	0x1ec78: 0x6c85f620, 0x1ec79: 0x6c85f820, 0x1ec7a: 0x6d3c3420, 0x1ec7b: 0x6d358c20,
+-	0x1ec7c: 0x6cd42220, 0x1ec7d: 0x6cd03620, 0x1ec7e: 0x6c13d020, 0x1ec7f: 0x6c22b220,
+-	// Block 0x7b2, offset 0x1ec80
+-	0x1ec80: 0x6cbc9020, 0x1ec81: 0x6c324420, 0x1ec82: 0x6cde2e20, 0x1ec83: 0x6ce13620,
+-	0x1ec84: 0x6d2d1820, 0x1ec85: 0x6c306420, 0x1ec86: 0x6c066220, 0x1ec87: 0x6c3efc20,
+-	0x1ec88: 0x6d03ba20, 0x1ec89: 0x6c67d620, 0x1ec8a: 0x6c665220, 0x1ec8b: 0x6c7e0420,
+-	0x1ec8c: 0x6cf49020, 0x1ec8d: 0x6c56a220, 0x1ec8e: 0x43f41c20, 0x1ec8f: 0x43f41e20,
+-	0x1ec90: 0x6d37f420, 0x1ec91: 0x43f42220, 0x1ec92: 0x6cbe7a20, 0x1ec93: 0x43f42620,
+-	0x1ec94: 0x43f42820, 0x1ec95: 0x6cf6b620, 0x1ec96: 0x6d399820, 0x1ec97: 0x6d173820,
+-	0x1ec98: 0x6c84f420, 0x1ec99: 0x6cd03a20, 0x1ec9a: 0x6cfdbc20, 0x1ec9b: 0x6c3e9c20,
+-	0x1ec9c: 0x6c6e9220, 0x1ec9d: 0x6c6dcc20, 0x1ec9e: 0x6d221c20, 0x1ec9f: 0x43f43e20,
+-	0x1eca0: 0x6cc0c220, 0x1eca1: 0x43f44220, 0x1eca2: 0x6d39c620, 0x1eca3: 0x43f44620,
+-	0x1eca4: 0x43f44820, 0x1eca5: 0x6d178420, 0x1eca6: 0x6c30a620, 0x1eca7: 0x43f44e20,
+-	0x1eca8: 0x43f45020, 0x1eca9: 0x43f45220, 0x1ecaa: 0x6c395c20, 0x1ecab: 0x6cd8d420,
+-	0x1ecac: 0x6c496820, 0x1ecad: 0x6c520c20, 0x1ecae: 0x6c80a420, 0x1ecaf: 0x6c868820,
+-	0x1ecb0: 0x6cf43220, 0x1ecb1: 0x6ccbb820, 0x1ecb2: 0x6c9dfe20, 0x1ecb3: 0x6c9e0c20,
+-	0x1ecb4: 0x6cbd7c20, 0x1ecb5: 0x6c068e20, 0x1ecb6: 0x6c509c20, 0x1ecb7: 0x6ce0a020,
+-	0x1ecb8: 0x6cb7ce20, 0x1ecb9: 0x6cb2ec20, 0x1ecba: 0x6ca16020, 0x1ecbb: 0x6c135420,
+-	0x1ecbc: 0x6c17fa20, 0x1ecbd: 0x6c5b4c20, 0x1ecbe: 0x6c765820, 0x1ecbf: 0x6d2b8a20,
+-	// Block 0x7b3, offset 0x1ecc0
+-	0x1ecc0: 0x6c1a5420, 0x1ecc1: 0x6c9fa820, 0x1ecc2: 0x6c61a820, 0x1ecc3: 0x6cd55a20,
+-	0x1ecc4: 0x6c99ec20, 0x1ecc5: 0x6c4d3a20, 0x1ecc6: 0x6d3a6420, 0x1ecc7: 0x6c4ee620,
+-	0x1ecc8: 0x6d3a6e20, 0x1ecc9: 0x6d2ff420, 0x1ecca: 0x6d423c20, 0x1eccb: 0x6c06b020,
+-	0x1eccc: 0x6ccf3620, 0x1eccd: 0x6d34f820, 0x1ecce: 0x6cb58a20, 0x1eccf: 0x6d203020,
+-	0x1ecd0: 0x6d411420, 0x1ecd1: 0x6d3ac620, 0x1ecd2: 0x6c5dd420, 0x1ecd3: 0x6d316e20,
+-	0x1ecd4: 0x6c47c420, 0x1ecd5: 0x6ce84420, 0x1ecd6: 0x6c6af220, 0x1ecd7: 0x6c891220,
+-	0x1ecd8: 0x6c6d5220, 0x1ecd9: 0x6c38ca20, 0x1ecda: 0x6cd56220, 0x1ecdb: 0x6d30d220,
+-	0x1ecdc: 0x6c1e4020, 0x1ecdd: 0x6c12c020, 0x1ecde: 0x6c12c020, 0x1ecdf: 0x6d311420,
+-	0x1ece0: 0x6c51d620, 0x1ece1: 0x6cd36c20, 0x1ece2: 0x6d134620, 0x1ece3: 0x6c6cc220,
+-	0x1ece4: 0x6c0d4a20, 0x1ece5: 0x6d2bb620, 0x1ece6: 0x6c21a420, 0x1ece7: 0x6d178420,
+-	0x1ece8: 0x6ca41420, 0x1ece9: 0x6cfe0a20, 0x1ecea: 0x6cb21420, 0x1eceb: 0x6c5baa20,
+-	0x1ecec: 0x4885dc20, 0x1eced: 0x6c496420,
+-	0x1ecf0: 0x6c0e0820, 0x1ecf1: 0x6c7bdc20, 0x1ecf2: 0x6cc2b220, 0x1ecf3: 0x6d03c620,
+-	0x1ecf4: 0x6c1ca820, 0x1ecf5: 0x6c627020, 0x1ecf6: 0x6d1e1820, 0x1ecf7: 0x6cce9420,
+-	0x1ecf8: 0x6c509c20, 0x1ecf9: 0x6ce21620, 0x1ecfa: 0x6c5bbc20, 0x1ecfb: 0x6cec3420,
+-	0x1ecfc: 0x6d37f420, 0x1ecfd: 0x6c3b8420, 0x1ecfe: 0x6d0d4620, 0x1ecff: 0x6c077c20,
+-	// Block 0x7b4, offset 0x1ed00
+-	0x1ed00: 0x6c097420, 0x1ed01: 0x6c226820, 0x1ed02: 0x6c025020, 0x1ed03: 0x6d182220,
+-	0x1ed04: 0x6c112620, 0x1ed05: 0x6d110c20, 0x1ed06: 0x6cee0e20, 0x1ed07: 0x6cd0ac20,
+-	0x1ed08: 0x6d236a20, 0x1ed09: 0x6d2b8a20, 0x1ed0a: 0x6c02d820, 0x1ed0b: 0x6c1a5420,
+-	0x1ed0c: 0x6c279420, 0x1ed0d: 0x6d212620, 0x1ed0e: 0x6cd9b020, 0x1ed0f: 0x6c0de620,
+-	0x1ed10: 0x6c024020, 0x1ed11: 0x6cbe7a20, 0x1ed12: 0x6c80f820, 0x1ed13: 0x6cee5220,
+-	0x1ed14: 0x6d2f2220, 0x1ed15: 0x6c271220, 0x1ed16: 0x6ccbda20, 0x1ed17: 0x6c8e4a20,
+-	0x1ed18: 0x6d1a7020, 0x1ed19: 0x6d3e4020, 0x1ed1a: 0x6c4ee620, 0x1ed1b: 0x6c6eb420,
+-	0x1ed1c: 0x6d3a6e20, 0x1ed1d: 0x6cbc0220, 0x1ed1e: 0x6c74c820, 0x1ed1f: 0x6c391620,
+-	0x1ed20: 0x6d399820, 0x1ed21: 0x6d325020, 0x1ed22: 0x6c225020, 0x1ed23: 0x6c578420,
+-	0x1ed24: 0x6c492220, 0x1ed25: 0x6cf16020, 0x1ed26: 0x6d173820, 0x1ed27: 0x6cd15e20,
+-	0x1ed28: 0x6d344020, 0x1ed29: 0x6c736420, 0x1ed2a: 0x6d311220, 0x1ed2b: 0x6ce4ba20,
+-	0x1ed2c: 0x6ce5cc20, 0x1ed2d: 0x6c6af220, 0x1ed2e: 0x6c832420, 0x1ed2f: 0x6ce1c820,
+-	0x1ed30: 0x6c891220, 0x1ed31: 0x6cb2ac20, 0x1ed32: 0x6d30d220, 0x1ed33: 0x6c598420,
+-	0x1ed34: 0x6c573420, 0x1ed35: 0x6d276220, 0x1ed36: 0x6cbb4c20, 0x1ed37: 0x6c407e20,
+-	0x1ed38: 0x6cd36c20, 0x1ed39: 0x6c2e3820, 0x1ed3a: 0x6d39c620, 0x1ed3b: 0x6cbeb220,
+-	0x1ed3c: 0x6d134620, 0x1ed3d: 0x6cab0e20, 0x1ed3e: 0x6d23f620, 0x1ed3f: 0x6c6cc220,
+-	// Block 0x7b5, offset 0x1ed40
+-	0x1ed40: 0x6c0bdc20, 0x1ed41: 0x6d2bb620, 0x1ed42: 0x6cd50820, 0x1ed43: 0x6c1b5020,
+-	0x1ed44: 0x6cd9e620, 0x1ed45: 0x6d03f420, 0x1ed46: 0x6d3a6220, 0x1ed47: 0x6ca41420,
+-	0x1ed48: 0x6c6e9220, 0x1ed49: 0x6c046220, 0x1ed4a: 0x6cfe0a20, 0x1ed4b: 0x6c35b420,
+-	0x1ed4c: 0x6cb21420, 0x1ed4d: 0x6d320420, 0x1ed4e: 0x6c4a9620, 0x1ed4f: 0x48509420,
+-	0x1ed50: 0x48508820, 0x1ed51: 0x4867aa20, 0x1ed52: 0x6c513820, 0x1ed53: 0x6d008620,
+-	0x1ed54: 0x6c6ad220, 0x1ed55: 0x48a49220, 0x1ed56: 0x6cba2c20, 0x1ed57: 0x6c084620,
+-	0x1ed58: 0x6c36f820, 0x1ed59: 0x6cad1420,
+-	// Block 0x7b6, offset 0x1ed80
+-	0x1ed80: 0xf0001c1c, 0x1ed81: 0xf0001c1c, 0x1ed82: 0x00658c9c,
+-	0x1ed90: 0x2cd43683, 0x1ed91: 0x2d3f2883, 0x1ed92: 0x2cd6a083, 0x1ed93: 0xf0001c1c,
+-	0x1ed94: 0x2c37b483, 0x1ed95: 0x2c341683, 0x1ed96: 0x2c6b9883, 0x1ed97: 0x2ce45483,
+-	0x1ed98: 0x2c682283, 0x1ed99: 0x2d1d3483, 0x1ed9a: 0x2cf3c883, 0x1ed9b: 0x2c8a9483,
+-	0x1ed9c: 0x2cb97883, 0x1ed9d: 0x2c546483, 0x1ed9e: 0x2d292683, 0x1ed9f: 0x2d02dc83,
+-	0x1eda0: 0x2c1e5483, 0x1eda1: 0x2d37b683, 0x1eda2: 0x2cd0d283, 0x1eda3: 0x2c395083,
+-	0x1eda4: 0x2cd0dc83, 0x1eda5: 0x2c20b483, 0x1eda6: 0x2d0db483, 0x1eda7: 0x2ce7e683,
+-	0x1eda8: 0x2c103683, 0x1eda9: 0x2d13b683, 0x1edaa: 0x2cc9f283, 0x1edab: 0x2d1f4083,
+-	0x1edac: 0x2d426083, 0x1edad: 0x2d378283, 0x1edae: 0x2d200883, 0x1edaf: 0x2d350083,
+-	0x1edb0: 0x2d407e83, 0x1edb1: 0x2c26e083, 0x1edb2: 0x2c6d1a83, 0x1edb3: 0x2c796883,
+-	0x1edb4: 0x2c50b683, 0x1edb5: 0x2c97ba83, 0x1edb6: 0x2d1f9883, 0x1edb7: 0x2d266883,
+-	0x1edb8: 0x2ccf9a83, 0x1edb9: 0x2c438c83, 0x1edba: 0x2d1c6283,
+-	// Block 0x7b7, offset 0x1edc0
+-	0x1edc0: 0xe000b021, 0x1edc1: 0xe000b035, 0x1edc2: 0xe000b031, 0x1edc3: 0xe000b019,
+-	0x1edc4: 0xe000b02d, 0x1edc5: 0xe000b025, 0x1edc6: 0xe000b029, 0x1edc7: 0xe000b039,
+-	0x1edc8: 0xe000b01d,
+-	0x1edd0: 0x2c2a9083, 0x1edd1: 0x2c785283,
+-	// Block 0x7b8, offset 0x1ee00
+-	0x1ee00: 0x6c508820, 0x1ee01: 0x6cb4c820, 0x1ee03: 0x6cbc8c20,
+-	0x1ee05: 0x6c4d4c20,
+-	0x1ee09: 0x6cbf9020, 0x1ee0a: 0x6c126420,
+-	0x1ee0d: 0x6cd2ec20,
+-	0x1ee13: 0x6cd7ba20,
+-	0x1ee14: 0x6c73ca20,
+-	0x1ee1b: 0x6d22c020,
+-	0x1ee1d: 0x6c796620,
+-	0x1ee22: 0x6d3dfc20,
+-	0x1ee26: 0x6d03be20,
+-	0x1ee31: 0x6ca1fc20,
+-	0x1ee37: 0x6c5e9420,
+-	0x1ee38: 0x6d12d220, 0x1ee39: 0x6c755e20,
+-	0x1ee3c: 0x6cb97c20, 0x1ee3d: 0x6c922420,
+-	// Block 0x7b9, offset 0x1ee40
+-	0x1ee49: 0x6c1e5e20,
+-	0x1ee57: 0x6cd3d420,
+-	0x1ee60: 0x6cbd0220,
+-	0x1ee65: 0x6c40ce20,
+-	0x1ee6d: 0x6cb58e20,
+-	0x1ee77: 0x6c15c420,
+-	// Block 0x7ba, offset 0x1ee80
+-	0x1ee84: 0x6c582a20, 0x1ee86: 0x6d163620, 0x1ee87: 0x6d425e20,
+-	0x1ee88: 0x6c6a4a20,
+-	0x1ee91: 0x6d404420,
+-	0x1ee94: 0x6d3ed420,
+-	0x1ee9f: 0x6c6c2020,
+-	0x1eea2: 0x6cac1620,
+-	0x1eea4: 0x6c32ee20, 0x1eea5: 0x6c238220, 0x1eea7: 0x6cd08e20,
+-	0x1eeb8: 0x6c59aa20,
+-	// Block 0x7bb, offset 0x1eec0
+-	0x1eeca: 0x6d1abe20,
+-	0x1eecc: 0x6c4bb820,
+-	0x1eed6: 0x6c6f3a20,
+-	0x1eeeb: 0x6ccfa220,
+-	0x1eefa: 0x6c6fe220,
+-	// Block 0x7bc, offset 0x1ef00
+-	0x1ef05: 0x6d130c20,
+-	0x1ef09: 0x6c308c20,
+-	0x1ef0c: 0x6c73c020, 0x1ef0d: 0x6c6a4c20, 0x1ef0f: 0x6c2df020,
+-	0x1ef11: 0x6c73c220, 0x1ef12: 0x6c20ba20,
+-	0x1ef16: 0x6c8c9820,
+-	0x1ef1a: 0x6ce63e20,
+-	0x1ef23: 0x6c44aa20,
+-	0x1ef2e: 0x6d0b7e20,
+-	0x1ef31: 0x6d148020,
+-	0x1ef3f: 0x6cef1c20,
+-	// Block 0x7bd, offset 0x1ef40
+-	0x1ef42: 0x6c6a5820,
+-	0x1ef4c: 0x6d146a20,
+-	0x1ef57: 0x6c2f3220,
+-	0x1ef5a: 0x6cb59a20,
+-	0x1ef6c: 0x6c05b020,
+-	0x1ef71: 0x6d01a620,
+-	0x1ef79: 0x6d2f3220,
+-	// Block 0x7be, offset 0x1ef80
+-	0x1ef8c: 0x6d1daa20,
+-	0x1ef90: 0x6d073820,
+-	0x1ef99: 0x6c2f3820, 0x1ef9b: 0x6c280820,
+-	0x1ef9f: 0x6cf06220,
+-	0x1efa3: 0x6c488620,
+-	0x1efa9: 0x6c391220,
+-	0x1efae: 0x6ca0ba20,
+-	0x1efb1: 0x6cf56220, 0x1efb2: 0x6d0d3220,
+-	0x1efb5: 0x6ca5b820, 0x1efb6: 0x6c286020,
+-	// Block 0x7bf, offset 0x1efc0
+-	0x1efcb: 0x6c281a20,
+-	0x1efcf: 0x6ce1ac20,
+-	0x1efd2: 0x6c455620,
+-	0x1efd7: 0x6c7abc20,
+-	0x1efd8: 0x6c1f0420,
+-	0x1efef: 0x6cc25e20,
+-	0x1eff1: 0x6ca0be20, 0x1eff3: 0x6cd19220,
+-	0x1eff5: 0x6c41c620, 0x1eff7: 0x6cd0d820,
+-	// Block 0x7c0, offset 0x1f000
+-	0x1f001: 0x6ceaa020,
+-	0x1f005: 0x6cd42c20,
+-	0x1f00a: 0x6ca7e620,
+-	0x1f024: 0x6d281a20, 0x1f025: 0x6c489220,
+-	0x1f02c: 0x6cfe7e20, 0x1f02d: 0x6c814420,
+-	0x1f030: 0x6c286e20, 0x1f031: 0x6cdd0620,
+-	0x1f035: 0x6c988420, 0x1f036: 0x6d148220,
+-	0x1f038: 0x6ce26e20, 0x1f03a: 0x6c094020,
+-	// Block 0x7c1, offset 0x1f040
+-	0x1f042: 0x6cde3020,
+-	0x1f057: 0x6c95e420,
+-	0x1f062: 0x6cf7d220, 0x1f063: 0x6c5cb820,
+-	0x1f064: 0x6c268e20, 0x1f067: 0x6c722420,
+-	0x1f069: 0x6c318c20,
+-	0x1f06c: 0x6c017c20,
+-	// Block 0x7c2, offset 0x1f080
+-	0x1f089: 0x6c9a8820,
+-	0x1f08c: 0x6cc46c20, 0x1f08e: 0x6c003820, 0x1f08f: 0x6d22ec20,
+-	0x1f092: 0x6c666620,
+-	0x1f094: 0x6cb76620,
+-	0x1f09f: 0x6c9fa220,
+-	0x1f0a3: 0x6d391620,
+-	0x1f0a4: 0x6d35ac20, 0x1f0a5: 0x6d37ea20, 0x1f0a6: 0x6ca4e220, 0x1f0a7: 0x6c0e1a20,
+-	0x1f0a9: 0x6d3bc020, 0x1f0aa: 0x6cd5be20, 0x1f0ab: 0x6d0a8420,
+-	0x1f0ac: 0x6c741e20, 0x1f0ad: 0x6cb9fe20,
+-	0x1f0b0: 0x6c489a20, 0x1f0b2: 0x6ce85220,
+-	0x1f0b6: 0x6d1d3820, 0x1f0b7: 0x6d35d620,
+-	0x1f0be: 0x6c7c6620,
+-	// Block 0x7c3, offset 0x1f0c0
+-	0x1f0c6: 0x6c192620,
+-	0x1f0d6: 0x6c88ec20, 0x1f0d7: 0x6d0ae620,
+-	0x1f0dc: 0x6c4ce820, 0x1f0dd: 0x6c9e8e20, 0x1f0de: 0x6ccf0e20, 0x1f0df: 0x6d223620,
+-	0x1f0e1: 0x6cd8b020, 0x1f0e2: 0x6cda1220,
+-	0x1f0e4: 0x6d35d820, 0x1f0e7: 0x6cbc7c20,
+-	0x1f0e9: 0x6c3fde20,
+-	0x1f0ec: 0x6c710a20, 0x1f0ed: 0x6c071e20, 0x1f0ef: 0x6c099220,
+-	0x1f0f2: 0x6cdd6220,
+-	0x1f0f5: 0x6cba0820, 0x1f0f6: 0x6ca03220, 0x1f0f7: 0x6c15b620,
+-	0x1f0fa: 0x6ccaa820, 0x1f0fb: 0x6c5ec020,
+-	// Block 0x7c4, offset 0x1f100
+-	0x1f115: 0x6c461620, 0x1f116: 0x6cbf1e20,
+-	0x1f11a: 0x6cc73820,
+-	0x1f11e: 0x6cda1a20, 0x1f11f: 0x6cda1e20,
+-	0x1f120: 0x6d10f420,
+-	0x1f12a: 0x6c1d6a20,
+-	0x1f12d: 0x6cd66620, 0x1f12e: 0x6d2ffa20, 0x1f12f: 0x6c862420,
+-	0x1f130: 0x6c413e20, 0x1f131: 0x6cdbc620, 0x1f132: 0x6d2d7c20,
+-	0x1f134: 0x6d3c4220,
+-	0x1f13d: 0x6c400820,
+-	// Block 0x7c5, offset 0x1f140
+-	0x1f143: 0x6c5ee020,
+-	0x1f144: 0x6c30b220,
+-	0x1f157: 0x6c5bd020,
+-	0x1f15a: 0x6c65a420, 0x1f15b: 0x6d0d9c20,
+-	0x1f15c: 0x6d364a20,
+-	0x1f168: 0x6c9a5c20, 0x1f169: 0x6d120e20, 0x1f16a: 0x6c2b3220, 0x1f16b: 0x6d150e20,
+-	0x1f16f: 0x6c0cf220,
+-	0x1f172: 0x6cc1a220, 0x1f173: 0x6d181a20,
+-	0x1f175: 0x6d105420,
+-	0x1f179: 0x6d2c3e20,
+-	0x1f17d: 0x6ccc6020,
+-	// Block 0x7c6, offset 0x1f180
+-	0x1f199: 0x6c7f1820,
+-	0x1f1ae: 0x6c746e20,
+-	0x1f1b0: 0x6cb50620, 0x1f1b3: 0x6d216a20,
+-	0x1f1b6: 0x6d291820, 0x1f1b7: 0x6cc98220,
+-	0x1f1b8: 0x6ccb3a20, 0x1f1bb: 0x6c340420,
+-	0x1f1bf: 0x6c6b9e20,
+-	// Block 0x7c7, offset 0x1f1c0
+-	0x1f1c0: 0x6c782020, 0x1f1c3: 0x6d265420,
+-	0x1f1c7: 0x6c65ca20,
+-	0x1f1c8: 0x6d113220,
+-	0x1f1d3: 0x6cfaca20,
+-	0x1f1d5: 0x6d000220, 0x1f1d6: 0x6cbb9620,
+-	0x1f1da: 0x6d23b820, 0x1f1db: 0x6cc1ae20,
+-	0x1f1e1: 0x6cfac820, 0x1f1e2: 0x6c962020,
+-	0x1f1e4: 0x6c4a0a20, 0x1f1e7: 0x6c198620,
+-	0x1f1e8: 0x6c209620, 0x1f1e9: 0x6d155620, 0x1f1eb: 0x6d333020,
+-	0x1f1ed: 0x6d403020, 0x1f1ee: 0x6c335c20,
+-	0x1f1f0: 0x6d2d3420,
+-	0x1f1ff: 0x6c3a6e20,
+-	// Block 0x7c8, offset 0x1f200
+-	0x1f200: 0x6d155820, 0x1f201: 0x6c9b4420,
+-	0x1f208: 0x6c0b0a20, 0x1f209: 0x6c6b4020, 0x1f20a: 0x6cd61820, 0x1f20b: 0x6c8a2220,
+-	0x1f20c: 0x6c08fa20, 0x1f20d: 0x6cda7620,
+-	0x1f211: 0x6c2ca220,
+-	0x1f221: 0x6c076220, 0x1f222: 0x6cf21220,
+-	0x1f227: 0x6c9b6a20,
+-	0x1f229: 0x6c15ea20,
+-	0x1f235: 0x6c29f620,
+-	0x1f23a: 0x6cb21c20, 0x1f23b: 0x6c660820,
+-	0x1f23c: 0x6c8c7420, 0x1f23d: 0x6c4b9220, 0x1f23e: 0x6cb54620, 0x1f23f: 0x6c52dc20,
+-	// Block 0x7c9, offset 0x1f240
+-	0x1f243: 0x6c60e820,
+-	0x1f244: 0x6d024e20, 0x1f245: 0x6d330820, 0x1f246: 0x6c15fa20,
+-	0x1f250: 0x6d116c20, 0x1f251: 0x6c160a20,
+-	0x1f258: 0x6c2cee20, 0x1f259: 0x6c1d6020, 0x1f25a: 0x6ca56220, 0x1f25b: 0x6ca56420,
+-	0x1f25e: 0x6d2d5420, 0x1f25f: 0x6c0b1e20,
+-	0x1f261: 0x6c161020,
+-	0x1f26a: 0x6cff5a20,
+-	0x1f26f: 0x6c248620,
+-	0x1f270: 0x6d02f620, 0x1f271: 0x6c6e4420, 0x1f272: 0x6cb96620,
+-	0x1f274: 0x6cbe6820,
+-	0x1f279: 0x6c475220,
+-	// Block 0x7ca, offset 0x1f280
+-	0x1f284: 0x6cf4b420,
+-	0x1f29c: 0x6d25e420, 0x1f29d: 0x6c0dde20,
+-	0x1f2a2: 0x6cecde20,
+-	0x1f2b0: 0x6ca7a620,
+-	0x1f2b5: 0x6c891020,
+-	0x1f2b8: 0x6cc53e20,
+-	0x1f2be: 0x6c396e20, 0x1f2bf: 0x6c2b9420,
+-	// Block 0x7cb, offset 0x1f2c0
+-	0x1f2ca: 0x6c5af820, 0x1f2cb: 0x6d190620,
+-	0x1f2cc: 0x6cfbbc20,
+-	0x1f2d6: 0x6c800420, 0x1f2d7: 0x6c40a020,
+-	0x1f2d9: 0x6d04ae20,
+-	0x1f2dc: 0x6c897e20, 0x1f2dd: 0x6ce1a620, 0x1f2de: 0x6c5fba20,
+-	0x1f2e2: 0x6c6ba620, 0x1f2e3: 0x6d2c1a20,
+-	0x1f2e4: 0x6cd19420,
+-	0x1f2ea: 0x6cb59220, 0x1f2eb: 0x6c0b2c20,
+-	0x1f2ed: 0x6c802220, 0x1f2ee: 0x6c8c1a20,
+-	0x1f2f6: 0x6d364c20, 0x1f2f7: 0x6c09bc20,
+-	0x1f2f8: 0x6cd17020,
+-	0x1f2fd: 0x6cd17a20, 0x1f2ff: 0x6cbdbc20,
+-	// Block 0x7cc, offset 0x1f300
+-	0x1f302: 0x6c0be620, 0x1f303: 0x6cf55e20,
+-	0x1f309: 0x6c733a20, 0x1f30b: 0x6c5e8420,
+-	0x1f30d: 0x6cf57620, 0x1f30e: 0x6cbdc420,
+-	0x1f311: 0x6c4d5620,
+-	0x1f315: 0x6c94e220,
+-	0x1f320: 0x6d26b420,
+-	0x1f328: 0x6c880a20,
+-	0x1f32f: 0x6c048e20,
+-	0x1f332: 0x6c526820,
+-	0x1f336: 0x6cb54020,
+-	0x1f33a: 0x6cb93820, 0x1f33b: 0x6d337820,
+-	0x1f33c: 0x6c991a20,
+-	// Block 0x7cd, offset 0x1f340
+-	0x1f341: 0x6c238020,
+-	0x1f344: 0x6ca30020,
+-	0x1f34a: 0x6ce6a820,
+-	0x1f34c: 0x6d3f6e20,
+-	0x1f355: 0x6c6ed420, 0x1f356: 0x6d2f8620,
+-	0x1f35f: 0x6ca71c20,
+-	0x1f360: 0x6c19e420, 0x1f363: 0x6cb86620,
+-	0x1f366: 0x6d236420, 0x1f367: 0x6c690020,
+-	0x1f36d: 0x6d2fda20,
+-	0x1f373: 0x6c2b5020,
+-	0x1f374: 0x6c6f3c20,
+-	0x1f378: 0x6cdc0a20, 0x1f37b: 0x6d108220,
+-	0x1f37f: 0x6cedbe20,
+-	// Block 0x7ce, offset 0x1f380
+-	0x1f382: 0x6c89d820,
+-	0x1f384: 0x6ce71220, 0x1f386: 0x6c9bfc20,
+-	0x1f38b: 0x6d1faa20,
+-	0x1f393: 0x6cd7e020,
+-	0x1f39b: 0x6c910820,
+-	0x1f39f: 0x6d19f820,
+-	0x1f3a5: 0x6c1d4420,
+-	0x1f3ab: 0x6c420020,
+-	0x1f3ac: 0x6c6f3820,
+-	0x1f3b6: 0x6cbdf820, 0x1f3b7: 0x6c6ef220,
+-	0x1f3b9: 0x6d006e20,
+-	// Block 0x7cf, offset 0x1f3c0
+-	0x1f3c2: 0x6c51b820,
+-	0x1f3c6: 0x6ce1ae20,
+-	0x1f3c8: 0x6cc01220, 0x1f3c9: 0x6d007420, 0x1f3ca: 0x6c6e5420, 0x1f3cb: 0x6ca71620,
+-	0x1f3cc: 0x6c6e5620, 0x1f3cf: 0x6c5fea20,
+-	0x1f3d8: 0x6ce4de20, 0x1f3da: 0x6c252220, 0x1f3db: 0x6c2e7c20,
+-	0x1f3dd: 0x6cbea020,
+-	0x1f3e5: 0x6cb2e620, 0x1f3e6: 0x6cb29620,
+-	0x1f3e8: 0x6c2e9020, 0x1f3e9: 0x6c910420,
+-	0x1f3f3: 0x6c88ba20,
+-	0x1f3f4: 0x6c4e0a20, 0x1f3f5: 0x6cacd620, 0x1f3f6: 0x6ce0f020,
+-	0x1f3fa: 0x6d151020, 0x1f3fb: 0x6d081420,
+-	0x1f3fc: 0x6cddca20, 0x1f3fd: 0x6c8e6420, 0x1f3fe: 0x6cd6d220, 0x1f3ff: 0x6cd0a820,
+-	// Block 0x7d0, offset 0x1f400
+-	0x1f401: 0x6c10a020, 0x1f402: 0x6cd9bc20,
+-	0x1f405: 0x6cbd8c20, 0x1f406: 0x6cd06620,
+-	0x1f40a: 0x6ca9f420, 0x1f40b: 0x6ce6de20,
+-	0x1f40c: 0x6c677020,
+-	0x1f415: 0x6cf6b820, 0x1f416: 0x6d36fe20,
+-	0x1f41d: 0x6c7f5e20, 0x1f41e: 0x6c86be20, 0x1f41f: 0x6c86c020,
+-	0x1f422: 0x6c519420, 0x1f423: 0x6c69cc20,
+-	0x1f425: 0x6d0d0a20, 0x1f427: 0x6cd49420,
+-	0x1f42a: 0x6cd2a220,
+-	0x1f431: 0x6d31ae20, 0x1f433: 0x6d1e8620,
+-	0x1f43a: 0x6cddc620, 0x1f43b: 0x6cf39e20,
+-	// Block 0x7d1, offset 0x1f440
+-	0x1f441: 0x6c169620, 0x1f442: 0x6c238820,
+-	0x1f446: 0x6c720820,
+-	0x1f44e: 0x6cd4a420,
+-	0x1f454: 0x6c6fe620, 0x1f455: 0x6ceef020,
+-	0x1f45e: 0x6c5db620,
+-	0x1f464: 0x6c6a2020,
+-	0x1f46c: 0x6d2a4e20,
+-	0x1f476: 0x6cab7220,
+-	0x1f47c: 0x6c488c20,
+-	// Block 0x7d2, offset 0x1f480
+-	0x1f483: 0x6c4fba20,
+-	0x1f484: 0x6c84f620, 0x1f485: 0x6d356c20, 0x1f486: 0x6cfc7220,
+-	0x1f489: 0x6c100c20, 0x1f48a: 0x6c170020,
+-	0x1f493: 0x6d274a20,
+-	0x1f494: 0x6c510020,
+-	0x1f49c: 0x6ce1e420,
+-	0x1f4a0: 0x6c0c4a20,
+-	0x1f4a5: 0x6c2da420, 0x1f4a7: 0x6c37b620,
+-	0x1f4a8: 0x6c6f3e20,
+-	0x1f4ad: 0x6c2c0a20, 0x1f4ae: 0x6d164420, 0x1f4af: 0x6c7d4620,
+-	0x1f4b1: 0x6d300a20, 0x1f4b3: 0x6c7de420,
+-	0x1f4b4: 0x6d384e20, 0x1f4b5: 0x6c71ee20,
+-	0x1f4b9: 0x6ccd6820, 0x1f4ba: 0x6ccc3820, 0x1f4bb: 0x6c2da820,
+-	0x1f4bc: 0x6c046c20, 0x1f4bd: 0x6c5e7420,
+-	// Block 0x7d3, offset 0x1f4c0
+-	0x1f4c0: 0x6d378620, 0x1f4c3: 0x6d144e20,
+-	0x1f4c5: 0x6c79b020, 0x1f4c6: 0x6cf33e20,
+-	0x1f4ca: 0x6c436420, 0x1f4cb: 0x6c031220,
+-	0x1f4ce: 0x6c463620,
+-	0x1f4d1: 0x6cfb2420, 0x1f4d2: 0x6c484020, 0x1f4d3: 0x6c8ef620,
+-	0x1f4d4: 0x6c1b7620, 0x1f4d5: 0x6c48c020, 0x1f4d6: 0x6c1fdc20,
+-	0x1f4d8: 0x6c83a020, 0x1f4d9: 0x6c242a20, 0x1f4da: 0x6cd63e20,
+-	0x1f4e1: 0x6c08b620,
+-	0x1f4e5: 0x6c0dbc20, 0x1f4e6: 0x6c857820,
+-	0x1f4e9: 0x6c6fae20, 0x1f4ea: 0x6ce54a20, 0x1f4eb: 0x6c347220,
+-	0x1f4ed: 0x6d0bde20, 0x1f4ee: 0x6cc28a20,
+-	0x1f4f1: 0x6c8ac820, 0x1f4f3: 0x6c787c20,
+-	0x1f4f5: 0x6c449620, 0x1f4f6: 0x6d312420,
+-	0x1f4f8: 0x6c3b5820,
+-	// Block 0x7d4, offset 0x1f500
+-	0x1f501: 0x6d146e20, 0x1f503: 0x6c6fd220,
+-	0x1f504: 0x6d067c20, 0x1f505: 0x6c68cc20,
+-	0x1f508: 0x6c93cc20, 0x1f509: 0x6c6fb020, 0x1f50b: 0x6c1e1e20,
+-	0x1f50e: 0x6cfc7e20,
+-	0x1f510: 0x6c7b1620, 0x1f511: 0x6c333e20,
+-	0x1f516: 0x6c952e20, 0x1f517: 0x6cf59a20,
+-	0x1f518: 0x6cbe0820, 0x1f519: 0x6c107420,
+-	0x1f524: 0x6cb84620,
+-	0x1f531: 0x6caf5020, 0x1f532: 0x6d0adc20, 0x1f533: 0x6c07da20,
+-	0x1f534: 0x6c4cb220, 0x1f535: 0x6c484c20,
+-	0x1f539: 0x6c710020,
+-	0x1f53c: 0x6cb82420, 0x1f53e: 0x6c741020,
+-	// Block 0x7d5, offset 0x1f540
+-	0x1f544: 0x6c85c020,
+-	0x1f550: 0x6c570c20, 0x1f551: 0x6c683c20,
+-	0x1f558: 0x6cb84e20, 0x1f55a: 0x6d2c2620, 0x1f55b: 0x6cb82620,
+-	0x1f55d: 0x6d304620, 0x1f55e: 0x6c139020, 0x1f55f: 0x6d1ce820,
+-	0x1f562: 0x6d0bee20,
+-	0x1f564: 0x6c1cc020,
+-	0x1f568: 0x6c1b9a20, 0x1f56a: 0x6cec8620,
+-	0x1f56c: 0x6cd9a620,
+-	0x1f572: 0x6c76cc20, 0x1f573: 0x6d255c20,
+-	0x1f57d: 0x6c1d9c20, 0x1f57f: 0x6cdd6420,
+-	// Block 0x7d6, offset 0x1f580
+-	0x1f580: 0x6ce85820, 0x1f583: 0x6d305620,
+-	0x1f584: 0x6ce2ee20, 0x1f586: 0x6cf36820,
+-	0x1f588: 0x6c264a20, 0x1f589: 0x6c860820, 0x1f58a: 0x6c139420,
+-	0x1f595: 0x6cc66e20, 0x1f596: 0x6c461820, 0x1f597: 0x6cc3bc20,
+-	0x1f599: 0x6c83ce20,
+-	0x1f59e: 0x6ce1c620,
+-	0x1f5a4: 0x6c860a20, 0x1f5a7: 0x6c9c5c20,
+-	0x1f5a9: 0x6c1c3020,
+-	0x1f5ac: 0x6c4bfa20, 0x1f5ad: 0x6c909420, 0x1f5ae: 0x6c209020, 0x1f5af: 0x6cdd6e20,
+-	0x1f5b0: 0x6c690420, 0x1f5b1: 0x6c6d0c20,
+-	0x1f5b5: 0x6c381620, 0x1f5b6: 0x6d2cf620,
+-	0x1f5be: 0x6c6d0e20, 0x1f5bf: 0x6c254220,
+-	// Block 0x7d7, offset 0x1f5c0
+-	0x1f5c2: 0x6c136c20, 0x1f5c3: 0x6d420820,
+-	0x1f5c5: 0x6d2fc420,
+-	0x1f5c8: 0x6cb1c620, 0x1f5c9: 0x6d2dfc20, 0x1f5ca: 0x6cf66420, 0x1f5cb: 0x6d121420,
+-	0x1f5cc: 0x6c3f7420, 0x1f5cd: 0x6c1cce20,
+-	0x1f5d3: 0x6c254a20,
+-	0x1f5d7: 0x6c486820,
+-	0x1f5e3: 0x6c5f0020,
+-	0x1f5e6: 0x6ccb3c20, 0x1f5e7: 0x6d2d8e20,
+-	0x1f5e8: 0x6c8e2420, 0x1f5e9: 0x6ccb3e20, 0x1f5ea: 0x6d132220,
+-	0x1f5f0: 0x6c70ba20,
+-	0x1f5f6: 0x6ce87220,
+-	0x1f5fa: 0x6cc7c620, 0x1f5fb: 0x6d2af820,
+-	0x1f5fc: 0x6c589020,
+-	// Block 0x7d8, offset 0x1f600
+-	0x1f601: 0x6cfc2820, 0x1f603: 0x6cb91a20,
+-	0x1f604: 0x6d2fdc20,
+-	0x1f60b: 0x6c11b220,
+-	0x1f60e: 0x6c7e1820, 0x1f60f: 0x6c869a20,
+-	0x1f610: 0x6cc76420,
+-	0x1f614: 0x6c31c020, 0x1f617: 0x6c8b3020,
+-	0x1f61c: 0x6d1c0620, 0x1f61d: 0x6c86c220,
+-	0x1f620: 0x6c31c620, 0x1f622: 0x6c8d8020,
+-	0x1f62a: 0x6ceca220,
+-	0x1f62f: 0x6c2f1820,
+-	0x1f633: 0x6c6f4020,
+-	0x1f635: 0x6c855e20, 0x1f636: 0x6c7a1620, 0x1f637: 0x6c791e20,
+-	0x1f639: 0x6d31b220,
+-	// Block 0x7d9, offset 0x1f640
+-	0x1f640: 0x6c51b420, 0x1f642: 0x6c091220,
+-	0x1f644: 0x6caf2820,
+-	0x1f64a: 0x6c4f4820,
+-	0x1f651: 0x6d3d2820, 0x1f652: 0x6c332020,
+-	0x1f654: 0x6d16a420,
+-	0x1f65c: 0x6c787e20, 0x1f65d: 0x6d16a620, 0x1f65e: 0x6ca0dc20,
+-	0x1f661: 0x6c118a20, 0x1f663: 0x6c44ee20,
+-	0x1f664: 0x6c788820, 0x1f665: 0x6cd32a20,
+-	0x1f66d: 0x6c8cc620, 0x1f66e: 0x6c07dc20,
+-	0x1f671: 0x6c32b820,
+-	0x1f676: 0x6c72e020, 0x1f677: 0x6ca4e420,
+-	0x1f678: 0x6d3f0020, 0x1f67b: 0x6d401e20,
+-	// Block 0x7da, offset 0x1f680
+-	0x1f683: 0x6ce0ea20,
+-	0x1f686: 0x6cf9be20, 0x1f687: 0x6c4ec020,
+-	0x1f68c: 0x6c94a620, 0x1f68d: 0x6cb99020,
+-	0x1f693: 0x6ca12220,
+-	0x1f694: 0x6cab3a20, 0x1f695: 0x6c4fc820,
+-	0x1f699: 0x6d2c3420, 0x1f69a: 0x6c737020, 0x1f69b: 0x6c23a020,
+-	0x1f6a0: 0x6c864420, 0x1f6a1: 0x6d2c4020, 0x1f6a2: 0x6d1fdc20, 0x1f6a3: 0x6c2d6c20,
+-	0x1f6a4: 0x6c747820, 0x1f6a5: 0x6c073a20,
+-	0x1f6a9: 0x6d11bc20, 0x1f6aa: 0x6cb1c820,
+-	0x1f6b1: 0x6c6d3620, 0x1f6b2: 0x6c766c20, 0x1f6b3: 0x6ccb4020,
+-	0x1f6b4: 0x6d102c20, 0x1f6b5: 0x6c6d3820,
+-	0x1f6b9: 0x6c78dc20,
+-	// Block 0x7db, offset 0x1f6c0
+-	0x1f6c4: 0x6c14de20, 0x1f6c7: 0x6ca74a20,
+-	0x1f6c9: 0x6cedb020, 0x1f6ca: 0x6c942a20,
+-	0x1f6d0: 0x6d277a20, 0x1f6d1: 0x6d108420, 0x1f6d2: 0x6c05a020,
+-	0x1f6d5: 0x6c755220, 0x1f6d6: 0x6d07fc20,
+-	0x1f6d8: 0x6d385820,
+-	0x1f6e0: 0x6c7ce820, 0x1f6e1: 0x6c3cda20,
+-	0x1f6ea: 0x6cc17e20, 0x1f6eb: 0x6ccecc20,
+-	0x1f6ec: 0x6cdce420,
+-	0x1f6f0: 0x6c316820, 0x1f6f2: 0x6c7af820, 0x1f6f3: 0x6cad8c20,
+-	0x1f6fa: 0x6c065020,
+-	0x1f6fe: 0x6c401620, 0x1f6ff: 0x6c700c20,
+-	// Block 0x7dc, offset 0x1f700
+-	0x1f700: 0x6cc47c20,
+-	0x1f704: 0x6c70ca20,
+-	0x1f70a: 0x6cbf6a20,
+-	0x1f70d: 0x6d38c220, 0x1f70e: 0x6c577420, 0x1f70f: 0x6c05e020,
+-	0x1f715: 0x6d145c20, 0x1f717: 0x6d148420,
+-	0x1f718: 0x6d148620,
+-	0x1f71d: 0x6c995020,
+-	0x1f726: 0x6cc86c20,
+-	0x1f72b: 0x6c227c20,
+-	0x1f72e: 0x6c4dca20,
+-	0x1f730: 0x6c238420,
+-	0x1f734: 0x6cf83a20,
+-	0x1f739: 0x6cc2b820, 0x1f73a: 0x6ce56c20,
+-	0x1f73c: 0x6c2e0c20, 0x1f73e: 0x6c4ddc20,
+-	// Block 0x7dd, offset 0x1f740
+-	0x1f747: 0x6d12a620,
+-	0x1f74d: 0x6c353420, 0x1f74e: 0x6ceef820,
+-	0x1f750: 0x6c122e20, 0x1f751: 0x6c2e2620,
+-	0x1f755: 0x6c362620, 0x1f756: 0x6c2c6820,
+-	0x1f758: 0x6cdb9220, 0x1f759: 0x6cc30a20,
+-	0x1f75c: 0x6c368020, 0x1f75d: 0x6cab4420, 0x1f75e: 0x6d081c20,
+-	0x1f762: 0x6cf47820,
+-	0x1f766: 0x6d190820,
+-	0x1f768: 0x6ca1fa20,
+-	0x1f770: 0x6c549620,
+-	0x1f774: 0x6c4dde20,
+-	0x1f77f: 0x6cd22820,
+-	// Block 0x7de, offset 0x1f780
+-	0x1f783: 0x6cc96420,
+-	0x1f788: 0x6c090820, 0x1f78a: 0x6c4dcc20, 0x1f78b: 0x6c6e4620,
+-	0x1f78e: 0x6cbdfa20, 0x1f78f: 0x6c25d420,
+-	0x1f790: 0x6c22a620, 0x1f792: 0x6c046e20,
+-	0x1f797: 0x6c32f020,
+-	0x1f79c: 0x6cf84220,
+-	0x1f7a7: 0x6d33c020,
+-	0x1f7a8: 0x6c949220, 0x1f7aa: 0x6c54b620, 0x1f7ab: 0x6c601420,
+-	0x1f7ac: 0x6c48c820,
+-	0x1f7b2: 0x6cacd820,
+-	// Block 0x7df, offset 0x1f7c0
+-	0x1f7c0: 0x6d39c220,
+-	0x1f7c5: 0x6c08fc20, 0x1f7c7: 0x6d21ae20,
+-	0x1f7d2: 0x6cb6c220,
+-	0x1f7d5: 0x6c50b420, 0x1f7d6: 0x6c1ed420,
+-	0x1f7d9: 0x6ccec220, 0x1f7da: 0x6c1be020, 0x1f7db: 0x6c0eac20,
+-	0x1f7df: 0x6cc62420,
+-	0x1f7e0: 0x6d1ef820,
+-	0x1f7e4: 0x6ca39620,
+-	0x1f7e9: 0x6c5b9420, 0x1f7ea: 0x6ce57620, 0x1f7eb: 0x6c04c220,
+-	0x1f7f0: 0x6d057620,
+-	0x1f7f4: 0x6d1f1020, 0x1f7f5: 0x6c1c0620,
+-	0x1f7ff: 0x6c526220,
+-	// Block 0x7e0, offset 0x1f800
+-	0x1f803: 0x6cec7020,
+-	0x1f806: 0x6d01ce20,
+-	0x1f80a: 0x6c748c20,
+-	0x1f80c: 0x6cdbec20, 0x1f80d: 0x6cbe2c20, 0x1f80e: 0x6d3bbc20,
+-	0x1f815: 0x6c617620,
+-	0x1f818: 0x6c091420, 0x1f81a: 0x6cf59c20,
+-	0x1f820: 0x6c602820, 0x1f822: 0x6c75c620,
+-	0x1f825: 0x6c89ee20, 0x1f826: 0x6d1eb620,
+-	0x1f82d: 0x6c70ea20,
+-	0x1f832: 0x6d266a20,
+-	0x1f835: 0x6c055e20,
+-	0x1f838: 0x6cafaa20, 0x1f83b: 0x6d2b3820,
+-	0x1f83e: 0x6d165820, 0x1f83f: 0x6c2bc820,
+-	// Block 0x7e1, offset 0x1f840
+-	0x1f842: 0x6cbc9220,
+-	0x1f844: 0x6cdd4c20, 0x1f846: 0x6c22ae20,
+-	0x1f848: 0x6d3aa220, 0x1f849: 0x6d267420,
+-	0x1f84f: 0x6c682820,
+-	0x1f854: 0x6cd23e20, 0x1f857: 0x6d148820,
+-	0x1f858: 0x6cf99220,
+-	0x1f860: 0x6d254220,
+-	0x1f865: 0x6c4c6020, 0x1f867: 0x6c789020,
+-	0x1f86a: 0x6c252420, 0x1f86b: 0x6d171a20,
+-	0x1f875: 0x6c85c220, 0x1f877: 0x6c2d0c20,
+-	0x1f87a: 0x6cf5d620,
+-	0x1f87f: 0x6c09c020,
+-	// Block 0x7e2, offset 0x1f880
+-	0x1f882: 0x6c0b3420, 0x1f883: 0x6c99ea20,
+-	0x1f884: 0x6c85e420, 0x1f887: 0x6cda1820,
+-	0x1f890: 0x6c8e5620, 0x1f891: 0x6c4b5420, 0x1f892: 0x6c78b620,
+-	0x1f897: 0x6d151220,
+-	0x1f899: 0x6cf7f620, 0x1f89a: 0x6d1a7c20,
+-	0x1f89f: 0x6c78c020,
+-	0x1f8a3: 0x6ccf6020,
+-	0x1f8a7: 0x6cf2bc20,
+-	0x1f8ae: 0x6cb0b620,
+-	0x1f8b6: 0x6d26dc20, 0x1f8b7: 0x6c538020,
+-	0x1f8ba: 0x6c867220, 0x1f8bb: 0x6c405020,
+-	// Block 0x7e3, offset 0x1f8c0
+-	0x1f8c3: 0x6c74d620,
+-	0x1f8c4: 0x6cfae820,
+-	0x1f8c9: 0x6c2cf020,
+-	0x1f8cc: 0x6c878820,
+-	0x1f8d3: 0x6ce83420,
+-	0x1f8d8: 0x6c645820, 0x1f8db: 0x6c041420,
+-	0x1f8dc: 0x6c2c0c20, 0x1f8dd: 0x6d2efc20,
+-	0x1f8e3: 0x6d22bc20,
+-	0x1f8e8: 0x6c333420,
+-	0x1f8ed: 0x6c115c20, 0x1f8ee: 0x6ce88620,
+-	0x1f8f6: 0x6cdf9420, 0x1f8f7: 0x6c5fee20,
+-	0x1f8f8: 0x6cb59420, 0x1f8f9: 0x6ccd7620, 0x1f8fa: 0x6ca6fa20,
+-	// Block 0x7e4, offset 0x1f900
+-	0x1f906: 0x6c498c20,
+-	0x1f908: 0x6c08e420, 0x1f90b: 0x6d037820,
+-	0x1f913: 0x6d31fa20,
+-	0x1f919: 0x6cc94a20, 0x1f91b: 0x6ca0b820,
+-	0x1f91d: 0x6c3dc420,
+-	0x1f922: 0x6ce1a820, 0x1f923: 0x6c055c20,
+-	0x1f92a: 0x6c0c8a20,
+-	0x1f92c: 0x6cf56620, 0x1f92e: 0x6c6a5e20,
+-	0x1f936: 0x6c6cd220,
+-	0x1f93e: 0x6cb8b020,
+-	// Block 0x7e5, offset 0x1f940
+-	0x1f948: 0x6cd89820, 0x1f949: 0x6c6e1620, 0x1f94b: 0x6c1b8820,
+-	0x1f957: 0x6c6e1c20,
+-	0x1f965: 0x6cdc3a20,
+-	0x1f96f: 0x6d2bde20,
+-	0x1f970: 0x6c83e020,
+-	0x1f974: 0x6d3d0620,
+-	0x1f979: 0x6c0ba820,
+-	0x1f97f: 0x6cea6220,
+-	// Block 0x7e6, offset 0x1f980
+-	0x1f983: 0x6c0a1820,
+-	0x1f986: 0x6c3ac220,
+-	0x1f98a: 0x6c2a8220,
+-	0x1f98c: 0x6d3a2620,
+-	0x1f991: 0x6c70dc20,
+-	0x1f999: 0x6d15b020,
+-	0x1f99c: 0x6d0b6420, 0x1f99f: 0x6c1bd820,
+-	0x1f9a0: 0x6c488e20, 0x1f9a1: 0x6d34d020,
+-	0x1f9a8: 0x6cc61620, 0x1f9ab: 0x6d1e8a20,
+-	0x1f9ad: 0x6c0ea820, 0x1f9af: 0x6c611820,
+-	0x1f9b0: 0x6cb23620, 0x1f9b3: 0x6d1b9c20,
+-	0x1f9b4: 0x6d0f4220, 0x1f9b5: 0x6c98b420,
+-	0x1f9bd: 0x6c904e20, 0x1f9be: 0x6ca2ca20, 0x1f9bf: 0x6cc9bc20,
+-	// Block 0x7e7, offset 0x1f9c0
+-	0x1f9c0: 0x6c1fda20, 0x1f9c2: 0x6c221c20, 0x1f9c3: 0x6cf41a20,
+-	0x1f9c4: 0x6cc5ae20,
+-	0x1f9c8: 0x6c272420, 0x1f9c9: 0x6c5fc420, 0x1f9cb: 0x6d15b820,
+-	0x1f9cd: 0x6cc45e20,
+-	0x1f9d0: 0x6c5d9820, 0x1f9d1: 0x6c484220, 0x1f9d3: 0x6d301020,
+-	0x1f9d4: 0x6cb08220, 0x1f9d7: 0x6d288220,
+-	0x1f9d8: 0x6c04e020, 0x1f9d9: 0x6c6a6a20,
+-	0x1f9dc: 0x6c53e220, 0x1f9df: 0x6cfc7620,
+-	0x1f9e0: 0x6c5a8820,
+-	0x1f9e9: 0x6d2bc420, 0x1f9ea: 0x6c270820, 0x1f9eb: 0x6c436c20,
+-	0x1f9ed: 0x6cb08420, 0x1f9ef: 0x6cb14620,
+-	0x1f9f0: 0x6cd23620, 0x1f9f1: 0x6c898620, 0x1f9f2: 0x6d267620, 0x1f9f3: 0x6c565020,
+-	0x1f9f4: 0x6c0b6a20, 0x1f9f7: 0x6cc61e20,
+-	0x1f9f9: 0x6cc62020,
+-	// Block 0x7e8, offset 0x1fa00
+-	0x1fa04: 0x6d13c420, 0x1fa05: 0x6d338820, 0x1fa07: 0x6c6c2820,
+-	0x1fa08: 0x6cf22020, 0x1fa09: 0x6c173420, 0x1fa0b: 0x6cbf9a20,
+-	0x1fa0d: 0x6d3a5620, 0x1fa0f: 0x6d2c1c20,
+-	0x1fa10: 0x6cb34820, 0x1fa11: 0x6c019e20, 0x1fa13: 0x6c50c220,
+-	0x1fa15: 0x6c1e5620, 0x1fa16: 0x6d0c6020,
+-	0x1fa1a: 0x6cd31820, 0x1fa1b: 0x6c566020,
+-	0x1fa1c: 0x6c35dc20,
+-	0x1fa34: 0x6cd24020,
+-	0x1fa39: 0x6ceaaa20, 0x1fa3a: 0x6c272c20, 0x1fa3b: 0x6cec6a20,
+-	0x1fa3c: 0x6cb2f420, 0x1fa3d: 0x6cc6f420, 0x1fa3e: 0x6c705220,
+-	// Block 0x7e9, offset 0x1fa40
+-	0x1fa40: 0x6c0e4a20,
+-	0x1fa50: 0x6d222820, 0x1fa51: 0x6c30a220, 0x1fa53: 0x6c4ace20,
+-	0x1fa54: 0x6cd45420, 0x1fa57: 0x6cdd0820,
+-	0x1fa58: 0x6ca68220, 0x1fa59: 0x6d385c20, 0x1fa5a: 0x6c905220, 0x1fa5b: 0x6c0dca20,
+-	0x1fa5c: 0x6d421420, 0x1fa5d: 0x6d12d620, 0x1fa5e: 0x6cc4b420,
+-	0x1fa60: 0x6c8cb220, 0x1fa61: 0x6cc96c20,
+-	0x1fa64: 0x6c82b820, 0x1fa65: 0x6c35e820, 0x1fa67: 0x6d381a20,
+-	0x1fa68: 0x6c612820, 0x1fa6b: 0x6c35ea20,
+-	0x1fa6f: 0x6d428420,
+-	0x1fa72: 0x6ca31820, 0x1fa73: 0x6d27dc20,
+-	// Block 0x7ea, offset 0x1fa80
+-	0x1fa8a: 0x6d016c20, 0x1fa8b: 0x6d418a20,
+-	0x1fa8c: 0x6cd5aa20, 0x1fa8d: 0x6c2fce20, 0x1fa8e: 0x6c384620, 0x1fa8f: 0x6cc58a20,
+-	0x1fa91: 0x6c051820, 0x1fa92: 0x6c4de020, 0x1fa93: 0x6c530a20,
+-	0x1fa94: 0x6d13d020, 0x1fa96: 0x6d13d220,
+-	0x1fa99: 0x6c77da20, 0x1fa9a: 0x6d16de20, 0x1fa9b: 0x6c5b1e20,
+-	0x1fa9c: 0x6d329020,
+-	0x1faae: 0x6c6e6220,
+-	0x1fab1: 0x6c43d220,
+-	0x1fab4: 0x6ca9fa20, 0x1fab5: 0x6cbca220, 0x1fab7: 0x6c2e7e20,
+-	0x1fab9: 0x6c61c420, 0x1faba: 0x6d171e20, 0x1fabb: 0x6d14b620,
+-	0x1fabd: 0x6c3e2c20, 0x1fabe: 0x6cd77220, 0x1fabf: 0x6cd77420,
+-	// Block 0x7eb, offset 0x1fac0
+-	0x1fac0: 0x6d1e1e20, 0x1fac1: 0x6c78fe20, 0x1fac2: 0x6c573020, 0x1fac3: 0x6c53b620,
+-	0x1fac7: 0x6c50ec20,
+-	0x1faca: 0x6c509620, 0x1facb: 0x6cb9f820,
+-	0x1facc: 0x6cb85020, 0x1face: 0x6cd8a620,
+-	0x1fad0: 0x6c051e20,
+-	0x1faec: 0x6c6d9e20, 0x1faed: 0x6c789220,
+-	0x1faf3: 0x6c001a20,
+-	0x1faf4: 0x6c908020, 0x1faf6: 0x6ce84820,
+-	0x1faf9: 0x6c207020,
+-	0x1fafc: 0x6cd98620, 0x1fafd: 0x6c19d620, 0x1faff: 0x6cee6a20,
+-	// Block 0x7ec, offset 0x1fb00
+-	0x1fb02: 0x6caa5220,
+-	0x1fb04: 0x6c6fb620, 0x1fb07: 0x6c0d2c20,
+-	0x1fb21: 0x6cffda20, 0x1fb22: 0x6cd0f820, 0x1fb23: 0x6c545020,
+-	0x1fb26: 0x6d3ad020,
+-	0x1fb28: 0x6c490e20, 0x1fb29: 0x6c5eb220, 0x1fb2b: 0x6c61dc20,
+-	0x1fb2d: 0x6cf5da20, 0x1fb2f: 0x6ccf3e20,
+-	0x1fb30: 0x6cab7e20, 0x1fb31: 0x6c553c20, 0x1fb32: 0x6cde4220, 0x1fb33: 0x6cff7c20,
+-	0x1fb35: 0x6d2a7c20,
+-	0x1fb38: 0x6c0fee20, 0x1fb39: 0x6cb77820, 0x1fb3a: 0x6cebd620, 0x1fb3b: 0x6ceabe20,
+-	0x1fb3c: 0x6c2a0c20, 0x1fb3e: 0x6ca33020,
+-	// Block 0x7ed, offset 0x1fb40
+-	0x1fb60: 0x6d2cee20, 0x1fb63: 0x6d0b9020,
+-	0x1fb66: 0x6cf44020, 0x1fb67: 0x6d31aa20,
+-	0x1fb68: 0x6c2a8e20, 0x1fb69: 0x6c509a20, 0x1fb6b: 0x6c01ea20,
+-	0x1fb6c: 0x6cafda20, 0x1fb6d: 0x6ccb2220, 0x1fb6e: 0x6c3bbc20, 0x1fb6f: 0x6c485420,
+-	0x1fb73: 0x6cb35420,
+-	0x1fb77: 0x6d088820,
+-	0x1fb78: 0x6c4d9c20, 0x1fb79: 0x6c427420, 0x1fb7a: 0x6c034620, 0x1fb7b: 0x6d3f7620,
+-	0x1fb7c: 0x6c9c0020, 0x1fb7e: 0x6c5dba20,
+-	// Block 0x7ee, offset 0x1fb80
+-	0x1fba7: 0x6c2cc220,
+-	0x1fba8: 0x6cf5dc20, 0x1fbab: 0x6c26ee20,
+-	0x1fbac: 0x6ca47a20,
+-	0x1fbb0: 0x6c2dbe20, 0x1fbb1: 0x6c95f820, 0x1fbb2: 0x6c789e20,
+-	0x1fbb7: 0x6d178e20,
+-	0x1fbb8: 0x6c744420, 0x1fbb9: 0x6c512420, 0x1fbbb: 0x6c602c20,
+-	0x1fbbe: 0x6c51c620, 0x1fbbf: 0x6ca82820,
+-	// Block 0x7ef, offset 0x1fbc0
+-	0x1fbc0: 0x6cc8f620, 0x1fbc1: 0x6cb99220, 0x1fbc2: 0x6c276c20, 0x1fbc3: 0x6cce6c20,
+-	0x1fbc4: 0x6c78ae20, 0x1fbc5: 0x6d3a1220, 0x1fbc7: 0x6cd1b820,
+-	0x1fbc8: 0x6c93da20, 0x1fbc9: 0x6c635c20, 0x1fbca: 0x6cb10c20, 0x1fbcb: 0x6c546e20,
+-	0x1fbcc: 0x6c5ec420, 0x1fbcd: 0x6cde5420, 0x1fbce: 0x6c1dac20, 0x1fbcf: 0x6cf29020,
+-	0x1fbd0: 0x6c6e8020, 0x1fbd1: 0x6cb30e20, 0x1fbd2: 0x6d2cf220, 0x1fbd3: 0x6d02d420,
+-	0x1fbd6: 0x6c0b9420,
+-	0x1fbd9: 0x6d06ce20,
+-	0x1fbde: 0x6c471020, 0x1fbdf: 0x6c6be620,
+-	0x1fbe2: 0x6cfb6a20,
+-	0x1fbf8: 0x6c356420, 0x1fbfa: 0x6c0f0020, 0x1fbfb: 0x6cb15420,
+-	0x1fbff: 0x6d28ea20,
+-	// Block 0x7f0, offset 0x1fc00
+-	0x1fc01: 0x6cac2420, 0x1fc02: 0x6ce85a20,
+-	0x1fc04: 0x6d1bb420,
+-	0x1fc2e: 0x6cfde220,
+-	0x1fc31: 0x6caaf420, 0x1fc32: 0x6c438e20, 0x1fc33: 0x6c0f0220,
+-	0x1fc34: 0x6d01a420,
+-	0x1fc38: 0x6d315c20, 0x1fc39: 0x6d214620, 0x1fc3a: 0x6ca6a420,
+-	// Block 0x7f1, offset 0x1fc40
+-	0x1fc40: 0x6d0a9220, 0x1fc41: 0x6cec3620, 0x1fc43: 0x6c021820,
+-	0x1fc44: 0x6c4ece20, 0x1fc45: 0x6c52b220, 0x1fc46: 0x6c27e220,
+-	0x1fc48: 0x6caac220, 0x1fc4a: 0x6c12b020, 0x1fc4b: 0x6c604820,
+-	0x1fc4c: 0x6ca5ae20, 0x1fc4d: 0x6d1e4020, 0x1fc4e: 0x6cfed220,
+-	0x1fc50: 0x6c1faa20, 0x1fc51: 0x6d121020, 0x1fc53: 0x6c440220,
+-	0x1fc54: 0x6ce0fc20, 0x1fc55: 0x6c065220, 0x1fc56: 0x6c15be20,
+-	0x1fc58: 0x6d06ec20, 0x1fc5b: 0x6c4d2020,
+-	0x1fc5d: 0x6c1db620, 0x1fc5f: 0x6c65a620,
+-	0x1fc60: 0x6d422620,
+-	0x1fc64: 0x6cf0a420, 0x1fc65: 0x6c265220, 0x1fc66: 0x6caf6c20,
+-	// Block 0x7f2, offset 0x1fc80
+-	0x1fc90: 0x6c592c20, 0x1fc92: 0x6cf63a20,
+-	0x1fc94: 0x6cae4c20, 0x1fc95: 0x6c8e3420, 0x1fc96: 0x6ca24a20, 0x1fc97: 0x6c9ec620,
+-	0x1fc98: 0x6c812020, 0x1fc99: 0x6ce9fe20, 0x1fc9a: 0x6c048420,
+-	0x1fc9d: 0x6c439820, 0x1fc9f: 0x6c7aa020,
+-	0x1fca2: 0x6c636a20, 0x1fca3: 0x6c0e7c20,
+-	// Block 0x7f3, offset 0x1fcc0
+-	0x1fccd: 0x6c592e20, 0x1fccf: 0x6d40c420,
+-	0x1fcd0: 0x6c960e20,
+-	0x1fcd7: 0x6c840a20,
+-	0x1fcd9: 0x6c515620, 0x1fcda: 0x6ca06220,
+-	0x1fcdc: 0x6cd72a20, 0x1fcdd: 0x6cd00420, 0x1fcde: 0x6c777020, 0x1fcdf: 0x6c1c4020,
+-	0x1fce0: 0x6c8d3420, 0x1fce1: 0x6c95ba20,
+-	0x1fce4: 0x6d0dae20, 0x1fce5: 0x6d2fc620, 0x1fce6: 0x6c1fae20, 0x1fce7: 0x6c47ac20,
+-	0x1fce8: 0x6cbde020, 0x1fcea: 0x6cdff220, 0x1fceb: 0x6c3be220,
+-	0x1fcec: 0x6ce8d220,
+-	0x1fcf1: 0x6c8d3620,
+-	0x1fcf4: 0x6c810820,
+-	// Block 0x7f4, offset 0x1fd00
+-	0x1fd16: 0x6c7fa620, 0x1fd17: 0x6d299220,
+-	0x1fd18: 0x6cf50820,
+-	0x1fd1d: 0x6c840c20, 0x1fd1e: 0x6c000a20, 0x1fd1f: 0x6c94b620,
+-	0x1fd20: 0x6d353e20, 0x1fd21: 0x6c1dc820, 0x1fd22: 0x6c67f020,
+-	0x1fd24: 0x6c64c620,
+-	0x1fd29: 0x6c950020, 0x1fd2a: 0x6d153020,
+-	0x1fd2c: 0x6cce0820,
+-	0x1fd3b: 0x6c5f0220,
+-	// Block 0x7f5, offset 0x1fd40
+-	0x1fd5c: 0x6d181e20, 0x1fd5d: 0x6ca8ea20,
+-	0x1fd61: 0x6c5c0a20, 0x1fd63: 0x6d2bf020,
+-	0x1fd66: 0x6c4e6020,
+-	0x1fd68: 0x6d1afa20, 0x1fd69: 0x6c0a1a20, 0x1fd6a: 0x6c014620, 0x1fd6b: 0x6cf97220,
+-	0x1fd6c: 0x6ca60020,
+-	0x1fd70: 0x6c2b3e20, 0x1fd71: 0x6c65cc20, 0x1fd72: 0x6cac6820,
+-	0x1fd75: 0x6d23bc20, 0x1fd76: 0x6c1fc620, 0x1fd77: 0x6d289820,
+-	0x1fd79: 0x6c13fc20, 0x1fd7b: 0x6d307620,
+-	0x1fd7c: 0x6ccb4220, 0x1fd7e: 0x6cae3620, 0x1fd7f: 0x6c472820,
+-	// Block 0x7f6, offset 0x1fd80
+-	0x1fd80: 0x6d307820,
+-	0x1fd86: 0x6c842420, 0x1fd87: 0x6c30be20,
+-	0x1fd89: 0x6c1dd020, 0x1fd8b: 0x6d419620,
+-	0x1fd8c: 0x6cb39e20, 0x1fd8f: 0x6ccefc20,
+-	0x1fd90: 0x6c8fa220,
+-	0x1fda2: 0x6cd5fe20,
+-	0x1fda4: 0x6c6d3a20, 0x1fda5: 0x6c8d4820,
+-	0x1fda8: 0x6c774220, 0x1fda9: 0x6c7e9220, 0x1fdab: 0x6d05cc20,
+-	0x1fdac: 0x6c6d3c20, 0x1fdae: 0x6c1fea20,
+-	0x1fdb2: 0x6d26de20,
+-	// Block 0x7f7, offset 0x1fdc0
+-	0x1fdc6: 0x6c971820, 0x1fdc7: 0x6d020820,
+-	0x1fdc8: 0x6c6f8620, 0x1fdc9: 0x6c627420, 0x1fdcb: 0x6d26e820,
+-	0x1fdcf: 0x6c64f220,
+-	0x1fdd1: 0x6c4e3020, 0x1fdd3: 0x6cc98a20,
+-	0x1fdd4: 0x6c5c2820, 0x1fdd5: 0x6cbc5a20, 0x1fdd7: 0x6ccb5220,
+-	0x1fdd8: 0x6d419a20, 0x1fddb: 0x6c91d620,
+-	0x1fddc: 0x6c57c420, 0x1fddd: 0x6c1e6820, 0x1fdde: 0x6ccd5c20, 0x1fddf: 0x6cf31220,
+-	0x1fde0: 0x6c60a220, 0x1fde1: 0x6d3d9620, 0x1fde2: 0x6cfb8c20, 0x1fde3: 0x6d141020,
+-	0x1fde4: 0x6c4c8820, 0x1fde5: 0x6c7d1c20,
+-	// Block 0x7f8, offset 0x1fe00
+-	0x1fe11: 0x6d38a820,
+-	0x1fe14: 0x6c929e20, 0x1fe16: 0x6c0e9020, 0x1fe17: 0x6cd28a20,
+-	0x1fe18: 0x6d1d4a20, 0x1fe19: 0x6c7a5c20,
+-	0x1fe39: 0x6d36d820, 0x1fe3a: 0x6d00e820,
+-	0x1fe3d: 0x6d135420, 0x1fe3e: 0x6c36b420, 0x1fe3f: 0x6c940420,
+-	// Block 0x7f9, offset 0x1fe40
+-	0x1fe40: 0x6c4f1420, 0x1fe41: 0x6d135620,
+-	0x1fe46: 0x6c962c20, 0x1fe47: 0x6c21dc20,
+-	0x1fe48: 0x6c397020, 0x1fe49: 0x6d34a020, 0x1fe4a: 0x6d1d5020, 0x1fe4b: 0x6cf1f220,
+-	0x1fe4c: 0x6cebf220, 0x1fe4d: 0x6c00d620, 0x1fe4e: 0x6d21b020,
+-	0x1fe51: 0x6c571a20, 0x1fe53: 0x6c8b3220,
+-	0x1fe54: 0x6c6dd620, 0x1fe55: 0x6d28ca20,
+-	0x1fe67: 0x6d29e820,
+-	0x1fe68: 0x6c336420, 0x1fe6a: 0x6c629220,
+-	0x1fe6e: 0x6cf2a220,
+-	0x1fe70: 0x6c60ba20, 0x1fe71: 0x6cf6e420, 0x1fe73: 0x6d2e8620,
+-	0x1fe74: 0x6ce95c20,
+-	// Block 0x7fa, offset 0x1fe80
+-	0x1fe8a: 0x6d21b220,
+-	0x1fe8f: 0x6c8b4620,
+-	0x1fe92: 0x6d372420, 0x1fe93: 0x6cd20a20,
+-	0x1fe95: 0x6c81c220, 0x1fe96: 0x6c7f6020, 0x1fe97: 0x6cf03620,
+-	0x1fe98: 0x6cad7220, 0x1fe99: 0x6c1b6220, 0x1fe9a: 0x6d1d1420, 0x1fe9b: 0x6c314020,
+-	0x1fe9d: 0x6c314220, 0x1fe9f: 0x6c067620,
+-	0x1fea0: 0x6cbcf020, 0x1fea1: 0x6cd62020, 0x1fea3: 0x6d34a820,
+-	0x1fea9: 0x6c8b4820, 0x1feab: 0x6caed620,
+-	0x1fead: 0x6d300620,
+-	0x1febf: 0x6cab5a20,
+-	// Block 0x7fb, offset 0x1fec0
+-	0x1fec2: 0x6d023c20, 0x1fec3: 0x6c60d820,
+-	0x1fec4: 0x6c7f6220, 0x1fec5: 0x6d1cb020, 0x1fec6: 0x6c134c20,
+-	0x1fed6: 0x6c820020,
+-	0x1fedd: 0x6c952820,
+-	0x1fee1: 0x6c8fbc20, 0x1fee2: 0x6cf91020,
+-	0x1fee6: 0x6c8c7620,
+-	0x1fee9: 0x6c4aa020,
+-	0x1fef3: 0x6d03b020,
+-	0x1fef7: 0x6c848620,
+-	0x1fef8: 0x6c221620,
+-	// Block 0x7fc, offset 0x1ff00
+-	0x1ff07: 0x6cbebc20,
+-	0x1ff11: 0x6c652e20, 0x1ff12: 0x6c2a4420, 0x1ff13: 0x6c661420,
+-	0x1ff14: 0x6cbee820, 0x1ff15: 0x6d026e20, 0x1ff16: 0x6d1d5a20,
+-	0x1ff1f: 0x6c4d0020,
+-	0x1ff21: 0x6d311820, 0x1ff22: 0x6ccf0420, 0x1ff23: 0x6c9c9a20,
+-	0x1ff24: 0x6c58ba20,
+-	0x1ff31: 0x6c248220, 0x1ff32: 0x6cc7e820, 0x1ff33: 0x6cc95a20,
+-	0x1ff34: 0x6c5e4620, 0x1ff35: 0x6d143420, 0x1ff37: 0x6c2b4e20,
+-	0x1ff39: 0x6c949e20, 0x1ff3b: 0x6d193e20,
+-	// Block 0x7fd, offset 0x1ff40
+-	0x1ff42: 0x6c100020, 0x1ff43: 0x6cad1820,
+-	0x1ff44: 0x6ce04220, 0x1ff45: 0x6c35a420, 0x1ff46: 0x6d29ee20, 0x1ff47: 0x6c23c420,
+-	0x1ff53: 0x6d2d0a20,
+-	0x1ff55: 0x6cf82620, 0x1ff56: 0x6c98b020,
+-	0x1ff58: 0x6c7eca20, 0x1ff59: 0x6d287820,
+-	0x1ff61: 0x6c36e620,
+-	0x1ff65: 0x6c2f0e20,
+-	0x1ff6d: 0x6c493c20,
+-	0x1ff71: 0x6c596620,
+-	0x1ff75: 0x6cd40620, 0x1ff76: 0x6c663220,
+-	0x1ff79: 0x6d2dce20, 0x1ff7a: 0x6c610620, 0x1ff7b: 0x6c596820,
+-	// Block 0x7fe, offset 0x1ff80
+-	0x1ff85: 0x6cedb220, 0x1ff86: 0x6c95d820,
+-	0x1ff8f: 0x6c315620,
+-	0x1ff95: 0x6c893c20,
+-	0x1ffa3: 0x6ca7ea20,
+-	0x1ffa4: 0x6ca41c20, 0x1ffa5: 0x6c6fc820, 0x1ffa6: 0x6d266c20,
+-	0x1ffa9: 0x6d108820, 0x1ffaa: 0x6c204c20,
+-	0x1ffae: 0x6c11cc20, 0x1ffaf: 0x6c84f820,
+-	0x1ffb0: 0x6c33d420, 0x1ffb1: 0x6ca41e20, 0x1ffb2: 0x6ca42020,
+-	0x1ffb8: 0x6cc63820,
+-	0x1ffbd: 0x6d267820,
+-	// Block 0x7ff, offset 0x1ffc0
+-	0x1ffc0: 0x6d1ee620, 0x1ffc2: 0x6d19a420,
+-	0x1ffc4: 0x6c4c5820,
+-	0x1ffc8: 0x6c295420,
+-	0x1ffd1: 0x6d312620, 0x1ffd2: 0x6c9c3c20, 0x1ffd3: 0x6c2e6820,
+-	0x1ffd6: 0x6d312820,
+-	0x1ffda: 0x6c7abe20,
+-	0x1ffdc: 0x6c4de220, 0x1ffdd: 0x6cd98020, 0x1ffde: 0x6c50d020, 0x1ffdf: 0x6c5e9620,
+-	0x1ffe0: 0x6d302e20,
+-	0x1ffe4: 0x6c0dd620, 0x1ffe6: 0x6ceef220, 0x1ffe7: 0x6ce7d220,
+-	0x1ffe9: 0x6ce88c20,
+-	0x1ffec: 0x6c426e20, 0x1ffed: 0x6c908220, 0x1ffee: 0x6cc2c820, 0x1ffef: 0x6c5d2220,
+-	0x1fff0: 0x6d3ba420, 0x1fff1: 0x6cc3b220, 0x1fff3: 0x6c533a20,
+-	0x1fff5: 0x6c296020, 0x1fff6: 0x6c510420, 0x1fff7: 0x6cdf6e20,
+-	0x1fff8: 0x6c48ca20, 0x1fffa: 0x6d230220,
+-	0x1fffc: 0x6d0baa20, 0x1ffff: 0x6cec8c20,
+-	// Block 0x800, offset 0x20000
+-	0x20000: 0x6cc43820,
+-	0x20005: 0x6c744620, 0x20006: 0x6cab3820,
+-	0x20009: 0x6cc29c20, 0x2000a: 0x6d347220,
+-	0x2000d: 0x6c8d1820, 0x2000e: 0x6cf37020, 0x2000f: 0x6d033c20,
+-	0x20010: 0x6c26ae20, 0x20012: 0x6d24f220, 0x20013: 0x6d261e20,
+-	0x20017: 0x6ca13820,
+-	0x20019: 0x6d1f5420,
+-	0x2001e: 0x6cf45820,
+-	0x20020: 0x6d2ebe20, 0x20023: 0x6d07b820,
+-	0x20026: 0x6cc53c20, 0x20027: 0x6c4be220,
+-	0x20028: 0x6d23be20,
+-	0x2002e: 0x6cf9fc20, 0x2002f: 0x6c0b5220,
+-	0x20030: 0x6d1f7e20, 0x20032: 0x6d1a1420,
+-	0x20034: 0x6d083220, 0x20035: 0x6d1f8c20, 0x20036: 0x6c827a20,
+-	0x2003c: 0x6ce6a620, 0x2003f: 0x6d311a20,
+-	// Block 0x801, offset 0x20040
+-	0x20044: 0x6d292420, 0x20045: 0x6c40ba20, 0x20046: 0x6c7e5620,
+-	0x20049: 0x6cc39e20,
+-	0x2004e: 0x6c70ec20,
+-	0x20050: 0x6c20fa20, 0x20051: 0x6c263e20, 0x20052: 0x6cea3a20, 0x20053: 0x6c001220,
+-	0x20057: 0x6d3edc20,
+-	0x2005a: 0x6c59a620, 0x2005b: 0x6d167c20,
+-	0x20069: 0x6c062e20, 0x2006a: 0x6c1afc20,
+-	0x2006d: 0x6cc63a20,
+-	0x20074: 0x6c913220, 0x20077: 0x6c6a6c20,
+-	0x20078: 0x6cd30a20, 0x2007a: 0x6d413620,
+-	// Block 0x802, offset 0x20080
+-	0x20081: 0x6d167e20,
+-	0x20084: 0x6c3bc820, 0x20085: 0x6c3bca20,
+-	0x20089: 0x6ca0c420,
+-	0x2008d: 0x6cd59a20,
+-	0x2009b: 0x6c023e20,
+-	0x2009d: 0x6cb05620, 0x2009e: 0x6cb27820, 0x2009f: 0x6cb2f820,
+-	0x200a0: 0x6c639e20, 0x200a1: 0x6d38ca20, 0x200a3: 0x6cbf9e20,
+-	0x200a7: 0x6d1fa620,
+-	0x200a8: 0x6cdfd020, 0x200ab: 0x6cc6f620,
+-	0x200ad: 0x6c9d2020,
+-	0x200b6: 0x6d16ac20,
+-	0x200b8: 0x6cc6fc20, 0x200bb: 0x6c8ace20,
+-	0x200bc: 0x6cbf0220,
+-	// Block 0x803, offset 0x200c0
+-	0x200d9: 0x6c5b2020, 0x200da: 0x6c61a020,
+-	0x200df: 0x6c433a20,
+-	0x200e7: 0x6d1f0420,
+-	0x200e8: 0x6c138220, 0x200e9: 0x6c2a6020, 0x200ea: 0x6d19ac20,
+-	0x200ec: 0x6d22de20, 0x200ed: 0x6c06fc20, 0x200ef: 0x6c0ed020,
+-	// Block 0x804, offset 0x20100
+-	0x20114: 0x6cbb6820,
+-	0x2011a: 0x6c141c20,
+-	0x2011c: 0x6d02be20, 0x2011e: 0x6c1b1420,
+-	0x20123: 0x6d2a7220,
+-	0x20124: 0x6c7c6020, 0x20126: 0x6c3aa220,
+-	0x20129: 0x6cddea20, 0x2012a: 0x6c48f420,
+-	0x2012d: 0x6c342620,
+-	0x20132: 0x6c4a5420,
+-	0x20134: 0x6d345020,
+-	// Block 0x805, offset 0x20140
+-	0x2014c: 0x6c15a620, 0x2014d: 0x6ca4ec20,
+-	0x20150: 0x6c553e20, 0x20152: 0x6ce21820,
+-	0x20161: 0x6d175620,
+-	0x20164: 0x6ca82a20, 0x20165: 0x6d2d3e20, 0x20166: 0x6c587220,
+-	0x20168: 0x6c325620, 0x2016a: 0x6cb78620, 0x2016b: 0x6c12e420,
+-	0x2016e: 0x6c20cc20,
+-	0x20172: 0x6c264e20,
+-	0x20176: 0x6d361820, 0x20177: 0x6c453020,
+-	0x2017b: 0x6cf26e20,
+-	// Block 0x806, offset 0x20180
+-	0x20189: 0x6c325820,
+-	0x2018d: 0x6c1b2420,
+-	0x20191: 0x6c01be20, 0x20192: 0x6c7df820,
+-	0x20194: 0x6cf2e820,
+-	0x20198: 0x6d1bb620, 0x2019a: 0x6cb13e20,
+-	0x201ab: 0x6d2c3020,
+-	0x201ac: 0x6d3b6420, 0x201ae: 0x6cdac420,
+-	0x201b3: 0x6ca6a620,
+-	0x201ba: 0x6d3a1420, 0x201bb: 0x6c14fe20,
+-	0x201be: 0x6c084020, 0x201bf: 0x6ca5f220,
+-	// Block 0x807, offset 0x201c0
+-	0x201c0: 0x6d347420, 0x201c1: 0x6c5bd420,
+-	0x201d8: 0x6cfa3a20, 0x201da: 0x6d364e20, 0x201db: 0x6cf63c20,
+-	0x201de: 0x6c67aa20,
+-	0x201e9: 0x6c330220, 0x201ea: 0x6c3d7c20,
+-	0x201ed: 0x6c685c20, 0x201ee: 0x6c176820, 0x201ef: 0x6c045020,
+-	0x201f5: 0x6c8b1e20,
+-	0x201fc: 0x6c025a20,
+-	// Block 0x808, offset 0x20200
+-	0x2020b: 0x6d2a1620,
+-	0x2020c: 0x6c1f6020, 0x2020f: 0x6ceb8620,
+-	0x20212: 0x6c4fd220, 0x20213: 0x6c773620,
+-	0x20214: 0x6d1a7e20, 0x20216: 0x6cfcea20,
+-	0x2021d: 0x6c401820, 0x2021e: 0x6c0cb620,
+-	0x20220: 0x6c7c4020,
+-	0x20224: 0x6cbcde20, 0x20225: 0x6cc98420,
+-	0x2023f: 0x6c266220,
+-	// Block 0x809, offset 0x20240
+-	0x20240: 0x6d12b220,
+-	0x20244: 0x6d2f0820, 0x20246: 0x6c896420,
+-	0x20248: 0x6c332620,
+-	0x2024d: 0x6c816620, 0x2024e: 0x6d09a620,
+-	0x20258: 0x6d36a420, 0x2025a: 0x6c7a5a20,
+-	0x2025e: 0x6cdc6a20, 0x2025f: 0x6cf2a020,
+-	0x20263: 0x6c7a5e20,
+-	0x2026f: 0x6c65d420,
+-	0x20276: 0x6c67ba20,
+-	0x2027b: 0x6d3caa20,
+-	0x2027d: 0x6cd6dc20, 0x2027e: 0x6d219c20,
+-	// Block 0x80a, offset 0x20280
+-	0x20281: 0x6cc98c20, 0x20283: 0x6d23e620,
+-	0x20284: 0x6c803a20,
+-	0x2028a: 0x6d240620,
+-	0x2028c: 0x6cba2820, 0x2028d: 0x6c72a220, 0x2028f: 0x6c8b3420,
+-	0x20292: 0x6cd53e20, 0x20293: 0x6cfd1a20,
+-	0x20296: 0x6c415420,
+-	0x202a2: 0x6cdf4420,
+-	0x202a7: 0x6ce52220,
+-	0x202af: 0x6c9c1020,
+-	0x202b1: 0x6c2ba220, 0x202b3: 0x6c9ddc20,
+-	0x202be: 0x6c5afa20,
+-	// Block 0x80b, offset 0x202c0
+-	0x202c9: 0x6c351c20,
+-	0x202cd: 0x6c8b4a20,
+-	0x202d2: 0x6c7f6820, 0x202d3: 0x6d1aa820,
+-	0x202d4: 0x6c804620, 0x202d6: 0x6c68a020,
+-	0x202d8: 0x6c5e2620,
+-	0x202e3: 0x6c4c4c20,
+-	0x202e6: 0x6d2e9420,
+-	0x202ed: 0x6c9d0820,
+-	0x202f0: 0x6c7c5020,
+-	0x202f7: 0x6c352620,
+-	0x202ff: 0x6d1ab020,
+-	// Block 0x80c, offset 0x20300
+-	0x20307: 0x6c836020,
+-	0x20315: 0x6c462a20,
+-	0x2031b: 0x6ce6ac20,
+-	0x2031c: 0x6d10c820, 0x2031e: 0x6cedf620,
+-	0x20323: 0x6c6aa020,
+-	0x20328: 0x6d04c220, 0x2032a: 0x6cd5c020,
+-	0x20331: 0x6cf08c20,
+-	0x20334: 0x6d236620,
+-	// Block 0x80d, offset 0x20340
+-	0x20341: 0x6d2da620,
+-	0x20349: 0x6c01ee20,
+-	0x2034f: 0x6cca9a20,
+-	0x20350: 0x6c1e0c20, 0x20352: 0x6c7ae220,
+-	0x20356: 0x6c71a020, 0x20357: 0x6c4d5220,
+-	0x20362: 0x6c9e0420,
+-	0x20367: 0x6c4f9420,
+-	0x2036a: 0x6c1d9e20,
+-	0x2036e: 0x6c8d1a20,
+-	0x20370: 0x6d3f9620,
+-	// Block 0x80e, offset 0x20380
+-	0x20389: 0x6c7d4820,
+-	0x2038c: 0x6d378c20, 0x2038e: 0x6d2f5420,
+-	0x20390: 0x6c2f2e20, 0x20391: 0x6c467420, 0x20392: 0x6d279620, 0x20393: 0x6c27c620,
+-	0x20394: 0x6caada20,
+-	0x2039b: 0x6c0dd820,
+-	0x2039d: 0x6cc47420, 0x2039e: 0x6c14c420,
+-	0x203a2: 0x6cc70620, 0x203a3: 0x6d19c820,
+-	0x203a4: 0x6c14c620, 0x203a7: 0x6d361a20,
+-	0x203aa: 0x6c48f820, 0x203ab: 0x6caabe20,
+-	0x203ac: 0x6ccfe420, 0x203af: 0x6cdac620,
+-	0x203b2: 0x6cf2b820, 0x203b3: 0x6c1bb220,
+-	0x203ba: 0x6c9ee220, 0x203bb: 0x6d347e20,
+-	0x203be: 0x6cb50a20,
+-	// Block 0x80f, offset 0x203c0
+-	0x203c1: 0x6c465820,
+-	0x203c6: 0x6c90fa20,
+-	0x203c8: 0x6d3ea020,
+-	0x203cd: 0x6c293a20, 0x203cf: 0x6cfc6820,
+-	0x203d1: 0x6cc77e20,
+-	0x203d7: 0x6caefe20,
+-	0x203de: 0x6cf56c20,
+-	0x203e2: 0x6c7aba20,
+-	0x203e4: 0x6c4b2620, 0x203e5: 0x6c212e20, 0x203e6: 0x6c6baa20,
+-	0x203f2: 0x6c6bac20, 0x203f3: 0x6cf57820,
+-	0x203f5: 0x6c7a1a20, 0x203f7: 0x6c46ec20,
+-	0x203f8: 0x6d2cac20, 0x203f9: 0x6c392620,
+-	0x203fc: 0x6d015a20,
+-	// Block 0x810, offset 0x20400
+-	0x2040d: 0x6c585e20, 0x2040f: 0x6ca79020,
+-	0x20410: 0x6cf85820,
+-	0x2041b: 0x6c240820,
+-	0x2041d: 0x6c4bba20,
+-	0x20421: 0x6cf5b620,
+-	0x20427: 0x6cb83620,
+-	0x2042a: 0x6c981c20,
+-	0x2042d: 0x6d303220,
+-	0x20430: 0x6c734620,
+-	0x20434: 0x6c0ca020,
+-	// Block 0x811, offset 0x20440
+-	0x20440: 0x6c0ca220,
+-	0x20445: 0x6cc2d620,
+-	0x2044b: 0x6cf88620,
+-	0x2044e: 0x6c68f020,
+-	0x20450: 0x6cc2ea20, 0x20451: 0x6d352620, 0x20452: 0x6ce46820, 0x20453: 0x6c762a20,
+-	0x20458: 0x6cca1a20, 0x2045b: 0x6d3e4c20,
+-	0x20463: 0x6c6adc20,
+-	0x2046a: 0x6c0cec20,
+-	0x2046c: 0x6c312c20, 0x2046d: 0x6d417620,
+-	0x20476: 0x6d0db020,
+-	// Block 0x812, offset 0x20480
+-	0x20481: 0x6c0a1c20,
+-	0x20485: 0x6c7b0020, 0x20487: 0x6d0eb620,
+-	0x20488: 0x6cef3820, 0x2048a: 0x6c583420,
+-	0x2048c: 0x6c506420,
+-	0x20491: 0x6c45b820,
+-	0x20494: 0x6c9b5420, 0x20497: 0x6c82e420,
+-	0x20499: 0x6c2cae20, 0x2049b: 0x6c0e0220,
+-	0x2049c: 0x6c584420, 0x2049f: 0x6cebfe20,
+-	0x204a0: 0x6c751420,
+-	0x204a8: 0x6c1bda20,
+-	0x204ad: 0x6c030e20, 0x204ae: 0x6c6fa420,
+-	0x204b7: 0x6c2c0e20,
+-	0x204b9: 0x6d2f1c20, 0x204bb: 0x6c26e620,
+-	0x204bc: 0x6cd23820, 0x204bd: 0x6c501420,
+-	// Block 0x813, offset 0x204c0
+-	0x204cc: 0x6d12c020,
+-	0x204d7: 0x6c091a20,
+-	0x204d8: 0x6cb05020, 0x204d9: 0x6d118820,
+-	0x204dc: 0x6c2b1420, 0x204dd: 0x6c11ee20, 0x204de: 0x6cb20220, 0x204df: 0x6d268420,
+-	0x204e0: 0x6cbc7820, 0x204e1: 0x6caf3220,
+-	0x204f5: 0x6ceb7020, 0x204f6: 0x6d015c20,
+-	0x204fd: 0x6d12cc20,
+-	// Block 0x814, offset 0x20500
+-	0x20500: 0x6c392820, 0x20501: 0x6c484620, 0x20502: 0x6c566e20, 0x20503: 0x6cc7fa20,
+-	0x20509: 0x6cc4b620, 0x2050a: 0x6c3d2020, 0x2050b: 0x6c598020,
+-	0x2051a: 0x6cc79020,
+-	0x20522: 0x6c993020,
+-	0x20525: 0x6c32f620, 0x20526: 0x6c5b9820, 0x20527: 0x6cf85a20,
+-	0x20528: 0x6d04bc20, 0x2052b: 0x6cc4b820,
+-	0x2052c: 0x6d13d620, 0x2052f: 0x6d303420,
+-	0x20531: 0x6c61c620, 0x20532: 0x6c434020, 0x20533: 0x6d203820,
+-	0x20535: 0x6cb40620,
+-	// Block 0x815, offset 0x20540
+-	0x20548: 0x6c1f2220, 0x20549: 0x6c240a20, 0x2054a: 0x6d303620, 0x2054b: 0x6ca79220,
+-	0x2054d: 0x6cbca620,
+-	0x20550: 0x6c13d220, 0x20552: 0x6ca79420, 0x20553: 0x6cdbb620,
+-	0x20559: 0x6c13d420, 0x2055a: 0x6c19da20, 0x2055b: 0x6d10e020,
+-	0x2055c: 0x6c324820, 0x2055d: 0x6cedc820, 0x2055f: 0x6ca76220,
+-	0x20560: 0x6c9c4420,
+-	0x20566: 0x6caa1620, 0x20567: 0x6cf87820,
+-	0x20569: 0x6d109820, 0x2056b: 0x6c14c820,
+-	// Block 0x816, offset 0x20580
+-	0x20598: 0x6d018c20, 0x20599: 0x6c9ed420, 0x2059a: 0x6c796420,
+-	0x2059c: 0x6c243a20, 0x2059e: 0x6cd13620, 0x2059f: 0x6cacb620,
+-	0x205a0: 0x6c569c20, 0x205a2: 0x6c78b020, 0x205a3: 0x6cfcc220,
+-	0x205a5: 0x6c53fa20, 0x205a6: 0x6cbf2020, 0x205a7: 0x6d3f8220,
+-	0x205aa: 0x6c3e7420, 0x205ab: 0x6ca3be20,
+-	0x205ad: 0x6ca69e20, 0x205af: 0x6c7a7a20,
+-	0x205be: 0x6ca59820,
+-	// Block 0x817, offset 0x205c0
+-	0x205cd: 0x6c439020,
+-	0x205d1: 0x6c53fc20, 0x205d3: 0x6c002620,
+-	0x205d5: 0x6cd1ba20,
+-	0x205de: 0x6d04d420, 0x205df: 0x6c230e20,
+-	0x205e0: 0x6c684420, 0x205e2: 0x6d2c3220, 0x205e3: 0x6cfebe20,
+-	0x205e4: 0x6c88f820, 0x205e5: 0x6cc24820,
+-	0x205e8: 0x6ccd4420, 0x205e9: 0x6d01c020, 0x205eb: 0x6c461c20,
+-	0x205ec: 0x6c9ed820, 0x205ed: 0x6c148020, 0x205ef: 0x6c371620,
+-	0x205f3: 0x6c312220,
+-	// Block 0x818, offset 0x20600
+-	0x20606: 0x6c79f020,
+-	0x2060a: 0x6ce58a20, 0x2060b: 0x6cd1cc20,
+-	0x2060f: 0x6cca7020,
+-	0x20612: 0x6c491a20,
+-	0x20616: 0x6c505620, 0x20617: 0x6d367c20,
+-	0x20618: 0x6d106620, 0x20619: 0x6ce70020, 0x2061a: 0x6c09ee20,
+-	0x2061c: 0x6ca06420, 0x2061e: 0x6c3ebe20,
+-	0x20625: 0x6cbb1420,
+-	0x20639: 0x6d367e20,
+-	0x2063c: 0x6cd9ca20, 0x2063f: 0x6ca7a020,
+-	// Block 0x819, offset 0x20640
+-	0x20640: 0x6c738020, 0x20642: 0x6d105620,
+-	0x20644: 0x6c599e20,
+-	0x20648: 0x6c080020, 0x20649: 0x6ca06620, 0x2064a: 0x6c176a20,
+-	0x2064e: 0x6c93a420, 0x2064f: 0x6cce8220,
+-	0x20650: 0x6c104220, 0x20651: 0x6d2b8820, 0x20652: 0x6cd81020,
+-	0x20654: 0x6d41c420, 0x20655: 0x6d265620, 0x20656: 0x6d294c20, 0x20657: 0x6c948e20,
+-	0x20665: 0x6cc1b020,
+-	0x2067a: 0x6c9e9820,
+-	// Block 0x81a, offset 0x20680
+-	0x20680: 0x6d3bd820,
+-	0x20688: 0x6c297e20, 0x2068a: 0x6d250a20,
+-	0x20692: 0x6c71d220,
+-	0x20695: 0x6c5b6020, 0x20696: 0x6cb7d020,
+-	0x20698: 0x6d285220, 0x2069a: 0x6c97fe20,
+-	0x2069c: 0x6ca0aa20,
+-	0x206b1: 0x6cb16220, 0x206b3: 0x6c6d4a20,
+-	0x206b9: 0x6d10b820,
+-	// Block 0x81b, offset 0x206c0
+-	0x206c0: 0x6c1c6820, 0x206c1: 0x6ca6c620, 0x206c2: 0x6cd9de20,
+-	0x206c8: 0x6cd61a20, 0x206cb: 0x6cb16420,
+-	0x206d4: 0x6c4f1620,
+-	0x206e0: 0x6d10be20, 0x206e2: 0x6ca56020,
+-	0x206ea: 0x6cd3f020,
+-	0x206ec: 0x6d251820, 0x206ee: 0x6c114c20, 0x206ef: 0x6c6b5220,
+-	0x206f9: 0x6d023e20,
+-	0x206fd: 0x6d0cec20, 0x206fe: 0x6cff3620,
+-	// Block 0x81c, offset 0x20700
+-	0x2070b: 0x6d025020,
+-	0x2070c: 0x6c86ec20, 0x2070e: 0x6c397620,
+-	0x20717: 0x6d3b3c20,
+-	0x20719: 0x6ca37220, 0x2071b: 0x6d3bb620,
+-	0x2071e: 0x6c7c4c20,
+-	0x20722: 0x6c957020,
+-	0x2072b: 0x6cb83220,
+-	0x20736: 0x6ceca820,
+-	0x2073d: 0x6cd54c20, 0x2073f: 0x6c1a7c20,
+-	// Block 0x81d, offset 0x20740
+-	0x20741: 0x6d164620,
+-	0x20746: 0x6c500820,
+-	0x20748: 0x6c698220, 0x2074b: 0x6c5b8e20,
+-	0x2074d: 0x6cffce20, 0x2074e: 0x6c222020,
+-	0x2075e: 0x6c61a220,
+-	0x20766: 0x6ca62e20,
+-	0x20768: 0x6ca63420, 0x20769: 0x6ce3bc20,
+-	0x20776: 0x6c724820,
+-	0x20778: 0x6ca04220,
+-	0x2077d: 0x6c83d220, 0x2077f: 0x6d382c20,
+-	// Block 0x81e, offset 0x20780
+-	0x20781: 0x6d06d420, 0x20783: 0x6cbf3820,
+-	0x20784: 0x6c3e9620, 0x20786: 0x6c0d7e20,
+-	0x2078a: 0x6c621620,
+-	0x2078d: 0x6cb5f420, 0x2078e: 0x6cf89c20,
+-	0x20794: 0x6c2ada20, 0x20795: 0x6c376020,
+-	0x2079b: 0x6cd53220,
+-	0x2079c: 0x6ce77820, 0x2079d: 0x6cff9620, 0x2079f: 0x6cb01c20,
+-	0x207a8: 0x6c284020, 0x207aa: 0x6c60da20,
+-	0x207b3: 0x6d002020,
+-	0x207b7: 0x6c23ca20,
+-	0x207bb: 0x6c0d1c20,
+-	0x207bc: 0x6cc6f020,
+-	// Block 0x81f, offset 0x207c0
+-	0x207cd: 0x6c9e4a20,
+-	0x207d2: 0x6c9e4c20,
+-	0x207d4: 0x6cd49c20, 0x207d5: 0x6cff6c20, 0x207d6: 0x6c05e420, 0x207d7: 0x6cec2220,
+-	0x207d9: 0x6cad8020,
+-	0x207e3: 0x6c410e20,
+-	0x207e5: 0x6c549c20, 0x207e6: 0x6c525420,
+-	0x207e8: 0x6d39f220, 0x207e9: 0x6c48c420,
+-	0x207ed: 0x6c4b3820,
+-	0x207f9: 0x6c273e20,
+-	0x207fc: 0x6c0d2820, 0x207fd: 0x6c5a4420,
+-	// Block 0x820, offset 0x20800
+-	0x20800: 0x6c13d620,
+-	0x20804: 0x6cfa3420, 0x20805: 0x6c710220, 0x20807: 0x6d119a20,
+-	0x20816: 0x6c3bb620, 0x20817: 0x6d2a7420,
+-	0x2081b: 0x6c3c3020,
+-	0x20822: 0x6c708020, 0x20823: 0x6d230a20,
+-	0x20829: 0x6c5cbe20,
+-	0x20832: 0x6c6ab020, 0x20833: 0x6d049020,
+-	0x20835: 0x6ca3ba20,
+-	0x2083b: 0x6caa1820,
+-	0x2083d: 0x6cd13820, 0x2083f: 0x6d233420,
+-	// Block 0x821, offset 0x20840
+-	0x20842: 0x6c587620, 0x20843: 0x6c450c20,
+-	0x20844: 0x6ced1620, 0x20846: 0x6ceb1e20, 0x20847: 0x6cbb7820,
+-	0x20858: 0x6d1b5220, 0x2085a: 0x6c635e20,
+-	0x20861: 0x6cdd7220, 0x20863: 0x6c6ade20,
+-	0x20864: 0x6cf64020, 0x20865: 0x6cf25020,
+-	0x20869: 0x6c986620,
+-	0x20876: 0x6d0fbe20,
+-	0x20878: 0x6d110820,
+-	0x2087d: 0x6c986c20, 0x2087e: 0x6cab3e20,
+-	// Block 0x822, offset 0x20880
+-	0x20881: 0x6c017020,
+-	0x20885: 0x6c910c20,
+-	0x20891: 0x6c366e20, 0x20892: 0x6d3f1e20,
+-	0x20897: 0x6c367020,
+-	0x20899: 0x6c01c820,
+-	0x2089e: 0x6c5de220,
+-	0x208a0: 0x6c135220,
+-	0x208b0: 0x6d049c20, 0x208b1: 0x6c625e20, 0x208b3: 0x6d424e20,
+-	0x208b5: 0x6cb63620,
+-	0x208ba: 0x6d32ee20,
+-	// Block 0x823, offset 0x208c0
+-	0x208c0: 0x6c5f2e20, 0x208c1: 0x6cb52e20, 0x208c2: 0x6c732420, 0x208c3: 0x6ca91c20,
+-	0x208df: 0x6ccb7220,
+-	0x208e5: 0x6c51fa20, 0x208e6: 0x6cc72c20, 0x208e7: 0x6cbdec20,
+-	0x208ec: 0x6c70de20, 0x208ef: 0x6c86ee20,
+-	0x208f5: 0x6cd29020,
+-	0x208f8: 0x6ca6da20, 0x208f9: 0x6cfbc420, 0x208fa: 0x6c3dbc20,
+-	0x208fd: 0x6cc80820,
+-	// Block 0x824, offset 0x20900
+-	0x20901: 0x6d04ac20, 0x20902: 0x6c4ba220,
+-	0x20904: 0x6c62e020, 0x20906: 0x6c9bf820, 0x20907: 0x6c3dc020,
+-	0x20909: 0x6cc9ee20, 0x2090a: 0x6d247820, 0x2090b: 0x6c69de20,
+-	0x2090c: 0x6c9c2220, 0x2090d: 0x6c900e20, 0x2090e: 0x6cbb0020,
+-	0x20910: 0x6c9cc620, 0x20913: 0x6d15a420,
+-	0x20916: 0x6c4dc620, 0x20917: 0x6ca6e620,
+-	0x20918: 0x6c81ee20, 0x20919: 0x6ccbbe20,
+-	0x2091c: 0x6c8c4220, 0x2091e: 0x6d22c220,
+-	0x20925: 0x6caab020,
+-	0x2092b: 0x6cf4c020,
+-	0x2092f: 0x6c0b3620,
+-	0x20932: 0x6c0b3820, 0x20933: 0x6d079620,
+-	0x20935: 0x6c649620,
+-	0x20938: 0x6c0b3c20,
+-	// Block 0x825, offset 0x20940
+-	0x20942: 0x6c2a7a20,
+-	0x20947: 0x6d3b8620,
+-	0x2094b: 0x6cc72020,
+-	0x20950: 0x6cd69820,
+-	0x20958: 0x6c631820, 0x2095b: 0x6c5b4a20,
+-	0x2095e: 0x6d2d5c20,
+-	0x20962: 0x6c042e20, 0x20963: 0x6c8ac420,
+-	0x20965: 0x6d003820,
+-	0x2096d: 0x6c656c20, 0x2096e: 0x6cd44020,
+-	0x20973: 0x6c77ba20,
+-	0x20977: 0x6c490c20,
+-	0x20978: 0x6c949420,
+-	0x2097e: 0x6caa1a20, 0x2097f: 0x6c16e820,
+-	// Block 0x826, offset 0x20980
+-	0x2098e: 0x6c895220,
+-	0x20999: 0x6ca3c620, 0x2099a: 0x6cc80020,
+-	0x2099e: 0x6d368020,
+-	0x209a6: 0x6c128620,
+-	0x209b0: 0x6c867420,
+-	0x209bb: 0x6c7fcc20,
+-	0x209bf: 0x6c14e220,
+-	// Block 0x827, offset 0x209c0
+-	0x209c1: 0x6cedba20,
+-	0x209c4: 0x6c856620, 0x209c7: 0x6cf49620,
+-	0x209c8: 0x6cad4220, 0x209c9: 0x6d200a20, 0x209cb: 0x6c415e20,
+-	0x209cf: 0x6c011420,
+-	0x209d0: 0x6d04b420, 0x209d1: 0x6cd70420, 0x209d2: 0x6cc8aa20,
+-	0x209d8: 0x6c04b620, 0x209d9: 0x6d1eea20,
+-	0x209e2: 0x6c5d6e20,
+-	0x209e5: 0x6c5a9c20,
+-	0x209e8: 0x6d428c20, 0x209e9: 0x6cfe9820, 0x209eb: 0x6c9dba20,
+-	0x209f0: 0x6c40d620, 0x209f1: 0x6d25e220, 0x209f3: 0x6c0ff020,
+-	0x209f4: 0x6c17ba20, 0x209f5: 0x6ce9e220, 0x209f7: 0x6c0ff220,
+-	0x209fd: 0x6c40d820, 0x209ff: 0x6ce55820,
+-	// Block 0x828, offset 0x20a00
+-	0x20a00: 0x6ca2dc20,
+-	0x20a05: 0x6c556a20, 0x20a06: 0x6ca83c20,
+-	0x20a0b: 0x6c5b3e20,
+-	0x20a0c: 0x6c90ea20, 0x20a0e: 0x6ce35020,
+-	0x20a10: 0x6cbc5420, 0x20a11: 0x6cbbee20, 0x20a12: 0x6d380620,
+-	0x20a16: 0x6c2b4220,
+-	0x20a1a: 0x6c8bd820,
+-	0x20a1d: 0x6cc32c20, 0x20a1e: 0x6d3b9a20,
+-	0x20a20: 0x6c828e20, 0x20a22: 0x6d013620,
+-	0x20a25: 0x6cc56220,
+-	0x20a28: 0x6c28f620, 0x20a2a: 0x6c316020, 0x20a2b: 0x6ca71420,
+-	0x20a2f: 0x6cd2ae20,
+-	0x20a32: 0x6cfb2020,
+-	0x20a39: 0x6d343820,
+-	0x20a3d: 0x6c008820, 0x20a3e: 0x6c21f220, 0x20a3f: 0x6cb42a20,
+-	// Block 0x829, offset 0x20a40
+-	0x20a41: 0x6cd2b620,
+-	0x20a45: 0x6cc0de20, 0x20a46: 0x6cd55020, 0x20a47: 0x6c2cbe20,
+-	0x20a49: 0x6cffa420, 0x20a4a: 0x6cd70a20,
+-	0x20a4c: 0x6c586020,
+-	0x20a50: 0x6d149220, 0x20a51: 0x6c72dc20,
+-	0x20a54: 0x6d34fc20,
+-	0x20a5c: 0x6d2f9e20,
+-	0x20a63: 0x6d06a220,
+-	0x20a6f: 0x6c905a20,
+-	0x20a71: 0x6d3aca20, 0x20a73: 0x6cdd5620,
+-	0x20a77: 0x6c2e8020,
+-	0x20a7a: 0x6cc18420,
+-	0x20a7c: 0x6c78a220, 0x20a7d: 0x6c54ba20, 0x20a7e: 0x6c708220,
+-	// Block 0x82a, offset 0x20a80
+-	0x20a80: 0x6cbea420,
+-	0x20a8d: 0x6c0dae20,
+-	0x20a95: 0x6ce3f220, 0x20a97: 0x6c744820,
+-	0x20a9a: 0x6cc05a20,
+-	0x20aa3: 0x6c67e420,
+-	0x20aaa: 0x6d282e20,
+-	0x20aad: 0x6c9a9a20, 0x20aae: 0x6caf6e20,
+-	0x20ab0: 0x6cc1a020,
+-	0x20abc: 0x6c9d5220, 0x20abf: 0x6ce3fe20,
+-	// Block 0x82b, offset 0x20ac0
+-	0x20ac2: 0x6c768c20,
+-	0x20ac4: 0x6c08e820, 0x20ac6: 0x6cc11c20,
+-	0x20acf: 0x6ce56620,
+-	0x20ad1: 0x6c1f6c20,
+-	0x20ad8: 0x6c714a20, 0x20ada: 0x6cf69620,
+-	0x20ade: 0x6c8c5e20,
+-	0x20aed: 0x6c1bca20, 0x20aee: 0x6c5f7e20,
+-	0x20af4: 0x6c917a20,
+-	0x20af8: 0x6c876220,
+-	0x20afe: 0x6c73c820,
+-	// Block 0x82c, offset 0x20b00
+-	0x20b05: 0x6d397c20, 0x20b06: 0x6c921020,
+-	0x20b0e: 0x6ca7f620,
+-	0x20b14: 0x6cc2c020,
+-	0x20b2d: 0x6d0b6820, 0x20b2f: 0x6c35c220,
+-	0x20b31: 0x6c564020,
+-	// Block 0x82d, offset 0x20b40
+-	0x20b40: 0x6c982620,
+-	0x20b49: 0x6cf4a020,
+-	0x20b4c: 0x6c137620,
+-	0x20b51: 0x6cbd1820, 0x20b52: 0x6c6a6220, 0x20b53: 0x6c52f420,
+-	0x20b55: 0x6c27b620, 0x20b56: 0x6c371c20, 0x20b57: 0x6d2b3a20,
+-	0x20b58: 0x6c565220, 0x20b59: 0x6c020e20, 0x20b5a: 0x6c6bb220, 0x20b5b: 0x6c3faa20,
+-	0x20b5c: 0x6d1e7020, 0x20b5e: 0x6c3c1a20,
+-	0x20b6c: 0x6ca26620,
+-	0x20b76: 0x6ccb1620, 0x20b77: 0x6c238a20,
+-	0x20b7b: 0x6c772220,
+-	// Block 0x82e, offset 0x20b80
+-	0x20b82: 0x6d11ea20, 0x20b83: 0x6c008c20,
+-	0x20b84: 0x6c05a620, 0x20b86: 0x6cb34c20,
+-	0x20b88: 0x6cd2b820, 0x20b89: 0x6c392a20, 0x20b8b: 0x6c70f420,
+-	0x20b8c: 0x6cafb420, 0x20b8e: 0x6cf07420, 0x20b8f: 0x6c7a2220,
+-	0x20b90: 0x6cbc8620, 0x20b91: 0x6c417220,
+-	0x20ba2: 0x6c7be220, 0x20ba3: 0x6cdc2420,
+-	0x20ba4: 0x6c07d620, 0x20ba5: 0x6c632820, 0x20ba6: 0x6d0b8020,
+-	0x20baa: 0x6c76fe20, 0x20bab: 0x6ca7f820,
+-	0x20bad: 0x6d03cc20, 0x20baf: 0x6cf85c20,
+-	0x20bb1: 0x6c8c4a20, 0x20bb2: 0x6c347e20,
+-	0x20bb4: 0x6c159a20,
+-	// Block 0x82f, offset 0x20bc0
+-	0x20bc8: 0x6cd32e20, 0x20bcb: 0x6c334020,
+-	0x20bcd: 0x6c675020, 0x20bce: 0x6d222a20, 0x20bcf: 0x6c922020,
+-	0x20bd0: 0x6c372020, 0x20bd3: 0x6c476420,
+-	0x20bd5: 0x6cefa020, 0x20bd6: 0x6c17d620, 0x20bd7: 0x6c590020,
+-	0x20bd8: 0x6c0ce220, 0x20bdb: 0x6c4e9420,
+-	0x20bdc: 0x6ce99e20, 0x20bdd: 0x6ca32420, 0x20bde: 0x6cb6e620,
+-	0x20be0: 0x6ce7e820, 0x20be1: 0x6d24d220, 0x20be2: 0x6cede020,
+-	0x20be4: 0x6cf3b020, 0x20be5: 0x6c434220,
+-	0x20be8: 0x6c792e20, 0x20bea: 0x6d14ba20,
+-	0x20bf8: 0x6cfe9a20, 0x20bfa: 0x6c4ae420, 0x20bfb: 0x6d0b8c20,
+-	0x20bfc: 0x6cdc2e20, 0x20bfd: 0x6cd95420, 0x20bff: 0x6d3d3820,
+-	// Block 0x830, offset 0x20c00
+-	0x20c02: 0x6ce84a20, 0x20c03: 0x6cfbf420,
+-	0x20c08: 0x6d2b4420, 0x20c09: 0x6c85c620,
+-	0x20c0c: 0x6d3acc20, 0x20c0e: 0x6c6aa220,
+-	0x20c11: 0x6ce3e820,
+-	0x20c14: 0x6d009c20, 0x20c15: 0x6cbf1220, 0x20c17: 0x6d0b9420,
+-	0x20c18: 0x6c708620, 0x20c1b: 0x6d1a5a20,
+-	0x20c1c: 0x6d345220, 0x20c1e: 0x6c76d020, 0x20c1f: 0x6d3e2220,
+-	0x20c21: 0x6c77f420, 0x20c23: 0x6ca81220,
+-	0x20c24: 0x6cbb0620, 0x20c25: 0x6ced0220, 0x20c26: 0x6d2abc20,
+-	0x20c28: 0x6c708820, 0x20c2a: 0x6d3f4220,
+-	// Block 0x831, offset 0x20c40
+-	0x20c44: 0x6d0b9620, 0x20c47: 0x6c8bae20,
+-	0x20c49: 0x6cb5c020,
+-	0x20c4e: 0x6c5b3420,
+-	0x20c53: 0x6cb77a20,
+-	0x20c55: 0x6d0fa820, 0x20c56: 0x6cdc3620,
+-	0x20c58: 0x6cb6f220, 0x20c59: 0x6c4a5620,
+-	0x20c62: 0x6cbe1020, 0x20c63: 0x6c353e20,
+-	0x20c65: 0x6d429820,
+-	0x20c68: 0x6d2b4820, 0x20c69: 0x6cb77c20, 0x20c6a: 0x6c602e20,
+-	0x20c6c: 0x6ceb2020, 0x20c6d: 0x6c2e9c20, 0x20c6f: 0x6c5bbe20,
+-	0x20c70: 0x6c98e420, 0x20c72: 0x6d063e20,
+-	0x20c75: 0x6c53fe20, 0x20c76: 0x6d0d7c20, 0x20c77: 0x6cfdc220,
+-	0x20c78: 0x6c231020, 0x20c79: 0x6c555820,
+-	0x20c7c: 0x6c01c020, 0x20c7e: 0x6c0de420,
+-	// Block 0x832, offset 0x20c80
+-	0x20c87: 0x6c348e20,
+-	0x20c90: 0x6d3a6a20, 0x20c91: 0x6c2e9e20, 0x20c92: 0x6d1ea220, 0x20c93: 0x6cb6fa20,
+-	0x20c94: 0x6cd26820, 0x20c95: 0x6d099a20, 0x20c96: 0x6d1ea420, 0x20c97: 0x6c76ae20,
+-	0x20c98: 0x6cbc2420, 0x20c9b: 0x6cbab620,
+-	0x20c9c: 0x6cae3e20, 0x20c9f: 0x6cc2ee20,
+-	0x20ca1: 0x6d1c6e20,
+-	0x20ca7: 0x6ccbf220,
+-	0x20cab: 0x6ce1d020,
+-	0x20cad: 0x6c53c020, 0x20cae: 0x6cb06220, 0x20caf: 0x6d110a20,
+-	0x20cb4: 0x6ce8bc20, 0x20cb5: 0x6c148220, 0x20cb7: 0x6cfa3c20,
+-	0x20cb8: 0x6cb5f620, 0x20cba: 0x6cbf3a20,
+-	0x20cbd: 0x6c6d1220,
+-	// Block 0x833, offset 0x20cc0
+-	0x20cc8: 0x6d316020,
+-	0x20ccc: 0x6d39ae20, 0x20cce: 0x6cf64420,
+-	0x20cd0: 0x6cf22a20, 0x20cd1: 0x6d37f820,
+-	0x20cd5: 0x6cdc4420,
+-	0x20cd8: 0x6c781020, 0x20cd9: 0x6c7e0c20, 0x20cda: 0x6c777220,
+-	0x20cdd: 0x6c176c20, 0x20cde: 0x6c09f020, 0x20cdf: 0x6ca13a20,
+-	0x20ce0: 0x6d3b1220, 0x20ce1: 0x6c4edc20, 0x20ce2: 0x6d227820, 0x20ce3: 0x6d153220,
+-	0x20ce4: 0x6c966c20, 0x20ce7: 0x6cb7aa20,
+-	0x20ce8: 0x6c4c0020, 0x20ce9: 0x6c97e420, 0x20cea: 0x6c89f420, 0x20ceb: 0x6c8bc020,
+-	0x20cec: 0x6d40c620, 0x20ced: 0x6c82cc20, 0x20cee: 0x6c56b220, 0x20cef: 0x6c209220,
+-	0x20cf0: 0x6cb7ac20, 0x20cf1: 0x6c824420,
+-	// Block 0x834, offset 0x20d00
+-	0x20d01: 0x6c1ac420, 0x20d03: 0x6cb33020,
+-	0x20d04: 0x6c2eca20,
+-	0x20d0a: 0x6c82ce20,
+-	0x20d0e: 0x6d160420,
+-	0x20d13: 0x6c2d7620,
+-	0x20d16: 0x6c33a420, 0x20d17: 0x6c42d620,
+-	0x20d18: 0x6c54f220, 0x20d1a: 0x6cff0020, 0x20d1b: 0x6c40ca20,
+-	0x20d1c: 0x6cae8020,
+-	0x20d2c: 0x6cd06a20,
+-	0x20d31: 0x6cef2a20,
+-	0x20d3b: 0x6c335820,
+-	0x20d3c: 0x6c177220, 0x20d3d: 0x6d1b0420, 0x20d3e: 0x6c7b3a20, 0x20d3f: 0x6c7a6020,
+-	// Block 0x835, offset 0x20d40
+-	0x20d41: 0x6d41ce20, 0x20d42: 0x6c47ca20,
+-	0x20d45: 0x6d285420, 0x20d46: 0x6d36da20,
+-	0x20d49: 0x6c629420, 0x20d4a: 0x6c199020,
+-	0x20d56: 0x6d020e20,
+-	0x20d5b: 0x6d419e20,
+-	0x20d5c: 0x6c017420, 0x20d5d: 0x6c4fb220,
+-	0x20d60: 0x6cb36020, 0x20d62: 0x6c2b9820, 0x20d63: 0x6d135820,
+-	0x20d67: 0x6ca4c420,
+-	0x20d71: 0x6c6b4220, 0x20d72: 0x6c059220, 0x20d73: 0x6c804020,
+-	0x20d74: 0x6c124820, 0x20d76: 0x6c0a6620,
+-	0x20d7b: 0x6d2e1a20,
+-	0x20d7c: 0x6cb7e620,
+-	// Block 0x836, offset 0x20d80
+-	0x20d82: 0x6ca4c620,
+-	0x20d85: 0x6c940c20, 0x20d87: 0x6c7c0a20,
+-	0x20d89: 0x6ca08420, 0x20d8b: 0x6c82e620,
+-	0x20d8c: 0x6cad7420,
+-	0x20d92: 0x6c86c420, 0x20d93: 0x6c136420,
+-	0x20d95: 0x6c299820, 0x20d96: 0x6c82e820,
+-	0x20d99: 0x6c36cc20, 0x20d9b: 0x6c086020,
+-	0x20d9c: 0x6c74e820,
+-	0x20da5: 0x6d083420, 0x20da6: 0x6ca89420,
+-	0x20da8: 0x6c4d7c20,
+-	0x20dae: 0x6cfc4220,
+-	0x20db0: 0x6c661620, 0x20db1: 0x6c9c9e20, 0x20db2: 0x6ca8a020,
+-	0x20dbb: 0x6c124a20,
+-	0x20dbc: 0x6cd97820, 0x20dbd: 0x6d2ba820, 0x20dbe: 0x6d194220,
+-	// Block 0x837, offset 0x20dc0
+-	0x20dc2: 0x6c1d3020,
+-	0x20dc4: 0x6c125020,
+-	0x20dc9: 0x6c830620, 0x20dca: 0x6caad220, 0x20dcb: 0x6c876420,
+-	0x20dce: 0x6c84ba20, 0x20dcf: 0x6c957220,
+-	0x20dd3: 0x6ce18a20,
+-	0x20dd6: 0x6ca8c420, 0x20dd7: 0x6ca8c620,
+-	0x20dd9: 0x6c5fae20, 0x20ddb: 0x6c831220,
+-	0x20ddd: 0x6ca48020,
+-	0x20de0: 0x6c8c1420, 0x20de1: 0x6c8dce20,
+-	0x20de4: 0x6cfbe220, 0x20de5: 0x6d24a820, 0x20de7: 0x6d28ec20,
+-	0x20de8: 0x6cc34a20, 0x20de9: 0x6c8ac020,
+-	0x20def: 0x6d22ce20,
+-	0x20df0: 0x6c597620,
+-	0x20dfa: 0x6ca4de20,
+-	0x20dfc: 0x6d0a7820, 0x20dfe: 0x6c711020, 0x20dff: 0x6c5dbc20,
+-	// Block 0x838, offset 0x20e00
+-	0x20e01: 0x6d179420,
+-	0x20e0a: 0x6cf71420, 0x20e0b: 0x6ccb8a20,
+-	0x20e0c: 0x6c697020, 0x20e0d: 0x6d1de020,
+-	0x20e15: 0x6cd18c20, 0x20e16: 0x6c6d8420, 0x20e17: 0x6ced6e20,
+-	0x20e18: 0x6d129e20, 0x20e19: 0x6c6f4420,
+-	0x20e1c: 0x6c45d020,
+-	0x20e21: 0x6c5aa020,
+-	0x20e2a: 0x6c37a420,
+-	0x20e35: 0x6c4e7a20,
+-	0x20e3c: 0x6c3e3020,
+-	// Block 0x839, offset 0x20e40
+-	0x20e40: 0x6c3e4a20, 0x20e41: 0x6d3d4a20, 0x20e42: 0x6c5eb620,
+-	0x20e4f: 0x6c053a20,
+-	0x20e52: 0x6cb56620, 0x20e53: 0x6cd2a620,
+-	0x20e55: 0x6c2df420, 0x20e56: 0x6cadfa20, 0x20e57: 0x6cfbe420,
+-	0x20e58: 0x6cc9f620,
+-	0x20e5d: 0x6c169220, 0x20e5e: 0x6d264620,
+-	0x20e60: 0x6c455820, 0x20e62: 0x6cf34220,
+-	0x20e64: 0x6c3b0a20, 0x20e67: 0x6c159020,
+-	0x20e69: 0x6ca58420, 0x20e6a: 0x6c73d820,
+-	0x20e6c: 0x6d2f8220, 0x20e6e: 0x6cb96c20,
+-	0x20e71: 0x6c029820,
+-	0x20e76: 0x6cedf820, 0x20e77: 0x6d379020,
+-	0x20e79: 0x6c597820, 0x20e7b: 0x6c106620,
+-	0x20e7c: 0x6d3a5a20, 0x20e7d: 0x6c092e20, 0x20e7e: 0x6c173620, 0x20e7f: 0x6d328620,
+-	// Block 0x83a, offset 0x20e80
+-	0x20e80: 0x6c3de620, 0x20e81: 0x6c79b820, 0x20e83: 0x6d422c20,
+-	0x20e84: 0x6d086c20, 0x20e86: 0x6c3fb220,
+-	0x20e8a: 0x6d118a20,
+-	0x20e8d: 0x6c0e4e20, 0x20e8f: 0x6c06e220,
+-	0x20e90: 0x6d007c20, 0x20e91: 0x6cd33020, 0x20e92: 0x6d149620,
+-	0x20e94: 0x6c531020, 0x20e95: 0x6c251c20, 0x20e97: 0x6d16e620,
+-	0x20e98: 0x6d3b7620,
+-	0x20e9d: 0x6c1bf620,
+-	0x20ea4: 0x6cb2fe20,
+-	0x20ea8: 0x6d1a3a20,
+-	0x20eb1: 0x6d260a20,
+-	0x20eb6: 0x6c6edc20,
+-	0x20eb9: 0x6c995c20, 0x20eba: 0x6cba4820,
+-	0x20ebc: 0x6d172420,
+-	// Block 0x83b, offset 0x20ec0
+-	0x20ec0: 0x6cf3b220,
+-	0x20ecd: 0x6c069820, 0x20ece: 0x6c5dbe20, 0x20ecf: 0x6c239420,
+-	0x20ed0: 0x6c797220,
+-	0x20ed5: 0x6cde4820, 0x20ed7: 0x6c4ea620,
+-	0x20ed8: 0x6cba4e20,
+-	0x20edc: 0x6d345420,
+-	0x20ee2: 0x6ccb2420,
+-	0x20ee5: 0x6cb8d620, 0x20ee6: 0x6c4cb420,
+-	0x20ee9: 0x6c4bbe20,
+-	0x20eec: 0x6c649820, 0x20eed: 0x6d37b820, 0x20eee: 0x6c9e2220, 0x20eef: 0x6c4afa20,
+-	0x20ef0: 0x6cd37e20, 0x20ef1: 0x6ca1d220, 0x20ef2: 0x6c363220, 0x20ef3: 0x6c039e20,
+-	0x20ef4: 0x6c7e7220,
+-	0x20ef8: 0x6d392820, 0x20efa: 0x6c603020,
+-	// Block 0x83c, offset 0x20f00
+-	0x20f00: 0x6d2a4a20,
+-	0x20f04: 0x6d2bd820, 0x20f05: 0x6d179820, 0x20f07: 0x6c468420,
+-	0x20f0a: 0x6c4a6e20, 0x20f0b: 0x6d1bc420,
+-	0x20f0c: 0x6ccc9820, 0x20f0d: 0x6c513420, 0x20f0e: 0x6c057820, 0x20f0f: 0x6ca12a20,
+-	0x20f10: 0x6c9b1e20, 0x20f13: 0x6cf4fe20,
+-	0x20f14: 0x6c277620, 0x20f17: 0x6c6f1620,
+-	0x20f1c: 0x6c4ed020, 0x20f1f: 0x6ce70220,
+-	0x20f20: 0x6c79be20, 0x20f21: 0x6c841220, 0x20f22: 0x6d368220, 0x20f23: 0x6c5bf420,
+-	0x20f24: 0x6d296e20, 0x20f26: 0x6c2dfc20, 0x20f27: 0x6c244420,
+-	0x20f31: 0x6d368420, 0x20f33: 0x6c7adc20,
+-	0x20f35: 0x6cfe4a20, 0x20f36: 0x6c57ba20, 0x20f37: 0x6c8a0c20,
+-	0x20f38: 0x6c255620, 0x20f39: 0x6cbb9a20, 0x20f3a: 0x6c692420,
+-	0x20f3c: 0x6d05d020, 0x20f3d: 0x6c37da20, 0x20f3f: 0x6cead020,
+-	// Block 0x83d, offset 0x20f40
+-	0x20f40: 0x6ce00020, 0x20f41: 0x6d36a820,
+-	0x20f48: 0x6ca51020, 0x20f49: 0x6c99ac20, 0x20f4a: 0x6c2c8c20, 0x20f4b: 0x6c135820,
+-	0x20f4e: 0x6c693a20, 0x20f4f: 0x6c884820,
+-	0x20f51: 0x6ccc1820, 0x20f52: 0x6c28aa20,
+-	0x20f55: 0x6cdc6c20, 0x20f56: 0x6c884a20, 0x20f57: 0x6c4cf020,
+-	0x20f5a: 0x6c0c7c20,
+-	0x20f5c: 0x6c22e220, 0x20f5d: 0x6c2d7e20, 0x20f5e: 0x6c93fc20, 0x20f5f: 0x6ca64e20,
+-	0x20f60: 0x6d0dda20, 0x20f61: 0x6c7fbc20,
+-	0x20f64: 0x6c415620, 0x20f65: 0x6c1eb420,
+-	0x20f69: 0x6c0a8820, 0x20f6a: 0x6d40ea20, 0x20f6b: 0x6c5c6620,
+-	0x20f6d: 0x6c7f4220, 0x20f6e: 0x6cfbba20, 0x20f6f: 0x6c3bfc20,
+-	0x20f70: 0x6c520220,
+-	0x20f79: 0x6d124020, 0x20f7a: 0x6d2e3220,
+-	0x20f7c: 0x6ca56620, 0x20f7e: 0x6c95d020,
+-	// Block 0x83e, offset 0x20f80
+-	0x20f80: 0x6d25d620, 0x20f82: 0x6ca5ac20,
+-	0x20f89: 0x6cc58220,
+-	0x20f9c: 0x6c43e820, 0x20f9e: 0x6c65a820, 0x20f9f: 0x6cb2b420,
+-	0x20fa3: 0x6c0d1620,
+-	0x20fa6: 0x6c66d020,
+-	0x20fa9: 0x6c0e2e20,
+-	0x20faf: 0x6c9d1820,
+-	0x20fb0: 0x6c563420,
+-	0x20fb4: 0x6c2df220, 0x20fb6: 0x6d1e8c20, 0x20fb7: 0x6d108c20,
+-	0x20fb8: 0x6c07d020, 0x20fba: 0x6c189820, 0x20fbb: 0x6c5e8c20,
+-	0x20fbd: 0x6d108e20,
+-	// Block 0x83f, offset 0x20fc0
+-	0x20fc7: 0x6c491020,
+-	0x20fc8: 0x6d0e5e20,
+-	0x20fd5: 0x6c1bc820, 0x20fd7: 0x6ccc3a20,
+-	0x20fd8: 0x6d0d3820, 0x20fd9: 0x6d165e20, 0x20fda: 0x6d166020, 0x20fdb: 0x6c17fc20,
+-	0x20fde: 0x6c4e8220, 0x20fdf: 0x6c597420,
+-	0x20fe4: 0x6cd71020, 0x20fe5: 0x6cdc2220, 0x20fe6: 0x6cc56820, 0x20fe7: 0x6cdfcc20,
+-	0x20fe8: 0x6d34e420, 0x20fea: 0x6c391e20, 0x20feb: 0x6c3cc620,
+-	0x20ff0: 0x6cdfce20, 0x20ff2: 0x6c9c3620, 0x20ff3: 0x6cafb620,
+-	0x20ff4: 0x6c106820, 0x20ff5: 0x6ca30e20, 0x20ff6: 0x6ce48220, 0x20ff7: 0x6c036620,
+-	0x20ff8: 0x6d16b020,
+-	// Block 0x840, offset 0x21000
+-	0x21002: 0x6d0d4820,
+-	0x21004: 0x6ce54c20, 0x21006: 0x6d10ce20, 0x21007: 0x6cd04c20,
+-	0x21008: 0x6c77dc20, 0x21009: 0x6ce72420, 0x2100b: 0x6d084420,
+-	0x21013: 0x6d202820,
+-	0x21015: 0x6c043a20,
+-	0x21019: 0x6cf9a220, 0x2101a: 0x6c938420, 0x2101b: 0x6c7dce20,
+-	0x2101c: 0x6d29d220, 0x2101d: 0x6cc02c20,
+-	0x21020: 0x6c243020, 0x21021: 0x6d416a20, 0x21022: 0x6c90e020,
+-	0x21024: 0x6cf9a420,
+-	0x2102f: 0x6ccfca20,
+-	0x21032: 0x6cb43020,
+-	0x21034: 0x6c6da620, 0x21035: 0x6cbaae20, 0x21036: 0x6d175820,
+-	0x21038: 0x6ca81420, 0x21039: 0x6c32fc20, 0x2103b: 0x6c6ab420,
+-	0x2103c: 0x6cdc3820, 0x2103d: 0x6d2e5820, 0x2103e: 0x6c23e420,
+-	// Block 0x841, offset 0x21040
+-	0x21041: 0x6c07e420, 0x21042: 0x6c491220, 0x21043: 0x6ccf2a20,
+-	0x21045: 0x6c6cfe20, 0x21046: 0x6c2c3e20,
+-	0x21051: 0x6c27d220, 0x21053: 0x6ca3a220,
+-	0x21055: 0x6ca9fc20, 0x21057: 0x6c601820,
+-	0x21058: 0x6d0c8220, 0x2105a: 0x6caa2020,
+-	0x2105c: 0x6c325a20, 0x2105d: 0x6cf09020, 0x2105e: 0x6cb0f420,
+-	0x21062: 0x6c555a20,
+-	0x21064: 0x6c644020, 0x21065: 0x6d12ee20, 0x21066: 0x6c759220, 0x21067: 0x6c7f9c20,
+-	0x21068: 0x6c7e7420, 0x21069: 0x6d19de20,
+-	0x2106d: 0x6ce9a220,
+-	0x21075: 0x6ca4f620,
+-	0x2107a: 0x6d411c20,
+-	0x2107f: 0x6c96c220,
+-	// Block 0x842, offset 0x21080
+-	0x21080: 0x6cd7f020, 0x21081: 0x6d365420,
+-	0x21084: 0x6c5ac020, 0x21085: 0x6d3c8e20, 0x21087: 0x6c5bd820,
+-	0x2108d: 0x6c1e8c20, 0x2108f: 0x6c182420,
+-	0x21092: 0x6d04da20, 0x21093: 0x6c7fa220,
+-	0x21095: 0x6c232620, 0x21096: 0x6cd0bc20, 0x21097: 0x6ca13c20,
+-	0x21098: 0x6d140220, 0x21099: 0x6d111a20, 0x2109a: 0x6cf7fa20, 0x2109b: 0x6d419020,
+-	0x2109c: 0x6c0e2820,
+-	0x210a7: 0x6d216c20,
+-	0x210a9: 0x6c927e20,
+-	0x210ae: 0x6ce9b620, 0x210af: 0x6ceffe20,
+-	0x210b1: 0x6c3b8820, 0x210b2: 0x6cd06c20,
+-	0x210bb: 0x6c8a0e20,
+-	// Block 0x843, offset 0x210c0
+-	0x210c2: 0x6cd56a20, 0x210c3: 0x6c284220,
+-	0x210c4: 0x6c732620, 0x210c5: 0x6d21a020, 0x210c6: 0x6d034a20, 0x210c7: 0x6d114220,
+-	0x210c8: 0x6cda5820,
+-	0x210d2: 0x6c5d8020,
+-	0x210d4: 0x6cb92220,
+-	0x210da: 0x6c967c20,
+-	0x210dd: 0x6c767020,
+-	0x210e1: 0x6c91e620, 0x210e3: 0x6d1ebc20,
+-	0x210ee: 0x6cfd2e20,
+-	0x210f9: 0x6cf40620, 0x210fb: 0x6d1b2020,
+-	0x210fc: 0x6cf72c20, 0x210ff: 0x6d2d0820,
+-	// Block 0x844, offset 0x21100
+-	0x21100: 0x6d027020,
+-	0x21104: 0x6cc1fa20,
+-	0x21108: 0x6c84be20,
+-	0x2110d: 0x6cb95820,
+-	0x21114: 0x6c8dd020, 0x21115: 0x6c947820,
+-	0x2111a: 0x6c14b220,
+-	0x21126: 0x6d334420,
+-	0x21128: 0x6d0c8420,
+-	0x21132: 0x6d1b3820, 0x21133: 0x6c7c5c20,
+-	0x21137: 0x6cc0d220,
+-	0x21139: 0x6c3dd820, 0x2113b: 0x6d22d420,
+-	// Block 0x845, offset 0x21140
+-	0x21141: 0x6cb57e20,
+-	0x21146: 0x6cb75620, 0x21147: 0x6c61a620,
+-	0x21148: 0x6d24ce20,
+-	0x2114e: 0x6c434420, 0x2114f: 0x6c734820,
+-	0x21151: 0x6cb5a020, 0x21153: 0x6c411020,
+-	0x21155: 0x6cc37220,
+-	0x2115a: 0x6cf09220,
+-	0x21167: 0x6d368620,
+-	0x2116b: 0x6c65ba20,
+-	0x2116d: 0x6cd8d620,
+-	0x21170: 0x6d188c20, 0x21171: 0x6cb91c20,
+-	0x2117c: 0x6c856220, 0x2117f: 0x6d29ce20,
+-	// Block 0x846, offset 0x21180
+-	0x21180: 0x6d168020, 0x21182: 0x6c110620, 0x21183: 0x6d168220,
+-	0x21184: 0x6c437220, 0x21186: 0x6c2e6e20,
+-	0x21188: 0x6d33a420, 0x21189: 0x6d16ec20, 0x2118b: 0x6d28fa20,
+-	0x2118c: 0x6c275220, 0x2118e: 0x6cdab220,
+-	0x21194: 0x6c6b4420, 0x21195: 0x6c193820, 0x21196: 0x6cc1fc20,
+-	0x21198: 0x6c4e7820, 0x21199: 0x6cfb1e20,
+-	0x211a0: 0x6cc2ae20, 0x211a1: 0x6c6a5620,
+-	0x211a5: 0x6c733820,
+-	0x211aa: 0x6c285c20,
+-	0x211ad: 0x6c6c2420,
+-	0x211b4: 0x6c0da820, 0x211b5: 0x6c551a20,
+-	0x211b9: 0x6c73da20, 0x211bb: 0x6d20b020,
+-	// Block 0x847, offset 0x211c0
+-	0x211c3: 0x6c84fa20,
+-	0x211c4: 0x6cbb0420, 0x211c5: 0x6cd70620, 0x211c6: 0x6c7a2420,
+-	0x211c8: 0x6d31b620,
+-	0x211cd: 0x6c3de820, 0x211ce: 0x6ccfac20,
+-	0x211d2: 0x6c20c020,
+-	0x211d5: 0x6ce72620, 0x211d7: 0x6d16ee20,
+-	0x211d9: 0x6d0f9220,
+-	0x211dc: 0x6ceafa20, 0x211dd: 0x6d385e20, 0x211de: 0x6c5ff220,
+-	0x211e4: 0x6d0a7a20, 0x211e6: 0x6cd05220, 0x211e7: 0x6d078820,
+-	0x211ed: 0x6c8e4820, 0x211ee: 0x6d24dc20, 0x211ef: 0x6c554220,
+-	0x211f0: 0x6d334820, 0x211f3: 0x6cae6620,
+-	0x211f7: 0x6c742220,
+-	// Block 0x848, offset 0x21200
+-	0x21202: 0x6d362020, 0x21203: 0x6cb0f620,
+-	0x21204: 0x6d261820, 0x21206: 0x6c649a20,
+-	0x2120a: 0x6cad0220,
+-	0x2120e: 0x6d3bca20,
+-	0x21210: 0x6cfb6e20, 0x21212: 0x6c080220,
+-	0x21214: 0x6c232820, 0x21216: 0x6ca13e20,
+-	0x2121a: 0x6c4c7420,
+-	0x2121e: 0x6c1a3420, 0x2121f: 0x6cbb9c20,
+-	0x21226: 0x6c0a4a20,
+-	0x21229: 0x6cbb4820, 0x2122b: 0x6d38aa20,
+-	0x21232: 0x6c38d020, 0x21233: 0x6c0cc420,
+-	0x2123e: 0x6c0fa020, 0x2123f: 0x6cc73220,
+-	// Block 0x849, offset 0x21240
+-	0x21245: 0x6c2f8820, 0x21246: 0x6cc32e20, 0x21247: 0x6c703c20,
+-	0x21248: 0x6d117420,
+-	0x21253: 0x6cf98620,
+-	0x21256: 0x6d2a3e20,
+-	0x2125d: 0x6c27c820, 0x2125f: 0x6cf44420,
+-	0x21260: 0x6ceb1420, 0x21262: 0x6c54c820,
+-	0x21267: 0x6cf64620,
+-	0x2126c: 0x6c7f1a20, 0x2126e: 0x6c3a1620,
+-	0x21279: 0x6c55ec20,
+-	// Block 0x84a, offset 0x21280
+-	0x21286: 0x6cfa7220,
+-	0x21289: 0x6ccd2c20,
+-	0x2128d: 0x6c3a8420,
+-	0x21290: 0x6c261820, 0x21292: 0x6c3e3220,
+-	0x21294: 0x6c1f3020,
+-	0x2129d: 0x6c2fd020, 0x2129e: 0x6c807020,
+-	0x212a9: 0x6cf7fc20,
+-	0x212af: 0x6c0c1420,
+-	0x212b0: 0x6d23e820, 0x212b1: 0x6cdc6e20, 0x212b2: 0x6cf80c20,
+-	0x212b7: 0x6cb3e620,
+-	0x212be: 0x6c697c20,
+-	// Block 0x84b, offset 0x212c0
+-	0x212c0: 0x6d166420, 0x212c3: 0x6cecb820,
+-	0x212c4: 0x6c611e20, 0x212c6: 0x6cecc620, 0x212c7: 0x6ce9f220,
+-	0x212cb: 0x6c021020,
+-	0x212cd: 0x6ce45820, 0x212ce: 0x6c1b0020,
+-	0x212d2: 0x6cc46220,
+-	0x212d4: 0x6cc96820, 0x212d5: 0x6d1a2c20, 0x212d6: 0x6caf3420, 0x212d7: 0x6c228e20,
+-	0x212d8: 0x6ce71a20, 0x212d9: 0x6d1ace20,
+-	0x212dc: 0x6c43c820, 0x212dd: 0x6ce55020, 0x212de: 0x6d329620, 0x212df: 0x6d390c20,
+-	0x212e1: 0x6d149820, 0x212e2: 0x6c7ae420, 0x212e3: 0x6cd90c20,
+-	0x212e7: 0x6c2c2820,
+-	0x212ec: 0x6d008820, 0x212ee: 0x6cfe9e20, 0x212ef: 0x6c4a1c20,
+-	0x212f0: 0x6ceb7420, 0x212f1: 0x6c3c3620, 0x212f2: 0x6cf3b420,
+-	0x212f5: 0x6d053220,
+-	0x212ff: 0x6d1f1620,
+-	// Block 0x84c, offset 0x21300
+-	0x21301: 0x6c8ce020, 0x21302: 0x6d0e6020,
+-	0x21305: 0x6c2ff620, 0x21306: 0x6cb77e20, 0x21307: 0x6ce21a20,
+-	0x21308: 0x6c4dfc20, 0x2130a: 0x6c1b1c20, 0x2130b: 0x6cd91820,
+-	0x21311: 0x6cc35820,
+-	0x21314: 0x6c4ea820,
+-	0x2131f: 0x6cc77820,
+-	0x21320: 0x6cb78e20, 0x21321: 0x6c762c20, 0x21322: 0x6d211e20, 0x21323: 0x6c139a20,
+-	0x21324: 0x6c1a8220, 0x21325: 0x6d233a20, 0x21327: 0x6c0e2020,
+-	0x21329: 0x6c231220, 0x2132a: 0x6d39a420,
+-	0x2132c: 0x6d235420,
+-	0x21331: 0x6c744a20, 0x21332: 0x6c8f3620, 0x21333: 0x6ccab220,
+-	0x21334: 0x6d236820,
+-	// Block 0x84d, offset 0x21340
+-	0x21345: 0x6cd66820,
+-	0x2134b: 0x6d262020,
+-	0x2134e: 0x6d2eba20,
+-	0x21351: 0x6cd66a20, 0x21353: 0x6c1ee420,
+-	0x21354: 0x6d2ec620, 0x21355: 0x6cca2020, 0x21356: 0x6cfabe20,
+-	0x21358: 0x6c24d820, 0x21359: 0x6c9bde20, 0x2135a: 0x6c2b7c20,
+-	0x2135e: 0x6d368820, 0x2135f: 0x6c02de20,
+-	0x21366: 0x6d04e020,
+-	0x21368: 0x6cb11e20, 0x2136a: 0x6c69bc20, 0x2136b: 0x6c7b6c20,
+-	0x2136c: 0x6cc98620, 0x2136d: 0x6cfcf420, 0x2136e: 0x6d2cda20, 0x2136f: 0x6c2d7820,
+-	0x21377: 0x6d154420,
+-	0x2137a: 0x6c5c2e20, 0x2137b: 0x6ccda620,
+-	// Block 0x84e, offset 0x21380
+-	0x21384: 0x6c1d2220, 0x21385: 0x6d156220, 0x21386: 0x6d021220, 0x21387: 0x6d36dc20,
+-	0x21388: 0x6ce5e020, 0x2138a: 0x6cb26c20, 0x2138b: 0x6cfbb020,
+-	0x2138e: 0x6cfadc20, 0x2138f: 0x6cdb4c20,
+-	0x21391: 0x6c24a020,
+-	0x21397: 0x6cd97220,
+-	0x2139b: 0x6c522820,
+-	0x2139d: 0x6cfd3a20, 0x2139f: 0x6d1f8e20,
+-	0x213a1: 0x6d246420,
+-	0x213a4: 0x6cdf5220, 0x213a6: 0x6c751820, 0x213a7: 0x6ca48220,
+-	0x213a9: 0x6c2cba20, 0x213ab: 0x6d164820,
+-	0x213ac: 0x6c090620,
+-	0x213b3: 0x6d056220,
+-	0x213b4: 0x6d166820, 0x213b5: 0x6cc81020, 0x213b7: 0x6c455a20,
+-	0x213ba: 0x6d166a20,
+-	0x213bf: 0x6d356e20,
+-	// Block 0x84f, offset 0x213c0
+-	0x213c0: 0x6d02a420, 0x213c2: 0x6c617820,
+-	0x213c4: 0x6cfa2c20,
+-	0x213c8: 0x6d2f4e20, 0x213c9: 0x6ca54620, 0x213ca: 0x6d015620,
+-	0x213ce: 0x6d168620,
+-	0x213eb: 0x6c3f3420,
+-	0x213ed: 0x6ccf3420, 0x213ef: 0x6d253c20,
+-	0x213f0: 0x6c390420, 0x213f2: 0x6c3d3c20, 0x213f3: 0x6cf4a820,
+-	0x213f4: 0x6cf57c20, 0x213f5: 0x6c539c20,
+-	0x213f9: 0x6c618220, 0x213fa: 0x6c170420,
+-	0x213ff: 0x6ca0ca20,
+-	// Block 0x850, offset 0x21400
+-	0x21400: 0x6cae0820, 0x21403: 0x6ca20e20,
+-	0x21404: 0x6cc00420, 0x21405: 0x6c994a20, 0x21407: 0x6c268020,
+-	0x21409: 0x6cf98c20, 0x2140a: 0x6ccfae20, 0x2140b: 0x6ce26c20,
+-	0x2140c: 0x6c530220, 0x2140d: 0x6c093620,
+-	0x2141d: 0x6ca62620, 0x2141f: 0x6cbbd220,
+-	0x21427: 0x6cc84e20,
+-	0x21438: 0x6c67d820, 0x21439: 0x6c138420, 0x2143a: 0x6c9ce220,
+-	0x2143d: 0x6d16f020, 0x2143f: 0x6cdd0a20,
+-	// Block 0x851, offset 0x21440
+-	0x21441: 0x6cf4c220, 0x21442: 0x6d078420,
+-	0x21445: 0x6cf76c20, 0x21447: 0x6d15d020,
+-	0x21450: 0x6ca49a20, 0x21453: 0x6cf07820,
+-	0x2146e: 0x6c770220,
+-	0x21471: 0x6c906020, 0x21472: 0x6c938620, 0x21473: 0x6d3c2a20,
+-	0x2147a: 0x6d35b420,
+-	0x2147c: 0x6d042220, 0x2147e: 0x6c44f820, 0x2147f: 0x6c6ce620,
+-	// Block 0x852, offset 0x21480
+-	0x21480: 0x6cfca420, 0x21481: 0x6c61c820, 0x21482: 0x6c261a20,
+-	0x21484: 0x6c815020, 0x21485: 0x6c3bb820, 0x21486: 0x6c722a20,
+-	0x2148b: 0x6c9eb220,
+-	0x2148c: 0x6cf9a620,
+-	0x21491: 0x6cda8c20,
+-	0x214a8: 0x6d35b620, 0x214aa: 0x6c567e20, 0x214ab: 0x6c79e220,
+-	0x214ad: 0x6cdd5820, 0x214ae: 0x6ca68e20,
+-	0x214ba: 0x6ce28c20, 0x214bb: 0x6d3ace20,
+-	// Block 0x853, offset 0x214c0
+-	0x214c1: 0x6c269820, 0x214c3: 0x6cc04420,
+-	0x214c4: 0x6d0b9820, 0x214c6: 0x6cfb4820,
+-	0x214c9: 0x6ca58820,
+-	0x214cd: 0x6d351420, 0x214ce: 0x6c0ce620,
+-	0x214d2: 0x6c1d3a20, 0x214d3: 0x6c7f9820,
+-	0x214d4: 0x6c2ff820, 0x214d5: 0x6cc43a20, 0x214d6: 0x6cfe2e20,
+-	0x214d8: 0x6cff8020, 0x214d9: 0x6ced0620, 0x214da: 0x6cc81420, 0x214db: 0x6cee5020,
+-	0x214dc: 0x6ca69820, 0x214de: 0x6c03fe20, 0x214df: 0x6d0b9a20,
+-	0x214e5: 0x6cd7e220, 0x214e6: 0x6d1ad820,
+-	0x214e8: 0x6d231220,
+-	0x214ee: 0x6c83b820, 0x214ef: 0x6c5dc020,
+-	// Block 0x854, offset 0x21500
+-	0x21517: 0x6c056820,
+-	0x21523: 0x6cf5e620,
+-	0x21525: 0x6c6f6a20,
+-	0x21528: 0x6d01ac20, 0x21529: 0x6cb8e020, 0x2152a: 0x6caaf820, 0x2152b: 0x6d040020,
+-	0x2152c: 0x6c344e20, 0x2152d: 0x6c614020, 0x2152e: 0x6cf44a20, 0x2152f: 0x6ca21220,
+-	0x21530: 0x6d0e6e20, 0x21531: 0x6cb79020, 0x21532: 0x6ca2de20, 0x21533: 0x6c1c1e20,
+-	0x21534: 0x6c540220, 0x21536: 0x6ccaf220,
+-	0x21538: 0x6ca4aa20, 0x2153b: 0x6c1a7020,
+-	0x2153c: 0x6c1a7220, 0x2153d: 0x6c7cd020, 0x2153f: 0x6c644220,
+-	// Block 0x855, offset 0x21540
+-	0x21540: 0x6ce8ac20, 0x21542: 0x6c319a20,
+-	0x21545: 0x6cf9c220, 0x21546: 0x6d382e20, 0x21547: 0x6c5dcc20,
+-	0x21548: 0x6c1d1620, 0x21549: 0x6c26a420,
+-	0x2154c: 0x6c997c20, 0x2154d: 0x6d120620,
+-	0x21553: 0x6c72f220,
+-	0x2156c: 0x6cd38420, 0x2156f: 0x6d1a6420,
+-	0x21573: 0x6c478a20,
+-	0x21574: 0x6cf4ec20,
+-	0x21578: 0x6c4cee20, 0x21579: 0x6ce3f620, 0x2157b: 0x6c52a220,
+-	// Block 0x856, offset 0x21580
+-	0x21587: 0x6cc54e20,
+-	0x21589: 0x6d14f420, 0x2158b: 0x6cea7c20,
+-	0x2158f: 0x6cbf3c20,
+-	0x21590: 0x6c4d6e20, 0x21592: 0x6cb79e20,
+-	0x21595: 0x6c5dd820, 0x21596: 0x6ce40020, 0x21597: 0x6caf7020,
+-	0x2159a: 0x6c451020,
+-	0x2159c: 0x6d01c420, 0x2159e: 0x6c9d5620, 0x2159f: 0x6c434c20,
+-	0x215a0: 0x6cddf020, 0x215a1: 0x6cfdec20, 0x215a3: 0x6cd4e620,
+-	0x215a6: 0x6c3e9820,
+-	0x215ac: 0x6d3b7e20, 0x215ad: 0x6c8f3820,
+-	// Block 0x857, offset 0x215c0
+-	0x215c5: 0x6d1f4420,
+-	0x215ca: 0x6c1a7820, 0x215cb: 0x6c330620,
+-	0x215e2: 0x6c841420, 0x215e3: 0x6d105820,
+-	0x215e4: 0x6c841620, 0x215e7: 0x6c91c820,
+-	0x215e8: 0x6ca24e20, 0x215e9: 0x6cdc5220, 0x215ea: 0x6c00b620,
+-	0x215ed: 0x6c79f420, 0x215ef: 0x6d306a20,
+-	0x215f0: 0x6c00b820, 0x215f1: 0x6ce2a620, 0x215f3: 0x6c93ea20,
+-	0x215f4: 0x6ce9ac20, 0x215f5: 0x6c088020,
+-	0x215fe: 0x6c5bf620, 0x215ff: 0x6c588a20,
+-	// Block 0x858, offset 0x21600
+-	0x2161b: 0x6c7e0e20,
+-	0x2161d: 0x6d02e020,
+-	0x21621: 0x6ccaf420,
+-	0x2162b: 0x6cd5f020,
+-	0x2162c: 0x6cc3da20, 0x2162d: 0x6c035620, 0x2162e: 0x6cea0620,
+-	0x21632: 0x6c403220, 0x21633: 0x6c0cba20,
+-	0x21635: 0x6ce17e20, 0x21637: 0x6cfe4c20,
+-	0x21639: 0x6cd81420, 0x2163a: 0x6c0f4020,
+-	0x2163c: 0x6c970020, 0x2163d: 0x6c298020, 0x2163f: 0x6c4b6420,
+-	// Block 0x859, offset 0x21640
+-	0x21640: 0x6c522020, 0x21641: 0x6cf69a20, 0x21642: 0x6c298220, 0x21643: 0x6d184e20,
+-	0x21645: 0x6c088420, 0x21647: 0x6c472c20,
+-	0x21648: 0x6c255820, 0x21649: 0x6ccb4420,
+-	0x2164d: 0x6c441e20, 0x2164e: 0x6d23c220, 0x2164f: 0x6ca2fa20,
+-	0x21651: 0x6c865620, 0x21652: 0x6d36ac20,
+-	0x21670: 0x6d2fd420,
+-	0x21674: 0x6c5f1220, 0x21675: 0x6cc87220,
+-	0x21679: 0x6c1d5820,
+-	// Block 0x85a, offset 0x21680
+-	0x21682: 0x6c6b1820,
+-	0x2168c: 0x6c172020, 0x2168d: 0x6d307a20,
+-	0x21692: 0x6cdb1020, 0x21693: 0x6d1db020,
+-	0x21696: 0x6cb7d420, 0x21697: 0x6d3d9820,
+-	0x2169a: 0x6c769620,
+-	0x2169c: 0x6d133c20, 0x2169e: 0x6cb7d620,
+-	0x216b9: 0x6d04a420,
+-	// Block 0x85b, offset 0x216c0
+-	0x216c9: 0x6d141420, 0x216ca: 0x6c1e3020,
+-	0x216ce: 0x6ce98020, 0x216cf: 0x6c00da20,
+-	0x216d0: 0x6cb1f220, 0x216d3: 0x6c8b3620,
+-	0x216d4: 0x6c9dd820, 0x216d5: 0x6c00dc20, 0x216d7: 0x6ca0ae20,
+-	0x216d8: 0x6cf0e220, 0x216d9: 0x6d1d5220, 0x216da: 0x6ca65020,
+-	0x216de: 0x6c0f7420,
+-	0x216e0: 0x6c8f4620,
+-	0x216f3: 0x6cc8e620,
+-	0x216fb: 0x6c936620,
+-	0x216fc: 0x6c140c20, 0x216ff: 0x6c1f8620,
+-	// Block 0x85c, offset 0x21700
+-	0x21701: 0x6ccb0220, 0x21702: 0x6c847020,
+-	0x21704: 0x6cd94620, 0x21706: 0x6c86c620,
+-	0x2170b: 0x6cf90420,
+-	0x2170d: 0x6d0c3e20, 0x2170e: 0x6c25ce20,
+-	0x21710: 0x6c8eb620,
+-	0x21718: 0x6c9b6c20, 0x2171a: 0x6d2e8a20,
+-	0x21724: 0x6d3c4c20, 0x21727: 0x6c9ea620,
+-	0x21729: 0x6c86f220, 0x2172b: 0x6c71da20,
+-	0x2172f: 0x6d025220,
+-	0x21730: 0x6d025420, 0x21731: 0x6c904220, 0x21732: 0x6c8fc220,
+-	// Block 0x85d, offset 0x21740
+-	0x21742: 0x6ce2c620, 0x21743: 0x6d3b3820,
+-	0x2174b: 0x6c155220,
+-	0x2174c: 0x6cfc4420, 0x2174f: 0x6d1cc220,
+-	0x21750: 0x6cae2a20,
+-	0x21758: 0x6d012220, 0x2175a: 0x6c69dc20,
+-	0x2175e: 0x6c1cf820,
+-	0x21773: 0x6c50ae20,
+-	0x2177d: 0x6cea8420,
+-	// Block 0x85e, offset 0x21780
+-	0x21785: 0x6c53b220,
+-	0x21788: 0x6c97b020, 0x2178a: 0x6c6c7a20,
+-	0x2178c: 0x6cc17020, 0x2178d: 0x6c30d420, 0x2178e: 0x6cbff820, 0x2178f: 0x6d28ee20,
+-	0x21791: 0x6cd0d420, 0x21792: 0x6d28f020,
+-	0x21795: 0x6d15ba20,
+-	0x2179a: 0x6c578020,
+-	0x2179f: 0x6c76a220,
+-	0x217b0: 0x6d268e20, 0x217b1: 0x6ca68420, 0x217b2: 0x6cd7d620,
+-	0x217b4: 0x6cf2aa20,
+-	0x217b8: 0x6c118e20, 0x217ba: 0x6c647c20,
+-	0x217bc: 0x6c9ecc20, 0x217bd: 0x6ccea020, 0x217bf: 0x6cc70820,
+-	// Block 0x85f, offset 0x217c0
+-	0x217c0: 0x6c419220,
+-	0x217c5: 0x6cbb0a20, 0x217c7: 0x6cd52a20,
+-	0x217c8: 0x6d3d5820,
+-	0x217cf: 0x6cd1bc20,
+-	0x217d1: 0x6ce3f820,
+-	0x217d6: 0x6d2c3620, 0x217d7: 0x6d2d7e20,
+-	0x217dd: 0x6c3bdc20, 0x217de: 0x6c9eda20,
+-	0x217e0: 0x6d2b5220,
+-	0x217e4: 0x6d368a20, 0x217e5: 0x6cb90020, 0x217e6: 0x6c4ede20, 0x217e7: 0x6c440e20,
+-	0x217ee: 0x6c119e20,
+-	0x217f0: 0x6c4c7820, 0x217f1: 0x6c685e20, 0x217f3: 0x6d1da220,
+-	0x217f4: 0x6c026820,
+-	0x217fb: 0x6d2c4620,
+-	0x217fd: 0x6cf8c420,
+-	// Block 0x860, offset 0x21800
+-	0x21801: 0x6d05d220, 0x21802: 0x6cf46620,
+-	0x2180f: 0x6c74b820,
+-	0x21810: 0x6c5f2a20, 0x21812: 0x6c1c6a20,
+-	0x21814: 0x6ced5420, 0x21816: 0x6c9ef220, 0x21817: 0x6d2b6420,
+-	0x2181c: 0x6c6b6e20, 0x2181d: 0x6cd29220, 0x2181f: 0x6cf72e20,
+-	0x21821: 0x6c36e220,
+-	0x21825: 0x6c564220, 0x21826: 0x6c564a20,
+-	0x21828: 0x6c857020, 0x2182b: 0x6c1f0820,
+-	0x2182e: 0x6d13c820, 0x2182f: 0x6c992c20,
+-	0x21830: 0x6d056c20, 0x21831: 0x6d379820, 0x21833: 0x6d16b820,
+-	0x2183a: 0x6c89de20,
+-	0x2183f: 0x6c647820,
+-	// Block 0x861, offset 0x21840
+-	0x21840: 0x6c656e20, 0x21841: 0x6c70fa20,
+-	0x21844: 0x6d3abc20,
+-	0x21848: 0x6cf43a20,
+-	0x2184f: 0x6c78a420,
+-	0x21850: 0x6c786020, 0x21851: 0x6c860e20, 0x21852: 0x6c08dc20, 0x21853: 0x6c43ec20,
+-	0x21855: 0x6d059820, 0x21856: 0x6ccbfa20, 0x21857: 0x6c8d1c20,
+-	0x21858: 0x6c781220,
+-	0x2185e: 0x6c0f4220, 0x2185f: 0x6c0b0820,
+-	0x21860: 0x6cd68820, 0x21861: 0x6cb66e20, 0x21862: 0x6ccde420,
+-	0x21866: 0x6c5e6420,
+-	0x21868: 0x6cbc1c20,
+-	0x2186e: 0x6d166c20, 0x2186f: 0x6c73d020,
+-	0x21870: 0x6d2efe20, 0x21872: 0x6d031620,
+-	0x21877: 0x6cea9a20,
+-	0x21878: 0x6c4d5020, 0x21879: 0x6cfa2e20, 0x2187b: 0x6ceae020,
+-	0x2187c: 0x6d145620,
+-	// Block 0x862, offset 0x21880
+-	0x21883: 0x6c242c20,
+-	0x21887: 0x6c674620,
+-	0x21888: 0x6ca3de20, 0x2188b: 0x6caf0020,
+-	0x2188d: 0x6c6a7020, 0x2188e: 0x6d08d820, 0x2188f: 0x6c552020,
+-	0x218a5: 0x6d1f9e20, 0x218a6: 0x6caa4c20, 0x218a7: 0x6d12c220,
+-	0x218aa: 0x6d1b3a20,
+-	0x218ac: 0x6c799420,
+-	0x218b6: 0x6cfe8420, 0x218b7: 0x6cfd6220,
+-	0x218bc: 0x6ca49620, 0x218be: 0x6d2f2420,
+-	// Block 0x863, offset 0x218c0
+-	0x218d0: 0x6c6a7c20, 0x218d3: 0x6caa5020,
+-	0x218d4: 0x6ccd7020,
+-	0x218e2: 0x6c63a020,
+-	0x218e7: 0x6d38dc20,
+-	0x218e8: 0x6cc6fe20, 0x218eb: 0x6c922220,
+-	0x218ec: 0x6cc96e20, 0x218ed: 0x6caa6020, 0x218ef: 0x6c0ec420,
+-	0x218f0: 0x6d302220, 0x218f2: 0x6cbdca20,
+-	0x218f4: 0x6c21f620, 0x218f5: 0x6d40ac20, 0x218f7: 0x6cf2ac20,
+-	0x218f8: 0x6cf43620, 0x218fb: 0x6ca7e020,
+-	0x218ff: 0x6cfa8820,
+-	// Block 0x864, offset 0x21900
+-	0x21900: 0x6c531220,
+-	0x2192b: 0x6ce6e820,
+-	0x2192c: 0x6c6c8a20,
+-	0x21931: 0x6c6aa420, 0x21932: 0x6c51c020, 0x21933: 0x6ce84c20,
+-	0x21934: 0x6d303a20, 0x21935: 0x6cb1ec20, 0x21936: 0x6c6ce820, 0x21937: 0x6ca44420,
+-	0x2193c: 0x6c33e820, 0x2193e: 0x6cf5be20, 0x2193f: 0x6d018020,
+-	// Block 0x865, offset 0x21940
+-	0x21941: 0x6cf86c20, 0x21942: 0x6c815220, 0x21943: 0x6c32ac20,
+-	0x21944: 0x6c61ca20, 0x21945: 0x6c138a20, 0x21946: 0x6c1d6620,
+-	0x21948: 0x6c427020,
+-	0x2194e: 0x6cfdb820, 0x2194f: 0x6c29d620,
+-	0x21965: 0x6c0b8e20, 0x21966: 0x6cfea020, 0x21967: 0x6d02c220,
+-	// Block 0x866, offset 0x21980
+-	0x21981: 0x6d224c20, 0x21982: 0x6cfb4a20, 0x21983: 0x6c83ba20,
+-	0x21984: 0x6cba0020, 0x21987: 0x6c9a5420,
+-	0x21989: 0x6cbb6c20, 0x2198a: 0x6d0b9e20,
+-	0x2198c: 0x6cb82a20, 0x2198d: 0x6cbf8a20, 0x2198f: 0x6c056a20,
+-	0x21990: 0x6d32b220,
+-	0x2199a: 0x6d2b4a20, 0x2199b: 0x6cd68e20,
+-	0x2199e: 0x6ccaf020,
+-	// Block 0x867, offset 0x219c0
+-	0x219c5: 0x6c923a20,
+-	0x219c9: 0x6d009e20, 0x219cb: 0x6c3f5c20,
+-	0x219cc: 0x6d2d3a20,
+-	0x219e9: 0x6d2b5020, 0x219eb: 0x6c32c220,
+-	0x219ed: 0x6c2ad620, 0x219ee: 0x6d233c20,
+-	0x219f0: 0x6c93de20, 0x219f2: 0x6ced8220, 0x219f3: 0x6d090e20,
+-	0x219f4: 0x6c68f420, 0x219f5: 0x6d266420, 0x219f6: 0x6d362420, 0x219f7: 0x6cefc420,
+-	0x219f9: 0x6c43ee20, 0x219fa: 0x6c71b420,
+-	0x219fc: 0x6d0d8420, 0x219fd: 0x6c262620, 0x219fe: 0x6c997e20,
+-	// Block 0x868, offset 0x21a00
+-	0x21a06: 0x6c3e7820, 0x21a07: 0x6c002820,
+-	0x21a0a: 0x6d079e20,
+-	0x21a0c: 0x6c427e20, 0x21a0d: 0x6c013220,
+-	0x21a12: 0x6c603620,
+-	0x21a18: 0x6cafea20, 0x21a19: 0x6d352820,
+-	0x21a1c: 0x6caac020,
+-	0x21a3f: 0x6cacbc20,
+-	// Block 0x869, offset 0x21a40
+-	0x21a41: 0x6d14f620,
+-	0x21a44: 0x6c6ac820, 0x21a46: 0x6d3e3820,
+-	0x21a48: 0x6c644420, 0x21a49: 0x6cec6420,
+-	0x21a4c: 0x6c644620,
+-	0x21a5f: 0x6c15c020,
+-	0x21a61: 0x6cdd7420, 0x21a62: 0x6cdd7620, 0x21a63: 0x6c605020,
+-	0x21a64: 0x6cd96420, 0x21a66: 0x6ce2f420, 0x21a67: 0x6caf7420,
+-	0x21a68: 0x6cb32c20,
+-	0x21a6e: 0x6c9d5a20,
+-	0x21a74: 0x6d12fc20, 0x21a76: 0x6cbe1c20, 0x21a77: 0x6c6d1620,
+-	0x21a7a: 0x6c73ae20,
+-	0x21a7d: 0x6d24f420, 0x21a7e: 0x6cc83e20,
+-	// Block 0x86a, offset 0x21a80
+-	0x21a94: 0x6c04fa20,
+-	0x21ab0: 0x6c0d3a20,
+-	0x21ab4: 0x6cf0ae20, 0x21ab5: 0x6d2a8820, 0x21ab6: 0x6cbcd020, 0x21ab7: 0x6cd9ce20,
+-	0x21ab8: 0x6c91ca20,
+-	0x21abc: 0x6c2ecc20, 0x21abd: 0x6c1fb820, 0x21abe: 0x6c09f620, 0x21abf: 0x6d3a1a20,
+-	// Block 0x86b, offset 0x21ac0
+-	0x21ac0: 0x6c966220, 0x21ac1: 0x6c3aba20, 0x21ac2: 0x6cb1cc20, 0x21ac3: 0x6d1b6620,
+-	0x21ac4: 0x6d08a220, 0x21ac6: 0x6c02e020, 0x21ac7: 0x6d3d7820,
+-	0x21ac8: 0x6d40c820, 0x21acb: 0x6c08ea20,
+-	0x21ad1: 0x6c812620, 0x21ad3: 0x6ce40820,
+-	0x21ad9: 0x6ce5c820, 0x21ada: 0x6c64c820,
+-	0x21adf: 0x6ce7c020,
+-	0x21afd: 0x6c343420, 0x21afe: 0x6c308420,
+-	// Block 0x86c, offset 0x21b00
+-	0x21b02: 0x6c0b4220,
+-	0x21b20: 0x6d36b020, 0x21b22: 0x6c3b8a20,
+-	0x21b26: 0x6c776a20, 0x21b27: 0x6d36b220,
+-	0x21b28: 0x6d2cfc20, 0x21b29: 0x6c0a1e20, 0x21b2a: 0x6c7b6e20,
+-	0x21b2c: 0x6c050220, 0x21b2d: 0x6c73b820, 0x21b2e: 0x6cc13420,
+-	0x21b30: 0x6cb51e20, 0x21b31: 0x6c824e20, 0x21b32: 0x6d00da20, 0x21b33: 0x6ce0ca20,
+-	0x21b3c: 0x6cd9d420, 0x21b3e: 0x6c075020,
+-	// Block 0x86d, offset 0x21b40
+-	0x21b47: 0x6d106820,
+-	0x21b48: 0x6c65ce20,
+-	0x21b65: 0x6d2a8a20,
+-	// Block 0x86e, offset 0x21b80
+-	0x21b80: 0x6d3b6a20, 0x21b83: 0x6c38b820,
+-	0x21b85: 0x6ccf2420, 0x21b87: 0x6cbf5e20,
+-	0x21b89: 0x6cb3a020, 0x21b8b: 0x6ce60220,
+-	0x21b8c: 0x6ccc1a20, 0x21b8d: 0x6d28c820,
+-	0x21b91: 0x6ca7ac20, 0x21b92: 0x6c48fa20, 0x21b93: 0x6c250a20,
+-	0x21ba1: 0x6cbc5e20, 0x21ba3: 0x6c2ee420,
+-	0x21bb3: 0x6cb1ee20,
+-	0x21bb4: 0x6c226a20, 0x21bb6: 0x6c058e20,
+-	// Block 0x86f, offset 0x21bc0
+-	0x21bcd: 0x6d1b8a20,
+-	0x21bd1: 0x6cfc3020,
+-	0x21bd4: 0x6d161820, 0x21bd5: 0x6c9e9e20, 0x21bd6: 0x6c32b220, 0x21bd7: 0x6d395620,
+-	0x21bd9: 0x6c798c20,
+-	0x21be2: 0x6d2ee020,
+-	0x21bf6: 0x6c8eb820,
+-	0x21bf8: 0x6d355820, 0x21bf9: 0x6c15ee20, 0x21bfa: 0x6c31ca20, 0x21bfb: 0x6d25c020,
+-	0x21bfe: 0x6cddd220, 0x21bff: 0x6c6b5820,
+-	// Block 0x870, offset 0x21c00
+-	0x21c00: 0x6c86c820, 0x21c01: 0x6c460420,
+-	0x21c0c: 0x6c054220,
+-	0x21c17: 0x6c4c9220,
+-	0x21c18: 0x6c8a3420, 0x21c19: 0x6cd08220,
+-	0x21c23: 0x6ca7c020,
+-	0x21c25: 0x6c24bc20, 0x21c26: 0x6cf04c20,
+-	0x21c28: 0x6cead620, 0x21c2b: 0x6cda6020,
+-	0x21c2d: 0x6c8fc420,
+-	0x21c33: 0x6cff3820,
+-	0x21c34: 0x6d0df820,
+-	// Block 0x871, offset 0x21c40
+-	0x21c43: 0x6cbebe20,
+-	0x21c4d: 0x6cf73020, 0x21c4f: 0x6d21e220,
+-	0x21c51: 0x6d337220, 0x21c52: 0x6d027420, 0x21c53: 0x6c146e20,
+-	0x21c54: 0x6c3c0020, 0x21c56: 0x6c4c9c20,
+-	0x21c58: 0x6c6e3e20, 0x21c59: 0x6c808220, 0x21c5a: 0x6cfafe20,
+-	0x21c5d: 0x6c8d8e20,
+-	0x21c6e: 0x6c830020,
+-	0x21c72: 0x6c760220, 0x21c73: 0x6d002a20,
+-	0x21c7c: 0x6d28d820,
+-	// Block 0x872, offset 0x21c80
+-	0x21c84: 0x6c493e20, 0x21c85: 0x6cbd0820, 0x21c86: 0x6c963e20, 0x21c87: 0x6d124a20,
+-	0x21c88: 0x6c945620, 0x21c89: 0x6cdeee20,
+-	0x21c91: 0x6c964020,
+-	0x21c9e: 0x6c03a420, 0x21c9f: 0x6c165420,
+-	0x21ca1: 0x6d3dec20,
+-	0x21cab: 0x6ce5d020,
+-	0x21caf: 0x6cecaa20,
+-	0x21cb0: 0x6c8dd420,
+-	0x21cb4: 0x6d24aa20, 0x21cb5: 0x6cb72c20, 0x21cb7: 0x6cb58020,
+-	0x21cbc: 0x6c619420, 0x21cbd: 0x6c0eb620, 0x21cbf: 0x6cd1a420,
+-	// Block 0x873, offset 0x21cc0
+-	0x21cc0: 0x6c3f4a20, 0x21cc2: 0x6c4a4620,
+-	0x21cc5: 0x6c2d0e20, 0x21cc7: 0x6c4fa420,
+-	0x21cc9: 0x6c411220, 0x21ccb: 0x6cb5c820,
+-	0x21cd3: 0x6c19fe20,
+-	0x21cd4: 0x6c5bc220, 0x21cd7: 0x6cf9cc20,
+-	0x21cd8: 0x6cd27020, 0x21cd9: 0x6d365820, 0x21cda: 0x6cb61420,
+-	0x21cdc: 0x6c4d7420, 0x21cdf: 0x6c692c20,
+-	0x21ce0: 0x6c867620, 0x21ce2: 0x6c8a7820,
+-	0x21ce4: 0x6cbba620,
+-	0x21ce8: 0x6cc99c20, 0x21cea: 0x6cb55220, 0x21ceb: 0x6cd19620,
+-	0x21cee: 0x6c6a7220,
+-	0x21cf5: 0x6c06e420, 0x21cf6: 0x6c0aec20, 0x21cf7: 0x6c032420,
+-	0x21cf8: 0x6c755c20, 0x21cf9: 0x6caf3a20,
+-	0x21cfc: 0x6c282220, 0x21cff: 0x6ce0e620,
+-	// Block 0x874, offset 0x21d00
+-	0x21d00: 0x6c7cca20, 0x21d01: 0x6c7a2820, 0x21d03: 0x6c79d020,
+-	0x21d09: 0x6cd1a620, 0x21d0a: 0x6cd1a820, 0x21d0b: 0x6c5e9a20,
+-	0x21d0c: 0x6c063620,
+-	0x21d10: 0x6c785a20, 0x21d11: 0x6c7b9020,
+-	0x21d16: 0x6c9f9c20,
+-	0x21d19: 0x6c89e020, 0x21d1a: 0x6c35f220, 0x21d1b: 0x6c43d820,
+-	0x21d1f: 0x6cee0420,
+-	0x21d20: 0x6c344020, 0x21d23: 0x6cb85220,
+-	0x21d24: 0x6c573220, 0x21d26: 0x6c539e20,
+-	0x21d29: 0x6cae5e20, 0x21d2b: 0x6c698c20,
+-	0x21d30: 0x6cc0f020, 0x21d31: 0x6d3f3c20, 0x21d32: 0x6d391820, 0x21d33: 0x6c7b9620,
+-	0x21d35: 0x6ccbd820, 0x21d37: 0x6c61cc20,
+-	0x21d38: 0x6cee6c20, 0x21d39: 0x6cb40820, 0x21d3a: 0x6d090620,
+-	0x21d3c: 0x6cce6620,
+-	// Block 0x875, offset 0x21d40
+-	0x21d42: 0x6c80b620, 0x21d43: 0x6d351620,
+-	0x21d44: 0x6ce6c620, 0x21d47: 0x6c26f020,
+-	0x21d55: 0x6d0faa20, 0x21d56: 0x6c6d0020, 0x21d57: 0x6d351820,
+-	0x21d5a: 0x6d3d5a20,
+-	0x21d5c: 0x6d28b420, 0x21d5d: 0x6c14f220,
+-	0x21d62: 0x6c998020,
+-	0x21d66: 0x6c797820, 0x21d67: 0x6d388420,
+-	0x21d68: 0x6c54ca20, 0x21d69: 0x6cae7220,
+-	0x21d6d: 0x6c6ffc20,
+-	0x21d78: 0x6c21bc20, 0x21d79: 0x6c9fae20,
+-	0x21d7e: 0x6cffec20,
+-	// Block 0x876, offset 0x21d80
+-	0x21d80: 0x6c322220, 0x21d81: 0x6cef1820, 0x21d83: 0x6c119a20,
+-	0x21d84: 0x6d214a20, 0x21d85: 0x6c326220, 0x21d86: 0x6c763620, 0x21d87: 0x6cb0a220,
+-	0x21d8a: 0x6c1a1a20,
+-	0x21d8e: 0x6c218020,
+-	0x21d90: 0x6cceb420, 0x21d91: 0x6d0d9e20, 0x21d92: 0x6c7b2820,
+-	0x21d94: 0x6d265020,
+-	0x21da6: 0x6cb61620, 0x21da7: 0x6d32e020,
+-	0x21da9: 0x6c78c220, 0x21daa: 0x6cb61820, 0x21dab: 0x6d354020,
+-	0x21dac: 0x6c928420,
+-	0x21db1: 0x6caf7c20, 0x21db2: 0x6cab0420, 0x21db3: 0x6cad7c20,
+-	0x21dba: 0x6c3a6020,
+-	0x21dbf: 0x6cf19c20,
+-	// Block 0x877, offset 0x21dc0
+-	0x21dc2: 0x6c9b2c20,
+-	0x21dc8: 0x6ccd5620,
+-	0x21dcc: 0x6d04a020, 0x21dce: 0x6c351020, 0x21dcf: 0x6c0c9220,
+-	0x21dda: 0x6d1eb020,
+-	0x21ddc: 0x6c97f620, 0x21dde: 0x6c8a7a20,
+-	0x21de1: 0x6d00ea20, 0x21de2: 0x6c949c20, 0x21de3: 0x6cbba820,
+-	0x21de4: 0x6c2ae620, 0x21de6: 0x6c1a3e20, 0x21de7: 0x6c1a4020,
+-	0x21ded: 0x6c21d820,
+-	0x21df8: 0x6c131420,
+-	// Block 0x878, offset 0x21e00
+-	0x21e00: 0x6c825e20, 0x21e01: 0x6d2e1c20, 0x21e02: 0x6c853620, 0x21e03: 0x6c885e20,
+-	0x21e04: 0x6cc45820,
+-	0x21e0d: 0x6c18ee20, 0x21e0f: 0x6c1a4820,
+-	0x21e10: 0x6c473c20, 0x21e12: 0x6d403a20, 0x21e13: 0x6c1df420,
+-	0x21e14: 0x6c204420,
+-	0x21e1c: 0x6c835220, 0x21e1d: 0x6cd7a820, 0x21e1e: 0x6c941020,
+-	0x21e23: 0x6c3f2420,
+-	0x21e25: 0x6c871620, 0x21e27: 0x6cca6020,
+-	0x21e2b: 0x6cca0c20,
+-	0x21e2f: 0x6cc9b220,
+-	0x21e33: 0x6ca8b020,
+-	0x21e36: 0x6d413c20, 0x21e37: 0x6c855020,
+-	0x21e3b: 0x6cd58c20,
+-	0x21e3e: 0x6c3f2a20,
+-	// Block 0x879, offset 0x21e40
+-	0x21e49: 0x6c094620,
+-	0x21e4d: 0x6c2a0820,
+-	0x21e52: 0x6cd1b220,
+-	0x21e56: 0x6c422020, 0x21e57: 0x6ce09e20,
+-	0x21e5c: 0x6c97f820, 0x21e5f: 0x6c842820,
+-	0x21e62: 0x6c0a4c20,
+-	0x21e66: 0x6cac7e20,
+-	0x21e68: 0x6d1eca20,
+-	0x21e6d: 0x6c6f5020, 0x21e6f: 0x6c4c1220,
+-	0x21e70: 0x6c89dc20, 0x21e73: 0x6cf2de20,
+-	0x21e74: 0x6cb85420, 0x21e75: 0x6c30e820, 0x21e77: 0x6c8afa20,
+-	0x21e79: 0x6c68e020, 0x21e7b: 0x6c8afc20,
+-	// Block 0x87a, offset 0x21e80
+-	0x21e81: 0x6ce56020,
+-	0x21e84: 0x6c4c2620, 0x21e86: 0x6cacde20, 0x21e87: 0x6cbb8e20,
+-	0x21e89: 0x6c2b8a20, 0x21e8a: 0x6d284420,
+-	0x21e92: 0x6c821420,
+-	0x21e96: 0x6cd7cc20, 0x21e97: 0x6d02b020,
+-	0x21e9c: 0x6d02c420, 0x21e9d: 0x6cfe2620, 0x21e9e: 0x6c95ac20,
+-	0x21ea4: 0x6c07e820, 0x21ea5: 0x6ce55a20,
+-	0x21eac: 0x6cffee20, 0x21eae: 0x6c30b420,
+-	0x21eb3: 0x6c296e20,
+-	0x21eb4: 0x6ce67c20, 0x21eb5: 0x6d3bcc20,
+-	0x21ebb: 0x6cab4620,
+-	0x21ebd: 0x6cf30e20,
+-	// Block 0x87b, offset 0x21ec0
+-	0x21ec4: 0x6d02ee20, 0x21ec5: 0x6cc87a20,
+-	0x21ec8: 0x6d3dae20, 0x21ec9: 0x6c299020,
+-	0x21ecd: 0x6c257420,
+-	0x21ed1: 0x6d3dc820,
+-	0x21ed7: 0x6c238620,
+-	0x21ed8: 0x6c159220,
+-	0x21edd: 0x6d100820,
+-	0x21ee7: 0x6d0d5e20,
+-	0x21ef3: 0x6d0d6820,
+-	0x21ef5: 0x6d323620,
+-	0x21efd: 0x6caade20, 0x21efe: 0x6d0e7220,
+-	// Block 0x87c, offset 0x21f00
+-	0x21f05: 0x6c39d820,
+-	0x21f09: 0x6d0da020, 0x21f0a: 0x6d214e20,
+-	0x21f0d: 0x6ce34020, 0x21f0e: 0x6c401a20, 0x21f0f: 0x6c07a020,
+-	0x21f11: 0x6d0db220, 0x21f13: 0x6c5ad220,
+-	0x21f19: 0x6c5a6220,
+-	0x21f1c: 0x6c4b7420, 0x21f1d: 0x6d0ece20, 0x21f1f: 0x6c55da20,
+-	0x21f20: 0x6c0c3620,
+-	0x21f27: 0x6cdcc420,
+-	0x21f2e: 0x6d3f3020, 0x21f2f: 0x6c618620,
+-	0x21f30: 0x6c35ae20, 0x21f31: 0x6c61ce20, 0x21f32: 0x6c7ccc20,
+-	0x21f34: 0x6c89b620,
+-	0x21f38: 0x6c5dda20, 0x21f3a: 0x6cef3a20, 0x21f3b: 0x6d3cea20,
+-	0x21f3f: 0x6ce6ae20,
+-	// Block 0x87d, offset 0x21f40
+-	0x21f43: 0x6d290e20,
+-	0x21f44: 0x6d201020,
+-	0x21f49: 0x6cc5c020,
+-	0x21f4d: 0x6c9e4e20,
+-	0x21f5a: 0x6ca31020,
+-	0x21f5d: 0x6ce84220, 0x21f5f: 0x6c27be20,
+-	0x21f61: 0x6c73ec20,
+-	0x21f64: 0x6d056e20, 0x21f65: 0x6c2b1820,
+-	0x21f70: 0x6cfe1a20,
+-	0x21f77: 0x6d048a20,
+-	0x21f7a: 0x6d1fac20, 0x21f7b: 0x6c489620,
+-	0x21f7e: 0x6cf5a420,
+-	// Block 0x87e, offset 0x21f80
+-	0x21f88: 0x6c51bc20,
+-	0x21f8d: 0x6c2f6c20,
+-	0x21f90: 0x6c914020, 0x21f92: 0x6d061a20,
+-	0x21f94: 0x6d391a20, 0x21f95: 0x6cfca820, 0x21f96: 0x6c598820, 0x21f97: 0x6c138c20,
+-	0x21f98: 0x6cd2c420, 0x21f99: 0x6c421820, 0x21f9a: 0x6caadc20, 0x21f9b: 0x6c01aa20,
+-	0x21f9f: 0x6d003c20,
+-	0x21fa7: 0x6c502c20,
+-	0x21fb2: 0x6cbd2a20, 0x21fb3: 0x6c450620,
+-	0x21fb4: 0x6ccce020, 0x21fb5: 0x6c3e4c20,
+-	0x21fbd: 0x6d2b4c20,
+-	// Block 0x87f, offset 0x21fc0
+-	0x21fc7: 0x6c287c20,
+-	0x21fd6: 0x6c2d1420, 0x21fd7: 0x6ccfdc20,
+-	0x21fd9: 0x6d411820,
+-	0x21fe2: 0x6c0ca620,
+-	0x21fe6: 0x6c20d020, 0x21fe7: 0x6d30f820,
+-	0x21fe8: 0x6c276e20, 0x21feb: 0x6cf2b620,
+-	0x21fec: 0x6cbf2420,
+-	0x21ff0: 0x6c8bb420, 0x21ff2: 0x6c5cc820, 0x21ff3: 0x6c5ed020,
+-	// Block 0x880, offset 0x22000
+-	0x22005: 0x6c127620,
+-	0x2200a: 0x6ca28620,
+-	0x2200d: 0x6c2ea820, 0x2200e: 0x6cf09620,
+-	0x22020: 0x6c0b9a20, 0x22021: 0x6ce3c020,
+-	0x22025: 0x6ce8be20,
+-	0x22036: 0x6c453620,
+-	// Block 0x881, offset 0x22040
+-	0x22044: 0x6c1b3220, 0x22045: 0x6c23ee20, 0x22046: 0x6ce3c420,
+-	0x22052: 0x6c5de620, 0x22053: 0x6cb50e20,
+-	0x22054: 0x6ccab820, 0x22055: 0x6ccaa020, 0x22056: 0x6d085220, 0x22057: 0x6c021c20,
+-	0x22058: 0x6ca3ce20, 0x2205a: 0x6d0fd020, 0x2205b: 0x6cd4f420,
+-	0x2205c: 0x6ccc0620,
+-	0x22061: 0x6ce6d620,
+-	0x22069: 0x6d0bc420, 0x2206a: 0x6c5a5820,
+-	0x2206e: 0x6c0d4220,
+-	0x2207e: 0x6caba020, 0x2207f: 0x6c128820,
+-	// Block 0x882, offset 0x22080
+-	0x22081: 0x6c026a20, 0x22083: 0x6c99ae20,
+-	0x22094: 0x6c9b3620, 0x22096: 0x6ce47220,
+-	0x2209d: 0x6ccaa220, 0x2209e: 0x6d073a20, 0x2209f: 0x6c771020,
+-	0x220a7: 0x6c811020,
+-	0x220b6: 0x6c0cc020, 0x220b7: 0x6c23b220,
+-	0x220ba: 0x6cfb8e20,
+-	// Block 0x883, offset 0x220c0
+-	0x220c4: 0x6cea2a20,
+-	0x220c9: 0x6d240a20, 0x220ca: 0x6c28c220, 0x220cb: 0x6d1d5420,
+-	0x220cd: 0x6d2f7820, 0x220cf: 0x6cb4b620,
+-	0x220d8: 0x6c5c4e20,
+-	0x220de: 0x6c00ea20, 0x220df: 0x6ca0b220,
+-	0x220e2: 0x6c6dde20, 0x220e3: 0x6c7fce20,
+-	0x220f2: 0x6c8b5820, 0x220f3: 0x6cb1a420,
+-	0x220f5: 0x6c0fa420, 0x220f6: 0x6cbf8220,
+-	0x220f9: 0x6c0aa220,
+-	0x220ff: 0x6d1dd420,
+-	// Block 0x884, offset 0x22100
+-	0x22105: 0x6c871820,
+-	0x2210d: 0x6ca8b220, 0x2210f: 0x6c2a8820,
+-	0x22113: 0x6c584620,
+-	0x22117: 0x6d272420,
+-	0x2211a: 0x6c212c20,
+-	0x2211c: 0x6c87b020, 0x2211e: 0x6d2ef420, 0x2211f: 0x6c8dd620,
+-	0x22120: 0x6c217020,
+-	0x22127: 0x6c12d220,
+-	0x22128: 0x6d09ea20,
+-	0x2212c: 0x6c71ac20, 0x2212d: 0x6c5cac20,
+-	0x2213e: 0x6ce6f820,
+-	// Block 0x885, offset 0x22140
+-	0x22146: 0x6ca91220, 0x22147: 0x6c727a20,
+-	0x2214f: 0x6c144c20,
+-	0x22156: 0x6d2a2e20,
+-	0x2215b: 0x6d24a020,
+-	0x2215f: 0x6c78f420,
+-	0x22166: 0x6c7bea20, 0x22167: 0x6c3a4a20,
+-	0x2216f: 0x6d282620,
+-	0x22170: 0x6cb9fc20,
+-	0x22174: 0x6cc2dc20,
+-	0x22178: 0x6cb38a20, 0x2217a: 0x6cadf620,
+-	// Block 0x886, offset 0x22180
+-	0x22184: 0x6c453820, 0x22185: 0x6d17e420, 0x22186: 0x6c961020,
+-	0x22191: 0x6c7b5a20, 0x22193: 0x6d085420,
+-	0x22194: 0x6ca76e20,
+-	0x2219a: 0x6c55ac20, 0x2219b: 0x6c715820,
+-	0x221a9: 0x6d136a20,
+-	0x221ae: 0x6cf73420,
+-	0x221b1: 0x6d271c20, 0x221b2: 0x6ce19020, 0x221b3: 0x6cb23e20,
+-	0x221b4: 0x6c33c820, 0x221b5: 0x6c06d420,
+-	0x221b8: 0x6c8a6020,
+-	// Block 0x887, offset 0x221c0
+-	0x221c0: 0x6d1e0e20,
+-	0x221ce: 0x6d0acc20,
+-	0x221d1: 0x6c68bc20,
+-	0x221d4: 0x6c7dcc20, 0x221d6: 0x6d321820, 0x221d7: 0x6cd59c20,
+-	0x221da: 0x6cd24820,
+-	0x221de: 0x6d1efa20, 0x221df: 0x6cac1a20,
+-	0x221e0: 0x6cff6e20, 0x221e1: 0x6c5fe020,
+-	0x221f6: 0x6cb4d220, 0x221f7: 0x6c50c620,
+-	0x221fa: 0x6c799620,
+-	// Block 0x888, offset 0x22200
+-	0x22202: 0x6d12d020, 0x22203: 0x6c1bf020,
+-	0x2220a: 0x6c77a220, 0x2220b: 0x6d269020,
+-	0x2220e: 0x6cec1a20, 0x2220f: 0x6ca71820,
+-	0x22211: 0x6c222e20, 0x22213: 0x6d14a020,
+-	0x22224: 0x6c704620,
+-	0x2222b: 0x6d0f4e20,
+-	0x2222c: 0x6c83a620, 0x2222e: 0x6c270a20, 0x2222f: 0x6c1d0c20,
+-	0x22235: 0x6d14c620,
+-	0x2223a: 0x6c4e9a20,
+-	0x2223f: 0x6d13de20,
+-	// Block 0x889, offset 0x22240
+-	0x22241: 0x6c1d4a20, 0x22242: 0x6c568020, 0x22243: 0x6d3b6220,
+-	0x22266: 0x6cbf0a20, 0x22267: 0x6c34de20,
+-	0x22278: 0x6ce73220, 0x22279: 0x6cfa9020,
+-	0x2227f: 0x6c3e5020,
+-	// Block 0x88a, offset 0x22280
+-	0x22282: 0x6c2d5020, 0x22283: 0x6cf77820,
+-	0x22284: 0x6d003e20, 0x22285: 0x6d323820, 0x22286: 0x6cbc3e20, 0x22287: 0x6ce85620,
+-	0x222b7: 0x6c4eb020,
+-	0x222b8: 0x6c7bf220, 0x222b9: 0x6cdd1a20, 0x222bb: 0x6cd46220,
+-	0x222bc: 0x6ce58020,
+-	// Block 0x88b, offset 0x222c0
+-	0x222c0: 0x6d315020, 0x222c3: 0x6ca58c20,
+-	0x222c5: 0x6cba0a20, 0x222c6: 0x6d1a6620,
+-	0x222c8: 0x6c899220, 0x222c9: 0x6ccc5420, 0x222ca: 0x6d3f4c20, 0x222cb: 0x6cafec20,
+-	0x222cc: 0x6c42c620, 0x222cf: 0x6c6d0a20,
+-	0x222d0: 0x6d1f3620, 0x222d2: 0x6ccd8c20,
+-	0x222d4: 0x6c9d4620, 0x222d5: 0x6cab9c20, 0x222d7: 0x6c54cc20,
+-	0x222db: 0x6d204620,
+-	0x222dd: 0x6c9bd420,
+-	// Block 0x88c, offset 0x22300
+-	0x22310: 0x6d352a20, 0x22313: 0x6c08e020,
+-	0x22317: 0x6ccfe820,
+-	0x22318: 0x6cb79420, 0x22319: 0x6cfaa620, 0x2231a: 0x6cac5820, 0x2231b: 0x6c776e20,
+-	0x2232b: 0x6cd68620,
+-	0x2232c: 0x6cafee20, 0x2232e: 0x6d290220, 0x2232f: 0x6d3a6c20,
+-	0x22331: 0x6cd9c020, 0x22332: 0x6c6f1820,
+-	0x22335: 0x6c150020, 0x22336: 0x6c38a420, 0x22337: 0x6cff8e20,
+-	0x22338: 0x6d1aec20, 0x22339: 0x6c540e20, 0x2233a: 0x6c999220, 0x2233b: 0x6ce8c020,
+-	0x2233d: 0x6c621820,
+-	// Block 0x88d, offset 0x22340
+-	0x22341: 0x6d151c20, 0x22343: 0x6d236c20,
+-	0x22344: 0x6c6ee020, 0x22345: 0x6cad9220, 0x22347: 0x6cfed820,
+-	0x22349: 0x6c468c20,
+-	0x2234c: 0x6c465020, 0x2234d: 0x6cdcf220, 0x2234e: 0x6cfc1620, 0x2234f: 0x6d3baa20,
+-	0x2237e: 0x6c1dba20,
+-	// Block 0x88e, offset 0x22380
+-	0x22384: 0x6cbb7e20, 0x22385: 0x6ce34220, 0x22386: 0x6d27b020,
+-	0x22389: 0x6cccec20, 0x2238a: 0x6c8b1420,
+-	0x2238c: 0x6d353620,
+-	0x22390: 0x6cabf220,
+-	0x223a3: 0x6c712e20,
+-	0x223a4: 0x6c7f1220,
+-	0x223a8: 0x6d3f1820, 0x223aa: 0x6cc1a420, 0x223ab: 0x6c47b020,
+-	0x223ac: 0x6c747a20, 0x223ad: 0x6d348220, 0x223ae: 0x6c021e20, 0x223af: 0x6cbe2020,
+-	0x223b0: 0x6cb00620, 0x223b1: 0x6d417820, 0x223b3: 0x6cb9b020,
+-	0x223b5: 0x6c25e620, 0x223b7: 0x6c606620,
+-	0x223b8: 0x6ce35220, 0x223b9: 0x6cc7b620, 0x223bb: 0x6c4d4220,
+-	0x223bc: 0x6d0a2620, 0x223be: 0x6c073c20, 0x223bf: 0x6d348420,
+-	// Block 0x88f, offset 0x223c0
+-	0x223c1: 0x6c340020,
+-	0x223cb: 0x6c293220,
+-	0x223d0: 0x6cc62e20,
+-	0x223f2: 0x6c41a820,
+-	0x223f5: 0x6c42ae20, 0x223f6: 0x6cde7220,
+-	0x223f8: 0x6cebae20, 0x223f9: 0x6d105e20, 0x223fa: 0x6c7a4e20, 0x223fb: 0x6d368c20,
+-	// Block 0x890, offset 0x22400
+-	0x22416: 0x6c64d020, 0x22417: 0x6ca6be20,
+-	0x22418: 0x6cd00e20, 0x22419: 0x6c058620, 0x2241a: 0x6cd66e20, 0x2241b: 0x6c30c020,
+-	0x2241d: 0x6cb91420, 0x2241e: 0x6c4e2820, 0x2241f: 0x6cb83020,
+-	0x22420: 0x6c41e420, 0x22423: 0x6c215a20,
+-	0x22424: 0x6c13fe20, 0x22425: 0x6c0a2620, 0x22426: 0x6d140c20, 0x22427: 0x6c3d9020,
+-	0x22428: 0x6c35b820, 0x2242a: 0x6c816c20, 0x2242b: 0x6c4fe020,
+-	0x2242c: 0x6c842a20,
+-	0x22431: 0x6ce28020, 0x22432: 0x6cd01020,
+-	0x22434: 0x6d1a9020, 0x22437: 0x6c64d220,
+-	0x2243b: 0x6c140020,
+-	// Block 0x891, offset 0x22440
+-	0x22457: 0x6ca86020,
+-	0x22458: 0x6c23f620, 0x2245b: 0x6d154620,
+-	0x2245f: 0x6ce12220,
+-	0x22462: 0x6c738820,
+-	0x22470: 0x6c1c5820, 0x22471: 0x6c468e20,
+-	0x22474: 0x6c6b1a20, 0x22475: 0x6d307c20, 0x22476: 0x6c559220, 0x22477: 0x6c987220,
+-	0x2247b: 0x6d406220,
+-	0x2247c: 0x6cd8e820, 0x2247f: 0x6c3ad020,
+-	// Block 0x892, offset 0x22480
+-	0x22480: 0x6d3e8620, 0x22481: 0x6d3e8820, 0x22483: 0x6c6b3420,
+-	0x22484: 0x6cd82820, 0x22486: 0x6c211620, 0x22487: 0x6cad9820,
+-	0x2248b: 0x6d128e20,
+-	0x2248c: 0x6c2b4420, 0x2248e: 0x6c825820, 0x2248f: 0x6d05e420,
+-	0x22490: 0x6cc7c820, 0x22492: 0x6cabde20, 0x22493: 0x6c738e20,
+-	0x22494: 0x6cf8dc20, 0x22495: 0x6d133e20, 0x22496: 0x6c014c20,
+-	0x22498: 0x6d189420, 0x22499: 0x6c64f420,
+-	0x2249c: 0x6cd93820, 0x2249d: 0x6cf2c420, 0x2249f: 0x6ccb5820,
+-	0x224a0: 0x6d355020, 0x224a1: 0x6c088e20, 0x224a2: 0x6d3be220,
+-	0x224a6: 0x6c67fa20, 0x224a7: 0x6c506820,
+-	0x224a9: 0x6c1c6c20, 0x224aa: 0x6c340820,
+-	// Block 0x893, offset 0x224c0
+-	0x224d3: 0x6c0f5820,
+-	0x224d4: 0x6c60a820, 0x224d5: 0x6c1fb020, 0x224d7: 0x6c962620,
+-	0x224da: 0x6cc8b220,
+-	0x224eb: 0x6c55b020,
+-	0x224f1: 0x6c28c420,
+-	0x224f4: 0x6c4e6420, 0x224f5: 0x6cc3fe20, 0x224f6: 0x6ccc1e20, 0x224f7: 0x6d2e1e20,
+-	0x224f8: 0x6d2b0e20, 0x224f9: 0x6c201220, 0x224fa: 0x6cb53620, 0x224fb: 0x6c2ef020,
+-	0x224fd: 0x6d2ce220, 0x224fe: 0x6ce83220,
+-	// Block 0x894, offset 0x22500
+-	0x22501: 0x6c221220, 0x22502: 0x6cc99e20,
+-	0x22504: 0x6c955620, 0x22507: 0x6c60be20,
+-	0x22522: 0x6c95c220, 0x22523: 0x6cbdb220,
+-	0x22527: 0x6cbf6c20,
+-	0x22528: 0x6c739420,
+-	0x2252c: 0x6c00e020, 0x2252d: 0x6c65e220,
+-	0x22539: 0x6ce42a20, 0x2253a: 0x6cf1b620,
+-	0x2253d: 0x6cbbb620,
+-	// Block 0x895, offset 0x22540
+-	0x22541: 0x6cac0820, 0x22542: 0x6c5d0620,
+-	0x22545: 0x6c00ec20, 0x22547: 0x6cd7a220,
+-	0x22548: 0x6c887220, 0x22549: 0x6c337420, 0x2254b: 0x6cdebc20,
+-	0x2254c: 0x6c6cbe20, 0x2254d: 0x6c0a8a20, 0x2254e: 0x6d0de820, 0x2254f: 0x6c435a20,
+-	0x22550: 0x6cb18820, 0x22551: 0x6d242c20, 0x22552: 0x6ccf7c20,
+-	0x22555: 0x6c651420, 0x22557: 0x6c55dc20,
+-	0x2255a: 0x6c8b4e20,
+-	0x2255c: 0x6c0bce20, 0x2255d: 0x6cdb4e20, 0x2255e: 0x6c689420,
+-	0x22578: 0x6d3cb820,
+-	0x2257d: 0x6c4dc220,
+-	// Block 0x896, offset 0x22580
+-	0x22587: 0x6c340e20,
+-	0x22590: 0x6d014e20, 0x22591: 0x6c9b8220, 0x22592: 0x6c3db420, 0x22593: 0x6c931a20,
+-	0x22594: 0x6ce0b220, 0x22597: 0x6c8ecc20,
+-	0x22598: 0x6cfaee20, 0x22599: 0x6cca9420,
+-	0x2259c: 0x6c240220, 0x2259d: 0x6d3c2620, 0x2259f: 0x6c188e20,
+-	0x225b0: 0x6c892820,
+-	0x225b4: 0x6c848c20,
+-	// Block 0x897, offset 0x225c0
+-	0x225c0: 0x6caf1a20, 0x225c1: 0x6ceb9420,
+-	0x225c4: 0x6cebb820, 0x225c6: 0x6c8a4a20, 0x225c7: 0x6d002620,
+-	0x225c8: 0x6c20f620, 0x225c9: 0x6c581a20, 0x225ca: 0x6ca7c220, 0x225cb: 0x6cb94820,
+-	0x225cc: 0x6c871c20, 0x225cf: 0x6cad3e20,
+-	0x225d0: 0x6ce5b020, 0x225d1: 0x6c8ece20, 0x225d2: 0x6cf40a20,
+-	0x225e4: 0x6d1d2620, 0x225e6: 0x6d2c6820,
+-	0x225f0: 0x6d21ee20, 0x225f2: 0x6cfc5020, 0x225f3: 0x6d083820,
+-	0x225f4: 0x6cd68a20, 0x225f5: 0x6cf74220,
+-	0x225f8: 0x6c9a4220, 0x225f9: 0x6ccbb420, 0x225fa: 0x6c893420,
+-	0x225fc: 0x6c6f9020, 0x225fd: 0x6c81ec20,
+-	// Block 0x898, offset 0x22600
+-	0x2260e: 0x6cff5020, 0x2260f: 0x6d407420,
+-	0x2261a: 0x6c8ee820,
+-	0x2261c: 0x6d2ff020, 0x2261e: 0x6d30c220,
+-	0x22620: 0x6c830820,
+-	0x2262d: 0x6c32b420,
+-	0x22637: 0x6c663420,
+-	0x22638: 0x6cd68c20, 0x22639: 0x6d425620, 0x2263a: 0x6cbd0c20,
+-	0x2263c: 0x6c81ca20,
+-	// Block 0x899, offset 0x22640
+-	0x22649: 0x6d248420, 0x2264a: 0x6d196620, 0x2264b: 0x6ca66e20,
+-	0x2264e: 0x6c134620,
+-	0x22655: 0x6d0f1a20, 0x22657: 0x6cc89020,
+-	0x2265e: 0x6d0d1c20, 0x2265f: 0x6c2f1e20,
+-	0x22660: 0x6c9df620,
+-	0x22667: 0x6c82a420,
+-	0x22669: 0x6cecae20,
+-	0x22670: 0x6ca2fe20,
+-	0x22676: 0x6d0d2420,
+-	0x2267a: 0x6c831c20,
+-	0x2267d: 0x6ccc3020, 0x2267e: 0x6c551620,
+-	// Block 0x89a, offset 0x22680
+-	0x22681: 0x6cf58020, 0x22682: 0x6cf58220,
+-	0x22684: 0x6d1fa020, 0x22685: 0x6c4d9220, 0x22687: 0x6c4d0820,
+-	0x22689: 0x6cebc820, 0x2268a: 0x6d068220, 0x2268b: 0x6caf3c20,
+-	0x2268c: 0x6cdf8e20, 0x2268d: 0x6cf58a20, 0x2268e: 0x6cf58c20, 0x2268f: 0x6c0d2420,
+-	0x22690: 0x6cbd1a20, 0x22691: 0x6cf58e20, 0x22692: 0x6d20c420, 0x22693: 0x6cf84a20,
+-	0x22695: 0x6c22b620, 0x22696: 0x6cba4020, 0x22697: 0x6cf95420,
+-	0x2269a: 0x6cec0620, 0x2269b: 0x6c35f420,
+-	0x2269c: 0x6d1fae20, 0x2269d: 0x6d041a20, 0x2269e: 0x6ca5c220, 0x2269f: 0x6c4de420,
+-	0x226a0: 0x6c094a20, 0x226a1: 0x6cd0ec20,
+-	0x226a4: 0x6d2d6220, 0x226a5: 0x6c2d4420, 0x226a6: 0x6d222c20,
+-	0x226a8: 0x6cab7a20, 0x226aa: 0x6c4ae820, 0x226ab: 0x6cee0620,
+-	0x226ac: 0x6cb8c620, 0x226ad: 0x6d14c820,
+-	0x226b0: 0x6d40b020, 0x226b2: 0x6cb8c820, 0x226b3: 0x6c2f9c20,
+-	0x226b4: 0x6c793420, 0x226b6: 0x6c1f2620, 0x226b7: 0x6d13e020,
+-	0x226ba: 0x6c4d9e20, 0x226bb: 0x6c7b6420,
+-	// Block 0x89b, offset 0x226c0
+-	0x226c8: 0x6c2d5820, 0x226c9: 0x6cf88a20, 0x226ca: 0x6d3e3c20, 0x226cb: 0x6c8d0420,
+-	0x226cc: 0x6d3f4e20, 0x226ce: 0x6d234420, 0x226cf: 0x6c5ccc20,
+-	0x226d1: 0x6cd86e20, 0x226d2: 0x6c76d620,
+-	0x226da: 0x6c01c420,
+-	0x226dc: 0x6d1fca20, 0x226dd: 0x6c605420, 0x226de: 0x6c5d2c20, 0x226df: 0x6cb82e20,
+-	0x226e0: 0x6c541020, 0x226e1: 0x6c541220, 0x226e3: 0x6c2d5c20,
+-	0x226e9: 0x6d004c20,
+-	0x226ed: 0x6ccf5620, 0x226ee: 0x6ccc5c20,
+-	0x226f2: 0x6d00ca20, 0x226f3: 0x6d112220,
+-	0x226f4: 0x6c26f420, 0x226f6: 0x6d01d820, 0x226f7: 0x6c1ac620,
+-	0x226f8: 0x6d1fde20, 0x226f9: 0x6c50a220, 0x226fa: 0x6ccc6220,
+-	0x226ff: 0x6cdf2e20,
+-	// Block 0x89c, offset 0x22700
+-	0x22701: 0x6d3a1c20, 0x22703: 0x6c006c20,
+-	0x22707: 0x6cc3e020,
+-	0x22708: 0x6d2aea20, 0x2270a: 0x6c7e4a20, 0x2270b: 0x6c911620,
+-	0x2270c: 0x6c1fc820, 0x2270e: 0x6d1fe620,
+-	0x22716: 0x6ce41020,
+-	0x22718: 0x6cd1fa20,
+-	0x22721: 0x6d000a20, 0x22722: 0x6cf8ee20,
+-	0x22728: 0x6c5e1220, 0x22729: 0x6c1c8620, 0x2272a: 0x6d18e620,
+-	0x2272f: 0x6cd54420,
+-	0x22730: 0x6d270020, 0x22731: 0x6c155420, 0x22732: 0x6c36da20, 0x22733: 0x6cf73620,
+-	0x22734: 0x6cf74420, 0x22735: 0x6d1d2a20, 0x22736: 0x6d410020, 0x22737: 0x6d28a220,
+-	0x2273a: 0x6d28a820,
+-	// Block 0x89d, offset 0x22740
+-	0x22742: 0x6cde2c20, 0x22743: 0x6ced7020,
+-	0x22747: 0x6d031e20,
+-	0x2274a: 0x6cee4820, 0x2274b: 0x6c3f3820,
+-	0x22750: 0x6c91b620,
+-	0x2275e: 0x6c656820,
+-	0x22761: 0x6d0c6620, 0x22763: 0x6c094c20,
+-	0x22764: 0x6c78fc20, 0x22765: 0x6c497820,
+-	0x22768: 0x6d3e1820,
+-	0x2276e: 0x6c7cce20, 0x2276f: 0x6d38e020,
+-	0x22770: 0x6d35be20, 0x22773: 0x6ce8a420,
+-	0x22777: 0x6cde4c20,
+-	0x22779: 0x6c1f3e20, 0x2277a: 0x6c196e20, 0x2277b: 0x6c1a7420,
+-	0x2277c: 0x6d3af420, 0x2277e: 0x6c26f220,
+-	// Block 0x89e, offset 0x22780
+-	0x22787: 0x6c09c620,
+-	0x22789: 0x6c641c20,
+-	0x2278c: 0x6d17e620, 0x2278f: 0x6d26c420,
+-	0x22790: 0x6c428a20,
+-	0x22796: 0x6c41ae20,
+-	0x2279c: 0x6cbbac20,
+-	0x227a0: 0x6c1eb020, 0x227a1: 0x6c1eb620, 0x227a2: 0x6c0a6a20,
+-	0x227a6: 0x6c4b8a20,
+-	0x227a9: 0x6c47e020, 0x227aa: 0x6c0e0020, 0x227ab: 0x6d1b9420,
+-	0x227ac: 0x6d3cbc20, 0x227ad: 0x6c47ec20, 0x227af: 0x6c876820,
+-	0x227b5: 0x6c35c420, 0x227b6: 0x6c271420,
+-	0x227bc: 0x6c118620,
+-	// Block 0x89f, offset 0x227c0
+-	0x227c2: 0x6ce3d420, 0x227c3: 0x6c323620,
+-	0x227c4: 0x6d168c20,
+-	0x227c8: 0x6c2e6020, 0x227ca: 0x6ca97e20,
+-	0x227cc: 0x6d094420, 0x227cd: 0x6ca54a20, 0x227ce: 0x6c4b3220, 0x227cf: 0x6c779e20,
+-	0x227d2: 0x6c201a20,
+-	0x227d6: 0x6d2c2020, 0x227d7: 0x6d1efc20,
+-	0x227d9: 0x6c043420, 0x227da: 0x6cd24a20, 0x227db: 0x6c2d3e20,
+-	0x227dc: 0x6cabb420, 0x227dd: 0x6cc01620,
+-	0x227e1: 0x6d094820, 0x227e3: 0x6ca0e420,
+-	0x227e4: 0x6c77e020, 0x227e5: 0x6d1fb020, 0x227e6: 0x6c68d220, 0x227e7: 0x6c0ec620,
+-	0x227ec: 0x6d052020,
+-	0x227f2: 0x6c9ce820, 0x227f3: 0x6c95f220,
+-	0x227f5: 0x6d094e20, 0x227f7: 0x6c34e220,
+-	0x227f9: 0x6c37c620, 0x227fa: 0x6cccd820,
+-	0x227fc: 0x6c7cee20, 0x227fd: 0x6ca52c20, 0x227fe: 0x6c9e1420, 0x227ff: 0x6c85ce20,
+-	// Block 0x8a0, offset 0x22800
+-	0x22800: 0x6c949620, 0x22802: 0x6c2e8420,
+-	0x22804: 0x6cb85620, 0x22805: 0x6c832a20, 0x22807: 0x6c997020,
+-	0x22809: 0x6c524c20, 0x2280a: 0x6c181620, 0x2280b: 0x6d35e620,
+-	0x2280d: 0x6c477c20, 0x2280e: 0x6c25b820,
+-	0x22813: 0x6cf4de20,
+-	0x22814: 0x6ce26420, 0x22817: 0x6cf61220,
+-	0x22818: 0x6d10a620, 0x22819: 0x6cefc620, 0x2281b: 0x6d40be20,
+-	0x2281c: 0x6c96be20, 0x2281d: 0x6d225a20, 0x2281e: 0x6caf0820, 0x2281f: 0x6d17a420,
+-	0x22820: 0x6cbe1620, 0x22821: 0x6d26b620, 0x22822: 0x6c754c20, 0x22823: 0x6c67e620,
+-	0x22824: 0x6d06d820, 0x22825: 0x6c07ea20,
+-	0x2282a: 0x6c95b020, 0x2282b: 0x6d3c6020,
+-	0x22832: 0x6c326420, 0x22833: 0x6cfe4020,
+-	0x22836: 0x6c5be420,
+-	0x2283a: 0x6c479e20, 0x2283b: 0x6c77b020,
+-	0x2283e: 0x6d037c20, 0x2283f: 0x6c5cf020,
+-	// Block 0x8a1, offset 0x22840
+-	0x22840: 0x6c0af820,
+-	0x22844: 0x6c78c420, 0x22845: 0x6c77b220,
+-	0x22848: 0x6c25e820,
+-	0x2284f: 0x6c92a420,
+-	0x22851: 0x6d41c620, 0x22852: 0x6d2a2020, 0x22853: 0x6c692e20,
+-	0x22854: 0x6c49a020,
+-	0x22859: 0x6d0c2220, 0x2285a: 0x6c376620,
+-	0x2285c: 0x6cbe8820, 0x2285f: 0x6c2ae820,
+-	0x22860: 0x6cd8ea20, 0x22861: 0x6cdc7220, 0x22862: 0x6c8aa420,
+-	0x22867: 0x6ccdb020,
+-	0x22869: 0x6c0a6e20, 0x2286a: 0x6cf0e420, 0x2286b: 0x6d136020,
+-	0x2286d: 0x6d2d5020, 0x2286f: 0x6d129420,
+-	0x22870: 0x6c2e4c20, 0x22871: 0x6c00ee20,
+-	0x22874: 0x6c680620, 0x22877: 0x6cda6220,
+-	0x22879: 0x6c581c20, 0x2287a: 0x6d246020,
+-	0x2287d: 0x6cc50a20,
+-	// Block 0x8a2, offset 0x22880
+-	0x22880: 0x6c2cfa20, 0x22881: 0x6d413e20, 0x22882: 0x6c047420,
+-	0x22884: 0x6cbd5a20, 0x22887: 0x6c633620,
+-	0x22889: 0x6cafcc20,
+-	0x2288c: 0x6ce7ec20,
+-	0x22890: 0x6c1da220,
+-	0x22895: 0x6c4af020,
+-	0x228a0: 0x6c5ee620,
+-	0x228a8: 0x6d096420, 0x228aa: 0x6c2d6020,
+-	0x228ad: 0x6c0bac20, 0x228ae: 0x6d291c20, 0x228af: 0x6ce76820,
+-	0x228b6: 0x6ccd5820,
+-	0x228b8: 0x6c482620, 0x228b9: 0x6cc3ec20,
+-	// Block 0x8a3, offset 0x228c0
+-	0x228c0: 0x6c47cc20,
+-	0x228c8: 0x6c55b220, 0x228c9: 0x6c7b0420,
+-	0x228cc: 0x6c46d820, 0x228ce: 0x6cdb3220,
+-	0x228d0: 0x6c1df620, 0x228d2: 0x6c795c20,
+-	0x228d4: 0x6c317e20,
+-	0x228d9: 0x6d190a20,
+-	0x228dc: 0x6c2a4220, 0x228dd: 0x6cbaf820,
+-	0x228e3: 0x6c900220,
+-	0x228e5: 0x6c84cc20, 0x228e7: 0x6c87a020,
+-	0x228e8: 0x6cbe6420, 0x228ea: 0x6ceed420,
+-	0x228ec: 0x6ca1bc20,
+-	0x228f1: 0x6cb74420, 0x228f3: 0x6c67a020,
+-	0x228f4: 0x6d008c20,
+-	0x228f9: 0x6c277820, 0x228fb: 0x6c90a420,
+-	// Block 0x8a4, offset 0x22900
+-	0x22902: 0x6c497620,
+-	0x22906: 0x6cadc820,
+-	0x22909: 0x6cafce20, 0x2290b: 0x6c735420,
+-	0x2290d: 0x6c06aa20, 0x2290e: 0x6c747c20, 0x2290f: 0x6c738420,
+-	0x22910: 0x6cd3b420,
+-	0x22915: 0x6d014a20,
+-	0x22918: 0x6cc8a820, 0x22919: 0x6c6ec220, 0x2291a: 0x6cb3be20, 0x2291b: 0x6cc9f420,
+-	0x22920: 0x6c5e7a20,
+-	0x22929: 0x6c3b1820, 0x2292a: 0x6c06e820, 0x2292b: 0x6c6bc220,
+-	0x2292c: 0x6cc94020, 0x2292e: 0x6caf3e20,
+-	0x22934: 0x6c2c2220, 0x22935: 0x6c98c820, 0x22936: 0x6c03ec20, 0x22937: 0x6c03ee20,
+-	0x22938: 0x6ce57820, 0x22939: 0x6c8cba20, 0x2293a: 0x6cd0f020, 0x2293b: 0x6d31c220,
+-	0x2293c: 0x6caf4620, 0x2293d: 0x6cf4c620, 0x2293f: 0x6d2b4220,
+-	// Block 0x8a5, offset 0x22940
+-	0x22940: 0x6c063a20,
+-	0x22947: 0x6c938020,
+-	0x22956: 0x6c4fa020, 0x22957: 0x6c30e020,
+-	0x22958: 0x6c3e0e20, 0x22959: 0x6ca5c420,
+-	0x2295d: 0x6c43de20,
+-	0x22960: 0x6cc79820, 0x22961: 0x6cfbfc20,
+-	0x22964: 0x6c096020,
+-	0x2296e: 0x6c98d220,
+-	0x22972: 0x6cc70a20, 0x22973: 0x6cc04c20,
+-	0x22977: 0x6c0ee820,
+-	0x22979: 0x6c4fa620, 0x2297a: 0x6ca4ee20, 0x2297b: 0x6d0c8620,
+-	// Block 0x8a6, offset 0x22980
+-	0x22983: 0x6cad5c20,
+-	0x22984: 0x6cdbc020, 0x22986: 0x6ceba220,
+-	0x22988: 0x6cc10a20, 0x22989: 0x6c83d620, 0x2298a: 0x6c2a7220,
+-	0x2298c: 0x6c6aca20, 0x2298d: 0x6c6acc20, 0x2298e: 0x6c4bc820, 0x2298f: 0x6c649c20,
+-	0x22990: 0x6c099e20,
+-	0x229a0: 0x6cca5620, 0x229a1: 0x6c053020, 0x229a2: 0x6c214a20,
+-	0x229a6: 0x6ca3c220, 0x229a7: 0x6c054e20,
+-	0x229aa: 0x6cc68820, 0x229ab: 0x6c636c20,
+-	0x229ac: 0x6cd9c220,
+-	0x229b0: 0x6c2a7420,
+-	0x229be: 0x6cfaac20, 0x229bf: 0x6d2d8020,
+-	// Block 0x8a7, offset 0x229c0
+-	0x229c0: 0x6c999620, 0x229c3: 0x6d3e5020,
+-	0x229c5: 0x6c623c20, 0x229c6: 0x6cb61c20,
+-	0x229cb: 0x6cc82420,
+-	0x229cc: 0x6cdd2c20, 0x229cd: 0x6cc71620, 0x229ce: 0x6cf50c20, 0x229cf: 0x6cc69620,
+-	0x229d0: 0x6cc69820,
+-	0x229da: 0x6cde7620,
+-	0x229dc: 0x6cd9d020,
+-	0x229e4: 0x6c842c20, 0x229e7: 0x6c24fc20,
+-	0x229e8: 0x6d3fb020, 0x229e9: 0x6c9ad220, 0x229ea: 0x6cf80820,
+-	0x229ec: 0x6c989e20, 0x229ed: 0x6ca86220, 0x229ef: 0x6cdbd220,
+-	0x229f1: 0x6cadea20,
+-	0x229f4: 0x6c0a2820, 0x229f5: 0x6c2c9020,
+-	0x229f8: 0x6cc1be20, 0x229f9: 0x6cbbfa20, 0x229fb: 0x6c3b4420,
+-	0x229fc: 0x6cdb1620,
+-	// Block 0x8a8, offset 0x22a00
+-	0x22a03: 0x6d05e620,
+-	0x22a07: 0x6cc72420,
+-	0x22a08: 0x6c5f3220, 0x22a0b: 0x6cc1d620,
+-	0x22a0c: 0x6c8b3820,
+-	0x22a15: 0x6ccafe20,
+-	0x22a18: 0x6c7dd620, 0x22a1a: 0x6c257620, 0x22a1b: 0x6d136c20,
+-	0x22a1c: 0x6c0e3220, 0x22a1e: 0x6c6b5c20,
+-	0x22a20: 0x6cc1e020, 0x22a21: 0x6cc1e220,
+-	0x22a25: 0x6c9b6e20, 0x22a26: 0x6cc49020,
+-	0x22a28: 0x6c0d5e20, 0x22a29: 0x6c178220,
+-	0x22a2c: 0x6c31d420,
+-	0x22a36: 0x6cc4ec20, 0x22a37: 0x6cfb0220,
+-	0x22a3a: 0x6ce25220, 0x22a3b: 0x6cc20a20,
+-	0x22a3c: 0x6ca8b420, 0x22a3f: 0x6cd51c20,
+-	// Block 0x8a9, offset 0x22a40
+-	0x22a40: 0x6c920220, 0x22a42: 0x6c7dda20,
+-	0x22a48: 0x6c9f3620, 0x22a49: 0x6c9f9e20,
+-	0x22a4d: 0x6c287e20,
+-	0x22a50: 0x6d1b6820, 0x22a53: 0x6d001020,
+-	0x22a57: 0x6c618820,
+-	0x22a5c: 0x6d19b220,
+-	0x22a66: 0x6c3b3820, 0x22a67: 0x6d383420,
+-	0x22a6b: 0x6c47c020,
+-	0x22a71: 0x6c13c420, 0x22a73: 0x6c8e3c20,
+-	0x22a76: 0x6c102c20,
+-	0x22a7a: 0x6cabae20, 0x22a7b: 0x6cd87620,
+-	0x22a7c: 0x6c29b820, 0x22a7d: 0x6d31b020,
+-	// Block 0x8aa, offset 0x22a80
+-	0x22a80: 0x6cccb620, 0x22a82: 0x6c1fbe20,
+-	0x22a84: 0x6c6fa820,
+-	0x22a8a: 0x6c787620, 0x22a8b: 0x6c1af820,
+-	0x22a91: 0x6c565c20, 0x22a92: 0x6c858220, 0x22a93: 0x6ccbc620,
+-	0x22a96: 0x6cac1820, 0x22a97: 0x6ceee220,
+-	0x22a98: 0x6cf42620,
+-	0x22a9c: 0x6d1c5420,
+-	0x22aa1: 0x6ccbc820, 0x22aa2: 0x6c2b1020,
+-	0x22aa5: 0x6c27b820,
+-	0x22ab1: 0x6ce83a20, 0x22ab2: 0x6c50ca20, 0x22ab3: 0x6cb34e20,
+-	0x22ab5: 0x6d34f620, 0x22ab6: 0x6ca98020, 0x22ab7: 0x6ca67e20,
+-	0x22abd: 0x6cc6f820, 0x22abe: 0x6c48ea20,
+-	// Block 0x8ab, offset 0x22ac0
+-	0x22ac0: 0x6d343e20, 0x22ac3: 0x6c5fe220,
+-	0x22adc: 0x6c392c20, 0x22adf: 0x6c6a8020,
+-	0x22ae0: 0x6c4d3820,
+-	0x22ae4: 0x6d2e4e20, 0x22ae6: 0x6cf86420,
+-	0x22ae9: 0x6d3e1220,
+-	0x22aec: 0x6cf76e20, 0x22aed: 0x6cb1ac20,
+-	0x22af0: 0x6c078020, 0x22af2: 0x6c657220,
+-	// Block 0x8ac, offset 0x22b00
+-	0x22b13: 0x6c665c20,
+-	0x22b16: 0x6d28ae20,
+-	0x22b1e: 0x6c07ac20, 0x22b1f: 0x6c995e20,
+-	0x22b22: 0x6d2a7620, 0x22b23: 0x6d3c3820,
+-	0x22b25: 0x6c7bbe20,
+-	0x22b28: 0x6c089e20, 0x22b2a: 0x6cac2220,
+-	0x22b3c: 0x6c996020, 0x22b3d: 0x6ce09020,
+-	// Block 0x8ad, offset 0x22b40
+-	0x22b5e: 0x6cea7a20, 0x22b5f: 0x6c95aa20,
+-	0x22b62: 0x6cdf9a20,
+-	0x22b71: 0x6c016a20,
+-	0x22b77: 0x6c4e0420,
+-	0x22b78: 0x6d3a0c20, 0x22b7a: 0x6c34e820, 0x22b7b: 0x6c34ea20,
+-	0x22b7c: 0x6c421c20,
+-	// Block 0x8ae, offset 0x22b80
+-	0x22b86: 0x6cbf8c20,
+-	0x22b88: 0x6cee1220, 0x22b8a: 0x6ca10420, 0x22b8b: 0x6d30f220,
+-	0x22b8c: 0x6cf1d620, 0x22b8d: 0x6d3c3a20, 0x22b8f: 0x6c69fe20,
+-	0x22b90: 0x6cad8e20,
+-	0x22b98: 0x6cdaa820,
+-	0x22b9d: 0x6c724020,
+-	0x22ba0: 0x6cb4ec20, 0x22ba1: 0x6c11f420, 0x22ba3: 0x6ce94a20,
+-	0x22ba4: 0x6ccbec20, 0x22ba6: 0x6ceb1620,
+-	0x22ba9: 0x6c579420, 0x22bab: 0x6d176220,
+-	// Block 0x8af, offset 0x22bc0
+-	0x22be0: 0x6c9f4820, 0x22be1: 0x6d37b420,
+-	0x22be5: 0x6cd77e20,
+-	0x22be9: 0x6d176420, 0x22bea: 0x6cee1420, 0x22beb: 0x6c024220,
+-	0x22bf6: 0x6cda7820,
+-	0x22bfe: 0x6c4b0020, 0x22bff: 0x6ceb8020,
+-	// Block 0x8b0, offset 0x22c00
+-	0x22c00: 0x6c5b5220, 0x22c03: 0x6d06dc20,
+-	0x22c04: 0x6d296c20, 0x22c06: 0x6d3f1220, 0x22c07: 0x6c0b9e20,
+-	0x22c09: 0x6c26a620, 0x22c0a: 0x6d19ca20, 0x22c0b: 0x6cc35c20,
+-	0x22c0e: 0x6c580e20, 0x22c0f: 0x6ca2e020,
+-	0x22c10: 0x6d28ba20, 0x22c12: 0x6ce32620,
+-	0x22c18: 0x6d14f820, 0x22c19: 0x6cdfaa20, 0x22c1a: 0x6ccf1820, 0x22c1b: 0x6cd78220,
+-	0x22c1d: 0x6d03e620,
+-	0x22c20: 0x6d1fce20, 0x22c23: 0x6c3b7620,
+-	// Block 0x8b1, offset 0x22c40
+-	0x22c47: 0x6c78b220,
+-	0x22c4b: 0x6c3e7c20,
+-	0x22c52: 0x6c9fb220,
+-	0x22c5a: 0x6cb09820,
+-	0x22c5c: 0x6c604220, 0x22c5d: 0x6cbc4a20, 0x22c5e: 0x6d37fc20, 0x22c5f: 0x6c422820,
+-	0x22c60: 0x6d24f820, 0x22c61: 0x6c1b3620,
+-	0x22c65: 0x6cba5a20, 0x22c67: 0x6d424220,
+-	0x22c69: 0x6d00bc20, 0x22c6a: 0x6c98ea20,
+-	0x22c6c: 0x6c556e20, 0x22c6e: 0x6cb0a420, 0x22c6f: 0x6d0a9420,
+-	0x22c71: 0x6cf9d220, 0x22c72: 0x6ce34420,
+-	0x22c75: 0x6ca34e20, 0x22c76: 0x6c1fac20,
+-	// Block 0x8b2, offset 0x22c80
+-	0x22c80: 0x6cf45020,
+-	0x22cac: 0x6c599820, 0x22cad: 0x6d096620, 0x22cae: 0x6ce26620,
+-	0x22cb0: 0x6cbc4c20, 0x22cb3: 0x6c685020,
+-	0x22cbc: 0x6c293020, 0x22cbd: 0x6c044620,
+-	// Block 0x8b3, offset 0x22cc0
+-	0x22ccd: 0x6c297620, 0x22cce: 0x6c79f820,
+-	0x22cd0: 0x6c70b220, 0x22cd1: 0x6ccc0a20, 0x22cd2: 0x6c6dc820,
+-	0x22cd5: 0x6ca06c20, 0x22cd6: 0x6caa0220,
+-	0x22cd8: 0x6cd78e20, 0x22cda: 0x6cd5f820, 0x22cdb: 0x6d3c2020,
+-	0x22cdc: 0x6c3ec220, 0x22cdf: 0x6d29de20,
+-	0x22ce0: 0x6d00cc20, 0x22ce1: 0x6c812820, 0x22ce2: 0x6ce70420,
+-	0x22ce9: 0x6d306e20,
+-	0x22cec: 0x6c11fe20, 0x22cee: 0x6d26cc20,
+-	0x22cf1: 0x6d393620,
+-	// Block 0x8b4, offset 0x22d00
+-	0x22d1a: 0x6cdfb420,
+-	0x22d1e: 0x6d0cb420, 0x22d1f: 0x6c928820,
+-	0x22d20: 0x6d0db620,
+-	0x22d26: 0x6d2ae020, 0x22d27: 0x6cd66c20,
+-	// Block 0x8b5, offset 0x22d40
+-	0x22d45: 0x6c4c3620, 0x22d46: 0x6d3a2020,
+-	0x22d48: 0x6cc7bc20, 0x22d49: 0x6cc7be20,
+-	0x22d4c: 0x6c76e620, 0x22d4d: 0x6c626220, 0x22d4e: 0x6c42da20,
+-	0x22d52: 0x6d01fa20,
+-	0x22d55: 0x6caba220, 0x22d56: 0x6c64d420,
+-	0x22d5a: 0x6d349220, 0x22d5b: 0x6d2c4820,
+-	0x22d5d: 0x6c53a820, 0x22d5f: 0x6c7b7020,
+-	0x22d61: 0x6c0f4420,
+-	0x22d64: 0x6ccb4820, 0x22d65: 0x6c01cc20, 0x22d66: 0x6c66b820,
+-	0x22d68: 0x6ce2ac20, 0x22d6b: 0x6cd93420,
+-	0x22d6d: 0x6c9c0c20, 0x22d6e: 0x6d1a9420, 0x22d6f: 0x6cdfb620,
+-	0x22d70: 0x6c4c3820, 0x22d73: 0x6cc84620,
+-	0x22d74: 0x6cf0ba20, 0x22d77: 0x6cd8de20,
+-	// Block 0x8b6, offset 0x22d80
+-	0x22da4: 0x6cb7c220, 0x22da6: 0x6d2f0a20,
+-	// Block 0x8b7, offset 0x22dc0
+-	0x22dc5: 0x6c304020, 0x22dc6: 0x6c3eee20, 0x22dc7: 0x6cd07620,
+-	0x22dc8: 0x6cdb1a20, 0x22dc9: 0x6d18a020, 0x22dca: 0x6c891820,
+-	0x22dcc: 0x6c516e20, 0x22dce: 0x6d319420,
+-	0x22dd0: 0x6d2afe20, 0x22dd2: 0x6c250c20, 0x22dd3: 0x6c250e20,
+-	0x22ddd: 0x6c3cf220, 0x22dde: 0x6c853220, 0x22ddf: 0x6c7a0220,
+-	0x22de3: 0x6d000620,
+-	0x22de4: 0x6d1fee20,
+-	// Block 0x8b8, offset 0x22e00
+-	0x22e03: 0x6c4fea20,
+-	0x22e09: 0x6c4f0620, 0x22e0a: 0x6c790c20,
+-	0x22e1d: 0x6d23ec20,
+-	0x22e23: 0x6c58e220,
+-	0x22e24: 0x6cdd3e20, 0x22e26: 0x6c7e9c20,
+-	0x22e28: 0x6c313c20, 0x22e29: 0x6c66de20, 0x22e2a: 0x6cb32020, 0x22e2b: 0x6c0b5420,
+-	0x22e30: 0x6d097420, 0x22e32: 0x6c0bc820,
+-	0x22e37: 0x6cf0e620,
+-	// Block 0x8b9, offset 0x22e40
+-	0x22e61: 0x6c28d620, 0x22e62: 0x6c6b5e20, 0x22e63: 0x6c046020,
+-	0x22e65: 0x6ca74420, 0x22e66: 0x6cfd2620, 0x22e67: 0x6ccb7620,
+-	0x22e6a: 0x6c576420, 0x22e6b: 0x6c1fa420,
+-	0x22e6e: 0x6caba620, 0x22e6f: 0x6c8b5020,
+-	0x22e70: 0x6c2ba420, 0x22e71: 0x6c114e20, 0x22e73: 0x6d2c5e20,
+-	0x22e75: 0x6c936820,
+-	0x22e79: 0x6c5e1420,
+-	0x22e7c: 0x6c86ce20, 0x22e7d: 0x6d1d1620, 0x22e7f: 0x6cf03a20,
+-	// Block 0x8ba, offset 0x22e80
+-	0x22e80: 0x6c0a8c20, 0x22e81: 0x6c4c9620, 0x22e83: 0x6cb0ce20,
+-	0x22e86: 0x6c0c3a20,
+-	0x22ea0: 0x6d0dea20,
+-	0x22ea4: 0x6d3bee20,
+-	0x22eb2: 0x6c539420,
+-	0x22eb6: 0x6c8c7820, 0x22eb7: 0x6c36ce20,
+-	0x22eb9: 0x6d1b1820, 0x22eba: 0x6c808020,
+-	0x22ebc: 0x6d123820, 0x22ebf: 0x6d08c820,
+-	// Block 0x8bb, offset 0x22ec0
+-	0x22ec0: 0x6c86fa20,
+-	0x22ee8: 0x6c808420, 0x22ee9: 0x6c8d9020, 0x22eea: 0x6cf73820, 0x22eeb: 0x6c52de20,
+-	0x22eed: 0x6c696a20, 0x22eee: 0x6d3dd220,
+-	0x22ef2: 0x6d34b620,
+-	0x22ef5: 0x6c0fb820, 0x22ef6: 0x6ce29620, 0x22ef7: 0x6c019820,
+-	0x22efa: 0x6d0a5220, 0x22efb: 0x6c82fa20,
+-	0x22efc: 0x6d29ec20, 0x22efd: 0x6c5b7c20,
+-	// Block 0x8bc, offset 0x22f00
+-	0x22f0e: 0x6cf92620, 0x22f0f: 0x6c539820,
+-	0x22f11: 0x6c397820, 0x22f12: 0x6c662420, 0x22f13: 0x6c23c820,
+-	0x22f14: 0x6d28da20, 0x22f16: 0x6c10e020,
+-	0x22f18: 0x6d1ece20, 0x22f1b: 0x6c338820,
+-	0x22f1c: 0x6cac4e20,
+-	0x22f25: 0x6cdede20, 0x22f27: 0x6cacc420,
+-	0x22f2b: 0x6c386e20,
+-	0x22f2c: 0x6cf74620,
+-	0x22f36: 0x6d124c20, 0x22f37: 0x6c957620,
+-	0x22f3a: 0x6c0b2220,
+-	0x22f3c: 0x6c6d7420, 0x22f3d: 0x6c876a20,
+-	// Block 0x8bd, offset 0x22f40
+-	0x22f4a: 0x6d0f0a20, 0x22f4b: 0x6c315020,
+-	0x22f4e: 0x6c981620,
+-	0x22f50: 0x6c45ca20, 0x22f51: 0x6cc51420, 0x22f52: 0x6c121220,
+-	0x22f63: 0x6c9ae420,
+-	0x22f71: 0x6c47fc20, 0x22f72: 0x6cd69e20,
+-	0x22f78: 0x6d0d2020, 0x22f79: 0x6c0adc20,
+-	// Block 0x8be, offset 0x22f80
+-	0x22f80: 0x6c0c6a20, 0x22f81: 0x6c1a6220, 0x22f82: 0x6c7ce620,
+-	0x22f84: 0x6c5d8820,
+-	0x22f8d: 0x6c1be620, 0x22f8f: 0x6cf2d020,
+-	0x22f91: 0x6c23e820, 0x22f92: 0x6d357a20,
+-	0x22f99: 0x6cd70820,
+-	0x22f9c: 0x6c48a220, 0x22f9d: 0x6cb40020, 0x22f9e: 0x6d068620, 0x22f9f: 0x6cd7d020,
+-	0x22fa1: 0x6cf42e20,
+-	0x22fae: 0x6c3d4020,
+-	0x22fb0: 0x6cd31e20, 0x22fb3: 0x6c5b9220,
+-	0x22fb4: 0x6c597c20, 0x22fb5: 0x6cabb620,
+-	0x22fbc: 0x6d3a5e20, 0x22fbe: 0x6d14a220,
+-	// Block 0x8bf, offset 0x22fc0
+-	0x22fc3: 0x6c85a820,
+-	0x22fc4: 0x6ccd3420,
+-	0x22fdc: 0x6c9f3820, 0x22fde: 0x6c437c20,
+-	0x22fe0: 0x6c54b020,
+-	0x22fef: 0x6c371220,
+-	0x22ff0: 0x6c380e20, 0x22ff3: 0x6d06aa20,
+-	0x22ff4: 0x6d14ca20,
+-	0x22ffe: 0x6d1d3620,
+-	// Block 0x8c0, offset 0x23000
+-	0x23014: 0x6c1b1820,
+-	0x23019: 0x6d14cc20,
+-	0x23025: 0x6c2b6a20, 0x23026: 0x6c5b5020, 0x23027: 0x6c510c20,
+-	0x23029: 0x6d2c7a20,
+-	0x23036: 0x6d27a420, 0x23037: 0x6cfa9c20,
+-	// Block 0x8c1, offset 0x23040
+-	0x2304c: 0x6cfb4c20, 0x2304d: 0x6c81d220, 0x2304e: 0x6cced420, 0x2304f: 0x6cd36820,
+-	0x23050: 0x6d3d5220,
+-	0x23064: 0x6c0ca820, 0x23065: 0x6c6fc020, 0x23066: 0x6cf29220, 0x23067: 0x6c68f820,
+-	0x23068: 0x6c3e7e20, 0x2306a: 0x6cfd7620, 0x2306b: 0x6c768a20,
+-	// Block 0x8c2, offset 0x23080
+-	0x230b2: 0x6ca4fe20,
+-	0x230b4: 0x6c5ddc20, 0x230b5: 0x6c605620, 0x230b6: 0x6c7e7e20,
+-	0x230bb: 0x6c3d1220,
+-	0x230bc: 0x6ccd4c20, 0x230bd: 0x6c8a9c20, 0x230be: 0x6c9ee020, 0x230bf: 0x6c182620,
+-	// Block 0x8c3, offset 0x230c0
+-	0x230c2: 0x6ca05e20,
+-	0x230cf: 0x6c909820,
+-	0x230e8: 0x6c34f620, 0x230eb: 0x6ca50020,
+-	0x230ed: 0x6c5ee820,
+-	0x230f0: 0x6d3b0820,
+-	// Block 0x8c4, offset 0x23100
+-	0x23102: 0x6cdad220, 0x23103: 0x6c34f820,
+-	0x23107: 0x6c6f2820,
+-	0x2310a: 0x6d291e20, 0x2310b: 0x6c5b5c20,
+-	0x2310c: 0x6d1cfe20, 0x2310d: 0x6c557a20, 0x2310e: 0x6c8c5820, 0x2310f: 0x6cf25820,
+-	0x23110: 0x6c4ee820,
+-	0x23114: 0x6ca40620,
+-	0x23137: 0x6cf8b020,
+-	0x23139: 0x6c422c20,
+-	0x2313e: 0x6c51d420, 0x2313f: 0x6c5f0820,
+-	// Block 0x8c5, offset 0x23140
+-	0x23140: 0x6cfdf020, 0x23141: 0x6ccc0c20,
+-	0x23150: 0x6cea0c20, 0x23152: 0x6d2f6c20, 0x23153: 0x6cd60420,
+-	0x23155: 0x6d1fe820, 0x23156: 0x6c64d820,
+-	0x2315c: 0x6d2a8c20,
+-	0x23164: 0x6d2ed820,
+-	0x2317d: 0x6cc92c20,
+-	// Block 0x8c6, offset 0x23180
+-	0x23184: 0x6d0c2420,
+-	0x2318b: 0x6c255a20,
+-	0x23197: 0x6c608a20,
+-	0x23198: 0x6cce1a20,
+-	0x231a3: 0x6c36a820,
+-	0x231a4: 0x6c817420, 0x231a5: 0x6ce07820, 0x231a7: 0x6d3b2820,
+-	0x231ad: 0x6c8c3620, 0x231af: 0x6d2b9220,
+-	0x231b1: 0x6c732a20, 0x231b2: 0x6c550220,
+-	// Block 0x8c7, offset 0x231c0
+-	0x231d7: 0x6cd07820,
+-	0x231d8: 0x6c5dfa20,
+-	0x231dc: 0x6c7d2020,
+-	0x231f1: 0x6c1f7620, 0x231f2: 0x6d395020,
+-	0x231f6: 0x6c023020,
+-	0x231f8: 0x6d3db220,
+-	0x231fd: 0x6d03a420, 0x231ff: 0x6c9ef420,
+-	// Block 0x8c8, offset 0x23200
+-	0x23200: 0x6c550c20,
+-	0x23214: 0x6ce01a20,
+-	0x23219: 0x6c0a7220,
+-	0x23223: 0x6c2f8420,
+-	0x23229: 0x6c769820, 0x2322b: 0x6c0c3c20,
+-	0x23230: 0x6c5e1620, 0x23231: 0x6c8b5220, 0x23232: 0x6c24b820,
+-	// Block 0x8c9, offset 0x23240
+-	0x23243: 0x6cfd2820,
+-	0x23244: 0x6cc55620,
+-	0x23253: 0x6d270220,
+-	0x23255: 0x6d09be20, 0x23257: 0x6c8a8020,
+-	0x23263: 0x6ccc2a20,
+-	0x23266: 0x6cd3fc20,
+-	0x2326a: 0x6d025c20,
+-	0x23273: 0x6cff4a20,
+-	0x23277: 0x6d129620,
+-	0x23278: 0x6c805020, 0x23279: 0x6d192e20,
+-	0x2327f: 0x6c88da20,
+-	// Block 0x8ca, offset 0x23280
+-	0x23294: 0x6c0fba20, 0x23295: 0x6c126e20,
+-	0x2329d: 0x6d124220,
+-	0x232a6: 0x6c893620,
+-	0x232bb: 0x6cdef020,
+-	// Block 0x8cb, offset 0x232c0
+-	0x232d1: 0x6c62ec20,
+-	0x232d4: 0x6cf75220, 0x232d5: 0x6d377020,
+-	0x232da: 0x6cf75620,
+-	0x232dd: 0x6d273220,
+-	0x232e4: 0x6cfc6c20, 0x232e6: 0x6d3df820,
+-	0x232ef: 0x6d2ef820,
+-	0x232f5: 0x6d410620, 0x232f7: 0x6ca2ce20,
+-	0x232fe: 0x6c2a0420, 0x232ff: 0x6c8ad620,
+-	// Block 0x8cc, offset 0x23300
+-	0x23300: 0x6ca2d220,
+-	0x23309: 0x6cad5420, 0x2330b: 0x6c721620,
+-	0x23316: 0x6c95b220,
+-	0x23319: 0x6cd64820, 0x2331a: 0x6cce5420,
+-	0x2331d: 0x6c95b420, 0x2331f: 0x6c3b3a20,
+-	0x23323: 0x6c065820,
+-	0x23328: 0x6c865820, 0x2332b: 0x6d04a220,
+-	0x23336: 0x6c290820,
+-	// Block 0x8cd, offset 0x23340
+-	0x23340: 0x6c1a8c20,
+-	0x23344: 0x6d2f1420, 0x23347: 0x6cda3a20,
+-	0x2334a: 0x6cd03e20,
+-	0x23352: 0x6c447220,
+-	0x23358: 0x6d209020, 0x2335a: 0x6c5ad420, 0x2335b: 0x6c183e20,
+-	0x2335d: 0x6c698420, 0x2335e: 0x6d3ac420, 0x2335f: 0x6cd4b220,
+-	0x23362: 0x6cff8420,
+-	0x23366: 0x6ca91420,
+-	0x2336d: 0x6c674420, 0x2336f: 0x6c674820,
+-	0x23377: 0x6c2e0e20,
+-	0x2337d: 0x6cbb0c20, 0x2337e: 0x6cc04e20,
+-	// Block 0x8ce, offset 0x23380
+-	0x23380: 0x6c3c4020,
+-	0x23386: 0x6d2e6620, 0x23387: 0x6c77fa20,
+-	0x23392: 0x6c2ece20, 0x23393: 0x6d2aec20,
+-	0x23396: 0x6c49f820, 0x23397: 0x6ccb5c20,
+-	0x23398: 0x6c3bea20, 0x2339b: 0x6c67bc20,
+-	0x2339d: 0x6d0cd820, 0x2339e: 0x6d370820,
+-	0x233a2: 0x6c872220,
+-	0x233a6: 0x6c8ddc20,
+-	0x233aa: 0x6d146420,
+-	0x233ac: 0x6cc23e20, 0x233ad: 0x6cac5220, 0x233ae: 0x6c463a20,
+-	0x233b0: 0x6c640220, 0x233b1: 0x6c50da20, 0x233b3: 0x6caf0c20,
+-	0x233b5: 0x6c721820, 0x233b7: 0x6c180620,
+-	0x233ba: 0x6c8af220, 0x233bb: 0x6cd35220,
+-	0x233bc: 0x6cb37a20, 0x233bd: 0x6cfe2820, 0x233bf: 0x6cb08e20,
+-	// Block 0x8cf, offset 0x233c0
+-	0x233c0: 0x6c95ae20, 0x233c1: 0x6c243420, 0x233c3: 0x6d225020,
+-	0x233c7: 0x6c79a820,
+-	0x233c8: 0x6d01b020,
+-	0x233cd: 0x6ced1e20, 0x233ce: 0x6d0d8e20, 0x233cf: 0x6cadd820,
+-	0x233d3: 0x6c1a0620,
+-	0x233d8: 0x6ce34620, 0x233d9: 0x6c182820, 0x233da: 0x6c09ce20, 0x233db: 0x6c890820,
+-	0x233dc: 0x6c641e20, 0x233de: 0x6ce68220,
+-	0x233e2: 0x6ce2f620,
+-	0x233e8: 0x6c2edc20, 0x233ea: 0x6cd60620, 0x233eb: 0x6c842e20,
+-	0x233ec: 0x6c936020, 0x233ed: 0x6cf97420, 0x233ef: 0x6c24e420,
+-	0x233f3: 0x6c0e9220,
+-	0x233f4: 0x6ce9ba20, 0x233f5: 0x6cb45020, 0x233f7: 0x6c8c6220,
+-	0x233f8: 0x6c3bec20, 0x233fa: 0x6c0f7620, 0x233fb: 0x6c163620,
+-	0x233fe: 0x6c290a20, 0x233ff: 0x6cdf5820,
+-	// Block 0x8d0, offset 0x23400
+-	0x23400: 0x6c2a3c20, 0x23403: 0x6c872420,
+-	0x23405: 0x6d0b1220, 0x23406: 0x6d0b1820, 0x23407: 0x6d2d6620,
+-	0x2340a: 0x6d14e220,
+-	0x2340c: 0x6cb4fa20,
+-	0x23414: 0x6c564420, 0x23416: 0x6ce62a20,
+-	0x23418: 0x6c79cc20, 0x2341b: 0x6c213220,
+-	0x2341c: 0x6d1f0020, 0x2341d: 0x6c3bd020, 0x2341f: 0x6caab220,
+-	0x23420: 0x6ce53020, 0x23421: 0x6c6cde20, 0x23422: 0x6cafbc20, 0x23423: 0x6c18a420,
+-	0x23424: 0x6cb08820, 0x23426: 0x6c6bc420, 0x23427: 0x6c4ac820,
+-	0x23432: 0x6d3c3220,
+-	0x23435: 0x6c552420, 0x23436: 0x6c1e2420, 0x23437: 0x6cd5a020,
+-	0x23438: 0x6ce1b420, 0x23439: 0x6cafc620, 0x2343a: 0x6cc70020, 0x2343b: 0x6cc70220,
+-	0x2343d: 0x6c544e20, 0x2343e: 0x6cae5a20,
+-	// Block 0x8d1, offset 0x23440
+-	0x23445: 0x6c043e20, 0x23447: 0x6cf99a20,
+-	0x2344b: 0x6cbdcc20,
+-	0x2344c: 0x6ca63220, 0x2344e: 0x6ce1b620, 0x2344f: 0x6cc26a20,
+-	0x23452: 0x6d008e20,
+-	0x23454: 0x6d2fa820, 0x23455: 0x6c570e20, 0x23456: 0x6d02c820,
+-	0x23458: 0x6cd42e20, 0x2345b: 0x6ce8a620,
+-	0x2345d: 0x6c895020, 0x2345e: 0x6c097c20, 0x2345f: 0x6c1e5a20,
+-	0x23461: 0x6d037020, 0x23463: 0x6d02cc20,
+-	0x23464: 0x6c3d6820,
+-	0x23469: 0x6c6bde20,
+-	0x2346d: 0x6c3f5e20,
+-	0x23470: 0x6ce27a20, 0x23471: 0x6ccf4c20,
+-	0x23474: 0x6c174620, 0x23475: 0x6c20b820,
+-	0x2347c: 0x6cc47a20, 0x2347d: 0x6c545620, 0x2347e: 0x6c07ec20,
+-	// Block 0x8d2, offset 0x23480
+-	0x23480: 0x6c113020,
+-	0x23485: 0x6ca21420,
+-	0x23489: 0x6d059e20, 0x2348a: 0x6c2eaa20,
+-	0x2348d: 0x6c15c220, 0x2348e: 0x6d215c20, 0x2348f: 0x6d383620,
+-	0x23493: 0x6c83e620,
+-	0x23494: 0x6cd43420,
+-	0x2349a: 0x6c31a420,
+-	0x2349c: 0x6c98bc20, 0x2349d: 0x6c59d420, 0x2349f: 0x6ce22c20,
+-	0x234a1: 0x6c326620, 0x234a2: 0x6ce34820, 0x234a3: 0x6cd10820,
+-	0x234a4: 0x6c9a0e20,
+-	0x234a8: 0x6d316820, 0x234a9: 0x6cbd9020, 0x234aa: 0x6cb0ae20, 0x234ab: 0x6ce11620,
+-	0x234ac: 0x6c123820, 0x234ad: 0x6d112420, 0x234af: 0x6d054620,
+-	0x234b0: 0x6c053620, 0x234b1: 0x6c47b220,
+-	0x234b5: 0x6c10aa20,
+-	0x234bc: 0x6c46c620, 0x234bd: 0x6c0f2e20,
+-	// Block 0x8d3, offset 0x234c0
+-	0x234c1: 0x6cf21020,
+-	0x234c4: 0x6c624420,
+-	0x234ca: 0x6c7e4c20,
+-	0x234cd: 0x6c24e620, 0x234ce: 0x6c9fc820, 0x234cf: 0x6c242820,
+-	0x234d0: 0x6cab4e20, 0x234d1: 0x6d1da620,
+-	0x234d6: 0x6c98fe20, 0x234d7: 0x6c78c820,
+-	0x234d8: 0x6c981e20, 0x234d9: 0x6c2f8020, 0x234da: 0x6c582e20, 0x234db: 0x6c34ac20,
+-	0x234dc: 0x6c677420, 0x234dd: 0x6cdb0220,
+-	0x234e2: 0x6c135c20, 0x234e3: 0x6cde9e20,
+-	0x234e5: 0x6c59f820, 0x234e6: 0x6c74be20, 0x234e7: 0x6d0a4020,
+-	0x234ea: 0x6d04a620,
+-	0x234ec: 0x6c9d8820, 0x234ed: 0x6cc45620, 0x234ee: 0x6c817620,
+-	0x234f1: 0x6d370a20, 0x234f2: 0x6cf02820,
+-	0x234f7: 0x6ccb6e20,
+-	0x234fb: 0x6d29ea20,
+-	// Block 0x8d4, offset 0x23500
+-	0x23501: 0x6c019620, 0x23502: 0x6cf10c20,
+-	0x23504: 0x6c581e20, 0x23507: 0x6d2e9e20,
+-	0x23509: 0x6d1c2c20, 0x2350a: 0x6c43bc20, 0x2350b: 0x6c5c9220,
+-	0x2350d: 0x6cc33420,
+-	0x23513: 0x6c8b7c20,
+-	0x23514: 0x6c719a20, 0x23515: 0x6c03de20, 0x23516: 0x6c82a620,
+-	0x23518: 0x6c97ac20, 0x23519: 0x6c8dde20,
+-	0x2351c: 0x6c856a20, 0x2351d: 0x6c611420,
+-	0x23521: 0x6c5b1620, 0x23522: 0x6d031820, 0x23523: 0x6cd30020,
+-	0x23524: 0x6d300e20, 0x23527: 0x6c0e4820,
+-	0x2352b: 0x6c137a20,
+-	0x2352f: 0x6c137e20,
+-	0x23530: 0x6c6d8c20, 0x23531: 0x6c031c20, 0x23532: 0x6c06da20,
+-	0x23535: 0x6d0e3c20, 0x23537: 0x6c565e20,
+-	0x23539: 0x6d20ba20, 0x2353b: 0x6c091e20,
+-	0x2353c: 0x6c1ff220, 0x2353e: 0x6c612220,
+-	// Block 0x8d5, offset 0x23540
+-	0x23542: 0x6ca26c20,
+-	0x23544: 0x6c98c420, 0x23545: 0x6d379420, 0x23547: 0x6d12c620,
+-	0x23548: 0x6c30a020, 0x23549: 0x6d12a420,
+-	0x2354d: 0x6cc63c20, 0x2354e: 0x6d19a620,
+-	0x23550: 0x6c501e20, 0x23552: 0x6ca31220, 0x23553: 0x6ce61020,
+-	0x23554: 0x6c3fb620, 0x23555: 0x6ca22c20, 0x23556: 0x6d291020,
+-	0x23558: 0x6c552820, 0x2355a: 0x6c185c20, 0x2355b: 0x6ceaf420,
+-	0x2355e: 0x6c1f1220, 0x2355f: 0x6c3df820,
+-	0x23567: 0x6c063420,
+-	0x2356c: 0x6c2bde20, 0x2356d: 0x6c111c20, 0x2356e: 0x6c921220, 0x2356f: 0x6cb35020,
+-	0x23570: 0x6c268620, 0x23571: 0x6d12da20, 0x23573: 0x6d15d220,
+-	0x23577: 0x6cfdb620,
+-	0x23578: 0x6c086e20, 0x23579: 0x6d398c20, 0x2357b: 0x6d14a620,
+-	0x2357d: 0x6c93d220, 0x2357f: 0x6c7b9420,
+-	// Block 0x8d6, offset 0x23580
+-	0x23582: 0x6d35a420,
+-	0x23587: 0x6cec0820,
+-	0x23588: 0x6c2b1c20, 0x23589: 0x6cd5b020, 0x2358a: 0x6c8ad820, 0x2358b: 0x6d2a4220,
+-	0x2358c: 0x6d35a620, 0x2358d: 0x6ca49e20,
+-	0x23597: 0x6c147220,
+-	0x2359a: 0x6cfea620, 0x2359b: 0x6d2a0220,
+-	0x2359e: 0x6d22f420, 0x2359f: 0x6c310620,
+-	0x235a0: 0x6c143e20, 0x235a1: 0x6d009020, 0x235a2: 0x6d0fa220,
+-	0x235a4: 0x6cfc0220, 0x235a5: 0x6c05f220,
+-	0x235ae: 0x6d2cec20,
+-	0x235b0: 0x6cc03420, 0x235b2: 0x6c553420, 0x235b3: 0x6d293220,
+-	0x235b4: 0x6c741620, 0x235b6: 0x6c4d9a20,
+-	0x235bf: 0x6c01ae20,
+-	// Block 0x8d7, offset 0x235c0
+-	0x235c0: 0x6d2a7820, 0x235c3: 0x6ccc4c20,
+-	0x235c5: 0x6cfcb220, 0x235c6: 0x6c1b9e20, 0x235c7: 0x6d0d6a20,
+-	0x235c9: 0x6c01ba20,
+-	0x235cd: 0x6d305220, 0x235ce: 0x6c742c20,
+-	0x235d1: 0x6c85ea20, 0x235d3: 0x6c822020,
+-	0x235d6: 0x6c112c20,
+-	0x235d8: 0x6c924220, 0x235da: 0x6c634c20,
+-	0x235dd: 0x6cfa3820, 0x235de: 0x6cfff020, 0x235df: 0x6d0c0c20,
+-	0x235e0: 0x6d05a020, 0x235e2: 0x6c33f020, 0x235e3: 0x6d1c7620,
+-	0x235e4: 0x6c5ab820, 0x235e5: 0x6ce32820, 0x235e6: 0x6caa0020, 0x235e7: 0x6cf7e820,
+-	0x235ea: 0x6ce8b220,
+-	0x235f7: 0x6cec5620,
+-	0x235f8: 0x6c186620,
+-	0x235fc: 0x6c52aa20, 0x235fe: 0x6ce32a20, 0x235ff: 0x6d07a020,
+-	// Block 0x8d8, offset 0x23600
+-	0x23600: 0x6d28bc20,
+-	0x23607: 0x6c43f020,
+-	0x2360b: 0x6c908c20,
+-	0x2360c: 0x6c147c20, 0x2360d: 0x6cac6020, 0x2360e: 0x6c605820,
+-	0x23610: 0x6cde5e20, 0x23613: 0x6cf64e20,
+-	0x23616: 0x6cfeda20,
+-	0x23618: 0x6ccab620, 0x23619: 0x6c637020, 0x2361a: 0x6cdad420, 0x2361b: 0x6c599a20,
+-	0x2361d: 0x6c25bc20, 0x2361f: 0x6cde6020,
+-	0x23620: 0x6cd65420,
+-	0x2362a: 0x6c3e9a20, 0x2362b: 0x6c863620,
+-	0x2362d: 0x6ccf5a20, 0x2362f: 0x6ce10620,
+-	0x23636: 0x6c2cd020,
+-	0x2363a: 0x6c09fa20,
+-	0x2363c: 0x6c46c820, 0x2363d: 0x6c244620, 0x2363f: 0x6cb90820,
+-	// Block 0x8d9, offset 0x23640
+-	0x23642: 0x6c824620, 0x23643: 0x6cdaea20,
+-	0x23646: 0x6d402420, 0x23647: 0x6c4faa20,
+-	0x2364f: 0x6c1c4420,
+-	0x23650: 0x6c128020, 0x23653: 0x6cf30420,
+-	0x23654: 0x6cfef220, 0x23655: 0x6c8b2020, 0x23656: 0x6d0c1e20,
+-	0x2365d: 0x6c09fc20, 0x2365f: 0x6c594220,
+-	0x23661: 0x6cf67820, 0x23662: 0x6c1ac820, 0x23663: 0x6d05d620,
+-	0x23664: 0x6ca4bc20, 0x23665: 0x6d0cc020, 0x23667: 0x6d01fc20,
+-	0x23668: 0x6d2c4a20, 0x2366a: 0x6cdc5e20,
+-	0x2366c: 0x6cf8ca20, 0x2366d: 0x6c080620, 0x2366e: 0x6cc48420, 0x2366f: 0x6cd79820,
+-	0x23670: 0x6c049020, 0x23671: 0x6c4b6a20, 0x23672: 0x6c763c20, 0x23673: 0x6c188020,
+-	0x23676: 0x6d072820,
+-	0x2367e: 0x6c368620, 0x2367f: 0x6c865a20,
+-	// Block 0x8da, offset 0x23680
+-	0x23680: 0x6cf69e20, 0x23681: 0x6c594c20, 0x23682: 0x6cdb0420,
+-	0x23684: 0x6c16f620,
+-	0x2368a: 0x6c92a820, 0x2368b: 0x6d0cc220,
+-	0x2368e: 0x6c290620, 0x2368f: 0x6c284620,
+-	0x23690: 0x6d0f6a20, 0x23692: 0x6d2d3620, 0x23693: 0x6c729020,
+-	0x23695: 0x6c345e20, 0x23696: 0x6ccabe20, 0x23697: 0x6c7f2a20,
+-	0x23698: 0x6cdb1c20,
+-	0x2369f: 0x6d2b0020,
+-	0x236a3: 0x6c0a5020,
+-	0x236a6: 0x6d1b8c20,
+-	0x236a8: 0x6c4fb420, 0x236aa: 0x6c8b3a20,
+-	0x236ad: 0x6c4ff620, 0x236ae: 0x6d0fdc20,
+-	0x236b4: 0x6cd7a420, 0x236b5: 0x6c00f020, 0x236b6: 0x6cbf7420,
+-	0x236b9: 0x6c82ec20, 0x236ba: 0x6d011220,
+-	0x236bc: 0x6cd3f220,
+-	// Block 0x8db, offset 0x236c0
+-	0x236c3: 0x6c91ec20,
+-	0x236c5: 0x6cc41220, 0x236c6: 0x6c888020,
+-	0x236cc: 0x6d001a20, 0x236ce: 0x6d1c2020,
+-	0x236d1: 0x6d012620,
+-	0x236d8: 0x6c8d9e20, 0x236d9: 0x6d1ed620,
+-	0x236de: 0x6c294020, 0x236df: 0x6c806020,
+-	0x236e0: 0x6cff5e20,
+-	0x236e8: 0x6d182a20,
+-	0x236ec: 0x6cf34c20, 0x236ee: 0x6d168e20, 0x236ef: 0x6ceaa420,
+-	0x236f0: 0x6c102e20, 0x236f2: 0x6d032020,
+-	0x236f5: 0x6cd7c420, 0x236f6: 0x6c6c2a20,
+-	0x236f8: 0x6c031e20, 0x236f9: 0x6c383020, 0x236fb: 0x6ca0d420,
+-	0x236fc: 0x6cc91220,
+-	// Block 0x8dc, offset 0x23700
+-	0x2370a: 0x6c26ea20, 0x2370b: 0x6c619820,
+-	0x23710: 0x6cda8820, 0x23711: 0x6cbf0620, 0x23712: 0x6c033020,
+-	0x23726: 0x6ce48c20, 0x23727: 0x6d1f0a20,
+-	0x23729: 0x6ceb0020, 0x2372b: 0x6cec6c20,
+-	0x2372c: 0x6d202e20, 0x2372e: 0x6c2fe820,
+-	0x23731: 0x6cf7d820, 0x23732: 0x6c799820,
+-	0x23736: 0x6cbf0c20, 0x23737: 0x6c32f820,
+-	0x23738: 0x6c34e420, 0x2373a: 0x6d173620,
+-	// Block 0x8dd, offset 0x23740
+-	0x23752: 0x6cf5c820, 0x23753: 0x6cbd2420,
+-	0x23754: 0x6cda9220, 0x23757: 0x6c8e5220,
+-	0x23759: 0x6cecd820,
+-	0x2376d: 0x6c17da20, 0x2376e: 0x6d399a20,
+-	0x23770: 0x6c997220,
+-	0x23777: 0x6cc2de20,
+-	0x2377d: 0x6d208c20, 0x2377f: 0x6d17ac20,
+-	// Block 0x8de, offset 0x23780
+-	0x23780: 0x6c9c5020, 0x23783: 0x6c7f0c20,
+-	0x23784: 0x6d362e20,
+-	0x237a4: 0x6ca5e620, 0x237a6: 0x6c048220,
+-	0x237aa: 0x6c300420,
+-	0x237ae: 0x6d363020,
+-	// Block 0x8df, offset 0x237c0
+-	0x237d5: 0x6d17ec20,
+-	0x237d8: 0x6c8d1e20, 0x237d9: 0x6d216020, 0x237da: 0x6c231e20, 0x237db: 0x6c2c6a20,
+-	0x237dc: 0x6d365c20,
+-	0x237e0: 0x6cc86820, 0x237e3: 0x6c669a20,
+-	0x237e9: 0x6ced8c20, 0x237eb: 0x6c6d2c20,
+-	0x237ed: 0x6cad0820,
+-	// Block 0x8e0, offset 0x23800
+-	0x2380d: 0x6c928a20, 0x2380e: 0x6cc1a620,
+-	0x23810: 0x6cf80020, 0x23811: 0x6c26b420,
+-	0x23816: 0x6c56c220, 0x23817: 0x6c95bc20,
+-	0x23819: 0x6c822820,
+-	0x23836: 0x6c45f820,
+-	0x2383b: 0x6c8e2620,
+-	// Block 0x8e1, offset 0x23840
+-	0x23842: 0x6c817820,
+-	0x23844: 0x6d3be420,
+-	0x23868: 0x6d2a5220, 0x23869: 0x6c506a20, 0x2386a: 0x6cfe5420,
+-	0x2386d: 0x6c507020, 0x2386e: 0x6c86a220,
+-	0x23871: 0x6c2d8820, 0x23872: 0x6c444020,
+-	0x2387d: 0x6c58a820,
+-	// Block 0x8e2, offset 0x23880
+-	0x23884: 0x6c36b620, 0x23886: 0x6cf9fe20,
+-	0x2388b: 0x6c651820,
+-	0x2388c: 0x6cb67420, 0x2388d: 0x6cfa0820, 0x2388e: 0x6d1ffa20,
+-	0x238a1: 0x6d330420,
+-	0x238aa: 0x6d3bf220,
+-	0x238ae: 0x6c163a20,
+-	// Block 0x8e3, offset 0x238c0
+-	0x238c9: 0x6d027a20,
+-	0x238d5: 0x6ca4d620,
+-	0x238dd: 0x6c62ee20, 0x238de: 0x6ce4d620,
+-	0x238e3: 0x6d0e3220,
+-	0x238e7: 0x6c500c20,
+-	0x238e8: 0x6d030820, 0x238e9: 0x6c8de020, 0x238eb: 0x6c047620,
+-	0x238ec: 0x6c081220,
+-	0x238f1: 0x6c463e20, 0x238f2: 0x6c8cc820,
+-	0x238f5: 0x6c7df420, 0x238f6: 0x6cb85e20, 0x238f7: 0x6c699e20,
+-	0x238f9: 0x6c371420, 0x238fa: 0x6d10fa20, 0x238fb: 0x6c316e20,
+-	// Block 0x8e4, offset 0x23900
+-	0x23901: 0x6c5d9220, 0x23902: 0x6c322420, 0x23903: 0x6cadbe20,
+-	0x2390c: 0x6d259820, 0x2390f: 0x6c90b820,
+-	0x23910: 0x6d03f820, 0x23913: 0x6c883a20,
+-	0x23914: 0x6d113820, 0x23915: 0x6cf6a020, 0x23916: 0x6d114420,
+-	0x23918: 0x6cf70020, 0x2391b: 0x6c918a20,
+-	0x2391d: 0x6d0f0020,
+-	0x23920: 0x6cc33820,
+-	0x23925: 0x6cc50020, 0x23926: 0x6cec2020, 0x23927: 0x6d40a420,
+-	0x23928: 0x6c392e20, 0x23929: 0x6d16c620, 0x2392a: 0x6c323c20, 0x2392b: 0x6cdc2620,
+-	0x2392d: 0x6caf4820, 0x2392f: 0x6c4de820,
+-	0x23931: 0x6d069820, 0x23933: 0x6c45e620,
+-	0x23935: 0x6c2c2e20, 0x23937: 0x6ca32620,
+-	0x2393e: 0x6c34ec20, 0x2393f: 0x6cebda20,
+-	// Block 0x8e5, offset 0x23940
+-	0x23942: 0x6ca81820,
+-	0x23948: 0x6c2e1a20, 0x23949: 0x6c598e20,
+-	0x2394c: 0x6ce32c20, 0x2394d: 0x6c395420,
+-	0x23951: 0x6cf3ca20, 0x23952: 0x6c01fe20,
+-	0x23954: 0x6cb2a820,
+-	0x23959: 0x6c4e1420, 0x2395b: 0x6c428820,
+-	0x2395c: 0x6c83e820, 0x2395e: 0x6c339c20, 0x2395f: 0x6c400e20,
+-	0x23960: 0x6ca35020, 0x23962: 0x6c132220,
+-	0x23967: 0x6c6a2820,
+-	0x23969: 0x6cbed020, 0x2396b: 0x6d1bd020,
+-	0x2396c: 0x6cfdd220,
+-	0x23971: 0x6c557c20,
+-	0x23974: 0x6cdaec20,
+-	0x2397b: 0x6c43a420,
+-	0x2397c: 0x6c368820, 0x2397d: 0x6d072a20,
+-	// Block 0x8e6, offset 0x23980
+-	0x23986: 0x6cf6cc20,
+-	0x2398a: 0x6c774c20, 0x2398b: 0x6c4c8a20,
+-	0x2398c: 0x6c6a3620, 0x2398d: 0x6c200c20, 0x2398e: 0x6c826220, 0x2398f: 0x6c527620,
+-	0x23990: 0x6d41f420,
+-	0x23995: 0x6cb1e620,
+-	0x23998: 0x6c2ab420, 0x23999: 0x6cf70220, 0x2399a: 0x6c826820,
+-	0x2399c: 0x6ccdc620,
+-	0x239a7: 0x6c918c20,
+-	0x239a9: 0x6c338a20, 0x239aa: 0x6c760420,
+-	0x239ad: 0x6c164820, 0x239af: 0x6d012c20,
+-	0x239b0: 0x6cec0220, 0x239b1: 0x6d30c420, 0x239b3: 0x6d3b9e20,
+-	0x239b7: 0x6c8f6020,
+-	0x239b8: 0x6c82aa20,
+-	0x239bc: 0x6c273620, 0x239bd: 0x6c417820,
+-	// Block 0x8e7, offset 0x239c0
+-	0x239c4: 0x6cd34020, 0x239c7: 0x6d0da420,
+-	0x239cc: 0x6c41b420,
+-	0x239d0: 0x6d0d0020,
+-	0x239d6: 0x6cdbac20,
+-	0x239da: 0x6d37a620,
+-	0x239dc: 0x6cd34220,
+-	0x239e1: 0x6cd15c20,
+-	0x239e5: 0x6c15ae20,
+-	0x239f7: 0x6c5a0820,
+-	0x239f8: 0x6d1b8e20, 0x239fb: 0x6c9bee20,
+-	// Block 0x8e8, offset 0x23a00
+-	0x23a02: 0x6cc4f220,
+-	0x23a05: 0x6cfdae20,
+-	0x23a08: 0x6c071420,
+-	0x23a0c: 0x6c200820,
+-	0x23a11: 0x6cb47620,
+-	0x23a19: 0x6c77d220, 0x23a1a: 0x6c7e3820,
+-	0x23a1d: 0x6cc35020, 0x23a1f: 0x6c4f9220,
+-	0x23a20: 0x6c1bf220, 0x23a21: 0x6c983820,
+-	0x23a26: 0x6d2cb020,
+-	0x23a2a: 0x6c3bd220,
+-	0x23a2c: 0x6c17b420,
+-	0x23a33: 0x6c6e1820,
+-	// Block 0x8e9, offset 0x23a40
+-	0x23a43: 0x6c8ada20,
+-	0x23a45: 0x6ca31c20, 0x23a46: 0x6ca31e20, 0x23a47: 0x6ce72a20,
+-	0x23a4b: 0x6cc46620,
+-	0x23a4c: 0x6d411620, 0x23a4d: 0x6caf5420, 0x23a4e: 0x6d1fba20,
+-	0x23a50: 0x6cd4be20,
+-	0x23a5b: 0x6c8af420,
+-	0x23a5c: 0x6cd43020, 0x23a5d: 0x6ce97e20, 0x23a5f: 0x6c430220,
+-	0x23a60: 0x6ccea220, 0x23a61: 0x6ceb0420, 0x23a63: 0x6ca3f220,
+-	0x23a67: 0x6ceb7a20,
+-	0x23a68: 0x6c458220, 0x23a69: 0x6c2e1c20,
+-	0x23a74: 0x6c9bd020, 0x23a75: 0x6c052820, 0x23a77: 0x6d00a420,
+-	0x23a78: 0x6cd8b420, 0x23a79: 0x6ce6c820, 0x23a7a: 0x6c4b4220,
+-	0x23a7d: 0x6c3e8020, 0x23a7e: 0x6c4b4820,
+-	// Block 0x8ea, offset 0x23a80
+-	0x23a89: 0x6c4b4a20,
+-	0x23a91: 0x6d3a7420, 0x23a93: 0x6c7f1420,
+-	0x23a95: 0x6c951620, 0x23a96: 0x6ce50020, 0x23a97: 0x6cc4c620,
+-	0x23a9a: 0x6c300820,
+-	0x23aa8: 0x6c737220, 0x23aa9: 0x6d0cac20,
+-	0x23aac: 0x6cc84020, 0x23aad: 0x6c283a20,
+-	0x23ab0: 0x6c999e20,
+-	0x23ab6: 0x6c944020,
+-	0x23ab8: 0x6d072c20, 0x23aba: 0x6cf6a220,
+-	// Block 0x8eb, offset 0x23ac0
+-	0x23ac2: 0x6c967420, 0x23ac3: 0x6cb52220,
+-	0x23ac5: 0x6c144820,
+-	0x23ac8: 0x6cce1e20, 0x23ac9: 0x6c4f0820, 0x23aca: 0x6cb2ce20,
+-	0x23ace: 0x6c5f3820,
+-	0x23ad3: 0x6c86a620,
+-	0x23ad5: 0x6d240c20, 0x23ad6: 0x6c04a420,
+-	0x23ad8: 0x6ce29220,
+-	0x23add: 0x6c1de820,
+-	0x23ae0: 0x6c1dea20,
+-	0x23ae4: 0x6cb54420, 0x23ae5: 0x6cf70420, 0x23ae6: 0x6c076820,
+-	0x23aea: 0x6d138020,
+-	0x23aed: 0x6c4a1020, 0x23aef: 0x6d3b3a20,
+-	0x23af3: 0x6c827c20,
+-	0x23af4: 0x6c827e20, 0x23af5: 0x6c13be20,
+-	// Block 0x8ec, offset 0x23b00
+-	0x23b00: 0x6c4a1420,
+-	0x23b0d: 0x6c2f2420,
+-	0x23b13: 0x6d0b4420,
+-	0x23b18: 0x6ca7fc20, 0x23b19: 0x6cd4de20, 0x23b1b: 0x6d363220,
+-	0x23b1f: 0x6d36e420,
+-	0x23b22: 0x6d36e620, 0x23b23: 0x6cb07620,
+-	0x23b25: 0x6c6f4e20, 0x23b26: 0x6c6f5220, 0x23b27: 0x6d169020,
+-	0x23b28: 0x6d201220, 0x23b2a: 0x6c6f5420,
+-	0x23b2f: 0x6c58f220,
+-	0x23b31: 0x6c323e20,
+-	0x23b3b: 0x6ce20c20,
+-	0x23b3c: 0x6cbc9e20, 0x23b3d: 0x6cbd5c20, 0x23b3e: 0x6d032420, 0x23b3f: 0x6c14bc20,
+-	// Block 0x8ed, offset 0x23b40
+-	0x23b40: 0x6c61ae20, 0x23b42: 0x6cbe0a20,
+-	0x23b4a: 0x6c324620, 0x23b4b: 0x6d33aa20,
+-	0x23b4e: 0x6cab7820,
+-	0x23b50: 0x6cf4c820, 0x23b52: 0x6cf18620,
+-	0x23b58: 0x6c096620, 0x23b5b: 0x6c069420,
+-	0x23b5d: 0x6ca23c20, 0x23b5e: 0x6c6cf420, 0x23b5f: 0x6ce21220,
+-	0x23b60: 0x6c89e220,
+-	0x23b65: 0x6c127220, 0x23b66: 0x6d2c2820,
+-	0x23b6c: 0x6c1b8e20, 0x23b6d: 0x6d0ae020, 0x23b6e: 0x6c7c6420, 0x23b6f: 0x6d1b4420,
+-	0x23b78: 0x6c8f8820, 0x23b79: 0x6cb86020, 0x23b7b: 0x6c4f4c20,
+-	0x23b7c: 0x6cce5020, 0x23b7d: 0x6c4d6420, 0x23b7e: 0x6c139220,
+-	// Block 0x8ee, offset 0x23b80
+-	0x23b80: 0x6c68e220, 0x23b81: 0x6c81ae20,
+-	0x23b88: 0x6cf5fa20, 0x23b8b: 0x6c0ef220,
+-	0x23b93: 0x6d351a20,
+-	0x23b95: 0x6cea8a20, 0x23b96: 0x6c3e8220,
+-	0x23b98: 0x6c54ce20, 0x23b9a: 0x6ca83220, 0x23b9b: 0x6d17ae20,
+-	0x23b9c: 0x6d3c4020,
+-	0x23ba0: 0x6c13e620,
+-	0x23ba4: 0x6cdb8220, 0x23ba7: 0x6d283620,
+-	0x23bae: 0x6c325e20,
+-	0x23bb0: 0x6cf61c20, 0x23bb1: 0x6c203620, 0x23bb2: 0x6d03e820, 0x23bb3: 0x6c68fa20,
+-	0x23bb4: 0x6ccfea20,
+-	// Block 0x8ef, offset 0x23bc0
+-	0x23bc0: 0x6cedca20, 0x23bc1: 0x6c06a220, 0x23bc2: 0x6c3a3a20, 0x23bc3: 0x6c669c20,
+-	0x23bc4: 0x6cc30020, 0x23bc5: 0x6d17f020, 0x23bc6: 0x6c300a20, 0x23bc7: 0x6d06f620,
+-	0x23bc8: 0x6ca35220, 0x23bc9: 0x6c605a20,
+-	0x23bcc: 0x6d31e620, 0x23bcd: 0x6cb5fa20, 0x23bce: 0x6c330a20, 0x23bcf: 0x6d1a7220,
+-	0x23bd1: 0x6c700420, 0x23bd2: 0x6caffe20, 0x23bd3: 0x6d033e20,
+-	0x23bd4: 0x6c94fe20, 0x23bd5: 0x6c113420, 0x23bd6: 0x6c8e2020, 0x23bd7: 0x6c0cac20,
+-	0x23bd8: 0x6c2a1c20, 0x23bd9: 0x6c2a7620,
+-	0x23bdf: 0x6c7ed820,
+-	0x23be1: 0x6cf65020, 0x23be2: 0x6c725620,
+-	0x23be4: 0x6cff9020, 0x23be6: 0x6c6dc020,
+-	0x23bf9: 0x6cec7220, 0x23bfb: 0x6ca50a20,
+-	0x23bfc: 0x6cfd8220, 0x23bfd: 0x6cc3e220, 0x23bfe: 0x6cbcd420, 0x23bff: 0x6ce86a20,
+-	// Block 0x8f0, offset 0x23c00
+-	0x23c00: 0x6d064a20, 0x23c01: 0x6c5bfc20,
+-	0x23c05: 0x6c9f6c20, 0x23c06: 0x6ceff220,
+-	0x23c08: 0x6d1f5620, 0x23c09: 0x6ce9ae20, 0x23c0a: 0x6c278020,
+-	0x23c0e: 0x6c786c20, 0x23c0f: 0x6ca36220,
+-	0x23c11: 0x6c401c20, 0x23c12: 0x6d239620, 0x23c13: 0x6d354420,
+-	0x23c15: 0x6c4dae20, 0x23c16: 0x6c002e20, 0x23c17: 0x6c401e20,
+-	0x23c21: 0x6d0f6220,
+-	0x23c24: 0x6cd27e20, 0x23c26: 0x6c150c20,
+-	0x23c2a: 0x6c1c5c20, 0x23c2b: 0x6d284820,
+-	0x23c2c: 0x6cd65a20, 0x23c2e: 0x6cdb0620, 0x23c2f: 0x6cca8620,
+-	0x23c31: 0x6c368a20, 0x23c32: 0x6d332e20, 0x23c33: 0x6c004e20,
+-	0x23c34: 0x6cdd8c20, 0x23c35: 0x6c10b220, 0x23c37: 0x6cc45220,
+-	0x23c38: 0x6d185e20, 0x23c39: 0x6d0dca20, 0x23c3b: 0x6ca36620,
+-	0x23c3c: 0x6cf46a20,
+-	// Block 0x8f1, offset 0x23c40
+-	0x23c47: 0x6c865c20,
+-	0x23c48: 0x6c865e20, 0x23c4a: 0x6cf6a820, 0x23c4b: 0x6c749c20,
+-	0x23c4c: 0x6cd1ea20, 0x23c4e: 0x6d0b5c20,
+-	0x23c5b: 0x6c18e420,
+-	0x23c5c: 0x6d1c8c20, 0x23c5d: 0x6c0a5220, 0x23c5e: 0x6c184020,
+-	0x23c61: 0x6d2bfc20, 0x23c62: 0x6ceb9020, 0x23c63: 0x6c56c620,
+-	0x23c64: 0x6ce2b220, 0x23c65: 0x6d1d4c20, 0x23c66: 0x6c08f820, 0x23c67: 0x6ca91e20,
+-	0x23c68: 0x6c891a20, 0x23c69: 0x6d034c20, 0x23c6a: 0x6d229020,
+-	0x23c72: 0x6c075e20,
+-	0x23c74: 0x6ca07820, 0x23c75: 0x6c331420, 0x23c77: 0x6c29ea20,
+-	0x23c78: 0x6cb64c20,
+-	// Block 0x8f2, offset 0x23c80
+-	0x23c80: 0x6cd65c20, 0x23c83: 0x6cff1e20,
+-	0x23c84: 0x6d380a20, 0x23c85: 0x6d3cb220, 0x23c87: 0x6c0bca20,
+-	0x23c89: 0x6cf02a20, 0x23c8a: 0x6cf6ec20,
+-	0x23c8c: 0x6c2aae20, 0x23c8e: 0x6d005620, 0x23c8f: 0x6cac4620,
+-	0x23c90: 0x6ca87a20, 0x23c93: 0x6c0cfa20,
+-	0x23c94: 0x6ccf7a20, 0x23c95: 0x6c3ad820, 0x23c96: 0x6c9fcc20, 0x23c97: 0x6cb7e820,
+-	0x23caa: 0x6ccdbc20, 0x23cab: 0x6cdd9c20,
+-	0x23cb7: 0x6c60c020,
+-	0x23cba: 0x6c285020, 0x23cbb: 0x6c739c20,
+-	0x23cbc: 0x6c930420, 0x23cbe: 0x6c02f620,
+-	// Block 0x8f3, offset 0x23cc0
+-	0x23cc2: 0x6d18ea20, 0x23cc3: 0x6cd57a20,
+-	0x23cc4: 0x6cdc9c20, 0x23cc5: 0x6cf0f220, 0x23cc6: 0x6cecec20, 0x23cc7: 0x6c1ef420,
+-	0x23ccc: 0x6cf32820,
+-	0x23cd6: 0x6c0aa420,
+-	0x23cd8: 0x6d1b1a20, 0x23cd9: 0x6c5d8220,
+-	0x23cdc: 0x6c769c20, 0x23cdd: 0x6ca93020,
+-	0x23ce2: 0x6c00fc20,
+-	0x23ce4: 0x6c870020, 0x23ce6: 0x6d2d0220,
+-	0x23cf1: 0x6c933020,
+-	0x23cf6: 0x6c0bd420, 0x23cf7: 0x6cac8a20,
+-	0x23cff: 0x6c4b9c20,
+-	// Block 0x8f4, offset 0x23d00
+-	0x23d00: 0x6cda6a20, 0x23d01: 0x6c9ba020, 0x23d02: 0x6cfc5220, 0x23d03: 0x6c906e20,
+-	0x23d05: 0x6cb80220,
+-	0x23d0b: 0x6c164a20,
+-	0x23d0c: 0x6d195c20, 0x23d0d: 0x6c4f8e20, 0x23d0f: 0x6c88e020,
+-	0x23d10: 0x6c49c220, 0x23d12: 0x6cf06020,
+-	0x23d17: 0x6c752020,
+-	0x23d18: 0x6c829c20, 0x23d19: 0x6c946620, 0x23d1a: 0x6c87a620,
+-	0x23d1c: 0x6cb03e20,
+-	0x23d22: 0x6c58e820,
+-	0x23d2e: 0x6c4a5820,
+-	0x23d33: 0x6c713420,
+-	0x23d36: 0x6c2aa220,
+-	0x23d3a: 0x6c3ad220,
+-	// Block 0x8f5, offset 0x23d40
+-	0x23d41: 0x6d338e20, 0x23d43: 0x6c9a7a20,
+-	0x23d45: 0x6c58f420,
+-	0x23d49: 0x6cabba20, 0x23d4a: 0x6c08c420,
+-	0x23d4c: 0x6cb30020,
+-	0x23d53: 0x6c374220,
+-	0x23d55: 0x6c58fc20,
+-	0x23d63: 0x6c170c20,
+-	0x23d65: 0x6c95fc20, 0x23d66: 0x6c3d2820,
+-	0x23d6f: 0x6c1db220,
+-	0x23d71: 0x6d40c020, 0x23d72: 0x6ca3fe20, 0x23d73: 0x6cffae20,
+-	0x23d79: 0x6c044820, 0x23d7a: 0x6c926620,
+-	0x23d7c: 0x6c961220, 0x23d7f: 0x6ca76620,
+-	// Block 0x8f6, offset 0x23d80
+-	0x23d80: 0x6d2ad020,
+-	0x23d84: 0x6d3b0a20, 0x23d85: 0x6c557420,
+-	0x23d88: 0x6c5ad820, 0x23d89: 0x6ce17c20, 0x23d8a: 0x6c1dca20,
+-	0x23d91: 0x6c59e020, 0x23d92: 0x6c30b820,
+-	0x23d9b: 0x6c9eba20,
+-	0x23d9d: 0x6c0f5a20,
+-	0x23da0: 0x6c2ca420, 0x23da2: 0x6c2ad020, 0x23da3: 0x6cb41620,
+-	0x23da5: 0x6cd94020, 0x23da6: 0x6c1dec20,
+-	0x23dab: 0x6d123c20,
+-	0x23dac: 0x6c9bf020, 0x23dad: 0x6c8fc820,
+-	0x23db2: 0x6c888220,
+-	0x23db5: 0x6c0d0620,
+-	0x23dba: 0x6c93c220,
+-	0x23dbf: 0x6ccba020,
+-	// Block 0x8f7, offset 0x23dc0
+-	0x23dc0: 0x6d425820,
+-	0x23dc4: 0x6c25aa20, 0x23dc5: 0x6c8de420, 0x23dc6: 0x6d331a20, 0x23dc7: 0x6cb05220,
+-	0x23dc8: 0x6c05c220, 0x23dcb: 0x6cc3a420,
+-	0x23dce: 0x6caf4a20, 0x23dcf: 0x6ca44220,
+-	0x23dd0: 0x6caf4c20, 0x23dd1: 0x6c0fe220, 0x23dd2: 0x6c06f020, 0x23dd3: 0x6c37e820,
+-	0x23dd5: 0x6c9fa620, 0x23dd6: 0x6ca0f220, 0x23dd7: 0x6cec2420,
+-	0x23dd8: 0x6d2f6020, 0x23dd9: 0x6d35c220, 0x23dda: 0x6c240c20,
+-	0x23ddf: 0x6d0a0620,
+-	0x23de0: 0x6c602020, 0x23de1: 0x6c4b4420, 0x23de3: 0x6c19ea20,
+-	0x23de7: 0x6c4ec620,
+-	0x23de8: 0x6cfff220, 0x23de9: 0x6cc3c020, 0x23deb: 0x6c21be20,
+-	0x23ded: 0x6c3f6420,
+-	0x23df3: 0x6cbdde20,
+-	0x23df4: 0x6c926820, 0x23df5: 0x6cc3d020, 0x23df6: 0x6c2d1e20, 0x23df7: 0x6cb8f020,
+-	0x23dfc: 0x6c16ee20, 0x23dfd: 0x6cde6220, 0x23dfe: 0x6c06ae20,
+-	// Block 0x8f8, offset 0x23e00
+-	0x23e01: 0x6c326c20, 0x23e02: 0x6c082620, 0x23e03: 0x6c547820,
+-	0x23e08: 0x6d2c8420, 0x23e09: 0x6d2c8620,
+-	0x23e0e: 0x6cc3ee20, 0x23e0f: 0x6c967620,
+-	0x23e10: 0x6c4e2c20, 0x23e13: 0x6c8e8620,
+-	0x23e14: 0x6c92d020, 0x23e16: 0x6d3e8c20,
+-	0x23e18: 0x6cb07020, 0x23e19: 0x6d395220, 0x23e1b: 0x6d2a2420,
+-	0x23e1d: 0x6ca9a020,
+-	0x23e20: 0x6c5c5620, 0x23e23: 0x6d092020,
+-	0x23e25: 0x6c7ea020,
+-	0x23e2b: 0x6caa0620,
+-	0x23e2c: 0x6d0dfa20, 0x23e2d: 0x6cc4d820, 0x23e2e: 0x6ca52220,
+-	0x23e30: 0x6c7eb420, 0x23e31: 0x6c4a1220, 0x23e32: 0x6c31e220,
+-	0x23e35: 0x6c919020,
+-	0x23e39: 0x6c663c20, 0x23e3a: 0x6d028c20, 0x23e3b: 0x6cb80e20,
+-	0x23e3e: 0x6cfe7420,
+-	// Block 0x8f9, offset 0x23e40
+-	0x23e41: 0x6c4cb020, 0x23e42: 0x6c6a8420, 0x23e43: 0x6c98b620,
+-	0x23e46: 0x6cf95820, 0x23e47: 0x6c7c3620,
+-	0x23e4e: 0x6d1e7620,
+-	0x23e50: 0x6c4d3c20, 0x23e51: 0x6c9d3220, 0x23e52: 0x6d11fc20,
+-	0x23e55: 0x6cf14c20,
+-	0x23e5f: 0x6c85f220,
+-	0x23e60: 0x6c735820, 0x23e61: 0x6cf36420, 0x23e62: 0x6cbbda20,
+-	0x23e6e: 0x6c2e2a20, 0x23e6f: 0x6c1f4220,
+-	0x23e72: 0x6cdd1c20,
+-	0x23e75: 0x6c1cc420,
+-	0x23e78: 0x6cc2a020, 0x23e79: 0x6ccf5e20,
+-	// Block 0x8fa, offset 0x23e80
+-	0x23e82: 0x6c9bd820, 0x23e83: 0x6c726820,
+-	0x23e8b: 0x6ce8e620,
+-	0x23e92: 0x6ca9c020, 0x23e93: 0x6ca07a20,
+-	0x23e99: 0x6c3bee20,
+-	0x23ea2: 0x6c027020, 0x23ea3: 0x6c4c3e20,
+-	0x23ea4: 0x6c55b420, 0x23ea5: 0x6c11b820, 0x23ea6: 0x6c33b220, 0x23ea7: 0x6c4d4820,
+-	0x23ea8: 0x6c694e20,
+-	0x23eb0: 0x6c473a20,
+-	0x23eb5: 0x6c6c6020,
+-	0x23eb8: 0x6d0fe420,
+-	// Block 0x8fb, offset 0x23ec0
+-	0x23ec0: 0x6c145020,
+-	0x23ecc: 0x6c5b0820,
+-	0x23ed4: 0x6cc20c20, 0x23ed5: 0x6c784420,
+-	0x23edf: 0x6cbe6620,
+-	0x23ee0: 0x6d197a20, 0x23ee3: 0x6c767a20,
+-	0x23ee4: 0x6c68b820, 0x23ee7: 0x6c1d6220,
+-	0x23ee8: 0x6c103020, 0x23ee9: 0x6c44ae20, 0x23eea: 0x6c682620, 0x23eeb: 0x6d339020,
+-	0x23eee: 0x6cf20020,
+-	0x23ef0: 0x6c0d2220,
+-	0x23ef4: 0x6d048820, 0x23ef5: 0x6c393020,
+-	0x23ef8: 0x6d147620, 0x23ef9: 0x6c203020, 0x23efa: 0x6d11ee20,
+-	0x23efd: 0x6d0f4c20, 0x23efe: 0x6c324020, 0x23eff: 0x6d0d4a20,
+-	// Block 0x8fc, offset 0x23f00
+-	0x23f01: 0x6c9b0a20,
+-	0x23f07: 0x6c1a9620,
+-	0x23f08: 0x6ca27420, 0x23f09: 0x6c683420, 0x23f0b: 0x6caa7a20,
+-	0x23f0d: 0x6c4c6420, 0x23f0e: 0x6d094a20,
+-	0x23f11: 0x6c3e1c20, 0x23f12: 0x6d08dc20, 0x23f13: 0x6c3d4c20,
+-	0x23f14: 0x6cae1020, 0x23f15: 0x6ca0ea20, 0x23f16: 0x6cf5a820, 0x23f17: 0x6cf2dc20,
+-	0x23f18: 0x6ccd3620, 0x23f1b: 0x6cf5aa20,
+-	0x23f1c: 0x6cb75a20, 0x23f1d: 0x6c9e5220,
+-	0x23f26: 0x6c282820,
+-	0x23f28: 0x6c1e2820,
+-	0x23f31: 0x6c3a9c20, 0x23f32: 0x6c9ec820,
+-	0x23f34: 0x6d095020, 0x23f35: 0x6d06ae20, 0x23f36: 0x6cd7dc20, 0x23f37: 0x6c71b220,
+-	0x23f38: 0x6c993420, 0x23f39: 0x6c063e20, 0x23f3b: 0x6d14d220,
+-	0x23f3c: 0x6c485020, 0x23f3d: 0x6ca69220, 0x23f3f: 0x6d14d420,
+-	// Block 0x8fd, offset 0x23f40
+-	0x23f41: 0x6d429020,
+-	0x23f44: 0x6caa5420,
+-	0x23f51: 0x6c2d4820, 0x23f52: 0x6c393c20, 0x23f53: 0x6d173a20,
+-	0x23f54: 0x6cd35a20, 0x23f57: 0x6c240e20,
+-	0x23f58: 0x6d31ce20,
+-	0x23f5e: 0x6cd36a20, 0x23f5f: 0x6c68e620,
+-	0x23f60: 0x6c546a20, 0x23f61: 0x6c375020,
+-	0x23f66: 0x6c833220, 0x23f67: 0x6d095420,
+-	0x23f68: 0x6c452c20, 0x23f6a: 0x6cd43220,
+-	0x23f6c: 0x6c72ec20,
+-	0x23f74: 0x6c6ab820, 0x23f75: 0x6cef0020, 0x23f77: 0x6cd44620,
+-	0x23f78: 0x6c6e7620, 0x23f7a: 0x6d061c20, 0x23f7b: 0x6c1d4c20,
+-	// Block 0x8fe, offset 0x23f80
+-	0x23f85: 0x6c675e20, 0x23f86: 0x6ca20a20,
+-	0x23f89: 0x6d231a20,
+-	0x23f8c: 0x6c745220,
+-	0x23f91: 0x6ce6ea20,
+-	0x23f94: 0x6cfec420, 0x23f96: 0x6c30ac20,
+-	0x23f98: 0x6c4c6c20, 0x23f99: 0x6c986220, 0x23f9a: 0x6cedcc20, 0x23f9b: 0x6d06de20,
+-	0x23f9c: 0x6cee5420, 0x23f9d: 0x6cdd2020, 0x23f9e: 0x6c736620, 0x23f9f: 0x6d26b820,
+-	0x23fa1: 0x6c4e1620, 0x23fa3: 0x6ccfec20,
+-	0x23fa5: 0x6d00ac20, 0x23fa6: 0x6c8e5a20, 0x23fa7: 0x6cc8f020,
+-	0x23faf: 0x6c09a620,
+-	0x23fb2: 0x6ca53220,
+-	0x23fb6: 0x6ced8420, 0x23fb7: 0x6c700020,
+-	0x23fb8: 0x6cc38c20,
+-	// Block 0x8ff, offset 0x23fc0
+-	0x23fc4: 0x6ca6a220, 0x23fc6: 0x6c9c5220, 0x23fc7: 0x6cdd2220,
+-	0x23fc9: 0x6cbb4020,
+-	0x23fcc: 0x6c4ed220, 0x23fcd: 0x6d3d6c20, 0x23fce: 0x6c9c5e20, 0x23fcf: 0x6d06f820,
+-	0x23fd1: 0x6c810420, 0x23fd2: 0x6c6aee20, 0x23fd3: 0x6c2faa20,
+-	0x23fd4: 0x6c171820, 0x23fd5: 0x6d365e20, 0x23fd6: 0x6c3a0c20, 0x23fd7: 0x6c63cc20,
+-	0x23fd8: 0x6c75cc20, 0x23fd9: 0x6c5dde20, 0x23fda: 0x6cb4fe20, 0x23fdb: 0x6c70a620,
+-	0x23fdc: 0x6d3cd420, 0x23fde: 0x6c2d6420, 0x23fdf: 0x6c690c20,
+-	0x23fe0: 0x6d0af220, 0x23fe2: 0x6d2dfa20,
+-	0x23fed: 0x6d33f220, 0x23fef: 0x6c973620,
+-	0x23ff0: 0x6c54da20, 0x23ff1: 0x6d01ca20, 0x23ff2: 0x6cd27420, 0x23ff3: 0x6c4a7220,
+-	0x23fff: 0x6d06fa20,
+-	// Block 0x900, offset 0x24000
+-	0x24002: 0x6c606a20,
+-	0x24004: 0x6c20b020, 0x24006: 0x6c99a220, 0x24007: 0x6cc84220,
+-	0x24008: 0x6d05bc20, 0x24009: 0x6c594620, 0x2400a: 0x6ccc6420, 0x2400b: 0x6c71c820,
+-	0x2400f: 0x6c7c0020,
+-	0x24011: 0x6c542020, 0x24012: 0x6c491e20, 0x24013: 0x6c486a20,
+-	0x24015: 0x6c9c6420, 0x24016: 0x6c2ed020, 0x24017: 0x6c0a0020,
+-	0x24018: 0x6c899820, 0x24019: 0x6c7e8620, 0x2401a: 0x6ccd5220, 0x2401b: 0x6c928c20,
+-	0x2401c: 0x6cf8b420, 0x2401f: 0x6cda2220,
+-	0x2402c: 0x6cab4220, 0x2402e: 0x6c838020,
+-	0x24037: 0x6c7a5020,
+-	0x24038: 0x6c4a7c20, 0x2403b: 0x6cf67a20,
+-	0x2403c: 0x6cac6c20, 0x2403d: 0x6ccb4c20, 0x2403e: 0x6c754e20, 0x2403f: 0x6c53d020,
+-	// Block 0x901, offset 0x24040
+-	0x24040: 0x6c49a220, 0x24041: 0x6c727c20, 0x24043: 0x6ca3d220,
+-	0x24044: 0x6c575020, 0x24045: 0x6c442220, 0x24046: 0x6c866020, 0x24047: 0x6c46d020,
+-	0x24048: 0x6ce41420, 0x2404a: 0x6c96d820, 0x2404b: 0x6ce2ae20,
+-	0x2404c: 0x6c26ba20,
+-	0x24050: 0x6cb52420, 0x24051: 0x6d23c620, 0x24052: 0x6c693020, 0x24053: 0x6c9ee620,
+-	0x24054: 0x6c451820, 0x24055: 0x6c9c0e20, 0x24056: 0x6cf0c020,
+-	0x24058: 0x6ce36620, 0x24059: 0x6cb63a20,
+-	0x2405c: 0x6c18e620, 0x2405d: 0x6c30c220, 0x2405f: 0x6cac6e20,
+-	0x24070: 0x6c4efc20,
+-	0x24074: 0x6c9d8a20, 0x24075: 0x6c967820, 0x24076: 0x6c92d220, 0x24077: 0x6cb53020,
+-	0x24078: 0x6c795220, 0x2407a: 0x6c2ee820, 0x2407b: 0x6cb7d820,
+-	0x2407c: 0x6c687c20, 0x2407d: 0x6c774e20, 0x2407e: 0x6cbbb020, 0x2407f: 0x6c9d8c20,
+-	// Block 0x902, offset 0x24080
+-	0x24080: 0x6ccd0c20,
+-	0x24087: 0x6c64da20,
+-	0x24088: 0x6c843c20, 0x24089: 0x6c78d620, 0x2408a: 0x6d073c20,
+-	0x24091: 0x6c977a20, 0x24092: 0x6c3cf420, 0x24093: 0x6c163420,
+-	0x24094: 0x6c5b6420,
+-	0x240a7: 0x6c7a0420,
+-	0x240aa: 0x6cf02c20, 0x240ab: 0x6c49a820,
+-	0x240ac: 0x6c60c220, 0x240ad: 0x6d421c20, 0x240ae: 0x6c5e0a20, 0x240af: 0x6d00fe20,
+-	0x240b4: 0x6cdc8420, 0x240b6: 0x6cc88220,
+-	0x240b8: 0x6ce28620,
+-	0x240bc: 0x6d336820, 0x240bd: 0x6c7d8820, 0x240be: 0x6cfe0020, 0x240bf: 0x6c9dda20,
+-	// Block 0x903, offset 0x240c0
+-	0x240c1: 0x6cf8f020,
+-	0x240cc: 0x6cc94820,
+-	0x240d9: 0x6c36c620, 0x240da: 0x6c9efe20, 0x240db: 0x6d3a8820,
+-	0x240dc: 0x6d406c20, 0x240dd: 0x6c9bec20, 0x240df: 0x6cf70620,
+-	0x240e1: 0x6ce14e20, 0x240e3: 0x6c645220,
+-	0x240e4: 0x6c16d020, 0x240e5: 0x6c60dc20,
+-	0x240ee: 0x6d3dbc20,
+-	0x240ff: 0x6c520420,
+-	// Block 0x904, offset 0x24100
+-	0x24100: 0x6c141020, 0x24101: 0x6cb7fc20, 0x24102: 0x6c9dea20, 0x24103: 0x6d320220,
+-	0x24104: 0x6c7a6c20, 0x24105: 0x6d138220, 0x24106: 0x6d38c020,
+-	0x24108: 0x6c652020, 0x2410a: 0x6cacc220,
+-	0x2410d: 0x6c5b0220, 0x2410f: 0x6ca02220,
+-	0x24110: 0x6c8f5020,
+-	0x24118: 0x6cd73420, 0x2411a: 0x6c974a20, 0x2411b: 0x6c849c20,
+-	0x2411e: 0x6cd7ae20, 0x2411f: 0x6d159020,
+-	0x24124: 0x6c872c20,
+-	0x24128: 0x6d005e20, 0x24129: 0x6ce28a20, 0x2412a: 0x6d051020,
+-	0x2412d: 0x6d08ce20, 0x2412e: 0x6c874820, 0x2412f: 0x6c9ba220,
+-	0x24130: 0x6cef6a20, 0x24131: 0x6c9ba420,
+-	0x2413a: 0x6d124e20, 0x2413b: 0x6c7ffe20,
+-	0x2413c: 0x6c8da020, 0x2413d: 0x6d1c3820, 0x2413e: 0x6d1c3a20, 0x2413f: 0x6c876c20,
+-	// Block 0x905, offset 0x24140
+-	0x24140: 0x6c662820, 0x24141: 0x6c4aaa20,
+-	0x24145: 0x6c494020, 0x24146: 0x6d028220,
+-	0x24149: 0x6ccf9220, 0x2414b: 0x6d418420,
+-	0x24153: 0x6c771e20,
+-	0x24154: 0x6c82a820,
+-	0x2415a: 0x6c0bde20,
+-	0x2415d: 0x6cd54e20, 0x2415e: 0x6caa7820, 0x2415f: 0x6d069a20,
+-	0x24163: 0x6c503020,
+-	0x24168: 0x6c4af220, 0x2416a: 0x6d2d4020, 0x2416b: 0x6c80c620,
+-	0x2416c: 0x6c248e20, 0x2416d: 0x6d363620, 0x2416e: 0x6c3ca820, 0x2416f: 0x6cbd3220,
+-	0x24171: 0x6d2acc20, 0x24172: 0x6ca35420, 0x24173: 0x6ca99a20,
+-	0x24174: 0x6d17f420, 0x24177: 0x6c232c20,
+-	0x24178: 0x6cd1e020, 0x24179: 0x6c65c220, 0x2417a: 0x6d3fa420, 0x2417b: 0x6d0db820,
+-	0x2417c: 0x6d1bd620,
+-	// Block 0x906, offset 0x24180
+-	0x24180: 0x6cc86e20, 0x24182: 0x6cc6a420, 0x24183: 0x6cf8cc20,
+-	0x24185: 0x6c492420, 0x24186: 0x6c769420,
+-	0x24188: 0x6cf51420, 0x2418a: 0x6cbda820, 0x2418b: 0x6c235820,
+-	0x2418d: 0x6d2b0620, 0x2418e: 0x6d024220,
+-	0x24190: 0x6d241020, 0x24191: 0x6d29a020, 0x24192: 0x6c206620, 0x24193: 0x6c853c20,
+-	0x24194: 0x6c853e20, 0x24195: 0x6d075020, 0x24196: 0x6c9c9020, 0x24197: 0x6d075420,
+-	0x24198: 0x6cc88c20, 0x2419b: 0x6c4b9420,
+-	0x2419c: 0x6cc73020, 0x2419f: 0x6c991420,
+-	0x241a1: 0x6cbdbe20, 0x241a2: 0x6c24be20, 0x241a3: 0x6c24c020,
+-	0x241a4: 0x6c24c620,
+-	0x241ae: 0x6cf35a20,
+-	0x241b0: 0x6c383220, 0x241b1: 0x6c037620,
+-	0x241b8: 0x6cb85820, 0x241b9: 0x6d35ee20, 0x241ba: 0x6ce5d420,
+-	// Block 0x907, offset 0x241c0
+-	0x241c4: 0x6d35f020, 0x241c5: 0x6d345a20, 0x241c7: 0x6c591420,
+-	0x241c8: 0x6c1da420, 0x241ca: 0x6d35f220,
+-	0x241ce: 0x6d1cf020,
+-	0x241d2: 0x6cf4f020, 0x241d3: 0x6c06a420,
+-	0x241d5: 0x6c534c20, 0x241d6: 0x6cd06420,
+-	0x241d8: 0x6c746620, 0x241d9: 0x6c7d0420,
+-	0x241dc: 0x6d15f820, 0x241dd: 0x6d0bbe20,
+-	0x241e0: 0x6c087c20,
+-	0x241e4: 0x6c7aea20, 0x241e5: 0x6cb8f220,
+-	0x241e8: 0x6d2f6620, 0x241ea: 0x6c766820, 0x241eb: 0x6cce1220,
+-	0x241ee: 0x6c01ca20, 0x241ef: 0x6d307020,
+-	0x241f0: 0x6d369420,
+-	0x241f7: 0x6d36b620,
+-	0x241f9: 0x6c693220,
+-	// Block 0x908, offset 0x24200
+-	0x24200: 0x6cd83020, 0x24201: 0x6cb45c20, 0x24202: 0x6cab9420,
+-	0x2420a: 0x6d3dbe20,
+-	0x24211: 0x6d1c3c20, 0x24213: 0x6c584a20,
+-	0x24215: 0x6d0b6e20,
+-	0x24218: 0x6cd23c20, 0x24219: 0x6cabb220, 0x2421a: 0x6cb48420,
+-	0x2421e: 0x6c983c20, 0x2421f: 0x6c146220,
+-	0x24229: 0x6d278e20,
+-	0x2422c: 0x6c476a20,
+-	0x24239: 0x6c282a20, 0x2423b: 0x6ca4a020,
+-	0x2423d: 0x6d302620, 0x2423f: 0x6c552c20,
+-	// Block 0x909, offset 0x24240
+-	0x24245: 0x6c792c20, 0x24247: 0x6c2e8c20,
+-	0x24248: 0x6ce63c20, 0x2424b: 0x6c48ee20,
+-	0x2424e: 0x6cbef020, 0x2424f: 0x6cd2ca20,
+-	0x24250: 0x6c640c20, 0x24251: 0x6c02ca20, 0x24252: 0x6ca2f620, 0x24253: 0x6cb23a20,
+-	0x24254: 0x6c63b220,
+-	0x24261: 0x6d30ec20, 0x24262: 0x6c108620, 0x24263: 0x6cf2b020,
+-	0x24265: 0x6c141e20,
+-	0x2426a: 0x6ca4a420, 0x2426b: 0x6c76c620,
+-	0x2426f: 0x6c319220,
+-	0x24270: 0x6c48f020, 0x24271: 0x6cbf0e20, 0x24273: 0x6cc66a20,
+-	0x24274: 0x6d15e820, 0x24275: 0x6c32fe20, 0x24276: 0x6c82c020,
+-	0x24278: 0x6d387a20, 0x24279: 0x6c7ac220, 0x2427a: 0x6c354020, 0x2427b: 0x6cfa9e20,
+-	0x2427c: 0x6c2d5420, 0x2427d: 0x6caaf020, 0x2427e: 0x6c361620, 0x2427f: 0x6d1d8620,
+-	// Block 0x90a, offset 0x24280
+-	0x24280: 0x6cf4e220, 0x24281: 0x6c793a20,
+-	0x24293: 0x6d35f420,
+-	0x24297: 0x6d351c20,
+-	0x24298: 0x6d0a0820, 0x2429b: 0x6d334a20,
+-	0x2429e: 0x6d0fae20,
+-	0x242a0: 0x6c5dc420, 0x242a1: 0x6c602220, 0x242a2: 0x6ca4f020,
+-	0x242a7: 0x6d0ba020,
+-	0x242a8: 0x6c924620, 0x242ab: 0x6c3d7220,
+-	0x242ac: 0x6cca1c20, 0x242ad: 0x6c1f4420, 0x242ae: 0x6cefca20,
+-	0x242b0: 0x6c3f6820, 0x242b1: 0x6c794020, 0x242b2: 0x6cd8c020, 0x242b3: 0x6c778620,
+-	0x242b5: 0x6d17b020, 0x242b6: 0x6c579a20,
+-	0x242be: 0x6d225e20,
+-	// Block 0x90b, offset 0x242c0
+-	0x242c3: 0x6c861420,
+-	0x242c6: 0x6c8c2020, 0x242c7: 0x6c321e20,
+-	0x242c8: 0x6c363c20,
+-	0x242cc: 0x6cbb4220, 0x242cd: 0x6c31a620,
+-	0x242d0: 0x6c6af020, 0x242d1: 0x6c21c620, 0x242d2: 0x6cfcd420,
+-	0x242d6: 0x6c430a20,
+-	0x242ec: 0x6c2a1e20,
+-	0x242f0: 0x6c52b420,
+-	0x242fb: 0x6d3fa620,
+-	0x242fe: 0x6cb7b620, 0x242ff: 0x6ceb3820,
+-	// Block 0x90c, offset 0x24300
+-	0x24300: 0x6c52b820, 0x24301: 0x6cb06420, 0x24302: 0x6c453c20,
+-	0x24304: 0x6ca85020, 0x24307: 0x6c798420,
+-	0x2430a: 0x6d354620,
+-	0x24311: 0x6cffb420,
+-	0x24321: 0x6ccf6620, 0x24322: 0x6d217620, 0x24323: 0x6c676a20,
+-	0x24329: 0x6cb70a20, 0x2432a: 0x6c190a20, 0x2432b: 0x6cca8220,
+-	0x2432d: 0x6cdd8e20, 0x2432e: 0x6cb9bc20, 0x2432f: 0x6c5c1a20,
+-	0x24331: 0x6ccda020, 0x24332: 0x6c368c20,
+-	0x2433b: 0x6cbfbc20,
+-	0x2433d: 0x6c78ca20,
+-	// Block 0x90d, offset 0x24340
+-	0x24340: 0x6cf23420, 0x24341: 0x6d3e7c20, 0x24342: 0x6c608e20,
+-	0x24347: 0x6c26e220,
+-	0x24349: 0x6c263620,
+-	0x2434d: 0x6c90f620, 0x2434e: 0x6c775020, 0x2434f: 0x6c7e1220,
+-	0x24350: 0x6c2b8e20, 0x24351: 0x6cbc7e20, 0x24353: 0x6ca16420,
+-	0x24356: 0x6c4cce20, 0x24357: 0x6c52c620,
+-	0x24358: 0x6c177c20, 0x24359: 0x6c522620,
+-	0x24362: 0x6c129020, 0x24363: 0x6d308c20,
+-	0x24366: 0x6c4bea20,
+-	0x24370: 0x6d05ec20, 0x24371: 0x6caece20, 0x24372: 0x6c74ca20,
+-	0x24375: 0x6c41ee20, 0x24376: 0x6cd83220,
+-	0x24378: 0x6cdc8620, 0x24379: 0x6cc40420, 0x2437b: 0x6cf3f220,
+-	0x2437c: 0x6d0cda20, 0x2437d: 0x6caf1820, 0x2437e: 0x6cffc420, 0x2437f: 0x6cac4820,
+-	// Block 0x90e, offset 0x24380
+-	0x2438d: 0x6c7e9e20,
+-	0x24397: 0x6c085a20,
+-	0x24398: 0x6d320020, 0x24399: 0x6c60de20,
+-	0x2439c: 0x6c6cc020, 0x2439d: 0x6c887420, 0x2439e: 0x6c791220,
+-	0x243a0: 0x6d38d620,
+-	0x243a8: 0x6d2a9620, 0x243aa: 0x6c822e20, 0x243ab: 0x6cb54820,
+-	0x243ac: 0x6c0e3820,
+-	0x243b5: 0x6d1b1c20, 0x243b6: 0x6cb1f620,
+-	0x243bb: 0x6cda3820,
+-	0x243bc: 0x6c941620, 0x243be: 0x6c2bb420, 0x243bf: 0x6c31e420,
+-	// Block 0x90f, offset 0x243c0
+-	0x243c0: 0x6c8a8820, 0x243c1: 0x6d3dd620,
+-	0x243ca: 0x6c16fc20,
+-	0x243d2: 0x6c194020, 0x243d3: 0x6cdee020,
+-	0x243d9: 0x6cc41e20, 0x243da: 0x6c2a4c20,
+-	0x243dd: 0x6cc51020, 0x243df: 0x6cb3ba20,
+-	0x243e6: 0x6d37e020, 0x243e7: 0x6d006020,
+-	0x243ea: 0x6c679620, 0x243eb: 0x6cc21820,
+-	0x243ec: 0x6c831020, 0x243ed: 0x6c10f020, 0x243ee: 0x6cc39a20,
+-	0x243f5: 0x6cfe7220, 0x243f6: 0x6c836820,
+-	0x243fa: 0x6c809620,
+-	0x243ff: 0x6c7e6820,
+-	// Block 0x910, offset 0x24400
+-	0x24401: 0x6c7e6a20,
+-	0x24404: 0x6d24b420,
+-	0x2440a: 0x6c697e20, 0x2440b: 0x6cbd4e20,
+-	0x2440c: 0x6c5e7e20, 0x2440f: 0x6c41c820,
+-	0x24412: 0x6d169220,
+-	0x24420: 0x6d16c820, 0x24421: 0x6d339e20,
+-	0x24424: 0x6c0c6e20, 0x24425: 0x6cd0e620, 0x24426: 0x6c6fd820,
+-	0x2442b: 0x6c509420,
+-	0x2442c: 0x6c3e2020, 0x2442e: 0x6c706620,
+-	// Block 0x911, offset 0x24440
+-	0x24440: 0x6d426620, 0x24441: 0x6d14ac20,
+-	0x24446: 0x6cfc9420, 0x24447: 0x6d14ae20,
+-	0x24449: 0x6cd8a220, 0x2444b: 0x6c20f220,
+-	0x2444e: 0x6ca0fa20,
+-	0x24461: 0x6d2d6c20, 0x24463: 0x6d0a0020,
+-	0x24466: 0x6cc79a20,
+-	0x24468: 0x6c5db020,
+-	0x2446c: 0x6cce6a20,
+-	0x24470: 0x6cd46620,
+-	0x2447e: 0x6d203e20, 0x2447f: 0x6d231c20,
+-	// Block 0x912, offset 0x24480
+-	0x24482: 0x6c75b420,
+-	0x24489: 0x6d3e4220, 0x2448a: 0x6c925c20,
+-	0x2449a: 0x6c1baa20, 0x2449b: 0x6c7d6620,
+-	0x244a0: 0x6d3ce420,
+-	0x244a6: 0x6c541420,
+-	0x244a9: 0x6d064420,
+-	0x244be: 0x6d3f9c20, 0x244bf: 0x6d1d4220,
+-	// Block 0x913, offset 0x244c0
+-	0x244c2: 0x6d39b020,
+-	0x244c5: 0x6c8f3a20,
+-	0x244d1: 0x6caa6820,
+-	0x244d8: 0x6c0a3020, 0x244da: 0x6c1c5e20,
+-	0x244dc: 0x6d412420, 0x244dd: 0x6c3cb820, 0x244de: 0x6c92aa20, 0x244df: 0x6cb49220,
+-	0x244e5: 0x6d3bdc20, 0x244e7: 0x6d308020,
+-	0x244e8: 0x6cd1ec20, 0x244e9: 0x6d227e20, 0x244ea: 0x6c92ac20, 0x244eb: 0x6c896820,
+-	0x244ef: 0x6c74c020,
+-	0x244f0: 0x6c8aa620, 0x244f1: 0x6c080820,
+-	// Block 0x914, offset 0x24500
+-	0x24503: 0x6d18ce20,
+-	0x24504: 0x6c492820,
+-	0x2450c: 0x6c02ae20, 0x2450f: 0x6c4b8220,
+-	0x24510: 0x6c9fce20, 0x24512: 0x6d0dec20, 0x24513: 0x6c7fd220,
+-	0x24516: 0x6c0f9220,
+-	0x24519: 0x6d29a620, 0x2451a: 0x6d1ffe20,
+-	0x24525: 0x6d194420, 0x24526: 0x6ca66020,
+-	0x2452c: 0x6ca66620, 0x2452d: 0x6c4ce020, 0x2452e: 0x6c760a20,
+-	0x24530: 0x6cd21820, 0x24532: 0x6cfc5c20,
+-	0x24534: 0x6cb95e20, 0x24535: 0x6cc42020, 0x24536: 0x6c7cc420,
+-	// Block 0x915, offset 0x24540
+-	0x24540: 0x6ccf1620, 0x24542: 0x6c5dd620,
+-	0x24544: 0x6ced8e20,
+-	0x2454a: 0x6c3af220, 0x2454b: 0x6c3b0020,
+-	0x2454d: 0x6d22c420,
+-	0x24551: 0x6d339220, 0x24552: 0x6c48a420,
+-	0x24554: 0x6c6a8620, 0x24555: 0x6c983e20, 0x24556: 0x6c50cc20,
+-	0x24558: 0x6d1fa820,
+-	0x2455f: 0x6c324220,
+-	0x24560: 0x6cd7d220, 0x24562: 0x6c859420,
+-	0x24565: 0x6c6a9420, 0x24566: 0x6ca98a20, 0x24567: 0x6c03ac20,
+-	0x24568: 0x6d20de20,
+-	0x2456e: 0x6d33b220,
+-	0x24578: 0x6c50e020, 0x24579: 0x6c77e820,
+-	0x2457e: 0x6c324a20, 0x2457f: 0x6c634820,
+-	// Block 0x916, offset 0x24580
+-	0x24581: 0x6c186020, 0x24583: 0x6c20f420,
+-	0x24584: 0x6c50f820, 0x24585: 0x6d2d2620,
+-	0x2458a: 0x6c9a8c20,
+-	0x2458d: 0x6c50fa20, 0x2458e: 0x6d3f0420, 0x2458f: 0x6d3a0620,
+-	0x24592: 0x6ceb0e20,
+-	0x24598: 0x6d421820, 0x2459a: 0x6cc7a220, 0x2459b: 0x6c34ee20,
+-	0x2459c: 0x6c67e020,
+-	0x245a7: 0x6c526420,
+-	0x245a9: 0x6c07e620, 0x245aa: 0x6ca10820,
+-	0x245af: 0x6d40ba20,
+-	0x245b2: 0x6c0caa20,
+-	0x245b4: 0x6c7a9820, 0x245b5: 0x6c63c020,
+-	0x245ba: 0x6d3d0420,
+-	0x245bc: 0x6d04d620,
+-	// Block 0x917, offset 0x245c0
+-	0x245c3: 0x6c512820,
+-	0x245c5: 0x6cbb7220,
+-	0x245cd: 0x6c3a5c20, 0x245ce: 0x6cd10a20,
+-	0x245d2: 0x6d3c9620, 0x245d3: 0x6c7b6a20,
+-	0x245d4: 0x6d2b5420, 0x245d5: 0x6cfaae20, 0x245d7: 0x6c09d620,
+-	0x245d8: 0x6d17f620, 0x245da: 0x6c171a20,
+-	0x245ea: 0x6c999a20,
+-	0x245f6: 0x6ced3020,
+-	0x245fd: 0x6cf37620, 0x245fe: 0x6c7a5220, 0x245ff: 0x6cf2be20,
+-	// Block 0x918, offset 0x24600
+-	0x24600: 0x6d038a20, 0x24601: 0x6c781620, 0x24603: 0x6c6f8220,
+-	0x24604: 0x6c329c20, 0x24605: 0x6c594820,
+-	0x24608: 0x6d369620, 0x24609: 0x6c130620, 0x2460a: 0x6cc75a20, 0x2460b: 0x6c606e20,
+-	0x2460d: 0x6d131a20,
+-	0x2461b: 0x6c6dca20,
+-	0x2461c: 0x6d106220,
+-	0x24621: 0x6d400220,
+-	0x24629: 0x6c11d620,
+-	0x24631: 0x6cd81c20, 0x24632: 0x6c866220, 0x24633: 0x6c47c620,
+-	0x24634: 0x6c172220, 0x24636: 0x6c3a6820, 0x24637: 0x6c8e8a20,
+-	0x24639: 0x6c6b1e20, 0x2463a: 0x6d276020,
+-	0x2463d: 0x6d36ba20,
+-	// Block 0x919, offset 0x24640
+-	0x24640: 0x6c1dd220, 0x24641: 0x6c0cbc20,
+-	0x24652: 0x6c5f1a20,
+-	0x2465c: 0x6c955220, 0x2465d: 0x6c64f820, 0x2465f: 0x6c206020,
+-	0x24660: 0x6cd6de20, 0x24662: 0x6c93fe20, 0x24663: 0x6c75ea20,
+-	0x24664: 0x6c69c820, 0x24666: 0x6ce42020, 0x24667: 0x6d2c0020,
+-	0x2466a: 0x6d18a820,
+-	0x2466c: 0x6c235a20, 0x2466d: 0x6ca57420, 0x2466e: 0x6c638220,
+-	0x24674: 0x6c627c20,
+-	0x2467d: 0x6c00ce20,
+-	// Block 0x91a, offset 0x24680
+-	0x24687: 0x6c65d820,
+-	0x2468a: 0x6c07ca20,
+-	0x2468c: 0x6c38c620, 0x2468d: 0x6cdc8a20, 0x2468e: 0x6d421e20,
+-	0x24690: 0x6c42e420, 0x24691: 0x6c432420, 0x24692: 0x6c817e20,
+-	0x24694: 0x6d3db620,
+-	0x2469f: 0x6c56ca20,
+-	0x246a2: 0x6ce9c420,
+-	0x246a6: 0x6c0a7420, 0x246a7: 0x6c716420,
+-	0x246ae: 0x6c575a20,
+-	0x246b2: 0x6c1a4a20,
+-	0x246b6: 0x6c7b4220, 0x246b7: 0x6c291420,
+-	0x246b8: 0x6c444c20, 0x246b9: 0x6d011420, 0x246bb: 0x6c6b6220,
+-	0x246bd: 0x6c117620,
+-	// Block 0x91b, offset 0x246c0
+-	0x246c6: 0x6d40ec20,
+-	0x246c8: 0x6cb46820, 0x246cb: 0x6cd57c20,
+-	0x246cc: 0x6c104820,
+-	0x246d7: 0x6ca93220,
+-	0x246d8: 0x6d0dfc20, 0x246d9: 0x6d396020, 0x246db: 0x6c9b8420,
+-	0x246dd: 0x6c0b5e20, 0x246df: 0x6cfe6420,
+-	0x246e4: 0x6c931c20, 0x246e5: 0x6c849020,
+-	0x246e9: 0x6c62ca20, 0x246eb: 0x6c9f0a20,
+-	0x246ec: 0x6c835620, 0x246ee: 0x6d375820, 0x246ef: 0x6d1ecc20,
+-	0x246f0: 0x6c0b6020,
+-	0x246f8: 0x6ca2bc20, 0x246f9: 0x6cc4da20,
+-	// Block 0x91c, offset 0x24700
+-	0x24702: 0x6ca7c620,
+-	0x2470a: 0x6cc33a20, 0x2470b: 0x6d30c620,
+-	0x24710: 0x6c836620,
+-	0x24717: 0x6c294820,
+-	0x24718: 0x6c752e20,
+-	0x2471c: 0x6c8dc420, 0x2471e: 0x6c8de820, 0x2471f: 0x6d0d2620,
+-	0x24723: 0x6d118620,
+-	0x24724: 0x6d321220, 0x24725: 0x6cb4ce20, 0x24726: 0x6c008a20,
+-	0x24728: 0x6caa3e20, 0x24729: 0x6c988220,
+-	0x24731: 0x6c76c220, 0x24733: 0x6c6f5c20,
+-	0x24734: 0x6d0d5820, 0x24735: 0x6c9e5420, 0x24737: 0x6d1a3e20,
+-	0x24738: 0x6ceccc20, 0x24739: 0x6d11f420, 0x2473a: 0x6cebce20, 0x2473b: 0x6cafc820,
+-	0x2473c: 0x6cdc2c20,
+-	// Block 0x91d, offset 0x24740
+-	0x24745: 0x6c799a20,
+-	0x24748: 0x6c532c20, 0x2474a: 0x6ca03020, 0x2474b: 0x6c8cd220,
+-	0x2474c: 0x6d173e20, 0x2474d: 0x6ccfd220, 0x2474f: 0x6d429220,
+-	0x2475b: 0x6ce85020,
+-	0x2475d: 0x6d1e7820, 0x2475f: 0x6cec2620,
+-	0x24760: 0x6c4af420, 0x24761: 0x6c53bc20,
+-	0x24765: 0x6cd36e20, 0x24767: 0x6d049220,
+-	0x24769: 0x6c000620,
+-	0x24771: 0x6c19ee20, 0x24773: 0x6c793c20,
+-	0x24774: 0x6d176c20, 0x24775: 0x6d104820, 0x24776: 0x6ce67420, 0x24777: 0x6c311e20,
+-	0x24778: 0x6c13e820, 0x24779: 0x6c8f3020,
+-	0x2477d: 0x6cc06a20, 0x2477e: 0x6d084e20, 0x2477f: 0x6ccfee20,
+-	// Block 0x91e, offset 0x24780
+-	0x24780: 0x6c7b5420, 0x24781: 0x6ce7ca20, 0x24783: 0x6cba0e20,
+-	0x24785: 0x6c1e4220,
+-	0x2478a: 0x6cf1de20,
+-	0x2478c: 0x6c906820, 0x2478d: 0x6c018820,
+-	0x24794: 0x6c76d820, 0x24796: 0x6d11b020,
+-	0x24798: 0x6c3e8420,
+-	0x2479c: 0x6c084220, 0x2479d: 0x6c803020, 0x2479e: 0x6cb86c20, 0x2479f: 0x6c2d6620,
+-	0x247a2: 0x6c69a620, 0x247a3: 0x6c4a7420,
+-	0x247a5: 0x6d049820,
+-	0x247a8: 0x6c78bc20,
+-	0x247b6: 0x6cfcd620, 0x247b7: 0x6cf33a20,
+-	// Block 0x91f, offset 0x247c0
+-	0x247c2: 0x6c45f620,
+-	0x247c6: 0x6cab8620, 0x247c7: 0x6c781820,
+-	0x247cb: 0x6c7a5420,
+-	0x247d1: 0x6ce4be20, 0x247d2: 0x6c46d420, 0x247d3: 0x6c96a220,
+-	0x247d5: 0x6c8f3e20,
+-	0x247d9: 0x6cf0c220, 0x247da: 0x6cf1ec20,
+-	0x247e1: 0x6c462020, 0x247e3: 0x6ce8e820,
+-	0x247e4: 0x6ca91620, 0x247e7: 0x6c9d7c20,
+-	0x247eb: 0x6c80e020,
+-	0x247ec: 0x6cba2220, 0x247ed: 0x6c977e20, 0x247ee: 0x6d308e20,
+-	0x247f0: 0x6c57c620, 0x247f1: 0x6d1db620, 0x247f2: 0x6c6d5020,
+-	0x247f4: 0x6c9aae20, 0x247f7: 0x6c3ef020,
+-	0x247fb: 0x6cc1c220,
+-	// Block 0x920, offset 0x24800
+-	0x2480c: 0x6c8f4820, 0x2480d: 0x6c406220, 0x2480e: 0x6c28c620,
+-	0x24810: 0x6c460020, 0x24812: 0x6c256e20,
+-	0x24815: 0x6d040c20,
+-	0x2481c: 0x6ce87c20, 0x2481d: 0x6cd48020,
+-	0x2482a: 0x6cbf8420,
+-	0x24833: 0x6cc6e020,
+-	0x2483b: 0x6c874c20,
+-	0x2483f: 0x6c5f9220,
+-	// Block 0x921, offset 0x24840
+-	0x24840: 0x6cebbc20,
+-	0x2484c: 0x6ce7aa20,
+-	0x24852: 0x6ce04c20,
+-	0x24854: 0x6c8dea20, 0x24856: 0x6d169420, 0x24857: 0x6cc85220,
+-	0x24859: 0x6cabe220,
+-	0x2485d: 0x6c10e820,
+-	0x24861: 0x6d269820, 0x24862: 0x6cc3b020, 0x24863: 0x6d3ade20,
+-	0x24864: 0x6c4d6220,
+-	0x24871: 0x6c381220, 0x24872: 0x6c4d6820,
+-	// Block 0x922, offset 0x24880
+-	0x24880: 0x6c101620, 0x24881: 0x6cb25620, 0x24882: 0x6c8b0c20,
+-	0x2488a: 0x6c7cd420, 0x2488b: 0x6c3e9e20,
+-	0x2488c: 0x6ce50620, 0x2488d: 0x6cf2fc20, 0x2488f: 0x6c70aa20,
+-	0x24898: 0x6d318620, 0x2489a: 0x6c3ec620,
+-	0x248a2: 0x6c8f9e20,
+-	0x248a6: 0x6cf8ce20, 0x248a7: 0x6ce4c020,
+-	0x248ab: 0x6c626620,
+-	0x248af: 0x6d122c20,
+-	0x248b1: 0x6c246620,
+-	0x248b4: 0x6cad3020, 0x248b5: 0x6cbce820,
+-	0x248bb: 0x6c8fb420,
+-	0x248bc: 0x6c615820,
+-	// Block 0x923, offset 0x248c0
+-	0x248c2: 0x6ce79a20, 0x248c3: 0x6d158420,
+-	0x248c5: 0x6c168420,
+-	0x248cb: 0x6c45c220,
+-	0x248ce: 0x6c309620,
+-	0x248d6: 0x6cfda420,
+-	0x248d9: 0x6ce6b620, 0x248db: 0x6d3b7020,
+-	0x248dc: 0x6d15c820, 0x248dd: 0x6d170020, 0x248de: 0x6d3ef820, 0x248df: 0x6cb6e020,
+-	0x248e2: 0x6c141a20,
+-	0x248ec: 0x6c33e220, 0x248ef: 0x6c1cbc20,
+-	0x248f0: 0x6c922a20, 0x248f1: 0x6c33ea20, 0x248f3: 0x6c399220,
+-	0x248f4: 0x6cd35c20, 0x248f5: 0x6ce3e420, 0x248f6: 0x6c5eaa20, 0x248f7: 0x6cbfaa20,
+-	0x248f8: 0x6cd70e20, 0x248f9: 0x6c18b020,
+-	0x248fc: 0x6c5a6820, 0x248fd: 0x6cd41220,
+-	// Block 0x924, offset 0x24900
+-	0x24900: 0x6d279c20,
+-	0x24906: 0x6c8f8420,
+-	0x24908: 0x6c97b620, 0x24909: 0x6c464220,
+-	0x2490d: 0x6cfaa020, 0x2490e: 0x6ca10a20,
+-	0x24910: 0x6cd05e20, 0x24912: 0x6cb30820, 0x24913: 0x6d120420,
+-	0x24914: 0x6cc0fa20, 0x24915: 0x6cc4c020,
+-	0x24919: 0x6c724220,
+-	0x2491c: 0x6d1ada20, 0x2491d: 0x6c041020, 0x2491e: 0x6ca81c20,
+-	0x24920: 0x6c1d6c20,
+-	0x2492a: 0x6cc67820, 0x2492b: 0x6c202020,
+-	0x2492c: 0x6ca83420, 0x2492d: 0x6c861620, 0x2492e: 0x6c676220, 0x2492f: 0x6c77ac20,
+-	0x24930: 0x6c12f020, 0x24931: 0x6c1d5220, 0x24932: 0x6d3b5620, 0x24933: 0x6d3f1420,
+-	0x24934: 0x6d0fb820,
+-	0x2493c: 0x6cf1e020,
+-	// Block 0x925, offset 0x24940
+-	0x2494b: 0x6c620420,
+-	0x2494c: 0x6c620620,
+-	0x24950: 0x6c93e820, 0x24951: 0x6cc07820, 0x24952: 0x6c33fc20, 0x24953: 0x6c05cc20,
+-	0x24954: 0x6c14ce20, 0x24956: 0x6c0f1620,
+-	0x24958: 0x6c1abe20, 0x24959: 0x6d30fa20, 0x2495a: 0x6c98b820,
+-	0x2495c: 0x6c621c20, 0x2495d: 0x6c9eb620, 0x2495e: 0x6d262620,
+-	0x24960: 0x6cf3d220, 0x24961: 0x6d366420, 0x24962: 0x6cb25c20,
+-	0x24965: 0x6c1ccc20,
+-	0x2496b: 0x6c9c6020,
+-	0x2496c: 0x6c3a3c20, 0x2496d: 0x6c25c020, 0x2496e: 0x6c9b2420,
+-	// Block 0x926, offset 0x24980
+-	0x2498d: 0x6d1a8220, 0x2498e: 0x6c989a20, 0x2498f: 0x6c2d2420,
+-	0x24990: 0x6c2dd620, 0x24992: 0x6cb9b420,
+-	0x24995: 0x6c4f9820, 0x24996: 0x6d348620, 0x24997: 0x6c713e20,
+-	0x24998: 0x6ca76820,
+-	0x2499c: 0x6c9c6620, 0x2499d: 0x6c47b620,
+-	0x249a3: 0x6d3b5820,
+-	0x249a4: 0x6ca85220, 0x249a5: 0x6d3d8420, 0x249a7: 0x6d131c20,
+-	0x249a8: 0x6c23dc20, 0x249aa: 0x6d05be20,
+-	0x249ac: 0x6cf8b820, 0x249af: 0x6c0e8420,
+-	0x249be: 0x6c11d820,
+-	// Block 0x927, offset 0x249c0
+-	0x249c3: 0x6d0dba20,
+-	0x249d1: 0x6c6cb220,
+-	0x249d4: 0x6c71ce20, 0x249d5: 0x6c298620, 0x249d6: 0x6c327620,
+-	0x249d8: 0x6d128c20, 0x249d9: 0x6c6ea020, 0x249da: 0x6c78cc20, 0x249db: 0x6c962220,
+-	0x249dc: 0x6cf00220, 0x249dd: 0x6ce87620, 0x249de: 0x6d1f6020, 0x249df: 0x6cac3020,
+-	0x249e1: 0x6cb01020, 0x249e2: 0x6c2fb820,
+-	0x249e4: 0x6cf00420, 0x249e5: 0x6c183620, 0x249e6: 0x6c66bc20,
+-	0x249e8: 0x6cd81e20, 0x249e9: 0x6d3d8a20, 0x249ea: 0x6cda4020,
+-	0x249ec: 0x6cc87420, 0x249ee: 0x6d218420,
+-	0x249f3: 0x6c368e20,
+-	0x249f6: 0x6c7a7e20,
+-	0x249f8: 0x6d3b2220,
+-	0x249fe: 0x6cf9e820,
+-	// Block 0x928, offset 0x24a00
+-	0x24a1b: 0x6c3ef220,
+-	0x24a1c: 0x6ce23e20, 0x24a1d: 0x6cf6d020, 0x24a1e: 0x6c1d8020, 0x24a1f: 0x6c41ec20,
+-	0x24a20: 0x6c936420, 0x24a21: 0x6c131620, 0x24a22: 0x6ccdb220, 0x24a23: 0x6c8e9c20,
+-	0x24a25: 0x6cf8e020, 0x24a26: 0x6c5f3e20, 0x24a27: 0x6d161220,
+-	0x24a28: 0x6ce01220, 0x24a2a: 0x6c55b620,
+-	0x24a2d: 0x6c25c820, 0x24a2e: 0x6c447820,
+-	0x24a30: 0x6cd3dc20, 0x24a31: 0x6ccac020, 0x24a32: 0x6c53d420, 0x24a33: 0x6cfd0e20,
+-	0x24a36: 0x6cf9f020,
+-	0x24a3b: 0x6ca2ae20,
+-	0x24a3c: 0x6cdd9620, 0x24a3e: 0x6d2d4c20,
+-	// Block 0x929, offset 0x24a40
+-	0x24a40: 0x6c3d9e20, 0x24a41: 0x6ccb6220, 0x24a42: 0x6caa4620, 0x24a43: 0x6d18ac20,
+-	0x24a67: 0x6cbdaa20,
+-	0x24a68: 0x6cbedc20,
+-	0x24a75: 0x6c5c5a20, 0x24a76: 0x6cd6e220, 0x24a77: 0x6c284a20,
+-	0x24a78: 0x6cab5420, 0x24a79: 0x6ca17420, 0x24a7a: 0x6cb92420, 0x24a7b: 0x6c1c8020,
+-	0x24a7c: 0x6cac0620, 0x24a7d: 0x6c739620,
+-	// Block 0x92a, offset 0x24a80
+-	0x24a80: 0x6c178020, 0x24a81: 0x6c8b3c20, 0x24a82: 0x6c0db420, 0x24a83: 0x6c7a0a20,
+-	0x24a84: 0x6c28c820, 0x24a85: 0x6c1dee20, 0x24a86: 0x6ce70620, 0x24a87: 0x6c28ca20,
+-	0x24a88: 0x6c97ce20, 0x24a89: 0x6c56ce20, 0x24a8a: 0x6c8a2820, 0x24a8b: 0x6cfbae20,
+-	0x24a8d: 0x6c129820, 0x24a8e: 0x6c92ea20, 0x24a8f: 0x6c204220,
+-	0x24a90: 0x6cf3f420, 0x24a91: 0x6c978820,
+-	0x24a95: 0x6d3f2420, 0x24a97: 0x6c328020,
+-	0x24a9a: 0x6cd6f220, 0x24a9b: 0x6c406420,
+-	0x24a9c: 0x6c72a620, 0x24a9d: 0x6d395820, 0x24a9f: 0x6c2e4220,
+-	0x24aa0: 0x6cee5a20, 0x24aa1: 0x6c206820, 0x24aa2: 0x6cb92620, 0x24aa3: 0x6cea1220,
+-	0x24aa5: 0x6c886420, 0x24aa6: 0x6c0c2e20, 0x24aa7: 0x6c845420,
+-	0x24aaa: 0x6c845620,
+-	// Block 0x92b, offset 0x24ac0
+-	0x24ac6: 0x6c0a9220, 0x24ac7: 0x6c407620,
+-	0x24ac8: 0x6c257820, 0x24ac9: 0x6c318020, 0x24acb: 0x6d29a820,
+-	0x24acc: 0x6c8fb620, 0x24acd: 0x6d0a4a20, 0x24ace: 0x6cbf7a20, 0x24acf: 0x6c5f6e20,
+-	0x24ad0: 0x6cba2c20, 0x24ad2: 0x6c65fa20, 0x24ad3: 0x6cce9020,
+-	0x24ad4: 0x6c351e20, 0x24ad5: 0x6cd51620, 0x24ad6: 0x6c10c820, 0x24ad7: 0x6d05f820,
+-	0x24ad8: 0x6c304420, 0x24ada: 0x6cc49220,
+-	0x24adc: 0x6d0fe620, 0x24add: 0x6cc8b420, 0x24ade: 0x6c8c7020, 0x24adf: 0x6c65fc20,
+-	0x24ae0: 0x6c2ca820, 0x24ae1: 0x6c3ba020, 0x24ae2: 0x6c2d9020, 0x24ae3: 0x6d41dc20,
+-	0x24ae5: 0x6ca94820,
+-	0x24aea: 0x6cdba020, 0x24aeb: 0x6ce52420,
+-	0x24aec: 0x6c01da20, 0x24aef: 0x6c131c20,
+-	0x24af0: 0x6c2fc220, 0x24af1: 0x6cd02820, 0x24af2: 0x6c328420, 0x24af3: 0x6ce39420,
+-	0x24af4: 0x6c695420, 0x24af5: 0x6d41de20, 0x24af6: 0x6d2f1020, 0x24af7: 0x6c65fe20,
+-	0x24af8: 0x6c28da20, 0x24af9: 0x6c285420, 0x24afa: 0x6cd97420,
+-	// Block 0x92c, offset 0x24b00
+-	0x24b10: 0x6d2e2620, 0x24b11: 0x6ce69620, 0x24b12: 0x6d372a20,
+-	0x24b15: 0x6d1f8220, 0x24b16: 0x6cac0e20,
+-	0x24b21: 0x6c854220,
+-	0x24b24: 0x6cb9d820, 0x24b26: 0x6cdca620, 0x24b27: 0x6c71dc20,
+-	0x24b28: 0x6c010020, 0x24b29: 0x6c445020, 0x24b2a: 0x6c72b420, 0x24b2b: 0x6cea7220,
+-	0x24b2c: 0x6c0aa620, 0x24b2d: 0x6cb87e20, 0x24b2e: 0x6c0fa820, 0x24b2f: 0x6c5c7c20,
+-	0x24b31: 0x6c670020,
+-	0x24b34: 0x6c466420, 0x24b35: 0x6cdba420,
+-	0x24b3a: 0x6c227a20, 0x24b3b: 0x6cbb5c20,
+-	0x24b3f: 0x6d0cf420,
+-	// Block 0x92d, offset 0x24b40
+-	0x24b4f: 0x6c2d9420,
+-	0x24b52: 0x6c9f0420,
+-	0x24b5c: 0x6cb3b620, 0x24b5d: 0x6c8e1620, 0x24b5e: 0x6c6b7420, 0x24b5f: 0x6d3b3e20,
+-	0x24b60: 0x6c47ee20, 0x24b63: 0x6c32aa20,
+-	0x24b64: 0x6d2fee20, 0x24b66: 0x6ccebe20, 0x24b67: 0x6cbdf020,
+-	0x24b68: 0x6c9ca420, 0x24b6a: 0x6cb2e220, 0x24b6b: 0x6c23c020,
+-	0x24b6c: 0x6c1d8820, 0x24b6f: 0x6cc9ae20,
+-	0x24b76: 0x6ce52620,
+-	// Block 0x92e, offset 0x24b80
+-	0x24b85: 0x6c8edc20, 0x24b86: 0x6c936c20, 0x24b87: 0x6c91fc20,
+-	0x24b88: 0x6d407620,
+-	0x24b8c: 0x6c941e20, 0x24b8d: 0x6c58e620, 0x24b8f: 0x6ce5b420,
+-	0x24b90: 0x6ce9d820, 0x24b91: 0x6cbb5220, 0x24b92: 0x6c8c8020, 0x24b93: 0x6c06c220,
+-	0x24b94: 0x6cad7620, 0x24b95: 0x6d2dc420, 0x24b97: 0x6c874e20,
+-	0x24b9b: 0x6ce3b220,
+-	0x24b9c: 0x6c560020,
+-	0x24ba2: 0x6c8b6c20,
+-	0x24bb5: 0x6c5b8020, 0x24bb6: 0x6cc16420, 0x24bb7: 0x6d086820,
+-	0x24bb9: 0x6c6ec620, 0x24bba: 0x6c2f1220, 0x24bbb: 0x6cdc0820,
+-	0x24bbd: 0x6cf11e20, 0x24bbf: 0x6d0d1420,
+-	// Block 0x92f, offset 0x24bc0
+-	0x24bc0: 0x6d0c4a20, 0x24bc1: 0x6c050e20, 0x24bc3: 0x6c67ce20,
+-	0x24bc4: 0x6ca66820, 0x24bc5: 0x6c876e20, 0x24bc6: 0x6c560620, 0x24bc7: 0x6cb80420,
+-	0x24bc8: 0x6d37e220,
+-	0x24bd1: 0x6c0acc20,
+-	0x24bd4: 0x6d220020, 0x24bd5: 0x6c2f1420, 0x24bd6: 0x6c8c8a20, 0x24bd7: 0x6c878c20,
+-	0x24bd8: 0x6d3de620, 0x24bd9: 0x6c62f020, 0x24bda: 0x6c70e620,
+-	0x24bdc: 0x6c3c8820, 0x24bde: 0x6d248820,
+-	0x24be8: 0x6c8b7e20, 0x24be9: 0x6d28e020, 0x24bea: 0x6cb9e820, 0x24beb: 0x6c6a4620,
+-	0x24bec: 0x6c494220, 0x24bee: 0x6d3dee20,
+-	0x24bf1: 0x6c40a220,
+-	0x24bf9: 0x6ccba220,
+-	0x24bfc: 0x6c248a20,
+-	// Block 0x930, offset 0x24c00
+-	0x24c03: 0x6c5b8220,
+-	0x24c08: 0x6c29a620, 0x24c09: 0x6c901c20, 0x24c0a: 0x6d198420,
+-	0x24c17: 0x6cc96020,
+-	0x24c18: 0x6d274220, 0x24c1a: 0x6c2bc620,
+-	0x24c21: 0x6c420820, 0x24c22: 0x6d295c20, 0x24c23: 0x6ccdf420,
+-	0x24c24: 0x6d24b020, 0x24c25: 0x6c0fde20, 0x24c27: 0x6c2f9820,
+-	0x24c28: 0x6c388c20, 0x24c2a: 0x6d22d820,
+-	0x24c2c: 0x6ccfc420,
+-	0x24c32: 0x6c457020,
+-	0x24c34: 0x6c9ed020, 0x24c35: 0x6cea4a20,
+-	0x24c38: 0x6c8af620,
+-	// Block 0x931, offset 0x24c40
+-	0x24c41: 0x6d2bd420, 0x24c42: 0x6cadbc20,
+-	0x24c44: 0x6c9c4a20, 0x24c46: 0x6c9ffa20, 0x24c47: 0x6c394a20,
+-	0x24c49: 0x6ca33620, 0x24c4a: 0x6cd8b820, 0x24c4b: 0x6d14ea20,
+-	0x24c4c: 0x6c635020, 0x24c4d: 0x6d3ae620,
+-	0x24c53: 0x6c047e20,
+-	0x24c54: 0x6d231e20, 0x24c56: 0x6cb35820,
+-	0x24c5a: 0x6c582820, 0x24c5b: 0x6c11f820,
+-	0x24c5c: 0x6c684a20,
+-	0x24c60: 0x6cdfe420,
+-	0x24c69: 0x6d363a20, 0x24c6b: 0x6c9cf420,
+-	0x24c6c: 0x6c77ae20,
+-	0x24c71: 0x6d109a20, 0x24c72: 0x6c335020, 0x24c73: 0x6cc36020,
+-	0x24c74: 0x6c10a420, 0x24c75: 0x6c1f5420, 0x24c76: 0x6cbc2820, 0x24c77: 0x6c8e6c20,
+-	0x24c78: 0x6c0f1820, 0x24c7a: 0x6c772e20, 0x24c7b: 0x6c3bde20,
+-	// Block 0x932, offset 0x24c80
+-	0x24c85: 0x6c2a2020,
+-	0x24c89: 0x6c312820, 0x24c8a: 0x6c440820,
+-	0x24c99: 0x6c8d3a20, 0x24c9a: 0x6cf79420,
+-	0x24c9c: 0x6ca6ba20, 0x24c9d: 0x6d389620, 0x24c9e: 0x6d389820,
+-	0x24ca3: 0x6c1d7820,
+-	0x24cb4: 0x6ca6ee20, 0x24cb5: 0x6c5f0c20, 0x24cb7: 0x6cc12420,
+-	// Block 0x933, offset 0x24cc0
+-	0x24cc4: 0x6c763e20, 0x24cc7: 0x6cfcfc20,
+-	0x24cc9: 0x6c516820, 0x24ccb: 0x6c8bd220,
+-	0x24ccd: 0x6d3e7e20,
+-	0x24cd1: 0x6cab8c20, 0x24cd2: 0x6c245620,
+-	0x24cd7: 0x6c140420,
+-	0x24cdd: 0x6d383820, 0x24cde: 0x6c102420,
+-	0x24ce4: 0x6c1d8220, 0x24ce5: 0x6cf8e220, 0x24ce6: 0x6cc99220, 0x24ce7: 0x6cfb9620,
+-	0x24ce8: 0x6ccb6420, 0x24ce9: 0x6c9e6020, 0x24ceb: 0x6c38c020,
+-	0x24cec: 0x6d341620, 0x24cee: 0x6c256420,
+-	0x24cf4: 0x6cfa4620,
+-	0x24cfe: 0x6cab1420, 0x24cff: 0x6c845820,
+-	// Block 0x934, offset 0x24d00
+-	0x24d00: 0x6d40de20, 0x24d02: 0x6c24f220, 0x24d03: 0x6d2b1220,
+-	0x24d05: 0x6c845a20,
+-	0x24d18: 0x6cb67620, 0x24d1a: 0x6d3d1020, 0x24d1b: 0x6c257a20,
+-	0x24d1c: 0x6cb41e20, 0x24d1e: 0x6c38d620, 0x24d1f: 0x6ce02620,
+-	0x24d29: 0x6d3eac20, 0x24d2a: 0x6d412a20, 0x24d2b: 0x6d38bc20,
+-	0x24d2c: 0x6cc6d020, 0x24d2d: 0x6c8bee20, 0x24d2e: 0x6ce02820,
+-	0x24d36: 0x6cd3fe20,
+-	0x24d3a: 0x6c251420, 0x24d3b: 0x6d3eb820,
+-	0x24d3c: 0x6c3db620,
+-	// Block 0x935, offset 0x24d40
+-	0x24d41: 0x6d001c20,
+-	0x24d48: 0x6c3c7420,
+-	0x24d4f: 0x6cfd4220,
+-	0x24d50: 0x6c670c20, 0x24d52: 0x6c3c0420,
+-	0x24d57: 0x6c875020,
+-	0x24d58: 0x6ca19820,
+-	0x24d5f: 0x6d1ed020,
+-	0x24d65: 0x6c5e5020, 0x24d67: 0x6cc16620,
+-	0x24d6c: 0x6ca78220,
+-	0x24d70: 0x6c9cbe20, 0x24d73: 0x6cb80a20,
+-	0x24d76: 0x6c51ae20,
+-	0x24d78: 0x6c893a20,
+-	0x24d7f: 0x6d42b420,
+-	// Block 0x936, offset 0x24d80
+-	0x24d82: 0x6c8df220,
+-	0x24d85: 0x6d39f820, 0x24d87: 0x6ca78c20,
+-	0x24d8a: 0x6c612420, 0x24d8b: 0x6cc62620,
+-	0x24d8c: 0x6c6a9620, 0x24d8d: 0x6c41d020,
+-	0x24d90: 0x6d170220, 0x24d93: 0x6d38ce20,
+-	0x24d95: 0x6cf4ca20,
+-	0x24d9a: 0x6c44fe20, 0x24d9b: 0x6c243220,
+-	0x24d9d: 0x6c9ed220,
+-	0x24da1: 0x6d0a0220, 0x24da3: 0x6d33cc20,
+-	0x24da4: 0x6cff7620, 0x24da7: 0x6c3e3a20,
+-	0x24da8: 0x6c553620,
+-	0x24dac: 0x6c2b1e20, 0x24dae: 0x6c741820, 0x24daf: 0x6c2e1220,
+-	0x24db9: 0x6cd44420,
+-	0x24dbc: 0x6cee0a20,
+-	// Block 0x937, offset 0x24dc0
+-	0x24dc3: 0x6ca33820,
+-	0x24dc4: 0x6c2b2620, 0x24dc5: 0x6cd37020, 0x24dc6: 0x6c224020, 0x24dc7: 0x6cd4d220,
+-	0x24dc9: 0x6cec2c20, 0x24dca: 0x6c181820, 0x24dcb: 0x6c389820,
+-	0x24dcd: 0x6c470820, 0x24dce: 0x6d24e620,
+-	0x24dd1: 0x6c491420,
+-	0x24dda: 0x6cbcbc20,
+-	0x24ddc: 0x6d2de820, 0x24ddd: 0x6c276020, 0x24dde: 0x6cceee20,
+-	0x24de6: 0x6d388820, 0x24de7: 0x6cfde420,
+-	0x24de8: 0x6ca00020, 0x24de9: 0x6d3f5020, 0x24dea: 0x6c599620, 0x24deb: 0x6c9c5420,
+-	0x24ded: 0x6cf88c20, 0x24dee: 0x6d363c20, 0x24def: 0x6cac2820,
+-	0x24df0: 0x6c349420,
+-	0x24df4: 0x6c22c820, 0x24df5: 0x6ca1d420, 0x24df7: 0x6c17be20,
+-	0x24df9: 0x6d17b620, 0x24dfa: 0x6c464820,
+-	// Block 0x938, offset 0x24e00
+-	0x24e07: 0x6c6dba20,
+-	0x24e13: 0x6d2b8020,
+-	0x24e14: 0x6cb25e20, 0x24e15: 0x6d130420, 0x24e16: 0x6c6af420,
+-	0x24e18: 0x6caf7620, 0x24e1b: 0x6ccbfe20,
+-	0x24e1c: 0x6d3c4420, 0x24e1d: 0x6c6f1e20,
+-	0x24e20: 0x6c8e6e20, 0x24e21: 0x6d227020, 0x24e23: 0x6c70ac20,
+-	0x24e28: 0x6caafe20,
+-	0x24e38: 0x6c999c20,
+-	// Block 0x939, offset 0x24e40
+-	0x24e44: 0x6c187420, 0x24e46: 0x6d3bd420, 0x24e47: 0x6ca76a20,
+-	0x24e48: 0x6c79aa20, 0x24e49: 0x6c6a2e20, 0x24e4a: 0x6c57b020,
+-	0x24e4d: 0x6d02e220, 0x24e4e: 0x6d424a20, 0x24e4f: 0x6d0e9620,
+-	0x24e50: 0x6c748220,
+-	0x24e55: 0x6c54ea20, 0x24e56: 0x6d393a20, 0x24e57: 0x6ccf6a20,
+-	0x24e59: 0x6d0dbc20, 0x24e5b: 0x6d01de20,
+-	0x24e5c: 0x6c2ed420, 0x24e5f: 0x6c187a20,
+-	0x24e72: 0x6c65c620, 0x24e73: 0x6c624c20,
+-	0x24e76: 0x6c21ce20, 0x24e77: 0x6c537420,
+-	// Block 0x93a, offset 0x24e80
+-	0x24e80: 0x6c26bc20,
+-	0x24e84: 0x6c764020, 0x24e85: 0x6d039820, 0x24e86: 0x6c5c1c20, 0x24e87: 0x6c65d020,
+-	0x24e88: 0x6d394820, 0x24e89: 0x6d2c8c20, 0x24e8a: 0x6c403820, 0x24e8b: 0x6c1c6020,
+-	0x24e8c: 0x6c082e20, 0x24e8d: 0x6cab0a20,
+-	0x24e91: 0x6c626820, 0x24e92: 0x6cb9c020,
+-	0x24e94: 0x6ced9620, 0x24e95: 0x6cab6a20, 0x24e96: 0x6c0a3220, 0x24e97: 0x6cd79c20,
+-	0x24ea0: 0x6c6dd020, 0x24ea1: 0x6d132e20,
+-	// Block 0x93b, offset 0x24ec0
+-	0x24ec4: 0x6c3a7220, 0x24ec7: 0x6c844420,
+-	0x24eca: 0x6c868020, 0x24ecb: 0x6cb01e20,
+-	0x24ed2: 0x6cdc7a20, 0x24ed3: 0x6c8e9e20,
+-	0x24ed4: 0x6c517220, 0x24ed5: 0x6c5d1420, 0x24ed6: 0x6ce07a20, 0x24ed7: 0x6cd79e20,
+-	0x24ed8: 0x6d36ec20, 0x24ed9: 0x6c0f5c20,
+-	0x24edd: 0x6cf8e420,
+-	0x24ee1: 0x6cb33620, 0x24ee2: 0x6cc45c20,
+-	0x24ee4: 0x6ca2b020,
+-	0x24efd: 0x6d1db820,
+-	// Block 0x93c, offset 0x24f00
+-	0x24f02: 0x6c279620,
+-	0x24f0a: 0x6cb72220, 0x24f0b: 0x6c2e0220,
+-	0x24f0c: 0x6ca87c20, 0x24f0d: 0x6cd6e420, 0x24f0f: 0x6cce8c20,
+-	0x24f10: 0x6c7dc420, 0x24f11: 0x6cdc9020, 0x24f13: 0x6c30ca20,
+-	0x24f14: 0x6c2ef220,
+-	0x24f1c: 0x6c45ba20,
+-	0x24f2f: 0x6d3bb020,
+-	0x24f30: 0x6c4c8c20,
+-	0x24f3c: 0x6d05fa20, 0x24f3d: 0x6cc1e820,
+-	// Block 0x93d, offset 0x24f40
+-	0x24f40: 0x6d0a4c20, 0x24f43: 0x6c689a20,
+-	0x24f44: 0x6d30aa20, 0x24f46: 0x6c2d9220, 0x24f47: 0x6cca7620,
+-	0x24f48: 0x6c080c20, 0x24f4a: 0x6cdda620, 0x24f4b: 0x6cba2e20,
+-	0x24f4f: 0x6d05fc20,
+-	0x24f51: 0x6d0a4e20,
+-	0x24f54: 0x6ca17a20,
+-	0x24f75: 0x6cdca820, 0x24f76: 0x6c7ea820, 0x24f77: 0x6d3a8a20,
+-	0x24f78: 0x6d396420, 0x24f7a: 0x6c870820,
+-	0x24f7c: 0x6c280e20, 0x24f7d: 0x6c717820, 0x24f7f: 0x6d286e20,
+-	// Block 0x93e, offset 0x24f80
+-	0x24f80: 0x6c15fc20, 0x24f81: 0x6c956020,
+-	0x24f84: 0x6ccb8220, 0x24f86: 0x6c888620,
+-	0x24f88: 0x6d414e20, 0x24f8b: 0x6c7f7020,
+-	0x24f8c: 0x6cd6ec20, 0x24f8d: 0x6cbcfe20,
+-	0x24f98: 0x6c30ce20,
+-	0x24f9e: 0x6cf54a20, 0x24f9f: 0x6c9b9020,
+-	0x24fa1: 0x6c62ce20,
+-	0x24fa4: 0x6c1aee20, 0x24fa6: 0x6ca65c20,
+-	0x24fb8: 0x6d116e20, 0x24fbb: 0x6c7ec020,
+-	0x24fbe: 0x6c942020,
+-	// Block 0x93f, offset 0x24fc0
+-	0x24fc0: 0x6cdcbe20, 0x24fc1: 0x6c3dbe20,
+-	0x24fc4: 0x6c830420, 0x24fc5: 0x6cf05820,
+-	0x24fce: 0x6c237820,
+-	0x24fd4: 0x6c877020, 0x24fd6: 0x6cb22820,
+-	0x24fd8: 0x6c759020, 0x24fd9: 0x6c71e420, 0x24fdb: 0x6c7ecc20,
+-	0x24fe7: 0x6c62f220,
+-	0x24fea: 0x6c9f1a20,
+-	0x24fec: 0x6d125020, 0x24fed: 0x6c0b2620,
+-	0x24ff1: 0x6c23d420, 0x24ff2: 0x6cd85e20,
+-	0x24ff5: 0x6cd86020,
+-	0x24ff8: 0x6c51b020,
+-	// Block 0x940, offset 0x25000
+-	0x25003: 0x6ca48820,
+-	0x25005: 0x6c2f2620,
+-	0x25008: 0x6c180220, 0x25009: 0x6d282220, 0x2500b: 0x6d052220,
+-	0x2500c: 0x6cd4c220, 0x2500e: 0x6c15b020, 0x2500f: 0x6c9f4c20,
+-	0x25010: 0x6c87fe20, 0x25011: 0x6d19e620, 0x25012: 0x6d037620, 0x25013: 0x6cee9020,
+-	0x25014: 0x6c479020, 0x25015: 0x6ce7f020, 0x25016: 0x6cddf620, 0x25017: 0x6c3a5e20,
+-	0x25018: 0x6c265420, 0x25019: 0x6ca84620, 0x2501a: 0x6c244820, 0x2501b: 0x6d426e20,
+-	0x2501c: 0x6c6b2020, 0x2501d: 0x6d08b020, 0x2501e: 0x6c0f5e20, 0x2501f: 0x6c6c5e20,
+-	0x25020: 0x6d1b1220, 0x25021: 0x6d05f020, 0x25023: 0x6d20e420,
+-	0x25024: 0x6d048c20, 0x25026: 0x6cb76c20, 0x25027: 0x6c069620,
+-	0x25028: 0x6d03dc20, 0x25029: 0x6c45ec20,
+-	0x2502c: 0x6d418c20,
+-	0x25030: 0x6c6a1a20, 0x25032: 0x6c763020,
+-	0x25035: 0x6d03f020, 0x25036: 0x6c06b220, 0x25037: 0x6cd4ee20,
+-	0x25038: 0x6d23a020, 0x2503a: 0x6d38ee20, 0x2503b: 0x6d2e0420,
+-	// Block 0x941, offset 0x25040
+-	0x25042: 0x6d37c620,
+-	0x25046: 0x6c140620,
+-	0x25048: 0x6c20e020, 0x25049: 0x6c8f4220,
+-	0x2504e: 0x6cdbdc20,
+-	0x25050: 0x6d3a8620,
+-	0x25059: 0x6c0bd220,
+-	0x2505d: 0x6d035420, 0x2505f: 0x6d0bce20,
+-	0x25062: 0x6c8daa20,
+-	0x25067: 0x6d0bd220,
+-	0x2506c: 0x6ce63020,
+-	0x25079: 0x6c2b5a20,
+-	// Block 0x942, offset 0x25080
+-	0x25081: 0x6cafca20, 0x25082: 0x6c567620, 0x25083: 0x6c132a20,
+-	0x2508a: 0x6ce45e20, 0x2508b: 0x6ca20220,
+-	0x2508c: 0x6c731620, 0x2508e: 0x6ca20420,
+-	0x25090: 0x6c723020, 0x25091: 0x6c8f0020, 0x25093: 0x6c8e0c20,
+-	0x25097: 0x6c8f0220,
+-	0x25098: 0x6c568820,
+-	0x250a6: 0x6c3e3e20, 0x250a7: 0x6c553820,
+-	0x250aa: 0x6c361820, 0x250ab: 0x6c458420,
+-	0x250ac: 0x6c470a20,
+-	0x250b1: 0x6c48b420,
+-	0x250b9: 0x6c94a420, 0x250bb: 0x6c389a20,
+-	0x250bc: 0x6c93e220, 0x250bd: 0x6c9b1820, 0x250be: 0x6c3e8a20, 0x250bf: 0x6c8e5e20,
+-	// Block 0x943, offset 0x250c0
+-	0x250c5: 0x6d00c220, 0x250c6: 0x6c471e20,
+-	0x250c8: 0x6cfcda20, 0x250c9: 0x6c0f1a20, 0x250cb: 0x6c622220,
+-	0x250d3: 0x6cc2a220,
+-	0x250d4: 0x6c927220,
+-	0x250de: 0x6cd79420,
+-	0x250e1: 0x6ca20820, 0x250e2: 0x6d23a420, 0x250e3: 0x6c4eea20,
+-	0x250e9: 0x6d26d020, 0x250ea: 0x6c289e20,
+-	0x250ef: 0x6d218620,
+-	0x250f0: 0x6c64de20, 0x250f3: 0x6c429020,
+-	0x250ff: 0x6c129420,
+-	// Block 0x944, offset 0x25100
+-	0x25100: 0x6cd0c820, 0x25101: 0x6c8f1c20,
+-	0x25106: 0x6c687e20,
+-	0x25109: 0x6cdb2020, 0x2510a: 0x6cdb2220, 0x2510b: 0x6d383e20,
+-	0x25112: 0x6c8aaa20,
+-	0x25114: 0x6d085c20, 0x25115: 0x6c92ee20, 0x25117: 0x6c629e20,
+-	0x2511a: 0x6d0cdc20,
+-	0x2511f: 0x6c930820,
+-	0x25121: 0x6c9fd220, 0x25122: 0x6ce39620,
+-	0x25126: 0x6c595c20,
+-	0x25129: 0x6d18ec20, 0x2512a: 0x6ce08220,
+-	0x2512c: 0x6cf48820,
+-	0x25130: 0x6c5f8020,
+-	0x25137: 0x6c31e620,
+-	0x25138: 0x6c7d9420, 0x2513a: 0x6c758e20,
+-	0x2513f: 0x6cd21a20,
+-	// Block 0x945, offset 0x25140
+-	0x25140: 0x6ca44e20, 0x25141: 0x6cb3bc20,
+-	0x25144: 0x6cd52020, 0x25145: 0x6cc37e20,
+-	0x2514c: 0x6cc5bc20, 0x2514f: 0x6c3b6220,
+-	0x25152: 0x6cde3a20, 0x25153: 0x6cea4820,
+-	0x25155: 0x6d0f9c20,
+-	0x25166: 0x6c342c20, 0x25167: 0x6c21fc20,
+-	0x25169: 0x6c478020, 0x2516a: 0x6c3b6e20,
+-	0x2516d: 0x6cc74620,
+-	0x25171: 0x6c42c020, 0x25172: 0x6cfdbe20,
+-	0x25174: 0x6cfdc020, 0x25175: 0x6c545420, 0x25177: 0x6ce1c420,
+-	0x25178: 0x6ccd8420, 0x25179: 0x6d0fba20, 0x2517a: 0x6d3f5220,
+-	0x2517c: 0x6d256a20,
+-	// Block 0x946, offset 0x25180
+-	0x25184: 0x6cda7420, 0x25187: 0x6c203820,
+-	0x25188: 0x6cfdc820, 0x2518a: 0x6c048a20,
+-	0x2518c: 0x6c97c020, 0x2518e: 0x6c3f6e20, 0x2518f: 0x6c7e6420,
+-	0x25190: 0x6c851e20, 0x25192: 0x6c6af620, 0x25193: 0x6d1ea820,
+-	0x25198: 0x6d23a620, 0x2519a: 0x6c1c4820,
+-	0x2519c: 0x6c203a20, 0x2519d: 0x6d182e20, 0x2519e: 0x6ccd0020,
+-	0x251a2: 0x6c609220, 0x251a3: 0x6d0c2820,
+-	0x251a6: 0x6cf51820, 0x251a7: 0x6c215c20,
+-	0x251a8: 0x6c987420,
+-	0x251ad: 0x6c3ede20, 0x251ae: 0x6c637c20, 0x251af: 0x6c46d620,
+-	0x251b0: 0x6c474420, 0x251b1: 0x6c63e420,
+-	0x251b5: 0x6cfb9820, 0x251b7: 0x6c6d6020,
+-	0x251b8: 0x6d3f6420, 0x251b9: 0x6c90bc20,
+-	0x251bc: 0x6c46da20,
+-	// Block 0x947, offset 0x251c0
+-	0x251c0: 0x6cc57c20, 0x251c2: 0x6ccd1420,
+-	0x251c5: 0x6c74da20, 0x251c6: 0x6ce79c20, 0x251c7: 0x6d1ffc20,
+-	0x251d4: 0x6c651a20, 0x251d5: 0x6c31dc20, 0x251d7: 0x6c55f020,
+-	0x251db: 0x6ccace20,
+-	0x251dc: 0x6d246220,
+-	0x251e2: 0x6c974e20,
+-	0x251e4: 0x6d342620, 0x251e5: 0x6d0c4420, 0x251e6: 0x6c42f020,
+-	0x251e8: 0x6c582020,
+-	0x251ee: 0x6cc34420,
+-	0x251f1: 0x6d103e20, 0x251f3: 0x6d418820,
+-	0x251f7: 0x6cfe8e20,
+-	0x251f8: 0x6d170620, 0x251f9: 0x6d0d5a20, 0x251fa: 0x6c531e20, 0x251fb: 0x6d20e620,
+-	0x251ff: 0x6c1c0020,
+-	// Block 0x948, offset 0x25200
+-	0x25201: 0x6c1b1020,
+-	0x25204: 0x6c4f6a20, 0x25205: 0x6ccb1e20, 0x25206: 0x6cabbe20, 0x25207: 0x6cde4020,
+-	0x25208: 0x6c3b2620, 0x25209: 0x6c1aa020,
+-	0x2520c: 0x6c533220, 0x2520d: 0x6d095220,
+-	0x25216: 0x6d351e20,
+-	0x2521b: 0x6cc19020,
+-	0x25220: 0x6cf5fe20, 0x25221: 0x6c3e6220, 0x25223: 0x6cd4e020,
+-	0x25224: 0x6c4d6a20, 0x25226: 0x6cb38c20,
+-	0x25228: 0x6c229a20,
+-	0x25230: 0x6c149a20, 0x25233: 0x6c52ae20,
+-	0x25238: 0x6cad7a20, 0x25239: 0x6ccff820, 0x2523a: 0x6cfede20,
+-	0x2523d: 0x6d07ac20, 0x2523e: 0x6c229e20, 0x2523f: 0x6ce68420,
+-	// Block 0x949, offset 0x25240
+-	0x25240: 0x6cb39620,
+-	0x25247: 0x6cde7e20,
+-	0x25248: 0x6c13a820, 0x2524b: 0x6d40ce20,
+-	0x2524c: 0x6c5de820, 0x2524d: 0x6d071820, 0x2524e: 0x6d0e9820, 0x2524f: 0x6c149e20,
+-	0x25251: 0x6ceb3420,
+-	0x25258: 0x6cfb8420, 0x25259: 0x6d07c620, 0x2525a: 0x6c542a20, 0x2525b: 0x6c58de20,
+-	0x2525c: 0x6c442620, 0x2525d: 0x6c1d3c20, 0x2525e: 0x6c0a3620, 0x2525f: 0x6c52bc20,
+-	0x25260: 0x6c52be20, 0x25261: 0x6c1b4a20, 0x25263: 0x6c140820,
+-	0x2526f: 0x6d2c8e20,
+-	0x25271: 0x6d2d1e20, 0x25272: 0x6cdea220,
+-	0x25275: 0x6cb3a220, 0x25276: 0x6cdea420,
+-	0x25278: 0x6d1f6e20, 0x25279: 0x6c3ef420, 0x2527a: 0x6c220e20, 0x2527b: 0x6c26be20,
+-	0x2527c: 0x6cde1a20, 0x2527e: 0x6c8ea020,
+-	// Block 0x94a, offset 0x25280
+-	0x25281: 0x6c221020, 0x25283: 0x6c52d420,
+-	0x25285: 0x6c4f1a20, 0x25286: 0x6c7e5020,
+-	0x25288: 0x6cd20420,
+-	0x2528d: 0x6ce79e20, 0x2528e: 0x6c5c7020, 0x2528f: 0x6c518620,
+-	0x25290: 0x6cb1d820, 0x25291: 0x6d243a20,
+-	0x2529c: 0x6cfaf020, 0x2529d: 0x6c4e6c20, 0x2529f: 0x6cb3ac20,
+-	0x252a6: 0x6c7ec220, 0x252a7: 0x6c5e5220,
+-	0x252b0: 0x6cdf8420,
+-	0x252b4: 0x6c819e20, 0x252b6: 0x6cd5b420,
+-	0x252ba: 0x6c2a0a20, 0x252bb: 0x6c2d1020,
+-	// Block 0x94b, offset 0x252c0
+-	0x252c8: 0x6d04a820, 0x252cb: 0x6cee6020,
+-	0x252cd: 0x6c17f820, 0x252ce: 0x6ca3ae20,
+-	0x252d0: 0x6c73d420, 0x252d3: 0x6c375220,
+-	0x252d4: 0x6c375a20, 0x252d5: 0x6caa6c20, 0x252d6: 0x6caa8820,
+-	0x252dd: 0x6d3bae20,
+-	0x252e2: 0x6cab2220,
+-	0x252e4: 0x6c8ac220, 0x252e5: 0x6c82b420, 0x252e7: 0x6c032a20,
+-	0x252ec: 0x6c196820, 0x252ef: 0x6c4a6a20,
+-	0x252f0: 0x6cc2f820, 0x252f1: 0x6c448820, 0x252f3: 0x6c45ee20,
+-	0x252f4: 0x6ccee020,
+-	0x252f9: 0x6c7f2020, 0x252fa: 0x6d32e820, 0x252fb: 0x6d183020,
+-	0x252fc: 0x6c4bda20, 0x252fd: 0x6ceea620, 0x252fe: 0x6c951e20,
+-	// Block 0x94c, offset 0x25300
+-	0x25302: 0x6cd28620, 0x25303: 0x6d1be820,
+-	0x25304: 0x6cd14620, 0x25305: 0x6ce8ea20, 0x25306: 0x6c0a3820,
+-	0x25308: 0x6d2aee20, 0x25309: 0x6d383a20, 0x2530b: 0x6cc72620,
+-	0x2530c: 0x6cb64e20, 0x2530d: 0x6c405620, 0x2530e: 0x6c131820,
+-	0x25313: 0x6c845c20,
+-	0x25314: 0x6c978c20, 0x25316: 0x6c886620, 0x25317: 0x6c0c3020,
+-	0x2531b: 0x6c207e20,
+-	0x2531c: 0x6d18ee20,
+-	0x25320: 0x6cac3620,
+-	0x25325: 0x6d191420, 0x25326: 0x6c7b4820,
+-	0x25329: 0x6c0c5220, 0x2532b: 0x6c1c9e20,
+-	0x2532c: 0x6cc22020, 0x2532d: 0x6ca1ae20, 0x2532e: 0x6d301620, 0x2532f: 0x6ccc3c20,
+-	0x25330: 0x6ccc3e20,
+-	0x25337: 0x6d109620,
+-	0x25338: 0x6c457420, 0x25339: 0x6ca3b620,
+-	0x2533c: 0x6d018420, 0x2533f: 0x6ce53220,
+-	// Block 0x94d, offset 0x25340
+-	0x25346: 0x6d127820,
+-	0x25349: 0x6ccbe220,
+-	0x2534f: 0x6ccaec20,
+-	0x25352: 0x6c2cc620, 0x25353: 0x6d06c220,
+-	0x25359: 0x6cc19220,
+-	0x25360: 0x6c52b020, 0x25361: 0x6cd16620, 0x25362: 0x6ce6ec20,
+-	0x25370: 0x6c352e20,
+-	0x25375: 0x6c89ea20, 0x25377: 0x6c53c220,
+-	0x25378: 0x6c852020, 0x2537a: 0x6cfdee20,
+-	0x2537d: 0x6cd0b620,
+-	// Block 0x94e, offset 0x25380
+-	0x25380: 0x6c3d8220,
+-	0x25388: 0x6d0dc020, 0x25389: 0x6cee3220, 0x2538a: 0x6cb51620, 0x2538b: 0x6c34a620,
+-	0x2538d: 0x6c57b220, 0x2538e: 0x6cb90c20,
+-	0x25390: 0x6d01e020,
+-	0x2539d: 0x6c22d620, 0x2539e: 0x6cd11020,
+-	0x253a2: 0x6c37dc20,
+-	0x253a4: 0x6d039a20, 0x253a6: 0x6cea0e20, 0x253a7: 0x6d0ea220,
+-	0x253a9: 0x6c8b2820,
+-	0x253ac: 0x6c9c6e20,
+-	0x253b8: 0x6d402c20, 0x253ba: 0x6d3e8020,
+-	0x253bc: 0x6c55ba20, 0x253bd: 0x6d1c9e20, 0x253be: 0x6c885620, 0x253bf: 0x6c266a20,
+-	// Block 0x94f, offset 0x253c0
+-	0x253c0: 0x6ce4c420, 0x253c1: 0x6ce53e20,
+-	0x253cb: 0x6cc6b020,
+-	0x253cd: 0x6c00d020,
+-	0x253d0: 0x6c00e420, 0x253d1: 0x6d309e20, 0x253d2: 0x6c4c4620, 0x253d3: 0x6c92f020,
+-	0x253d4: 0x6d2f7a20, 0x253d5: 0x6c9c8220, 0x253d6: 0x6c8a2a20, 0x253d7: 0x6d30a020,
+-	0x253db: 0x6cc25020,
+-	0x253dc: 0x6c236820, 0x253df: 0x6ce65020,
+-	0x253e1: 0x6ce02c20, 0x253e2: 0x6d2e2820, 0x253e3: 0x6c55e020,
+-	0x253e5: 0x6cb1da20, 0x253e7: 0x6c267020,
+-	0x253e8: 0x6cc6d220,
+-	0x253ee: 0x6ca52020,
+-	0x253f3: 0x6ca45a20,
+-	0x253f4: 0x6c291a20, 0x253f5: 0x6c695c20,
+-	0x253fb: 0x6c72b620,
+-	0x253fc: 0x6c37ac20,
+-	// Block 0x950, offset 0x25400
+-	0x2540a: 0x6c877420,
+-	0x2540c: 0x6c4c4e20, 0x2540d: 0x6cec7e20,
+-	0x25412: 0x6ca7ee20,
+-	0x25414: 0x6c6c3420,
+-	0x25429: 0x6cb04a20, 0x2542a: 0x6c1bde20,
+-	0x25432: 0x6cb04c20, 0x25433: 0x6d166e20,
+-	0x25434: 0x6c316220, 0x25435: 0x6cec1420, 0x25436: 0x6d099020,
+-	0x25438: 0x6cb73c20, 0x25439: 0x6ccd6c20,
+-	0x2543c: 0x6d056a20, 0x2543f: 0x6c509020,
+-	// Block 0x951, offset 0x25440
+-	0x25440: 0x6caca620, 0x25442: 0x6cadb420,
+-	0x25444: 0x6d045a20, 0x25446: 0x6c1b7e20, 0x25447: 0x6cdf9020,
+-	0x25448: 0x6d41a620, 0x25449: 0x6d414820, 0x2544a: 0x6cb74c20, 0x2544b: 0x6c316420,
+-	0x25459: 0x6cd70c20,
+-	0x2545c: 0x6ca2f220, 0x2545d: 0x6cf59620,
+-	0x25467: 0x6c179420,
+-	0x25468: 0x6d16d020, 0x2546b: 0x6d329e20,
+-	0x2546e: 0x6c70fe20, 0x2546f: 0x6c274c20,
+-	0x25471: 0x6cc9fc20,
+-	0x25474: 0x6d3ac820, 0x25475: 0x6ced7620,
+-	0x25478: 0x6cc9fe20, 0x25479: 0x6c04f220, 0x2547a: 0x6c643c20, 0x2547b: 0x6c972c20,
+-	// Block 0x952, offset 0x25480
+-	0x25488: 0x6ceb9c20, 0x2548a: 0x6cb76020,
+-	0x2548f: 0x6d3c0c20,
+-	0x25490: 0x6ceb0220, 0x25493: 0x6cb28c20,
+-	0x2549d: 0x6cae6220, 0x2549e: 0x6c7b9a20, 0x2549f: 0x6d14d820,
+-	0x254a1: 0x6d018620, 0x254a2: 0x6d264c20, 0x254a3: 0x6c523020,
+-	0x254a5: 0x6c53f220, 0x254a6: 0x6d32a420, 0x254a7: 0x6c217420,
+-	0x254a8: 0x6cd35e20, 0x254a9: 0x6cec1c20, 0x254ab: 0x6d009620,
+-	0x254b8: 0x6c452a20,
+-	// Block 0x953, offset 0x254c0
+-	0x254c5: 0x6c35fe20,
+-	0x254cf: 0x6c7a7220,
+-	0x254d0: 0x6ca32c20, 0x254d3: 0x6c707420,
+-	0x254d4: 0x6d088e20, 0x254d5: 0x6cc0fe20, 0x254d6: 0x6c181c20, 0x254d7: 0x6c939620,
+-	0x254d8: 0x6c511420, 0x254d9: 0x6cd16020, 0x254da: 0x6ca44620,
+-	0x254dc: 0x6c511620, 0x254dd: 0x6c13de20, 0x254de: 0x6d0bfe20, 0x254df: 0x6c450a20,
+-	0x254e0: 0x6ca81e20, 0x254e2: 0x6c4c6a20, 0x254e3: 0x6d0c8c20,
+-	0x254e4: 0x6c494e20, 0x254e7: 0x6d360420,
+-	0x254e8: 0x6c81f420,
+-	0x254ef: 0x6c321820,
+-	0x254f0: 0x6cb78220, 0x254f1: 0x6cc10020, 0x254f2: 0x6c742e20,
+-	// Block 0x954, offset 0x25500
+-	0x25501: 0x6c3c4220, 0x25503: 0x6d06c420,
+-	0x25504: 0x6ce9fc20, 0x25506: 0x6c4e1820, 0x25507: 0x6c7a4220,
+-	0x2550a: 0x6ccff020, 0x2550b: 0x6d363e20,
+-	0x2550d: 0x6cad2c20, 0x2550e: 0x6d32cc20, 0x2550f: 0x6c861820,
+-	0x25510: 0x6ced2620, 0x25512: 0x6c391020, 0x25513: 0x6d033a20,
+-	0x25516: 0x6d0bb620,
+-	0x2551b: 0x6c709820,
+-	0x2551c: 0x6cd0a620,
+-	0x2552d: 0x6c989020, 0x2552f: 0x6cea7e20,
+-	0x25530: 0x6d3d6620, 0x25531: 0x6cf62820, 0x25532: 0x6d1b5820, 0x25533: 0x6c6db620,
+-	0x25534: 0x6cea5420, 0x25537: 0x6c453220,
+-	0x25538: 0x6c620a20,
+-	// Block 0x955, offset 0x25540
+-	0x2554f: 0x6d3ba820,
+-	0x25552: 0x6ce5f220,
+-	0x25554: 0x6d33e220, 0x25556: 0x6c604420,
+-	0x2555a: 0x6d1c8220, 0x2555b: 0x6cf0aa20,
+-	0x2555d: 0x6c593c20, 0x2555e: 0x6ce68620, 0x2555f: 0x6c150620,
+-	0x25562: 0x6c7c8e20, 0x25563: 0x6cb86e20,
+-	0x25564: 0x6c04fc20, 0x25565: 0x6c13a420, 0x25566: 0x6ceb8420, 0x25567: 0x6ca43020,
+-	0x25568: 0x6c6a2420, 0x2556a: 0x6d0c1620,
+-	0x2556c: 0x6ce8ca20, 0x2556e: 0x6cf1e620,
+-	0x25570: 0x6c232020, 0x25573: 0x6d06fc20,
+-	0x25574: 0x6d1b6020, 0x25577: 0x6c084420,
+-	0x2557c: 0x6c935820,
+-	// Block 0x956, offset 0x25580
+-	0x25581: 0x6d290620, 0x25582: 0x6c265820,
+-	0x25586: 0x6ca84820, 0x25587: 0x6c71c220,
+-	0x25588: 0x6c541620,
+-	0x2558c: 0x6c453a20,
+-	0x25595: 0x6c541820, 0x25596: 0x6c76b220, 0x25597: 0x6c459620,
+-	0x25599: 0x6c5b5e20, 0x2559a: 0x6d01e220,
+-	0x2559d: 0x6cf8ba20, 0x2559e: 0x6c4e2420, 0x2559f: 0x6c9c6820,
+-	0x255a1: 0x6cf25c20, 0x255a2: 0x6c5d3620, 0x255a3: 0x6ccabc20,
+-	0x255a4: 0x6d034220, 0x255a5: 0x6d307220, 0x255a6: 0x6c5dea20,
+-	0x255a8: 0x6c45a020, 0x255ab: 0x6cc9e420,
+-	0x255ac: 0x6c6c4a20, 0x255ad: 0x6cebec20,
+-	0x255b1: 0x6c332420, 0x255b2: 0x6c1aca20,
+-	0x255bd: 0x6cf67e20,
+-	// Block 0x957, offset 0x255c0
+-	0x255c2: 0x6c9c6a20, 0x255c3: 0x6d29e020,
+-	0x255c4: 0x6cca8420,
+-	0x255d3: 0x6cea5e20,
+-	0x255d4: 0x6d366820, 0x255d5: 0x6cf1ea20,
+-	0x255d8: 0x6d1a9820, 0x255d9: 0x6cea8220, 0x255db: 0x6c1cda20,
+-	0x255dc: 0x6d2af020, 0x255de: 0x6cff0a20, 0x255df: 0x6ca07420,
+-	0x255e0: 0x6c245820, 0x255e3: 0x6c0b4e20,
+-	0x255e4: 0x6d04f020, 0x255e7: 0x6d154c20,
+-	0x255ee: 0x6c5a6020,
+-	0x255f0: 0x6d2bf820, 0x255f1: 0x6cdd3620, 0x255f2: 0x6c5cfe20, 0x255f3: 0x6c727e20,
+-	// Block 0x958, offset 0x25600
+-	0x25601: 0x6c245a20,
+-	0x25604: 0x6c5f4020, 0x25605: 0x6d0a4420, 0x25606: 0x6cdcfe20, 0x25607: 0x6c135e20,
+-	0x25609: 0x6d18b020,
+-	0x2560e: 0x6c0c2220,
+-	0x25612: 0x6c74c220, 0x25613: 0x6c868220,
+-	0x25616: 0x6cad9a20,
+-	0x2561b: 0x6d289c20,
+-	0x2561c: 0x6d134220, 0x2561e: 0x6c0a5a20, 0x2561f: 0x6d310020,
+-	0x25620: 0x6d310220, 0x25622: 0x6c702420, 0x25623: 0x6d309020,
+-	0x25626: 0x6cd60e20,
+-	0x2562a: 0x6cf6d620,
+-	0x25637: 0x6d065820,
+-	0x25638: 0x6ca3a620, 0x25639: 0x6cfb9a20, 0x2563a: 0x6c4bec20, 0x2563b: 0x6cf0d220,
+-	0x2563e: 0x6c60c420, 0x2563f: 0x6cc9a220,
+-	// Block 0x959, offset 0x25640
+-	0x25642: 0x6c304220, 0x25643: 0x6caac820,
+-	0x25644: 0x6c327a20, 0x25645: 0x6d32fc20, 0x25646: 0x6c7a6420,
+-	0x25649: 0x6ca01c20,
+-	0x25655: 0x6c05d820, 0x25656: 0x6c5c5020,
+-	0x25659: 0x6d3fc620,
+-	0x25668: 0x6cca5c20, 0x2566a: 0x6ce29420, 0x2566b: 0x6d157220,
+-	0x2566d: 0x6d241620,
+-	0x25671: 0x6d123220, 0x25672: 0x6ca94a20,
+-	0x25674: 0x6c1dfa20, 0x25675: 0x6c5d4820, 0x25677: 0x6c337620,
+-	0x25679: 0x6cb7f220, 0x2567a: 0x6d1d1820, 0x2567b: 0x6c0e3420,
+-	0x2567c: 0x6ca92e20, 0x2567d: 0x6c5a1a20,
+-	// Block 0x95a, offset 0x25680
+-	0x25686: 0x6d1d1a20,
+-	0x2568a: 0x6c05da20,
+-	0x2568e: 0x6c4a2820, 0x2568f: 0x6c82f620,
+-	0x25690: 0x6d421020,
+-	0x25699: 0x6c15fe20,
+-	0x256a3: 0x6c660a20,
+-	0x256a7: 0x6c9b9220,
+-	0x256a9: 0x6d002820,
+-	0x256af: 0x6d035620,
+-	0x256b1: 0x6c849e20,
+-	0x256ba: 0x6cbc2e20,
+-	0x256bf: 0x6cf05c20,
+-	// Block 0x95b, offset 0x256c0
+-	0x256c0: 0x6ca37620, 0x256c2: 0x6cacee20,
+-	0x256c4: 0x6c829020, 0x256c7: 0x6c958220,
+-	0x256cb: 0x6c946220,
+-	0x256cd: 0x6c44ea20, 0x256cf: 0x6c946420,
+-	0x256d2: 0x6cc22220,
+-	0x256d6: 0x6c959020,
+-	0x256d8: 0x6ca46820, 0x256db: 0x6c959220,
+-	0x256dc: 0x6d273e20,
+-	0x256e2: 0x6cd71a20,
+-	0x256e5: 0x6c9d3e20, 0x256e6: 0x6cede820, 0x256e7: 0x6c12f420,
+-	0x256e8: 0x6c64a620, 0x256e9: 0x6cee2020,
+-	0x256ef: 0x6c637e20,
+-	0x256f4: 0x6c58c020,
+-	0x256f8: 0x6c894220, 0x256f9: 0x6d3f2c20, 0x256fa: 0x6c040a20, 0x256fb: 0x6cd43c20,
+-	0x256fe: 0x6cecf220,
+-	// Block 0x95c, offset 0x25700
+-	0x25702: 0x6cd4c420,
+-	0x25707: 0x6c4a4e20,
+-	0x25708: 0x6cf5cc20, 0x2570a: 0x6cc79c20, 0x2570b: 0x6d11fe20,
+-	0x2570e: 0x6c42c220,
+-	0x25715: 0x6d26d220,
+-	0x25718: 0x6d1da820, 0x25719: 0x6cec3c20, 0x2571a: 0x6c0f4620,
+-	0x2571f: 0x6d034e20,
+-	0x25722: 0x6cb0c620, 0x25723: 0x6c0f7820,
+-	0x25726: 0x6c4d7e20, 0x25727: 0x6d2d5220,
+-	0x25728: 0x6cf33020, 0x2572a: 0x6d138420, 0x2572b: 0x6c0ab820,
+-	0x2572c: 0x6c4d8620,
+-	0x25738: 0x6c1c0220, 0x2573b: 0x6d360620,
+-	0x2573d: 0x6ca5dc20,
+-	// Block 0x95d, offset 0x25740
+-	0x25741: 0x6cf3d420, 0x25742: 0x6c006e20,
+-	0x25748: 0x6c006a20, 0x25749: 0x6d229220, 0x2574a: 0x6c1c7020,
+-	0x2574d: 0x6c6eac20, 0x2574e: 0x6d371020, 0x2574f: 0x6d372c20,
+-	0x25750: 0x6d372e20, 0x25751: 0x6c70ee20,
+-	0x25756: 0x6c4dd820,
+-	0x2575a: 0x6cb24c20,
+-	0x2575d: 0x6d11a620,
+-	0x25763: 0x6d1f1e20,
+-	0x25764: 0x6cb25420, 0x25766: 0x6ca11020,
+-	0x2576c: 0x6d429e20, 0x2576d: 0x6cb38e20, 0x2576f: 0x6d091220,
+-	0x25770: 0x6c7bc420, 0x25771: 0x6d17bc20, 0x25772: 0x6cb39020,
+-	0x2577b: 0x6d3c9c20,
+-	// Block 0x95e, offset 0x25780
+-	0x25783: 0x6ca5fa20,
+-	0x25784: 0x6cc0b020, 0x25785: 0x6c23f820,
+-	0x2578c: 0x6d11cc20,
+-	0x25791: 0x6c3b9820,
+-	0x25795: 0x6cf9f420, 0x25797: 0x6c677c20,
+-	0x25798: 0x6c13b220, 0x2579b: 0x6d000e20,
+-	0x2579c: 0x6c13b420,
+-	0x257a2: 0x6c1a5020, 0x257a3: 0x6c257e20,
+-	0x257a7: 0x6cbf7c20,
+-	0x257a9: 0x6d245220, 0x257ab: 0x6d21d820,
+-	0x257af: 0x6cf21620,
+-	0x257b1: 0x6c13c020, 0x257b2: 0x6d22ae20,
+-	0x257b9: 0x6d425420, 0x257ba: 0x6c29fc20,
+-	0x257bd: 0x6c73a820, 0x257be: 0x6c29fe20, 0x257bf: 0x6d1c4c20,
+-	// Block 0x95f, offset 0x257c0
+-	0x257c1: 0x6c3cd420,
+-	0x257c5: 0x6cf27a20,
+-	0x257c8: 0x6c6cf620, 0x257c9: 0x6cb76e20, 0x257cb: 0x6cbe0e20,
+-	0x257cd: 0x6c7dee20, 0x257cf: 0x6cdf9e20,
+-	0x257d0: 0x6cfa9420, 0x257d2: 0x6ce46420,
+-	0x257d4: 0x6c7df620, 0x257d6: 0x6ce53a20,
+-	0x257d8: 0x6c556420, 0x257d9: 0x6d39aa20, 0x257da: 0x6d2d7620, 0x257db: 0x6cde5820,
+-	0x257dd: 0x6ce46e20, 0x257de: 0x6cde6820, 0x257df: 0x6cde8020,
+-	0x257e0: 0x6c574820, 0x257e1: 0x6d0dc220, 0x257e2: 0x6ce61620,
+-	0x257e4: 0x6ce61820, 0x257e5: 0x6cde8220,
+-	0x257ec: 0x6c581020, 0x257ee: 0x6c63e620, 0x257ef: 0x6cb7e020,
+-	0x257f1: 0x6cdeae20,
+-	0x257f4: 0x6cdfc220, 0x257f5: 0x6c57ce20,
+-	0x257f8: 0x6d3bf620, 0x257f9: 0x6c572220,
+-	0x257fc: 0x6c800c20,
+-	// Block 0x960, offset 0x25800
+-	0x25806: 0x6d420420, 0x25807: 0x6d169820,
+-	0x25808: 0x6c3dfe20, 0x25809: 0x6cf4bc20, 0x2580b: 0x6c3e0020,
+-	0x2580d: 0x6c2f5620, 0x2580e: 0x6cde3c20,
+-	0x25816: 0x6c17b820,
+-	0x25819: 0x6cc64220, 0x2581a: 0x6cc35620,
+-	0x2581c: 0x6c438420,
+-	0x25821: 0x6c3e6620, 0x25822: 0x6c2c4c20, 0x25823: 0x6c2dc620,
+-	0x25824: 0x6d1e3020, 0x25826: 0x6c643e20,
+-	0x25829: 0x6c8f8e20,
+-	0x2582c: 0x6d1e3220, 0x2582d: 0x6cafe020, 0x2582f: 0x6c5d7820,
+-	0x25830: 0x6cbf3020, 0x25832: 0x6c38a020, 0x25833: 0x6cf3d620,
+-	0x25834: 0x6ce74e20, 0x25835: 0x6c4f7e20,
+-	0x25838: 0x6cdfac20,
+-	0x2583e: 0x6c525020,
+-	// Block 0x961, offset 0x25840
+-	0x25844: 0x6ce56220,
+-	0x25848: 0x6d388e20, 0x2584b: 0x6c045420,
+-	0x2584c: 0x6d01e420, 0x2584d: 0x6c29c620, 0x2584f: 0x6c6c4c20,
+-	0x25855: 0x6c54ec20, 0x25856: 0x6c06b620,
+-	0x25858: 0x6c2fb220,
+-	0x2585c: 0x6caac420, 0x2585d: 0x6cf0c620, 0x2585e: 0x6d218c20,
+-	0x25860: 0x6d039c20, 0x25861: 0x6c3ee020, 0x25862: 0x6cfd0020, 0x25863: 0x6cb7c420,
+-	0x25864: 0x6ce87820, 0x25867: 0x6c609420,
+-	0x25869: 0x6d1d4620, 0x2586b: 0x6c2ae420,
+-	0x2586c: 0x6ceeb020, 0x2586d: 0x6cf6ae20, 0x2586f: 0x6cac0220,
+-	0x25871: 0x6cd12020, 0x25872: 0x6d1fec20,
+-	0x25874: 0x6c005220, 0x25875: 0x6c66d220, 0x25877: 0x6c466020,
+-	0x25878: 0x6cc93020,
+-	0x2587c: 0x6c462220, 0x2587f: 0x6ccc6e20,
+-	// Block 0x962, offset 0x25880
+-	0x25880: 0x6ce13a20,
+-	0x25887: 0x6c92f220,
+-	0x25888: 0x6c027820, 0x2588a: 0x6cb7ee20, 0x2588b: 0x6d04fc20,
+-	0x2588d: 0x6c271020,
+-	0x25891: 0x6c382a20, 0x25892: 0x6cf0f420,
+-	0x25894: 0x6c341020, 0x25895: 0x6c8a3a20, 0x25896: 0x6c386620, 0x25897: 0x6c5a1c20,
+-	0x25898: 0x6c74dc20, 0x25899: 0x6cdec020, 0x2589a: 0x6d422020, 0x2589b: 0x6cc53020,
+-	0x2589c: 0x6c117a20, 0x2589d: 0x6ce2c020,
+-	0x258a0: 0x6c57d020, 0x258a1: 0x6d05fe20, 0x258a3: 0x6d2dae20,
+-	0x258a7: 0x6c41f420,
+-	0x258aa: 0x6caeea20, 0x258ab: 0x6c118020,
+-	0x258ac: 0x6d005820, 0x258ad: 0x6c26d020,
+-	0x258b1: 0x6c62d020,
+-	0x258b6: 0x6c854820,
+-	0x258b9: 0x6cac9020,
+-	0x258bd: 0x6c8ffa20, 0x258be: 0x6c877620, 0x258bf: 0x6cf7c220,
+-	// Block 0x963, offset 0x258c0
+-	0x258c0: 0x6ce2d620, 0x258c3: 0x6c8dac20,
+-	0x258c8: 0x6c855820, 0x258c9: 0x6cc4a220, 0x258ca: 0x6c8df420,
+-	0x258ce: 0x6c4bca20,
+-	0x258d4: 0x6cb30a20, 0x258d5: 0x6ca11220, 0x258d6: 0x6cabf020,
+-	0x258d9: 0x6c03b420,
+-	0x258e1: 0x6cb62820,
+-	0x258e4: 0x6d0cc420,
+-	0x258ea: 0x6cec3e20, 0x258eb: 0x6c020c20,
+-	0x258ed: 0x6ca04a20, 0x258ee: 0x6c9fca20, 0x258ef: 0x6d0ab220,
+-	0x258f0: 0x6c9b9420, 0x258f3: 0x6c48d620,
+-	0x258f6: 0x6c682420,
+-	0x258fb: 0x6c410a20,
+-	// Block 0x964, offset 0x25900
+-	0x25901: 0x6c110a20, 0x25902: 0x6cf4ac20, 0x25903: 0x6d301820,
+-	0x25904: 0x6cc58820, 0x25905: 0x6c79b420,
+-	0x25914: 0x6d2f8a20, 0x25915: 0x6d37a220, 0x25916: 0x6cc00a20, 0x25917: 0x6c4c1420,
+-	0x25918: 0x6c456a20, 0x25919: 0x6cb40220, 0x2591a: 0x6c566c20, 0x2591b: 0x6c9e0820,
+-	0x2591e: 0x6ce45a20,
+-	0x25923: 0x6cee0020,
+-	0x25938: 0x6d3a0020, 0x25939: 0x6c268a20, 0x2593a: 0x6d048e20, 0x2593b: 0x6ca2d420,
+-	0x2593e: 0x6c72de20,
+-	// Block 0x965, offset 0x25940
+-	0x25941: 0x6ca71a20,
+-	0x25948: 0x6c567820, 0x25949: 0x6ccbd420,
+-	0x2595c: 0x6d33b820, 0x2595f: 0x6cdde420,
+-	0x25961: 0x6cd7d820,
+-	0x25965: 0x6d170820,
+-	0x2596d: 0x6cbf1020, 0x2596e: 0x6d35c820, 0x2596f: 0x6c939220,
+-	0x25970: 0x6cc79e20, 0x25972: 0x6cb5ac20, 0x25973: 0x6d224020,
+-	0x25974: 0x6d386a20, 0x25975: 0x6d0fa620, 0x25976: 0x6cfc0420, 0x25977: 0x6ca1cc20,
+-	0x25978: 0x6c1d9a20, 0x25979: 0x6c5aa820, 0x2597a: 0x6c6f6420, 0x2597b: 0x6c6fec20,
+-	0x2597c: 0x6cb19220,
+-	// Block 0x966, offset 0x25980
+-	0x25981: 0x6c699220, 0x25983: 0x6c48c620,
+-	0x25985: 0x6ca0fe20,
+-	0x25990: 0x6cf5ce20, 0x25991: 0x6cb43220,
+-	0x259af: 0x6c61d420,
+-	0x259b6: 0x6cf1da20, 0x259b7: 0x6c071620,
+-	0x259b8: 0x6d15ea20, 0x259b9: 0x6c3e6a20, 0x259ba: 0x6cd7e420, 0x259bb: 0x6c72f020,
+-	0x259bc: 0x6c61f620, 0x259be: 0x6ca69a20,
+-	// Block 0x967, offset 0x259c0
+-	0x259c0: 0x6c07b620,
+-	0x259c5: 0x6d06c620,
+-	0x259c8: 0x6cbdd220, 0x259c9: 0x6c0ef820,
+-	0x259cc: 0x6cede620, 0x259cd: 0x6d30f620, 0x259cf: 0x6cf2e620,
+-	0x259d0: 0x6ccea420, 0x259d1: 0x6d2a8020, 0x259d2: 0x6d101820,
+-	0x259d5: 0x6cd98a20, 0x259d6: 0x6ca82020,
+-	0x259db: 0x6c098620,
+-	0x259e3: 0x6c242420,
+-	0x259e4: 0x6cbab220,
+-	0x259ea: 0x6cffe620, 0x259eb: 0x6d33d620,
+-	0x259ec: 0x6ccf1020, 0x259ef: 0x6d360820,
+-	0x259f0: 0x6cae7020,
+-	// Block 0x968, offset 0x25a00
+-	0x25a0f: 0x6c2e1e20,
+-	0x25a16: 0x6cf2f820,
+-	0x25a18: 0x6d352020, 0x25a19: 0x6c098820, 0x25a1b: 0x6c3b7020,
+-	0x25a25: 0x6c052a20,
+-	0x25a2a: 0x6cc06c20, 0x25a2b: 0x6ca63a20,
+-	0x25a2c: 0x6c0f0620, 0x25a2d: 0x6c33f220, 0x25a2f: 0x6cd2d020,
+-	0x25a30: 0x6d05a220, 0x25a31: 0x6c16ac20, 0x25a32: 0x6d05a420, 0x25a33: 0x6d128020,
+-	0x25a34: 0x6c9c5620,
+-	0x25a38: 0x6d02d620, 0x25a39: 0x6d3d6820, 0x25a3a: 0x6c3ff620,
+-	0x25a3d: 0x6cb06020, 0x25a3e: 0x6d095e20,
+-	// Block 0x969, offset 0x25a40
+-	0x25a40: 0x6d235020, 0x25a41: 0x6cfb6020, 0x25a42: 0x6d235220, 0x25a43: 0x6d213420,
+-	0x25a45: 0x6c709a20, 0x25a46: 0x6cddec20, 0x25a47: 0x6c797c20,
+-	0x25a4a: 0x6d32ce20, 0x25a4b: 0x6c9b1a20,
+-	0x25a4c: 0x6c428420,
+-	0x25a52: 0x6ca28a20, 0x25a53: 0x6cf7ea20,
+-	0x25a54: 0x6c09aa20, 0x25a56: 0x6c3ff820,
+-	0x25a5c: 0x6cfff420,
+-	0x25a60: 0x6c6f7620, 0x25a63: 0x6c468820,
+-	0x25a70: 0x6c1b2820, 0x25a71: 0x6c6f7820, 0x25a72: 0x6c6f7a20,
+-	0x25a75: 0x6ccbf820, 0x25a77: 0x6c3a0820,
+-	// Block 0x96a, offset 0x25a80
+-	0x25aab: 0x6c3e8c20,
+-	0x25aaf: 0x6ced8a20,
+-	0x25ab0: 0x6d05a620, 0x25ab1: 0x6c0e7620,
+-	// Block 0x96b, offset 0x25ac0
+-	0x25ac1: 0x6c504820, 0x25ac3: 0x6d00c420,
+-	0x25ac4: 0x6cb11820, 0x25ac5: 0x6d227420, 0x25ac7: 0x6ce4ae20,
+-	0x25ac8: 0x6cb00020, 0x25aca: 0x6cd2d220, 0x25acb: 0x6c7afc20,
+-	0x25acc: 0x6c5ef020, 0x25acf: 0x6d2be420,
+-	0x25ad0: 0x6ca3cc20, 0x25ad1: 0x6ca20620, 0x25ad3: 0x6c3ea620,
+-	0x25ad4: 0x6c326820, 0x25ad7: 0x6cd13e20,
+-	0x25ad8: 0x6c13ee20, 0x25ada: 0x6c1b3820, 0x25adb: 0x6c4b0820,
+-	0x25adc: 0x6c9f6620, 0x25add: 0x6ce0c220, 0x25ade: 0x6c044c20, 0x25adf: 0x6cbac220,
+-	0x25ae1: 0x6d3d7420, 0x25ae2: 0x6cf0ac20, 0x25ae3: 0x6d0a1e20,
+-	0x25ae5: 0x6c9e9620, 0x25ae6: 0x6d290820, 0x25ae7: 0x6d1f4a20,
+-	0x25ae9: 0x6d204c20, 0x25aeb: 0x6cccee20,
+-	0x25aec: 0x6c514220, 0x25aed: 0x6c93a220, 0x25aee: 0x6d347820,
+-	0x25af2: 0x6c6e9020, 0x25af3: 0x6d317020,
+-	0x25af6: 0x6c9b2620, 0x25af7: 0x6d1f4c20,
+-	0x25af9: 0x6cf30020, 0x25afa: 0x6c038620,
+-	0x25afd: 0x6c737820, 0x25afe: 0x6cc7b220, 0x25aff: 0x6c23f220,
+-	// Block 0x96c, offset 0x25b00
+-	0x25b00: 0x6d33fc20,
+-	0x25b09: 0x6c557620, 0x25b0a: 0x6d0f5c20,
+-	0x25b0c: 0x6c75d020, 0x25b0d: 0x6ccf1c20, 0x25b0e: 0x6c79f220,
+-	0x25b11: 0x6cb9a820,
+-	0x25b14: 0x6c9b2820,
+-	0x25b1a: 0x6ce58c20,
+-	// Block 0x96d, offset 0x25b40
+-	0x25b50: 0x6ca84a20,
+-	0x25b5f: 0x6c1b3a20,
+-	0x25b61: 0x6d047220, 0x25b63: 0x6c5d3820,
+-	0x25b66: 0x6c2b8020, 0x25b67: 0x6c80d620,
+-	0x25b69: 0x6d2a1a20, 0x25b6a: 0x6c130a20, 0x25b6b: 0x6cdd8420,
+-	0x25b6c: 0x6d412c20, 0x25b6d: 0x6cdbd020, 0x25b6f: 0x6cf9e020,
+-	0x25b71: 0x6d01e620,
+-	0x25b74: 0x6c6b1220, 0x25b75: 0x6d1f5820, 0x25b77: 0x6c46ca20,
+-	0x25b78: 0x6c451620,
+-	0x25b7c: 0x6c75d820, 0x25b7d: 0x6c5a5e20, 0x25b7e: 0x6c607420, 0x25b7f: 0x6cb3ca20,
+-	// Block 0x96e, offset 0x25b80
+-	0x25b80: 0x6cf37820, 0x25b82: 0x6d183420,
+-	0x25b85: 0x6ca3a420, 0x25b87: 0x6cc71820,
+-	0x25b88: 0x6ca40820, 0x25b8a: 0x6cb2c020, 0x25b8b: 0x6ccd9420,
+-	0x25b8c: 0x6c2dd820, 0x25b8d: 0x6c607620, 0x25b8e: 0x6c571420, 0x25b8f: 0x6c335620,
+-	0x25b90: 0x6c79a020, 0x25b91: 0x6cde8620, 0x25b93: 0x6c53c620,
+-	0x25b95: 0x6cd4f820,
+-	0x25b99: 0x6c526a20, 0x25b9a: 0x6c3bc020,
+-	0x25bb2: 0x6c79fa20,
+-	// Block 0x96f, offset 0x25bc0
+-	0x25bd9: 0x6ca70220,
+-	0x25bdd: 0x6c1e9e20,
+-	0x25be6: 0x6cbb5a20,
+-	0x25bf2: 0x6cf8bc20, 0x25bf3: 0x6c558020,
+-	0x25bf4: 0x6cd99620, 0x25bf5: 0x6cf30a20, 0x25bf7: 0x6c4d7620,
+-	0x25bf8: 0x6cc7b820, 0x25bf9: 0x6c9b3020, 0x25bfb: 0x6cca2420,
+-	0x25bfd: 0x6cf3de20, 0x25bff: 0x6d1f6420,
+-	// Block 0x970, offset 0x25c00
+-	0x25c01: 0x6cdfba20, 0x25c02: 0x6cd01220,
+-	0x25c06: 0x6cb71220,
+-	0x25c08: 0x6c4c8420, 0x25c09: 0x6cb87420, 0x25c0a: 0x6cfad020,
+-	0x25c0f: 0x6cdbd620,
+-	0x25c10: 0x6c92b020, 0x25c13: 0x6cb52620,
+-	0x25c14: 0x6c2ddc20, 0x25c17: 0x6cb64020,
+-	0x25c18: 0x6c63dc20, 0x25c19: 0x6d1f6620, 0x25c1a: 0x6cf79e20, 0x25c1b: 0x6c177a20,
+-	0x25c21: 0x6c9d7e20, 0x25c22: 0x6c911820, 0x25c23: 0x6c08f220,
+-	0x25c2a: 0x6cadec20,
+-	0x25c2e: 0x6d318e20, 0x25c2f: 0x6cd01420,
+-	0x25c30: 0x6c15da20, 0x25c31: 0x6c403a20,
+-	0x25c36: 0x6cc13820, 0x25c37: 0x6cd82220,
+-	0x25c3a: 0x6d417a20,
+-	// Block 0x971, offset 0x25c40
+-	0x25c6b: 0x6d2fd620,
+-	0x25c7d: 0x6cb01220,
+-	// Block 0x972, offset 0x25c80
+-	0x25c80: 0x6c23fa20,
+-	0x25c86: 0x6c42e220, 0x25c87: 0x6c31b620,
+-	0x25c89: 0x6c3da420, 0x25c8a: 0x6c492620, 0x25c8b: 0x6ccae620,
+-	0x25c8c: 0x6cda2a20, 0x25c8d: 0x6c65da20, 0x25c8e: 0x6cb3e020,
+-	0x25c90: 0x6c11ac20, 0x25c91: 0x6c085020, 0x25c92: 0x6ca20c20, 0x25c93: 0x6d2f7420,
+-	0x25c94: 0x6cff9a20, 0x25c96: 0x6c715c20, 0x25c97: 0x6cd50620,
+-	0x25c98: 0x6c65dc20, 0x25c99: 0x6c844e20, 0x25c9b: 0x6c203e20,
+-	0x25c9c: 0x6c81e220, 0x25c9e: 0x6c51ea20, 0x25c9f: 0x6c55bc20,
+-	0x25ca0: 0x6c473220, 0x25ca1: 0x6d2f0c20, 0x25ca2: 0x6c6b3620, 0x25ca3: 0x6cfe5620,
+-	0x25ca5: 0x6c317820, 0x25ca6: 0x6c4e3220, 0x25ca7: 0x6c63e820,
+-	0x25ca8: 0x6cfe5820, 0x25ca9: 0x6c60ae20, 0x25caa: 0x6cd56c20, 0x25cab: 0x6c812e20,
+-	0x25cac: 0x6c5f4220, 0x25cad: 0x6ccd0e20,
+-	0x25cb0: 0x6ce1ee20, 0x25cb1: 0x6d3e8e20, 0x25cb2: 0x6cd69620,
+-	0x25cb4: 0x6c60b020, 0x25cb5: 0x6c1f7820, 0x25cb6: 0x6c628020, 0x25cb7: 0x6cd01c20,
+-	0x25cb8: 0x6c8c6820, 0x25cb9: 0x6c8a2020, 0x25cbb: 0x6cca2a20,
+-	0x25cbd: 0x6c019220, 0x25cbe: 0x6cc87c20,
+-	// Block 0x973, offset 0x25cc0
+-	0x25cc0: 0x6ce37820, 0x25cc1: 0x6c28b820, 0x25cc3: 0x6c589c20,
+-	0x25cc5: 0x6cc99420,
+-	// Block 0x974, offset 0x25d00
+-	0x25d06: 0x6cc8a420, 0x25d07: 0x6cf38020,
+-	0x25d08: 0x6c729620, 0x25d09: 0x6c589e20, 0x25d0a: 0x6c838620, 0x25d0b: 0x6c92dc20,
+-	0x25d0e: 0x6cdfbe20, 0x25d0f: 0x6d2b9620,
+-	0x25d13: 0x6cb9ca20,
+-	0x25d17: 0x6cf6d820,
+-	0x25d21: 0x6c22a220, 0x25d22: 0x6ccf2620,
+-	0x25d27: 0x6cc99620,
+-	0x25d2a: 0x6c99bc20, 0x25d2b: 0x6cc1da20,
+-	0x25d2d: 0x6c0f7a20, 0x25d2e: 0x6c41f020,
+-	0x25d30: 0x6cbcea20, 0x25d31: 0x6c739a20, 0x25d32: 0x6c290e20, 0x25d33: 0x6c16cc20,
+-	0x25d34: 0x6d0fde20, 0x25d35: 0x6c518020, 0x25d37: 0x6c5f5c20,
+-	0x25d39: 0x6c0df820, 0x25d3b: 0x6c9a3020,
+-	0x25d3f: 0x6c33b820,
+-	// Block 0x975, offset 0x25d40
+-	0x25d40: 0x6c02b020, 0x25d41: 0x6c6dd820, 0x25d42: 0x6c92f420, 0x25d43: 0x6c9e6620,
+-	0x25d44: 0x6c2d8a20, 0x25d45: 0x6c51f220, 0x25d47: 0x6c650420,
+-	0x25d4a: 0x6c575e20, 0x25d4b: 0x6c466220,
+-	0x25d4e: 0x6c92f620, 0x25d4f: 0x6c3f0a20,
+-	0x25d50: 0x6c5b7220, 0x25d52: 0x6d2b6620,
+-	0x25d54: 0x6c6d6220, 0x25d55: 0x6cd83420, 0x25d56: 0x6cc43e20,
+-	0x25d5c: 0x6c28cc20, 0x25d5e: 0x6ced9e20, 0x25d5f: 0x6c0b5620,
+-	0x25d64: 0x6c63ee20,
+-	0x25d6b: 0x6c284e20,
+-	0x25d6c: 0x6c6f8a20, 0x25d6d: 0x6cfb9c20, 0x25d6e: 0x6c0f7c20,
+-	// Block 0x976, offset 0x25d80
+-	0x25d8f: 0x6cfa0020,
+-	0x25d91: 0x6c0c3220,
+-	0x25d95: 0x6cb3a820,
+-	0x25d98: 0x6ccae820, 0x25d99: 0x6c076620, 0x25d9a: 0x6ccc8020, 0x25d9b: 0x6cf02e20,
+-	0x25d9d: 0x6c123e20, 0x25d9e: 0x6c92f820,
+-	0x25da9: 0x6c28ce20, 0x25dab: 0x6c47e820,
+-	0x25dac: 0x6d289e20, 0x25dad: 0x6c055820, 0x25dae: 0x6c423820,
+-	0x25db1: 0x6c175420, 0x25db2: 0x6c62ae20, 0x25db3: 0x6c8ab620,
+-	0x25db5: 0x6cbf7e20, 0x25db6: 0x6c66f420, 0x25db7: 0x6c930a20,
+-	0x25db8: 0x6c32a620, 0x25db9: 0x6cdb8a20, 0x25dba: 0x6d116020, 0x25dbb: 0x6d1b1620,
+-	0x25dbd: 0x6cdec220, 0x25dbe: 0x6d116220, 0x25dbf: 0x6c6de020,
+-	// Block 0x977, offset 0x25dc0
+-	0x25dc0: 0x6c1ebc20, 0x25dc1: 0x6c3f1220, 0x25dc2: 0x6d25c220, 0x25dc3: 0x6ccebc20,
+-	0x25dc5: 0x6c0e3620, 0x25dc6: 0x6c299e20, 0x25dc7: 0x6cd3f820,
+-	0x25dca: 0x6c916420, 0x25dcb: 0x6cbcf220,
+-	0x25dcc: 0x6c955c20, 0x25dcd: 0x6cb3ae20, 0x25dcf: 0x6c9b7a20,
+-	0x25dd0: 0x6c6b6620, 0x25dd3: 0x6c5f7220,
+-	0x25dd6: 0x6c930c20,
+-	// Block 0x978, offset 0x25e00
+-	0x25e04: 0x6c172a20, 0x25e05: 0x6c9f0020, 0x25e06: 0x6c9b7c20, 0x25e07: 0x6c660220,
+-	0x25e0a: 0x6c114020,
+-	0x25e0c: 0x6cdb5220,
+-	0x25e14: 0x6c51fe20, 0x25e15: 0x6cc9aa20, 0x25e17: 0x6d3eae20,
+-	0x25e18: 0x6c795e20, 0x25e19: 0x6c452220, 0x25e1a: 0x6cd83a20,
+-	0x25e20: 0x6ce3a420, 0x25e21: 0x6d2e8e20, 0x25e22: 0x6d026420, 0x25e23: 0x6cd70020,
+-	0x25e24: 0x6c1bcc20, 0x25e25: 0x6d1ec620, 0x25e26: 0x6c91f820, 0x25e27: 0x6c9c1a20,
+-	0x25e28: 0x6c8b6020, 0x25e29: 0x6cd8f620,
+-	0x25e2c: 0x6cf71820, 0x25e2d: 0x6c38da20, 0x25e2e: 0x6c3db820, 0x25e2f: 0x6cd08820,
+-	0x25e30: 0x6ce3a620, 0x25e31: 0x6c14a420, 0x25e32: 0x6d270620,
+-	0x25e34: 0x6c3dba20, 0x25e35: 0x6c670220, 0x25e36: 0x6c2cb020,
+-	0x25e3a: 0x6d011a20, 0x25e3b: 0x6c281220,
+-	0x25e3f: 0x6d34b020,
+-	// Block 0x979, offset 0x25e40
+-	0x25e43: 0x6d075620,
+-	0x25e48: 0x6ca89820, 0x25e49: 0x6c397420, 0x25e4a: 0x6c9b8820, 0x25e4b: 0x6c9fd420,
+-	0x25e7e: 0x6c90d220, 0x25e7f: 0x6c31e820,
+-	// Block 0x97a, offset 0x25e80
+-	0x25e81: 0x6d2e9620, 0x25e82: 0x6c671020, 0x25e83: 0x6c4f2e20,
+-	0x25e84: 0x6c28e220, 0x25e85: 0x6ccbb220, 0x25e86: 0x6c671220, 0x25e87: 0x6ce03e20,
+-	0x25e88: 0x6c696c20, 0x25e89: 0x6cb34220, 0x25e8b: 0x6cb2e420,
+-	0x25e8d: 0x6d3bf820, 0x25e8f: 0x6c8a4c20,
+-	0x25e90: 0x6d3f6620, 0x25e92: 0x6d3dd820,
+-	0x25e94: 0x6c56de20,
+-	0x25e99: 0x6cf92020, 0x25e9b: 0x6c9b9620,
+-	0x25e9c: 0x6c72ba20, 0x25e9d: 0x6c9f0c20, 0x25e9e: 0x6cfbcc20,
+-	0x25ea0: 0x6c7d3820, 0x25ea1: 0x6c9b9820, 0x25ea2: 0x6c653420,
+-	0x25ea6: 0x6caa0a20,
+-	0x25ea8: 0x6c2cb220, 0x25ea9: 0x6ccad220,
+-	// Block 0x97b, offset 0x25ec0
+-	0x25ecf: 0x6c1f8c20,
+-	0x25ed0: 0x6d34bc20, 0x25ed1: 0x6cb9e220, 0x25ed2: 0x6c93c420,
+-	0x25ed4: 0x6d3ddc20,
+-	0x25ed8: 0x6d42b020, 0x25ed9: 0x6c4e4820, 0x25eda: 0x6cdc1820, 0x25edb: 0x6c46e220,
+-	0x25edd: 0x6c1e3c20, 0x25ede: 0x6c62da20, 0x25edf: 0x6d194820,
+-	0x25ee0: 0x6d21f020,
+-	0x25ee8: 0x6caa0c20, 0x25ee9: 0x6ca66420, 0x25eea: 0x6cc93620,
+-	0x25eee: 0x6c8c0820,
+-	0x25ef1: 0x6ca93820,
+-	// Block 0x97c, offset 0x25f00
+-	0x25f0d: 0x6cbc1620, 0x25f0e: 0x6d117c20, 0x25f0f: 0x6c409c20,
+-	0x25f10: 0x6cd6b620, 0x25f11: 0x6c7d3e20, 0x25f12: 0x6cc21220, 0x25f13: 0x6c304a20,
+-	0x25f14: 0x6cd58a20,
+-	0x25f1a: 0x6c84c020, 0x25f1b: 0x6c719220,
+-	0x25f1c: 0x6cc8bc20,
+-	0x25f20: 0x6d2c6c20,
+-	0x25f24: 0x6cff5420,
+-	0x25f38: 0x6c9ae220, 0x25f39: 0x6cd29820, 0x25f3a: 0x6c2cfc20, 0x25f3b: 0x6c878e20,
+-	0x25f3c: 0x6c2b0420, 0x25f3d: 0x6d29c420, 0x25f3f: 0x6c958420,
+-	// Block 0x97d, offset 0x25f40
+-	0x25f40: 0x6c11c620, 0x25f43: 0x6c023c20,
+-	0x25f46: 0x6c663620,
+-	0x25f48: 0x6c2e5020, 0x25f4b: 0x6d1cd820,
+-	0x25f56: 0x6d197220, 0x25f57: 0x6c294620,
+-	0x25f58: 0x6caa1220, 0x25f5a: 0x6d272620,
+-	0x25f6e: 0x6c855620, 0x25f6f: 0x6c84e220,
+-	0x25f70: 0x6c56f620, 0x25f72: 0x6d206420,
+-	0x25f7a: 0x6ca48420,
+-	// Block 0x97e, offset 0x25f80
+-	0x25f82: 0x6c194a20,
+-	0x25f89: 0x6c3c9220, 0x25f8a: 0x6c0cd220,
+-	0x25f8f: 0x6c97d820,
+-	0x25f90: 0x6c424a20, 0x25f91: 0x6c5e6020, 0x25f93: 0x6c241c20,
+-	0x25f95: 0x6d200020,
+-	0x25f98: 0x6d206620,
+-	0x25f9c: 0x6d057c20,
+-	0x25fa1: 0x6d06b020, 0x25fa2: 0x6c561820, 0x25fa3: 0x6c915020,
+-	0x25fa5: 0x6cf9b820, 0x25fa6: 0x6d177420,
+-	0x25fae: 0x6c561e20, 0x25faf: 0x6c569020,
+-	0x25fb0: 0x6d3f0a20,
+-	0x25fb7: 0x6c458c20,
+-	0x25fb8: 0x6ce99220, 0x25fb9: 0x6cf36a20, 0x25fba: 0x6c8d2020, 0x25fbb: 0x6c472020,
+-	0x25fbc: 0x6d37be20,
+-	// Block 0x97f, offset 0x25fc0
+-	0x25fc4: 0x6c915820,
+-	0x25fc8: 0x6d412e20,
+-	0x25fcc: 0x6ce76a20, 0x25fcd: 0x6cf97020, 0x25fce: 0x6c515c20,
+-	0x25fd3: 0x6d26e220,
+-	0x25fd9: 0x6ca40c20, 0x25fda: 0x6c0f4820, 0x25fdb: 0x6c54fa20,
+-	0x25fdc: 0x6cb7e220, 0x25fdd: 0x6cd53a20, 0x25fde: 0x6cbadc20, 0x25fdf: 0x6d38ae20,
+-	0x25fe0: 0x6d122620, 0x25fe1: 0x6c473420,
+-	0x25fe5: 0x6c049e20, 0x25fe6: 0x6c76ec20,
+-	0x25fee: 0x6c517620, 0x25fef: 0x6c628420,
+-	0x25ff0: 0x6c55be20, 0x25ff1: 0x6d0cde20,
+-	0x25ff6: 0x6c212020, 0x25ff7: 0x6c2f8620,
+-	0x25ff8: 0x6cbfce20, 0x25ff9: 0x6c543620,
+-	0x25ffc: 0x6c507420, 0x25fff: 0x6d413220,
+-	// Block 0x980, offset 0x26000
+-	0x26001: 0x6cfbb820,
+-	0x26004: 0x6cfa5220, 0x26005: 0x6cf91820,
+-	0x26008: 0x6ccb8420,
+-	0x2600c: 0x6c445a20, 0x2600d: 0x6cf92220,
+-	0x26011: 0x6c445e20,
+-	0x26014: 0x6c93c620, 0x26016: 0x6c446020, 0x26017: 0x6c78ea20,
+-	0x26019: 0x6cd48a20, 0x2601a: 0x6d3b5020,
+-	0x2601c: 0x6ce2de20, 0x2601d: 0x6d0b7820, 0x2601e: 0x6ca67c20,
+-	0x26026: 0x6c95e220, 0x26027: 0x6cdbae20,
+-	0x2602a: 0x6c159e20,
+-	0x2602d: 0x6cf4cc20, 0x2602f: 0x6d208220,
+-	0x26039: 0x6d2a4420, 0x2603b: 0x6d174420,
+-	0x2603c: 0x6cf5d220, 0x2603d: 0x6c533620, 0x2603e: 0x6cc2ce20, 0x2603f: 0x6cee0c20,
+-	// Block 0x981, offset 0x26040
+-	0x26040: 0x6c1b9820, 0x26041: 0x6cf87420, 0x26042: 0x6ce4e020, 0x26043: 0x6d27e420,
+-	0x26045: 0x6d13e220, 0x26046: 0x6c600620, 0x26047: 0x6c5aaa20,
+-	0x26048: 0x6c3d1620, 0x2604a: 0x6c3f5420,
+-	0x2604d: 0x6c600820, 0x2604e: 0x6d080a20,
+-	0x26051: 0x6cdf6c20, 0x26053: 0x6c324e20,
+-	0x26057: 0x6d255620,
+-	0x2605b: 0x6c2c3220,
+-	0x2605e: 0x6d3a6620, 0x2605f: 0x6cdf0620,
+-	0x26061: 0x6cc70c20, 0x26062: 0x6d090a20, 0x26063: 0x6d232020,
+-	0x26064: 0x6c394e20, 0x26065: 0x6c06ca20, 0x26067: 0x6cc24420,
+-	0x26069: 0x6c109620, 0x2606a: 0x6c635420, 0x2606b: 0x6d2c2c20,
+-	0x2606d: 0x6caa5a20, 0x2606e: 0x6ccf1420,
+-	0x26072: 0x6c860220,
+-	// Block 0x982, offset 0x26080
+-	0x26084: 0x6c4af620, 0x26085: 0x6c48de20, 0x26087: 0x6c276420,
+-	0x2608f: 0x6c40fa20,
+-	0x26092: 0x6c22cc20,
+-	0x26094: 0x6d0d9220, 0x26095: 0x6cd92220, 0x26096: 0x6cd38820,
+-	0x26098: 0x6c7a9c20, 0x26099: 0x6d352e20, 0x2609a: 0x6ce75020, 0x2609b: 0x6cc19620,
+-	0x2609c: 0x6c364220, 0x2609e: 0x6d03ea20, 0x2609f: 0x6cc7b020,
+-	0x260a0: 0x6d213820, 0x260a3: 0x6d17c020,
+-	0x260a4: 0x6d17c220, 0x260a5: 0x6d06e420, 0x260a6: 0x6c3d2c20, 0x260a7: 0x6c43f820,
+-	0x260ac: 0x6c512a20, 0x260ad: 0x6d19e820, 0x260af: 0x6c53be20,
+-	0x260b1: 0x6c349820,
+-	0x260bd: 0x6d03ec20, 0x260be: 0x6c38a220,
+-	// Block 0x983, offset 0x260c0
+-	0x260c9: 0x6cb50020, 0x260ca: 0x6ccc0220,
+-	0x260cc: 0x6c326a20, 0x260cd: 0x6c2c7220, 0x260ce: 0x6c83fa20, 0x260cf: 0x6d180620,
+-	0x260d0: 0x6cf78c20, 0x260d1: 0x6c451420, 0x260d2: 0x6ce75820, 0x260d3: 0x6c77c020,
+-	0x260d4: 0x6c53c420, 0x260d5: 0x6c7db820, 0x260d6: 0x6ca84c20, 0x260d7: 0x6c1b3c20,
+-	0x260d8: 0x6ce34e20, 0x260da: 0x6ce75a20,
+-	0x260e0: 0x6c83fc20, 0x260e1: 0x6ca35c20,
+-	0x260f1: 0x6d2d8220, 0x260f2: 0x6c06cc20,
+-	// Block 0x984, offset 0x26100
+-	0x26101: 0x6ce59220, 0x26103: 0x6d289420,
+-	0x26104: 0x6c367420, 0x26105: 0x6cd47620, 0x26106: 0x6c798820, 0x26107: 0x6caeb820,
+-	0x26108: 0x6c402020, 0x26109: 0x6c929820, 0x2610a: 0x6d01e820, 0x2610b: 0x6d01ea20,
+-	0x2610c: 0x6d04e820, 0x2610d: 0x6c929a20, 0x2610e: 0x6ce50a20, 0x2610f: 0x6cde8820,
+-	0x26110: 0x6c22da20, 0x26111: 0x6cc12a20, 0x26113: 0x6c402220,
+-	0x26114: 0x6d340620, 0x26116: 0x6d01ec20, 0x26117: 0x6d408220,
+-	0x26118: 0x6c3abe20, 0x26119: 0x6c9f7420, 0x2611a: 0x6d038c20,
+-	0x2611d: 0x6ce76c20, 0x2611e: 0x6cb60220,
+-	0x26120: 0x6cb15c20, 0x26122: 0x6cdc5620, 0x26123: 0x6c37a020,
+-	0x26127: 0x6c562c20,
+-	0x2613b: 0x6cd92e20,
+-	0x2613d: 0x6c0cb020, 0x2613e: 0x6c2f6620, 0x2613f: 0x6c04d220,
+-	// Block 0x985, offset 0x26140
+-	0x26140: 0x6cd1e220, 0x26141: 0x6d01ee20, 0x26142: 0x6cff9420, 0x26143: 0x6c3a6620,
+-	0x26152: 0x6c202620, 0x26153: 0x6cd67020,
+-	0x26154: 0x6d10b220, 0x26155: 0x6c74a220, 0x26156: 0x6cd14820,
+-	0x26158: 0x6d1eb220, 0x26159: 0x6c396c20,
+-	0x2615c: 0x6c7c9a20, 0x2615d: 0x6c2c9820, 0x2615f: 0x6c990220,
+-	0x26160: 0x6c6b2420, 0x26162: 0x6d0cc820,
+-	0x26165: 0x6ceeb420,
+-	0x26168: 0x6cca7220, 0x26169: 0x6c6b2620, 0x2616a: 0x6d219220, 0x2616b: 0x6cf0c820,
+-	0x2616c: 0x6c369220, 0x2616d: 0x6cc31220, 0x2616e: 0x6c6f2e20, 0x2616f: 0x6c3cba20,
+-	0x26170: 0x6c8fa620, 0x26171: 0x6c2ee220, 0x26172: 0x6cb12420,
+-	0x26174: 0x6c891420, 0x26175: 0x6c559820, 0x26176: 0x6c93fa20,
+-	0x2617f: 0x6c2d7a20,
+-	// Block 0x986, offset 0x26180
+-	0x26183: 0x6c255e20,
+-	0x26184: 0x6ca1e420,
+-	0x26195: 0x6cedea20, 0x26196: 0x6c72fe20, 0x26197: 0x6c782e20,
+-	0x26198: 0x6d0cca20, 0x26199: 0x6c693420,
+-	0x261a1: 0x6c45b020, 0x261a3: 0x6cc6b620,
+-	0x261a4: 0x6cdce220, 0x261a5: 0x6ccdb620,
+-	0x261a8: 0x6c1b5420, 0x261aa: 0x6cb65220, 0x261ab: 0x6cdd9820,
+-	0x261ad: 0x6d134420, 0x261ae: 0x6d2a5420, 0x261af: 0x6cc39620,
+-	0x261b0: 0x6d2e1820, 0x261b1: 0x6c035a20, 0x261b2: 0x6d40d620, 0x261b3: 0x6cdd9a20,
+-	0x261b4: 0x6d309220, 0x261b5: 0x6cf8e820, 0x261b7: 0x6c1eec20,
+-	0x261b8: 0x6c694820, 0x261b9: 0x6d41d220, 0x261ba: 0x6c43aa20, 0x261bb: 0x6cf52420,
+-	0x261be: 0x6c94c020, 0x261bf: 0x6c60b420,
+-	// Block 0x987, offset 0x261c0
+-	0x261c2: 0x6d00ec20, 0x261c3: 0x6d00ee20,
+-	0x261c6: 0x6c30f620,
+-	0x261cb: 0x6cbfc620,
+-	0x261d1: 0x6cb2d020, 0x261d3: 0x6c8ea420,
+-	0x261e5: 0x6c6b3820, 0x261e7: 0x6c5c4020,
+-	0x261eb: 0x6ccc7a20,
+-	0x261f8: 0x6d34a620, 0x261f9: 0x6c00e620, 0x261fa: 0x6d074a20, 0x261fb: 0x6c0a7820,
+-	0x261fd: 0x6d126820, 0x261fe: 0x6ca6d820, 0x261ff: 0x6d3a2e20,
+-	// Block 0x988, offset 0x26200
+-	0x26201: 0x6cdb4220, 0x26203: 0x6d010220,
+-	0x26204: 0x6d241820, 0x26205: 0x6cc14820,
+-	0x26208: 0x6d40e020, 0x26209: 0x6d341820, 0x2620a: 0x6d2ee420, 0x2620b: 0x6c94c420,
+-	0x2620c: 0x6cf03020, 0x2620d: 0x6c1ce820, 0x2620e: 0x6c9d9620,
+-	0x26210: 0x6c5f5e20, 0x26212: 0x6cdb4420, 0x26213: 0x6d12b620,
+-	0x26214: 0x6cf7ac20, 0x26215: 0x6ce96420, 0x26216: 0x6c886c20, 0x26217: 0x6d082e20,
+-	0x26219: 0x6cf52c20,
+-	0x2621f: 0x6c990c20,
+-	0x2622c: 0x6c538e20, 0x2622f: 0x6c94c620,
+-	0x26230: 0x6c31ce20, 0x26231: 0x6c23ba20, 0x26232: 0x6c152e20, 0x26233: 0x6c92fc20,
+-	0x26234: 0x6cdb4620,
+-	// Block 0x989, offset 0x26240
+-	0x26240: 0x6c94c820,
+-	0x26246: 0x6d37d220, 0x26247: 0x6c847420,
+-	0x26248: 0x6c3ae220, 0x2624a: 0x6c6e3820, 0x2624b: 0x6c7d2c20,
+-	0x2624c: 0x6d18f420, 0x2624d: 0x6c576620, 0x2624e: 0x6c258020,
+-	0x26250: 0x6d243c20, 0x26251: 0x6c083620, 0x26252: 0x6cea3020, 0x26253: 0x6cd58020,
+-	0x26254: 0x6c27a220, 0x26255: 0x6cf38a20, 0x26256: 0x6c22ea20, 0x26257: 0x6ca95e20,
+-	0x26258: 0x6c29a020, 0x26259: 0x6d40ee20, 0x2625a: 0x6c4e4220,
+-	0x2625c: 0x6cb02e20, 0x2625d: 0x6c204620,
+-	0x26260: 0x6c328620, 0x26261: 0x6cabe020,
+-	0x26264: 0x6d39d620, 0x26266: 0x6d011620, 0x26267: 0x6d30ac20,
+-	0x26268: 0x6cbcf420, 0x26269: 0x6d07dc20, 0x2626b: 0x6ccb0820,
+-	// Block 0x98a, offset 0x26280
+-	0x26280: 0x6c0a9620, 0x26282: 0x6c407c20,
+-	0x26288: 0x6c86d820,
+-	0x2628e: 0x6c359620,
+-	0x26290: 0x6d126e20, 0x26291: 0x6cd58420, 0x26293: 0x6ccb8620,
+-	0x26295: 0x6cb54a20, 0x26296: 0x6c4cf220, 0x26297: 0x6ccb8820,
+-	0x26299: 0x6c408620, 0x2629a: 0x6c990e20,
+-	0x2629c: 0x6c827620, 0x2629d: 0x6d2db420,
+-	0x262a8: 0x6c14a620,
+-	0x262ad: 0x6cf0fc20,
+-	0x262bd: 0x6c827820, 0x262bf: 0x6d2b6c20,
+-	// Block 0x98b, offset 0x262c0
+-	0x262c0: 0x6d1c0e20, 0x262c1: 0x6c010220, 0x262c2: 0x6d005c20,
+-	0x262c4: 0x6c0aaa20,
+-	0x262cb: 0x6c155a20,
+-	0x262ce: 0x6cb03620, 0x262cf: 0x6c23c220,
+-	0x262d0: 0x6c8b6620, 0x262d1: 0x6cb69c20, 0x262d3: 0x6c62d420,
+-	0x262d4: 0x6c6df220, 0x262d5: 0x6c302820, 0x262d6: 0x6c3a4620, 0x262d7: 0x6d159220,
+-	0x262d8: 0x6ce97220,
+-	0x262e8: 0x6c9bf620, 0x262e9: 0x6c11be20, 0x262ea: 0x6d0b3c20,
+-	0x262f2: 0x6d103c20,
+-	0x262f4: 0x6ce6a220,
+-	0x262f8: 0x6d34be20, 0x262fa: 0x6d027c20, 0x262fb: 0x6c942220,
+-	0x262fd: 0x6c875420, 0x262ff: 0x6c991620,
+-	// Block 0x98c, offset 0x26300
+-	0x26302: 0x6cfa1820,
+-	0x26305: 0x6cda4420,
+-	0x26316: 0x6cda6c20, 0x26317: 0x6d097e20,
+-	0x2631d: 0x6c877a20, 0x2631e: 0x6d25d820,
+-	0x26321: 0x6d2e4020, 0x26323: 0x6cdef220,
+-	0x26324: 0x6d083a20, 0x26325: 0x6cf12020, 0x26326: 0x6d139620, 0x26327: 0x6cad1a20,
+-	0x26328: 0x6c991820, 0x26329: 0x6ce3b620, 0x2632a: 0x6cb22a20,
+-	0x2632c: 0x6c328e20, 0x2632d: 0x6cc0a820, 0x2632e: 0x6d162c20,
+-	0x26333: 0x6ceb6020,
+-	0x26334: 0x6c14aa20, 0x26337: 0x6c6d7620,
+-	0x2633c: 0x6c35aa20,
+-	// Block 0x98d, offset 0x26340
+-	0x26343: 0x6c157420,
+-	0x26344: 0x6d1c4420, 0x26345: 0x6c8dae20, 0x26347: 0x6cfc5e20,
+-	0x26349: 0x6cb55a20, 0x2634b: 0x6d272220,
+-	0x2634c: 0x6c94ce20, 0x2634d: 0x6d1cda20, 0x2634e: 0x6cc21a20,
+-	0x26352: 0x6c3a7820, 0x26353: 0x6d3eca20,
+-	0x26359: 0x6cbe6220,
+-	0x2635d: 0x6ca94020, 0x2635e: 0x6cf13220, 0x2635f: 0x6cd6c220,
+-	0x26361: 0x6c40a420,
+-	0x26364: 0x6ca1aa20, 0x26365: 0x6ca1ac20, 0x26366: 0x6ceb6820, 0x26367: 0x6c14ae20,
+-	0x26368: 0x6d2a1220,
+-	0x2636e: 0x6c84da20, 0x2636f: 0x6c84e420,
+-	0x26371: 0x6cfa2020, 0x26372: 0x6c733420,
+-	0x26374: 0x6ca41a20, 0x26375: 0x6c9db420,
+-	0x26378: 0x6c5a3e20, 0x2637a: 0x6cd6f620,
+-	0x2637c: 0x6d066420, 0x2637f: 0x6c3a7a20,
+-	// Block 0x98e, offset 0x26380
+-	0x26381: 0x6d029420,
+-	0x26386: 0x6cdefa20, 0x26387: 0x6d1e6a20,
+-	0x26389: 0x6d2e4420,
+-	0x26391: 0x6cbb3420, 0x26392: 0x6ca46a20,
+-	0x26394: 0x6c8c9420,
+-	0x26398: 0x6c948220, 0x26399: 0x6cfc6e20, 0x2639a: 0x6c3f2c20,
+-	0x2639c: 0x6c8df820,
+-	0x263a0: 0x6ccadc20, 0x263a2: 0x6c5ca620,
+-	0x263a8: 0x6ce66020, 0x263aa: 0x6cbe7020,
+-	0x263ac: 0x6c598a20, 0x263ae: 0x6c01b220,
+-	0x263b5: 0x6c97c220, 0x263b7: 0x6ca6b220,
+-	0x263bb: 0x6c4c8020,
+-	0x263bc: 0x6cab8820, 0x263bf: 0x6cfe4620,
+-	// Block 0x98f, offset 0x263c0
+-	0x263c1: 0x6c6c5620,
+-	0x263c6: 0x6d32f620,
+-	0x263c8: 0x6ca2cc20, 0x263cb: 0x6cca5e20,
+-	0x263cc: 0x6c56d020, 0x263ce: 0x6d40f020, 0x263cf: 0x6c5b7620,
+-	0x263d2: 0x6c5f7420,
+-	0x263d6: 0x6d138a20,
+-	0x263e6: 0x6d03de20,
+-	0x263e9: 0x6c7e6c20, 0x263ea: 0x6d232220, 0x263eb: 0x6c745820,
+-	0x263f1: 0x6cd5da20, 0x263f2: 0x6d32d620,
+-	0x263f4: 0x6d1e4e20, 0x263f6: 0x6c439c20,
+-	0x263f8: 0x6c66ae20, 0x263f9: 0x6d034820,
+-	0x263fc: 0x6c5aec20, 0x263ff: 0x6cd67820,
+-	// Block 0x990, offset 0x26400
+-	0x26402: 0x6c1cf020, 0x26403: 0x6c4f8a20,
+-	0x26408: 0x6c8a6420,
+-	0x2640d: 0x6c674a20, 0x2640f: 0x6c456c20,
+-	0x26411: 0x6d3d3020,
+-	0x26417: 0x6cb6de20,
+-	0x2641c: 0x6cb8b820, 0x2641e: 0x6c30e220, 0x2641f: 0x6cb30220,
+-	0x26422: 0x6c567a20,
+-	0x26425: 0x6ca98c20, 0x26427: 0x6cb76420,
+-	0x26428: 0x6c2db420, 0x26429: 0x6c2db620, 0x2642b: 0x6c85b220,
+-	0x2642e: 0x6d046220,
+-	0x2643d: 0x6ca2da20, 0x2643f: 0x6d32a620,
+-	// Block 0x991, offset 0x26440
+-	0x26440: 0x6c7e6e20, 0x26441: 0x6d35cc20, 0x26443: 0x6c35b220,
+-	0x26444: 0x6c0e6620, 0x26445: 0x6cb30620, 0x26446: 0x6d058420, 0x26447: 0x6d1e7a20,
+-	0x26448: 0x6c223c20, 0x26449: 0x6c85e220,
+-	0x2644c: 0x6cad5820, 0x2644f: 0x6d053a20,
+-	0x2645b: 0x6cb4a820,
+-	0x2645d: 0x6c17e420, 0x2645e: 0x6cb78420,
+-	0x26461: 0x6d177620, 0x26463: 0x6ce31c20,
+-	0x26464: 0x6c348820, 0x26465: 0x6c8f9020, 0x26467: 0x6c668020,
+-	0x2646d: 0x6d2e6020, 0x2646e: 0x6d261220,
+-	0x26476: 0x6d210820,
+-	0x26478: 0x6c44ca20, 0x2647a: 0x6c546c20,
+-	0x2647e: 0x6cb6f820,
+-	// Block 0x992, offset 0x26480
+-	0x26480: 0x6ca28c20, 0x26481: 0x6c592a20, 0x26482: 0x6c906a20, 0x26483: 0x6cf89420,
+-	0x26484: 0x6c356c20, 0x26485: 0x6c80fe20, 0x26486: 0x6c3aae20, 0x26487: 0x6ced2820,
+-	0x26489: 0x6c259620, 0x2648b: 0x6caea420,
+-	0x2648f: 0x6c262c20,
+-	0x26490: 0x6cf22420,
+-	0x264a1: 0x6c430620,
+-	0x264a5: 0x6c254820,
+-	0x264a8: 0x6cb7a620, 0x264a9: 0x6c83fe20, 0x264aa: 0x6cbcc820, 0x264ab: 0x6cba6020,
+-	0x264ac: 0x6c798220, 0x264ad: 0x6c082220, 0x264af: 0x6cd46c20,
+-	0x264b7: 0x6ceea220,
+-	// Block 0x993, offset 0x264c0
+-	0x264c4: 0x6cccf220,
+-	0x264cf: 0x6d3e6e20,
+-	0x264d2: 0x6ce40c20, 0x264d3: 0x6cb90e20,
+-	0x264d4: 0x6c31ac20, 0x264d7: 0x6ce8dc20,
+-	0x264da: 0x6ceeaa20,
+-	0x264de: 0x6c558420, 0x264df: 0x6d038e20,
+-	0x264e1: 0x6ccd0220, 0x264e2: 0x6d354a20,
+-	0x264e7: 0x6c1bb820,
+-	0x264f8: 0x6d394a20, 0x264f9: 0x6cf23620, 0x264fa: 0x6c1b4c20, 0x264fb: 0x6cdd9420,
+-	0x264fc: 0x6d020220, 0x264fe: 0x6c78d220,
+-	// Block 0x994, offset 0x26500
+-	0x26501: 0x6ccca220, 0x26502: 0x6cd1f220, 0x26503: 0x6cd47820,
+-	0x26505: 0x6c6bfc20,
+-	0x26509: 0x6c431c20, 0x2650a: 0x6c93b220,
+-	0x26514: 0x6d020420,
+-	0x2651a: 0x6d354c20,
+-	0x2651e: 0x6c978220,
+-	0x26520: 0x6cd67420, 0x26521: 0x6c78da20, 0x26523: 0x6c2dfe20,
+-	0x26524: 0x6d141a20, 0x26526: 0x6cdb2420, 0x26527: 0x6c206420,
+-	0x26531: 0x6c256820, 0x26532: 0x6cebb220,
+-	0x26535: 0x6d022020,
+-	0x2653d: 0x6d082620,
+-	// Block 0x995, offset 0x26540
+-	0x26542: 0x6c51f420, 0x26543: 0x6c74ce20,
+-	0x26546: 0x6ce43020, 0x26547: 0x6c3ada20,
+-	0x26549: 0x6d355620, 0x2654a: 0x6cd3e820, 0x2654b: 0x6ce9c620,
+-	0x2654e: 0x6c1cea20,
+-	0x26550: 0x6ce43220, 0x26551: 0x6d2e8820, 0x26552: 0x6c527820,
+-	0x26554: 0x6cc1de20, 0x26555: 0x6cef4220, 0x26557: 0x6c33ba20,
+-	0x26558: 0x6c067220,
+-	0x2655c: 0x6c8a2c20,
+-	0x26564: 0x6cd83620,
+-	0x2656a: 0x6c0c8420, 0x2656b: 0x6d023420,
+-	0x2656c: 0x6c0cfc20, 0x2656e: 0x6c23d820,
+-	0x26572: 0x6c72ac20, 0x26573: 0x6c518820,
+-	0x26577: 0x6c7d3020,
+-	0x26578: 0x6d1dc820,
+-	// Block 0x996, offset 0x26580
+-	0x26580: 0x6cd62220,
+-	0x2658d: 0x6ca89a20, 0x2658f: 0x6d21da20,
+-	0x26590: 0x6d3dca20, 0x26591: 0x6c9b8c20, 0x26592: 0x6c55f220,
+-	0x26595: 0x6c8b6220,
+-	0x2659d: 0x6c6a4020, 0x2659e: 0x6d048220,
+-	0x265a3: 0x6d0e0020,
+-	0x265a9: 0x6c6b7a20, 0x265aa: 0x6c7eb820, 0x265ab: 0x6cd62e20,
+-	0x265ac: 0x6c6b7c20, 0x265ad: 0x6c828220,
+-	0x265b0: 0x6d40fc20, 0x265b2: 0x6cd40420,
+-	0x265b8: 0x6cef6c20, 0x265b9: 0x6c318620, 0x265ba: 0x6cdb6420,
+-	// Block 0x997, offset 0x265c0
+-	0x265c3: 0x6d012e20,
+-	0x265c4: 0x6cc4f620,
+-	0x265cc: 0x6c964e20,
+-	0x265d1: 0x6cb96420,
+-	0x265d8: 0x6ca48620, 0x265d9: 0x6c8dec20,
+-	0x265dc: 0x6c630620,
+-	0x265e0: 0x6ca03e20, 0x265e3: 0x6c476220,
+-	0x265e8: 0x6d080c20,
+-	0x265ec: 0x6d058e20,
+-	0x265f1: 0x6c0f3620,
+-	0x265fc: 0x6ceebc20,
+-	// Block 0x998, offset 0x26600
+-	0x26602: 0x6c7a6e20,
+-	0x26606: 0x6cecf020,
+-	0x26608: 0x6c143c20, 0x2660a: 0x6c996820, 0x2660b: 0x6c789a20,
+-	0x2660e: 0x6c22c420,
+-	0x26612: 0x6cfcbc20, 0x26613: 0x6ca11620,
+-	0x2661a: 0x6c5cc420, 0x2661b: 0x6c162c20,
+-	0x2661c: 0x6cd1c620, 0x2661d: 0x6d31dc20, 0x2661e: 0x6c364420, 0x2661f: 0x6c9c5a20,
+-	0x26621: 0x6cd1c820, 0x26622: 0x6cc11420, 0x26623: 0x6cd4e420,
+-	0x26625: 0x6c220420, 0x26626: 0x6d0d9420,
+-	0x26629: 0x6c54dc20, 0x2662a: 0x6cb50220, 0x2662b: 0x6d366c20,
+-	0x2662c: 0x6c599c20,
+-	0x26634: 0x6d353820, 0x26636: 0x6d1fda20,
+-	0x2663c: 0x6c435420, 0x2663d: 0x6d11c420, 0x2663e: 0x6cb3cc20,
+-	// Block 0x999, offset 0x26640
+-	0x26647: 0x6d153620,
+-	0x26648: 0x6c1a8420, 0x26649: 0x6c625020, 0x2664b: 0x6c007420,
+-	0x2664d: 0x6c308620, 0x2664f: 0x6cdc6220,
+-	0x26651: 0x6c701c20,
+-	0x26658: 0x6cb7c820, 0x26659: 0x6c884420, 0x2665a: 0x6d085620,
+-	0x2665c: 0x6c8a7620,
+-	0x26661: 0x6d285820, 0x26662: 0x6d085a20, 0x26663: 0x6c23e620,
+-	0x26664: 0x6cb10020, 0x26666: 0x6c7c9c20,
+-	0x26668: 0x6ce37a20, 0x26669: 0x6c58e020, 0x2666a: 0x6c280020, 0x2666b: 0x6c4b7820,
+-	0x2666c: 0x6c188a20, 0x2666e: 0x6cce3c20, 0x2666f: 0x6c628620,
+-	0x26674: 0x6c891c20, 0x26675: 0x6c76b620, 0x26676: 0x6cd17820,
+-	0x26678: 0x6c30cc20, 0x26679: 0x6d1f8020, 0x2667a: 0x6cb66220,
+-	0x2667c: 0x6cffc620,
+-	// Block 0x99a, offset 0x26680
+-	0x26682: 0x6d18f620, 0x26683: 0x6c90c420,
+-	0x26686: 0x6c206a20,
+-	0x2668b: 0x6c81e620,
+-	0x2668c: 0x6c42ec20,
+-	0x26690: 0x6d2ba220, 0x26692: 0x6cef6420,
+-	0x26696: 0x6c653620,
+-	0x2669b: 0x6d1c3220,
+-	0x2669c: 0x6c38f420, 0x2669d: 0x6c877c20, 0x2669e: 0x6cb94e20,
+-	0x266a2: 0x6d125420,
+-	0x266a6: 0x6c7c5a20, 0x266a7: 0x6cef7a20,
+-	0x266a9: 0x6cc42620,
+-	0x266ac: 0x6cffca20, 0x266ad: 0x6cc42820,
+-	0x266b0: 0x6c551820,
+-	0x266b5: 0x6c342020, 0x266b6: 0x6c1f1e20,
+-	0x266b9: 0x6ccfd620,
+-	0x266bc: 0x6d3d5620, 0x266bd: 0x6c355e20, 0x266be: 0x6c61f820,
+-	// Block 0x99b, offset 0x266c0
+-	0x266c1: 0x6cdfde20, 0x266c3: 0x6cabc420,
+-	0x266cb: 0x6c6be220,
+-	0x266cc: 0x6cbc4220,
+-	0x266d1: 0x6cb99620, 0x266d2: 0x6c724c20,
+-	0x266d5: 0x6cc06e20, 0x266d6: 0x6ceb2220,
+-	0x266da: 0x6caafa20, 0x266db: 0x6cd8c620,
+-	0x266df: 0x6d14fe20,
+-	0x266e1: 0x6c47a220, 0x266e2: 0x6c5d3220, 0x266e3: 0x6cabda20,
+-	0x266e4: 0x6d3e5a20, 0x266e6: 0x6c685220,
+-	0x266e9: 0x6cf80420, 0x266ea: 0x6cceb820,
+-	0x266ec: 0x6d153820, 0x266ed: 0x6d369e20,
+-	0x266f5: 0x6c952420, 0x266f7: 0x6d38a020,
+-	0x266f8: 0x6c74a420, 0x266f9: 0x6ce00620, 0x266fa: 0x6cab0c20, 0x266fb: 0x6c728020,
+-	0x266fc: 0x6c559c20, 0x266fe: 0x6d36c220,
+-	// Block 0x99c, offset 0x26700
+-	0x26703: 0x6c088820,
+-	0x2670d: 0x6c1c7220, 0x2670e: 0x6d07d020, 0x2670f: 0x6c60b620,
+-	0x26710: 0x6c48a020, 0x26711: 0x6c715e20, 0x26712: 0x6cf31620, 0x26713: 0x6ceb4a20,
+-	0x26715: 0x6cc09820, 0x26716: 0x6ceebe20, 0x26717: 0x6c32a220,
+-	0x26719: 0x6cd47c20, 0x2671b: 0x6d31fe20,
+-	0x2671c: 0x6ca55420, 0x2671f: 0x6cf8f620,
+-	0x26720: 0x6d30a420, 0x26721: 0x6d371620, 0x26723: 0x6ca2ea20,
+-	0x26728: 0x6c650620,
+-	0x2672e: 0x6d114e20, 0x2672f: 0x6c4c9820,
+-	0x26732: 0x6c2c0820,
+-	0x26734: 0x6c5e1c20, 0x26735: 0x6c6de220,
+-	0x2673c: 0x6c74ec20, 0x2673d: 0x6d270820,
+-	// Block 0x99d, offset 0x26740
+-	0x26744: 0x6c60ee20, 0x26746: 0x6cdb5c20,
+-	0x26748: 0x6c654020, 0x2674a: 0x6c7d9820, 0x2674b: 0x6cf33220,
+-	0x2674c: 0x6c7c1e20, 0x2674d: 0x6c0c6020, 0x2674e: 0x6c751220,
+-	0x26751: 0x6c0ad620, 0x26753: 0x6c157a20,
+-	0x26755: 0x6d3ecc20, 0x26756: 0x6c87c220,
+-	0x2675a: 0x6c3d0e20, 0x2675b: 0x6cb9f020,
+-	0x2675c: 0x6d0d4020, 0x2675e: 0x6ce08c20, 0x2675f: 0x6ca0d820,
+-	0x26763: 0x6c79e420,
+-	0x26764: 0x6cf5d420,
+-	0x2676e: 0x6c569220, 0x2676f: 0x6c569420,
+-	0x26771: 0x6c3e7020,
+-	0x26774: 0x6d104c20, 0x26775: 0x6c4cea20, 0x26777: 0x6cc57020,
+-	0x26778: 0x6d1b4c20, 0x26779: 0x6c3c4420, 0x2677a: 0x6c75b620,
+-	0x2677c: 0x6d27a620, 0x2677f: 0x6d0a8820,
+-	// Block 0x99e, offset 0x26780
+-	0x26781: 0x6cf87c20,
+-	0x2678e: 0x6cf96220,
+-	0x26791: 0x6c4f7620,
+-	0x2679a: 0x6c569620,
+-	0x2679d: 0x6c54d020, 0x2679e: 0x6cb4aa20, 0x2679f: 0x6c385020,
+-	0x267a4: 0x6c636420, 0x267a7: 0x6d150420,
+-	0x267ad: 0x6ceac820, 0x267ae: 0x6ca2e220,
+-	0x267b8: 0x6d1a6a20, 0x267b9: 0x6d1b5a20,
+-	// Block 0x99f, offset 0x267c0
+-	0x267c3: 0x6c622a20,
+-	0x267c4: 0x6cee5620, 0x267c5: 0x6cd3a420, 0x267c6: 0x6c330c20, 0x267c7: 0x6c34fc20,
+-	0x267c9: 0x6ceb3020, 0x267ca: 0x6cebe620, 0x267cb: 0x6c863e20,
+-	0x267cf: 0x6cc55220,
+-	0x267d2: 0x6c22d020, 0x267d3: 0x6d070220,
+-	0x267d4: 0x6d389020, 0x267d5: 0x6d3f5a20,
+-	0x267dc: 0x6cee2a20, 0x267dd: 0x6d0b5820, 0x267df: 0x6c622c20,
+-	0x267e0: 0x6c179e20,
+-	0x267e9: 0x6c606020,
+-	0x267f5: 0x6ccd5420, 0x267f6: 0x6ce8de20,
+-	0x267f8: 0x6c0cf620, 0x267f9: 0x6cf8be20, 0x267fa: 0x6caf7e20, 0x267fb: 0x6d2cd420,
+-	0x267fe: 0x6c5c0620,
+-	// Block 0x9a0, offset 0x26800
+-	0x26800: 0x6cdd3020, 0x26802: 0x6c51da20,
+-	0x26804: 0x6d265220, 0x26806: 0x6cf37c20,
+-	0x26808: 0x6c8d4020, 0x2680a: 0x6d2cd620, 0x2680b: 0x6c574a20,
+-	0x26817: 0x6c151220,
+-	0x2681f: 0x6c367620,
+-	0x26821: 0x6c18e020,
+-	0x26827: 0x6cdc6620,
+-	0x26829: 0x6ce51420,
+-	0x26830: 0x6d36c420, 0x26831: 0x6ce41620, 0x26832: 0x6c022e20, 0x26833: 0x6d3d9020,
+-	0x26834: 0x6d3f6020, 0x26835: 0x6c783020, 0x26837: 0x6ccb4e20,
+-	0x26838: 0x6ce4c220, 0x26839: 0x6c92b620,
+-	0x2683e: 0x6ccd2620, 0x2683f: 0x6d2c9020,
+-	// Block 0x9a1, offset 0x26840
+-	0x26843: 0x6c1cde20,
+-	0x26845: 0x6d0ea620,
+-	0x26852: 0x6ca25420, 0x26853: 0x6c54fc20,
+-	0x2685a: 0x6c1ad420,
+-	0x2685d: 0x6cdb0a20,
+-	0x26863: 0x6ca51420,
+-	0x26866: 0x6c60b820, 0x26867: 0x6c346020,
+-	0x26868: 0x6c547e20, 0x2686a: 0x6c23de20, 0x2686b: 0x6d2c0220,
+-	0x2686c: 0x6d1a9c20, 0x2686e: 0x6cffbe20,
+-	0x26870: 0x6c0bbc20, 0x26871: 0x6c085220, 0x26872: 0x6c7e9a20,
+-	0x26874: 0x6c1ad820, 0x26876: 0x6cb87820,
+-	0x26878: 0x6c015220, 0x26879: 0x6cd1fe20,
+-	0x2687c: 0x6c1c7420,
+-	// Block 0x9a2, offset 0x26880
+-	0x26885: 0x6caa6a20, 0x26887: 0x6c628820,
+-	0x26893: 0x6cab9220,
+-	0x26895: 0x6cf97a20,
+-	0x26898: 0x6c14a020, 0x2689a: 0x6c005620,
+-	0x2689d: 0x6cd17c20, 0x2689e: 0x6c518220,
+-	0x268a0: 0x6c60ca20, 0x268a1: 0x6c1ade20, 0x268a2: 0x6cf8fa20, 0x268a3: 0x6d32fe20,
+-	0x268a6: 0x6cde0020,
+-	0x268a8: 0x6c96e220, 0x268ab: 0x6caf9a20,
+-	0x268ae: 0x6d05f220, 0x268af: 0x6cba2a20,
+-	0x268b9: 0x6cfa4e20,
+-	// Block 0x9a3, offset 0x268c0
+-	0x268ca: 0x6d241a20,
+-	0x268d1: 0x6c6b4620, 0x268d2: 0x6cfa5420, 0x268d3: 0x6c91ee20,
+-	0x268d5: 0x6cbcf620, 0x268d7: 0x6c145220,
+-	0x268db: 0x6d107020,
+-	0x268dc: 0x6c62b020, 0x268dd: 0x6ccc3620, 0x268de: 0x6c912020,
+-	0x268e0: 0x6c5f7620, 0x268e1: 0x6d373020, 0x268e2: 0x6cee5c20,
+-	0x268e4: 0x6c0a9820, 0x268e5: 0x6c015820, 0x268e6: 0x6d142a20, 0x268e7: 0x6c015a20,
+-	0x268ec: 0x6c847620,
+-	0x268f9: 0x6cfaec20,
+-	0x268fe: 0x6c703620, 0x268ff: 0x6ce08420,
+-	// Block 0x9a4, offset 0x26900
+-	0x26901: 0x6c507a20, 0x26902: 0x6c520620,
+-	0x26905: 0x6d2c0620, 0x26906: 0x6d2e2e20, 0x26907: 0x6d191a20,
+-	0x26908: 0x6cf91a20, 0x2690a: 0x6cf91c20, 0x2690b: 0x6c384420,
+-	0x2690c: 0x6d0cf620, 0x2690f: 0x6ca25620,
+-	0x26915: 0x6c474020,
+-	0x2691e: 0x6d27d020,
+-	0x26924: 0x6d384820, 0x26926: 0x6c160220, 0x26927: 0x6c208620,
+-	0x26928: 0x6c5c8a20, 0x26929: 0x6d28d620, 0x2692a: 0x6c4c0820, 0x2692b: 0x6c661c20,
+-	0x2692c: 0x6d0b3e20,
+-	0x26930: 0x6cfe6820, 0x26931: 0x6c520820,
+-	// Block 0x9a5, offset 0x26940
+-	0x26943: 0x6c28e820,
+-	0x26947: 0x6c9df020,
+-	0x26948: 0x6ca93a20, 0x2694a: 0x6c9ba620,
+-	0x2694c: 0x6c8b6e20, 0x2694d: 0x6d396a20, 0x2694e: 0x6cb42220, 0x2694f: 0x6cdf0a20,
+-	0x26953: 0x6d1cd020,
+-	0x26954: 0x6ce2cc20, 0x26955: 0x6c4ca220,
+-	0x2695a: 0x6cbb3020,
+-	0x2695c: 0x6c942420, 0x2695d: 0x6cc9b820, 0x2695e: 0x6c8b7020, 0x2695f: 0x6c1b6c20,
+-	0x26960: 0x6d015020, 0x26963: 0x6c4ca820,
+-	0x26964: 0x6c067e20, 0x26965: 0x6c964220, 0x26966: 0x6c73a420,
+-	0x2696a: 0x6c36e820,
+-	0x26973: 0x6c51a820,
+-	0x26975: 0x6c9aba20,
+-	0x26978: 0x6d028820, 0x26979: 0x6cb22c20, 0x2697b: 0x6c4dc420,
+-	0x2697c: 0x6c194420, 0x2697d: 0x6ccdec20, 0x2697e: 0x6c5ca020,
+-	// Block 0x9a6, offset 0x26980
+-	0x26986: 0x6d1c4820,
+-	0x26988: 0x6c663e20,
+-	0x2698d: 0x6c016620,
+-	0x26991: 0x6cdef420, 0x26992: 0x6d144220, 0x26993: 0x6ce9dc20,
+-	0x26997: 0x6c8ef220,
+-	0x26999: 0x6d425a20, 0x2699b: 0x6c84ec20,
+-	0x2699d: 0x6cb23420, 0x2699e: 0x6d098420,
+-	0x269a0: 0x6ca5a220, 0x269a1: 0x6c315820,
+-	0x269a4: 0x6c806c20,
+-	0x269aa: 0x6d2d5e20, 0x269ab: 0x6c73e620,
+-	0x269ac: 0x6d314620, 0x269ad: 0x6c600c20, 0x269ae: 0x6cb8ce20,
+-	0x269b0: 0x6c4da220, 0x269b1: 0x6c3b7220, 0x269b3: 0x6c4da420,
+-	0x269b4: 0x6c535620, 0x269b5: 0x6c514620, 0x269b6: 0x6c541a20,
+-	0x269ba: 0x6d2e7820, 0x269bb: 0x6c1dd420,
+-	0x269bc: 0x6cdf7e20, 0x269bd: 0x6cba7820, 0x269bf: 0x6ccf7420,
+-	// Block 0x9a7, offset 0x269c0
+-	0x269c0: 0x6d1bee20, 0x269c3: 0x6cbd4020,
+-	0x269c6: 0x6c5e0e20,
+-	0x269c8: 0x6cf8fc20, 0x269c9: 0x6c51f820, 0x269ca: 0x6cf90820, 0x269cb: 0x6cf97e20,
+-	0x269cc: 0x6c4fb620, 0x269cd: 0x6c81e820, 0x269cf: 0x6c870c20,
+-	0x269d2: 0x6c19a220,
+-	0x269d6: 0x6c760620, 0x269d7: 0x6cf76020,
+-	0x269d8: 0x6c4e7620,
+-	0x269de: 0x6c311620,
+-	0x269e0: 0x6c30ae20, 0x269e1: 0x6cec9220,
+-	0x269e4: 0x6c30b020, 0x269e5: 0x6d293820, 0x269e6: 0x6c737a20,
+-	0x269e8: 0x6c90e620, 0x269e9: 0x6c1f6220, 0x269eb: 0x6d32ea20,
+-	0x269ef: 0x6cb64420,
+-	0x269f0: 0x6c770e20, 0x269f1: 0x6c5df420, 0x269f2: 0x6c7f2420,
+-	0x269fa: 0x6c410620,
+-	0x269fc: 0x6cd48220, 0x269fe: 0x6c301a20,
+-	// Block 0x9a8, offset 0x26a00
+-	0x26a03: 0x6c90c820,
+-	0x26a04: 0x6ce93e20, 0x26a07: 0x6d21ca20,
+-	0x26a08: 0x6cf52e20, 0x26a0a: 0x6ce4ce20,
+-	0x26a12: 0x6c4c9e20,
+-	0x26a18: 0x6ce04420, 0x26a19: 0x6cb6ae20,
+-	0x26a20: 0x6c8b8020, 0x26a21: 0x6c87b420, 0x26a23: 0x6d09d020,
+-	0x26a28: 0x6c452820, 0x26a29: 0x6ce63820, 0x26a2a: 0x6c4ea220, 0x26a2b: 0x6c1f2a20,
+-	0x26a2d: 0x6cea4c20, 0x26a2f: 0x6d047a20,
+-	0x26a30: 0x6d1f3020, 0x26a31: 0x6ca11820, 0x26a32: 0x6c1ba420,
+-	0x26a34: 0x6c562020, 0x26a35: 0x6c317020, 0x26a37: 0x6ca24420,
+-	0x26a39: 0x6ca34420, 0x26a3b: 0x6c8d0c20,
+-	0x26a3f: 0x6c00ae20,
+-	// Block 0x9a9, offset 0x26a40
+-	0x26a40: 0x6cfab020,
+-	0x26a44: 0x6c76e020, 0x26a45: 0x6cd8cc20, 0x26a46: 0x6cca0420,
+-	0x26a4a: 0x6d180e20,
+-	0x26a4f: 0x6d183c20,
+-	0x26a50: 0x6d000020, 0x26a52: 0x6d340820, 0x26a53: 0x6c313020,
+-	0x26a58: 0x6c973e20,
+-	0x26a5c: 0x6c950a20, 0x26a5d: 0x6c74a820,
+-	0x26a61: 0x6cbad620, 0x26a62: 0x6c8d4a20,
+-	0x26a69: 0x6cb12c20, 0x26a6a: 0x6c23fc20, 0x26a6b: 0x6c351820,
+-	0x26a6c: 0x6d229420,
+-	0x26a70: 0x6d3d0a20, 0x26a72: 0x6cf8fe20, 0x26a73: 0x6c581620,
+-	0x26a74: 0x6ca02020, 0x26a75: 0x6ce14420,
+-	0x26a79: 0x6cb41820, 0x26a7b: 0x6c9da420,
+-	0x26a7c: 0x6c979020, 0x26a7e: 0x6c48d420,
+-	// Block 0x9aa, offset 0x26a80
+-	0x26a80: 0x6cb93620, 0x26a82: 0x6c8bfa20, 0x26a83: 0x6c9fd620,
+-	0x26a84: 0x6cf04e20, 0x26a85: 0x6c136820, 0x26a87: 0x6c56e220,
+-	0x26a88: 0x6cdc0420, 0x26a8b: 0x6c72bc20,
+-	0x26a8c: 0x6ccc8420, 0x26a8d: 0x6c9ba820,
+-	0x26a97: 0x6cef7620,
+-	0x26a98: 0x6cf75a20, 0x26a99: 0x6c8e2a20,
+-	0x26a9c: 0x6c0ad820, 0x26a9d: 0x6cf13820,
+-	0x26aa1: 0x6c85b420, 0x26aa2: 0x6d304420,
+-	0x26aa4: 0x6d1df220, 0x26aa5: 0x6c554e20, 0x26aa6: 0x6cecda20, 0x26aa7: 0x6c034c20,
+-	0x26aa8: 0x6c649220,
+-	0x26aad: 0x6d426a20, 0x26aae: 0x6d2df220, 0x26aaf: 0x6c0e7a20,
+-	0x26ab0: 0x6cbfb220, 0x26ab1: 0x6d0f5a20,
+-	0x26ab4: 0x6c300620, 0x26ab5: 0x6cc19820,
+-	0x26aba: 0x6caff820, 0x26abb: 0x6d2d2c20,
+-	0x26abe: 0x6cccf420, 0x26abf: 0x6c46bc20,
+-	// Block 0x9ab, offset 0x26ac0
+-	0x26ac0: 0x6c0c9020, 0x26ac1: 0x6d152220, 0x26ac2: 0x6c3eaa20,
+-	0x26ac4: 0x6d034020, 0x26ac5: 0x6cd3a620, 0x26ac6: 0x6ce6fc20,
+-	0x26ac9: 0x6c2f6220,
+-	0x26acc: 0x6ce86e20, 0x26acd: 0x6cfef620, 0x26ace: 0x6cf3e020, 0x26acf: 0x6cade420,
+-	0x26ad0: 0x6c5ade20,
+-	0x26ad5: 0x6c7f2220,
+-	0x26ad9: 0x6cd8e220, 0x26ada: 0x6c250220, 0x26adb: 0x6ccc7220,
+-	0x26adc: 0x6d38f020, 0x26add: 0x6d2fd820, 0x26ade: 0x6cef3220, 0x26adf: 0x6c7f2620,
+-	0x26ae0: 0x6c0a3a20, 0x26ae3: 0x6c303e20,
+-	0x26ae6: 0x6ca51620, 0x26ae7: 0x6d005420,
+-	0x26ae8: 0x6cc54020, 0x26ae9: 0x6ce98e20, 0x26aea: 0x6cf0d820, 0x26aeb: 0x6d1f7020,
+-	0x26aec: 0x6c9a2820, 0x26aed: 0x6d25b220, 0x26aee: 0x6d384220,
+-	0x26af6: 0x6cd9ea20,
+-	0x26af8: 0x6c474820, 0x26af9: 0x6ccee620, 0x26afb: 0x6d2f9220,
+-	0x26afc: 0x6cb02820, 0x26aff: 0x6ce70820,
+-	// Block 0x9ac, offset 0x26b00
+-	0x26b01: 0x6c1ae220, 0x26b02: 0x6caedc20, 0x26b03: 0x6c153c20,
+-	0x26b04: 0x6d1dca20, 0x26b05: 0x6cd6ea20, 0x26b07: 0x6cf48420,
+-	0x26b09: 0x6cb03020, 0x26b0a: 0x6c596020,
+-	0x26b0c: 0x6c3f1e20, 0x26b0e: 0x6c0c9620,
+-	0x26b13: 0x6ca4d020,
+-	0x26b15: 0x6c0c9820, 0x26b16: 0x6cf11420, 0x26b17: 0x6d1dd620,
+-	0x26b19: 0x6ca52620, 0x26b1a: 0x6c48fe20,
+-	0x26b20: 0x6c879220, 0x26b22: 0x6d035e20, 0x26b23: 0x6d0d2220,
+-	0x26b24: 0x6cb37420, 0x26b25: 0x6cadca20,
+-	0x26b2a: 0x6cdd5c20,
+-	0x26b2c: 0x6cc5e220, 0x26b2d: 0x6ccd3a20,
+-	0x26b32: 0x6cdd5e20,
+-	0x26b38: 0x6c27d620, 0x26b3a: 0x6c9af020,
+-	// Block 0x9ad, offset 0x26b40
+-	0x26b43: 0x6cd44820,
+-	0x26b48: 0x6c46a620, 0x26b4a: 0x6c4da620, 0x26b4b: 0x6cd39020,
+-	0x26b4c: 0x6d102020, 0x26b4e: 0x6c479620,
+-	0x26b5b: 0x6c77fe20,
+-	0x26b5e: 0x6c709c20,
+-	0x26b60: 0x6cac2e20, 0x26b61: 0x6c12f820, 0x26b62: 0x6c05b220, 0x26b63: 0x6d047020,
+-	0x26b64: 0x6c111420, 0x26b67: 0x6c8c2420,
+-	0x26b68: 0x6c00b020,
+-	0x26b6c: 0x6c9d6220, 0x26b6d: 0x6c7f3e20,
+-	0x26b71: 0x6cfee020, 0x26b73: 0x6ccf1e20,
+-	0x26b7b: 0x6c5d7c20,
+-	0x26b7c: 0x6ca6b420,
+-	// Block 0x9ae, offset 0x26b80
+-	0x26b84: 0x6d335620, 0x26b86: 0x6c8c5c20, 0x26b87: 0x6d2c4420,
+-	0x26b8a: 0x6d27be20,
+-	0x26b8d: 0x6d071c20,
+-	0x26b94: 0x6c1a2a20, 0x26b95: 0x6cf2c020, 0x26b96: 0x6cf68620,
+-	0x26b99: 0x6c074820,
+-	0x26b9c: 0x6cce1c20,
+-	0x26ba0: 0x6d23d020, 0x26ba1: 0x6c9d8020,
+-	0x26bb2: 0x6c32b020,
+-	0x26bb5: 0x6c144a20, 0x26bb7: 0x6d2b0820,
+-	0x26bb8: 0x6c1a8820, 0x26bba: 0x6ce69220,
+-	// Block 0x9af, offset 0x26bc0
+-	0x26bc5: 0x6d157020,
+-	0x26bcb: 0x6d10ba20,
+-	0x26bce: 0x6c7a6620,
+-	0x26bd0: 0x6c3b9c20, 0x26bd1: 0x6d010420, 0x26bd2: 0x6c1a8a20,
+-	0x26bdb: 0x6c7d2420,
+-	0x26bdf: 0x6c0d6220,
+-	0x26be1: 0x6c90cc20,
+-	0x26be5: 0x6d18fa20, 0x26be6: 0x6c9da620, 0x26be7: 0x6d024620,
+-	0x26bf1: 0x6c4a9c20, 0x26bf3: 0x6c955e20,
+-	0x26bf6: 0x6ccdce20,
+-	0x26bfe: 0x6c717a20, 0x26bff: 0x6c318420,
+-	// Block 0x9b0, offset 0x26c00
+-	0x26c02: 0x6cfaf220,
+-	0x26c05: 0x6d356020,
+-	0x26c08: 0x6c0d9020,
+-	0x26c15: 0x6d356220, 0x26c16: 0x6d3bfa20, 0x26c17: 0x6d092a20,
+-	0x26c18: 0x6c893020, 0x26c19: 0x6cdcb220,
+-	0x26c26: 0x6c808c20, 0x26c27: 0x6c72cc20,
+-	0x26c28: 0x6c9df220, 0x26c29: 0x6d0ab420, 0x26c2a: 0x6d2ea020, 0x26c2b: 0x6c4c0c20,
+-	0x26c32: 0x6d376820,
+-	0x26c3d: 0x6cf12c20, 0x26c3e: 0x6cc36a20, 0x26c3f: 0x6c14ac20,
+-	// Block 0x9b1, offset 0x26c40
+-	0x26c48: 0x6cc63020, 0x26c4a: 0x6d272820,
+-	0x26c4c: 0x6d3ece20,
+-	0x26c50: 0x6c965420, 0x26c51: 0x6c4b3620, 0x26c53: 0x6c19f420,
+-	0x26c55: 0x6c709e20, 0x26c56: 0x6ce4fe20, 0x26c57: 0x6ced9820,
+-	0x26c5b: 0x6d33d820,
+-	0x26c5e: 0x6ca42c20,
+-	0x26c63: 0x6c4db420,
+-	0x26c68: 0x6cf6b020, 0x26c69: 0x6c8bd420,
+-	0x26c6c: 0x6d0c2e20, 0x26c6d: 0x6d074220,
+-	0x26c72: 0x6c56d220, 0x26c73: 0x6c423620,
+-	0x26c74: 0x6d074c20, 0x26c76: 0x6cf90a20,
+-	0x26c7a: 0x6c258420,
+-	0x26c7d: 0x6cf92a20, 0x26c7e: 0x6c560220,
+-	// Block 0x9b2, offset 0x26c80
+-	0x26c85: 0x6d0c4c20,
+-	0x26c8e: 0x6d170e20, 0x26c8f: 0x6c1b1a20,
+-	0x26c90: 0x6c741c20, 0x26c92: 0x6d40b220,
+-	0x26c9c: 0x6c699420, 0x26c9d: 0x6d178220, 0x26c9f: 0x6ce05e20,
+-	0x26ca0: 0x6c1c1420, 0x26ca1: 0x6c037a20, 0x26ca2: 0x6ce82820, 0x26ca3: 0x6d3f7a20,
+-	0x26ca4: 0x6cc05420, 0x26ca7: 0x6c1c1620,
+-	0x26ca8: 0x6cf7e020,
+-	0x26cb0: 0x6ca69c20, 0x26cb2: 0x6c241420,
+-	0x26cb4: 0x6cf44820, 0x26cb6: 0x6c1f4820, 0x26cb7: 0x6cda4e20,
+-	0x26cb8: 0x6d1df820, 0x26cb9: 0x6c71bc20, 0x26cba: 0x6c037e20,
+-	0x26cbc: 0x6c229c20, 0x26cbd: 0x6c2c6420, 0x26cbe: 0x6cac9820, 0x26cbf: 0x6c1c2620,
+-	// Block 0x9b3, offset 0x26cc0
+-	0x26cc1: 0x6cc0ac20, 0x26cc3: 0x6d0ca420,
+-	0x26ccd: 0x6d2d2e20,
+-	0x26cd2: 0x6cfce220, 0x26cd3: 0x6c084620,
+-	0x26cd4: 0x6c7ba620, 0x26cd5: 0x6cb7a820, 0x26cd6: 0x6d389220, 0x26cd7: 0x6c713820,
+-	0x26cd8: 0x6cbcca20, 0x26cd9: 0x6ca13420, 0x26cda: 0x6d258c20,
+-	0x26cdc: 0x6c4b5820, 0x26cdd: 0x6d417220,
+-	0x26ce7: 0x6cbccc20,
+-	0x26cf0: 0x6c558a20, 0x26cf1: 0x6cc08820, 0x26cf2: 0x6c4d2220, 0x26cf3: 0x6c402c20,
+-	0x26cf4: 0x6c812a20, 0x26cf5: 0x6ccc6c20, 0x26cf6: 0x6cf68820, 0x26cf7: 0x6c101c20,
+-	0x26cf8: 0x6cd3ba20, 0x26cf9: 0x6d1e5220, 0x26cfa: 0x6c49f020,
+-	0x26cfc: 0x6ca85420, 0x26cff: 0x6c545820,
+-	// Block 0x9b4, offset 0x26d00
+-	0x26d0a: 0x6c9d7220,
+-	0x26d0e: 0x6c369420, 0x26d0f: 0x6cfb8a20,
+-	0x26d10: 0x6d280020, 0x26d11: 0x6d073220, 0x26d12: 0x6cbde420, 0x26d13: 0x6c301220,
+-	0x26d14: 0x6c838220, 0x26d15: 0x6cb7ca20, 0x26d16: 0x6c7fb020, 0x26d17: 0x6c3ee420,
+-	0x26d18: 0x6cb71420, 0x26d19: 0x6c1d3e20,
+-	0x26d1c: 0x6c245c20, 0x26d1f: 0x6ca16620,
+-	0x26d20: 0x6c06b820,
+-	0x26d24: 0x6c2a2e20,
+-	0x26d28: 0x6c6b3a20, 0x26d29: 0x6c1d5c20, 0x26d2a: 0x6c1c7620, 0x26d2b: 0x6d23f820,
+-	0x26d2c: 0x6c24ee20, 0x26d2d: 0x6cdb2620, 0x26d2e: 0x6ce42420, 0x26d2f: 0x6cd61020,
+-	0x26d30: 0x6d2c4c20, 0x26d31: 0x6c3ef820, 0x26d33: 0x6c184620,
+-	0x26d34: 0x6c3d0c20, 0x26d35: 0x6c543220, 0x26d36: 0x6d2c4e20,
+-	// Block 0x9b5, offset 0x26d40
+-	0x26d44: 0x6c6b3c20, 0x26d45: 0x6d2c5020, 0x26d46: 0x6d2d9c20,
+-	0x26d49: 0x6d0dde20, 0x26d4a: 0x6c4d3020, 0x26d4b: 0x6cf48220,
+-	0x26d4c: 0x6c576220, 0x26d4d: 0x6c2cde20, 0x26d4e: 0x6d115420, 0x26d4f: 0x6cd9ec20,
+-	0x26d50: 0x6cb92c20, 0x26d51: 0x6c60cc20, 0x26d52: 0x6d04aa20, 0x26d53: 0x6cb7f020,
+-	0x26d54: 0x6c758420, 0x26d56: 0x6c4d3220,
+-	0x26d5e: 0x6d0dee20, 0x26d5f: 0x6c6b6820,
+-	0x26d60: 0x6c24f420, 0x26d62: 0x6ce96a20, 0x26d63: 0x6d2ee620,
+-	0x26d64: 0x6cb16c20, 0x26d65: 0x6c930e20, 0x26d66: 0x6d342020, 0x26d67: 0x6c1f8820,
+-	0x26d68: 0x6c9da820, 0x26d69: 0x6cbaec20, 0x26d6b: 0x6c892420,
+-	0x26d72: 0x6c86dc20,
+-	0x26d76: 0x6c359a20, 0x26d77: 0x6cdb5820,
+-	0x26d78: 0x6c74f020, 0x26d7b: 0x6c717c20,
+-	0x26d7c: 0x6ce03a20, 0x26d7d: 0x6c8a4820, 0x26d7e: 0x6cca0a20, 0x26d7f: 0x6c309220,
+-	// Block 0x9b6, offset 0x26d80
+-	0x26d81: 0x6d28d420, 0x26d82: 0x6d34b220,
+-	0x26d86: 0x6d08ca20, 0x26d87: 0x6c8d8620,
+-	0x26d8a: 0x6c2abe20,
+-	0x26d8d: 0x6d2dbe20, 0x26d8e: 0x6d07f020, 0x26d8f: 0x6cbdf220,
+-	0x26d90: 0x6c69da20, 0x26d91: 0x6cb0da20,
+-	0x26d94: 0x6c4e6e20,
+-	0x26d9a: 0x6d21f220, 0x26d9b: 0x6c4ca420,
+-	0x26d9d: 0x6d0a5420,
+-	0x26da0: 0x6d0a5620, 0x26da1: 0x6c156c20, 0x26da2: 0x6c6b8020, 0x26da3: 0x6c719420,
+-	0x26da4: 0x6d0e1820, 0x26da5: 0x6c31f620, 0x26da7: 0x6c53e020,
+-	0x26da8: 0x6cfd4a20, 0x26da9: 0x6d0a5820,
+-	0x26dae: 0x6c8db020, 0x26daf: 0x6c6b8620,
+-	0x26db0: 0x6d197e20, 0x26db1: 0x6cc22a20, 0x26db2: 0x6c41c020, 0x26db3: 0x6c3c8c20,
+-	0x26db5: 0x6c753820, 0x26db6: 0x6cc16e20,
+-	0x26dbb: 0x6c6fe020,
+-	0x26dbd: 0x6c61ba20, 0x26dbe: 0x6c612c20,
+-	// Block 0x9b7, offset 0x26dc0
+-	0x26dc5: 0x6cf77420, 0x26dc6: 0x6cacd220,
+-	0x26dc8: 0x6c7bf020, 0x26dc9: 0x6c7a8e20, 0x26dcb: 0x6c7a9020,
+-	0x26dcc: 0x6d2cbe20, 0x26dcf: 0x6c03b220,
+-	0x26dd2: 0x6c190220, 0x26dd3: 0x6c569820,
+-	0x26dd4: 0x6caa6220, 0x26dd5: 0x6c356220, 0x26dd6: 0x6d046a20, 0x26dd7: 0x6c33ce20,
+-	0x26dd8: 0x6cd10020, 0x26dd9: 0x6cecdc20, 0x26dda: 0x6c3b2e20,
+-	0x26ddd: 0x6cf60420, 0x26dde: 0x6d3e2e20,
+-	0x26de0: 0x6c569a20,
+-	0x26de5: 0x6c0cea20, 0x26de7: 0x6ceba620,
+-	0x26de8: 0x6c04cc20, 0x26de9: 0x6c43e420, 0x26deb: 0x6c77f620,
+-	0x26df2: 0x6d3c8c20, 0x26df3: 0x6c3e9220,
+-	0x26df4: 0x6ca12020, 0x26df5: 0x6c63c620, 0x26df6: 0x6ceb2620, 0x26df7: 0x6d235a20,
+-	0x26df9: 0x6ca24620, 0x26dfa: 0x6c745e20, 0x26dfb: 0x6c712820,
+-	0x26dfc: 0x6c486220, 0x26dfd: 0x6cb35a20,
+-	// Block 0x9b8, offset 0x26e00
+-	0x26e00: 0x6ca63c20,
+-	0x26e04: 0x6cec1e20, 0x26e05: 0x6d0d9620,
+-	0x26e14: 0x6c1e2c20, 0x26e15: 0x6c7ba820, 0x26e16: 0x6c4d7020,
+-	0x26e18: 0x6cfdd020, 0x26e19: 0x6cf65c20, 0x26e1b: 0x6c25a820,
+-	0x26e1c: 0x6ce6fe20, 0x26e1d: 0x6cc92420, 0x26e1f: 0x6c345820,
+-	0x26e20: 0x6c182a20,
+-	0x26e24: 0x6c833820, 0x26e25: 0x6d3e6420, 0x26e27: 0x6d332420,
+-	0x26e28: 0x6d426c20, 0x26e2b: 0x6c773020,
+-	0x26e2c: 0x6d293a20, 0x26e2e: 0x6d250020, 0x26e2f: 0x6cbf4620,
+-	0x26e33: 0x6c381820,
+-	0x26e34: 0x6d0a2220, 0x26e36: 0x6c622e20,
+-	0x26e38: 0x6c13a620,
+-	// Block 0x9b9, offset 0x26e40
+-	0x26e40: 0x6cd4fe20, 0x26e41: 0x6d08a820, 0x26e42: 0x6d00d220, 0x26e43: 0x6ce2f820,
+-	0x26e44: 0x6c4ef220, 0x26e45: 0x6cfac020, 0x26e46: 0x6ccd0420, 0x26e47: 0x6cea8c20,
+-	0x26e48: 0x6c4f8420, 0x26e49: 0x6c7dbc20, 0x26e4a: 0x6c133620, 0x26e4b: 0x6c30bc20,
+-	0x26e4c: 0x6caac620, 0x26e4d: 0x6d0e9a20, 0x26e4e: 0x6c1a2c20, 0x26e4f: 0x6cb40a20,
+-	0x26e50: 0x6cb7ba20, 0x26e51: 0x6d26d420, 0x26e52: 0x6c3d8c20,
+-	0x26e57: 0x6ce6dc20,
+-	0x26e5f: 0x6cf2c220,
+-	0x26e60: 0x6cd11220, 0x26e61: 0x6ceb8c20,
+-	0x26e74: 0x6ce06a20, 0x26e76: 0x6d0b6020, 0x26e77: 0x6d36ca20,
+-	0x26e78: 0x6c92be20, 0x26e79: 0x6d0dd020, 0x26e7a: 0x6c70c220,
+-	0x26e7d: 0x6c2a8020, 0x26e7f: 0x6c1f7020,
+-	// Block 0x9ba, offset 0x26e80
+-	0x26e80: 0x6d412620, 0x26e81: 0x6c369620, 0x26e82: 0x6d349620, 0x26e83: 0x6caec020,
+-	0x26e85: 0x6c0cbe20, 0x26e87: 0x6c2c0220,
+-	0x26e90: 0x6c7f2820, 0x26e92: 0x6d133020,
+-	0x26e9c: 0x6c4fe620, 0x26e9d: 0x6cac7420, 0x26e9e: 0x6ce0ae20, 0x26e9f: 0x6c774a20,
+-	0x26ea0: 0x6d05ea20, 0x26ea1: 0x6d408e20, 0x26ea2: 0x6c628c20, 0x26ea3: 0x6cf52620,
+-	0x26ea6: 0x6c204020,
+-	0x26ea9: 0x6cb3a420, 0x26eaa: 0x6d0dd620, 0x26eab: 0x6cebb420,
+-	0x26ead: 0x6c31b820, 0x26eaf: 0x6cb13020,
+-	0x26eb0: 0x6c1c7820, 0x26eb1: 0x6c5d4420, 0x26eb2: 0x6cb26820,
+-	0x26eb4: 0x6c235c20, 0x26eb5: 0x6d2c9620,
+-	0x26eba: 0x6cec9e20,
+-	0x26ebf: 0x6cec6620,
+-	// Block 0x9bb, offset 0x26ec0
+-	0x26ec3: 0x6c36ae20,
+-	0x26ec4: 0x6cf0da20, 0x26ec5: 0x6c040420, 0x26ec7: 0x6c678020,
+-	0x26ed3: 0x6c140a20,
+-	0x26ed5: 0x6c1f8220, 0x26ed6: 0x6c7af220, 0x26ed7: 0x6ce2bc20,
+-	0x26ed8: 0x6d406a20, 0x26ed9: 0x6c86ac20, 0x26eda: 0x6cdeb220, 0x26edb: 0x6cc9a420,
+-	0x26ede: 0x6cac7a20, 0x26edf: 0x6cac7c20,
+-	0x26ee3: 0x6ccb0020,
+-	0x26ee4: 0x6cbbba20,
+-	0x26eed: 0x6d40e220, 0x26eef: 0x6d371820,
+-	0x26ef0: 0x6d0de020, 0x26ef2: 0x6c6b4820, 0x26ef3: 0x6ca5aa20,
+-	// Block 0x9bc, offset 0x26f00
+-	0x26f04: 0x6c944420, 0x26f05: 0x6cc15220, 0x26f07: 0x6c2af220,
+-	0x26f08: 0x6c897620, 0x26f09: 0x6c15f220, 0x26f0a: 0x6cbcf820, 0x26f0b: 0x6c912220,
+-	0x26f0c: 0x6c2efe20, 0x26f0d: 0x6c24f620,
+-	0x26f10: 0x6c615c20, 0x26f13: 0x6c178420,
+-	0x26f14: 0x6cd69a20, 0x26f15: 0x6d40f220, 0x26f17: 0x6c775a20,
+-	0x26f1a: 0x6cbaf020, 0x26f1b: 0x6c847820,
+-	0x26f2e: 0x6cd65e20, 0x26f2f: 0x6d243e20,
+-	0x26f30: 0x6d2ee820, 0x26f31: 0x6c82f220,
+-	// Block 0x9bd, offset 0x26f40
+-	0x26f45: 0x6cb33e20,
+-	0x26f4a: 0x6d30b620, 0x26f4b: 0x6d001e20,
+-	0x26f4d: 0x6ce08620, 0x26f4e: 0x6c258620, 0x26f4f: 0x6c7fdc20,
+-	0x26f51: 0x6d060220, 0x26f52: 0x6cd62820, 0x26f53: 0x6d2c9c20,
+-	0x26f54: 0x6c11ba20, 0x26f57: 0x6c08fe20,
+-	0x26f58: 0x6caf1c20,
+-	0x26f5d: 0x6c1a5620,
+-	0x26f63: 0x6cbc0c20,
+-	0x26f64: 0x6c5f8620,
+-	0x26f6a: 0x6d2d0420,
+-	0x26f6c: 0x6c7fde20,
+-	// Block 0x9be, offset 0x26f80
+-	0x26f81: 0x6ce52820, 0x26f82: 0x6cc9b020, 0x26f83: 0x6c6c6e20,
+-	0x26f84: 0x6d3b4020, 0x26f85: 0x6c352220, 0x26f87: 0x6c145620,
+-	0x26f88: 0x6c73a020, 0x26f89: 0x6ce16220, 0x26f8a: 0x6c086420,
+-	0x26f8c: 0x6c38e820, 0x26f8d: 0x6c8b6820, 0x26f8e: 0x6d2b6e20, 0x26f8f: 0x6cdcb420,
+-	0x26f99: 0x6ccb8c20,
+-	0x26fa7: 0x6d375c20,
+-	0x26fa8: 0x6ce9d420, 0x26faa: 0x6cbe5e20,
+-	0x26fac: 0x6c21e620,
+-	0x26fb0: 0x6cdee620, 0x26fb1: 0x6c0e3c20, 0x26fb2: 0x6cf1f620,
+-	0x26fb5: 0x6cb36220,
+-	0x26fbd: 0x6ca09a20, 0x26fbe: 0x6c10e420,
+-	// Block 0x9bf, offset 0x26fc0
+-	0x26fc1: 0x6c7c2020, 0x26fc3: 0x6c260220,
+-	0x26fc4: 0x6cc54420, 0x26fc5: 0x6c068020, 0x26fc6: 0x6c7f8020,
+-	0x26fcd: 0x6ca75220, 0x26fce: 0x6c84c220,
+-	0x26fd5: 0x6c697220, 0x26fd6: 0x6c919e20, 0x26fd7: 0x6c879620,
+-	0x26fd8: 0x6c900820, 0x26fd9: 0x6c4baa20,
+-	0x26fdd: 0x6c161c20,
+-	0x26fe4: 0x6cfb1820, 0x26fe6: 0x6c165620,
+-	0x26fe8: 0x6d029020, 0x26fe9: 0x6d2ea820,
+-	0x26fef: 0x6cd6c620,
+-	0x26ffb: 0x6c9d1220,
+-	0x26ffc: 0x6c947420, 0x26ffd: 0x6c965620,
+-	// Block 0x9c0, offset 0x27000
+-	0x27000: 0x6c2d0220,
+-	0x27008: 0x6c2f2820, 0x2700a: 0x6cecb220, 0x2700b: 0x6d274620,
+-	0x2700c: 0x6c948620, 0x2700e: 0x6c948a20,
+-	0x27013: 0x6c837220,
+-	0x27015: 0x6cec6020, 0x27016: 0x6c2f3e20, 0x27017: 0x6ca59620,
+-	0x27018: 0x6cceb220, 0x27019: 0x6d019e20, 0x2701a: 0x6cafe820,
+-	0x27025: 0x6c98dc20, 0x27027: 0x6d1ade20,
+-	0x27029: 0x6c0f0a20, 0x2702b: 0x6d3b0220,
+-	0x2702e: 0x6c1cc820,
+-	0x27036: 0x6ca24820, 0x27037: 0x6ceb2820,
+-	0x27039: 0x6ce7be20, 0x2703a: 0x6d128820,
+-	// Block 0x9c1, offset 0x27040
+-	0x27041: 0x6c5a7220, 0x27043: 0x6cc60020,
+-	0x27045: 0x6d130620,
+-	0x2704b: 0x6ceb3a20,
+-	0x27056: 0x6d413a20, 0x27057: 0x6d23d220,
+-	0x2705a: 0x6c000c20,
+-	0x2705c: 0x6d38a420, 0x2705d: 0x6cec9c20,
+-	0x27061: 0x6c34ae20, 0x27062: 0x6d384420, 0x27063: 0x6c4cfc20,
+-	0x27064: 0x6c5a0420, 0x27065: 0x6c9e6220,
+-	0x27069: 0x6c211a20, 0x2706a: 0x6cbce420, 0x2706b: 0x6c45b220,
+-	0x2706c: 0x6ce69420, 0x2706d: 0x6c9a2a20,
+-	0x27071: 0x6ce1a420,
+-	0x27074: 0x6cc6c420, 0x27077: 0x6cc6c620,
+-	0x27078: 0x6cb66420, 0x27079: 0x6c4c9a20,
+-	0x2707d: 0x6cfe6220, 0x2707e: 0x6ce4ca20,
+-	// Block 0x9c2, offset 0x27080
+-	0x27085: 0x6cff4020,
+-	0x27088: 0x6d2db620, 0x27089: 0x6c258820,
+-	0x27094: 0x6c7ffc20,
+-	0x27098: 0x6cd02e20, 0x2709a: 0x6c830e20, 0x2709b: 0x6c879820,
+-	0x2709d: 0x6c14e620, 0x2709e: 0x6ca8d020, 0x2709f: 0x6c947620,
+-	0x270a1: 0x6ce63a20, 0x270a2: 0x6c5ba620,
+-	0x270a7: 0x6c458020,
+-	0x270b0: 0x6cb77220, 0x270b1: 0x6d20fa20, 0x270b3: 0x6d02d220,
+-	0x270b8: 0x6d26ae20, 0x270b9: 0x6c034e20, 0x270ba: 0x6c276a20, 0x270bb: 0x6c5eba20,
+-	0x270bc: 0x6d089220, 0x270bf: 0x6c743c20,
+-	// Block 0x9c3, offset 0x270c0
+-	0x270c0: 0x6ca99420,
+-	0x270c8: 0x6c325220, 0x270c9: 0x6c602620,
+-	0x270d0: 0x6cabc820, 0x270d1: 0x6c45f020, 0x270d2: 0x6c07ba20,
+-	0x270d4: 0x6c794220, 0x270d5: 0x6d105020, 0x270d6: 0x6c8f0820, 0x270d7: 0x6ca5ee20,
+-	0x270d8: 0x6d2cca20, 0x270d9: 0x6d1b5c20, 0x270da: 0x6ca72820, 0x270db: 0x6cad9020,
+-	0x270dd: 0x6c458e20, 0x270de: 0x6c109e20, 0x270df: 0x6c512e20,
+-	0x270e0: 0x6cc71220, 0x270e1: 0x6c4b5020,
+-	0x270e5: 0x6c09b620, 0x270e6: 0x6cf63020, 0x270e7: 0x6c712a20,
+-	0x270e8: 0x6c5cf420, 0x270e9: 0x6c09e420, 0x270eb: 0x6ce56420,
+-	0x270ec: 0x6d332820, 0x270ef: 0x6d181020,
+-	0x270f0: 0x6c22d220, 0x270f2: 0x6c0e2620,
+-	0x270f7: 0x6c459c20,
+-	0x270fa: 0x6c381a20,
+-	0x270fd: 0x6d0fce20, 0x270fe: 0x6d064820,
+-	// Block 0x9c4, offset 0x27100
+-	0x27101: 0x6c52b620,
+-	0x27104: 0x6d2a0a20, 0x27105: 0x6c148420, 0x27106: 0x6c537620,
+-	0x27108: 0x6ce4b820,
+-	0x2710c: 0x6d340a20, 0x2710d: 0x6d039220, 0x2710e: 0x6d062220,
+-	0x27111: 0x6d325820,
+-	0x27114: 0x6ced4020,
+-	0x27118: 0x6c75dc20,
+-	0x2711d: 0x6cf30c20,
+-	0x27120: 0x6c92c220, 0x27122: 0x6d32f220, 0x27123: 0x6cc71a20,
+-	0x27124: 0x6c1a3c20, 0x27125: 0x6c3ee620, 0x27127: 0x6c369820,
+-	0x27128: 0x6ce1e620, 0x27129: 0x6ce12e20, 0x2712b: 0x6c730020,
+-	0x2712c: 0x6c17c020, 0x2712d: 0x6cde9620, 0x2712e: 0x6c2c0420,
+-	0x27130: 0x6d3fc020, 0x27133: 0x6c794c20,
+-	0x27134: 0x6ce99820, 0x27136: 0x6c794e20,
+-	// Block 0x9c5, offset 0x27140
+-	0x27145: 0x6cc71c20, 0x27146: 0x6d276420, 0x27147: 0x6c517a20,
+-	0x27148: 0x6d400820, 0x27149: 0x6c235e20, 0x2714a: 0x6cbfcc20,
+-	0x2714e: 0x6ca2b420, 0x2714f: 0x6c346420,
+-	0x27150: 0x6d065a20, 0x27151: 0x6c795620, 0x27152: 0x6cfd1220,
+-	0x2715b: 0x6c31ba20,
+-	0x2715c: 0x6c76ee20, 0x2715e: 0x6d1bf020,
+-	0x27162: 0x6d3e9620,
+-	0x27167: 0x6c5a0620,
+-	0x27169: 0x6caed020, 0x2716b: 0x6c86ae20,
+-	0x2716d: 0x6c0f8220, 0x2716e: 0x6c444420, 0x2716f: 0x6c716620,
+-	0x27170: 0x6c783420, 0x27172: 0x6c55ce20, 0x27173: 0x6d115820,
+-	0x27174: 0x6ce14820, 0x27176: 0x6cbf7020, 0x27177: 0x6cc72820,
+-	0x27178: 0x6c8f1e20, 0x27179: 0x6c5c5e20, 0x2717a: 0x6c5f6220,
+-	// Block 0x9c6, offset 0x27180
+-	0x27189: 0x6d371a20, 0x2718b: 0x6ce15220,
+-	0x2718c: 0x6d355c20, 0x2718d: 0x6c775e20,
+-	0x27194: 0x6d107220, 0x27196: 0x6ce18420, 0x27197: 0x6c52d820,
+-	0x2719b: 0x6c897820,
+-	0x2719d: 0x6c12a020,
+-	0x271a1: 0x6ca3aa20, 0x271a2: 0x6d400e20,
+-	0x271a4: 0x6c2af420, 0x271a6: 0x6c68a220, 0x271a7: 0x6caeec20,
+-	0x271a9: 0x6c49fa20, 0x271aa: 0x6c377420, 0x271ab: 0x6c670620,
+-	0x271ac: 0x6c69d220, 0x271ad: 0x6caaca20, 0x271ae: 0x6d2a6220,
+-	0x271b3: 0x6caef620,
+-	0x271b4: 0x6c292020, 0x271b6: 0x6cc1f620, 0x271b7: 0x6c889620,
+-	0x271b8: 0x6ca2be20, 0x271b9: 0x6c805220,
+-	0x271be: 0x6c3baa20,
+-	// Block 0x9c7, offset 0x271c0
+-	0x271c2: 0x6c5d0e20,
+-	0x271c6: 0x6c7bb420,
+-	0x271c8: 0x6d1b2a20, 0x271c9: 0x6cd69c20, 0x271ca: 0x6c671e20,
+-	0x271d2: 0x6c964420,
+-	0x271d4: 0x6c933c20,
+-	0x271da: 0x6c446a20, 0x271db: 0x6cc51220,
+-	0x271de: 0x6cb22e20,
+-	0x271e0: 0x6c900a20,
+-	0x271e4: 0x6d320c20, 0x271e5: 0x6cfd4c20,
+-	0x271e8: 0x6c8c8e20, 0x271e9: 0x6c88aa20, 0x271ea: 0x6ccd2420, 0x271eb: 0x6c0fd420,
+-	0x271ec: 0x6c87a820,
+-	0x271f3: 0x6d013a20,
+-	0x271f4: 0x6c446e20, 0x271f5: 0x6c9fe020, 0x271f6: 0x6c88ae20,
+-	0x271f9: 0x6c753c20, 0x271fa: 0x6d38c820,
+-	0x271ff: 0x6c784820,
+-	// Block 0x9c8, offset 0x27200
+-	0x27201: 0x6c2f2a20, 0x27203: 0x6d30ce20,
+-	0x27205: 0x6cd4ac20, 0x27206: 0x6c5e9020, 0x27207: 0x6c8f7c20,
+-	0x27208: 0x6c49ea20, 0x27209: 0x6d2a5620, 0x2720a: 0x6cfd4420, 0x2720b: 0x6cb8ae20,
+-	0x2720d: 0x6ccfd820,
+-	0x27210: 0x6d1ae020, 0x27211: 0x6c6be420,
+-	0x27214: 0x6ccffe20, 0x27215: 0x6cd00020, 0x27216: 0x6cc95220,
+-	0x2721b: 0x6cf8c020,
+-	0x27221: 0x6c7aac20, 0x27223: 0x6cc1c620,
+-	0x27225: 0x6c443e20, 0x27226: 0x6c050820,
+-	0x27228: 0x6c0a7c20, 0x27229: 0x6cb92e20,
+-	0x27230: 0x6c0d6420, 0x27231: 0x6c050a20, 0x27233: 0x6d42ae20,
+-	0x27234: 0x6cb0d020, 0x27236: 0x6c5e3620,
+-	0x2723e: 0x6c051020,
+-	// Block 0x9c9, offset 0x27240
+-	0x2724a: 0x6ca9d820,
+-	0x2724c: 0x6c18fc20, 0x2724e: 0x6cae4e20,
+-	0x27251: 0x6c3f2e20, 0x27252: 0x6ce88220,
+-	0x2725c: 0x6cb04e20, 0x2725d: 0x6cb36420,
+-	0x27260: 0x6c1b7420, 0x27263: 0x6d093e20,
+-	0x27264: 0x6cb74020, 0x27265: 0x6cf4b220,
+-	0x27268: 0x6d357e20, 0x27269: 0x6c2c1c20, 0x2726a: 0x6c22fe20, 0x2726b: 0x6d1ef420,
+-	0x27279: 0x6c230020,
+-	0x2727c: 0x6c2c1e20, 0x2727d: 0x6d3d2620, 0x2727f: 0x6d408020,
+-	// Block 0x9ca, offset 0x27280
+-	0x27280: 0x6c238c20, 0x27283: 0x6caca820,
+-	0x27284: 0x6d0d4c20, 0x27285: 0x6cb74e20, 0x27286: 0x6cc6fa20, 0x27287: 0x6c63a420,
+-	0x27289: 0x6d359220, 0x2728a: 0x6cc00e20, 0x2728b: 0x6d268a20,
+-	0x2728d: 0x6cd32420,
+-	0x27291: 0x6c4fc020,
+-	0x27299: 0x6ceab220,
+-	0x2729c: 0x6c0cde20, 0x2729e: 0x6c770020,
+-	0x272a2: 0x6c21aa20,
+-	0x272a4: 0x6c229020, 0x272a6: 0x6d1ad020, 0x272a7: 0x6cd34c20,
+-	0x272a8: 0x6ca3b820, 0x272a9: 0x6cc85820, 0x272ab: 0x6d0f9e20,
+-	0x272ac: 0x6c1a9820, 0x272ae: 0x6c21f820,
+-	0x272b1: 0x6c457620, 0x272b2: 0x6c9c4220,
+-	0x272b4: 0x6c612e20,
+-	0x272bc: 0x6c44b220, 0x272bd: 0x6d2a6c20,
+-	// Block 0x9cb, offset 0x272c0
+-	0x272c1: 0x6c081420,
+-	0x272c7: 0x6d030c20,
+-	0x272c8: 0x6c7df020, 0x272ca: 0x6c2e8e20,
+-	0x272cd: 0x6ce66a20,
+-	0x272da: 0x6cd71c20,
+-	0x272de: 0x6c275620,
+-	0x272e6: 0x6c851020,
+-	0x272e8: 0x6d1e2820, 0x272e9: 0x6c684220,
+-	0x272ec: 0x6cde0420, 0x272ed: 0x6cc24620, 0x272ee: 0x6d1a6020, 0x272ef: 0x6d24e820,
+-	0x272f0: 0x6c6abc20, 0x272f2: 0x6cb8da20, 0x272f3: 0x6d10a020,
+-	0x272f4: 0x6d0ba620, 0x272f7: 0x6cbe4a20,
+-	0x272ff: 0x6cadd420,
+-	// Block 0x9cc, offset 0x27300
+-	0x27317: 0x6c635820,
+-	0x27319: 0x6ce82c20, 0x2731b: 0x6ce2ec20,
+-	0x27321: 0x6c33f620, 0x27322: 0x6c15ba20, 0x27323: 0x6c636820,
+-	0x27324: 0x6c1c2820, 0x27325: 0x6c64aa20, 0x27326: 0x6cd5e020,
+-	0x2732f: 0x6cde5a20,
+-	// Block 0x9cd, offset 0x27340
+-	0x27355: 0x6d33ea20, 0x27357: 0x6d256e20,
+-	0x2735a: 0x6c54d420,
+-	0x2735c: 0x6c8b1220,
+-	0x27360: 0x6d2ad420, 0x27362: 0x6c1f5e20,
+-	0x27366: 0x6cc0ba20, 0x27367: 0x6c07fa20,
+-	0x27379: 0x6c588620, 0x2737a: 0x6c7aca20, 0x2737b: 0x6cd10c20,
+-	0x2737d: 0x6c6afe20, 0x2737f: 0x6cee2c20,
+-	// Block 0x9ce, offset 0x27380
+-	0x27383: 0x6c54de20,
+-	0x2738a: 0x6d2ae620, 0x2738b: 0x6d297020,
+-	0x2738c: 0x6d106420, 0x2738e: 0x6c1bba20, 0x2738f: 0x6c701220,
+-	0x2739a: 0x6c89fe20, 0x2739b: 0x6d209620,
+-	0x273a0: 0x6c0b4a20, 0x273a2: 0x6c7bc820,
+-	0x273ac: 0x6c1e4a20, 0x273ad: 0x6d0b3620, 0x273ae: 0x6d3d8620,
+-	0x273b0: 0x6cbcda20, 0x273b1: 0x6cfcf020, 0x273b3: 0x6d250620,
+-	0x273b4: 0x6cf46e20, 0x273b5: 0x6c693620, 0x273b6: 0x6cfe5020, 0x273b7: 0x6ccc7420,
+-	0x273b9: 0x6d36cc20,
+-	0x273bc: 0x6c1d5a20, 0x273be: 0x6c0b0620, 0x273bf: 0x6ceeb820,
+-	// Block 0x9cf, offset 0x273c0
+-	0x273d3: 0x6c2a3220,
+-	0x273dd: 0x6d23d820, 0x273de: 0x6ce9b820,
+-	0x273e1: 0x6c17c220,
+-	0x273e5: 0x6c5c4420, 0x273e6: 0x6cba2620,
+-	0x273e8: 0x6cf01a20,
+-	0x273f0: 0x6d1f7420,
+-	0x273fc: 0x6c2ca020, 0x273fe: 0x6c26f620,
+-	// Block 0x9d0, offset 0x27400
+-	0x27401: 0x6d1f7620, 0x27402: 0x6c702620, 0x27403: 0x6ce9bc20,
+-	0x27404: 0x6d297620, 0x27407: 0x6c5c6020,
+-	0x27409: 0x6ccc8220,
+-	0x2740c: 0x6c5e1020,
+-	0x27414: 0x6d115a20,
+-	0x27419: 0x6cfd1e20,
+-	0x2741e: 0x6cfd2020,
+-	0x2742c: 0x6c2caa20, 0x2742e: 0x6c703220,
+-	0x27432: 0x6c5c7420,
+-	0x27434: 0x6c77cc20, 0x27435: 0x6d1f8420,
+-	0x27438: 0x6c870e20,
+-	0x2743c: 0x6c201420, 0x2743e: 0x6c1b6820,
+-	// Block 0x9d1, offset 0x27440
+-	0x27440: 0x6c5e3820, 0x27442: 0x6d1f9020,
+-	0x27444: 0x6d270e20,
+-	0x2744e: 0x6cded820, 0x2744f: 0x6d29b420,
+-	0x27453: 0x6ca8ac20,
+-	0x27454: 0x6d3b4a20,
+-	0x27461: 0x6cfc6220,
+-	0x27469: 0x6cd22a20, 0x2746b: 0x6c79ca20,
+-	0x2746c: 0x6cb6c620, 0x2746d: 0x6ce91420, 0x2746e: 0x6c387e20, 0x2746f: 0x6c258e20,
+-	0x27472: 0x6cea3820, 0x27473: 0x6c137420,
+-	0x27474: 0x6c110020, 0x27475: 0x6cfe1420, 0x27476: 0x6cadfc20, 0x27477: 0x6c6e0220,
+-	0x27478: 0x6cb56a20, 0x27479: 0x6cceae20, 0x2747a: 0x6ca97420, 0x2747b: 0x6ca30420,
+-	0x2747d: 0x6cbd5020,
+-	// Block 0x9d2, offset 0x27480
+-	0x2748d: 0x6c090c20,
+-	0x27493: 0x6c092420,
+-	0x27494: 0x6c05a220, 0x27495: 0x6c0b7620, 0x27496: 0x6d3e0220, 0x27497: 0x6ca30a20,
+-	0x27498: 0x6cf07020, 0x27499: 0x6c4fbe20,
+-	0x274a1: 0x6c6c8220, 0x274a3: 0x6d333c20,
+-	0x274a7: 0x6cbc8220,
+-	0x274ae: 0x6c501620, 0x274af: 0x6ce71e20,
+-	0x274b0: 0x6d2a4020, 0x274b1: 0x6cd15420, 0x274b2: 0x6c25a420, 0x274b3: 0x6c597e20,
+-	0x274b4: 0x6cc78e20, 0x274b5: 0x6d292e20, 0x274b6: 0x6ca6f820,
+-	0x274be: 0x6cfa8620,
+-	// Block 0x9d3, offset 0x274c0
+-	0x274c8: 0x6cc2bc20, 0x274c9: 0x6c619a20, 0x274ca: 0x6d1a3620, 0x274cb: 0x6c850620,
+-	0x274cc: 0x6c984620, 0x274cd: 0x6cceca20, 0x274ce: 0x6c4e8e20, 0x274cf: 0x6c260e20,
+-	0x274d0: 0x6c759c20, 0x274d1: 0x6c61bc20, 0x274d2: 0x6c107820, 0x274d3: 0x6c905420,
+-	0x274d4: 0x6c3d2220, 0x274d5: 0x6d1f0e20, 0x274d6: 0x6c7b1c20,
+-	0x274dc: 0x6cfe2220,
+-	0x274e1: 0x6d279420, 0x274e3: 0x6cbd5e20,
+-	0x274e4: 0x6c5b2c20, 0x274e5: 0x6cb42e20,
+-	0x274eb: 0x6c83b220,
+-	0x274ec: 0x6cadcc20, 0x274ed: 0x6cd4c620, 0x274ee: 0x6c707620, 0x274ef: 0x6d14e020,
+-	0x274f0: 0x6d32a820, 0x274f1: 0x6c1d0e20, 0x274f3: 0x6cf77620,
+-	0x274f5: 0x6c561a20, 0x274f6: 0x6cc74420,
+-	// Block 0x9d4, offset 0x27500
+-	0x2750c: 0x6c590c20, 0x2750d: 0x6cbc3c20, 0x2750e: 0x6d33d020, 0x2750f: 0x6d1c6c20,
+-	0x27510: 0x6cf7e220, 0x27511: 0x6cbb7620, 0x27512: 0x6c61fa20, 0x27513: 0x6d32bc20,
+-	0x27514: 0x6c59b420, 0x27516: 0x6d210a20, 0x27517: 0x6d405a20,
+-	0x27518: 0x6c99f420,
+-	0x2751c: 0x6cd13220,
+-	0x27529: 0x6cc2e620,
+-	0x27530: 0x6c676020, 0x27531: 0x6c512020, 0x27533: 0x6ce75220,
+-	0x27534: 0x6c513020, 0x27535: 0x6cf15220, 0x27536: 0x6d17cc20, 0x27537: 0x6cacfe20,
+-	0x2753a: 0x6cf22620, 0x2753b: 0x6cb99820,
+-	0x2753c: 0x6c862020, 0x2753d: 0x6d150a20, 0x2753e: 0x6c20ac20, 0x2753f: 0x6d06e820,
+-	// Block 0x9d5, offset 0x27540
+-	0x27540: 0x6cefd020,
+-	0x27546: 0x6c439420,
+-	0x27548: 0x6d226220, 0x2754b: 0x6d2d4420,
+-	0x2754c: 0x6c41a220, 0x2754d: 0x6cb8f620, 0x2754e: 0x6c773220, 0x2754f: 0x6c840220,
+-	0x27550: 0x6cd00220, 0x27551: 0x6c499220, 0x27553: 0x6cb17c20,
+-	0x27556: 0x6c840420,
+-	0x27558: 0x6c562620, 0x2755b: 0x6ce8ce20,
+-	0x2755c: 0x6cd75620, 0x2755e: 0x6c56aa20, 0x2755f: 0x6c840620,
+-	0x27562: 0x6c910a20,
+-	0x27566: 0x6c297020,
+-	0x27568: 0x6d42a420, 0x27569: 0x6cccf620, 0x2756b: 0x6ccf6e20,
+-	0x2756d: 0x6c3cb620, 0x2756e: 0x6c726e20, 0x2756f: 0x6ce76e20,
+-	0x27570: 0x6c691a20, 0x27571: 0x6cbbe620, 0x27572: 0x6c42d420, 0x27573: 0x6d3e7020,
+-	0x27574: 0x6c59e620, 0x27575: 0x6ccd0620,
+-	0x27578: 0x6cdff620,
+-	// Block 0x9d6, offset 0x27580
+-	0x2758c: 0x6ceaca20, 0x2758e: 0x6c8e2220,
+-	0x27590: 0x6c1a2e20, 0x27591: 0x6cf27020, 0x27592: 0x6d425020, 0x27593: 0x6d23da20,
+-	0x27595: 0x6d3a2220, 0x27597: 0x6cc45420,
+-	0x27598: 0x6cf80a20, 0x27599: 0x6cc1b620, 0x2759b: 0x6c442820,
+-	0x275a2: 0x6cb52a20, 0x275a3: 0x6d05e020,
+-	0x275a8: 0x6c415220, 0x275a9: 0x6cc3f820, 0x275aa: 0x6c1ddc20, 0x275ab: 0x6c9b4e20,
+-	0x275b2: 0x6cd02020, 0x275b3: 0x6cc1c820,
+-	0x275b6: 0x6cbbb420, 0x275b7: 0x6c11b420,
+-	0x275ba: 0x6c86b020,
+-	0x275bc: 0x6ceda220, 0x275bd: 0x6c826620, 0x275be: 0x6d03a820, 0x275bf: 0x6c80ea20,
+-	// Block 0x9d7, offset 0x275c0
+-	0x275c2: 0x6cd3ec20, 0x275c3: 0x6d330020,
+-	0x275c4: 0x6c38ce20,
+-	0x275ca: 0x6d371c20,
+-	0x275cf: 0x6d1aa420,
+-	0x275d1: 0x6c86de20,
+-	0x275d6: 0x6ca08820, 0x275d7: 0x6cf04020,
+-	0x275d9: 0x6d1c1020, 0x275da: 0x6cc4e420,
+-	0x275e0: 0x6cc2a820,
+-	0x275e5: 0x6c95ce20,
+-	0x275f2: 0x6c275820,
+-	0x275f4: 0x6d1b4e20, 0x275f5: 0x6c08da20, 0x275f6: 0x6c438820,
+-	0x275f8: 0x6cf20a20, 0x275f9: 0x6d0d7620, 0x275fa: 0x6c9e1e20,
+-	0x275fc: 0x6c42a020, 0x275fd: 0x6cc05620, 0x275fe: 0x6d33da20,
+-	// Block 0x9d8, offset 0x27600
+-	0x2760b: 0x6c471c20,
+-	0x2760c: 0x6ce75420, 0x2760e: 0x6c8d1420, 0x2760f: 0x6ce33620,
+-	0x27610: 0x6c224c20, 0x27611: 0x6d150c20, 0x27612: 0x6c395a20, 0x27613: 0x6cb31220,
+-	0x27614: 0x6c09b820, 0x27616: 0x6c064e20,
+-	0x2761f: 0x6cae7620,
+-	0x27621: 0x6cdb8420,
+-	0x27624: 0x6cd92820, 0x27625: 0x6cef1a20, 0x27626: 0x6cff9220,
+-	0x2762c: 0x6c504c20, 0x2762d: 0x6d0dac20,
+-	0x27636: 0x6d152620, 0x27637: 0x6d2a1e20,
+-	0x27638: 0x6d1d0020, 0x27639: 0x6ca43220,
+-	0x2763f: 0x6d289620,
+-	// Block 0x9d9, offset 0x27640
+-	0x27641: 0x6ce50c20, 0x27642: 0x6cf68a20, 0x27643: 0x6c69b420,
+-	0x27644: 0x6d0cbc20,
+-	0x2764c: 0x6ca55e20, 0x2764d: 0x6ce07020, 0x2764e: 0x6d0eaa20, 0x2764f: 0x6ce51a20,
+-	0x27650: 0x6d36ce20, 0x27651: 0x6c1d7a20, 0x27652: 0x6ce23a20,
+-	0x27657: 0x6d2cdc20,
+-	0x2765e: 0x6c9e3a20,
+-	0x27661: 0x6cf47020, 0x27662: 0x6d1b0220, 0x27663: 0x6d0eac20,
+-	0x27664: 0x6c81ba20,
+-	0x27669: 0x6cb31e20, 0x2766b: 0x6c5d4620,
+-	0x2766c: 0x6c4d4620, 0x2766d: 0x6ca21a20, 0x2766e: 0x6c236020,
+-	0x27671: 0x6c7aae20, 0x27672: 0x6c1d8420,
+-	0x27674: 0x6d1ff020,
+-	0x27678: 0x6d3da020, 0x2767b: 0x6cd9e420,
+-	// Block 0x9da, offset 0x27680
+-	0x27682: 0x6d1b7e20,
+-	0x27685: 0x6d41da20, 0x27686: 0x6cca7420, 0x27687: 0x6c8f4a20,
+-	0x27688: 0x6c4f2020, 0x27689: 0x6cf0ec20, 0x2768a: 0x6c9b6020, 0x2768b: 0x6c55d020,
+-	0x2768c: 0x6c86b220, 0x2768e: 0x6c9d9c20,
+-	0x27690: 0x6c054020, 0x27691: 0x6c65f020,
+-	0x2769c: 0x6cc40620,
+-	0x276a0: 0x6c9b6220, 0x276a2: 0x6ca21c20, 0x276a3: 0x6c53ac20,
+-	0x276a4: 0x6c56d820, 0x276a5: 0x6c9c8e20, 0x276a6: 0x6ccca820,
+-	0x276a9: 0x6cce2620, 0x276aa: 0x6c17c620,
+-	0x276ac: 0x6d3dc220, 0x276ae: 0x6d342220, 0x276af: 0x6ca77020,
+-	0x276b5: 0x6c62b220,
+-	0x276b8: 0x6c784020, 0x276b9: 0x6d330620,
+-	0x276bf: 0x6c281420,
+-	// Block 0x9db, offset 0x276c0
+-	0x276c0: 0x6c8a8220, 0x276c1: 0x6d2e3020, 0x276c2: 0x6c460620, 0x276c3: 0x6c818c20,
+-	0x276c4: 0x6c571e20, 0x276c5: 0x6c1fd220, 0x276c7: 0x6c660c20,
+-	0x276c8: 0x6c7d3220,
+-	0x276cd: 0x6ccf0220,
+-	0x276d4: 0x6c191c20, 0x276d5: 0x6ce08820, 0x276d7: 0x6c55f820,
+-	0x276d8: 0x6c9b9e20, 0x276d9: 0x6cada420, 0x276da: 0x6d2e3820, 0x276db: 0x6c16d620,
+-	0x276dd: 0x6c41f820,
+-	0x276e0: 0x6d193a20, 0x276e2: 0x6cdcb620,
+-	0x276e6: 0x6d076420, 0x276e7: 0x6c62de20,
+-	0x276e8: 0x6c808e20,
+-	0x276ec: 0x6d159620, 0x276ef: 0x6c9dae20,
+-	0x276f1: 0x6c9f1420,
+-	0x276f5: 0x6c24a620,
+-	0x276f8: 0x6c805a20, 0x276fb: 0x6d0c4e20,
+-	0x276fe: 0x6c9ccc20,
+-	// Block 0x9dc, offset 0x27700
+-	0x27702: 0x6d1e6820, 0x27703: 0x6c125420,
+-	0x27704: 0x6c664420, 0x27707: 0x6cda0a20,
+-	0x2770e: 0x6d0d2a20,
+-	0x27711: 0x6c736020,
+-	0x27715: 0x6c369c20,
+-	0x27718: 0x6c3bf220, 0x2771a: 0x6c3bf620,
+-	0x27721: 0x6c4a2a20, 0x27722: 0x6c96fc20,
+-	0x27724: 0x6c8ab820,
+-	0x27729: 0x6c1cca20, 0x2772b: 0x6c840820,
+-	0x27731: 0x6d349c20,
+-	0x27734: 0x6d024820, 0x27737: 0x6c1dfc20,
+-	0x27739: 0x6c60fc20,
+-	0x2773d: 0x6caf5c20,
+-	// Block 0x9dd, offset 0x27740
+-	0x27742: 0x6c6abe20,
+-	0x27747: 0x6d38e420,
+-	0x2774d: 0x6d046c20,
+-	0x27751: 0x6c7bfc20,
+-	0x27759: 0x6c6e2220, 0x2775b: 0x6c56a020,
+-	0x2775e: 0x6cb99c20,
+-	0x27763: 0x6c133220,
+-	0x27766: 0x6cb60420, 0x27767: 0x6ced3220,
+-	0x27768: 0x6c98ec20, 0x2776a: 0x6c30f020,
+-	0x27774: 0x6c79d220, 0x27776: 0x6c277c20,
+-	0x27778: 0x6ca4b420, 0x2777a: 0x6c536a20,
+-	// Block 0x9de, offset 0x27780
+-	0x27782: 0x6c7f4020, 0x27783: 0x6c34aa20,
+-	0x27784: 0x6cb91020, 0x27786: 0x6d1a8820,
+-	0x27796: 0x6c911220, 0x27797: 0x6c5ae020,
+-	0x2779b: 0x6c402e20,
+-	0x2779c: 0x6c98f420, 0x2779e: 0x6d389a20,
+-	0x277a1: 0x6d1dfa20,
+-	0x277ad: 0x6c817020, 0x277ae: 0x6c609c20, 0x277af: 0x6d186a20,
+-	0x277b0: 0x6c8e8c20, 0x277b1: 0x6c235220, 0x277b3: 0x6ca43c20,
+-	// Block 0x9df, offset 0x277c0
+-	0x277d0: 0x6cea2620, 0x277d1: 0x6cfe5220,
+-	0x277d5: 0x6c0bba20, 0x277d6: 0x6c207820, 0x277d7: 0x6cf52020,
+-	0x277d9: 0x6c70c620,
+-	0x277e5: 0x6d005220, 0x277e6: 0x6caf9220, 0x277e7: 0x6d3da220,
+-	0x277e8: 0x6cc8e420, 0x277ea: 0x6ccafa20, 0x277eb: 0x6d3f6220,
+-	0x277ed: 0x6d336220,
+-	0x277f0: 0x6d40da20, 0x277f1: 0x6cc14220, 0x277f3: 0x6c1c7a20,
+-	0x277f5: 0x6d36f020,
+-	// Block 0x9e0, offset 0x27800
+-	0x27817: 0x6cc37a20,
+-	0x27818: 0x6cb92020, 0x27819: 0x6d0afc20, 0x2781a: 0x6c17c420, 0x2781b: 0x6c517c20,
+-	0x2781c: 0x6cc80420,
+-	0x27820: 0x6c70cc20, 0x27821: 0x6cf52820,
+-	0x2782c: 0x6c1c7c20, 0x2782d: 0x6c7c0420, 0x2782f: 0x6c240020,
+-	0x27830: 0x6cc89220, 0x27831: 0x6c7e1e20, 0x27832: 0x6c1b5e20, 0x27833: 0x6d40e420,
+-	0x27834: 0x6c688620, 0x27836: 0x6d21c420, 0x27837: 0x6ce8fe20,
+-	0x27838: 0x6c9b6420, 0x27839: 0x6c266c20, 0x2783a: 0x6cd7a020,
+-	// Block 0x9e1, offset 0x27840
+-	0x27865: 0x6c3c6c20, 0x27866: 0x6c469020, 0x27867: 0x6c301c20,
+-	0x27868: 0x6c142220, 0x27869: 0x6c99be20, 0x2786a: 0x6c15e820, 0x2786b: 0x6c0b1020,
+-	0x2786c: 0x6d241e20, 0x2786f: 0x6cecea20,
+-	0x27870: 0x6d40e620, 0x27872: 0x6d3ea420,
+-	0x27874: 0x6c1fec20, 0x27875: 0x6ced5620, 0x27876: 0x6cebf420,
+-	0x27878: 0x6cc2a620, 0x2787b: 0x6ced5820,
+-	0x2787d: 0x6cfa5020,
+-	// Block 0x9e2, offset 0x27880
+-	0x27884: 0x6d1d5620, 0x27885: 0x6c66e820,
+-	0x27888: 0x6cf04220, 0x27889: 0x6ce39a20, 0x2788a: 0x6ccaca20,
+-	0x2788c: 0x6cb67a20, 0x2788d: 0x6ccc2020, 0x2788e: 0x6d244220, 0x2788f: 0x6c60e220,
+-	0x27890: 0x6c314420, 0x27891: 0x6c15f620, 0x27892: 0x6ce96c20,
+-	0x27895: 0x6c8ec420, 0x27897: 0x6d3cba20,
+-	0x278b3: 0x6cc89420,
+-	0x278b6: 0x6d0eda20, 0x278b7: 0x6c47ea20,
+-	0x278b9: 0x6c86e220, 0x278ba: 0x6c13ba20,
+-	0x278be: 0x6c2cac20,
+-	// Block 0x9e3, offset 0x278c0
+-	0x278c0: 0x6d2e2a20, 0x278c1: 0x6cb32220,
+-	0x278d2: 0x6c912620,
+-	0x278d4: 0x6d374c20,
+-	// Block 0x9e4, offset 0x27900
+-	0x27901: 0x6c888a20,
+-	0x27905: 0x6c95ca20,
+-	0x2790d: 0x6c352420,
+-	0x27910: 0x6c750820, 0x27911: 0x6c873420, 0x27912: 0x6c7ff220,
+-	0x27914: 0x6cc89620, 0x27915: 0x6c474220, 0x27916: 0x6c155c20, 0x27917: 0x6d060620,
+-	0x2791a: 0x6d356420,
+-	// Block 0x9e5, offset 0x27940
+-	0x27941: 0x6d097c20, 0x27942: 0x6c0e9c20, 0x27943: 0x6c19aa20,
+-	0x27945: 0x6d3b4220, 0x27946: 0x6c522a20,
+-	0x27949: 0x6c04ac20,
+-	0x27953: 0x6c2f0820,
+-	0x27956: 0x6d2e3a20, 0x27957: 0x6c4ca620,
+-	0x2795a: 0x6c0c5420, 0x2795b: 0x6c7ec620,
+-	0x2797a: 0x6c6c7620,
+-	// Block 0x9e6, offset 0x27980
+-	0x27982: 0x6c411c20,
+-	0x27992: 0x6c9c1e20,
+-	0x27994: 0x6d247e20,
+-	0x279aa: 0x6cf82a20,
+-	0x279ac: 0x6cb17820, 0x279ad: 0x6cd85020,
+-	0x279b4: 0x6c2b0020,
+-	0x279b8: 0x6c219e20, 0x279b9: 0x6c2bbe20, 0x279ba: 0x6c5fa820, 0x279bb: 0x6c157620,
+-	0x279bf: 0x6d3dea20,
+-	// Block 0x9e7, offset 0x279c0
+-	0x279d3: 0x6c115220,
+-	0x279de: 0x6c681620,
+-	0x279f2: 0x6ce80220,
+-	0x279fd: 0x6c84e820,
+-	// Block 0x9e8, offset 0x27a00
+-	0x27a02: 0x6cba9020,
+-	0x27a06: 0x6c21a020,
+-	0x27a0f: 0x6cdef820,
+-	0x27a11: 0x6c2e5220, 0x27a13: 0x6c664820,
+-	0x27a1b: 0x6d356820,
+-	0x27a1c: 0x6c753220, 0x27a1e: 0x6ca0a420,
+-	0x27a20: 0x6c959620,
+-	0x27a26: 0x6c062420,
+-	0x27a2d: 0x6d415e20,
+-	0x27a35: 0x6d300820,
+-	0x27a38: 0x6d220c20, 0x27a3b: 0x6c062a20,
+-	0x27a3e: 0x6c969420, 0x27a3f: 0x6cf85020,
+-	// Block 0x9e9, offset 0x27a40
+-	0x27a40: 0x6c567c20, 0x27a41: 0x6d171220, 0x27a42: 0x6c355020, 0x27a43: 0x6c470220,
+-	0x27a44: 0x6ce89e20, 0x27a45: 0x6d314a20, 0x27a47: 0x6cc07220,
+-	0x27a48: 0x6cdaba20, 0x27a49: 0x6c89c620, 0x27a4a: 0x6cc11a20, 0x27a4b: 0x6c8d2620,
+-	0x27a4c: 0x6c499420, 0x27a4d: 0x6c80e420, 0x27a4e: 0x6ce7dc20, 0x27a4f: 0x6c266620,
+-	0x27a50: 0x6c911e20, 0x27a51: 0x6c5a1220, 0x27a52: 0x6cd47e20, 0x27a53: 0x6c688820,
+-	0x27a54: 0x6d41f620, 0x27a55: 0x6c411a20, 0x27a56: 0x6cef5220,
+-	0x27a59: 0x6c7d4e20, 0x27a5a: 0x6c32bc20, 0x27a5b: 0x6cd92020,
+-	0x27a5c: 0x6cb5e020, 0x27a5d: 0x6d101a20,
+-	0x27a61: 0x6cd37820, 0x27a63: 0x6c411420,
+-	0x27a66: 0x6c2a1a20, 0x27a67: 0x6d11b220,
+-	0x27a6b: 0x6cb99e20,
+-	0x27a6d: 0x6cce7220, 0x27a6e: 0x6c16ae20, 0x27a6f: 0x6ca05020,
+-	0x27a71: 0x6ca05a20,
+-	0x27a75: 0x6ca50620,
+-	0x27a78: 0x6c232220, 0x27a7a: 0x6ca84e20, 0x27a7b: 0x6d2f6a20,
+-	0x27a7c: 0x6c133420, 0x27a7f: 0x6cd92a20,
+-	// Block 0x9ea, offset 0x27a80
+-	0x27a80: 0x6ca85820, 0x27a81: 0x6c22dc20,
+-	0x27a84: 0x6c75de20, 0x27a86: 0x6cce7e20,
+-	0x27a88: 0x6d3a2420, 0x27a89: 0x6c34b020, 0x27a8a: 0x6c01ce20, 0x27a8b: 0x6c088c20,
+-	0x27a8e: 0x6ce41820,
+-	0x27a90: 0x6cb06a20, 0x27a91: 0x6cf9ee20, 0x27a92: 0x6cc09420, 0x27a93: 0x6cd14e20,
+-	0x27a97: 0x6ce0d820,
+-	0x27a9b: 0x6c978420,
+-	0x27a9c: 0x6cb10420, 0x27a9e: 0x6ce43420, 0x27a9f: 0x6cc6cc20,
+-	0x27aa7: 0x6c237220,
+-	0x27aaa: 0x6c5f7a20, 0x27aab: 0x6c3cc020,
+-	0x27aac: 0x6cf53c20, 0x27aad: 0x6c69d620, 0x27aae: 0x6c818e20, 0x27aaf: 0x6d2ba620,
+-	0x27ab0: 0x6caeee20, 0x27ab1: 0x6c11e420, 0x27ab3: 0x6ca9de20,
+-	0x27ab5: 0x6c160c20,
+-	0x27abe: 0x6c97a420, 0x27abf: 0x6c4ba820,
+-	// Block 0x9eb, offset 0x27ac0
+-	0x27ac0: 0x6ca7d820, 0x27ac1: 0x6c1d0220, 0x27ac2: 0x6c165820,
+-	0x27ac6: 0x6ca48a20,
+-	0x27ac9: 0x6cf95c20, 0x27aca: 0x6c6f6620, 0x27acb: 0x6c613020,
+-	0x27acc: 0x6d323420,
+-	0x27ad1: 0x6ce6ca20,
+-	0x27ad4: 0x6c9ace20, 0x27ad5: 0x6d26b220, 0x27ad7: 0x6d37bc20,
+-	0x27ad8: 0x6cea5620, 0x27ad9: 0x6cc8d220, 0x27ada: 0x6d01ba20, 0x27adb: 0x6cf63420,
+-	0x27add: 0x6ce6d220, 0x27ade: 0x6ca99820,
+-	0x27ae0: 0x6cee2820, 0x27ae1: 0x6c64ae20, 0x27ae3: 0x6c3b3420,
+-	0x27af2: 0x6c0ba620,
+-	0x27af7: 0x6d152820,
+-	0x27afa: 0x6c2ec420, 0x27afb: 0x6c5ef820,
+-	0x27afc: 0x6c41de20, 0x27aff: 0x6c64c420,
+-	// Block 0x9ec, offset 0x27b00
+-	0x27b00: 0x6c6ee220,
+-	0x27b06: 0x6c763820,
+-	0x27b0a: 0x6cc3d620,
+-	0x27b0c: 0x6ca40420, 0x27b0d: 0x6ca1de20, 0x27b0e: 0x6d072220, 0x27b0f: 0x6cd96a20,
+-	0x27b10: 0x6cd0c020, 0x27b11: 0x6c7bac20, 0x27b12: 0x6cc3e620, 0x27b13: 0x6cef2820,
+-	0x27b17: 0x6c2eda20,
+-	0x27b18: 0x6ca40a20, 0x27b1a: 0x6cc92a20, 0x27b1b: 0x6c45a220,
+-	0x27b1c: 0x6c313220, 0x27b1e: 0x6ca73020,
+-	0x27b21: 0x6c175020, 0x27b22: 0x6c515e20, 0x27b23: 0x6d0e9e20,
+-	0x27b29: 0x6ce8f020, 0x27b2a: 0x6c104420,
+-	0x27b2c: 0x6c559e20, 0x27b2d: 0x6d1e5820, 0x27b2f: 0x6cd2d620,
+-	0x27b30: 0x6c1f7220,
+-	0x27b39: 0x6cff0e20, 0x27b3a: 0x6c9ad620, 0x27b3b: 0x6c852a20,
+-	0x27b3c: 0x6ce37220, 0x27b3e: 0x6c64e620,
+-	// Block 0x9ed, offset 0x27b40
+-	0x27b42: 0x6d354e20, 0x27b43: 0x6c487220,
+-	0x27b44: 0x6c496220, 0x27b46: 0x6cb7cc20,
+-	0x27b48: 0x6c3a1820, 0x27b49: 0x6d229820, 0x27b4a: 0x6d309620, 0x27b4b: 0x6cf01c20,
+-	0x27b4c: 0x6c35ba20, 0x27b4d: 0x6c14da20, 0x27b4e: 0x6cf6e020,
+-	0x27b50: 0x6c47d420,
+-	0x27b57: 0x6cc3fa20,
+-	0x27b58: 0x6c5c4620, 0x27b5a: 0x6d00f620, 0x27b5b: 0x6d1bf420,
+-	0x27b5d: 0x6cdeaa20, 0x27b5e: 0x6cec5820, 0x27b5f: 0x6c3efe20,
+-	0x27b60: 0x6c6c0820, 0x27b61: 0x6cb0bc20,
+-	0x27b65: 0x6cd15020, 0x27b66: 0x6d21c620, 0x27b67: 0x6c7ace20,
+-	0x27b69: 0x6cb0ca20, 0x27b6a: 0x6d010620, 0x27b6b: 0x6caaac20,
+-	0x27b6c: 0x6cfd2420, 0x27b6d: 0x6c66ea20, 0x27b6e: 0x6d074e20,
+-	0x27b70: 0x6c0a7e20,
+-	0x27b74: 0x6ca41220, 0x27b76: 0x6c897020,
+-	0x27b78: 0x6cb13420,
+-	0x27b7c: 0x6c6eb820,
+-	// Block 0x9ee, offset 0x27b80
+-	0x27b80: 0x6cde1c20, 0x27b81: 0x6d0edc20, 0x27b82: 0x6c00f820,
+-	0x27b85: 0x6cff3020, 0x27b86: 0x6cbaf420, 0x27b87: 0x6cf48620,
+-	0x27b88: 0x6ce15620, 0x27b8a: 0x6c75f420,
+-	0x27b90: 0x6c7e2820,
+-	0x27b97: 0x6c813220,
+-	0x27b99: 0x6ca5b020,
+-	0x27b9c: 0x6c314a20, 0x27b9d: 0x6cd54620, 0x27b9f: 0x6c696220,
+-	0x27ba0: 0x6ca89c20, 0x27ba2: 0x6d21dc20,
+-	0x27ba8: 0x6c132020, 0x27baa: 0x6c696420,
+-	0x27bac: 0x6c57d620, 0x27bad: 0x6cf1c020, 0x27bae: 0x6d127020, 0x27baf: 0x6c35a020,
+-	0x27bb0: 0x6c49fe20, 0x27bb1: 0x6c572020, 0x27bb2: 0x6c68a620,
+-	0x27bba: 0x6c835820,
+-	0x27bbc: 0x6cce2820, 0x27bbd: 0x6d1e8020, 0x27bbf: 0x6c2ac220,
+-	// Block 0x9ef, offset 0x27bc0
+-	0x27bc0: 0x6c493820, 0x27bc1: 0x6ca97220, 0x27bc3: 0x6cdcc020,
+-	0x27bc4: 0x6cfe6c20, 0x27bc6: 0x6cc9b420, 0x27bc7: 0x6c168c20,
+-	0x27bce: 0x6cc90c20,
+-	0x27bd0: 0x6d277020, 0x27bd2: 0x6c3b4c20, 0x27bd3: 0x6c672420,
+-	0x27bd4: 0x6d076a20,
+-	0x27bd8: 0x6cf93020, 0x27bd9: 0x6cd54a20,
+-	0x27be5: 0x6d013220, 0x27be6: 0x6c87ac20,
+-	0x27be9: 0x6ce80420,
+-	0x27bec: 0x6c9d1020, 0x27bed: 0x6c162020, 0x27bee: 0x6c5d6a20,
+-	0x27bf1: 0x6d3bb820, 0x27bf2: 0x6d273420,
+-	0x27bfb: 0x6c801a20,
+-	0x27bfd: 0x6d0d2c20, 0x27bfe: 0x6c29a820, 0x27bff: 0x6cfe1820,
+-	// Block 0x9f0, offset 0x27c00
+-	0x27c00: 0x6d267220, 0x27c01: 0x6ce6b020, 0x27c02: 0x6c07d220, 0x27c03: 0x6cca4620,
+-	0x27c04: 0x6cfc9620, 0x27c05: 0x6c2e7a20, 0x27c06: 0x6cb09c20, 0x27c07: 0x6cb11220,
+-	0x27c09: 0x6cde0c20, 0x27c0b: 0x6c687220,
+-	0x27c0c: 0x6d126620, 0x27c0e: 0x6d271020,
+-	0x27c10: 0x6cc61420, 0x27c11: 0x6cbc1820, 0x27c12: 0x6cb56220, 0x27c13: 0x6c2da620,
+-	0x27c14: 0x6cb56420, 0x27c17: 0x6c4e7e20,
+-	0x27c18: 0x6d253220, 0x27c19: 0x6d1ee220, 0x27c1a: 0x6c5fd020, 0x27c1b: 0x6c412820,
+-	0x27c1c: 0x6c4d0620, 0x27c1d: 0x6cd30420, 0x27c1f: 0x6cc0c820,
+-	0x27c29: 0x6cf1fa20,
+-	0x27c2c: 0x6d321620, 0x27c2d: 0x6cb2f220, 0x27c2e: 0x6d0c5e20, 0x27c2f: 0x6c46e820,
+-	0x27c30: 0x6c720420, 0x27c31: 0x6ce52e20,
+-	0x27c37: 0x6c35d820,
+-	0x27c3a: 0x6d0ace20, 0x27c3b: 0x6c8c4620,
+-	0x27c3c: 0x6c092620,
+-	// Block 0x9f1, offset 0x27c40
+-	0x27c40: 0x6d3eea20, 0x27c41: 0x6c530820, 0x27c43: 0x6c347420,
+-	0x27c45: 0x6c333c20, 0x27c46: 0x6d087220,
+-	0x27c48: 0x6ccd3020, 0x27c4a: 0x6ccd3220, 0x27c4b: 0x6d10d220,
+-	0x27c4c: 0x6cc4b020,
+-	0x27c54: 0x6ceaf820, 0x27c57: 0x6c0dac20,
+-	0x27c58: 0x6d069e20, 0x27c59: 0x6cea1a20, 0x27c5a: 0x6c19d220,
+-	0x27c5c: 0x6c30fe20, 0x27c5d: 0x6d171420,
+-	0x27c61: 0x6c180820,
+-	0x27c75: 0x6c731a20, 0x27c76: 0x6c5eae20,
+-	0x27c78: 0x6d2fae20, 0x27c79: 0x6c07de20, 0x27c7b: 0x6ce4e220,
+-	// Block 0x9f2, offset 0x27c80
+-	0x27c80: 0x6cae6420,
+-	0x27c85: 0x6c3fda20,
+-	0x27c96: 0x6ceb7620,
+-	0x27c98: 0x6cfb3e20, 0x27c99: 0x6ca69420, 0x27c9a: 0x6c8f8620,
+-	0x27c9d: 0x6d3d4220, 0x27c9f: 0x6d32c020,
+-	0x27ca0: 0x6cd74820, 0x27ca1: 0x6d3f7c20, 0x27ca2: 0x6c3c4620, 0x27ca3: 0x6c32be20,
+-	0x27ca4: 0x6cb09420, 0x27ca5: 0x6d0d7820, 0x27ca6: 0x6cda1620, 0x27ca7: 0x6cc05820,
+-	0x27ca8: 0x6c362220, 0x27ca9: 0x6cb98e20, 0x27cab: 0x6cba0620,
+-	0x27cad: 0x6c10d420, 0x27cae: 0x6d0a8a20,
+-	0x27cb5: 0x6d3c8220,
+-	0x27cb8: 0x6c993a20, 0x27cb9: 0x6c68ee20,
+-	0x27cbf: 0x6d2dea20,
+-	// Block 0x9f3, offset 0x27cc0
+-	0x27cc0: 0x6caffa20, 0x27cc1: 0x6cf63620, 0x27cc2: 0x6d0e7c20, 0x27cc3: 0x6c3ab420,
+-	0x27cc4: 0x6ca83620, 0x27cc6: 0x6d364620,
+-	0x27cc8: 0x6cdd6a20, 0x27cca: 0x6d17d020,
+-	0x27ccc: 0x6c82c620, 0x27ccd: 0x6d06ea20, 0x27ccf: 0x6d17d220,
+-	0x27cd2: 0x6cee9620,
+-	0x27cd5: 0x6c5ede20, 0x27cd6: 0x6c186e20, 0x27cd7: 0x6c2eba20,
+-	0x27ce3: 0x6d257020,
+-	0x27ce5: 0x6cf78020, 0x27ce7: 0x6c8e6220,
+-	0x27ce8: 0x6cdd6c20,
+-	0x27cf1: 0x6c07fc20, 0x27cf2: 0x6cfa4020, 0x27cf3: 0x6d0e8c20,
+-	0x27cf5: 0x6c24d020, 0x27cf7: 0x6c773420,
+-	0x27cfa: 0x6cbe4e20, 0x27cfb: 0x6c909a20,
+-	0x27cfc: 0x6c087e20,
+-	// Block 0x9f4, offset 0x27d00
+-	0x27d08: 0x6d2e6a20, 0x27d09: 0x6c24ae20, 0x27d0a: 0x6cf3e220, 0x27d0b: 0x6d05c020,
+-	0x27d0c: 0x6c187e20, 0x27d0d: 0x6c4fd820, 0x27d0e: 0x6c748820,
+-	0x27d10: 0x6c192e20, 0x27d11: 0x6c13fa20, 0x27d12: 0x6c15ce20, 0x27d13: 0x6d348820,
+-	0x27d14: 0x6d0a2a20,
+-	0x27d23: 0x6c441a20,
+-	0x27d24: 0x6c18e220, 0x27d25: 0x6d132020,
+-	0x27d2a: 0x6c1ee820, 0x27d2b: 0x6cc1b820,
+-	0x27d2c: 0x6d020620, 0x27d2e: 0x6d2e7c20, 0x27d2f: 0x6c790820,
+-	0x27d31: 0x6c74ae20,
+-	0x27d3d: 0x6cc1ba20, 0x27d3f: 0x6c9b5020,
+-	// Block 0x9f5, offset 0x27d40
+-	0x27d40: 0x6d134e20, 0x27d41: 0x6d406620, 0x27d42: 0x6cb45620,
+-	0x27d44: 0x6cd3e420,
+-	0x27d49: 0x6cd57220, 0x27d4a: 0x6c152a20,
+-	0x27d4d: 0x6c31c420, 0x27d4f: 0x6c4c4a20,
+-	0x27d50: 0x6c92fe20, 0x27d51: 0x6d0c3820,
+-	0x27d56: 0x6ca7ba20, 0x27d57: 0x6c0d6620,
+-	0x27d5f: 0x6ce9cc20,
+-	0x27d66: 0x6ca6dc20, 0x27d67: 0x6c584220,
+-	0x27d68: 0x6cb9de20,
+-	0x27d6f: 0x6cfa6020,
+-	0x27d72: 0x6c8dc620,
+-	0x27d77: 0x6c882820,
+-	0x27d79: 0x6d186e20, 0x27d7b: 0x6c866620,
+-	0x27d7c: 0x6cd8f020, 0x27d7f: 0x6c279a20,
+-	// Block 0x9f6, offset 0x27d80
+-	0x27d82: 0x6cf11620,
+-	0x27d85: 0x6c22c020,
+-	0x27d89: 0x6c6fbe20, 0x27d8a: 0x6c534420,
+-	0x27d8c: 0x6d210e20, 0x27d8e: 0x6c7c6e20,
+-	0x27d92: 0x6c4f8020, 0x27d93: 0x6c439620,
+-	0x27d94: 0x6c39e620, 0x27d97: 0x6c7c8020,
+-	0x27d9a: 0x6c4a6c20, 0x27d9b: 0x6c1bb020,
+-	0x27d9e: 0x6c6fc220,
+-	0x27da1: 0x6cdbce20,
+-	0x27da4: 0x6c2ec620,
+-	0x27dac: 0x6cdc0c20,
+-	0x27db0: 0x6cbd8620,
+-	0x27db4: 0x6c4a8020,
+-	0x27dbb: 0x6d3c6620,
+-	0x27dbe: 0x6ce5de20,
+-	// Block 0x9f7, offset 0x27dc0
+-	0x27dc1: 0x6d26d820,
+-	0x27dc7: 0x6d419220,
+-	0x27dcf: 0x6cf3e820,
+-	0x27dd0: 0x6c250820,
+-	0x27ddb: 0x6d36d220,
+-	0x27de0: 0x6cd72e20, 0x27de2: 0x6c301420,
+-	0x27ded: 0x6cef3c20,
+-	0x27dff: 0x6c1d4220,
+-	// Block 0x9f8, offset 0x27e00
+-	0x27e0b: 0x6cc8f420,
+-	0x27e16: 0x6c60d420,
+-	0x27e1c: 0x6c2de820, 0x27e1e: 0x6c124020,
+-	0x27e20: 0x6c7a0c20, 0x27e23: 0x6cef5420,
+-	0x27e27: 0x6c11bc20,
+-	0x27e2a: 0x6c968020, 0x27e2b: 0x6caba820,
+-	0x27e32: 0x6cca3820,
+-	0x27e36: 0x6cef6620,
+-	0x27e3c: 0x6cca3e20, 0x27e3f: 0x6c6c7020,
+-	// Block 0x9f9, offset 0x27e40
+-	0x27e4c: 0x6cef6e20,
+-	0x27e5e: 0x6c115420, 0x27e5f: 0x6c84d020,
+-	0x27e6f: 0x6d273a20,
+-	0x27e74: 0x6d277220, 0x27e77: 0x6c196420,
+-	0x27e7a: 0x6ccce420,
+-	// Block 0x9fa, offset 0x27e80
+-	0x27e82: 0x6c54d620, 0x27e83: 0x6ccc9e20,
+-	0x27e84: 0x6cea5820, 0x27e86: 0x6c3d3020,
+-	0x27e88: 0x6cbe1820, 0x27e89: 0x6d05ac20,
+-	0x27e8d: 0x6c1fe620, 0x27e8e: 0x6c400420,
+-	0x27e92: 0x6d181220, 0x27e93: 0x6c300c20,
+-	0x27e94: 0x6c3eb420, 0x27e95: 0x6c3eb620, 0x27e96: 0x6d2ad620, 0x27e97: 0x6cb4ae20,
+-	0x27e99: 0x6c8d2c20,
+-	0x27e9d: 0x6ccca020, 0x27e9e: 0x6cad9420,
+-	0x27ea2: 0x6d1a8a20, 0x27ea3: 0x6c961e20,
+-	0x27ea4: 0x6c57b620, 0x27ea5: 0x6d1b6e20, 0x27ea6: 0x6c084a20, 0x27ea7: 0x6d209820,
+-	0x27ea8: 0x6ccf7020, 0x27eaa: 0x6d01f220, 0x27eab: 0x6c1ee620,
+-	0x27eb4: 0x6ccf7220, 0x27eb5: 0x6c2d7220,
+-	0x27eb9: 0x6d187020, 0x27ebb: 0x6c183a20,
+-	0x27ebc: 0x6c451c20, 0x27ebd: 0x6c8fa820, 0x27ebe: 0x6cb2ca20, 0x27ebf: 0x6d280220,
+-	// Block 0x9fb, offset 0x27ec0
+-	0x27ec0: 0x6d0eae20, 0x27ec1: 0x6ca15a20, 0x27ec3: 0x6cdbd820,
+-	0x27ecb: 0x6c6ea420,
+-	0x27ecd: 0x6cd99c20, 0x27ece: 0x6cad0c20,
+-	0x27ed0: 0x6d0b3820, 0x27ed1: 0x6ccb5020, 0x27ed2: 0x6c34b820,
+-	0x27ed5: 0x6c207a20, 0x27ed6: 0x6d022420,
+-	0x27ed8: 0x6ce95a20, 0x27ed9: 0x6c45b420, 0x27eda: 0x6d08b620,
+-	0x27edc: 0x6c7e4e20, 0x27ede: 0x6c8d5e20,
+-	0x27ee0: 0x6c279020, 0x27ee1: 0x6d2c5220,
+-	0x27eec: 0x6d1a0a20, 0x27eed: 0x6cd93c20, 0x27eef: 0x6d229a20,
+-	0x27ef0: 0x6ceb4c20, 0x27ef1: 0x6ceb4e20,
+-	0x27ef4: 0x6c03c420, 0x27ef5: 0x6cc4d620, 0x27ef6: 0x6c0f8420, 0x27ef7: 0x6c279c20,
+-	0x27ef9: 0x6d2c5a20, 0x27efa: 0x6c543a20,
+-	0x27efe: 0x6c5b7820,
+-	// Block 0x9fc, offset 0x27f00
+-	0x27f05: 0x6c916020,
+-	0x27f0a: 0x6c8e2820, 0x27f0b: 0x6cc7d620,
+-	0x27f15: 0x6c28d220, 0x27f16: 0x6c9b6620, 0x27f17: 0x6cfa5820,
+-	0x27f18: 0x6cf26220, 0x27f19: 0x6c4e4620, 0x27f1a: 0x6d3eb020, 0x27f1b: 0x6d327420,
+-	0x27f1c: 0x6ccb7c20, 0x27f1d: 0x6c25fa20, 0x27f1e: 0x6c86e420,
+-	0x27f20: 0x6c2ce220, 0x27f21: 0x6c887e20, 0x27f22: 0x6c46e020,
+-	0x27f26: 0x6caee020,
+-	0x27f2a: 0x6d1c0a20,
+-	0x27f2c: 0x6c548420, 0x27f2e: 0x6c336c20, 0x27f2f: 0x6cf53e20,
+-	0x27f37: 0x6cb1be20,
+-	0x27f38: 0x6c520020, 0x27f3a: 0x6c8fb820, 0x27f3b: 0x6ca18420,
+-	0x27f3c: 0x6c3a7620, 0x27f3d: 0x6c93be20, 0x27f3e: 0x6d2b2020, 0x27f3f: 0x6c0fae20,
+-	// Block 0x9fd, offset 0x27f40
+-	0x27f40: 0x6c2d9620, 0x27f41: 0x6c98aa20, 0x27f43: 0x6d3c4e20,
+-	0x27f44: 0x6c932220, 0x27f45: 0x6cace820, 0x27f46: 0x6c337c20, 0x27f47: 0x6c10ce20,
+-	0x27f4c: 0x6c189020, 0x27f4d: 0x6c981220,
+-	0x27f56: 0x6cf72420,
+-	0x27f5d: 0x6c019a20, 0x27f5e: 0x6d37dc20,
+-	0x27f60: 0x6ca44a20, 0x27f61: 0x6cebba20, 0x27f62: 0x6c519c20,
+-	0x27f65: 0x6c338220, 0x27f66: 0x6ceca020, 0x27f67: 0x6d37de20,
+-	0x27f68: 0x6c133e20, 0x27f69: 0x6c873620, 0x27f6a: 0x6cd6aa20,
+-	0x27f6e: 0x6c134020,
+-	0x27f70: 0x6cd84a20, 0x27f72: 0x6c338420,
+-	0x27f74: 0x6c5cdc20,
+-	0x27f7c: 0x6c654220, 0x27f7d: 0x6ca9e220, 0x27f7e: 0x6c28ea20, 0x27f7f: 0x6c409820,
+-	// Block 0x9fe, offset 0x27f80
+-	0x27f80: 0x6c5e4e20, 0x27f81: 0x6c5c9620, 0x27f82: 0x6c228420,
+-	0x27f84: 0x6d1e6620, 0x27f85: 0x6cc9b620, 0x27f86: 0x6ce6a420,
+-	0x27f8e: 0x6c8f5a20,
+-	0x27f91: 0x6cdb8c20, 0x27f92: 0x6c8da220, 0x27f93: 0x6c97a620,
+-	0x27f94: 0x6c2d9c20,
+-	0x27f98: 0x6cad4020, 0x27f9a: 0x6c8da420,
+-	0x27f9d: 0x6c878620, 0x27f9f: 0x6caa1020,
+-	0x27fa3: 0x6c8b7820,
+-	0x27fa4: 0x6ccd6220, 0x27fa6: 0x6c3afe20,
+-	0x27fab: 0x6ccd6420,
+-	0x27fae: 0x6c8db820, 0x27faf: 0x6d2eaa20,
+-	0x27fb1: 0x6c0d7820, 0x27fb2: 0x6c84dc20,
+-	0x27fb5: 0x6cd86420, 0x27fb6: 0x6cc4fc20, 0x27fb7: 0x6c655820,
+-	0x27fb8: 0x6d3df020, 0x27fbb: 0x6c8dbe20,
+-	0x27fbc: 0x6c8dc020, 0x27fbd: 0x6c9c2420, 0x27fbf: 0x6cd6c820,
+-	// Block 0x9ff, offset 0x27fc0
+-	0x27fc4: 0x6c8dc820, 0x27fc7: 0x6c5d5020,
+-	0x27fce: 0x6c8dee20, 0x27fcf: 0x6c655e20,
+-	0x27fd0: 0x6cc23a20,
+-	0x27fd4: 0x6ca9ea20, 0x27fd5: 0x6c6e7c20, 0x27fd6: 0x6c187020,
+-	0x27fdc: 0x6d318820, 0x27fdd: 0x6cbede20, 0x27fdf: 0x6cbee220,
+-	0x27fe0: 0x6c36c820, 0x27fe3: 0x6ccb9420,
+-	0x27fe9: 0x6c071a20, 0x27feb: 0x6c3a0020,
+-	0x27fee: 0x6c3ab620, 0x27fef: 0x6c3a3820,
+-	0x27ff4: 0x6c399820, 0x27ff5: 0x6c7a7c20,
+-	0x27ffa: 0x6d28c620, 0x27ffb: 0x6c5c2220,
+-	0x27ffd: 0x6c3a4420,
+-	// Block 0xa00, offset 0x28000
+-	0x28001: 0x6c338620,
+-	0x28006: 0x6cabca20, 0x28007: 0x6ca99c20,
+-	0x28008: 0x6cad2e20, 0x28009: 0x6c289820, 0x2800a: 0x6c27e820, 0x2800b: 0x6c00b220,
+-	0x2800d: 0x6ce50e20, 0x2800e: 0x6c17a420, 0x2800f: 0x6c02ac20,
+-	0x28010: 0x6c9aa020, 0x28011: 0x6ca43420,
+-	0x28014: 0x6c0ff420, 0x28015: 0x6d23b420, 0x28016: 0x6cfac420, 0x28017: 0x6c973a20,
+-	0x2801a: 0x6cb26420,
+-	0x2801c: 0x6c331020, 0x2801e: 0x6c2a3020,
+-	0x28021: 0x6d043a20, 0x28022: 0x6ca6ce20, 0x28023: 0x6c4dba20,
+-	0x28024: 0x6c1f7a20, 0x28025: 0x6cd64a20, 0x28026: 0x6c97cc20,
+-	0x2802c: 0x6ceda420, 0x2802d: 0x6d18dc20, 0x2802e: 0x6c2e4820, 0x2802f: 0x6d0c3a20,
+-	0x28031: 0x6cf32420, 0x28032: 0x6cdba220,
+-	0x28034: 0x6c019420, 0x28035: 0x6c7fd420, 0x28036: 0x6ca43e20,
+-	0x28038: 0x6cc0b620, 0x28039: 0x6c9e6820, 0x2803a: 0x6caae420, 0x2803b: 0x6c11c020,
+-	0x2803c: 0x6c11e620,
+-	// Block 0xa01, offset 0x28040
+-	0x28040: 0x6c808620, 0x28041: 0x6ce52a20, 0x28042: 0x6d139220,
+-	0x28044: 0x6ca74e20, 0x28046: 0x6cd64e20,
+-	0x2804b: 0x6c228620,
+-	0x2804d: 0x6c663a20,
+-	0x28050: 0x6c424020,
+-	0x28054: 0x6c673220, 0x28055: 0x6c4caa20, 0x28057: 0x6d2dd620,
+-	0x28059: 0x6c95dc20,
+-	0x2805c: 0x6c5ebc20, 0x2805d: 0x6c4b5220,
+-	0x28061: 0x6c63d220, 0x28062: 0x6c614a20,
+-	0x28065: 0x6d08a020, 0x28067: 0x6c3c5a20,
+-	0x2806b: 0x6c09ea20,
+-	0x2806c: 0x6cb60a20, 0x2806f: 0x6d258e20,
+-	0x28070: 0x6c021a20, 0x28071: 0x6c2b3820,
+-	0x28074: 0x6c366820, 0x28075: 0x6c3b7e20,
+-	0x28078: 0x6c727020, 0x28079: 0x6ca64220, 0x2807a: 0x6ceb3c20,
+-	0x2807c: 0x6cd00c20, 0x2807d: 0x6c3eca20, 0x2807e: 0x6cf9e420, 0x2807f: 0x6cc1ac20,
+-	// Block 0xa02, offset 0x28080
+-	0x28080: 0x6cb39a20, 0x28081: 0x6ced4220, 0x28082: 0x6c8d4220, 0x28083: 0x6c96d220,
+-	0x28084: 0x6d394020, 0x28085: 0x6c065c20, 0x28087: 0x6d23b620,
+-	0x2808c: 0x6c082a20, 0x2808d: 0x6c973c20, 0x2808f: 0x6c637a20,
+-	0x28091: 0x6d102e20, 0x28093: 0x6c7ade20,
+-	0x28094: 0x6c69c020, 0x28096: 0x6c0df220,
+-	0x2809a: 0x6c962420, 0x2809b: 0x6c4b1820,
+-	0x2809c: 0x6c351420, 0x2809d: 0x6d36d420,
+-	0x280a1: 0x6d326020, 0x280a2: 0x6c369e20, 0x280a3: 0x6d39ca20,
+-	0x280a4: 0x6c039020,
+-	0x280a8: 0x6d326220, 0x280a9: 0x6c3c6820, 0x280aa: 0x6c313820, 0x280ab: 0x6ca73c20,
+-	0x280ac: 0x6c10bc20, 0x280ad: 0x6c336020, 0x280ae: 0x6ccc1c20, 0x280af: 0x6ccb6820,
+-	0x280b0: 0x6c0a6220,
+-	0x280b4: 0x6d36f420, 0x280b5: 0x6d309820, 0x280b6: 0x6c10be20,
+-	0x280ba: 0x6c74c420, 0x280bb: 0x6d0aa820,
+-	0x280bf: 0x6cf90020,
+-	// Block 0xa03, offset 0x280c0
+-	0x280c1: 0x6d3db820, 0x280c2: 0x6c045a20, 0x280c3: 0x6d115c20,
+-	0x280c4: 0x6c1e3420, 0x280c5: 0x6cdeb620, 0x280c6: 0x6cb93020,
+-	0x280c8: 0x6ca53820, 0x280c9: 0x6d242020, 0x280ca: 0x6c36bc20, 0x280cb: 0x6c650820,
+-	0x280cc: 0x6d18de20, 0x280cd: 0x6cff2a20, 0x280cf: 0x6ca88020,
+-	0x280d2: 0x6c0db620,
+-	0x280d7: 0x6c4cd420,
+-	0x280d8: 0x6d010820, 0x280d9: 0x6c2e4a20,
+-	0x280dc: 0x6c70d620, 0x280dd: 0x6cdda420, 0x280de: 0x6c2ef420, 0x280df: 0x6c3f1420,
+-	0x280e0: 0x6c9e4420, 0x280e1: 0x6cd3fa20, 0x280e2: 0x6d08c420, 0x280e3: 0x6ce39c20,
+-	0x280e4: 0x6d244420, 0x280e7: 0x6d011820,
+-	0x280e8: 0x6c3f1620, 0x280e9: 0x6d373420, 0x280ea: 0x6ca65a20, 0x280eb: 0x6d08c620,
+-	0x280ec: 0x6d0fe820, 0x280ee: 0x6c3cd020, 0x280ef: 0x6d403c20,
+-	0x280f0: 0x6d395e20, 0x280f1: 0x6d07de20,
+-	0x280f5: 0x6d39d820, 0x280f7: 0x6c7edc20,
+-	0x280f9: 0x6d1d5820, 0x280fa: 0x6c435c20, 0x280fb: 0x6c7e2c20,
+-	0x280fd: 0x6c358820, 0x280fe: 0x6cef5620, 0x280ff: 0x6c9a3620,
+-	// Block 0xa04, offset 0x28100
+-	0x28103: 0x6c57fe20,
+-	0x28104: 0x6c1e3820, 0x28106: 0x6cddb220, 0x28107: 0x6cdec820,
+-	0x28108: 0x6cddb420, 0x28109: 0x6cdeca20, 0x2810a: 0x6d097a20,
+-	0x2810c: 0x6c460820, 0x2810d: 0x6c643220, 0x2810f: 0x6c0fb020,
+-	0x28110: 0x6cdecc20, 0x28111: 0x6d25f620,
+-	0x28118: 0x6cdece20,
+-	0x2811d: 0x6c20ec20,
+-	0x28120: 0x6d047820, 0x28121: 0x6c519820, 0x28122: 0x6cdd4820,
+-	0x28127: 0x6ca18a20,
+-	0x28128: 0x6c1d2c20, 0x28129: 0x6cdbe420, 0x2812a: 0x6d2b2220, 0x2812b: 0x6c933220,
+-	0x2812c: 0x6d2eea20, 0x2812d: 0x6c963c20, 0x2812e: 0x6d075820, 0x2812f: 0x6c653a20,
+-	0x28130: 0x6ccd2220, 0x28132: 0x6d075a20,
+-	0x2813e: 0x6c67cc20,
+-	// Block 0xa05, offset 0x28140
+-	0x28142: 0x6c067c20, 0x28143: 0x6c970c20,
+-	0x28145: 0x6ce7a020, 0x28146: 0x6cf92c20,
+-	0x28149: 0x6cc6e620, 0x2814b: 0x6cd12a20,
+-	0x2814c: 0x6d396c20, 0x2814e: 0x6c654420, 0x2814f: 0x6c409a20,
+-	0x28150: 0x6c2afa20, 0x28153: 0x6d1de220,
+-	0x28154: 0x6c70e420, 0x28156: 0x6d195e20, 0x28157: 0x6c054820,
+-	0x28159: 0x6ccb9620, 0x2815a: 0x6cdcc620,
+-	0x2815c: 0x6c346e20, 0x2815d: 0x6d028420,
+-	0x28161: 0x6c58c820,
+-	0x28165: 0x6cc80c20, 0x28166: 0x6ca66c20, 0x28167: 0x6d397020,
+-	0x28168: 0x6c4bac20, 0x2816a: 0x6c964820,
+-	0x28172: 0x6d342e20, 0x28173: 0x6d076c20,
+-	0x28175: 0x6d343020, 0x28177: 0x6c752a20,
+-	0x28178: 0x6c70e820, 0x2817b: 0x6d25da20,
+-	0x2817c: 0x6c91a420, 0x2817f: 0x6c0fda20,
+-	// Block 0xa06, offset 0x28180
+-	0x28182: 0x6cc6ea20, 0x28183: 0x6d029620,
+-	0x28189: 0x6cf83220, 0x2818a: 0x6c959a20,
+-	0x2818e: 0x6c447020,
+-	0x28191: 0x6d414620, 0x28192: 0x6c4eca20,
+-	0x28194: 0x6c685620, 0x28195: 0x6cc95420, 0x28196: 0x6cbd8a20, 0x28197: 0x6cc43c20,
+-	0x28198: 0x6cad6420, 0x28199: 0x6d26da20, 0x2819a: 0x6c182c20, 0x2819b: 0x6c3ece20,
+-	0x2819c: 0x6cadc020, 0x2819f: 0x6c9aa420,
+-	0x281a2: 0x6ce1de20,
+-	0x281a4: 0x6c78f020, 0x281a5: 0x6cf8d420,
+-	0x281ab: 0x6c351620,
+-	0x281ad: 0x6d187220,
+-	0x281b0: 0x6cdc7e20, 0x281b2: 0x6cf9f820, 0x281b3: 0x6c730420,
+-	0x281b5: 0x6cef3e20, 0x281b7: 0x6d18ba20,
+-	0x281b9: 0x6d242220, 0x281bb: 0x6c045c20,
+-	0x281bc: 0x6ceb5820, 0x281bd: 0x6cdeb820, 0x281be: 0x6cad6e20,
+-	// Block 0xa07, offset 0x281c0
+-	0x281c2: 0x6c0dfc20,
+-	0x281c5: 0x6d286820, 0x281c6: 0x6d286a20, 0x281c7: 0x6c32e220,
+-	0x281c8: 0x6cc88620, 0x281c9: 0x6cef5820,
+-	0x281cf: 0x6cf05020,
+-	0x281d0: 0x6c4b9820, 0x281d2: 0x6c26d420, 0x281d3: 0x6cfa1420,
+-	0x281d6: 0x6c5d4a20, 0x281d7: 0x6c733220,
+-	0x281d8: 0x6cdbe620, 0x281da: 0x6cdcbc20,
+-	0x281dd: 0x6c90d620, 0x281de: 0x6c046420, 0x281df: 0x6d246e20,
+-	0x281e0: 0x6d337420, 0x281e1: 0x6c4ba620, 0x281e3: 0x6c7c5820,
+-	0x281e4: 0x6c42f220, 0x281e5: 0x6c281620,
+-	0x281e9: 0x6cfc5a20, 0x281ea: 0x6d2d2420, 0x281eb: 0x6ccb9820,
+-	0x281ed: 0x6c784620, 0x281ee: 0x6c105020, 0x281ef: 0x6c0fce20,
+-	0x281f2: 0x6cdcc820,
+-	0x281f4: 0x6d249420, 0x281f5: 0x6c105220, 0x281f6: 0x6c6f9220, 0x281f7: 0x6c6f9420,
+-	0x281f9: 0x6c73aa20, 0x281fa: 0x6c754220,
+-	0x281fc: 0x6ca31620, 0x281fd: 0x6d2d1c20, 0x281fe: 0x6ce1ba20, 0x281ff: 0x6cefec20,
+-	// Block 0xa08, offset 0x28200
+-	0x28200: 0x6cf9dc20, 0x28201: 0x6d01cc20,
+-	0x28205: 0x6cc9a620, 0x28206: 0x6c5f6620,
+-	0x28209: 0x6d026a20,
+-	0x2820c: 0x6c338c20, 0x2820d: 0x6d3f2620,
+-	0x28218: 0x6d25ee20, 0x28219: 0x6cbe1e20, 0x2821a: 0x6c3ed020, 0x2821b: 0x6caeba20,
+-	0x2821c: 0x6cad6620, 0x2821e: 0x6d1b7620,
+-	0x28220: 0x6c52c220, 0x28221: 0x6d40d420, 0x28223: 0x6c45a820,
+-	0x28224: 0x6c308820, 0x28225: 0x6c50a820, 0x28226: 0x6cf31020,
+-	0x28228: 0x6cace220, 0x2822b: 0x6cdb2820,
+-	0x2822c: 0x6c76f020, 0x2822d: 0x6ca88220, 0x2822e: 0x6c4ffa20, 0x2822f: 0x6c3cfa20,
+-	0x28230: 0x6c36be20, 0x28231: 0x6d137620,
+-	0x28234: 0x6ce69820, 0x28235: 0x6c309420, 0x28236: 0x6d30ba20, 0x28237: 0x6cca7820,
+-	0x2823b: 0x6ca18c20,
+-	0x2823c: 0x6cdb6020, 0x2823e: 0x6c823220,
+-	// Block 0xa09, offset 0x28240
+-	0x28240: 0x6cb4a620, 0x28241: 0x6c35a620, 0x28242: 0x6d3de220, 0x28243: 0x6d139820,
+-	0x28247: 0x6cfda220,
+-	0x28248: 0x6c4a2c20, 0x28249: 0x6cc59e20, 0x2824a: 0x6c8dfe20,
+-	0x2824d: 0x6c02cc20,
+-	0x28250: 0x6c146820, 0x28252: 0x6c345620, 0x28253: 0x6cbf3620,
+-	0x28254: 0x6c7a4620, 0x28255: 0x6d05b020, 0x28256: 0x6c587c20, 0x28257: 0x6d10aa20,
+-	0x28258: 0x6d324620, 0x28259: 0x6ce6da20, 0x2825a: 0x6c082420,
+-	0x2825d: 0x6c020220, 0x2825f: 0x6c76b420,
+-	0x28261: 0x6c7a4c20, 0x28262: 0x6cadde20, 0x28263: 0x6d205220,
+-	0x28264: 0x6c02aa20, 0x28265: 0x6c9ad020, 0x28266: 0x6ca13620,
+-	0x2826c: 0x6c3f7220, 0x2826d: 0x6cbe5020, 0x2826e: 0x6c7e8220, 0x2826f: 0x6c30f220,
+-	0x28270: 0x6ce06c20, 0x28273: 0x6cba1c20,
+-	0x28274: 0x6d121c20, 0x28275: 0x6cf0b620, 0x28276: 0x6c558c20, 0x28277: 0x6ca14620,
+-	0x28278: 0x6c50a620, 0x28279: 0x6d08ac20, 0x2827b: 0x6c0a1220,
+-	0x2827c: 0x6cb31a20, 0x2827e: 0x6c2b3c20,
+-	// Block 0xa0a, offset 0x28280
+-	0x28280: 0x6d31f020, 0x28282: 0x6cd1e420, 0x28283: 0x6c76e420,
+-	0x28284: 0x6c130c20, 0x28287: 0x6d05c420,
+-	0x28288: 0x6d31f220, 0x2828a: 0x6d3a7820,
+-	0x2828f: 0x6c5c2420,
+-	0x28290: 0x6c1bc020, 0x28293: 0x6c53aa20,
+-	0x28294: 0x6caa0420, 0x28295: 0x6ca86a20, 0x28296: 0x6d0eb020,
+-	0x28298: 0x6c1d4020, 0x28299: 0x6c3f8620, 0x2829a: 0x6c49f420, 0x2829b: 0x6cb52c20,
+-	0x2829d: 0x6c44a220, 0x2829e: 0x6ce6e020,
+-	0x282a2: 0x6ce07220, 0x282a3: 0x6cba2020,
+-	0x282a6: 0x6c702020, 0x282a7: 0x6d05e220,
+-	0x282a8: 0x6cb71620, 0x282aa: 0x6d326420,
+-	0x282ae: 0x6cc09c20,
+-	0x282b0: 0x6c35bc20, 0x282b3: 0x6c5c4c20,
+-	0x282b4: 0x6c53d820, 0x282b5: 0x6cbeb420, 0x282b7: 0x6c17e020,
+-	0x282ba: 0x6c405c20,
+-	0x282bc: 0x6c52ce20, 0x282bd: 0x6cf6e220, 0x282be: 0x6cf3ee20, 0x282bf: 0x6c987820,
+-	// Block 0xa0b, offset 0x282c0
+-	0x282c2: 0x6ce2fc20,
+-	0x282c5: 0x6c52d020,
+-	0x282d0: 0x6c0f6a20, 0x282d2: 0x6cbde820, 0x282d3: 0x6c44a420,
+-	0x282d6: 0x6c3f0020, 0x282d7: 0x6c7cde20,
+-	0x282dd: 0x6c0cfe20, 0x282de: 0x6c6eba20, 0x282df: 0x6c76f220,
+-	0x282e0: 0x6c4a9020, 0x282e2: 0x6c432820, 0x282e3: 0x6d05f420,
+-	0x282e4: 0x6c01d420, 0x282e5: 0x6d26f420, 0x282e6: 0x6cf53420, 0x282e7: 0x6d157a20,
+-	0x282e8: 0x6c6dda20, 0x282ea: 0x6c930220, 0x282eb: 0x6cc31c20,
+-	0x282ec: 0x6ce9c820, 0x282ee: 0x6c62a420,
+-	0x282fa: 0x6c6f3420, 0x282fb: 0x6c74d420,
+-	0x282fc: 0x6cb1d620, 0x282fd: 0x6c7d8a20,
+-	// Block 0xa0c, offset 0x28300
+-	0x28300: 0x6cec7420, 0x28301: 0x6c5c7620, 0x28302: 0x6c341220, 0x28303: 0x6d25f420,
+-	0x28304: 0x6c6b6a20, 0x28306: 0x6c4b9020, 0x28307: 0x6c432e20,
+-	0x28308: 0x6cb3b220, 0x28309: 0x6c9ade20, 0x2830a: 0x6d3bf020, 0x2830b: 0x6c4f9c20,
+-	0x28314: 0x6d1e0420, 0x28315: 0x6cc0a420, 0x28317: 0x6c834e20,
+-	0x28318: 0x6c020620, 0x28319: 0x6cb08020, 0x2831a: 0x6cf24220,
+-	0x2831d: 0x6cbe2a20, 0x2831f: 0x6cbdee20,
+-	0x28320: 0x6c9f0620, 0x28321: 0x6c30d020, 0x28322: 0x6c9c9420, 0x28323: 0x6d2db820,
+-	0x28325: 0x6cbec020, 0x28326: 0x6d158c20,
+-	0x2832e: 0x6c04aa20,
+-	0x28331: 0x6c730a20, 0x28333: 0x6d2b2420,
+-	0x28334: 0x6d075c20, 0x28335: 0x6c7ff420, 0x28336: 0x6c968220, 0x28337: 0x6c968420,
+-	0x28338: 0x6cab6220, 0x28339: 0x6c06c020, 0x2833b: 0x6cb3e820,
+-	0x2833c: 0x6d075e20,
+-	// Block 0xa0d, offset 0x28340
+-	0x28340: 0x6c02fe20,
+-	0x28346: 0x6c53ae20,
+-	0x28349: 0x6c53b020, 0x2834a: 0x6d2e3c20,
+-	0x2834c: 0x6ccbb620, 0x2834d: 0x6c433020, 0x2834f: 0x6cb34420,
+-	0x28350: 0x6c8aae20,
+-	0x28355: 0x6cec7a20, 0x28356: 0x6d07f420,
+-	0x2835c: 0x6c7cb820, 0x2835f: 0x6c36ea20,
+-	0x28360: 0x6c4f3e20, 0x28361: 0x6ccb9a20,
+-	0x28364: 0x6c28ee20,
+-	0x2836a: 0x6d07f620,
+-	0x2836c: 0x6c36f420, 0x2836d: 0x6c415a20, 0x2836f: 0x6c29c820,
+-	0x28371: 0x6c9bfa20, 0x28372: 0x6d143e20, 0x28373: 0x6ca94e20,
+-	0x28375: 0x6cb23020,
+-	0x28379: 0x6c124620,
+-	0x2837e: 0x6d263c20,
+-	// Block 0xa0e, offset 0x28380
+-	0x28380: 0x6c36fc20, 0x28381: 0x6ca8ca20,
+-	0x28384: 0x6d1b2e20, 0x28387: 0x6cbbca20,
+-	0x28389: 0x6c52e220, 0x2838a: 0x6c8dca20,
+-	0x2838c: 0x6c14e820, 0x2838d: 0x6d1d3020,
+-	0x28392: 0x6c494820,
+-	0x28394: 0x6ca7ca20, 0x28395: 0x6d05c620, 0x28396: 0x6cdff820, 0x28397: 0x6c6d6e20,
+-	0x2839b: 0x6caea620,
+-	0x2839d: 0x6c89e820,
+-	0x283a0: 0x6c072c20, 0x283a3: 0x6d030020,
+-	0x283a4: 0x6cea6020, 0x283a5: 0x6c174e20, 0x283a6: 0x6c41a420,
+-	0x283a8: 0x6c54e020, 0x283a9: 0x6cee2e20,
+-	0x283ac: 0x6c3eba20, 0x283ad: 0x6cae2220, 0x283af: 0x6ca4b620,
+-	0x283b0: 0x6d0a1820, 0x283b1: 0x6d096c20,
+-	0x283b4: 0x6c8f1220, 0x283b5: 0x6c8d4420, 0x283b6: 0x6d097020, 0x283b7: 0x6cc12e20,
+-	0x283b8: 0x6c4fda20, 0x283b9: 0x6d153c20, 0x283ba: 0x6c4ef420,
+-	0x283bc: 0x6c3ed220, 0x283bd: 0x6c038a20, 0x283be: 0x6d153e20,
+-	// Block 0xa0f, offset 0x283c0
+-	0x283c0: 0x6c0f3820,
+-	0x283c4: 0x6c52c420, 0x283c5: 0x6c866a20,
+-	0x283c9: 0x6cc98820, 0x283ca: 0x6cf6b220,
+-	0x283ce: 0x6cd3ce20, 0x283cf: 0x6cb15e20,
+-	0x283d0: 0x6c57c220, 0x283d1: 0x6d155220, 0x283d2: 0x6c0f5220, 0x283d3: 0x6c0f6c20,
+-	0x283d4: 0x6ca57620, 0x283d5: 0x6cc09e20,
+-	0x283d8: 0x6cf01e20, 0x283d9: 0x6c184a20, 0x283da: 0x6d1f7820,
+-	0x283dc: 0x6cf0dc20, 0x283dd: 0x6c5b6820, 0x283de: 0x6cc99a20,
+-	0x283e2: 0x6c53da20, 0x283e3: 0x6cd9e820,
+-	0x283e4: 0x6c4f1220, 0x283e5: 0x6cad6a20, 0x283e7: 0x6c39b020,
+-	0x283e9: 0x6c8eae20, 0x283ea: 0x6d395a20, 0x283eb: 0x6cb02a20,
+-	0x283ed: 0x6c86b620,
+-	0x283f0: 0x6c20e820, 0x283f1: 0x6cf6fc20, 0x283f2: 0x6d330220,
+-	0x283f4: 0x6c085620, 0x283f5: 0x6d333420, 0x283f6: 0x6cdc9620, 0x283f7: 0x6d0de420,
+-	0x283fc: 0x6cbe5a20, 0x283fd: 0x6cf53620, 0x283fe: 0x6c89a620,
+-	// Block 0xa10, offset 0x28400
+-	0x28400: 0x6d2fe420, 0x28401: 0x6c897220,
+-	0x28405: 0x6c6a3c20, 0x28407: 0x6c52da20,
+-	0x28408: 0x6d1ec020, 0x2840a: 0x6c7ea220, 0x2840b: 0x6c548620,
+-	0x2840d: 0x6d263620, 0x2840e: 0x6c539620, 0x2840f: 0x6d137820,
+-	0x28411: 0x6d1d1c20, 0x28412: 0x6d086020, 0x28413: 0x6d1f8620,
+-	0x28418: 0x6cc32020,
+-	0x2841c: 0x6ce15e20, 0x2841d: 0x6cddb620, 0x2841f: 0x6c871020,
+-	0x28420: 0x6cd9fc20, 0x28421: 0x6c871220,
+-	0x28424: 0x6d245420, 0x28427: 0x6d192020,
+-	0x2842d: 0x6d051220, 0x2842e: 0x6c028620, 0x2842f: 0x6ce97420,
+-	0x28430: 0x6cdb6220, 0x28431: 0x6cd67a20, 0x28433: 0x6d247020,
+-	0x28435: 0x6c3c7a20,
+-	0x28439: 0x6cdb6620, 0x2843a: 0x6ce9da20, 0x2843b: 0x6d247220,
+-	0x2843c: 0x6d331020, 0x2843d: 0x6d331220, 0x2843f: 0x6ce25420,
+-	// Block 0xa11, offset 0x28440
+-	0x28444: 0x6c8ee020, 0x28446: 0x6c1a5c20, 0x28447: 0x6cdc0620,
+-	0x28448: 0x6ccad820,
+-	0x2844f: 0x6c47f420,
+-	0x28450: 0x6c3c8a20, 0x28451: 0x6c8b8420, 0x28452: 0x6cb17a20,
+-	0x28456: 0x6c87b620,
+-	0x28458: 0x6c901820, 0x28459: 0x6c1e7020, 0x2845a: 0x6cff6220, 0x2845b: 0x6c52e420,
+-	0x2845c: 0x6d029820, 0x2845d: 0x6ccf9420,
+-	0x28460: 0x6c902620, 0x28461: 0x6c53ea20, 0x28462: 0x6d083e20, 0x28463: 0x6c3c9620,
+-	0x28465: 0x6c037420, 0x28466: 0x6c0ecc20, 0x28467: 0x6ce22620,
+-	0x28468: 0x6cdabc20, 0x28469: 0x6d2fb820, 0x2846a: 0x6c0c0220, 0x2846b: 0x6cd9c420,
+-	0x2846c: 0x6ce9aa20, 0x2846d: 0x6cdd8820, 0x2846e: 0x6cfefa20, 0x2846f: 0x6c527220,
+-	0x28470: 0x6ccac620, 0x28472: 0x6c3a1020,
+-	0x28477: 0x6ca9aa20,
+-	0x28478: 0x6c98ac20,
+-	0x2847d: 0x6c58ca20, 0x2847e: 0x6d343420,
+-	// Block 0xa12, offset 0x28480
+-	0x28482: 0x6d171620,
+-	0x28484: 0x6d22fe20, 0x28487: 0x6d14f020,
+-	0x28488: 0x6d264e20, 0x28489: 0x6c1b2220,
+-	0x28495: 0x6d1aea20, 0x28496: 0x6ca9a620, 0x28497: 0x6cc71420,
+-	0x2849b: 0x6ca34a20,
+-	0x284a3: 0x6ce4a620,
+-	0x284a5: 0x6c035020,
+-	0x284aa: 0x6c379c20, 0x284ab: 0x6d32dc20,
+-	0x284ac: 0x6c366a20, 0x284ad: 0x6cb3dc20, 0x284ae: 0x6c5efa20, 0x284af: 0x6ca5f620,
+-	0x284b1: 0x6c6f2020, 0x284b2: 0x6c63d420,
+-	0x284b5: 0x6c41a620,
+-	0x284b9: 0x6c8d2e20, 0x284bb: 0x6d41bc20,
+-	0x284be: 0x6c073820,
+-	// Block 0xa13, offset 0x284c0
+-	0x284c5: 0x6cd4f220, 0x284c6: 0x6d15fc20, 0x284c7: 0x6cabf420,
+-	0x284cb: 0x6ca50e20,
+-	0x284cc: 0x6cd3c020, 0x284ce: 0x6c97c620, 0x284cf: 0x6cd3c220,
+-	0x284d1: 0x6ce35e20,
+-	0x284d8: 0x6c45a420,
+-	0x284dd: 0x6c834420, 0x284de: 0x6c061020, 0x284df: 0x6d251020,
+-	0x284e0: 0x6d422820, 0x284e1: 0x6c80e620, 0x284e2: 0x6d04f220,
+-	0x284e5: 0x6d294220, 0x284e6: 0x6c1a8620, 0x284e7: 0x6c64e820,
+-	0x284e8: 0x6c99b420, 0x284e9: 0x6c63e220, 0x284ea: 0x6d23de20,
+-	0x284ed: 0x6d23e020, 0x284ee: 0x6d155420,
+-	0x284f2: 0x6c982020, 0x284f3: 0x6d294420,
+-	0x284f5: 0x6d3ca820, 0x284f6: 0x6ce37620,
+-	0x284f9: 0x6cf8d620, 0x284fa: 0x6c716020, 0x284fb: 0x6d299e20,
+-	0x284fc: 0x6c92e420, 0x284fd: 0x6ce24420,
+-	// Block 0xa14, offset 0x28500
+-	0x28500: 0x6d3cb020, 0x28501: 0x6c8d6020, 0x28503: 0x6c729c20,
+-	0x28506: 0x6c5f4c20, 0x28507: 0x6c733020,
+-	0x2850a: 0x6d3e9a20,
+-	0x2850c: 0x6d265a20, 0x2850d: 0x6c301620,
+-	0x28512: 0x6ca47020,
+-	0x28516: 0x6c1d2420,
+-	0x2851f: 0x6c022020,
+-	0x28523: 0x6c44e020,
+-	0x28525: 0x6c0e9420, 0x28526: 0x6c2fbc20, 0x28527: 0x6cf02220,
+-	0x2852c: 0x6cc31a20, 0x2852d: 0x6c783a20,
+-	0x28530: 0x6cb0cc20, 0x28531: 0x6c76f420, 0x28532: 0x6c3f0e20, 0x28533: 0x6d1e6220,
+-	0x28535: 0x6ce96620, 0x28536: 0x6ce81e20, 0x28537: 0x6d205a20,
+-	0x28538: 0x6d10c020, 0x2853a: 0x6d126c20,
+-	0x2853d: 0x6d0ed220,
+-	// Block 0xa15, offset 0x28540
+-	0x28548: 0x6cfbb220, 0x2854a: 0x6ce38e20,
+-	0x2854c: 0x6cdc9820,
+-	0x28550: 0x6c227420,
+-	0x28554: 0x6d066220, 0x28555: 0x6cf53820, 0x28556: 0x6c117420, 0x28557: 0x6d242420,
+-	0x2855a: 0x6c15f820, 0x2855b: 0x6cfa1020,
+-	0x2855d: 0x6c77ce20, 0x2855e: 0x6c124220, 0x2855f: 0x6c13bc20,
+-	0x28560: 0x6cc0b420, 0x28563: 0x6c267220,
+-	0x28565: 0x6cdb5620,
+-	0x28568: 0x6c571c20,
+-	0x28577: 0x6cf38e20,
+-	0x28578: 0x6d251a20,
+-	0x2857d: 0x6c681220, 0x2857e: 0x6cfe0820, 0x2857f: 0x6d2d0620,
+-	// Block 0xa16, offset 0x28580
+-	0x28580: 0x6cca3a20, 0x28581: 0x6ca09220, 0x28583: 0x6cce3e20,
+-	0x28584: 0x6c12a420, 0x28585: 0x6cdbe220, 0x28586: 0x6c208420, 0x28587: 0x6c9c9620,
+-	0x28588: 0x6d3a3420, 0x28589: 0x6c1d2820, 0x2858a: 0x6c62c220, 0x2858b: 0x6c1d2a20,
+-	0x28599: 0x6c889020,
+-	0x2859e: 0x6c4d8020,
+-	0x285a4: 0x6c33c220, 0x285a5: 0x6cfe0c20, 0x285a6: 0x6c19ae20, 0x285a7: 0x6cce4020,
+-	0x285a8: 0x6c873820, 0x285a9: 0x6c5a2c20,
+-	0x285ac: 0x6c2af820, 0x285af: 0x6c897a20,
+-	0x285b6: 0x6d28a420,
+-	0x285ba: 0x6c5e4420, 0x285bb: 0x6c8c0420,
+-	0x285be: 0x6c31ee20, 0x285bf: 0x6c4f3620,
+-	// Block 0xa17, offset 0x285c0
+-	0x285c0: 0x6d1ddc20, 0x285c1: 0x6d263a20, 0x285c2: 0x6c4cf420, 0x285c3: 0x6c8d9c20,
+-	0x285c5: 0x6c88de20, 0x285c7: 0x6c030220,
+-	0x285c8: 0x6c292220, 0x285c9: 0x6d194e20, 0x285ca: 0x6ca9e420, 0x285cb: 0x6ccde620,
+-	0x285cd: 0x6d035c20,
+-	0x285d0: 0x6c26da20, 0x285d1: 0x6d247420, 0x285d2: 0x6c118220, 0x285d3: 0x6cf33420,
+-	0x285d4: 0x6c141420, 0x285d5: 0x6c0fca20, 0x285d7: 0x6c663020,
+-	0x285de: 0x6c9bb820, 0x285df: 0x6cf05e20,
+-	0x285e0: 0x6ca09e20,
+-	0x285e5: 0x6cd73820, 0x285e6: 0x6c6b8220, 0x285e7: 0x6cd7b220,
+-	0x285e8: 0x6c5e5420, 0x285eb: 0x6c21ee20,
+-	0x285ed: 0x6c901420, 0x285ee: 0x6c582420,
+-	0x285f0: 0x6ceada20, 0x285f3: 0x6d220620,
+-	0x285f6: 0x6c165a20, 0x285f7: 0x6d1dee20,
+-	0x285f8: 0x6c5e5e20, 0x285fa: 0x6c806820,
+-	0x285ff: 0x6ca30c20,
+-	// Block 0xa18, offset 0x28600
+-	0x28600: 0x6c032220, 0x28601: 0x6c418020, 0x28602: 0x6d15cc20, 0x28603: 0x6c63ac20,
+-	0x28605: 0x6c269220, 0x28606: 0x6c2fa420, 0x28607: 0x6d0a8220,
+-	0x28608: 0x6cc59620, 0x28609: 0x6c732020, 0x2860a: 0x6ce94c20, 0x2860b: 0x6d064020,
+-	0x2860c: 0x6cd99220, 0x2860e: 0x6c128420, 0x2860f: 0x6c198e20,
+-	0x28611: 0x6c2f7020,
+-	0x2861a: 0x6c4d2620,
+-	0x2861f: 0x6cf47220,
+-	0x28626: 0x6cb72020,
+-	0x28628: 0x6c5f6820,
+-	0x2862e: 0x6c7cac20, 0x2862f: 0x6cef5e20,
+-	0x28636: 0x6cd44e20, 0x28637: 0x6c3f2820,
+-	0x28639: 0x6ce97a20, 0x2863b: 0x6c0cf020,
+-	0x2863d: 0x6cdff020, 0x2863e: 0x6c4f5220, 0x2863f: 0x6cb1ce20,
+-	// Block 0xa19, offset 0x28640
+-	0x28643: 0x6d217e20,
+-	0x28644: 0x6cdffa20,
+-	0x2864c: 0x6cfd9020, 0x2864e: 0x6d050c20,
+-	0x28653: 0x6cf26820,
+-	0x28654: 0x6c4d8220, 0x28655: 0x6caef220,
+-	0x2865d: 0x6ce04620, 0x2865f: 0x6c0d0a20,
+-	0x28660: 0x6cfd9e20, 0x28663: 0x6d162e20,
+-	0x28666: 0x6cb19020, 0x28667: 0x6c586c20,
+-	0x28668: 0x6ca24020, 0x28669: 0x6c035220, 0x2866b: 0x6c396020,
+-	0x2866f: 0x6c2f6020,
+-	0x28677: 0x6c3b3c20,
+-	0x2867a: 0x6c6bf620,
+-	0x2867e: 0x6cdd4a20,
+-	// Block 0xa1a, offset 0x28680
+-	0x28684: 0x6ced9220, 0x28685: 0x6c43a220,
+-	0x28688: 0x6c3b3e20, 0x2868a: 0x6ceb4420,
+-	0x2868c: 0x6cf1a620, 0x2868d: 0x6c487620, 0x2868e: 0x6c343620,
+-	0x28690: 0x6d308820, 0x28691: 0x6c22a020, 0x28692: 0x6d11ce20,
+-	0x28694: 0x6c050420, 0x28695: 0x6c10b820, 0x28696: 0x6ca15c20,
+-	0x28698: 0x6cb35e20, 0x2869b: 0x6c443020,
+-	0x2869e: 0x6c8e9220,
+-	0x286a1: 0x6cc4d020,
+-	0x286a8: 0x6c41b020, 0x286aa: 0x6c55a220, 0x286ab: 0x6ca1e620,
+-	0x286ae: 0x6d04f620, 0x286af: 0x6c59a220,
+-	0x286b0: 0x6c3f0220, 0x286b1: 0x6c5b4220, 0x286b3: 0x6cc1ca20,
+-	0x286b4: 0x6c6b3e20, 0x286b5: 0x6cead220, 0x286b6: 0x6d21ac20, 0x286b7: 0x6ca16820,
+-	0x286b8: 0x6d38b220, 0x286b9: 0x6c702820, 0x286bb: 0x6cd53c20,
+-	0x286bc: 0x6c7bae20, 0x286bd: 0x6cbf6620, 0x286be: 0x6c8b2c20, 0x286bf: 0x6c405e20,
+-	// Block 0xa1b, offset 0x286c0
+-	0x286ca: 0x6d074420,
+-	0x286d6: 0x6c8c6e20,
+-	0x286d8: 0x6ca88420, 0x286da: 0x6caf9c20,
+-	0x286dc: 0x6c406e20, 0x286dd: 0x6c10c620, 0x286de: 0x6d18e020,
+-	0x286e1: 0x6c0f8620, 0x286e3: 0x6c358420,
+-	0x286e9: 0x6d30a620, 0x286eb: 0x6c86b820,
+-	0x286ee: 0x6ce92620, 0x286ef: 0x6c26cc20,
+-	0x286f1: 0x6c931620, 0x286f2: 0x6d0c4020, 0x286f3: 0x6c301e20,
+-	0x286f4: 0x6cbcfc20, 0x286f5: 0x6ced5c20, 0x286f6: 0x6ca03c20, 0x286f7: 0x6d418020,
+-	0x286f8: 0x6c408420, 0x286f9: 0x6cc15620, 0x286fa: 0x6c078e20, 0x286fb: 0x6c02b420,
+-	0x286fc: 0x6cbaf620,
+-	// Block 0xa1c, offset 0x28700
+-	0x28701: 0x6cc44020,
+-	0x28708: 0x6cc41020, 0x28709: 0x6c576a20, 0x2870a: 0x6cfd2a20, 0x2870b: 0x6c7dd820,
+-	0x2870f: 0x6c258220,
+-	0x28712: 0x6d158820,
+-	0x28716: 0x6c1ae420, 0x28717: 0x6d404020,
+-	0x28718: 0x6ca52420, 0x28719: 0x6c1a5820, 0x2871a: 0x6c32a820, 0x2871b: 0x6d1e0620,
+-	0x2871c: 0x6d30e020, 0x2871e: 0x6ce0b020, 0x2871f: 0x6d0ff020,
+-	0x28720: 0x6d011e20, 0x28721: 0x6d07ec20, 0x28723: 0x6c32e420,
+-	0x28724: 0x6cd64c20, 0x28725: 0x6cfbbe20, 0x28726: 0x6cfbc020,
+-	0x28729: 0x6c359e20,
+-	0x28732: 0x6c7e5420,
+-	0x28738: 0x6cf10220, 0x28739: 0x6d1ec820, 0x2873a: 0x6d21e020,
+-	0x2873d: 0x6ce30420, 0x2873f: 0x6c6c7220,
+-	// Block 0xa1d, offset 0x28740
+-	0x28741: 0x6ce16420, 0x28742: 0x6cb69e20,
+-	0x28744: 0x6c2cec20, 0x28745: 0x6ce1fe20, 0x28746: 0x6c941820, 0x28747: 0x6d2e9a20,
+-	0x28748: 0x6cf17020, 0x28749: 0x6c62d620, 0x2874a: 0x6c023820, 0x2874b: 0x6cabaa20,
+-	0x2874c: 0x6cb88420,
+-	0x28750: 0x6cd21220, 0x28751: 0x6cde2420,
+-	0x28754: 0x6ca18e20,
+-	0x28758: 0x6d1f9220,
+-	0x28760: 0x6d2c6a20, 0x28763: 0x6d117220,
+-	0x2876b: 0x6c1cfa20,
+-	0x2876c: 0x6c84b220, 0x2876d: 0x6d21f420, 0x2876e: 0x6c161420, 0x2876f: 0x6d143620,
+-	0x28772: 0x6c1c9420,
+-	0x28774: 0x6c84b420,
+-	0x2877d: 0x6ce90a20, 0x2877f: 0x6d40fe20,
+-	// Block 0xa1e, offset 0x28780
+-	0x28782: 0x6cfbd620,
+-	0x28787: 0x6cf93620,
+-	0x28789: 0x6c0d0c20, 0x2878a: 0x6c4e4a20, 0x2878b: 0x6cb6b020,
+-	0x2878c: 0x6cca7a20, 0x2878e: 0x6c3a2c20,
+-	0x28790: 0x6ccdea20,
+-	0x28798: 0x6c584820,
+-	0x287a0: 0x6c059a20, 0x287a1: 0x6d220220, 0x287a2: 0x6d220420,
+-	0x287a4: 0x6c610420,
+-	0x287b1: 0x6c7b0620, 0x287b2: 0x6d3fe420,
+-	0x287b9: 0x6cfd5420, 0x287ba: 0x6c9bc020,
+-	// Block 0xa1f, offset 0x287c0
+-	0x287c3: 0x6c87b820,
+-	0x287c4: 0x6d377820, 0x287c5: 0x6c38fc20, 0x287c6: 0x6c8b8820, 0x287c7: 0x6c115620,
+-	0x287c8: 0x6c320a20, 0x287c9: 0x6c4a0020, 0x287ca: 0x6d04b020, 0x287cb: 0x6c84ea20,
+-	0x287cc: 0x6cb80c20, 0x287cf: 0x6c753420,
+-	0x287d0: 0x6ceade20, 0x287d2: 0x6c72d220, 0x287d3: 0x6cff6420,
+-	0x287d8: 0x6cc23420,
+-	0x287dc: 0x6d3bba20,
+-	0x287e1: 0x6c754420,
+-	0x287e6: 0x6c6bbc20,
+-	0x287e8: 0x6d390620, 0x287e9: 0x6cfc8820, 0x287ea: 0x6c8f7020, 0x287eb: 0x6d100420,
+-	0x287ec: 0x6cc4b220, 0x287ed: 0x6d16d620, 0x287ee: 0x6c8ae020, 0x287ef: 0x6c0e5620,
+-	0x287f0: 0x6c5ce220, 0x287f1: 0x6c61be20, 0x287f2: 0x6c306a20, 0x287f3: 0x6d386420,
+-	0x287f4: 0x6cc29220, 0x287f5: 0x6c6a9c20,
+-	0x287fa: 0x6c710820,
+-	0x287fc: 0x6c078620, 0x287ff: 0x6c087620,
+-	// Block 0xa20, offset 0x28800
+-	0x28800: 0x6c43fe20, 0x28801: 0x6c217c20, 0x28803: 0x6cb9a220,
+-	0x28804: 0x6cd9c820, 0x28805: 0x6cf0a020, 0x28806: 0x6c1a1420, 0x28807: 0x6c909020,
+-	0x28808: 0x6d213e20, 0x28809: 0x6c7e4620, 0x2880a: 0x6cb9a420, 0x2880b: 0x6c2cd220,
+-	0x2880c: 0x6cde0e20, 0x2880d: 0x6d2e6c20, 0x2880f: 0x6c38b620,
+-	0x28810: 0x6c8b5620, 0x28811: 0x6ce64420, 0x28812: 0x6c5ebe20, 0x28813: 0x6cb8de20,
+-	0x28814: 0x6c556820, 0x28817: 0x6d214220,
+-	0x28818: 0x6cb79c20, 0x28819: 0x6d214420, 0x2881a: 0x6cebe020,
+-	0x2881c: 0x6c03bc20, 0x2881d: 0x6cb61020, 0x2881e: 0x6cc95620, 0x2881f: 0x6cbb8620,
+-	0x28820: 0x6d0bc220, 0x28821: 0x6cfc1e20,
+-	0x28828: 0x6c220820, 0x28829: 0x6c396220, 0x2882b: 0x6c7dba20,
+-	0x2882c: 0x6c4be020, 0x2882d: 0x6cc39220, 0x2882e: 0x6c367a20, 0x2882f: 0x6cbf4e20,
+-	0x28832: 0x6c96d420, 0x28833: 0x6c7a5820,
+-	0x28834: 0x6d11c620, 0x28837: 0x6cc39420,
+-	0x28838: 0x6c1e6420, 0x28839: 0x6c642c20, 0x2883b: 0x6d3a7a20,
+-	0x2883d: 0x6c331220, 0x2883e: 0x6cec0a20,
+-	// Block 0xa21, offset 0x28840
+-	0x28840: 0x6ca51220,
+-	0x28844: 0x6d0cce20, 0x28845: 0x6ce78020,
+-	0x2884b: 0x6d03fe20,
+-	0x2884c: 0x6c4bee20, 0x2884d: 0x6cb26a20,
+-	0x28851: 0x6d229c20, 0x28852: 0x6c51ec20,
+-	0x28854: 0x6d3da420, 0x28857: 0x6ccf0020,
+-	0x28858: 0x6d22a220, 0x2885b: 0x6c62a620,
+-	0x2885d: 0x6cbaea20, 0x2885e: 0x6cd73220, 0x2885f: 0x6c21de20,
+-	0x28860: 0x6d40e820, 0x28861: 0x6c838e20, 0x28862: 0x6ca60e20,
+-	0x28864: 0x6cebf820, 0x28865: 0x6d2c5c20, 0x28867: 0x6c28d420,
+-	0x2886e: 0x6c328820, 0x2886f: 0x6c0bd020,
+-	0x28870: 0x6c6a3e20, 0x28871: 0x6cb87c20, 0x28872: 0x6c519020, 0x28873: 0x6c1d5e20,
+-	0x28874: 0x6d0ce620, 0x28876: 0x6d0ee020,
+-	0x2887a: 0x6cd94e20, 0x2887b: 0x6ce2c420,
+-	0x2887c: 0x6d11e020, 0x2887e: 0x6c779620,
+-	// Block 0xa22, offset 0x28880
+-	0x28880: 0x6d3c6e20, 0x28881: 0x6c4b9a20, 0x28882: 0x6c005a20, 0x28883: 0x6c4d8420,
+-	0x28888: 0x6cddb820, 0x28889: 0x6d076020, 0x2888a: 0x6c0c5020,
+-	0x2888c: 0x6c3cfc20, 0x2888d: 0x6cc15e20, 0x2888e: 0x6c98ae20,
+-	0x28890: 0x6c4ca020,
+-	0x28896: 0x6c0ac420, 0x28897: 0x6c751020,
+-	0x28898: 0x6c208a20, 0x2889b: 0x6cb47420,
+-	0x2889f: 0x6d195020,
+-	0x288a2: 0x6cb95020, 0x288a3: 0x6d196220,
+-	0x288a4: 0x6c36ec20, 0x288a5: 0x6c8da620, 0x288a7: 0x6c0ace20,
+-	0x288ad: 0x6c5e5620, 0x288ae: 0x6ca0b620,
+-	0x288b1: 0x6d09ce20,
+-	0x288b4: 0x6d0f1e20,
+-	0x288b8: 0x6c87ba20, 0x288ba: 0x6ce04e20,
+-	0x288be: 0x6c947e20,
+-	// Block 0xa23, offset 0x288c0
+-	0x288c0: 0x6c769020, 0x288c1: 0x6c99aa20, 0x288c2: 0x6cfefc20,
+-	0x288c7: 0x6c007220,
+-	0x288ca: 0x6cde1420,
+-	0x288cd: 0x6c9aac20, 0x288cf: 0x6c4c4220,
+-	0x288d3: 0x6c432220,
+-	0x288d4: 0x6ca4c220, 0x288d5: 0x6c4ffc20,
+-	0x288e0: 0x6cc39820,
+-	0x288e5: 0x6c12a620, 0x288e6: 0x6ccb0a20,
+-	0x288eb: 0x6cb03c20,
+-	0x288f2: 0x6d006220, 0x288f3: 0x6cff6620,
+-	0x288f4: 0x6c712c20,
+-	0x288f9: 0x6c1a2420, 0x288fa: 0x6ca50820,
+-	// Block 0xa24, offset 0x28900
+-	0x28900: 0x6ca58e20,
+-	0x2890d: 0x6ca25220, 0x2890f: 0x6cce8020,
+-	0x28911: 0x6c2cda20,
+-	0x28914: 0x6c8d5220, 0x28916: 0x6d31f820, 0x28917: 0x6d11d020,
+-	0x28919: 0x6c404a20, 0x2891a: 0x6cb9c620, 0x2891b: 0x6cbf5820,
+-	0x2891c: 0x6c715620, 0x2891d: 0x6c0e2c20, 0x2891e: 0x6c990620, 0x2891f: 0x6d2ce020,
+-	0x28920: 0x6cdf0820,
+-	0x28924: 0x6c1ce020,
+-	0x2892b: 0x6d2d3220,
+-	0x2892d: 0x6cd1f420, 0x2892e: 0x6d1e7c20,
+-	0x28930: 0x6cbf6820, 0x28931: 0x6c2a3820, 0x28932: 0x6ce42620, 0x28933: 0x6d3c7820,
+-	0x28935: 0x6d1b8020, 0x28937: 0x6ca51820,
+-	0x28938: 0x6c0e9620, 0x28939: 0x6c7bb220, 0x2893a: 0x6d355220, 0x2893b: 0x6c34ba20,
+-	0x2893c: 0x6c236220, 0x2893d: 0x6c061620,
+-	// Block 0xa25, offset 0x28940
+-	0x28947: 0x6c846820,
+-	0x2894a: 0x6c716c20, 0x2894b: 0x6cf1bc20,
+-	0x2894c: 0x6c8b3e20, 0x2894f: 0x6cf2c620,
+-	0x28950: 0x6cd2de20, 0x28951: 0x6ca7b620, 0x28952: 0x6c987c20, 0x28953: 0x6c6f8c20,
+-	0x28958: 0x6d050020,
+-	0x2895d: 0x6cf2a420, 0x2895f: 0x6c2a4020,
+-	0x28961: 0x6cf70e20, 0x28962: 0x6c01e020, 0x28963: 0x6c26ce20,
+-	0x28964: 0x6d401020, 0x28965: 0x6c4f2a20, 0x28966: 0x6c20ea20, 0x28967: 0x6c089820,
+-	0x28969: 0x6c309020, 0x2896b: 0x6d2f1220,
+-	0x2896f: 0x6d0b0220,
+-	0x28972: 0x6c2bac20, 0x28973: 0x6c5d6420,
+-	0x28977: 0x6c9f8020,
+-	0x2897a: 0x6c408820,
+-	0x2897c: 0x6c061e20, 0x2897d: 0x6c78e420, 0x2897e: 0x6c991020, 0x2897f: 0x6cc55820,
+-	// Block 0xa26, offset 0x28980
+-	0x28980: 0x6d3fda20, 0x28981: 0x6cb88020, 0x28982: 0x6cf98020, 0x28983: 0x6cda0220,
+-	0x28984: 0x6d050e20, 0x28985: 0x6ca36e20,
+-	0x28989: 0x6c979620,
+-	0x2898e: 0x6d2c0820, 0x2898f: 0x6c154a20,
+-	0x28990: 0x6ccf8420, 0x28991: 0x6cf2ca20,
+-	0x28996: 0x6c005c20, 0x28997: 0x6c059820,
+-	0x28998: 0x6c4fb820, 0x2899a: 0x6ccad420, 0x2899b: 0x6cddba20,
+-	0x2899c: 0x6ce44020, 0x2899d: 0x6d0bcc20, 0x2899f: 0x6c0e3a20,
+-	0x289a0: 0x6cc6e420,
+-	0x289ab: 0x6ccc2c20,
+-	0x289ac: 0x6cf26a20, 0x289af: 0x6c028a20,
+-	0x289b1: 0x6d3c2820, 0x289b3: 0x6cb1c020,
+-	0x289b4: 0x6cdbe820, 0x289b5: 0x6d143820, 0x289b6: 0x6cda0420, 0x289b7: 0x6c30d220,
+-	0x289b8: 0x6cda0620, 0x289b9: 0x6c956e20,
+-	// Block 0xa27, offset 0x289c0
+-	0x289c3: 0x6c3afc20,
+-	0x289c4: 0x6d422220, 0x289c6: 0x6ca53c20, 0x289c7: 0x6c2ac420,
+-	0x289c8: 0x6d34c220, 0x289c9: 0x6c25d020, 0x289ca: 0x6c8a5820, 0x289cb: 0x6c616420,
+-	0x289cc: 0x6c0ea020, 0x289cd: 0x6c23d020, 0x289ce: 0x6c1a6020, 0x289cf: 0x6c104e20,
+-	0x289d1: 0x6cca1020, 0x289d2: 0x6d29be20,
+-	0x289d8: 0x6c69e420, 0x289db: 0x6d125220,
+-	0x289dc: 0x6c920620, 0x289de: 0x6c121420,
+-	0x289e8: 0x6ca67020,
+-	0x289f0: 0x6c6b8820, 0x289f1: 0x6cb47c20, 0x289f2: 0x6d3c5020, 0x289f3: 0x6d29c820,
+-	0x289fa: 0x6c87c420,
+-	0x289fd: 0x6c7ed020,
+-	// Block 0xa28, offset 0x28a00
+-	0x28a00: 0x6c1d0620, 0x28a03: 0x6d2eae20,
+-	0x28a0d: 0x6c0bb420, 0x28a0e: 0x6cf23220,
+-	0x28a13: 0x6c53de20,
+-	0x28a17: 0x6cb1fc20,
+-	0x28a19: 0x6ccb9e20,
+-	0x28a1e: 0x6ca67220, 0x28a1f: 0x6c3b4e20,
+-	0x28a20: 0x6d065620, 0x28a22: 0x6cd2da20,
+-	0x28a24: 0x6c72c220,
+-	0x28a28: 0x6c752420, 0x28a2a: 0x6d24a220,
+-	0x28a2c: 0x6c4c2a20, 0x28a2d: 0x6c4c3420, 0x28a2f: 0x6c55a420,
+-	0x28a32: 0x6c869020, 0x28a33: 0x6d00fa20,
+-	0x28a34: 0x6c376c20, 0x28a35: 0x6d25b420, 0x28a36: 0x6c4d2e20,
+-	0x28a39: 0x6c6ebc20, 0x28a3b: 0x6c78de20,
+-	0x28a3d: 0x6d3fcc20, 0x28a3e: 0x6c3ae620,
+-	// Block 0xa29, offset 0x28a40
+-	0x28a40: 0x6cae8820, 0x28a41: 0x6c44e220, 0x28a43: 0x6c652820,
+-	0x28a44: 0x6ca61220, 0x28a46: 0x6cfbc220, 0x28a47: 0x6c873c20,
+-	0x28a48: 0x6c17a820, 0x28a4a: 0x6c377620, 0x28a4b: 0x6c44e820,
+-	0x28a4c: 0x6d247620, 0x28a4d: 0x6c560420, 0x28a4e: 0x6c3af820, 0x28a4f: 0x6c028c20,
+-	0x28a53: 0x6c37b220,
+-	0x28a58: 0x6c78ec20, 0x28a59: 0x6c7ab620, 0x28a5a: 0x6c0fd020,
+-	0x28a5d: 0x6d13a020, 0x28a5e: 0x6c69e820,
+-	0x28a66: 0x6c17ae20, 0x28a67: 0x6c44ec20,
+-	0x28a68: 0x6cc82e20, 0x28a6a: 0x6d273c20,
+-	0x28a6c: 0x6c8c1620,
+-	0x28a71: 0x6d24a620, 0x28a72: 0x6d274820, 0x28a73: 0x6d2d1220,
+-	0x28a74: 0x6cff6820, 0x28a77: 0x6c9f2420,
+-	0x28a7b: 0x6c4af820,
+-	0x28a7c: 0x6c6f6e20, 0x28a7e: 0x6cebaa20,
+-	// Block 0xa2a, offset 0x28a80
+-	0x28a81: 0x6cf78220, 0x28a82: 0x6cefd620, 0x28a83: 0x6d3d6a20,
+-	0x28a84: 0x6cf0a220, 0x28a85: 0x6c7c8420,
+-	0x28a88: 0x6c9a9820, 0x28a8a: 0x6c505020, 0x28a8b: 0x6c4f5020,
+-	0x28a8c: 0x6c399a20, 0x28a8d: 0x6ca96e20, 0x28a8e: 0x6d205420, 0x28a8f: 0x6c57a420,
+-	0x28a92: 0x6c812420,
+-	0x28aa0: 0x6d3a1820, 0x28aa1: 0x6c4b1620, 0x28aa2: 0x6c0a1620, 0x28aa3: 0x6c642e20,
+-	0x28aa4: 0x6ce59c20, 0x28aa6: 0x6c93f020, 0x28aa7: 0x6c79a220,
+-	0x28aa8: 0x6d419420, 0x28aa9: 0x6c8d4620, 0x28aaa: 0x6cb63220,
+-	0x28aac: 0x6d3a1e20,
+-	0x28ab1: 0x6c47ba20, 0x28ab2: 0x6d413020,
+-	0x28ab4: 0x6d0f6620, 0x28ab5: 0x6cda5620, 0x28ab7: 0x6c7c9620,
+-	0x28ab9: 0x6c167a20, 0x28abb: 0x6d113e20,
+-	0x28abe: 0x6d23e220,
+-	// Block 0xa2b, offset 0x28ac0
+-	0x28ac5: 0x6cd50420, 0x28ac6: 0x6c7f5420, 0x28ac7: 0x6d187620,
+-	0x28ac8: 0x6c30c420,
+-	0x28acc: 0x6cf3f020, 0x28acd: 0x6d1d1220, 0x28ace: 0x6c3f0420, 0x28acf: 0x6d3be820,
+-	0x28ad0: 0x6c3f8a20, 0x28ad2: 0x6cdb2a20, 0x28ad3: 0x6c853420,
+-	0x28ad4: 0x6d122820, 0x28ad5: 0x6cea1020,
+-	0x28add: 0x6c4b7a20,
+-	0x28ae1: 0x6c940020, 0x28ae2: 0x6d0ed420, 0x28ae3: 0x6cb66620,
+-	0x28ae4: 0x6c813020, 0x28ae5: 0x6d3a3020, 0x28ae7: 0x6c4b1e20,
+-	0x28ae8: 0x6c551020,
+-	0x28aef: 0x6c6ddc20,
+-	0x28af2: 0x6c1bc620,
+-	0x28af5: 0x6c717220, 0x28af6: 0x6d2c6020,
+-	0x28af8: 0x6c9e8020,
+-	// Block 0xa2c, offset 0x28b00
+-	0x28b00: 0x6d39da20, 0x28b01: 0x6c41ba20, 0x28b02: 0x6d047620, 0x28b03: 0x6c60e620,
+-	0x28b07: 0x6cccaa20,
+-	0x28b08: 0x6c9ab620, 0x28b09: 0x6d287420,
+-	0x28b0d: 0x6cd48820,
+-	0x28b10: 0x6c941a20, 0x28b11: 0x6d206020, 0x28b12: 0x6c681420, 0x28b13: 0x6caacc20,
+-	0x28b18: 0x6c72c420, 0x28b19: 0x6d206220,
+-	0x28b1c: 0x6d195220, 0x28b1d: 0x6ce2ce20, 0x28b1e: 0x6cef7220, 0x28b1f: 0x6c17f620,
+-	0x28b20: 0x6c8c8620, 0x28b21: 0x6c483020, 0x28b23: 0x6c875a20,
+-	0x28b24: 0x6c8ab020, 0x28b27: 0x6c68ac20,
+-	0x28b28: 0x6d0ff620, 0x28b29: 0x6c0c5e20, 0x28b2a: 0x6cb6a220,
+-	0x28b2e: 0x6d196420,
+-	0x28b31: 0x6c0d7620, 0x28b32: 0x6c9bbc20, 0x28b33: 0x6c145a20,
+-	0x28b35: 0x6c41be20,
+-	0x28b39: 0x6cc21c20, 0x28b3a: 0x6c2bc020, 0x28b3b: 0x6c82a020,
+-	// Block 0xa2d, offset 0x28b40
+-	0x28b40: 0x6c8dcc20,
+-	0x28b44: 0x6c585220, 0x28b45: 0x6cc23220, 0x28b47: 0x6c959c20,
+-	0x28b49: 0x6c7cc820,
+-	0x28b4d: 0x6cc08020, 0x28b4e: 0x6d227620, 0x28b4f: 0x6c57a620,
+-	0x28b53: 0x6c833a20,
+-	0x28b55: 0x6cc60620, 0x28b56: 0x6cffb620, 0x28b57: 0x6cd8da20,
+-	0x28b5a: 0x6c327220, 0x28b5b: 0x6c0cb420,
+-	0x28b60: 0x6ca97020, 0x28b62: 0x6c51e020, 0x28b63: 0x6cadc420,
+-	0x28b65: 0x6c3acc20, 0x28b66: 0x6ca2aa20,
+-	0x28b69: 0x6c3d9620,
+-	0x28b6c: 0x6c55a820, 0x28b6d: 0x6cedec20, 0x28b6e: 0x6ccc1420,
+-	0x28b70: 0x6c687420, 0x28b71: 0x6cf47420,
+-	0x28b79: 0x6c404c20,
+-	// Block 0xa2e, offset 0x28b80
+-	0x28b81: 0x6c0df620, 0x28b82: 0x6d3b3020,
+-	0x28b84: 0x6d3a2a20, 0x28b85: 0x6c1ada20, 0x28b87: 0x6cd07c20,
+-	0x28b88: 0x6c550820, 0x28b89: 0x6c101e20,
+-	0x28b8e: 0x6cc4d420,
+-	0x28b96: 0x6ca2b620,
+-	0x28b98: 0x6c869220, 0x28b9b: 0x6c638820,
+-	0x28b9e: 0x6c96e020,
+-	0x28ba1: 0x6c9b6820, 0x28ba2: 0x6ca1f020, 0x28ba3: 0x6d38b820,
+-	0x28ba4: 0x6cfc3820, 0x28ba5: 0x6c5b7420, 0x28ba6: 0x6c48fc20, 0x28ba7: 0x6c702c20,
+-	0x28ba9: 0x6ca2b820, 0x28bab: 0x6cc82a20,
+-	0x28bad: 0x6cf3fc20, 0x28baf: 0x6cc7d820,
+-	0x28bb1: 0x6d2ce620,
+-	// Block 0xa2f, offset 0x28bc0
+-	0x28bc1: 0x6caae220, 0x28bc2: 0x6d010a20,
+-	0x28bc4: 0x6c680220,
+-	0x28bcb: 0x6c853a20,
+-	0x28bcc: 0x6cd51020, 0x28bcd: 0x6d190020, 0x28bce: 0x6c2bae20, 0x28bcf: 0x6cbe9220,
+-	0x28bd0: 0x6c717420, 0x28bd3: 0x6d373620,
+-	0x28bd5: 0x6c80f020, 0x28bd6: 0x6c10ca20, 0x28bd7: 0x6c7bca20,
+-	0x28bd8: 0x6d190220, 0x28bda: 0x6c0f9a20,
+-	0x28be7: 0x6c1c8c20,
+-	0x28bed: 0x6c680c20, 0x28bef: 0x6cf32a20,
+-	0x28bf0: 0x6d0aac20,
+-	0x28bf5: 0x6cea3220, 0x28bf6: 0x6c987e20,
+-	0x28bf8: 0x6c39b220, 0x28bf9: 0x6d3dce20, 0x28bfb: 0x6cb88220,
+-	0x28bfd: 0x6cde2220, 0x28bfe: 0x6cb68a20,
+-	// Block 0xa30, offset 0x28c00
+-	0x28c00: 0x6caf1e20, 0x28c01: 0x6c0cc620, 0x28c02: 0x6c3bfe20, 0x28c03: 0x6ce92820,
+-	0x28c04: 0x6c57d220, 0x28c07: 0x6c36d220,
+-	0x28c0b: 0x6c36d420,
+-	0x28c0e: 0x6c2fc420,
+-	0x28c10: 0x6cc7e220,
+-	0x28c16: 0x6c36d620,
+-	0x28c1e: 0x6d0ef020, 0x28c1f: 0x6cd8f820,
+-	0x28c25: 0x6d1cc020, 0x28c26: 0x6ca61620, 0x28c27: 0x6ca61820,
+-	0x28c28: 0x6d158e20,
+-	0x28c39: 0x6c9c9820,
+-	0x28c3e: 0x6d129820, 0x28c3f: 0x6cb32620,
+-	// Block 0xa31, offset 0x28c40
+-	0x28c40: 0x6c240420, 0x28c42: 0x6cf11820,
+-	0x28c44: 0x6c4d8820, 0x28c45: 0x6d1c2820, 0x28c47: 0x6ce6a020,
+-	0x28c48: 0x6d375e20, 0x28c49: 0x6c3a2a20, 0x28c4a: 0x6d1f9420,
+-	0x28c4d: 0x6c7cb020, 0x28c4e: 0x6c01e220, 0x28c4f: 0x6c03d220,
+-	0x28c51: 0x6c4f3420,
+-	0x28c5e: 0x6ca41620, 0x28c5f: 0x6ca3da20,
+-	0x28c62: 0x6c6df420,
+-	0x28c65: 0x6ceece20,
+-	0x28c71: 0x6c1f8e20, 0x28c73: 0x6cddbe20,
+-	0x28c74: 0x6ce20020, 0x28c75: 0x6cb6a620, 0x28c76: 0x6ce16620, 0x28c77: 0x6cf05a20,
+-	0x28c78: 0x6c41fc20, 0x28c7a: 0x6c446420,
+-	0x28c7c: 0x6c4f3820, 0x28c7e: 0x6ca37420, 0x28c7f: 0x6c446620,
+-	// Block 0xa32, offset 0x28c80
+-	0x28c84: 0x6d331420,
+-	0x28c97: 0x6cde2820,
+-	0x28c9b: 0x6cd84c20,
+-	0x28c9d: 0x6ca6de20, 0x28c9e: 0x6cca9820,
+-	0x28cab: 0x6d012a20,
+-	0x28caf: 0x6d410220,
+-	0x28cb0: 0x6d21fc20, 0x28cb1: 0x6ca6e020, 0x28cb2: 0x6cb55420,
+-	0x28cb5: 0x6cd03220,
+-	0x28cbc: 0x6c102020,
+-	// Block 0xa33, offset 0x28cc0
+-	0x28ccb: 0x6c7d9a20,
+-	0x28ccc: 0x6c84c420, 0x28cce: 0x6c488220,
+-	0x28cd6: 0x6d0e1c20, 0x28cd7: 0x6c10d220,
+-	0x28cd8: 0x6c672a20, 0x28cda: 0x6cf40e20, 0x28cdb: 0x6c134420,
+-	0x28cdc: 0x6c8c0e20, 0x28cdd: 0x6d3c0420, 0x28cdf: 0x6c5b0e20,
+-	0x28ce1: 0x6ce7a620, 0x28ce2: 0x6d2ca220,
+-	0x28ce4: 0x6c522c20, 0x28ce7: 0x6c4ce220,
+-	0x28cf1: 0x6c6e4220,
+-	0x28cf5: 0x6c2f1620, 0x28cf7: 0x6d1cdc20,
+-	0x28cfc: 0x6d377420,
+-	// Block 0xa34, offset 0x28d00
+-	0x28d02: 0x6cf06620,
+-	0x28d04: 0x6c62fa20, 0x28d05: 0x6cc73620,
+-	0x28d08: 0x6c030620, 0x28d09: 0x6c292420, 0x28d0a: 0x6c958a20, 0x28d0b: 0x6d13a220,
+-	0x28d0c: 0x6ceed220,
+-	0x28d12: 0x6cbb3220,
+-	0x28d19: 0x6c446c20, 0x28d1a: 0x6c62fc20,
+-	0x28d26: 0x6d409620,
+-	0x28d28: 0x6d15a620, 0x28d2b: 0x6d2ca420,
+-	0x28d2d: 0x6c8b8c20,
+-	0x28d34: 0x6d13a820,
+-	0x28d3c: 0x6d2dd420,
+-	// Block 0xa35, offset 0x28d40
+-	0x28d40: 0x6c1e1620, 0x28d41: 0x6c0c6620,
+-	0x28d46: 0x6d077020, 0x28d47: 0x6d1eda20,
+-	0x28d4d: 0x6d029a20, 0x28d4e: 0x6cef7c20, 0x28d4f: 0x6c87ca20,
+-	0x28d5b: 0x6c0fdc20,
+-	0x28d5c: 0x6c664c20, 0x28d5d: 0x6c158220, 0x28d5e: 0x6c7d9e20,
+-	0x28d61: 0x6cbe9a20,
+-	0x28d67: 0x6cd6ce20,
+-	0x28d68: 0x6cf76420, 0x28d69: 0x6cc23620,
+-	0x28d70: 0x6c95a020, 0x28d73: 0x6c294c20,
+-	0x28d74: 0x6ca71020, 0x28d75: 0x6c855a20, 0x28d77: 0x6c03e420,
+-	0x28d79: 0x6c365220, 0x28d7a: 0x6c3d7a20, 0x28d7b: 0x6c400620,
+-	0x28d7c: 0x6c5d1220, 0x28d7d: 0x6d2cd820, 0x28d7e: 0x6c014420,
+-	// Block 0xa36, offset 0x28d80
+-	0x28d81: 0x6cc09620, 0x28d82: 0x6c1dd620, 0x28d83: 0x6c9e3c20,
+-	0x28d84: 0x6d0aa620, 0x28d85: 0x6ce92420, 0x28d86: 0x6ca60c20, 0x28d87: 0x6c570220,
+-	0x28d88: 0x6cd50a20, 0x28d8a: 0x6d05f620, 0x28d8b: 0x6d384620,
+-	0x28d8c: 0x6c776220,
+-	0x28d92: 0x6cfee220, 0x28d93: 0x6cfee420,
+-	0x28d94: 0x6c22d420, 0x28d95: 0x6c1c3c20, 0x28d97: 0x6c2dd220,
+-	0x28d98: 0x6d181420, 0x28d9a: 0x6c2f6420,
+-	0x28d9d: 0x6c4ef620, 0x28d9e: 0x6cece420,
+-	0x28da0: 0x6d160220, 0x28da1: 0x6c066020, 0x28da2: 0x6d184220,
+-	0x28da7: 0x6d0a9e20,
+-	0x28dac: 0x6cfdd420,
+-	0x28db3: 0x6c08a420,
+-	0x28db6: 0x6c6b3020, 0x28db7: 0x6c43a620,
+-	0x28db8: 0x6d2b5620, 0x28dba: 0x6d326a20, 0x28dbb: 0x6c55aa20,
+-	0x28dbc: 0x6cf6b420, 0x28dbd: 0x6d02e820, 0x28dbe: 0x6cff1220, 0x28dbf: 0x6c404e20,
+-	// Block 0xa37, offset 0x28dc0
+-	0x28dc0: 0x6d383c20, 0x28dc2: 0x6c99b620, 0x28dc3: 0x6d02ea20,
+-	0x28dc4: 0x6cbad820,
+-	0x28dc8: 0x6c3b9220, 0x28dc9: 0x6c049820, 0x28dca: 0x6c583220,
+-	0x28dd1: 0x6c687620, 0x28dd3: 0x6c066620,
+-	0x28dd4: 0x6d0af820, 0x28dd5: 0x6d114020,
+-	0x28ddb: 0x6cf8d820,
+-	0x28ddd: 0x6c729e20, 0x28ddf: 0x6cc27c20,
+-	0x28de0: 0x6d26f020, 0x28de1: 0x6cdf4220, 0x28de2: 0x6ce81820, 0x28de3: 0x6ca16c20,
+-	0x28de4: 0x6d2c5420, 0x28de5: 0x6cc1ce20, 0x28de7: 0x6c3da620,
+-	0x28de9: 0x6cc1d020, 0x28dea: 0x6c1c7e20,
+-	0x28dec: 0x6d1f7c20,
+-	0x28df7: 0x6ce38620,
+-	0x28dfa: 0x6cebf020,
+-	0x28dfd: 0x6ceb5620, 0x28dff: 0x6c1eb220,
+-	// Block 0xa38, offset 0x28e00
+-	0x28e01: 0x6c43b020,
+-	0x28e08: 0x6d251620, 0x28e09: 0x6c43b220, 0x28e0a: 0x6cc1d220,
+-	0x28e0f: 0x6c72a020,
+-	0x28e12: 0x6c2ef820, 0x28e13: 0x6d157e20,
+-	0x28e14: 0x6cd20820, 0x28e15: 0x6d18e420, 0x28e17: 0x6c4b2020,
+-	0x28e18: 0x6c680420, 0x28e1a: 0x6cd94420, 0x28e1b: 0x6cbf7220,
+-	0x28e1d: 0x6c36c220, 0x28e1e: 0x6c59a420, 0x28e1f: 0x6c5b4620,
+-	0x28e20: 0x6d0a4620, 0x28e23: 0x6c717020,
+-	0x28e25: 0x6d2d2220, 0x28e26: 0x6c1c8220, 0x28e27: 0x6c81c020,
+-	0x28e29: 0x6cb66820, 0x28e2a: 0x6d050420,
+-	0x28e2c: 0x6c5af620, 0x28e2d: 0x6ce79820,
+-	0x28e3a: 0x6c407220,
+-	0x28e3d: 0x6d0a4820, 0x28e3e: 0x6c6b4e20, 0x28e3f: 0x6c9d0620,
+-	// Block 0xa39, offset 0x28e40
+-	0x28e40: 0x6d242820,
+-	0x28e48: 0x6d3c4a20, 0x28e49: 0x6c688e20, 0x28e4a: 0x6d373820, 0x28e4b: 0x6c1a5220,
+-	0x28e4d: 0x6c6b6c20, 0x28e4e: 0x6cff3220, 0x28e4f: 0x6c18f220,
+-	0x28e50: 0x6c848220, 0x28e51: 0x6d26fe20, 0x28e53: 0x6d373a20,
+-	0x28e54: 0x6c818820, 0x28e55: 0x6cf32c20, 0x28e56: 0x6cc1ea20,
+-	0x28e58: 0x6cedce20, 0x28e5a: 0x6d142e20, 0x28e5b: 0x6d190420,
+-	0x28e5c: 0x6c80f220, 0x28e5e: 0x6ce7fa20, 0x28e5f: 0x6c015c20,
+-	0x28e60: 0x6c74e420, 0x28e61: 0x6d0ee420,
+-	0x28e65: 0x6c72b020, 0x28e67: 0x6d327620,
+-	0x28e69: 0x6d373c20, 0x28e6a: 0x6c98a820,
+-	0x28e6e: 0x6d055420,
+-	0x28e71: 0x6c208020, 0x28e72: 0x6c1e6c20,
+-	0x28e78: 0x6cbafc20, 0x28e79: 0x6c3a2620, 0x28e7a: 0x6c16d420,
+-	0x28e7c: 0x6c9dec20, 0x28e7d: 0x6cdb5a20, 0x28e7e: 0x6c02b820,
+-	// Block 0xa3a, offset 0x28e80
+-	0x28e80: 0x6c3f9620,
+-	0x28e84: 0x6cf10620, 0x28e85: 0x6d342420, 0x28e86: 0x6c9f8220, 0x28e87: 0x6c168820,
+-	0x28e88: 0x6d0cfa20, 0x28e89: 0x6d245820, 0x28e8b: 0x6c408a20,
+-	0x28e8c: 0x6cded020, 0x28e8d: 0x6c616020, 0x28e8f: 0x6c3aee20,
+-	0x28e92: 0x6c55f620, 0x28e93: 0x6c70e220,
+-	0x28e95: 0x6d22ac20,
+-	0x28e9b: 0x6cb69220,
+-	0x28e9c: 0x6c9a3820, 0x28e9f: 0x6c0ccc20,
+-	0x28ea0: 0x6c4cd820,
+-	0x28ea4: 0x6ca04c20, 0x28ea6: 0x6ced5e20, 0x28ea7: 0x6ced6020,
+-	0x28eb4: 0x6c6dec20, 0x28eb5: 0x6d245a20, 0x28eb6: 0x6cfbce20,
+-	0x28eb9: 0x6c212a20, 0x28eba: 0x6c60f820,
+-	0x28ebc: 0x6cfd9620, 0x28ebd: 0x6cae4420, 0x28ebe: 0x6c409220,
+-	// Block 0xa3b, offset 0x28ec0
+-	0x28ec2: 0x6c8ed820,
+-	0x28ec4: 0x6cc9da20, 0x28ec5: 0x6d08f020, 0x28ec6: 0x6d409220,
+-	0x28ec8: 0x6c6b7e20, 0x28ecb: 0x6d2dc220,
+-	0x28ecd: 0x6d21e820, 0x28ece: 0x6d21ea20, 0x28ecf: 0x6c9a4020,
+-	0x28ed0: 0x6c9ea820, 0x28ed1: 0x6c99c020, 0x28ed2: 0x6c346a20, 0x28ed3: 0x6c409420,
+-	0x28edb: 0x6c671820,
+-	0x28ee6: 0x6c9e8420,
+-	0x28ee8: 0x6c023a20,
+-	0x28eed: 0x6c78e620,
+-	0x28ef6: 0x6c544420,
+-	0x28efa: 0x6c46e420,
+-	0x28efc: 0x6cf74c20, 0x28efe: 0x6cc6e820, 0x28eff: 0x6c43be20,
+-	// Block 0xa3c, offset 0x28f00
+-	0x28f00: 0x6cac9220, 0x28f01: 0x6d25d420, 0x28f02: 0x6cfa5e20,
+-	0x28f05: 0x6ccc2e20, 0x28f06: 0x6cafa620,
+-	0x28f08: 0x6cbe9620, 0x28f09: 0x6d1dde20, 0x28f0a: 0x6cc20220,
+-	0x28f0c: 0x6c462820, 0x28f0e: 0x6c446820, 0x28f0f: 0x6cfb0820,
+-	0x28f11: 0x6cdb6820,
+-	0x28f15: 0x6c04ae20, 0x28f16: 0x6cb6a820, 0x28f17: 0x6c548820,
+-	0x28f1b: 0x6cf74e20,
+-	0x28f1d: 0x6cf39220,
+-	0x28f2d: 0x6cb55620, 0x28f2e: 0x6c56ec20, 0x28f2f: 0x6c4aae20,
+-	0x28f31: 0x6c2bbc20, 0x28f32: 0x6cce2c20, 0x28f33: 0x6c975220,
+-	0x28f34: 0x6c9fde20, 0x28f35: 0x6c62ea20, 0x28f36: 0x6cf7c820, 0x28f37: 0x6cfb1020,
+-	0x28f38: 0x6c610220, 0x28f39: 0x6c16d820, 0x28f3a: 0x6c7a1220, 0x28f3b: 0x6c1cfc20,
+-	// Block 0xa3d, offset 0x28f40
+-	0x28f42: 0x6d2ef020, 0x28f43: 0x6cb1aa20,
+-	0x28f44: 0x6cdb6c20, 0x28f45: 0x6c94cc20, 0x28f46: 0x6c84c620, 0x28f47: 0x6c9c2020,
+-	0x28f48: 0x6c1cfe20, 0x28f49: 0x6ce47c20, 0x28f4b: 0x6c8da820,
+-	0x28f4d: 0x6c1c9a20,
+-	0x28f56: 0x6c1d0020,
+-	0x28f59: 0x6c1c9c20,
+-	0x28f5d: 0x6ca7c820, 0x28f5f: 0x6d1e0a20,
+-	0x28f6e: 0x6c9db020,
+-	0x28f70: 0x6cd51e20, 0x28f72: 0x6cf93820,
+-	0x28f74: 0x6c36f620, 0x28f75: 0x6d3ec820,
+-	0x28f78: 0x6c6b8420, 0x28f79: 0x6c5faa20, 0x28f7a: 0x6c53e820, 0x28f7b: 0x6cd18220,
+-	0x28f7c: 0x6c879c20, 0x28f7e: 0x6cb55c20,
+-	// Block 0xa3e, offset 0x28f80
+-	0x28f80: 0x6d38c620, 0x28f81: 0x6cd85820, 0x28f82: 0x6cc21e20,
+-	0x28f8b: 0x6d013420,
+-	0x28f97: 0x6cd85a20,
+-	0x28f9b: 0x6d061220,
+-	0x28fa0: 0x6c409e20,
+-	0x28faf: 0x6ca9e620,
+-	0x28fb0: 0x6d0bd020, 0x28fb1: 0x6c8ef020, 0x28fb2: 0x6c643420, 0x28fb3: 0x6c4ab020,
+-	0x28fb4: 0x6c7cc020, 0x28fb5: 0x6c1ca220, 0x28fb6: 0x6c121620, 0x28fb7: 0x6c1ed020,
+-	0x28fb9: 0x6c4c5020, 0x28fbb: 0x6c285a20,
+-	0x28fbf: 0x6c672e20,
+-	// Block 0xa3f, offset 0x28fc0
+-	0x28fc1: 0x6c292620, 0x28fc2: 0x6c548c20,
+-	0x28fc4: 0x6c7a1420, 0x28fc6: 0x6c1f9220, 0x28fc7: 0x6cb96220,
+-	0x28fc8: 0x6c010c20, 0x28fca: 0x6cb0e420,
+-	0x28fd1: 0x6d0abc20, 0x28fd2: 0x6c6dfc20, 0x28fd3: 0x6c9c2620,
+-	0x28fd5: 0x6c0d7a20, 0x28fd6: 0x6c801620, 0x28fd7: 0x6c47fa20,
+-	0x28fd8: 0x6c1e1420, 0x28fdb: 0x6d1dec20,
+-	0x28fdc: 0x6c488420, 0x28fdd: 0x6d220a20, 0x28fde: 0x6d397420,
+-	0x28fed: 0x6c115820, 0x28fef: 0x6c8ef420,
+-	0x28ff0: 0x6c105420, 0x28ff1: 0x6c965820, 0x28ff2: 0x6c6b8c20, 0x28ff3: 0x6d31a820,
+-	0x28ff4: 0x6c9f2220, 0x28ff5: 0x6c4a1620, 0x28ff7: 0x6c63f820,
+-	0x28ff9: 0x6c7ed220,
+-	// Block 0xa40, offset 0x29000
+-	0x29000: 0x6cd48c20, 0x29003: 0x6c4c5220,
+-	0x29006: 0x6c9c2820, 0x29007: 0x6cb9ea20,
+-	0x29008: 0x6c7f8420, 0x2900a: 0x6c51b220, 0x2900b: 0x6ce97c20,
+-	0x29011: 0x6c5b1020,
+-	0x29018: 0x6c52e620,
+-	0x2901c: 0x6c93c820, 0x2901f: 0x6c63fa20,
+-	0x29025: 0x6c4ab220,
+-	0x29028: 0x6d144420, 0x29029: 0x6c585420,
+-	0x29030: 0x6c95a220,
+-	0x29034: 0x6c754620,
+-	0x29038: 0x6c49ce20, 0x2903b: 0x6cc34820,
+-	0x2903c: 0x6ca7cc20, 0x2903f: 0x6c97b220,
+-	// Block 0xa41, offset 0x29040
+-	0x29042: 0x6d282420, 0x29043: 0x6cf18a20,
+-	0x29044: 0x6c1c0c20, 0x29045: 0x6c1c1820, 0x29046: 0x6d33dc20,
+-	0x29048: 0x6c224420, 0x29049: 0x6d3c3e20, 0x2904a: 0x6c573c20, 0x2904b: 0x6c6ac020,
+-	0x2904c: 0x6cc19e20, 0x2904d: 0x6ce86620, 0x2904e: 0x6c9f6a20, 0x2904f: 0x6c9a2020,
+-	0x29050: 0x6d218020, 0x29051: 0x6c026e20, 0x29052: 0x6c049a20,
+-	0x29054: 0x6caf8c20, 0x29055: 0x6d31a420, 0x29056: 0x6c91d020, 0x29057: 0x6c1c5420,
+-	0x29058: 0x6ce7f620, 0x2905a: 0x6c6a3420,
+-	0x2905c: 0x6d2da420,
+-	0x29062: 0x6c6c6820, 0x29063: 0x6c91f020,
+-	0x29066: 0x6c670a20, 0x29067: 0x6ce0b420,
+-	0x29068: 0x6c168a20, 0x2906a: 0x6c22ee20,
+-	0x2906d: 0x6cec5c20, 0x2906e: 0x6c240620, 0x2906f: 0x6c771a20,
+-	0x29071: 0x6c0bd820,
+-	0x29078: 0x6cf17620, 0x2907b: 0x6cb95620,
+-	0x2907f: 0x6c424220,
+-	// Block 0xa42, offset 0x29080
+-	0x29082: 0x6c5ca220,
+-	0x29084: 0x6c420620, 0x29086: 0x6c630020, 0x29087: 0x6c424620,
+-	0x29089: 0x6c580820,
+-	0x2908d: 0x6cd8dc20,
+-	0x29090: 0x6c3d9a20,
+-	0x29095: 0x6cb01620, 0x29097: 0x6c10d620,
+-	0x2909c: 0x6c07c620,
+-	0x290a2: 0x6cd2dc20,
+-	0x290a5: 0x6c58b020, 0x290a7: 0x6c4a9420,
+-	0x290aa: 0x6cab9620,
+-	0x290b3: 0x6cad7020,
+-	0x290b5: 0x6d1d2020, 0x290b6: 0x6ce6e620, 0x290b7: 0x6d001820,
+-	0x290b9: 0x6d3b3620, 0x290bb: 0x6d21d220,
+-	// Block 0xa43, offset 0x290c0
+-	0x290c1: 0x6c66fa20,
+-	0x290c4: 0x6cc25420, 0x290c5: 0x6ced6220, 0x290c6: 0x6c7d9220, 0x290c7: 0x6d3c7220,
+-	0x290c9: 0x6d245c20, 0x290ca: 0x6c4cda20, 0x290cb: 0x6cb2de20,
+-	0x290cc: 0x6d41a420, 0x290cd: 0x6d40fa20, 0x290cf: 0x6d39e820,
+-	0x290d0: 0x6caa9c20, 0x290d1: 0x6d39ea20,
+-	0x290d6: 0x6cb17620, 0x290d7: 0x6c9cac20,
+-	0x290dc: 0x6c0ad220, 0x290dd: 0x6cdb6e20,
+-	0x290e1: 0x6cb47a20, 0x290e2: 0x6c9cc420,
+-	0x290eb: 0x6d13a620,
+-	0x290ec: 0x6d22b420, 0x290ee: 0x6d249620,
+-	0x290f0: 0x6d3a9420, 0x290f3: 0x6c8dc220,
+-	0x290fa: 0x6caa3620,
+-	0x290fe: 0x6c8d3020,
+-	// Block 0xa44, offset 0x29100
+-	0x29100: 0x6c8a7020, 0x29102: 0x6ceace20,
+-	0x29104: 0x6c08f020, 0x29105: 0x6ca36a20, 0x29106: 0x6cc1bc20,
+-	0x29108: 0x6cb01820, 0x29109: 0x6c30f420, 0x2910a: 0x6ca86e20, 0x2910b: 0x6cea6820,
+-	0x2910d: 0x6c5f2620, 0x2910f: 0x6c8d5420,
+-	0x29113: 0x6c7aaa20,
+-	0x29114: 0x6cdb2c20,
+-	0x29118: 0x6ce81a20,
+-	0x2911e: 0x6ca38620, 0x2911f: 0x6d2b0c20,
+-	0x29122: 0x6ce7c420, 0x29123: 0x6c444a20,
+-	0x29124: 0x6c331820, 0x29127: 0x6c6b5020,
+-	0x29129: 0x6ce4c820, 0x2912a: 0x6ce5e220, 0x2912b: 0x6c1b6020,
+-	0x2912c: 0x6cc14e20, 0x2912e: 0x6ccc2820,
+-	0x29130: 0x6c0f9e20, 0x29131: 0x6c848420, 0x29133: 0x6c963a20,
+-	0x29135: 0x6c8a4420, 0x29136: 0x6cd62620, 0x29137: 0x6c2ad220,
+-	0x29139: 0x6c1ae620, 0x2913a: 0x6c9f0220,
+-	0x2913c: 0x6ce24e20, 0x2913d: 0x6c5d0c20, 0x2913f: 0x6ca7e220,
+-	// Block 0xa45, offset 0x29140
+-	0x29141: 0x6c75fe20, 0x29142: 0x6c56dc20,
+-	0x29144: 0x6c932e20, 0x29145: 0x6d138820, 0x29147: 0x6ca18620,
+-	0x29148: 0x6c17c820,
+-	0x2914c: 0x6cddd420, 0x2914e: 0x6c784220, 0x2914f: 0x6c409620,
+-	0x29151: 0x6c17aa20,
+-	0x29154: 0x6cddbc20, 0x29157: 0x6cbfe220,
+-	0x2915b: 0x6cdb6a20,
+-	0x2915d: 0x6d287620, 0x2915f: 0x6cddc220,
+-	0x29160: 0x6c7a7020, 0x29161: 0x6c0fc420, 0x29163: 0x6c90fe20,
+-	0x29164: 0x6ca1a220, 0x29166: 0x6c88e220, 0x29167: 0x6d08d220,
+-	0x29168: 0x6cddc420, 0x29169: 0x6c97aa20, 0x2916a: 0x6c0ad420,
+-	0x29172: 0x6ce44820,
+-	0x29174: 0x6c88a620, 0x29175: 0x6ce04a20, 0x29176: 0x6ccdf220,
+-	0x29178: 0x6cc22820, 0x29179: 0x6c320820, 0x2917a: 0x6c58d420, 0x2917b: 0x6ccb0e20,
+-	0x2917f: 0x6c7c2620,
+-	// Block 0xa46, offset 0x29180
+-	0x29183: 0x6ca8dc20,
+-	0x29185: 0x6ca8de20, 0x29186: 0x6c95a420, 0x29187: 0x6d425c20,
+-	0x29188: 0x6d174e20, 0x29189: 0x6cfcc020, 0x2918a: 0x6c179820, 0x2918b: 0x6ce61220,
+-	0x29192: 0x6cd79620,
+-	0x29194: 0x6c9d0020, 0x29197: 0x6c9c7220,
+-	0x2919b: 0x6ced5220,
+-	0x2919d: 0x6c07c820, 0x2919e: 0x6cbae020,
+-	0x291a0: 0x6ca0b020, 0x291a3: 0x6c8eca20,
+-	0x291a4: 0x6cf32e20, 0x291a6: 0x6c9a7020,
+-	0x291a8: 0x6ce7fe20, 0x291ab: 0x6ca25a20,
+-	0x291ad: 0x6c9a4420,
+-	0x291b2: 0x6d42b620,
+-	0x291b4: 0x6cea6420, 0x291b5: 0x6c778c20, 0x291b6: 0x6cea6a20,
+-	0x291ba: 0x6c184c20, 0x291bb: 0x6d336a20,
+-	0x291bd: 0x6c1cec20, 0x291be: 0x6ce47820,
+-	// Block 0xa47, offset 0x291c0
+-	0x291c0: 0x6d372020, 0x291c1: 0x6c153420, 0x291c2: 0x6c153e20,
+-	0x291c5: 0x6cbe5c20, 0x291c6: 0x6cea3420, 0x291c7: 0x6c5b7a20,
+-	0x291c8: 0x6cc41420, 0x291c9: 0x6d2dba20, 0x291ca: 0x6c652c20, 0x291cb: 0x6c154c20,
+-	0x291cd: 0x6c5a2620, 0x291cf: 0x6c5b0620,
+-	0x291d0: 0x6c1b6a20, 0x291d2: 0x6c5a2820, 0x291d3: 0x6c528220,
+-	0x291d4: 0x6d280820, 0x291d6: 0x6ce94020, 0x291d7: 0x6c0b1c20,
+-	0x291d9: 0x6c5a3620, 0x291da: 0x6d280a20,
+-	0x291df: 0x6ca1a420,
+-	0x291e0: 0x6c45c420, 0x291e2: 0x6c45c620,
+-	0x291e4: 0x6c4bb020, 0x291e6: 0x6c157820,
+-	0x291e8: 0x6cc42220, 0x291e9: 0x6cc8ee20, 0x291ea: 0x6c7c2820, 0x291eb: 0x6cb1c220,
+-	0x291ee: 0x6cc80220,
+-	0x291f2: 0x6ca9a220, 0x291f3: 0x6c56c820,
+-	0x291f4: 0x6c6cb820, 0x291f5: 0x6ca6d220, 0x291f6: 0x6c067420,
+-	0x291f8: 0x6ca65620, 0x291fa: 0x6c0a8420, 0x291fb: 0x6c55d820,
+-	0x291fc: 0x6c846a20, 0x291ff: 0x6d39dc20,
+-	// Block 0xa48, offset 0x29200
+-	0x29200: 0x6ca2fc20, 0x29202: 0x6cc36620, 0x29203: 0x6c3cd220,
+-	0x29204: 0x6c090020, 0x29205: 0x6c84a020, 0x29206: 0x6c0d0820, 0x29207: 0x6ca70e20,
+-	0x29208: 0x6c304820, 0x2920b: 0x6c88a020,
+-	0x2920c: 0x6ca6e420, 0x2920d: 0x6c88a820, 0x2920e: 0x6c968820, 0x2920f: 0x6d30ca20,
+-	0x29213: 0x6c639420,
+-	0x29214: 0x6d15a820, 0x29216: 0x6c904c20,
+-	0x29218: 0x6d181820,
+-	0x2921d: 0x6c278e20, 0x2921e: 0x6c327820,
+-	0x29223: 0x6d160c20,
+-	0x29225: 0x6cdf8220, 0x29226: 0x6c4f5420, 0x29227: 0x6cd61620,
+-	0x2922c: 0x6cece820, 0x2922e: 0x6cdb2e20, 0x2922f: 0x6d11d820,
+-	0x29230: 0x6c37e020, 0x29232: 0x6d326e20,
+-	0x2923a: 0x6c313e20, 0x2923b: 0x6c651220,
+-	0x2923f: 0x6cace620,
+-	// Block 0xa49, offset 0x29240
+-	0x29240: 0x6c5afe20, 0x29242: 0x6c145420, 0x29243: 0x6ccd1c20,
+-	0x29244: 0x6c916620, 0x29246: 0x6d244c20,
+-	0x29248: 0x6d0ef420, 0x29249: 0x6ced6420, 0x2924a: 0x6cbc6e20, 0x2924b: 0x6c953420,
+-	0x2924c: 0x6d245e20, 0x2924f: 0x6ce90620,
+-	0x29250: 0x6cf10820, 0x29252: 0x6cea8e20,
+-	0x29255: 0x6c5d1820, 0x29256: 0x6c079020, 0x29257: 0x6cbd0620,
+-	0x29259: 0x6c6c7420, 0x2925a: 0x6c7f3620,
+-	0x2925c: 0x6d356620, 0x2925d: 0x6d21ec20, 0x2925f: 0x6c22f020,
+-	0x29266: 0x6d139420, 0x29267: 0x6c2f0c20,
+-	0x29268: 0x6c145820, 0x29269: 0x6c2d9a20, 0x2926a: 0x6c97a220,
+-	0x2926c: 0x6c2afc20, 0x2926d: 0x6ceed020, 0x2926e: 0x6ca75020, 0x2926f: 0x6c835e20,
+-	0x29270: 0x6c0db820, 0x29271: 0x6cf39420, 0x29273: 0x6d320820,
+-	0x29276: 0x6cc77420, 0x29277: 0x6cec7c20,
+-	0x29278: 0x6c9dac20, 0x29279: 0x6c6c1020, 0x2927b: 0x6c544620,
+-	0x2927d: 0x6d2d5620, 0x2927e: 0x6cc80a20, 0x2927f: 0x6d3ec620,
+-	// Block 0xa4a, offset 0x29280
+-	0x29280: 0x6cac9420, 0x29282: 0x6ca1a620,
+-	0x29284: 0x6c9db220, 0x29286: 0x6cb55820, 0x29287: 0x6ca1a820,
+-	0x2928a: 0x6d342c20, 0x2928b: 0x6c04b020,
+-	0x2928d: 0x6c9f1820, 0x2928f: 0x6c933e20,
+-	0x29291: 0x6cb55e20, 0x29292: 0x6c1d0420,
+-	0x29294: 0x6c84d220, 0x29295: 0x6d196e20,
+-	0x29298: 0x6c2b0620, 0x29299: 0x6c25d220, 0x2929b: 0x6c339020,
+-	0x2929c: 0x6c96e820, 0x2929d: 0x6d0e2c20, 0x2929f: 0x6d2bba20,
+-	0x292a0: 0x6d0e2e20, 0x292a1: 0x6c339220, 0x292a2: 0x6cb42620,
+-	0x292a5: 0x6d273020,
+-	0x292a9: 0x6c5e5c20, 0x292aa: 0x6c975420, 0x292ab: 0x6c664620,
+-	0x292ac: 0x6ca9e820, 0x292ad: 0x6cbdc020, 0x292af: 0x6cbdc220,
+-	0x292b2: 0x6d13aa20,
+-	0x292b4: 0x6cdf5420,
+-	0x292b9: 0x6c655c20,
+-	0x292bc: 0x6c141620, 0x292be: 0x6c28f220, 0x292bf: 0x6ce2e220,
+-	// Block 0xa4b, offset 0x292c0
+-	0x292c0: 0x6c87ce20, 0x292c3: 0x6ca77c20,
+-	0x292c4: 0x6c158420, 0x292c5: 0x6d29f620,
+-	0x292ca: 0x6d24b820,
+-	0x292cc: 0x6d41e220, 0x292cd: 0x6c0b2020,
+-	0x292d0: 0x6c1ef820,
+-	0x292d8: 0x6cc48c20, 0x292da: 0x6cc49820, 0x292db: 0x6d0f7020,
+-	0x292dc: 0x6c0fe820,
+-	0x292e1: 0x6c247820,
+-	0x292ec: 0x6c9cae20, 0x292ee: 0x6c787420,
+-	0x292f0: 0x6c248420,
+-	0x292f7: 0x6cf7ce20,
+-	0x292f9: 0x6c968a20, 0x292fb: 0x6cd22020,
+-	0x292fc: 0x6c2d0420, 0x292ff: 0x6cd22220,
+-	// Block 0xa4c, offset 0x29300
+-	0x29302: 0x6c2f7620, 0x29303: 0x6c6ee420,
+-	0x29305: 0x6d25a820, 0x29306: 0x6c41b220,
+-	0x2930a: 0x6c5ca420, 0x2930b: 0x6c5f4e20,
+-	0x2930d: 0x6caed420, 0x2930f: 0x6c2ab220,
+-	0x29311: 0x6c085e20,
+-	0x29314: 0x6cacea20, 0x29315: 0x6cded420, 0x29317: 0x6d252220,
+-	0x29318: 0x6c42ee20, 0x29319: 0x6d252420,
+-	0x2931f: 0x6c639220,
+-	0x29323: 0x6c799020,
+-	0x29326: 0x6c309820,
+-	0x29329: 0x6cfbd820, 0x2932a: 0x6cb80620,
+-	0x2932c: 0x6cca7c20,
+-	0x29330: 0x6d1b9820, 0x29333: 0x6c901a20,
+-	0x29336: 0x6ce29a20, 0x29337: 0x6c902420,
+-	0x2933a: 0x6cc60820,
+-	0x2933d: 0x6d1b9020, 0x2933e: 0x6cb2d820, 0x2933f: 0x6cb41c20,
+-	// Block 0xa4d, offset 0x29340
+-	0x29340: 0x6d25be20, 0x29341: 0x6cc72a20, 0x29343: 0x6c399e20,
+-	0x29347: 0x6c4f5820,
+-	0x29348: 0x6c9c8820, 0x29349: 0x6c55ea20, 0x2934a: 0x6d3eb620,
+-	0x2934c: 0x6c8d7e20, 0x2934d: 0x6c6eea20, 0x2934e: 0x6cc72e20,
+-	0x29352: 0x6cb2e020, 0x29353: 0x6c49fc20,
+-	0x29354: 0x6c37ae20,
+-	0x2935d: 0x6c247e20, 0x2935e: 0x6c760020,
+-	0x29366: 0x6d052a20,
+-	0x29368: 0x6c377a20, 0x29369: 0x6ce44420, 0x2936b: 0x6d0ff820,
+-	0x2936d: 0x6c010a20, 0x2936e: 0x6c560820, 0x2936f: 0x6cf7ca20,
+-	0x29371: 0x6c560a20, 0x29373: 0x6cd85220,
+-	0x29374: 0x6c854e20, 0x29376: 0x6d197020, 0x29377: 0x6c47f620,
+-	0x29379: 0x6ce16a20,
+-	// Block 0xa4e, offset 0x29380
+-	0x29380: 0x6cc42420, 0x29381: 0x6d3fe620, 0x29382: 0x6c84de20,
+-	0x29384: 0x6c69ec20, 0x29387: 0x6c38fe20,
+-	0x29388: 0x6cb47e20, 0x29389: 0x6cd86620, 0x2938b: 0x6c6b9020,
+-	0x2938c: 0x6c91b220, 0x2938d: 0x6c87d020, 0x2938e: 0x6c158620,
+-	0x29390: 0x6d122220,
+-	0x29395: 0x6c5b0020,
+-	0x29399: 0x6c53e420, 0x2939a: 0x6c2cea20, 0x2939b: 0x6cc0be20,
+-	0x2939c: 0x6c74f820, 0x2939e: 0x6cb0d420,
+-	0x293a2: 0x6c7c5220,
+-	0x293a5: 0x6cf82820, 0x293a6: 0x6ce30c20,
+-	0x293a9: 0x6d076820,
+-	0x293af: 0x6c0b6220,
+-	0x293b2: 0x6c50b020, 0x293b3: 0x6c88ac20,
+-	0x293b6: 0x6cdb7620, 0x293b7: 0x6c8ab220,
+-	0x293bc: 0x6c6c7820,
+-	// Block 0xa4f, offset 0x293c0
+-	0x293c1: 0x6c87d220, 0x293c2: 0x6c158820,
+-	0x293c5: 0x6cb65a20, 0x293c6: 0x6cb66c20,
+-	0x293c9: 0x6d3ec020, 0x293cb: 0x6d3ec420,
+-	0x293cd: 0x6cb6b220, 0x293cf: 0x6cb6b820,
+-	0x293d0: 0x6d3ed020, 0x293d2: 0x6d2d1020, 0x293d3: 0x6d2d1420,
+-	0x293d4: 0x6cabec20, 0x293d6: 0x6c70d820,
+-	0x293d9: 0x6d0df420,
+-	0x293dc: 0x6c4f8c20, 0x293dd: 0x6ca37020,
+-	0x293e4: 0x6d0e0220, 0x293e6: 0x6d2e9c20, 0x293e7: 0x6cd2e020,
+-	0x293e8: 0x6d34ba20,
+-	0x293ed: 0x6d2c0a20,
+-	0x293f4: 0x6cc73420, 0x293f5: 0x6d2c0c20, 0x293f7: 0x6d195820,
+-	0x293f8: 0x6ca02820, 0x293f9: 0x6d0b4020, 0x293fb: 0x6d376620,
+-	0x293fd: 0x6c7e3020, 0x293fe: 0x6cfa1c20,
+-	// Block 0xa50, offset 0x29400
+-	0x29400: 0x6cb13820, 0x29401: 0x6cdeec20, 0x29403: 0x6d162a20,
+-	0x29406: 0x6d051620, 0x29407: 0x6d2d0c20,
+-	0x29409: 0x6c34c420, 0x2940a: 0x6c36e420,
+-	0x2940e: 0x6d1ab420,
+-	0x29410: 0x6c36ee20, 0x29411: 0x6cdb8e20, 0x29412: 0x6c016420, 0x29413: 0x6c260420,
+-	0x29415: 0x6ceb6420, 0x29417: 0x6ceb6620,
+-	0x29418: 0x6cfa1e20, 0x2941b: 0x6c21ea20,
+-	0x2941d: 0x6cdb9020,
+-	0x29425: 0x6c62f420, 0x29426: 0x6cba3620, 0x29427: 0x6d410420,
+-	0x29428: 0x6d2d0e20, 0x29429: 0x6d280e20, 0x2942a: 0x6d2ea620,
+-	0x2942c: 0x6d159c20,
+-	0x29432: 0x6d0b4220, 0x29433: 0x6d266020,
+-	0x29439: 0x6c51ac20, 0x2943a: 0x6cb88820,
+-	0x2943e: 0x6c13c220,
+-	// Block 0xa51, offset 0x29440
+-	0x29443: 0x6cab7020,
+-	0x29448: 0x6c560c20, 0x2944a: 0x6d0f2020,
+-	0x2944c: 0x6cbd0e20, 0x2944d: 0x6c0fd820, 0x2944e: 0x6cbafe20, 0x2944f: 0x6c6c1420,
+-	0x2945b: 0x6ca6e820,
+-	0x2945e: 0x6c162420, 0x2945f: 0x6cbdf620,
+-	0x29461: 0x6d2a3220,
+-	0x29464: 0x6d1b3220, 0x29465: 0x6d029c20, 0x29467: 0x6cb6ba20,
+-	0x29468: 0x6c673420, 0x2946b: 0x6d061420,
+-	0x2946d: 0x6d2bbc20, 0x2946f: 0x6c370420,
+-	0x29473: 0x6d40a020,
+-	0x29474: 0x6d163220,
+-	0x29479: 0x6d34c820, 0x2947a: 0x6c87d420,
+-	0x2947d: 0x6c87d620, 0x2947e: 0x6d1aba20,
+-	// Block 0xa52, offset 0x29480
+-	0x29481: 0x6c88b220, 0x29483: 0x6c158a20,
+-	0x29485: 0x6c754820, 0x29487: 0x6d28e620,
+-	0x2948e: 0x6d2d1620, 0x2948f: 0x6cb12220,
+-	0x29491: 0x6c8fd220, 0x29493: 0x6c8fd420,
+-	0x29498: 0x6c8fe220,
+-	0x2949d: 0x6c900020,
+-	0x294a0: 0x6c900c20, 0x294a2: 0x6c98b220,
+-	0x294a5: 0x6d30d020,
+-	0x294ac: 0x6c423a20, 0x294ad: 0x6c466a20, 0x294ae: 0x6cc49a20, 0x294af: 0x6c248020,
+-	0x294b0: 0x6c68aa20,
+-	0x294b7: 0x6c0fec20,
+-	0x294b9: 0x6d3b4c20, 0x294ba: 0x6cbfe820, 0x294bb: 0x6d0f7220,
+-	// Block 0xa53, offset 0x294c0
+-	0x294c0: 0x6d003020, 0x294c2: 0x6c5b4820, 0x294c3: 0x6cc16c20,
+-	0x294c8: 0x6c8e0220, 0x294ca: 0x6d1ab220,
+-	0x294ce: 0x6cb0e820,
+-	0x294d2: 0x6c88b020,
+-	// Block 0xa54, offset 0x29500
+-	0x2951d: 0x6c343c20,
+-	// Block 0xa55, offset 0x29540
+-	0x29548: 0x6c040c20,
+-	0x2954f: 0x6d2d9220,
+-	// Block 0xa56, offset 0x29580
+-	0x295ae: 0x6c943c20,
+-	// Block 0xa57, offset 0x295c0
+-	0x295ca: 0x6cd94a20,
+-	0x295d7: 0x6c73ac20,
+-	// Block 0xa58, offset 0x29600
+-	0x2961d: 0x6d1d8e20,
+-	// Block 0xa59, offset 0x29640
+-	0x29679: 0x6caa5c20,
+-	// Block 0xa5a, offset 0x29680
+-	0x29690: 0x6c230620,
+-	// Block 0xa5b, offset 0x296c0
+-	0x296e2: 0x6cfc9220,
+-	// Block 0xa5c, offset 0x29700
+-	0x29721: 0x6c85dc20,
+-	// Block 0xa5d, offset 0x29740
+-	0x29748: 0x6c3abc20,
+-	0x29759: 0x6cdb3a20,
+-	// Block 0xa5e, offset 0x29780
+-	0x2979c: 0x6c79dc20,
+-	// Block 0xa5f, offset 0x297c0
+-	0x297e8: 0x6c1a9e20,
+-	0x297f8: 0x6d09b220,
+-	// Block 0xa60, offset 0x29800
+-	0x29830: 0x6cb86a20,
+-	// Block 0xa61, offset 0x29840
+-	0x29850: 0x6c45fe20,
+-	// Block 0xa62, offset 0x29880
+-	0x29880: 0x6c5ef220,
+-	0x298a8: 0x6c953a20,
+-	// Block 0xa63, offset 0x298c0
+-	0x298d9: 0x6d165020,
+-	0x298df: 0x6d146820,
+-	0x298e2: 0x6ca49820,
+-	0x298f0: 0x6cf7de20, 0x298f2: 0x6cffaa20,
+-	// Block 0xa64, offset 0x29900
+-	0x2990b: 0x6c73b020,
+-	// Block 0xa65, offset 0x29940
+-	0x29944: 0x6d268220, 0x29946: 0x6c7b1020,
+-	0x29949: 0x6c8cc220,
+-	0x29950: 0x6ca5f020, 0x29953: 0x6c108a20,
+-	// Block 0xa66, offset 0x29980
+-	0x299b6: 0x6c4e3a20,
+-	// Block 0xa67, offset 0x299c0
+-	0x299e7: 0x6c3d5820,
+-	0x299e9: 0x6c230a20,
+-	// Block 0xa68, offset 0x29a00
+-	0x29a0e: 0x6c74d220,
+-	// Block 0xa69, offset 0x29a40
+-	0x29a60: 0x6d2eb220,
+-	0x29a66: 0x6c109020, 0x29a67: 0x6cda9a20,
+-	0x29a6e: 0x6c59cc20,
+-	0x29a74: 0x6d2da220,
+-	// Block 0xa6a, offset 0x29a80
+-	0x29a9d: 0x6c73ea20,
+-	0x29aa3: 0x6c4ea420,
+-	0x29aa4: 0x6c003a20,
+-	0x29aa8: 0x6ce33820,
+-	// Block 0xa6b, offset 0x29ac0
+-	0x29ac8: 0x6d06ca20, 0x29ac9: 0x6c534620,
+-	0x29ad2: 0x6c3e4620,
+-	0x29ad4: 0x6c5b4020, 0x29ad5: 0x6cd1e620,
+-	0x29ad9: 0x6cb41220,
+-	// Block 0xa6c, offset 0x29b00
+-	0x29b1b: 0x6d33bc20,
+-	0x29b1e: 0x6c740c20,
+-	0x29b22: 0x6ca90020,
+-	0x29b36: 0x6c1c5220,
+-	0x29b38: 0x6ce36020,
+-	// Block 0xa6d, offset 0x29b40
+-	0x29b40: 0x6c857420, 0x29b41: 0x6cecb420, 0x29b42: 0x6d144620, 0x29b43: 0x48024420,
+-	0x29b44: 0x6ca62220, 0x29b45: 0x6cf43220, 0x29b46: 0x6ce9f420, 0x29b47: 0x6c0e1020,
+-	0x29b48: 0x6d28b220, 0x29b49: 0x6c071c20, 0x29b4a: 0x6ccbb820, 0x29b4b: 0x6cfe3c20,
+-	0x29b4c: 0x6c75ee20, 0x29b4d: 0x6cddc620, 0x29b4e: 0x6c9dfe20, 0x29b4f: 0x6ce92020,
+-	0x29b50: 0x6c5a2a20, 0x29b51: 0x6c720620, 0x29b52: 0x480a3820, 0x29b53: 0x44697220,
+-	0x29b54: 0x6ca57e20, 0x29b55: 0x6d292620, 0x29b56: 0x480a9620, 0x29b57: 0x6cc6ec20,
+-	0x29b58: 0x6d24d020, 0x29b59: 0x6c0da020, 0x29b5a: 0x6c2fd820, 0x29b5b: 0x6c7bdc20,
+-	0x29b5c: 0x6cbee220, 0x29b5d: 0x6cb9ec20, 0x29b5e: 0x6cc5a020, 0x29b5f: 0x6cafae20,
+-	0x29b60: 0x6c787a20, 0x29b61: 0x6c95a620, 0x29b62: 0x6c438c20, 0x29b63: 0x6c15bc20,
+-	0x29b64: 0x6c5fc020, 0x29b65: 0x6d1e1820, 0x29b66: 0x6c9e0c20, 0x29b67: 0x6cbd7c20,
+-	0x29b68: 0x6cce9420, 0x29b69: 0x6c059e20, 0x29b6a: 0x6c22f420, 0x29b6b: 0x6c06c620,
+-	0x29b6c: 0x6c5b8420, 0x29b6d: 0x6c068e20, 0x29b6e: 0x6c0efe20, 0x29b6f: 0x6c5fd220,
+-	0x29b70: 0x6c5fec20, 0x29b71: 0x6cbe3a20, 0x29b72: 0x6cbe3a20, 0x29b73: 0x6cbe3a20,
+-	0x29b74: 0x48145820, 0x29b75: 0x6c5a8620, 0x29b76: 0x6c5fb820, 0x29b77: 0x6cda0e20,
+-	0x29b78: 0x4816c620, 0x29b79: 0x6c697a20, 0x29b7a: 0x6c1bd620, 0x29b7b: 0x6d108620,
+-	0x29b7c: 0x6cfc7820, 0x29b7d: 0x6cf56a20, 0x29b7e: 0x6c19b620, 0x29b7f: 0x6d385a20,
+-	// Block 0xa6e, offset 0x29b80
+-	0x29b80: 0x6c35e420, 0x29b81: 0x6c9ec220, 0x29b82: 0x6ce0e820, 0x29b83: 0x6cb6ec20,
+-	0x29b84: 0x6cfb5820, 0x29b85: 0x6ccd8a20, 0x29b86: 0x6ccd8a20, 0x29b87: 0x6c5bbc20,
+-	0x29b88: 0x6c1aae20, 0x29b89: 0x6d2bd620, 0x29b8a: 0x6d110420, 0x29b8b: 0x6ce8d420,
+-	0x29b8c: 0x6ce0a020, 0x29b8d: 0x6ce8d620, 0x29b8e: 0x6c4fd020, 0x29b8f: 0x6cae3420,
+-	0x29b90: 0x6cbc9020, 0x29b91: 0x6d3c2c20, 0x29b92: 0x6c19c620, 0x29b93: 0x6d344c20,
+-	0x29b94: 0x6ce92220, 0x29b95: 0x6d03ca20, 0x29b96: 0x6c223620, 0x29b97: 0x6c064c20,
+-	0x29b98: 0x6c2c7c20, 0x29b99: 0x4829c820, 0x29b9a: 0x6c972420, 0x29b9b: 0x6c554020,
+-	0x29b9c: 0x6c3c9c20, 0x29b9d: 0x6c341620, 0x29b9e: 0x6c9c0420, 0x29b9f: 0x6cceea20,
+-	0x29ba0: 0x6c1bda20, 0x29ba1: 0x482dd420, 0x29ba2: 0x6c5ea220, 0x29ba3: 0x6d20ec20,
+-	0x29ba4: 0x6ce9f820, 0x29ba5: 0x6cb1e820, 0x29ba6: 0x6c3fe420, 0x29ba7: 0x6ccae220,
+-	0x29ba8: 0x6c139820, 0x29ba9: 0x6cc52820, 0x29baa: 0x6c804820, 0x29bab: 0x6c804820,
+-	0x29bac: 0x48339020, 0x29bad: 0x6d24da20, 0x29bae: 0x6d365020, 0x29baf: 0x6ca91020,
+-	0x29bb0: 0x6c061c20, 0x29bb1: 0x6c81ee20, 0x29bb2: 0x6cd45020, 0x29bb3: 0x6c674e20,
+-	0x29bb4: 0x6c28f820, 0x29bb5: 0x6d1edc20, 0x29bb6: 0x6d11f020, 0x29bb7: 0x6ce8a020,
+-	0x29bb8: 0x6c17fa20, 0x29bb9: 0x6d053020, 0x29bba: 0x6cb8a420, 0x29bbb: 0x6cf3b020,
+-	0x29bbc: 0x6d0d7a20, 0x29bbd: 0x483bcc20, 0x29bbe: 0x6c2ccc20, 0x29bbf: 0x6d3e3620,
+-	// Block 0xa6f, offset 0x29bc0
+-	0x29bc0: 0x6c15c620, 0x29bc1: 0x6d09d820, 0x29bc2: 0x6c175e20, 0x29bc3: 0x6d15b220,
+-	0x29bc4: 0x6d0a8c20, 0x29bc5: 0x6cd71420, 0x29bc6: 0x6c997a20, 0x29bc7: 0x6c3b8620,
+-	0x29bc8: 0x6c980020, 0x29bc9: 0x48430620, 0x29bca: 0x6d16e820, 0x29bcb: 0x6c0e0e20,
+-	0x29bcc: 0x6c097620, 0x29bcd: 0x6cd5c220, 0x29bce: 0x6c80b420, 0x29bcf: 0x6cd79620,
+-	0x29bd0: 0x6c45cc20, 0x29bd1: 0x48466220, 0x29bd2: 0x48466220, 0x29bd3: 0x6d20e820,
+-	0x29bd4: 0x6ce1b020, 0x29bd5: 0x6ce1b020, 0x29bd6: 0x6d16b220, 0x29bd7: 0x48657020,
+-	0x29bd8: 0x48c3b420, 0x29bd9: 0x6d03c020, 0x29bda: 0x6c2dc420, 0x29bdb: 0x6ccd7820,
+-	0x29bdc: 0x6c300020, 0x29bdd: 0x6cc58620, 0x29bde: 0x6d357420, 0x29bdf: 0x6c7bb620,
+-	0x29be0: 0x6d24d420, 0x29be1: 0x6c5a4620, 0x29be2: 0x6c73f820, 0x29be3: 0x6c5b4c20,
+-	0x29be4: 0x6c2ff820, 0x29be5: 0x6c339820, 0x29be6: 0x6c224e20, 0x29be7: 0x6c599420,
+-	0x29be8: 0x6cd0ac20, 0x29be9: 0x6c599420, 0x29bea: 0x6c90a220, 0x29beb: 0x6d2b8a20,
+-	0x29bec: 0x6cfd0820, 0x29bed: 0x6c3be420, 0x29bee: 0x6c11da20, 0x29bef: 0x6c9b4a20,
+-	0x29bf0: 0x6c1a5420, 0x29bf1: 0x6c804a20, 0x29bf2: 0x6c19b220, 0x29bf3: 0x6c63b620,
+-	0x29bf4: 0x6c7a1820, 0x29bf5: 0x6c063220, 0x29bf6: 0x6c036820, 0x29bf7: 0x6c72e420,
+-	0x29bf8: 0x48561820, 0x29bf9: 0x6cecf820, 0x29bfa: 0x6cb1ea20, 0x29bfb: 0x6ccf2c20,
+-	0x29bfc: 0x6ccae020, 0x29bfd: 0x6c600020, 0x29bfe: 0x4857e220, 0x29bff: 0x6c6d1420,
+-	// Block 0xa70, offset 0x29c00
+-	0x29c00: 0x6d0ca820, 0x29c01: 0x6d0d6620, 0x29c02: 0x6c30b620, 0x29c03: 0x6ca07220,
+-	0x29c04: 0x6c67f620, 0x29c05: 0x6c5ae420, 0x29c06: 0x6c691420, 0x29c07: 0x4474d820,
+-	0x29c08: 0x6c9fa820, 0x29c09: 0x6c6e8420, 0x29c0a: 0x48601420, 0x29c0b: 0x6c61ec20,
+-	0x29c0c: 0x6cd4b820, 0x29c0d: 0x6c6cea20, 0x29c0e: 0x6cf01620, 0x29c0f: 0x6cd55a20,
+-	0x29c10: 0x6cf15420, 0x29c11: 0x6c16e420, 0x29c12: 0x6c994e20, 0x29c13: 0x6c9e1820,
+-	0x29c14: 0x6d41b020, 0x29c15: 0x6c6d2820, 0x29c16: 0x6ca31420, 0x29c17: 0x6ce05420,
+-	0x29c18: 0x6c80f820, 0x29c19: 0x6cee5220, 0x29c1a: 0x6d3f9820, 0x29c1b: 0x6cb6d620,
+-	0x29c1c: 0x6c0bea20, 0x29c1d: 0x48678620, 0x29c1e: 0x6c572820, 0x29c1f: 0x6c48dc20,
+-	0x29c20: 0x6c5e8e20, 0x29c21: 0x6cca6a20, 0x29c22: 0x6c99ec20, 0x29c23: 0x4868da20,
+-	0x29c24: 0x6c022a20, 0x29c25: 0x6c078420, 0x29c26: 0x6d3e3a20, 0x29c27: 0x6c513820,
+-	0x29c28: 0x6d2be020, 0x29c29: 0x6d112020, 0x29c2a: 0x6c415020, 0x29c2b: 0x6ccefe20,
+-	0x29c2c: 0x486d4620, 0x29c2d: 0x6d370620, 0x29c2e: 0x6d159820, 0x29c2f: 0x6c22aa20,
+-	0x29c30: 0x48714e20, 0x29c31: 0x6d05d420, 0x29c32: 0x6c7d9c20, 0x29c33: 0x6cdc4620,
+-	0x29c34: 0x6cf15820, 0x29c35: 0x6ccbda20, 0x29c36: 0x6cbc4020, 0x29c37: 0x48751a20,
+-	0x29c38: 0x483a1620, 0x29c39: 0x4875f420, 0x29c3a: 0x6c391c20, 0x29c3b: 0x48797820,
+-	0x29c3c: 0x6d0c6820, 0x29c3d: 0x6c077e20, 0x29c3e: 0x6cb8a820, 0x29c3f: 0x6cf3b620,
+-	// Block 0xa71, offset 0x29c40
+-	0x29c40: 0x6cac1e20, 0x29c41: 0x6c4d3a20, 0x29c42: 0x6c8e4a20, 0x29c43: 0x6c502e20,
+-	0x29c44: 0x6c6cee20, 0x29c45: 0x6ca80820, 0x29c46: 0x6c07ac20, 0x29c47: 0x6cb28620,
+-	0x29c48: 0x6c42a220, 0x29c49: 0x6d0c0820, 0x29c4a: 0x6c903620, 0x29c4b: 0x6d3e4020,
+-	0x29c4c: 0x6c2cce20, 0x29c4d: 0x6ccc0a20, 0x29c4e: 0x6d0bf820, 0x29c4f: 0x6c177620,
+-	0x29c50: 0x487ebc20, 0x29c51: 0x487f1c20, 0x29c52: 0x6c3b8c20, 0x29c53: 0x6d270a20,
+-	0x29c54: 0x6c6eb420, 0x29c55: 0x6d1cba20, 0x29c56: 0x6cd63020, 0x29c57: 0x6cb9e020,
+-	0x29c58: 0x6d28f220, 0x29c59: 0x6d3bbe20, 0x29c5a: 0x6ce08e20, 0x29c5b: 0x480a4a20,
+-	0x29c5c: 0x6c32cc20, 0x29c5d: 0x4884c620, 0x29c5e: 0x6c233e20, 0x29c5f: 0x48875620,
+-	0x29c60: 0x6c24c420, 0x29c61: 0x6c74c820, 0x29c62: 0x6d2c3a20, 0x29c63: 0x488c1020,
+-	0x29c64: 0x6cf61a20, 0x29c65: 0x6c074020, 0x29c66: 0x6d0e3c20, 0x29c67: 0x48902820,
+-	0x29c68: 0x6cde2020, 0x29c69: 0x6cedda20, 0x29c6a: 0x6c45d620, 0x29c6b: 0x6d268820,
+-	0x29c6c: 0x6cb29020, 0x29c6d: 0x6cb29020, 0x29c6e: 0x6c277a20, 0x29c6f: 0x6d215e20,
+-	0x29c70: 0x6d325020, 0x29c71: 0x6cdd8a20, 0x29c72: 0x6cbf7620, 0x29c73: 0x6d03d220,
+-	0x29c74: 0x6cc89c20, 0x29c75: 0x48986c20, 0x29c76: 0x6d28f620, 0x29c77: 0x48992420,
+-	0x29c78: 0x6d176620, 0x29c79: 0x6cb2b420, 0x29c7a: 0x6d226e20, 0x29c7b: 0x489f4220,
+-	0x29c7c: 0x489f7020, 0x29c7d: 0x48a08820, 0x29c7e: 0x6d0c7620, 0x29c7f: 0x6c627820,
+-	// Block 0xa72, offset 0x29c80
+-	0x29c80: 0x6d344020, 0x29c81: 0x48a1e620, 0x29c82: 0x48a1e420, 0x29c83: 0x48a23220,
+-	0x29c84: 0x48a26620, 0x29c85: 0x6d313c20, 0x29c86: 0x6d313e20, 0x29c87: 0x6d313e20,
+-	0x29c88: 0x6c736420, 0x29c89: 0x6c6ad220, 0x29c8a: 0x6c188220, 0x29c8b: 0x6d130220,
+-	0x29c8c: 0x6cd23420, 0x29c8d: 0x48a83a20, 0x29c8e: 0x6d03e220, 0x29c8f: 0x6c926e20,
+-	0x29c90: 0x6ce4ba20, 0x29c91: 0x6c5b7020, 0x29c92: 0x6c6fd820, 0x29c93: 0x6d411420,
+-	0x29c94: 0x6c1baa20, 0x29c95: 0x6c8f3a20, 0x29c96: 0x6c3e9c20, 0x29c97: 0x6cd52420,
+-	0x29c98: 0x6c657420, 0x29c99: 0x6c47c420, 0x29c9a: 0x6c624a20, 0x29c9b: 0x6cf1f020,
+-	0x29c9c: 0x48b2f820, 0x29c9d: 0x6ce4c020, 0x29c9e: 0x6ce4c020, 0x29c9f: 0x6cb26020,
+-	0x29ca0: 0x6cb2be20, 0x29ca1: 0x48b75620, 0x29ca2: 0x6d3bde20, 0x29ca3: 0x6d3a2820,
+-	0x29ca4: 0x6cf00020, 0x29ca5: 0x6c178020, 0x29ca6: 0x6c076020, 0x29ca7: 0x6cf8f420,
+-	0x29ca8: 0x6c680820, 0x29ca9: 0x6cca3020, 0x29caa: 0x6c61b020, 0x29cab: 0x48bf0c20,
+-	0x29cac: 0x6c07ee20, 0x29cad: 0x6d10b020, 0x29cae: 0x6d3e6a20, 0x29caf: 0x6d400620,
+-	0x29cb0: 0x6ccac220, 0x29cb1: 0x6c965020, 0x29cb2: 0x6d03dc20, 0x29cb3: 0x48c48e20,
+-	0x29cb4: 0x6c9a0420, 0x29cb5: 0x48c5b220, 0x29cb6: 0x6c177e20, 0x29cb7: 0x48c67c20,
+-	0x29cb8: 0x6d104a20, 0x29cb9: 0x6c027e20, 0x29cba: 0x6d30d220, 0x29cbb: 0x48c9b420,
+-	0x29cbc: 0x48ca4620, 0x29cbd: 0x6cb25820, 0x29cbe: 0x48cb5020, 0x29cbf: 0x6c236620,
+-	// Block 0xa73, offset 0x29cc0
+-	0x29cc0: 0x6c78f420, 0x29cc1: 0x6cc5d220, 0x29cc2: 0x6d22da20, 0x29cc3: 0x6c252c20,
+-	0x29cc4: 0x6c231a20, 0x29cc5: 0x6caff420, 0x29cc6: 0x6d1d4020, 0x29cc7: 0x48cf4e20,
+-	0x29cc8: 0x48cf6a20, 0x29cc9: 0x6d085420, 0x29cca: 0x48673820, 0x29ccb: 0x6d20e820,
+-	0x29ccc: 0x6cf89220, 0x29ccd: 0x6c225220, 0x29cce: 0x6c07f020, 0x29ccf: 0x6cb6ce20,
+-	0x29cd0: 0x6d22c820, 0x29cd1: 0x6d338420, 0x29cd2: 0x6c813e20, 0x29cd3: 0x6c570620,
+-	0x29cd4: 0x6c398620, 0x29cd5: 0x6d0b1420, 0x29cd6: 0x6c7a7620, 0x29cd7: 0x48d67820,
+-	0x29cd8: 0x6cc91420, 0x29cd9: 0x6c148e20, 0x29cda: 0x6cc65e20, 0x29cdb: 0x6c6aa820,
+-	0x29cdc: 0x6cf3bc20, 0x29cdd: 0x6c988a20, 0x29cde: 0x6c2bf220, 0x29cdf: 0x6d311420,
+-	0x29ce0: 0x6cb28e20, 0x29ce1: 0x6c711c20, 0x29ce2: 0x6c757020, 0x29ce3: 0x6c114420,
+-	0x29ce4: 0x48d86c20, 0x29ce5: 0x6cdd8420, 0x29ce6: 0x48d9aa20, 0x29ce7: 0x448a5620,
+-	0x29ce8: 0x6cb2ae20, 0x29ce9: 0x6c6ca620, 0x29cea: 0x6c25ea20, 0x29ceb: 0x48e79420,
+-	0x29cec: 0x6cc8a220, 0x29ced: 0x48de5820, 0x29cee: 0x6c19a420, 0x29cef: 0x6c936e20,
+-	0x29cf0: 0x6c175420, 0x29cf1: 0x6c93c420, 0x29cf2: 0x6c7cba20, 0x29cf3: 0x6caaa220,
+-	0x29cf4: 0x6c91c420, 0x29cf5: 0x6c7c4820, 0x29cf6: 0x6cf90620, 0x29cf7: 0x6c1aa420,
+-	0x29cf8: 0x6cb8ca20, 0x29cf9: 0x6d24fc20, 0x29cfa: 0x6cb2b020, 0x29cfb: 0x6d276220,
+-	0x29cfc: 0x6c2ed620, 0x29cfd: 0x6d39be20, 0x29cfe: 0x6c22de20, 0x29cff: 0x6c5f4420,
+-	// Block 0xa74, offset 0x29d00
+-	0x29d00: 0x6c4b2220, 0x29d01: 0x6cfe0220, 0x29d02: 0x6c22ec20, 0x29d03: 0x6d3cd820,
+-	0x29d04: 0x6d13be20, 0x29d05: 0x6c668020, 0x29d06: 0x6c8e6020, 0x29d07: 0x6cd72420,
+-	0x29d08: 0x6c929c20, 0x29d09: 0x6d0daa20, 0x29d0a: 0x6c996a20, 0x29d0b: 0x48f15c20,
+-	0x29d0c: 0x48f2cc20, 0x29d0d: 0x6ca8e820, 0x29d0e: 0x6d25ea20, 0x29d0f: 0x6c1a2220,
+-	0x29d10: 0x6d23f620, 0x29d11: 0x6c0bdc20, 0x29d12: 0x6cd2b020, 0x29d13: 0x6c649220,
+-	0x29d14: 0x6c498620, 0x29d15: 0x6c09b020, 0x29d16: 0x6c424420, 0x29d17: 0x6cb6ea20,
+-	0x29d18: 0x6cd61020, 0x29d19: 0x6d2fdc20, 0x29d1a: 0x6c038220, 0x29d1b: 0x6c658c20,
+-	0x29d1c: 0x6cb11c20, 0x29d1d: 0x4811bc20, 0x29d1e: 0x6cc5e420, 0x29d1f: 0x6cd50820,
+-	0x29d20: 0x490ba420, 0x29d21: 0x490bda20, 0x29d22: 0x6cb6c420, 0x29d23: 0x6cb27e20,
+-	0x29d24: 0x6d3e4a20, 0x29d25: 0x490e5c20, 0x29d26: 0x6c176420, 0x29d27: 0x6c0f1c20,
+-	0x29d28: 0x6d07ca20, 0x29d29: 0x6c575620, 0x29d2a: 0x6c0dee20, 0x29d2b: 0x6cbb5020,
+-	0x29d2c: 0x6d295820, 0x29d2d: 0x4917f420, 0x29d2e: 0x6c763420, 0x29d2f: 0x6cae7c20,
+-	0x29d30: 0x6ccca420, 0x29d31: 0x491aee20, 0x29d32: 0x6cef3620, 0x29d33: 0x6cb8e820,
+-	0x29d34: 0x6cf69820, 0x29d35: 0x6d280620, 0x29d36: 0x6cace820, 0x29d37: 0x6cb26420,
+-	0x29d38: 0x6c930020, 0x29d39: 0x6c160820, 0x29d3a: 0x6c0ab220, 0x29d3b: 0x49281420,
+-	0x29d3c: 0x6c7d6c20, 0x29d3d: 0x6d0eb020, 0x29d3e: 0x6c35b420, 0x29d3f: 0x6c35b420,
+-	// Block 0xa75, offset 0x29d40
+-	0x29d40: 0x6cb26620, 0x29d41: 0x6d097020, 0x29d42: 0x6c5eb020, 0x29d43: 0x6c04d420,
+-	0x29d44: 0x6c36b220, 0x29d45: 0x6d276c20, 0x29d46: 0x6c060a20, 0x29d47: 0x6cea1420,
+-	0x29d48: 0x6c423020, 0x29d49: 0x6cbf6820, 0x29d4a: 0x6d320420, 0x29d4b: 0x6c62d820,
+-	0x29d4c: 0x6c64ec20, 0x29d4d: 0x6c702e20, 0x29d4e: 0x6c60f620, 0x29d4f: 0x6cb02c20,
+-	0x29d50: 0x6d21ea20, 0x29d51: 0x6c968620, 0x29d52: 0x6ccc2e20, 0x29d53: 0x49441c20,
+-	0x29d54: 0x49452220, 0x29d55: 0x6c966820, 0x29d56: 0x6cba8620, 0x29d57: 0x6d353420,
+-	0x29d58: 0x6c9e0a20, 0x29d59: 0x6d342a20, 0x29d5a: 0x6c9d7420, 0x29d5b: 0x6c3ba420,
+-	0x29d5c: 0x6c08a220, 0x29d5d: 0x6cb13820,
+-}
+-
+-// mainLookup: 13824 entries, 27648 bytes
+-// Block 0 is the null block.
+-var mainLookup = [13824]uint16{
+-	// Block 0x0, offset 0x0
+-	// Block 0x1, offset 0x40
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x0e0: 0x1f, 0x0e1: 0x20, 0x0e2: 0x21, 0x0e3: 0x22, 0x0e4: 0x23, 0x0e5: 0x24, 0x0e6: 0x25, 0x0e7: 0x26,
+-	0x0e8: 0x27, 0x0e9: 0x28, 0x0ea: 0x29, 0x0eb: 0x2a, 0x0ec: 0x2b, 0x0ed: 0x2c, 0x0ee: 0x2d, 0x0ef: 0x2e,
+-	0x0f0: 0x2f, 0x0f1: 0x30, 0x0f2: 0x31, 0x0f3: 0x32, 0x0f4: 0x33, 0x0f5: 0x34, 0x0f6: 0x35, 0x0f7: 0x36,
+-	0x0f8: 0x37, 0x0f9: 0x38, 0x0fa: 0x39, 0x0fb: 0x3a, 0x0fc: 0x3b, 0x0fd: 0x3c, 0x0fe: 0x3d, 0x0ff: 0x3e,
+-	// Block 0x4, offset 0x100
+-	0x100: 0x3f, 0x101: 0x40, 0x102: 0x41, 0x103: 0x42, 0x104: 0x43, 0x105: 0x44, 0x106: 0x45, 0x107: 0x46,
+-	0x108: 0x47, 0x109: 0x48, 0x10a: 0x49, 0x10b: 0x4a, 0x10c: 0x4b, 0x10d: 0x4c, 0x10e: 0x4d, 0x10f: 0x4e,
+-	0x110: 0x4f, 0x111: 0x50, 0x112: 0x51, 0x113: 0x52, 0x114: 0x53, 0x115: 0x54, 0x116: 0x55, 0x117: 0x56,
+-	0x118: 0x57, 0x119: 0x58, 0x11a: 0x59, 0x11b: 0x5a, 0x11c: 0x5b, 0x11d: 0x5c, 0x11e: 0x5d, 0x11f: 0x5e,
+-	0x120: 0x5f, 0x121: 0x60, 0x122: 0x61, 0x123: 0x62, 0x124: 0x63, 0x125: 0x64, 0x126: 0x65, 0x127: 0x66,
+-	0x128: 0x67, 0x129: 0x68, 0x12a: 0x69, 0x12c: 0x6a, 0x12d: 0x6b, 0x12e: 0x6c, 0x12f: 0x6d,
+-	0x130: 0x6e, 0x131: 0x6f, 0x133: 0x70, 0x134: 0x71, 0x135: 0x72, 0x136: 0x73, 0x137: 0x74,
+-	0x138: 0x75, 0x139: 0x76, 0x13a: 0x77, 0x13b: 0x78, 0x13c: 0x79, 0x13d: 0x7a, 0x13e: 0x7b, 0x13f: 0x7c,
+-	// Block 0x5, offset 0x140
+-	0x140: 0x7d, 0x141: 0x7e, 0x142: 0x7f, 0x143: 0x80, 0x144: 0x81, 0x145: 0x82, 0x146: 0x83, 0x147: 0x84,
+-	0x148: 0x85, 0x149: 0x86, 0x14a: 0x87, 0x14b: 0x88, 0x14c: 0x89, 0x14d: 0x8a, 0x14e: 0x8b, 0x14f: 0x8c,
+-	0x150: 0x8d, 0x151: 0x8e, 0x152: 0x8f, 0x153: 0x90, 0x154: 0x91, 0x155: 0x92, 0x156: 0x93, 0x157: 0x94,
+-	0x158: 0x95, 0x159: 0x96, 0x15a: 0x97, 0x15b: 0x98, 0x15c: 0x99, 0x15d: 0x9a, 0x15e: 0x9b, 0x15f: 0x9c,
+-	0x160: 0x9d, 0x161: 0x9e, 0x162: 0x9f, 0x163: 0xa0, 0x164: 0xa1, 0x165: 0xa2, 0x166: 0xa3, 0x167: 0xa4,
+-	0x168: 0xa5, 0x169: 0xa6, 0x16a: 0xa7, 0x16b: 0xa8, 0x16c: 0xa9, 0x16d: 0xaa,
+-	0x170: 0xab, 0x171: 0xac, 0x172: 0xad, 0x173: 0xae, 0x174: 0xaf, 0x175: 0xb0, 0x176: 0xb1, 0x177: 0xb2,
+-	0x178: 0xb3, 0x17a: 0xb4, 0x17b: 0xb5, 0x17c: 0xb6, 0x17d: 0xb7, 0x17e: 0xb8, 0x17f: 0xb9,
+-	// Block 0x6, offset 0x180
+-	0x180: 0xba, 0x181: 0xbb, 0x182: 0xbc, 0x183: 0xbd, 0x184: 0xbe, 0x185: 0xbf, 0x186: 0xc0, 0x187: 0xc1,
+-	0x188: 0xc2, 0x189: 0xc3, 0x18a: 0xc4, 0x18b: 0xc5, 0x18c: 0xc6, 0x18d: 0xc7, 0x18e: 0xc8, 0x18f: 0xc9,
+-	// Block 0x7, offset 0x1c0
+-	0x1f7: 0xca,
+-	// Block 0x8, offset 0x200
+-	0x200: 0xcb, 0x201: 0xcc, 0x202: 0xcd, 0x203: 0xce, 0x204: 0xcf, 0x205: 0xd0, 0x206: 0xd1, 0x207: 0xd2,
+-	0x208: 0xd3, 0x209: 0xd4, 0x20a: 0xd5, 0x20b: 0xd6, 0x20c: 0xd7, 0x20d: 0xd8, 0x20e: 0xd9, 0x20f: 0xda,
+-	0x210: 0xdb, 0x211: 0xdc, 0x212: 0xdd, 0x213: 0xde, 0x214: 0xdf, 0x215: 0xe0, 0x216: 0xe1, 0x217: 0xe2,
+-	0x218: 0xe3, 0x219: 0xe4, 0x21a: 0xe5, 0x21b: 0xe6, 0x21c: 0xe7, 0x21d: 0xe8, 0x21e: 0xe9, 0x21f: 0xea,
+-	0x220: 0xeb, 0x221: 0xec, 0x222: 0xed, 0x223: 0xee, 0x224: 0xef, 0x225: 0xf0, 0x226: 0xf1, 0x227: 0xf2,
+-	0x228: 0xf3, 0x229: 0xf4, 0x22a: 0xf5, 0x22b: 0xf6, 0x22c: 0xf7, 0x22f: 0xf8,
+-	// Block 0x9, offset 0x240
+-	0x25e: 0xf9, 0x25f: 0xfa,
+-	// Block 0xa, offset 0x280
+-	0x2a4: 0xfb, 0x2a5: 0xfc, 0x2a6: 0xfd, 0x2a7: 0xfe,
+-	0x2a8: 0xff, 0x2a9: 0x100, 0x2aa: 0x101, 0x2ab: 0x102, 0x2ac: 0x103, 0x2ad: 0x104, 0x2ae: 0x105, 0x2af: 0x106,
+-	0x2b0: 0x107, 0x2b1: 0x108, 0x2b2: 0x109, 0x2b3: 0x10a, 0x2b4: 0x10b, 0x2b5: 0x10c, 0x2b6: 0x10d, 0x2b7: 0x10e,
+-	0x2b8: 0x10f, 0x2b9: 0x110, 0x2ba: 0x111, 0x2bb: 0x112, 0x2bc: 0x113, 0x2bd: 0x114, 0x2be: 0x115, 0x2bf: 0x116,
+-	// Block 0xb, offset 0x2c0
+-	0x2c0: 0x117, 0x2c1: 0x118, 0x2c2: 0x119, 0x2c3: 0x11a, 0x2c4: 0x11b, 0x2c5: 0x11c, 0x2c6: 0x11d, 0x2c7: 0x11e,
+-	0x2ca: 0x11f, 0x2cb: 0x120, 0x2cc: 0x121, 0x2cd: 0x122, 0x2ce: 0x123, 0x2cf: 0x124,
+-	0x2d0: 0x125, 0x2d1: 0x126, 0x2d2: 0x127,
+-	0x2e0: 0x128, 0x2e1: 0x129, 0x2e4: 0x12a, 0x2e6: 0x12b,
+-	0x2e8: 0x12c, 0x2e9: 0x12d, 0x2ec: 0x12e, 0x2ed: 0x12f,
+-	0x2f0: 0x130, 0x2f1: 0x131,
+-	0x2f9: 0x132,
+-	// Block 0xc, offset 0x300
+-	0x300: 0x133, 0x301: 0x134, 0x302: 0x135, 0x303: 0x136, 0x304: 0x137, 0x305: 0x138, 0x306: 0x139, 0x307: 0x13a,
+-	0x31a: 0x13b, 0x31b: 0x13c,
+-	// Block 0xd, offset 0x340
+-	0x340: 0x13d, 0x341: 0x13e, 0x342: 0x13f, 0x343: 0x140, 0x344: 0x141, 0x345: 0x142, 0x346: 0x143, 0x347: 0x144,
+-	0x348: 0x145, 0x349: 0x146, 0x34a: 0x147, 0x34b: 0x148, 0x34c: 0x149, 0x34d: 0x14a,
+-	0x350: 0x14b, 0x351: 0x14c,
+-	// Block 0xe, offset 0x380
+-	0x380: 0x14d, 0x381: 0x14e, 0x382: 0x14f, 0x383: 0x150, 0x384: 0x151, 0x385: 0x152, 0x386: 0x153, 0x387: 0x154,
+-	0x388: 0x155, 0x389: 0x156, 0x38a: 0x157, 0x38b: 0x158, 0x38c: 0x159, 0x38d: 0x15a, 0x38e: 0x15b, 0x38f: 0x15c,
+-	0x390: 0x15d,
+-	// Block 0xf, offset 0x3c0
+-	0x3e0: 0x15e, 0x3e1: 0x15f, 0x3e2: 0x160, 0x3e3: 0x161, 0x3e4: 0x162, 0x3e5: 0x163, 0x3e6: 0x164, 0x3e7: 0x165,
+-	0x3e8: 0x166,
+-	0x3fc: 0x167, 0x3fd: 0x168, 0x3fe: 0x169,
+-	// Block 0x10, offset 0x400
+-	0x400: 0x16a,
+-	// Block 0x11, offset 0x440
+-	0x440: 0x16b, 0x441: 0x16c, 0x442: 0x16d, 0x443: 0x16e, 0x444: 0x16f, 0x445: 0x170, 0x446: 0x171, 0x447: 0x172,
+-	0x448: 0x173, 0x449: 0x174, 0x44c: 0x175, 0x44d: 0x176,
+-	0x450: 0x177, 0x451: 0x178, 0x452: 0x179, 0x453: 0x17a, 0x454: 0x17b, 0x455: 0x17c, 0x456: 0x17d, 0x457: 0x17e,
+-	0x458: 0x17f, 0x459: 0x180, 0x45a: 0x181, 0x45b: 0x182, 0x45c: 0x183, 0x45d: 0x184, 0x45e: 0x185, 0x45f: 0x186,
+-	// Block 0x12, offset 0x480
+-	0x4b8: 0x187, 0x4b9: 0x188, 0x4ba: 0x189, 0x4bb: 0x18a,
+-	// Block 0x13, offset 0x4c0
+-	0x4c0: 0x18b, 0x4c1: 0x18c, 0x4c2: 0x18d, 0x4c3: 0x18e, 0x4c4: 0x18f, 0x4c5: 0x190, 0x4c6: 0x191, 0x4c7: 0x192,
+-	0x4c8: 0x193, 0x4c9: 0x194, 0x4cc: 0x195, 0x4cd: 0x196, 0x4ce: 0x197, 0x4cf: 0x198,
+-	0x4d0: 0x199, 0x4d1: 0x19a, 0x4d2: 0x19b, 0x4d3: 0x19c, 0x4d4: 0x19d, 0x4d5: 0x19e, 0x4d7: 0x19f,
+-	0x4d8: 0x1a0, 0x4d9: 0x1a1, 0x4da: 0x1a2, 0x4db: 0x1a3, 0x4dc: 0x1a4, 0x4dd: 0x1a5,
+-	// Block 0x14, offset 0x500
+-	0x520: 0x1a6, 0x521: 0x1a7, 0x522: 0x1a8, 0x523: 0x1a9, 0x524: 0x1aa, 0x525: 0x1ab, 0x526: 0x1ac, 0x527: 0x1ad,
+-	0x528: 0x1ae,
+-	// Block 0x15, offset 0x540
+-	0x550: 0x09, 0x551: 0x0a, 0x552: 0x0b, 0x553: 0x0c, 0x556: 0x0d,
+-	0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11,
+-	0x56f: 0x12,
+-	// Block 0x16, offset 0x580
+-	0x580: 0x1af, 0x581: 0x1b0, 0x584: 0x1b0, 0x585: 0x1b0, 0x586: 0x1b0, 0x587: 0x1b1,
+-	// Block 0x17, offset 0x5c0
+-	0x5e0: 0x14,
+-	// Block 0x18, offset 0x600
+-	0x602: 0x01, 0x603: 0x02, 0x604: 0x03, 0x605: 0x04, 0x606: 0x05, 0x607: 0x06,
+-	0x608: 0x07, 0x609: 0x08, 0x60a: 0x09, 0x60b: 0x0a, 0x60c: 0x0b, 0x60d: 0x0c, 0x60e: 0x0d, 0x60f: 0x0e,
+-	0x610: 0x0f, 0x611: 0x10, 0x612: 0x11, 0x613: 0x12, 0x614: 0x13, 0x615: 0x14, 0x616: 0x15, 0x617: 0x16,
+-	0x618: 0x17, 0x619: 0x18, 0x61a: 0x19, 0x61b: 0x1a, 0x61c: 0x1b, 0x61d: 0x1c, 0x61e: 0x1d, 0x61f: 0x1e,
+-	0x620: 0x01, 0x621: 0x02, 0x622: 0x03, 0x623: 0x04, 0x624: 0x05,
+-	0x62a: 0x06, 0x62d: 0x07, 0x62f: 0x08,
+-	0x630: 0x13, 0x633: 0x15,
+-	// Block 0x19, offset 0x640
+-	0x642: 0x01, 0x643: 0x02, 0x644: 0x03, 0x645: 0x1b2, 0x646: 0x05, 0x647: 0x06,
+-	0x648: 0x07, 0x649: 0x08, 0x64a: 0x09, 0x64b: 0x0a, 0x64c: 0x0b, 0x64d: 0x0c, 0x64e: 0x0d, 0x64f: 0x0e,
+-	0x650: 0x0f, 0x651: 0x10, 0x652: 0x11, 0x653: 0x12, 0x654: 0x13, 0x655: 0x14, 0x656: 0x15, 0x657: 0x16,
+-	0x658: 0x17, 0x659: 0x18, 0x65a: 0x19, 0x65b: 0x1a, 0x65c: 0x1b, 0x65d: 0x1c, 0x65e: 0x1d, 0x65f: 0x1e,
+-	0x660: 0x01, 0x661: 0x02, 0x662: 0x03, 0x663: 0x04, 0x664: 0x05,
+-	0x66a: 0x06, 0x66d: 0x07, 0x66f: 0x08,
+-	0x670: 0x13, 0x673: 0x15,
+-	// Block 0x1a, offset 0x680
+-	0x6a4: 0xfb, 0x6a5: 0xfc, 0x6a6: 0xfd, 0x6a7: 0xfe,
+-	0x6a8: 0xff, 0x6a9: 0x100, 0x6aa: 0x101, 0x6ab: 0x102, 0x6ac: 0x103, 0x6ad: 0x104, 0x6ae: 0x105, 0x6af: 0x1b5,
+-	0x6b0: 0x1b6, 0x6b1: 0x1b7, 0x6b2: 0x1b8, 0x6b3: 0x1b9, 0x6b4: 0x1ba, 0x6b5: 0x10c, 0x6b6: 0x10d, 0x6b7: 0x10e,
+-	0x6b8: 0x10f, 0x6b9: 0x110, 0x6ba: 0x1bb, 0x6bb: 0x1bc, 0x6bc: 0x113, 0x6bd: 0x114, 0x6be: 0x115, 0x6bf: 0x116,
+-	// Block 0x1b, offset 0x6c0
+-	0x6c2: 0x01, 0x6c3: 0x02, 0x6c4: 0x03, 0x6c5: 0x04, 0x6c6: 0x05, 0x6c7: 0x06,
+-	0x6c8: 0x07, 0x6c9: 0x08, 0x6ca: 0x09, 0x6cb: 0x0a, 0x6cc: 0x0b, 0x6cd: 0x0c, 0x6ce: 0x0d, 0x6cf: 0x0e,
+-	0x6d0: 0x0f, 0x6d1: 0x10, 0x6d2: 0x11, 0x6d3: 0x12, 0x6d4: 0x13, 0x6d5: 0x14, 0x6d6: 0x15, 0x6d7: 0x16,
+-	0x6d8: 0x1b3, 0x6d9: 0x1b4, 0x6da: 0x19, 0x6db: 0x1a, 0x6dc: 0x1b, 0x6dd: 0x1c, 0x6de: 0x1d, 0x6df: 0x1e,
+-	0x6e0: 0x01, 0x6e1: 0x02, 0x6e2: 0x03, 0x6e3: 0x04, 0x6e4: 0x05,
+-	0x6ea: 0x06, 0x6ed: 0x07, 0x6ef: 0x18,
+-	0x6f0: 0x13, 0x6f3: 0x15,
+-	// Block 0x1c, offset 0x700
+-	0x720: 0x1f, 0x721: 0x20, 0x722: 0x21, 0x723: 0x22, 0x724: 0x23, 0x725: 0x24, 0x726: 0x1bd, 0x727: 0x26,
+-	0x728: 0x27, 0x729: 0x28, 0x72a: 0x29, 0x72b: 0x2a, 0x72c: 0x2b, 0x72d: 0x2c, 0x72e: 0x2d, 0x72f: 0x2e,
+-	0x730: 0x2f, 0x731: 0x30, 0x732: 0x31, 0x733: 0x32, 0x734: 0x33, 0x735: 0x34, 0x736: 0x35, 0x737: 0x36,
+-	0x738: 0x37, 0x739: 0x38, 0x73a: 0x39, 0x73b: 0x3a, 0x73c: 0x3b, 0x73d: 0x3c, 0x73e: 0x3d, 0x73f: 0x3e,
+-	// Block 0x1d, offset 0x740
+-	0x742: 0x01, 0x743: 0x02, 0x744: 0x03, 0x745: 0x04, 0x746: 0x05, 0x747: 0x06,
+-	0x748: 0x07, 0x749: 0x08, 0x74a: 0x09, 0x74b: 0x0a, 0x74c: 0x0b, 0x74d: 0x0c, 0x74e: 0x0d, 0x74f: 0x0e,
+-	0x750: 0x0f, 0x751: 0x10, 0x752: 0x11, 0x753: 0x12, 0x754: 0x13, 0x755: 0x14, 0x756: 0x15, 0x757: 0x16,
+-	0x758: 0x17, 0x759: 0x18, 0x75a: 0x19, 0x75b: 0x1a, 0x75c: 0x1b, 0x75d: 0x1c, 0x75e: 0x1d, 0x75f: 0x1e,
+-	0x760: 0x1a, 0x761: 0x02, 0x762: 0x03, 0x763: 0x04, 0x764: 0x05,
+-	0x76a: 0x06, 0x76d: 0x07, 0x76f: 0x08,
+-	0x770: 0x13, 0x773: 0x15,
+-	// Block 0x1e, offset 0x780
+-	0x780: 0x3f, 0x781: 0x40, 0x782: 0x41, 0x783: 0x42, 0x784: 0x43, 0x785: 0x44, 0x786: 0x45, 0x787: 0x46,
+-	0x788: 0x47, 0x789: 0x48, 0x78a: 0x49, 0x78b: 0x4a, 0x78c: 0x4b, 0x78d: 0x4c, 0x78e: 0x4d, 0x78f: 0x4e,
+-	0x790: 0x4f, 0x791: 0x50, 0x792: 0x51, 0x793: 0x52, 0x794: 0x53, 0x795: 0x54, 0x796: 0x55, 0x797: 0x56,
+-	0x798: 0x57, 0x799: 0x58, 0x79a: 0x59, 0x79b: 0x5a, 0x79c: 0x5b, 0x79d: 0x5c, 0x79e: 0x5d, 0x79f: 0x5e,
+-	0x7a0: 0x5f, 0x7a1: 0x60, 0x7a2: 0x61, 0x7a3: 0x62, 0x7a4: 0x63, 0x7a5: 0x64, 0x7a6: 0x65, 0x7a7: 0x66,
+-	0x7a8: 0x67, 0x7a9: 0x68, 0x7aa: 0x69, 0x7ac: 0x6a, 0x7ad: 0x6b, 0x7ae: 0x6c, 0x7af: 0x6d,
+-	0x7b0: 0x6e, 0x7b1: 0x6f, 0x7b3: 0x70, 0x7b4: 0x71, 0x7b5: 0x72, 0x7b6: 0x73, 0x7b7: 0x74,
+-	0x7b8: 0x1c7, 0x7b9: 0x1c8, 0x7ba: 0x1c9, 0x7bb: 0x1ca, 0x7bc: 0x79, 0x7bd: 0x7a, 0x7be: 0x7b, 0x7bf: 0x7c,
+-	// Block 0x1f, offset 0x7c0
+-	0x7c0: 0x7d, 0x7c1: 0x7e, 0x7c2: 0x7f, 0x7c3: 0x80, 0x7c4: 0x81, 0x7c5: 0x1cb, 0x7c6: 0x83, 0x7c7: 0x84,
+-	0x7c8: 0x85, 0x7c9: 0x86, 0x7ca: 0x87, 0x7cb: 0x88, 0x7cc: 0x89, 0x7cd: 0x8a, 0x7ce: 0x8b, 0x7cf: 0x8c,
+-	0x7d0: 0x8d, 0x7d1: 0x8e, 0x7d2: 0x1cc, 0x7d3: 0x90, 0x7d4: 0x91, 0x7d5: 0x92, 0x7d6: 0x93, 0x7d7: 0x94,
+-	0x7d8: 0x95, 0x7d9: 0x96, 0x7da: 0x97, 0x7db: 0x98, 0x7dc: 0x99, 0x7dd: 0x9a, 0x7de: 0x9b, 0x7df: 0x9c,
+-	0x7e0: 0x9d, 0x7e1: 0x9e, 0x7e2: 0x9f, 0x7e3: 0xa0, 0x7e4: 0xa1, 0x7e5: 0xa2, 0x7e6: 0xa3, 0x7e7: 0xa4,
+-	0x7e8: 0xa5, 0x7e9: 0xa6, 0x7ea: 0xa7, 0x7eb: 0xa8, 0x7ec: 0xa9, 0x7ed: 0xaa,
+-	0x7f0: 0xab, 0x7f1: 0xac, 0x7f2: 0xad, 0x7f3: 0xae, 0x7f4: 0xaf, 0x7f5: 0xb0, 0x7f6: 0xb1, 0x7f7: 0xb2,
+-	0x7f8: 0xb3, 0x7fa: 0xb4, 0x7fb: 0xb5, 0x7fc: 0xb6, 0x7fd: 0xb7, 0x7fe: 0xb8, 0x7ff: 0xb9,
+-	// Block 0x20, offset 0x800
+-	0x800: 0xba, 0x801: 0xbb, 0x802: 0xbc, 0x803: 0xbd, 0x804: 0xbe, 0x805: 0xbf, 0x806: 0xc0, 0x807: 0xc1,
+-	0x808: 0xc2, 0x809: 0xc3, 0x80a: 0xc4, 0x80b: 0xc5, 0x80c: 0xc6, 0x80d: 0x1cd, 0x80e: 0xc8, 0x80f: 0x1ce,
+-	// Block 0x21, offset 0x840
+-	0x840: 0x18b, 0x841: 0x18c, 0x842: 0x18d, 0x843: 0x18e, 0x844: 0x1cf, 0x845: 0x190, 0x846: 0x191, 0x847: 0x192,
+-	0x848: 0x193, 0x849: 0x194, 0x84c: 0x195, 0x84d: 0x196, 0x84e: 0x197, 0x84f: 0x198,
+-	0x850: 0x199, 0x851: 0x19a, 0x852: 0x19b, 0x853: 0x19c, 0x854: 0x19d, 0x855: 0x19e, 0x857: 0x19f,
+-	0x858: 0x1a0, 0x859: 0x1a1, 0x85a: 0x1a2, 0x85b: 0x1a3, 0x85c: 0x1a4, 0x85d: 0x1a5,
+-	// Block 0x22, offset 0x880
+-	0x890: 0x09, 0x891: 0x0a, 0x892: 0x0b, 0x893: 0x0c, 0x896: 0x0d,
+-	0x89b: 0x0e, 0x89d: 0x0f, 0x89e: 0x10, 0x89f: 0x1f,
+-	0x8af: 0x12,
+-	// Block 0x23, offset 0x8c0
+-	0x8c2: 0x01, 0x8c3: 0x1c0, 0x8c4: 0x1c1, 0x8c5: 0x1c2, 0x8c6: 0x1c3, 0x8c7: 0x1c4,
+-	0x8c8: 0x1c5, 0x8c9: 0x1c6, 0x8ca: 0x09, 0x8cb: 0x0a, 0x8cc: 0x0b, 0x8cd: 0x0c, 0x8ce: 0x0d, 0x8cf: 0x0e,
+-	0x8d0: 0x0f, 0x8d1: 0x10, 0x8d2: 0x11, 0x8d3: 0x12, 0x8d4: 0x13, 0x8d5: 0x14, 0x8d6: 0x15, 0x8d7: 0x16,
+-	0x8d8: 0x17, 0x8d9: 0x18, 0x8da: 0x19, 0x8db: 0x1a, 0x8dc: 0x1b, 0x8dd: 0x1c, 0x8de: 0x1d, 0x8df: 0x1e,
+-	0x8e0: 0x01, 0x8e1: 0x1c, 0x8e2: 0x1d, 0x8e3: 0x1e, 0x8e4: 0x05,
+-	0x8ea: 0x06, 0x8ed: 0x07, 0x8ef: 0x08,
+-	0x8f0: 0x20, 0x8f3: 0x15,
+-	// Block 0x24, offset 0x900
+-	0x902: 0x01, 0x903: 0x02, 0x904: 0x03, 0x905: 0x04, 0x906: 0x05, 0x907: 0x06,
+-	0x908: 0x07, 0x909: 0x08, 0x90a: 0x09, 0x90b: 0x0a, 0x90c: 0x0b, 0x90d: 0x0c, 0x90e: 0x0d, 0x90f: 0x0e,
+-	0x910: 0x1d0, 0x911: 0x1d1, 0x912: 0x11, 0x913: 0x12, 0x914: 0x13, 0x915: 0x14, 0x916: 0x15, 0x917: 0x16,
+-	0x918: 0x17, 0x919: 0x18, 0x91a: 0x19, 0x91b: 0x1a, 0x91c: 0x1b, 0x91d: 0x1c, 0x91e: 0x1d, 0x91f: 0x1e,
+-	0x920: 0x01, 0x921: 0x02, 0x922: 0x03, 0x923: 0x04, 0x924: 0x05,
+-	0x92a: 0x06, 0x92d: 0x07, 0x92f: 0x08,
+-	0x930: 0x13, 0x933: 0x15,
+-	// Block 0x25, offset 0x940
+-	0x960: 0x1f, 0x961: 0x20, 0x962: 0x21, 0x963: 0x22, 0x964: 0x23, 0x965: 0x24, 0x966: 0x1d2, 0x967: 0x26,
+-	0x968: 0x27, 0x969: 0x28, 0x96a: 0x29, 0x96b: 0x2a, 0x96c: 0x2b, 0x96d: 0x2c, 0x96e: 0x2d, 0x96f: 0x2e,
+-	0x970: 0x2f, 0x971: 0x30, 0x972: 0x31, 0x973: 0x32, 0x974: 0x33, 0x975: 0x34, 0x976: 0x35, 0x977: 0x36,
+-	0x978: 0x37, 0x979: 0x38, 0x97a: 0x39, 0x97b: 0x3a, 0x97c: 0x3b, 0x97d: 0x3c, 0x97e: 0x3d, 0x97f: 0x3e,
+-	// Block 0x26, offset 0x980
+-	0x982: 0x01, 0x983: 0x02, 0x984: 0x03, 0x985: 0x04, 0x986: 0x05, 0x987: 0x06,
+-	0x988: 0x07, 0x989: 0x08, 0x98a: 0x09, 0x98b: 0x0a, 0x98c: 0x0b, 0x98d: 0x0c, 0x98e: 0x0d, 0x98f: 0x0e,
+-	0x990: 0x0f, 0x991: 0x10, 0x992: 0x11, 0x993: 0x12, 0x994: 0x13, 0x995: 0x14, 0x996: 0x15, 0x997: 0x16,
+-	0x998: 0x17, 0x999: 0x18, 0x99a: 0x19, 0x99b: 0x1a, 0x99c: 0x1b, 0x99d: 0x1c, 0x99e: 0x1d, 0x99f: 0x1e,
+-	0x9a0: 0x23, 0x9a1: 0x02, 0x9a2: 0x03, 0x9a3: 0x04, 0x9a4: 0x05,
+-	0x9aa: 0x06, 0x9ad: 0x07, 0x9af: 0x08,
+-	0x9b0: 0x13, 0x9b3: 0x15,
+-	// Block 0x27, offset 0x9c0
+-	0x9c2: 0x01, 0x9c3: 0x02, 0x9c4: 0x1d5, 0x9c5: 0x1d6, 0x9c6: 0x05, 0x9c7: 0x06,
+-	0x9c8: 0x07, 0x9c9: 0x08, 0x9ca: 0x09, 0x9cb: 0x0a, 0x9cc: 0x0b, 0x9cd: 0x0c, 0x9ce: 0x0d, 0x9cf: 0x0e,
+-	0x9d0: 0x0f, 0x9d1: 0x10, 0x9d2: 0x11, 0x9d3: 0x12, 0x9d4: 0x13, 0x9d5: 0x14, 0x9d6: 0x15, 0x9d7: 0x16,
+-	0x9d8: 0x17, 0x9d9: 0x18, 0x9da: 0x19, 0x9db: 0x1a, 0x9dc: 0x1b, 0x9dd: 0x1c, 0x9de: 0x1d, 0x9df: 0x1e,
+-	0x9e0: 0x01, 0x9e1: 0x02, 0x9e2: 0x03, 0x9e3: 0x04, 0x9e4: 0x05,
+-	0x9ea: 0x06, 0x9ed: 0x07, 0x9ef: 0x08,
+-	0x9f0: 0x13, 0x9f3: 0x15,
+-	// Block 0x28, offset 0xa00
+-	0xa00: 0x3f, 0xa01: 0x40, 0xa02: 0x41, 0xa03: 0x42, 0xa04: 0x43, 0xa05: 0x44, 0xa06: 0x45, 0xa07: 0x46,
+-	0xa08: 0x47, 0xa09: 0x48, 0xa0a: 0x49, 0xa0b: 0x4a, 0xa0c: 0x4b, 0xa0d: 0x4c, 0xa0e: 0x4d, 0xa0f: 0x4e,
+-	0xa10: 0x4f, 0xa11: 0x50, 0xa12: 0x51, 0xa13: 0x52, 0xa14: 0x53, 0xa15: 0x54, 0xa16: 0x55, 0xa17: 0x56,
+-	0xa18: 0x57, 0xa19: 0x58, 0xa1a: 0x59, 0xa1b: 0x5a, 0xa1c: 0x5b, 0xa1d: 0x5c, 0xa1e: 0x5d, 0xa1f: 0x5e,
+-	0xa20: 0x5f, 0xa21: 0x60, 0xa22: 0x61, 0xa23: 0x62, 0xa24: 0x63, 0xa25: 0x64, 0xa26: 0x65, 0xa27: 0x66,
+-	0xa28: 0x67, 0xa29: 0x68, 0xa2a: 0x69, 0xa2c: 0x6a, 0xa2d: 0x6b, 0xa2e: 0x6c, 0xa2f: 0x6d,
+-	0xa30: 0x6e, 0xa31: 0x6f, 0xa33: 0x70, 0xa34: 0x71, 0xa35: 0x72, 0xa36: 0x73, 0xa37: 0x74,
+-	0xa38: 0x75, 0xa39: 0x1db, 0xa3a: 0x77, 0xa3b: 0x78, 0xa3c: 0x79, 0xa3d: 0x7a, 0xa3e: 0x7b, 0xa3f: 0x7c,
+-	// Block 0x29, offset 0xa40
+-	0xa42: 0x01, 0xa43: 0x02, 0xa44: 0x1d9, 0xa45: 0x1da, 0xa46: 0x05, 0xa47: 0x06,
+-	0xa48: 0x07, 0xa49: 0x08, 0xa4a: 0x09, 0xa4b: 0x0a, 0xa4c: 0x0b, 0xa4d: 0x0c, 0xa4e: 0x0d, 0xa4f: 0x0e,
+-	0xa50: 0x0f, 0xa51: 0x10, 0xa52: 0x11, 0xa53: 0x12, 0xa54: 0x13, 0xa55: 0x14, 0xa56: 0x15, 0xa57: 0x16,
+-	0xa58: 0x17, 0xa59: 0x18, 0xa5a: 0x19, 0xa5b: 0x1a, 0xa5c: 0x1b, 0xa5d: 0x1c, 0xa5e: 0x1d, 0xa5f: 0x1e,
+-	0xa60: 0x01, 0xa61: 0x26, 0xa62: 0x03, 0xa63: 0x04, 0xa64: 0x05,
+-	0xa6a: 0x06, 0xa6d: 0x07, 0xa6f: 0x08,
+-	0xa70: 0x13, 0xa73: 0x15,
+-	// Block 0x2a, offset 0xa80
+-	0xa80: 0x3f, 0xa81: 0x40, 0xa82: 0x41, 0xa83: 0x42, 0xa84: 0x43, 0xa85: 0x44, 0xa86: 0x45, 0xa87: 0x46,
+-	0xa88: 0x47, 0xa89: 0x48, 0xa8a: 0x49, 0xa8b: 0x4a, 0xa8c: 0x4b, 0xa8d: 0x4c, 0xa8e: 0x4d, 0xa8f: 0x4e,
+-	0xa90: 0x4f, 0xa91: 0x50, 0xa92: 0x51, 0xa93: 0x52, 0xa94: 0x53, 0xa95: 0x54, 0xa96: 0x55, 0xa97: 0x56,
+-	0xa98: 0x57, 0xa99: 0x58, 0xa9a: 0x59, 0xa9b: 0x5a, 0xa9c: 0x5b, 0xa9d: 0x5c, 0xa9e: 0x5d, 0xa9f: 0x5e,
+-	0xaa0: 0x5f, 0xaa1: 0x60, 0xaa2: 0x61, 0xaa3: 0x62, 0xaa4: 0x63, 0xaa5: 0x64, 0xaa6: 0x65, 0xaa7: 0x66,
+-	0xaa8: 0x67, 0xaa9: 0x68, 0xaaa: 0x69, 0xaac: 0x6a, 0xaad: 0x6b, 0xaae: 0x6c, 0xaaf: 0x6d,
+-	0xab0: 0x6e, 0xab1: 0x6f, 0xab3: 0x70, 0xab4: 0x71, 0xab5: 0x72, 0xab6: 0x1e5, 0xab7: 0x74,
+-	0xab8: 0x75, 0xab9: 0x1e6, 0xaba: 0x77, 0xabb: 0x78, 0xabc: 0x79, 0xabd: 0x7a, 0xabe: 0x7b, 0xabf: 0x7c,
+-	// Block 0x2b, offset 0xac0
+-	0xac0: 0x7d, 0xac1: 0x7e, 0xac2: 0x7f, 0xac3: 0x80, 0xac4: 0x1e7, 0xac5: 0x82, 0xac6: 0x83, 0xac7: 0x84,
+-	0xac8: 0x85, 0xac9: 0x86, 0xaca: 0x87, 0xacb: 0x88, 0xacc: 0x89, 0xacd: 0x8a, 0xace: 0x8b, 0xacf: 0x8c,
+-	0xad0: 0x8d, 0xad1: 0x8e, 0xad2: 0x8f, 0xad3: 0x90, 0xad4: 0x91, 0xad5: 0x92, 0xad6: 0x93, 0xad7: 0x94,
+-	0xad8: 0x95, 0xad9: 0x96, 0xada: 0x97, 0xadb: 0x98, 0xadc: 0x99, 0xadd: 0x9a, 0xade: 0x9b, 0xadf: 0x9c,
+-	0xae0: 0x9d, 0xae1: 0x9e, 0xae2: 0x9f, 0xae3: 0xa0, 0xae4: 0xa1, 0xae5: 0xa2, 0xae6: 0xa3, 0xae7: 0xa4,
+-	0xae8: 0xa5, 0xae9: 0xa6, 0xaea: 0xa7, 0xaeb: 0xa8, 0xaec: 0xa9, 0xaed: 0xaa,
+-	0xaf0: 0xab, 0xaf1: 0xac, 0xaf2: 0xad, 0xaf3: 0xae, 0xaf4: 0xaf, 0xaf5: 0xb0, 0xaf6: 0xb1, 0xaf7: 0xb2,
+-	0xaf8: 0xb3, 0xafa: 0xb4, 0xafb: 0xb5, 0xafc: 0xb6, 0xafd: 0xb7, 0xafe: 0xb8, 0xaff: 0xb9,
+-	// Block 0x2c, offset 0xb00
+-	0xb02: 0x01, 0xb03: 0x1e0, 0xb04: 0x1e1, 0xb05: 0x1e2, 0xb06: 0x05, 0xb07: 0x1e3,
+-	0xb08: 0x1e4, 0xb09: 0x08, 0xb0a: 0x09, 0xb0b: 0x0a, 0xb0c: 0x0b, 0xb0d: 0x0c, 0xb0e: 0x0d, 0xb0f: 0x0e,
+-	0xb10: 0x0f, 0xb11: 0x10, 0xb12: 0x11, 0xb13: 0x12, 0xb14: 0x13, 0xb15: 0x14, 0xb16: 0x15, 0xb17: 0x16,
+-	0xb18: 0x17, 0xb19: 0x18, 0xb1a: 0x19, 0xb1b: 0x1a, 0xb1c: 0x1b, 0xb1d: 0x1c, 0xb1e: 0x1d, 0xb1f: 0x1e,
+-	0xb20: 0x01, 0xb21: 0x28, 0xb22: 0x29, 0xb23: 0x04, 0xb24: 0x05,
+-	0xb2a: 0x06, 0xb2d: 0x07, 0xb2f: 0x08,
+-	0xb30: 0x13, 0xb33: 0x15,
+-	// Block 0x2d, offset 0xb40
+-	0xb60: 0x1f, 0xb61: 0x20, 0xb62: 0x21, 0xb63: 0x22, 0xb64: 0x23, 0xb65: 0x24, 0xb66: 0x25, 0xb67: 0x26,
+-	0xb68: 0x27, 0xb69: 0x28, 0xb6a: 0x29, 0xb6b: 0x2a, 0xb6c: 0x2b, 0xb6d: 0x2c, 0xb6e: 0x2d, 0xb6f: 0x2e,
+-	0xb70: 0x2f, 0xb71: 0x30, 0xb72: 0x31, 0xb73: 0x32, 0xb74: 0x33, 0xb75: 0x34, 0xb76: 0x35, 0xb77: 0x36,
+-	0xb78: 0x37, 0xb79: 0x38, 0xb7a: 0x39, 0xb7b: 0x3a, 0xb7c: 0x1e8, 0xb7d: 0x1e9, 0xb7e: 0x1ea, 0xb7f: 0x3e,
+-	// Block 0x2e, offset 0xb80
+-	0xb82: 0x01, 0xb83: 0x02, 0xb84: 0x03, 0xb85: 0x04, 0xb86: 0x05, 0xb87: 0x06,
+-	0xb88: 0x07, 0xb89: 0x08, 0xb8a: 0x09, 0xb8b: 0x0a, 0xb8c: 0x0b, 0xb8d: 0x0c, 0xb8e: 0x0d, 0xb8f: 0x0e,
+-	0xb90: 0x0f, 0xb91: 0x10, 0xb92: 0x11, 0xb93: 0x12, 0xb94: 0x13, 0xb95: 0x14, 0xb96: 0x15, 0xb97: 0x16,
+-	0xb98: 0x17, 0xb99: 0x18, 0xb9a: 0x19, 0xb9b: 0x1a, 0xb9c: 0x1b, 0xb9d: 0x1c, 0xb9e: 0x1d, 0xb9f: 0x1e,
+-	0xba0: 0x2b, 0xba1: 0x02, 0xba2: 0x03, 0xba3: 0x04, 0xba4: 0x05,
+-	0xbaa: 0x06, 0xbad: 0x07, 0xbaf: 0x08,
+-	0xbb0: 0x13, 0xbb3: 0x15,
+-	// Block 0x2f, offset 0xbc0
+-	0xbc0: 0x3f, 0xbc1: 0x40, 0xbc2: 0x41, 0xbc3: 0x42, 0xbc4: 0x43, 0xbc5: 0x44, 0xbc6: 0x45, 0xbc7: 0x46,
+-	0xbc8: 0x47, 0xbc9: 0x48, 0xbca: 0x49, 0xbcb: 0x4a, 0xbcc: 0x4b, 0xbcd: 0x4c, 0xbce: 0x4d, 0xbcf: 0x4e,
+-	0xbd0: 0x4f, 0xbd1: 0x50, 0xbd2: 0x51, 0xbd3: 0x52, 0xbd4: 0x53, 0xbd5: 0x54, 0xbd6: 0x55, 0xbd7: 0x56,
+-	0xbd8: 0x57, 0xbd9: 0x58, 0xbda: 0x59, 0xbdb: 0x5a, 0xbdc: 0x5b, 0xbdd: 0x5c, 0xbde: 0x5d, 0xbdf: 0x5e,
+-	0xbe0: 0x5f, 0xbe1: 0x60, 0xbe2: 0x61, 0xbe3: 0x62, 0xbe4: 0x63, 0xbe5: 0x64, 0xbe6: 0x65, 0xbe7: 0x66,
+-	0xbe8: 0x67, 0xbe9: 0x68, 0xbea: 0x69, 0xbec: 0x6a, 0xbed: 0x6b, 0xbee: 0x6c, 0xbef: 0x6d,
+-	0xbf0: 0x6e, 0xbf1: 0x6f, 0xbf3: 0x70, 0xbf4: 0x71, 0xbf5: 0x72, 0xbf6: 0x73, 0xbf7: 0x74,
+-	0xbf8: 0x75, 0xbf9: 0x76, 0xbfa: 0x1f4, 0xbfb: 0x1f5, 0xbfc: 0x79, 0xbfd: 0x7a, 0xbfe: 0x7b, 0xbff: 0x7c,
+-	// Block 0x30, offset 0xc00
+-	0xc00: 0x7d, 0xc01: 0x7e, 0xc02: 0x7f, 0xc03: 0x80, 0xc04: 0x81, 0xc05: 0x1f6, 0xc06: 0x83, 0xc07: 0x84,
+-	0xc08: 0x85, 0xc09: 0x86, 0xc0a: 0x87, 0xc0b: 0x88, 0xc0c: 0x89, 0xc0d: 0x8a, 0xc0e: 0x8b, 0xc0f: 0x8c,
+-	0xc10: 0x8d, 0xc11: 0x8e, 0xc12: 0x1f7, 0xc13: 0x90, 0xc14: 0x91, 0xc15: 0x92, 0xc16: 0x93, 0xc17: 0x94,
+-	0xc18: 0x95, 0xc19: 0x96, 0xc1a: 0x97, 0xc1b: 0x98, 0xc1c: 0x99, 0xc1d: 0x9a, 0xc1e: 0x9b, 0xc1f: 0x9c,
+-	0xc20: 0x9d, 0xc21: 0x9e, 0xc22: 0x9f, 0xc23: 0xa0, 0xc24: 0xa1, 0xc25: 0xa2, 0xc26: 0xa3, 0xc27: 0xa4,
+-	0xc28: 0xa5, 0xc29: 0xa6, 0xc2a: 0xa7, 0xc2b: 0xa8, 0xc2c: 0xa9, 0xc2d: 0xaa,
+-	0xc30: 0xab, 0xc31: 0xac, 0xc32: 0xad, 0xc33: 0xae, 0xc34: 0xaf, 0xc35: 0xb0, 0xc36: 0xb1, 0xc37: 0xb2,
+-	0xc38: 0xb3, 0xc3a: 0xb4, 0xc3b: 0xb5, 0xc3c: 0xb6, 0xc3d: 0xb7, 0xc3e: 0xb8, 0xc3f: 0xb9,
+-	// Block 0x31, offset 0xc40
+-	0xc40: 0xba, 0xc41: 0xbb, 0xc42: 0xbc, 0xc43: 0xbd, 0xc44: 0xbe, 0xc45: 0xbf, 0xc46: 0xc0, 0xc47: 0xc1,
+-	0xc48: 0xc2, 0xc49: 0xc3, 0xc4a: 0xc4, 0xc4b: 0xc5, 0xc4c: 0xc6, 0xc4d: 0xc7, 0xc4e: 0xc8, 0xc4f: 0x1f8,
+-	// Block 0x32, offset 0xc80
+-	0xc80: 0x18b, 0xc81: 0x18c, 0xc82: 0x18d, 0xc83: 0x18e, 0xc84: 0x1f9, 0xc85: 0x190, 0xc86: 0x191, 0xc87: 0x192,
+-	0xc88: 0x193, 0xc89: 0x194, 0xc8c: 0x195, 0xc8d: 0x196, 0xc8e: 0x197, 0xc8f: 0x198,
+-	0xc90: 0x199, 0xc91: 0x19a, 0xc92: 0x19b, 0xc93: 0x19c, 0xc94: 0x19d, 0xc95: 0x19e, 0xc97: 0x19f,
+-	0xc98: 0x1a0, 0xc99: 0x1a1, 0xc9a: 0x1a2, 0xc9b: 0x1a3, 0xc9c: 0x1a4, 0xc9d: 0x1a5,
+-	// Block 0x33, offset 0xcc0
+-	0xcd0: 0x09, 0xcd1: 0x0a, 0xcd2: 0x0b, 0xcd3: 0x0c, 0xcd6: 0x0d,
+-	0xcdb: 0x0e, 0xcdd: 0x0f, 0xcde: 0x10, 0xcdf: 0x30,
+-	0xcef: 0x12,
+-	// Block 0x34, offset 0xd00
+-	0xd02: 0x01, 0xd03: 0x1ed, 0xd04: 0x1ee, 0xd05: 0x1ef, 0xd06: 0x1f0, 0xd07: 0x06,
+-	0xd08: 0x07, 0xd09: 0x1f1, 0xd0a: 0x1f2, 0xd0b: 0x0a, 0xd0c: 0x1f3, 0xd0d: 0x0c, 0xd0e: 0x0d, 0xd0f: 0x0e,
+-	0xd10: 0x0f, 0xd11: 0x10, 0xd12: 0x11, 0xd13: 0x12, 0xd14: 0x13, 0xd15: 0x14, 0xd16: 0x15, 0xd17: 0x16,
+-	0xd18: 0x17, 0xd19: 0x18, 0xd1a: 0x19, 0xd1b: 0x1a, 0xd1c: 0x1b, 0xd1d: 0x1c, 0xd1e: 0x1d, 0xd1f: 0x1e,
+-	0xd20: 0x01, 0xd21: 0x2d, 0xd22: 0x2e, 0xd23: 0x2f, 0xd24: 0x05,
+-	0xd2a: 0x06, 0xd2d: 0x07, 0xd2f: 0x08,
+-	0xd30: 0x31, 0xd33: 0x15,
+-	// Block 0x35, offset 0xd40
+-	0xd40: 0x3f, 0xd41: 0x40, 0xd42: 0x41, 0xd43: 0x42, 0xd44: 0x43, 0xd45: 0x44, 0xd46: 0x45, 0xd47: 0x46,
+-	0xd48: 0x47, 0xd49: 0x48, 0xd4a: 0x49, 0xd4b: 0x4a, 0xd4c: 0x4b, 0xd4d: 0x4c, 0xd4e: 0x4d, 0xd4f: 0x4e,
+-	0xd50: 0x4f, 0xd51: 0x50, 0xd52: 0x51, 0xd53: 0x52, 0xd54: 0x53, 0xd55: 0x54, 0xd56: 0x55, 0xd57: 0x56,
+-	0xd58: 0x57, 0xd59: 0x58, 0xd5a: 0x59, 0xd5b: 0x5a, 0xd5c: 0x5b, 0xd5d: 0x5c, 0xd5e: 0x5d, 0xd5f: 0x5e,
+-	0xd60: 0x5f, 0xd61: 0x60, 0xd62: 0x61, 0xd63: 0x62, 0xd64: 0x63, 0xd65: 0x64, 0xd66: 0x65, 0xd67: 0x66,
+-	0xd68: 0x67, 0xd69: 0x68, 0xd6a: 0x69, 0xd6c: 0x6a, 0xd6d: 0x6b, 0xd6e: 0x6c, 0xd6f: 0x6d,
+-	0xd70: 0x6e, 0xd71: 0x6f, 0xd73: 0x70, 0xd74: 0x71, 0xd75: 0x72, 0xd76: 0x73, 0xd77: 0x74,
+-	0xd78: 0x203, 0xd79: 0x204, 0xd7a: 0x205, 0xd7b: 0x206, 0xd7c: 0x79, 0xd7d: 0x7a, 0xd7e: 0x7b, 0xd7f: 0x207,
+-	// Block 0x36, offset 0xd80
+-	0xd80: 0x208, 0xd81: 0x209, 0xd82: 0x7f, 0xd83: 0x80, 0xd84: 0x20a, 0xd85: 0x20b, 0xd86: 0x83, 0xd87: 0x84,
+-	0xd88: 0x85, 0xd89: 0x86, 0xd8a: 0x87, 0xd8b: 0x88, 0xd8c: 0x89, 0xd8d: 0x8a, 0xd8e: 0x8b, 0xd8f: 0x8c,
+-	0xd90: 0x8d, 0xd91: 0x20c, 0xd92: 0x20d, 0xd93: 0x90, 0xd94: 0x91, 0xd95: 0x92, 0xd96: 0x93, 0xd97: 0x94,
+-	0xd98: 0x95, 0xd99: 0x96, 0xd9a: 0x97, 0xd9b: 0x98, 0xd9c: 0x99, 0xd9d: 0x9a, 0xd9e: 0x9b, 0xd9f: 0x9c,
+-	0xda0: 0x9d, 0xda1: 0x9e, 0xda2: 0x9f, 0xda3: 0xa0, 0xda4: 0xa1, 0xda5: 0xa2, 0xda6: 0xa3, 0xda7: 0xa4,
+-	0xda8: 0xa5, 0xda9: 0xa6, 0xdaa: 0xa7, 0xdab: 0xa8, 0xdac: 0xa9, 0xdad: 0xaa,
+-	0xdb0: 0xab, 0xdb1: 0xac, 0xdb2: 0xad, 0xdb3: 0xae, 0xdb4: 0xaf, 0xdb5: 0xb0, 0xdb6: 0xb1, 0xdb7: 0xb2,
+-	0xdb8: 0xb3, 0xdba: 0xb4, 0xdbb: 0xb5, 0xdbc: 0xb6, 0xdbd: 0xb7, 0xdbe: 0xb8, 0xdbf: 0xb9,
+-	// Block 0x37, offset 0xdc0
+-	0xdc0: 0xba, 0xdc1: 0xbb, 0xdc2: 0xbc, 0xdc3: 0xbd, 0xdc4: 0xbe, 0xdc5: 0xbf, 0xdc6: 0xc0, 0xdc7: 0xc1,
+-	0xdc8: 0x20e, 0xdc9: 0x20f, 0xdca: 0x210, 0xdcb: 0x211, 0xdcc: 0xc6, 0xdcd: 0x212, 0xdce: 0x213, 0xdcf: 0x214,
+-	// Block 0x38, offset 0xe00
+-	0xe24: 0xfb, 0xe25: 0xfc, 0xe26: 0xfd, 0xe27: 0xfe,
+-	0xe28: 0xff, 0xe29: 0x100, 0xe2a: 0x101, 0xe2b: 0x102, 0xe2c: 0x215, 0xe2d: 0x104, 0xe2e: 0x105, 0xe2f: 0x106,
+-	0xe30: 0x107, 0xe31: 0x108, 0xe32: 0x109, 0xe33: 0x10a, 0xe34: 0x10b, 0xe35: 0x10c, 0xe36: 0x10d, 0xe37: 0x10e,
+-	0xe38: 0x10f, 0xe39: 0x110, 0xe3a: 0x111, 0xe3b: 0x112, 0xe3c: 0x113, 0xe3d: 0x114, 0xe3e: 0x115, 0xe3f: 0x116,
+-	// Block 0x39, offset 0xe40
+-	0xe40: 0x18b, 0xe41: 0x18c, 0xe42: 0x18d, 0xe43: 0x18e, 0xe44: 0x216, 0xe45: 0x217, 0xe46: 0x218, 0xe47: 0x192,
+-	0xe48: 0x193, 0xe49: 0x194, 0xe4c: 0x195, 0xe4d: 0x196, 0xe4e: 0x197, 0xe4f: 0x198,
+-	0xe50: 0x199, 0xe51: 0x19a, 0xe52: 0x19b, 0xe53: 0x19c, 0xe54: 0x19d, 0xe55: 0x19e, 0xe57: 0x19f,
+-	0xe58: 0x1a0, 0xe59: 0x1a1, 0xe5a: 0x1a2, 0xe5b: 0x1a3, 0xe5c: 0x1a4, 0xe5d: 0x1a5,
+-	// Block 0x3a, offset 0xe80
+-	0xe90: 0x09, 0xe91: 0x0a, 0xe92: 0x0b, 0xe93: 0x0c, 0xe96: 0x0d,
+-	0xe9b: 0x0e, 0xe9d: 0x0f, 0xe9e: 0x10, 0xe9f: 0x37,
+-	0xeaf: 0x12,
+-	// Block 0x3b, offset 0xec0
+-	0xec2: 0x01, 0xec3: 0x1fc, 0xec4: 0x1fd, 0xec5: 0x1fe, 0xec6: 0x1ff, 0xec7: 0x200,
+-	0xec8: 0x201, 0xec9: 0x08, 0xeca: 0x09, 0xecb: 0x0a, 0xecc: 0x0b, 0xecd: 0x202, 0xece: 0x0d, 0xecf: 0x0e,
+-	0xed0: 0x0f, 0xed1: 0x10, 0xed2: 0x11, 0xed3: 0x12, 0xed4: 0x13, 0xed5: 0x14, 0xed6: 0x15, 0xed7: 0x16,
+-	0xed8: 0x17, 0xed9: 0x18, 0xeda: 0x19, 0xedb: 0x1a, 0xedc: 0x1b, 0xedd: 0x1c, 0xede: 0x1d, 0xedf: 0x1e,
+-	0xee0: 0x01, 0xee1: 0x33, 0xee2: 0x34, 0xee3: 0x35, 0xee4: 0x05,
+-	0xeea: 0x06, 0xeed: 0x07, 0xeef: 0x36,
+-	0xef0: 0x38, 0xef3: 0x15,
+-	// Block 0x3c, offset 0xf00
+-	0xf02: 0x01, 0xf03: 0x02, 0xf04: 0x21b, 0xf05: 0x21c, 0xf06: 0x05, 0xf07: 0x06,
+-	0xf08: 0x07, 0xf09: 0x08, 0xf0a: 0x09, 0xf0b: 0x0a, 0xf0c: 0x0b, 0xf0d: 0x0c, 0xf0e: 0x0d, 0xf0f: 0x0e,
+-	0xf10: 0x0f, 0xf11: 0x10, 0xf12: 0x11, 0xf13: 0x12, 0xf14: 0x13, 0xf15: 0x14, 0xf16: 0x15, 0xf17: 0x16,
+-	0xf18: 0x17, 0xf19: 0x18, 0xf1a: 0x19, 0xf1b: 0x1a, 0xf1c: 0x1b, 0xf1d: 0x1c, 0xf1e: 0x1d, 0xf1f: 0x1e,
+-	0xf20: 0x01, 0xf21: 0x02, 0xf22: 0x03, 0xf23: 0x04, 0xf24: 0x05,
+-	0xf2a: 0x06, 0xf2d: 0x07, 0xf2f: 0x08,
+-	0xf30: 0x13, 0xf33: 0x15,
+-	// Block 0x3d, offset 0xf40
+-	0xf42: 0x01, 0xf43: 0x21f, 0xf44: 0x03, 0xf45: 0x04, 0xf46: 0x05, 0xf47: 0x06,
+-	0xf48: 0x07, 0xf49: 0x08, 0xf4a: 0x09, 0xf4b: 0x0a, 0xf4c: 0x0b, 0xf4d: 0x0c, 0xf4e: 0x0d, 0xf4f: 0x0e,
+-	0xf50: 0x0f, 0xf51: 0x10, 0xf52: 0x11, 0xf53: 0x12, 0xf54: 0x13, 0xf55: 0x14, 0xf56: 0x15, 0xf57: 0x16,
+-	0xf58: 0x17, 0xf59: 0x18, 0xf5a: 0x19, 0xf5b: 0x1a, 0xf5c: 0x1b, 0xf5d: 0x1c, 0xf5e: 0x1d, 0xf5f: 0x1e,
+-	0xf60: 0x01, 0xf61: 0x02, 0xf62: 0x03, 0xf63: 0x04, 0xf64: 0x05,
+-	0xf6a: 0x06, 0xf6d: 0x07, 0xf6f: 0x08,
+-	0xf70: 0x13, 0xf73: 0x15,
+-	// Block 0x3e, offset 0xf80
+-	0xf80: 0x3f, 0xf81: 0x40, 0xf82: 0x41, 0xf83: 0x42, 0xf84: 0x43, 0xf85: 0x44, 0xf86: 0x45, 0xf87: 0x46,
+-	0xf88: 0x47, 0xf89: 0x48, 0xf8a: 0x49, 0xf8b: 0x4a, 0xf8c: 0x4b, 0xf8d: 0x4c, 0xf8e: 0x4d, 0xf8f: 0x4e,
+-	0xf90: 0x4f, 0xf91: 0x50, 0xf92: 0x51, 0xf93: 0x52, 0xf94: 0x53, 0xf95: 0x54, 0xf96: 0x55, 0xf97: 0x56,
+-	0xf98: 0x57, 0xf99: 0x58, 0xf9a: 0x59, 0xf9b: 0x5a, 0xf9c: 0x5b, 0xf9d: 0x5c, 0xf9e: 0x5d, 0xf9f: 0x5e,
+-	0xfa0: 0x5f, 0xfa1: 0x60, 0xfa2: 0x61, 0xfa3: 0x62, 0xfa4: 0x63, 0xfa5: 0x64, 0xfa6: 0x65, 0xfa7: 0x66,
+-	0xfa8: 0x67, 0xfa9: 0x68, 0xfaa: 0x69, 0xfac: 0x6a, 0xfad: 0x6b, 0xfae: 0x6c, 0xfaf: 0x6d,
+-	0xfb0: 0x6e, 0xfb1: 0x6f, 0xfb3: 0x70, 0xfb4: 0x71, 0xfb5: 0x72, 0xfb6: 0x73, 0xfb7: 0x74,
+-	0xfb8: 0x75, 0xfb9: 0x226, 0xfba: 0x227, 0xfbb: 0x228, 0xfbc: 0x79, 0xfbd: 0x7a, 0xfbe: 0x7b, 0xfbf: 0x7c,
+-	// Block 0x3f, offset 0xfc0
+-	0xfc0: 0x7d, 0xfc1: 0x7e, 0xfc2: 0x7f, 0xfc3: 0x80, 0xfc4: 0x81, 0xfc5: 0x82, 0xfc6: 0x83, 0xfc7: 0x84,
+-	0xfc8: 0x85, 0xfc9: 0x86, 0xfca: 0x87, 0xfcb: 0x88, 0xfcc: 0x89, 0xfcd: 0x8a, 0xfce: 0x8b, 0xfcf: 0x8c,
+-	0xfd0: 0x8d, 0xfd1: 0x8e, 0xfd2: 0x229, 0xfd3: 0x90, 0xfd4: 0x91, 0xfd5: 0x92, 0xfd6: 0x93, 0xfd7: 0x94,
+-	0xfd8: 0x95, 0xfd9: 0x96, 0xfda: 0x97, 0xfdb: 0x98, 0xfdc: 0x99, 0xfdd: 0x9a, 0xfde: 0x9b, 0xfdf: 0x9c,
+-	0xfe0: 0x9d, 0xfe1: 0x9e, 0xfe2: 0x9f, 0xfe3: 0xa0, 0xfe4: 0xa1, 0xfe5: 0xa2, 0xfe6: 0xa3, 0xfe7: 0xa4,
+-	0xfe8: 0xa5, 0xfe9: 0xa6, 0xfea: 0xa7, 0xfeb: 0xa8, 0xfec: 0xa9, 0xfed: 0xaa,
+-	0xff0: 0xab, 0xff1: 0xac, 0xff2: 0xad, 0xff3: 0xae, 0xff4: 0xaf, 0xff5: 0xb0, 0xff6: 0xb1, 0xff7: 0xb2,
+-	0xff8: 0xb3, 0xffa: 0xb4, 0xffb: 0xb5, 0xffc: 0xb6, 0xffd: 0xb7, 0xffe: 0xb8, 0xfff: 0xb9,
+-	// Block 0x40, offset 0x1000
+-	0x1000: 0xba, 0x1001: 0xbb, 0x1002: 0xbc, 0x1003: 0xbd, 0x1004: 0xbe, 0x1005: 0xbf, 0x1006: 0xc0, 0x1007: 0xc1,
+-	0x1008: 0xc2, 0x1009: 0xc3, 0x100a: 0xc4, 0x100b: 0xc5, 0x100c: 0xc6, 0x100d: 0xc7, 0x100e: 0x22a, 0x100f: 0x22b,
+-	// Block 0x41, offset 0x1040
+-	0x1040: 0x18b, 0x1041: 0x18c, 0x1042: 0x18d, 0x1043: 0x18e, 0x1044: 0x22c, 0x1045: 0x22d, 0x1046: 0x191, 0x1047: 0x192,
+-	0x1048: 0x193, 0x1049: 0x194, 0x104c: 0x195, 0x104d: 0x196, 0x104e: 0x197, 0x104f: 0x198,
+-	0x1050: 0x199, 0x1051: 0x19a, 0x1052: 0x19b, 0x1053: 0x19c, 0x1054: 0x19d, 0x1055: 0x19e, 0x1057: 0x19f,
+-	0x1058: 0x1a0, 0x1059: 0x1a1, 0x105a: 0x1a2, 0x105b: 0x1a3, 0x105c: 0x1a4, 0x105d: 0x1a5,
+-	// Block 0x42, offset 0x1080
+-	0x1090: 0x09, 0x1091: 0x0a, 0x1092: 0x0b, 0x1093: 0x0c, 0x1096: 0x0d,
+-	0x109b: 0x0e, 0x109d: 0x0f, 0x109e: 0x10, 0x109f: 0x3f,
+-	0x10af: 0x12,
+-	// Block 0x43, offset 0x10c0
+-	0x10c2: 0x01, 0x10c3: 0x222, 0x10c4: 0x03, 0x10c5: 0x223, 0x10c6: 0x05, 0x10c7: 0x224,
+-	0x10c8: 0x225, 0x10c9: 0x08, 0x10ca: 0x09, 0x10cb: 0x0a, 0x10cc: 0x0b, 0x10cd: 0x0c, 0x10ce: 0x0d, 0x10cf: 0x0e,
+-	0x10d0: 0x0f, 0x10d1: 0x10, 0x10d2: 0x11, 0x10d3: 0x12, 0x10d4: 0x13, 0x10d5: 0x14, 0x10d6: 0x15, 0x10d7: 0x16,
+-	0x10d8: 0x17, 0x10d9: 0x18, 0x10da: 0x19, 0x10db: 0x1a, 0x10dc: 0x1b, 0x10dd: 0x1c, 0x10de: 0x1d, 0x10df: 0x1e,
+-	0x10e0: 0x01, 0x10e1: 0x3c, 0x10e2: 0x3d, 0x10e3: 0x3e, 0x10e4: 0x05,
+-	0x10ea: 0x06, 0x10ed: 0x07, 0x10ef: 0x08,
+-	0x10f0: 0x40, 0x10f3: 0x15,
+-	// Block 0x44, offset 0x1100
+-	0x1124: 0xfb, 0x1125: 0xfc, 0x1126: 0xfd, 0x1127: 0xfe,
+-	0x1128: 0xff, 0x1129: 0x100, 0x112a: 0x101, 0x112b: 0x102, 0x112c: 0x103, 0x112d: 0x104, 0x112e: 0x232, 0x112f: 0x106,
+-	0x1130: 0x233, 0x1131: 0x234, 0x1132: 0x235, 0x1133: 0x236, 0x1134: 0x237, 0x1135: 0x10c, 0x1136: 0x10d, 0x1137: 0x10e,
+-	0x1138: 0x10f, 0x1139: 0x110, 0x113a: 0x111, 0x113b: 0x112, 0x113c: 0x113, 0x113d: 0x114, 0x113e: 0x115, 0x113f: 0x116,
+-	// Block 0x45, offset 0x1140
+-	0x1142: 0x01, 0x1143: 0x02, 0x1144: 0x03, 0x1145: 0x04, 0x1146: 0x05, 0x1147: 0x06,
+-	0x1148: 0x07, 0x1149: 0x08, 0x114a: 0x09, 0x114b: 0x0a, 0x114c: 0x0b, 0x114d: 0x0c, 0x114e: 0x0d, 0x114f: 0x0e,
+-	0x1150: 0x0f, 0x1151: 0x10, 0x1152: 0x11, 0x1153: 0x12, 0x1154: 0x13, 0x1155: 0x14, 0x1156: 0x15, 0x1157: 0x16,
+-	0x1158: 0x22e, 0x1159: 0x22f, 0x115a: 0x230, 0x115b: 0x231, 0x115c: 0x1b, 0x115d: 0x1c, 0x115e: 0x1d, 0x115f: 0x1e,
+-	0x1160: 0x01, 0x1161: 0x02, 0x1162: 0x03, 0x1163: 0x04, 0x1164: 0x05,
+-	0x116a: 0x06, 0x116d: 0x07, 0x116f: 0x42,
+-	0x1170: 0x13, 0x1173: 0x15,
+-	// Block 0x46, offset 0x1180
+-	0x1180: 0x3f, 0x1181: 0x40, 0x1182: 0x41, 0x1183: 0x42, 0x1184: 0x43, 0x1185: 0x44, 0x1186: 0x45, 0x1187: 0x46,
+-	0x1188: 0x47, 0x1189: 0x48, 0x118a: 0x49, 0x118b: 0x4a, 0x118c: 0x4b, 0x118d: 0x4c, 0x118e: 0x4d, 0x118f: 0x4e,
+-	0x1190: 0x4f, 0x1191: 0x50, 0x1192: 0x51, 0x1193: 0x52, 0x1194: 0x53, 0x1195: 0x54, 0x1196: 0x55, 0x1197: 0x56,
+-	0x1198: 0x57, 0x1199: 0x58, 0x119a: 0x59, 0x119b: 0x5a, 0x119c: 0x5b, 0x119d: 0x5c, 0x119e: 0x5d, 0x119f: 0x5e,
+-	0x11a0: 0x5f, 0x11a1: 0x60, 0x11a2: 0x61, 0x11a3: 0x62, 0x11a4: 0x63, 0x11a5: 0x64, 0x11a6: 0x65, 0x11a7: 0x66,
+-	0x11a8: 0x67, 0x11a9: 0x68, 0x11aa: 0x69, 0x11ac: 0x6a, 0x11ad: 0x6b, 0x11ae: 0x6c, 0x11af: 0x6d,
+-	0x11b0: 0x6e, 0x11b1: 0x6f, 0x11b3: 0x70, 0x11b4: 0x71, 0x11b5: 0x72, 0x11b6: 0x73, 0x11b7: 0x74,
+-	0x11b8: 0x75, 0x11b9: 0x241, 0x11ba: 0x77, 0x11bb: 0x78, 0x11bc: 0x79, 0x11bd: 0x7a, 0x11be: 0x7b, 0x11bf: 0x7c,
+-	// Block 0x47, offset 0x11c0
+-	0x11c0: 0x7d, 0x11c1: 0x7e, 0x11c2: 0x7f, 0x11c3: 0x80, 0x11c4: 0x242, 0x11c5: 0x82, 0x11c6: 0x83, 0x11c7: 0x84,
+-	0x11c8: 0x85, 0x11c9: 0x86, 0x11ca: 0x87, 0x11cb: 0x88, 0x11cc: 0x89, 0x11cd: 0x8a, 0x11ce: 0x8b, 0x11cf: 0x8c,
+-	0x11d0: 0x8d, 0x11d1: 0x8e, 0x11d2: 0x8f, 0x11d3: 0x90, 0x11d4: 0x91, 0x11d5: 0x92, 0x11d6: 0x93, 0x11d7: 0x94,
+-	0x11d8: 0x95, 0x11d9: 0x96, 0x11da: 0x97, 0x11db: 0x98, 0x11dc: 0x99, 0x11dd: 0x9a, 0x11de: 0x9b, 0x11df: 0x9c,
+-	0x11e0: 0x9d, 0x11e1: 0x9e, 0x11e2: 0x9f, 0x11e3: 0xa0, 0x11e4: 0xa1, 0x11e5: 0xa2, 0x11e6: 0xa3, 0x11e7: 0xa4,
+-	0x11e8: 0xa5, 0x11e9: 0xa6, 0x11ea: 0xa7, 0x11eb: 0xa8, 0x11ec: 0xa9, 0x11ed: 0xaa,
+-	0x11f0: 0xab, 0x11f1: 0xac, 0x11f2: 0xad, 0x11f3: 0xae, 0x11f4: 0xaf, 0x11f5: 0xb0, 0x11f6: 0xb1, 0x11f7: 0xb2,
+-	0x11f8: 0xb3, 0x11fa: 0xb4, 0x11fb: 0xb5, 0x11fc: 0xb6, 0x11fd: 0xb7, 0x11fe: 0xb8, 0x11ff: 0xb9,
+-	// Block 0x48, offset 0x1200
+-	0x1202: 0x01, 0x1203: 0x23a, 0x1204: 0x23b, 0x1205: 0x23c, 0x1206: 0x23d, 0x1207: 0x23e,
+-	0x1208: 0x23f, 0x1209: 0x08, 0x120a: 0x240, 0x120b: 0x0a, 0x120c: 0x0b, 0x120d: 0x0c, 0x120e: 0x0d, 0x120f: 0x0e,
+-	0x1210: 0x0f, 0x1211: 0x10, 0x1212: 0x11, 0x1213: 0x12, 0x1214: 0x13, 0x1215: 0x14, 0x1216: 0x15, 0x1217: 0x16,
+-	0x1218: 0x17, 0x1219: 0x18, 0x121a: 0x19, 0x121b: 0x1a, 0x121c: 0x1b, 0x121d: 0x1c, 0x121e: 0x1d, 0x121f: 0x1e,
+-	0x1220: 0x01, 0x1221: 0x44, 0x1222: 0x45, 0x1223: 0x04, 0x1224: 0x05,
+-	0x122a: 0x06, 0x122d: 0x07, 0x122f: 0x08,
+-	0x1230: 0x13, 0x1233: 0x15,
+-	// Block 0x49, offset 0x1240
+-	0x1260: 0x1f, 0x1261: 0x20, 0x1262: 0x21, 0x1263: 0x22, 0x1264: 0x23, 0x1265: 0x24, 0x1266: 0x25, 0x1267: 0x26,
+-	0x1268: 0x27, 0x1269: 0x28, 0x126a: 0x245, 0x126b: 0x2a, 0x126c: 0x2b, 0x126d: 0x2c, 0x126e: 0x2d, 0x126f: 0x2e,
+-	0x1270: 0x2f, 0x1271: 0x30, 0x1272: 0x31, 0x1273: 0x32, 0x1274: 0x33, 0x1275: 0x34, 0x1276: 0x35, 0x1277: 0x36,
+-	0x1278: 0x37, 0x1279: 0x38, 0x127a: 0x39, 0x127b: 0x3a, 0x127c: 0x3b, 0x127d: 0x3c, 0x127e: 0x3d, 0x127f: 0x3e,
+-	// Block 0x4a, offset 0x1280
+-	0x1282: 0x01, 0x1283: 0x02, 0x1284: 0x03, 0x1285: 0x04, 0x1286: 0x05, 0x1287: 0x06,
+-	0x1288: 0x07, 0x1289: 0x08, 0x128a: 0x09, 0x128b: 0x0a, 0x128c: 0x0b, 0x128d: 0x0c, 0x128e: 0x0d, 0x128f: 0x0e,
+-	0x1290: 0x0f, 0x1291: 0x10, 0x1292: 0x11, 0x1293: 0x12, 0x1294: 0x13, 0x1295: 0x14, 0x1296: 0x15, 0x1297: 0x16,
+-	0x1298: 0x17, 0x1299: 0x18, 0x129a: 0x19, 0x129b: 0x1a, 0x129c: 0x1b, 0x129d: 0x1c, 0x129e: 0x1d, 0x129f: 0x1e,
+-	0x12a0: 0x47, 0x12a1: 0x02, 0x12a2: 0x03, 0x12a3: 0x04, 0x12a4: 0x05,
+-	0x12aa: 0x06, 0x12ad: 0x07, 0x12af: 0x08,
+-	0x12b0: 0x13, 0x12b3: 0x15,
+-	// Block 0x4b, offset 0x12c0
+-	0x12c2: 0x01, 0x12c3: 0x02, 0x12c4: 0x03, 0x12c5: 0x04, 0x12c6: 0x248, 0x12c7: 0x06,
+-	0x12c8: 0x07, 0x12c9: 0x249, 0x12ca: 0x24a, 0x12cb: 0x0a, 0x12cc: 0x0b, 0x12cd: 0x0c, 0x12ce: 0x0d, 0x12cf: 0x0e,
+-	0x12d0: 0x0f, 0x12d1: 0x10, 0x12d2: 0x11, 0x12d3: 0x12, 0x12d4: 0x13, 0x12d5: 0x14, 0x12d6: 0x15, 0x12d7: 0x16,
+-	0x12d8: 0x17, 0x12d9: 0x18, 0x12da: 0x19, 0x12db: 0x1a, 0x12dc: 0x1b, 0x12dd: 0x1c, 0x12de: 0x1d, 0x12df: 0x1e,
+-	0x12e0: 0x01, 0x12e1: 0x02, 0x12e2: 0x03, 0x12e3: 0x04, 0x12e4: 0x05,
+-	0x12ea: 0x06, 0x12ed: 0x07, 0x12ef: 0x08,
+-	0x12f0: 0x13, 0x12f3: 0x15,
+-	// Block 0x4c, offset 0x1300
+-	0x1300: 0x3f, 0x1301: 0x40, 0x1302: 0x41, 0x1303: 0x42, 0x1304: 0x43, 0x1305: 0x44, 0x1306: 0x45, 0x1307: 0x46,
+-	0x1308: 0x47, 0x1309: 0x48, 0x130a: 0x49, 0x130b: 0x4a, 0x130c: 0x4b, 0x130d: 0x4c, 0x130e: 0x4d, 0x130f: 0x4e,
+-	0x1310: 0x4f, 0x1311: 0x50, 0x1312: 0x51, 0x1313: 0x52, 0x1314: 0x53, 0x1315: 0x54, 0x1316: 0x55, 0x1317: 0x56,
+-	0x1318: 0x57, 0x1319: 0x58, 0x131a: 0x59, 0x131b: 0x5a, 0x131c: 0x5b, 0x131d: 0x5c, 0x131e: 0x5d, 0x131f: 0x5e,
+-	0x1320: 0x5f, 0x1321: 0x60, 0x1322: 0x61, 0x1323: 0x62, 0x1324: 0x63, 0x1325: 0x64, 0x1326: 0x65, 0x1327: 0x66,
+-	0x1328: 0x67, 0x1329: 0x68, 0x132a: 0x69, 0x132c: 0x6a, 0x132d: 0x6b, 0x132e: 0x6c, 0x132f: 0x6d,
+-	0x1330: 0x6e, 0x1331: 0x6f, 0x1333: 0x70, 0x1334: 0x71, 0x1335: 0x72, 0x1336: 0x73, 0x1337: 0x74,
+-	0x1338: 0x254, 0x1339: 0x255, 0x133a: 0x256, 0x133b: 0x257, 0x133c: 0x79, 0x133d: 0x7a, 0x133e: 0x7b, 0x133f: 0x7c,
+-	// Block 0x4d, offset 0x1340
+-	0x1340: 0x7d, 0x1341: 0x7e, 0x1342: 0x7f, 0x1343: 0x80, 0x1344: 0x258, 0x1345: 0x20b, 0x1346: 0x83, 0x1347: 0x84,
+-	0x1348: 0x85, 0x1349: 0x86, 0x134a: 0x87, 0x134b: 0x88, 0x134c: 0x89, 0x134d: 0x8a, 0x134e: 0x8b, 0x134f: 0x8c,
+-	0x1350: 0x8d, 0x1351: 0x8e, 0x1352: 0x259, 0x1353: 0x90, 0x1354: 0x91, 0x1355: 0x92, 0x1356: 0x93, 0x1357: 0x94,
+-	0x1358: 0x95, 0x1359: 0x96, 0x135a: 0x97, 0x135b: 0x98, 0x135c: 0x99, 0x135d: 0x9a, 0x135e: 0x9b, 0x135f: 0x9c,
+-	0x1360: 0x9d, 0x1361: 0x9e, 0x1362: 0x9f, 0x1363: 0xa0, 0x1364: 0xa1, 0x1365: 0xa2, 0x1366: 0xa3, 0x1367: 0xa4,
+-	0x1368: 0xa5, 0x1369: 0xa6, 0x136a: 0xa7, 0x136b: 0xa8, 0x136c: 0xa9, 0x136d: 0xaa,
+-	0x1370: 0xab, 0x1371: 0xac, 0x1372: 0xad, 0x1373: 0xae, 0x1374: 0xaf, 0x1375: 0xb0, 0x1376: 0xb1, 0x1377: 0xb2,
+-	0x1378: 0xb3, 0x137a: 0xb4, 0x137b: 0xb5, 0x137c: 0xb6, 0x137d: 0xb7, 0x137e: 0xb8, 0x137f: 0xb9,
+-	// Block 0x4e, offset 0x1380
+-	0x1380: 0xba, 0x1381: 0xbb, 0x1382: 0xbc, 0x1383: 0xbd, 0x1384: 0xbe, 0x1385: 0xbf, 0x1386: 0xc0, 0x1387: 0xc1,
+-	0x1388: 0xc2, 0x1389: 0xc3, 0x138a: 0xc4, 0x138b: 0x25a, 0x138c: 0xc6, 0x138d: 0x25b, 0x138e: 0x25c, 0x138f: 0x25d,
+-	// Block 0x4f, offset 0x13c0
+-	0x13e4: 0xfb, 0x13e5: 0xfc, 0x13e6: 0xfd, 0x13e7: 0xfe,
+-	0x13e8: 0xff, 0x13e9: 0x100, 0x13ea: 0x101, 0x13eb: 0x102, 0x13ec: 0x25e, 0x13ed: 0x104, 0x13ee: 0x105, 0x13ef: 0x106,
+-	0x13f0: 0x107, 0x13f1: 0x108, 0x13f2: 0x109, 0x13f3: 0x10a, 0x13f4: 0x10b, 0x13f5: 0x10c, 0x13f6: 0x10d, 0x13f7: 0x10e,
+-	0x13f8: 0x10f, 0x13f9: 0x110, 0x13fa: 0x111, 0x13fb: 0x112, 0x13fc: 0x113, 0x13fd: 0x114, 0x13fe: 0x115, 0x13ff: 0x116,
+-	// Block 0x50, offset 0x1400
+-	0x1400: 0x18b, 0x1401: 0x18c, 0x1402: 0x18d, 0x1403: 0x18e, 0x1404: 0x25f, 0x1405: 0x260, 0x1406: 0x191, 0x1407: 0x192,
+-	0x1408: 0x193, 0x1409: 0x194, 0x140c: 0x195, 0x140d: 0x196, 0x140e: 0x197, 0x140f: 0x198,
+-	0x1410: 0x199, 0x1411: 0x19a, 0x1412: 0x19b, 0x1413: 0x19c, 0x1414: 0x19d, 0x1415: 0x19e, 0x1417: 0x19f,
+-	0x1418: 0x1a0, 0x1419: 0x1a1, 0x141a: 0x1a2, 0x141b: 0x1a3, 0x141c: 0x1a4, 0x141d: 0x1a5,
+-	// Block 0x51, offset 0x1440
+-	0x1450: 0x09, 0x1451: 0x0a, 0x1452: 0x0b, 0x1453: 0x0c, 0x1456: 0x0d,
+-	0x145b: 0x0e, 0x145d: 0x0f, 0x145e: 0x10, 0x145f: 0x4e,
+-	0x146f: 0x12,
+-	// Block 0x52, offset 0x1480
+-	0x1482: 0x01, 0x1483: 0x24d, 0x1484: 0x24e, 0x1485: 0x24f, 0x1486: 0x250, 0x1487: 0x251,
+-	0x1488: 0x252, 0x1489: 0x08, 0x148a: 0x253, 0x148b: 0x0a, 0x148c: 0x0b, 0x148d: 0x0c, 0x148e: 0x0d, 0x148f: 0x0e,
+-	0x1490: 0x0f, 0x1491: 0x10, 0x1492: 0x11, 0x1493: 0x12, 0x1494: 0x13, 0x1495: 0x14, 0x1496: 0x15, 0x1497: 0x16,
+-	0x1498: 0x17, 0x1499: 0x18, 0x149a: 0x19, 0x149b: 0x1a, 0x149c: 0x1b, 0x149d: 0x1c, 0x149e: 0x1d, 0x149f: 0x1e,
+-	0x14a0: 0x01, 0x14a1: 0x4a, 0x14a2: 0x4b, 0x14a3: 0x4c, 0x14a4: 0x05,
+-	0x14aa: 0x06, 0x14ad: 0x07, 0x14af: 0x4d,
+-	0x14b0: 0x4f, 0x14b3: 0x15,
+-	// Block 0x53, offset 0x14c0
+-	0x14e0: 0x1f, 0x14e1: 0x20, 0x14e2: 0x21, 0x14e3: 0x22, 0x14e4: 0x261, 0x14e5: 0x24, 0x14e6: 0x25, 0x14e7: 0x26,
+-	0x14e8: 0x27, 0x14e9: 0x28, 0x14ea: 0x29, 0x14eb: 0x2a, 0x14ec: 0x2b, 0x14ed: 0x2c, 0x14ee: 0x2d, 0x14ef: 0x2e,
+-	0x14f0: 0x2f, 0x14f1: 0x30, 0x14f2: 0x31, 0x14f3: 0x32, 0x14f4: 0x33, 0x14f5: 0x34, 0x14f6: 0x35, 0x14f7: 0x36,
+-	0x14f8: 0x37, 0x14f9: 0x38, 0x14fa: 0x39, 0x14fb: 0x3a, 0x14fc: 0x3b, 0x14fd: 0x3c, 0x14fe: 0x3d, 0x14ff: 0x3e,
+-	// Block 0x54, offset 0x1500
+-	0x1502: 0x01, 0x1503: 0x02, 0x1504: 0x03, 0x1505: 0x04, 0x1506: 0x05, 0x1507: 0x06,
+-	0x1508: 0x07, 0x1509: 0x08, 0x150a: 0x09, 0x150b: 0x0a, 0x150c: 0x0b, 0x150d: 0x0c, 0x150e: 0x0d, 0x150f: 0x0e,
+-	0x1510: 0x0f, 0x1511: 0x10, 0x1512: 0x11, 0x1513: 0x12, 0x1514: 0x13, 0x1515: 0x14, 0x1516: 0x15, 0x1517: 0x16,
+-	0x1518: 0x17, 0x1519: 0x18, 0x151a: 0x19, 0x151b: 0x1a, 0x151c: 0x1b, 0x151d: 0x1c, 0x151e: 0x1d, 0x151f: 0x1e,
+-	0x1520: 0x51, 0x1521: 0x02, 0x1522: 0x03, 0x1523: 0x04, 0x1524: 0x05,
+-	0x152a: 0x06, 0x152d: 0x07, 0x152f: 0x08,
+-	0x1530: 0x13, 0x1533: 0x15,
+-	// Block 0x55, offset 0x1540
+-	0x1540: 0x3f, 0x1541: 0x40, 0x1542: 0x41, 0x1543: 0x42, 0x1544: 0x43, 0x1545: 0x44, 0x1546: 0x45, 0x1547: 0x46,
+-	0x1548: 0x47, 0x1549: 0x48, 0x154a: 0x49, 0x154b: 0x4a, 0x154c: 0x4b, 0x154d: 0x4c, 0x154e: 0x4d, 0x154f: 0x4e,
+-	0x1550: 0x4f, 0x1551: 0x50, 0x1552: 0x51, 0x1553: 0x52, 0x1554: 0x53, 0x1555: 0x54, 0x1556: 0x55, 0x1557: 0x56,
+-	0x1558: 0x57, 0x1559: 0x58, 0x155a: 0x59, 0x155b: 0x5a, 0x155c: 0x5b, 0x155d: 0x5c, 0x155e: 0x5d, 0x155f: 0x5e,
+-	0x1560: 0x5f, 0x1561: 0x60, 0x1562: 0x61, 0x1563: 0x62, 0x1564: 0x63, 0x1565: 0x64, 0x1566: 0x65, 0x1567: 0x66,
+-	0x1568: 0x67, 0x1569: 0x68, 0x156a: 0x69, 0x156c: 0x6a, 0x156d: 0x6b, 0x156e: 0x6c, 0x156f: 0x6d,
+-	0x1570: 0x6e, 0x1571: 0x6f, 0x1573: 0x70, 0x1574: 0x71, 0x1575: 0x72, 0x1576: 0x73, 0x1577: 0x74,
+-	0x1578: 0x267, 0x1579: 0x1db, 0x157a: 0x77, 0x157b: 0x78, 0x157c: 0x79, 0x157d: 0x7a, 0x157e: 0x7b, 0x157f: 0x7c,
+-	// Block 0x56, offset 0x1580
+-	0x1582: 0x01, 0x1583: 0x02, 0x1584: 0x264, 0x1585: 0x265, 0x1586: 0x05, 0x1587: 0x266,
+-	0x1588: 0x07, 0x1589: 0x08, 0x158a: 0x09, 0x158b: 0x0a, 0x158c: 0x0b, 0x158d: 0x0c, 0x158e: 0x0d, 0x158f: 0x0e,
+-	0x1590: 0x0f, 0x1591: 0x10, 0x1592: 0x11, 0x1593: 0x12, 0x1594: 0x13, 0x1595: 0x14, 0x1596: 0x15, 0x1597: 0x16,
+-	0x1598: 0x17, 0x1599: 0x18, 0x159a: 0x19, 0x159b: 0x1a, 0x159c: 0x1b, 0x159d: 0x1c, 0x159e: 0x1d, 0x159f: 0x1e,
+-	0x15a0: 0x01, 0x15a1: 0x53, 0x15a2: 0x03, 0x15a3: 0x04, 0x15a4: 0x05,
+-	0x15aa: 0x06, 0x15ad: 0x07, 0x15af: 0x08,
+-	0x15b0: 0x13, 0x15b3: 0x15,
+-	// Block 0x57, offset 0x15c0
+-	0x15c0: 0x3f, 0x15c1: 0x40, 0x15c2: 0x41, 0x15c3: 0x42, 0x15c4: 0x43, 0x15c5: 0x44, 0x15c6: 0x45, 0x15c7: 0x46,
+-	0x15c8: 0x47, 0x15c9: 0x48, 0x15ca: 0x49, 0x15cb: 0x4a, 0x15cc: 0x4b, 0x15cd: 0x4c, 0x15ce: 0x4d, 0x15cf: 0x4e,
+-	0x15d0: 0x4f, 0x15d1: 0x50, 0x15d2: 0x51, 0x15d3: 0x52, 0x15d4: 0x53, 0x15d5: 0x54, 0x15d6: 0x55, 0x15d7: 0x56,
+-	0x15d8: 0x57, 0x15d9: 0x58, 0x15da: 0x59, 0x15db: 0x5a, 0x15dc: 0x5b, 0x15dd: 0x5c, 0x15de: 0x5d, 0x15df: 0x5e,
+-	0x15e0: 0x5f, 0x15e1: 0x60, 0x15e2: 0x61, 0x15e3: 0x62, 0x15e4: 0x63, 0x15e5: 0x64, 0x15e6: 0x65, 0x15e7: 0x66,
+-	0x15e8: 0x67, 0x15e9: 0x68, 0x15ea: 0x69, 0x15ec: 0x6a, 0x15ed: 0x6b, 0x15ee: 0x6c, 0x15ef: 0x6d,
+-	0x15f0: 0x6e, 0x15f1: 0x6f, 0x15f3: 0x70, 0x15f4: 0x71, 0x15f5: 0x72, 0x15f6: 0x73, 0x15f7: 0x74,
+-	0x15f8: 0x75, 0x15f9: 0x1c8, 0x15fa: 0x77, 0x15fb: 0x78, 0x15fc: 0x79, 0x15fd: 0x7a, 0x15fe: 0x7b, 0x15ff: 0x7c,
+-	// Block 0x58, offset 0x1600
+-	0x1602: 0x01, 0x1603: 0x26a, 0x1604: 0x03, 0x1605: 0x26b, 0x1606: 0x05, 0x1607: 0x26c,
+-	0x1608: 0x26d, 0x1609: 0x08, 0x160a: 0x09, 0x160b: 0x0a, 0x160c: 0x0b, 0x160d: 0x0c, 0x160e: 0x0d, 0x160f: 0x0e,
+-	0x1610: 0x0f, 0x1611: 0x10, 0x1612: 0x11, 0x1613: 0x12, 0x1614: 0x13, 0x1615: 0x14, 0x1616: 0x15, 0x1617: 0x16,
+-	0x1618: 0x17, 0x1619: 0x18, 0x161a: 0x19, 0x161b: 0x1a, 0x161c: 0x1b, 0x161d: 0x1c, 0x161e: 0x1d, 0x161f: 0x1e,
+-	0x1620: 0x01, 0x1621: 0x55, 0x1622: 0x03, 0x1623: 0x04, 0x1624: 0x05,
+-	0x162a: 0x06, 0x162d: 0x07, 0x162f: 0x08,
+-	0x1630: 0x13, 0x1633: 0x15,
+-	// Block 0x59, offset 0x1640
+-	0x1642: 0x01, 0x1643: 0x02, 0x1644: 0x03, 0x1645: 0x04, 0x1646: 0x05, 0x1647: 0x06,
+-	0x1648: 0x07, 0x1649: 0x08, 0x164a: 0x09, 0x164b: 0x0a, 0x164c: 0x0b, 0x164d: 0x0c, 0x164e: 0x0d, 0x164f: 0x0e,
+-	0x1650: 0x0f, 0x1651: 0x10, 0x1652: 0x11, 0x1653: 0x12, 0x1654: 0x26e, 0x1655: 0x14, 0x1656: 0x26f, 0x1657: 0x16,
+-	0x1658: 0x17, 0x1659: 0x18, 0x165a: 0x19, 0x165b: 0x1a, 0x165c: 0x1b, 0x165d: 0x1c, 0x165e: 0x1d, 0x165f: 0x1e,
+-	0x1660: 0x01, 0x1661: 0x02, 0x1662: 0x03, 0x1663: 0x04, 0x1664: 0x05,
+-	0x166a: 0x06, 0x166d: 0x07, 0x166f: 0x08,
+-	0x1670: 0x13, 0x1673: 0x15,
+-	// Block 0x5a, offset 0x1680
+-	0x1680: 0x3f, 0x1681: 0x40, 0x1682: 0x41, 0x1683: 0x42, 0x1684: 0x43, 0x1685: 0x44, 0x1686: 0x45, 0x1687: 0x46,
+-	0x1688: 0x47, 0x1689: 0x48, 0x168a: 0x49, 0x168b: 0x4a, 0x168c: 0x4b, 0x168d: 0x4c, 0x168e: 0x4d, 0x168f: 0x4e,
+-	0x1690: 0x4f, 0x1691: 0x50, 0x1692: 0x51, 0x1693: 0x52, 0x1694: 0x53, 0x1695: 0x54, 0x1696: 0x55, 0x1697: 0x56,
+-	0x1698: 0x57, 0x1699: 0x58, 0x169a: 0x59, 0x169b: 0x5a, 0x169c: 0x5b, 0x169d: 0x5c, 0x169e: 0x5d, 0x169f: 0x5e,
+-	0x16a0: 0x5f, 0x16a1: 0x60, 0x16a2: 0x61, 0x16a3: 0x62, 0x16a4: 0x63, 0x16a5: 0x64, 0x16a6: 0x65, 0x16a7: 0x66,
+-	0x16a8: 0x67, 0x16a9: 0x68, 0x16aa: 0x69, 0x16ac: 0x6a, 0x16ad: 0x6b, 0x16ae: 0x6c, 0x16af: 0x6d,
+-	0x16b0: 0x6e, 0x16b1: 0x6f, 0x16b3: 0x70, 0x16b4: 0x71, 0x16b5: 0x72, 0x16b6: 0x73, 0x16b7: 0x74,
+-	0x16b8: 0x75, 0x16b9: 0x272, 0x16ba: 0x77, 0x16bb: 0x273, 0x16bc: 0x79, 0x16bd: 0x7a, 0x16be: 0x7b, 0x16bf: 0x7c,
+-	// Block 0x5b, offset 0x16c0
+-	0x16c2: 0x01, 0x16c3: 0x02, 0x16c4: 0x03, 0x16c5: 0x04, 0x16c6: 0x05, 0x16c7: 0x06,
+-	0x16c8: 0x07, 0x16c9: 0x08, 0x16ca: 0x09, 0x16cb: 0x0a, 0x16cc: 0x0b, 0x16cd: 0x0c, 0x16ce: 0x0d, 0x16cf: 0x0e,
+-	0x16d0: 0x0f, 0x16d1: 0x10, 0x16d2: 0x11, 0x16d3: 0x12, 0x16d4: 0x13, 0x16d5: 0x14, 0x16d6: 0x15, 0x16d7: 0x16,
+-	0x16d8: 0x17, 0x16d9: 0x18, 0x16da: 0x19, 0x16db: 0x1a, 0x16dc: 0x1b, 0x16dd: 0x1c, 0x16de: 0x1d, 0x16df: 0x1e,
+-	0x16e0: 0x01, 0x16e1: 0x58, 0x16e2: 0x03, 0x16e3: 0x04, 0x16e4: 0x05,
+-	0x16ea: 0x06, 0x16ed: 0x07, 0x16ef: 0x08,
+-	0x16f0: 0x13, 0x16f3: 0x15,
+-	// Block 0x5c, offset 0x1700
+-	0x1700: 0x3f, 0x1701: 0x40, 0x1702: 0x41, 0x1703: 0x42, 0x1704: 0x43, 0x1705: 0x44, 0x1706: 0x45, 0x1707: 0x46,
+-	0x1708: 0x47, 0x1709: 0x48, 0x170a: 0x49, 0x170b: 0x4a, 0x170c: 0x4b, 0x170d: 0x4c, 0x170e: 0x4d, 0x170f: 0x4e,
+-	0x1710: 0x4f, 0x1711: 0x50, 0x1712: 0x51, 0x1713: 0x52, 0x1714: 0x53, 0x1715: 0x54, 0x1716: 0x55, 0x1717: 0x56,
+-	0x1718: 0x57, 0x1719: 0x58, 0x171a: 0x59, 0x171b: 0x5a, 0x171c: 0x5b, 0x171d: 0x5c, 0x171e: 0x5d, 0x171f: 0x5e,
+-	0x1720: 0x5f, 0x1721: 0x60, 0x1722: 0x61, 0x1723: 0x62, 0x1724: 0x63, 0x1725: 0x64, 0x1726: 0x65, 0x1727: 0x66,
+-	0x1728: 0x67, 0x1729: 0x68, 0x172a: 0x69, 0x172c: 0x6a, 0x172d: 0x6b, 0x172e: 0x6c, 0x172f: 0x6d,
+-	0x1730: 0x6e, 0x1731: 0x6f, 0x1733: 0x70, 0x1734: 0x71, 0x1735: 0x72, 0x1736: 0x1e5, 0x1737: 0x74,
+-	0x1738: 0x27a, 0x1739: 0x27b, 0x173a: 0x27c, 0x173b: 0x27d, 0x173c: 0x79, 0x173d: 0x7a, 0x173e: 0x7b, 0x173f: 0x7c,
+-	// Block 0x5d, offset 0x1740
+-	0x1742: 0x01, 0x1743: 0x276, 0x1744: 0x277, 0x1745: 0x04, 0x1746: 0x05, 0x1747: 0x278,
+-	0x1748: 0x279, 0x1749: 0x08, 0x174a: 0x09, 0x174b: 0x0a, 0x174c: 0x0b, 0x174d: 0x0c, 0x174e: 0x0d, 0x174f: 0x0e,
+-	0x1750: 0x0f, 0x1751: 0x10, 0x1752: 0x11, 0x1753: 0x12, 0x1754: 0x13, 0x1755: 0x14, 0x1756: 0x15, 0x1757: 0x16,
+-	0x1758: 0x17, 0x1759: 0x18, 0x175a: 0x19, 0x175b: 0x1a, 0x175c: 0x1b, 0x175d: 0x1c, 0x175e: 0x1d, 0x175f: 0x1e,
+-	0x1760: 0x01, 0x1761: 0x5a, 0x1762: 0x29, 0x1763: 0x04, 0x1764: 0x05,
+-	0x176a: 0x06, 0x176d: 0x07, 0x176f: 0x08,
+-	0x1770: 0x13, 0x1773: 0x15,
+-	// Block 0x5e, offset 0x1780
+-	0x1780: 0x27e, 0x1781: 0x27f, 0x1782: 0x280, 0x1783: 0x281, 0x1784: 0x282, 0x1785: 0x283, 0x1786: 0xc0, 0x1787: 0x284,
+-	0x1788: 0x285, 0x1789: 0x286, 0x178a: 0xc4, 0x178b: 0x287, 0x178c: 0xc6, 0x178d: 0x288, 0x178e: 0xc8, 0x178f: 0x289,
+-	// Block 0x5f, offset 0x17c0
+-	0x17f7: 0xca,
+-	0x17f8: 0x28a, 0x17f9: 0x28b, 0x17fa: 0x28c, 0x17fb: 0x28d, 0x17fc: 0x28e, 0x17fd: 0x28f, 0x17fe: 0x290, 0x17ff: 0x291,
+-	// Block 0x60, offset 0x1800
+-	0x1800: 0x292, 0x1801: 0x293, 0x1802: 0x294, 0x1803: 0x295, 0x1804: 0x296, 0x1805: 0x297, 0x1806: 0x298, 0x1807: 0x299,
+-	0x1808: 0x29a, 0x1809: 0x29b, 0x180a: 0x29c, 0x180b: 0x29d, 0x180c: 0x29e, 0x180d: 0x29f, 0x180e: 0x2a0, 0x180f: 0x2a1,
+-	0x1810: 0x2a2, 0x1811: 0x2a3, 0x1812: 0x2a4, 0x1813: 0x2a5, 0x1814: 0x2a6, 0x1815: 0x2a7, 0x1816: 0x2a8, 0x1817: 0x2a9,
+-	0x1818: 0x2aa, 0x1819: 0x2ab, 0x181a: 0x2ac, 0x181b: 0x2ad, 0x181c: 0x2ae, 0x181d: 0x2af, 0x181e: 0x2b0, 0x181f: 0x2b1,
+-	0x1820: 0x2b2, 0x1821: 0x2b3, 0x1822: 0x2b4, 0x1823: 0x2b5, 0x1824: 0x2b6, 0x1825: 0x2b7, 0x1826: 0x2b8, 0x1827: 0x2b9,
+-	0x1828: 0x2ba, 0x1829: 0x2bb, 0x182a: 0x2bc, 0x182b: 0x2bd, 0x182c: 0x2be, 0x182d: 0x2bf, 0x182e: 0x2c0, 0x182f: 0x2c1,
+-	0x1830: 0x2c2, 0x1831: 0x2c3, 0x1832: 0x2c4, 0x1833: 0x2c5, 0x1834: 0x2c6, 0x1835: 0x2c7, 0x1836: 0x2c8, 0x1837: 0x2c9,
+-	0x1838: 0x2ca, 0x1839: 0x2cb, 0x183a: 0x2cc, 0x183b: 0x2cd, 0x183c: 0x2ce, 0x183d: 0x2cf, 0x183e: 0x2d0, 0x183f: 0x2d1,
+-	// Block 0x61, offset 0x1840
+-	0x1840: 0x2d2, 0x1841: 0x2d3, 0x1842: 0x2d4, 0x1843: 0x2d5, 0x1844: 0x2d6, 0x1845: 0x2d7, 0x1846: 0x2d8, 0x1847: 0x2d9,
+-	0x1848: 0x2da, 0x1849: 0x2db, 0x184a: 0x2dc, 0x184b: 0x2dd, 0x184c: 0x2de, 0x184d: 0x2df, 0x184e: 0x2e0, 0x184f: 0x2e1,
+-	0x1850: 0x2e2, 0x1851: 0x2e3, 0x1852: 0x2e4, 0x1853: 0x2e5, 0x1854: 0x2e6, 0x1855: 0x2e7, 0x1856: 0x2e8, 0x1857: 0x2e9,
+-	0x1858: 0x2ea, 0x1859: 0x2eb, 0x185a: 0x2ec, 0x185b: 0x2ed, 0x185c: 0x2ee, 0x185d: 0x2ef, 0x185e: 0x2f0, 0x185f: 0x2f1,
+-	0x1860: 0x2f2, 0x1861: 0x2f3, 0x1862: 0x2f4, 0x1863: 0x2f5, 0x1864: 0x2f6, 0x1865: 0x2f7, 0x1866: 0x2f8, 0x1867: 0x2f9,
+-	0x1868: 0x2fa, 0x1869: 0x2fb, 0x186a: 0x2fc, 0x186b: 0x2fd, 0x186c: 0x2fe, 0x186d: 0x2ff, 0x186e: 0x300, 0x186f: 0x301,
+-	0x1870: 0x302, 0x1871: 0x303, 0x1872: 0x304, 0x1873: 0x305, 0x1874: 0x306, 0x1875: 0x307, 0x1876: 0x308, 0x1877: 0x309,
+-	0x1878: 0x30a, 0x1879: 0x30b, 0x187a: 0x30c, 0x187b: 0x30d, 0x187c: 0x30e, 0x187d: 0x30f, 0x187e: 0x310, 0x187f: 0x311,
+-	// Block 0x62, offset 0x1880
+-	0x1880: 0x312, 0x1881: 0x313, 0x1882: 0x314, 0x1883: 0x315, 0x1884: 0x316, 0x1885: 0x317, 0x1886: 0x318, 0x1887: 0x319,
+-	0x1888: 0x31a, 0x1889: 0x31b, 0x188a: 0x31c, 0x188b: 0x31d, 0x188c: 0x31e, 0x188d: 0x31f, 0x188e: 0x320, 0x188f: 0x321,
+-	0x1890: 0x322, 0x1891: 0x323, 0x1892: 0x324, 0x1893: 0x325, 0x1894: 0x326, 0x1895: 0x327, 0x1896: 0x328, 0x1897: 0x329,
+-	0x1898: 0x32a, 0x1899: 0x32b, 0x189a: 0x32c, 0x189b: 0x32d, 0x189c: 0x32e, 0x189d: 0x32f, 0x189e: 0x330, 0x189f: 0x331,
+-	0x18a0: 0x332, 0x18a1: 0x333, 0x18a2: 0x334, 0x18a3: 0x335, 0x18a4: 0x336, 0x18a5: 0x337, 0x18a6: 0x338, 0x18a7: 0x339,
+-	0x18a8: 0x33a, 0x18a9: 0x33b, 0x18aa: 0x33c, 0x18ab: 0x33d, 0x18ac: 0x33e, 0x18ad: 0x33f, 0x18ae: 0x340, 0x18af: 0x341,
+-	0x18b0: 0x342, 0x18b1: 0x343, 0x18b2: 0x344, 0x18b3: 0x345, 0x18b4: 0x346, 0x18b5: 0x347, 0x18b6: 0x348, 0x18b7: 0x349,
+-	0x18b8: 0x34a, 0x18b9: 0x34b, 0x18ba: 0x34c, 0x18bc: 0x34d, 0x18bd: 0x34e, 0x18be: 0x34f, 0x18bf: 0x350,
+-	// Block 0x63, offset 0x18c0
+-	0x18c0: 0x351, 0x18c1: 0x352, 0x18c2: 0x353, 0x18c3: 0x354, 0x18c4: 0x355, 0x18c5: 0x356, 0x18c6: 0x357, 0x18c7: 0x358,
+-	0x18c8: 0x359, 0x18c9: 0x35a, 0x18ca: 0x35b, 0x18cb: 0x35c, 0x18cc: 0x35d, 0x18cd: 0x35e, 0x18ce: 0x35f, 0x18cf: 0x360,
+-	0x18d0: 0x361, 0x18d1: 0x362, 0x18d2: 0x363, 0x18d3: 0x364, 0x18d4: 0x365, 0x18d5: 0x366, 0x18d6: 0x367, 0x18d7: 0x368,
+-	0x18d8: 0x369, 0x18d9: 0x36a, 0x18da: 0x36b, 0x18db: 0x36c, 0x18dc: 0x36d, 0x18dd: 0x36e, 0x18de: 0x36f, 0x18df: 0x370,
+-	0x18e0: 0x371, 0x18e1: 0x372, 0x18e2: 0x373, 0x18e3: 0x374, 0x18e4: 0x375, 0x18e5: 0x376, 0x18e6: 0x377, 0x18e7: 0x378,
+-	0x18e8: 0x379, 0x18e9: 0x37a, 0x18ea: 0x37b, 0x18eb: 0x37c, 0x18ec: 0x37d, 0x18ed: 0x37e, 0x18ee: 0x37f,
+-	0x18f0: 0x380, 0x18f1: 0x381, 0x18f2: 0x382, 0x18f3: 0x383, 0x18f4: 0x384, 0x18f5: 0x385, 0x18f6: 0x386, 0x18f7: 0x387,
+-	0x18f8: 0x388, 0x18f9: 0x389, 0x18fa: 0x38a, 0x18fb: 0x38b, 0x18fc: 0x38c, 0x18fd: 0x38d, 0x18fe: 0x38e, 0x18ff: 0x38f,
+-	// Block 0x64, offset 0x1900
+-	0x1900: 0x390, 0x1901: 0x391, 0x1902: 0x392, 0x1903: 0x393, 0x1904: 0x394, 0x1905: 0x395, 0x1906: 0x396, 0x1907: 0x397,
+-	0x1908: 0x398, 0x1909: 0x399, 0x190a: 0x39a, 0x190b: 0x39b, 0x190c: 0x39c, 0x190d: 0x39d, 0x190e: 0x39e, 0x190f: 0x39f,
+-	0x1910: 0x3a0, 0x1911: 0x3a1, 0x1912: 0x3a2, 0x1915: 0x3a3, 0x1916: 0x3a4, 0x1917: 0x3a5,
+-	0x1918: 0x3a6, 0x1919: 0x3a7, 0x191a: 0x3a8, 0x191b: 0x3a9, 0x191c: 0x3aa, 0x191d: 0x3ab, 0x191e: 0x3ac, 0x191f: 0x3ad,
+-	0x1920: 0x3ae, 0x1921: 0x3af, 0x1922: 0x3b0, 0x1923: 0x3b1, 0x1924: 0x3b2, 0x1925: 0x3b3, 0x1926: 0x3b4, 0x1927: 0x3b5,
+-	0x1928: 0x3b6, 0x1929: 0x3b7, 0x192a: 0x3b8, 0x192b: 0x3b9, 0x192c: 0x3ba, 0x192d: 0x3bb, 0x192e: 0x3bc, 0x192f: 0x3bd,
+-	0x1930: 0x3be, 0x1931: 0x3bf, 0x1933: 0x3c0, 0x1934: 0x3c1, 0x1935: 0x3c2, 0x1936: 0x3c3, 0x1937: 0x3c4,
+-	0x1938: 0x3c5, 0x1939: 0x3c6, 0x193a: 0x3c7, 0x193b: 0x3c8, 0x193c: 0x3c9, 0x193d: 0x3ca, 0x193e: 0x3cb,
+-	// Block 0x65, offset 0x1940
+-	0x1964: 0x3cc, 0x1965: 0x3cd, 0x1966: 0x3ce, 0x1967: 0x3cf,
+-	0x1968: 0x3d0, 0x1969: 0x3d1, 0x196a: 0x3d2, 0x196b: 0x3d3, 0x196c: 0x103, 0x196d: 0x104, 0x196e: 0x105, 0x196f: 0x106,
+-	0x1970: 0x107, 0x1971: 0x108, 0x1972: 0x109, 0x1973: 0x10a, 0x1974: 0x10b, 0x1975: 0x10c, 0x1976: 0x10d, 0x1977: 0x10e,
+-	0x1978: 0x10f, 0x1979: 0x110, 0x197a: 0x111, 0x197b: 0x112, 0x197c: 0x3d4, 0x197d: 0x3d5, 0x197e: 0x3d6, 0x197f: 0x3d7,
+-	// Block 0x66, offset 0x1980
+-	0x1980: 0x18b, 0x1981: 0x18c, 0x1982: 0x18d, 0x1983: 0x18e, 0x1984: 0x18f, 0x1985: 0x190, 0x1986: 0x191, 0x1987: 0x192,
+-	0x1988: 0x193, 0x1989: 0x3d8, 0x198c: 0x195, 0x198d: 0x196, 0x198e: 0x197, 0x198f: 0x198,
+-	0x1990: 0x199, 0x1991: 0x19a, 0x1992: 0x19b, 0x1993: 0x19c, 0x1994: 0x19d, 0x1995: 0x19e, 0x1997: 0x19f,
+-	0x1998: 0x1a0, 0x1999: 0x1a1, 0x199a: 0x1a2, 0x199b: 0x1a3, 0x199c: 0x1a4, 0x199d: 0x1a5,
+-	// Block 0x67, offset 0x19c0
+-	0x19e0: 0x3d9, 0x19e1: 0x3da, 0x19e2: 0x3db, 0x19e3: 0x3dc, 0x19e4: 0x3dd, 0x19e5: 0x3de, 0x19e6: 0x3df, 0x19e7: 0x3e0,
+-	0x19e8: 0x3e1,
+-	// Block 0x68, offset 0x1a00
+-	0x1a10: 0x09, 0x1a11: 0x0a, 0x1a12: 0x0b, 0x1a13: 0x0c, 0x1a16: 0x0d,
+-	0x1a1b: 0x0e, 0x1a1d: 0x0f, 0x1a1e: 0x10, 0x1a1f: 0x64,
+-	0x1a2f: 0x65,
+-	// Block 0x69, offset 0x1a40
+-	0x1a42: 0x01, 0x1a43: 0x02, 0x1a44: 0x03, 0x1a45: 0x04, 0x1a46: 0x05, 0x1a47: 0x06,
+-	0x1a48: 0x07, 0x1a49: 0x08, 0x1a4a: 0x09, 0x1a4b: 0x0a, 0x1a4c: 0x0b, 0x1a4d: 0x0c, 0x1a4e: 0x0d, 0x1a4f: 0x0e,
+-	0x1a50: 0x0f, 0x1a51: 0x10, 0x1a52: 0x11, 0x1a53: 0x12, 0x1a54: 0x13, 0x1a55: 0x14, 0x1a56: 0x15, 0x1a57: 0x16,
+-	0x1a58: 0x17, 0x1a59: 0x18, 0x1a5a: 0x19, 0x1a5b: 0x1a, 0x1a5c: 0x1b, 0x1a5d: 0x1c, 0x1a5e: 0x1d, 0x1a5f: 0x1e,
+-	0x1a60: 0x01, 0x1a61: 0x02, 0x1a62: 0x03, 0x1a63: 0x5c, 0x1a64: 0x5d, 0x1a65: 0x5e, 0x1a66: 0x5f, 0x1a67: 0x60,
+-	0x1a68: 0x61, 0x1a69: 0x62, 0x1a6a: 0x06, 0x1a6d: 0x07, 0x1a6f: 0x63,
+-	0x1a70: 0x66, 0x1a73: 0x15,
+-	// Block 0x6a, offset 0x1a80
+-	0x1a82: 0x01, 0x1a83: 0x02, 0x1a84: 0x03, 0x1a85: 0x04, 0x1a86: 0x05, 0x1a87: 0x06,
+-	0x1a88: 0x07, 0x1a89: 0x08, 0x1a8a: 0x09, 0x1a8b: 0x0a, 0x1a8c: 0x0b, 0x1a8d: 0x0c, 0x1a8e: 0x0d, 0x1a8f: 0x0e,
+-	0x1a90: 0x3e2, 0x1a91: 0x3e3, 0x1a92: 0x3e4, 0x1a93: 0x12, 0x1a94: 0x13, 0x1a95: 0x14, 0x1a96: 0x15, 0x1a97: 0x16,
+-	0x1a98: 0x17, 0x1a99: 0x18, 0x1a9a: 0x19, 0x1a9b: 0x1a, 0x1a9c: 0x1b, 0x1a9d: 0x1c, 0x1a9e: 0x1d, 0x1a9f: 0x1e,
+-	0x1aa0: 0x01, 0x1aa1: 0x02, 0x1aa2: 0x03, 0x1aa3: 0x04, 0x1aa4: 0x05,
+-	0x1aaa: 0x06, 0x1aad: 0x07, 0x1aaf: 0x08,
+-	0x1ab0: 0x13, 0x1ab3: 0x15,
+-	// Block 0x6b, offset 0x1ac0
+-	0x1ac2: 0x01, 0x1ac3: 0x1e0, 0x1ac4: 0x3e7, 0x1ac5: 0x1e2, 0x1ac6: 0x05, 0x1ac7: 0x1e3,
+-	0x1ac8: 0x1e4, 0x1ac9: 0x08, 0x1aca: 0x09, 0x1acb: 0x0a, 0x1acc: 0x0b, 0x1acd: 0x0c, 0x1ace: 0x0d, 0x1acf: 0x0e,
+-	0x1ad0: 0x0f, 0x1ad1: 0x10, 0x1ad2: 0x11, 0x1ad3: 0x12, 0x1ad4: 0x13, 0x1ad5: 0x14, 0x1ad6: 0x15, 0x1ad7: 0x16,
+-	0x1ad8: 0x17, 0x1ad9: 0x18, 0x1ada: 0x19, 0x1adb: 0x1a, 0x1adc: 0x1b, 0x1add: 0x1c, 0x1ade: 0x1d, 0x1adf: 0x1e,
+-	0x1ae0: 0x01, 0x1ae1: 0x28, 0x1ae2: 0x29, 0x1ae3: 0x04, 0x1ae4: 0x05,
+-	0x1aea: 0x06, 0x1aed: 0x07, 0x1aef: 0x08,
+-	0x1af0: 0x13, 0x1af3: 0x15,
+-	// Block 0x6c, offset 0x1b00
+-	0x1b00: 0x3f, 0x1b01: 0x40, 0x1b02: 0x41, 0x1b03: 0x42, 0x1b04: 0x43, 0x1b05: 0x44, 0x1b06: 0x45, 0x1b07: 0x46,
+-	0x1b08: 0x47, 0x1b09: 0x48, 0x1b0a: 0x49, 0x1b0b: 0x4a, 0x1b0c: 0x4b, 0x1b0d: 0x4c, 0x1b0e: 0x4d, 0x1b0f: 0x4e,
+-	0x1b10: 0x4f, 0x1b11: 0x50, 0x1b12: 0x51, 0x1b13: 0x52, 0x1b14: 0x53, 0x1b15: 0x54, 0x1b16: 0x55, 0x1b17: 0x56,
+-	0x1b18: 0x57, 0x1b19: 0x58, 0x1b1a: 0x59, 0x1b1b: 0x5a, 0x1b1c: 0x5b, 0x1b1d: 0x5c, 0x1b1e: 0x3e8, 0x1b1f: 0x3e9,
+-	0x1b20: 0x5f, 0x1b21: 0x60, 0x1b22: 0x61, 0x1b23: 0x62, 0x1b24: 0x63, 0x1b25: 0x64, 0x1b26: 0x65, 0x1b27: 0x66,
+-	0x1b28: 0x67, 0x1b29: 0x68, 0x1b2a: 0x69, 0x1b2c: 0x6a, 0x1b2d: 0x6b, 0x1b2e: 0x6c, 0x1b2f: 0x6d,
+-	0x1b30: 0x6e, 0x1b31: 0x6f, 0x1b33: 0x70, 0x1b34: 0x71, 0x1b35: 0x72, 0x1b36: 0x73, 0x1b37: 0x74,
+-	0x1b38: 0x75, 0x1b39: 0x76, 0x1b3a: 0x77, 0x1b3b: 0x78, 0x1b3c: 0x79, 0x1b3d: 0x7a, 0x1b3e: 0x7b, 0x1b3f: 0x7c,
+-	// Block 0x6d, offset 0x1b40
+-	0x1b42: 0x01, 0x1b43: 0x02, 0x1b44: 0x03, 0x1b45: 0x04, 0x1b46: 0x05, 0x1b47: 0x06,
+-	0x1b48: 0x07, 0x1b49: 0x08, 0x1b4a: 0x09, 0x1b4b: 0x0a, 0x1b4c: 0x0b, 0x1b4d: 0x0c, 0x1b4e: 0x0d, 0x1b4f: 0x0e,
+-	0x1b50: 0x0f, 0x1b51: 0x10, 0x1b52: 0x11, 0x1b53: 0x12, 0x1b54: 0x13, 0x1b55: 0x14, 0x1b56: 0x15, 0x1b57: 0x16,
+-	0x1b58: 0x17, 0x1b59: 0x18, 0x1b5a: 0x19, 0x1b5b: 0x1a, 0x1b5c: 0x1b, 0x1b5d: 0x1c, 0x1b5e: 0x1d, 0x1b5f: 0x1e,
+-	0x1b60: 0x01, 0x1b61: 0x6a, 0x1b62: 0x03, 0x1b63: 0x04, 0x1b64: 0x05,
+-	0x1b6a: 0x06, 0x1b6d: 0x07, 0x1b6f: 0x08,
+-	0x1b70: 0x13, 0x1b73: 0x15,
+-	// Block 0x6e, offset 0x1b80
+-	0x1ba0: 0x1f, 0x1ba1: 0x20, 0x1ba2: 0x21, 0x1ba3: 0x22, 0x1ba4: 0x23, 0x1ba5: 0x24, 0x1ba6: 0x25, 0x1ba7: 0x26,
+-	0x1ba8: 0x27, 0x1ba9: 0x28, 0x1baa: 0x29, 0x1bab: 0x2a, 0x1bac: 0x2b, 0x1bad: 0x2c, 0x1bae: 0x2d, 0x1baf: 0x2e,
+-	0x1bb0: 0x2f, 0x1bb1: 0x30, 0x1bb2: 0x3ea, 0x1bb3: 0x3eb, 0x1bb4: 0x33, 0x1bb5: 0x34, 0x1bb6: 0x35, 0x1bb7: 0x36,
+-	0x1bb8: 0x37, 0x1bb9: 0x38, 0x1bba: 0x39, 0x1bbb: 0x3a, 0x1bbc: 0x3b, 0x1bbd: 0x3c, 0x1bbe: 0x3d, 0x1bbf: 0x3e,
+-	// Block 0x6f, offset 0x1bc0
+-	0x1bc2: 0x01, 0x1bc3: 0x02, 0x1bc4: 0x03, 0x1bc5: 0x04, 0x1bc6: 0x05, 0x1bc7: 0x06,
+-	0x1bc8: 0x07, 0x1bc9: 0x08, 0x1bca: 0x09, 0x1bcb: 0x0a, 0x1bcc: 0x0b, 0x1bcd: 0x0c, 0x1bce: 0x0d, 0x1bcf: 0x0e,
+-	0x1bd0: 0x0f, 0x1bd1: 0x10, 0x1bd2: 0x11, 0x1bd3: 0x12, 0x1bd4: 0x13, 0x1bd5: 0x14, 0x1bd6: 0x15, 0x1bd7: 0x16,
+-	0x1bd8: 0x17, 0x1bd9: 0x18, 0x1bda: 0x19, 0x1bdb: 0x1a, 0x1bdc: 0x1b, 0x1bdd: 0x1c, 0x1bde: 0x1d, 0x1bdf: 0x1e,
+-	0x1be0: 0x6c, 0x1be1: 0x02, 0x1be2: 0x03, 0x1be3: 0x04, 0x1be4: 0x05,
+-	0x1bea: 0x06, 0x1bed: 0x07, 0x1bef: 0x08,
+-	0x1bf0: 0x13, 0x1bf3: 0x15,
+-	// Block 0x70, offset 0x1c00
+-	0x1c00: 0xba, 0x1c01: 0xbb, 0x1c02: 0xbc, 0x1c03: 0xbd, 0x1c04: 0xbe, 0x1c05: 0xbf, 0x1c06: 0xc0, 0x1c07: 0xc1,
+-	0x1c08: 0x3ec, 0x1c09: 0x286, 0x1c0a: 0xc4, 0x1c0b: 0x287, 0x1c0c: 0xc6, 0x1c0d: 0x288, 0x1c0e: 0xc8, 0x1c0f: 0x289,
+-	// Block 0x71, offset 0x1c40
+-	0x1c77: 0xca,
+-	0x1c78: 0x3ed, 0x1c79: 0x3ee, 0x1c7a: 0x3ef, 0x1c7b: 0x3f0, 0x1c7c: 0x3f1, 0x1c7d: 0x3f2, 0x1c7e: 0x3f3, 0x1c7f: 0x3f4,
+-	// Block 0x72, offset 0x1c80
+-	0x1c80: 0x3f5, 0x1c81: 0x3f6, 0x1c82: 0x3f7, 0x1c83: 0x3f8, 0x1c84: 0x3f9, 0x1c85: 0x3fa, 0x1c86: 0x3fb, 0x1c87: 0x3fc,
+-	0x1c88: 0x3fd, 0x1c89: 0x3fe, 0x1c8a: 0x3ff, 0x1c8b: 0x400, 0x1c8c: 0x401, 0x1c8d: 0x402, 0x1c8e: 0x403, 0x1c8f: 0x404,
+-	0x1c90: 0x405, 0x1c91: 0x406, 0x1c92: 0x407, 0x1c93: 0x408, 0x1c94: 0x409, 0x1c95: 0x40a, 0x1c96: 0x40b, 0x1c97: 0x40c,
+-	0x1c98: 0x40d, 0x1c99: 0x40e, 0x1c9a: 0x40f, 0x1c9b: 0x410, 0x1c9c: 0x411, 0x1c9d: 0x412, 0x1c9e: 0x413, 0x1c9f: 0x414,
+-	0x1ca0: 0x415, 0x1ca1: 0x416, 0x1ca2: 0x417, 0x1ca3: 0x418, 0x1ca4: 0x419, 0x1ca5: 0x41a, 0x1ca6: 0x41b, 0x1ca7: 0x41c,
+-	0x1ca8: 0x41d, 0x1ca9: 0x41e, 0x1caa: 0x41f, 0x1cab: 0x420, 0x1cac: 0x421, 0x1cad: 0x422, 0x1cae: 0x423, 0x1caf: 0x424,
+-	0x1cb0: 0x425, 0x1cb1: 0x426, 0x1cb2: 0x427, 0x1cb3: 0x428, 0x1cb4: 0x429, 0x1cb5: 0x42a, 0x1cb6: 0x42b, 0x1cb7: 0x42c,
+-	0x1cb8: 0x42d, 0x1cb9: 0x42e, 0x1cba: 0x42f, 0x1cbb: 0x430, 0x1cbc: 0x431, 0x1cbd: 0x432, 0x1cbe: 0x433, 0x1cbf: 0x434,
+-	// Block 0x73, offset 0x1cc0
+-	0x1cc0: 0x435, 0x1cc1: 0x436, 0x1cc2: 0x437, 0x1cc3: 0x438, 0x1cc4: 0x439, 0x1cc5: 0x43a, 0x1cc6: 0x43b, 0x1cc7: 0x43c,
+-	0x1cc8: 0x43d, 0x1cc9: 0x43e, 0x1cca: 0x43f, 0x1ccb: 0x440, 0x1ccc: 0x441, 0x1ccd: 0x442, 0x1cce: 0x443, 0x1ccf: 0x444,
+-	0x1cd0: 0x445, 0x1cd1: 0x446, 0x1cd2: 0x447, 0x1cd3: 0x448, 0x1cd4: 0x449, 0x1cd5: 0x44a, 0x1cd6: 0x44b, 0x1cd7: 0x44c,
+-	0x1cd8: 0x44d, 0x1cd9: 0x44e, 0x1cda: 0x44f, 0x1cdb: 0x450, 0x1cdc: 0x451, 0x1cdd: 0x452, 0x1cde: 0x453, 0x1cdf: 0x454,
+-	0x1ce0: 0x455, 0x1ce1: 0x456, 0x1ce2: 0x457, 0x1ce3: 0x458, 0x1ce4: 0x459, 0x1ce5: 0x45a, 0x1ce6: 0x45b, 0x1ce7: 0x45c,
+-	0x1ce8: 0x45d, 0x1ce9: 0x45e, 0x1cea: 0x45f, 0x1ceb: 0x460, 0x1cec: 0x461, 0x1ced: 0x462, 0x1cee: 0x463, 0x1cef: 0x464,
+-	0x1cf0: 0x465, 0x1cf1: 0x466, 0x1cf2: 0x467, 0x1cf3: 0x468, 0x1cf4: 0x469, 0x1cf5: 0x46a, 0x1cf6: 0x46b, 0x1cf7: 0x46c,
+-	0x1cf8: 0x46d, 0x1cf9: 0x46e, 0x1cfa: 0x46f, 0x1cfb: 0x470, 0x1cfc: 0x471, 0x1cfd: 0x472, 0x1cfe: 0x473, 0x1cff: 0x474,
+-	// Block 0x74, offset 0x1d00
+-	0x1d00: 0x475, 0x1d01: 0x476, 0x1d02: 0x477, 0x1d03: 0x478, 0x1d04: 0x479, 0x1d05: 0x47a, 0x1d06: 0x47b, 0x1d07: 0x47c,
+-	0x1d08: 0x47d, 0x1d09: 0x47e, 0x1d0a: 0x47f, 0x1d0b: 0x480, 0x1d0c: 0x481, 0x1d0d: 0x482, 0x1d0e: 0x483, 0x1d0f: 0x484,
+-	0x1d10: 0x485, 0x1d11: 0x486, 0x1d12: 0x487, 0x1d13: 0x488, 0x1d14: 0x489, 0x1d15: 0x48a, 0x1d16: 0x48b, 0x1d17: 0x48c,
+-	0x1d18: 0x48d, 0x1d19: 0x48e, 0x1d1a: 0x48f, 0x1d1b: 0x490, 0x1d1c: 0x491, 0x1d1d: 0x492, 0x1d1e: 0x493, 0x1d1f: 0x494,
+-	0x1d20: 0x495, 0x1d21: 0x496, 0x1d22: 0x497, 0x1d23: 0x498, 0x1d24: 0x499, 0x1d25: 0x49a, 0x1d26: 0x49b, 0x1d27: 0x49c,
+-	0x1d28: 0x49d, 0x1d29: 0x49e, 0x1d2a: 0x49f, 0x1d2b: 0x4a0, 0x1d2c: 0x4a1, 0x1d2d: 0x4a2, 0x1d2e: 0x4a3, 0x1d2f: 0x4a4,
+-	0x1d30: 0x4a5, 0x1d31: 0x4a6, 0x1d32: 0x4a7, 0x1d33: 0x4a8, 0x1d34: 0x4a9, 0x1d35: 0x4aa, 0x1d36: 0x4ab, 0x1d37: 0x4ac,
+-	0x1d38: 0x4ad, 0x1d39: 0x4ae, 0x1d3a: 0x4af, 0x1d3c: 0x4b0, 0x1d3d: 0x4b1, 0x1d3e: 0x4b2, 0x1d3f: 0x4b3,
+-	// Block 0x75, offset 0x1d40
+-	0x1d40: 0x4b4, 0x1d41: 0x4b5, 0x1d42: 0x4b6, 0x1d43: 0x4b7, 0x1d44: 0x4b8, 0x1d45: 0x4b9, 0x1d46: 0x4ba, 0x1d47: 0x4bb,
+-	0x1d48: 0x4bc, 0x1d49: 0x4bd, 0x1d4a: 0x4be, 0x1d4b: 0x4bf, 0x1d4c: 0x4c0, 0x1d4d: 0x4c1, 0x1d4e: 0x4c2, 0x1d4f: 0x4c3,
+-	0x1d50: 0x4c4, 0x1d51: 0x4c5, 0x1d52: 0x4c6, 0x1d53: 0x4c7, 0x1d54: 0x4c8, 0x1d55: 0x4c9, 0x1d56: 0x4ca, 0x1d57: 0x4cb,
+-	0x1d58: 0x4cc, 0x1d59: 0x4cd, 0x1d5a: 0x4ce, 0x1d5b: 0x4cf, 0x1d5c: 0x4d0, 0x1d5d: 0x4d1, 0x1d5e: 0x4d2, 0x1d5f: 0x4d3,
+-	0x1d60: 0x4d4, 0x1d61: 0x4d5, 0x1d62: 0x4d6, 0x1d63: 0x4d7, 0x1d64: 0x4d8, 0x1d65: 0x4d9, 0x1d66: 0x4da, 0x1d67: 0x4db,
+-	0x1d68: 0x4dc, 0x1d69: 0x4dd, 0x1d6a: 0x4de, 0x1d6b: 0x4df, 0x1d6c: 0x4e0, 0x1d6d: 0x4e1, 0x1d6e: 0x4e2,
+-	0x1d70: 0x4e3, 0x1d71: 0x4e4, 0x1d72: 0x4e5, 0x1d73: 0x4e6, 0x1d74: 0x4e7, 0x1d75: 0x4e8, 0x1d76: 0x4e9, 0x1d77: 0x4ea,
+-	0x1d78: 0x4eb, 0x1d79: 0x4ec, 0x1d7a: 0x4ed, 0x1d7b: 0x4ee, 0x1d7c: 0x4ef, 0x1d7d: 0x4f0, 0x1d7e: 0x4f1, 0x1d7f: 0x4f2,
+-	// Block 0x76, offset 0x1d80
+-	0x1d80: 0x4f3, 0x1d81: 0x4f4, 0x1d82: 0x4f5, 0x1d83: 0x4f6, 0x1d84: 0x4f7, 0x1d85: 0x4f8, 0x1d86: 0x4f9, 0x1d87: 0x4fa,
+-	0x1d88: 0x4fb, 0x1d89: 0x4fc, 0x1d8a: 0x4fd, 0x1d8b: 0x4fe, 0x1d8c: 0x4ff, 0x1d8d: 0x500, 0x1d8e: 0x501, 0x1d8f: 0x502,
+-	0x1d90: 0x503, 0x1d91: 0x504, 0x1d95: 0x505, 0x1d96: 0x506, 0x1d97: 0x507,
+-	0x1d98: 0x508, 0x1d99: 0x509, 0x1d9a: 0x50a, 0x1d9b: 0x50b, 0x1d9c: 0x50c, 0x1d9d: 0x50d, 0x1d9e: 0x50e, 0x1d9f: 0x50f,
+-	0x1da0: 0x510, 0x1da1: 0x511, 0x1da2: 0x512, 0x1da3: 0x513, 0x1da4: 0x514, 0x1da5: 0x515, 0x1da6: 0x516, 0x1da7: 0x517,
+-	0x1da8: 0x518, 0x1da9: 0x519, 0x1daa: 0x51a, 0x1dab: 0x51b, 0x1dac: 0x51c, 0x1dad: 0x51d, 0x1dae: 0x51e, 0x1daf: 0x51f,
+-	0x1db0: 0x520, 0x1db1: 0x521, 0x1db3: 0x522, 0x1db4: 0x523, 0x1db5: 0x524, 0x1db6: 0x525, 0x1db7: 0x526,
+-	0x1db8: 0x527, 0x1db9: 0x528, 0x1dba: 0x529, 0x1dbb: 0x52a, 0x1dbc: 0x52b, 0x1dbd: 0x52c, 0x1dbe: 0x52d,
+-	// Block 0x77, offset 0x1dc0
+-	0x1de4: 0x52e, 0x1de5: 0x52f, 0x1de6: 0x530, 0x1de7: 0x531,
+-	0x1de8: 0x532, 0x1de9: 0x533, 0x1dea: 0x534, 0x1deb: 0x535, 0x1dec: 0x103, 0x1ded: 0x104, 0x1dee: 0x105, 0x1def: 0x106,
+-	0x1df0: 0x107, 0x1df1: 0x108, 0x1df2: 0x109, 0x1df3: 0x10a, 0x1df4: 0x10b, 0x1df5: 0x10c, 0x1df6: 0x10d, 0x1df7: 0x10e,
+-	0x1df8: 0x10f, 0x1df9: 0x110, 0x1dfa: 0x111, 0x1dfb: 0x112, 0x1dfc: 0x113, 0x1dfd: 0x114, 0x1dfe: 0x115, 0x1dff: 0x116,
+-	// Block 0x78, offset 0x1e00
+-	0x1e00: 0x18b, 0x1e01: 0x18c, 0x1e02: 0x18d, 0x1e03: 0x18e, 0x1e04: 0x18f, 0x1e05: 0x190, 0x1e06: 0x191, 0x1e07: 0x192,
+-	0x1e08: 0x193, 0x1e09: 0x536, 0x1e0c: 0x195, 0x1e0d: 0x196, 0x1e0e: 0x197, 0x1e0f: 0x198,
+-	0x1e10: 0x199, 0x1e11: 0x19a, 0x1e12: 0x19b, 0x1e13: 0x19c, 0x1e14: 0x19d, 0x1e15: 0x19e, 0x1e17: 0x19f,
+-	0x1e18: 0x1a0, 0x1e19: 0x1a1, 0x1e1a: 0x1a2, 0x1e1b: 0x1a3, 0x1e1c: 0x1a4, 0x1e1d: 0x1a5,
+-	// Block 0x79, offset 0x1e40
+-	0x1e60: 0x537, 0x1e61: 0x538, 0x1e62: 0x539, 0x1e63: 0x53a, 0x1e64: 0x53b, 0x1e65: 0x53c, 0x1e66: 0x53d, 0x1e67: 0x53e,
+-	0x1e68: 0x53f,
+-	// Block 0x7a, offset 0x1e80
+-	0x1e90: 0x09, 0x1e91: 0x0a, 0x1e92: 0x0b, 0x1e93: 0x0c, 0x1e96: 0x0d,
+-	0x1e9b: 0x0e, 0x1e9d: 0x0f, 0x1e9e: 0x10, 0x1e9f: 0x76,
+-	0x1eaf: 0x77,
+-	// Block 0x7b, offset 0x1ec0
+-	0x1ec2: 0x01, 0x1ec3: 0x02, 0x1ec4: 0x03, 0x1ec5: 0x04, 0x1ec6: 0x05, 0x1ec7: 0x06,
+-	0x1ec8: 0x07, 0x1ec9: 0x08, 0x1eca: 0x09, 0x1ecb: 0x0a, 0x1ecc: 0x0b, 0x1ecd: 0x0c, 0x1ece: 0x0d, 0x1ecf: 0x0e,
+-	0x1ed0: 0x0f, 0x1ed1: 0x10, 0x1ed2: 0x11, 0x1ed3: 0x12, 0x1ed4: 0x13, 0x1ed5: 0x14, 0x1ed6: 0x15, 0x1ed7: 0x16,
+-	0x1ed8: 0x17, 0x1ed9: 0x18, 0x1eda: 0x19, 0x1edb: 0x1a, 0x1edc: 0x1b, 0x1edd: 0x1c, 0x1ede: 0x1d, 0x1edf: 0x1e,
+-	0x1ee0: 0x01, 0x1ee1: 0x02, 0x1ee2: 0x03, 0x1ee3: 0x6e, 0x1ee4: 0x6f, 0x1ee5: 0x70, 0x1ee6: 0x71, 0x1ee7: 0x72,
+-	0x1ee8: 0x73, 0x1ee9: 0x74, 0x1eea: 0x06, 0x1eed: 0x07, 0x1eef: 0x75,
+-	0x1ef0: 0x78, 0x1ef3: 0x15,
+-	// Block 0x7c, offset 0x1f00
+-	0x1f20: 0x1f, 0x1f21: 0x20, 0x1f22: 0x21, 0x1f23: 0x22, 0x1f24: 0x540, 0x1f25: 0x24, 0x1f26: 0x25, 0x1f27: 0x26,
+-	0x1f28: 0x27, 0x1f29: 0x28, 0x1f2a: 0x29, 0x1f2b: 0x2a, 0x1f2c: 0x2b, 0x1f2d: 0x2c, 0x1f2e: 0x2d, 0x1f2f: 0x2e,
+-	0x1f30: 0x2f, 0x1f31: 0x30, 0x1f32: 0x31, 0x1f33: 0x32, 0x1f34: 0x33, 0x1f35: 0x34, 0x1f36: 0x35, 0x1f37: 0x36,
+-	0x1f38: 0x37, 0x1f39: 0x38, 0x1f3a: 0x39, 0x1f3b: 0x3a, 0x1f3c: 0x3b, 0x1f3d: 0x3c, 0x1f3e: 0x3d, 0x1f3f: 0x3e,
+-	// Block 0x7d, offset 0x1f40
+-	0x1f42: 0x01, 0x1f43: 0x02, 0x1f44: 0x03, 0x1f45: 0x04, 0x1f46: 0x05, 0x1f47: 0x06,
+-	0x1f48: 0x07, 0x1f49: 0x08, 0x1f4a: 0x09, 0x1f4b: 0x0a, 0x1f4c: 0x0b, 0x1f4d: 0x0c, 0x1f4e: 0x0d, 0x1f4f: 0x0e,
+-	0x1f50: 0x0f, 0x1f51: 0x10, 0x1f52: 0x11, 0x1f53: 0x12, 0x1f54: 0x13, 0x1f55: 0x14, 0x1f56: 0x15, 0x1f57: 0x16,
+-	0x1f58: 0x17, 0x1f59: 0x18, 0x1f5a: 0x19, 0x1f5b: 0x1a, 0x1f5c: 0x1b, 0x1f5d: 0x1c, 0x1f5e: 0x1d, 0x1f5f: 0x1e,
+-	0x1f60: 0x7a, 0x1f61: 0x02, 0x1f62: 0x03, 0x1f63: 0x04, 0x1f64: 0x05,
+-	0x1f6a: 0x06, 0x1f6d: 0x07, 0x1f6f: 0x08,
+-	0x1f70: 0x13, 0x1f73: 0x15,
+-	// Block 0x7e, offset 0x1f80
+-	0x1f82: 0x01, 0x1f83: 0x02, 0x1f84: 0x03, 0x1f85: 0x04, 0x1f86: 0x541, 0x1f87: 0x06,
+-	0x1f88: 0x07, 0x1f89: 0x542, 0x1f8a: 0x09, 0x1f8b: 0x0a, 0x1f8c: 0x0b, 0x1f8d: 0x0c, 0x1f8e: 0x0d, 0x1f8f: 0x0e,
+-	0x1f90: 0x0f, 0x1f91: 0x10, 0x1f92: 0x11, 0x1f93: 0x12, 0x1f94: 0x13, 0x1f95: 0x14, 0x1f96: 0x15, 0x1f97: 0x16,
+-	0x1f98: 0x17, 0x1f99: 0x18, 0x1f9a: 0x19, 0x1f9b: 0x1a, 0x1f9c: 0x1b, 0x1f9d: 0x1c, 0x1f9e: 0x1d, 0x1f9f: 0x1e,
+-	0x1fa0: 0x01, 0x1fa1: 0x02, 0x1fa2: 0x03, 0x1fa3: 0x04, 0x1fa4: 0x05,
+-	0x1faa: 0x06, 0x1fad: 0x07, 0x1faf: 0x08,
+-	0x1fb0: 0x13, 0x1fb3: 0x15,
+-	// Block 0x7f, offset 0x1fc0
+-	0x1fc0: 0x3f, 0x1fc1: 0x40, 0x1fc2: 0x41, 0x1fc3: 0x42, 0x1fc4: 0x43, 0x1fc5: 0x44, 0x1fc6: 0x45, 0x1fc7: 0x46,
+-	0x1fc8: 0x47, 0x1fc9: 0x48, 0x1fca: 0x49, 0x1fcb: 0x4a, 0x1fcc: 0x4b, 0x1fcd: 0x4c, 0x1fce: 0x4d, 0x1fcf: 0x4e,
+-	0x1fd0: 0x4f, 0x1fd1: 0x50, 0x1fd2: 0x51, 0x1fd3: 0x52, 0x1fd4: 0x53, 0x1fd5: 0x54, 0x1fd6: 0x55, 0x1fd7: 0x56,
+-	0x1fd8: 0x57, 0x1fd9: 0x58, 0x1fda: 0x59, 0x1fdb: 0x5a, 0x1fdc: 0x5b, 0x1fdd: 0x5c, 0x1fde: 0x5d, 0x1fdf: 0x5e,
+-	0x1fe0: 0x5f, 0x1fe1: 0x60, 0x1fe2: 0x61, 0x1fe3: 0x62, 0x1fe4: 0x63, 0x1fe5: 0x64, 0x1fe6: 0x65, 0x1fe7: 0x66,
+-	0x1fe8: 0x67, 0x1fe9: 0x68, 0x1fea: 0x69, 0x1fec: 0x6a, 0x1fed: 0x6b, 0x1fee: 0x6c, 0x1fef: 0x6d,
+-	0x1ff0: 0x6e, 0x1ff1: 0x6f, 0x1ff3: 0x70, 0x1ff4: 0x71, 0x1ff5: 0x72, 0x1ff6: 0x73, 0x1ff7: 0x74,
+-	0x1ff8: 0x75, 0x1ff9: 0x54b, 0x1ffa: 0x54c, 0x1ffb: 0x54d, 0x1ffc: 0x79, 0x1ffd: 0x7a, 0x1ffe: 0x7b, 0x1fff: 0x7c,
+-	// Block 0x80, offset 0x2000
+-	0x2000: 0x7d, 0x2001: 0x7e, 0x2002: 0x7f, 0x2003: 0x80, 0x2004: 0x81, 0x2005: 0x82, 0x2006: 0x83, 0x2007: 0x84,
+-	0x2008: 0x85, 0x2009: 0x86, 0x200a: 0x87, 0x200b: 0x88, 0x200c: 0x89, 0x200d: 0x8a, 0x200e: 0x8b, 0x200f: 0x8c,
+-	0x2010: 0x8d, 0x2011: 0x8e, 0x2012: 0x54e, 0x2013: 0x90, 0x2014: 0x91, 0x2015: 0x92, 0x2016: 0x93, 0x2017: 0x94,
+-	0x2018: 0x95, 0x2019: 0x96, 0x201a: 0x97, 0x201b: 0x98, 0x201c: 0x99, 0x201d: 0x9a, 0x201e: 0x9b, 0x201f: 0x9c,
+-	0x2020: 0x9d, 0x2021: 0x9e, 0x2022: 0x9f, 0x2023: 0xa0, 0x2024: 0xa1, 0x2025: 0xa2, 0x2026: 0xa3, 0x2027: 0xa4,
+-	0x2028: 0xa5, 0x2029: 0xa6, 0x202a: 0xa7, 0x202b: 0xa8, 0x202c: 0xa9, 0x202d: 0xaa,
+-	0x2030: 0xab, 0x2031: 0xac, 0x2032: 0xad, 0x2033: 0xae, 0x2034: 0xaf, 0x2035: 0xb0, 0x2036: 0xb1, 0x2037: 0xb2,
+-	0x2038: 0xb3, 0x203a: 0xb4, 0x203b: 0xb5, 0x203c: 0xb6, 0x203d: 0xb7, 0x203e: 0xb8, 0x203f: 0xb9,
+-	// Block 0x81, offset 0x2040
+-	0x2040: 0xba, 0x2041: 0xbb, 0x2042: 0xbc, 0x2043: 0xbd, 0x2044: 0xbe, 0x2045: 0xbf, 0x2046: 0xc0, 0x2047: 0xc1,
+-	0x2048: 0xc2, 0x2049: 0xc3, 0x204a: 0xc4, 0x204b: 0xc5, 0x204c: 0xc6, 0x204d: 0xc7, 0x204e: 0xc8, 0x204f: 0x54f,
+-	// Block 0x82, offset 0x2080
+-	0x2080: 0x18b, 0x2081: 0x18c, 0x2082: 0x18d, 0x2083: 0x18e, 0x2084: 0x550, 0x2085: 0x190, 0x2086: 0x191, 0x2087: 0x192,
+-	0x2088: 0x193, 0x2089: 0x194, 0x208c: 0x195, 0x208d: 0x196, 0x208e: 0x197, 0x208f: 0x198,
+-	0x2090: 0x199, 0x2091: 0x19a, 0x2092: 0x19b, 0x2093: 0x19c, 0x2094: 0x19d, 0x2095: 0x19e, 0x2097: 0x19f,
+-	0x2098: 0x1a0, 0x2099: 0x1a1, 0x209a: 0x1a2, 0x209b: 0x1a3, 0x209c: 0x1a4, 0x209d: 0x1a5,
+-	// Block 0x83, offset 0x20c0
+-	0x20d0: 0x09, 0x20d1: 0x0a, 0x20d2: 0x0b, 0x20d3: 0x0c, 0x20d6: 0x0d,
+-	0x20db: 0x0e, 0x20dd: 0x0f, 0x20de: 0x10, 0x20df: 0x80,
+-	0x20ef: 0x12,
+-	// Block 0x84, offset 0x2100
+-	0x2102: 0x01, 0x2103: 0x545, 0x2104: 0x546, 0x2105: 0x547, 0x2106: 0x05, 0x2107: 0x548,
+-	0x2108: 0x549, 0x2109: 0x08, 0x210a: 0x09, 0x210b: 0x0a, 0x210c: 0x54a, 0x210d: 0x0c, 0x210e: 0x0d, 0x210f: 0x0e,
+-	0x2110: 0x0f, 0x2111: 0x10, 0x2112: 0x11, 0x2113: 0x12, 0x2114: 0x13, 0x2115: 0x14, 0x2116: 0x15, 0x2117: 0x16,
+-	0x2118: 0x17, 0x2119: 0x18, 0x211a: 0x19, 0x211b: 0x1a, 0x211c: 0x1b, 0x211d: 0x1c, 0x211e: 0x1d, 0x211f: 0x1e,
+-	0x2120: 0x01, 0x2121: 0x7d, 0x2122: 0x7e, 0x2123: 0x7f, 0x2124: 0x05,
+-	0x212a: 0x06, 0x212d: 0x07, 0x212f: 0x08,
+-	0x2130: 0x81, 0x2133: 0x15,
+-	// Block 0x85, offset 0x2140
+-	0x2140: 0x3f, 0x2141: 0x40, 0x2142: 0x41, 0x2143: 0x42, 0x2144: 0x43, 0x2145: 0x44, 0x2146: 0x45, 0x2147: 0x46,
+-	0x2148: 0x47, 0x2149: 0x48, 0x214a: 0x49, 0x214b: 0x4a, 0x214c: 0x4b, 0x214d: 0x4c, 0x214e: 0x4d, 0x214f: 0x4e,
+-	0x2150: 0x4f, 0x2151: 0x50, 0x2152: 0x51, 0x2153: 0x52, 0x2154: 0x53, 0x2155: 0x54, 0x2156: 0x55, 0x2157: 0x56,
+-	0x2158: 0x57, 0x2159: 0x58, 0x215a: 0x59, 0x215b: 0x5a, 0x215c: 0x5b, 0x215d: 0x5c, 0x215e: 0x5d, 0x215f: 0x5e,
+-	0x2160: 0x5f, 0x2161: 0x60, 0x2162: 0x61, 0x2163: 0x62, 0x2164: 0x63, 0x2165: 0x64, 0x2166: 0x65, 0x2167: 0x66,
+-	0x2168: 0x67, 0x2169: 0x68, 0x216a: 0x69, 0x216c: 0x6a, 0x216d: 0x6b, 0x216e: 0x6c, 0x216f: 0x6d,
+-	0x2170: 0x6e, 0x2171: 0x6f, 0x2173: 0x70, 0x2174: 0x71, 0x2175: 0x72, 0x2176: 0x73, 0x2177: 0x74,
+-	0x2178: 0x75, 0x2179: 0x555, 0x217a: 0x77, 0x217b: 0x78, 0x217c: 0x79, 0x217d: 0x7a, 0x217e: 0x7b, 0x217f: 0x7c,
+-	// Block 0x86, offset 0x2180
+-	0x2182: 0x01, 0x2183: 0x02, 0x2184: 0x553, 0x2185: 0x554, 0x2186: 0x05, 0x2187: 0x06,
+-	0x2188: 0x07, 0x2189: 0x08, 0x218a: 0x09, 0x218b: 0x0a, 0x218c: 0x0b, 0x218d: 0x0c, 0x218e: 0x0d, 0x218f: 0x0e,
+-	0x2190: 0x0f, 0x2191: 0x10, 0x2192: 0x11, 0x2193: 0x12, 0x2194: 0x13, 0x2195: 0x14, 0x2196: 0x15, 0x2197: 0x16,
+-	0x2198: 0x17, 0x2199: 0x18, 0x219a: 0x19, 0x219b: 0x1a, 0x219c: 0x1b, 0x219d: 0x1c, 0x219e: 0x1d, 0x219f: 0x1e,
+-	0x21a0: 0x01, 0x21a1: 0x83, 0x21a2: 0x03, 0x21a3: 0x04, 0x21a4: 0x05,
+-	0x21aa: 0x06, 0x21ad: 0x07, 0x21af: 0x08,
+-	0x21b0: 0x13, 0x21b3: 0x15,
+-	// Block 0x87, offset 0x21c0
+-	0x21e0: 0x1f, 0x21e1: 0x20, 0x21e2: 0x21, 0x21e3: 0x22, 0x21e4: 0x23, 0x21e5: 0x24, 0x21e6: 0x25, 0x21e7: 0x26,
+-	0x21e8: 0x27, 0x21e9: 0x28, 0x21ea: 0x29, 0x21eb: 0x2a, 0x21ec: 0x2b, 0x21ed: 0x2c, 0x21ee: 0x2d, 0x21ef: 0x2e,
+-	0x21f0: 0x2f, 0x21f1: 0x30, 0x21f2: 0x31, 0x21f3: 0x32, 0x21f4: 0x556, 0x21f5: 0x557, 0x21f6: 0x35, 0x21f7: 0x36,
+-	0x21f8: 0x37, 0x21f9: 0x38, 0x21fa: 0x39, 0x21fb: 0x3a, 0x21fc: 0x3b, 0x21fd: 0x3c, 0x21fe: 0x3d, 0x21ff: 0x3e,
+-	// Block 0x88, offset 0x2200
+-	0x2202: 0x01, 0x2203: 0x02, 0x2204: 0x03, 0x2205: 0x04, 0x2206: 0x05, 0x2207: 0x06,
+-	0x2208: 0x07, 0x2209: 0x08, 0x220a: 0x09, 0x220b: 0x0a, 0x220c: 0x0b, 0x220d: 0x0c, 0x220e: 0x0d, 0x220f: 0x0e,
+-	0x2210: 0x0f, 0x2211: 0x10, 0x2212: 0x11, 0x2213: 0x12, 0x2214: 0x13, 0x2215: 0x14, 0x2216: 0x15, 0x2217: 0x16,
+-	0x2218: 0x17, 0x2219: 0x18, 0x221a: 0x19, 0x221b: 0x1a, 0x221c: 0x1b, 0x221d: 0x1c, 0x221e: 0x1d, 0x221f: 0x1e,
+-	0x2220: 0x85, 0x2221: 0x02, 0x2222: 0x03, 0x2223: 0x04, 0x2224: 0x05,
+-	0x222a: 0x06, 0x222d: 0x07, 0x222f: 0x08,
+-	0x2230: 0x13, 0x2233: 0x15,
+-	// Block 0x89, offset 0x2240
+-	0x2260: 0x1f, 0x2261: 0x20, 0x2262: 0x21, 0x2263: 0x22, 0x2264: 0x558, 0x2265: 0x24, 0x2266: 0x25, 0x2267: 0x26,
+-	0x2268: 0x27, 0x2269: 0x28, 0x226a: 0x29, 0x226b: 0x2a, 0x226c: 0x2b, 0x226d: 0x2c, 0x226e: 0x2d, 0x226f: 0x2e,
+-	0x2270: 0x2f, 0x2271: 0x30, 0x2272: 0x31, 0x2273: 0x32, 0x2274: 0x33, 0x2275: 0x34, 0x2276: 0x35, 0x2277: 0x36,
+-	0x2278: 0x37, 0x2279: 0x38, 0x227a: 0x39, 0x227b: 0x3a, 0x227c: 0x3b, 0x227d: 0x3c, 0x227e: 0x3d, 0x227f: 0x3e,
+-	// Block 0x8a, offset 0x2280
+-	0x2282: 0x01, 0x2283: 0x02, 0x2284: 0x03, 0x2285: 0x04, 0x2286: 0x05, 0x2287: 0x06,
+-	0x2288: 0x07, 0x2289: 0x08, 0x228a: 0x09, 0x228b: 0x0a, 0x228c: 0x0b, 0x228d: 0x0c, 0x228e: 0x0d, 0x228f: 0x0e,
+-	0x2290: 0x0f, 0x2291: 0x10, 0x2292: 0x11, 0x2293: 0x12, 0x2294: 0x13, 0x2295: 0x14, 0x2296: 0x15, 0x2297: 0x16,
+-	0x2298: 0x17, 0x2299: 0x18, 0x229a: 0x19, 0x229b: 0x1a, 0x229c: 0x1b, 0x229d: 0x1c, 0x229e: 0x1d, 0x229f: 0x1e,
+-	0x22a0: 0x87, 0x22a1: 0x02, 0x22a2: 0x03, 0x22a3: 0x04, 0x22a4: 0x05,
+-	0x22aa: 0x06, 0x22ad: 0x07, 0x22af: 0x08,
+-	0x22b0: 0x13, 0x22b3: 0x15,
+-	// Block 0x8b, offset 0x22c0
+-	0x22c0: 0x7d, 0x22c1: 0x7e, 0x22c2: 0x7f, 0x22c3: 0x80, 0x22c4: 0x55d, 0x22c5: 0x82, 0x22c6: 0x83, 0x22c7: 0x84,
+-	0x22c8: 0x85, 0x22c9: 0x86, 0x22ca: 0x87, 0x22cb: 0x88, 0x22cc: 0x89, 0x22cd: 0x8a, 0x22ce: 0x8b, 0x22cf: 0x8c,
+-	0x22d0: 0x8d, 0x22d1: 0x8e, 0x22d2: 0x8f, 0x22d3: 0x90, 0x22d4: 0x91, 0x22d5: 0x92, 0x22d6: 0x93, 0x22d7: 0x94,
+-	0x22d8: 0x95, 0x22d9: 0x96, 0x22da: 0x97, 0x22db: 0x98, 0x22dc: 0x99, 0x22dd: 0x9a, 0x22de: 0x9b, 0x22df: 0x9c,
+-	0x22e0: 0x9d, 0x22e1: 0x9e, 0x22e2: 0x9f, 0x22e3: 0xa0, 0x22e4: 0xa1, 0x22e5: 0xa2, 0x22e6: 0xa3, 0x22e7: 0xa4,
+-	0x22e8: 0xa5, 0x22e9: 0xa6, 0x22ea: 0xa7, 0x22eb: 0xa8, 0x22ec: 0xa9, 0x22ed: 0xaa,
+-	0x22f0: 0xab, 0x22f1: 0xac, 0x22f2: 0xad, 0x22f3: 0xae, 0x22f4: 0xaf, 0x22f5: 0xb0, 0x22f6: 0xb1, 0x22f7: 0xb2,
+-	0x22f8: 0xb3, 0x22fa: 0xb4, 0x22fb: 0xb5, 0x22fc: 0xb6, 0x22fd: 0xb7, 0x22fe: 0xb8, 0x22ff: 0xb9,
+-	// Block 0x8c, offset 0x2300
+-	0x2300: 0xcb, 0x2301: 0xcc, 0x2302: 0xcd, 0x2303: 0xce, 0x2304: 0xcf, 0x2305: 0xd0, 0x2306: 0xd1, 0x2307: 0xd2,
+-	0x2308: 0xd3, 0x2309: 0xd4, 0x230a: 0xd5, 0x230b: 0xd6, 0x230c: 0xd7, 0x230d: 0xd8, 0x230e: 0xd9, 0x230f: 0xda,
+-	0x2310: 0xdb, 0x2311: 0xdc, 0x2312: 0xdd, 0x2313: 0xde, 0x2314: 0xdf, 0x2315: 0xe0, 0x2316: 0xe1, 0x2317: 0xe2,
+-	0x2318: 0xe3, 0x2319: 0xe4, 0x231a: 0xe5, 0x231b: 0xe6, 0x231c: 0xe7, 0x231d: 0xe8, 0x231e: 0xe9, 0x231f: 0x55e,
+-	0x2320: 0xeb, 0x2321: 0xec, 0x2322: 0xed, 0x2323: 0xee, 0x2324: 0xef, 0x2325: 0xf0, 0x2326: 0xf1, 0x2327: 0xf2,
+-	0x2328: 0xf3, 0x2329: 0xf4, 0x232a: 0xf5, 0x232b: 0xf6, 0x232c: 0xf7, 0x232f: 0xf8,
+-	// Block 0x8d, offset 0x2340
+-	0x2342: 0x01, 0x2343: 0x02, 0x2344: 0x55b, 0x2345: 0x55c, 0x2346: 0x05, 0x2347: 0x06,
+-	0x2348: 0x07, 0x2349: 0x08, 0x234a: 0x09, 0x234b: 0x0a, 0x234c: 0x0b, 0x234d: 0x0c, 0x234e: 0x0d, 0x234f: 0x0e,
+-	0x2350: 0x0f, 0x2351: 0x10, 0x2352: 0x11, 0x2353: 0x12, 0x2354: 0x13, 0x2355: 0x14, 0x2356: 0x15, 0x2357: 0x16,
+-	0x2358: 0x17, 0x2359: 0x18, 0x235a: 0x19, 0x235b: 0x1a, 0x235c: 0x1b, 0x235d: 0x1c, 0x235e: 0x1d, 0x235f: 0x1e,
+-	0x2360: 0x01, 0x2361: 0x02, 0x2362: 0x89, 0x2363: 0x04, 0x2364: 0x05,
+-	0x236a: 0x8a, 0x236d: 0x07, 0x236f: 0x08,
+-	0x2370: 0x13, 0x2373: 0x15,
+-	// Block 0x8e, offset 0x2380
+-	0x2380: 0x55f, 0x2381: 0x560, 0x2382: 0x561, 0x2383: 0x42, 0x2384: 0x43, 0x2385: 0x44, 0x2386: 0x45, 0x2387: 0x46,
+-	0x2388: 0x47, 0x2389: 0x48, 0x238a: 0x49, 0x238b: 0x4a, 0x238c: 0x4b, 0x238d: 0x4c, 0x238e: 0x4d, 0x238f: 0x4e,
+-	0x2390: 0x4f, 0x2391: 0x50, 0x2392: 0x51, 0x2393: 0x52, 0x2394: 0x53, 0x2395: 0x54, 0x2396: 0x55, 0x2397: 0x56,
+-	0x2398: 0x57, 0x2399: 0x58, 0x239a: 0x59, 0x239b: 0x5a, 0x239c: 0x5b, 0x239d: 0x5c, 0x239e: 0x5d, 0x239f: 0x5e,
+-	0x23a0: 0x5f, 0x23a1: 0x60, 0x23a2: 0x61, 0x23a3: 0x62, 0x23a4: 0x63, 0x23a5: 0x64, 0x23a6: 0x65, 0x23a7: 0x66,
+-	0x23a8: 0x67, 0x23a9: 0x68, 0x23aa: 0x69, 0x23ac: 0x6a, 0x23ad: 0x6b, 0x23ae: 0x6c, 0x23af: 0x6d,
+-	0x23b0: 0x6e, 0x23b1: 0x6f, 0x23b3: 0x70, 0x23b4: 0x71, 0x23b5: 0x72, 0x23b6: 0x73, 0x23b7: 0x74,
+-	0x23b8: 0x75, 0x23b9: 0x76, 0x23ba: 0x77, 0x23bb: 0x78, 0x23bc: 0x79, 0x23bd: 0x7a, 0x23be: 0x7b, 0x23bf: 0x7c,
+-	// Block 0x8f, offset 0x23c0
+-	0x23c2: 0x01, 0x23c3: 0x02, 0x23c4: 0x03, 0x23c5: 0x04, 0x23c6: 0x05, 0x23c7: 0x06,
+-	0x23c8: 0x07, 0x23c9: 0x08, 0x23ca: 0x09, 0x23cb: 0x0a, 0x23cc: 0x0b, 0x23cd: 0x0c, 0x23ce: 0x0d, 0x23cf: 0x0e,
+-	0x23d0: 0x0f, 0x23d1: 0x10, 0x23d2: 0x11, 0x23d3: 0x12, 0x23d4: 0x13, 0x23d5: 0x14, 0x23d6: 0x15, 0x23d7: 0x16,
+-	0x23d8: 0x17, 0x23d9: 0x18, 0x23da: 0x19, 0x23db: 0x1a, 0x23dc: 0x1b, 0x23dd: 0x1c, 0x23de: 0x1d, 0x23df: 0x1e,
+-	0x23e0: 0x01, 0x23e1: 0x8c, 0x23e2: 0x03, 0x23e3: 0x04, 0x23e4: 0x05,
+-	0x23ea: 0x06, 0x23ed: 0x07, 0x23ef: 0x08,
+-	0x23f0: 0x13, 0x23f3: 0x15,
+-	// Block 0x90, offset 0x2400
+-	0x2400: 0x3f, 0x2401: 0x40, 0x2402: 0x41, 0x2403: 0x42, 0x2404: 0x43, 0x2405: 0x44, 0x2406: 0x45, 0x2407: 0x46,
+-	0x2408: 0x47, 0x2409: 0x48, 0x240a: 0x49, 0x240b: 0x4a, 0x240c: 0x4b, 0x240d: 0x4c, 0x240e: 0x4d, 0x240f: 0x4e,
+-	0x2410: 0x4f, 0x2411: 0x50, 0x2412: 0x51, 0x2413: 0x52, 0x2414: 0x53, 0x2415: 0x54, 0x2416: 0x55, 0x2417: 0x56,
+-	0x2418: 0x57, 0x2419: 0x58, 0x241a: 0x59, 0x241b: 0x5a, 0x241c: 0x5b, 0x241d: 0x5c, 0x241e: 0x5d, 0x241f: 0x5e,
+-	0x2420: 0x5f, 0x2421: 0x60, 0x2422: 0x61, 0x2423: 0x62, 0x2424: 0x63, 0x2425: 0x64, 0x2426: 0x65, 0x2427: 0x66,
+-	0x2428: 0x67, 0x2429: 0x68, 0x242a: 0x69, 0x242c: 0x6a, 0x242d: 0x6b, 0x242e: 0x6c, 0x242f: 0x6d,
+-	0x2430: 0x6e, 0x2431: 0x6f, 0x2433: 0x70, 0x2434: 0x71, 0x2435: 0x72, 0x2436: 0x73, 0x2437: 0x74,
+-	0x2438: 0x75, 0x2439: 0x1db, 0x243a: 0x568, 0x243b: 0x569, 0x243c: 0x79, 0x243d: 0x7a, 0x243e: 0x7b, 0x243f: 0x7c,
+-	// Block 0x91, offset 0x2440
+-	0x2442: 0x01, 0x2443: 0x566, 0x2444: 0x03, 0x2445: 0x567, 0x2446: 0x05, 0x2447: 0x06,
+-	0x2448: 0x07, 0x2449: 0x08, 0x244a: 0x09, 0x244b: 0x0a, 0x244c: 0x0b, 0x244d: 0x0c, 0x244e: 0x0d, 0x244f: 0x0e,
+-	0x2450: 0x0f, 0x2451: 0x10, 0x2452: 0x11, 0x2453: 0x12, 0x2454: 0x13, 0x2455: 0x14, 0x2456: 0x15, 0x2457: 0x16,
+-	0x2458: 0x17, 0x2459: 0x18, 0x245a: 0x19, 0x245b: 0x1a, 0x245c: 0x1b, 0x245d: 0x1c, 0x245e: 0x1d, 0x245f: 0x1e,
+-	0x2460: 0x01, 0x2461: 0x8e, 0x2462: 0x03, 0x2463: 0x04, 0x2464: 0x05,
+-	0x246a: 0x06, 0x246d: 0x07, 0x246f: 0x08,
+-	0x2470: 0x13, 0x2473: 0x15,
+-	// Block 0x92, offset 0x2480
+-	0x24a0: 0x1f, 0x24a1: 0x20, 0x24a2: 0x21, 0x24a3: 0x22, 0x24a4: 0x23, 0x24a5: 0x24, 0x24a6: 0x25, 0x24a7: 0x26,
+-	0x24a8: 0x27, 0x24a9: 0x28, 0x24aa: 0x29, 0x24ab: 0x2a, 0x24ac: 0x56c, 0x24ad: 0x56d, 0x24ae: 0x2d, 0x24af: 0x2e,
+-	0x24b0: 0x2f, 0x24b1: 0x30, 0x24b2: 0x31, 0x24b3: 0x32, 0x24b4: 0x33, 0x24b5: 0x34, 0x24b6: 0x35, 0x24b7: 0x36,
+-	0x24b8: 0x37, 0x24b9: 0x38, 0x24ba: 0x39, 0x24bb: 0x3a, 0x24bc: 0x3b, 0x24bd: 0x3c, 0x24be: 0x3d, 0x24bf: 0x3e,
+-	// Block 0x93, offset 0x24c0
+-	0x24c2: 0x01, 0x24c3: 0x02, 0x24c4: 0x03, 0x24c5: 0x04, 0x24c6: 0x05, 0x24c7: 0x06,
+-	0x24c8: 0x07, 0x24c9: 0x08, 0x24ca: 0x09, 0x24cb: 0x0a, 0x24cc: 0x0b, 0x24cd: 0x0c, 0x24ce: 0x0d, 0x24cf: 0x0e,
+-	0x24d0: 0x0f, 0x24d1: 0x10, 0x24d2: 0x11, 0x24d3: 0x12, 0x24d4: 0x13, 0x24d5: 0x14, 0x24d6: 0x15, 0x24d7: 0x16,
+-	0x24d8: 0x17, 0x24d9: 0x18, 0x24da: 0x19, 0x24db: 0x1a, 0x24dc: 0x1b, 0x24dd: 0x1c, 0x24de: 0x1d, 0x24df: 0x1e,
+-	0x24e0: 0x90, 0x24e1: 0x02, 0x24e2: 0x03, 0x24e3: 0x04, 0x24e4: 0x05,
+-	0x24ea: 0x06, 0x24ed: 0x07, 0x24ef: 0x08,
+-	0x24f0: 0x13, 0x24f3: 0x15,
+-	// Block 0x94, offset 0x2500
+-	0x2520: 0x1f, 0x2521: 0x20, 0x2522: 0x21, 0x2523: 0x22, 0x2524: 0x23, 0x2525: 0x24, 0x2526: 0x25, 0x2527: 0x26,
+-	0x2528: 0x56e, 0x2529: 0x56f, 0x252a: 0x29, 0x252b: 0x2a, 0x252c: 0x2b, 0x252d: 0x2c, 0x252e: 0x2d, 0x252f: 0x2e,
+-	0x2530: 0x2f, 0x2531: 0x30, 0x2532: 0x31, 0x2533: 0x32, 0x2534: 0x33, 0x2535: 0x34, 0x2536: 0x35, 0x2537: 0x36,
+-	0x2538: 0x37, 0x2539: 0x38, 0x253a: 0x39, 0x253b: 0x3a, 0x253c: 0x3b, 0x253d: 0x3c, 0x253e: 0x3d, 0x253f: 0x3e,
+-	// Block 0x95, offset 0x2540
+-	0x2542: 0x01, 0x2543: 0x02, 0x2544: 0x03, 0x2545: 0x04, 0x2546: 0x05, 0x2547: 0x06,
+-	0x2548: 0x07, 0x2549: 0x08, 0x254a: 0x09, 0x254b: 0x0a, 0x254c: 0x0b, 0x254d: 0x0c, 0x254e: 0x0d, 0x254f: 0x0e,
+-	0x2550: 0x0f, 0x2551: 0x10, 0x2552: 0x11, 0x2553: 0x12, 0x2554: 0x13, 0x2555: 0x14, 0x2556: 0x15, 0x2557: 0x16,
+-	0x2558: 0x17, 0x2559: 0x18, 0x255a: 0x19, 0x255b: 0x1a, 0x255c: 0x1b, 0x255d: 0x1c, 0x255e: 0x1d, 0x255f: 0x1e,
+-	0x2560: 0x92, 0x2561: 0x02, 0x2562: 0x03, 0x2563: 0x04, 0x2564: 0x05,
+-	0x256a: 0x06, 0x256d: 0x07, 0x256f: 0x08,
+-	0x2570: 0x13, 0x2573: 0x15,
+-	// Block 0x96, offset 0x2580
+-	0x2580: 0x3f, 0x2581: 0x40, 0x2582: 0x41, 0x2583: 0x42, 0x2584: 0x43, 0x2585: 0x44, 0x2586: 0x45, 0x2587: 0x46,
+-	0x2588: 0x47, 0x2589: 0x48, 0x258a: 0x49, 0x258b: 0x4a, 0x258c: 0x4b, 0x258d: 0x4c, 0x258e: 0x4d, 0x258f: 0x4e,
+-	0x2590: 0x4f, 0x2591: 0x50, 0x2592: 0x51, 0x2593: 0x52, 0x2594: 0x53, 0x2595: 0x54, 0x2596: 0x55, 0x2597: 0x56,
+-	0x2598: 0x57, 0x2599: 0x58, 0x259a: 0x59, 0x259b: 0x5a, 0x259c: 0x5b, 0x259d: 0x5c, 0x259e: 0x5d, 0x259f: 0x5e,
+-	0x25a0: 0x5f, 0x25a1: 0x60, 0x25a2: 0x61, 0x25a3: 0x62, 0x25a4: 0x63, 0x25a5: 0x64, 0x25a6: 0x65, 0x25a7: 0x66,
+-	0x25a8: 0x67, 0x25a9: 0x68, 0x25aa: 0x69, 0x25ac: 0x6a, 0x25ad: 0x6b, 0x25ae: 0x6c, 0x25af: 0x6d,
+-	0x25b0: 0x6e, 0x25b1: 0x6f, 0x25b3: 0x70, 0x25b4: 0x71, 0x25b5: 0x72, 0x25b6: 0x73, 0x25b7: 0x74,
+-	0x25b8: 0x575, 0x25b9: 0x576, 0x25ba: 0x77, 0x25bb: 0x577, 0x25bc: 0x79, 0x25bd: 0x7a, 0x25be: 0x7b, 0x25bf: 0x7c,
+-	// Block 0x97, offset 0x25c0
+-	0x25c2: 0x01, 0x25c3: 0x572, 0x25c4: 0x573, 0x25c5: 0x574, 0x25c6: 0x05, 0x25c7: 0x06,
+-	0x25c8: 0x07, 0x25c9: 0x08, 0x25ca: 0x09, 0x25cb: 0x0a, 0x25cc: 0x0b, 0x25cd: 0x0c, 0x25ce: 0x0d, 0x25cf: 0x0e,
+-	0x25d0: 0x0f, 0x25d1: 0x10, 0x25d2: 0x11, 0x25d3: 0x12, 0x25d4: 0x13, 0x25d5: 0x14, 0x25d6: 0x15, 0x25d7: 0x16,
+-	0x25d8: 0x17, 0x25d9: 0x18, 0x25da: 0x19, 0x25db: 0x1a, 0x25dc: 0x1b, 0x25dd: 0x1c, 0x25de: 0x1d, 0x25df: 0x1e,
+-	0x25e0: 0x01, 0x25e1: 0x94, 0x25e2: 0x03, 0x25e3: 0x04, 0x25e4: 0x05,
+-	0x25ea: 0x06, 0x25ed: 0x07, 0x25ef: 0x08,
+-	0x25f0: 0x13, 0x25f3: 0x15,
+-	// Block 0x98, offset 0x2600
+-	0x2600: 0x57c, 0x2601: 0x7e, 0x2602: 0x7f, 0x2603: 0x80, 0x2604: 0x81, 0x2605: 0x82, 0x2606: 0x83, 0x2607: 0x84,
+-	0x2608: 0x85, 0x2609: 0x86, 0x260a: 0x87, 0x260b: 0x88, 0x260c: 0x89, 0x260d: 0x8a, 0x260e: 0x8b, 0x260f: 0x8c,
+-	0x2610: 0x8d, 0x2611: 0x8e, 0x2612: 0x8f, 0x2613: 0x90, 0x2614: 0x91, 0x2615: 0x92, 0x2616: 0x93, 0x2617: 0x94,
+-	0x2618: 0x95, 0x2619: 0x96, 0x261a: 0x97, 0x261b: 0x98, 0x261c: 0x99, 0x261d: 0x9a, 0x261e: 0x9b, 0x261f: 0x9c,
+-	0x2620: 0x9d, 0x2621: 0x9e, 0x2622: 0x9f, 0x2623: 0xa0, 0x2624: 0xa1, 0x2625: 0xa2, 0x2626: 0xa3, 0x2627: 0xa4,
+-	0x2628: 0xa5, 0x2629: 0xa6, 0x262a: 0xa7, 0x262b: 0xa8, 0x262c: 0xa9, 0x262d: 0xaa,
+-	0x2630: 0xab, 0x2631: 0xac, 0x2632: 0xad, 0x2633: 0xae, 0x2634: 0xaf, 0x2635: 0xb0, 0x2636: 0xb1, 0x2637: 0xb2,
+-	0x2638: 0xb3, 0x263a: 0xb4, 0x263b: 0xb5, 0x263c: 0xb6, 0x263d: 0xb7, 0x263e: 0xb8, 0x263f: 0xb9,
+-	// Block 0x99, offset 0x2640
+-	0x2664: 0xfb, 0x2665: 0xfc, 0x2666: 0xfd, 0x2667: 0xfe,
+-	0x2668: 0xff, 0x2669: 0x100, 0x266a: 0x101, 0x266b: 0x102, 0x266c: 0x103, 0x266d: 0x104, 0x266e: 0x232, 0x266f: 0x57d,
+-	0x2670: 0x233, 0x2671: 0x57e, 0x2672: 0x57f, 0x2673: 0x580, 0x2674: 0x581, 0x2675: 0x10c, 0x2676: 0x10d, 0x2677: 0x10e,
+-	0x2678: 0x10f, 0x2679: 0x110, 0x267a: 0x111, 0x267b: 0x112, 0x267c: 0x113, 0x267d: 0x114, 0x267e: 0x115, 0x267f: 0x116,
+-	// Block 0x9a, offset 0x2680
+-	0x2682: 0x01, 0x2683: 0x02, 0x2684: 0x03, 0x2685: 0x04, 0x2686: 0x05, 0x2687: 0x06,
+-	0x2688: 0x07, 0x2689: 0x08, 0x268a: 0x09, 0x268b: 0x0a, 0x268c: 0x0b, 0x268d: 0x0c, 0x268e: 0x0d, 0x268f: 0x0e,
+-	0x2690: 0x0f, 0x2691: 0x10, 0x2692: 0x11, 0x2693: 0x12, 0x2694: 0x13, 0x2695: 0x14, 0x2696: 0x15, 0x2697: 0x16,
+-	0x2698: 0x578, 0x2699: 0x579, 0x269a: 0x57a, 0x269b: 0x57b, 0x269c: 0x1b, 0x269d: 0x1c, 0x269e: 0x1d, 0x269f: 0x1e,
+-	0x26a0: 0x01, 0x26a1: 0x02, 0x26a2: 0x96, 0x26a3: 0x04, 0x26a4: 0x05,
+-	0x26aa: 0x06, 0x26ad: 0x07, 0x26af: 0x97,
+-	0x26b0: 0x13, 0x26b3: 0x15,
+-	// Block 0x9b, offset 0x26c0
+-	0x26c0: 0x3f, 0x26c1: 0x40, 0x26c2: 0x41, 0x26c3: 0x42, 0x26c4: 0x43, 0x26c5: 0x44, 0x26c6: 0x45, 0x26c7: 0x46,
+-	0x26c8: 0x47, 0x26c9: 0x48, 0x26ca: 0x49, 0x26cb: 0x4a, 0x26cc: 0x4b, 0x26cd: 0x4c, 0x26ce: 0x4d, 0x26cf: 0x4e,
+-	0x26d0: 0x4f, 0x26d1: 0x50, 0x26d2: 0x51, 0x26d3: 0x52, 0x26d4: 0x53, 0x26d5: 0x54, 0x26d6: 0x55, 0x26d7: 0x56,
+-	0x26d8: 0x57, 0x26d9: 0x58, 0x26da: 0x59, 0x26db: 0x5a, 0x26dc: 0x5b, 0x26dd: 0x5c, 0x26de: 0x5d, 0x26df: 0x5e,
+-	0x26e0: 0x5f, 0x26e1: 0x60, 0x26e2: 0x61, 0x26e3: 0x62, 0x26e4: 0x63, 0x26e5: 0x64, 0x26e6: 0x65, 0x26e7: 0x66,
+-	0x26e8: 0x67, 0x26e9: 0x68, 0x26ea: 0x69, 0x26ec: 0x6a, 0x26ed: 0x6b, 0x26ee: 0x6c, 0x26ef: 0x6d,
+-	0x26f0: 0x6e, 0x26f1: 0x6f, 0x26f3: 0x70, 0x26f4: 0x71, 0x26f5: 0x72, 0x26f6: 0x73, 0x26f7: 0x74,
+-	0x26f8: 0x75, 0x26f9: 0x76, 0x26fa: 0x588, 0x26fb: 0x78, 0x26fc: 0x79, 0x26fd: 0x7a, 0x26fe: 0x7b, 0x26ff: 0x7c,
+-	// Block 0x9c, offset 0x2700
+-	0x2702: 0x01, 0x2703: 0x584, 0x2704: 0x585, 0x2705: 0x586, 0x2706: 0x05, 0x2707: 0x06,
+-	0x2708: 0x587, 0x2709: 0x08, 0x270a: 0x09, 0x270b: 0x0a, 0x270c: 0x0b, 0x270d: 0x0c, 0x270e: 0x0d, 0x270f: 0x0e,
+-	0x2710: 0x0f, 0x2711: 0x10, 0x2712: 0x11, 0x2713: 0x12, 0x2714: 0x13, 0x2715: 0x14, 0x2716: 0x15, 0x2717: 0x16,
+-	0x2718: 0x17, 0x2719: 0x18, 0x271a: 0x19, 0x271b: 0x1a, 0x271c: 0x1b, 0x271d: 0x1c, 0x271e: 0x1d, 0x271f: 0x1e,
+-	0x2720: 0x01, 0x2721: 0x99, 0x2722: 0x03, 0x2723: 0x04, 0x2724: 0x05,
+-	0x272a: 0x06, 0x272d: 0x07, 0x272f: 0x08,
+-	0x2730: 0x13, 0x2733: 0x15,
+-	// Block 0x9d, offset 0x2740
+-	0x2740: 0x3f, 0x2741: 0x40, 0x2742: 0x41, 0x2743: 0x42, 0x2744: 0x43, 0x2745: 0x44, 0x2746: 0x45, 0x2747: 0x46,
+-	0x2748: 0x47, 0x2749: 0x48, 0x274a: 0x49, 0x274b: 0x4a, 0x274c: 0x4b, 0x274d: 0x4c, 0x274e: 0x4d, 0x274f: 0x4e,
+-	0x2750: 0x4f, 0x2751: 0x50, 0x2752: 0x51, 0x2753: 0x52, 0x2754: 0x53, 0x2755: 0x54, 0x2756: 0x55, 0x2757: 0x56,
+-	0x2758: 0x57, 0x2759: 0x58, 0x275a: 0x59, 0x275b: 0x5a, 0x275c: 0x5b, 0x275d: 0x5c, 0x275e: 0x5d, 0x275f: 0x5e,
+-	0x2760: 0x5f, 0x2761: 0x60, 0x2762: 0x61, 0x2763: 0x62, 0x2764: 0x63, 0x2765: 0x64, 0x2766: 0x65, 0x2767: 0x66,
+-	0x2768: 0x67, 0x2769: 0x68, 0x276a: 0x69, 0x276c: 0x6a, 0x276d: 0x6b, 0x276e: 0x6c, 0x276f: 0x6d,
+-	0x2770: 0x6e, 0x2771: 0x6f, 0x2773: 0x70, 0x2774: 0x71, 0x2775: 0x72, 0x2776: 0x1e5, 0x2777: 0x74,
+-	0x2778: 0x75, 0x2779: 0x592, 0x277a: 0x593, 0x277b: 0x594, 0x277c: 0x79, 0x277d: 0x7a, 0x277e: 0x7b, 0x277f: 0x7c,
+-	// Block 0x9e, offset 0x2780
+-	0x2782: 0x01, 0x2783: 0x58b, 0x2784: 0x58c, 0x2785: 0x58d, 0x2786: 0x58e, 0x2787: 0x58f,
+-	0x2788: 0x590, 0x2789: 0x08, 0x278a: 0x591, 0x278b: 0x0a, 0x278c: 0x0b, 0x278d: 0x0c, 0x278e: 0x0d, 0x278f: 0x0e,
+-	0x2790: 0x0f, 0x2791: 0x10, 0x2792: 0x11, 0x2793: 0x12, 0x2794: 0x13, 0x2795: 0x14, 0x2796: 0x15, 0x2797: 0x16,
+-	0x2798: 0x17, 0x2799: 0x18, 0x279a: 0x19, 0x279b: 0x1a, 0x279c: 0x1b, 0x279d: 0x1c, 0x279e: 0x1d, 0x279f: 0x1e,
+-	0x27a0: 0x01, 0x27a1: 0x9b, 0x27a2: 0x45, 0x27a3: 0x04, 0x27a4: 0x05,
+-	0x27aa: 0x06, 0x27ad: 0x07, 0x27af: 0x08,
+-	0x27b0: 0x13, 0x27b3: 0x15,
+-	// Block 0x9f, offset 0x27c0
+-	0x27e0: 0x1f, 0x27e1: 0x20, 0x27e2: 0x21, 0x27e3: 0x22, 0x27e4: 0x23, 0x27e5: 0x24, 0x27e6: 0x25, 0x27e7: 0x26,
+-	0x27e8: 0x27, 0x27e9: 0x28, 0x27ea: 0x29, 0x27eb: 0x2a, 0x27ec: 0x2b, 0x27ed: 0x2c, 0x27ee: 0x2d, 0x27ef: 0x2e,
+-	0x27f0: 0x2f, 0x27f1: 0x30, 0x27f2: 0x31, 0x27f3: 0x32, 0x27f4: 0x33, 0x27f5: 0x34, 0x27f6: 0x595, 0x27f7: 0x36,
+-	0x27f8: 0x37, 0x27f9: 0x38, 0x27fa: 0x39, 0x27fb: 0x3a, 0x27fc: 0x3b, 0x27fd: 0x3c, 0x27fe: 0x3d, 0x27ff: 0x3e,
+-	// Block 0xa0, offset 0x2800
+-	0x2802: 0x01, 0x2803: 0x02, 0x2804: 0x03, 0x2805: 0x04, 0x2806: 0x05, 0x2807: 0x06,
+-	0x2808: 0x07, 0x2809: 0x08, 0x280a: 0x09, 0x280b: 0x0a, 0x280c: 0x0b, 0x280d: 0x0c, 0x280e: 0x0d, 0x280f: 0x0e,
+-	0x2810: 0x0f, 0x2811: 0x10, 0x2812: 0x11, 0x2813: 0x12, 0x2814: 0x13, 0x2815: 0x14, 0x2816: 0x15, 0x2817: 0x16,
+-	0x2818: 0x17, 0x2819: 0x18, 0x281a: 0x19, 0x281b: 0x1a, 0x281c: 0x1b, 0x281d: 0x1c, 0x281e: 0x1d, 0x281f: 0x1e,
+-	0x2820: 0x9d, 0x2821: 0x02, 0x2822: 0x03, 0x2823: 0x04, 0x2824: 0x05,
+-	0x282a: 0x06, 0x282d: 0x07, 0x282f: 0x08,
+-	0x2830: 0x13, 0x2833: 0x15,
+-	// Block 0xa1, offset 0x2840
+-	0x2840: 0x3f, 0x2841: 0x40, 0x2842: 0x41, 0x2843: 0x42, 0x2844: 0x43, 0x2845: 0x44, 0x2846: 0x45, 0x2847: 0x46,
+-	0x2848: 0x47, 0x2849: 0x48, 0x284a: 0x49, 0x284b: 0x4a, 0x284c: 0x4b, 0x284d: 0x4c, 0x284e: 0x4d, 0x284f: 0x4e,
+-	0x2850: 0x4f, 0x2851: 0x50, 0x2852: 0x51, 0x2853: 0x52, 0x2854: 0x53, 0x2855: 0x54, 0x2856: 0x55, 0x2857: 0x56,
+-	0x2858: 0x57, 0x2859: 0x58, 0x285a: 0x59, 0x285b: 0x5a, 0x285c: 0x5b, 0x285d: 0x5c, 0x285e: 0x5d, 0x285f: 0x5e,
+-	0x2860: 0x5f, 0x2861: 0x60, 0x2862: 0x61, 0x2863: 0x62, 0x2864: 0x63, 0x2865: 0x64, 0x2866: 0x65, 0x2867: 0x66,
+-	0x2868: 0x67, 0x2869: 0x68, 0x286a: 0x69, 0x286c: 0x6a, 0x286d: 0x6b, 0x286e: 0x6c, 0x286f: 0x6d,
+-	0x2870: 0x6e, 0x2871: 0x6f, 0x2873: 0x70, 0x2874: 0x71, 0x2875: 0x72, 0x2876: 0x73, 0x2877: 0x74,
+-	0x2878: 0x75, 0x2879: 0x1db, 0x287a: 0x77, 0x287b: 0x59a, 0x287c: 0x79, 0x287d: 0x7a, 0x287e: 0x7b, 0x287f: 0x7c,
+-	// Block 0xa2, offset 0x2880
+-	0x2882: 0x01, 0x2883: 0x598, 0x2884: 0x1d9, 0x2885: 0x1da, 0x2886: 0x05, 0x2887: 0x599,
+-	0x2888: 0x07, 0x2889: 0x08, 0x288a: 0x09, 0x288b: 0x0a, 0x288c: 0x0b, 0x288d: 0x0c, 0x288e: 0x0d, 0x288f: 0x0e,
+-	0x2890: 0x0f, 0x2891: 0x10, 0x2892: 0x11, 0x2893: 0x12, 0x2894: 0x13, 0x2895: 0x14, 0x2896: 0x15, 0x2897: 0x16,
+-	0x2898: 0x17, 0x2899: 0x18, 0x289a: 0x19, 0x289b: 0x1a, 0x289c: 0x1b, 0x289d: 0x1c, 0x289e: 0x1d, 0x289f: 0x1e,
+-	0x28a0: 0x01, 0x28a1: 0x9f, 0x28a2: 0x03, 0x28a3: 0x04, 0x28a4: 0x05,
+-	0x28aa: 0x06, 0x28ad: 0x07, 0x28af: 0x08,
+-	0x28b0: 0x13, 0x28b3: 0x15,
+-	// Block 0xa3, offset 0x28c0
+-	0x28c2: 0x01, 0x28c3: 0x02, 0x28c4: 0x59d, 0x28c5: 0x265, 0x28c6: 0x05, 0x28c7: 0x06,
+-	0x28c8: 0x07, 0x28c9: 0x08, 0x28ca: 0x09, 0x28cb: 0x0a, 0x28cc: 0x0b, 0x28cd: 0x0c, 0x28ce: 0x0d, 0x28cf: 0x0e,
+-	0x28d0: 0x0f, 0x28d1: 0x10, 0x28d2: 0x11, 0x28d3: 0x12, 0x28d4: 0x13, 0x28d5: 0x14, 0x28d6: 0x15, 0x28d7: 0x16,
+-	0x28d8: 0x17, 0x28d9: 0x18, 0x28da: 0x19, 0x28db: 0x1a, 0x28dc: 0x1b, 0x28dd: 0x1c, 0x28de: 0x1d, 0x28df: 0x1e,
+-	0x28e0: 0x01, 0x28e1: 0x53, 0x28e2: 0x03, 0x28e3: 0x04, 0x28e4: 0x05,
+-	0x28ea: 0x06, 0x28ed: 0x07, 0x28ef: 0x08,
+-	0x28f0: 0x13, 0x28f3: 0x15,
+-	// Block 0xa4, offset 0x2900
+-	0x2900: 0x3f, 0x2901: 0x40, 0x2902: 0x41, 0x2903: 0x42, 0x2904: 0x43, 0x2905: 0x44, 0x2906: 0x45, 0x2907: 0x46,
+-	0x2908: 0x47, 0x2909: 0x48, 0x290a: 0x49, 0x290b: 0x4a, 0x290c: 0x4b, 0x290d: 0x4c, 0x290e: 0x4d, 0x290f: 0x4e,
+-	0x2910: 0x4f, 0x2911: 0x50, 0x2912: 0x51, 0x2913: 0x52, 0x2914: 0x53, 0x2915: 0x54, 0x2916: 0x55, 0x2917: 0x56,
+-	0x2918: 0x57, 0x2919: 0x58, 0x291a: 0x59, 0x291b: 0x5a, 0x291c: 0x5b, 0x291d: 0x5c, 0x291e: 0x5d, 0x291f: 0x5e,
+-	0x2920: 0x5f, 0x2921: 0x60, 0x2922: 0x61, 0x2923: 0x62, 0x2924: 0x63, 0x2925: 0x64, 0x2926: 0x65, 0x2927: 0x66,
+-	0x2928: 0x67, 0x2929: 0x68, 0x292a: 0x69, 0x292c: 0x6a, 0x292d: 0x6b, 0x292e: 0x6c, 0x292f: 0x6d,
+-	0x2930: 0x6e, 0x2931: 0x6f, 0x2933: 0x70, 0x2934: 0x71, 0x2935: 0x72, 0x2936: 0x73, 0x2937: 0x74,
+-	0x2938: 0x5a1, 0x2939: 0x76, 0x293a: 0x77, 0x293b: 0x78, 0x293c: 0x79, 0x293d: 0x7a, 0x293e: 0x7b, 0x293f: 0x7c,
+-	// Block 0xa5, offset 0x2940
+-	0x2942: 0x01, 0x2943: 0x5a0, 0x2944: 0x03, 0x2945: 0x04, 0x2946: 0x05, 0x2947: 0x06,
+-	0x2948: 0x07, 0x2949: 0x08, 0x294a: 0x09, 0x294b: 0x0a, 0x294c: 0x0b, 0x294d: 0x0c, 0x294e: 0x0d, 0x294f: 0x0e,
+-	0x2950: 0x0f, 0x2951: 0x10, 0x2952: 0x11, 0x2953: 0x12, 0x2954: 0x13, 0x2955: 0x14, 0x2956: 0x15, 0x2957: 0x16,
+-	0x2958: 0x17, 0x2959: 0x18, 0x295a: 0x19, 0x295b: 0x1a, 0x295c: 0x1b, 0x295d: 0x1c, 0x295e: 0x1d, 0x295f: 0x1e,
+-	0x2960: 0x01, 0x2961: 0xa2, 0x2962: 0x03, 0x2963: 0x04, 0x2964: 0x05,
+-	0x296a: 0x06, 0x296d: 0x07, 0x296f: 0x08,
+-	0x2970: 0x13, 0x2973: 0x15,
+-	// Block 0xa6, offset 0x2980
+-	0x2980: 0x3f, 0x2981: 0x40, 0x2982: 0x41, 0x2983: 0x42, 0x2984: 0x43, 0x2985: 0x44, 0x2986: 0x45, 0x2987: 0x46,
+-	0x2988: 0x47, 0x2989: 0x48, 0x298a: 0x49, 0x298b: 0x4a, 0x298c: 0x4b, 0x298d: 0x4c, 0x298e: 0x4d, 0x298f: 0x4e,
+-	0x2990: 0x4f, 0x2991: 0x50, 0x2992: 0x51, 0x2993: 0x52, 0x2994: 0x53, 0x2995: 0x54, 0x2996: 0x55, 0x2997: 0x56,
+-	0x2998: 0x57, 0x2999: 0x58, 0x299a: 0x59, 0x299b: 0x5a, 0x299c: 0x5b, 0x299d: 0x5c, 0x299e: 0x5d, 0x299f: 0x5e,
+-	0x29a0: 0x5f, 0x29a1: 0x60, 0x29a2: 0x61, 0x29a3: 0x62, 0x29a4: 0x63, 0x29a5: 0x64, 0x29a6: 0x65, 0x29a7: 0x66,
+-	0x29a8: 0x67, 0x29a9: 0x68, 0x29aa: 0x69, 0x29ac: 0x6a, 0x29ad: 0x6b, 0x29ae: 0x6c, 0x29af: 0x6d,
+-	0x29b0: 0x6e, 0x29b1: 0x6f, 0x29b3: 0x70, 0x29b4: 0x71, 0x29b5: 0x72, 0x29b6: 0x1e5, 0x29b7: 0x74,
+-	0x29b8: 0x75, 0x29b9: 0x241, 0x29ba: 0x77, 0x29bb: 0x5a8, 0x29bc: 0x79, 0x29bd: 0x7a, 0x29be: 0x7b, 0x29bf: 0x7c,
+-	// Block 0xa7, offset 0x29c0
+-	0x29c2: 0x01, 0x29c3: 0x5a4, 0x29c4: 0x5a5, 0x29c5: 0x5a6, 0x29c6: 0x05, 0x29c7: 0x5a7,
+-	0x29c8: 0x23f, 0x29c9: 0x08, 0x29ca: 0x09, 0x29cb: 0x0a, 0x29cc: 0x0b, 0x29cd: 0x0c, 0x29ce: 0x0d, 0x29cf: 0x0e,
+-	0x29d0: 0x0f, 0x29d1: 0x10, 0x29d2: 0x11, 0x29d3: 0x12, 0x29d4: 0x13, 0x29d5: 0x14, 0x29d6: 0x15, 0x29d7: 0x16,
+-	0x29d8: 0x17, 0x29d9: 0x18, 0x29da: 0x19, 0x29db: 0x1a, 0x29dc: 0x1b, 0x29dd: 0x1c, 0x29de: 0x1d, 0x29df: 0x1e,
+-	0x29e0: 0x01, 0x29e1: 0xa4, 0x29e2: 0x45, 0x29e3: 0x04, 0x29e4: 0x05,
+-	0x29ea: 0x06, 0x29ed: 0x07, 0x29ef: 0x08,
+-	0x29f0: 0x13, 0x29f3: 0x15,
+-	// Block 0xa8, offset 0x2a00
+-	0x2a20: 0x1f, 0x2a21: 0x20, 0x2a22: 0x21, 0x2a23: 0x22, 0x2a24: 0x23, 0x2a25: 0x24, 0x2a26: 0x25, 0x2a27: 0x26,
+-	0x2a28: 0x27, 0x2a29: 0x28, 0x2a2a: 0x29, 0x2a2b: 0x2a, 0x2a2c: 0x2b, 0x2a2d: 0x2c, 0x2a2e: 0x5a9, 0x2a2f: 0x2e,
+-	0x2a30: 0x2f, 0x2a31: 0x30, 0x2a32: 0x31, 0x2a33: 0x32, 0x2a34: 0x33, 0x2a35: 0x34, 0x2a36: 0x35, 0x2a37: 0x36,
+-	0x2a38: 0x37, 0x2a39: 0x38, 0x2a3a: 0x39, 0x2a3b: 0x3a, 0x2a3c: 0x3b, 0x2a3d: 0x3c, 0x2a3e: 0x3d, 0x2a3f: 0x3e,
+-	// Block 0xa9, offset 0x2a40
+-	0x2a42: 0x01, 0x2a43: 0x02, 0x2a44: 0x03, 0x2a45: 0x04, 0x2a46: 0x05, 0x2a47: 0x06,
+-	0x2a48: 0x07, 0x2a49: 0x08, 0x2a4a: 0x09, 0x2a4b: 0x0a, 0x2a4c: 0x0b, 0x2a4d: 0x0c, 0x2a4e: 0x0d, 0x2a4f: 0x0e,
+-	0x2a50: 0x0f, 0x2a51: 0x10, 0x2a52: 0x11, 0x2a53: 0x12, 0x2a54: 0x13, 0x2a55: 0x14, 0x2a56: 0x15, 0x2a57: 0x16,
+-	0x2a58: 0x17, 0x2a59: 0x18, 0x2a5a: 0x19, 0x2a5b: 0x1a, 0x2a5c: 0x1b, 0x2a5d: 0x1c, 0x2a5e: 0x1d, 0x2a5f: 0x1e,
+-	0x2a60: 0xa6, 0x2a61: 0x02, 0x2a62: 0x03, 0x2a63: 0x04, 0x2a64: 0x05,
+-	0x2a6a: 0x06, 0x2a6d: 0x07, 0x2a6f: 0x08,
+-	0x2a70: 0x13, 0x2a73: 0x15,
+-	// Block 0xaa, offset 0x2a80
+-	0x2aa0: 0x1f, 0x2aa1: 0x20, 0x2aa2: 0x21, 0x2aa3: 0x22, 0x2aa4: 0x23, 0x2aa5: 0x24, 0x2aa6: 0x25, 0x2aa7: 0x26,
+-	0x2aa8: 0x27, 0x2aa9: 0x28, 0x2aaa: 0x29, 0x2aab: 0x2a, 0x2aac: 0x2b, 0x2aad: 0x2c, 0x2aae: 0x2d, 0x2aaf: 0x2e,
+-	0x2ab0: 0x5aa, 0x2ab1: 0x30, 0x2ab2: 0x31, 0x2ab3: 0x32, 0x2ab4: 0x33, 0x2ab5: 0x34, 0x2ab6: 0x35, 0x2ab7: 0x36,
+-	0x2ab8: 0x37, 0x2ab9: 0x38, 0x2aba: 0x39, 0x2abb: 0x3a, 0x2abc: 0x3b, 0x2abd: 0x3c, 0x2abe: 0x3d, 0x2abf: 0x3e,
+-	// Block 0xab, offset 0x2ac0
+-	0x2ac2: 0x01, 0x2ac3: 0x02, 0x2ac4: 0x03, 0x2ac5: 0x04, 0x2ac6: 0x05, 0x2ac7: 0x06,
+-	0x2ac8: 0x07, 0x2ac9: 0x08, 0x2aca: 0x09, 0x2acb: 0x0a, 0x2acc: 0x0b, 0x2acd: 0x0c, 0x2ace: 0x0d, 0x2acf: 0x0e,
+-	0x2ad0: 0x0f, 0x2ad1: 0x10, 0x2ad2: 0x11, 0x2ad3: 0x12, 0x2ad4: 0x13, 0x2ad5: 0x14, 0x2ad6: 0x15, 0x2ad7: 0x16,
+-	0x2ad8: 0x17, 0x2ad9: 0x18, 0x2ada: 0x19, 0x2adb: 0x1a, 0x2adc: 0x1b, 0x2add: 0x1c, 0x2ade: 0x1d, 0x2adf: 0x1e,
+-	0x2ae0: 0xa8, 0x2ae1: 0x02, 0x2ae2: 0x03, 0x2ae3: 0x04, 0x2ae4: 0x05,
+-	0x2aea: 0x06, 0x2aed: 0x07, 0x2aef: 0x08,
+-	0x2af0: 0x13, 0x2af3: 0x15,
+-	// Block 0xac, offset 0x2b00
+-	0x2b20: 0x1f, 0x2b21: 0x20, 0x2b22: 0x21, 0x2b23: 0x22, 0x2b24: 0x23, 0x2b25: 0x24, 0x2b26: 0x25, 0x2b27: 0x26,
+-	0x2b28: 0x27, 0x2b29: 0x28, 0x2b2a: 0x29, 0x2b2b: 0x2a, 0x2b2c: 0x2b, 0x2b2d: 0x2c, 0x2b2e: 0x2d, 0x2b2f: 0x2e,
+-	0x2b30: 0x2f, 0x2b31: 0x30, 0x2b32: 0x31, 0x2b33: 0x32, 0x2b34: 0x33, 0x2b35: 0x34, 0x2b36: 0x35, 0x2b37: 0x36,
+-	0x2b38: 0x5ab, 0x2b39: 0x5ac, 0x2b3a: 0x39, 0x2b3b: 0x3a, 0x2b3c: 0x3b, 0x2b3d: 0x3c, 0x2b3e: 0x3d, 0x2b3f: 0x3e,
+-	// Block 0xad, offset 0x2b40
+-	0x2b42: 0x01, 0x2b43: 0x02, 0x2b44: 0x03, 0x2b45: 0x04, 0x2b46: 0x05, 0x2b47: 0x06,
+-	0x2b48: 0x07, 0x2b49: 0x08, 0x2b4a: 0x09, 0x2b4b: 0x0a, 0x2b4c: 0x0b, 0x2b4d: 0x0c, 0x2b4e: 0x0d, 0x2b4f: 0x0e,
+-	0x2b50: 0x0f, 0x2b51: 0x10, 0x2b52: 0x11, 0x2b53: 0x12, 0x2b54: 0x13, 0x2b55: 0x14, 0x2b56: 0x15, 0x2b57: 0x16,
+-	0x2b58: 0x17, 0x2b59: 0x18, 0x2b5a: 0x19, 0x2b5b: 0x1a, 0x2b5c: 0x1b, 0x2b5d: 0x1c, 0x2b5e: 0x1d, 0x2b5f: 0x1e,
+-	0x2b60: 0xaa, 0x2b61: 0x02, 0x2b62: 0x03, 0x2b63: 0x04, 0x2b64: 0x05,
+-	0x2b6a: 0x06, 0x2b6d: 0x07, 0x2b6f: 0x08,
+-	0x2b70: 0x13, 0x2b73: 0x15,
+-	// Block 0xae, offset 0x2b80
+-	0x2b80: 0x3f, 0x2b81: 0x40, 0x2b82: 0x41, 0x2b83: 0x42, 0x2b84: 0x43, 0x2b85: 0x44, 0x2b86: 0x45, 0x2b87: 0x46,
+-	0x2b88: 0x47, 0x2b89: 0x48, 0x2b8a: 0x49, 0x2b8b: 0x4a, 0x2b8c: 0x4b, 0x2b8d: 0x4c, 0x2b8e: 0x4d, 0x2b8f: 0x4e,
+-	0x2b90: 0x4f, 0x2b91: 0x50, 0x2b92: 0x51, 0x2b93: 0x52, 0x2b94: 0x53, 0x2b95: 0x54, 0x2b96: 0x55, 0x2b97: 0x56,
+-	0x2b98: 0x57, 0x2b99: 0x58, 0x2b9a: 0x59, 0x2b9b: 0x5a, 0x2b9c: 0x5b, 0x2b9d: 0x5c, 0x2b9e: 0x5d, 0x2b9f: 0x5e,
+-	0x2ba0: 0x5f, 0x2ba1: 0x60, 0x2ba2: 0x61, 0x2ba3: 0x62, 0x2ba4: 0x63, 0x2ba5: 0x64, 0x2ba6: 0x65, 0x2ba7: 0x66,
+-	0x2ba8: 0x67, 0x2ba9: 0x68, 0x2baa: 0x69, 0x2bac: 0x6a, 0x2bad: 0x6b, 0x2bae: 0x6c, 0x2baf: 0x6d,
+-	0x2bb0: 0x6e, 0x2bb1: 0x6f, 0x2bb3: 0x70, 0x2bb4: 0x71, 0x2bb5: 0x72, 0x2bb6: 0x73, 0x2bb7: 0x74,
+-	0x2bb8: 0x5b5, 0x2bb9: 0x5b6, 0x2bba: 0x5b7, 0x2bbb: 0x5b8, 0x2bbc: 0x79, 0x2bbd: 0x7a, 0x2bbe: 0x7b, 0x2bbf: 0x7c,
+-	// Block 0xaf, offset 0x2bc0
+-	0x2bc2: 0x01, 0x2bc3: 0x5af, 0x2bc4: 0x5b0, 0x2bc5: 0x5b1, 0x2bc6: 0x05, 0x2bc7: 0x5b2,
+-	0x2bc8: 0x5b3, 0x2bc9: 0x08, 0x2bca: 0x5b4, 0x2bcb: 0x0a, 0x2bcc: 0x0b, 0x2bcd: 0x0c, 0x2bce: 0x0d, 0x2bcf: 0x0e,
+-	0x2bd0: 0x0f, 0x2bd1: 0x10, 0x2bd2: 0x11, 0x2bd3: 0x12, 0x2bd4: 0x13, 0x2bd5: 0x14, 0x2bd6: 0x15, 0x2bd7: 0x16,
+-	0x2bd8: 0x17, 0x2bd9: 0x18, 0x2bda: 0x19, 0x2bdb: 0x1a, 0x2bdc: 0x1b, 0x2bdd: 0x1c, 0x2bde: 0x1d, 0x2bdf: 0x1e,
+-	0x2be0: 0x01, 0x2be1: 0xac, 0x2be2: 0x03, 0x2be3: 0x04, 0x2be4: 0x05,
+-	0x2bea: 0x06, 0x2bed: 0x07, 0x2bef: 0x08,
+-	0x2bf0: 0x13, 0x2bf3: 0x15,
+-	// Block 0xb0, offset 0x2c00
+-	0x2c00: 0x3f, 0x2c01: 0x40, 0x2c02: 0x41, 0x2c03: 0x42, 0x2c04: 0x43, 0x2c05: 0x44, 0x2c06: 0x45, 0x2c07: 0x46,
+-	0x2c08: 0x47, 0x2c09: 0x48, 0x2c0a: 0x49, 0x2c0b: 0x4a, 0x2c0c: 0x4b, 0x2c0d: 0x4c, 0x2c0e: 0x4d, 0x2c0f: 0x4e,
+-	0x2c10: 0x4f, 0x2c11: 0x50, 0x2c12: 0x51, 0x2c13: 0x52, 0x2c14: 0x53, 0x2c15: 0x54, 0x2c16: 0x55, 0x2c17: 0x56,
+-	0x2c18: 0x57, 0x2c19: 0x58, 0x2c1a: 0x59, 0x2c1b: 0x5a, 0x2c1c: 0x5b, 0x2c1d: 0x5c, 0x2c1e: 0x5d, 0x2c1f: 0x5e,
+-	0x2c20: 0x5f, 0x2c21: 0x60, 0x2c22: 0x61, 0x2c23: 0x62, 0x2c24: 0x63, 0x2c25: 0x64, 0x2c26: 0x65, 0x2c27: 0x66,
+-	0x2c28: 0x67, 0x2c29: 0x68, 0x2c2a: 0x69, 0x2c2c: 0x6a, 0x2c2d: 0x6b, 0x2c2e: 0x6c, 0x2c2f: 0x6d,
+-	0x2c30: 0x6e, 0x2c31: 0x6f, 0x2c33: 0x70, 0x2c34: 0x71, 0x2c35: 0x72, 0x2c36: 0x73, 0x2c37: 0x74,
+-	0x2c38: 0x1c7, 0x2c39: 0x1c8, 0x2c3a: 0x77, 0x2c3b: 0x1ca, 0x2c3c: 0x79, 0x2c3d: 0x7a, 0x2c3e: 0x7b, 0x2c3f: 0x7c,
+-	// Block 0xb1, offset 0x2c40
+-	0x2c40: 0x7d, 0x2c41: 0x7e, 0x2c42: 0x7f, 0x2c43: 0x80, 0x2c44: 0x81, 0x2c45: 0x5bb, 0x2c46: 0x83, 0x2c47: 0x84,
+-	0x2c48: 0x85, 0x2c49: 0x86, 0x2c4a: 0x87, 0x2c4b: 0x88, 0x2c4c: 0x89, 0x2c4d: 0x8a, 0x2c4e: 0x8b, 0x2c4f: 0x8c,
+-	0x2c50: 0x8d, 0x2c51: 0x8e, 0x2c52: 0x8f, 0x2c53: 0x90, 0x2c54: 0x91, 0x2c55: 0x92, 0x2c56: 0x93, 0x2c57: 0x94,
+-	0x2c58: 0x95, 0x2c59: 0x96, 0x2c5a: 0x97, 0x2c5b: 0x98, 0x2c5c: 0x99, 0x2c5d: 0x9a, 0x2c5e: 0x9b, 0x2c5f: 0x9c,
+-	0x2c60: 0x9d, 0x2c61: 0x9e, 0x2c62: 0x9f, 0x2c63: 0xa0, 0x2c64: 0xa1, 0x2c65: 0xa2, 0x2c66: 0xa3, 0x2c67: 0xa4,
+-	0x2c68: 0xa5, 0x2c69: 0xa6, 0x2c6a: 0xa7, 0x2c6b: 0xa8, 0x2c6c: 0xa9, 0x2c6d: 0xaa,
+-	0x2c70: 0xab, 0x2c71: 0xac, 0x2c72: 0xad, 0x2c73: 0xae, 0x2c74: 0xaf, 0x2c75: 0xb0, 0x2c76: 0xb1, 0x2c77: 0xb2,
+-	0x2c78: 0xb3, 0x2c7a: 0xb4, 0x2c7b: 0xb5, 0x2c7c: 0xb6, 0x2c7d: 0xb7, 0x2c7e: 0xb8, 0x2c7f: 0xb9,
+-	// Block 0xb2, offset 0x2c80
+-	0x2c80: 0xba, 0x2c81: 0xbb, 0x2c82: 0xbc, 0x2c83: 0xbd, 0x2c84: 0xbe, 0x2c85: 0xbf, 0x2c86: 0xc0, 0x2c87: 0xc1,
+-	0x2c88: 0xc2, 0x2c89: 0xc3, 0x2c8a: 0xc4, 0x2c8b: 0xc5, 0x2c8c: 0xc6, 0x2c8d: 0x1cd, 0x2c8e: 0xc8, 0x2c8f: 0xc9,
+-	// Block 0xb3, offset 0x2cc0
+-	0x2cc0: 0x18b, 0x2cc1: 0x18c, 0x2cc2: 0x18d, 0x2cc3: 0x18e, 0x2cc4: 0x5bc, 0x2cc5: 0x190, 0x2cc6: 0x191, 0x2cc7: 0x192,
+-	0x2cc8: 0x193, 0x2cc9: 0x194, 0x2ccc: 0x195, 0x2ccd: 0x196, 0x2cce: 0x197, 0x2ccf: 0x198,
+-	0x2cd0: 0x199, 0x2cd1: 0x19a, 0x2cd2: 0x19b, 0x2cd3: 0x19c, 0x2cd4: 0x19d, 0x2cd5: 0x19e, 0x2cd7: 0x19f,
+-	0x2cd8: 0x1a0, 0x2cd9: 0x1a1, 0x2cda: 0x1a2, 0x2cdb: 0x1a3, 0x2cdc: 0x1a4, 0x2cdd: 0x1a5,
+-	// Block 0xb4, offset 0x2d00
+-	0x2d10: 0x09, 0x2d11: 0x0a, 0x2d12: 0x0b, 0x2d13: 0x0c, 0x2d16: 0x0d,
+-	0x2d1b: 0x0e, 0x2d1d: 0x0f, 0x2d1e: 0x10, 0x2d1f: 0xb1,
+-	0x2d2f: 0x12,
+-	// Block 0xb5, offset 0x2d40
+-	0x2d42: 0x01, 0x2d43: 0x1c0, 0x2d44: 0x1c1, 0x2d45: 0x1c2, 0x2d46: 0x05, 0x2d47: 0x1c4,
+-	0x2d48: 0x1c5, 0x2d49: 0x08, 0x2d4a: 0x09, 0x2d4b: 0x0a, 0x2d4c: 0x0b, 0x2d4d: 0x0c, 0x2d4e: 0x0d, 0x2d4f: 0x0e,
+-	0x2d50: 0x0f, 0x2d51: 0x10, 0x2d52: 0x11, 0x2d53: 0x12, 0x2d54: 0x13, 0x2d55: 0x14, 0x2d56: 0x15, 0x2d57: 0x16,
+-	0x2d58: 0x17, 0x2d59: 0x18, 0x2d5a: 0x19, 0x2d5b: 0x1a, 0x2d5c: 0x1b, 0x2d5d: 0x1c, 0x2d5e: 0x1d, 0x2d5f: 0x1e,
+-	0x2d60: 0x01, 0x2d61: 0xae, 0x2d62: 0xaf, 0x2d63: 0xb0, 0x2d64: 0x05,
+-	0x2d6a: 0x06, 0x2d6d: 0x07, 0x2d6f: 0x08,
+-	0x2d70: 0xb2, 0x2d73: 0x15,
+-	// Block 0xb6, offset 0x2d80
+-	0x2d82: 0x01, 0x2d83: 0x02, 0x2d84: 0x03, 0x2d85: 0x04, 0x2d86: 0x05, 0x2d87: 0x06,
+-	0x2d88: 0x07, 0x2d89: 0x08, 0x2d8a: 0x09, 0x2d8b: 0x0a, 0x2d8c: 0x0b, 0x2d8d: 0x0c, 0x2d8e: 0x0d, 0x2d8f: 0x0e,
+-	0x2d90: 0x0f, 0x2d91: 0x10, 0x2d92: 0x5bd, 0x2d93: 0x12, 0x2d94: 0x13, 0x2d95: 0x14, 0x2d96: 0x15, 0x2d97: 0x16,
+-	0x2d98: 0x17, 0x2d99: 0x18, 0x2d9a: 0x19, 0x2d9b: 0x1a, 0x2d9c: 0x1b, 0x2d9d: 0x1c, 0x2d9e: 0x1d, 0x2d9f: 0x1e,
+-	0x2da0: 0x01, 0x2da1: 0x02, 0x2da2: 0x03, 0x2da3: 0x04, 0x2da4: 0x05,
+-	0x2daa: 0x06, 0x2dad: 0x07, 0x2daf: 0x08,
+-	0x2db0: 0x13, 0x2db3: 0x15,
+-	// Block 0xb7, offset 0x2dc0
+-	0x2de4: 0xfb, 0x2de5: 0xfc, 0x2de6: 0xfd, 0x2de7: 0xfe,
+-	0x2de8: 0xff, 0x2de9: 0x100, 0x2dea: 0x101, 0x2deb: 0x102, 0x2dec: 0x103, 0x2ded: 0x104, 0x2dee: 0x232, 0x2def: 0x106,
+-	0x2df0: 0x5c2, 0x2df1: 0x5c3, 0x2df2: 0x5c4, 0x2df3: 0x5c5, 0x2df4: 0x5c6, 0x2df5: 0x10c, 0x2df6: 0x10d, 0x2df7: 0x10e,
+-	0x2df8: 0x10f, 0x2df9: 0x110, 0x2dfa: 0x111, 0x2dfb: 0x5c7, 0x2dfc: 0x113, 0x2dfd: 0x114, 0x2dfe: 0x115, 0x2dff: 0x116,
+-	// Block 0xb8, offset 0x2e00
+-	0x2e02: 0x01, 0x2e03: 0x02, 0x2e04: 0x03, 0x2e05: 0x04, 0x2e06: 0x05, 0x2e07: 0x06,
+-	0x2e08: 0x07, 0x2e09: 0x08, 0x2e0a: 0x09, 0x2e0b: 0x0a, 0x2e0c: 0x0b, 0x2e0d: 0x0c, 0x2e0e: 0x0d, 0x2e0f: 0x0e,
+-	0x2e10: 0x0f, 0x2e11: 0x10, 0x2e12: 0x11, 0x2e13: 0x12, 0x2e14: 0x13, 0x2e15: 0x14, 0x2e16: 0x15, 0x2e17: 0x16,
+-	0x2e18: 0x5be, 0x2e19: 0x5bf, 0x2e1a: 0x5c0, 0x2e1b: 0x5c1, 0x2e1c: 0x1b, 0x2e1d: 0x1c, 0x2e1e: 0x1d, 0x2e1f: 0x1e,
+-	0x2e20: 0x01, 0x2e21: 0x02, 0x2e22: 0x03, 0x2e23: 0x04, 0x2e24: 0x05,
+-	0x2e2a: 0x06, 0x2e2d: 0x07, 0x2e2f: 0xb5,
+-	0x2e30: 0x13, 0x2e33: 0x15,
+-	// Block 0xb9, offset 0x2e40
+-	0x2e40: 0x3f, 0x2e41: 0x40, 0x2e42: 0x41, 0x2e43: 0x42, 0x2e44: 0x43, 0x2e45: 0x44, 0x2e46: 0x45, 0x2e47: 0x46,
+-	0x2e48: 0x47, 0x2e49: 0x48, 0x2e4a: 0x49, 0x2e4b: 0x4a, 0x2e4c: 0x4b, 0x2e4d: 0x4c, 0x2e4e: 0x4d, 0x2e4f: 0x4e,
+-	0x2e50: 0x4f, 0x2e51: 0x50, 0x2e52: 0x51, 0x2e53: 0x52, 0x2e54: 0x53, 0x2e55: 0x54, 0x2e56: 0x55, 0x2e57: 0x56,
+-	0x2e58: 0x57, 0x2e59: 0x58, 0x2e5a: 0x59, 0x2e5b: 0x5a, 0x2e5c: 0x5b, 0x2e5d: 0x5c, 0x2e5e: 0x5d, 0x2e5f: 0x5e,
+-	0x2e60: 0x5f, 0x2e61: 0x60, 0x2e62: 0x61, 0x2e63: 0x62, 0x2e64: 0x63, 0x2e65: 0x64, 0x2e66: 0x65, 0x2e67: 0x66,
+-	0x2e68: 0x67, 0x2e69: 0x68, 0x2e6a: 0x69, 0x2e6c: 0x6a, 0x2e6d: 0x6b, 0x2e6e: 0x6c, 0x2e6f: 0x6d,
+-	0x2e70: 0x6e, 0x2e71: 0x6f, 0x2e73: 0x70, 0x2e74: 0x71, 0x2e75: 0x72, 0x2e76: 0x73, 0x2e77: 0x74,
+-	0x2e78: 0x5d4, 0x2e79: 0x5d5, 0x2e7a: 0x5d6, 0x2e7b: 0x5d7, 0x2e7c: 0x5d8, 0x2e7d: 0x5d9, 0x2e7e: 0x5da, 0x2e7f: 0x5db,
+-	// Block 0xba, offset 0x2e80
+-	0x2e82: 0x01, 0x2e83: 0x5ca, 0x2e84: 0x5cb, 0x2e85: 0x5cc, 0x2e86: 0x5cd, 0x2e87: 0x5ce,
+-	0x2e88: 0x5cf, 0x2e89: 0x08, 0x2e8a: 0x09, 0x2e8b: 0x0a, 0x2e8c: 0x5d0, 0x2e8d: 0x5d1, 0x2e8e: 0x5d2, 0x2e8f: 0x5d3,
+-	0x2e90: 0x0f, 0x2e91: 0x10, 0x2e92: 0x11, 0x2e93: 0x12, 0x2e94: 0x13, 0x2e95: 0x14, 0x2e96: 0x15, 0x2e97: 0x16,
+-	0x2e98: 0x17, 0x2e99: 0x18, 0x2e9a: 0x19, 0x2e9b: 0x1a, 0x2e9c: 0x1b, 0x2e9d: 0x1c, 0x2e9e: 0x1d, 0x2e9f: 0x1e,
+-	0x2ea0: 0x01, 0x2ea1: 0xb7, 0x2ea2: 0x03, 0x2ea3: 0x04, 0x2ea4: 0x05,
+-	0x2eaa: 0x06, 0x2ead: 0x07, 0x2eaf: 0x08,
+-	0x2eb0: 0x13, 0x2eb3: 0x15,
+-	// Block 0xbb, offset 0x2ec0
+-	0x2ec2: 0x01, 0x2ec3: 0x5de, 0x2ec4: 0x03, 0x2ec5: 0x04, 0x2ec6: 0x05, 0x2ec7: 0x06,
+-	0x2ec8: 0x07, 0x2ec9: 0x08, 0x2eca: 0x09, 0x2ecb: 0x0a, 0x2ecc: 0x0b, 0x2ecd: 0x0c, 0x2ece: 0x0d, 0x2ecf: 0x0e,
+-	0x2ed0: 0x0f, 0x2ed1: 0x10, 0x2ed2: 0x11, 0x2ed3: 0x12, 0x2ed4: 0x13, 0x2ed5: 0x14, 0x2ed6: 0x15, 0x2ed7: 0x16,
+-	0x2ed8: 0x17, 0x2ed9: 0x18, 0x2eda: 0x19, 0x2edb: 0x1a, 0x2edc: 0x1b, 0x2edd: 0x1c, 0x2ede: 0x1d, 0x2edf: 0x1e,
+-	0x2ee0: 0x01, 0x2ee1: 0x02, 0x2ee2: 0x03, 0x2ee3: 0x04, 0x2ee4: 0x05,
+-	0x2eea: 0x06, 0x2eed: 0x07, 0x2eef: 0x08,
+-	0x2ef0: 0x13, 0x2ef3: 0x15,
+-	// Block 0xbc, offset 0x2f00
+-	0x2f00: 0x3f, 0x2f01: 0x40, 0x2f02: 0x41, 0x2f03: 0x42, 0x2f04: 0x43, 0x2f05: 0x44, 0x2f06: 0x45, 0x2f07: 0x46,
+-	0x2f08: 0x47, 0x2f09: 0x48, 0x2f0a: 0x49, 0x2f0b: 0x4a, 0x2f0c: 0x4b, 0x2f0d: 0x4c, 0x2f0e: 0x4d, 0x2f0f: 0x4e,
+-	0x2f10: 0x4f, 0x2f11: 0x50, 0x2f12: 0x51, 0x2f13: 0x52, 0x2f14: 0x53, 0x2f15: 0x54, 0x2f16: 0x55, 0x2f17: 0x56,
+-	0x2f18: 0x57, 0x2f19: 0x58, 0x2f1a: 0x59, 0x2f1b: 0x5a, 0x2f1c: 0x5b, 0x2f1d: 0x5c, 0x2f1e: 0x5d, 0x2f1f: 0x5e,
+-	0x2f20: 0x5f, 0x2f21: 0x60, 0x2f22: 0x61, 0x2f23: 0x62, 0x2f24: 0x63, 0x2f25: 0x64, 0x2f26: 0x65, 0x2f27: 0x66,
+-	0x2f28: 0x67, 0x2f29: 0x68, 0x2f2a: 0x69, 0x2f2c: 0x6a, 0x2f2d: 0x6b, 0x2f2e: 0x6c, 0x2f2f: 0x6d,
+-	0x2f30: 0x6e, 0x2f31: 0x6f, 0x2f33: 0x70, 0x2f34: 0x71, 0x2f35: 0x72, 0x2f36: 0x73, 0x2f37: 0x74,
+-	0x2f38: 0x75, 0x2f39: 0x5e1, 0x2f3a: 0x5e2, 0x2f3b: 0x5e3, 0x2f3c: 0x79, 0x2f3d: 0x7a, 0x2f3e: 0x7b, 0x2f3f: 0x7c,
+-	// Block 0xbd, offset 0x2f40
+-	0x2f42: 0x01, 0x2f43: 0x02, 0x2f44: 0x03, 0x2f45: 0x04, 0x2f46: 0x05, 0x2f47: 0x06,
+-	0x2f48: 0x07, 0x2f49: 0x08, 0x2f4a: 0x09, 0x2f4b: 0x0a, 0x2f4c: 0x0b, 0x2f4d: 0x0c, 0x2f4e: 0x0d, 0x2f4f: 0x0e,
+-	0x2f50: 0x0f, 0x2f51: 0x10, 0x2f52: 0x11, 0x2f53: 0x12, 0x2f54: 0x13, 0x2f55: 0x14, 0x2f56: 0x15, 0x2f57: 0x16,
+-	0x2f58: 0x17, 0x2f59: 0x18, 0x2f5a: 0x19, 0x2f5b: 0x1a, 0x2f5c: 0x1b, 0x2f5d: 0x1c, 0x2f5e: 0x1d, 0x2f5f: 0x1e,
+-	0x2f60: 0x01, 0x2f61: 0xba, 0x2f62: 0x03, 0x2f63: 0x04, 0x2f64: 0x05,
+-	0x2f6a: 0x06, 0x2f6d: 0x07, 0x2f6f: 0x08,
+-	0x2f70: 0x13, 0x2f73: 0x15,
+-	// Block 0xbe, offset 0x2f80
+-	0x2f80: 0x3f, 0x2f81: 0x40, 0x2f82: 0x41, 0x2f83: 0x42, 0x2f84: 0x43, 0x2f85: 0x44, 0x2f86: 0x45, 0x2f87: 0x46,
+-	0x2f88: 0x47, 0x2f89: 0x48, 0x2f8a: 0x49, 0x2f8b: 0x4a, 0x2f8c: 0x4b, 0x2f8d: 0x4c, 0x2f8e: 0x4d, 0x2f8f: 0x4e,
+-	0x2f90: 0x4f, 0x2f91: 0x50, 0x2f92: 0x51, 0x2f93: 0x52, 0x2f94: 0x53, 0x2f95: 0x54, 0x2f96: 0x55, 0x2f97: 0x56,
+-	0x2f98: 0x57, 0x2f99: 0x58, 0x2f9a: 0x59, 0x2f9b: 0x5a, 0x2f9c: 0x5b, 0x2f9d: 0x5c, 0x2f9e: 0x5d, 0x2f9f: 0x5e,
+-	0x2fa0: 0x5f, 0x2fa1: 0x60, 0x2fa2: 0x61, 0x2fa3: 0x62, 0x2fa4: 0x63, 0x2fa5: 0x64, 0x2fa6: 0x65, 0x2fa7: 0x66,
+-	0x2fa8: 0x67, 0x2fa9: 0x68, 0x2faa: 0x69, 0x2fac: 0x6a, 0x2fad: 0x6b, 0x2fae: 0x6c, 0x2faf: 0x6d,
+-	0x2fb0: 0x6e, 0x2fb1: 0x6f, 0x2fb3: 0x70, 0x2fb4: 0x71, 0x2fb5: 0x72, 0x2fb6: 0x73, 0x2fb7: 0x74,
+-	0x2fb8: 0x5eb, 0x2fb9: 0x5ec, 0x2fba: 0x5ed, 0x2fbb: 0x5ee, 0x2fbc: 0x79, 0x2fbd: 0x7a, 0x2fbe: 0x7b, 0x2fbf: 0x7c,
+-	// Block 0xbf, offset 0x2fc0
+-	0x2fc0: 0x7d, 0x2fc1: 0x7e, 0x2fc2: 0x7f, 0x2fc3: 0x80, 0x2fc4: 0x81, 0x2fc5: 0x82, 0x2fc6: 0x83, 0x2fc7: 0x84,
+-	0x2fc8: 0x85, 0x2fc9: 0x86, 0x2fca: 0x87, 0x2fcb: 0x88, 0x2fcc: 0x89, 0x2fcd: 0x8a, 0x2fce: 0x8b, 0x2fcf: 0x8c,
+-	0x2fd0: 0x8d, 0x2fd1: 0x8e, 0x2fd2: 0x8f, 0x2fd3: 0x90, 0x2fd4: 0x91, 0x2fd5: 0x92, 0x2fd6: 0x93, 0x2fd7: 0x94,
+-	0x2fd8: 0x95, 0x2fd9: 0x96, 0x2fda: 0x97, 0x2fdb: 0x98, 0x2fdc: 0x99, 0x2fdd: 0x9a, 0x2fde: 0x9b, 0x2fdf: 0x9c,
+-	0x2fe0: 0x9d, 0x2fe1: 0x9e, 0x2fe2: 0x9f, 0x2fe3: 0xa0, 0x2fe4: 0xa1, 0x2fe5: 0xa2, 0x2fe6: 0xa3, 0x2fe7: 0xa4,
+-	0x2fe8: 0xa5, 0x2fe9: 0xa6, 0x2fea: 0xa7, 0x2feb: 0xa8, 0x2fec: 0xa9, 0x2fed: 0xaa,
+-	0x2ff0: 0xab, 0x2ff1: 0xac, 0x2ff2: 0xad, 0x2ff3: 0xae, 0x2ff4: 0xaf, 0x2ff5: 0xb0, 0x2ff6: 0xb1, 0x2ff7: 0xb2,
+-	0x2ff8: 0xb3, 0x2ffa: 0x5ef, 0x2ffb: 0x5f0, 0x2ffc: 0x5f1, 0x2ffd: 0x5f2, 0x2ffe: 0x5f3, 0x2fff: 0x5f4,
+-	// Block 0xc0, offset 0x3000
+-	0x3000: 0x5f5, 0x3001: 0xbb, 0x3002: 0xbc, 0x3003: 0xbd, 0x3004: 0xbe, 0x3005: 0xbf, 0x3006: 0x5f6, 0x3007: 0xc1,
+-	0x3008: 0x5f7, 0x3009: 0x5f8, 0x300a: 0x5f9, 0x300b: 0x5fa, 0x300c: 0xc6, 0x300d: 0x5fb, 0x300e: 0xc8, 0x300f: 0x5fc,
+-	0x3010: 0x5fd, 0x3011: 0x5fe, 0x3012: 0x5ff, 0x3013: 0x600, 0x3014: 0x601, 0x3015: 0x602, 0x3016: 0x603, 0x3017: 0x604,
+-	0x3018: 0x605, 0x3019: 0x606, 0x301a: 0x607, 0x301b: 0x608, 0x301c: 0x609, 0x301d: 0x60a, 0x301e: 0x60b, 0x301f: 0x60c,
+-	0x3020: 0x60d, 0x3021: 0x60e, 0x3022: 0x60f, 0x3023: 0x610, 0x3024: 0x611, 0x3025: 0x612, 0x3026: 0x613, 0x3027: 0x614,
+-	0x3028: 0x615, 0x3029: 0x616, 0x302a: 0x617, 0x302b: 0x618, 0x302c: 0x619, 0x302d: 0x61a, 0x302e: 0x61b, 0x302f: 0x61c,
+-	0x3030: 0x61d, 0x3031: 0x61e, 0x3032: 0x61f, 0x3033: 0x620, 0x3034: 0x621, 0x3035: 0x622, 0x3036: 0x623, 0x3037: 0x624,
+-	0x3038: 0x625, 0x3039: 0x626, 0x303a: 0x627, 0x303b: 0x628, 0x303c: 0x629, 0x303d: 0x62a, 0x303e: 0x62b, 0x303f: 0x62c,
+-	// Block 0xc1, offset 0x3040
+-	0x3040: 0x62d, 0x3041: 0x62e, 0x3042: 0x62f, 0x3043: 0x630, 0x3044: 0x631, 0x3045: 0x632, 0x3046: 0x633, 0x3047: 0x634,
+-	0x3048: 0x635, 0x3049: 0x636, 0x304a: 0x637, 0x304b: 0x638, 0x304c: 0x639, 0x304d: 0x63a, 0x304e: 0x63b, 0x304f: 0x63c,
+-	0x3050: 0x63d, 0x3051: 0x63e, 0x3052: 0x63f, 0x3053: 0x640, 0x3054: 0x641, 0x3055: 0x642, 0x3056: 0x643, 0x3057: 0x644,
+-	0x3058: 0x645, 0x3059: 0x646, 0x305a: 0x647, 0x305b: 0x648, 0x305c: 0x649, 0x305d: 0x64a, 0x305e: 0x64b, 0x305f: 0x64c,
+-	0x3060: 0x64d, 0x3061: 0x64e, 0x3062: 0x64f, 0x3063: 0x650, 0x3064: 0x651, 0x3065: 0x652, 0x3066: 0x653, 0x3067: 0x654,
+-	0x3068: 0x655, 0x3069: 0x656, 0x306a: 0x657, 0x306b: 0x658, 0x306c: 0x659, 0x306d: 0x65a, 0x306e: 0x65b, 0x306f: 0x65c,
+-	0x3070: 0x65d, 0x3071: 0x65e, 0x3072: 0x65f, 0x3073: 0x660, 0x3074: 0x661, 0x3075: 0x662, 0x3076: 0x663, 0x3077: 0xca,
+-	0x3078: 0x664, 0x3079: 0x665, 0x307a: 0x666, 0x307b: 0x667, 0x307c: 0x668, 0x307d: 0x669, 0x307e: 0x66a, 0x307f: 0x66b,
+-	// Block 0xc2, offset 0x3080
+-	0x3080: 0x66c, 0x3081: 0x66d, 0x3082: 0x66e, 0x3083: 0x66f, 0x3084: 0x670, 0x3085: 0x671, 0x3086: 0x672, 0x3087: 0x673,
+-	0x3088: 0x674, 0x3089: 0x675, 0x308a: 0x676, 0x308b: 0x677, 0x308c: 0x678, 0x308d: 0x679, 0x308e: 0x67a, 0x308f: 0x67b,
+-	0x3090: 0x67c, 0x3091: 0x67d, 0x3092: 0x67e, 0x3093: 0x67f, 0x3094: 0x680, 0x3095: 0x681, 0x3096: 0x682, 0x3097: 0x683,
+-	0x3098: 0x684, 0x3099: 0x685, 0x309a: 0x686, 0x309b: 0x687, 0x309c: 0x688, 0x309d: 0x689, 0x309e: 0x68a, 0x309f: 0x68b,
+-	0x30a0: 0x68c, 0x30a1: 0x68d, 0x30a2: 0x68e, 0x30a3: 0x68f, 0x30a4: 0x690, 0x30a5: 0x691, 0x30a6: 0x692, 0x30a7: 0x693,
+-	0x30a8: 0x694, 0x30a9: 0x695, 0x30aa: 0x696, 0x30ab: 0x697, 0x30ac: 0x698, 0x30ad: 0x699, 0x30ae: 0x69a, 0x30af: 0x69b,
+-	0x30b0: 0x69c, 0x30b1: 0x69d, 0x30b2: 0x69e, 0x30b3: 0x69f, 0x30b4: 0x6a0, 0x30b5: 0x6a1, 0x30b6: 0x6a2, 0x30b7: 0x6a3,
+-	0x30b8: 0x6a4, 0x30b9: 0x6a5, 0x30ba: 0x6a6, 0x30bb: 0x6a7, 0x30bc: 0x6a8, 0x30bd: 0x6a9, 0x30be: 0x6aa, 0x30bf: 0x6ab,
+-	// Block 0xc3, offset 0x30c0
+-	0x30c0: 0x6ac, 0x30c1: 0x6ad, 0x30c2: 0x6ae, 0x30c3: 0x6af, 0x30c4: 0x6b0, 0x30c5: 0x6b1, 0x30c6: 0x6b2, 0x30c7: 0x6b3,
+-	0x30c8: 0x6b4, 0x30c9: 0x6b5, 0x30ca: 0x6b6, 0x30cb: 0x6b7, 0x30cc: 0x6b8, 0x30cd: 0x6b9, 0x30ce: 0x6ba, 0x30cf: 0x6bb,
+-	0x30d0: 0x6bc, 0x30d1: 0x6bd, 0x30d2: 0x6be, 0x30d3: 0x6bf, 0x30d4: 0x6c0, 0x30d5: 0x6c1, 0x30d6: 0x6c2, 0x30d7: 0x6c3,
+-	0x30d8: 0x6c4, 0x30d9: 0x6c5, 0x30da: 0x6c6, 0x30db: 0x6c7, 0x30dc: 0x6c8, 0x30dd: 0x6c9, 0x30de: 0x6ca, 0x30df: 0x6cb,
+-	0x30e0: 0x6cc, 0x30e1: 0x6cd, 0x30e2: 0x6ce, 0x30e3: 0x6cf, 0x30e4: 0x6d0, 0x30e5: 0x6d1, 0x30e6: 0x6d2, 0x30e7: 0x6d3,
+-	0x30e8: 0x6d4, 0x30e9: 0x6d5, 0x30ea: 0x6d6, 0x30eb: 0x6d7, 0x30ec: 0x6d8, 0x30ed: 0x6d9, 0x30ee: 0x6da, 0x30ef: 0x6db,
+-	0x30f0: 0x6dc, 0x30f1: 0x6dd, 0x30f2: 0x6de, 0x30f3: 0x6df, 0x30f4: 0x6e0, 0x30f5: 0x6e1, 0x30f6: 0x6e2, 0x30f7: 0x6e3,
+-	0x30f8: 0x6e4, 0x30f9: 0x6e5, 0x30fa: 0x6e6, 0x30fb: 0x6e7, 0x30fc: 0x6e8, 0x30fd: 0x6e9, 0x30fe: 0x6ea, 0x30ff: 0x6eb,
+-	// Block 0xc4, offset 0x3100
+-	0x3100: 0x6ec, 0x3101: 0x6ed, 0x3102: 0x6ee, 0x3103: 0x6ef, 0x3104: 0x6f0, 0x3105: 0x6f1, 0x3106: 0x6f2, 0x3107: 0x6f3,
+-	0x3108: 0x6f4, 0x3109: 0x6f5, 0x310a: 0x6f6, 0x310b: 0x6f7, 0x310c: 0x6f8, 0x310d: 0x6f9, 0x310e: 0x6fa, 0x310f: 0x6fb,
+-	0x3110: 0x6fc, 0x3111: 0x6fd, 0x3112: 0x6fe, 0x3113: 0x6ff, 0x3114: 0x700, 0x3115: 0x701, 0x3116: 0x702, 0x3117: 0x703,
+-	0x3118: 0x704, 0x3119: 0x705, 0x311a: 0x706, 0x311b: 0x707, 0x311c: 0x708, 0x311d: 0x709, 0x311e: 0x70a, 0x311f: 0x70b,
+-	0x3120: 0x70c, 0x3121: 0x70d, 0x3122: 0x70e, 0x3123: 0x70f, 0x3124: 0x710, 0x3125: 0x711, 0x3126: 0x712, 0x3127: 0x713,
+-	0x3128: 0x714, 0x3129: 0x715, 0x312a: 0x716, 0x312b: 0x717, 0x312c: 0x718, 0x312d: 0x719, 0x312e: 0x71a, 0x312f: 0x71b,
+-	0x3130: 0x71c, 0x3131: 0x71d, 0x3132: 0x71e, 0x3133: 0x71f, 0x3134: 0x720, 0x3135: 0x721, 0x3136: 0x722, 0x3137: 0x723,
+-	0x3138: 0x724, 0x3139: 0x725, 0x313a: 0x726, 0x313b: 0x727, 0x313c: 0x728, 0x313d: 0x729, 0x313e: 0x72a, 0x313f: 0x72b,
+-	// Block 0xc5, offset 0x3140
+-	0x3140: 0x72c, 0x3141: 0x72d, 0x3142: 0x72e, 0x3143: 0x72f, 0x3144: 0x730, 0x3145: 0x731, 0x3146: 0x732, 0x3147: 0x733,
+-	0x3148: 0x734, 0x3149: 0x735, 0x314a: 0x736, 0x314b: 0x737, 0x314c: 0x738, 0x314d: 0x739, 0x314e: 0x73a, 0x314f: 0x73b,
+-	0x3150: 0x73c, 0x3151: 0x73d, 0x3152: 0x73e, 0x3153: 0x73f, 0x3154: 0x740, 0x3155: 0x741, 0x3156: 0x742, 0x3157: 0x743,
+-	0x3158: 0x744, 0x3159: 0x745, 0x315a: 0x746, 0x315b: 0x747, 0x315c: 0x748, 0x315d: 0x749, 0x315e: 0x74a, 0x315f: 0x74b,
+-	0x3160: 0x74c, 0x3161: 0x74d, 0x3162: 0x74e, 0x3163: 0x74f, 0x3164: 0x750, 0x3165: 0x751, 0x3166: 0x752, 0x3167: 0x753,
+-	0x3168: 0x754, 0x3169: 0x755, 0x316a: 0x756, 0x316b: 0x757, 0x316c: 0x758, 0x316d: 0x759, 0x316e: 0x75a, 0x316f: 0x75b,
+-	0x3170: 0x75c, 0x3171: 0x75d, 0x3172: 0x75e, 0x3173: 0x75f, 0x3174: 0x760, 0x3175: 0x761, 0x3176: 0x762, 0x3177: 0x763,
+-	0x3178: 0x764, 0x3179: 0x765, 0x317a: 0x766, 0x317b: 0x767, 0x317c: 0x768, 0x317d: 0x769, 0x317e: 0x76a, 0x317f: 0x76b,
+-	// Block 0xc6, offset 0x3180
+-	0x3180: 0x76c, 0x3181: 0x76d, 0x3182: 0x76e, 0x3183: 0x76f, 0x3184: 0x770, 0x3185: 0x771, 0x3186: 0x772, 0x3187: 0x773,
+-	0x3188: 0x774, 0x3189: 0x775, 0x318a: 0x776, 0x318b: 0x777, 0x318c: 0x778, 0x318d: 0x779, 0x318e: 0x77a, 0x318f: 0x77b,
+-	0x3190: 0x77c, 0x3191: 0x77d, 0x3192: 0x77e, 0x3193: 0x77f, 0x3194: 0x780, 0x3195: 0x781, 0x3196: 0x782, 0x3197: 0x783,
+-	0x3198: 0x784, 0x3199: 0x785, 0x319a: 0x786, 0x319b: 0x787, 0x319c: 0x788, 0x319d: 0x789, 0x319e: 0x78a, 0x319f: 0x78b,
+-	0x31a0: 0x78c, 0x31a1: 0x78d, 0x31a2: 0x78e, 0x31a3: 0x78f, 0x31a4: 0x790, 0x31a5: 0x791, 0x31a6: 0x792, 0x31a7: 0x793,
+-	0x31a8: 0x794, 0x31a9: 0x795, 0x31aa: 0x796, 0x31ab: 0x797, 0x31ac: 0x798, 0x31ad: 0x799, 0x31ae: 0x79a, 0x31af: 0x79b,
+-	0x31b0: 0x79c, 0x31b1: 0x79d, 0x31b2: 0x79e, 0x31b3: 0x79f, 0x31b4: 0x7a0, 0x31b5: 0x7a1, 0x31b6: 0x7a2, 0x31b7: 0x7a3,
+-	0x31b8: 0x7a4, 0x31b9: 0x7a5, 0x31ba: 0x7a6, 0x31bb: 0x7a7, 0x31bc: 0x7a8, 0x31bd: 0x7a9, 0x31be: 0x7aa, 0x31bf: 0x7ab,
+-	// Block 0xc7, offset 0x31c0
+-	0x31e4: 0x7ac, 0x31e5: 0x7ad, 0x31e6: 0x7ae, 0x31e7: 0x7af,
+-	0x31e8: 0x7b0, 0x31e9: 0x7b1, 0x31ea: 0x7b2, 0x31eb: 0x7b3, 0x31ec: 0x103, 0x31ed: 0x104, 0x31ee: 0x105, 0x31ef: 0x106,
+-	0x31f0: 0x107, 0x31f1: 0x108, 0x31f2: 0x109, 0x31f3: 0x10a, 0x31f4: 0x10b, 0x31f5: 0x10c, 0x31f6: 0x10d, 0x31f7: 0x10e,
+-	0x31f8: 0x10f, 0x31f9: 0x110, 0x31fa: 0x111, 0x31fb: 0x112, 0x31fc: 0x113, 0x31fd: 0x114, 0x31fe: 0x115, 0x31ff: 0x116,
+-	// Block 0xc8, offset 0x3200
+-	0x3200: 0x18b, 0x3201: 0x18c, 0x3202: 0x18d, 0x3203: 0x18e, 0x3204: 0x18f, 0x3205: 0x190, 0x3206: 0x191, 0x3207: 0x192,
+-	0x3208: 0x7b4, 0x3209: 0x7b5, 0x320c: 0x195, 0x320d: 0x196, 0x320e: 0x197, 0x320f: 0x198,
+-	0x3210: 0x199, 0x3211: 0x19a, 0x3212: 0x19b, 0x3213: 0x19c, 0x3214: 0x19d, 0x3215: 0x19e, 0x3217: 0x19f,
+-	0x3218: 0x1a0, 0x3219: 0x1a1, 0x321a: 0x1a2, 0x321b: 0x1a3, 0x321c: 0x1a4, 0x321d: 0x1a5,
+-	// Block 0xc9, offset 0x3240
+-	0x3240: 0x7b6, 0x3241: 0x7b7, 0x3242: 0x7b8, 0x3243: 0x7b9, 0x3244: 0x7ba, 0x3245: 0x7bb, 0x3246: 0x7bc, 0x3247: 0x7bd,
+-	0x3248: 0x7be, 0x3249: 0x7bf, 0x324a: 0x7c0, 0x324b: 0x7c1, 0x324c: 0x7c2, 0x324d: 0x7c3, 0x324e: 0x7c4, 0x324f: 0x7c5,
+-	0x3250: 0x7c6, 0x3251: 0x7c7, 0x3252: 0x7c8, 0x3253: 0x7c9, 0x3254: 0x7ca, 0x3255: 0x7cb, 0x3256: 0x7cc, 0x3257: 0x7cd,
+-	0x3258: 0x7ce, 0x3259: 0x7cf, 0x325a: 0x7d0, 0x325b: 0x7d1, 0x325c: 0x7d2, 0x325d: 0x7d3, 0x325e: 0x7d4, 0x325f: 0x7d5,
+-	0x3260: 0x7d6, 0x3261: 0x7d7, 0x3262: 0x7d8, 0x3263: 0x7d9, 0x3264: 0x7da, 0x3265: 0x7db, 0x3266: 0x7dc, 0x3267: 0x7dd,
+-	0x3268: 0x7de, 0x3269: 0x7df, 0x326a: 0x7e0, 0x326b: 0x7e1, 0x326c: 0x7e2, 0x326d: 0x7e3, 0x326e: 0x7e4, 0x326f: 0x7e5,
+-	0x3270: 0x7e6, 0x3271: 0x7e7, 0x3272: 0x7e8, 0x3273: 0x7e9, 0x3274: 0x7ea, 0x3275: 0x7eb, 0x3276: 0x7ec, 0x3277: 0x7ed,
+-	0x3278: 0x7ee, 0x3279: 0x7ef, 0x327a: 0x7f0, 0x327b: 0x7f1, 0x327c: 0x7f2, 0x327d: 0x7f3, 0x327e: 0x7f4, 0x327f: 0x7f5,
+-	// Block 0xca, offset 0x3280
+-	0x3280: 0x7f6, 0x3281: 0x7f7, 0x3282: 0x7f8, 0x3283: 0x7f9, 0x3284: 0x7fa, 0x3285: 0x7fb, 0x3286: 0x7fc, 0x3287: 0x7fd,
+-	0x3288: 0x7fe, 0x3289: 0x7ff, 0x328a: 0x800, 0x328b: 0x801, 0x328c: 0x802, 0x328d: 0x803, 0x328e: 0x804, 0x328f: 0x805,
+-	0x3290: 0x806, 0x3291: 0x807, 0x3292: 0x808, 0x3293: 0x809, 0x3294: 0x80a, 0x3295: 0x80b, 0x3296: 0x80c, 0x3297: 0x80d,
+-	0x3298: 0x80e, 0x3299: 0x80f, 0x329a: 0x810, 0x329b: 0x811, 0x329c: 0x812, 0x329d: 0x813, 0x329e: 0x814, 0x329f: 0x815,
+-	0x32a0: 0x816, 0x32a1: 0x817, 0x32a2: 0x818, 0x32a3: 0x819, 0x32a4: 0x81a, 0x32a5: 0x81b, 0x32a6: 0x81c, 0x32a7: 0x81d,
+-	0x32a8: 0x81e, 0x32a9: 0x81f, 0x32aa: 0x820, 0x32ab: 0x821, 0x32ac: 0x822, 0x32ad: 0x823, 0x32ae: 0x824, 0x32af: 0x825,
+-	0x32b0: 0x826, 0x32b1: 0x827, 0x32b2: 0x828, 0x32b3: 0x829, 0x32b4: 0x82a, 0x32b5: 0x82b, 0x32b6: 0x82c, 0x32b7: 0x82d,
+-	0x32b8: 0x82e, 0x32b9: 0x82f, 0x32ba: 0x830, 0x32bb: 0x831, 0x32bc: 0x832, 0x32bd: 0x833, 0x32be: 0x834, 0x32bf: 0x835,
+-	// Block 0xcb, offset 0x32c0
+-	0x32c0: 0x836, 0x32c1: 0x837, 0x32c2: 0x838, 0x32c3: 0x839, 0x32c4: 0x83a, 0x32c5: 0x83b, 0x32c6: 0x83c, 0x32c7: 0x83d,
+-	0x32c8: 0x83e, 0x32c9: 0x83f, 0x32ca: 0x840, 0x32cb: 0x841, 0x32cc: 0x842, 0x32cd: 0x843, 0x32ce: 0x844, 0x32cf: 0x845,
+-	0x32d0: 0x846, 0x32d1: 0x847, 0x32d2: 0x848, 0x32d3: 0x849, 0x32d4: 0x84a, 0x32d5: 0x84b, 0x32d6: 0x84c, 0x32d7: 0x84d,
+-	0x32d8: 0x84e, 0x32d9: 0x84f, 0x32da: 0x850, 0x32db: 0x851, 0x32dc: 0x852, 0x32dd: 0x853, 0x32de: 0x854, 0x32df: 0x855,
+-	0x32e0: 0x856, 0x32e1: 0x857, 0x32e2: 0x858, 0x32e3: 0x859, 0x32e4: 0x85a, 0x32e5: 0x85b, 0x32e6: 0x85c, 0x32e7: 0x85d,
+-	0x32e8: 0x85e, 0x32e9: 0x85f, 0x32ea: 0x860, 0x32eb: 0x861, 0x32ec: 0x862, 0x32ed: 0x863, 0x32ee: 0x864, 0x32ef: 0x865,
+-	0x32f0: 0x866, 0x32f1: 0x867, 0x32f2: 0x868, 0x32f3: 0x869, 0x32f4: 0x86a, 0x32f5: 0x86b, 0x32f6: 0x86c, 0x32f7: 0x86d,
+-	0x32f8: 0x86e, 0x32f9: 0x86f, 0x32fa: 0x870, 0x32fb: 0x871, 0x32fc: 0x872, 0x32fd: 0x873, 0x32fe: 0x874, 0x32ff: 0x875,
+-	// Block 0xcc, offset 0x3300
+-	0x3300: 0x876, 0x3301: 0x877, 0x3302: 0x878, 0x3303: 0x879, 0x3304: 0x87a, 0x3305: 0x87b, 0x3306: 0x87c, 0x3307: 0x87d,
+-	0x3308: 0x87e, 0x3309: 0x87f, 0x330a: 0x880, 0x330b: 0x881, 0x330c: 0x882, 0x330d: 0x883, 0x330e: 0x884, 0x330f: 0x885,
+-	0x3310: 0x886, 0x3311: 0x887, 0x3312: 0x888, 0x3313: 0x889, 0x3314: 0x88a, 0x3315: 0x88b, 0x3316: 0x88c, 0x3317: 0x88d,
+-	0x3318: 0x88e, 0x3319: 0x88f, 0x331a: 0x890, 0x331b: 0x891, 0x331c: 0x892, 0x331d: 0x893, 0x331e: 0x894, 0x331f: 0x895,
+-	0x3320: 0x896, 0x3321: 0x897, 0x3322: 0x898, 0x3323: 0x899, 0x3324: 0x89a, 0x3325: 0x89b, 0x3326: 0x89c, 0x3327: 0x89d,
+-	0x3328: 0x89e, 0x3329: 0x89f, 0x332a: 0x8a0, 0x332b: 0x8a1, 0x332c: 0x8a2, 0x332d: 0x8a3, 0x332e: 0x8a4, 0x332f: 0x8a5,
+-	0x3330: 0x8a6, 0x3331: 0x8a7, 0x3332: 0x8a8, 0x3333: 0x8a9, 0x3334: 0x8aa, 0x3335: 0x8ab, 0x3336: 0x8ac, 0x3337: 0x8ad,
+-	0x3338: 0x8ae, 0x3339: 0x8af, 0x333a: 0x8b0, 0x333b: 0x8b1, 0x333c: 0x8b2, 0x333d: 0x8b3, 0x333e: 0x8b4, 0x333f: 0x8b5,
+-	// Block 0xcd, offset 0x3340
+-	0x3340: 0x8b6, 0x3341: 0x8b7, 0x3342: 0x8b8, 0x3343: 0x8b9, 0x3344: 0x8ba, 0x3345: 0x8bb, 0x3346: 0x8bc, 0x3347: 0x8bd,
+-	0x3348: 0x8be, 0x3349: 0x8bf, 0x334a: 0x8c0, 0x334b: 0x8c1, 0x334c: 0x8c2, 0x334d: 0x8c3, 0x334e: 0x8c4, 0x334f: 0x8c5,
+-	0x3350: 0x8c6, 0x3351: 0x8c7, 0x3352: 0x8c8, 0x3353: 0x8c9, 0x3354: 0x8ca, 0x3355: 0x8cb, 0x3356: 0x8cc, 0x3357: 0x8cd,
+-	0x3358: 0x8ce, 0x3359: 0x8cf, 0x335a: 0x8d0, 0x335b: 0x8d1, 0x335c: 0x8d2, 0x335d: 0x8d3, 0x335e: 0x8d4, 0x335f: 0x8d5,
+-	0x3360: 0x8d6, 0x3361: 0x8d7, 0x3362: 0x8d8, 0x3363: 0x8d9, 0x3364: 0x8da, 0x3365: 0x8db, 0x3366: 0x8dc, 0x3367: 0x8dd,
+-	0x3368: 0x8de, 0x3369: 0x8df, 0x336a: 0x8e0, 0x336b: 0x8e1, 0x336c: 0x8e2, 0x336d: 0x8e3, 0x336e: 0x8e4, 0x336f: 0x8e5,
+-	0x3370: 0x8e6, 0x3371: 0x8e7, 0x3372: 0x8e8, 0x3373: 0x8e9, 0x3374: 0x8ea, 0x3375: 0x8eb, 0x3376: 0x8ec, 0x3377: 0x8ed,
+-	0x3378: 0x8ee, 0x3379: 0x8ef, 0x337a: 0x8f0, 0x337b: 0x8f1, 0x337c: 0x8f2, 0x337d: 0x8f3, 0x337e: 0x8f4, 0x337f: 0x8f5,
+-	// Block 0xce, offset 0x3380
+-	0x3380: 0x8f6, 0x3381: 0x8f7, 0x3382: 0x8f8, 0x3383: 0x8f9, 0x3384: 0x8fa, 0x3385: 0x8fb, 0x3386: 0x8fc, 0x3387: 0x8fd,
+-	0x3388: 0x8fe, 0x3389: 0x8ff, 0x338a: 0x900, 0x338b: 0x901, 0x338c: 0x902, 0x338d: 0x903, 0x338e: 0x904, 0x338f: 0x905,
+-	0x3390: 0x906, 0x3391: 0x907, 0x3392: 0x908, 0x3393: 0x909, 0x3394: 0x90a, 0x3395: 0x90b, 0x3396: 0x90c, 0x3397: 0x90d,
+-	0x3398: 0x90e, 0x3399: 0x90f, 0x339a: 0x910, 0x339b: 0x911, 0x339c: 0x912, 0x339d: 0x913, 0x339e: 0x914, 0x339f: 0x915,
+-	0x33a0: 0x916, 0x33a1: 0x917, 0x33a2: 0x918, 0x33a3: 0x919, 0x33a4: 0x91a, 0x33a5: 0x91b, 0x33a6: 0x91c, 0x33a7: 0x91d,
+-	0x33a8: 0x91e, 0x33a9: 0x91f, 0x33aa: 0x920, 0x33ab: 0x921, 0x33ac: 0x922, 0x33ad: 0x923, 0x33ae: 0x924, 0x33af: 0x925,
+-	0x33b0: 0x926, 0x33b1: 0x927, 0x33b2: 0x928, 0x33b3: 0x929, 0x33b4: 0x92a, 0x33b5: 0x92b, 0x33b6: 0x92c, 0x33b7: 0x92d,
+-	0x33b8: 0x92e, 0x33b9: 0x92f, 0x33ba: 0x930, 0x33bb: 0x931, 0x33bc: 0x932, 0x33bd: 0x933, 0x33be: 0x934, 0x33bf: 0x935,
+-	// Block 0xcf, offset 0x33c0
+-	0x33c0: 0x936, 0x33c1: 0x937, 0x33c2: 0x938, 0x33c3: 0x939, 0x33c4: 0x93a, 0x33c5: 0x93b, 0x33c6: 0x93c, 0x33c7: 0x93d,
+-	0x33c8: 0x93e, 0x33c9: 0x93f, 0x33ca: 0x940, 0x33cb: 0x941, 0x33cc: 0x942, 0x33cd: 0x943, 0x33ce: 0x944, 0x33cf: 0x945,
+-	0x33d0: 0x946, 0x33d1: 0x947, 0x33d2: 0x948, 0x33d3: 0x949, 0x33d4: 0x94a, 0x33d5: 0x94b, 0x33d6: 0x94c, 0x33d7: 0x94d,
+-	0x33d8: 0x94e, 0x33d9: 0x94f, 0x33da: 0x950, 0x33db: 0x951, 0x33dc: 0x952, 0x33dd: 0x953, 0x33de: 0x954, 0x33df: 0x955,
+-	0x33e0: 0x956, 0x33e1: 0x957, 0x33e2: 0x958, 0x33e3: 0x959, 0x33e4: 0x95a, 0x33e5: 0x95b, 0x33e6: 0x95c, 0x33e7: 0x95d,
+-	0x33e8: 0x95e, 0x33e9: 0x95f, 0x33ea: 0x960, 0x33eb: 0x961, 0x33ec: 0x962, 0x33ed: 0x963, 0x33ee: 0x964, 0x33ef: 0x965,
+-	0x33f0: 0x966, 0x33f1: 0x967, 0x33f2: 0x968, 0x33f3: 0x969, 0x33f4: 0x96a, 0x33f5: 0x96b, 0x33f6: 0x96c, 0x33f7: 0x96d,
+-	0x33f8: 0x96e, 0x33f9: 0x96f, 0x33fa: 0x970, 0x33fb: 0x971, 0x33fc: 0x972, 0x33fd: 0x973, 0x33fe: 0x974, 0x33ff: 0x975,
+-	// Block 0xd0, offset 0x3400
+-	0x3400: 0x976, 0x3401: 0x977, 0x3402: 0x978, 0x3403: 0x979, 0x3404: 0x97a, 0x3405: 0x97b, 0x3406: 0x97c, 0x3407: 0x97d,
+-	0x3408: 0x97e, 0x3409: 0x97f, 0x340a: 0x980, 0x340b: 0x981, 0x340c: 0x982, 0x340d: 0x983, 0x340e: 0x984, 0x340f: 0x985,
+-	0x3410: 0x986, 0x3411: 0x987, 0x3412: 0x988, 0x3413: 0x989, 0x3414: 0x98a, 0x3415: 0x98b, 0x3416: 0x98c, 0x3417: 0x98d,
+-	0x3418: 0x98e, 0x3419: 0x98f, 0x341a: 0x990, 0x341b: 0x991, 0x341c: 0x992, 0x341d: 0x993, 0x341e: 0x994, 0x341f: 0x995,
+-	0x3420: 0x996, 0x3421: 0x997, 0x3422: 0x998, 0x3423: 0x999, 0x3424: 0x99a, 0x3425: 0x99b, 0x3426: 0x99c, 0x3427: 0x99d,
+-	0x3428: 0x99e, 0x3429: 0x99f, 0x342a: 0x9a0, 0x342b: 0x9a1, 0x342c: 0x9a2, 0x342d: 0x9a3, 0x342e: 0x9a4, 0x342f: 0x9a5,
+-	0x3430: 0x9a6, 0x3431: 0x9a7, 0x3432: 0x9a8, 0x3433: 0x9a9, 0x3434: 0x9aa, 0x3435: 0x9ab, 0x3436: 0x9ac, 0x3437: 0x9ad,
+-	0x3438: 0x9ae, 0x3439: 0x9af, 0x343a: 0x9b0, 0x343b: 0x9b1, 0x343c: 0x9b2, 0x343d: 0x9b3, 0x343e: 0x9b4, 0x343f: 0x9b5,
+-	// Block 0xd1, offset 0x3440
+-	0x3440: 0x9b6, 0x3441: 0x9b7, 0x3442: 0x9b8, 0x3443: 0x9b9, 0x3444: 0x9ba, 0x3445: 0x9bb, 0x3446: 0x9bc, 0x3447: 0x9bd,
+-	0x3448: 0x9be, 0x3449: 0x9bf, 0x344a: 0x9c0, 0x344b: 0x9c1, 0x344c: 0x9c2, 0x344d: 0x9c3, 0x344e: 0x9c4, 0x344f: 0x9c5,
+-	0x3450: 0x9c6, 0x3451: 0x9c7, 0x3452: 0x9c8, 0x3453: 0x9c9, 0x3454: 0x9ca, 0x3455: 0x9cb, 0x3456: 0x9cc, 0x3457: 0x9cd,
+-	0x3458: 0x9ce, 0x3459: 0x9cf, 0x345a: 0x9d0, 0x345b: 0x9d1, 0x345c: 0x9d2, 0x345d: 0x9d3, 0x345e: 0x9d4, 0x345f: 0x9d5,
+-	0x3460: 0x9d6, 0x3461: 0x9d7, 0x3462: 0x9d8, 0x3463: 0x9d9, 0x3464: 0x9da, 0x3465: 0x9db, 0x3466: 0x9dc, 0x3467: 0x9dd,
+-	0x3468: 0x9de, 0x3469: 0x9df, 0x346a: 0x9e0, 0x346b: 0x9e1, 0x346c: 0x9e2, 0x346d: 0x9e3, 0x346e: 0x9e4, 0x346f: 0x9e5,
+-	0x3470: 0x9e6, 0x3471: 0x9e7, 0x3472: 0x9e8, 0x3473: 0x9e9, 0x3474: 0x9ea, 0x3475: 0x9eb, 0x3476: 0x9ec, 0x3477: 0x9ed,
+-	0x3478: 0x9ee, 0x3479: 0x9ef, 0x347a: 0x9f0, 0x347b: 0x9f1, 0x347c: 0x9f2, 0x347d: 0x9f3, 0x347e: 0x9f4, 0x347f: 0x9f5,
+-	// Block 0xd2, offset 0x3480
+-	0x3480: 0x9f6, 0x3481: 0x9f7, 0x3482: 0x9f8, 0x3483: 0x9f9, 0x3484: 0x9fa, 0x3485: 0x9fb, 0x3486: 0x9fc, 0x3487: 0x9fd,
+-	0x3488: 0x9fe, 0x3489: 0x9ff, 0x348a: 0xa00, 0x348b: 0xa01, 0x348c: 0xa02, 0x348d: 0xa03, 0x348e: 0xa04, 0x348f: 0xa05,
+-	0x3490: 0xa06, 0x3491: 0xa07, 0x3492: 0xa08, 0x3493: 0xa09, 0x3494: 0xa0a, 0x3495: 0xa0b, 0x3496: 0xa0c, 0x3497: 0xa0d,
+-	0x3498: 0xa0e, 0x3499: 0xa0f, 0x349a: 0xa10, 0x349b: 0xa11, 0x349c: 0xa12, 0x349d: 0xa13, 0x349e: 0xa14, 0x349f: 0xa15,
+-	0x34a0: 0xa16, 0x34a1: 0xa17, 0x34a2: 0xa18, 0x34a3: 0xa19, 0x34a4: 0xa1a, 0x34a5: 0xa1b, 0x34a6: 0xa1c, 0x34a7: 0xa1d,
+-	0x34a8: 0xa1e, 0x34a9: 0xa1f, 0x34aa: 0xa20, 0x34ab: 0xa21, 0x34ac: 0xa22, 0x34ad: 0xa23, 0x34ae: 0xa24, 0x34af: 0xa25,
+-	0x34b0: 0xa26, 0x34b1: 0xa27, 0x34b2: 0xa28, 0x34b3: 0xa29, 0x34b4: 0xa2a, 0x34b5: 0xa2b, 0x34b6: 0xa2c, 0x34b7: 0xa2d,
+-	0x34b8: 0xa2e, 0x34b9: 0xa2f, 0x34ba: 0xa30, 0x34bb: 0xa31, 0x34bc: 0xa32, 0x34bd: 0xa33, 0x34be: 0xa34, 0x34bf: 0xa35,
+-	// Block 0xd3, offset 0x34c0
+-	0x34c0: 0xa36, 0x34c1: 0xa37, 0x34c2: 0xa38, 0x34c3: 0xa39, 0x34c4: 0xa3a, 0x34c5: 0xa3b, 0x34c6: 0xa3c, 0x34c7: 0xa3d,
+-	0x34c8: 0xa3e, 0x34c9: 0xa3f, 0x34ca: 0xa40, 0x34cb: 0xa41, 0x34cc: 0xa42, 0x34cd: 0xa43, 0x34ce: 0xa44, 0x34cf: 0xa45,
+-	0x34d0: 0xa46, 0x34d1: 0xa47, 0x34d2: 0xa48, 0x34d3: 0xa49, 0x34d4: 0xa4a, 0x34d5: 0xa4b, 0x34d6: 0xa4c, 0x34d7: 0xa4d,
+-	0x34d8: 0xa4e, 0x34d9: 0xa4f, 0x34da: 0xa50, 0x34db: 0xa51, 0x34de: 0xa52,
+-	0x34e1: 0xa53, 0x34e2: 0xa54,
+-	0x34e8: 0xa55, 0x34ea: 0xa56,
+-	0x34fa: 0xa57, 0x34fb: 0xa58, 0x34fe: 0xa59,
+-	// Block 0xd4, offset 0x3500
+-	0x3501: 0xa5a, 0x3502: 0xa5b, 0x3503: 0xa5c, 0x3504: 0xa5d,
+-	0x3508: 0xa5e, 0x350b: 0xa5f, 0x350c: 0xa60, 0x350d: 0xa61, 0x350f: 0xa62,
+-	0x3510: 0xa63, 0x3512: 0xa64, 0x3513: 0xa65, 0x3514: 0xa66, 0x3517: 0xa67,
+-	0x3518: 0xa68, 0x351a: 0xa69, 0x351b: 0xa6a,
+-	// Block 0xd5, offset 0x3540
+-	0x3560: 0xa6b, 0x3561: 0xa6c, 0x3562: 0xa6d, 0x3563: 0xa6e, 0x3564: 0xa6f, 0x3565: 0xa70, 0x3566: 0xa71, 0x3567: 0xa72,
+-	0x3568: 0xa73,
+-	// Block 0xd6, offset 0x3580
+-	0x3590: 0x09, 0x3591: 0x0a, 0x3592: 0x0b, 0x3593: 0x0c, 0x3596: 0x0d,
+-	0x359b: 0x0e, 0x359d: 0x0f, 0x359e: 0x10, 0x359f: 0xc6,
+-	0x35a0: 0xc7, 0x35a1: 0xc8, 0x35a2: 0xc9, 0x35a3: 0xca, 0x35a4: 0xcb, 0x35a5: 0xcc, 0x35a6: 0xcd, 0x35a7: 0xce,
+-	0x35a8: 0xcf, 0x35a9: 0xd0, 0x35aa: 0xd1, 0x35ab: 0xd2, 0x35af: 0xd3,
+-	// Block 0xd7, offset 0x35c0
+-	0x35c2: 0x01, 0x35c3: 0x5e6, 0x35c4: 0x5e7, 0x35c5: 0x5e8, 0x35c6: 0x05, 0x35c7: 0x5e9,
+-	0x35c8: 0x5ea, 0x35c9: 0x08, 0x35ca: 0x09, 0x35cb: 0x0a, 0x35cc: 0x0b, 0x35cd: 0x0c, 0x35ce: 0x0d, 0x35cf: 0x0e,
+-	0x35d0: 0x0f, 0x35d1: 0x10, 0x35d2: 0x11, 0x35d3: 0x12, 0x35d4: 0x13, 0x35d5: 0x14, 0x35d6: 0x15, 0x35d7: 0x16,
+-	0x35d8: 0x17, 0x35d9: 0x18, 0x35da: 0x19, 0x35db: 0x1a, 0x35dc: 0x1b, 0x35dd: 0x1c, 0x35de: 0x1d, 0x35df: 0x1e,
+-	0x35e0: 0x01, 0x35e1: 0xbc, 0x35e2: 0xbd, 0x35e3: 0xbe, 0x35e4: 0xbf, 0x35e5: 0xc0, 0x35e6: 0xc1, 0x35e7: 0xc2,
+-	0x35e8: 0xc3, 0x35e9: 0xc4, 0x35ea: 0x06, 0x35ed: 0x07, 0x35ef: 0xc5,
+-	0x35f0: 0xd4, 0x35f3: 0x15,
+-}
+-
+-// mainCTEntries: 2490 entries, 9960 bytes
+-var mainCTEntries = [2490]struct{ l, h, n, i uint8 }{
+-	{0xCE, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0xB7, 0xB7, 0, 1},
+-	{0x87, 0x87, 0, 2},
+-	{0xCC, 0x0, 2, 255},
+-	{0x88, 0x88, 0, 2},
+-	{0x86, 0x86, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x88, 0x88, 0, 1},
+-	{0xCD, 0x1, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x81, 0x81, 0, 1},
+-	{0x81, 0x81, 0, 2},
+-	{0xCC, 0x0, 1, 255},
+-	{0x86, 0x86, 0, 1},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8B, 0x8B, 0, 3},
+-	{0x88, 0x88, 0, 2},
+-	{0x86, 0x86, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x8F, 0x8F, 0, 1},
+-	{0xD9, 0x0, 1, 255},
+-	{0x93, 0x95, 0, 1},
+-	{0xD9, 0x0, 1, 255},
+-	{0x94, 0x94, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xA7, 0x1, 1, 255},
+-	{0xA6, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0x97, 0x97, 0, 2},
+-	{0xE0, 0x0, 2, 255},
+-	{0xAD, 0x1, 1, 255},
+-	{0xAC, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0x96, 0x97, 0, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0x97, 0x97, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xAF, 0x1, 1, 255},
+-	{0xAE, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0x97, 0x97, 0, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAE, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB1, 0x0, 1, 255},
+-	{0x96, 0x96, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB3, 0x0, 1, 255},
+-	{0x95, 0x95, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB3, 0x0, 2, 255},
+-	{0x95, 0x96, 0, 3},
+-	{0x82, 0x0, 1, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB3, 0x0, 1, 255},
+-	{0x95, 0x95, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xB5, 0x1, 1, 255},
+-	{0xB4, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0x97, 0x97, 0, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB4, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB7, 0x0, 3, 255},
+-	{0x9F, 0x9F, 0, 4},
+-	{0x8F, 0x0, 1, 3},
+-	{0x8A, 0x8A, 0, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB7, 0x0, 1, 255},
+-	{0x8A, 0x8A, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB7, 0x0, 1, 255},
+-	{0x8A, 0x8A, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB8, 0x0, 1, 255},
+-	{0x81, 0xAE, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB8, 0x0, 1, 255},
+-	{0xB2, 0xB2, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBB, 0xC, 1, 255},
+-	{0xBA, 0x0, 12, 255},
+-	{0xAD, 0xAE, 0, 26},
+-	{0xAA, 0xAB, 0, 24},
+-	{0xA7, 0xA7, 0, 23},
+-	{0xA5, 0xA5, 0, 22},
+-	{0xA1, 0xA3, 0, 19},
+-	{0x99, 0x9F, 0, 12},
+-	{0x94, 0x97, 0, 8},
+-	{0x8D, 0x8D, 0, 7},
+-	{0x8A, 0x8A, 0, 6},
+-	{0x87, 0x88, 0, 4},
+-	{0x84, 0x84, 0, 3},
+-	{0x81, 0x82, 0, 1},
+-	{0x9C, 0x9F, 0, 28},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 255},
+-	{0xB2, 0xB2, 0, 1},
+-	{0xEA, 0x0, 1, 255},
+-	{0xAA, 0x0, 1, 255},
+-	{0x80, 0xAF, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x7, 1, 255},
+-	{0xBD, 0x0, 1, 255},
+-	{0xB1, 0x0, 1, 255},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x2, 1, 255},
+-	{0xBD, 0x0, 2, 255},
+-	{0xB4, 0xB4, 0, 2},
+-	{0xB2, 0xB2, 0, 1},
+-	{0x80, 0x80, 0, 3},
+-	{0x80, 0x81, 0, 4},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x2, 1, 255},
+-	{0xBD, 0x0, 2, 255},
+-	{0xB4, 0xB4, 0, 2},
+-	{0xB2, 0xB2, 0, 1},
+-	{0x80, 0x80, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xAE, 0xAE, 0, 1},
+-	{0xF0, 0x0, 1, 255},
+-	{0x91, 0x0, 1, 255},
+-	{0x84, 0x0, 1, 255},
+-	{0xA7, 0xA7, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0xAC, 0x0, 1, 255},
+-	{0xB5, 0xB5, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA7, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE2, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x8D, 0x8D, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA7, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA6, 0x0, 1, 255},
+-	{0xB7, 0xB7, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0xA7, 0xA7, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x87, 0x87, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x68, 0x68, 0, 3},
+-	{0x48, 0x48, 0, 2},
+-	{0x8C, 0x8C, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x8C, 0x8C, 0, 1},
+-	{0x68, 0x68, 0, 1},
+-	{0x68, 0x68, 0, 2},
+-	{0x48, 0x48, 0, 1},
+-	{0x64, 0x64, 0, 1},
+-	{0x64, 0x64, 0, 2},
+-	{0x44, 0x44, 0, 1},
+-	{0x66, 0x66, 0, 1},
+-	{0x66, 0x66, 0, 2},
+-	{0x46, 0x46, 0, 1},
+-	{0x67, 0x67, 0, 1},
+-	{0x67, 0x67, 0, 2},
+-	{0x47, 0x47, 0, 1},
+-	{0xCE, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0x6C, 0x6C, 0, 3},
+-	{0xB7, 0xB7, 0, 1},
+-	{0x87, 0x87, 0, 2},
+-	{0xCE, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0x6C, 0x6C, 0, 4},
+-	{0x4C, 0x4C, 0, 3},
+-	{0xB7, 0xB7, 0, 1},
+-	{0x87, 0x87, 0, 2},
+-	{0xCC, 0x0, 2, 255},
+-	{0x8B, 0x8B, 0, 2},
+-	{0x88, 0x88, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x61, 0x61, 0, 3},
+-	{0x8A, 0x8A, 0, 2},
+-	{0x88, 0x88, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x61, 0x61, 0, 4},
+-	{0x41, 0x41, 0, 3},
+-	{0x8A, 0x8A, 0, 2},
+-	{0x88, 0x88, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0xA8, 0xA8, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 1, 255},
+-	{0x90, 0x91, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 6, 255},
+-	{0x98, 0x42, 1, 255},
+-	{0x96, 0x31, 1, 255},
+-	{0x94, 0x1B, 1, 255},
+-	{0x84, 0x11, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x80, 0x80, 0, 73},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0xD, 1, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBC, 0xBC, 0, 20},
+-	{0xBA, 0xBA, 0, 19},
+-	{0xB4, 0xB4, 0, 18},
+-	{0xA6, 0xA6, 0, 17},
+-	{0xA2, 0xA3, 0, 15},
+-	{0xA0, 0xA0, 0, 14},
+-	{0x9D, 0x9D, 0, 13},
+-	{0x96, 0x96, 0, 12},
+-	{0x91, 0x91, 0, 11},
+-	{0x8C, 0x8C, 0, 10},
+-	{0x8A, 0x8A, 0, 9},
+-	{0x84, 0x84, 0, 8},
+-	{0x82, 0x82, 0, 7},
+-	{0xB1, 0xB2, 0, 21},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 8, 255},
+-	{0xBC, 0xBC, 0, 30},
+-	{0xB4, 0xB4, 0, 29},
+-	{0xA2, 0xA2, 0, 28},
+-	{0x93, 0x93, 0, 27},
+-	{0x8C, 0x8C, 0, 26},
+-	{0x8A, 0x8A, 0, 25},
+-	{0x84, 0x84, 0, 24},
+-	{0x82, 0x82, 0, 23},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x12, 1, 255},
+-	{0xBD, 0x0, 11, 255},
+-	{0xBC, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 41},
+-	{0xB4, 0xB4, 0, 40},
+-	{0xA6, 0xA6, 0, 39},
+-	{0xA2, 0xA3, 0, 37},
+-	{0xA0, 0xA0, 0, 36},
+-	{0x91, 0x91, 0, 35},
+-	{0x8C, 0x8C, 0, 34},
+-	{0x8A, 0x8A, 0, 33},
+-	{0x84, 0x84, 0, 32},
+-	{0x82, 0x82, 0, 31},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 5, 255},
+-	{0xA2, 0xA2, 0, 5},
+-	{0x93, 0x93, 0, 4},
+-	{0x91, 0x91, 0, 3},
+-	{0x84, 0x84, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xB1, 0xB2, 0, 42},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0xD, 1, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBC, 0xBC, 0, 57},
+-	{0xBA, 0xBA, 0, 56},
+-	{0xB4, 0xB4, 0, 55},
+-	{0xA6, 0xA6, 0, 54},
+-	{0xA2, 0xA3, 0, 52},
+-	{0xA0, 0xA0, 0, 51},
+-	{0x96, 0x96, 0, 50},
+-	{0x93, 0x93, 0, 49},
+-	{0x91, 0x91, 0, 48},
+-	{0x8C, 0x8C, 0, 47},
+-	{0x8A, 0x8A, 0, 46},
+-	{0x84, 0x84, 0, 45},
+-	{0x82, 0x82, 0, 44},
+-	{0xB1, 0xB2, 0, 58},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x10, 1, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBC, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 71},
+-	{0xB4, 0xB4, 0, 70},
+-	{0xB2, 0xB2, 0, 69},
+-	{0xA6, 0xA6, 0, 68},
+-	{0xA2, 0xA2, 0, 67},
+-	{0xA0, 0xA0, 0, 66},
+-	{0x9D, 0x9D, 0, 65},
+-	{0x93, 0x93, 0, 64},
+-	{0x8C, 0x8C, 0, 63},
+-	{0x8A, 0x8A, 0, 62},
+-	{0x84, 0x84, 0, 61},
+-	{0x82, 0x82, 0, 60},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 1, 255},
+-	{0x91, 0x91, 0, 6},
+-	{0xB1, 0xB1, 0, 72},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 11, 255},
+-	{0xA6, 0x2E, 1, 255},
+-	{0xA4, 0xA4, 0, 72},
+-	{0xA3, 0x29, 1, 255},
+-	{0xA2, 0x1C, 1, 255},
+-	{0x9E, 0x9F, 0, 70},
+-	{0x99, 0x99, 0, 69},
+-	{0x91, 0xF, 1, 255},
+-	{0x8F, 0x8F, 0, 68},
+-	{0x85, 0x85, 0, 67},
+-	{0x82, 0x0, 1, 255},
+-	{0x80, 0x80, 0, 66},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0xB, 1, 255},
+-	{0xBD, 0x0, 11, 255},
+-	{0xBE, 0xBE, 0, 11},
+-	{0xBC, 0xBC, 0, 10},
+-	{0xBA, 0xBA, 0, 9},
+-	{0xA2, 0xA2, 0, 8},
+-	{0xA0, 0xA0, 0, 7},
+-	{0x9D, 0x9D, 0, 6},
+-	{0x98, 0x98, 0, 5},
+-	{0x91, 0x91, 0, 4},
+-	{0x8C, 0x8C, 0, 3},
+-	{0x8A, 0x8A, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xB1, 0xB3, 0, 12},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 11, 255},
+-	{0xBE, 0xBE, 0, 26},
+-	{0xBC, 0xBC, 0, 25},
+-	{0xBA, 0xBA, 0, 24},
+-	{0xB4, 0xB4, 0, 23},
+-	{0xA6, 0xA6, 0, 22},
+-	{0xA2, 0xA3, 0, 20},
+-	{0xA0, 0xA0, 0, 19},
+-	{0x98, 0x98, 0, 18},
+-	{0x8C, 0x8C, 0, 17},
+-	{0x8A, 0x8A, 0, 16},
+-	{0x82, 0x82, 0, 15},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 11, 255},
+-	{0xB3, 0xB3, 0, 37},
+-	{0xAB, 0xAB, 0, 36},
+-	{0xA9, 0xA9, 0, 35},
+-	{0xA3, 0xA3, 0, 34},
+-	{0xA1, 0xA1, 0, 33},
+-	{0x9F, 0x9F, 0, 32},
+-	{0x99, 0x99, 0, 31},
+-	{0x97, 0x97, 0, 30},
+-	{0x94, 0x94, 0, 29},
+-	{0x92, 0x92, 0, 28},
+-	{0x90, 0x90, 0, 27},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 3, 255},
+-	{0xA1, 0xA1, 0, 40},
+-	{0x9F, 0x9F, 0, 39},
+-	{0x95, 0x95, 0, 38},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0xD, 10, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBE, 0xBE, 0, 54},
+-	{0xBC, 0xBC, 0, 53},
+-	{0xBA, 0xBA, 0, 52},
+-	{0xB4, 0xB4, 0, 51},
+-	{0xB2, 0xB2, 0, 50},
+-	{0xA2, 0xA3, 0, 48},
+-	{0x98, 0x98, 0, 47},
+-	{0x96, 0x96, 0, 46},
+-	{0x91, 0x91, 0, 45},
+-	{0x8C, 0x8C, 0, 44},
+-	{0x8A, 0x8A, 0, 43},
+-	{0x84, 0x84, 0, 42},
+-	{0x82, 0x82, 0, 41},
+-	{0xB2, 0xB3, 0, 64},
+-	{0xAD, 0xAD, 0, 63},
+-	{0xA9, 0xA9, 0, 62},
+-	{0xA3, 0xA3, 0, 61},
+-	{0xA1, 0xA1, 0, 60},
+-	{0x9F, 0x9F, 0, 59},
+-	{0x99, 0x99, 0, 58},
+-	{0x94, 0x94, 0, 57},
+-	{0x92, 0x92, 0, 56},
+-	{0x90, 0x90, 0, 55},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 11, 255},
+-	{0xAB, 0xAB, 0, 12},
+-	{0xA8, 0xA9, 0, 10},
+-	{0xA6, 0xA6, 0, 9},
+-	{0xA3, 0xA3, 0, 8},
+-	{0xA1, 0xA1, 0, 7},
+-	{0x9F, 0x9F, 0, 6},
+-	{0x99, 0x99, 0, 5},
+-	{0x97, 0x97, 0, 4},
+-	{0x94, 0x94, 0, 3},
+-	{0x92, 0x92, 0, 2},
+-	{0x90, 0x90, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 9, 255},
+-	{0xB7, 0xB7, 0, 10},
+-	{0xA6, 0xA6, 0, 9},
+-	{0xA4, 0xA4, 0, 8},
+-	{0xA1, 0xA1, 0, 7},
+-	{0x9F, 0x9F, 0, 6},
+-	{0x97, 0x97, 0, 5},
+-	{0x94, 0x95, 0, 3},
+-	{0x92, 0x92, 0, 2},
+-	{0x90, 0x90, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 9, 255},
+-	{0x9A, 0x9B, 0, 45},
+-	{0x93, 0x1D, 1, 255},
+-	{0x91, 0x11, 1, 255},
+-	{0x90, 0x90, 0, 44},
+-	{0x89, 0x89, 0, 43},
+-	{0x86, 0x87, 0, 41},
+-	{0x84, 0x8, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x81, 0x81, 0, 40},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x4, 1, 255},
+-	{0xBD, 0x0, 4, 255},
+-	{0xBC, 0xBC, 0, 5},
+-	{0xBA, 0xBA, 0, 4},
+-	{0xB4, 0xB4, 0, 3},
+-	{0xA2, 0xA3, 0, 1},
+-	{0xB1, 0xB2, 0, 6},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 7, 255},
+-	{0xBC, 0xBC, 0, 15},
+-	{0xA2, 0xA3, 0, 13},
+-	{0xA0, 0xA0, 0, 12},
+-	{0x93, 0x93, 0, 11},
+-	{0x8C, 0x8C, 0, 10},
+-	{0x8A, 0x8A, 0, 9},
+-	{0x82, 0x82, 0, 8},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 10, 255},
+-	{0xBC, 0xBC, 0, 25},
+-	{0xBA, 0xBA, 0, 24},
+-	{0xB4, 0xB4, 0, 23},
+-	{0xA2, 0xA2, 0, 22},
+-	{0xA0, 0xA0, 0, 21},
+-	{0x93, 0x93, 0, 20},
+-	{0x8C, 0x8C, 0, 19},
+-	{0x8A, 0x8A, 0, 18},
+-	{0x84, 0x84, 0, 17},
+-	{0x82, 0x82, 0, 16},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBE, 0xBE, 0, 39},
+-	{0xBC, 0xBC, 0, 38},
+-	{0xBA, 0xBA, 0, 37},
+-	{0xB4, 0xB4, 0, 36},
+-	{0xA2, 0xA3, 0, 34},
+-	{0xA0, 0xA0, 0, 33},
+-	{0x98, 0x98, 0, 32},
+-	{0x96, 0x96, 0, 31},
+-	{0x93, 0x93, 0, 30},
+-	{0x8C, 0x8C, 0, 29},
+-	{0x8A, 0x8A, 0, 28},
+-	{0x84, 0x84, 0, 27},
+-	{0x82, 0x82, 0, 26},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 9, 255},
+-	{0xA8, 0xA9, 0, 10},
+-	{0xA6, 0xA6, 0, 9},
+-	{0xA3, 0xA4, 0, 7},
+-	{0xA1, 0xA1, 0, 6},
+-	{0x9F, 0x9F, 0, 5},
+-	{0x99, 0x99, 0, 4},
+-	{0x94, 0x94, 0, 3},
+-	{0x92, 0x92, 0, 2},
+-	{0x90, 0x90, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 8, 255},
+-	{0x9A, 0x9B, 0, 62},
+-	{0x96, 0x29, 1, 255},
+-	{0x95, 0x95, 0, 61},
+-	{0x91, 0x14, 1, 255},
+-	{0x90, 0x90, 0, 60},
+-	{0x86, 0x87, 0, 58},
+-	{0x82, 0x0, 1, 255},
+-	{0x81, 0x81, 0, 57},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x10, 1, 255},
+-	{0xBD, 0x0, 16, 255},
+-	{0xBE, 0xBE, 0, 17},
+-	{0xBC, 0xBC, 0, 16},
+-	{0xBA, 0xBA, 0, 15},
+-	{0xB4, 0xB4, 0, 14},
+-	{0xB2, 0xB2, 0, 13},
+-	{0xA6, 0xA6, 0, 12},
+-	{0xA2, 0xA3, 0, 10},
+-	{0xA0, 0xA0, 0, 9},
+-	{0x98, 0x98, 0, 8},
+-	{0x96, 0x96, 0, 7},
+-	{0x93, 0x93, 0, 6},
+-	{0x91, 0x91, 0, 5},
+-	{0x8C, 0x8C, 0, 4},
+-	{0x8A, 0x8A, 0, 3},
+-	{0x84, 0x84, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xB1, 0xB2, 0, 18},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x11, 1, 255},
+-	{0xBD, 0x0, 17, 255},
+-	{0xBE, 0xBE, 0, 37},
+-	{0xBC, 0xBC, 0, 36},
+-	{0xBA, 0xBA, 0, 35},
+-	{0xB4, 0xB4, 0, 34},
+-	{0xB2, 0xB2, 0, 33},
+-	{0xA6, 0xA6, 0, 32},
+-	{0xA2, 0xA3, 0, 30},
+-	{0xA0, 0xA0, 0, 29},
+-	{0x9D, 0x9D, 0, 28},
+-	{0x98, 0x98, 0, 27},
+-	{0x96, 0x96, 0, 26},
+-	{0x93, 0x93, 0, 25},
+-	{0x91, 0x91, 0, 24},
+-	{0x8C, 0x8C, 0, 23},
+-	{0x8A, 0x8A, 0, 22},
+-	{0x84, 0x84, 0, 21},
+-	{0x82, 0x82, 0, 20},
+-	{0xB2, 0xB2, 0, 38},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0xF, 1, 255},
+-	{0xBD, 0x0, 15, 255},
+-	{0xBE, 0xBE, 0, 54},
+-	{0xBC, 0xBC, 0, 53},
+-	{0xBA, 0xBA, 0, 52},
+-	{0xB4, 0xB4, 0, 51},
+-	{0xB2, 0xB2, 0, 50},
+-	{0xA2, 0xA3, 0, 48},
+-	{0xA0, 0xA0, 0, 47},
+-	{0x98, 0x98, 0, 46},
+-	{0x96, 0x96, 0, 45},
+-	{0x93, 0x93, 0, 44},
+-	{0x91, 0x91, 0, 43},
+-	{0x8C, 0x8C, 0, 42},
+-	{0x8A, 0x8A, 0, 41},
+-	{0x84, 0x84, 0, 40},
+-	{0x82, 0x82, 0, 39},
+-	{0xB1, 0xB2, 0, 55},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 10, 255},
+-	{0xA6, 0x20, 1, 255},
+-	{0xA4, 0xA4, 0, 52},
+-	{0xA1, 0xA1, 0, 51},
+-	{0x9E, 0x9F, 0, 49},
+-	{0x99, 0x99, 0, 48},
+-	{0x93, 0x11, 1, 255},
+-	{0x91, 0x0, 1, 255},
+-	{0x8F, 0x8F, 0, 47},
+-	{0x89, 0x89, 0, 46},
+-	{0x85, 0x85, 0, 45},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 15, 255},
+-	{0xBE, 0xBE, 0, 16},
+-	{0xBC, 0xBC, 0, 15},
+-	{0xBA, 0xBA, 0, 14},
+-	{0xB4, 0xB4, 0, 13},
+-	{0xB2, 0xB2, 0, 12},
+-	{0xA6, 0xA6, 0, 11},
+-	{0xA2, 0xA3, 0, 9},
+-	{0xA0, 0xA0, 0, 8},
+-	{0x98, 0x98, 0, 7},
+-	{0x96, 0x96, 0, 6},
+-	{0x93, 0x93, 0, 5},
+-	{0x8C, 0x8C, 0, 4},
+-	{0x8A, 0x8A, 0, 3},
+-	{0x84, 0x84, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 13, 255},
+-	{0xBE, 0xBE, 0, 29},
+-	{0xBC, 0xBC, 0, 28},
+-	{0xB4, 0xB4, 0, 27},
+-	{0xA6, 0xA6, 0, 26},
+-	{0xA0, 0xA0, 0, 25},
+-	{0x9D, 0x9D, 0, 24},
+-	{0x98, 0x98, 0, 23},
+-	{0x93, 0x93, 0, 22},
+-	{0x91, 0x91, 0, 21},
+-	{0x8C, 0x8C, 0, 20},
+-	{0x8A, 0x8A, 0, 19},
+-	{0x84, 0x84, 0, 18},
+-	{0x82, 0x82, 0, 17},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBD, 0x0, 14, 255},
+-	{0xBC, 0xBC, 0, 44},
+-	{0xBA, 0xBA, 0, 43},
+-	{0xB4, 0xB4, 0, 42},
+-	{0xB2, 0xB2, 0, 41},
+-	{0xA6, 0xA6, 0, 40},
+-	{0xA2, 0xA3, 0, 38},
+-	{0xA0, 0xA0, 0, 37},
+-	{0x96, 0x96, 0, 36},
+-	{0x93, 0x93, 0, 35},
+-	{0x91, 0x91, 0, 34},
+-	{0x8C, 0x8C, 0, 33},
+-	{0x8A, 0x8A, 0, 32},
+-	{0x84, 0x84, 0, 31},
+-	{0x82, 0x82, 0, 30},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xBE, 0x0, 1, 255},
+-	{0xA4, 0xA5, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x9, 1, 255},
+-	{0xBD, 0x0, 3, 255},
+-	{0xB5, 0xB5, 0, 6},
+-	{0xB3, 0xB3, 0, 5},
+-	{0xB1, 0x0, 1, 4},
+-	{0xE0, 0x0, 2, 255},
+-	{0xBE, 0x2, 1, 255},
+-	{0xBD, 0x0, 2, 255},
+-	{0xB4, 0xB4, 0, 2},
+-	{0xB2, 0xB2, 0, 1},
+-	{0x80, 0x80, 0, 3},
+-	{0x80, 0x81, 0, 7},
+-	{0x7A, 0x7A, 0, 1},
+-	{0x7A, 0x7A, 0, 2},
+-	{0x5A, 0x5A, 0, 1},
+-	{0x62, 0x62, 0, 1},
+-	{0x62, 0x62, 0, 2},
+-	{0x42, 0x42, 0, 1},
+-	{0x70, 0x70, 0, 1},
+-	{0x70, 0x70, 0, 2},
+-	{0x50, 0x50, 0, 1},
+-	{0x79, 0x79, 0, 1},
+-	{0x79, 0x79, 0, 2},
+-	{0x59, 0x59, 0, 1},
+-	{0x73, 0x73, 0, 1},
+-	{0x73, 0x73, 0, 2},
+-	{0x53, 0x53, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x82, 0x82, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x83, 0x83, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x88, 0x88, 0, 2},
+-	{0x83, 0x83, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x8A, 0x8A, 0, 2},
+-	{0x88, 0x88, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x67, 0x67, 0, 2},
+-	{0x83, 0x83, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x67, 0x67, 0, 3},
+-	{0x47, 0x47, 0, 2},
+-	{0x83, 0x83, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x8C, 0x8C, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xC5, 0x2, 1, 255},
+-	{0x7A, 0x0, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x8C, 0x8C, 0, 1},
+-	{0xBE, 0xBE, 0, 2},
+-	{0xC5, 0x4, 1, 255},
+-	{0x7A, 0x2, 1, 255},
+-	{0x5A, 0x0, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x8C, 0x8C, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x8C, 0x8C, 0, 2},
+-	{0xBD, 0xBE, 0, 3},
+-	{0xCE, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0x6A, 0x6A, 0, 3},
+-	{0xB7, 0xB7, 0, 1},
+-	{0x87, 0x87, 0, 2},
+-	{0xCE, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0x6A, 0x6A, 0, 4},
+-	{0x4A, 0x4A, 0, 3},
+-	{0xB7, 0xB7, 0, 1},
+-	{0x87, 0x87, 0, 2},
+-	{0x6A, 0x6A, 0, 1},
+-	{0x6A, 0x6A, 0, 2},
+-	{0x4A, 0x4A, 0, 1},
+-	{0x73, 0x73, 0, 2},
+-	{0x63, 0x0, 1, 255},
+-	{0x73, 0x73, 0, 1},
+-	{0x73, 0x73, 0, 4},
+-	{0x63, 0x1, 1, 255},
+-	{0x53, 0x53, 0, 3},
+-	{0x43, 0x0, 1, 255},
+-	{0x53, 0x53, 0, 1},
+-	{0x73, 0x73, 0, 2},
+-	{0x7A, 0x2, 1, 4},
+-	{0x64, 0x0, 1, 255},
+-	{0x7A, 0x0, 1, 2},
+-	{0x73, 0x73, 0, 1},
+-	{0x73, 0x73, 0, 3},
+-	{0x7A, 0x5, 1, 8},
+-	{0x64, 0x3, 1, 255},
+-	{0x5A, 0x2, 1, 7},
+-	{0x44, 0x0, 1, 255},
+-	{0x5A, 0x0, 1, 3},
+-	{0x53, 0x53, 0, 1},
+-	{0x53, 0x53, 0, 4},
+-	{0x7A, 0x0, 1, 5},
+-	{0x73, 0x73, 0, 2},
+-	{0x73, 0x73, 0, 6},
+-	{0x79, 0x79, 0, 2},
+-	{0x67, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 1},
+-	{0x79, 0x79, 0, 4},
+-	{0x67, 0x1, 1, 255},
+-	{0x59, 0x59, 0, 3},
+-	{0x47, 0x0, 1, 255},
+-	{0x59, 0x59, 0, 1},
+-	{0x79, 0x79, 0, 2},
+-	{0xCE, 0x2, 1, 255},
+-	{0xC2, 0x1, 1, 255},
+-	{0x79, 0x79, 0, 4},
+-	{0x6C, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 1},
+-	{0xB7, 0xB7, 0, 2},
+-	{0x87, 0x87, 0, 3},
+-	{0xCE, 0x3, 1, 255},
+-	{0xC2, 0x2, 1, 255},
+-	{0x79, 0x79, 0, 6},
+-	{0x6C, 0x1, 1, 255},
+-	{0x59, 0x59, 0, 5},
+-	{0x4C, 0x0, 1, 255},
+-	{0x59, 0x59, 0, 1},
+-	{0x79, 0x79, 0, 2},
+-	{0xB7, 0xB7, 0, 3},
+-	{0x87, 0x87, 0, 4},
+-	{0x79, 0x79, 0, 2},
+-	{0x6E, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 1},
+-	{0x79, 0x79, 0, 4},
+-	{0x6E, 0x1, 1, 255},
+-	{0x59, 0x59, 0, 3},
+-	{0x4E, 0x0, 1, 255},
+-	{0x59, 0x59, 0, 1},
+-	{0x79, 0x79, 0, 2},
+-	{0x7A, 0x7A, 0, 2},
+-	{0x73, 0x0, 1, 255},
+-	{0x7A, 0x7A, 0, 1},
+-	{0x7A, 0x7A, 0, 4},
+-	{0x73, 0x1, 1, 255},
+-	{0x5A, 0x5A, 0, 3},
+-	{0x53, 0x0, 1, 255},
+-	{0x5A, 0x5A, 0, 1},
+-	{0x7A, 0x7A, 0, 2},
+-	{0x79, 0x79, 0, 2},
+-	{0x74, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 1},
+-	{0x79, 0x79, 0, 4},
+-	{0x74, 0x1, 1, 255},
+-	{0x59, 0x59, 0, 3},
+-	{0x54, 0x0, 1, 255},
+-	{0x59, 0x59, 0, 1},
+-	{0x79, 0x79, 0, 2},
+-	{0x7A, 0x0, 1, 255},
+-	{0x73, 0x73, 0, 2},
+-	{0x73, 0x73, 0, 1},
+-	{0x7A, 0x1, 1, 255},
+-	{0x73, 0x73, 0, 4},
+-	{0x5A, 0x0, 1, 255},
+-	{0x53, 0x53, 0, 3},
+-	{0x53, 0x53, 0, 1},
+-	{0x73, 0x73, 0, 2},
+-	{0xD6, 0x0, 1, 255},
+-	{0x82, 0x82, 0, 1},
+-	{0x77, 0x77, 0, 3},
+-	{0x68, 0x68, 0, 2},
+-	{0x62, 0x62, 0, 1},
+-	{0x77, 0x77, 0, 6},
+-	{0x68, 0x68, 0, 5},
+-	{0x62, 0x62, 0, 4},
+-	{0x57, 0x57, 0, 3},
+-	{0x48, 0x48, 0, 2},
+-	{0x42, 0x42, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0xA3, 0xA3, 0, 1},
+-	{0x77, 0x77, 0, 2},
+-	{0x70, 0x70, 0, 1},
+-	{0x77, 0x77, 0, 4},
+-	{0x70, 0x70, 0, 3},
+-	{0x57, 0x57, 0, 2},
+-	{0x50, 0x50, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 3},
+-	{0x77, 0x77, 0, 2},
+-	{0x87, 0x87, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x79, 0x79, 0, 5},
+-	{0x77, 0x77, 0, 4},
+-	{0x59, 0x59, 0, 3},
+-	{0x57, 0x57, 0, 2},
+-	{0x87, 0x87, 0, 1},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8A, 0x8A, 0, 3},
+-	{0x88, 0x88, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x81, 0x81, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x88, 0x88, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x1, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x9D, 0, 1},
+-	{0xBC, 0xBC, 0, 2},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 1, 255},
+-	{0xBC, 0xBD, 0, 1},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x7, 1, 255},
+-	{0x82, 0x0, 2, 255},
+-	{0x9D, 0x9D, 0, 3},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x1, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x9D, 0, 1},
+-	{0xBC, 0xBC, 0, 2},
+-	{0xBC, 0xBC, 0, 4},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x4, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 1, 255},
+-	{0xBC, 0xBD, 0, 1},
+-	{0xBC, 0xBD, 0, 3},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0xE, 1, 255},
+-	{0x82, 0x0, 3, 255},
+-	{0x9E, 0x9E, 0, 6},
+-	{0x9D, 0x8, 1, 5},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x4, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x0, 1, 2},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xBC, 0xBC, 0, 3},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 4},
+-	{0xBC, 0xBC, 0, 7},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x8, 2, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 2, 255},
+-	{0xBD, 0x0, 1, 3},
+-	{0xBC, 0xBD, 0, 2},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xBD, 0x0, 1, 6},
+-	{0xBC, 0xBE, 0, 5},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 4},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 2, 255},
+-	{0xBD, 0x0, 1, 3},
+-	{0xBC, 0xBE, 0, 2},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x1, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x9E, 0, 1},
+-	{0xBC, 0xBC, 0, 3},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 1, 255},
+-	{0xBC, 0xBE, 0, 1},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x17, 1, 255},
+-	{0x82, 0x0, 4, 255},
+-	{0x9E, 0x9E, 0, 9},
+-	{0x9D, 0x10, 1, 8},
+-	{0x9A, 0x8, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x4, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x0, 1, 3},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xBC, 0xBC, 0, 4},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x4, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x0, 1, 5},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 2},
+-	{0xBC, 0xBC, 0, 6},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 7},
+-	{0xBC, 0xBC, 0, 10},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x10, 2, 255},
+-	{0x82, 0x0, 2, 255},
+-	{0x9A, 0x7, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 2, 255},
+-	{0xBD, 0x0, 1, 4},
+-	{0xBC, 0xBD, 0, 3},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 2, 255},
+-	{0xBD, 0x0, 1, 6},
+-	{0xBC, 0xBD, 0, 5},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 2},
+-	{0xBD, 0x0, 1, 9},
+-	{0xBC, 0xBE, 0, 8},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 7},
+-	{0xE3, 0x0, 2, 255},
+-	{0x83, 0x5, 1, 255},
+-	{0x82, 0x0, 2, 255},
+-	{0x9E, 0x9E, 0, 3},
+-	{0x9D, 0x0, 1, 2},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x99, 0x99, 0, 1},
+-	{0xBC, 0xBC, 0, 4},
+-	{0xE3, 0x0, 1, 255},
+-	{0x82, 0x0, 1, 255},
+-	{0x9D, 0x9D, 0, 1},
+-	{0xE3, 0x0, 1, 255},
+-	{0x83, 0x0, 1, 255},
+-	{0xBD, 0xBD, 0, 1},
+-	{0x27, 0x27, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x9F, 0x0, 1, 255},
+-	{0x8C, 0x8C, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x9F, 0x0, 1, 255},
+-	{0x86, 0x87, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x9F, 0x0, 1, 255},
+-	{0x86, 0x86, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x9F, 0x0, 1, 255},
+-	{0x87, 0x87, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA5, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA4, 0x0, 1, 255},
+-	{0xB7, 0xB7, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x83, 0x83, 0, 3},
+-	{0x80, 0x81, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0xA8, 0xA8, 0, 2},
+-	{0x87, 0x87, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0xA8, 0xA8, 0, 2},
+-	{0x84, 0x84, 0, 1},
+-	{0xCE, 0x2, 1, 255},
+-	{0xCC, 0x1, 1, 255},
+-	{0xC2, 0x0, 1, 255},
+-	{0xB7, 0xB7, 0, 1},
+-	{0xA7, 0xA7, 0, 2},
+-	{0x87, 0x87, 0, 3},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB5, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE2, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x8D, 0x8D, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB5, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE2, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0x20, 0x20, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xB5, 0x0, 1, 255},
+-	{0x8D, 0x8D, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA5, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE0, 0x0, 1, 255},
+-	{0xA4, 0x0, 1, 255},
+-	{0x9E, 0x9E, 0, 1},
+-	{0xCC, 0x1, 1, 255},
+-	{0xC4, 0x0, 1, 255},
+-	{0xA6, 0xA7, 0, 1},
+-	{0x87, 0x87, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xBA, 0xBA, 0, 3},
+-	{0xB9, 0x0, 1, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x84, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB8, 0xB8, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xBA, 0x0, 1, 3},
+-	{0xB9, 0xBA, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x95, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 3, 255},
+-	{0xBA, 0xBA, 0, 4},
+-	{0xB9, 0x9, 1, 3},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBB, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xAC, 0xAC, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x98, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x84, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB8, 0xB8, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xBA, 0xBA, 0, 3},
+-	{0xB9, 0x0, 1, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0x99, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xAE, 0xAE, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0xAE, 0xAE, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB6, 0xB6, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 31, 255},
+-	{0xB1, 0x5A, 1, 255},
+-	{0x9F, 0x57, 1, 255},
+-	{0x9E, 0x54, 1, 255},
+-	{0x9C, 0x51, 1, 255},
+-	{0x9B, 0x4E, 1, 255},
+-	{0x9A, 0x4B, 1, 255},
+-	{0x99, 0x48, 1, 255},
+-	{0x98, 0x45, 1, 255},
+-	{0x97, 0x42, 1, 255},
+-	{0x96, 0x3F, 1, 255},
+-	{0x95, 0x3C, 1, 255},
+-	{0x94, 0x39, 1, 255},
+-	{0x93, 0x36, 1, 255},
+-	{0x92, 0x33, 1, 255},
+-	{0x91, 0x30, 1, 255},
+-	{0x90, 0x2D, 1, 255},
+-	{0x8F, 0x2A, 1, 255},
+-	{0x8E, 0x27, 1, 255},
+-	{0x8D, 0x24, 1, 255},
+-	{0x8C, 0x21, 1, 255},
+-	{0x8B, 0x1E, 1, 255},
+-	{0x8A, 0x1B, 1, 255},
+-	{0x89, 0x18, 1, 255},
+-	{0x87, 0x15, 1, 255},
+-	{0x86, 0x12, 1, 255},
+-	{0x85, 0xF, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 61},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 63},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 65},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 67},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 69},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 71},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 73},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 75},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 77},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 79},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 81},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 83},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 85},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 87},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 89},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 91},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 93},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 95},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 97},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 99},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 101},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 103},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 105},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 107},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 109},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 111},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 113},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 115},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 117},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 119},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xAC, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 30, 255},
+-	{0x9F, 0x57, 1, 255},
+-	{0x9E, 0x54, 1, 255},
+-	{0x9C, 0x51, 1, 255},
+-	{0x9B, 0x4E, 1, 255},
+-	{0x9A, 0x4B, 1, 255},
+-	{0x99, 0x48, 1, 255},
+-	{0x98, 0x45, 1, 255},
+-	{0x97, 0x42, 1, 255},
+-	{0x96, 0x3F, 1, 255},
+-	{0x95, 0x3C, 1, 255},
+-	{0x94, 0x39, 1, 255},
+-	{0x93, 0x36, 1, 255},
+-	{0x92, 0x33, 1, 255},
+-	{0x91, 0x30, 1, 255},
+-	{0x90, 0x2D, 1, 255},
+-	{0x8F, 0x2A, 1, 255},
+-	{0x8E, 0x27, 1, 255},
+-	{0x8D, 0x24, 1, 255},
+-	{0x8C, 0x21, 1, 255},
+-	{0x8B, 0x1E, 1, 255},
+-	{0x8A, 0x1B, 1, 255},
+-	{0x89, 0x18, 1, 255},
+-	{0x87, 0x15, 1, 255},
+-	{0x86, 0x12, 1, 255},
+-	{0x85, 0xF, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 5},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 7},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 9},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 11},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 13},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 15},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 17},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 19},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 21},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 23},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 25},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 27},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 29},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 31},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 33},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 35},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 37},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 39},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 41},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 43},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 45},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 47},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 49},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 51},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 53},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 55},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 57},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 59},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 36, 255},
+-	{0xAC, 0xF7, 1, 197},
+-	{0xAB, 0x69, 1, 196},
+-	{0xA1, 0x66, 1, 255},
+-	{0xA0, 0x63, 1, 255},
+-	{0x9F, 0x60, 1, 255},
+-	{0x9E, 0x5D, 1, 255},
+-	{0x9D, 0x5A, 1, 255},
+-	{0x9C, 0x57, 1, 255},
+-	{0x9B, 0x54, 1, 255},
+-	{0x9A, 0x51, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 131},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 133},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 135},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 137},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 139},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 4},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 140},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 142},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 144},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 146},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 147},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 149},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 151},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 153},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 155},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 157},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 159},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 161},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 163},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 165},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 167},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 169},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 171},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 173},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 175},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 177},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 179},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 181},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 183},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 185},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 187},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 188},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 190},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 192},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 193},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 35, 255},
+-	{0xBA, 0xBA, 0, 194},
+-	{0xA1, 0x66, 1, 255},
+-	{0xA0, 0x63, 1, 255},
+-	{0x9F, 0x60, 1, 255},
+-	{0x9E, 0x5D, 1, 255},
+-	{0x9D, 0x5A, 1, 255},
+-	{0x9C, 0x57, 1, 255},
+-	{0x9B, 0x54, 1, 255},
+-	{0x9A, 0x51, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 5},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 7},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 9},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 11},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 13},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 14},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 16},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 18},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 20},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 21},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 23},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 25},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 27},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 29},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 31},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 33},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 35},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 37},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 39},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 41},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 43},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 45},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 47},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 49},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 51},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 53},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 55},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 57},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 59},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 61},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 62},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 64},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 66},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 67},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 35, 255},
+-	{0xBA, 0xBA, 0, 195},
+-	{0xA1, 0x6A, 1, 255},
+-	{0xA0, 0x67, 1, 255},
+-	{0x9F, 0x64, 1, 255},
+-	{0x9E, 0x61, 1, 255},
+-	{0x9D, 0x5E, 1, 255},
+-	{0x9C, 0x5B, 1, 255},
+-	{0x9B, 0x58, 1, 255},
+-	{0x9A, 0x55, 1, 255},
+-	{0x99, 0x52, 1, 255},
+-	{0x98, 0x4F, 1, 255},
+-	{0x97, 0x4C, 1, 255},
+-	{0x96, 0x49, 1, 255},
+-	{0x95, 0x46, 1, 255},
+-	{0x94, 0x43, 1, 255},
+-	{0x93, 0x40, 1, 255},
+-	{0x92, 0x3D, 1, 255},
+-	{0x91, 0x3A, 1, 255},
+-	{0x90, 0x37, 1, 255},
+-	{0x8F, 0x34, 1, 255},
+-	{0x8E, 0x31, 1, 255},
+-	{0x8D, 0x2E, 1, 255},
+-	{0x8C, 0x2B, 1, 255},
+-	{0x8B, 0x28, 1, 255},
+-	{0x8A, 0x25, 1, 255},
+-	{0x89, 0x22, 1, 255},
+-	{0x88, 0x1F, 1, 255},
+-	{0x87, 0x1C, 1, 255},
+-	{0x86, 0x19, 1, 255},
+-	{0x85, 0x16, 1, 255},
+-	{0x84, 0x10, 1, 255},
+-	{0x83, 0xD, 1, 255},
+-	{0x82, 0xA, 1, 255},
+-	{0x81, 0x7, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xBA, 0x0, 1, 69},
+-	{0xB9, 0xBA, 0, 68},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBB, 0xBB, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 70},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 72},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 74},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 76},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 77},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 79},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 81},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 83},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 84},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 86},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 88},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 90},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 92},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 94},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 96},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 98},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 100},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 102},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 104},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 106},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 108},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 110},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 112},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 114},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 116},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 118},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 120},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 122},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 124},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 125},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 127},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 129},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 130},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 36, 255},
+-	{0xB6, 0xFE, 1, 134},
+-	{0xAF, 0x71, 1, 133},
+-	{0xA1, 0x6E, 1, 255},
+-	{0xA0, 0x6B, 1, 255},
+-	{0x9F, 0x68, 1, 255},
+-	{0x9E, 0x65, 1, 255},
+-	{0x9D, 0x62, 1, 255},
+-	{0x9C, 0x5F, 1, 255},
+-	{0x9B, 0x5C, 1, 255},
+-	{0x9A, 0x59, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 68},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 70},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 72},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 74},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 76},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 77},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 79},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 81},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 83},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 84},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 86},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 88},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 90},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 92},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 94},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 96},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 98},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 100},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 102},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 104},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 106},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 108},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 110},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 112},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 114},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 3, 255},
+-	{0xBA, 0x3, 1, 117},
+-	{0xB9, 0xBA, 0, 116},
+-	{0xB7, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB8, 0xB8, 0, 4},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 118},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 120},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 122},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 124},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 125},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 127},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 129},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 130},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 34, 255},
+-	{0xA1, 0x66, 1, 255},
+-	{0xA0, 0x63, 1, 255},
+-	{0x9F, 0x60, 1, 255},
+-	{0x9E, 0x5D, 1, 255},
+-	{0x9D, 0x5A, 1, 255},
+-	{0x9C, 0x57, 1, 255},
+-	{0x9B, 0x54, 1, 255},
+-	{0x9A, 0x51, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 5},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 7},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 9},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 11},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 13},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 14},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 16},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 18},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 20},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 21},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 23},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 25},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 27},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 29},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 31},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 33},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 35},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 37},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 39},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 41},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 43},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 45},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 47},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 49},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 51},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 53},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 55},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 57},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 59},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 61},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 62},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 64},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 66},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 67},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB7, 0xB8, 0, 131},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 34, 255},
+-	{0xA1, 0x66, 1, 255},
+-	{0xA0, 0x63, 1, 255},
+-	{0x9F, 0x60, 1, 255},
+-	{0x9E, 0x5D, 1, 255},
+-	{0x9D, 0x5A, 1, 255},
+-	{0x9C, 0x57, 1, 255},
+-	{0x9B, 0x54, 1, 255},
+-	{0x9A, 0x51, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 4},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 6},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 8},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 10},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 11},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 13},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 15},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 17},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 18},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 20},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 22},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 24},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 26},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 28},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 30},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 32},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 34},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 36},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 38},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 40},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 42},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 44},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 46},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 48},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 50},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 52},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 54},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 56},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 58},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 59},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 61},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 63},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 64},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 35, 255},
+-	{0xB6, 0x71, 1, 69},
+-	{0xA1, 0x6E, 1, 255},
+-	{0xA0, 0x6B, 1, 255},
+-	{0x9F, 0x68, 1, 255},
+-	{0x9E, 0x65, 1, 255},
+-	{0x9D, 0x62, 1, 255},
+-	{0x9C, 0x5F, 1, 255},
+-	{0x9B, 0x5C, 1, 255},
+-	{0x9A, 0x59, 1, 255},
+-	{0x99, 0x4E, 1, 255},
+-	{0x98, 0x4B, 1, 255},
+-	{0x97, 0x48, 1, 255},
+-	{0x96, 0x45, 1, 255},
+-	{0x95, 0x42, 1, 255},
+-	{0x94, 0x3F, 1, 255},
+-	{0x93, 0x3C, 1, 255},
+-	{0x92, 0x39, 1, 255},
+-	{0x91, 0x36, 1, 255},
+-	{0x90, 0x33, 1, 255},
+-	{0x8F, 0x30, 1, 255},
+-	{0x8E, 0x2D, 1, 255},
+-	{0x8D, 0x2A, 1, 255},
+-	{0x8C, 0x27, 1, 255},
+-	{0x8B, 0x24, 1, 255},
+-	{0x8A, 0x21, 1, 255},
+-	{0x89, 0x1E, 1, 255},
+-	{0x88, 0x1B, 1, 255},
+-	{0x87, 0x18, 1, 255},
+-	{0x86, 0x15, 1, 255},
+-	{0x85, 0x12, 1, 255},
+-	{0x84, 0xC, 1, 255},
+-	{0x83, 0x9, 1, 255},
+-	{0x82, 0x6, 1, 255},
+-	{0x81, 0x3, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 4},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 6},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 8},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 10},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 12},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 13},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 15},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 17},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 19},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 20},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 22},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 24},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 26},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 28},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 30},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 32},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 34},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 36},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 38},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 40},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 42},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 44},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 46},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 48},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 50},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 3, 255},
+-	{0xBA, 0x3, 1, 53},
+-	{0xB9, 0xBA, 0, 52},
+-	{0xB7, 0x0, 1, 255},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB8, 0xB8, 0, 3},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 54},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 56},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 58},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 60},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 61},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xBA, 0, 63},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 65},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 66},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB7, 0xB8, 0, 67},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB8, 0xB8, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0x0, 1, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xB9, 0xB9, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBA, 0xBA, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 2, 255},
+-	{0xBE, 0xBE, 0, 3},
+-	{0xBD, 0x0, 1, 2},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0xE1, 0x0, 1, 255},
+-	{0x80, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAD, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 255},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAC, 0x0, 1, 255},
+-	{0xB7, 0xB7, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x87, 0x87, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x86, 0x86, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0xA6, 0xA7, 0, 1},
+-	{0xCC, 0x0, 4, 255},
+-	{0x8A, 0x8A, 0, 5},
+-	{0x87, 0x88, 0, 3},
+-	{0x83, 0x83, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x83, 0x83, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xCC, 0x0, 4, 255},
+-	{0xA8, 0xA8, 0, 5},
+-	{0x8B, 0x8B, 0, 4},
+-	{0x88, 0x88, 0, 3},
+-	{0x82, 0x83, 0, 1},
+-	{0x72, 0x72, 0, 1},
+-	{0x72, 0x72, 0, 2},
+-	{0x52, 0x52, 0, 1},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8B, 0x8B, 0, 3},
+-	{0x88, 0x88, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0x8D, 0x0, 1, 3},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAE, 0x0, 1, 255},
+-	{0xB7, 0x0, 1, 2},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0x8D, 0x8D, 0, 1},
+-	{0xE0, 0x0, 1, 255},
+-	{0xAF, 0x0, 1, 255},
+-	{0x8D, 0x8D, 0, 1},
+-	{0xE0, 0x0, 2, 255},
+-	{0xB9, 0x1, 1, 255},
+-	{0xB8, 0x0, 1, 255},
+-	{0xB2, 0xB2, 0, 1},
+-	{0x85, 0x85, 0, 2},
+-	{0xCC, 0x0, 2, 255},
+-	{0x84, 0x84, 0, 2},
+-	{0x81, 0x81, 0, 1},
+-	{0xDA, 0x0, 1, 255},
+-	{0xBE, 0xBE, 0, 1},
+-	{0xDA, 0x1, 1, 255},
+-	{0xD9, 0x0, 1, 255},
+-	{0x94, 0x94, 0, 1},
+-	{0xBE, 0xBE, 0, 2},
+-	{0xCC, 0x0, 2, 255},
+-	{0x9B, 0x9B, 0, 2},
+-	{0x82, 0x82, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x9B, 0x9B, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x61, 0x61, 0, 2},
+-	{0x88, 0x0, 1, 255},
+-	{0x61, 0x0, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x88, 0x88, 0, 1},
+-	{0xC3, 0x0, 1, 255},
+-	{0xA4, 0xA4, 0, 1},
+-	{0x65, 0x65, 0, 1},
+-	{0x69, 0x69, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x6F, 0x6F, 0, 2},
+-	{0x88, 0x0, 1, 255},
+-	{0x6F, 0x0, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x88, 0x88, 0, 1},
+-	{0xC3, 0x0, 1, 255},
+-	{0xB6, 0xB6, 0, 1},
+-	{0x63, 0x0, 1, 255},
+-	{0x68, 0x68, 0, 1},
+-	{0xCC, 0x0, 1, 255},
+-	{0x75, 0x75, 0, 2},
+-	{0x88, 0x0, 1, 255},
+-	{0x75, 0x0, 1, 255},
+-	{0xCC, 0x0, 1, 255},
+-	{0x88, 0x88, 0, 1},
+-	{0xC3, 0x0, 1, 255},
+-	{0xBC, 0xBC, 0, 1},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8C, 0x8C, 0, 4},
+-	{0x84, 0x84, 0, 3},
+-	{0x80, 0x81, 0, 1},
+-	{0xCC, 0x0, 4, 255},
+-	{0x8C, 0x8C, 0, 8},
+-	{0x84, 0x84, 0, 7},
+-	{0x82, 0x0, 1, 255},
+-	{0x80, 0x81, 0, 5},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8C, 0x8C, 0, 4},
+-	{0x84, 0x84, 0, 3},
+-	{0x80, 0x81, 0, 1},
+-	{0xCC, 0x0, 2, 255},
+-	{0x8C, 0x8C, 0, 2},
+-	{0x84, 0x84, 0, 1},
+-	{0xCC, 0x0, 4, 255},
+-	{0x8C, 0x8C, 0, 9},
+-	{0x88, 0x0, 1, 8},
+-	{0x84, 0x84, 0, 7},
+-	{0x80, 0x81, 0, 5},
+-	{0xCC, 0x0, 3, 255},
+-	{0x8C, 0x8C, 0, 4},
+-	{0x84, 0x84, 0, 3},
+-	{0x80, 0x81, 0, 1},
+-}
+-
+-// Total size of mainTable is 920988 bytes
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/chars.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/chars.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/chars.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/chars.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,937 +0,0 @@
+-// Generated by running
+-//  maketables -root=http://unicode.org/Public/UCA/6.0.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/2.0.1/core.zip
+-// DO NOT EDIT
+-
+-package main
+-
+-type exemplarType int
+-
+-const (
+-	exCharacters exemplarType = iota
+-	exContractions
+-	exPunctuation
+-	exAuxiliary
+-	exCurrency
+-	exIndex
+-	exN
+-)
+-
+-var exemplarCharacters = map[string][exN]string{
+-	"af": {
+-		0: "a Ã¡ Ã¢ b c d e Ã© Ãš Ãª Ã« f g h i Ã® Ã¯ j k l m n o ÃŽ Ã¶ p q r s t u Ã» v w x y z",
+-		3: "Ã¡ Ã  Ã¢ Ã€ Ã£ ÃŠ Ã§ Ã© Ãš Ãª Ã« Ã­ Ã¬ Ã® Ã¯ Ã³ Ã² ÃŽ Ã¶ Ãº Ã¹ Ã» ÃŒ Ãœ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"agq": {
+-		0: "a Ã  Ã¢ Ç Ä b c d e Ãš Ãª Ä Ä É ÉÌ ÉÌ ÉÌ ÉÌ f g h i Ã¬ Ã® Ç Ä« Éš ÉšÌ ÉšÌ ÉšÌ ÉšÌ k l m n Å o Ã² ÃŽ Ç Å É ÉÌ ÉÌ ÉÌ ÉÌ p s t u Ã¹ Ã» Ç Å« Ê ÊÌ ÊÌ ÊÌ ÊÌ v w y z Ê",
+-		3: "q r x",
+-		5: "A B C D E Æ F G H I Æ K L M N Å O Æ P S T U É V W Y Z Ê",
+-	},
+-	"ak": {
+-		0: "a b d e É f g h i k l m n o É p r s t u w y",
+-		3: "c j q v z",
+-		5: "A B C D E Æ F G H I J K L M N O Æ P Q R S T U V W X Y Z",
+-	},
+-	"am": {
+-		0: "á á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á° á² á² á³ áŽ áµ áž áž á¹ áº á» áŒ áœ áŸ á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· á á á á á á á
+ á á á á á á á á á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á",
+-	},
+-	"ar": {
+-		0: "Ù Ù Ù Ù Ù Ù Ù Ù Ø¡ Ø¢ Ø£ Ø€ Ø¥ ØŠ Ø§ Øš Øª Ø© Ø« Ø¬ Ø­ Ø® Ø¯ Ø° Ø± Ø² Ø³ ØŽ Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ù Ù Ù
+ Ù Ù Ù Ù Ù",
+-		3: "\u200c \u200d \u200e \u200f",
+-	},
+-	"as": {
+-		0: "àŠ
+ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ  àŠ¡ àŠ¡àŠŒ à§ àŠ¢ àŠ¢àŠŒ à§ àŠ£ àŠ€ àŠ¥ àŠŠ àŠ§ àŠš àŠª àŠ« àŠ¬ àŠ­ àŠ® àŠ¯ àŠ¯àŠŒ à§° àŠ² à§± àŠ¶ àŠ· àŠž àŠ¹ àŠŸ àŠ¿ à§ à§ à§ à§ à§ à§ à§ à§ à§",
+-		3: "\u200c \u200d à§²",
+-	},
+-	"asa": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"az": {
+-		0: "a b c Ã§ d e É f g Ä h x Ä± i iÌ j k q l m n o Ã¶ p r s Å t u ÃŒ v y z",
+-		3: "w",
+-	},
+-	"az_Cyrl": {
+-		0: "Ð° Ó Ð± Ð² Ð³ Ò ÐŽ Ðµ Ð¶ Ð· Ðž Ð¹ Ñ Ðº Ò Ð» ÐŒ Ðœ ÐŸ Ó© Ð¿ Ñ Ñ Ñ Ñ Ò¯ Ñ Ñ
+ Ò» Ñ Ò¹ Ñ Ñ",
+-		3: "Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-	},
+-	"bas": {
+-		0: "a Ã¡ Ã  Ã¢ Ç Ä aá· aá· b É c d e Ã© Ãš Ãª Ä Ä eá· eá· É ÉÌ ÉÌ ÉÌ ÉÌ ÉÌ Éá· Éá· f g h i Ã­ Ã¬ Ã® Ç Ä« iá· iá· j k l m n Å Ç¹ Å o Ã³ Ã² ÃŽ Ç Å oá· oá· É ÉÌ ÉÌ ÉÌ ÉÌ ÉÌ Éá· Éá· p r s t u Ãº Ã¹ Ã» Ç Å« uá· uá· v w y z",
+-		3: "q x",
+-		5: "A B Æ C D E Æ F G H I J K L M N Å O Æ P R S T U V W Y Z",
+-	},
+-	"be": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ ÐŽÐ¶ ÐŽÐ· Ðµ Ñ Ð¶ Ð· Ñ Ð¹ Ðº Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"bem": {
+-		0: "a b c e f g i j k l m n o p s sh t u w y",
+-		3: "d h q r v x z",
+-		5: "A B C E F G I J K L M N O P S SH T U W Y",
+-	},
+-	"bez": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w y z",
+-		3: "x",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W Y Z",
+-	},
+-	"bg": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ Ðµ Ð¶ Ð· Ðž Ð¹ Ðº Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		3: "Ð°Ì Ñ Ñ ÐŸÌ ÑÌ Ñ Ñ£ ÑÌ ÑÌ Ñ«",
+-	},
+-	"bm": {
+-		0: "a b c d e É f g h i j k l m n É² Å o É p r s t u w y z",
+-		3: "q v x",
+-		5: "A B C D E Æ F G H I J K L M N Æ Å O Æ P R S T U W Y Z",
+-	},
+-	"bn": {
+-		0: "à§º àŠ
+ àŠ àŠ àŠ àŠ àŠ àŠ à§  àŠ à§¡ àŠ àŠ àŠ àŠ àŠŒ àŠ àŠ àŠ àŠ àŠà§àŠ· àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ àŠ  àŠ¡ àŠ¡àŠŒ àŠ¢ àŠ¢àŠŒ àŠ£ à§ àŠ€ àŠ¥ àŠŠ àŠ§ àŠš àŠª àŠ« àŠ¬ àŠ­ àŠ® àŠ¯ àŠ¯àŠŒ àŠ° àŠ² àŠ¶ àŠ· àŠž àŠ¹ àŠœ àŠŸ àŠ¿ à§ à§ à§ à§ à§ à§¢ à§£ à§ à§ à§ à§ à§ à§",
+-		3: "\u200c \u200d à§ž à§¹ à§² à§³ à§° à§± à§Ž à§µ à§¶ à§·",
+-		4: "à§³",
+-	},
+-	"bo": {
+-		0: "àœŸ àœ¿ àœ àœàŸµ àŸ àŸàŸµ àœ àŸ àœ àœàŸ· àŸ àŸàŸ· àœ àŸ àœ
+ àŸ àœ àŸ àœ àŸ àœ àŸ àœ àŸ àœ àŸ àœ àœàŸ· àŸ àŸàŸ· àœ àŸ àœ àŸ àœ àŸ  àœ àœàŸ· àŸ¡ àŸ¡àŸ· àœ àŸ£ àœ àŸ€ àœ àŸ¥ àœ àœàŸ· àŸŠ àŸŠàŸ· àœ àŸš àœ àŸ© àœ àŸª àœ àœàŸ· àŸ« àŸ«àŸ· àœ àŸ­ àŸº àœ àŸ® àœ àŸ¯ àœ  àŸ° àœ¡ àŸ± àŸ» àœ¢ àœª àŸ² àŸŒ àœ£ àŸ³ àœ€ àŸŽ àœ¥ àŸµ àœŠ àŸ¶ àœ§ àŸ· àœš àŸž àœ² àœ±àœ² àŸ àœ±àŸ àœŽ àœ±àœŽ àŸ²àŸ àœ· àŸ³àŸ àœ¹ àœ¹ àœº àœ» àœŒ àœœ àŸ",
+-		3: "àŒ",
+-	},
+-	"br": {
+-		0: "a b ch cÊŒh d e Ãª f g h i j k l m n Ã± o p r s t u Ã¹ v w x y z",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ c Ã§ Ã© Ãš Ä Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å q Ãº Å­ Ã» ÃŒ Å« Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W X Y Z",
+-	},
+-	"brx": {
+-		0: "à€Œ à€ à€ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¡à€Œ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€³ à€µ à€¶ à€· à€ž à€¹ à€Ÿ à€¿ à¥ à¥ à¥ à¥ à¥
+ à¥ à¥ à¥ à¥ à¥ à¥",
+-		3: "\u200c \u200d",
+-		5: "à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¡à€Œ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€³ à€µ à€¶ à€· à€ž à€¹",
+-	},
+-	"bs": {
+-		0: "a b c Ä Ä d dÅŸ Ä e f g h i j k l lj m n nj o p r s Å¡ t u v z ÅŸ",
+-		3: "q w x y",
+-	},
+-	"byn": {
+-		0: "á á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á áš áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á° á² á² á³ áŽ áµ áž áž á¹ áº á» áŒ áœ áŸ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á° á° á± á² á³ áŽ áµ á¶ á· á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á â¶ â¶ â¶ â¶ â¶ á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ áž áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á á á á á á á á á á á á",
+-	},
+-	"ca": {
+-		0: "a Ã  b c Ã§ d e Ã© Ãš f g h i Ã­ Ã¯ j k l Å m n o Ã³ Ã² p q r s t u Ãº ÃŒ v w x y z",
+-		3: "Ã¡ Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ä Ãª Ã« Ä Ã¬ Ä­ Ã® Ä« Ã± Âº Å ÃŽ Ã¶ Ãž Å Å Ã¹ Å­ Ã» Å« Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"cgg": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"chr": {
+-		0: "á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ",
+-		5: "á  áŠ á­ á³ á¹ áŸ á á á á á£ á© á¯",
+-	},
+-	"cs": {
+-		0: "a Ã¡ b c Ä d Ä e Ã© Ä f g h ch i Ã­ j k l m n Å o Ã³ p q r Å s Å¡ t Å¥ u Ãº Å¯ v w x y Ãœ z ÅŸ",
+-	},
+-	"cy": {
+-		0: "a Ã¡ Ã  Ã¢ Ã€ b c ch d dd e Ã© Ãš Ãª Ã« f ff g ng h i Ã­ Ã¬ Ã® Ã¯ l ll m n o Ã³ Ã² ÃŽ Ã¶ p ph r rh s t th u Ãº Ã¹ Ã» ÃŒ w áº áº Åµ áº
+ y Ãœ á»³ Å· Ã¿",
+-		3: "j k q v x z",
+-	},
+-	"da": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z ÃŠ Ãž Ã¥",
+-		2: "- â â , ; : ! ? . âŠ ' â â \" â â ( ) [ ] @ * / & # â  â² â³ Â§",
+-		3: "Ã¡ Ã© Ãš Ãª Ã« ÃŒ Ã€ Ã¶",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ã Ã Ã
+",
+-	},
+-	"dav": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"de": {
+-		0: "a Ã€ b c d e f g h i j k l m n o Ã¶ p q r s Ã t u ÃŒ v w x y z",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â Â« Â» ( ) [ ] { } @ * / & # Â§",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã£ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ãž Å Å Ãº Ã¹ Å­ Ã» Å« Ã¿",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"dje": {
+-		0: "a Ã£ b c d e áºœ f g h i j k l m n É² Å o Ãµ p q r s Å¡ t u w x y z ÅŸ",
+-		3: "v",
+-		5: "A B C D E F G H I J K L M N Æ Å O P Q R S T U W X Y Z",
+-	},
+-	"dua": {
+-		0: "a Ã¡ b É c d É e Ã© É ÉÌ f g i Ã­ j k l m n ny Å o Ã³ É ÉÌ p r s t u Ãº Å« w y",
+-		3: "h q v x z",
+-		5: "A B Æ C D Æ E Æ F G I J K L M N Å O Æ P S T U W Y",
+-	},
+-	"dyo": {
+-		0: "a Ã¡ b c d e Ã© f g h i Ã­ j k l m n Ã± Å o Ã³ p q r s t u Ãº v w x y",
+-		3: "z",
+-		5: "A B C D E F G H I J K L M N Ã Å O P Q R S T U V W X Y",
+-	},
+-	"dz": {
+-		0: "àœ àŸ àœ àŸ àœ àŸ àœ àŸ àœ
+ àœ àœ àŸ àœ àŸ àœ àŸ àœ àœ àŸ¡ àœ àŸ£ àœ àŸ€ àœ àœ àŸŠ àœ àŸš àœ àŸ© àœ àœ àŸ« àœ àŸ­ àœ àœ àœ  àœ¡ àŸ± àœ¢ àŸ² àœ£ àŸ³ àœ€ àŸµ àœŠ àœ§ àŸ· àœš àœ² àœŽ àœº àœŒ",
+-		3: "àœ àœ àœ àœ àœ¥",
+-	},
+-	"ebu": {
+-		0: "a b c d e f g h i Ä© j k l m n o p q r s t u Å© v w x y z",
+-		5: "A B C D E F G H I Äš J K L M N O P Q R S T U Åš V W X Y Z",
+-	},
+-	"ee": {
+-		0: "a Ã¡ Ã  Ã£ b d É e Ã© Ãš áºœ É ÉÌ ÉÌ ÉÌ f Æ g É£ h i Ã­ Ã¬ Ä© k l m n Å o Ã³ Ã² Ãµ É ÉÌ ÉÌ ÉÌ p r s t u Ãº Ã¹ Å© v Ê w x y z",
+-		3: "c j q",
+-		5: "A B C D Æ E Æ F Æ G Æ H I J K L M N Å O Æ P Q R S T U V Æ² W X Y Z",
+-	},
+-	"el": {
+-		0: "Î± Î¬ Î² Î³ ÎŽ Îµ Î­ Î¶ Î· Î® Îž Î¹ Î¯ Ï Î Îº Î» ÎŒ Îœ ÎŸ Î¿ Ï Ï Ï Ï Ï Ï Ï
+ Ï Ï Î° Ï Ï Ï Ï Ï",
+-		2: "- â â â , ; : ! . âŠ \" ( ) [ ] @ * / \\ & Â§",
+-		4: "Î± Î² Î³ ÎŽ Îµ Î¶ Î· Îž Î¹ Îº Î» ÎŒ Îœ ÎŸ Î¿ Ï Ï Ï Ï Ï
+ Ï Ï Ï Ï",
+-		5: "Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î  Î¡ Î£ Î€ Î¥ ÎŠ Î§ Îš Î©",
+-	},
+-	"el_POLYTON": {
+-		0: "Î± áŒ áŒ áŒ áŒ áŒ áŒ
+ áŒ áŒ Î¬ áœ° áŸ¶ Î² Î³ ÎŽ Îµ áŒ áŒ áŒ áŒ áŒ áŒ Î­ áœ² Î¶ Î· áŒ  áŒ€ áŒ¢ áŒŠ áŒ¡ áŒ¥ áŒ£ áŒ§ Î® áœŽ á¿ Îž Î¹ áŒ° áŒŽ áŒ² áŒ¶ áŒ± áŒµ áŒ³ áŒ· Î¯ áœ¶ á¿ Ï Î á¿ á¿ Îº Î» ÎŒ Îœ ÎŸ Î¿ áœ áœ áœ Ï áœž Ï Ï Ï Ï Ï Ï
+ áœ áœ áœ áœ áœ áœ áœ áœ Ï áœº á¿Š Ï Î° á¿¢ á¿§ Ï Ï Ï Ï áœ€ áœ¢ áœŠ áœ¥ áœ£ áœ§ Ï áœŒ á¿¶",
+-	},
+-	"en": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â ( ) [ ] @ * / & # â  â¡ â² â³ Â§",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å Ãº Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"en_Dsrt": {
+-		0: "ðš ð© ðª ð« ð¬ ð­ ð® ð¯ ð° ð± ð² ð³ ðŽ ðµ ð¶ ð· ðž ð¹ ðº ð» ðŒ ðœ ðŸ ð¿ ð ð ð ð ð ð
+ ð ð ð ð ð ð ð ð ð ð",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"en_GB": {
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"en_Shaw": {
+-		0: "ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  ð¡ ð¢ ð£ ð€ ð¥ ðŠ ð§ ðš ð© ðª ð« ð¬ ð­ ð® ð¯ ð° ð± ð² ð³ ðŽ ðµ ð¶ ð· ðž ð¹ ðº ð» ðŒ ðœ ðŸ ð¿",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"eo": {
+-		0: "a b c Ä d e f g Ä h Ä¥ i j Äµ k l m n o p r s Å t u Å­ v z",
+-		3: "q w x y",
+-		5: "A B C Ä D E F G Ä H Ä€ I J ÄŽ K L M N O P R S Å T U Å¬ V Z",
+-	},
+-	"es": {
+-		0: "a Ã¡ b c d e Ã© f g h i Ã­ j k l m n Ã± o Ã³ p q r s t u Ãº ÃŒ v w x y z",
+-		2: "- â â â , ; : ! Â¡ ? Â¿ . âŠ ' â â \" â â Â« Â» ( ) [ ] @ * / \\ & # â  â¡ â² â³ Â§",
+-		3: "Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ãš Ä Ãª Ã« Ä Ã¬ Ä­ Ã® Ã¯ Ä« Âº Ã² Å ÃŽ Ã¶ Ãž Å Å Ã¹ Å­ Ã» Å« Ã¿",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N Ã O P Q R S T U V W X Y Z",
+-	},
+-	"et": {
+-		0: "a b c d e f g h i j k l m n o p q r s Å¡ z ÅŸ t u v w Ãµ Ã€ Ã¶ ÃŒ x y",
+-		3: "Ã¡ Ã  Ã¢ Ã¥ Ä ÃŠ Ã§ Ã© Ãš Ãª Ã« Ä Ã­ Ã¬ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ãž Å Å Ãº Ã¹ Ã» Å«",
+-		4: "a b c d e f g h i j k l m n o p q r s Å¡ z ÅŸ t u v w Ãµ Ã€ Ã¶ ÃŒ x y",
+-		5: "A B C D E F G H I J K L M N O P Q R S Å  Z Åœ T U V Ã Ã Ã Ã X Y",
+-	},
+-	"eu": {
+-		0: "a b c Ã§ d e f g h i j k l m n Ã± o p q r s t u v w x y z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ewo": {
+-		0: "a Ã¡ Ã  Ã¢ Ç b d dz e Ã© Ãš Ãª Ä Ç ÇÌ ÇÌ ÇÌ ÇÌ É ÉÌ ÉÌ ÉÌ ÉÌ f g h i Ã­ Ã¬ Ã® Ç k kp l m n Å Ç¹ ng nk Å o Ã³ Ã² ÃŽ Ç É ÉÌ ÉÌ ÉÌ ÉÌ p r s t ts u Ãº Ã¹ Ã» Ç v w y z",
+-		3: "c j q x",
+-		5: "A B D E Æ Æ F G H I K L M N Å O Æ P R S T U V W Y Z",
+-	},
+-	"fa": {
+-		0: "Ù Ù Ù Ù Ù Ø¢ Ø§ Ø¡ Ø£ Ø€ ØŠ Øš ÙŸ Øª Ø« Ø¬ Ú Ø­ Ø® Ø¯ Ø° Ø± Ø² Ú Ø³ ØŽ Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú¯ Ù Ù
+ Ù Ù Ù Ø© Û",
+-		2: "- â Ø Ù« Ù¬ Ø : ! Ø . âŠ Â« Â» ( ) [ ] * / \\",
+-		3: "\u200c \u200d \u200e \u200f Ù Ù Ù Ù Ù Ù° Û° Û± Û² Û³ ÛŽ Ûµ Û¶ Û· Ûž Û¹",
+-		4: "ï·Œ a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "Ø¢ Ø§ Øš ÙŸ Øª Ø« Ø¬ Ú Ø­ Ø® Ø¯ Ø° Ø± Ø² Ú Ø³ ØŽ Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú¯ Ù Ù
+ Ù Ù Ù Û",
+-	},
+-	"fa_AF": {
+-		3: "Ù Ù° \u200c \u200d ÙŒ Ú Ú
+ Ú Ú Ú Ú Ú« ÚŒ Ù",
+-	},
+-	"ff": {
+-		0: "a b É c d É e f g h i j k l m n Ã± Å o p r s t u w y ÆŽ",
+-		3: "q v x z",
+-		5: "A B Æ C D Æ E F G H I J K L M N Ã Å O P R S T U W Y Æ³",
+-	},
+-	"fi": {
+-		0: "a b c d e f g h i j k l m n o p q r s Å¡ t u v w x y z ÅŸ Ã¥ Ã€ Ã¶",
+-		3: "Ã¡ Ã  Ã¢ Ã£ Ä Ã§ Ä Ã© Ãš Ã« Ç§ Ç¥ È Ã­ Ã¯ Ç© Å Ã± Å ÃŽ Ãµ Å Å Å§ Ãº ÃŒ Ê Ç¯ ÃŠ Ãž",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ã
+ Ã Ã",
+-	},
+-	"fil": {
+-		0: "a b c d e f g h i j k l m n Ã± ng o p q r s t u v w x y z",
+-		3: "Ã¡ Ã  Ã¢ Ã© Ãš Ãª Ã­ Ã¬ Ã® Ã³ Ã² ÃŽ Ãº Ã¹ Ã»",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"fo": {
+-		0: "a Ã¡ b d Ã° e f g h i Ã­ j k l m n o Ã³ p r s t u Ãº v x y Ãœ ÃŠ Ãž",
+-		3: "c q w z",
+-	},
+-	"fr": {
+-		0: "a Ã  Ã¢ ÃŠ b c Ã§ d e Ã© Ãš Ãª Ã« f g h i Ã® Ã¯ j k l m n o ÃŽ Å p q r s t u Ã¹ Ã» ÃŒ v w x y Ã¿ z",
+-		2: "- â â â , ; : ! ? . âŠ â Â« Â» ( ) [ ] @ * / & # â  â¡ Â§",
+-		3: "Ã¡ Ã¥ Ã€ Ã£ Ä Ä Ã­ Ã¬ Ä« Ã± Ã³ Ã² Ã¶ Ãž Ãº Ç",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"fur": {
+-		0: "a Ã  Ã¢ b c Ã§ d e Ãš Ãª f g h i Ã¬ Ã® j k l m n o Ã² ÃŽ p q r s t u Ã¹ Ã» v w x y z",
+-		3: "Ã¥ Ä Ã© Ã« Ä Ã¯ Ã± Ã³ Å¡ ÃŒ",
+-	},
+-	"ga": {
+-		0: "a Ã¡ b c d e Ã© f g h i Ã­ l m n o Ã³ p r s t u Ãº",
+-		3: "áž Ä áž áž Ä¡ j k á¹ á¹ q á¹¡ á¹« v w x y z",
+-	},
+-	"gl": {
+-		0: "a Ã¡ b c d e Ã© f g h i Ã­ j k l m n Ã± o Ã³ p q r s t u Ãº ÃŒ v w x y z",
+-		5: "A B C D E F G H I J K L M N Ã O P Q R S T U V W X Y Z",
+-	},
+-	"gsw": {
+-		0: "a Ã€ b c d e f g h i j k l m n o Ã¶ p q r s t u ÃŒ v w x y z",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ãž Å Å Ãº Ã¹ Å­ Ã» Å« Ã¿",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"gu": {
+-		0: "àªŒ à« àª àª àª àª
+ àª àª àª àª àª àª à«  àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª  àª¡ àª¢ àª£ àª€ àª¥ àªŠ àª§ àªš àªª àª« àª¬ àª­ àª® àª¯ àª° àª² àªµ àª¶ àª· àªž àª¹ àª³ àªœ àªŸ àª¿ à« à« à« à« à« à«
+ à« à« à« à« à« à«",
+-		3: "\u200c \u200d",
+-		4: "àª° à«",
+-		5: "àª
+ àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª àª  àª¡ àª¢ àª£ àª€ àª¥ àªŠ àª§ àªš àªª àª« àª¬ àª­ àª® àª¯ àª° àª² àªµ àª¶ àª· àªž àª¹ àª³",
+-	},
+-	"guz": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"gv": {
+-		0: "a b c Ã§ d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"ha": {
+-		0: "a b É c d É e f g h i j k Æ l m n o r s sh t ts u w y ÊŒy z ÊŒ",
+-		3: "Ã¡ Ã  Ã¢ Ã© Ãš Ãª Ã­ Ã¬ Ã® Ã³ Ã² ÃŽ p q rÌ Ãº Ã¹ Ã» v x ÆŽ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"haw": {
+-		0: "a Ä e Ä i Ä« o Å u Å« h k l m n p w Ê»",
+-		3: "b c d f g j q r s t v x y z",
+-	},
+-	"he": {
+-		0: "× × × × × × × × × × × × × × × ×  × ×¡ ×¢ ×€ ×£ ×Š ×¥ ×§ ×š ×© ×ª",
+-		3: "Öœ × \u200e \u200f Ö° Ö± Ö² Ö³ ÖŽ Öµ Ö¶ Ö· Öž Ö¹ Ö» × × ÖŒ Ö¿ ÖŸ ×³ ×Ž",
+-		5: "× × × × × × × × × × × × × ×  ×¡ ×¢ ×€ ×Š ×§ ×š ×© ×ª",
+-	},
+-	"hi": {
+-		0: "à€Œ à¥ à€ à€ à€ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€³ à€µ à€¶ à€· à€ž à€¹ à€œ à€Ÿ à€¿ à¥ à¥ à¥ à¥ à¥ à¥
+ à¥ à¥ à¥ à¥ à¥ à¥",
+-		3: "\u200c \u200d",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-	},
+-	"hr": {
+-		0: "a b c Ä Ä d dÅŸ Ä e f g h i j k l lj m n nj o p r s Å¡ t u v z ÅŸ",
+-		3: "q w x y",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C Ä Ä D DÅœ Ä E F G H I J K L LJ M N NJ O P Q R S Å  T U V W X Y Z Åœ",
+-	},
+-	"hu": {
+-		0: "a Ã¡ b c cs ccs d dz ddz dzs ddzs e Ã© f g gy ggy h i Ã­ j k l ly lly m n ny nny o Ã³ Ã¶ Å p r s sz ssz t ty tty u Ãº ÃŒ Å± v z zs zzs",
+-		2: "- â , ; : ! ? . âŠ ' â \" â â Â« Â» ( ) [ ] { } ã ã @ * / & # âž Â§ ~",
+-		3: "Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ãš Ä Ãª Ã« Ä Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã² Å ÃŽ Ãž Å Å q Ã¹ Å­ Ã» Å« w x y Ã¿",
+-		5: "A Ã B C CS D DZ DZS E Ã F G GY H I Ã J K L LY M N NY O Ã Ã Å P Q R S SZ T TY U Ã Ã Å° V W X Y Z ZS",
+-	},
+-	"hy": {
+-		0: "Ö Õ Õ Õ Õ Õ Õ Õ¡ Õ¢ Õ£ Õ€ Õ¥ ÕŠ Õ§ Õš Õ© Õª Õ« Õ¬ Õ­ Õ® Õ¯ Õ° Õ± Õ² Õ³ ÕŽ Õµ Õ¶ Õ· Õž Õ¹ Õº Õ» ÕŒ Õœ ÕŸ Õ¿ Ö Ö Ö Ö Ö Ö Ö
+ Ö",
+-	},
+-	"ia": {
+-		0: "a b c ch d e f g h i j k l m n o p ph q r s t u v w x y z",
+-	},
+-	"id": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ig": {
+-		0: "a b ch d e áº¹ f g gb gh gw h i á» j k kp kw l m n á¹
+ nw ny o á» p r s sh t u á»¥ v w y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ii": {
+-		0: "ê ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+ ê
+  ê
+¡ ê
+¢ ê
+£ ê
+€ ê
+¥ ê
+Š ê
+§ ê
+š ê
+© ê
+ª ê
+« ê
+¬ ê
+­ ê
+® ê
+¯ ê
+° ê
+± ê
+² ê
+³ ê
+Ž ê
+µ ê
+¶ ê
+· ê
+ž ê
+¹ ê
+º ê
+» ê
+Œ ê
+œ ê
+Ÿ ê
+¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê",
+-	},
+-	"is": {
+-		0: "a Ã¡ b d Ã° e Ã© f g h i Ã­ j k l m n o Ã³ p r s t u Ãº v y Ãœ ÃŸ ÃŠ Ã¶",
+-		3: "c q w x z",
+-	},
+-	"it": {
+-		0: "a Ã  b c d e Ã© Ãš f g h i Ã¬ j k l m n o Ã³ Ã² p q r s t u Ã¹ v w x y z",
+-		2: "- â , ; : ! ? . âŠ â â ( ) [ ] { } @ /",
+-		3: "Ã­ Ã¯ Ãº",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ja": {
+-		0: "ã ã ãœ ãŸ ã ã¡ ã ã¢ ã ã£ ã ã€ ã
+ ã¥ ã ãŠ ãŽ ã ã§ ã ãš ã ã© ã ãª ãµ ã ã« ã ã¬ ã ã­ ã ã® ã ã¯ ã ã° ã¶ ã ã± ã ã² ã ã³ ã ãŽ ã ãµ ã ã¶ ã ã· ã ãž ã ã¹ ã ãº ã ã» ã ãŒ ã ãœ ã ãŸ ã ã¿ ã  ã ã¡ ã ã¢ ã ã£ ã ã€ ã ã¥ ã
+ ãŠ ã ã§ ã ãš ã ã© ã ãª ã ã« ã ã¬ ã ã­ ã ã® ã ã¯ ã ã° ã ã± ã ã² ã ã³ ã ãŽ ã ãµ ã ã¶ ã ã· ã ãž ã ã¹ ã ãº ã ã» ã ãŒ ã ãœ ã ãŸ ã ã¿ ã ã ã  ã ã¡ ã ã¢ ã ã£ ã ã€ ã
+ ã¥ ã ãŠ ã ã§ ã ãš ã ã© ã ãª ã ã« ã ã¬ ã ã­ ã ã® ã ã¯ ã ã° ã ã± ã ã² ã ã³ äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž¡ äžŠ äž­ äžž äž¹ äž» ä¹
+ ä¹ ä¹ ä¹ ä¹ ä¹± ä¹³ ä¹Ÿ äº äº äº äº äº äº äº äº äº äº äº¡ äº€ äºš äº« äº« äº¬ äº­ äºº ä» ä» ä» ä» ä» ä» ä» ä» ä»£ ä»£ ä»€ ä»¥ ä»® ä»° ä»² ä»¶ ä»» äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ¯ äŒŽ äŒž äŒº äŒŒ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ³ äœµ äœ¿ äŸ äŸ äŸ äŸ äŸ¡ äŸ® äŸ¯ äŸµ äŸ¿ ä¿ ä¿ ä¿ ä¿ ä¿ ä¿¡ ä¿® ä¿³ ä¿µ ä¿ž å å å å å å å£ å€ å« å¹ å å å å¥ åŽ åŽ åµ å¶ åœ å å å å å¬ åµ å· åŸ å å å å å§ å å å å åª å
+ å
+ å
+ å
+
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+¥ å
+š å
+« å
+« å
+¬ å
+­ å
+± å
+µ å
+· å
+ž å
+Œ å
+ å å å å å å å  å¬ å· å å å å¡ åŠ å¶ åž åž å¹ åº å å å å å å å å å å å€ å¥ å© å° å¶ å¶ å· åž åº å» å å å å å å£ å€ å¯ å° å² åµ å å å å  å£ å© åª å± åŽ å¹ åŸ å
+ å å å å å å å å¢ å€ å§ å² åº å å
+ å å å  å¹ å¹ åº å» å¿ å å å å å å å å å å å å å å  å° å± å³ å³ åŽ åµ åž å å å å å³ å» å å å å å å å å å å å å å£ å£ å€ å¥ å« å¬ å¯ å° å² å³ å· åž å å å å å å å å å å å å åŠ å« åž å¹ å å å å åš å³ åŒ åœ å å² å å å¡ å² å å å å¯ å± å å å å å å å åª å« å¶ å£ å å å± åš åŽ å å å å å  å£ å° å² å³ åº åœ å å å å§ åš å° å å å å åª å å å£ å å å å· å¹ åº å  å  å 
+ å  å € å ª å ± å Ž å¡ å¡ å¡ å¡ å¡ å¡ å¡ å¡© å¡Ÿ å¢ å¢ å¢ å¢ å¢š å¢³ å¢Ÿ å£ å£ å£ å£ å£« å£® å£° å£° å£± å£² å€ å€ å€ å€ å€ å€ å€¢ å€§ å€© å€© å€ª å€« å€® å€± å¥ å¥ å¥ å¥ å¥ å¥¥ å¥š å¥ª å¥® å¥³ å¥Ž å¥œ åŠ åŠ åŠ åŠ åŠ åŠ åŠ¥ åŠš åŠ¹ åŠ» å§ å§ å§ å§ å§« å§» å§¿ åš åš åš  åš¯ å© å© å©Š å©¿ åª å« å« å«¡ å¬¢ å­ å­ å­ å­ å­ å­£ å­€ å­Š å­« å®
+ å® å® å® å® å® å® å® å® å® å® å® å® å® å®¢ å®¢ å®£ å®€ å®® å®° å®³ å®³ å®Ž å®µ å®¶ å®¹ å®¿ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯¡ å¯§ å¯© å¯® å¯ž å¯º å¯Ÿ å¯¿ å° å° å° å° å° å° å° å° å° å° å° å° å°± å°º å°Œ å°Œ å°œ å°Ÿ å°¿ å± å±
+ å± å± å± å± å± å±€ å±¥ å±¯ å±± å² å²© å²¬ å²³ å²ž å³  å³¡ å³° å³¶ åŽ åŽ åŽ© å· å· å·¡ å·£ å·¥ å·¥ å·Š å·§ å·š å·® å·± å·» åž åž åž åž åž åž¥ åž« åž­ åž¯ åž° åž³ åžž åžœ å¹
+ å¹ å¹£ å¹² å¹² å¹³ å¹Ž å¹ž å¹¹ å¹» å¹» å¹Œ å¹œ å¹Ÿ åº åº åº åº åº åº åº åºŠ åº§ åº« åº­ åº¶ åº¶ åº· åºž å» å» å» å»¶ å»· å»º åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒŠ åŒ§ åŒ± åŒµ åŒ· åŒŸ åœ åœ¢ åœ© åœ« åœ° åœ± åœ¹ åœŒ åŸ åŸ åŸ åŸ
+ åŸ åŸ åŸ åŸ åŸ åŸ åŸ¡ åŸ© åŸª åŸ® åŸ³ åŸŽ åŸ¹ å¿ å¿
+ å¿ å¿ å¿ å¿ å¿ å¿ å¿ å¿  å¿« å¿µ æ æ æ æ  æ¥ æ§ æª æ æ æ æ¥ æš æ© æ­ æ¯ æµ æ æ æ  æ£ æŠ æ© æª æ² æŒ æ
+ æ æ æš æ° æ³ æ æ æ æ æ æ æ
+ æ
+ æ
+ æ
+ æ
+ æ
+¢ æ
+£ æ
+š æ
+® æ
+° æ
+¶ æ æ æ€ æ© æ² æ¶ æŸ æ æ æ² æž æ æ æ æ æŠ æ¯ æž æ» æ¿ æ æ æ æ æ æ æ æ± æ¶ æ¹ æ¿ æ æ æ æ æ æ æ æ æ æ« æ± æµ æ¹ æŒ æœ æ
+ æ æ æ æ æ æ æ æ æ  æ¡ æ¬ æ· æŸ æ æ æ æ æ æ¯ æ¿ æ æ æš æ® æ æ æ æ æ æ æ¡ æ¢ æ¥ æ§ æš æª æ² æ æ æ æ æ¡ æ® æŽ æº æ æ¬ æ­ æº æŸ æ æ æ© æ æ€ æ® æ² æ æ æŠ æ¬ æ¯ æ¹ æ» æŸ æ¿ æ
+ æ æ æ æ æ¢ æ£ æ¬ æ° æŽ æµ æ· æ æ æ æ æ æ æ€ æ¥ æ­ æ° æ¹ æœ æ
+ æ æ æ æ¢ æ¥ æ§ æ§ æš æ© æ¬ æ æ æ æ æ æ æ æ  æ¥ æš æ­ æ¯ æŒ æ æ© æ® æ¯ æŽ æ¶ æ æ æ æ æ æŠ æ« æ® æŽ æ æ æ² æŽ æž æ¹ æ¿ æ æ æ æ æ æ æ æ æ æš æª æª æ« æ¬ æ­ æ± æŽ æº æœ æ æ æ æ æ¡ æ¥ æ¯ æ± æŸ æ¿ æ æ æ æ æ æ  æ¢ æ¯ æ¶ æ æ æ æ æ± æ³ æ» æ  æ  æ ¡ æ ª æ ž æ ¹ æ Œ æ œ æ¡ æ¡ æ¡ æ¡ æ¡ æ¢
+ æ¢° æ£ æ£ æ£ æ£ æ£ æ£® æ£º æ€ æ€ æ¥­ æ¥µ æ¥Œ æ¥œ æŠ æ§ æ§ æ§œ æš æš¡ æš© æšª æš¹ æ© æ© æ¬ æ¬  æ¬¡ æ¬§ æ¬² æ¬º æ¬Ÿ æ­ æ­ æ­¢ æ­£ æ­Š æ­© æ­¯ æ­³ æ­Ž æ­» æ® æ® æ® æ® æ® æ®Ž æ®µ æ®º æ®» æ®¿ æ¯ æ¯ æ¯ æ¯ æ¯ æ° æ° æ° æ°Ž æ°· æ°ž æ± æ± æ± æ± æ± æ± æ±  æ±º æ±œ æ² æ² æ²¡ æ²¢ æ²³ æ²ž æ²¹ æ²» æ²Œ æ²¿ æ³ æ³ æ³ æ³ æ³ æ³¡ æ³¡ æ³¢ æ³£ æ³¥ æ³š æ³° æ³³ æŽ æŽ æŽ æŽ¥ æŽª æŽ» æŽŸ æµ æµ æµ
+ æµ æµŠ æµª æµ® æµŽ æµ· æµž æ¶ æ¶ æ¶¯ æ¶² æ¶Œ æ· æ·¡ æ·± æ·· æ·» æž
+ æž æž æž æž æž æž æž æž¡ æžŠ æž© æž¬ æž¯ æ¹ æ¹¯ æ¹Ÿ æ¹Ÿ æ¹¿ æº æº æº æº æº¶ æ»
+ æ» æ» æ» æ» æ»Ž æŒ æŒ æŒ æŒ æŒ æŒ  æŒ¢ æŒ« æŒ¬ æŒž æœ æœ æœ æœ€ æœ® æŸ æ¿ æ¿ æ¿ æ¿« æ¿¯ ç¬ ç« ç¯ ç° çœ ç ç ç ç­ ç¹ çº ç ç¡ çŠ ç¶ çŒ ç
+ ç
+§ ç
+© ç
+® ç ç± ç ç¥ ç çµ ç¶ ç ç ç ç ç§ ç© ç² ç¹ ç  ç¬ ç¯ ç¶ ç ç© ç¬ ç­ ç ç ç« ç® ç¶ ç¿ ç ç£ ç² ç ç ç ç ç ç  ç­ çŸ ç ç çŽ ç° çœ ç¶ ç ç ç ç£ çš ç° ç° ç± ç² ç³ ç· çº ç» ç ç ç ç ç ç ç¥ çª ç° ç³ ç ç ç« ç² çŸ ç
+ ç ç ç ç¢ çŽ ç ç ç çº ç» çœ çŸ ç ç ç ç® ç¿ ç ç ç ç ç ç£ ç€ ç® ç² çŽ çž çŸ ç ç ç ç ç  çº çŒ ç ç¡ ç£ ç¬ ç ç¢ ç¥ ç­ ç¯ ç³ ç  ç  ç  ç ² ç Ž ç¡ ç¡« ç¡¬ ç¢ ç¢ ç¢º ç£ ç£š ç€ ç€ ç€º ç€Œ ç€Ÿ ç¥ ç¥ ç¥ ç¥ ç¥ ç¥ ç¥¥ ç¥š ç¥­ çŠ çŠ çŠ
+ çŠ çŠ çŠ çŠ ç§ ç§ ç§ ç§ ç§ ç§ ç§ ç§© ç§° ç§» çš çš çš çš® çš² çšŒ çš¿ ç© ç© ç© ç© ç©« ç©Ž ç©¶ ç©º çª çª çª çª çª® çª¯ ç« ç« ç«  ç«¥ ç«¯ ç«¶ ç«¹ ç¬ ç¬ ç¬Š ç¬¬ ç­ ç­ ç­ ç­ ç­ ç­ ç® ç® ç®¡ ç®± ç¯ ç¯ ç¯ ç¯€ ç°¡ ç°¿ ç± ç±³ ç² ç² ç² ç² ç² ç² ç²§ ç²Ÿ ç³ ç³§ ç³ž ç³» ç³Ÿ çŽ çŽ çŽ
+ çŽ çŽ çŽ çŽ çŽ çŽ çŽ çŽ  çŽ  çŽ¡ çŽ¢ çŽ« çŽ¯ çŽ° çŽ³ çŽ¹ çŽº çµ çµ çµ çµ çµ çµ¡ çµŠ çµ± çµµ çµ¶ çµ¹ ç¶ ç¶ ç¶­ ç¶± ç¶² ç¶¿ ç· ç· ç· ç· ç· ç·  ç·š ç·© ç·¯ ç·Ž çž çž çž çžŠ çž« çž® çžŸ ç¹ ç¹ ç¹ ç¹ ç¹­ ç¹° çŒ¶ çœª çœ® çœ° çœ² çœ· çŸ
+ çŸ çŸ çŸ€ çŸ© çŸœ ç¿ ç¿ ç¿ ç¿» ç¿Œ è è è
+ è è è è³ è è èŽ è· è è è è è¢ è¥ è© èª è¯ è² èº è è è è è èŽ èž èœ è è
+ è è è± è³ è¹ è
+ è
+ è
+° è
+ž è
+¹ è è èš è è£ èš èª è­ è³ èŽ è è è è è è èª è¬ è¶ è¹ è èŠ è¯ è² è è è± è³ èž èœ è è¥ èŠ è± è è è¶ è è è è· è è è è è¯ èœ è è è¬ èž è èµ è èŠ èª èª è« è¬ è© è» è è è è è« è è è è è® è è¡ è¡ è¡ è¡ è¡ è¡ è¡ è¡¡ è¡£ è¡š è¡° è¡· è¢ è¢« è£ è£ è£
+ è£ è£ è£ è£ž è£œ è€ è€ è€ è¥ è¥² è¥¿ èŠ èŠ èŠ èŠ èŠ èŠ èŠ èŠ§ èŠª èŠ³ è§ è§£ è§Š èš èš èš èš èš èš èš èš èšª èš­ èš± èš³ èšŽ èšº èšŒ è© è© è© è© è©  è©Š è©© è©° è©° è©± è©² è©³ èª èª èª èª èª èª èª èª èª  èª€ èª¬ èª­ èª² èª¿ è« è« è« è«­ è«® è«ž è«Ÿ è¬ è¬ è¬ è¬ è¬ è¬ è¬¡ è¬¹ è­ è­ è­Š è­° è­² è­· è°· è± è± è± è±¡ è±ª è² è² è²  è²  è²¡ è²¢ è²§ è²§ è²š è²© è²« è²¬ è²¯ è²Ž è²· è²ž è²» è²¿ è³ è³ è³ è³ è³ è³ è³ è³ è³ è³  è³¢ è³Š è³ª è³Œ èŽ èµ€ èµŠ èµ° èµŽ èµ· è¶
+ è¶ è¶£ è¶³ è· è·¡ è·¯ è·³ è·µ èž èž èº èº« è» è» è» è» è» è»¢ è»ž è»œ èŒ èŒ èŒ èŒ© èŒª èŒž èœ èŸ èŸ èŸ± èŸ² èŸº èŸŒ è¿
+ è¿ è¿ è¿ è¿« è¿­ è¿° è¿· è¿œ é é é é é é é é é é é é  é£ é® é± é² éž é é
+ é é é é é é é é é é  é£ é© é­ é® éµ é· éž éº é¿ é éŠ éª éž é é é¡ éš é­ éµ é· éœ é
+ é
+ é
+ é
+ é
+¢ é
+ª é
+¬ é
+µ é
+· é
+ž é éž é é é é é é é é é£ é éŽ é é é¢ é± é é é
+ é é é­ é­ é³ éŒ é é  é¬ é¯ é² é é é® é¡ é é é· é é é é é é¢ é£ é¥ é² é é² é» é é é é é¢ é¢ é£ é€ é¥ éª é° é³ éµ é¶ éž éº éœ é
+ é é é é é é é é  é£ é· é» é é é
+ é é é é é é¢ é£ éš éª é° é² é¶ é· é» é é é é é§ é² é é é é¢ é© éŽ é é³ é» é¿ é  é 
+ é  é  é  é  é  é  é ­ é » é Œ é¡ é¡ é¡ é¡ é¡ é¡ é¡§ é¢š é£ é£ é£¢ é£¯ é£² é£Œ é£Œ é£œ é£Ÿ é€ é€ é€š éŠ éŠ éŠ¬ é§ é§ é§
+ é§ é§ éš éš éš éš° é© éªš é« é« é«ª é¬Œ é­ é­
+ é­ é­ é®® é¯š é³¥ é³Ž é¶ éº éºŠ éº» é» é» é» éŒ éŒ» éœ¢",
+-		3: "å
+ æŒ æ¥ é é³¯",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-	},
+-	"jmc": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"ka": {
+-		0: "á á á á á á á á± á á á á á á á² á á á á  á¡ á¢ á³ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® áŽ á¯ á° áµ á¶ á· áž á¹ áº",
+-		3: "âŽ âŽ âŽ âŽ âŽ âŽ
+ âŽ âŽ¡ âŽ âŽ âŽ âŽ âŽ âŽ âŽ¢ âŽ âŽ âŽ âŽ âŽ âŽ âŽ£ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ âŽ€ âŽ âŽ  âŽ¥",
+-		4: "á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á°",
+-		5: "á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á°",
+-	},
+-	"kab": {
+-		0: "a b c Ä d áž e É f g Ç§ É£ h áž¥ i j k l m n p q r á¹ s á¹£ t á¹­ u w x y z áº",
+-		3: "o v",
+-		5: "A B C Ä D áž E Æ F G ÇŠ Æ H áž€ I J K L M N P Q R á¹ S á¹¢ T á¹¬ U W X Y Z áº",
+-	},
+-	"kam": {
+-		0: "a b c d e f g h i Ä© j k l m n o p q r s t u Å© v w y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"kde": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"kea": {
+-		0: "a b d dj e f g i j k l lh m n nh o p r s t tx u v x z",
+-		3: "Ã¡ Ã  Ã¢ Ã£ c Ã§ Ã© Ãª h Ã­ Ã± Ã³ ÃŽ q Ãº w y",
+-		5: "A B D E F G H I J K L M N O P R S T U V X Z",
+-	},
+-	"khq": {
+-		0: "a Ã£ b c d e áºœ f g h i j k l m n É² Å o Ãµ p q r s Å¡ t u w x y z ÅŸ",
+-		3: "v",
+-		5: "A Ã B C D E áºŒ F G H I J K L M N Æ Å O Ã P Q R S Å  T U W X Y Z Åœ",
+-	},
+-	"ki": {
+-		0: "a b c d e g h i Ä© j k m n o r t u Å© w y",
+-		3: "f l p q s v x z",
+-		5: "A B C D E G H I J K M N O R T U W Y",
+-	},
+-	"kk": {
+-		0: "Ð° Ó Ð± Ð² Ð³ Ò ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ð¹ Ðº Ò Ð» ÐŒ Ðœ Ò£ ÐŸ Ó© Ð¿ Ñ Ñ Ñ Ñ Ò± Ò¯ Ñ Ñ
+ Ò» Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		5: "Ð Ó Ð Ð Ð Ò Ð Ð Ð Ð Ð Ð Ð Ð Ò Ð Ð Ð Ò¢ Ð Óš Ð Ð  Ð¡ Ð¢ Ð£ Ò° Ò® Ð€ Ð¥ Òº ÐŠ Ð§ Ðš Ð© Ðª Ð« Ð Ð¬ Ð­ Ð® Ð¯",
+-	},
+-	"kl": {
+-		0: "a Ã¡ Ã¢ Ã£ b c d e Ã© Ãª f g h i Ã­ Ã® Ä© j k l m n o ÃŽ p q Äž r s t u Ãº Ã» Å© v w x y z ÃŠ Ãž Ã¥",
+-	},
+-	"kln": {
+-		0: "a b c d e g h i j k l m n o p r s t u w y",
+-		3: "f q v x z",
+-		5: "A B C D E G H I J K L M N O P R S T U W Y",
+-	},
+-	"km": {
+-		0: "á á á á á á á á á á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á« á¬ á á­ á® á á á  á¡ á¢ á¢á¶ á¥ áŠ á§ á§á áª á© á¯ á° á± á² á³ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á",
+-		3: "\u17b4 \u17b5 \u200b á á",
+-	},
+-	"kn": {
+-		0: "à²Œ à³Š à³§ à³š à³© à³ª à³« à³¬ à³­ à³® à³¯ à²
+ à² à² à² à² à² à² à³  à² à³¡ à² à² à² à² à² à² à² à² à² à² à² à² à² à² à² à² à² à² à² à²  à²¡ à²¢ à²£ à²€ à²¥ à²Š à²§ à²š à²ª à²« à²¬ à²­ à²® à²¯ à²° à²± à²² à²µ à²¶ à²· à²ž à²¹ à²³ à³ à²œ à²Ÿ à²¿ à³ à³ à³ à³ à³ à³ à³ à³ à³ à³ à³ à³ à³ à³",
+-		4: "à²° à³",
+-	},
+-	"ko": {
+-		0: "ê° ê° ê° ê° ê° ê° ê°
+ ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê° ê°  ê°¡ ê°¢ ê°£ ê°€ ê°¥ ê°Š ê°§ ê°š ê°© ê°ª ê°« ê°¬ ê°­ ê°® ê°¯ ê°° ê°± ê°² ê°³ ê°Ž ê°µ ê°¶ ê°· ê°ž ê°¹ ê°º ê°» ê°Œ ê°œ ê°Ÿ ê°¿ ê± ê± ê± ê± ê± ê±
+ ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê± ê±  ê±¡ ê±¢ ê±£ ê±€ ê±¥ ê±Š ê±§ ê±š ê±© ê±ª ê±« ê±¬ ê±­ ê±® ê±¯ ê±° ê±± ê±² ê±³ ê±Ž ê±µ ê±¶ ê±· ê±ž ê±¹ ê±º ê±» ê±Œ ê±œ ê±Ÿ ê±¿ ê² ê² ê² ê² ê² ê²
+ ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê² ê²  ê²¡ ê²¢ ê²£ ê²€ ê²¥ ê²Š ê²§ ê²š ê²© ê²ª ê²« ê²¬ ê²­ ê²® ê²¯ ê²° ê²± ê²² ê²³ ê²Ž ê²µ ê²¶ ê²· ê²ž ê²¹ ê²º ê²» ê²Œ ê²œ ê²Ÿ ê²¿ ê³ ê³ ê³ ê³ ê³ ê³
+ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³ ê³  ê³¡ ê³¢ ê³£ ê³€ ê³¥ ê³Š ê³§ ê³š ê³© ê³ª ê³« ê³¬ ê³­ ê³® ê³¯ ê³° ê³± ê³² ê³³ ê³Ž ê³µ ê³¶ ê³· ê³ž ê³¹ ê³º ê³» ê³Œ ê³œ ê³Ÿ ê³¿ êŽ êŽ êŽ êŽ êŽ êŽ
+ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ êŽ  êŽ¡ êŽ¢ êŽ£ êŽ€ êŽ¥ êŽŠ êŽ§ êŽš êŽ© êŽª êŽ« êŽ¬ êŽ­ êŽ® êŽ¯ êŽ° êŽ± êŽ² êŽ³ êŽŽ êŽµ êŽ¶ êŽ· êŽž êŽ¹ êŽº êŽ» êŽŒ êŽœ êŽŸ êŽ¿ êµ êµ êµ êµ êµ êµ
+ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ êµ  êµ¡ êµ¢ êµ£ êµ€ êµ¥ êµŠ êµ§ êµš êµ© êµª êµ« êµ¬ êµ­ êµ® êµ¯ êµ° êµ± êµ² êµ³ êµŽ êµµ êµ¶ êµ· êµž êµ¹ êµº êµ» êµŒ êµœ êµŸ êµ¿ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶
+ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶ ê¶  ê¶¡ ê¶¢ ê¶£ ê¶€ ê¶¥ ê¶Š ê¶§ ê¶š ê¶© ê¶ª ê¶« ê¶¬ ê¶­ ê¶® ê¶¯ ê¶° ê¶± ê¶² ê¶³ ê¶Ž ê¶µ ê¶¶ ê¶· ê¶ž ê¶¹ ê¶º ê¶» ê¶Œ ê¶œ ê¶Ÿ ê¶¿ ê· ê· ê· ê· ê· ê·
+ ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê· ê·  ê·¡ ê·¢ ê·£ ê·€ ê·¥ ê·Š ê·§ ê·š ê·© ê·ª ê·« ê·¬ ê·­ ê·® ê·¯ ê·° ê·± ê·² ê·³ ê·Ž ê·µ ê·¶ ê·· ê·ž ê·¹ ê·º ê·» ê·Œ ê·œ ê·Ÿ ê·¿ êž êž êž êž êž êž
+ êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž êž  êž¡ êž¢ êž£ êž€ êž¥ êžŠ êž§ êžš êž© êžª êž« êž¬ êž­ êž® êž¯ êž° êž± êž² êž³ êžŽ êžµ êž¶ êž· êžž êž¹ êžº êž» êžŒ êžœ êžŸ êž¿ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹
+ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹ ê¹  ê¹¡ ê¹¢ ê¹£ ê¹€ ê¹¥ ê¹Š ê¹§ ê¹š ê¹© ê¹ª ê¹« ê¹¬ ê¹­ ê¹® ê¹¯ ê¹° ê¹± ê¹² ê¹³ ê¹Ž ê¹µ ê¹¶ ê¹· ê¹ž ê¹¹ ê¹º ê¹» ê¹Œ ê¹œ ê¹Ÿ ê¹¿ êº êº êº êº êº êº
+ êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº êº  êº¡ êº¢ êº£ êº€ êº¥ êºŠ êº§ êºš êº© êºª êº« êº¬ êº­ êº® êº¯ êº° êº± êº² êº³ êºŽ êºµ êº¶ êº· êºž êº¹ êºº êº» êºŒ êºœ êºŸ êº¿ ê» ê» ê» ê» ê» ê»
+ ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê» ê»  ê»¡ ê»¢ ê»£ ê»€ ê»¥ ê»Š ê»§ ê»š ê»© ê»ª ê»« ê»¬ ê»­ ê»® ê»¯ ê»° ê»± ê»² ê»³ ê»Ž ê»µ ê»¶ ê»· ê»ž ê»¹ ê»º ê»» ê»Œ ê»œ ê»Ÿ ê»¿ êŒ êŒ êŒ êŒ êŒ êŒ
+ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ êŒ  êŒ¡ êŒ¢ êŒ£ êŒ€ êŒ¥ êŒŠ êŒ§ êŒš êŒ© êŒª êŒ« êŒ¬ êŒ­ êŒ® êŒ¯ êŒ° êŒ± êŒ² êŒ³ êŒŽ êŒµ êŒ¶ êŒ· êŒž êŒ¹ êŒº êŒ» êŒŒ êŒœ êŒŸ êŒ¿ êœ êœ êœ êœ êœ êœ
+ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ êœ  êœ¡ êœ¢ êœ£ êœ€ êœ¥ êœŠ êœ§ êœš êœ© êœª êœ« êœ¬ êœ­ êœ® êœ¯ êœ° êœ± êœ² êœ³ êœŽ êœµ êœ¶ êœ· êœž êœ¹ êœº êœ» êœŒ êœœ êœŸ êœ¿ êŸ êŸ êŸ êŸ êŸ êŸ
+ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ êŸ  êŸ¡ êŸ¢ êŸ£ êŸ€ êŸ¥ êŸŠ êŸ§ êŸš êŸ© êŸª êŸ« êŸ¬ êŸ­ êŸ® êŸ¯ êŸ° êŸ± êŸ² êŸ³ êŸŽ êŸµ êŸ¶ êŸ· êŸž êŸ¹ êŸº êŸ» êŸŒ êŸœ êŸŸ êŸ¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿
+ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿ ê¿  ê¿¡ ê¿¢ ê¿£ ê¿€ ê¿¥ ê¿Š ê¿§ ê¿š ê¿© ê¿ª ê¿« ê¿¬ ê¿­ ê¿® ê¿¯ ê¿° ê¿± ê¿² ê¿³ ê¿Ž ê¿µ ê¿¶ ê¿· ê¿ž ê¿¹ ê¿º ê¿» ê¿Œ ê¿œ ê¿Ÿ ê¿¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+ ë
+  ë
+¡ ë
+¢ ë
+£ ë
+€ ë
+¥ ë
+Š ë
+§ ë
+š ë
+© ë
+ª ë
+« ë
+¬ ë
+­ ë
+® ë
+¯ ë
+° ë
+± ë
+² ë
+³ ë
+Ž ë
+µ ë
+¶ ë
+· ë
+ž ë
+¹ ë
+º ë
+» ë
+Œ ë
+œ ë
+Ÿ ë
+¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë ë ë ë ë ë
+ ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë ë  ë¡ ë¢ ë£ ë€ ë¥ ëŠ ë§ ëš ë© ëª ë« ë¬ ë­ ë® ë¯ ë° ë± ë² ë³ ëŽ ëµ ë¶ ë· ëž ë¹ ëº ë» ëŒ ëœ ëŸ ë¿ ë  ë  ë  ë  ë  ë 
+ ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë  ë   ë ¡ ë ¢ ë £ ë € ë ¥ ë Š ë § ë š ë © ë ª ë « ë ¬ ë ­ ë ® ë ¯ ë ° ë ± ë ² ë ³ ë Ž ë µ ë ¶ ë · ë ž ë ¹ ë º ë » ë Œ ë œ ë Ÿ ë ¿ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡
+ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡ ë¡  ë¡¡ ë¡¢ ë¡£ ë¡€ ë¡¥ ë¡Š ë¡§ ë¡š ë¡© ë¡ª ë¡« ë¡¬ ë¡­ ë¡® ë¡¯ ë¡° ë¡± ë¡² ë¡³ ë¡Ž ë¡µ ë¡¶ ë¡· ë¡ž ë¡¹ ë¡º ë¡» ë¡Œ ë¡œ ë¡Ÿ ë¡¿ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢
+ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢ ë¢  ë¢¡ ë¢¢ ë¢£ ë¢€ ë¢¥ ë¢Š ë¢§ ë¢š ë¢© ë¢ª ë¢« ë¢¬ ë¢­ ë¢® ë¢¯ ë¢° ë¢± ë¢² ë¢³ ë¢Ž ë¢µ ë¢¶ ë¢· ë¢ž ë¢¹ ë¢º ë¢» ë¢Œ ë¢œ ë¢Ÿ ë¢¿ ë£ ë£ ë£ ë£ ë£ ë£
+ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£ ë£  ë£¡ ë£¢ ë££ ë£€ ë£¥ ë£Š ë£§ ë£š ë£© ë£ª ë£« ë£¬ ë£­ ë£® ë£¯ ë£° ë£± ë£² ë£³ ë£Ž ë£µ ë£¶ ë£· ë£ž ë£¹ ë£º ë£» ë£Œ ë£œ ë£Ÿ ë£¿ ë€ ë€ ë€ ë€ ë€ ë€
+ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€ ë€  ë€¡ ë€¢ ë€£ ë€€ ë€¥ ë€Š ë€§ ë€š ë€© ë€ª ë€« ë€¬ ë€­ ë€® ë€¯ ë€° ë€± ë€² ë€³ ë€Ž ë€µ ë€¶ ë€· ë€ž ë€¹ ë€º ë€» ë€Œ ë€œ ë€Ÿ ë€¿ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥
+ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥ ë¥  ë¥¡ ë¥¢ ë¥£ ë¥€ ë¥¥ ë¥Š ë¥§ ë¥š ë¥© ë¥ª ë¥« ë¥¬ ë¥­ ë¥® ë¥¯ ë¥° ë¥± ë¥² ë¥³ ë¥Ž ë¥µ ë¥¶ ë¥· ë¥ž ë¥¹ ë¥º ë¥» ë¥Œ ë¥œ ë¥Ÿ ë¥¿ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ
+ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ ëŠ  ëŠ¡ ëŠ¢ ëŠ£ ëŠ€ ëŠ¥ ëŠŠ ëŠ§ ëŠš ëŠ© ëŠª ëŠ« ëŠ¬ ëŠ­ ëŠ® ëŠ¯ ëŠ° ëŠ± ëŠ² ëŠ³ ëŠŽ ëŠµ ëŠ¶ ëŠ· ëŠž ëŠ¹ ëŠº ëŠ» ëŠŒ ëŠœ ëŠŸ ëŠ¿ ë§ ë§ ë§ ë§ ë§ ë§
+ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§ ë§  ë§¡ ë§¢ ë§£ ë§€ ë§¥ ë§Š ë§§ ë§š ë§© ë§ª ë§« ë§¬ ë§­ ë§® ë§¯ ë§° ë§± ë§² ë§³ ë§Ž ë§µ ë§¶ ë§· ë§ž ë§¹ ë§º ë§» ë§Œ ë§œ ë§Ÿ ë§¿ ëš ëš ëš ëš ëš ëš
+ ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš ëš  ëš¡ ëš¢ ëš£ ëš€ ëš¥ ëšŠ ëš§ ëšš ëš© ëšª ëš« ëš¬ ëš­ ëš® ëš¯ ëš° ëš± ëš² ëš³ ëšŽ ëšµ ëš¶ ëš· ëšž ëš¹ ëšº ëš» ëšŒ ëšœ ëšŸ ëš¿ ë© ë© ë© ë© ë© ë©
+ ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë© ë©  ë©¡ ë©¢ ë©£ ë©€ ë©¥ ë©Š ë©§ ë©š ë©© ë©ª ë©« ë©¬ ë©­ ë©® ë©¯ ë©° ë©± ë©² ë©³ ë©Ž ë©µ ë©¶ ë©· ë©ž ë©¹ ë©º ë©» ë©Œ ë©œ ë©Ÿ ë©¿ ëª ëª ëª ëª ëª ëª
+ ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª ëª  ëª¡ ëª¢ ëª£ ëª€ ëª¥ ëªŠ ëª§ ëªš ëª© ëªª ëª« ëª¬ ëª­ ëª® ëª¯ ëª° ëª± ëª² ëª³ ëªŽ ëªµ ëª¶ ëª· ëªž ëª¹ ëªº ëª» ëªŒ ëªœ ëªŸ ëª¿ ë« ë« ë« ë« ë« ë«
+ ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë« ë«  ë«¡ ë«¢ ë«£ ë«€ ë«¥ ë«Š ë«§ ë«š ë«© ë«ª ë«« ë«¬ ë«­ ë«® ë«¯ ë«° ë«± ë«² ë«³ ë«Ž ë«µ ë«¶ ë«· ë«ž ë«¹ ë«º ë«» ë«Œ ë«œ ë«Ÿ ë«¿ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬
+ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬ ë¬  ë¬¡ ë¬¢ ë¬£ ë¬€ ë¬¥ ë¬Š ë¬§ ë¬š ë¬© ë¬ª ë¬« ë¬¬ ë¬­ ë¬® ë¬¯ ë¬° ë¬± ë¬² ë¬³ ë¬Ž ë¬µ ë¬¶ ë¬· ë¬ž ë¬¹ ë¬º ë¬» ë¬Œ ë¬œ ë¬Ÿ ë¬¿ ë­ ë­ ë­ ë­ ë­ ë­
+ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­ ë­  ë­¡ ë­¢ ë­£ ë­€ ë­¥ ë­Š ë­§ ë­š ë­© ë­ª ë­« ë­¬ ë­­ ë­® ë­¯ ë­° ë­± ë­² ë­³ ë­Ž ë­µ ë­¶ ë­· ë­ž ë­¹ ë­º ë­» ë­Œ ë­œ ë­Ÿ ë­¿ ë® ë® ë® ë® ë® ë®
+ ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë® ë®  ë®¡ ë®¢ ë®£ ë®€ ë®¥ ë®Š ë®§ ë®š ë®© ë®ª ë®« ë®¬ ë®­ ë®® ë®¯ ë®° ë®± ë®² ë®³ ë®Ž ë®µ ë®¶ ë®· ë®ž ë®¹ ë®º ë®» ë®Œ ë®œ ë®Ÿ ë®¿ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯
+ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯ ë¯  ë¯¡ ë¯¢ ë¯£ ë¯€ ë¯¥ ë¯Š ë¯§ ë¯š ë¯© ë¯ª ë¯« ë¯¬ ë¯­ ë¯® ë¯¯ ë¯° ë¯± ë¯² ë¯³ ë¯Ž ë¯µ ë¯¶ ë¯· ë¯ž ë¯¹ ë¯º ë¯» ë¯Œ ë¯œ ë¯Ÿ ë¯¿ ë° ë° ë° ë° ë° ë°
+ ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë° ë°  ë°¡ ë°¢ ë°£ ë°€ ë°¥ ë°Š ë°§ ë°š ë°© ë°ª ë°« ë°¬ ë°­ ë°® ë°¯ ë°° ë°± ë°² ë°³ ë°Ž ë°µ ë°¶ ë°· ë°ž ë°¹ ë°º ë°» ë°Œ ë°œ ë°Ÿ ë°¿ ë± ë± ë± ë± ë± ë±
+ ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë± ë±  ë±¡ ë±¢ ë±£ ë±€ ë±¥ ë±Š ë±§ ë±š ë±© ë±ª ë±« ë±¬ ë±­ ë±® ë±¯ ë±° ë±± ë±² ë±³ ë±Ž ë±µ ë±¶ ë±· ë±ž ë±¹ ë±º ë±» ë±Œ ë±œ ë±Ÿ ë±¿ ë² ë² ë² ë² ë² ë²
+ ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë² ë²  ë²¡ ë²¢ ë²£ ë²€ ë²¥ ë²Š ë²§ ë²š ë²© ë²ª ë²« ë²¬ ë²­ ë²® ë²¯ ë²° ë²± ë²² ë²³ ë²Ž ë²µ ë²¶ ë²· ë²ž ë²¹ ë²º ë²» ë²Œ ë²œ ë²Ÿ ë²¿ ë³ ë³ ë³ ë³ ë³ ë³
+ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³ ë³  ë³¡ ë³¢ ë³£ ë³€ ë³¥ ë³Š ë³§ ë³š ë³© ë³ª ë³« ë³¬ ë³­ ë³® ë³¯ ë³° ë³± ë³² ë³³ ë³Ž ë³µ ë³¶ ë³· ë³ž ë³¹ ë³º ë³» ë³Œ ë³œ ë³Ÿ ë³¿ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ
+ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ ëŽ  ëŽ¡ ëŽ¢ ëŽ£ ëŽ€ ëŽ¥ ëŽŠ ëŽ§ ëŽš ëŽ© ëŽª ëŽ« ëŽ¬ ëŽ­ ëŽ® ëŽ¯ ëŽ° ëŽ± ëŽ² ëŽ³ ëŽŽ ëŽµ ëŽ¶ ëŽ· ëŽž ëŽ¹ ëŽº ëŽ» ëŽŒ ëŽœ ëŽŸ ëŽ¿ ëµ ëµ ëµ ëµ ëµ ëµ
+ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ ëµ  ëµ¡ ëµ¢ ëµ£ ëµ€ ëµ¥ ëµŠ ëµ§ ëµš ëµ© ëµª ëµ« ëµ¬ ëµ­ ëµ® ëµ¯ ëµ° ëµ± ëµ² ëµ³ ëµŽ ëµµ ëµ¶ ëµ· ëµž ëµ¹ ëµº ëµ» ëµŒ ëµœ ëµŸ ëµ¿ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶
+ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶ ë¶  ë¶¡ ë¶¢ ë¶£ ë¶€ ë¶¥ ë¶Š ë¶§ ë¶š ë¶© ë¶ª ë¶« ë¶¬ ë¶­ ë¶® ë¶¯ ë¶° ë¶± ë¶² ë¶³ ë¶Ž ë¶µ ë¶¶ ë¶· ë¶ž ë¶¹ ë¶º ë¶» ë¶Œ ë¶œ ë¶Ÿ ë¶¿ ë· ë· ë· ë· ë· ë·
+ ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë· ë·  ë·¡ ë·¢ ë·£ ë·€ ë·¥ ë·Š ë·§ ë·š ë·© ë·ª ë·« ë·¬ ë·­ ë·® ë·¯ ë·° ë·± ë·² ë·³ ë·Ž ë·µ ë·¶ ë·· ë·ž ë·¹ ë·º ë·» ë·Œ ë·œ ë·Ÿ ë·¿ ëž ëž ëž ëž ëž ëž
+ ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž ëž  ëž¡ ëž¢ ëž£ ëž€ ëž¥ ëžŠ ëž§ ëžš ëž© ëžª ëž« ëž¬ ëž­ ëž® ëž¯ ëž° ëž± ëž² ëž³ ëžŽ ëžµ ëž¶ ëž· ëžž ëž¹ ëžº ëž» ëžŒ ëžœ ëžŸ ëž¿ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹
+ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹ ë¹  ë¹¡ ë¹¢ ë¹£ ë¹€ ë¹¥ ë¹Š ë¹§ ë¹š ë¹© ë¹ª ë¹« ë¹¬ ë¹­ ë¹® ë¹¯ ë¹° ë¹± ë¹² ë¹³ ë¹Ž ë¹µ ë¹¶ ë¹· ë¹ž ë¹¹ ë¹º ë¹» ë¹Œ ë¹œ ë¹Ÿ ë¹¿ ëº ëº ëº ëº ëº ëº
+ ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº ëº  ëº¡ ëº¢ ëº£ ëº€ ëº¥ ëºŠ ëº§ ëºš ëº© ëºª ëº« ëº¬ ëº­ ëº® ëº¯ ëº° ëº± ëº² ëº³ ëºŽ ëºµ ëº¶ ëº· ëºž ëº¹ ëºº ëº» ëºŒ ëºœ ëºŸ ëº¿ ë» ë» ë» ë» ë» ë»
+ ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë» ë»  ë»¡ ë»¢ ë»£ ë»€ ë»¥ ë»Š ë»§ ë»š ë»© ë»ª ë»« ë»¬ ë»­ ë»® ë»¯ ë»° ë»± ë»² ë»³ ë»Ž ë»µ ë»¶ ë»· ë»ž ë»¹ ë»º ë»» ë»Œ ë»œ ë»Ÿ ë»¿ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ
+ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ ëŒ  ëŒ¡ ëŒ¢ ëŒ£ ëŒ€ ëŒ¥ ëŒŠ ëŒ§ ëŒš ëŒ© ëŒª ëŒ« ëŒ¬ ëŒ­ ëŒ® ëŒ¯ ëŒ° ëŒ± ëŒ² ëŒ³ ëŒŽ ëŒµ ëŒ¶ ëŒ· ëŒž ëŒ¹ ëŒº ëŒ» ëŒŒ ëŒœ ëŒŸ ëŒ¿ ëœ ëœ ëœ ëœ ëœ ëœ
+ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ ëœ  ëœ¡ ëœ¢ ëœ£ ëœ€ ëœ¥ ëœŠ ëœ§ ëœš ëœ© ëœª ëœ« ëœ¬ ëœ­ ëœ® ëœ¯ ëœ° ëœ± ëœ² ëœ³ ëœŽ ëœµ ëœ¶ ëœ· ëœž ëœ¹ ëœº ëœ» ëœŒ ëœœ ëœŸ ëœ¿ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ
+ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ ëŸ  ëŸ¡ ëŸ¢ ëŸ£ ëŸ€ ëŸ¥ ëŸŠ ëŸ§ ëŸš ëŸ© ëŸª ëŸ« ëŸ¬ ëŸ­ ëŸ® ëŸ¯ ëŸ° ëŸ± ëŸ² ëŸ³ ëŸŽ ëŸµ ëŸ¶ ëŸ· ëŸž ëŸ¹ ëŸº ëŸ» ëŸŒ ëŸœ ëŸŸ ëŸ¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿
+ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿ ë¿  ë¿¡ ë¿¢ ë¿£ ë¿€ ë¿¥ ë¿Š ë¿§ ë¿š ë¿© ë¿ª ë¿« ë¿¬ ë¿­ ë¿® ë¿¯ ë¿° ë¿± ë¿² ë¿³ ë¿Ž ë¿µ ë¿¶ ë¿· ë¿ž ë¿¹ ë¿º ë¿» ë¿Œ ë¿œ ë¿Ÿ ë¿¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+ ì
+  ì
+¡ ì
+¢ ì
+£ ì
+€ ì
+¥ ì
+Š ì
+§ ì
+š ì
+© ì
+ª ì
+« ì
+¬ ì
+­ ì
+® ì
+¯ ì
+° ì
+± ì
+² ì
+³ ì
+Ž ì
+µ ì
+¶ ì
+· ì
+ž ì
+¹ ì
+º ì
+» ì
+Œ ì
+œ ì
+Ÿ ì
+¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì ì ì ì ì ì
+ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì  ì¡ ì¢ ì£ ì€ ì¥ ìŠ ì§ ìš ì© ìª ì« ì¬ ì­ ì® ì¯ ì° ì± ì² ì³ ìŽ ìµ ì¶ ì· ìž ì¹ ìº ì» ìŒ ìœ ìŸ ì¿ ì  ì  ì  ì  ì  ì 
+ ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì  ì   ì ¡ ì ¢ ì £ ì € ì ¥ ì Š ì § ì š ì © ì ª ì « ì ¬ ì ­ ì ® ì ¯ ì ° ì ± ì ² ì ³ ì Ž ì µ ì ¶ ì · ì ž ì ¹ ì º ì » ì Œ ì œ ì Ÿ ì ¿ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡
+ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡ ì¡  ì¡¡ ì¡¢ ì¡£ ì¡€ ì¡¥ ì¡Š ì¡§ ì¡š ì¡© ì¡ª ì¡« ì¡¬ ì¡­ ì¡® ì¡¯ ì¡° ì¡± ì¡² ì¡³ ì¡Ž ì¡µ ì¡¶ ì¡· ì¡ž ì¡¹ ì¡º ì¡» ì¡Œ ì¡œ ì¡Ÿ ì¡¿ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢
+ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢ ì¢  ì¢¡ ì¢¢ ì¢£ ì¢€ ì¢¥ ì¢Š ì¢§ ì¢š ì¢© ì¢ª ì¢« ì¢¬ ì¢­ ì¢® ì¢¯ ì¢° ì¢± ì¢² ì¢³ ì¢Ž ì¢µ ì¢¶ ì¢· ì¢ž ì¢¹ ì¢º ì¢» ì¢Œ ì¢œ ì¢Ÿ ì¢¿ ì£ ì£ ì£ ì£ ì£ ì£
+ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£ ì£  ì£¡ ì£¢ ì££ ì£€ ì£¥ ì£Š ì£§ ì£š ì£© ì£ª ì£« ì£¬ ì£­ ì£® ì£¯ ì£° ì£± ì£² ì£³ ì£Ž ì£µ ì£¶ ì£· ì£ž ì£¹ ì£º ì£» ì£Œ ì£œ ì£Ÿ ì£¿ ì€ ì€ ì€ ì€ ì€ ì€
+ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€ ì€  ì€¡ ì€¢ ì€£ ì€€ ì€¥ ì€Š ì€§ ì€š ì€© ì€ª ì€« ì€¬ ì€­ ì€® ì€¯ ì€° ì€± ì€² ì€³ ì€Ž ì€µ ì€¶ ì€· ì€ž ì€¹ ì€º ì€» ì€Œ ì€œ ì€Ÿ ì€¿ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥
+ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥ ì¥  ì¥¡ ì¥¢ ì¥£ ì¥€ ì¥¥ ì¥Š ì¥§ ì¥š ì¥© ì¥ª ì¥« ì¥¬ ì¥­ ì¥® ì¥¯ ì¥° ì¥± ì¥² ì¥³ ì¥Ž ì¥µ ì¥¶ ì¥· ì¥ž ì¥¹ ì¥º ì¥» ì¥Œ ì¥œ ì¥Ÿ ì¥¿ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ
+ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ ìŠ  ìŠ¡ ìŠ¢ ìŠ£ ìŠ€ ìŠ¥ ìŠŠ ìŠ§ ìŠš ìŠ© ìŠª ìŠ« ìŠ¬ ìŠ­ ìŠ® ìŠ¯ ìŠ° ìŠ± ìŠ² ìŠ³ ìŠŽ ìŠµ ìŠ¶ ìŠ· ìŠž ìŠ¹ ìŠº ìŠ» ìŠŒ ìŠœ ìŠŸ ìŠ¿ ì§ ì§ ì§ ì§ ì§ ì§
+ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§ ì§  ì§¡ ì§¢ ì§£ ì§€ ì§¥ ì§Š ì§§ ì§š ì§© ì§ª ì§« ì§¬ ì§­ ì§® ì§¯ ì§° ì§± ì§² ì§³ ì§Ž ì§µ ì§¶ ì§· ì§ž ì§¹ ì§º ì§» ì§Œ ì§œ ì§Ÿ ì§¿ ìš ìš ìš ìš ìš ìš
+ ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš ìš  ìš¡ ìš¢ ìš£ ìš€ ìš¥ ìšŠ ìš§ ìšš ìš© ìšª ìš« ìš¬ ìš­ ìš® ìš¯ ìš° ìš± ìš² ìš³ ìšŽ ìšµ ìš¶ ìš· ìšž ìš¹ ìšº ìš» ìšŒ ìšœ ìšŸ ìš¿ ì© ì© ì© ì© ì© ì©
+ ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì© ì©  ì©¡ ì©¢ ì©£ ì©€ ì©¥ ì©Š ì©§ ì©š ì©© ì©ª ì©« ì©¬ ì©­ ì©® ì©¯ ì©° ì©± ì©² ì©³ ì©Ž ì©µ ì©¶ ì©· ì©ž ì©¹ ì©º ì©» ì©Œ ì©œ ì©Ÿ ì©¿ ìª ìª ìª ìª ìª ìª
+ ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª ìª  ìª¡ ìª¢ ìª£ ìª€ ìª¥ ìªŠ ìª§ ìªš ìª© ìªª ìª« ìª¬ ìª­ ìª® ìª¯ ìª° ìª± ìª² ìª³ ìªŽ ìªµ ìª¶ ìª· ìªž ìª¹ ìªº ìª» ìªŒ ìªœ ìªŸ ìª¿ ì« ì« ì« ì« ì« ì«
+ ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì« ì«  ì«¡ ì«¢ ì«£ ì«€ ì«¥ ì«Š ì«§ ì«š ì«© ì«ª ì«« ì«¬ ì«­ ì«® ì«¯ ì«° ì«± ì«² ì«³ ì«Ž ì«µ ì«¶ ì«· ì«ž ì«¹ ì«º ì«» ì«Œ ì«œ ì«Ÿ ì«¿ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬
+ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬ ì¬  ì¬¡ ì¬¢ ì¬£ ì¬€ ì¬¥ ì¬Š ì¬§ ì¬š ì¬© ì¬ª ì¬« ì¬¬ ì¬­ ì¬® ì¬¯ ì¬° ì¬± ì¬² ì¬³ ì¬Ž ì¬µ ì¬¶ ì¬· ì¬ž ì¬¹ ì¬º ì¬» ì¬Œ ì¬œ ì¬Ÿ ì¬¿ ì­ ì­ ì­ ì­ ì­ ì­
+ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­ ì­  ì­¡ ì­¢ ì­£ ì­€ ì­¥ ì­Š ì­§ ì­š ì­© ì­ª ì­« ì­¬ ì­­ ì­® ì­¯ ì­° ì­± ì­² ì­³ ì­Ž ì­µ ì­¶ ì­· ì­ž ì­¹ ì­º ì­» ì­Œ ì­œ ì­Ÿ ì­¿ ì® ì® ì® ì® ì® ì®
+ ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì® ì®  ì®¡ ì®¢ ì®£ ì®€ ì®¥ ì®Š ì®§ ì®š ì®© ì®ª ì®« ì®¬ ì®­ ì®® ì®¯ ì®° ì®± ì®² ì®³ ì®Ž ì®µ ì®¶ ì®· ì®ž ì®¹ ì®º ì®» ì®Œ ì®œ ì®Ÿ ì®¿ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯
+ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯ ì¯  ì¯¡ ì¯¢ ì¯£ ì¯€ ì¯¥ ì¯Š ì¯§ ì¯š ì¯© ì¯ª ì¯« ì¯¬ ì¯­ ì¯® ì¯¯ ì¯° ì¯± ì¯² ì¯³ ì¯Ž ì¯µ ì¯¶ ì¯· ì¯ž ì¯¹ ì¯º ì¯» ì¯Œ ì¯œ ì¯Ÿ ì¯¿ ì° ì° ì° ì° ì° ì°
+ ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì° ì°  ì°¡ ì°¢ ì°£ ì°€ ì°¥ ì°Š ì°§ ì°š ì°© ì°ª ì°« ì°¬ ì°­ ì°® ì°¯ ì°° ì°± ì°² ì°³ ì°Ž ì°µ ì°¶ ì°· ì°ž ì°¹ ì°º ì°» ì°Œ ì°œ ì°Ÿ ì°¿ ì± ì± ì± ì± ì± ì±
+ ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì± ì±  ì±¡ ì±¢ ì±£ ì±€ ì±¥ ì±Š ì±§ ì±š ì±© ì±ª ì±« ì±¬ ì±­ ì±® ì±¯ ì±° ì±± ì±² ì±³ ì±Ž ì±µ ì±¶ ì±· ì±ž ì±¹ ì±º ì±» ì±Œ ì±œ ì±Ÿ ì±¿ ì² ì² ì² ì² ì² ì²
+ ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì² ì²  ì²¡ ì²¢ ì²£ ì²€ ì²¥ ì²Š ì²§ ì²š ì²© ì²ª ì²« ì²¬ ì²­ ì²® ì²¯ ì²° ì²± ì²² ì²³ ì²Ž ì²µ ì²¶ ì²· ì²ž ì²¹ ì²º ì²» ì²Œ ì²œ ì²Ÿ ì²¿ ì³ ì³ ì³ ì³ ì³ ì³
+ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³ ì³  ì³¡ ì³¢ ì³£ ì³€ ì³¥ ì³Š ì³§ ì³š ì³© ì³ª ì³« ì³¬ ì³­ ì³® ì³¯ ì³° ì³± ì³² ì³³ ì³Ž ì³µ ì³¶ ì³· ì³ž ì³¹ ì³º ì³» ì³Œ ì³œ ì³Ÿ ì³¿ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ
+ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ ìŽ  ìŽ¡ ìŽ¢ ìŽ£ ìŽ€ ìŽ¥ ìŽŠ ìŽ§ ìŽš ìŽ© ìŽª ìŽ« ìŽ¬ ìŽ­ ìŽ® ìŽ¯ ìŽ° ìŽ± ìŽ² ìŽ³ ìŽŽ ìŽµ ìŽ¶ ìŽ· ìŽž ìŽ¹ ìŽº ìŽ» ìŽŒ ìŽœ ìŽŸ ìŽ¿ ìµ ìµ ìµ ìµ ìµ ìµ
+ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ ìµ  ìµ¡ ìµ¢ ìµ£ ìµ€ ìµ¥ ìµŠ ìµ§ ìµš ìµ© ìµª ìµ« ìµ¬ ìµ­ ìµ® ìµ¯ ìµ° ìµ± ìµ² ìµ³ ìµŽ ìµµ ìµ¶ ìµ· ìµž ìµ¹ ìµº ìµ» ìµŒ ìµœ ìµŸ ìµ¿ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶
+ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶ ì¶  ì¶¡ ì¶¢ ì¶£ ì¶€ ì¶¥ ì¶Š ì¶§ ì¶š ì¶© ì¶ª ì¶« ì¶¬ ì¶­ ì¶® ì¶¯ ì¶° ì¶± ì¶² ì¶³ ì¶Ž ì¶µ ì¶¶ ì¶· ì¶ž ì¶¹ ì¶º ì¶» ì¶Œ ì¶œ ì¶Ÿ ì¶¿ ì· ì· ì· ì· ì· ì·
+ ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì· ì·  ì·¡ ì·¢ ì·£ ì·€ ì·¥ ì·Š ì·§ ì·š ì·© ì·ª ì·« ì·¬ ì·­ ì·® ì·¯ ì·° ì·± ì·² ì·³ ì·Ž ì·µ ì·¶ ì·· ì·ž ì·¹ ì·º ì·» ì·Œ ì·œ ì·Ÿ ì·¿ ìž ìž ìž ìž ìž ìž
+ ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž ìž  ìž¡ ìž¢ ìž£ ìž€ ìž¥ ìžŠ ìž§ ìžš ìž© ìžª ìž« ìž¬ ìž­ ìž® ìž¯ ìž° ìž± ìž² ìž³ ìžŽ ìžµ ìž¶ ìž· ìžž ìž¹ ìžº ìž» ìžŒ ìžœ ìžŸ ìž¿ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹
+ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹ ì¹  ì¹¡ ì¹¢ ì¹£ ì¹€ ì¹¥ ì¹Š ì¹§ ì¹š ì¹© ì¹ª ì¹« ì¹¬ ì¹­ ì¹® ì¹¯ ì¹° ì¹± ì¹² ì¹³ ì¹Ž ì¹µ ì¹¶ ì¹· ì¹ž ì¹¹ ì¹º ì¹» ì¹Œ ì¹œ ì¹Ÿ ì¹¿ ìº ìº ìº ìº ìº ìº
+ ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº ìº  ìº¡ ìº¢ ìº£ ìº€ ìº¥ ìºŠ ìº§ ìºš ìº© ìºª ìº« ìº¬ ìº­ ìº® ìº¯ ìº° ìº± ìº² ìº³ ìºŽ ìºµ ìº¶ ìº· ìºž ìº¹ ìºº ìº» ìºŒ ìºœ ìºŸ ìº¿ ì» ì» ì» ì» ì» ì»
+ ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì» ì»  ì»¡ ì»¢ ì»£ ì»€ ì»¥ ì»Š ì»§ ì»š ì»© ì»ª ì»« ì»¬ ì»­ ì»® ì»¯ ì»° ì»± ì»² ì»³ ì»Ž ì»µ ì»¶ ì»· ì»ž ì»¹ ì»º ì»» ì»Œ ì»œ ì»Ÿ ì»¿ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ
+ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ ìŒ  ìŒ¡ ìŒ¢ ìŒ£ ìŒ€ ìŒ¥ ìŒŠ ìŒ§ ìŒš ìŒ© ìŒª ìŒ« ìŒ¬ ìŒ­ ìŒ® ìŒ¯ ìŒ° ìŒ± ìŒ² ìŒ³ ìŒŽ ìŒµ ìŒ¶ ìŒ· ìŒž ìŒ¹ ìŒº ìŒ» ìŒŒ ìŒœ ìŒŸ ìŒ¿ ìœ ìœ ìœ ìœ ìœ ìœ
+ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ ìœ  ìœ¡ ìœ¢ ìœ£ ìœ€ ìœ¥ ìœŠ ìœ§ ìœš ìœ© ìœª ìœ« ìœ¬ ìœ­ ìœ® ìœ¯ ìœ° ìœ± ìœ² ìœ³ ìœŽ ìœµ ìœ¶ ìœ· ìœž ìœ¹ ìœº ìœ» ìœŒ ìœœ ìœŸ ìœ¿ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ
+ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ ìŸ  ìŸ¡ ìŸ¢ ìŸ£ ìŸ€ ìŸ¥ ìŸŠ ìŸ§ ìŸš ìŸ© ìŸª ìŸ« ìŸ¬ ìŸ­ ìŸ® ìŸ¯ ìŸ° ìŸ± ìŸ² ìŸ³ ìŸŽ ìŸµ ìŸ¶ ìŸ· ìŸž ìŸ¹ ìŸº ìŸ» ìŸŒ ìŸœ ìŸŸ ìŸ¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿
+ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿ ì¿  ì¿¡ ì¿¢ ì¿£ ì¿€ ì¿¥ ì¿Š ì¿§ ì¿š ì¿© ì¿ª ì¿« ì¿¬ ì¿­ ì¿® ì¿¯ ì¿° ì¿± ì¿² ì¿³ ì¿Ž ì¿µ ì¿¶ ì¿· ì¿ž ì¿¹ ì¿º ì¿» ì¿Œ ì¿œ ì¿Ÿ ì¿¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í
+ í
+ í
+ í
+ í
+ í
+
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+ í
+  í
+¡ í
+¢ í
+£ í
+€ í
+¥ í
+Š í
+§ í
+š í
+© í
+ª í
+« í
+¬ í
+­ í
+® í
+¯ í
+° í
+± í
+² í
+³ í
+Ž í
+µ í
+¶ í
+· í
+ž í
+¹ í
+º í
+» í
+Œ í
+œ í
+Ÿ í
+¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£ í€ í¥ íŠ í§ íš í© íª í« í¬ í­ í® í¯ í° í± í² í³ íŽ íµ í¶ í· íž í¹ íº í» íŒ íœ íŸ í¿ í í í í í í
+ í í í í í í í í í í í í í í í í í í í í í í í í í í í  í¡ í¢ í£",
+-		3: "äž äž² ä¹ ä¹
+ ä¹ ä¹ ä¹ ä¹« ä¹Ÿ äº äº äº€ äº¬ ä» ä» ä» ä»¶ ä»· äŒ äŒ äŒ äŒœ äœ³ äœ¶ äŸ äŸ äŸ äŸ ä¿ ä¿ ä¿± å å åŠ åš å å å¥ å å åŸ å
+ å å¹ å å åº å
+ å
+ å
+¢ å
+§ å
+¬ å
+± å
+¶ å
+· å
+Œ å å  å± å å® åž å» å å å å å å å  å€ å« å å å å€ åž å» åŸ å¡ å£ å å åŠ åŽ åµ å· å¿ å¥ å» å å£ å¥ å© å« å¯ å å å å å± åµ å å¬ å¥ å­ å å å å å« å¬ å å å åš å å° åº å å å­ å» å å å å€ å° åµ å¢ åº åŒ å  å 
+ å  å ª å º å¡ å¡ å¢ å¢Ÿ å£ å£ å€ å¥ å¥ å¥ å¥ å¥ž åŠ åŠ å§ å§ å§Š åš åš å« å¬ å­ å­£ å­€ å® å® å®¢ å®® å®¶ å¯ å¯ å¯¡ å¯¬ å°» å± å±
+ å± å± å² å²¡ å²¬ åŽ åŽ åŽ åµ åµ å¶ å¶  å·¥ å·§ å·š å·± å·Ÿ å¹² å¹¹ å¹Ÿ åº åº« åº· å» å» å» å»£ å»º åŒ åŒº åœ åŸ å¿ æ¥ æª æ¯ æ æ æª æ­ æž æ æ æ§ æ· æŸ æ
+ æ
+£ æ
+€ æ
+š æ
+¶ æ
+· æ© æ¬ æŸ æ æ æŠ æ¶ æŒ æ æ æ æ¡ æ± æ æ æ æ æ æ æ æ¬ æ® æ± æ³ æ· æ¿ æ æ® æ² æº æ æ æ§ æ æ æ­ æ æ æ æ æ§ æª æ· æ¹ æ» æ
+ æ æ æ¢ æ¬ æ² æ æ€ æ æ£ æ æ æ¯ æ· æ æ æ  æ» æ  æ² æŽ æ· æ æ æ æº æ æ æ° æ æ æ¯ æ¶ æž æ æ© æ¬ æ¯ æ ¡ æ ¹ æ Œ æ¡ æ¡ æ¡ æ¡¿ æ¢ æ¢ æ¢° æ¢± æ£ æ£ æ£ æ£ æ£š æ£º æ¥ æ¥  æ¥µ æ§ æ§ æ§ æ§š æ§ª æ§» æ§¿ æš æ© æ© æ© æ© æª æª æª¢ æ« æ¬ æ¬ æ¬º æ¬Ÿ æ­ æ­ æ­ž æ®Œ æ¯ æ¯¬ æ°£ æ± æ± æ±š æ±² æ±º æ±œ æ² æ²œ æŽ æŽž æµª æ¶ æ· æ· æž æž  æžŽ æ¹³ æº æºª æ» æ»Ÿ æŒ æœ æœ° æŸ æ¿ æ¿« ç çž ç
+ ç ç¬ ç ç± ç
+ ç çœ ç¬ ç ç ç¡ çŒ ç ç ç ç ç ç ç ç çª ç çŠ çš çª ç¯ çŽ çŸ ç ç ç£ ç¥ ç ç ç ç ç ç² ç· ç ç çž çº ç¿ ç ç¥ ç³ ç ç çŒ ç ç© çž ç ç ç ç ç£ ç ç· çŸ ç° çŒ ç¿ ç ç© ç¯ ç¡
+ ç¡¬ ç¢ ç¢£ ç£ ç£¬ ç£¯ ç£µ ç¥ ç¥ ç¥ ç¥ ç¥º çŠ çŠœ ç§ çš çšŒ çšœ çš¿ ç© ç©¶ ç©¹ ç©º çª çª çª® çªº ç«
+ ç« ç«­ ç«¶ ç«¿ ç­ ç­ ç­  ç® ç® ç® ç®¡ ç°¡ ç²³ ç³  ç³» ç³Ÿ çŽ çŽ çŽ çŽ çŽº çµ
+ çµ çµ çµŠ çµ³ çµ¹ çµ¿ ç¶ ç¶± ç¶º ç· ç¹« ç¹­ ç¹Œ çŒº çœ çœ« çŸ
+ çŸ çŸ çŸ çŸ€ çŸ¹ ç¿¹ è è è è è­ è¿ è è è¡ è© è¯ è± è è± è è è
+ è
+± è è è  è èŒ è
+ è è¡ è® è± è è¥ è© è¹ è è èŠ èœ è è è
+ è è è è« è° èœ è èµ è è èš è è è è¿ è­ è¿ è è£ è è èº è  è ± è¡ è¡¢ è¡² è¡Ÿ è¡¿ è¢ è¢ è¢Ž è£ è£ž è€ è¥ è¥ è¥€ èŠ èŠ èŠ¡ èŠ² èŠº è§ è§ èš èš èš£ èš¶ è©­ èª èª¡ èª¥ èª² è«« è«Ÿ è¬ è¬ è¬³ è¬¹ è­ è­Š è­Ž è°· è°¿ è± è²¢ è²« è²Ž è³ è³Œ èµ³ èµ· è· è· è·š èž è¹ è¹¶ èº¬ è» è» è» è» è»» èŒ èŒ èœ èœ èŸ è¿ è¿Š è¿² é é é éµ é é£ éœ é é£ é¯ é± é é é¡ é­ é
+ª éµ é é é é é
+ é é€ é¶ éž éŒ é¡ é€ éŠ é® é éµ é é§ é¡ é é é é é é é£ éš é é é é é é é é£ é é  éš é« é  é ž é¡ é¡§ é£¢ é€ é€š é¥ é¥ é¥ é§ é§ é§± éš éš éš« é©
+ é© é© é©¥ éªš é« é¬Œ é­ é®« é¯€ é¯š é± é³© éµ éµ  é· é· éž éº éºŽ é» éŒ éŸ éŸ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"kok": {
+-		0: "à€Œ à¥Š à¥§ à¥š à¥© à¥ª à¥« à¥¬ à¥­ à¥® à¥¯ à¥ à€ à€ à€ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€à€Œ à€ à€à€Œ à€ à€à€Œ à€ à€ à€ à€ à€ à€à€Œ à€ à€ à€ à€  à€¡ à€¡à€Œ à€¢ à€¢à€Œ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€«à€Œ à€¬ à€­ à€® à€¯ à€¯à€Œ à€° à€² à€µ à€¶ à€· à€ž à€¹ à€³ à€œ à€Ÿ à€¿ à¥ à¥ à¥ à¥ à¥ à¥
+ à¥ à¥ à¥ à¥ à¥ à¥",
+-		3: "\u200c \u200d",
+-	},
+-	"ksb": {
+-		0: "a b c d e f g h i j k l m n o p s t u v w y z",
+-		3: "q r x",
+-		5: "A B C D E F G H I J K L M N O P S T U V W Y Z",
+-	},
+-	"ksf": {
+-		0: "a Ã¡ b c d e Ã© Ç ÇÌ É ÉÌ f g h i Ã­ j k l m n Å o Ã³ É ÉÌ p r s t u Ãº v w y z",
+-		3: "q x",
+-		5: "A B C D E Æ Æ F G H I J K L M N Å O Æ P R S T U V W Y Z",
+-	},
+-	"ksh": {
+-		0: "a Ã¥ Ã€ ÃŠ b c d e Ã« Ä f g h i j k l m n o Ã¶ Å p q r s t u Å¯ ÃŒ v w x y z",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ä³ Ä± Å Ã± Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å Ãº Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-	},
+-	"ku": {
+-		0: "ØŠ Ø§ Øš ÙŸ Øª Ø¬ Ú Ø­ Ø® Ø¯ Ø± Ø² Ú Ú Ø³ ØŽ Ø¹ Øº Ù Ú€ Ù Ú© Ú¯ Ù Úµ Ù
+ Ù Ù ÚŸ Ù Û Û Û",
+-		3: "Ù Ù Ù Ù Ù Ù Ù Ù Ø¡ Ø¢ Ø£ Ø€ Ø¥ ØŠ Ø§ Øš Ø© Ø« Ø° Øµ Ø¶ Ø· Øž Ù Ù Ù",
+-	},
+-	"ku_Latn": {
+-		0: "a b c Ã§ d e Ãª f g h i Ã® j k l m n o p q r s Å t u Ã» v w x y z",
+-	},
+-	"kw": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"ky": {
+-		0: "Ð° Ð± Ð³ ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ð¹ Ðº Ð» ÐŒ Ðœ Ó ÐŸ Ó© Ð¿ Ñ Ñ Ñ Ñ Ò¯ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		3: "Ð² Ñ Ñ Ñ Ñ",
+-	},
+-	"lag": {
+-		0: "a Ã¡ b c d e Ã© f g h i Ã­ Éš j k l m n o Ã³ p q r s t u Ãº Ê v w x y z",
+-		5: "A B C D E F G H I Æ J K L M N O P Q R S T U É V W X Y Z",
+-	},
+-	"lg": {
+-		0: "a b c d e f g i j k l m n ny Å o p r s t u v w y z",
+-		3: "h q x",
+-		5: "A B C D E F G I J K L M N Å O P R S T U V W Y Z",
+-	},
+-	"ln": {
+-		0: "a Ã¡ Ã¢ Ç b c d e Ã© Ãª Ä É ÉÌ ÉÌ ÉÌ f g gb h i Ã­ Ã® Ç k l m mb mp n nd ng nk ns nt ny nz o Ã³ ÃŽ Ç É ÉÌ ÉÌ ÉÌ p r s t u Ãº v w y z",
+-		3: "j q x",
+-		5: "A B C D E Æ F G Gb H I K L M Mb Mp N Nd Ng Nk Ns Nt Ny Nz O Æ P R S T U V W Y Z",
+-	},
+-	"lo": {
+-		0: "à» à» à» à» à» à» à» àº àº àº àº àº àºª àº àº àº àº àº àº àº àº àº àº àº àº àº àº¡ àº¢ àº£ àº¥ àº§ àº« à» à» àº­ àº® àº¯ àº° àº± àº² àº³ àºŽ àºµ àº¶ àº· àºž àº¹ àº» àºŒ àºœ à» à» à» à» à»",
+-		3: "\u200b à» à» à» à» à» à» à» à» à» à»",
+-	},
+-	"lt": {
+-		0: "a Ä
+ b c Ä d e Ä Ä f g h i Ä¯ y j k l m n o p r s Å¡ t u Å³ Å« v z ÅŸ",
+-		3: "iÌÌ iÌÌ iÌÌ iÌ Ä¯Ì jÌ q w x",
+-		4: "a Ä
+ b c Ä d e Ä Ä f g h i Ä¯ y j k l m n o p r s Å¡ t u Å³ Å« v z ÅŸ",
+-		5: "A Ä B C Ä D E Ä Ä F G H I Ä® Y J K L M N O P R S Å  T U Å² Åª V Z Åœ",
+-	},
+-	"lu": {
+-		0: "a Ã¡ Ã  b c d e Ã© Ãš É ÉÌ ÉÌ f h i Ã­ Ã¬ j k l m n ng ny o Ã³ Ã² É ÉÌ ÉÌ p ph q s shi t u Ãº Ã¹ v w y z",
+-		3: "g r x",
+-		5: "A B C D E F H I J K L M N O P Q S T U V W Y Z",
+-	},
+-	"luo": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y",
+-		3: "q x z",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y",
+-	},
+-	"luy": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"lv": {
+-		0: "a Ä b c Ä d e Ä f g Ä£ h i Ä« j k Ä· l ÄŒ m n Å o p r s Å¡ t u Å« v z ÅŸ",
+-		2: "- â â â , ; : ! ? . âŠ ' â â â \" â â â ( ) [ ] @ * / & # â  â¡ â² â³ Â§",
+-		3: "q w x y",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C Ä D E F G Ä¢ H I J K Ä¶ L Ä» M N Å
+ O P Q R S Å  T U V W X Y Z Åœ",
+-	},
+-	"mas": {
+-		0: "a Ã¡ Ã  Ã¢ Ä b c d e Ã© Ãš Ãª Ä É g h i Ã­ Ã¬ Ã® Ä« Éš j k l m n ny Å o Ã³ Ã² ÃŽ Å É p r rr s sh t u Ãº Ã¹ Ã» Å« Ê ÊÌ w wu y yi",
+-		3: "f q v x z",
+-		5: "A B C D E Æ G H I Æ J K L M N Å O Æ P R S T U É W Y",
+-	},
+-	"mer": {
+-		0: "a b c d e f g h i Ä© j k l m n o p q r s t u Å© v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"mfe": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W X Y Z",
+-	},
+-	"mg": {
+-		0: "a Ã  Ã¢ b d e Ã© Ãš Ãª Ã« f g h i Ã¬ Ã® Ã¯ j k l m n Ã± o ÃŽ p r s t v y z",
+-		3: "c q u w x",
+-		5: "A B D E F G H I J K L M N O P R S T V Y Z",
+-	},
+-	"mgh": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"mk": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ Ñ Ðµ Ð¶ Ð· Ñ Ðž Ñ Ðº Ð» Ñ ÐŒ Ðœ Ñ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ",
+-		3: "Ñ Ñ",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð
+ Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð  Ð¡ Ð¢ Ð Ð£ Ð€ Ð¥ ÐŠ Ð§ Ð Ðš",
+-	},
+-	"ml": {
+-		0: "\u200c \u200d àŽ àŽ
+ àŽ àŽ àŽ àŽ àŽ àŽ àµ  àŽ àµ¡ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ àŽ  àŽ¡ àŽ¢ àŽ£ àŽ€ àŽ¥ àŽŠ àŽ§ àŽš àŽª àŽ« àŽ¬ àŽ­ àŽ® àŽ àŽ¯ àŽ° àŽ² àŽµ àŽ¶ àŽ· àŽž àŽ¹ àŽ³ àŽŽ àŽ± àŽŸ àŽ¿ àµ àµ àµ àµ àµ àµ àµ àµ àµ àµ àµ àµ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"mn": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ð¹ Ðº Ð» ÐŒ Ðœ ÐŸ Ó© Ð¿ Ñ Ñ Ñ Ñ Ò¯ Ñ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		3: "Ó Ò Ó Ò»",
+-	},
+-	"mn_Mong": {
+-		0: "á  á  á  á  á  á  á  á  á  á  á   á ¡ á ¢ á £ á € á ¥ á Š á § á š á © á ª á « á ¬ á ­ á ® á ¯ á ° á ± á ² á ³ á Ž á µ á ¶ á · á ž á ¹ á º á » á Œ á œ á Ÿ á ¿ á¡ á¡ á¡",
+-	},
+-	"mr": {
+-		0: "à€Œ à¥Š à¥§ à¥š à¥© à¥ª à¥« à¥¬ à¥­ à¥® à¥¯ à¥ à€ à€ à€ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€µ à€¶ à€· à€ž à€¹ à€³ à€œ à€Ÿ à€¿ à¥ à¥ à¥ à¥ à¥ à¥
+ à¥ à¥ à¥ à¥ à¥ à¥",
+-		3: "\u200c \u200d",
+-		4: "à€° à¥",
+-		5: "\u200d à¥ à€ à€ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€µ à€¶ à€· à€ž à€¹ à€³ à€œ à¥
+ à¥",
+-	},
+-	"ms": {
+-		0: "a ai au b c d dz e f g h i j k kh l m n ng ngg ny o p q r s sy t ts u ua v w x y z",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å Ãº Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"mt": {
+-		0: "a Ã  b Ä d e Ãš f Ä¡ g gÄ§ h Ä§ i Ã¬ j k l m n o Ã² p q r s t u Ã¹ v w x ÅŒ z",
+-		3: "c y",
+-	},
+-	"mua": {
+-		0: "a Ã£ b É c d É e Ã« Ç f g h i Ä© j k l m n Å o Ãµ p r s t u v á¹œ w y z",
+-		3: "q x",
+-		5: "A B Æ C D Æ E Æ F G H I J K L M N Å O P R S T U V W Y Z",
+-	},
+-	"my": {
+-		0: "á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á£ á€ á¥ áŠ á§ á© áª á¬ á« á­ á® á¯ á° á± á² á¶ á¿ á» áŒ áœ áŸ á¹ áº á· áž",
+-		3: "á á áš á¢ á á á á á á á á",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"naq": {
+-		0: "a Ã¢ b c d e f g h i Ã® k m n o ÃŽ p q r s t u Ã» w x y z Ç Ç Ç Ç",
+-		3: "j l v",
+-		5: "A B C D E F G H I K M N O P Q R S T U W X Y Z",
+-	},
+-	"nb": {
+-		0: "a Ã  b c d e Ã© f g h i j k l m n o Ã³ Ã² ÃŽ p q r s t u v w x y z ÃŠ Ãž Ã¥",
+-		3: "Ã¡ Ç Ã£ Ä Ã§ Ä Ãš Ãª Ã­ Å Ã± Å Å¡ Å§ ÃŒ ÅŸ Ã€ Ã¶",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ã Ã Ã
+",
+-	},
+-	"nd": {
+-		0: "a b c d e f g h i j k l m n o p q s t u v w x y z",
+-		3: "r",
+-		5: "A B C D E F G H I J K L M N O P Q S T U V W X Y Z",
+-	},
+-	"ne": {
+-		0: "à€Œ à€ à€ à€ à¥ à€
+ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€ à€  à€¡ à€¢ à€£ à€€ à€¥ à€Š à€§ à€š à€ª à€« à€¬ à€­ à€® à€¯ à€° à€² à€³ à€µ à€¶ à€· à€ž à€¹ à€œ à€Ÿ à€¿ à¥ à¥ à¥ à¥ à¥ à¥
+ à¥ à¥ à¥ à¥ à¥ à¥",
+-		3: "\u200c \u200d",
+-	},
+-	"nl": {
+-		0: "a Ã¡ Ã€ b c d e Ã© Ã« f g h i Ã­ Ã¯ ij j k l m n o Ã³ Ã¶ p q r s t u Ãº ÃŒ v w x y z",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â ( ) [ ] @ * / & # â  â¡ â² â³ Â§",
+-		3: "Ã¥ Ã£ Ã§ Ã± ÃŽ",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"nmg": {
+-		0: "a Ã¡ Ä Ã¢ Ã€ Ä b É c d e Ã© Ä Ãª Ä Ç ÇÌ ÇÌ ÇÌ ÇÌ É ÉÌ ÉÌ ÉÌ ÉÌ f g h i Ã­ Ä­ Ã® Ã¯ Ä« j k l m n Å Å o Ã³ Å ÃŽ Ã¶ Å É ÉÌ ÉÌ ÉÌ ÉÌ p r Å s t u Ãº Å­ Ã» Å« v w y",
+-		3: "q x z",
+-		5: "A B Æ C D E Æ Æ F G H I J K L M N Å O Æ P R S T U V W Y",
+-	},
+-	"nn": {
+-		0: "a Ã  b c d e Ã© f g h i j k l m n o Ã³ Ã² ÃŽ p q r s t u v w x y z ÃŠ Ãž Ã¥",
+-		3: "Ã¡ Ç Ä Ã§ Ä Ãš Ãª Å Ã± Å Å¡ Å§ ÃŒ ÅŸ Ã€ Ã¶",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ã Ã Ã
+",
+-	},
+-	"nso": {
+-		0: "a b d e Ãª f g h i j k l m n o ÃŽ p r s Å¡ t u w x y",
+-		3: "c q v z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"nus": {
+-		0: "a Ã€ aÌ± b c d e Ã« eÌ± É ÉÌ ÉÌ± ÉÌ±Ì f g É£ h i Ã¯ iÌ± j k l m n Å o Ã¶ oÌ± É ÉÌ ÉÌ± p q r s t u v w x y z",
+-		5: "A B C D E Æ F G Æ H I J K L M N Å O Æ P Q R S T U V W X Y Z",
+-	},
+-	"nyn": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"om": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"or": {
+-		0: "à¬Œ à¬
+ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬ à¬  à¬¡ à¬¡à¬Œ à¬¢ à¬¢à¬Œ à¬£ à¬€ à¬¥ à¬Š à¬§ à¬š à¬ª à¬« à¬¬ à¬­ à¬® à¬¯ à­ à¬° à¬² à¬³ à¬µ à­± à¬¶ à¬· à¬ž à¬¹ à¬Ÿ à¬¿ à­ à­ à­ à­ à­ à­ à­ à­ à­",
+-		3: "\u200c \u200d",
+-	},
+-	"pa": {
+-		0: "à©± à©° àšŒ à©Š à©§ à©š à©© à©ª à©« à©¬ à©­ à©® à©¯ à©Ž à©³ àš àš àš àš
+ àš àš àš à©² àš àš àš àšž àšžàšŒ àš¹ àš àš àšàšŒ àš àšàšŒ àš àš àš àš àš àšàšŒ àš àš àš àš  àš¡ àš¢ àš£ àš€ àš¥ àšŠ àš§ àšš àšª àš« àš«àšŒ àš¬ àš­ àš® àš¯ àš° àš² àšµ à© à© àšŸ àš¿ à© à© à© à© à© à© à©",
+-		3: "\u200c \u200d àš àš àš àš²àšŒ",
+-	},
+-	"pa_Arab": {
+-		0: "Ù Ø¡ Ø¢ Ø€ ØŠ Ø§ Øš ÙŸ Øª Ø« Ù¹ Ø¬ Ú Ø­ Ø® Ø¯ Ø° Ú Ø± Ø² Ú Ú Ø³ ØŽ Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú¯ Ù Ù
+ Ù Úº Ù ÚŸ Û Ù Û Û",
+-		3: "Ø£ Ù» Ø© Ùº ÙŒ Ùœ",
+-	},
+-	"pl": {
+-		0: "a Ä
+ b c Ä d e Ä f g h i j k l Å m n Å o Ã³ p r s Å t u w y z Åº ÅŒ",
+-		3: "q v x",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"ps": {
+-		0: "Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù° Ø¢ Ø§ Ø£ Ø¡ Øš ÙŸ Øª ÙŒ Ø« Ø¬ Ú Ú Ú
+ Ø­ Ø® Ø¯ Ú Ø° Ø± Ú Ø² Ú Ú Ø³ ØŽ Ú Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú« Ù Ù
+ Ù ÚŒ Ù Ø© Ù Ø€ Û Ù Û Û ØŠ",
+-		3: "\u200c \u200d",
+-	},
+-	"pt": {
+-		0: "a Ã¡ Ã  Ã¢ Ã£ b c Ã§ d e Ã© Ãª f g h i Ã­ j k l m n o Ã³ Ã² ÃŽ Ãµ p q r s t u Ãº v w x y z",
+-		3: "Ä Ã¥ Ã€ Ä ÃŠ Ãš Ä Ã« Ä Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Å Ã¶ Ãž Å Å Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"pt_PT": {
+-		3: "Âª Ä Ã¥ Ã€ Ä ÃŠ Ãš Ä Ã« Ä Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Âº Å Ã¶ Ãž Å Å Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-	},
+-	"rn": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ro": {
+-		0: "a Ä Ã¢ b c d e f g h i Ã® j k l m n o p r s È t È u v x z",
+-		3: "Ã¡ Ã  Ã¥ Ã€ Ã§ Ã© Ãš Ãª Ã« Ã± Ã¶ q Å Å£ ÃŒ w y",
+-		4: "a Ä Ã¢ b c d e f g h i Ã® j k l m n o p q r s È t È u v w x y z",
+-		5: "A Ä Ã B C D E F G H I Ã J K L M N O P Q R S È T È U V W X Y Z",
+-	},
+-	"rof": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"root": {
+-		2: "- , ; : ! ? . ( ) [ ] { }",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-	},
+-	"ru": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ð¹ Ðº Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â Â« Â» ( ) [ ] { } @ * / & # Â§",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð  Ð¡ Ð¢ Ð£ Ð€ Ð¥ ÐŠ Ð§ Ðš Ð© Ð« Ð­ Ð® Ð¯",
+-	},
+-	"rw": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"rwk": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"sah": {
+-		0: "Ð° Ð± Ð³ Ò ÐŽ ÐŽÑ Ðž Ð¹ Ðº Ð» ÐŒ Ðœ ÐœÑ Ò¥ ÐŸ Ó© Ð¿ Ñ Ñ Ñ Ñ Ò¯ Ñ
+ Ò» Ñ Ñ Ñ",
+-		3: "Ð² Ðµ Ñ Ð¶ Ð· Ñ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		5: "Ð Ð Ð Ò Ð ÐÑ Ð Ð Ð Ð Ð Ð ÐÑ Ò€ Ð Óš Ð Ð  Ð¡ Ð¢ Ð£ Ò® Ð¥ Òº Ð§ Ð« Ð­",
+-	},
+-	"saq": {
+-		0: "a b c d e g h i j k l m n o p r s t u v w y",
+-		3: "f q x z",
+-		5: "A B C D E G H I J K L M N O P R S T U V W Y",
+-	},
+-	"sbp": {
+-		0: "a b c d e f g h i j k l m n o p s t u v w y",
+-		3: "q r x z",
+-		5: "A B C D E F G H I J K L M N O P S T U V W Y",
+-	},
+-	"se": {
+-		0: "a Ã¡ b c Ä d Ä e f g h i j k l m n Å o p r s Å¡ t Å§ u v z ÅŸ",
+-		3: "Ã  Ã¥ Ã€ Ã£ ÃŠ Ã§ Ã© Ãš Ã­ Å Ã± Ã³ Ã² Ã¶ Ãž q Ãº ÃŒ w x y",
+-	},
+-	"seh": {
+-		0: "a Ã¡ Ã  Ã¢ Ã£ b c Ã§ d e Ã© Ãª f g h i Ã­ j k l m n o Ã³ Ã² ÃŽ Ãµ p q r s t u Ãº v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"ses": {
+-		0: "a Ã£ b c d e áºœ f g h i j k l m n É² Å o Ãµ p q r s Å¡ t u w x y z ÅŸ",
+-		3: "v",
+-		5: "A Ã B C D E áºŒ F G H I J K L M N Æ Å O Ã P Q R S Å  T U W X Y Z Åœ",
+-	},
+-	"sg": {
+-		0: "a Ã¢ Ã€ b d e Ãª Ã« f g h i Ã® Ã¯ j k l m n o ÃŽ Ã¶ p r s t u Ã¹ Ã» ÃŒ v w y z",
+-		3: "c q x",
+-		5: "A B D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"shi": {
+-		0: "a b c d áž e É f g gÊ· É£ h áž¥ i j k kÊ· l m n q r á¹ s á¹£ t á¹­ u w x y z",
+-		3: "o p v",
+-		5: "A B C D áž E Æ F G GÊ· Æ H áž€ I J K KÊ· L M N Q R á¹ S á¹¢ T á¹¬ U W X Y Z",
+-	},
+-	"shi_Tfng": {
+-		0: "âŽ° âŽ± âŽ³ âŽ³âµ¯ âŽ· âŽ¹ âŽ» âŽŒ âŽœ âŽœâµ¯ âµ âµ âµ âµ
+ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ¡ âµ¢ âµ£ âµ¥",
+-		5: "âŽ° âŽ± âŽ³ âŽ· âŽ¹ âŽ» âŽŒ âŽœ âµ âµ âµ âµ
+ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ âµ¡ âµ¢ âµ£ âµ¥",
+-	},
+-	"si": {
+-		0: "à¶
+ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶  à¶¡ à¶¢ à¶£ à¶¥ à¶€ à¶§ à¶š à¶© à¶ª à¶« à¶¬ à¶­ à¶® à¶¯ à¶° à¶± à¶³ à¶Ž à¶µ à¶¶ à¶· à¶ž à¶¹ à¶º à¶» à¶œ à· à· à· à· à· à·
+ à· à· à· à· à· à· à· à· à· à·² à· à· à· à· à· à· à· à·",
+-		3: "\u200b \u200c \u200d à¶ à¶ à¶ à¶Š à·³",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "à¶
+ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶ à¶  à¶¡ à¶¢ à¶£ à¶¥ à¶€ à¶§ à¶š à¶© à¶ª à¶« à¶¬ à¶­ à¶® à¶¯ à¶° à¶± à¶³ à¶Ž à¶µ à¶¶ à¶· à¶ž à¶¹ à¶º à¶» à¶œ à· à· à· à· à· à·
+ à·",
+-	},
+-	"sk": {
+-		0: "a Ã¡ Ã€ b c Ä d Ä e Ã© f g h ch i Ã­ j k l Äº ÄŸ m n Å o Ã³ ÃŽ p q r Å s Å¡ t Å¥ u Ãº v w x y Ãœ z ÅŸ",
+-	},
+-	"sl": {
+-		0: "a b c Ä d e f g h i j k l m n o p r s Å¡ t u v z ÅŸ",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ä ÃŠ Ã§ Ä Ä Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å q Ãº Ã¹ Å­ Ã» ÃŒ Å« w x y Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "A B C Ä Ä D Ä E F G H I J K L M N O P Q R S Å  T U V W X Y Z Åœ",
+-	},
+-	"sn": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"so": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"sq": {
+-		0: "a b c Ã§ d dh e Ã« f g gj h i j k l ll m n nj o p q r rr s sh t th u v x xh y z zh",
+-		3: "w",
+-	},
+-	"sr": {
+-		0: "Ð° Ð± Ð² Ð³ ÐŽ Ñ Ðµ Ð¶ Ð· Ðž Ñ Ðº Ð» Ñ ÐŒ Ðœ Ñ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-	},
+-	"sr_Latn": {
+-		0: "a b c Ä Ä d dÅŸ Ä e f g h i j k l lj m n nj o p r s Å¡ t u v z ÅŸ",
+-		3: "q w x y",
+-	},
+-	"ss": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"st": {
+-		0: "a b d e f g h i j k l m n o p q r s t u w y",
+-		3: "c v x z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"sv": {
+-		0: "a Ã  b c d e Ã© f g h i j k l m n o p q r s t u v w x y z Ã¥ Ã€ Ã¶",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â ( ) [ ] @ * / & # â  â¡ â² â³ Â§",
+-		3: "Ã¡ Ã¢ Ã£ Ä Ã§ Ã« Ã­ Ã® Ã¯ Ä« Ã± Ã³ Ãº Ã¿ ÃŒ ÃŠ Ãž",
+-		4: "a b c Ä d e f g h i j k l Å m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ã
+ Ã Ã",
+-	},
+-	"sv_FI": {
+-		3: "Ã£ Ã§ Ã« Ã­ Ã± Ã³ Å¡ Ã¿ ÃŒ ÅŸ",
+-	},
+-	"sw": {
+-		0: "a b ch d e f g h i j k l m n o p r s t u v w y z",
+-		3: "c q x",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"swc": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"ta": {
+-		0: "à®
+ à® à® à® à® à® à® à® à® à® à® à® à® à® à® à® à® à® à®£ à®€ à®š à®ª à®® à®¯ à®° à®² à®µ à®Ž à®³ à®± à®© à® à®· à®ž à®¹ à®Ÿ à®¿ à¯ à¯ à¯ à¯ à¯ à¯ à¯ à¯ à¯ à¯",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"te": {
+-		0: "à°
+ à° à° à° à° à° à° à±  à° à±¡ à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à°  à°¡ à°¢ à°£ à°€ à°¥ à°Š à°§ à°š à°ª à°« à°¬ à°­ à°® à°¯ à°° à°± à°² à°µ à°¶ à°· à°ž à°¹ à°³ à°Ÿ à°¿ à± à± à± à± à± à± à± à± à± à± à± à± à± à±",
+-		3: "\u200c \u200d à±Š à±§ à±š à±© à±ª à±« à±¬ à±­ à±® à±¯",
+-		5: "à°
+ à° à° à° à° à° à° à±  à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à° à°  à°¡ à°¢ à°£ à°€ à°¥ à°Š à°§ à°š à°ª à°« à°¬ à°­ à°® à°¯ à°° à°± à°² à°µ à°¶ à°· à°ž à°¹ à°³",
+-	},
+-	"teo": {
+-		0: "a b c d e g h i j k l m n o p r s t u v w x y",
+-		3: "f q z",
+-		5: "A B C D E G H I J K L M N O P R S T U V W X Y",
+-	},
+-	"tg": {
+-		0: "Ð° Ð± Ð² Ð³ Ò ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ó£ Ð¹ Ðº Ò Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ó¯ Ñ Ñ
+ Ò³ Ñ Ò· Ñ Ñ Ñ Ñ Ñ",
+-		3: "Ñ Ñ Ñ Ñ",
+-	},
+-	"th": {
+-		0: "à¹ à¹ à¹ à¹ à¹ à¹ à¹ àž¯ à¹ àž àž àž àž àž
+ àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž àž  àž¡ àž¢ àž£ àž€ àž¥ àžŠ àž§ àžš àž© àžª àž« àž¬ àž­ àž® à¹ àž° àž± àž² à¹
+ àž³ àžŽ àžµ àž¶ àž· àžž àž¹ à¹ à¹ à¹ à¹ à¹ àžº",
+-		3: "\u200b",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"ti": {
+-		0: "á á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á° á² á² á³ áŽ áµ áž áž á¹ áº á» áŒ áœ áŸ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á° á° á± á² á³ áŽ áµ á¶ á· á á á á á á á
+ á á á á á á á á á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á",
+-		3: "á á á á á á á á á á á á â¶ á á á á á â¶ â¶ â¶ â¶ â¶ á á á á
+ á á â¶
+ â¶
+ â¶ â¶ á â¶ â¶ â¶ â¶ á¯ á â¶ á¯ â¶ áž áž á¹ áº á» áŒ áœ áŸ á¿ â¶ â¶ á á á á á á á á á á â¶ â¶ â¶ â¶ â¶ â¶ â¶ â¶ â¶ á á á á á á á á á á â¶ á á á á â¶  â¶  â¶¡ â¶¢ â¶£ â¶€ â¶¥ â¶Š â¶š â¶š â¶© â¶ª â¶« â¶¬ â¶­ â¶® â¶° â¶° â¶± â¶² â¶³ â¶Ž â¶µ â¶¶ â¶ž â¶ž â¶¹ â¶º â¶» â¶Œ â¶œ â¶Ÿ â· â· â· â· â· â· â·
+ â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â·",
+-		5: "á á á á á  áš á° áž á á á á á  áš á° áž á á á á á  áš á° áž á á á á á  áš á° á á á á  áš á° áž á á á",
+-	},
+-	"tn": {
+-		0: "a b d e Ãª f g h i j k l m n o ÃŽ p r s t u w y",
+-		3: "c q v x z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"to": {
+-		0: "a Ä e Ä f h Ê» i Ä« k l m n ng o Å p s t u Å« v",
+-		3: "Ã  Ä Ã¢ Ã¥ Ã€ ÃŠ b c Ã§ d Ãš Ä Ãª Ã« g Ã¬ Ä­ Ã® Ã¯ j Ã± Ã² Å ÃŽ Ã¶ Ãž Å q r Ã¹ Å­ Ã» ÃŒ w x y Ã¿ z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A Ä B C D E Ä F G H Ê» I Äª J K L M N O Å P Q R S T U Åª V W X Y Z",
+-	},
+-	"tr": {
+-		0: "a b c Ã§ d e f g Ä h Ä± i iÌ j k l m n o Ã¶ p r s Å t u ÃŒ v y z",
+-		2: "- â â â , ; : ! ? . âŠ ' â â \" â â ( ) [ ] @ * / & # â  â¡ â² â³ Â§",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ä ÃŠ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ãž Å Å q Ãº Ã¹ Å­ Ã» Å« w x Ã¿",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "A B C Ã D E F G H I Ä° J K L M N O Ã P Q R S Å T U Ã V W X Y Z",
+-	},
+-	"ts": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"twq": {
+-		0: "a Ã£ b c d e áºœ f g h i j k l m n Å É² o Ãµ p q r s Å¡ t u w x y z ÅŸ",
+-		3: "v",
+-	},
+-	"tzm": {
+-		0: "a b c d áž e É f g gÊ· É£ h áž¥ i j k kÊ· l m n q r á¹ s á¹£ t á¹­ u w x y z",
+-		3: "o p v",
+-		5: "A B C D áž E Æ F G Æ H áž€ I J K L M N Q R á¹ S á¹¢ T á¹¬ U W X Y Z",
+-	},
+-	"uk": {
+-		0: "ÊŒ Ð° Ð± Ð² Ð³ Ò ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ñ Ñ Ð¹ Ðº Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ñ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		4: "a b c Ä d e f g h i j k l Å m n o Âº p q r s t u v w x y z",
+-		5: "Ð Ð Ð Ð Ò Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð  Ð¡ Ð¢ Ð£ Ð€ Ð¥ ÐŠ Ð§ Ðš Ð© Ð® Ð¯",
+-	},
+-	"ur": {
+-		0: "Ø§ Ø£ Ø¢ Øš ÙŸ Øª Ù¹ Ø« Ø¬ Ú Ø­ Ø® Ø¯ Ú Ø° Ø± Ú Ø² Ú Ø³ ØŽ Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú¯ Ù Ù
+ Ù Úº Ù Ø€ Û ÚŸ Ø¡ Û ØŠ Û Ù» Ø© Ùº ÙŒ Ùœ Ù Ù",
+-	},
+-	"uz": {
+-		0: "Ð° Ð± Ð² Ð³ Ò ÐŽ Ðµ Ñ Ð¶ Ð· Ðž Ð¹ Ðº Ò Ð» ÐŒ Ðœ ÐŸ Ð¿ Ñ Ñ Ñ Ñ Ñ Ñ Ñ
+ Ò³ Ñ Ñ Ñ Ñ Ñ Ñ",
+-		3: "Ñ Ñ Ñ Ñ",
+-	},
+-	"uz_Arab": {
+-		0: "Ù Ù Ù Ù Ù Ù Ù Ù Ù Ù° Ø¡ Ø¢ Ø£ Ø€ ØŠ Ø§ Øš ÙŸ Ø© Øª Ø« ÙŒ Ø¬ Ú Ø­ Ø® Ú Ú
+ Ø¯ Ø° Ú Ø± Ø² Ú Ú Ú Ø³ ØŽ Ú Øµ Ø¶ Ø· Øž Ø¹ Øº Ù Ù Ú© Ú« Ú¯ Ù Ù
+ Ù ÚŒ Ù Ù Û Û Ù Û Û Û",
+-		3: "\u200c \u200d",
+-	},
+-	"uz_Latn": {
+-		0: "a aÊŒ b ch d e eÊŒ f g gÊŒ h i iÊŒ j k l m n o oÊŒ p q r s sh t u uÊŒ v x y z",
+-		3: "c w",
+-		5: "A B CH D E F G GÊŒ H I J K L M N O OÊŒ P Q R S SH T U V X Y Z",
+-	},
+-	"vai": {
+-		0: "ê  ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© ê ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ ê êŽ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê ê¡ ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê ê« ê« ê¬ ê­ ê® êª ê¯ ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ ê êµ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê« ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê  ê¡ ê¢ ê£ ê€ ê¥ êŠ ê§ êš ê© êª ê« ê¬ ê­ ê® ê¯ ê° ê± ê² ê³ êŽ êµ ê¶ ê· êž ê¹ êº ê» êŒ êœ êŸ ê¿ ê ê ê ê ê ê
+ ê ê ê ê ê ê ê",
+-	},
+-	"vai_Latn": {
+-		0: "a Ã¡ Ã£ b É c d É e Ã© áºœ É ÉÌ ÉÌ f g h i Ã­ Ä© j k l m n Å o Ã³ Ãµ É ÉÌ ÉÌ p q r s t u Ãº Å© v w x y z",
+-		5: "A B Æ C D Æ E Æ F G H I J K L M N Å O Æ P Q R S T U V W X Y Z",
+-	},
+-	"ve": {
+-		0: "a b d áž e f g h i k l ážœ m n á¹
+ á¹ o p r s t á¹± u v w x y z",
+-	},
+-	"vi": {
+-		0: "a Ã  áº£ Ã£ Ã¡ áº¡ Ä áº± áº³ áºµ áº¯ áº· Ã¢ áº§ áº© áº« áº¥ áº­ b c d Ä e Ãš áº» áºœ Ã© áº¹ Ãª á» á» á»
+ áº¿ á» f g h i Ã¬ á» Ä© Ã­ á» j k l m n o Ã² á» Ãµ Ã³ á» ÃŽ á» á» á» á» á» Æ¡ á» á» á»¡ á» á»£ p q r s t u Ã¹ á»§ Å© Ãº á»¥ Æ° á»« á»­ á»¯ á»© á»± v w x y á»³ á»· á»¹ Ãœ á»µ z",
+-		4: "a b c d Ä e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"vun": {
+-		0: "a b c d e f g h i j k l m n o p r s t u v w y z",
+-		3: "q x",
+-		5: "A B C D E F G H I J K L M N O P R S T U V W Y Z",
+-	},
+-	"wae": {
+-		0: "a Ã¡ Ã€ Ã£ b c Ä d e Ã© f g h i Ã­ j k l m n o Ã³ Ã¶ Ãµ p q r s Å¡ t u Ãº ÃŒ Å© v w x y z",
+-		3: "Ã  Ä Ã¢ Ã¥ Ä ÃŠ Ã§ Ãš Ä Ãª Ã« Ä Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã² Å ÃŽ Ãž Å Å Ã Ã¹ Å­ Ã» Å« Ã¿",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"wal": {
+-		0: "á á á á á á á á á á á á á á á á á á á
+ á á á á á á á á á á â¶ á á á á á á á á á á á á á á á á á á á á á á â¶ á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ â¶ á° á° á± á² á³ áŽ áµ á¶ á· â¶ áž áž á¹ áº á» áŒ áœ áŸ á¿ â¶ á á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á  á  á¡ á¢ á£ á€ á¥ áŠ á§ á á á
+ á á â¶
+ áš áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· â¶ áž áž á¹ áº á» áŒ áœ áŸ á¿ â¶ á á á á á á á
+ á á á á á á á á á á á á á á á á á â¶ á á á á á á á á á â¶ á  á  á¡ á¢ á£ á€ á¥ áŠ á§ â¶ áš áš á© áª á« á¬ á­ á® á¯ á° á² á² á³ áŽ áµ áž áž á¹ áº á» áŒ áœ áŸ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á â¶ á  á  á¡ á¢ á£ á€ á¥ áŠ á§ áš á© áª á« á¬ á­ á® á¯ á° á± á² á³ áŽ áµ á¶ á· â¶ áž áž á¹ áº á» áŒ áœ áŸ á¿ â¶ á á á á á á á
+ á á â¶ á á á á á á á á á á á á á á á á á á á á á á á á â¶ â¶ â¶ â¶ â¶ á  á  á¡ á¢ á£ á€ á¥ áŠ á§ â¶ áš áš á© áª á« á¬ á­ á® á¯ â¶ á° á° á± á² á³ áŽ áµ á¶ á· â¶ áž áž á¹ áº á» áŒ áœ áŸ á¿ á á á á á á
+ á á á á á á á á á á á á á á á á á á á á á á á á á á á á á â¶ á á á á â¶  â¶  â¶¡ â¶¢ â¶£ â¶€ â¶¥ â¶Š â¶š â¶š â¶© â¶ª â¶« â¶¬ â¶­ â¶® â¶° â¶° â¶± â¶² â¶³ â¶Ž â¶µ â¶¶ â¶ž â¶ž â¶¹ â¶º â¶» â¶Œ â¶œ â¶Ÿ â· â· â· â· â· â· â·
+ â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â· â·",
+-	},
+-	"xh": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-	"xog": {
+-		0: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"yav": {
+-		0: "a Ã¡ Ã  Ã¢ Ç Ä b c d e Ã© Ãš É ÉÌ ÉÌ f h i Ã­ Ã¬ Ã® Ä« k l m mb n ny Å Åg o Ã³ Ã² ÃŽ Ç Å É ÉÌ ÉÌ p s t u Ãº Ã¹ Ã» Ç Å« v w y",
+-		3: "g j q r x z",
+-		5: "A B C D E Æ F H I K L M N Å O Æ P S T U V W Y",
+-	},
+-	"yo": {
+-		0: "a Ã¡ Ã  b d e Ã© Ãš áº¹ áº¹Ì áº¹Ì f g gb h i Ã­ Ã¬ j k l m n o Ã³ Ã² á» á»Ì á»Ì p r s á¹£ t u Ãº Ã¹ w y",
+-		3: "c q v x z",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"zh": {
+-		0: "äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž¢ äž€ äž¥ äž§ äžª äž­ äž° äž² äžŽ äžž äžž äž¹ äžº äž» äžœ äžŸ ä¹ ä¹
+ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹  ä¹¡ ä¹Š ä¹° ä¹± ä¹Ÿ äº äº äº äº äº äº äº äº äº äº äº äº äº äº¡ äº€ äºŠ äºš äº« äº¬ äº® äº² äºº äº¿ äº¿ ä» ä» ä»
+ ä» ä» ä» ä» ä» ä» ä» ä» ä» ä»£ ä»£ ä»€ ä»¥ ä»ª ä»¬ ä»° ä»² ä»¶ ä»» ä»œ ä»¿ äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ äŒ  äŒ€ äŒŠ äŒ¯ äŒ° äŒŽ äŒž äŒŒ äŒœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ  äœ€ äœ© äœ³ äœ¿ äŸ äŸ äŸ äŸ  äŸŠ äŸŠ äŸ§ äŸš äŸ¬ äŸ¯ äŸµ äŸ¿ ä¿ ä¿ ä¿ ä¿ ä¿ ä¿¡ ä¿© ä¿® ä¿± ä¿Ÿ å å å å å åŠ åŒ åŸ å å å å å å¥ å¶ å· åš å¬ å² å» å å§ å å
+ å
+ å
+ å
+ å
+
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+¥ å
+š å
+« å
+« å
+¬ å
+­ å
+® å
+° å
+± å
+³ å
+³ å
+Ž å
+µ å
+¶ å
+· å
+ž å
+¹ å
+» å
+» å
+Œ å
+œ å
+ å å å å å å å  å¬ å° å² å· å å å å  å¡ å€ å­ å¯ å° åº å» åœ å å å å å å å å å å å å å å€ å© å« å° å¶ å¶ å· åž åº å» å å å å§ å© åª å¯ å² å å å å å å  å¡ å£ åš åš å© åª å« å± å± å² å³ å¿ å å å å å€ åŸ å¿ å
+ å å å å å å¹ å¹ åº å» å å å å å å å å å å å å å å å  å  å¡ å¢ å« å° å± å³ å· å å å
+ å å å å å å å å å» å¿ å å å å å å å å å å å å å å å å£ å£ å€ å¥ åŠ å« å« å¬ å­ å¯ å° å² å³ å¶ å¶ å· åž å¹ å å å å å å å å å å å å å å å å å åŠ å§ å« åµ åž å¹ å» åŸ å å å å å å å å¢ åŠ åš å³ åµ åŒ åœ å å åŠ å§ åª å¬ å¯ å± å å å å å å å å å å¥ åŠ å© åª å­ å² å å å€ å¬ å® å¯ å± å· å å å¡ å¥ åŠ åª å å å å å å å å å åµ å· å» å åš å¯ å å åŽ å» å¿ åš å å å  å¢ å­ å° åŽ åº åœ åŸ å å å å£ åš å­ å° åº åŸ å å å å å å å å å å å¡ å€ åŠ åª å å å å å å å å å å¹ åº å  å  å  å ¡ å ª å¡ å¡ å¡ å¡« å¢ å¢ å¢š å£ å£€ å£« å£® å£° å€ å€ å€ å€ å€ å€ å€ å€ å€¥ å€§ å€© å€© å€ª å€« å€® å€± å€Ž å€· å€· å€ž å€¹ å€º å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥¥ å¥³ å¥Ž å¥¶ å¥¹ å¥œ åŠ åŠ åŠ åŠ åŠ åŠ¥ åŠš åŠ® åŠ¹ åŠ» å§ å§ å§ å§ å§ å§ å§ å§¿ åš åš åš åš åš åš å© å© åª å« å« å«© å­ å­ å­ å­ å­ å­ å­ å­ å­ å­ å­£ å­€ å­Š å­© å® å® å® å® å® å® å® å® å® å® å® å® å® å® å® å® å® å® å®¡ å®¡ å®¢ å®£ å®€ å®ª å®³ å®Ž å®¶ å®¹ å®œ å®œ å®Ÿ å®¿ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯¡ å¯š å¯ž å¯¹ å¯» å¯Œ å¯¿ å° å° å° å° å° å° å° å° å° å° å° å°€ å°± å°º å°Œ å°Œ å°œ å°Ÿ å± å± å± å± å±
+ å± å± å± å± å±  å±± å² å² å² å² å² å² å²³ å²ž å³¡ å³° åŽ åŽ© åŽŽ å· å· å·¡ å·¥ å·¥ å·Š å·§ å·š å·« å·® å·± å·² å·Ž å·· åž åž åž åž åž
+ åž åž åž åž åž åžŠ åž­ åž® åžž åžœ å¹
+ å¹ å¹² å¹² å¹³ å¹Ž å¹ž å¹» å¹» å¹Œ å¹œ å¹¿ åº åº åº åº åº åº åº åº åº åº åº åº åºŠ åº§ åº­ åº· åºž å» å» å»¶ å»· å»º åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ åŒ  åŒ¥ åŒŠ åŒ¯ åŒ± åŒ¹ åœ åœ åœ åœ¢ åœ© åœ¬ åœ­ åœ° åœ± åœ· åœ¹ åœ» åœŒ åŸ åŸ åŸ åŸ
+ åŸ åŸ åŸ åŸ åŸ åŸ åŸª åŸ® åŸµ åŸ· å¿ å¿
+ å¿ å¿ å¿ å¿ å¿ å¿ å¿ å¿  å¿§ å¿« å¿µ å¿œ æ æ æ æ æ æ æ æ¡ æ¥ æ§ æš æª æ» æ æ æ¢ æš æ© æ­ æ¯ æ° æ¶ æŒ æ æ æ æ æ  æ£ æš æ² æ
+ æ æ æ  æ§ æš æ¯ æ³ æ¹ æ æ æ æ æ æ æ§ æ
+ æ
+ æ
+ æ
+¢ æ
+§ æ
+° æŸ æ æ æ æ æ æ æ æ æ æ æª æŽ æ¿ æ¿ æ æ æ æ æ æ æ æ æ æ£ æ§ æ© æ« æ« æ¬ æ­ æ® æ¯ æ¹ æŸ æŸ æ¿ æ æ æ æ æ æ æ æ æ¢ æ€ æ¥ æ« æ¬ æ± æµ æ¹ æœ æ
+ æ æ æ æ æ æ æ æ æ æ æ¥ æŠ æš æ© æ¬ æ³ æ· æŒ æŸ æ¿ æ æ æ æ æ æ æ¡ æ€ æ¥ æª æ¯ æº æ æ æ æ æ¡ æ¢ æ· æ æ æ æ æ¢ æ¥ æ§ æ§ æš æ© æª æž æ æ æ æ¡ æŽ æ æ æ¬ æ­ æ æ æ æ æ æ© æž æ æ æ­ æ æ æŠ æ¯ æ¶ æ¹ æ» æŸ æ¿ æ
+ æ æ æ æ æ æ æ¢ æ£ æŠ æ¬ æ° æ² æŽ æ æ æ æ æ æ æ¥ æ­ æ¯ æ° æ¹ æŒ æœ æ æ
+ æ æ æ æ  æ¢ æ¥ æ¥ æŠ æ§ æš æ© æ­ æ¶ æº æ æ æ æ æ æ æ æ  æ¥ æš æ­ æ¯ æŸ æ æ æ æ æ æš æ® æ¯ æŽ æ¶ æº æ æ æ æ æ® æŽ æ° æ² æŽ æ¹ æŒ æŸ æŸ æ¿ æ æ æ æ æ æ æ æ æ æš æª æª æ« æ¬ æ­ æ¯ æ± æµ æ æ æ æ æ æ æ æ æ æ¡ æ¥ æš æ¯ æ° æŸ æ¿ æ æ æ æ æ æ¢ æª æ« æ¶ æ æ æ æ æ¥ æ¬ æ¯ æ³ æŽ æ  æ  æ  æ  æ ¡ æ · æ · æ ž æ ¹ æ Œ æ¡ æ¡ æ¡ æ¡ æ¡ æ¡£ æ¡¥ æ¢ æ¢
+ æ¢Š æ¢¯ æ¢° æ¢µ æ£ æ£ æ£ æ£ æ£ æ£® æ€
+ æ€ æ€° æ¥ æ¥Œ æŠ æŠ æš¡ æš± æª æ¬  æ¬  æ¬¡ æ¬¢ æ¬£ æ¬§ æ¬² æ¬º æ¬Ÿ æ­ æ­ æ­¢ æ­¢ æ­£ æ­€ æ­¥ æ­Š æ­ª æ­» æ® æ® æ®µ æ¯
+ æ¯ æ¯ æ¯ æ¯ æ¯ æ¯ æ¯« æ° æ° æ° æ°Ž æ°ž æ± æ± æ± æ± æ± æ± æ±  æ±¡ æ±€ æ±ª æ±¶ æ±œ æ² æ² æ² æ² æ² æ²§ æ²³ æ²¹ æ²» æ²¿ æ³ æ³ æ³ æ³ æ³¡ æ³¡ æ³¢ æ³£ æ³¥ æ³š æ³° æ³³ æ³œ æŽ æŽ æŽ æŽ æŽ¥ æŽª æŽ² æŽ» æŽœ æŽŸ æµ æµ
+ æµ æµ æµ æµ æµŠ æµ© æµª æµ® æµŽ æµ· æ¶
+ æ¶ æ¶ æ¶ æ¶š æ¶¯ æ¶² æ¶µ æ· æ· æ· æ·¡ æ·± æ·· æ·» æž
+ æž æž¡ æž£ æž© æž¯ æžŽ æžž æ¹ æ¹Ÿ æº æº æºª æ» æ» æ»¡ æ»¥ æ»š æ»Ž æŒ æŒ æŒ æŒ  æŒ« æœ æœ æœ® æŸ æŸ³ æ¿ ç ç« ç­ ç¯ ç° çµ ç¿ ç ç ç® çž ç¹ ç ç ç€ çŠ ç§ ç­ çŠ ç¶ ç
+ ç
+ ç
+§ ç
+® ç ç ç ç ç çª ç¬ ç± çµ çµ ç¶ ç· çž çœ ç ç ç ç ç ç¡ ç¢ ç§ ç© ç² çµ ç¹ çº ç¯ ç¶ ç¹ ç ç ç ç  ç¬ ç® ç± çŒ ç ç ç® ç ç ç ç ç ç© ç« ç¯ ç° ç² ç» ç ç ç ç  ç­ ç ç ç çª ç³ çŽ çŒ ç ç ç ç ç° ç¶ ç ç çŠ ç¶ ç ç ç ç çš ç° ç° ç± ç² ç³ çµ ç· çž ç» ç
+ ç ç ç¥ çª ç ç ç ç ç¯ ç² çŒ çŸ ç
+ ç ç çŽ ç» çœ çŸ ç ç ç ç® ç ç ç ç ç ç ç ç ç® çŽ çž çŒ çŸ ç ç ç ç ç  çŒ ç ç¡ ç£ ç§ ç ç£ ç¥ ç­ ç³ ç¶ ç  ç  ç  ç  ç Ž ç¡ ç¡ ç¡¬ ç¢ ç¢ ç¢ ç¢ ç¢§ ç¢° ç£ ç£
+ ç£š ç€º ç€Œ ç€Ÿ ç¥ ç¥ ç¥ ç¥¥ ç¥š ç¥ž çŠ çŠ
+ çŠ ç§ ç§ ç§ ç§ ç§ ç§ ç§ ç§ ç§€ ç§Š ç§© ç§¯ ç§° ç§» çš çš çš çš£ çš³ çš¿ ç© ç©¶ ç©· ç©¹ ç©º ç©¿ çª çª çª ç« ç« ç« ç« ç« ç«  ç«¥ ç«¯ ç«¹ ç¬ ç¬ ç¬ ç¬Š ç¬š ç¬¬ ç­ ç­ ç­ ç­ ç­¹ ç­Ÿ ç® ç® ç®¡ ç®­ ç®± ç¯ ç¯® ç°¿ ç± ç±³ ç±» ç² ç² ç² ç²€ ç²¹ ç²Ÿ ç³ ç³ ç³ ç³ ç³» çŽ  çŽ¢ çŽ§ çŽ« çŽ¯ ç¹ çº¢ çºŠ çº§ çºª çº¯ çº² çº³ çºµ çº· çºž çºœ ç» ç» ç» ç» ç» ç» ç» ç» ç» ç» ç» ç» ç» ç» ç»§ ç»© ç»ª ç»­ ç»Ž ç»µ ç»Œ çŒ
+ çŒ çŒ çŒ çŒ  çŒ© çŒŽ çŒ¶ çŒž çŒº çœ çœ çœ çœ çœ¢ çœª çœ® çœ² çŸ çŸ çŸ çŸ€ çŸ¯ çŸœ ç¿ ç¿
+ ç¿ ç¿ ç¿  ç¿° ç¿» ç¿Œ è è è è
+ è è è è è³ è¶ è è è è èª è è è è¡ è€ è¥ è© è¯ è² è è è è è è è¡ è¶ èž èœ è è è± èž è
+ è
+ è
+ è
+° è
+¹ è
+Ÿ è
+¿ è è£ èª è­ è³ èŽ è è è è è èª è¬ è° è¹ è¯ è² èº èŸ è è è èŠ è¬ è­ è± è³ è è è è¥ èŠ è± è èš è« è¶ è è è£ è¯ è· è è èª è« è± è² è· è è© è² è è è€ è¥ è§ èš èœ è è è¡ è è è è è è¬ è è¡ è èª è è è€ è è è« è¹ èœ èŸ è è è è è® è è è¶ è è¹ è ¢ è¡ è¡ è¡ è¡¡ è¡£ è¡¥ è¡š è¢ è¢« è¢­ è£ è£ è£
+ è£ è£€ è¥¿ èŠ èŠ è§ è§ è§ è§ è§ è§ è§ è§£ èš èª èª è­Š è®¡ è®¢ è®€ è®š è®© è®­ è®­ è®® è®¯ è®° è®² è®· è®ž è®º è®Ÿ è®¿ è¯ è¯ è¯ è¯ è¯ è¯ è¯ è¯ è¯ è¯ è¯ è¯¢ è¯¥ è¯Š è¯­ è¯¯ è¯Ž è¯· è¯ž è¯º è¯» è¯Ÿ è° è° è°
+ è° è° è° è° è° è°¢ è°š è°± è°· è± è±¡ è±ª è² èŽ èŽ èŽ èŽ èŽ¡ èŽ¡ èŽ¢ èŽ£ èŽ€ èŽ¥ èŽ§ èŽ§ èŽš èŽ© èŽª èŽ­ èŽ¯ èŽ± èŽŽ èŽµ èŽ¹ èŽº èŽŒ èŽŸ èµ èµ èµ èµ èµ èµ èµ èµ èµ èµ èµ  èµ¢ èµ€ èµ« èµ° èµµ èµ· è¶ è¶
+ è¶ è¶ è¶£ è¶³ è· è· è· è· è· è·¯ è·³ èž èž¢ èž© èº« èº² èœŠ èœš èœ© èœ¬ èœ® èœ® èœ¯ èœ° èœ» èœœ èŸ èŸ
+ èŸ èŸ èŸ èŸ èŸ èŸ èŸ èŸš èŸ© èŸ± èŸ¹ èŸŸ è¿ è¿
+ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿ è¿Š è¿ª è¿« è¿° è¿· è¿œ é é é é é é é é é é é é é é é  é¢ éž é» éŒ é é é é é­ é® éµ é¿ é é é£ éŠ éª é® é± é» é é éš é­ éœ é é
+ é
+ é
+ é
+· é
+ž é é é é é é é é é é é é é é¢ éŠ é± é» é é é¢ é­ é¶ é é é
+ é é é¡ éŠ é® éº é é é­ é¿ éš éª é­ é® éŽ é· é¹ é» é é é é é® é² é² é³ éŽ éµ é¶ é» é¿ é é é é
+ é é é é é¢ é€ é© éª éµ éµ é¶ é· é é é é é éŸ é é é
+ é éš éª é¯ é³ é¶ é· éŸ é é é é é² éž é¹ é é é é é  é¢ é© éŒ é é éŠ é© é³ é¡µ é¡¶ é¡¹ é¡¹ é¡º é¡» é¡œ é¡œ é¡Ÿ é¡¿ é¢ é¢ é¢ é¢ é¢ é¢ é¢ é£ é£ é£ é£ é£ é€ é¥­ é¥® é¥° é¥± é¥Œ éŠ éŠ éŠ éŠš é©¬ é©± é©¶ é©» é©Ÿ éª éª éª éª éª€ éªš é« é¬Œ é­ é­
+ é­ é±Œ é² é² éž éž£ éž­ éž¿ é¹
+ é¹€ é¹° é¹¿ éºŠ éº» é» é» é» é» éŒ éŒ  éŒ» éœ éœ¿ éŸ éŸ éŸ",
+-		3: "äŸ£ å£ å å å å € å¥ å·œ åœ æ· æ€ æ¥ æ¥  æ» ç ç« ç² çŠ ç² çº¿ è é¯ é é é é­",
+-		5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z",
+-	},
+-	"zh_Hant": {
+-		0: "äž äž äž äž äž äž äž äž äž äž äž äž äž äž äž äžŠ äž­ äž² äžž äž¹ äž» ä¹ ä¹
+ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹ ä¹Ÿ äº äº äº äº äº äº äº äº äº äº äº äº äº¡ äº€ äºŠ äºš äº« äº¬ äº® äºº ä» ä» ä» ä» ä» ä» ä» ä» ä» ä» ä»£ ä»£ ä»€ ä»¥ ä»° ä»² ä»¶ ä»» ä»œ äŒ äŒ äŒ äŒ äŒ äŒ äŒ¯ äŒ° äŒŽ äŒž äŒŒ äŒœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ äœ  äœ© äœ³ äœ¿ äŸ äŸ äŸ äŸ äŸ¯ äŸµ äŸ¿ ä¿ ä¿ ä¿ ä¿ ä¿ ä¿ ä¿ ä¿  ä¿¡ ä¿® ä¿± ä¿Ÿ å å å å å å å å« åŒ å å å å å å¥ åŽ åŽ åµ å¶ å· å å å¢ å£ å² å³ å· å» åŸ å
+ å å å§ å¹ å å å å åª å
+ å
+ å
+ å
+ å
+
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+ å
+¥ å
+§ å
+§ å
+š å
+© å
+« å
+« å
+¬ å
+­ å
+® å
+± å
+µ å
+µ å
+¶ å
+· å
+ž å
+Œ å å å å  å¬ å° å· å å å å¡ å° å± åº åœ å å å å å å å€ å¥ å© åª å° å¶ å· åº å» å å å å© åª å¯ å² åµ å å å å å å å  å© å© åª å« å å å å å å å å å¢ å€ åµ åž å¿ å
+ å å å å¹ å å å å å å å å å å å å å¡ å° å± å³ å· å» å å å å å­ å² å» å å å å å å å å å£ å£ å€ å¥ åŠ å« å« å¬ å­ å¯ å° å² å³ åž å å å å å å å å å å å å å å å å å åŠ å§ å« å³ åµ åž å¹ åŸ å å å å å¢ åš å³ åµ åŒ åœ å å åŠ å§ åª å¬ å± å å å å å å å å¡ å¥ åŠ å© åª å­ å² å å å¬ å® å¯ å± å· åž å å å å å¡ å¥ åŠ åª å å å å å å å å å¬ å® åµ å å åš å¯ å å å å åŽ å» å¿ åš åŽ å åŽ å å å å  å° åº å å å å å å å å å åš å­ å° åŸ å å å å å¡ å€ åŠ åª å å å å å å å å· å¹ åº å  å 
+ å  å ¡ å ª å ± å Ž å¡ å¡ å¡ å¡ å¡« å¡µ å¢ å¢ å¢š å¢® å£ å£ å£ å£ å£¢ å£« å£¯ å£œ å€ å€ å€ å€ å€ å€  å€¢ å€¥ å€§ å€© å€© å€ª å€« å€® å€± å€· å€ž å€Ÿ å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥ å¥§ å¥ª å¥® å¥³ å¥Ž å¥¶ å¥¹ å¥œ åŠ åŠ åŠ¥ åŠš åŠ® åŠ³ åŠ¹ åŠ» å§ å§ å§ å§ å§ å§ å§ å§¿ åš åš åš å© å© å© å©Š åª åªœ å« å«© å­ å­ å­ å­ å­ å­ å­£ å­€ å­© å­« å­ž å® å®
+ å® å® å® å® å® å® å® å® å® å® å® å® å® å® å®¢ å®¢ å®£ å®€ å®® å®³ å®¶ å®¹ å®¿ å¯ å¯ å¯ å¯ å¯ å¯ å¯ å¯¢ å¯Š å¯Š å¯§ å¯š å¯© å¯« å¯¬ å¯® å¯¶ å° å° å° å° å° å° å° å° å° å° å° å° å° å°€ å°± å°º å°Œ å°Ÿ å± å± å±
+ å± å± å± å± å±  å±€ å±¬ å±± å²¡ å²© å²ž å³° å³¶ å³œ åŽ åŽ åŽŽ åµ å¶º å· å· å·¡ å·¥ å·¥ å·Š å·§ å·š å·« å·® å·± å·² å·Ž å·· åž åž åž åž åž åž åž¥ åž« åž­ åž³ åž¶ åžž åžœ å¹
+ å¹ å¹£ å¹« å¹² å¹² å¹³ å¹Ž å¹ž å¹¹ å¹» å¹» å¹Œ å¹œ å¹Ÿ åº åº åº åº åº åº åºŠ åº§ åº« åº­ åº· åºž å» å» å»  å»¢ å»£ å»³ å»¶ å»· å»º åŒ åŒ åŒ åŒ åŒ åŒ åŒŠ åŒ± åŒµ åŒ· åœ åœ åœ åœ åœ åœ¢ åœ¥ åœ© åœ¬ åœ­ åœ° åœ± åœ¹ åœŒ åŸ åŸ åŸ
+ åŸ åŸ åŸ åŸ åŸ åŸ åŸ åŸ åŸ åŸ© åŸ® åŸµ åŸ· åŸ¹ å¿ å¿
+ å¿ å¿ å¿ å¿ å¿ å¿ å¿  å¿« å¿µ å¿œ æ æ æ æ æ æ¡ æ¥ æ§ æš æª æ æ æ¢ æ¥ æš æ© æ­ æ¯ æ° æ
+ æ æ æ æ  æš æ² æ¶ æ
+ æ æ æ  æ¡ æ± æ³ æ¹ æ æ æ æ æ æ æ æ
+ æ
+ æ
+ æ
+ æ
+¢ æ
+£ æ
+§ æ
+® æ
+° æ
+¶ æ
+Ÿ æ æ æ æ² æ¶ æŸ æ æ æ¶ æ· æŒ æ æ æ æ æ æ æ æª æ° æ² æŽ æ¶ æ¿ æ¿ æ æ æ æ æ æ æ æ æ£ æ¥ æ­ æ¯ æ¹ æŸ æŸ æ¿ æ æ æ æ æ æ æ æ« æ¬ æ± æµ æ¹ æœ æ æ æ æ æ æ æ æ æ æ¬ æ³ æŒ æŸ æ¿ æ æ æ æ æ æª æ¯ æº æ æ æš æ² æ· æ æ æ æ æ æ æ¡ æ¢ æ¥ æ§ æš æª æ æ æ æ æ æ¡ æ® æŽ æ æ æ æ æ¬ æ­ æ¶ æ æ© æž æ æ æ æ£ æ¥ æ­ æŸ æ¿ æ æ æ æ æ æ æ æ æ  æŠ æ¬ æŽ æº æŸ æ æ¯ æ¶ æ¹ æ» æŸ æ¿ æ
+ æ æ æ æ æ æ æ æ æ æ¢ æ£ æŠ æ¬ æŽ æµ æž æ æ æ æ æ¯ æ° æ· æ¹ æŒ æœ æ æ
+ æ æ æ æ¢ æ¥ æŠ æ© æ­ æº æ æ æ æ æ æ æ æ æ  æ¥ æš æ­ æ¯ æ æ æ æ æš æ® æ¯ æŽ æ¶ æº æ æ æ æ« æŽ æ æ æ° æ² æŽ æž æŒ æŸ æŸ æ¿ æ æ æ æ æ æ æ æ æ æ æš æª æª æ« æ¬ æ­ æ± æµ æ æ æ æ æ æ æ¯ æ¯ æ° æ± æŸ æ¿ æ æ æ æ æ¶ æ æ æ æ æ¥ æ¬ æ¯ æ³ æŽ æ ¡ æ ž æ ¹ æ Œ æ¡ æ¡ æ¡ æ¡ æ¢ æ¢
+ æ¢ æ¢š æ¢¯ æ¢° æ¢µ æ£ æ£ æ£ æ£ æ£ æ£® æ€
+ æ€ æ€° æ¥ æ¥ æ¥ æ¥­ æ¥µ æŠ æŠ æŠ® æ§ æ§ æš æš æš æš æš¡ æš£ æš¹ æ© æ© æ©« æª æª æª¢ æ¬ æ¬ æ¬¡ æ¬£ æ¬² æ¬º æ¬œ æ¬Ÿ æ­ æ­ æ­ æ­¡ æ­¡ æ­¢ æ­£ æ­€ æ­¥ æ­Š æ­² æ­· æ­ž æ­» æ® æ® æ®µ æ®º æ®Œ æ¯ æ¯
+ æ¯ æ¯ æ¯ æ¯ æ¯ æ¯« æ° æ° æ°£ æ°Ž æ°ž æ± æ± æ± æ± æ± æ±  æ±¡ æ±ª æ±¶ æ±º æ±œ æ² æ² æ² æ² æ² æ² æ²³ æ²¹ æ²» æ²¿ æ³ æ³ æ³ æ³ æ³¡ æ³¢ æ³¥ æ³š æ³° æ³³ æŽ æŽ æŽ æŽ æŽ© æŽª æŽ² æŽ» æŽœ æŽŸ æµ æµŠ æµ© æµª æµ® æµ· æ¶ æ¶ æ¶ æ¶ æ¶¯ æ¶² æ¶µ æ¶Œ æ· æ· æ·¡ æ·š æ·± æ·· æ·º æž
+ æž æž¡ æž¬ æž¯ æžž æ¹ æ¹¯ æº æº æº æºª æº« æ» æ»
+ æ» æ» æ»Ž æ»Ÿ æ»¿ æŒ æŒ æŒ æŒ  æŒ¢ æŒ« æŒ² æŒž æœ æœ æœ æœ® æŸ€ æŸ³ æ¿ æ¿ æ¿ æ¿€ æ¿« æ¿± ç ç£ ç« ç° çœ ç ç® çž çº ç ç ç€ ç¡ çŠ ç¶ ç
+ ç
+ ç
+§ ç
+© ç ç ç± ç ç ç ç ç ç ç çª ç¬ ç­ çµ ç¶ çž çº çœ çŸ ç ç ç ç ç ç ç ç  ç§ ç© ç² ç¹ çœ ç§ ç¯ ç ç ç ç ç  çŒ ç ç ç¶ ç ç
+ ç çš ç² çž ç» ç ç ç ç ç© ç« ç² ç» ç ç ç  ç­ çŸ ç ç ç çª çŽ ç ç ç ç ç€ çª ç° ç° ç çŠ ç¶ ç ç ç ç ç¢ çš ç° ç° ç± ç² ç³ ç· çž ç ç ç¢ ç¥ çª ç« ç° ç¶ ç ç ç çŒ ç
+ ç ç çŽ ç ç ç¡ ç» ç» çŒ çœ çŸ ç ç ç ç® ç ç ç ç ç ç¡ ç£ ç€ ç§ ç® ç² çŽ çž çŒ çŸ ç ç ç ç ç  çŒ çŸ ç ç¡ ç£ ç§ ç­ ç ç£ ç¥ ç­ ç³ ç  ç  ç  ç ² ç Ž ç¡¬ ç¢ ç¢ ç¢ ç¢§ ç¢© ç¢° ç¢º ç¢Œ ç£ ç£š ç£¯ ç€ ç€ ç€º ç€Ÿ ç¥ ç¥ ç¥ ç¥ ç¥¥ ç¥š çŠ çŠ çŠ çŠª çŠ® ç§ ç§ ç§ ç§ ç§ ç§ ç§ ç§€ ç§Š ç§» çš
+ çš çš çš® çš± çš¿ ç© ç© ç© ç©© ç©¶ ç©¹ ç©º ç©¿ çª çª çª© çª® ç« ç« ç« ç«  ç«¥ ç«¯ ç«¶ ç«¹ ç¬ ç¬ ç¬Š ç¬š ç¬¬ ç­ ç­ ç­ ç­ ç­ ç® ç® ç®¡ ç®­ ç®± ç¯ ç¯ ç¯ ç¯ ç°¡ ç°« ç°œ ç°¿ ç± ç± ç± ç±³ ç² ç² ç²µ ç²Ÿ ç³ ç³ ç³ ç³» ç³Ÿ çŽ çŽ çŽ
+ çŽ çŽ çŽ çŽ çŽ çŽ çŽ çŽ  çŽ¢ çŽ« çŽ¯ çŽ° çŽ¹ çµ çµ çµ çµ çµ¡ çµŠ çµ± çµ² ç¶ ç¶ ç¶  ç¶­ ç¶± ç¶² ç· ç· ç· ç·£ ç·š ç·© ç·¬ ç·¯ ç·Ž çž£ çž® çž± çžœ çžŸ ç¹ ç¹ ç¹ ç¹ ç¹ª ç¹³ ç¹Œ çº çŒž çŒº çœ çœª çœ® çœ° çœ² çœµ çœ· çŸ
+ çŸ çŸ çŸ çŸ€ çŸ© çŸœ ç¿ ç¿ ç¿ ç¿° ç¿¹ ç¿» ç¿Œ è è è è
+ è è è è è³ è¶ è è è è è¯ è° è² è· èœ è è è¡ è¥ è© è¯ è² è è è è è¡ èž èœ è è« è
+ è
+ è
+Š è
+° è
+³ è
+¿ èœ è è è£ è¥ èš èª è­ è³ èŽ èº è è è è è è è è è è èª è¬ è¹ èŠ è¯ è² èŸ è è¬ è± è³ è¥ èŠ è± è
+ è« è² è¶ è è è· è è è è« è è© è¯ è² è è è¬ èœ è è è è¡ è è è² èŒ è è® è è¡ è£ è­ è èŠ è© èª è è è è è€ è¥ è è è­ è è è è è§ è è è è è¶ è è¢ è² è¹ è  è » è¡ è¡ è¡ è¡ è¡ è¡ è¡¡ è¡£ è¡š è¢ è¢« è£ è£ è£ è£ è£ è£¡ è£œ è€ è€² è¥¿ èŠ èŠ èŠ èŠ èŠ èŠª èŠº èŠœ è§ è§ è§£ è§ž èš èš èš èš èš èš èš èš èš¥ èšª èš­ èš± èšŽ èš» èšŒ è© è© è©¢ è©Š è©© è©± è©± è©² è©³ èª èª èª èª èª èª èª  èª€ èªª èª° èª² èªŒ èª¿ è« è« è« è« è«ž è«º è«Ÿ è¬ è¬ è¬ è¬ è­ è­ è­ è­Š è­¯ è­° è­· è­œ è® è® è® è® è°· è± è± è± è±¡ è±ª è±¬ è² è² è² è² è²  è²  è²¡ è²¢ è²š è²ª è²ª è²« è²¬ è²Ž è²· è²» è²Œ è³ è³ è³ è³ è³ è³ è³¢ è³¢ è³£ è³€ è³Š è³ª è³­ è³Ž è³º è³Œ è³œ èŽ èŽ èŽ èµ€ èµ« èµ° èµ· è¶
+ è¶ è¶ è¶ è¶£ è¶š è¶³ è· è· è· è· è· è·¡ è·¯ è·³ èž èž¢ è¹ è¹€ èº èº« èº² è» è» è» è» è» èŒ èŒ èŒ èŒ èŒ èŒ èŒ© èŒª èŒ¯ èŒž èœ èœ èŸ èŸŠ èŸš èŸ­ èŸ¯ èŸ± èŸ² è¿
+ è¿ è¿ è¿Š è¿ª è¿« è¿° è¿Ž è¿· è¿œ é é é é é é é é é é é é é é  é¢ é£ é± é² éž éŒ é é é é é é é é é é é é  é© é­ é® é² é· éž éº é¿ é¿ é é é é é é£ éŠ éª é± é éš é­ éµ éœ é é é­ é° é
+ é
+ é
+· é
+ž é é é é« é é é é é é é é é é£ éŽ é é é é³ é· é éŒ é é¢ éŠ é« é¯ é éµ éŸ é é é® é¡ é éµ é é· é é é é é é é£ é± é é é é é¡ é² é» é¿ é é é é é¢ é¢ é£ é€ éª é° é³ éµ éµ é¶ é· éž éœ é é é é é é éš éª é± é» é é é
+ é é é é é é¢ é£ éš éª é² é¶ é· é» é é é é§ é² éž é¹ é é é é é é é  é¢ é© éŒ é é é é é³ é» é¿ é  é  é 
+ é  é  é  é  é  é  é  é ­ é » é¡ é¡ é¡ é¡ é¡ é¡ é¡§ é¡¯ é¢š é£ é£ é£ é£¯ é£² é£œ é£Ÿ é€
+ é€ é€ é€ é€š éŠ éŠ éŠ¬ é§ é§ é§ éš éš éš· é©
+ é© é© éªš é« é« é«® é¬ é¬¥ é¬§ é¬± é¬Œ é­ é­ é­
+ é­ é­ é­¯ é®® é³¥ é³³ é³Ž éŽ» éµ é·¹ é¹¿ éº éº¥ éºµ éº» éºŒ é» é» é» é» é» é»š éŒ éŒ  éŒ» éœ éœ éœ éœ¡ éŸ éŸ",
+-		3: "äŒ äŸ¶ å
+ å
+¹ å« å³ å å  å¶ å € å¢ å¥¥ å­ å³ å·œ åœ æ¥ æžŸ çŠ ç ç³ ç ç« ç€ è è èš è© è éŽ",
+-		5: "äž äž äž äž äž äž äžŠ äž² ä¹ ä¹Ÿ äº äº­ å å åµ å å å³ å· å» å¢ åŽ å å å»³",
+-	},
+-	"zu": {
+-		0: "a b bh c ch d dl dy e f g gc gq gx h hh hl i j k kh kl kp l m n nc ngc ngq ngx nhl nk nkc nkq nkx nq ntsh nx ny o p ph q qh r rh s sh t th tl ts tsh u v w x xh y z",
+-		3: "Ã¡ Ã  Ä Ã¢ Ã¥ Ã€ Ã£ Ä ÃŠ Ã§ Ã© Ãš Ä Ãª Ã« Ä Ã­ Ã¬ Ä­ Ã® Ã¯ Ä« Ã± Ã³ Ã² Å ÃŽ Ã¶ Ãž Å Å Ãº Ã¹ Å­ Ã» ÃŒ Å« Ã¿",
+-		4: "a b c d e f g h i j k l m n o p q r s t u v w x y z",
+-	},
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/colcmp.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/colcmp.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/colcmp.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/colcmp.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,528 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"bytes"
+-	"exp/norm"
+-	"flag"
+-	"fmt"
+-	"io"
+-	"log"
+-	"os"
+-	"runtime/pprof"
+-	"sort"
+-	"strconv"
+-	"strings"
+-	"text/template"
+-	"time"
+-)
+-
+-var (
+-	doNorm  = flag.Bool("norm", false, "normalize input strings")
+-	cases   = flag.Bool("case", false, "generate case variants")
+-	verbose = flag.Bool("verbose", false, "print results")
+-	debug   = flag.Bool("debug", false, "output debug information")
+-	locale  = flag.String("locale", "en_US", "the locale to use. May be a comma-separated list for some commands.")
+-	col     = flag.String("col", "go", "collator to test")
+-	gold    = flag.String("gold", "go", "collator used as the gold standard")
+-	usecmp  = flag.Bool("usecmp", false,
+-		`use comparison instead of sort keys when sorting.  Must be "test", "gold" or "both"`)
+-	cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
+-	exclude    = flag.String("exclude", "", "exclude errors that contain any of the characters")
+-	limit      = flag.Int("limit", 5000000, "maximum number of samples to generate for one run")
+-)
+-
+-func failOnError(err error) {
+-	if err != nil {
+-		log.Panic(err)
+-	}
+-}
+-
+-// Test holds test data for testing a locale-collator pair.
+-// Test also provides functionality that is commonly used by the various commands.
+-type Test struct {
+-	ctxt    *Context
+-	Name    string
+-	Locale  string
+-	ColName string
+-
+-	Col        Collator
+-	UseCompare bool
+-
+-	Input    []Input
+-	Duration time.Duration
+-
+-	start time.Time
+-	msg   string
+-	count int
+-}
+-
+-func (t *Test) clear() {
+-	t.Col = nil
+-	t.Input = nil
+-}
+-
+-const (
+-	msgGeneratingInput = "generating input"
+-	msgGeneratingKeys  = "generating keys"
+-	msgSorting         = "sorting"
+-)
+-
+-var lastLen = 0
+-
+-func (t *Test) SetStatus(msg string) {
+-	if *debug || *verbose {
+-		fmt.Printf("%s: %s...\n", t.Name, msg)
+-	} else if t.ctxt.out != nil {
+-		fmt.Fprint(t.ctxt.out, strings.Repeat(" ", lastLen))
+-		fmt.Fprint(t.ctxt.out, strings.Repeat("\b", lastLen))
+-		fmt.Fprint(t.ctxt.out, msg, "...")
+-		lastLen = len(msg) + 3
+-		fmt.Fprint(t.ctxt.out, strings.Repeat("\b", lastLen))
+-	}
+-}
+-
+-// Start is used by commands to signal the start of an operation.
+-func (t *Test) Start(msg string) {
+-	t.SetStatus(msg)
+-	t.count = 0
+-	t.msg = msg
+-	t.start = time.Now()
+-}
+-
+-// Stop is used by commands to signal the end of an operation.
+-func (t *Test) Stop() (time.Duration, int) {
+-	d := time.Now().Sub(t.start)
+-	t.Duration += d
+-	if *debug || *verbose {
+-		fmt.Printf("%s: %s done. (%.3fs /%dK ops)\n", t.Name, t.msg, d.Seconds(), t.count/1000)
+-	}
+-	return d, t.count
+-}
+-
+-// generateKeys generates sort keys for all the inputs.
+-func (t *Test) generateKeys() {
+-	for i, s := range t.Input {
+-		b := t.Col.Key(s)
+-		t.Input[i].key = b
+-		if *debug {
+-			fmt.Printf("%s (%X): %X\n", string(s.UTF8), s.UTF16, b)
+-		}
+-	}
+-}
+-
+-// Sort sorts the inputs. It generates sort keys if this is required by the
+-// chosen sort method.
+-func (t *Test) Sort() (tkey, tsort time.Duration, nkey, nsort int) {
+-	if *cpuprofile != "" {
+-		f, err := os.Create(*cpuprofile)
+-		failOnError(err)
+-		pprof.StartCPUProfile(f)
+-		defer pprof.StopCPUProfile()
+-	}
+-	if t.UseCompare || t.Col.Key(t.Input[0]) == nil {
+-		t.Start(msgSorting)
+-		sort.Sort(&testCompare{*t})
+-		tsort, nsort = t.Stop()
+-	} else {
+-		t.Start(msgGeneratingKeys)
+-		t.generateKeys()
+-		t.count = len(t.Input)
+-		tkey, nkey = t.Stop()
+-		t.Start(msgSorting)
+-		sort.Sort(t)
+-		tsort, nsort = t.Stop()
+-	}
+-	return
+-}
+-
+-func (t *Test) Swap(a, b int) {
+-	t.Input[a], t.Input[b] = t.Input[b], t.Input[a]
+-}
+-
+-func (t *Test) Less(a, b int) bool {
+-	t.count++
+-	return bytes.Compare(t.Input[a].key, t.Input[b].key) == -1
+-}
+-
+-func (t Test) Len() int {
+-	return len(t.Input)
+-}
+-
+-type testCompare struct {
+-	Test
+-}
+-
+-func (t *testCompare) Less(a, b int) bool {
+-	t.count++
+-	return t.Col.Compare(t.Input[a], t.Input[b]) == -1
+-}
+-
+-type testRestore struct {
+-	Test
+-}
+-
+-func (t *testRestore) Less(a, b int) bool {
+-	return t.Input[a].index < t.Input[b].index
+-}
+-
+-// GenerateInput generates input phrases for the locale tested by t.
+-func (t *Test) GenerateInput() {
+-	t.Input = nil
+-	if t.ctxt.lastLocale != t.Locale {
+-		gen := phraseGenerator{}
+-		gen.init(t.Locale)
+-		t.SetStatus(msgGeneratingInput)
+-		t.ctxt.lastInput = nil // allow the previous value to be garbage collected.
+-		t.Input = gen.generate(*doNorm)
+-		t.ctxt.lastInput = t.Input
+-		t.ctxt.lastLocale = t.Locale
+-	} else {
+-		t.Input = t.ctxt.lastInput
+-		for i := range t.Input {
+-			t.Input[i].key = nil
+-		}
+-		sort.Sort(&testRestore{*t})
+-	}
+-}
+-
+-// Context holds all tests and settings translated from command line options.
+-type Context struct {
+-	test []*Test
+-	last *Test
+-
+-	lastLocale string
+-	lastInput  []Input
+-
+-	out io.Writer
+-}
+-
+-func (ts *Context) Printf(format string, a ...interface{}) {
+-	ts.assertBuf()
+-	fmt.Fprintf(ts.out, format, a...)
+-}
+-
+-func (ts *Context) Print(a ...interface{}) {
+-	ts.assertBuf()
+-	fmt.Fprint(ts.out, a...)
+-}
+-
+-// assertBuf sets up an io.Writer for ouput, if it doesn't already exist.
+-// In debug and verbose mode, output is buffered so that the regular output
+-// will not interfere with the additional output.  Otherwise, output is
+-// written directly to stdout for a more responsive feel.
+-func (ts *Context) assertBuf() {
+-	if ts.out != nil {
+-		return
+-	}
+-	if *debug || *verbose {
+-		ts.out = &bytes.Buffer{}
+-	} else {
+-		ts.out = os.Stdout
+-	}
+-}
+-
+-// flush flushes the contents of ts.out to stdout, if it is not stdout already.
+-func (ts *Context) flush() {
+-	if ts.out != nil {
+-		if _, ok := ts.out.(io.ReadCloser); !ok {
+-			io.Copy(os.Stdout, ts.out.(io.Reader))
+-		}
+-	}
+-}
+-
+-// parseTests creates all tests from command lines and returns
+-// a Context to hold them.
+-func parseTests() *Context {
+-	ctxt := &Context{}
+-	colls := strings.Split(*col, ",")
+-	for _, loc := range strings.Split(*locale, ",") {
+-		loc = strings.TrimSpace(loc)
+-		for _, name := range colls {
+-			name = strings.TrimSpace(name)
+-			col := getCollator(name, loc)
+-			ctxt.test = append(ctxt.test, &Test{
+-				ctxt:       ctxt,
+-				Locale:     loc,
+-				ColName:    name,
+-				UseCompare: *usecmp,
+-				Col:        col,
+-			})
+-		}
+-	}
+-	return ctxt
+-}
+-
+-func (c *Context) Len() int {
+-	return len(c.test)
+-}
+-
+-func (c *Context) Test(i int) *Test {
+-	if c.last != nil {
+-		c.last.clear()
+-	}
+-	c.last = c.test[i]
+-	return c.last
+-}
+-
+-func parseInput(args []string) []Input {
+-	input := []Input{}
+-	for _, s := range args {
+-		rs := []rune{}
+-		for len(s) > 0 {
+-			var r rune
+-			r, _, s, _ = strconv.UnquoteChar(s, '\'')
+-			rs = append(rs, r)
+-		}
+-		s = string(rs)
+-		if *doNorm {
+-			s = norm.NFC.String(s)
+-		}
+-		input = append(input, makeInputString(s))
+-	}
+-	return input
+-}
+-
+-// A Command is an implementation of a colcmp command.
+-type Command struct {
+-	Run   func(cmd *Context, args []string)
+-	Usage string
+-	Short string
+-	Long  string
+-}
+-
+-func (cmd Command) Name() string {
+-	return strings.SplitN(cmd.Usage, " ", 2)[0]
+-}
+-
+-var commands = []*Command{
+-	cmdSort,
+-	cmdBench,
+-	cmdRegress,
+-}
+-
+-const sortHelp = `
+-Sort sorts a given list of strings.  Strings are separated by whitespace.
+-`
+-
+-var cmdSort = &Command{
+-	Run:   runSort,
+-	Usage: "sort <string>*",
+-	Short: "sort a given list of strings",
+-	Long:  sortHelp,
+-}
+-
+-func runSort(ctxt *Context, args []string) {
+-	input := parseInput(args)
+-	if len(input) == 0 {
+-		log.Fatalf("Nothing to sort.")
+-	}
+-	if ctxt.Len() > 1 {
+-		ctxt.Print("COLL  LOCALE RESULT\n")
+-	}
+-	for i := 0; i < ctxt.Len(); i++ {
+-		t := ctxt.Test(i)
+-		t.Input = append(t.Input, input...)
+-		t.Sort()
+-		if ctxt.Len() > 1 {
+-			ctxt.Printf("%-5s %-5s  ", t.ColName, t.Locale)
+-		}
+-		for _, s := range t.Input {
+-			ctxt.Print(string(s.UTF8), " ")
+-		}
+-		ctxt.Print("\n")
+-	}
+-}
+-
+-const benchHelp = `
+-Bench runs a benchmark for the given list of collator implementations.
+-If no collator implementations are given, the go collator will be used.
+-`
+-
+-var cmdBench = &Command{
+-	Run:   runBench,
+-	Usage: "bench",
+-	Short: "benchmark a given list of collator implementations",
+-	Long:  benchHelp,
+-}
+-
+-func runBench(ctxt *Context, args []string) {
+-	ctxt.Printf("%-7s %-5s %-6s %-24s %-24s %-5s %s\n", "LOCALE", "COLL", "N", "KEYS", "SORT", "AVGLN", "TOTAL")
+-	for i := 0; i < ctxt.Len(); i++ {
+-		t := ctxt.Test(i)
+-		ctxt.Printf("%-7s %-5s ", t.Locale, t.ColName)
+-		t.GenerateInput()
+-		ctxt.Printf("%-6s ", fmt.Sprintf("%dK", t.Len()/1000))
+-		tkey, tsort, nkey, nsort := t.Sort()
+-		p := func(dur time.Duration, n int) {
+-			s := ""
+-			if dur > 0 {
+-				s = fmt.Sprintf("%6.3fs ", dur.Seconds())
+-				if n > 0 {
+-					s += fmt.Sprintf("%15s", fmt.Sprintf("(%4.2f ns/op)", float64(dur)/float64(n)))
+-				}
+-			}
+-			ctxt.Printf("%-24s ", s)
+-		}
+-		p(tkey, nkey)
+-		p(tsort, nsort)
+-
+-		total := 0
+-		for _, s := range t.Input {
+-			total += len(s.key)
+-		}
+-		ctxt.Printf("%-5d ", total/t.Len())
+-		ctxt.Printf("%6.3fs\n", t.Duration.Seconds())
+-		if *debug {
+-			for _, s := range t.Input {
+-				fmt.Print(string(s.UTF8), " ")
+-			}
+-			fmt.Println()
+-		}
+-	}
+-}
+-
+-const regressHelp = `
+-Regress runs a monkey test by comparing the results of randomly generated tests
+-between two implementations of a collator. The user may optionally pass a list
+-of strings to regress against instead of the default test set.
+-`
+-
+-var cmdRegress = &Command{
+-	Run:   runRegress,
+-	Usage: "regress -gold=<col> -test=<col> [string]*",
+-	Short: "run a monkey test between two collators",
+-	Long:  regressHelp,
+-}
+-
+-const failedKeyCompare = `
+-%s:%d: incorrect comparison result for input:
+-    a:   %q (%.4X)
+-    key: %s
+-    b:   %q (%.4X)
+-    key: %s
+-    Compare(a, b) = %d; want %d.
+-
+-  gold keys:
+-	a:   %s
+-	b:   %s
+-`
+-
+-const failedCompare = `
+-%s:%d: incorrect comparison result for input:
+-    a:   %q (%.4X)
+-    b:   %q (%.4X)
+-    Compare(a, b) = %d; want %d.
+-`
+-
+-func keyStr(b []byte) string {
+-	buf := &bytes.Buffer{}
+-	for _, v := range b {
+-		fmt.Fprintf(buf, "%.2X ", v)
+-	}
+-	return buf.String()
+-}
+-
+-func runRegress(ctxt *Context, args []string) {
+-	input := parseInput(args)
+-	for i := 0; i < ctxt.Len(); i++ {
+-		t := ctxt.Test(i)
+-		if len(input) > 0 {
+-			t.Input = append(t.Input, input...)
+-		} else {
+-			t.GenerateInput()
+-		}
+-		t.Sort()
+-		count := 0
+-		gold := getCollator(*gold, t.Locale)
+-		for i := 1; i < len(t.Input); i++ {
+-			ia := t.Input[i-1]
+-			ib := t.Input[i]
+-			if bytes.IndexAny(ib.UTF8, *exclude) != -1 {
+-				i++
+-				continue
+-			}
+-			if bytes.IndexAny(ia.UTF8, *exclude) != -1 {
+-				continue
+-			}
+-			goldCmp := gold.Compare(ia, ib)
+-			if cmp := bytes.Compare(ia.key, ib.key); cmp != goldCmp {
+-				count++
+-				a := string(ia.UTF8)
+-				b := string(ib.UTF8)
+-				fmt.Printf(failedKeyCompare, t.Locale, i-1, a, []rune(a), keyStr(ia.key), b, []rune(b), keyStr(ib.key), cmp, goldCmp, keyStr(gold.Key(ia)), keyStr(gold.Key(ib)))
+-			} else if cmp := t.Col.Compare(ia, ib); cmp != goldCmp {
+-				count++
+-				a := string(ia.UTF8)
+-				b := string(ib.UTF8)
+-				fmt.Printf(failedCompare, t.Locale, i-1, a, []rune(a), b, []rune(b), cmp, goldCmp)
+-			}
+-		}
+-		if count > 0 {
+-			ctxt.Printf("Found %d inconsistencies in %d entries.\n", count, t.Len()-1)
+-		}
+-	}
+-}
+-
+-const helpTemplate = `
+-colcmp is a tool for testing and benchmarking collation
+-
+-Usage: colcmp command [arguments]
+-
+-The commands are:
+-{{range .}}
+-    {{.Name | printf "%-11s"}} {{.Short}}{{end}}
+-
+-Use "col help [topic]" for more information about that topic.
+-`
+-
+-const detailedHelpTemplate = `
+-Usage: colcmp {{.Usage}}
+-
+-{{.Long | trim}}
+-`
+-
+-func runHelp(args []string) {
+-	t := template.New("help")
+-	t.Funcs(template.FuncMap{"trim": strings.TrimSpace})
+-	if len(args) < 1 {
+-		template.Must(t.Parse(helpTemplate))
+-		failOnError(t.Execute(os.Stderr, &commands))
+-	} else {
+-		for _, cmd := range commands {
+-			if cmd.Name() == args[0] {
+-				template.Must(t.Parse(detailedHelpTemplate))
+-				failOnError(t.Execute(os.Stderr, cmd))
+-				os.Exit(0)
+-			}
+-		}
+-		log.Fatalf("Unknown command %q. Run 'colcmp help'.", args[0])
+-	}
+-	os.Exit(0)
+-}
+-
+-func main() {
+-	flag.Parse()
+-	log.SetFlags(0)
+-
+-	ctxt := parseTests()
+-
+-	if flag.NArg() < 1 {
+-		runHelp(nil)
+-	}
+-	args := flag.Args()[1:]
+-	if flag.Arg(0) == "help" {
+-		runHelp(args)
+-	}
+-	for _, cmd := range commands {
+-		if cmd.Name() == flag.Arg(0) {
+-			cmd.Run(ctxt, args)
+-			ctxt.flush()
+-			return
+-		}
+-	}
+-	runHelp(flag.Args())
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/col.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/col.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/col.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/col.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,95 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"exp/locale/collate"
+-	"log"
+-	"unicode/utf16"
+-)
+-
+-// Input holds an input string in both UTF-8 and UTF-16 format.
+-type Input struct {
+-	index int // used for restoring to original random order
+-	UTF8  []byte
+-	UTF16 []uint16
+-	key   []byte // used for sorting
+-}
+-
+-func (i Input) String() string {
+-	return string(i.UTF8)
+-}
+-
+-func makeInput(s8 []byte, s16 []uint16) Input {
+-	return Input{UTF8: s8, UTF16: s16}
+-}
+-
+-func makeInputString(s string) Input {
+-	return Input{
+-		UTF8:  []byte(s),
+-		UTF16: utf16.Encode([]rune(s)),
+-	}
+-}
+-
+-// Collator is an interface for architecture-specific implementations of collation.
+-type Collator interface {
+-	// Key generates a sort key for the given input.  Implemenations
+-	// may return nil if a collator does not support sort keys.
+-	Key(s Input) []byte
+-
+-	// Compare returns -1 if a < b, 1 if a > b and 0 if a == b.
+-	Compare(a, b Input) int
+-}
+-
+-// CollatorFactory creates a Collator for a given locale.
+-type CollatorFactory struct {
+-	name        string
+-	makeFn      func(locale string) (Collator, error)
+-	description string
+-}
+-
+-var collators = []CollatorFactory{}
+-
+-// AddFactory registers f as a factory for an implementation of Collator.
+-func AddFactory(f CollatorFactory) {
+-	collators = append(collators, f)
+-}
+-
+-func getCollator(name, locale string) Collator {
+-	for _, f := range collators {
+-		if f.name == name {
+-			col, err := f.makeFn(locale)
+-			if err != nil {
+-				log.Fatal(err)
+-			}
+-			return col
+-		}
+-	}
+-	log.Fatalf("collator of type %q not found", name)
+-	return nil
+-}
+-
+-// goCollator is an implemention of Collator using go's own collator.
+-type goCollator struct {
+-	c   *collate.Collator
+-	buf collate.Buffer
+-}
+-
+-func init() {
+-	AddFactory(CollatorFactory{"go", newGoCollator, "Go's native collator implementation."})
+-}
+-
+-func newGoCollator(locale string) (Collator, error) {
+-	c := &goCollator{c: collate.New(locale)}
+-	return c, nil
+-}
+-
+-func (c *goCollator) Key(b Input) []byte {
+-	return c.c.Key(&c.buf, b.UTF8)
+-}
+-
+-func (c *goCollator) Compare(a, b Input) int {
+-	return c.c.Compare(a.UTF8, b.UTF8)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/darwin.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/darwin.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/darwin.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/darwin.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,111 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build darwin
+-
+-package main
+-
+-/*
+-#cgo LDFLAGS: -framework CoreFoundation
+-#include <CoreFoundation/CFBase.h>
+-#include <CoreFoundation/CoreFoundation.h>
+-*/
+-import "C"
+-import (
+-	"unsafe"
+-)
+-
+-func init() {
+-	AddFactory(CollatorFactory{"osx", newOSX16Collator,
+-		"OS X/Darwin collator, using native strings."})
+-	AddFactory(CollatorFactory{"osx8", newOSX8Collator,
+-		"OS X/Darwin collator for UTF-8."})
+-}
+-
+-func osxUInt8P(s []byte) *C.UInt8 {
+-	return (*C.UInt8)(unsafe.Pointer(&s[0]))
+-}
+-
+-func osxCharP(s []uint16) *C.UniChar {
+-	return (*C.UniChar)(unsafe.Pointer(&s[0]))
+-}
+-
+-// osxCollator implements an Collator based on OS X's CoreFoundation.
+-type osxCollator struct {
+-	loc C.CFLocaleRef
+-	opt C.CFStringCompareFlags
+-}
+-
+-func (c *osxCollator) init(locale string) {
+-	l := C.CFStringCreateWithBytes(
+-		nil,
+-		osxUInt8P([]byte(locale)),
+-		C.CFIndex(len(locale)),
+-		C.kCFStringEncodingUTF8,
+-		C.Boolean(0),
+-	)
+-	c.loc = C.CFLocaleCreate(nil, l)
+-}
+-
+-func newOSX8Collator(locale string) (Collator, error) {
+-	c := &osx8Collator{}
+-	c.init(locale)
+-	return c, nil
+-}
+-
+-func newOSX16Collator(locale string) (Collator, error) {
+-	c := &osx16Collator{}
+-	c.init(locale)
+-	return c, nil
+-}
+-
+-func (c osxCollator) Key(s Input) []byte {
+-	return nil // sort keys not supported by OS X CoreFoundation
+-}
+-
+-type osx8Collator struct {
+-	osxCollator
+-}
+-
+-type osx16Collator struct {
+-	osxCollator
+-}
+-
+-func (c osx16Collator) Compare(a, b Input) int {
+-	sa := C.CFStringCreateWithCharactersNoCopy(
+-		nil,
+-		osxCharP(a.UTF16),
+-		C.CFIndex(len(a.UTF16)),
+-		C.kCFAllocatorNull,
+-	)
+-	sb := C.CFStringCreateWithCharactersNoCopy(
+-		nil,
+-		osxCharP(b.UTF16),
+-		C.CFIndex(len(b.UTF16)),
+-		C.kCFAllocatorNull,
+-	)
+-	_range := C.CFRangeMake(0, C.CFStringGetLength(sa))
+-	return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc))
+-}
+-
+-func (c osx8Collator) Compare(a, b Input) int {
+-	sa := C.CFStringCreateWithBytesNoCopy(
+-		nil,
+-		osxUInt8P(a.UTF8),
+-		C.CFIndex(len(a.UTF8)),
+-		C.kCFStringEncodingUTF8,
+-		C.Boolean(0),
+-		C.kCFAllocatorNull,
+-	)
+-	sb := C.CFStringCreateWithBytesNoCopy(
+-		nil,
+-		osxUInt8P(b.UTF8),
+-		C.CFIndex(len(b.UTF8)),
+-		C.kCFStringEncodingUTF8,
+-		C.Boolean(0),
+-		C.kCFAllocatorNull,
+-	)
+-	_range := C.CFRangeMake(0, C.CFStringGetLength(sa))
+-	return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc))
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/gen.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/gen.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/gen.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/gen.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,179 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package main
+-
+-import (
+-	"exp/norm"
+-	"math"
+-	"math/rand"
+-	"strings"
+-	"unicode"
+-	"unicode/utf16"
+-	"unicode/utf8"
+-)
+-
+-// parent computes the parent locale for the given locale.
+-// It returns false if the parent is already root.
+-func parent(locale string) (parent string, ok bool) {
+-	if locale == "root" {
+-		return "", false
+-	}
+-	if i := strings.LastIndex(locale, "_"); i != -1 {
+-		return locale[:i], true
+-	}
+-	return "root", true
+-}
+-
+-// rewriter is used to both unique strings and create variants of strings
+-// to add to the test set.
+-type rewriter struct {
+-	seen     map[string]bool
+-	addCases bool
+-}
+-
+-func newRewriter() *rewriter {
+-	return &rewriter{
+-		seen: make(map[string]bool),
+-	}
+-}
+-
+-func (r *rewriter) insert(a []string, s string) []string {
+-	if !r.seen[s] {
+-		r.seen[s] = true
+-		a = append(a, s)
+-	}
+-	return a
+-}
+-
+-// rewrite takes a sequence of strings in, adds variants of the these strings
+-// based on options and removes duplicates.
+-func (r *rewriter) rewrite(ss []string) []string {
+-	ns := []string{}
+-	for _, s := range ss {
+-		ns = r.insert(ns, s)
+-		if r.addCases {
+-			rs := []rune(s)
+-			rn := rs[0]
+-			for c := unicode.SimpleFold(rn); c != rn; c = unicode.SimpleFold(c) {
+-				rs[0] = c
+-				ns = r.insert(ns, string(rs))
+-			}
+-		}
+-	}
+-	return ns
+-}
+-
+-// exemplarySet holds a parsed set of characters from the exemplarCharacters table.
+-type exemplarySet struct {
+-	typ       exemplarType
+-	set       []string
+-	charIndex int // cumulative total of phrases, including this set
+-}
+-
+-type phraseGenerator struct {
+-	sets [exN]exemplarySet
+-	n    int
+-}
+-
+-func (g *phraseGenerator) init(locale string) {
+-	ec := exemplarCharacters
+-	// get sets for locale or parent locale if the set is not defined.
+-	for i := range g.sets {
+-		for p, ok := locale, true; ok; p, ok = parent(p) {
+-			if set, ok := ec[p]; ok && set[i] != "" {
+-				g.sets[i].set = strings.Split(set[i], " ")
+-				break
+-			}
+-		}
+-	}
+-	r := newRewriter()
+-	r.addCases = *cases
+-	for i := range g.sets {
+-		g.sets[i].set = r.rewrite(g.sets[i].set)
+-	}
+-	// compute indexes
+-	for i, set := range g.sets {
+-		g.n += len(set.set)
+-		g.sets[i].charIndex = g.n
+-	}
+-}
+-
+-// phrase returns the ith phrase, where i < g.n.
+-func (g *phraseGenerator) phrase(i int) string {
+-	for _, set := range g.sets {
+-		if i < set.charIndex {
+-			return set.set[i-(set.charIndex-len(set.set))]
+-		}
+-	}
+-	panic("index out of range")
+-}
+-
+-// generate generates inputs by combining all pairs of examplar strings.
+-// If doNorm is true, all input strings are normalized to NFC.
+-// TODO: allow other variations, statistical models, and random
+-// trailing sequences.
+-func (g *phraseGenerator) generate(doNorm bool) []Input {
+-	const (
+-		M         = 1024 * 1024
+-		buf8Size  = 30 * M
+-		buf16Size = 10 * M
+-	)
+-	// TODO: use a better way to limit the input size.
+-	if sq := int(math.Sqrt(float64(*limit))); g.n > sq {
+-		g.n = sq
+-	}
+-	size := g.n * g.n
+-	a := make([]Input, 0, size)
+-	buf8 := make([]byte, 0, buf8Size)
+-	buf16 := make([]uint16, 0, buf16Size)
+-
+-	addInput := func(str string) {
+-		buf8 = buf8[len(buf8):]
+-		buf16 = buf16[len(buf16):]
+-		if len(str) > cap(buf8) {
+-			buf8 = make([]byte, 0, buf8Size)
+-		}
+-		if len(str) > cap(buf16) {
+-			buf16 = make([]uint16, 0, buf16Size)
+-		}
+-		if doNorm {
+-			buf8 = norm.NFC.AppendString(buf8, str)
+-		} else {
+-			buf8 = append(buf8, str...)
+-		}
+-		buf16 = appendUTF16(buf16, buf8)
+-		a = append(a, makeInput(buf8, buf16))
+-	}
+-	for i := 0; i < g.n; i++ {
+-		p1 := g.phrase(i)
+-		addInput(p1)
+-		for j := 0; j < g.n; j++ {
+-			p2 := g.phrase(j)
+-			addInput(p1 + p2)
+-		}
+-	}
+-	// permutate
+-	rnd := rand.New(rand.NewSource(int64(rand.Int())))
+-	for i := range a {
+-		j := i + rnd.Intn(len(a)-i)
+-		a[i], a[j] = a[j], a[i]
+-		a[i].index = i // allow restoring this order if input is used multiple times.
+-	}
+-	return a
+-}
+-
+-func appendUTF16(buf []uint16, s []byte) []uint16 {
+-	for len(s) > 0 {
+-		r, sz := utf8.DecodeRune(s)
+-		s = s[sz:]
+-		r1, r2 := utf16.EncodeRune(r)
+-		if r1 != 0xFFFD {
+-			buf = append(buf, uint16(r1), uint16(r2))
+-		} else {
+-			buf = append(buf, uint16(r))
+-		}
+-	}
+-	return buf
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/icu.go gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/icu.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/tools/colcmp/icu.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/locale/collate/tools/colcmp/icu.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,209 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build icu
+-
+-package main
+-
+-/*
+-#cgo LDFLAGS: -licui18n -licuuc
+-#include <stdlib.h>
+-#include <unicode/ucol.h>
+-#include <unicode/uiter.h>
+-#include <unicode/utypes.h>
+-*/
+-import "C"
+-import (
+-	"fmt"
+-	"log"
+-	"unicode/utf16"
+-	"unicode/utf8"
+-	"unsafe"
+-)
+-
+-func init() {
+-	AddFactory(CollatorFactory{"icu", newUTF16,
+-		"Main ICU collator, using native strings."})
+-	AddFactory(CollatorFactory{"icu8", newUTF8iter,
+-		"ICU collator using ICU iterators to process UTF8."})
+-	AddFactory(CollatorFactory{"icu16", newUTF8conv,
+-		"ICU collation by first converting UTF8 to UTF16."})
+-}
+-
+-func icuCharP(s []byte) *C.char {
+-	return (*C.char)(unsafe.Pointer(&s[0]))
+-}
+-
+-func icuUInt8P(s []byte) *C.uint8_t {
+-	return (*C.uint8_t)(unsafe.Pointer(&s[0]))
+-}
+-
+-func icuUCharP(s []uint16) *C.UChar {
+-	return (*C.UChar)(unsafe.Pointer(&s[0]))
+-}
+-func icuULen(s []uint16) C.int32_t {
+-	return C.int32_t(len(s))
+-}
+-func icuSLen(s []byte) C.int32_t {
+-	return C.int32_t(len(s))
+-}
+-
+-// icuCollator implements a Collator based on ICU.
+-type icuCollator struct {
+-	loc    *C.char
+-	col    *C.UCollator
+-	keyBuf []byte
+-}
+-
+-const growBufSize = 10 * 1024 * 1024
+-
+-func (c *icuCollator) init(locale string) error {
+-	err := C.UErrorCode(0)
+-	c.loc = C.CString(locale)
+-	c.col = C.ucol_open(c.loc, &err)
+-	if err > 0 {
+-		return fmt.Errorf("failed opening collator for %q", locale)
+-	} else if err < 0 {
+-		loc := C.ucol_getLocaleByType(c.col, 0, &err)
+-		fmt, ok := map[int]string{
+-			-127: "warning: using default collator: %s",
+-			-128: "warning: using fallback collator: %s",
+-		}[int(err)]
+-		if ok {
+-			log.Printf(fmt, C.GoString(loc))
+-		}
+-	}
+-	c.keyBuf = make([]byte, 0, growBufSize)
+-	return nil
+-}
+-
+-func (c *icuCollator) buf() (*C.uint8_t, C.int32_t) {
+-	if len(c.keyBuf) == cap(c.keyBuf) {
+-		c.keyBuf = make([]byte, 0, growBufSize)
+-	}
+-	b := c.keyBuf[len(c.keyBuf):cap(c.keyBuf)]
+-	return icuUInt8P(b), icuSLen(b)
+-}
+-
+-func (c *icuCollator) extendBuf(n C.int32_t) []byte {
+-	end := len(c.keyBuf) + int(n)
+-	if end > cap(c.keyBuf) {
+-		if len(c.keyBuf) == 0 {
+-			log.Fatalf("icuCollator: max string size exceeded: %v > %v", n, growBufSize)
+-		}
+-		c.keyBuf = make([]byte, 0, growBufSize)
+-		return nil
+-	}
+-	b := c.keyBuf[len(c.keyBuf):end]
+-	c.keyBuf = c.keyBuf[:end]
+-	return b
+-}
+-
+-func (c *icuCollator) Close() error {
+-	C.ucol_close(c.col)
+-	C.free(unsafe.Pointer(c.loc))
+-	return nil
+-}
+-
+-// icuUTF16 implements the Collator interface.
+-type icuUTF16 struct {
+-	icuCollator
+-}
+-
+-func newUTF16(locale string) (Collator, error) {
+-	c := &icuUTF16{}
+-	return c, c.init(locale)
+-}
+-
+-func (c *icuUTF16) Compare(a, b Input) int {
+-	return int(C.ucol_strcoll(c.col, icuUCharP(a.UTF16), icuULen(a.UTF16), icuUCharP(b.UTF16), icuULen(b.UTF16)))
+-}
+-
+-func (c *icuUTF16) Key(s Input) []byte {
+-	bp, bn := c.buf()
+-	n := C.ucol_getSortKey(c.col, icuUCharP(s.UTF16), icuULen(s.UTF16), bp, bn)
+-	if b := c.extendBuf(n); b != nil {
+-		return b
+-	}
+-	return c.Key(s)
+-}
+-
+-// icuUTF8iter implements the Collator interface
+-// This implementation wraps the UTF8 string in an iterator
+-// which is passed to the collator.
+-type icuUTF8iter struct {
+-	icuCollator
+-	a, b C.UCharIterator
+-}
+-
+-func newUTF8iter(locale string) (Collator, error) {
+-	c := &icuUTF8iter{}
+-	return c, c.init(locale)
+-}
+-
+-func (c *icuUTF8iter) Compare(a, b Input) int {
+-	err := C.UErrorCode(0)
+-	C.uiter_setUTF8(&c.a, icuCharP(a.UTF8), icuSLen(a.UTF8))
+-	C.uiter_setUTF8(&c.b, icuCharP(b.UTF8), icuSLen(b.UTF8))
+-	return int(C.ucol_strcollIter(c.col, &c.a, &c.b, &err))
+-}
+-
+-func (c *icuUTF8iter) Key(s Input) []byte {
+-	err := C.UErrorCode(0)
+-	state := [2]C.uint32_t{}
+-	C.uiter_setUTF8(&c.a, icuCharP(s.UTF8), icuSLen(s.UTF8))
+-	bp, bn := c.buf()
+-	n := C.ucol_nextSortKeyPart(c.col, &c.a, &(state[0]), bp, bn, &err)
+-	if n >= bn {
+-		// Force failure.
+-		if c.extendBuf(n+1) != nil {
+-			log.Fatal("expected extension to fail")
+-		}
+-		return c.Key(s)
+-	}
+-	return c.extendBuf(n)
+-}
+-
+-// icuUTF8conv implementes the Collator interface.
+-// This implentation first converts the give UTF8 string
+-// to UTF16 and then calls the main ICU collation function.
+-type icuUTF8conv struct {
+-	icuCollator
+-}
+-
+-func newUTF8conv(locale string) (Collator, error) {
+-	c := &icuUTF8conv{}
+-	return c, c.init(locale)
+-}
+-
+-func (c *icuUTF8conv) Compare(sa, sb Input) int {
+-	a := encodeUTF16(sa.UTF8)
+-	b := encodeUTF16(sb.UTF8)
+-	return int(C.ucol_strcoll(c.col, icuUCharP(a), icuULen(a), icuUCharP(b), icuULen(b)))
+-}
+-
+-func (c *icuUTF8conv) Key(s Input) []byte {
+-	a := encodeUTF16(s.UTF8)
+-	bp, bn := c.buf()
+-	n := C.ucol_getSortKey(c.col, icuUCharP(a), icuULen(a), bp, bn)
+-	if b := c.extendBuf(n); b != nil {
+-		return b
+-	}
+-	return c.Key(s)
+-}
+-
+-func encodeUTF16(b []byte) []uint16 {
+-	a := []uint16{}
+-	for len(b) > 0 {
+-		r, sz := utf8.DecodeRune(b)
+-		b = b[sz:]
+-		r1, r2 := utf16.EncodeRune(r)
+-		if r1 != 0xFFFD {
+-			a = append(a, uint16(r1), uint16(r2))
+-		} else {
+-			a = append(a, uint16(r))
+-		}
+-	}
+-	return a
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/trie.go gcc-4.8.1/libgo/go/exp/locale/collate/trie.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/trie.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/trie.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,160 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// The trie in this file is used to associate the first full character
+-// in an UTF-8 string to a collation element.
+-// All but the last byte in a UTF-8 byte sequence are
+-// used to lookup offsets in the index table to be used for the next byte.
+-// The last byte is used to index into a table of collation elements.
+-// For a full description, see exp/locale/collate/build/trie.go.
+-
+-package collate
+-
+-const blockSize = 64
+-
+-type trie struct {
+-	index0  []uint16 // index for first byte (0xC0-0xFF)
+-	values0 []uint32 // index for first byte (0x00-0x7F)
+-	index   []uint16
+-	values  []uint32
+-}
+-
+-const (
+-	t1 = 0x00 // 0000 0000
+-	tx = 0x80 // 1000 0000
+-	t2 = 0xC0 // 1100 0000
+-	t3 = 0xE0 // 1110 0000
+-	t4 = 0xF0 // 1111 0000
+-	t5 = 0xF8 // 1111 1000
+-	t6 = 0xFC // 1111 1100
+-	te = 0xFE // 1111 1110
+-)
+-
+-func (t *trie) lookupValue(n uint16, b byte) Elem {
+-	return Elem(t.values[int(n)<<6+int(b)])
+-}
+-
+-// lookup returns the trie value for the first UTF-8 encoding in s and
+-// the width in bytes of this encoding. The size will be 0 if s does not
+-// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+-func (t *trie) lookup(s []byte) (v Elem, sz int) {
+-	c0 := s[0]
+-	switch {
+-	case c0 < tx:
+-		return Elem(t.values0[c0]), 1
+-	case c0 < t2:
+-		return 0, 1
+-	case c0 < t3:
+-		if len(s) < 2 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		return t.lookupValue(i, c1), 2
+-	case c0 < t4:
+-		if len(s) < 3 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := int(i)<<6 + int(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		return t.lookupValue(i, c2), 3
+-	case c0 < t5:
+-		if len(s) < 4 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := int(i)<<6 + int(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		o = int(i)<<6 + int(c2)
+-		i = t.index[o]
+-		c3 := s[3]
+-		if c3 < tx || t2 <= c3 {
+-			return 0, 3
+-		}
+-		return t.lookupValue(i, c3), 4
+-	}
+-	// Illegal rune
+-	return 0, 1
+-}
+-
+-// The body of lookupString is a verbatim copy of that of lookup.
+-func (t *trie) lookupString(s string) (v Elem, sz int) {
+-	c0 := s[0]
+-	switch {
+-	case c0 < tx:
+-		return Elem(t.values0[c0]), 1
+-	case c0 < t2:
+-		return 0, 1
+-	case c0 < t3:
+-		if len(s) < 2 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		return t.lookupValue(i, c1), 2
+-	case c0 < t4:
+-		if len(s) < 3 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := int(i)<<6 + int(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		return t.lookupValue(i, c2), 3
+-	case c0 < t5:
+-		if len(s) < 4 {
+-			return 0, 0
+-		}
+-		i := t.index0[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := int(i)<<6 + int(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		o = int(i)<<6 + int(c2)
+-		i = t.index[o]
+-		c3 := s[3]
+-		if c3 < tx || t2 <= c3 {
+-			return 0, 3
+-		}
+-		return t.lookupValue(i, c3), 4
+-	}
+-	// Illegal rune
+-	return 0, 1
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/locale/collate/trie_test.go gcc-4.8.1/libgo/go/exp/locale/collate/trie_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/locale/collate/trie_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/locale/collate/trie_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,106 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package collate
+-
+-import (
+-	"testing"
+-)
+-
+-// We take the smallest, largest and an arbitrary value for each
+-// of the UTF-8 sequence lengths.
+-var testRunes = []rune{
+-	0x01, 0x0C, 0x7F, // 1-byte sequences
+-	0x80, 0x100, 0x7FF, // 2-byte sequences
+-	0x800, 0x999, 0xFFFF, // 3-byte sequences
+-	0x10000, 0x10101, 0x10FFFF, // 4-byte sequences
+-	0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block
+-}
+-
+-// Test cases for illegal runes.
+-type trietest struct {
+-	size  int
+-	bytes []byte
+-}
+-
+-var tests = []trietest{
+-	// illegal runes
+-	{1, []byte{0x80}},
+-	{1, []byte{0xFF}},
+-	{1, []byte{t2, tx - 1}},
+-	{1, []byte{t2, t2}},
+-	{2, []byte{t3, tx, tx - 1}},
+-	{2, []byte{t3, tx, t2}},
+-	{1, []byte{t3, tx - 1, tx}},
+-	{3, []byte{t4, tx, tx, tx - 1}},
+-	{3, []byte{t4, tx, tx, t2}},
+-	{1, []byte{t4, t2, tx, tx - 1}},
+-	{2, []byte{t4, tx, t2, tx - 1}},
+-
+-	// short runes
+-	{0, []byte{t2}},
+-	{0, []byte{t3, tx}},
+-	{0, []byte{t4, tx, tx}},
+-
+-	// we only support UTF-8 up to utf8.UTFMax bytes (4 bytes)
+-	{1, []byte{t5, tx, tx, tx, tx}},
+-	{1, []byte{t6, tx, tx, tx, tx, tx}},
+-}
+-
+-func TestLookupTrie(t *testing.T) {
+-	for i, r := range testRunes {
+-		b := []byte(string(r))
+-		v, sz := testTrie.lookup(b)
+-		if int(v) != i {
+-			t.Errorf("lookup(%U): found value %#x, expected %#x", r, v, i)
+-		}
+-		if sz != len(b) {
+-			t.Errorf("lookup(%U): found size %d, expected %d", r, sz, len(b))
+-		}
+-	}
+-	for i, tt := range tests {
+-		v, sz := testTrie.lookup(tt.bytes)
+-		if int(v) != 0 {
+-			t.Errorf("lookup of illegal rune, case %d: found value %#x, expected 0", i, v)
+-		}
+-		if sz != tt.size {
+-			t.Errorf("lookup of illegal rune, case %d: found size %d, expected %d", i, sz, tt.size)
+-		}
+-	}
+-}
+-
+-// test data is taken from exp/collate/locale/build/trie_test.go
+-var testValues = [832]uint32{
+-	0x000c: 0x00000001,
+-	0x007f: 0x00000002,
+-	0x00c0: 0x00000003,
+-	0x0100: 0x00000004,
+-	0x0140: 0x0000000c, 0x0141: 0x0000000d, 0x0142: 0x0000000e,
+-	0x0150: 0x0000000f,
+-	0x0155: 0x00000010,
+-	0x01bf: 0x00000005,
+-	0x01c0: 0x00000006,
+-	0x0219: 0x00000007,
+-	0x027f: 0x00000008,
+-	0x0280: 0x00000009,
+-	0x02c1: 0x0000000a,
+-	0x033f: 0x0000000b,
+-}
+-
+-var testLookup = [640]uint16{
+-	0x0e0: 0x05, 0x0e6: 0x06,
+-	0x13f: 0x07,
+-	0x140: 0x08, 0x144: 0x09,
+-	0x190: 0x03,
+-	0x1ff: 0x0a,
+-	0x20f: 0x05,
+-	0x242: 0x01, 0x244: 0x02,
+-	0x248: 0x03,
+-	0x25f: 0x04,
+-	0x260: 0x01,
+-	0x26f: 0x02,
+-	0x270: 0x04, 0x274: 0x06,
+-}
+-
+-var testTrie = trie{testLookup[6*blockSize:], testValues[:], testLookup[:], testValues[:]}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/composition.go gcc-4.8.1/libgo/go/exp/norm/composition.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/composition.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/composition.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,382 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import "unicode/utf8"
+-
+-const (
+-	maxCombiningChars = 30
+-	maxBufferSize     = maxCombiningChars + 2 // +1 to hold starter +1 to hold CGJ
+-	maxBackRunes      = maxCombiningChars - 1
+-	maxNFCExpansion   = 3  // NFC(0x1D160)
+-	maxNFKCExpansion  = 18 // NFKC(0xFDFA)
+-
+-	maxByteBufferSize = utf8.UTFMax * maxBufferSize // 128
+-)
+-
+-// reorderBuffer is used to normalize a single segment.  Characters inserted with
+-// insert are decomposed and reordered based on CCC. The compose method can
+-// be used to recombine characters.  Note that the byte buffer does not hold
+-// the UTF-8 characters in order.  Only the rune array is maintained in sorted
+-// order. flush writes the resulting segment to a byte array.
+-type reorderBuffer struct {
+-	rune  [maxBufferSize]Properties // Per character info.
+-	byte  [maxByteBufferSize]byte   // UTF-8 buffer. Referenced by runeInfo.pos.
+-	nrune int                       // Number of runeInfos.
+-	nbyte uint8                     // Number or bytes.
+-	f     formInfo
+-
+-	src      input
+-	nsrc     int
+-	tmpBytes input
+-}
+-
+-func (rb *reorderBuffer) init(f Form, src []byte) {
+-	rb.f = *formTable[f]
+-	rb.src.setBytes(src)
+-	rb.nsrc = len(src)
+-}
+-
+-func (rb *reorderBuffer) initString(f Form, src string) {
+-	rb.f = *formTable[f]
+-	rb.src.setString(src)
+-	rb.nsrc = len(src)
+-}
+-
+-// reset discards all characters from the buffer.
+-func (rb *reorderBuffer) reset() {
+-	rb.nrune = 0
+-	rb.nbyte = 0
+-}
+-
+-// flush appends the normalized segment to out and resets rb.
+-func (rb *reorderBuffer) flush(out []byte) []byte {
+-	for i := 0; i < rb.nrune; i++ {
+-		start := rb.rune[i].pos
+-		end := start + rb.rune[i].size
+-		out = append(out, rb.byte[start:end]...)
+-	}
+-	rb.reset()
+-	return out
+-}
+-
+-// flushCopy copies the normalized segment to buf and resets rb.
+-// It returns the number of bytes written to buf.
+-func (rb *reorderBuffer) flushCopy(buf []byte) int {
+-	p := 0
+-	for i := 0; i < rb.nrune; i++ {
+-		runep := rb.rune[i]
+-		p += copy(buf[p:], rb.byte[runep.pos:runep.pos+runep.size])
+-	}
+-	rb.reset()
+-	return p
+-}
+-
+-// insertOrdered inserts a rune in the buffer, ordered by Canonical Combining Class.
+-// It returns false if the buffer is not large enough to hold the rune.
+-// It is used internally by insert and insertString only.
+-func (rb *reorderBuffer) insertOrdered(info Properties) bool {
+-	n := rb.nrune
+-	if n >= maxCombiningChars+1 {
+-		return false
+-	}
+-	b := rb.rune[:]
+-	cc := info.ccc
+-	if cc > 0 {
+-		// Find insertion position + move elements to make room.
+-		for ; n > 0; n-- {
+-			if b[n-1].ccc <= cc {
+-				break
+-			}
+-			b[n] = b[n-1]
+-		}
+-	}
+-	rb.nrune += 1
+-	pos := uint8(rb.nbyte)
+-	rb.nbyte += utf8.UTFMax
+-	info.pos = pos
+-	b[n] = info
+-	return true
+-}
+-
+-// insert inserts the given rune in the buffer ordered by CCC.
+-// It returns true if the buffer was large enough to hold the decomposed rune.
+-func (rb *reorderBuffer) insert(src input, i int, info Properties) bool {
+-	if rune := src.hangul(i); rune != 0 {
+-		return rb.decomposeHangul(rune)
+-	}
+-	if info.hasDecomposition() {
+-		return rb.insertDecomposed(info.Decomposition())
+-	}
+-	return rb.insertSingle(src, i, info)
+-}
+-
+-// insertDecomposed inserts an entry in to the reorderBuffer for each rune
+-// in dcomp.  dcomp must be a sequence of decomposed UTF-8-encoded runes.
+-func (rb *reorderBuffer) insertDecomposed(dcomp []byte) bool {
+-	saveNrune, saveNbyte := rb.nrune, rb.nbyte
+-	rb.tmpBytes.setBytes(dcomp)
+-	for i := 0; i < len(dcomp); {
+-		info := rb.f.info(rb.tmpBytes, i)
+-		pos := rb.nbyte
+-		if !rb.insertOrdered(info) {
+-			rb.nrune, rb.nbyte = saveNrune, saveNbyte
+-			return false
+-		}
+-		i += copy(rb.byte[pos:], dcomp[i:i+int(info.size)])
+-	}
+-	return true
+-}
+-
+-// insertSingle inserts an entry in the reorderBuffer for the rune at
+-// position i. info is the runeInfo for the rune at position i.
+-func (rb *reorderBuffer) insertSingle(src input, i int, info Properties) bool {
+-	// insertOrder changes nbyte
+-	pos := rb.nbyte
+-	if !rb.insertOrdered(info) {
+-		return false
+-	}
+-	src.copySlice(rb.byte[pos:], i, i+int(info.size))
+-	return true
+-}
+-
+-// appendRune inserts a rune at the end of the buffer. It is used for Hangul.
+-func (rb *reorderBuffer) appendRune(r rune) {
+-	bn := rb.nbyte
+-	sz := utf8.EncodeRune(rb.byte[bn:], rune(r))
+-	rb.nbyte += utf8.UTFMax
+-	rb.rune[rb.nrune] = Properties{pos: bn, size: uint8(sz)}
+-	rb.nrune++
+-}
+-
+-// assignRune sets a rune at position pos. It is used for Hangul and recomposition.
+-func (rb *reorderBuffer) assignRune(pos int, r rune) {
+-	bn := rb.rune[pos].pos
+-	sz := utf8.EncodeRune(rb.byte[bn:], rune(r))
+-	rb.rune[pos] = Properties{pos: bn, size: uint8(sz)}
+-}
+-
+-// runeAt returns the rune at position n. It is used for Hangul and recomposition.
+-func (rb *reorderBuffer) runeAt(n int) rune {
+-	inf := rb.rune[n]
+-	r, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size])
+-	return r
+-}
+-
+-// bytesAt returns the UTF-8 encoding of the rune at position n.
+-// It is used for Hangul and recomposition.
+-func (rb *reorderBuffer) bytesAt(n int) []byte {
+-	inf := rb.rune[n]
+-	return rb.byte[inf.pos : int(inf.pos)+int(inf.size)]
+-}
+-
+-// For Hangul we combine algorithmically, instead of using tables.
+-const (
+-	hangulBase  = 0xAC00 // UTF-8(hangulBase) -> EA B0 80
+-	hangulBase0 = 0xEA
+-	hangulBase1 = 0xB0
+-	hangulBase2 = 0x80
+-
+-	hangulEnd  = hangulBase + jamoLVTCount // UTF-8(0xD7A4) -> ED 9E A4
+-	hangulEnd0 = 0xED
+-	hangulEnd1 = 0x9E
+-	hangulEnd2 = 0xA4
+-
+-	jamoLBase  = 0x1100 // UTF-8(jamoLBase) -> E1 84 00
+-	jamoLBase0 = 0xE1
+-	jamoLBase1 = 0x84
+-	jamoLEnd   = 0x1113
+-	jamoVBase  = 0x1161
+-	jamoVEnd   = 0x1176
+-	jamoTBase  = 0x11A7
+-	jamoTEnd   = 0x11C3
+-
+-	jamoTCount   = 28
+-	jamoVCount   = 21
+-	jamoVTCount  = 21 * 28
+-	jamoLVTCount = 19 * 21 * 28
+-)
+-
+-const hangulUTF8Size = 3
+-
+-func isHangul(b []byte) bool {
+-	if len(b) < hangulUTF8Size {
+-		return false
+-	}
+-	b0 := b[0]
+-	if b0 < hangulBase0 {
+-		return false
+-	}
+-	b1 := b[1]
+-	switch {
+-	case b0 == hangulBase0:
+-		return b1 >= hangulBase1
+-	case b0 < hangulEnd0:
+-		return true
+-	case b0 > hangulEnd0:
+-		return false
+-	case b1 < hangulEnd1:
+-		return true
+-	}
+-	return b1 == hangulEnd1 && b[2] < hangulEnd2
+-}
+-
+-func isHangulString(b string) bool {
+-	if len(b) < hangulUTF8Size {
+-		return false
+-	}
+-	b0 := b[0]
+-	if b0 < hangulBase0 {
+-		return false
+-	}
+-	b1 := b[1]
+-	switch {
+-	case b0 == hangulBase0:
+-		return b1 >= hangulBase1
+-	case b0 < hangulEnd0:
+-		return true
+-	case b0 > hangulEnd0:
+-		return false
+-	case b1 < hangulEnd1:
+-		return true
+-	}
+-	return b1 == hangulEnd1 && b[2] < hangulEnd2
+-}
+-
+-// Caller must ensure len(b) >= 2.
+-func isJamoVT(b []byte) bool {
+-	// True if (rune & 0xff00) == jamoLBase
+-	return b[0] == jamoLBase0 && (b[1]&0xFC) == jamoLBase1
+-}
+-
+-func isHangulWithoutJamoT(b []byte) bool {
+-	c, _ := utf8.DecodeRune(b)
+-	c -= hangulBase
+-	return c < jamoLVTCount && c%jamoTCount == 0
+-}
+-
+-// decomposeHangul writes the decomposed Hangul to buf and returns the number
+-// of bytes written.  len(buf) should be at least 9.
+-func decomposeHangul(buf []byte, r rune) int {
+-	const JamoUTF8Len = 3
+-	r -= hangulBase
+-	x := r % jamoTCount
+-	r /= jamoTCount
+-	utf8.EncodeRune(buf, jamoLBase+r/jamoVCount)
+-	utf8.EncodeRune(buf[JamoUTF8Len:], jamoVBase+r%jamoVCount)
+-	if x != 0 {
+-		utf8.EncodeRune(buf[2*JamoUTF8Len:], jamoTBase+x)
+-		return 3 * JamoUTF8Len
+-	}
+-	return 2 * JamoUTF8Len
+-}
+-
+-// decomposeHangul algorithmically decomposes a Hangul rune into
+-// its Jamo components.
+-// See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul.
+-func (rb *reorderBuffer) decomposeHangul(r rune) bool {
+-	b := rb.rune[:]
+-	n := rb.nrune
+-	if n+3 > len(b) {
+-		return false
+-	}
+-	r -= hangulBase
+-	x := r % jamoTCount
+-	r /= jamoTCount
+-	rb.appendRune(jamoLBase + r/jamoVCount)
+-	rb.appendRune(jamoVBase + r%jamoVCount)
+-	if x != 0 {
+-		rb.appendRune(jamoTBase + x)
+-	}
+-	return true
+-}
+-
+-// combineHangul algorithmically combines Jamo character components into Hangul.
+-// See http://unicode.org/reports/tr15/#Hangul for details on combining Hangul.
+-func (rb *reorderBuffer) combineHangul(s, i, k int) {
+-	b := rb.rune[:]
+-	bn := rb.nrune
+-	for ; i < bn; i++ {
+-		cccB := b[k-1].ccc
+-		cccC := b[i].ccc
+-		if cccB == 0 {
+-			s = k - 1
+-		}
+-		if s != k-1 && cccB >= cccC {
+-			// b[i] is blocked by greater-equal cccX below it
+-			b[k] = b[i]
+-			k++
+-		} else {
+-			l := rb.runeAt(s) // also used to compare to hangulBase
+-			v := rb.runeAt(i) // also used to compare to jamoT
+-			switch {
+-			case jamoLBase <= l && l < jamoLEnd &&
+-				jamoVBase <= v && v < jamoVEnd:
+-				// 11xx plus 116x to LV
+-				rb.assignRune(s, hangulBase+
+-					(l-jamoLBase)*jamoVTCount+(v-jamoVBase)*jamoTCount)
+-			case hangulBase <= l && l < hangulEnd &&
+-				jamoTBase < v && v < jamoTEnd &&
+-				((l-hangulBase)%jamoTCount) == 0:
+-				// ACxx plus 11Ax to LVT
+-				rb.assignRune(s, l+v-jamoTBase)
+-			default:
+-				b[k] = b[i]
+-				k++
+-			}
+-		}
+-	}
+-	rb.nrune = k
+-}
+-
+-// compose recombines the runes in the buffer.
+-// It should only be used to recompose a single segment, as it will not
+-// handle alternations between Hangul and non-Hangul characters correctly.
+-func (rb *reorderBuffer) compose() {
+-	// UAX #15, section X5 , including Corrigendum #5
+-	// "In any character sequence beginning with starter S, a character C is
+-	//  blocked from S if and only if there is some character B between S
+-	//  and C, and either B is a starter or it has the same or higher
+-	//  combining class as C."
+-	bn := rb.nrune
+-	if bn == 0 {
+-		return
+-	}
+-	k := 1
+-	b := rb.rune[:]
+-	for s, i := 0, 1; i < bn; i++ {
+-		if isJamoVT(rb.bytesAt(i)) {
+-			// Redo from start in Hangul mode. Necessary to support
+-			// U+320E..U+321E in NFKC mode.
+-			rb.combineHangul(s, i, k)
+-			return
+-		}
+-		ii := b[i]
+-		// We can only use combineForward as a filter if we later
+-		// get the info for the combined character. This is more
+-		// expensive than using the filter. Using combinesBackward()
+-		// is safe.
+-		if ii.combinesBackward() {
+-			cccB := b[k-1].ccc
+-			cccC := ii.ccc
+-			blocked := false // b[i] blocked by starter or greater or equal CCC?
+-			if cccB == 0 {
+-				s = k - 1
+-			} else {
+-				blocked = s != k-1 && cccB >= cccC
+-			}
+-			if !blocked {
+-				combined := combine(rb.runeAt(s), rb.runeAt(i))
+-				if combined != 0 {
+-					rb.assignRune(s, combined)
+-					continue
+-				}
+-			}
+-		}
+-		b[k] = b[i]
+-		k++
+-	}
+-	rb.nrune = k
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/composition_test.go gcc-4.8.1/libgo/go/exp/norm/composition_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/composition_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/composition_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,143 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import "testing"
+-
+-// TestCase is used for most tests.
+-type TestCase struct {
+-	in  []rune
+-	out []rune
+-}
+-
+-type insertFunc func(rb *reorderBuffer, r rune) bool
+-
+-func insert(rb *reorderBuffer, r rune) bool {
+-	src := inputString(string(r))
+-	return rb.insert(src, 0, rb.f.info(src, 0))
+-}
+-
+-func runTests(t *testing.T, name string, fm Form, f insertFunc, tests []TestCase) {
+-	rb := reorderBuffer{}
+-	rb.init(fm, nil)
+-	for i, test := range tests {
+-		rb.reset()
+-		for j, rune := range test.in {
+-			b := []byte(string(rune))
+-			src := inputBytes(b)
+-			if !rb.insert(src, 0, rb.f.info(src, 0)) {
+-				t.Errorf("%s:%d: insert failed for rune %d", name, i, j)
+-			}
+-		}
+-		if rb.f.composing {
+-			rb.compose()
+-		}
+-		if rb.nrune != len(test.out) {
+-			t.Errorf("%s:%d: length = %d; want %d", name, i, rb.nrune, len(test.out))
+-			continue
+-		}
+-		for j, want := range test.out {
+-			found := rune(rb.runeAt(j))
+-			if found != want {
+-				t.Errorf("%s:%d: runeAt(%d) = %U; want %U", name, i, j, found, want)
+-			}
+-		}
+-	}
+-}
+-
+-type flushFunc func(rb *reorderBuffer) []byte
+-
+-func testFlush(t *testing.T, name string, fn flushFunc) {
+-	rb := reorderBuffer{}
+-	rb.init(NFC, nil)
+-	out := fn(&rb)
+-	if len(out) != 0 {
+-		t.Errorf("%s: wrote bytes on flush of empty buffer. (len(out) = %d)", name, len(out))
+-	}
+-
+-	for _, r := range []rune("world!") {
+-		insert(&rb, r)
+-	}
+-
+-	out = []byte("Hello ")
+-	out = rb.flush(out)
+-	want := "Hello world!"
+-	if string(out) != want {
+-		t.Errorf(`%s: output after flush was "%s"; want "%s"`, name, string(out), want)
+-	}
+-	if rb.nrune != 0 {
+-		t.Errorf("%s: non-null size of info buffer (rb.nrune == %d)", name, rb.nrune)
+-	}
+-	if rb.nbyte != 0 {
+-		t.Errorf("%s: non-null size of byte buffer (rb.nbyte == %d)", name, rb.nbyte)
+-	}
+-}
+-
+-func flushF(rb *reorderBuffer) []byte {
+-	out := make([]byte, 0)
+-	return rb.flush(out)
+-}
+-
+-func flushCopyF(rb *reorderBuffer) []byte {
+-	out := make([]byte, maxByteBufferSize)
+-	n := rb.flushCopy(out)
+-	return out[:n]
+-}
+-
+-func TestFlush(t *testing.T) {
+-	testFlush(t, "flush", flushF)
+-	testFlush(t, "flushCopy", flushCopyF)
+-}
+-
+-var insertTests = []TestCase{
+-	{[]rune{'a'}, []rune{'a'}},
+-	{[]rune{0x300}, []rune{0x300}},
+-	{[]rune{0x300, 0x316}, []rune{0x316, 0x300}}, // CCC(0x300)==230; CCC(0x316)==220
+-	{[]rune{0x316, 0x300}, []rune{0x316, 0x300}},
+-	{[]rune{0x41, 0x316, 0x300}, []rune{0x41, 0x316, 0x300}},
+-	{[]rune{0x41, 0x300, 0x316}, []rune{0x41, 0x316, 0x300}},
+-	{[]rune{0x300, 0x316, 0x41}, []rune{0x316, 0x300, 0x41}},
+-	{[]rune{0x41, 0x300, 0x40, 0x316}, []rune{0x41, 0x300, 0x40, 0x316}},
+-}
+-
+-func TestInsert(t *testing.T) {
+-	runTests(t, "TestInsert", NFD, insert, insertTests)
+-}
+-
+-var decompositionNFDTest = []TestCase{
+-	{[]rune{0xC0}, []rune{0x41, 0x300}},
+-	{[]rune{0xAC00}, []rune{0x1100, 0x1161}},
+-	{[]rune{0x01C4}, []rune{0x01C4}},
+-	{[]rune{0x320E}, []rune{0x320E}},
+-	{[]rune("ìáº»ê³Œ"), []rune{0x110B, 0x1173, 0x11B7, 0x65, 0x309, 0x1100, 0x116A}},
+-}
+-
+-var decompositionNFKDTest = []TestCase{
+-	{[]rune{0xC0}, []rune{0x41, 0x300}},
+-	{[]rune{0xAC00}, []rune{0x1100, 0x1161}},
+-	{[]rune{0x01C4}, []rune{0x44, 0x5A, 0x030C}},
+-	{[]rune{0x320E}, []rune{0x28, 0x1100, 0x1161, 0x29}},
+-}
+-
+-func TestDecomposition(t *testing.T) {
+-	runTests(t, "TestDecompositionNFD", NFD, insert, decompositionNFDTest)
+-	runTests(t, "TestDecompositionNFKD", NFKD, insert, decompositionNFKDTest)
+-}
+-
+-var compositionTest = []TestCase{
+-	{[]rune{0x41, 0x300}, []rune{0xC0}},
+-	{[]rune{0x41, 0x316}, []rune{0x41, 0x316}},
+-	{[]rune{0x41, 0x300, 0x35D}, []rune{0xC0, 0x35D}},
+-	{[]rune{0x41, 0x316, 0x300}, []rune{0xC0, 0x316}},
+-	// blocking starter
+-	{[]rune{0x41, 0x316, 0x40, 0x300}, []rune{0x41, 0x316, 0x40, 0x300}},
+-	{[]rune{0x1100, 0x1161}, []rune{0xAC00}},
+-	// parenthesized Hangul, alternate between ASCII and Hangul.
+-	{[]rune{0x28, 0x1100, 0x1161, 0x29}, []rune{0x28, 0xAC00, 0x29}},
+-}
+-
+-func TestComposition(t *testing.T) {
+-	runTests(t, "TestComposition", NFC, insert, compositionTest)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/example_iter_test.go gcc-4.8.1/libgo/go/exp/norm/example_iter_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/example_iter_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/example_iter_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,81 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm_test
+-
+-import (
+-	"bytes"
+-	"exp/norm"
+-	"fmt"
+-	"unicode/utf8"
+-)
+-
+-// EqualSimple uses a norm.Iter to compare two non-normalized
+-// strings for equivalence.
+-func EqualSimple(a, b string) bool {
+-	var ia, ib norm.Iter
+-	ia.InitString(norm.NFKD, a)
+-	ib.InitString(norm.NFKD, b)
+-	for !ia.Done() && !ib.Done() {
+-		if !bytes.Equal(ia.Next(), ib.Next()) {
+-			return false
+-		}
+-	}
+-	return ia.Done() && ib.Done()
+-}
+-
+-// FindPrefix finds the longest common prefix of ASCII characters
+-// of a and b.
+-func FindPrefix(a, b string) int {
+-	i := 0
+-	for ; i < len(a) && i < len(b) && a[i] < utf8.RuneSelf && a[i] == b[i]; i++ {
+-	}
+-	return i
+-}
+-
+-// EqualOpt is like EqualSimple, but optimizes the special
+-// case for ASCII characters.
+-func EqualOpt(a, b string) bool {
+-	n := FindPrefix(a, b)
+-	a, b = a[n:], b[n:]
+-	var ia, ib norm.Iter
+-	ia.InitString(norm.NFKD, a)
+-	ib.InitString(norm.NFKD, b)
+-	for !ia.Done() && !ib.Done() {
+-		if !bytes.Equal(ia.Next(), ib.Next()) {
+-			return false
+-		}
+-		if n := int64(FindPrefix(a[ia.Pos():], b[ib.Pos():])); n != 0 {
+-			ia.Seek(n, 1)
+-			ib.Seek(n, 1)
+-		}
+-	}
+-	return ia.Done() && ib.Done()
+-}
+-
+-var compareTests = []struct{ a, b string }{
+-	{"aaa", "aaa"},
+-	{"aaa", "aab"},
+-	{"a\u0300a", "\u00E0a"},
+-	{"a\u0300\u0320b", "a\u0320\u0300b"},
+-	{"\u1E0A\u0323", "\x44\u0323\u0307"},
+-	// A character that decomposes into multiple segments
+-	// spans several iterations.
+-	{"\u3304", "\u30A4\u30CB\u30F3\u30AF\u3099"},
+-}
+-
+-func ExampleIter() {
+-	for i, t := range compareTests {
+-		r0 := EqualSimple(t.a, t.b)
+-		r1 := EqualOpt(t.a, t.b)
+-		fmt.Printf("%d: %v %v\n", i, r0, r1)
+-	}
+-	// Output:
+-	// 0: true true
+-	// 1: false false
+-	// 2: true true
+-	// 3: true true
+-	// 4: true true
+-	// 5: true true
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/forminfo.go gcc-4.8.1/libgo/go/exp/norm/forminfo.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/forminfo.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/forminfo.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,229 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-// This file contains Form-specific logic and wrappers for data in tables.go.
+-
+-// Rune info is stored in a separate trie per composing form. A composing form
+-// and its corresponding decomposing form share the same trie.  Each trie maps
+-// a rune to a uint16. The values take two forms.  For v >= 0x8000:
+-//   bits
+-//   0..8:   ccc
+-//   9..12:  qcInfo (see below). isYesD is always true (no decompostion).
+-//   16:     1
+-// For v < 0x8000, the respective rune has a decomposition and v is an index
+-// into a byte array of UTF-8 decomposition sequences and additional info and
+-// has the form:
+-//    <header> <decomp_byte>* [<tccc> [<lccc>]]
+-// The header contains the number of bytes in the decomposition (excluding this
+-// length byte). The two most significant bits of this length byte correspond
+-// to bit 2 and 3 of qcIfo (see below).  The byte sequence itself starts at v+1.
+-// The byte sequence is followed by a trailing and leading CCC if the values
+-// for these are not zero.  The value of v determines which ccc are appended
+-// to the sequences.  For v < firstCCC, there are none, for v >= firstCCC,
+-// the sequence is followed by a trailing ccc, and for v >= firstLeadingCC
+-// there is an additional leading ccc.
+-
+-const (
+-	qcInfoMask      = 0xF  // to clear all but the relevant bits in a qcInfo
+-	headerLenMask   = 0x3F // extract the length value from the header byte
+-	headerFlagsMask = 0xC0 // extract the qcInfo bits from the header byte
+-)
+-
+-// Properties provides access to normalization properties of a rune.
+-type Properties struct {
+-	pos   uint8  // start position in reorderBuffer; used in composition.go
+-	size  uint8  // length of UTF-8 encoding of this rune
+-	ccc   uint8  // leading canonical combining class (ccc if not decomposition)
+-	tccc  uint8  // trailing canonical combining class (ccc if not decomposition)
+-	flags qcInfo // quick check flags
+-	index uint16
+-}
+-
+-// functions dispatchable per form
+-type lookupFunc func(b input, i int) Properties
+-
+-// formInfo holds Form-specific functions and tables.
+-type formInfo struct {
+-	form                     Form
+-	composing, compatibility bool // form type
+-	info                     lookupFunc
+-	nextMain                 iterFunc
+-}
+-
+-var formTable []*formInfo
+-
+-func init() {
+-	formTable = make([]*formInfo, 4)
+-
+-	for i := range formTable {
+-		f := &formInfo{}
+-		formTable[i] = f
+-		f.form = Form(i)
+-		if Form(i) == NFKD || Form(i) == NFKC {
+-			f.compatibility = true
+-			f.info = lookupInfoNFKC
+-		} else {
+-			f.info = lookupInfoNFC
+-		}
+-		f.nextMain = nextDecomposed
+-		if Form(i) == NFC || Form(i) == NFKC {
+-			f.nextMain = nextComposed
+-			f.composing = true
+-		}
+-	}
+-}
+-
+-// We do not distinguish between boundaries for NFC, NFD, etc. to avoid
+-// unexpected behavior for the user.  For example, in NFD, there is a boundary
+-// after 'a'.  However, 'a' might combine with modifiers, so from the application's
+-// perspective it is not a good boundary. We will therefore always use the
+-// boundaries for the combining variants.
+-
+-// BoundaryBefore returns true if this rune starts a new segment and
+-// cannot combine with any rune on the left.
+-func (p Properties) BoundaryBefore() bool {
+-	if p.ccc == 0 && !p.combinesBackward() {
+-		return true
+-	}
+-	// We assume that the CCC of the first character in a decomposition
+-	// is always non-zero if different from info.ccc and that we can return
+-	// false at this point. This is verified by maketables.
+-	return false
+-}
+-
+-// BoundaryAfter returns true if this rune cannot combine with runes to the right
+-// and always denotes the end of a segment.
+-func (p Properties) BoundaryAfter() bool {
+-	return p.isInert()
+-}
+-
+-// We pack quick check data in 4 bits:
+-//   0:    NFD_QC Yes (0) or No (1). No also means there is a decomposition.
+-//   1..2: NFC_QC Yes(00), No (10), or Maybe (11)
+-//   3:    Combines forward  (0 == false, 1 == true)
+-//
+-// When all 4 bits are zero, the character is inert, meaning it is never
+-// influenced by normalization.
+-type qcInfo uint8
+-
+-func (p Properties) isYesC() bool { return p.flags&0x4 == 0 }
+-func (p Properties) isYesD() bool { return p.flags&0x1 == 0 }
+-
+-func (p Properties) combinesForward() bool  { return p.flags&0x8 != 0 }
+-func (p Properties) combinesBackward() bool { return p.flags&0x2 != 0 } // == isMaybe
+-func (p Properties) hasDecomposition() bool { return p.flags&0x1 != 0 } // == isNoD
+-
+-func (p Properties) isInert() bool {
+-	return p.flags&0xf == 0 && p.ccc == 0
+-}
+-
+-func (p Properties) multiSegment() bool {
+-	return p.index >= firstMulti && p.index < endMulti
+-}
+-
+-// Decomposition returns the decomposition for the underlying rune
+-// or nil if there is none.
+-func (p Properties) Decomposition() []byte {
+-	if p.index == 0 {
+-		return nil
+-	}
+-	i := p.index
+-	n := decomps[i] & headerLenMask
+-	i++
+-	return decomps[i : i+uint16(n)]
+-}
+-
+-// Size returns the length of UTF-8 encoding of the rune.
+-func (p Properties) Size() int {
+-	return int(p.size)
+-}
+-
+-// CCC returns the canonical combining class of the underlying rune.
+-func (p Properties) CCC() uint8 {
+-	if p.index > firstCCCZeroExcept {
+-		return 0
+-	}
+-	return p.ccc
+-}
+-
+-// LeadCCC returns the CCC of the first rune in the decomposition.
+-// If there is no decomposition, LeadCCC equals CCC.
+-func (p Properties) LeadCCC() uint8 {
+-	return p.ccc
+-}
+-
+-// TrailCCC returns the CCC of the last rune in the decomposition.
+-// If there is no decomposition, TrailCCC equals CCC.
+-func (p Properties) TrailCCC() uint8 {
+-	return p.tccc
+-}
+-
+-// Recomposition
+-// We use 32-bit keys instead of 64-bit for the two codepoint keys.
+-// This clips off the bits of three entries, but we know this will not
+-// result in a collision. In the unlikely event that changes to
+-// UnicodeData.txt introduce collisions, the compiler will catch it.
+-// Note that the recomposition map for NFC and NFKC are identical.
+-
+-// combine returns the combined rune or 0 if it doesn't exist.
+-func combine(a, b rune) rune {
+-	key := uint32(uint16(a))<<16 + uint32(uint16(b))
+-	return recompMap[key]
+-}
+-
+-func lookupInfoNFC(b input, i int) Properties {
+-	v, sz := b.charinfoNFC(i)
+-	return compInfo(v, sz)
+-}
+-
+-func lookupInfoNFKC(b input, i int) Properties {
+-	v, sz := b.charinfoNFKC(i)
+-	return compInfo(v, sz)
+-}
+-
+-// Properties returns properties for the first rune in s.
+-func (f Form) Properties(s []byte) Properties {
+-	if f == NFC || f == NFD {
+-		return compInfo(nfcTrie.lookup(s))
+-	}
+-	return compInfo(nfkcTrie.lookup(s))
+-}
+-
+-// PropertiesString returns properties for the first rune in s.
+-func (f Form) PropertiesString(s string) Properties {
+-	if f == NFC || f == NFD {
+-		return compInfo(nfcTrie.lookupString(s))
+-	}
+-	return compInfo(nfkcTrie.lookupString(s))
+-}
+-
+-// compInfo converts the information contained in v and sz
+-// to a Properties.  See the comment at the top of the file
+-// for more information on the format.
+-func compInfo(v uint16, sz int) Properties {
+-	if v == 0 {
+-		return Properties{size: uint8(sz)}
+-	} else if v >= 0x8000 {
+-		return Properties{
+-			size:  uint8(sz),
+-			ccc:   uint8(v),
+-			tccc:  uint8(v),
+-			flags: qcInfo(v>>8) & qcInfoMask,
+-		}
+-	}
+-	// has decomposition
+-	h := decomps[v]
+-	f := (qcInfo(h&headerFlagsMask) >> 4) | 0x1
+-	ri := Properties{size: uint8(sz), flags: f, index: v}
+-	if v >= firstCCC {
+-		v += uint16(h&headerLenMask) + 1
+-		ri.tccc = decomps[v]
+-		if v >= firstLeadingCCC {
+-			ri.ccc = decomps[v+1]
+-		}
+-	}
+-	return ri
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/input.go gcc-4.8.1/libgo/go/exp/norm/input.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/input.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/input.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,105 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import "unicode/utf8"
+-
+-type input struct {
+-	str   string
+-	bytes []byte
+-}
+-
+-func inputBytes(str []byte) input {
+-	return input{bytes: str}
+-}
+-
+-func inputString(str string) input {
+-	return input{str: str}
+-}
+-
+-func (in *input) setBytes(str []byte) {
+-	in.str = ""
+-	in.bytes = str
+-}
+-
+-func (in *input) setString(str string) {
+-	in.str = str
+-	in.bytes = nil
+-}
+-
+-func (in *input) _byte(p int) byte {
+-	if in.bytes == nil {
+-		return in.str[p]
+-	}
+-	return in.bytes[p]
+-}
+-
+-func (in *input) skipASCII(p, max int) int {
+-	if in.bytes == nil {
+-		for ; p < max && in.str[p] < utf8.RuneSelf; p++ {
+-		}
+-	} else {
+-		for ; p < max && in.bytes[p] < utf8.RuneSelf; p++ {
+-		}
+-	}
+-	return p
+-}
+-
+-func (in *input) skipNonStarter(p int) int {
+-	if in.bytes == nil {
+-		for ; p < len(in.str) && !utf8.RuneStart(in.str[p]); p++ {
+-		}
+-	} else {
+-		for ; p < len(in.bytes) && !utf8.RuneStart(in.bytes[p]); p++ {
+-		}
+-	}
+-	return p
+-}
+-
+-func (in *input) appendSlice(buf []byte, b, e int) []byte {
+-	if in.bytes != nil {
+-		return append(buf, in.bytes[b:e]...)
+-	}
+-	for i := b; i < e; i++ {
+-		buf = append(buf, in.str[i])
+-	}
+-	return buf
+-}
+-
+-func (in *input) copySlice(buf []byte, b, e int) int {
+-	if in.bytes == nil {
+-		return copy(buf, in.str[b:e])
+-	}
+-	return copy(buf, in.bytes[b:e])
+-}
+-
+-func (in *input) charinfoNFC(p int) (uint16, int) {
+-	if in.bytes == nil {
+-		return nfcTrie.lookupString(in.str[p:])
+-	}
+-	return nfcTrie.lookup(in.bytes[p:])
+-}
+-
+-func (in *input) charinfoNFKC(p int) (uint16, int) {
+-	if in.bytes == nil {
+-		return nfkcTrie.lookupString(in.str[p:])
+-	}
+-	return nfkcTrie.lookup(in.bytes[p:])
+-}
+-
+-func (in *input) hangul(p int) (r rune) {
+-	if in.bytes == nil {
+-		if !isHangulString(in.str[p:]) {
+-			return 0
+-		}
+-		r, _ = utf8.DecodeRuneInString(in.str[p:])
+-	} else {
+-		if !isHangul(in.bytes[p:]) {
+-			return 0
+-		}
+-		r, _ = utf8.DecodeRune(in.bytes[p:])
+-	}
+-	return r
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/iter.go gcc-4.8.1/libgo/go/exp/norm/iter.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/iter.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/iter.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,401 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import (
+-	"fmt"
+-	"unicode/utf8"
+-)
+-
+-const MaxSegmentSize = maxByteBufferSize
+-
+-// An Iter iterates over a string or byte slice, while normalizing it
+-// to a given Form.
+-type Iter struct {
+-	rb     reorderBuffer
+-	buf    [maxByteBufferSize]byte
+-	info   Properties // first character saved from previous iteration
+-	next   iterFunc   // implementation of next depends on form
+-	asciiF iterFunc
+-
+-	p        int    // current position in input source
+-	multiSeg []byte // remainder of multi-segment decomposition
+-}
+-
+-type iterFunc func(*Iter) []byte
+-
+-// Init initializes i to iterate over src after normalizing it to Form f.
+-func (i *Iter) Init(f Form, src []byte) {
+-	i.p = 0
+-	if len(src) == 0 {
+-		i.setDone()
+-		i.rb.nsrc = 0
+-		return
+-	}
+-	i.multiSeg = nil
+-	i.rb.init(f, src)
+-	i.next = i.rb.f.nextMain
+-	i.asciiF = nextASCIIBytes
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-}
+-
+-// InitString initializes i to iterate over src after normalizing it to Form f.
+-func (i *Iter) InitString(f Form, src string) {
+-	i.p = 0
+-	if len(src) == 0 {
+-		i.setDone()
+-		i.rb.nsrc = 0
+-		return
+-	}
+-	i.multiSeg = nil
+-	i.rb.initString(f, src)
+-	i.next = i.rb.f.nextMain
+-	i.asciiF = nextASCIIString
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-}
+-
+-// Seek sets the segment to be returned by the next call to Next to start
+-// at position p.  It is the responsibility of the caller to set p to the
+-// start of a UTF8 rune.
+-func (i *Iter) Seek(offset int64, whence int) (int64, error) {
+-	var abs int64
+-	switch whence {
+-	case 0:
+-		abs = offset
+-	case 1:
+-		abs = int64(i.p) + offset
+-	case 2:
+-		abs = int64(i.rb.nsrc) + offset
+-	default:
+-		return 0, fmt.Errorf("norm: invalid whence")
+-	}
+-	if abs < 0 {
+-		return 0, fmt.Errorf("norm: negative position")
+-	}
+-	if int(abs) >= i.rb.nsrc {
+-		i.setDone()
+-		return int64(i.p), nil
+-	}
+-	i.p = int(abs)
+-	i.multiSeg = nil
+-	i.next = i.rb.f.nextMain
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-	return abs, nil
+-}
+-
+-// returnSlice returns a slice of the underlying input type as a byte slice.
+-// If the underlying is of type []byte, it will simply return a slice.
+-// If the underlying is of type string, it will copy the slice to the buffer
+-// and return that.
+-func (i *Iter) returnSlice(a, b int) []byte {
+-	if i.rb.src.bytes == nil {
+-		return i.buf[:copy(i.buf[:], i.rb.src.str[a:b])]
+-	}
+-	return i.rb.src.bytes[a:b]
+-}
+-
+-// Pos returns the byte position at which the next call to Next will commence processing.
+-func (i *Iter) Pos() int {
+-	return i.p
+-}
+-
+-func (i *Iter) setDone() {
+-	i.next = nextDone
+-	i.p = i.rb.nsrc
+-}
+-
+-// Done returns true if there is no more input to process.
+-func (i *Iter) Done() bool {
+-	return i.p >= i.rb.nsrc
+-}
+-
+-// Next returns f(i.input[i.Pos():n]), where n is a boundary of i.input.
+-// For any input a and b for which f(a) == f(b), subsequent calls
+-// to Next will return the same segments.
+-// Modifying runes are grouped together with the preceding starter, if such a starter exists.
+-// Although not guaranteed, n will typically be the smallest possible n.
+-func (i *Iter) Next() []byte {
+-	return i.next(i)
+-}
+-
+-func nextASCIIBytes(i *Iter) []byte {
+-	p := i.p + 1
+-	if p >= i.rb.nsrc {
+-		i.setDone()
+-		return i.rb.src.bytes[i.p:p]
+-	}
+-	if i.rb.src.bytes[p] < utf8.RuneSelf {
+-		p0 := i.p
+-		i.p = p
+-		return i.rb.src.bytes[p0:p]
+-	}
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-	i.next = i.rb.f.nextMain
+-	return i.next(i)
+-}
+-
+-func nextASCIIString(i *Iter) []byte {
+-	p := i.p + 1
+-	if p >= i.rb.nsrc {
+-		i.buf[0] = i.rb.src.str[i.p]
+-		i.setDone()
+-		return i.buf[:1]
+-	}
+-	if i.rb.src.str[p] < utf8.RuneSelf {
+-		i.buf[0] = i.rb.src.str[i.p]
+-		i.p = p
+-		return i.buf[:1]
+-	}
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-	i.next = i.rb.f.nextMain
+-	return i.next(i)
+-}
+-
+-func nextHangul(i *Iter) []byte {
+-	if r := i.rb.src.hangul(i.p); r != 0 {
+-		i.p += hangulUTF8Size
+-		if i.p >= i.rb.nsrc {
+-			i.setDone()
+-		}
+-		return i.buf[:decomposeHangul(i.buf[:], r)]
+-	}
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-	i.next = i.rb.f.nextMain
+-	return i.next(i)
+-}
+-
+-func nextDone(i *Iter) []byte {
+-	return nil
+-}
+-
+-// nextMulti is used for iterating over multi-segment decompositions
+-// for decomposing normal forms.
+-func nextMulti(i *Iter) []byte {
+-	j := 0
+-	d := i.multiSeg
+-	// skip first rune
+-	for j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ {
+-	}
+-	for j < len(d) {
+-		info := i.rb.f.info(input{bytes: d}, j)
+-		if info.ccc == 0 {
+-			i.multiSeg = d[j:]
+-			return d[:j]
+-		}
+-		j += int(info.size)
+-	}
+-	// treat last segment as normal decomposition
+-	i.next = i.rb.f.nextMain
+-	return i.next(i)
+-}
+-
+-// nextMultiNorm is used for iterating over multi-segment decompositions
+-// for composing normal forms.
+-func nextMultiNorm(i *Iter) []byte {
+-	j := 0
+-	d := i.multiSeg
+-	// skip first rune
+-	for j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ {
+-	}
+-	for j < len(d) {
+-		info := i.rb.f.info(input{bytes: d}, j)
+-		if info.ccc == 0 {
+-			i.multiSeg = d[j:]
+-			return d[:j]
+-		}
+-		j += int(info.size)
+-	}
+-	i.multiSeg = nil
+-	i.next = nextComposed
+-	i.p++ // restore old valud of i.p. See nextComposed.
+-	if i.p >= i.rb.nsrc {
+-		i.setDone()
+-	}
+-	return d
+-}
+-
+-// nextDecomposed is the implementation of Next for forms NFD and NFKD.
+-func nextDecomposed(i *Iter) (next []byte) {
+-	startp, outp := i.p, 0
+-	inCopyStart, outCopyStart := i.p, 0
+-	for {
+-		if sz := int(i.info.size); sz <= 1 {
+-			p := i.p
+-			i.p++ // ASCII or illegal byte.  Either way, advance by 1.
+-			if i.p >= i.rb.nsrc {
+-				i.setDone()
+-				return i.returnSlice(p, i.p)
+-			} else if i.rb.src._byte(i.p) < utf8.RuneSelf {
+-				i.next = i.asciiF
+-				return i.returnSlice(p, i.p)
+-			}
+-			outp++
+-		} else if d := i.info.Decomposition(); d != nil {
+-			// Note: If leading CCC != 0, then len(d) == 2 and last is also non-zero.
+-			// Case 1: there is a leftover to copy.  In this case the decomposition
+-			// must begin with a modifier and should always be appended.
+-			// Case 2: no leftover. Simply return d if followed by a ccc == 0 value.
+-			p := outp + len(d)
+-			if outp > 0 {
+-				i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)
+-				if p > len(i.buf) {
+-					return i.buf[:outp]
+-				}
+-			} else if i.info.multiSegment() {
+-				// outp must be 0 as multi-segment decompositions always
+-				// start a new segment.
+-				if i.multiSeg == nil {
+-					i.multiSeg = d
+-					i.next = nextMulti
+-					return nextMulti(i)
+-				}
+-				// We are in the last segment.  Treat as normal decomposition.
+-				d = i.multiSeg
+-				i.multiSeg = nil
+-				p = len(d)
+-			}
+-			prevCC := i.info.tccc
+-			if i.p += sz; i.p >= i.rb.nsrc {
+-				i.setDone()
+-				i.info = Properties{} // Force BoundaryBefore to succeed.
+-			} else {
+-				i.info = i.rb.f.info(i.rb.src, i.p)
+-			}
+-			if i.info.BoundaryBefore() {
+-				if outp > 0 {
+-					copy(i.buf[outp:], d)
+-					return i.buf[:p]
+-				}
+-				return d
+-			}
+-			copy(i.buf[outp:], d)
+-			outp = p
+-			inCopyStart, outCopyStart = i.p, outp
+-			if i.info.ccc < prevCC {
+-				goto doNorm
+-			}
+-			continue
+-		} else if r := i.rb.src.hangul(i.p); r != 0 {
+-			i.next = nextHangul
+-			i.p += hangulUTF8Size
+-			if i.p >= i.rb.nsrc {
+-				i.setDone()
+-			}
+-			return i.buf[:decomposeHangul(i.buf[:], r)]
+-		} else {
+-			p := outp + sz
+-			if p > len(i.buf) {
+-				break
+-			}
+-			outp = p
+-			i.p += sz
+-		}
+-		if i.p >= i.rb.nsrc {
+-			i.setDone()
+-			break
+-		}
+-		prevCC := i.info.tccc
+-		i.info = i.rb.f.info(i.rb.src, i.p)
+-		if i.info.BoundaryBefore() {
+-			break
+-		} else if i.info.ccc < prevCC {
+-			goto doNorm
+-		}
+-	}
+-	if outCopyStart == 0 {
+-		return i.returnSlice(inCopyStart, i.p)
+-	} else if inCopyStart < i.p {
+-		i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)
+-	}
+-	return i.buf[:outp]
+-doNorm:
+-	// Insert what we have decomposed so far in the reorderBuffer.
+-	// As we will only reorder, there will always be enough room.
+-	i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p)
+-	if !i.rb.insertDecomposed(i.buf[0:outp]) {
+-		// Start over to prevent decompositions from crossing segment boundaries.
+-		// This is a rare occurrence.
+-		i.p = startp
+-		i.info = i.rb.f.info(i.rb.src, i.p)
+-	}
+-	for {
+-		if !i.rb.insert(i.rb.src, i.p, i.info) {
+-			break
+-		}
+-		if i.p += int(i.info.size); i.p >= i.rb.nsrc {
+-			i.setDone()
+-			break
+-		}
+-		i.info = i.rb.f.info(i.rb.src, i.p)
+-		if i.info.ccc == 0 {
+-			break
+-		}
+-	}
+-	// new segment or too many combining characters: exit normalization
+-	return i.buf[:i.rb.flushCopy(i.buf[:])]
+-}
+-
+-// nextComposed is the implementation of Next for forms NFC and NFKC.
+-func nextComposed(i *Iter) []byte {
+-	outp, startp := 0, i.p
+-	var prevCC uint8
+-	for {
+-		if !i.info.isYesC() {
+-			goto doNorm
+-		}
+-		if cc := i.info.ccc; cc == 0 && outp > 0 {
+-			break
+-		} else if cc < prevCC {
+-			goto doNorm
+-		}
+-		prevCC = i.info.tccc
+-		sz := int(i.info.size)
+-		if sz == 0 {
+-			sz = 1 // illegal rune: copy byte-by-byte
+-		}
+-		p := outp + sz
+-		if p > len(i.buf) {
+-			break
+-		}
+-		outp = p
+-		i.p += sz
+-		if i.p >= i.rb.nsrc {
+-			i.setDone()
+-			break
+-		} else if i.rb.src._byte(i.p) < utf8.RuneSelf {
+-			i.next = i.asciiF
+-			break
+-		}
+-		i.info = i.rb.f.info(i.rb.src, i.p)
+-	}
+-	return i.returnSlice(startp, i.p)
+-doNorm:
+-	multi := false
+-	i.p = startp
+-	i.info = i.rb.f.info(i.rb.src, i.p)
+-	for {
+-		if !i.rb.insert(i.rb.src, i.p, i.info) {
+-			break
+-		}
+-		multi = multi || i.info.multiSegment()
+-		if i.p += int(i.info.size); i.p >= i.rb.nsrc {
+-			i.setDone()
+-			break
+-		}
+-		i.info = i.rb.f.info(i.rb.src, i.p)
+-		if i.info.BoundaryBefore() {
+-			break
+-		}
+-	}
+-	i.rb.compose()
+-	seg := i.buf[:i.rb.flushCopy(i.buf[:])]
+-	if multi {
+-		i.p-- // fake not being done yet
+-		i.multiSeg = seg
+-		i.next = nextMultiNorm
+-		return nextMultiNorm(i)
+-	}
+-	return seg
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/iter_test.go gcc-4.8.1/libgo/go/exp/norm/iter_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/iter_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/iter_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,188 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import (
+-	"strings"
+-	"testing"
+-)
+-
+-func doIterNorm(f Form, s string) []byte {
+-	acc := []byte{}
+-	i := Iter{}
+-	i.InitString(f, s)
+-	for !i.Done() {
+-		acc = append(acc, i.Next()...)
+-	}
+-	return acc
+-}
+-
+-func runIterTests(t *testing.T, name string, f Form, tests []AppendTest, norm bool) {
+-	for i, test := range tests {
+-		in := test.left + test.right
+-		gold := test.out
+-		if norm {
+-			gold = string(f.AppendString(nil, test.out))
+-		}
+-		out := string(doIterNorm(f, in))
+-		if len(out) != len(gold) {
+-			const msg = "%s:%d: length is %d; want %d"
+-			t.Errorf(msg, name, i, len(out), len(gold))
+-		}
+-		if out != gold {
+-			// Find first rune that differs and show context.
+-			ir := []rune(out)
+-			ig := []rune(gold)
+-			t.Errorf("\n%X != \n%X", ir, ig)
+-			for j := 0; j < len(ir) && j < len(ig); j++ {
+-				if ir[j] == ig[j] {
+-					continue
+-				}
+-				if j -= 3; j < 0 {
+-					j = 0
+-				}
+-				for e := j + 7; j < e && j < len(ir) && j < len(ig); j++ {
+-					const msg = "%s:%d: runeAt(%d) = %U; want %U"
+-					t.Errorf(msg, name, i, j, ir[j], ig[j])
+-				}
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-func rep(r rune, n int) string {
+-	return strings.Repeat(string(r), n)
+-}
+-
+-const segSize = maxByteBufferSize
+-
+-var iterTests = []AppendTest{
+-	{"", ascii, ascii},
+-	{"", txt_all, txt_all},
+-	{"", "a" + rep(0x0300, segSize/2), "a" + rep(0x0300, segSize/2)},
+-}
+-
+-var iterTestsD = []AppendTest{
+-	{ // segment overflow on unchanged character
+-		"",
+-		"a" + rep(0x0300, segSize/2) + "\u0316",
+-		"a" + rep(0x0300, segSize/2-1) + "\u0316\u0300",
+-	},
+-	{ // segment overflow on unchanged character + start value
+-		"",
+-		"a" + rep(0x0300, segSize/2+maxCombiningChars+4) + "\u0316",
+-		"a" + rep(0x0300, segSize/2+maxCombiningChars) + "\u0316" + rep(0x300, 4),
+-	},
+-	{ // segment overflow on decomposition
+-		"",
+-		"a" + rep(0x0300, segSize/2-1) + "\u0340",
+-		"a" + rep(0x0300, segSize/2),
+-	},
+-	{ // segment overflow on decomposition + start value
+-		"",
+-		"a" + rep(0x0300, segSize/2-1) + "\u0340" + rep(0x300, maxCombiningChars+4) + "\u0320",
+-		"a" + rep(0x0300, segSize/2-1) + rep(0x300, maxCombiningChars+1) + "\u0320" + rep(0x300, 4),
+-	},
+-	{ // start value after ASCII overflow
+-		"",
+-		rep('a', segSize) + rep(0x300, maxCombiningChars+2) + "\u0320",
+-		rep('a', segSize) + rep(0x300, maxCombiningChars) + "\u0320\u0300\u0300",
+-	},
+-	{ // start value after Hangul overflow
+-		"",
+-		rep(0xAC00, segSize/6) + rep(0x300, maxCombiningChars+2) + "\u0320",
+-		strings.Repeat("\u1100\u1161", segSize/6) + rep(0x300, maxCombiningChars+1) + "\u0320" + rep(0x300, 1),
+-	},
+-	{ // start value after cc=0
+-		"",
+-		"æšæš" + rep(0x300, maxCombiningChars+4) + "\u0320",
+-		"æšæš" + rep(0x300, maxCombiningChars) + "\u0320" + rep(0x300, 4),
+-	},
+-	{ // start value after normalization
+-		"",
+-		"\u0300\u0320a" + rep(0x300, maxCombiningChars+4) + "\u0320",
+-		"\u0320\u0300a" + rep(0x300, maxCombiningChars) + "\u0320" + rep(0x300, 4),
+-	},
+-}
+-
+-var iterTestsC = []AppendTest{
+-	{ // ordering of non-composing combining characters
+-		"",
+-		"\u0305\u0316",
+-		"\u0316\u0305",
+-	},
+-	{ // segment overflow
+-		"",
+-		"a" + rep(0x0305, segSize/2+4) + "\u0316",
+-		"a" + rep(0x0305, segSize/2-1) + "\u0316" + rep(0x305, 5),
+-	},
+-}
+-
+-func TestIterNextD(t *testing.T) {
+-	runIterTests(t, "IterNextD1", NFKD, appendTests, true)
+-	runIterTests(t, "IterNextD2", NFKD, iterTests, true)
+-	runIterTests(t, "IterNextD3", NFKD, iterTestsD, false)
+-}
+-
+-func TestIterNextC(t *testing.T) {
+-	runIterTests(t, "IterNextC1", NFKC, appendTests, true)
+-	runIterTests(t, "IterNextC2", NFKC, iterTests, true)
+-	runIterTests(t, "IterNextC3", NFKC, iterTestsC, false)
+-}
+-
+-type SegmentTest struct {
+-	in  string
+-	out []string
+-}
+-
+-var segmentTests = []SegmentTest{
+-	{"\u1E0A\u0323a", []string{"\x44\u0323\u0307", "a", ""}},
+-	{rep('a', segSize), append(strings.Split(rep('a', segSize), ""), "")},
+-	{rep('a', segSize+2), append(strings.Split(rep('a', segSize+2), ""), "")},
+-	{rep('a', segSize) + "\u0300aa",
+-		append(strings.Split(rep('a', segSize-1), ""), "a\u0300", "a", "a", "")},
+-}
+-
+-var segmentTestsK = []SegmentTest{
+-	{"\u3332", []string{"\u30D5", "\u30A1", "\u30E9", "\u30C3", "\u30C8\u3099", ""}},
+-	// last segment of multi-segment decomposition needs normalization
+-	{"\u3332\u093C", []string{"\u30D5", "\u30A1", "\u30E9", "\u30C3", "\u30C8\u093C\u3099", ""}},
+-	// Hangul and Jamo are grouped togeter.
+-	{"\uAC00", []string{"\u1100\u1161", ""}},
+-	{"\uAC01", []string{"\u1100\u1161\u11A8", ""}},
+-	{"\u1100\u1161", []string{"\u1100\u1161", ""}},
+-}
+-
+-// Note that, by design, segmentation is equal for composing and decomposing forms.
+-func TestIterSegmentation(t *testing.T) {
+-	segmentTest(t, "SegmentTestD", NFD, segmentTests)
+-	segmentTest(t, "SegmentTestC", NFC, segmentTests)
+-	segmentTest(t, "SegmentTestD", NFKD, segmentTestsK)
+-	segmentTest(t, "SegmentTestC", NFKC, segmentTestsK)
+-}
+-
+-func segmentTest(t *testing.T, name string, f Form, tests []SegmentTest) {
+-	iter := Iter{}
+-	for i, tt := range tests {
+-		iter.InitString(f, tt.in)
+-		for j, seg := range tt.out {
+-			if seg == "" {
+-				if !iter.Done() {
+-					res := string(iter.Next())
+-					t.Errorf(`%s:%d:%d: expected Done()==true, found segment "%s"`, name, i, j, res)
+-				}
+-				continue
+-			}
+-			if iter.Done() {
+-				t.Errorf("%s:%d:%d: Done()==true, want false", name, i, j)
+-			}
+-			seg = f.String(seg)
+-			if res := string(iter.Next()); res != seg {
+-				t.Errorf(`%s:%d:%d" segment was "%s" (%d); want "%s" (%d) %X %X`, name, i, j, res, len(res), seg, len(seg), []rune(res), []rune(seg))
+-			}
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/maketables.go gcc-4.8.1/libgo/go/exp/norm/maketables.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/maketables.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/maketables.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,934 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-// Normalization table generator.
+-// Data read from the web.
+-// See forminfo.go for a description of the trie values associated with each rune.
+-
+-package main
+-
+-import (
+-	"bufio"
+-	"bytes"
+-	"flag"
+-	"fmt"
+-	"io"
+-	"log"
+-	"net/http"
+-	"os"
+-	"regexp"
+-	"sort"
+-	"strconv"
+-	"strings"
+-	"unicode"
+-)
+-
+-func main() {
+-	flag.Parse()
+-	loadUnicodeData()
+-	loadCompositionExclusions()
+-	completeCharFields(FCanonical)
+-	completeCharFields(FCompatibility)
+-	verifyComputed()
+-	printChars()
+-	makeTables()
+-	testDerived()
+-}
+-
+-var url = flag.String("url",
+-	"http://www.unicode.org/Public/"+unicode.Version+"/ucd/",
+-	"URL of Unicode database directory")
+-var tablelist = flag.String("tables",
+-	"all",
+-	"comma-separated list of which tables to generate; "+
+-		"can be 'decomp', 'recomp', 'info' and 'all'")
+-var test = flag.Bool("test",
+-	false,
+-	"test existing tables; can be used to compare web data with package data")
+-var verbose = flag.Bool("verbose",
+-	false,
+-	"write data to stdout as it is parsed")
+-var localFiles = flag.Bool("local",
+-	false,
+-	"data files have been copied to the current directory; for debugging only")
+-
+-var logger = log.New(os.Stderr, "", log.Lshortfile)
+-
+-// UnicodeData.txt has form:
+-//	0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+-//	007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+-// See http://unicode.org/reports/tr44/ for full explanation
+-// The fields:
+-const (
+-	FCodePoint = iota
+-	FName
+-	FGeneralCategory
+-	FCanonicalCombiningClass
+-	FBidiClass
+-	FDecompMapping
+-	FDecimalValue
+-	FDigitValue
+-	FNumericValue
+-	FBidiMirrored
+-	FUnicode1Name
+-	FISOComment
+-	FSimpleUppercaseMapping
+-	FSimpleLowercaseMapping
+-	FSimpleTitlecaseMapping
+-	NumField
+-
+-	MaxChar = 0x10FFFF // anything above this shouldn't exist
+-)
+-
+-// Quick Check properties of runes allow us to quickly
+-// determine whether a rune may occur in a normal form.
+-// For a given normal form, a rune may be guaranteed to occur
+-// verbatim (QC=Yes), may or may not combine with another
+-// rune (QC=Maybe), or may not occur (QC=No).
+-type QCResult int
+-
+-const (
+-	QCUnknown QCResult = iota
+-	QCYes
+-	QCNo
+-	QCMaybe
+-)
+-
+-func (r QCResult) String() string {
+-	switch r {
+-	case QCYes:
+-		return "Yes"
+-	case QCNo:
+-		return "No"
+-	case QCMaybe:
+-		return "Maybe"
+-	}
+-	return "***UNKNOWN***"
+-}
+-
+-const (
+-	FCanonical     = iota // NFC or NFD
+-	FCompatibility        // NFKC or NFKD
+-	FNumberOfFormTypes
+-)
+-
+-const (
+-	MComposed   = iota // NFC or NFKC
+-	MDecomposed        // NFD or NFKD
+-	MNumberOfModes
+-)
+-
+-// This contains only the properties we're interested in.
+-type Char struct {
+-	name          string
+-	codePoint     rune  // if zero, this index is not a valid code point.
+-	ccc           uint8 // canonical combining class
+-	excludeInComp bool  // from CompositionExclusions.txt
+-	compatDecomp  bool  // it has a compatibility expansion
+-
+-	forms [FNumberOfFormTypes]FormInfo // For FCanonical and FCompatibility
+-
+-	state State
+-}
+-
+-var chars = make([]Char, MaxChar+1)
+-
+-func (c Char) String() string {
+-	buf := new(bytes.Buffer)
+-
+-	fmt.Fprintf(buf, "%U [%s]:\n", c.codePoint, c.name)
+-	fmt.Fprintf(buf, "  ccc: %v\n", c.ccc)
+-	fmt.Fprintf(buf, "  excludeInComp: %v\n", c.excludeInComp)
+-	fmt.Fprintf(buf, "  compatDecomp: %v\n", c.compatDecomp)
+-	fmt.Fprintf(buf, "  state: %v\n", c.state)
+-	fmt.Fprintf(buf, "  NFC:\n")
+-	fmt.Fprint(buf, c.forms[FCanonical])
+-	fmt.Fprintf(buf, "  NFKC:\n")
+-	fmt.Fprint(buf, c.forms[FCompatibility])
+-
+-	return buf.String()
+-}
+-
+-// In UnicodeData.txt, some ranges are marked like this:
+-//	3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+-//	4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+-// parseCharacter keeps a state variable indicating the weirdness.
+-type State int
+-
+-const (
+-	SNormal State = iota // known to be zero for the type
+-	SFirst
+-	SLast
+-	SMissing
+-)
+-
+-var lastChar = rune('\u0000')
+-
+-func (c Char) isValid() bool {
+-	return c.codePoint != 0 && c.state != SMissing
+-}
+-
+-type FormInfo struct {
+-	quickCheck [MNumberOfModes]QCResult // index: MComposed or MDecomposed
+-	verified   [MNumberOfModes]bool     // index: MComposed or MDecomposed
+-
+-	combinesForward  bool // May combine with rune on the right
+-	combinesBackward bool // May combine with rune on the left
+-	isOneWay         bool // Never appears in result
+-	inDecomp         bool // Some decompositions result in this char.
+-	decomp           Decomposition
+-	expandedDecomp   Decomposition
+-}
+-
+-func (f FormInfo) String() string {
+-	buf := bytes.NewBuffer(make([]byte, 0))
+-
+-	fmt.Fprintf(buf, "    quickCheck[C]: %v\n", f.quickCheck[MComposed])
+-	fmt.Fprintf(buf, "    quickCheck[D]: %v\n", f.quickCheck[MDecomposed])
+-	fmt.Fprintf(buf, "    cmbForward: %v\n", f.combinesForward)
+-	fmt.Fprintf(buf, "    cmbBackward: %v\n", f.combinesBackward)
+-	fmt.Fprintf(buf, "    isOneWay: %v\n", f.isOneWay)
+-	fmt.Fprintf(buf, "    inDecomp: %v\n", f.inDecomp)
+-	fmt.Fprintf(buf, "    decomposition: %X\n", f.decomp)
+-	fmt.Fprintf(buf, "    expandedDecomp: %X\n", f.expandedDecomp)
+-
+-	return buf.String()
+-}
+-
+-type Decomposition []rune
+-
+-func openReader(file string) (input io.ReadCloser) {
+-	if *localFiles {
+-		f, err := os.Open(file)
+-		if err != nil {
+-			logger.Fatal(err)
+-		}
+-		input = f
+-	} else {
+-		path := *url + file
+-		resp, err := http.Get(path)
+-		if err != nil {
+-			logger.Fatal(err)
+-		}
+-		if resp.StatusCode != 200 {
+-			logger.Fatal("bad GET status for "+file, resp.Status)
+-		}
+-		input = resp.Body
+-	}
+-	return
+-}
+-
+-func parseDecomposition(s string, skipfirst bool) (a []rune, e error) {
+-	decomp := strings.Split(s, " ")
+-	if len(decomp) > 0 && skipfirst {
+-		decomp = decomp[1:]
+-	}
+-	for _, d := range decomp {
+-		point, err := strconv.ParseUint(d, 16, 64)
+-		if err != nil {
+-			return a, err
+-		}
+-		a = append(a, rune(point))
+-	}
+-	return a, nil
+-}
+-
+-func parseCharacter(line string) {
+-	field := strings.Split(line, ";")
+-	if len(field) != NumField {
+-		logger.Fatalf("%5s: %d fields (expected %d)\n", line, len(field), NumField)
+-	}
+-	x, err := strconv.ParseUint(field[FCodePoint], 16, 64)
+-	point := int(x)
+-	if err != nil {
+-		logger.Fatalf("%.5s...: %s", line, err)
+-	}
+-	if point == 0 {
+-		return // not interesting and we use 0 as unset
+-	}
+-	if point > MaxChar {
+-		logger.Fatalf("%5s: Rune %X > MaxChar (%X)", line, point, MaxChar)
+-		return
+-	}
+-	state := SNormal
+-	switch {
+-	case strings.Index(field[FName], ", First>") > 0:
+-		state = SFirst
+-	case strings.Index(field[FName], ", Last>") > 0:
+-		state = SLast
+-	}
+-	firstChar := lastChar + 1
+-	lastChar = rune(point)
+-	if state != SLast {
+-		firstChar = lastChar
+-	}
+-	x, err = strconv.ParseUint(field[FCanonicalCombiningClass], 10, 64)
+-	if err != nil {
+-		logger.Fatalf("%U: bad ccc field: %s", int(x), err)
+-	}
+-	ccc := uint8(x)
+-	decmap := field[FDecompMapping]
+-	exp, e := parseDecomposition(decmap, false)
+-	isCompat := false
+-	if e != nil {
+-		if len(decmap) > 0 {
+-			exp, e = parseDecomposition(decmap, true)
+-			if e != nil {
+-				logger.Fatalf(`%U: bad decomp |%v|: "%s"`, int(x), decmap, e)
+-			}
+-			isCompat = true
+-		}
+-	}
+-	for i := firstChar; i <= lastChar; i++ {
+-		char := &chars[i]
+-		char.name = field[FName]
+-		char.codePoint = i
+-		char.forms[FCompatibility].decomp = exp
+-		if !isCompat {
+-			char.forms[FCanonical].decomp = exp
+-		} else {
+-			char.compatDecomp = true
+-		}
+-		if len(decmap) > 0 {
+-			char.forms[FCompatibility].decomp = exp
+-		}
+-		char.ccc = ccc
+-		char.state = SMissing
+-		if i == lastChar {
+-			char.state = state
+-		}
+-	}
+-	return
+-}
+-
+-func loadUnicodeData() {
+-	f := openReader("UnicodeData.txt")
+-	defer f.Close()
+-	input := bufio.NewReader(f)
+-	for {
+-		line, err := input.ReadString('\n')
+-		if err != nil {
+-			if err == io.EOF {
+-				break
+-			}
+-			logger.Fatal(err)
+-		}
+-		parseCharacter(line[0 : len(line)-1])
+-	}
+-}
+-
+-var singlePointRe = regexp.MustCompile(`^([0-9A-F]+) *$`)
+-
+-// CompositionExclusions.txt has form:
+-// 0958    # ...
+-// See http://unicode.org/reports/tr44/ for full explanation
+-func parseExclusion(line string) int {
+-	comment := strings.Index(line, "#")
+-	if comment >= 0 {
+-		line = line[0:comment]
+-	}
+-	if len(line) == 0 {
+-		return 0
+-	}
+-	matches := singlePointRe.FindStringSubmatch(line)
+-	if len(matches) != 2 {
+-		logger.Fatalf("%s: %d matches (expected 1)\n", line, len(matches))
+-	}
+-	point, err := strconv.ParseUint(matches[1], 16, 64)
+-	if err != nil {
+-		logger.Fatalf("%.5s...: %s", line, err)
+-	}
+-	return int(point)
+-}
+-
+-func loadCompositionExclusions() {
+-	f := openReader("CompositionExclusions.txt")
+-	defer f.Close()
+-	input := bufio.NewReader(f)
+-	for {
+-		line, err := input.ReadString('\n')
+-		if err != nil {
+-			if err == io.EOF {
+-				break
+-			}
+-			logger.Fatal(err)
+-		}
+-		point := parseExclusion(line[0 : len(line)-1])
+-		if point == 0 {
+-			continue
+-		}
+-		c := &chars[point]
+-		if c.excludeInComp {
+-			logger.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint)
+-		}
+-		c.excludeInComp = true
+-	}
+-}
+-
+-// hasCompatDecomp returns true if any of the recursive
+-// decompositions contains a compatibility expansion.
+-// In this case, the character may not occur in NFK*.
+-func hasCompatDecomp(r rune) bool {
+-	c := &chars[r]
+-	if c.compatDecomp {
+-		return true
+-	}
+-	for _, d := range c.forms[FCompatibility].decomp {
+-		if hasCompatDecomp(d) {
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-// Hangul related constants.
+-const (
+-	HangulBase = 0xAC00
+-	HangulEnd  = 0xD7A4 // hangulBase + Jamo combinations (19 * 21 * 28)
+-
+-	JamoLBase = 0x1100
+-	JamoLEnd  = 0x1113
+-	JamoVBase = 0x1161
+-	JamoVEnd  = 0x1176
+-	JamoTBase = 0x11A8
+-	JamoTEnd  = 0x11C3
+-)
+-
+-func isHangul(r rune) bool {
+-	return HangulBase <= r && r < HangulEnd
+-}
+-
+-func ccc(r rune) uint8 {
+-	return chars[r].ccc
+-}
+-
+-// Insert a rune in a buffer, ordered by Canonical Combining Class.
+-func insertOrdered(b Decomposition, r rune) Decomposition {
+-	n := len(b)
+-	b = append(b, 0)
+-	cc := ccc(r)
+-	if cc > 0 {
+-		// Use bubble sort.
+-		for ; n > 0; n-- {
+-			if ccc(b[n-1]) <= cc {
+-				break
+-			}
+-			b[n] = b[n-1]
+-		}
+-	}
+-	b[n] = r
+-	return b
+-}
+-
+-// Recursively decompose.
+-func decomposeRecursive(form int, r rune, d Decomposition) Decomposition {
+-	if isHangul(r) {
+-		return d
+-	}
+-	dcomp := chars[r].forms[form].decomp
+-	if len(dcomp) == 0 {
+-		return insertOrdered(d, r)
+-	}
+-	for _, c := range dcomp {
+-		d = decomposeRecursive(form, c, d)
+-	}
+-	return d
+-}
+-
+-func completeCharFields(form int) {
+-	// Phase 0: pre-expand decomposition.
+-	for i := range chars {
+-		f := &chars[i].forms[form]
+-		if len(f.decomp) == 0 {
+-			continue
+-		}
+-		exp := make(Decomposition, 0)
+-		for _, c := range f.decomp {
+-			exp = decomposeRecursive(form, c, exp)
+-		}
+-		f.expandedDecomp = exp
+-	}
+-
+-	// Phase 1: composition exclusion, mark decomposition.
+-	for i := range chars {
+-		c := &chars[i]
+-		f := &c.forms[form]
+-
+-		// Marks script-specific exclusions and version restricted.
+-		f.isOneWay = c.excludeInComp
+-
+-		// Singletons
+-		f.isOneWay = f.isOneWay || len(f.decomp) == 1
+-
+-		// Non-starter decompositions
+-		if len(f.decomp) > 1 {
+-			chk := c.ccc != 0 || chars[f.decomp[0]].ccc != 0
+-			f.isOneWay = f.isOneWay || chk
+-		}
+-
+-		// Runes that decompose into more than two runes.
+-		f.isOneWay = f.isOneWay || len(f.decomp) > 2
+-
+-		if form == FCompatibility {
+-			f.isOneWay = f.isOneWay || hasCompatDecomp(c.codePoint)
+-		}
+-
+-		for _, r := range f.decomp {
+-			chars[r].forms[form].inDecomp = true
+-		}
+-	}
+-
+-	// Phase 2: forward and backward combining.
+-	for i := range chars {
+-		c := &chars[i]
+-		f := &c.forms[form]
+-
+-		if !f.isOneWay && len(f.decomp) == 2 {
+-			f0 := &chars[f.decomp[0]].forms[form]
+-			f1 := &chars[f.decomp[1]].forms[form]
+-			if !f0.isOneWay {
+-				f0.combinesForward = true
+-			}
+-			if !f1.isOneWay {
+-				f1.combinesBackward = true
+-			}
+-		}
+-	}
+-
+-	// Phase 3: quick check values.
+-	for i := range chars {
+-		c := &chars[i]
+-		f := &c.forms[form]
+-
+-		switch {
+-		case len(f.decomp) > 0:
+-			f.quickCheck[MDecomposed] = QCNo
+-		case isHangul(rune(i)):
+-			f.quickCheck[MDecomposed] = QCNo
+-		default:
+-			f.quickCheck[MDecomposed] = QCYes
+-		}
+-		switch {
+-		case f.isOneWay:
+-			f.quickCheck[MComposed] = QCNo
+-		case (i & 0xffff00) == JamoLBase:
+-			f.quickCheck[MComposed] = QCYes
+-			if JamoLBase <= i && i < JamoLEnd {
+-				f.combinesForward = true
+-			}
+-			if JamoVBase <= i && i < JamoVEnd {
+-				f.quickCheck[MComposed] = QCMaybe
+-				f.combinesBackward = true
+-				f.combinesForward = true
+-			}
+-			if JamoTBase <= i && i < JamoTEnd {
+-				f.quickCheck[MComposed] = QCMaybe
+-				f.combinesBackward = true
+-			}
+-		case !f.combinesBackward:
+-			f.quickCheck[MComposed] = QCYes
+-		default:
+-			f.quickCheck[MComposed] = QCMaybe
+-		}
+-	}
+-}
+-
+-func printBytes(b []byte, name string) {
+-	fmt.Printf("// %s: %d bytes\n", name, len(b))
+-	fmt.Printf("var %s = [...]byte {", name)
+-	for i, c := range b {
+-		switch {
+-		case i%64 == 0:
+-			fmt.Printf("\n// Bytes %x - %x\n", i, i+63)
+-		case i%8 == 0:
+-			fmt.Printf("\n")
+-		}
+-		fmt.Printf("0x%.2X, ", c)
+-	}
+-	fmt.Print("\n}\n\n")
+-}
+-
+-// See forminfo.go for format.
+-func makeEntry(f *FormInfo) uint16 {
+-	e := uint16(0)
+-	if f.combinesForward {
+-		e |= 0x8
+-	}
+-	if f.quickCheck[MDecomposed] == QCNo {
+-		e |= 0x1
+-	}
+-	switch f.quickCheck[MComposed] {
+-	case QCYes:
+-	case QCNo:
+-		e |= 0x4
+-	case QCMaybe:
+-		e |= 0x6
+-	default:
+-		log.Fatalf("Illegal quickcheck value %v.", f.quickCheck[MComposed])
+-	}
+-	return e
+-}
+-
+-// decompSet keeps track of unique decompositions, grouped by whether
+-// the decomposition is followed by a trailing and/or leading CCC.
+-type decompSet [6]map[string]bool
+-
+-const (
+-	normalDecomp = iota
+-	firstMulti
+-	firstCCC
+-	endMulti
+-	firstLeadingCCC
+-	firstCCCZeroExcept
+-	lastDecomp
+-)
+-
+-var cname = []string{"firstMulti", "firstCCC", "endMulti", "firstLeadingCCC", "firstCCCZeroExcept", "lastDecomp"}
+-
+-func makeDecompSet() decompSet {
+-	m := decompSet{}
+-	for i := range m {
+-		m[i] = make(map[string]bool)
+-	}
+-	return m
+-}
+-func (m *decompSet) insert(key int, s string) {
+-	m[key][s] = true
+-}
+-
+-func printCharInfoTables() int {
+-	mkstr := func(r rune, f *FormInfo) (int, string) {
+-		d := f.expandedDecomp
+-		s := string([]rune(d))
+-		if max := 1 << 6; len(s) >= max {
+-			const msg = "%U: too many bytes in decomposition: %d >= %d"
+-			logger.Fatalf(msg, r, len(s), max)
+-		}
+-		head := uint8(len(s))
+-		if f.quickCheck[MComposed] != QCYes {
+-			head |= 0x40
+-		}
+-		if f.combinesForward {
+-			head |= 0x80
+-		}
+-		s = string([]byte{head}) + s
+-
+-		lccc := ccc(d[0])
+-		tccc := ccc(d[len(d)-1])
+-		cc := ccc(r)
+-		if cc != 0 && lccc == 0 && tccc == 0 {
+-			logger.Fatalf("%U: trailing and leading ccc are 0 for non-zero ccc %d", r, cc)
+-		}
+-		if tccc < lccc && lccc != 0 {
+-			const msg = "%U: lccc (%d) must be <= tcc (%d)"
+-			logger.Fatalf(msg, r, lccc, tccc)
+-		}
+-		index := normalDecomp
+-		if tccc > 0 || lccc > 0 {
+-			s += string([]byte{tccc})
+-			index = endMulti
+-			for _, r := range d[1:] {
+-				if ccc(r) == 0 {
+-					index = firstCCC
+-				}
+-			}
+-			if lccc > 0 {
+-				s += string([]byte{lccc})
+-				if index == firstCCC {
+-					logger.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r)
+-				}
+-				index = firstLeadingCCC
+-			}
+-			if cc != lccc {
+-				if cc != 0 {
+-					logger.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc)
+-				}
+-				index = firstCCCZeroExcept
+-			}
+-		} else if len(d) > 1 {
+-			index = firstMulti
+-		}
+-		return index, s
+-	}
+-
+-	decompSet := makeDecompSet()
+-
+-	// Store the uniqued decompositions in a byte buffer,
+-	// preceded by their byte length.
+-	for _, c := range chars {
+-		for _, f := range c.forms {
+-			if len(f.expandedDecomp) == 0 {
+-				continue
+-			}
+-			if f.combinesBackward {
+-				logger.Fatalf("%U: combinesBackward and decompose", c.codePoint)
+-			}
+-			index, s := mkstr(c.codePoint, &f)
+-			decompSet.insert(index, s)
+-		}
+-	}
+-
+-	decompositions := bytes.NewBuffer(make([]byte, 0, 10000))
+-	size := 0
+-	positionMap := make(map[string]uint16)
+-	decompositions.WriteString("\000")
+-	fmt.Println("const (")
+-	for i, m := range decompSet {
+-		sa := []string{}
+-		for s := range m {
+-			sa = append(sa, s)
+-		}
+-		sort.Strings(sa)
+-		for _, s := range sa {
+-			p := decompositions.Len()
+-			decompositions.WriteString(s)
+-			positionMap[s] = uint16(p)
+-		}
+-		if cname[i] != "" {
+-			fmt.Printf("%s = 0x%X\n", cname[i], decompositions.Len())
+-		}
+-	}
+-	fmt.Println("maxDecomp = 0x8000")
+-	fmt.Println(")")
+-	b := decompositions.Bytes()
+-	printBytes(b, "decomps")
+-	size += len(b)
+-
+-	varnames := []string{"nfc", "nfkc"}
+-	for i := 0; i < FNumberOfFormTypes; i++ {
+-		trie := newNode()
+-		for r, c := range chars {
+-			f := c.forms[i]
+-			d := f.expandedDecomp
+-			if len(d) != 0 {
+-				_, key := mkstr(c.codePoint, &f)
+-				trie.insert(rune(r), positionMap[key])
+-				if c.ccc != ccc(d[0]) {
+-					// We assume the lead ccc of a decomposition !=0 in this case.
+-					if ccc(d[0]) == 0 {
+-						logger.Fatalf("Expected leading CCC to be non-zero; ccc is %d", c.ccc)
+-					}
+-				}
+-			} else if v := makeEntry(&f)<<8 | uint16(c.ccc); v != 0 {
+-				trie.insert(c.codePoint, 0x8000|v)
+-			}
+-		}
+-		size += trie.printTables(varnames[i])
+-	}
+-	return size
+-}
+-
+-func contains(sa []string, s string) bool {
+-	for _, a := range sa {
+-		if a == s {
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-// Extract the version number from the URL.
+-func version() string {
+-	// From http://www.unicode.org/standard/versions/#Version_Numbering:
+-	// for the later Unicode versions, data files are located in
+-	// versioned directories.
+-	fields := strings.Split(*url, "/")
+-	for _, f := range fields {
+-		if match, _ := regexp.MatchString(`[0-9]\.[0-9]\.[0-9]`, f); match {
+-			return f
+-		}
+-	}
+-	logger.Fatal("unknown version")
+-	return "Unknown"
+-}
+-
+-const fileHeader = `// Generated by running
+-//	maketables --tables=%s --url=%s
+-// DO NOT EDIT
+-
+-package norm
+-
+-`
+-
+-func makeTables() {
+-	size := 0
+-	if *tablelist == "" {
+-		return
+-	}
+-	list := strings.Split(*tablelist, ",")
+-	if *tablelist == "all" {
+-		list = []string{"recomp", "info"}
+-	}
+-	fmt.Printf(fileHeader, *tablelist, *url)
+-
+-	fmt.Println("// Version is the Unicode edition from which the tables are derived.")
+-	fmt.Printf("const Version = %q\n\n", version())
+-
+-	if contains(list, "info") {
+-		size += printCharInfoTables()
+-	}
+-
+-	if contains(list, "recomp") {
+-		// Note that we use 32 bit keys, instead of 64 bit.
+-		// This clips the bits of three entries, but we know
+-		// this won't cause a collision. The compiler will catch
+-		// any changes made to UnicodeData.txt that introduces
+-		// a collision.
+-		// Note that the recomposition map for NFC and NFKC
+-		// are identical.
+-
+-		// Recomposition map
+-		nrentries := 0
+-		for _, c := range chars {
+-			f := c.forms[FCanonical]
+-			if !f.isOneWay && len(f.decomp) > 0 {
+-				nrentries++
+-			}
+-		}
+-		sz := nrentries * 8
+-		size += sz
+-		fmt.Printf("// recompMap: %d bytes (entries only)\n", sz)
+-		fmt.Println("var recompMap = map[uint32]rune{")
+-		for i, c := range chars {
+-			f := c.forms[FCanonical]
+-			d := f.decomp
+-			if !f.isOneWay && len(d) > 0 {
+-				key := uint32(uint16(d[0]))<<16 + uint32(uint16(d[1]))
+-				fmt.Printf("0x%.8X: 0x%.4X,\n", key, i)
+-			}
+-		}
+-		fmt.Printf("}\n\n")
+-	}
+-
+-	fmt.Printf("// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size)
+-}
+-
+-func printChars() {
+-	if *verbose {
+-		for _, c := range chars {
+-			if !c.isValid() || c.state == SMissing {
+-				continue
+-			}
+-			fmt.Println(c)
+-		}
+-	}
+-}
+-
+-// verifyComputed does various consistency tests.
+-func verifyComputed() {
+-	for i, c := range chars {
+-		for _, f := range c.forms {
+-			isNo := (f.quickCheck[MDecomposed] == QCNo)
+-			if (len(f.decomp) > 0) != isNo && !isHangul(rune(i)) {
+-				log.Fatalf("%U: NF*D must be no if rune decomposes", i)
+-			}
+-
+-			isMaybe := f.quickCheck[MComposed] == QCMaybe
+-			if f.combinesBackward != isMaybe {
+-				log.Fatalf("%U: NF*C must be maybe if combinesBackward", i)
+-			}
+-		}
+-		nfc := c.forms[FCanonical]
+-		nfkc := c.forms[FCompatibility]
+-		if nfc.combinesBackward != nfkc.combinesBackward {
+-			logger.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint)
+-		}
+-	}
+-}
+-
+-var qcRe = regexp.MustCompile(`([0-9A-F\.]+) *; (NF.*_QC); ([YNM]) #.*`)
+-
+-// Use values in DerivedNormalizationProps.txt to compare against the
+-// values we computed.
+-// DerivedNormalizationProps.txt has form:
+-// 00C0..00C5    ; NFD_QC; N # ...
+-// 0374          ; NFD_QC; N # ...
+-// See http://unicode.org/reports/tr44/ for full explanation
+-func testDerived() {
+-	if !*test {
+-		return
+-	}
+-	f := openReader("DerivedNormalizationProps.txt")
+-	defer f.Close()
+-	input := bufio.NewReader(f)
+-	for {
+-		line, err := input.ReadString('\n')
+-		if err != nil {
+-			if err == io.EOF {
+-				break
+-			}
+-			logger.Fatal(err)
+-		}
+-		qc := qcRe.FindStringSubmatch(line)
+-		if qc == nil {
+-			continue
+-		}
+-		rng := strings.Split(qc[1], "..")
+-		i, err := strconv.ParseUint(rng[0], 16, 64)
+-		if err != nil {
+-			log.Fatal(err)
+-		}
+-		j := i
+-		if len(rng) > 1 {
+-			j, err = strconv.ParseUint(rng[1], 16, 64)
+-			if err != nil {
+-				log.Fatal(err)
+-			}
+-		}
+-		var ftype, mode int
+-		qt := strings.TrimSpace(qc[2])
+-		switch qt {
+-		case "NFC_QC":
+-			ftype, mode = FCanonical, MComposed
+-		case "NFD_QC":
+-			ftype, mode = FCanonical, MDecomposed
+-		case "NFKC_QC":
+-			ftype, mode = FCompatibility, MComposed
+-		case "NFKD_QC":
+-			ftype, mode = FCompatibility, MDecomposed
+-		default:
+-			log.Fatalf(`Unexpected quick check type "%s"`, qt)
+-		}
+-		var qr QCResult
+-		switch qc[3] {
+-		case "Y":
+-			qr = QCYes
+-		case "N":
+-			qr = QCNo
+-		case "M":
+-			qr = QCMaybe
+-		default:
+-			log.Fatalf(`Unexpected quick check value "%s"`, qc[3])
+-		}
+-		var lastFailed bool
+-		// Verify current
+-		for ; i <= j; i++ {
+-			c := &chars[int(i)]
+-			c.forms[ftype].verified[mode] = true
+-			curqr := c.forms[ftype].quickCheck[mode]
+-			if curqr != qr {
+-				if !lastFailed {
+-					logger.Printf("%s: %.4X..%.4X -- %s\n",
+-						qt, int(i), int(j), line[0:50])
+-				}
+-				logger.Printf("%U: FAILED %s (was %v need %v)\n",
+-					int(i), qt, curqr, qr)
+-				lastFailed = true
+-			}
+-		}
+-	}
+-	// Any unspecified value must be QCYes. Verify this.
+-	for i, c := range chars {
+-		for j, fd := range c.forms {
+-			for k, qr := range fd.quickCheck {
+-				if !fd.verified[k] && qr != QCYes {
+-					m := "%U: FAIL F:%d M:%d (was %v need Yes) %s\n"
+-					logger.Printf(m, i, j, k, qr, c.name)
+-				}
+-			}
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/maketesttables.go gcc-4.8.1/libgo/go/exp/norm/maketesttables.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/maketesttables.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/maketesttables.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,45 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-// Generate test data for trie code.
+-
+-package main
+-
+-import (
+-	"fmt"
+-)
+-
+-func main() {
+-	printTestTables()
+-}
+-
+-// We take the smallest, largest and an arbitrary value for each
+-// of the UTF-8 sequence lengths.
+-var testRunes = []rune{
+-	0x01, 0x0C, 0x7F, // 1-byte sequences
+-	0x80, 0x100, 0x7FF, // 2-byte sequences
+-	0x800, 0x999, 0xFFFF, // 3-byte sequences
+-	0x10000, 0x10101, 0x10FFFF, // 4-byte sequences
+-	0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block
+-}
+-
+-const fileHeader = `// Generated by running
+-//	maketesttables
+-// DO NOT EDIT
+-
+-package norm
+-
+-`
+-
+-func printTestTables() {
+-	fmt.Print(fileHeader)
+-	fmt.Printf("var testRunes = %#v\n\n", testRunes)
+-	t := newNode()
+-	for i, r := range testRunes {
+-		t.insert(r, uint16(i))
+-	}
+-	t.printTables("testdata")
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/normalize.go gcc-4.8.1/libgo/go/exp/norm/normalize.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/normalize.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/norm/normalize.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,478 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package norm contains types and functions for normalizing Unicode strings.
+-package norm
+-
+-import "unicode/utf8"
+-
+-// A Form denotes a canonical representation of Unicode code points.
+-// The Unicode-defined normalization and equivalence forms are:
+-//
+-//   NFC   Unicode Normalization Form C
+-//   NFD   Unicode Normalization Form D
+-//   NFKC  Unicode Normalization Form KC
+-//   NFKD  Unicode Normalization Form KD
+-//
+-// For a Form f, this documentation uses the notation f(x) to mean
+-// the bytes or string x converted to the given form.
+-// A position n in x is called a boundary if conversion to the form can
+-// proceed independently on both sides:
+-//   f(x) == append(f(x[0:n]), f(x[n:])...)
+-//
+-// References: http://unicode.org/reports/tr15/ and
+-// http://unicode.org/notes/tn5/.
+-type Form int
+-
+-const (
+-	NFC Form = iota
+-	NFD
+-	NFKC
+-	NFKD
+-)
+-
+-// Bytes returns f(b). May return b if f(b) = b.
+-func (f Form) Bytes(b []byte) []byte {
+-	rb := reorderBuffer{}
+-	rb.init(f, b)
+-	n := quickSpan(&rb, 0)
+-	if n == len(b) {
+-		return b
+-	}
+-	out := make([]byte, n, len(b))
+-	copy(out, b[0:n])
+-	return doAppend(&rb, out, n)
+-}
+-
+-// String returns f(s).
+-func (f Form) String(s string) string {
+-	rb := reorderBuffer{}
+-	rb.initString(f, s)
+-	n := quickSpan(&rb, 0)
+-	if n == len(s) {
+-		return s
+-	}
+-	out := make([]byte, n, len(s))
+-	copy(out, s[0:n])
+-	return string(doAppend(&rb, out, n))
+-}
+-
+-// IsNormal returns true if b == f(b).
+-func (f Form) IsNormal(b []byte) bool {
+-	rb := reorderBuffer{}
+-	rb.init(f, b)
+-	bp := quickSpan(&rb, 0)
+-	if bp == len(b) {
+-		return true
+-	}
+-	for bp < len(b) {
+-		decomposeSegment(&rb, bp)
+-		if rb.f.composing {
+-			rb.compose()
+-		}
+-		for i := 0; i < rb.nrune; i++ {
+-			info := rb.rune[i]
+-			if bp+int(info.size) > len(b) {
+-				return false
+-			}
+-			p := info.pos
+-			pe := p + info.size
+-			for ; p < pe; p++ {
+-				if b[bp] != rb.byte[p] {
+-					return false
+-				}
+-				bp++
+-			}
+-		}
+-		rb.reset()
+-		bp = quickSpan(&rb, bp)
+-	}
+-	return true
+-}
+-
+-// IsNormalString returns true if s == f(s).
+-func (f Form) IsNormalString(s string) bool {
+-	rb := reorderBuffer{}
+-	rb.initString(f, s)
+-	bp := quickSpan(&rb, 0)
+-	if bp == len(s) {
+-		return true
+-	}
+-	for bp < len(s) {
+-		decomposeSegment(&rb, bp)
+-		if rb.f.composing {
+-			rb.compose()
+-		}
+-		for i := 0; i < rb.nrune; i++ {
+-			info := rb.rune[i]
+-			if bp+int(info.size) > len(s) {
+-				return false
+-			}
+-			p := info.pos
+-			pe := p + info.size
+-			for ; p < pe; p++ {
+-				if s[bp] != rb.byte[p] {
+-					return false
+-				}
+-				bp++
+-			}
+-		}
+-		rb.reset()
+-		bp = quickSpan(&rb, bp)
+-	}
+-	return true
+-}
+-
+-// patchTail fixes a case where a rune may be incorrectly normalized
+-// if it is followed by illegal continuation bytes. It returns the
+-// patched buffer and whether there were trailing continuation bytes.
+-func patchTail(rb *reorderBuffer, buf []byte) ([]byte, bool) {
+-	info, p := lastRuneStart(&rb.f, buf)
+-	if p == -1 || info.size == 0 {
+-		return buf, false
+-	}
+-	end := p + int(info.size)
+-	extra := len(buf) - end
+-	if extra > 0 {
+-		// Potentially allocating memory. However, this only
+-		// happens with ill-formed UTF-8.
+-		x := make([]byte, 0)
+-		x = append(x, buf[len(buf)-extra:]...)
+-		buf = decomposeToLastBoundary(rb, buf[:end])
+-		if rb.f.composing {
+-			rb.compose()
+-		}
+-		buf = rb.flush(buf)
+-		return append(buf, x...), true
+-	}
+-	return buf, false
+-}
+-
+-func appendQuick(rb *reorderBuffer, dst []byte, i int) ([]byte, int) {
+-	if rb.nsrc == i {
+-		return dst, i
+-	}
+-	end := quickSpan(rb, i)
+-	return rb.src.appendSlice(dst, i, end), end
+-}
+-
+-// Append returns f(append(out, b...)).
+-// The buffer out must be nil, empty, or equal to f(out).
+-func (f Form) Append(out []byte, src ...byte) []byte {
+-	if len(src) == 0 {
+-		return out
+-	}
+-	rb := reorderBuffer{}
+-	rb.init(f, src)
+-	return doAppend(&rb, out, 0)
+-}
+-
+-func doAppend(rb *reorderBuffer, out []byte, p int) []byte {
+-	src, n := rb.src, rb.nsrc
+-	doMerge := len(out) > 0
+-	if q := src.skipNonStarter(p); q > p {
+-		// Move leading non-starters to destination.
+-		out = src.appendSlice(out, p, q)
+-		buf, endsInError := patchTail(rb, out)
+-		if endsInError {
+-			out = buf
+-			doMerge = false // no need to merge, ends with illegal UTF-8
+-		} else {
+-			out = decomposeToLastBoundary(rb, buf) // force decomposition
+-		}
+-		p = q
+-	}
+-	fd := &rb.f
+-	if doMerge {
+-		var info Properties
+-		if p < n {
+-			info = fd.info(src, p)
+-			if p == 0 && !info.BoundaryBefore() {
+-				out = decomposeToLastBoundary(rb, out)
+-			}
+-		}
+-		if info.size == 0 || info.BoundaryBefore() {
+-			if fd.composing {
+-				rb.compose()
+-			}
+-			out = rb.flush(out)
+-			if info.size == 0 {
+-				// Append incomplete UTF-8 encoding.
+-				return src.appendSlice(out, p, n)
+-			}
+-		}
+-	}
+-	if rb.nrune == 0 {
+-		out, p = appendQuick(rb, out, p)
+-	}
+-	for p < n {
+-		p = decomposeSegment(rb, p)
+-		if fd.composing {
+-			rb.compose()
+-		}
+-		out = rb.flush(out)
+-		out, p = appendQuick(rb, out, p)
+-	}
+-	return out
+-}
+-
+-// AppendString returns f(append(out, []byte(s))).
+-// The buffer out must be nil, empty, or equal to f(out).
+-func (f Form) AppendString(out []byte, src string) []byte {
+-	if len(src) == 0 {
+-		return out
+-	}
+-	rb := reorderBuffer{}
+-	rb.initString(f, src)
+-	return doAppend(&rb, out, 0)
+-}
+-
+-// QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]).
+-// It is not guaranteed to return the largest such n.
+-func (f Form) QuickSpan(b []byte) int {
+-	rb := reorderBuffer{}
+-	rb.init(f, b)
+-	n := quickSpan(&rb, 0)
+-	return n
+-}
+-
+-func quickSpan(rb *reorderBuffer, i int) int {
+-	var lastCC uint8
+-	var nc int
+-	lastSegStart := i
+-	src, n := rb.src, rb.nsrc
+-	for i < n {
+-		if j := src.skipASCII(i, n); i != j {
+-			i = j
+-			lastSegStart = i - 1
+-			lastCC = 0
+-			nc = 0
+-			continue
+-		}
+-		info := rb.f.info(src, i)
+-		if info.size == 0 {
+-			// include incomplete runes
+-			return n
+-		}
+-		cc := info.ccc
+-		if rb.f.composing {
+-			if !info.isYesC() {
+-				break
+-			}
+-		} else {
+-			if !info.isYesD() {
+-				break
+-			}
+-		}
+-		if cc == 0 {
+-			lastSegStart = i
+-			nc = 0
+-		} else {
+-			if nc >= maxCombiningChars {
+-				lastSegStart = i
+-				lastCC = cc
+-				nc = 1
+-			} else {
+-				if lastCC > cc {
+-					return lastSegStart
+-				}
+-				nc++
+-			}
+-		}
+-		lastCC = cc
+-		i += int(info.size)
+-	}
+-	if i == n {
+-		return n
+-	}
+-	if rb.f.composing {
+-		return lastSegStart
+-	}
+-	return i
+-}
+-
+-// QuickSpanString returns a boundary n such that b[0:n] == f(s[0:n]).
+-// It is not guaranteed to return the largest such n.
+-func (f Form) QuickSpanString(s string) int {
+-	rb := reorderBuffer{}
+-	rb.initString(f, s)
+-	return quickSpan(&rb, 0)
+-}
+-
+-// FirstBoundary returns the position i of the first boundary in b
+-// or -1 if b contains no boundary.
+-func (f Form) FirstBoundary(b []byte) int {
+-	rb := reorderBuffer{}
+-	rb.init(f, b)
+-	return firstBoundary(&rb)
+-}
+-
+-func firstBoundary(rb *reorderBuffer) int {
+-	src, nsrc := rb.src, rb.nsrc
+-	i := src.skipNonStarter(0)
+-	if i >= nsrc {
+-		return -1
+-	}
+-	fd := &rb.f
+-	info := fd.info(src, i)
+-	for n := 0; info.size != 0 && !info.BoundaryBefore(); {
+-		i += int(info.size)
+-		if n++; n >= maxCombiningChars {
+-			return i
+-		}
+-		if i >= nsrc {
+-			if !info.BoundaryAfter() {
+-				return -1
+-			}
+-			return nsrc
+-		}
+-		info = fd.info(src, i)
+-	}
+-	if info.size == 0 {
+-		return -1
+-	}
+-	return i
+-}
+-
+-// FirstBoundaryInString returns the position i of the first boundary in s
+-// or -1 if s contains no boundary.
+-func (f Form) FirstBoundaryInString(s string) int {
+-	rb := reorderBuffer{}
+-	rb.initString(f, s)
+-	return firstBoundary(&rb)
+-}
+-
+-// LastBoundary returns the position i of the last boundary in b
+-// or -1 if b contains no boundary.
+-func (f Form) LastBoundary(b []byte) int {
+-	return lastBoundary(formTable[f], b)
+-}
+-
+-func lastBoundary(fd *formInfo, b []byte) int {
+-	i := len(b)
+-	info, p := lastRuneStart(fd, b)
+-	if p == -1 {
+-		return -1
+-	}
+-	if info.size == 0 { // ends with incomplete rune
+-		if p == 0 { // starts with incomplete rune
+-			return -1
+-		}
+-		i = p
+-		info, p = lastRuneStart(fd, b[:i])
+-		if p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter
+-			return i
+-		}
+-	}
+-	if p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8
+-		return i
+-	}
+-	if info.BoundaryAfter() {
+-		return i
+-	}
+-	i = p
+-	for n := 0; i >= 0 && !info.BoundaryBefore(); {
+-		info, p = lastRuneStart(fd, b[:i])
+-		if n++; n >= maxCombiningChars {
+-			return len(b)
+-		}
+-		if p+int(info.size) != i {
+-			if p == -1 { // no boundary found
+-				return -1
+-			}
+-			return i // boundary after an illegal UTF-8 encoding
+-		}
+-		i = p
+-	}
+-	return i
+-}
+-
+-// decomposeSegment scans the first segment in src into rb.
+-// It returns the number of bytes consumed from src.
+-// TODO(mpvl): consider inserting U+034f (Combining Grapheme Joiner)
+-// when we detect a sequence of 30+ non-starter chars.
+-func decomposeSegment(rb *reorderBuffer, sp int) int {
+-	// Force one character to be consumed.
+-	info := rb.f.info(rb.src, sp)
+-	if info.size == 0 {
+-		return 0
+-	}
+-	for rb.insert(rb.src, sp, info) {
+-		sp += int(info.size)
+-		if sp >= rb.nsrc {
+-			break
+-		}
+-		info = rb.f.info(rb.src, sp)
+-		bound := info.BoundaryBefore()
+-		if bound || info.size == 0 {
+-			break
+-		}
+-	}
+-	return sp
+-}
+-
+-// lastRuneStart returns the runeInfo and position of the last
+-// rune in buf or the zero runeInfo and -1 if no rune was found.
+-func lastRuneStart(fd *formInfo, buf []byte) (Properties, int) {
+-	p := len(buf) - 1
+-	for ; p >= 0 && !utf8.RuneStart(buf[p]); p-- {
+-	}
+-	if p < 0 {
+-		return Properties{}, -1
+-	}
+-	return fd.info(inputBytes(buf), p), p
+-}
+-
+-// decomposeToLastBoundary finds an open segment at the end of the buffer
+-// and scans it into rb. Returns the buffer minus the last segment.
+-func decomposeToLastBoundary(rb *reorderBuffer, buf []byte) []byte {
+-	fd := &rb.f
+-	info, i := lastRuneStart(fd, buf)
+-	if int(info.size) != len(buf)-i {
+-		// illegal trailing continuation bytes
+-		return buf
+-	}
+-	if info.BoundaryAfter() {
+-		return buf
+-	}
+-	var add [maxBackRunes]Properties // stores runeInfo in reverse order
+-	add[0] = info
+-	padd := 1
+-	n := 1
+-	p := len(buf) - int(info.size)
+-	for ; p >= 0 && !info.BoundaryBefore(); p -= int(info.size) {
+-		info, i = lastRuneStart(fd, buf[:p])
+-		if int(info.size) != p-i {
+-			break
+-		}
+-		// Check that decomposition doesn't result in overflow.
+-		if info.hasDecomposition() {
+-			if isHangul(buf) {
+-				i += int(info.size)
+-				n++
+-			} else {
+-				dcomp := info.Decomposition()
+-				for i := 0; i < len(dcomp); {
+-					inf := rb.f.info(inputBytes(dcomp), i)
+-					i += int(inf.size)
+-					n++
+-				}
+-			}
+-		} else {
+-			n++
+-		}
+-		if n > maxBackRunes {
+-			break
+-		}
+-		add[padd] = info
+-		padd++
+-	}
+-	pp := p
+-	for padd--; padd >= 0; padd-- {
+-		info = add[padd]
+-		rb.insert(inputBytes(buf), pp, info)
+-		pp += int(info.size)
+-	}
+-	return buf[:p]
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/normalize_test.go gcc-4.8.1/libgo/go/exp/norm/normalize_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/normalize_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/normalize_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,750 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import (
+-	"bytes"
+-	"io"
+-	"strings"
+-	"testing"
+-)
+-
+-type PositionTest struct {
+-	input  string
+-	pos    int
+-	buffer string // expected contents of reorderBuffer, if applicable
+-}
+-
+-type positionFunc func(rb *reorderBuffer, s string) int
+-
+-func runPosTests(t *testing.T, name string, f Form, fn positionFunc, tests []PositionTest) {
+-	rb := reorderBuffer{}
+-	rb.init(f, nil)
+-	for i, test := range tests {
+-		rb.reset()
+-		rb.src = inputString(test.input)
+-		rb.nsrc = len(test.input)
+-		pos := fn(&rb, test.input)
+-		if pos != test.pos {
+-			t.Errorf("%s:%d: position is %d; want %d", name, i, pos, test.pos)
+-		}
+-		runes := []rune(test.buffer)
+-		if rb.nrune != len(runes) {
+-			t.Errorf("%s:%d: reorder buffer length is %d; want %d", name, i, rb.nrune, len(runes))
+-			continue
+-		}
+-		for j, want := range runes {
+-			found := rune(rb.runeAt(j))
+-			if found != want {
+-				t.Errorf("%s:%d: rune at %d is %U; want %U", name, i, j, found, want)
+-			}
+-		}
+-	}
+-}
+-
+-var decomposeSegmentTests = []PositionTest{
+-	// illegal runes
+-	{"\xC0", 0, ""},
+-	{"\u00E0\x80", 2, "\u0061\u0300"},
+-	// starter
+-	{"a", 1, "a"},
+-	{"ab", 1, "a"},
+-	// starter + composing
+-	{"a\u0300", 3, "a\u0300"},
+-	{"a\u0300b", 3, "a\u0300"},
+-	// with decomposition
+-	{"\u00C0", 2, "A\u0300"},
+-	{"\u00C0b", 2, "A\u0300"},
+-	// long
+-	{strings.Repeat("\u0300", 31), 62, strings.Repeat("\u0300", 31)},
+-	// ends with incomplete UTF-8 encoding
+-	{"\xCC", 0, ""},
+-	{"\u0300\xCC", 2, "\u0300"},
+-}
+-
+-func decomposeSegmentF(rb *reorderBuffer, s string) int {
+-	rb.src = inputString(s)
+-	rb.nsrc = len(s)
+-	return decomposeSegment(rb, 0)
+-}
+-
+-func TestDecomposeSegment(t *testing.T) {
+-	runPosTests(t, "TestDecomposeSegment", NFC, decomposeSegmentF, decomposeSegmentTests)
+-}
+-
+-var firstBoundaryTests = []PositionTest{
+-	// no boundary
+-	{"", -1, ""},
+-	{"\u0300", -1, ""},
+-	{"\x80\x80", -1, ""},
+-	// illegal runes
+-	{"\xff", 0, ""},
+-	{"\u0300\xff", 2, ""},
+-	{"\u0300\xc0\x80\x80", 2, ""},
+-	// boundaries
+-	{"a", 0, ""},
+-	{"\u0300a", 2, ""},
+-	// Hangul
+-	{"\u1103\u1161", 0, ""},
+-	{"\u110B\u1173\u11B7", 0, ""},
+-	{"\u1161\u110B\u1173\u11B7", 3, ""},
+-	{"\u1173\u11B7\u1103\u1161", 6, ""},
+-	// too many combining characters.
+-	{strings.Repeat("\u0300", maxCombiningChars-1), -1, ""},
+-	{strings.Repeat("\u0300", maxCombiningChars), 60, ""},
+-	{strings.Repeat("\u0300", maxCombiningChars+1), 60, ""},
+-}
+-
+-func firstBoundaryF(rb *reorderBuffer, s string) int {
+-	return rb.f.form.FirstBoundary([]byte(s))
+-}
+-
+-func firstBoundaryStringF(rb *reorderBuffer, s string) int {
+-	return rb.f.form.FirstBoundaryInString(s)
+-}
+-
+-func TestFirstBoundary(t *testing.T) {
+-	runPosTests(t, "TestFirstBoundary", NFC, firstBoundaryF, firstBoundaryTests)
+-	runPosTests(t, "TestFirstBoundaryInString", NFC, firstBoundaryStringF, firstBoundaryTests)
+-}
+-
+-var decomposeToLastTests = []PositionTest{
+-	// ends with inert character
+-	{"Hello!", 6, ""},
+-	{"\u0632", 2, ""},
+-	{"a\u0301\u0635", 5, ""},
+-	// ends with non-inert starter
+-	{"a", 0, "a"},
+-	{"a\u0301a", 3, "a"},
+-	{"a\u0301\u03B9", 3, "\u03B9"},
+-	{"a\u0327", 0, "a\u0327"},
+-	// illegal runes
+-	{"\xFF", 1, ""},
+-	{"aa\xFF", 3, ""},
+-	{"\xC0\x80\x80", 3, ""},
+-	{"\xCC\x80\x80", 3, ""},
+-	// ends with incomplete UTF-8 encoding
+-	{"a\xCC", 2, ""},
+-	// ends with combining characters
+-	{"\u0300\u0301", 0, "\u0300\u0301"},
+-	{"a\u0300\u0301", 0, "a\u0300\u0301"},
+-	{"a\u0301\u0308", 0, "a\u0301\u0308"},
+-	{"a\u0308\u0301", 0, "a\u0308\u0301"},
+-	{"aaaa\u0300\u0301", 3, "a\u0300\u0301"},
+-	{"\u0300a\u0300\u0301", 2, "a\u0300\u0301"},
+-	{"\u00C0", 0, "A\u0300"},
+-	{"a\u00C0", 1, "A\u0300"},
+-	// decomposing
+-	{"a\u0300\uFDC0", 3, "\u0645\u062C\u064A"},
+-	{"\uFDC0" + strings.Repeat("\u0300", 26), 0, "\u0645\u062C\u064A" + strings.Repeat("\u0300", 26)},
+-	// Hangul
+-	{"a\u1103", 1, "\u1103"},
+-	{"a\u110B", 1, "\u110B"},
+-	{"a\u110B\u1173", 1, "\u110B\u1173"},
+-	// See comment in composition.go:compBoundaryAfter.
+-	{"a\u110B\u1173\u11B7", 1, "\u110B\u1173\u11B7"},
+-	{"a\uC73C", 1, "\u110B\u1173"},
+-	{"ë€ì", 3, "\u110B\u1173\u11B7"},
+-	{"ë€", 0, "\u1103\u1161"},
+-	{"\u1103\u1161\u110B\u1173\u11B7", 6, "\u110B\u1173\u11B7"},
+-	{"\u110B\u1173\u11B7\u1103\u1161", 9, "\u1103\u1161"},
+-	{"ë€ìì", 6, "\u110B\u1173\u11B7"},
+-	{"ìë€ë€", 6, "\u1103\u1161"},
+-	// buffer overflow
+-	{"a" + strings.Repeat("\u0300", 30), 3, strings.Repeat("\u0300", 29)},
+-	{"\uFDFA" + strings.Repeat("\u0300", 14), 3, strings.Repeat("\u0300", 14)},
+-	// weird UTF-8
+-	{"a\u0300\u11B7", 0, "a\u0300\u11B7"},
+-}
+-
+-func decomposeToLast(rb *reorderBuffer, s string) int {
+-	buf := decomposeToLastBoundary(rb, []byte(s))
+-	return len(buf)
+-}
+-
+-func TestDecomposeToLastBoundary(t *testing.T) {
+-	runPosTests(t, "TestDecomposeToLastBoundary", NFKC, decomposeToLast, decomposeToLastTests)
+-}
+-
+-var lastBoundaryTests = []PositionTest{
+-	// ends with inert character
+-	{"Hello!", 6, ""},
+-	{"\u0632", 2, ""},
+-	// ends with non-inert starter
+-	{"a", 0, ""},
+-	// illegal runes
+-	{"\xff", 1, ""},
+-	{"aa\xff", 3, ""},
+-	{"a\xff\u0300", 1, ""},
+-	{"\xc0\x80\x80", 3, ""},
+-	{"\xc0\x80\x80\u0300", 3, ""},
+-	// ends with incomplete UTF-8 encoding
+-	{"\xCC", -1, ""},
+-	{"\xE0\x80", -1, ""},
+-	{"\xF0\x80\x80", -1, ""},
+-	{"a\xCC", 0, ""},
+-	{"\x80\xCC", 1, ""},
+-	{"\xCC\xCC", 1, ""},
+-	// ends with combining characters
+-	{"a\u0300\u0301", 0, ""},
+-	{"aaaa\u0300\u0301", 3, ""},
+-	{"\u0300a\u0300\u0301", 2, ""},
+-	{"\u00C0", 0, ""},
+-	{"a\u00C0", 1, ""},
+-	// decomposition may recombine
+-	{"\u0226", 0, ""},
+-	// no boundary
+-	{"", -1, ""},
+-	{"\u0300\u0301", -1, ""},
+-	{"\u0300", -1, ""},
+-	{"\x80\x80", -1, ""},
+-	{"\x80\x80\u0301", -1, ""},
+-	// Hangul
+-	{"ë€ì", 3, ""},
+-	{"ë€", 0, ""},
+-	{"\u1103\u1161\u110B\u1173\u11B7", 6, ""},
+-	{"\u110B\u1173\u11B7\u1103\u1161", 9, ""},
+-	// too many combining characters.
+-	{strings.Repeat("\u0300", maxCombiningChars-1), -1, ""},
+-	{strings.Repeat("\u0300", maxCombiningChars), 60, ""},
+-	{strings.Repeat("\u0300", maxCombiningChars+1), 62, ""},
+-}
+-
+-func lastBoundaryF(rb *reorderBuffer, s string) int {
+-	return rb.f.form.LastBoundary([]byte(s))
+-}
+-
+-func TestLastBoundary(t *testing.T) {
+-	runPosTests(t, "TestLastBoundary", NFC, lastBoundaryF, lastBoundaryTests)
+-}
+-
+-var quickSpanTests = []PositionTest{
+-	{"", 0, ""},
+-	// starters
+-	{"a", 1, ""},
+-	{"abc", 3, ""},
+-	{"\u043Eb", 3, ""},
+-	// incomplete last rune.
+-	{"\xCC", 1, ""},
+-	{"a\xCC", 2, ""},
+-	// incorrectly ordered combining characters
+-	{"\u0300\u0316", 0, ""},
+-	{"\u0300\u0316cd", 0, ""},
+-	// have a maximum number of combining characters.
+-	{strings.Repeat("\u035D", 30) + "\u035B", 62, ""},
+-	{"a" + strings.Repeat("\u035D", 30) + "\u035B", 63, ""},
+-	{"Æ" + strings.Repeat("\u035D", 30) + "\u035B", 64, ""},
+-	{"aa" + strings.Repeat("\u035D", 30) + "\u035B", 64, ""},
+-}
+-
+-var quickSpanNFDTests = []PositionTest{
+-	// needs decomposing
+-	{"\u00C0", 0, ""},
+-	{"abc\u00C0", 3, ""},
+-	// correctly ordered combining characters
+-	{"\u0300", 2, ""},
+-	{"ab\u0300", 4, ""},
+-	{"ab\u0300cd", 6, ""},
+-	{"\u0300cd", 4, ""},
+-	{"\u0316\u0300", 4, ""},
+-	{"ab\u0316\u0300", 6, ""},
+-	{"ab\u0316\u0300cd", 8, ""},
+-	{"ab\u0316\u0300\u00C0", 6, ""},
+-	{"\u0316\u0300cd", 6, ""},
+-	{"\u043E\u0308b", 5, ""},
+-	// incorrectly ordered combining characters
+-	{"ab\u0300\u0316", 1, ""}, // TODO: we could skip 'b' as well.
+-	{"ab\u0300\u0316cd", 1, ""},
+-	// Hangul
+-	{"ê°ì", 0, ""},
+-}
+-
+-var quickSpanNFCTests = []PositionTest{
+-	// okay composed
+-	{"\u00C0", 2, ""},
+-	{"abc\u00C0", 5, ""},
+-	// correctly ordered combining characters
+-	{"ab\u0300", 1, ""},
+-	{"ab\u0300cd", 1, ""},
+-	{"ab\u0316\u0300", 1, ""},
+-	{"ab\u0316\u0300cd", 1, ""},
+-	{"\u00C0\u035D", 4, ""},
+-	// we do not special case leading combining characters
+-	{"\u0300cd", 0, ""},
+-	{"\u0300", 0, ""},
+-	{"\u0316\u0300", 0, ""},
+-	{"\u0316\u0300cd", 0, ""},
+-	// incorrectly ordered combining characters
+-	{"ab\u0300\u0316", 1, ""},
+-	{"ab\u0300\u0316cd", 1, ""},
+-	// Hangul
+-	{"ê°ì", 6, ""},
+-}
+-
+-func doQuickSpan(rb *reorderBuffer, s string) int {
+-	return rb.f.form.QuickSpan([]byte(s))
+-}
+-
+-func doQuickSpanString(rb *reorderBuffer, s string) int {
+-	return rb.f.form.QuickSpanString(s)
+-}
+-
+-func TestQuickSpan(t *testing.T) {
+-	runPosTests(t, "TestQuickSpanNFD1", NFD, doQuickSpan, quickSpanTests)
+-	runPosTests(t, "TestQuickSpanNFD2", NFD, doQuickSpan, quickSpanNFDTests)
+-	runPosTests(t, "TestQuickSpanNFC1", NFC, doQuickSpan, quickSpanTests)
+-	runPosTests(t, "TestQuickSpanNFC2", NFC, doQuickSpan, quickSpanNFCTests)
+-
+-	runPosTests(t, "TestQuickSpanStringNFD1", NFD, doQuickSpanString, quickSpanTests)
+-	runPosTests(t, "TestQuickSpanStringNFD2", NFD, doQuickSpanString, quickSpanNFDTests)
+-	runPosTests(t, "TestQuickSpanStringNFC1", NFC, doQuickSpanString, quickSpanTests)
+-	runPosTests(t, "TestQuickSpanStringNFC2", NFC, doQuickSpanString, quickSpanNFCTests)
+-}
+-
+-var isNormalTests = []PositionTest{
+-	{"", 1, ""},
+-	// illegal runes
+-	{"\xff", 1, ""},
+-	// starters
+-	{"a", 1, ""},
+-	{"abc", 1, ""},
+-	{"\u043Eb", 1, ""},
+-	// incorrectly ordered combining characters
+-	{"\u0300\u0316", 0, ""},
+-	{"ab\u0300\u0316", 0, ""},
+-	{"ab\u0300\u0316cd", 0, ""},
+-	{"\u0300\u0316cd", 0, ""},
+-}
+-var isNormalNFDTests = []PositionTest{
+-	// needs decomposing
+-	{"\u00C0", 0, ""},
+-	{"abc\u00C0", 0, ""},
+-	// correctly ordered combining characters
+-	{"\u0300", 1, ""},
+-	{"ab\u0300", 1, ""},
+-	{"ab\u0300cd", 1, ""},
+-	{"\u0300cd", 1, ""},
+-	{"\u0316\u0300", 1, ""},
+-	{"ab\u0316\u0300", 1, ""},
+-	{"ab\u0316\u0300cd", 1, ""},
+-	{"\u0316\u0300cd", 1, ""},
+-	{"\u043E\u0308b", 1, ""},
+-	// Hangul
+-	{"ê°ì", 0, ""},
+-}
+-var isNormalNFCTests = []PositionTest{
+-	// okay composed
+-	{"\u00C0", 1, ""},
+-	{"abc\u00C0", 1, ""},
+-	// need reordering
+-	{"a\u0300", 0, ""},
+-	{"a\u0300cd", 0, ""},
+-	{"a\u0316\u0300", 0, ""},
+-	{"a\u0316\u0300cd", 0, ""},
+-	// correctly ordered combining characters
+-	{"ab\u0300", 1, ""},
+-	{"ab\u0300cd", 1, ""},
+-	{"ab\u0316\u0300", 1, ""},
+-	{"ab\u0316\u0300cd", 1, ""},
+-	{"\u00C0\u035D", 1, ""},
+-	{"\u0300", 1, ""},
+-	{"\u0316\u0300cd", 1, ""},
+-	// Hangul
+-	{"ê°ì", 1, ""},
+-}
+-
+-func isNormalF(rb *reorderBuffer, s string) int {
+-	if rb.f.form.IsNormal([]byte(s)) {
+-		return 1
+-	}
+-	return 0
+-}
+-
+-func TestIsNormal(t *testing.T) {
+-	runPosTests(t, "TestIsNormalNFD1", NFD, isNormalF, isNormalTests)
+-	runPosTests(t, "TestIsNormalNFD2", NFD, isNormalF, isNormalNFDTests)
+-	runPosTests(t, "TestIsNormalNFC1", NFC, isNormalF, isNormalTests)
+-	runPosTests(t, "TestIsNormalNFC2", NFC, isNormalF, isNormalNFCTests)
+-}
+-
+-type AppendTest struct {
+-	left  string
+-	right string
+-	out   string
+-}
+-
+-type appendFunc func(f Form, out []byte, s string) []byte
+-
+-func runAppendTests(t *testing.T, name string, f Form, fn appendFunc, tests []AppendTest) {
+-	for i, test := range tests {
+-		out := []byte(test.left)
+-		out = fn(f, out, test.right)
+-		outs := string(out)
+-		if len(outs) != len(test.out) {
+-			t.Errorf("%s:%d: length is %d; want %d", name, i, len(outs), len(test.out))
+-		}
+-		if outs != test.out {
+-			// Find first rune that differs and show context.
+-			ir := []rune(outs)
+-			ig := []rune(test.out)
+-			for j := 0; j < len(ir) && j < len(ig); j++ {
+-				if ir[j] == ig[j] {
+-					continue
+-				}
+-				if j -= 3; j < 0 {
+-					j = 0
+-				}
+-				for e := j + 7; j < e && j < len(ir) && j < len(ig); j++ {
+-					t.Errorf("%s:%d: runeAt(%d) = %U; want %U", name, i, j, ir[j], ig[j])
+-				}
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-var appendTests = []AppendTest{
+-	// empty buffers
+-	{"", "", ""},
+-	{"a", "", "a"},
+-	{"", "a", "a"},
+-	{"", "\u0041\u0307\u0304", "\u01E0"},
+-	// segment split across buffers
+-	{"", "a\u0300b", "\u00E0b"},
+-	{"a", "\u0300b", "\u00E0b"},
+-	{"a", "\u0300\u0316", "\u00E0\u0316"},
+-	{"a", "\u0316\u0300", "\u00E0\u0316"},
+-	{"a", "\u0300a\u0300", "\u00E0\u00E0"},
+-	{"a", "\u0300a\u0300a\u0300", "\u00E0\u00E0\u00E0"},
+-	{"a", "\u0300aaa\u0300aaa\u0300", "\u00E0aa\u00E0aa\u00E0"},
+-	{"a\u0300", "\u0327", "\u00E0\u0327"},
+-	{"a\u0327", "\u0300", "\u00E0\u0327"},
+-	{"a\u0316", "\u0300", "\u00E0\u0316"},
+-	{"\u0041\u0307", "\u0304", "\u01E0"},
+-	// Hangul
+-	{"", "\u110B\u1173", "\uC73C"},
+-	{"", "\u1103\u1161", "\uB2E4"},
+-	{"", "\u110B\u1173\u11B7", "\uC74C"},
+-	{"", "\u320E", "\x28\uAC00\x29"},
+-	{"", "\x28\u1100\u1161\x29", "\x28\uAC00\x29"},
+-	{"\u1103", "\u1161", "\uB2E4"},
+-	{"\u110B", "\u1173\u11B7", "\uC74C"},
+-	{"\u110B\u1173", "\u11B7", "\uC74C"},
+-	{"\uC73C", "\u11B7", "\uC74C"},
+-	// UTF-8 encoding split across buffers
+-	{"a\xCC", "\x80", "\u00E0"},
+-	{"a\xCC", "\x80b", "\u00E0b"},
+-	{"a\xCC", "\x80a\u0300", "\u00E0\u00E0"},
+-	{"a\xCC", "\x80\x80", "\u00E0\x80"},
+-	{"a\xCC", "\x80\xCC", "\u00E0\xCC"},
+-	{"a\u0316\xCC", "\x80a\u0316\u0300", "\u00E0\u0316\u00E0\u0316"},
+-	// ending in incomplete UTF-8 encoding
+-	{"", "\xCC", "\xCC"},
+-	{"a", "\xCC", "a\xCC"},
+-	{"a", "b\xCC", "ab\xCC"},
+-	{"\u0226", "\xCC", "\u0226\xCC"},
+-	// illegal runes
+-	{"", "\x80", "\x80"},
+-	{"", "\x80\x80\x80", "\x80\x80\x80"},
+-	{"", "\xCC\x80\x80\x80", "\xCC\x80\x80\x80"},
+-	{"", "a\x80", "a\x80"},
+-	{"", "a\x80\x80\x80", "a\x80\x80\x80"},
+-	{"", "a\x80\x80\x80\x80\x80\x80", "a\x80\x80\x80\x80\x80\x80"},
+-	{"a", "\x80\x80\x80", "a\x80\x80\x80"},
+-	// overflow
+-	{"", strings.Repeat("\x80", 33), strings.Repeat("\x80", 33)},
+-	{strings.Repeat("\x80", 33), "", strings.Repeat("\x80", 33)},
+-	{strings.Repeat("\x80", 33), strings.Repeat("\x80", 33), strings.Repeat("\x80", 66)},
+-	// overflow of combining characters
+-	{strings.Repeat("\u0300", 33), "", strings.Repeat("\u0300", 33)},
+-	// weird UTF-8
+-	{"\u00E0\xE1", "\x86", "\u00E0\xE1\x86"},
+-	{"a\u0300\u11B7", "\u0300", "\u00E0\u11B7\u0300"},
+-	{"a\u0300\u11B7\u0300", "\u0300", "\u00E0\u11B7\u0300\u0300"},
+-	{"\u0300", "\xF8\x80\x80\x80\x80\u0300", "\u0300\xF8\x80\x80\x80\x80\u0300"},
+-	{"\u0300", "\xFC\x80\x80\x80\x80\x80\u0300", "\u0300\xFC\x80\x80\x80\x80\x80\u0300"},
+-	{"\xF8\x80\x80\x80\x80\u0300", "\u0300", "\xF8\x80\x80\x80\x80\u0300\u0300"},
+-	{"\xFC\x80\x80\x80\x80\x80\u0300", "\u0300", "\xFC\x80\x80\x80\x80\x80\u0300\u0300"},
+-	{"\xF8\x80\x80\x80", "\x80\u0300\u0300", "\xF8\x80\x80\x80\x80\u0300\u0300"},
+-}
+-
+-func appendF(f Form, out []byte, s string) []byte {
+-	return f.Append(out, []byte(s)...)
+-}
+-
+-func appendStringF(f Form, out []byte, s string) []byte {
+-	return f.AppendString(out, s)
+-}
+-
+-func bytesF(f Form, out []byte, s string) []byte {
+-	buf := []byte{}
+-	buf = append(buf, out...)
+-	buf = append(buf, s...)
+-	return f.Bytes(buf)
+-}
+-
+-func stringF(f Form, out []byte, s string) []byte {
+-	outs := string(out) + s
+-	return []byte(f.String(outs))
+-}
+-
+-func TestAppend(t *testing.T) {
+-	runAppendTests(t, "TestAppend", NFKC, appendF, appendTests)
+-	runAppendTests(t, "TestAppendString", NFKC, appendStringF, appendTests)
+-	runAppendTests(t, "TestBytes", NFKC, bytesF, appendTests)
+-	runAppendTests(t, "TestString", NFKC, stringF, appendTests)
+-}
+-
+-func appendBench(f Form, in []byte) func() {
+-	buf := make([]byte, 0, 4*len(in))
+-	return func() {
+-		f.Append(buf, in...)
+-	}
+-}
+-
+-func iterBench(f Form, in []byte) func() {
+-	iter := Iter{}
+-	return func() {
+-		iter.Init(f, in)
+-		for !iter.Done() {
+-			iter.Next()
+-		}
+-	}
+-}
+-
+-func readerBench(f Form, in []byte) func() {
+-	buf := make([]byte, 4*len(in))
+-	return func() {
+-		r := f.Reader(bytes.NewReader(in))
+-		var err error
+-		for err == nil {
+-			_, err = r.Read(buf)
+-		}
+-		if err != io.EOF {
+-			panic("")
+-		}
+-	}
+-}
+-
+-func writerBench(f Form, in []byte) func() {
+-	buf := make([]byte, 0, 4*len(in))
+-	return func() {
+-		r := f.Writer(bytes.NewBuffer(buf))
+-		if _, err := r.Write(in); err != nil {
+-			panic("")
+-		}
+-	}
+-}
+-
+-func appendBenchmarks(bm []func(), f Form, in []byte) []func() {
+-	//bm = append(bm, appendBench(f, in))
+-	bm = append(bm, iterBench(f, in))
+-	//bm = append(bm, readerBench(f, in))
+-	//bm = append(bm, writerBench(f, in))
+-	return bm
+-}
+-
+-func doFormBenchmark(b *testing.B, inf, f Form, s string) {
+-	b.StopTimer()
+-	in := inf.Bytes([]byte(s))
+-	bm := appendBenchmarks(nil, f, in)
+-	b.SetBytes(int64(len(in) * len(bm)))
+-	b.StartTimer()
+-	for i := 0; i < b.N; i++ {
+-		for _, fn := range bm {
+-			fn()
+-		}
+-	}
+-}
+-
+-var ascii = strings.Repeat("There is nothing to change here! ", 500)
+-
+-func BenchmarkNormalizeAsciiNFC(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFC, ascii)
+-}
+-func BenchmarkNormalizeAsciiNFD(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFD, ascii)
+-}
+-func BenchmarkNormalizeAsciiNFKC(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFKC, ascii)
+-}
+-func BenchmarkNormalizeAsciiNFKD(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFKD, ascii)
+-}
+-
+-func BenchmarkNormalizeNFC2NFC(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFC, txt_all)
+-}
+-func BenchmarkNormalizeNFC2NFD(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFD, txt_all)
+-}
+-func BenchmarkNormalizeNFD2NFC(b *testing.B) {
+-	doFormBenchmark(b, NFD, NFC, txt_all)
+-}
+-func BenchmarkNormalizeNFD2NFD(b *testing.B) {
+-	doFormBenchmark(b, NFD, NFD, txt_all)
+-}
+-
+-// Hangul is often special-cased, so we test it separately.
+-func BenchmarkNormalizeHangulNFC2NFC(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFC, txt_kr)
+-}
+-func BenchmarkNormalizeHangulNFC2NFD(b *testing.B) {
+-	doFormBenchmark(b, NFC, NFD, txt_kr)
+-}
+-func BenchmarkNormalizeHangulNFD2NFC(b *testing.B) {
+-	doFormBenchmark(b, NFD, NFC, txt_kr)
+-}
+-func BenchmarkNormalizeHangulNFD2NFD(b *testing.B) {
+-	doFormBenchmark(b, NFD, NFD, txt_kr)
+-}
+-
+-var forms = []Form{NFC, NFD, NFKC, NFKD}
+-
+-func doTextBenchmark(b *testing.B, s string) {
+-	b.StopTimer()
+-	in := []byte(s)
+-	bm := []func(){}
+-	for _, f := range forms {
+-		bm = appendBenchmarks(bm, f, in)
+-	}
+-	b.SetBytes(int64(len(s) * len(bm)))
+-	b.StartTimer()
+-	for i := 0; i < b.N; i++ {
+-		for _, f := range bm {
+-			f()
+-		}
+-	}
+-}
+-
+-func BenchmarkCanonicalOrdering(b *testing.B) {
+-	doTextBenchmark(b, txt_canon)
+-}
+-func BenchmarkExtendedLatin(b *testing.B) {
+-	doTextBenchmark(b, txt_vn)
+-}
+-func BenchmarkMiscTwoByteUtf8(b *testing.B) {
+-	doTextBenchmark(b, twoByteUtf8)
+-}
+-func BenchmarkMiscThreeByteUtf8(b *testing.B) {
+-	doTextBenchmark(b, threeByteUtf8)
+-}
+-func BenchmarkHangul(b *testing.B) {
+-	doTextBenchmark(b, txt_kr)
+-}
+-func BenchmarkJapanese(b *testing.B) {
+-	doTextBenchmark(b, txt_jp)
+-}
+-func BenchmarkChinese(b *testing.B) {
+-	doTextBenchmark(b, txt_cn)
+-}
+-func BenchmarkOverflow(b *testing.B) {
+-	doTextBenchmark(b, overflow)
+-}
+-
+-var overflow = string(bytes.Repeat([]byte("\u035D"), 4096)) + "\u035B"
+-
+-// Tests sampled from the Canonical ordering tests (Part 2) of
+-// http://unicode.org/Public/UNIDATA/NormalizationTest.txt
+-const txt_canon = `\u0061\u0315\u0300\u05AE\u0300\u0062 \u0061\u0300\u0315\u0300\u05AE\u0062
+-\u0061\u0302\u0315\u0300\u05AE\u0062 \u0061\u0307\u0315\u0300\u05AE\u0062
+-\u0061\u0315\u0300\u05AE\u030A\u0062 \u0061\u059A\u0316\u302A\u031C\u0062
+-\u0061\u032E\u059A\u0316\u302A\u0062 \u0061\u0338\u093C\u0334\u0062 
+-\u0061\u059A\u0316\u302A\u0339       \u0061\u0341\u0315\u0300\u05AE\u0062
+-\u0061\u0348\u059A\u0316\u302A\u0062 \u0061\u0361\u0345\u035D\u035C\u0062
+-\u0061\u0366\u0315\u0300\u05AE\u0062 \u0061\u0315\u0300\u05AE\u0486\u0062
+-\u0061\u05A4\u059A\u0316\u302A\u0062 \u0061\u0315\u0300\u05AE\u0613\u0062
+-\u0061\u0315\u0300\u05AE\u0615\u0062 \u0061\u0617\u0315\u0300\u05AE\u0062
+-\u0061\u0619\u0618\u064D\u064E\u0062 \u0061\u0315\u0300\u05AE\u0654\u0062
+-\u0061\u0315\u0300\u05AE\u06DC\u0062 \u0061\u0733\u0315\u0300\u05AE\u0062
+-\u0061\u0744\u059A\u0316\u302A\u0062 \u0061\u0315\u0300\u05AE\u0745\u0062
+-\u0061\u09CD\u05B0\u094D\u3099\u0062 \u0061\u0E38\u0E48\u0E38\u0C56\u0062
+-\u0061\u0EB8\u0E48\u0E38\u0E49\u0062 \u0061\u0F72\u0F71\u0EC8\u0F71\u0062
+-\u0061\u1039\u05B0\u094D\u3099\u0062 \u0061\u05B0\u094D\u3099\u1A60\u0062
+-\u0061\u3099\u093C\u0334\u1BE6\u0062 \u0061\u3099\u093C\u0334\u1C37\u0062
+-\u0061\u1CD9\u059A\u0316\u302A\u0062 \u0061\u2DED\u0315\u0300\u05AE\u0062
+-\u0061\u2DEF\u0315\u0300\u05AE\u0062 \u0061\u302D\u302E\u059A\u0316\u0062`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/3.0/vn/
+-const txt_vn = `Vá»i cÃ¡c Äiá»u kiá»n sau: Ghi nháº­n cÃŽng cá»§a tÃ¡c giáº£. 
+-Náº¿u báº¡n sá»­ dá»¥ng, chuyá»n Äá»i, hoáº·c xÃ¢y dá»±ng dá»± Ã¡n tá»« 
+-ná»i dung ÄÆ°á»£c chia sáº» nÃ y, báº¡n pháº£i Ã¡p dá»¥ng giáº¥y phÃ©p nÃ y hoáº·c 
+-má»t giáº¥y phÃ©p khÃ¡c cÃ³ cÃ¡c Äiá»u khoáº£n tÆ°Æ¡ng tá»± nhÆ° giáº¥y phÃ©p nÃ y
+-cho dá»± Ã¡n cá»§a báº¡n. Hiá»u ráº±ng: Miá»
+n â Báº¥t ká»³ cÃ¡c Äiá»u kiá»n nÃ o
+-trÃªn ÄÃ¢y cÅ©ng cÃ³ thá» ÄÆ°á»£c miá»
+n bá» náº¿u báº¡n ÄÆ°á»£c sá»± cho phÃ©p cá»§a
+-ngÆ°á»i sá» há»¯u báº£n quyá»n. Pháº¡m vi cÃŽng chÃºng â Khi tÃ¡c pháº©m hoáº·c
+-báº¥t ká»³ chÆ°Æ¡ng nÃ o cá»§a tÃ¡c pháº©m ÄÃ£ trong vÃ¹ng dÃ nh cho cÃŽng
+-chÃºng theo quy Äá»nh cá»§a phÃ¡p luáº­t thÃ¬ tÃ¬nh tráº¡ng cá»§a nÃ³ khÃŽng 
+-bá» áº£nh hÆ°á»ng bá»i giáº¥y phÃ©p trong báº¥t ká»³ trÆ°á»ng há»£p nÃ o.`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/1.0/deed.ru
+-const txt_ru = `ÐÑÐž ÐŸÐ±ÑÐ·Ð°ÑÐµÐ»ÑÐœÐŸÐŒ ÑÐŸÐ±Ð»ÑÐŽÐµÐœÐžÐž ÑÐ»ÐµÐŽÑÑÑÐžÑ
+ ÑÑÐ»ÐŸÐ²ÐžÐ¹:
+-Attribution â ÐÑ ÐŽÐŸÐ»Ð¶ÐœÑ Ð°ÑÑÐžÐ±ÑÑÐžÑÐŸÐ²Ð°ÑÑ Ð¿ÑÐŸÐžÐ·Ð²ÐµÐŽÐµÐœÐžÐµ (ÑÐºÐ°Ð·ÑÐ²Ð°ÑÑ
+-Ð°Ð²ÑÐŸÑÐ° Ðž ÐžÑÑÐŸÑÐœÐžÐº) Ð² Ð¿ÐŸÑÑÐŽÐºÐµ, Ð¿ÑÐµÐŽÑÑÐŒÐŸÑÑÐµÐœÐœÐŸÐŒ Ð°Ð²ÑÐŸÑÐŸÐŒ ÐžÐ»Ðž
+-Ð»ÐžÑÐµÐœÐ·ÐžÐ°ÑÐŸÐŒ (ÐœÐŸ ÑÐŸÐ»ÑÐºÐŸ ÑÐ°Ðº, ÑÑÐŸÐ±Ñ ÐœÐžÐºÐŸÐžÐŒ ÐŸÐ±ÑÐ°Ð·ÐŸÐŒ ÐœÐµ Ð¿ÐŸÐŽÑÐ°Ð·ÑÐŒÐµÐ²Ð°Ð»ÐŸÑÑ,
+-ÑÑÐŸ ÐŸÐœÐž Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÑÑ Ð²Ð°Ñ ÐžÐ»Ðž ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµ Ð²Ð°ÐŒÐž ÐŽÐ°ÐœÐœÐŸÐ³ÐŸ Ð¿ÑÐŸÐžÐ·Ð²ÐµÐŽÐµÐœÐžÑ).
+-Î¥ÏÏ ÏÎ¹Ï Î±ÎºÏÎ»Î¿Ï
+ÎžÎµÏ ÏÏÎ¿ÏÏÎ¿ÎžÎ­ÏÎµÎ¹Ï:`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/3.0/gr/
+-const txt_gr = `ÎÎœÎ±ÏÎ¿ÏÎ¬ ÎÎ·ÎŒÎ¹Î¿Ï
+ÏÎ³Î¿Ï â ÎÎ± ÏÏÎ­ÏÎµÎ¹ ÎœÎ± ÎºÎ¬ÎœÎµÏÎµ ÏÎ·Îœ Î±ÎœÎ±ÏÎ¿ÏÎ¬ ÏÏÎ¿ Î­ÏÎ³Î¿ ÎŒÎµ ÏÎ¿Îœ
+-ÏÏÏÏÎ¿ ÏÎ¿Ï
+ Î­ÏÎµÎ¹ Î¿ÏÎ¹ÏÏÎµÎ¯ Î±ÏÏ ÏÎ¿ ÎŽÎ·ÎŒÎ¹Î¿Ï
+ÏÎ³Ï Î® ÏÎ¿ ÏÎ¿ÏÎ·Î³Î¿ÏÎœÏÎ¿ ÏÎ·Îœ Î¬ÎŽÎµÎ¹Î±
+-(ÏÏÏÎ¯Ï ÏÎŒÏÏ ÎœÎ± ÎµÎœÎœÎ¿ÎµÎ¯ÏÎ±Î¹ ÎŒÎµ Î¿ÏÎ¿Î¹Î¿ÎœÎŽÎ®ÏÎ¿ÏÎµ ÏÏÏÏÎ¿ ÏÏÎ¹ ÎµÎ³ÎºÏÎ¯ÎœÎ¿Ï
+Îœ ÎµÏÎ¬Ï Î®
+-ÏÎ· ÏÏÎ®ÏÎ· ÏÎ¿Ï
+ Î­ÏÎ³Î¿Ï
+ Î±ÏÏ ÎµÏÎ¬Ï). Î Î±ÏÏÎŒÎ¿Î¹Î± ÎÎ¹Î±ÎœÎ¿ÎŒÎ® â ÎÎ¬Îœ Î±Î»Î»Î¿Î¹ÏÏÎµÏÎµ,
+-ÏÏÎ¿ÏÎ¿ÏÎ¿Î¹Î®ÏÎµÏÎµ Î® ÎŽÎ·ÎŒÎ¹Î¿Ï
+ÏÎ³Î®ÏÎµÏÎµ ÏÎµÏÎ±Î¹ÏÎ­ÏÏ Î²Î±ÏÎ¹ÏÎŒÎ­ÎœÎ¿Î¹ ÏÏÎ¿ Î­ÏÎ³Î¿ ÎžÎ±
+-ÎŒÏÎ¿ÏÎµÎ¯ÏÎµ ÎœÎ± ÎŽÎ¹Î±ÎœÎ­ÎŒÎµÏÎµ ÏÎ¿ Î­ÏÎ³Î¿ ÏÎ¿Ï
+ ÎžÎ± ÏÏÎ¿ÎºÏÏÎµÎ¹ ÎŒÏÎœÎ¿ ÎŒÎµ ÏÎ·Îœ Î¯ÎŽÎ¹Î± Î®
+-ÏÎ±ÏÏÎŒÎ¿Î¹Î± Î¬ÎŽÎµÎ¹Î±.`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/3.0/deed.ar
+-const txt_ar = `ØšÙ
+ÙØ¬Øš Ø§ÙØŽØ±ÙØ· Ø§ÙØªØ§ÙÙØ© ÙØ³Øš Ø§ÙÙ
+ØµÙÙ â ÙØ¬Øš Ø¹ÙÙÙ Ø£Ù
+-ØªÙØ³Øš Ø§ÙØ¹Ù
+Ù ØšØ§ÙØ·Ø±ÙÙØ© Ø§ÙØªÙ ØªØ­Ø¯Ø¯ÙØ§ Ø§ÙÙ
+Ø€ÙÙ Ø£Ù Ø§ÙÙ
+Ø±Ø®Øµ (ÙÙÙÙ ÙÙØ³ ØšØ£Ù Ø­Ø§Ù Ù
+Ù
+-Ø§ÙØ£Ø­ÙØ§Ù Ø£Ù ØªÙØ­Ù ÙØªÙØªØ±Ø­ ØšØªØ­ÙÙ Ø£Ù Ø§Ø³ØªØ®Ø¯Ø§Ù
+Ù ÙÙØ¹Ù
+Ù).
+-Ø§ÙÙ
+ØŽØ§Ø±ÙØ© Ø¹ÙÙ ÙØ¯Ù
+ Ø§ÙÙ
+Ø³Ø§ÙØ§Ø© â Ø¥Ø°Ø§ ÙÙØª ÙØ¹Ø¯Ù Ø ÙØ§ÙØªØºÙÙØ± Ø Ø£Ù Ø§ÙØ§Ø³ØªÙØ§Ø¯Ø©
+-Ù
+Ù ÙØ°Ø§ Ø§ÙØ¹Ù
+Ù Ø ÙØ¯ ÙÙØªØ¬ Ø¹Ù ØªÙØ²ÙØ¹ Ø§ÙØ¹Ù
+Ù Ø¥ÙØ§ ÙÙ ØžÙ ØªØŽØ§ØšÙ Ø§Ù ØªØ·Ø§ØšÙ ÙÙ ÙØ§Ø­Ø¯
+-ÙÙØ°Ø§ Ø§ÙØªØ±Ø®ÙØµ.`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/1.0/il/
+-const txt_il = `×××€××£ ××ª× ××× ×××××: ×××××¡ â ×¢××× ×××××¡ ××ª ×××Š××š× (××ª×ª ×§×š×××) ××××€×
+-×××Š×××× ×¢×-××× ××××Š×š ×× ××¢× ××§ ××š××©××× (×× ×× ××©×× ×××€× ×××š×× ×¢× ××
+-×©×× ×ª××××× ×× ×× ××©××××© ×©×× ×××Š××š×). ×©××ª××£ ××× â ×× ×ª××××/× ××©× ××ª,
+-××¢×× ×× ×××Š××š ××Š××š× × ×××š×ª ×××¡×ª×× ×¢× ××Š××š× ××, ×ª×××/× ×××€××¥ ××ª ××Š××š×ª×
+-××××©× ×š×§ ×ª××ª ×××ª× ××š××©××× ×× ×š××©××× ×××× ××š××©××× ××.`
+-
+-const twoByteUtf8 = txt_ru + txt_gr + txt_ar + txt_il
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/2.0/kr/
+-const txt_kr = `ë€ìê³Œ ê°ì ì¡°ê±Žì ë°ëŒìŒ í©ëë€: ì ììíì
+-(Attribution) â ì ììë ìŽì©íëœìê° ì í ë°©ë²ìŒë¡ ì ìë¬Œì
+-ìì ììë¥Œ íìíì¬ìŒ í©ëë€(ê·žë¬ë ìì ììê° ìŽì©ìë ìŽì©ìì
+-ìŽì©ì ë³ŽìŠíê±°ë ì¶ì²íë€ë ìë¯žë¡ íìíŽìë ìë©ëë€). 
+-ëìŒì¡°ê±Žë³ê²œíëœ â ìŽ ì ìë¬Œì ìŽì©íì¬ ë§ë  ìŽì°šì  ì ìë¬Œìë ë³ž
+-ëŒìŽì ì€ì ëìŒí ëŒìŽì ì€ë¥Œ ì ì©íŽìŒ í©ëë€.`
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/3.0/th/
+-const txt_th = `àž àž²àž¢à¹àžà¹à¹àžàž·à¹àž­àžà¹àž àžàž±àžàžà¹àž­à¹àžàžàžµà¹ : à¹àžªàžàžàžàžµà¹àž¡àž² â àžàžžàžàžà¹àž­àžà¹àžªàžàžàžàžµà¹
+-àž¡àž²àžàž­àžàžàž²àžàžàž±àžàžàž¥à¹àž²àž§ àžàž²àž¡àž£àž¹àžà¹àžàžàžàžµà¹àžàž¹à¹àžªàž£à¹àž²àžàžªàž£àž£àžà¹àž«àž£àž·àž­àžàž¹à¹àž­àžàžžàžàž²àžàžàž³àž«àžàž (à¹àžà¹
+-à¹àž¡à¹à¹àžà¹à¹àžàž¥àž±àžàž©àžàž°àžàžµà¹àž§à¹àž² àžàž§àžà¹àžàž²àžªàžàž±àžàžªàžàžžàžàžàžžàžàž«àž£àž·àž­àžªàžàž±àžàžªàžàžžàžàžàž²àž£àžàžµà¹
+-àžàžžàžàžàž³àžàž²àžà¹àžà¹àžà¹) àž­àžàžžàžàž²àžà¹àžàžà¹àžàžµàž¢àž§àžàž±àž â àž«àž²àžàžàžžàžàžàž±àžà¹àžàž¥àž à¹àžàž¥àžµà¹àž¢àžàž£àž¹àž àž«àž£àž·
+-àž­àžà¹àž­à¹àžàžŽàž¡àžàž²àžàžàžµà¹ àžàžžàžàžà¹àž­àžà¹àžà¹àžªàž±àžàžàž²àž­àžàžžàžàž²àžà¹àžàžà¹àžàžµàž¢àž§àžàž±àžàž«àž£àž·àž­à¹àžàžàžàžµà¹à¹àž«àž¡àž·
+-àž­àžàžàž±àžàžªàž±àžàžàž²àž­àžàžžàžàž²àžàžàžµà¹à¹àžà¹àžàž±àžàžàž²àžàžàžµà¹à¹àžà¹àž²àžàž±à¹àž`
+-
+-const threeByteUtf8 = txt_th
+-
+-// Taken from http://creativecommons.org/licenses/by-sa/2.0/jp/
+-const txt_jp = `ããªãã®åŸãã¹ãæ¡ä»¶ã¯ä»¥äžã®éãã§ãã
+-è¡šç€º â ããªãã¯åèäœè
+ã®ã¯ã¬ãžãããè¡šç€ºããªããã°ãªããŸããã
+-ç¶æ¿ â ããããªãããã®äœåãæ¹å€ãå€åœ¢ãŸãã¯å å·¥ããå Žåã
+-ããªãã¯ãã®çµæçããäœåããã®äœåãšåäžã®èš±è«Ÿæ¡ä»¶ã®äžã§ã®ã¿
+-é åžããããšãã§ããŸãã`
+-
+-// http://creativecommons.org/licenses/by-sa/2.5/cn/
+-const txt_cn = `æšå¯ä»¥èªç±ïŒ å€å¶ãåè¡ãå±è§ãè¡šæŒãæŸæ ã
+-å¹¿æ­æéè¿ä¿¡æ¯çœç»äŒ æ­æ¬äœå åäœæŒç»äœå
+-å¯¹æ¬äœåè¿è¡åäžæ§äœ¿çš æé¡»éµå®äžåæ¡ä»¶ïŒ
+-çœ²å â æšå¿
+é¡»æç
+§äœè
+æè
+è®žå¯äººæå®çæ¹åŒå¯¹äœåè¿è¡çœ²åã
+-çžåæ¹åŒå
+±äº« â åŠææšæ¹åãèœ¬æ¢æ¬äœåæè
+ä»¥æ¬äœåäžºåºç¡è¿è¡åäœïŒ
+-æšåªèœéçšäžæ¬åè®®çžåçè®žå¯åè®®ååžåºäºæ¬äœåçæŒç»äœåã`
+-
+-const txt_cjk = txt_cn + txt_jp + txt_kr
+-const txt_all = txt_vn + twoByteUtf8 + threeByteUtf8 + txt_cjk
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/normregtest.go gcc-4.8.1/libgo/go/exp/norm/normregtest.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/normregtest.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/normregtest.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,308 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-package main
+-
+-import (
+-	"bufio"
+-	"bytes"
+-	"exp/norm"
+-	"flag"
+-	"fmt"
+-	"io"
+-	"log"
+-	"net/http"
+-	"os"
+-	"path"
+-	"regexp"
+-	"runtime"
+-	"strconv"
+-	"strings"
+-	"time"
+-	"unicode"
+-	"unicode/utf8"
+-)
+-
+-func main() {
+-	flag.Parse()
+-	loadTestData()
+-	CharacterByCharacterTests()
+-	StandardTests()
+-	PerformanceTest()
+-	if errorCount == 0 {
+-		fmt.Println("PASS")
+-	}
+-}
+-
+-const file = "NormalizationTest.txt"
+-
+-var url = flag.String("url",
+-	"http://www.unicode.org/Public/"+unicode.Version+"/ucd/"+file,
+-	"URL of Unicode database directory")
+-var localFiles = flag.Bool("local",
+-	false,
+-	"data files have been copied to the current directory; for debugging only")
+-
+-var logger = log.New(os.Stderr, "", log.Lshortfile)
+-
+-// This regression test runs the test set in NormalizationTest.txt
+-// (taken from http://www.unicode.org/Public/<unicode.Version>/ucd/).
+-//
+-// NormalizationTest.txt has form:
+-// @Part0 # Specific cases
+-// #
+-// 1E0A;1E0A;0044 0307;1E0A;0044 0307; # (áž; áž; DâÌ; áž; DâÌ; ) LATIN CAPITAL LETTER D WITH DOT ABOVE
+-// 1E0C;1E0C;0044 0323;1E0C;0044 0323; # (áž; áž; DâÌ£; áž; DâÌ£; ) LATIN CAPITAL LETTER D WITH DOT BELOW
+-//
+-// Each test has 5 columns (c1, c2, c3, c4, c5), where
+-// (c1, c2, c3, c4, c5) == (c1, NFC(c1), NFD(c1), NFKC(c1), NFKD(c1))
+-//
+-// CONFORMANCE:
+-// 1. The following invariants must be true for all conformant implementations
+-//
+-//    NFC
+-//      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+-//      c4 ==  NFC(c4) ==  NFC(c5)
+-//
+-//    NFD
+-//      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+-//      c5 ==  NFD(c4) ==  NFD(c5)
+-//
+-//    NFKC
+-//      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+-//
+-//    NFKD
+-//      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+-//
+-// 2. For every code point X assigned in this version of Unicode that is not
+-//    specifically listed in Part 1, the following invariants must be true
+-//    for all conformant implementations:
+-//
+-//      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+-//
+-
+-// Column types.
+-const (
+-	cRaw = iota
+-	cNFC
+-	cNFD
+-	cNFKC
+-	cNFKD
+-	cMaxColumns
+-)
+-
+-// Holds data from NormalizationTest.txt
+-var part []Part
+-
+-type Part struct {
+-	name   string
+-	number int
+-	tests  []Test
+-}
+-
+-type Test struct {
+-	name   string
+-	partnr int
+-	number int
+-	r      rune                // used for character by character test
+-	cols   [cMaxColumns]string // Each has 5 entries, see below.
+-}
+-
+-func (t Test) Name() string {
+-	if t.number < 0 {
+-		return part[t.partnr].name
+-	}
+-	return fmt.Sprintf("%s:%d", part[t.partnr].name, t.number)
+-}
+-
+-var partRe = regexp.MustCompile(`@Part(\d) # (.*)\n$`)
+-var testRe = regexp.MustCompile(`^` + strings.Repeat(`([\dA-F ]+);`, 5) + ` # (.*)\n?$`)
+-
+-var counter int
+-
+-// Load the data form NormalizationTest.txt
+-func loadTestData() {
+-	if *localFiles {
+-		pwd, _ := os.Getwd()
+-		*url = "file://" + path.Join(pwd, file)
+-	}
+-	t := &http.Transport{}
+-	t.RegisterProtocol("file", http.NewFileTransport(http.Dir("/")))
+-	c := &http.Client{Transport: t}
+-	resp, err := c.Get(*url)
+-	if err != nil {
+-		logger.Fatal(err)
+-	}
+-	if resp.StatusCode != 200 {
+-		logger.Fatal("bad GET status for "+file, resp.Status)
+-	}
+-	f := resp.Body
+-	defer f.Close()
+-	input := bufio.NewReader(f)
+-	for {
+-		line, err := input.ReadString('\n')
+-		if err != nil {
+-			if err == io.EOF {
+-				break
+-			}
+-			logger.Fatal(err)
+-		}
+-		if len(line) == 0 || line[0] == '#' {
+-			continue
+-		}
+-		m := partRe.FindStringSubmatch(line)
+-		if m != nil {
+-			if len(m) < 3 {
+-				logger.Fatal("Failed to parse Part: ", line)
+-			}
+-			i, err := strconv.Atoi(m[1])
+-			if err != nil {
+-				logger.Fatal(err)
+-			}
+-			name := m[2]
+-			part = append(part, Part{name: name[:len(name)-1], number: i})
+-			continue
+-		}
+-		m = testRe.FindStringSubmatch(line)
+-		if m == nil || len(m) < 7 {
+-			logger.Fatalf(`Failed to parse: "%s" result: %#v`, line, m)
+-		}
+-		test := Test{name: m[6], partnr: len(part) - 1, number: counter}
+-		counter++
+-		for j := 1; j < len(m)-1; j++ {
+-			for _, split := range strings.Split(m[j], " ") {
+-				r, err := strconv.ParseUint(split, 16, 64)
+-				if err != nil {
+-					logger.Fatal(err)
+-				}
+-				if test.r == 0 {
+-					// save for CharacterByCharacterTests
+-					test.r = rune(r)
+-				}
+-				var buf [utf8.UTFMax]byte
+-				sz := utf8.EncodeRune(buf[:], rune(r))
+-				test.cols[j-1] += string(buf[:sz])
+-			}
+-		}
+-		part := &part[len(part)-1]
+-		part.tests = append(part.tests, test)
+-	}
+-}
+-
+-var fstr = []string{"NFC", "NFD", "NFKC", "NFKD"}
+-
+-var errorCount int
+-
+-func cmpResult(t *Test, name string, f norm.Form, gold, test, result string) {
+-	if gold != result {
+-		errorCount++
+-		if errorCount > 20 {
+-			return
+-		}
+-		st, sr, sg := []rune(test), []rune(result), []rune(gold)
+-		logger.Printf("%s:%s: %s(%X)=%X; want:%X: %s",
+-			t.Name(), name, fstr[f], st, sr, sg, t.name)
+-	}
+-}
+-
+-func cmpIsNormal(t *Test, name string, f norm.Form, test string, result, want bool) {
+-	if result != want {
+-		errorCount++
+-		if errorCount > 20 {
+-			return
+-		}
+-		logger.Printf("%s:%s: %s(%X)=%v; want: %v", t.Name(), name, fstr[f], []rune(test), result, want)
+-	}
+-}
+-
+-func doTest(t *Test, f norm.Form, gold, test string) {
+-	result := f.Bytes([]byte(test))
+-	cmpResult(t, "Bytes", f, gold, test, string(result))
+-	sresult := f.String(test)
+-	cmpResult(t, "String", f, gold, test, sresult)
+-	acc := []byte{}
+-	i := norm.Iter{}
+-	i.InitString(f, test)
+-	for !i.Done() {
+-		acc = append(acc, i.Next()...)
+-	}
+-	cmpResult(t, "Iter.Next", f, gold, test, string(acc))
+-	for i := range test {
+-		out := f.Append(f.Bytes([]byte(test[:i])), []byte(test[i:])...)
+-		cmpResult(t, fmt.Sprintf(":Append:%d", i), f, gold, test, string(out))
+-	}
+-	cmpIsNormal(t, "IsNormal", f, test, f.IsNormal([]byte(test)), test == gold)
+-}
+-
+-func doConformanceTests(t *Test, partn int) {
+-	for i := 0; i <= 2; i++ {
+-		doTest(t, norm.NFC, t.cols[1], t.cols[i])
+-		doTest(t, norm.NFD, t.cols[2], t.cols[i])
+-		doTest(t, norm.NFKC, t.cols[3], t.cols[i])
+-		doTest(t, norm.NFKD, t.cols[4], t.cols[i])
+-	}
+-	for i := 3; i <= 4; i++ {
+-		doTest(t, norm.NFC, t.cols[3], t.cols[i])
+-		doTest(t, norm.NFD, t.cols[4], t.cols[i])
+-		doTest(t, norm.NFKC, t.cols[3], t.cols[i])
+-		doTest(t, norm.NFKD, t.cols[4], t.cols[i])
+-	}
+-}
+-
+-func CharacterByCharacterTests() {
+-	tests := part[1].tests
+-	var last rune = 0
+-	for i := 0; i <= len(tests); i++ { // last one is special case
+-		var r rune
+-		if i == len(tests) {
+-			r = 0x2FA1E // Don't have to go to 0x10FFFF
+-		} else {
+-			r = tests[i].r
+-		}
+-		for last++; last < r; last++ {
+-			// Check all characters that were not explicitly listed in the test.
+-			t := &Test{partnr: 1, number: -1}
+-			char := string(last)
+-			doTest(t, norm.NFC, char, char)
+-			doTest(t, norm.NFD, char, char)
+-			doTest(t, norm.NFKC, char, char)
+-			doTest(t, norm.NFKD, char, char)
+-		}
+-		if i < len(tests) {
+-			doConformanceTests(&tests[i], 1)
+-		}
+-	}
+-}
+-
+-func StandardTests() {
+-	for _, j := range []int{0, 2, 3} {
+-		for _, test := range part[j].tests {
+-			doConformanceTests(&test, j)
+-		}
+-	}
+-}
+-
+-// PerformanceTest verifies that normalization is O(n). If any of the
+-// code does not properly check for maxCombiningChars, normalization
+-// may exhibit O(n**2) behavior.
+-func PerformanceTest() {
+-	runtime.GOMAXPROCS(2)
+-	success := make(chan bool, 1)
+-	go func() {
+-		buf := bytes.Repeat([]byte("\u035D"), 1024*1024)
+-		buf = append(buf, "\u035B"...)
+-		norm.NFC.Append(nil, buf...)
+-		success <- true
+-	}()
+-	timeout := time.After(1 * time.Second)
+-	select {
+-	case <-success:
+-		// test completed before the timeout
+-	case <-timeout:
+-		errorCount++
+-		logger.Printf(`unexpectedly long time to complete PerformanceTest`)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/norm_test.go gcc-4.8.1/libgo/go/exp/norm/norm_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/norm_test.go	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/norm/norm_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,14 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm_test
+-
+-import (
+-	"testing"
+-)
+-
+-func TestPlaceHolder(t *testing.T) {
+-	// Does nothing, just allows the Makefile to be canonical
+-	// while waiting for the package itself to be written.
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/readwriter.go gcc-4.8.1/libgo/go/exp/norm/readwriter.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/readwriter.go	2012-01-25 14:56:26.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/readwriter.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,126 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import "io"
+-
+-type normWriter struct {
+-	rb  reorderBuffer
+-	w   io.Writer
+-	buf []byte
+-}
+-
+-// Write implements the standard write interface.  If the last characters are
+-// not at a normalization boundary, the bytes will be buffered for the next
+-// write. The remaining bytes will be written on close.
+-func (w *normWriter) Write(data []byte) (n int, err error) {
+-	// Process data in pieces to keep w.buf size bounded.
+-	const chunk = 4000
+-
+-	for len(data) > 0 {
+-		// Normalize into w.buf.
+-		m := len(data)
+-		if m > chunk {
+-			m = chunk
+-		}
+-		w.rb.src = inputBytes(data[:m])
+-		w.rb.nsrc = m
+-		w.buf = doAppend(&w.rb, w.buf, 0)
+-		data = data[m:]
+-		n += m
+-
+-		// Write out complete prefix, save remainder.
+-		// Note that lastBoundary looks back at most 30 runes.
+-		i := lastBoundary(&w.rb.f, w.buf)
+-		if i == -1 {
+-			i = 0
+-		}
+-		if i > 0 {
+-			if _, err = w.w.Write(w.buf[:i]); err != nil {
+-				break
+-			}
+-			bn := copy(w.buf, w.buf[i:])
+-			w.buf = w.buf[:bn]
+-		}
+-	}
+-	return n, err
+-}
+-
+-// Close forces data that remains in the buffer to be written.
+-func (w *normWriter) Close() error {
+-	if len(w.buf) > 0 {
+-		_, err := w.w.Write(w.buf)
+-		if err != nil {
+-			return err
+-		}
+-	}
+-	return nil
+-}
+-
+-// Writer returns a new writer that implements Write(b)
+-// by writing f(b) to w.  The returned writer may use an
+-// an internal buffer to maintain state across Write calls.
+-// Calling its Close method writes any buffered data to w.
+-func (f Form) Writer(w io.Writer) io.WriteCloser {
+-	wr := &normWriter{rb: reorderBuffer{}, w: w}
+-	wr.rb.init(f, nil)
+-	return wr
+-}
+-
+-type normReader struct {
+-	rb           reorderBuffer
+-	r            io.Reader
+-	inbuf        []byte
+-	outbuf       []byte
+-	bufStart     int
+-	lastBoundary int
+-	err          error
+-}
+-
+-// Read implements the standard read interface.
+-func (r *normReader) Read(p []byte) (int, error) {
+-	for {
+-		if r.lastBoundary-r.bufStart > 0 {
+-			n := copy(p, r.outbuf[r.bufStart:r.lastBoundary])
+-			r.bufStart += n
+-			if r.lastBoundary-r.bufStart > 0 {
+-				return n, nil
+-			}
+-			return n, r.err
+-		}
+-		if r.err != nil {
+-			return 0, r.err
+-		}
+-		outn := copy(r.outbuf, r.outbuf[r.lastBoundary:])
+-		r.outbuf = r.outbuf[0:outn]
+-		r.bufStart = 0
+-
+-		n, err := r.r.Read(r.inbuf)
+-		r.rb.src = inputBytes(r.inbuf[0:n])
+-		r.rb.nsrc, r.err = n, err
+-		if n > 0 {
+-			r.outbuf = doAppend(&r.rb, r.outbuf, 0)
+-		}
+-		if err == io.EOF {
+-			r.lastBoundary = len(r.outbuf)
+-		} else {
+-			r.lastBoundary = lastBoundary(&r.rb.f, r.outbuf)
+-			if r.lastBoundary == -1 {
+-				r.lastBoundary = 0
+-			}
+-		}
+-	}
+-	panic("should not reach here")
+-}
+-
+-// Reader returns a new reader that implements Read
+-// by reading data from r and returning f(data).
+-func (f Form) Reader(r io.Reader) io.Reader {
+-	const chunk = 4000
+-	buf := make([]byte, chunk)
+-	rr := &normReader{rb: reorderBuffer{}, r: r, inbuf: buf}
+-	rr.rb.init(f, buf)
+-	return rr
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/readwriter_test.go gcc-4.8.1/libgo/go/exp/norm/readwriter_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/readwriter_test.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/readwriter_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,68 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"strings"
+-	"testing"
+-)
+-
+-var ioTests = []AppendTest{
+-	{"", strings.Repeat("a\u0316\u0300", 6), strings.Repeat("\u00E0\u0316", 6)},
+-	{"", strings.Repeat("a\u0300\u0316", 4000), strings.Repeat("\u00E0\u0316", 4000)},
+-	{"", strings.Repeat("\x80\x80", 4000), strings.Repeat("\x80\x80", 4000)},
+-	{"", "\u0041\u0307\u0304", "\u01E0"},
+-}
+-
+-var bufSizes = []int{1, 2, 3, 4, 5, 6, 7, 8, 100, 101, 102, 103, 4000, 4001, 4002, 4003}
+-
+-func readFunc(size int) appendFunc {
+-	return func(f Form, out []byte, s string) []byte {
+-		out = append(out, s...)
+-		r := f.Reader(bytes.NewBuffer(out))
+-		buf := make([]byte, size)
+-		result := []byte{}
+-		for n, err := 0, error(nil); err == nil; {
+-			n, err = r.Read(buf)
+-			result = append(result, buf[:n]...)
+-		}
+-		return result
+-	}
+-}
+-
+-func TestReader(t *testing.T) {
+-	for _, s := range bufSizes {
+-		name := fmt.Sprintf("TestReader%da", s)
+-		runAppendTests(t, name, NFKC, readFunc(s), appendTests)
+-		name = fmt.Sprintf("TestReader%db", s)
+-		runAppendTests(t, name, NFKC, readFunc(s), ioTests)
+-	}
+-}
+-
+-func writeFunc(size int) appendFunc {
+-	return func(f Form, out []byte, s string) []byte {
+-		in := append(out, s...)
+-		result := new(bytes.Buffer)
+-		w := f.Writer(result)
+-		buf := make([]byte, size)
+-		for n := 0; len(in) > 0; in = in[n:] {
+-			n = copy(buf, in)
+-			_, _ = w.Write(buf[:n])
+-		}
+-		w.Close()
+-		return result.Bytes()
+-	}
+-}
+-
+-func TestWriter(t *testing.T) {
+-	for _, s := range bufSizes {
+-		name := fmt.Sprintf("TestWriter%da", s)
+-		runAppendTests(t, name, NFKC, writeFunc(s), appendTests)
+-		name = fmt.Sprintf("TestWriter%db", s)
+-		runAppendTests(t, name, NFKC, writeFunc(s), ioTests)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/tables.go gcc-4.8.1/libgo/go/exp/norm/tables.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/tables.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/tables.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,6779 +0,0 @@
+-// Generated by running
+-//	maketables --tables=all --url=http://www.unicode.org/Public/6.2.0/ucd/
+-// DO NOT EDIT
+-
+-package norm
+-
+-// Version is the Unicode edition from which the tables are derived.
+-const Version = "6.2.0"
+-
+-const (
+-	firstMulti         = 0x18CF
+-	firstCCC           = 0x2E74
+-	endMulti           = 0x2F4A
+-	firstLeadingCCC    = 0x4994
+-	firstCCCZeroExcept = 0x49AA
+-	lastDecomp         = 0x49D1
+-	maxDecomp          = 0x8000
+-)
+-
+-// decomps: 18897 bytes
+-var decomps = [...]byte{
+-	// Bytes 0 - 3f
+-	0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41,
+-	0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41,
+-	0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41,
+-	0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41,
+-	0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41,
+-	0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41,
+-	0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41,
+-	0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41,
+-	// Bytes 40 - 7f
+-	0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41,
+-	0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41,
+-	0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41,
+-	0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41,
+-	0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41,
+-	0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41,
+-	0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41,
+-	0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41,
+-	// Bytes 80 - bf
+-	0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41,
+-	0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41,
+-	0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41,
+-	0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41,
+-	0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41,
+-	0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41,
+-	0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41,
+-	0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42,
+-	// Bytes c0 - ff
+-	0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5,
+-	0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2,
+-	0xB4, 0x42, 0xC2, 0xB7, 0x42, 0xC3, 0x86, 0x42,
+-	0xC3, 0xB0, 0x42, 0xC4, 0xA6, 0x42, 0xC4, 0xA7,
+-	0x42, 0xC4, 0xB1, 0x42, 0xC5, 0x8B, 0x42, 0xC5,
+-	0x93, 0x42, 0xC6, 0x8E, 0x42, 0xC6, 0x90, 0x42,
+-	0xC6, 0xAB, 0x42, 0xC8, 0xA2, 0x42, 0xC8, 0xB7,
+-	0x42, 0xC9, 0x90, 0x42, 0xC9, 0x91, 0x42, 0xC9,
+-	// Bytes 100 - 13f
+-	0x92, 0x42, 0xC9, 0x94, 0x42, 0xC9, 0x95, 0x42,
+-	0xC9, 0x99, 0x42, 0xC9, 0x9B, 0x42, 0xC9, 0x9C,
+-	0x42, 0xC9, 0x9F, 0x42, 0xC9, 0xA1, 0x42, 0xC9,
+-	0xA3, 0x42, 0xC9, 0xA5, 0x42, 0xC9, 0xA6, 0x42,
+-	0xC9, 0xA8, 0x42, 0xC9, 0xA9, 0x42, 0xC9, 0xAA,
+-	0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9,
+-	0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42,
+-	0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5,
+-	// Bytes 140 - 17f
+-	0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9,
+-	0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42,
+-	0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A,
+-	0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA,
+-	0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42,
+-	0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F,
+-	0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE,
+-	0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42,
+-	// Bytes 180 - 1bf
+-	0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97,
+-	0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE,
+-	0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42,
+-	0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F,
+-	0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE,
+-	0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42,
+-	0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8,
+-	0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE,
+-	// Bytes 1c0 - 1ff
+-	0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42,
+-	0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7,
+-	0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE,
+-	0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42,
+-	0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF,
+-	0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF,
+-	0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42,
+-	0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87,
+-	// Bytes 200 - 23f
+-	0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF,
+-	0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42,
+-	0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92,
+-	0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7,
+-	0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42,
+-	0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA,
+-	0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8,
+-	0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42,
+-	// Bytes 240 - 27f
+-	0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD,
+-	0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8,
+-	0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42,
+-	0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5,
+-	0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8,
+-	0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42,
+-	0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83,
+-	0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9,
+-	// Bytes 280 - 2bf
+-	0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42,
+-	0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE,
+-	0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9,
+-	0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42,
+-	0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80,
+-	0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA,
+-	0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42,
+-	0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E,
+-	// Bytes 2c0 - 2ff
+-	0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA,
+-	0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42,
+-	0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF,
+-	0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA,
+-	0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42,
+-	0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86,
+-	0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB,
+-	0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42,
+-	// Bytes 300 - 33f
+-	0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC,
+-	0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84,
+-	0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84,
+-	0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84,
+-	0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84,
+-	0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84,
+-	0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84,
+-	0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84,
+-	// Bytes 340 - 37f
+-	0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84,
+-	0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84,
+-	0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84,
+-	0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84,
+-	0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84,
+-	0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84,
+-	0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84,
+-	0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84,
+-	// Bytes 380 - 3bf
+-	0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84,
+-	0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84,
+-	0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84,
+-	0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84,
+-	0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85,
+-	0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85,
+-	0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85,
+-	0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85,
+-	// Bytes 3c0 - 3ff
+-	0xA0, 0x43, 0xE1, 0x85, 0xA1, 0x43, 0xE1, 0x85,
+-	0xA2, 0x43, 0xE1, 0x85, 0xA3, 0x43, 0xE1, 0x85,
+-	0xA4, 0x43, 0xE1, 0x85, 0xA5, 0x43, 0xE1, 0x85,
+-	0xA6, 0x43, 0xE1, 0x85, 0xA7, 0x43, 0xE1, 0x85,
+-	0xA8, 0x43, 0xE1, 0x85, 0xA9, 0x43, 0xE1, 0x85,
+-	0xAA, 0x43, 0xE1, 0x85, 0xAB, 0x43, 0xE1, 0x85,
+-	0xAC, 0x43, 0xE1, 0x85, 0xAD, 0x43, 0xE1, 0x85,
+-	0xAE, 0x43, 0xE1, 0x85, 0xAF, 0x43, 0xE1, 0x85,
+-	// Bytes 400 - 43f
+-	0xB0, 0x43, 0xE1, 0x85, 0xB1, 0x43, 0xE1, 0x85,
+-	0xB2, 0x43, 0xE1, 0x85, 0xB3, 0x43, 0xE1, 0x85,
+-	0xB4, 0x43, 0xE1, 0x85, 0xB5, 0x43, 0xE1, 0x86,
+-	0x84, 0x43, 0xE1, 0x86, 0x85, 0x43, 0xE1, 0x86,
+-	0x88, 0x43, 0xE1, 0x86, 0x91, 0x43, 0xE1, 0x86,
+-	0x92, 0x43, 0xE1, 0x86, 0x94, 0x43, 0xE1, 0x86,
+-	0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43, 0xE1, 0x86,
+-	0xAA, 0x43, 0xE1, 0x86, 0xAC, 0x43, 0xE1, 0x86,
+-	// Bytes 440 - 47f
+-	0xAD, 0x43, 0xE1, 0x86, 0xB0, 0x43, 0xE1, 0x86,
+-	0xB1, 0x43, 0xE1, 0x86, 0xB2, 0x43, 0xE1, 0x86,
+-	0xB3, 0x43, 0xE1, 0x86, 0xB4, 0x43, 0xE1, 0x86,
+-	0xB5, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87,
+-	0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87,
+-	0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87,
+-	0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87,
+-	0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87,
+-	// Bytes 480 - 4bf
+-	0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4,
+-	0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4,
+-	0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4,
+-	0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5,
+-	0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80,
+-	0x82, 0x43, 0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80,
+-	0x90, 0x43, 0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80,
+-	0x94, 0x43, 0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86,
+-	// Bytes 4c0 - 4ff
+-	0x90, 0x43, 0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86,
+-	0x92, 0x43, 0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88,
+-	0x82, 0x43, 0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88,
+-	0x91, 0x43, 0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94,
+-	0x82, 0x43, 0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97,
+-	0x8B, 0x43, 0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6,
+-	0x86, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80,
+-	0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80,
+-	// Bytes 500 - 53f
+-	0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80,
+-	0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80,
+-	0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80,
+-	0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80,
+-	0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80,
+-	0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80,
+-	0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80,
+-	0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82,
+-	// Bytes 540 - 57f
+-	0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82,
+-	0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82,
+-	0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82,
+-	0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82,
+-	0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82,
+-	0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82,
+-	0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82,
+-	0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82,
+-	// Bytes 580 - 5bf
+-	0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82,
+-	0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83,
+-	0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83,
+-	0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83,
+-	0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83,
+-	0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83,
+-	0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83,
+-	0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83,
+-	// Bytes 5c0 - 5ff
+-	0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83,
+-	0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83,
+-	0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83,
+-	0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83,
+-	0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83,
+-	0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83,
+-	0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83,
+-	0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83,
+-	// Bytes 600 - 63f
+-	0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83,
+-	0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83,
+-	0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83,
+-	0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83,
+-	0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92,
+-	0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92,
+-	0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94,
+-	0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B,
+-	// Bytes 640 - 67f
+-	0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0,
+-	0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1,
+-	0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3,
+-	0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4,
+-	0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9,
+-	0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC,
+-	0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD,
+-	0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0,
+-	// Bytes 680 - 6bf
+-	0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4,
+-	0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA,
+-	0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC,
+-	0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80,
+-	0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80,
+-	0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82,
+-	0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84,
+-	0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88,
+-	// Bytes 6c0 - 6ff
+-	0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C,
+-	0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D,
+-	0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F,
+-	0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91,
+-	0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95,
+-	0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95,
+-	0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97,
+-	0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A,
+-	// Bytes 700 - 73f
+-	0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6,
+-	0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9,
+-	0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA,
+-	0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF,
+-	0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3,
+-	0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5,
+-	0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8,
+-	0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8,
+-	// Bytes 740 - 77f
+-	0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8,
+-	0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8,
+-	0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8,
+-	0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8,
+-	0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8,
+-	0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8,
+-	0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9,
+-	0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9,
+-	// Bytes 780 - 7bf
+-	0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA,
+-	0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA,
+-	0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA,
+-	0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA,
+-	0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB,
+-	0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB,
+-	0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC,
+-	0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE,
+-	// Bytes 7c0 - 7ff
+-	0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE,
+-	0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE,
+-	0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80,
+-	0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81,
+-	0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83,
+-	0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83,
+-	0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84,
+-	0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85,
+-	// Bytes 800 - 83f
+-	0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85,
+-	0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85,
+-	0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85,
+-	0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85,
+-	0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85,
+-	0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86,
+-	0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86,
+-	0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86,
+-	// Bytes 840 - 87f
+-	0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86,
+-	0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86,
+-	0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86,
+-	0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87,
+-	0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87,
+-	0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87,
+-	0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88,
+-	0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88,
+-	// Bytes 880 - 8bf
+-	0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88,
+-	0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88,
+-	0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89,
+-	0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89,
+-	0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A,
+-	0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A,
+-	0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A,
+-	0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B,
+-	// Bytes 8c0 - 8ff
+-	0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B,
+-	0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B,
+-	0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B,
+-	0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C,
+-	0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C,
+-	0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C,
+-	0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C,
+-	0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D,
+-	// Bytes 900 - 93f
+-	0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D,
+-	0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D,
+-	0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D,
+-	0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D,
+-	0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D,
+-	0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D,
+-	0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E,
+-	0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F,
+-	// Bytes 940 - 97f
+-	0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F,
+-	0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F,
+-	0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F,
+-	0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F,
+-	0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90,
+-	0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90,
+-	0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90,
+-	0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90,
+-	// Bytes 980 - 9bf
+-	0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91,
+-	0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92,
+-	0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92,
+-	0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94,
+-	0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95,
+-	0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95,
+-	0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96,
+-	0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96,
+-	// Bytes 9c0 - 9ff
+-	0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96,
+-	0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97,
+-	0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97,
+-	0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99,
+-	0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99,
+-	0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B,
+-	0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C,
+-	0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C,
+-	// Bytes a00 - a3f
+-	0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E,
+-	0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F,
+-	0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0,
+-	0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1,
+-	0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1,
+-	0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2,
+-	0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3,
+-	0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3,
+-	// Bytes a40 - a7f
+-	0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3,
+-	0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3,
+-	0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4,
+-	0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4,
+-	0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4,
+-	0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4,
+-	0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5,
+-	0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5,
+-	// Bytes a80 - abf
+-	0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5,
+-	0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7,
+-	0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8,
+-	0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9,
+-	0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA,
+-	0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC,
+-	0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD,
+-	0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD,
+-	// Bytes ac0 - aff
+-	0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE,
+-	0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF,
+-	0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF,
+-	0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF,
+-	0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF,
+-	0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0,
+-	0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0,
+-	0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1,
+-	// Bytes b00 - b3f
+-	0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1,
+-	0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1,
+-	0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2,
+-	0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4,
+-	0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5,
+-	0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5,
+-	0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6,
+-	0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7,
+-	// Bytes b40 - b7f
+-	0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7,
+-	0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7,
+-	0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7,
+-	0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8,
+-	0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9,
+-	0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9,
+-	0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9,
+-	0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA,
+-	// Bytes b80 - bbf
+-	0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA,
+-	0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB,
+-	0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB,
+-	0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB,
+-	0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB,
+-	0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC,
+-	0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC,
+-	0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD,
+-	// Bytes bc0 - bff
+-	0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD,
+-	0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD,
+-	0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD,
+-	0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE,
+-	0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE,
+-	0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE,
+-	0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF,
+-	0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF,
+-	// Bytes c00 - c3f
+-	0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80,
+-	0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81,
+-	0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82,
+-	0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83,
+-	0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84,
+-	0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85,
+-	0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85,
+-	0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85,
+-	// Bytes c40 - c7f
+-	0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86,
+-	0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86,
+-	0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86,
+-	0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87,
+-	0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88,
+-	0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88,
+-	0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88,
+-	0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88,
+-	// Bytes c80 - cbf
+-	0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89,
+-	0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A,
+-	0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B,
+-	0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B,
+-	0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B,
+-	0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C,
+-	0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D,
+-	0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D,
+-	// Bytes cc0 - cff
+-	0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E,
+-	0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E,
+-	0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F,
+-	0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90,
+-	0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91,
+-	0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91,
+-	0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92,
+-	0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93,
+-	// Bytes d00 - d3f
+-	0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94,
+-	0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95,
+-	0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95,
+-	0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96,
+-	0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96,
+-	0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96,
+-	0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97,
+-	0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97,
+-	// Bytes d40 - d7f
+-	0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98,
+-	0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99,
+-	0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A,
+-	0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A,
+-	0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B,
+-	0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B,
+-	0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C,
+-	0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C,
+-	// Bytes d80 - dbf
+-	0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C,
+-	0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C,
+-	0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D,
+-	0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D,
+-	0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E,
+-	0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F,
+-	0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0,
+-	0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0,
+-	// Bytes dc0 - dff
+-	0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2,
+-	0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2,
+-	0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4,
+-	0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6,
+-	0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8,
+-	0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA,
+-	0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB,
+-	0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC,
+-	// Bytes e00 - e3f
+-	0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD,
+-	0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD,
+-	0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD,
+-	0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE,
+-	0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE,
+-	0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE,
+-	0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF,
+-	0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF,
+-	// Bytes e40 - e7f
+-	0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0,
+-	0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1,
+-	0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2,
+-	0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3,
+-	0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3,
+-	0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4,
+-	0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4,
+-	0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4,
+-	// Bytes e80 - ebf
+-	0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5,
+-	0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5,
+-	0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6,
+-	0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7,
+-	0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7,
+-	0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8,
+-	0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA,
+-	0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA,
+-	// Bytes ec0 - eff
+-	0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB,
+-	0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB,
+-	0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC,
+-	0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC,
+-	0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF,
+-	0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF,
+-	0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80,
+-	0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81,
+-	// Bytes f00 - f3f
+-	0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81,
+-	0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81,
+-	0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82,
+-	0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83,
+-	0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85,
+-	0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85,
+-	0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87,
+-	0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88,
+-	// Bytes f40 - f7f
+-	0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88,
+-	0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88,
+-	0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88,
+-	0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88,
+-	0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89,
+-	0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89,
+-	0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89,
+-	0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A,
+-	// Bytes f80 - fbf
+-	0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A,
+-	0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B,
+-	0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D,
+-	0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E,
+-	0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E,
+-	0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E,
+-	0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F,
+-	0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90,
+-	// Bytes fc0 - fff
+-	0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91,
+-	0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91,
+-	0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92,
+-	0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92,
+-	0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93,
+-	0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94,
+-	0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94,
+-	0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94,
+-	// Bytes 1000 - 103f
+-	0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94,
+-	0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94,
+-	0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94,
+-	0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95,
+-	0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96,
+-	0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97,
+-	0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98,
+-	0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99,
+-	// Bytes 1040 - 107f
+-	0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99,
+-	0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A,
+-	0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B,
+-	0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B,
+-	0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B,
+-	0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C,
+-	0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C,
+-	0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D,
+-	// Bytes 1080 - 10bf
+-	0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E,
+-	0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F,
+-	0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1,
+-	0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2,
+-	0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3,
+-	0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3,
+-	0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4,
+-	0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4,
+-	// Bytes 10c0 - 10ff
+-	0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5,
+-	0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5,
+-	0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5,
+-	0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5,
+-	0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6,
+-	0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6,
+-	0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6,
+-	0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7,
+-	// Bytes 1100 - 113f
+-	0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7,
+-	0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9,
+-	0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9,
+-	0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9,
+-	0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA,
+-	0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB,
+-	0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC,
+-	0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF,
+-	// Bytes 1140 - 117f
+-	0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF,
+-	0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1,
+-	0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1,
+-	0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2,
+-	0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3,
+-	0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3,
+-	0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3,
+-	0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4,
+-	// Bytes 1180 - 11bf
+-	0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4,
+-	0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5,
+-	0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6,
+-	0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7,
+-	0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8,
+-	0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8,
+-	0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9,
+-	0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC,
+-	// Bytes 11c0 - 11ff
+-	0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD,
+-	0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD,
+-	0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE,
+-	0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE,
+-	0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF,
+-	0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80,
+-	0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80,
+-	0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81,
+-	// Bytes 1200 - 123f
+-	0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81,
+-	0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81,
+-	0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82,
+-	0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82,
+-	0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84,
+-	0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87,
+-	0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87,
+-	0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87,
+-	// Bytes 1240 - 127f
+-	0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87,
+-	0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88,
+-	0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88,
+-	0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88,
+-	0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89,
+-	0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89,
+-	0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A,
+-	0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A,
+-	// Bytes 1280 - 12bf
+-	0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A,
+-	0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B,
+-	0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C,
+-	0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C,
+-	0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D,
+-	0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E,
+-	0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F,
+-	0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F,
+-	// Bytes 12c0 - 12ff
+-	0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F,
+-	0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F,
+-	0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91,
+-	0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93,
+-	0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93,
+-	0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94,
+-	0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97,
+-	0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98,
+-	// Bytes 1300 - 133f
+-	0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98,
+-	0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99,
+-	0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99,
+-	0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99,
+-	0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A,
+-	0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B,
+-	0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C,
+-	0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D,
+-	// Bytes 1340 - 137f
+-	0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E,
+-	0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0,
+-	0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1,
+-	0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1,
+-	0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3,
+-	0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3,
+-	0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3,
+-	0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3,
+-	// Bytes 1380 - 13bf
+-	0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5,
+-	0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5,
+-	0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6,
+-	0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7,
+-	0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8,
+-	0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA,
+-	0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB,
+-	0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB,
+-	// Bytes 13c0 - 13ff
+-	0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB,
+-	0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC,
+-	0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD,
+-	0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE,
+-	0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1,
+-	0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1,
+-	0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2,
+-	0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2,
+-	// Bytes 1400 - 143f
+-	0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3,
+-	0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3,
+-	0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3,
+-	0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4,
+-	0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5,
+-	0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6,
+-	0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7,
+-	0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7,
+-	// Bytes 1440 - 147f
+-	0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB,
+-	0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC,
+-	0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC,
+-	0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD,
+-	0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE,
+-	0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE,
+-	0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80,
+-	0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81,
+-	// Bytes 1480 - 14bf
+-	0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81,
+-	0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82,
+-	0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82,
+-	0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83,
+-	0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83,
+-	0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84,
+-	0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85,
+-	0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43, 0xE9, 0x86,
+-	// Bytes 14c0 - 14ff
+-	0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43, 0xE9, 0x87,
+-	0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43, 0xE9, 0x87,
+-	0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43, 0xE9, 0x88,
+-	0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43, 0xE9, 0x89,
+-	0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43, 0xE9, 0x8B,
+-	0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43, 0xE9, 0x8D,
+-	0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43, 0xE9, 0x90,
+-	0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43, 0xE9, 0x96,
+-	// Bytes 1500 - 153f
+-	0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43, 0xE9, 0x96,
+-	0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43, 0xE9, 0x98,
+-	0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43, 0xE9, 0x99,
+-	0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43, 0xE9, 0x99,
+-	0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43, 0xE9, 0x99,
+-	0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43, 0xE9, 0x9A,
+-	0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43, 0xE9, 0x9A,
+-	0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43, 0xE9, 0x9A,
+-	// Bytes 1540 - 157f
+-	0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43, 0xE9, 0x9B,
+-	0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43, 0xE9, 0x9B,
+-	0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43, 0xE9, 0x9B,
+-	0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43, 0xE9, 0x9C,
+-	0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43, 0xE9, 0x9D,
+-	0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43, 0xE9, 0x9D,
+-	0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43, 0xE9, 0x9D,
+-	0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43, 0xE9, 0x9F,
+-	// Bytes 1580 - 15bf
+-	0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43, 0xE9, 0x9F,
+-	0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43, 0xE9, 0x9F,
+-	0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43, 0xE9, 0xA0,
+-	0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43, 0xE9, 0xA0,
+-	0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43, 0xE9, 0xA0,
+-	0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43, 0xE9, 0xA2,
+-	0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43, 0xE9, 0xA3,
+-	0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43, 0xE9, 0xA3,
+-	// Bytes 15c0 - 15ff
+-	0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43, 0xE9, 0xA4,
+-	0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43, 0xE9, 0xA6,
+-	0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43, 0xE9, 0xA6,
+-	0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43, 0xE9, 0xA7,
+-	0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43, 0xE9, 0xA7,
+-	0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43, 0xE9, 0xAA,
+-	0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43, 0xE9, 0xAB,
+-	0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43, 0xE9, 0xAC,
+-	// Bytes 1600 - 163f
+-	0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43, 0xE9, 0xAC,
+-	0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43, 0xE9, 0xAD,
+-	0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43, 0xE9, 0xB1,
+-	0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43, 0xE9, 0xB3,
+-	0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43, 0xE9, 0xB5,
+-	0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43, 0xE9, 0xB7,
+-	0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43, 0xE9, 0xB9,
+-	0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43, 0xE9, 0xBA,
+-	// Bytes 1640 - 167f
+-	0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43, 0xE9, 0xBA,
+-	0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43, 0xE9, 0xBB,
+-	0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43, 0xE9, 0xBB,
+-	0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43, 0xE9, 0xBB,
+-	0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43, 0xE9, 0xBB,
+-	0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43, 0xE9, 0xBC,
+-	0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43, 0xE9, 0xBC,
+-	0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43, 0xE9, 0xBC,
+-	// Bytes 1680 - 16bf
+-	0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43, 0xE9, 0xBD,
+-	0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43, 0xE9, 0xBD,
+-	0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43, 0xE9, 0xBE,
+-	0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43, 0xE9, 0xBE,
+-	0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43, 0xEA, 0x9D,
+-	0xAF, 0x44, 0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0,
+-	0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5,
+-	0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0,
+-	// Bytes 16c0 - 16ff
+-	0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44,
+-	0xF0, 0xA0, 0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8,
+-	0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0,
+-	0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8,
+-	0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1,
+-	0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44,
+-	0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7,
+-	0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0,
+-	// Bytes 1700 - 173f
+-	0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F,
+-	0x44, 0xF0, 0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2,
+-	0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44,
+-	0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC,
+-	0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0,
+-	0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8,
+-	0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3,
+-	0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44,
+-	// Bytes 1740 - 177f
+-	0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F,
+-	0x95, 0x44, 0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0,
+-	0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7,
+-	0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3,
+-	0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44,
+-	0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB,
+-	0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0,
+-	0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3,
+-	// Bytes 1780 - 17bf
+-	0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4,
+-	0x8E, 0xAB, 0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44,
+-	0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0,
+-	0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0,
+-	0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1,
+-	0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5,
+-	0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44,
+-	0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84,
+-	// Bytes 17c0 - 17ff
+-	0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0,
+-	0xA5, 0x89, 0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D,
+-	0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5,
+-	0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44,
+-	0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA,
+-	0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0,
+-	0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90,
+-	0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6,
+-	// Bytes 1800 - 183f
+-	0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44,
+-	0xF0, 0xA6, 0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B,
+-	0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0,
+-	0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3,
+-	0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6,
+-	0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44,
+-	0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0,
+-	0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0,
+-	// Bytes 1840 - 187f
+-	0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC,
+-	0x44, 0xF0, 0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7,
+-	0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44,
+-	0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2,
+-	0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0,
+-	0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93,
+-	0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8,
+-	0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44,
+-	// Bytes 1880 - 18bf
+-	0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF,
+-	0xBA, 0x44, 0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0,
+-	0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F,
+-	0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9,
+-	0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44,
+-	0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC,
+-	0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0,
+-	0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E,
+-	// Bytes 18c0 - 18ff
+-	0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA,
+-	0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98, 0x80, 0x06,
+-	0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x06, 0xE0,
+-	0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x06, 0xE0, 0xAD,
+-	0x87, 0xE0, 0xAC, 0xBE, 0x06, 0xE0, 0xAD, 0x87,
+-	0xE0, 0xAD, 0x96, 0x06, 0xE0, 0xAD, 0x87, 0xE0,
+-	0xAD, 0x97, 0x06, 0xE0, 0xAE, 0x92, 0xE0, 0xAF,
+-	0x97, 0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE,
+-	// Bytes 1900 - 193f
+-	0x06, 0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x06,
+-	0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x06, 0xE0,
+-	0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x06, 0xE0, 0xB3,
+-	0x86, 0xE0, 0xB3, 0x95, 0x06, 0xE0, 0xB3, 0x86,
+-	0xE0, 0xB3, 0x96, 0x06, 0xE0, 0xB5, 0x86, 0xE0,
+-	0xB4, 0xBE, 0x06, 0xE0, 0xB5, 0x86, 0xE0, 0xB5,
+-	0x97, 0x06, 0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE,
+-	0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x06,
+-	// Bytes 1940 - 197f
+-	0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x06, 0xE1,
+-	0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC,
+-	0x87, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0x89,
+-	0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0x8B, 0xE1,
+-	0xAC, 0xB5, 0x06, 0xE1, 0xAC, 0x8D, 0xE1, 0xAC,
+-	0xB5, 0x06, 0xE1, 0xAC, 0x91, 0xE1, 0xAC, 0xB5,
+-	0x06, 0xE1, 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x06,
+-	0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x06, 0xE1,
+-	// Bytes 1980 - 19bf
+-	0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAC,
+-	0xBF, 0xE1, 0xAC, 0xB5, 0x06, 0xE1, 0xAD, 0x82,
+-	0xE1, 0xAC, 0xB5, 0x08, 0xF0, 0x91, 0x84, 0xB1,
+-	0xF0, 0x91, 0x84, 0xA7, 0x08, 0xF0, 0x91, 0x84,
+-	0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x09, 0xE0, 0xB3,
+-	0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, 0x42,
+-	0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E,
+-	0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31,
+-	// Bytes 19c0 - 19ff
+-	0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30, 0x42,
+-	0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31, 0x33,
+-	0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42, 0x31,
+-	0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38, 0x42,
+-	0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E,
+-	0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42, 0x32,
+-	0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34, 0x42,
+-	0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32, 0x37,
+-	// Bytes 1a00 - 1a3f
+-	0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42, 0x33,
+-	0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30, 0x42,
+-	0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33, 0x33,
+-	0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42, 0x33,
+-	0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38, 0x42,
+-	0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E,
+-	0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42, 0x34,
+-	0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34, 0x42,
+-	// Bytes 1a40 - 1a7f
+-	0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34, 0x37,
+-	0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42, 0x35,
+-	0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30, 0x42,
+-	0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C,
+-	0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38,
+-	0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42,
+-	0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F,
+-	0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42, 0x43,
+-	// Bytes 1a80 - 1abf
+-	0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42,
+-	0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47, 0x79,
+-	0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42, 0x48,
+-	0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49, 0x42,
+-	0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49, 0x56,
+-	0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B,
+-	0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42,
+-	0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43,
+-	// Bytes 1ac0 - 1aff
+-	0x42, 0x4D, 0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D,
+-	0x57, 0x42, 0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42,
+-	0x4E, 0x6F, 0x42, 0x50, 0x48, 0x42, 0x50, 0x52,
+-	0x42, 0x50, 0x61, 0x42, 0x52, 0x73, 0x42, 0x53,
+-	0x44, 0x42, 0x53, 0x4D, 0x42, 0x53, 0x53, 0x42,
+-	0x53, 0x76, 0x42, 0x54, 0x4D, 0x42, 0x56, 0x49,
+-	0x42, 0x57, 0x43, 0x42, 0x57, 0x5A, 0x42, 0x57,
+-	0x62, 0x42, 0x58, 0x49, 0x42, 0x63, 0x63, 0x42,
+-	// Bytes 1b00 - 1b3f
+-	0x63, 0x64, 0x42, 0x63, 0x6D, 0x42, 0x64, 0x42,
+-	0x42, 0x64, 0x61, 0x42, 0x64, 0x6C, 0x42, 0x64,
+-	0x6D, 0x42, 0x64, 0x7A, 0x42, 0x65, 0x56, 0x42,
+-	0x66, 0x66, 0x42, 0x66, 0x69, 0x42, 0x66, 0x6C,
+-	0x42, 0x66, 0x6D, 0x42, 0x68, 0x61, 0x42, 0x69,
+-	0x69, 0x42, 0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42,
+-	0x69, 0x76, 0x42, 0x69, 0x78, 0x42, 0x6B, 0x41,
+-	0x42, 0x6B, 0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B,
+-	// Bytes 1b40 - 1b7f
+-	0x67, 0x42, 0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42,
+-	0x6B, 0x74, 0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D,
+-	0x42, 0x6C, 0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D,
+-	0x32, 0x42, 0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42,
+-	0x6D, 0x56, 0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62,
+-	0x42, 0x6D, 0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D,
+-	0x6D, 0x42, 0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42,
+-	0x6E, 0x46, 0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57,
+-	// Bytes 1b80 - 1bbf
+-	0x42, 0x6E, 0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E,
+-	0x73, 0x42, 0x6F, 0x56, 0x42, 0x70, 0x41, 0x42,
+-	0x70, 0x46, 0x42, 0x70, 0x56, 0x42, 0x70, 0x57,
+-	0x42, 0x70, 0x63, 0x42, 0x70, 0x73, 0x42, 0x73,
+-	0x72, 0x42, 0x73, 0x74, 0x42, 0x76, 0x69, 0x42,
+-	0x78, 0x69, 0x43, 0x28, 0x31, 0x29, 0x43, 0x28,
+-	0x32, 0x29, 0x43, 0x28, 0x33, 0x29, 0x43, 0x28,
+-	0x34, 0x29, 0x43, 0x28, 0x35, 0x29, 0x43, 0x28,
+-	// Bytes 1bc0 - 1bff
+-	0x36, 0x29, 0x43, 0x28, 0x37, 0x29, 0x43, 0x28,
+-	0x38, 0x29, 0x43, 0x28, 0x39, 0x29, 0x43, 0x28,
+-	0x41, 0x29, 0x43, 0x28, 0x42, 0x29, 0x43, 0x28,
+-	0x43, 0x29, 0x43, 0x28, 0x44, 0x29, 0x43, 0x28,
+-	0x45, 0x29, 0x43, 0x28, 0x46, 0x29, 0x43, 0x28,
+-	0x47, 0x29, 0x43, 0x28, 0x48, 0x29, 0x43, 0x28,
+-	0x49, 0x29, 0x43, 0x28, 0x4A, 0x29, 0x43, 0x28,
+-	0x4B, 0x29, 0x43, 0x28, 0x4C, 0x29, 0x43, 0x28,
+-	// Bytes 1c00 - 1c3f
+-	0x4D, 0x29, 0x43, 0x28, 0x4E, 0x29, 0x43, 0x28,
+-	0x4F, 0x29, 0x43, 0x28, 0x50, 0x29, 0x43, 0x28,
+-	0x51, 0x29, 0x43, 0x28, 0x52, 0x29, 0x43, 0x28,
+-	0x53, 0x29, 0x43, 0x28, 0x54, 0x29, 0x43, 0x28,
+-	0x55, 0x29, 0x43, 0x28, 0x56, 0x29, 0x43, 0x28,
+-	0x57, 0x29, 0x43, 0x28, 0x58, 0x29, 0x43, 0x28,
+-	0x59, 0x29, 0x43, 0x28, 0x5A, 0x29, 0x43, 0x28,
+-	0x61, 0x29, 0x43, 0x28, 0x62, 0x29, 0x43, 0x28,
+-	// Bytes 1c40 - 1c7f
+-	0x63, 0x29, 0x43, 0x28, 0x64, 0x29, 0x43, 0x28,
+-	0x65, 0x29, 0x43, 0x28, 0x66, 0x29, 0x43, 0x28,
+-	0x67, 0x29, 0x43, 0x28, 0x68, 0x29, 0x43, 0x28,
+-	0x69, 0x29, 0x43, 0x28, 0x6A, 0x29, 0x43, 0x28,
+-	0x6B, 0x29, 0x43, 0x28, 0x6C, 0x29, 0x43, 0x28,
+-	0x6D, 0x29, 0x43, 0x28, 0x6E, 0x29, 0x43, 0x28,
+-	0x6F, 0x29, 0x43, 0x28, 0x70, 0x29, 0x43, 0x28,
+-	0x71, 0x29, 0x43, 0x28, 0x72, 0x29, 0x43, 0x28,
+-	// Bytes 1c80 - 1cbf
+-	0x73, 0x29, 0x43, 0x28, 0x74, 0x29, 0x43, 0x28,
+-	0x75, 0x29, 0x43, 0x28, 0x76, 0x29, 0x43, 0x28,
+-	0x77, 0x29, 0x43, 0x28, 0x78, 0x29, 0x43, 0x28,
+-	0x79, 0x29, 0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E,
+-	0x2E, 0x2E, 0x43, 0x31, 0x30, 0x2E, 0x43, 0x31,
+-	0x31, 0x2E, 0x43, 0x31, 0x32, 0x2E, 0x43, 0x31,
+-	0x33, 0x2E, 0x43, 0x31, 0x34, 0x2E, 0x43, 0x31,
+-	0x35, 0x2E, 0x43, 0x31, 0x36, 0x2E, 0x43, 0x31,
+-	// Bytes 1cc0 - 1cff
+-	0x37, 0x2E, 0x43, 0x31, 0x38, 0x2E, 0x43, 0x31,
+-	0x39, 0x2E, 0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A,
+-	0x3A, 0x3D, 0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43,
+-	0x6F, 0x2E, 0x43, 0x46, 0x41, 0x58, 0x43, 0x47,
+-	0x48, 0x7A, 0x43, 0x47, 0x50, 0x61, 0x43, 0x49,
+-	0x49, 0x49, 0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C,
+-	0xC2, 0xB7, 0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D,
+-	0x50, 0x61, 0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50,
+-	// Bytes 1d00 - 1d3f
+-	0x50, 0x4D, 0x43, 0x50, 0x50, 0x56, 0x43, 0x50,
+-	0x54, 0x45, 0x43, 0x54, 0x45, 0x4C, 0x43, 0x54,
+-	0x48, 0x7A, 0x43, 0x56, 0x49, 0x49, 0x43, 0x58,
+-	0x49, 0x49, 0x43, 0x61, 0x2F, 0x63, 0x43, 0x61,
+-	0x2F, 0x73, 0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62,
+-	0x61, 0x72, 0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63,
+-	0x2F, 0x75, 0x43, 0x63, 0x61, 0x6C, 0x43, 0x63,
+-	0x6D, 0x32, 0x43, 0x63, 0x6D, 0x33, 0x43, 0x64,
+-	// Bytes 1d40 - 1d7f
+-	0x6D, 0x32, 0x43, 0x64, 0x6D, 0x33, 0x43, 0x65,
+-	0x72, 0x67, 0x43, 0x66, 0x66, 0x69, 0x43, 0x66,
+-	0x66, 0x6C, 0x43, 0x67, 0x61, 0x6C, 0x43, 0x68,
+-	0x50, 0x61, 0x43, 0x69, 0x69, 0x69, 0x43, 0x6B,
+-	0x48, 0x7A, 0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B,
+-	0x6D, 0x32, 0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B,
+-	0xCE, 0xA9, 0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C,
+-	0xC2, 0xB7, 0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D,
+-	// Bytes 1d80 - 1dbf
+-	0x6D, 0x32, 0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D,
+-	0x6F, 0x6C, 0x43, 0x72, 0x61, 0x64, 0x43, 0x76,
+-	0x69, 0x69, 0x43, 0x78, 0x69, 0x69, 0x43, 0xC2,
+-	0xB0, 0x43, 0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA,
+-	0xBC, 0x6E, 0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE,
+-	0xBC, 0x46, 0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE,
+-	0xBC, 0x57, 0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE,
+-	0xBC, 0x6C, 0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE,
+-	// Bytes 1dc0 - 1dff
+-	0xBC, 0x73, 0x44, 0x28, 0x31, 0x30, 0x29, 0x44,
+-	0x28, 0x31, 0x31, 0x29, 0x44, 0x28, 0x31, 0x32,
+-	0x29, 0x44, 0x28, 0x31, 0x33, 0x29, 0x44, 0x28,
+-	0x31, 0x34, 0x29, 0x44, 0x28, 0x31, 0x35, 0x29,
+-	0x44, 0x28, 0x31, 0x36, 0x29, 0x44, 0x28, 0x31,
+-	0x37, 0x29, 0x44, 0x28, 0x31, 0x38, 0x29, 0x44,
+-	0x28, 0x31, 0x39, 0x29, 0x44, 0x28, 0x32, 0x30,
+-	0x29, 0x44, 0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31,
+-	// Bytes 1e00 - 1e3f
+-	0xE2, 0x81, 0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5,
+-	0x44, 0x31, 0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7,
+-	0x82, 0xB9, 0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44,
+-	0x32, 0xE6, 0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82,
+-	0xB9, 0x44, 0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33,
+-	0xE6, 0x9C, 0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9,
+-	0x44, 0x34, 0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6,
+-	0x9C, 0x88, 0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44,
+-	// Bytes 1e40 - 1e7f
+-	0x35, 0xE6, 0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C,
+-	0x88, 0x44, 0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36,
+-	0xE6, 0x97, 0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88,
+-	0x44, 0x36, 0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6,
+-	0x97, 0xA5, 0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44,
+-	0x37, 0xE7, 0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97,
+-	0xA5, 0x44, 0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38,
+-	0xE7, 0x82, 0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5,
+-	// Bytes 1e80 - 1ebf
+-	0x44, 0x39, 0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7,
+-	0x82, 0xB9, 0x44, 0x56, 0x49, 0x49, 0x49, 0x44,
+-	0x61, 0x2E, 0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61,
+-	0x6C, 0x44, 0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76,
+-	0x69, 0x69, 0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82,
+-	0x44, 0xD5, 0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4,
+-	0xD5, 0xAB, 0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44,
+-	0xD5, 0xB4, 0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5,
+-	// Bytes 1ec0 - 1eff
+-	0xB6, 0x44, 0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8,
+-	0xA7, 0xD9, 0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC,
+-	0x44, 0xD8, 0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8,
+-	0xD8, 0xAE, 0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44,
+-	0xD8, 0xA8, 0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9,
+-	0x85, 0x44, 0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8,
+-	0xA8, 0xD9, 0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89,
+-	0x44, 0xD8, 0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA,
+-	// Bytes 1f00 - 1f3f
+-	0xD8, 0xAC, 0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44,
+-	0xD8, 0xAA, 0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8,
+-	0xB1, 0x44, 0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8,
+-	0xAA, 0xD9, 0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86,
+-	0x44, 0xD8, 0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA,
+-	0xD9, 0x89, 0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44,
+-	0xD8, 0xAB, 0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8,
+-	0xB1, 0x44, 0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8,
+-	// Bytes 1f40 - 1f7f
+-	0xAB, 0xD9, 0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86,
+-	0x44, 0xD8, 0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB,
+-	0xD9, 0x89, 0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44,
+-	0xD8, 0xAC, 0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9,
+-	0x85, 0x44, 0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8,
+-	0xAC, 0xD9, 0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC,
+-	0x44, 0xD8, 0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD,
+-	0xD9, 0x89, 0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44,
+-	// Bytes 1f80 - 1fbf
+-	0xD8, 0xAE, 0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8,
+-	0xAD, 0x44, 0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8,
+-	0xAE, 0xD9, 0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A,
+-	0x44, 0xD8, 0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3,
+-	0xD8, 0xAD, 0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44,
+-	0xD8, 0xB3, 0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9,
+-	0x85, 0x44, 0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8,
+-	0xB3, 0xD9, 0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A,
+-	// Bytes 1fc0 - 1fff
+-	0x44, 0xD8, 0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4,
+-	0xD8, 0xAD, 0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44,
+-	0xD8, 0xB4, 0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9,
+-	0x85, 0x44, 0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8,
+-	0xB4, 0xD9, 0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A,
+-	0x44, 0xD8, 0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5,
+-	0xD8, 0xAE, 0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44,
+-	0xD8, 0xB5, 0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9,
+-	// Bytes 2000 - 203f
+-	0x89, 0x44, 0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8,
+-	0xB6, 0xD8, 0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD,
+-	0x44, 0xD8, 0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6,
+-	0xD8, 0xB1, 0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44,
+-	0xD8, 0xB6, 0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9,
+-	0x8A, 0x44, 0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8,
+-	0xB7, 0xD9, 0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89,
+-	0x44, 0xD8, 0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8,
+-	// Bytes 2040 - 207f
+-	0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44,
+-	0xD8, 0xB9, 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9,
+-	0x89, 0x44, 0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8,
+-	0xBA, 0xD8, 0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85,
+-	0x44, 0xD8, 0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA,
+-	0xD9, 0x8A, 0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44,
+-	0xD9, 0x81, 0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8,
+-	0xAE, 0x44, 0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9,
+-	// Bytes 2080 - 20bf
+-	0x81, 0xD9, 0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A,
+-	0x44, 0xD9, 0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82,
+-	0xD9, 0x85, 0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44,
+-	0xD9, 0x82, 0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8,
+-	0xA7, 0x44, 0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9,
+-	0x83, 0xD8, 0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE,
+-	0x44, 0xD9, 0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83,
+-	0xD9, 0x85, 0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44,
+-	// Bytes 20c0 - 20ff
+-	0xD9, 0x83, 0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8,
+-	0xA7, 0x44, 0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9,
+-	0x84, 0xD8, 0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE,
+-	0x44, 0xD9, 0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84,
+-	0xD9, 0x87, 0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44,
+-	0xD9, 0x84, 0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8,
+-	0xA7, 0x44, 0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9,
+-	0x85, 0xD8, 0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE,
+-	// Bytes 2100 - 213f
+-	0x44, 0xD9, 0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85,
+-	0xD9, 0x89, 0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44,
+-	0xD9, 0x86, 0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8,
+-	0xAD, 0x44, 0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9,
+-	0x86, 0xD8, 0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2,
+-	0x44, 0xD9, 0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86,
+-	0xD9, 0x86, 0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44,
+-	0xD9, 0x86, 0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9,
+-	// Bytes 2140 - 217f
+-	0x8A, 0x44, 0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9,
+-	0x87, 0xD9, 0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89,
+-	0x44, 0xD9, 0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88,
+-	0xD9, 0xB4, 0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44,
+-	0xD9, 0x8A, 0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8,
+-	0xAE, 0x44, 0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9,
+-	0x8A, 0xD8, 0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85,
+-	0x44, 0xD9, 0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A,
+-	// Bytes 2180 - 21bf
+-	0xD9, 0x87, 0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44,
+-	0xD9, 0x8A, 0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9,
+-	0xB4, 0x44, 0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28,
+-	0xE1, 0x84, 0x80, 0x29, 0x45, 0x28, 0xE1, 0x84,
+-	0x82, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x83, 0x29,
+-	0x45, 0x28, 0xE1, 0x84, 0x85, 0x29, 0x45, 0x28,
+-	0xE1, 0x84, 0x86, 0x29, 0x45, 0x28, 0xE1, 0x84,
+-	0x87, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x89, 0x29,
+-	// Bytes 21c0 - 21ff
+-	0x45, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28,
+-	0xE1, 0x84, 0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84,
+-	0x8E, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29,
+-	0x45, 0x28, 0xE1, 0x84, 0x90, 0x29, 0x45, 0x28,
+-	0xE1, 0x84, 0x91, 0x29, 0x45, 0x28, 0xE1, 0x84,
+-	0x92, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29,
+-	0x45, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28,
+-	0xE4, 0xB8, 0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9,
+-	// Bytes 2200 - 223f
+-	0x9D, 0x29, 0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29,
+-	0x45, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28,
+-	0xE4, 0xBB, 0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC,
+-	0x81, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29,
+-	0x45, 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28,
+-	0xE5, 0x85, 0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A,
+-	0xB4, 0x29, 0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29,
+-	0x45, 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28,
+-	// Bytes 2240 - 227f
+-	0xE5, 0x90, 0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91,
+-	0xBC, 0x29, 0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29,
+-	0x45, 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28,
+-	0xE5, 0xAD, 0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97,
+-	0xA5, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29,
+-	0x45, 0x28, 0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28,
+-	0xE6, 0x9C, 0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0,
+-	0xAA, 0x29, 0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29,
+-	// Bytes 2280 - 22bf
+-	0x45, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28,
+-	0xE7, 0x89, 0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B,
+-	0xA3, 0x29, 0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29,
+-	0x45, 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28,
+-	0xE7, 0xA5, 0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87,
+-	0xAA, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29,
+-	0x45, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28,
+-	0xE8, 0xB3, 0x87, 0x29, 0x45, 0x28, 0xE9, 0x87,
+-	// Bytes 22c0 - 22ff
+-	0x91, 0x29, 0x45, 0x30, 0xE2, 0x81, 0x84, 0x33,
+-	0x45, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31,
+-	0x30, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7,
+-	0x82, 0xB9, 0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5,
+-	0x45, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31,
+-	0x31, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6,
+-	0x97, 0xA5, 0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88,
+-	0x45, 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+-	// Bytes 2300 - 233f
+-	0x33, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7,
+-	0x82, 0xB9, 0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5,
+-	0x45, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+-	0x35, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7,
+-	0x82, 0xB9, 0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5,
+-	0x45, 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+-	0x37, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7,
+-	0x82, 0xB9, 0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5,
+-	// Bytes 2340 - 237f
+-	0x45, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31,
+-	0x39, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7,
+-	0x82, 0xB9, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x32,
+-	0x45, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31,
+-	0xE2, 0x81, 0x84, 0x34, 0x45, 0x31, 0xE2, 0x81,
+-	0x84, 0x35, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x36,
+-	0x45, 0x31, 0xE2, 0x81, 0x84, 0x37, 0x45, 0x31,
+-	0xE2, 0x81, 0x84, 0x38, 0x45, 0x31, 0xE2, 0x81,
+-	// Bytes 2380 - 23bf
+-	0x84, 0x39, 0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5,
+-	0x45, 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+-	0x31, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7,
+-	0x82, 0xB9, 0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5,
+-	0x45, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+-	0x33, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7,
+-	0x82, 0xB9, 0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5,
+-	0x45, 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32,
+-	// Bytes 23c0 - 23ff
+-	0x35, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6,
+-	0x97, 0xA5, 0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5,
+-	0x45, 0x32, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32,
+-	0x39, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81,
+-	0x84, 0x33, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x35,
+-	0x45, 0x33, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33,
+-	0x31, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81,
+-	0x84, 0x34, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x35,
+-	// Bytes 2400 - 243f
+-	0x45, 0x33, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x34,
+-	0xE2, 0x81, 0x84, 0x35, 0x45, 0x35, 0xE2, 0x81,
+-	0x84, 0x36, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x38,
+-	0x45, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x41,
+-	0xE2, 0x88, 0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88,
+-	0x95, 0x6D, 0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73,
+-	0x46, 0x31, 0xE2, 0x81, 0x84, 0x31, 0x30, 0x46,
+-	0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D,
+-	// Bytes 2440 - 247f
+-	0xE2, 0x88, 0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8,
+-	0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8,
+-	0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC,
+-	0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9,
+-	0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A,
+-	0x46, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46,
+-	0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8,
+-	0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA,
+-	// Bytes 2480 - 24bf
+-	0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8,
+-	0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85,
+-	0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8,
+-	0xAD, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE,
+-	0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+-	0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,
+-	0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC,
+-	0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9,
+-	// Bytes 24c0 - 24ff
+-	0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85,
+-	0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9,
+-	0x8A, 0x46, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A,
+-	0x46, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46,
+-	0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,
+-	0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3,
+-	0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8,
+-	0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE,
+-	// Bytes 2500 - 253f
+-	0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9,
+-	0x8A, 0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC,
+-	0x46, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+-	0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8,
+-	0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4,
+-	0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8,
+-	0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85,
+-	0xD8, 0xAE, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9,
+-	// Bytes 2540 - 257f
+-	0x85, 0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD,
+-	0x46, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,
+-	0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8,
+-	0xB5, 0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5,
+-	0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8,
+-	0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD,
+-	0xD9, 0x8A, 0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9,
+-	0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD,
+-	// Bytes 2580 - 25bf
+-	0x46, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46,
+-	0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8,
+-	0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9,
+-	0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9,
+-	0x85, 0xD9, 0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85,
+-	0xD9, 0x8A, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9,
+-	0x85, 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89,
+-	0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+-	// Bytes 25c0 - 25ff
+-	0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9,
+-	0x81, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82,
+-	0xD9, 0x84, 0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9,
+-	0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85,
+-	0xD9, 0x85, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9,
+-	0x8A, 0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85,
+-	0x46, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46,
+-	0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9,
+-	// Bytes 2600 - 263f
+-	0x84, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84,
+-	0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8,
+-	0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD,
+-	0xD9, 0x89, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9,
+-	0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85,
+-	0x46, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46,
+-	0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9,
+-	0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85,
+-	// Bytes 2640 - 267f
+-	0xD8, 0xAC, 0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8,
+-	0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC,
+-	0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8,
+-	0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85,
+-	0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46,
+-	0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9,
+-	0x85, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85,
+-	0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9,
+-	// Bytes 2680 - 26bf
+-	0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC,
+-	0xD8, 0xAD, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9,
+-	0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89,
+-	0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46,
+-	0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9,
+-	0x86, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86,
+-	0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9,
+-	0x85, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85,
+-	// Bytes 26c0 - 26ff
+-	0xD9, 0x8A, 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8,
+-	0xAC, 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85,
+-	0x46, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46,
+-	0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9,
+-	0x8A, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A,
+-	0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9,
+-	0x94, 0xD8, 0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+-	0xD8, 0xAC, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8,
+-	// Bytes 2700 - 273f
+-	0xAD, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE,
+-	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46,
+-	0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9,
+-	0x8A, 0xD9, 0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A,
+-	0xD9, 0x94, 0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9,
+-	0x94, 0xD9, 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94,
+-	0xD9, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9,
+-	0x89, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A,
+-	// Bytes 2740 - 277f
+-	0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46,
+-	0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9,
+-	0x8A, 0xD9, 0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A,
+-	0xD9, 0x94, 0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9,
+-	0x94, 0xDB, 0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0,
+-	0xB8, 0xB2, 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA,
+-	0x99, 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1,
+-	0x46, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46,
+-	// Bytes 2780 - 27bf
+-	0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0,
+-	0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD,
+-	0x8C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91,
+-	0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0,
+-	0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE,
+-	0xB7, 0x46, 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5,
+-	0x46, 0xE0, 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46,
+-	0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0,
+-	// Bytes 27c0 - 27ff
+-	0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE,
+-	0xA6, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB,
+-	0xE0, 0xBE, 0xB7, 0x46, 0xE1, 0x84, 0x80, 0xE1,
+-	0x85, 0xA1, 0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85,
+-	0xA1, 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1,
+-	0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x46,
+-	0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x46, 0xE1,
+-	0x84, 0x87, 0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84,
+-	// Bytes 2800 - 283f
+-	0x89, 0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84, 0x8B,
+-	0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84, 0x8B, 0xE1,
+-	0x85, 0xAE, 0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85,
+-	0xA1, 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1,
+-	0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x46,
+-	0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x46, 0xE1,
+-	0x84, 0x91, 0xE1, 0x85, 0xA1, 0x46, 0xE1, 0x84,
+-	0x92, 0xE1, 0x85, 0xA1, 0x46, 0xE2, 0x80, 0xB2,
+-	// Bytes 2840 - 287f
+-	0xE2, 0x80, 0xB2, 0x46, 0xE2, 0x80, 0xB5, 0xE2,
+-	0x80, 0xB5, 0x46, 0xE2, 0x88, 0xAB, 0xE2, 0x88,
+-	0xAB, 0x46, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE,
+-	0x46, 0xE3, 0x81, 0xBB, 0xE3, 0x81, 0x8B, 0x46,
+-	0xE3, 0x82, 0x88, 0xE3, 0x82, 0x8A, 0x46, 0xE3,
+-	0x82, 0xAD, 0xE3, 0x83, 0xAD, 0x46, 0xE3, 0x82,
+-	0xB3, 0xE3, 0x82, 0xB3, 0x46, 0xE3, 0x82, 0xB3,
+-	0xE3, 0x83, 0x88, 0x46, 0xE3, 0x83, 0x88, 0xE3,
+-	// Bytes 2880 - 28bf
+-	0x83, 0xB3, 0x46, 0xE3, 0x83, 0x8A, 0xE3, 0x83,
+-	0x8E, 0x46, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xB3,
+-	0x46, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0x46,
+-	0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0x46, 0xE3,
+-	0x83, 0xAC, 0xE3, 0x83, 0xA0, 0x46, 0xE5, 0xA4,
+-	0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5, 0xB9, 0xB3,
+-	0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98, 0x8E, 0xE6,
+-	0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD, 0xE5, 0x92,
+-	// Bytes 28c0 - 28ff
+-	0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95,
+-	0x73, 0x47, 0xE3, 0x80, 0x94, 0x53, 0xE3, 0x80,
+-	0x95, 0x48, 0x28, 0xE1, 0x84, 0x80, 0xE1, 0x85,
+-	0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x82, 0xE1,
+-	0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x83,
+-	0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+-	0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
+-	0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+-	// Bytes 2900 - 293f
+-	0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+-	0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x29,
+-	0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1,
+-	0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85,
+-	0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, 0xE1,
+-	0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8E,
+-	0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84,
+-	0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1,
+-	// Bytes 2940 - 297f
+-	0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28,
+-	0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x29, 0x48,
+-	0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x29,
+-	0x48, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73,
+-	0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xA8,
+-	0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9, 0x84, 0xD9,
+-	0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1, 0xD8, 0xB3,
+-	0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8, 0xB1, 0xDB,
+-	// Bytes 2980 - 29bf
+-	0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48, 0xD8, 0xB5,
+-	0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85, 0x48, 0xD8,
+-	0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x48,
+-	0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAF,
+-	0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9,
+-	0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,
+-	0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80, 0xB5, 0xE2,
+-	0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49, 0xE2, 0x88,
+-	// Bytes 29c0 - 29ff
+-	0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x49,
+-	0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88,
+-	0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4, 0xB8, 0x89,
+-	0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE4,
+-	0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+-	0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80, 0x95, 0x49,
+-	0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89, 0xE3, 0x80,
+-	0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x89, 0x93,
+-	// Bytes 2a00 - 2a3f
+-	0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6,
+-	0x95, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80,
+-	0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80, 0x95, 0x49,
+-	0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9, 0xE3, 0x80,
+-	0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x9B, 0x97,
+-	0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82, 0xA2, 0xE3,
+-	0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x82,
+-	0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49,
+-	// Bytes 2a40 - 2a7f
+-	0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3, 0x83,
+-	0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3,
+-	0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xAA, 0xE3,
+-	0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49, 0xE3, 0x82,
+-	0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA, 0x49,
+-	0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, 0xE3, 0x82,
+-	0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xAB,
+-	0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82, 0xBB, 0xE3,
+-	// Bytes 2a80 - 2abf
+-	0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82,
+-	0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x49,
+-	0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xE3, 0x82,
+-	0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99,
+-	0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x8E, 0xE3,
+-	0x83, 0x83, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83,
+-	0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84, 0x49,
+-	0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	// Bytes 2ac0 - 2aff
+-	0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,
+-	0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83, 0x95, 0xE3,
+-	0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83,
+-	0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD, 0x49,
+-	0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, 0xE3, 0x83,
+-	0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC,
+-	0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9B, 0xE3,
+-	0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83,
+-	// Bytes 2b00 - 2b3f
+-	0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAB, 0x49,
+-	0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, 0xE3, 0x83,
+-	0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xAB,
+-	0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83, 0xA4, 0xE3,
+-	0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83,
+-	0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0x49,
+-	0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83,
+-	0x88, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE,
+-	// Bytes 2b40 - 2b7f
+-	0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x4C, 0xE2,
+-	0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2,
+-	0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2,
+-	0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB,
+-	0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3,
+-	0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82,
+-	0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3,
+-	0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82,
+-	// Bytes 2b80 - 2bbf
+-	0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C,
+-	0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB,
+-	0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83,
+-	0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD,
+-	0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3,
+-	0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B,
+-	0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3,
+-	// Bytes 2bc0 - 2bff
+-	0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC,
+-	0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3,
+-	0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82,
+-	0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3,
+-	0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82,
+-	0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C,
+-	0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F,
+-	// Bytes 2c00 - 2c3f
+-	0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+-	0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A,
+-	0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,
+-	0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC,
+-	0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3,
+-	0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF,
+-	0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,
+-	0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83,
+-	// Bytes 2c40 - 2c7f
+-	0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3,
+-	0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82,
+-	0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C,
+-	0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82,
+-	0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F,
+-	0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83,
+-	0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC,
+-	0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3,
+-	// Bytes 2c80 - 2cbf
+-	0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88,
+-	0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3,
+-	0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC,
+-	0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4,
+-	0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1,
+-	0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92,
+-	0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9,
+-	0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7,
+-	// Bytes 2cc0 - 2cff
+-	0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE1, 0x84, 0x8E,
+-	0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84,
+-	0x80, 0xE1, 0x85, 0xA9, 0x4F, 0xE3, 0x82, 0xA2,
+-	0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2,
+-	0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+-	0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD,
+-	0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83,
+-	// Bytes 2d00 - 2d3f
+-	0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5,
+-	0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F,
+-	0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+-	0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98,
+-	0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B,
+-	0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83,
+-	// Bytes 2d40 - 2d7f
+-	0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E,
+-	0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83,
+-	0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1,
+-	0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB,
+-	0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82,
+-	0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84,
+-	0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1,
+-	// Bytes 2d80 - 2dbf
+-	0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3,
+-	0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB,
+-	0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD,
+-	0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD,
+-	0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52,
+-	// Bytes 2dc0 - 2dff
+-	0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83,
+-	0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3,
+-	0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83,
+-	0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3,
+-	0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83,
+-	0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3,
+-	0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88,
+-	0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3,
+-	// Bytes 2e00 - 2e3f
+-	0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88,
+-	0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3,
+-	0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7,
+-	0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3,
+-	0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F,
+-	0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83,
+-	0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3,
+-	0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82,
+-	// Bytes 2e40 - 2e7f
+-	0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9,
+-	0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84,
+-	0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9,
+-	0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88,
+-	0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x86, 0xE0,
+-	0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x86, 0xE0, 0xB7,
+-	0x99, 0xE0, 0xB7, 0x8F, 0x09, 0xE0, 0xB7, 0x99,
+-	0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x09, 0x44,
+-	// Bytes 2e80 - 2ebf
+-	0x44, 0x5A, 0xCC, 0x8C, 0xE6, 0x44, 0x44, 0x7A,
+-	0xCC, 0x8C, 0xE6, 0x44, 0x64, 0x7A, 0xCC, 0x8C,
+-	0xE6, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93,
+-	0xE6, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94,
+-	0xE6, 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95,
+-	0xDC, 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB,
+-	0xE3, 0x82, 0x99, 0x08, 0x4C, 0xE3, 0x82, 0xAD,
+-	0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82,
+-	// Bytes 2ec0 - 2eff
+-	0x99, 0x08, 0x4C, 0xE3, 0x82, 0xB3, 0xE3, 0x83,
+-	0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x08,
+-	0x4C, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3,
+-	0x83, 0x88, 0xE3, 0x82, 0x99, 0x08, 0x4F, 0xE3,
+-	0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3,
+-	0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x08, 0x4F,
+-	0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83,
+-	0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x08,
+-	// Bytes 2f00 - 2f3f
+-	0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3,
+-	0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99,
+-	0x08, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A,
+-	0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82,
+-	0x99, 0x08, 0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82,
+-	0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3,
+-	0x83, 0x88, 0xE3, 0x82, 0x99, 0x08, 0x52, 0xE3,
+-	0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9,
+-	// Bytes 2f40 - 2f7f
+-	0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82,
+-	0x99, 0x08, 0x03, 0x3C, 0xCC, 0xB8, 0x01, 0x03,
+-	0x3D, 0xCC, 0xB8, 0x01, 0x03, 0x3E, 0xCC, 0xB8,
+-	0x01, 0x03, 0x41, 0xCC, 0x80, 0xE6, 0x03, 0x41,
+-	0xCC, 0x81, 0xE6, 0x03, 0x41, 0xCC, 0x83, 0xE6,
+-	0x03, 0x41, 0xCC, 0x84, 0xE6, 0x03, 0x41, 0xCC,
+-	0x89, 0xE6, 0x03, 0x41, 0xCC, 0x8C, 0xE6, 0x03,
+-	0x41, 0xCC, 0x8F, 0xE6, 0x03, 0x41, 0xCC, 0x91,
+-	// Bytes 2f80 - 2fbf
+-	0xE6, 0x03, 0x41, 0xCC, 0xA5, 0xDC, 0x03, 0x41,
+-	0xCC, 0xA8, 0xCA, 0x03, 0x42, 0xCC, 0x87, 0xE6,
+-	0x03, 0x42, 0xCC, 0xA3, 0xDC, 0x03, 0x42, 0xCC,
+-	0xB1, 0xDC, 0x03, 0x43, 0xCC, 0x81, 0xE6, 0x03,
+-	0x43, 0xCC, 0x82, 0xE6, 0x03, 0x43, 0xCC, 0x87,
+-	0xE6, 0x03, 0x43, 0xCC, 0x8C, 0xE6, 0x03, 0x44,
+-	0xCC, 0x87, 0xE6, 0x03, 0x44, 0xCC, 0x8C, 0xE6,
+-	0x03, 0x44, 0xCC, 0xA3, 0xDC, 0x03, 0x44, 0xCC,
+-	// Bytes 2fc0 - 2fff
+-	0xA7, 0xCA, 0x03, 0x44, 0xCC, 0xAD, 0xDC, 0x03,
+-	0x44, 0xCC, 0xB1, 0xDC, 0x03, 0x45, 0xCC, 0x80,
+-	0xE6, 0x03, 0x45, 0xCC, 0x81, 0xE6, 0x03, 0x45,
+-	0xCC, 0x83, 0xE6, 0x03, 0x45, 0xCC, 0x86, 0xE6,
+-	0x03, 0x45, 0xCC, 0x87, 0xE6, 0x03, 0x45, 0xCC,
+-	0x88, 0xE6, 0x03, 0x45, 0xCC, 0x89, 0xE6, 0x03,
+-	0x45, 0xCC, 0x8C, 0xE6, 0x03, 0x45, 0xCC, 0x8F,
+-	0xE6, 0x03, 0x45, 0xCC, 0x91, 0xE6, 0x03, 0x45,
+-	// Bytes 3000 - 303f
+-	0xCC, 0xA8, 0xCA, 0x03, 0x45, 0xCC, 0xAD, 0xDC,
+-	0x03, 0x45, 0xCC, 0xB0, 0xDC, 0x03, 0x46, 0xCC,
+-	0x87, 0xE6, 0x03, 0x47, 0xCC, 0x81, 0xE6, 0x03,
+-	0x47, 0xCC, 0x82, 0xE6, 0x03, 0x47, 0xCC, 0x84,
+-	0xE6, 0x03, 0x47, 0xCC, 0x86, 0xE6, 0x03, 0x47,
+-	0xCC, 0x87, 0xE6, 0x03, 0x47, 0xCC, 0x8C, 0xE6,
+-	0x03, 0x47, 0xCC, 0xA7, 0xCA, 0x03, 0x48, 0xCC,
+-	0x82, 0xE6, 0x03, 0x48, 0xCC, 0x87, 0xE6, 0x03,
+-	// Bytes 3040 - 307f
+-	0x48, 0xCC, 0x88, 0xE6, 0x03, 0x48, 0xCC, 0x8C,
+-	0xE6, 0x03, 0x48, 0xCC, 0xA3, 0xDC, 0x03, 0x48,
+-	0xCC, 0xA7, 0xCA, 0x03, 0x48, 0xCC, 0xAE, 0xDC,
+-	0x03, 0x49, 0xCC, 0x80, 0xE6, 0x03, 0x49, 0xCC,
+-	0x81, 0xE6, 0x03, 0x49, 0xCC, 0x82, 0xE6, 0x03,
+-	0x49, 0xCC, 0x83, 0xE6, 0x03, 0x49, 0xCC, 0x84,
+-	0xE6, 0x03, 0x49, 0xCC, 0x86, 0xE6, 0x03, 0x49,
+-	0xCC, 0x87, 0xE6, 0x03, 0x49, 0xCC, 0x89, 0xE6,
+-	// Bytes 3080 - 30bf
+-	0x03, 0x49, 0xCC, 0x8C, 0xE6, 0x03, 0x49, 0xCC,
+-	0x8F, 0xE6, 0x03, 0x49, 0xCC, 0x91, 0xE6, 0x03,
+-	0x49, 0xCC, 0xA3, 0xDC, 0x03, 0x49, 0xCC, 0xA8,
+-	0xCA, 0x03, 0x49, 0xCC, 0xB0, 0xDC, 0x03, 0x4A,
+-	0xCC, 0x82, 0xE6, 0x03, 0x4B, 0xCC, 0x81, 0xE6,
+-	0x03, 0x4B, 0xCC, 0x8C, 0xE6, 0x03, 0x4B, 0xCC,
+-	0xA3, 0xDC, 0x03, 0x4B, 0xCC, 0xA7, 0xCA, 0x03,
+-	0x4B, 0xCC, 0xB1, 0xDC, 0x03, 0x4C, 0xCC, 0x81,
+-	// Bytes 30c0 - 30ff
+-	0xE6, 0x03, 0x4C, 0xCC, 0x8C, 0xE6, 0x03, 0x4C,
+-	0xCC, 0xA7, 0xCA, 0x03, 0x4C, 0xCC, 0xAD, 0xDC,
+-	0x03, 0x4C, 0xCC, 0xB1, 0xDC, 0x03, 0x4D, 0xCC,
+-	0x81, 0xE6, 0x03, 0x4D, 0xCC, 0x87, 0xE6, 0x03,
+-	0x4D, 0xCC, 0xA3, 0xDC, 0x03, 0x4E, 0xCC, 0x80,
+-	0xE6, 0x03, 0x4E, 0xCC, 0x81, 0xE6, 0x03, 0x4E,
+-	0xCC, 0x83, 0xE6, 0x03, 0x4E, 0xCC, 0x87, 0xE6,
+-	0x03, 0x4E, 0xCC, 0x8C, 0xE6, 0x03, 0x4E, 0xCC,
+-	// Bytes 3100 - 313f
+-	0xA3, 0xDC, 0x03, 0x4E, 0xCC, 0xA7, 0xCA, 0x03,
+-	0x4E, 0xCC, 0xAD, 0xDC, 0x03, 0x4E, 0xCC, 0xB1,
+-	0xDC, 0x03, 0x4F, 0xCC, 0x80, 0xE6, 0x03, 0x4F,
+-	0xCC, 0x81, 0xE6, 0x03, 0x4F, 0xCC, 0x86, 0xE6,
+-	0x03, 0x4F, 0xCC, 0x89, 0xE6, 0x03, 0x4F, 0xCC,
+-	0x8B, 0xE6, 0x03, 0x4F, 0xCC, 0x8C, 0xE6, 0x03,
+-	0x4F, 0xCC, 0x8F, 0xE6, 0x03, 0x4F, 0xCC, 0x91,
+-	0xE6, 0x03, 0x50, 0xCC, 0x81, 0xE6, 0x03, 0x50,
+-	// Bytes 3140 - 317f
+-	0xCC, 0x87, 0xE6, 0x03, 0x52, 0xCC, 0x81, 0xE6,
+-	0x03, 0x52, 0xCC, 0x87, 0xE6, 0x03, 0x52, 0xCC,
+-	0x8C, 0xE6, 0x03, 0x52, 0xCC, 0x8F, 0xE6, 0x03,
+-	0x52, 0xCC, 0x91, 0xE6, 0x03, 0x52, 0xCC, 0xA7,
+-	0xCA, 0x03, 0x52, 0xCC, 0xB1, 0xDC, 0x03, 0x53,
+-	0xCC, 0x82, 0xE6, 0x03, 0x53, 0xCC, 0x87, 0xE6,
+-	0x03, 0x53, 0xCC, 0xA6, 0xDC, 0x03, 0x53, 0xCC,
+-	0xA7, 0xCA, 0x03, 0x54, 0xCC, 0x87, 0xE6, 0x03,
+-	// Bytes 3180 - 31bf
+-	0x54, 0xCC, 0x8C, 0xE6, 0x03, 0x54, 0xCC, 0xA3,
+-	0xDC, 0x03, 0x54, 0xCC, 0xA6, 0xDC, 0x03, 0x54,
+-	0xCC, 0xA7, 0xCA, 0x03, 0x54, 0xCC, 0xAD, 0xDC,
+-	0x03, 0x54, 0xCC, 0xB1, 0xDC, 0x03, 0x55, 0xCC,
+-	0x80, 0xE6, 0x03, 0x55, 0xCC, 0x81, 0xE6, 0x03,
+-	0x55, 0xCC, 0x82, 0xE6, 0x03, 0x55, 0xCC, 0x86,
+-	0xE6, 0x03, 0x55, 0xCC, 0x89, 0xE6, 0x03, 0x55,
+-	0xCC, 0x8A, 0xE6, 0x03, 0x55, 0xCC, 0x8B, 0xE6,
+-	// Bytes 31c0 - 31ff
+-	0x03, 0x55, 0xCC, 0x8C, 0xE6, 0x03, 0x55, 0xCC,
+-	0x8F, 0xE6, 0x03, 0x55, 0xCC, 0x91, 0xE6, 0x03,
+-	0x55, 0xCC, 0xA3, 0xDC, 0x03, 0x55, 0xCC, 0xA4,
+-	0xDC, 0x03, 0x55, 0xCC, 0xA8, 0xCA, 0x03, 0x55,
+-	0xCC, 0xAD, 0xDC, 0x03, 0x55, 0xCC, 0xB0, 0xDC,
+-	0x03, 0x56, 0xCC, 0x83, 0xE6, 0x03, 0x56, 0xCC,
+-	0xA3, 0xDC, 0x03, 0x57, 0xCC, 0x80, 0xE6, 0x03,
+-	0x57, 0xCC, 0x81, 0xE6, 0x03, 0x57, 0xCC, 0x82,
+-	// Bytes 3200 - 323f
+-	0xE6, 0x03, 0x57, 0xCC, 0x87, 0xE6, 0x03, 0x57,
+-	0xCC, 0x88, 0xE6, 0x03, 0x57, 0xCC, 0xA3, 0xDC,
+-	0x03, 0x58, 0xCC, 0x87, 0xE6, 0x03, 0x58, 0xCC,
+-	0x88, 0xE6, 0x03, 0x59, 0xCC, 0x80, 0xE6, 0x03,
+-	0x59, 0xCC, 0x81, 0xE6, 0x03, 0x59, 0xCC, 0x82,
+-	0xE6, 0x03, 0x59, 0xCC, 0x83, 0xE6, 0x03, 0x59,
+-	0xCC, 0x84, 0xE6, 0x03, 0x59, 0xCC, 0x87, 0xE6,
+-	0x03, 0x59, 0xCC, 0x88, 0xE6, 0x03, 0x59, 0xCC,
+-	// Bytes 3240 - 327f
+-	0x89, 0xE6, 0x03, 0x59, 0xCC, 0xA3, 0xDC, 0x03,
+-	0x5A, 0xCC, 0x81, 0xE6, 0x03, 0x5A, 0xCC, 0x82,
+-	0xE6, 0x03, 0x5A, 0xCC, 0x87, 0xE6, 0x03, 0x5A,
+-	0xCC, 0x8C, 0xE6, 0x03, 0x5A, 0xCC, 0xA3, 0xDC,
+-	0x03, 0x5A, 0xCC, 0xB1, 0xDC, 0x03, 0x61, 0xCC,
+-	0x80, 0xE6, 0x03, 0x61, 0xCC, 0x81, 0xE6, 0x03,
+-	0x61, 0xCC, 0x83, 0xE6, 0x03, 0x61, 0xCC, 0x84,
+-	0xE6, 0x03, 0x61, 0xCC, 0x89, 0xE6, 0x03, 0x61,
+-	// Bytes 3280 - 32bf
+-	0xCC, 0x8C, 0xE6, 0x03, 0x61, 0xCC, 0x8F, 0xE6,
+-	0x03, 0x61, 0xCC, 0x91, 0xE6, 0x03, 0x61, 0xCC,
+-	0xA5, 0xDC, 0x03, 0x61, 0xCC, 0xA8, 0xCA, 0x03,
+-	0x62, 0xCC, 0x87, 0xE6, 0x03, 0x62, 0xCC, 0xA3,
+-	0xDC, 0x03, 0x62, 0xCC, 0xB1, 0xDC, 0x03, 0x63,
+-	0xCC, 0x81, 0xE6, 0x03, 0x63, 0xCC, 0x82, 0xE6,
+-	0x03, 0x63, 0xCC, 0x87, 0xE6, 0x03, 0x63, 0xCC,
+-	0x8C, 0xE6, 0x03, 0x64, 0xCC, 0x87, 0xE6, 0x03,
+-	// Bytes 32c0 - 32ff
+-	0x64, 0xCC, 0x8C, 0xE6, 0x03, 0x64, 0xCC, 0xA3,
+-	0xDC, 0x03, 0x64, 0xCC, 0xA7, 0xCA, 0x03, 0x64,
+-	0xCC, 0xAD, 0xDC, 0x03, 0x64, 0xCC, 0xB1, 0xDC,
+-	0x03, 0x65, 0xCC, 0x80, 0xE6, 0x03, 0x65, 0xCC,
+-	0x81, 0xE6, 0x03, 0x65, 0xCC, 0x83, 0xE6, 0x03,
+-	0x65, 0xCC, 0x86, 0xE6, 0x03, 0x65, 0xCC, 0x87,
+-	0xE6, 0x03, 0x65, 0xCC, 0x88, 0xE6, 0x03, 0x65,
+-	0xCC, 0x89, 0xE6, 0x03, 0x65, 0xCC, 0x8C, 0xE6,
+-	// Bytes 3300 - 333f
+-	0x03, 0x65, 0xCC, 0x8F, 0xE6, 0x03, 0x65, 0xCC,
+-	0x91, 0xE6, 0x03, 0x65, 0xCC, 0xA8, 0xCA, 0x03,
+-	0x65, 0xCC, 0xAD, 0xDC, 0x03, 0x65, 0xCC, 0xB0,
+-	0xDC, 0x03, 0x66, 0xCC, 0x87, 0xE6, 0x03, 0x67,
+-	0xCC, 0x81, 0xE6, 0x03, 0x67, 0xCC, 0x82, 0xE6,
+-	0x03, 0x67, 0xCC, 0x84, 0xE6, 0x03, 0x67, 0xCC,
+-	0x86, 0xE6, 0x03, 0x67, 0xCC, 0x87, 0xE6, 0x03,
+-	0x67, 0xCC, 0x8C, 0xE6, 0x03, 0x67, 0xCC, 0xA7,
+-	// Bytes 3340 - 337f
+-	0xCA, 0x03, 0x68, 0xCC, 0x82, 0xE6, 0x03, 0x68,
+-	0xCC, 0x87, 0xE6, 0x03, 0x68, 0xCC, 0x88, 0xE6,
+-	0x03, 0x68, 0xCC, 0x8C, 0xE6, 0x03, 0x68, 0xCC,
+-	0xA3, 0xDC, 0x03, 0x68, 0xCC, 0xA7, 0xCA, 0x03,
+-	0x68, 0xCC, 0xAE, 0xDC, 0x03, 0x68, 0xCC, 0xB1,
+-	0xDC, 0x03, 0x69, 0xCC, 0x80, 0xE6, 0x03, 0x69,
+-	0xCC, 0x81, 0xE6, 0x03, 0x69, 0xCC, 0x82, 0xE6,
+-	0x03, 0x69, 0xCC, 0x83, 0xE6, 0x03, 0x69, 0xCC,
+-	// Bytes 3380 - 33bf
+-	0x84, 0xE6, 0x03, 0x69, 0xCC, 0x86, 0xE6, 0x03,
+-	0x69, 0xCC, 0x89, 0xE6, 0x03, 0x69, 0xCC, 0x8C,
+-	0xE6, 0x03, 0x69, 0xCC, 0x8F, 0xE6, 0x03, 0x69,
+-	0xCC, 0x91, 0xE6, 0x03, 0x69, 0xCC, 0xA3, 0xDC,
+-	0x03, 0x69, 0xCC, 0xA8, 0xCA, 0x03, 0x69, 0xCC,
+-	0xB0, 0xDC, 0x03, 0x6A, 0xCC, 0x82, 0xE6, 0x03,
+-	0x6A, 0xCC, 0x8C, 0xE6, 0x03, 0x6B, 0xCC, 0x81,
+-	0xE6, 0x03, 0x6B, 0xCC, 0x8C, 0xE6, 0x03, 0x6B,
+-	// Bytes 33c0 - 33ff
+-	0xCC, 0xA3, 0xDC, 0x03, 0x6B, 0xCC, 0xA7, 0xCA,
+-	0x03, 0x6B, 0xCC, 0xB1, 0xDC, 0x03, 0x6C, 0xCC,
+-	0x81, 0xE6, 0x03, 0x6C, 0xCC, 0x8C, 0xE6, 0x03,
+-	0x6C, 0xCC, 0xA7, 0xCA, 0x03, 0x6C, 0xCC, 0xAD,
+-	0xDC, 0x03, 0x6C, 0xCC, 0xB1, 0xDC, 0x03, 0x6D,
+-	0xCC, 0x81, 0xE6, 0x03, 0x6D, 0xCC, 0x87, 0xE6,
+-	0x03, 0x6D, 0xCC, 0xA3, 0xDC, 0x03, 0x6E, 0xCC,
+-	0x80, 0xE6, 0x03, 0x6E, 0xCC, 0x81, 0xE6, 0x03,
+-	// Bytes 3400 - 343f
+-	0x6E, 0xCC, 0x83, 0xE6, 0x03, 0x6E, 0xCC, 0x87,
+-	0xE6, 0x03, 0x6E, 0xCC, 0x8C, 0xE6, 0x03, 0x6E,
+-	0xCC, 0xA3, 0xDC, 0x03, 0x6E, 0xCC, 0xA7, 0xCA,
+-	0x03, 0x6E, 0xCC, 0xAD, 0xDC, 0x03, 0x6E, 0xCC,
+-	0xB1, 0xDC, 0x03, 0x6F, 0xCC, 0x80, 0xE6, 0x03,
+-	0x6F, 0xCC, 0x81, 0xE6, 0x03, 0x6F, 0xCC, 0x86,
+-	0xE6, 0x03, 0x6F, 0xCC, 0x89, 0xE6, 0x03, 0x6F,
+-	0xCC, 0x8B, 0xE6, 0x03, 0x6F, 0xCC, 0x8C, 0xE6,
+-	// Bytes 3440 - 347f
+-	0x03, 0x6F, 0xCC, 0x8F, 0xE6, 0x03, 0x6F, 0xCC,
+-	0x91, 0xE6, 0x03, 0x70, 0xCC, 0x81, 0xE6, 0x03,
+-	0x70, 0xCC, 0x87, 0xE6, 0x03, 0x72, 0xCC, 0x81,
+-	0xE6, 0x03, 0x72, 0xCC, 0x87, 0xE6, 0x03, 0x72,
+-	0xCC, 0x8C, 0xE6, 0x03, 0x72, 0xCC, 0x8F, 0xE6,
+-	0x03, 0x72, 0xCC, 0x91, 0xE6, 0x03, 0x72, 0xCC,
+-	0xA7, 0xCA, 0x03, 0x72, 0xCC, 0xB1, 0xDC, 0x03,
+-	0x73, 0xCC, 0x82, 0xE6, 0x03, 0x73, 0xCC, 0x87,
+-	// Bytes 3480 - 34bf
+-	0xE6, 0x03, 0x73, 0xCC, 0xA6, 0xDC, 0x03, 0x73,
+-	0xCC, 0xA7, 0xCA, 0x03, 0x74, 0xCC, 0x87, 0xE6,
+-	0x03, 0x74, 0xCC, 0x88, 0xE6, 0x03, 0x74, 0xCC,
+-	0x8C, 0xE6, 0x03, 0x74, 0xCC, 0xA3, 0xDC, 0x03,
+-	0x74, 0xCC, 0xA6, 0xDC, 0x03, 0x74, 0xCC, 0xA7,
+-	0xCA, 0x03, 0x74, 0xCC, 0xAD, 0xDC, 0x03, 0x74,
+-	0xCC, 0xB1, 0xDC, 0x03, 0x75, 0xCC, 0x80, 0xE6,
+-	0x03, 0x75, 0xCC, 0x81, 0xE6, 0x03, 0x75, 0xCC,
+-	// Bytes 34c0 - 34ff
+-	0x82, 0xE6, 0x03, 0x75, 0xCC, 0x86, 0xE6, 0x03,
+-	0x75, 0xCC, 0x89, 0xE6, 0x03, 0x75, 0xCC, 0x8A,
+-	0xE6, 0x03, 0x75, 0xCC, 0x8B, 0xE6, 0x03, 0x75,
+-	0xCC, 0x8C, 0xE6, 0x03, 0x75, 0xCC, 0x8F, 0xE6,
+-	0x03, 0x75, 0xCC, 0x91, 0xE6, 0x03, 0x75, 0xCC,
+-	0xA3, 0xDC, 0x03, 0x75, 0xCC, 0xA4, 0xDC, 0x03,
+-	0x75, 0xCC, 0xA8, 0xCA, 0x03, 0x75, 0xCC, 0xAD,
+-	0xDC, 0x03, 0x75, 0xCC, 0xB0, 0xDC, 0x03, 0x76,
+-	// Bytes 3500 - 353f
+-	0xCC, 0x83, 0xE6, 0x03, 0x76, 0xCC, 0xA3, 0xDC,
+-	0x03, 0x77, 0xCC, 0x80, 0xE6, 0x03, 0x77, 0xCC,
+-	0x81, 0xE6, 0x03, 0x77, 0xCC, 0x82, 0xE6, 0x03,
+-	0x77, 0xCC, 0x87, 0xE6, 0x03, 0x77, 0xCC, 0x88,
+-	0xE6, 0x03, 0x77, 0xCC, 0x8A, 0xE6, 0x03, 0x77,
+-	0xCC, 0xA3, 0xDC, 0x03, 0x78, 0xCC, 0x87, 0xE6,
+-	0x03, 0x78, 0xCC, 0x88, 0xE6, 0x03, 0x79, 0xCC,
+-	0x80, 0xE6, 0x03, 0x79, 0xCC, 0x81, 0xE6, 0x03,
+-	// Bytes 3540 - 357f
+-	0x79, 0xCC, 0x82, 0xE6, 0x03, 0x79, 0xCC, 0x83,
+-	0xE6, 0x03, 0x79, 0xCC, 0x84, 0xE6, 0x03, 0x79,
+-	0xCC, 0x87, 0xE6, 0x03, 0x79, 0xCC, 0x88, 0xE6,
+-	0x03, 0x79, 0xCC, 0x89, 0xE6, 0x03, 0x79, 0xCC,
+-	0x8A, 0xE6, 0x03, 0x79, 0xCC, 0xA3, 0xDC, 0x03,
+-	0x7A, 0xCC, 0x81, 0xE6, 0x03, 0x7A, 0xCC, 0x82,
+-	0xE6, 0x03, 0x7A, 0xCC, 0x87, 0xE6, 0x03, 0x7A,
+-	0xCC, 0x8C, 0xE6, 0x03, 0x7A, 0xCC, 0xA3, 0xDC,
+-	// Bytes 3580 - 35bf
+-	0x03, 0x7A, 0xCC, 0xB1, 0xDC, 0x04, 0xC2, 0xA8,
+-	0xCC, 0x80, 0xE6, 0x04, 0xC2, 0xA8, 0xCC, 0x81,
+-	0xE6, 0x04, 0xC2, 0xA8, 0xCD, 0x82, 0xE6, 0x04,
+-	0xC3, 0x86, 0xCC, 0x81, 0xE6, 0x04, 0xC3, 0x86,
+-	0xCC, 0x84, 0xE6, 0x04, 0xC3, 0x98, 0xCC, 0x81,
+-	0xE6, 0x04, 0xC3, 0xA6, 0xCC, 0x81, 0xE6, 0x04,
+-	0xC3, 0xA6, 0xCC, 0x84, 0xE6, 0x04, 0xC3, 0xB8,
+-	0xCC, 0x81, 0xE6, 0x04, 0xC5, 0xBF, 0xCC, 0x87,
+-	// Bytes 35c0 - 35ff
+-	0xE6, 0x04, 0xC6, 0xB7, 0xCC, 0x8C, 0xE6, 0x04,
+-	0xCA, 0x92, 0xCC, 0x8C, 0xE6, 0x04, 0xCE, 0x91,
+-	0xCC, 0x80, 0xE6, 0x04, 0xCE, 0x91, 0xCC, 0x81,
+-	0xE6, 0x04, 0xCE, 0x91, 0xCC, 0x84, 0xE6, 0x04,
+-	0xCE, 0x91, 0xCC, 0x86, 0xE6, 0x04, 0xCE, 0x91,
+-	0xCD, 0x85, 0xF0, 0x04, 0xCE, 0x95, 0xCC, 0x80,
+-	0xE6, 0x04, 0xCE, 0x95, 0xCC, 0x81, 0xE6, 0x04,
+-	0xCE, 0x97, 0xCC, 0x80, 0xE6, 0x04, 0xCE, 0x97,
+-	// Bytes 3600 - 363f
+-	0xCC, 0x81, 0xE6, 0x04, 0xCE, 0x97, 0xCD, 0x85,
+-	0xF0, 0x04, 0xCE, 0x99, 0xCC, 0x80, 0xE6, 0x04,
+-	0xCE, 0x99, 0xCC, 0x81, 0xE6, 0x04, 0xCE, 0x99,
+-	0xCC, 0x84, 0xE6, 0x04, 0xCE, 0x99, 0xCC, 0x86,
+-	0xE6, 0x04, 0xCE, 0x99, 0xCC, 0x88, 0xE6, 0x04,
+-	0xCE, 0x9F, 0xCC, 0x80, 0xE6, 0x04, 0xCE, 0x9F,
+-	0xCC, 0x81, 0xE6, 0x04, 0xCE, 0xA1, 0xCC, 0x94,
+-	0xE6, 0x04, 0xCE, 0xA5, 0xCC, 0x80, 0xE6, 0x04,
+-	// Bytes 3640 - 367f
+-	0xCE, 0xA5, 0xCC, 0x81, 0xE6, 0x04, 0xCE, 0xA5,
+-	0xCC, 0x84, 0xE6, 0x04, 0xCE, 0xA5, 0xCC, 0x86,
+-	0xE6, 0x04, 0xCE, 0xA5, 0xCC, 0x88, 0xE6, 0x04,
+-	0xCE, 0xA9, 0xCC, 0x80, 0xE6, 0x04, 0xCE, 0xA9,
+-	0xCC, 0x81, 0xE6, 0x04, 0xCE, 0xA9, 0xCD, 0x85,
+-	0xF0, 0x04, 0xCE, 0xB1, 0xCC, 0x84, 0xE6, 0x04,
+-	0xCE, 0xB1, 0xCC, 0x86, 0xE6, 0x04, 0xCE, 0xB1,
+-	0xCD, 0x85, 0xF0, 0x04, 0xCE, 0xB5, 0xCC, 0x80,
+-	// Bytes 3680 - 36bf
+-	0xE6, 0x04, 0xCE, 0xB5, 0xCC, 0x81, 0xE6, 0x04,
+-	0xCE, 0xB7, 0xCD, 0x85, 0xF0, 0x04, 0xCE, 0xB9,
+-	0xCC, 0x80, 0xE6, 0x04, 0xCE, 0xB9, 0xCC, 0x81,
+-	0xE6, 0x04, 0xCE, 0xB9, 0xCC, 0x84, 0xE6, 0x04,
+-	0xCE, 0xB9, 0xCC, 0x86, 0xE6, 0x04, 0xCE, 0xB9,
+-	0xCD, 0x82, 0xE6, 0x04, 0xCE, 0xBF, 0xCC, 0x80,
+-	0xE6, 0x04, 0xCE, 0xBF, 0xCC, 0x81, 0xE6, 0x04,
+-	0xCF, 0x81, 0xCC, 0x93, 0xE6, 0x04, 0xCF, 0x81,
+-	// Bytes 36c0 - 36ff
+-	0xCC, 0x94, 0xE6, 0x04, 0xCF, 0x85, 0xCC, 0x80,
+-	0xE6, 0x04, 0xCF, 0x85, 0xCC, 0x81, 0xE6, 0x04,
+-	0xCF, 0x85, 0xCC, 0x84, 0xE6, 0x04, 0xCF, 0x85,
+-	0xCC, 0x86, 0xE6, 0x04, 0xCF, 0x85, 0xCD, 0x82,
+-	0xE6, 0x04, 0xCF, 0x89, 0xCD, 0x85, 0xF0, 0x04,
+-	0xCF, 0x92, 0xCC, 0x81, 0xE6, 0x04, 0xCF, 0x92,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD0, 0x86, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD0, 0x90, 0xCC, 0x86, 0xE6, 0x04,
+-	// Bytes 3700 - 373f
+-	0xD0, 0x90, 0xCC, 0x88, 0xE6, 0x04, 0xD0, 0x93,
+-	0xCC, 0x81, 0xE6, 0x04, 0xD0, 0x95, 0xCC, 0x80,
+-	0xE6, 0x04, 0xD0, 0x95, 0xCC, 0x86, 0xE6, 0x04,
+-	0xD0, 0x95, 0xCC, 0x88, 0xE6, 0x04, 0xD0, 0x96,
+-	0xCC, 0x86, 0xE6, 0x04, 0xD0, 0x96, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD0, 0x97, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD0, 0x98, 0xCC, 0x80, 0xE6, 0x04, 0xD0, 0x98,
+-	0xCC, 0x84, 0xE6, 0x04, 0xD0, 0x98, 0xCC, 0x86,
+-	// Bytes 3740 - 377f
+-	0xE6, 0x04, 0xD0, 0x98, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD0, 0x9A, 0xCC, 0x81, 0xE6, 0x04, 0xD0, 0x9E,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xA3, 0xCC, 0x84,
+-	0xE6, 0x04, 0xD0, 0xA3, 0xCC, 0x86, 0xE6, 0x04,
+-	0xD0, 0xA3, 0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xA3,
+-	0xCC, 0x8B, 0xE6, 0x04, 0xD0, 0xA7, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD0, 0xAB, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD0, 0xAD, 0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xB0,
+-	// Bytes 3780 - 37bf
+-	0xCC, 0x86, 0xE6, 0x04, 0xD0, 0xB0, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD0, 0xB3, 0xCC, 0x81, 0xE6, 0x04,
+-	0xD0, 0xB5, 0xCC, 0x80, 0xE6, 0x04, 0xD0, 0xB5,
+-	0xCC, 0x86, 0xE6, 0x04, 0xD0, 0xB5, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD0, 0xB6, 0xCC, 0x86, 0xE6, 0x04,
+-	0xD0, 0xB6, 0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xB7,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xB8, 0xCC, 0x80,
+-	0xE6, 0x04, 0xD0, 0xB8, 0xCC, 0x84, 0xE6, 0x04,
+-	// Bytes 37c0 - 37ff
+-	0xD0, 0xB8, 0xCC, 0x86, 0xE6, 0x04, 0xD0, 0xB8,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD0, 0xBA, 0xCC, 0x81,
+-	0xE6, 0x04, 0xD0, 0xBE, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD1, 0x83, 0xCC, 0x84, 0xE6, 0x04, 0xD1, 0x83,
+-	0xCC, 0x86, 0xE6, 0x04, 0xD1, 0x83, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD1, 0x83, 0xCC, 0x8B, 0xE6, 0x04,
+-	0xD1, 0x87, 0xCC, 0x88, 0xE6, 0x04, 0xD1, 0x8B,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD1, 0x8D, 0xCC, 0x88,
+-	// Bytes 3800 - 383f
+-	0xE6, 0x04, 0xD1, 0x96, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD1, 0xB4, 0xCC, 0x8F, 0xE6, 0x04, 0xD1, 0xB5,
+-	0xCC, 0x8F, 0xE6, 0x04, 0xD3, 0x98, 0xCC, 0x88,
+-	0xE6, 0x04, 0xD3, 0x99, 0xCC, 0x88, 0xE6, 0x04,
+-	0xD3, 0xA8, 0xCC, 0x88, 0xE6, 0x04, 0xD3, 0xA9,
+-	0xCC, 0x88, 0xE6, 0x04, 0xD8, 0xA7, 0xD9, 0x93,
+-	0xE6, 0x04, 0xD8, 0xA7, 0xD9, 0x94, 0xE6, 0x04,
+-	0xD8, 0xA7, 0xD9, 0x95, 0xDC, 0x04, 0xD9, 0x88,
+-	// Bytes 3840 - 387f
+-	0xD9, 0x94, 0xE6, 0x04, 0xD9, 0x8A, 0xD9, 0x94,
+-	0xE6, 0x04, 0xDB, 0x81, 0xD9, 0x94, 0xE6, 0x04,
+-	0xDB, 0x92, 0xD9, 0x94, 0xE6, 0x04, 0xDB, 0x95,
+-	0xD9, 0x94, 0xE6, 0x05, 0x41, 0xCC, 0x82, 0xCC,
+-	0x80, 0xE6, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81,
+-	0xE6, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xE6,
+-	0x05, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xE6, 0x05,
+-	0x41, 0xCC, 0x86, 0xCC, 0x80, 0xE6, 0x05, 0x41,
+-	// Bytes 3880 - 38bf
+-	0xCC, 0x86, 0xCC, 0x81, 0xE6, 0x05, 0x41, 0xCC,
+-	0x86, 0xCC, 0x83, 0xE6, 0x05, 0x41, 0xCC, 0x86,
+-	0xCC, 0x89, 0xE6, 0x05, 0x41, 0xCC, 0x87, 0xCC,
+-	0x84, 0xE6, 0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84,
+-	0xE6, 0x05, 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xE6,
+-	0x05, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xE6, 0x05,
+-	0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xE6, 0x05, 0x43,
+-	0xCC, 0xA7, 0xCC, 0x81, 0xE6, 0x05, 0x45, 0xCC,
+-	// Bytes 38c0 - 38ff
+-	0x82, 0xCC, 0x80, 0xE6, 0x05, 0x45, 0xCC, 0x82,
+-	0xCC, 0x81, 0xE6, 0x05, 0x45, 0xCC, 0x82, 0xCC,
+-	0x83, 0xE6, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89,
+-	0xE6, 0x05, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xE6,
+-	0x05, 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xE6, 0x05,
+-	0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xE6, 0x05, 0x45,
+-	0xCC, 0xA7, 0xCC, 0x86, 0xE6, 0x05, 0x49, 0xCC,
+-	0x88, 0xCC, 0x81, 0xE6, 0x05, 0x4C, 0xCC, 0xA3,
+-	// Bytes 3900 - 393f
+-	0xCC, 0x84, 0xE6, 0x05, 0x4F, 0xCC, 0x82, 0xCC,
+-	0x80, 0xE6, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81,
+-	0xE6, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xE6,
+-	0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xE6, 0x05,
+-	0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xE6, 0x05, 0x4F,
+-	0xCC, 0x83, 0xCC, 0x84, 0xE6, 0x05, 0x4F, 0xCC,
+-	0x83, 0xCC, 0x88, 0xE6, 0x05, 0x4F, 0xCC, 0x84,
+-	0xCC, 0x80, 0xE6, 0x05, 0x4F, 0xCC, 0x84, 0xCC,
+-	// Bytes 3940 - 397f
+-	0x81, 0xE6, 0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84,
+-	0xE6, 0x05, 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xE6,
+-	0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xE6, 0x05,
+-	0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xE6, 0x05, 0x4F,
+-	0xCC, 0x9B, 0xCC, 0x83, 0xE6, 0x05, 0x4F, 0xCC,
+-	0x9B, 0xCC, 0x89, 0xE6, 0x05, 0x4F, 0xCC, 0x9B,
+-	0xCC, 0xA3, 0xDC, 0x05, 0x4F, 0xCC, 0xA3, 0xCC,
+-	0x82, 0xE6, 0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84,
+-	// Bytes 3980 - 39bf
+-	0xE6, 0x05, 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xE6,
+-	0x05, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xE6, 0x05,
+-	0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xE6, 0x05, 0x53,
+-	0xCC, 0xA3, 0xCC, 0x87, 0xE6, 0x05, 0x55, 0xCC,
+-	0x83, 0xCC, 0x81, 0xE6, 0x05, 0x55, 0xCC, 0x84,
+-	0xCC, 0x88, 0xE6, 0x05, 0x55, 0xCC, 0x88, 0xCC,
+-	0x80, 0xE6, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81,
+-	0xE6, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xE6,
+-	// Bytes 39c0 - 39ff
+-	0x05, 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xE6, 0x05,
+-	0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xE6, 0x05, 0x55,
+-	0xCC, 0x9B, 0xCC, 0x81, 0xE6, 0x05, 0x55, 0xCC,
+-	0x9B, 0xCC, 0x83, 0xE6, 0x05, 0x55, 0xCC, 0x9B,
+-	0xCC, 0x89, 0xE6, 0x05, 0x55, 0xCC, 0x9B, 0xCC,
+-	0xA3, 0xDC, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80,
+-	0xE6, 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xE6,
+-	0x05, 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xE6, 0x05,
+-	// Bytes 3a00 - 3a3f
+-	0x61, 0xCC, 0x82, 0xCC, 0x89, 0xE6, 0x05, 0x61,
+-	0xCC, 0x86, 0xCC, 0x80, 0xE6, 0x05, 0x61, 0xCC,
+-	0x86, 0xCC, 0x81, 0xE6, 0x05, 0x61, 0xCC, 0x86,
+-	0xCC, 0x83, 0xE6, 0x05, 0x61, 0xCC, 0x86, 0xCC,
+-	0x89, 0xE6, 0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84,
+-	0xE6, 0x05, 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xE6,
+-	0x05, 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xE6, 0x05,
+-	0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xE6, 0x05, 0x61,
+-	// Bytes 3a40 - 3a7f
+-	0xCC, 0xA3, 0xCC, 0x86, 0xE6, 0x05, 0x63, 0xCC,
+-	0xA7, 0xCC, 0x81, 0xE6, 0x05, 0x65, 0xCC, 0x82,
+-	0xCC, 0x80, 0xE6, 0x05, 0x65, 0xCC, 0x82, 0xCC,
+-	0x81, 0xE6, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83,
+-	0xE6, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xE6,
+-	0x05, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xE6, 0x05,
+-	0x65, 0xCC, 0x84, 0xCC, 0x81, 0xE6, 0x05, 0x65,
+-	0xCC, 0xA3, 0xCC, 0x82, 0xE6, 0x05, 0x65, 0xCC,
+-	// Bytes 3a80 - 3abf
+-	0xA7, 0xCC, 0x86, 0xE6, 0x05, 0x69, 0xCC, 0x88,
+-	0xCC, 0x81, 0xE6, 0x05, 0x6C, 0xCC, 0xA3, 0xCC,
+-	0x84, 0xE6, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80,
+-	0xE6, 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xE6,
+-	0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xE6, 0x05,
+-	0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xE6, 0x05, 0x6F,
+-	0xCC, 0x83, 0xCC, 0x81, 0xE6, 0x05, 0x6F, 0xCC,
+-	0x83, 0xCC, 0x84, 0xE6, 0x05, 0x6F, 0xCC, 0x83,
+-	// Bytes 3ac0 - 3aff
+-	0xCC, 0x88, 0xE6, 0x05, 0x6F, 0xCC, 0x84, 0xCC,
+-	0x80, 0xE6, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81,
+-	0xE6, 0x05, 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xE6,
+-	0x05, 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xE6, 0x05,
+-	0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xE6, 0x05, 0x6F,
+-	0xCC, 0x9B, 0xCC, 0x81, 0xE6, 0x05, 0x6F, 0xCC,
+-	0x9B, 0xCC, 0x83, 0xE6, 0x05, 0x6F, 0xCC, 0x9B,
+-	0xCC, 0x89, 0xE6, 0x05, 0x6F, 0xCC, 0x9B, 0xCC,
+-	// Bytes 3b00 - 3b3f
+-	0xA3, 0xDC, 0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82,
+-	0xE6, 0x05, 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xE6,
+-	0x05, 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xE6, 0x05,
+-	0x73, 0xCC, 0x81, 0xCC, 0x87, 0xE6, 0x05, 0x73,
+-	0xCC, 0x8C, 0xCC, 0x87, 0xE6, 0x05, 0x73, 0xCC,
+-	0xA3, 0xCC, 0x87, 0xE6, 0x05, 0x75, 0xCC, 0x83,
+-	0xCC, 0x81, 0xE6, 0x05, 0x75, 0xCC, 0x84, 0xCC,
+-	0x88, 0xE6, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80,
+-	// Bytes 3b40 - 3b7f
+-	0xE6, 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xE6,
+-	0x05, 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xE6, 0x05,
+-	0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xE6, 0x05, 0x75,
+-	0xCC, 0x9B, 0xCC, 0x80, 0xE6, 0x05, 0x75, 0xCC,
+-	0x9B, 0xCC, 0x81, 0xE6, 0x05, 0x75, 0xCC, 0x9B,
+-	0xCC, 0x83, 0xE6, 0x05, 0x75, 0xCC, 0x9B, 0xCC,
+-	0x89, 0xE6, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3,
+-	0xDC, 0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xE6,
+-	// Bytes 3b80 - 3bbf
+-	0x05, 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0xE6, 0x05,
+-	0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0xE6, 0x05, 0xE1,
+-	0xBF, 0xBE, 0xCC, 0x80, 0xE6, 0x05, 0xE1, 0xBF,
+-	0xBE, 0xCC, 0x81, 0xE6, 0x05, 0xE1, 0xBF, 0xBE,
+-	0xCD, 0x82, 0xE6, 0x05, 0xE2, 0x86, 0x90, 0xCC,
+-	0xB8, 0x01, 0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8,
+-	0x01, 0x05, 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x01,
+-	0x05, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0x01, 0x05,
+-	// Bytes 3bc0 - 3bff
+-	0xE2, 0x87, 0x92, 0xCC, 0xB8, 0x01, 0x05, 0xE2,
+-	0x87, 0x94, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x88,
+-	0x83, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x88, 0x88,
+-	0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x88, 0x8B, 0xCC,
+-	0xB8, 0x01, 0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8,
+-	0x01, 0x05, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x01,
+-	0x05, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0x01, 0x05,
+-	0xE2, 0x89, 0x83, 0xCC, 0xB8, 0x01, 0x05, 0xE2,
+-	// Bytes 3c00 - 3c3f
+-	0x89, 0x85, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89,
+-	0x88, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89, 0x8D,
+-	0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89, 0xA1, 0xCC,
+-	0xB8, 0x01, 0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8,
+-	0x01, 0x05, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x01,
+-	0x05, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0x01, 0x05,
+-	0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0x01, 0x05, 0xE2,
+-	0x89, 0xB6, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89,
+-	// Bytes 3c40 - 3c7f
+-	0xB7, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89, 0xBA,
+-	0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x89, 0xBB, 0xCC,
+-	0xB8, 0x01, 0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8,
+-	0x01, 0x05, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x01,
+-	0x05, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0x01, 0x05,
+-	0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0x01, 0x05, 0xE2,
+-	0x8A, 0x86, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A,
+-	0x87, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A, 0x91,
+-	// Bytes 3c80 - 3cbf
+-	0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A, 0x92, 0xCC,
+-	0xB8, 0x01, 0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8,
+-	0x01, 0x05, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x01,
+-	0x05, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0x01, 0x05,
+-	0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0x01, 0x05, 0xE2,
+-	0x8A, 0xB2, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A,
+-	0xB3, 0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A, 0xB4,
+-	0xCC, 0xB8, 0x01, 0x05, 0xE2, 0x8A, 0xB5, 0xCC,
+-	// Bytes 3cc0 - 3cff
+-	0xB8, 0x01, 0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD,
+-	// Bytes 3d00 - 3d3f
+-	0x85, 0xF0, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC,
+-	// Bytes 3d40 - 3d7f
+-	0x81, 0xE6, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD,
+-	// Bytes 3d80 - 3dbf
+-	0x85, 0xF0, 0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC,
+-	// Bytes 3dc0 - 3dff
+-	0x81, 0xE6, 0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD,
+-	// Bytes 3e00 - 3e3f
+-	0x82, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC,
+-	// Bytes 3e40 - 3e7f
+-	0x81, 0xE6, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD,
+-	// Bytes 3e80 - 3ebf
+-	0x82, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC,
+-	0x80, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD,
+-	0x82, 0xE6, 0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD,
+-	0x85, 0xF0, 0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD,
+-	// Bytes 3ec0 - 3eff
+-	0x85, 0xF0, 0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1,
+-	0x96, 0x5B, 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7,
+-	0x8A, 0x09, 0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82,
+-	// Bytes 3f00 - 3f3f
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82,
+-	// Bytes 3f40 - 3f7f
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82,
+-	// Bytes 3f80 - 3fbf
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82,
+-	// Bytes 3fc0 - 3fff
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82,
+-	// Bytes 4000 - 403f
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82,
+-	// Bytes 4040 - 407f
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82,
+-	// Bytes 4080 - 40bf
+-	0x9A, 0x08, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82,
+-	0x9A, 0x08, 0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82,
+-	0x99, 0x08, 0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82,
+-	0x99, 0x08, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC,
+-	// Bytes 40c0 - 40ff
+-	0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0x91, 0xCC,
+-	0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC,
+-	0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0x91, 0xCC,
+-	0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF0,
+-	// Bytes 4100 - 413f
+-	0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD,
+-	0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0x97, 0xCC,
+-	0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC,
+-	0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0xA9, 0xCC,
+-	// Bytes 4140 - 417f
+-	0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC,
+-	0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0xA9, 0xCC,
+-	0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD,
+-	// Bytes 4180 - 41bf
+-	0x85, 0xF0, 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD,
+-	0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0xB1, 0xCC,
+-	0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC,
+-	0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0xB7, 0xCC,
+-	0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE,
+-	// Bytes 41c0 - 41ff
+-	0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC,
+-	0x81, 0xCD, 0x85, 0xF0, 0x08, 0xCE, 0xB7, 0xCC,
+-	0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCF,
+-	0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD,
+-	0x85, 0xF0, 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD,
+-	// Bytes 4200 - 423f
+-	0x82, 0xCD, 0x85, 0xF0, 0x08, 0xCF, 0x89, 0xCC,
+-	0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF0, 0x08, 0xCF,
+-	0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF0,
+-	0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD,
+-	0x85, 0xF0, 0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0,
+-	0x91, 0x82, 0xBA, 0x07, 0x08, 0xF0, 0x91, 0x82,
+-	0x9B, 0xF0, 0x91, 0x82, 0xBA, 0x07, 0x08, 0xF0,
+-	0x91, 0x82, 0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x07,
+-	// Bytes 4240 - 427f
+-	0x43, 0x20, 0xCC, 0x81, 0xE6, 0x43, 0x20, 0xCC,
+-	0x83, 0xE6, 0x43, 0x20, 0xCC, 0x84, 0xE6, 0x43,
+-	0x20, 0xCC, 0x85, 0xE6, 0x43, 0x20, 0xCC, 0x86,
+-	0xE6, 0x43, 0x20, 0xCC, 0x87, 0xE6, 0x43, 0x20,
+-	0xCC, 0x88, 0xE6, 0x43, 0x20, 0xCC, 0x8A, 0xE6,
+-	0x43, 0x20, 0xCC, 0x8B, 0xE6, 0x43, 0x20, 0xCC,
+-	0x93, 0xE6, 0x43, 0x20, 0xCC, 0x94, 0xE6, 0x43,
+-	0x20, 0xCC, 0xA7, 0xCA, 0x43, 0x20, 0xCC, 0xA8,
+-	// Bytes 4280 - 42bf
+-	0xCA, 0x43, 0x20, 0xCC, 0xB3, 0xDC, 0x43, 0x20,
+-	0xCD, 0x82, 0xE6, 0x43, 0x20, 0xCD, 0x85, 0xF0,
+-	0x43, 0x20, 0xD9, 0x8B, 0x1B, 0x43, 0x20, 0xD9,
+-	0x8C, 0x1C, 0x43, 0x20, 0xD9, 0x8D, 0x1D, 0x43,
+-	0x20, 0xD9, 0x8E, 0x1E, 0x43, 0x20, 0xD9, 0x8F,
+-	0x1F, 0x43, 0x20, 0xD9, 0x90, 0x20, 0x43, 0x20,
+-	0xD9, 0x91, 0x21, 0x43, 0x20, 0xD9, 0x92, 0x22,
+-	0x43, 0x41, 0xCC, 0x8A, 0xE6, 0x43, 0x73, 0xCC,
+-	// Bytes 42c0 - 42ff
+-	0x87, 0xE6, 0x44, 0x20, 0xE3, 0x82, 0x99, 0x08,
+-	0x44, 0x20, 0xE3, 0x82, 0x9A, 0x08, 0x44, 0xC2,
+-	0xA8, 0xCC, 0x81, 0xE6, 0x44, 0xCE, 0x91, 0xCC,
+-	0x81, 0xE6, 0x44, 0xCE, 0x95, 0xCC, 0x81, 0xE6,
+-	0x44, 0xCE, 0x97, 0xCC, 0x81, 0xE6, 0x44, 0xCE,
+-	0x99, 0xCC, 0x81, 0xE6, 0x44, 0xCE, 0x9F, 0xCC,
+-	0x81, 0xE6, 0x44, 0xCE, 0xA5, 0xCC, 0x81, 0xE6,
+-	0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xE6, 0x44, 0xCE,
+-	// Bytes 4300 - 433f
+-	0xA9, 0xCC, 0x81, 0xE6, 0x44, 0xCE, 0xB1, 0xCC,
+-	0x81, 0xE6, 0x44, 0xCE, 0xB5, 0xCC, 0x81, 0xE6,
+-	0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xE6, 0x44, 0xCE,
+-	0xB9, 0xCC, 0x81, 0xE6, 0x44, 0xCE, 0xBF, 0xCC,
+-	0x81, 0xE6, 0x44, 0xCF, 0x85, 0xCC, 0x81, 0xE6,
+-	0x44, 0xCF, 0x89, 0xCC, 0x81, 0xE6, 0x44, 0xD7,
+-	0x90, 0xD6, 0xB7, 0x11, 0x44, 0xD7, 0x90, 0xD6,
+-	0xB8, 0x12, 0x44, 0xD7, 0x90, 0xD6, 0xBC, 0x15,
+-	// Bytes 4340 - 437f
+-	0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0x91, 0xD6, 0xBF, 0x17, 0x44, 0xD7, 0x92, 0xD6,
+-	0xBC, 0x15, 0x44, 0xD7, 0x93, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0x95, 0xD6, 0xB9, 0x13, 0x44, 0xD7, 0x95, 0xD6,
+-	0xBC, 0x15, 0x44, 0xD7, 0x96, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0x99, 0xD6, 0xB4, 0x0E, 0x44, 0xD7, 0x99, 0xD6,
+-	// Bytes 4380 - 43bf
+-	0xBC, 0x15, 0x44, 0xD7, 0x9A, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0x9B, 0xD6, 0xBF, 0x17, 0x44, 0xD7, 0x9C, 0xD6,
+-	0xBC, 0x15, 0x44, 0xD7, 0x9E, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0xA1, 0xD6, 0xBC, 0x15, 0x44, 0xD7, 0xA3, 0xD6,
+-	0xBC, 0x15, 0x44, 0xD7, 0xA4, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x17, 0x44, 0xD7,
+-	// Bytes 43c0 - 43ff
+-	0xA6, 0xD6, 0xBC, 0x15, 0x44, 0xD7, 0xA7, 0xD6,
+-	0xBC, 0x15, 0x44, 0xD7, 0xA8, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x15, 0x44, 0xD7,
+-	0xA9, 0xD7, 0x81, 0x18, 0x44, 0xD7, 0xA9, 0xD7,
+-	0x82, 0x19, 0x44, 0xD7, 0xAA, 0xD6, 0xBC, 0x15,
+-	0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x11, 0x44, 0xD8,
+-	0xA7, 0xD9, 0x8B, 0x1B, 0x44, 0xD8, 0xA7, 0xD9,
+-	0x93, 0xE6, 0x44, 0xD8, 0xA7, 0xD9, 0x94, 0xE6,
+-	// Bytes 4400 - 443f
+-	0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xDC, 0x44, 0xD8,
+-	0xB0, 0xD9, 0xB0, 0x23, 0x44, 0xD8, 0xB1, 0xD9,
+-	0xB0, 0x23, 0x44, 0xD9, 0x80, 0xD9, 0x8B, 0x1B,
+-	0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x1E, 0x44, 0xD9,
+-	0x80, 0xD9, 0x8F, 0x1F, 0x44, 0xD9, 0x80, 0xD9,
+-	0x90, 0x20, 0x44, 0xD9, 0x80, 0xD9, 0x91, 0x21,
+-	0x44, 0xD9, 0x80, 0xD9, 0x92, 0x22, 0x44, 0xD9,
+-	0x87, 0xD9, 0xB0, 0x23, 0x44, 0xD9, 0x88, 0xD9,
+-	// Bytes 4440 - 447f
+-	0x94, 0xE6, 0x44, 0xD9, 0x89, 0xD9, 0xB0, 0x23,
+-	0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xE6, 0x44, 0xDB,
+-	0x92, 0xD9, 0x94, 0xE6, 0x44, 0xDB, 0x95, 0xD9,
+-	0x94, 0xE6, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x80,
+-	0xE6, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xE6,
+-	0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xE6, 0x45,
+-	0x20, 0xCC, 0x93, 0xCC, 0x80, 0xE6, 0x45, 0x20,
+-	0xCC, 0x93, 0xCC, 0x81, 0xE6, 0x45, 0x20, 0xCC,
+-	// Bytes 4480 - 44bf
+-	0x93, 0xCD, 0x82, 0xE6, 0x45, 0x20, 0xCC, 0x94,
+-	0xCC, 0x80, 0xE6, 0x45, 0x20, 0xCC, 0x94, 0xCC,
+-	0x81, 0xE6, 0x45, 0x20, 0xCC, 0x94, 0xCD, 0x82,
+-	0xE6, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91, 0x21,
+-	0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x21, 0x45,
+-	0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x21, 0x45, 0x20,
+-	0xD9, 0x8F, 0xD9, 0x91, 0x21, 0x45, 0x20, 0xD9,
+-	0x90, 0xD9, 0x91, 0x21, 0x45, 0x20, 0xD9, 0x91,
+-	// Bytes 44c0 - 44ff
+-	0xD9, 0xB0, 0x23, 0x45, 0xE2, 0xAB, 0x9D, 0xCC,
+-	0xB8, 0x01, 0x46, 0xCE, 0xB9, 0xCC, 0x88, 0xCC,
+-	0x81, 0xE6, 0x46, 0xCF, 0x85, 0xCC, 0x88, 0xCC,
+-	0x81, 0xE6, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7,
+-	0x81, 0x18, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7,
+-	0x82, 0x19, 0x46, 0xD9, 0x80, 0xD9, 0x8E, 0xD9,
+-	0x91, 0x21, 0x46, 0xD9, 0x80, 0xD9, 0x8F, 0xD9,
+-	0x91, 0x21, 0x46, 0xD9, 0x80, 0xD9, 0x90, 0xD9,
+-	// Bytes 4500 - 453f
+-	0x91, 0x21, 0x46, 0xE0, 0xA4, 0x95, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0x96, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0x97, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0x9C, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0xA1, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4,
+-	// Bytes 4540 - 457f
+-	0xBC, 0x07, 0x46, 0xE0, 0xA6, 0xA1, 0xE0, 0xA6,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA6, 0xA2, 0xE0, 0xA6,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA6, 0xAF, 0xE0, 0xA6,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0x96, 0xE0, 0xA8,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0x97, 0xE0, 0xA8,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0x9C, 0xE0, 0xA8,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0xAB, 0xE0, 0xA8,
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8,
+-	// Bytes 4580 - 45bf
+-	0xBC, 0x07, 0x46, 0xE0, 0xA8, 0xB8, 0xE0, 0xA8,
+-	0xBC, 0x07, 0x46, 0xE0, 0xAC, 0xA1, 0xE0, 0xAC,
+-	0xBC, 0x07, 0x46, 0xE0, 0xAC, 0xA2, 0xE0, 0xAC,
+-	0xBC, 0x07, 0x46, 0xE0, 0xBE, 0xB2, 0xE0, 0xBE,
+-	0x80, 0x82, 0x46, 0xE0, 0xBE, 0xB3, 0xE0, 0xBE,
+-	0x80, 0x82, 0x46, 0xE3, 0x83, 0x86, 0xE3, 0x82,
+-	0x99, 0x08, 0x48, 0xF0, 0x9D, 0x85, 0x97, 0xF0,
+-	0x9D, 0x85, 0xA5, 0xD8, 0x48, 0xF0, 0x9D, 0x85,
+-	// Bytes 45c0 - 45ff
+-	0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xD8, 0x48, 0xF0,
+-	0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xD8,
+-	0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85,
+-	0xA5, 0xD8, 0x49, 0xE0, 0xBE, 0xB2, 0xE0, 0xBD,
+-	0xB1, 0xE0, 0xBE, 0x80, 0x82, 0x49, 0xE0, 0xBE,
+-	0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x82,
+-	0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,
+-	0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xD8, 0x4C, 0xF0,
+-	// Bytes 4600 - 463f
+-	0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,
+-	0x9D, 0x85, 0xAF, 0xD8, 0x4C, 0xF0, 0x9D, 0x85,
+-	0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,
+-	0xB0, 0xD8, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0,
+-	0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1, 0xD8,
+-	0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85,
+-	0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xD8, 0x4C, 0xF0,
+-	0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0,
+-	// Bytes 4640 - 467f
+-	0x9D, 0x85, 0xAE, 0xD8, 0x4C, 0xF0, 0x9D, 0x86,
+-	0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85,
+-	0xAF, 0xD8, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0,
+-	0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xD8,
+-	0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85,
+-	0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xD8, 0x83, 0x41,
+-	0xCC, 0x82, 0xE6, 0x83, 0x41, 0xCC, 0x86, 0xE6,
+-	0x83, 0x41, 0xCC, 0x87, 0xE6, 0x83, 0x41, 0xCC,
+-	// Bytes 4680 - 46bf
+-	0x88, 0xE6, 0x83, 0x41, 0xCC, 0x8A, 0xE6, 0x83,
+-	0x41, 0xCC, 0xA3, 0xDC, 0x83, 0x43, 0xCC, 0xA7,
+-	0xCA, 0x83, 0x45, 0xCC, 0x82, 0xE6, 0x83, 0x45,
+-	0xCC, 0x84, 0xE6, 0x83, 0x45, 0xCC, 0xA3, 0xDC,
+-	0x83, 0x45, 0xCC, 0xA7, 0xCA, 0x83, 0x49, 0xCC,
+-	0x88, 0xE6, 0x83, 0x4C, 0xCC, 0xA3, 0xDC, 0x83,
+-	0x4F, 0xCC, 0x82, 0xE6, 0x83, 0x4F, 0xCC, 0x83,
+-	0xE6, 0x83, 0x4F, 0xCC, 0x84, 0xE6, 0x83, 0x4F,
+-	// Bytes 46c0 - 46ff
+-	0xCC, 0x87, 0xE6, 0x83, 0x4F, 0xCC, 0x88, 0xE6,
+-	0x83, 0x4F, 0xCC, 0x9B, 0xD8, 0x83, 0x4F, 0xCC,
+-	0xA3, 0xDC, 0x83, 0x4F, 0xCC, 0xA8, 0xCA, 0x83,
+-	0x52, 0xCC, 0xA3, 0xDC, 0x83, 0x53, 0xCC, 0x81,
+-	0xE6, 0x83, 0x53, 0xCC, 0x8C, 0xE6, 0x83, 0x53,
+-	0xCC, 0xA3, 0xDC, 0x83, 0x55, 0xCC, 0x83, 0xE6,
+-	0x83, 0x55, 0xCC, 0x84, 0xE6, 0x83, 0x55, 0xCC,
+-	0x88, 0xE6, 0x83, 0x55, 0xCC, 0x9B, 0xD8, 0x83,
+-	// Bytes 4700 - 473f
+-	0x61, 0xCC, 0x82, 0xE6, 0x83, 0x61, 0xCC, 0x86,
+-	0xE6, 0x83, 0x61, 0xCC, 0x87, 0xE6, 0x83, 0x61,
+-	0xCC, 0x88, 0xE6, 0x83, 0x61, 0xCC, 0x8A, 0xE6,
+-	0x83, 0x61, 0xCC, 0xA3, 0xDC, 0x83, 0x63, 0xCC,
+-	0xA7, 0xCA, 0x83, 0x65, 0xCC, 0x82, 0xE6, 0x83,
+-	0x65, 0xCC, 0x84, 0xE6, 0x83, 0x65, 0xCC, 0xA3,
+-	0xDC, 0x83, 0x65, 0xCC, 0xA7, 0xCA, 0x83, 0x69,
+-	0xCC, 0x88, 0xE6, 0x83, 0x6C, 0xCC, 0xA3, 0xDC,
+-	// Bytes 4740 - 477f
+-	0x83, 0x6F, 0xCC, 0x82, 0xE6, 0x83, 0x6F, 0xCC,
+-	0x83, 0xE6, 0x83, 0x6F, 0xCC, 0x84, 0xE6, 0x83,
+-	0x6F, 0xCC, 0x87, 0xE6, 0x83, 0x6F, 0xCC, 0x88,
+-	0xE6, 0x83, 0x6F, 0xCC, 0x9B, 0xD8, 0x83, 0x6F,
+-	0xCC, 0xA3, 0xDC, 0x83, 0x6F, 0xCC, 0xA8, 0xCA,
+-	0x83, 0x72, 0xCC, 0xA3, 0xDC, 0x83, 0x73, 0xCC,
+-	0x81, 0xE6, 0x83, 0x73, 0xCC, 0x8C, 0xE6, 0x83,
+-	0x73, 0xCC, 0xA3, 0xDC, 0x83, 0x75, 0xCC, 0x83,
+-	// Bytes 4780 - 47bf
+-	0xE6, 0x83, 0x75, 0xCC, 0x84, 0xE6, 0x83, 0x75,
+-	0xCC, 0x88, 0xE6, 0x83, 0x75, 0xCC, 0x9B, 0xD8,
+-	0x84, 0xCE, 0x91, 0xCC, 0x93, 0xE6, 0x84, 0xCE,
+-	0x91, 0xCC, 0x94, 0xE6, 0x84, 0xCE, 0x95, 0xCC,
+-	0x93, 0xE6, 0x84, 0xCE, 0x95, 0xCC, 0x94, 0xE6,
+-	0x84, 0xCE, 0x97, 0xCC, 0x93, 0xE6, 0x84, 0xCE,
+-	0x97, 0xCC, 0x94, 0xE6, 0x84, 0xCE, 0x99, 0xCC,
+-	0x93, 0xE6, 0x84, 0xCE, 0x99, 0xCC, 0x94, 0xE6,
+-	// Bytes 47c0 - 47ff
+-	0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xE6, 0x84, 0xCE,
+-	0x9F, 0xCC, 0x94, 0xE6, 0x84, 0xCE, 0xA5, 0xCC,
+-	0x94, 0xE6, 0x84, 0xCE, 0xA9, 0xCC, 0x93, 0xE6,
+-	0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xE6, 0x84, 0xCE,
+-	0xB1, 0xCC, 0x80, 0xE6, 0x84, 0xCE, 0xB1, 0xCC,
+-	0x81, 0xE6, 0x84, 0xCE, 0xB1, 0xCC, 0x93, 0xE6,
+-	0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xE6, 0x84, 0xCE,
+-	0xB1, 0xCD, 0x82, 0xE6, 0x84, 0xCE, 0xB5, 0xCC,
+-	// Bytes 4800 - 483f
+-	0x93, 0xE6, 0x84, 0xCE, 0xB5, 0xCC, 0x94, 0xE6,
+-	0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xE6, 0x84, 0xCE,
+-	0xB7, 0xCC, 0x81, 0xE6, 0x84, 0xCE, 0xB7, 0xCC,
+-	0x93, 0xE6, 0x84, 0xCE, 0xB7, 0xCC, 0x94, 0xE6,
+-	0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xE6, 0x84, 0xCE,
+-	0xB9, 0xCC, 0x88, 0xE6, 0x84, 0xCE, 0xB9, 0xCC,
+-	0x93, 0xE6, 0x84, 0xCE, 0xB9, 0xCC, 0x94, 0xE6,
+-	0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xE6, 0x84, 0xCE,
+-	// Bytes 4840 - 487f
+-	0xBF, 0xCC, 0x94, 0xE6, 0x84, 0xCF, 0x85, 0xCC,
+-	0x88, 0xE6, 0x84, 0xCF, 0x85, 0xCC, 0x93, 0xE6,
+-	0x84, 0xCF, 0x85, 0xCC, 0x94, 0xE6, 0x84, 0xCF,
+-	0x89, 0xCC, 0x80, 0xE6, 0x84, 0xCF, 0x89, 0xCC,
+-	0x81, 0xE6, 0x84, 0xCF, 0x89, 0xCC, 0x93, 0xE6,
+-	0x84, 0xCF, 0x89, 0xCC, 0x94, 0xE6, 0x84, 0xCF,
+-	0x89, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	// Bytes 4880 - 48bf
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0x91, 0xCC,
+-	0x94, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	// Bytes 48c0 - 48ff
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0x97, 0xCC,
+-	0x94, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xA9, 0xCC,
+-	// Bytes 4900 - 493f
+-	0x94, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xB1, 0xCC,
+-	0x94, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	// Bytes 4940 - 497f
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCE, 0xB7, 0xCC,
+-	0x94, 0xCD, 0x82, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	0x93, 0xCC, 0x80, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	0x93, 0xCC, 0x81, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	0x93, 0xCD, 0x82, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	// Bytes 4980 - 49bf
+-	0x94, 0xCC, 0x80, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	0x94, 0xCC, 0x81, 0xE6, 0x86, 0xCF, 0x89, 0xCC,
+-	0x94, 0xCD, 0x82, 0xE6, 0x42, 0xCC, 0x80, 0xE6,
+-	0xE6, 0x42, 0xCC, 0x81, 0xE6, 0xE6, 0x42, 0xCC,
+-	0x93, 0xE6, 0xE6, 0x44, 0xCC, 0x88, 0xCC, 0x81,
+-	0xE6, 0xE6, 0x43, 0xE3, 0x82, 0x99, 0x08, 0x08,
+-	0x43, 0xE3, 0x82, 0x9A, 0x08, 0x08, 0x46, 0xE0,
+-	0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0x82, 0x81, 0x46,
+-	// Bytes 49c0 - 49ff
+-	0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0x84, 0x81,
+-	0x46, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x82,
+-	0x81,
+-}
+-
+-// nfcValues: 2944 entries, 5888 bytes
+-// Block 2 is the null block.
+-var nfcValues = [2944]uint16{
+-	// Block 0x0, offset 0x0
+-	0x003c: 0x8800, 0x003d: 0x8800, 0x003e: 0x8800,
+-	// Block 0x1, offset 0x40
+-	0x0041: 0x8800, 0x0042: 0x8800, 0x0043: 0x8800, 0x0044: 0x8800, 0x0045: 0x8800,
+-	0x0046: 0x8800, 0x0047: 0x8800, 0x0048: 0x8800, 0x0049: 0x8800, 0x004a: 0x8800, 0x004b: 0x8800,
+-	0x004c: 0x8800, 0x004d: 0x8800, 0x004e: 0x8800, 0x004f: 0x8800, 0x0050: 0x8800,
+-	0x0052: 0x8800, 0x0053: 0x8800, 0x0054: 0x8800, 0x0055: 0x8800, 0x0056: 0x8800, 0x0057: 0x8800,
+-	0x0058: 0x8800, 0x0059: 0x8800, 0x005a: 0x8800,
+-	0x0061: 0x8800, 0x0062: 0x8800, 0x0063: 0x8800,
+-	0x0064: 0x8800, 0x0065: 0x8800, 0x0066: 0x8800, 0x0067: 0x8800, 0x0068: 0x8800, 0x0069: 0x8800,
+-	0x006a: 0x8800, 0x006b: 0x8800, 0x006c: 0x8800, 0x006d: 0x8800, 0x006e: 0x8800, 0x006f: 0x8800,
+-	0x0070: 0x8800, 0x0072: 0x8800, 0x0073: 0x8800, 0x0074: 0x8800, 0x0075: 0x8800,
+-	0x0076: 0x8800, 0x0077: 0x8800, 0x0078: 0x8800, 0x0079: 0x8800, 0x007a: 0x8800,
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x00c0: 0x2f59, 0x00c1: 0x2f5e, 0x00c2: 0x466e, 0x00c3: 0x2f63, 0x00c4: 0x467d, 0x00c5: 0x4682,
+-	0x00c6: 0x8800, 0x00c7: 0x468c, 0x00c8: 0x2fcc, 0x00c9: 0x2fd1, 0x00ca: 0x4691, 0x00cb: 0x2fe5,
+-	0x00cc: 0x3058, 0x00cd: 0x305d, 0x00ce: 0x3062, 0x00cf: 0x46a5, 0x00d1: 0x30ee,
+-	0x00d2: 0x3111, 0x00d3: 0x3116, 0x00d4: 0x46af, 0x00d5: 0x46b4, 0x00d6: 0x46c3,
+-	0x00d8: 0x8800, 0x00d9: 0x319d, 0x00da: 0x31a2, 0x00db: 0x31a7, 0x00dc: 0x46f5, 0x00dd: 0x321f,
+-	0x00e0: 0x3265, 0x00e1: 0x326a, 0x00e2: 0x46ff, 0x00e3: 0x326f,
+-	0x00e4: 0x470e, 0x00e5: 0x4713, 0x00e6: 0x8800, 0x00e7: 0x471d, 0x00e8: 0x32d8, 0x00e9: 0x32dd,
+-	0x00ea: 0x4722, 0x00eb: 0x32f1, 0x00ec: 0x3369, 0x00ed: 0x336e, 0x00ee: 0x3373, 0x00ef: 0x4736,
+-	0x00f1: 0x33ff, 0x00f2: 0x3422, 0x00f3: 0x3427, 0x00f4: 0x4740, 0x00f5: 0x4745,
+-	0x00f6: 0x4754, 0x00f8: 0x8800, 0x00f9: 0x34b3, 0x00fa: 0x34b8, 0x00fb: 0x34bd,
+-	0x00fc: 0x4786, 0x00fd: 0x353a, 0x00ff: 0x3553,
+-	// Block 0x4, offset 0x100
+-	0x0100: 0x2f68, 0x0101: 0x3274, 0x0102: 0x4673, 0x0103: 0x4704, 0x0104: 0x2f86, 0x0105: 0x3292,
+-	0x0106: 0x2f9a, 0x0107: 0x32a6, 0x0108: 0x2f9f, 0x0109: 0x32ab, 0x010a: 0x2fa4, 0x010b: 0x32b0,
+-	0x010c: 0x2fa9, 0x010d: 0x32b5, 0x010e: 0x2fb3, 0x010f: 0x32bf,
+-	0x0112: 0x4696, 0x0113: 0x4727, 0x0114: 0x2fdb, 0x0115: 0x32e7, 0x0116: 0x2fe0, 0x0117: 0x32ec,
+-	0x0118: 0x2ffe, 0x0119: 0x330a, 0x011a: 0x2fef, 0x011b: 0x32fb, 0x011c: 0x3017, 0x011d: 0x3323,
+-	0x011e: 0x3021, 0x011f: 0x332d, 0x0120: 0x3026, 0x0121: 0x3332, 0x0122: 0x3030, 0x0123: 0x333c,
+-	0x0124: 0x3035, 0x0125: 0x3341, 0x0128: 0x3067, 0x0129: 0x3378,
+-	0x012a: 0x306c, 0x012b: 0x337d, 0x012c: 0x3071, 0x012d: 0x3382, 0x012e: 0x3094, 0x012f: 0x33a0,
+-	0x0130: 0x3076, 0x0134: 0x309e, 0x0135: 0x33aa,
+-	0x0136: 0x30b2, 0x0137: 0x33c3, 0x0139: 0x30bc, 0x013a: 0x33cd, 0x013b: 0x30c6,
+-	0x013c: 0x33d7, 0x013d: 0x30c1, 0x013e: 0x33d2,
+-	// Block 0x5, offset 0x140
+-	0x0143: 0x30e9, 0x0144: 0x33fa, 0x0145: 0x3102,
+-	0x0146: 0x3413, 0x0147: 0x30f8, 0x0148: 0x3409,
+-	0x014c: 0x46b9, 0x014d: 0x474a, 0x014e: 0x311b, 0x014f: 0x342c, 0x0150: 0x3125, 0x0151: 0x3436,
+-	0x0154: 0x3143, 0x0155: 0x3454, 0x0156: 0x315c, 0x0157: 0x346d,
+-	0x0158: 0x314d, 0x0159: 0x345e, 0x015a: 0x46dc, 0x015b: 0x476d, 0x015c: 0x3166, 0x015d: 0x3477,
+-	0x015e: 0x3175, 0x015f: 0x3486, 0x0160: 0x46e1, 0x0161: 0x4772, 0x0162: 0x318e, 0x0163: 0x34a4,
+-	0x0164: 0x317f, 0x0165: 0x3495, 0x0168: 0x46eb, 0x0169: 0x477c,
+-	0x016a: 0x46f0, 0x016b: 0x4781, 0x016c: 0x31ac, 0x016d: 0x34c2, 0x016e: 0x31b6, 0x016f: 0x34cc,
+-	0x0170: 0x31bb, 0x0171: 0x34d1, 0x0172: 0x31d9, 0x0173: 0x34ef, 0x0174: 0x31fc, 0x0175: 0x3512,
+-	0x0176: 0x3224, 0x0177: 0x353f, 0x0178: 0x3238, 0x0179: 0x3247, 0x017a: 0x3567, 0x017b: 0x3251,
+-	0x017c: 0x3571, 0x017d: 0x3256, 0x017e: 0x3576, 0x017f: 0x8800,
+-	// Block 0x6, offset 0x180
+-	0x018d: 0x2f72, 0x018e: 0x327e, 0x018f: 0x3080, 0x0190: 0x338c, 0x0191: 0x312a,
+-	0x0192: 0x343b, 0x0193: 0x31c0, 0x0194: 0x34d6, 0x0195: 0x39b9, 0x0196: 0x3b48, 0x0197: 0x39b2,
+-	0x0198: 0x3b41, 0x0199: 0x39c0, 0x019a: 0x3b4f, 0x019b: 0x39ab, 0x019c: 0x3b3a,
+-	0x019e: 0x389a, 0x019f: 0x3a29, 0x01a0: 0x3893, 0x01a1: 0x3a22, 0x01a2: 0x359d, 0x01a3: 0x35af,
+-	0x01a6: 0x302b, 0x01a7: 0x3337, 0x01a8: 0x30a8, 0x01a9: 0x33b9,
+-	0x01aa: 0x46d2, 0x01ab: 0x4763, 0x01ac: 0x397a, 0x01ad: 0x3b09, 0x01ae: 0x35c1, 0x01af: 0x35c7,
+-	0x01b0: 0x33af, 0x01b4: 0x3012, 0x01b5: 0x331e,
+-	0x01b8: 0x30e4, 0x01b9: 0x33f5, 0x01ba: 0x38a1, 0x01bb: 0x3a30,
+-	0x01bc: 0x3597, 0x01bd: 0x35a9, 0x01be: 0x35a3, 0x01bf: 0x35b5,
+-	// Block 0x7, offset 0x1c0
+-	0x01c0: 0x2f77, 0x01c1: 0x3283, 0x01c2: 0x2f7c, 0x01c3: 0x3288, 0x01c4: 0x2ff4, 0x01c5: 0x3300,
+-	0x01c6: 0x2ff9, 0x01c7: 0x3305, 0x01c8: 0x3085, 0x01c9: 0x3391, 0x01ca: 0x308a, 0x01cb: 0x3396,
+-	0x01cc: 0x312f, 0x01cd: 0x3440, 0x01ce: 0x3134, 0x01cf: 0x3445, 0x01d0: 0x3152, 0x01d1: 0x3463,
+-	0x01d2: 0x3157, 0x01d3: 0x3468, 0x01d4: 0x31c5, 0x01d5: 0x34db, 0x01d6: 0x31ca, 0x01d7: 0x34e0,
+-	0x01d8: 0x3170, 0x01d9: 0x3481, 0x01da: 0x3189, 0x01db: 0x349f,
+-	0x01de: 0x3044, 0x01df: 0x3350,
+-	0x01e6: 0x4678, 0x01e7: 0x4709, 0x01e8: 0x46a0, 0x01e9: 0x4731,
+-	0x01ea: 0x3949, 0x01eb: 0x3ad8, 0x01ec: 0x3926, 0x01ed: 0x3ab5, 0x01ee: 0x46be, 0x01ef: 0x474f,
+-	0x01f0: 0x3942, 0x01f1: 0x3ad1, 0x01f2: 0x322e, 0x01f3: 0x3549,
+-	// Block 0x8, offset 0x200
+-	0x0200: 0x86e6, 0x0201: 0x86e6, 0x0202: 0x86e6, 0x0203: 0x86e6, 0x0204: 0x86e6, 0x0205: 0x80e6,
+-	0x0206: 0x86e6, 0x0207: 0x86e6, 0x0208: 0x86e6, 0x0209: 0x86e6, 0x020a: 0x86e6, 0x020b: 0x86e6,
+-	0x020c: 0x86e6, 0x020d: 0x80e6, 0x020e: 0x80e6, 0x020f: 0x86e6, 0x0210: 0x80e6, 0x0211: 0x86e6,
+-	0x0212: 0x80e6, 0x0213: 0x86e6, 0x0214: 0x86e6, 0x0215: 0x80e8, 0x0216: 0x80dc, 0x0217: 0x80dc,
+-	0x0218: 0x80dc, 0x0219: 0x80dc, 0x021a: 0x80e8, 0x021b: 0x86d8, 0x021c: 0x80dc, 0x021d: 0x80dc,
+-	0x021e: 0x80dc, 0x021f: 0x80dc, 0x0220: 0x80dc, 0x0221: 0x80ca, 0x0222: 0x80ca, 0x0223: 0x86dc,
+-	0x0224: 0x86dc, 0x0225: 0x86dc, 0x0226: 0x86dc, 0x0227: 0x86ca, 0x0228: 0x86ca, 0x0229: 0x80dc,
+-	0x022a: 0x80dc, 0x022b: 0x80dc, 0x022c: 0x80dc, 0x022d: 0x86dc, 0x022e: 0x86dc, 0x022f: 0x80dc,
+-	0x0230: 0x86dc, 0x0231: 0x86dc, 0x0232: 0x80dc, 0x0233: 0x80dc, 0x0234: 0x8001, 0x0235: 0x8001,
+-	0x0236: 0x8001, 0x0237: 0x8001, 0x0238: 0x8601, 0x0239: 0x80dc, 0x023a: 0x80dc, 0x023b: 0x80dc,
+-	0x023c: 0x80dc, 0x023d: 0x80e6, 0x023e: 0x80e6, 0x023f: 0x80e6,
+-	// Block 0x9, offset 0x240
+-	0x0240: 0x4994, 0x0241: 0x4999, 0x0242: 0x86e6, 0x0243: 0x499e, 0x0244: 0x49a3, 0x0245: 0x86f0,
+-	0x0246: 0x80e6, 0x0247: 0x80dc, 0x0248: 0x80dc, 0x0249: 0x80dc, 0x024a: 0x80e6, 0x024b: 0x80e6,
+-	0x024c: 0x80e6, 0x024d: 0x80dc, 0x024e: 0x80dc, 0x0250: 0x80e6, 0x0251: 0x80e6,
+-	0x0252: 0x80e6, 0x0253: 0x80dc, 0x0254: 0x80dc, 0x0255: 0x80dc, 0x0256: 0x80dc, 0x0257: 0x80e6,
+-	0x0258: 0x80e8, 0x0259: 0x80dc, 0x025a: 0x80dc, 0x025b: 0x80e6, 0x025c: 0x80e9, 0x025d: 0x80ea,
+-	0x025e: 0x80ea, 0x025f: 0x80e9, 0x0260: 0x80ea, 0x0261: 0x80ea, 0x0262: 0x80e9, 0x0263: 0x80e6,
+-	0x0264: 0x80e6, 0x0265: 0x80e6, 0x0266: 0x80e6, 0x0267: 0x80e6, 0x0268: 0x80e6, 0x0269: 0x80e6,
+-	0x026a: 0x80e6, 0x026b: 0x80e6, 0x026c: 0x80e6, 0x026d: 0x80e6, 0x026e: 0x80e6, 0x026f: 0x80e6,
+-	0x0274: 0x0170,
+-	0x027e: 0x0037,
+-	// Block 0xa, offset 0x280
+-	0x0285: 0x358b,
+-	0x0286: 0x35d3, 0x0287: 0x00d1, 0x0288: 0x35f1, 0x0289: 0x35fd, 0x028a: 0x360f,
+-	0x028c: 0x362d, 0x028e: 0x363f, 0x028f: 0x365d, 0x0290: 0x3df2, 0x0291: 0x8800,
+-	0x0295: 0x8800, 0x0297: 0x8800,
+-	0x0299: 0x8800,
+-	0x029f: 0x8800, 0x02a1: 0x8800,
+-	0x02a5: 0x8800, 0x02a9: 0x8800,
+-	0x02aa: 0x3621, 0x02ab: 0x3651, 0x02ac: 0x47e4, 0x02ad: 0x3681, 0x02ae: 0x480e, 0x02af: 0x3693,
+-	0x02b0: 0x3e5a, 0x02b1: 0x8800, 0x02b5: 0x8800,
+-	0x02b7: 0x8800, 0x02b9: 0x8800,
+-	0x02bf: 0x8800,
+-	// Block 0xb, offset 0x2c0
+-	0x02c0: 0x370b, 0x02c1: 0x3717, 0x02c3: 0x3705,
+-	0x02c6: 0x8800, 0x02c7: 0x36f3,
+-	0x02cc: 0x3747, 0x02cd: 0x372f, 0x02ce: 0x3759, 0x02d0: 0x8800,
+-	0x02d3: 0x8800, 0x02d5: 0x8800, 0x02d6: 0x8800, 0x02d7: 0x8800,
+-	0x02d8: 0x8800, 0x02d9: 0x373b, 0x02da: 0x8800,
+-	0x02de: 0x8800, 0x02e3: 0x8800,
+-	0x02e7: 0x8800,
+-	0x02eb: 0x8800, 0x02ed: 0x8800,
+-	0x02f0: 0x8800, 0x02f3: 0x8800, 0x02f5: 0x8800,
+-	0x02f6: 0x8800, 0x02f7: 0x8800, 0x02f8: 0x8800, 0x02f9: 0x37bf, 0x02fa: 0x8800,
+-	0x02fe: 0x8800,
+-	// Block 0xc, offset 0x300
+-	0x0301: 0x371d, 0x0302: 0x37a1,
+-	0x0310: 0x36f9, 0x0311: 0x377d,
+-	0x0312: 0x36ff, 0x0313: 0x3783, 0x0316: 0x3711, 0x0317: 0x3795,
+-	0x0318: 0x8800, 0x0319: 0x8800, 0x031a: 0x3813, 0x031b: 0x3819, 0x031c: 0x3723, 0x031d: 0x37a7,
+-	0x031e: 0x3729, 0x031f: 0x37ad, 0x0322: 0x3735, 0x0323: 0x37b9,
+-	0x0324: 0x3741, 0x0325: 0x37c5, 0x0326: 0x374d, 0x0327: 0x37d1, 0x0328: 0x8800, 0x0329: 0x8800,
+-	0x032a: 0x381f, 0x032b: 0x3825, 0x032c: 0x3777, 0x032d: 0x37fb, 0x032e: 0x3753, 0x032f: 0x37d7,
+-	0x0330: 0x375f, 0x0331: 0x37e3, 0x0332: 0x3765, 0x0333: 0x37e9, 0x0334: 0x376b, 0x0335: 0x37ef,
+-	0x0338: 0x3771, 0x0339: 0x37f5,
+-	// Block 0xd, offset 0x340
+-	0x0351: 0x80dc,
+-	0x0352: 0x80e6, 0x0353: 0x80e6, 0x0354: 0x80e6, 0x0355: 0x80e6, 0x0356: 0x80dc, 0x0357: 0x80e6,
+-	0x0358: 0x80e6, 0x0359: 0x80e6, 0x035a: 0x80de, 0x035b: 0x80dc, 0x035c: 0x80e6, 0x035d: 0x80e6,
+-	0x035e: 0x80e6, 0x035f: 0x80e6, 0x0360: 0x80e6, 0x0361: 0x80e6, 0x0362: 0x80dc, 0x0363: 0x80dc,
+-	0x0364: 0x80dc, 0x0365: 0x80dc, 0x0366: 0x80dc, 0x0367: 0x80dc, 0x0368: 0x80e6, 0x0369: 0x80e6,
+-	0x036a: 0x80dc, 0x036b: 0x80e6, 0x036c: 0x80e6, 0x036d: 0x80de, 0x036e: 0x80e4, 0x036f: 0x80e6,
+-	0x0370: 0x800a, 0x0371: 0x800b, 0x0372: 0x800c, 0x0373: 0x800d, 0x0374: 0x800e, 0x0375: 0x800f,
+-	0x0376: 0x8010, 0x0377: 0x8011, 0x0378: 0x8012, 0x0379: 0x8013, 0x037a: 0x8013, 0x037b: 0x8014,
+-	0x037c: 0x8015, 0x037d: 0x8016, 0x037f: 0x8017,
+-	// Block 0xe, offset 0x380
+-	0x0388: 0x8800, 0x038a: 0x8800, 0x038b: 0x801b,
+-	0x038c: 0x801c, 0x038d: 0x801d, 0x038e: 0x801e, 0x038f: 0x801f, 0x0390: 0x8020, 0x0391: 0x8021,
+-	0x0392: 0x8022, 0x0393: 0x86e6, 0x0394: 0x86e6, 0x0395: 0x86dc, 0x0396: 0x80dc, 0x0397: 0x80e6,
+-	0x0398: 0x80e6, 0x0399: 0x80e6, 0x039a: 0x80e6, 0x039b: 0x80e6, 0x039c: 0x80dc, 0x039d: 0x80e6,
+-	0x039e: 0x80e6, 0x039f: 0x80dc,
+-	0x03b0: 0x8023,
+-	// Block 0xf, offset 0x3c0
+-	0x03c5: 0x8800,
+-	0x03c6: 0x1946, 0x03c7: 0x8800, 0x03c8: 0x194d, 0x03c9: 0x8800, 0x03ca: 0x1954, 0x03cb: 0x8800,
+-	0x03cc: 0x195b, 0x03cd: 0x8800, 0x03ce: 0x1962, 0x03d1: 0x8800,
+-	0x03d2: 0x1969,
+-	0x03f4: 0x8007, 0x03f5: 0x8600,
+-	0x03fa: 0x8800, 0x03fb: 0x1970,
+-	0x03fc: 0x8800, 0x03fd: 0x1977, 0x03fe: 0x8800, 0x03ff: 0x8800,
+-	// Block 0x10, offset 0x400
+-	0x0400: 0x2f81, 0x0401: 0x328d, 0x0402: 0x2f8b, 0x0403: 0x3297, 0x0404: 0x2f90, 0x0405: 0x329c,
+-	0x0406: 0x2f95, 0x0407: 0x32a1, 0x0408: 0x38b6, 0x0409: 0x3a45, 0x040a: 0x2fae, 0x040b: 0x32ba,
+-	0x040c: 0x2fb8, 0x040d: 0x32c4, 0x040e: 0x2fc7, 0x040f: 0x32d3, 0x0410: 0x2fbd, 0x0411: 0x32c9,
+-	0x0412: 0x2fc2, 0x0413: 0x32ce, 0x0414: 0x38d9, 0x0415: 0x3a68, 0x0416: 0x38e0, 0x0417: 0x3a6f,
+-	0x0418: 0x3003, 0x0419: 0x330f, 0x041a: 0x3008, 0x041b: 0x3314, 0x041c: 0x38ee, 0x041d: 0x3a7d,
+-	0x041e: 0x300d, 0x041f: 0x3319, 0x0420: 0x301c, 0x0421: 0x3328, 0x0422: 0x303a, 0x0423: 0x3346,
+-	0x0424: 0x3049, 0x0425: 0x3355, 0x0426: 0x303f, 0x0427: 0x334b, 0x0428: 0x304e, 0x0429: 0x335a,
+-	0x042a: 0x3053, 0x042b: 0x335f, 0x042c: 0x3099, 0x042d: 0x33a5, 0x042e: 0x38f5, 0x042f: 0x3a84,
+-	0x0430: 0x30a3, 0x0431: 0x33b4, 0x0432: 0x30ad, 0x0433: 0x33be, 0x0434: 0x30b7, 0x0435: 0x33c8,
+-	0x0436: 0x46aa, 0x0437: 0x473b, 0x0438: 0x38fc, 0x0439: 0x3a8b, 0x043a: 0x30d0, 0x043b: 0x33e1,
+-	0x043c: 0x30cb, 0x043d: 0x33dc, 0x043e: 0x30d5, 0x043f: 0x33e6,
+-	// Block 0x11, offset 0x440
+-	0x0440: 0x30da, 0x0441: 0x33eb, 0x0442: 0x30df, 0x0443: 0x33f0, 0x0444: 0x30f3, 0x0445: 0x3404,
+-	0x0446: 0x30fd, 0x0447: 0x340e, 0x0448: 0x310c, 0x0449: 0x341d, 0x044a: 0x3107, 0x044b: 0x3418,
+-	0x044c: 0x391f, 0x044d: 0x3aae, 0x044e: 0x392d, 0x044f: 0x3abc, 0x0450: 0x3934, 0x0451: 0x3ac3,
+-	0x0452: 0x393b, 0x0453: 0x3aca, 0x0454: 0x3139, 0x0455: 0x344a, 0x0456: 0x313e, 0x0457: 0x344f,
+-	0x0458: 0x3148, 0x0459: 0x3459, 0x045a: 0x46d7, 0x045b: 0x4768, 0x045c: 0x3981, 0x045d: 0x3b10,
+-	0x045e: 0x3161, 0x045f: 0x3472, 0x0460: 0x316b, 0x0461: 0x347c, 0x0462: 0x46e6, 0x0463: 0x4777,
+-	0x0464: 0x3988, 0x0465: 0x3b17, 0x0466: 0x398f, 0x0467: 0x3b1e, 0x0468: 0x3996, 0x0469: 0x3b25,
+-	0x046a: 0x317a, 0x046b: 0x348b, 0x046c: 0x3184, 0x046d: 0x349a, 0x046e: 0x3198, 0x046f: 0x34ae,
+-	0x0470: 0x3193, 0x0471: 0x34a9, 0x0472: 0x31d4, 0x0473: 0x34ea, 0x0474: 0x31e3, 0x0475: 0x34f9,
+-	0x0476: 0x31de, 0x0477: 0x34f4, 0x0478: 0x399d, 0x0479: 0x3b2c, 0x047a: 0x39a4, 0x047b: 0x3b33,
+-	0x047c: 0x31e8, 0x047d: 0x34fe, 0x047e: 0x31ed, 0x047f: 0x3503,
+-	// Block 0x12, offset 0x480
+-	0x0480: 0x31f2, 0x0481: 0x3508, 0x0482: 0x31f7, 0x0483: 0x350d, 0x0484: 0x3206, 0x0485: 0x351c,
+-	0x0486: 0x3201, 0x0487: 0x3517, 0x0488: 0x320b, 0x0489: 0x3526, 0x048a: 0x3210, 0x048b: 0x352b,
+-	0x048c: 0x3215, 0x048d: 0x3530, 0x048e: 0x3233, 0x048f: 0x354e, 0x0490: 0x324c, 0x0491: 0x356c,
+-	0x0492: 0x325b, 0x0493: 0x357b, 0x0494: 0x3260, 0x0495: 0x3580, 0x0496: 0x3364, 0x0497: 0x3490,
+-	0x0498: 0x3521, 0x0499: 0x355d, 0x049b: 0x35bb,
+-	0x04a0: 0x4687, 0x04a1: 0x4718, 0x04a2: 0x2f6d, 0x04a3: 0x3279,
+-	0x04a4: 0x3862, 0x04a5: 0x39f1, 0x04a6: 0x385b, 0x04a7: 0x39ea, 0x04a8: 0x3870, 0x04a9: 0x39ff,
+-	0x04aa: 0x3869, 0x04ab: 0x39f8, 0x04ac: 0x38a8, 0x04ad: 0x3a37, 0x04ae: 0x387e, 0x04af: 0x3a0d,
+-	0x04b0: 0x3877, 0x04b1: 0x3a06, 0x04b2: 0x388c, 0x04b3: 0x3a1b, 0x04b4: 0x3885, 0x04b5: 0x3a14,
+-	0x04b6: 0x38af, 0x04b7: 0x3a3e, 0x04b8: 0x469b, 0x04b9: 0x472c, 0x04ba: 0x2fea, 0x04bb: 0x32f6,
+-	0x04bc: 0x2fd6, 0x04bd: 0x32e2, 0x04be: 0x38c4, 0x04bf: 0x3a53,
+-	// Block 0x13, offset 0x4c0
+-	0x04c0: 0x38bd, 0x04c1: 0x3a4c, 0x04c2: 0x38d2, 0x04c3: 0x3a61, 0x04c4: 0x38cb, 0x04c5: 0x3a5a,
+-	0x04c6: 0x38e7, 0x04c7: 0x3a76, 0x04c8: 0x307b, 0x04c9: 0x3387, 0x04ca: 0x308f, 0x04cb: 0x339b,
+-	0x04cc: 0x46cd, 0x04cd: 0x475e, 0x04ce: 0x3120, 0x04cf: 0x3431, 0x04d0: 0x390a, 0x04d1: 0x3a99,
+-	0x04d2: 0x3903, 0x04d3: 0x3a92, 0x04d4: 0x3918, 0x04d5: 0x3aa7, 0x04d6: 0x3911, 0x04d7: 0x3aa0,
+-	0x04d8: 0x3973, 0x04d9: 0x3b02, 0x04da: 0x3957, 0x04db: 0x3ae6, 0x04dc: 0x3950, 0x04dd: 0x3adf,
+-	0x04de: 0x3965, 0x04df: 0x3af4, 0x04e0: 0x395e, 0x04e1: 0x3aed, 0x04e2: 0x396c, 0x04e3: 0x3afb,
+-	0x04e4: 0x31cf, 0x04e5: 0x34e5, 0x04e6: 0x31b1, 0x04e7: 0x34c7, 0x04e8: 0x39ce, 0x04e9: 0x3b5d,
+-	0x04ea: 0x39c7, 0x04eb: 0x3b56, 0x04ec: 0x39dc, 0x04ed: 0x3b6b, 0x04ee: 0x39d5, 0x04ef: 0x3b64,
+-	0x04f0: 0x39e3, 0x04f1: 0x3b72, 0x04f2: 0x321a, 0x04f3: 0x3535, 0x04f4: 0x3242, 0x04f5: 0x3562,
+-	0x04f6: 0x323d, 0x04f7: 0x3558, 0x04f8: 0x3229, 0x04f9: 0x3544,
+-	// Block 0x14, offset 0x500
+-	0x0500: 0x47ea, 0x0501: 0x47f0, 0x0502: 0x4904, 0x0503: 0x491c, 0x0504: 0x490c, 0x0505: 0x4924,
+-	0x0506: 0x4914, 0x0507: 0x492c, 0x0508: 0x4790, 0x0509: 0x4796, 0x050a: 0x4874, 0x050b: 0x488c,
+-	0x050c: 0x487c, 0x050d: 0x4894, 0x050e: 0x4884, 0x050f: 0x489c, 0x0510: 0x47fc, 0x0511: 0x4802,
+-	0x0512: 0x3da2, 0x0513: 0x3db2, 0x0514: 0x3daa, 0x0515: 0x3dba,
+-	0x0518: 0x479c, 0x0519: 0x47a2, 0x051a: 0x3cd2, 0x051b: 0x3ce2, 0x051c: 0x3cda, 0x051d: 0x3cea,
+-	0x0520: 0x4814, 0x0521: 0x481a, 0x0522: 0x4934, 0x0523: 0x494c,
+-	0x0524: 0x493c, 0x0525: 0x4954, 0x0526: 0x4944, 0x0527: 0x495c, 0x0528: 0x47a8, 0x0529: 0x47ae,
+-	0x052a: 0x48a4, 0x052b: 0x48bc, 0x052c: 0x48ac, 0x052d: 0x48c4, 0x052e: 0x48b4, 0x052f: 0x48cc,
+-	0x0530: 0x482c, 0x0531: 0x4832, 0x0532: 0x3e02, 0x0533: 0x3e1a, 0x0534: 0x3e0a, 0x0535: 0x3e22,
+-	0x0536: 0x3e12, 0x0537: 0x3e2a, 0x0538: 0x47b4, 0x0539: 0x47ba, 0x053a: 0x3d02, 0x053b: 0x3d1a,
+-	0x053c: 0x3d0a, 0x053d: 0x3d22, 0x053e: 0x3d12, 0x053f: 0x3d2a,
+-	// Block 0x15, offset 0x540
+-	0x0540: 0x4838, 0x0541: 0x483e, 0x0542: 0x3e32, 0x0543: 0x3e42, 0x0544: 0x3e3a, 0x0545: 0x3e4a,
+-	0x0548: 0x47c0, 0x0549: 0x47c6, 0x054a: 0x3d32, 0x054b: 0x3d42,
+-	0x054c: 0x3d3a, 0x054d: 0x3d4a, 0x0550: 0x484a, 0x0551: 0x4850,
+-	0x0552: 0x3e6a, 0x0553: 0x3e82, 0x0554: 0x3e72, 0x0555: 0x3e8a, 0x0556: 0x3e7a, 0x0557: 0x3e92,
+-	0x0559: 0x47cc, 0x055b: 0x3d52, 0x055d: 0x3d5a,
+-	0x055f: 0x3d62, 0x0560: 0x4862, 0x0561: 0x4868, 0x0562: 0x4964, 0x0563: 0x497c,
+-	0x0564: 0x496c, 0x0565: 0x4984, 0x0566: 0x4974, 0x0567: 0x498c, 0x0568: 0x47d2, 0x0569: 0x47d8,
+-	0x056a: 0x48d4, 0x056b: 0x48ec, 0x056c: 0x48dc, 0x056d: 0x48f4, 0x056e: 0x48e4, 0x056f: 0x48fc,
+-	0x0570: 0x47de, 0x0571: 0x4304, 0x0572: 0x367b, 0x0573: 0x430a, 0x0574: 0x4808, 0x0575: 0x4310,
+-	0x0576: 0x368d, 0x0577: 0x4316, 0x0578: 0x36ab, 0x0579: 0x431c, 0x057a: 0x36c3, 0x057b: 0x4322,
+-	0x057c: 0x4856, 0x057d: 0x4328,
+-	// Block 0x16, offset 0x580
+-	0x0580: 0x3d8a, 0x0581: 0x3d92, 0x0582: 0x416e, 0x0583: 0x418c, 0x0584: 0x4178, 0x0585: 0x4196,
+-	0x0586: 0x4182, 0x0587: 0x41a0, 0x0588: 0x3cc2, 0x0589: 0x3cca, 0x058a: 0x40ba, 0x058b: 0x40d8,
+-	0x058c: 0x40c4, 0x058d: 0x40e2, 0x058e: 0x40ce, 0x058f: 0x40ec, 0x0590: 0x3dd2, 0x0591: 0x3dda,
+-	0x0592: 0x41aa, 0x0593: 0x41c8, 0x0594: 0x41b4, 0x0595: 0x41d2, 0x0596: 0x41be, 0x0597: 0x41dc,
+-	0x0598: 0x3cf2, 0x0599: 0x3cfa, 0x059a: 0x40f6, 0x059b: 0x4114, 0x059c: 0x4100, 0x059d: 0x411e,
+-	0x059e: 0x410a, 0x059f: 0x4128, 0x05a0: 0x3eaa, 0x05a1: 0x3eb2, 0x05a2: 0x41e6, 0x05a3: 0x4204,
+-	0x05a4: 0x41f0, 0x05a5: 0x420e, 0x05a6: 0x41fa, 0x05a7: 0x4218, 0x05a8: 0x3d6a, 0x05a9: 0x3d72,
+-	0x05aa: 0x4132, 0x05ab: 0x4150, 0x05ac: 0x413c, 0x05ad: 0x415a, 0x05ae: 0x4146, 0x05af: 0x4164,
+-	0x05b0: 0x366f, 0x05b1: 0x3669, 0x05b2: 0x3d7a, 0x05b3: 0x3675, 0x05b4: 0x3d82,
+-	0x05b6: 0x47f6, 0x05b7: 0x3d9a, 0x05b8: 0x35df, 0x05b9: 0x35d9, 0x05ba: 0x35cd, 0x05bb: 0x42d4,
+-	0x05bc: 0x35e5, 0x05be: 0x01d3, 0x05bf: 0x8800,
+-	// Block 0x17, offset 0x5c0
+-	0x05c1: 0x3591, 0x05c2: 0x3dc2, 0x05c3: 0x3687, 0x05c4: 0x3dca,
+-	0x05c6: 0x4820, 0x05c7: 0x3de2, 0x05c8: 0x35eb, 0x05c9: 0x42da, 0x05ca: 0x35f7, 0x05cb: 0x42e0,
+-	0x05cc: 0x3603, 0x05cd: 0x3b79, 0x05ce: 0x3b80, 0x05cf: 0x3b87, 0x05d0: 0x369f, 0x05d1: 0x3699,
+-	0x05d2: 0x3dea, 0x05d3: 0x44ca, 0x05d6: 0x36a5, 0x05d7: 0x3dfa,
+-	0x05d8: 0x361b, 0x05d9: 0x3615, 0x05da: 0x3609, 0x05db: 0x42e6, 0x05dd: 0x3b8e,
+-	0x05de: 0x3b95, 0x05df: 0x3b9c, 0x05e0: 0x36d5, 0x05e1: 0x36cf, 0x05e2: 0x3e52, 0x05e3: 0x44d2,
+-	0x05e4: 0x36b7, 0x05e5: 0x36bd, 0x05e6: 0x36db, 0x05e7: 0x3e62, 0x05e8: 0x364b, 0x05e9: 0x3645,
+-	0x05ea: 0x3639, 0x05eb: 0x42f2, 0x05ec: 0x3633, 0x05ed: 0x3585, 0x05ee: 0x42ce, 0x05ef: 0x0081,
+-	0x05f2: 0x3e9a, 0x05f3: 0x36e1, 0x05f4: 0x3ea2,
+-	0x05f6: 0x486e, 0x05f7: 0x3eba, 0x05f8: 0x3627, 0x05f9: 0x42ec, 0x05fa: 0x3657, 0x05fb: 0x42fe,
+-	0x05fc: 0x3663, 0x05fd: 0x00ce, 0x05fe: 0x8800,
+-	// Block 0x18, offset 0x600
+-	0x0601: 0x3bf0, 0x0603: 0x8800, 0x0604: 0x3bf7, 0x0605: 0x8800,
+-	0x0607: 0x3bfe, 0x0608: 0x8800, 0x0609: 0x3c05,
+-	0x060d: 0x8800,
+-	0x0620: 0x2f4f, 0x0621: 0x8800, 0x0622: 0x3c13,
+-	0x0624: 0x8800, 0x0625: 0x8800,
+-	0x062d: 0x3c0c, 0x062e: 0x2f4a, 0x062f: 0x2f54,
+-	0x0630: 0x3c1a, 0x0631: 0x3c21, 0x0632: 0x8800, 0x0633: 0x8800, 0x0634: 0x3c28, 0x0635: 0x3c2f,
+-	0x0636: 0x8800, 0x0637: 0x8800, 0x0638: 0x3c36, 0x0639: 0x3c3d, 0x063a: 0x8800, 0x063b: 0x8800,
+-	0x063c: 0x8800, 0x063d: 0x8800,
+-	// Block 0x19, offset 0x640
+-	0x0640: 0x3c44, 0x0641: 0x3c4b, 0x0642: 0x8800, 0x0643: 0x8800, 0x0644: 0x3c60, 0x0645: 0x3c67,
+-	0x0646: 0x8800, 0x0647: 0x8800, 0x0648: 0x3c6e, 0x0649: 0x3c75,
+-	0x0651: 0x8800,
+-	0x0652: 0x8800,
+-	0x0662: 0x8800,
+-	0x0668: 0x8800, 0x0669: 0x8800,
+-	0x066b: 0x8800, 0x066c: 0x3c8a, 0x066d: 0x3c91, 0x066e: 0x3c98, 0x066f: 0x3c9f,
+-	0x0672: 0x8800, 0x0673: 0x8800, 0x0674: 0x8800, 0x0675: 0x8800,
+-	// Block 0x1a, offset 0x680
+-	0x0686: 0x8800, 0x068b: 0x8800,
+-	0x068c: 0x3ef2, 0x068d: 0x8800, 0x068e: 0x3efa, 0x068f: 0x8800, 0x0690: 0x3f02, 0x0691: 0x8800,
+-	0x0692: 0x3f0a, 0x0693: 0x8800, 0x0694: 0x3f12, 0x0695: 0x8800, 0x0696: 0x3f1a, 0x0697: 0x8800,
+-	0x0698: 0x3f22, 0x0699: 0x8800, 0x069a: 0x3f2a, 0x069b: 0x8800, 0x069c: 0x3f32, 0x069d: 0x8800,
+-	0x069e: 0x3f3a, 0x069f: 0x8800, 0x06a0: 0x3f42, 0x06a1: 0x8800, 0x06a2: 0x3f4a,
+-	0x06a4: 0x8800, 0x06a5: 0x3f52, 0x06a6: 0x8800, 0x06a7: 0x3f5a, 0x06a8: 0x8800, 0x06a9: 0x3f62,
+-	0x06af: 0x8800,
+-	0x06b0: 0x3f6a, 0x06b1: 0x3f72, 0x06b2: 0x8800, 0x06b3: 0x3f7a, 0x06b4: 0x3f82, 0x06b5: 0x8800,
+-	0x06b6: 0x3f8a, 0x06b7: 0x3f92, 0x06b8: 0x8800, 0x06b9: 0x3f9a, 0x06ba: 0x3fa2, 0x06bb: 0x8800,
+-	0x06bc: 0x3faa, 0x06bd: 0x3fb2,
+-	// Block 0x1b, offset 0x6c0
+-	0x06d4: 0x3eea,
+-	0x06d9: 0x8608, 0x06da: 0x8608, 0x06dd: 0x8800,
+-	0x06de: 0x3fba,
+-	0x06e6: 0x8800,
+-	0x06eb: 0x8800, 0x06ec: 0x3fca, 0x06ed: 0x8800, 0x06ee: 0x3fd2, 0x06ef: 0x8800,
+-	0x06f0: 0x3fda, 0x06f1: 0x8800, 0x06f2: 0x3fe2, 0x06f3: 0x8800, 0x06f4: 0x3fea, 0x06f5: 0x8800,
+-	0x06f6: 0x3ff2, 0x06f7: 0x8800, 0x06f8: 0x3ffa, 0x06f9: 0x8800, 0x06fa: 0x4002, 0x06fb: 0x8800,
+-	0x06fc: 0x400a, 0x06fd: 0x8800, 0x06fe: 0x4012, 0x06ff: 0x8800,
+-	// Block 0x1c, offset 0x700
+-	0x0700: 0x401a, 0x0701: 0x8800, 0x0702: 0x4022, 0x0704: 0x8800, 0x0705: 0x402a,
+-	0x0706: 0x8800, 0x0707: 0x4032, 0x0708: 0x8800, 0x0709: 0x403a,
+-	0x070f: 0x8800, 0x0710: 0x4042, 0x0711: 0x404a,
+-	0x0712: 0x8800, 0x0713: 0x4052, 0x0714: 0x405a, 0x0715: 0x8800, 0x0716: 0x4062, 0x0717: 0x406a,
+-	0x0718: 0x8800, 0x0719: 0x4072, 0x071a: 0x407a, 0x071b: 0x8800, 0x071c: 0x4082, 0x071d: 0x408a,
+-	0x072f: 0x8800,
+-	0x0730: 0x8800, 0x0731: 0x8800, 0x0732: 0x8800, 0x0734: 0x3fc2,
+-	0x0737: 0x4092, 0x0738: 0x409a, 0x0739: 0x40a2, 0x073a: 0x40aa,
+-	0x073d: 0x8800, 0x073e: 0x40b2,
+-	// Block 0x1d, offset 0x740
+-	0x0740: 0x13e9, 0x0741: 0x0d6d, 0x0742: 0x1445, 0x0743: 0x1411, 0x0744: 0x0ec9, 0x0745: 0x075d,
+-	0x0746: 0x0951, 0x0747: 0x1699, 0x0748: 0x1699, 0x0749: 0x0a7d, 0x074a: 0x14cd, 0x074b: 0x09b5,
+-	0x074c: 0x0a79, 0x074d: 0x0c61, 0x074e: 0x1041, 0x074f: 0x11d1, 0x0750: 0x1309, 0x0751: 0x1345,
+-	0x0752: 0x1379, 0x0753: 0x148d, 0x0754: 0x0de5, 0x0755: 0x0e71, 0x0756: 0x0f1d, 0x0757: 0x0fb5,
+-	0x0758: 0x12d1, 0x0759: 0x14b5, 0x075a: 0x15e1, 0x075b: 0x0781, 0x075c: 0x0925, 0x075d: 0x0df9,
+-	0x075e: 0x0f41, 0x075f: 0x1305, 0x0760: 0x1631, 0x0761: 0x0b25, 0x0762: 0x0ee9, 0x0763: 0x12f5,
+-	0x0764: 0x1389, 0x0765: 0x0c95, 0x0766: 0x122d, 0x0767: 0x1351, 0x0768: 0x0b91, 0x0769: 0x0d81,
+-	0x076a: 0x0e89, 0x076b: 0x0f8d, 0x076c: 0x1499, 0x076d: 0x07c1, 0x076e: 0x0859, 0x076f: 0x08c5,
+-	0x0770: 0x0cfd, 0x0771: 0x0df1, 0x0772: 0x0f3d, 0x0773: 0x1061, 0x0774: 0x11e9, 0x0775: 0x12fd,
+-	0x0776: 0x1315, 0x0777: 0x1439, 0x0778: 0x155d, 0x0779: 0x1611, 0x077a: 0x162d, 0x077b: 0x109d,
+-	0x077c: 0x10dd, 0x077d: 0x1195, 0x077e: 0x12b5, 0x077f: 0x14e9,
+-	// Block 0x1e, offset 0x780
+-	0x0780: 0x1639, 0x0781: 0x13bd, 0x0782: 0x0a39, 0x0783: 0x0bad, 0x0784: 0x114d, 0x0785: 0x120d,
+-	0x0786: 0x0f71, 0x0787: 0x10a5, 0x0788: 0x1409, 0x0789: 0x1555, 0x078a: 0x0a35, 0x078b: 0x0b01,
+-	0x078c: 0x0de9, 0x078d: 0x0e9d, 0x078e: 0x0ed1, 0x078f: 0x1185, 0x0790: 0x11ad, 0x0791: 0x1515,
+-	0x0792: 0x08c1, 0x0793: 0x1219, 0x0794: 0x0865, 0x0795: 0x0861, 0x0796: 0x1109, 0x0797: 0x1199,
+-	0x0798: 0x12cd, 0x0799: 0x151d, 0x079a: 0x13d9, 0x079b: 0x0c99, 0x079c: 0x0de5, 0x079d: 0x13c9,
+-	0x079e: 0x0769, 0x079f: 0x0ad5, 0x07a0: 0x0c05, 0x07a1: 0x0fa1, 0x07a2: 0x1021, 0x07a3: 0x08e5,
+-	0x07a4: 0x10ad, 0x07a5: 0x07d1, 0x07a6: 0x0be9, 0x07a7: 0x0749, 0x07a8: 0x0e5d, 0x07a9: 0x0d15,
+-	0x07aa: 0x1181, 0x07ab: 0x0939, 0x07ac: 0x0a25, 0x07ad: 0x106d, 0x07ae: 0x12d5, 0x07af: 0x13ad,
+-	0x07b0: 0x0e29, 0x07b1: 0x1469, 0x07b2: 0x0e55, 0x07b3: 0x0ca9, 0x07b4: 0x128d, 0x07b5: 0x0cc9,
+-	0x07b6: 0x101d, 0x07b7: 0x079d, 0x07b8: 0x0819, 0x07b9: 0x085d, 0x07ba: 0x0dc5, 0x07bb: 0x116d,
+-	0x07bc: 0x1265, 0x07bd: 0x13b9, 0x07be: 0x14c9, 0x07bf: 0x08cd,
+-	// Block 0x1f, offset 0x7c0
+-	0x07c0: 0x0981, 0x07c1: 0x0a89, 0x07c2: 0x0ba1, 0x07c3: 0x0d31, 0x07c4: 0x0eed, 0x07c5: 0x10b1,
+-	0x07c6: 0x1505, 0x07c7: 0x15e9, 0x07c8: 0x163d, 0x07c9: 0x1655, 0x07ca: 0x08a9, 0x07cb: 0x0d65,
+-	0x07cc: 0x0e15, 0x07cd: 0x145d, 0x07ce: 0x0b6d, 0x07cf: 0x0c49, 0x07d0: 0x0c65, 0x07d1: 0x0cf5,
+-	0x07d2: 0x0edd, 0x07d3: 0x0f29, 0x07d4: 0x0fd9, 0x07d5: 0x10fd, 0x07d6: 0x11a1, 0x07d7: 0x1205,
+-	0x07d8: 0x144d, 0x07d9: 0x12dd, 0x07da: 0x1475, 0x07db: 0x14ed, 0x07dc: 0x0881, 0x07dd: 0x08ad,
+-	0x07de: 0x0995, 0x07df: 0x0f19, 0x07e0: 0x1365, 0x07e1: 0x13ad, 0x07e2: 0x0b8d, 0x07e3: 0x0bfd,
+-	0x07e4: 0x0cc1, 0x07e5: 0x0e21, 0x07e6: 0x1149, 0x07e7: 0x0f95, 0x07e8: 0x07ad, 0x07e9: 0x09f1,
+-	0x07ea: 0x0ad5, 0x07eb: 0x0b39, 0x07ec: 0x0c09, 0x07ed: 0x0fb1, 0x07ee: 0x0fcd, 0x07ef: 0x11dd,
+-	0x07f0: 0x11fd, 0x07f1: 0x14d1, 0x07f2: 0x1551, 0x07f3: 0x1561, 0x07f4: 0x159d, 0x07f5: 0x07c5,
+-	0x07f6: 0x10f1, 0x07f7: 0x14bd, 0x07f8: 0x1539, 0x07f9: 0x0c21, 0x07fa: 0x0789, 0x07fb: 0x07e9,
+-	0x07fc: 0x0ad9, 0x07fd: 0x0af9, 0x07fe: 0x0d21, 0x07ff: 0x0de5,
+-	// Block 0x20, offset 0x800
+-	0x0800: 0x0f35, 0x0801: 0x103d, 0x0802: 0x12e9, 0x0803: 0x1489, 0x0804: 0x1691, 0x0805: 0x0d55,
+-	0x0806: 0x1511, 0x0807: 0x08a5, 0x0808: 0x0da1, 0x0809: 0x0dad, 0x080a: 0x0e81, 0x080b: 0x0eb9,
+-	0x080c: 0x0fbd, 0x080d: 0x1019, 0x080e: 0x1099, 0x080f: 0x117d, 0x0810: 0x15a9, 0x0811: 0x0821,
+-	0x0812: 0x0c75, 0x0813: 0x1521, 0x0814: 0x07d9, 0x0815: 0x0b1d, 0x0816: 0x0ea1, 0x0817: 0x1451,
+-	0x0818: 0x0bd9, 0x0819: 0x0c29, 0x081a: 0x0db5, 0x081b: 0x0fa1, 0x081c: 0x1529, 0x081d: 0x0889,
+-	0x081e: 0x0971, 0x081f: 0x0b09, 0x0820: 0x0d45, 0x0821: 0x0d91, 0x0822: 0x0dd1, 0x0823: 0x0e65,
+-	0x0824: 0x0fb9, 0x0825: 0x102d, 0x0826: 0x11c9, 0x0827: 0x1369, 0x0828: 0x1375, 0x0829: 0x14c5,
+-	0x082a: 0x1545, 0x082b: 0x08f5, 0x082c: 0x0ebd, 0x082d: 0x0975, 0x082e: 0x0f39, 0x082f: 0x0fdd,
+-	0x0830: 0x12f9, 0x0831: 0x152d, 0x0832: 0x1619, 0x0833: 0x1641, 0x0834: 0x0da9, 0x0835: 0x0e99,
+-	0x0836: 0x1235, 0x0837: 0x1129, 0x0838: 0x1135, 0x0839: 0x1159, 0x083a: 0x0f89, 0x083b: 0x0f11,
+-	0x083c: 0x13d5, 0x083d: 0x07a5, 0x083e: 0x129d, 0x083f: 0x088d,
+-	// Block 0x21, offset 0x840
+-	0x0840: 0x087d, 0x0841: 0x0b7d, 0x0842: 0x0c9d, 0x0843: 0x1165, 0x0844: 0x0ac5, 0x0845: 0x0e75,
+-	0x0846: 0x0d61, 0x0847: 0x1459, 0x0848: 0x1359, 0x0849: 0x1519, 0x084a: 0x1395, 0x084b: 0x0b99,
+-	0x084c: 0x07f9, 0x084d: 0x09cd, 0x0850: 0x0a21,
+-	0x0852: 0x0d51, 0x0855: 0x0869, 0x0856: 0x0f91, 0x0857: 0x1055,
+-	0x0858: 0x10b9, 0x0859: 0x10d5, 0x085a: 0x10d9, 0x085b: 0x10ed, 0x085c: 0x1569, 0x085d: 0x115d,
+-	0x085e: 0x11e1, 0x0860: 0x1301, 0x0862: 0x13c5,
+-	0x0865: 0x1479, 0x0866: 0x14a5,
+-	0x086a: 0x15bd, 0x086b: 0x15c1, 0x086c: 0x15c5, 0x086d: 0x1629, 0x086e: 0x149d, 0x086f: 0x1535,
+-	0x0870: 0x07c9, 0x0871: 0x07ed, 0x0872: 0x0801, 0x0873: 0x08bd, 0x0874: 0x08c9, 0x0875: 0x0909,
+-	0x0876: 0x09bd, 0x0877: 0x09d9, 0x0878: 0x09e1, 0x0879: 0x0a1d, 0x087a: 0x0a29, 0x087b: 0x0b05,
+-	0x087c: 0x0b0d, 0x087d: 0x0c15, 0x087e: 0x0c3d, 0x087f: 0x0c45,
+-	// Block 0x22, offset 0x880
+-	0x0880: 0x0c5d, 0x0881: 0x0d09, 0x0882: 0x0d39, 0x0883: 0x0d59, 0x0884: 0x0dc9, 0x0885: 0x0e8d,
+-	0x0886: 0x0ea9, 0x0887: 0x0ed9, 0x0888: 0x0f2d, 0x0889: 0x0f4d, 0x088a: 0x0fc1, 0x088b: 0x10a1,
+-	0x088c: 0x10bd, 0x088d: 0x10c5, 0x088e: 0x10c1, 0x088f: 0x10c9, 0x0890: 0x10cd, 0x0891: 0x10d1,
+-	0x0892: 0x10e5, 0x0893: 0x10e9, 0x0894: 0x110d, 0x0895: 0x1121, 0x0896: 0x113d, 0x0897: 0x11a1,
+-	0x0898: 0x11a9, 0x0899: 0x11b1, 0x089a: 0x11c5, 0x089b: 0x11ed, 0x089c: 0x123d, 0x089d: 0x1271,
+-	0x089e: 0x1271, 0x089f: 0x12d9, 0x08a0: 0x1381, 0x08a1: 0x1399, 0x08a2: 0x13cd, 0x08a3: 0x13d1,
+-	0x08a4: 0x1415, 0x08a5: 0x1419, 0x08a6: 0x1471, 0x08a7: 0x1479, 0x08a8: 0x1549, 0x08a9: 0x158d,
+-	0x08aa: 0x15a5, 0x08ab: 0x0c0d, 0x08ac: 0x1780, 0x08ad: 0x1255,
+-	0x08b0: 0x0751, 0x08b1: 0x0855, 0x08b2: 0x0815, 0x08b3: 0x07bd, 0x08b4: 0x07fd, 0x08b5: 0x0829,
+-	0x08b6: 0x08b9, 0x08b7: 0x08d5, 0x08b8: 0x09bd, 0x08b9: 0x09a9, 0x08ba: 0x09b9, 0x08bb: 0x09d5,
+-	0x08bc: 0x0a21, 0x08bd: 0x0a31, 0x08be: 0x0a75, 0x08bf: 0x0a81,
+-	// Block 0x23, offset 0x8c0
+-	0x08c0: 0x0a9d, 0x08c1: 0x0aad, 0x08c2: 0x0b95, 0x08c3: 0x0b9d, 0x08c4: 0x0bcd, 0x08c5: 0x0bed,
+-	0x08c6: 0x0c1d, 0x08c7: 0x0c35, 0x08c8: 0x0c25, 0x08c9: 0x0c45, 0x08ca: 0x0c39, 0x08cb: 0x0c5d,
+-	0x08cc: 0x0c79, 0x08cd: 0x0cd1, 0x08ce: 0x0cdd, 0x08cf: 0x0ce5, 0x08d0: 0x0d0d, 0x08d1: 0x0d51,
+-	0x08d2: 0x0d81, 0x08d3: 0x0d85, 0x08d4: 0x0d99, 0x08d5: 0x0e19, 0x08d6: 0x0e29, 0x08d7: 0x0e81,
+-	0x08d8: 0x0ecd, 0x08d9: 0x0ec5, 0x08da: 0x0ed9, 0x08db: 0x0ef5, 0x08dc: 0x0f2d, 0x08dd: 0x1085,
+-	0x08de: 0x0f51, 0x08df: 0x0f85, 0x08e0: 0x0f91, 0x08e1: 0x0fd1, 0x08e2: 0x0fed, 0x08e3: 0x1011,
+-	0x08e4: 0x1035, 0x08e5: 0x1039, 0x08e6: 0x1055, 0x08e7: 0x1059, 0x08e8: 0x1069, 0x08e9: 0x107d,
+-	0x08ea: 0x1079, 0x08eb: 0x10a9, 0x08ec: 0x1125, 0x08ed: 0x113d, 0x08ee: 0x1155, 0x08ef: 0x118d,
+-	0x08f0: 0x11a1, 0x08f1: 0x11bd, 0x08f2: 0x11ed, 0x08f3: 0x12a1, 0x08f4: 0x12c9, 0x08f5: 0x133d,
+-	0x08f6: 0x1385, 0x08f7: 0x1391, 0x08f8: 0x1399, 0x08f9: 0x13b1, 0x08fa: 0x13c5, 0x08fb: 0x13b5,
+-	0x08fc: 0x13cd, 0x08fd: 0x13c9, 0x08fe: 0x13c1, 0x08ff: 0x13d1,
+-	// Block 0x24, offset 0x900
+-	0x0900: 0x13dd, 0x0901: 0x1419, 0x0902: 0x1455, 0x0903: 0x1485, 0x0904: 0x14b9, 0x0905: 0x14d9,
+-	0x0906: 0x1525, 0x0907: 0x1549, 0x0908: 0x1569, 0x0909: 0x157d, 0x090a: 0x158d, 0x090b: 0x1599,
+-	0x090c: 0x15a5, 0x090d: 0x15f9, 0x090e: 0x1699, 0x090f: 0x1717, 0x0910: 0x1712, 0x0911: 0x1744,
+-	0x0912: 0x0679, 0x0913: 0x06a1, 0x0914: 0x06a5, 0x0915: 0x17c6, 0x0916: 0x17f3, 0x0917: 0x186b,
+-	0x0918: 0x1685, 0x0919: 0x1695,
+-	// Block 0x25, offset 0x940
+-	0x0940: 0x076d, 0x0941: 0x0765, 0x0942: 0x0775, 0x0943: 0x16a9, 0x0944: 0x07b9, 0x0945: 0x07c9,
+-	0x0946: 0x07cd, 0x0947: 0x07d5, 0x0948: 0x07dd, 0x0949: 0x07e1, 0x094a: 0x07ed, 0x094b: 0x07e5,
+-	0x094c: 0x0625, 0x094d: 0x16bd, 0x094e: 0x0801, 0x094f: 0x0805, 0x0950: 0x0809, 0x0951: 0x0825,
+-	0x0952: 0x16ae, 0x0953: 0x0629, 0x0954: 0x0811, 0x0955: 0x0831, 0x0956: 0x16b8, 0x0957: 0x0841,
+-	0x0958: 0x0849, 0x0959: 0x07a9, 0x095a: 0x0851, 0x095b: 0x0855, 0x095c: 0x1893, 0x095d: 0x0871,
+-	0x095e: 0x0879, 0x095f: 0x0631, 0x0960: 0x0891, 0x0961: 0x0895, 0x0962: 0x089d, 0x0963: 0x08a1,
+-	0x0964: 0x0635, 0x0965: 0x08b9, 0x0966: 0x08bd, 0x0967: 0x08c9, 0x0968: 0x08d5, 0x0969: 0x08d9,
+-	0x096a: 0x08dd, 0x096b: 0x08e5, 0x096c: 0x0905, 0x096d: 0x0909, 0x096e: 0x0911, 0x096f: 0x0921,
+-	0x0970: 0x0929, 0x0971: 0x092d, 0x0972: 0x092d, 0x0973: 0x092d, 0x0974: 0x16cc, 0x0975: 0x0f05,
+-	0x0976: 0x0941, 0x0977: 0x0949, 0x0978: 0x16d1, 0x0979: 0x0955, 0x097a: 0x095d, 0x097b: 0x0965,
+-	0x097c: 0x098d, 0x097d: 0x0979, 0x097e: 0x0985, 0x097f: 0x0989,
+-	// Block 0x26, offset 0x980
+-	0x0980: 0x0991, 0x0981: 0x0999, 0x0982: 0x099d, 0x0983: 0x09a5, 0x0984: 0x09ad, 0x0985: 0x09b1,
+-	0x0986: 0x09b1, 0x0987: 0x09b9, 0x0988: 0x09c1, 0x0989: 0x09c5, 0x098a: 0x09d1, 0x098b: 0x09f5,
+-	0x098c: 0x09d9, 0x098d: 0x09f9, 0x098e: 0x09dd, 0x098f: 0x09e5, 0x0990: 0x087d, 0x0991: 0x0a41,
+-	0x0992: 0x0a09, 0x0993: 0x0a0d, 0x0994: 0x0a11, 0x0995: 0x0a05, 0x0996: 0x0a19, 0x0997: 0x0a15,
+-	0x0998: 0x0a2d, 0x0999: 0x16d6, 0x099a: 0x0a49, 0x099b: 0x0a4d, 0x099c: 0x0a55, 0x099d: 0x0a61,
+-	0x099e: 0x0a69, 0x099f: 0x0a85, 0x09a0: 0x16db, 0x09a1: 0x16e0, 0x09a2: 0x0a91, 0x09a3: 0x0a95,
+-	0x09a4: 0x0a99, 0x09a5: 0x0a8d, 0x09a6: 0x0aa1, 0x09a7: 0x0639, 0x09a8: 0x063d, 0x09a9: 0x0aa9,
+-	0x09aa: 0x0ab1, 0x09ab: 0x0ab1, 0x09ac: 0x16e5, 0x09ad: 0x0acd, 0x09ae: 0x0ad1, 0x09af: 0x0ad5,
+-	0x09b0: 0x0add, 0x09b1: 0x16ea, 0x09b2: 0x0ae5, 0x09b3: 0x0ae9, 0x09b4: 0x0bc1, 0x09b5: 0x0af1,
+-	0x09b6: 0x0641, 0x09b7: 0x0afd, 0x09b8: 0x0b0d, 0x09b9: 0x0b19, 0x09ba: 0x0b15, 0x09bb: 0x16f4,
+-	0x09bc: 0x0b21, 0x09bd: 0x16f9, 0x09be: 0x0b2d, 0x09bf: 0x0b29,
+-	// Block 0x27, offset 0x9c0
+-	0x09c0: 0x0b31, 0x09c1: 0x0b41, 0x09c2: 0x0b45, 0x09c3: 0x0645, 0x09c4: 0x0b55, 0x09c5: 0x0b5d,
+-	0x09c6: 0x0b61, 0x09c7: 0x0b65, 0x09c8: 0x0649, 0x09c9: 0x16fe, 0x09ca: 0x064d, 0x09cb: 0x0b81,
+-	0x09cc: 0x0b85, 0x09cd: 0x0b89, 0x09ce: 0x0b91, 0x09cf: 0x18c5, 0x09d0: 0x0ba9, 0x09d1: 0x1708,
+-	0x09d2: 0x1708, 0x09d3: 0x1249, 0x09d4: 0x0bb9, 0x09d5: 0x0bb9, 0x09d6: 0x0651, 0x09d7: 0x172b,
+-	0x09d8: 0x17fd, 0x09d9: 0x0bc9, 0x09da: 0x0bd1, 0x09db: 0x0655, 0x09dc: 0x0be5, 0x09dd: 0x0bf5,
+-	0x09de: 0x0bf9, 0x09df: 0x0c01, 0x09e0: 0x0c11, 0x09e1: 0x065d, 0x09e2: 0x0659, 0x09e3: 0x0c15,
+-	0x09e4: 0x170d, 0x09e5: 0x0c19, 0x09e6: 0x0c2d, 0x09e7: 0x0c31, 0x09e8: 0x0c35, 0x09e9: 0x0c31,
+-	0x09ea: 0x0c41, 0x09eb: 0x0c45, 0x09ec: 0x0c55, 0x09ed: 0x0c4d, 0x09ee: 0x0c51, 0x09ef: 0x0c59,
+-	0x09f0: 0x0c5d, 0x09f1: 0x0c61, 0x09f2: 0x0c6d, 0x09f3: 0x0c71, 0x09f4: 0x0c89, 0x09f5: 0x0c91,
+-	0x09f6: 0x0ca1, 0x09f7: 0x0cb5, 0x09f8: 0x171c, 0x09f9: 0x0cb1, 0x09fa: 0x0ca5, 0x09fb: 0x0cbd,
+-	0x09fc: 0x0cc5, 0x09fd: 0x0cd9, 0x09fe: 0x1721, 0x09ff: 0x0ce1,
+-	// Block 0x28, offset 0xa00
+-	0x0a00: 0x0cd5, 0x0a01: 0x0ccd, 0x0a02: 0x0661, 0x0a03: 0x0ce9, 0x0a04: 0x0cf1, 0x0a05: 0x0cf9,
+-	0x0a06: 0x0ced, 0x0a07: 0x0665, 0x0a08: 0x0d09, 0x0a09: 0x0d11, 0x0a0a: 0x1726, 0x0a0b: 0x0d3d,
+-	0x0a0c: 0x0d71, 0x0a0d: 0x0d4d, 0x0a0e: 0x0671, 0x0a0f: 0x0d59, 0x0a10: 0x066d, 0x0a11: 0x0669,
+-	0x0a12: 0x0835, 0x0a13: 0x0839, 0x0a14: 0x0d75, 0x0a15: 0x0d5d, 0x0a16: 0x121d, 0x0a17: 0x06d5,
+-	0x0a18: 0x0d81, 0x0a19: 0x0d85, 0x0a1a: 0x0d89, 0x0a1b: 0x0d9d, 0x0a1c: 0x0d95, 0x0a1d: 0x173f,
+-	0x0a1e: 0x0675, 0x0a1f: 0x0db1, 0x0a20: 0x0da5, 0x0a21: 0x0dc1, 0x0a22: 0x0dc9, 0x0a23: 0x1749,
+-	0x0a24: 0x0dcd, 0x0a25: 0x0db9, 0x0a26: 0x0dd5, 0x0a27: 0x0679, 0x0a28: 0x0dd9, 0x0a29: 0x0ddd,
+-	0x0a2a: 0x0de1, 0x0a2b: 0x0ded, 0x0a2c: 0x174e, 0x0a2d: 0x0df5, 0x0a2e: 0x067d, 0x0a2f: 0x0e01,
+-	0x0a30: 0x1753, 0x0a31: 0x0e05, 0x0a32: 0x0681, 0x0a33: 0x0e11, 0x0a34: 0x0e1d, 0x0a35: 0x0e29,
+-	0x0a36: 0x0e2d, 0x0a37: 0x1758, 0x0a38: 0x16ef, 0x0a39: 0x175d, 0x0a3a: 0x0e4d, 0x0a3b: 0x1762,
+-	0x0a3c: 0x0e59, 0x0a3d: 0x0e61, 0x0a3e: 0x0e51, 0x0a3f: 0x0e6d,
+-	// Block 0x29, offset 0xa40
+-	0x0a40: 0x0e7d, 0x0a41: 0x0e8d, 0x0a42: 0x0e81, 0x0a43: 0x0e85, 0x0a44: 0x0e91, 0x0a45: 0x0e95,
+-	0x0a46: 0x1767, 0x0a47: 0x0e79, 0x0a48: 0x0ead, 0x0a49: 0x0eb1, 0x0a4a: 0x0685, 0x0a4b: 0x0ec5,
+-	0x0a4c: 0x0ec1, 0x0a4d: 0x176c, 0x0a4e: 0x0ea5, 0x0a4f: 0x0ee1, 0x0a50: 0x1771, 0x0a51: 0x1776,
+-	0x0a52: 0x0ee5, 0x0a53: 0x0ef9, 0x0a54: 0x0ef5, 0x0a55: 0x0ef1, 0x0a56: 0x0689, 0x0a57: 0x0efd,
+-	0x0a58: 0x0f0d, 0x0a59: 0x0f09, 0x0a5a: 0x0f15, 0x0a5b: 0x16b3, 0x0a5c: 0x0f25, 0x0a5d: 0x177b,
+-	0x0a5e: 0x0f31, 0x0a5f: 0x1785, 0x0a60: 0x0f45, 0x0a61: 0x0f51, 0x0a62: 0x0f65, 0x0a63: 0x178a,
+-	0x0a64: 0x0f79, 0x0a65: 0x0f7d, 0x0a66: 0x178f, 0x0a67: 0x1794, 0x0a68: 0x0f99, 0x0a69: 0x0fa9,
+-	0x0a6a: 0x068d, 0x0a6b: 0x0fad, 0x0a6c: 0x0691, 0x0a6d: 0x0691, 0x0a6e: 0x0fc5, 0x0a6f: 0x0fc9,
+-	0x0a70: 0x0fd1, 0x0a71: 0x0fd5, 0x0a72: 0x0fe1, 0x0a73: 0x0695, 0x0a74: 0x0ff9, 0x0a75: 0x1799,
+-	0x0a76: 0x1015, 0x0a77: 0x179e, 0x0a78: 0x1021, 0x0a79: 0x1703, 0x0a7a: 0x1031, 0x0a7b: 0x17a3,
+-	0x0a7c: 0x17a8, 0x0a7d: 0x17ad, 0x0a7e: 0x0699, 0x0a7f: 0x069d,
+-	// Block 0x2a, offset 0xa80
+-	0x0a80: 0x1069, 0x0a81: 0x17b7, 0x0a82: 0x17b2, 0x0a83: 0x17bc, 0x0a84: 0x17c1, 0x0a85: 0x1071,
+-	0x0a86: 0x1075, 0x0a87: 0x1075, 0x0a88: 0x107d, 0x0a89: 0x06a5, 0x0a8a: 0x1081, 0x0a8b: 0x06a9,
+-	0x0a8c: 0x06ad, 0x0a8d: 0x17cb, 0x0a8e: 0x1095, 0x0a8f: 0x109d, 0x0a90: 0x10a9, 0x0a91: 0x06b1,
+-	0x0a92: 0x17d0, 0x0a93: 0x10cd, 0x0a94: 0x17d5, 0x0a95: 0x17da, 0x0a96: 0x10ed, 0x0a97: 0x1105,
+-	0x0a98: 0x06b5, 0x0a99: 0x110d, 0x0a9a: 0x1111, 0x0a9b: 0x1115, 0x0a9c: 0x17df, 0x0a9d: 0x17e4,
+-	0x0a9e: 0x17e4, 0x0a9f: 0x112d, 0x0aa0: 0x06b9, 0x0aa1: 0x17e9, 0x0aa2: 0x1141, 0x0aa3: 0x1145,
+-	0x0aa4: 0x06bd, 0x0aa5: 0x17ee, 0x0aa6: 0x1161, 0x0aa7: 0x06c1, 0x0aa8: 0x1171, 0x0aa9: 0x1169,
+-	0x0aaa: 0x1179, 0x0aab: 0x17f8, 0x0aac: 0x1191, 0x0aad: 0x06c5, 0x0aae: 0x119d, 0x0aaf: 0x11a5,
+-	0x0ab0: 0x11b5, 0x0ab1: 0x06c9, 0x0ab2: 0x1802, 0x0ab3: 0x1807, 0x0ab4: 0x06cd, 0x0ab5: 0x180c,
+-	0x0ab6: 0x11cd, 0x0ab7: 0x1811, 0x0ab8: 0x11d9, 0x0ab9: 0x11e5, 0x0aba: 0x11ed, 0x0abb: 0x1816,
+-	0x0abc: 0x181b, 0x0abd: 0x1201, 0x0abe: 0x1820, 0x0abf: 0x1209,
+-	// Block 0x2b, offset 0xac0
+-	0x0ac0: 0x1730, 0x0ac1: 0x06d1, 0x0ac2: 0x1221, 0x0ac3: 0x1225, 0x0ac4: 0x06d9, 0x0ac5: 0x1229,
+-	0x0ac6: 0x0aa5, 0x0ac7: 0x1825, 0x0ac8: 0x182a, 0x0ac9: 0x1735, 0x0aca: 0x173a, 0x0acb: 0x1249,
+-	0x0acc: 0x124d, 0x0acd: 0x1465, 0x0ace: 0x06dd, 0x0acf: 0x1279, 0x0ad0: 0x1275, 0x0ad1: 0x127d,
+-	0x0ad2: 0x08b1, 0x0ad3: 0x1281, 0x0ad4: 0x1285, 0x0ad5: 0x1289, 0x0ad6: 0x1291, 0x0ad7: 0x182f,
+-	0x0ad8: 0x128d, 0x0ad9: 0x1295, 0x0ada: 0x12a9, 0x0adb: 0x12ad, 0x0adc: 0x1299, 0x0add: 0x12b1,
+-	0x0ade: 0x12c5, 0x0adf: 0x12d9, 0x0ae0: 0x12a5, 0x0ae1: 0x12b9, 0x0ae2: 0x12bd, 0x0ae3: 0x12c1,
+-	0x0ae4: 0x1834, 0x0ae5: 0x183e, 0x0ae6: 0x1839, 0x0ae7: 0x06e1, 0x0ae8: 0x12e1, 0x0ae9: 0x12e5,
+-	0x0aea: 0x12ed, 0x0aeb: 0x1852, 0x0aec: 0x12f1, 0x0aed: 0x1843, 0x0aee: 0x06e5, 0x0aef: 0x06e9,
+-	0x0af0: 0x1848, 0x0af1: 0x184d, 0x0af2: 0x06ed, 0x0af3: 0x1311, 0x0af4: 0x1315, 0x0af5: 0x1319,
+-	0x0af6: 0x131d, 0x0af7: 0x1329, 0x0af8: 0x1325, 0x0af9: 0x1331, 0x0afa: 0x132d, 0x0afb: 0x133d,
+-	0x0afc: 0x1335, 0x0afd: 0x1339, 0x0afe: 0x1341, 0x0aff: 0x06f1,
+-	// Block 0x2c, offset 0xb00
+-	0x0b00: 0x1349, 0x0b01: 0x134d, 0x0b02: 0x06f5, 0x0b03: 0x135d, 0x0b04: 0x1361, 0x0b05: 0x1857,
+-	0x0b06: 0x136d, 0x0b07: 0x1371, 0x0b08: 0x06f9, 0x0b09: 0x137d, 0x0b0a: 0x062d, 0x0b0b: 0x185c,
+-	0x0b0c: 0x1861, 0x0b0d: 0x06fd, 0x0b0e: 0x0701, 0x0b0f: 0x13a9, 0x0b10: 0x13c1, 0x0b11: 0x13dd,
+-	0x0b12: 0x13ed, 0x0b13: 0x1866, 0x0b14: 0x1401, 0x0b15: 0x1405, 0x0b16: 0x141d, 0x0b17: 0x1429,
+-	0x0b18: 0x1870, 0x0b19: 0x16c2, 0x0b1a: 0x1435, 0x0b1b: 0x1431, 0x0b1c: 0x143d, 0x0b1d: 0x16c7,
+-	0x0b1e: 0x1449, 0x0b1f: 0x1455, 0x0b20: 0x1875, 0x0b21: 0x187a, 0x0b22: 0x1495, 0x0b23: 0x14a1,
+-	0x0b24: 0x14a9, 0x0b25: 0x187f, 0x0b26: 0x14ad, 0x0b27: 0x14d5, 0x0b28: 0x14e1, 0x0b29: 0x14e5,
+-	0x0b2a: 0x14dd, 0x0b2b: 0x14f1, 0x0b2c: 0x14f5, 0x0b2d: 0x1884, 0x0b2e: 0x1501, 0x0b2f: 0x0705,
+-	0x0b30: 0x1509, 0x0b31: 0x1889, 0x0b32: 0x0709, 0x0b33: 0x1541, 0x0b34: 0x0b35, 0x0b35: 0x1559,
+-	0x0b36: 0x188e, 0x0b37: 0x1898, 0x0b38: 0x070d, 0x0b39: 0x0711, 0x0b3a: 0x1581, 0x0b3b: 0x189d,
+-	0x0b3c: 0x0715, 0x0b3d: 0x18a2, 0x0b3e: 0x1599, 0x0b3f: 0x1599,
+-	// Block 0x2d, offset 0xb40
+-	0x0b40: 0x15a1, 0x0b41: 0x18a7, 0x0b42: 0x15b9, 0x0b43: 0x0719, 0x0b44: 0x15c9, 0x0b45: 0x15d5,
+-	0x0b46: 0x15dd, 0x0b47: 0x15e5, 0x0b48: 0x071d, 0x0b49: 0x18ac, 0x0b4a: 0x15f9, 0x0b4b: 0x1615,
+-	0x0b4c: 0x1621, 0x0b4d: 0x0721, 0x0b4e: 0x0725, 0x0b4f: 0x1625, 0x0b50: 0x18b1, 0x0b51: 0x0729,
+-	0x0b52: 0x18b6, 0x0b53: 0x18bb, 0x0b54: 0x18c0, 0x0b55: 0x1649, 0x0b56: 0x072d, 0x0b57: 0x165d,
+-	0x0b58: 0x1665, 0x0b59: 0x1669, 0x0b5a: 0x1671, 0x0b5b: 0x1679, 0x0b5c: 0x1681, 0x0b5d: 0x18ca,
+-}
+-
+-// nfcSparseOffset: 98 entries, 196 bytes
+-var nfcSparseOffset = []uint16{0x0, 0x2, 0x6, 0x8, 0x13, 0x23, 0x25, 0x2a, 0x35, 0x44, 0x51, 0x59, 0x5d, 0x62, 0x64, 0x73, 0x7b, 0x82, 0x85, 0x8d, 0x91, 0x95, 0x97, 0x99, 0xa2, 0xa6, 0xad, 0xb2, 0xb5, 0xbf, 0xc1, 0xc8, 0xd0, 0xd3, 0xd5, 0xd7, 0xd9, 0xde, 0xed, 0xf9, 0xfb, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10b, 0x10d, 0x110, 0x113, 0x115, 0x118, 0x11b, 0x11f, 0x128, 0x12a, 0x12d, 0x12f, 0x139, 0x148, 0x14a, 0x158, 0x15b, 0x161, 0x167, 0x172, 0x176, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x186, 0x189, 0x18b, 0x18d, 0x18f, 0x192, 0x194, 0x196, 0x198, 0x19a, 0x1a0, 0x1a3, 0x1a5, 0x1a7, 0x1a9, 0x1b7, 0x1c0, 0x1c2, 0x1c4, 0x1ca, 0x1d2, 0x1d9, 0x1dc, 0x1e9, 0x1f3, 0x1f5}
+-
+-// nfcSparseValues: 503 entries, 2012 bytes
+-var nfcSparseValues = [503]valueRange{
+-	// Block 0x0, offset 0x1
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8800, lo: 0xa8, hi: 0xa8},
+-	// Block 0x1, offset 0x2
+-	{value: 0x0091, lo: 0x03},
+-	{value: 0x46c8, lo: 0xa0, hi: 0xa1},
+-	{value: 0x46fa, lo: 0xaf, hi: 0xb0},
+-	{value: 0x8800, lo: 0xb7, hi: 0xb7},
+-	// Block 0x2, offset 0x3
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	// Block 0x3, offset 0x4
+-	{value: 0x0006, lo: 0x0a},
+-	{value: 0x8800, lo: 0x81, hi: 0x81},
+-	{value: 0x8800, lo: 0x85, hi: 0x85},
+-	{value: 0x8800, lo: 0x89, hi: 0x89},
+-	{value: 0x4826, lo: 0x8a, hi: 0x8a},
+-	{value: 0x4844, lo: 0x8b, hi: 0x8b},
+-	{value: 0x36b1, lo: 0x8c, hi: 0x8c},
+-	{value: 0x36c9, lo: 0x8d, hi: 0x8d},
+-	{value: 0x485c, lo: 0x8e, hi: 0x8e},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x36e7, lo: 0x93, hi: 0x94},
+-	// Block 0x4, offset 0x5
+-	{value: 0x0000, lo: 0x0f},
+-	{value: 0x8800, lo: 0x83, hi: 0x83},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x8800, lo: 0x8b, hi: 0x8b},
+-	{value: 0x8800, lo: 0x8d, hi: 0x8d},
+-	{value: 0x378f, lo: 0x90, hi: 0x90},
+-	{value: 0x379b, lo: 0x91, hi: 0x91},
+-	{value: 0x3789, lo: 0x93, hi: 0x93},
+-	{value: 0x8800, lo: 0x96, hi: 0x96},
+-	{value: 0x3801, lo: 0x97, hi: 0x97},
+-	{value: 0x37cb, lo: 0x9c, hi: 0x9c},
+-	{value: 0x37b3, lo: 0x9d, hi: 0x9d},
+-	{value: 0x37dd, lo: 0x9e, hi: 0x9e},
+-	{value: 0x8800, lo: 0xb4, hi: 0xb5},
+-	{value: 0x3807, lo: 0xb6, hi: 0xb6},
+-	{value: 0x380d, lo: 0xb7, hi: 0xb7},
+-	// Block 0x5, offset 0x6
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x83, hi: 0x87},
+-	// Block 0x6, offset 0x7
+-	{value: 0x0001, lo: 0x04},
+-	{value: 0x8018, lo: 0x81, hi: 0x82},
+-	{value: 0x80e6, lo: 0x84, hi: 0x84},
+-	{value: 0x80dc, lo: 0x85, hi: 0x85},
+-	{value: 0x8012, lo: 0x87, hi: 0x87},
+-	// Block 0x7, offset 0x8
+-	{value: 0x0000, lo: 0x0a},
+-	{value: 0x80e6, lo: 0x90, hi: 0x97},
+-	{value: 0x801e, lo: 0x98, hi: 0x98},
+-	{value: 0x801f, lo: 0x99, hi: 0x99},
+-	{value: 0x8020, lo: 0x9a, hi: 0x9a},
+-	{value: 0x382b, lo: 0xa2, hi: 0xa2},
+-	{value: 0x3831, lo: 0xa3, hi: 0xa3},
+-	{value: 0x383d, lo: 0xa4, hi: 0xa4},
+-	{value: 0x3837, lo: 0xa5, hi: 0xa5},
+-	{value: 0x3843, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8800, lo: 0xa7, hi: 0xa7},
+-	// Block 0x8, offset 0x9
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x3855, lo: 0x80, hi: 0x80},
+-	{value: 0x8800, lo: 0x81, hi: 0x81},
+-	{value: 0x3849, lo: 0x82, hi: 0x82},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x384f, lo: 0x93, hi: 0x93},
+-	{value: 0x8800, lo: 0x95, hi: 0x95},
+-	{value: 0x80e6, lo: 0x96, hi: 0x9c},
+-	{value: 0x80e6, lo: 0x9f, hi: 0xa2},
+-	{value: 0x80dc, lo: 0xa3, hi: 0xa3},
+-	{value: 0x80e6, lo: 0xa4, hi: 0xa4},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xaa, hi: 0xaa},
+-	{value: 0x80e6, lo: 0xab, hi: 0xac},
+-	{value: 0x80dc, lo: 0xad, hi: 0xad},
+-	// Block 0x9, offset 0xa
+-	{value: 0x0000, lo: 0x0c},
+-	{value: 0x8024, lo: 0x91, hi: 0x91},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	{value: 0x80dc, lo: 0xb1, hi: 0xb1},
+-	{value: 0x80e6, lo: 0xb2, hi: 0xb3},
+-	{value: 0x80dc, lo: 0xb4, hi: 0xb4},
+-	{value: 0x80e6, lo: 0xb5, hi: 0xb6},
+-	{value: 0x80dc, lo: 0xb7, hi: 0xb9},
+-	{value: 0x80e6, lo: 0xba, hi: 0xba},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbc},
+-	{value: 0x80e6, lo: 0xbd, hi: 0xbd},
+-	{value: 0x80dc, lo: 0xbe, hi: 0xbe},
+-	{value: 0x80e6, lo: 0xbf, hi: 0xbf},
+-	// Block 0xa, offset 0xb
+-	{value: 0x000a, lo: 0x07},
+-	{value: 0x80e6, lo: 0x80, hi: 0x80},
+-	{value: 0x80e6, lo: 0x81, hi: 0x81},
+-	{value: 0x80dc, lo: 0x82, hi: 0x83},
+-	{value: 0x80dc, lo: 0x84, hi: 0x85},
+-	{value: 0x80dc, lo: 0x86, hi: 0x87},
+-	{value: 0x80dc, lo: 0x88, hi: 0x89},
+-	{value: 0x80e6, lo: 0x8a, hi: 0x8a},
+-	// Block 0xb, offset 0xc
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x80e6, lo: 0xab, hi: 0xb1},
+-	{value: 0x80dc, lo: 0xb2, hi: 0xb2},
+-	{value: 0x80e6, lo: 0xb3, hi: 0xb3},
+-	// Block 0xc, offset 0xd
+-	{value: 0x0000, lo: 0x04},
+-	{value: 0x80e6, lo: 0x96, hi: 0x99},
+-	{value: 0x80e6, lo: 0x9b, hi: 0xa3},
+-	{value: 0x80e6, lo: 0xa5, hi: 0xa7},
+-	{value: 0x80e6, lo: 0xa9, hi: 0xad},
+-	// Block 0xd, offset 0xe
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x99, hi: 0x9b},
+-	// Block 0xe, offset 0xf
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x80e6, lo: 0xa4, hi: 0xa5},
+-	{value: 0x80dc, lo: 0xa6, hi: 0xa6},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xa9, hi: 0xa9},
+-	{value: 0x80e6, lo: 0xaa, hi: 0xac},
+-	{value: 0x80dc, lo: 0xad, hi: 0xaf},
+-	{value: 0x801b, lo: 0xb0, hi: 0xb0},
+-	{value: 0x801c, lo: 0xb1, hi: 0xb1},
+-	{value: 0x801d, lo: 0xb2, hi: 0xb2},
+-	{value: 0x80e6, lo: 0xb3, hi: 0xb5},
+-	{value: 0x80dc, lo: 0xb6, hi: 0xb6},
+-	{value: 0x80e6, lo: 0xb7, hi: 0xb8},
+-	{value: 0x80dc, lo: 0xb9, hi: 0xba},
+-	{value: 0x80e6, lo: 0xbb, hi: 0xbe},
+-	// Block 0xf, offset 0x10
+-	{value: 0x0000, lo: 0x07},
+-	{value: 0x8800, lo: 0xa8, hi: 0xa8},
+-	{value: 0x3ec2, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8800, lo: 0xb0, hi: 0xb0},
+-	{value: 0x3eca, lo: 0xb1, hi: 0xb1},
+-	{value: 0x8800, lo: 0xb3, hi: 0xb3},
+-	{value: 0x3ed2, lo: 0xb4, hi: 0xb4},
+-	{value: 0x8607, lo: 0xbc, hi: 0xbc},
+-	// Block 0x10, offset 0x11
+-	{value: 0x0008, lo: 0x06},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80e6, lo: 0x91, hi: 0x91},
+-	{value: 0x80dc, lo: 0x92, hi: 0x92},
+-	{value: 0x80e6, lo: 0x93, hi: 0x93},
+-	{value: 0x80e6, lo: 0x94, hi: 0x94},
+-	{value: 0x4502, lo: 0x98, hi: 0x9f},
+-	// Block 0x11, offset 0x12
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x12, offset 0x13
+-	{value: 0x0007, lo: 0x07},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x18cf, lo: 0x8b, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	{value: 0x4542, lo: 0x9c, hi: 0x9c},
+-	{value: 0x454a, lo: 0x9d, hi: 0x9d},
+-	{value: 0x4552, lo: 0x9f, hi: 0x9f},
+-	// Block 0x13, offset 0x14
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x457a, lo: 0xb3, hi: 0xb3},
+-	{value: 0x4582, lo: 0xb6, hi: 0xb6},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	// Block 0x14, offset 0x15
+-	{value: 0x0008, lo: 0x03},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x455a, lo: 0x99, hi: 0x9b},
+-	{value: 0x4572, lo: 0x9e, hi: 0x9e},
+-	// Block 0x15, offset 0x16
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	// Block 0x16, offset 0x17
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	// Block 0x17, offset 0x18
+-	{value: 0x0000, lo: 0x08},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x18e4, lo: 0x88, hi: 0x88},
+-	{value: 0x18dd, lo: 0x8b, hi: 0x8b},
+-	{value: 0x18eb, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x96, hi: 0x97},
+-	{value: 0x458a, lo: 0x9c, hi: 0x9c},
+-	{value: 0x4592, lo: 0x9d, hi: 0x9d},
+-	// Block 0x18, offset 0x19
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x18f2, lo: 0x94, hi: 0x94},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x19, offset 0x1a
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x8800, lo: 0x86, hi: 0x87},
+-	{value: 0x18f9, lo: 0x8a, hi: 0x8a},
+-	{value: 0x1907, lo: 0x8b, hi: 0x8b},
+-	{value: 0x1900, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	// Block 0x1a, offset 0x1b
+-	{value: 0x0607, lo: 0x04},
+-	{value: 0x8800, lo: 0x86, hi: 0x86},
+-	{value: 0x3eda, lo: 0x88, hi: 0x88},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8054, lo: 0x95, hi: 0x96},
+-	// Block 0x1b, offset 0x1c
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	{value: 0x8800, lo: 0xbf, hi: 0xbf},
+-	// Block 0x1c, offset 0x1d
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x190e, lo: 0x80, hi: 0x80},
+-	{value: 0x8600, lo: 0x82, hi: 0x82},
+-	{value: 0x8800, lo: 0x86, hi: 0x86},
+-	{value: 0x1915, lo: 0x87, hi: 0x87},
+-	{value: 0x191c, lo: 0x88, hi: 0x88},
+-	{value: 0x2e66, lo: 0x8a, hi: 0x8a},
+-	{value: 0x19a5, lo: 0x8b, hi: 0x8b},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x95, hi: 0x96},
+-	// Block 0x1d, offset 0x1e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x1e, offset 0x1f
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x8800, lo: 0x86, hi: 0x87},
+-	{value: 0x1923, lo: 0x8a, hi: 0x8a},
+-	{value: 0x1931, lo: 0x8b, hi: 0x8b},
+-	{value: 0x192a, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	// Block 0x1f, offset 0x20
+-	{value: 0x0007, lo: 0x07},
+-	{value: 0x8609, lo: 0x8a, hi: 0x8a},
+-	{value: 0x8600, lo: 0x8f, hi: 0x8f},
+-	{value: 0x8800, lo: 0x99, hi: 0x99},
+-	{value: 0x3ee2, lo: 0x9a, hi: 0x9a},
+-	{value: 0x2e6d, lo: 0x9c, hi: 0x9d},
+-	{value: 0x1938, lo: 0x9e, hi: 0x9e},
+-	{value: 0x8600, lo: 0x9f, hi: 0x9f},
+-	// Block 0x20, offset 0x21
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8067, lo: 0xb8, hi: 0xb9},
+-	{value: 0x8009, lo: 0xba, hi: 0xba},
+-	// Block 0x21, offset 0x22
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x806b, lo: 0x88, hi: 0x8b},
+-	// Block 0x22, offset 0x23
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8076, lo: 0xb8, hi: 0xb9},
+-	// Block 0x23, offset 0x24
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x807a, lo: 0x88, hi: 0x8b},
+-	// Block 0x24, offset 0x25
+-	{value: 0x0000, lo: 0x04},
+-	{value: 0x80dc, lo: 0x98, hi: 0x99},
+-	{value: 0x80dc, lo: 0xb5, hi: 0xb5},
+-	{value: 0x80dc, lo: 0xb7, hi: 0xb7},
+-	{value: 0x80d8, lo: 0xb9, hi: 0xb9},
+-	// Block 0x25, offset 0x26
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x2786, lo: 0x83, hi: 0x83},
+-	{value: 0x278d, lo: 0x8d, hi: 0x8d},
+-	{value: 0x2794, lo: 0x92, hi: 0x92},
+-	{value: 0x279b, lo: 0x97, hi: 0x97},
+-	{value: 0x27a2, lo: 0x9c, hi: 0x9c},
+-	{value: 0x277f, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8081, lo: 0xb1, hi: 0xb1},
+-	{value: 0x8082, lo: 0xb2, hi: 0xb2},
+-	{value: 0x49b6, lo: 0xb3, hi: 0xb3},
+-	{value: 0x8084, lo: 0xb4, hi: 0xb4},
+-	{value: 0x49bf, lo: 0xb5, hi: 0xb5},
+-	{value: 0x459a, lo: 0xb6, hi: 0xb6},
+-	{value: 0x45a2, lo: 0xb8, hi: 0xb8},
+-	{value: 0x8082, lo: 0xba, hi: 0xbd},
+-	// Block 0x26, offset 0x27
+-	{value: 0x0000, lo: 0x0b},
+-	{value: 0x8082, lo: 0x80, hi: 0x80},
+-	{value: 0x49c8, lo: 0x81, hi: 0x81},
+-	{value: 0x80e6, lo: 0x82, hi: 0x83},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0x86, hi: 0x87},
+-	{value: 0x27b0, lo: 0x93, hi: 0x93},
+-	{value: 0x27b7, lo: 0x9d, hi: 0x9d},
+-	{value: 0x27be, lo: 0xa2, hi: 0xa2},
+-	{value: 0x27c5, lo: 0xa7, hi: 0xa7},
+-	{value: 0x27cc, lo: 0xac, hi: 0xac},
+-	{value: 0x27a9, lo: 0xb9, hi: 0xb9},
+-	// Block 0x27, offset 0x28
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x86, hi: 0x86},
+-	// Block 0x28, offset 0x29
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x8800, lo: 0xa5, hi: 0xa5},
+-	{value: 0x193f, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8600, lo: 0xae, hi: 0xae},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	{value: 0x8009, lo: 0xb9, hi: 0xba},
+-	// Block 0x29, offset 0x2a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x8d, hi: 0x8d},
+-	// Block 0x2a, offset 0x2b
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8800, lo: 0x80, hi: 0x92},
+-	// Block 0x2b, offset 0x2c
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8e00, lo: 0xa1, hi: 0xb5},
+-	// Block 0x2c, offset 0x2d
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0xa8, hi: 0xbf},
+-	// Block 0x2d, offset 0x2e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0x80, hi: 0x82},
+-	// Block 0x2e, offset 0x2f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x9d, hi: 0x9f},
+-	// Block 0x2f, offset 0x30
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x94, hi: 0x94},
+-	{value: 0x8009, lo: 0xb4, hi: 0xb4},
+-	// Block 0x30, offset 0x31
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x92, hi: 0x92},
+-	{value: 0x80e6, lo: 0x9d, hi: 0x9d},
+-	// Block 0x31, offset 0x32
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e4, lo: 0xa9, hi: 0xa9},
+-	// Block 0x32, offset 0x33
+-	{value: 0x0008, lo: 0x02},
+-	{value: 0x80de, lo: 0xb9, hi: 0xba},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbb},
+-	// Block 0x33, offset 0x34
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0x97, hi: 0x97},
+-	{value: 0x80dc, lo: 0x98, hi: 0x98},
+-	// Block 0x34, offset 0x35
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x8009, lo: 0xa0, hi: 0xa0},
+-	{value: 0x80e6, lo: 0xb5, hi: 0xbc},
+-	{value: 0x80dc, lo: 0xbf, hi: 0xbf},
+-	// Block 0x35, offset 0x36
+-	{value: 0x0000, lo: 0x08},
+-	{value: 0x197e, lo: 0x80, hi: 0x80},
+-	{value: 0x1985, lo: 0x81, hi: 0x81},
+-	{value: 0x8800, lo: 0x82, hi: 0x82},
+-	{value: 0x198c, lo: 0x83, hi: 0x83},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0xab, hi: 0xab},
+-	{value: 0x80dc, lo: 0xac, hi: 0xac},
+-	{value: 0x80e6, lo: 0xad, hi: 0xb3},
+-	// Block 0x36, offset 0x37
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0xaa, hi: 0xab},
+-	// Block 0x37, offset 0x38
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8009, lo: 0xb2, hi: 0xb3},
+-	// Block 0x38, offset 0x39
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	// Block 0x39, offset 0x3a
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x80e6, lo: 0x90, hi: 0x92},
+-	{value: 0x8001, lo: 0x94, hi: 0x94},
+-	{value: 0x80dc, lo: 0x95, hi: 0x99},
+-	{value: 0x80e6, lo: 0x9a, hi: 0x9b},
+-	{value: 0x80dc, lo: 0x9c, hi: 0x9f},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xa0},
+-	{value: 0x8001, lo: 0xa2, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xad, hi: 0xad},
+-	{value: 0x80e6, lo: 0xb4, hi: 0xb4},
+-	// Block 0x3a, offset 0x3b
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x80e6, lo: 0x80, hi: 0x81},
+-	{value: 0x80dc, lo: 0x82, hi: 0x82},
+-	{value: 0x80e6, lo: 0x83, hi: 0x89},
+-	{value: 0x80dc, lo: 0x8a, hi: 0x8a},
+-	{value: 0x80e6, lo: 0x8b, hi: 0x8c},
+-	{value: 0x80ea, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80d6, lo: 0x8e, hi: 0x8e},
+-	{value: 0x80dc, lo: 0x8f, hi: 0x8f},
+-	{value: 0x80ca, lo: 0x90, hi: 0x90},
+-	{value: 0x80e6, lo: 0x91, hi: 0xa6},
+-	{value: 0x80e9, lo: 0xbc, hi: 0xbc},
+-	{value: 0x80dc, lo: 0xbd, hi: 0xbd},
+-	{value: 0x80e6, lo: 0xbe, hi: 0xbe},
+-	{value: 0x80dc, lo: 0xbf, hi: 0xbf},
+-	// Block 0x3b, offset 0x3c
+-	{value: 0x0004, lo: 0x01},
+-	{value: 0x04a5, lo: 0x80, hi: 0x81},
+-	// Block 0x3c, offset 0x3d
+-	{value: 0x0000, lo: 0x0d},
+-	{value: 0x80e6, lo: 0x90, hi: 0x91},
+-	{value: 0x8001, lo: 0x92, hi: 0x93},
+-	{value: 0x80e6, lo: 0x94, hi: 0x97},
+-	{value: 0x8001, lo: 0x98, hi: 0x9a},
+-	{value: 0x80e6, lo: 0x9b, hi: 0x9c},
+-	{value: 0x80e6, lo: 0xa1, hi: 0xa1},
+-	{value: 0x8001, lo: 0xa5, hi: 0xa6},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa7},
+-	{value: 0x80dc, lo: 0xa8, hi: 0xa8},
+-	{value: 0x80e6, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8001, lo: 0xaa, hi: 0xab},
+-	{value: 0x80dc, lo: 0xac, hi: 0xaf},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	// Block 0x3d, offset 0x3e
+-	{value: 0x4261, lo: 0x02},
+-	{value: 0x01b8, lo: 0xa6, hi: 0xa6},
+-	{value: 0x0057, lo: 0xaa, hi: 0xab},
+-	// Block 0x3e, offset 0x3f
+-	{value: 0x0007, lo: 0x05},
+-	{value: 0x8800, lo: 0x90, hi: 0x90},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x8800, lo: 0x94, hi: 0x94},
+-	{value: 0x3ba3, lo: 0x9a, hi: 0x9b},
+-	{value: 0x3bb1, lo: 0xae, hi: 0xae},
+-	// Block 0x3f, offset 0x40
+-	{value: 0x000e, lo: 0x05},
+-	{value: 0x3bb8, lo: 0x8d, hi: 0x8e},
+-	{value: 0x3bbf, lo: 0x8f, hi: 0x8f},
+-	{value: 0x8800, lo: 0x90, hi: 0x90},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x8800, lo: 0x94, hi: 0x94},
+-	// Block 0x40, offset 0x41
+-	{value: 0x4c1e, lo: 0x0a},
+-	{value: 0x8800, lo: 0x83, hi: 0x83},
+-	{value: 0x3bcd, lo: 0x84, hi: 0x84},
+-	{value: 0x8800, lo: 0x88, hi: 0x88},
+-	{value: 0x3bd4, lo: 0x89, hi: 0x89},
+-	{value: 0x8800, lo: 0x8b, hi: 0x8b},
+-	{value: 0x3bdb, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8800, lo: 0xa3, hi: 0xa3},
+-	{value: 0x3be2, lo: 0xa4, hi: 0xa5},
+-	{value: 0x3be9, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8800, lo: 0xbc, hi: 0xbc},
+-	// Block 0x41, offset 0x42
+-	{value: 0x0007, lo: 0x03},
+-	{value: 0x3c52, lo: 0xa0, hi: 0xa1},
+-	{value: 0x3c7c, lo: 0xa2, hi: 0xa3},
+-	{value: 0x3ca6, lo: 0xaa, hi: 0xad},
+-	// Block 0x42, offset 0x43
+-	{value: 0x0004, lo: 0x01},
+-	{value: 0x04fd, lo: 0xa9, hi: 0xaa},
+-	// Block 0x43, offset 0x44
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x44c3, lo: 0x9c, hi: 0x9c},
+-	// Block 0x44, offset 0x45
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xaf, hi: 0xb1},
+-	// Block 0x45, offset 0x46
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0xbf, hi: 0xbf},
+-	// Block 0x46, offset 0x47
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xbf},
+-	// Block 0x47, offset 0x48
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x80da, lo: 0xaa, hi: 0xaa},
+-	{value: 0x80e4, lo: 0xab, hi: 0xab},
+-	{value: 0x80e8, lo: 0xac, hi: 0xac},
+-	{value: 0x80de, lo: 0xad, hi: 0xad},
+-	{value: 0x80e0, lo: 0xae, hi: 0xaf},
+-	// Block 0x48, offset 0x49
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0xaf, hi: 0xaf},
+-	{value: 0x80e6, lo: 0xb4, hi: 0xbd},
+-	// Block 0x49, offset 0x4a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x9f, hi: 0x9f},
+-	// Block 0x4a, offset 0x4b
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb1},
+-	// Block 0x4b, offset 0x4c
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x86, hi: 0x86},
+-	// Block 0x4c, offset 0x4d
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xb1},
+-	// Block 0x4d, offset 0x4e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0xab, hi: 0xad},
+-	// Block 0x4e, offset 0x4f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x93, hi: 0x93},
+-	// Block 0x4f, offset 0x50
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xb3, hi: 0xb3},
+-	// Block 0x50, offset 0x51
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x80, hi: 0x80},
+-	// Block 0x51, offset 0x52
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	{value: 0x80e6, lo: 0xb2, hi: 0xb3},
+-	{value: 0x80dc, lo: 0xb4, hi: 0xb4},
+-	{value: 0x80e6, lo: 0xb7, hi: 0xb8},
+-	{value: 0x80e6, lo: 0xbe, hi: 0xbf},
+-	// Block 0x52, offset 0x53
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0x81, hi: 0x81},
+-	{value: 0x8009, lo: 0xb6, hi: 0xb6},
+-	// Block 0x53, offset 0x54
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0xad, hi: 0xad},
+-	// Block 0x54, offset 0x55
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8100, lo: 0x80, hi: 0xbf},
+-	// Block 0x55, offset 0x56
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8100, lo: 0x80, hi: 0xa3},
+-	// Block 0x56, offset 0x57
+-	{value: 0x0006, lo: 0x0d},
+-	{value: 0x4376, lo: 0x9d, hi: 0x9d},
+-	{value: 0x801a, lo: 0x9e, hi: 0x9e},
+-	{value: 0x43e8, lo: 0x9f, hi: 0x9f},
+-	{value: 0x43d6, lo: 0xaa, hi: 0xab},
+-	{value: 0x44da, lo: 0xac, hi: 0xac},
+-	{value: 0x44e2, lo: 0xad, hi: 0xad},
+-	{value: 0x432e, lo: 0xae, hi: 0xb1},
+-	{value: 0x434c, lo: 0xb2, hi: 0xb4},
+-	{value: 0x4364, lo: 0xb5, hi: 0xb6},
+-	{value: 0x4370, lo: 0xb8, hi: 0xb8},
+-	{value: 0x437c, lo: 0xb9, hi: 0xbb},
+-	{value: 0x4394, lo: 0xbc, hi: 0xbc},
+-	{value: 0x439a, lo: 0xbe, hi: 0xbe},
+-	// Block 0x57, offset 0x58
+-	{value: 0x0006, lo: 0x08},
+-	{value: 0x43a0, lo: 0x80, hi: 0x81},
+-	{value: 0x43ac, lo: 0x83, hi: 0x84},
+-	{value: 0x43be, lo: 0x86, hi: 0x89},
+-	{value: 0x43e2, lo: 0x8a, hi: 0x8a},
+-	{value: 0x435e, lo: 0x8b, hi: 0x8b},
+-	{value: 0x4346, lo: 0x8c, hi: 0x8c},
+-	{value: 0x438e, lo: 0x8d, hi: 0x8d},
+-	{value: 0x43b8, lo: 0x8e, hi: 0x8e},
+-	// Block 0x58, offset 0x59
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xa6},
+-	// Block 0x59, offset 0x5a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0xbd, hi: 0xbd},
+-	// Block 0x5a, offset 0x5b
+-	{value: 0x00db, lo: 0x05},
+-	{value: 0x80dc, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80e6, lo: 0x8f, hi: 0x8f},
+-	{value: 0x80e6, lo: 0xb8, hi: 0xb8},
+-	{value: 0x8001, lo: 0xb9, hi: 0xba},
+-	{value: 0x8009, lo: 0xbf, hi: 0xbf},
+-	// Block 0x5b, offset 0x5c
+-	{value: 0x05fe, lo: 0x07},
+-	{value: 0x8800, lo: 0x99, hi: 0x99},
+-	{value: 0x4222, lo: 0x9a, hi: 0x9a},
+-	{value: 0x8800, lo: 0x9b, hi: 0x9b},
+-	{value: 0x422c, lo: 0x9c, hi: 0x9c},
+-	{value: 0x8800, lo: 0xa5, hi: 0xa5},
+-	{value: 0x4236, lo: 0xab, hi: 0xab},
+-	{value: 0x8009, lo: 0xb9, hi: 0xba},
+-	// Block 0x5c, offset 0x5d
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x80e6, lo: 0x80, hi: 0x82},
+-	{value: 0x8600, lo: 0xa7, hi: 0xa7},
+-	{value: 0x1993, lo: 0xae, hi: 0xae},
+-	{value: 0x199c, lo: 0xaf, hi: 0xaf},
+-	{value: 0x8800, lo: 0xb1, hi: 0xb2},
+-	{value: 0x8009, lo: 0xb3, hi: 0xb4},
+-	// Block 0x5d, offset 0x5e
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0xb6, hi: 0xb6},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	// Block 0x5e, offset 0x5f
+-	{value: 0x0000, lo: 0x0c},
+-	{value: 0x45b2, lo: 0x9e, hi: 0x9e},
+-	{value: 0x45bc, lo: 0x9f, hi: 0x9f},
+-	{value: 0x45f0, lo: 0xa0, hi: 0xa0},
+-	{value: 0x45fe, lo: 0xa1, hi: 0xa1},
+-	{value: 0x460c, lo: 0xa2, hi: 0xa2},
+-	{value: 0x461a, lo: 0xa3, hi: 0xa3},
+-	{value: 0x4628, lo: 0xa4, hi: 0xa4},
+-	{value: 0x80d8, lo: 0xa5, hi: 0xa6},
+-	{value: 0x8001, lo: 0xa7, hi: 0xa9},
+-	{value: 0x80e2, lo: 0xad, hi: 0xad},
+-	{value: 0x80d8, lo: 0xae, hi: 0xb2},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbf},
+-	// Block 0x5f, offset 0x60
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x80dc, lo: 0x80, hi: 0x82},
+-	{value: 0x80e6, lo: 0x85, hi: 0x89},
+-	{value: 0x80dc, lo: 0x8a, hi: 0x8b},
+-	{value: 0x80e6, lo: 0xaa, hi: 0xad},
+-	{value: 0x45c6, lo: 0xbb, hi: 0xbb},
+-	{value: 0x45d0, lo: 0xbc, hi: 0xbc},
+-	{value: 0x4636, lo: 0xbd, hi: 0xbd},
+-	{value: 0x4652, lo: 0xbe, hi: 0xbe},
+-	{value: 0x4644, lo: 0xbf, hi: 0xbf},
+-	// Block 0x60, offset 0x61
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x4660, lo: 0x80, hi: 0x80},
+-	// Block 0x61, offset 0x62
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x82, hi: 0x84},
+-}
+-
+-// nfcLookup: 1088 bytes
+-// Block 0 is the null block.
+-var nfcLookup = [1088]uint8{
+-	// Block 0x0, offset 0x0
+-	// Block 0x1, offset 0x40
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x0c2: 0x2c, 0x0c3: 0x01, 0x0c4: 0x02, 0x0c5: 0x03, 0x0c6: 0x2d, 0x0c7: 0x04,
+-	0x0c8: 0x05, 0x0ca: 0x2e, 0x0cc: 0x06, 0x0cd: 0x07, 0x0ce: 0x08, 0x0cf: 0x2f,
+-	0x0d0: 0x09, 0x0d1: 0x30, 0x0d2: 0x31, 0x0d3: 0x0a, 0x0d6: 0x0b, 0x0d7: 0x32,
+-	0x0d8: 0x33, 0x0d9: 0x0c, 0x0db: 0x34, 0x0dc: 0x35, 0x0dd: 0x36, 0x0df: 0x37,
+-	0x0e0: 0x02, 0x0e1: 0x03, 0x0e2: 0x04, 0x0e3: 0x05,
+-	0x0ea: 0x06, 0x0eb: 0x07, 0x0ec: 0x07, 0x0ed: 0x08, 0x0ef: 0x09,
+-	0x0f0: 0x0e,
+-	// Block 0x4, offset 0x100
+-	0x120: 0x38, 0x121: 0x39, 0x123: 0x3a, 0x124: 0x3b, 0x125: 0x3c, 0x126: 0x3d, 0x127: 0x3e,
+-	0x128: 0x3f, 0x129: 0x40, 0x12a: 0x41, 0x12b: 0x42, 0x12c: 0x3d, 0x12d: 0x43, 0x12e: 0x44, 0x12f: 0x45,
+-	0x131: 0x46, 0x132: 0x47, 0x133: 0x48, 0x134: 0x49, 0x135: 0x4a, 0x137: 0x4b,
+-	0x138: 0x4c, 0x139: 0x4d, 0x13a: 0x4e, 0x13b: 0x4f, 0x13c: 0x50, 0x13d: 0x51, 0x13e: 0x52, 0x13f: 0x53,
+-	// Block 0x5, offset 0x140
+-	0x140: 0x54, 0x142: 0x55, 0x144: 0x56, 0x145: 0x57, 0x146: 0x58, 0x147: 0x59,
+-	0x14d: 0x5a,
+-	0x15c: 0x5b, 0x15f: 0x5c,
+-	0x162: 0x5d, 0x164: 0x5e,
+-	0x168: 0x5f, 0x169: 0x60, 0x16c: 0x0d, 0x16d: 0x61, 0x16e: 0x62, 0x16f: 0x63,
+-	0x170: 0x64, 0x173: 0x65, 0x177: 0x66,
+-	0x178: 0x0e, 0x179: 0x0f, 0x17a: 0x10, 0x17b: 0x11, 0x17c: 0x12, 0x17d: 0x13, 0x17e: 0x14, 0x17f: 0x15,
+-	// Block 0x6, offset 0x180
+-	0x180: 0x67, 0x183: 0x68, 0x184: 0x69, 0x186: 0x6a, 0x187: 0x6b,
+-	0x188: 0x6c, 0x189: 0x16, 0x18a: 0x17, 0x18b: 0x6d, 0x18c: 0x6e,
+-	0x1ab: 0x6f,
+-	0x1b3: 0x70, 0x1b5: 0x71, 0x1b7: 0x72,
+-	// Block 0x7, offset 0x1c0
+-	0x1c0: 0x73, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a,
+-	// Block 0x8, offset 0x200
+-	0x219: 0x74, 0x21a: 0x75, 0x21b: 0x76,
+-	0x220: 0x77, 0x223: 0x78, 0x224: 0x79, 0x225: 0x7a, 0x226: 0x7b, 0x227: 0x7c,
+-	0x22a: 0x7d, 0x22b: 0x7e, 0x22f: 0x7f,
+-	0x230: 0x80, 0x231: 0x80, 0x232: 0x80, 0x233: 0x80, 0x234: 0x80, 0x235: 0x80, 0x236: 0x80, 0x237: 0x80,
+-	0x238: 0x80, 0x239: 0x80, 0x23a: 0x80, 0x23b: 0x80, 0x23c: 0x80, 0x23d: 0x80, 0x23e: 0x80, 0x23f: 0x80,
+-	// Block 0x9, offset 0x240
+-	0x240: 0x80, 0x241: 0x80, 0x242: 0x80, 0x243: 0x80, 0x244: 0x80, 0x245: 0x80, 0x246: 0x80, 0x247: 0x80,
+-	0x248: 0x80, 0x249: 0x80, 0x24a: 0x80, 0x24b: 0x80, 0x24c: 0x80, 0x24d: 0x80, 0x24e: 0x80, 0x24f: 0x80,
+-	0x250: 0x80, 0x251: 0x80, 0x252: 0x80, 0x253: 0x80, 0x254: 0x80, 0x255: 0x80, 0x256: 0x80, 0x257: 0x80,
+-	0x258: 0x80, 0x259: 0x80, 0x25a: 0x80, 0x25b: 0x80, 0x25c: 0x80, 0x25d: 0x80, 0x25e: 0x80, 0x25f: 0x80,
+-	0x260: 0x80, 0x261: 0x80, 0x262: 0x80, 0x263: 0x80, 0x264: 0x80, 0x265: 0x80, 0x266: 0x80, 0x267: 0x80,
+-	0x268: 0x80, 0x269: 0x80, 0x26a: 0x80, 0x26b: 0x80, 0x26c: 0x80, 0x26d: 0x80, 0x26e: 0x80, 0x26f: 0x80,
+-	0x270: 0x80, 0x271: 0x80, 0x272: 0x80, 0x273: 0x80, 0x274: 0x80, 0x275: 0x80, 0x276: 0x80, 0x277: 0x80,
+-	0x278: 0x80, 0x279: 0x80, 0x27a: 0x80, 0x27b: 0x80, 0x27c: 0x80, 0x27d: 0x80, 0x27e: 0x80, 0x27f: 0x80,
+-	// Block 0xa, offset 0x280
+-	0x280: 0x80, 0x281: 0x80, 0x282: 0x80, 0x283: 0x80, 0x284: 0x80, 0x285: 0x80, 0x286: 0x80, 0x287: 0x80,
+-	0x288: 0x80, 0x289: 0x80, 0x28a: 0x80, 0x28b: 0x80, 0x28c: 0x80, 0x28d: 0x80, 0x28e: 0x80, 0x28f: 0x80,
+-	0x290: 0x80, 0x291: 0x80, 0x292: 0x80, 0x293: 0x80, 0x294: 0x80, 0x295: 0x80, 0x296: 0x80, 0x297: 0x80,
+-	0x298: 0x80, 0x299: 0x80, 0x29a: 0x80, 0x29b: 0x80, 0x29c: 0x80, 0x29d: 0x80, 0x29e: 0x81,
+-	// Block 0xb, offset 0x2c0
+-	0x2e4: 0x1b, 0x2e5: 0x1c, 0x2e6: 0x1d, 0x2e7: 0x1e,
+-	0x2e8: 0x1f, 0x2e9: 0x20, 0x2ea: 0x21, 0x2eb: 0x22, 0x2ec: 0x82, 0x2ed: 0x83,
+-	0x2f8: 0x84,
+-	// Block 0xc, offset 0x300
+-	0x307: 0x85,
+-	0x328: 0x86,
+-	// Block 0xd, offset 0x340
+-	0x341: 0x77, 0x342: 0x87, 0x344: 0x88, 0x347: 0x7c,
+-	0x35a: 0x89,
+-	// Block 0xe, offset 0x380
+-	0x385: 0x8a, 0x386: 0x8b, 0x387: 0x8c,
+-	0x389: 0x8d,
+-	// Block 0xf, offset 0x3c0
+-	0x3e0: 0x23, 0x3e1: 0x24, 0x3e2: 0x25, 0x3e3: 0x26, 0x3e4: 0x27, 0x3e5: 0x28, 0x3e6: 0x29, 0x3e7: 0x2a,
+-	0x3e8: 0x2b,
+-	// Block 0x10, offset 0x400
+-	0x410: 0x0a, 0x411: 0x0b,
+-	0x41d: 0x0c,
+-	0x42f: 0x0d,
+-}
+-
+-var nfcTrie = trie{nfcLookup[:], nfcValues[:], nfcSparseValues[:], nfcSparseOffset[:], 44}
+-
+-// nfkcValues: 5760 entries, 11520 bytes
+-// Block 2 is the null block.
+-var nfkcValues = [5760]uint16{
+-	// Block 0x0, offset 0x0
+-	0x003c: 0x8800, 0x003d: 0x8800, 0x003e: 0x8800,
+-	// Block 0x1, offset 0x40
+-	0x0041: 0x8800, 0x0042: 0x8800, 0x0043: 0x8800, 0x0044: 0x8800, 0x0045: 0x8800,
+-	0x0046: 0x8800, 0x0047: 0x8800, 0x0048: 0x8800, 0x0049: 0x8800, 0x004a: 0x8800, 0x004b: 0x8800,
+-	0x004c: 0x8800, 0x004d: 0x8800, 0x004e: 0x8800, 0x004f: 0x8800, 0x0050: 0x8800,
+-	0x0052: 0x8800, 0x0053: 0x8800, 0x0054: 0x8800, 0x0055: 0x8800, 0x0056: 0x8800, 0x0057: 0x8800,
+-	0x0058: 0x8800, 0x0059: 0x8800, 0x005a: 0x8800,
+-	0x0061: 0x8800, 0x0062: 0x8800, 0x0063: 0x8800,
+-	0x0064: 0x8800, 0x0065: 0x8800, 0x0066: 0x8800, 0x0067: 0x8800, 0x0068: 0x8800, 0x0069: 0x8800,
+-	0x006a: 0x8800, 0x006b: 0x8800, 0x006c: 0x8800, 0x006d: 0x8800, 0x006e: 0x8800, 0x006f: 0x8800,
+-	0x0070: 0x8800, 0x0072: 0x8800, 0x0073: 0x8800, 0x0074: 0x8800, 0x0075: 0x8800,
+-	0x0076: 0x8800, 0x0077: 0x8800, 0x0078: 0x8800, 0x0079: 0x8800, 0x007a: 0x8800,
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x00c0: 0x2f59, 0x00c1: 0x2f5e, 0x00c2: 0x466e, 0x00c3: 0x2f63, 0x00c4: 0x467d, 0x00c5: 0x4682,
+-	0x00c6: 0x8800, 0x00c7: 0x468c, 0x00c8: 0x2fcc, 0x00c9: 0x2fd1, 0x00ca: 0x4691, 0x00cb: 0x2fe5,
+-	0x00cc: 0x3058, 0x00cd: 0x305d, 0x00ce: 0x3062, 0x00cf: 0x46a5, 0x00d1: 0x30ee,
+-	0x00d2: 0x3111, 0x00d3: 0x3116, 0x00d4: 0x46af, 0x00d5: 0x46b4, 0x00d6: 0x46c3,
+-	0x00d8: 0x8800, 0x00d9: 0x319d, 0x00da: 0x31a2, 0x00db: 0x31a7, 0x00dc: 0x46f5, 0x00dd: 0x321f,
+-	0x00e0: 0x3265, 0x00e1: 0x326a, 0x00e2: 0x46ff, 0x00e3: 0x326f,
+-	0x00e4: 0x470e, 0x00e5: 0x4713, 0x00e6: 0x8800, 0x00e7: 0x471d, 0x00e8: 0x32d8, 0x00e9: 0x32dd,
+-	0x00ea: 0x4722, 0x00eb: 0x32f1, 0x00ec: 0x3369, 0x00ed: 0x336e, 0x00ee: 0x3373, 0x00ef: 0x4736,
+-	0x00f1: 0x33ff, 0x00f2: 0x3422, 0x00f3: 0x3427, 0x00f4: 0x4740, 0x00f5: 0x4745,
+-	0x00f6: 0x4754, 0x00f8: 0x8800, 0x00f9: 0x34b3, 0x00fa: 0x34b8, 0x00fb: 0x34bd,
+-	0x00fc: 0x4786, 0x00fd: 0x353a, 0x00ff: 0x3553,
+-	// Block 0x4, offset 0x100
+-	0x0100: 0x2f68, 0x0101: 0x3274, 0x0102: 0x4673, 0x0103: 0x4704, 0x0104: 0x2f86, 0x0105: 0x3292,
+-	0x0106: 0x2f9a, 0x0107: 0x32a6, 0x0108: 0x2f9f, 0x0109: 0x32ab, 0x010a: 0x2fa4, 0x010b: 0x32b0,
+-	0x010c: 0x2fa9, 0x010d: 0x32b5, 0x010e: 0x2fb3, 0x010f: 0x32bf,
+-	0x0112: 0x4696, 0x0113: 0x4727, 0x0114: 0x2fdb, 0x0115: 0x32e7, 0x0116: 0x2fe0, 0x0117: 0x32ec,
+-	0x0118: 0x2ffe, 0x0119: 0x330a, 0x011a: 0x2fef, 0x011b: 0x32fb, 0x011c: 0x3017, 0x011d: 0x3323,
+-	0x011e: 0x3021, 0x011f: 0x332d, 0x0120: 0x3026, 0x0121: 0x3332, 0x0122: 0x3030, 0x0123: 0x333c,
+-	0x0124: 0x3035, 0x0125: 0x3341, 0x0128: 0x3067, 0x0129: 0x3378,
+-	0x012a: 0x306c, 0x012b: 0x337d, 0x012c: 0x3071, 0x012d: 0x3382, 0x012e: 0x3094, 0x012f: 0x33a0,
+-	0x0130: 0x3076, 0x0132: 0x1a9f, 0x0133: 0x1b29, 0x0134: 0x309e, 0x0135: 0x33aa,
+-	0x0136: 0x30b2, 0x0137: 0x33c3, 0x0139: 0x30bc, 0x013a: 0x33cd, 0x013b: 0x30c6,
+-	0x013c: 0x33d7, 0x013d: 0x30c1, 0x013e: 0x33d2, 0x013f: 0x1cee,
+-	// Block 0x5, offset 0x140
+-	0x0140: 0x1d76, 0x0143: 0x30e9, 0x0144: 0x33fa, 0x0145: 0x3102,
+-	0x0146: 0x3413, 0x0147: 0x30f8, 0x0148: 0x3409, 0x0149: 0x1d9e,
+-	0x014c: 0x46b9, 0x014d: 0x474a, 0x014e: 0x311b, 0x014f: 0x342c, 0x0150: 0x3125, 0x0151: 0x3436,
+-	0x0154: 0x3143, 0x0155: 0x3454, 0x0156: 0x315c, 0x0157: 0x346d,
+-	0x0158: 0x314d, 0x0159: 0x345e, 0x015a: 0x46dc, 0x015b: 0x476d, 0x015c: 0x3166, 0x015d: 0x3477,
+-	0x015e: 0x3175, 0x015f: 0x3486, 0x0160: 0x46e1, 0x0161: 0x4772, 0x0162: 0x318e, 0x0163: 0x34a4,
+-	0x0164: 0x317f, 0x0165: 0x3495, 0x0168: 0x46eb, 0x0169: 0x477c,
+-	0x016a: 0x46f0, 0x016b: 0x4781, 0x016c: 0x31ac, 0x016d: 0x34c2, 0x016e: 0x31b6, 0x016f: 0x34cc,
+-	0x0170: 0x31bb, 0x0171: 0x34d1, 0x0172: 0x31d9, 0x0173: 0x34ef, 0x0174: 0x31fc, 0x0175: 0x3512,
+-	0x0176: 0x3224, 0x0177: 0x353f, 0x0178: 0x3238, 0x0179: 0x3247, 0x017a: 0x3567, 0x017b: 0x3251,
+-	0x017c: 0x3571, 0x017d: 0x3256, 0x017e: 0x3576, 0x017f: 0x00a7,
+-	// Block 0x6, offset 0x180
+-	0x0184: 0x2e7f, 0x0185: 0x2e85,
+-	0x0186: 0x2e8b, 0x0187: 0x1ab4, 0x0188: 0x1ab7, 0x0189: 0x1b4a, 0x018a: 0x1ac9, 0x018b: 0x1acc,
+-	0x018c: 0x1b80, 0x018d: 0x2f72, 0x018e: 0x327e, 0x018f: 0x3080, 0x0190: 0x338c, 0x0191: 0x312a,
+-	0x0192: 0x343b, 0x0193: 0x31c0, 0x0194: 0x34d6, 0x0195: 0x39b9, 0x0196: 0x3b48, 0x0197: 0x39b2,
+-	0x0198: 0x3b41, 0x0199: 0x39c0, 0x019a: 0x3b4f, 0x019b: 0x39ab, 0x019c: 0x3b3a,
+-	0x019e: 0x389a, 0x019f: 0x3a29, 0x01a0: 0x3893, 0x01a1: 0x3a22, 0x01a2: 0x359d, 0x01a3: 0x35af,
+-	0x01a6: 0x302b, 0x01a7: 0x3337, 0x01a8: 0x30a8, 0x01a9: 0x33b9,
+-	0x01aa: 0x46d2, 0x01ab: 0x4763, 0x01ac: 0x397a, 0x01ad: 0x3b09, 0x01ae: 0x35c1, 0x01af: 0x35c7,
+-	0x01b0: 0x33af, 0x01b1: 0x1a84, 0x01b2: 0x1a87, 0x01b3: 0x1b11, 0x01b4: 0x3012, 0x01b5: 0x331e,
+-	0x01b8: 0x30e4, 0x01b9: 0x33f5, 0x01ba: 0x38a1, 0x01bb: 0x3a30,
+-	0x01bc: 0x3597, 0x01bd: 0x35a9, 0x01be: 0x35a3, 0x01bf: 0x35b5,
+-	// Block 0x7, offset 0x1c0
+-	0x01c0: 0x2f77, 0x01c1: 0x3283, 0x01c2: 0x2f7c, 0x01c3: 0x3288, 0x01c4: 0x2ff4, 0x01c5: 0x3300,
+-	0x01c6: 0x2ff9, 0x01c7: 0x3305, 0x01c8: 0x3085, 0x01c9: 0x3391, 0x01ca: 0x308a, 0x01cb: 0x3396,
+-	0x01cc: 0x312f, 0x01cd: 0x3440, 0x01ce: 0x3134, 0x01cf: 0x3445, 0x01d0: 0x3152, 0x01d1: 0x3463,
+-	0x01d2: 0x3157, 0x01d3: 0x3468, 0x01d4: 0x31c5, 0x01d5: 0x34db, 0x01d6: 0x31ca, 0x01d7: 0x34e0,
+-	0x01d8: 0x3170, 0x01d9: 0x3481, 0x01da: 0x3189, 0x01db: 0x349f,
+-	0x01de: 0x3044, 0x01df: 0x3350,
+-	0x01e6: 0x4678, 0x01e7: 0x4709, 0x01e8: 0x46a0, 0x01e9: 0x4731,
+-	0x01ea: 0x3949, 0x01eb: 0x3ad8, 0x01ec: 0x3926, 0x01ed: 0x3ab5, 0x01ee: 0x46be, 0x01ef: 0x474f,
+-	0x01f0: 0x3942, 0x01f1: 0x3ad1, 0x01f2: 0x322e, 0x01f3: 0x3549,
+-	// Block 0x8, offset 0x200
+-	0x0200: 0x86e6, 0x0201: 0x86e6, 0x0202: 0x86e6, 0x0203: 0x86e6, 0x0204: 0x86e6, 0x0205: 0x80e6,
+-	0x0206: 0x86e6, 0x0207: 0x86e6, 0x0208: 0x86e6, 0x0209: 0x86e6, 0x020a: 0x86e6, 0x020b: 0x86e6,
+-	0x020c: 0x86e6, 0x020d: 0x80e6, 0x020e: 0x80e6, 0x020f: 0x86e6, 0x0210: 0x80e6, 0x0211: 0x86e6,
+-	0x0212: 0x80e6, 0x0213: 0x86e6, 0x0214: 0x86e6, 0x0215: 0x80e8, 0x0216: 0x80dc, 0x0217: 0x80dc,
+-	0x0218: 0x80dc, 0x0219: 0x80dc, 0x021a: 0x80e8, 0x021b: 0x86d8, 0x021c: 0x80dc, 0x021d: 0x80dc,
+-	0x021e: 0x80dc, 0x021f: 0x80dc, 0x0220: 0x80dc, 0x0221: 0x80ca, 0x0222: 0x80ca, 0x0223: 0x86dc,
+-	0x0224: 0x86dc, 0x0225: 0x86dc, 0x0226: 0x86dc, 0x0227: 0x86ca, 0x0228: 0x86ca, 0x0229: 0x80dc,
+-	0x022a: 0x80dc, 0x022b: 0x80dc, 0x022c: 0x80dc, 0x022d: 0x86dc, 0x022e: 0x86dc, 0x022f: 0x80dc,
+-	0x0230: 0x86dc, 0x0231: 0x86dc, 0x0232: 0x80dc, 0x0233: 0x80dc, 0x0234: 0x8001, 0x0235: 0x8001,
+-	0x0236: 0x8001, 0x0237: 0x8001, 0x0238: 0x8601, 0x0239: 0x80dc, 0x023a: 0x80dc, 0x023b: 0x80dc,
+-	0x023c: 0x80dc, 0x023d: 0x80e6, 0x023e: 0x80e6, 0x023f: 0x80e6,
+-	// Block 0x9, offset 0x240
+-	0x0240: 0x4994, 0x0241: 0x4999, 0x0242: 0x86e6, 0x0243: 0x499e, 0x0244: 0x49a3, 0x0245: 0x86f0,
+-	0x0246: 0x80e6, 0x0247: 0x80dc, 0x0248: 0x80dc, 0x0249: 0x80dc, 0x024a: 0x80e6, 0x024b: 0x80e6,
+-	0x024c: 0x80e6, 0x024d: 0x80dc, 0x024e: 0x80dc, 0x0250: 0x80e6, 0x0251: 0x80e6,
+-	0x0252: 0x80e6, 0x0253: 0x80dc, 0x0254: 0x80dc, 0x0255: 0x80dc, 0x0256: 0x80dc, 0x0257: 0x80e6,
+-	0x0258: 0x80e8, 0x0259: 0x80dc, 0x025a: 0x80dc, 0x025b: 0x80e6, 0x025c: 0x80e9, 0x025d: 0x80ea,
+-	0x025e: 0x80ea, 0x025f: 0x80e9, 0x0260: 0x80ea, 0x0261: 0x80ea, 0x0262: 0x80e9, 0x0263: 0x80e6,
+-	0x0264: 0x80e6, 0x0265: 0x80e6, 0x0266: 0x80e6, 0x0267: 0x80e6, 0x0268: 0x80e6, 0x0269: 0x80e6,
+-	0x026a: 0x80e6, 0x026b: 0x80e6, 0x026c: 0x80e6, 0x026d: 0x80e6, 0x026e: 0x80e6, 0x026f: 0x80e6,
+-	0x0274: 0x0170,
+-	0x027a: 0x428b,
+-	0x027e: 0x0037,
+-	// Block 0xa, offset 0x280
+-	0x0284: 0x4240, 0x0285: 0x4461,
+-	0x0286: 0x35d3, 0x0287: 0x00d1, 0x0288: 0x35f1, 0x0289: 0x35fd, 0x028a: 0x360f,
+-	0x028c: 0x362d, 0x028e: 0x363f, 0x028f: 0x365d, 0x0290: 0x3df2, 0x0291: 0x8800,
+-	0x0295: 0x8800, 0x0297: 0x8800,
+-	0x0299: 0x8800,
+-	0x029f: 0x8800, 0x02a1: 0x8800,
+-	0x02a5: 0x8800, 0x02a9: 0x8800,
+-	0x02aa: 0x3621, 0x02ab: 0x3651, 0x02ac: 0x47e4, 0x02ad: 0x3681, 0x02ae: 0x480e, 0x02af: 0x3693,
+-	0x02b0: 0x3e5a, 0x02b1: 0x8800, 0x02b5: 0x8800,
+-	0x02b7: 0x8800, 0x02b9: 0x8800,
+-	0x02bf: 0x8800,
+-	// Block 0xb, offset 0x2c0
+-	0x02c1: 0x8800, 0x02c5: 0x8800,
+-	0x02c9: 0x8800, 0x02ca: 0x4826, 0x02cb: 0x4844,
+-	0x02cc: 0x36b1, 0x02cd: 0x36c9, 0x02ce: 0x485c, 0x02d0: 0x01be, 0x02d1: 0x01d0,
+-	0x02d2: 0x01ac, 0x02d3: 0x42f2, 0x02d4: 0x42f8, 0x02d5: 0x01fa, 0x02d6: 0x01e8,
+-	0x02f0: 0x01d6, 0x02f1: 0x01eb, 0x02f2: 0x01ee, 0x02f4: 0x0188, 0x02f5: 0x01c7,
+-	0x02f9: 0x01a6,
+-	// Block 0xc, offset 0x300
+-	0x0300: 0x370b, 0x0301: 0x3717, 0x0303: 0x3705,
+-	0x0306: 0x8800, 0x0307: 0x36f3,
+-	0x030c: 0x3747, 0x030d: 0x372f, 0x030e: 0x3759, 0x0310: 0x8800,
+-	0x0313: 0x8800, 0x0315: 0x8800, 0x0316: 0x8800, 0x0317: 0x8800,
+-	0x0318: 0x8800, 0x0319: 0x373b, 0x031a: 0x8800,
+-	0x031e: 0x8800, 0x0323: 0x8800,
+-	0x0327: 0x8800,
+-	0x032b: 0x8800, 0x032d: 0x8800,
+-	0x0330: 0x8800, 0x0333: 0x8800, 0x0335: 0x8800,
+-	0x0336: 0x8800, 0x0337: 0x8800, 0x0338: 0x8800, 0x0339: 0x37bf, 0x033a: 0x8800,
+-	0x033e: 0x8800,
+-	// Block 0xd, offset 0x340
+-	0x0341: 0x371d, 0x0342: 0x37a1,
+-	0x0350: 0x36f9, 0x0351: 0x377d,
+-	0x0352: 0x36ff, 0x0353: 0x3783, 0x0356: 0x3711, 0x0357: 0x3795,
+-	0x0358: 0x8800, 0x0359: 0x8800, 0x035a: 0x3813, 0x035b: 0x3819, 0x035c: 0x3723, 0x035d: 0x37a7,
+-	0x035e: 0x3729, 0x035f: 0x37ad, 0x0362: 0x3735, 0x0363: 0x37b9,
+-	0x0364: 0x3741, 0x0365: 0x37c5, 0x0366: 0x374d, 0x0367: 0x37d1, 0x0368: 0x8800, 0x0369: 0x8800,
+-	0x036a: 0x381f, 0x036b: 0x3825, 0x036c: 0x3777, 0x036d: 0x37fb, 0x036e: 0x3753, 0x036f: 0x37d7,
+-	0x0370: 0x375f, 0x0371: 0x37e3, 0x0372: 0x3765, 0x0373: 0x37e9, 0x0374: 0x376b, 0x0375: 0x37ef,
+-	0x0378: 0x3771, 0x0379: 0x37f5,
+-	// Block 0xe, offset 0x380
+-	0x0387: 0x1ea3,
+-	0x0391: 0x80dc,
+-	0x0392: 0x80e6, 0x0393: 0x80e6, 0x0394: 0x80e6, 0x0395: 0x80e6, 0x0396: 0x80dc, 0x0397: 0x80e6,
+-	0x0398: 0x80e6, 0x0399: 0x80e6, 0x039a: 0x80de, 0x039b: 0x80dc, 0x039c: 0x80e6, 0x039d: 0x80e6,
+-	0x039e: 0x80e6, 0x039f: 0x80e6, 0x03a0: 0x80e6, 0x03a1: 0x80e6, 0x03a2: 0x80dc, 0x03a3: 0x80dc,
+-	0x03a4: 0x80dc, 0x03a5: 0x80dc, 0x03a6: 0x80dc, 0x03a7: 0x80dc, 0x03a8: 0x80e6, 0x03a9: 0x80e6,
+-	0x03aa: 0x80dc, 0x03ab: 0x80e6, 0x03ac: 0x80e6, 0x03ad: 0x80de, 0x03ae: 0x80e4, 0x03af: 0x80e6,
+-	0x03b0: 0x800a, 0x03b1: 0x800b, 0x03b2: 0x800c, 0x03b3: 0x800d, 0x03b4: 0x800e, 0x03b5: 0x800f,
+-	0x03b6: 0x8010, 0x03b7: 0x8011, 0x03b8: 0x8012, 0x03b9: 0x8013, 0x03ba: 0x8013, 0x03bb: 0x8014,
+-	0x03bc: 0x8015, 0x03bd: 0x8016, 0x03bf: 0x8017,
+-	// Block 0xf, offset 0x3c0
+-	0x03c8: 0x8800, 0x03ca: 0x8800, 0x03cb: 0x801b,
+-	0x03cc: 0x801c, 0x03cd: 0x801d, 0x03ce: 0x801e, 0x03cf: 0x801f, 0x03d0: 0x8020, 0x03d1: 0x8021,
+-	0x03d2: 0x8022, 0x03d3: 0x86e6, 0x03d4: 0x86e6, 0x03d5: 0x86dc, 0x03d6: 0x80dc, 0x03d7: 0x80e6,
+-	0x03d8: 0x80e6, 0x03d9: 0x80e6, 0x03da: 0x80e6, 0x03db: 0x80e6, 0x03dc: 0x80dc, 0x03dd: 0x80e6,
+-	0x03de: 0x80e6, 0x03df: 0x80dc,
+-	0x03f0: 0x8023, 0x03f5: 0x1ec6,
+-	0x03f6: 0x2155, 0x03f7: 0x2191, 0x03f8: 0x218c,
+-	// Block 0x10, offset 0x400
+-	0x0405: 0x8800,
+-	0x0406: 0x1946, 0x0407: 0x8800, 0x0408: 0x194d, 0x0409: 0x8800, 0x040a: 0x1954, 0x040b: 0x8800,
+-	0x040c: 0x195b, 0x040d: 0x8800, 0x040e: 0x1962, 0x0411: 0x8800,
+-	0x0412: 0x1969,
+-	0x0434: 0x8007, 0x0435: 0x8600,
+-	0x043a: 0x8800, 0x043b: 0x1970,
+-	0x043c: 0x8800, 0x043d: 0x1977, 0x043e: 0x8800, 0x043f: 0x8800,
+-	// Block 0x11, offset 0x440
+-	0x0440: 0x0069, 0x0441: 0x006b, 0x0442: 0x006f, 0x0443: 0x0083, 0x0444: 0x00f8, 0x0445: 0x00fb,
+-	0x0446: 0x0485, 0x0447: 0x0085, 0x0448: 0x0089, 0x0449: 0x008b, 0x044a: 0x0107, 0x044b: 0x010a,
+-	0x044c: 0x010d, 0x044d: 0x008f, 0x044f: 0x0097, 0x0450: 0x009b, 0x0451: 0x00e3,
+-	0x0452: 0x009f, 0x0453: 0x0101, 0x0454: 0x0489, 0x0455: 0x048d, 0x0456: 0x00a1, 0x0457: 0x00a9,
+-	0x0458: 0x00ab, 0x0459: 0x0495, 0x045a: 0x012b, 0x045b: 0x00ad, 0x045c: 0x0499, 0x045d: 0x01be,
+-	0x045e: 0x01c1, 0x045f: 0x01c4, 0x0460: 0x01fa, 0x0461: 0x01fd, 0x0462: 0x0093, 0x0463: 0x00a5,
+-	0x0464: 0x00ab, 0x0465: 0x00ad, 0x0466: 0x01be, 0x0467: 0x01c1, 0x0468: 0x01eb, 0x0469: 0x01fa,
+-	0x046a: 0x01fd,
+-	0x0478: 0x020c,
+-	// Block 0x12, offset 0x480
+-	0x049b: 0x00fe, 0x049c: 0x0087, 0x049d: 0x0104,
+-	0x049e: 0x00d7, 0x049f: 0x010d, 0x04a0: 0x008d, 0x04a1: 0x0110, 0x04a2: 0x0113, 0x04a3: 0x0119,
+-	0x04a4: 0x011f, 0x04a5: 0x0122, 0x04a6: 0x0125, 0x04a7: 0x049d, 0x04a8: 0x016a, 0x04a9: 0x0128,
+-	0x04aa: 0x04a1, 0x04ab: 0x016d, 0x04ac: 0x0131, 0x04ad: 0x012e, 0x04ae: 0x0134, 0x04af: 0x0137,
+-	0x04b0: 0x013a, 0x04b1: 0x013d, 0x04b2: 0x0140, 0x04b3: 0x014c, 0x04b4: 0x014f, 0x04b5: 0x00ef,
+-	0x04b6: 0x0152, 0x04b7: 0x0155, 0x04b8: 0x0491, 0x04b9: 0x0158, 0x04ba: 0x015b, 0x04bb: 0x00b5,
+-	0x04bc: 0x015e, 0x04bd: 0x0161, 0x04be: 0x0164, 0x04bf: 0x01d0,
+-	// Block 0x13, offset 0x4c0
+-	0x04c0: 0x2f81, 0x04c1: 0x328d, 0x04c2: 0x2f8b, 0x04c3: 0x3297, 0x04c4: 0x2f90, 0x04c5: 0x329c,
+-	0x04c6: 0x2f95, 0x04c7: 0x32a1, 0x04c8: 0x38b6, 0x04c9: 0x3a45, 0x04ca: 0x2fae, 0x04cb: 0x32ba,
+-	0x04cc: 0x2fb8, 0x04cd: 0x32c4, 0x04ce: 0x2fc7, 0x04cf: 0x32d3, 0x04d0: 0x2fbd, 0x04d1: 0x32c9,
+-	0x04d2: 0x2fc2, 0x04d3: 0x32ce, 0x04d4: 0x38d9, 0x04d5: 0x3a68, 0x04d6: 0x38e0, 0x04d7: 0x3a6f,
+-	0x04d8: 0x3003, 0x04d9: 0x330f, 0x04da: 0x3008, 0x04db: 0x3314, 0x04dc: 0x38ee, 0x04dd: 0x3a7d,
+-	0x04de: 0x300d, 0x04df: 0x3319, 0x04e0: 0x301c, 0x04e1: 0x3328, 0x04e2: 0x303a, 0x04e3: 0x3346,
+-	0x04e4: 0x3049, 0x04e5: 0x3355, 0x04e6: 0x303f, 0x04e7: 0x334b, 0x04e8: 0x304e, 0x04e9: 0x335a,
+-	0x04ea: 0x3053, 0x04eb: 0x335f, 0x04ec: 0x3099, 0x04ed: 0x33a5, 0x04ee: 0x38f5, 0x04ef: 0x3a84,
+-	0x04f0: 0x30a3, 0x04f1: 0x33b4, 0x04f2: 0x30ad, 0x04f3: 0x33be, 0x04f4: 0x30b7, 0x04f5: 0x33c8,
+-	0x04f6: 0x46aa, 0x04f7: 0x473b, 0x04f8: 0x38fc, 0x04f9: 0x3a8b, 0x04fa: 0x30d0, 0x04fb: 0x33e1,
+-	0x04fc: 0x30cb, 0x04fd: 0x33dc, 0x04fe: 0x30d5, 0x04ff: 0x33e6,
+-	// Block 0x14, offset 0x500
+-	0x0500: 0x30da, 0x0501: 0x33eb, 0x0502: 0x30df, 0x0503: 0x33f0, 0x0504: 0x30f3, 0x0505: 0x3404,
+-	0x0506: 0x30fd, 0x0507: 0x340e, 0x0508: 0x310c, 0x0509: 0x341d, 0x050a: 0x3107, 0x050b: 0x3418,
+-	0x050c: 0x391f, 0x050d: 0x3aae, 0x050e: 0x392d, 0x050f: 0x3abc, 0x0510: 0x3934, 0x0511: 0x3ac3,
+-	0x0512: 0x393b, 0x0513: 0x3aca, 0x0514: 0x3139, 0x0515: 0x344a, 0x0516: 0x313e, 0x0517: 0x344f,
+-	0x0518: 0x3148, 0x0519: 0x3459, 0x051a: 0x46d7, 0x051b: 0x4768, 0x051c: 0x3981, 0x051d: 0x3b10,
+-	0x051e: 0x3161, 0x051f: 0x3472, 0x0520: 0x316b, 0x0521: 0x347c, 0x0522: 0x46e6, 0x0523: 0x4777,
+-	0x0524: 0x3988, 0x0525: 0x3b17, 0x0526: 0x398f, 0x0527: 0x3b1e, 0x0528: 0x3996, 0x0529: 0x3b25,
+-	0x052a: 0x317a, 0x052b: 0x348b, 0x052c: 0x3184, 0x052d: 0x349a, 0x052e: 0x3198, 0x052f: 0x34ae,
+-	0x0530: 0x3193, 0x0531: 0x34a9, 0x0532: 0x31d4, 0x0533: 0x34ea, 0x0534: 0x31e3, 0x0535: 0x34f9,
+-	0x0536: 0x31de, 0x0537: 0x34f4, 0x0538: 0x399d, 0x0539: 0x3b2c, 0x053a: 0x39a4, 0x053b: 0x3b33,
+-	0x053c: 0x31e8, 0x053d: 0x34fe, 0x053e: 0x31ed, 0x053f: 0x3503,
+-	// Block 0x15, offset 0x540
+-	0x0540: 0x31f2, 0x0541: 0x3508, 0x0542: 0x31f7, 0x0543: 0x350d, 0x0544: 0x3206, 0x0545: 0x351c,
+-	0x0546: 0x3201, 0x0547: 0x3517, 0x0548: 0x320b, 0x0549: 0x3526, 0x054a: 0x3210, 0x054b: 0x352b,
+-	0x054c: 0x3215, 0x054d: 0x3530, 0x054e: 0x3233, 0x054f: 0x354e, 0x0550: 0x324c, 0x0551: 0x356c,
+-	0x0552: 0x325b, 0x0553: 0x357b, 0x0554: 0x3260, 0x0555: 0x3580, 0x0556: 0x3364, 0x0557: 0x3490,
+-	0x0558: 0x3521, 0x0559: 0x355d, 0x055a: 0x1d22, 0x055b: 0x42bd,
+-	0x0560: 0x4687, 0x0561: 0x4718, 0x0562: 0x2f6d, 0x0563: 0x3279,
+-	0x0564: 0x3862, 0x0565: 0x39f1, 0x0566: 0x385b, 0x0567: 0x39ea, 0x0568: 0x3870, 0x0569: 0x39ff,
+-	0x056a: 0x3869, 0x056b: 0x39f8, 0x056c: 0x38a8, 0x056d: 0x3a37, 0x056e: 0x387e, 0x056f: 0x3a0d,
+-	0x0570: 0x3877, 0x0571: 0x3a06, 0x0572: 0x388c, 0x0573: 0x3a1b, 0x0574: 0x3885, 0x0575: 0x3a14,
+-	0x0576: 0x38af, 0x0577: 0x3a3e, 0x0578: 0x469b, 0x0579: 0x472c, 0x057a: 0x2fea, 0x057b: 0x32f6,
+-	0x057c: 0x2fd6, 0x057d: 0x32e2, 0x057e: 0x38c4, 0x057f: 0x3a53,
+-	// Block 0x16, offset 0x580
+-	0x0580: 0x38bd, 0x0581: 0x3a4c, 0x0582: 0x38d2, 0x0583: 0x3a61, 0x0584: 0x38cb, 0x0585: 0x3a5a,
+-	0x0586: 0x38e7, 0x0587: 0x3a76, 0x0588: 0x307b, 0x0589: 0x3387, 0x058a: 0x308f, 0x058b: 0x339b,
+-	0x058c: 0x46cd, 0x058d: 0x475e, 0x058e: 0x3120, 0x058f: 0x3431, 0x0590: 0x390a, 0x0591: 0x3a99,
+-	0x0592: 0x3903, 0x0593: 0x3a92, 0x0594: 0x3918, 0x0595: 0x3aa7, 0x0596: 0x3911, 0x0597: 0x3aa0,
+-	0x0598: 0x3973, 0x0599: 0x3b02, 0x059a: 0x3957, 0x059b: 0x3ae6, 0x059c: 0x3950, 0x059d: 0x3adf,
+-	0x059e: 0x3965, 0x059f: 0x3af4, 0x05a0: 0x395e, 0x05a1: 0x3aed, 0x05a2: 0x396c, 0x05a3: 0x3afb,
+-	0x05a4: 0x31cf, 0x05a5: 0x34e5, 0x05a6: 0x31b1, 0x05a7: 0x34c7, 0x05a8: 0x39ce, 0x05a9: 0x3b5d,
+-	0x05aa: 0x39c7, 0x05ab: 0x3b56, 0x05ac: 0x39dc, 0x05ad: 0x3b6b, 0x05ae: 0x39d5, 0x05af: 0x3b64,
+-	0x05b0: 0x39e3, 0x05b1: 0x3b72, 0x05b2: 0x321a, 0x05b3: 0x3535, 0x05b4: 0x3242, 0x05b5: 0x3562,
+-	0x05b6: 0x323d, 0x05b7: 0x3558, 0x05b8: 0x3229, 0x05b9: 0x3544,
+-	// Block 0x17, offset 0x5c0
+-	0x05c0: 0x47ea, 0x05c1: 0x47f0, 0x05c2: 0x4904, 0x05c3: 0x491c, 0x05c4: 0x490c, 0x05c5: 0x4924,
+-	0x05c6: 0x4914, 0x05c7: 0x492c, 0x05c8: 0x4790, 0x05c9: 0x4796, 0x05ca: 0x4874, 0x05cb: 0x488c,
+-	0x05cc: 0x487c, 0x05cd: 0x4894, 0x05ce: 0x4884, 0x05cf: 0x489c, 0x05d0: 0x47fc, 0x05d1: 0x4802,
+-	0x05d2: 0x3da2, 0x05d3: 0x3db2, 0x05d4: 0x3daa, 0x05d5: 0x3dba,
+-	0x05d8: 0x479c, 0x05d9: 0x47a2, 0x05da: 0x3cd2, 0x05db: 0x3ce2, 0x05dc: 0x3cda, 0x05dd: 0x3cea,
+-	0x05e0: 0x4814, 0x05e1: 0x481a, 0x05e2: 0x4934, 0x05e3: 0x494c,
+-	0x05e4: 0x493c, 0x05e5: 0x4954, 0x05e6: 0x4944, 0x05e7: 0x495c, 0x05e8: 0x47a8, 0x05e9: 0x47ae,
+-	0x05ea: 0x48a4, 0x05eb: 0x48bc, 0x05ec: 0x48ac, 0x05ed: 0x48c4, 0x05ee: 0x48b4, 0x05ef: 0x48cc,
+-	0x05f0: 0x482c, 0x05f1: 0x4832, 0x05f2: 0x3e02, 0x05f3: 0x3e1a, 0x05f4: 0x3e0a, 0x05f5: 0x3e22,
+-	0x05f6: 0x3e12, 0x05f7: 0x3e2a, 0x05f8: 0x47b4, 0x05f9: 0x47ba, 0x05fa: 0x3d02, 0x05fb: 0x3d1a,
+-	0x05fc: 0x3d0a, 0x05fd: 0x3d22, 0x05fe: 0x3d12, 0x05ff: 0x3d2a,
+-	// Block 0x18, offset 0x600
+-	0x0600: 0x4838, 0x0601: 0x483e, 0x0602: 0x3e32, 0x0603: 0x3e42, 0x0604: 0x3e3a, 0x0605: 0x3e4a,
+-	0x0608: 0x47c0, 0x0609: 0x47c6, 0x060a: 0x3d32, 0x060b: 0x3d42,
+-	0x060c: 0x3d3a, 0x060d: 0x3d4a, 0x0610: 0x484a, 0x0611: 0x4850,
+-	0x0612: 0x3e6a, 0x0613: 0x3e82, 0x0614: 0x3e72, 0x0615: 0x3e8a, 0x0616: 0x3e7a, 0x0617: 0x3e92,
+-	0x0619: 0x47cc, 0x061b: 0x3d52, 0x061d: 0x3d5a,
+-	0x061f: 0x3d62, 0x0620: 0x4862, 0x0621: 0x4868, 0x0622: 0x4964, 0x0623: 0x497c,
+-	0x0624: 0x496c, 0x0625: 0x4984, 0x0626: 0x4974, 0x0627: 0x498c, 0x0628: 0x47d2, 0x0629: 0x47d8,
+-	0x062a: 0x48d4, 0x062b: 0x48ec, 0x062c: 0x48dc, 0x062d: 0x48f4, 0x062e: 0x48e4, 0x062f: 0x48fc,
+-	0x0630: 0x47de, 0x0631: 0x4304, 0x0632: 0x367b, 0x0633: 0x430a, 0x0634: 0x4808, 0x0635: 0x4310,
+-	0x0636: 0x368d, 0x0637: 0x4316, 0x0638: 0x36ab, 0x0639: 0x431c, 0x063a: 0x36c3, 0x063b: 0x4322,
+-	0x063c: 0x4856, 0x063d: 0x4328,
+-	// Block 0x19, offset 0x640
+-	0x0640: 0x3d8a, 0x0641: 0x3d92, 0x0642: 0x416e, 0x0643: 0x418c, 0x0644: 0x4178, 0x0645: 0x4196,
+-	0x0646: 0x4182, 0x0647: 0x41a0, 0x0648: 0x3cc2, 0x0649: 0x3cca, 0x064a: 0x40ba, 0x064b: 0x40d8,
+-	0x064c: 0x40c4, 0x064d: 0x40e2, 0x064e: 0x40ce, 0x064f: 0x40ec, 0x0650: 0x3dd2, 0x0651: 0x3dda,
+-	0x0652: 0x41aa, 0x0653: 0x41c8, 0x0654: 0x41b4, 0x0655: 0x41d2, 0x0656: 0x41be, 0x0657: 0x41dc,
+-	0x0658: 0x3cf2, 0x0659: 0x3cfa, 0x065a: 0x40f6, 0x065b: 0x4114, 0x065c: 0x4100, 0x065d: 0x411e,
+-	0x065e: 0x410a, 0x065f: 0x4128, 0x0660: 0x3eaa, 0x0661: 0x3eb2, 0x0662: 0x41e6, 0x0663: 0x4204,
+-	0x0664: 0x41f0, 0x0665: 0x420e, 0x0666: 0x41fa, 0x0667: 0x4218, 0x0668: 0x3d6a, 0x0669: 0x3d72,
+-	0x066a: 0x4132, 0x066b: 0x4150, 0x066c: 0x413c, 0x066d: 0x415a, 0x066e: 0x4146, 0x066f: 0x4164,
+-	0x0670: 0x366f, 0x0671: 0x3669, 0x0672: 0x3d7a, 0x0673: 0x3675, 0x0674: 0x3d82,
+-	0x0676: 0x47f6, 0x0677: 0x3d9a, 0x0678: 0x35df, 0x0679: 0x35d9, 0x067a: 0x35cd, 0x067b: 0x42d4,
+-	0x067c: 0x35e5, 0x067d: 0x426d, 0x067e: 0x01d3, 0x067f: 0x426d,
+-	// Block 0x1a, offset 0x680
+-	0x0680: 0x4286, 0x0681: 0x4468, 0x0682: 0x3dc2, 0x0683: 0x3687, 0x0684: 0x3dca,
+-	0x0686: 0x4820, 0x0687: 0x3de2, 0x0688: 0x35eb, 0x0689: 0x42da, 0x068a: 0x35f7, 0x068b: 0x42e0,
+-	0x068c: 0x3603, 0x068d: 0x446f, 0x068e: 0x4476, 0x068f: 0x447d, 0x0690: 0x369f, 0x0691: 0x3699,
+-	0x0692: 0x3dea, 0x0693: 0x44ca, 0x0696: 0x36a5, 0x0697: 0x3dfa,
+-	0x0698: 0x361b, 0x0699: 0x3615, 0x069a: 0x3609, 0x069b: 0x42e6, 0x069d: 0x4484,
+-	0x069e: 0x448b, 0x069f: 0x4492, 0x06a0: 0x36d5, 0x06a1: 0x36cf, 0x06a2: 0x3e52, 0x06a3: 0x44d2,
+-	0x06a4: 0x36b7, 0x06a5: 0x36bd, 0x06a6: 0x36db, 0x06a7: 0x3e62, 0x06a8: 0x364b, 0x06a9: 0x3645,
+-	0x06aa: 0x3639, 0x06ab: 0x42f2, 0x06ac: 0x3633, 0x06ad: 0x445a, 0x06ae: 0x4461, 0x06af: 0x0081,
+-	0x06b2: 0x3e9a, 0x06b3: 0x36e1, 0x06b4: 0x3ea2,
+-	0x06b6: 0x486e, 0x06b7: 0x3eba, 0x06b8: 0x3627, 0x06b9: 0x42ec, 0x06ba: 0x3657, 0x06bb: 0x42fe,
+-	0x06bc: 0x3663, 0x06bd: 0x4240, 0x06be: 0x4272,
+-	// Block 0x1b, offset 0x6c0
+-	0x06c0: 0x1d1a, 0x06c1: 0x1d1e, 0x06c2: 0x0047, 0x06c3: 0x1d96, 0x06c5: 0x1d2a,
+-	0x06c6: 0x1d2e, 0x06c7: 0x00ec, 0x06c9: 0x1d9a, 0x06ca: 0x008f, 0x06cb: 0x0051,
+-	0x06cc: 0x0051, 0x06cd: 0x0051, 0x06ce: 0x0091, 0x06cf: 0x00dd, 0x06d0: 0x0053, 0x06d1: 0x0053,
+-	0x06d2: 0x0059, 0x06d3: 0x0099, 0x06d5: 0x005d, 0x06d6: 0x1acf,
+-	0x06d9: 0x0061, 0x06da: 0x0063, 0x06db: 0x0065, 0x06dc: 0x0065, 0x06dd: 0x0065,
+-	0x06e0: 0x1ae1, 0x06e1: 0x1d0a, 0x06e2: 0x1aea,
+-	0x06e4: 0x0075, 0x06e6: 0x01b8, 0x06e8: 0x0075,
+-	0x06ea: 0x0057, 0x06eb: 0x42b8, 0x06ec: 0x0045, 0x06ed: 0x0047, 0x06ef: 0x008b,
+-	0x06f0: 0x004b, 0x06f1: 0x004d, 0x06f3: 0x005b, 0x06f4: 0x009f, 0x06f5: 0x020f,
+-	0x06f6: 0x0212, 0x06f7: 0x0215, 0x06f8: 0x0218, 0x06f9: 0x0093, 0x06fb: 0x1cda,
+-	0x06fc: 0x01e8, 0x06fd: 0x01c1, 0x06fe: 0x0179, 0x06ff: 0x01a0,
+-	// Block 0x1c, offset 0x700
+-	0x0700: 0x04d5, 0x0705: 0x0049,
+-	0x0706: 0x0089, 0x0707: 0x008b, 0x0708: 0x0093, 0x0709: 0x0095,
+-	0x0710: 0x2370, 0x0711: 0x237c,
+-	0x0712: 0x2430, 0x0713: 0x2358, 0x0714: 0x23dc, 0x0715: 0x2364, 0x0716: 0x23e2, 0x0717: 0x23fa,
+-	0x0718: 0x2406, 0x0719: 0x236a, 0x071a: 0x240c, 0x071b: 0x2376, 0x071c: 0x2400, 0x071d: 0x2412,
+-	0x071e: 0x2418, 0x071f: 0x1dfe, 0x0720: 0x0053, 0x0721: 0x1a9c, 0x0722: 0x1ce6, 0x0723: 0x1aa5,
+-	0x0724: 0x006d, 0x0725: 0x1aed, 0x0726: 0x1d12, 0x0727: 0x1e8a, 0x0728: 0x1aa8, 0x0729: 0x0071,
+-	0x072a: 0x1af9, 0x072b: 0x1d16, 0x072c: 0x0059, 0x072d: 0x0047, 0x072e: 0x0049, 0x072f: 0x005b,
+-	0x0730: 0x0093, 0x0731: 0x1b26, 0x0732: 0x1d5a, 0x0733: 0x1b2f, 0x0734: 0x00ad, 0x0735: 0x1ba4,
+-	0x0736: 0x1d8e, 0x0737: 0x1e9e, 0x0738: 0x1b32, 0x0739: 0x00b1, 0x073a: 0x1ba7, 0x073b: 0x1d92,
+-	0x073c: 0x0099, 0x073d: 0x0087, 0x073e: 0x0089, 0x073f: 0x009b,
+-	// Block 0x1d, offset 0x740
+-	0x0741: 0x3bf0, 0x0743: 0x8800, 0x0744: 0x3bf7, 0x0745: 0x8800,
+-	0x0747: 0x3bfe, 0x0748: 0x8800, 0x0749: 0x3c05,
+-	0x074d: 0x8800,
+-	0x0760: 0x2f4f, 0x0761: 0x8800, 0x0762: 0x3c13,
+-	0x0764: 0x8800, 0x0765: 0x8800,
+-	0x076d: 0x3c0c, 0x076e: 0x2f4a, 0x076f: 0x2f54,
+-	0x0770: 0x3c1a, 0x0771: 0x3c21, 0x0772: 0x8800, 0x0773: 0x8800, 0x0774: 0x3c28, 0x0775: 0x3c2f,
+-	0x0776: 0x8800, 0x0777: 0x8800, 0x0778: 0x3c36, 0x0779: 0x3c3d, 0x077a: 0x8800, 0x077b: 0x8800,
+-	0x077c: 0x8800, 0x077d: 0x8800,
+-	// Block 0x1e, offset 0x780
+-	0x0780: 0x3c44, 0x0781: 0x3c4b, 0x0782: 0x8800, 0x0783: 0x8800, 0x0784: 0x3c60, 0x0785: 0x3c67,
+-	0x0786: 0x8800, 0x0787: 0x8800, 0x0788: 0x3c6e, 0x0789: 0x3c75,
+-	0x0791: 0x8800,
+-	0x0792: 0x8800,
+-	0x07a2: 0x8800,
+-	0x07a8: 0x8800, 0x07a9: 0x8800,
+-	0x07ab: 0x8800, 0x07ac: 0x3c8a, 0x07ad: 0x3c91, 0x07ae: 0x3c98, 0x07af: 0x3c9f,
+-	0x07b2: 0x8800, 0x07b3: 0x8800, 0x07b4: 0x8800, 0x07b5: 0x8800,
+-	// Block 0x1f, offset 0x7c0
+-	0x07e0: 0x0023, 0x07e1: 0x0025, 0x07e2: 0x0027, 0x07e3: 0x0029,
+-	0x07e4: 0x002b, 0x07e5: 0x002d, 0x07e6: 0x002f, 0x07e7: 0x0031, 0x07e8: 0x0033, 0x07e9: 0x19c4,
+-	0x07ea: 0x19c7, 0x07eb: 0x19ca, 0x07ec: 0x19cd, 0x07ed: 0x19d0, 0x07ee: 0x19d3, 0x07ef: 0x19d6,
+-	0x07f0: 0x19d9, 0x07f1: 0x19dc, 0x07f2: 0x19df, 0x07f3: 0x19e8, 0x07f4: 0x1baa, 0x07f5: 0x1bae,
+-	0x07f6: 0x1bb2, 0x07f7: 0x1bb6, 0x07f8: 0x1bba, 0x07f9: 0x1bbe, 0x07fa: 0x1bc2, 0x07fb: 0x1bc6,
+-	0x07fc: 0x1bca, 0x07fd: 0x1dc2, 0x07fe: 0x1dc7, 0x07ff: 0x1dcc,
+-	// Block 0x20, offset 0x800
+-	0x0800: 0x1dd1, 0x0801: 0x1dd6, 0x0802: 0x1ddb, 0x0803: 0x1de0, 0x0804: 0x1de5, 0x0805: 0x1dea,
+-	0x0806: 0x1def, 0x0807: 0x1df4, 0x0808: 0x19c1, 0x0809: 0x19e5, 0x080a: 0x1a09, 0x080b: 0x1a2d,
+-	0x080c: 0x1a51, 0x080d: 0x1a5a, 0x080e: 0x1a60, 0x080f: 0x1a66, 0x0810: 0x1a6c, 0x0811: 0x1ca2,
+-	0x0812: 0x1ca6, 0x0813: 0x1caa, 0x0814: 0x1cae, 0x0815: 0x1cb2, 0x0816: 0x1cb6, 0x0817: 0x1cba,
+-	0x0818: 0x1cbe, 0x0819: 0x1cc2, 0x081a: 0x1cc6, 0x081b: 0x1cca, 0x081c: 0x1c36, 0x081d: 0x1c3a,
+-	0x081e: 0x1c3e, 0x081f: 0x1c42, 0x0820: 0x1c46, 0x0821: 0x1c4a, 0x0822: 0x1c4e, 0x0823: 0x1c52,
+-	0x0824: 0x1c56, 0x0825: 0x1c5a, 0x0826: 0x1c5e, 0x0827: 0x1c62, 0x0828: 0x1c66, 0x0829: 0x1c6a,
+-	0x082a: 0x1c6e, 0x082b: 0x1c72, 0x082c: 0x1c76, 0x082d: 0x1c7a, 0x082e: 0x1c7e, 0x082f: 0x1c82,
+-	0x0830: 0x1c86, 0x0831: 0x1c8a, 0x0832: 0x1c8e, 0x0833: 0x1c92, 0x0834: 0x1c96, 0x0835: 0x1c9a,
+-	0x0836: 0x0043, 0x0837: 0x0045, 0x0838: 0x0047, 0x0839: 0x0049, 0x083a: 0x004b, 0x083b: 0x004d,
+-	0x083c: 0x004f, 0x083d: 0x0051, 0x083e: 0x0053, 0x083f: 0x0055,
+-	// Block 0x21, offset 0x840
+-	0x0840: 0x0731, 0x0841: 0x0755, 0x0842: 0x0761, 0x0843: 0x0771, 0x0844: 0x0779, 0x0845: 0x0785,
+-	0x0846: 0x078d, 0x0847: 0x0795, 0x0848: 0x07a1, 0x0849: 0x07f5, 0x084a: 0x080d, 0x084b: 0x081d,
+-	0x084c: 0x082d, 0x084d: 0x083d, 0x084e: 0x084d, 0x084f: 0x086d, 0x0850: 0x0871, 0x0851: 0x0875,
+-	0x0852: 0x08a9, 0x0853: 0x08d1, 0x0854: 0x08e1, 0x0855: 0x08e9, 0x0856: 0x08ed, 0x0857: 0x08f9,
+-	0x0858: 0x0915, 0x0859: 0x0919, 0x085a: 0x0931, 0x085b: 0x0935, 0x085c: 0x093d, 0x085d: 0x094d,
+-	0x085e: 0x09e9, 0x085f: 0x09fd, 0x0860: 0x0a3d, 0x0861: 0x0a51, 0x0862: 0x0a59, 0x0863: 0x0a5d,
+-	0x0864: 0x0a6d, 0x0865: 0x0a89, 0x0866: 0x0ab5, 0x0867: 0x0ac1, 0x0868: 0x0ae1, 0x0869: 0x0aed,
+-	0x086a: 0x0af1, 0x086b: 0x0af5, 0x086c: 0x0b0d, 0x086d: 0x0b11, 0x086e: 0x0b3d, 0x086f: 0x0b49,
+-	0x0870: 0x0b51, 0x0871: 0x0b59, 0x0872: 0x0b69, 0x0873: 0x0b71, 0x0874: 0x0b79, 0x0875: 0x0ba5,
+-	0x0876: 0x0ba9, 0x0877: 0x0bb1, 0x0878: 0x0bb5, 0x0879: 0x0bbd, 0x087a: 0x0bc5, 0x087b: 0x0bd5,
+-	0x087c: 0x0bf1, 0x087d: 0x0c69, 0x087e: 0x0c7d, 0x087f: 0x0c81,
+-	// Block 0x22, offset 0x880
+-	0x0880: 0x0d01, 0x0881: 0x0d05, 0x0882: 0x0d19, 0x0883: 0x0d1d, 0x0884: 0x0d25, 0x0885: 0x0d2d,
+-	0x0886: 0x0d35, 0x0887: 0x0d41, 0x0888: 0x0d69, 0x0889: 0x0d79, 0x088a: 0x0d8d, 0x088b: 0x0dfd,
+-	0x088c: 0x0e09, 0x088d: 0x0e19, 0x088e: 0x0e25, 0x088f: 0x0e31, 0x0890: 0x0e39, 0x0891: 0x0e3d,
+-	0x0892: 0x0e41, 0x0893: 0x0e45, 0x0894: 0x0e49, 0x0895: 0x0f01, 0x0896: 0x0f49, 0x0897: 0x0f55,
+-	0x0898: 0x0f59, 0x0899: 0x0f5d, 0x089a: 0x0f61, 0x089b: 0x0f69, 0x089c: 0x0f6d, 0x089d: 0x0f81,
+-	0x089e: 0x0f9d, 0x089f: 0x0fa5, 0x08a0: 0x0fe5, 0x08a1: 0x0fe9, 0x08a2: 0x0ff1, 0x08a3: 0x0ff5,
+-	0x08a4: 0x0ffd, 0x08a5: 0x1001, 0x08a6: 0x1025, 0x08a7: 0x1029, 0x08a8: 0x1045, 0x08a9: 0x1049,
+-	0x08aa: 0x104d, 0x08ab: 0x1051, 0x08ac: 0x1065, 0x08ad: 0x1089, 0x08ae: 0x108d, 0x08af: 0x1091,
+-	0x08b0: 0x10b5, 0x08b1: 0x10f5, 0x08b2: 0x10f9, 0x08b3: 0x1119, 0x08b4: 0x1129, 0x08b5: 0x1131,
+-	0x08b6: 0x1151, 0x08b7: 0x1175, 0x08b8: 0x11b9, 0x08b9: 0x11c1, 0x08ba: 0x11d5, 0x08bb: 0x11e1,
+-	0x08bc: 0x11e9, 0x08bd: 0x11f1, 0x08be: 0x11f5, 0x08bf: 0x11f9,
+-	// Block 0x23, offset 0x8c0
+-	0x08c0: 0x1211, 0x08c1: 0x1215, 0x08c2: 0x1231, 0x08c3: 0x1239, 0x08c4: 0x1241, 0x08c5: 0x1245,
+-	0x08c6: 0x1251, 0x08c7: 0x1259, 0x08c8: 0x125d, 0x08c9: 0x1261, 0x08ca: 0x1269, 0x08cb: 0x126d,
+-	0x08cc: 0x130d, 0x08cd: 0x1321, 0x08ce: 0x1355, 0x08cf: 0x1359, 0x08d0: 0x1361, 0x08d1: 0x138d,
+-	0x08d2: 0x1395, 0x08d3: 0x139d, 0x08d4: 0x13a5, 0x08d5: 0x13e1, 0x08d6: 0x13e5, 0x08d7: 0x13ed,
+-	0x08d8: 0x13f1, 0x08d9: 0x13f5, 0x08da: 0x1421, 0x08db: 0x1425, 0x08dc: 0x142d, 0x08dd: 0x1441,
+-	0x08de: 0x1445, 0x08df: 0x1461, 0x08e0: 0x1469, 0x08e1: 0x146d, 0x08e2: 0x1491, 0x08e3: 0x14b1,
+-	0x08e4: 0x14c1, 0x08e5: 0x14c5, 0x08e6: 0x14cd, 0x08e7: 0x14f9, 0x08e8: 0x14fd, 0x08e9: 0x150d,
+-	0x08ea: 0x1531, 0x08eb: 0x153d, 0x08ec: 0x154d, 0x08ed: 0x1565, 0x08ee: 0x156d, 0x08ef: 0x1571,
+-	0x08f0: 0x1575, 0x08f1: 0x1579, 0x08f2: 0x1585, 0x08f3: 0x1589, 0x08f4: 0x1591, 0x08f5: 0x15ad,
+-	0x08f6: 0x15b1, 0x08f7: 0x15b5, 0x08f8: 0x15cd, 0x08f9: 0x15d1, 0x08fa: 0x15d9, 0x08fb: 0x15ed,
+-	0x08fc: 0x15f1, 0x08fd: 0x15f5, 0x08fe: 0x15fd, 0x08ff: 0x1601,
+-	// Block 0x24, offset 0x900
+-	0x0906: 0x8800, 0x090b: 0x8800,
+-	0x090c: 0x3ef2, 0x090d: 0x8800, 0x090e: 0x3efa, 0x090f: 0x8800, 0x0910: 0x3f02, 0x0911: 0x8800,
+-	0x0912: 0x3f0a, 0x0913: 0x8800, 0x0914: 0x3f12, 0x0915: 0x8800, 0x0916: 0x3f1a, 0x0917: 0x8800,
+-	0x0918: 0x3f22, 0x0919: 0x8800, 0x091a: 0x3f2a, 0x091b: 0x8800, 0x091c: 0x3f32, 0x091d: 0x8800,
+-	0x091e: 0x3f3a, 0x091f: 0x8800, 0x0920: 0x3f42, 0x0921: 0x8800, 0x0922: 0x3f4a,
+-	0x0924: 0x8800, 0x0925: 0x3f52, 0x0926: 0x8800, 0x0927: 0x3f5a, 0x0928: 0x8800, 0x0929: 0x3f62,
+-	0x092f: 0x8800,
+-	0x0930: 0x3f6a, 0x0931: 0x3f72, 0x0932: 0x8800, 0x0933: 0x3f7a, 0x0934: 0x3f82, 0x0935: 0x8800,
+-	0x0936: 0x3f8a, 0x0937: 0x3f92, 0x0938: 0x8800, 0x0939: 0x3f9a, 0x093a: 0x3fa2, 0x093b: 0x8800,
+-	0x093c: 0x3faa, 0x093d: 0x3fb2,
+-	// Block 0x25, offset 0x940
+-	0x0954: 0x3eea,
+-	0x0959: 0x8608, 0x095a: 0x8608, 0x095b: 0x42c2, 0x095c: 0x42c8, 0x095d: 0x8800,
+-	0x095e: 0x3fba, 0x095f: 0x285f,
+-	0x0966: 0x8800,
+-	0x096b: 0x8800, 0x096c: 0x3fca, 0x096d: 0x8800, 0x096e: 0x3fd2, 0x096f: 0x8800,
+-	0x0970: 0x3fda, 0x0971: 0x8800, 0x0972: 0x3fe2, 0x0973: 0x8800, 0x0974: 0x3fea, 0x0975: 0x8800,
+-	0x0976: 0x3ff2, 0x0977: 0x8800, 0x0978: 0x3ffa, 0x0979: 0x8800, 0x097a: 0x4002, 0x097b: 0x8800,
+-	0x097c: 0x400a, 0x097d: 0x8800, 0x097e: 0x4012, 0x097f: 0x8800,
+-	// Block 0x26, offset 0x980
+-	0x0980: 0x401a, 0x0981: 0x8800, 0x0982: 0x4022, 0x0984: 0x8800, 0x0985: 0x402a,
+-	0x0986: 0x8800, 0x0987: 0x4032, 0x0988: 0x8800, 0x0989: 0x403a,
+-	0x098f: 0x8800, 0x0990: 0x4042, 0x0991: 0x404a,
+-	0x0992: 0x8800, 0x0993: 0x4052, 0x0994: 0x405a, 0x0995: 0x8800, 0x0996: 0x4062, 0x0997: 0x406a,
+-	0x0998: 0x8800, 0x0999: 0x4072, 0x099a: 0x407a, 0x099b: 0x8800, 0x099c: 0x4082, 0x099d: 0x408a,
+-	0x09af: 0x8800,
+-	0x09b0: 0x8800, 0x09b1: 0x8800, 0x09b2: 0x8800, 0x09b4: 0x3fc2,
+-	0x09b7: 0x4092, 0x09b8: 0x409a, 0x09b9: 0x40a2, 0x09ba: 0x40aa,
+-	0x09bd: 0x8800, 0x09be: 0x40b2, 0x09bf: 0x2874,
+-	// Block 0x27, offset 0x9c0
+-	0x09c0: 0x03a9, 0x09c1: 0x03ad, 0x09c2: 0x047d, 0x09c3: 0x0481, 0x09c4: 0x03b1, 0x09c5: 0x03b5,
+-	0x09c6: 0x03b9, 0x09c7: 0x0415, 0x09c8: 0x0419, 0x09c9: 0x041d, 0x09ca: 0x0421, 0x09cb: 0x0425,
+-	0x09cc: 0x0429, 0x09cd: 0x042d, 0x09ce: 0x0431,
+-	0x09d2: 0x0731, 0x09d3: 0x078d, 0x09d4: 0x073d, 0x09d5: 0x09ed, 0x09d6: 0x0741, 0x09d7: 0x0759,
+-	0x09d8: 0x0745, 0x09d9: 0x1005, 0x09da: 0x0779, 0x09db: 0x074d, 0x09dc: 0x0735, 0x09dd: 0x0a71,
+-	0x09de: 0x0a01, 0x09df: 0x07a1,
+-	// Block 0x28, offset 0xa00
+-	0x0a00: 0x2196, 0x0a01: 0x219c, 0x0a02: 0x21a2, 0x0a03: 0x21a8, 0x0a04: 0x21ae, 0x0a05: 0x21b4,
+-	0x0a06: 0x21ba, 0x0a07: 0x21c0, 0x0a08: 0x21c6, 0x0a09: 0x21cc, 0x0a0a: 0x21d2, 0x0a0b: 0x21d8,
+-	0x0a0c: 0x21de, 0x0a0d: 0x21e4, 0x0a0e: 0x28d1, 0x0a0f: 0x28da, 0x0a10: 0x28e3, 0x0a11: 0x28ec,
+-	0x0a12: 0x28f5, 0x0a13: 0x28fe, 0x0a14: 0x2907, 0x0a15: 0x2910, 0x0a16: 0x2919, 0x0a17: 0x292b,
+-	0x0a18: 0x2934, 0x0a19: 0x293d, 0x0a1a: 0x2946, 0x0a1b: 0x294f, 0x0a1c: 0x2922, 0x0a1d: 0x2d74,
+-	0x0a1e: 0x2ca5, 0x0a20: 0x21ea, 0x0a21: 0x2202, 0x0a22: 0x21f6, 0x0a23: 0x224a,
+-	0x0a24: 0x2208, 0x0a25: 0x2226, 0x0a26: 0x21f0, 0x0a27: 0x2220, 0x0a28: 0x21fc, 0x0a29: 0x2232,
+-	0x0a2a: 0x2262, 0x0a2b: 0x2280, 0x0a2c: 0x227a, 0x0a2d: 0x226e, 0x0a2e: 0x22bc, 0x0a2f: 0x2250,
+-	0x0a30: 0x225c, 0x0a31: 0x2274, 0x0a32: 0x2268, 0x0a33: 0x2292, 0x0a34: 0x223e, 0x0a35: 0x2286,
+-	0x0a36: 0x22b0, 0x0a37: 0x2298, 0x0a38: 0x222c, 0x0a39: 0x220e, 0x0a3a: 0x2244, 0x0a3b: 0x2256,
+-	0x0a3c: 0x228c, 0x0a3d: 0x2214, 0x0a3e: 0x22b6, 0x0a3f: 0x2238,
+-	// Block 0x29, offset 0xa40
+-	0x0a40: 0x229e, 0x0a41: 0x221a, 0x0a42: 0x22a4, 0x0a43: 0x22aa, 0x0a44: 0x09a1, 0x0a45: 0x0b75,
+-	0x0a46: 0x0d19, 0x0a47: 0x1139,
+-	0x0a50: 0x1d06, 0x0a51: 0x19eb,
+-	0x0a52: 0x19ee, 0x0a53: 0x19f1, 0x0a54: 0x19f4, 0x0a55: 0x19f7, 0x0a56: 0x19fa, 0x0a57: 0x19fd,
+-	0x0a58: 0x1a00, 0x0a59: 0x1a03, 0x0a5a: 0x1a0c, 0x0a5b: 0x1a0f, 0x0a5c: 0x1a12, 0x0a5d: 0x1a15,
+-	0x0a5e: 0x1a18, 0x0a5f: 0x1a1b, 0x0a60: 0x030d, 0x0a61: 0x0315, 0x0a62: 0x0319, 0x0a63: 0x0321,
+-	0x0a64: 0x0325, 0x0a65: 0x0329, 0x0a66: 0x0331, 0x0a67: 0x0339, 0x0a68: 0x033d, 0x0a69: 0x0345,
+-	0x0a6a: 0x0349, 0x0a6b: 0x034d, 0x0a6c: 0x0351, 0x0a6d: 0x0355, 0x0a6e: 0x27d3, 0x0a6f: 0x27da,
+-	0x0a70: 0x27e1, 0x0a71: 0x27e8, 0x0a72: 0x27ef, 0x0a73: 0x27f6, 0x0a74: 0x27fd, 0x0a75: 0x2804,
+-	0x0a76: 0x2812, 0x0a77: 0x2819, 0x0a78: 0x2820, 0x0a79: 0x2827, 0x0a7a: 0x282e, 0x0a7b: 0x2835,
+-	0x0a7c: 0x2cc4, 0x0a7d: 0x2b39, 0x0a7e: 0x280b,
+-	// Block 0x2a, offset 0xa80
+-	0x0a80: 0x0731, 0x0a81: 0x078d, 0x0a82: 0x073d, 0x0a83: 0x09ed, 0x0a84: 0x0791, 0x0a85: 0x0821,
+-	0x0a86: 0x0739, 0x0a87: 0x081d, 0x0a88: 0x077d, 0x0a89: 0x08f9, 0x0a8a: 0x0d79, 0x0a8b: 0x0f01,
+-	0x0a8c: 0x0e49, 0x0a8d: 0x0d8d, 0x0a8e: 0x14cd, 0x0a8f: 0x09fd, 0x0a90: 0x0d41, 0x0a91: 0x0dbd,
+-	0x0a92: 0x0d7d, 0x0a93: 0x10bd, 0x0a94: 0x096d, 0x0a95: 0x0f75, 0x0a96: 0x13f9, 0x0a97: 0x10d1,
+-	0x0a98: 0x08b5, 0x0a99: 0x1101, 0x0a9a: 0x100d, 0x0a9b: 0x0a89, 0x0a9c: 0x1481, 0x0a9d: 0x07f1,
+-	0x0a9e: 0x091d, 0x0a9f: 0x0e69, 0x0aa0: 0x1595, 0x0aa1: 0x07b5, 0x0aa2: 0x0845, 0x0aa3: 0x0e0d,
+-	0x0aa4: 0x0741, 0x0aa5: 0x0759, 0x0aa6: 0x0745, 0x0aa7: 0x0b4d, 0x0aa8: 0x0961, 0x0aa9: 0x08f1,
+-	0x0aaa: 0x0ac9, 0x0aab: 0x0abd, 0x0aac: 0x105d, 0x0aad: 0x07b1, 0x0aae: 0x140d, 0x0aaf: 0x090d,
+-	0x0ab0: 0x0a65, 0x0ab1: 0x1a1e, 0x0ab2: 0x1a21, 0x0ab3: 0x1a24, 0x0ab4: 0x1a27, 0x0ab5: 0x1a30,
+-	0x0ab6: 0x1a33, 0x0ab7: 0x1a36, 0x0ab8: 0x1a39, 0x0ab9: 0x1a3c, 0x0aba: 0x1a3f, 0x0abb: 0x1a42,
+-	0x0abc: 0x1a45, 0x0abd: 0x1a48, 0x0abe: 0x1a4b, 0x0abf: 0x1a54,
+-	// Block 0x2b, offset 0xac0
+-	0x0ac0: 0x1e08, 0x0ac1: 0x1e17, 0x0ac2: 0x1e26, 0x0ac3: 0x1e35, 0x0ac4: 0x1e44, 0x0ac5: 0x1e53,
+-	0x0ac6: 0x1e62, 0x0ac7: 0x1e71, 0x0ac8: 0x1e80, 0x0ac9: 0x22ce, 0x0aca: 0x22e0, 0x0acb: 0x22f2,
+-	0x0acc: 0x1a96, 0x0acd: 0x1d46, 0x0ace: 0x1b14, 0x0acf: 0x1cea, 0x0ad0: 0x053d, 0x0ad1: 0x0545,
+-	0x0ad2: 0x054d, 0x0ad3: 0x0555, 0x0ad4: 0x055d, 0x0ad5: 0x0561, 0x0ad6: 0x0565, 0x0ad7: 0x0569,
+-	0x0ad8: 0x056d, 0x0ad9: 0x0571, 0x0ada: 0x0575, 0x0adb: 0x0579, 0x0adc: 0x057d, 0x0add: 0x0581,
+-	0x0ade: 0x0585, 0x0adf: 0x0589, 0x0ae0: 0x058d, 0x0ae1: 0x0595, 0x0ae2: 0x0599, 0x0ae3: 0x059d,
+-	0x0ae4: 0x05a1, 0x0ae5: 0x05a5, 0x0ae6: 0x05a9, 0x0ae7: 0x05ad, 0x0ae8: 0x05b1, 0x0ae9: 0x05b5,
+-	0x0aea: 0x05b9, 0x0aeb: 0x05bd, 0x0aec: 0x05c1, 0x0aed: 0x05c5, 0x0aee: 0x05c9, 0x0aef: 0x05cd,
+-	0x0af0: 0x05d1, 0x0af1: 0x05d5, 0x0af2: 0x05d9, 0x0af3: 0x05e1, 0x0af4: 0x05e9, 0x0af5: 0x05f1,
+-	0x0af6: 0x05f5, 0x0af7: 0x05f9, 0x0af8: 0x05fd, 0x0af9: 0x0601, 0x0afa: 0x0605, 0x0afb: 0x0609,
+-	0x0afc: 0x060d, 0x0afd: 0x0611, 0x0afe: 0x0615,
+-	// Block 0x2c, offset 0xb00
+-	0x0b00: 0x2cd4, 0x0b01: 0x2b60, 0x0b02: 0x2ce4, 0x0b03: 0x2a2b, 0x0b04: 0x2ede, 0x0b05: 0x2a35,
+-	0x0b06: 0x2a3f, 0x0b07: 0x2f22, 0x0b08: 0x2b6d, 0x0b09: 0x2a49, 0x0b0a: 0x2a53, 0x0b0b: 0x2a5d,
+-	0x0b0c: 0x2b94, 0x0b0d: 0x2ba1, 0x0b0e: 0x2b7a, 0x0b0f: 0x2b87, 0x0b10: 0x2eb4, 0x0b11: 0x2bae,
+-	0x0b12: 0x2bbb, 0x0b13: 0x2d86, 0x0b14: 0x2866, 0x0b15: 0x2d99, 0x0b16: 0x2dac, 0x0b17: 0x2cf4,
+-	0x0b18: 0x2bc8, 0x0b19: 0x2dbf, 0x0b1a: 0x2dd2, 0x0b1b: 0x2bd5, 0x0b1c: 0x2a67, 0x0b1d: 0x2a71,
+-	0x0b1e: 0x2ec2, 0x0b1f: 0x2be2, 0x0b20: 0x2d04, 0x0b21: 0x2eef, 0x0b22: 0x2a7b, 0x0b23: 0x2a85,
+-	0x0b24: 0x2bef, 0x0b25: 0x2a8f, 0x0b26: 0x2a99, 0x0b27: 0x287b, 0x0b28: 0x2882, 0x0b29: 0x2aa3,
+-	0x0b2a: 0x2aad, 0x0b2b: 0x2de5, 0x0b2c: 0x2bfc, 0x0b2d: 0x2d14, 0x0b2e: 0x2df8, 0x0b2f: 0x2c09,
+-	0x0b30: 0x2ac1, 0x0b31: 0x2ab7, 0x0b32: 0x2f36, 0x0b33: 0x2c16, 0x0b34: 0x2e0b, 0x0b35: 0x2acb,
+-	0x0b36: 0x2d24, 0x0b37: 0x2ad5, 0x0b38: 0x2c30, 0x0b39: 0x2adf, 0x0b3a: 0x2c3d, 0x0b3b: 0x2f00,
+-	0x0b3c: 0x2c23, 0x0b3d: 0x2d34, 0x0b3e: 0x2c4a, 0x0b3f: 0x2889,
+-	// Block 0x2d, offset 0xb40
+-	0x0b40: 0x2f11, 0x0b41: 0x2ae9, 0x0b42: 0x2af3, 0x0b43: 0x2c57, 0x0b44: 0x2afd, 0x0b45: 0x2b07,
+-	0x0b46: 0x2b11, 0x0b47: 0x2d44, 0x0b48: 0x2c64, 0x0b49: 0x2890, 0x0b4a: 0x2e1e, 0x0b4b: 0x2ea9,
+-	0x0b4c: 0x2d54, 0x0b4d: 0x2c71, 0x0b4e: 0x2ed0, 0x0b4f: 0x2b1b, 0x0b50: 0x2b25, 0x0b51: 0x2c7e,
+-	0x0b52: 0x2897, 0x0b53: 0x2c8b, 0x0b54: 0x2d64, 0x0b55: 0x289e, 0x0b56: 0x2e31, 0x0b57: 0x2b2f,
+-	0x0b58: 0x1df9, 0x0b59: 0x1e0d, 0x0b5a: 0x1e1c, 0x0b5b: 0x1e2b, 0x0b5c: 0x1e3a, 0x0b5d: 0x1e49,
+-	0x0b5e: 0x1e58, 0x0b5f: 0x1e67, 0x0b60: 0x1e76, 0x0b61: 0x1e85, 0x0b62: 0x22d4, 0x0b63: 0x22e6,
+-	0x0b64: 0x22f8, 0x0b65: 0x2304, 0x0b66: 0x2310, 0x0b67: 0x231c, 0x0b68: 0x2328, 0x0b69: 0x2334,
+-	0x0b6a: 0x2340, 0x0b6b: 0x234c, 0x0b6c: 0x2388, 0x0b6d: 0x2394, 0x0b6e: 0x23a0, 0x0b6f: 0x23ac,
+-	0x0b70: 0x23b8, 0x0b71: 0x1d56, 0x0b72: 0x1b08, 0x0b73: 0x1a78, 0x0b74: 0x1d26, 0x0b75: 0x1b89,
+-	0x0b76: 0x1b98, 0x0b77: 0x1b0e, 0x0b78: 0x1d3e, 0x0b79: 0x1d42, 0x0b7a: 0x1aa2, 0x0b7b: 0x28ac,
+-	0x0b7c: 0x28ba, 0x0b7d: 0x28a5, 0x0b7e: 0x28b3, 0x0b7f: 0x2c98,
+-	// Block 0x2e, offset 0xb80
+-	0x0b80: 0x1b8c, 0x0b81: 0x1b74, 0x0b82: 0x1da2, 0x0b83: 0x1b5c, 0x0b84: 0x1b35, 0x0b85: 0x1aab,
+-	0x0b86: 0x1aba, 0x0b87: 0x1a8a, 0x0b88: 0x1d32, 0x0b89: 0x1e94, 0x0b8a: 0x1b8f, 0x0b8b: 0x1b77,
+-	0x0b8c: 0x1da6, 0x0b8d: 0x1db2, 0x0b8e: 0x1b68, 0x0b8f: 0x1b3e, 0x0b90: 0x1a99, 0x0b91: 0x1d5e,
+-	0x0b92: 0x1cf2, 0x0b93: 0x1cde, 0x0b94: 0x1d0e, 0x0b95: 0x1db6, 0x0b96: 0x1b6b, 0x0b97: 0x1b0b,
+-	0x0b98: 0x1b41, 0x0b99: 0x1b20, 0x0b9a: 0x1b83, 0x0b9b: 0x1dba, 0x0b9c: 0x1b6e, 0x0b9d: 0x1b02,
+-	0x0b9e: 0x1b44, 0x0b9f: 0x1d7e, 0x0ba0: 0x1d36, 0x0ba1: 0x1b56, 0x0ba2: 0x1d66, 0x0ba3: 0x1d82,
+-	0x0ba4: 0x1d3a, 0x0ba5: 0x1b59, 0x0ba6: 0x1d6a, 0x0ba7: 0x242a, 0x0ba8: 0x243e, 0x0ba9: 0x1ad8,
+-	0x0baa: 0x1d62, 0x0bab: 0x1cf6, 0x0bac: 0x1ce2, 0x0bad: 0x1d8a, 0x0bae: 0x28c1, 0x0baf: 0x2958,
+-	0x0bb0: 0x1b9b, 0x0bb1: 0x1b86, 0x0bb2: 0x1dbe, 0x0bb3: 0x1b71, 0x0bb4: 0x1b92, 0x0bb5: 0x1b7a,
+-	0x0bb6: 0x1daa, 0x0bb7: 0x1b5f, 0x0bb8: 0x1b38, 0x0bb9: 0x1ac3, 0x0bba: 0x1b95, 0x0bbb: 0x1b7d,
+-	0x0bbc: 0x1dae, 0x0bbd: 0x1b62, 0x0bbe: 0x1b3b, 0x0bbf: 0x1ac6,
+-	// Block 0x2f, offset 0xbc0
+-	0x0bc0: 0x1d6e, 0x0bc1: 0x1cfa, 0x0bc2: 0x1e8f, 0x0bc3: 0x1a7b, 0x0bc4: 0x1afc, 0x0bc5: 0x1aff,
+-	0x0bc6: 0x2437, 0x0bc7: 0x1cd6, 0x0bc8: 0x1b05, 0x0bc9: 0x1a8d, 0x0bca: 0x1b23, 0x0bcb: 0x1a90,
+-	0x0bcc: 0x1b2c, 0x0bcd: 0x1aae, 0x0bce: 0x1ab1, 0x0bcf: 0x1b47, 0x0bd0: 0x1b4d, 0x0bd1: 0x1b50,
+-	0x0bd2: 0x1d72, 0x0bd3: 0x1b53, 0x0bd4: 0x1b65, 0x0bd5: 0x1d7a, 0x0bd6: 0x1d86, 0x0bd7: 0x1ad2,
+-	0x0bd8: 0x1e99, 0x0bd9: 0x1cfe, 0x0bda: 0x1ad5, 0x0bdb: 0x1b9e, 0x0bdc: 0x1ae7, 0x0bdd: 0x1af6,
+-	0x0bde: 0x2424, 0x0bdf: 0x241e, 0x0be0: 0x1e03, 0x0be1: 0x1e12, 0x0be2: 0x1e21, 0x0be3: 0x1e30,
+-	0x0be4: 0x1e3f, 0x0be5: 0x1e4e, 0x0be6: 0x1e5d, 0x0be7: 0x1e6c, 0x0be8: 0x1e7b, 0x0be9: 0x22c8,
+-	0x0bea: 0x22da, 0x0beb: 0x22ec, 0x0bec: 0x22fe, 0x0bed: 0x230a, 0x0bee: 0x2316, 0x0bef: 0x2322,
+-	0x0bf0: 0x232e, 0x0bf1: 0x233a, 0x0bf2: 0x2346, 0x0bf3: 0x2382, 0x0bf4: 0x238e, 0x0bf5: 0x239a,
+-	0x0bf6: 0x23a6, 0x0bf7: 0x23b2, 0x0bf8: 0x23be, 0x0bf9: 0x23c4, 0x0bfa: 0x23ca, 0x0bfb: 0x23d0,
+-	0x0bfc: 0x23d6, 0x0bfd: 0x23e8, 0x0bfe: 0x23ee, 0x0bff: 0x1d52,
+-	// Block 0x30, offset 0xc00
+-	0x0c00: 0x13e9, 0x0c01: 0x0d6d, 0x0c02: 0x1445, 0x0c03: 0x1411, 0x0c04: 0x0ec9, 0x0c05: 0x075d,
+-	0x0c06: 0x0951, 0x0c07: 0x1699, 0x0c08: 0x1699, 0x0c09: 0x0a7d, 0x0c0a: 0x14cd, 0x0c0b: 0x09b5,
+-	0x0c0c: 0x0a79, 0x0c0d: 0x0c61, 0x0c0e: 0x1041, 0x0c0f: 0x11d1, 0x0c10: 0x1309, 0x0c11: 0x1345,
+-	0x0c12: 0x1379, 0x0c13: 0x148d, 0x0c14: 0x0de5, 0x0c15: 0x0e71, 0x0c16: 0x0f1d, 0x0c17: 0x0fb5,
+-	0x0c18: 0x12d1, 0x0c19: 0x14b5, 0x0c1a: 0x15e1, 0x0c1b: 0x0781, 0x0c1c: 0x0925, 0x0c1d: 0x0df9,
+-	0x0c1e: 0x0f41, 0x0c1f: 0x1305, 0x0c20: 0x1631, 0x0c21: 0x0b25, 0x0c22: 0x0ee9, 0x0c23: 0x12f5,
+-	0x0c24: 0x1389, 0x0c25: 0x0c95, 0x0c26: 0x122d, 0x0c27: 0x1351, 0x0c28: 0x0b91, 0x0c29: 0x0d81,
+-	0x0c2a: 0x0e89, 0x0c2b: 0x0f8d, 0x0c2c: 0x1499, 0x0c2d: 0x07c1, 0x0c2e: 0x0859, 0x0c2f: 0x08c5,
+-	0x0c30: 0x0cfd, 0x0c31: 0x0df1, 0x0c32: 0x0f3d, 0x0c33: 0x1061, 0x0c34: 0x11e9, 0x0c35: 0x12fd,
+-	0x0c36: 0x1315, 0x0c37: 0x1439, 0x0c38: 0x155d, 0x0c39: 0x1611, 0x0c3a: 0x162d, 0x0c3b: 0x109d,
+-	0x0c3c: 0x10dd, 0x0c3d: 0x1195, 0x0c3e: 0x12b5, 0x0c3f: 0x14e9,
+-	// Block 0x31, offset 0xc40
+-	0x0c40: 0x1639, 0x0c41: 0x13bd, 0x0c42: 0x0a39, 0x0c43: 0x0bad, 0x0c44: 0x114d, 0x0c45: 0x120d,
+-	0x0c46: 0x0f71, 0x0c47: 0x10a5, 0x0c48: 0x1409, 0x0c49: 0x1555, 0x0c4a: 0x0a35, 0x0c4b: 0x0b01,
+-	0x0c4c: 0x0de9, 0x0c4d: 0x0e9d, 0x0c4e: 0x0ed1, 0x0c4f: 0x1185, 0x0c50: 0x11ad, 0x0c51: 0x1515,
+-	0x0c52: 0x08c1, 0x0c53: 0x1219, 0x0c54: 0x0865, 0x0c55: 0x0861, 0x0c56: 0x1109, 0x0c57: 0x1199,
+-	0x0c58: 0x12cd, 0x0c59: 0x151d, 0x0c5a: 0x13d9, 0x0c5b: 0x0c99, 0x0c5c: 0x0de5, 0x0c5d: 0x13c9,
+-	0x0c5e: 0x0769, 0x0c5f: 0x0ad5, 0x0c60: 0x0c05, 0x0c61: 0x0fa1, 0x0c62: 0x1021, 0x0c63: 0x08e5,
+-	0x0c64: 0x10ad, 0x0c65: 0x07d1, 0x0c66: 0x0be9, 0x0c67: 0x0749, 0x0c68: 0x0e5d, 0x0c69: 0x0d15,
+-	0x0c6a: 0x1181, 0x0c6b: 0x0939, 0x0c6c: 0x0a25, 0x0c6d: 0x106d, 0x0c6e: 0x12d5, 0x0c6f: 0x13ad,
+-	0x0c70: 0x0e29, 0x0c71: 0x1469, 0x0c72: 0x0e55, 0x0c73: 0x0ca9, 0x0c74: 0x128d, 0x0c75: 0x0cc9,
+-	0x0c76: 0x101d, 0x0c77: 0x079d, 0x0c78: 0x0819, 0x0c79: 0x085d, 0x0c7a: 0x0dc5, 0x0c7b: 0x116d,
+-	0x0c7c: 0x1265, 0x0c7d: 0x13b9, 0x0c7e: 0x14c9, 0x0c7f: 0x08cd,
+-	// Block 0x32, offset 0xc80
+-	0x0c80: 0x0981, 0x0c81: 0x0a89, 0x0c82: 0x0ba1, 0x0c83: 0x0d31, 0x0c84: 0x0eed, 0x0c85: 0x10b1,
+-	0x0c86: 0x1505, 0x0c87: 0x15e9, 0x0c88: 0x163d, 0x0c89: 0x1655, 0x0c8a: 0x08a9, 0x0c8b: 0x0d65,
+-	0x0c8c: 0x0e15, 0x0c8d: 0x145d, 0x0c8e: 0x0b6d, 0x0c8f: 0x0c49, 0x0c90: 0x0c65, 0x0c91: 0x0cf5,
+-	0x0c92: 0x0edd, 0x0c93: 0x0f29, 0x0c94: 0x0fd9, 0x0c95: 0x10fd, 0x0c96: 0x11a1, 0x0c97: 0x1205,
+-	0x0c98: 0x144d, 0x0c99: 0x12dd, 0x0c9a: 0x1475, 0x0c9b: 0x14ed, 0x0c9c: 0x0881, 0x0c9d: 0x08ad,
+-	0x0c9e: 0x0995, 0x0c9f: 0x0f19, 0x0ca0: 0x1365, 0x0ca1: 0x13ad, 0x0ca2: 0x0b8d, 0x0ca3: 0x0bfd,
+-	0x0ca4: 0x0cc1, 0x0ca5: 0x0e21, 0x0ca6: 0x1149, 0x0ca7: 0x0f95, 0x0ca8: 0x07ad, 0x0ca9: 0x09f1,
+-	0x0caa: 0x0ad5, 0x0cab: 0x0b39, 0x0cac: 0x0c09, 0x0cad: 0x0fb1, 0x0cae: 0x0fcd, 0x0caf: 0x11dd,
+-	0x0cb0: 0x11fd, 0x0cb1: 0x14d1, 0x0cb2: 0x1551, 0x0cb3: 0x1561, 0x0cb4: 0x159d, 0x0cb5: 0x07c5,
+-	0x0cb6: 0x10f1, 0x0cb7: 0x14bd, 0x0cb8: 0x1539, 0x0cb9: 0x0c21, 0x0cba: 0x0789, 0x0cbb: 0x07e9,
+-	0x0cbc: 0x0ad9, 0x0cbd: 0x0af9, 0x0cbe: 0x0d21, 0x0cbf: 0x0de5,
+-	// Block 0x33, offset 0xcc0
+-	0x0cc0: 0x0f35, 0x0cc1: 0x103d, 0x0cc2: 0x12e9, 0x0cc3: 0x1489, 0x0cc4: 0x1691, 0x0cc5: 0x0d55,
+-	0x0cc6: 0x1511, 0x0cc7: 0x08a5, 0x0cc8: 0x0da1, 0x0cc9: 0x0dad, 0x0cca: 0x0e81, 0x0ccb: 0x0eb9,
+-	0x0ccc: 0x0fbd, 0x0ccd: 0x1019, 0x0cce: 0x1099, 0x0ccf: 0x117d, 0x0cd0: 0x15a9, 0x0cd1: 0x0821,
+-	0x0cd2: 0x0c75, 0x0cd3: 0x1521, 0x0cd4: 0x07d9, 0x0cd5: 0x0b1d, 0x0cd6: 0x0ea1, 0x0cd7: 0x1451,
+-	0x0cd8: 0x0bd9, 0x0cd9: 0x0c29, 0x0cda: 0x0db5, 0x0cdb: 0x0fa1, 0x0cdc: 0x1529, 0x0cdd: 0x0889,
+-	0x0cde: 0x0971, 0x0cdf: 0x0b09, 0x0ce0: 0x0d45, 0x0ce1: 0x0d91, 0x0ce2: 0x0dd1, 0x0ce3: 0x0e65,
+-	0x0ce4: 0x0fb9, 0x0ce5: 0x102d, 0x0ce6: 0x11c9, 0x0ce7: 0x1369, 0x0ce8: 0x1375, 0x0ce9: 0x14c5,
+-	0x0cea: 0x1545, 0x0ceb: 0x08f5, 0x0cec: 0x0ebd, 0x0ced: 0x0975, 0x0cee: 0x0f39, 0x0cef: 0x0fdd,
+-	0x0cf0: 0x12f9, 0x0cf1: 0x152d, 0x0cf2: 0x1619, 0x0cf3: 0x1641, 0x0cf4: 0x0da9, 0x0cf5: 0x0e99,
+-	0x0cf6: 0x1235, 0x0cf7: 0x1129, 0x0cf8: 0x1135, 0x0cf9: 0x1159, 0x0cfa: 0x0f89, 0x0cfb: 0x0f11,
+-	0x0cfc: 0x13d5, 0x0cfd: 0x07a5, 0x0cfe: 0x129d, 0x0cff: 0x088d,
+-	// Block 0x34, offset 0xd00
+-	0x0d00: 0x087d, 0x0d01: 0x0b7d, 0x0d02: 0x0c9d, 0x0d03: 0x1165, 0x0d04: 0x0ac5, 0x0d05: 0x0e75,
+-	0x0d06: 0x0d61, 0x0d07: 0x1459, 0x0d08: 0x1359, 0x0d09: 0x1519, 0x0d0a: 0x1395, 0x0d0b: 0x0b99,
+-	0x0d0c: 0x07f9, 0x0d0d: 0x09cd, 0x0d10: 0x0a21,
+-	0x0d12: 0x0d51, 0x0d15: 0x0869, 0x0d16: 0x0f91, 0x0d17: 0x1055,
+-	0x0d18: 0x10b9, 0x0d19: 0x10d5, 0x0d1a: 0x10d9, 0x0d1b: 0x10ed, 0x0d1c: 0x1569, 0x0d1d: 0x115d,
+-	0x0d1e: 0x11e1, 0x0d20: 0x1301, 0x0d22: 0x13c5,
+-	0x0d25: 0x1479, 0x0d26: 0x14a5,
+-	0x0d2a: 0x15bd, 0x0d2b: 0x15c1, 0x0d2c: 0x15c5, 0x0d2d: 0x1629, 0x0d2e: 0x149d, 0x0d2f: 0x1535,
+-	0x0d30: 0x07c9, 0x0d31: 0x07ed, 0x0d32: 0x0801, 0x0d33: 0x08bd, 0x0d34: 0x08c9, 0x0d35: 0x0909,
+-	0x0d36: 0x09bd, 0x0d37: 0x09d9, 0x0d38: 0x09e1, 0x0d39: 0x0a1d, 0x0d3a: 0x0a29, 0x0d3b: 0x0b05,
+-	0x0d3c: 0x0b0d, 0x0d3d: 0x0c15, 0x0d3e: 0x0c3d, 0x0d3f: 0x0c45,
+-	// Block 0x35, offset 0xd40
+-	0x0d40: 0x0c5d, 0x0d41: 0x0d09, 0x0d42: 0x0d39, 0x0d43: 0x0d59, 0x0d44: 0x0dc9, 0x0d45: 0x0e8d,
+-	0x0d46: 0x0ea9, 0x0d47: 0x0ed9, 0x0d48: 0x0f2d, 0x0d49: 0x0f4d, 0x0d4a: 0x0fc1, 0x0d4b: 0x10a1,
+-	0x0d4c: 0x10bd, 0x0d4d: 0x10c5, 0x0d4e: 0x10c1, 0x0d4f: 0x10c9, 0x0d50: 0x10cd, 0x0d51: 0x10d1,
+-	0x0d52: 0x10e5, 0x0d53: 0x10e9, 0x0d54: 0x110d, 0x0d55: 0x1121, 0x0d56: 0x113d, 0x0d57: 0x11a1,
+-	0x0d58: 0x11a9, 0x0d59: 0x11b1, 0x0d5a: 0x11c5, 0x0d5b: 0x11ed, 0x0d5c: 0x123d, 0x0d5d: 0x1271,
+-	0x0d5e: 0x1271, 0x0d5f: 0x12d9, 0x0d60: 0x1381, 0x0d61: 0x1399, 0x0d62: 0x13cd, 0x0d63: 0x13d1,
+-	0x0d64: 0x1415, 0x0d65: 0x1419, 0x0d66: 0x1471, 0x0d67: 0x1479, 0x0d68: 0x1549, 0x0d69: 0x158d,
+-	0x0d6a: 0x15a5, 0x0d6b: 0x0c0d, 0x0d6c: 0x1780, 0x0d6d: 0x1255,
+-	0x0d70: 0x0751, 0x0d71: 0x0855, 0x0d72: 0x0815, 0x0d73: 0x07bd, 0x0d74: 0x07fd, 0x0d75: 0x0829,
+-	0x0d76: 0x08b9, 0x0d77: 0x08d5, 0x0d78: 0x09bd, 0x0d79: 0x09a9, 0x0d7a: 0x09b9, 0x0d7b: 0x09d5,
+-	0x0d7c: 0x0a21, 0x0d7d: 0x0a31, 0x0d7e: 0x0a75, 0x0d7f: 0x0a81,
+-	// Block 0x36, offset 0xd80
+-	0x0d80: 0x0a9d, 0x0d81: 0x0aad, 0x0d82: 0x0b95, 0x0d83: 0x0b9d, 0x0d84: 0x0bcd, 0x0d85: 0x0bed,
+-	0x0d86: 0x0c1d, 0x0d87: 0x0c35, 0x0d88: 0x0c25, 0x0d89: 0x0c45, 0x0d8a: 0x0c39, 0x0d8b: 0x0c5d,
+-	0x0d8c: 0x0c79, 0x0d8d: 0x0cd1, 0x0d8e: 0x0cdd, 0x0d8f: 0x0ce5, 0x0d90: 0x0d0d, 0x0d91: 0x0d51,
+-	0x0d92: 0x0d81, 0x0d93: 0x0d85, 0x0d94: 0x0d99, 0x0d95: 0x0e19, 0x0d96: 0x0e29, 0x0d97: 0x0e81,
+-	0x0d98: 0x0ecd, 0x0d99: 0x0ec5, 0x0d9a: 0x0ed9, 0x0d9b: 0x0ef5, 0x0d9c: 0x0f2d, 0x0d9d: 0x1085,
+-	0x0d9e: 0x0f51, 0x0d9f: 0x0f85, 0x0da0: 0x0f91, 0x0da1: 0x0fd1, 0x0da2: 0x0fed, 0x0da3: 0x1011,
+-	0x0da4: 0x1035, 0x0da5: 0x1039, 0x0da6: 0x1055, 0x0da7: 0x1059, 0x0da8: 0x1069, 0x0da9: 0x107d,
+-	0x0daa: 0x1079, 0x0dab: 0x10a9, 0x0dac: 0x1125, 0x0dad: 0x113d, 0x0dae: 0x1155, 0x0daf: 0x118d,
+-	0x0db0: 0x11a1, 0x0db1: 0x11bd, 0x0db2: 0x11ed, 0x0db3: 0x12a1, 0x0db4: 0x12c9, 0x0db5: 0x133d,
+-	0x0db6: 0x1385, 0x0db7: 0x1391, 0x0db8: 0x1399, 0x0db9: 0x13b1, 0x0dba: 0x13c5, 0x0dbb: 0x13b5,
+-	0x0dbc: 0x13cd, 0x0dbd: 0x13c9, 0x0dbe: 0x13c1, 0x0dbf: 0x13d1,
+-	// Block 0x37, offset 0xdc0
+-	0x0dc0: 0x13dd, 0x0dc1: 0x1419, 0x0dc2: 0x1455, 0x0dc3: 0x1485, 0x0dc4: 0x14b9, 0x0dc5: 0x14d9,
+-	0x0dc6: 0x1525, 0x0dc7: 0x1549, 0x0dc8: 0x1569, 0x0dc9: 0x157d, 0x0dca: 0x158d, 0x0dcb: 0x1599,
+-	0x0dcc: 0x15a5, 0x0dcd: 0x15f9, 0x0dce: 0x1699, 0x0dcf: 0x1717, 0x0dd0: 0x1712, 0x0dd1: 0x1744,
+-	0x0dd2: 0x0679, 0x0dd3: 0x06a1, 0x0dd4: 0x06a5, 0x0dd5: 0x17c6, 0x0dd6: 0x17f3, 0x0dd7: 0x186b,
+-	0x0dd8: 0x1685, 0x0dd9: 0x1695,
+-	// Block 0x38, offset 0xe00
+-	0x0e00: 0x1b17, 0x0e01: 0x1b1a, 0x0e02: 0x1b1d, 0x0e03: 0x1d4a, 0x0e04: 0x1d4e, 0x0e05: 0x1ba1,
+-	0x0e06: 0x1ba1,
+-	0x0e13: 0x1eb7, 0x0e14: 0x1ea8, 0x0e15: 0x1ead, 0x0e16: 0x1ebc, 0x0e17: 0x1eb2,
+-	0x0e1d: 0x4376,
+-	0x0e1e: 0x801a, 0x0e1f: 0x43e8, 0x0e20: 0x0227, 0x0e21: 0x020f, 0x0e22: 0x0218, 0x0e23: 0x021b,
+-	0x0e24: 0x021e, 0x0e25: 0x0221, 0x0e26: 0x0224, 0x0e27: 0x022a, 0x0e28: 0x022d, 0x0e29: 0x0017,
+-	0x0e2a: 0x43d6, 0x0e2b: 0x43dc, 0x0e2c: 0x44da, 0x0e2d: 0x44e2, 0x0e2e: 0x432e, 0x0e2f: 0x4334,
+-	0x0e30: 0x433a, 0x0e31: 0x4340, 0x0e32: 0x434c, 0x0e33: 0x4352, 0x0e34: 0x4358, 0x0e35: 0x4364,
+-	0x0e36: 0x436a, 0x0e38: 0x4370, 0x0e39: 0x437c, 0x0e3a: 0x4382, 0x0e3b: 0x4388,
+-	0x0e3c: 0x4394, 0x0e3e: 0x439a,
+-	// Block 0x39, offset 0xe40
+-	0x0e40: 0x43a0, 0x0e41: 0x43a6, 0x0e43: 0x43ac, 0x0e44: 0x43b2,
+-	0x0e46: 0x43be, 0x0e47: 0x43c4, 0x0e48: 0x43ca, 0x0e49: 0x43d0, 0x0e4a: 0x43e2, 0x0e4b: 0x435e,
+-	0x0e4c: 0x4346, 0x0e4d: 0x438e, 0x0e4e: 0x43b8, 0x0e4f: 0x1ec1, 0x0e50: 0x0293, 0x0e51: 0x0293,
+-	0x0e52: 0x029c, 0x0e53: 0x029c, 0x0e54: 0x029c, 0x0e55: 0x029c, 0x0e56: 0x029f, 0x0e57: 0x029f,
+-	0x0e58: 0x029f, 0x0e59: 0x029f, 0x0e5a: 0x02a5, 0x0e5b: 0x02a5, 0x0e5c: 0x02a5, 0x0e5d: 0x02a5,
+-	0x0e5e: 0x0299, 0x0e5f: 0x0299, 0x0e60: 0x0299, 0x0e61: 0x0299, 0x0e62: 0x02a2, 0x0e63: 0x02a2,
+-	0x0e64: 0x02a2, 0x0e65: 0x02a2, 0x0e66: 0x0296, 0x0e67: 0x0296, 0x0e68: 0x0296, 0x0e69: 0x0296,
+-	0x0e6a: 0x02c9, 0x0e6b: 0x02c9, 0x0e6c: 0x02c9, 0x0e6d: 0x02c9, 0x0e6e: 0x02cc, 0x0e6f: 0x02cc,
+-	0x0e70: 0x02cc, 0x0e71: 0x02cc, 0x0e72: 0x02ab, 0x0e73: 0x02ab, 0x0e74: 0x02ab, 0x0e75: 0x02ab,
+-	0x0e76: 0x02a8, 0x0e77: 0x02a8, 0x0e78: 0x02a8, 0x0e79: 0x02a8, 0x0e7a: 0x02ae, 0x0e7b: 0x02ae,
+-	0x0e7c: 0x02ae, 0x0e7d: 0x02ae, 0x0e7e: 0x02b1, 0x0e7f: 0x02b1,
+-	// Block 0x3a, offset 0xe80
+-	0x0e80: 0x02b1, 0x0e81: 0x02b1, 0x0e82: 0x02ba, 0x0e83: 0x02ba, 0x0e84: 0x02b7, 0x0e85: 0x02b7,
+-	0x0e86: 0x02bd, 0x0e87: 0x02bd, 0x0e88: 0x02b4, 0x0e89: 0x02b4, 0x0e8a: 0x02c3, 0x0e8b: 0x02c3,
+-	0x0e8c: 0x02c0, 0x0e8d: 0x02c0, 0x0e8e: 0x02cf, 0x0e8f: 0x02cf, 0x0e90: 0x02cf, 0x0e91: 0x02cf,
+-	0x0e92: 0x02d5, 0x0e93: 0x02d5, 0x0e94: 0x02d5, 0x0e95: 0x02d5, 0x0e96: 0x02db, 0x0e97: 0x02db,
+-	0x0e98: 0x02db, 0x0e99: 0x02db, 0x0e9a: 0x02d8, 0x0e9b: 0x02d8, 0x0e9c: 0x02d8, 0x0e9d: 0x02d8,
+-	0x0e9e: 0x02de, 0x0e9f: 0x02de, 0x0ea0: 0x02e1, 0x0ea1: 0x02e1, 0x0ea2: 0x02e1, 0x0ea3: 0x02e1,
+-	0x0ea4: 0x4454, 0x0ea5: 0x4454, 0x0ea6: 0x02e7, 0x0ea7: 0x02e7, 0x0ea8: 0x02e7, 0x0ea9: 0x02e7,
+-	0x0eaa: 0x02e4, 0x0eab: 0x02e4, 0x0eac: 0x02e4, 0x0ead: 0x02e4, 0x0eae: 0x0302, 0x0eaf: 0x0302,
+-	0x0eb0: 0x444e, 0x0eb1: 0x444e,
+-	// Block 0x3b, offset 0xec0
+-	0x0ed3: 0x02d2, 0x0ed4: 0x02d2, 0x0ed5: 0x02d2, 0x0ed6: 0x02d2, 0x0ed7: 0x02f0,
+-	0x0ed8: 0x02f0, 0x0ed9: 0x02ed, 0x0eda: 0x02ed, 0x0edb: 0x02f3, 0x0edc: 0x02f3, 0x0edd: 0x2191,
+-	0x0ede: 0x02f9, 0x0edf: 0x02f9, 0x0ee0: 0x02ea, 0x0ee1: 0x02ea, 0x0ee2: 0x02f6, 0x0ee3: 0x02f6,
+-	0x0ee4: 0x02ff, 0x0ee5: 0x02ff, 0x0ee6: 0x02ff, 0x0ee7: 0x02ff, 0x0ee8: 0x0287, 0x0ee9: 0x0287,
+-	0x0eea: 0x26ec, 0x0eeb: 0x26ec, 0x0eec: 0x275c, 0x0eed: 0x275c, 0x0eee: 0x272b, 0x0eef: 0x272b,
+-	0x0ef0: 0x2747, 0x0ef1: 0x2747, 0x0ef2: 0x2740, 0x0ef3: 0x2740, 0x0ef4: 0x274e, 0x0ef5: 0x274e,
+-	0x0ef6: 0x2755, 0x0ef7: 0x2755, 0x0ef8: 0x2755, 0x0ef9: 0x2732, 0x0efa: 0x2732, 0x0efb: 0x2732,
+-	0x0efc: 0x02fc, 0x0efd: 0x02fc, 0x0efe: 0x02fc, 0x0eff: 0x02fc,
+-	// Block 0x3c, offset 0xf00
+-	0x0f00: 0x26f3, 0x0f01: 0x26fa, 0x0f02: 0x2716, 0x0f03: 0x2732, 0x0f04: 0x2739, 0x0f05: 0x1ecb,
+-	0x0f06: 0x1ed0, 0x0f07: 0x1ed5, 0x0f08: 0x1ee4, 0x0f09: 0x1ef3, 0x0f0a: 0x1ef8, 0x0f0b: 0x1efd,
+-	0x0f0c: 0x1f02, 0x0f0d: 0x1f07, 0x0f0e: 0x1f16, 0x0f0f: 0x1f25, 0x0f10: 0x1f2a, 0x0f11: 0x1f2f,
+-	0x0f12: 0x1f3e, 0x0f13: 0x1f4d, 0x0f14: 0x1f52, 0x0f15: 0x1f57, 0x0f16: 0x1f5c, 0x0f17: 0x1f6b,
+-	0x0f18: 0x1f70, 0x0f19: 0x1f7f, 0x0f1a: 0x1f84, 0x0f1b: 0x1f89, 0x0f1c: 0x1f98, 0x0f1d: 0x1f9d,
+-	0x0f1e: 0x1fa2, 0x0f1f: 0x1fac, 0x0f20: 0x1fe8, 0x0f21: 0x1ff7, 0x0f22: 0x2006, 0x0f23: 0x200b,
+-	0x0f24: 0x2010, 0x0f25: 0x201a, 0x0f26: 0x2029, 0x0f27: 0x202e, 0x0f28: 0x203d, 0x0f29: 0x2042,
+-	0x0f2a: 0x2047, 0x0f2b: 0x2056, 0x0f2c: 0x205b, 0x0f2d: 0x206a, 0x0f2e: 0x206f, 0x0f2f: 0x2074,
+-	0x0f30: 0x2079, 0x0f31: 0x207e, 0x0f32: 0x2083, 0x0f33: 0x2088, 0x0f34: 0x208d, 0x0f35: 0x2092,
+-	0x0f36: 0x2097, 0x0f37: 0x209c, 0x0f38: 0x20a1, 0x0f39: 0x20a6, 0x0f3a: 0x20ab, 0x0f3b: 0x20b0,
+-	0x0f3c: 0x20b5, 0x0f3d: 0x20ba, 0x0f3e: 0x20bf, 0x0f3f: 0x20c9,
+-	// Block 0x3d, offset 0xf40
+-	0x0f40: 0x20ce, 0x0f41: 0x20d3, 0x0f42: 0x20d8, 0x0f43: 0x20e2, 0x0f44: 0x20e7, 0x0f45: 0x20f1,
+-	0x0f46: 0x20f6, 0x0f47: 0x20fb, 0x0f48: 0x2100, 0x0f49: 0x2105, 0x0f4a: 0x210a, 0x0f4b: 0x210f,
+-	0x0f4c: 0x2114, 0x0f4d: 0x2119, 0x0f4e: 0x2128, 0x0f4f: 0x2137, 0x0f50: 0x213c, 0x0f51: 0x2141,
+-	0x0f52: 0x2146, 0x0f53: 0x214b, 0x0f54: 0x2150, 0x0f55: 0x215a, 0x0f56: 0x215f, 0x0f57: 0x2164,
+-	0x0f58: 0x2173, 0x0f59: 0x2182, 0x0f5a: 0x2187, 0x0f5b: 0x4406, 0x0f5c: 0x440c, 0x0f5d: 0x4442,
+-	0x0f5e: 0x4499, 0x0f5f: 0x44a0, 0x0f60: 0x44a7, 0x0f61: 0x44ae, 0x0f62: 0x44b5, 0x0f63: 0x44bc,
+-	0x0f64: 0x2708, 0x0f65: 0x270f, 0x0f66: 0x2716, 0x0f67: 0x271d, 0x0f68: 0x2732, 0x0f69: 0x2739,
+-	0x0f6a: 0x1eda, 0x0f6b: 0x1edf, 0x0f6c: 0x1ee4, 0x0f6d: 0x1ee9, 0x0f6e: 0x1ef3, 0x0f6f: 0x1ef8,
+-	0x0f70: 0x1f0c, 0x0f71: 0x1f11, 0x0f72: 0x1f16, 0x0f73: 0x1f1b, 0x0f74: 0x1f25, 0x0f75: 0x1f2a,
+-	0x0f76: 0x1f34, 0x0f77: 0x1f39, 0x0f78: 0x1f3e, 0x0f79: 0x1f43, 0x0f7a: 0x1f4d, 0x0f7b: 0x1f52,
+-	0x0f7c: 0x207e, 0x0f7d: 0x2083, 0x0f7e: 0x2092, 0x0f7f: 0x2097,
+-	// Block 0x3e, offset 0xf80
+-	0x0f80: 0x209c, 0x0f81: 0x20b0, 0x0f82: 0x20b5, 0x0f83: 0x20ba, 0x0f84: 0x20bf, 0x0f85: 0x20d8,
+-	0x0f86: 0x20e2, 0x0f87: 0x20e7, 0x0f88: 0x20ec, 0x0f89: 0x2100, 0x0f8a: 0x211e, 0x0f8b: 0x2123,
+-	0x0f8c: 0x2128, 0x0f8d: 0x212d, 0x0f8e: 0x2137, 0x0f8f: 0x213c, 0x0f90: 0x4442, 0x0f91: 0x2169,
+-	0x0f92: 0x216e, 0x0f93: 0x2173, 0x0f94: 0x2178, 0x0f95: 0x2182, 0x0f96: 0x2187, 0x0f97: 0x26f3,
+-	0x0f98: 0x26fa, 0x0f99: 0x2701, 0x0f9a: 0x2716, 0x0f9b: 0x2724, 0x0f9c: 0x1ecb, 0x0f9d: 0x1ed0,
+-	0x0f9e: 0x1ed5, 0x0f9f: 0x1ee4, 0x0fa0: 0x1eee, 0x0fa1: 0x1efd, 0x0fa2: 0x1f02, 0x0fa3: 0x1f07,
+-	0x0fa4: 0x1f16, 0x0fa5: 0x1f20, 0x0fa6: 0x1f3e, 0x0fa7: 0x1f57, 0x0fa8: 0x1f5c, 0x0fa9: 0x1f6b,
+-	0x0faa: 0x1f70, 0x0fab: 0x1f7f, 0x0fac: 0x1f89, 0x0fad: 0x1f98, 0x0fae: 0x1f9d, 0x0faf: 0x1fa2,
+-	0x0fb0: 0x1fac, 0x0fb1: 0x1fe8, 0x0fb2: 0x1fed, 0x0fb3: 0x1ff7, 0x0fb4: 0x2006, 0x0fb5: 0x200b,
+-	0x0fb6: 0x2010, 0x0fb7: 0x201a, 0x0fb8: 0x2029, 0x0fb9: 0x203d, 0x0fba: 0x2042, 0x0fbb: 0x2047,
+-	0x0fbc: 0x2056, 0x0fbd: 0x205b, 0x0fbe: 0x206a, 0x0fbf: 0x206f,
+-	// Block 0x3f, offset 0xfc0
+-	0x0fc0: 0x2074, 0x0fc1: 0x2079, 0x0fc2: 0x2088, 0x0fc3: 0x208d, 0x0fc4: 0x20a1, 0x0fc5: 0x20a6,
+-	0x0fc6: 0x20ab, 0x0fc7: 0x20b0, 0x0fc8: 0x20b5, 0x0fc9: 0x20c9, 0x0fca: 0x20ce, 0x0fcb: 0x20d3,
+-	0x0fcc: 0x20d8, 0x0fcd: 0x20dd, 0x0fce: 0x20f1, 0x0fcf: 0x20f6, 0x0fd0: 0x20fb, 0x0fd1: 0x2100,
+-	0x0fd2: 0x210f, 0x0fd3: 0x2114, 0x0fd4: 0x2119, 0x0fd5: 0x2128, 0x0fd6: 0x2132, 0x0fd7: 0x2141,
+-	0x0fd8: 0x2146, 0x0fd9: 0x4436, 0x0fda: 0x215a, 0x0fdb: 0x215f, 0x0fdc: 0x2164, 0x0fdd: 0x2173,
+-	0x0fde: 0x217d, 0x0fdf: 0x2716, 0x0fe0: 0x2724, 0x0fe1: 0x1ee4, 0x0fe2: 0x1eee, 0x0fe3: 0x1f16,
+-	0x0fe4: 0x1f20, 0x0fe5: 0x1f3e, 0x0fe6: 0x1f48, 0x0fe7: 0x1fac, 0x0fe8: 0x1fb1, 0x0fe9: 0x1fd4,
+-	0x0fea: 0x1fd9, 0x0feb: 0x20b0, 0x0fec: 0x20b5, 0x0fed: 0x20d8, 0x0fee: 0x2128, 0x0fef: 0x2132,
+-	0x0ff0: 0x2173, 0x0ff1: 0x217d, 0x0ff2: 0x44ea, 0x0ff3: 0x44f2, 0x0ff4: 0x44fa, 0x0ff5: 0x2033,
+-	0x0ff6: 0x2038, 0x0ff7: 0x204c, 0x0ff8: 0x2051, 0x0ff9: 0x2060, 0x0ffa: 0x2065, 0x0ffb: 0x1fb6,
+-	0x0ffc: 0x1fbb, 0x0ffd: 0x1fde, 0x0ffe: 0x1fe3, 0x0fff: 0x1f75,
+-	// Block 0x40, offset 0x1000
+-	0x1000: 0x1f7a, 0x1001: 0x1f61, 0x1002: 0x1f66, 0x1003: 0x1f8e, 0x1004: 0x1f93, 0x1005: 0x1ffc,
+-	0x1006: 0x2001, 0x1007: 0x201f, 0x1008: 0x2024, 0x1009: 0x1fc0, 0x100a: 0x1fc5, 0x100b: 0x1fca,
+-	0x100c: 0x1fd4, 0x100d: 0x1fcf, 0x100e: 0x1fa7, 0x100f: 0x1ff2, 0x1010: 0x2015, 0x1011: 0x2033,
+-	0x1012: 0x2038, 0x1013: 0x204c, 0x1014: 0x2051, 0x1015: 0x2060, 0x1016: 0x2065, 0x1017: 0x1fb6,
+-	0x1018: 0x1fbb, 0x1019: 0x1fde, 0x101a: 0x1fe3, 0x101b: 0x1f75, 0x101c: 0x1f7a, 0x101d: 0x1f61,
+-	0x101e: 0x1f66, 0x101f: 0x1f8e, 0x1020: 0x1f93, 0x1021: 0x1ffc, 0x1022: 0x2001, 0x1023: 0x201f,
+-	0x1024: 0x2024, 0x1025: 0x1fc0, 0x1026: 0x1fc5, 0x1027: 0x1fca, 0x1028: 0x1fd4, 0x1029: 0x1fcf,
+-	0x102a: 0x1fa7, 0x102b: 0x1ff2, 0x102c: 0x2015, 0x102d: 0x1fc0, 0x102e: 0x1fc5, 0x102f: 0x1fca,
+-	0x1030: 0x1fd4, 0x1031: 0x1fb1, 0x1032: 0x1fd9, 0x1033: 0x202e, 0x1034: 0x1f98, 0x1035: 0x1f9d,
+-	0x1036: 0x1fa2, 0x1037: 0x1fc0, 0x1038: 0x1fc5, 0x1039: 0x1fca, 0x103a: 0x202e, 0x103b: 0x203d,
+-	0x103c: 0x43ee, 0x103d: 0x43ee,
+-	// Block 0x41, offset 0x1040
+-	0x1050: 0x2453, 0x1051: 0x2468,
+-	0x1052: 0x2468, 0x1053: 0x246f, 0x1054: 0x2476, 0x1055: 0x248b, 0x1056: 0x2492, 0x1057: 0x2499,
+-	0x1058: 0x24bc, 0x1059: 0x24bc, 0x105a: 0x24df, 0x105b: 0x24d8, 0x105c: 0x24f4, 0x105d: 0x24e6,
+-	0x105e: 0x24ed, 0x105f: 0x2510, 0x1060: 0x2510, 0x1061: 0x2509, 0x1062: 0x2517, 0x1063: 0x2517,
+-	0x1064: 0x2541, 0x1065: 0x2541, 0x1066: 0x255d, 0x1067: 0x2525, 0x1068: 0x2525, 0x1069: 0x251e,
+-	0x106a: 0x2533, 0x106b: 0x2533, 0x106c: 0x253a, 0x106d: 0x253a, 0x106e: 0x2564, 0x106f: 0x2572,
+-	0x1070: 0x2572, 0x1071: 0x2579, 0x1072: 0x2579, 0x1073: 0x2580, 0x1074: 0x2587, 0x1075: 0x258e,
+-	0x1076: 0x2595, 0x1077: 0x2595, 0x1078: 0x259c, 0x1079: 0x25aa, 0x107a: 0x25b8, 0x107b: 0x25b1,
+-	0x107c: 0x25bf, 0x107d: 0x25bf, 0x107e: 0x25d4, 0x107f: 0x25db,
+-	// Block 0x42, offset 0x1080
+-	0x1080: 0x260c, 0x1081: 0x261a, 0x1082: 0x2613, 0x1083: 0x25f7, 0x1084: 0x25f7, 0x1085: 0x2621,
+-	0x1086: 0x2621, 0x1087: 0x2628, 0x1088: 0x2628, 0x1089: 0x2652, 0x108a: 0x2659, 0x108b: 0x2660,
+-	0x108c: 0x2636, 0x108d: 0x2644, 0x108e: 0x2667, 0x108f: 0x266e,
+-	0x1092: 0x263d, 0x1093: 0x26c2, 0x1094: 0x26c9, 0x1095: 0x269f, 0x1096: 0x26a6, 0x1097: 0x268a,
+-	0x1098: 0x268a, 0x1099: 0x2691, 0x109a: 0x26bb, 0x109b: 0x26b4, 0x109c: 0x26de, 0x109d: 0x26de,
+-	0x109e: 0x244c, 0x109f: 0x2461, 0x10a0: 0x245a, 0x10a1: 0x2484, 0x10a2: 0x247d, 0x10a3: 0x24a7,
+-	0x10a4: 0x24a0, 0x10a5: 0x24ca, 0x10a6: 0x24ae, 0x10a7: 0x24c3, 0x10a8: 0x24fb, 0x10a9: 0x2548,
+-	0x10aa: 0x252c, 0x10ab: 0x256b, 0x10ac: 0x2605, 0x10ad: 0x262f, 0x10ae: 0x26d7, 0x10af: 0x26d0,
+-	0x10b0: 0x26e5, 0x10b1: 0x267c, 0x10b2: 0x25e2, 0x10b3: 0x26ad, 0x10b4: 0x25d4, 0x10b5: 0x260c,
+-	0x10b6: 0x25a3, 0x10b7: 0x25f0, 0x10b8: 0x2683, 0x10b9: 0x2675, 0x10ba: 0x25fe, 0x10bb: 0x25e9,
+-	0x10bc: 0x25fe, 0x10bd: 0x2683, 0x10be: 0x24b5, 0x10bf: 0x24d1,
+-	// Block 0x43, offset 0x10c0
+-	0x10c0: 0x264b, 0x10c1: 0x25c6, 0x10c2: 0x2445, 0x10c3: 0x25e9, 0x10c4: 0x258e, 0x10c5: 0x255d,
+-	0x10c6: 0x2502, 0x10c7: 0x2698,
+-	0x10f0: 0x2556, 0x10f1: 0x25cd, 0x10f2: 0x296a, 0x10f3: 0x2961, 0x10f4: 0x2997, 0x10f5: 0x2985,
+-	0x10f6: 0x2973, 0x10f7: 0x298e, 0x10f8: 0x29a0, 0x10f9: 0x254f, 0x10fa: 0x2e44, 0x10fb: 0x2cb4,
+-	0x10fc: 0x297c,
+-	// Block 0x44, offset 0x1100
+-	0x1110: 0x0019, 0x1111: 0x04f5,
+-	0x1112: 0x04f9, 0x1113: 0x0035, 0x1114: 0x0037, 0x1115: 0x0003, 0x1116: 0x003f, 0x1117: 0x0531,
+-	0x1118: 0x0535, 0x1119: 0x1c9e,
+-	0x1120: 0x80e6, 0x1121: 0x80e6, 0x1122: 0x80e6, 0x1123: 0x80e6,
+-	0x1124: 0x80e6, 0x1125: 0x80e6, 0x1126: 0x80e6,
+-	0x1130: 0x19b5, 0x1131: 0x04b5, 0x1132: 0x04b1, 0x1133: 0x007f, 0x1134: 0x007f, 0x1135: 0x0011,
+-	0x1136: 0x0013, 0x1137: 0x00b7, 0x1138: 0x00bb, 0x1139: 0x0529, 0x113a: 0x052d, 0x113b: 0x051d,
+-	0x113c: 0x0521, 0x113d: 0x0505, 0x113e: 0x0509, 0x113f: 0x04fd,
+-	// Block 0x45, offset 0x1140
+-	0x1140: 0x0501, 0x1141: 0x050d, 0x1142: 0x0511, 0x1143: 0x0515, 0x1144: 0x0519,
+-	0x1147: 0x0077, 0x1148: 0x007b, 0x1149: 0x424f, 0x114a: 0x424f, 0x114b: 0x424f,
+-	0x114c: 0x424f, 0x114d: 0x007f, 0x114e: 0x007f, 0x114f: 0x007f, 0x1150: 0x0019, 0x1151: 0x04f5,
+-	0x1152: 0x001d, 0x1154: 0x0037, 0x1155: 0x0035, 0x1156: 0x003f, 0x1157: 0x0003,
+-	0x1158: 0x04b5, 0x1159: 0x0011, 0x115a: 0x0013, 0x115b: 0x00b7, 0x115c: 0x00bb, 0x115d: 0x0529,
+-	0x115e: 0x052d, 0x115f: 0x0007, 0x1160: 0x000d, 0x1161: 0x0015, 0x1162: 0x0017, 0x1163: 0x001b,
+-	0x1164: 0x0039, 0x1165: 0x003d, 0x1166: 0x003b, 0x1168: 0x0079, 0x1169: 0x0009,
+-	0x116a: 0x000b, 0x116b: 0x0041,
+-	0x1170: 0x4290, 0x1171: 0x4412, 0x1172: 0x4295, 0x1174: 0x429a,
+-	0x1176: 0x429f, 0x1177: 0x4418, 0x1178: 0x42a4, 0x1179: 0x441e, 0x117a: 0x42a9, 0x117b: 0x4424,
+-	0x117c: 0x42ae, 0x117d: 0x442a, 0x117e: 0x42b3, 0x117f: 0x4430,
+-	// Block 0x46, offset 0x1180
+-	0x1180: 0x0230, 0x1181: 0x43f4, 0x1182: 0x43f4, 0x1183: 0x43fa, 0x1184: 0x43fa, 0x1185: 0x443c,
+-	0x1186: 0x443c, 0x1187: 0x4400, 0x1188: 0x4400, 0x1189: 0x4448, 0x118a: 0x4448, 0x118b: 0x4448,
+-	0x118c: 0x4448, 0x118d: 0x0233, 0x118e: 0x0233, 0x118f: 0x0236, 0x1190: 0x0236, 0x1191: 0x0236,
+-	0x1192: 0x0236, 0x1193: 0x0239, 0x1194: 0x0239, 0x1195: 0x023c, 0x1196: 0x023c, 0x1197: 0x023c,
+-	0x1198: 0x023c, 0x1199: 0x023f, 0x119a: 0x023f, 0x119b: 0x023f, 0x119c: 0x023f, 0x119d: 0x0242,
+-	0x119e: 0x0242, 0x119f: 0x0242, 0x11a0: 0x0242, 0x11a1: 0x0245, 0x11a2: 0x0245, 0x11a3: 0x0245,
+-	0x11a4: 0x0245, 0x11a5: 0x0248, 0x11a6: 0x0248, 0x11a7: 0x0248, 0x11a8: 0x0248, 0x11a9: 0x024b,
+-	0x11aa: 0x024b, 0x11ab: 0x024e, 0x11ac: 0x024e, 0x11ad: 0x0251, 0x11ae: 0x0251, 0x11af: 0x0254,
+-	0x11b0: 0x0254, 0x11b1: 0x0257, 0x11b2: 0x0257, 0x11b3: 0x0257, 0x11b4: 0x0257, 0x11b5: 0x025a,
+-	0x11b6: 0x025a, 0x11b7: 0x025a, 0x11b8: 0x025a, 0x11b9: 0x025d, 0x11ba: 0x025d, 0x11bb: 0x025d,
+-	0x11bc: 0x025d, 0x11bd: 0x0260, 0x11be: 0x0260, 0x11bf: 0x0260,
+-	// Block 0x47, offset 0x11c0
+-	0x11c0: 0x0260, 0x11c1: 0x0263, 0x11c2: 0x0263, 0x11c3: 0x0263, 0x11c4: 0x0263, 0x11c5: 0x0266,
+-	0x11c6: 0x0266, 0x11c7: 0x0266, 0x11c8: 0x0266, 0x11c9: 0x0269, 0x11ca: 0x0269, 0x11cb: 0x0269,
+-	0x11cc: 0x0269, 0x11cd: 0x026c, 0x11ce: 0x026c, 0x11cf: 0x026c, 0x11d0: 0x026c, 0x11d1: 0x026f,
+-	0x11d2: 0x026f, 0x11d3: 0x026f, 0x11d4: 0x026f, 0x11d5: 0x0272, 0x11d6: 0x0272, 0x11d7: 0x0272,
+-	0x11d8: 0x0272, 0x11d9: 0x0275, 0x11da: 0x0275, 0x11db: 0x0275, 0x11dc: 0x0275, 0x11dd: 0x0278,
+-	0x11de: 0x0278, 0x11df: 0x0278, 0x11e0: 0x0278, 0x11e1: 0x027b, 0x11e2: 0x027b, 0x11e3: 0x027b,
+-	0x11e4: 0x027b, 0x11e5: 0x027e, 0x11e6: 0x027e, 0x11e7: 0x027e, 0x11e8: 0x027e, 0x11e9: 0x0281,
+-	0x11ea: 0x0281, 0x11eb: 0x0281, 0x11ec: 0x0281, 0x11ed: 0x0284, 0x11ee: 0x0284, 0x11ef: 0x0287,
+-	0x11f0: 0x0287, 0x11f1: 0x028a, 0x11f2: 0x028a, 0x11f3: 0x028a, 0x11f4: 0x028a, 0x11f5: 0x2e91,
+-	0x11f6: 0x2e91, 0x11f7: 0x2e99, 0x11f8: 0x2e99, 0x11f9: 0x2ea1, 0x11fa: 0x2ea1, 0x11fb: 0x20c4,
+-	0x11fc: 0x20c4,
+-	// Block 0x48, offset 0x1200
+-	0x1200: 0x0081, 0x1201: 0x0083, 0x1202: 0x0085, 0x1203: 0x0087, 0x1204: 0x0089, 0x1205: 0x008b,
+-	0x1206: 0x008d, 0x1207: 0x008f, 0x1208: 0x0091, 0x1209: 0x0093, 0x120a: 0x0095, 0x120b: 0x0097,
+-	0x120c: 0x0099, 0x120d: 0x009b, 0x120e: 0x009d, 0x120f: 0x009f, 0x1210: 0x00a1, 0x1211: 0x00a3,
+-	0x1212: 0x00a5, 0x1213: 0x00a7, 0x1214: 0x00a9, 0x1215: 0x00ab, 0x1216: 0x00ad, 0x1217: 0x00af,
+-	0x1218: 0x00b1, 0x1219: 0x00b3, 0x121a: 0x00b5, 0x121b: 0x00b7, 0x121c: 0x00b9, 0x121d: 0x00bb,
+-	0x121e: 0x00bd, 0x121f: 0x04e9, 0x1220: 0x04ed, 0x1221: 0x04f9, 0x1222: 0x050d, 0x1223: 0x0511,
+-	0x1224: 0x04f5, 0x1225: 0x061d, 0x1226: 0x0615, 0x1227: 0x0539, 0x1228: 0x0541, 0x1229: 0x0549,
+-	0x122a: 0x0551, 0x122b: 0x0559, 0x122c: 0x05dd, 0x122d: 0x05e5, 0x122e: 0x05ed, 0x122f: 0x0591,
+-	0x1230: 0x0621, 0x1231: 0x053d, 0x1232: 0x0545, 0x1233: 0x054d, 0x1234: 0x0555, 0x1235: 0x055d,
+-	0x1236: 0x0561, 0x1237: 0x0565, 0x1238: 0x0569, 0x1239: 0x056d, 0x123a: 0x0571, 0x123b: 0x0575,
+-	0x123c: 0x0579, 0x123d: 0x057d, 0x123e: 0x0581, 0x123f: 0x0585,
+-	// Block 0x49, offset 0x1240
+-	0x1240: 0x0589, 0x1241: 0x058d, 0x1242: 0x0595, 0x1243: 0x0599, 0x1244: 0x059d, 0x1245: 0x05a1,
+-	0x1246: 0x05a5, 0x1247: 0x05a9, 0x1248: 0x05ad, 0x1249: 0x05b1, 0x124a: 0x05b5, 0x124b: 0x05b9,
+-	0x124c: 0x05bd, 0x124d: 0x05c1, 0x124e: 0x05c5, 0x124f: 0x05c9, 0x1250: 0x05cd, 0x1251: 0x05d1,
+-	0x1252: 0x05d5, 0x1253: 0x05d9, 0x1254: 0x05e1, 0x1255: 0x05e9, 0x1256: 0x05f1, 0x1257: 0x05f5,
+-	0x1258: 0x05f9, 0x1259: 0x05fd, 0x125a: 0x0601, 0x125b: 0x0605, 0x125c: 0x0609, 0x125d: 0x0619,
+-	0x125e: 0x49aa, 0x125f: 0x49b0, 0x1260: 0x03bd, 0x1261: 0x030d, 0x1262: 0x0311, 0x1263: 0x0435,
+-	0x1264: 0x0315, 0x1265: 0x0439, 0x1266: 0x043d, 0x1267: 0x0319, 0x1268: 0x031d, 0x1269: 0x0321,
+-	0x126a: 0x0441, 0x126b: 0x0445, 0x126c: 0x0449, 0x126d: 0x044d, 0x126e: 0x0451, 0x126f: 0x0455,
+-	0x1270: 0x0361, 0x1271: 0x0325, 0x1272: 0x0329, 0x1273: 0x032d, 0x1274: 0x0375, 0x1275: 0x0331,
+-	0x1276: 0x0335, 0x1277: 0x0339, 0x1278: 0x033d, 0x1279: 0x0341, 0x127a: 0x0345, 0x127b: 0x0349,
+-	0x127c: 0x034d, 0x127d: 0x0351, 0x127e: 0x0355,
+-	// Block 0x4a, offset 0x1280
+-	0x1280: 0x0063, 0x1281: 0x0065, 0x1282: 0x0067, 0x1283: 0x0069, 0x1284: 0x006b, 0x1285: 0x006d,
+-	0x1286: 0x006f, 0x1287: 0x0071, 0x1288: 0x0073, 0x1289: 0x0075, 0x128a: 0x0083, 0x128b: 0x0085,
+-	0x128c: 0x0087, 0x128d: 0x0089, 0x128e: 0x008b, 0x128f: 0x008d, 0x1290: 0x008f, 0x1291: 0x0091,
+-	0x1292: 0x0093, 0x1293: 0x0095, 0x1294: 0x0097, 0x1295: 0x0099, 0x1296: 0x009b, 0x1297: 0x009d,
+-	0x1298: 0x009f, 0x1299: 0x00a1, 0x129a: 0x00a3, 0x129b: 0x00a5, 0x129c: 0x00a7, 0x129d: 0x00a9,
+-	0x129e: 0x00ab, 0x129f: 0x00ad, 0x12a0: 0x00af, 0x12a1: 0x00b1, 0x12a2: 0x00b3, 0x12a3: 0x00b5,
+-	0x12a4: 0x00e0, 0x12a5: 0x00f5, 0x12a8: 0x0173, 0x12a9: 0x0176,
+-	0x12aa: 0x0179, 0x12ab: 0x017c, 0x12ac: 0x017f, 0x12ad: 0x0182, 0x12ae: 0x0185, 0x12af: 0x0188,
+-	0x12b0: 0x018b, 0x12b1: 0x018e, 0x12b2: 0x0191, 0x12b3: 0x0194, 0x12b4: 0x0197, 0x12b5: 0x019a,
+-	0x12b6: 0x019d, 0x12b7: 0x01a0, 0x12b8: 0x01a3, 0x12b9: 0x0188, 0x12ba: 0x01a6, 0x12bb: 0x01a9,
+-	0x12bc: 0x01ac, 0x12bd: 0x01af, 0x12be: 0x01b2, 0x12bf: 0x01b5,
+-	// Block 0x4b, offset 0x12c0
+-	0x12c0: 0x01fd, 0x12c1: 0x0200, 0x12c2: 0x0203, 0x12c3: 0x04cd, 0x12c4: 0x01c7, 0x12c5: 0x01d0,
+-	0x12c6: 0x01d6, 0x12c7: 0x01fa, 0x12c8: 0x01eb, 0x12c9: 0x01e8, 0x12ca: 0x0206, 0x12cb: 0x0209,
+-	0x12ce: 0x0021, 0x12cf: 0x0023, 0x12d0: 0x0025, 0x12d1: 0x0027,
+-	0x12d2: 0x0029, 0x12d3: 0x002b, 0x12d4: 0x002d, 0x12d5: 0x002f, 0x12d6: 0x0031, 0x12d7: 0x0033,
+-	0x12d8: 0x0021, 0x12d9: 0x0023, 0x12da: 0x0025, 0x12db: 0x0027, 0x12dc: 0x0029, 0x12dd: 0x002b,
+-	0x12de: 0x002d, 0x12df: 0x002f, 0x12e0: 0x0031, 0x12e1: 0x0033, 0x12e2: 0x0021, 0x12e3: 0x0023,
+-	0x12e4: 0x0025, 0x12e5: 0x0027, 0x12e6: 0x0029, 0x12e7: 0x002b, 0x12e8: 0x002d, 0x12e9: 0x002f,
+-	0x12ea: 0x0031, 0x12eb: 0x0033, 0x12ec: 0x0021, 0x12ed: 0x0023, 0x12ee: 0x0025, 0x12ef: 0x0027,
+-	0x12f0: 0x0029, 0x12f1: 0x002b, 0x12f2: 0x002d, 0x12f3: 0x002f, 0x12f4: 0x0031, 0x12f5: 0x0033,
+-	0x12f6: 0x0021, 0x12f7: 0x0023, 0x12f8: 0x0025, 0x12f9: 0x0027, 0x12fa: 0x0029, 0x12fb: 0x002b,
+-	0x12fc: 0x002d, 0x12fd: 0x002f, 0x12fe: 0x0031, 0x12ff: 0x0033,
+-	// Block 0x4c, offset 0x1300
+-	0x1300: 0x0233, 0x1301: 0x0236, 0x1302: 0x0242, 0x1303: 0x024b, 0x1305: 0x0284,
+-	0x1306: 0x0254, 0x1307: 0x0245, 0x1308: 0x0263, 0x1309: 0x028a, 0x130a: 0x0275, 0x130b: 0x0278,
+-	0x130c: 0x027b, 0x130d: 0x027e, 0x130e: 0x0257, 0x130f: 0x0269, 0x1310: 0x026f, 0x1311: 0x025d,
+-	0x1312: 0x0272, 0x1313: 0x0251, 0x1314: 0x025a, 0x1315: 0x023c, 0x1316: 0x023f, 0x1317: 0x0248,
+-	0x1318: 0x024e, 0x1319: 0x0260, 0x131a: 0x0266, 0x131b: 0x026c, 0x131c: 0x028d, 0x131d: 0x02de,
+-	0x131e: 0x02c6, 0x131f: 0x0290, 0x1321: 0x0236, 0x1322: 0x0242,
+-	0x1324: 0x0281, 0x1327: 0x0245, 0x1329: 0x028a,
+-	0x132a: 0x0275, 0x132b: 0x0278, 0x132c: 0x027b, 0x132d: 0x027e, 0x132e: 0x0257, 0x132f: 0x0269,
+-	0x1330: 0x026f, 0x1331: 0x025d, 0x1332: 0x0272, 0x1334: 0x025a, 0x1335: 0x023c,
+-	0x1336: 0x023f, 0x1337: 0x0248, 0x1339: 0x0260, 0x133b: 0x026c,
+-	// Block 0x4d, offset 0x1340
+-	0x1342: 0x0242,
+-	0x1347: 0x0245, 0x1349: 0x028a, 0x134b: 0x0278,
+-	0x134d: 0x027e, 0x134e: 0x0257, 0x134f: 0x0269, 0x1351: 0x025d,
+-	0x1352: 0x0272, 0x1354: 0x025a, 0x1357: 0x0248,
+-	0x1359: 0x0260, 0x135b: 0x026c, 0x135d: 0x02de,
+-	0x135f: 0x0290, 0x1361: 0x0236, 0x1362: 0x0242,
+-	0x1364: 0x0281, 0x1367: 0x0245, 0x1368: 0x0263, 0x1369: 0x028a,
+-	0x136a: 0x0275, 0x136c: 0x027b, 0x136d: 0x027e, 0x136e: 0x0257, 0x136f: 0x0269,
+-	0x1370: 0x026f, 0x1371: 0x025d, 0x1372: 0x0272, 0x1374: 0x025a, 0x1375: 0x023c,
+-	0x1376: 0x023f, 0x1377: 0x0248, 0x1379: 0x0260, 0x137a: 0x0266, 0x137b: 0x026c,
+-	0x137c: 0x028d, 0x137e: 0x02c6,
+-	// Block 0x4e, offset 0x1380
+-	0x1380: 0x0233, 0x1381: 0x0236, 0x1382: 0x0242, 0x1383: 0x024b, 0x1384: 0x0281, 0x1385: 0x0284,
+-	0x1386: 0x0254, 0x1387: 0x0245, 0x1388: 0x0263, 0x1389: 0x028a, 0x138b: 0x0278,
+-	0x138c: 0x027b, 0x138d: 0x027e, 0x138e: 0x0257, 0x138f: 0x0269, 0x1390: 0x026f, 0x1391: 0x025d,
+-	0x1392: 0x0272, 0x1393: 0x0251, 0x1394: 0x025a, 0x1395: 0x023c, 0x1396: 0x023f, 0x1397: 0x0248,
+-	0x1398: 0x024e, 0x1399: 0x0260, 0x139a: 0x0266, 0x139b: 0x026c,
+-	0x13a1: 0x0236, 0x13a2: 0x0242, 0x13a3: 0x024b,
+-	0x13a5: 0x0284, 0x13a6: 0x0254, 0x13a7: 0x0245, 0x13a8: 0x0263, 0x13a9: 0x028a,
+-	0x13ab: 0x0278, 0x13ac: 0x027b, 0x13ad: 0x027e, 0x13ae: 0x0257, 0x13af: 0x0269,
+-	0x13b0: 0x026f, 0x13b1: 0x025d, 0x13b2: 0x0272, 0x13b3: 0x0251, 0x13b4: 0x025a, 0x13b5: 0x023c,
+-	0x13b6: 0x023f, 0x13b7: 0x0248, 0x13b8: 0x024e, 0x13b9: 0x0260, 0x13ba: 0x0266, 0x13bb: 0x026c,
+-	// Block 0x4f, offset 0x13c0
+-	0x13c0: 0x19bb, 0x13c1: 0x19b8, 0x13c2: 0x19be, 0x13c3: 0x19e2, 0x13c4: 0x1a06, 0x13c5: 0x1a2a,
+-	0x13c6: 0x1a4e, 0x13c7: 0x1a57, 0x13c8: 0x1a5d, 0x13c9: 0x1a63, 0x13ca: 0x1a69,
+-	0x13d0: 0x1bce, 0x13d1: 0x1bd2,
+-	0x13d2: 0x1bd6, 0x13d3: 0x1bda, 0x13d4: 0x1bde, 0x13d5: 0x1be2, 0x13d6: 0x1be6, 0x13d7: 0x1bea,
+-	0x13d8: 0x1bee, 0x13d9: 0x1bf2, 0x13da: 0x1bf6, 0x13db: 0x1bfa, 0x13dc: 0x1bfe, 0x13dd: 0x1c02,
+-	0x13de: 0x1c06, 0x13df: 0x1c0a, 0x13e0: 0x1c0e, 0x13e1: 0x1c12, 0x13e2: 0x1c16, 0x13e3: 0x1c1a,
+-	0x13e4: 0x1c1e, 0x13e5: 0x1c22, 0x13e6: 0x1c26, 0x13e7: 0x1c2a, 0x13e8: 0x1c2e, 0x13e9: 0x1c32,
+-	0x13ea: 0x28c9, 0x13eb: 0x0047, 0x13ec: 0x0065, 0x13ed: 0x1a7e, 0x13ee: 0x1af3,
+-	0x13f0: 0x0043, 0x13f1: 0x0045, 0x13f2: 0x0047, 0x13f3: 0x0049, 0x13f4: 0x004b, 0x13f5: 0x004d,
+-	0x13f6: 0x004f, 0x13f7: 0x0051, 0x13f8: 0x0053, 0x13f9: 0x0055, 0x13fa: 0x0057, 0x13fb: 0x0059,
+-	0x13fc: 0x005b, 0x13fd: 0x005d, 0x13fe: 0x005f, 0x13ff: 0x0061,
+-	// Block 0x50, offset 0x1400
+-	0x1400: 0x2858, 0x1401: 0x286d, 0x1402: 0x0575,
+-	0x1410: 0x0c81, 0x1411: 0x0ab9,
+-	0x1412: 0x0945, 0x1413: 0x45aa, 0x1414: 0x078d, 0x1415: 0x0a61, 0x1416: 0x13a1, 0x1417: 0x0a71,
+-	0x1418: 0x0799, 0x1419: 0x0d49, 0x141a: 0x0f21, 0x141b: 0x0d21, 0x141c: 0x0899, 0x141d: 0x0bdd,
+-	0x141e: 0x0831, 0x141f: 0x0d29, 0x1420: 0x0885, 0x1421: 0x1189, 0x1422: 0x0ff5, 0x1423: 0x13fd,
+-	0x1424: 0x0a45, 0x1425: 0x097d, 0x1426: 0x0ed5, 0x1427: 0x0c8d, 0x1428: 0x0cb9, 0x1429: 0x0731,
+-	0x142a: 0x073d, 0x142b: 0x147d, 0x142c: 0x0b4d, 0x142d: 0x0759, 0x142e: 0x0961, 0x142f: 0x0cad,
+-	0x1430: 0x1425, 0x1431: 0x0c85, 0x1432: 0x10e1, 0x1433: 0x111d, 0x1434: 0x0969, 0x1435: 0x0eb5,
+-	0x1436: 0x0d7d, 0x1437: 0x0d79, 0x1438: 0x1009, 0x1439: 0x089d, 0x143a: 0x09c9,
+-	// Block 0x51, offset 0x1440
+-	0x1440: 0x076d, 0x1441: 0x0765, 0x1442: 0x0775, 0x1443: 0x16a9, 0x1444: 0x07b9, 0x1445: 0x07c9,
+-	0x1446: 0x07cd, 0x1447: 0x07d5, 0x1448: 0x07dd, 0x1449: 0x07e1, 0x144a: 0x07ed, 0x144b: 0x07e5,
+-	0x144c: 0x0625, 0x144d: 0x16bd, 0x144e: 0x0801, 0x144f: 0x0805, 0x1450: 0x0809, 0x1451: 0x0825,
+-	0x1452: 0x16ae, 0x1453: 0x0629, 0x1454: 0x0811, 0x1455: 0x0831, 0x1456: 0x16b8, 0x1457: 0x0841,
+-	0x1458: 0x0849, 0x1459: 0x07a9, 0x145a: 0x0851, 0x145b: 0x0855, 0x145c: 0x1893, 0x145d: 0x0871,
+-	0x145e: 0x0879, 0x145f: 0x0631, 0x1460: 0x0891, 0x1461: 0x0895, 0x1462: 0x089d, 0x1463: 0x08a1,
+-	0x1464: 0x0635, 0x1465: 0x08b9, 0x1466: 0x08bd, 0x1467: 0x08c9, 0x1468: 0x08d5, 0x1469: 0x08d9,
+-	0x146a: 0x08dd, 0x146b: 0x08e5, 0x146c: 0x0905, 0x146d: 0x0909, 0x146e: 0x0911, 0x146f: 0x0921,
+-	0x1470: 0x0929, 0x1471: 0x092d, 0x1472: 0x092d, 0x1473: 0x092d, 0x1474: 0x16cc, 0x1475: 0x0f05,
+-	0x1476: 0x0941, 0x1477: 0x0949, 0x1478: 0x16d1, 0x1479: 0x0955, 0x147a: 0x095d, 0x147b: 0x0965,
+-	0x147c: 0x098d, 0x147d: 0x0979, 0x147e: 0x0985, 0x147f: 0x0989,
+-	// Block 0x52, offset 0x1480
+-	0x1480: 0x0991, 0x1481: 0x0999, 0x1482: 0x099d, 0x1483: 0x09a5, 0x1484: 0x09ad, 0x1485: 0x09b1,
+-	0x1486: 0x09b1, 0x1487: 0x09b9, 0x1488: 0x09c1, 0x1489: 0x09c5, 0x148a: 0x09d1, 0x148b: 0x09f5,
+-	0x148c: 0x09d9, 0x148d: 0x09f9, 0x148e: 0x09dd, 0x148f: 0x09e5, 0x1490: 0x087d, 0x1491: 0x0a41,
+-	0x1492: 0x0a09, 0x1493: 0x0a0d, 0x1494: 0x0a11, 0x1495: 0x0a05, 0x1496: 0x0a19, 0x1497: 0x0a15,
+-	0x1498: 0x0a2d, 0x1499: 0x16d6, 0x149a: 0x0a49, 0x149b: 0x0a4d, 0x149c: 0x0a55, 0x149d: 0x0a61,
+-	0x149e: 0x0a69, 0x149f: 0x0a85, 0x14a0: 0x16db, 0x14a1: 0x16e0, 0x14a2: 0x0a91, 0x14a3: 0x0a95,
+-	0x14a4: 0x0a99, 0x14a5: 0x0a8d, 0x14a6: 0x0aa1, 0x14a7: 0x0639, 0x14a8: 0x063d, 0x14a9: 0x0aa9,
+-	0x14aa: 0x0ab1, 0x14ab: 0x0ab1, 0x14ac: 0x16e5, 0x14ad: 0x0acd, 0x14ae: 0x0ad1, 0x14af: 0x0ad5,
+-	0x14b0: 0x0add, 0x14b1: 0x16ea, 0x14b2: 0x0ae5, 0x14b3: 0x0ae9, 0x14b4: 0x0bc1, 0x14b5: 0x0af1,
+-	0x14b6: 0x0641, 0x14b7: 0x0afd, 0x14b8: 0x0b0d, 0x14b9: 0x0b19, 0x14ba: 0x0b15, 0x14bb: 0x16f4,
+-	0x14bc: 0x0b21, 0x14bd: 0x16f9, 0x14be: 0x0b2d, 0x14bf: 0x0b29,
+-	// Block 0x53, offset 0x14c0
+-	0x14c0: 0x0b31, 0x14c1: 0x0b41, 0x14c2: 0x0b45, 0x14c3: 0x0645, 0x14c4: 0x0b55, 0x14c5: 0x0b5d,
+-	0x14c6: 0x0b61, 0x14c7: 0x0b65, 0x14c8: 0x0649, 0x14c9: 0x16fe, 0x14ca: 0x064d, 0x14cb: 0x0b81,
+-	0x14cc: 0x0b85, 0x14cd: 0x0b89, 0x14ce: 0x0b91, 0x14cf: 0x18c5, 0x14d0: 0x0ba9, 0x14d1: 0x1708,
+-	0x14d2: 0x1708, 0x14d3: 0x1249, 0x14d4: 0x0bb9, 0x14d5: 0x0bb9, 0x14d6: 0x0651, 0x14d7: 0x172b,
+-	0x14d8: 0x17fd, 0x14d9: 0x0bc9, 0x14da: 0x0bd1, 0x14db: 0x0655, 0x14dc: 0x0be5, 0x14dd: 0x0bf5,
+-	0x14de: 0x0bf9, 0x14df: 0x0c01, 0x14e0: 0x0c11, 0x14e1: 0x065d, 0x14e2: 0x0659, 0x14e3: 0x0c15,
+-	0x14e4: 0x170d, 0x14e5: 0x0c19, 0x14e6: 0x0c2d, 0x14e7: 0x0c31, 0x14e8: 0x0c35, 0x14e9: 0x0c31,
+-	0x14ea: 0x0c41, 0x14eb: 0x0c45, 0x14ec: 0x0c55, 0x14ed: 0x0c4d, 0x14ee: 0x0c51, 0x14ef: 0x0c59,
+-	0x14f0: 0x0c5d, 0x14f1: 0x0c61, 0x14f2: 0x0c6d, 0x14f3: 0x0c71, 0x14f4: 0x0c89, 0x14f5: 0x0c91,
+-	0x14f6: 0x0ca1, 0x14f7: 0x0cb5, 0x14f8: 0x171c, 0x14f9: 0x0cb1, 0x14fa: 0x0ca5, 0x14fb: 0x0cbd,
+-	0x14fc: 0x0cc5, 0x14fd: 0x0cd9, 0x14fe: 0x1721, 0x14ff: 0x0ce1,
+-	// Block 0x54, offset 0x1500
+-	0x1500: 0x0cd5, 0x1501: 0x0ccd, 0x1502: 0x0661, 0x1503: 0x0ce9, 0x1504: 0x0cf1, 0x1505: 0x0cf9,
+-	0x1506: 0x0ced, 0x1507: 0x0665, 0x1508: 0x0d09, 0x1509: 0x0d11, 0x150a: 0x1726, 0x150b: 0x0d3d,
+-	0x150c: 0x0d71, 0x150d: 0x0d4d, 0x150e: 0x0671, 0x150f: 0x0d59, 0x1510: 0x066d, 0x1511: 0x0669,
+-	0x1512: 0x0835, 0x1513: 0x0839, 0x1514: 0x0d75, 0x1515: 0x0d5d, 0x1516: 0x121d, 0x1517: 0x06d5,
+-	0x1518: 0x0d81, 0x1519: 0x0d85, 0x151a: 0x0d89, 0x151b: 0x0d9d, 0x151c: 0x0d95, 0x151d: 0x173f,
+-	0x151e: 0x0675, 0x151f: 0x0db1, 0x1520: 0x0da5, 0x1521: 0x0dc1, 0x1522: 0x0dc9, 0x1523: 0x1749,
+-	0x1524: 0x0dcd, 0x1525: 0x0db9, 0x1526: 0x0dd5, 0x1527: 0x0679, 0x1528: 0x0dd9, 0x1529: 0x0ddd,
+-	0x152a: 0x0de1, 0x152b: 0x0ded, 0x152c: 0x174e, 0x152d: 0x0df5, 0x152e: 0x067d, 0x152f: 0x0e01,
+-	0x1530: 0x1753, 0x1531: 0x0e05, 0x1532: 0x0681, 0x1533: 0x0e11, 0x1534: 0x0e1d, 0x1535: 0x0e29,
+-	0x1536: 0x0e2d, 0x1537: 0x1758, 0x1538: 0x16ef, 0x1539: 0x175d, 0x153a: 0x0e4d, 0x153b: 0x1762,
+-	0x153c: 0x0e59, 0x153d: 0x0e61, 0x153e: 0x0e51, 0x153f: 0x0e6d,
+-	// Block 0x55, offset 0x1540
+-	0x1540: 0x0e7d, 0x1541: 0x0e8d, 0x1542: 0x0e81, 0x1543: 0x0e85, 0x1544: 0x0e91, 0x1545: 0x0e95,
+-	0x1546: 0x1767, 0x1547: 0x0e79, 0x1548: 0x0ead, 0x1549: 0x0eb1, 0x154a: 0x0685, 0x154b: 0x0ec5,
+-	0x154c: 0x0ec1, 0x154d: 0x176c, 0x154e: 0x0ea5, 0x154f: 0x0ee1, 0x1550: 0x1771, 0x1551: 0x1776,
+-	0x1552: 0x0ee5, 0x1553: 0x0ef9, 0x1554: 0x0ef5, 0x1555: 0x0ef1, 0x1556: 0x0689, 0x1557: 0x0efd,
+-	0x1558: 0x0f0d, 0x1559: 0x0f09, 0x155a: 0x0f15, 0x155b: 0x16b3, 0x155c: 0x0f25, 0x155d: 0x177b,
+-	0x155e: 0x0f31, 0x155f: 0x1785, 0x1560: 0x0f45, 0x1561: 0x0f51, 0x1562: 0x0f65, 0x1563: 0x178a,
+-	0x1564: 0x0f79, 0x1565: 0x0f7d, 0x1566: 0x178f, 0x1567: 0x1794, 0x1568: 0x0f99, 0x1569: 0x0fa9,
+-	0x156a: 0x068d, 0x156b: 0x0fad, 0x156c: 0x0691, 0x156d: 0x0691, 0x156e: 0x0fc5, 0x156f: 0x0fc9,
+-	0x1570: 0x0fd1, 0x1571: 0x0fd5, 0x1572: 0x0fe1, 0x1573: 0x0695, 0x1574: 0x0ff9, 0x1575: 0x1799,
+-	0x1576: 0x1015, 0x1577: 0x179e, 0x1578: 0x1021, 0x1579: 0x1703, 0x157a: 0x1031, 0x157b: 0x17a3,
+-	0x157c: 0x17a8, 0x157d: 0x17ad, 0x157e: 0x0699, 0x157f: 0x069d,
+-	// Block 0x56, offset 0x1580
+-	0x1580: 0x1069, 0x1581: 0x17b7, 0x1582: 0x17b2, 0x1583: 0x17bc, 0x1584: 0x17c1, 0x1585: 0x1071,
+-	0x1586: 0x1075, 0x1587: 0x1075, 0x1588: 0x107d, 0x1589: 0x06a5, 0x158a: 0x1081, 0x158b: 0x06a9,
+-	0x158c: 0x06ad, 0x158d: 0x17cb, 0x158e: 0x1095, 0x158f: 0x109d, 0x1590: 0x10a9, 0x1591: 0x06b1,
+-	0x1592: 0x17d0, 0x1593: 0x10cd, 0x1594: 0x17d5, 0x1595: 0x17da, 0x1596: 0x10ed, 0x1597: 0x1105,
+-	0x1598: 0x06b5, 0x1599: 0x110d, 0x159a: 0x1111, 0x159b: 0x1115, 0x159c: 0x17df, 0x159d: 0x17e4,
+-	0x159e: 0x17e4, 0x159f: 0x112d, 0x15a0: 0x06b9, 0x15a1: 0x17e9, 0x15a2: 0x1141, 0x15a3: 0x1145,
+-	0x15a4: 0x06bd, 0x15a5: 0x17ee, 0x15a6: 0x1161, 0x15a7: 0x06c1, 0x15a8: 0x1171, 0x15a9: 0x1169,
+-	0x15aa: 0x1179, 0x15ab: 0x17f8, 0x15ac: 0x1191, 0x15ad: 0x06c5, 0x15ae: 0x119d, 0x15af: 0x11a5,
+-	0x15b0: 0x11b5, 0x15b1: 0x06c9, 0x15b2: 0x1802, 0x15b3: 0x1807, 0x15b4: 0x06cd, 0x15b5: 0x180c,
+-	0x15b6: 0x11cd, 0x15b7: 0x1811, 0x15b8: 0x11d9, 0x15b9: 0x11e5, 0x15ba: 0x11ed, 0x15bb: 0x1816,
+-	0x15bc: 0x181b, 0x15bd: 0x1201, 0x15be: 0x1820, 0x15bf: 0x1209,
+-	// Block 0x57, offset 0x15c0
+-	0x15c0: 0x1730, 0x15c1: 0x06d1, 0x15c2: 0x1221, 0x15c3: 0x1225, 0x15c4: 0x06d9, 0x15c5: 0x1229,
+-	0x15c6: 0x0aa5, 0x15c7: 0x1825, 0x15c8: 0x182a, 0x15c9: 0x1735, 0x15ca: 0x173a, 0x15cb: 0x1249,
+-	0x15cc: 0x124d, 0x15cd: 0x1465, 0x15ce: 0x06dd, 0x15cf: 0x1279, 0x15d0: 0x1275, 0x15d1: 0x127d,
+-	0x15d2: 0x08b1, 0x15d3: 0x1281, 0x15d4: 0x1285, 0x15d5: 0x1289, 0x15d6: 0x1291, 0x15d7: 0x182f,
+-	0x15d8: 0x128d, 0x15d9: 0x1295, 0x15da: 0x12a9, 0x15db: 0x12ad, 0x15dc: 0x1299, 0x15dd: 0x12b1,
+-	0x15de: 0x12c5, 0x15df: 0x12d9, 0x15e0: 0x12a5, 0x15e1: 0x12b9, 0x15e2: 0x12bd, 0x15e3: 0x12c1,
+-	0x15e4: 0x1834, 0x15e5: 0x183e, 0x15e6: 0x1839, 0x15e7: 0x06e1, 0x15e8: 0x12e1, 0x15e9: 0x12e5,
+-	0x15ea: 0x12ed, 0x15eb: 0x1852, 0x15ec: 0x12f1, 0x15ed: 0x1843, 0x15ee: 0x06e5, 0x15ef: 0x06e9,
+-	0x15f0: 0x1848, 0x15f1: 0x184d, 0x15f2: 0x06ed, 0x15f3: 0x1311, 0x15f4: 0x1315, 0x15f5: 0x1319,
+-	0x15f6: 0x131d, 0x15f7: 0x1329, 0x15f8: 0x1325, 0x15f9: 0x1331, 0x15fa: 0x132d, 0x15fb: 0x133d,
+-	0x15fc: 0x1335, 0x15fd: 0x1339, 0x15fe: 0x1341, 0x15ff: 0x06f1,
+-	// Block 0x58, offset 0x1600
+-	0x1600: 0x1349, 0x1601: 0x134d, 0x1602: 0x06f5, 0x1603: 0x135d, 0x1604: 0x1361, 0x1605: 0x1857,
+-	0x1606: 0x136d, 0x1607: 0x1371, 0x1608: 0x06f9, 0x1609: 0x137d, 0x160a: 0x062d, 0x160b: 0x185c,
+-	0x160c: 0x1861, 0x160d: 0x06fd, 0x160e: 0x0701, 0x160f: 0x13a9, 0x1610: 0x13c1, 0x1611: 0x13dd,
+-	0x1612: 0x13ed, 0x1613: 0x1866, 0x1614: 0x1401, 0x1615: 0x1405, 0x1616: 0x141d, 0x1617: 0x1429,
+-	0x1618: 0x1870, 0x1619: 0x16c2, 0x161a: 0x1435, 0x161b: 0x1431, 0x161c: 0x143d, 0x161d: 0x16c7,
+-	0x161e: 0x1449, 0x161f: 0x1455, 0x1620: 0x1875, 0x1621: 0x187a, 0x1622: 0x1495, 0x1623: 0x14a1,
+-	0x1624: 0x14a9, 0x1625: 0x187f, 0x1626: 0x14ad, 0x1627: 0x14d5, 0x1628: 0x14e1, 0x1629: 0x14e5,
+-	0x162a: 0x14dd, 0x162b: 0x14f1, 0x162c: 0x14f5, 0x162d: 0x1884, 0x162e: 0x1501, 0x162f: 0x0705,
+-	0x1630: 0x1509, 0x1631: 0x1889, 0x1632: 0x0709, 0x1633: 0x1541, 0x1634: 0x0b35, 0x1635: 0x1559,
+-	0x1636: 0x188e, 0x1637: 0x1898, 0x1638: 0x070d, 0x1639: 0x0711, 0x163a: 0x1581, 0x163b: 0x189d,
+-	0x163c: 0x0715, 0x163d: 0x18a2, 0x163e: 0x1599, 0x163f: 0x1599,
+-	// Block 0x59, offset 0x1640
+-	0x1640: 0x15a1, 0x1641: 0x18a7, 0x1642: 0x15b9, 0x1643: 0x0719, 0x1644: 0x15c9, 0x1645: 0x15d5,
+-	0x1646: 0x15dd, 0x1647: 0x15e5, 0x1648: 0x071d, 0x1649: 0x18ac, 0x164a: 0x15f9, 0x164b: 0x1615,
+-	0x164c: 0x1621, 0x164d: 0x0721, 0x164e: 0x0725, 0x164f: 0x1625, 0x1650: 0x18b1, 0x1651: 0x0729,
+-	0x1652: 0x18b6, 0x1653: 0x18bb, 0x1654: 0x18c0, 0x1655: 0x1649, 0x1656: 0x072d, 0x1657: 0x165d,
+-	0x1658: 0x1665, 0x1659: 0x1669, 0x165a: 0x1671, 0x165b: 0x1679, 0x165c: 0x1681, 0x165d: 0x18ca,
+-}
+-
+-// nfkcSparseOffset: 128 entries, 256 bytes
+-var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x85, 0x8d, 0x94, 0x97, 0x9f, 0xa3, 0xa7, 0xa9, 0xab, 0xb4, 0xb8, 0xbf, 0xc4, 0xc7, 0xd1, 0xd3, 0xda, 0xe2, 0xe6, 0xe8, 0xeb, 0xef, 0xf5, 0x106, 0x112, 0x114, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12b, 0x12e, 0x130, 0x133, 0x136, 0x13a, 0x143, 0x145, 0x148, 0x14a, 0x154, 0x15f, 0x16e, 0x17c, 0x18a, 0x19a, 0x1a8, 0x1af, 0x1b5, 0x1c4, 0x1c8, 0x1ca, 0x1ce, 0x1d0, 0x1d3, 0x1d5, 0x1d8, 0x1da, 0x1dd, 0x1df, 0x1e1, 0x1e3, 0x1ef, 0x1f8, 0x1ff, 0x20c, 0x20f, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21c, 0x21e, 0x220, 0x222, 0x224, 0x22a, 0x22d, 0x22f, 0x231, 0x233, 0x235, 0x244, 0x246, 0x24c, 0x254, 0x25b, 0x25e, 0x26b, 0x275, 0x277, 0x279, 0x27d, 0x282, 0x28e, 0x293, 0x29c, 0x2a2, 0x2a7, 0x2ab, 0x2b0, 0x2b4, 0x2c4, 0x2d2, 0x2e0, 0x2ee, 0x2f8, 0x2fa}
+-
+-// nfkcSparseValues: 772 entries, 3088 bytes
+-var nfkcSparseValues = [772]valueRange{
+-	// Block 0x0, offset 0x1
+-	{value: 0x0002, lo: 0x0d},
+-	{value: 0x0001, lo: 0xa0, hi: 0xa0},
+-	{value: 0x425e, lo: 0xa8, hi: 0xa8},
+-	{value: 0x0083, lo: 0xaa, hi: 0xaa},
+-	{value: 0x424a, lo: 0xaf, hi: 0xaf},
+-	{value: 0x0025, lo: 0xb2, hi: 0xb3},
+-	{value: 0x4240, lo: 0xb4, hi: 0xb4},
+-	{value: 0x01dc, lo: 0xb5, hi: 0xb5},
+-	{value: 0x4277, lo: 0xb8, hi: 0xb8},
+-	{value: 0x0023, lo: 0xb9, hi: 0xb9},
+-	{value: 0x009f, lo: 0xba, hi: 0xba},
+-	{value: 0x235e, lo: 0xbc, hi: 0xbc},
+-	{value: 0x2352, lo: 0xbd, hi: 0xbd},
+-	{value: 0x23f4, lo: 0xbe, hi: 0xbe},
+-	// Block 0x1, offset 0x2
+-	{value: 0x0091, lo: 0x03},
+-	{value: 0x46c8, lo: 0xa0, hi: 0xa1},
+-	{value: 0x46fa, lo: 0xaf, hi: 0xb0},
+-	{value: 0x8800, lo: 0xb7, hi: 0xb7},
+-	// Block 0x2, offset 0x3
+-	{value: 0x0003, lo: 0x08},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x0091, lo: 0xb0, hi: 0xb0},
+-	{value: 0x011c, lo: 0xb1, hi: 0xb1},
+-	{value: 0x0095, lo: 0xb2, hi: 0xb2},
+-	{value: 0x00a5, lo: 0xb3, hi: 0xb3},
+-	{value: 0x0143, lo: 0xb4, hi: 0xb6},
+-	{value: 0x00af, lo: 0xb7, hi: 0xb7},
+-	{value: 0x00b3, lo: 0xb8, hi: 0xb8},
+-	// Block 0x3, offset 0x4
+-	{value: 0x000a, lo: 0x09},
+-	{value: 0x4254, lo: 0x98, hi: 0x98},
+-	{value: 0x4259, lo: 0x99, hi: 0x9a},
+-	{value: 0x427c, lo: 0x9b, hi: 0x9b},
+-	{value: 0x4245, lo: 0x9c, hi: 0x9c},
+-	{value: 0x4268, lo: 0x9d, hi: 0x9d},
+-	{value: 0x0116, lo: 0xa0, hi: 0xa0},
+-	{value: 0x0099, lo: 0xa1, hi: 0xa1},
+-	{value: 0x00a7, lo: 0xa2, hi: 0xa3},
+-	{value: 0x0167, lo: 0xa4, hi: 0xa4},
+-	// Block 0x4, offset 0x5
+-	{value: 0x0000, lo: 0x0f},
+-	{value: 0x8800, lo: 0x83, hi: 0x83},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x8800, lo: 0x8b, hi: 0x8b},
+-	{value: 0x8800, lo: 0x8d, hi: 0x8d},
+-	{value: 0x378f, lo: 0x90, hi: 0x90},
+-	{value: 0x379b, lo: 0x91, hi: 0x91},
+-	{value: 0x3789, lo: 0x93, hi: 0x93},
+-	{value: 0x8800, lo: 0x96, hi: 0x96},
+-	{value: 0x3801, lo: 0x97, hi: 0x97},
+-	{value: 0x37cb, lo: 0x9c, hi: 0x9c},
+-	{value: 0x37b3, lo: 0x9d, hi: 0x9d},
+-	{value: 0x37dd, lo: 0x9e, hi: 0x9e},
+-	{value: 0x8800, lo: 0xb4, hi: 0xb5},
+-	{value: 0x3807, lo: 0xb6, hi: 0xb6},
+-	{value: 0x380d, lo: 0xb7, hi: 0xb7},
+-	// Block 0x5, offset 0x6
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x83, hi: 0x87},
+-	// Block 0x6, offset 0x7
+-	{value: 0x0001, lo: 0x04},
+-	{value: 0x8018, lo: 0x81, hi: 0x82},
+-	{value: 0x80e6, lo: 0x84, hi: 0x84},
+-	{value: 0x80dc, lo: 0x85, hi: 0x85},
+-	{value: 0x8012, lo: 0x87, hi: 0x87},
+-	// Block 0x7, offset 0x8
+-	{value: 0x0000, lo: 0x0a},
+-	{value: 0x80e6, lo: 0x90, hi: 0x97},
+-	{value: 0x801e, lo: 0x98, hi: 0x98},
+-	{value: 0x801f, lo: 0x99, hi: 0x99},
+-	{value: 0x8020, lo: 0x9a, hi: 0x9a},
+-	{value: 0x382b, lo: 0xa2, hi: 0xa2},
+-	{value: 0x3831, lo: 0xa3, hi: 0xa3},
+-	{value: 0x383d, lo: 0xa4, hi: 0xa4},
+-	{value: 0x3837, lo: 0xa5, hi: 0xa5},
+-	{value: 0x3843, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8800, lo: 0xa7, hi: 0xa7},
+-	// Block 0x8, offset 0x9
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x3855, lo: 0x80, hi: 0x80},
+-	{value: 0x8800, lo: 0x81, hi: 0x81},
+-	{value: 0x3849, lo: 0x82, hi: 0x82},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x384f, lo: 0x93, hi: 0x93},
+-	{value: 0x8800, lo: 0x95, hi: 0x95},
+-	{value: 0x80e6, lo: 0x96, hi: 0x9c},
+-	{value: 0x80e6, lo: 0x9f, hi: 0xa2},
+-	{value: 0x80dc, lo: 0xa3, hi: 0xa3},
+-	{value: 0x80e6, lo: 0xa4, hi: 0xa4},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xaa, hi: 0xaa},
+-	{value: 0x80e6, lo: 0xab, hi: 0xac},
+-	{value: 0x80dc, lo: 0xad, hi: 0xad},
+-	// Block 0x9, offset 0xa
+-	{value: 0x0000, lo: 0x0c},
+-	{value: 0x8024, lo: 0x91, hi: 0x91},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	{value: 0x80dc, lo: 0xb1, hi: 0xb1},
+-	{value: 0x80e6, lo: 0xb2, hi: 0xb3},
+-	{value: 0x80dc, lo: 0xb4, hi: 0xb4},
+-	{value: 0x80e6, lo: 0xb5, hi: 0xb6},
+-	{value: 0x80dc, lo: 0xb7, hi: 0xb9},
+-	{value: 0x80e6, lo: 0xba, hi: 0xba},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbc},
+-	{value: 0x80e6, lo: 0xbd, hi: 0xbd},
+-	{value: 0x80dc, lo: 0xbe, hi: 0xbe},
+-	{value: 0x80e6, lo: 0xbf, hi: 0xbf},
+-	// Block 0xa, offset 0xb
+-	{value: 0x000a, lo: 0x07},
+-	{value: 0x80e6, lo: 0x80, hi: 0x80},
+-	{value: 0x80e6, lo: 0x81, hi: 0x81},
+-	{value: 0x80dc, lo: 0x82, hi: 0x83},
+-	{value: 0x80dc, lo: 0x84, hi: 0x85},
+-	{value: 0x80dc, lo: 0x86, hi: 0x87},
+-	{value: 0x80dc, lo: 0x88, hi: 0x89},
+-	{value: 0x80e6, lo: 0x8a, hi: 0x8a},
+-	// Block 0xb, offset 0xc
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x80e6, lo: 0xab, hi: 0xb1},
+-	{value: 0x80dc, lo: 0xb2, hi: 0xb2},
+-	{value: 0x80e6, lo: 0xb3, hi: 0xb3},
+-	// Block 0xc, offset 0xd
+-	{value: 0x0000, lo: 0x04},
+-	{value: 0x80e6, lo: 0x96, hi: 0x99},
+-	{value: 0x80e6, lo: 0x9b, hi: 0xa3},
+-	{value: 0x80e6, lo: 0xa5, hi: 0xa7},
+-	{value: 0x80e6, lo: 0xa9, hi: 0xad},
+-	// Block 0xd, offset 0xe
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x99, hi: 0x9b},
+-	// Block 0xe, offset 0xf
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x80e6, lo: 0xa4, hi: 0xa5},
+-	{value: 0x80dc, lo: 0xa6, hi: 0xa6},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xa9, hi: 0xa9},
+-	{value: 0x80e6, lo: 0xaa, hi: 0xac},
+-	{value: 0x80dc, lo: 0xad, hi: 0xaf},
+-	{value: 0x801b, lo: 0xb0, hi: 0xb0},
+-	{value: 0x801c, lo: 0xb1, hi: 0xb1},
+-	{value: 0x801d, lo: 0xb2, hi: 0xb2},
+-	{value: 0x80e6, lo: 0xb3, hi: 0xb5},
+-	{value: 0x80dc, lo: 0xb6, hi: 0xb6},
+-	{value: 0x80e6, lo: 0xb7, hi: 0xb8},
+-	{value: 0x80dc, lo: 0xb9, hi: 0xba},
+-	{value: 0x80e6, lo: 0xbb, hi: 0xbe},
+-	// Block 0xf, offset 0x10
+-	{value: 0x0000, lo: 0x07},
+-	{value: 0x8800, lo: 0xa8, hi: 0xa8},
+-	{value: 0x3ec2, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8800, lo: 0xb0, hi: 0xb0},
+-	{value: 0x3eca, lo: 0xb1, hi: 0xb1},
+-	{value: 0x8800, lo: 0xb3, hi: 0xb3},
+-	{value: 0x3ed2, lo: 0xb4, hi: 0xb4},
+-	{value: 0x8607, lo: 0xbc, hi: 0xbc},
+-	// Block 0x10, offset 0x11
+-	{value: 0x0008, lo: 0x06},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80e6, lo: 0x91, hi: 0x91},
+-	{value: 0x80dc, lo: 0x92, hi: 0x92},
+-	{value: 0x80e6, lo: 0x93, hi: 0x93},
+-	{value: 0x80e6, lo: 0x94, hi: 0x94},
+-	{value: 0x4502, lo: 0x98, hi: 0x9f},
+-	// Block 0x11, offset 0x12
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x12, offset 0x13
+-	{value: 0x0007, lo: 0x07},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x18cf, lo: 0x8b, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	{value: 0x4542, lo: 0x9c, hi: 0x9c},
+-	{value: 0x454a, lo: 0x9d, hi: 0x9d},
+-	{value: 0x4552, lo: 0x9f, hi: 0x9f},
+-	// Block 0x13, offset 0x14
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x457a, lo: 0xb3, hi: 0xb3},
+-	{value: 0x4582, lo: 0xb6, hi: 0xb6},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	// Block 0x14, offset 0x15
+-	{value: 0x0008, lo: 0x03},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x455a, lo: 0x99, hi: 0x9b},
+-	{value: 0x4572, lo: 0x9e, hi: 0x9e},
+-	// Block 0x15, offset 0x16
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	// Block 0x16, offset 0x17
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	// Block 0x17, offset 0x18
+-	{value: 0x0000, lo: 0x08},
+-	{value: 0x8800, lo: 0x87, hi: 0x87},
+-	{value: 0x18e4, lo: 0x88, hi: 0x88},
+-	{value: 0x18dd, lo: 0x8b, hi: 0x8b},
+-	{value: 0x18eb, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x96, hi: 0x97},
+-	{value: 0x458a, lo: 0x9c, hi: 0x9c},
+-	{value: 0x4592, lo: 0x9d, hi: 0x9d},
+-	// Block 0x18, offset 0x19
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x18f2, lo: 0x94, hi: 0x94},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x19, offset 0x1a
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x8800, lo: 0x86, hi: 0x87},
+-	{value: 0x18f9, lo: 0x8a, hi: 0x8a},
+-	{value: 0x1907, lo: 0x8b, hi: 0x8b},
+-	{value: 0x1900, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	// Block 0x1a, offset 0x1b
+-	{value: 0x0607, lo: 0x04},
+-	{value: 0x8800, lo: 0x86, hi: 0x86},
+-	{value: 0x3eda, lo: 0x88, hi: 0x88},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8054, lo: 0x95, hi: 0x96},
+-	// Block 0x1b, offset 0x1c
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xbc, hi: 0xbc},
+-	{value: 0x8800, lo: 0xbf, hi: 0xbf},
+-	// Block 0x1c, offset 0x1d
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x190e, lo: 0x80, hi: 0x80},
+-	{value: 0x8600, lo: 0x82, hi: 0x82},
+-	{value: 0x8800, lo: 0x86, hi: 0x86},
+-	{value: 0x1915, lo: 0x87, hi: 0x87},
+-	{value: 0x191c, lo: 0x88, hi: 0x88},
+-	{value: 0x2e66, lo: 0x8a, hi: 0x8a},
+-	{value: 0x19a5, lo: 0x8b, hi: 0x8b},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x95, hi: 0x96},
+-	// Block 0x1d, offset 0x1e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0xbe, hi: 0xbe},
+-	// Block 0x1e, offset 0x1f
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x8800, lo: 0x86, hi: 0x87},
+-	{value: 0x1923, lo: 0x8a, hi: 0x8a},
+-	{value: 0x1931, lo: 0x8b, hi: 0x8b},
+-	{value: 0x192a, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8009, lo: 0x8d, hi: 0x8d},
+-	{value: 0x8600, lo: 0x97, hi: 0x97},
+-	// Block 0x1f, offset 0x20
+-	{value: 0x0007, lo: 0x07},
+-	{value: 0x8609, lo: 0x8a, hi: 0x8a},
+-	{value: 0x8600, lo: 0x8f, hi: 0x8f},
+-	{value: 0x8800, lo: 0x99, hi: 0x99},
+-	{value: 0x3ee2, lo: 0x9a, hi: 0x9a},
+-	{value: 0x2e6d, lo: 0x9c, hi: 0x9d},
+-	{value: 0x1938, lo: 0x9e, hi: 0x9e},
+-	{value: 0x8600, lo: 0x9f, hi: 0x9f},
+-	// Block 0x20, offset 0x21
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x2763, lo: 0xb3, hi: 0xb3},
+-	{value: 0x8067, lo: 0xb8, hi: 0xb9},
+-	{value: 0x8009, lo: 0xba, hi: 0xba},
+-	// Block 0x21, offset 0x22
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x806b, lo: 0x88, hi: 0x8b},
+-	// Block 0x22, offset 0x23
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x2778, lo: 0xb3, hi: 0xb3},
+-	{value: 0x8076, lo: 0xb8, hi: 0xb9},
+-	// Block 0x23, offset 0x24
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x807a, lo: 0x88, hi: 0x8b},
+-	{value: 0x276a, lo: 0x9c, hi: 0x9c},
+-	{value: 0x2771, lo: 0x9d, hi: 0x9d},
+-	// Block 0x24, offset 0x25
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x0305, lo: 0x8c, hi: 0x8c},
+-	{value: 0x80dc, lo: 0x98, hi: 0x99},
+-	{value: 0x80dc, lo: 0xb5, hi: 0xb5},
+-	{value: 0x80dc, lo: 0xb7, hi: 0xb7},
+-	{value: 0x80d8, lo: 0xb9, hi: 0xb9},
+-	// Block 0x25, offset 0x26
+-	{value: 0x0000, lo: 0x10},
+-	{value: 0x2786, lo: 0x83, hi: 0x83},
+-	{value: 0x278d, lo: 0x8d, hi: 0x8d},
+-	{value: 0x2794, lo: 0x92, hi: 0x92},
+-	{value: 0x279b, lo: 0x97, hi: 0x97},
+-	{value: 0x27a2, lo: 0x9c, hi: 0x9c},
+-	{value: 0x277f, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8081, lo: 0xb1, hi: 0xb1},
+-	{value: 0x8082, lo: 0xb2, hi: 0xb2},
+-	{value: 0x49b6, lo: 0xb3, hi: 0xb3},
+-	{value: 0x8084, lo: 0xb4, hi: 0xb4},
+-	{value: 0x49bf, lo: 0xb5, hi: 0xb5},
+-	{value: 0x459a, lo: 0xb6, hi: 0xb6},
+-	{value: 0x45da, lo: 0xb7, hi: 0xb7},
+-	{value: 0x45a2, lo: 0xb8, hi: 0xb8},
+-	{value: 0x45e5, lo: 0xb9, hi: 0xb9},
+-	{value: 0x8082, lo: 0xba, hi: 0xbd},
+-	// Block 0x26, offset 0x27
+-	{value: 0x0000, lo: 0x0b},
+-	{value: 0x8082, lo: 0x80, hi: 0x80},
+-	{value: 0x49c8, lo: 0x81, hi: 0x81},
+-	{value: 0x80e6, lo: 0x82, hi: 0x83},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0x86, hi: 0x87},
+-	{value: 0x27b0, lo: 0x93, hi: 0x93},
+-	{value: 0x27b7, lo: 0x9d, hi: 0x9d},
+-	{value: 0x27be, lo: 0xa2, hi: 0xa2},
+-	{value: 0x27c5, lo: 0xa7, hi: 0xa7},
+-	{value: 0x27cc, lo: 0xac, hi: 0xac},
+-	{value: 0x27a9, lo: 0xb9, hi: 0xb9},
+-	// Block 0x27, offset 0x28
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x86, hi: 0x86},
+-	// Block 0x28, offset 0x29
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x8800, lo: 0xa5, hi: 0xa5},
+-	{value: 0x193f, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8600, lo: 0xae, hi: 0xae},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	{value: 0x8009, lo: 0xb9, hi: 0xba},
+-	// Block 0x29, offset 0x2a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0x8d, hi: 0x8d},
+-	// Block 0x2a, offset 0x2b
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0309, lo: 0xbc, hi: 0xbc},
+-	// Block 0x2b, offset 0x2c
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8800, lo: 0x80, hi: 0x92},
+-	// Block 0x2c, offset 0x2d
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8e00, lo: 0xa1, hi: 0xb5},
+-	// Block 0x2d, offset 0x2e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0xa8, hi: 0xbf},
+-	// Block 0x2e, offset 0x2f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8600, lo: 0x80, hi: 0x82},
+-	// Block 0x2f, offset 0x30
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x9d, hi: 0x9f},
+-	// Block 0x30, offset 0x31
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x94, hi: 0x94},
+-	{value: 0x8009, lo: 0xb4, hi: 0xb4},
+-	// Block 0x31, offset 0x32
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x92, hi: 0x92},
+-	{value: 0x80e6, lo: 0x9d, hi: 0x9d},
+-	// Block 0x32, offset 0x33
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e4, lo: 0xa9, hi: 0xa9},
+-	// Block 0x33, offset 0x34
+-	{value: 0x0008, lo: 0x02},
+-	{value: 0x80de, lo: 0xb9, hi: 0xba},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbb},
+-	// Block 0x34, offset 0x35
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0x97, hi: 0x97},
+-	{value: 0x80dc, lo: 0x98, hi: 0x98},
+-	// Block 0x35, offset 0x36
+-	{value: 0x0000, lo: 0x03},
+-	{value: 0x8009, lo: 0xa0, hi: 0xa0},
+-	{value: 0x80e6, lo: 0xb5, hi: 0xbc},
+-	{value: 0x80dc, lo: 0xbf, hi: 0xbf},
+-	// Block 0x36, offset 0x37
+-	{value: 0x0000, lo: 0x08},
+-	{value: 0x197e, lo: 0x80, hi: 0x80},
+-	{value: 0x1985, lo: 0x81, hi: 0x81},
+-	{value: 0x8800, lo: 0x82, hi: 0x82},
+-	{value: 0x198c, lo: 0x83, hi: 0x83},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0xab, hi: 0xab},
+-	{value: 0x80dc, lo: 0xac, hi: 0xac},
+-	{value: 0x80e6, lo: 0xad, hi: 0xb3},
+-	// Block 0x37, offset 0x38
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0xaa, hi: 0xab},
+-	// Block 0x38, offset 0x39
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8007, lo: 0xa6, hi: 0xa6},
+-	{value: 0x8009, lo: 0xb2, hi: 0xb3},
+-	// Block 0x39, offset 0x3a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	// Block 0x3a, offset 0x3b
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x80e6, lo: 0x90, hi: 0x92},
+-	{value: 0x8001, lo: 0x94, hi: 0x94},
+-	{value: 0x80dc, lo: 0x95, hi: 0x99},
+-	{value: 0x80e6, lo: 0x9a, hi: 0x9b},
+-	{value: 0x80dc, lo: 0x9c, hi: 0x9f},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xa0},
+-	{value: 0x8001, lo: 0xa2, hi: 0xa8},
+-	{value: 0x80dc, lo: 0xad, hi: 0xad},
+-	{value: 0x80e6, lo: 0xb4, hi: 0xb4},
+-	// Block 0x3b, offset 0x3c
+-	{value: 0x0002, lo: 0x0a},
+-	{value: 0x0043, lo: 0xac, hi: 0xac},
+-	{value: 0x00d4, lo: 0xad, hi: 0xad},
+-	{value: 0x0045, lo: 0xae, hi: 0xae},
+-	{value: 0x0049, lo: 0xb0, hi: 0xb1},
+-	{value: 0x00e9, lo: 0xb2, hi: 0xb2},
+-	{value: 0x004f, lo: 0xb3, hi: 0xba},
+-	{value: 0x005f, lo: 0xbc, hi: 0xbc},
+-	{value: 0x00f2, lo: 0xbd, hi: 0xbd},
+-	{value: 0x0061, lo: 0xbe, hi: 0xbe},
+-	{value: 0x0065, lo: 0xbf, hi: 0xbf},
+-	// Block 0x3c, offset 0x3d
+-	{value: 0x0000, lo: 0x0e},
+-	{value: 0x80e6, lo: 0x80, hi: 0x81},
+-	{value: 0x80dc, lo: 0x82, hi: 0x82},
+-	{value: 0x80e6, lo: 0x83, hi: 0x89},
+-	{value: 0x80dc, lo: 0x8a, hi: 0x8a},
+-	{value: 0x80e6, lo: 0x8b, hi: 0x8c},
+-	{value: 0x80ea, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80d6, lo: 0x8e, hi: 0x8e},
+-	{value: 0x80dc, lo: 0x8f, hi: 0x8f},
+-	{value: 0x80ca, lo: 0x90, hi: 0x90},
+-	{value: 0x80e6, lo: 0x91, hi: 0xa6},
+-	{value: 0x80e9, lo: 0xbc, hi: 0xbc},
+-	{value: 0x80dc, lo: 0xbd, hi: 0xbd},
+-	{value: 0x80e6, lo: 0xbe, hi: 0xbe},
+-	{value: 0x80dc, lo: 0xbf, hi: 0xbf},
+-	// Block 0x3d, offset 0x3e
+-	{value: 0x0000, lo: 0x0d},
+-	{value: 0x0001, lo: 0x80, hi: 0x8a},
+-	{value: 0x04ad, lo: 0x91, hi: 0x91},
+-	{value: 0x4281, lo: 0x97, hi: 0x97},
+-	{value: 0x001d, lo: 0xa4, hi: 0xa4},
+-	{value: 0x19b5, lo: 0xa5, hi: 0xa5},
+-	{value: 0x1c9e, lo: 0xa6, hi: 0xa6},
+-	{value: 0x0001, lo: 0xaf, hi: 0xaf},
+-	{value: 0x283c, lo: 0xb3, hi: 0xb3},
+-	{value: 0x29a9, lo: 0xb4, hi: 0xb4},
+-	{value: 0x2843, lo: 0xb6, hi: 0xb6},
+-	{value: 0x29b3, lo: 0xb7, hi: 0xb7},
+-	{value: 0x19af, lo: 0xbc, hi: 0xbc},
+-	{value: 0x424f, lo: 0xbe, hi: 0xbe},
+-	// Block 0x3e, offset 0x3f
+-	{value: 0x0002, lo: 0x0d},
+-	{value: 0x1a75, lo: 0x87, hi: 0x87},
+-	{value: 0x1a72, lo: 0x88, hi: 0x88},
+-	{value: 0x19b2, lo: 0x89, hi: 0x89},
+-	{value: 0x2b46, lo: 0x97, hi: 0x97},
+-	{value: 0x0001, lo: 0x9f, hi: 0x9f},
+-	{value: 0x0021, lo: 0xb0, hi: 0xb0},
+-	{value: 0x0093, lo: 0xb1, hi: 0xb1},
+-	{value: 0x0029, lo: 0xb4, hi: 0xb9},
+-	{value: 0x0017, lo: 0xba, hi: 0xba},
+-	{value: 0x04d9, lo: 0xbb, hi: 0xbb},
+-	{value: 0x003b, lo: 0xbc, hi: 0xbc},
+-	{value: 0x0011, lo: 0xbd, hi: 0xbe},
+-	{value: 0x009d, lo: 0xbf, hi: 0xbf},
+-	// Block 0x3f, offset 0x40
+-	{value: 0x0002, lo: 0x0f},
+-	{value: 0x0021, lo: 0x80, hi: 0x89},
+-	{value: 0x0017, lo: 0x8a, hi: 0x8a},
+-	{value: 0x04d9, lo: 0x8b, hi: 0x8b},
+-	{value: 0x003b, lo: 0x8c, hi: 0x8c},
+-	{value: 0x0011, lo: 0x8d, hi: 0x8e},
+-	{value: 0x0083, lo: 0x90, hi: 0x90},
+-	{value: 0x008b, lo: 0x91, hi: 0x91},
+-	{value: 0x009f, lo: 0x92, hi: 0x92},
+-	{value: 0x00b1, lo: 0x93, hi: 0x93},
+-	{value: 0x0107, lo: 0x94, hi: 0x94},
+-	{value: 0x0091, lo: 0x95, hi: 0x95},
+-	{value: 0x0097, lo: 0x96, hi: 0x99},
+-	{value: 0x00a1, lo: 0x9a, hi: 0x9a},
+-	{value: 0x00a7, lo: 0x9b, hi: 0x9c},
+-	{value: 0x1adb, lo: 0xa8, hi: 0xa8},
+-	// Block 0x40, offset 0x41
+-	{value: 0x0000, lo: 0x0d},
+-	{value: 0x80e6, lo: 0x90, hi: 0x91},
+-	{value: 0x8001, lo: 0x92, hi: 0x93},
+-	{value: 0x80e6, lo: 0x94, hi: 0x97},
+-	{value: 0x8001, lo: 0x98, hi: 0x9a},
+-	{value: 0x80e6, lo: 0x9b, hi: 0x9c},
+-	{value: 0x80e6, lo: 0xa1, hi: 0xa1},
+-	{value: 0x8001, lo: 0xa5, hi: 0xa6},
+-	{value: 0x80e6, lo: 0xa7, hi: 0xa7},
+-	{value: 0x80dc, lo: 0xa8, hi: 0xa8},
+-	{value: 0x80e6, lo: 0xa9, hi: 0xa9},
+-	{value: 0x8001, lo: 0xaa, hi: 0xab},
+-	{value: 0x80dc, lo: 0xac, hi: 0xaf},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	// Block 0x41, offset 0x42
+-	{value: 0x0007, lo: 0x06},
+-	{value: 0x22c2, lo: 0x89, hi: 0x89},
+-	{value: 0x8800, lo: 0x90, hi: 0x90},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x8800, lo: 0x94, hi: 0x94},
+-	{value: 0x3ba3, lo: 0x9a, hi: 0x9b},
+-	{value: 0x3bb1, lo: 0xae, hi: 0xae},
+-	// Block 0x42, offset 0x43
+-	{value: 0x000e, lo: 0x05},
+-	{value: 0x3bb8, lo: 0x8d, hi: 0x8e},
+-	{value: 0x3bbf, lo: 0x8f, hi: 0x8f},
+-	{value: 0x8800, lo: 0x90, hi: 0x90},
+-	{value: 0x8800, lo: 0x92, hi: 0x92},
+-	{value: 0x8800, lo: 0x94, hi: 0x94},
+-	// Block 0x43, offset 0x44
+-	{value: 0x0173, lo: 0x0e},
+-	{value: 0x8800, lo: 0x83, hi: 0x83},
+-	{value: 0x3bcd, lo: 0x84, hi: 0x84},
+-	{value: 0x8800, lo: 0x88, hi: 0x88},
+-	{value: 0x3bd4, lo: 0x89, hi: 0x89},
+-	{value: 0x8800, lo: 0x8b, hi: 0x8b},
+-	{value: 0x3bdb, lo: 0x8c, hi: 0x8c},
+-	{value: 0x8800, lo: 0xa3, hi: 0xa3},
+-	{value: 0x3be2, lo: 0xa4, hi: 0xa4},
+-	{value: 0x8800, lo: 0xa5, hi: 0xa5},
+-	{value: 0x3be9, lo: 0xa6, hi: 0xa6},
+-	{value: 0x284a, lo: 0xac, hi: 0xad},
+-	{value: 0x2851, lo: 0xaf, hi: 0xaf},
+-	{value: 0x29c7, lo: 0xb0, hi: 0xb0},
+-	{value: 0x8800, lo: 0xbc, hi: 0xbc},
+-	// Block 0x44, offset 0x45
+-	{value: 0x0007, lo: 0x03},
+-	{value: 0x3c52, lo: 0xa0, hi: 0xa1},
+-	{value: 0x3c7c, lo: 0xa2, hi: 0xa3},
+-	{value: 0x3ca6, lo: 0xaa, hi: 0xad},
+-	// Block 0x45, offset 0x46
+-	{value: 0x0004, lo: 0x01},
+-	{value: 0x04fd, lo: 0xa9, hi: 0xaa},
+-	// Block 0x46, offset 0x47
+-	{value: 0x0002, lo: 0x03},
+-	{value: 0x0057, lo: 0x80, hi: 0x8f},
+-	{value: 0x0083, lo: 0x90, hi: 0xa9},
+-	{value: 0x0021, lo: 0xaa, hi: 0xaa},
+-	// Block 0x47, offset 0x48
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x2b53, lo: 0x8c, hi: 0x8c},
+-	// Block 0x48, offset 0x49
+-	{value: 0x0263, lo: 0x02},
+-	{value: 0x1cce, lo: 0xb4, hi: 0xb4},
+-	{value: 0x1a6f, lo: 0xb5, hi: 0xb6},
+-	// Block 0x49, offset 0x4a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x44c3, lo: 0x9c, hi: 0x9c},
+-	// Block 0x4a, offset 0x4b
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x0095, lo: 0xbc, hi: 0xbc},
+-	{value: 0x006d, lo: 0xbd, hi: 0xbd},
+-	// Block 0x4b, offset 0x4c
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xaf, hi: 0xb1},
+-	// Block 0x4c, offset 0x4d
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x04f1, lo: 0xaf, hi: 0xaf},
+-	{value: 0x8009, lo: 0xbf, hi: 0xbf},
+-	// Block 0x4d, offset 0x4e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xbf},
+-	// Block 0x4e, offset 0x4f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0e35, lo: 0x9f, hi: 0x9f},
+-	// Block 0x4f, offset 0x50
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x169d, lo: 0xb3, hi: 0xb3},
+-	// Block 0x50, offset 0x51
+-	{value: 0x0004, lo: 0x0b},
+-	{value: 0x1605, lo: 0x80, hi: 0x82},
+-	{value: 0x161d, lo: 0x83, hi: 0x83},
+-	{value: 0x1635, lo: 0x84, hi: 0x85},
+-	{value: 0x1645, lo: 0x86, hi: 0x89},
+-	{value: 0x1659, lo: 0x8a, hi: 0x8c},
+-	{value: 0x166d, lo: 0x8d, hi: 0x8d},
+-	{value: 0x1675, lo: 0x8e, hi: 0x8e},
+-	{value: 0x167d, lo: 0x8f, hi: 0x90},
+-	{value: 0x1689, lo: 0x91, hi: 0x93},
+-	{value: 0x1699, lo: 0x94, hi: 0x94},
+-	{value: 0x16a1, lo: 0x95, hi: 0x95},
+-	// Block 0x51, offset 0x52
+-	{value: 0x0004, lo: 0x08},
+-	{value: 0x0001, lo: 0x80, hi: 0x80},
+-	{value: 0x80da, lo: 0xaa, hi: 0xaa},
+-	{value: 0x80e4, lo: 0xab, hi: 0xac},
+-	{value: 0x80de, lo: 0xad, hi: 0xad},
+-	{value: 0x80e0, lo: 0xae, hi: 0xae},
+-	{value: 0x80e0, lo: 0xaf, hi: 0xaf},
+-	{value: 0x0525, lo: 0xb6, hi: 0xb6},
+-	{value: 0x08f9, lo: 0xb8, hi: 0xba},
+-	// Block 0x52, offset 0x53
+-	{value: 0x0004, lo: 0x06},
+-	{value: 0x030d, lo: 0xb1, hi: 0xb2},
+-	{value: 0x0435, lo: 0xb3, hi: 0xb3},
+-	{value: 0x0315, lo: 0xb4, hi: 0xb4},
+-	{value: 0x0439, lo: 0xb5, hi: 0xb6},
+-	{value: 0x0319, lo: 0xb7, hi: 0xb9},
+-	{value: 0x0441, lo: 0xba, hi: 0xbf},
+-	// Block 0x53, offset 0x54
+-	{value: 0x0004, lo: 0x0c},
+-	{value: 0x0361, lo: 0x80, hi: 0x80},
+-	{value: 0x0325, lo: 0x81, hi: 0x83},
+-	{value: 0x0375, lo: 0x84, hi: 0x84},
+-	{value: 0x0331, lo: 0x85, hi: 0x8e},
+-	{value: 0x03c1, lo: 0x8f, hi: 0xa3},
+-	{value: 0x03bd, lo: 0xa4, hi: 0xa4},
+-	{value: 0x0359, lo: 0xa5, hi: 0xa6},
+-	{value: 0x0459, lo: 0xa7, hi: 0xad},
+-	{value: 0x0365, lo: 0xae, hi: 0xae},
+-	{value: 0x0475, lo: 0xaf, hi: 0xb0},
+-	{value: 0x0369, lo: 0xb1, hi: 0xb3},
+-	{value: 0x0379, lo: 0xb4, hi: 0xbf},
+-	// Block 0x54, offset 0x55
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0xaf, hi: 0xaf},
+-	{value: 0x80e6, lo: 0xb4, hi: 0xbd},
+-	// Block 0x55, offset 0x56
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x9f, hi: 0x9f},
+-	// Block 0x56, offset 0x57
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb1},
+-	// Block 0x57, offset 0x58
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x16a5, lo: 0xb0, hi: 0xb0},
+-	// Block 0x58, offset 0x59
+-	{value: 0x000c, lo: 0x01},
+-	{value: 0x00da, lo: 0xb8, hi: 0xb9},
+-	// Block 0x59, offset 0x5a
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x86, hi: 0x86},
+-	// Block 0x5a, offset 0x5b
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0x84, hi: 0x84},
+-	{value: 0x80e6, lo: 0xa0, hi: 0xb1},
+-	// Block 0x5b, offset 0x5c
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0xab, hi: 0xad},
+-	// Block 0x5c, offset 0x5d
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x93, hi: 0x93},
+-	// Block 0x5d, offset 0x5e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8007, lo: 0xb3, hi: 0xb3},
+-	// Block 0x5e, offset 0x5f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0x80, hi: 0x80},
+-	// Block 0x5f, offset 0x60
+-	{value: 0x0000, lo: 0x05},
+-	{value: 0x80e6, lo: 0xb0, hi: 0xb0},
+-	{value: 0x80e6, lo: 0xb2, hi: 0xb3},
+-	{value: 0x80dc, lo: 0xb4, hi: 0xb4},
+-	{value: 0x80e6, lo: 0xb7, hi: 0xb8},
+-	{value: 0x80e6, lo: 0xbe, hi: 0xbf},
+-	// Block 0x60, offset 0x61
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x80e6, lo: 0x81, hi: 0x81},
+-	{value: 0x8009, lo: 0xb6, hi: 0xb6},
+-	// Block 0x61, offset 0x62
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8009, lo: 0xad, hi: 0xad},
+-	// Block 0x62, offset 0x63
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8100, lo: 0x80, hi: 0xbf},
+-	// Block 0x63, offset 0x64
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x8100, lo: 0x80, hi: 0xa3},
+-	// Block 0x64, offset 0x65
+-	{value: 0x0002, lo: 0x01},
+-	{value: 0x0003, lo: 0x81, hi: 0xbf},
+-	// Block 0x65, offset 0x66
+-	{value: 0x0004, lo: 0x0e},
+-	{value: 0x03c1, lo: 0x82, hi: 0x87},
+-	{value: 0x03d9, lo: 0x8a, hi: 0x8f},
+-	{value: 0x03f1, lo: 0x92, hi: 0x97},
+-	{value: 0x0409, lo: 0x9a, hi: 0x9c},
+-	{value: 0x00bf, lo: 0xa0, hi: 0xa0},
+-	{value: 0x00c2, lo: 0xa1, hi: 0xa1},
+-	{value: 0x00cb, lo: 0xa2, hi: 0xa2},
+-	{value: 0x424a, lo: 0xa3, hi: 0xa3},
+-	{value: 0x00c8, lo: 0xa4, hi: 0xa4},
+-	{value: 0x00c5, lo: 0xa5, hi: 0xa5},
+-	{value: 0x04b9, lo: 0xa6, hi: 0xa6},
+-	{value: 0x04dd, lo: 0xa8, hi: 0xa8},
+-	{value: 0x04bd, lo: 0xa9, hi: 0xac},
+-	{value: 0x04e1, lo: 0xad, hi: 0xae},
+-	// Block 0x66, offset 0x67
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80dc, lo: 0xbd, hi: 0xbd},
+-	// Block 0x67, offset 0x68
+-	{value: 0x00db, lo: 0x05},
+-	{value: 0x80dc, lo: 0x8d, hi: 0x8d},
+-	{value: 0x80e6, lo: 0x8f, hi: 0x8f},
+-	{value: 0x80e6, lo: 0xb8, hi: 0xb8},
+-	{value: 0x8001, lo: 0xb9, hi: 0xba},
+-	{value: 0x8009, lo: 0xbf, hi: 0xbf},
+-	// Block 0x68, offset 0x69
+-	{value: 0x05fe, lo: 0x07},
+-	{value: 0x8800, lo: 0x99, hi: 0x99},
+-	{value: 0x4222, lo: 0x9a, hi: 0x9a},
+-	{value: 0x8800, lo: 0x9b, hi: 0x9b},
+-	{value: 0x422c, lo: 0x9c, hi: 0x9c},
+-	{value: 0x8800, lo: 0xa5, hi: 0xa5},
+-	{value: 0x4236, lo: 0xab, hi: 0xab},
+-	{value: 0x8009, lo: 0xb9, hi: 0xba},
+-	// Block 0x69, offset 0x6a
+-	{value: 0x0000, lo: 0x06},
+-	{value: 0x80e6, lo: 0x80, hi: 0x82},
+-	{value: 0x8600, lo: 0xa7, hi: 0xa7},
+-	{value: 0x1993, lo: 0xae, hi: 0xae},
+-	{value: 0x199c, lo: 0xaf, hi: 0xaf},
+-	{value: 0x8800, lo: 0xb1, hi: 0xb2},
+-	{value: 0x8009, lo: 0xb3, hi: 0xb4},
+-	// Block 0x6a, offset 0x6b
+-	{value: 0x0000, lo: 0x02},
+-	{value: 0x8009, lo: 0xb6, hi: 0xb6},
+-	{value: 0x8007, lo: 0xb7, hi: 0xb7},
+-	// Block 0x6b, offset 0x6c
+-	{value: 0x0000, lo: 0x0c},
+-	{value: 0x45b2, lo: 0x9e, hi: 0x9e},
+-	{value: 0x45bc, lo: 0x9f, hi: 0x9f},
+-	{value: 0x45f0, lo: 0xa0, hi: 0xa0},
+-	{value: 0x45fe, lo: 0xa1, hi: 0xa1},
+-	{value: 0x460c, lo: 0xa2, hi: 0xa2},
+-	{value: 0x461a, lo: 0xa3, hi: 0xa3},
+-	{value: 0x4628, lo: 0xa4, hi: 0xa4},
+-	{value: 0x80d8, lo: 0xa5, hi: 0xa6},
+-	{value: 0x8001, lo: 0xa7, hi: 0xa9},
+-	{value: 0x80e2, lo: 0xad, hi: 0xad},
+-	{value: 0x80d8, lo: 0xae, hi: 0xb2},
+-	{value: 0x80dc, lo: 0xbb, hi: 0xbf},
+-	// Block 0x6c, offset 0x6d
+-	{value: 0x0000, lo: 0x09},
+-	{value: 0x80dc, lo: 0x80, hi: 0x82},
+-	{value: 0x80e6, lo: 0x85, hi: 0x89},
+-	{value: 0x80dc, lo: 0x8a, hi: 0x8b},
+-	{value: 0x80e6, lo: 0xaa, hi: 0xad},
+-	{value: 0x45c6, lo: 0xbb, hi: 0xbb},
+-	{value: 0x45d0, lo: 0xbc, hi: 0xbc},
+-	{value: 0x4636, lo: 0xbd, hi: 0xbd},
+-	{value: 0x4652, lo: 0xbe, hi: 0xbe},
+-	{value: 0x4644, lo: 0xbf, hi: 0xbf},
+-	// Block 0x6d, offset 0x6e
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x4660, lo: 0x80, hi: 0x80},
+-	// Block 0x6e, offset 0x6f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x80e6, lo: 0x82, hi: 0x84},
+-	// Block 0x6f, offset 0x70
+-	{value: 0x0002, lo: 0x03},
+-	{value: 0x0043, lo: 0x80, hi: 0x99},
+-	{value: 0x0083, lo: 0x9a, hi: 0xb3},
+-	{value: 0x0043, lo: 0xb4, hi: 0xbf},
+-	// Block 0x70, offset 0x71
+-	{value: 0x0002, lo: 0x04},
+-	{value: 0x005b, lo: 0x80, hi: 0x8d},
+-	{value: 0x0083, lo: 0x8e, hi: 0x94},
+-	{value: 0x0093, lo: 0x96, hi: 0xa7},
+-	{value: 0x0043, lo: 0xa8, hi: 0xbf},
+-	// Block 0x71, offset 0x72
+-	{value: 0x0002, lo: 0x0b},
+-	{value: 0x0073, lo: 0x80, hi: 0x81},
+-	{value: 0x0083, lo: 0x82, hi: 0x9b},
+-	{value: 0x0043, lo: 0x9c, hi: 0x9c},
+-	{value: 0x0047, lo: 0x9e, hi: 0x9f},
+-	{value: 0x004f, lo: 0xa2, hi: 0xa2},
+-	{value: 0x0055, lo: 0xa5, hi: 0xa6},
+-	{value: 0x005d, lo: 0xa9, hi: 0xac},
+-	{value: 0x0067, lo: 0xae, hi: 0xb5},
+-	{value: 0x0083, lo: 0xb6, hi: 0xb9},
+-	{value: 0x008d, lo: 0xbb, hi: 0xbb},
+-	{value: 0x0091, lo: 0xbd, hi: 0xbf},
+-	// Block 0x72, offset 0x73
+-	{value: 0x0002, lo: 0x04},
+-	{value: 0x0097, lo: 0x80, hi: 0x83},
+-	{value: 0x00a1, lo: 0x85, hi: 0x8f},
+-	{value: 0x0043, lo: 0x90, hi: 0xa9},
+-	{value: 0x0083, lo: 0xaa, hi: 0xbf},
+-	// Block 0x73, offset 0x74
+-	{value: 0x0002, lo: 0x08},
+-	{value: 0x00af, lo: 0x80, hi: 0x83},
+-	{value: 0x0043, lo: 0x84, hi: 0x85},
+-	{value: 0x0049, lo: 0x87, hi: 0x8a},
+-	{value: 0x0055, lo: 0x8d, hi: 0x94},
+-	{value: 0x0067, lo: 0x96, hi: 0x9c},
+-	{value: 0x0083, lo: 0x9e, hi: 0xb7},
+-	{value: 0x0043, lo: 0xb8, hi: 0xb9},
+-	{value: 0x0049, lo: 0xbb, hi: 0xbe},
+-	// Block 0x74, offset 0x75
+-	{value: 0x0002, lo: 0x05},
+-	{value: 0x0053, lo: 0x80, hi: 0x84},
+-	{value: 0x005f, lo: 0x86, hi: 0x86},
+-	{value: 0x0067, lo: 0x8a, hi: 0x90},
+-	{value: 0x0083, lo: 0x92, hi: 0xab},
+-	{value: 0x0043, lo: 0xac, hi: 0xbf},
+-	// Block 0x75, offset 0x76
+-	{value: 0x0002, lo: 0x04},
+-	{value: 0x006b, lo: 0x80, hi: 0x85},
+-	{value: 0x0083, lo: 0x86, hi: 0x9f},
+-	{value: 0x0043, lo: 0xa0, hi: 0xb9},
+-	{value: 0x0083, lo: 0xba, hi: 0xbf},
+-	// Block 0x76, offset 0x77
+-	{value: 0x0002, lo: 0x03},
+-	{value: 0x008f, lo: 0x80, hi: 0x93},
+-	{value: 0x0043, lo: 0x94, hi: 0xad},
+-	{value: 0x0083, lo: 0xae, hi: 0xbf},
+-	// Block 0x77, offset 0x78
+-	{value: 0x0002, lo: 0x04},
+-	{value: 0x00a7, lo: 0x80, hi: 0x87},
+-	{value: 0x0043, lo: 0x88, hi: 0xa1},
+-	{value: 0x0083, lo: 0xa2, hi: 0xbb},
+-	{value: 0x0043, lo: 0xbc, hi: 0xbf},
+-	// Block 0x78, offset 0x79
+-	{value: 0x0002, lo: 0x03},
+-	{value: 0x004b, lo: 0x80, hi: 0x95},
+-	{value: 0x0083, lo: 0x96, hi: 0xaf},
+-	{value: 0x0043, lo: 0xb0, hi: 0xbf},
+-	// Block 0x79, offset 0x7a
+-	{value: 0x0003, lo: 0x0f},
+-	{value: 0x01b8, lo: 0x80, hi: 0x80},
+-	{value: 0x04d1, lo: 0x81, hi: 0x81},
+-	{value: 0x01bb, lo: 0x82, hi: 0x9a},
+-	{value: 0x04cd, lo: 0x9b, hi: 0x9b},
+-	{value: 0x01c7, lo: 0x9c, hi: 0x9c},
+-	{value: 0x01d0, lo: 0x9d, hi: 0x9d},
+-	{value: 0x01d6, lo: 0x9e, hi: 0x9e},
+-	{value: 0x01fa, lo: 0x9f, hi: 0x9f},
+-	{value: 0x01eb, lo: 0xa0, hi: 0xa0},
+-	{value: 0x01e8, lo: 0xa1, hi: 0xa1},
+-	{value: 0x0173, lo: 0xa2, hi: 0xb2},
+-	{value: 0x0188, lo: 0xb3, hi: 0xb3},
+-	{value: 0x01a6, lo: 0xb4, hi: 0xba},
+-	{value: 0x04d1, lo: 0xbb, hi: 0xbb},
+-	{value: 0x01bb, lo: 0xbc, hi: 0xbf},
+-	// Block 0x7a, offset 0x7b
+-	{value: 0x0003, lo: 0x0d},
+-	{value: 0x01c7, lo: 0x80, hi: 0x94},
+-	{value: 0x04cd, lo: 0x95, hi: 0x95},
+-	{value: 0x01c7, lo: 0x96, hi: 0x96},
+-	{value: 0x01d0, lo: 0x97, hi: 0x97},
+-	{value: 0x01d6, lo: 0x98, hi: 0x98},
+-	{value: 0x01fa, lo: 0x99, hi: 0x99},
+-	{value: 0x01eb, lo: 0x9a, hi: 0x9a},
+-	{value: 0x01e8, lo: 0x9b, hi: 0x9b},
+-	{value: 0x0173, lo: 0x9c, hi: 0xac},
+-	{value: 0x0188, lo: 0xad, hi: 0xad},
+-	{value: 0x01a6, lo: 0xae, hi: 0xb4},
+-	{value: 0x04d1, lo: 0xb5, hi: 0xb5},
+-	{value: 0x01bb, lo: 0xb6, hi: 0xbf},
+-	// Block 0x7b, offset 0x7c
+-	{value: 0x0003, lo: 0x0d},
+-	{value: 0x01d9, lo: 0x80, hi: 0x8e},
+-	{value: 0x04cd, lo: 0x8f, hi: 0x8f},
+-	{value: 0x01c7, lo: 0x90, hi: 0x90},
+-	{value: 0x01d0, lo: 0x91, hi: 0x91},
+-	{value: 0x01d6, lo: 0x92, hi: 0x92},
+-	{value: 0x01fa, lo: 0x93, hi: 0x93},
+-	{value: 0x01eb, lo: 0x94, hi: 0x94},
+-	{value: 0x01e8, lo: 0x95, hi: 0x95},
+-	{value: 0x0173, lo: 0x96, hi: 0xa6},
+-	{value: 0x0188, lo: 0xa7, hi: 0xa7},
+-	{value: 0x01a6, lo: 0xa8, hi: 0xae},
+-	{value: 0x04d1, lo: 0xaf, hi: 0xaf},
+-	{value: 0x01bb, lo: 0xb0, hi: 0xbf},
+-	// Block 0x7c, offset 0x7d
+-	{value: 0x0003, lo: 0x0d},
+-	{value: 0x01eb, lo: 0x80, hi: 0x88},
+-	{value: 0x04cd, lo: 0x89, hi: 0x89},
+-	{value: 0x01c7, lo: 0x8a, hi: 0x8a},
+-	{value: 0x01d0, lo: 0x8b, hi: 0x8b},
+-	{value: 0x01d6, lo: 0x8c, hi: 0x8c},
+-	{value: 0x01fa, lo: 0x8d, hi: 0x8d},
+-	{value: 0x01eb, lo: 0x8e, hi: 0x8e},
+-	{value: 0x01e8, lo: 0x8f, hi: 0x8f},
+-	{value: 0x0173, lo: 0x90, hi: 0xa0},
+-	{value: 0x0188, lo: 0xa1, hi: 0xa1},
+-	{value: 0x01a6, lo: 0xa2, hi: 0xa8},
+-	{value: 0x04d1, lo: 0xa9, hi: 0xa9},
+-	{value: 0x01bb, lo: 0xaa, hi: 0xbf},
+-	// Block 0x7d, offset 0x7e
+-	{value: 0x0002, lo: 0x09},
+-	{value: 0x0063, lo: 0x80, hi: 0x89},
+-	{value: 0x1a93, lo: 0x8a, hi: 0x8a},
+-	{value: 0x1ac3, lo: 0x8b, hi: 0x8b},
+-	{value: 0x1ade, lo: 0x8c, hi: 0x8c},
+-	{value: 0x1ae4, lo: 0x8d, hi: 0x8d},
+-	{value: 0x1d02, lo: 0x8e, hi: 0x8e},
+-	{value: 0x1af0, lo: 0x8f, hi: 0x8f},
+-	{value: 0x1abd, lo: 0xaa, hi: 0xaa},
+-	{value: 0x1ac0, lo: 0xab, hi: 0xab},
+-	// Block 0x7e, offset 0x7f
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x1a81, lo: 0x90, hi: 0x90},
+-	// Block 0x7f, offset 0x80
+-	{value: 0x0028, lo: 0x09},
+-	{value: 0x2a0d, lo: 0x80, hi: 0x80},
+-	{value: 0x29d1, lo: 0x81, hi: 0x81},
+-	{value: 0x29db, lo: 0x82, hi: 0x82},
+-	{value: 0x29ef, lo: 0x83, hi: 0x84},
+-	{value: 0x29f9, lo: 0x85, hi: 0x86},
+-	{value: 0x29e5, lo: 0x87, hi: 0x87},
+-	{value: 0x2a03, lo: 0x88, hi: 0x88},
+-	{value: 0x0be1, lo: 0x90, hi: 0x90},
+-	{value: 0x0959, lo: 0x91, hi: 0x91},
+-}
+-
+-// nfkcLookup: 1216 bytes
+-// Block 0 is the null block.
+-var nfkcLookup = [1216]uint8{
+-	// Block 0x0, offset 0x0
+-	// Block 0x1, offset 0x40
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x0c2: 0x58, 0x0c3: 0x01, 0x0c4: 0x02, 0x0c5: 0x03, 0x0c6: 0x59, 0x0c7: 0x04,
+-	0x0c8: 0x05, 0x0ca: 0x5a, 0x0cb: 0x5b, 0x0cc: 0x06, 0x0cd: 0x07, 0x0ce: 0x08, 0x0cf: 0x09,
+-	0x0d0: 0x0a, 0x0d1: 0x5c, 0x0d2: 0x5d, 0x0d3: 0x0b, 0x0d6: 0x0c, 0x0d7: 0x5e,
+-	0x0d8: 0x5f, 0x0d9: 0x0d, 0x0db: 0x60, 0x0dc: 0x61, 0x0dd: 0x62, 0x0df: 0x63,
+-	0x0e0: 0x02, 0x0e1: 0x03, 0x0e2: 0x04, 0x0e3: 0x05,
+-	0x0ea: 0x06, 0x0eb: 0x07, 0x0ec: 0x07, 0x0ed: 0x08, 0x0ef: 0x09,
+-	0x0f0: 0x10,
+-	// Block 0x4, offset 0x100
+-	0x120: 0x64, 0x121: 0x65, 0x123: 0x66, 0x124: 0x67, 0x125: 0x68, 0x126: 0x69, 0x127: 0x6a,
+-	0x128: 0x6b, 0x129: 0x6c, 0x12a: 0x6d, 0x12b: 0x6e, 0x12c: 0x69, 0x12d: 0x6f, 0x12e: 0x70, 0x12f: 0x71,
+-	0x131: 0x72, 0x132: 0x73, 0x133: 0x74, 0x134: 0x75, 0x135: 0x76, 0x137: 0x77,
+-	0x138: 0x78, 0x139: 0x79, 0x13a: 0x7a, 0x13b: 0x7b, 0x13c: 0x7c, 0x13d: 0x7d, 0x13e: 0x7e, 0x13f: 0x7f,
+-	// Block 0x5, offset 0x140
+-	0x140: 0x80, 0x142: 0x81, 0x143: 0x82, 0x144: 0x83, 0x145: 0x84, 0x146: 0x85, 0x147: 0x86,
+-	0x14d: 0x87,
+-	0x15c: 0x88, 0x15f: 0x89,
+-	0x162: 0x8a, 0x164: 0x8b,
+-	0x168: 0x8c, 0x169: 0x8d, 0x16c: 0x0e, 0x16d: 0x8e, 0x16e: 0x8f, 0x16f: 0x90,
+-	0x170: 0x91, 0x173: 0x92, 0x174: 0x93, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x94,
+-	0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18,
+-	// Block 0x6, offset 0x180
+-	0x180: 0x95, 0x181: 0x96, 0x182: 0x97, 0x183: 0x98, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x99, 0x187: 0x9a,
+-	0x188: 0x9b, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9c, 0x18c: 0x9d,
+-	0x191: 0x1d, 0x192: 0x1e, 0x193: 0x9e,
+-	0x1a8: 0x9f, 0x1a9: 0xa0, 0x1ab: 0xa1,
+-	0x1b1: 0xa2, 0x1b3: 0xa3, 0x1b5: 0xa4, 0x1b7: 0xa5,
+-	0x1ba: 0xa6, 0x1bb: 0xa7, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xa8,
+-	// Block 0x7, offset 0x1c0
+-	0x1c0: 0xa9, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xaa, 0x1c5: 0xab, 0x1c6: 0x25,
+-	0x1c8: 0x26, 0x1c9: 0x27, 0x1ca: 0x28, 0x1cb: 0x29, 0x1cc: 0x2a, 0x1cd: 0x2b, 0x1ce: 0x2c, 0x1cf: 0x2d,
+-	// Block 0x8, offset 0x200
+-	0x219: 0xac, 0x21a: 0xad, 0x21b: 0xae, 0x21d: 0xaf, 0x21f: 0xb0,
+-	0x220: 0xb1, 0x223: 0xb2, 0x224: 0xb3, 0x225: 0xb4, 0x226: 0xb5, 0x227: 0xb6,
+-	0x22a: 0xb7, 0x22b: 0xb8, 0x22f: 0xb9,
+-	0x230: 0xba, 0x231: 0xba, 0x232: 0xba, 0x233: 0xba, 0x234: 0xba, 0x235: 0xba, 0x236: 0xba, 0x237: 0xba,
+-	0x238: 0xba, 0x239: 0xba, 0x23a: 0xba, 0x23b: 0xba, 0x23c: 0xba, 0x23d: 0xba, 0x23e: 0xba, 0x23f: 0xba,
+-	// Block 0x9, offset 0x240
+-	0x240: 0xba, 0x241: 0xba, 0x242: 0xba, 0x243: 0xba, 0x244: 0xba, 0x245: 0xba, 0x246: 0xba, 0x247: 0xba,
+-	0x248: 0xba, 0x249: 0xba, 0x24a: 0xba, 0x24b: 0xba, 0x24c: 0xba, 0x24d: 0xba, 0x24e: 0xba, 0x24f: 0xba,
+-	0x250: 0xba, 0x251: 0xba, 0x252: 0xba, 0x253: 0xba, 0x254: 0xba, 0x255: 0xba, 0x256: 0xba, 0x257: 0xba,
+-	0x258: 0xba, 0x259: 0xba, 0x25a: 0xba, 0x25b: 0xba, 0x25c: 0xba, 0x25d: 0xba, 0x25e: 0xba, 0x25f: 0xba,
+-	0x260: 0xba, 0x261: 0xba, 0x262: 0xba, 0x263: 0xba, 0x264: 0xba, 0x265: 0xba, 0x266: 0xba, 0x267: 0xba,
+-	0x268: 0xba, 0x269: 0xba, 0x26a: 0xba, 0x26b: 0xba, 0x26c: 0xba, 0x26d: 0xba, 0x26e: 0xba, 0x26f: 0xba,
+-	0x270: 0xba, 0x271: 0xba, 0x272: 0xba, 0x273: 0xba, 0x274: 0xba, 0x275: 0xba, 0x276: 0xba, 0x277: 0xba,
+-	0x278: 0xba, 0x279: 0xba, 0x27a: 0xba, 0x27b: 0xba, 0x27c: 0xba, 0x27d: 0xba, 0x27e: 0xba, 0x27f: 0xba,
+-	// Block 0xa, offset 0x280
+-	0x280: 0xba, 0x281: 0xba, 0x282: 0xba, 0x283: 0xba, 0x284: 0xba, 0x285: 0xba, 0x286: 0xba, 0x287: 0xba,
+-	0x288: 0xba, 0x289: 0xba, 0x28a: 0xba, 0x28b: 0xba, 0x28c: 0xba, 0x28d: 0xba, 0x28e: 0xba, 0x28f: 0xba,
+-	0x290: 0xba, 0x291: 0xba, 0x292: 0xba, 0x293: 0xba, 0x294: 0xba, 0x295: 0xba, 0x296: 0xba, 0x297: 0xba,
+-	0x298: 0xba, 0x299: 0xba, 0x29a: 0xba, 0x29b: 0xba, 0x29c: 0xba, 0x29d: 0xba, 0x29e: 0xbb,
+-	// Block 0xb, offset 0x2c0
+-	0x2e4: 0x2e, 0x2e5: 0x2f, 0x2e6: 0x30, 0x2e7: 0x31,
+-	0x2e8: 0x32, 0x2e9: 0x33, 0x2ea: 0x34, 0x2eb: 0x35, 0x2ec: 0x36, 0x2ed: 0x37, 0x2ee: 0x38, 0x2ef: 0x39,
+-	0x2f0: 0x3a, 0x2f1: 0x3b, 0x2f2: 0x3c, 0x2f3: 0x3d, 0x2f4: 0x3e, 0x2f5: 0x3f, 0x2f6: 0x40, 0x2f7: 0x41,
+-	0x2f8: 0x42, 0x2f9: 0x43, 0x2fa: 0x44, 0x2fb: 0x45, 0x2fc: 0xbc, 0x2fd: 0x46, 0x2fe: 0x47, 0x2ff: 0xbd,
+-	// Block 0xc, offset 0x300
+-	0x307: 0xbe,
+-	0x328: 0xbf,
+-	// Block 0xd, offset 0x340
+-	0x341: 0xb1, 0x342: 0xc0, 0x344: 0xc1, 0x347: 0xb6,
+-	0x35a: 0xc2,
+-	// Block 0xe, offset 0x380
+-	0x385: 0xc3, 0x386: 0xc4, 0x387: 0xc5,
+-	0x389: 0xc6,
+-	0x390: 0xc7, 0x391: 0xc8, 0x392: 0xc9, 0x393: 0xca, 0x394: 0xcb, 0x395: 0xcc, 0x396: 0xcd, 0x397: 0xce,
+-	0x398: 0xcf, 0x399: 0xd0, 0x39a: 0x48, 0x39b: 0xd1, 0x39c: 0xd2, 0x39d: 0xd3, 0x39e: 0xd4, 0x39f: 0x49,
+-	// Block 0xf, offset 0x3c0
+-	0x3f8: 0x4a, 0x3f9: 0x4b, 0x3fa: 0x4c,
+-	// Block 0x10, offset 0x400
+-	0x404: 0x4d, 0x405: 0xd5, 0x406: 0xd6,
+-	0x408: 0x4e, 0x409: 0xd7,
+-	// Block 0x11, offset 0x440
+-	0x460: 0x4f, 0x461: 0x50, 0x462: 0x51, 0x463: 0x52, 0x464: 0x53, 0x465: 0x54, 0x466: 0x55, 0x467: 0x56,
+-	0x468: 0x57,
+-	// Block 0x12, offset 0x480
+-	0x490: 0x0a, 0x491: 0x0b,
+-	0x49d: 0x0c, 0x49e: 0x0d, 0x49f: 0x0e,
+-	0x4af: 0x0f,
+-}
+-
+-var nfkcTrie = trie{nfkcLookup[:], nfkcValues[:], nfkcSparseValues[:], nfkcSparseOffset[:], 88}
+-
+-// recompMap: 7464 bytes (entries only)
+-var recompMap = map[uint32]rune{
+-	0x00410300: 0x00C0,
+-	0x00410301: 0x00C1,
+-	0x00410302: 0x00C2,
+-	0x00410303: 0x00C3,
+-	0x00410308: 0x00C4,
+-	0x0041030A: 0x00C5,
+-	0x00430327: 0x00C7,
+-	0x00450300: 0x00C8,
+-	0x00450301: 0x00C9,
+-	0x00450302: 0x00CA,
+-	0x00450308: 0x00CB,
+-	0x00490300: 0x00CC,
+-	0x00490301: 0x00CD,
+-	0x00490302: 0x00CE,
+-	0x00490308: 0x00CF,
+-	0x004E0303: 0x00D1,
+-	0x004F0300: 0x00D2,
+-	0x004F0301: 0x00D3,
+-	0x004F0302: 0x00D4,
+-	0x004F0303: 0x00D5,
+-	0x004F0308: 0x00D6,
+-	0x00550300: 0x00D9,
+-	0x00550301: 0x00DA,
+-	0x00550302: 0x00DB,
+-	0x00550308: 0x00DC,
+-	0x00590301: 0x00DD,
+-	0x00610300: 0x00E0,
+-	0x00610301: 0x00E1,
+-	0x00610302: 0x00E2,
+-	0x00610303: 0x00E3,
+-	0x00610308: 0x00E4,
+-	0x0061030A: 0x00E5,
+-	0x00630327: 0x00E7,
+-	0x00650300: 0x00E8,
+-	0x00650301: 0x00E9,
+-	0x00650302: 0x00EA,
+-	0x00650308: 0x00EB,
+-	0x00690300: 0x00EC,
+-	0x00690301: 0x00ED,
+-	0x00690302: 0x00EE,
+-	0x00690308: 0x00EF,
+-	0x006E0303: 0x00F1,
+-	0x006F0300: 0x00F2,
+-	0x006F0301: 0x00F3,
+-	0x006F0302: 0x00F4,
+-	0x006F0303: 0x00F5,
+-	0x006F0308: 0x00F6,
+-	0x00750300: 0x00F9,
+-	0x00750301: 0x00FA,
+-	0x00750302: 0x00FB,
+-	0x00750308: 0x00FC,
+-	0x00790301: 0x00FD,
+-	0x00790308: 0x00FF,
+-	0x00410304: 0x0100,
+-	0x00610304: 0x0101,
+-	0x00410306: 0x0102,
+-	0x00610306: 0x0103,
+-	0x00410328: 0x0104,
+-	0x00610328: 0x0105,
+-	0x00430301: 0x0106,
+-	0x00630301: 0x0107,
+-	0x00430302: 0x0108,
+-	0x00630302: 0x0109,
+-	0x00430307: 0x010A,
+-	0x00630307: 0x010B,
+-	0x0043030C: 0x010C,
+-	0x0063030C: 0x010D,
+-	0x0044030C: 0x010E,
+-	0x0064030C: 0x010F,
+-	0x00450304: 0x0112,
+-	0x00650304: 0x0113,
+-	0x00450306: 0x0114,
+-	0x00650306: 0x0115,
+-	0x00450307: 0x0116,
+-	0x00650307: 0x0117,
+-	0x00450328: 0x0118,
+-	0x00650328: 0x0119,
+-	0x0045030C: 0x011A,
+-	0x0065030C: 0x011B,
+-	0x00470302: 0x011C,
+-	0x00670302: 0x011D,
+-	0x00470306: 0x011E,
+-	0x00670306: 0x011F,
+-	0x00470307: 0x0120,
+-	0x00670307: 0x0121,
+-	0x00470327: 0x0122,
+-	0x00670327: 0x0123,
+-	0x00480302: 0x0124,
+-	0x00680302: 0x0125,
+-	0x00490303: 0x0128,
+-	0x00690303: 0x0129,
+-	0x00490304: 0x012A,
+-	0x00690304: 0x012B,
+-	0x00490306: 0x012C,
+-	0x00690306: 0x012D,
+-	0x00490328: 0x012E,
+-	0x00690328: 0x012F,
+-	0x00490307: 0x0130,
+-	0x004A0302: 0x0134,
+-	0x006A0302: 0x0135,
+-	0x004B0327: 0x0136,
+-	0x006B0327: 0x0137,
+-	0x004C0301: 0x0139,
+-	0x006C0301: 0x013A,
+-	0x004C0327: 0x013B,
+-	0x006C0327: 0x013C,
+-	0x004C030C: 0x013D,
+-	0x006C030C: 0x013E,
+-	0x004E0301: 0x0143,
+-	0x006E0301: 0x0144,
+-	0x004E0327: 0x0145,
+-	0x006E0327: 0x0146,
+-	0x004E030C: 0x0147,
+-	0x006E030C: 0x0148,
+-	0x004F0304: 0x014C,
+-	0x006F0304: 0x014D,
+-	0x004F0306: 0x014E,
+-	0x006F0306: 0x014F,
+-	0x004F030B: 0x0150,
+-	0x006F030B: 0x0151,
+-	0x00520301: 0x0154,
+-	0x00720301: 0x0155,
+-	0x00520327: 0x0156,
+-	0x00720327: 0x0157,
+-	0x0052030C: 0x0158,
+-	0x0072030C: 0x0159,
+-	0x00530301: 0x015A,
+-	0x00730301: 0x015B,
+-	0x00530302: 0x015C,
+-	0x00730302: 0x015D,
+-	0x00530327: 0x015E,
+-	0x00730327: 0x015F,
+-	0x0053030C: 0x0160,
+-	0x0073030C: 0x0161,
+-	0x00540327: 0x0162,
+-	0x00740327: 0x0163,
+-	0x0054030C: 0x0164,
+-	0x0074030C: 0x0165,
+-	0x00550303: 0x0168,
+-	0x00750303: 0x0169,
+-	0x00550304: 0x016A,
+-	0x00750304: 0x016B,
+-	0x00550306: 0x016C,
+-	0x00750306: 0x016D,
+-	0x0055030A: 0x016E,
+-	0x0075030A: 0x016F,
+-	0x0055030B: 0x0170,
+-	0x0075030B: 0x0171,
+-	0x00550328: 0x0172,
+-	0x00750328: 0x0173,
+-	0x00570302: 0x0174,
+-	0x00770302: 0x0175,
+-	0x00590302: 0x0176,
+-	0x00790302: 0x0177,
+-	0x00590308: 0x0178,
+-	0x005A0301: 0x0179,
+-	0x007A0301: 0x017A,
+-	0x005A0307: 0x017B,
+-	0x007A0307: 0x017C,
+-	0x005A030C: 0x017D,
+-	0x007A030C: 0x017E,
+-	0x004F031B: 0x01A0,
+-	0x006F031B: 0x01A1,
+-	0x0055031B: 0x01AF,
+-	0x0075031B: 0x01B0,
+-	0x0041030C: 0x01CD,
+-	0x0061030C: 0x01CE,
+-	0x0049030C: 0x01CF,
+-	0x0069030C: 0x01D0,
+-	0x004F030C: 0x01D1,
+-	0x006F030C: 0x01D2,
+-	0x0055030C: 0x01D3,
+-	0x0075030C: 0x01D4,
+-	0x00DC0304: 0x01D5,
+-	0x00FC0304: 0x01D6,
+-	0x00DC0301: 0x01D7,
+-	0x00FC0301: 0x01D8,
+-	0x00DC030C: 0x01D9,
+-	0x00FC030C: 0x01DA,
+-	0x00DC0300: 0x01DB,
+-	0x00FC0300: 0x01DC,
+-	0x00C40304: 0x01DE,
+-	0x00E40304: 0x01DF,
+-	0x02260304: 0x01E0,
+-	0x02270304: 0x01E1,
+-	0x00C60304: 0x01E2,
+-	0x00E60304: 0x01E3,
+-	0x0047030C: 0x01E6,
+-	0x0067030C: 0x01E7,
+-	0x004B030C: 0x01E8,
+-	0x006B030C: 0x01E9,
+-	0x004F0328: 0x01EA,
+-	0x006F0328: 0x01EB,
+-	0x01EA0304: 0x01EC,
+-	0x01EB0304: 0x01ED,
+-	0x01B7030C: 0x01EE,
+-	0x0292030C: 0x01EF,
+-	0x006A030C: 0x01F0,
+-	0x00470301: 0x01F4,
+-	0x00670301: 0x01F5,
+-	0x004E0300: 0x01F8,
+-	0x006E0300: 0x01F9,
+-	0x00C50301: 0x01FA,
+-	0x00E50301: 0x01FB,
+-	0x00C60301: 0x01FC,
+-	0x00E60301: 0x01FD,
+-	0x00D80301: 0x01FE,
+-	0x00F80301: 0x01FF,
+-	0x0041030F: 0x0200,
+-	0x0061030F: 0x0201,
+-	0x00410311: 0x0202,
+-	0x00610311: 0x0203,
+-	0x0045030F: 0x0204,
+-	0x0065030F: 0x0205,
+-	0x00450311: 0x0206,
+-	0x00650311: 0x0207,
+-	0x0049030F: 0x0208,
+-	0x0069030F: 0x0209,
+-	0x00490311: 0x020A,
+-	0x00690311: 0x020B,
+-	0x004F030F: 0x020C,
+-	0x006F030F: 0x020D,
+-	0x004F0311: 0x020E,
+-	0x006F0311: 0x020F,
+-	0x0052030F: 0x0210,
+-	0x0072030F: 0x0211,
+-	0x00520311: 0x0212,
+-	0x00720311: 0x0213,
+-	0x0055030F: 0x0214,
+-	0x0075030F: 0x0215,
+-	0x00550311: 0x0216,
+-	0x00750311: 0x0217,
+-	0x00530326: 0x0218,
+-	0x00730326: 0x0219,
+-	0x00540326: 0x021A,
+-	0x00740326: 0x021B,
+-	0x0048030C: 0x021E,
+-	0x0068030C: 0x021F,
+-	0x00410307: 0x0226,
+-	0x00610307: 0x0227,
+-	0x00450327: 0x0228,
+-	0x00650327: 0x0229,
+-	0x00D60304: 0x022A,
+-	0x00F60304: 0x022B,
+-	0x00D50304: 0x022C,
+-	0x00F50304: 0x022D,
+-	0x004F0307: 0x022E,
+-	0x006F0307: 0x022F,
+-	0x022E0304: 0x0230,
+-	0x022F0304: 0x0231,
+-	0x00590304: 0x0232,
+-	0x00790304: 0x0233,
+-	0x00A80301: 0x0385,
+-	0x03910301: 0x0386,
+-	0x03950301: 0x0388,
+-	0x03970301: 0x0389,
+-	0x03990301: 0x038A,
+-	0x039F0301: 0x038C,
+-	0x03A50301: 0x038E,
+-	0x03A90301: 0x038F,
+-	0x03CA0301: 0x0390,
+-	0x03990308: 0x03AA,
+-	0x03A50308: 0x03AB,
+-	0x03B10301: 0x03AC,
+-	0x03B50301: 0x03AD,
+-	0x03B70301: 0x03AE,
+-	0x03B90301: 0x03AF,
+-	0x03CB0301: 0x03B0,
+-	0x03B90308: 0x03CA,
+-	0x03C50308: 0x03CB,
+-	0x03BF0301: 0x03CC,
+-	0x03C50301: 0x03CD,
+-	0x03C90301: 0x03CE,
+-	0x03D20301: 0x03D3,
+-	0x03D20308: 0x03D4,
+-	0x04150300: 0x0400,
+-	0x04150308: 0x0401,
+-	0x04130301: 0x0403,
+-	0x04060308: 0x0407,
+-	0x041A0301: 0x040C,
+-	0x04180300: 0x040D,
+-	0x04230306: 0x040E,
+-	0x04180306: 0x0419,
+-	0x04380306: 0x0439,
+-	0x04350300: 0x0450,
+-	0x04350308: 0x0451,
+-	0x04330301: 0x0453,
+-	0x04560308: 0x0457,
+-	0x043A0301: 0x045C,
+-	0x04380300: 0x045D,
+-	0x04430306: 0x045E,
+-	0x0474030F: 0x0476,
+-	0x0475030F: 0x0477,
+-	0x04160306: 0x04C1,
+-	0x04360306: 0x04C2,
+-	0x04100306: 0x04D0,
+-	0x04300306: 0x04D1,
+-	0x04100308: 0x04D2,
+-	0x04300308: 0x04D3,
+-	0x04150306: 0x04D6,
+-	0x04350306: 0x04D7,
+-	0x04D80308: 0x04DA,
+-	0x04D90308: 0x04DB,
+-	0x04160308: 0x04DC,
+-	0x04360308: 0x04DD,
+-	0x04170308: 0x04DE,
+-	0x04370308: 0x04DF,
+-	0x04180304: 0x04E2,
+-	0x04380304: 0x04E3,
+-	0x04180308: 0x04E4,
+-	0x04380308: 0x04E5,
+-	0x041E0308: 0x04E6,
+-	0x043E0308: 0x04E7,
+-	0x04E80308: 0x04EA,
+-	0x04E90308: 0x04EB,
+-	0x042D0308: 0x04EC,
+-	0x044D0308: 0x04ED,
+-	0x04230304: 0x04EE,
+-	0x04430304: 0x04EF,
+-	0x04230308: 0x04F0,
+-	0x04430308: 0x04F1,
+-	0x0423030B: 0x04F2,
+-	0x0443030B: 0x04F3,
+-	0x04270308: 0x04F4,
+-	0x04470308: 0x04F5,
+-	0x042B0308: 0x04F8,
+-	0x044B0308: 0x04F9,
+-	0x06270653: 0x0622,
+-	0x06270654: 0x0623,
+-	0x06480654: 0x0624,
+-	0x06270655: 0x0625,
+-	0x064A0654: 0x0626,
+-	0x06D50654: 0x06C0,
+-	0x06C10654: 0x06C2,
+-	0x06D20654: 0x06D3,
+-	0x0928093C: 0x0929,
+-	0x0930093C: 0x0931,
+-	0x0933093C: 0x0934,
+-	0x09C709BE: 0x09CB,
+-	0x09C709D7: 0x09CC,
+-	0x0B470B56: 0x0B48,
+-	0x0B470B3E: 0x0B4B,
+-	0x0B470B57: 0x0B4C,
+-	0x0B920BD7: 0x0B94,
+-	0x0BC60BBE: 0x0BCA,
+-	0x0BC70BBE: 0x0BCB,
+-	0x0BC60BD7: 0x0BCC,
+-	0x0C460C56: 0x0C48,
+-	0x0CBF0CD5: 0x0CC0,
+-	0x0CC60CD5: 0x0CC7,
+-	0x0CC60CD6: 0x0CC8,
+-	0x0CC60CC2: 0x0CCA,
+-	0x0CCA0CD5: 0x0CCB,
+-	0x0D460D3E: 0x0D4A,
+-	0x0D470D3E: 0x0D4B,
+-	0x0D460D57: 0x0D4C,
+-	0x0DD90DCA: 0x0DDA,
+-	0x0DD90DCF: 0x0DDC,
+-	0x0DDC0DCA: 0x0DDD,
+-	0x0DD90DDF: 0x0DDE,
+-	0x1025102E: 0x1026,
+-	0x1B051B35: 0x1B06,
+-	0x1B071B35: 0x1B08,
+-	0x1B091B35: 0x1B0A,
+-	0x1B0B1B35: 0x1B0C,
+-	0x1B0D1B35: 0x1B0E,
+-	0x1B111B35: 0x1B12,
+-	0x1B3A1B35: 0x1B3B,
+-	0x1B3C1B35: 0x1B3D,
+-	0x1B3E1B35: 0x1B40,
+-	0x1B3F1B35: 0x1B41,
+-	0x1B421B35: 0x1B43,
+-	0x00410325: 0x1E00,
+-	0x00610325: 0x1E01,
+-	0x00420307: 0x1E02,
+-	0x00620307: 0x1E03,
+-	0x00420323: 0x1E04,
+-	0x00620323: 0x1E05,
+-	0x00420331: 0x1E06,
+-	0x00620331: 0x1E07,
+-	0x00C70301: 0x1E08,
+-	0x00E70301: 0x1E09,
+-	0x00440307: 0x1E0A,
+-	0x00640307: 0x1E0B,
+-	0x00440323: 0x1E0C,
+-	0x00640323: 0x1E0D,
+-	0x00440331: 0x1E0E,
+-	0x00640331: 0x1E0F,
+-	0x00440327: 0x1E10,
+-	0x00640327: 0x1E11,
+-	0x0044032D: 0x1E12,
+-	0x0064032D: 0x1E13,
+-	0x01120300: 0x1E14,
+-	0x01130300: 0x1E15,
+-	0x01120301: 0x1E16,
+-	0x01130301: 0x1E17,
+-	0x0045032D: 0x1E18,
+-	0x0065032D: 0x1E19,
+-	0x00450330: 0x1E1A,
+-	0x00650330: 0x1E1B,
+-	0x02280306: 0x1E1C,
+-	0x02290306: 0x1E1D,
+-	0x00460307: 0x1E1E,
+-	0x00660307: 0x1E1F,
+-	0x00470304: 0x1E20,
+-	0x00670304: 0x1E21,
+-	0x00480307: 0x1E22,
+-	0x00680307: 0x1E23,
+-	0x00480323: 0x1E24,
+-	0x00680323: 0x1E25,
+-	0x00480308: 0x1E26,
+-	0x00680308: 0x1E27,
+-	0x00480327: 0x1E28,
+-	0x00680327: 0x1E29,
+-	0x0048032E: 0x1E2A,
+-	0x0068032E: 0x1E2B,
+-	0x00490330: 0x1E2C,
+-	0x00690330: 0x1E2D,
+-	0x00CF0301: 0x1E2E,
+-	0x00EF0301: 0x1E2F,
+-	0x004B0301: 0x1E30,
+-	0x006B0301: 0x1E31,
+-	0x004B0323: 0x1E32,
+-	0x006B0323: 0x1E33,
+-	0x004B0331: 0x1E34,
+-	0x006B0331: 0x1E35,
+-	0x004C0323: 0x1E36,
+-	0x006C0323: 0x1E37,
+-	0x1E360304: 0x1E38,
+-	0x1E370304: 0x1E39,
+-	0x004C0331: 0x1E3A,
+-	0x006C0331: 0x1E3B,
+-	0x004C032D: 0x1E3C,
+-	0x006C032D: 0x1E3D,
+-	0x004D0301: 0x1E3E,
+-	0x006D0301: 0x1E3F,
+-	0x004D0307: 0x1E40,
+-	0x006D0307: 0x1E41,
+-	0x004D0323: 0x1E42,
+-	0x006D0323: 0x1E43,
+-	0x004E0307: 0x1E44,
+-	0x006E0307: 0x1E45,
+-	0x004E0323: 0x1E46,
+-	0x006E0323: 0x1E47,
+-	0x004E0331: 0x1E48,
+-	0x006E0331: 0x1E49,
+-	0x004E032D: 0x1E4A,
+-	0x006E032D: 0x1E4B,
+-	0x00D50301: 0x1E4C,
+-	0x00F50301: 0x1E4D,
+-	0x00D50308: 0x1E4E,
+-	0x00F50308: 0x1E4F,
+-	0x014C0300: 0x1E50,
+-	0x014D0300: 0x1E51,
+-	0x014C0301: 0x1E52,
+-	0x014D0301: 0x1E53,
+-	0x00500301: 0x1E54,
+-	0x00700301: 0x1E55,
+-	0x00500307: 0x1E56,
+-	0x00700307: 0x1E57,
+-	0x00520307: 0x1E58,
+-	0x00720307: 0x1E59,
+-	0x00520323: 0x1E5A,
+-	0x00720323: 0x1E5B,
+-	0x1E5A0304: 0x1E5C,
+-	0x1E5B0304: 0x1E5D,
+-	0x00520331: 0x1E5E,
+-	0x00720331: 0x1E5F,
+-	0x00530307: 0x1E60,
+-	0x00730307: 0x1E61,
+-	0x00530323: 0x1E62,
+-	0x00730323: 0x1E63,
+-	0x015A0307: 0x1E64,
+-	0x015B0307: 0x1E65,
+-	0x01600307: 0x1E66,
+-	0x01610307: 0x1E67,
+-	0x1E620307: 0x1E68,
+-	0x1E630307: 0x1E69,
+-	0x00540307: 0x1E6A,
+-	0x00740307: 0x1E6B,
+-	0x00540323: 0x1E6C,
+-	0x00740323: 0x1E6D,
+-	0x00540331: 0x1E6E,
+-	0x00740331: 0x1E6F,
+-	0x0054032D: 0x1E70,
+-	0x0074032D: 0x1E71,
+-	0x00550324: 0x1E72,
+-	0x00750324: 0x1E73,
+-	0x00550330: 0x1E74,
+-	0x00750330: 0x1E75,
+-	0x0055032D: 0x1E76,
+-	0x0075032D: 0x1E77,
+-	0x01680301: 0x1E78,
+-	0x01690301: 0x1E79,
+-	0x016A0308: 0x1E7A,
+-	0x016B0308: 0x1E7B,
+-	0x00560303: 0x1E7C,
+-	0x00760303: 0x1E7D,
+-	0x00560323: 0x1E7E,
+-	0x00760323: 0x1E7F,
+-	0x00570300: 0x1E80,
+-	0x00770300: 0x1E81,
+-	0x00570301: 0x1E82,
+-	0x00770301: 0x1E83,
+-	0x00570308: 0x1E84,
+-	0x00770308: 0x1E85,
+-	0x00570307: 0x1E86,
+-	0x00770307: 0x1E87,
+-	0x00570323: 0x1E88,
+-	0x00770323: 0x1E89,
+-	0x00580307: 0x1E8A,
+-	0x00780307: 0x1E8B,
+-	0x00580308: 0x1E8C,
+-	0x00780308: 0x1E8D,
+-	0x00590307: 0x1E8E,
+-	0x00790307: 0x1E8F,
+-	0x005A0302: 0x1E90,
+-	0x007A0302: 0x1E91,
+-	0x005A0323: 0x1E92,
+-	0x007A0323: 0x1E93,
+-	0x005A0331: 0x1E94,
+-	0x007A0331: 0x1E95,
+-	0x00680331: 0x1E96,
+-	0x00740308: 0x1E97,
+-	0x0077030A: 0x1E98,
+-	0x0079030A: 0x1E99,
+-	0x017F0307: 0x1E9B,
+-	0x00410323: 0x1EA0,
+-	0x00610323: 0x1EA1,
+-	0x00410309: 0x1EA2,
+-	0x00610309: 0x1EA3,
+-	0x00C20301: 0x1EA4,
+-	0x00E20301: 0x1EA5,
+-	0x00C20300: 0x1EA6,
+-	0x00E20300: 0x1EA7,
+-	0x00C20309: 0x1EA8,
+-	0x00E20309: 0x1EA9,
+-	0x00C20303: 0x1EAA,
+-	0x00E20303: 0x1EAB,
+-	0x1EA00302: 0x1EAC,
+-	0x1EA10302: 0x1EAD,
+-	0x01020301: 0x1EAE,
+-	0x01030301: 0x1EAF,
+-	0x01020300: 0x1EB0,
+-	0x01030300: 0x1EB1,
+-	0x01020309: 0x1EB2,
+-	0x01030309: 0x1EB3,
+-	0x01020303: 0x1EB4,
+-	0x01030303: 0x1EB5,
+-	0x1EA00306: 0x1EB6,
+-	0x1EA10306: 0x1EB7,
+-	0x00450323: 0x1EB8,
+-	0x00650323: 0x1EB9,
+-	0x00450309: 0x1EBA,
+-	0x00650309: 0x1EBB,
+-	0x00450303: 0x1EBC,
+-	0x00650303: 0x1EBD,
+-	0x00CA0301: 0x1EBE,
+-	0x00EA0301: 0x1EBF,
+-	0x00CA0300: 0x1EC0,
+-	0x00EA0300: 0x1EC1,
+-	0x00CA0309: 0x1EC2,
+-	0x00EA0309: 0x1EC3,
+-	0x00CA0303: 0x1EC4,
+-	0x00EA0303: 0x1EC5,
+-	0x1EB80302: 0x1EC6,
+-	0x1EB90302: 0x1EC7,
+-	0x00490309: 0x1EC8,
+-	0x00690309: 0x1EC9,
+-	0x00490323: 0x1ECA,
+-	0x00690323: 0x1ECB,
+-	0x004F0323: 0x1ECC,
+-	0x006F0323: 0x1ECD,
+-	0x004F0309: 0x1ECE,
+-	0x006F0309: 0x1ECF,
+-	0x00D40301: 0x1ED0,
+-	0x00F40301: 0x1ED1,
+-	0x00D40300: 0x1ED2,
+-	0x00F40300: 0x1ED3,
+-	0x00D40309: 0x1ED4,
+-	0x00F40309: 0x1ED5,
+-	0x00D40303: 0x1ED6,
+-	0x00F40303: 0x1ED7,
+-	0x1ECC0302: 0x1ED8,
+-	0x1ECD0302: 0x1ED9,
+-	0x01A00301: 0x1EDA,
+-	0x01A10301: 0x1EDB,
+-	0x01A00300: 0x1EDC,
+-	0x01A10300: 0x1EDD,
+-	0x01A00309: 0x1EDE,
+-	0x01A10309: 0x1EDF,
+-	0x01A00303: 0x1EE0,
+-	0x01A10303: 0x1EE1,
+-	0x01A00323: 0x1EE2,
+-	0x01A10323: 0x1EE3,
+-	0x00550323: 0x1EE4,
+-	0x00750323: 0x1EE5,
+-	0x00550309: 0x1EE6,
+-	0x00750309: 0x1EE7,
+-	0x01AF0301: 0x1EE8,
+-	0x01B00301: 0x1EE9,
+-	0x01AF0300: 0x1EEA,
+-	0x01B00300: 0x1EEB,
+-	0x01AF0309: 0x1EEC,
+-	0x01B00309: 0x1EED,
+-	0x01AF0303: 0x1EEE,
+-	0x01B00303: 0x1EEF,
+-	0x01AF0323: 0x1EF0,
+-	0x01B00323: 0x1EF1,
+-	0x00590300: 0x1EF2,
+-	0x00790300: 0x1EF3,
+-	0x00590323: 0x1EF4,
+-	0x00790323: 0x1EF5,
+-	0x00590309: 0x1EF6,
+-	0x00790309: 0x1EF7,
+-	0x00590303: 0x1EF8,
+-	0x00790303: 0x1EF9,
+-	0x03B10313: 0x1F00,
+-	0x03B10314: 0x1F01,
+-	0x1F000300: 0x1F02,
+-	0x1F010300: 0x1F03,
+-	0x1F000301: 0x1F04,
+-	0x1F010301: 0x1F05,
+-	0x1F000342: 0x1F06,
+-	0x1F010342: 0x1F07,
+-	0x03910313: 0x1F08,
+-	0x03910314: 0x1F09,
+-	0x1F080300: 0x1F0A,
+-	0x1F090300: 0x1F0B,
+-	0x1F080301: 0x1F0C,
+-	0x1F090301: 0x1F0D,
+-	0x1F080342: 0x1F0E,
+-	0x1F090342: 0x1F0F,
+-	0x03B50313: 0x1F10,
+-	0x03B50314: 0x1F11,
+-	0x1F100300: 0x1F12,
+-	0x1F110300: 0x1F13,
+-	0x1F100301: 0x1F14,
+-	0x1F110301: 0x1F15,
+-	0x03950313: 0x1F18,
+-	0x03950314: 0x1F19,
+-	0x1F180300: 0x1F1A,
+-	0x1F190300: 0x1F1B,
+-	0x1F180301: 0x1F1C,
+-	0x1F190301: 0x1F1D,
+-	0x03B70313: 0x1F20,
+-	0x03B70314: 0x1F21,
+-	0x1F200300: 0x1F22,
+-	0x1F210300: 0x1F23,
+-	0x1F200301: 0x1F24,
+-	0x1F210301: 0x1F25,
+-	0x1F200342: 0x1F26,
+-	0x1F210342: 0x1F27,
+-	0x03970313: 0x1F28,
+-	0x03970314: 0x1F29,
+-	0x1F280300: 0x1F2A,
+-	0x1F290300: 0x1F2B,
+-	0x1F280301: 0x1F2C,
+-	0x1F290301: 0x1F2D,
+-	0x1F280342: 0x1F2E,
+-	0x1F290342: 0x1F2F,
+-	0x03B90313: 0x1F30,
+-	0x03B90314: 0x1F31,
+-	0x1F300300: 0x1F32,
+-	0x1F310300: 0x1F33,
+-	0x1F300301: 0x1F34,
+-	0x1F310301: 0x1F35,
+-	0x1F300342: 0x1F36,
+-	0x1F310342: 0x1F37,
+-	0x03990313: 0x1F38,
+-	0x03990314: 0x1F39,
+-	0x1F380300: 0x1F3A,
+-	0x1F390300: 0x1F3B,
+-	0x1F380301: 0x1F3C,
+-	0x1F390301: 0x1F3D,
+-	0x1F380342: 0x1F3E,
+-	0x1F390342: 0x1F3F,
+-	0x03BF0313: 0x1F40,
+-	0x03BF0314: 0x1F41,
+-	0x1F400300: 0x1F42,
+-	0x1F410300: 0x1F43,
+-	0x1F400301: 0x1F44,
+-	0x1F410301: 0x1F45,
+-	0x039F0313: 0x1F48,
+-	0x039F0314: 0x1F49,
+-	0x1F480300: 0x1F4A,
+-	0x1F490300: 0x1F4B,
+-	0x1F480301: 0x1F4C,
+-	0x1F490301: 0x1F4D,
+-	0x03C50313: 0x1F50,
+-	0x03C50314: 0x1F51,
+-	0x1F500300: 0x1F52,
+-	0x1F510300: 0x1F53,
+-	0x1F500301: 0x1F54,
+-	0x1F510301: 0x1F55,
+-	0x1F500342: 0x1F56,
+-	0x1F510342: 0x1F57,
+-	0x03A50314: 0x1F59,
+-	0x1F590300: 0x1F5B,
+-	0x1F590301: 0x1F5D,
+-	0x1F590342: 0x1F5F,
+-	0x03C90313: 0x1F60,
+-	0x03C90314: 0x1F61,
+-	0x1F600300: 0x1F62,
+-	0x1F610300: 0x1F63,
+-	0x1F600301: 0x1F64,
+-	0x1F610301: 0x1F65,
+-	0x1F600342: 0x1F66,
+-	0x1F610342: 0x1F67,
+-	0x03A90313: 0x1F68,
+-	0x03A90314: 0x1F69,
+-	0x1F680300: 0x1F6A,
+-	0x1F690300: 0x1F6B,
+-	0x1F680301: 0x1F6C,
+-	0x1F690301: 0x1F6D,
+-	0x1F680342: 0x1F6E,
+-	0x1F690342: 0x1F6F,
+-	0x03B10300: 0x1F70,
+-	0x03B50300: 0x1F72,
+-	0x03B70300: 0x1F74,
+-	0x03B90300: 0x1F76,
+-	0x03BF0300: 0x1F78,
+-	0x03C50300: 0x1F7A,
+-	0x03C90300: 0x1F7C,
+-	0x1F000345: 0x1F80,
+-	0x1F010345: 0x1F81,
+-	0x1F020345: 0x1F82,
+-	0x1F030345: 0x1F83,
+-	0x1F040345: 0x1F84,
+-	0x1F050345: 0x1F85,
+-	0x1F060345: 0x1F86,
+-	0x1F070345: 0x1F87,
+-	0x1F080345: 0x1F88,
+-	0x1F090345: 0x1F89,
+-	0x1F0A0345: 0x1F8A,
+-	0x1F0B0345: 0x1F8B,
+-	0x1F0C0345: 0x1F8C,
+-	0x1F0D0345: 0x1F8D,
+-	0x1F0E0345: 0x1F8E,
+-	0x1F0F0345: 0x1F8F,
+-	0x1F200345: 0x1F90,
+-	0x1F210345: 0x1F91,
+-	0x1F220345: 0x1F92,
+-	0x1F230345: 0x1F93,
+-	0x1F240345: 0x1F94,
+-	0x1F250345: 0x1F95,
+-	0x1F260345: 0x1F96,
+-	0x1F270345: 0x1F97,
+-	0x1F280345: 0x1F98,
+-	0x1F290345: 0x1F99,
+-	0x1F2A0345: 0x1F9A,
+-	0x1F2B0345: 0x1F9B,
+-	0x1F2C0345: 0x1F9C,
+-	0x1F2D0345: 0x1F9D,
+-	0x1F2E0345: 0x1F9E,
+-	0x1F2F0345: 0x1F9F,
+-	0x1F600345: 0x1FA0,
+-	0x1F610345: 0x1FA1,
+-	0x1F620345: 0x1FA2,
+-	0x1F630345: 0x1FA3,
+-	0x1F640345: 0x1FA4,
+-	0x1F650345: 0x1FA5,
+-	0x1F660345: 0x1FA6,
+-	0x1F670345: 0x1FA7,
+-	0x1F680345: 0x1FA8,
+-	0x1F690345: 0x1FA9,
+-	0x1F6A0345: 0x1FAA,
+-	0x1F6B0345: 0x1FAB,
+-	0x1F6C0345: 0x1FAC,
+-	0x1F6D0345: 0x1FAD,
+-	0x1F6E0345: 0x1FAE,
+-	0x1F6F0345: 0x1FAF,
+-	0x03B10306: 0x1FB0,
+-	0x03B10304: 0x1FB1,
+-	0x1F700345: 0x1FB2,
+-	0x03B10345: 0x1FB3,
+-	0x03AC0345: 0x1FB4,
+-	0x03B10342: 0x1FB6,
+-	0x1FB60345: 0x1FB7,
+-	0x03910306: 0x1FB8,
+-	0x03910304: 0x1FB9,
+-	0x03910300: 0x1FBA,
+-	0x03910345: 0x1FBC,
+-	0x00A80342: 0x1FC1,
+-	0x1F740345: 0x1FC2,
+-	0x03B70345: 0x1FC3,
+-	0x03AE0345: 0x1FC4,
+-	0x03B70342: 0x1FC6,
+-	0x1FC60345: 0x1FC7,
+-	0x03950300: 0x1FC8,
+-	0x03970300: 0x1FCA,
+-	0x03970345: 0x1FCC,
+-	0x1FBF0300: 0x1FCD,
+-	0x1FBF0301: 0x1FCE,
+-	0x1FBF0342: 0x1FCF,
+-	0x03B90306: 0x1FD0,
+-	0x03B90304: 0x1FD1,
+-	0x03CA0300: 0x1FD2,
+-	0x03B90342: 0x1FD6,
+-	0x03CA0342: 0x1FD7,
+-	0x03990306: 0x1FD8,
+-	0x03990304: 0x1FD9,
+-	0x03990300: 0x1FDA,
+-	0x1FFE0300: 0x1FDD,
+-	0x1FFE0301: 0x1FDE,
+-	0x1FFE0342: 0x1FDF,
+-	0x03C50306: 0x1FE0,
+-	0x03C50304: 0x1FE1,
+-	0x03CB0300: 0x1FE2,
+-	0x03C10313: 0x1FE4,
+-	0x03C10314: 0x1FE5,
+-	0x03C50342: 0x1FE6,
+-	0x03CB0342: 0x1FE7,
+-	0x03A50306: 0x1FE8,
+-	0x03A50304: 0x1FE9,
+-	0x03A50300: 0x1FEA,
+-	0x03A10314: 0x1FEC,
+-	0x00A80300: 0x1FED,
+-	0x1F7C0345: 0x1FF2,
+-	0x03C90345: 0x1FF3,
+-	0x03CE0345: 0x1FF4,
+-	0x03C90342: 0x1FF6,
+-	0x1FF60345: 0x1FF7,
+-	0x039F0300: 0x1FF8,
+-	0x03A90300: 0x1FFA,
+-	0x03A90345: 0x1FFC,
+-	0x21900338: 0x219A,
+-	0x21920338: 0x219B,
+-	0x21940338: 0x21AE,
+-	0x21D00338: 0x21CD,
+-	0x21D40338: 0x21CE,
+-	0x21D20338: 0x21CF,
+-	0x22030338: 0x2204,
+-	0x22080338: 0x2209,
+-	0x220B0338: 0x220C,
+-	0x22230338: 0x2224,
+-	0x22250338: 0x2226,
+-	0x223C0338: 0x2241,
+-	0x22430338: 0x2244,
+-	0x22450338: 0x2247,
+-	0x22480338: 0x2249,
+-	0x003D0338: 0x2260,
+-	0x22610338: 0x2262,
+-	0x224D0338: 0x226D,
+-	0x003C0338: 0x226E,
+-	0x003E0338: 0x226F,
+-	0x22640338: 0x2270,
+-	0x22650338: 0x2271,
+-	0x22720338: 0x2274,
+-	0x22730338: 0x2275,
+-	0x22760338: 0x2278,
+-	0x22770338: 0x2279,
+-	0x227A0338: 0x2280,
+-	0x227B0338: 0x2281,
+-	0x22820338: 0x2284,
+-	0x22830338: 0x2285,
+-	0x22860338: 0x2288,
+-	0x22870338: 0x2289,
+-	0x22A20338: 0x22AC,
+-	0x22A80338: 0x22AD,
+-	0x22A90338: 0x22AE,
+-	0x22AB0338: 0x22AF,
+-	0x227C0338: 0x22E0,
+-	0x227D0338: 0x22E1,
+-	0x22910338: 0x22E2,
+-	0x22920338: 0x22E3,
+-	0x22B20338: 0x22EA,
+-	0x22B30338: 0x22EB,
+-	0x22B40338: 0x22EC,
+-	0x22B50338: 0x22ED,
+-	0x304B3099: 0x304C,
+-	0x304D3099: 0x304E,
+-	0x304F3099: 0x3050,
+-	0x30513099: 0x3052,
+-	0x30533099: 0x3054,
+-	0x30553099: 0x3056,
+-	0x30573099: 0x3058,
+-	0x30593099: 0x305A,
+-	0x305B3099: 0x305C,
+-	0x305D3099: 0x305E,
+-	0x305F3099: 0x3060,
+-	0x30613099: 0x3062,
+-	0x30643099: 0x3065,
+-	0x30663099: 0x3067,
+-	0x30683099: 0x3069,
+-	0x306F3099: 0x3070,
+-	0x306F309A: 0x3071,
+-	0x30723099: 0x3073,
+-	0x3072309A: 0x3074,
+-	0x30753099: 0x3076,
+-	0x3075309A: 0x3077,
+-	0x30783099: 0x3079,
+-	0x3078309A: 0x307A,
+-	0x307B3099: 0x307C,
+-	0x307B309A: 0x307D,
+-	0x30463099: 0x3094,
+-	0x309D3099: 0x309E,
+-	0x30AB3099: 0x30AC,
+-	0x30AD3099: 0x30AE,
+-	0x30AF3099: 0x30B0,
+-	0x30B13099: 0x30B2,
+-	0x30B33099: 0x30B4,
+-	0x30B53099: 0x30B6,
+-	0x30B73099: 0x30B8,
+-	0x30B93099: 0x30BA,
+-	0x30BB3099: 0x30BC,
+-	0x30BD3099: 0x30BE,
+-	0x30BF3099: 0x30C0,
+-	0x30C13099: 0x30C2,
+-	0x30C43099: 0x30C5,
+-	0x30C63099: 0x30C7,
+-	0x30C83099: 0x30C9,
+-	0x30CF3099: 0x30D0,
+-	0x30CF309A: 0x30D1,
+-	0x30D23099: 0x30D3,
+-	0x30D2309A: 0x30D4,
+-	0x30D53099: 0x30D6,
+-	0x30D5309A: 0x30D7,
+-	0x30D83099: 0x30D9,
+-	0x30D8309A: 0x30DA,
+-	0x30DB3099: 0x30DC,
+-	0x30DB309A: 0x30DD,
+-	0x30A63099: 0x30F4,
+-	0x30EF3099: 0x30F7,
+-	0x30F03099: 0x30F8,
+-	0x30F13099: 0x30F9,
+-	0x30F23099: 0x30FA,
+-	0x30FD3099: 0x30FE,
+-	0x109910BA: 0x1109A,
+-	0x109B10BA: 0x1109C,
+-	0x10A510BA: 0x110AB,
+-	0x11311127: 0x1112E,
+-	0x11321127: 0x1112F,
+-}
+-
+-// Total size of tables: 50KB (51625 bytes)
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/triedata_test.go gcc-4.8.1/libgo/go/exp/norm/triedata_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/triedata_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/norm/triedata_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,85 +0,0 @@
+-// Generated by running
+-//	maketesttables
+-// DO NOT EDIT
+-
+-package norm
+-
+-var testRunes = []int32{1, 12, 127, 128, 256, 2047, 2048, 2457, 65535, 65536, 65793, 1114111, 512, 513, 514, 528, 533}
+-
+-// testdataValues: 192 entries, 384 bytes
+-// Block 2 is the null block.
+-var testdataValues = [192]uint16{
+-	// Block 0x0, offset 0x0
+-	0x000c: 0x0001,
+-	// Block 0x1, offset 0x40
+-	0x007f: 0x0002,
+-	// Block 0x2, offset 0x80
+-}
+-
+-// testdataSparseOffset: 10 entries, 20 bytes
+-var testdataSparseOffset = []uint16{0x0, 0x2, 0x4, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14}
+-
+-// testdataSparseValues: 22 entries, 88 bytes
+-var testdataSparseValues = [22]valueRange{
+-	// Block 0x0, offset 0x1
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0003, lo: 0x80, hi: 0x80},
+-	// Block 0x1, offset 0x2
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0004, lo: 0x80, hi: 0x80},
+-	// Block 0x2, offset 0x3
+-	{value: 0x0001, lo: 0x03},
+-	{value: 0x000c, lo: 0x80, hi: 0x82},
+-	{value: 0x000f, lo: 0x90, hi: 0x90},
+-	{value: 0x0010, lo: 0x95, hi: 0x95},
+-	// Block 0x3, offset 0x4
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0005, lo: 0xbf, hi: 0xbf},
+-	// Block 0x4, offset 0x5
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0006, lo: 0x80, hi: 0x80},
+-	// Block 0x5, offset 0x6
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0007, lo: 0x99, hi: 0x99},
+-	// Block 0x6, offset 0x7
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0008, lo: 0xbf, hi: 0xbf},
+-	// Block 0x7, offset 0x8
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x0009, lo: 0x80, hi: 0x80},
+-	// Block 0x8, offset 0x9
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x000a, lo: 0x81, hi: 0x81},
+-	// Block 0x9, offset 0xa
+-	{value: 0x0000, lo: 0x01},
+-	{value: 0x000b, lo: 0xbf, hi: 0xbf},
+-}
+-
+-// testdataLookup: 640 bytes
+-// Block 0 is the null block.
+-var testdataLookup = [640]uint8{
+-	// Block 0x0, offset 0x0
+-	// Block 0x1, offset 0x40
+-	// Block 0x2, offset 0x80
+-	// Block 0x3, offset 0xc0
+-	0x0c2: 0x01, 0x0c4: 0x02,
+-	0x0c8: 0x03,
+-	0x0df: 0x04,
+-	0x0e0: 0x02,
+-	0x0ef: 0x03,
+-	0x0f0: 0x05, 0x0f4: 0x07,
+-	// Block 0x4, offset 0x100
+-	0x120: 0x05, 0x126: 0x06,
+-	// Block 0x5, offset 0x140
+-	0x17f: 0x07,
+-	// Block 0x6, offset 0x180
+-	0x180: 0x08, 0x184: 0x09,
+-	// Block 0x7, offset 0x1c0
+-	0x1d0: 0x04,
+-	// Block 0x8, offset 0x200
+-	0x23f: 0x0a,
+-	// Block 0x9, offset 0x240
+-	0x24f: 0x06,
+-}
+-
+-var testdataTrie = trie{testdataLookup[:], testdataValues[:], testdataSparseValues[:], testdataSparseOffset[:], 1}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/triegen.go gcc-4.8.1/libgo/go/exp/norm/triegen.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/triegen.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/norm/triegen.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,317 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build ignore
+-
+-// Trie table generator.
+-// Used by make*tables tools to generate a go file with trie data structures
+-// for mapping UTF-8 to a 16-bit value. All but the last byte in a UTF-8 byte
+-// sequence are used to lookup offsets in the index table to be used for the
+-// next byte. The last byte is used to index into a table with 16-bit values.
+-
+-package main
+-
+-import (
+-	"fmt"
+-	"hash/crc32"
+-	"log"
+-	"unicode/utf8"
+-)
+-
+-const (
+-	blockSize        = 64
+-	blockOffset      = 2 // Subtract two blocks to compensate for the 0x80 added to continuation bytes.
+-	maxSparseEntries = 16
+-)
+-
+-// Intermediate trie structure
+-type trieNode struct {
+-	table [256]*trieNode
+-	value int
+-	b     byte
+-	leaf  bool
+-}
+-
+-func newNode() *trieNode {
+-	return new(trieNode)
+-}
+-
+-func (n trieNode) String() string {
+-	s := fmt.Sprint("trieNode{table: { non-nil at index: ")
+-	for i, v := range n.table {
+-		if v != nil {
+-			s += fmt.Sprintf("%d, ", i)
+-		}
+-	}
+-	s += fmt.Sprintf("}, value:%#x, b:%#x leaf:%v}", n.value, n.b, n.leaf)
+-	return s
+-}
+-
+-func (n trieNode) isInternal() bool {
+-	internal := true
+-	for i := 0; i < 256; i++ {
+-		if nn := n.table[i]; nn != nil {
+-			if !internal && !nn.leaf {
+-				log.Fatalf("triegen: isInternal: node contains both leaf and non-leaf children (%v)", n)
+-			}
+-			internal = internal && !nn.leaf
+-		}
+-	}
+-	return internal
+-}
+-
+-func (n trieNode) mostFrequentStride() int {
+-	counts := make(map[int]int)
+-	v := 0
+-	for _, t := range n.table[0x80 : 0x80+blockSize] {
+-		if t != nil {
+-			if stride := t.value - v; v != 0 && stride >= 0 {
+-				counts[stride]++
+-			}
+-			v = t.value
+-		} else {
+-			v = 0
+-		}
+-	}
+-	var maxs, maxc int
+-	for stride, cnt := range counts {
+-		if cnt > maxc || (cnt == maxc && stride < maxs) {
+-			maxs, maxc = stride, cnt
+-		}
+-	}
+-	return maxs
+-}
+-
+-func (n trieNode) countSparseEntries() int {
+-	stride := n.mostFrequentStride()
+-	var count, v int
+-	for _, t := range n.table[0x80 : 0x80+blockSize] {
+-		tv := 0
+-		if t != nil {
+-			tv = t.value
+-		}
+-		if tv-v != stride {
+-			if tv != 0 {
+-				count++
+-			}
+-		}
+-		v = tv
+-	}
+-	return count
+-}
+-
+-func (n *trieNode) insert(r rune, value uint16) {
+-	var p [utf8.UTFMax]byte
+-	sz := utf8.EncodeRune(p[:], r)
+-
+-	for i := 0; i < sz; i++ {
+-		if n.leaf {
+-			log.Fatalf("triegen: insert: node (%#v) should not be a leaf", n)
+-		}
+-		nn := n.table[p[i]]
+-		if nn == nil {
+-			nn = newNode()
+-			nn.b = p[i]
+-			n.table[p[i]] = nn
+-		}
+-		n = nn
+-	}
+-	n.value = int(value)
+-	n.leaf = true
+-}
+-
+-type nodeIndex struct {
+-	lookupBlocks []*trieNode
+-	valueBlocks  []*trieNode
+-	sparseBlocks []*trieNode
+-	sparseOffset []uint16
+-	sparseCount  int
+-
+-	lookupBlockIdx map[uint32]int
+-	valueBlockIdx  map[uint32]int
+-}
+-
+-func newIndex() *nodeIndex {
+-	index := &nodeIndex{}
+-	index.lookupBlocks = make([]*trieNode, 0)
+-	index.valueBlocks = make([]*trieNode, 0)
+-	index.sparseBlocks = make([]*trieNode, 0)
+-	index.sparseOffset = make([]uint16, 1)
+-	index.lookupBlockIdx = make(map[uint32]int)
+-	index.valueBlockIdx = make(map[uint32]int)
+-	return index
+-}
+-
+-func computeOffsets(index *nodeIndex, n *trieNode) int {
+-	if n.leaf {
+-		return n.value
+-	}
+-	hasher := crc32.New(crc32.MakeTable(crc32.IEEE))
+-	// We only index continuation bytes.
+-	for i := 0; i < blockSize; i++ {
+-		v := 0
+-		if nn := n.table[0x80+i]; nn != nil {
+-			v = computeOffsets(index, nn)
+-		}
+-		hasher.Write([]byte{uint8(v >> 8), uint8(v)})
+-	}
+-	h := hasher.Sum32()
+-	if n.isInternal() {
+-		v, ok := index.lookupBlockIdx[h]
+-		if !ok {
+-			v = len(index.lookupBlocks) - blockOffset
+-			index.lookupBlocks = append(index.lookupBlocks, n)
+-			index.lookupBlockIdx[h] = v
+-		}
+-		n.value = v
+-	} else {
+-		v, ok := index.valueBlockIdx[h]
+-		if !ok {
+-			if c := n.countSparseEntries(); c > maxSparseEntries {
+-				v = len(index.valueBlocks) - blockOffset
+-				index.valueBlocks = append(index.valueBlocks, n)
+-				index.valueBlockIdx[h] = v
+-			} else {
+-				v = -len(index.sparseOffset)
+-				index.sparseBlocks = append(index.sparseBlocks, n)
+-				index.sparseOffset = append(index.sparseOffset, uint16(index.sparseCount))
+-				index.sparseCount += c + 1
+-				index.valueBlockIdx[h] = v
+-			}
+-		}
+-		n.value = v
+-	}
+-	return n.value
+-}
+-
+-func printValueBlock(nr int, n *trieNode, offset int) {
+-	boff := nr * blockSize
+-	fmt.Printf("\n// Block %#x, offset %#x", nr, boff)
+-	var printnewline bool
+-	for i := 0; i < blockSize; i++ {
+-		if i%6 == 0 {
+-			printnewline = true
+-		}
+-		v := 0
+-		if nn := n.table[i+offset]; nn != nil {
+-			v = nn.value
+-		}
+-		if v != 0 {
+-			if printnewline {
+-				fmt.Printf("\n")
+-				printnewline = false
+-			}
+-			fmt.Printf("%#04x:%#04x, ", boff+i, v)
+-		}
+-	}
+-}
+-
+-func printSparseBlock(nr int, n *trieNode) {
+-	boff := -n.value
+-	fmt.Printf("\n// Block %#x, offset %#x", nr, boff)
+-	v := 0
+-	//stride := f(n)
+-	stride := n.mostFrequentStride()
+-	c := n.countSparseEntries()
+-	fmt.Printf("\n{value:%#04x,lo:%#02x},", stride, uint8(c))
+-	for i, nn := range n.table[0x80 : 0x80+blockSize] {
+-		nv := 0
+-		if nn != nil {
+-			nv = nn.value
+-		}
+-		if nv-v != stride {
+-			if v != 0 {
+-				fmt.Printf(",hi:%#02x},", 0x80+i-1)
+-			}
+-			if nv != 0 {
+-				fmt.Printf("\n{value:%#04x,lo:%#02x", nv, nn.b)
+-			}
+-		}
+-		v = nv
+-	}
+-	if v != 0 {
+-		fmt.Printf(",hi:%#02x},", 0x80+blockSize-1)
+-	}
+-}
+-
+-func printLookupBlock(nr int, n *trieNode, offset, cutoff int) {
+-	boff := nr * blockSize
+-	fmt.Printf("\n// Block %#x, offset %#x", nr, boff)
+-	var printnewline bool
+-	for i := 0; i < blockSize; i++ {
+-		if i%8 == 0 {
+-			printnewline = true
+-		}
+-		v := 0
+-		if nn := n.table[i+offset]; nn != nil {
+-			v = nn.value
+-		}
+-		if v != 0 {
+-			if v < 0 {
+-				v = -v - 1 + cutoff
+-			}
+-			if printnewline {
+-				fmt.Printf("\n")
+-				printnewline = false
+-			}
+-			fmt.Printf("%#03x:%#02x, ", boff+i, v)
+-		}
+-	}
+-}
+-
+-// printTables returns the size in bytes of the generated tables.
+-func (t *trieNode) printTables(name string) int {
+-	index := newIndex()
+-	// Values for 7-bit ASCII are stored in first two block, followed by nil block.
+-	index.valueBlocks = append(index.valueBlocks, nil, nil, nil)
+-	// First byte of multi-byte UTF-8 codepoints are indexed in 4th block.
+-	index.lookupBlocks = append(index.lookupBlocks, nil, nil, nil, nil)
+-	// Index starter bytes of multi-byte UTF-8.
+-	for i := 0xC0; i < 0x100; i++ {
+-		if t.table[i] != nil {
+-			computeOffsets(index, t.table[i])
+-		}
+-	}
+-
+-	nv := len(index.valueBlocks) * blockSize
+-	fmt.Printf("// %sValues: %d entries, %d bytes\n", name, nv, nv*2)
+-	fmt.Printf("// Block 2 is the null block.\n")
+-	fmt.Printf("var %sValues = [%d]uint16 {", name, nv)
+-	printValueBlock(0, t, 0)
+-	printValueBlock(1, t, 64)
+-	printValueBlock(2, newNode(), 0)
+-	for i := 3; i < len(index.valueBlocks); i++ {
+-		printValueBlock(i, index.valueBlocks[i], 0x80)
+-	}
+-	fmt.Print("\n}\n\n")
+-
+-	ls := len(index.sparseBlocks)
+-	fmt.Printf("// %sSparseOffset: %d entries, %d bytes\n", name, ls, ls*2)
+-	fmt.Printf("var %sSparseOffset = %#v\n\n", name, index.sparseOffset[1:])
+-
+-	ns := index.sparseCount
+-	fmt.Printf("// %sSparseValues: %d entries, %d bytes\n", name, ns, ns*4)
+-	fmt.Printf("var %sSparseValues = [%d]valueRange {", name, ns)
+-	for i, n := range index.sparseBlocks {
+-		printSparseBlock(i, n)
+-	}
+-	fmt.Print("\n}\n\n")
+-
+-	cutoff := len(index.valueBlocks) - blockOffset
+-	ni := len(index.lookupBlocks) * blockSize
+-	fmt.Printf("// %sLookup: %d bytes\n", name, ni)
+-	fmt.Printf("// Block 0 is the null block.\n")
+-	fmt.Printf("var %sLookup = [%d]uint8 {", name, ni)
+-	printLookupBlock(0, newNode(), 0, cutoff)
+-	printLookupBlock(1, newNode(), 0, cutoff)
+-	printLookupBlock(2, newNode(), 0, cutoff)
+-	printLookupBlock(3, t, 0xC0, cutoff)
+-	for i := 4; i < len(index.lookupBlocks); i++ {
+-		printLookupBlock(i, index.lookupBlocks[i], 0x80, cutoff)
+-	}
+-	fmt.Print("\n}\n\n")
+-	fmt.Printf("var %sTrie = trie{ %sLookup[:], %sValues[:], %sSparseValues[:], %sSparseOffset[:], %d}\n\n",
+-		name, name, name, name, name, cutoff)
+-	return nv*2 + ns*4 + ni + ls*2
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/trie.go gcc-4.8.1/libgo/go/exp/norm/trie.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/trie.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/norm/trie.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,232 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-type valueRange struct {
+-	value  uint16 // header: value:stride
+-	lo, hi byte   // header: lo:n
+-}
+-
+-type trie struct {
+-	index        []uint8
+-	values       []uint16
+-	sparse       []valueRange
+-	sparseOffset []uint16
+-	cutoff       uint8 // indices >= cutoff are sparse
+-}
+-
+-// lookupValue determines the type of block n and looks up the value for b.
+-// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block
+-// is a list of ranges with an accompanying value. Given a matching range r,
+-// the value for b is by r.value + (b - r.lo) * stride.
+-func (t *trie) lookupValue(n uint8, b byte) uint16 {
+-	if n < t.cutoff {
+-		return t.values[uint16(n)<<6+uint16(b)]
+-	}
+-	offset := t.sparseOffset[n-t.cutoff]
+-	header := t.sparse[offset]
+-	lo := offset + 1
+-	hi := lo + uint16(header.lo)
+-	for lo < hi {
+-		m := lo + (hi-lo)/2
+-		r := t.sparse[m]
+-		if r.lo <= b && b <= r.hi {
+-			return r.value + uint16(b-r.lo)*header.value
+-		}
+-		if b < r.lo {
+-			hi = m
+-		} else {
+-			lo = m + 1
+-		}
+-	}
+-	return 0
+-}
+-
+-const (
+-	t1 = 0x00 // 0000 0000
+-	tx = 0x80 // 1000 0000
+-	t2 = 0xC0 // 1100 0000
+-	t3 = 0xE0 // 1110 0000
+-	t4 = 0xF0 // 1111 0000
+-	t5 = 0xF8 // 1111 1000
+-	t6 = 0xFC // 1111 1100
+-	te = 0xFE // 1111 1110
+-)
+-
+-// lookup returns the trie value for the first UTF-8 encoding in s and
+-// the width in bytes of this encoding. The size will be 0 if s does not
+-// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+-func (t *trie) lookup(s []byte) (v uint16, sz int) {
+-	c0 := s[0]
+-	switch {
+-	case c0 < tx:
+-		return t.values[c0], 1
+-	case c0 < t2:
+-		return 0, 1
+-	case c0 < t3:
+-		if len(s) < 2 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		return t.lookupValue(i, c1), 2
+-	case c0 < t4:
+-		if len(s) < 3 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := uint16(i)<<6 + uint16(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		return t.lookupValue(i, c2), 3
+-	case c0 < t5:
+-		if len(s) < 4 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := uint16(i)<<6 + uint16(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		o = uint16(i)<<6 + uint16(c2)
+-		i = t.index[o]
+-		c3 := s[3]
+-		if c3 < tx || t2 <= c3 {
+-			return 0, 3
+-		}
+-		return t.lookupValue(i, c3), 4
+-	}
+-	// Illegal rune
+-	return 0, 1
+-}
+-
+-// lookupString returns the trie value for the first UTF-8 encoding in s and
+-// the width in bytes of this encoding. The size will be 0 if s does not
+-// hold enough bytes to complete the encoding. len(s) must be greater than 0.
+-func (t *trie) lookupString(s string) (v uint16, sz int) {
+-	c0 := s[0]
+-	switch {
+-	case c0 < tx:
+-		return t.values[c0], 1
+-	case c0 < t2:
+-		return 0, 1
+-	case c0 < t3:
+-		if len(s) < 2 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		return t.lookupValue(i, c1), 2
+-	case c0 < t4:
+-		if len(s) < 3 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := uint16(i)<<6 + uint16(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		return t.lookupValue(i, c2), 3
+-	case c0 < t5:
+-		if len(s) < 4 {
+-			return 0, 0
+-		}
+-		i := t.index[c0]
+-		c1 := s[1]
+-		if c1 < tx || t2 <= c1 {
+-			return 0, 1
+-		}
+-		o := uint16(i)<<6 + uint16(c1)
+-		i = t.index[o]
+-		c2 := s[2]
+-		if c2 < tx || t2 <= c2 {
+-			return 0, 2
+-		}
+-		o = uint16(i)<<6 + uint16(c2)
+-		i = t.index[o]
+-		c3 := s[3]
+-		if c3 < tx || t2 <= c3 {
+-			return 0, 3
+-		}
+-		return t.lookupValue(i, c3), 4
+-	}
+-	// Illegal rune
+-	return 0, 1
+-}
+-
+-// lookupUnsafe returns the trie value for the first UTF-8 encoding in s.
+-// s must hold a full encoding.
+-func (t *trie) lookupUnsafe(s []byte) uint16 {
+-	c0 := s[0]
+-	if c0 < tx {
+-		return t.values[c0]
+-	}
+-	if c0 < t2 {
+-		return 0
+-	}
+-	i := t.index[c0]
+-	if c0 < t3 {
+-		return t.lookupValue(i, s[1])
+-	}
+-	i = t.index[uint16(i)<<6+uint16(s[1])]
+-	if c0 < t4 {
+-		return t.lookupValue(i, s[2])
+-	}
+-	i = t.index[uint16(i)<<6+uint16(s[2])]
+-	if c0 < t5 {
+-		return t.lookupValue(i, s[3])
+-	}
+-	return 0
+-}
+-
+-// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s.
+-// s must hold a full encoding.
+-func (t *trie) lookupStringUnsafe(s string) uint16 {
+-	c0 := s[0]
+-	if c0 < tx {
+-		return t.values[c0]
+-	}
+-	if c0 < t2 {
+-		return 0
+-	}
+-	i := t.index[c0]
+-	if c0 < t3 {
+-		return t.lookupValue(i, s[1])
+-	}
+-	i = t.index[uint16(i)<<6+uint16(s[1])]
+-	if c0 < t4 {
+-		return t.lookupValue(i, s[2])
+-	}
+-	i = t.index[uint16(i)<<6+uint16(s[2])]
+-	if c0 < t5 {
+-		return t.lookupValue(i, s[3])
+-	}
+-	return 0
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/norm/trie_test.go gcc-4.8.1/libgo/go/exp/norm/trie_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/norm/trie_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/exp/norm/trie_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,152 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package norm
+-
+-import (
+-	"testing"
+-	"unicode/utf8"
+-)
+-
+-// Test data is located in triedata_test.go; generated by maketesttables.
+-var testdata = testdataTrie
+-
+-type rangeTest struct {
+-	block   uint8
+-	lookup  byte
+-	result  uint16
+-	table   []valueRange
+-	offsets []uint16
+-}
+-
+-var range1Off = []uint16{0, 2}
+-var range1 = []valueRange{
+-	{0, 1, 0},
+-	{1, 0x80, 0x80},
+-	{0, 2, 0},
+-	{1, 0x80, 0x80},
+-	{9, 0xff, 0xff},
+-}
+-
+-var rangeTests = []rangeTest{
+-	{10, 0x80, 1, range1, range1Off},
+-	{10, 0x00, 0, range1, range1Off},
+-	{11, 0x80, 1, range1, range1Off},
+-	{11, 0xff, 9, range1, range1Off},
+-	{11, 0x00, 0, range1, range1Off},
+-}
+-
+-func TestLookupSparse(t *testing.T) {
+-	for i, test := range rangeTests {
+-		n := trie{sparse: test.table, sparseOffset: test.offsets, cutoff: 10}
+-		v := n.lookupValue(test.block, test.lookup)
+-		if v != test.result {
+-			t.Errorf("LookupSparse:%d: found %X; want %X", i, v, test.result)
+-		}
+-	}
+-}
+-
+-// Test cases for illegal runes.
+-type trietest struct {
+-	size  int
+-	bytes []byte
+-}
+-
+-var tests = []trietest{
+-	// illegal runes
+-	{1, []byte{0x80}},
+-	{1, []byte{0xFF}},
+-	{1, []byte{t2, tx - 1}},
+-	{1, []byte{t2, t2}},
+-	{2, []byte{t3, tx, tx - 1}},
+-	{2, []byte{t3, tx, t2}},
+-	{1, []byte{t3, tx - 1, tx}},
+-	{3, []byte{t4, tx, tx, tx - 1}},
+-	{3, []byte{t4, tx, tx, t2}},
+-	{1, []byte{t4, t2, tx, tx - 1}},
+-	{2, []byte{t4, tx, t2, tx - 1}},
+-
+-	// short runes
+-	{0, []byte{t2}},
+-	{0, []byte{t3, tx}},
+-	{0, []byte{t4, tx, tx}},
+-
+-	// we only support UTF-8 up to utf8.UTFMax bytes (4 bytes)
+-	{1, []byte{t5, tx, tx, tx, tx}},
+-	{1, []byte{t6, tx, tx, tx, tx, tx}},
+-}
+-
+-func mkUTF8(r rune) ([]byte, int) {
+-	var b [utf8.UTFMax]byte
+-	sz := utf8.EncodeRune(b[:], r)
+-	return b[:sz], sz
+-}
+-
+-func TestLookup(t *testing.T) {
+-	for i, tt := range testRunes {
+-		b, szg := mkUTF8(tt)
+-		v, szt := testdata.lookup(b)
+-		if int(v) != i {
+-			t.Errorf("lookup(%U): found value %#x, expected %#x", tt, v, i)
+-		}
+-		if szt != szg {
+-			t.Errorf("lookup(%U): found size %d, expected %d", tt, szt, szg)
+-		}
+-	}
+-	for i, tt := range tests {
+-		v, sz := testdata.lookup(tt.bytes)
+-		if v != 0 {
+-			t.Errorf("lookup of illegal rune, case %d: found value %#x, expected 0", i, v)
+-		}
+-		if sz != tt.size {
+-			t.Errorf("lookup of illegal rune, case %d: found size %d, expected %d", i, sz, tt.size)
+-		}
+-	}
+-	// Verify defaults.
+-	if v, _ := testdata.lookup([]byte{0xC1, 0x8C}); v != 0 {
+-		t.Errorf("lookup of non-existing rune should be 0; found %X", v)
+-	}
+-}
+-
+-func TestLookupUnsafe(t *testing.T) {
+-	for i, tt := range testRunes {
+-		b, _ := mkUTF8(tt)
+-		v := testdata.lookupUnsafe(b)
+-		if int(v) != i {
+-			t.Errorf("lookupUnsafe(%U): found value %#x, expected %#x", i, v, i)
+-		}
+-	}
+-}
+-
+-func TestLookupString(t *testing.T) {
+-	for i, tt := range testRunes {
+-		b, szg := mkUTF8(tt)
+-		v, szt := testdata.lookupString(string(b))
+-		if int(v) != i {
+-			t.Errorf("lookup(%U): found value %#x, expected %#x", i, v, i)
+-		}
+-		if szt != szg {
+-			t.Errorf("lookup(%U): found size %d, expected %d", i, szt, szg)
+-		}
+-	}
+-	for i, tt := range tests {
+-		v, sz := testdata.lookupString(string(tt.bytes))
+-		if int(v) != 0 {
+-			t.Errorf("lookup of illegal rune, case %d: found value %#x, expected 0", i, v)
+-		}
+-		if sz != tt.size {
+-			t.Errorf("lookup of illegal rune, case %d: found size %d, expected %d", i, sz, tt.size)
+-		}
+-	}
+-}
+-
+-func TestLookupStringUnsafe(t *testing.T) {
+-	for i, tt := range testRunes {
+-		b, _ := mkUTF8(tt)
+-		v := testdata.lookupStringUnsafe(string(b))
+-		if int(v) != i {
+-			t.Errorf("lookupUnsafe(%U): found value %#x, expected %#x", i, v, i)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/blockopt.go gcc-4.8.1/libgo/go/exp/ssa/blockopt.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/blockopt.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/blockopt.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,186 +0,0 @@
+-package ssa
+-
+-// Simple block optimisations to simplify the control flow graph.
+-
+-// TODO(adonovan): instead of creating several "unreachable" blocks
+-// per function in the Builder, reuse a single one (e.g. at Blocks[1])
+-// to reduce garbage.
+-
+-import (
+-	"fmt"
+-	"os"
+-)
+-
+-// If true, perform sanity checking and show progress at each
+-// successive iteration of optimizeBlocks.  Very verbose.
+-const debugBlockOpt = false
+-
+-func hasPhi(b *BasicBlock) bool {
+-	_, ok := b.Instrs[0].(*Phi)
+-	return ok
+-}
+-
+-// prune attempts to prune block b if it is unreachable (i.e. has no
+-// predecessors other than itself), disconnecting it from the CFG.
+-// The result is true if the optimisation was applied.  i is the block
+-// index within the function.
+-//
+-func prune(f *Function, i int, b *BasicBlock) bool {
+-	if i == 0 {
+-		return false // don't prune entry block
+-	}
+-	if len(b.Preds) == 0 || len(b.Preds) == 1 && b.Preds[0] == b {
+-		// Disconnect it from its successors.
+-		for _, c := range b.Succs {
+-			c.removePred(b)
+-		}
+-		if debugBlockOpt {
+-			fmt.Fprintln(os.Stderr, "prune", b.Name)
+-		}
+-
+-		// Delete b.
+-		f.Blocks[i] = nil
+-		return true
+-	}
+-	return false
+-}
+-
+-// jumpThreading attempts to apply simple jump-threading to block b,
+-// in which a->b->c become a->c if b is just a Jump.
+-// The result is true if the optimisation was applied.
+-// i is the block index within the function.
+-//
+-func jumpThreading(f *Function, i int, b *BasicBlock) bool {
+-	if i == 0 {
+-		return false // don't apply to entry block
+-	}
+-	if b.Instrs == nil {
+-		fmt.Println("empty block ", b.Name)
+-		return false
+-	}
+-	if _, ok := b.Instrs[0].(*Jump); !ok {
+-		return false // not just a jump
+-	}
+-	c := b.Succs[0]
+-	if c == b {
+-		return false // don't apply to degenerate jump-to-self.
+-	}
+-	if hasPhi(c) {
+-		return false // not sound without more effort
+-	}
+-	for j, a := range b.Preds {
+-		a.replaceSucc(b, c)
+-
+-		// If a now has two edges to c, replace its degenerate If by Jump.
+-		if len(a.Succs) == 2 && a.Succs[0] == c && a.Succs[1] == c {
+-			jump := new(Jump)
+-			jump.SetBlock(a)
+-			a.Instrs[len(a.Instrs)-1] = jump
+-			a.Succs = a.Succs[:1]
+-			c.removePred(b)
+-		} else {
+-			if j == 0 {
+-				c.replacePred(b, a)
+-			} else {
+-				c.Preds = append(c.Preds, a)
+-			}
+-		}
+-
+-		if debugBlockOpt {
+-			fmt.Fprintln(os.Stderr, "jumpThreading", a.Name, b.Name, c.Name)
+-		}
+-	}
+-	f.Blocks[i] = nil
+-	return true
+-}
+-
+-// fuseBlocks attempts to apply the block fusion optimisation to block
+-// a, in which a->b becomes ab if len(a.Succs)==len(b.Preds)==1.
+-// The result is true if the optimisation was applied.
+-//
+-func fuseBlocks(f *Function, a *BasicBlock) bool {
+-	if len(a.Succs) != 1 {
+-		return false
+-	}
+-	b := a.Succs[0]
+-	if len(b.Preds) != 1 {
+-		return false
+-	}
+-	// Eliminate jump at end of A, then copy all of B across.
+-	a.Instrs = append(a.Instrs[:len(a.Instrs)-1], b.Instrs...)
+-	for _, instr := range b.Instrs {
+-		instr.SetBlock(a)
+-	}
+-
+-	// A inherits B's successors
+-	a.Succs = append(a.succs2[:0], b.Succs...)
+-
+-	// Fix up Preds links of all successors of B.
+-	for _, c := range b.Succs {
+-		c.replacePred(b, a)
+-	}
+-
+-	if debugBlockOpt {
+-		fmt.Fprintln(os.Stderr, "fuseBlocks", a.Name, b.Name)
+-	}
+-
+-	// Make b unreachable.  Subsequent pruning will reclaim it.
+-	b.Preds = nil
+-	return true
+-}
+-
+-// optimizeBlocks() performs some simple block optimizations on a
+-// completed function: dead block elimination, block fusion, jump
+-// threading.
+-//
+-func optimizeBlocks(f *Function) {
+-	// Loop until no further progress.
+-	changed := true
+-	for changed {
+-		changed = false
+-
+-		if debugBlockOpt {
+-			f.DumpTo(os.Stderr)
+-			MustSanityCheck(f, nil)
+-		}
+-
+-		for i, b := range f.Blocks {
+-			// f.Blocks will temporarily contain nils to indicate
+-			// deleted blocks; we remove them at the end.
+-			if b == nil {
+-				continue
+-			}
+-
+-			// Prune unreachable blocks (including all empty blocks).
+-			if prune(f, i, b) {
+-				changed = true
+-				continue // (b was pruned)
+-			}
+-
+-			// Fuse blocks.  b->c becomes bc.
+-			if fuseBlocks(f, b) {
+-				changed = true
+-			}
+-
+-			// a->b->c becomes a->c if b contains only a Jump.
+-			if jumpThreading(f, i, b) {
+-				changed = true
+-				continue // (b was disconnected)
+-			}
+-		}
+-	}
+-
+-	// Eliminate nils from Blocks.
+-	j := 0
+-	for _, b := range f.Blocks {
+-		if b != nil {
+-			f.Blocks[j] = b
+-			j++
+-		}
+-	}
+-	// Nil out b.Blocks[j:] to aid GC.
+-	for i := j; i < len(f.Blocks); i++ {
+-		f.Blocks[i] = nil
+-	}
+-	f.Blocks = f.Blocks[:j]
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/doc.go gcc-4.8.1/libgo/go/exp/ssa/doc.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/doc.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/doc.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,113 +0,0 @@
+-// Package ssa defines a representation of the elements of Go programs
+-// (packages, types, functions, variables and constants) using a
+-// static single-assignment (SSA) form intermediate representation
+-// (IR) for the the bodies of functions.
+-//
+-// THIS INTERFACE IS EXPERIMENTAL AND IS LIKELY TO CHANGE.
+-//
+-// For an introduction to SSA form, see
+-// http://en.wikipedia.org/wiki/Static_single_assignment_form.
+-// This page provides a broader reading list:
+-// http://www.dcs.gla.ac.uk/~jsinger/ssa.html.
+-//
+-// The level of abstraction of the SSA form is intentionally close to
+-// the source language to facilitate construction of source analysis
+-// tools.  It is not primarily intended for machine code generation.
+-//
+-// All looping, branching and switching constructs are replaced with
+-// unstructured control flow.  We may add higher-level control flow
+-// primitives in the future to facilitate constant-time dispatch of
+-// switch statements, for example.
+-//
+-// Builder encapsulates the tasks of type-checking (using go/types)
+-// abstract syntax trees (as defined by go/ast) for the source files
+-// comprising a Go program, and the conversion of each function from
+-// Go ASTs to the SSA representation.
+-//
+-// By supplying an instance of the SourceLocator function prototype,
+-// clients may control how the builder locates, loads and parses Go
+-// sources files for imported packages.  This package provides
+-// GorootLoader, which uses go/build to locate packages in the Go
+-// source distribution, and go/parser to parse them.
+-//
+-// The builder initially builds a naive SSA form in which all local
+-// variables are addresses of stack locations with explicit loads and
+-// stores.  If desired, registerisation and Ï-node insertion using
+-// dominance and dataflow can be performed as a later pass to improve
+-// the accuracy and performance of subsequent analyses; this pass is
+-// not yet implemented.
+-//
+-// The program representation constructed by this package is fully
+-// resolved internally, i.e. it does not rely on the names of Values,
+-// Packages, Functions, Types or BasicBlocks for the correct
+-// interpretation of the program.  Only the identities of objects and
+-// the topology of the SSA and type graphs are semantically
+-// significant.  (There is one exception: Ids, used to identify field
+-// and method names, contain strings.)  Avoidance of name-based
+-// operations simplifies the implementation of subsequent passes and
+-// can make them very efficient.  Many objects are nonetheless named
+-// to aid in debugging, but it is not essential that the names be
+-// either accurate or unambiguous.  The public API exposes a number of
+-// name-based maps for client convenience.
+-//
+-// Given a Go source package such as this:
+-//
+-//      package main
+-//
+-//      import "fmt"
+-//
+-//      const message = "Hello, World!"
+-//
+-//      func hello() {
+-//              fmt.Println(message)
+-//      }
+-//
+-// The SSA Builder creates a *Program containing a main *Package such
+-// as this:
+-//
+-//      Package(Name: "main")
+-//        Members:
+-//          "message":          *Literal (Type: untyped string, Value: "Hello, World!")
+-//          "initÂ·guard":       *Global (Type: *bool)
+-//          "hello":            *Function (Type: func())
+-//        Init:                 *Function (Type: func())
+-//
+-// The printed representation of the function main.hello is shown
+-// below.  Within the function listing, the name of each BasicBlock
+-// such as ".0.entry" is printed left-aligned, followed by the block's
+-// instructions, i.e. implementations of Instruction.
+-// For each instruction that defines an SSA virtual register
+-// (i.e. implements Value), the type of that value is shown in the
+-// right column.
+-//
+-//      # Name: main.hello
+-//      # Declared at hello.go:7:6
+-//      # Type: func()
+-//      func hello():
+-//      .0.entry:
+-//              t0 = new [1]interface{}                                                 *[1]interface{}
+-//              t1 = &t0[0:untyped integer]                                             *interface{}
+-//              t2 = make interface interface{} <- string ("Hello, World!":string)      interface{}
+-//              *t1 = t2
+-//              t3 = slice t0[:]                                                        []interface{}
+-//              t4 = fmt.Println(t3)                                                    (n int, err error)
+-//              ret
+-//
+-// TODO(adonovan): demonstrate more features in the example:
+-// parameters and control flow at the least.
+-//
+-// TODO(adonovan): Consider how token.Pos source location information
+-// should be made available generally.  Currently it is only present in
+-// Package, Function and CallCommon.
+-//
+-// TODO(adonovan): Provide an example skeleton application that loads
+-// and dumps the SSA form of a program.  Accommodate package-at-a-time
+-// vs. whole-program operation.
+-//
+-// TODO(adonovan): Consider the exceptional control-flow implications
+-// of defer and recover().
+-//
+-// TODO(adonovan): build tables/functions that relate source variables
+-// to SSA variables to assist user interfaces that make queries about
+-// specific source entities.
+-package ssa
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/func.go gcc-4.8.1/libgo/go/exp/ssa/func.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/func.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/func.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,428 +0,0 @@
+-package ssa
+-
+-// This file implements the Function and BasicBlock types.
+-
+-import (
+-	"fmt"
+-	"go/ast"
+-	"go/types"
+-	"io"
+-	"os"
+-)
+-
+-// Mode bits for additional diagnostics and checking.
+-// TODO(adonovan): move these to builder.go once submitted.
+-type BuilderMode uint
+-
+-const (
+-	LogPackages          BuilderMode = 1 << iota // Dump package inventory to stderr
+-	LogFunctions                                 // Dump function SSA code to stderr
+-	LogSource                                    // Show source locations as SSA builder progresses
+-	SanityCheckFunctions                         // Perform sanity checking of function bodies
+-	UseGCImporter                                // Ignore SourceLoader; use gc-compiled object code for all imports
+-)
+-
+-// addEdge adds a control-flow graph edge from from to to.
+-func addEdge(from, to *BasicBlock) {
+-	from.Succs = append(from.Succs, to)
+-	to.Preds = append(to.Preds, from)
+-}
+-
+-// emit appends an instruction to the current basic block.
+-// If the instruction defines a Value, it is returned.
+-//
+-func (b *BasicBlock) emit(i Instruction) Value {
+-	i.SetBlock(b)
+-	b.Instrs = append(b.Instrs, i)
+-	v, _ := i.(Value)
+-	return v
+-}
+-
+-// phis returns the prefix of b.Instrs containing all the block's Ï-nodes.
+-func (b *BasicBlock) phis() []Instruction {
+-	for i, instr := range b.Instrs {
+-		if _, ok := instr.(*Phi); !ok {
+-			return b.Instrs[:i]
+-		}
+-	}
+-	return nil // unreachable in well-formed blocks
+-}
+-
+-// replacePred replaces all occurrences of p in b's predecessor list with q.
+-// Ordinarily there should be at most one.
+-//
+-func (b *BasicBlock) replacePred(p, q *BasicBlock) {
+-	for i, pred := range b.Preds {
+-		if pred == p {
+-			b.Preds[i] = q
+-		}
+-	}
+-}
+-
+-// replaceSucc replaces all occurrences of p in b's successor list with q.
+-// Ordinarily there should be at most one.
+-//
+-func (b *BasicBlock) replaceSucc(p, q *BasicBlock) {
+-	for i, succ := range b.Succs {
+-		if succ == p {
+-			b.Succs[i] = q
+-		}
+-	}
+-}
+-
+-// removePred removes all occurrences of p in b's
+-// predecessor list and Ï-nodes.
+-// Ordinarily there should be at most one.
+-//
+-func (b *BasicBlock) removePred(p *BasicBlock) {
+-	phis := b.phis()
+-
+-	// We must preserve edge order for Ï-nodes.
+-	j := 0
+-	for i, pred := range b.Preds {
+-		if pred != p {
+-			b.Preds[j] = b.Preds[i]
+-			// Strike out Ï-edge too.
+-			for _, instr := range phis {
+-				phi := instr.(*Phi)
+-				phi.Edges[j] = phi.Edges[i]
+-			}
+-			j++
+-		}
+-	}
+-	// Nil out b.Preds[j:] and Ï-edges[j:] to aid GC.
+-	for i := j; i < len(b.Preds); i++ {
+-		b.Preds[i] = nil
+-		for _, instr := range phis {
+-			instr.(*Phi).Edges[i] = nil
+-		}
+-	}
+-	b.Preds = b.Preds[:j]
+-	for _, instr := range phis {
+-		phi := instr.(*Phi)
+-		phi.Edges = phi.Edges[:j]
+-	}
+-}
+-
+-// Destinations associated with unlabelled for/switch/select stmts.
+-// We push/pop one of these as we enter/leave each construct and for
+-// each BranchStmt we scan for the innermost target of the right type.
+-//
+-type targets struct {
+-	tail         *targets // rest of stack
+-	_break       *BasicBlock
+-	_continue    *BasicBlock
+-	_fallthrough *BasicBlock
+-}
+-
+-// Destinations associated with a labelled block.
+-// We populate these as labels are encountered in forward gotos or
+-// labelled statements.
+-//
+-type lblock struct {
+-	_goto     *BasicBlock
+-	_break    *BasicBlock
+-	_continue *BasicBlock
+-}
+-
+-// funcSyntax holds the syntax tree for the function declaration and body.
+-type funcSyntax struct {
+-	recvField    *ast.FieldList
+-	paramFields  *ast.FieldList
+-	resultFields *ast.FieldList
+-	body         *ast.BlockStmt
+-}
+-
+-// labelledBlock returns the branch target associated with the
+-// specified label, creating it if needed.
+-//
+-func (f *Function) labelledBlock(label *ast.Ident) *lblock {
+-	lb := f.lblocks[label.Obj]
+-	if lb == nil {
+-		lb = &lblock{_goto: f.newBasicBlock("label." + label.Name)}
+-		f.lblocks[label.Obj] = lb
+-	}
+-	return lb
+-}
+-
+-// addParam adds a (non-escaping) parameter to f.Params of the
+-// specified name and type.
+-//
+-func (f *Function) addParam(name string, typ types.Type) *Parameter {
+-	v := &Parameter{
+-		Name_: name,
+-		Type_: typ,
+-	}
+-	f.Params = append(f.Params, v)
+-	return v
+-}
+-
+-// addSpilledParam declares a parameter that is pre-spilled to the
+-// stack; the function body will load/store the spilled location.
+-// Subsequent registerization will eliminate spills where possible.
+-//
+-func (f *Function) addSpilledParam(obj types.Object) {
+-	name := obj.GetName()
+-	param := f.addParam(name, obj.GetType())
+-	spill := &Alloc{
+-		Name_: name + "~", // "~" means "spilled"
+-		Type_: pointer(obj.GetType()),
+-	}
+-	f.objects[obj] = spill
+-	f.Locals = append(f.Locals, spill)
+-	f.emit(spill)
+-	f.emit(&Store{Addr: spill, Val: param})
+-}
+-
+-// start initializes the function prior to generating SSA code for its body.
+-// Precondition: f.Type() already set.
+-//
+-// If f.syntax != nil, f is a Go source function and idents must be a
+-// mapping from syntactic identifiers to their canonical type objects;
+-// Otherwise, idents is ignored and the usual set-up for Go source
+-// functions is skipped.
+-//
+-func (f *Function) start(mode BuilderMode, idents map[*ast.Ident]types.Object) {
+-	if mode&LogSource != 0 {
+-		fmt.Fprintf(os.Stderr, "build function %s @ %s\n", f.FullName(), f.Prog.Files.Position(f.Pos))
+-	}
+-	f.currentBlock = f.newBasicBlock("entry")
+-	f.objects = make(map[types.Object]Value) // needed for some synthetics, e.g. init
+-	if f.syntax == nil {
+-		return // synthetic function; no syntax tree
+-	}
+-	f.lblocks = make(map[*ast.Object]*lblock)
+-
+-	// Receiver (at most one inner iteration).
+-	if f.syntax.recvField != nil {
+-		for _, field := range f.syntax.recvField.List {
+-			for _, n := range field.Names {
+-				f.addSpilledParam(idents[n])
+-			}
+-			if field.Names == nil {
+-				f.addParam(f.Signature.Recv.Name, f.Signature.Recv.Type)
+-			}
+-		}
+-	}
+-
+-	// Parameters.
+-	if f.syntax.paramFields != nil {
+-		for _, field := range f.syntax.paramFields.List {
+-			for _, n := range field.Names {
+-				f.addSpilledParam(idents[n])
+-			}
+-		}
+-	}
+-
+-	// Results.
+-	if f.syntax.resultFields != nil {
+-		for _, field := range f.syntax.resultFields.List {
+-			// Implicit "var" decl of locals for named results.
+-			for _, n := range field.Names {
+-				f.results = append(f.results, f.addNamedLocal(idents[n]))
+-			}
+-		}
+-	}
+-}
+-
+-// finish() finalizes the function after SSA code generation of its body.
+-func (f *Function) finish(mode BuilderMode) {
+-	f.objects = nil
+-	f.results = nil
+-	f.currentBlock = nil
+-	f.lblocks = nil
+-	f.syntax = nil
+-
+-	// Remove any f.Locals that are now heap-allocated.
+-	j := 0
+-	for _, l := range f.Locals {
+-		if !l.Heap {
+-			f.Locals[j] = l
+-			j++
+-		}
+-	}
+-	// Nil out f.Locals[j:] to aid GC.
+-	for i := j; i < len(f.Locals); i++ {
+-		f.Locals[i] = nil
+-	}
+-	f.Locals = f.Locals[:j]
+-
+-	// Ensure all value-defining Instructions have register names.
+-	// (Non-Instruction Values are named at construction.)
+-	tmp := 0
+-	for _, b := range f.Blocks {
+-		for _, instr := range b.Instrs {
+-			switch instr := instr.(type) {
+-			case *Alloc:
+-				// Local Allocs may already be named.
+-				if instr.Name_ == "" {
+-					instr.Name_ = fmt.Sprintf("t%d", tmp)
+-					tmp++
+-				}
+-			case Value:
+-				instr.(interface {
+-					setNum(int)
+-				}).setNum(tmp)
+-				tmp++
+-			}
+-		}
+-	}
+-	optimizeBlocks(f)
+-
+-	if mode&LogFunctions != 0 {
+-		f.DumpTo(os.Stderr)
+-	}
+-	if mode&SanityCheckFunctions != 0 {
+-		MustSanityCheck(f, nil)
+-	}
+-	if mode&LogSource != 0 {
+-		fmt.Fprintf(os.Stderr, "build function %s done\n", f.FullName())
+-	}
+-}
+-
+-// addNamedLocal creates a local variable, adds it to function f and
+-// returns it.  Its name and type are taken from obj.  Subsequent
+-// calls to f.lookup(obj) will return the same local.
+-//
+-// Precondition: f.syntax != nil (i.e. a Go source function).
+-//
+-func (f *Function) addNamedLocal(obj types.Object) *Alloc {
+-	l := f.addLocal(obj.GetType())
+-	l.Name_ = obj.GetName()
+-	f.objects[obj] = l
+-	return l
+-}
+-
+-// addLocal creates an anonymous local variable of type typ, adds it
+-// to function f and returns it.
+-//
+-func (f *Function) addLocal(typ types.Type) *Alloc {
+-	v := &Alloc{Type_: pointer(typ)}
+-	f.Locals = append(f.Locals, v)
+-	f.emit(v)
+-	return v
+-}
+-
+-// lookup returns the address of the named variable identified by obj
+-// that is local to function f or one of its enclosing functions.
+-// If escaping, the reference comes from a potentially escaping pointer
+-// expression and the referent must be heap-allocated.
+-//
+-func (f *Function) lookup(obj types.Object, escaping bool) Value {
+-	if v, ok := f.objects[obj]; ok {
+-		if escaping {
+-			// Walk up the chain of Captures.
+-			x := v
+-			for {
+-				if c, ok := x.(*Capture); ok {
+-					x = c.Outer
+-				} else {
+-					break
+-				}
+-			}
+-			// By construction, all captures are ultimately Allocs in the
+-			// naive SSA form.  Parameters are pre-spilled to the stack.
+-			x.(*Alloc).Heap = true
+-		}
+-		return v // function-local var (address)
+-	}
+-
+-	// Definition must be in an enclosing function;
+-	// plumb it through intervening closures.
+-	if f.Enclosing == nil {
+-		panic("no Value for type.Object " + obj.GetName())
+-	}
+-	v := &Capture{f.Enclosing.lookup(obj, true)} // escaping
+-	f.objects[obj] = v
+-	f.FreeVars = append(f.FreeVars, v)
+-	return v
+-}
+-
+-// emit emits the specified instruction to function f, updating the
+-// control-flow graph if required.
+-//
+-func (f *Function) emit(instr Instruction) Value {
+-	return f.currentBlock.emit(instr)
+-}
+-
+-// DumpTo prints to w a human readable "disassembly" of the SSA code of
+-// all basic blocks of function f.
+-//
+-func (f *Function) DumpTo(w io.Writer) {
+-	fmt.Fprintf(w, "# Name: %s\n", f.FullName())
+-	fmt.Fprintf(w, "# Declared at %s\n", f.Prog.Files.Position(f.Pos))
+-	fmt.Fprintf(w, "# Type: %s\n", f.Signature)
+-
+-	if f.Enclosing != nil {
+-		fmt.Fprintf(w, "# Parent: %s\n", f.Enclosing.Name())
+-	}
+-
+-	if f.FreeVars != nil {
+-		io.WriteString(w, "# Free variables:\n")
+-		for i, fv := range f.FreeVars {
+-			fmt.Fprintf(w, "# % 3d:\t%s %s\n", i, fv.Name(), fv.Type())
+-		}
+-	}
+-
+-	params := f.Params
+-	if f.Signature.Recv != nil {
+-		fmt.Fprintf(w, "func (%s) %s(", params[0].Name(), f.Name())
+-		params = params[1:]
+-	} else {
+-		fmt.Fprintf(w, "func %s(", f.Name())
+-	}
+-	for i, v := range params {
+-		if i > 0 {
+-			io.WriteString(w, ", ")
+-		}
+-		io.WriteString(w, v.Name())
+-	}
+-	io.WriteString(w, "):\n")
+-
+-	for _, b := range f.Blocks {
+-		if b == nil {
+-			// Corrupt CFG.
+-			fmt.Fprintf(w, ".nil:\n")
+-			continue
+-		}
+-		fmt.Fprintf(w, ".%s:\t\t\t\t\t\t\t       P:%d S:%d\n", b.Name, len(b.Preds), len(b.Succs))
+-		if false { // CFG debugging
+-			fmt.Fprintf(w, "\t# CFG: %s --> %s --> %s\n", blockNames(b.Preds), b.Name, blockNames(b.Succs))
+-		}
+-		for _, instr := range b.Instrs {
+-			io.WriteString(w, "\t")
+-			if v, ok := instr.(Value); ok {
+-				l := 80 // for old time's sake.
+-				// Left-align the instruction.
+-				if name := v.Name(); name != "" {
+-					n, _ := fmt.Fprintf(w, "%s = ", name)
+-					l -= n
+-				}
+-				n, _ := io.WriteString(w, instr.String())
+-				l -= n
+-				// Right-align the type.
+-				if t := v.Type(); t != nil {
+-					fmt.Fprintf(w, "%*s", l-9, t)
+-				}
+-			} else {
+-				io.WriteString(w, instr.String())
+-			}
+-			io.WriteString(w, "\n")
+-		}
+-	}
+-	fmt.Fprintf(w, "\n")
+-}
+-
+-// newBasicBlock adds to f a new basic block with a unique name and
+-// returns it.  It does not automatically become the current block for
+-// subsequent calls to emit.
+-//
+-func (f *Function) newBasicBlock(name string) *BasicBlock {
+-	b := &BasicBlock{
+-		Name: fmt.Sprintf("%d.%s", len(f.Blocks), name),
+-		Func: f,
+-	}
+-	b.Succs = b.succs2[:0]
+-	f.Blocks = append(f.Blocks, b)
+-	return b
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/literal.go gcc-4.8.1/libgo/go/exp/ssa/literal.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/literal.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/literal.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,137 +0,0 @@
+-package ssa
+-
+-// This file defines the Literal SSA value type.
+-
+-import (
+-	"fmt"
+-	"go/types"
+-	"math/big"
+-	"strconv"
+-)
+-
+-// newLiteral returns a new literal of the specified value and type.
+-// val must be valid according to the specification of Literal.Value.
+-//
+-func newLiteral(val interface{}, typ types.Type) *Literal {
+-	// This constructor exists to provide a single place to
+-	// insert logging/assertions during debugging.
+-	return &Literal{typ, val}
+-}
+-
+-// intLiteral returns an untyped integer literal that evaluates to i.
+-func intLiteral(i int64) *Literal {
+-	return newLiteral(i, types.Typ[types.UntypedInt])
+-}
+-
+-// nilLiteral returns a nil literal of the specified (reference) type.
+-func nilLiteral(typ types.Type) *Literal {
+-	return newLiteral(types.NilType{}, typ)
+-}
+-
+-func (l *Literal) Name() string {
+-	var s string
+-	switch x := l.Value.(type) {
+-	case bool:
+-		s = fmt.Sprintf("%v", l.Value)
+-	case int64:
+-		s = fmt.Sprintf("%d", l.Value)
+-	case *big.Int:
+-		s = x.String()
+-	case *big.Rat:
+-		s = x.FloatString(20)
+-	case string:
+-		if len(x) > 20 {
+-			x = x[:17] + "..." // abbreviate
+-		}
+-		s = strconv.Quote(x)
+-	case types.Complex:
+-		r := x.Re.FloatString(20)
+-		i := x.Im.FloatString(20)
+-		s = fmt.Sprintf("%s+%si", r, i)
+-	case types.NilType:
+-		s = "nil"
+-	default:
+-		panic(fmt.Sprintf("unexpected literal value: %T", x))
+-	}
+-	return s + ":" + l.Type_.String()
+-}
+-
+-func (l *Literal) Type() types.Type {
+-	return l.Type_
+-}
+-
+-// IsNil returns true if this literal represents a typed or untyped nil value.
+-func (l *Literal) IsNil() bool {
+-	_, ok := l.Value.(types.NilType)
+-	return ok
+-}
+-
+-// Int64 returns the numeric value of this literal truncated to fit
+-// a signed 64-bit integer.
+-//
+-func (l *Literal) Int64() int64 {
+-	switch x := l.Value.(type) {
+-	case int64:
+-		return x
+-	case *big.Int:
+-		return x.Int64()
+-	case *big.Rat:
+-		// TODO(adonovan): fix: is this the right rounding mode?
+-		var q big.Int
+-		return q.Quo(x.Num(), x.Denom()).Int64()
+-	}
+-	panic(fmt.Sprintf("unexpected literal value: %T", l.Value))
+-}
+-
+-// Uint64 returns the numeric value of this literal truncated to fit
+-// an unsigned 64-bit integer.
+-//
+-func (l *Literal) Uint64() uint64 {
+-	switch x := l.Value.(type) {
+-	case int64:
+-		if x < 0 {
+-			return 0
+-		}
+-		return uint64(x)
+-	case *big.Int:
+-		return x.Uint64()
+-	case *big.Rat:
+-		// TODO(adonovan): fix: is this right?
+-		var q big.Int
+-		return q.Quo(x.Num(), x.Denom()).Uint64()
+-	}
+-	panic(fmt.Sprintf("unexpected literal value: %T", l.Value))
+-}
+-
+-// Float64 returns the numeric value of this literal truncated to fit
+-// a float64.
+-//
+-func (l *Literal) Float64() float64 {
+-	switch x := l.Value.(type) {
+-	case int64:
+-		return float64(x)
+-	case *big.Int:
+-		var r big.Rat
+-		f, _ := r.SetInt(x).Float64()
+-		return f
+-	case *big.Rat:
+-		f, _ := x.Float64()
+-		return f
+-	}
+-	panic(fmt.Sprintf("unexpected literal value: %T", l.Value))
+-}
+-
+-// Complex128 returns the complex value of this literal truncated to
+-// fit a complex128.
+-//
+-func (l *Literal) Complex128() complex128 {
+-	switch x := l.Value.(type) {
+-	case int64, *big.Int, *big.Rat:
+-		return complex(l.Float64(), 0)
+-	case types.Complex:
+-		re64, _ := x.Re.Float64()
+-		im64, _ := x.Im.Float64()
+-		return complex(re64, im64)
+-	}
+-	panic(fmt.Sprintf("unexpected literal value: %T", l.Value))
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/print.go gcc-4.8.1/libgo/go/exp/ssa/print.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/print.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/print.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,383 +0,0 @@
+-package ssa
+-
+-// This file implements the String() methods for all Value and
+-// Instruction types.
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"go/ast"
+-	"go/types"
+-)
+-
+-func (id Id) String() string {
+-	if id.Pkg == nil {
+-		return id.Name
+-	}
+-	return fmt.Sprintf("%s/%s", id.Pkg.Path, id.Name)
+-}
+-
+-// relName returns the name of v relative to i.
+-// In most cases, this is identical to v.Name(), but for cross-package
+-// references to Functions (including methods) and Globals, the
+-// package-qualified FullName is used instead.
+-//
+-func relName(v Value, i Instruction) string {
+-	switch v := v.(type) {
+-	case *Global:
+-		if v.Pkg == i.Block().Func.Pkg {
+-			return v.Name()
+-		}
+-		return v.FullName()
+-	case *Function:
+-		if v.Pkg == nil || v.Pkg == i.Block().Func.Pkg {
+-			return v.Name()
+-		}
+-		return v.FullName()
+-	}
+-	return v.Name()
+-}
+-
+-// Value.String()
+-//
+-// This method is provided only for debugging.
+-// It never appears in disassembly, which uses Value.Name().
+-
+-func (v *Literal) String() string {
+-	return fmt.Sprintf("literal %s rep=%T", v.Name(), v.Value)
+-}
+-
+-func (v *Parameter) String() string {
+-	return fmt.Sprintf("parameter %s : %s", v.Name(), v.Type())
+-}
+-
+-func (v *Capture) String() string {
+-	return fmt.Sprintf("capture %s : %s", v.Name(), v.Type())
+-}
+-
+-func (v *Global) String() string {
+-	return fmt.Sprintf("global %s : %s", v.Name(), v.Type())
+-}
+-
+-func (v *Builtin) String() string {
+-	return fmt.Sprintf("builtin %s : %s", v.Name(), v.Type())
+-}
+-
+-func (r *Function) String() string {
+-	return fmt.Sprintf("function %s : %s", r.Name(), r.Type())
+-}
+-
+-// FullName returns the name of this function qualified by the
+-// package name, unless it is anonymous or synthetic.
+-//
+-// TODO(adonovan): move to func.go when it's submitted.
+-//
+-func (f *Function) FullName() string {
+-	if f.Enclosing != nil || f.Pkg == nil {
+-		return f.Name_ // anonymous or synthetic
+-	}
+-	return fmt.Sprintf("%s.%s", f.Pkg.ImportPath, f.Name_)
+-}
+-
+-// FullName returns g's package-qualified name.
+-func (g *Global) FullName() string {
+-	return fmt.Sprintf("%s.%s", g.Pkg.ImportPath, g.Name_)
+-}
+-
+-// Instruction.String()
+-
+-func (v *Alloc) String() string {
+-	op := "local"
+-	if v.Heap {
+-		op = "new"
+-	}
+-	return fmt.Sprintf("%s %s", op, indirectType(v.Type()))
+-}
+-
+-func (v *Phi) String() string {
+-	var b bytes.Buffer
+-	b.WriteString("phi [")
+-	for i, edge := range v.Edges {
+-		if i > 0 {
+-			b.WriteString(", ")
+-		}
+-		// Be robust against malformed CFG.
+-		blockname := "?"
+-		if v.Block_ != nil && i < len(v.Block_.Preds) {
+-			blockname = v.Block_.Preds[i].Name
+-		}
+-		b.WriteString(blockname)
+-		b.WriteString(": ")
+-		b.WriteString(relName(edge, v))
+-	}
+-	b.WriteString("]")
+-	return b.String()
+-}
+-
+-func printCall(v *CallCommon, prefix string, instr Instruction) string {
+-	var b bytes.Buffer
+-	b.WriteString(prefix)
+-	if v.Func != nil {
+-		b.WriteString(relName(v.Func, instr))
+-	} else {
+-		name := underlyingType(v.Recv.Type()).(*types.Interface).Methods[v.Method].Name
+-		fmt.Fprintf(&b, "invoke %s.%s [#%d]", relName(v.Recv, instr), name, v.Method)
+-	}
+-	b.WriteString("(")
+-	for i, arg := range v.Args {
+-		if i > 0 {
+-			b.WriteString(", ")
+-		}
+-		b.WriteString(relName(arg, instr))
+-	}
+-	if v.HasEllipsis {
+-		b.WriteString("...")
+-	}
+-	b.WriteString(")")
+-	return b.String()
+-}
+-
+-func (v *Call) String() string {
+-	return printCall(&v.CallCommon, "", v)
+-}
+-
+-func (v *BinOp) String() string {
+-	return fmt.Sprintf("%s %s %s", relName(v.X, v), v.Op.String(), relName(v.Y, v))
+-}
+-
+-func (v *UnOp) String() string {
+-	return fmt.Sprintf("%s%s%s", v.Op, relName(v.X, v), commaOk(v.CommaOk))
+-}
+-
+-func (v *Conv) String() string {
+-	return fmt.Sprintf("convert %s <- %s (%s)", v.Type(), v.X.Type(), relName(v.X, v))
+-}
+-
+-func (v *ChangeInterface) String() string {
+-	return fmt.Sprintf("change interface %s <- %s (%s)", v.Type(), v.X.Type(), relName(v.X, v))
+-}
+-
+-func (v *MakeInterface) String() string {
+-	return fmt.Sprintf("make interface %s <- %s (%s)", v.Type(), v.X.Type(), relName(v.X, v))
+-}
+-
+-func (v *MakeClosure) String() string {
+-	var b bytes.Buffer
+-	fmt.Fprintf(&b, "make closure %s", relName(v.Fn, v))
+-	if v.Bindings != nil {
+-		b.WriteString(" [")
+-		for i, c := range v.Bindings {
+-			if i > 0 {
+-				b.WriteString(", ")
+-			}
+-			b.WriteString(relName(c, v))
+-		}
+-		b.WriteString("]")
+-	}
+-	return b.String()
+-}
+-
+-func (v *MakeSlice) String() string {
+-	var b bytes.Buffer
+-	b.WriteString("make slice ")
+-	b.WriteString(v.Type().String())
+-	b.WriteString(" ")
+-	b.WriteString(relName(v.Len, v))
+-	b.WriteString(" ")
+-	b.WriteString(relName(v.Cap, v))
+-	return b.String()
+-}
+-
+-func (v *Slice) String() string {
+-	var b bytes.Buffer
+-	b.WriteString("slice ")
+-	b.WriteString(relName(v.X, v))
+-	b.WriteString("[")
+-	if v.Low != nil {
+-		b.WriteString(relName(v.Low, v))
+-	}
+-	b.WriteString(":")
+-	if v.High != nil {
+-		b.WriteString(relName(v.High, v))
+-	}
+-	b.WriteString("]")
+-	return b.String()
+-}
+-
+-func (v *MakeMap) String() string {
+-	res := ""
+-	if v.Reserve != nil {
+-		res = relName(v.Reserve, v)
+-	}
+-	return fmt.Sprintf("make %s %s", v.Type(), res)
+-}
+-
+-func (v *MakeChan) String() string {
+-	return fmt.Sprintf("make %s %s", v.Type(), relName(v.Size, v))
+-}
+-
+-func (v *FieldAddr) String() string {
+-	fields := underlyingType(indirectType(v.X.Type())).(*types.Struct).Fields
+-	// Be robust against a bad index.
+-	name := "?"
+-	if v.Field >= 0 && v.Field < len(fields) {
+-		name = fields[v.Field].Name
+-	}
+-	return fmt.Sprintf("&%s.%s [#%d]", relName(v.X, v), name, v.Field)
+-}
+-
+-func (v *Field) String() string {
+-	fields := underlyingType(v.X.Type()).(*types.Struct).Fields
+-	// Be robust against a bad index.
+-	name := "?"
+-	if v.Field >= 0 && v.Field < len(fields) {
+-		name = fields[v.Field].Name
+-	}
+-	return fmt.Sprintf("%s.%s [#%d]", relName(v.X, v), name, v.Field)
+-}
+-
+-func (v *IndexAddr) String() string {
+-	return fmt.Sprintf("&%s[%s]", relName(v.X, v), relName(v.Index, v))
+-}
+-
+-func (v *Index) String() string {
+-	return fmt.Sprintf("%s[%s]", relName(v.X, v), relName(v.Index, v))
+-}
+-
+-func (v *Lookup) String() string {
+-	return fmt.Sprintf("%s[%s]%s", relName(v.X, v), relName(v.Index, v), commaOk(v.CommaOk))
+-}
+-
+-func (v *Range) String() string {
+-	return "range " + relName(v.X, v)
+-}
+-
+-func (v *Next) String() string {
+-	return "next " + relName(v.Iter, v)
+-}
+-
+-func (v *TypeAssert) String() string {
+-	return fmt.Sprintf("typeassert%s %s.(%s)", commaOk(v.CommaOk), relName(v.X, v), v.AssertedType)
+-}
+-
+-func (v *Extract) String() string {
+-	return fmt.Sprintf("extract %s #%d", relName(v.Tuple, v), v.Index)
+-}
+-
+-func (s *Jump) String() string {
+-	// Be robust against malformed CFG.
+-	blockname := "?"
+-	if s.Block_ != nil && len(s.Block_.Succs) == 1 {
+-		blockname = s.Block_.Succs[0].Name
+-	}
+-	return fmt.Sprintf("jump %s", blockname)
+-}
+-
+-func (s *If) String() string {
+-	// Be robust against malformed CFG.
+-	tblockname, fblockname := "?", "?"
+-	if s.Block_ != nil && len(s.Block_.Succs) == 2 {
+-		tblockname = s.Block_.Succs[0].Name
+-		fblockname = s.Block_.Succs[1].Name
+-	}
+-	return fmt.Sprintf("if %s goto %s else %s", relName(s.Cond, s), tblockname, fblockname)
+-}
+-
+-func (s *Go) String() string {
+-	return printCall(&s.CallCommon, "go ", s)
+-}
+-
+-func (s *Ret) String() string {
+-	var b bytes.Buffer
+-	b.WriteString("ret")
+-	for i, r := range s.Results {
+-		if i == 0 {
+-			b.WriteString(" ")
+-		} else {
+-			b.WriteString(", ")
+-		}
+-		b.WriteString(relName(r, s))
+-	}
+-	return b.String()
+-}
+-
+-func (s *Send) String() string {
+-	return fmt.Sprintf("send %s <- %s", relName(s.Chan, s), relName(s.X, s))
+-}
+-
+-func (s *Defer) String() string {
+-	return printCall(&s.CallCommon, "defer ", s)
+-}
+-
+-func (s *Select) String() string {
+-	var b bytes.Buffer
+-	for i, st := range s.States {
+-		if i > 0 {
+-			b.WriteString(", ")
+-		}
+-		if st.Dir == ast.RECV {
+-			b.WriteString("<-")
+-			b.WriteString(relName(st.Chan, s))
+-		} else {
+-			b.WriteString(relName(st.Chan, s))
+-			b.WriteString("<-")
+-			b.WriteString(relName(st.Send, s))
+-		}
+-	}
+-	non := ""
+-	if !s.Blocking {
+-		non = "non"
+-	}
+-	return fmt.Sprintf("select %sblocking [%s]", non, b.String())
+-}
+-
+-func (s *Store) String() string {
+-	return fmt.Sprintf("*%s = %s", relName(s.Addr, s), relName(s.Val, s))
+-}
+-
+-func (s *MapUpdate) String() string {
+-	return fmt.Sprintf("%s[%s] = %s", relName(s.Map, s), relName(s.Key, s), relName(s.Value, s))
+-}
+-
+-func (p *Package) String() string {
+-	// TODO(adonovan): prettify output.
+-	var b bytes.Buffer
+-	fmt.Fprintf(&b, "Package %s at %s:\n", p.ImportPath, p.Prog.Files.File(p.Pos).Name())
+-
+-	// TODO(adonovan): make order deterministic.
+-	maxname := 0
+-	for name := range p.Members {
+-		if l := len(name); l > maxname {
+-			maxname = l
+-		}
+-	}
+-
+-	for name, mem := range p.Members {
+-		switch mem := mem.(type) {
+-		case *Literal:
+-			fmt.Fprintf(&b, " const %-*s %s\n", maxname, name, mem.Name())
+-
+-		case *Function:
+-			fmt.Fprintf(&b, " func  %-*s %s\n", maxname, name, mem.Type())
+-
+-		case *Type:
+-			fmt.Fprintf(&b, " type  %-*s %s\n", maxname, name, mem.NamedType.Underlying)
+-			// TODO(adonovan): make order deterministic.
+-			for name, method := range mem.Methods {
+-				fmt.Fprintf(&b, "       method %s %s\n", name, method.Signature)
+-			}
+-
+-		case *Global:
+-			fmt.Fprintf(&b, " var   %-*s %s\n", maxname, name, mem.Type())
+-
+-		}
+-	}
+-	return b.String()
+-}
+-
+-func commaOk(x bool) string {
+-	if x {
+-		return ",ok"
+-	}
+-	return ""
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/sanity.go gcc-4.8.1/libgo/go/exp/ssa/sanity.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/sanity.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/sanity.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,263 +0,0 @@
+-package ssa
+-
+-// An optional pass for sanity checking invariants of the SSA representation.
+-// Currently it checks CFG invariants but little at the instruction level.
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"io"
+-	"os"
+-)
+-
+-type sanity struct {
+-	reporter io.Writer
+-	fn       *Function
+-	block    *BasicBlock
+-	insane   bool
+-}
+-
+-// SanityCheck performs integrity checking of the SSA representation
+-// of the function fn and returns true if it was valid.  Diagnostics
+-// are written to reporter if non-nil, os.Stderr otherwise.  Some
+-// diagnostics are only warnings and do not imply a negative result.
+-//
+-// Sanity checking is intended to facilitate the debugging of code
+-// transformation passes.
+-//
+-func SanityCheck(fn *Function, reporter io.Writer) bool {
+-	if reporter == nil {
+-		reporter = os.Stderr
+-	}
+-	return (&sanity{reporter: reporter}).checkFunction(fn)
+-}
+-
+-// MustSanityCheck is like SanityCheck but panics instead of returning
+-// a negative result.
+-//
+-func MustSanityCheck(fn *Function, reporter io.Writer) {
+-	if !SanityCheck(fn, reporter) {
+-		panic("SanityCheck failed")
+-	}
+-}
+-
+-// blockNames returns the names of the specified blocks as a
+-// human-readable string.
+-//
+-func blockNames(blocks []*BasicBlock) string {
+-	var buf bytes.Buffer
+-	for i, b := range blocks {
+-		if i > 0 {
+-			io.WriteString(&buf, ", ")
+-		}
+-		io.WriteString(&buf, b.Name)
+-	}
+-	return buf.String()
+-}
+-
+-func (s *sanity) diagnostic(prefix, format string, args ...interface{}) {
+-	fmt.Fprintf(s.reporter, "%s: function %s", prefix, s.fn.FullName())
+-	if s.block != nil {
+-		fmt.Fprintf(s.reporter, ", block %s", s.block.Name)
+-	}
+-	io.WriteString(s.reporter, ": ")
+-	fmt.Fprintf(s.reporter, format, args...)
+-	io.WriteString(s.reporter, "\n")
+-}
+-
+-func (s *sanity) errorf(format string, args ...interface{}) {
+-	s.insane = true
+-	s.diagnostic("Error", format, args...)
+-}
+-
+-func (s *sanity) warnf(format string, args ...interface{}) {
+-	s.diagnostic("Warning", format, args...)
+-}
+-
+-// findDuplicate returns an arbitrary basic block that appeared more
+-// than once in blocks, or nil if all were unique.
+-func findDuplicate(blocks []*BasicBlock) *BasicBlock {
+-	if len(blocks) < 2 {
+-		return nil
+-	}
+-	if blocks[0] == blocks[1] {
+-		return blocks[0]
+-	}
+-	// Slow path:
+-	m := make(map[*BasicBlock]bool)
+-	for _, b := range blocks {
+-		if m[b] {
+-			return b
+-		}
+-		m[b] = true
+-	}
+-	return nil
+-}
+-
+-func (s *sanity) checkInstr(idx int, instr Instruction) {
+-	switch instr := instr.(type) {
+-	case *If, *Jump, *Ret:
+-		s.errorf("control flow instruction not at end of block")
+-	case *Phi:
+-		if idx == 0 {
+-			// It suffices to apply this check to just the first phi node.
+-			if dup := findDuplicate(s.block.Preds); dup != nil {
+-				s.errorf("phi node in block with duplicate predecessor %s", dup.Name)
+-			}
+-		} else {
+-			prev := s.block.Instrs[idx-1]
+-			if _, ok := prev.(*Phi); !ok {
+-				s.errorf("Phi instruction follows a non-Phi: %T", prev)
+-			}
+-		}
+-		if ne, np := len(instr.Edges), len(s.block.Preds); ne != np {
+-			s.errorf("phi node has %d edges but %d predecessors", ne, np)
+-		}
+-
+-	case *Alloc:
+-	case *Call:
+-	case *BinOp:
+-	case *UnOp:
+-	case *MakeClosure:
+-	case *MakeChan:
+-	case *MakeMap:
+-	case *MakeSlice:
+-	case *Slice:
+-	case *Field:
+-	case *FieldAddr:
+-	case *IndexAddr:
+-	case *Index:
+-	case *Select:
+-	case *Range:
+-	case *TypeAssert:
+-	case *Extract:
+-	case *Go:
+-	case *Defer:
+-	case *Send:
+-	case *Store:
+-	case *MapUpdate:
+-	case *Next:
+-	case *Lookup:
+-	case *Conv:
+-	case *ChangeInterface:
+-	case *MakeInterface:
+-		// TODO(adonovan): implement checks.
+-	default:
+-		panic(fmt.Sprintf("Unknown instruction type: %T", instr))
+-	}
+-}
+-
+-func (s *sanity) checkFinalInstr(idx int, instr Instruction) {
+-	switch instr.(type) {
+-	case *If:
+-		if nsuccs := len(s.block.Succs); nsuccs != 2 {
+-			s.errorf("If-terminated block has %d successors; expected 2", nsuccs)
+-			return
+-		}
+-		if s.block.Succs[0] == s.block.Succs[1] {
+-			s.errorf("If-instruction has same True, False target blocks: %s", s.block.Succs[0].Name)
+-			return
+-		}
+-
+-	case *Jump:
+-		if nsuccs := len(s.block.Succs); nsuccs != 1 {
+-			s.errorf("Jump-terminated block has %d successors; expected 1", nsuccs)
+-			return
+-		}
+-
+-	case *Ret:
+-		if nsuccs := len(s.block.Succs); nsuccs != 0 {
+-			s.errorf("Ret-terminated block has %d successors; expected none", nsuccs)
+-			return
+-		}
+-		// TODO(adonovan): check number and types of results
+-
+-	default:
+-		s.errorf("non-control flow instruction at end of block")
+-	}
+-}
+-
+-func (s *sanity) checkBlock(b *BasicBlock, isEntry bool) {
+-	s.block = b
+-
+-	// Check all blocks are reachable.
+-	// (The entry block is always implicitly reachable.)
+-	if !isEntry && len(b.Preds) == 0 {
+-		s.warnf("unreachable block")
+-		if b.Instrs == nil {
+-			// Since this block is about to be pruned,
+-			// tolerating transient problems in it
+-			// simplifies other optimisations.
+-			return
+-		}
+-	}
+-
+-	// Check predecessor and successor relations are dual.
+-	for _, a := range b.Preds {
+-		found := false
+-		for _, bb := range a.Succs {
+-			if bb == b {
+-				found = true
+-				break
+-			}
+-		}
+-		if !found {
+-			s.errorf("expected successor edge in predecessor %s; found only: %s", a.Name, blockNames(a.Succs))
+-		}
+-	}
+-	for _, c := range b.Succs {
+-		found := false
+-		for _, bb := range c.Preds {
+-			if bb == b {
+-				found = true
+-				break
+-			}
+-		}
+-		if !found {
+-			s.errorf("expected predecessor edge in successor %s; found only: %s", c.Name, blockNames(c.Preds))
+-		}
+-	}
+-
+-	// Check each instruction is sane.
+-	n := len(b.Instrs)
+-	if n == 0 {
+-		s.errorf("basic block contains no instructions")
+-	}
+-	for j, instr := range b.Instrs {
+-		if b2 := instr.Block(); b2 == nil {
+-			s.errorf("nil Block() for instruction at index %d", j)
+-			continue
+-		} else if b2 != b {
+-			s.errorf("wrong Block() (%s) for instruction at index %d ", b2.Name, j)
+-			continue
+-		}
+-		if j < n-1 {
+-			s.checkInstr(j, instr)
+-		} else {
+-			s.checkFinalInstr(j, instr)
+-		}
+-	}
+-}
+-
+-func (s *sanity) checkFunction(fn *Function) bool {
+-	// TODO(adonovan): check Function invariants:
+-	// - check owning Package (if any) contains this function.
+-	// - check params match signature
+-	// - check locals are all !Heap
+-	// - check transient fields are nil
+-	// - check block labels are unique (warning)
+-	s.fn = fn
+-	if fn.Prog == nil {
+-		s.errorf("nil Prog")
+-	}
+-	for i, b := range fn.Blocks {
+-		if b == nil {
+-			s.warnf("nil *BasicBlock at f.Blocks[%d]", i)
+-			continue
+-		}
+-		s.checkBlock(b, i == 0)
+-	}
+-	s.block = nil
+-	s.fn = nil
+-	return !s.insane
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/ssa.go gcc-4.8.1/libgo/go/exp/ssa/ssa.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/ssa.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/ssa.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1100 +0,0 @@
+-package ssa
+-
+-// This package defines a high-level intermediate representation for
+-// Go programs using static single-assignment (SSA) form.
+-
+-import (
+-	"fmt"
+-	"go/ast"
+-	"go/token"
+-	"go/types"
+-)
+-
+-// A Program is a partial or complete Go program converted to SSA form.
+-// Each Builder creates and populates a single Program during its
+-// lifetime.
+-//
+-// TODO(adonovan): synthetic methods for promoted methods and for
+-// standalone interface methods do not belong to any package.  Make
+-// them enumerable here.
+-//
+-// TODO(adonovan): MethodSets of types other than named types
+-// (i.e. anon structs) are not currently accessible, nor are they
+-// memoized.  Add a method: MethodSetForType() which looks in the
+-// appropriate Package (for methods of named types) or in
+-// Program.AnonStructMethods (for methods of anon structs).
+-//
+-type Program struct {
+-	Files    *token.FileSet            // position information for the files of this Program
+-	Packages map[string]*Package       // all loaded Packages, keyed by import path
+-	Builtins map[types.Object]*Builtin // all built-in functions, keyed by typechecker objects.
+-}
+-
+-// A Package is a single analyzed Go package, containing Members for
+-// all package-level functions, variables, constants and types it
+-// declares.  These may be accessed directly via Members, or via the
+-// type-specific accessor methods Func, Type, Var and Const.
+-//
+-type Package struct {
+-	Prog       *Program          // the owning program
+-	Types      *types.Package    // the type checker's package object for this package.
+-	ImportPath string            // e.g. "sync/atomic"
+-	Pos        token.Pos         // position of an arbitrary file in the package
+-	Members    map[string]Member // all exported and unexported members of the package
+-	AnonFuncs  []*Function       // all anonymous functions in this package
+-	Init       *Function         // the package's (concatenated) init function
+-
+-	// The following fields are set transiently during building,
+-	// then cleared.
+-	files []*ast.File // the abstract syntax tree for the files of the package
+-}
+-
+-// A Member is a member of a Go package, implemented by *Literal,
+-// *Global, *Function, or *Type; they are created by package-level
+-// const, var, func and type declarations respectively.
+-//
+-type Member interface {
+-	Name() string      // the declared name of the package member
+-	String() string    // human-readable information about the value
+-	Type() types.Type  // the type of the package member
+-	ImplementsMember() // dummy method to indicate the "implements" relation.
+-}
+-
+-// An Id identifies the name of a field of a struct type, or the name
+-// of a method of an interface or a named type.
+-//
+-// For exported names, i.e. those beginning with a Unicode upper-case
+-// letter, a simple string is unambiguous.
+-//
+-// However, a method set or struct may contain multiple unexported
+-// names with identical spelling that are logically distinct because
+-// they originate in different packages.  Unexported names must
+-// therefore be disambiguated by their package too.
+-//
+-// The Pkg field of an Id is therefore nil iff the name is exported.
+-//
+-// This type is suitable for use as a map key because the equivalence
+-// relation == is consistent with identifier equality.
+-type Id struct {
+-	Pkg  *types.Package
+-	Name string
+-}
+-
+-// A MethodSet contains all the methods whose receiver is either T or
+-// *T, for some named or struct type T.
+-//
+-// TODO(adonovan): the client is required to adapt T<=>*T, e.g. when
+-// invoking an interface method.  (This could be simplified for the
+-// client by having distinct method sets for T and *T, with the SSA
+-// Builder generating wrappers as needed, but probably the client is
+-// able to do a better job.)  Document the precise rules the client
+-// must follow.
+-//
+-type MethodSet map[Id]*Function
+-
+-// A Type is a Member of a Package representing the name, underlying
+-// type and method set of a named type declared at package scope.
+-//
+-// The method set contains only concrete methods; it is empty for
+-// interface types.
+-//
+-type Type struct {
+-	NamedType *types.NamedType
+-	Methods   MethodSet
+-}
+-
+-// An SSA value that can be referenced by an instruction.
+-//
+-// TODO(adonovan): add methods:
+-// - Referrers() []*Instruction // all instructions that refer to this value.
+-//
+-type Value interface {
+-	// Name returns the name of this value, and determines how
+-	// this Value appears when used as an operand of an
+-	// Instruction.
+-	//
+-	// This is the same as the source name for Parameters,
+-	// Builtins, Functions, Captures, Globals and some Allocs.
+-	// For literals, it is a representation of the literal's value
+-	// and type.  For all other Values this is the name of the
+-	// virtual register defined by the instruction.
+-	//
+-	// The name of an SSA Value is not semantically significant,
+-	// and may not even be unique within a function.
+-	Name() string
+-
+-	// If this value is an Instruction, String returns its
+-	// disassembled form; otherwise it returns unspecified
+-	// human-readable information about the Value, such as its
+-	// kind, name and type.
+-	String() string
+-
+-	// Type returns the type of this value.  Many instructions
+-	// (e.g. IndexAddr) change the behaviour depending on the
+-	// types of their operands.
+-	//
+-	// Documented type invariants below (e.g. "Alloc.Type()
+-	// returns a *types.Pointer") refer to the underlying type in
+-	// the case of NamedTypes.
+-	Type() types.Type
+-
+-	// Dummy method to indicate the "implements" relation.
+-	ImplementsValue()
+-}
+-
+-// An Instruction is an SSA instruction that computes a new Value or
+-// has some effect.
+-//
+-// An Instruction that defines a value (e.g. BinOp) also implements
+-// the Value interface; an Instruction that only has an effect (e.g. Store)
+-// does not.
+-//
+-// TODO(adonovan): add method:
+-// - Operands() []Value  // all Values referenced by this instruction.
+-//
+-type Instruction interface {
+-	// String returns the disassembled form of this value.  e.g.
+-	//
+-	// Examples of Instructions that define a Value:
+-	// e.g.  "x + y"     (BinOp)
+-	//       "len([])"   (Call)
+-	// Note that the name of the Value is not printed.
+-	//
+-	// Examples of Instructions that do define (are) Values:
+-	// e.g.  "ret x"     (Ret)
+-	//       "*y = x"    (Store)
+-	//
+-	// (This separation is useful for some analyses which
+-	// distinguish the operation from the value it
+-	// defines. e.g. 'y = local int' is both an allocation of
+-	// memory 'local int' and a definition of a pointer y.)
+-	String() string
+-
+-	// Block returns the basic block to which this instruction
+-	// belongs.
+-	Block() *BasicBlock
+-
+-	// SetBlock sets the basic block to which this instruction
+-	// belongs.
+-	SetBlock(*BasicBlock)
+-
+-	// Dummy method to indicate the "implements" relation.
+-	ImplementsInstruction()
+-}
+-
+-// Function represents the parameters, results and code of a function
+-// or method.
+-//
+-// If Blocks is nil, this indicates an external function for which no
+-// Go source code is available.  In this case, Captures and Locals
+-// will be nil too.  Clients performing whole-program analysis must
+-// handle external functions specially.
+-//
+-// Functions are immutable values; they do not have addresses.
+-//
+-// Blocks[0] is the function entry point; block order is not otherwise
+-// semantically significant, though it may affect the readability of
+-// the disassembly.
+-//
+-// A nested function that refers to one or more lexically enclosing
+-// local variables ("free variables") has Capture parameters.  Such
+-// functions cannot be called directly but require a value created by
+-// MakeClosure which, via its Bindings, supplies values for these
+-// parameters.  Captures are always addresses.
+-//
+-// If the function is a method (Signature.Recv != nil) then the first
+-// element of Params is the receiver parameter.
+-//
+-// Type() returns the function's Signature.
+-//
+-type Function struct {
+-	Name_     string
+-	Signature *types.Signature
+-
+-	Pos       token.Pos // location of the definition
+-	Enclosing *Function // enclosing function if anon; nil if global
+-	Pkg       *Package  // enclosing package; nil for some synthetic methods
+-	Prog      *Program  // enclosing program
+-	Params    []*Parameter
+-	FreeVars  []*Capture // free variables whose values must be supplied by closure
+-	Locals    []*Alloc
+-	Blocks    []*BasicBlock // basic blocks of the function; nil => external
+-
+-	// The following fields are set transiently during building,
+-	// then cleared.
+-	currentBlock *BasicBlock             // where to emit code
+-	objects      map[types.Object]Value  // addresses of local variables
+-	results      []*Alloc                // tuple of named results
+-	syntax       *funcSyntax             // abstract syntax trees for Go source functions
+-	targets      *targets                // linked stack of branch targets
+-	lblocks      map[*ast.Object]*lblock // labelled blocks
+-}
+-
+-// An SSA basic block.
+-//
+-// The final element of Instrs is always an explicit transfer of
+-// control (If, Jump or Ret).
+-//
+-// A block may contain no Instructions only if it is unreachable,
+-// i.e. Preds is nil.  Empty blocks are typically pruned.
+-//
+-// BasicBlocks and their Preds/Succs relation form a (possibly cyclic)
+-// graph independent of the SSA Value graph.  It is illegal for
+-// multiple edges to exist between the same pair of blocks.
+-//
+-// The order of Preds and Succs are significant (to Phi and If
+-// instructions, respectively).
+-//
+-type BasicBlock struct {
+-	Name         string         // label; no semantic significance
+-	Func         *Function      // containing function
+-	Instrs       []Instruction  // instructions in order
+-	Preds, Succs []*BasicBlock  // predecessors and successors
+-	succs2       [2]*BasicBlock // initial space for Succs.
+-}
+-
+-// Pure values ----------------------------------------
+-
+-// A Capture is a pointer to a lexically enclosing local variable.
+-//
+-// The referent of a capture is an Alloc or another Capture and is
+-// always considered potentially escaping, so Captures are always
+-// addresses in the heap, and have pointer types.
+-//
+-type Capture struct {
+-	Outer Value // the Value captured from the enclosing context.
+-}
+-
+-// A Parameter represents an input parameter of a function.
+-//
+-type Parameter struct {
+-	Name_ string
+-	Type_ types.Type
+-}
+-
+-// A Literal represents a literal nil, boolean, string or numeric
+-// (integer, fraction or complex) value.
+-//
+-// A literal's underlying Type() can be a basic type, possibly one of
+-// the "untyped" types.  A nil literal can have any reference type:
+-// interface, map, channel, pointer, slice, or function---but not
+-// "untyped nil".
+-//
+-// All source-level constant expressions are represented by a Literal
+-// of equal type and value.
+-//
+-// Value holds the exact value of the literal, independent of its
+-// Type(), using the same representation as package go/types uses for
+-// constants.
+-//
+-// Example printed form:
+-// 	42:int
+-//	"hello":untyped string
+-//	3+4i:MyComplex
+-//
+-type Literal struct {
+-	Type_ types.Type
+-	Value interface{}
+-}
+-
+-// A Global is a named Value holding the address of a package-level
+-// variable.
+-//
+-type Global struct {
+-	Name_ string
+-	Type_ types.Type
+-	Pkg   *Package
+-
+-	// The following fields are set transiently during building,
+-	// then cleared.
+-	spec *ast.ValueSpec // explained at buildGlobal
+-}
+-
+-// A built-in function, e.g. len.
+-//
+-// Builtins are immutable values; they do not have addresses.
+-//
+-// Type() returns an inscrutable *types.builtin.  Built-in functions
+-// may have polymorphic or variadic types that are not expressible in
+-// Go's type system.
+-//
+-type Builtin struct {
+-	Object *types.Func // canonical types.Universe object for this built-in
+-}
+-
+-// Value-defining instructions  ----------------------------------------
+-
+-// The Alloc instruction reserves space for a value of the given type,
+-// zero-initializes it, and yields its address.
+-//
+-// Alloc values are always addresses, and have pointer types, so the
+-// type of the allocated space is actually indirect(Type()).
+-//
+-// If Heap is false, Alloc allocates space in the function's
+-// activation record (frame); we refer to an Alloc(Heap=false) as a
+-// "local" alloc.  Each local Alloc returns the same address each time
+-// it is executed within the same activation; the space is
+-// re-initialized to zero.
+-//
+-// If Heap is true, Alloc allocates space in the heap, and returns; we
+-// refer to an Alloc(Heap=true) as a "new" alloc.  Each new Alloc
+-// returns a different address each time it is executed.
+-//
+-// When Alloc is applied to a channel, map or slice type, it returns
+-// the address of an uninitialized (nil) reference of that kind; store
+-// the result of MakeSlice, MakeMap or MakeChan in that location to
+-// instantiate these types.
+-//
+-// Example printed form:
+-// 	t0 = local int
+-// 	t1 = new int
+-//
+-type Alloc struct {
+-	anInstruction
+-	Name_ string
+-	Type_ types.Type
+-	Heap  bool
+-}
+-
+-// Phi represents an SSA Ï-node, which combines values that differ
+-// across incoming control-flow edges and yields a new value.  Within
+-// a block, all Ï-nodes must appear before all non-Ï nodes.
+-//
+-// Example printed form:
+-// 	t2 = phi [0.start: t0, 1.if.then: t1, ...]
+-//
+-type Phi struct {
+-	Register
+-	Edges []Value // Edges[i] is value for Block().Preds[i]
+-}
+-
+-// Call represents a function or method call.
+-//
+-// The Call instruction yields the function result, if there is
+-// exactly one, or a tuple (empty or len>1) whose components are
+-// accessed via Extract.
+-//
+-// See CallCommon for generic function call documentation.
+-//
+-// Example printed form:
+-// 	t2 = println(t0, t1)
+-// 	t4 = t3()
+-// 	t7 = invoke t5.Println(...t6)
+-//
+-type Call struct {
+-	Register
+-	CallCommon
+-}
+-
+-// BinOp yields the result of binary operation X Op Y.
+-//
+-// Example printed form:
+-// 	t1 = t0 + 1:int
+-//
+-type BinOp struct {
+-	Register
+-	// One of:
+-	// ADD SUB MUL QUO REM          + - * / %
+-	// AND OR XOR SHL SHR AND_NOT   & | ^ << >> &~
+-	// EQL LSS GTR NEQ LEQ GEQ      == != < <= < >=
+-	Op   token.Token
+-	X, Y Value
+-}
+-
+-// UnOp yields the result of Op X.
+-// ARROW is channel receive.
+-// MUL is pointer indirection (load).
+-//
+-// If CommaOk and Op=ARROW, the result is a 2-tuple of the value above
+-// and a boolean indicating the success of the receive.  The
+-// components of the tuple are accessed using Extract.
+-//
+-// Example printed form:
+-// 	t0 = *x
+-// 	t2 = <-t1,ok
+-//
+-type UnOp struct {
+-	Register
+-	Op      token.Token // One of: NOT SUB ARROW MUL XOR ! - <- * ^
+-	X       Value
+-	CommaOk bool
+-}
+-
+-// Conv yields the conversion of X to type Type().
+-//
+-// A conversion is one of the following kinds.  The behaviour of the
+-// conversion operator may depend on both Type() and X.Type(), as well
+-// as the dynamic value.
+-//
+-// A '+' indicates that a dynamic representation change may occur.
+-// A '-' indicates that the conversion is a value-preserving change
+-// to types only.
+-//
+-// 1. implicit conversions (arising from assignability rules):
+-//    - adding/removing a name, same underlying types.
+-//    - channel type restriction, possibly adding/removing a name.
+-// 2. explicit conversions (in addition to the above):
+-//    - changing a name, same underlying types.
+-//    - between pointers to identical base types.
+-//    + conversions between real numeric types.
+-//    + conversions between complex numeric types.
+-//    + integer/[]byte/[]rune -> string.
+-//    + string -> []byte/[]rune.
+-//
+-// TODO(adonovan): split into two cases:
+-// - rename value (ChangeType)
+-// + value to type with different representation (Conv)
+-//
+-// Conversions of untyped string/number/bool constants to a specific
+-// representation are eliminated during SSA construction.
+-//
+-// Example printed form:
+-// 	t1 = convert interface{} <- int (t0)
+-//
+-type Conv struct {
+-	Register
+-	X Value
+-}
+-
+-// ChangeInterface constructs a value of one interface type from a
+-// value of another interface type known to be assignable to it.
+-//
+-// Example printed form:
+-// 	t1 = change interface interface{} <- I (t0)
+-//
+-type ChangeInterface struct {
+-	Register
+-	X Value
+-}
+-
+-// MakeInterface constructs an instance of an interface type from a
+-// value and its method-set.
+-//
+-// To construct the zero value of an interface type T, use:
+-// 	&Literal{types.nilType{}, T}
+-//
+-// Example printed form:
+-// 	t1 = make interface interface{} <- int (42:int)
+-//
+-type MakeInterface struct {
+-	Register
+-	X       Value
+-	Methods MethodSet // method set of (non-interface) X iff converting to interface
+-}
+-
+-// A MakeClosure instruction yields an anonymous function value whose
+-// code is Fn and whose lexical capture slots are populated by Bindings.
+-//
+-// By construction, all captured variables are addresses of variables
+-// allocated with 'new', i.e. Alloc(Heap=true).
+-//
+-// Type() returns a *types.Signature.
+-//
+-// Example printed form:
+-// 	t0 = make closure anon@1.2 [x y z]
+-//
+-type MakeClosure struct {
+-	Register
+-	Fn       *Function
+-	Bindings []Value // values for each free variable in Fn.FreeVars
+-}
+-
+-// The MakeMap instruction creates a new hash-table-based map object
+-// and yields a value of kind map.
+-//
+-// Type() returns a *types.Map.
+-//
+-// Example printed form:
+-// 	t1 = make map[string]int t0
+-//
+-type MakeMap struct {
+-	Register
+-	Reserve Value // initial space reservation; nil => default
+-}
+-
+-// The MakeChan instruction creates a new channel object and yields a
+-// value of kind chan.
+-//
+-// Type() returns a *types.Chan.
+-//
+-// Example printed form:
+-// 	t0 = make chan int 0
+-//
+-type MakeChan struct {
+-	Register
+-	Size Value // int; size of buffer; zero => synchronous.
+-}
+-
+-// MakeSlice yields a slice of length Len backed by a newly allocated
+-// array of length Cap.
+-//
+-// Both Len and Cap must be non-nil Values of integer type.
+-//
+-// (Alloc(types.Array) followed by Slice will not suffice because
+-// Alloc can only create arrays of statically known length.)
+-//
+-// Type() returns a *types.Slice.
+-//
+-// Example printed form:
+-// 	t1 = make slice []string 1:int t0
+-//
+-type MakeSlice struct {
+-	Register
+-	Len Value
+-	Cap Value
+-}
+-
+-// Slice yields a slice of an existing string, slice or *array X
+-// between optional integer bounds Low and High.
+-//
+-// Type() returns string if the type of X was string, otherwise a
+-// *types.Slice with the same element type as X.
+-//
+-// Example printed form:
+-// 	t1 = slice t0[1:]
+-//
+-type Slice struct {
+-	Register
+-	X         Value // slice, string, or *array
+-	Low, High Value // either may be nil
+-}
+-
+-// FieldAddr yields the address of Field of *struct  X.
+-//
+-// The field is identified by its index within the field list of the
+-// struct type of X.
+-//
+-// Type() returns a *types.Pointer.
+-//
+-// Example printed form:
+-// 	t1 = &t0.name [#1]
+-//
+-type FieldAddr struct {
+-	Register
+-	X     Value // *struct
+-	Field int   // index into X.Type().(*types.Struct).Fields
+-}
+-
+-// Field yields the Field of struct X.
+-//
+-// The field is identified by its index within the field list of the
+-// struct type of X; by using numeric indices we avoid ambiguity of
+-// package-local identifiers and permit compact representations.
+-//
+-// Example printed form:
+-// 	t1 = t0.name [#1]
+-//
+-type Field struct {
+-	Register
+-	X     Value // struct
+-	Field int   // index into X.Type().(*types.Struct).Fields
+-}
+-
+-// IndexAddr yields the address of the element at index Index of
+-// collection X.  Index is an integer expression.
+-//
+-// The elements of maps and strings are not addressable; use Lookup or
+-// MapUpdate instead.
+-//
+-// Type() returns a *types.Pointer.
+-//
+-// Example printed form:
+-// 	t2 = &t0[t1]
+-//
+-type IndexAddr struct {
+-	Register
+-	X     Value // slice or *array,
+-	Index Value // numeric index
+-}
+-
+-// Index yields element Index of array X.
+-//
+-// TODO(adonovan): permit X to have type slice.
+-// Currently this requires IndexAddr followed by Load.
+-//
+-// Example printed form:
+-// 	t2 = t0[t1]
+-//
+-type Index struct {
+-	Register
+-	X     Value // array
+-	Index Value // integer index
+-}
+-
+-// Lookup yields element Index of collection X, a map or string.
+-// Index is an integer expression if X is a string or the appropriate
+-// key type if X is a map.
+-//
+-// If CommaOk, the result is a 2-tuple of the value above and a
+-// boolean indicating the result of a map membership test for the key.
+-// The components of the tuple are accessed using Extract.
+-//
+-// Example printed form:
+-// 	t2 = t0[t1]
+-// 	t5 = t3[t4],ok
+-//
+-type Lookup struct {
+-	Register
+-	X       Value // string or map
+-	Index   Value // numeric or key-typed index
+-	CommaOk bool  // return a value,ok pair
+-}
+-
+-// SelectState is a helper for Select.
+-// It represents one goal state and its corresponding communication.
+-//
+-type SelectState struct {
+-	Dir  ast.ChanDir // direction of case
+-	Chan Value       // channel to use (for send or receive)
+-	Send Value       // value to send (for send)
+-}
+-
+-// Select tests whether (or blocks until) one or more of the specified
+-// sent or received states is entered.
+-//
+-// It returns a triple (index int, recv ?, recvOk bool) whose
+-// components, described below, must be accessed via the Extract
+-// instruction.
+-//
+-// If Blocking, select waits until exactly one state holds, i.e. a
+-// channel becomes ready for the designated operation of sending or
+-// receiving; select chooses one among the ready states
+-// pseudorandomly, performs the send or receive operation, and sets
+-// 'index' to the index of the chosen channel.
+-//
+-// If !Blocking, select doesn't block if no states hold; instead it
+-// returns immediately with index equal to -1.
+-//
+-// If the chosen channel was used for a receive, 'recv' is set to the
+-// received value; Otherwise it is unspecified.  recv has no useful
+-// type since it is conceptually the union of all possible received
+-// values.
+-//
+-// The third component of the triple, recvOk, is a boolean whose value
+-// is true iff the selected operation was a receive and the receive
+-// successfully yielded a value.
+-//
+-// Example printed form:
+-// 	t3 = select nonblocking [<-t0, t1<-t2, ...]
+-// 	t4 = select blocking []
+-//
+-type Select struct {
+-	Register
+-	States   []SelectState
+-	Blocking bool
+-}
+-
+-// Range yields an iterator over the domain and range of X.
+-// Elements are accessed via Next.
+-//
+-// Type() returns a *types.Result (tuple type).
+-//
+-// Example printed form:
+-// 	t0 = range "hello":string
+-//
+-type Range struct {
+-	Register
+-	X Value // array, *array, slice, string, map or chan
+-}
+-
+-// Next reads and advances the iterator Iter and returns a 3-tuple
+-// value (ok, k, v).  If the iterator is not exhausted, ok is true and
+-// k and v are the next elements of the domain and range,
+-// respectively.  Otherwise ok is false and k and v are undefined.
+-//
+-// For channel iterators, k is the received value and v is always
+-// undefined.
+-//
+-// Components of the tuple are accessed using Extract.
+-//
+-// Type() returns a *types.Result (tuple type).
+-//
+-// Example printed form:
+-// 	t1 = next t0
+-//
+-type Next struct {
+-	Register
+-	Iter Value
+-}
+-
+-// TypeAssert tests whether interface value X has type
+-// AssertedType.
+-//
+-// If CommaOk: on success it returns a pair (v, true) where v is a
+-// copy of value X; on failure it returns (z, false) where z is the
+-// zero value of that type.  The components of the pair must be
+-// accessed using the Extract instruction.
+-//
+-// If !CommaOk, on success it returns just the single value v; on
+-// failure it panics.
+-//
+-// Type() reflects the actual type of the result, possibly a pair
+-// (types.Result); AssertedType is the asserted type.
+-//
+-// Example printed form:
+-// 	t1 = typeassert t0.(int)
+-// 	t3 = typeassert,ok t2.(T)
+-//
+-type TypeAssert struct {
+-	Register
+-	X            Value
+-	AssertedType types.Type
+-	CommaOk      bool
+-}
+-
+-// Extract yields component Index of Tuple.
+-//
+-// This is used to access the results of instructions with multiple
+-// return values, such as Call, TypeAssert, Next, UnOp(ARROW) and
+-// IndexExpr(Map).
+-//
+-// Example printed form:
+-// 	t1 = extract t0 #1
+-//
+-type Extract struct {
+-	Register
+-	Tuple Value
+-	Index int
+-}
+-
+-// Instructions executed for effect.  They do not yield a value. --------------------
+-
+-// Jump transfers control to the sole successor of its owning block.
+-//
+-// A Jump instruction must be the last instruction of its containing
+-// BasicBlock.
+-//
+-// Example printed form:
+-// 	jump done
+-//
+-type Jump struct {
+-	anInstruction
+-}
+-
+-// The If instruction transfers control to one of the two successors
+-// of its owning block, depending on the boolean Cond: the first if
+-// true, the second if false.
+-//
+-// An If instruction must be the last instruction of its containing
+-// BasicBlock.
+-//
+-// Example printed form:
+-// 	if t0 goto done else body
+-//
+-type If struct {
+-	anInstruction
+-	Cond Value
+-}
+-
+-// Ret returns values and control back to the calling function.
+-//
+-// len(Results) is always equal to the number of results in the
+-// function's signature.  A source-level 'return' statement with no
+-// operands in a multiple-return value function is desugared to make
+-// the results explicit.
+-//
+-// If len(Results) > 1, Ret returns a tuple value with the specified
+-// components which the caller must access using Extract instructions.
+-//
+-// There is no instruction to return a ready-made tuple like those
+-// returned by a "value,ok"-mode TypeAssert, Lookup or UnOp(ARROW) or
+-// a tail-call to a function with multiple result parameters.
+-// TODO(adonovan): consider defining one; but: dis- and re-assembling
+-// the tuple is unavoidable if assignability conversions are required
+-// on the components.
+-//
+-// Ret must be the last instruction of its containing BasicBlock.
+-// Such a block has no successors.
+-//
+-// Example printed form:
+-// 	ret
+-// 	ret nil:I, 2:int
+-//
+-type Ret struct {
+-	anInstruction
+-	Results []Value
+-}
+-
+-// Go creates a new goroutine and calls the specified function
+-// within it.
+-//
+-// See CallCommon for generic function call documentation.
+-//
+-// Example printed form:
+-// 	go println(t0, t1)
+-// 	go t3()
+-// 	go invoke t5.Println(...t6)
+-//
+-type Go struct {
+-	anInstruction
+-	CallCommon
+-}
+-
+-// Defer pushes the specified call onto a stack of functions
+-// to be called immediately prior to returning from the
+-// current function.
+-//
+-// See CallCommon for generic function call documentation.
+-//
+-// Example printed form:
+-// 	defer println(t0, t1)
+-// 	defer t3()
+-// 	defer invoke t5.Println(...t6)
+-//
+-type Defer struct {
+-	anInstruction
+-	CallCommon
+-}
+-
+-// Send sends X on channel Chan.
+-//
+-// Example printed form:
+-// 	send t0 <- t1
+-//
+-type Send struct {
+-	anInstruction
+-	Chan, X Value
+-}
+-
+-// Store stores Val at address Addr.
+-// Stores can be of arbitrary types.
+-//
+-// Example printed form:
+-// 	*x = y
+-//
+-type Store struct {
+-	anInstruction
+-	Addr Value
+-	Val  Value
+-}
+-
+-// MapUpdate updates the association of Map[Key] to Value.
+-//
+-// Example printed form:
+-//	t0[t1] = t2
+-//
+-type MapUpdate struct {
+-	anInstruction
+-	Map   Value
+-	Key   Value
+-	Value Value
+-}
+-
+-// Embeddable mix-ins used for common parts of other structs. --------------------
+-
+-// Register is a mix-in embedded by all SSA values that are also
+-// instructions, i.e. virtual registers, and provides implementations
+-// of the Value interface's Name() and Type() methods: the name is
+-// simply a numbered register (e.g. "t0") and the type is the Type_
+-// field.
+-//
+-// Temporary names are automatically assigned to each Register on
+-// completion of building a function in SSA form.
+-//
+-// Clients must not assume that the 'id' value (and the Name() derived
+-// from it) is unique within a function.  As always in this API,
+-// semantics are determined only by identity; names exist only to
+-// facilitate debugging.
+-//
+-type Register struct {
+-	anInstruction
+-	num   int        // "name" of virtual register, e.g. "t0".  Not guaranteed unique.
+-	Type_ types.Type // type of virtual register
+-}
+-
+-// AnInstruction is a mix-in embedded by all Instructions.
+-// It provides the implementations of the Block and SetBlock methods.
+-type anInstruction struct {
+-	Block_ *BasicBlock // the basic block of this instruction
+-}
+-
+-// CallCommon is a mix-in embedded by Go, Defer and Call to hold the
+-// common parts of a function or method call.
+-//
+-// Each CallCommon exists in one of two modes, function call and
+-// interface method invocation, or "call" and "invoke" for short.
+-//
+-// 1. "call" mode: when Recv is nil, a CallCommon represents an
+-// ordinary function call of the value in Func.
+-//
+-// In the common case in which Func is a *Function, this indicates a
+-// statically dispatched call to a package-level function, an
+-// anonymous function, or a method of a named type.  Also statically
+-// dispatched, but less common, Func may be a *MakeClosure, indicating
+-// an immediately applied function literal with free variables.  Any
+-// other Value of Func indicates a dynamically dispatched function
+-// call.
+-//
+-// Args contains the arguments to the call.  If Func is a method,
+-// Args[0] contains the receiver parameter.  Recv and Method are not
+-// used in this mode.
+-//
+-// Example printed form:
+-// 	t2 = println(t0, t1)
+-// 	go t3()
+-//	defer t5(...t6)
+-//
+-// 2. "invoke" mode: when Recv is non-nil, a CallCommon represents a
+-// dynamically dispatched call to an interface method.  In this
+-// mode, Recv is the interface value and Method is the index of the
+-// method within the interface type of the receiver.
+-//
+-// Recv is implicitly supplied to the concrete method implementation
+-// as the receiver parameter; in other words, Args[0] holds not the
+-// receiver but the first true argument.  Func is not used in this
+-// mode.
+-//
+-// Example printed form:
+-// 	t1 = invoke t0.String()
+-// 	go invoke t3.Run(t2)
+-// 	defer invoke t4.Handle(...t5)
+-//
+-// In both modes, HasEllipsis is true iff the last element of Args is
+-// a slice value containing zero or more arguments to a variadic
+-// function.  (This is not semantically significant since the type of
+-// the called function is sufficient to determine this, but it aids
+-// readability of the printed form.)
+-//
+-type CallCommon struct {
+-	Recv        Value     // receiver, iff interface method invocation
+-	Method      int       // index of interface method within Recv.Type().(*types.Interface).Methods
+-	Func        Value     // target of call, iff function call
+-	Args        []Value   // actual parameters, including receiver in invoke mode
+-	HasEllipsis bool      // true iff last Args is a slice  (needed?)
+-	Pos         token.Pos // position of call expression
+-}
+-
+-func (v *Builtin) Type() types.Type { return v.Object.GetType() }
+-func (v *Builtin) Name() string     { return v.Object.GetName() }
+-
+-func (v *Capture) Type() types.Type { return v.Outer.Type() }
+-func (v *Capture) Name() string     { return v.Outer.Name() }
+-
+-func (v *Global) Type() types.Type { return v.Type_ }
+-func (v *Global) Name() string     { return v.Name_ }
+-
+-func (v *Function) Name() string     { return v.Name_ }
+-func (v *Function) Type() types.Type { return v.Signature }
+-
+-func (v *Parameter) Type() types.Type { return v.Type_ }
+-func (v *Parameter) Name() string     { return v.Name_ }
+-
+-func (v *Alloc) Type() types.Type { return v.Type_ }
+-func (v *Alloc) Name() string     { return v.Name_ }
+-
+-func (v *Register) Type() types.Type       { return v.Type_ }
+-func (v *Register) setType(typ types.Type) { v.Type_ = typ }
+-func (v *Register) Name() string           { return fmt.Sprintf("t%d", v.num) }
+-func (v *Register) setNum(num int)         { v.num = num }
+-
+-func (v *anInstruction) Block() *BasicBlock         { return v.Block_ }
+-func (v *anInstruction) SetBlock(block *BasicBlock) { v.Block_ = block }
+-
+-func (ms *Type) Type() types.Type { return ms.NamedType }
+-func (ms *Type) String() string   { return ms.Name() }
+-func (ms *Type) Name() string     { return ms.NamedType.Obj.Name }
+-
+-func (p *Package) Name() string { return p.Types.Name }
+-
+-// Func returns the package-level function of the specified name,
+-// or nil if not found.
+-//
+-func (p *Package) Func(name string) (f *Function) {
+-	f, _ = p.Members[name].(*Function)
+-	return
+-}
+-
+-// Var returns the package-level variable of the specified name,
+-// or nil if not found.
+-//
+-func (p *Package) Var(name string) (g *Global) {
+-	g, _ = p.Members[name].(*Global)
+-	return
+-}
+-
+-// Const returns the package-level constant of the specified name,
+-// or nil if not found.
+-//
+-func (p *Package) Const(name string) (l *Literal) {
+-	l, _ = p.Members[name].(*Literal)
+-	return
+-}
+-
+-// Type returns the package-level type of the specified name,
+-// or nil if not found.
+-//
+-func (p *Package) Type(name string) (t *Type) {
+-	t, _ = p.Members[name].(*Type)
+-	return
+-}
+-
+-// "Implements" relation boilerplate.
+-// Don't try to factor this using promotion and mix-ins: the long-hand
+-// form serves as better documentation, including in godoc.
+-
+-func (*Alloc) ImplementsValue()           {}
+-func (*BinOp) ImplementsValue()           {}
+-func (*Builtin) ImplementsValue()         {}
+-func (*Call) ImplementsValue()            {}
+-func (*Capture) ImplementsValue()         {}
+-func (*ChangeInterface) ImplementsValue() {}
+-func (*Conv) ImplementsValue()            {}
+-func (*Extract) ImplementsValue()         {}
+-func (*Field) ImplementsValue()           {}
+-func (*FieldAddr) ImplementsValue()       {}
+-func (*Function) ImplementsValue()        {}
+-func (*Global) ImplementsValue()          {}
+-func (*Index) ImplementsValue()           {}
+-func (*IndexAddr) ImplementsValue()       {}
+-func (*Literal) ImplementsValue()         {}
+-func (*Lookup) ImplementsValue()          {}
+-func (*MakeChan) ImplementsValue()        {}
+-func (*MakeClosure) ImplementsValue()     {}
+-func (*MakeInterface) ImplementsValue()   {}
+-func (*MakeMap) ImplementsValue()         {}
+-func (*MakeSlice) ImplementsValue()       {}
+-func (*Next) ImplementsValue()            {}
+-func (*Parameter) ImplementsValue()       {}
+-func (*Phi) ImplementsValue()             {}
+-func (*Range) ImplementsValue()           {}
+-func (*Select) ImplementsValue()          {}
+-func (*Slice) ImplementsValue()           {}
+-func (*TypeAssert) ImplementsValue()      {}
+-func (*UnOp) ImplementsValue()            {}
+-
+-func (*Function) ImplementsMember() {}
+-func (*Global) ImplementsMember()   {}
+-func (*Literal) ImplementsMember()  {}
+-func (*Type) ImplementsMember()     {}
+-
+-func (*Alloc) ImplementsInstruction()           {}
+-func (*BinOp) ImplementsInstruction()           {}
+-func (*Call) ImplementsInstruction()            {}
+-func (*ChangeInterface) ImplementsInstruction() {}
+-func (*Conv) ImplementsInstruction()            {}
+-func (*Defer) ImplementsInstruction()           {}
+-func (*Extract) ImplementsInstruction()         {}
+-func (*Field) ImplementsInstruction()           {}
+-func (*FieldAddr) ImplementsInstruction()       {}
+-func (*Go) ImplementsInstruction()              {}
+-func (*If) ImplementsInstruction()              {}
+-func (*Index) ImplementsInstruction()           {}
+-func (*IndexAddr) ImplementsInstruction()       {}
+-func (*Jump) ImplementsInstruction()            {}
+-func (*Lookup) ImplementsInstruction()          {}
+-func (*MakeChan) ImplementsInstruction()        {}
+-func (*MakeClosure) ImplementsInstruction()     {}
+-func (*MakeInterface) ImplementsInstruction()   {}
+-func (*MakeMap) ImplementsInstruction()         {}
+-func (*MakeSlice) ImplementsInstruction()       {}
+-func (*MapUpdate) ImplementsInstruction()       {}
+-func (*Next) ImplementsInstruction()            {}
+-func (*Phi) ImplementsInstruction()             {}
+-func (*Range) ImplementsInstruction()           {}
+-func (*Ret) ImplementsInstruction()             {}
+-func (*Select) ImplementsInstruction()          {}
+-func (*Send) ImplementsInstruction()            {}
+-func (*Slice) ImplementsInstruction()           {}
+-func (*Store) ImplementsInstruction()           {}
+-func (*TypeAssert) ImplementsInstruction()      {}
+-func (*UnOp) ImplementsInstruction()            {}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/ssa/util.go gcc-4.8.1/libgo/go/exp/ssa/util.go
+--- gcc-4.8.1.orig/libgo/go/exp/ssa/util.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/ssa/util.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,172 +0,0 @@
+-package ssa
+-
+-// This file defines a number of miscellaneous utility functions.
+-
+-import (
+-	"fmt"
+-	"go/ast"
+-	"go/types"
+-)
+-
+-func unreachable() {
+-	panic("unreachable")
+-}
+-
+-//// AST utilities
+-
+-// noparens returns e with any enclosing parentheses stripped.
+-func noparens(e ast.Expr) ast.Expr {
+-	for {
+-		p, ok := e.(*ast.ParenExpr)
+-		if !ok {
+-			break
+-		}
+-		e = p.X
+-	}
+-	return e
+-}
+-
+-// isBlankIdent returns true iff e is an Ident with name "_".
+-// They have no associated types.Object, and thus no type.
+-//
+-// TODO(gri): consider making typechecker not treat them differently.
+-// It's one less thing for clients like us to worry about.
+-//
+-func isBlankIdent(e ast.Expr) bool {
+-	id, ok := e.(*ast.Ident)
+-	return ok && id.Name == "_"
+-}
+-
+-//// Type utilities.  Some of these belong in go/types.
+-
+-// underlyingType returns the underlying type of typ.
+-// TODO(gri): this is a copy of go/types.underlying; export that function.
+-//
+-func underlyingType(typ types.Type) types.Type {
+-	if typ, ok := typ.(*types.NamedType); ok {
+-		return typ.Underlying // underlying types are never NamedTypes
+-	}
+-	if typ == nil {
+-		panic("underlyingType(nil)")
+-	}
+-	return typ
+-}
+-
+-// isPointer returns true for types whose underlying type is a pointer.
+-func isPointer(typ types.Type) bool {
+-	if nt, ok := typ.(*types.NamedType); ok {
+-		typ = nt.Underlying
+-	}
+-	_, ok := typ.(*types.Pointer)
+-	return ok
+-}
+-
+-// pointer(typ) returns the type that is a pointer to typ.
+-func pointer(typ types.Type) *types.Pointer {
+-	return &types.Pointer{Base: typ}
+-}
+-
+-// indirect(typ) assumes that typ is a pointer type,
+-// or named alias thereof, and returns its base type.
+-// Panic ensures if it is not a pointer.
+-//
+-func indirectType(ptr types.Type) types.Type {
+-	if v, ok := underlyingType(ptr).(*types.Pointer); ok {
+-		return v.Base
+-	}
+-	// When debugging it is convenient to comment out this line
+-	// and let it continue to print the (illegal) SSA form.
+-	panic("indirect() of non-pointer type: " + ptr.String())
+-	return nil
+-}
+-
+-// deref returns a pointer's base type; otherwise it returns typ.
+-func deref(typ types.Type) types.Type {
+-	if typ, ok := underlyingType(typ).(*types.Pointer); ok {
+-		return typ.Base
+-	}
+-	return typ
+-}
+-
+-// methodIndex returns the method (and its index) named id within the
+-// method table methods of named or interface type typ.  If not found,
+-// panic ensues.
+-//
+-func methodIndex(typ types.Type, methods []*types.Method, id Id) (i int, m *types.Method) {
+-	for i, m = range methods {
+-		if IdFromQualifiedName(m.QualifiedName) == id {
+-			return
+-		}
+-	}
+-	panic(fmt.Sprint("method not found: ", id, " in interface ", typ))
+-}
+-
+-// objKind returns the syntactic category of the named entity denoted by obj.
+-func objKind(obj types.Object) ast.ObjKind {
+-	switch obj.(type) {
+-	case *types.Package:
+-		return ast.Pkg
+-	case *types.TypeName:
+-		return ast.Typ
+-	case *types.Const:
+-		return ast.Con
+-	case *types.Var:
+-		return ast.Var
+-	case *types.Func:
+-		return ast.Fun
+-	}
+-	panic(fmt.Sprintf("unexpected Object type: %T", obj))
+-}
+-
+-// DefaultType returns the default "typed" type for an "untyped" type;
+-// it returns the incoming type for all other types. If there is no
+-// corresponding untyped type, the result is types.Typ[types.Invalid].
+-//
+-// Exported to exp/ssa/interp.
+-//
+-// TODO(gri): this is a copy of go/types.defaultType; export that function.
+-//
+-func DefaultType(typ types.Type) types.Type {
+-	if t, ok := typ.(*types.Basic); ok {
+-		k := types.Invalid
+-		switch t.Kind {
+-		// case UntypedNil:
+-		//      There is no default type for nil. For a good error message,
+-		//      catch this case before calling this function.
+-		case types.UntypedBool:
+-			k = types.Bool
+-		case types.UntypedInt:
+-			k = types.Int
+-		case types.UntypedRune:
+-			k = types.Rune
+-		case types.UntypedFloat:
+-			k = types.Float64
+-		case types.UntypedComplex:
+-			k = types.Complex128
+-		case types.UntypedString:
+-			k = types.String
+-		}
+-		typ = types.Typ[k]
+-	}
+-	return typ
+-}
+-
+-// makeId returns the Id (name, pkg) if the name is exported or
+-// (name, nil) otherwise.
+-//
+-func makeId(name string, pkg *types.Package) (id Id) {
+-	id.Name = name
+-	if !ast.IsExported(name) {
+-		id.Pkg = pkg
+-	}
+-	return
+-}
+-
+-// IdFromQualifiedName returns the Id (qn.Name, qn.Pkg) if qn is an
+-// exported name or (qn.Name, nil) otherwise.
+-//
+-// Exported to exp/ssa/interp.
+-//
+-func IdFromQualifiedName(qn types.QualifiedName) Id {
+-	return makeId(qn.Name, qn.Pkg)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/utf8string/string.go gcc-4.8.1/libgo/go/exp/utf8string/string.go
+--- gcc-4.8.1.orig/libgo/go/exp/utf8string/string.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/utf8string/string.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,203 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package utf8string provides an efficient way to index strings by rune rather than by byte.
+-package utf8string
+-
+-import (
+-	"errors"
+-	"unicode/utf8"
+-)
+-
+-// String wraps a regular string with a small structure that provides more
+-// efficient indexing by code point index, as opposed to byte index.
+-// Scanning incrementally forwards or backwards is O(1) per index operation
+-// (although not as fast a range clause going forwards).  Random access is
+-// O(N) in the length of the string, but the overhead is less than always
+-// scanning from the beginning.
+-// If the string is ASCII, random access is O(1).
+-// Unlike the built-in string type, String has internal mutable state and
+-// is not thread-safe.
+-type String struct {
+-	str      string
+-	numRunes int
+-	// If width > 0, the rune at runePos starts at bytePos and has the specified width.
+-	width    int
+-	bytePos  int
+-	runePos  int
+-	nonASCII int // byte index of the first non-ASCII rune.
+-}
+-
+-// NewString returns a new UTF-8 string with the provided contents.
+-func NewString(contents string) *String {
+-	return new(String).Init(contents)
+-}
+-
+-// Init initializes an existing String to hold the provided contents.
+-// It returns a pointer to the initialized String.
+-func (s *String) Init(contents string) *String {
+-	s.str = contents
+-	s.bytePos = 0
+-	s.runePos = 0
+-	for i := 0; i < len(contents); i++ {
+-		if contents[i] >= utf8.RuneSelf {
+-			// Not ASCII.
+-			s.numRunes = utf8.RuneCountInString(contents)
+-			_, s.width = utf8.DecodeRuneInString(contents)
+-			s.nonASCII = i
+-			return s
+-		}
+-	}
+-	// ASCII is simple.  Also, the empty string is ASCII.
+-	s.numRunes = len(contents)
+-	s.width = 0
+-	s.nonASCII = len(contents)
+-	return s
+-}
+-
+-// String returns the contents of the String.  This method also means the
+-// String is directly printable by fmt.Print.
+-func (s *String) String() string {
+-	return s.str
+-}
+-
+-// RuneCount returns the number of runes (Unicode code points) in the String.
+-func (s *String) RuneCount() int {
+-	return s.numRunes
+-}
+-
+-// IsASCII returns a boolean indicating whether the String contains only ASCII bytes.
+-func (s *String) IsASCII() bool {
+-	return s.width == 0
+-}
+-
+-// Slice returns the string sliced at rune positions [i:j].
+-func (s *String) Slice(i, j int) string {
+-	// ASCII is easy.  Let the compiler catch the indexing error if there is one.
+-	if j < s.nonASCII {
+-		return s.str[i:j]
+-	}
+-	if i < 0 || j > s.numRunes || i > j {
+-		panic(sliceOutOfRange)
+-	}
+-	if i == j {
+-		return ""
+-	}
+-	// For non-ASCII, after At(i), bytePos is always the position of the indexed character.
+-	var low, high int
+-	switch {
+-	case i < s.nonASCII:
+-		low = i
+-	case i == s.numRunes:
+-		low = len(s.str)
+-	default:
+-		s.At(i)
+-		low = s.bytePos
+-	}
+-	switch {
+-	case j == s.numRunes:
+-		high = len(s.str)
+-	default:
+-		s.At(j)
+-		high = s.bytePos
+-	}
+-	return s.str[low:high]
+-}
+-
+-// At returns the rune with index i in the String.  The sequence of runes is the same
+-// as iterating over the contents with a "for range" clause.
+-func (s *String) At(i int) rune {
+-	// ASCII is easy.  Let the compiler catch the indexing error if there is one.
+-	if i < s.nonASCII {
+-		return rune(s.str[i])
+-	}
+-
+-	// Now we do need to know the index is valid.
+-	if i < 0 || i >= s.numRunes {
+-		panic(outOfRange)
+-	}
+-
+-	var r rune
+-
+-	// Five easy common cases: within 1 spot of bytePos/runePos, or the beginning, or the end.
+-	// With these cases, all scans from beginning or end work in O(1) time per rune.
+-	switch {
+-
+-	case i == s.runePos-1: // backing up one rune
+-		r, s.width = utf8.DecodeLastRuneInString(s.str[0:s.bytePos])
+-		s.runePos = i
+-		s.bytePos -= s.width
+-		return r
+-	case i == s.runePos+1: // moving ahead one rune
+-		s.runePos = i
+-		s.bytePos += s.width
+-		fallthrough
+-	case i == s.runePos:
+-		r, s.width = utf8.DecodeRuneInString(s.str[s.bytePos:])
+-		return r
+-	case i == 0: // start of string
+-		r, s.width = utf8.DecodeRuneInString(s.str)
+-		s.runePos = 0
+-		s.bytePos = 0
+-		return r
+-
+-	case i == s.numRunes-1: // last rune in string
+-		r, s.width = utf8.DecodeLastRuneInString(s.str)
+-		s.runePos = i
+-		s.bytePos = len(s.str) - s.width
+-		return r
+-	}
+-
+-	// We need to do a linear scan.  There are three places to start from:
+-	// 1) The beginning
+-	// 2) bytePos/runePos.
+-	// 3) The end
+-	// Choose the closest in rune count, scanning backwards if necessary.
+-	forward := true
+-	if i < s.runePos {
+-		// Between beginning and pos.  Which is closer?
+-		// Since both i and runePos are guaranteed >= nonASCII, that's the
+-		// lowest location we need to start from.
+-		if i < (s.runePos-s.nonASCII)/2 {
+-			// Scan forward from beginning
+-			s.bytePos, s.runePos = s.nonASCII, s.nonASCII
+-		} else {
+-			// Scan backwards from where we are
+-			forward = false
+-		}
+-	} else {
+-		// Between pos and end.  Which is closer?
+-		if i-s.runePos < (s.numRunes-s.runePos)/2 {
+-			// Scan forward from pos
+-		} else {
+-			// Scan backwards from end
+-			s.bytePos, s.runePos = len(s.str), s.numRunes
+-			forward = false
+-		}
+-	}
+-	if forward {
+-		// TODO: Is it much faster to use a range loop for this scan?
+-		for {
+-			r, s.width = utf8.DecodeRuneInString(s.str[s.bytePos:])
+-			if s.runePos == i {
+-				break
+-			}
+-			s.runePos++
+-			s.bytePos += s.width
+-		}
+-	} else {
+-		for {
+-			r, s.width = utf8.DecodeLastRuneInString(s.str[0:s.bytePos])
+-			s.runePos--
+-			s.bytePos -= s.width
+-			if s.runePos == i {
+-				break
+-			}
+-		}
+-	}
+-	return r
+-}
+-
+-var outOfRange = errors.New("utf8.String: index out of range")
+-var sliceOutOfRange = errors.New("utf8.String: slice index out of range")
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/utf8string/string_test.go gcc-4.8.1/libgo/go/exp/utf8string/string_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/utf8string/string_test.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/utf8string/string_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,123 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package utf8string
+-
+-import (
+-	"math/rand"
+-	"testing"
+-	"unicode/utf8"
+-)
+-
+-var testStrings = []string{
+-	"",
+-	"abcd",
+-	"âºâ»â¹",
+-	"æ¥aæ¬bèªÃ§æ¥Ã°æ¬ÃèªÃŸæ¥Â¥æ¬ÂŒèªiæ¥Â©",
+-	"æ¥aæ¬bèªÃ§æ¥Ã°æ¬ÃèªÃŸæ¥Â¥æ¬ÂŒèªiæ¥Â©æ¥aæ¬bèªÃ§æ¥Ã°æ¬ÃèªÃŸæ¥Â¥æ¬ÂŒèªiæ¥Â©æ¥aæ¬bèªÃ§æ¥Ã°æ¬ÃèªÃŸæ¥Â¥æ¬ÂŒèªiæ¥Â©",
+-	"\x80\x80\x80\x80",
+-}
+-
+-func TestScanForwards(t *testing.T) {
+-	for _, s := range testStrings {
+-		runes := []rune(s)
+-		str := NewString(s)
+-		if str.RuneCount() != len(runes) {
+-			t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())
+-			break
+-		}
+-		for i, expect := range runes {
+-			got := str.At(i)
+-			if got != expect {
+-				t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)
+-			}
+-		}
+-	}
+-}
+-
+-func TestScanBackwards(t *testing.T) {
+-	for _, s := range testStrings {
+-		runes := []rune(s)
+-		str := NewString(s)
+-		if str.RuneCount() != len(runes) {
+-			t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())
+-			break
+-		}
+-		for i := len(runes) - 1; i >= 0; i-- {
+-			expect := runes[i]
+-			got := str.At(i)
+-			if got != expect {
+-				t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)
+-			}
+-		}
+-	}
+-}
+-
+-func randCount() int {
+-	if testing.Short() {
+-		return 100
+-	}
+-	return 100000
+-}
+-
+-func TestRandomAccess(t *testing.T) {
+-	for _, s := range testStrings {
+-		if len(s) == 0 {
+-			continue
+-		}
+-		runes := []rune(s)
+-		str := NewString(s)
+-		if str.RuneCount() != len(runes) {
+-			t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())
+-			break
+-		}
+-		for j := 0; j < randCount(); j++ {
+-			i := rand.Intn(len(runes))
+-			expect := runes[i]
+-			got := str.At(i)
+-			if got != expect {
+-				t.Errorf("%s[%d]: expected %c (%U); got %c (%U)", s, i, expect, expect, got, got)
+-			}
+-		}
+-	}
+-}
+-
+-func TestRandomSliceAccess(t *testing.T) {
+-	for _, s := range testStrings {
+-		if len(s) == 0 || s[0] == '\x80' { // the bad-UTF-8 string fools this simple test
+-			continue
+-		}
+-		runes := []rune(s)
+-		str := NewString(s)
+-		if str.RuneCount() != len(runes) {
+-			t.Errorf("%s: expected %d runes; got %d", s, len(runes), str.RuneCount())
+-			break
+-		}
+-		for k := 0; k < randCount(); k++ {
+-			i := rand.Intn(len(runes))
+-			j := rand.Intn(len(runes) + 1)
+-			if i > j { // include empty strings
+-				continue
+-			}
+-			expect := string(runes[i:j])
+-			got := str.Slice(i, j)
+-			if got != expect {
+-				t.Errorf("%s[%d:%d]: expected %q got %q", s, i, j, expect, got)
+-			}
+-		}
+-	}
+-}
+-
+-func TestLimitSliceAccess(t *testing.T) {
+-	for _, s := range testStrings {
+-		str := NewString(s)
+-		if str.Slice(0, 0) != "" {
+-			t.Error("failure with empty slice at beginning")
+-		}
+-		nr := utf8.RuneCountInString(s)
+-		if str.Slice(nr, nr) != "" {
+-			t.Error("failure with empty slice at end")
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/winfsnotify/winfsnotify.go gcc-4.8.1/libgo/go/exp/winfsnotify/winfsnotify.go
+--- gcc-4.8.1.orig/libgo/go/exp/winfsnotify/winfsnotify.go	2012-01-12 23:11:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/winfsnotify/winfsnotify.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,572 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build windows
+-
+-// Package winfsnotify allows the user to receive
+-// file system event notifications on Windows.
+-package winfsnotify
+-
+-import (
+-	"errors"
+-	"fmt"
+-	"os"
+-	"path/filepath"
+-	"runtime"
+-	"syscall"
+-	"unsafe"
+-)
+-
+-// Event is the type of the notification messages
+-// received on the watcher's Event channel.
+-type Event struct {
+-	Mask   uint32 // Mask of events
+-	Cookie uint32 // Unique cookie associating related events (for rename)
+-	Name   string // File name (optional)
+-}
+-
+-const (
+-	opAddWatch = iota
+-	opRemoveWatch
+-)
+-
+-const (
+-	provisional uint64 = 1 << (32 + iota)
+-)
+-
+-type input struct {
+-	op    int
+-	path  string
+-	flags uint32
+-	reply chan error
+-}
+-
+-type inode struct {
+-	handle syscall.Handle
+-	volume uint32
+-	index  uint64
+-}
+-
+-type watch struct {
+-	ov     syscall.Overlapped
+-	ino    *inode            // i-number
+-	path   string            // Directory path
+-	mask   uint64            // Directory itself is being watched with these notify flags
+-	names  map[string]uint64 // Map of names being watched and their notify flags
+-	rename string            // Remembers the old name while renaming a file
+-	buf    [4096]byte
+-}
+-
+-type indexMap map[uint64]*watch
+-type watchMap map[uint32]indexMap
+-
+-// A Watcher waits for and receives event notifications
+-// for a specific set of files and directories.
+-type Watcher struct {
+-	port     syscall.Handle // Handle to completion port
+-	watches  watchMap       // Map of watches (key: i-number)
+-	input    chan *input    // Inputs to the reader are sent on this channel
+-	Event    chan *Event    // Events are returned on this channel
+-	Error    chan error     // Errors are sent on this channel
+-	isClosed bool           // Set to true when Close() is first called
+-	quit     chan chan<- error
+-	cookie   uint32
+-}
+-
+-// NewWatcher creates and returns a Watcher.
+-func NewWatcher() (*Watcher, error) {
+-	port, e := syscall.CreateIoCompletionPort(syscall.InvalidHandle, 0, 0, 0)
+-	if e != nil {
+-		return nil, os.NewSyscallError("CreateIoCompletionPort", e)
+-	}
+-	w := &Watcher{
+-		port:    port,
+-		watches: make(watchMap),
+-		input:   make(chan *input, 1),
+-		Event:   make(chan *Event, 50),
+-		Error:   make(chan error),
+-		quit:    make(chan chan<- error, 1),
+-	}
+-	go w.readEvents()
+-	return w, nil
+-}
+-
+-// Close closes a Watcher.
+-// It sends a message to the reader goroutine to quit and removes all watches
+-// associated with the watcher.
+-func (w *Watcher) Close() error {
+-	if w.isClosed {
+-		return nil
+-	}
+-	w.isClosed = true
+-
+-	// Send "quit" message to the reader goroutine
+-	ch := make(chan error)
+-	w.quit <- ch
+-	if err := w.wakeupReader(); err != nil {
+-		return err
+-	}
+-	return <-ch
+-}
+-
+-// AddWatch adds path to the watched file set.
+-func (w *Watcher) AddWatch(path string, flags uint32) error {
+-	if w.isClosed {
+-		return errors.New("watcher already closed")
+-	}
+-	in := &input{
+-		op:    opAddWatch,
+-		path:  filepath.Clean(path),
+-		flags: flags,
+-		reply: make(chan error),
+-	}
+-	w.input <- in
+-	if err := w.wakeupReader(); err != nil {
+-		return err
+-	}
+-	return <-in.reply
+-}
+-
+-// Watch adds path to the watched file set, watching all events.
+-func (w *Watcher) Watch(path string) error {
+-	return w.AddWatch(path, FS_ALL_EVENTS)
+-}
+-
+-// RemoveWatch removes path from the watched file set.
+-func (w *Watcher) RemoveWatch(path string) error {
+-	in := &input{
+-		op:    opRemoveWatch,
+-		path:  filepath.Clean(path),
+-		reply: make(chan error),
+-	}
+-	w.input <- in
+-	if err := w.wakeupReader(); err != nil {
+-		return err
+-	}
+-	return <-in.reply
+-}
+-
+-func (w *Watcher) wakeupReader() error {
+-	e := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil)
+-	if e != nil {
+-		return os.NewSyscallError("PostQueuedCompletionStatus", e)
+-	}
+-	return nil
+-}
+-
+-func getDir(pathname string) (dir string, err error) {
+-	attr, e := syscall.GetFileAttributes(syscall.StringToUTF16Ptr(pathname))
+-	if e != nil {
+-		return "", os.NewSyscallError("GetFileAttributes", e)
+-	}
+-	if attr&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 {
+-		dir = pathname
+-	} else {
+-		dir, _ = filepath.Split(pathname)
+-		dir = filepath.Clean(dir)
+-	}
+-	return
+-}
+-
+-func getIno(path string) (ino *inode, err error) {
+-	h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(path),
+-		syscall.FILE_LIST_DIRECTORY,
+-		syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
+-		nil, syscall.OPEN_EXISTING,
+-		syscall.FILE_FLAG_BACKUP_SEMANTICS|syscall.FILE_FLAG_OVERLAPPED, 0)
+-	if e != nil {
+-		return nil, os.NewSyscallError("CreateFile", e)
+-	}
+-	var fi syscall.ByHandleFileInformation
+-	if e = syscall.GetFileInformationByHandle(h, &fi); e != nil {
+-		syscall.CloseHandle(h)
+-		return nil, os.NewSyscallError("GetFileInformationByHandle", e)
+-	}
+-	ino = &inode{
+-		handle: h,
+-		volume: fi.VolumeSerialNumber,
+-		index:  uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow),
+-	}
+-	return ino, nil
+-}
+-
+-// Must run within the I/O thread.
+-func (m watchMap) get(ino *inode) *watch {
+-	if i := m[ino.volume]; i != nil {
+-		return i[ino.index]
+-	}
+-	return nil
+-}
+-
+-// Must run within the I/O thread.
+-func (m watchMap) set(ino *inode, watch *watch) {
+-	i := m[ino.volume]
+-	if i == nil {
+-		i = make(indexMap)
+-		m[ino.volume] = i
+-	}
+-	i[ino.index] = watch
+-}
+-
+-// Must run within the I/O thread.
+-func (w *Watcher) addWatch(pathname string, flags uint64) error {
+-	dir, err := getDir(pathname)
+-	if err != nil {
+-		return err
+-	}
+-	if flags&FS_ONLYDIR != 0 && pathname != dir {
+-		return nil
+-	}
+-	ino, err := getIno(dir)
+-	if err != nil {
+-		return err
+-	}
+-	watchEntry := w.watches.get(ino)
+-	if watchEntry == nil {
+-		if _, e := syscall.CreateIoCompletionPort(ino.handle, w.port, 0, 0); e != nil {
+-			syscall.CloseHandle(ino.handle)
+-			return os.NewSyscallError("CreateIoCompletionPort", e)
+-		}
+-		watchEntry = &watch{
+-			ino:   ino,
+-			path:  dir,
+-			names: make(map[string]uint64),
+-		}
+-		w.watches.set(ino, watchEntry)
+-		flags |= provisional
+-	} else {
+-		syscall.CloseHandle(ino.handle)
+-	}
+-	if pathname == dir {
+-		watchEntry.mask |= flags
+-	} else {
+-		watchEntry.names[filepath.Base(pathname)] |= flags
+-	}
+-	if err = w.startRead(watchEntry); err != nil {
+-		return err
+-	}
+-	if pathname == dir {
+-		watchEntry.mask &= ^provisional
+-	} else {
+-		watchEntry.names[filepath.Base(pathname)] &= ^provisional
+-	}
+-	return nil
+-}
+-
+-// Must run within the I/O thread.
+-func (w *Watcher) removeWatch(pathname string) error {
+-	dir, err := getDir(pathname)
+-	if err != nil {
+-		return err
+-	}
+-	ino, err := getIno(dir)
+-	if err != nil {
+-		return err
+-	}
+-	watch := w.watches.get(ino)
+-	if watch == nil {
+-		return fmt.Errorf("can't remove non-existent watch for: %s", pathname)
+-	}
+-	if pathname == dir {
+-		w.sendEvent(watch.path, watch.mask&FS_IGNORED)
+-		watch.mask = 0
+-	} else {
+-		name := filepath.Base(pathname)
+-		w.sendEvent(watch.path+"/"+name, watch.names[name]&FS_IGNORED)
+-		delete(watch.names, name)
+-	}
+-	return w.startRead(watch)
+-}
+-
+-// Must run within the I/O thread.
+-func (w *Watcher) deleteWatch(watch *watch) {
+-	for name, mask := range watch.names {
+-		if mask&provisional == 0 {
+-			w.sendEvent(watch.path+"/"+name, mask&FS_IGNORED)
+-		}
+-		delete(watch.names, name)
+-	}
+-	if watch.mask != 0 {
+-		if watch.mask&provisional == 0 {
+-			w.sendEvent(watch.path, watch.mask&FS_IGNORED)
+-		}
+-		watch.mask = 0
+-	}
+-}
+-
+-// Must run within the I/O thread.
+-func (w *Watcher) startRead(watch *watch) error {
+-	if e := syscall.CancelIo(watch.ino.handle); e != nil {
+-		w.Error <- os.NewSyscallError("CancelIo", e)
+-		w.deleteWatch(watch)
+-	}
+-	mask := toWindowsFlags(watch.mask)
+-	for _, m := range watch.names {
+-		mask |= toWindowsFlags(m)
+-	}
+-	if mask == 0 {
+-		if e := syscall.CloseHandle(watch.ino.handle); e != nil {
+-			w.Error <- os.NewSyscallError("CloseHandle", e)
+-		}
+-		delete(w.watches[watch.ino.volume], watch.ino.index)
+-		return nil
+-	}
+-	e := syscall.ReadDirectoryChanges(watch.ino.handle, &watch.buf[0],
+-		uint32(unsafe.Sizeof(watch.buf)), false, mask, nil, &watch.ov, 0)
+-	if e != nil {
+-		err := os.NewSyscallError("ReadDirectoryChanges", e)
+-		if e == syscall.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 {
+-			// Watched directory was probably removed
+-			if w.sendEvent(watch.path, watch.mask&FS_DELETE_SELF) {
+-				if watch.mask&FS_ONESHOT != 0 {
+-					watch.mask = 0
+-				}
+-			}
+-			err = nil
+-		}
+-		w.deleteWatch(watch)
+-		w.startRead(watch)
+-		return err
+-	}
+-	return nil
+-}
+-
+-// readEvents reads from the I/O completion port, converts the
+-// received events into Event objects and sends them via the Event channel.
+-// Entry point to the I/O thread.
+-func (w *Watcher) readEvents() {
+-	var (
+-		n, key uint32
+-		ov     *syscall.Overlapped
+-	)
+-	runtime.LockOSThread()
+-
+-	for {
+-		e := syscall.GetQueuedCompletionStatus(w.port, &n, &key, &ov, syscall.INFINITE)
+-		watch := (*watch)(unsafe.Pointer(ov))
+-
+-		if watch == nil {
+-			select {
+-			case ch := <-w.quit:
+-				for _, index := range w.watches {
+-					for _, watch := range index {
+-						w.deleteWatch(watch)
+-						w.startRead(watch)
+-					}
+-				}
+-				var err error
+-				if e := syscall.CloseHandle(w.port); e != nil {
+-					err = os.NewSyscallError("CloseHandle", e)
+-				}
+-				close(w.Event)
+-				close(w.Error)
+-				ch <- err
+-				return
+-			case in := <-w.input:
+-				switch in.op {
+-				case opAddWatch:
+-					in.reply <- w.addWatch(in.path, uint64(in.flags))
+-				case opRemoveWatch:
+-					in.reply <- w.removeWatch(in.path)
+-				}
+-			default:
+-			}
+-			continue
+-		}
+-
+-		switch e {
+-		case syscall.ERROR_ACCESS_DENIED:
+-			// Watched directory was probably removed
+-			w.sendEvent(watch.path, watch.mask&FS_DELETE_SELF)
+-			w.deleteWatch(watch)
+-			w.startRead(watch)
+-			continue
+-		case syscall.ERROR_OPERATION_ABORTED:
+-			// CancelIo was called on this handle
+-			continue
+-		default:
+-			w.Error <- os.NewSyscallError("GetQueuedCompletionPort", e)
+-			continue
+-		case nil:
+-		}
+-
+-		var offset uint32
+-		for {
+-			if n == 0 {
+-				w.Event <- &Event{Mask: FS_Q_OVERFLOW}
+-				w.Error <- errors.New("short read in readEvents()")
+-				break
+-			}
+-
+-			// Point "raw" to the event in the buffer
+-			raw := (*syscall.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset]))
+-			buf := (*[syscall.MAX_PATH]uint16)(unsafe.Pointer(&raw.FileName))
+-			name := syscall.UTF16ToString(buf[:raw.FileNameLength/2])
+-			fullname := watch.path + "/" + name
+-
+-			var mask uint64
+-			switch raw.Action {
+-			case syscall.FILE_ACTION_REMOVED:
+-				mask = FS_DELETE_SELF
+-			case syscall.FILE_ACTION_MODIFIED:
+-				mask = FS_MODIFY
+-			case syscall.FILE_ACTION_RENAMED_OLD_NAME:
+-				watch.rename = name
+-			case syscall.FILE_ACTION_RENAMED_NEW_NAME:
+-				if watch.names[watch.rename] != 0 {
+-					watch.names[name] |= watch.names[watch.rename]
+-					delete(watch.names, watch.rename)
+-					mask = FS_MOVE_SELF
+-				}
+-			}
+-
+-			sendNameEvent := func() {
+-				if w.sendEvent(fullname, watch.names[name]&mask) {
+-					if watch.names[name]&FS_ONESHOT != 0 {
+-						delete(watch.names, name)
+-					}
+-				}
+-			}
+-			if raw.Action != syscall.FILE_ACTION_RENAMED_NEW_NAME {
+-				sendNameEvent()
+-			}
+-			if raw.Action == syscall.FILE_ACTION_REMOVED {
+-				w.sendEvent(fullname, watch.names[name]&FS_IGNORED)
+-				delete(watch.names, name)
+-			}
+-			if w.sendEvent(fullname, watch.mask&toFSnotifyFlags(raw.Action)) {
+-				if watch.mask&FS_ONESHOT != 0 {
+-					watch.mask = 0
+-				}
+-			}
+-			if raw.Action == syscall.FILE_ACTION_RENAMED_NEW_NAME {
+-				fullname = watch.path + "/" + watch.rename
+-				sendNameEvent()
+-			}
+-
+-			// Move to the next event in the buffer
+-			if raw.NextEntryOffset == 0 {
+-				break
+-			}
+-			offset += raw.NextEntryOffset
+-		}
+-
+-		if err := w.startRead(watch); err != nil {
+-			w.Error <- err
+-		}
+-	}
+-}
+-
+-func (w *Watcher) sendEvent(name string, mask uint64) bool {
+-	if mask == 0 {
+-		return false
+-	}
+-	event := &Event{Mask: uint32(mask), Name: name}
+-	if mask&FS_MOVE != 0 {
+-		if mask&FS_MOVED_FROM != 0 {
+-			w.cookie++
+-		}
+-		event.Cookie = w.cookie
+-	}
+-	select {
+-	case ch := <-w.quit:
+-		w.quit <- ch
+-	case w.Event <- event:
+-	}
+-	return true
+-}
+-
+-// String formats the event e in the form
+-// "filename: 0xEventMask = FS_ACCESS|FS_ATTRIB_|..."
+-func (e *Event) String() string {
+-	var events string
+-	m := e.Mask
+-	for _, b := range eventBits {
+-		if m&b.Value != 0 {
+-			m &^= b.Value
+-			events += "|" + b.Name
+-		}
+-	}
+-	if m != 0 {
+-		events += fmt.Sprintf("|%#x", m)
+-	}
+-	if len(events) > 0 {
+-		events = " == " + events[1:]
+-	}
+-	return fmt.Sprintf("%q: %#x%s", e.Name, e.Mask, events)
+-}
+-
+-func toWindowsFlags(mask uint64) uint32 {
+-	var m uint32
+-	if mask&FS_ACCESS != 0 {
+-		m |= syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS
+-	}
+-	if mask&FS_MODIFY != 0 {
+-		m |= syscall.FILE_NOTIFY_CHANGE_LAST_WRITE
+-	}
+-	if mask&FS_ATTRIB != 0 {
+-		m |= syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES
+-	}
+-	if mask&(FS_MOVE|FS_CREATE|FS_DELETE) != 0 {
+-		m |= syscall.FILE_NOTIFY_CHANGE_FILE_NAME | syscall.FILE_NOTIFY_CHANGE_DIR_NAME
+-	}
+-	return m
+-}
+-
+-func toFSnotifyFlags(action uint32) uint64 {
+-	switch action {
+-	case syscall.FILE_ACTION_ADDED:
+-		return FS_CREATE
+-	case syscall.FILE_ACTION_REMOVED:
+-		return FS_DELETE
+-	case syscall.FILE_ACTION_MODIFIED:
+-		return FS_MODIFY
+-	case syscall.FILE_ACTION_RENAMED_OLD_NAME:
+-		return FS_MOVED_FROM
+-	case syscall.FILE_ACTION_RENAMED_NEW_NAME:
+-		return FS_MOVED_TO
+-	}
+-	return 0
+-}
+-
+-const (
+-	// Options for AddWatch
+-	FS_ONESHOT = 0x80000000
+-	FS_ONLYDIR = 0x1000000
+-
+-	// Events
+-	FS_ACCESS      = 0x1
+-	FS_ALL_EVENTS  = 0xfff
+-	FS_ATTRIB      = 0x4
+-	FS_CLOSE       = 0x18
+-	FS_CREATE      = 0x100
+-	FS_DELETE      = 0x200
+-	FS_DELETE_SELF = 0x400
+-	FS_MODIFY      = 0x2
+-	FS_MOVE        = 0xc0
+-	FS_MOVED_FROM  = 0x40
+-	FS_MOVED_TO    = 0x80
+-	FS_MOVE_SELF   = 0x800
+-
+-	// Special events
+-	FS_IGNORED    = 0x8000
+-	FS_Q_OVERFLOW = 0x4000
+-)
+-
+-var eventBits = []struct {
+-	Value uint32
+-	Name  string
+-}{
+-	{FS_ACCESS, "FS_ACCESS"},
+-	{FS_ATTRIB, "FS_ATTRIB"},
+-	{FS_CREATE, "FS_CREATE"},
+-	{FS_DELETE, "FS_DELETE"},
+-	{FS_DELETE_SELF, "FS_DELETE_SELF"},
+-	{FS_MODIFY, "FS_MODIFY"},
+-	{FS_MOVED_FROM, "FS_MOVED_FROM"},
+-	{FS_MOVED_TO, "FS_MOVED_TO"},
+-	{FS_MOVE_SELF, "FS_MOVE_SELF"},
+-	{FS_IGNORED, "FS_IGNORED"},
+-	{FS_Q_OVERFLOW, "FS_Q_OVERFLOW"},
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/exp/winfsnotify/winfsnotify_test.go gcc-4.8.1/libgo/go/exp/winfsnotify/winfsnotify_test.go
+--- gcc-4.8.1.orig/libgo/go/exp/winfsnotify/winfsnotify_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/exp/winfsnotify/winfsnotify_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,130 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build windows
+-
+-package winfsnotify
+-
+-import (
+-	"io/ioutil"
+-	"os"
+-	"sync/atomic"
+-	"testing"
+-	"time"
+-)
+-
+-func expect(t *testing.T, eventstream <-chan *Event, name string, mask uint32) {
+-	t.Logf(`expected: "%s": 0x%x`, name, mask)
+-	select {
+-	case event := <-eventstream:
+-		if event == nil {
+-			t.Fatal("nil event received")
+-		}
+-		t.Logf("received: %s", event)
+-		if event.Name != name || event.Mask != mask {
+-			t.Fatal("did not receive expected event")
+-		}
+-	case <-time.After(1 * time.Second):
+-		t.Fatal("timed out waiting for event")
+-	}
+-}
+-
+-func TestNotifyEvents(t *testing.T) {
+-	watcher, err := NewWatcher()
+-	if err != nil {
+-		t.Fatalf("NewWatcher() failed: %s", err)
+-	}
+-
+-	testDir := "TestNotifyEvents.testdirectory"
+-	testFile := testDir + "/TestNotifyEvents.testfile"
+-	testFile2 := testFile + ".new"
+-	const mask = FS_ALL_EVENTS & ^(FS_ATTRIB|FS_CLOSE) | FS_IGNORED
+-
+-	// Add a watch for testDir
+-	os.RemoveAll(testDir)
+-	if err = os.Mkdir(testDir, 0777); err != nil {
+-		t.Fatalf("Failed to create test directory: %s", err)
+-	}
+-	defer os.RemoveAll(testDir)
+-	err = watcher.AddWatch(testDir, mask)
+-	if err != nil {
+-		t.Fatalf("Watcher.Watch() failed: %s", err)
+-	}
+-
+-	// Receive errors on the error channel on a separate goroutine
+-	go func() {
+-		for err := range watcher.Error {
+-			t.Fatalf("error received: %s", err)
+-		}
+-	}()
+-
+-	// Create a file
+-	file, err := os.Create(testFile)
+-	if err != nil {
+-		t.Fatalf("creating test file failed: %s", err)
+-	}
+-	expect(t, watcher.Event, testFile, FS_CREATE)
+-
+-	err = watcher.AddWatch(testFile, mask)
+-	if err != nil {
+-		t.Fatalf("Watcher.Watch() failed: %s", err)
+-	}
+-
+-	if _, err = file.WriteString("hello, world"); err != nil {
+-		t.Fatalf("failed to write to test file: %s", err)
+-	}
+-	if err = file.Close(); err != nil {
+-		t.Fatalf("failed to close test file: %s", err)
+-	}
+-	expect(t, watcher.Event, testFile, FS_MODIFY)
+-	expect(t, watcher.Event, testFile, FS_MODIFY)
+-
+-	if err = os.Rename(testFile, testFile2); err != nil {
+-		t.Fatalf("failed to rename test file: %s", err)
+-	}
+-	expect(t, watcher.Event, testFile, FS_MOVED_FROM)
+-	expect(t, watcher.Event, testFile2, FS_MOVED_TO)
+-	expect(t, watcher.Event, testFile, FS_MOVE_SELF)
+-
+-	if err = os.RemoveAll(testDir); err != nil {
+-		t.Fatalf("failed to remove test directory: %s", err)
+-	}
+-	expect(t, watcher.Event, testFile2, FS_DELETE_SELF)
+-	expect(t, watcher.Event, testFile2, FS_IGNORED)
+-	expect(t, watcher.Event, testFile2, FS_DELETE)
+-	expect(t, watcher.Event, testDir, FS_DELETE_SELF)
+-	expect(t, watcher.Event, testDir, FS_IGNORED)
+-
+-	t.Log("calling Close()")
+-	if err = watcher.Close(); err != nil {
+-		t.Fatalf("failed to close watcher: %s", err)
+-	}
+-}
+-
+-func TestNotifyClose(t *testing.T) {
+-	watcher, _ := NewWatcher()
+-	watcher.Close()
+-
+-	var done int32
+-	go func() {
+-		watcher.Close()
+-		atomic.StoreInt32(&done, 1)
+-	}()
+-
+-	time.Sleep(50 * time.Millisecond)
+-	if atomic.LoadInt32(&done) == 0 {
+-		t.Fatal("double Close() test failed: second Close() call didn't return")
+-	}
+-
+-	dir, err := ioutil.TempDir("", "wininotify")
+-	if err != nil {
+-		t.Fatalf("TempDir failed: %s", err)
+-	}
+-	defer os.RemoveAll(dir)
+-
+-	err = watcher.Watch(dir)
+-	if err == nil {
+-		t.Fatal("expected error on Watch() after Close(), got nil")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/fmt/doc.go gcc-4.8.1/libgo/go/fmt/doc.go
+--- gcc-4.8.1.orig/libgo/go/fmt/doc.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/fmt/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -74,7 +74,8 @@
+ 		-	pad with spaces on the right rather than the left (left-justify the field)
+ 		#	alternate format: add leading 0 for octal (%#o), 0x for hex (%#x);
+ 			0X for hex (%#X); suppress 0x for %p (%#p);
+-			print a raw (backquoted) string if possible for %q (%#q);
++			for %q, print a raw (backquoted) string if strconv.CanBackquote
++			returns true;
+ 			write e.g. U+0078 'x' if the character is printable for %U (%#U).
+ 		' '	(space) leave a space for elided sign in numbers (% d);
+ 			put spaces between bytes printing strings or slices in hex (% x, % X)
+@@ -137,6 +138,16 @@
+ 	by a single character (the verb) and end with a parenthesized
+ 	description.
+ 
++	If an Error or String method triggers a panic when called by a
++	print routine, the fmt package reformats the error message
++	from the panic, decorating it with an indication that it came
++	through the fmt package.  For example, if a String method
++	calls panic("bad"), the resulting formatted message will look
++	like
++		%s(PANIC=bad)
++
++	The %s just shows the print verb in use when the failure
++	occurred.
+ 
+ 	Scanning
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/fmt/fmt_test.go gcc-4.8.1/libgo/go/fmt/fmt_test.go
+--- gcc-4.8.1.orig/libgo/go/fmt/fmt_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/fmt/fmt_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,7 +9,7 @@
+ 	. "fmt"
+ 	"io"
+ 	"math"
+-	"runtime" // for the malloc count test only
++	"runtime"
+ 	"strings"
+ 	"testing"
+ 	"time"
+@@ -105,6 +105,9 @@
+ 	return "String(p)"
+ }
+ 
++var barray = [5]renamedUint8{1, 2, 3, 4, 5}
++var bslice = barray[:]
++
+ var b byte
+ 
+ var fmttests = []struct {
+@@ -176,6 +179,8 @@
+ 	{"%.3q", "æ¥æ¬èªæ¥æ¬èª", `"æ¥æ¬èª"`},
+ 	{"%.3q", []byte("æ¥æ¬èªæ¥æ¬èª"), `"æ¥æ¬èª"`},
+ 	{"%10.1q", "æ¥æ¬èªæ¥æ¬èª", `       "æ¥"`},
++	{"%10v", nil, "     <nil>"},
++	{"%-10v", nil, "<nil>     "},
+ 
+ 	// integers
+ 	{"%d", 12345, "12345"},
+@@ -332,14 +337,18 @@
+ 	// arrays
+ 	{"%v", array, "[1 2 3 4 5]"},
+ 	{"%v", iarray, "[1 hello 2.5 <nil>]"},
++	{"%v", barray, "[1 2 3 4 5]"},
+ 	{"%v", &array, "&[1 2 3 4 5]"},
+ 	{"%v", &iarray, "&[1 hello 2.5 <nil>]"},
++	{"%v", &barray, "&[1 2 3 4 5]"},
+ 
+ 	// slices
+ 	{"%v", slice, "[1 2 3 4 5]"},
+ 	{"%v", islice, "[1 hello 2.5 <nil>]"},
++	{"%v", bslice, "[1 2 3 4 5]"},
+ 	{"%v", &slice, "&[1 2 3 4 5]"},
+ 	{"%v", &islice, "&[1 hello 2.5 <nil>]"},
++	{"%v", &bslice, "&[1 2 3 4 5]"},
+ 
+ 	// complexes with %v
+ 	{"%v", 1 + 2i, "(1+2i)"},
+@@ -382,6 +391,8 @@
+ 	{"%#v", map[int]byte(nil), `map[int]uint8(nil)`},
+ 	{"%#v", map[int]byte{}, `map[int]uint8{}`},
+ 	{"%#v", "foo", `"foo"`},
++	{"%#v", barray, `[5]fmt_test.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`},
++	{"%#v", bslice, `[]fmt_test.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`},
+ 
+ 	// slices with other formats
+ 	{"%#x", []int{1, 2, 15}, `[0x1 0x2 0xf]`},
+@@ -407,6 +418,9 @@
+ 	{"%x", renamedString("thing"), "7468696e67"},
+ 	{"%d", renamedBytes([]byte{1, 2, 15}), `[1 2 15]`},
+ 	{"%q", renamedBytes([]byte("hello")), `"hello"`},
++	{"%x", []renamedUint8{'a', 'b', 'c'}, "616263"},
++	{"%s", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "hello"},
++	{"%q", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, `"hello"`},
+ 	{"%v", renamedFloat32(22), "22"},
+ 	{"%v", renamedFloat64(33), "33"},
+ 	{"%v", renamedComplex64(3 + 4i), "(3+4i)"},
+@@ -426,6 +440,8 @@
+ 	{"%T", renamedComplex128(4 - 3i), "fmt_test.renamedComplex128"},
+ 	{"%T", intVal, "int"},
+ 	{"%6T", &intVal, "  *int"},
++	{"%10T", nil, "     <nil>"},
++	{"%-10T", nil, "<nil>     "},
+ 
+ 	// %p
+ 	{"p0=%p", new(int), "p0=0xPTR"},
+@@ -481,6 +497,9 @@
+ 	// causing +2+0i and +3+0i instead of 2+0i and 3+0i.
+ 	{"%v", []complex64{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"},
+ 	{"%v", []complex128{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"},
++
++	// Incomplete format specification caused crash.
++	{"%.", 3, "%!.(int=3)"},
+ }
+ 
+ func TestSprintf(t *testing.T) {
+@@ -588,19 +607,13 @@
+ var _ bytes.Buffer
+ 
+ func TestCountMallocs(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
+ 	for _, mt := range mallocTest {
+-		const N = 100
+-		memstats := new(runtime.MemStats)
+-		runtime.ReadMemStats(memstats)
+-		mallocs := 0 - memstats.Mallocs
+-		for i := 0; i < N; i++ {
+-			mt.fn()
+-		}
+-		runtime.ReadMemStats(memstats)
+-		mallocs += memstats.Mallocs
+-		if mallocs/N > uint64(mt.count) {
+-			t.Errorf("%s: expected %d mallocs, got %d", mt.desc, mt.count, mallocs/N)
++		mallocs := testing.AllocsPerRun(100, mt.fn)
++		if got, max := mallocs, float64(mt.count); got > max {
++			t.Errorf("%s: got %v allocs, want <=%v", mt.desc, got, max)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/fmt/print.go gcc-4.8.1/libgo/go/fmt/print.go
+--- gcc-4.8.1.orig/libgo/go/fmt/print.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/fmt/print.go	2013-07-16 01:55:04.520470000 -0500
+@@ -47,7 +47,7 @@
+ }
+ 
+ // Formatter is the interface implemented by values with a custom formatter.
+-// The implementation of Format may call Sprintf or Fprintf(f) etc.
++// The implementation of Format may call Sprint(f) or Fprint(f) etc.
+ // to generate its output.
+ type Formatter interface {
+ 	Format(f State, c rune)
+@@ -56,7 +56,8 @@
+ // Stringer is implemented by any value that has a String method,
+ // which defines the ``native'' format for that value.
+ // The String method is used to print values passed as an operand
+-// to a %s or %v format or to an unformatted printer such as Print.
++// to any format that accepts a string or to an unformatted printer
++// such as Print.
+ type Stringer interface {
+ 	String() string
+ }
+@@ -545,10 +546,15 @@
+ 	}
+ }
+ 
+-func (p *pp) fmtBytes(v []byte, verb rune, goSyntax bool, depth int) {
++func (p *pp) fmtBytes(v []byte, verb rune, goSyntax bool, typ reflect.Type, depth int) {
+ 	if verb == 'v' || verb == 'd' {
+ 		if goSyntax {
+-			p.buf.Write(bytesBytes)
++			if typ == nil {
++				p.buf.Write(bytesBytes)
++			} else {
++				p.buf.WriteString(typ.String())
++				p.buf.WriteByte('{')
++			}
+ 		} else {
+ 			p.buf.WriteByte('[')
+ 		}
+@@ -724,7 +730,7 @@
+ 
+ 	if field == nil {
+ 		if verb == 'T' || verb == 'v' {
+-			p.buf.Write(nilAngleBytes)
++			p.fmt.pad(nilAngleBytes)
+ 		} else {
+ 			p.badVerb(verb)
+ 		}
+@@ -793,7 +799,7 @@
+ 		p.fmtString(f, verb, goSyntax)
+ 		wasString = verb == 's' || verb == 'v'
+ 	case []byte:
+-		p.fmtBytes(f, verb, goSyntax, depth)
++		p.fmtBytes(f, verb, goSyntax, nil, depth)
+ 		wasString = verb == 's'
+ 	default:
+ 		// Restore flags in case handleMethods finds a Formatter.
+@@ -939,19 +945,22 @@
+ 		}
+ 	case reflect.Array, reflect.Slice:
+ 		// Byte slices are special.
+-		if f.Type().Elem().Kind() == reflect.Uint8 {
+-			// We know it's a slice of bytes, but we also know it does not have static type
+-			// []byte, or it would have been caught above.  Therefore we cannot convert
+-			// it directly in the (slightly) obvious way: f.Interface().([]byte); it doesn't have
+-			// that type, and we can't write an expression of the right type and do a
+-			// conversion because we don't have a static way to write the right type.
+-			// So we build a slice by hand.  This is a rare case but it would be nice
+-			// if reflection could help a little more.
+-			bytes := make([]byte, f.Len())
+-			for i := range bytes {
+-				bytes[i] = byte(f.Index(i).Uint())
++		if typ := f.Type(); typ.Elem().Kind() == reflect.Uint8 {
++			var bytes []byte
++			if f.Kind() == reflect.Slice {
++				bytes = f.Bytes()
++			} else if f.CanAddr() {
++				bytes = f.Slice(0, f.Len()).Bytes()
++			} else {
++				// We have an array, but we cannot Slice() a non-addressable array,
++				// so we build a slice by hand. This is a rare case but it would be nice
++				// if reflection could help a little more.
++				bytes = make([]byte, f.Len())
++				for i := range bytes {
++					bytes[i] = byte(f.Index(i).Uint())
++				}
+ 			}
+-			p.fmtBytes(bytes, verb, goSyntax, depth)
++			p.fmtBytes(bytes, verb, goSyntax, typ, depth)
+ 			wasString = verb == 's'
+ 			break
+ 		}
+@@ -1063,7 +1072,7 @@
+ 			p.fmt.wid, p.fmt.widPresent, i = parsenum(format, i, end)
+ 		}
+ 		// do we have precision?
+-		if i < end && format[i] == '.' {
++		if i+1 < end && format[i] == '.' {
+ 			if format[i+1] == '*' {
+ 				p.fmt.prec, p.fmt.precPresent, i, fieldnum = intFromArg(a, end, i+1, fieldnum)
+ 				if !p.fmt.precPresent {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/ast/filter.go gcc-4.8.1/libgo/go/go/ast/filter.go
+--- gcc-4.8.1.orig/libgo/go/go/ast/filter.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/ast/filter.go	2013-07-16 01:55:04.520470000 -0500
+@@ -284,6 +284,27 @@
+ 	FilterImportDuplicates
+ )
+ 
++// nameOf returns the function (foo) or method name (foo.bar) for
++// the given function declaration. If the AST is incorrect for the
++// receiver, it assumes a function instead.
++//
++func nameOf(f *FuncDecl) string {
++	if r := f.Recv; r != nil && len(r.List) == 1 {
++		// looks like a correct receiver declaration
++		t := r.List[0].Type
++		// dereference pointer receiver types
++		if p, _ := t.(*StarExpr); p != nil {
++			t = p.X
++		}
++		// the receiver type must be a type name
++		if p, _ := t.(*Ident); p != nil {
++			return p.Name + "." + f.Name.Name
++		}
++		// otherwise assume a function instead
++	}
++	return f.Name.Name
++}
++
+ // separator is an empty //-style comment that is interspersed between
+ // different comment groups when they are concatenated into a single group
+ //
+@@ -348,7 +369,7 @@
+ 	var decls []Decl
+ 	if ndecls > 0 {
+ 		decls = make([]Decl, ndecls)
+-		funcs := make(map[string]int) // map of global function name -> decls index
++		funcs := make(map[string]int) // map of func name -> decls index
+ 		i := 0                        // current index
+ 		n := 0                        // number of filtered entries
+ 		for _, filename := range filenames {
+@@ -365,7 +386,7 @@
+ 					//            entities (const, type, vars) if
+ 					//            multiple declarations are common.
+ 					if f, isFun := d.(*FuncDecl); isFun {
+-						name := f.Name.Name
++						name := nameOf(f)
+ 						if j, exists := funcs[name]; exists {
+ 							// function declared already
+ 							if decls[j] != nil && decls[j].(*FuncDecl).Doc == nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/ast/filter_test.go gcc-4.8.1/libgo/go/go/ast/filter_test.go
+--- gcc-4.8.1.orig/libgo/go/go/ast/filter_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/ast/filter_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,86 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// To avoid a cyclic dependency with go/parser, this file is in a separate package.
++
++package ast_test
++
++import (
++	"bytes"
++	"go/ast"
++	"go/format"
++	"go/parser"
++	"go/token"
++	"testing"
++)
++
++const input = `package p
++
++type t1 struct{}
++type t2 struct{}
++
++func f1() {}
++func f1() {}
++func f2() {}
++
++func (*t1) f1() {}
++func (t1) f1() {}
++func (t1) f2() {}
++
++func (t2) f1() {}
++func (t2) f2() {}
++func (x *t2) f2() {}
++`
++
++// Calling ast.MergePackageFiles with ast.FilterFuncDuplicates
++// keeps a duplicate entry with attached documentation in favor
++// of one without, and it favors duplicate entries appearing
++// later in the source over ones appearing earlier. This is why
++// (*t2).f2 is kept and t2.f2 is eliminated in this test case.
++//
++const golden = `package p
++
++type t1 struct{}
++type t2 struct{}
++
++func f1() {}
++func f2() {}
++
++func (t1) f1() {}
++func (t1) f2() {}
++
++func (t2) f1() {}
++
++func (x *t2) f2() {}
++`
++
++func TestFilterDuplicates(t *testing.T) {
++	// parse input
++	fset := token.NewFileSet()
++	file, err := parser.ParseFile(fset, "", input, 0)
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	// create package
++	files := map[string]*ast.File{"": file}
++	pkg, err := ast.NewPackage(fset, files, nil, nil)
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	// filter
++	merged := ast.MergePackageFiles(pkg, ast.FilterFuncDuplicates)
++
++	// pretty-print
++	var buf bytes.Buffer
++	if err := format.Node(&buf, fset, merged); err != nil {
++		t.Fatal(err)
++	}
++	output := buf.String()
++
++	if output != golden {
++		t.Errorf("incorrect output:\n%s", output)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/ast/print.go gcc-4.8.1/libgo/go/go/ast/print.go
+--- gcc-4.8.1.orig/libgo/go/go/ast/print.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/go/ast/print.go	2013-07-16 01:55:04.520470000 -0500
+@@ -34,7 +34,7 @@
+ //
+ // A non-nil FieldFilter f may be provided to control the output:
+ // struct fields for which f(fieldname, fieldvalue) is true are
+-// are printed; all others are filtered from the output. Unexported
++// printed; all others are filtered from the output. Unexported
+ // struct fields are never printed.
+ //
+ func Fprint(w io.Writer, fset *token.FileSet, x interface{}, f FieldFilter) (err error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/build/build.go gcc-4.8.1/libgo/go/go/build/build.go
+--- gcc-4.8.1.orig/libgo/go/go/build/build.go	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/build/build.go	2013-07-16 01:55:04.520470000 -0500
+@@ -27,15 +27,31 @@
+ 
+ // A Context specifies the supporting context for a build.
+ type Context struct {
+-	GOARCH      string   // target architecture
+-	GOOS        string   // target operating system
+-	GOROOT      string   // Go root
+-	GOPATH      string   // Go path
+-	CgoEnabled  bool     // whether cgo can be used
+-	BuildTags   []string // additional tags to recognize in +build lines
+-	InstallTag  string   // package install directory suffix
+-	UseAllFiles bool     // use files regardless of +build lines, file names
+-	Compiler    string   // compiler to assume when computing target paths
++	GOARCH      string // target architecture
++	GOOS        string // target operating system
++	GOROOT      string // Go root
++	GOPATH      string // Go path
++	CgoEnabled  bool   // whether cgo can be used
++	UseAllFiles bool   // use files regardless of +build lines, file names
++	Compiler    string // compiler to assume when computing target paths
++
++	// The build and release tags specify build constraints
++	// that should be considered satisfied when processing +build lines.
++	// Clients creating a new context may customize BuildTags, which
++	// defaults to empty, but it is usually an error to customize ReleaseTags,
++	// which defaults to the list of Go releases the current release is compatible with.
++	// In addition to the BuildTags and ReleaseTags, build constraints
++	// consider the values of GOARCH and GOOS as satisfied tags.
++	BuildTags   []string
++	ReleaseTags []string
++
++	// The install suffix specifies a suffix to use in the name of the installation
++	// directory. By default it is empty, but custom builds that need to keep
++	// their outputs separate can set InstallSuffix to do so. For example, when
++	// using the race detector, the go command uses InstallSuffix = "race", so
++	// that on a Linux/386 system, packages are written to a directory named
++	// "linux_386_race" instead of the usual "linux_386".
++	InstallSuffix string
+ 
+ 	// By default, Import uses the operating system's file system calls
+ 	// to read directories and files.  To read from other sources,
+@@ -117,12 +133,27 @@
+ 		return f(root, dir)
+ 	}
+ 
+-	if p, err := filepath.EvalSymlinks(root); err == nil {
+-		root = p
++	// Try using paths we received.
++	if rel, ok = hasSubdir(root, dir); ok {
++		return
+ 	}
+-	if p, err := filepath.EvalSymlinks(dir); err == nil {
+-		dir = p
++
++	// Try expanding symlinks and comparing
++	// expanded against unexpanded and
++	// expanded against expanded.
++	rootSym, _ := filepath.EvalSymlinks(root)
++	dirSym, _ := filepath.EvalSymlinks(dir)
++
++	if rel, ok = hasSubdir(rootSym, dir); ok {
++		return
+ 	}
++	if rel, ok = hasSubdir(root, dirSym); ok {
++		return
++	}
++	return hasSubdir(rootSym, dirSym)
++}
++
++func hasSubdir(root, dir string) (rel string, ok bool) {
+ 	const sep = string(filepath.Separator)
+ 	root = filepath.Clean(root)
+ 	if !strings.HasSuffix(root, sep) {
+@@ -181,6 +212,21 @@
+ 			// Do not get confused by this common mistake.
+ 			continue
+ 		}
++		if strings.HasPrefix(p, "~") {
++			// Path segments starting with ~ on Unix are almost always
++			// users who have incorrectly quoted ~ while setting GOPATH,
++			// preventing it from expanding to $HOME.
++			// The situation is made more confusing by the fact that
++			// bash allows quoted ~ in $PATH (most shells do not).
++			// Do not get confused by this, and do not try to use the path.
++			// It does not exist, and printing errors about it confuses
++			// those users even more, because they think "sure ~ exists!".
++			// The go command diagnoses this situation and prints a
++			// useful error.
++			// On Windows, ~ is used in short names, such as c:\progra~1
++			// for c:\program files.
++			continue
++		}
+ 		all = append(all, p)
+ 	}
+ 	return all
+@@ -216,11 +262,13 @@
+ 	"darwin/amd64":  true,
+ 	"freebsd/386":   true,
+ 	"freebsd/amd64": true,
++	"freebsd/arm":   true,
+ 	"linux/386":     true,
+ 	"linux/amd64":   true,
+ 	"linux/arm":     true,
+ 	"netbsd/386":    true,
+ 	"netbsd/amd64":  true,
++	"netbsd/arm":    true,
+ 	"openbsd/386":   true,
+ 	"openbsd/amd64": true,
+ 	"windows/386":   true,
+@@ -236,13 +284,30 @@
+ 	c.GOPATH = envOr("GOPATH", "")
+ 	c.Compiler = runtime.Compiler
+ 
++	// Each major Go release in the Go 1.x series should add a tag here.
++	// Old tags should not be removed. That is, the go1.x tag is present
++	// in all releases >= Go 1.x. Code that requires Go 1.x or later should
++	// say "+build go1.x", and code that should only be built before Go 1.x
++	// (perhaps it is the stub to use in that case) should say "+build !go1.x".
++	//
++	// When we reach Go 1.3 the line will read
++	//	c.ReleaseTags = []string{"go1.1", "go1.2", "go1.3"}
++	// and so on.
++	c.ReleaseTags = []string{"go1.1"}
++
+ 	switch os.Getenv("CGO_ENABLED") {
+ 	case "1":
+ 		c.CgoEnabled = true
+ 	case "0":
+ 		c.CgoEnabled = false
+ 	default:
+-		c.CgoEnabled = cgoEnabled[c.GOOS+"/"+c.GOARCH]
++		// golang.org/issue/5141
++		// cgo should be disabled for cross compilation builds
++		if runtime.GOARCH == c.GOARCH && runtime.GOOS == c.GOOS {
++			c.CgoEnabled = cgoEnabled[c.GOOS+"/"+c.GOARCH]
++			break
++		}
++		c.CgoEnabled = false
+ 	}
+ 
+ 	return c
+@@ -284,14 +349,15 @@
+ 	PkgObj     string // installed .a file
+ 
+ 	// Source files
+-	GoFiles      []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
+-	CgoFiles     []string // .go source files that import "C"
+-	CFiles       []string // .c source files
+-	HFiles       []string // .h source files
+-	SFiles       []string // .s source files
+-	SysoFiles    []string // .syso system object files to add to archive
+-	SwigFiles    []string // .swig files
+-	SwigCXXFiles []string // .swigcxx files
++	GoFiles        []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
++	CgoFiles       []string // .go source files that import "C"
++	IgnoredGoFiles []string // .go source files ignored for this build
++	CFiles         []string // .c source files
++	HFiles         []string // .h source files
++	SFiles         []string // .s source files
++	SysoFiles      []string // .syso system object files to add to archive
++	SwigFiles      []string // .swig files
++	SwigCXXFiles   []string // .swigcxx files
+ 
+ 	// Cgo directives
+ 	CgoPkgConfig []string // Cgo pkg-config directives
+@@ -365,11 +431,11 @@
+ 		dir, elem := pathpkg.Split(p.ImportPath)
+ 		pkga = "pkg/gccgo/" + dir + "lib" + elem + ".a"
+ 	case "gc":
+-		tag := ""
+-		if ctxt.InstallTag != "" {
+-			tag = "_" + ctxt.InstallTag
++		suffix := ""
++		if ctxt.InstallSuffix != "" {
++			suffix = "_" + ctxt.InstallSuffix
+ 		}
+-		pkga = "pkg/" + ctxt.GOOS + "_" + ctxt.GOARCH + tag + "/" + p.ImportPath + ".a"
++		pkga = "pkg/" + ctxt.GOOS + "_" + ctxt.GOARCH + suffix + "/" + p.ImportPath + ".a"
+ 	default:
+ 		// Save error for end of function.
+ 		pkgerr = fmt.Errorf("import %q: unknown compiler %q", path, ctxt.Compiler)
+@@ -426,7 +492,7 @@
+ 			return p, fmt.Errorf("import %q: cannot import absolute path", path)
+ 		}
+ 
+-		// tried records the location of unsucsessful package lookups
++		// tried records the location of unsuccessful package lookups
+ 		var tried struct {
+ 			goroot string
+ 			gopath []string
+@@ -519,15 +585,20 @@
+ 			strings.HasPrefix(name, ".") {
+ 			continue
+ 		}
+-		if !ctxt.UseAllFiles && !ctxt.goodOSArchFile(name) {
+-			continue
+-		}
+ 
+ 		i := strings.LastIndex(name, ".")
+ 		if i < 0 {
+ 			i = len(name)
+ 		}
+ 		ext := name[i:]
++
++		if !ctxt.UseAllFiles && !ctxt.goodOSArchFile(name) {
++			if ext == ".go" {
++				p.IgnoredGoFiles = append(p.IgnoredGoFiles, name)
++			}
++			continue
++		}
++
+ 		switch ext {
+ 		case ".go", ".c", ".s", ".h", ".S", ".swig", ".swigcxx":
+ 			// tentatively okay - read to make sure
+@@ -561,6 +632,9 @@
+ 
+ 		// Look for +build comments to accept or reject the file.
+ 		if !ctxt.UseAllFiles && !ctxt.shouldBuild(data) {
++			if ext == ".go" {
++				p.IgnoredGoFiles = append(p.IgnoredGoFiles, name)
++			}
+ 			continue
+ 		}
+ 
+@@ -593,6 +667,7 @@
+ 
+ 		pkg := pf.Name.Name
+ 		if pkg == "documentation" {
++			p.IgnoredGoFiles = append(p.IgnoredGoFiles, name)
+ 			continue
+ 		}
+ 
+@@ -929,8 +1004,8 @@
+ //	!cgo (if cgo is disabled)
+ //	ctxt.Compiler
+ //	!ctxt.Compiler
+-//	tag (if tag is listed in ctxt.BuildTags)
+-//	!tag (if tag is not listed in ctxt.BuildTags)
++//	tag (if tag is listed in ctxt.BuildTags or ctxt.ReleaseTags)
++//	!tag (if tag is not listed in ctxt.BuildTags or ctxt.ReleaseTags)
+ //	a comma-separated list of any of these
+ //
+ func (ctxt *Context) match(name string) bool {
+@@ -948,10 +1023,10 @@
+ 		return len(name) > 1 && !ctxt.match(name[1:])
+ 	}
+ 
+-	// Tags must be letters, digits, underscores.
++	// Tags must be letters, digits, underscores or dots.
+ 	// Unlike in Go identifiers, all digits are fine (e.g., "386").
+ 	for _, c := range name {
+-		if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' {
++		if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '.' {
+ 			return false
+ 		}
+ 	}
+@@ -969,6 +1044,11 @@
+ 		if tag == name {
+ 			return true
+ 		}
++	}
++	for _, tag := range ctxt.ReleaseTags {
++		if tag == name {
++			return true
++		}
+ 	}
+ 
+ 	return false
+diff -Naur gcc-4.8.1.orig/libgo/go/go/build/deps_test.go gcc-4.8.1/libgo/go/go/build/deps_test.go
+--- gcc-4.8.1.orig/libgo/go/go/build/deps_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/build/deps_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,10 +5,9 @@
+ // This file exercises the import parser but also checks that
+ // some low-level packages do not have new dependencies added.
+ 
+-package build_test
++package build
+ 
+ import (
+-	"go/build"
+ 	"sort"
+ 	"testing"
+ )
+@@ -48,7 +47,7 @@
+ 	"math":          {"unsafe"},
+ 	"math/cmplx":    {"math"},
+ 	"math/rand":     {"L0", "math"},
+-	"sort":          {"math"},
++	"sort":          {},
+ 	"strconv":       {"L0", "unicode/utf8", "math"},
+ 	"unicode/utf16": {},
+ 	"unicode/utf8":  {},
+@@ -142,7 +141,7 @@
+ 	// Packages used by testing must be low-level (L2+fmt).
+ 	"regexp":         {"L2", "regexp/syntax"},
+ 	"regexp/syntax":  {"L2"},
+-	"runtime/debug":  {"L2", "fmt", "io/ioutil", "os"},
++	"runtime/debug":  {"L2", "fmt", "io/ioutil", "os", "time"},
+ 	"runtime/pprof":  {"L2", "fmt", "text/tabwriter"},
+ 	"text/tabwriter": {"L2"},
+ 
+@@ -306,7 +305,7 @@
+ 	},
+ 	"crypto/x509": {
+ 		"L4", "CRYPTO-MATH", "OS", "CGO",
+-		"crypto/x509/pkix", "encoding/pem", "encoding/hex", "syscall",
++		"crypto/x509/pkix", "encoding/pem", "encoding/hex", "net", "syscall",
+ 	},
+ 	"crypto/x509/pkix": {"L4", "CRYPTO-MATH"},
+ 
+@@ -382,7 +381,7 @@
+ 	}
+ 	sort.Strings(all)
+ 
+-	ctxt := build.Default
++	ctxt := Default
+ 	test := func(mustImport bool) {
+ 		for _, pkg := range all {
+ 			if isMacro(pkg) {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/build/doc.go gcc-4.8.1/libgo/go/go/build/doc.go
+--- gcc-4.8.1.orig/libgo/go/go/build/doc.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/build/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -91,14 +91,22 @@
+ //
+ //	- the target operating system, as spelled by runtime.GOOS
+ //	- the target architecture, as spelled by runtime.GOARCH
+-//	- the compiler being used, currently either "gc" or "gccgo"
++//	- the compiler being used, either "gc" or "gccgo"
+ //	- "cgo", if ctxt.CgoEnabled is true
++//	- "go1.1", from Go version 1.1 onward
+ //	- any additional words listed in ctxt.BuildTags
+ //
+ // If a file's name, after stripping the extension and a possible _test suffix,
+-// matches *_GOOS, *_GOARCH, or *_GOOS_GOARCH for any known operating
+-// system and architecture values, then the file is considered to have an implicit
+-// build constraint requiring those terms.
++// matches any of the following patterns:
++//	*_GOOS
++// 	*_GOARCH
++// 	*_GOOS_GOARCH
++// (example: source_windows_amd64.go) or the literals:
++//	GOOS
++// 	GOARCH
++// (example: windows.go) where GOOS and GOARCH represent any known operating
++// system and architecture values respectively, then the file is considered to
++// have an implicit build constraint requiring those terms.
+ //
+ // To keep a file from being considered for the build:
+ //
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/doc.go gcc-4.8.1/libgo/go/go/doc/doc.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/doc.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -17,7 +17,10 @@
+ 	ImportPath string
+ 	Imports    []string
+ 	Filenames  []string
+-	Bugs       []string
++	Notes      map[string][]*Note
++	// DEPRECATED. For backward compatibility Bugs is still populated,
++	// but all new code should use Notes instead.
++	Bugs []string
+ 
+ 	// declarations
+ 	Consts []*Value
+@@ -61,6 +64,16 @@
+ 	Level int    // embedding level; 0 means not embedded
+ }
+ 
++// A Note represents a marked comment starting with "MARKER(uid): note body".
++// Any note with a marker of 2 or more upper case [A-Z] letters and a uid of
++// at least one character is recognized. The ":" following the uid is optional.
++// Notes are collected in the Package.Notes map indexed by the notes marker.
++type Note struct {
++	Pos, End token.Pos // position range of the comment containing the marker
++	UID      string    // uid found with the marker
++	Body     string    // note body text
++}
++
+ // Mode values control the operation of New.
+ type Mode int
+ 
+@@ -88,7 +101,8 @@
+ 		ImportPath: importPath,
+ 		Imports:    sortedKeys(r.imports),
+ 		Filenames:  r.filenames,
+-		Bugs:       r.bugs,
++		Notes:      r.notes,
++		Bugs:       noteBodies(r.notes["BUG"]),
+ 		Consts:     sortedValues(r.values, token.CONST),
+ 		Types:      sortedTypes(r.types, mode&AllMethods != 0),
+ 		Vars:       sortedValues(r.values, token.VAR),
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/example.go gcc-4.8.1/libgo/go/go/doc/example.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/example.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/example.go	2013-07-16 01:55:04.520470000 -0500
+@@ -18,6 +18,7 @@
+ 	"unicode/utf8"
+ )
+ 
++// An Example represents an example function found in a source files.
+ type Example struct {
+ 	Name        string // name of the item being exemplified
+ 	Doc         string // example function doc string
+@@ -26,8 +27,11 @@
+ 	Comments    []*ast.CommentGroup
+ 	Output      string // expected output
+ 	EmptyOutput bool   // expect empty output
++	Order       int    // original source code order
+ }
+ 
++// Examples returns the examples found in the files, sorted by Name field.
++// The Order fields record the order in which the examples were encountered.
+ func Examples(files ...*ast.File) []*Example {
+ 	var list []*Example
+ 	for _, file := range files {
+@@ -65,6 +69,7 @@
+ 				Comments:    file.Comments,
+ 				Output:      output,
+ 				EmptyOutput: output == "" && hasOutput,
++				Order:       len(flist),
+ 			})
+ 		}
+ 		if !hasTests && numDecl > 1 && len(flist) == 1 {
+@@ -161,6 +166,13 @@
+ 			ast.Inspect(e.X, inspectFunc)
+ 			return false
+ 		}
++		// For key value expressions, only inspect the value
++		// as the key should be resolved by the type of the
++		// composite literal.
++		if e, ok := n.(*ast.KeyValueExpr); ok {
++			ast.Inspect(e.Value, inspectFunc)
++			return false
++		}
+ 		if id, ok := n.(*ast.Ident); ok {
+ 			if id.Obj == nil {
+ 				unresolved[id.Name] = true
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/example_test.go gcc-4.8.1/libgo/go/go/doc/example_test.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/example_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -18,6 +18,7 @@
+ package foo_test
+ 
+ import (
++	"flag"
+ 	"fmt"
+ 	"log"
+ 	"os/exec"
+@@ -35,6 +36,38 @@
+ 	}
+ 	fmt.Printf("The date is %s\n", out)
+ }
++
++func ExampleKeyValue() {
++	v := struct {
++		a string
++		b int
++	}{
++		a: "A",
++		b: 1,
++	}
++	fmt.Print(v)
++	// Output: a: "A", b: 1
++}
++
++func ExampleKeyValueImport() {
++	f := flag.Flag{
++		Name: "play",
++	}
++	fmt.Print(f)
++	// Output: Name: "play"
++}
++
++var keyValueTopDecl = struct {
++	a string
++	b int
++}{
++	a: "B",
++	b: 2,
++}
++
++func ExampleKeyValueTopDecl() {
++	fmt.Print(keyValueTopDecl)
++}
+ `
+ 
+ var exampleTestCases = []struct {
+@@ -49,6 +82,20 @@
+ 		Name: "Import",
+ 		Play: exampleImportPlay,
+ 	},
++	{
++		Name:   "KeyValue",
++		Play:   exampleKeyValuePlay,
++		Output: "a: \"A\", b: 1\n",
++	},
++	{
++		Name:   "KeyValueImport",
++		Play:   exampleKeyValueImportPlay,
++		Output: "Name: \"play\"\n",
++	},
++	{
++		Name: "KeyValueTopDecl",
++		Play: "<nil>",
++	},
+ }
+ 
+ const exampleHelloPlay = `package main
+@@ -78,6 +125,39 @@
+ }
+ `
+ 
++const exampleKeyValuePlay = `package main
++
++import (
++	"fmt"
++)
++
++func main() {
++	v := struct {
++		a string
++		b int
++	}{
++		a: "A",
++		b: 1,
++	}
++	fmt.Print(v)
++}
++`
++
++const exampleKeyValueImportPlay = `package main
++
++import (
++	"flag"
++	"fmt"
++)
++
++func main() {
++	f := flag.Flag{
++		Name: "play",
++	}
++	fmt.Print(f)
++}
++`
++
+ func TestExamples(t *testing.T) {
+ 	fs := token.NewFileSet()
+ 	file, err := parser.ParseFile(fs, "test.go", strings.NewReader(exampleTestFile), parser.ParseComments)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/filter.go gcc-4.8.1/libgo/go/go/doc/filter.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/filter.go	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/filter.go	2013-07-16 01:55:04.520470000 -0500
+@@ -94,7 +94,7 @@
+ }
+ 
+ // Filter eliminates documentation for names that don't pass through the filter f.
+-// TODO: Recognize "Type.Method" as a name.
++// TODO(gri): Recognize "Type.Method" as a name.
+ //
+ func (p *Package) Filter(f Filter) {
+ 	p.Consts = filterValues(p.Consts, f)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/reader.go gcc-4.8.1/libgo/go/go/doc/reader.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/reader.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -148,7 +148,7 @@
+ 	// package properties
+ 	doc       string // package documentation, if any
+ 	filenames []string
+-	bugs      []string
++	notes     map[string][]*Note
+ 
+ 	// declarations
+ 	imports map[string]int
+@@ -400,10 +400,57 @@
+ }
+ 
+ var (
+-	bug_markers = regexp.MustCompile("^/[/*][ \t]*BUG\\(.*\\):[ \t]*") // BUG(uid):
+-	bug_content = regexp.MustCompile("[^ \n\r\t]+")                    // at least one non-whitespace char
++	noteMarker    = `([A-Z][A-Z]+)\(([^)]+)\):?`                    // MARKER(uid), MARKER at least 2 chars, uid at least 1 char
++	noteMarkerRx  = regexp.MustCompile(`^[ \t]*` + noteMarker)      // MARKER(uid) at text start
++	noteCommentRx = regexp.MustCompile(`^/[/*][ \t]*` + noteMarker) // MARKER(uid) at comment start
+ )
+ 
++// readNote collects a single note from a sequence of comments.
++//
++func (r *reader) readNote(list []*ast.Comment) {
++	text := (&ast.CommentGroup{List: list}).Text()
++	if m := noteMarkerRx.FindStringSubmatchIndex(text); m != nil {
++		// The note body starts after the marker.
++		// We remove any formatting so that we don't
++		// get spurious line breaks/indentation when
++		// showing the TODO body.
++		body := clean(text[m[1]:])
++		if body != "" {
++			marker := text[m[2]:m[3]]
++			r.notes[marker] = append(r.notes[marker], &Note{
++				Pos:  list[0].Pos(),
++				End:  list[len(list)-1].End(),
++				UID:  text[m[4]:m[5]],
++				Body: body,
++			})
++		}
++	}
++}
++
++// readNotes extracts notes from comments.
++// A note must start at the beginning of a comment with "MARKER(uid):"
++// and is followed by the note body (e.g., "// BUG(gri): fix this").
++// The note ends at the end of the comment group or at the start of
++// another note in the same comment group, whichever comes first.
++//
++func (r *reader) readNotes(comments []*ast.CommentGroup) {
++	for _, group := range comments {
++		i := -1 // comment index of most recent note start, valid if >= 0
++		list := group.List
++		for j, c := range list {
++			if noteCommentRx.MatchString(c.Text) {
++				if i >= 0 {
++					r.readNote(list[i:j])
++				}
++				i = j
++			}
++		}
++		if i >= 0 {
++			r.readNote(list[i:])
++		}
++	}
++}
++
+ // readFile adds the AST for a source file to the reader.
+ //
+ func (r *reader) readFile(src *ast.File) {
+@@ -469,19 +516,8 @@
+ 		}
+ 	}
+ 
+-	// collect BUG(...) comments
+-	for _, c := range src.Comments {
+-		text := c.List[0].Text
+-		if m := bug_markers.FindStringIndex(text); m != nil {
+-			// found a BUG comment; maybe empty
+-			if btxt := text[m[1]:]; bug_content.MatchString(btxt) {
+-				// non-empty BUG comment; collect comment without BUG prefix
+-				list := append([]*ast.Comment(nil), c.List...) // make a copy
+-				list[0].Text = text[m[1]:]
+-				r.bugs = append(r.bugs, (&ast.CommentGroup{List: list}).Text())
+-			}
+-		}
+-	}
++	// collect MARKER(...): annotations
++	r.readNotes(src.Comments)
+ 	src.Comments = nil // consumed unassociated comments - remove from AST
+ }
+ 
+@@ -492,6 +528,7 @@
+ 	r.mode = mode
+ 	r.types = make(map[string]*namedType)
+ 	r.funcs = make(methodSet)
++	r.notes = make(map[string][]*Note)
+ 
+ 	// sort package files before reading them so that the
+ 	// result does not depend on map iteration order
+@@ -522,10 +559,13 @@
+ 
+ 	// copy existing receiver field and set new type
+ 	newField := *f.Decl.Recv.List[0]
++	origPos := newField.Type.Pos()
+ 	_, origRecvIsPtr := newField.Type.(*ast.StarExpr)
+-	var typ ast.Expr = ast.NewIdent(recvTypeName)
++	newIdent := &ast.Ident{NamePos: origPos, Name: recvTypeName}
++	var typ ast.Expr = newIdent
+ 	if !embeddedIsPtr && origRecvIsPtr {
+-		typ = &ast.StarExpr{X: typ}
++		newIdent.NamePos++ // '*' is one character
++		typ = &ast.StarExpr{Star: origPos, X: newIdent}
+ 	}
+ 	newField.Type = typ
+ 
+@@ -750,6 +790,17 @@
+ 	return list
+ }
+ 
++// noteBodies returns a list of note body strings given a list of notes.
++// This is only used to populate the deprecated Package.Bugs field.
++//
++func noteBodies(notes []*Note) []string {
++	var list []string
++	for _, n := range notes {
++		list = append(list, n.Body)
++	}
++	return list
++}
++
+ // ----------------------------------------------------------------------------
+ // Predeclared identifiers
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/a0.go gcc-4.8.1/libgo/go/go/doc/testdata/a0.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/a0.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/a0.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,3 +6,35 @@
+ package a
+ 
+ //BUG(uid): bug0
++
++//TODO(uid): todo0
++
++// A note with some spaces after it, should be ignored (watch out for
++// emacs modes that remove trailing whitespace).
++//NOTE(uid):
++
++// SECBUG(uid): sec hole 0
++// need to fix asap
++
++// Multiple notes may be in the same comment group and should be
++// recognized individually. Notes may start in the middle of a
++// comment group as long as they start at the beginning of an
++// individual comment.
++//
++// NOTE(foo): 1 of 4 - this is the first line of note 1
++// - note 1 continues on this 2nd line
++// - note 1 continues on this 3rd line
++// NOTE(foo): 2 of 4
++// NOTE(bar): 3 of 4
++/* NOTE(bar): 4 of 4 */
++// - this is the last line of note 4
++//
++//
++
++// NOTE(bam): This note which contains a (parenthesized) subphrase
++//            must appear in its entirety.
++
++// NOTE(xxx) The ':' after the marker and uid is optional.
++
++// NOTE(): NO uid - should not show up.
++// NOTE()  NO uid - should not show up.
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.0.golden gcc-4.8.1/libgo/go/go/doc/testdata/a.0.golden
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.0.golden	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/a.0.golden	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,25 @@
+ 	testdata/a0.go
+ 	testdata/a1.go
+ 
++BUGS .Bugs is now deprecated, please use .Notes instead
++	// bug0
++	// bug1
++
+ BUGS
+-	// bug0 
+-	// bug1 
++	// bug0 (uid: uid)
++	// bug1 (uid: uid)
++
++NOTES
++	// 1 of 4 - this is the first line of note 1 - note 1 continues on ... (uid: foo)
++	// 2 of 4 (uid: foo)
++	// 3 of 4 (uid: bar)
++	// 4 of 4 - this is the last line of note 4 (uid: bar)
++	// This note which contains a (parenthesized) subphrase must ... (uid: bam)
++	// The ':' after the marker and uid is optional. (uid: xxx)
++
++SECBUGS
++	// sec hole 0 need to fix asap (uid: uid)
++
++TODOS
++	// todo0 (uid: uid)
++	// todo1 (uid: uid)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/a1.go gcc-4.8.1/libgo/go/go/doc/testdata/a1.go
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/a1.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/a1.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,3 +6,7 @@
+ package a
+ 
+ //BUG(uid): bug1
++
++//TODO(uid): todo1
++
++//TODO(): ignored
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.1.golden gcc-4.8.1/libgo/go/go/doc/testdata/a.1.golden
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.1.golden	2012-02-01 13:26:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/a.1.golden	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,25 @@
+ 	testdata/a0.go
+ 	testdata/a1.go
+ 
++BUGS .Bugs is now deprecated, please use .Notes instead
++	// bug0
++	// bug1
++
+ BUGS
+-	// bug0 
+-	// bug1 
++	// bug0 (uid: uid)
++	// bug1 (uid: uid)
++
++NOTES
++	// 1 of 4 - this is the first line of note 1 - note 1 continues on ... (uid: foo)
++	// 2 of 4 (uid: foo)
++	// 3 of 4 (uid: bar)
++	// 4 of 4 - this is the last line of note 4 (uid: bar)
++	// This note which contains a (parenthesized) subphrase must ... (uid: bam)
++	// The ':' after the marker and uid is optional. (uid: xxx)
++
++SECBUGS
++	// sec hole 0 need to fix asap (uid: uid)
++
++TODOS
++	// todo0 (uid: uid)
++	// todo1 (uid: uid)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.2.golden gcc-4.8.1/libgo/go/go/doc/testdata/a.2.golden
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/a.2.golden	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/a.2.golden	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,25 @@
+ 	testdata/a0.go
+ 	testdata/a1.go
+ 
++BUGS .Bugs is now deprecated, please use .Notes instead
++	// bug0
++	// bug1
++
+ BUGS
+-	// bug0 
+-	// bug1 
++	// bug0 (uid: uid)
++	// bug1 (uid: uid)
++
++NOTES
++	// 1 of 4 - this is the first line of note 1 - note 1 continues on ... (uid: foo)
++	// 2 of 4 (uid: foo)
++	// 3 of 4 (uid: bar)
++	// 4 of 4 - this is the last line of note 4 (uid: bar)
++	// This note which contains a (parenthesized) subphrase must ... (uid: bam)
++	// The ':' after the marker and uid is optional. (uid: xxx)
++
++SECBUGS
++	// sec hole 0 need to fix asap (uid: uid)
++
++TODOS
++	// todo0 (uid: uid)
++	// todo1 (uid: uid)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/doc/testdata/template.txt gcc-4.8.1/libgo/go/go/doc/testdata/template.txt
+--- gcc-4.8.1.orig/libgo/go/go/doc/testdata/template.txt	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/doc/testdata/template.txt	2013-07-16 01:55:04.520470000 -0500
+@@ -60,6 +60,9 @@
+ {{end}}{{end}}{{end}}{{/*
+ 
+ */}}{{with .Bugs}}
+-BUGS
++BUGS .Bugs is now deprecated, please use .Notes instead
+ {{range .}}	{{synopsis .}}
+-{{end}}{{end}}
+\ No newline at end of file
++{{end}}{{end}}{{with .Notes}}{{range $marker, $content := .}}
++{{$marker}}S
++{{range $content}}	{{synopsis .Body}} (uid: {{.UID}})
++{{end}}{{end}}{{end}}
+\ No newline at end of file
+diff -Naur gcc-4.8.1.orig/libgo/go/go/format/format.go gcc-4.8.1/libgo/go/go/format/format.go
+--- gcc-4.8.1.orig/libgo/go/go/format/format.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/format/format.go	2013-07-16 01:55:04.520470000 -0500
+@@ -69,15 +69,14 @@
+ 	return config.Fprint(dst, fset, node)
+ }
+ 
+-// Source formats src in canonical gofmt style and writes the result to dst
+-// or returns an I/O or syntax error. src is expected to be a syntactically
++// Source formats src in canonical gofmt style and returns the result
++// or an (I/O or syntax) error. src is expected to be a syntactically
+ // correct Go source file, or a list of Go declarations or statements.
+ //
+ // If src is a partial source file, the leading and trailing space of src
+ // is applied to the result (such that it has the same leading and trailing
+-// space as src), and the formatted src is indented by the same amount as
+-// the first line of src containing code. Imports are not sorted for partial
+-// source files.
++// space as src), and the result is indented by the same amount as the first
++// line of src containing code. Imports are not sorted for partial source files.
+ //
+ func Source(src []byte) ([]byte, error) {
+ 	fset := token.NewFileSet()
+diff -Naur gcc-4.8.1.orig/libgo/go/go/parser/error_test.go gcc-4.8.1/libgo/go/go/parser/error_test.go
+--- gcc-4.8.1.orig/libgo/go/go/parser/error_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/parser/error_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -89,8 +89,6 @@
+ 			prev = pos
+ 		}
+ 	}
+-
+-	panic("unreachable")
+ }
+ 
+ // compareErrors compares the map of expected error messages with the list
+@@ -139,12 +137,13 @@
+ 		return
+ 	}
+ 
+-	_, err = ParseFile(fsetErrs, filename, src, DeclarationErrors)
++	_, err = ParseFile(fsetErrs, filename, src, DeclarationErrors|AllErrors)
+ 	found, ok := err.(scanner.ErrorList)
+ 	if err != nil && !ok {
+ 		t.Error(err)
+ 		return
+ 	}
++	found.RemoveMultiples()
+ 
+ 	// we are expecting the following errors
+ 	// (collect these after parsing a file so that it is found in the file set)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/parser/interface.go gcc-4.8.1/libgo/go/go/parser/interface.go
+--- gcc-4.8.1.orig/libgo/go/go/parser/interface.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/parser/interface.go	2013-07-16 01:55:04.520470000 -0500
+@@ -52,12 +52,13 @@
+ type Mode uint
+ 
+ const (
+-	PackageClauseOnly Mode = 1 << iota // parsing stops after package clause
+-	ImportsOnly                        // parsing stops after import declarations
+-	ParseComments                      // parse comments and add them to AST
+-	Trace                              // print a trace of parsed productions
+-	DeclarationErrors                  // report declaration errors
+-	SpuriousErrors                     // report all (not just the first) errors per line
++	PackageClauseOnly Mode             = 1 << iota // stop parsing after package clause
++	ImportsOnly                                    // stop parsing after import declarations
++	ParseComments                                  // parse comments and add them to AST
++	Trace                                          // print a trace of parsed productions
++	DeclarationErrors                              // report declaration errors
++	SpuriousErrors                                 // same as AllErrors, for backward-compatibility
++	AllErrors         = SpuriousErrors             // report all errors (not just the first 10 on different lines)
+ )
+ 
+ // ParseFile parses the source code of a single Go source file and returns
+@@ -79,35 +80,39 @@
+ // representing the fragments of erroneous source code). Multiple errors
+ // are returned via a scanner.ErrorList which is sorted by file position.
+ //
+-func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) (*ast.File, error) {
++func ParseFile(fset *token.FileSet, filename string, src interface{}, mode Mode) (f *ast.File, err error) {
+ 	// get source
+ 	text, err := readSource(filename, src)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 
+-	// parse source
+ 	var p parser
+-	p.init(fset, filename, text, mode)
+-	f := p.parseFile()
+-	if f == nil {
+-		// source is not a valid Go source file - satisfy
+-		// ParseFile API and return a valid (but) empty
+-		// *ast.File
+-		f = &ast.File{
+-			Name:  new(ast.Ident),
+-			Scope: ast.NewScope(nil),
++	defer func() {
++		if e := recover(); e != nil {
++			_ = e.(bailout) // re-panics if it's not a bailout
++		}
++
++		// set result values
++		if f == nil {
++			// source is not a valid Go source file - satisfy
++			// ParseFile API and return a valid (but) empty
++			// *ast.File
++			f = &ast.File{
++				Name:  new(ast.Ident),
++				Scope: ast.NewScope(nil),
++			}
+ 		}
+-	}
+ 
+-	// sort errors
+-	if p.mode&SpuriousErrors == 0 {
+-		p.errors.RemoveMultiples()
+-	} else {
+ 		p.errors.Sort()
+-	}
++		err = p.errors.Err()
++	}()
++
++	// parse source
++	p.init(fset, filename, text, mode)
++	f = p.parseFile()
+ 
+-	return f, p.errors.Err()
++	return
+ }
+ 
+ // ParseDir calls ParseFile for the files in the directory specified by path and
+@@ -157,16 +162,27 @@
+ }
+ 
+ // ParseExpr is a convenience function for obtaining the AST of an expression x.
+-// The position information recorded in the AST is undefined.
++// The position information recorded in the AST is undefined. The filename used
++// in error messages is the empty string.
+ //
+ func ParseExpr(x string) (ast.Expr, error) {
+-	// parse x within the context of a complete package for correct scopes;
+-	// use //line directive for correct positions in error messages and put
+-	// x alone on a separate line (handles line comments), followed by a ';'
+-	// to force an error if the expression is incomplete
+-	file, err := ParseFile(token.NewFileSet(), "", "package p;func _(){_=\n//line :1\n"+x+"\n;}", 0)
+-	if err != nil {
+-		return nil, err
++	var p parser
++	p.init(token.NewFileSet(), "", []byte(x), 0)
++
++	// Set up pkg-level scopes to avoid nil-pointer errors.
++	// This is not needed for a correct expression x as the
++	// parser will be ok with a nil topScope, but be cautious
++	// in case of an erroneous x.
++	p.openScope()
++	p.pkgScope = p.topScope
++	e := p.parseRhsOrType()
++	p.closeScope()
++	assert(p.topScope == nil, "unbalanced scopes")
++
++	if p.errors.Len() > 0 {
++		p.errors.Sort()
++		return nil, p.errors.Err()
+ 	}
+-	return file.Decls[0].(*ast.FuncDecl).Body.List[0].(*ast.AssignStmt).Rhs[0], nil
++
++	return e, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/go/parser/parser.go gcc-4.8.1/libgo/go/go/parser/parser.go
+--- gcc-4.8.1.orig/libgo/go/go/parser/parser.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/parser/parser.go	2013-07-16 01:55:04.520470000 -0500
+@@ -48,7 +48,8 @@
+ 	syncCnt int       // number of calls to syncXXX without progress
+ 
+ 	// Non-syntactic parser control
+-	exprLev int // < 0: in control clause, >= 0: in expression
++	exprLev int  // < 0: in control clause, >= 0: in expression
++	inRhs   bool // if set, the parser is parsing a rhs expression
+ 
+ 	// Ordinary identifier scopes
+ 	pkgScope   *ast.Scope        // pkgScope.Outer == nil
+@@ -340,8 +341,26 @@
+ 	}
+ }
+ 
++// A bailout panic is raised to indicate early termination.
++type bailout struct{}
++
+ func (p *parser) error(pos token.Pos, msg string) {
+-	p.errors.Add(p.file.Position(pos), msg)
++	epos := p.file.Position(pos)
++
++	// If AllErrors is not set, discard errors reported on the same line
++	// as the last recorded error and stop parsing if there are more than
++	// 10 errors.
++	if p.mode&AllErrors == 0 {
++		n := len(p.errors)
++		if n > 0 && p.errors[n-1].Pos.Line == epos.Line {
++			return // discard - likely a spurious error
++		}
++		if n > 10 {
++			panic(bailout{})
++		}
++	}
++
++	p.errors.Add(epos, msg)
+ }
+ 
+ func (p *parser) errorExpected(pos token.Pos, msg string) {
+@@ -521,6 +540,8 @@
+ }
+ 
+ func (p *parser) parseLhsList() []ast.Expr {
++	old := p.inRhs
++	p.inRhs = false
+ 	list := p.parseExprList(true)
+ 	switch p.tok {
+ 	case token.DEFINE:
+@@ -542,11 +563,16 @@
+ 			p.resolve(x)
+ 		}
+ 	}
++	p.inRhs = old
+ 	return list
+ }
+ 
+ func (p *parser) parseRhsList() []ast.Expr {
+-	return p.parseExprList(false)
++	old := p.inRhs
++	p.inRhs = true
++	list := p.parseExprList(false)
++	p.inRhs = old
++	return list
+ }
+ 
+ // ----------------------------------------------------------------------------
+@@ -1211,11 +1237,11 @@
+ 	// In the former case we are done, and in the latter case we don't
+ 	// care because the type checker will do a separate field lookup.
+ 	//
+-	// If the key does not resolve, it must a) be defined at the top-
+-	// level in another file of the same package or be undeclared, or
+-	// b) it is a struct field. In the former case, the type checker
+-	// can do a top-level lookup, and in the latter case it will do a
+-	// separate field lookup.
++	// If the key does not resolve, it a) must be defined at the top
++	// level in another file of the same package, the universe scope, or be
++	// undeclared; or b) it is a struct field. In the former case, the type
++	// checker can do a top-level lookup, and in the latter case it will do
++	// a separate field lookup.
+ 	x := p.checkExpr(p.parseExpr(keyOk))
+ 	if keyOk {
+ 		if p.tok == token.COLON {
+@@ -1487,6 +1513,14 @@
+ 	return p.parsePrimaryExpr(lhs)
+ }
+ 
++func (p *parser) tokPrec() (token.Token, int) {
++	tok := p.tok
++	if p.inRhs && tok == token.ASSIGN {
++		tok = token.EQL
++	}
++	return tok, tok.Precedence()
++}
++
+ // If lhs is set and the result is an identifier, it is not resolved.
+ func (p *parser) parseBinaryExpr(lhs bool, prec1 int) ast.Expr {
+ 	if p.trace {
+@@ -1494,10 +1528,13 @@
+ 	}
+ 
+ 	x := p.parseUnaryExpr(lhs)
+-	for prec := p.tok.Precedence(); prec >= prec1; prec-- {
+-		for p.tok.Precedence() == prec {
+-			pos, op := p.pos, p.tok
+-			p.next()
++	for _, prec := p.tokPrec(); prec >= prec1; prec-- {
++		for {
++			op, oprec := p.tokPrec()
++			if oprec != prec {
++				break
++			}
++			pos := p.expect(op)
+ 			if lhs {
+ 				p.resolve(x)
+ 				lhs = false
+@@ -1523,11 +1560,19 @@
+ }
+ 
+ func (p *parser) parseRhs() ast.Expr {
+-	return p.checkExpr(p.parseExpr(false))
++	old := p.inRhs
++	p.inRhs = true
++	x := p.checkExpr(p.parseExpr(false))
++	p.inRhs = old
++	return x
+ }
+ 
+ func (p *parser) parseRhsOrType() ast.Expr {
+-	return p.checkExprOrType(p.parseExpr(false))
++	old := p.inRhs
++	p.inRhs = true
++	x := p.checkExprOrType(p.parseExpr(false))
++	p.inRhs = old
++	return x
+ }
+ 
+ // ----------------------------------------------------------------------------
+@@ -2073,7 +2118,7 @@
+ // ----------------------------------------------------------------------------
+ // Declarations
+ 
+-type parseSpecFunction func(p *parser, doc *ast.CommentGroup, keyword token.Token, iota int) ast.Spec
++type parseSpecFunction func(doc *ast.CommentGroup, keyword token.Token, iota int) ast.Spec
+ 
+ func isValidImport(lit string) bool {
+ 	const illegalChars = `!"#$%&'()*,:;<=>?[\]^{|}` + "`\uFFFD"
+@@ -2192,12 +2237,12 @@
+ 		lparen = p.pos
+ 		p.next()
+ 		for iota := 0; p.tok != token.RPAREN && p.tok != token.EOF; iota++ {
+-			list = append(list, f(p, p.leadComment, keyword, iota))
++			list = append(list, f(p.leadComment, keyword, iota))
+ 		}
+ 		rparen = p.expect(token.RPAREN)
+ 		p.expectSemi()
+ 	} else {
+-		list = append(list, f(p, nil, keyword, 0))
++		list = append(list, f(nil, keyword, 0))
+ 	}
+ 
+ 	return &ast.GenDecl{
+@@ -2298,10 +2343,10 @@
+ 	var f parseSpecFunction
+ 	switch p.tok {
+ 	case token.CONST, token.VAR:
+-		f = (*parser).parseValueSpec
++		f = p.parseValueSpec
+ 
+ 	case token.TYPE:
+-		f = (*parser).parseTypeSpec
++		f = p.parseTypeSpec
+ 
+ 	case token.FUNC:
+ 		return p.parseFuncDecl()
+@@ -2353,7 +2398,7 @@
+ 	if p.mode&PackageClauseOnly == 0 {
+ 		// import decls
+ 		for p.tok == token.IMPORT {
+-			decls = append(decls, p.parseGenDecl(token.IMPORT, (*parser).parseImportSpec))
++			decls = append(decls, p.parseGenDecl(token.IMPORT, p.parseImportSpec))
+ 		}
+ 
+ 		if p.mode&ImportsOnly == 0 {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/parser/parser_test.go gcc-4.8.1/libgo/go/go/parser/parser_test.go
+--- gcc-4.8.1.orig/libgo/go/go/parser/parser_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/go/parser/parser_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -68,7 +68,7 @@
+ 
+ func TestParseExpr(t *testing.T) {
+ 	// just kicking the tires:
+-	// a valid expression
++	// a valid arithmetic expression
+ 	src := "a + b"
+ 	x, err := ParseExpr(src)
+ 	if err != nil {
+@@ -79,6 +79,17 @@
+ 		t.Errorf("ParseExpr(%s): got %T, expected *ast.BinaryExpr", src, x)
+ 	}
+ 
++	// a valid type expression
++	src = "struct{x *int}"
++	x, err = ParseExpr(src)
++	if err != nil {
++		t.Fatalf("ParseExpr(%s): %v", src, err)
++	}
++	// sanity check
++	if _, ok := x.(*ast.StructType); !ok {
++		t.Errorf("ParseExpr(%s): got %T, expected *ast.StructType", src, x)
++	}
++
+ 	// an invalid expression
+ 	src = "a + *"
+ 	_, err = ParseExpr(src)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/parser/short_test.go gcc-4.8.1/libgo/go/go/parser/short_test.go
+--- gcc-4.8.1.orig/libgo/go/go/parser/short_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/parser/short_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -71,6 +71,9 @@
+ 	`package p; func f() { _ = (<-<- /* ERROR "expected 'chan'" */ chan int)(nil) };`,
+ 	`package p; func f() { _ = (<-chan<-chan<-chan<-chan<-chan<- /* ERROR "expected channel type" */ int)(nil) };`,
+ 	`package p; func f() { var t []int; t /* ERROR "expected identifier on left side of :=" */ [0] := 0 };`,
++	`package p; func f() { if x := g(); x = /* ERROR "expected '=='" */ 0 {}};`,
++	`package p; func f() { _ = x = /* ERROR "expected '=='" */ 0 {}};`,
++	`package p; func f() { _ = 1 == func()int { var x bool; x = x = /* ERROR "expected '=='" */ true; return x }() };`,
+ }
+ 
+ func TestInvalid(t *testing.T) {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/printer/nodes.go gcc-4.8.1/libgo/go/go/printer/nodes.go
+--- gcc-4.8.1.orig/libgo/go/go/printer/nodes.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/printer/nodes.go	2013-07-16 01:55:04.520470000 -0500
+@@ -271,12 +271,12 @@
+ 			// if there are multiple parameter names for this par
+ 			// or the type is on a separate line)
+ 			var parLineBeg int
+-			var parLineEnd = p.lineFor(par.Type.Pos())
+ 			if len(par.Names) > 0 {
+ 				parLineBeg = p.lineFor(par.Names[0].Pos())
+ 			} else {
+-				parLineBeg = parLineEnd
++				parLineBeg = p.lineFor(par.Type.Pos())
+ 			}
++			var parLineEnd = p.lineFor(par.Type.End())
+ 			// separating "," if needed
+ 			needsLinebreak := 0 < prevLine && prevLine < parLineBeg
+ 			if i > 0 {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/printer/printer.go gcc-4.8.1/libgo/go/go/printer/printer.go
+--- gcc-4.8.1.orig/libgo/go/go/printer/printer.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/printer/printer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -395,35 +395,6 @@
+ 	}
+ }
+ 
+-// Split comment text into lines
+-// (using strings.Split(text, "\n") is significantly slower for
+-// this specific purpose, as measured with: go test -bench=Print)
+-//
+-func split(text string) []string {
+-	// count lines (comment text never ends in a newline)
+-	n := 1
+-	for i := 0; i < len(text); i++ {
+-		if text[i] == '\n' {
+-			n++
+-		}
+-	}
+-
+-	// split
+-	lines := make([]string, n)
+-	n = 0
+-	i := 0
+-	for j := 0; j < len(text); j++ {
+-		if text[j] == '\n' {
+-			lines[n] = text[i:j] // exclude newline
+-			i = j + 1            // discard newline
+-			n++
+-		}
+-	}
+-	lines[n] = text[i:]
+-
+-	return lines
+-}
+-
+ // Returns true if s contains only white space
+ // (only tabs and blanks can appear in the printer's context).
+ //
+@@ -551,9 +522,7 @@
+ 			}
+ 			// Shorten the computed common prefix by the length of
+ 			// suffix, if it is found as suffix of the prefix.
+-			if strings.HasSuffix(prefix, string(suffix)) {
+-				prefix = prefix[0 : len(prefix)-len(suffix)]
+-			}
++			prefix = strings.TrimSuffix(prefix, string(suffix))
+ 		}
+ 	}
+ 
+@@ -618,7 +587,7 @@
+ 
+ 	// for /*-style comments, print line by line and let the
+ 	// write function take care of the proper indentation
+-	lines := split(text)
++	lines := strings.Split(text, "\n")
+ 
+ 	// The comment started in the first column but is going
+ 	// to be indented. For an idempotent result, add indentation
+diff -Naur gcc-4.8.1.orig/libgo/go/go/printer/testdata/declarations.golden gcc-4.8.1/libgo/go/go/printer/testdata/declarations.golden
+--- gcc-4.8.1.orig/libgo/go/go/printer/testdata/declarations.golden	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/printer/testdata/declarations.golden	2013-07-16 01:55:04.520470000 -0500
+@@ -912,3 +912,28 @@
+ func _(x chan<- (chan int))
+ func _(x chan<- (chan int))
+ func _(x chan<- (chan int))
++
++// don't introduce comma after last parameter if the closing ) is on the same line
++// even if the parameter type itself is multi-line (test cases from issue 4533)
++func _(...interface{})
++func _(...interface {
++	m()
++	n()
++})	// no extra comma between } and )
++
++func (t *T) _(...interface{})
++func (t *T) _(...interface {
++	m()
++	n()
++})	// no extra comma between } and )
++
++func _(interface{})
++func _(interface {
++	m()
++})	// no extra comma between } and )
++
++func _(struct{})
++func _(struct {
++	x	int
++	y	int
++})	// no extra comma between } and )
+diff -Naur gcc-4.8.1.orig/libgo/go/go/printer/testdata/declarations.input gcc-4.8.1/libgo/go/go/printer/testdata/declarations.input
+--- gcc-4.8.1.orig/libgo/go/go/printer/testdata/declarations.input	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/printer/testdata/declarations.input	2013-07-16 01:55:04.520470000 -0500
+@@ -921,3 +921,28 @@
+ func _(x chan<-(chan int))
+ func _(x (chan<-(chan int)))
+ func _(x ((((chan<-(chan int))))))
++
++// don't introduce comma after last parameter if the closing ) is on the same line
++// even if the parameter type itself is multi-line (test cases from issue 4533)
++func _(...interface{})
++func _(...interface {
++	m()
++	n()
++}) // no extra comma between } and )
++
++func (t *T) _(...interface{})
++func (t *T) _(...interface {
++	m()
++	n()
++}) // no extra comma between } and )
++
++func _(interface{})
++func _(interface {
++	m()
++}) // no extra comma between } and )
++
++func _(struct{})
++func _(struct {
++	x int
++	y int
++}) // no extra comma between } and )
+diff -Naur gcc-4.8.1.orig/libgo/go/go/scanner/scanner.go gcc-4.8.1/libgo/go/go/scanner/scanner.go
+--- gcc-4.8.1.orig/libgo/go/go/scanner/scanner.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/go/scanner/scanner.go	2013-07-16 01:55:04.520470000 -0500
+@@ -48,6 +48,8 @@
+ 	ErrorCount int // number of errors encountered
+ }
+ 
++const bom = 0xFEFF // byte order mark, only permitted as very first character
++
+ // Read the next Unicode char into s.ch.
+ // s.ch < 0 means end-of-file.
+ //
+@@ -67,6 +69,8 @@
+ 			r, w = utf8.DecodeRune(s.src[s.rdOffset:])
+ 			if r == utf8.RuneError && w == 1 {
+ 				s.error(s.offset, "illegal UTF-8 encoding")
++			} else if r == bom && s.offset > 0 {
++				s.error(s.offset, "illegal byte order mark")
+ 			}
+ 		}
+ 		s.rdOffset += w
+@@ -125,8 +129,8 @@
+ 	s.ErrorCount = 0
+ 
+ 	s.next()
+-	if s.ch == '\uFEFF' {
+-		s.next() // ignore BOM
++	if s.ch == bom {
++		s.next() // ignore BOM at file beginning
+ 	}
+ }
+ 
+@@ -713,7 +717,10 @@
+ 		case '|':
+ 			tok = s.switch3(token.OR, token.OR_ASSIGN, '|', token.LOR)
+ 		default:
+-			s.error(s.file.Offset(pos), fmt.Sprintf("illegal character %#U", ch))
++			// next reports unexpected BOMs - don't repeat
++			if ch != bom {
++				s.error(s.file.Offset(pos), fmt.Sprintf("illegal character %#U", ch))
++			}
+ 			insertSemi = s.insertSemi // preserve insertSemi info
+ 			tok = token.ILLEGAL
+ 			lit = string(ch)
+diff -Naur gcc-4.8.1.orig/libgo/go/go/scanner/scanner_test.go gcc-4.8.1/libgo/go/go/scanner/scanner_test.go
+--- gcc-4.8.1.orig/libgo/go/go/scanner/scanner_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/go/scanner/scanner_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -695,7 +695,10 @@
+ 	{"0X", token.INT, 0, "illegal hexadecimal number"},
+ 	{"\"abc\x00def\"", token.STRING, 4, "illegal character NUL"},
+ 	{"\"abc\x80def\"", token.STRING, 4, "illegal UTF-8 encoding"},
+-	{"\ufeff\ufeff", token.ILLEGAL, 3, "illegal character U+FEFF"}, // only first BOM is ignored
++	{"\ufeff\ufeff", token.ILLEGAL, 3, "illegal byte order mark"},            // only first BOM is ignored
++	{"//\ufeff", token.COMMENT, 2, "illegal byte order mark"},                // only first BOM is ignored
++	{"'\ufeff" + `'`, token.CHAR, 1, "illegal byte order mark"},              // only first BOM is ignored
++	{`"` + "abc\ufeffdef" + `"`, token.STRING, 4, "illegal byte order mark"}, // only first BOM is ignored
+ }
+ 
+ func TestScanErrors(t *testing.T) {
+diff -Naur gcc-4.8.1.orig/libgo/go/go/token/token.go gcc-4.8.1/libgo/go/go/token/token.go
+--- gcc-4.8.1.orig/libgo/go/go/token/token.go	2012-01-25 14:56:26.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/token/token.go	2013-07-16 01:55:04.520470000 -0500
+@@ -243,8 +243,8 @@
+ // A set of constants for precedence-based expression parsing.
+ // Non-operators have lowest precedence, followed by operators
+ // starting with precedence 1 up to unary operators. The highest
+-// precedence corresponds serves as "catch-all" precedence for
+-// selector, indexing, and other operator and delimiter tokens.
++// precedence serves as "catch-all" precedence for selector,
++// indexing, and other operator and delimiter tokens.
+ //
+ const (
+ 	LowestPrec  = 0 // non-operators
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/api.go gcc-4.8.1/libgo/go/go/types/api.go
+--- gcc-4.8.1.orig/libgo/go/go/types/api.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/api.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,96 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Package types declares the data structures for representing
+-// Go types and implements typechecking of package files.
+-//
+-// WARNING: THE TYPES API IS SUBJECT TO CHANGE.
+-//
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// A Context specifies the supporting context for type checking.
+-type Context struct {
+-	IntSize int64 // size in bytes of int and uint values
+-	PtrSize int64 // size in bytes of pointers
+-
+-	// If Error is not nil, it is called with each error found
+-	// during type checking. Most error messages have accurate
+-	// position information; those error strings are formatted
+-	// filename:line:column: message.
+-	Error func(err error)
+-
+-	// If Ident is not nil, it is called for each identifier id
+-	// denoting an Object in the files provided to Check, and
+-	// obj is the denoted object.
+-	// Ident is not called for fields and methods in struct or
+-	// interface types or composite literals, or for blank (_)
+-	// or dot (.) identifiers in dot-imports.
+-	// TODO(gri) Consider making Fields and Methods ordinary
+-	// Objects - than we could lift this restriction.
+-	Ident func(id *ast.Ident, obj Object)
+-
+-	// If Expr is not nil, it is called for each expression x that is
+-	// type-checked: typ is the expression type, and val is the value
+-	// if x is constant, val is nil otherwise.
+-	//
+-	// Constants are represented as follows:
+-	//
+-	//	bool     ->  bool
+-	//	numeric  ->  int64, *big.Int, *big.Rat, Complex
+-	//	string   ->  string
+-	//	nil      ->  NilType
+-	//
+-	// Constant values are normalized, that is, they are represented
+-	// using the "smallest" possible type that can represent the value.
+-	// For instance, 1.0 is represented as an int64 because it can be
+-	// represented accurately as an int64.
+-	Expr func(x ast.Expr, typ Type, val interface{})
+-
+-	// If Import is not nil, it is used instead of GcImport.
+-	Import Importer
+-}
+-
+-// An Importer resolves import paths to Package objects.
+-// The imports map records the packages already imported,
+-// indexed by package id (canonical import path).
+-// An Importer must determine the canonical import path and
+-// check the map to see if it is already present in the imports map.
+-// If so, the Importer can return the map entry.  Otherwise, the
+-// Importer should load the package data for the given path into
+-// a new *Package, record pkg in the imports map, and then
+-// return pkg.
+-type Importer func(imports map[string]*Package, path string) (pkg *Package, err error)
+-
+-// Default is the default context for type checking.
+-var Default = Context{
+-	// TODO(gri) Perhaps this should depend on GOARCH?
+-	IntSize: 8,
+-	PtrSize: 8,
+-}
+-
+-// Check resolves and typechecks a set of package files within the given
+-// context. The package files' ASTs are augmented by assigning types to
+-// ast.Objects. If there are no errors, Check returns the package, otherwise
+-// it returns the first error. If the context's Error handler is nil,
+-// Check terminates as soon as the first error is encountered.
+-//
+-// CAUTION: At the moment, the returned *ast.Package only contains the package
+-//          name and scope - the other fields are not set up. The returned
+-//          *Package contains the name and imports (but no scope yet). Once
+-//          we have the scope moved from *ast.Scope to *Scope, only *Package
+-//          will be returned.
+-//
+-func (ctxt *Context) Check(fset *token.FileSet, files []*ast.File) (*Package, error) {
+-	return check(ctxt, fset, files)
+-}
+-
+-// Check is shorthand for Default.Check.
+-func Check(fset *token.FileSet, files []*ast.File) (*Package, error) {
+-	return Default.Check(fset, files)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/builtins.go gcc-4.8.1/libgo/go/go/types/builtins.go
+--- gcc-4.8.1.orig/libgo/go/go/types/builtins.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/builtins.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,457 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements typechecking of builtin function calls.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// builtin typechecks a built-in call. The built-in type is bin, and iota is the current
+-// value of iota or -1 if iota doesn't have a value in the current context. The result
+-// of the call is returned via x. If the call has type errors, the returned x is marked
+-// as invalid (x.mode == invalid).
+-//
+-func (check *checker) builtin(x *operand, call *ast.CallExpr, bin *builtin, iota int) {
+-	args := call.Args
+-	id := bin.id
+-
+-	// declare before goto's
+-	var arg0 ast.Expr // first argument, if present
+-
+-	// check argument count
+-	n := len(args)
+-	msg := ""
+-	if n < bin.nargs {
+-		msg = "not enough"
+-	} else if !bin.isVariadic && n > bin.nargs {
+-		msg = "too many"
+-	}
+-	if msg != "" {
+-		check.invalidOp(call.Pos(), msg+" arguments for %s (expected %d, found %d)", call, bin.nargs, n)
+-		goto Error
+-	}
+-
+-	// common case: evaluate first argument if present;
+-	// if it is an expression, x has the expression value
+-	if n > 0 {
+-		arg0 = args[0]
+-		switch id {
+-		case _Make, _New, _Trace:
+-			// respective cases below do the work
+-		default:
+-			// argument must be an expression
+-			check.expr(x, arg0, nil, iota)
+-			if x.mode == invalid {
+-				goto Error
+-			}
+-		}
+-	}
+-
+-	switch id {
+-	case _Append:
+-		if _, ok := underlying(x.typ).(*Slice); !ok {
+-			check.invalidArg(x.pos(), "%s is not a typed slice", x)
+-			goto Error
+-		}
+-		resultTyp := x.typ
+-		for _, arg := range args[1:] {
+-			check.expr(x, arg, nil, iota)
+-			if x.mode == invalid {
+-				goto Error
+-			}
+-			// TODO(gri) check assignability
+-		}
+-		x.mode = value
+-		x.typ = resultTyp
+-
+-	case _Cap, _Len:
+-		mode := invalid
+-		var val interface{}
+-		switch typ := implicitDeref(underlying(x.typ)).(type) {
+-		case *Basic:
+-			if isString(typ) && id == _Len {
+-				if x.mode == constant {
+-					mode = constant
+-					val = int64(len(x.val.(string)))
+-				} else {
+-					mode = value
+-				}
+-			}
+-
+-		case *Array:
+-			mode = value
+-			if !containsCallsOrReceives(arg0) {
+-				mode = constant
+-				val = typ.Len
+-			}
+-
+-		case *Slice, *Chan:
+-			mode = value
+-
+-		case *Map:
+-			if id == _Len {
+-				mode = value
+-			}
+-		}
+-
+-		if mode == invalid {
+-			check.invalidArg(x.pos(), "%s for %s", x, bin.name)
+-			goto Error
+-		}
+-		x.mode = mode
+-		x.typ = Typ[Int]
+-		x.val = val
+-
+-	case _Close:
+-		ch, ok := underlying(x.typ).(*Chan)
+-		if !ok {
+-			check.invalidArg(x.pos(), "%s is not a channel", x)
+-			goto Error
+-		}
+-		if ch.Dir&ast.SEND == 0 {
+-			check.invalidArg(x.pos(), "%s must not be a receive-only channel", x)
+-			goto Error
+-		}
+-		x.mode = novalue
+-
+-	case _Complex:
+-		if !check.complexArg(x) {
+-			goto Error
+-		}
+-
+-		var y operand
+-		check.expr(&y, args[1], nil, iota)
+-		if y.mode == invalid {
+-			goto Error
+-		}
+-		if !check.complexArg(&y) {
+-			goto Error
+-		}
+-
+-		check.convertUntyped(x, y.typ)
+-		if x.mode == invalid {
+-			goto Error
+-		}
+-		check.convertUntyped(&y, x.typ)
+-		if y.mode == invalid {
+-			goto Error
+-		}
+-
+-		if !IsIdentical(x.typ, y.typ) {
+-			check.invalidArg(x.pos(), "mismatched types %s and %s", x.typ, y.typ)
+-			goto Error
+-		}
+-
+-		typ := underlying(x.typ).(*Basic)
+-		if x.mode == constant && y.mode == constant {
+-			x.val = binaryOpConst(x.val, toImagConst(y.val), token.ADD, typ)
+-		} else {
+-			x.mode = value
+-		}
+-
+-		switch typ.Kind {
+-		case Float32:
+-			x.typ = Typ[Complex64]
+-		case Float64:
+-			x.typ = Typ[Complex128]
+-		case UntypedInt, UntypedRune, UntypedFloat:
+-			x.typ = Typ[UntypedComplex]
+-		default:
+-			check.invalidArg(x.pos(), "float32 or float64 arguments expected")
+-			goto Error
+-		}
+-
+-	case _Copy:
+-		var y operand
+-		check.expr(&y, args[1], nil, iota)
+-		if y.mode == invalid {
+-			goto Error
+-		}
+-
+-		var dst, src Type
+-		if t, ok := underlying(x.typ).(*Slice); ok {
+-			dst = t.Elt
+-		}
+-		switch t := underlying(y.typ).(type) {
+-		case *Basic:
+-			if isString(y.typ) {
+-				src = Typ[Byte]
+-			}
+-		case *Slice:
+-			src = t.Elt
+-		}
+-
+-		if dst == nil || src == nil {
+-			check.invalidArg(x.pos(), "copy expects slice arguments; found %s and %s", x, &y)
+-			goto Error
+-		}
+-
+-		if !IsIdentical(dst, src) {
+-			check.invalidArg(x.pos(), "arguments to copy %s and %s have different element types %s and %s", x, &y, dst, src)
+-			goto Error
+-		}
+-
+-		x.mode = value
+-		x.typ = Typ[Int]
+-
+-	case _Delete:
+-		m, ok := underlying(x.typ).(*Map)
+-		if !ok {
+-			check.invalidArg(x.pos(), "%s is not a map", x)
+-			goto Error
+-		}
+-		check.expr(x, args[1], nil, iota)
+-		if x.mode == invalid {
+-			goto Error
+-		}
+-		if !x.isAssignable(m.Key) {
+-			check.invalidArg(x.pos(), "%s is not assignable to %s", x, m.Key)
+-			goto Error
+-		}
+-		x.mode = novalue
+-
+-	case _Imag, _Real:
+-		if !isComplex(x.typ) {
+-			check.invalidArg(x.pos(), "%s must be a complex number", x)
+-			goto Error
+-		}
+-		if x.mode == constant {
+-			// nothing to do for x.val == 0
+-			if !isZeroConst(x.val) {
+-				c := x.val.(Complex)
+-				if id == _Real {
+-					x.val = c.Re
+-				} else {
+-					x.val = c.Im
+-				}
+-			}
+-		} else {
+-			x.mode = value
+-		}
+-		k := Invalid
+-		switch underlying(x.typ).(*Basic).Kind {
+-		case Complex64:
+-			k = Float32
+-		case Complex128:
+-			k = Float64
+-		case UntypedComplex:
+-			k = UntypedFloat
+-		default:
+-			unreachable()
+-		}
+-		x.typ = Typ[k]
+-
+-	case _Make:
+-		resultTyp := check.typ(arg0, false)
+-		if resultTyp == Typ[Invalid] {
+-			goto Error
+-		}
+-		var min int // minimum number of arguments
+-		switch underlying(resultTyp).(type) {
+-		case *Slice:
+-			min = 2
+-		case *Map, *Chan:
+-			min = 1
+-		default:
+-			check.invalidArg(arg0.Pos(), "cannot make %s; type must be slice, map, or channel", arg0)
+-			goto Error
+-		}
+-		if n := len(args); n < min || min+1 < n {
+-			check.errorf(call.Pos(), "%s expects %d or %d arguments; found %d", call, min, min+1, n)
+-			goto Error
+-		}
+-		var sizes []interface{} // constant integer arguments, if any
+-		for _, arg := range args[1:] {
+-			check.expr(x, arg, nil, iota)
+-			if x.isInteger() {
+-				if x.mode == constant {
+-					if isNegConst(x.val) {
+-						check.invalidArg(x.pos(), "%s must not be negative", x)
+-						// safe to continue
+-					} else {
+-						sizes = append(sizes, x.val) // x.val >= 0
+-					}
+-				}
+-			} else {
+-				check.invalidArg(x.pos(), "%s must be an integer", x)
+-				// safe to continue
+-			}
+-		}
+-		if len(sizes) == 2 && compareConst(sizes[0], sizes[1], token.GTR) {
+-			check.invalidArg(args[1].Pos(), "length and capacity swapped")
+-			// safe to continue
+-		}
+-		x.mode = variable
+-		x.typ = resultTyp
+-
+-	case _New:
+-		resultTyp := check.typ(arg0, false)
+-		if resultTyp == Typ[Invalid] {
+-			goto Error
+-		}
+-		x.mode = variable
+-		x.typ = &Pointer{Base: resultTyp}
+-
+-	case _Panic, _Print, _Println:
+-		for _, arg := range args[1:] {
+-			check.expr(x, arg, nil, -1)
+-		}
+-		x.mode = novalue
+-
+-	case _Recover:
+-		x.mode = value
+-		x.typ = new(Interface)
+-
+-	case _Alignof:
+-		x.mode = constant
+-		x.typ = Typ[Uintptr]
+-		// For now we return 1 always as it satisfies the spec's alignment guarantees.
+-		// TODO(gri) Extend typechecker API so that platform-specific values can be
+-		//           provided.
+-		x.val = int64(1)
+-
+-	case _Offsetof:
+-		if _, ok := unparen(x.expr).(*ast.SelectorExpr); !ok {
+-			check.invalidArg(x.pos(), "%s is not a selector", x)
+-			goto Error
+-		}
+-		x.mode = constant
+-		x.typ = Typ[Uintptr]
+-		// because of the size guarantees for basic types (> 0 for some),
+-		// returning 0 is only correct if two distinct non-zero size
+-		// structs can have the same address (the spec permits that)
+-		x.val = int64(0)
+-
+-	case _Sizeof:
+-		x.mode = constant
+-		x.val = sizeof(check.ctxt, x.typ)
+-		x.typ = Typ[Uintptr]
+-
+-	case _Assert:
+-		// assert(pred) causes a typechecker error if pred is false.
+-		// The result of assert is the value of pred if there is no error.
+-		// Note: assert is only available in self-test mode.
+-		if x.mode != constant || !isBoolean(x.typ) {
+-			check.invalidArg(x.pos(), "%s is not a boolean constant", x)
+-			goto Error
+-		}
+-		pred, ok := x.val.(bool)
+-		if !ok {
+-			check.errorf(x.pos(), "internal error: value of %s should be a boolean constant", x)
+-			goto Error
+-		}
+-		if !pred {
+-			check.errorf(call.Pos(), "%s failed", call)
+-			// compile-time assertion failure - safe to continue
+-		}
+-
+-	case _Trace:
+-		// trace(x, y, z, ...) dumps the positions, expressions, and
+-		// values of its arguments. The result of trace is the value
+-		// of the first argument.
+-		// Note: trace is only available in self-test mode.
+-		if len(args) == 0 {
+-			check.dump("%s: trace() without arguments", call.Pos())
+-			x.mode = novalue
+-			x.expr = call
+-			return
+-		}
+-		var t operand
+-		x1 := x
+-		for _, arg := range args {
+-			check.rawExpr(x1, arg, nil, iota, true) // permit trace for types, e.g.: new(trace(T))
+-			check.dump("%s: %s", x1.pos(), x1)
+-			x1 = &t // use incoming x only for first argument
+-		}
+-
+-	default:
+-		check.invalidAST(call.Pos(), "unknown builtin id %d", id)
+-		goto Error
+-	}
+-
+-	x.expr = call
+-	return
+-
+-Error:
+-	x.mode = invalid
+-	x.expr = call
+-}
+-
+-// implicitDeref returns A if typ is of the form *A and A is an array;
+-// otherwise it returns typ.
+-//
+-func implicitDeref(typ Type) Type {
+-	if p, ok := typ.(*Pointer); ok {
+-		if a, ok := underlying(p.Base).(*Array); ok {
+-			return a
+-		}
+-	}
+-	return typ
+-}
+-
+-// containsCallsOrReceives returns true if the expression x contains
+-// function calls or channel receives; it returns false otherwise.
+-//
+-func containsCallsOrReceives(x ast.Expr) bool {
+-	res := false
+-	ast.Inspect(x, func(x ast.Node) bool {
+-		switch x := x.(type) {
+-		case *ast.CallExpr:
+-			res = true
+-			return false
+-		case *ast.UnaryExpr:
+-			if x.Op == token.ARROW {
+-				res = true
+-				return false
+-			}
+-		}
+-		return true
+-	})
+-	return res
+-}
+-
+-// unparen removes any parentheses surrounding an expression and returns
+-// the naked expression.
+-//
+-func unparen(x ast.Expr) ast.Expr {
+-	if p, ok := x.(*ast.ParenExpr); ok {
+-		return unparen(p.X)
+-	}
+-	return x
+-}
+-
+-func (check *checker) complexArg(x *operand) bool {
+-	t, _ := underlying(x.typ).(*Basic)
+-	if t != nil && (t.Info&IsFloat != 0 || t.Kind == UntypedInt || t.Kind == UntypedRune) {
+-		return true
+-	}
+-	check.invalidArg(x.pos(), "%s must be a float32, float64, or an untyped non-complex numeric constant", x)
+-	return false
+-}
+-
+-func sizeof(ctxt *Context, typ Type) int64 {
+-	switch typ := underlying(typ).(type) {
+-	case *Basic:
+-		switch typ.Kind {
+-		case Int, Uint:
+-			return ctxt.IntSize
+-		case Uintptr:
+-			return ctxt.PtrSize
+-		}
+-		return typ.Size
+-	case *Array:
+-		return sizeof(ctxt, typ.Elt) * typ.Len
+-	case *Struct:
+-		var size int64
+-		for _, f := range typ.Fields {
+-			size += sizeof(ctxt, f.Type)
+-		}
+-		return size
+-	}
+-	return ctxt.PtrSize // good enough
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/check.go gcc-4.8.1/libgo/go/go/types/check.go
+--- gcc-4.8.1.orig/libgo/go/go/types/check.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/check.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,454 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements the Check function, which typechecks a package.
+-
+-package types
+-
+-import (
+-	"fmt"
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// enable for debugging
+-const trace = false
+-
+-type checker struct {
+-	ctxt  *Context
+-	fset  *token.FileSet
+-	files []*ast.File
+-
+-	// lazily initialized
+-	pkg       *Package                          // current package
+-	firsterr  error                             // first error encountered
+-	idents    map[*ast.Ident]Object             // maps identifiers to their unique object
+-	objects   map[*ast.Object]Object            // maps *ast.Objects to their unique object
+-	initspecs map[*ast.ValueSpec]*ast.ValueSpec // "inherited" type and initialization expressions for constant declarations
+-	methods   map[*TypeName]*Scope              // maps type names to associated methods
+-	funclist  []function                        // list of functions/methods with correct signatures and non-empty bodies
+-	funcsig   *Signature                        // signature of currently typechecked function
+-	pos       []token.Pos                       // stack of expr positions; debugging support, used if trace is set
+-}
+-
+-func (check *checker) register(id *ast.Ident, obj Object) {
+-	// When an expression is evaluated more than once (happens
+-	// in rare cases, e.g. for statement expressions, see
+-	// comment in stmt.go), the object has been registered
+-	// before. Don't do anything in that case.
+-	if alt := check.idents[id]; alt != nil {
+-		assert(alt == obj)
+-		return
+-	}
+-	check.idents[id] = obj
+-	if f := check.ctxt.Ident; f != nil {
+-		f(id, obj)
+-	}
+-}
+-
+-// lookup returns the unique Object denoted by the identifier.
+-// For identifiers without assigned *ast.Object, it uses the
+-// checker.idents map; for identifiers with an *ast.Object it
+-// uses the checker.objects map.
+-//
+-// TODO(gri) Once identifier resolution is done entirely by
+-//           the typechecker, only the idents map is needed.
+-//
+-func (check *checker) lookup(ident *ast.Ident) Object {
+-	obj := check.idents[ident]
+-	astObj := ident.Obj
+-
+-	if obj != nil {
+-		assert(astObj == nil || check.objects[astObj] == nil || check.objects[astObj] == obj)
+-		return obj
+-	}
+-
+-	if astObj == nil {
+-		return nil
+-	}
+-
+-	if obj = check.objects[astObj]; obj == nil {
+-		obj = newObj(astObj)
+-		check.objects[astObj] = obj
+-	}
+-	check.register(ident, obj)
+-
+-	return obj
+-}
+-
+-type function struct {
+-	obj  *Func // for debugging/tracing only
+-	sig  *Signature
+-	body *ast.BlockStmt
+-}
+-
+-// later adds a function with non-empty body to the list of functions
+-// that need to be processed after all package-level declarations
+-// are typechecked.
+-//
+-func (check *checker) later(f *Func, sig *Signature, body *ast.BlockStmt) {
+-	// functions implemented elsewhere (say in assembly) have no body
+-	if body != nil {
+-		check.funclist = append(check.funclist, function{f, sig, body})
+-	}
+-}
+-
+-func (check *checker) declareIdent(scope *Scope, ident *ast.Ident, obj Object) {
+-	assert(check.lookup(ident) == nil) // identifier already declared or resolved
+-	check.register(ident, obj)
+-	if ident.Name != "_" {
+-		if alt := scope.Insert(obj); alt != nil {
+-			prevDecl := ""
+-			if pos := alt.GetPos(); pos.IsValid() {
+-				prevDecl = fmt.Sprintf("\n\tprevious declaration at %s", check.fset.Position(pos))
+-			}
+-			check.errorf(ident.Pos(), fmt.Sprintf("%s redeclared in this block%s", ident.Name, prevDecl))
+-		}
+-	}
+-}
+-
+-func (check *checker) valueSpec(pos token.Pos, obj Object, lhs []*ast.Ident, spec *ast.ValueSpec, iota int) {
+-	if len(lhs) == 0 {
+-		check.invalidAST(pos, "missing lhs in declaration")
+-		return
+-	}
+-
+-	// determine type for all of lhs, if any
+-	// (but only set it for the object we typecheck!)
+-	var typ Type
+-	if spec.Type != nil {
+-		typ = check.typ(spec.Type, false)
+-	}
+-
+-	// len(lhs) > 0
+-	rhs := spec.Values
+-	if len(lhs) == len(rhs) {
+-		// check only lhs and rhs corresponding to obj
+-		var l, r ast.Expr
+-		for i, name := range lhs {
+-			if check.lookup(name) == obj {
+-				l = lhs[i]
+-				r = rhs[i]
+-				break
+-			}
+-		}
+-		assert(l != nil)
+-		switch obj := obj.(type) {
+-		case *Const:
+-			obj.Type = typ
+-		case *Var:
+-			obj.Type = typ
+-		default:
+-			unreachable()
+-		}
+-		check.assign1to1(l, r, nil, true, iota)
+-		return
+-	}
+-
+-	// there must be a type or initialization expressions
+-	if typ == nil && len(rhs) == 0 {
+-		check.invalidAST(pos, "missing type or initialization expression")
+-		typ = Typ[Invalid]
+-	}
+-
+-	// if we have a type, mark all of lhs
+-	if typ != nil {
+-		for _, name := range lhs {
+-			switch obj := check.lookup(name).(type) {
+-			case *Const:
+-				obj.Type = typ
+-			case *Var:
+-				obj.Type = typ
+-			default:
+-				unreachable()
+-			}
+-		}
+-	}
+-
+-	// check initial values, if any
+-	if len(rhs) > 0 {
+-		// TODO(gri) should try to avoid this conversion
+-		lhx := make([]ast.Expr, len(lhs))
+-		for i, e := range lhs {
+-			lhx[i] = e
+-		}
+-		check.assignNtoM(lhx, rhs, true, iota)
+-	}
+-}
+-
+-// object typechecks an object by assigning it a type.
+-//
+-func (check *checker) object(obj Object, cycleOk bool) {
+-	switch obj := obj.(type) {
+-	case *Package:
+-		// nothing to do
+-	case *Const:
+-		if obj.Type != nil {
+-			return // already checked
+-		}
+-		// The obj.Val field for constants is initialized to its respective
+-		// iota value by the parser.
+-		// The object's fields can be in one of the following states:
+-		// Type != nil  =>  the constant value is Val
+-		// Type == nil  =>  the constant is not typechecked yet, and Val can be:
+-		// Val  is int  =>  Val is the value of iota for this declaration
+-		// Val  == nil  =>  the object's expression is being evaluated
+-		if obj.Val == nil {
+-			check.errorf(obj.GetPos(), "illegal cycle in initialization of %s", obj.Name)
+-			obj.Type = Typ[Invalid]
+-			return
+-		}
+-		spec := obj.spec
+-		iota := obj.Val.(int)
+-		obj.Val = nil // mark obj as "visited" for cycle detection
+-		// determine spec for type and initialization expressions
+-		init := spec
+-		if len(init.Values) == 0 {
+-			init = check.initspecs[spec]
+-		}
+-		check.valueSpec(spec.Pos(), obj, spec.Names, init, iota)
+-
+-	case *Var:
+-		if obj.Type != nil {
+-			return // already checked
+-		}
+-		if obj.visited {
+-			check.errorf(obj.GetPos(), "illegal cycle in initialization of %s", obj.Name)
+-			obj.Type = Typ[Invalid]
+-			return
+-		}
+-		spec := obj.decl.(*ast.ValueSpec)
+-		obj.visited = true
+-		check.valueSpec(spec.Pos(), obj, spec.Names, spec, 0)
+-
+-	case *TypeName:
+-		if obj.Type != nil {
+-			return // already checked
+-		}
+-		typ := &NamedType{Obj: obj}
+-		obj.Type = typ // "mark" object so recursion terminates
+-		typ.Underlying = underlying(check.typ(obj.spec.Type, cycleOk))
+-		// typecheck associated method signatures
+-		if scope := check.methods[obj]; scope != nil {
+-			switch t := typ.Underlying.(type) {
+-			case *Struct:
+-				// struct fields must not conflict with methods
+-				for _, f := range t.Fields {
+-					if m := scope.Lookup(f.Name); m != nil {
+-						check.errorf(m.GetPos(), "type %s has both field and method named %s", obj.Name, f.Name)
+-						// ok to continue
+-					}
+-				}
+-			case *Interface:
+-				// methods cannot be associated with an interface type
+-				for _, m := range scope.Entries {
+-					recv := m.(*Func).decl.Recv.List[0].Type
+-					check.errorf(recv.Pos(), "invalid receiver type %s (%s is an interface type)", obj.Name, obj.Name)
+-					// ok to continue
+-				}
+-			}
+-			// typecheck method signatures
+-			var methods []*Method
+-			for _, obj := range scope.Entries {
+-				m := obj.(*Func)
+-				sig := check.typ(m.decl.Type, cycleOk).(*Signature)
+-				params, _ := check.collectParams(m.decl.Recv, false)
+-				sig.Recv = params[0] // the parser/assocMethod ensure there is exactly one parameter
+-				m.Type = sig
+-				methods = append(methods, &Method{QualifiedName{check.pkg, m.Name}, sig})
+-				check.later(m, sig, m.decl.Body)
+-			}
+-			typ.Methods = methods
+-			delete(check.methods, obj) // we don't need this scope anymore
+-		}
+-
+-	case *Func:
+-		if obj.Type != nil {
+-			return // already checked
+-		}
+-		fdecl := obj.decl
+-		// methods are typechecked when their receivers are typechecked
+-		if fdecl.Recv == nil {
+-			sig := check.typ(fdecl.Type, cycleOk).(*Signature)
+-			if obj.Name == "init" && (len(sig.Params) != 0 || len(sig.Results) != 0) {
+-				check.errorf(fdecl.Pos(), "func init must have no arguments and no return values")
+-				// ok to continue
+-			}
+-			obj.Type = sig
+-			check.later(obj, sig, fdecl.Body)
+-		}
+-
+-	default:
+-		unreachable()
+-	}
+-}
+-
+-// assocInitvals associates "inherited" initialization expressions
+-// with the corresponding *ast.ValueSpec in the check.initspecs map
+-// for constant declarations without explicit initialization expressions.
+-//
+-func (check *checker) assocInitvals(decl *ast.GenDecl) {
+-	var last *ast.ValueSpec
+-	for _, s := range decl.Specs {
+-		if s, ok := s.(*ast.ValueSpec); ok {
+-			if len(s.Values) > 0 {
+-				last = s
+-			} else {
+-				check.initspecs[s] = last
+-			}
+-		}
+-	}
+-	if last == nil {
+-		check.invalidAST(decl.Pos(), "no initialization values provided")
+-	}
+-}
+-
+-// assocMethod associates a method declaration with the respective
+-// receiver base type. meth.Recv must exist.
+-//
+-func (check *checker) assocMethod(meth *ast.FuncDecl) {
+-	// The receiver type is one of the following (enforced by parser):
+-	// - *ast.Ident
+-	// - *ast.StarExpr{*ast.Ident}
+-	// - *ast.BadExpr (parser error)
+-	typ := meth.Recv.List[0].Type
+-	if ptr, ok := typ.(*ast.StarExpr); ok {
+-		typ = ptr.X
+-	}
+-	// determine receiver base type name
+-	ident, ok := typ.(*ast.Ident)
+-	if !ok {
+-		// not an identifier - parser reported error already
+-		return // ignore this method
+-	}
+-	// determine receiver base type object
+-	var tname *TypeName
+-	if obj := check.lookup(ident); obj != nil {
+-		obj, ok := obj.(*TypeName)
+-		if !ok {
+-			check.errorf(ident.Pos(), "%s is not a type", ident.Name)
+-			return // ignore this method
+-		}
+-		if obj.spec == nil {
+-			check.errorf(ident.Pos(), "cannot define method on non-local type %s", ident.Name)
+-			return // ignore this method
+-		}
+-		tname = obj
+-	} else {
+-		// identifier not declared/resolved - parser reported error already
+-		return // ignore this method
+-	}
+-	// declare method in receiver base type scope
+-	scope := check.methods[tname]
+-	if scope == nil {
+-		scope = new(Scope)
+-		check.methods[tname] = scope
+-	}
+-	check.declareIdent(scope, meth.Name, &Func{Name: meth.Name.Name, decl: meth})
+-}
+-
+-func (check *checker) decl(decl ast.Decl) {
+-	switch d := decl.(type) {
+-	case *ast.BadDecl:
+-		// ignore
+-	case *ast.GenDecl:
+-		for _, spec := range d.Specs {
+-			switch s := spec.(type) {
+-			case *ast.ImportSpec:
+-				// nothing to do (handled by check.resolve)
+-			case *ast.ValueSpec:
+-				for _, name := range s.Names {
+-					check.object(check.lookup(name), false)
+-				}
+-			case *ast.TypeSpec:
+-				check.object(check.lookup(s.Name), false)
+-			default:
+-				check.invalidAST(s.Pos(), "unknown ast.Spec node %T", s)
+-			}
+-		}
+-	case *ast.FuncDecl:
+-		// methods are checked when their respective base types are checked
+-		if d.Recv != nil {
+-			return
+-		}
+-		obj := check.lookup(d.Name)
+-		// Initialization functions don't have an object associated with them
+-		// since they are not in any scope. Create a dummy object for them.
+-		if d.Name.Name == "init" {
+-			assert(obj == nil) // all other functions should have an object
+-			obj = &Func{Name: d.Name.Name, decl: d}
+-			check.register(d.Name, obj)
+-		}
+-		check.object(obj, false)
+-	default:
+-		check.invalidAST(d.Pos(), "unknown ast.Decl node %T", d)
+-	}
+-}
+-
+-// A bailout panic is raised to indicate early termination.
+-type bailout struct{}
+-
+-func check(ctxt *Context, fset *token.FileSet, files []*ast.File) (pkg *Package, err error) {
+-	// initialize checker
+-	check := checker{
+-		ctxt:      ctxt,
+-		fset:      fset,
+-		files:     files,
+-		idents:    make(map[*ast.Ident]Object),
+-		objects:   make(map[*ast.Object]Object),
+-		initspecs: make(map[*ast.ValueSpec]*ast.ValueSpec),
+-		methods:   make(map[*TypeName]*Scope),
+-	}
+-
+-	// handle panics
+-	defer func() {
+-		switch p := recover().(type) {
+-		case nil, bailout:
+-			// normal return or early exit
+-			err = check.firsterr
+-		default:
+-			// unexpected panic: don't crash clients
+-			panic(p) // enable for debugging
+-			// TODO(gri) add a test case for this scenario
+-			err = fmt.Errorf("types internal error: %v", p)
+-		}
+-	}()
+-
+-	// resolve identifiers
+-	imp := ctxt.Import
+-	if imp == nil {
+-		imp = GcImport
+-	}
+-	pkg, methods := check.resolve(imp)
+-	check.pkg = pkg
+-
+-	// associate methods with types
+-	for _, m := range methods {
+-		check.assocMethod(m)
+-	}
+-
+-	// typecheck all declarations
+-	for _, f := range check.files {
+-		for _, d := range f.Decls {
+-			check.decl(d)
+-		}
+-	}
+-
+-	// typecheck all function/method bodies
+-	// (funclist may grow when checking statements - do not use range clause!)
+-	for i := 0; i < len(check.funclist); i++ {
+-		f := check.funclist[i]
+-		if trace {
+-			s := "<function literal>"
+-			if f.obj != nil {
+-				s = f.obj.Name
+-			}
+-			fmt.Println("---", s)
+-		}
+-		check.funcsig = f.sig
+-		check.stmtList(f.body.List)
+-	}
+-
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/check_test.go gcc-4.8.1/libgo/go/go/types/check_test.go
+--- gcc-4.8.1.orig/libgo/go/go/types/check_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/check_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,262 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements a typechecker test harness. The packages specified
+-// in tests are typechecked. Error messages reported by the typechecker are
+-// compared against the error messages expected in the test files.
+-//
+-// Expected errors are indicated in the test files by putting a comment
+-// of the form /* ERROR "rx" */ immediately following an offending token.
+-// The harness will verify that an error matching the regular expression
+-// rx is reported at that source position. Consecutive comments may be
+-// used to indicate multiple errors for the same token position.
+-//
+-// For instance, the following test file indicates that a "not declared"
+-// error should be reported for the undeclared variable x:
+-//
+-//	package p
+-//	func f() {
+-//		_ = x /* ERROR "not declared" */ + 1
+-//	}
+-
+-package types
+-
+-import (
+-	"flag"
+-	"fmt"
+-	"go/ast"
+-	"go/parser"
+-	"go/scanner"
+-	"go/token"
+-	"io/ioutil"
+-	"os"
+-	"regexp"
+-	"testing"
+-)
+-
+-var listErrors = flag.Bool("list", false, "list errors")
+-
+-// The test filenames do not end in .go so that they are invisible
+-// to gofmt since they contain comments that must not change their
+-// positions relative to surrounding tokens.
+-
+-var tests = []struct {
+-	name  string
+-	files []string
+-}{
+-	{"decls0", []string{"testdata/decls0.src"}},
+-	{"decls1", []string{"testdata/decls1.src"}},
+-	{"decls2", []string{"testdata/decls2a.src", "testdata/decls2b.src"}},
+-	{"decls3", []string{"testdata/decls3.src"}},
+-	{"const0", []string{"testdata/const0.src"}},
+-	{"expr0", []string{"testdata/expr0.src"}},
+-	{"expr1", []string{"testdata/expr1.src"}},
+-	{"expr2", []string{"testdata/expr2.src"}},
+-	{"expr3", []string{"testdata/expr3.src"}},
+-	{"builtins", []string{"testdata/builtins.src"}},
+-	{"conversions", []string{"testdata/conversions.src"}},
+-	{"stmt0", []string{"testdata/stmt0.src"}},
+-}
+-
+-var fset = token.NewFileSet()
+-
+-func getFile(filename string) (file *token.File) {
+-	fset.Iterate(func(f *token.File) bool {
+-		if f.Name() == filename {
+-			file = f
+-			return false // end iteration
+-		}
+-		return true
+-	})
+-	return file
+-}
+-
+-// Positioned errors are of the form filename:line:column: message .
+-var posMsgRx = regexp.MustCompile(`^(.*:[0-9]+:[0-9]+): *(.*)`)
+-
+-// splitError splits an error's error message into a position string
+-// and the actual error message. If there's no position information,
+-// pos is the empty string, and msg is the entire error message.
+-//
+-func splitError(err error) (pos, msg string) {
+-	msg = err.Error()
+-	if m := posMsgRx.FindStringSubmatch(msg); len(m) == 3 {
+-		pos = m[1]
+-		msg = m[2]
+-	}
+-	return
+-}
+-
+-func parseFiles(t *testing.T, testname string, filenames []string) ([]*ast.File, []error) {
+-	var files []*ast.File
+-	var errlist []error
+-	for _, filename := range filenames {
+-		file, err := parser.ParseFile(fset, filename, nil, parser.DeclarationErrors)
+-		if file == nil {
+-			t.Fatalf("%s: could not parse file %s", testname, filename)
+-		}
+-		files = append(files, file)
+-		if err != nil {
+-			if list, _ := err.(scanner.ErrorList); len(list) > 0 {
+-				for _, err := range list {
+-					errlist = append(errlist, err)
+-				}
+-			} else {
+-				errlist = append(errlist, err)
+-			}
+-		}
+-	}
+-	return files, errlist
+-}
+-
+-// ERROR comments must be of the form /* ERROR "rx" */ and rx is
+-// a regular expression that matches the expected error message.
+-//
+-var errRx = regexp.MustCompile(`^/\* *ERROR *"([^"]*)" *\*/$`)
+-
+-// errMap collects the regular expressions of ERROR comments found
+-// in files and returns them as a map of error positions to error messages.
+-//
+-func errMap(t *testing.T, testname string, files []*ast.File) map[string][]string {
+-	errmap := make(map[string][]string)
+-
+-	for _, file := range files {
+-		filename := fset.Position(file.Package).Filename
+-		src, err := ioutil.ReadFile(filename)
+-		if err != nil {
+-			t.Fatalf("%s: could not read %s", testname, filename)
+-		}
+-
+-		var s scanner.Scanner
+-		// file was parsed already - do not add it again to the file
+-		// set otherwise the position information returned here will
+-		// not match the position information collected by the parser
+-		s.Init(getFile(filename), src, nil, scanner.ScanComments)
+-		var prev string // position string of last non-comment, non-semicolon token
+-
+-	scanFile:
+-		for {
+-			pos, tok, lit := s.Scan()
+-			switch tok {
+-			case token.EOF:
+-				break scanFile
+-			case token.COMMENT:
+-				s := errRx.FindStringSubmatch(lit)
+-				if len(s) == 2 {
+-					errmap[prev] = append(errmap[prev], string(s[1]))
+-				}
+-			case token.SEMICOLON:
+-				// ignore automatically inserted semicolon
+-				if lit == "\n" {
+-					continue scanFile
+-				}
+-				fallthrough
+-			default:
+-				prev = fset.Position(pos).String()
+-			}
+-		}
+-	}
+-
+-	return errmap
+-}
+-
+-func eliminate(t *testing.T, errmap map[string][]string, errlist []error) {
+-	for _, err := range errlist {
+-		pos, msg := splitError(err)
+-		list := errmap[pos]
+-		index := -1 // list index of matching message, if any
+-		// we expect one of the messages in list to match the error at pos
+-		for i, msg := range list {
+-			rx, err := regexp.Compile(msg)
+-			if err != nil {
+-				t.Errorf("%s: %v", pos, err)
+-				continue
+-			}
+-			if rx.MatchString(msg) {
+-				index = i
+-				break
+-			}
+-		}
+-		if index >= 0 {
+-			// eliminate from list
+-			if n := len(list) - 1; n > 0 {
+-				// not the last entry - swap in last element and shorten list by 1
+-				list[index] = list[n]
+-				errmap[pos] = list[:n]
+-			} else {
+-				// last entry - remove list from map
+-				delete(errmap, pos)
+-			}
+-		} else {
+-			t.Errorf("%s: no error expected: %q", pos, msg)
+-		}
+-
+-	}
+-}
+-
+-func checkFiles(t *testing.T, testname string, testfiles []string) {
+-	// parse files and collect parser errors
+-	files, errlist := parseFiles(t, testname, testfiles)
+-
+-	// typecheck and collect typechecker errors
+-	ctxt := Default
+-	ctxt.Error = func(err error) { errlist = append(errlist, err) }
+-	ctxt.Check(fset, files)
+-
+-	if *listErrors {
+-		t.Errorf("--- %s: %d errors found:", testname, len(errlist))
+-		for _, err := range errlist {
+-			t.Error(err)
+-		}
+-		return
+-	}
+-
+-	// match and eliminate errors
+-	// we are expecting the following errors
+-	// (collect these after parsing the files so that
+-	// they are found in the file set)
+-	errmap := errMap(t, testname, files)
+-	eliminate(t, errmap, errlist)
+-
+-	// there should be no expected errors left
+-	if len(errmap) > 0 {
+-		t.Errorf("--- %s: %d source positions with expected (but not reported) errors:", testname, len(errmap))
+-		for pos, list := range errmap {
+-			for _, rx := range list {
+-				t.Errorf("%s: %q", pos, rx)
+-			}
+-		}
+-	}
+-}
+-
+-var testBuiltinsDeclared = false
+-
+-func TestCheck(t *testing.T) {
+-	// Does not work with gccgo, because it requires reading gc
+-	// import files.
+-	return
+-
+-	// Declare builtins for testing.
+-	// Not done in an init func to avoid an init race with
+-	// the construction of the Universe var.
+-	if !testBuiltinsDeclared {
+-		testBuiltinsDeclared = true
+-		def(&Func{Name: "assert", Type: &builtin{_Assert, "assert", 1, false, true}})
+-		def(&Func{Name: "trace", Type: &builtin{_Trace, "trace", 0, true, true}})
+-	}
+-
+-	// For easy debugging w/o changing the testing code,
+-	// if there is a local test file, only test that file.
+-	const testfile = "testdata/test.go"
+-	if fi, err := os.Stat(testfile); err == nil && !fi.IsDir() {
+-		fmt.Printf("WARNING: Testing only %s (remove it to run all tests)\n", testfile)
+-		checkFiles(t, testfile, []string{testfile})
+-		return
+-	}
+-
+-	// Otherwise, run all the tests.
+-	for _, test := range tests {
+-		checkFiles(t, test.name, test.files)
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/const.go gcc-4.8.1/libgo/go/go/types/const.go
+--- gcc-4.8.1.orig/libgo/go/go/types/const.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/const.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,734 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements operations on constant values.
+-
+-package types
+-
+-import (
+-	"fmt"
+-	"go/token"
+-	"math/big"
+-	"strconv"
+-)
+-
+-// TODO(gri) At the moment, constants are different types
+-// passed around as interface{} values. Consider introducing
+-// a Const type and use methods instead of xConst functions.
+-
+-// Representation of constant values.
+-//
+-// bool     ->  bool (true, false)
+-// numeric  ->  int64, *big.Int, *big.Rat, Complex (ordered by increasing data structure "size")
+-// string   ->  string
+-// nil      ->  NilType (nilConst)
+-//
+-// Numeric constants are normalized after each operation such
+-// that they are represented by the "smallest" data structure
+-// required to represent the constant, independent of actual
+-// type. Non-numeric constants are always normalized.
+-
+-// Representation of complex numbers.
+-type Complex struct {
+-	Re, Im *big.Rat
+-}
+-
+-func (c Complex) String() string {
+-	if c.Re.Sign() == 0 {
+-		return fmt.Sprintf("%si", c.Im)
+-	}
+-	// normalized complex values always have an imaginary part
+-	return fmt.Sprintf("(%s + %si)", c.Re, c.Im)
+-}
+-
+-// Representation of nil.
+-type NilType struct{}
+-
+-func (NilType) String() string {
+-	return "nil"
+-}
+-
+-// Implementation-specific constants.
+-// TODO(gri) These need to go elsewhere.
+-const (
+-	intBits = 32
+-	ptrBits = 64
+-)
+-
+-// Frequently used values.
+-var (
+-	nilConst  = NilType{}
+-	zeroConst = int64(0)
+-)
+-
+-// int64 bounds
+-var (
+-	minInt64 = big.NewInt(-1 << 63)
+-	maxInt64 = big.NewInt(1<<63 - 1)
+-)
+-
+-// normalizeIntConst returns the smallest constant representation
+-// for the specific value of x; either an int64 or a *big.Int value.
+-//
+-func normalizeIntConst(x *big.Int) interface{} {
+-	if minInt64.Cmp(x) <= 0 && x.Cmp(maxInt64) <= 0 {
+-		return x.Int64()
+-	}
+-	return x
+-}
+-
+-// normalizeRatConst returns the smallest constant representation
+-// for the specific value of x; either an int64, *big.Int,
+-// or *big.Rat value.
+-//
+-func normalizeRatConst(x *big.Rat) interface{} {
+-	if x.IsInt() {
+-		return normalizeIntConst(x.Num())
+-	}
+-	return x
+-}
+-
+-// newComplex returns the smallest constant representation
+-// for the specific value re + im*i; either an int64, *big.Int,
+-// *big.Rat, or complex value.
+-//
+-func newComplex(re, im *big.Rat) interface{} {
+-	if im.Sign() == 0 {
+-		return normalizeRatConst(re)
+-	}
+-	return Complex{re, im}
+-}
+-
+-// makeRuneConst returns the int64 code point for the rune literal
+-// lit. The result is nil if lit is not a correct rune literal.
+-//
+-func makeRuneConst(lit string) interface{} {
+-	if n := len(lit); n >= 2 {
+-		if code, _, _, err := strconv.UnquoteChar(lit[1:n-1], '\''); err == nil {
+-			return int64(code)
+-		}
+-	}
+-	return nil
+-}
+-
+-// makeRuneConst returns the smallest integer constant representation
+-// (int64, *big.Int) for the integer literal lit. The result is nil if
+-// lit is not a correct integer literal.
+-//
+-func makeIntConst(lit string) interface{} {
+-	if x, err := strconv.ParseInt(lit, 0, 64); err == nil {
+-		return x
+-	}
+-	if x, ok := new(big.Int).SetString(lit, 0); ok {
+-		return x
+-	}
+-	return nil
+-}
+-
+-// makeFloatConst returns the smallest floating-point constant representation
+-// (int64, *big.Int, *big.Rat) for the floating-point literal lit. The result
+-// is nil if lit is not a correct floating-point literal.
+-//
+-func makeFloatConst(lit string) interface{} {
+-	if x, ok := new(big.Rat).SetString(lit); ok {
+-		return normalizeRatConst(x)
+-	}
+-	return nil
+-}
+-
+-// makeComplexConst returns the complex constant representation (Complex) for
+-// the imaginary literal lit. The result is nil if lit is not a correct imaginary
+-// literal.
+-//
+-func makeComplexConst(lit string) interface{} {
+-	n := len(lit)
+-	if n > 0 && lit[n-1] == 'i' {
+-		if im, ok := new(big.Rat).SetString(lit[0 : n-1]); ok {
+-			return newComplex(big.NewRat(0, 1), im)
+-		}
+-	}
+-	return nil
+-}
+-
+-// makeStringConst returns the string constant representation (string) for
+-// the string literal lit. The result is nil if lit is not a correct string
+-// literal.
+-//
+-func makeStringConst(lit string) interface{} {
+-	if s, err := strconv.Unquote(lit); err == nil {
+-		return s
+-	}
+-	return nil
+-}
+-
+-// toImagConst returns the constant Complex(0, x) for a non-complex x.
+-func toImagConst(x interface{}) interface{} {
+-	var im *big.Rat
+-	switch x := x.(type) {
+-	case int64:
+-		im = big.NewRat(x, 1)
+-	case *big.Int:
+-		im = new(big.Rat).SetFrac(x, int1)
+-	case *big.Rat:
+-		im = x
+-	default:
+-		unreachable()
+-	}
+-	return Complex{rat0, im}
+-}
+-
+-// isZeroConst reports whether the value of constant x is 0.
+-// x must be normalized.
+-//
+-func isZeroConst(x interface{}) bool {
+-	i, ok := x.(int64) // good enough since constants are normalized
+-	return ok && i == 0
+-}
+-
+-// isNegConst reports whether the value of constant x is < 0.
+-// x must be a non-complex numeric value.
+-//
+-func isNegConst(x interface{}) bool {
+-	switch x := x.(type) {
+-	case int64:
+-		return x < 0
+-	case *big.Int:
+-		return x.Sign() < 0
+-	case *big.Rat:
+-		return x.Sign() < 0
+-	}
+-	unreachable()
+-	return false
+-}
+-
+-// isRepresentableConst reports whether the value of constant x can
+-// be represented as a value of the basic type Typ[as] without loss
+-// of precision.
+-//
+-func isRepresentableConst(x interface{}, as BasicKind) bool {
+-	switch x := x.(type) {
+-	case bool:
+-		return as == Bool || as == UntypedBool
+-
+-	case int64:
+-		switch as {
+-		case Int:
+-			return -1<<(intBits-1) <= x && x <= 1<<(intBits-1)-1
+-		case Int8:
+-			return -1<<(8-1) <= x && x <= 1<<(8-1)-1
+-		case Int16:
+-			return -1<<(16-1) <= x && x <= 1<<(16-1)-1
+-		case Int32, UntypedRune:
+-			return -1<<(32-1) <= x && x <= 1<<(32-1)-1
+-		case Int64:
+-			return true
+-		case Uint:
+-			return 0 <= x && x <= 1<<intBits-1
+-		case Uint8:
+-			return 0 <= x && x <= 1<<8-1
+-		case Uint16:
+-			return 0 <= x && x <= 1<<16-1
+-		case Uint32:
+-			return 0 <= x && x <= 1<<32-1
+-		case Uint64:
+-			return 0 <= x
+-		case Uintptr:
+-			assert(ptrBits == 64)
+-			return 0 <= x
+-		case Float32:
+-			return true // TODO(gri) fix this
+-		case Float64:
+-			return true // TODO(gri) fix this
+-		case Complex64:
+-			return true // TODO(gri) fix this
+-		case Complex128:
+-			return true // TODO(gri) fix this
+-		case UntypedInt, UntypedFloat, UntypedComplex:
+-			return true
+-		}
+-
+-	case *big.Int:
+-		switch as {
+-		case Uint:
+-			return x.Sign() >= 0 && x.BitLen() <= intBits
+-		case Uint64:
+-			return x.Sign() >= 0 && x.BitLen() <= 64
+-		case Uintptr:
+-			return x.Sign() >= 0 && x.BitLen() <= ptrBits
+-		case Float32:
+-			return true // TODO(gri) fix this
+-		case Float64:
+-			return true // TODO(gri) fix this
+-		case Complex64:
+-			return true // TODO(gri) fix this
+-		case Complex128:
+-			return true // TODO(gri) fix this
+-		case UntypedInt, UntypedFloat, UntypedComplex:
+-			return true
+-		}
+-
+-	case *big.Rat:
+-		switch as {
+-		case Float32:
+-			return true // TODO(gri) fix this
+-		case Float64:
+-			return true // TODO(gri) fix this
+-		case Complex64:
+-			return true // TODO(gri) fix this
+-		case Complex128:
+-			return true // TODO(gri) fix this
+-		case UntypedFloat, UntypedComplex:
+-			return true
+-		}
+-
+-	case Complex:
+-		switch as {
+-		case Complex64:
+-			return true // TODO(gri) fix this
+-		case Complex128:
+-			return true // TODO(gri) fix this
+-		case UntypedComplex:
+-			return true
+-		}
+-
+-	case string:
+-		return as == String || as == UntypedString
+-
+-	case NilType:
+-		return as == UntypedNil || as == UnsafePointer
+-
+-	default:
+-		unreachable()
+-	}
+-
+-	return false
+-}
+-
+-var (
+-	int1 = big.NewInt(1)
+-	rat0 = big.NewRat(0, 1)
+-)
+-
+-// complexity returns a measure of representation complexity for constant x.
+-func complexity(x interface{}) int {
+-	switch x.(type) {
+-	case bool, string, NilType:
+-		return 1
+-	case int64:
+-		return 2
+-	case *big.Int:
+-		return 3
+-	case *big.Rat:
+-		return 4
+-	case Complex:
+-		return 5
+-	}
+-	unreachable()
+-	return 0
+-}
+-
+-// matchConst returns the matching representation (same type) with the
+-// smallest complexity for two constant values x and y. They must be
+-// of the same "kind" (boolean, numeric, string, or NilType).
+-//
+-func matchConst(x, y interface{}) (_, _ interface{}) {
+-	if complexity(x) > complexity(y) {
+-		y, x = matchConst(y, x)
+-		return x, y
+-	}
+-	// complexity(x) <= complexity(y)
+-
+-	switch x := x.(type) {
+-	case bool, Complex, string, NilType:
+-		return x, y
+-
+-	case int64:
+-		switch y := y.(type) {
+-		case int64:
+-			return x, y
+-		case *big.Int:
+-			return big.NewInt(x), y
+-		case *big.Rat:
+-			return big.NewRat(x, 1), y
+-		case Complex:
+-			return Complex{big.NewRat(x, 1), rat0}, y
+-		}
+-
+-	case *big.Int:
+-		switch y := y.(type) {
+-		case *big.Int:
+-			return x, y
+-		case *big.Rat:
+-			return new(big.Rat).SetFrac(x, int1), y
+-		case Complex:
+-			return Complex{new(big.Rat).SetFrac(x, int1), rat0}, y
+-		}
+-
+-	case *big.Rat:
+-		switch y := y.(type) {
+-		case *big.Rat:
+-			return x, y
+-		case Complex:
+-			return Complex{x, rat0}, y
+-		}
+-	}
+-
+-	unreachable()
+-	return nil, nil
+-}
+-
+-// is32bit reports whether x can be represented using 32 bits.
+-func is32bit(x int64) bool {
+-	return -1<<31 <= x && x <= 1<<31-1
+-}
+-
+-// is63bit reports whether x can be represented using 63 bits.
+-func is63bit(x int64) bool {
+-	return -1<<62 <= x && x <= 1<<62-1
+-}
+-
+-// unaryOpConst returns the result of the constant evaluation op x where x is of the given type.
+-func unaryOpConst(x interface{}, op token.Token, typ *Basic) interface{} {
+-	switch op {
+-	case token.ADD:
+-		return x // nothing to do
+-	case token.SUB:
+-		switch x := x.(type) {
+-		case int64:
+-			if z := -x; z != x {
+-				return z // no overflow
+-			}
+-			// overflow - need to convert to big.Int
+-			return normalizeIntConst(new(big.Int).Neg(big.NewInt(x)))
+-		case *big.Int:
+-			return normalizeIntConst(new(big.Int).Neg(x))
+-		case *big.Rat:
+-			return normalizeRatConst(new(big.Rat).Neg(x))
+-		case Complex:
+-			return newComplex(new(big.Rat).Neg(x.Re), new(big.Rat).Neg(x.Im))
+-		}
+-	case token.XOR:
+-		var z big.Int
+-		switch x := x.(type) {
+-		case int64:
+-			z.Not(big.NewInt(x))
+-		case *big.Int:
+-			z.Not(x)
+-		default:
+-			unreachable()
+-		}
+-		// For unsigned types, the result will be negative and
+-		// thus "too large": We must limit the result size to
+-		// the type's size.
+-		if typ.Info&IsUnsigned != 0 {
+-			s := uint(typ.Size) * 8
+-			if s == 0 {
+-				// platform-specific type
+-				// TODO(gri) this needs to be factored out
+-				switch typ.Kind {
+-				case Uint:
+-					s = intBits
+-				case Uintptr:
+-					s = ptrBits
+-				default:
+-					unreachable()
+-				}
+-			}
+-			// z &^= (-1)<<s
+-			z.AndNot(&z, new(big.Int).Lsh(big.NewInt(-1), s))
+-		}
+-		return normalizeIntConst(&z)
+-	case token.NOT:
+-		return !x.(bool)
+-	}
+-	unreachable()
+-	return nil
+-}
+-
+-// binaryOpConst returns the result of the constant evaluation x op y;
+-// both operands must be of the same constant "kind" (boolean, numeric, or string).
+-// If typ is an integer type, division (op == token.QUO) is using integer division
+-// (and the result is guaranteed to be integer) rather than floating-point
+-// division. Division by zero leads to a run-time panic.
+-//
+-func binaryOpConst(x, y interface{}, op token.Token, typ *Basic) interface{} {
+-	x, y = matchConst(x, y)
+-
+-	switch x := x.(type) {
+-	case bool:
+-		y := y.(bool)
+-		switch op {
+-		case token.LAND:
+-			return x && y
+-		case token.LOR:
+-			return x || y
+-		}
+-
+-	case int64:
+-		y := y.(int64)
+-		switch op {
+-		case token.ADD:
+-			// TODO(gri) can do better than this
+-			if is63bit(x) && is63bit(y) {
+-				return x + y
+-			}
+-			return normalizeIntConst(new(big.Int).Add(big.NewInt(x), big.NewInt(y)))
+-		case token.SUB:
+-			// TODO(gri) can do better than this
+-			if is63bit(x) && is63bit(y) {
+-				return x - y
+-			}
+-			return normalizeIntConst(new(big.Int).Sub(big.NewInt(x), big.NewInt(y)))
+-		case token.MUL:
+-			// TODO(gri) can do better than this
+-			if is32bit(x) && is32bit(y) {
+-				return x * y
+-			}
+-			return normalizeIntConst(new(big.Int).Mul(big.NewInt(x), big.NewInt(y)))
+-		case token.REM:
+-			return x % y
+-		case token.QUO:
+-			if typ.Info&IsInteger != 0 {
+-				return x / y
+-			}
+-			return normalizeRatConst(new(big.Rat).SetFrac(big.NewInt(x), big.NewInt(y)))
+-		case token.AND:
+-			return x & y
+-		case token.OR:
+-			return x | y
+-		case token.XOR:
+-			return x ^ y
+-		case token.AND_NOT:
+-			return x &^ y
+-		}
+-
+-	case *big.Int:
+-		y := y.(*big.Int)
+-		var z big.Int
+-		switch op {
+-		case token.ADD:
+-			z.Add(x, y)
+-		case token.SUB:
+-			z.Sub(x, y)
+-		case token.MUL:
+-			z.Mul(x, y)
+-		case token.REM:
+-			z.Rem(x, y)
+-		case token.QUO:
+-			if typ.Info&IsInteger != 0 {
+-				z.Quo(x, y)
+-			} else {
+-				return normalizeRatConst(new(big.Rat).SetFrac(x, y))
+-			}
+-		case token.AND:
+-			z.And(x, y)
+-		case token.OR:
+-			z.Or(x, y)
+-		case token.XOR:
+-			z.Xor(x, y)
+-		case token.AND_NOT:
+-			z.AndNot(x, y)
+-		default:
+-			unreachable()
+-		}
+-		return normalizeIntConst(&z)
+-
+-	case *big.Rat:
+-		y := y.(*big.Rat)
+-		var z big.Rat
+-		switch op {
+-		case token.ADD:
+-			z.Add(x, y)
+-		case token.SUB:
+-			z.Sub(x, y)
+-		case token.MUL:
+-			z.Mul(x, y)
+-		case token.QUO:
+-			z.Quo(x, y)
+-		default:
+-			unreachable()
+-		}
+-		return normalizeRatConst(&z)
+-
+-	case Complex:
+-		y := y.(Complex)
+-		a, b := x.Re, x.Im
+-		c, d := y.Re, y.Im
+-		var re, im big.Rat
+-		switch op {
+-		case token.ADD:
+-			// (a+c) + i(b+d)
+-			re.Add(a, c)
+-			im.Add(b, d)
+-		case token.SUB:
+-			// (a-c) + i(b-d)
+-			re.Sub(a, c)
+-			im.Sub(b, d)
+-		case token.MUL:
+-			// (ac-bd) + i(bc+ad)
+-			var ac, bd, bc, ad big.Rat
+-			ac.Mul(a, c)
+-			bd.Mul(b, d)
+-			bc.Mul(b, c)
+-			ad.Mul(a, d)
+-			re.Sub(&ac, &bd)
+-			im.Add(&bc, &ad)
+-		case token.QUO:
+-			// (ac+bd)/s + i(bc-ad)/s, with s = cc + dd
+-			var ac, bd, bc, ad, s big.Rat
+-			ac.Mul(a, c)
+-			bd.Mul(b, d)
+-			bc.Mul(b, c)
+-			ad.Mul(a, d)
+-			s.Add(c.Mul(c, c), d.Mul(d, d))
+-			re.Add(&ac, &bd)
+-			re.Quo(&re, &s)
+-			im.Sub(&bc, &ad)
+-			im.Quo(&im, &s)
+-		default:
+-			unreachable()
+-		}
+-		return newComplex(&re, &im)
+-
+-	case string:
+-		if op == token.ADD {
+-			return x + y.(string)
+-		}
+-	}
+-
+-	unreachable()
+-	return nil
+-}
+-
+-// shiftConst returns the result of the constant evaluation x op s
+-// where op is token.SHL or token.SHR (<< or >>). x must be an
+-// integer constant.
+-//
+-func shiftConst(x interface{}, s uint, op token.Token) interface{} {
+-	switch x := x.(type) {
+-	case int64:
+-		switch op {
+-		case token.SHL:
+-			z := big.NewInt(x)
+-			return normalizeIntConst(z.Lsh(z, s))
+-		case token.SHR:
+-			return x >> s
+-		}
+-
+-	case *big.Int:
+-		var z big.Int
+-		switch op {
+-		case token.SHL:
+-			return normalizeIntConst(z.Lsh(x, s))
+-		case token.SHR:
+-			return normalizeIntConst(z.Rsh(x, s))
+-		}
+-	}
+-
+-	unreachable()
+-	return nil
+-}
+-
+-// compareConst returns the result of the constant comparison x op y;
+-// both operands must be of the same "kind" (boolean, numeric, string,
+-// or NilType).
+-//
+-func compareConst(x, y interface{}, op token.Token) (z bool) {
+-	x, y = matchConst(x, y)
+-
+-	// x == y  =>  x == y
+-	// x != y  =>  x != y
+-	// x >  y  =>  y <  x
+-	// x >= y  =>  u <= x
+-	swap := false
+-	switch op {
+-	case token.GTR:
+-		swap = true
+-		op = token.LSS
+-	case token.GEQ:
+-		swap = true
+-		op = token.LEQ
+-	}
+-
+-	// x == y  =>    x == y
+-	// x != y  =>  !(x == y)
+-	// x <  y  =>    x <  y
+-	// x <= y  =>  !(y <  x)
+-	negate := false
+-	switch op {
+-	case token.NEQ:
+-		negate = true
+-		op = token.EQL
+-	case token.LEQ:
+-		swap = !swap
+-		negate = true
+-		op = token.LSS
+-	}
+-
+-	if negate {
+-		defer func() { z = !z }()
+-	}
+-
+-	if swap {
+-		x, y = y, x
+-	}
+-
+-	switch x := x.(type) {
+-	case bool:
+-		if op == token.EQL {
+-			return x == y.(bool)
+-		}
+-
+-	case int64:
+-		y := y.(int64)
+-		switch op {
+-		case token.EQL:
+-			return x == y
+-		case token.LSS:
+-			return x < y
+-		}
+-
+-	case *big.Int:
+-		s := x.Cmp(y.(*big.Int))
+-		switch op {
+-		case token.EQL:
+-			return s == 0
+-		case token.LSS:
+-			return s < 0
+-		}
+-
+-	case *big.Rat:
+-		s := x.Cmp(y.(*big.Rat))
+-		switch op {
+-		case token.EQL:
+-			return s == 0
+-		case token.LSS:
+-			return s < 0
+-		}
+-
+-	case Complex:
+-		y := y.(Complex)
+-		if op == token.EQL {
+-			return x.Re.Cmp(y.Re) == 0 && x.Im.Cmp(y.Im) == 0
+-		}
+-
+-	case string:
+-		y := y.(string)
+-		switch op {
+-		case token.EQL:
+-			return x == y
+-		case token.LSS:
+-			return x < y
+-		}
+-
+-	case NilType:
+-		if op == token.EQL {
+-			return x == y.(NilType)
+-		}
+-	}
+-
+-	fmt.Printf("x = %s (%T), y = %s (%T)\n", x, x, y, y)
+-	unreachable()
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/conversions.go gcc-4.8.1/libgo/go/go/types/conversions.go
+--- gcc-4.8.1.orig/libgo/go/go/types/conversions.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/conversions.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,128 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements typechecking of conversions.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-)
+-
+-// conversion typechecks the type conversion conv to type typ. iota is the current
+-// value of iota or -1 if iota doesn't have a value in the current context. The result
+-// of the conversion is returned via x. If the conversion has type errors, the returned
+-// x is marked as invalid (x.mode == invalid).
+-//
+-func (check *checker) conversion(x *operand, conv *ast.CallExpr, typ Type, iota int) {
+-	// all conversions have one argument
+-	if len(conv.Args) != 1 {
+-		check.invalidOp(conv.Pos(), "%s conversion requires exactly one argument", conv)
+-		goto Error
+-	}
+-
+-	// evaluate argument
+-	check.expr(x, conv.Args[0], nil, iota)
+-	if x.mode == invalid {
+-		goto Error
+-	}
+-
+-	if x.mode == constant && isConstType(typ) {
+-		// constant conversion
+-		// TODO(gri) implement this
+-	} else {
+-		// non-constant conversion
+-		if !x.isConvertible(typ) {
+-			check.invalidOp(conv.Pos(), "cannot convert %s to %s", x, typ)
+-			goto Error
+-		}
+-		x.mode = value
+-	}
+-
+-	x.expr = conv
+-	x.typ = typ
+-	return
+-
+-Error:
+-	x.mode = invalid
+-}
+-
+-func (x *operand) isConvertible(T Type) bool {
+-	// "x is assignable to T"
+-	if x.isAssignable(T) {
+-		return true
+-	}
+-
+-	// "x's type and T have identical underlying types"
+-	V := x.typ
+-	Vu := underlying(V)
+-	Tu := underlying(T)
+-	if IsIdentical(Vu, Tu) {
+-		return true
+-	}
+-
+-	// "x's type and T are unnamed pointer types and their pointer base types have identical underlying types"
+-	if V, ok := V.(*Pointer); ok {
+-		if T, ok := T.(*Pointer); ok {
+-			if IsIdentical(underlying(V.Base), underlying(T.Base)) {
+-				return true
+-			}
+-		}
+-	}
+-
+-	// "x's type and T are both integer or floating point types"
+-	if (isInteger(V) || isFloat(V)) && (isInteger(T) || isFloat(T)) {
+-		return true
+-	}
+-
+-	// "x's type and T are both complex types"
+-	if isComplex(V) && isComplex(T) {
+-		return true
+-	}
+-
+-	// "x is an integer or a slice of bytes or runes and T is a string type"
+-	if (isInteger(V) || isBytesOrRunes(Vu)) && isString(T) {
+-		return true
+-	}
+-
+-	// "x is a string and T is a slice of bytes or runes"
+-	if isString(V) && isBytesOrRunes(Tu) {
+-		return true
+-	}
+-
+-	// package unsafe:
+-	// "any pointer or value of underlying type uintptr can be converted into a unsafe.Pointer"
+-	if (isPointer(Vu) || isUintptr(Vu)) && isUnsafePointer(T) {
+-		return true
+-	}
+-	// "and vice versa"
+-	if isUnsafePointer(V) && (isPointer(Tu) || isUintptr(Tu)) {
+-		return true
+-	}
+-
+-	return false
+-}
+-
+-func isUintptr(typ Type) bool {
+-	t, ok := typ.(*Basic)
+-	return ok && t.Kind == Uintptr
+-}
+-
+-func isUnsafePointer(typ Type) bool {
+-	t, ok := typ.(*Basic)
+-	return ok && t.Kind == UnsafePointer
+-}
+-
+-func isPointer(typ Type) bool {
+-	_, ok := typ.(*Pointer)
+-	return ok
+-}
+-
+-func isBytesOrRunes(typ Type) bool {
+-	if s, ok := typ.(*Slice); ok {
+-		t, ok := underlying(s.Elt).(*Basic)
+-		return ok && (t.Kind == Byte || t.Kind == Rune)
+-	}
+-	return false
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/errors.go gcc-4.8.1/libgo/go/go/types/errors.go
+--- gcc-4.8.1.orig/libgo/go/go/types/errors.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/errors.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,331 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements various error reporters.
+-
+-package types
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// TODO(gri) eventually assert and unimplemented should disappear.
+-func assert(p bool) {
+-	if !p {
+-		panic("assertion failed")
+-	}
+-}
+-
+-func unreachable() {
+-	panic("unreachable")
+-}
+-
+-func (check *checker) printTrace(format string, args []interface{}) {
+-	const dots = ".  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  "
+-	n := len(check.pos) - 1
+-	i := 3 * n
+-	for i > len(dots) {
+-		fmt.Print(dots)
+-		i -= len(dots)
+-	}
+-	// i <= len(dots)
+-	fmt.Printf("%s:\t", check.fset.Position(check.pos[n]))
+-	fmt.Print(dots[0:i])
+-	fmt.Println(check.formatMsg(format, args))
+-}
+-
+-func (check *checker) trace(pos token.Pos, format string, args ...interface{}) {
+-	check.pos = append(check.pos, pos)
+-	check.printTrace(format, args)
+-}
+-
+-func (check *checker) untrace(format string, args ...interface{}) {
+-	if len(format) > 0 {
+-		check.printTrace(format, args)
+-	}
+-	check.pos = check.pos[:len(check.pos)-1]
+-}
+-
+-func (check *checker) formatMsg(format string, args []interface{}) string {
+-	for i, arg := range args {
+-		switch a := arg.(type) {
+-		case token.Pos:
+-			args[i] = check.fset.Position(a)
+-		case ast.Expr:
+-			args[i] = exprString(a)
+-		case Type:
+-			args[i] = typeString(a)
+-		case operand:
+-			panic("internal error: should always pass *operand")
+-		}
+-	}
+-	return fmt.Sprintf(format, args...)
+-}
+-
+-// dump is only needed for debugging
+-func (check *checker) dump(format string, args ...interface{}) {
+-	fmt.Println(check.formatMsg(format, args))
+-}
+-
+-func (check *checker) err(err error) {
+-	if check.firsterr == nil {
+-		check.firsterr = err
+-	}
+-	f := check.ctxt.Error
+-	if f == nil {
+-		panic(bailout{}) // report only first error
+-	}
+-	f(err)
+-}
+-
+-func (check *checker) errorf(pos token.Pos, format string, args ...interface{}) {
+-	check.err(fmt.Errorf("%s: %s", check.fset.Position(pos), check.formatMsg(format, args)))
+-}
+-
+-func (check *checker) invalidAST(pos token.Pos, format string, args ...interface{}) {
+-	check.errorf(pos, "invalid AST: "+format, args...)
+-}
+-
+-func (check *checker) invalidArg(pos token.Pos, format string, args ...interface{}) {
+-	check.errorf(pos, "invalid argument: "+format, args...)
+-}
+-
+-func (check *checker) invalidOp(pos token.Pos, format string, args ...interface{}) {
+-	check.errorf(pos, "invalid operation: "+format, args...)
+-}
+-
+-// exprString returns a (simplified) string representation for an expression.
+-func exprString(expr ast.Expr) string {
+-	var buf bytes.Buffer
+-	writeExpr(&buf, expr)
+-	return buf.String()
+-}
+-
+-// TODO(gri) Need to merge with typeString since some expressions are types (try: ([]int)(a))
+-func writeExpr(buf *bytes.Buffer, expr ast.Expr) {
+-	switch x := expr.(type) {
+-	case *ast.Ident:
+-		buf.WriteString(x.Name)
+-
+-	case *ast.BasicLit:
+-		buf.WriteString(x.Value)
+-
+-	case *ast.FuncLit:
+-		buf.WriteString("(func literal)")
+-
+-	case *ast.CompositeLit:
+-		buf.WriteString("(composite literal)")
+-
+-	case *ast.ParenExpr:
+-		buf.WriteByte('(')
+-		writeExpr(buf, x.X)
+-		buf.WriteByte(')')
+-
+-	case *ast.SelectorExpr:
+-		writeExpr(buf, x.X)
+-		buf.WriteByte('.')
+-		buf.WriteString(x.Sel.Name)
+-
+-	case *ast.IndexExpr:
+-		writeExpr(buf, x.X)
+-		buf.WriteByte('[')
+-		writeExpr(buf, x.Index)
+-		buf.WriteByte(']')
+-
+-	case *ast.SliceExpr:
+-		writeExpr(buf, x.X)
+-		buf.WriteByte('[')
+-		if x.Low != nil {
+-			writeExpr(buf, x.Low)
+-		}
+-		buf.WriteByte(':')
+-		if x.High != nil {
+-			writeExpr(buf, x.High)
+-		}
+-		buf.WriteByte(']')
+-
+-	case *ast.TypeAssertExpr:
+-		writeExpr(buf, x.X)
+-		buf.WriteString(".(...)")
+-
+-	case *ast.CallExpr:
+-		writeExpr(buf, x.Fun)
+-		buf.WriteByte('(')
+-		for i, arg := range x.Args {
+-			if i > 0 {
+-				buf.WriteString(", ")
+-			}
+-			writeExpr(buf, arg)
+-		}
+-		buf.WriteByte(')')
+-
+-	case *ast.StarExpr:
+-		buf.WriteByte('*')
+-		writeExpr(buf, x.X)
+-
+-	case *ast.UnaryExpr:
+-		buf.WriteString(x.Op.String())
+-		writeExpr(buf, x.X)
+-
+-	case *ast.BinaryExpr:
+-		// The AST preserves source-level parentheses so there is
+-		// no need to introduce parentheses here for correctness.
+-		writeExpr(buf, x.X)
+-		buf.WriteByte(' ')
+-		buf.WriteString(x.Op.String())
+-		buf.WriteByte(' ')
+-		writeExpr(buf, x.Y)
+-
+-	default:
+-		fmt.Fprintf(buf, "<expr %T>", x)
+-	}
+-}
+-
+-// typeString returns a string representation for typ.
+-func typeString(typ Type) string {
+-	var buf bytes.Buffer
+-	writeType(&buf, typ)
+-	return buf.String()
+-}
+-
+-func writeParams(buf *bytes.Buffer, params []*Var, isVariadic bool) {
+-	buf.WriteByte('(')
+-	for i, par := range params {
+-		if i > 0 {
+-			buf.WriteString(", ")
+-		}
+-		if par.Name != "" {
+-			buf.WriteString(par.Name)
+-			buf.WriteByte(' ')
+-		}
+-		if isVariadic && i == len(params)-1 {
+-			buf.WriteString("...")
+-		}
+-		writeType(buf, par.Type)
+-	}
+-	buf.WriteByte(')')
+-}
+-
+-func writeSignature(buf *bytes.Buffer, sig *Signature) {
+-	writeParams(buf, sig.Params, sig.IsVariadic)
+-	if len(sig.Results) == 0 {
+-		// no result
+-		return
+-	}
+-
+-	buf.WriteByte(' ')
+-	if len(sig.Results) == 1 && sig.Results[0].Name == "" {
+-		// single unnamed result
+-		writeType(buf, sig.Results[0].Type.(Type))
+-		return
+-	}
+-
+-	// multiple or named result(s)
+-	writeParams(buf, sig.Results, false)
+-}
+-
+-func writeType(buf *bytes.Buffer, typ Type) {
+-	switch t := typ.(type) {
+-	case nil:
+-		buf.WriteString("<nil>")
+-
+-	case *Basic:
+-		buf.WriteString(t.Name)
+-
+-	case *Array:
+-		fmt.Fprintf(buf, "[%d]", t.Len)
+-		writeType(buf, t.Elt)
+-
+-	case *Slice:
+-		buf.WriteString("[]")
+-		writeType(buf, t.Elt)
+-
+-	case *Struct:
+-		buf.WriteString("struct{")
+-		for i, f := range t.Fields {
+-			if i > 0 {
+-				buf.WriteString("; ")
+-			}
+-			if !f.IsAnonymous {
+-				buf.WriteString(f.Name)
+-				buf.WriteByte(' ')
+-			}
+-			writeType(buf, f.Type)
+-			if f.Tag != "" {
+-				fmt.Fprintf(buf, " %q", f.Tag)
+-			}
+-		}
+-		buf.WriteByte('}')
+-
+-	case *Pointer:
+-		buf.WriteByte('*')
+-		writeType(buf, t.Base)
+-
+-	case *Result:
+-		writeParams(buf, t.Values, false)
+-
+-	case *Signature:
+-		buf.WriteString("func")
+-		writeSignature(buf, t)
+-
+-	case *builtin:
+-		fmt.Fprintf(buf, "<type of %s>", t.name)
+-
+-	case *Interface:
+-		buf.WriteString("interface{")
+-		for i, m := range t.Methods {
+-			if i > 0 {
+-				buf.WriteString("; ")
+-			}
+-			buf.WriteString(m.Name)
+-			writeSignature(buf, m.Type)
+-		}
+-		buf.WriteByte('}')
+-
+-	case *Map:
+-		buf.WriteString("map[")
+-		writeType(buf, t.Key)
+-		buf.WriteByte(']')
+-		writeType(buf, t.Elt)
+-
+-	case *Chan:
+-		var s string
+-		switch t.Dir {
+-		case ast.SEND:
+-			s = "chan<- "
+-		case ast.RECV:
+-			s = "<-chan "
+-		default:
+-			s = "chan "
+-		}
+-		buf.WriteString(s)
+-		writeType(buf, t.Elt)
+-
+-	case *NamedType:
+-		s := "<NamedType w/o object>"
+-		if t.Obj != nil {
+-			s = t.Obj.GetName()
+-		}
+-		buf.WriteString(s)
+-
+-	default:
+-		fmt.Fprintf(buf, "<type %T>", t)
+-	}
+-}
+-
+-func (t *Array) String() string     { return typeString(t) }
+-func (t *Basic) String() string     { return typeString(t) }
+-func (t *Chan) String() string      { return typeString(t) }
+-func (t *Interface) String() string { return typeString(t) }
+-func (t *Map) String() string       { return typeString(t) }
+-func (t *NamedType) String() string { return typeString(t) }
+-func (t *Pointer) String() string   { return typeString(t) }
+-func (t *Result) String() string    { return typeString(t) }
+-func (t *Signature) String() string { return typeString(t) }
+-func (t *Slice) String() string     { return typeString(t) }
+-func (t *Struct) String() string    { return typeString(t) }
+-func (t *builtin) String() string   { return typeString(t) }
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/exportdata.go gcc-4.8.1/libgo/go/go/types/exportdata.go
+--- gcc-4.8.1.orig/libgo/go/go/types/exportdata.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/exportdata.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,111 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements FindGcExportData.
+-
+-package types
+-
+-import (
+-	"bufio"
+-	"errors"
+-	"fmt"
+-	"io"
+-	"strconv"
+-	"strings"
+-)
+-
+-func readGopackHeader(r *bufio.Reader) (name string, size int, err error) {
+-	// See $GOROOT/include/ar.h.
+-	hdr := make([]byte, 16+12+6+6+8+10+2)
+-	_, err = io.ReadFull(r, hdr)
+-	if err != nil {
+-		return
+-	}
+-	// leave for debugging
+-	if false {
+-		fmt.Printf("header: %s", hdr)
+-	}
+-	s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10]))
+-	size, err = strconv.Atoi(s)
+-	if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' {
+-		err = errors.New("invalid archive header")
+-		return
+-	}
+-	name = strings.TrimSpace(string(hdr[:16]))
+-	return
+-}
+-
+-// FindGcExportData positions the reader r at the beginning of the
+-// export data section of an underlying GC-created object/archive
+-// file by reading from it. The reader must be positioned at the
+-// start of the file before calling this function.
+-//
+-func FindGcExportData(r *bufio.Reader) (err error) {
+-	// Read first line to make sure this is an object file.
+-	line, err := r.ReadSlice('\n')
+-	if err != nil {
+-		return
+-	}
+-	if string(line) == "!<arch>\n" {
+-		// Archive file.  Scan to __.PKGDEF, which should
+-		// be second archive entry.
+-		var name string
+-		var size int
+-
+-		// First entry should be __.GOSYMDEF.
+-		// Older archives used __.SYMDEF, so allow that too.
+-		// Read and discard.
+-		if name, size, err = readGopackHeader(r); err != nil {
+-			return
+-		}
+-		if name != "__.SYMDEF" && name != "__.GOSYMDEF" {
+-			err = errors.New("go archive does not begin with __.SYMDEF or __.GOSYMDEF")
+-			return
+-		}
+-		const block = 4096
+-		tmp := make([]byte, block)
+-		for size > 0 {
+-			n := size
+-			if n > block {
+-				n = block
+-			}
+-			if _, err = io.ReadFull(r, tmp[:n]); err != nil {
+-				return
+-			}
+-			size -= n
+-		}
+-
+-		// Second entry should be __.PKGDEF.
+-		if name, size, err = readGopackHeader(r); err != nil {
+-			return
+-		}
+-		if name != "__.PKGDEF" {
+-			err = errors.New("go archive is missing __.PKGDEF")
+-			return
+-		}
+-
+-		// Read first line of __.PKGDEF data, so that line
+-		// is once again the first line of the input.
+-		if line, err = r.ReadSlice('\n'); err != nil {
+-			return
+-		}
+-	}
+-
+-	// Now at __.PKGDEF in archive or still at beginning of file.
+-	// Either way, line should begin with "go object ".
+-	if !strings.HasPrefix(string(line), "go object ") {
+-		err = errors.New("not a go object file")
+-		return
+-	}
+-
+-	// Skip over object header to export data.
+-	// Begins after first line with $$.
+-	for line[0] != '$' {
+-		if line, err = r.ReadSlice('\n'); err != nil {
+-			return
+-		}
+-	}
+-
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/expr.go gcc-4.8.1/libgo/go/go/types/expr.go
+--- gcc-4.8.1.orig/libgo/go/go/types/expr.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/expr.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1334 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements typechecking of expressions.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/token"
+-	"strconv"
+-)
+-
+-// TODO(gri) Cleanups
+-// - don't print error messages referring to invalid types (they are likely spurious errors)
+-// - simplify invalid handling: maybe just use Typ[Invalid] as marker, get rid of invalid Mode for values?
+-// - rethink error handling: should all callers check if x.mode == valid after making a call?
+-// - at the moment, iota is passed around almost everywhere - in many places we know it cannot be used
+-// - use "" or "_" consistently for anonymous identifiers? (e.g. reeceivers that have no name)
+-
+-// TODO(gri) API issues
+-// - clients need access to builtins type information
+-// - API tests are missing (e.g., identifiers should be handled as expressions in callbacks)
+-
+-func (check *checker) collectParams(list *ast.FieldList, variadicOk bool) (params []*Var, isVariadic bool) {
+-	if list == nil {
+-		return
+-	}
+-	var last *Var
+-	for i, field := range list.List {
+-		ftype := field.Type
+-		if t, _ := ftype.(*ast.Ellipsis); t != nil {
+-			ftype = t.Elt
+-			if variadicOk && i == len(list.List)-1 {
+-				isVariadic = true
+-			} else {
+-				check.invalidAST(field.Pos(), "... not permitted")
+-				// ok to continue
+-			}
+-		}
+-		// the parser ensures that f.Tag is nil and we don't
+-		// care if a constructed AST contains a non-nil tag
+-		typ := check.typ(ftype, true)
+-		if len(field.Names) > 0 {
+-			// named parameter
+-			for _, name := range field.Names {
+-				par := check.lookup(name).(*Var)
+-				par.Type = typ
+-				last = par
+-				copy := *par
+-				params = append(params, &copy)
+-			}
+-		} else {
+-			// anonymous parameter
+-			par := &Var{Type: typ}
+-			last = nil // not accessible inside function
+-			params = append(params, par)
+-		}
+-	}
+-	// For a variadic function, change the last parameter's object type
+-	// from T to []T (this is the type used inside the function), but
+-	// keep the params list unchanged (this is the externally visible type).
+-	if isVariadic && last != nil {
+-		last.Type = &Slice{Elt: last.Type}
+-	}
+-	return
+-}
+-
+-func (check *checker) collectMethods(list *ast.FieldList) (methods []*Method) {
+-	if list == nil {
+-		return
+-	}
+-	for _, f := range list.List {
+-		typ := check.typ(f.Type, len(f.Names) > 0) // cycles are not ok for embedded interfaces
+-		// the parser ensures that f.Tag is nil and we don't
+-		// care if a constructed AST contains a non-nil tag
+-		if len(f.Names) > 0 {
+-			// methods (the parser ensures that there's only one
+-			// and we don't care if a constructed AST has more)
+-			sig, ok := typ.(*Signature)
+-			if !ok {
+-				check.invalidAST(f.Type.Pos(), "%s is not a method signature", typ)
+-				continue
+-			}
+-			for _, name := range f.Names {
+-				methods = append(methods, &Method{QualifiedName{check.pkg, name.Name}, sig})
+-			}
+-		} else {
+-			// embedded interface
+-			utyp := underlying(typ)
+-			if ityp, ok := utyp.(*Interface); ok {
+-				methods = append(methods, ityp.Methods...)
+-			} else if utyp != Typ[Invalid] {
+-				// if utyp is invalid, don't complain (the root cause was reported before)
+-				check.errorf(f.Type.Pos(), "%s is not an interface type", typ)
+-			}
+-		}
+-	}
+-	// Check for double declarations.
+-	// The parser inserts methods into an interface-local scope, so local
+-	// double declarations are reported by the parser already. We need to
+-	// check again for conflicts due to embedded interfaces. This will lead
+-	// to a 2nd error message if the double declaration was reported before
+-	// by the parser.
+-	// TODO(gri) clean this up a bit
+-	seen := make(map[string]bool)
+-	for _, m := range methods {
+-		if seen[m.Name] {
+-			check.errorf(list.Pos(), "multiple methods named %s", m.Name)
+-			return // keep multiple entries, lookup will only return the first entry
+-		}
+-		seen[m.Name] = true
+-	}
+-	return
+-}
+-
+-func (check *checker) tag(t *ast.BasicLit) string {
+-	if t != nil {
+-		if t.Kind == token.STRING {
+-			if val, err := strconv.Unquote(t.Value); err == nil {
+-				return val
+-			}
+-		}
+-		check.invalidAST(t.Pos(), "incorrect tag syntax: %q", t.Value)
+-	}
+-	return ""
+-}
+-
+-func (check *checker) collectFields(list *ast.FieldList, cycleOk bool) (fields []*Field) {
+-	if list == nil {
+-		return
+-	}
+-	for _, f := range list.List {
+-		typ := check.typ(f.Type, cycleOk)
+-		tag := check.tag(f.Tag)
+-		if len(f.Names) > 0 {
+-			// named fields
+-			for _, name := range f.Names {
+-				fields = append(fields, &Field{QualifiedName{check.pkg, name.Name}, typ, tag, false})
+-			}
+-		} else {
+-			// anonymous field
+-			switch t := deref(typ).(type) {
+-			case *Basic:
+-				fields = append(fields, &Field{QualifiedName{check.pkg, t.Name}, typ, tag, true})
+-			case *NamedType:
+-				fields = append(fields, &Field{QualifiedName{check.pkg, t.Obj.GetName()}, typ, tag, true})
+-			default:
+-				if typ != Typ[Invalid] {
+-					check.invalidAST(f.Type.Pos(), "anonymous field type %s must be named", typ)
+-				}
+-			}
+-		}
+-	}
+-	return
+-}
+-
+-type opPredicates map[token.Token]func(Type) bool
+-
+-var unaryOpPredicates = opPredicates{
+-	token.ADD: isNumeric,
+-	token.SUB: isNumeric,
+-	token.XOR: isInteger,
+-	token.NOT: isBoolean,
+-}
+-
+-func (check *checker) op(m opPredicates, x *operand, op token.Token) bool {
+-	if pred := m[op]; pred != nil {
+-		if !pred(x.typ) {
+-			check.invalidOp(x.pos(), "operator %s not defined for %s", op, x)
+-			return false
+-		}
+-	} else {
+-		check.invalidAST(x.pos(), "unknown operator %s", op)
+-		return false
+-	}
+-	return true
+-}
+-
+-func (check *checker) unary(x *operand, op token.Token) {
+-	switch op {
+-	case token.AND:
+-		// spec: "As an exception to the addressability
+-		// requirement x may also be a composite literal."
+-		if _, ok := unparen(x.expr).(*ast.CompositeLit); ok {
+-			x.mode = variable
+-		}
+-		if x.mode != variable {
+-			check.invalidOp(x.pos(), "cannot take address of %s", x)
+-			goto Error
+-		}
+-		x.typ = &Pointer{Base: x.typ}
+-		return
+-
+-	case token.ARROW:
+-		typ, ok := underlying(x.typ).(*Chan)
+-		if !ok {
+-			check.invalidOp(x.pos(), "cannot receive from non-channel %s", x)
+-			goto Error
+-		}
+-		if typ.Dir&ast.RECV == 0 {
+-			check.invalidOp(x.pos(), "cannot receive from send-only channel %s", x)
+-			goto Error
+-		}
+-		x.mode = valueok
+-		x.typ = typ.Elt
+-		return
+-	}
+-
+-	if !check.op(unaryOpPredicates, x, op) {
+-		goto Error
+-	}
+-
+-	if x.mode == constant {
+-		typ := underlying(x.typ).(*Basic)
+-		x.val = unaryOpConst(x.val, op, typ)
+-		// Typed constants must be representable in
+-		// their type after each constant operation.
+-		check.isRepresentable(x, typ)
+-		return
+-	}
+-
+-	x.mode = value
+-	// x.typ remains unchanged
+-	return
+-
+-Error:
+-	x.mode = invalid
+-}
+-
+-func isShift(op token.Token) bool {
+-	return op == token.SHL || op == token.SHR
+-}
+-
+-func isComparison(op token.Token) bool {
+-	// Note: tokens are not ordered well to make this much easier
+-	switch op {
+-	case token.EQL, token.NEQ, token.LSS, token.LEQ, token.GTR, token.GEQ:
+-		return true
+-	}
+-	return false
+-}
+-
+-// isRepresentable checks that a constant operand is representable in the given type.
+-func (check *checker) isRepresentable(x *operand, typ *Basic) {
+-	if x.mode != constant || isUntyped(typ) {
+-		return
+-	}
+-
+-	if !isRepresentableConst(x.val, typ.Kind) {
+-		var msg string
+-		if isNumeric(x.typ) && isNumeric(typ) {
+-			msg = "%s overflows %s"
+-		} else {
+-			msg = "cannot convert %s to %s"
+-		}
+-		check.errorf(x.pos(), msg, x, typ)
+-		x.mode = invalid
+-	}
+-}
+-
+-// convertUntyped attempts to set the type of an untyped value to the target type.
+-func (check *checker) convertUntyped(x *operand, target Type) {
+-	if x.mode == invalid || !isUntyped(x.typ) {
+-		return
+-	}
+-
+-	// TODO(gri) Sloppy code - clean up. This function is central
+-	//           to assignment and expression checking.
+-
+-	if isUntyped(target) {
+-		// both x and target are untyped
+-		xkind := x.typ.(*Basic).Kind
+-		tkind := target.(*Basic).Kind
+-		if isNumeric(x.typ) && isNumeric(target) {
+-			if xkind < tkind {
+-				x.typ = target
+-			}
+-		} else if xkind != tkind {
+-			goto Error
+-		}
+-		return
+-	}
+-
+-	// typed target
+-	switch t := underlying(target).(type) {
+-	case *Basic:
+-		check.isRepresentable(x, t)
+-	case *Interface:
+-		if !x.isNil() && len(t.Methods) > 0 /* empty interfaces are ok */ {
+-			goto Error
+-		}
+-	case *Pointer, *Signature, *Slice, *Map, *Chan:
+-		if !x.isNil() {
+-			goto Error
+-		}
+-	default:
+-		unreachable()
+-	}
+-
+-	x.typ = target
+-	return
+-
+-Error:
+-	check.errorf(x.pos(), "cannot convert %s to %s", x, target)
+-	x.mode = invalid
+-}
+-
+-func (check *checker) comparison(x, y *operand, op token.Token) {
+-	// TODO(gri) deal with interface vs non-interface comparison
+-
+-	valid := false
+-	if x.isAssignable(y.typ) || y.isAssignable(x.typ) {
+-		switch op {
+-		case token.EQL, token.NEQ:
+-			valid = isComparable(x.typ) ||
+-				x.isNil() && hasNil(y.typ) ||
+-				y.isNil() && hasNil(x.typ)
+-		case token.LSS, token.LEQ, token.GTR, token.GEQ:
+-			valid = isOrdered(x.typ)
+-		default:
+-			unreachable()
+-		}
+-	}
+-
+-	if !valid {
+-		check.invalidOp(x.pos(), "cannot compare %s %s %s", x, op, y)
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if x.mode == constant && y.mode == constant {
+-		x.val = compareConst(x.val, y.val, op)
+-	} else {
+-		x.mode = value
+-	}
+-
+-	x.typ = Typ[UntypedBool]
+-}
+-
+-// untyped lhs shift operands convert to the hint type
+-func (check *checker) shift(x, y *operand, op token.Token, hint Type) {
+-	// spec: "The right operand in a shift expression must have unsigned
+-	// integer type or be an untyped constant that can be converted to
+-	// unsigned integer type."
+-	switch {
+-	case isInteger(y.typ) && isUnsigned(y.typ):
+-		// nothing to do
+-	case y.mode == constant && isUntyped(y.typ) && isRepresentableConst(y.val, UntypedInt):
+-		y.typ = Typ[UntypedInt]
+-	default:
+-		check.invalidOp(y.pos(), "shift count %s must be unsigned integer", y)
+-		x.mode = invalid
+-		return
+-	}
+-
+-	// spec: "If the left operand of a non-constant shift expression is
+-	// an untyped constant, the type of the constant is what it would be
+-	// if the shift expression were replaced by its left operand alone;
+-	// the type is int if it cannot be determined from the context (for
+-	// instance, if the shift expression is an operand in a comparison
+-	// against an untyped constant)".
+-	if x.mode == constant && isUntyped(x.typ) {
+-		if y.mode == constant {
+-			// constant shift - accept values of any (untyped) type
+-			// as long as the value is representable as an integer
+-			if x.mode == constant && isUntyped(x.typ) {
+-				if isRepresentableConst(x.val, UntypedInt) {
+-					x.typ = Typ[UntypedInt]
+-				}
+-			}
+-		} else {
+-			// non-constant shift
+-			if hint == nil {
+-				// TODO(gri) need to check for x.isNil (see other uses of defaultType)
+-				hint = defaultType(x.typ)
+-			}
+-			check.convertUntyped(x, hint)
+-			if x.mode == invalid {
+-				return
+-			}
+-		}
+-	}
+-
+-	if !isInteger(x.typ) {
+-		check.invalidOp(x.pos(), "shifted operand %s must be integer", x)
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if y.mode == constant {
+-		const stupidShift = 1024
+-		s, ok := y.val.(int64)
+-		if !ok || s < 0 || s >= stupidShift {
+-			check.invalidOp(y.pos(), "%s: stupid shift", y)
+-			x.mode = invalid
+-			return
+-		}
+-		if x.mode == constant {
+-			x.val = shiftConst(x.val, uint(s), op)
+-			return
+-		}
+-	}
+-
+-	x.mode = value
+-	// x.typ is already set
+-}
+-
+-var binaryOpPredicates = opPredicates{
+-	token.ADD: func(typ Type) bool { return isNumeric(typ) || isString(typ) },
+-	token.SUB: isNumeric,
+-	token.MUL: isNumeric,
+-	token.QUO: isNumeric,
+-	token.REM: isInteger,
+-
+-	token.AND:     isInteger,
+-	token.OR:      isInteger,
+-	token.XOR:     isInteger,
+-	token.AND_NOT: isInteger,
+-
+-	token.LAND: isBoolean,
+-	token.LOR:  isBoolean,
+-}
+-
+-func (check *checker) binary(x, y *operand, op token.Token, hint Type) {
+-	if isShift(op) {
+-		check.shift(x, y, op, hint)
+-		return
+-	}
+-
+-	check.convertUntyped(x, y.typ)
+-	if x.mode == invalid {
+-		return
+-	}
+-	check.convertUntyped(y, x.typ)
+-	if y.mode == invalid {
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if isComparison(op) {
+-		check.comparison(x, y, op)
+-		return
+-	}
+-
+-	if !IsIdentical(x.typ, y.typ) {
+-		check.invalidOp(x.pos(), "mismatched types %s and %s", x.typ, y.typ)
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if !check.op(binaryOpPredicates, x, op) {
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if (op == token.QUO || op == token.REM) && y.mode == constant && isZeroConst(y.val) {
+-		check.invalidOp(y.pos(), "division by zero")
+-		x.mode = invalid
+-		return
+-	}
+-
+-	if x.mode == constant && y.mode == constant {
+-		typ := underlying(x.typ).(*Basic)
+-		x.val = binaryOpConst(x.val, y.val, op, typ)
+-		// Typed constants must be representable in
+-		// their type after each constant operation.
+-		check.isRepresentable(x, typ)
+-		return
+-	}
+-
+-	x.mode = value
+-	// x.typ is unchanged
+-}
+-
+-// index checks an index expression for validity. If length >= 0, it is the upper
+-// bound for the index. The result is a valid index >= 0, or a negative value.
+-//
+-func (check *checker) index(index ast.Expr, length int64, iota int) int64 {
+-	var x operand
+-
+-	check.expr(&x, index, nil, iota)
+-	if !x.isInteger() {
+-		check.errorf(x.pos(), "index %s must be integer", &x)
+-		return -1
+-	}
+-	if x.mode != constant {
+-		return -1 // we cannot check more
+-	}
+-	// The spec doesn't require int64 indices, but perhaps it should.
+-	i, ok := x.val.(int64)
+-	if !ok {
+-		check.errorf(x.pos(), "stupid index %s", &x)
+-		return -1
+-	}
+-	if i < 0 {
+-		check.errorf(x.pos(), "index %s must not be negative", &x)
+-		return -1
+-	}
+-	if length >= 0 && i >= length {
+-		check.errorf(x.pos(), "index %s is out of bounds (>= %d)", &x, length)
+-		return -1
+-	}
+-
+-	return i
+-}
+-
+-// compositeLitKey resolves unresolved composite literal keys.
+-// For details, see comment in go/parser/parser.go, method parseElement.
+-func (check *checker) compositeLitKey(key ast.Expr) {
+-	if ident, ok := key.(*ast.Ident); ok && ident.Obj == nil {
+-		if obj := check.pkg.Scope.Lookup(ident.Name); obj != nil {
+-			check.register(ident, obj)
+-		} else {
+-			check.errorf(ident.Pos(), "undeclared name: %s", ident.Name)
+-		}
+-	}
+-}
+-
+-// indexElts checks the elements (elts) of an array or slice composite literal
+-// against the literal's element type (typ), and the element indices against
+-// the literal length if known (length >= 0). It returns the length of the
+-// literal (maximum index value + 1).
+-//
+-func (check *checker) indexedElts(elts []ast.Expr, typ Type, length int64, iota int) int64 {
+-	visited := make(map[int64]bool, len(elts))
+-	var index, max int64
+-	for _, e := range elts {
+-		// determine and check index
+-		validIndex := false
+-		eval := e
+-		if kv, _ := e.(*ast.KeyValueExpr); kv != nil {
+-			check.compositeLitKey(kv.Key)
+-			if i := check.index(kv.Key, length, iota); i >= 0 {
+-				index = i
+-				validIndex = true
+-			}
+-			eval = kv.Value
+-		} else if length >= 0 && index >= length {
+-			check.errorf(e.Pos(), "index %d is out of bounds (>= %d)", index, length)
+-		} else {
+-			validIndex = true
+-		}
+-
+-		// if we have a valid index, check for duplicate entries
+-		if validIndex {
+-			if visited[index] {
+-				check.errorf(e.Pos(), "duplicate index %d in array or slice literal", index)
+-			}
+-			visited[index] = true
+-		}
+-		index++
+-		if index > max {
+-			max = index
+-		}
+-
+-		// check element against composite literal element type
+-		var x operand
+-		check.expr(&x, eval, typ, iota)
+-		if !x.isAssignable(typ) {
+-			check.errorf(x.pos(), "cannot use %s as %s value in array or slice literal", &x, typ)
+-		}
+-	}
+-	return max
+-}
+-
+-// argument typechecks passing an argument arg (if arg != nil) or
+-// x (if arg == nil) to the i'th parameter of the given signature.
+-// If passSlice is set, the argument is followed by ... in the call.
+-//
+-func (check *checker) argument(sig *Signature, i int, arg ast.Expr, x *operand, passSlice bool) {
+-	// determine parameter
+-	var par *Var
+-	n := len(sig.Params)
+-	if i < n {
+-		par = sig.Params[i]
+-	} else if sig.IsVariadic {
+-		par = sig.Params[n-1]
+-	} else {
+-		check.errorf(arg.Pos(), "too many arguments")
+-		return
+-	}
+-
+-	// determine argument
+-	var z operand
+-	z.mode = variable
+-	z.expr = nil // TODO(gri) can we do better here? (for good error messages)
+-	z.typ = par.Type
+-
+-	if arg != nil {
+-		check.expr(x, arg, z.typ, -1)
+-	}
+-	if x.mode == invalid {
+-		return // ignore this argument
+-	}
+-
+-	// check last argument of the form x...
+-	if passSlice {
+-		if i+1 != n {
+-			check.errorf(x.pos(), "can only use ... with matching parameter")
+-			return // ignore this argument
+-		}
+-		// spec: "If the final argument is assignable to a slice type []T,
+-		// it may be passed unchanged as the value for a ...T parameter if
+-		// the argument is followed by ..."
+-		z.typ = &Slice{Elt: z.typ} // change final parameter type to []T
+-	}
+-
+-	check.assignOperand(&z, x)
+-}
+-
+-var emptyResult Result
+-
+-func (check *checker) callExpr(x *operand) {
+-	var typ Type
+-	var val interface{}
+-	switch x.mode {
+-	case invalid:
+-		return // nothing to do
+-	case novalue:
+-		typ = &emptyResult
+-	case constant:
+-		typ = x.typ
+-		val = x.val
+-	default:
+-		typ = x.typ
+-	}
+-	check.ctxt.Expr(x.expr, typ, val)
+-}
+-
+-// rawExpr typechecks expression e and initializes x with the expression
+-// value or type. If an error occurred, x.mode is set to invalid.
+-// A hint != nil is used as operand type for untyped shifted operands;
+-// iota >= 0 indicates that the expression is part of a constant declaration.
+-// cycleOk indicates whether it is ok for a type expression to refer to itself.
+-//
+-func (check *checker) rawExpr(x *operand, e ast.Expr, hint Type, iota int, cycleOk bool) {
+-	if trace {
+-		c := ""
+-		if cycleOk {
+-			c = " âš"
+-		}
+-		check.trace(e.Pos(), "%s (%s, %d%s)", e, typeString(hint), iota, c)
+-		defer check.untrace("=> %s", x)
+-	}
+-
+-	if check.ctxt.Expr != nil {
+-		defer check.callExpr(x)
+-	}
+-
+-	switch e := e.(type) {
+-	case *ast.BadExpr:
+-		goto Error // error was reported before
+-
+-	case *ast.Ident:
+-		if e.Name == "_" {
+-			check.invalidOp(e.Pos(), "cannot use _ as value or type")
+-			goto Error
+-		}
+-		obj := check.lookup(e)
+-		if obj == nil {
+-			goto Error // error was reported before
+-		}
+-		check.object(obj, cycleOk)
+-		switch obj := obj.(type) {
+-		case *Package:
+-			check.errorf(e.Pos(), "use of package %s not in selector", obj.Name)
+-			goto Error
+-		case *Const:
+-			if obj.Val == nil {
+-				goto Error // cycle detected
+-			}
+-			x.mode = constant
+-			if obj == universeIota {
+-				if iota < 0 {
+-					check.invalidAST(e.Pos(), "cannot use iota outside constant declaration")
+-					goto Error
+-				}
+-				x.val = int64(iota)
+-			} else {
+-				x.val = obj.Val
+-			}
+-		case *TypeName:
+-			x.mode = typexpr
+-			if !cycleOk && underlying(obj.Type) == nil {
+-				check.errorf(obj.spec.Pos(), "illegal cycle in declaration of %s", obj.Name)
+-				x.expr = e
+-				x.typ = Typ[Invalid]
+-				return // don't goto Error - need x.mode == typexpr
+-			}
+-		case *Var:
+-			x.mode = variable
+-		case *Func:
+-			x.mode = value
+-		default:
+-			unreachable()
+-		}
+-		x.typ = obj.GetType()
+-
+-	case *ast.Ellipsis:
+-		// ellipses are handled explicitly where they are legal
+-		// (array composite literals and parameter lists)
+-		check.errorf(e.Pos(), "invalid use of '...'")
+-		goto Error
+-
+-	case *ast.BasicLit:
+-		x.setConst(e.Kind, e.Value)
+-		if x.mode == invalid {
+-			check.invalidAST(e.Pos(), "invalid literal %v", e.Value)
+-			goto Error
+-		}
+-
+-	case *ast.FuncLit:
+-		if sig, ok := check.typ(e.Type, false).(*Signature); ok {
+-			x.mode = value
+-			x.typ = sig
+-			check.later(nil, sig, e.Body)
+-		} else {
+-			check.invalidAST(e.Pos(), "invalid function literal %s", e)
+-			goto Error
+-		}
+-
+-	case *ast.CompositeLit:
+-		typ := hint
+-		openArray := false
+-		if e.Type != nil {
+-			// [...]T array types may only appear with composite literals.
+-			// Check for them here so we don't have to handle ... in general.
+-			typ = nil
+-			if atyp, _ := e.Type.(*ast.ArrayType); atyp != nil && atyp.Len != nil {
+-				if ellip, _ := atyp.Len.(*ast.Ellipsis); ellip != nil && ellip.Elt == nil {
+-					// We have an "open" [...]T array type.
+-					// Create a new ArrayType with unknown length (-1)
+-					// and finish setting it up after analyzing the literal.
+-					typ = &Array{Len: -1, Elt: check.typ(atyp.Elt, cycleOk)}
+-					openArray = true
+-				}
+-			}
+-			if typ == nil {
+-				typ = check.typ(e.Type, false)
+-			}
+-		}
+-		if typ == nil {
+-			check.errorf(e.Pos(), "missing type in composite literal")
+-			goto Error
+-		}
+-
+-		switch utyp := underlying(deref(typ)).(type) {
+-		case *Struct:
+-			if len(e.Elts) == 0 {
+-				break
+-			}
+-			fields := utyp.Fields
+-			if _, ok := e.Elts[0].(*ast.KeyValueExpr); ok {
+-				// all elements must have keys
+-				visited := make([]bool, len(fields))
+-				for _, e := range e.Elts {
+-					kv, _ := e.(*ast.KeyValueExpr)
+-					if kv == nil {
+-						check.errorf(e.Pos(), "mixture of field:value and value elements in struct literal")
+-						continue
+-					}
+-					key, _ := kv.Key.(*ast.Ident)
+-					if key == nil {
+-						check.errorf(kv.Pos(), "invalid field name %s in struct literal", kv.Key)
+-						continue
+-					}
+-					i := utyp.fieldIndex(key.Name)
+-					if i < 0 {
+-						check.errorf(kv.Pos(), "unknown field %s in struct literal", key.Name)
+-						continue
+-					}
+-					// 0 <= i < len(fields)
+-					if visited[i] {
+-						check.errorf(kv.Pos(), "duplicate field name %s in struct literal", key.Name)
+-						continue
+-					}
+-					visited[i] = true
+-					check.expr(x, kv.Value, nil, iota)
+-					etyp := fields[i].Type
+-					if !x.isAssignable(etyp) {
+-						check.errorf(x.pos(), "cannot use %s as %s value in struct literal", x, etyp)
+-						continue
+-					}
+-				}
+-			} else {
+-				// no element must have a key
+-				for i, e := range e.Elts {
+-					if kv, _ := e.(*ast.KeyValueExpr); kv != nil {
+-						check.errorf(kv.Pos(), "mixture of field:value and value elements in struct literal")
+-						continue
+-					}
+-					check.expr(x, e, nil, iota)
+-					if i >= len(fields) {
+-						check.errorf(x.pos(), "too many values in struct literal")
+-						break // cannot continue
+-					}
+-					// i < len(fields)
+-					etyp := fields[i].Type
+-					if !x.isAssignable(etyp) {
+-						check.errorf(x.pos(), "cannot use %s as %s value in struct literal", x, etyp)
+-						continue
+-					}
+-				}
+-				if len(e.Elts) < len(fields) {
+-					check.errorf(e.Rbrace, "too few values in struct literal")
+-					// ok to continue
+-				}
+-			}
+-
+-		case *Array:
+-			n := check.indexedElts(e.Elts, utyp.Elt, utyp.Len, iota)
+-			// if we have an "open" [...]T array, set the length now that we know it
+-			if openArray {
+-				utyp.Len = n
+-			}
+-
+-		case *Slice:
+-			check.indexedElts(e.Elts, utyp.Elt, -1, iota)
+-
+-		case *Map:
+-			visited := make(map[interface{}]bool, len(e.Elts))
+-			for _, e := range e.Elts {
+-				kv, _ := e.(*ast.KeyValueExpr)
+-				if kv == nil {
+-					check.errorf(e.Pos(), "missing key in map literal")
+-					continue
+-				}
+-				check.compositeLitKey(kv.Key)
+-				check.expr(x, kv.Key, nil, iota)
+-				if !x.isAssignable(utyp.Key) {
+-					check.errorf(x.pos(), "cannot use %s as %s key in map literal", x, utyp.Key)
+-					continue
+-				}
+-				if x.mode == constant {
+-					if visited[x.val] {
+-						check.errorf(x.pos(), "duplicate key %s in map literal", x.val)
+-						continue
+-					}
+-					visited[x.val] = true
+-				}
+-				check.expr(x, kv.Value, utyp.Elt, iota)
+-				if !x.isAssignable(utyp.Elt) {
+-					check.errorf(x.pos(), "cannot use %s as %s value in map literal", x, utyp.Elt)
+-					continue
+-				}
+-			}
+-
+-		default:
+-			check.errorf(e.Pos(), "%s is not a valid composite literal type", typ)
+-			goto Error
+-		}
+-
+-		x.mode = value
+-		x.typ = typ
+-
+-	case *ast.ParenExpr:
+-		check.rawExpr(x, e.X, hint, iota, cycleOk)
+-
+-	case *ast.SelectorExpr:
+-		sel := e.Sel.Name
+-		// If the identifier refers to a package, handle everything here
+-		// so we don't need a "package" mode for operands: package names
+-		// can only appear in qualified identifiers which are mapped to
+-		// selector expressions.
+-		if ident, ok := e.X.(*ast.Ident); ok {
+-			if pkg, ok := check.lookup(ident).(*Package); ok {
+-				exp := pkg.Scope.Lookup(sel)
+-				if exp == nil {
+-					check.errorf(e.Sel.Pos(), "cannot refer to unexported %s", sel)
+-					goto Error
+-				}
+-				check.register(e.Sel, exp)
+-				// Simplified version of the code for *ast.Idents:
+-				// - imported packages use types.Scope and types.Objects
+-				// - imported objects are always fully initialized
+-				switch exp := exp.(type) {
+-				case *Const:
+-					assert(exp.Val != nil)
+-					x.mode = constant
+-					x.typ = exp.Type
+-					x.val = exp.Val
+-				case *TypeName:
+-					x.mode = typexpr
+-					x.typ = exp.Type
+-				case *Var:
+-					x.mode = variable
+-					x.typ = exp.Type
+-				case *Func:
+-					x.mode = value
+-					x.typ = exp.Type
+-				default:
+-					unreachable()
+-				}
+-				x.expr = e
+-				return
+-			}
+-		}
+-
+-		check.exprOrType(x, e.X, nil, iota, false)
+-		if x.mode == invalid {
+-			goto Error
+-		}
+-		mode, typ := lookupField(x.typ, QualifiedName{check.pkg, sel})
+-		if mode == invalid {
+-			check.invalidOp(e.Pos(), "%s has no single field or method %s", x, sel)
+-			goto Error
+-		}
+-		if x.mode == typexpr {
+-			// method expression
+-			sig, ok := typ.(*Signature)
+-			if !ok {
+-				check.invalidOp(e.Pos(), "%s has no method %s", x, sel)
+-				goto Error
+-			}
+-			// the receiver type becomes the type of the first function
+-			// argument of the method expression's function type
+-			// TODO(gri) at the moment, method sets don't correctly track
+-			// pointer vs non-pointer receivers => typechecker is too lenient
+-			x.mode = value
+-			x.typ = &Signature{
+-				Params:     append([]*Var{{Type: x.typ}}, sig.Params...),
+-				Results:    sig.Results,
+-				IsVariadic: sig.IsVariadic,
+-			}
+-		} else {
+-			// regular selector
+-			x.mode = mode
+-			x.typ = typ
+-		}
+-
+-	case *ast.IndexExpr:
+-		check.expr(x, e.X, hint, iota)
+-
+-		valid := false
+-		length := int64(-1) // valid if >= 0
+-		switch typ := underlying(x.typ).(type) {
+-		case *Basic:
+-			if isString(typ) {
+-				valid = true
+-				if x.mode == constant {
+-					length = int64(len(x.val.(string)))
+-				}
+-				// an indexed string always yields a byte value
+-				// (not a constant) even if the string and the
+-				// index are constant
+-				x.mode = value
+-				x.typ = Typ[Byte]
+-			}
+-
+-		case *Array:
+-			valid = true
+-			length = typ.Len
+-			if x.mode != variable {
+-				x.mode = value
+-			}
+-			x.typ = typ.Elt
+-
+-		case *Pointer:
+-			if typ, _ := underlying(typ.Base).(*Array); typ != nil {
+-				valid = true
+-				length = typ.Len
+-				x.mode = variable
+-				x.typ = typ.Elt
+-			}
+-
+-		case *Slice:
+-			valid = true
+-			x.mode = variable
+-			x.typ = typ.Elt
+-
+-		case *Map:
+-			var key operand
+-			check.expr(&key, e.Index, nil, iota)
+-			if key.mode == invalid || !key.isAssignable(typ.Key) {
+-				check.invalidOp(x.pos(), "cannot use %s as map index of type %s", &key, typ.Key)
+-				goto Error
+-			}
+-			x.mode = valueok
+-			x.typ = typ.Elt
+-			x.expr = e
+-			return
+-		}
+-
+-		if !valid {
+-			check.invalidOp(x.pos(), "cannot index %s", x)
+-			goto Error
+-		}
+-
+-		if e.Index == nil {
+-			check.invalidAST(e.Pos(), "missing index expression for %s", x)
+-			return
+-		}
+-
+-		check.index(e.Index, length, iota)
+-		// ok to continue
+-
+-	case *ast.SliceExpr:
+-		check.expr(x, e.X, hint, iota)
+-
+-		valid := false
+-		length := int64(-1) // valid if >= 0
+-		switch typ := underlying(x.typ).(type) {
+-		case *Basic:
+-			if isString(typ) {
+-				valid = true
+-				if x.mode == constant {
+-					length = int64(len(x.val.(string))) + 1 // +1 for slice
+-				}
+-				// a sliced string always yields a string value
+-				// of the same type as the original string (not
+-				// a constant) even if the string and the indices
+-				// are constant
+-				x.mode = value
+-				// x.typ doesn't change
+-			}
+-
+-		case *Array:
+-			valid = true
+-			length = typ.Len + 1 // +1 for slice
+-			if x.mode != variable {
+-				check.invalidOp(x.pos(), "cannot slice %s (value not addressable)", x)
+-				goto Error
+-			}
+-			x.typ = &Slice{Elt: typ.Elt}
+-
+-		case *Pointer:
+-			if typ, _ := underlying(typ.Base).(*Array); typ != nil {
+-				valid = true
+-				length = typ.Len + 1 // +1 for slice
+-				x.mode = variable
+-				x.typ = &Slice{Elt: typ.Elt}
+-			}
+-
+-		case *Slice:
+-			valid = true
+-			x.mode = variable
+-			// x.typ doesn't change
+-		}
+-
+-		if !valid {
+-			check.invalidOp(x.pos(), "cannot slice %s", x)
+-			goto Error
+-		}
+-
+-		lo := int64(0)
+-		if e.Low != nil {
+-			lo = check.index(e.Low, length, iota)
+-		}
+-
+-		hi := int64(-1)
+-		if e.High != nil {
+-			hi = check.index(e.High, length, iota)
+-		} else if length >= 0 {
+-			hi = length
+-		}
+-
+-		if lo >= 0 && hi >= 0 && lo > hi {
+-			check.errorf(e.Low.Pos(), "inverted slice range: %d > %d", lo, hi)
+-			// ok to continue
+-		}
+-
+-	case *ast.TypeAssertExpr:
+-		check.expr(x, e.X, hint, iota)
+-		if x.mode == invalid {
+-			goto Error
+-		}
+-		var T *Interface
+-		if T, _ = underlying(x.typ).(*Interface); T == nil {
+-			check.invalidOp(x.pos(), "%s is not an interface", x)
+-			goto Error
+-		}
+-		// x.(type) expressions are handled explicitly in type switches
+-		if e.Type == nil {
+-			check.errorf(e.Pos(), "use of .(type) outside type switch")
+-			goto Error
+-		}
+-		typ := check.typ(e.Type, false)
+-		if typ == Typ[Invalid] {
+-			goto Error
+-		}
+-		if method, wrongType := missingMethod(typ, T); method != nil {
+-			var msg string
+-			if wrongType {
+-				msg = "%s cannot have dynamic type %s (wrong type for method %s)"
+-			} else {
+-				msg = "%s cannot have dynamic type %s (missing method %s)"
+-			}
+-			check.errorf(e.Type.Pos(), msg, x, typ, method.Name)
+-			// ok to continue
+-		}
+-		x.mode = valueok
+-		x.expr = e
+-		x.typ = typ
+-
+-	case *ast.CallExpr:
+-		check.exprOrType(x, e.Fun, nil, iota, false)
+-		if x.mode == invalid {
+-			goto Error
+-		} else if x.mode == typexpr {
+-			check.conversion(x, e, x.typ, iota)
+-		} else if sig, ok := underlying(x.typ).(*Signature); ok {
+-			// check parameters
+-
+-			// If we have a trailing ... at the end of the parameter
+-			// list, the last argument must match the parameter type
+-			// []T of a variadic function parameter x ...T.
+-			passSlice := false
+-			if e.Ellipsis.IsValid() {
+-				if sig.IsVariadic {
+-					passSlice = true
+-				} else {
+-					check.errorf(e.Ellipsis, "cannot use ... in call to %s", e.Fun)
+-					// ok to continue
+-				}
+-			}
+-
+-			// If we have a single argument that is a function call
+-			// we need to handle it separately. Determine if this
+-			// is the case without checking the argument.
+-			var call *ast.CallExpr
+-			if len(e.Args) == 1 {
+-				call, _ = unparen(e.Args[0]).(*ast.CallExpr)
+-			}
+-
+-			n := 0 // parameter count
+-			if call != nil {
+-				// We have a single argument that is a function call.
+-				check.expr(x, call, nil, -1)
+-				if x.mode == invalid {
+-					goto Error // TODO(gri): we can do better
+-				}
+-				if t, _ := x.typ.(*Result); t != nil {
+-					// multiple result values
+-					n = len(t.Values)
+-					for i, obj := range t.Values {
+-						x.mode = value
+-						x.expr = nil // TODO(gri) can we do better here? (for good error messages)
+-						x.typ = obj.Type
+-						check.argument(sig, i, nil, x, passSlice && i+1 == n)
+-					}
+-				} else {
+-					// single result value
+-					n = 1
+-					check.argument(sig, 0, nil, x, passSlice)
+-				}
+-
+-			} else {
+-				// We don't have a single argument or it is not a function call.
+-				n = len(e.Args)
+-				for i, arg := range e.Args {
+-					check.argument(sig, i, arg, x, passSlice && i+1 == n)
+-				}
+-			}
+-
+-			// determine if we have enough arguments
+-			if sig.IsVariadic {
+-				// a variadic function accepts an "empty"
+-				// last argument: count one extra
+-				n++
+-			}
+-			if n < len(sig.Params) {
+-				check.errorf(e.Fun.Pos(), "too few arguments in call to %s", e.Fun)
+-				// ok to continue
+-			}
+-
+-			// determine result
+-			switch len(sig.Results) {
+-			case 0:
+-				x.mode = novalue
+-			case 1:
+-				x.mode = value
+-				x.typ = sig.Results[0].Type
+-			default:
+-				x.mode = value
+-				x.typ = &Result{Values: sig.Results}
+-			}
+-
+-		} else if bin, ok := x.typ.(*builtin); ok {
+-			check.builtin(x, e, bin, iota)
+-
+-		} else {
+-			check.invalidOp(x.pos(), "cannot call non-function %s", x)
+-			goto Error
+-		}
+-
+-	case *ast.StarExpr:
+-		check.exprOrType(x, e.X, hint, iota, true)
+-		switch x.mode {
+-		case invalid:
+-			goto Error
+-		case typexpr:
+-			x.typ = &Pointer{Base: x.typ}
+-		default:
+-			if typ, ok := x.typ.(*Pointer); ok {
+-				x.mode = variable
+-				x.typ = typ.Base
+-			} else {
+-				check.invalidOp(x.pos(), "cannot indirect %s", x)
+-				goto Error
+-			}
+-		}
+-
+-	case *ast.UnaryExpr:
+-		check.expr(x, e.X, hint, iota)
+-		check.unary(x, e.Op)
+-
+-	case *ast.BinaryExpr:
+-		var y operand
+-		check.expr(x, e.X, hint, iota)
+-		check.expr(&y, e.Y, hint, iota)
+-		check.binary(x, &y, e.Op, hint)
+-
+-	case *ast.KeyValueExpr:
+-		// key:value expressions are handled in composite literals
+-		check.invalidAST(e.Pos(), "no key:value expected")
+-		goto Error
+-
+-	case *ast.ArrayType:
+-		if e.Len != nil {
+-			check.expr(x, e.Len, nil, iota)
+-			if x.mode == invalid {
+-				goto Error
+-			}
+-			if x.mode != constant {
+-				if x.mode != invalid {
+-					check.errorf(x.pos(), "array length %s must be constant", x)
+-				}
+-				goto Error
+-			}
+-			n, ok := x.val.(int64)
+-			if !ok || n < 0 {
+-				check.errorf(x.pos(), "invalid array length %s", x)
+-				goto Error
+-			}
+-			x.typ = &Array{Len: n, Elt: check.typ(e.Elt, cycleOk)}
+-		} else {
+-			x.typ = &Slice{Elt: check.typ(e.Elt, true)}
+-		}
+-		x.mode = typexpr
+-
+-	case *ast.StructType:
+-		x.mode = typexpr
+-		x.typ = &Struct{Fields: check.collectFields(e.Fields, cycleOk)}
+-
+-	case *ast.FuncType:
+-		params, isVariadic := check.collectParams(e.Params, true)
+-		results, _ := check.collectParams(e.Results, false)
+-		x.mode = typexpr
+-		x.typ = &Signature{Recv: nil, Params: params, Results: results, IsVariadic: isVariadic}
+-
+-	case *ast.InterfaceType:
+-		x.mode = typexpr
+-		x.typ = &Interface{Methods: check.collectMethods(e.Methods)}
+-
+-	case *ast.MapType:
+-		x.mode = typexpr
+-		x.typ = &Map{Key: check.typ(e.Key, true), Elt: check.typ(e.Value, true)}
+-
+-	case *ast.ChanType:
+-		x.mode = typexpr
+-		x.typ = &Chan{Dir: e.Dir, Elt: check.typ(e.Value, true)}
+-
+-	default:
+-		check.dump("e = %s", e)
+-		unreachable()
+-	}
+-
+-	// everything went well
+-	x.expr = e
+-	return
+-
+-Error:
+-	x.mode = invalid
+-	x.expr = e
+-}
+-
+-// exprOrType is like rawExpr but reports an error if e doesn't represents a value or type.
+-func (check *checker) exprOrType(x *operand, e ast.Expr, hint Type, iota int, cycleOk bool) {
+-	check.rawExpr(x, e, hint, iota, cycleOk)
+-	if x.mode == novalue {
+-		check.errorf(x.pos(), "%s used as value or type", x)
+-		x.mode = invalid
+-	}
+-}
+-
+-// expr is like rawExpr but reports an error if e doesn't represents a value.
+-func (check *checker) expr(x *operand, e ast.Expr, hint Type, iota int) {
+-	check.rawExpr(x, e, hint, iota, false)
+-	switch x.mode {
+-	case novalue:
+-		check.errorf(x.pos(), "%s used as value", x)
+-		x.mode = invalid
+-	case typexpr:
+-		check.errorf(x.pos(), "%s is not an expression", x)
+-		x.mode = invalid
+-	}
+-}
+-
+-func (check *checker) rawTyp(e ast.Expr, cycleOk, nilOk bool) Type {
+-	var x operand
+-	check.rawExpr(&x, e, nil, -1, cycleOk)
+-	switch x.mode {
+-	case invalid:
+-		// ignore - error reported before
+-	case novalue:
+-		check.errorf(x.pos(), "%s used as type", &x)
+-	case typexpr:
+-		return x.typ
+-	case constant:
+-		if nilOk && x.isNil() {
+-			return nil
+-		}
+-		fallthrough
+-	default:
+-		check.errorf(x.pos(), "%s is not a type", &x)
+-	}
+-	return Typ[Invalid]
+-}
+-
+-// typOrNil is like rawExpr but reports an error if e doesn't represents a type or the predeclared value nil.
+-// It returns e's type, nil, or Typ[Invalid] if an error occurred.
+-//
+-func (check *checker) typOrNil(e ast.Expr, cycleOk bool) Type {
+-	return check.rawTyp(e, cycleOk, true)
+-}
+-
+-// typ is like rawExpr but reports an error if e doesn't represents a type.
+-// It returns e's type, or Typ[Invalid] if an error occurred.
+-//
+-func (check *checker) typ(e ast.Expr, cycleOk bool) Type {
+-	return check.rawTyp(e, cycleOk, false)
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/gcimporter.go gcc-4.8.1/libgo/go/go/types/gcimporter.go
+--- gcc-4.8.1.orig/libgo/go/go/types/gcimporter.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/gcimporter.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,908 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements an Importer for gc-generated object files.
+-
+-package types
+-
+-import (
+-	"bufio"
+-	"errors"
+-	"fmt"
+-	"go/ast"
+-	"go/build"
+-	"go/token"
+-	"io"
+-	"math/big"
+-	"os"
+-	"path/filepath"
+-	"strconv"
+-	"strings"
+-	"text/scanner"
+-)
+-
+-var pkgExts = [...]string{".a", ".5", ".6", ".8"}
+-
+-// FindPkg returns the filename and unique package id for an import
+-// path based on package information provided by build.Import (using
+-// the build.Default build.Context).
+-// If no file was found, an empty filename is returned.
+-//
+-func FindPkg(path, srcDir string) (filename, id string) {
+-	if len(path) == 0 {
+-		return
+-	}
+-
+-	id = path
+-	var noext string
+-	switch {
+-	default:
+-		// "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x"
+-		// Don't require the source files to be present.
+-		bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary)
+-		if bp.PkgObj == "" {
+-			return
+-		}
+-		noext = bp.PkgObj
+-		if strings.HasSuffix(noext, ".a") {
+-			noext = noext[:len(noext)-len(".a")]
+-		}
+-
+-	case build.IsLocalImport(path):
+-		// "./x" -> "/this/directory/x.ext", "/this/directory/x"
+-		noext = filepath.Join(srcDir, path)
+-		id = noext
+-
+-	case filepath.IsAbs(path):
+-		// for completeness only - go/build.Import
+-		// does not support absolute imports
+-		// "/x" -> "/x.ext", "/x"
+-		noext = path
+-	}
+-
+-	// try extensions
+-	for _, ext := range pkgExts {
+-		filename = noext + ext
+-		if f, err := os.Stat(filename); err == nil && !f.IsDir() {
+-			return
+-		}
+-	}
+-
+-	filename = "" // not found
+-	return
+-}
+-
+-// GcImportData imports a package by reading the gc-generated export data,
+-// adds the corresponding package object to the imports map indexed by id,
+-// and returns the object.
+-//
+-// The imports map must contains all packages already imported. The data
+-// reader position must be the beginning of the export data section. The
+-// filename is only used in error messages.
+-//
+-// If imports[id] contains the completely imported package, that package
+-// can be used directly, and there is no need to call this function (but
+-// there is also no harm but for extra time used).
+-//
+-func GcImportData(imports map[string]*Package, filename, id string, data *bufio.Reader) (pkg *Package, err error) {
+-	// support for gcParser error handling
+-	defer func() {
+-		if r := recover(); r != nil {
+-			err = r.(importError) // will re-panic if r is not an importError
+-		}
+-	}()
+-
+-	var p gcParser
+-	p.init(filename, id, data, imports)
+-	pkg = p.parseExport()
+-
+-	return
+-}
+-
+-// GcImport imports a gc-generated package given its import path, adds the
+-// corresponding package object to the imports map, and returns the object.
+-// Local import paths are interpreted relative to the current working directory.
+-// The imports map must contains all packages already imported.
+-// GcImport satisfies the ast.Importer signature.
+-//
+-func GcImport(imports map[string]*Package, path string) (pkg *Package, err error) {
+-	if path == "unsafe" {
+-		return Unsafe, nil
+-	}
+-
+-	srcDir, err := os.Getwd()
+-	if err != nil {
+-		return
+-	}
+-	filename, id := FindPkg(path, srcDir)
+-	if filename == "" {
+-		err = errors.New("can't find import: " + id)
+-		return
+-	}
+-
+-	// no need to re-import if the package was imported completely before
+-	if pkg = imports[id]; pkg != nil && pkg.Complete {
+-		return
+-	}
+-
+-	// open file
+-	f, err := os.Open(filename)
+-	if err != nil {
+-		return
+-	}
+-	defer func() {
+-		f.Close()
+-		if err != nil {
+-			// Add file name to error.
+-			err = fmt.Errorf("reading export data: %s: %v", filename, err)
+-		}
+-	}()
+-
+-	buf := bufio.NewReader(f)
+-	if err = FindGcExportData(buf); err != nil {
+-		return
+-	}
+-
+-	pkg, err = GcImportData(imports, filename, id, buf)
+-
+-	return
+-}
+-
+-// ----------------------------------------------------------------------------
+-// gcParser
+-
+-// gcParser parses the exports inside a gc compiler-produced
+-// object/archive file and populates its scope with the results.
+-type gcParser struct {
+-	scanner scanner.Scanner
+-	tok     rune                // current token
+-	lit     string              // literal string; only valid for Ident, Int, String tokens
+-	id      string              // package id of imported package
+-	imports map[string]*Package // package id -> package object
+-}
+-
+-func (p *gcParser) init(filename, id string, src io.Reader, imports map[string]*Package) {
+-	p.scanner.Init(src)
+-	p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) }
+-	p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments
+-	p.scanner.Whitespace = 1<<'\t' | 1<<' '
+-	p.scanner.Filename = filename // for good error messages
+-	p.next()
+-	p.id = id
+-	p.imports = imports
+-}
+-
+-func (p *gcParser) next() {
+-	p.tok = p.scanner.Scan()
+-	switch p.tok {
+-	case scanner.Ident, scanner.Int, scanner.Char, scanner.String, 'Â·':
+-		p.lit = p.scanner.TokenText()
+-	default:
+-		p.lit = ""
+-	}
+-	// leave for debugging
+-	if false {
+-		fmt.Printf("%s: %q -> %q\n", scanner.TokenString(p.tok), p.scanner.TokenText(), p.lit)
+-	}
+-}
+-
+-func declConst(scope *Scope, name string) *Const {
+-	// the constant may have been imported before - if it exists
+-	// already in the respective scope, return that constant
+-	if obj := scope.Lookup(name); obj != nil {
+-		return obj.(*Const)
+-	}
+-	// otherwise create a new constant and insert it into the scope
+-	obj := &Const{Name: name}
+-	scope.Insert(obj)
+-	return obj
+-}
+-
+-func declTypeName(scope *Scope, name string) *TypeName {
+-	if obj := scope.Lookup(name); obj != nil {
+-		return obj.(*TypeName)
+-	}
+-	obj := &TypeName{Name: name}
+-	// a named type may be referred to before the underlying type
+-	// is known - set it up
+-	obj.Type = &NamedType{Obj: obj}
+-	scope.Insert(obj)
+-	return obj
+-}
+-
+-func declVar(scope *Scope, name string) *Var {
+-	if obj := scope.Lookup(name); obj != nil {
+-		return obj.(*Var)
+-	}
+-	obj := &Var{Name: name}
+-	scope.Insert(obj)
+-	return obj
+-}
+-
+-func declFunc(scope *Scope, name string) *Func {
+-	if obj := scope.Lookup(name); obj != nil {
+-		return obj.(*Func)
+-	}
+-	obj := &Func{Name: name}
+-	scope.Insert(obj)
+-	return obj
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Error handling
+-
+-// Internal errors are boxed as importErrors.
+-type importError struct {
+-	pos scanner.Position
+-	err error
+-}
+-
+-func (e importError) Error() string {
+-	return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err)
+-}
+-
+-func (p *gcParser) error(err interface{}) {
+-	if s, ok := err.(string); ok {
+-		err = errors.New(s)
+-	}
+-	// panic with a runtime.Error if err is not an error
+-	panic(importError{p.scanner.Pos(), err.(error)})
+-}
+-
+-func (p *gcParser) errorf(format string, args ...interface{}) {
+-	p.error(fmt.Sprintf(format, args...))
+-}
+-
+-func (p *gcParser) expect(tok rune) string {
+-	lit := p.lit
+-	if p.tok != tok {
+-		p.errorf("expected %s, got %s (%s)", scanner.TokenString(tok), scanner.TokenString(p.tok), lit)
+-	}
+-	p.next()
+-	return lit
+-}
+-
+-func (p *gcParser) expectSpecial(tok string) {
+-	sep := 'x' // not white space
+-	i := 0
+-	for i < len(tok) && p.tok == rune(tok[i]) && sep > ' ' {
+-		sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token
+-		p.next()
+-		i++
+-	}
+-	if i < len(tok) {
+-		p.errorf("expected %q, got %q", tok, tok[0:i])
+-	}
+-}
+-
+-func (p *gcParser) expectKeyword(keyword string) {
+-	lit := p.expect(scanner.Ident)
+-	if lit != keyword {
+-		p.errorf("expected keyword %s, got %q", keyword, lit)
+-	}
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Import declarations
+-
+-// ImportPath = string_lit .
+-//
+-func (p *gcParser) parsePkgId() *Package {
+-	id, err := strconv.Unquote(p.expect(scanner.String))
+-	if err != nil {
+-		p.error(err)
+-	}
+-
+-	switch id {
+-	case "":
+-		// id == "" stands for the imported package id
+-		// (only known at time of package installation)
+-		id = p.id
+-	case "unsafe":
+-		// package unsafe is not in the imports map - handle explicitly
+-		return Unsafe
+-	}
+-
+-	pkg := p.imports[id]
+-	if pkg == nil {
+-		pkg = &Package{Scope: new(Scope)}
+-		p.imports[id] = pkg
+-	}
+-
+-	return pkg
+-}
+-
+-// dotIdentifier = ( ident | 'Â·' ) { ident | int | 'Â·' } .
+-func (p *gcParser) parseDotIdent() string {
+-	ident := ""
+-	if p.tok != scanner.Int {
+-		sep := 'x' // not white space
+-		for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == 'Â·') && sep > ' ' {
+-			ident += p.lit
+-			sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token
+-			p.next()
+-		}
+-	}
+-	if ident == "" {
+-		p.expect(scanner.Ident) // use expect() for error handling
+-	}
+-	return ident
+-}
+-
+-// ExportedName = "@" ImportPath "." dotIdentifier .
+-//
+-func (p *gcParser) parseExportedName() (*Package, string) {
+-	p.expect('@')
+-	pkg := p.parsePkgId()
+-	p.expect('.')
+-	name := p.parseDotIdent()
+-	return pkg, name
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Types
+-
+-// BasicType = identifier .
+-//
+-func (p *gcParser) parseBasicType() Type {
+-	id := p.expect(scanner.Ident)
+-	obj := Universe.Lookup(id)
+-	if obj, ok := obj.(*TypeName); ok {
+-		return obj.Type
+-	}
+-	p.errorf("not a basic type: %s", id)
+-	return nil
+-}
+-
+-// ArrayType = "[" int_lit "]" Type .
+-//
+-func (p *gcParser) parseArrayType() Type {
+-	// "[" already consumed and lookahead known not to be "]"
+-	lit := p.expect(scanner.Int)
+-	p.expect(']')
+-	elt := p.parseType()
+-	n, err := strconv.ParseInt(lit, 10, 64)
+-	if err != nil {
+-		p.error(err)
+-	}
+-	return &Array{Len: n, Elt: elt}
+-}
+-
+-// MapType = "map" "[" Type "]" Type .
+-//
+-func (p *gcParser) parseMapType() Type {
+-	p.expectKeyword("map")
+-	p.expect('[')
+-	key := p.parseType()
+-	p.expect(']')
+-	elt := p.parseType()
+-	return &Map{Key: key, Elt: elt}
+-}
+-
+-// Name = identifier | "?" | ExportedName  .
+-//
+-func (p *gcParser) parseName() (pkg *Package, name string) {
+-	switch p.tok {
+-	case scanner.Ident:
+-		name = p.lit
+-		p.next()
+-	case '?':
+-		// anonymous
+-		p.next()
+-	case '@':
+-		// exported name prefixed with package path
+-		pkg, name = p.parseExportedName()
+-	default:
+-		p.error("name expected")
+-	}
+-	return
+-}
+-
+-// Field = Name Type [ string_lit ] .
+-//
+-func (p *gcParser) parseField() *Field {
+-	var f Field
+-	f.Pkg, f.Name = p.parseName()
+-	f.Type = p.parseType()
+-	if p.tok == scanner.String {
+-		f.Tag = p.expect(scanner.String)
+-	}
+-	if f.Name == "" {
+-		// anonymous field - typ must be T or *T and T must be a type name
+-		if typ, ok := deref(f.Type).(*NamedType); ok && typ.Obj != nil {
+-			f.Name = typ.Obj.GetName()
+-			f.IsAnonymous = true
+-		} else {
+-			p.errorf("anonymous field expected")
+-		}
+-	}
+-	return &f
+-}
+-
+-// StructType = "struct" "{" [ FieldList ] "}" .
+-// FieldList  = Field { ";" Field } .
+-//
+-func (p *gcParser) parseStructType() Type {
+-	var fields []*Field
+-
+-	p.expectKeyword("struct")
+-	p.expect('{')
+-	for p.tok != '}' {
+-		if len(fields) > 0 {
+-			p.expect(';')
+-		}
+-		fields = append(fields, p.parseField())
+-	}
+-	p.expect('}')
+-
+-	return &Struct{Fields: fields}
+-}
+-
+-// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] .
+-//
+-func (p *gcParser) parseParameter() (par *Var, isVariadic bool) {
+-	_, name := p.parseName()
+-	if name == "" {
+-		name = "_" // cannot access unnamed identifiers
+-	}
+-	if p.tok == '.' {
+-		p.expectSpecial("...")
+-		isVariadic = true
+-	}
+-	typ := p.parseType()
+-	// ignore argument tag (e.g. "noescape")
+-	if p.tok == scanner.String {
+-		p.next()
+-	}
+-	par = &Var{Name: name, Type: typ}
+-	return
+-}
+-
+-// Parameters    = "(" [ ParameterList ] ")" .
+-// ParameterList = { Parameter "," } Parameter .
+-//
+-func (p *gcParser) parseParameters() (list []*Var, isVariadic bool) {
+-	p.expect('(')
+-	for p.tok != ')' {
+-		if len(list) > 0 {
+-			p.expect(',')
+-		}
+-		par, variadic := p.parseParameter()
+-		list = append(list, par)
+-		if variadic {
+-			if isVariadic {
+-				p.error("... not on final argument")
+-			}
+-			isVariadic = true
+-		}
+-	}
+-	p.expect(')')
+-
+-	return
+-}
+-
+-// Signature = Parameters [ Result ] .
+-// Result    = Type | Parameters .
+-//
+-func (p *gcParser) parseSignature() *Signature {
+-	params, isVariadic := p.parseParameters()
+-
+-	// optional result type
+-	var results []*Var
+-	switch p.tok {
+-	case scanner.Ident, '[', '*', '<', '@':
+-		// single, unnamed result
+-		results = []*Var{{Type: p.parseType()}}
+-	case '(':
+-		// named or multiple result(s)
+-		var variadic bool
+-		results, variadic = p.parseParameters()
+-		if variadic {
+-			p.error("... not permitted on result type")
+-		}
+-	}
+-
+-	return &Signature{Params: params, Results: results, IsVariadic: isVariadic}
+-}
+-
+-// InterfaceType = "interface" "{" [ MethodList ] "}" .
+-// MethodList    = Method { ";" Method } .
+-// Method        = Name Signature .
+-//
+-// The methods of embedded interfaces are always "inlined"
+-// by the compiler and thus embedded interfaces are never
+-// visible in the export data.
+-//
+-func (p *gcParser) parseInterfaceType() Type {
+-	var methods []*Method
+-
+-	p.expectKeyword("interface")
+-	p.expect('{')
+-	for p.tok != '}' {
+-		if len(methods) > 0 {
+-			p.expect(';')
+-		}
+-		pkg, name := p.parseName()
+-		typ := p.parseSignature()
+-		methods = append(methods, &Method{QualifiedName{pkg, name}, typ})
+-	}
+-	p.expect('}')
+-
+-	return &Interface{Methods: methods}
+-}
+-
+-// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type .
+-//
+-func (p *gcParser) parseChanType() Type {
+-	dir := ast.SEND | ast.RECV
+-	if p.tok == scanner.Ident {
+-		p.expectKeyword("chan")
+-		if p.tok == '<' {
+-			p.expectSpecial("<-")
+-			dir = ast.SEND
+-		}
+-	} else {
+-		p.expectSpecial("<-")
+-		p.expectKeyword("chan")
+-		dir = ast.RECV
+-	}
+-	elt := p.parseType()
+-	return &Chan{Dir: dir, Elt: elt}
+-}
+-
+-// Type =
+-//	BasicType | TypeName | ArrayType | SliceType | StructType |
+-//      PointerType | FuncType | InterfaceType | MapType | ChanType |
+-//      "(" Type ")" .
+-//
+-// BasicType   = ident .
+-// TypeName    = ExportedName .
+-// SliceType   = "[" "]" Type .
+-// PointerType = "*" Type .
+-// FuncType    = "func" Signature .
+-//
+-func (p *gcParser) parseType() Type {
+-	switch p.tok {
+-	case scanner.Ident:
+-		switch p.lit {
+-		default:
+-			return p.parseBasicType()
+-		case "struct":
+-			return p.parseStructType()
+-		case "func":
+-			// FuncType
+-			p.next()
+-			return p.parseSignature()
+-		case "interface":
+-			return p.parseInterfaceType()
+-		case "map":
+-			return p.parseMapType()
+-		case "chan":
+-			return p.parseChanType()
+-		}
+-	case '@':
+-		// TypeName
+-		pkg, name := p.parseExportedName()
+-		return declTypeName(pkg.Scope, name).Type
+-	case '[':
+-		p.next() // look ahead
+-		if p.tok == ']' {
+-			// SliceType
+-			p.next()
+-			return &Slice{Elt: p.parseType()}
+-		}
+-		return p.parseArrayType()
+-	case '*':
+-		// PointerType
+-		p.next()
+-		return &Pointer{Base: p.parseType()}
+-	case '<':
+-		return p.parseChanType()
+-	case '(':
+-		// "(" Type ")"
+-		p.next()
+-		typ := p.parseType()
+-		p.expect(')')
+-		return typ
+-	}
+-	p.errorf("expected type, got %s (%q)", scanner.TokenString(p.tok), p.lit)
+-	return nil
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Declarations
+-
+-// ImportDecl = "import" identifier string_lit .
+-//
+-func (p *gcParser) parseImportDecl() {
+-	p.expectKeyword("import")
+-	// The identifier has no semantic meaning in the import data.
+-	// It exists so that error messages can print the real package
+-	// name: binary.ByteOrder instead of "encoding/binary".ByteOrder.
+-	name := p.expect(scanner.Ident)
+-	pkg := p.parsePkgId()
+-	assert(pkg.Name == "" || pkg.Name == name)
+-	pkg.Name = name
+-}
+-
+-// int_lit = [ "+" | "-" ] { "0" ... "9" } .
+-//
+-func (p *gcParser) parseInt() (neg bool, val string) {
+-	switch p.tok {
+-	case '-':
+-		neg = true
+-		fallthrough
+-	case '+':
+-		p.next()
+-	}
+-	val = p.expect(scanner.Int)
+-	return
+-}
+-
+-// number = int_lit [ "p" int_lit ] .
+-//
+-func (p *gcParser) parseNumber() (x operand) {
+-	x.mode = constant
+-
+-	// mantissa
+-	neg, val := p.parseInt()
+-	mant, ok := new(big.Int).SetString(val, 0)
+-	assert(ok)
+-	if neg {
+-		mant.Neg(mant)
+-	}
+-
+-	if p.lit == "p" {
+-		// exponent (base 2)
+-		p.next()
+-		neg, val = p.parseInt()
+-		exp64, err := strconv.ParseUint(val, 10, 0)
+-		if err != nil {
+-			p.error(err)
+-		}
+-		exp := uint(exp64)
+-		if neg {
+-			denom := big.NewInt(1)
+-			denom.Lsh(denom, exp)
+-			x.typ = Typ[UntypedFloat]
+-			x.val = normalizeRatConst(new(big.Rat).SetFrac(mant, denom))
+-			return
+-		}
+-		if exp > 0 {
+-			mant.Lsh(mant, exp)
+-		}
+-		x.typ = Typ[UntypedFloat]
+-		x.val = normalizeIntConst(mant)
+-		return
+-	}
+-
+-	x.typ = Typ[UntypedInt]
+-	x.val = normalizeIntConst(mant)
+-	return
+-}
+-
+-// ConstDecl   = "const" ExportedName [ Type ] "=" Literal .
+-// Literal     = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit .
+-// bool_lit    = "true" | "false" .
+-// complex_lit = "(" float_lit "+" float_lit "i" ")" .
+-// rune_lit    = "(" int_lit "+" int_lit ")" .
+-// string_lit  = `"` { unicode_char } `"` .
+-//
+-func (p *gcParser) parseConstDecl() {
+-	p.expectKeyword("const")
+-	pkg, name := p.parseExportedName()
+-	obj := declConst(pkg.Scope, name)
+-	var x operand
+-	if p.tok != '=' {
+-		obj.Type = p.parseType()
+-	}
+-	p.expect('=')
+-	switch p.tok {
+-	case scanner.Ident:
+-		// bool_lit
+-		if p.lit != "true" && p.lit != "false" {
+-			p.error("expected true or false")
+-		}
+-		x.typ = Typ[UntypedBool]
+-		x.val = p.lit == "true"
+-		p.next()
+-
+-	case '-', scanner.Int:
+-		// int_lit
+-		x = p.parseNumber()
+-
+-	case '(':
+-		// complex_lit or rune_lit
+-		p.next()
+-		if p.tok == scanner.Char {
+-			p.next()
+-			p.expect('+')
+-			x = p.parseNumber()
+-			x.typ = Typ[UntypedRune]
+-			p.expect(')')
+-			break
+-		}
+-		re := p.parseNumber()
+-		p.expect('+')
+-		im := p.parseNumber()
+-		p.expectKeyword("i")
+-		p.expect(')')
+-		x.typ = Typ[UntypedComplex]
+-		// TODO(gri) fix this
+-		_, _ = re, im
+-		x.val = zeroConst
+-
+-	case scanner.Char:
+-		// rune_lit
+-		x.setConst(token.CHAR, p.lit)
+-		p.next()
+-
+-	case scanner.String:
+-		// string_lit
+-		x.setConst(token.STRING, p.lit)
+-		p.next()
+-
+-	default:
+-		p.errorf("expected literal got %s", scanner.TokenString(p.tok))
+-	}
+-	if obj.Type == nil {
+-		obj.Type = x.typ
+-	}
+-	assert(x.val != nil)
+-	obj.Val = x.val
+-}
+-
+-// TypeDecl = "type" ExportedName Type .
+-//
+-func (p *gcParser) parseTypeDecl() {
+-	p.expectKeyword("type")
+-	pkg, name := p.parseExportedName()
+-	obj := declTypeName(pkg.Scope, name)
+-
+-	// The type object may have been imported before and thus already
+-	// have a type associated with it. We still need to parse the type
+-	// structure, but throw it away if the object already has a type.
+-	// This ensures that all imports refer to the same type object for
+-	// a given type declaration.
+-	typ := p.parseType()
+-
+-	if name := obj.Type.(*NamedType); name.Underlying == nil {
+-		name.Underlying = typ
+-	}
+-}
+-
+-// VarDecl = "var" ExportedName Type .
+-//
+-func (p *gcParser) parseVarDecl() {
+-	p.expectKeyword("var")
+-	pkg, name := p.parseExportedName()
+-	obj := declVar(pkg.Scope, name)
+-	obj.Type = p.parseType()
+-}
+-
+-// Func = Signature [ Body ] .
+-// Body = "{" ... "}" .
+-//
+-func (p *gcParser) parseFunc() *Signature {
+-	sig := p.parseSignature()
+-	if p.tok == '{' {
+-		p.next()
+-		for i := 1; i > 0; p.next() {
+-			switch p.tok {
+-			case '{':
+-				i++
+-			case '}':
+-				i--
+-			}
+-		}
+-	}
+-	return sig
+-}
+-
+-// MethodDecl = "func" Receiver Name Func .
+-// Receiver   = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" .
+-//
+-func (p *gcParser) parseMethodDecl() {
+-	// "func" already consumed
+-	p.expect('(')
+-	recv, _ := p.parseParameter() // receiver
+-	p.expect(')')
+-
+-	// determine receiver base type object
+-	typ := recv.Type
+-	if ptr, ok := typ.(*Pointer); ok {
+-		typ = ptr.Base
+-	}
+-	base := typ.(*NamedType)
+-
+-	// parse method name, signature, and possibly inlined body
+-	pkg, name := p.parseName() // unexported method names in imports are qualified with their package.
+-	sig := p.parseFunc()
+-	sig.Recv = recv
+-
+-	// add method to type unless type was imported before
+-	// and method exists already
+-	// TODO(gri) investigate if this can be avoided
+-	for _, m := range base.Methods {
+-		if m.Name == name {
+-			return // method was added before
+-		}
+-	}
+-	base.Methods = append(base.Methods, &Method{QualifiedName{pkg, name}, sig})
+-}
+-
+-// FuncDecl = "func" ExportedName Func .
+-//
+-func (p *gcParser) parseFuncDecl() {
+-	// "func" already consumed
+-	pkg, name := p.parseExportedName()
+-	typ := p.parseFunc()
+-	declFunc(pkg.Scope, name).Type = typ
+-}
+-
+-// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" .
+-//
+-func (p *gcParser) parseDecl() {
+-	switch p.lit {
+-	case "import":
+-		p.parseImportDecl()
+-	case "const":
+-		p.parseConstDecl()
+-	case "type":
+-		p.parseTypeDecl()
+-	case "var":
+-		p.parseVarDecl()
+-	case "func":
+-		p.next() // look ahead
+-		if p.tok == '(' {
+-			p.parseMethodDecl()
+-		} else {
+-			p.parseFuncDecl()
+-		}
+-	}
+-	p.expect('\n')
+-}
+-
+-// ----------------------------------------------------------------------------
+-// Export
+-
+-// Export        = "PackageClause { Decl } "$$" .
+-// PackageClause = "package" identifier [ "safe" ] "\n" .
+-//
+-func (p *gcParser) parseExport() *Package {
+-	p.expectKeyword("package")
+-	name := p.expect(scanner.Ident)
+-	if p.tok != '\n' {
+-		// A package is safe if it was compiled with the -u flag,
+-		// which disables the unsafe package.
+-		// TODO(gri) remember "safe" package
+-		p.expectKeyword("safe")
+-	}
+-	p.expect('\n')
+-
+-	pkg := p.imports[p.id]
+-	if pkg == nil {
+-		pkg = &Package{Name: name, Scope: new(Scope)}
+-		p.imports[p.id] = pkg
+-	}
+-
+-	for p.tok != '$' && p.tok != scanner.EOF {
+-		p.parseDecl()
+-	}
+-
+-	if ch := p.scanner.Peek(); p.tok != '$' || ch != '$' {
+-		// don't call next()/expect() since reading past the
+-		// export data may cause scanner errors (e.g. NUL chars)
+-		p.errorf("expected '$$', got %s %c", scanner.TokenString(p.tok), ch)
+-	}
+-
+-	if n := p.scanner.ErrorCount; n != 0 {
+-		p.errorf("expected no scanner errors, got %d", n)
+-	}
+-
+-	// package was imported completely and without errors
+-	pkg.Complete = true
+-
+-	return pkg
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/gcimporter_test.go gcc-4.8.1/libgo/go/go/types/gcimporter_test.go
+--- gcc-4.8.1.orig/libgo/go/go/types/gcimporter_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/gcimporter_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,180 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/build"
+-	"io/ioutil"
+-	"os"
+-	"os/exec"
+-	"path/filepath"
+-	"runtime"
+-	"strings"
+-	"testing"
+-	"time"
+-)
+-
+-var gcPath string // Go compiler path
+-
+-func init() {
+-	// determine compiler
+-	var gc string
+-	switch runtime.GOARCH {
+-	case "386":
+-		gc = "8g"
+-	case "amd64":
+-		gc = "6g"
+-	case "arm":
+-		gc = "5g"
+-	default:
+-		gcPath = "unknown-GOARCH-compiler"
+-		return
+-	}
+-	gcPath = filepath.Join(build.ToolDir, gc)
+-}
+-
+-func compile(t *testing.T, dirname, filename string) string {
+-	cmd := exec.Command(gcPath, filename)
+-	cmd.Dir = dirname
+-	out, err := cmd.CombinedOutput()
+-	if err != nil {
+-		t.Logf("%s", out)
+-		t.Fatalf("%s %s failed: %s", gcPath, filename, err)
+-	}
+-	archCh, _ := build.ArchChar(runtime.GOARCH)
+-	// filename should end with ".go"
+-	return filepath.Join(dirname, filename[:len(filename)-2]+archCh)
+-}
+-
+-// Use the same global imports map for all tests. The effect is
+-// as if all tested packages were imported into a single package.
+-var imports = make(map[string]*Package)
+-
+-func testPath(t *testing.T, path string) bool {
+-	t0 := time.Now()
+-	_, err := GcImport(imports, path)
+-	if err != nil {
+-		t.Errorf("testPath(%s): %s", path, err)
+-		return false
+-	}
+-	t.Logf("testPath(%s): %v", path, time.Since(t0))
+-	return true
+-}
+-
+-const maxTime = 30 * time.Second
+-
+-func testDir(t *testing.T, dir string, endTime time.Time) (nimports int) {
+-	dirname := filepath.Join(runtime.GOROOT(), "pkg", runtime.GOOS+"_"+runtime.GOARCH, dir)
+-	list, err := ioutil.ReadDir(dirname)
+-	if err != nil {
+-		t.Fatalf("testDir(%s): %s", dirname, err)
+-	}
+-	for _, f := range list {
+-		if time.Now().After(endTime) {
+-			t.Log("testing time used up")
+-			return
+-		}
+-		switch {
+-		case !f.IsDir():
+-			// try extensions
+-			for _, ext := range pkgExts {
+-				if strings.HasSuffix(f.Name(), ext) {
+-					name := f.Name()[0 : len(f.Name())-len(ext)] // remove extension
+-					if testPath(t, filepath.Join(dir, name)) {
+-						nimports++
+-					}
+-				}
+-			}
+-		case f.IsDir():
+-			nimports += testDir(t, filepath.Join(dir, f.Name()), endTime)
+-		}
+-	}
+-	return
+-}
+-
+-func TestGcImport(t *testing.T) {
+-	// On cross-compile builds, the path will not exist.
+-	// Need to use GOHOSTOS, which is not available.
+-	if _, err := os.Stat(gcPath); err != nil {
+-		t.Skipf("skipping test: %v", err)
+-	}
+-
+-	if outFn := compile(t, "testdata", "exports.go"); outFn != "" {
+-		defer os.Remove(outFn)
+-	}
+-
+-	nimports := 0
+-	if testPath(t, "./testdata/exports") {
+-		nimports++
+-	}
+-	nimports += testDir(t, "", time.Now().Add(maxTime)) // installed packages
+-	t.Logf("tested %d imports", nimports)
+-}
+-
+-var importedObjectTests = []struct {
+-	name string
+-	kind ast.ObjKind
+-	typ  string
+-}{
+-	{"unsafe.Pointer", ast.Typ, "Pointer"},
+-	{"math.Pi", ast.Con, "untyped float"},
+-	{"io.Reader", ast.Typ, "interface{Read(p []byte) (n int, err error)}"},
+-	{"io.ReadWriter", ast.Typ, "interface{Read(p []byte) (n int, err error); Write(p []byte) (n int, err error)}"},
+-	{"math.Sin", ast.Fun, "func(xÂ·2 float64) (_ float64)"},
+-	// TODO(gri) add more tests
+-}
+-
+-func TestGcImportedTypes(t *testing.T) {
+-	// This package does not yet know how to read gccgo export data.
+-	if runtime.Compiler == "gccgo" {
+-		return
+-	}
+-	for _, test := range importedObjectTests {
+-		s := strings.Split(test.name, ".")
+-		if len(s) != 2 {
+-			t.Fatal("inconsistent test data")
+-		}
+-		importPath := s[0]
+-		objName := s[1]
+-
+-		pkg, err := GcImport(imports, importPath)
+-		if err != nil {
+-			t.Error(err)
+-			continue
+-		}
+-
+-		obj := pkg.Scope.Lookup(objName)
+-
+-		// TODO(gri) should define an accessor on Object
+-		var kind ast.ObjKind
+-		var typ Type
+-		switch obj := obj.(type) {
+-		case *Const:
+-			kind = ast.Con
+-			typ = obj.Type
+-		case *TypeName:
+-			kind = ast.Typ
+-			typ = obj.Type
+-		case *Var:
+-			kind = ast.Var
+-			typ = obj.Type
+-		case *Func:
+-			kind = ast.Fun
+-			typ = obj.Type
+-		default:
+-			unreachable()
+-		}
+-
+-		if kind != test.kind {
+-			t.Errorf("%s: got kind = %q; want %q", test.name, kind, test.kind)
+-		}
+-
+-		str := typeString(underlying(typ))
+-		if str != test.typ {
+-			t.Errorf("%s: got type = %q; want %q", test.name, typ, test.typ)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/objects.go gcc-4.8.1/libgo/go/go/types/objects.go
+--- gcc-4.8.1.orig/libgo/go/go/types/objects.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/objects.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,155 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// An Object describes a named language entity such as a package,
+-// constant, type, variable, function (incl. methods), or label.
+-// All objects implement the Object interface.
+-//
+-type Object interface {
+-	GetName() string
+-	GetType() Type
+-	GetPos() token.Pos
+-
+-	anObject()
+-}
+-
+-// A Package represents the contents (objects) of a Go package.
+-type Package struct {
+-	Name     string
+-	Path     string              // import path, "" for current (non-imported) package
+-	Scope    *Scope              // package-level scope
+-	Imports  map[string]*Package // map of import paths to imported packages
+-	Complete bool                // if set, this package was imported completely
+-
+-	spec *ast.ImportSpec
+-}
+-
+-// A Const represents a declared constant.
+-type Const struct {
+-	Name string
+-	Type Type
+-	Val  interface{}
+-
+-	spec *ast.ValueSpec
+-}
+-
+-// A TypeName represents a declared type.
+-type TypeName struct {
+-	Name string
+-	Type Type // *NamedType or *Basic
+-
+-	spec *ast.TypeSpec
+-}
+-
+-// A Variable represents a declared variable (including function parameters and results).
+-type Var struct {
+-	Name string
+-	Type Type
+-
+-	visited bool // for initialization cycle detection
+-	decl    interface{}
+-}
+-
+-// A Func represents a declared function.
+-type Func struct {
+-	Name string
+-	Type Type // *Signature or *Builtin
+-
+-	decl *ast.FuncDecl
+-}
+-
+-func (obj *Package) GetName() string  { return obj.Name }
+-func (obj *Const) GetName() string    { return obj.Name }
+-func (obj *TypeName) GetName() string { return obj.Name }
+-func (obj *Var) GetName() string      { return obj.Name }
+-func (obj *Func) GetName() string     { return obj.Name }
+-
+-func (obj *Package) GetType() Type  { return Typ[Invalid] }
+-func (obj *Const) GetType() Type    { return obj.Type }
+-func (obj *TypeName) GetType() Type { return obj.Type }
+-func (obj *Var) GetType() Type      { return obj.Type }
+-func (obj *Func) GetType() Type     { return obj.Type }
+-
+-func (obj *Package) GetPos() token.Pos { return obj.spec.Pos() }
+-func (obj *Const) GetPos() token.Pos {
+-	for _, n := range obj.spec.Names {
+-		if n.Name == obj.Name {
+-			return n.Pos()
+-		}
+-	}
+-	return token.NoPos
+-}
+-func (obj *TypeName) GetPos() token.Pos { return obj.spec.Pos() }
+-func (obj *Var) GetPos() token.Pos {
+-	switch d := obj.decl.(type) {
+-	case *ast.Field:
+-		for _, n := range d.Names {
+-			if n.Name == obj.Name {
+-				return n.Pos()
+-			}
+-		}
+-	case *ast.ValueSpec:
+-		for _, n := range d.Names {
+-			if n.Name == obj.Name {
+-				return n.Pos()
+-			}
+-		}
+-	case *ast.AssignStmt:
+-		for _, x := range d.Lhs {
+-			if ident, isIdent := x.(*ast.Ident); isIdent && ident.Name == obj.Name {
+-				return ident.Pos()
+-			}
+-		}
+-	}
+-	return token.NoPos
+-}
+-func (obj *Func) GetPos() token.Pos { return obj.decl.Name.Pos() }
+-
+-func (*Package) anObject()  {}
+-func (*Const) anObject()    {}
+-func (*TypeName) anObject() {}
+-func (*Var) anObject()      {}
+-func (*Func) anObject()     {}
+-
+-// newObj returns a new Object for a given *ast.Object.
+-// It does not canonicalize them (it always returns a new one).
+-// For canonicalization, see check.lookup.
+-//
+-// TODO(gri) Once we do identifier resolution completely in
+-//           in the typechecker, this functionality can go.
+-//
+-func newObj(astObj *ast.Object) Object {
+-	name := astObj.Name
+-	typ, _ := astObj.Type.(Type)
+-	switch astObj.Kind {
+-	case ast.Bad:
+-		// ignore
+-	case ast.Pkg:
+-		unreachable()
+-	case ast.Con:
+-		return &Const{Name: name, Type: typ, Val: astObj.Data, spec: astObj.Decl.(*ast.ValueSpec)}
+-	case ast.Typ:
+-		return &TypeName{Name: name, Type: typ, spec: astObj.Decl.(*ast.TypeSpec)}
+-	case ast.Var:
+-		switch astObj.Decl.(type) {
+-		case *ast.Field, *ast.ValueSpec, *ast.AssignStmt: // these are ok
+-		default:
+-			unreachable()
+-		}
+-		return &Var{Name: name, Type: typ, decl: astObj.Decl}
+-	case ast.Fun:
+-		return &Func{Name: name, Type: typ, decl: astObj.Decl.(*ast.FuncDecl)}
+-	case ast.Lbl:
+-		unreachable() // for now
+-	}
+-	unreachable()
+-	return nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/operand.go gcc-4.8.1/libgo/go/go/types/operand.go
+--- gcc-4.8.1.orig/libgo/go/go/types/operand.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/operand.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,393 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file defines operands and associated operations.
+-
+-package types
+-
+-import (
+-	"bytes"
+-	"fmt"
+-	"go/ast"
+-	"go/token"
+-)
+-
+-// An operandMode specifies the (addressing) mode of an operand.
+-type operandMode int
+-
+-const (
+-	invalid  operandMode = iota // operand is invalid (due to an earlier error) - ignore
+-	novalue                     // operand represents no value (result of a function call w/o result)
+-	typexpr                     // operand is a type
+-	constant                    // operand is a constant; the operand's typ is a Basic type
+-	variable                    // operand is an addressable variable
+-	value                       // operand is a computed value
+-	valueok                     // like mode == value, but operand may be used in a comma,ok expression
+-)
+-
+-var operandModeString = [...]string{
+-	invalid:  "invalid",
+-	novalue:  "no value",
+-	typexpr:  "type",
+-	constant: "constant",
+-	variable: "variable",
+-	value:    "value",
+-	valueok:  "value,ok",
+-}
+-
+-// An operand represents an intermediate value during type checking.
+-// Operands have an (addressing) mode, the expression evaluating to
+-// the operand, the operand's type, and for constants a constant value.
+-//
+-type operand struct {
+-	mode operandMode
+-	expr ast.Expr
+-	typ  Type
+-	val  interface{}
+-}
+-
+-// pos returns the position of the expression corresponding to x.
+-// If x is invalid the position is token.NoPos.
+-//
+-func (x *operand) pos() token.Pos {
+-	// x.expr may not be set if x is invalid
+-	if x.expr == nil {
+-		return token.NoPos
+-	}
+-	return x.expr.Pos()
+-}
+-
+-func (x *operand) String() string {
+-	if x.mode == invalid {
+-		return "invalid operand"
+-	}
+-	var buf bytes.Buffer
+-	if x.expr != nil {
+-		buf.WriteString(exprString(x.expr))
+-		buf.WriteString(" (")
+-	}
+-	buf.WriteString(operandModeString[x.mode])
+-	if x.mode == constant {
+-		format := " %v"
+-		if isString(x.typ) {
+-			format = " %q"
+-		}
+-		fmt.Fprintf(&buf, format, x.val)
+-	}
+-	if x.mode != novalue && (x.mode != constant || !isUntyped(x.typ)) {
+-		fmt.Fprintf(&buf, " of type %s", typeString(x.typ))
+-	}
+-	if x.expr != nil {
+-		buf.WriteByte(')')
+-	}
+-	return buf.String()
+-}
+-
+-// setConst sets x to the untyped constant for literal lit.
+-func (x *operand) setConst(tok token.Token, lit string) {
+-	x.mode = invalid
+-
+-	var kind BasicKind
+-	var val interface{}
+-	switch tok {
+-	case token.INT:
+-		kind = UntypedInt
+-		val = makeIntConst(lit)
+-
+-	case token.FLOAT:
+-		kind = UntypedFloat
+-		val = makeFloatConst(lit)
+-
+-	case token.IMAG:
+-		kind = UntypedComplex
+-		val = makeComplexConst(lit)
+-
+-	case token.CHAR:
+-		kind = UntypedRune
+-		val = makeRuneConst(lit)
+-
+-	case token.STRING:
+-		kind = UntypedString
+-		val = makeStringConst(lit)
+-	}
+-
+-	if val != nil {
+-		x.mode = constant
+-		x.typ = Typ[kind]
+-		x.val = val
+-	}
+-}
+-
+-// isNil reports whether x is the predeclared nil constant.
+-func (x *operand) isNil() bool {
+-	return x.mode == constant && x.val == nilConst
+-}
+-
+-// TODO(gri) The functions operand.isAssignable, checker.convertUntyped,
+-//           checker.isRepresentable, and checker.assignOperand are
+-//           overlapping in functionality. Need to simplify and clean up.
+-
+-// isAssignable reports whether x is assignable to a variable of type T.
+-func (x *operand) isAssignable(T Type) bool {
+-	if x.mode == invalid || T == Typ[Invalid] {
+-		return true // avoid spurious errors
+-	}
+-
+-	V := x.typ
+-
+-	// x's type is identical to T
+-	if IsIdentical(V, T) {
+-		return true
+-	}
+-
+-	Vu := underlying(V)
+-	Tu := underlying(T)
+-
+-	// x's type V and T have identical underlying types
+-	// and at least one of V or T is not a named type
+-	if IsIdentical(Vu, Tu) {
+-		return !isNamed(V) || !isNamed(T)
+-	}
+-
+-	// T is an interface type and x implements T
+-	if Ti, ok := Tu.(*Interface); ok {
+-		if m, _ := missingMethod(x.typ, Ti); m == nil {
+-			return true
+-		}
+-	}
+-
+-	// x is a bidirectional channel value, T is a channel
+-	// type, x's type V and T have identical element types,
+-	// and at least one of V or T is not a named type
+-	if Vc, ok := Vu.(*Chan); ok && Vc.Dir == ast.SEND|ast.RECV {
+-		if Tc, ok := Tu.(*Chan); ok && IsIdentical(Vc.Elt, Tc.Elt) {
+-			return !isNamed(V) || !isNamed(T)
+-		}
+-	}
+-
+-	// x is the predeclared identifier nil and T is a pointer,
+-	// function, slice, map, channel, or interface type
+-	if x.isNil() {
+-		switch t := Tu.(type) {
+-		case *Basic:
+-			if t.Kind == UnsafePointer {
+-				return true
+-			}
+-		case *Pointer, *Signature, *Slice, *Map, *Chan, *Interface:
+-			return true
+-		}
+-		return false
+-	}
+-
+-	// x is an untyped constant representable by a value of type T
+-	// TODO(gri) This is borrowing from checker.convertUntyped and
+-	//           checker.isRepresentable. Need to clean up.
+-	if isUntyped(Vu) {
+-		switch t := Tu.(type) {
+-		case *Basic:
+-			if x.mode == constant {
+-				return isRepresentableConst(x.val, t.Kind)
+-			}
+-			// The result of a comparison is an untyped boolean,
+-			// but may not be a constant.
+-			if Vb, _ := Vu.(*Basic); Vb != nil {
+-				return Vb.Kind == UntypedBool && isBoolean(Tu)
+-			}
+-		case *Interface:
+-			return x.isNil() || len(t.Methods) == 0
+-		case *Pointer, *Signature, *Slice, *Map, *Chan:
+-			return x.isNil()
+-		}
+-	}
+-
+-	return false
+-}
+-
+-// isInteger reports whether x is a (typed or untyped) integer value.
+-func (x *operand) isInteger() bool {
+-	return x.mode == invalid ||
+-		isInteger(x.typ) ||
+-		x.mode == constant && isRepresentableConst(x.val, UntypedInt)
+-}
+-
+-type lookupResult struct {
+-	mode operandMode
+-	typ  Type
+-}
+-
+-type embeddedType struct {
+-	typ       *NamedType
+-	multiples bool // if set, typ is embedded multiple times at the same level
+-}
+-
+-// lookupFieldBreadthFirst searches all types in list for a single entry (field
+-// or method) of the given name from the given package. If such a field is found,
+-// the result describes the field mode and type; otherwise the result mode is invalid.
+-// (This function is similar in structure to FieldByNameFunc in reflect/type.go)
+-//
+-func lookupFieldBreadthFirst(list []embeddedType, name QualifiedName) (res lookupResult) {
+-	// visited records the types that have been searched already.
+-	visited := make(map[*NamedType]bool)
+-
+-	// embedded types of the next lower level
+-	var next []embeddedType
+-
+-	// potentialMatch is invoked every time a match is found.
+-	potentialMatch := func(multiples bool, mode operandMode, typ Type) bool {
+-		if multiples || res.mode != invalid {
+-			// name appeared already at this level - annihilate
+-			res.mode = invalid
+-			return false
+-		}
+-		// first appearance of name
+-		res.mode = mode
+-		res.typ = typ
+-		return true
+-	}
+-
+-	// Search the current level if there is any work to do and collect
+-	// embedded types of the next lower level in the next list.
+-	for len(list) > 0 {
+-		// The res.mode indicates whether we have found a match already
+-		// on this level (mode != invalid), or not (mode == invalid).
+-		assert(res.mode == invalid)
+-
+-		// start with empty next list (don't waste underlying array)
+-		next = next[:0]
+-
+-		// look for name in all types at this level
+-		for _, e := range list {
+-			typ := e.typ
+-			if visited[typ] {
+-				continue
+-			}
+-			visited[typ] = true
+-
+-			// look for a matching attached method
+-			for _, m := range typ.Methods {
+-				if name.IsSame(m.QualifiedName) {
+-					assert(m.Type != nil)
+-					if !potentialMatch(e.multiples, value, m.Type) {
+-						return // name collision
+-					}
+-				}
+-			}
+-
+-			switch t := typ.Underlying.(type) {
+-			case *Struct:
+-				// look for a matching field and collect embedded types
+-				for _, f := range t.Fields {
+-					if name.IsSame(f.QualifiedName) {
+-						assert(f.Type != nil)
+-						if !potentialMatch(e.multiples, variable, f.Type) {
+-							return // name collision
+-						}
+-						continue
+-					}
+-					// Collect embedded struct fields for searching the next
+-					// lower level, but only if we have not seen a match yet
+-					// (if we have a match it is either the desired field or
+-					// we have a name collision on the same level; in either
+-					// case we don't need to look further).
+-					// Embedded fields are always of the form T or *T where
+-					// T is a named type. If typ appeared multiple times at
+-					// this level, f.Type appears multiple times at the next
+-					// level.
+-					if f.IsAnonymous && res.mode == invalid {
+-						next = append(next, embeddedType{deref(f.Type).(*NamedType), e.multiples})
+-					}
+-				}
+-
+-			case *Interface:
+-				// look for a matching method
+-				for _, m := range t.Methods {
+-					if name.IsSame(m.QualifiedName) {
+-						assert(m.Type != nil)
+-						if !potentialMatch(e.multiples, value, m.Type) {
+-							return // name collision
+-						}
+-					}
+-				}
+-			}
+-		}
+-
+-		if res.mode != invalid {
+-			// we found a single match on this level
+-			return
+-		}
+-
+-		// No match and no collision so far.
+-		// Compute the list to search for the next level.
+-		list = list[:0] // don't waste underlying array
+-		for _, e := range next {
+-			// Instead of adding the same type multiple times, look for
+-			// it in the list and mark it as multiple if it was added
+-			// before.
+-			// We use a sequential search (instead of a map for next)
+-			// because the lists tend to be small, can easily be reused,
+-			// and explicit search appears to be faster in this case.
+-			if alt := findType(list, e.typ); alt != nil {
+-				alt.multiples = true
+-			} else {
+-				list = append(list, e)
+-			}
+-		}
+-
+-	}
+-
+-	return
+-}
+-
+-func findType(list []embeddedType, typ *NamedType) *embeddedType {
+-	for i := range list {
+-		if p := &list[i]; p.typ == typ {
+-			return p
+-		}
+-	}
+-	return nil
+-}
+-
+-func lookupField(typ Type, name QualifiedName) (operandMode, Type) {
+-	typ = deref(typ)
+-
+-	if t, ok := typ.(*NamedType); ok {
+-		for _, m := range t.Methods {
+-			if name.IsSame(m.QualifiedName) {
+-				assert(m.Type != nil)
+-				return value, m.Type
+-			}
+-		}
+-		typ = t.Underlying
+-	}
+-
+-	switch t := typ.(type) {
+-	case *Struct:
+-		var next []embeddedType
+-		for _, f := range t.Fields {
+-			if name.IsSame(f.QualifiedName) {
+-				return variable, f.Type
+-			}
+-			if f.IsAnonymous {
+-				// Possible optimization: If the embedded type
+-				// is a pointer to the current type we could
+-				// ignore it.
+-				next = append(next, embeddedType{typ: deref(f.Type).(*NamedType)})
+-			}
+-		}
+-		if len(next) > 0 {
+-			res := lookupFieldBreadthFirst(next, name)
+-			return res.mode, res.typ
+-		}
+-
+-	case *Interface:
+-		for _, m := range t.Methods {
+-			if name.IsSame(m.QualifiedName) {
+-				return value, m.Type
+-			}
+-		}
+-	}
+-
+-	// not found
+-	return invalid, nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/predicates.go gcc-4.8.1/libgo/go/go/types/predicates.go
+--- gcc-4.8.1.orig/libgo/go/go/types/predicates.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/predicates.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,303 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements commonly used type predicates.
+-
+-package types
+-
+-func isNamed(typ Type) bool {
+-	if _, ok := typ.(*Basic); ok {
+-		return ok
+-	}
+-	_, ok := typ.(*NamedType)
+-	return ok
+-}
+-
+-func isBoolean(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsBoolean != 0
+-}
+-
+-func isInteger(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsInteger != 0
+-}
+-
+-func isUnsigned(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsUnsigned != 0
+-}
+-
+-func isFloat(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsFloat != 0
+-}
+-
+-func isComplex(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsComplex != 0
+-}
+-
+-func isNumeric(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsNumeric != 0
+-}
+-
+-func isString(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsString != 0
+-}
+-
+-func isUntyped(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsUntyped != 0
+-}
+-
+-func isOrdered(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsOrdered != 0
+-}
+-
+-func isConstType(typ Type) bool {
+-	t, ok := underlying(typ).(*Basic)
+-	return ok && t.Info&IsConstType != 0
+-}
+-
+-func isComparable(typ Type) bool {
+-	switch t := underlying(typ).(type) {
+-	case *Basic:
+-		return t.Kind != Invalid && t.Kind != UntypedNil
+-	case *Pointer, *Interface, *Chan:
+-		// assumes types are equal for pointers and channels
+-		return true
+-	case *Struct:
+-		for _, f := range t.Fields {
+-			if !isComparable(f.Type) {
+-				return false
+-			}
+-		}
+-		return true
+-	case *Array:
+-		return isComparable(t.Elt)
+-	}
+-	return false
+-}
+-
+-func hasNil(typ Type) bool {
+-	switch underlying(typ).(type) {
+-	case *Slice, *Pointer, *Signature, *Interface, *Map, *Chan:
+-		return true
+-	}
+-	return false
+-}
+-
+-// IsIdentical returns true if x and y are identical.
+-func IsIdentical(x, y Type) bool {
+-	if x == y {
+-		return true
+-	}
+-
+-	switch x := x.(type) {
+-	case *Basic:
+-		// Basic types are singletons except for the rune and byte
+-		// aliases, thus we cannot solely rely on the x == y check
+-		// above.
+-		if y, ok := y.(*Basic); ok {
+-			return x.Kind == y.Kind
+-		}
+-
+-	case *Array:
+-		// Two array types are identical if they have identical element types
+-		// and the same array length.
+-		if y, ok := y.(*Array); ok {
+-			return x.Len == y.Len && IsIdentical(x.Elt, y.Elt)
+-		}
+-
+-	case *Slice:
+-		// Two slice types are identical if they have identical element types.
+-		if y, ok := y.(*Slice); ok {
+-			return IsIdentical(x.Elt, y.Elt)
+-		}
+-
+-	case *Struct:
+-		// Two struct types are identical if they have the same sequence of fields,
+-		// and if corresponding fields have the same names, and identical types,
+-		// and identical tags. Two anonymous fields are considered to have the same
+-		// name. Lower-case field names from different packages are always different.
+-		if y, ok := y.(*Struct); ok {
+-			if len(x.Fields) == len(y.Fields) {
+-				for i, f := range x.Fields {
+-					g := y.Fields[i]
+-					if !f.QualifiedName.IsSame(g.QualifiedName) ||
+-						!IsIdentical(f.Type, g.Type) ||
+-						f.Tag != g.Tag ||
+-						f.IsAnonymous != g.IsAnonymous {
+-						return false
+-					}
+-				}
+-				return true
+-			}
+-		}
+-
+-	case *Pointer:
+-		// Two pointer types are identical if they have identical base types.
+-		if y, ok := y.(*Pointer); ok {
+-			return IsIdentical(x.Base, y.Base)
+-		}
+-
+-	case *Signature:
+-		// Two function types are identical if they have the same number of parameters
+-		// and result values, corresponding parameter and result types are identical,
+-		// and either both functions are variadic or neither is. Parameter and result
+-		// names are not required to match.
+-		if y, ok := y.(*Signature); ok {
+-			return identicalTypes(x.Params, y.Params) &&
+-				identicalTypes(x.Results, y.Results) &&
+-				x.IsVariadic == y.IsVariadic
+-		}
+-
+-	case *Interface:
+-		// Two interface types are identical if they have the same set of methods with
+-		// the same names and identical function types. Lower-case method names from
+-		// different packages are always different. The order of the methods is irrelevant.
+-		if y, ok := y.(*Interface); ok {
+-			return identicalMethods(x.Methods, y.Methods) // methods are sorted
+-		}
+-
+-	case *Map:
+-		// Two map types are identical if they have identical key and value types.
+-		if y, ok := y.(*Map); ok {
+-			return IsIdentical(x.Key, y.Key) && IsIdentical(x.Elt, y.Elt)
+-		}
+-
+-	case *Chan:
+-		// Two channel types are identical if they have identical value types
+-		// and the same direction.
+-		if y, ok := y.(*Chan); ok {
+-			return x.Dir == y.Dir && IsIdentical(x.Elt, y.Elt)
+-		}
+-
+-	case *NamedType:
+-		// Two named types are identical if their type names originate
+-		// in the same type declaration.
+-		if y, ok := y.(*NamedType); ok {
+-			return x.Obj == y.Obj
+-		}
+-	}
+-
+-	return false
+-}
+-
+-// identicalTypes returns true if both lists a and b have the
+-// same length and corresponding objects have identical types.
+-func identicalTypes(a, b []*Var) bool {
+-	if len(a) != len(b) {
+-		return false
+-	}
+-	for i, x := range a {
+-		y := b[i]
+-		if !IsIdentical(x.Type, y.Type) {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-// identicalMethods returns true if both lists a and b have the
+-// same length and corresponding methods have identical types.
+-// TODO(gri) make this more efficient
+-func identicalMethods(a, b []*Method) bool {
+-	if len(a) != len(b) {
+-		return false
+-	}
+-	m := make(map[QualifiedName]*Method)
+-	for _, x := range a {
+-		assert(m[x.QualifiedName] == nil) // method list must not have duplicate entries
+-		m[x.QualifiedName] = x
+-	}
+-	for _, y := range b {
+-		if x := m[y.QualifiedName]; x == nil || !IsIdentical(x.Type, y.Type) {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-// underlying returns the underlying type of typ.
+-func underlying(typ Type) Type {
+-	// Basic types are representing themselves directly even though they are named.
+-	if typ, ok := typ.(*NamedType); ok {
+-		return typ.Underlying // underlying types are never NamedTypes
+-	}
+-	return typ
+-}
+-
+-// deref returns a pointer's base type; otherwise it returns typ.
+-func deref(typ Type) Type {
+-	if typ, ok := underlying(typ).(*Pointer); ok {
+-		return typ.Base
+-	}
+-	return typ
+-}
+-
+-// defaultType returns the default "typed" type for an "untyped" type;
+-// it returns the incoming type for all other types. If there is no
+-// corresponding untyped type, the result is Typ[Invalid].
+-//
+-func defaultType(typ Type) Type {
+-	if t, ok := typ.(*Basic); ok {
+-		k := Invalid
+-		switch t.Kind {
+-		// case UntypedNil:
+-		//      There is no default type for nil. For a good error message,
+-		//      catch this case before calling this function.
+-		case UntypedBool:
+-			k = Bool
+-		case UntypedInt:
+-			k = Int
+-		case UntypedRune:
+-			k = Rune
+-		case UntypedFloat:
+-			k = Float64
+-		case UntypedComplex:
+-			k = Complex128
+-		case UntypedString:
+-			k = String
+-		}
+-		typ = Typ[k]
+-	}
+-	return typ
+-}
+-
+-// missingMethod returns (nil, false) if typ implements T, otherwise
+-// it returns the first missing method required by T and whether it
+-// is missing or simply has the wrong type.
+-//
+-func missingMethod(typ Type, T *Interface) (method *Method, wrongType bool) {
+-	// TODO(gri): this needs to correctly compare method names (taking package into account)
+-	// TODO(gri): distinguish pointer and non-pointer receivers
+-	// an interface type implements T if it has no methods with conflicting signatures
+-	// Note: This is stronger than the current spec. Should the spec require this?
+-	if ityp, _ := underlying(typ).(*Interface); ityp != nil {
+-		for _, m := range T.Methods {
+-			mode, sig := lookupField(ityp, m.QualifiedName) // TODO(gri) no need to go via lookupField
+-			if mode != invalid && !IsIdentical(sig, m.Type) {
+-				return m, true
+-			}
+-		}
+-		return
+-	}
+-
+-	// a concrete type implements T if it implements all methods of T.
+-	for _, m := range T.Methods {
+-		mode, sig := lookupField(typ, m.QualifiedName)
+-		if mode == invalid {
+-			return m, false
+-		}
+-		if !IsIdentical(sig, m.Type) {
+-			return m, true
+-		}
+-	}
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/resolve.go gcc-4.8.1/libgo/go/go/types/resolve.go
+--- gcc-4.8.1.orig/libgo/go/go/types/resolve.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/resolve.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,177 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-import (
+-	"fmt"
+-	"go/ast"
+-	"go/token"
+-	"strconv"
+-)
+-
+-func (check *checker) declareObj(scope, altScope *Scope, obj Object) {
+-	alt := scope.Insert(obj)
+-	if alt == nil && altScope != nil {
+-		// see if there is a conflicting declaration in altScope
+-		alt = altScope.Lookup(obj.GetName())
+-	}
+-	if alt != nil {
+-		prevDecl := ""
+-		if pos := alt.GetPos(); pos.IsValid() {
+-			prevDecl = fmt.Sprintf("\n\tprevious declaration at %s", check.fset.Position(pos))
+-		}
+-		check.errorf(obj.GetPos(), fmt.Sprintf("%s redeclared in this block%s", obj.GetName(), prevDecl))
+-	}
+-}
+-
+-func (check *checker) resolveIdent(scope *Scope, ident *ast.Ident) bool {
+-	for ; scope != nil; scope = scope.Outer {
+-		if obj := scope.Lookup(ident.Name); obj != nil {
+-			check.register(ident, obj)
+-			return true
+-		}
+-	}
+-	return false
+-}
+-
+-func (check *checker) resolve(importer Importer) (pkg *Package, methods []*ast.FuncDecl) {
+-	pkg = &Package{Scope: &Scope{Outer: Universe}, Imports: make(map[string]*Package)}
+-
+-	// complete package scope
+-	i := 0
+-	for _, file := range check.files {
+-		// package names must match
+-		switch name := file.Name.Name; {
+-		case pkg.Name == "":
+-			pkg.Name = name
+-		case name != pkg.Name:
+-			check.errorf(file.Package, "package %s; expected %s", name, pkg.Name)
+-			continue // ignore this file
+-		}
+-
+-		// keep this file
+-		check.files[i] = file
+-		i++
+-
+-		// the package identifier denotes the current package
+-		check.register(file.Name, pkg)
+-
+-		// insert top-level file objects in package scope
+-		// (the parser took care of declaration errors)
+-		for _, decl := range file.Decls {
+-			switch d := decl.(type) {
+-			case *ast.BadDecl:
+-				// ignore
+-			case *ast.GenDecl:
+-				if d.Tok == token.CONST {
+-					check.assocInitvals(d)
+-				}
+-				for _, spec := range d.Specs {
+-					switch s := spec.(type) {
+-					case *ast.ImportSpec:
+-						// handled separately below
+-					case *ast.ValueSpec:
+-						for _, name := range s.Names {
+-							if name.Name == "_" {
+-								continue
+-							}
+-							pkg.Scope.Insert(check.lookup(name))
+-						}
+-					case *ast.TypeSpec:
+-						if s.Name.Name == "_" {
+-							continue
+-						}
+-						pkg.Scope.Insert(check.lookup(s.Name))
+-					default:
+-						check.invalidAST(s.Pos(), "unknown ast.Spec node %T", s)
+-					}
+-				}
+-			case *ast.FuncDecl:
+-				if d.Recv != nil {
+-					// collect method
+-					methods = append(methods, d)
+-					continue
+-				}
+-				if d.Name.Name == "_" || d.Name.Name == "init" {
+-					continue // blank (_) and init functions are inaccessible
+-				}
+-				pkg.Scope.Insert(check.lookup(d.Name))
+-			default:
+-				check.invalidAST(d.Pos(), "unknown ast.Decl node %T", d)
+-			}
+-		}
+-	}
+-	check.files = check.files[0:i]
+-
+-	// complete file scopes with imports and resolve identifiers
+-	for _, file := range check.files {
+-		// build file scope by processing all imports
+-		importErrors := false
+-		fileScope := &Scope{Outer: pkg.Scope}
+-		for _, spec := range file.Imports {
+-			if importer == nil {
+-				importErrors = true
+-				continue
+-			}
+-			path, _ := strconv.Unquote(spec.Path.Value)
+-			imp, err := importer(pkg.Imports, path)
+-			if err != nil {
+-				check.errorf(spec.Path.Pos(), "could not import %s (%s)", path, err)
+-				importErrors = true
+-				continue
+-			}
+-			// TODO(gri) If a local package name != "." is provided,
+-			// global identifier resolution could proceed even if the
+-			// import failed. Consider adjusting the logic here a bit.
+-
+-			// local name overrides imported package name
+-			name := imp.Name
+-			if spec.Name != nil {
+-				name = spec.Name.Name
+-			}
+-
+-			// add import to file scope
+-			if name == "." {
+-				// merge imported scope with file scope
+-				for _, obj := range imp.Scope.Entries {
+-					check.declareObj(fileScope, pkg.Scope, obj)
+-				}
+-				// TODO(gri) consider registering the "." identifier
+-				// if we have Context.Ident callbacks for say blank
+-				// (_) identifiers
+-				// check.register(spec.Name, pkg)
+-			} else if name != "_" {
+-				// declare imported package object in file scope
+-				// (do not re-use imp in the file scope but create
+-				// a new object instead; the Decl field is different
+-				// for different files)
+-				obj := &Package{Name: name, Scope: imp.Scope, spec: spec}
+-				check.declareObj(fileScope, pkg.Scope, obj)
+-			}
+-		}
+-
+-		// resolve identifiers
+-		if importErrors {
+-			// don't use the universe scope without correct imports
+-			// (objects in the universe may be shadowed by imports;
+-			// with missing imports, identifiers might get resolved
+-			// incorrectly to universe objects)
+-			pkg.Scope.Outer = nil
+-		}
+-		i := 0
+-		for _, ident := range file.Unresolved {
+-			if !check.resolveIdent(fileScope, ident) {
+-				check.errorf(ident.Pos(), "undeclared name: %s", ident.Name)
+-				file.Unresolved[i] = ident
+-				i++
+-			}
+-
+-		}
+-		file.Unresolved = file.Unresolved[0:i]
+-		pkg.Scope.Outer = Universe // reset outer scope (is nil if there were importErrors)
+-	}
+-
+-	return
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/resolver_test.go gcc-4.8.1/libgo/go/go/types/resolver_test.go
+--- gcc-4.8.1.orig/libgo/go/go/types/resolver_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/resolver_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,171 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/parser"
+-	"go/token"
+-	"testing"
+-)
+-
+-var sources = []string{
+-	`
+-	package p
+-	import "fmt"
+-	import "math"
+-	const pi = math.Pi
+-	func sin(x float64) float64 {
+-		return math.Sin(x)
+-	}
+-	var Println = fmt.Println
+-	`,
+-	`
+-	package p
+-	import "fmt"
+-	func f() string {
+-		_ = "foo"
+-		return fmt.Sprintf("%d", g())
+-	}
+-	func g() (x int) { return }
+-	`,
+-	`
+-	package p
+-	import . "go/parser"
+-	import "sync"
+-	func g() Mode { return ImportsOnly }
+-	var _, x int = 1, 2
+-	func init() {}
+-	type T struct{ sync.Mutex; a, b, c int}
+-	type I interface{ m() }
+-	var _ = T{a: 1, b: 2, c: 3}
+-	func (_ T) m() {}
+-	`,
+-}
+-
+-var pkgnames = []string{
+-	"fmt",
+-	"math",
+-}
+-
+-func TestResolveQualifiedIdents(t *testing.T) {
+-	// Does not work with gccgo, because it requires reading gc
+-	// import files.
+-	return
+-
+-	// parse package files
+-	fset := token.NewFileSet()
+-	var files []*ast.File
+-	for _, src := range sources {
+-		f, err := parser.ParseFile(fset, "", src, parser.DeclarationErrors)
+-		if err != nil {
+-			t.Fatal(err)
+-		}
+-		files = append(files, f)
+-	}
+-
+-	// resolve and type-check package AST
+-	idents := make(map[*ast.Ident]Object)
+-	ctxt := Default
+-	ctxt.Ident = func(id *ast.Ident, obj Object) { idents[id] = obj }
+-	pkg, err := ctxt.Check(fset, files)
+-	if err != nil {
+-		t.Fatal(err)
+-	}
+-
+-	// check that all packages were imported
+-	for _, name := range pkgnames {
+-		if pkg.Imports[name] == nil {
+-			t.Errorf("package %s not imported", name)
+-		}
+-	}
+-
+-	// check that there are no top-level unresolved identifiers
+-	for _, f := range files {
+-		for _, x := range f.Unresolved {
+-			t.Errorf("%s: unresolved global identifier %s", fset.Position(x.Pos()), x.Name)
+-		}
+-	}
+-
+-	// check that qualified identifiers are resolved
+-	for _, f := range files {
+-		ast.Inspect(f, func(n ast.Node) bool {
+-			if s, ok := n.(*ast.SelectorExpr); ok {
+-				if x, ok := s.X.(*ast.Ident); ok {
+-					obj := idents[x]
+-					if obj == nil {
+-						t.Errorf("%s: unresolved qualified identifier %s", fset.Position(x.Pos()), x.Name)
+-						return false
+-					}
+-					if _, ok := obj.(*Package); ok && idents[s.Sel] == nil {
+-						t.Errorf("%s: unresolved selector %s", fset.Position(s.Sel.Pos()), s.Sel.Name)
+-						return false
+-					}
+-					return false
+-				}
+-				return false
+-			}
+-			return true
+-		})
+-	}
+-
+-	// Currently, the Check API doesn't call Ident for fields, methods, and composite literal keys.
+-	// Introduce them artifically so that we can run the check below.
+-	for _, f := range files {
+-		ast.Inspect(f, func(n ast.Node) bool {
+-			switch x := n.(type) {
+-			case *ast.StructType:
+-				for _, list := range x.Fields.List {
+-					for _, f := range list.Names {
+-						assert(idents[f] == nil)
+-						idents[f] = &Var{Name: f.Name}
+-					}
+-				}
+-			case *ast.InterfaceType:
+-				for _, list := range x.Methods.List {
+-					for _, f := range list.Names {
+-						assert(idents[f] == nil)
+-						idents[f] = &Func{Name: f.Name}
+-					}
+-				}
+-			case *ast.CompositeLit:
+-				for _, e := range x.Elts {
+-					if kv, ok := e.(*ast.KeyValueExpr); ok {
+-						if k, ok := kv.Key.(*ast.Ident); ok {
+-							assert(idents[k] == nil)
+-							idents[k] = &Var{Name: k.Name}
+-						}
+-					}
+-				}
+-			}
+-			return true
+-		})
+-	}
+-
+-	// check that each identifier in the source is enumerated by the Context.Ident callback
+-	for _, f := range files {
+-		ast.Inspect(f, func(n ast.Node) bool {
+-			if x, ok := n.(*ast.Ident); ok && x.Name != "_" && x.Name != "." {
+-				obj := idents[x]
+-				if obj == nil {
+-					t.Errorf("%s: unresolved identifier %s", fset.Position(x.Pos()), x.Name)
+-				} else {
+-					delete(idents, x)
+-				}
+-				return false
+-			}
+-			return true
+-		})
+-	}
+-
+-	// TODO(gri) enable code below
+-	// At the moment, the type checker introduces artifical identifiers which are not
+-	// present in the source. Once it doesn't do that anymore, enable the checks below.
+-	/*
+-		for x := range idents {
+-			t.Errorf("%s: identifier %s not present in source", fset.Position(x.Pos()), x.Name)
+-		}
+-	*/
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/scope.go gcc-4.8.1/libgo/go/go/types/scope.go
+--- gcc-4.8.1.orig/libgo/go/go/types/scope.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/scope.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,59 +0,0 @@
+-// Copyright 2013 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-// A Scope maintains the set of named language entities declared
+-// in the scope and a link to the immediately surrounding (outer)
+-// scope.
+-//
+-type Scope struct {
+-	Outer   *Scope
+-	Entries []Object          // scope entries in insertion order
+-	large   map[string]Object // for fast lookup - only used for larger scopes
+-}
+-
+-// Lookup returns the object with the given name if it is
+-// found in scope s, otherwise it returns nil. Outer scopes
+-// are ignored.
+-//
+-func (s *Scope) Lookup(name string) Object {
+-	if s.large != nil {
+-		return s.large[name]
+-	}
+-	for _, obj := range s.Entries {
+-		if obj.GetName() == name {
+-			return obj
+-		}
+-	}
+-	return nil
+-}
+-
+-// Insert attempts to insert an object obj into scope s.
+-// If s already contains an object with the same name,
+-// Insert leaves s unchanged and returns that object.
+-// Otherwise it inserts obj and returns nil.
+-//
+-func (s *Scope) Insert(obj Object) Object {
+-	name := obj.GetName()
+-	if alt := s.Lookup(name); alt != nil {
+-		return alt
+-	}
+-	s.Entries = append(s.Entries, obj)
+-
+-	// If the scope size reaches a threshold, use a map for faster lookups.
+-	const threshold = 20
+-	if len(s.Entries) > threshold {
+-		if s.large == nil {
+-			m := make(map[string]Object, len(s.Entries))
+-			for _, obj := range s.Entries {
+-				m[obj.GetName()] = obj
+-			}
+-			s.large = m
+-		}
+-		s.large[name] = obj
+-	}
+-
+-	return nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/stmt.go gcc-4.8.1/libgo/go/go/types/stmt.go
+--- gcc-4.8.1.orig/libgo/go/go/types/stmt.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/stmt.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,721 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements typechecking of statements.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/token"
+-)
+-
+-func (check *checker) assignOperand(z, x *operand) {
+-	if t, ok := x.typ.(*Result); ok {
+-		// TODO(gri) elsewhere we use "assignment count mismatch" (consolidate)
+-		check.errorf(x.pos(), "%d-valued expression %s used as single value", len(t.Values), x)
+-		x.mode = invalid
+-		return
+-	}
+-
+-	check.convertUntyped(x, z.typ)
+-
+-	if !x.isAssignable(z.typ) {
+-		check.errorf(x.pos(), "cannot assign %s to %s", x, z)
+-		x.mode = invalid
+-	}
+-}
+-
+-// assign1to1 typechecks a single assignment of the form lhs = rhs (if rhs != nil),
+-// or lhs = x (if rhs == nil). If decl is set, the lhs operand must be an identifier.
+-// If its type is not set, it is deduced from the type or value of x. If lhs has a
+-// type it is used as a hint when evaluating rhs, if present.
+-//
+-func (check *checker) assign1to1(lhs, rhs ast.Expr, x *operand, decl bool, iota int) {
+-	ident, _ := lhs.(*ast.Ident)
+-	if x == nil {
+-		assert(rhs != nil)
+-		x = new(operand)
+-	}
+-
+-	if ident != nil && ident.Name == "_" {
+-		// anything can be assigned to a blank identifier - check rhs only, if present
+-		if rhs != nil {
+-			check.expr(x, rhs, nil, iota)
+-		}
+-		return
+-	}
+-
+-	if !decl {
+-		// regular assignment - start with lhs to obtain a type hint
+-		var z operand
+-		check.expr(&z, lhs, nil, -1)
+-		if z.mode == invalid {
+-			z.typ = nil // so we can proceed with rhs
+-		}
+-
+-		if rhs != nil {
+-			check.expr(x, rhs, z.typ, -1)
+-			if x.mode == invalid {
+-				return
+-			}
+-		}
+-
+-		check.assignOperand(&z, x)
+-		if x.mode != invalid && z.mode == constant {
+-			check.errorf(x.pos(), "cannot assign %s to %s", x, &z)
+-		}
+-		return
+-	}
+-
+-	// declaration - lhs must be an identifier
+-	if ident == nil {
+-		check.errorf(lhs.Pos(), "cannot declare %s", lhs)
+-		return
+-	}
+-
+-	// lhs may or may not be typed yet
+-	obj := check.lookup(ident)
+-	var typ Type
+-	if t := obj.GetType(); t != nil {
+-		typ = t
+-	}
+-
+-	if rhs != nil {
+-		check.expr(x, rhs, typ, iota)
+-		// continue even if x.mode == invalid
+-	}
+-
+-	if typ == nil {
+-		// determine lhs type from rhs expression;
+-		// for variables, convert untyped types to
+-		// default types
+-		typ = Typ[Invalid]
+-		if x.mode != invalid {
+-			typ = x.typ
+-			if _, ok := obj.(*Var); ok && isUntyped(typ) {
+-				if x.isNil() {
+-					check.errorf(x.pos(), "use of untyped nil")
+-					x.mode = invalid
+-				} else {
+-					typ = defaultType(typ)
+-				}
+-			}
+-		}
+-		switch obj := obj.(type) {
+-		case *Const:
+-			obj.Type = typ
+-		case *Var:
+-			obj.Type = typ
+-		default:
+-			unreachable()
+-		}
+-	}
+-
+-	if x.mode != invalid {
+-		var z operand
+-		switch obj.(type) {
+-		case *Const:
+-			z.mode = constant
+-		case *Var:
+-			z.mode = variable
+-		default:
+-			unreachable()
+-		}
+-		z.expr = ident
+-		z.typ = typ
+-		check.assignOperand(&z, x)
+-	}
+-
+-	// for constants, set their value
+-	if obj, ok := obj.(*Const); ok {
+-		assert(obj.Val == nil)
+-		if x.mode != invalid {
+-			if x.mode == constant {
+-				if isConstType(x.typ) {
+-					obj.Val = x.val
+-				} else {
+-					check.errorf(x.pos(), "%s has invalid constant type", x)
+-				}
+-			} else {
+-				check.errorf(x.pos(), "%s is not constant", x)
+-			}
+-		}
+-		if obj.Val == nil {
+-			// set the constant to its type's zero value to reduce spurious errors
+-			switch typ := underlying(obj.Type); {
+-			case typ == Typ[Invalid]:
+-				// ignore
+-			case isBoolean(typ):
+-				obj.Val = false
+-			case isNumeric(typ):
+-				obj.Val = int64(0)
+-			case isString(typ):
+-				obj.Val = ""
+-			case hasNil(typ):
+-				obj.Val = nilConst
+-			default:
+-				// in all other cases just prevent use of the constant
+-				// TODO(gri) re-evaluate this code
+-				obj.Val = nilConst
+-			}
+-		}
+-	}
+-}
+-
+-// assignNtoM typechecks a general assignment. If decl is set, the lhs operands
+-// must be identifiers. If their types are not set, they are deduced from the
+-// types of the corresponding rhs expressions. iota >= 0 indicates that the
+-// "assignment" is part of a constant/variable declaration.
+-// Precondition: len(lhs) > 0 .
+-//
+-func (check *checker) assignNtoM(lhs, rhs []ast.Expr, decl bool, iota int) {
+-	assert(len(lhs) > 0)
+-
+-	if len(lhs) == len(rhs) {
+-		for i, e := range rhs {
+-			check.assign1to1(lhs[i], e, nil, decl, iota)
+-		}
+-		return
+-	}
+-
+-	if len(rhs) == 1 {
+-		// len(lhs) > 1, therefore a correct rhs expression
+-		// cannot be a shift and we don't need a type hint;
+-		// ok to evaluate rhs first
+-		var x operand
+-		check.expr(&x, rhs[0], nil, iota)
+-		if x.mode == invalid {
+-			return
+-		}
+-
+-		if t, ok := x.typ.(*Result); ok && len(lhs) == len(t.Values) {
+-			// function result
+-			x.mode = value
+-			for i, obj := range t.Values {
+-				x.expr = nil // TODO(gri) should do better here
+-				x.typ = obj.Type
+-				check.assign1to1(lhs[i], nil, &x, decl, iota)
+-			}
+-			return
+-		}
+-
+-		if x.mode == valueok && len(lhs) == 2 {
+-			// comma-ok expression
+-			x.mode = value
+-			check.assign1to1(lhs[0], nil, &x, decl, iota)
+-
+-			x.mode = value
+-			x.typ = Typ[UntypedBool]
+-			check.assign1to1(lhs[1], nil, &x, decl, iota)
+-			return
+-		}
+-	}
+-
+-	check.errorf(lhs[0].Pos(), "assignment count mismatch: %d = %d", len(lhs), len(rhs))
+-
+-	// avoid checking the same declaration over and over
+-	// again for each lhs identifier that has no type yet
+-	if iota >= 0 {
+-		// declaration
+-		for _, e := range lhs {
+-			if name, ok := e.(*ast.Ident); ok {
+-				switch obj := check.lookup(name).(type) {
+-				case *Const:
+-					obj.Type = Typ[Invalid]
+-				case *Var:
+-					obj.Type = Typ[Invalid]
+-				default:
+-					unreachable()
+-				}
+-			}
+-		}
+-	}
+-}
+-
+-func (check *checker) optionalStmt(s ast.Stmt) {
+-	if s != nil {
+-		check.stmt(s)
+-	}
+-}
+-
+-func (check *checker) stmtList(list []ast.Stmt) {
+-	for _, s := range list {
+-		check.stmt(s)
+-	}
+-}
+-
+-func (check *checker) call(call *ast.CallExpr) {
+-	var x operand
+-	check.rawExpr(&x, call, nil, -1, false) // don't check if value is used
+-	// TODO(gri) If a builtin is called, the builtin must be valid in statement context.
+-}
+-
+-func (check *checker) multipleDefaults(list []ast.Stmt) {
+-	var first ast.Stmt
+-	for _, s := range list {
+-		var d ast.Stmt
+-		switch c := s.(type) {
+-		case *ast.CaseClause:
+-			if len(c.List) == 0 {
+-				d = s
+-			}
+-		case *ast.CommClause:
+-			if c.Comm == nil {
+-				d = s
+-			}
+-		default:
+-			check.invalidAST(s.Pos(), "case/communication clause expected")
+-		}
+-		if d != nil {
+-			if first != nil {
+-				check.errorf(d.Pos(), "multiple defaults (first at %s)", first.Pos())
+-			} else {
+-				first = d
+-			}
+-		}
+-	}
+-}
+-
+-// stmt typechecks statement s.
+-func (check *checker) stmt(s ast.Stmt) {
+-	switch s := s.(type) {
+-	case *ast.BadStmt, *ast.EmptyStmt:
+-		// ignore
+-
+-	case *ast.DeclStmt:
+-		d, _ := s.Decl.(*ast.GenDecl)
+-		if d == nil || (d.Tok != token.CONST && d.Tok != token.TYPE && d.Tok != token.VAR) {
+-			check.invalidAST(token.NoPos, "const, type, or var declaration expected")
+-			return
+-		}
+-		if d.Tok == token.CONST {
+-			check.assocInitvals(d)
+-		}
+-		check.decl(d)
+-
+-	case *ast.LabeledStmt:
+-		// TODO(gri) anything to do with label itself?
+-		check.stmt(s.Stmt)
+-
+-	case *ast.ExprStmt:
+-		var x operand
+-		used := false
+-		switch e := unparen(s.X).(type) {
+-		case *ast.CallExpr:
+-			// function calls are permitted
+-			used = true
+-			// but some builtins are excluded
+-			// (Caution: This evaluates e.Fun twice, once here and once
+-			//           below as part of s.X. This has consequences for
+-			//           check.register. Perhaps this can be avoided.)
+-			check.expr(&x, e.Fun, nil, -1)
+-			if x.mode != invalid {
+-				if b, ok := x.typ.(*builtin); ok && !b.isStatement {
+-					used = false
+-				}
+-			}
+-		case *ast.UnaryExpr:
+-			// receive operations are permitted
+-			if e.Op == token.ARROW {
+-				used = true
+-			}
+-		}
+-		if !used {
+-			check.errorf(s.Pos(), "%s not used", s.X)
+-			// ok to continue
+-		}
+-		check.rawExpr(&x, s.X, nil, -1, false)
+-		if x.mode == typexpr {
+-			check.errorf(x.pos(), "%s is not an expression", &x)
+-		}
+-
+-	case *ast.SendStmt:
+-		var ch, x operand
+-		check.expr(&ch, s.Chan, nil, -1)
+-		check.expr(&x, s.Value, nil, -1)
+-		if ch.mode == invalid || x.mode == invalid {
+-			return
+-		}
+-		if tch, ok := underlying(ch.typ).(*Chan); !ok || tch.Dir&ast.SEND == 0 || !x.isAssignable(tch.Elt) {
+-			check.invalidOp(ch.pos(), "cannot send %s to channel %s", &x, &ch)
+-		}
+-
+-	case *ast.IncDecStmt:
+-		var op token.Token
+-		switch s.Tok {
+-		case token.INC:
+-			op = token.ADD
+-		case token.DEC:
+-			op = token.SUB
+-		default:
+-			check.invalidAST(s.TokPos, "unknown inc/dec operation %s", s.Tok)
+-			return
+-		}
+-		var x, y operand
+-		check.expr(&x, s.X, nil, -1)
+-		check.expr(&y, &ast.BasicLit{ValuePos: x.pos(), Kind: token.INT, Value: "1"}, nil, -1) // use x's position
+-		check.binary(&x, &y, op, nil)
+-		check.assign1to1(s.X, nil, &x, false, -1)
+-
+-	case *ast.AssignStmt:
+-		switch s.Tok {
+-		case token.ASSIGN, token.DEFINE:
+-			if len(s.Lhs) == 0 {
+-				check.invalidAST(s.Pos(), "missing lhs in assignment")
+-				return
+-			}
+-			check.assignNtoM(s.Lhs, s.Rhs, s.Tok == token.DEFINE, -1)
+-		default:
+-			// assignment operations
+-			if len(s.Lhs) != 1 || len(s.Rhs) != 1 {
+-				check.errorf(s.TokPos, "assignment operation %s requires single-valued expressions", s.Tok)
+-				return
+-			}
+-			// TODO(gri) make this conversion more efficient
+-			var op token.Token
+-			switch s.Tok {
+-			case token.ADD_ASSIGN:
+-				op = token.ADD
+-			case token.SUB_ASSIGN:
+-				op = token.SUB
+-			case token.MUL_ASSIGN:
+-				op = token.MUL
+-			case token.QUO_ASSIGN:
+-				op = token.QUO
+-			case token.REM_ASSIGN:
+-				op = token.REM
+-			case token.AND_ASSIGN:
+-				op = token.AND
+-			case token.OR_ASSIGN:
+-				op = token.OR
+-			case token.XOR_ASSIGN:
+-				op = token.XOR
+-			case token.SHL_ASSIGN:
+-				op = token.SHL
+-			case token.SHR_ASSIGN:
+-				op = token.SHR
+-			case token.AND_NOT_ASSIGN:
+-				op = token.AND_NOT
+-			default:
+-				check.invalidAST(s.TokPos, "unknown assignment operation %s", s.Tok)
+-				return
+-			}
+-			var x, y operand
+-			check.expr(&x, s.Lhs[0], nil, -1)
+-			if x.mode == invalid {
+-				return
+-			}
+-			check.expr(&y, s.Rhs[0], nil, -1)
+-			if y.mode == invalid {
+-				return
+-			}
+-			check.binary(&x, &y, op, x.typ)
+-			check.assign1to1(s.Lhs[0], nil, &x, false, -1)
+-		}
+-
+-	case *ast.GoStmt:
+-		check.call(s.Call)
+-
+-	case *ast.DeferStmt:
+-		check.call(s.Call)
+-
+-	case *ast.ReturnStmt:
+-		sig := check.funcsig
+-		if n := len(sig.Results); n > 0 {
+-			// TODO(gri) should not have to compute lhs, named every single time - clean this up
+-			lhs := make([]ast.Expr, n)
+-			named := false // if set, function has named results
+-			for i, res := range sig.Results {
+-				if len(res.Name) > 0 {
+-					// a blank (_) result parameter is a named result
+-					named = true
+-				}
+-				name := ast.NewIdent(res.Name)
+-				name.NamePos = s.Pos()
+-				check.register(name, &Var{Name: res.Name, Type: res.Type})
+-				lhs[i] = name
+-			}
+-			if len(s.Results) > 0 || !named {
+-				// TODO(gri) assignNtoM should perhaps not require len(lhs) > 0
+-				check.assignNtoM(lhs, s.Results, false, -1)
+-			}
+-		} else if len(s.Results) > 0 {
+-			check.errorf(s.Pos(), "no result values expected")
+-		}
+-
+-	case *ast.BranchStmt:
+-		// TODO(gri) implement this
+-
+-	case *ast.BlockStmt:
+-		check.stmtList(s.List)
+-
+-	case *ast.IfStmt:
+-		check.optionalStmt(s.Init)
+-		var x operand
+-		check.expr(&x, s.Cond, nil, -1)
+-		if !isBoolean(x.typ) {
+-			check.errorf(s.Cond.Pos(), "non-boolean condition in if statement")
+-		}
+-		check.stmt(s.Body)
+-		check.optionalStmt(s.Else)
+-
+-	case *ast.SwitchStmt:
+-		check.optionalStmt(s.Init)
+-		var x operand
+-		tag := s.Tag
+-		if tag == nil {
+-			// use fake true tag value and position it at the opening { of the switch
+-			ident := &ast.Ident{NamePos: s.Body.Lbrace, Name: "true"}
+-			check.register(ident, Universe.Lookup("true"))
+-			tag = ident
+-		}
+-		check.expr(&x, tag, nil, -1)
+-
+-		check.multipleDefaults(s.Body.List)
+-		seen := make(map[interface{}]token.Pos)
+-		for _, s := range s.Body.List {
+-			clause, _ := s.(*ast.CaseClause)
+-			if clause == nil {
+-				continue // error reported before
+-			}
+-			if x.mode != invalid {
+-				for _, expr := range clause.List {
+-					x := x // copy of x (don't modify original)
+-					var y operand
+-					check.expr(&y, expr, nil, -1)
+-					if y.mode == invalid {
+-						continue // error reported before
+-					}
+-					// If we have a constant case value, it must appear only
+-					// once in the switch statement. Determine if there is a
+-					// duplicate entry, but only report an error if there are
+-					// no other errors.
+-					var dupl token.Pos
+-					var yy operand
+-					if y.mode == constant {
+-						// TODO(gri) This code doesn't work correctly for
+-						//           large integer, floating point, or
+-						//           complex values - the respective struct
+-						//           comparisons are shallow. Need to use a
+-						//           hash function to index the map.
+-						dupl = seen[y.val]
+-						seen[y.val] = y.pos()
+-						yy = y // remember y
+-					}
+-					// TODO(gri) The convertUntyped call pair below appears in other places. Factor!
+-					// Order matters: By comparing y against x, error positions are at the case values.
+-					check.convertUntyped(&y, x.typ)
+-					if y.mode == invalid {
+-						continue // error reported before
+-					}
+-					check.convertUntyped(&x, y.typ)
+-					if x.mode == invalid {
+-						continue // error reported before
+-					}
+-					check.comparison(&y, &x, token.EQL)
+-					if y.mode != invalid && dupl.IsValid() {
+-						check.errorf(yy.pos(), "%s is duplicate case (previous at %s)",
+-							&yy, check.fset.Position(dupl))
+-					}
+-				}
+-			}
+-			check.stmtList(clause.Body)
+-		}
+-
+-	case *ast.TypeSwitchStmt:
+-		check.optionalStmt(s.Init)
+-
+-		// A type switch guard must be of the form:
+-		//
+-		//     TypeSwitchGuard = [ identifier ":=" ] PrimaryExpr "." "(" "type" ")" .
+-		//
+-		// The parser is checking syntactic correctness;
+-		// remaining syntactic errors are considered AST errors here.
+-		// TODO(gri) better factoring of error handling (invalid ASTs)
+-		//
+-		var lhs *Var // lhs variable or nil
+-		var rhs ast.Expr
+-		switch guard := s.Assign.(type) {
+-		case *ast.ExprStmt:
+-			rhs = guard.X
+-		case *ast.AssignStmt:
+-			if len(guard.Lhs) != 1 || guard.Tok != token.DEFINE || len(guard.Rhs) != 1 {
+-				check.invalidAST(s.Pos(), "incorrect form of type switch guard")
+-				return
+-			}
+-			ident, _ := guard.Lhs[0].(*ast.Ident)
+-			if ident == nil {
+-				check.invalidAST(s.Pos(), "incorrect form of type switch guard")
+-				return
+-			}
+-			lhs = check.lookup(ident).(*Var)
+-			rhs = guard.Rhs[0]
+-		default:
+-			check.invalidAST(s.Pos(), "incorrect form of type switch guard")
+-			return
+-		}
+-
+-		// rhs must be of the form: expr.(type) and expr must be an interface
+-		expr, _ := rhs.(*ast.TypeAssertExpr)
+-		if expr == nil || expr.Type != nil {
+-			check.invalidAST(s.Pos(), "incorrect form of type switch guard")
+-			return
+-		}
+-		var x operand
+-		check.expr(&x, expr.X, nil, -1)
+-		if x.mode == invalid {
+-			return
+-		}
+-		var T *Interface
+-		if T, _ = underlying(x.typ).(*Interface); T == nil {
+-			check.errorf(x.pos(), "%s is not an interface", &x)
+-			return
+-		}
+-
+-		check.multipleDefaults(s.Body.List)
+-		for _, s := range s.Body.List {
+-			clause, _ := s.(*ast.CaseClause)
+-			if clause == nil {
+-				continue // error reported before
+-			}
+-			// Check each type in this type switch case.
+-			var typ Type
+-			for _, expr := range clause.List {
+-				typ = check.typOrNil(expr, false)
+-				if typ != nil && typ != Typ[Invalid] {
+-					if method, wrongType := missingMethod(typ, T); method != nil {
+-						var msg string
+-						if wrongType {
+-							msg = "%s cannot have dynamic type %s (wrong type for method %s)"
+-						} else {
+-							msg = "%s cannot have dynamic type %s (missing method %s)"
+-						}
+-						check.errorf(expr.Pos(), msg, &x, typ, method.Name)
+-						// ok to continue
+-					}
+-				}
+-			}
+-			// If lhs exists, set its type for each clause.
+-			if lhs != nil {
+-				// In clauses with a case listing exactly one type, the variable has that type;
+-				// otherwise, the variable has the type of the expression in the TypeSwitchGuard.
+-				if len(clause.List) != 1 || typ == nil {
+-					typ = x.typ
+-				}
+-				lhs.Type = typ
+-			}
+-			check.stmtList(clause.Body)
+-		}
+-
+-		// There is only one object (lhs) associated with a lhs identifier, but that object
+-		// assumes different types for different clauses. Set it back to the type of the
+-		// TypeSwitchGuard expression so that that variable always has a valid type.
+-		if lhs != nil {
+-			lhs.Type = x.typ
+-		}
+-
+-	case *ast.SelectStmt:
+-		check.multipleDefaults(s.Body.List)
+-		for _, s := range s.Body.List {
+-			clause, _ := s.(*ast.CommClause)
+-			if clause == nil {
+-				continue // error reported before
+-			}
+-			check.optionalStmt(clause.Comm) // TODO(gri) check correctness of c.Comm (must be Send/RecvStmt)
+-			check.stmtList(clause.Body)
+-		}
+-
+-	case *ast.ForStmt:
+-		check.optionalStmt(s.Init)
+-		if s.Cond != nil {
+-			var x operand
+-			check.expr(&x, s.Cond, nil, -1)
+-			if !isBoolean(x.typ) {
+-				check.errorf(s.Cond.Pos(), "non-boolean condition in for statement")
+-			}
+-		}
+-		check.optionalStmt(s.Post)
+-		check.stmt(s.Body)
+-
+-	case *ast.RangeStmt:
+-		// check expression to iterate over
+-		decl := s.Tok == token.DEFINE
+-		var x operand
+-		check.expr(&x, s.X, nil, -1)
+-		if x.mode == invalid {
+-			// if we don't have a declaration, we can still check the loop's body
+-			if !decl {
+-				check.stmt(s.Body)
+-			}
+-			return
+-		}
+-
+-		// determine key/value types
+-		var key, val Type
+-		switch typ := underlying(x.typ).(type) {
+-		case *Basic:
+-			if isString(typ) {
+-				key = Typ[UntypedInt]
+-				val = Typ[UntypedRune]
+-			}
+-		case *Array:
+-			key = Typ[UntypedInt]
+-			val = typ.Elt
+-		case *Slice:
+-			key = Typ[UntypedInt]
+-			val = typ.Elt
+-		case *Pointer:
+-			if typ, _ := underlying(typ.Base).(*Array); typ != nil {
+-				key = Typ[UntypedInt]
+-				val = typ.Elt
+-			}
+-		case *Map:
+-			key = typ.Key
+-			val = typ.Elt
+-		case *Chan:
+-			key = typ.Elt
+-			if typ.Dir&ast.RECV == 0 {
+-				check.errorf(x.pos(), "cannot range over send-only channel %s", &x)
+-				// ok to continue
+-			}
+-			if s.Value != nil {
+-				check.errorf(s.Value.Pos(), "iteration over %s permits only one iteration variable", &x)
+-				// ok to continue
+-			}
+-		}
+-
+-		if key == nil {
+-			check.errorf(x.pos(), "cannot range over %s", &x)
+-			// if we don't have a declaration, we can still check the loop's body
+-			if !decl {
+-				check.stmt(s.Body)
+-			}
+-			return
+-		}
+-
+-		// check assignment to/declaration of iteration variables
+-		// TODO(gri) The error messages/positions are not great here,
+-		//           they refer to the expression in the range clause.
+-		//           Should give better messages w/o too much code
+-		//           duplication (assignment checking).
+-		x.mode = value
+-		if s.Key != nil {
+-			x.typ = key
+-			check.assign1to1(s.Key, nil, &x, decl, -1)
+-		} else {
+-			check.invalidAST(s.Pos(), "range clause requires index iteration variable")
+-			// ok to continue
+-		}
+-		if s.Value != nil {
+-			x.typ = val
+-			check.assign1to1(s.Value, nil, &x, decl, -1)
+-		}
+-
+-		check.stmt(s.Body)
+-
+-	default:
+-		check.errorf(s.Pos(), "invalid statement")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/testdata/exports.go gcc-4.8.1/libgo/go/go/types/testdata/exports.go
+--- gcc-4.8.1.orig/libgo/go/go/types/testdata/exports.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/testdata/exports.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,89 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file is used to generate an object file which
+-// serves as test file for gcimporter_test.go.
+-
+-package exports
+-
+-import (
+-	"go/ast"
+-)
+-
+-// Issue 3682: Correctly read dotted identifiers from export data.
+-const init1 = 0
+-
+-func init() {}
+-
+-const (
+-	C0 int = 0
+-	C1     = 3.14159265
+-	C2     = 2.718281828i
+-	C3     = -123.456e-789
+-	C4     = +123.456E+789
+-	C5     = 1234i
+-	C6     = "foo\n"
+-	C7     = `bar\n`
+-)
+-
+-type (
+-	T1  int
+-	T2  [10]int
+-	T3  []int
+-	T4  *int
+-	T5  chan int
+-	T6a chan<- int
+-	T6b chan (<-chan int)
+-	T6c chan<- (chan int)
+-	T7  <-chan *ast.File
+-	T8  struct{}
+-	T9  struct {
+-		a    int
+-		b, c float32
+-		d    []string `go:"tag"`
+-	}
+-	T10 struct {
+-		T8
+-		T9
+-		_ *T10
+-	}
+-	T11 map[int]string
+-	T12 interface{}
+-	T13 interface {
+-		m1()
+-		m2(int) float32
+-	}
+-	T14 interface {
+-		T12
+-		T13
+-		m3(x ...struct{}) []T9
+-	}
+-	T15 func()
+-	T16 func(int)
+-	T17 func(x int)
+-	T18 func() float32
+-	T19 func() (x float32)
+-	T20 func(...interface{})
+-	T21 struct{ next *T21 }
+-	T22 struct{ link *T23 }
+-	T23 struct{ link *T22 }
+-	T24 *T24
+-	T25 *T26
+-	T26 *T27
+-	T27 *T25
+-	T28 func(T28) T28
+-)
+-
+-var (
+-	V0 int
+-	V1 = -991.0
+-)
+-
+-func F1()         {}
+-func F2(x int)    {}
+-func F3() int     { return 0 }
+-func F4() float32 { return 0 }
+-func F5(a, b, c int, u, v, w struct{ x, y T1 }, more ...interface{}) (p, q, r chan<- T10)
+-
+-func (p *T1) M1()
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/types.go gcc-4.8.1/libgo/go/go/types/types.go
+--- gcc-4.8.1.orig/libgo/go/go/types/types.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/types.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,232 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package types
+-
+-import "go/ast"
+-
+-// All types implement the Type interface.
+-type Type interface {
+-	String() string
+-	aType()
+-}
+-
+-// BasicKind describes the kind of basic type.
+-type BasicKind int
+-
+-const (
+-	Invalid BasicKind = iota // type is invalid
+-
+-	// predeclared types
+-	Bool
+-	Int
+-	Int8
+-	Int16
+-	Int32
+-	Int64
+-	Uint
+-	Uint8
+-	Uint16
+-	Uint32
+-	Uint64
+-	Uintptr
+-	Float32
+-	Float64
+-	Complex64
+-	Complex128
+-	String
+-	UnsafePointer
+-
+-	// types for untyped values
+-	UntypedBool
+-	UntypedInt
+-	UntypedRune
+-	UntypedFloat
+-	UntypedComplex
+-	UntypedString
+-	UntypedNil
+-
+-	// aliases
+-	Byte = Uint8
+-	Rune = Int32
+-)
+-
+-// BasicInfo is a set of flags describing properties of a basic type.
+-type BasicInfo int
+-
+-// Properties of basic types.
+-const (
+-	IsBoolean BasicInfo = 1 << iota
+-	IsInteger
+-	IsUnsigned
+-	IsFloat
+-	IsComplex
+-	IsString
+-	IsUntyped
+-
+-	IsOrdered   = IsInteger | IsFloat | IsString
+-	IsNumeric   = IsInteger | IsFloat | IsComplex
+-	IsConstType = IsBoolean | IsNumeric | IsString
+-)
+-
+-// A Basic represents a basic type.
+-type Basic struct {
+-	Kind BasicKind
+-	Info BasicInfo
+-	Size int64
+-	Name string
+-}
+-
+-// An Array represents an array type [Len]Elt.
+-type Array struct {
+-	Len int64
+-	Elt Type
+-}
+-
+-// A Slice represents a slice type []Elt.
+-type Slice struct {
+-	Elt Type
+-}
+-
+-// A QualifiedName is a name qualified with the package that declared the name.
+-type QualifiedName struct {
+-	Pkg  *Package // nil only for predeclared error.Error
+-	Name string   // unqualified type name for anonymous fields
+-}
+-
+-// IsSame reports whether p and q are the same.
+-func (p QualifiedName) IsSame(q QualifiedName) bool {
+-	// spec:
+-	// "Two identifiers are different if they are spelled differently,
+-	// or if they appear in different packages and are not exported.
+-	// Otherwise, they are the same."
+-	if p.Name != q.Name {
+-		return false
+-	}
+-	// p.Name == q.Name
+-	return ast.IsExported(p.Name) || p.Pkg == q.Pkg
+-}
+-
+-// A Field represents a field of a struct.
+-type Field struct {
+-	QualifiedName
+-	Type        Type
+-	Tag         string
+-	IsAnonymous bool
+-}
+-
+-// A Struct represents a struct type struct{...}.
+-type Struct struct {
+-	Fields []*Field
+-}
+-
+-func (typ *Struct) fieldIndex(name string) int {
+-	for i, f := range typ.Fields {
+-		if f.Name == name {
+-			return i
+-		}
+-	}
+-	return -1
+-}
+-
+-// A Pointer represents a pointer type *Base.
+-type Pointer struct {
+-	Base Type
+-}
+-
+-// A Result represents a (multi-value) function call result.
+-type Result struct {
+-	Values []*Var // Signature.Results of the function called
+-}
+-
+-// A Signature represents a user-defined function type func(...) (...).
+-type Signature struct {
+-	Recv       *Var   // nil if not a method
+-	Params     []*Var // (incoming) parameters from left to right; or nil
+-	Results    []*Var // (outgoing) results from left to right; or nil
+-	IsVariadic bool   // true if the last parameter's type is of the form ...T
+-}
+-
+-// builtinId is an id of a builtin function.
+-type builtinId int
+-
+-// Predeclared builtin functions.
+-const (
+-	// Universe scope
+-	_Append builtinId = iota
+-	_Cap
+-	_Close
+-	_Complex
+-	_Copy
+-	_Delete
+-	_Imag
+-	_Len
+-	_Make
+-	_New
+-	_Panic
+-	_Print
+-	_Println
+-	_Real
+-	_Recover
+-
+-	// Unsafe package
+-	_Alignof
+-	_Offsetof
+-	_Sizeof
+-
+-	// Testing support
+-	_Assert
+-	_Trace
+-)
+-
+-// A builtin represents the type of a built-in function.
+-type builtin struct {
+-	id          builtinId
+-	name        string
+-	nargs       int // number of arguments (minimum if variadic)
+-	isVariadic  bool
+-	isStatement bool // true if the built-in is valid as an expression statement
+-}
+-
+-// A Method represents a method.
+-type Method struct {
+-	QualifiedName
+-	Type *Signature
+-}
+-
+-// An Interface represents an interface type interface{...}.
+-type Interface struct {
+-	Methods []*Method // TODO(gri) consider keeping them in sorted order
+-}
+-
+-// A Map represents a map type map[Key]Elt.
+-type Map struct {
+-	Key, Elt Type
+-}
+-
+-// A Chan represents a channel type chan Elt, <-chan Elt, or chan<-Elt.
+-type Chan struct {
+-	Dir ast.ChanDir
+-	Elt Type
+-}
+-
+-// A NamedType represents a named type as declared in a type declaration.
+-type NamedType struct {
+-	Obj        *TypeName // corresponding declared object
+-	Underlying Type      // nil if not fully declared yet; never a *NamedType
+-	Methods    []*Method // TODO(gri) consider keeping them in sorted order
+-}
+-
+-func (*Basic) aType()     {}
+-func (*Array) aType()     {}
+-func (*Slice) aType()     {}
+-func (*Struct) aType()    {}
+-func (*Pointer) aType()   {}
+-func (*Result) aType()    {}
+-func (*Signature) aType() {}
+-func (*builtin) aType()   {}
+-func (*Interface) aType() {}
+-func (*Map) aType()       {}
+-func (*Chan) aType()      {}
+-func (*NamedType) aType() {}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/types_test.go gcc-4.8.1/libgo/go/go/types/types_test.go
+--- gcc-4.8.1.orig/libgo/go/go/types/types_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/types_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,171 +0,0 @@
+-// Copyright 2012 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file contains tests verifying the types associated with an AST after
+-// type checking.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"go/parser"
+-	"testing"
+-)
+-
+-const filename = "<src>"
+-
+-func makePkg(t *testing.T, src string) (*Package, error) {
+-	file, err := parser.ParseFile(fset, filename, src, parser.DeclarationErrors)
+-	if err != nil {
+-		return nil, err
+-	}
+-	pkg, err := Check(fset, []*ast.File{file})
+-	return pkg, err
+-}
+-
+-type testEntry struct {
+-	src, str string
+-}
+-
+-// dup returns a testEntry where both src and str are the same.
+-func dup(s string) testEntry {
+-	return testEntry{s, s}
+-}
+-
+-var testTypes = []testEntry{
+-	// basic types
+-	dup("int"),
+-	dup("float32"),
+-	dup("string"),
+-
+-	// arrays
+-	dup("[10]int"),
+-
+-	// slices
+-	dup("[]int"),
+-	dup("[][]int"),
+-
+-	// structs
+-	dup("struct{}"),
+-	dup("struct{x int}"),
+-	{`struct {
+-		x, y int
+-		z float32 "foo"
+-	}`, `struct{x int; y int; z float32 "foo"}`},
+-	{`struct {
+-		string
+-		elems []T
+-	}`, `struct{string; elems []T}`},
+-
+-	// pointers
+-	dup("*int"),
+-	dup("***struct{}"),
+-	dup("*struct{a int; b float32}"),
+-
+-	// functions
+-	dup("func()"),
+-	dup("func(x int)"),
+-	{"func(x, y int)", "func(x int, y int)"},
+-	{"func(x, y int, z string)", "func(x int, y int, z string)"},
+-	dup("func(int)"),
+-	{"func(int, string, byte)", "func(int, string, byte)"},
+-
+-	dup("func() int"),
+-	{"func() (string)", "func() string"},
+-	dup("func() (u int)"),
+-	{"func() (u, v int, w string)", "func() (u int, v int, w string)"},
+-
+-	dup("func(int) string"),
+-	dup("func(x int) string"),
+-	dup("func(x int) (u string)"),
+-	{"func(x, y int) (u string)", "func(x int, y int) (u string)"},
+-
+-	dup("func(...int) string"),
+-	dup("func(x ...int) string"),
+-	dup("func(x ...int) (u string)"),
+-	{"func(x, y ...int) (u string)", "func(x int, y ...int) (u string)"},
+-
+-	// interfaces
+-	dup("interface{}"),
+-	dup("interface{m()}"),
+-	dup(`interface{m(int) float32; String() string}`),
+-	// TODO(gri) add test for interface w/ anonymous field
+-
+-	// maps
+-	dup("map[string]int"),
+-	{"map[struct{x, y int}][]byte", "map[struct{x int; y int}][]byte"},
+-
+-	// channels
+-	dup("chan int"),
+-	dup("chan<- func()"),
+-	dup("<-chan []func() int"),
+-}
+-
+-func TestTypes(t *testing.T) {
+-	for _, test := range testTypes {
+-		src := "package p; type T " + test.src
+-		pkg, err := makePkg(t, src)
+-		if err != nil {
+-			t.Errorf("%s: %s", src, err)
+-			continue
+-		}
+-		typ := underlying(pkg.Scope.Lookup("T").GetType())
+-		str := typeString(typ)
+-		if str != test.str {
+-			t.Errorf("%s: got %s, want %s", test.src, str, test.str)
+-		}
+-	}
+-}
+-
+-var testExprs = []testEntry{
+-	// basic type literals
+-	dup("x"),
+-	dup("true"),
+-	dup("42"),
+-	dup("3.1415"),
+-	dup("2.71828i"),
+-	dup(`'a'`),
+-	dup(`"foo"`),
+-	dup("`bar`"),
+-
+-	// arbitrary expressions
+-	dup("&x"),
+-	dup("*&x"),
+-	dup("(x)"),
+-	dup("x + y"),
+-	dup("x + y * 10"),
+-	dup("t.foo"),
+-	dup("s[0]"),
+-	dup("s[x:y]"),
+-	dup("s[:y]"),
+-	dup("s[x:]"),
+-	dup("s[:]"),
+-	dup("f(1, 2.3)"),
+-	dup("-f(10, 20)"),
+-	dup("f(x + y, +3.1415)"),
+-	{"func(a, b int) {}", "(func literal)"},
+-	{"func(a, b int) []int {}(1, 2)[x]", "(func literal)(1, 2)[x]"},
+-	{"[]int{1, 2, 3}", "(composite literal)"},
+-	{"[]int{1, 2, 3}[x:]", "(composite literal)[x:]"},
+-	{"i.([]string)", "i.(...)"},
+-}
+-
+-func TestExprs(t *testing.T) {
+-	for _, test := range testExprs {
+-		src := "package p; var _ = " + test.src + "; var (x, y int; s []string; f func(int, float32) int; i interface{}; t interface { foo() })"
+-		file, err := parser.ParseFile(fset, filename, src, parser.DeclarationErrors)
+-		if err != nil {
+-			t.Errorf("%s: %s", src, err)
+-			continue
+-		}
+-		// TODO(gri) writing the code below w/o the decl variable will
+-		//           cause a 386 compiler error (out of fixed registers)
+-		decl := file.Decls[0].(*ast.GenDecl)
+-		expr := decl.Specs[0].(*ast.ValueSpec).Values[0]
+-		str := exprString(expr)
+-		if str != test.str {
+-			t.Errorf("%s: got %s, want %s", test.src, str, test.str)
+-		}
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/go/types/universe.go gcc-4.8.1/libgo/go/go/types/universe.go
+--- gcc-4.8.1.orig/libgo/go/go/types/universe.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/go/types/universe.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,137 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// This file implements the universe and unsafe package scopes.
+-
+-package types
+-
+-import (
+-	"go/ast"
+-	"strings"
+-)
+-
+-var (
+-	Universe     *Scope
+-	Unsafe       *Package
+-	universeIota *Const
+-)
+-
+-// Predeclared types, indexed by BasicKind.
+-var Typ = [...]*Basic{
+-	Invalid: {Invalid, 0, 0, "invalid type"},
+-
+-	Bool:          {Bool, IsBoolean, 1, "bool"},
+-	Int:           {Int, IsInteger, 0, "int"},
+-	Int8:          {Int8, IsInteger, 1, "int8"},
+-	Int16:         {Int16, IsInteger, 2, "int16"},
+-	Int32:         {Int32, IsInteger, 4, "int32"},
+-	Int64:         {Int64, IsInteger, 8, "int64"},
+-	Uint:          {Uint, IsInteger | IsUnsigned, 0, "uint"},
+-	Uint8:         {Uint8, IsInteger | IsUnsigned, 1, "uint8"},
+-	Uint16:        {Uint16, IsInteger | IsUnsigned, 2, "uint16"},
+-	Uint32:        {Uint32, IsInteger | IsUnsigned, 4, "uint32"},
+-	Uint64:        {Uint64, IsInteger | IsUnsigned, 8, "uint64"},
+-	Uintptr:       {Uintptr, IsInteger | IsUnsigned, 0, "uintptr"},
+-	Float32:       {Float32, IsFloat, 4, "float32"},
+-	Float64:       {Float64, IsFloat, 8, "float64"},
+-	Complex64:     {Complex64, IsComplex, 8, "complex64"},
+-	Complex128:    {Complex128, IsComplex, 16, "complex128"},
+-	String:        {String, IsString, 0, "string"},
+-	UnsafePointer: {UnsafePointer, 0, 0, "Pointer"},
+-
+-	UntypedBool:    {UntypedBool, IsBoolean | IsUntyped, 0, "untyped boolean"},
+-	UntypedInt:     {UntypedInt, IsInteger | IsUntyped, 0, "untyped integer"},
+-	UntypedRune:    {UntypedRune, IsInteger | IsUntyped, 0, "untyped rune"},
+-	UntypedFloat:   {UntypedFloat, IsFloat | IsUntyped, 0, "untyped float"},
+-	UntypedComplex: {UntypedComplex, IsComplex | IsUntyped, 0, "untyped complex"},
+-	UntypedString:  {UntypedString, IsString | IsUntyped, 0, "untyped string"},
+-	UntypedNil:     {UntypedNil, IsUntyped, 0, "untyped nil"},
+-}
+-
+-var aliases = [...]*Basic{
+-	{Byte, IsInteger | IsUnsigned, 1, "byte"},
+-	{Rune, IsInteger, 4, "rune"},
+-}
+-
+-var predeclaredConstants = [...]*Const{
+-	{"true", Typ[UntypedBool], true, nil},
+-	{"false", Typ[UntypedBool], false, nil},
+-	{"iota", Typ[UntypedInt], zeroConst, nil},
+-	{"nil", Typ[UntypedNil], nilConst, nil},
+-}
+-
+-var predeclaredFunctions = [...]*builtin{
+-	{_Append, "append", 1, true, false},
+-	{_Cap, "cap", 1, false, false},
+-	{_Close, "close", 1, false, true},
+-	{_Complex, "complex", 2, false, false},
+-	{_Copy, "copy", 2, false, true},
+-	{_Delete, "delete", 2, false, true},
+-	{_Imag, "imag", 1, false, false},
+-	{_Len, "len", 1, false, false},
+-	{_Make, "make", 1, true, false},
+-	{_New, "new", 1, false, false},
+-	{_Panic, "panic", 1, false, true},
+-	{_Print, "print", 1, true, true},
+-	{_Println, "println", 1, true, true},
+-	{_Real, "real", 1, false, false},
+-	{_Recover, "recover", 0, false, true},
+-
+-	{_Alignof, "Alignof", 1, false, false},
+-	{_Offsetof, "Offsetof", 1, false, false},
+-	{_Sizeof, "Sizeof", 1, false, false},
+-}
+-
+-func init() {
+-	Universe = new(Scope)
+-	Unsafe = &Package{Name: "unsafe", Scope: new(Scope)}
+-
+-	// predeclared types
+-	for _, t := range Typ {
+-		def(&TypeName{Name: t.Name, Type: t})
+-	}
+-	for _, t := range aliases {
+-		def(&TypeName{Name: t.Name, Type: t})
+-	}
+-
+-	// error type
+-	{
+-		// Error has a nil package in its qualified name since it is in no package
+-		err := &Method{QualifiedName{nil, "Error"}, &Signature{Results: []*Var{{Name: "", Type: Typ[String]}}}}
+-		def(&TypeName{Name: "error", Type: &NamedType{Underlying: &Interface{Methods: []*Method{err}}}})
+-	}
+-
+-	for _, c := range predeclaredConstants {
+-		def(c)
+-	}
+-
+-	for _, f := range predeclaredFunctions {
+-		def(&Func{Name: f.name, Type: f})
+-	}
+-
+-	universeIota = Universe.Lookup("iota").(*Const)
+-}
+-
+-// Objects with names containing blanks are internal and not entered into
+-// a scope. Objects with exported names are inserted in the unsafe package
+-// scope; other objects are inserted in the universe scope.
+-//
+-func def(obj Object) {
+-	name := obj.GetName()
+-	if strings.Index(name, " ") >= 0 {
+-		return // nothing to do
+-	}
+-	// fix Obj link for named types
+-	if typ, ok := obj.GetType().(*NamedType); ok {
+-		typ.Obj = obj.(*TypeName)
+-	}
+-	// exported identifiers go into package unsafe
+-	scope := Universe
+-	if ast.IsExported(name) {
+-		scope = Unsafe.Scope
+-	}
+-	if scope.Insert(obj) != nil {
+-		panic("internal error: double declaration")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/html/template/doc.go gcc-4.8.1/libgo/go/html/template/doc.go
+--- gcc-4.8.1.orig/libgo/go/html/template/doc.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/html/template/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -119,7 +119,7 @@
+ Non-string values can be used in JavaScript contexts.
+ If {{.}} is
+ 
+-  []struct{A,B string}{ "foo", "bar" }
++  struct{A,B string}{ "foo", "bar" }
+ 
+ in the escaped template
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/html/template/template.go gcc-4.8.1/libgo/go/html/template/template.go
+--- gcc-4.8.1.orig/libgo/go/html/template/template.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/html/template/template.go	2013-07-16 01:55:04.520470000 -0500
+@@ -45,18 +45,24 @@
+ 	return m
+ }
+ 
+-// Execute applies a parsed template to the specified data object,
+-// writing the output to wr.
+-func (t *Template) Execute(wr io.Writer, data interface{}) (err error) {
++// escape escapes all associated templates.
++func (t *Template) escape() error {
+ 	t.nameSpace.mu.Lock()
++	defer t.nameSpace.mu.Unlock()
+ 	if !t.escaped {
+-		if err = escapeTemplates(t, t.Name()); err != nil {
+-			t.escaped = true
++		if err := escapeTemplates(t, t.Name()); err != nil {
++			return err
+ 		}
++		t.escaped = true
+ 	}
+-	t.nameSpace.mu.Unlock()
+-	if err != nil {
+-		return
++	return nil
++}
++
++// Execute applies a parsed template to the specified data object,
++// writing the output to wr.
++func (t *Template) Execute(wr io.Writer, data interface{}) error {
++	if err := t.escape(); err != nil {
++		return err
+ 	}
+ 	return t.text.Execute(wr, data)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/html/template/transition.go gcc-4.8.1/libgo/go/html/template/transition.go
+--- gcc-4.8.1.orig/libgo/go/html/template/transition.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/html/template/transition.go	2013-07-16 01:55:04.520470000 -0500
+@@ -71,7 +71,6 @@
+ 		}
+ 		k = j
+ 	}
+-	panic("unreachable")
+ }
+ 
+ var elementContentType = [...]state{
+@@ -430,7 +429,6 @@
+ 		}
+ 		k = i + 1
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // tCSSStr is the context transition function for the CSS string and URL states.
+@@ -471,7 +469,6 @@
+ 		c, _ = tURL(c, decodeCSS(s[:i+1]))
+ 		k = i + 1
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // tError is the context transition function for the error state.
+diff -Naur gcc-4.8.1.orig/libgo/go/image/gif/reader.go gcc-4.8.1/libgo/go/image/gif/reader.go
+--- gcc-4.8.1.orig/libgo/go/image/gif/reader.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/gif/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -17,6 +17,11 @@
+ 	"io"
+ )
+ 
++var (
++	errNotEnough = errors.New("gif: not enough image data")
++	errTooMuch   = errors.New("gif: too much image data")
++)
++
+ // If the io.Reader does not also have ReadByte, then decode will introduce its own buffering.
+ type reader interface {
+ 	io.Reader
+@@ -89,29 +94,35 @@
+ // comprises (n, (n bytes)) blocks, with 1 <= n <= 255.  It is the
+ // reader given to the LZW decoder, which is thus immune to the
+ // blocking.  After the LZW decoder completes, there will be a 0-byte
+-// block remaining (0, ()), but under normal execution blockReader
+-// doesn't consume it, so it is handled in decode.
++// block remaining (0, ()), which is consumed when checking that the
++// blockReader is exhausted.
+ type blockReader struct {
+ 	r     reader
+ 	slice []byte
++	err   error
+ 	tmp   [256]byte
+ }
+ 
+ func (b *blockReader) Read(p []byte) (int, error) {
++	if b.err != nil {
++		return 0, b.err
++	}
+ 	if len(p) == 0 {
+ 		return 0, nil
+ 	}
+ 	if len(b.slice) == 0 {
+-		blockLen, err := b.r.ReadByte()
+-		if err != nil {
+-			return 0, err
++		var blockLen uint8
++		blockLen, b.err = b.r.ReadByte()
++		if b.err != nil {
++			return 0, b.err
+ 		}
+ 		if blockLen == 0 {
+-			return 0, io.EOF
++			b.err = io.EOF
++			return 0, b.err
+ 		}
+ 		b.slice = b.tmp[0:blockLen]
+-		if _, err = io.ReadFull(b.r, b.slice); err != nil {
+-			return 0, err
++		if _, b.err = io.ReadFull(b.r, b.slice); b.err != nil {
++			return 0, b.err
+ 		}
+ 	}
+ 	n := copy(p, b.slice)
+@@ -142,35 +153,33 @@
+ 		}
+ 	}
+ 
+-Loop:
+-	for err == nil {
+-		var c byte
+-		c, err = d.r.ReadByte()
+-		if err == io.EOF {
+-			break
++	for {
++		c, err := d.r.ReadByte()
++		if err != nil {
++			return err
+ 		}
+ 		switch c {
+ 		case sExtension:
+-			err = d.readExtension()
++			if err = d.readExtension(); err != nil {
++				return err
++			}
+ 
+ 		case sImageDescriptor:
+-			var m *image.Paletted
+-			m, err = d.newImageFromDescriptor()
++			m, err := d.newImageFromDescriptor()
+ 			if err != nil {
+-				break
++				return err
+ 			}
+ 			if d.imageFields&fColorMapFollows != 0 {
+ 				m.Palette, err = d.readColorMap()
+ 				if err != nil {
+-					break
++					return err
+ 				}
+ 				// TODO: do we set transparency in this map too? That would be
+ 				// d.setTransparency(m.Palette)
+ 			} else {
+ 				m.Palette = d.globalColorMap
+ 			}
+-			var litWidth uint8
+-			litWidth, err = d.r.ReadByte()
++			litWidth, err := d.r.ReadByte()
+ 			if err != nil {
+ 				return err
+ 			}
+@@ -178,18 +187,27 @@
+ 				return fmt.Errorf("gif: pixel size in decode out of range: %d", litWidth)
+ 			}
+ 			// A wonderfully Go-like piece of magic.
+-			lzwr := lzw.NewReader(&blockReader{r: d.r}, lzw.LSB, int(litWidth))
++			br := &blockReader{r: d.r}
++			lzwr := lzw.NewReader(br, lzw.LSB, int(litWidth))
+ 			if _, err = io.ReadFull(lzwr, m.Pix); err != nil {
+-				break
++				if err != io.ErrUnexpectedEOF {
++					return err
++				}
++				return errNotEnough
+ 			}
+-
+-			// There should be a "0" block remaining; drain that.
+-			c, err = d.r.ReadByte()
+-			if err != nil {
+-				return err
++			// Both lzwr and br should be exhausted. Reading from them
++			// should yield (0, io.EOF).
++			if n, err := lzwr.Read(d.tmp[:1]); n != 0 || err != io.EOF {
++				if err != nil {
++					return err
++				}
++				return errTooMuch
+ 			}
+-			if c != 0 {
+-				return errors.New("gif: extra data after image")
++			if n, err := br.Read(d.tmp[:1]); n != 0 || err != io.EOF {
++				if err != nil {
++					return err
++				}
++				return errTooMuch
+ 			}
+ 
+ 			// Undo the interlacing if necessary.
+@@ -202,19 +220,15 @@
+ 			d.delayTime = 0 // TODO: is this correct, or should we hold on to the value?
+ 
+ 		case sTrailer:
+-			break Loop
++			if len(d.image) == 0 {
++				return io.ErrUnexpectedEOF
++			}
++			return nil
+ 
+ 		default:
+-			err = fmt.Errorf("gif: unknown block type: 0x%.2x", c)
++			return fmt.Errorf("gif: unknown block type: 0x%.2x", c)
+ 		}
+ 	}
+-	if err != nil {
+-		return err
+-	}
+-	if len(d.image) == 0 {
+-		return io.ErrUnexpectedEOF
+-	}
+-	return nil
+ }
+ 
+ func (d *decoder) readHeaderAndScreenDescriptor() error {
+@@ -304,7 +318,6 @@
+ 			return err
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func (d *decoder) readGraphicControl() error {
+@@ -335,7 +348,15 @@
+ 	width := int(d.tmp[4]) + int(d.tmp[5])<<8
+ 	height := int(d.tmp[6]) + int(d.tmp[7])<<8
+ 	d.imageFields = d.tmp[8]
+-	return image.NewPaletted(image.Rect(left, top, left+width, top+height), nil), nil
++
++	// The GIF89a spec, Section 20 (Image Descriptor) says:
++	// "Each image must fit within the boundaries of the Logical
++	// Screen, as defined in the Logical Screen Descriptor."
++	bounds := image.Rect(left, top, left+width, top+height)
++	if bounds != bounds.Intersect(image.Rect(0, 0, d.width, d.height)) {
++		return nil, errors.New("gif: frame bounds larger than image bounds")
++	}
++	return image.NewPaletted(bounds, nil), nil
+ }
+ 
+ func (d *decoder) readBlock() (int, error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/image/gif/reader_test.go gcc-4.8.1/libgo/go/image/gif/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/image/gif/reader_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/gif/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,138 @@
++package gif
++
++import (
++	"bytes"
++	"compress/lzw"
++	"image"
++	"image/color"
++	"reflect"
++	"testing"
++)
++
++func TestDecode(t *testing.T) {
++	// header and trailer are parts of a valid 2x1 GIF image.
++	const (
++		header = "GIF89a" +
++			"\x02\x00\x01\x00" + // width=2, height=1
++			"\x80\x00\x00" + // headerFields=(a color map of 2 pixels), backgroundIndex, aspect
++			"\x10\x20\x30\x40\x50\x60" // the color map, also known as a palette
++		trailer = "\x3b"
++	)
++
++	// lzwEncode returns an LZW encoding (with 2-bit literals) of n zeroes.
++	lzwEncode := func(n int) []byte {
++		b := &bytes.Buffer{}
++		w := lzw.NewWriter(b, lzw.LSB, 2)
++		w.Write(make([]byte, n))
++		w.Close()
++		return b.Bytes()
++	}
++
++	testCases := []struct {
++		nPix    int  // The number of pixels in the image data.
++		extra   bool // Whether to write an extra block after the LZW-encoded data.
++		wantErr error
++	}{
++		{0, false, errNotEnough},
++		{1, false, errNotEnough},
++		{2, false, nil},
++		{2, true, errTooMuch},
++		{3, false, errTooMuch},
++	}
++	for _, tc := range testCases {
++		b := &bytes.Buffer{}
++		b.WriteString(header)
++		// Write an image with bounds 2x1 but tc.nPix pixels. If tc.nPix != 2
++		// then this should result in an invalid GIF image. First, write a
++		// magic 0x2c (image descriptor) byte, bounds=(0,0)-(2,1), a flags
++		// byte, and 2-bit LZW literals.
++		b.WriteString("\x2c\x00\x00\x00\x00\x02\x00\x01\x00\x00\x02")
++		if tc.nPix > 0 {
++			enc := lzwEncode(tc.nPix)
++			if len(enc) > 0xff {
++				t.Errorf("nPix=%d, extra=%t: compressed length %d is too large", tc.nPix, tc.extra, len(enc))
++				continue
++			}
++			b.WriteByte(byte(len(enc)))
++			b.Write(enc)
++		}
++		if tc.extra {
++			b.WriteString("\x01\x02") // A 1-byte payload with an 0x02 byte.
++		}
++		b.WriteByte(0x00) // An empty block signifies the end of the image data.
++		b.WriteString(trailer)
++
++		got, err := Decode(b)
++		if err != tc.wantErr {
++			t.Errorf("nPix=%d, extra=%t\ngot  %v\nwant %v", tc.nPix, tc.extra, err, tc.wantErr)
++		}
++
++		if tc.wantErr != nil {
++			continue
++		}
++		want := &image.Paletted{
++			Pix:    []uint8{0, 0},
++			Stride: 2,
++			Rect:   image.Rect(0, 0, 2, 1),
++			Palette: color.Palette{
++				color.RGBA{0x10, 0x20, 0x30, 0xff},
++				color.RGBA{0x40, 0x50, 0x60, 0xff},
++			},
++		}
++		if !reflect.DeepEqual(got, want) {
++			t.Errorf("nPix=%d, extra=%t\ngot  %v\nwant %v", tc.nPix, tc.extra, got, want)
++		}
++	}
++}
++
++// testGIF is a simple GIF that we can modify to test different scenarios.
++var testGIF = []byte{
++	'G', 'I', 'F', '8', '9', 'a',
++	1, 0, 1, 0, // w=1, h=1 (6)
++	128, 0, 0, // headerFields, bg, aspect (10)
++	0, 0, 0, 1, 1, 1, // color map and graphics control (13)
++	0x21, 0xf9, 0x04, 0x00, 0x00, 0x00, 0xff, 0x00, // (19)
++	// frame 1 (0,0 - 1,1)
++	0x2c,
++	0x00, 0x00, 0x00, 0x00,
++	0x01, 0x00, 0x01, 0x00, // (32)
++	0x00,
++	0x02, 0x02, 0x4c, 0x01, 0x00, // lzw pixels
++	// trailer
++	0x3b,
++}
++
++func try(t *testing.T, b []byte, want string) {
++	_, err := DecodeAll(bytes.NewReader(b))
++	var got string
++	if err != nil {
++		got = err.Error()
++	}
++	if got != want {
++		t.Fatalf("got %v, want %v", got, want)
++	}
++}
++
++func TestBounds(t *testing.T) {
++	// make a local copy of testGIF
++	gif := make([]byte, len(testGIF))
++	copy(gif, testGIF)
++	// Make the bounds too big, just by one.
++	gif[32] = 2
++	want := "gif: frame bounds larger than image bounds"
++	try(t, gif, want)
++
++	// Make the bounds too small; does not trigger bounds
++	// check, but now there's too much data.
++	gif[32] = 0
++	want = "gif: too much image data"
++	try(t, gif, want)
++	gif[32] = 1
++
++	// Make the bounds really big, expect an error.
++	want = "gif: frame bounds larger than image bounds"
++	for i := 0; i < 4; i++ {
++		gif[32+i] = 0xff
++	}
++	try(t, gif, want)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/image/jpeg/reader.go gcc-4.8.1/libgo/go/image/jpeg/reader.go
+--- gcc-4.8.1.orig/libgo/go/image/jpeg/reader.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/jpeg/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -245,10 +245,38 @@
+ 		if err != nil {
+ 			return nil, err
+ 		}
+-		if d.tmp[0] != 0xff {
+-			return nil, FormatError("missing 0xff marker start")
++		for d.tmp[0] != 0xff {
++			// Strictly speaking, this is a format error. However, libjpeg is
++			// liberal in what it accepts. As of version 9, next_marker in
++			// jdmarker.c treats this as a warning (JWRN_EXTRANEOUS_DATA) and
++			// continues to decode the stream. Even before next_marker sees
++			// extraneous data, jpeg_fill_bit_buffer in jdhuff.c reads as many
++			// bytes as it can, possibly past the end of a scan's data. It
++			// effectively puts back any markers that it overscanned (e.g. an
++			// "\xff\xd9" EOI marker), but it does not put back non-marker data,
++			// and thus it can silently ignore a small number of extraneous
++			// non-marker bytes before next_marker has a chance to see them (and
++			// print a warning).
++			//
++			// We are therefore also liberal in what we accept. Extraneous data
++			// is silently ignored.
++			//
++			// This is similar to, but not exactly the same as, the restart
++			// mechanism within a scan (the RST[0-7] markers).
++			//
++			// Note that extraneous 0xff bytes in e.g. SOS data are escaped as
++			// "\xff\x00", and so are detected a little further down below.
++			d.tmp[0] = d.tmp[1]
++			d.tmp[1], err = d.r.ReadByte()
++			if err != nil {
++				return nil, err
++			}
+ 		}
+ 		marker := d.tmp[1]
++		if marker == 0 {
++			// Treat "\xff\x00" as extraneous data.
++			continue
++		}
+ 		for marker == 0xff {
+ 			// Section B.1.1.2 says, "Any marker may optionally be preceded by any
+ 			// number of fill bytes, which are bytes assigned code X'FF'".
+diff -Naur gcc-4.8.1.orig/libgo/go/image/jpeg/reader_test.go gcc-4.8.1/libgo/go/image/jpeg/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/image/jpeg/reader_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/jpeg/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,8 +8,11 @@
+ 	"bytes"
+ 	"fmt"
+ 	"image"
++	"image/color"
+ 	"io/ioutil"
++	"math/rand"
+ 	"os"
++	"strings"
+ 	"testing"
+ )
+ 
+@@ -131,6 +134,66 @@
+ 	return s.String()
+ }
+ 
++func TestExtraneousData(t *testing.T) {
++	// Encode a 1x1 red image.
++	src := image.NewRGBA(image.Rect(0, 0, 1, 1))
++	src.Set(0, 0, color.RGBA{0xff, 0x00, 0x00, 0xff})
++	buf := new(bytes.Buffer)
++	if err := Encode(buf, src, nil); err != nil {
++		t.Fatalf("encode: %v", err)
++	}
++	enc := buf.String()
++	// Sanity check that the encoded JPEG is long enough, that it ends in a
++	// "\xff\xd9" EOI marker, and that it contains a "\xff\xda" SOS marker
++	// somewhere in the final 64 bytes.
++	if len(enc) < 64 {
++		t.Fatalf("encoded JPEG is too short: %d bytes", len(enc))
++	}
++	if got, want := enc[len(enc)-2:], "\xff\xd9"; got != want {
++		t.Fatalf("encoded JPEG ends with %q, want %q", got, want)
++	}
++	if s := enc[len(enc)-64:]; !strings.Contains(s, "\xff\xda") {
++		t.Fatalf("encoded JPEG does not contain a SOS marker (ff da) near the end: % x", s)
++	}
++	// Test that adding some random junk between the SOS marker and the
++	// EOI marker does not affect the decoding.
++	rnd := rand.New(rand.NewSource(1))
++	for i, nerr := 0, 0; i < 1000 && nerr < 10; i++ {
++		buf.Reset()
++		// Write all but the trailing "\xff\xd9" EOI marker.
++		buf.WriteString(enc[:len(enc)-2])
++		// Write some random extraneous data.
++		for n := rnd.Intn(10); n > 0; n-- {
++			if x := byte(rnd.Intn(256)); x != 0xff {
++				buf.WriteByte(x)
++			} else {
++				// The JPEG format escapes a SOS 0xff data byte as "\xff\x00".
++				buf.WriteString("\xff\x00")
++			}
++		}
++		// Write the "\xff\xd9" EOI marker.
++		buf.WriteString("\xff\xd9")
++
++		// Check that we can still decode the resultant image.
++		got, err := Decode(buf)
++		if err != nil {
++			t.Errorf("could not decode image #%d: %v", i, err)
++			nerr++
++			continue
++		}
++		if got.Bounds() != src.Bounds() {
++			t.Errorf("image #%d, bounds differ: %v and %v", i, got.Bounds(), src.Bounds())
++			nerr++
++			continue
++		}
++		if averageDelta(got, src) > 2<<8 {
++			t.Errorf("image #%d changed too much after a round trip", i)
++			nerr++
++			continue
++		}
++	}
++}
++
+ func benchmarkDecode(b *testing.B, filename string) {
+ 	b.StopTimer()
+ 	data, err := ioutil.ReadFile(filename)
+diff -Naur gcc-4.8.1.orig/libgo/go/image/jpeg/scan.go gcc-4.8.1/libgo/go/image/jpeg/scan.go
+--- gcc-4.8.1.orig/libgo/go/image/jpeg/scan.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/jpeg/scan.go	2013-07-16 01:55:04.520470000 -0500
+@@ -109,9 +109,11 @@
+ 	myy := (d.height + 8*v0 - 1) / (8 * v0)
+ 	if d.img1 == nil && d.img3 == nil {
+ 		d.makeImg(h0, v0, mxx, myy)
+-		if d.progressive {
+-			for i := 0; i < nComp; i++ {
+-				compIndex := scan[i].compIndex
++	}
++	if d.progressive {
++		for i := 0; i < nComp; i++ {
++			compIndex := scan[i].compIndex
++			if d.progCoeffs[compIndex] == nil {
+ 				d.progCoeffs[compIndex] = make([]block, mxx*myy*d.comp[compIndex].h*d.comp[compIndex].v)
+ 			}
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/image/jpeg/writer_test.go gcc-4.8.1/libgo/go/image/jpeg/writer_test.go
+--- gcc-4.8.1.orig/libgo/go/image/jpeg/writer_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/jpeg/writer_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -148,29 +148,38 @@
+ 			t.Error(tc.filename, err)
+ 			continue
+ 		}
+-		// Compute the average delta in RGB space.
+-		b := m0.Bounds()
+-		var sum, n int64
+-		for y := b.Min.Y; y < b.Max.Y; y++ {
+-			for x := b.Min.X; x < b.Max.X; x++ {
+-				c0 := m0.At(x, y)
+-				c1 := m1.At(x, y)
+-				r0, g0, b0, _ := c0.RGBA()
+-				r1, g1, b1, _ := c1.RGBA()
+-				sum += delta(r0, r1)
+-				sum += delta(g0, g1)
+-				sum += delta(b0, b1)
+-				n += 3
+-			}
++		if m0.Bounds() != m1.Bounds() {
++			t.Errorf("%s, bounds differ: %v and %v", tc.filename, m0.Bounds(), m1.Bounds())
++			continue
+ 		}
+ 		// Compare the average delta to the tolerance level.
+-		if sum/n > tc.tolerance {
++		if averageDelta(m0, m1) > tc.tolerance {
+ 			t.Errorf("%s, quality=%d: average delta is too high", tc.filename, tc.quality)
+ 			continue
+ 		}
+ 	}
+ }
+ 
++// averageDelta returns the average delta in RGB space. The two images must
++// have the same bounds.
++func averageDelta(m0, m1 image.Image) int64 {
++	b := m0.Bounds()
++	var sum, n int64
++	for y := b.Min.Y; y < b.Max.Y; y++ {
++		for x := b.Min.X; x < b.Max.X; x++ {
++			c0 := m0.At(x, y)
++			c1 := m1.At(x, y)
++			r0, g0, b0, _ := c0.RGBA()
++			r1, g1, b1, _ := c1.RGBA()
++			sum += delta(r0, r1)
++			sum += delta(g0, g1)
++			sum += delta(b0, b1)
++			n += 3
++		}
++	}
++	return sum / n
++}
++
+ func BenchmarkEncode(b *testing.B) {
+ 	b.StopTimer()
+ 	img := image.NewRGBA(image.Rect(0, 0, 640, 480))
+diff -Naur gcc-4.8.1.orig/libgo/go/image/png/reader.go gcc-4.8.1/libgo/go/image/png/reader.go
+--- gcc-4.8.1.orig/libgo/go/image/png/reader.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/image/png/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -652,10 +652,11 @@
+ 			}
+ 			return image.Config{}, err
+ 		}
+-		if d.stage == dsSeenIHDR && d.cb != cbP8 {
++		paletted := d.cb == cbP8 || d.cb == cbP4 || d.cb == cbP2 || d.cb == cbP1
++		if d.stage == dsSeenIHDR && !paletted {
+ 			break
+ 		}
+-		if d.stage == dsSeenPLTE && d.cb == cbP8 {
++		if d.stage == dsSeenPLTE && paletted {
+ 			break
+ 		}
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/image/png/reader_test.go gcc-4.8.1/libgo/go/image/png/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/image/png/reader_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/image/png/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -38,6 +38,14 @@
+ 	"basn6a16",
+ }
+ 
++var filenamesPaletted = []string{
++	"basn3p01",
++	"basn3p02",
++	"basn3p04",
++	"basn3p08",
++	"basn3p08-trns",
++}
++
+ var filenamesShort = []string{
+ 	"basn0g01",
+ 	"basn0g04-31",
+@@ -208,7 +216,7 @@
+ 		}
+ 
+ 		piper, pipew := io.Pipe()
+-		pb := bufio.NewReader(piper)
++		pb := bufio.NewScanner(piper)
+ 		go sng(pipew, fn, img)
+ 		defer piper.Close()
+ 
+@@ -219,7 +227,7 @@
+ 			continue
+ 		}
+ 		defer sf.Close()
+-		sb := bufio.NewReader(sf)
++		sb := bufio.NewScanner(sf)
+ 		if err != nil {
+ 			t.Error(fn, err)
+ 			continue
+@@ -227,24 +235,28 @@
+ 
+ 		// Compare the two, in SNG format, line by line.
+ 		for {
+-			ps, perr := pb.ReadString('\n')
+-			ss, serr := sb.ReadString('\n')
+-			if perr == io.EOF && serr == io.EOF {
++			pdone := pb.Scan()
++			sdone := sb.Scan()
++			if pdone && sdone {
+ 				break
+ 			}
+-			if perr != nil {
+-				t.Error(fn, perr)
+-				break
+-			}
+-			if serr != nil {
+-				t.Error(fn, serr)
++			if pdone || sdone {
++				t.Errorf("%s: Different sizes", fn)
+ 				break
+ 			}
++			ps := pb.Text()
++			ss := sb.Text()
+ 			if ps != ss {
+ 				t.Errorf("%s: Mismatch\n%sversus\n%s\n", fn, ps, ss)
+ 				break
+ 			}
+ 		}
++		if pb.Err() != nil {
++			t.Error(fn, pb.Err())
++		}
++		if sb.Err() != nil {
++			t.Error(fn, sb.Err())
++		}
+ 	}
+ }
+ 
+@@ -273,6 +285,31 @@
+ 		}
+ 	}
+ }
++
++func TestPalettedDecodeConfig(t *testing.T) {
++	for _, fn := range filenamesPaletted {
++		f, err := os.Open("testdata/pngsuite/" + fn + ".png")
++		if err != nil {
++			t.Errorf("%s: open failed: %v", fn, err)
++			continue
++		}
++		defer f.Close()
++		cfg, err := DecodeConfig(f)
++		if err != nil {
++			t.Errorf("%s: %v", fn, err)
++			continue
++		}
++		pal, ok := cfg.ColorModel.(color.Palette)
++		if !ok {
++			t.Errorf("%s: expected paletted color model", fn)
++			continue
++		}
++		if pal == nil {
++			t.Errorf("%s: palette not initialized", fn)
++			continue
++		}
++	}
++}
+ 
+ func benchmarkDecode(b *testing.B, filename string, bytesPerPixel int) {
+ 	b.StopTimer()
+diff -Naur gcc-4.8.1.orig/libgo/go/image/png/writer.go gcc-4.8.1/libgo/go/image/png/writer.go
+--- gcc-4.8.1.orig/libgo/go/image/png/writer.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/image/png/writer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -436,7 +436,7 @@
+ 	// also rejected.
+ 	mw, mh := int64(m.Bounds().Dx()), int64(m.Bounds().Dy())
+ 	if mw <= 0 || mh <= 0 || mw >= 1<<32 || mh >= 1<<32 {
+-		return FormatError("invalid image size: " + strconv.FormatInt(mw, 10) + "x" + strconv.FormatInt(mw, 10))
++		return FormatError("invalid image size: " + strconv.FormatInt(mw, 10) + "x" + strconv.FormatInt(mh, 10))
+ 	}
+ 
+ 	var e encoder
+diff -Naur gcc-4.8.1.orig/libgo/go/io/io.go gcc-4.8.1/libgo/go/io/io.go
+--- gcc-4.8.1.orig/libgo/go/io/io.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/io/io.go	2013-07-16 01:55:04.520470000 -0500
+@@ -34,6 +34,11 @@
+ // middle of reading a fixed-size block or data structure.
+ var ErrUnexpectedEOF = errors.New("unexpected EOF")
+ 
++// ErrNoProgress is returned by some clients of an io.Reader when
++// many calls to Read have failed to return any data or error,
++// usually the sign of a broken io.Reader implementation.
++var ErrNoProgress = errors.New("multiple Read calls return no data or error")
++
+ // Reader is the interface that wraps the basic Read method.
+ //
+ // Read reads up to len(p) bytes into p.  It returns the number of bytes
+@@ -55,6 +60,10 @@
+ // considering the error err.  Doing so correctly handles I/O errors
+ // that happen after reading some bytes and also both of the
+ // allowed EOF behaviors.
++//
++// Implementations of Read are discouraged from returning a
++// zero byte count with a nil error, and callers should treat
++// that situation as a no-op.
+ type Reader interface {
+ 	Read(p []byte) (n int, err error)
+ }
+@@ -70,6 +79,9 @@
+ }
+ 
+ // Closer is the interface that wraps the basic Close method.
++//
++// The behavior of Close after the first call is undefined.
++// Specific implementations may document their own behavior.
+ type Closer interface {
+ 	Close() error
+ }
+@@ -262,6 +274,7 @@
+ // If an EOF happens after reading fewer than min bytes,
+ // ReadAtLeast returns ErrUnexpectedEOF.
+ // If min is greater than the length of buf, ReadAtLeast returns ErrShortBuffer.
++// On return, n >= min if and only if err == nil.
+ func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error) {
+ 	if len(buf) < min {
+ 		return 0, ErrShortBuffer
+@@ -271,12 +284,10 @@
+ 		nn, err = r.Read(buf[n:])
+ 		n += nn
+ 	}
+-	if err == EOF {
+-		if n >= min {
+-			err = nil
+-		} else if n > 0 {
+-			err = ErrUnexpectedEOF
+-		}
++	if n >= min {
++		err = nil
++	} else if n > 0 && err == EOF {
++		err = ErrUnexpectedEOF
+ 	}
+ 	return
+ }
+@@ -286,56 +297,28 @@
+ // The error is EOF only if no bytes were read.
+ // If an EOF happens after reading some but not all the bytes,
+ // ReadFull returns ErrUnexpectedEOF.
++// On return, n == len(buf) if and only if err == nil.
+ func ReadFull(r Reader, buf []byte) (n int, err error) {
+ 	return ReadAtLeast(r, buf, len(buf))
+ }
+ 
+ // CopyN copies n bytes (or until an error) from src to dst.
+ // It returns the number of bytes copied and the earliest
+-// error encountered while copying.  Because Read can
+-// return the full amount requested as well as an error
+-// (including EOF), so can CopyN.
++// error encountered while copying.
++// On return, written == n if and only if err == nil.
+ //
+ // If dst implements the ReaderFrom interface,
+ // the copy is implemented using it.
+ func CopyN(dst Writer, src Reader, n int64) (written int64, err error) {
+-	// If the writer has a ReadFrom method, use it to do the copy.
+-	// Avoids a buffer allocation and a copy.
+-	if rt, ok := dst.(ReaderFrom); ok {
+-		written, err = rt.ReadFrom(LimitReader(src, n))
+-		if written < n && err == nil {
+-			// rt stopped early; must have been EOF.
+-			err = EOF
+-		}
+-		return
++	written, err = Copy(dst, LimitReader(src, n))
++	if written == n {
++		return n, nil
+ 	}
+-	buf := make([]byte, 32*1024)
+-	for written < n {
+-		l := len(buf)
+-		if d := n - written; d < int64(l) {
+-			l = int(d)
+-		}
+-		nr, er := src.Read(buf[0:l])
+-		if nr > 0 {
+-			nw, ew := dst.Write(buf[0:nr])
+-			if nw > 0 {
+-				written += int64(nw)
+-			}
+-			if ew != nil {
+-				err = ew
+-				break
+-			}
+-			if nr != nw {
+-				err = ErrShortWrite
+-				break
+-			}
+-		}
+-		if er != nil {
+-			err = er
+-			break
+-		}
++	if written < n && err == nil {
++		// src stopped early; must have been EOF.
++		err = EOF
+ 	}
+-	return written, err
++	return
+ }
+ 
+ // Copy copies from src to dst until either EOF is reached
+diff -Naur gcc-4.8.1.orig/libgo/go/io/io_test.go gcc-4.8.1/libgo/go/io/io_test.go
+--- gcc-4.8.1.orig/libgo/go/io/io_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/io/io_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,6 +6,8 @@
+ 
+ import (
+ 	"bytes"
++	"errors"
++	"fmt"
+ 	. "io"
+ 	"strings"
+ 	"testing"
+@@ -88,6 +90,12 @@
+ 	return w.w.Write(p)
+ }
+ 
++type wantedAndErrReader struct{}
++
++func (wantedAndErrReader) Read(p []byte) (int, error) {
++	return len(p), errors.New("wantedAndErrReader error")
++}
++
+ func TestCopyNEOF(t *testing.T) {
+ 	// Test that EOF behavior is the same regardless of whether
+ 	// argument to CopyN has ReadFrom.
+@@ -113,6 +121,16 @@
+ 	if n != 3 || err != EOF {
+ 		t.Errorf("CopyN(bytes.Buffer, foo, 4) = %d, %v; want 3, EOF", n, err)
+ 	}
++
++	n, err = CopyN(b, wantedAndErrReader{}, 5)
++	if n != 5 || err != nil {
++		t.Errorf("CopyN(bytes.Buffer, wantedAndErrReader, 5) = %d, %v; want 5, nil", n, err)
++	}
++
++	n, err = CopyN(&noReadFrom{b}, wantedAndErrReader{}, 5)
++	if n != 5 || err != nil {
++		t.Errorf("CopyN(noReadFrom, wantedAndErrReader, 5) = %d, %v; want 5, nil", n, err)
++	}
+ }
+ 
+ func TestReadAtLeast(t *testing.T) {
+@@ -120,22 +138,30 @@
+ 	testReadAtLeast(t, &rb)
+ }
+ 
+-// A version of bytes.Buffer that returns n > 0, EOF on Read
++// A version of bytes.Buffer that returns n > 0, err on Read
+ // when the input is exhausted.
+-type dataAndEOFBuffer struct {
++type dataAndErrorBuffer struct {
++	err error
+ 	bytes.Buffer
+ }
+ 
+-func (r *dataAndEOFBuffer) Read(p []byte) (n int, err error) {
++func (r *dataAndErrorBuffer) Read(p []byte) (n int, err error) {
+ 	n, err = r.Buffer.Read(p)
+ 	if n > 0 && r.Buffer.Len() == 0 && err == nil {
+-		err = EOF
++		err = r.err
+ 	}
+ 	return
+ }
+ 
+ func TestReadAtLeastWithDataAndEOF(t *testing.T) {
+-	var rb dataAndEOFBuffer
++	var rb dataAndErrorBuffer
++	rb.err = EOF
++	testReadAtLeast(t, &rb)
++}
++
++func TestReadAtLeastWithDataAndError(t *testing.T) {
++	var rb dataAndErrorBuffer
++	rb.err = fmt.Errorf("fake error")
+ 	testReadAtLeast(t, &rb)
+ }
+ 
+@@ -169,8 +195,12 @@
+ 	}
+ 	rb.Write([]byte("4"))
+ 	n, err = ReadAtLeast(rb, buf, 2)
+-	if err != ErrUnexpectedEOF {
+-		t.Errorf("expected ErrUnexpectedEOF, got %v", err)
++	want := ErrUnexpectedEOF
++	if rb, ok := rb.(*dataAndErrorBuffer); ok && rb.err != EOF {
++		want = rb.err
++	}
++	if err != want {
++		t.Errorf("expected %v, got %v", want, err)
+ 	}
+ 	if n != 1 {
+ 		t.Errorf("expected to have read 1 bytes, got %v", n)
+diff -Naur gcc-4.8.1.orig/libgo/go/io/ioutil/ioutil.go gcc-4.8.1/libgo/go/io/ioutil/ioutil.go
+--- gcc-4.8.1.orig/libgo/go/io/ioutil/ioutil.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/io/ioutil/ioutil.go	2013-07-16 01:55:04.520470000 -0500
+@@ -144,7 +144,6 @@
+ 			return
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // Discard is an io.Writer on which all Write calls succeed
+diff -Naur gcc-4.8.1.orig/libgo/go/io/ioutil/ioutil_test.go gcc-4.8.1/libgo/go/io/ioutil/ioutil_test.go
+--- gcc-4.8.1.orig/libgo/go/io/ioutil/ioutil_test.go	2012-01-23 17:55:31.000000000 -0600
++++ gcc-4.8.1/libgo/go/io/ioutil/ioutil_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,9 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package ioutil_test
++package ioutil
+ 
+ import (
+-	. "io/ioutil"
+ 	"os"
+ 	"testing"
+ )
+diff -Naur gcc-4.8.1.orig/libgo/go/io/ioutil/tempfile_test.go gcc-4.8.1/libgo/go/io/ioutil/tempfile_test.go
+--- gcc-4.8.1.orig/libgo/go/io/ioutil/tempfile_test.go	2011-03-24 18:46:17.000000000 -0500
++++ gcc-4.8.1/libgo/go/io/ioutil/tempfile_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,9 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package ioutil_test
++package ioutil
+ 
+ import (
+-	. "io/ioutil"
+ 	"os"
+ 	"path/filepath"
+ 	"regexp"
+diff -Naur gcc-4.8.1.orig/libgo/go/log/syslog/syslog.go gcc-4.8.1/libgo/go/log/syslog/syslog.go
+--- gcc-4.8.1.orig/libgo/go/log/syslog/syslog.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/log/syslog/syslog.go	2013-07-23 16:23:47.710479000 -0500
+@@ -6,7 +6,11 @@
+ 
+ // Package syslog provides a simple interface to the system log
+ // service. It can send messages to the syslog daemon using UNIX
+-// domain sockets, UDP, or TCP connections.
++// domain sockets, UDP or TCP.
++//
++// Only one call to Dial is necessary. On write failures,
++// the syslog client will attempt to reconnect to the server
++// and write again.
+ package syslog
+ 
+ import (
+@@ -15,6 +19,8 @@
+ 	"log"
+ 	"net"
+ 	"os"
++	"strings"
++	"sync"
+ 	"time"
+ )
+ 
+@@ -78,11 +84,15 @@
+ 	priority Priority
+ 	tag      string
+ 	hostname string
+-	conn     serverConn
++	network  string
++	raddr    string
++
++	mu   sync.Mutex // guards conn
++	conn serverConn
+ }
+ 
+ type serverConn interface {
+-	writeString(p Priority, hostname, tag, s string) (int, error)
++	writeString(p Priority, hostname, tag, s, nl string) error
+ 	close() error
+ }
+ 
+@@ -101,7 +111,7 @@
+ // address raddr on the network net.  Each write to the returned
+ // writer sends a log message with the given facility, severity and
+ // tag.
+-func Dial(network, raddr string, priority Priority, tag string) (w *Writer, err error) {
++func Dial(network, raddr string, priority Priority, tag string) (*Writer, error) {
+ 	if priority < 0 || priority > LOG_LOCAL7|LOG_DEBUG {
+ 		return nil, errors.New("log/syslog: invalid priority")
+ 	}
+@@ -109,113 +119,165 @@
+ 	if tag == "" {
+ 		tag = os.Args[0]
+ 	}
+-
+ 	hostname, _ := os.Hostname()
+ 
+-	var conn serverConn
+-	if network == "" {
+-		conn, err = unixSyslog()
+-		if hostname == "" {
+-			hostname = "localhost"
+-		}
+-	} else {
+-		var c net.Conn
+-		c, err = net.Dial(network, raddr)
+-		conn = netConn{c}
+-		if hostname == "" {
+-			hostname = c.LocalAddr().String()
+-		}
++	w := &Writer{
++		priority: priority,
++		tag:      tag,
++		hostname: hostname,
++		network:  network,
++		raddr:    raddr,
+ 	}
++
++	w.mu.Lock()
++	defer w.mu.Unlock()
++
++	err := w.connect()
+ 	if err != nil {
+ 		return nil, err
+ 	}
++	return w, err
++}
++
++// connect makes a connection to the syslog server.
++// It must be called with w.mu held.
++func (w *Writer) connect() (err error) {
++	if w.conn != nil {
++		// ignore err from close, it makes sense to continue anyway
++		w.conn.close()
++		w.conn = nil
++	}
+ 
+-	return &Writer{priority: priority, tag: tag, hostname: hostname, conn: conn}, nil
++	if w.network == "" {
++		w.conn, err = unixSyslog()
++		if w.hostname == "" {
++			w.hostname = "localhost"
++		}
++	} else {
++		var c net.Conn
++		c, err = net.Dial(w.network, w.raddr)
++		if err == nil {
++			w.conn = netConn{c}
++			if w.hostname == "" {
++				w.hostname = c.LocalAddr().String()
++			}
++		}
++	}
++	return
+ }
+ 
+ // Write sends a log message to the syslog daemon.
+ func (w *Writer) Write(b []byte) (int, error) {
+-	return w.writeString(w.priority, string(b))
++	return w.writeAndRetry(w.priority, string(b))
+ }
+ 
+-func (w *Writer) Close() error { return w.conn.close() }
++// Close closes a connection to the syslog daemon.
++func (w *Writer) Close() error {
++	w.mu.Lock()
++	defer w.mu.Unlock()
++
++	if w.conn != nil {
++		err := w.conn.close()
++		w.conn = nil
++		return err
++	}
++	return nil
++}
+ 
+ // Emerg logs a message with severity LOG_EMERG, ignoring the severity
+ // passed to New.
+ func (w *Writer) Emerg(m string) (err error) {
+-	_, err = w.writeString(LOG_EMERG, m)
++	_, err = w.writeAndRetry(LOG_EMERG, m)
+ 	return err
+ }
+ 
+ // Alert logs a message with severity LOG_ALERT, ignoring the severity
+ // passed to New.
+ func (w *Writer) Alert(m string) (err error) {
+-	_, err = w.writeString(LOG_ALERT, m)
++	_, err = w.writeAndRetry(LOG_ALERT, m)
+ 	return err
+ }
+ 
+ // Crit logs a message with severity LOG_CRIT, ignoring the severity
+ // passed to New.
+ func (w *Writer) Crit(m string) (err error) {
+-	_, err = w.writeString(LOG_CRIT, m)
++	_, err = w.writeAndRetry(LOG_CRIT, m)
+ 	return err
+ }
+ 
+ // Err logs a message with severity LOG_ERR, ignoring the severity
+ // passed to New.
+ func (w *Writer) Err(m string) (err error) {
+-	_, err = w.writeString(LOG_ERR, m)
++	_, err = w.writeAndRetry(LOG_ERR, m)
+ 	return err
+ }
+ 
+ // Wanring logs a message with severity LOG_WARNING, ignoring the
+ // severity passed to New.
+ func (w *Writer) Warning(m string) (err error) {
+-	_, err = w.writeString(LOG_WARNING, m)
++	_, err = w.writeAndRetry(LOG_WARNING, m)
+ 	return err
+ }
+ 
+ // Notice logs a message with severity LOG_NOTICE, ignoring the
+ // severity passed to New.
+ func (w *Writer) Notice(m string) (err error) {
+-	_, err = w.writeString(LOG_NOTICE, m)
++	_, err = w.writeAndRetry(LOG_NOTICE, m)
+ 	return err
+ }
+ 
+ // Info logs a message with severity LOG_INFO, ignoring the severity
+ // passed to New.
+ func (w *Writer) Info(m string) (err error) {
+-	_, err = w.writeString(LOG_INFO, m)
++	_, err = w.writeAndRetry(LOG_INFO, m)
+ 	return err
+ }
+ 
+ // Debug logs a message with severity LOG_DEBUG, ignoring the severity
+ // passed to New.
+ func (w *Writer) Debug(m string) (err error) {
+-	_, err = w.writeString(LOG_DEBUG, m)
++	_, err = w.writeAndRetry(LOG_DEBUG, m)
+ 	return err
+ }
+ 
+-func (w *Writer) writeString(p Priority, s string) (int, error) {
+-	return w.conn.writeString((w.priority&facilityMask)|(p&severityMask),
+-		w.hostname, w.tag, s)
++func (w *Writer) writeAndRetry(p Priority, s string) (int, error) {
++	pr := (w.priority & facilityMask) | (p & severityMask)
++
++	w.mu.Lock()
++	defer w.mu.Unlock()
++
++	if w.conn != nil {
++		if n, err := w.write(pr, s); err == nil {
++			return n, err
++		}
++	}
++	if err := w.connect(); err != nil {
++		return 0, err
++	}
++	return w.write(pr, s)
+ }
+ 
+-// writeString: generates and writes a syslog formatted string. The
++// write generates and writes a syslog formatted string. The
+ // format is as follows: <PRI>TIMESTAMP HOSTNAME TAG[PID]: MSG
+-func (n netConn) writeString(p Priority, hostname, tag, msg string) (int, error) {
++func (w *Writer) write(p Priority, msg string) (int, error) {
++	// ensure it ends in a \n
+ 	nl := ""
+-	if len(msg) == 0 || msg[len(msg)-1] != '\n' {
++	if !strings.HasSuffix(msg, "\n") {
+ 		nl = "\n"
+ 	}
+-	timestamp := time.Now().Format(time.RFC3339)
+-	if _, err := fmt.Fprintf(n.conn, "<%d>%s %s %s[%d]: %s%s", p, timestamp, hostname,
+-		tag, os.Getpid(), msg, nl); err != nil {
+-		return 0, err
+-	}
++
++	w.conn.writeString(p, w.hostname, w.tag, msg, nl)
+ 	return len(msg), nil
+ }
+ 
++func (n netConn) writeString(p Priority, hostname, tag, msg, nl string) error {
++	timestamp := time.Now().Format(time.RFC3339)
++	_, err := fmt.Fprintf(n.conn, "<%d>%s %s %s[%d]: %s%s",
++		p, timestamp, hostname,
++		tag, os.Getpid(), msg, nl)
++	return err
++}
++
+ func (n netConn) close() error {
+ 	return n.conn.Close()
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/log/syslog/syslog_libc.go gcc-4.8.1/libgo/go/log/syslog/syslog_libc.go
+--- gcc-4.8.1.orig/libgo/go/log/syslog/syslog_libc.go	2012-12-17 15:07:27.000000000 -0600
++++ gcc-4.8.1/libgo/go/log/syslog/syslog_libc.go	2013-07-23 16:23:47.710479000 -0500
+@@ -23,17 +23,17 @@
+ 
+ func syslog_c(int, *byte)
+ 
+-func (libcConn) writeString(p Priority, hostname, tag, msg string) (int, error) {
++func (libcConn) writeString(p Priority, hostname, tag, msg, nl string) error {
+ 	timestamp := time.Now().Format(time.RFC3339)
+-	log := fmt.Sprintf("%s %s %s[%d]: %s", timestamp, hostname, tag, os.Getpid(), msg)
++	log := fmt.Sprintf("%s %s %s[%d]: %s%s", timestamp, hostname, tag, os.Getpid(), msg, nl)
+ 	buf, err := syscall.BytePtrFromString(log)
+ 	if err != nil {
+-		return 0, err
++		return err
+ 	}
+ 	syscall.Entersyscall()
+ 	syslog_c(int(p), buf)
+ 	syscall.Exitsyscall()
+-	return len(msg), nil
++	return nil
+ }
+ 
+ func (libcConn) close() error {
+diff -Naur gcc-4.8.1.orig/libgo/go/log/syslog/syslog_test.go gcc-4.8.1/libgo/go/log/syslog/syslog_test.go
+--- gcc-4.8.1.orig/libgo/go/log/syslog/syslog_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/log/syslog/syslog_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,38 +7,169 @@
+ package syslog
+ 
+ import (
++	"bufio"
+ 	"fmt"
+ 	"io"
++	"io/ioutil"
+ 	"log"
+ 	"net"
+ 	"os"
++	"sync"
+ 	"testing"
+ 	"time"
+ )
+ 
+-var serverAddr string
+-
+-func runSyslog(c net.PacketConn, done chan<- string) {
++func runPktSyslog(c net.PacketConn, done chan<- string) {
+ 	var buf [4096]byte
+ 	var rcvd string
++	ct := 0
+ 	for {
++		var n int
++		var err error
++
+ 		c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-		n, _, err := c.ReadFrom(buf[:])
++		n, _, err = c.ReadFrom(buf[:])
+ 		rcvd += string(buf[:n])
+ 		if err != nil {
++			if oe, ok := err.(*net.OpError); ok {
++				if ct < 3 && oe.Temporary() {
++					ct++
++					continue
++				}
++			}
+ 			break
+ 		}
+ 	}
++	c.Close()
+ 	done <- rcvd
+ }
+ 
+-func startServer(done chan<- string) {
+-	c, e := net.ListenPacket("udp", "127.0.0.1:0")
+-	if e != nil {
+-		log.Fatalf("net.ListenPacket failed udp :0 %v", e)
++var crashy = false
++
++func runStreamSyslog(l net.Listener, done chan<- string, wg *sync.WaitGroup) {
++	for {
++		var c net.Conn
++		var err error
++		if c, err = l.Accept(); err != nil {
++			return
++		}
++		wg.Add(1)
++		go func(c net.Conn) {
++			defer wg.Done()
++			c.SetReadDeadline(time.Now().Add(5 * time.Second))
++			b := bufio.NewReader(c)
++			for ct := 1; !crashy || ct&7 != 0; ct++ {
++				s, err := b.ReadString('\n')
++				if err != nil {
++					break
++				}
++				done <- s
++			}
++			c.Close()
++		}(c)
++	}
++}
++
++func startServer(n, la string, done chan<- string) (addr string, sock io.Closer, wg *sync.WaitGroup) {
++	if n == "udp" || n == "tcp" {
++		la = "127.0.0.1:0"
++	} else {
++		// unix and unixgram: choose an address if none given
++		if la == "" {
++			// use ioutil.TempFile to get a name that is unique
++			f, err := ioutil.TempFile("", "syslogtest")
++			if err != nil {
++				log.Fatal("TempFile: ", err)
++			}
++			f.Close()
++			la = f.Name()
++		}
++		os.Remove(la)
++	}
++
++	wg = new(sync.WaitGroup)
++	if n == "udp" || n == "unixgram" {
++		l, e := net.ListenPacket(n, la)
++		if e != nil {
++			log.Fatalf("startServer failed: %v", e)
++		}
++		addr = l.LocalAddr().String()
++		sock = l
++		wg.Add(1)
++		go func() {
++			defer wg.Done()
++			runPktSyslog(l, done)
++		}()
++	} else {
++		l, e := net.Listen(n, la)
++		if e != nil {
++			log.Fatalf("startServer failed: %v", e)
++		}
++		addr = l.Addr().String()
++		sock = l
++		wg.Add(1)
++		go func() {
++			defer wg.Done()
++			runStreamSyslog(l, done, wg)
++		}()
++	}
++	return
++}
++
++func TestWithSimulated(t *testing.T) {
++	msg := "Test 123"
++	transport := []string{"unix", "unixgram", "udp", "tcp"}
++
++	for _, tr := range transport {
++		done := make(chan string)
++		addr, _, _ := startServer(tr, "", done)
++		if tr == "unix" || tr == "unixgram" {
++			defer os.Remove(addr)
++		}
++		s, err := Dial(tr, addr, LOG_INFO|LOG_USER, "syslog_test")
++		if err != nil {
++			t.Fatalf("Dial() failed: %v", err)
++		}
++		err = s.Info(msg)
++		if err != nil {
++			t.Fatalf("log failed: %v", err)
++		}
++		check(t, msg, <-done)
++		s.Close()
++	}
++}
++
++func TestFlap(t *testing.T) {
++	net := "unix"
++	done := make(chan string)
++	addr, sock, _ := startServer(net, "", done)
++	defer os.Remove(addr)
++	defer sock.Close()
++
++	s, err := Dial(net, addr, LOG_INFO|LOG_USER, "syslog_test")
++	if err != nil {
++		t.Fatalf("Dial() failed: %v", err)
++	}
++	msg := "Moo 2"
++	err = s.Info(msg)
++	if err != nil {
++		t.Fatalf("log failed: %v", err)
++	}
++	check(t, msg, <-done)
++
++	// restart the server
++	_, sock2, _ := startServer(net, addr, done)
++	defer sock2.Close()
++
++	// and try retransmitting
++	msg = "Moo 3"
++	err = s.Info(msg)
++	if err != nil {
++		t.Fatalf("log failed: %v", err)
+ 	}
+-	serverAddr = c.LocalAddr().String()
+-	go runSyslog(c, done)
++	check(t, msg, <-done)
++
++	s.Close()
+ }
+ 
+ func TestNew(t *testing.T) {
+@@ -49,7 +180,8 @@
+ 		// Depends on syslog daemon running, and sometimes it's not.
+ 		t.Skip("skipping syslog test during -short")
+ 	}
+-	s, err := New(LOG_INFO|LOG_USER, "")
++
++	s, err := New(LOG_INFO|LOG_USER, "the_tag")
+ 	if err != nil {
+ 		t.Fatalf("New() failed: %s", err)
+ 	}
+@@ -86,24 +218,15 @@
+ 	l.Close()
+ }
+ 
+-func TestUDPDial(t *testing.T) {
+-	done := make(chan string)
+-	startServer(done)
+-	l, err := Dial("udp", serverAddr, LOG_USER|LOG_INFO, "syslog_test")
+-	if err != nil {
+-		t.Fatalf("syslog.Dial() failed: %s", err)
+-	}
+-	msg := "udp test"
+-	l.Info(msg)
+-	expected := fmt.Sprintf("<%d>", LOG_USER+LOG_INFO) + "%s %s syslog_test[%d]: udp test\n"
+-	rcvd := <-done
+-	var parsedHostname, timestamp string
+-	var pid int
++func check(t *testing.T, in, out string) {
++	tmpl := fmt.Sprintf("<%d>%%s %%s syslog_test[%%d]: %s\n", LOG_USER+LOG_INFO, in)
+ 	if hostname, err := os.Hostname(); err != nil {
+-		t.Fatalf("Error retrieving hostname")
++		t.Error("Error retrieving hostname")
+ 	} else {
+-		if n, err := fmt.Sscanf(rcvd, expected, &timestamp, &parsedHostname, &pid); n != 3 || err != nil || hostname != parsedHostname {
+-			t.Fatalf("'%q', didn't match '%q' (%d, %s)", rcvd, expected, n, err)
++		var parsedHostname, timestamp string
++		var pid int
++		if n, err := fmt.Sscanf(out, tmpl, &timestamp, &parsedHostname, &pid); n != 3 || err != nil || hostname != parsedHostname {
++			t.Errorf("Got %q, does not match template %q (%d %s)", out, tmpl, n, err)
+ 		}
+ 	}
+ }
+@@ -126,24 +249,100 @@
+ 	} else {
+ 		for _, test := range tests {
+ 			done := make(chan string)
+-			startServer(done)
+-			l, err := Dial("udp", serverAddr, test.pri, test.pre)
++			addr, sock, _ := startServer("udp", "", done)
++			defer sock.Close()
++			l, err := Dial("udp", addr, test.pri, test.pre)
+ 			if err != nil {
+-				t.Fatalf("syslog.Dial() failed: %s", err)
++				t.Fatalf("syslog.Dial() failed: %v", err)
+ 			}
+ 			_, err = io.WriteString(l, test.msg)
+ 			if err != nil {
+-				t.Fatalf("WriteString() failed: %s", err)
++				t.Fatalf("WriteString() failed: %v", err)
+ 			}
+ 			rcvd := <-done
+ 			test.exp = fmt.Sprintf("<%d>", test.pri) + test.exp
+ 			var parsedHostname, timestamp string
+ 			var pid int
+-			if n, err := fmt.Sscanf(rcvd, test.exp, &timestamp, &parsedHostname,
+-				&pid); n != 3 || err != nil || hostname != parsedHostname {
+-				t.Fatalf("'%q', didn't match '%q' (%d %s)", rcvd, test.exp,
+-					n, err)
++			if n, err := fmt.Sscanf(rcvd, test.exp, &timestamp, &parsedHostname, &pid); n != 3 || err != nil || hostname != parsedHostname {
++				t.Errorf("s.Info() = '%q', didn't match '%q' (%d %s)", rcvd, test.exp, n, err)
++			}
++		}
++	}
++}
++
++func TestConcurrentWrite(t *testing.T) {
++	addr, sock, _ := startServer("udp", "", make(chan string))
++	defer sock.Close()
++	w, err := Dial("udp", addr, LOG_USER|LOG_ERR, "how's it going?")
++	if err != nil {
++		t.Fatalf("syslog.Dial() failed: %v", err)
++	}
++	var wg sync.WaitGroup
++	for i := 0; i < 10; i++ {
++		wg.Add(1)
++		go func() {
++			err := w.Info("test")
++			if err != nil {
++				t.Errorf("Info() failed: %v", err)
++				return
++			}
++			wg.Done()
++		}()
++	}
++	wg.Wait()
++}
++
++func TestConcurrentReconnect(t *testing.T) {
++	crashy = true
++	defer func() { crashy = false }()
++
++	net := "unix"
++	done := make(chan string)
++	addr, sock, srvWG := startServer(net, "", done)
++	defer os.Remove(addr)
++
++	// count all the messages arriving
++	count := make(chan int)
++	go func() {
++		ct := 0
++		for _ = range done {
++			ct++
++			// we are looking for 500 out of 1000 events
++			// here because lots of log messages are lost
++			// in buffers (kernel and/or bufio)
++			if ct > 500 {
++				break
+ 			}
+ 		}
++		count <- ct
++	}()
++
++	var wg sync.WaitGroup
++	for i := 0; i < 10; i++ {
++		wg.Add(1)
++		go func() {
++			w, err := Dial(net, addr, LOG_USER|LOG_ERR, "tag")
++			if err != nil {
++				t.Fatalf("syslog.Dial() failed: %v", err)
++			}
++			for i := 0; i < 100; i++ {
++				err := w.Info("test")
++				if err != nil {
++					t.Errorf("Info() failed: %v", err)
++					return
++				}
++			}
++			wg.Done()
++		}()
++	}
++	wg.Wait()
++	sock.Close()
++	srvWG.Wait()
++	close(done)
++
++	select {
++	case <-count:
++	case <-time.After(100 * time.Millisecond):
++		t.Error("timeout in concurrent reconnect")
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/log/syslog/syslog_unix.go gcc-4.8.1/libgo/go/log/syslog/syslog_unix.go
+--- gcc-4.8.1.orig/libgo/go/log/syslog/syslog_unix.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/log/syslog/syslog_unix.go	2013-07-23 16:23:47.710479000 -0500
+@@ -17,11 +17,9 @@
+ func unixSyslog() (conn serverConn, err error) {
+ 	logTypes := []string{"unixgram", "unix"}
+ 	logPaths := []string{"/dev/log", "/var/run/syslog"}
+-	var raddr string
+ 	for _, network := range logTypes {
+ 		for _, path := range logPaths {
+-			raddr = path
+-			conn, err := net.Dial(network, raddr)
++			conn, err := net.Dial(network, path)
+ 			if err != nil {
+ 				continue
+ 			} else {
+diff -Naur gcc-4.8.1.orig/libgo/go/math/big/int.go gcc-4.8.1/libgo/go/math/big/int.go
+--- gcc-4.8.1.orig/libgo/go/math/big/int.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/big/int.go	2013-07-16 01:55:04.520470000 -0500
+@@ -53,7 +53,7 @@
+ 
+ // SetUint64 sets z to x and returns z.
+ func (z *Int) SetUint64(x uint64) *Int {
+-	z.abs = z.abs.setUint64(uint64(x))
++	z.abs = z.abs.setUint64(x)
+ 	z.neg = false
+ 	return z
+ }
+@@ -513,13 +513,7 @@
+ // Int64 returns the int64 representation of x.
+ // If x cannot be represented in an int64, the result is undefined.
+ func (x *Int) Int64() int64 {
+-	if len(x.abs) == 0 {
+-		return 0
+-	}
+-	v := int64(x.abs[0])
+-	if _W == 32 && len(x.abs) > 1 {
+-		v |= int64(x.abs[1]) << 32
+-	}
++	v := int64(x.Uint64())
+ 	if x.neg {
+ 		v = -v
+ 	}
+@@ -527,7 +521,7 @@
+ }
+ 
+ // Uint64 returns the uint64 representation of x.
+-// If x cannot be represented in an uint64, the result is undefined.
++// If x cannot be represented in a uint64, the result is undefined.
+ func (x *Int) Uint64() uint64 {
+ 	if len(x.abs) == 0 {
+ 		return 0
+@@ -795,8 +789,8 @@
+ }
+ 
+ // SetBit sets z to x, with x's i'th bit set to b (0 or 1).
+-// That is, if bit is 1 SetBit sets z = x | (1 << i);
+-// if bit is 0 it sets z = x &^ (1 << i). If bit is not 0 or 1,
++// That is, if b is 1 SetBit sets z = x | (1 << i);
++// if b is 0 SetBit sets z = x &^ (1 << i). If b is not 0 or 1,
+ // SetBit will panic.
+ func (z *Int) SetBit(x *Int, i int, b uint) *Int {
+ 	if i < 0 {
+diff -Naur gcc-4.8.1.orig/libgo/go/math/big/nat.go gcc-4.8.1/libgo/go/math/big/nat.go
+--- gcc-4.8.1.orig/libgo/go/math/big/nat.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/big/nat.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1021,8 +1021,6 @@
+ 	default:
+ 		panic("unknown word size")
+ 	}
+-
+-	return 0
+ }
+ 
+ // trailingZeroBits returns the number of consecutive least significant zero
+diff -Naur gcc-4.8.1.orig/libgo/go/math/big/rat.go gcc-4.8.1/libgo/go/math/big/rat.go
+--- gcc-4.8.1.orig/libgo/go/math/big/rat.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/big/rat.go	2013-07-16 01:55:04.520470000 -0500
+@@ -163,16 +163,16 @@
+ 	return
+ }
+ 
+-// Float64 returns the nearest float64 value to z.
+-// If z is exactly representable as a float64, Float64 returns exact=true.
+-// If z is negative, so too is f, even if f==0.
+-func (z *Rat) Float64() (f float64, exact bool) {
+-	b := z.b.abs
++// Float64 returns the nearest float64 value for x and a bool indicating
++// whether f represents x exactly. The sign of f always matches the sign
++// of x, even if f == 0.
++func (x *Rat) Float64() (f float64, exact bool) {
++	b := x.b.abs
+ 	if len(b) == 0 {
+ 		b = b.set(natOne) // materialize denominator
+ 	}
+-	f, exact = quotToFloat(z.a.abs, b)
+-	if z.a.neg {
++	f, exact = quotToFloat(x.a.abs, b)
++	if x.a.neg {
+ 		f = -f
+ 	}
+ 	return
+diff -Naur gcc-4.8.1.orig/libgo/go/math/big/rat_test.go gcc-4.8.1/libgo/go/math/big/rat_test.go
+--- gcc-4.8.1.orig/libgo/go/math/big/rat_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/big/rat_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -500,12 +500,10 @@
+ 	}
+ }
+ 
+-// Test inputs to Rat.SetString.  The optional prefix "slow:" skips
+-// checks found to be slow for certain large rationals.
++// Test inputs to Rat.SetString.  The prefix "long:" causes the test
++// to be skipped in --test.short mode.  (The threshold is about 500us.)
+ var float64inputs = []string{
+-	//
+ 	// Constants plundered from strconv/testfp.txt.
+-	//
+ 
+ 	// Table 1: Stress Inputs for Conversion to 53-bit Binary, < 1/2 ULP
+ 	"5e+125",
+@@ -583,9 +581,7 @@
+ 	"75224575729e-45",
+ 	"459926601011e+15",
+ 
+-	//
+ 	// Constants plundered from strconv/atof_test.go.
+-	//
+ 
+ 	"0",
+ 	"1",
+@@ -630,8 +626,8 @@
+ 	"-1e310",
+ 	"1e400",
+ 	"-1e400",
+-	"1e400000",
+-	"-1e400000",
++	"long:1e400000",
++	"long:-1e400000",
+ 
+ 	// denormalized
+ 	"1e-305",
+@@ -649,10 +645,10 @@
+ 	"2e-324",
+ 	// way too small
+ 	"1e-350",
+-	"slow:1e-400000",
++	"long:1e-400000",
+ 	// way too small, negative
+ 	"-1e-350",
+-	"slow:-1e-400000",
++	"long:-1e-400000",
+ 
+ 	// try to overflow exponent
+ 	// [Disabled: too slow and memory-hungry with rationals.]
+@@ -672,7 +668,7 @@
+ 
+ 	// A different kind of very large number.
+ 	"22.222222222222222",
+-	"2." + strings.Repeat("2", 4000) + "e+1",
++	"long:2." + strings.Repeat("2", 4000) + "e+1",
+ 
+ 	// Exactly halfway between 1 and math.Nextafter(1, 2).
+ 	// Round to even (down).
+@@ -682,7 +678,7 @@
+ 	// Slightly higher; round up.
+ 	"1.00000000000000011102230246251565404236316680908203126",
+ 	// Slightly higher, but you have to read all the way to the end.
+-	"slow:1.00000000000000011102230246251565404236316680908203125" + strings.Repeat("0", 10000) + "1",
++	"long:1.00000000000000011102230246251565404236316680908203125" + strings.Repeat("0", 10000) + "1",
+ 
+ 	// Smallest denormal, 2^(-1022-52)
+ 	"4.940656458412465441765687928682213723651e-324",
+@@ -705,9 +701,11 @@
+ 
+ func TestFloat64SpecialCases(t *testing.T) {
+ 	for _, input := range float64inputs {
+-		slow := strings.HasPrefix(input, "slow:")
+-		if slow {
+-			input = input[len("slow:"):]
++		if strings.HasPrefix(input, "long:") {
++			if testing.Short() {
++				continue
++			}
++			input = input[len("long:"):]
+ 		}
+ 
+ 		r, ok := new(Rat).SetString(input)
+@@ -732,11 +730,11 @@
+ 			case f == 0 && r.Num().BitLen() == 0:
+ 				// Ok: Rat(0) is equivalent to both +/- float64(0).
+ 			default:
+-				t.Errorf("strconv.ParseFloat(%q) = %g (%b), want %g (%b); delta=%g", input, e, e, f, f, f-e)
++				t.Errorf("strconv.ParseFloat(%q) = %g (%b), want %g (%b); delta = %g", input, e, e, f, f, f-e)
+ 			}
+ 		}
+ 
+-		if !isFinite(f) || slow {
++		if !isFinite(f) {
+ 			continue
+ 		}
+ 
+@@ -751,7 +749,7 @@
+ 
+ 		// 4. Check exactness using slow algorithm.
+ 		if wasExact := new(Rat).SetFloat64(f).Cmp(r) == 0; wasExact != exact {
+-			t.Errorf("Rat.SetString(%q).Float64().exact = %b, want %b", input, exact, wasExact)
++			t.Errorf("Rat.SetString(%q).Float64().exact = %t, want %t", input, exact, wasExact)
+ 		}
+ 	}
+ }
+@@ -769,8 +767,11 @@
+ 		9,
+ 		11,
+ 	}
+-	const winc, einc = 5, 100 // quick test (<1s)
+-	//const winc, einc = 1, 1 // soak test (~75s)
++	var winc, einc = uint64(1), int(1) // soak test (~75s on x86-64)
++	if testing.Short() {
++		winc, einc = 10, 500 // quick test (~12ms on x86-64)
++	}
++
+ 	for _, sign := range "+-" {
+ 		for _, a := range add {
+ 			for wid := uint64(0); wid < 60; wid += winc {
+@@ -790,7 +791,7 @@
+ 
+ 					if !checkIsBestApprox(t, f, r) {
+ 						// Append context information.
+-						t.Errorf("(input was mantissa %#x, exp %d; f=%g (%b); f~%g; r=%v)",
++						t.Errorf("(input was mantissa %#x, exp %d; f = %g (%b); f ~ %g; r = %v)",
+ 							b, exp, f, f, math.Ldexp(float64(b), exp), r)
+ 					}
+ 
+@@ -825,7 +826,7 @@
+ 	}
+ 	f2, exact := r.Float64()
+ 	if f != f2 || !exact {
+-		t.Errorf("Rat.SetFloat64(%g).Float64() = %g (%b), %v, want %g (%b), %v; delta=%b",
++		t.Errorf("Rat.SetFloat64(%g).Float64() = %g (%b), %v, want %g (%b), %v; delta = %b",
+ 			f, f2, f2, exact, f, f, true, f2-f)
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/math/hypot.go gcc-4.8.1/libgo/go/math/hypot.go
+--- gcc-4.8.1.orig/libgo/go/math/hypot.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/math/hypot.go	2013-07-16 01:55:04.520470000 -0500
+@@ -12,8 +12,10 @@
+ // unnecessary overflow and underflow.
+ //
+ // Special cases are:
+-//	Hypot(p, q) = +Inf if p or q is infinite
+-//	Hypot(p, q) = NaN if p or q is NaN
++//	Hypot(Â±Inf, q) = +Inf
++//	Hypot(p, Â±Inf) = +Inf
++//	Hypot(NaN, q) = NaN
++//	Hypot(p, NaN) = NaN
+ func Hypot(p, q float64) float64 {
+ 	return hypot(p, q)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/math/rand/exp.go gcc-4.8.1/libgo/go/math/rand/exp.go
+--- gcc-4.8.1.orig/libgo/go/math/rand/exp.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/rand/exp.go	2013-07-16 01:55:04.520470000 -0500
+@@ -43,7 +43,6 @@
+ 			return x
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ var ke = [256]uint32{
+diff -Naur gcc-4.8.1.orig/libgo/go/math/rand/normal.go gcc-4.8.1/libgo/go/math/rand/normal.go
+--- gcc-4.8.1.orig/libgo/go/math/rand/normal.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/rand/normal.go	2013-07-16 01:55:04.520470000 -0500
+@@ -63,7 +63,6 @@
+ 			return x
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ var kn = [128]uint32{
+diff -Naur gcc-4.8.1.orig/libgo/go/math/rand/zipf.go gcc-4.8.1/libgo/go/math/rand/zipf.go
+--- gcc-4.8.1.orig/libgo/go/math/rand/zipf.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/rand/zipf.go	2013-07-16 01:55:04.520470000 -0500
+@@ -34,7 +34,6 @@
+ 
+ // NewZipf returns a Zipf generating variates p(k) on [0, imax]
+ // proportional to (v+k)**(-s) where s>1 and k>=0, and v>=1.
+-//
+ func NewZipf(r *Rand, s float64, v float64, imax uint64) *Zipf {
+ 	z := new(Zipf)
+ 	if s <= 1.0 || v < 1 {
+@@ -52,9 +51,12 @@
+ 	return z
+ }
+ 
+-// Uint64 returns a value drawn from the Zipf distributed described
++// Uint64 returns a value drawn from the Zipf distribution described
+ // by the Zipf object.
+ func (z *Zipf) Uint64() uint64 {
++	if z == nil {
++		panic("rand: nil Zipf")
++	}
+ 	k := 0.0
+ 
+ 	for {
+diff -Naur gcc-4.8.1.orig/libgo/go/math/sqrt.go gcc-4.8.1/libgo/go/math/sqrt.go
+--- gcc-4.8.1.orig/libgo/go/math/sqrt.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/math/sqrt.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,14 +4,6 @@
+ 
+ package math
+ 
+-// Sqrt returns the square root of x.
+-//
+-// Special cases are:
+-//	Sqrt(+Inf) = +Inf
+-//	Sqrt(Â±0) = Â±0
+-//	Sqrt(x < 0) = NaN
+-//	Sqrt(NaN) = NaN
+-
+ //extern sqrt
+ func libc_sqrt(float64) float64
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/math/tanh.go gcc-4.8.1/libgo/go/math/tanh.go
+--- gcc-4.8.1.orig/libgo/go/math/tanh.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/math/tanh.go	2013-07-16 01:55:04.520470000 -0500
+@@ -65,7 +65,7 @@
+ 	4.84406305325125486048E3,
+ }
+ 
+-// Tanh computes the hyperbolic tangent of x.
++// Tanh returns the hyperbolic tangent of x.
+ //
+ // Special cases are:
+ //	Tanh(Â±0) = Â±0
+diff -Naur gcc-4.8.1.orig/libgo/go/mime/multipart/multipart.go gcc-4.8.1/libgo/go/mime/multipart/multipart.go
+--- gcc-4.8.1.orig/libgo/go/mime/multipart/multipart.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/mime/multipart/multipart.go	2013-07-16 01:55:04.520470000 -0500
+@@ -28,7 +28,12 @@
+ type Part struct {
+ 	// The headers of the body, if any, with the keys canonicalized
+ 	// in the same fashion that the Go http.Request headers are.
+-	// i.e. "foo-bar" changes case to "Foo-Bar"
++	// For example, "foo-bar" changes case to "Foo-Bar"
++	//
++	// As a special case, if the "Content-Transfer-Encoding" header
++	// has a value of "quoted-printable", that header is instead
++	// hidden from this map and the body is transparently decoded
++	// during Read calls.
+ 	Header textproto.MIMEHeader
+ 
+ 	buffer    *bytes.Buffer
+@@ -265,11 +270,10 @@
+ 
+ 		return nil, fmt.Errorf("multipart: unexpected line in Next(): %q", line)
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // isFinalBoundary returns whether line is the final boundary line
+-// indiciating that all parts are over.
++// indicating that all parts are over.
+ // It matches `^--boundary--[ \t]*(\r\n)?$`
+ func (mr *Reader) isFinalBoundary(line []byte) bool {
+ 	if !bytes.HasPrefix(line, mr.dashBoundaryDash) {
+diff -Naur gcc-4.8.1.orig/libgo/go/mime/multipart/quotedprintable.go gcc-4.8.1/libgo/go/mime/multipart/quotedprintable.go
+--- gcc-4.8.1.orig/libgo/go/mime/multipart/quotedprintable.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/mime/multipart/quotedprintable.go	2013-07-16 01:55:04.520470000 -0500
+@@ -3,6 +3,10 @@
+ // license that can be found in the LICENSE file.
+ 
+ // The file define a quoted-printable decoder, as specified in RFC 2045.
++// Deviations:
++// 1. in addition to "=\r\n", "=\n" is also treated as soft line break.
++// 2. it will pass through a '\r' or '\n' not preceded by '=', consistent
++//    with other broken QP encoders & decoders.
+ 
+ package multipart
+ 
+@@ -57,6 +61,12 @@
+ 	return false
+ }
+ 
++var (
++	crlf       = []byte("\r\n")
++	lf         = []byte("\n")
++	softSuffix = []byte("=")
++)
++
+ func (q *qpReader) Read(p []byte) (n int, err error) {
+ 	for len(p) > 0 {
+ 		if len(q.line) == 0 {
+@@ -64,15 +74,29 @@
+ 				return n, q.rerr
+ 			}
+ 			q.line, q.rerr = q.br.ReadSlice('\n')
+-			q.line = bytes.TrimRightFunc(q.line, isQPDiscardWhitespace)
+-			continue
+-		}
+-		if len(q.line) == 1 && q.line[0] == '=' {
+-			// Soft newline; skipped.
+-			q.line = nil
++
++			// Does the line end in CRLF instead of just LF?
++			hasLF := bytes.HasSuffix(q.line, lf)
++			hasCR := bytes.HasSuffix(q.line, crlf)
++			wholeLine := q.line
++			q.line = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace)
++			if bytes.HasSuffix(q.line, softSuffix) {
++				rightStripped := wholeLine[len(q.line):]
++				q.line = q.line[:len(q.line)-1]
++				if !bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) {
++					q.rerr = fmt.Errorf("multipart: invalid bytes after =: %q", rightStripped)
++				}
++			} else if hasLF {
++				if hasCR {
++					q.line = append(q.line, '\r', '\n')
++				} else {
++					q.line = append(q.line, '\n')
++				}
++			}
+ 			continue
+ 		}
+ 		b := q.line[0]
++
+ 		switch {
+ 		case b == '=':
+ 			b, err = q.readHexByte(q.line[1:])
+@@ -80,7 +104,9 @@
+ 				return n, err
+ 			}
+ 			q.line = q.line[2:] // 2 of the 3; other 1 is done below
+-		case b != '\t' && (b < ' ' || b > '~'):
++		case b == '\t' || b == '\r' || b == '\n':
++			break
++		case b < ' ' || b > '~':
+ 			return n, fmt.Errorf("multipart: invalid unescaped byte 0x%02x in quoted-printable body", b)
+ 		}
+ 		p[0] = b
+diff -Naur gcc-4.8.1.orig/libgo/go/mime/multipart/quotedprintable_test.go gcc-4.8.1/libgo/go/mime/multipart/quotedprintable_test.go
+--- gcc-4.8.1.orig/libgo/go/mime/multipart/quotedprintable_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/mime/multipart/quotedprintable_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,11 +5,18 @@
+ package multipart
+ 
+ import (
++	"bufio"
+ 	"bytes"
++	"errors"
++	"flag"
+ 	"fmt"
+ 	"io"
++	"os/exec"
++	"regexp"
++	"sort"
+ 	"strings"
+ 	"testing"
++	"time"
+ )
+ 
+ func TestQuotedPrintable(t *testing.T) {
+@@ -17,15 +24,44 @@
+ 		in, want string
+ 		err      interface{}
+ 	}{
++		{in: "", want: ""},
+ 		{in: "foo bar", want: "foo bar"},
+ 		{in: "foo bar=3D", want: "foo bar="},
++		{in: "foo bar=\n", want: "foo bar"},
++		{in: "foo bar\n", want: "foo bar\n"}, // somewhat lax.
+ 		{in: "foo bar=0", want: "foo bar", err: io.ErrUnexpectedEOF},
+ 		{in: "foo bar=ab", want: "foo bar", err: "multipart: invalid quoted-printable hex byte 0x61"},
+ 		{in: "foo bar=0D=0A", want: "foo bar\r\n"},
+-		{in: "foo bar=\r\n baz", want: "foo bar baz"},
++		{in: " A B        \r\n C ", want: " A B\r\n C"},
++		{in: " A B =\r\n C ", want: " A B  C"},
++		{in: " A B =\n C ", want: " A B  C"}, // lax. treating LF as CRLF
+ 		{in: "foo=\nbar", want: "foobar"},
+ 		{in: "foo\x00bar", want: "foo", err: "multipart: invalid unescaped byte 0x00 in quoted-printable body"},
+ 		{in: "foo bar\xff", want: "foo bar", err: "multipart: invalid unescaped byte 0xff in quoted-printable body"},
++
++		// Equal sign.
++		{in: "=3D30\n", want: "=30\n"},
++		{in: "=00=FF0=\n", want: "\x00\xff0"},
++
++		// Trailing whitespace
++		{in: "foo  \n", want: "foo\n"},
++		{in: "foo  \n\nfoo =\n\nfoo=20\n\n", want: "foo\n\nfoo \nfoo \n\n"},
++
++		// Tests that we allow bare \n and \r through, despite it being strictly
++		// not permitted per RFC 2045, Section 6.7 Page 22 bullet (4).
++		{in: "foo\nbar", want: "foo\nbar"},
++		{in: "foo\rbar", want: "foo\rbar"},
++		{in: "foo\r\nbar", want: "foo\r\nbar"},
++
++		// Different types of soft line-breaks.
++		{in: "foo=\r\nbar", want: "foobar"},
++		{in: "foo=\nbar", want: "foobar"},
++		{in: "foo=\rbar", want: "foo", err: "multipart: invalid quoted-printable hex byte 0x0d"},
++		{in: "foo=\r\r\r \nbar", want: "foo", err: `multipart: invalid bytes after =: "\r\r\r \n"`},
++
++		// Example from RFC 2045:
++		{in: "Now's the time =\n" + "for all folk to come=\n" + " to the aid of their country.",
++			want: "Now's the time for all folk to come to the aid of their country."},
+ 	}
+ 	for _, tt := range tests {
+ 		var buf bytes.Buffer
+@@ -50,3 +86,119 @@
+ 	}
+ 
+ }
++
++func everySequence(base, alpha string, length int, fn func(string)) {
++	if len(base) == length {
++		fn(base)
++		return
++	}
++	for i := 0; i < len(alpha); i++ {
++		everySequence(base+alpha[i:i+1], alpha, length, fn)
++	}
++}
++
++var useQprint = flag.Bool("qprint", false, "Compare against the 'qprint' program.")
++
++var badSoftRx = regexp.MustCompile(`=([^\r\n]+?\n)|([^\r\n]+$)|(\r$)|(\r[^\n]+\n)|( \r\n)`)
++
++func TestQPExhaustive(t *testing.T) {
++	if *useQprint {
++		_, err := exec.LookPath("qprint")
++		if err != nil {
++			t.Fatalf("Error looking for qprint: %v", err)
++		}
++	}
++
++	var buf bytes.Buffer
++	res := make(map[string]int)
++	everySequence("", "0A \r\n=", 6, func(s string) {
++		if strings.HasSuffix(s, "=") || strings.Contains(s, "==") {
++			return
++		}
++		buf.Reset()
++		_, err := io.Copy(&buf, newQuotedPrintableReader(strings.NewReader(s)))
++		if err != nil {
++			errStr := err.Error()
++			if strings.Contains(errStr, "invalid bytes after =:") {
++				errStr = "invalid bytes after ="
++			}
++			res[errStr]++
++			if strings.Contains(errStr, "invalid quoted-printable hex byte ") {
++				if strings.HasSuffix(errStr, "0x20") && (strings.Contains(s, "=0 ") || strings.Contains(s, "=A ") || strings.Contains(s, "= ")) {
++					return
++				}
++				if strings.HasSuffix(errStr, "0x3d") && (strings.Contains(s, "=0=") || strings.Contains(s, "=A=")) {
++					return
++				}
++				if strings.HasSuffix(errStr, "0x0a") || strings.HasSuffix(errStr, "0x0d") {
++					// bunch of cases; since whitespace at the end of of a line before \n is removed.
++					return
++				}
++			}
++			if strings.Contains(errStr, "unexpected EOF") {
++				return
++			}
++			if errStr == "invalid bytes after =" && badSoftRx.MatchString(s) {
++				return
++			}
++			t.Errorf("decode(%q) = %v", s, err)
++			return
++		}
++		if *useQprint {
++			cmd := exec.Command("qprint", "-d")
++			cmd.Stdin = strings.NewReader(s)
++			stderr, err := cmd.StderrPipe()
++			if err != nil {
++				panic(err)
++			}
++			qpres := make(chan interface{}, 2)
++			go func() {
++				br := bufio.NewReader(stderr)
++				s, _ := br.ReadString('\n')
++				if s != "" {
++					qpres <- errors.New(s)
++					if cmd.Process != nil {
++						// It can get stuck on invalid input, like:
++						// echo -n "0000= " | qprint -d
++						cmd.Process.Kill()
++					}
++				}
++			}()
++			go func() {
++				want, err := cmd.Output()
++				if err == nil {
++					qpres <- want
++				}
++			}()
++			select {
++			case got := <-qpres:
++				if want, ok := got.([]byte); ok {
++					if string(want) != buf.String() {
++						t.Errorf("go decode(%q) = %q; qprint = %q", s, want, buf.String())
++					}
++				} else {
++					t.Logf("qprint -d(%q) = %v", s, got)
++				}
++			case <-time.After(5 * time.Second):
++				t.Logf("qprint timeout on %q", s)
++			}
++		}
++		res["OK"]++
++	})
++	var outcomes []string
++	for k, v := range res {
++		outcomes = append(outcomes, fmt.Sprintf("%v: %d", k, v))
++	}
++	sort.Strings(outcomes)
++	got := strings.Join(outcomes, "\n")
++	want := `OK: 21576
++invalid bytes after =: 3397
++multipart: invalid quoted-printable hex byte 0x0a: 1400
++multipart: invalid quoted-printable hex byte 0x0d: 2700
++multipart: invalid quoted-printable hex byte 0x20: 2490
++multipart: invalid quoted-printable hex byte 0x3d: 440
++unexpected EOF: 3122`
++	if got != want {
++		t.Errorf("Got:\n%s\nWant:\n%s", got, want)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/mime/type_unix.go gcc-4.8.1/libgo/go/mime/type_unix.go
+--- gcc-4.8.1.orig/libgo/go/mime/type_unix.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/mime/type_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -23,15 +23,11 @@
+ 	if err != nil {
+ 		return
+ 	}
++	defer f.Close()
+ 
+-	reader := bufio.NewReader(f)
+-	for {
+-		line, err := reader.ReadString('\n')
+-		if err != nil {
+-			f.Close()
+-			return
+-		}
+-		fields := strings.Fields(line)
++	scanner := bufio.NewScanner(f)
++	for scanner.Scan() {
++		fields := strings.Fields(scanner.Text())
+ 		if len(fields) <= 1 || fields[0][0] == '#' {
+ 			continue
+ 		}
+@@ -43,6 +39,9 @@
+ 			setExtensionType("."+ext, mimeType)
+ 		}
+ 	}
++	if err := scanner.Err(); err != nil {
++		panic(err)
++	}
+ }
+ 
+ func initMime() {
+diff -Naur gcc-4.8.1.orig/libgo/go/mime/type_windows.go gcc-4.8.1/libgo/go/mime/type_windows.go
+--- gcc-4.8.1.orig/libgo/go/mime/type_windows.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/mime/type_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -58,7 +58,6 @@
+ 
+ func initMimeForTests() map[string]string {
+ 	return map[string]string{
+-		".bmp": "image/bmp",
+ 		".png": "image/png",
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/cgo_unix.go gcc-4.8.1/libgo/go/net/cgo_unix.go
+--- gcc-4.8.1.orig/libgo/go/net/cgo_unix.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/cgo_unix.go	2013-08-09 15:52:50.854685000 -0500
+@@ -103,6 +103,7 @@
+ 	var hints syscall.Addrinfo
+ 
+ 	hints.Ai_flags = int32(cgoAddrInfoFlags())
++	hints.Ai_socktype = syscall.SOCK_STREAM
+ 
+ 	h := syscall.StringBytePtr(name)
+ 	syscall.Entersyscall()
+@@ -130,7 +131,7 @@
+ 		}
+ 	}
+ 	for r := res; r != nil; r = r.Ai_next {
+-		// Everything comes back twice, once for UDP and once for TCP.
++		// We only asked for SOCK_STREAM, but check anyhow.
+ 		if r.Ai_socktype != syscall.SOCK_STREAM {
+ 			continue
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/conn_test.go gcc-4.8.1/libgo/go/net/conn_test.go
+--- gcc-4.8.1.orig/libgo/go/net/conn_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/conn_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,12 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package net_test
++// This file implements API tests across platforms and will never have a build
++// tag.
++
++package net
+ 
+ import (
+-	"net"
+ 	"os"
+ 	"runtime"
+ 	"testing"
+@@ -14,13 +16,18 @@
+ 
+ var connTests = []struct {
+ 	net  string
+-	addr string
++	addr func() string
+ }{
+-	{"tcp", "127.0.0.1:0"},
+-	{"unix", "/tmp/gotest.net1"},
+-	{"unixpacket", "/tmp/gotest.net2"},
++	{"tcp", func() string { return "127.0.0.1:0" }},
++	{"unix", testUnixAddr},
++	{"unixpacket", testUnixAddr},
+ }
+ 
++// someTimeout is used just to test that net.Conn implementations
++// don't explode when their SetFooDeadline methods are called.
++// It isn't actually used for testing timeouts.
++const someTimeout = 10 * time.Second
++
+ func TestConnAndListener(t *testing.T) {
+ 	for _, tt := range connTests {
+ 		switch tt.net {
+@@ -32,74 +39,77 @@
+ 			if tt.net == "unixpacket" && runtime.GOOS != "linux" {
+ 				continue
+ 			}
+-			os.Remove(tt.addr)
+ 		}
+ 
+-		ln, err := net.Listen(tt.net, tt.addr)
++		addr := tt.addr()
++		ln, err := Listen(tt.net, addr)
+ 		if err != nil {
+-			t.Errorf("net.Listen failed: %v", err)
+-			return
++			t.Fatalf("Listen failed: %v", err)
+ 		}
+-		ln.Addr()
+-		defer func(ln net.Listener, net, addr string) {
++		defer func(ln Listener, net, addr string) {
+ 			ln.Close()
+ 			switch net {
+ 			case "unix", "unixpacket":
+ 				os.Remove(addr)
+ 			}
+-		}(ln, tt.net, tt.addr)
++		}(ln, tt.net, addr)
++		ln.Addr()
+ 
+ 		done := make(chan int)
+ 		go transponder(t, ln, done)
+ 
+-		c, err := net.Dial(tt.net, ln.Addr().String())
++		c, err := Dial(tt.net, ln.Addr().String())
+ 		if err != nil {
+-			t.Errorf("net.Dial failed: %v", err)
+-			return
++			t.Fatalf("Dial failed: %v", err)
+ 		}
++		defer c.Close()
+ 		c.LocalAddr()
+ 		c.RemoteAddr()
+-		c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-		c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-		c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-		defer c.Close()
++		c.SetDeadline(time.Now().Add(someTimeout))
++		c.SetReadDeadline(time.Now().Add(someTimeout))
++		c.SetWriteDeadline(time.Now().Add(someTimeout))
+ 
+ 		if _, err := c.Write([]byte("CONN TEST")); err != nil {
+-			t.Errorf("net.Conn.Write failed: %v", err)
+-			return
++			t.Fatalf("Conn.Write failed: %v", err)
+ 		}
+ 		rb := make([]byte, 128)
+ 		if _, err := c.Read(rb); err != nil {
+-			t.Errorf("net.Conn.Read failed: %v", err)
++			t.Fatalf("Conn.Read failed: %v", err)
+ 		}
+ 
+ 		<-done
+ 	}
+ }
+ 
+-func transponder(t *testing.T, ln net.Listener, done chan<- int) {
++func transponder(t *testing.T, ln Listener, done chan<- int) {
+ 	defer func() { done <- 1 }()
+ 
++	switch ln := ln.(type) {
++	case *TCPListener:
++		ln.SetDeadline(time.Now().Add(someTimeout))
++	case *UnixListener:
++		ln.SetDeadline(time.Now().Add(someTimeout))
++	}
+ 	c, err := ln.Accept()
+ 	if err != nil {
+-		t.Errorf("net.Listener.Accept failed: %v", err)
++		t.Errorf("Listener.Accept failed: %v", err)
+ 		return
+ 	}
++	defer c.Close()
+ 	c.LocalAddr()
+ 	c.RemoteAddr()
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-	defer c.Close()
++	c.SetDeadline(time.Now().Add(someTimeout))
++	c.SetReadDeadline(time.Now().Add(someTimeout))
++	c.SetWriteDeadline(time.Now().Add(someTimeout))
+ 
+ 	b := make([]byte, 128)
+ 	n, err := c.Read(b)
+ 	if err != nil {
+-		t.Errorf("net.Conn.Read failed: %v", err)
++		t.Errorf("Conn.Read failed: %v", err)
+ 		return
+ 	}
+ 	if _, err := c.Write(b[:n]); err != nil {
+-		t.Errorf("net.Conn.Write failed: %v", err)
++		t.Errorf("Conn.Write failed: %v", err)
+ 		return
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/dial_gen.go gcc-4.8.1/libgo/go/net/dial_gen.go
+--- gcc-4.8.1.orig/libgo/go/net/dial_gen.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/dial_gen.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,73 @@
++// Copyright 2012 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build windows plan9
++
++package net
++
++import (
++	"time"
++)
++
++var testingIssue5349 bool // used during tests
++
++// resolveAndDialChannel is the simple pure-Go implementation of
++// resolveAndDial, still used on operating systems where the deadline
++// hasn't been pushed down into the pollserver. (Plan 9 and some old
++// versions of Windows)
++func resolveAndDialChannel(net, addr string, localAddr Addr, deadline time.Time) (Conn, error) {
++	var timeout time.Duration
++	if !deadline.IsZero() {
++		timeout = deadline.Sub(time.Now())
++	}
++	if timeout <= 0 {
++		ra, err := resolveAddr("dial", net, addr, noDeadline)
++		if err != nil {
++			return nil, err
++		}
++		return dial(net, addr, localAddr, ra, noDeadline)
++	}
++	t := time.NewTimer(timeout)
++	defer t.Stop()
++	type pair struct {
++		Conn
++		error
++	}
++	ch := make(chan pair, 1)
++	resolvedAddr := make(chan Addr, 1)
++	go func() {
++		if testingIssue5349 {
++			time.Sleep(time.Millisecond)
++		}
++		ra, err := resolveAddr("dial", net, addr, noDeadline)
++		if err != nil {
++			ch <- pair{nil, err}
++			return
++		}
++		resolvedAddr <- ra // in case we need it for OpError
++		c, err := dial(net, addr, localAddr, ra, noDeadline)
++		ch <- pair{c, err}
++	}()
++	select {
++	case <-t.C:
++		// Try to use the real Addr in our OpError, if we resolved it
++		// before the timeout. Otherwise we just use stringAddr.
++		var ra Addr
++		select {
++		case a := <-resolvedAddr:
++			ra = a
++		default:
++			ra = &stringAddr{net, addr}
++		}
++		err := &OpError{
++			Op:   "dial",
++			Net:  net,
++			Addr: ra,
++			Err:  &timeoutError{},
++		}
++		return nil, err
++	case p := <-ch:
++		return p.Conn, p.error
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/dial.go gcc-4.8.1/libgo/go/net/dial.go
+--- gcc-4.8.1.orig/libgo/go/net/dial.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/dial.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,10 +5,55 @@
+ package net
+ 
+ import (
++	"errors"
+ 	"time"
+ )
+ 
+-func parseDialNetwork(net string) (afnet string, proto int, err error) {
++// A Dialer contains options for connecting to an address.
++//
++// The zero value for each field is equivalent to dialing
++// without that option. Dialing with the zero value of Dialer
++// is therefore equivalent to just calling the Dial function.
++type Dialer struct {
++	// Timeout is the maximum amount of time a dial will wait for
++	// a connect to complete. If Deadline is also set, it may fail
++	// earlier.
++	//
++	// The default is no timeout.
++	//
++	// With or without a timeout, the operating system may impose
++	// its own earlier timeout. For instance, TCP timeouts are
++	// often around 3 minutes.
++	Timeout time.Duration
++
++	// Deadline is the absolute point in time after which dials
++	// will fail. If Timeout is set, it may fail earlier.
++	// Zero means no deadline, or dependent on the operating system
++	// as with the Timeout option.
++	Deadline time.Time
++
++	// LocalAddr is the local address to use when dialing an
++	// address. The address must be of a compatible type for the
++	// network being dialed.
++	// If nil, a local address is automatically chosen.
++	LocalAddr Addr
++}
++
++// Return either now+Timeout or Deadline, whichever comes first.
++// Or zero, if neither is set.
++func (d *Dialer) deadline() time.Time {
++	if d.Timeout == 0 {
++		return d.Deadline
++	}
++	timeoutDeadline := time.Now().Add(d.Timeout)
++	if d.Deadline.IsZero() || timeoutDeadline.Before(d.Deadline) {
++		return timeoutDeadline
++	} else {
++		return d.Deadline
++	}
++}
++
++func parseNetwork(net string) (afnet string, proto int, err error) {
+ 	i := last(net, ':')
+ 	if i < 0 { // no colon
+ 		switch net {
+@@ -37,74 +82,89 @@
+ 	return "", 0, UnknownNetworkError(net)
+ }
+ 
+-func resolveNetAddr(op, net, addr string, deadline time.Time) (afnet string, a Addr, err error) {
+-	afnet, _, err = parseDialNetwork(net)
++func resolveAddr(op, net, addr string, deadline time.Time) (Addr, error) {
++	afnet, _, err := parseNetwork(net)
+ 	if err != nil {
+-		return "", nil, &OpError{op, net, nil, err}
++		return nil, &OpError{op, net, nil, err}
+ 	}
+ 	if op == "dial" && addr == "" {
+-		return "", nil, &OpError{op, net, nil, errMissingAddress}
+-	}
+-	a, err = resolveAfnetAddr(afnet, addr, deadline)
+-	return
+-}
+-
+-func resolveAfnetAddr(afnet, addr string, deadline time.Time) (Addr, error) {
+-	if addr == "" {
+-		return nil, nil
++		return nil, &OpError{op, net, nil, errMissingAddress}
+ 	}
+ 	switch afnet {
+-	case "tcp", "tcp4", "tcp6", "udp", "udp4", "udp6", "ip", "ip4", "ip6":
+-		return resolveInternetAddr(afnet, addr, deadline)
+ 	case "unix", "unixgram", "unixpacket":
+ 		return ResolveUnixAddr(afnet, addr)
+ 	}
+-	return nil, nil
++	return resolveInternetAddr(afnet, addr, deadline)
+ }
+ 
+-// Dial connects to the address addr on the network net.
++// Dial connects to the address on the named network.
+ //
+ // Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only),
+ // "udp", "udp4" (IPv4-only), "udp6" (IPv6-only), "ip", "ip4"
+-// (IPv4-only), "ip6" (IPv6-only), "unix" and "unixpacket".
++// (IPv4-only), "ip6" (IPv6-only), "unix", "unixgram" and
++// "unixpacket".
+ //
+ // For TCP and UDP networks, addresses have the form host:port.
+-// If host is a literal IPv6 address, it must be enclosed
+-// in square brackets.  The functions JoinHostPort and SplitHostPort
+-// manipulate addresses in this form.
++// If host is a literal IPv6 address or host name, it must be enclosed
++// in square brackets as in "[::1]:80", "[ipv6-host]:http" or
++// "[ipv6-host%zone]:80".
++// The functions JoinHostPort and SplitHostPort manipulate addresses
++// in this form.
+ //
+ // Examples:
+ //	Dial("tcp", "12.34.56.78:80")
+-//	Dial("tcp", "google.com:80")
+-//	Dial("tcp", "[de:ad:be:ef::ca:fe]:80")
+-//
+-// For IP networks, net must be "ip", "ip4" or "ip6" followed
+-// by a colon and a protocol number or name.
++//	Dial("tcp", "google.com:http")
++//	Dial("tcp", "[2001:db8::1]:http")
++//	Dial("tcp", "[fe80::1%lo0]:80")
++//
++// For IP networks, the network must be "ip", "ip4" or "ip6" followed
++// by a colon and a protocol number or name and the addr must be a
++// literal IP address.
+ //
+ // Examples:
+ //	Dial("ip4:1", "127.0.0.1")
+ //	Dial("ip6:ospf", "::1")
+ //
+-func Dial(net, addr string) (Conn, error) {
+-	_, addri, err := resolveNetAddr("dial", net, addr, noDeadline)
+-	if err != nil {
+-		return nil, err
+-	}
+-	return dialAddr(net, addr, addri, noDeadline)
++// For Unix networks, the address must be a file system path.
++func Dial(network, address string) (Conn, error) {
++	var d Dialer
++	return d.Dial(network, address)
+ }
+ 
+-func dialAddr(net, addr string, addri Addr, deadline time.Time) (c Conn, err error) {
+-	switch ra := addri.(type) {
++// DialTimeout acts like Dial but takes a timeout.
++// The timeout includes name resolution, if required.
++func DialTimeout(network, address string, timeout time.Duration) (Conn, error) {
++	d := Dialer{Timeout: timeout}
++	return d.Dial(network, address)
++}
++
++// Dial connects to the address on the named network.
++//
++// See func Dial for a description of the network and address
++// parameters.
++func (d *Dialer) Dial(network, address string) (Conn, error) {
++	return resolveAndDial(network, address, d.LocalAddr, d.deadline())
++}
++
++func dial(net, addr string, la, ra Addr, deadline time.Time) (c Conn, err error) {
++	if la != nil && la.Network() != ra.Network() {
++		return nil, &OpError{"dial", net, ra, errors.New("mismatched local addr type " + la.Network())}
++	}
++	switch ra := ra.(type) {
+ 	case *TCPAddr:
+-		c, err = dialTCP(net, nil, ra, deadline)
++		la, _ := la.(*TCPAddr)
++		c, err = dialTCP(net, la, ra, deadline)
+ 	case *UDPAddr:
+-		c, err = dialUDP(net, nil, ra, deadline)
++		la, _ := la.(*UDPAddr)
++		c, err = dialUDP(net, la, ra, deadline)
+ 	case *IPAddr:
+-		c, err = dialIP(net, nil, ra, deadline)
++		la, _ := la.(*IPAddr)
++		c, err = dialIP(net, la, ra, deadline)
+ 	case *UnixAddr:
+-		c, err = dialUnix(net, nil, ra, deadline)
++		la, _ := la.(*UnixAddr)
++		c, err = dialUnix(net, la, ra, deadline)
+ 	default:
+-		err = &OpError{"dial", net + " " + addr, nil, UnknownNetworkError(net)}
++		err = &OpError{"dial", net + " " + addr, ra, UnknownNetworkError(net)}
+ 	}
+ 	if err != nil {
+ 		return nil, err
+@@ -112,59 +172,6 @@
+ 	return
+ }
+ 
+-// DialTimeout acts like Dial but takes a timeout.
+-// The timeout includes name resolution, if required.
+-func DialTimeout(net, addr string, timeout time.Duration) (Conn, error) {
+-	return dialTimeout(net, addr, timeout)
+-}
+-
+-// dialTimeoutRace is the old implementation of DialTimeout, still used
+-// on operating systems where the deadline hasn't been pushed down
+-// into the pollserver.
+-// TODO: fix this on plan9.
+-func dialTimeoutRace(net, addr string, timeout time.Duration) (Conn, error) {
+-	t := time.NewTimer(timeout)
+-	defer t.Stop()
+-	type pair struct {
+-		Conn
+-		error
+-	}
+-	ch := make(chan pair, 1)
+-	resolvedAddr := make(chan Addr, 1)
+-	go func() {
+-		_, addri, err := resolveNetAddr("dial", net, addr, noDeadline)
+-		if err != nil {
+-			ch <- pair{nil, err}
+-			return
+-		}
+-		resolvedAddr <- addri // in case we need it for OpError
+-		c, err := dialAddr(net, addr, addri, noDeadline)
+-		ch <- pair{c, err}
+-	}()
+-	select {
+-	case <-t.C:
+-		// Try to use the real Addr in our OpError, if we resolved it
+-		// before the timeout. Otherwise we just use stringAddr.
+-		var addri Addr
+-		select {
+-		case a := <-resolvedAddr:
+-			addri = a
+-		default:
+-			addri = &stringAddr{net, addr}
+-		}
+-		err := &OpError{
+-			Op:   "dial",
+-			Net:  net,
+-			Addr: addri,
+-			Err:  &timeoutError{},
+-		}
+-		return nil, err
+-	case p := <-ch:
+-		return p.Conn, p.error
+-	}
+-	panic("unreachable")
+-}
+-
+ type stringAddr struct {
+ 	net, addr string
+ }
+@@ -173,56 +180,38 @@
+ func (a stringAddr) String() string  { return a.addr }
+ 
+ // Listen announces on the local network address laddr.
+-// The network string net must be a stream-oriented network:
+-// "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
++// The network net must be a stream-oriented network: "tcp", "tcp4",
++// "tcp6", "unix" or "unixpacket".
++// See Dial for the syntax of laddr.
+ func Listen(net, laddr string) (Listener, error) {
+-	afnet, a, err := resolveNetAddr("listen", net, laddr, noDeadline)
++	la, err := resolveAddr("listen", net, laddr, noDeadline)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	switch afnet {
+-	case "tcp", "tcp4", "tcp6":
+-		var la *TCPAddr
+-		if a != nil {
+-			la = a.(*TCPAddr)
+-		}
++	switch la := la.(type) {
++	case *TCPAddr:
+ 		return ListenTCP(net, la)
+-	case "unix", "unixpacket":
+-		var la *UnixAddr
+-		if a != nil {
+-			la = a.(*UnixAddr)
+-		}
++	case *UnixAddr:
+ 		return ListenUnix(net, la)
+ 	}
+ 	return nil, UnknownNetworkError(net)
+ }
+ 
+ // ListenPacket announces on the local network address laddr.
+-// The network string net must be a packet-oriented network:
+-// "udp", "udp4", "udp6", "ip", "ip4", "ip6" or "unixgram".
++// The network net must be a packet-oriented network: "udp", "udp4",
++// "udp6", "ip", "ip4", "ip6" or "unixgram".
++// See Dial for the syntax of laddr.
+ func ListenPacket(net, laddr string) (PacketConn, error) {
+-	afnet, a, err := resolveNetAddr("listen", net, laddr, noDeadline)
++	la, err := resolveAddr("listen", net, laddr, noDeadline)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	switch afnet {
+-	case "udp", "udp4", "udp6":
+-		var la *UDPAddr
+-		if a != nil {
+-			la = a.(*UDPAddr)
+-		}
++	switch la := la.(type) {
++	case *UDPAddr:
+ 		return ListenUDP(net, la)
+-	case "ip", "ip4", "ip6":
+-		var la *IPAddr
+-		if a != nil {
+-			la = a.(*IPAddr)
+-		}
++	case *IPAddr:
+ 		return ListenIP(net, la)
+-	case "unixgram":
+-		var la *UnixAddr
+-		if a != nil {
+-			la = a.(*UnixAddr)
+-		}
++	case *UnixAddr:
+ 		return ListenUnixgram(net, la)
+ 	}
+ 	return nil, UnknownNetworkError(net)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/dial_test.go gcc-4.8.1/libgo/go/net/dial_test.go
+--- gcc-4.8.1.orig/libgo/go/net/dial_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/dial_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"fmt"
+ 	"io"
+ 	"os"
++	"reflect"
+ 	"regexp"
+ 	"runtime"
+ 	"testing"
+@@ -27,12 +28,18 @@
+ }
+ 
+ func TestDialTimeout(t *testing.T) {
++	origBacklog := listenerBacklog
++	defer func() {
++		listenerBacklog = origBacklog
++	}()
++	listenerBacklog = 1
++
+ 	ln := newLocalListener(t)
+ 	defer ln.Close()
+ 
+ 	errc := make(chan error)
+ 
+-	numConns := listenerBacklog + 10
++	numConns := listenerBacklog + 100
+ 
+ 	// TODO(bradfitz): It's hard to test this in a portable
+ 	// way. This is unfortunate, but works for now.
+@@ -223,6 +230,31 @@
+ 	}
+ }
+ 
++var invalidDialAndListenArgTests = []struct {
++	net  string
++	addr string
++	err  error
++}{
++	{"foo", "bar", &OpError{Op: "dial", Net: "foo", Addr: nil, Err: UnknownNetworkError("foo")}},
++	{"baz", "", &OpError{Op: "listen", Net: "baz", Addr: nil, Err: UnknownNetworkError("baz")}},
++	{"tcp", "", &OpError{Op: "dial", Net: "tcp", Addr: nil, Err: errMissingAddress}},
++}
++
++func TestInvalidDialAndListenArgs(t *testing.T) {
++	for _, tt := range invalidDialAndListenArgTests {
++		var err error
++		switch tt.err.(*OpError).Op {
++		case "dial":
++			_, err = Dial(tt.net, tt.addr)
++		case "listen":
++			_, err = Listen(tt.net, tt.addr)
++		}
++		if !reflect.DeepEqual(tt.err, err) {
++			t.Fatalf("got %#v; expected %#v", err, tt.err)
++		}
++	}
++}
++
+ func TestDialTimeoutFDLeak(t *testing.T) {
+ 	if runtime.GOOS != "linux" {
+ 		// TODO(bradfitz): test on other platforms
+@@ -298,3 +330,80 @@
+ 	// All tests using this should be skipped anyway, but:
+ 	panic("numFDs not implemented on " + runtime.GOOS)
+ }
++
++var testPoller = flag.Bool("poller", false, "platform supports runtime-integrated poller")
++
++// Assert that a failed Dial attempt does not leak
++// runtime.PollDesc structures
++func TestDialFailPDLeak(t *testing.T) {
++	if !*testPoller {
++		t.Skip("test disabled; use -poller to enable")
++	}
++
++	const loops = 10
++	const count = 20000
++	var old runtime.MemStats // used by sysdelta
++	runtime.ReadMemStats(&old)
++	sysdelta := func() uint64 {
++		var new runtime.MemStats
++		runtime.ReadMemStats(&new)
++		delta := old.Sys - new.Sys
++		old = new
++		return delta
++	}
++	d := &Dialer{Timeout: time.Nanosecond} // don't bother TCP with handshaking
++	failcount := 0
++	for i := 0; i < loops; i++ {
++		for i := 0; i < count; i++ {
++			conn, err := d.Dial("tcp", "127.0.0.1:1")
++			if err == nil {
++				t.Error("dial should not succeed")
++				conn.Close()
++				t.FailNow()
++			}
++		}
++		if delta := sysdelta(); delta > 0 {
++			failcount++
++		}
++		// there are always some allocations on the first loop
++		if failcount > 3 {
++			t.Error("detected possible memory leak in runtime")
++			t.FailNow()
++		}
++	}
++}
++
++func TestDialer(t *testing.T) {
++	ln, err := Listen("tcp4", "127.0.0.1:0")
++	if err != nil {
++		t.Fatalf("Listen failed: %v", err)
++	}
++	defer ln.Close()
++	ch := make(chan error, 1)
++	go func() {
++		var err error
++		c, err := ln.Accept()
++		if err != nil {
++			ch <- fmt.Errorf("Accept failed: %v", err)
++			return
++		}
++		defer c.Close()
++		ch <- nil
++	}()
++
++	laddr, err := ResolveTCPAddr("tcp4", "127.0.0.1:0")
++	if err != nil {
++		t.Fatalf("ResolveTCPAddr failed: %v", err)
++	}
++	d := &Dialer{LocalAddr: laddr}
++	c, err := d.Dial("tcp4", ln.Addr().String())
++	if err != nil {
++		t.Fatalf("Dial failed: %v", err)
++	}
++	defer c.Close()
++	c.Read(make([]byte, 1))
++	err = <-ch
++	if err != nil {
++		t.Error(err)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_bsd.go gcc-4.8.1/libgo/go/net/fd_bsd.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_bsd.go	2013-02-06 16:40:18.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_bsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -33,6 +33,8 @@
+ 	return p, nil
+ }
+ 
++// First return value is whether the pollServer should be woken up.
++// This version always returns false.
+ func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
+ 	// pollServer is locked.
+ 
+@@ -64,6 +66,8 @@
+ 	return false, nil
+ }
+ 
++// Return value is whether the pollServer should be woken up.
++// This version always returns false.
+ func (p *pollster) DelFD(fd int, mode int) bool {
+ 	// pollServer is locked.
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_linux.go gcc-4.8.1/libgo/go/net/fd_linux.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_linux.go	2013-02-06 16:40:18.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_linux.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,188 +0,0 @@
+-// Copyright 2009 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// Waiting for FDs via epoll(7).
+-
+-package net
+-
+-import (
+-	"os"
+-	"syscall"
+-)
+-
+-const (
+-	readFlags  = syscall.EPOLLIN | syscall.EPOLLRDHUP
+-	writeFlags = syscall.EPOLLOUT
+-)
+-
+-type pollster struct {
+-	epfd int
+-
+-	// Events we're already waiting for
+-	// Must hold pollServer lock
+-	events map[int]uint32
+-
+-	// An event buffer for EpollWait.
+-	// Used without a lock, may only be used by WaitFD.
+-	waitEventBuf [10]syscall.EpollEvent
+-	waitEvents   []syscall.EpollEvent
+-
+-	// An event buffer for EpollCtl, to avoid a malloc.
+-	// Must hold pollServer lock.
+-	ctlEvent syscall.EpollEvent
+-}
+-
+-func newpollster() (p *pollster, err error) {
+-	p = new(pollster)
+-	if p.epfd, err = syscall.EpollCreate1(syscall.EPOLL_CLOEXEC); err != nil {
+-		if err != syscall.ENOSYS {
+-			return nil, os.NewSyscallError("epoll_create1", err)
+-		}
+-		// The arg to epoll_create is a hint to the kernel
+-		// about the number of FDs we will care about.
+-		// We don't know, and since 2.6.8 the kernel ignores it anyhow.
+-		if p.epfd, err = syscall.EpollCreate(16); err != nil {
+-			return nil, os.NewSyscallError("epoll_create", err)
+-		}
+-		syscall.CloseOnExec(p.epfd)
+-	}
+-	p.events = make(map[int]uint32)
+-	return p, nil
+-}
+-
+-func (p *pollster) AddFD(fd int, mode int, repeat bool) (bool, error) {
+-	// pollServer is locked.
+-
+-	var already bool
+-	p.ctlEvent.Fd = int32(fd)
+-	p.ctlEvent.Events, already = p.events[fd]
+-	if !repeat {
+-		p.ctlEvent.Events |= syscall.EPOLLONESHOT
+-	}
+-	if mode == 'r' {
+-		p.ctlEvent.Events |= readFlags
+-	} else {
+-		p.ctlEvent.Events |= writeFlags
+-	}
+-
+-	var op int
+-	if already {
+-		op = syscall.EPOLL_CTL_MOD
+-	} else {
+-		op = syscall.EPOLL_CTL_ADD
+-	}
+-	if err := syscall.EpollCtl(p.epfd, op, fd, &p.ctlEvent); err != nil {
+-		return false, os.NewSyscallError("epoll_ctl", err)
+-	}
+-	p.events[fd] = p.ctlEvent.Events
+-	return false, nil
+-}
+-
+-func (p *pollster) StopWaiting(fd int, bits uint) {
+-	// pollServer is locked.
+-
+-	events, already := p.events[fd]
+-	if !already {
+-		// The fd returned by the kernel may have been
+-		// cancelled already; return silently.
+-		return
+-	}
+-
+-	// If syscall.EPOLLONESHOT is not set, the wait
+-	// is a repeating wait, so don't change it.
+-	if events&syscall.EPOLLONESHOT == 0 {
+-		return
+-	}
+-
+-	// Disable the given bits.
+-	// If we're still waiting for other events, modify the fd
+-	// event in the kernel.  Otherwise, delete it.
+-	events &= ^uint32(bits)
+-	if int32(events)&^syscall.EPOLLONESHOT != 0 {
+-		p.ctlEvent.Fd = int32(fd)
+-		p.ctlEvent.Events = events
+-		if err := syscall.EpollCtl(p.epfd, syscall.EPOLL_CTL_MOD, fd, &p.ctlEvent); err != nil {
+-			print("Epoll modify fd=", fd, ": ", err.Error(), "\n")
+-		}
+-		p.events[fd] = events
+-	} else {
+-		if err := syscall.EpollCtl(p.epfd, syscall.EPOLL_CTL_DEL, fd, nil); err != nil {
+-			print("Epoll delete fd=", fd, ": ", err.Error(), "\n")
+-		}
+-		delete(p.events, fd)
+-	}
+-}
+-
+-func (p *pollster) DelFD(fd int, mode int) bool {
+-	// pollServer is locked.
+-
+-	if mode == 'r' {
+-		p.StopWaiting(fd, readFlags)
+-	} else {
+-		p.StopWaiting(fd, writeFlags)
+-	}
+-
+-	// Discard any queued up events.
+-	i := 0
+-	for i < len(p.waitEvents) {
+-		if fd == int(p.waitEvents[i].Fd) {
+-			copy(p.waitEvents[i:], p.waitEvents[i+1:])
+-			p.waitEvents = p.waitEvents[:len(p.waitEvents)-1]
+-		} else {
+-			i++
+-		}
+-	}
+-	return false
+-}
+-
+-func (p *pollster) WaitFD(s *pollServer, nsec int64) (fd int, mode int, err error) {
+-	for len(p.waitEvents) == 0 {
+-		var msec int = -1
+-		if nsec > 0 {
+-			msec = int((nsec + 1e6 - 1) / 1e6)
+-		}
+-
+-		s.Unlock()
+-		n, err := syscall.EpollWait(p.epfd, p.waitEventBuf[0:], msec)
+-		s.Lock()
+-
+-		if err != nil {
+-			if err == syscall.EAGAIN || err == syscall.EINTR {
+-				continue
+-			}
+-			return -1, 0, os.NewSyscallError("epoll_wait", err)
+-		}
+-		if n == 0 {
+-			return -1, 0, nil
+-		}
+-		p.waitEvents = p.waitEventBuf[0:n]
+-	}
+-
+-	ev := &p.waitEvents[0]
+-	p.waitEvents = p.waitEvents[1:]
+-
+-	fd = int(ev.Fd)
+-
+-	if ev.Events&writeFlags != 0 {
+-		p.StopWaiting(fd, writeFlags)
+-		return fd, 'w', nil
+-	}
+-	if ev.Events&readFlags != 0 {
+-		p.StopWaiting(fd, readFlags)
+-		return fd, 'r', nil
+-	}
+-
+-	// Other events are error conditions - wake whoever is waiting.
+-	events, _ := p.events[fd]
+-	if events&writeFlags != 0 {
+-		p.StopWaiting(fd, writeFlags)
+-		return fd, 'w', nil
+-	}
+-	p.StopWaiting(fd, readFlags)
+-	return fd, 'r', nil
+-}
+-
+-func (p *pollster) Close() error {
+-	return os.NewSyscallError("close", syscall.Close(p.epfd))
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_plan9.go gcc-4.8.1/libgo/go/net/fd_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_plan9.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -23,28 +23,22 @@
+ func sysInit() {
+ }
+ 
+-func dialTimeout(net, addr string, timeout time.Duration) (Conn, error) {
++func resolveAndDial(net, addr string, localAddr Addr, deadline time.Time) (Conn, error) {
+ 	// On plan9, use the relatively inefficient
+ 	// goroutine-racing implementation.
+-	return dialTimeoutRace(net, addr, timeout)
++	return resolveAndDialChannel(net, addr, localAddr, deadline)
+ }
+ 
+-func newFD(proto, name string, ctl *os.File, laddr, raddr Addr) *netFD {
+-	return &netFD{proto, name, "/net/" + proto + "/" + name, ctl, nil, laddr, raddr}
++func newFD(proto, name string, ctl, data *os.File, laddr, raddr Addr) *netFD {
++	return &netFD{proto, name, "/net/" + proto + "/" + name, ctl, data, laddr, raddr}
+ }
+ 
+ func (fd *netFD) ok() bool { return fd != nil && fd.ctl != nil }
+ 
+ func (fd *netFD) Read(b []byte) (n int, err error) {
+-	if !fd.ok() {
++	if !fd.ok() || fd.data == nil {
+ 		return 0, syscall.EINVAL
+ 	}
+-	if fd.data == nil {
+-		fd.data, err = os.OpenFile(fd.dir+"/data", os.O_RDWR, 0)
+-		if err != nil {
+-			return 0, err
+-		}
+-	}
+ 	n, err = fd.data.Read(b)
+ 	if fd.proto == "udp" && err == io.EOF {
+ 		n = 0
+@@ -54,15 +48,9 @@
+ }
+ 
+ func (fd *netFD) Write(b []byte) (n int, err error) {
+-	if !fd.ok() {
++	if !fd.ok() || fd.data == nil {
+ 		return 0, syscall.EINVAL
+ 	}
+-	if fd.data == nil {
+-		fd.data, err = os.OpenFile(fd.dir+"/data", os.O_RDWR, 0)
+-		if err != nil {
+-			return 0, err
+-		}
+-	}
+ 	return fd.data.Write(b)
+ }
+ 
+@@ -85,19 +73,39 @@
+ 		return syscall.EINVAL
+ 	}
+ 	err := fd.ctl.Close()
+-	if err != nil {
+-		return err
+-	}
+ 	if fd.data != nil {
+-		err = fd.data.Close()
++		if err1 := fd.data.Close(); err1 != nil && err == nil {
++			err = err1
++		}
+ 	}
+ 	fd.ctl = nil
+ 	fd.data = nil
+ 	return err
+ }
+ 
++// This method is only called via Conn.
+ func (fd *netFD) dup() (*os.File, error) {
+-	return nil, syscall.EPLAN9
++	if !fd.ok() || fd.data == nil {
++		return nil, syscall.EINVAL
++	}
++	return fd.file(fd.data, fd.dir+"/data")
++}
++
++func (l *TCPListener) dup() (*os.File, error) {
++	if !l.fd.ok() {
++		return nil, syscall.EINVAL
++	}
++	return l.fd.file(l.fd.ctl, l.fd.dir+"/ctl")
++}
++
++func (fd *netFD) file(f *os.File, s string) (*os.File, error) {
++	syscall.ForkLock.RLock()
++	dfd, err := syscall.Dup(int(f.Fd()), -1)
++	syscall.ForkLock.RUnlock()
++	if err != nil {
++		return nil, &OpError{"dup", s, fd.laddr, err}
++	}
++	return os.NewFile(uintptr(dfd), s), nil
+ }
+ 
+ func setDeadline(fd *netFD, t time.Time) error {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_poll_runtime.go gcc-4.8.1/libgo/go/net/fd_poll_runtime.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_poll_runtime.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_poll_runtime.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,119 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin linux
++
++package net
++
++import (
++	"sync"
++	"syscall"
++	"time"
++)
++
++func runtime_pollServerInit()
++func runtime_pollOpen(fd int) (uintptr, int)
++func runtime_pollClose(ctx uintptr)
++func runtime_pollWait(ctx uintptr, mode int) int
++func runtime_pollReset(ctx uintptr, mode int) int
++func runtime_pollSetDeadline(ctx uintptr, d int64, mode int)
++func runtime_pollUnblock(ctx uintptr)
++
++var canCancelIO = true // used for testing current package
++
++type pollDesc struct {
++	runtimeCtx uintptr
++}
++
++var serverInit sync.Once
++
++func sysInit() {
++}
++
++func (pd *pollDesc) Init(fd *netFD) error {
++	serverInit.Do(runtime_pollServerInit)
++	ctx, errno := runtime_pollOpen(fd.sysfd)
++	if errno != 0 {
++		return syscall.Errno(errno)
++	}
++	pd.runtimeCtx = ctx
++	return nil
++}
++
++func (pd *pollDesc) Close() {
++	runtime_pollClose(pd.runtimeCtx)
++}
++
++func (pd *pollDesc) Lock() {
++}
++
++func (pd *pollDesc) Unlock() {
++}
++
++func (pd *pollDesc) Wakeup() {
++}
++
++// Evict evicts fd from the pending list, unblocking any I/O running on fd.
++// Return value is whether the pollServer should be woken up.
++func (pd *pollDesc) Evict() bool {
++	runtime_pollUnblock(pd.runtimeCtx)
++	return false
++}
++
++func (pd *pollDesc) PrepareRead() error {
++	res := runtime_pollReset(pd.runtimeCtx, 'r')
++	return convertErr(res)
++}
++
++func (pd *pollDesc) PrepareWrite() error {
++	res := runtime_pollReset(pd.runtimeCtx, 'w')
++	return convertErr(res)
++}
++
++func (pd *pollDesc) WaitRead() error {
++	res := runtime_pollWait(pd.runtimeCtx, 'r')
++	return convertErr(res)
++}
++
++func (pd *pollDesc) WaitWrite() error {
++	res := runtime_pollWait(pd.runtimeCtx, 'w')
++	return convertErr(res)
++}
++
++func convertErr(res int) error {
++	switch res {
++	case 0:
++		return nil
++	case 1:
++		return errClosing
++	case 2:
++		return errTimeout
++	}
++	panic("unreachable")
++}
++
++func setReadDeadline(fd *netFD, t time.Time) error {
++	return setDeadlineImpl(fd, t, 'r')
++}
++
++func setWriteDeadline(fd *netFD, t time.Time) error {
++	return setDeadlineImpl(fd, t, 'w')
++}
++
++func setDeadline(fd *netFD, t time.Time) error {
++	return setDeadlineImpl(fd, t, 'r'+'w')
++}
++
++func setDeadlineImpl(fd *netFD, t time.Time, mode int) error {
++	d := t.UnixNano()
++	if t.IsZero() {
++		d = 0
++	}
++	if err := fd.incref(false); err != nil {
++		return err
++	}
++	runtime_pollSetDeadline(fd.pd.runtimeCtx, d, mode)
++	fd.decref()
++	return nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_poll_unix.go gcc-4.8.1/libgo/go/net/fd_poll_unix.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_poll_unix.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_poll_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,360 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build freebsd netbsd openbsd
++
++package net
++
++import (
++	"os"
++	"runtime"
++	"sync"
++	"syscall"
++	"time"
++)
++
++// A pollServer helps FDs determine when to retry a non-blocking
++// read or write after they get EAGAIN.  When an FD needs to wait,
++// call s.WaitRead() or s.WaitWrite() to pass the request to the poll server.
++// When the pollServer finds that i/o on FD should be possible
++// again, it will send on fd.cr/fd.cw to wake any waiting goroutines.
++//
++// To avoid races in closing, all fd operations are locked and
++// refcounted. when netFD.Close() is called, it calls syscall.Shutdown
++// and sets a closing flag. Only when the last reference is removed
++// will the fd be closed.
++
++type pollServer struct {
++	pr, pw     *os.File
++	poll       *pollster // low-level OS hooks
++	sync.Mutex           // controls pending and deadline
++	pending    map[int]*pollDesc
++	deadline   int64 // next deadline (nsec since 1970)
++}
++
++// A pollDesc contains netFD state related to pollServer.
++type pollDesc struct {
++	// immutable after Init()
++	pollServer *pollServer
++	sysfd      int
++	cr, cw     chan error
++
++	// mutable, protected by pollServer mutex
++	closing  bool
++	ncr, ncw int
++
++	// mutable, safe for concurrent access
++	rdeadline, wdeadline deadline
++}
++
++func newPollServer() (s *pollServer, err error) {
++	s = new(pollServer)
++	if s.pr, s.pw, err = os.Pipe(); err != nil {
++		return nil, err
++	}
++	if err = syscall.SetNonblock(int(s.pr.Fd()), true); err != nil {
++		goto Errno
++	}
++	if err = syscall.SetNonblock(int(s.pw.Fd()), true); err != nil {
++		goto Errno
++	}
++	if s.poll, err = newpollster(); err != nil {
++		goto Error
++	}
++	if _, err = s.poll.AddFD(int(s.pr.Fd()), 'r', true); err != nil {
++		s.poll.Close()
++		goto Error
++	}
++	s.pending = make(map[int]*pollDesc)
++	go s.Run()
++	return s, nil
++
++Errno:
++	err = &os.PathError{
++		Op:   "setnonblock",
++		Path: s.pr.Name(),
++		Err:  err,
++	}
++Error:
++	s.pr.Close()
++	s.pw.Close()
++	return nil, err
++}
++
++func (s *pollServer) AddFD(pd *pollDesc, mode int) error {
++	s.Lock()
++	intfd := pd.sysfd
++	if intfd < 0 || pd.closing {
++		// fd closed underfoot
++		s.Unlock()
++		return errClosing
++	}
++
++	var t int64
++	key := intfd << 1
++	if mode == 'r' {
++		pd.ncr++
++		t = pd.rdeadline.value()
++	} else {
++		pd.ncw++
++		key++
++		t = pd.wdeadline.value()
++	}
++	s.pending[key] = pd
++	doWakeup := false
++	if t > 0 && (s.deadline == 0 || t < s.deadline) {
++		s.deadline = t
++		doWakeup = true
++	}
++
++	wake, err := s.poll.AddFD(intfd, mode, false)
++	s.Unlock()
++	if err != nil {
++		return err
++	}
++	if wake || doWakeup {
++		s.Wakeup()
++	}
++	return nil
++}
++
++// Evict evicts pd from the pending list, unblocking
++// any I/O running on pd.  The caller must have locked
++// pollserver.
++// Return value is whether the pollServer should be woken up.
++func (s *pollServer) Evict(pd *pollDesc) bool {
++	pd.closing = true
++	doWakeup := false
++	if s.pending[pd.sysfd<<1] == pd {
++		s.WakeFD(pd, 'r', errClosing)
++		if s.poll.DelFD(pd.sysfd, 'r') {
++			doWakeup = true
++		}
++		delete(s.pending, pd.sysfd<<1)
++	}
++	if s.pending[pd.sysfd<<1|1] == pd {
++		s.WakeFD(pd, 'w', errClosing)
++		if s.poll.DelFD(pd.sysfd, 'w') {
++			doWakeup = true
++		}
++		delete(s.pending, pd.sysfd<<1|1)
++	}
++	return doWakeup
++}
++
++var wakeupbuf [1]byte
++
++func (s *pollServer) Wakeup() { s.pw.Write(wakeupbuf[0:]) }
++
++func (s *pollServer) LookupFD(fd int, mode int) *pollDesc {
++	key := fd << 1
++	if mode == 'w' {
++		key++
++	}
++	netfd, ok := s.pending[key]
++	if !ok {
++		return nil
++	}
++	delete(s.pending, key)
++	return netfd
++}
++
++func (s *pollServer) WakeFD(pd *pollDesc, mode int, err error) {
++	if mode == 'r' {
++		for pd.ncr > 0 {
++			pd.ncr--
++			pd.cr <- err
++		}
++	} else {
++		for pd.ncw > 0 {
++			pd.ncw--
++			pd.cw <- err
++		}
++	}
++}
++
++func (s *pollServer) CheckDeadlines() {
++	now := time.Now().UnixNano()
++	// TODO(rsc): This will need to be handled more efficiently,
++	// probably with a heap indexed by wakeup time.
++
++	var nextDeadline int64
++	for key, pd := range s.pending {
++		var t int64
++		var mode int
++		if key&1 == 0 {
++			mode = 'r'
++		} else {
++			mode = 'w'
++		}
++		if mode == 'r' {
++			t = pd.rdeadline.value()
++		} else {
++			t = pd.wdeadline.value()
++		}
++		if t > 0 {
++			if t <= now {
++				delete(s.pending, key)
++				s.poll.DelFD(pd.sysfd, mode)
++				s.WakeFD(pd, mode, errTimeout)
++			} else if nextDeadline == 0 || t < nextDeadline {
++				nextDeadline = t
++			}
++		}
++	}
++	s.deadline = nextDeadline
++}
++
++func (s *pollServer) Run() {
++	var scratch [100]byte
++	s.Lock()
++	defer s.Unlock()
++	for {
++		var timeout int64 // nsec to wait for or 0 for none
++		if s.deadline > 0 {
++			timeout = s.deadline - time.Now().UnixNano()
++			if timeout <= 0 {
++				s.CheckDeadlines()
++				continue
++			}
++		}
++		fd, mode, err := s.poll.WaitFD(s, timeout)
++		if err != nil {
++			print("pollServer WaitFD: ", err.Error(), "\n")
++			return
++		}
++		if fd < 0 {
++			// Timeout happened.
++			s.CheckDeadlines()
++			continue
++		}
++		if fd == int(s.pr.Fd()) {
++			// Drain our wakeup pipe (we could loop here,
++			// but it's unlikely that there are more than
++			// len(scratch) wakeup calls).
++			s.pr.Read(scratch[0:])
++			s.CheckDeadlines()
++		} else {
++			pd := s.LookupFD(fd, mode)
++			if pd == nil {
++				// This can happen because the WaitFD runs without
++				// holding s's lock, so there might be a pending wakeup
++				// for an fd that has been evicted.  No harm done.
++				continue
++			}
++			s.WakeFD(pd, mode, nil)
++		}
++	}
++}
++
++func (pd *pollDesc) Close() {
++}
++
++func (pd *pollDesc) Lock() {
++	pd.pollServer.Lock()
++}
++
++func (pd *pollDesc) Unlock() {
++	pd.pollServer.Unlock()
++}
++
++func (pd *pollDesc) Wakeup() {
++	pd.pollServer.Wakeup()
++}
++
++func (pd *pollDesc) PrepareRead() error {
++	if pd.rdeadline.expired() {
++		return errTimeout
++	}
++	return nil
++}
++
++func (pd *pollDesc) PrepareWrite() error {
++	if pd.wdeadline.expired() {
++		return errTimeout
++	}
++	return nil
++}
++
++func (pd *pollDesc) WaitRead() error {
++	err := pd.pollServer.AddFD(pd, 'r')
++	if err == nil {
++		err = <-pd.cr
++	}
++	return err
++}
++
++func (pd *pollDesc) WaitWrite() error {
++	err := pd.pollServer.AddFD(pd, 'w')
++	if err == nil {
++		err = <-pd.cw
++	}
++	return err
++}
++
++func (pd *pollDesc) Evict() bool {
++	return pd.pollServer.Evict(pd)
++}
++
++// Spread network FDs over several pollServers.
++
++var pollMaxN int
++var pollservers []*pollServer
++var startServersOnce []func()
++
++var canCancelIO = true // used for testing current package
++
++func sysInit() {
++	pollMaxN = runtime.NumCPU()
++	if pollMaxN > 8 {
++		pollMaxN = 8 // No improvement then.
++	}
++	pollservers = make([]*pollServer, pollMaxN)
++	startServersOnce = make([]func(), pollMaxN)
++	for i := 0; i < pollMaxN; i++ {
++		k := i
++		once := new(sync.Once)
++		startServersOnce[i] = func() { once.Do(func() { startServer(k) }) }
++	}
++}
++
++func startServer(k int) {
++	p, err := newPollServer()
++	if err != nil {
++		panic(err)
++	}
++	pollservers[k] = p
++}
++
++func (pd *pollDesc) Init(fd *netFD) error {
++	pollN := runtime.GOMAXPROCS(0)
++	if pollN > pollMaxN {
++		pollN = pollMaxN
++	}
++	k := fd.sysfd % pollN
++	startServersOnce[k]()
++	pd.sysfd = fd.sysfd
++	pd.pollServer = pollservers[k]
++	pd.cr = make(chan error, 1)
++	pd.cw = make(chan error, 1)
++	return nil
++}
++
++// TODO(dfc) these unused error returns could be removed
++
++func setReadDeadline(fd *netFD, t time.Time) error {
++	fd.pd.rdeadline.setTime(t)
++	return nil
++}
++
++func setWriteDeadline(fd *netFD, t time.Time) error {
++	fd.pd.wdeadline.setTime(t)
++	return nil
++}
++
++func setDeadline(fd *netFD, t time.Time) error {
++	setReadDeadline(fd, t)
++	setWriteDeadline(fd, t)
++	return nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_unix.go gcc-4.8.1/libgo/go/net/fd_unix.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_unix.go	2013-02-06 16:40:18.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,7 +9,6 @@
+ import (
+ 	"io"
+ 	"os"
+-	"runtime"
+ 	"sync"
+ 	"syscall"
+ 	"time"
+@@ -21,7 +20,7 @@
+ 	sysmu  sync.Mutex
+ 	sysref int
+ 
+-	// must lock both sysmu and pollserver to write
++	// must lock both sysmu and pollDesc to write
+ 	// can lock either to read
+ 	closing bool
+ 
+@@ -31,8 +30,6 @@
+ 	sotype      int
+ 	isConnected bool
+ 	sysfile     *os.File
+-	cr          chan error
+-	cw          chan error
+ 	net         string
+ 	laddr       Addr
+ 	raddr       Addr
+@@ -40,269 +37,16 @@
+ 	// serialize access to Read and Write methods
+ 	rio, wio sync.Mutex
+ 
+-	// read and write deadlines
+-	rdeadline, wdeadline deadline
+-
+-	// owned by fd wait server
+-	ncr, ncw int
+-
+ 	// wait server
+-	pollServer *pollServer
++	pd pollDesc
+ }
+ 
+-// A pollServer helps FDs determine when to retry a non-blocking
+-// read or write after they get EAGAIN.  When an FD needs to wait,
+-// call s.WaitRead() or s.WaitWrite() to pass the request to the poll server.
+-// When the pollServer finds that i/o on FD should be possible
+-// again, it will send on fd.cr/fd.cw to wake any waiting goroutines.
+-//
+-// To avoid races in closing, all fd operations are locked and
+-// refcounted. when netFD.Close() is called, it calls syscall.Shutdown
+-// and sets a closing flag. Only when the last reference is removed
+-// will the fd be closed.
+-
+-type pollServer struct {
+-	pr, pw     *os.File
+-	poll       *pollster // low-level OS hooks
+-	sync.Mutex           // controls pending and deadline
+-	pending    map[int]*netFD
+-	deadline   int64 // next deadline (nsec since 1970)
+-}
+-
+-func (s *pollServer) AddFD(fd *netFD, mode int) error {
+-	s.Lock()
+-	intfd := fd.sysfd
+-	if intfd < 0 || fd.closing {
+-		// fd closed underfoot
+-		s.Unlock()
+-		return errClosing
+-	}
+-
+-	var t int64
+-	key := intfd << 1
+-	if mode == 'r' {
+-		fd.ncr++
+-		t = fd.rdeadline.value()
+-	} else {
+-		fd.ncw++
+-		key++
+-		t = fd.wdeadline.value()
+-	}
+-	s.pending[key] = fd
+-	doWakeup := false
+-	if t > 0 && (s.deadline == 0 || t < s.deadline) {
+-		s.deadline = t
+-		doWakeup = true
+-	}
+-
+-	wake, err := s.poll.AddFD(intfd, mode, false)
+-	s.Unlock()
+-	if err != nil {
+-		return &OpError{"addfd", fd.net, fd.laddr, err}
+-	}
+-	if wake || doWakeup {
+-		s.Wakeup()
+-	}
+-	return nil
+-}
+-
+-// Evict evicts fd from the pending list, unblocking
+-// any I/O running on fd.  The caller must have locked
+-// pollserver.
+-func (s *pollServer) Evict(fd *netFD) {
+-	doWakeup := false
+-	if s.pending[fd.sysfd<<1] == fd {
+-		s.WakeFD(fd, 'r', errClosing)
+-		if s.poll.DelFD(fd.sysfd, 'r') {
+-			doWakeup = true
+-		}
+-		delete(s.pending, fd.sysfd<<1)
+-	}
+-	if s.pending[fd.sysfd<<1|1] == fd {
+-		s.WakeFD(fd, 'w', errClosing)
+-		if s.poll.DelFD(fd.sysfd, 'w') {
+-			doWakeup = true
+-		}
+-		delete(s.pending, fd.sysfd<<1|1)
+-	}
+-	if doWakeup {
+-		s.Wakeup()
+-	}
+-}
+-
+-var wakeupbuf [1]byte
+-
+-func (s *pollServer) Wakeup() { s.pw.Write(wakeupbuf[0:]) }
+-
+-func (s *pollServer) LookupFD(fd int, mode int) *netFD {
+-	key := fd << 1
+-	if mode == 'w' {
+-		key++
+-	}
+-	netfd, ok := s.pending[key]
+-	if !ok {
+-		return nil
+-	}
+-	delete(s.pending, key)
+-	return netfd
+-}
+-
+-func (s *pollServer) WakeFD(fd *netFD, mode int, err error) {
+-	if mode == 'r' {
+-		for fd.ncr > 0 {
+-			fd.ncr--
+-			fd.cr <- err
+-		}
+-	} else {
+-		for fd.ncw > 0 {
+-			fd.ncw--
+-			fd.cw <- err
+-		}
+-	}
+-}
+-
+-func (s *pollServer) CheckDeadlines() {
+-	now := time.Now().UnixNano()
+-	// TODO(rsc): This will need to be handled more efficiently,
+-	// probably with a heap indexed by wakeup time.
+-
+-	var nextDeadline int64
+-	for key, fd := range s.pending {
+-		var t int64
+-		var mode int
+-		if key&1 == 0 {
+-			mode = 'r'
+-		} else {
+-			mode = 'w'
+-		}
+-		if mode == 'r' {
+-			t = fd.rdeadline.value()
+-		} else {
+-			t = fd.wdeadline.value()
+-		}
+-		if t > 0 {
+-			if t <= now {
+-				delete(s.pending, key)
+-				if mode == 'r' {
+-					s.poll.DelFD(fd.sysfd, mode)
+-				} else {
+-					s.poll.DelFD(fd.sysfd, mode)
+-				}
+-				s.WakeFD(fd, mode, errTimeout)
+-			} else if nextDeadline == 0 || t < nextDeadline {
+-				nextDeadline = t
+-			}
+-		}
+-	}
+-	s.deadline = nextDeadline
+-}
+-
+-func (s *pollServer) Run() {
+-	var scratch [100]byte
+-	s.Lock()
+-	defer s.Unlock()
+-	for {
+-		var timeout int64 // nsec to wait for or 0 for none
+-		if s.deadline > 0 {
+-			timeout = s.deadline - time.Now().UnixNano()
+-			if timeout <= 0 {
+-				s.CheckDeadlines()
+-				continue
+-			}
+-		}
+-		fd, mode, err := s.poll.WaitFD(s, timeout)
+-		if err != nil {
+-			print("pollServer WaitFD: ", err.Error(), "\n")
+-			return
+-		}
+-		if fd < 0 {
+-			// Timeout happened.
+-			s.CheckDeadlines()
+-			continue
+-		}
+-		if fd == int(s.pr.Fd()) {
+-			// Drain our wakeup pipe (we could loop here,
+-			// but it's unlikely that there are more than
+-			// len(scratch) wakeup calls).
+-			s.pr.Read(scratch[0:])
+-			s.CheckDeadlines()
+-		} else {
+-			netfd := s.LookupFD(fd, mode)
+-			if netfd == nil {
+-				// This can happen because the WaitFD runs without
+-				// holding s's lock, so there might be a pending wakeup
+-				// for an fd that has been evicted.  No harm done.
+-				continue
+-			}
+-			s.WakeFD(netfd, mode, nil)
+-		}
+-	}
+-}
+-
+-func (s *pollServer) WaitRead(fd *netFD) error {
+-	err := s.AddFD(fd, 'r')
+-	if err == nil {
+-		err = <-fd.cr
+-	}
+-	return err
+-}
+-
+-func (s *pollServer) WaitWrite(fd *netFD) error {
+-	err := s.AddFD(fd, 'w')
+-	if err == nil {
+-		err = <-fd.cw
+-	}
+-	return err
+-}
+-
+-// Network FD methods.
+-// Spread network FDs over several pollServers.
+-
+-var pollMaxN int
+-var pollservers []*pollServer
+-var startServersOnce []func()
+-
+-var canCancelIO = true // used for testing current package
+-
+-func sysInit() {
+-	pollMaxN = runtime.NumCPU()
+-	if pollMaxN > 8 {
+-		pollMaxN = 8 // No improvement then.
+-	}
+-	pollservers = make([]*pollServer, pollMaxN)
+-	startServersOnce = make([]func(), pollMaxN)
+-	for i := 0; i < pollMaxN; i++ {
+-		k := i
+-		once := new(sync.Once)
+-		startServersOnce[i] = func() { once.Do(func() { startServer(k) }) }
+-	}
+-}
+-
+-func startServer(k int) {
+-	p, err := newPollServer()
+-	if err != nil {
+-		panic(err)
+-	}
+-	pollservers[k] = p
+-}
+-
+-func server(fd int) *pollServer {
+-	pollN := runtime.GOMAXPROCS(0)
+-	if pollN > pollMaxN {
+-		pollN = pollMaxN
+-	}
+-	k := fd % pollN
+-	startServersOnce[k]()
+-	return pollservers[k]
+-}
+-
+-func dialTimeout(net, addr string, timeout time.Duration) (Conn, error) {
+-	deadline := time.Now().Add(timeout)
+-	_, addri, err := resolveNetAddr("dial", net, addr, deadline)
++func resolveAndDial(net, addr string, localAddr Addr, deadline time.Time) (Conn, error) {
++	ra, err := resolveAddr("dial", net, addr, deadline)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return dialAddr(net, addr, addri, deadline)
++	return dial(net, addr, localAddr, ra, deadline)
+ }
+ 
+ func newFD(fd, family, sotype int, net string) (*netFD, error) {
+@@ -312,9 +56,9 @@
+ 		sotype: sotype,
+ 		net:    net,
+ 	}
+-	netfd.cr = make(chan error, 1)
+-	netfd.cw = make(chan error, 1)
+-	netfd.pollServer = server(fd)
++	if err := netfd.pd.Init(netfd); err != nil {
++		return nil, err
++	}
+ 	return netfd, nil
+ }
+ 
+@@ -335,26 +79,29 @@
+ 	return fd.net + ":" + ls + "->" + rs
+ }
+ 
+-func (fd *netFD) connect(ra syscall.Sockaddr) error {
+-	err := syscall.Connect(fd.sysfd, ra)
+-	if err == syscall.EINPROGRESS {
+-		if err = fd.pollServer.WaitWrite(fd); err != nil {
+-			return err
++func (fd *netFD) connect(la, ra syscall.Sockaddr) error {
++	fd.wio.Lock()
++	defer fd.wio.Unlock()
++	if err := fd.pd.PrepareWrite(); err != nil {
++		return err
++	}
++	for {
++		err := syscall.Connect(fd.sysfd, ra)
++		if err == nil || err == syscall.EISCONN {
++			break
+ 		}
+-		var e int
+-		e, err = syscall.GetsockoptInt(fd.sysfd, syscall.SOL_SOCKET, syscall.SO_ERROR)
+-		if err != nil {
+-			return os.NewSyscallError("getsockopt", err)
++		if err != syscall.EINPROGRESS && err != syscall.EALREADY && err != syscall.EINTR {
++			return err
+ 		}
+-		if e != 0 {
+-			err = syscall.Errno(e)
++		if err = fd.pd.WaitWrite(); err != nil {
++			return err
+ 		}
+ 	}
+-	return err
++	return nil
+ }
+ 
+ // Add a reference to this fd.
+-// If closing==true, pollserver must be locked; mark the fd as closing.
++// If closing==true, pollDesc must be locked; mark the fd as closing.
+ // Returns an error if the fd cannot be used.
+ func (fd *netFD) incref(closing bool) error {
+ 	fd.sysmu.Lock()
+@@ -375,28 +122,38 @@
+ func (fd *netFD) decref() {
+ 	fd.sysmu.Lock()
+ 	fd.sysref--
+-	if fd.closing && fd.sysref == 0 && fd.sysfile != nil {
+-		fd.sysfile.Close()
+-		fd.sysfile = nil
++	if fd.closing && fd.sysref == 0 {
++		// Poller may want to unregister fd in readiness notification mechanism,
++		// so this must be executed before sysfile.Close().
++		fd.pd.Close()
++		if fd.sysfile != nil {
++			fd.sysfile.Close()
++			fd.sysfile = nil
++		} else {
++			closesocket(fd.sysfd)
++		}
+ 		fd.sysfd = -1
+ 	}
+ 	fd.sysmu.Unlock()
+ }
+ 
+ func (fd *netFD) Close() error {
+-	fd.pollServer.Lock() // needed for both fd.incref(true) and pollserver.Evict
++	fd.pd.Lock() // needed for both fd.incref(true) and pollDesc.Evict
+ 	if err := fd.incref(true); err != nil {
+-		fd.pollServer.Unlock()
++		fd.pd.Unlock()
+ 		return err
+ 	}
+ 	// Unblock any I/O.  Once it all unblocks and returns,
+ 	// so that it cannot be referring to fd.sysfd anymore,
+ 	// the final decref will close fd.sysfd.  This should happen
+ 	// fairly quickly, since all the I/O is non-blocking, and any
+-	// attempts to block in the pollserver will return errClosing.
+-	fd.pollServer.Evict(fd)
+-	fd.pollServer.Unlock()
++	// attempts to block in the pollDesc will return errClosing.
++	doWakeup := fd.pd.Evict()
++	fd.pd.Unlock()
+ 	fd.decref()
++	if doWakeup {
++		fd.pd.Wakeup()
++	}
+ 	return nil
+ }
+ 
+@@ -427,16 +184,15 @@
+ 		return 0, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareRead(); err != nil {
++		return 0, &OpError{"read", fd.net, fd.raddr, err}
++	}
+ 	for {
+-		if fd.rdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		n, err = syscall.Read(int(fd.sysfd), p)
+ 		if err != nil {
+ 			n = 0
+ 			if err == syscall.EAGAIN {
+-				if err = fd.pollServer.WaitRead(fd); err == nil {
++				if err = fd.pd.WaitRead(); err == nil {
+ 					continue
+ 				}
+ 			}
+@@ -457,16 +213,15 @@
+ 		return 0, nil, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareRead(); err != nil {
++		return 0, nil, &OpError{"read", fd.net, fd.laddr, err}
++	}
+ 	for {
+-		if fd.rdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		n, sa, err = syscall.Recvfrom(fd.sysfd, p, 0)
+ 		if err != nil {
+ 			n = 0
+ 			if err == syscall.EAGAIN {
+-				if err = fd.pollServer.WaitRead(fd); err == nil {
++				if err = fd.pd.WaitRead(); err == nil {
+ 					continue
+ 				}
+ 			}
+@@ -487,16 +242,15 @@
+ 		return 0, 0, 0, nil, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareRead(); err != nil {
++		return 0, 0, 0, nil, &OpError{"read", fd.net, fd.laddr, err}
++	}
+ 	for {
+-		if fd.rdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		n, oobn, flags, sa, err = syscall.Recvmsg(fd.sysfd, p, oob, 0)
+ 		if err != nil {
+ 			// TODO(dfc) should n and oobn be set to 0
+ 			if err == syscall.EAGAIN {
+-				if err = fd.pollServer.WaitRead(fd); err == nil {
++				if err = fd.pd.WaitRead(); err == nil {
+ 					continue
+ 				}
+ 			}
+@@ -524,11 +278,10 @@
+ 		return 0, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareWrite(); err != nil {
++		return 0, &OpError{"write", fd.net, fd.raddr, err}
++	}
+ 	for {
+-		if fd.wdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		var n int
+ 		n, err = syscall.Write(int(fd.sysfd), p[nn:])
+ 		if n > 0 {
+@@ -538,7 +291,7 @@
+ 			break
+ 		}
+ 		if err == syscall.EAGAIN {
+-			if err = fd.pollServer.WaitWrite(fd); err == nil {
++			if err = fd.pd.WaitWrite(); err == nil {
+ 				continue
+ 			}
+ 		}
+@@ -564,14 +317,13 @@
+ 		return 0, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareWrite(); err != nil {
++		return 0, &OpError{"write", fd.net, fd.raddr, err}
++	}
+ 	for {
+-		if fd.wdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		err = syscall.Sendto(fd.sysfd, p, 0, sa)
+ 		if err == syscall.EAGAIN {
+-			if err = fd.pollServer.WaitWrite(fd); err == nil {
++			if err = fd.pd.WaitWrite(); err == nil {
+ 				continue
+ 			}
+ 		}
+@@ -592,14 +344,13 @@
+ 		return 0, 0, err
+ 	}
+ 	defer fd.decref()
++	if err := fd.pd.PrepareWrite(); err != nil {
++		return 0, 0, &OpError{"write", fd.net, fd.raddr, err}
++	}
+ 	for {
+-		if fd.wdeadline.expired() {
+-			err = errTimeout
+-			break
+-		}
+ 		err = syscall.Sendmsg(fd.sysfd, p, oob, sa, 0)
+ 		if err == syscall.EAGAIN {
+-			if err = fd.pollServer.WaitWrite(fd); err == nil {
++			if err = fd.pd.WaitWrite(); err == nil {
+ 				continue
+ 			}
+ 		}
+@@ -615,6 +366,8 @@
+ }
+ 
+ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (netfd *netFD, err error) {
++	fd.rio.Lock()
++	defer fd.rio.Unlock()
+ 	if err := fd.incref(false); err != nil {
+ 		return nil, err
+ 	}
+@@ -622,11 +375,14 @@
+ 
+ 	var s int
+ 	var rsa syscall.Sockaddr
++	if err = fd.pd.PrepareRead(); err != nil {
++		return nil, &OpError{"accept", fd.net, fd.laddr, err}
++	}
+ 	for {
+ 		s, rsa, err = accept(fd.sysfd)
+ 		if err != nil {
+ 			if err == syscall.EAGAIN {
+-				if err = fd.pollServer.WaitRead(fd); err == nil {
++				if err = fd.pd.WaitRead(); err == nil {
+ 					continue
+ 				}
+ 			} else if err == syscall.ECONNABORTED {
+@@ -659,6 +415,9 @@
+ 	syscall.ForkLock.RUnlock()
+ 
+ 	// We want blocking mode for the new fd, hence the double negative.
++	// This also puts the old fd into blocking mode, meaning that
++	// I/O will block the thread instead of letting us use the epoll server.
++	// Everything will still work, just with more threads.
+ 	if err = syscall.SetNonblock(ns, false); err != nil {
+ 		return nil, &OpError{"setnonblock", fd.net, fd.laddr, err}
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_unix_test.go gcc-4.8.1/libgo/go/net/fd_unix_test.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_unix_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_unix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -12,54 +12,6 @@
+ 	"testing"
+ )
+ 
+-// Issue 3590. netFd.AddFD should return an error
+-// from the underlying pollster rather than panicing.
+-func TestAddFDReturnsError(t *testing.T) {
+-	ln := newLocalListener(t).(*TCPListener)
+-	defer ln.Close()
+-	connected := make(chan bool)
+-	go func() {
+-		for {
+-			c, err := ln.Accept()
+-			if err != nil {
+-				return
+-			}
+-			connected <- true
+-			defer c.Close()
+-		}
+-	}()
+-
+-	c, err := DialTCP("tcp", nil, ln.Addr().(*TCPAddr))
+-	if err != nil {
+-		t.Fatal(err)
+-	}
+-	defer c.Close()
+-	<-connected
+-
+-	// replace c's pollServer with a closed version.
+-	ps, err := newPollServer()
+-	if err != nil {
+-		t.Fatal(err)
+-	}
+-	ps.poll.Close()
+-	c.conn.fd.pollServer = ps
+-
+-	var b [1]byte
+-	_, err = c.Read(b[:])
+-	if err, ok := err.(*OpError); ok {
+-		if err.Op == "addfd" {
+-			return
+-		}
+-		if err, ok := err.Err.(*OpError); ok {
+-			// the err is sometimes wrapped by another OpError
+-			if err.Op == "addfd" {
+-				return
+-			}
+-		}
+-	}
+-	t.Error("unexpected error:", err)
+-}
+-
+ var chkReadErrTests = []struct {
+ 	n        int
+ 	err      error
+diff -Naur gcc-4.8.1.orig/libgo/go/net/fd_windows.go gcc-4.8.1/libgo/go/net/fd_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/fd_windows.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/fd_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -37,6 +37,7 @@
+ 	}
+ 	canCancelIO = syscall.LoadCancelIoEx() == nil
+ 	if syscall.LoadGetAddrInfo() == nil {
++		lookupPort = newLookupPort
+ 		lookupIP = newLookupIP
+ 	}
+ }
+@@ -53,18 +54,17 @@
+ 	return syscall.LoadConnectEx() == nil
+ }
+ 
+-func dialTimeout(net, addr string, timeout time.Duration) (Conn, error) {
++func resolveAndDial(net, addr string, localAddr Addr, deadline time.Time) (Conn, error) {
+ 	if !canUseConnectEx(net) {
+ 		// Use the relatively inefficient goroutine-racing
+ 		// implementation of DialTimeout.
+-		return dialTimeoutRace(net, addr, timeout)
++		return resolveAndDialChannel(net, addr, localAddr, deadline)
+ 	}
+-	deadline := time.Now().Add(timeout)
+-	_, addri, err := resolveNetAddr("dial", net, addr, deadline)
++	ra, err := resolveAddr("dial", net, addr, deadline)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return dialAddr(net, addr, addri, deadline)
++	return dial(net, addr, localAddr, ra, deadline)
+ }
+ 
+ // Interface for all IO operations.
+@@ -137,12 +137,18 @@
+ 	iocp syscall.Handle
+ }
+ 
++func runtime_blockingSyscallHint()
++
+ func (s *resultSrv) Run() {
+ 	var o *syscall.Overlapped
+ 	var key uint32
+ 	var r ioResult
+ 	for {
+-		r.err = syscall.GetQueuedCompletionStatus(s.iocp, &(r.qty), &key, &o, syscall.INFINITE)
++		r.err = syscall.GetQueuedCompletionStatus(s.iocp, &(r.qty), &key, &o, 0)
++		if r.err == syscall.Errno(syscall.WAIT_TIMEOUT) && o == nil {
++			runtime_blockingSyscallHint()
++			r.err = syscall.GetQueuedCompletionStatus(s.iocp, &(r.qty), &key, &o, syscall.INFINITE)
++		}
+ 		switch {
+ 		case r.err == nil:
+ 			// Dequeued successfully completed IO packet.
+@@ -358,22 +364,23 @@
+ 	return "ConnectEx"
+ }
+ 
+-func (fd *netFD) connect(ra syscall.Sockaddr) error {
++func (fd *netFD) connect(la, ra syscall.Sockaddr) error {
+ 	if !canUseConnectEx(fd.net) {
+ 		return syscall.Connect(fd.sysfd, ra)
+ 	}
+ 	// ConnectEx windows API requires an unconnected, previously bound socket.
+-	var la syscall.Sockaddr
+-	switch ra.(type) {
+-	case *syscall.SockaddrInet4:
+-		la = &syscall.SockaddrInet4{}
+-	case *syscall.SockaddrInet6:
+-		la = &syscall.SockaddrInet6{}
+-	default:
+-		panic("unexpected type in connect")
+-	}
+-	if err := syscall.Bind(fd.sysfd, la); err != nil {
+-		return err
++	if la == nil {
++		switch ra.(type) {
++		case *syscall.SockaddrInet4:
++			la = &syscall.SockaddrInet4{}
++		case *syscall.SockaddrInet6:
++			la = &syscall.SockaddrInet6{}
++		default:
++			panic("unexpected type in connect")
++		}
++		if err := syscall.Bind(fd.sysfd, la); err != nil {
++			return err
++		}
+ 	}
+ 	// Call ConnectEx API.
+ 	var o connectOp
+@@ -618,15 +625,10 @@
+ 	defer fd.decref()
+ 
+ 	// Get new socket.
+-	// See ../syscall/exec_unix.go for description of ForkLock.
+-	syscall.ForkLock.RLock()
+-	s, err := syscall.Socket(fd.family, fd.sotype, 0)
++	s, err := sysSocket(fd.family, fd.sotype, 0)
+ 	if err != nil {
+-		syscall.ForkLock.RUnlock()
+ 		return nil, &OpError{"socket", fd.net, fd.laddr, err}
+ 	}
+-	syscall.CloseOnExec(s)
+-	syscall.ForkLock.RUnlock()
+ 
+ 	// Associate our new socket with IOCP.
+ 	onceStartServer.Do(startServer)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/file_plan9.go gcc-4.8.1/libgo/go/net/file_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/file_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/file_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,16 +5,139 @@
+ package net
+ 
+ import (
++	"errors"
++	"io"
+ 	"os"
+ 	"syscall"
+ )
+ 
++func (fd *netFD) status(ln int) (string, error) {
++	if !fd.ok() {
++		return "", syscall.EINVAL
++	}
++
++	status, err := os.Open(fd.dir + "/status")
++	if err != nil {
++		return "", err
++	}
++	defer status.Close()
++	buf := make([]byte, ln)
++	n, err := io.ReadFull(status, buf[:])
++	if err != nil {
++		return "", err
++	}
++	return string(buf[:n]), nil
++}
++
++func newFileFD(f *os.File) (net *netFD, err error) {
++	var ctl *os.File
++	close := func(fd int) {
++		if err != nil {
++			syscall.Close(fd)
++		}
++	}
++
++	path, err := syscall.Fd2path(int(f.Fd()))
++	if err != nil {
++		return nil, os.NewSyscallError("fd2path", err)
++	}
++	comp := splitAtBytes(path, "/")
++	n := len(comp)
++	if n < 3 || comp[0] != "net" {
++		return nil, syscall.EPLAN9
++	}
++
++	name := comp[2]
++	switch file := comp[n-1]; file {
++	case "ctl", "clone":
++		syscall.ForkLock.RLock()
++		fd, err := syscall.Dup(int(f.Fd()), -1)
++		syscall.ForkLock.RUnlock()
++		if err != nil {
++			return nil, os.NewSyscallError("dup", err)
++		}
++		defer close(fd)
++
++		dir := "/net/" + comp[n-2]
++		ctl = os.NewFile(uintptr(fd), dir+"/"+file)
++		ctl.Seek(0, 0)
++		var buf [16]byte
++		n, err := ctl.Read(buf[:])
++		if err != nil {
++			return nil, err
++		}
++		name = string(buf[:n])
++	default:
++		if len(comp) < 4 {
++			return nil, errors.New("could not find control file for connection")
++		}
++		dir := "/net/" + comp[1] + "/" + name
++		ctl, err = os.OpenFile(dir+"/ctl", os.O_RDWR, 0)
++		if err != nil {
++			return nil, err
++		}
++		defer close(int(ctl.Fd()))
++	}
++	dir := "/net/" + comp[1] + "/" + name
++	laddr, err := readPlan9Addr(comp[1], dir+"/local")
++	if err != nil {
++		return nil, err
++	}
++	return newFD(comp[1], name, ctl, nil, laddr, nil), nil
++}
++
++func newFileConn(f *os.File) (c Conn, err error) {
++	fd, err := newFileFD(f)
++	if err != nil {
++		return nil, err
++	}
++	if !fd.ok() {
++		return nil, syscall.EINVAL
++	}
++
++	fd.data, err = os.OpenFile(fd.dir+"/data", os.O_RDWR, 0)
++	if err != nil {
++		return nil, err
++	}
++
++	switch fd.laddr.(type) {
++	case *TCPAddr:
++		return newTCPConn(fd), nil
++	case *UDPAddr:
++		return newUDPConn(fd), nil
++	}
++	return nil, syscall.EPLAN9
++}
++
++func newFileListener(f *os.File) (l Listener, err error) {
++	fd, err := newFileFD(f)
++	if err != nil {
++		return nil, err
++	}
++	switch fd.laddr.(type) {
++	case *TCPAddr:
++	default:
++		return nil, syscall.EPLAN9
++	}
++
++	// check that file corresponds to a listener
++	s, err := fd.status(len("Listen"))
++	if err != nil {
++		return nil, err
++	}
++	if s != "Listen" {
++		return nil, errors.New("file does not represent a listener")
++	}
++
++	return &TCPListener{fd}, nil
++}
++
+ // FileConn returns a copy of the network connection corresponding to
+ // the open file f.  It is the caller's responsibility to close f when
+ // finished.  Closing c does not affect f, and closing f does not
+ // affect c.
+ func FileConn(f *os.File) (c Conn, err error) {
+-	return nil, syscall.EPLAN9
++	return newFileConn(f)
+ }
+ 
+ // FileListener returns a copy of the network listener corresponding
+@@ -22,7 +145,7 @@
+ // when finished.  Closing l does not affect f, and closing f does not
+ // affect l.
+ func FileListener(f *os.File) (l Listener, err error) {
+-	return nil, syscall.EPLAN9
++	return newFileListener(f)
+ }
+ 
+ // FilePacketConn returns a copy of the packet network connection
+diff -Naur gcc-4.8.1.orig/libgo/go/net/file_test.go gcc-4.8.1/libgo/go/net/file_test.go
+--- gcc-4.8.1.orig/libgo/go/net/file_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/file_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -89,7 +89,7 @@
+ 
+ func TestFileListener(t *testing.T) {
+ 	switch runtime.GOOS {
+-	case "plan9", "windows":
++	case "windows":
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/net/file_windows.go gcc-4.8.1/libgo/go/net/file_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/file_windows.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/file_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,16 +9,28 @@
+ 	"syscall"
+ )
+ 
++// FileConn returns a copy of the network connection corresponding to
++// the open file f.  It is the caller's responsibility to close f when
++// finished.  Closing c does not affect f, and closing f does not
++// affect c.
+ func FileConn(f *os.File) (c Conn, err error) {
+ 	// TODO: Implement this
+ 	return nil, os.NewSyscallError("FileConn", syscall.EWINDOWS)
+ }
+ 
++// FileListener returns a copy of the network listener corresponding
++// to the open file f.  It is the caller's responsibility to close l
++// when finished.  Closing l does not affect f, and closing f does not
++// affect l.
+ func FileListener(f *os.File) (l Listener, err error) {
+ 	// TODO: Implement this
+ 	return nil, os.NewSyscallError("FileListener", syscall.EWINDOWS)
+ }
+ 
++// FilePacketConn returns a copy of the packet network connection
++// corresponding to the open file f.  It is the caller's
++// responsibility to close f when finished.  Closing c does not affect
++// f, and closing f does not affect c.
+ func FilePacketConn(f *os.File) (c PacketConn, err error) {
+ 	// TODO: Implement this
+ 	return nil, os.NewSyscallError("FilePacketConn", syscall.EWINDOWS)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cgi/host_test.go gcc-4.8.1/libgo/go/net/http/cgi/host_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cgi/host_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cgi/host_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -19,7 +19,6 @@
+ 	"runtime"
+ 	"strconv"
+ 	"strings"
+-	"syscall"
+ 	"testing"
+ 	"time"
+ )
+@@ -340,11 +339,7 @@
+ 	}
+ 
+ 	childRunning := func() bool {
+-		p, err := os.FindProcess(pid)
+-		if err != nil {
+-			return false
+-		}
+-		return p.Signal(syscall.Signal(0)) == nil
++		return isProcessRunning(t, pid)
+ 	}
+ 
+ 	if !childRunning() {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cgi/posix_test.go gcc-4.8.1/libgo/go/net/http/cgi/posix_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cgi/posix_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cgi/posix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,21 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build !plan9
++
++package cgi
++
++import (
++	"os"
++	"syscall"
++	"testing"
++)
++
++func isProcessRunning(t *testing.T, pid int) bool {
++	p, err := os.FindProcess(pid)
++	if err != nil {
++		return false
++	}
++	return p.Signal(syscall.Signal(0)) == nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cgi/testdata/test.cgi gcc-4.8.1/libgo/go/net/http/cgi/testdata/test.cgi
+--- gcc-4.8.1.orig/libgo/go/net/http/cgi/testdata/test.cgi	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cgi/testdata/test.cgi	2013-07-16 01:55:04.520470000 -0500
+@@ -24,7 +24,8 @@
+ print "\r\n";
+ 
+ if ($params->{"bigresponse"}) {
+-    for (1..1024) {
++    # 17 MB, for OS X: golang.org/issue/4958
++    for (1..(17 * 1024)) {
+         print "A" x 1024, "\r\n";
+     }
+     exit 0;
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/client.go gcc-4.8.1/libgo/go/net/http/client.go
+--- gcc-4.8.1.orig/libgo/go/net/http/client.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/client.go	2013-07-16 01:55:04.520470000 -0500
+@@ -19,12 +19,16 @@
+ 	"strings"
+ )
+ 
+-// A Client is an HTTP client. Its zero value (DefaultClient) is a usable client
+-// that uses DefaultTransport.
++// A Client is an HTTP client. Its zero value (DefaultClient) is a
++// usable client that uses DefaultTransport.
+ //
+-// The Client's Transport typically has internal state (cached
+-// TCP connections), so Clients should be reused instead of created as
++// The Client's Transport typically has internal state (cached TCP
++// connections), so Clients should be reused instead of created as
+ // needed. Clients are safe for concurrent use by multiple goroutines.
++//
++// A Client is higher-level than a RoundTripper (such as Transport)
++// and additionally handles HTTP details such as cookies and
++// redirects.
+ type Client struct {
+ 	// Transport specifies the mechanism by which individual
+ 	// HTTP requests are made.
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/client_test.go gcc-4.8.1/libgo/go/net/http/client_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/client_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/client_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -51,10 +51,10 @@
+ 			return b, err
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ func TestClient(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(robotsTxtHandler)
+ 	defer ts.Close()
+ 
+@@ -72,6 +72,7 @@
+ }
+ 
+ func TestClientHead(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(robotsTxtHandler)
+ 	defer ts.Close()
+ 
+@@ -94,6 +95,7 @@
+ }
+ 
+ func TestGetRequestFormat(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &recordingTransport{}
+ 	client := &Client{Transport: tr}
+ 	url := "http://dummy.faketld/"
+@@ -110,6 +112,7 @@
+ }
+ 
+ func TestPostRequestFormat(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &recordingTransport{}
+ 	client := &Client{Transport: tr}
+ 
+@@ -136,6 +139,7 @@
+ }
+ 
+ func TestPostFormRequestFormat(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &recordingTransport{}
+ 	client := &Client{Transport: tr}
+ 
+@@ -176,7 +180,8 @@
+ 	}
+ }
+ 
+-func TestRedirects(t *testing.T) {
++func TestClientRedirects(t *testing.T) {
++	defer afterTest(t)
+ 	var ts *httptest.Server
+ 	ts = httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		n, _ := strconv.Atoi(r.FormValue("n"))
+@@ -223,6 +228,7 @@
+ 	if err != nil {
+ 		t.Fatalf("Get error: %v", err)
+ 	}
++	res.Body.Close()
+ 	finalUrl := res.Request.URL.String()
+ 	if e, g := "<nil>", fmt.Sprintf("%v", err); e != g {
+ 		t.Errorf("with custom client, expected error %q, got %q", e, g)
+@@ -242,12 +248,14 @@
+ 	if res == nil {
+ 		t.Fatalf("Expected a non-nil Response on CheckRedirect failure (http://golang.org/issue/3795)")
+ 	}
++	res.Body.Close()
+ 	if res.Header.Get("Location") == "" {
+ 		t.Errorf("no Location header in Response")
+ 	}
+ }
+ 
+ func TestPostRedirects(t *testing.T) {
++	defer afterTest(t)
+ 	var log struct {
+ 		sync.Mutex
+ 		bytes.Buffer
+@@ -265,6 +273,7 @@
+ 			w.WriteHeader(code)
+ 		}
+ 	}))
++	defer ts.Close()
+ 	tests := []struct {
+ 		suffix string
+ 		want   int // response code
+@@ -364,6 +373,7 @@
+ }
+ 
+ func TestRedirectCookiesOnRequest(t *testing.T) {
++	defer afterTest(t)
+ 	var ts *httptest.Server
+ 	ts = httptest.NewServer(echoCookiesRedirectHandler)
+ 	defer ts.Close()
+@@ -381,6 +391,7 @@
+ }
+ 
+ func TestRedirectCookiesJar(t *testing.T) {
++	defer afterTest(t)
+ 	var ts *httptest.Server
+ 	ts = httptest.NewServer(echoCookiesRedirectHandler)
+ 	defer ts.Close()
+@@ -393,6 +404,7 @@
+ 	if err != nil {
+ 		t.Fatalf("Get: %v", err)
+ 	}
++	resp.Body.Close()
+ 	matchReturnedCookies(t, expectedCookies, resp.Cookies())
+ }
+ 
+@@ -416,6 +428,7 @@
+ }
+ 
+ func TestJarCalls(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		pathSuffix := r.RequestURI[1:]
+ 		if r.RequestURI == "/nosetcookie" {
+@@ -479,6 +492,7 @@
+ }
+ 
+ func TestStreamingGet(t *testing.T) {
++	defer afterTest(t)
+ 	say := make(chan string)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.(Flusher).Flush()
+@@ -529,6 +543,7 @@
+ // TestClientWrites verifies that client requests are buffered and we
+ // don't send a TCP packet per line of the http request + body.
+ func TestClientWrites(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 	}))
+ 	defer ts.Close()
+@@ -562,6 +577,7 @@
+ }
+ 
+ func TestClientInsecureTransport(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewTLSServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Write([]byte("Hello"))
+ 	}))
+@@ -576,15 +592,20 @@
+ 				InsecureSkipVerify: insecure,
+ 			},
+ 		}
++		defer tr.CloseIdleConnections()
+ 		c := &Client{Transport: tr}
+-		_, err := c.Get(ts.URL)
++		res, err := c.Get(ts.URL)
+ 		if (err == nil) != insecure {
+ 			t.Errorf("insecure=%v: got unexpected err=%v", insecure, err)
+ 		}
++		if res != nil {
++			res.Body.Close()
++		}
+ 	}
+ }
+ 
+ func TestClientErrorWithRequestURI(t *testing.T) {
++	defer afterTest(t)
+ 	req, _ := NewRequest("GET", "http://localhost:1234/", nil)
+ 	req.RequestURI = "/this/field/is/illegal/and/should/error/"
+ 	_, err := DefaultClient.Do(req)
+@@ -613,6 +634,7 @@
+ }
+ 
+ func TestClientWithCorrectTLSServerName(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewTLSServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.TLS.ServerName != "127.0.0.1" {
+ 			t.Errorf("expected client to set ServerName 127.0.0.1, got: %q", r.TLS.ServerName)
+@@ -627,6 +649,7 @@
+ }
+ 
+ func TestClientWithIncorrectTLSServerName(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewTLSServer(HandlerFunc(func(w ResponseWriter, r *Request) {}))
+ 	defer ts.Close()
+ 
+@@ -644,6 +667,7 @@
+ 
+ // Verify Response.ContentLength is populated. http://golang.org/issue/4126
+ func TestClientHeadContentLength(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if v := r.FormValue("cl"); v != "" {
+ 			w.Header().Set("Content-Length", v)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cookiejar/jar.go gcc-4.8.1/libgo/go/net/http/cookiejar/jar.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cookiejar/jar.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cookiejar/jar.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,497 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
++package cookiejar
++
++import (
++	"errors"
++	"fmt"
++	"net"
++	"net/http"
++	"net/url"
++	"sort"
++	"strings"
++	"sync"
++	"time"
++)
++
++// PublicSuffixList provides the public suffix of a domain. For example:
++//      - the public suffix of "example.com" is "com",
++//      - the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and
++//      - the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us".
++//
++// Implementations of PublicSuffixList must be safe for concurrent use by
++// multiple goroutines.
++//
++// An implementation that always returns "" is valid and may be useful for
++// testing but it is not secure: it means that the HTTP server for foo.com can
++// set a cookie for bar.com.
++//
++// A public suffix list implementation is in the package
++// code.google.com/p/go.net/publicsuffix.
++type PublicSuffixList interface {
++	// PublicSuffix returns the public suffix of domain.
++	//
++	// TODO: specify which of the caller and callee is responsible for IP
++	// addresses, for leading and trailing dots, for case sensitivity, and
++	// for IDN/Punycode.
++	PublicSuffix(domain string) string
++
++	// String returns a description of the source of this public suffix
++	// list. The description will typically contain something like a time
++	// stamp or version number.
++	String() string
++}
++
++// Options are the options for creating a new Jar.
++type Options struct {
++	// PublicSuffixList is the public suffix list that determines whether
++	// an HTTP server can set a cookie for a domain.
++	//
++	// A nil value is valid and may be useful for testing but it is not
++	// secure: it means that the HTTP server for foo.co.uk can set a cookie
++	// for bar.co.uk.
++	PublicSuffixList PublicSuffixList
++}
++
++// Jar implements the http.CookieJar interface from the net/http package.
++type Jar struct {
++	psList PublicSuffixList
++
++	// mu locks the remaining fields.
++	mu sync.Mutex
++
++	// entries is a set of entries, keyed by their eTLD+1 and subkeyed by
++	// their name/domain/path.
++	entries map[string]map[string]entry
++
++	// nextSeqNum is the next sequence number assigned to a new cookie
++	// created SetCookies.
++	nextSeqNum uint64
++}
++
++// New returns a new cookie jar. A nil *Options is equivalent to a zero
++// Options.
++func New(o *Options) (*Jar, error) {
++	jar := &Jar{
++		entries: make(map[string]map[string]entry),
++	}
++	if o != nil {
++		jar.psList = o.PublicSuffixList
++	}
++	return jar, nil
++}
++
++// entry is the internal representation of a cookie.
++//
++// This struct type is not used outside of this package per se, but the exported
++// fields are those of RFC 6265.
++type entry struct {
++	Name       string
++	Value      string
++	Domain     string
++	Path       string
++	Secure     bool
++	HttpOnly   bool
++	Persistent bool
++	HostOnly   bool
++	Expires    time.Time
++	Creation   time.Time
++	LastAccess time.Time
++
++	// seqNum is a sequence number so that Cookies returns cookies in a
++	// deterministic order, even for cookies that have equal Path length and
++	// equal Creation time. This simplifies testing.
++	seqNum uint64
++}
++
++// Id returns the domain;path;name triple of e as an id.
++func (e *entry) id() string {
++	return fmt.Sprintf("%s;%s;%s", e.Domain, e.Path, e.Name)
++}
++
++// shouldSend determines whether e's cookie qualifies to be included in a
++// request to host/path. It is the caller's responsibility to check if the
++// cookie is expired.
++func (e *entry) shouldSend(https bool, host, path string) bool {
++	return e.domainMatch(host) && e.pathMatch(path) && (https || !e.Secure)
++}
++
++// domainMatch implements "domain-match" of RFC 6265 section 5.1.3.
++func (e *entry) domainMatch(host string) bool {
++	if e.Domain == host {
++		return true
++	}
++	return !e.HostOnly && hasDotSuffix(host, e.Domain)
++}
++
++// pathMatch implements "path-match" according to RFC 6265 section 5.1.4.
++func (e *entry) pathMatch(requestPath string) bool {
++	if requestPath == e.Path {
++		return true
++	}
++	if strings.HasPrefix(requestPath, e.Path) {
++		if e.Path[len(e.Path)-1] == '/' {
++			return true // The "/any/" matches "/any/path" case.
++		} else if requestPath[len(e.Path)] == '/' {
++			return true // The "/any" matches "/any/path" case.
++		}
++	}
++	return false
++}
++
++// hasDotSuffix returns whether s ends in "."+suffix.
++func hasDotSuffix(s, suffix string) bool {
++	return len(s) > len(suffix) && s[len(s)-len(suffix)-1] == '.' && s[len(s)-len(suffix):] == suffix
++}
++
++// byPathLength is a []entry sort.Interface that sorts according to RFC 6265
++// section 5.4 point 2: by longest path and then by earliest creation time.
++type byPathLength []entry
++
++func (s byPathLength) Len() int { return len(s) }
++
++func (s byPathLength) Less(i, j int) bool {
++	if len(s[i].Path) != len(s[j].Path) {
++		return len(s[i].Path) > len(s[j].Path)
++	}
++	if !s[i].Creation.Equal(s[j].Creation) {
++		return s[i].Creation.Before(s[j].Creation)
++	}
++	return s[i].seqNum < s[j].seqNum
++}
++
++func (s byPathLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
++
++// Cookies implements the Cookies method of the http.CookieJar interface.
++//
++// It returns an empty slice if the URL's scheme is not HTTP or HTTPS.
++func (j *Jar) Cookies(u *url.URL) (cookies []*http.Cookie) {
++	return j.cookies(u, time.Now())
++}
++
++// cookies is like Cookies but takes the current time as a parameter.
++func (j *Jar) cookies(u *url.URL, now time.Time) (cookies []*http.Cookie) {
++	if u.Scheme != "http" && u.Scheme != "https" {
++		return cookies
++	}
++	host, err := canonicalHost(u.Host)
++	if err != nil {
++		return cookies
++	}
++	key := jarKey(host, j.psList)
++
++	j.mu.Lock()
++	defer j.mu.Unlock()
++
++	submap := j.entries[key]
++	if submap == nil {
++		return cookies
++	}
++
++	https := u.Scheme == "https"
++	path := u.Path
++	if path == "" {
++		path = "/"
++	}
++
++	modified := false
++	var selected []entry
++	for id, e := range submap {
++		if e.Persistent && !e.Expires.After(now) {
++			delete(submap, id)
++			modified = true
++			continue
++		}
++		if !e.shouldSend(https, host, path) {
++			continue
++		}
++		e.LastAccess = now
++		submap[id] = e
++		selected = append(selected, e)
++		modified = true
++	}
++	if modified {
++		if len(submap) == 0 {
++			delete(j.entries, key)
++		} else {
++			j.entries[key] = submap
++		}
++	}
++
++	sort.Sort(byPathLength(selected))
++	for _, e := range selected {
++		cookies = append(cookies, &http.Cookie{Name: e.Name, Value: e.Value})
++	}
++
++	return cookies
++}
++
++// SetCookies implements the SetCookies method of the http.CookieJar interface.
++//
++// It does nothing if the URL's scheme is not HTTP or HTTPS.
++func (j *Jar) SetCookies(u *url.URL, cookies []*http.Cookie) {
++	j.setCookies(u, cookies, time.Now())
++}
++
++// setCookies is like SetCookies but takes the current time as parameter.
++func (j *Jar) setCookies(u *url.URL, cookies []*http.Cookie, now time.Time) {
++	if len(cookies) == 0 {
++		return
++	}
++	if u.Scheme != "http" && u.Scheme != "https" {
++		return
++	}
++	host, err := canonicalHost(u.Host)
++	if err != nil {
++		return
++	}
++	key := jarKey(host, j.psList)
++	defPath := defaultPath(u.Path)
++
++	j.mu.Lock()
++	defer j.mu.Unlock()
++
++	submap := j.entries[key]
++
++	modified := false
++	for _, cookie := range cookies {
++		e, remove, err := j.newEntry(cookie, now, defPath, host)
++		if err != nil {
++			continue
++		}
++		id := e.id()
++		if remove {
++			if submap != nil {
++				if _, ok := submap[id]; ok {
++					delete(submap, id)
++					modified = true
++				}
++			}
++			continue
++		}
++		if submap == nil {
++			submap = make(map[string]entry)
++		}
++
++		if old, ok := submap[id]; ok {
++			e.Creation = old.Creation
++			e.seqNum = old.seqNum
++		} else {
++			e.Creation = now
++			e.seqNum = j.nextSeqNum
++			j.nextSeqNum++
++		}
++		e.LastAccess = now
++		submap[id] = e
++		modified = true
++	}
++
++	if modified {
++		if len(submap) == 0 {
++			delete(j.entries, key)
++		} else {
++			j.entries[key] = submap
++		}
++	}
++}
++
++// canonicalHost strips port from host if present and returns the canonicalized
++// host name.
++func canonicalHost(host string) (string, error) {
++	var err error
++	host = strings.ToLower(host)
++	if hasPort(host) {
++		host, _, err = net.SplitHostPort(host)
++		if err != nil {
++			return "", err
++		}
++	}
++	if strings.HasSuffix(host, ".") {
++		// Strip trailing dot from fully qualified domain names.
++		host = host[:len(host)-1]
++	}
++	return toASCII(host)
++}
++
++// hasPort returns whether host contains a port number. host may be a host
++// name, an IPv4 or an IPv6 address.
++func hasPort(host string) bool {
++	colons := strings.Count(host, ":")
++	if colons == 0 {
++		return false
++	}
++	if colons == 1 {
++		return true
++	}
++	return host[0] == '[' && strings.Contains(host, "]:")
++}
++
++// jarKey returns the key to use for a jar.
++func jarKey(host string, psl PublicSuffixList) string {
++	if isIP(host) {
++		return host
++	}
++
++	var i int
++	if psl == nil {
++		i = strings.LastIndex(host, ".")
++		if i == -1 {
++			return host
++		}
++	} else {
++		suffix := psl.PublicSuffix(host)
++		if suffix == host {
++			return host
++		}
++		i = len(host) - len(suffix)
++		if i <= 0 || host[i-1] != '.' {
++			// The provided public suffix list psl is broken.
++			// Storing cookies under host is a safe stopgap.
++			return host
++		}
++	}
++	prevDot := strings.LastIndex(host[:i-1], ".")
++	return host[prevDot+1:]
++}
++
++// isIP returns whether host is an IP address.
++func isIP(host string) bool {
++	return net.ParseIP(host) != nil
++}
++
++// defaultPath returns the directory part of an URL's path according to
++// RFC 6265 section 5.1.4.
++func defaultPath(path string) string {
++	if len(path) == 0 || path[0] != '/' {
++		return "/" // Path is empty or malformed.
++	}
++
++	i := strings.LastIndex(path, "/") // Path starts with "/", so i != -1.
++	if i == 0 {
++		return "/" // Path has the form "/abc".
++	}
++	return path[:i] // Path is either of form "/abc/xyz" or "/abc/xyz/".
++}
++
++// newEntry creates an entry from a http.Cookie c. now is the current time and
++// is compared to c.Expires to determine deletion of c. defPath and host are the
++// default-path and the canonical host name of the URL c was received from.
++//
++// remove is whether the jar should delete this cookie, as it has already
++// expired with respect to now. In this case, e may be incomplete, but it will
++// be valid to call e.id (which depends on e's Name, Domain and Path).
++//
++// A malformed c.Domain will result in an error.
++func (j *Jar) newEntry(c *http.Cookie, now time.Time, defPath, host string) (e entry, remove bool, err error) {
++	e.Name = c.Name
++
++	if c.Path == "" || c.Path[0] != '/' {
++		e.Path = defPath
++	} else {
++		e.Path = c.Path
++	}
++
++	e.Domain, e.HostOnly, err = j.domainAndType(host, c.Domain)
++	if err != nil {
++		return e, false, err
++	}
++
++	// MaxAge takes precedence over Expires.
++	if c.MaxAge < 0 {
++		return e, true, nil
++	} else if c.MaxAge > 0 {
++		e.Expires = now.Add(time.Duration(c.MaxAge) * time.Second)
++		e.Persistent = true
++	} else {
++		if c.Expires.IsZero() {
++			e.Expires = endOfTime
++			e.Persistent = false
++		} else {
++			if !c.Expires.After(now) {
++				return e, true, nil
++			}
++			e.Expires = c.Expires
++			e.Persistent = true
++		}
++	}
++
++	e.Value = c.Value
++	e.Secure = c.Secure
++	e.HttpOnly = c.HttpOnly
++
++	return e, false, nil
++}
++
++var (
++	errIllegalDomain   = errors.New("cookiejar: illegal cookie domain attribute")
++	errMalformedDomain = errors.New("cookiejar: malformed cookie domain attribute")
++	errNoHostname      = errors.New("cookiejar: no host name available (IP only)")
++)
++
++// endOfTime is the time when session (non-persistent) cookies expire.
++// This instant is representable in most date/time formats (not just
++// Go's time.Time) and should be far enough in the future.
++var endOfTime = time.Date(9999, 12, 31, 23, 59, 59, 0, time.UTC)
++
++// domainAndType determines the cookie's domain and hostOnly attribute.
++func (j *Jar) domainAndType(host, domain string) (string, bool, error) {
++	if domain == "" {
++		// No domain attribute in the SetCookie header indicates a
++		// host cookie.
++		return host, true, nil
++	}
++
++	if isIP(host) {
++		// According to RFC 6265 domain-matching includes not being
++		// an IP address.
++		// TODO: This might be relaxed as in common browsers.
++		return "", false, errNoHostname
++	}
++
++	// From here on: If the cookie is valid, it is a domain cookie (with
++	// the one exception of a public suffix below).
++	// See RFC 6265 section 5.2.3.
++	if domain[0] == '.' {
++		domain = domain[1:]
++	}
++
++	if len(domain) == 0 || domain[0] == '.' {
++		// Received either "Domain=." or "Domain=..some.thing",
++		// both are illegal.
++		return "", false, errMalformedDomain
++	}
++	domain = strings.ToLower(domain)
++
++	if domain[len(domain)-1] == '.' {
++		// We received stuff like "Domain=www.example.com.".
++		// Browsers do handle such stuff (actually differently) but
++		// RFC 6265 seems to be clear here (e.g. section 4.1.2.3) in
++		// requiring a reject.  4.1.2.3 is not normative, but
++		// "Domain Matching" (5.1.3) and "Canonicalized Host Names"
++		// (5.1.2) are.
++		return "", false, errMalformedDomain
++	}
++
++	// See RFC 6265 section 5.3 #5.
++	if j.psList != nil {
++		if ps := j.psList.PublicSuffix(domain); ps != "" && !hasDotSuffix(domain, ps) {
++			if host == domain {
++				// This is the one exception in which a cookie
++				// with a domain attribute is a host cookie.
++				return host, true, nil
++			}
++			return "", false, errIllegalDomain
++		}
++	}
++
++	// The domain must domain-match host: www.mycompany.com cannot
++	// set cookies for .ourcompetitors.com.
++	if host != domain && !hasDotSuffix(host, domain) {
++		return "", false, errIllegalDomain
++	}
++
++	return domain, false, nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cookiejar/jar_test.go gcc-4.8.1/libgo/go/net/http/cookiejar/jar_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cookiejar/jar_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cookiejar/jar_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,1267 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package cookiejar
++
++import (
++	"fmt"
++	"net/http"
++	"net/url"
++	"sort"
++	"strings"
++	"testing"
++	"time"
++)
++
++// tNow is the synthetic current time used as now during testing.
++var tNow = time.Date(2013, 1, 1, 12, 0, 0, 0, time.UTC)
++
++// testPSL implements PublicSuffixList with just two rules: "co.uk"
++// and the default rule "*".
++type testPSL struct{}
++
++func (testPSL) String() string {
++	return "testPSL"
++}
++func (testPSL) PublicSuffix(d string) string {
++	if d == "co.uk" || strings.HasSuffix(d, ".co.uk") {
++		return "co.uk"
++	}
++	return d[strings.LastIndex(d, ".")+1:]
++}
++
++// newTestJar creates an empty Jar with testPSL as the public suffix list.
++func newTestJar() *Jar {
++	jar, err := New(&Options{PublicSuffixList: testPSL{}})
++	if err != nil {
++		panic(err)
++	}
++	return jar
++}
++
++var hasDotSuffixTests = [...]struct {
++	s, suffix string
++}{
++	{"", ""},
++	{"", "."},
++	{"", "x"},
++	{".", ""},
++	{".", "."},
++	{".", ".."},
++	{".", "x"},
++	{".", "x."},
++	{".", ".x"},
++	{".", ".x."},
++	{"x", ""},
++	{"x", "."},
++	{"x", ".."},
++	{"x", "x"},
++	{"x", "x."},
++	{"x", ".x"},
++	{"x", ".x."},
++	{".x", ""},
++	{".x", "."},
++	{".x", ".."},
++	{".x", "x"},
++	{".x", "x."},
++	{".x", ".x"},
++	{".x", ".x."},
++	{"x.", ""},
++	{"x.", "."},
++	{"x.", ".."},
++	{"x.", "x"},
++	{"x.", "x."},
++	{"x.", ".x"},
++	{"x.", ".x."},
++	{"com", ""},
++	{"com", "m"},
++	{"com", "om"},
++	{"com", "com"},
++	{"com", ".com"},
++	{"com", "x.com"},
++	{"com", "xcom"},
++	{"com", "xorg"},
++	{"com", "org"},
++	{"com", "rg"},
++	{"foo.com", ""},
++	{"foo.com", "m"},
++	{"foo.com", "om"},
++	{"foo.com", "com"},
++	{"foo.com", ".com"},
++	{"foo.com", "o.com"},
++	{"foo.com", "oo.com"},
++	{"foo.com", "foo.com"},
++	{"foo.com", ".foo.com"},
++	{"foo.com", "x.foo.com"},
++	{"foo.com", "xfoo.com"},
++	{"foo.com", "xfoo.org"},
++	{"foo.com", "foo.org"},
++	{"foo.com", "oo.org"},
++	{"foo.com", "o.org"},
++	{"foo.com", ".org"},
++	{"foo.com", "org"},
++	{"foo.com", "rg"},
++}
++
++func TestHasDotSuffix(t *testing.T) {
++	for _, tc := range hasDotSuffixTests {
++		got := hasDotSuffix(tc.s, tc.suffix)
++		want := strings.HasSuffix(tc.s, "."+tc.suffix)
++		if got != want {
++			t.Errorf("s=%q, suffix=%q: got %v, want %v", tc.s, tc.suffix, got, want)
++		}
++	}
++}
++
++var canonicalHostTests = map[string]string{
++	"www.example.com":         "www.example.com",
++	"WWW.EXAMPLE.COM":         "www.example.com",
++	"wWw.eXAmple.CoM":         "www.example.com",
++	"www.example.com:80":      "www.example.com",
++	"192.168.0.10":            "192.168.0.10",
++	"192.168.0.5:8080":        "192.168.0.5",
++	"2001:4860:0:2001::68":    "2001:4860:0:2001::68",
++	"[2001:4860:0:::68]:8080": "2001:4860:0:::68",
++	"www.bÃŒcher.de":           "www.xn--bcher-kva.de",
++	"www.example.com.":        "www.example.com",
++	"[bad.unmatched.bracket:": "error",
++}
++
++func TestCanonicalHost(t *testing.T) {
++	for h, want := range canonicalHostTests {
++		got, err := canonicalHost(h)
++		if want == "error" {
++			if err == nil {
++				t.Errorf("%q: got nil error, want non-nil", h)
++			}
++			continue
++		}
++		if err != nil {
++			t.Errorf("%q: %v", h, err)
++			continue
++		}
++		if got != want {
++			t.Errorf("%q: got %q, want %q", h, got, want)
++			continue
++		}
++	}
++}
++
++var hasPortTests = map[string]bool{
++	"www.example.com":      false,
++	"www.example.com:80":   true,
++	"127.0.0.1":            false,
++	"127.0.0.1:8080":       true,
++	"2001:4860:0:2001::68": false,
++	"[2001::0:::68]:80":    true,
++}
++
++func TestHasPort(t *testing.T) {
++	for host, want := range hasPortTests {
++		if got := hasPort(host); got != want {
++			t.Errorf("%q: got %t, want %t", host, got, want)
++		}
++	}
++}
++
++var jarKeyTests = map[string]string{
++	"foo.www.example.com": "example.com",
++	"www.example.com":     "example.com",
++	"example.com":         "example.com",
++	"com":                 "com",
++	"foo.www.bbc.co.uk":   "bbc.co.uk",
++	"www.bbc.co.uk":       "bbc.co.uk",
++	"bbc.co.uk":           "bbc.co.uk",
++	"co.uk":               "co.uk",
++	"uk":                  "uk",
++	"192.168.0.5":         "192.168.0.5",
++}
++
++func TestJarKey(t *testing.T) {
++	for host, want := range jarKeyTests {
++		if got := jarKey(host, testPSL{}); got != want {
++			t.Errorf("%q: got %q, want %q", host, got, want)
++		}
++	}
++}
++
++var jarKeyNilPSLTests = map[string]string{
++	"foo.www.example.com": "example.com",
++	"www.example.com":     "example.com",
++	"example.com":         "example.com",
++	"com":                 "com",
++	"foo.www.bbc.co.uk":   "co.uk",
++	"www.bbc.co.uk":       "co.uk",
++	"bbc.co.uk":           "co.uk",
++	"co.uk":               "co.uk",
++	"uk":                  "uk",
++	"192.168.0.5":         "192.168.0.5",
++}
++
++func TestJarKeyNilPSL(t *testing.T) {
++	for host, want := range jarKeyNilPSLTests {
++		if got := jarKey(host, nil); got != want {
++			t.Errorf("%q: got %q, want %q", host, got, want)
++		}
++	}
++}
++
++var isIPTests = map[string]bool{
++	"127.0.0.1":            true,
++	"1.2.3.4":              true,
++	"2001:4860:0:2001::68": true,
++	"example.com":          false,
++	"1.1.1.300":            false,
++	"www.foo.bar.net":      false,
++	"123.foo.bar.net":      false,
++}
++
++func TestIsIP(t *testing.T) {
++	for host, want := range isIPTests {
++		if got := isIP(host); got != want {
++			t.Errorf("%q: got %t, want %t", host, got, want)
++		}
++	}
++}
++
++var defaultPathTests = map[string]string{
++	"/":           "/",
++	"/abc":        "/",
++	"/abc/":       "/abc",
++	"/abc/xyz":    "/abc",
++	"/abc/xyz/":   "/abc/xyz",
++	"/a/b/c.html": "/a/b",
++	"":            "/",
++	"strange":     "/",
++	"//":          "/",
++	"/a//b":       "/a/",
++	"/a/./b":      "/a/.",
++	"/a/../b":     "/a/..",
++}
++
++func TestDefaultPath(t *testing.T) {
++	for path, want := range defaultPathTests {
++		if got := defaultPath(path); got != want {
++			t.Errorf("%q: got %q, want %q", path, got, want)
++		}
++	}
++}
++
++var domainAndTypeTests = [...]struct {
++	host         string // host Set-Cookie header was received from
++	domain       string // domain attribute in Set-Cookie header
++	wantDomain   string // expected domain of cookie
++	wantHostOnly bool   // expected host-cookie flag
++	wantErr      error  // expected error
++}{
++	{"www.example.com", "", "www.example.com", true, nil},
++	{"127.0.0.1", "", "127.0.0.1", true, nil},
++	{"2001:4860:0:2001::68", "", "2001:4860:0:2001::68", true, nil},
++	{"www.example.com", "example.com", "example.com", false, nil},
++	{"www.example.com", ".example.com", "example.com", false, nil},
++	{"www.example.com", "www.example.com", "www.example.com", false, nil},
++	{"www.example.com", ".www.example.com", "www.example.com", false, nil},
++	{"foo.sso.example.com", "sso.example.com", "sso.example.com", false, nil},
++	{"bar.co.uk", "bar.co.uk", "bar.co.uk", false, nil},
++	{"foo.bar.co.uk", ".bar.co.uk", "bar.co.uk", false, nil},
++	{"127.0.0.1", "127.0.0.1", "", false, errNoHostname},
++	{"2001:4860:0:2001::68", "2001:4860:0:2001::68", "2001:4860:0:2001::68", false, errNoHostname},
++	{"www.example.com", ".", "", false, errMalformedDomain},
++	{"www.example.com", "..", "", false, errMalformedDomain},
++	{"www.example.com", "other.com", "", false, errIllegalDomain},
++	{"www.example.com", "com", "", false, errIllegalDomain},
++	{"www.example.com", ".com", "", false, errIllegalDomain},
++	{"foo.bar.co.uk", ".co.uk", "", false, errIllegalDomain},
++	{"127.www.0.0.1", "127.0.0.1", "", false, errIllegalDomain},
++	{"com", "", "com", true, nil},
++	{"com", "com", "com", true, nil},
++	{"com", ".com", "com", true, nil},
++	{"co.uk", "", "co.uk", true, nil},
++	{"co.uk", "co.uk", "co.uk", true, nil},
++	{"co.uk", ".co.uk", "co.uk", true, nil},
++}
++
++func TestDomainAndType(t *testing.T) {
++	jar := newTestJar()
++	for _, tc := range domainAndTypeTests {
++		domain, hostOnly, err := jar.domainAndType(tc.host, tc.domain)
++		if err != tc.wantErr {
++			t.Errorf("%q/%q: got %q error, want %q",
++				tc.host, tc.domain, err, tc.wantErr)
++			continue
++		}
++		if err != nil {
++			continue
++		}
++		if domain != tc.wantDomain || hostOnly != tc.wantHostOnly {
++			t.Errorf("%q/%q: got %q/%t want %q/%t",
++				tc.host, tc.domain, domain, hostOnly,
++				tc.wantDomain, tc.wantHostOnly)
++		}
++	}
++}
++
++// expiresIn creates an expires attribute delta seconds from tNow.
++func expiresIn(delta int) string {
++	t := tNow.Add(time.Duration(delta) * time.Second)
++	return "expires=" + t.Format(time.RFC1123)
++}
++
++// mustParseURL parses s to an URL and panics on error.
++func mustParseURL(s string) *url.URL {
++	u, err := url.Parse(s)
++	if err != nil || u.Scheme == "" || u.Host == "" {
++		panic(fmt.Sprintf("Unable to parse URL %s.", s))
++	}
++	return u
++}
++
++// jarTest encapsulates the following actions on a jar:
++//   1. Perform SetCookies with fromURL and the cookies from setCookies.
++//      (Done at time tNow + 0 ms.)
++//   2. Check that the entries in the jar matches content.
++//      (Done at time tNow + 1001 ms.)
++//   3. For each query in tests: Check that Cookies with toURL yields the
++//      cookies in want.
++//      (Query n done at tNow + (n+2)*1001 ms.)
++type jarTest struct {
++	description string   // The description of what this test is supposed to test
++	fromURL     string   // The full URL of the request from which Set-Cookie headers where received
++	setCookies  []string // All the cookies received from fromURL
++	content     string   // The whole (non-expired) content of the jar
++	queries     []query  // Queries to test the Jar.Cookies method
++}
++
++// query contains one test of the cookies returned from Jar.Cookies.
++type query struct {
++	toURL string // the URL in the Cookies call
++	want  string // the expected list of cookies (order matters)
++}
++
++// run runs the jarTest.
++func (test jarTest) run(t *testing.T, jar *Jar) {
++	now := tNow
++
++	// Populate jar with cookies.
++	setCookies := make([]*http.Cookie, len(test.setCookies))
++	for i, cs := range test.setCookies {
++		cookies := (&http.Response{Header: http.Header{"Set-Cookie": {cs}}}).Cookies()
++		if len(cookies) != 1 {
++			panic(fmt.Sprintf("Wrong cookie line %q: %#v", cs, cookies))
++		}
++		setCookies[i] = cookies[0]
++	}
++	jar.setCookies(mustParseURL(test.fromURL), setCookies, now)
++	now = now.Add(1001 * time.Millisecond)
++
++	// Serialize non-expired entries in the form "name1=val1 name2=val2".
++	var cs []string
++	for _, submap := range jar.entries {
++		for _, cookie := range submap {
++			if !cookie.Expires.After(now) {
++				continue
++			}
++			cs = append(cs, cookie.Name+"="+cookie.Value)
++		}
++	}
++	sort.Strings(cs)
++	got := strings.Join(cs, " ")
++
++	// Make sure jar content matches our expectations.
++	if got != test.content {
++		t.Errorf("Test %q Content\ngot  %q\nwant %q",
++			test.description, got, test.content)
++	}
++
++	// Test different calls to Cookies.
++	for i, query := range test.queries {
++		now = now.Add(1001 * time.Millisecond)
++		var s []string
++		for _, c := range jar.cookies(mustParseURL(query.toURL), now) {
++			s = append(s, c.Name+"="+c.Value)
++		}
++		if got := strings.Join(s, " "); got != query.want {
++			t.Errorf("Test %q #%d\ngot  %q\nwant %q", test.description, i, got, query.want)
++		}
++	}
++}
++
++// basicsTests contains fundamental tests. Each jarTest has to be performed on
++// a fresh, empty Jar.
++var basicsTests = [...]jarTest{
++	{
++		"Retrieval of a plain host cookie.",
++		"http://www.host.test/",
++		[]string{"A=a"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", "A=a"},
++			{"http://www.host.test/", "A=a"},
++			{"http://www.host.test/some/path", "A=a"},
++			{"https://www.host.test", "A=a"},
++			{"https://www.host.test/", "A=a"},
++			{"https://www.host.test/some/path", "A=a"},
++			{"ftp://www.host.test", ""},
++			{"ftp://www.host.test/", ""},
++			{"ftp://www.host.test/some/path", ""},
++			{"http://www.other.org", ""},
++			{"http://sibling.host.test", ""},
++			{"http://deep.www.host.test", ""},
++		},
++	},
++	{
++		"Secure cookies are not returned to http.",
++		"http://www.host.test/",
++		[]string{"A=a; secure"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", ""},
++			{"http://www.host.test/", ""},
++			{"http://www.host.test/some/path", ""},
++			{"https://www.host.test", "A=a"},
++			{"https://www.host.test/", "A=a"},
++			{"https://www.host.test/some/path", "A=a"},
++		},
++	},
++	{
++		"Explicit path.",
++		"http://www.host.test/",
++		[]string{"A=a; path=/some/path"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", ""},
++			{"http://www.host.test/", ""},
++			{"http://www.host.test/some", ""},
++			{"http://www.host.test/some/", ""},
++			{"http://www.host.test/some/path", "A=a"},
++			{"http://www.host.test/some/paths", ""},
++			{"http://www.host.test/some/path/foo", "A=a"},
++			{"http://www.host.test/some/path/foo/", "A=a"},
++		},
++	},
++	{
++		"Implicit path #1: path is a directory.",
++		"http://www.host.test/some/path/",
++		[]string{"A=a"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", ""},
++			{"http://www.host.test/", ""},
++			{"http://www.host.test/some", ""},
++			{"http://www.host.test/some/", ""},
++			{"http://www.host.test/some/path", "A=a"},
++			{"http://www.host.test/some/paths", ""},
++			{"http://www.host.test/some/path/foo", "A=a"},
++			{"http://www.host.test/some/path/foo/", "A=a"},
++		},
++	},
++	{
++		"Implicit path #2: path is not a directory.",
++		"http://www.host.test/some/path/index.html",
++		[]string{"A=a"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", ""},
++			{"http://www.host.test/", ""},
++			{"http://www.host.test/some", ""},
++			{"http://www.host.test/some/", ""},
++			{"http://www.host.test/some/path", "A=a"},
++			{"http://www.host.test/some/paths", ""},
++			{"http://www.host.test/some/path/foo", "A=a"},
++			{"http://www.host.test/some/path/foo/", "A=a"},
++		},
++	},
++	{
++		"Implicit path #3: no path in URL at all.",
++		"http://www.host.test",
++		[]string{"A=a"},
++		"A=a",
++		[]query{
++			{"http://www.host.test", "A=a"},
++			{"http://www.host.test/", "A=a"},
++			{"http://www.host.test/some/path", "A=a"},
++		},
++	},
++	{
++		"Cookies are sorted by path length.",
++		"http://www.host.test/",
++		[]string{
++			"A=a; path=/foo/bar",
++			"B=b; path=/foo/bar/baz/qux",
++			"C=c; path=/foo/bar/baz",
++			"D=d; path=/foo"},
++		"A=a B=b C=c D=d",
++		[]query{
++			{"http://www.host.test/foo/bar/baz/qux", "B=b C=c A=a D=d"},
++			{"http://www.host.test/foo/bar/baz/", "C=c A=a D=d"},
++			{"http://www.host.test/foo/bar", "A=a D=d"},
++		},
++	},
++	{
++		"Creation time determines sorting on same length paths.",
++		"http://www.host.test/",
++		[]string{
++			"A=a; path=/foo/bar",
++			"X=x; path=/foo/bar",
++			"Y=y; path=/foo/bar/baz/qux",
++			"B=b; path=/foo/bar/baz/qux",
++			"C=c; path=/foo/bar/baz",
++			"W=w; path=/foo/bar/baz",
++			"Z=z; path=/foo",
++			"D=d; path=/foo"},
++		"A=a B=b C=c D=d W=w X=x Y=y Z=z",
++		[]query{
++			{"http://www.host.test/foo/bar/baz/qux", "Y=y B=b C=c W=w A=a X=x Z=z D=d"},
++			{"http://www.host.test/foo/bar/baz/", "C=c W=w A=a X=x Z=z D=d"},
++			{"http://www.host.test/foo/bar", "A=a X=x Z=z D=d"},
++		},
++	},
++	{
++		"Sorting of same-name cookies.",
++		"http://www.host.test/",
++		[]string{
++			"A=1; path=/",
++			"A=2; path=/path",
++			"A=3; path=/quux",
++			"A=4; path=/path/foo",
++			"A=5; domain=.host.test; path=/path",
++			"A=6; domain=.host.test; path=/quux",
++			"A=7; domain=.host.test; path=/path/foo",
++		},
++		"A=1 A=2 A=3 A=4 A=5 A=6 A=7",
++		[]query{
++			{"http://www.host.test/path", "A=2 A=5 A=1"},
++			{"http://www.host.test/path/foo", "A=4 A=7 A=2 A=5 A=1"},
++		},
++	},
++	{
++		"Disallow domain cookie on public suffix.",
++		"http://www.bbc.co.uk",
++		[]string{
++			"a=1",
++			"b=2; domain=co.uk",
++		},
++		"a=1",
++		[]query{{"http://www.bbc.co.uk", "a=1"}},
++	},
++	{
++		"Host cookie on IP.",
++		"http://192.168.0.10",
++		[]string{"a=1"},
++		"a=1",
++		[]query{{"http://192.168.0.10", "a=1"}},
++	},
++	{
++		"Port is ignored #1.",
++		"http://www.host.test/",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://www.host.test", "a=1"},
++			{"http://www.host.test:8080/", "a=1"},
++		},
++	},
++	{
++		"Port is ignored #2.",
++		"http://www.host.test:8080/",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://www.host.test", "a=1"},
++			{"http://www.host.test:8080/", "a=1"},
++			{"http://www.host.test:1234/", "a=1"},
++		},
++	},
++}
++
++func TestBasics(t *testing.T) {
++	for _, test := range basicsTests {
++		jar := newTestJar()
++		test.run(t, jar)
++	}
++}
++
++// updateAndDeleteTests contains jarTests which must be performed on the same
++// Jar.
++var updateAndDeleteTests = [...]jarTest{
++	{
++		"Set initial cookies.",
++		"http://www.host.test",
++		[]string{
++			"a=1",
++			"b=2; secure",
++			"c=3; httponly",
++			"d=4; secure; httponly"},
++		"a=1 b=2 c=3 d=4",
++		[]query{
++			{"http://www.host.test", "a=1 c=3"},
++			{"https://www.host.test", "a=1 b=2 c=3 d=4"},
++		},
++	},
++	{
++		"Update value via http.",
++		"http://www.host.test",
++		[]string{
++			"a=w",
++			"b=x; secure",
++			"c=y; httponly",
++			"d=z; secure; httponly"},
++		"a=w b=x c=y d=z",
++		[]query{
++			{"http://www.host.test", "a=w c=y"},
++			{"https://www.host.test", "a=w b=x c=y d=z"},
++		},
++	},
++	{
++		"Clear Secure flag from a http.",
++		"http://www.host.test/",
++		[]string{
++			"b=xx",
++			"d=zz; httponly"},
++		"a=w b=xx c=y d=zz",
++		[]query{{"http://www.host.test", "a=w b=xx c=y d=zz"}},
++	},
++	{
++		"Delete all.",
++		"http://www.host.test/",
++		[]string{
++			"a=1; max-Age=-1",                    // delete via MaxAge
++			"b=2; " + expiresIn(-10),             // delete via Expires
++			"c=2; max-age=-1; " + expiresIn(-10), // delete via both
++			"d=4; max-age=-1; " + expiresIn(10)}, // MaxAge takes precedence
++		"",
++		[]query{{"http://www.host.test", ""}},
++	},
++	{
++		"Refill #1.",
++		"http://www.host.test",
++		[]string{
++			"A=1",
++			"A=2; path=/foo",
++			"A=3; domain=.host.test",
++			"A=4; path=/foo; domain=.host.test"},
++		"A=1 A=2 A=3 A=4",
++		[]query{{"http://www.host.test/foo", "A=2 A=4 A=1 A=3"}},
++	},
++	{
++		"Refill #2.",
++		"http://www.google.com",
++		[]string{
++			"A=6",
++			"A=7; path=/foo",
++			"A=8; domain=.google.com",
++			"A=9; path=/foo; domain=.google.com"},
++		"A=1 A=2 A=3 A=4 A=6 A=7 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=4 A=1 A=3"},
++			{"http://www.google.com/foo", "A=7 A=9 A=6 A=8"},
++		},
++	},
++	{
++		"Delete A7.",
++		"http://www.google.com",
++		[]string{"A=; path=/foo; max-age=-1"},
++		"A=1 A=2 A=3 A=4 A=6 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=4 A=1 A=3"},
++			{"http://www.google.com/foo", "A=9 A=6 A=8"},
++		},
++	},
++	{
++		"Delete A4.",
++		"http://www.host.test",
++		[]string{"A=; path=/foo; domain=host.test; max-age=-1"},
++		"A=1 A=2 A=3 A=6 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=1 A=3"},
++			{"http://www.google.com/foo", "A=9 A=6 A=8"},
++		},
++	},
++	{
++		"Delete A6.",
++		"http://www.google.com",
++		[]string{"A=; max-age=-1"},
++		"A=1 A=2 A=3 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=1 A=3"},
++			{"http://www.google.com/foo", "A=9 A=8"},
++		},
++	},
++	{
++		"Delete A3.",
++		"http://www.host.test",
++		[]string{"A=; domain=host.test; max-age=-1"},
++		"A=1 A=2 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=1"},
++			{"http://www.google.com/foo", "A=9 A=8"},
++		},
++	},
++	{
++		"No cross-domain delete.",
++		"http://www.host.test",
++		[]string{
++			"A=; domain=google.com; max-age=-1",
++			"A=; path=/foo; domain=google.com; max-age=-1"},
++		"A=1 A=2 A=8 A=9",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=1"},
++			{"http://www.google.com/foo", "A=9 A=8"},
++		},
++	},
++	{
++		"Delete A8 and A9.",
++		"http://www.google.com",
++		[]string{
++			"A=; domain=google.com; max-age=-1",
++			"A=; path=/foo; domain=google.com; max-age=-1"},
++		"A=1 A=2",
++		[]query{
++			{"http://www.host.test/foo", "A=2 A=1"},
++			{"http://www.google.com/foo", ""},
++		},
++	},
++}
++
++func TestUpdateAndDelete(t *testing.T) {
++	jar := newTestJar()
++	for _, test := range updateAndDeleteTests {
++		test.run(t, jar)
++	}
++}
++
++func TestExpiration(t *testing.T) {
++	jar := newTestJar()
++	jarTest{
++		"Expiration.",
++		"http://www.host.test",
++		[]string{
++			"a=1",
++			"b=2; max-age=3",
++			"c=3; " + expiresIn(3),
++			"d=4; max-age=5",
++			"e=5; " + expiresIn(5),
++			"f=6; max-age=100",
++		},
++		"a=1 b=2 c=3 d=4 e=5 f=6", // executed at t0 + 1001 ms
++		[]query{
++			{"http://www.host.test", "a=1 b=2 c=3 d=4 e=5 f=6"}, // t0 + 2002 ms
++			{"http://www.host.test", "a=1 d=4 e=5 f=6"},         // t0 + 3003 ms
++			{"http://www.host.test", "a=1 d=4 e=5 f=6"},         // t0 + 4004 ms
++			{"http://www.host.test", "a=1 f=6"},                 // t0 + 5005 ms
++			{"http://www.host.test", "a=1 f=6"},                 // t0 + 6006 ms
++		},
++	}.run(t, jar)
++}
++
++//
++// Tests derived from Chromium's cookie_store_unittest.h.
++//
++
++// See http://src.chromium.org/viewvc/chrome/trunk/src/net/cookies/cookie_store_unittest.h?revision=159685&content-type=text/plain
++// Some of the original tests are in a bad condition (e.g.
++// DomainWithTrailingDotTest) or are not RFC 6265 conforming (e.g.
++// TestNonDottedAndTLD #1 and #6) and have not been ported.
++
++// chromiumBasicsTests contains fundamental tests. Each jarTest has to be
++// performed on a fresh, empty Jar.
++var chromiumBasicsTests = [...]jarTest{
++	{
++		"DomainWithTrailingDotTest.",
++		"http://www.google.com/",
++		[]string{
++			"a=1; domain=.www.google.com.",
++			"b=2; domain=.www.google.com.."},
++		"",
++		[]query{
++			{"http://www.google.com", ""},
++		},
++	},
++	{
++		"ValidSubdomainTest #1.",
++		"http://a.b.c.d.com",
++		[]string{
++			"a=1; domain=.a.b.c.d.com",
++			"b=2; domain=.b.c.d.com",
++			"c=3; domain=.c.d.com",
++			"d=4; domain=.d.com"},
++		"a=1 b=2 c=3 d=4",
++		[]query{
++			{"http://a.b.c.d.com", "a=1 b=2 c=3 d=4"},
++			{"http://b.c.d.com", "b=2 c=3 d=4"},
++			{"http://c.d.com", "c=3 d=4"},
++			{"http://d.com", "d=4"},
++		},
++	},
++	{
++		"ValidSubdomainTest #2.",
++		"http://a.b.c.d.com",
++		[]string{
++			"a=1; domain=.a.b.c.d.com",
++			"b=2; domain=.b.c.d.com",
++			"c=3; domain=.c.d.com",
++			"d=4; domain=.d.com",
++			"X=bcd; domain=.b.c.d.com",
++			"X=cd; domain=.c.d.com"},
++		"X=bcd X=cd a=1 b=2 c=3 d=4",
++		[]query{
++			{"http://b.c.d.com", "b=2 c=3 d=4 X=bcd X=cd"},
++			{"http://c.d.com", "c=3 d=4 X=cd"},
++		},
++	},
++	{
++		"InvalidDomainTest #1.",
++		"http://foo.bar.com",
++		[]string{
++			"a=1; domain=.yo.foo.bar.com",
++			"b=2; domain=.foo.com",
++			"c=3; domain=.bar.foo.com",
++			"d=4; domain=.foo.bar.com.net",
++			"e=5; domain=ar.com",
++			"f=6; domain=.",
++			"g=7; domain=/",
++			"h=8; domain=http://foo.bar.com",
++			"i=9; domain=..foo.bar.com",
++			"j=10; domain=..bar.com",
++			"k=11; domain=.foo.bar.com?blah",
++			"l=12; domain=.foo.bar.com/blah",
++			"m=12; domain=.foo.bar.com:80",
++			"n=14; domain=.foo.bar.com:",
++			"o=15; domain=.foo.bar.com#sup",
++		},
++		"", // Jar is empty.
++		[]query{{"http://foo.bar.com", ""}},
++	},
++	{
++		"InvalidDomainTest #2.",
++		"http://foo.com.com",
++		[]string{"a=1; domain=.foo.com.com.com"},
++		"",
++		[]query{{"http://foo.bar.com", ""}},
++	},
++	{
++		"DomainWithoutLeadingDotTest #1.",
++		"http://manage.hosted.filefront.com",
++		[]string{"a=1; domain=filefront.com"},
++		"a=1",
++		[]query{{"http://www.filefront.com", "a=1"}},
++	},
++	{
++		"DomainWithoutLeadingDotTest #2.",
++		"http://www.google.com",
++		[]string{"a=1; domain=www.google.com"},
++		"a=1",
++		[]query{
++			{"http://www.google.com", "a=1"},
++			{"http://sub.www.google.com", "a=1"},
++			{"http://something-else.com", ""},
++		},
++	},
++	{
++		"CaseInsensitiveDomainTest.",
++		"http://www.google.com",
++		[]string{
++			"a=1; domain=.GOOGLE.COM",
++			"b=2; domain=.www.gOOgLE.coM"},
++		"a=1 b=2",
++		[]query{{"http://www.google.com", "a=1 b=2"}},
++	},
++	{
++		"TestIpAddress #1.",
++		"http://1.2.3.4/foo",
++		[]string{"a=1; path=/"},
++		"a=1",
++		[]query{{"http://1.2.3.4/foo", "a=1"}},
++	},
++	{
++		"TestIpAddress #2.",
++		"http://1.2.3.4/foo",
++		[]string{
++			"a=1; domain=.1.2.3.4",
++			"b=2; domain=.3.4"},
++		"",
++		[]query{{"http://1.2.3.4/foo", ""}},
++	},
++	{
++		"TestIpAddress #3.",
++		"http://1.2.3.4/foo",
++		[]string{"a=1; domain=1.2.3.4"},
++		"",
++		[]query{{"http://1.2.3.4/foo", ""}},
++	},
++	{
++		"TestNonDottedAndTLD #2.",
++		"http://com./index.html",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://com./index.html", "a=1"},
++			{"http://no-cookies.com./index.html", ""},
++		},
++	},
++	{
++		"TestNonDottedAndTLD #3.",
++		"http://a.b",
++		[]string{
++			"a=1; domain=.b",
++			"b=2; domain=b"},
++		"",
++		[]query{{"http://bar.foo", ""}},
++	},
++	{
++		"TestNonDottedAndTLD #4.",
++		"http://google.com",
++		[]string{
++			"a=1; domain=.com",
++			"b=2; domain=com"},
++		"",
++		[]query{{"http://google.com", ""}},
++	},
++	{
++		"TestNonDottedAndTLD #5.",
++		"http://google.co.uk",
++		[]string{
++			"a=1; domain=.co.uk",
++			"b=2; domain=.uk"},
++		"",
++		[]query{
++			{"http://google.co.uk", ""},
++			{"http://else.co.com", ""},
++			{"http://else.uk", ""},
++		},
++	},
++	{
++		"TestHostEndsWithDot.",
++		"http://www.google.com",
++		[]string{
++			"a=1",
++			"b=2; domain=.www.google.com."},
++		"a=1",
++		[]query{{"http://www.google.com", "a=1"}},
++	},
++	{
++		"PathTest",
++		"http://www.google.izzle",
++		[]string{"a=1; path=/wee"},
++		"a=1",
++		[]query{
++			{"http://www.google.izzle/wee", "a=1"},
++			{"http://www.google.izzle/wee/", "a=1"},
++			{"http://www.google.izzle/wee/war", "a=1"},
++			{"http://www.google.izzle/wee/war/more/more", "a=1"},
++			{"http://www.google.izzle/weehee", ""},
++			{"http://www.google.izzle/", ""},
++		},
++	},
++}
++
++func TestChromiumBasics(t *testing.T) {
++	for _, test := range chromiumBasicsTests {
++		jar := newTestJar()
++		test.run(t, jar)
++	}
++}
++
++// chromiumDomainTests contains jarTests which must be executed all on the
++// same Jar.
++var chromiumDomainTests = [...]jarTest{
++	{
++		"Fill #1.",
++		"http://www.google.izzle",
++		[]string{"A=B"},
++		"A=B",
++		[]query{{"http://www.google.izzle", "A=B"}},
++	},
++	{
++		"Fill #2.",
++		"http://www.google.izzle",
++		[]string{"C=D; domain=.google.izzle"},
++		"A=B C=D",
++		[]query{{"http://www.google.izzle", "A=B C=D"}},
++	},
++	{
++		"Verify A is a host cookie and not accessible from subdomain.",
++		"http://unused.nil",
++		[]string{},
++		"A=B C=D",
++		[]query{{"http://foo.www.google.izzle", "C=D"}},
++	},
++	{
++		"Verify domain cookies are found on proper domain.",
++		"http://www.google.izzle",
++		[]string{"E=F; domain=.www.google.izzle"},
++		"A=B C=D E=F",
++		[]query{{"http://www.google.izzle", "A=B C=D E=F"}},
++	},
++	{
++		"Leading dots in domain attributes are optional.",
++		"http://www.google.izzle",
++		[]string{"G=H; domain=www.google.izzle"},
++		"A=B C=D E=F G=H",
++		[]query{{"http://www.google.izzle", "A=B C=D E=F G=H"}},
++	},
++	{
++		"Verify domain enforcement works #1.",
++		"http://www.google.izzle",
++		[]string{"K=L; domain=.bar.www.google.izzle"},
++		"A=B C=D E=F G=H",
++		[]query{{"http://bar.www.google.izzle", "C=D E=F G=H"}},
++	},
++	{
++		"Verify domain enforcement works #2.",
++		"http://unused.nil",
++		[]string{},
++		"A=B C=D E=F G=H",
++		[]query{{"http://www.google.izzle", "A=B C=D E=F G=H"}},
++	},
++}
++
++func TestChromiumDomain(t *testing.T) {
++	jar := newTestJar()
++	for _, test := range chromiumDomainTests {
++		test.run(t, jar)
++	}
++
++}
++
++// chromiumDeletionTests must be performed all on the same Jar.
++var chromiumDeletionTests = [...]jarTest{
++	{
++		"Create session cookie a1.",
++		"http://www.google.com",
++		[]string{"a=1"},
++		"a=1",
++		[]query{{"http://www.google.com", "a=1"}},
++	},
++	{
++		"Delete sc a1 via MaxAge.",
++		"http://www.google.com",
++		[]string{"a=1; max-age=-1"},
++		"",
++		[]query{{"http://www.google.com", ""}},
++	},
++	{
++		"Create session cookie b2.",
++		"http://www.google.com",
++		[]string{"b=2"},
++		"b=2",
++		[]query{{"http://www.google.com", "b=2"}},
++	},
++	{
++		"Delete sc b2 via Expires.",
++		"http://www.google.com",
++		[]string{"b=2; " + expiresIn(-10)},
++		"",
++		[]query{{"http://www.google.com", ""}},
++	},
++	{
++		"Create persistent cookie c3.",
++		"http://www.google.com",
++		[]string{"c=3; max-age=3600"},
++		"c=3",
++		[]query{{"http://www.google.com", "c=3"}},
++	},
++	{
++		"Delete pc c3 via MaxAge.",
++		"http://www.google.com",
++		[]string{"c=3; max-age=-1"},
++		"",
++		[]query{{"http://www.google.com", ""}},
++	},
++	{
++		"Create persistent cookie d4.",
++		"http://www.google.com",
++		[]string{"d=4; max-age=3600"},
++		"d=4",
++		[]query{{"http://www.google.com", "d=4"}},
++	},
++	{
++		"Delete pc d4 via Expires.",
++		"http://www.google.com",
++		[]string{"d=4; " + expiresIn(-10)},
++		"",
++		[]query{{"http://www.google.com", ""}},
++	},
++}
++
++func TestChromiumDeletion(t *testing.T) {
++	jar := newTestJar()
++	for _, test := range chromiumDeletionTests {
++		test.run(t, jar)
++	}
++}
++
++// domainHandlingTests tests and documents the rules for domain handling.
++// Each test must be performed on an empty new Jar.
++var domainHandlingTests = [...]jarTest{
++	{
++		"Host cookie",
++		"http://www.host.test",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://www.host.test", "a=1"},
++			{"http://host.test", ""},
++			{"http://bar.host.test", ""},
++			{"http://foo.www.host.test", ""},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Domain cookie #1",
++		"http://www.host.test",
++		[]string{"a=1; domain=host.test"},
++		"a=1",
++		[]query{
++			{"http://www.host.test", "a=1"},
++			{"http://host.test", "a=1"},
++			{"http://bar.host.test", "a=1"},
++			{"http://foo.www.host.test", "a=1"},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Domain cookie #2",
++		"http://www.host.test",
++		[]string{"a=1; domain=.host.test"},
++		"a=1",
++		[]query{
++			{"http://www.host.test", "a=1"},
++			{"http://host.test", "a=1"},
++			{"http://bar.host.test", "a=1"},
++			{"http://foo.www.host.test", "a=1"},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Host cookie on IDNA domain #1",
++		"http://www.bÃŒcher.test",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://www.bÃŒcher.test", "a=1"},
++			{"http://www.xn--bcher-kva.test", "a=1"},
++			{"http://bÃŒcher.test", ""},
++			{"http://xn--bcher-kva.test", ""},
++			{"http://bar.bÃŒcher.test", ""},
++			{"http://bar.xn--bcher-kva.test", ""},
++			{"http://foo.www.bÃŒcher.test", ""},
++			{"http://foo.www.xn--bcher-kva.test", ""},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Host cookie on IDNA domain #2",
++		"http://www.xn--bcher-kva.test",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://www.bÃŒcher.test", "a=1"},
++			{"http://www.xn--bcher-kva.test", "a=1"},
++			{"http://bÃŒcher.test", ""},
++			{"http://xn--bcher-kva.test", ""},
++			{"http://bar.bÃŒcher.test", ""},
++			{"http://bar.xn--bcher-kva.test", ""},
++			{"http://foo.www.bÃŒcher.test", ""},
++			{"http://foo.www.xn--bcher-kva.test", ""},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Domain cookie on IDNA domain #1",
++		"http://www.bÃŒcher.test",
++		[]string{"a=1; domain=xn--bcher-kva.test"},
++		"a=1",
++		[]query{
++			{"http://www.bÃŒcher.test", "a=1"},
++			{"http://www.xn--bcher-kva.test", "a=1"},
++			{"http://bÃŒcher.test", "a=1"},
++			{"http://xn--bcher-kva.test", "a=1"},
++			{"http://bar.bÃŒcher.test", "a=1"},
++			{"http://bar.xn--bcher-kva.test", "a=1"},
++			{"http://foo.www.bÃŒcher.test", "a=1"},
++			{"http://foo.www.xn--bcher-kva.test", "a=1"},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Domain cookie on IDNA domain #2",
++		"http://www.xn--bcher-kva.test",
++		[]string{"a=1; domain=xn--bcher-kva.test"},
++		"a=1",
++		[]query{
++			{"http://www.bÃŒcher.test", "a=1"},
++			{"http://www.xn--bcher-kva.test", "a=1"},
++			{"http://bÃŒcher.test", "a=1"},
++			{"http://xn--bcher-kva.test", "a=1"},
++			{"http://bar.bÃŒcher.test", "a=1"},
++			{"http://bar.xn--bcher-kva.test", "a=1"},
++			{"http://foo.www.bÃŒcher.test", "a=1"},
++			{"http://foo.www.xn--bcher-kva.test", "a=1"},
++			{"http://other.test", ""},
++			{"http://test", ""},
++		},
++	},
++	{
++		"Host cookie on TLD.",
++		"http://com",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://com", "a=1"},
++			{"http://any.com", ""},
++			{"http://any.test", ""},
++		},
++	},
++	{
++		"Domain cookie on TLD becomes a host cookie.",
++		"http://com",
++		[]string{"a=1; domain=com"},
++		"a=1",
++		[]query{
++			{"http://com", "a=1"},
++			{"http://any.com", ""},
++			{"http://any.test", ""},
++		},
++	},
++	{
++		"Host cookie on public suffix.",
++		"http://co.uk",
++		[]string{"a=1"},
++		"a=1",
++		[]query{
++			{"http://co.uk", "a=1"},
++			{"http://uk", ""},
++			{"http://some.co.uk", ""},
++			{"http://foo.some.co.uk", ""},
++			{"http://any.uk", ""},
++		},
++	},
++	{
++		"Domain cookie on public suffix is ignored.",
++		"http://some.co.uk",
++		[]string{"a=1; domain=co.uk"},
++		"",
++		[]query{
++			{"http://co.uk", ""},
++			{"http://uk", ""},
++			{"http://some.co.uk", ""},
++			{"http://foo.some.co.uk", ""},
++			{"http://any.uk", ""},
++		},
++	},
++}
++
++func TestDomainHandling(t *testing.T) {
++	for _, test := range domainHandlingTests {
++		jar := newTestJar()
++		test.run(t, jar)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cookiejar/punycode.go gcc-4.8.1/libgo/go/net/http/cookiejar/punycode.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cookiejar/punycode.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cookiejar/punycode.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,159 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package cookiejar
++
++// This file implements the Punycode algorithm from RFC 3492.
++
++import (
++	"fmt"
++	"strings"
++	"unicode/utf8"
++)
++
++// These parameter values are specified in section 5.
++//
++// All computation is done with int32s, so that overflow behavior is identical
++// regardless of whether int is 32-bit or 64-bit.
++const (
++	base        int32 = 36
++	damp        int32 = 700
++	initialBias int32 = 72
++	initialN    int32 = 128
++	skew        int32 = 38
++	tmax        int32 = 26
++	tmin        int32 = 1
++)
++
++// encode encodes a string as specified in section 6.3 and prepends prefix to
++// the result.
++//
++// The "while h < length(input)" line in the specification becomes "for
++// remaining != 0" in the Go code, because len(s) in Go is in bytes, not runes.
++func encode(prefix, s string) (string, error) {
++	output := make([]byte, len(prefix), len(prefix)+1+2*len(s))
++	copy(output, prefix)
++	delta, n, bias := int32(0), initialN, initialBias
++	b, remaining := int32(0), int32(0)
++	for _, r := range s {
++		if r < 0x80 {
++			b++
++			output = append(output, byte(r))
++		} else {
++			remaining++
++		}
++	}
++	h := b
++	if b > 0 {
++		output = append(output, '-')
++	}
++	for remaining != 0 {
++		m := int32(0x7fffffff)
++		for _, r := range s {
++			if m > r && r >= n {
++				m = r
++			}
++		}
++		delta += (m - n) * (h + 1)
++		if delta < 0 {
++			return "", fmt.Errorf("cookiejar: invalid label %q", s)
++		}
++		n = m
++		for _, r := range s {
++			if r < n {
++				delta++
++				if delta < 0 {
++					return "", fmt.Errorf("cookiejar: invalid label %q", s)
++				}
++				continue
++			}
++			if r > n {
++				continue
++			}
++			q := delta
++			for k := base; ; k += base {
++				t := k - bias
++				if t < tmin {
++					t = tmin
++				} else if t > tmax {
++					t = tmax
++				}
++				if q < t {
++					break
++				}
++				output = append(output, encodeDigit(t+(q-t)%(base-t)))
++				q = (q - t) / (base - t)
++			}
++			output = append(output, encodeDigit(q))
++			bias = adapt(delta, h+1, h == b)
++			delta = 0
++			h++
++			remaining--
++		}
++		delta++
++		n++
++	}
++	return string(output), nil
++}
++
++func encodeDigit(digit int32) byte {
++	switch {
++	case 0 <= digit && digit < 26:
++		return byte(digit + 'a')
++	case 26 <= digit && digit < 36:
++		return byte(digit + ('0' - 26))
++	}
++	panic("cookiejar: internal error in punycode encoding")
++}
++
++// adapt is the bias adaptation function specified in section 6.1.
++func adapt(delta, numPoints int32, firstTime bool) int32 {
++	if firstTime {
++		delta /= damp
++	} else {
++		delta /= 2
++	}
++	delta += delta / numPoints
++	k := int32(0)
++	for delta > ((base-tmin)*tmax)/2 {
++		delta /= base - tmin
++		k += base
++	}
++	return k + (base-tmin+1)*delta/(delta+skew)
++}
++
++// Strictly speaking, the remaining code below deals with IDNA (RFC 5890 and
++// friends) and not Punycode (RFC 3492) per se.
++
++// acePrefix is the ASCII Compatible Encoding prefix.
++const acePrefix = "xn--"
++
++// toASCII converts a domain or domain label to its ASCII form. For example,
++// toASCII("bÃŒcher.example.com") is "xn--bcher-kva.example.com", and
++// toASCII("golang") is "golang".
++func toASCII(s string) (string, error) {
++	if ascii(s) {
++		return s, nil
++	}
++	labels := strings.Split(s, ".")
++	for i, label := range labels {
++		if !ascii(label) {
++			a, err := encode(acePrefix, label)
++			if err != nil {
++				return "", err
++			}
++			labels[i] = a
++		}
++	}
++	return strings.Join(labels, "."), nil
++}
++
++func ascii(s string) bool {
++	for i := 0; i < len(s); i++ {
++		if s[i] >= utf8.RuneSelf {
++			return false
++		}
++	}
++	return true
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/cookiejar/punycode_test.go gcc-4.8.1/libgo/go/net/http/cookiejar/punycode_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/cookiejar/punycode_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/cookiejar/punycode_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,161 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package cookiejar
++
++import (
++	"testing"
++)
++
++var punycodeTestCases = [...]struct {
++	s, encoded string
++}{
++	{"", ""},
++	{"-", "--"},
++	{"-a", "-a-"},
++	{"-a-", "-a--"},
++	{"a", "a-"},
++	{"a-", "a--"},
++	{"a-b", "a-b-"},
++	{"books", "books-"},
++	{"bÃŒcher", "bcher-kva"},
++	{"Helloäžç", "Hello-ck1hg65u"},
++	{"ÃŒ", "tda"},
++	{"ÃŒÃœ", "tdac"},
++
++	// The test cases below come from RFC 3492 section 7.1 with Errata 3026.
++	{
++		// (A) Arabic (Egyptian).
++		"\u0644\u064A\u0647\u0645\u0627\u0628\u062A\u0643\u0644" +
++			"\u0645\u0648\u0634\u0639\u0631\u0628\u064A\u061F",
++		"egbpdaj6bu4bxfgehfvwxn",
++	},
++	{
++		// (B) Chinese (simplified).
++		"\u4ED6\u4EEC\u4E3A\u4EC0\u4E48\u4E0D\u8BF4\u4E2D\u6587",
++		"ihqwcrb4cv8a8dqg056pqjye",
++	},
++	{
++		// (C) Chinese (traditional).
++		"\u4ED6\u5011\u7232\u4EC0\u9EBD\u4E0D\u8AAA\u4E2D\u6587",
++		"ihqwctvzc91f659drss3x8bo0yb",
++	},
++	{
++		// (D) Czech.
++		"\u0050\u0072\u006F\u010D\u0070\u0072\u006F\u0073\u0074" +
++			"\u011B\u006E\u0065\u006D\u006C\u0075\u0076\u00ED\u010D" +
++			"\u0065\u0073\u006B\u0079",
++		"Proprostnemluvesky-uyb24dma41a",
++	},
++	{
++		// (E) Hebrew.
++		"\u05DC\u05DE\u05D4\u05D4\u05DD\u05E4\u05E9\u05D5\u05D8" +
++			"\u05DC\u05D0\u05DE\u05D3\u05D1\u05E8\u05D9\u05DD\u05E2" +
++			"\u05D1\u05E8\u05D9\u05EA",
++		"4dbcagdahymbxekheh6e0a7fei0b",
++	},
++	{
++		// (F) Hindi (Devanagari).
++		"\u092F\u0939\u0932\u094B\u0917\u0939\u093F\u0928\u094D" +
++			"\u0926\u0940\u0915\u094D\u092F\u094B\u0902\u0928\u0939" +
++			"\u0940\u0902\u092C\u094B\u0932\u0938\u0915\u0924\u0947" +
++			"\u0939\u0948\u0902",
++		"i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd",
++	},
++	{
++		// (G) Japanese (kanji and hiragana).
++		"\u306A\u305C\u307F\u3093\u306A\u65E5\u672C\u8A9E\u3092" +
++			"\u8A71\u3057\u3066\u304F\u308C\u306A\u3044\u306E\u304B",
++		"n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa",
++	},
++	{
++		// (H) Korean (Hangul syllables).
++		"\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774" +
++			"\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74" +
++			"\uC5BC\uB9C8\uB098\uC88B\uC744\uAE4C",
++		"989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j" +
++			"psd879ccm6fea98c",
++	},
++	{
++		// (I) Russian (Cyrillic).
++		"\u043F\u043E\u0447\u0435\u043C\u0443\u0436\u0435\u043E" +
++			"\u043D\u0438\u043D\u0435\u0433\u043E\u0432\u043E\u0440" +
++			"\u044F\u0442\u043F\u043E\u0440\u0443\u0441\u0441\u043A" +
++			"\u0438",
++		"b1abfaaepdrnnbgefbadotcwatmq2g4l",
++	},
++	{
++		// (J) Spanish.
++		"\u0050\u006F\u0072\u0071\u0075\u00E9\u006E\u006F\u0070" +
++			"\u0075\u0065\u0064\u0065\u006E\u0073\u0069\u006D\u0070" +
++			"\u006C\u0065\u006D\u0065\u006E\u0074\u0065\u0068\u0061" +
++			"\u0062\u006C\u0061\u0072\u0065\u006E\u0045\u0073\u0070" +
++			"\u0061\u00F1\u006F\u006C",
++		"PorqunopuedensimplementehablarenEspaol-fmd56a",
++	},
++	{
++		// (K) Vietnamese.
++		"\u0054\u1EA1\u0069\u0073\u0061\u006F\u0068\u1ECD\u006B" +
++			"\u0068\u00F4\u006E\u0067\u0074\u0068\u1EC3\u0063\u0068" +
++			"\u1EC9\u006E\u00F3\u0069\u0074\u0069\u1EBF\u006E\u0067" +
++			"\u0056\u0069\u1EC7\u0074",
++		"TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g",
++	},
++	{
++		// (L) 3<nen>B<gumi><kinpachi><sensei>.
++		"\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F",
++		"3B-ww4c5e180e575a65lsy2b",
++	},
++	{
++		// (M) <amuro><namie>-with-SUPER-MONKEYS.
++		"\u5B89\u5BA4\u5948\u7F8E\u6075\u002D\u0077\u0069\u0074" +
++			"\u0068\u002D\u0053\u0055\u0050\u0045\u0052\u002D\u004D" +
++			"\u004F\u004E\u004B\u0045\u0059\u0053",
++		"-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n",
++	},
++	{
++		// (N) Hello-Another-Way-<sorezore><no><basho>.
++		"\u0048\u0065\u006C\u006C\u006F\u002D\u0041\u006E\u006F" +
++			"\u0074\u0068\u0065\u0072\u002D\u0057\u0061\u0079\u002D" +
++			"\u305D\u308C\u305E\u308C\u306E\u5834\u6240",
++		"Hello-Another-Way--fc4qua05auwb3674vfr0b",
++	},
++	{
++		// (O) <hitotsu><yane><no><shita>2.
++		"\u3072\u3068\u3064\u5C4B\u6839\u306E\u4E0B\u0032",
++		"2-u9tlzr9756bt3uc0v",
++	},
++	{
++		// (P) Maji<de>Koi<suru>5<byou><mae>
++		"\u004D\u0061\u006A\u0069\u3067\u004B\u006F\u0069\u3059" +
++			"\u308B\u0035\u79D2\u524D",
++		"MajiKoi5-783gue6qz075azm5e",
++	},
++	{
++		// (Q) <pafii>de<runba>
++		"\u30D1\u30D5\u30A3\u30FC\u0064\u0065\u30EB\u30F3\u30D0",
++		"de-jg4avhby1noc0d",
++	},
++	{
++		// (R) <sono><supiido><de>
++		"\u305D\u306E\u30B9\u30D4\u30FC\u30C9\u3067",
++		"d9juau41awczczp",
++	},
++	{
++		// (S) -> $1.00 <-
++		"\u002D\u003E\u0020\u0024\u0031\u002E\u0030\u0030\u0020" +
++			"\u003C\u002D",
++		"-> $1.00 <--",
++	},
++}
++
++func TestPunycode(t *testing.T) {
++	for _, tc := range punycodeTestCases {
++		if got, err := encode("", tc.s); err != nil {
++			t.Errorf(`encode("", %q): %v`, tc.s, err)
++		} else if got != tc.encoded {
++			t.Errorf(`encode("", %q): got %q, want %q`, tc.s, got, tc.encoded)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/example_test.go gcc-4.8.1/libgo/go/net/http/example_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/example_test.go	2012-10-03 00:27:36.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/http/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -51,6 +51,20 @@
+ }
+ 
+ func ExampleFileServer() {
+-	// we use StripPrefix so that /tmpfiles/somefile will access /tmp/somefile
++	// Simple static webserver:
++	log.Fatal(http.ListenAndServe(":8080", http.FileServer(http.Dir("/usr/share/doc"))))
++}
++
++func ExampleFileServer_stripPrefix() {
++	// To serve a directory on disk (/tmp) under an alternate URL
++	// path (/tmpfiles/), use StripPrefix to modify the request
++	// URL's path before the FileServer sees it:
++	http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
++}
++
++func ExampleStripPrefix() {
++	// To serve a directory on disk (/tmp) under an alternate URL
++	// path (/tmpfiles/), use StripPrefix to modify the request
++	// URL's path before the FileServer sees it:
+ 	http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/export_test.go gcc-4.8.1/libgo/go/net/http/export_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/export_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/export_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -16,10 +16,16 @@
+ 	return newLoggingConn(baseName, c)
+ }
+ 
++func (t *Transport) NumPendingRequestsForTesting() int {
++	t.reqMu.Lock()
++	defer t.reqMu.Unlock()
++	return len(t.reqConn)
++}
++
+ func (t *Transport) IdleConnKeysForTesting() (keys []string) {
+ 	keys = make([]string, 0)
+-	t.idleLk.Lock()
+-	defer t.idleLk.Unlock()
++	t.idleMu.Lock()
++	defer t.idleMu.Unlock()
+ 	if t.idleConn == nil {
+ 		return
+ 	}
+@@ -30,8 +36,8 @@
+ }
+ 
+ func (t *Transport) IdleConnCountForTesting(cacheKey string) int {
+-	t.idleLk.Lock()
+-	defer t.idleLk.Unlock()
++	t.idleMu.Lock()
++	defer t.idleMu.Unlock()
+ 	if t.idleConn == nil {
+ 		return 0
+ 	}
+@@ -48,3 +54,5 @@
+ 	}
+ 	return &timeoutHandler{handler, f, ""}
+ }
++
++var DefaultUserAgent = defaultUserAgent
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/fcgi/child.go gcc-4.8.1/libgo/go/net/http/fcgi/child.go
+--- gcc-4.8.1.orig/libgo/go/net/http/fcgi/child.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/fcgi/child.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,10 +10,12 @@
+ 	"errors"
+ 	"fmt"
+ 	"io"
++	"io/ioutil"
+ 	"net"
+ 	"net/http"
+ 	"net/http/cgi"
+ 	"os"
++	"strings"
+ 	"time"
+ )
+ 
+@@ -152,20 +154,23 @@
+ 
+ var errCloseConn = errors.New("fcgi: connection should be closed")
+ 
++var emptyBody = ioutil.NopCloser(strings.NewReader(""))
++
+ func (c *child) handleRecord(rec *record) error {
+ 	req, ok := c.requests[rec.h.Id]
+ 	if !ok && rec.h.Type != typeBeginRequest && rec.h.Type != typeGetValues {
+ 		// The spec says to ignore unknown request IDs.
+ 		return nil
+ 	}
+-	if ok && rec.h.Type == typeBeginRequest {
+-		// The server is trying to begin a request with the same ID
+-		// as an in-progress request. This is an error.
+-		return errors.New("fcgi: received ID that is already in-flight")
+-	}
+ 
+ 	switch rec.h.Type {
+ 	case typeBeginRequest:
++		if req != nil {
++			// The server is trying to begin a request with the same ID
++			// as an in-progress request. This is an error.
++			return errors.New("fcgi: received ID that is already in-flight")
++		}
++
+ 		var br beginRequest
+ 		if err := br.read(rec.content()); err != nil {
+ 			return err
+@@ -175,6 +180,7 @@
+ 			return nil
+ 		}
+ 		c.requests[rec.h.Id] = newRequest(rec.h.Id, br.flags)
++		return nil
+ 	case typeParams:
+ 		// NOTE(eds): Technically a key-value pair can straddle the boundary
+ 		// between two packets. We buffer until we've received all parameters.
+@@ -183,6 +189,7 @@
+ 			return nil
+ 		}
+ 		req.parseParams()
++		return nil
+ 	case typeStdin:
+ 		content := rec.content()
+ 		if req.pw == nil {
+@@ -191,6 +198,8 @@
+ 				// body could be an io.LimitReader, but it shouldn't matter
+ 				// as long as both sides are behaving.
+ 				body, req.pw = io.Pipe()
++			} else {
++				body = emptyBody
+ 			}
+ 			go c.serveRequest(req, body)
+ 		}
+@@ -201,24 +210,29 @@
+ 		} else if req.pw != nil {
+ 			req.pw.Close()
+ 		}
++		return nil
+ 	case typeGetValues:
+ 		values := map[string]string{"FCGI_MPXS_CONNS": "1"}
+ 		c.conn.writePairs(typeGetValuesResult, 0, values)
++		return nil
+ 	case typeData:
+ 		// If the filter role is implemented, read the data stream here.
++		return nil
+ 	case typeAbortRequest:
++		println("abort")
+ 		delete(c.requests, rec.h.Id)
+ 		c.conn.writeEndRequest(rec.h.Id, 0, statusRequestComplete)
+ 		if !req.keepConn {
+ 			// connection will close upon return
+ 			return errCloseConn
+ 		}
++		return nil
+ 	default:
+ 		b := make([]byte, 8)
+ 		b[0] = byte(rec.h.Type)
+ 		c.conn.writeRecord(typeUnknownType, 0, b)
++		return nil
+ 	}
+-	return nil
+ }
+ 
+ func (c *child) serveRequest(req *request, body io.ReadCloser) {
+@@ -232,11 +246,19 @@
+ 		httpReq.Body = body
+ 		c.handler.ServeHTTP(r, httpReq)
+ 	}
+-	if body != nil {
+-		body.Close()
+-	}
+ 	r.Close()
+ 	c.conn.writeEndRequest(req.reqId, 0, statusRequestComplete)
++
++	// Consume the entire body, so the host isn't still writing to
++	// us when we close the socket below in the !keepConn case,
++	// otherwise we'd send a RST. (golang.org/issue/4183)
++	// TODO(bradfitz): also bound this copy in time. Or send
++	// some sort of abort request to the host, so the host
++	// can properly cut off the client sending all the data.
++	// For now just bound it a little and
++	io.CopyN(ioutil.Discard, body, 100<<20)
++	body.Close()
++
+ 	if !req.keepConn {
+ 		c.conn.Close()
+ 	}
+@@ -267,5 +289,4 @@
+ 		c := newChild(rw, handler)
+ 		go c.serve()
+ 	}
+-	panic("unreachable")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/filetransport_test.go gcc-4.8.1/libgo/go/net/http/filetransport_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/filetransport_test.go	2011-12-12 12:45:08.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/filetransport_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,11 +2,10 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package http_test
++package http
+ 
+ import (
+ 	"io/ioutil"
+-	"net/http"
+ 	"os"
+ 	"path/filepath"
+ 	"testing"
+@@ -32,9 +31,9 @@
+ 	defer os.Remove(dname)
+ 	defer os.Remove(fname)
+ 
+-	tr := &http.Transport{}
+-	tr.RegisterProtocol("file", http.NewFileTransport(http.Dir(dname)))
+-	c := &http.Client{Transport: tr}
++	tr := &Transport{}
++	tr.RegisterProtocol("file", NewFileTransport(Dir(dname)))
++	c := &Client{Transport: tr}
+ 
+ 	fooURLs := []string{"file:///foo.txt", "file://../foo.txt"}
+ 	for _, urlstr := range fooURLs {
+@@ -62,4 +61,5 @@
+ 	if res.StatusCode != 404 {
+ 		t.Errorf("for %s, StatusCode = %d, want 404", badURL, res.StatusCode)
+ 	}
++	res.Body.Close()
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/fs_test.go gcc-4.8.1/libgo/go/net/http/fs_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/fs_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/fs_test.go	2013-07-24 08:09:46.832531000 -0500
+@@ -54,6 +54,7 @@
+ }
+ 
+ func TestServeFile(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		ServeFile(w, r, "testdata/file")
+ 	}))
+@@ -169,6 +170,7 @@
+ }
+ 
+ func TestFSRedirect(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(StripPrefix("/test", FileServer(Dir("."))))
+ 	defer ts.Close()
+ 
+@@ -193,6 +195,7 @@
+ }
+ 
+ func TestFileServerCleans(t *testing.T) {
++	defer afterTest(t)
+ 	ch := make(chan string, 1)
+ 	fs := FileServer(&testFileSystem{func(name string) (File, error) {
+ 		ch <- name
+@@ -224,6 +227,7 @@
+ }
+ 
+ func TestFileServerImplicitLeadingSlash(t *testing.T) {
++	defer afterTest(t)
+ 	tempDir, err := ioutil.TempDir("", "")
+ 	if err != nil {
+ 		t.Fatalf("TempDir: %v", err)
+@@ -302,6 +306,7 @@
+ }
+ 
+ func TestServeFileContentType(t *testing.T) {
++	defer afterTest(t)
+ 	const ctype = "icecream/chocolate"
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.FormValue("override") == "1" {
+@@ -318,12 +323,14 @@
+ 		if h := resp.Header.Get("Content-Type"); h != want {
+ 			t.Errorf("Content-Type mismatch: got %q, want %q", h, want)
+ 		}
++		resp.Body.Close()
+ 	}
+ 	get("0", "text/plain; charset=utf-8")
+ 	get("1", ctype)
+ }
+ 
+ func TestServeFileMimeType(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		ServeFile(w, r, "testdata/style.css")
+ 	}))
+@@ -332,6 +339,7 @@
+ 	if err != nil {
+ 		t.Fatal(err)
+ 	}
++	resp.Body.Close()
+ 	want := "text/css; charset=utf-8"
+ 	if h := resp.Header.Get("Content-Type"); h != want {
+ 		t.Errorf("Content-Type mismatch: got %q, want %q", h, want)
+@@ -339,6 +347,7 @@
+ }
+ 
+ func TestServeFileFromCWD(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		ServeFile(w, r, "fs_test.go")
+ 	}))
+@@ -354,6 +363,7 @@
+ }
+ 
+ func TestServeFileWithContentEncoding(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Header().Set("Content-Encoding", "foo")
+ 		ServeFile(w, r, "testdata/file")
+@@ -363,12 +373,14 @@
+ 	if err != nil {
+ 		t.Fatal(err)
+ 	}
++	resp.Body.Close()
+ 	if g, e := resp.ContentLength, int64(-1); g != e {
+ 		t.Errorf("Content-Length mismatch: got %d, want %d", g, e)
+ 	}
+ }
+ 
+ func TestServeIndexHtml(t *testing.T) {
++	defer afterTest(t)
+ 	const want = "index.html says hello\n"
+ 	ts := httptest.NewServer(FileServer(Dir(".")))
+ 	defer ts.Close()
+@@ -390,6 +402,7 @@
+ }
+ 
+ func TestFileServerZeroByte(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(FileServer(Dir(".")))
+ 	defer ts.Close()
+ 
+@@ -458,6 +471,7 @@
+ }
+ 
+ func TestDirectoryIfNotModified(t *testing.T) {
++	defer afterTest(t)
+ 	const indexContents = "I am a fake index.html file"
+ 	fileMod := time.Unix(1000000000, 0).UTC()
+ 	fileModStr := fileMod.Format(TimeFormat)
+@@ -531,6 +545,7 @@
+ }
+ 
+ func TestServeContent(t *testing.T) {
++	defer afterTest(t)
+ 	type serveParam struct {
+ 		name        string
+ 		modtime     time.Time
+@@ -663,6 +678,7 @@
+ 
+ // verifies that sendfile is being used on Linux
+ func TestLinuxSendfile(t *testing.T) {
++	defer afterTest(t)
+ 	if runtime.GOOS != "linux" {
+ 		t.Skip("skipping; linux-only test")
+ 	}
+@@ -680,8 +696,13 @@
+ 	}
+ 	defer ln.Close()
+ 
++	trace := "trace=sendfile"
++	if runtime.GOARCH != "alpha" {
++		trace = trace + ",sendfile64"
++	}
++
+ 	var buf bytes.Buffer
+-	child := exec.Command("strace", "-f", "-e!sigaltstack", os.Args[0], "-test.run=TestLinuxSendfileChild")
++	child := exec.Command("strace", "-f", "-q", "-e", trace, os.Args[0], "-test.run=TestLinuxSendfileChild")
+ 	child.ExtraFiles = append(child.ExtraFiles, lnf)
+ 	child.Env = append([]string{"GO_WANT_HELPER_PROCESS=1"}, os.Environ()...)
+ 	child.Stdout = &buf
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/header.go gcc-4.8.1/libgo/go/net/http/header.go
+--- gcc-4.8.1.orig/libgo/go/net/http/header.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/header.go	2013-07-16 01:55:04.520470000 -0500
+@@ -103,21 +103,41 @@
+ 	values []string
+ }
+ 
+-type byKey []keyValues
++// A headerSorter implements sort.Interface by sorting a []keyValues
++// by key. It's used as a pointer, so it can fit in a sort.Interface
++// interface value without allocation.
++type headerSorter struct {
++	kvs []keyValues
++}
++
++func (s *headerSorter) Len() int           { return len(s.kvs) }
++func (s *headerSorter) Swap(i, j int)      { s.kvs[i], s.kvs[j] = s.kvs[j], s.kvs[i] }
++func (s *headerSorter) Less(i, j int) bool { return s.kvs[i].key < s.kvs[j].key }
+ 
+-func (s byKey) Len() int           { return len(s) }
+-func (s byKey) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
+-func (s byKey) Less(i, j int) bool { return s[i].key < s[j].key }
++// TODO: convert this to a sync.Cache (issue 4720)
++var headerSorterCache = make(chan *headerSorter, 8)
+ 
+-func (h Header) sortedKeyValues(exclude map[string]bool) []keyValues {
+-	kvs := make([]keyValues, 0, len(h))
++// sortedKeyValues returns h's keys sorted in the returned kvs
++// slice. The headerSorter used to sort is also returned, for possible
++// return to headerSorterCache.
++func (h Header) sortedKeyValues(exclude map[string]bool) (kvs []keyValues, hs *headerSorter) {
++	select {
++	case hs = <-headerSorterCache:
++	default:
++		hs = new(headerSorter)
++	}
++	if cap(hs.kvs) < len(h) {
++		hs.kvs = make([]keyValues, 0, len(h))
++	}
++	kvs = hs.kvs[:0]
+ 	for k, vv := range h {
+ 		if !exclude[k] {
+ 			kvs = append(kvs, keyValues{k, vv})
+ 		}
+ 	}
+-	sort.Sort(byKey(kvs))
+-	return kvs
++	hs.kvs = kvs
++	sort.Sort(hs)
++	return kvs, hs
+ }
+ 
+ // WriteSubset writes a header in wire format.
+@@ -127,7 +147,8 @@
+ 	if !ok {
+ 		ws = stringWriter{w}
+ 	}
+-	for _, kv := range h.sortedKeyValues(exclude) {
++	kvs, sorter := h.sortedKeyValues(exclude)
++	for _, kv := range kvs {
+ 		for _, v := range kv.values {
+ 			v = headerNewlineToSpace.Replace(v)
+ 			v = textproto.TrimString(v)
+@@ -138,6 +159,10 @@
+ 			}
+ 		}
+ 	}
++	select {
++	case headerSorterCache <- sorter:
++	default:
++	}
+ 	return nil
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/header_test.go gcc-4.8.1/libgo/go/net/http/header_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/header_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/header_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -175,38 +175,33 @@
+ 	}
+ }
+ 
+-func BenchmarkHeaderWriteSubset(b *testing.B) {
+-	doHeaderWriteSubset(b.N, b)
++var testHeader = Header{
++	"Content-Length": {"123"},
++	"Content-Type":   {"text/plain"},
++	"Date":           {"some date at some time Z"},
++	"Server":         {DefaultUserAgent},
+ }
+ 
+-func TestHeaderWriteSubsetMallocs(t *testing.T) {
+-	doHeaderWriteSubset(100, t)
+-}
++var buf bytes.Buffer
+ 
+-type errorfer interface {
+-	Errorf(string, ...interface{})
++func BenchmarkHeaderWriteSubset(b *testing.B) {
++	b.ReportAllocs()
++	for i := 0; i < b.N; i++ {
++		buf.Reset()
++		testHeader.WriteSubset(&buf, nil)
++	}
+ }
+ 
+-func doHeaderWriteSubset(n int, t errorfer) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
+-	h := Header(map[string][]string{
+-		"Content-Length": {"123"},
+-		"Content-Type":   {"text/plain"},
+-		"Date":           {"some date at some time Z"},
+-		"Server":         {"Go http package"},
+-	})
+-	var buf bytes.Buffer
+-	var m0 runtime.MemStats
+-	runtime.ReadMemStats(&m0)
+-	for i := 0; i < n; i++ {
+-		buf.Reset()
+-		h.WriteSubset(&buf, nil)
++func TestHeaderWriteSubsetMallocs(t *testing.T) {
++	t.Skip("Skipping alloc count test on gccgo")
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
+ 	}
+-	var m1 runtime.MemStats
+-	runtime.ReadMemStats(&m1)
+-	if mallocs := m1.Mallocs - m0.Mallocs; n >= 100 && mallocs >= uint64(n) {
+-		// TODO(bradfitz,rsc): once we can sort without allocating,
+-		// make this an error.  See http://golang.org/issue/3761
+-		// t.Errorf("did %d mallocs (>= %d iterations); should have avoided mallocs", mallocs, n)
++	n := testing.AllocsPerRun(100, func() {
++		buf.Reset()
++		testHeader.WriteSubset(&buf, nil)
++	})
++	if n > 0 {
++		t.Errorf("mallocs = %d; want 0", n)
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/httptest/server.go gcc-4.8.1/libgo/go/net/http/httptest/server.go
+--- gcc-4.8.1.orig/libgo/go/net/http/httptest/server.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/httptest/server.go	2013-07-16 01:55:04.520470000 -0500
+@@ -21,7 +21,11 @@
+ type Server struct {
+ 	URL      string // base URL of form http://ipaddr:port with no trailing slash
+ 	Listener net.Listener
+-	TLS      *tls.Config // nil if not using TLS
++
++	// TLS is the optional TLS configuration, populated with a new config
++	// after TLS is started. If set on an unstarted server before StartTLS
++	// is called, existing fields are copied into the new config.
++	TLS *tls.Config
+ 
+ 	// Config may be changed after calling NewUnstartedServer and
+ 	// before Start or StartTLS.
+@@ -119,9 +123,16 @@
+ 		panic(fmt.Sprintf("httptest: NewTLSServer: %v", err))
+ 	}
+ 
+-	s.TLS = &tls.Config{
+-		NextProtos:   []string{"http/1.1"},
+-		Certificates: []tls.Certificate{cert},
++	existingConfig := s.TLS
++	s.TLS = new(tls.Config)
++	if existingConfig != nil {
++		*s.TLS = *existingConfig
++	}
++	if s.TLS.NextProtos == nil {
++		s.TLS.NextProtos = []string{"http/1.1"}
++	}
++	if len(s.TLS.Certificates) == 0 {
++		s.TLS.Certificates = []tls.Certificate{cert}
+ 	}
+ 	tlsListener := tls.NewListener(s.Listener, s.TLS)
+ 
+@@ -189,28 +200,29 @@
+ 	h.h.ServeHTTP(w, r)
+ }
+ 
+-// localhostCert is a PEM-encoded TLS cert with SAN DNS names
++// localhostCert is a PEM-encoded TLS cert with SAN IPs
+ // "127.0.0.1" and "[::1]", expiring at the last second of 2049 (the end
+ // of ASN.1 time).
++// generated from src/pkg/crypto/tls:
++// go run generate_cert.go  --rsa-bits 512 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h
+ var localhostCert = []byte(`-----BEGIN CERTIFICATE-----
+-MIIBTTCB+qADAgECAgEAMAsGCSqGSIb3DQEBBTAAMB4XDTcwMDEwMTAwMDAwMFoX
+-DTQ5MTIzMTIzNTk1OVowADBaMAsGCSqGSIb3DQEBAQNLADBIAkEAsuA5mAFMj6Q7
+-qoBzcvKzIq4kzuT5epSp2AkcQfyBHm7K13Ws7u+0b5Vb9gqTf5cAiIKcrtrXVqkL
+-8i1UQF6AzwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCACQwEgYDVR0TAQH/BAgwBgEB
+-/wIBATANBgNVHQ4EBgQEAQIDBDAPBgNVHSMECDAGgAQBAgMEMBsGA1UdEQQUMBKC
+-CTEyNy4wLjAuMYIFWzo6MV0wCwYJKoZIhvcNAQEFA0EAj1Jsn/h2KHy7dgqutZNB
+-nCGlNN+8vw263Bax9MklR85Ti6a0VWSvp/fDQZUADvmFTDkcXeA24pqmdUxeQDWw
+-Pg==
++MIIBdzCCASOgAwIBAgIBADALBgkqhkiG9w0BAQUwEjEQMA4GA1UEChMHQWNtZSBD
++bzAeFw03MDAxMDEwMDAwMDBaFw00OTEyMzEyMzU5NTlaMBIxEDAOBgNVBAoTB0Fj
++bWUgQ28wWjALBgkqhkiG9w0BAQEDSwAwSAJBAN55NcYKZeInyTuhcCwFMhDHCmwa
++IUSdtXdcbItRB/yfXGBhiex00IaLXQnSU+QZPRZWYqeTEbFSgihqi1PUDy8CAwEA
++AaNoMGYwDgYDVR0PAQH/BAQDAgCkMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA8GA1Ud
++EwEB/wQFMAMBAf8wLgYDVR0RBCcwJYILZXhhbXBsZS5jb22HBH8AAAGHEAAAAAAA
++AAAAAAAAAAAAAAEwCwYJKoZIhvcNAQEFA0EAAoQn/ytgqpiLcZu9XKbCJsJcvkgk
++Se6AbGXgSlq+ZCEVo0qIwSgeBqmsJxUu7NCSOwVJLYNEBO2DtIxoYVk+MA==
+ -----END CERTIFICATE-----`)
+ 
+ // localhostKey is the private key for localhostCert.
+ var localhostKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
+-MIIBPQIBAAJBALLgOZgBTI+kO6qAc3LysyKuJM7k+XqUqdgJHEH8gR5uytd1rO7v
+-tG+VW/YKk3+XAIiCnK7a11apC/ItVEBegM8CAwEAAQJBAI5sxq7naeR9ahyqRkJi
+-SIv2iMxLuPEHaezf5CYOPWjSjBPyVhyRevkhtqEjF/WkgL7C2nWpYHsUcBDBQVF0
+-3KECIQDtEGB2ulnkZAahl3WuJziXGLB+p8Wgx7wzSM6bHu1c6QIhAMEp++CaS+SJ
+-/TrU0zwY/fW4SvQeb49BPZUF3oqR8Xz3AiEA1rAJHBzBgdOQKdE3ksMUPcnvNJSN
+-poCcELmz2clVXtkCIQCLytuLV38XHToTipR4yMl6O+6arzAjZ56uq7m7ZRV0TwIh
+-AM65XAOw8Dsg9Kq78aYXiOEDc5DL0sbFUu/SlmRcCg93
+------END RSA PRIVATE KEY-----
+-`)
++MIIBPAIBAAJBAN55NcYKZeInyTuhcCwFMhDHCmwaIUSdtXdcbItRB/yfXGBhiex0
++0IaLXQnSU+QZPRZWYqeTEbFSgihqi1PUDy8CAwEAAQJBAQdUx66rfh8sYsgfdcvV
++NoafYpnEcB5s4m/vSVe6SU7dCK6eYec9f9wpT353ljhDUHq3EbmE4foNzJngh35d
++AekCIQDhRQG5Li0Wj8TM4obOnnXUXf1jRv0UkzE9AHWLG5q3AwIhAPzSjpYUDjVW
++MCUXgckTpKCuGwbJk7424Nb8bLzf3kllAiA5mUBgjfr/WtFSJdWcPQ4Zt9KTMNKD
++EUO0ukpTwEIl6wIhAMbGqZK3zAAFdq8DD2jPx+UJXnh0rnOkZBzDtJ6/iN69AiEA
++1Aq8MJgTaYsDQWyU/hDq5YkDJc9e9DSCvUIzqxQWMQE=
++-----END RSA PRIVATE KEY-----`)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/httputil/dump_test.go gcc-4.8.1/libgo/go/net/http/httputil/dump_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/httputil/dump_test.go	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/httputil/dump_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -68,7 +68,7 @@
+ 
+ 		WantDumpOut: "GET /foo HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Accept-Encoding: gzip\r\n\r\n",
+ 	},
+ 
+@@ -80,7 +80,7 @@
+ 
+ 		WantDumpOut: "GET /foo HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Accept-Encoding: gzip\r\n\r\n",
+ 	},
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/httputil/reverseproxy.go gcc-4.8.1/libgo/go/net/http/httputil/reverseproxy.go
+--- gcc-4.8.1.orig/libgo/go/net/http/httputil/reverseproxy.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/http/httputil/reverseproxy.go	2013-07-16 01:55:04.520470000 -0500
+@@ -81,6 +81,19 @@
+ 	}
+ }
+ 
++// Hop-by-hop headers. These are removed when sent to the backend.
++// http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
++var hopHeaders = []string{
++	"Connection",
++	"Keep-Alive",
++	"Proxy-Authenticate",
++	"Proxy-Authorization",
++	"Te", // canonicalized version of "TE"
++	"Trailers",
++	"Transfer-Encoding",
++	"Upgrade",
++}
++
+ func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
+ 	transport := p.Transport
+ 	if transport == nil {
+@@ -96,14 +109,21 @@
+ 	outreq.ProtoMinor = 1
+ 	outreq.Close = false
+ 
+-	// Remove the connection header to the backend.  We want a
+-	// persistent connection, regardless of what the client sent
+-	// to us.  This is modifying the same underlying map from req
+-	// (shallow copied above) so we only copy it if necessary.
+-	if outreq.Header.Get("Connection") != "" {
+-		outreq.Header = make(http.Header)
+-		copyHeader(outreq.Header, req.Header)
+-		outreq.Header.Del("Connection")
++	// Remove hop-by-hop headers to the backend.  Especially
++	// important is "Connection" because we want a persistent
++	// connection, regardless of what the client sent to us.  This
++	// is modifying the same underlying map from req (shallow
++	// copied above) so we only copy it if necessary.
++	copiedHeaders := false
++	for _, h := range hopHeaders {
++		if outreq.Header.Get(h) != "" {
++			if !copiedHeaders {
++				outreq.Header = make(http.Header)
++				copyHeader(outreq.Header, req.Header)
++				copiedHeaders = true
++			}
++			outreq.Header.Del(h)
++		}
+ 	}
+ 
+ 	if clientIP, _, err := net.SplitHostPort(req.RemoteAddr); err == nil {
+@@ -182,7 +202,6 @@
+ 			m.lk.Unlock()
+ 		}
+ 	}
+-	panic("unreached")
+ }
+ 
+ func (m *maxLatencyWriter) stop() { m.done <- true }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/httputil/reverseproxy_test.go gcc-4.8.1/libgo/go/net/http/httputil/reverseproxy_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/httputil/reverseproxy_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/http/httputil/reverseproxy_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -29,6 +29,9 @@
+ 		if c := r.Header.Get("Connection"); c != "" {
+ 			t.Errorf("handler got Connection header value %q", c)
+ 		}
++		if c := r.Header.Get("Upgrade"); c != "" {
++			t.Errorf("handler got Upgrade header value %q", c)
++		}
+ 		if g, e := r.Host, "some-name"; g != e {
+ 			t.Errorf("backend got Host header %q, want %q", g, e)
+ 		}
+@@ -49,6 +52,7 @@
+ 	getReq, _ := http.NewRequest("GET", frontend.URL, nil)
+ 	getReq.Host = "some-name"
+ 	getReq.Header.Set("Connection", "close")
++	getReq.Header.Set("Upgrade", "foo")
+ 	getReq.Close = true
+ 	res, err := http.DefaultClient.Do(getReq)
+ 	if err != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/jar.go gcc-4.8.1/libgo/go/net/http/jar.go
+--- gcc-4.8.1.orig/libgo/go/net/http/jar.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/jar.go	2013-07-16 01:55:04.520470000 -0500
+@@ -12,6 +12,8 @@
+ //
+ // Implementations of CookieJar must be safe for concurrent use by multiple
+ // goroutines.
++//
++// The net/http/cookiejar package provides a CookieJar implementation.
+ type CookieJar interface {
+ 	// SetCookies handles the receipt of the cookies in a reply for the
+ 	// given URL.  It may or may not choose to save the cookies, depending
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/npn_test.go gcc-4.8.1/libgo/go/net/http/npn_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/npn_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/npn_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,118 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package http_test
++
++import (
++	"bufio"
++	"crypto/tls"
++	"fmt"
++	"io"
++	"io/ioutil"
++	. "net/http"
++	"net/http/httptest"
++	"strings"
++	"testing"
++)
++
++func TestNextProtoUpgrade(t *testing.T) {
++	ts := httptest.NewUnstartedServer(HandlerFunc(func(w ResponseWriter, r *Request) {
++		fmt.Fprintf(w, "path=%s,proto=", r.URL.Path)
++		if r.TLS != nil {
++			w.Write([]byte(r.TLS.NegotiatedProtocol))
++		}
++		if r.RemoteAddr == "" {
++			t.Error("request with no RemoteAddr")
++		}
++		if r.Body == nil {
++			t.Errorf("request with nil Body")
++		}
++	}))
++	ts.TLS = &tls.Config{
++		NextProtos: []string{"unhandled-proto", "tls-0.9"},
++	}
++	ts.Config.TLSNextProto = map[string]func(*Server, *tls.Conn, Handler){
++		"tls-0.9": handleTLSProtocol09,
++	}
++	ts.StartTLS()
++	defer ts.Close()
++
++	tr := newTLSTransport(t, ts)
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	// Normal request, without NPN.
++	{
++		res, err := c.Get(ts.URL)
++		if err != nil {
++			t.Fatal(err)
++		}
++		body, err := ioutil.ReadAll(res.Body)
++		if err != nil {
++			t.Fatal(err)
++		}
++		if want := "path=/,proto="; string(body) != want {
++			t.Errorf("plain request = %q; want %q", body, want)
++		}
++	}
++
++	// Request to an advertised but unhandled NPN protocol.
++	// Server will hang up.
++	{
++		tr.CloseIdleConnections()
++		tr.TLSClientConfig.NextProtos = []string{"unhandled-proto"}
++		_, err := c.Get(ts.URL)
++		if err == nil {
++			t.Errorf("expected error on unhandled-proto request")
++		}
++	}
++
++	// Request using the "tls-0.9" protocol, which we register here.
++	// It is HTTP/0.9 over TLS.
++	{
++		tlsConfig := newTLSTransport(t, ts).TLSClientConfig
++		tlsConfig.NextProtos = []string{"tls-0.9"}
++		conn, err := tls.Dial("tcp", ts.Listener.Addr().String(), tlsConfig)
++		if err != nil {
++			t.Fatal(err)
++		}
++		conn.Write([]byte("GET /foo\n"))
++		body, err := ioutil.ReadAll(conn)
++		if err != nil {
++			t.Fatal(err)
++		}
++		if want := "path=/foo,proto=tls-0.9"; string(body) != want {
++			t.Errorf("plain request = %q; want %q", body, want)
++		}
++	}
++}
++
++// handleTLSProtocol09 implements the HTTP/0.9 protocol over TLS, for the
++// TestNextProtoUpgrade test.
++func handleTLSProtocol09(srv *Server, conn *tls.Conn, h Handler) {
++	br := bufio.NewReader(conn)
++	line, err := br.ReadString('\n')
++	if err != nil {
++		return
++	}
++	line = strings.TrimSpace(line)
++	path := strings.TrimPrefix(line, "GET ")
++	if path == line {
++		return
++	}
++	req, _ := NewRequest("GET", path, nil)
++	req.Proto = "HTTP/0.9"
++	req.ProtoMajor = 0
++	req.ProtoMinor = 9
++	rw := &http09Writer{conn, make(Header)}
++	h.ServeHTTP(rw, req)
++}
++
++type http09Writer struct {
++	io.Writer
++	h Header
++}
++
++func (w http09Writer) Header() Header  { return w.h }
++func (w http09Writer) WriteHeader(int) {} // no headers
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/pprof/pprof.go gcc-4.8.1/libgo/go/net/http/pprof/pprof.go
+--- gcc-4.8.1.orig/libgo/go/net/http/pprof/pprof.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/pprof/pprof.go	2013-07-16 01:55:04.520470000 -0500
+@@ -172,7 +172,7 @@
+ // listing the available profiles.
+ func Index(w http.ResponseWriter, r *http.Request) {
+ 	if strings.HasPrefix(r.URL.Path, "/debug/pprof/") {
+-		name := r.URL.Path[len("/debug/pprof/"):]
++		name := strings.TrimPrefix(r.URL.Path, "/debug/pprof/")
+ 		if name != "" {
+ 			handler(name).ServeHTTP(w, r)
+ 			return
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/request.go gcc-4.8.1/libgo/go/net/http/request.go
+--- gcc-4.8.1.orig/libgo/go/net/http/request.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/request.go	2013-07-16 01:55:04.520470000 -0500
+@@ -48,7 +48,7 @@
+ 	ErrUnexpectedTrailer    = &ProtocolError{"trailer header without chunked transfer encoding"}
+ 	ErrMissingContentLength = &ProtocolError{"missing ContentLength in HEAD response"}
+ 	ErrNotMultipart         = &ProtocolError{"request Content-Type isn't multipart/form-data"}
+-	ErrMissingBoundary      = &ProtocolError{"no multipart boundary param Content-Type"}
++	ErrMissingBoundary      = &ProtocolError{"no multipart boundary param in Content-Type"}
+ )
+ 
+ type badStringError struct {
+@@ -283,7 +283,7 @@
+ 	return def
+ }
+ 
+-const defaultUserAgent = "Go http package"
++const defaultUserAgent = "Go 1.1 package http"
+ 
+ // Write writes an HTTP/1.1 request -- header and body -- in wire format.
+ // This method consults the following fields of the request:
+@@ -467,10 +467,42 @@
+ 	r.Header.Set("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(s)))
+ }
+ 
++// parseRequestLine parses "GET /foo HTTP/1.1" into its three parts.
++func parseRequestLine(line string) (method, requestURI, proto string, ok bool) {
++	s1 := strings.Index(line, " ")
++	s2 := strings.Index(line[s1+1:], " ")
++	if s1 < 0 || s2 < 0 {
++		return
++	}
++	s2 += s1 + 1
++	return line[:s1], line[s1+1 : s2], line[s2+1:], true
++}
++
++// TODO(bradfitz): use a sync.Cache when available
++var textprotoReaderCache = make(chan *textproto.Reader, 4)
++
++func newTextprotoReader(br *bufio.Reader) *textproto.Reader {
++	select {
++	case r := <-textprotoReaderCache:
++		r.R = br
++		return r
++	default:
++		return textproto.NewReader(br)
++	}
++}
++
++func putTextprotoReader(r *textproto.Reader) {
++	r.R = nil
++	select {
++	case textprotoReaderCache <- r:
++	default:
++	}
++}
++
+ // ReadRequest reads and parses a request from b.
+ func ReadRequest(b *bufio.Reader) (req *Request, err error) {
+ 
+-	tp := textproto.NewReader(b)
++	tp := newTextprotoReader(b)
+ 	req = new(Request)
+ 
+ 	// First line: GET /index.html HTTP/1.0
+@@ -479,18 +511,18 @@
+ 		return nil, err
+ 	}
+ 	defer func() {
++		putTextprotoReader(tp)
+ 		if err == io.EOF {
+ 			err = io.ErrUnexpectedEOF
+ 		}
+ 	}()
+ 
+-	var f []string
+-	if f = strings.SplitN(s, " ", 3); len(f) < 3 {
++	var ok bool
++	req.Method, req.RequestURI, req.Proto, ok = parseRequestLine(s)
++	if !ok {
+ 		return nil, &badStringError{"malformed HTTP request", s}
+ 	}
+-	req.Method, req.RequestURI, req.Proto = f[0], f[1], f[2]
+ 	rawurl := req.RequestURI
+-	var ok bool
+ 	if req.ProtoMajor, req.ProtoMinor, ok = ParseHTTPVersion(req.Proto); !ok {
+ 		return nil, &badStringError{"malformed HTTP version", req.Proto}
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/request_test.go gcc-4.8.1/libgo/go/net/http/request_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/request_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/request_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -262,7 +262,39 @@
+ 			t.Fatal(err)
+ 		}
+ 		if req.ContentLength != tt.want {
+-			t.Errorf("ContentLength(%#T) = %d; want %d", tt.r, req.ContentLength, tt.want)
++			t.Errorf("ContentLength(%T) = %d; want %d", tt.r, req.ContentLength, tt.want)
++		}
++	}
++}
++
++var parseHTTPVersionTests = []struct {
++	vers         string
++	major, minor int
++	ok           bool
++}{
++	{"HTTP/0.9", 0, 9, true},
++	{"HTTP/1.0", 1, 0, true},
++	{"HTTP/1.1", 1, 1, true},
++	{"HTTP/3.14", 3, 14, true},
++
++	{"HTTP", 0, 0, false},
++	{"HTTP/one.one", 0, 0, false},
++	{"HTTP/1.1/", 0, 0, false},
++	{"HTTP/-1,0", 0, 0, false},
++	{"HTTP/0,-1", 0, 0, false},
++	{"HTTP/", 0, 0, false},
++	{"HTTP/1,1", 0, 0, false},
++}
++
++func TestParseHTTPVersion(t *testing.T) {
++	for _, tt := range parseHTTPVersionTests {
++		major, minor, ok := ParseHTTPVersion(tt.vers)
++		if ok != tt.ok || major != tt.major || minor != tt.minor {
++			type version struct {
++				major, minor int
++				ok           bool
++			}
++			t.Errorf("failed to parse %q, expected: %#v, got %#v", tt.vers, version{tt.major, tt.minor, tt.ok}, version{major, minor, ok})
+ 		}
+ 	}
+ }
+@@ -289,7 +321,7 @@
+ 	want := []string{
+ 		"GET / HTTP/1.1\r\n",
+ 		"Host: foo.com\r\n",
+-		"User-Agent: Go http package\r\n",
++		"User-Agent: " + DefaultUserAgent + "\r\n",
+ 		"\r\n",
+ 	}
+ 	if !reflect.DeepEqual(got, want) {
+@@ -401,3 +433,81 @@
+ ` + textbValue + `
+ --MyBoundary--
+ `
++
++func benchmarkReadRequest(b *testing.B, request string) {
++	request = request + "\n"                             // final \n
++	request = strings.Replace(request, "\n", "\r\n", -1) // expand \n to \r\n
++	b.SetBytes(int64(len(request)))
++	r := bufio.NewReader(&infiniteReader{buf: []byte(request)})
++	b.ReportAllocs()
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, err := ReadRequest(r)
++		if err != nil {
++			b.Fatalf("failed to read request: %v", err)
++		}
++	}
++}
++
++// infiniteReader satisfies Read requests as if the contents of buf
++// loop indefinitely.
++type infiniteReader struct {
++	buf    []byte
++	offset int
++}
++
++func (r *infiniteReader) Read(b []byte) (int, error) {
++	n := copy(b, r.buf[r.offset:])
++	r.offset = (r.offset + n) % len(r.buf)
++	return n, nil
++}
++
++func BenchmarkReadRequestChrome(b *testing.B) {
++	// https://github.com/felixge/node-http-perf/blob/master/fixtures/get.http
++	benchmarkReadRequest(b, `GET / HTTP/1.1
++Host: localhost:8080
++Connection: keep-alive
++Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
++User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
++Accept-Encoding: gzip,deflate,sdch
++Accept-Language: en-US,en;q=0.8
++Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
++Cookie: __utma=1.1978842379.1323102373.1323102373.1323102373.1; EPi:NumberOfVisits=1,2012-02-28T13:42:18; CrmSession=5b707226b9563e1bc69084d07a107c98; plushContainerWidth=100%25; plushNoTopMenu=0; hudson_auto_refresh=false
++`)
++}
++
++func BenchmarkReadRequestCurl(b *testing.B) {
++	// curl http://localhost:8080/
++	benchmarkReadRequest(b, `GET / HTTP/1.1
++User-Agent: curl/7.27.0
++Host: localhost:8080
++Accept: */*
++`)
++}
++
++func BenchmarkReadRequestApachebench(b *testing.B) {
++	// ab -n 1 -c 1 http://localhost:8080/
++	benchmarkReadRequest(b, `GET / HTTP/1.0
++Host: localhost:8080
++User-Agent: ApacheBench/2.3
++Accept: */*
++`)
++}
++
++func BenchmarkReadRequestSiege(b *testing.B) {
++	// siege -r 1 -c 1 http://localhost:8080/
++	benchmarkReadRequest(b, `GET / HTTP/1.1
++Host: localhost:8080
++Accept: */*
++Accept-Encoding: gzip
++User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
++Connection: keep-alive
++`)
++}
++
++func BenchmarkReadRequestWrk(b *testing.B) {
++	// wrk -t 1 -r 1 -c 1 http://localhost:8080/
++	benchmarkReadRequest(b, `GET / HTTP/1.1
++Host: localhost:8080
++`)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/requestwrite_test.go gcc-4.8.1/libgo/go/net/http/requestwrite_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/requestwrite_test.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/requestwrite_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -93,13 +93,13 @@
+ 
+ 		WantWrite: "GET /search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("abcdef") + chunk(""),
+ 
+ 		WantProxy: "GET http://www.google.com/search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("abcdef") + chunk(""),
+ 	},
+@@ -123,14 +123,14 @@
+ 
+ 		WantWrite: "POST /search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Connection: close\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("abcdef") + chunk(""),
+ 
+ 		WantProxy: "POST http://www.google.com/search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Connection: close\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("abcdef") + chunk(""),
+@@ -156,7 +156,7 @@
+ 
+ 		WantWrite: "POST /search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Connection: close\r\n" +
+ 			"Content-Length: 6\r\n" +
+ 			"\r\n" +
+@@ -164,7 +164,7 @@
+ 
+ 		WantProxy: "POST http://www.google.com/search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Connection: close\r\n" +
+ 			"Content-Length: 6\r\n" +
+ 			"\r\n" +
+@@ -187,14 +187,14 @@
+ 
+ 		WantWrite: "POST / HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Content-Length: 6\r\n" +
+ 			"\r\n" +
+ 			"abcdef",
+ 
+ 		WantProxy: "POST http://example.com/ HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Content-Length: 6\r\n" +
+ 			"\r\n" +
+ 			"abcdef",
+@@ -210,7 +210,7 @@
+ 
+ 		WantWrite: "GET /search HTTP/1.1\r\n" +
+ 			"Host: www.google.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"\r\n",
+ 	},
+ 
+@@ -232,13 +232,13 @@
+ 		// Also, nginx expects it for POST and PUT.
+ 		WantWrite: "POST / HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Content-Length: 0\r\n" +
+ 			"\r\n",
+ 
+ 		WantProxy: "POST / HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Content-Length: 0\r\n" +
+ 			"\r\n",
+ 	},
+@@ -258,13 +258,13 @@
+ 
+ 		WantWrite: "POST / HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("x") + chunk(""),
+ 
+ 		WantProxy: "POST / HTTP/1.1\r\n" +
+ 			"Host: example.com\r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"Transfer-Encoding: chunked\r\n\r\n" +
+ 			chunk("x") + chunk(""),
+ 	},
+@@ -325,9 +325,96 @@
+ 
+ 		WantWrite: "GET /foo HTTP/1.1\r\n" +
+ 			"Host: \r\n" +
+-			"User-Agent: Go http package\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
+ 			"X-Foo: X-Bar\r\n\r\n",
+ 	},
++
++	// If no Request.Host and no Request.URL.Host, we send
++	// an empty Host header, and don't use
++	// Request.Header["Host"]. This is just testing that
++	// we don't change Go 1.0 behavior.
++	{
++		Req: Request{
++			Method: "GET",
++			Host:   "",
++			URL: &url.URL{
++				Scheme: "http",
++				Host:   "",
++				Path:   "/search",
++			},
++			ProtoMajor: 1,
++			ProtoMinor: 1,
++			Header: Header{
++				"Host": []string{"bad.example.com"},
++			},
++		},
++
++		WantWrite: "GET /search HTTP/1.1\r\n" +
++			"Host: \r\n" +
++			"User-Agent: Go 1.1 package http\r\n\r\n",
++	},
++
++	// Opaque test #1 from golang.org/issue/4860
++	{
++		Req: Request{
++			Method: "GET",
++			URL: &url.URL{
++				Scheme: "http",
++				Host:   "www.google.com",
++				Opaque: "/%2F/%2F/",
++			},
++			ProtoMajor: 1,
++			ProtoMinor: 1,
++			Header:     Header{},
++		},
++
++		WantWrite: "GET /%2F/%2F/ HTTP/1.1\r\n" +
++			"Host: www.google.com\r\n" +
++			"User-Agent: Go 1.1 package http\r\n\r\n",
++	},
++
++	// Opaque test #2 from golang.org/issue/4860
++	{
++		Req: Request{
++			Method: "GET",
++			URL: &url.URL{
++				Scheme: "http",
++				Host:   "x.google.com",
++				Opaque: "//y.google.com/%2F/%2F/",
++			},
++			ProtoMajor: 1,
++			ProtoMinor: 1,
++			Header:     Header{},
++		},
++
++		WantWrite: "GET http://y.google.com/%2F/%2F/ HTTP/1.1\r\n" +
++			"Host: x.google.com\r\n" +
++			"User-Agent: Go 1.1 package http\r\n\r\n",
++	},
++
++	// Testing custom case in header keys. Issue 5022.
++	{
++		Req: Request{
++			Method: "GET",
++			URL: &url.URL{
++				Scheme: "http",
++				Host:   "www.google.com",
++				Path:   "/",
++			},
++			Proto:      "HTTP/1.1",
++			ProtoMajor: 1,
++			ProtoMinor: 1,
++			Header: Header{
++				"ALL-CAPS": {"x"},
++			},
++		},
++
++		WantWrite: "GET / HTTP/1.1\r\n" +
++			"Host: www.google.com\r\n" +
++			"User-Agent: Go 1.1 package http\r\n" +
++			"ALL-CAPS: x\r\n" +
++			"\r\n",
++	},
+ }
+ 
+ func TestRequestWrite(t *testing.T) {
+@@ -411,7 +498,7 @@
+ 	}
+ 	expected := "POST / HTTP/1.1\r\n" +
+ 		"Host: foo.com\r\n" +
+-		"User-Agent: Go http package\r\n" +
++		"User-Agent: Go 1.1 package http\r\n" +
+ 		"Transfer-Encoding: chunked\r\n\r\n" +
+ 		// TODO: currently we don't buffer before chunking, so we get a
+ 		// single "m" chunk before the other chunks, as this was the 1-byte
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/response.go gcc-4.8.1/libgo/go/net/http/response.go
+--- gcc-4.8.1.orig/libgo/go/net/http/response.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/response.go	2013-07-16 01:55:04.520470000 -0500
+@@ -46,6 +46,9 @@
+ 	// The http Client and Transport guarantee that Body is always
+ 	// non-nil, even on responses without a body or responses with
+ 	// a zero-lengthed body.
++	//
++	// The Body is automatically dechunked if the server replied
++	// with a "chunked" Transfer-Encoding.
+ 	Body io.ReadCloser
+ 
+ 	// ContentLength records the length of the associated content.  The
+@@ -198,9 +201,7 @@
+ 	}
+ 	protoMajor, protoMinor := strconv.Itoa(r.ProtoMajor), strconv.Itoa(r.ProtoMinor)
+ 	statusCode := strconv.Itoa(r.StatusCode) + " "
+-	if strings.HasPrefix(text, statusCode) {
+-		text = text[len(statusCode):]
+-	}
++	text = strings.TrimPrefix(text, statusCode)
+ 	io.WriteString(w, "HTTP/"+protoMajor+"."+protoMinor+" "+statusCode+text+"\r\n")
+ 
+ 	// Process Body,ContentLength,Close,Trailer
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/response_test.go gcc-4.8.1/libgo/go/net/http/response_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/response_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/response_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -112,8 +112,8 @@
+ 			ProtoMinor: 0,
+ 			Request:    dummyReq("GET"),
+ 			Header: Header{
+-				"Connection":     {"close"}, // TODO(rsc): Delete?
+-				"Content-Length": {"10"},    // TODO(rsc): Delete?
++				"Connection":     {"close"},
++				"Content-Length": {"10"},
+ 			},
+ 			Close:         true,
+ 			ContentLength: 10,
+@@ -157,7 +157,7 @@
+ 			"Content-Length: 10\r\n" +
+ 			"\r\n" +
+ 			"0a\r\n" +
+-			"Body here\n" +
++			"Body here\n\r\n" +
+ 			"0\r\n" +
+ 			"\r\n",
+ 
+@@ -170,7 +170,7 @@
+ 			Request:          dummyReq("GET"),
+ 			Header:           Header{},
+ 			Close:            false,
+-			ContentLength:    -1, // TODO(rsc): Fix?
++			ContentLength:    -1,
+ 			TransferEncoding: []string{"chunked"},
+ 		},
+ 
+@@ -324,16 +324,37 @@
+ 
+ 		"",
+ 	},
++
++	// golang.org/issue/4767: don't special-case multipart/byteranges responses
++	{
++		`HTTP/1.1 206 Partial Content
++Connection: close
++Content-Type: multipart/byteranges; boundary=18a75608c8f47cef
++
++some body`,
++		Response{
++			Status:     "206 Partial Content",
++			StatusCode: 206,
++			Proto:      "HTTP/1.1",
++			ProtoMajor: 1,
++			ProtoMinor: 1,
++			Request:    dummyReq("GET"),
++			Header: Header{
++				"Content-Type": []string{"multipart/byteranges; boundary=18a75608c8f47cef"},
++			},
++			Close:         true,
++			ContentLength: -1,
++		},
++
++		"some body",
++	},
+ }
+ 
+ func TestReadResponse(t *testing.T) {
+-	for i := range respTests {
+-		tt := &respTests[i]
+-		var braw bytes.Buffer
+-		braw.WriteString(tt.Raw)
+-		resp, err := ReadResponse(bufio.NewReader(&braw), tt.Resp.Request)
++	for i, tt := range respTests {
++		resp, err := ReadResponse(bufio.NewReader(strings.NewReader(tt.Raw)), tt.Resp.Request)
+ 		if err != nil {
+-			t.Errorf("#%d: %s", i, err)
++			t.Errorf("#%d: %v", i, err)
+ 			continue
+ 		}
+ 		rbody := resp.Body
+@@ -341,7 +362,11 @@
+ 		diff(t, fmt.Sprintf("#%d Response", i), resp, &tt.Resp)
+ 		var bout bytes.Buffer
+ 		if rbody != nil {
+-			io.Copy(&bout, rbody)
++			_, err = io.Copy(&bout, rbody)
++			if err != nil {
++				t.Errorf("#%d: %v", i, err)
++				continue
++			}
+ 			rbody.Close()
+ 		}
+ 		body := bout.String()
+@@ -351,6 +376,22 @@
+ 	}
+ }
+ 
++func TestWriteResponse(t *testing.T) {
++	for i, tt := range respTests {
++		resp, err := ReadResponse(bufio.NewReader(strings.NewReader(tt.Raw)), tt.Resp.Request)
++		if err != nil {
++			t.Errorf("#%d: %v", i, err)
++			continue
++		}
++		bout := bytes.NewBuffer(nil)
++		err = resp.Write(bout)
++		if err != nil {
++			t.Errorf("#%d: %v", i, err)
++			continue
++		}
++	}
++}
++
+ var readResponseCloseInMiddleTests = []struct {
+ 	chunked, compressed bool
+ }{
+@@ -425,7 +466,7 @@
+ 		if test.compressed {
+ 			gzReader, err := gzip.NewReader(resp.Body)
+ 			checkErr(err, "gzip.NewReader")
+-			resp.Body = &readFirstCloseBoth{gzReader, resp.Body}
++			resp.Body = &readerAndCloser{gzReader, resp.Body}
+ 		}
+ 
+ 		rbuf := make([]byte, 2500)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/server.go gcc-4.8.1/libgo/go/net/http/server.go
+--- gcc-4.8.1.orig/libgo/go/net/http/server.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/server.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,9 +4,6 @@
+ 
+ // HTTP server.  See RFC 2616.
+ 
+-// TODO(rsc):
+-//	logging
+-
+ package http
+ 
+ import (
+@@ -109,9 +106,11 @@
+ 	remoteAddr string               // network address of remote side
+ 	server     *Server              // the Server on which the connection arrived
+ 	rwc        net.Conn             // i/o connection
+-	sr         switchReader         // where the LimitReader reads from; usually the rwc
++	sr         liveSwitchReader     // where the LimitReader reads from; usually the rwc
+ 	lr         *io.LimitedReader    // io.LimitReader(sr)
+ 	buf        *bufio.ReadWriter    // buffered(lr,rwc), reading from bufio->limitReader->sr->rwc
++	bufswr     *switchReader        // the *switchReader io.Reader source of buf
++	bufsww     *switchWriter        // the *switchWriter io.Writer dest of buf
+ 	tlsState   *tls.ConnectionState // or nil when not using TLS
+ 
+ 	mu           sync.Mutex // guards the following
+@@ -147,7 +146,7 @@
+ 	c.mu.Lock()
+ 	defer c.mu.Unlock()
+ 	if c.closeNotifyc == nil {
+-		c.closeNotifyc = make(chan bool)
++		c.closeNotifyc = make(chan bool, 1)
+ 		if c.hijackedv {
+ 			// to obey the function signature, even though
+ 			// it'll never receive a value.
+@@ -180,12 +179,26 @@
+ 	c.clientGone = true
+ }
+ 
++// A switchReader can have its Reader changed at runtime.
++// It's not safe for concurrent Reads and switches.
+ type switchReader struct {
++	io.Reader
++}
++
++// A switchWriter can have its Writer changed at runtime.
++// It's not safe for concurrent Writes and switches.
++type switchWriter struct {
++	io.Writer
++}
++
++// A liveSwitchReader is a switchReader that's safe for concurrent
++// reads and switches, if its mutex is held.
++type liveSwitchReader struct {
+ 	sync.Mutex
+ 	r io.Reader
+ }
+ 
+-func (sr *switchReader) Read(p []byte) (n int, err error) {
++func (sr *liveSwitchReader) Read(p []byte) (n int, err error) {
+ 	sr.Lock()
+ 	r := sr.r
+ 	sr.Unlock()
+@@ -206,15 +219,28 @@
+ //
+ // See the comment above (*response).Write for the entire write flow.
+ type chunkWriter struct {
+-	res         *response
+-	header      Header // a deep copy of r.Header, once WriteHeader is called
+-	wroteHeader bool   // whether the header's been sent
++	res *response
++
++	// header is either nil or a deep clone of res.handlerHeader
++	// at the time of res.WriteHeader, if res.WriteHeader is
++	// called and extra buffering is being done to calculate
++	// Content-Type and/or Content-Length.
++	header Header
++
++	// wroteHeader tells whether the header's been written to "the
++	// wire" (or rather: w.conn.buf). this is unlike
++	// (*response).wroteHeader, which tells only whether it was
++	// logically written.
++	wroteHeader bool
+ 
+ 	// set by the writeHeader method:
+ 	chunking bool // using chunked transfer encoding for reply body
+ }
+ 
+-var crlf = []byte("\r\n")
++var (
++	crlf       = []byte("\r\n")
++	colonSpace = []byte(": ")
++)
+ 
+ func (cw *chunkWriter) Write(p []byte) (n int, err error) {
+ 	if !cw.wroteHeader {
+@@ -223,6 +249,7 @@
+ 	if cw.chunking {
+ 		_, err = fmt.Fprintf(cw.res.conn.buf, "%x\r\n", len(p))
+ 		if err != nil {
++			cw.res.conn.rwc.Close()
+ 			return
+ 		}
+ 	}
+@@ -230,6 +257,9 @@
+ 	if cw.chunking && err == nil {
+ 		_, err = cw.res.conn.buf.Write(crlf)
+ 	}
++	if err != nil {
++		cw.res.conn.rwc.Close()
++	}
+ 	return
+ }
+ 
+@@ -260,13 +290,15 @@
+ 	wroteContinue bool     // 100 Continue response was written
+ 
+ 	w  *bufio.Writer // buffers output in chunks to chunkWriter
+-	cw *chunkWriter
++	cw chunkWriter
++	sw *switchWriter // of the bufio.Writer, for return to putBufioWriter
+ 
+ 	// handlerHeader is the Header that Handlers get access to,
+ 	// which may be retained and mutated even after WriteHeader.
+ 	// handlerHeader is copied into cw.header at WriteHeader
+ 	// time, and privately mutated thereafter.
+ 	handlerHeader Header
++	calledHeader  bool // handler accessed handlerHeader via Header
+ 
+ 	written       int64 // number of bytes written in body
+ 	contentLength int64 // explicitly-declared Content-Length; or -1
+@@ -358,14 +390,98 @@
+ 	if debugServerConnections {
+ 		c.rwc = newLoggingConn("server", c.rwc)
+ 	}
+-	c.sr = switchReader{r: c.rwc}
++	c.sr = liveSwitchReader{r: c.rwc}
+ 	c.lr = io.LimitReader(&c.sr, noLimit).(*io.LimitedReader)
+-	br := bufio.NewReader(c.lr)
+-	bw := bufio.NewWriter(c.rwc)
++	br, sr := newBufioReader(c.lr)
++	bw, sw := newBufioWriterSize(c.rwc, 4<<10)
+ 	c.buf = bufio.NewReadWriter(br, bw)
++	c.bufswr = sr
++	c.bufsww = sw
+ 	return c, nil
+ }
+ 
++// TODO: remove this, if issue 5100 is fixed
++type bufioReaderPair struct {
++	br *bufio.Reader
++	sr *switchReader // from which the bufio.Reader is reading
++}
++
++// TODO: remove this, if issue 5100 is fixed
++type bufioWriterPair struct {
++	bw *bufio.Writer
++	sw *switchWriter // to which the bufio.Writer is writing
++}
++
++// TODO: use a sync.Cache instead
++var (
++	bufioReaderCache   = make(chan bufioReaderPair, 4)
++	bufioWriterCache2k = make(chan bufioWriterPair, 4)
++	bufioWriterCache4k = make(chan bufioWriterPair, 4)
++)
++
++func bufioWriterCache(size int) chan bufioWriterPair {
++	switch size {
++	case 2 << 10:
++		return bufioWriterCache2k
++	case 4 << 10:
++		return bufioWriterCache4k
++	}
++	return nil
++}
++
++func newBufioReader(r io.Reader) (*bufio.Reader, *switchReader) {
++	select {
++	case p := <-bufioReaderCache:
++		p.sr.Reader = r
++		return p.br, p.sr
++	default:
++		sr := &switchReader{r}
++		return bufio.NewReader(sr), sr
++	}
++}
++
++func putBufioReader(br *bufio.Reader, sr *switchReader) {
++	if n := br.Buffered(); n > 0 {
++		io.CopyN(ioutil.Discard, br, int64(n))
++	}
++	br.Read(nil) // clears br.err
++	sr.Reader = nil
++	select {
++	case bufioReaderCache <- bufioReaderPair{br, sr}:
++	default:
++	}
++}
++
++func newBufioWriterSize(w io.Writer, size int) (*bufio.Writer, *switchWriter) {
++	select {
++	case p := <-bufioWriterCache(size):
++		p.sw.Writer = w
++		return p.bw, p.sw
++	default:
++		sw := &switchWriter{w}
++		return bufio.NewWriterSize(sw, size), sw
++	}
++}
++
++func putBufioWriter(bw *bufio.Writer, sw *switchWriter) {
++	if bw.Buffered() > 0 {
++		// It must have failed to flush to its target
++		// earlier. We can't reuse this bufio.Writer.
++		return
++	}
++	if err := bw.Flush(); err != nil {
++		// Its sticky error field is set, which is returned by
++		// Flush even when there's no data buffered.  This
++		// bufio Writer is dead to us.  Don't reuse it.
++		return
++	}
++	sw.Writer = nil
++	select {
++	case bufioWriterCache(bw.Available()) <- bufioWriterPair{bw, sw}:
++	default:
++	}
++}
++
+ // DefaultMaxHeaderBytes is the maximum permitted size of the headers
+ // in an HTTP request.
+ // This can be overridden by setting Server.MaxHeaderBytes.
+@@ -416,6 +532,16 @@
+ 	if c.hijacked() {
+ 		return nil, ErrHijacked
+ 	}
++
++	if d := c.server.ReadTimeout; d != 0 {
++		c.rwc.SetReadDeadline(time.Now().Add(d))
++	}
++	if d := c.server.WriteTimeout; d != 0 {
++		defer func() {
++			c.rwc.SetWriteDeadline(time.Now().Add(d))
++		}()
++	}
++
+ 	c.lr.N = int64(c.server.maxHeaderBytes()) + 4096 /* bufio slop */
+ 	var req *Request
+ 	if req, err = ReadRequest(c.buf.Reader); err != nil {
+@@ -434,14 +560,20 @@
+ 		req:           req,
+ 		handlerHeader: make(Header),
+ 		contentLength: -1,
+-		cw:            new(chunkWriter),
+ 	}
+ 	w.cw.res = w
+-	w.w = bufio.NewWriterSize(w.cw, bufferBeforeChunkingSize)
++	w.w, w.sw = newBufioWriterSize(&w.cw, bufferBeforeChunkingSize)
+ 	return w, nil
+ }
+ 
+ func (w *response) Header() Header {
++	if w.cw.header == nil && w.wroteHeader && !w.cw.wroteHeader {
++		// Accessing the header between logically writing it
++		// and physically writing it means we need to allocate
++		// a clone to snapshot the logically written state.
++		w.cw.header = w.handlerHeader.clone()
++	}
++	w.calledHeader = true
+ 	return w.handlerHeader
+ }
+ 
+@@ -468,15 +600,48 @@
+ 	w.wroteHeader = true
+ 	w.status = code
+ 
+-	w.cw.header = w.handlerHeader.clone()
++	if w.calledHeader && w.cw.header == nil {
++		w.cw.header = w.handlerHeader.clone()
++	}
+ 
+-	if cl := w.cw.header.get("Content-Length"); cl != "" {
++	if cl := w.handlerHeader.get("Content-Length"); cl != "" {
+ 		v, err := strconv.ParseInt(cl, 10, 64)
+ 		if err == nil && v >= 0 {
+ 			w.contentLength = v
+ 		} else {
+ 			log.Printf("http: invalid Content-Length of %q", cl)
+-			w.cw.header.Del("Content-Length")
++			w.handlerHeader.Del("Content-Length")
++		}
++	}
++}
++
++// extraHeader is the set of headers sometimes added by chunkWriter.writeHeader.
++// This type is used to avoid extra allocations from cloning and/or populating
++// the response Header map and all its 1-element slices.
++type extraHeader struct {
++	contentType      string
++	contentLength    string
++	connection       string
++	date             string
++	transferEncoding string
++}
++
++// Sorted the same as extraHeader.Write's loop.
++var extraHeaderKeys = [][]byte{
++	[]byte("Content-Type"), []byte("Content-Length"),
++	[]byte("Connection"), []byte("Date"), []byte("Transfer-Encoding"),
++}
++
++// The value receiver, despite copying 5 strings to the stack,
++// prevents an extra allocation. The escape analysis isn't smart
++// enough to realize this doesn't mutate h.
++func (h extraHeader) Write(w io.Writer) {
++	for i, v := range []string{h.contentType, h.contentLength, h.connection, h.date, h.transferEncoding} {
++		if v != "" {
++			w.Write(extraHeaderKeys[i])
++			w.Write(colonSpace)
++			io.WriteString(w, v)
++			w.Write(crlf)
+ 		}
+ 	}
+ }
+@@ -496,23 +661,47 @@
+ 	cw.wroteHeader = true
+ 
+ 	w := cw.res
+-	code := w.status
+-	done := w.handlerDone
++
++	// header is written out to w.conn.buf below. Depending on the
++	// state of the handler, we either own the map or not. If we
++	// don't own it, the exclude map is created lazily for
++	// WriteSubset to remove headers. The setHeader struct holds
++	// headers we need to add.
++	header := cw.header
++	owned := header != nil
++	if !owned {
++		header = w.handlerHeader
++	}
++	var excludeHeader map[string]bool
++	delHeader := func(key string) {
++		if owned {
++			header.Del(key)
++			return
++		}
++		if _, ok := header[key]; !ok {
++			return
++		}
++		if excludeHeader == nil {
++			excludeHeader = make(map[string]bool)
++		}
++		excludeHeader[key] = true
++	}
++	var setHeader extraHeader
+ 
+ 	// If the handler is done but never sent a Content-Length
+ 	// response header and this is our first (and last) write, set
+ 	// it, even to zero. This helps HTTP/1.0 clients keep their
+ 	// "keep-alive" connections alive.
+-	if done && cw.header.get("Content-Length") == "" && w.req.Method != "HEAD" {
++	if w.handlerDone && header.get("Content-Length") == "" && w.req.Method != "HEAD" {
+ 		w.contentLength = int64(len(p))
+-		cw.header.Set("Content-Length", strconv.Itoa(len(p)))
++		setHeader.contentLength = strconv.Itoa(len(p))
+ 	}
+ 
+ 	// If this was an HTTP/1.0 request with keep-alive and we sent a
+ 	// Content-Length back, we can make this a keep-alive response ...
+ 	if w.req.wantsHttp10KeepAlive() {
+-		sentLength := cw.header.get("Content-Length") != ""
+-		if sentLength && cw.header.get("Connection") == "keep-alive" {
++		sentLength := header.get("Content-Length") != ""
++		if sentLength && header.get("Connection") == "keep-alive" {
+ 			w.closeAfterReply = false
+ 		}
+ 	}
+@@ -521,15 +710,15 @@
+ 	hasCL := w.contentLength != -1
+ 
+ 	if w.req.wantsHttp10KeepAlive() && (w.req.Method == "HEAD" || hasCL) {
+-		_, connectionHeaderSet := cw.header["Connection"]
++		_, connectionHeaderSet := header["Connection"]
+ 		if !connectionHeaderSet {
+-			cw.header.Set("Connection", "keep-alive")
++			setHeader.connection = "keep-alive"
+ 		}
+ 	} else if !w.req.ProtoAtLeast(1, 1) || w.req.wantsClose() {
+ 		w.closeAfterReply = true
+ 	}
+ 
+-	if cw.header.get("Connection") == "close" {
++	if header.get("Connection") == "close" {
+ 		w.closeAfterReply = true
+ 	}
+ 
+@@ -543,49 +732,49 @@
+ 			n, _ := io.CopyN(ioutil.Discard, w.req.Body, maxPostHandlerReadBytes+1)
+ 			if n >= maxPostHandlerReadBytes {
+ 				w.requestTooLarge()
+-				cw.header.Set("Connection", "close")
++				delHeader("Connection")
++				setHeader.connection = "close"
+ 			} else {
+ 				w.req.Body.Close()
+ 			}
+ 		}
+ 	}
+ 
++	code := w.status
+ 	if code == StatusNotModified {
+ 		// Must not have body.
+-		for _, header := range []string{"Content-Type", "Content-Length", "Transfer-Encoding"} {
+-			// RFC 2616 section 10.3.5: "the response MUST NOT include other entity-headers"
+-			if cw.header.get(header) != "" {
+-				cw.header.Del(header)
+-			}
++		// RFC 2616 section 10.3.5: "the response MUST NOT include other entity-headers"
++		for _, k := range []string{"Content-Type", "Content-Length", "Transfer-Encoding"} {
++			delHeader(k)
+ 		}
+ 	} else {
+ 		// If no content type, apply sniffing algorithm to body.
+-		if cw.header.get("Content-Type") == "" && w.req.Method != "HEAD" {
+-			cw.header.Set("Content-Type", DetectContentType(p))
++		if header.get("Content-Type") == "" && w.req.Method != "HEAD" {
++			setHeader.contentType = DetectContentType(p)
+ 		}
+ 	}
+ 
+-	if _, ok := cw.header["Date"]; !ok {
+-		cw.header.Set("Date", time.Now().UTC().Format(TimeFormat))
++	if _, ok := header["Date"]; !ok {
++		setHeader.date = time.Now().UTC().Format(TimeFormat)
+ 	}
+ 
+-	te := cw.header.get("Transfer-Encoding")
++	te := header.get("Transfer-Encoding")
+ 	hasTE := te != ""
+ 	if hasCL && hasTE && te != "identity" {
+ 		// TODO: return an error if WriteHeader gets a return parameter
+ 		// For now just ignore the Content-Length.
+ 		log.Printf("http: WriteHeader called with both Transfer-Encoding of %q and a Content-Length of %d",
+ 			te, w.contentLength)
+-		cw.header.Del("Content-Length")
++		delHeader("Content-Length")
+ 		hasCL = false
+ 	}
+ 
+ 	if w.req.Method == "HEAD" || code == StatusNotModified {
+ 		// do nothing
+ 	} else if code == StatusNoContent {
+-		cw.header.Del("Transfer-Encoding")
++		delHeader("Transfer-Encoding")
+ 	} else if hasCL {
+-		cw.header.Del("Transfer-Encoding")
++		delHeader("Transfer-Encoding")
+ 	} else if w.req.ProtoAtLeast(1, 1) {
+ 		// HTTP/1.1 or greater: use chunked transfer encoding
+ 		// to avoid closing the connection at EOF.
+@@ -593,29 +782,63 @@
+ 		// might have set.  Deal with that as need arises once we have a valid
+ 		// use case.
+ 		cw.chunking = true
+-		cw.header.Set("Transfer-Encoding", "chunked")
++		setHeader.transferEncoding = "chunked"
+ 	} else {
+ 		// HTTP version < 1.1: cannot do chunked transfer
+ 		// encoding and we don't know the Content-Length so
+ 		// signal EOF by closing connection.
+ 		w.closeAfterReply = true
+-		cw.header.Del("Transfer-Encoding") // in case already set
++		delHeader("Transfer-Encoding") // in case already set
+ 	}
+ 
+ 	// Cannot use Content-Length with non-identity Transfer-Encoding.
+ 	if cw.chunking {
+-		cw.header.Del("Content-Length")
++		delHeader("Content-Length")
+ 	}
+ 	if !w.req.ProtoAtLeast(1, 0) {
+ 		return
+ 	}
+ 
+ 	if w.closeAfterReply && !hasToken(cw.header.get("Connection"), "close") {
+-		cw.header.Set("Connection", "close")
++		delHeader("Connection")
++		setHeader.connection = "close"
+ 	}
+ 
++	io.WriteString(w.conn.buf, statusLine(w.req, code))
++	cw.header.WriteSubset(w.conn.buf, excludeHeader)
++	setHeader.Write(w.conn.buf)
++	w.conn.buf.Write(crlf)
++}
++
++// statusLines is a cache of Status-Line strings, keyed by code (for
++// HTTP/1.1) or negative code (for HTTP/1.0). This is faster than a
++// map keyed by struct of two fields. This map's max size is bounded
++// by 2*len(statusText), two protocol types for each known official
++// status code in the statusText map.
++var (
++	statusMu    sync.RWMutex
++	statusLines = make(map[int]string)
++)
++
++// statusLine returns a response Status-Line (RFC 2616 Section 6.1)
++// for the given request and response status code.
++func statusLine(req *Request, code int) string {
++	// Fast path:
++	key := code
++	proto11 := req.ProtoAtLeast(1, 1)
++	if !proto11 {
++		key = -key
++	}
++	statusMu.RLock()
++	line, ok := statusLines[key]
++	statusMu.RUnlock()
++	if ok {
++		return line
++	}
++
++	// Slow path:
+ 	proto := "HTTP/1.0"
+-	if w.req.ProtoAtLeast(1, 1) {
++	if proto11 {
+ 		proto = "HTTP/1.1"
+ 	}
+ 	codestring := strconv.Itoa(code)
+@@ -623,9 +846,13 @@
+ 	if !ok {
+ 		text = "status code " + codestring
+ 	}
+-	io.WriteString(w.conn.buf, proto+" "+codestring+" "+text+"\r\n")
+-	cw.header.Write(w.conn.buf)
+-	w.conn.buf.Write(crlf)
++	line = proto + " " + codestring + " " + text + "\r\n"
++	if ok {
++		statusMu.Lock()
++		defer statusMu.Unlock()
++		statusLines[key] = line
++	}
++	return line
+ }
+ 
+ // bodyAllowed returns true if a Write is allowed for this response type.
+@@ -641,7 +868,7 @@
+ //
+ // Handler starts. No header has been sent. The handler can either
+ // write a header, or just start writing.  Writing before sending a header
+-// sends an implicity empty 200 OK header.
++// sends an implicitly empty 200 OK header.
+ //
+ // If the handler didn't declare a Content-Length up front, we either
+ // go into chunking mode or, if the handler finishes running before
+@@ -699,6 +926,7 @@
+ 	}
+ 
+ 	w.w.Flush()
++	putBufioWriter(w.w, w.sw)
+ 	w.cw.close()
+ 	w.conn.buf.Flush()
+ 
+@@ -728,6 +956,15 @@
+ func (c *conn) finalFlush() {
+ 	if c.buf != nil {
+ 		c.buf.Flush()
++
++		// Steal the bufio.Reader (~4KB worth of memory) and its associated
++		// reader for a future connection.
++		putBufioReader(c.buf.Reader, c.bufswr)
++
++		// Steal the bufio.Writer (~4KB worth of memory) and its associated
++		// writer for a future connection.
++		putBufioWriter(c.buf.Writer, c.bufsww)
++
+ 		c.buf = nil
+ 	}
+ }
+@@ -764,6 +1001,18 @@
+ 	time.Sleep(rstAvoidanceDelay)
+ }
+ 
++// validNPN returns whether the proto is not a blacklisted Next
++// Protocol Negotiation protocol.  Empty and built-in protocol types
++// are blacklisted and can't be overridden with alternate
++// implementations.
++func validNPN(proto string) bool {
++	switch proto {
++	case "", "http/1.1", "http/1.0":
++		return false
++	}
++	return true
++}
++
+ // Serve a new connection.
+ func (c *conn) serve() {
+ 	defer func() {
+@@ -779,11 +1028,24 @@
+ 	}()
+ 
+ 	if tlsConn, ok := c.rwc.(*tls.Conn); ok {
++		if d := c.server.ReadTimeout; d != 0 {
++			c.rwc.SetReadDeadline(time.Now().Add(d))
++		}
++		if d := c.server.WriteTimeout; d != 0 {
++			c.rwc.SetWriteDeadline(time.Now().Add(d))
++		}
+ 		if err := tlsConn.Handshake(); err != nil {
+ 			return
+ 		}
+ 		c.tlsState = new(tls.ConnectionState)
+ 		*c.tlsState = tlsConn.ConnectionState()
++		if proto := c.tlsState.NegotiatedProtocol; validNPN(proto) {
++			if fn := c.server.TLSNextProto[proto]; fn != nil {
++				h := initNPNRequest{tlsConn, serverHandler{c.server}}
++				fn(c.server, tlsConn, h)
++			}
++			return
++		}
+ 	}
+ 
+ 	for {
+@@ -826,20 +1088,12 @@
+ 			break
+ 		}
+ 
+-		handler := c.server.Handler
+-		if handler == nil {
+-			handler = DefaultServeMux
+-		}
+-		if req.RequestURI == "*" && req.Method == "OPTIONS" {
+-			handler = globalOptionsHandler{}
+-		}
+-
+ 		// HTTP cannot have multiple simultaneous active requests.[*]
+ 		// Until the server replies to this request, it can't read another,
+ 		// so we might as well run the handler in this goroutine.
+ 		// [*] Not strictly true: HTTP pipelining.  We could let them all process
+ 		// in parallel even if their responses need to be serialized.
+-		handler.ServeHTTP(w, w.req)
++		serverHandler{c.server}.ServeHTTP(w, w.req)
+ 		if c.hijacked() {
+ 			return
+ 		}
+@@ -917,13 +1171,16 @@
+ // request for a path that doesn't begin with prefix by
+ // replying with an HTTP 404 not found error.
+ func StripPrefix(prefix string, h Handler) Handler {
++	if prefix == "" {
++		return h
++	}
+ 	return HandlerFunc(func(w ResponseWriter, r *Request) {
+-		if !strings.HasPrefix(r.URL.Path, prefix) {
++		if p := strings.TrimPrefix(r.URL.Path, prefix); len(p) < len(r.URL.Path) {
++			r.URL.Path = p
++			h.ServeHTTP(w, r)
++		} else {
+ 			NotFound(w, r)
+-			return
+ 		}
+-		r.URL.Path = r.URL.Path[len(prefix):]
+-		h.ServeHTTP(w, r)
+ 	})
+ }
+ 
+@@ -965,9 +1222,9 @@
+ 			}
+ 
+ 			// clean up but preserve trailing slash
+-			trailing := urlStr[len(urlStr)-1] == '/'
++			trailing := strings.HasSuffix(urlStr, "/")
+ 			urlStr = path.Clean(urlStr)
+-			if trailing && urlStr[len(urlStr)-1] != '/' {
++			if trailing && !strings.HasSuffix(urlStr, "/") {
+ 				urlStr += "/"
+ 			}
+ 			urlStr += query
+@@ -1232,6 +1489,32 @@
+ 	WriteTimeout   time.Duration // maximum duration before timing out write of the response
+ 	MaxHeaderBytes int           // maximum size of request headers, DefaultMaxHeaderBytes if 0
+ 	TLSConfig      *tls.Config   // optional TLS config, used by ListenAndServeTLS
++
++	// TLSNextProto optionally specifies a function to take over
++	// ownership of the provided TLS connection when an NPN
++	// protocol upgrade has occurred.  The map key is the protocol
++	// name negotiated. The Handler argument should be used to
++	// handle HTTP requests and will initialize the Request's TLS
++	// and RemoteAddr if not already set.  The connection is
++	// automatically closed when the function returns.
++	TLSNextProto map[string]func(*Server, *tls.Conn, Handler)
++}
++
++// serverHandler delegates to either the server's Handler or
++// DefaultServeMux and also handles "OPTIONS *" requests.
++type serverHandler struct {
++	srv *Server
++}
++
++func (sh serverHandler) ServeHTTP(rw ResponseWriter, req *Request) {
++	handler := sh.srv.Handler
++	if handler == nil {
++		handler = DefaultServeMux
++	}
++	if req.RequestURI == "*" && req.Method == "OPTIONS" {
++		handler = globalOptionsHandler{}
++	}
++	handler.ServeHTTP(rw, req)
+ }
+ 
+ // ListenAndServe listens on the TCP network address srv.Addr and then
+@@ -1274,19 +1557,12 @@
+ 			return e
+ 		}
+ 		tempDelay = 0
+-		if srv.ReadTimeout != 0 {
+-			rw.SetReadDeadline(time.Now().Add(srv.ReadTimeout))
+-		}
+-		if srv.WriteTimeout != 0 {
+-			rw.SetWriteDeadline(time.Now().Add(srv.WriteTimeout))
+-		}
+ 		c, err := srv.newConn(rw)
+ 		if err != nil {
+ 			continue
+ 		}
+ 		go c.serve()
+ 	}
+-	panic("not reached")
+ }
+ 
+ // ListenAndServe listens on the TCP network address addr
+@@ -1425,7 +1701,7 @@
+ }
+ 
+ func (h *timeoutHandler) ServeHTTP(w ResponseWriter, r *Request) {
+-	done := make(chan bool)
++	done := make(chan bool, 1)
+ 	tw := &timeoutWriter{w: w}
+ 	go func() {
+ 		h.handler.ServeHTTP(tw, r)
+@@ -1494,6 +1770,31 @@
+ 	}
+ }
+ 
++// eofReader is a non-nil io.ReadCloser that always returns EOF.
++var eofReader = ioutil.NopCloser(strings.NewReader(""))
++
++// initNPNRequest is an HTTP handler that initializes certain
++// uninitialized fields in its *Request. Such partially-initialized
++// Requests come from NPN protocol handlers.
++type initNPNRequest struct {
++	c *tls.Conn
++	h serverHandler
++}
++
++func (h initNPNRequest) ServeHTTP(rw ResponseWriter, req *Request) {
++	if req.TLS == nil {
++		req.TLS = &tls.ConnectionState{}
++		*req.TLS = h.c.ConnectionState()
++	}
++	if req.Body == nil {
++		req.Body = eofReader
++	}
++	if req.RemoteAddr == "" {
++		req.RemoteAddr = h.c.RemoteAddr().String()
++	}
++	h.h.ServeHTTP(rw, req)
++}
++
+ // loggingConn is used for debugging.
+ type loggingConn struct {
+ 	name string
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/server_test.go gcc-4.8.1/libgo/go/net/http/server_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/server_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/http/server_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,9 +2,11 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package http
++package http_test
+ 
+ import (
++	. "net/http"
++	"net/http/httptest"
+ 	"net/url"
+ 	"testing"
+ )
+@@ -76,20 +78,27 @@
+ 			},
+ 		}
+ 		h, pattern := mux.Handler(r)
+-		cs := &codeSaver{h: Header{}}
+-		h.ServeHTTP(cs, r)
+-		if pattern != tt.pattern || cs.code != tt.code {
+-			t.Errorf("%s %s %s = %d, %q, want %d, %q", tt.method, tt.host, tt.path, cs.code, pattern, tt.code, tt.pattern)
++		rr := httptest.NewRecorder()
++		h.ServeHTTP(rr, r)
++		if pattern != tt.pattern || rr.Code != tt.code {
++			t.Errorf("%s %s %s = %d, %q, want %d, %q", tt.method, tt.host, tt.path, rr.Code, pattern, tt.code, tt.pattern)
+ 		}
+ 	}
+ }
+ 
+-// A codeSaver is a ResponseWriter that saves the code passed to WriteHeader.
+-type codeSaver struct {
+-	h    Header
+-	code int
++func TestServerRedirect(t *testing.T) {
++	// This used to crash. It's not valid input (bad path), but it
++	// shouldn't crash.
++	rr := httptest.NewRecorder()
++	req := &Request{
++		Method: "GET",
++		URL: &url.URL{
++			Scheme: "http",
++			Path:   "not-empty-but-no-leading-slash", // bogus
++		},
++	}
++	Redirect(rr, req, "", 304)
++	if rr.Code != 304 {
++		t.Errorf("Code = %d; want 304", rr.Code)
++	}
+ }
+-
+-func (cs *codeSaver) Header() Header              { return cs.h }
+-func (cs *codeSaver) Write(p []byte) (int, error) { return len(p), nil }
+-func (cs *codeSaver) WriteHeader(code int)        { cs.code = code }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/serve_test.go gcc-4.8.1/libgo/go/net/http/serve_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/serve_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/serve_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,6 +10,7 @@
+ 	"bufio"
+ 	"bytes"
+ 	"crypto/tls"
++	"errors"
+ 	"fmt"
+ 	"io"
+ 	"io/ioutil"
+@@ -64,10 +65,39 @@
+ 	return string(a)
+ }
+ 
++type noopConn struct{}
++
++func (noopConn) LocalAddr() net.Addr                { return dummyAddr("local-addr") }
++func (noopConn) RemoteAddr() net.Addr               { return dummyAddr("remote-addr") }
++func (noopConn) SetDeadline(t time.Time) error      { return nil }
++func (noopConn) SetReadDeadline(t time.Time) error  { return nil }
++func (noopConn) SetWriteDeadline(t time.Time) error { return nil }
++
++type rwTestConn struct {
++	io.Reader
++	io.Writer
++	noopConn
++
++	closeFunc func() error // called if non-nil
++	closec    chan bool    // else, if non-nil, send value to it on close
++}
++
++func (c *rwTestConn) Close() error {
++	if c.closeFunc != nil {
++		return c.closeFunc()
++	}
++	select {
++	case c.closec <- true:
++	default:
++	}
++	return nil
++}
++
+ type testConn struct {
+ 	readBuf  bytes.Buffer
+ 	writeBuf bytes.Buffer
+ 	closec   chan bool // if non-nil, send value to it on close
++	noopConn
+ }
+ 
+ func (c *testConn) Read(b []byte) (int, error) {
+@@ -86,26 +116,6 @@
+ 	return nil
+ }
+ 
+-func (c *testConn) LocalAddr() net.Addr {
+-	return dummyAddr("local-addr")
+-}
+-
+-func (c *testConn) RemoteAddr() net.Addr {
+-	return dummyAddr("remote-addr")
+-}
+-
+-func (c *testConn) SetDeadline(t time.Time) error {
+-	return nil
+-}
+-
+-func (c *testConn) SetReadDeadline(t time.Time) error {
+-	return nil
+-}
+-
+-func (c *testConn) SetWriteDeadline(t time.Time) error {
+-	return nil
+-}
+-
+ func TestConsumingBodyOnNextConn(t *testing.T) {
+ 	conn := new(testConn)
+ 	for i := 0; i < 2; i++ {
+@@ -184,6 +194,7 @@
+ }
+ 
+ func TestHostHandlers(t *testing.T) {
++	defer afterTest(t)
+ 	mux := NewServeMux()
+ 	for _, h := range handlers {
+ 		mux.Handle(h.pattern, stringHandler(h.msg))
+@@ -256,28 +267,22 @@
+ }
+ 
+ func TestServerTimeouts(t *testing.T) {
+-	// TODO(bradfitz): convert this to use httptest.Server
+-	l, err := net.Listen("tcp", "127.0.0.1:0")
+-	if err != nil {
+-		t.Fatalf("listen error: %v", err)
+-	}
+-	addr, _ := l.Addr().(*net.TCPAddr)
+-
++	defer afterTest(t)
+ 	reqNum := 0
+-	handler := HandlerFunc(func(res ResponseWriter, req *Request) {
++	ts := httptest.NewUnstartedServer(HandlerFunc(func(res ResponseWriter, req *Request) {
+ 		reqNum++
+ 		fmt.Fprintf(res, "req=%d", reqNum)
+-	})
+-
+-	server := &Server{Handler: handler, ReadTimeout: 250 * time.Millisecond, WriteTimeout: 250 * time.Millisecond}
+-	go server.Serve(l)
+-
+-	url := fmt.Sprintf("http://%s/", addr)
++	}))
++	ts.Config.ReadTimeout = 250 * time.Millisecond
++	ts.Config.WriteTimeout = 250 * time.Millisecond
++	ts.Start()
++	defer ts.Close()
+ 
+ 	// Hit the HTTP server successfully.
+ 	tr := &Transport{DisableKeepAlives: true} // they interfere with this test
++	defer tr.CloseIdleConnections()
+ 	c := &Client{Transport: tr}
+-	r, err := c.Get(url)
++	r, err := c.Get(ts.URL)
+ 	if err != nil {
+ 		t.Fatalf("http Get #1: %v", err)
+ 	}
+@@ -290,13 +295,13 @@
+ 
+ 	// Slow client that should timeout.
+ 	t1 := time.Now()
+-	conn, err := net.Dial("tcp", addr.String())
++	conn, err := net.Dial("tcp", ts.Listener.Addr().String())
+ 	if err != nil {
+ 		t.Fatalf("Dial: %v", err)
+ 	}
+ 	buf := make([]byte, 1)
+ 	n, err := conn.Read(buf)
+-	latency := time.Now().Sub(t1)
++	latency := time.Since(t1)
+ 	if n != 0 || err != io.EOF {
+ 		t.Errorf("Read = %v, %v, wanted %v, %v", n, err, 0, io.EOF)
+ 	}
+@@ -307,7 +312,7 @@
+ 	// Hit the HTTP server successfully again, verifying that the
+ 	// previous slow connection didn't run our handler.  (that we
+ 	// get "req=2", not "req=3")
+-	r, err = Get(url)
++	r, err = Get(ts.URL)
+ 	if err != nil {
+ 		t.Fatalf("http Get #2: %v", err)
+ 	}
+@@ -317,11 +322,87 @@
+ 		t.Errorf("Get #2 got %q, want %q", string(got), expected)
+ 	}
+ 
+-	l.Close()
++	if !testing.Short() {
++		conn, err := net.Dial("tcp", ts.Listener.Addr().String())
++		if err != nil {
++			t.Fatalf("Dial: %v", err)
++		}
++		defer conn.Close()
++		go io.Copy(ioutil.Discard, conn)
++		for i := 0; i < 5; i++ {
++			_, err := conn.Write([]byte("GET / HTTP/1.1\r\nHost: foo\r\n\r\n"))
++			if err != nil {
++				t.Fatalf("on write %d: %v", i, err)
++			}
++			time.Sleep(ts.Config.ReadTimeout / 2)
++		}
++	}
++}
++
++// golang.org/issue/4741 -- setting only a write timeout that triggers
++// shouldn't cause a handler to block forever on reads (next HTTP
++// request) that will never happen.
++func TestOnlyWriteTimeout(t *testing.T) {
++	defer afterTest(t)
++	var conn net.Conn
++	var afterTimeoutErrc = make(chan error, 1)
++	ts := httptest.NewUnstartedServer(HandlerFunc(func(w ResponseWriter, req *Request) {
++		buf := make([]byte, 512<<10)
++		_, err := w.Write(buf)
++		if err != nil {
++			t.Errorf("handler Write error: %v", err)
++			return
++		}
++		conn.SetWriteDeadline(time.Now().Add(-30 * time.Second))
++		_, err = w.Write(buf)
++		afterTimeoutErrc <- err
++	}))
++	ts.Listener = trackLastConnListener{ts.Listener, &conn}
++	ts.Start()
++	defer ts.Close()
++
++	tr := &Transport{DisableKeepAlives: false}
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	errc := make(chan error)
++	go func() {
++		res, err := c.Get(ts.URL)
++		if err != nil {
++			errc <- err
++			return
++		}
++		_, err = io.Copy(ioutil.Discard, res.Body)
++		errc <- err
++	}()
++	select {
++	case err := <-errc:
++		if err == nil {
++			t.Errorf("expected an error from Get request")
++		}
++	case <-time.After(5 * time.Second):
++		t.Fatal("timeout waiting for Get error")
++	}
++	if err := <-afterTimeoutErrc; err == nil {
++		t.Error("expected write error after timeout")
++	}
++}
++
++// trackLastConnListener tracks the last net.Conn that was accepted.
++type trackLastConnListener struct {
++	net.Listener
++	last *net.Conn // destination
++}
++
++func (l trackLastConnListener) Accept() (c net.Conn, err error) {
++	c, err = l.Listener.Accept()
++	*l.last = c
++	return
+ }
+ 
+ // TestIdentityResponse verifies that a handler can unset
+ func TestIdentityResponse(t *testing.T) {
++	defer afterTest(t)
+ 	handler := HandlerFunc(func(rw ResponseWriter, req *Request) {
+ 		rw.Header().Set("Content-Length", "3")
+ 		rw.Header().Set("Transfer-Encoding", req.FormValue("te"))
+@@ -367,10 +448,12 @@
+ 
+ 	// Verify that ErrContentLength is returned
+ 	url := ts.URL + "/?overwrite=1"
+-	_, err := Get(url)
++	res, err := Get(url)
+ 	if err != nil {
+ 		t.Fatalf("error with Get of %s: %v", url, err)
+ 	}
++	res.Body.Close()
++
+ 	// Verify that the connection is closed when the declared Content-Length
+ 	// is larger than what the handler wrote.
+ 	conn, err := net.Dial("tcp", ts.Listener.Addr().String())
+@@ -395,6 +478,7 @@
+ }
+ 
+ func testTCPConnectionCloses(t *testing.T, req string, h Handler) {
++	defer afterTest(t)
+ 	s := httptest.NewServer(h)
+ 	defer s.Close()
+ 
+@@ -465,6 +549,7 @@
+ }
+ 
+ func TestSetsRemoteAddr(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		fmt.Fprintf(w, "%s", r.RemoteAddr)
+ 	}))
+@@ -485,6 +570,7 @@
+ }
+ 
+ func TestChunkedResponseHeaders(t *testing.T) {
++	defer afterTest(t)
+ 	log.SetOutput(ioutil.Discard) // is noisy otherwise
+ 	defer log.SetOutput(os.Stderr)
+ 
+@@ -499,6 +585,7 @@
+ 	if err != nil {
+ 		t.Fatalf("Get error: %v", err)
+ 	}
++	defer res.Body.Close()
+ 	if g, e := res.ContentLength, int64(-1); g != e {
+ 		t.Errorf("expected ContentLength of %d; got %d", e, g)
+ 	}
+@@ -514,6 +601,7 @@
+ // chunking in their response headers and aren't allowed to produce
+ // output.
+ func Test304Responses(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.WriteHeader(StatusNotModified)
+ 		_, err := w.Write([]byte("illegal body"))
+@@ -543,6 +631,7 @@
+ // allowed to produce output, and don't set a Content-Type since
+ // the real type of the body data cannot be inferred.
+ func TestHeadResponses(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		_, err := w.Write([]byte("Ignored body"))
+ 		if err != ErrBodyNotAllowed {
+@@ -577,6 +666,7 @@
+ }
+ 
+ func TestTLSHandshakeTimeout(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewUnstartedServer(HandlerFunc(func(w ResponseWriter, r *Request) {}))
+ 	ts.Config.ReadTimeout = 250 * time.Millisecond
+ 	ts.StartTLS()
+@@ -596,6 +686,7 @@
+ }
+ 
+ func TestTLSServer(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewTLSServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.TLS != nil {
+ 			w.Header().Set("X-TLS-Set", "true")
+@@ -678,6 +769,7 @@
+ // Tests that the server responds to the "Expect" request header
+ // correctly.
+ func TestServerExpect(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		// Note using r.FormValue("readbody") because for POST
+ 		// requests that would read from r.Body, which we only
+@@ -815,6 +907,7 @@
+ }
+ 
+ func TestTimeoutHandler(t *testing.T) {
++	defer afterTest(t)
+ 	sendHi := make(chan bool, 1)
+ 	writeErrors := make(chan error, 1)
+ 	sayHi := HandlerFunc(func(w ResponseWriter, r *Request) {
+@@ -889,6 +982,7 @@
+ // the previous request's body, which is not optimal for zero-lengthed bodies,
+ // as the client would then see http.ErrBodyReadAfterClose and not 0, io.EOF.
+ func TestZeroLengthPostAndResponse(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(rw ResponseWriter, r *Request) {
+ 		all, err := ioutil.ReadAll(r.Body)
+ 		if err != nil {
+@@ -939,6 +1033,7 @@
+ }
+ 
+ func testHandlerPanic(t *testing.T, withHijack bool, panicValue interface{}) {
++	defer afterTest(t)
+ 	// Unlike the other tests that set the log output to ioutil.Discard
+ 	// to quiet the output, this test uses a pipe.  The pipe serves three
+ 	// purposes:
+@@ -958,6 +1053,7 @@
+ 	pr, pw := io.Pipe()
+ 	log.SetOutput(pw)
+ 	defer log.SetOutput(os.Stderr)
++	defer pw.Close()
+ 
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if withHijack {
+@@ -979,7 +1075,7 @@
+ 		buf := make([]byte, 4<<10)
+ 		_, err := pr.Read(buf)
+ 		pr.Close()
+-		if err != nil {
++		if err != nil && err != io.EOF {
+ 			t.Error(err)
+ 		}
+ 		done <- true
+@@ -1003,6 +1099,7 @@
+ }
+ 
+ func TestNoDate(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Header()["Date"] = nil
+ 	}))
+@@ -1018,6 +1115,7 @@
+ }
+ 
+ func TestStripPrefix(t *testing.T) {
++	defer afterTest(t)
+ 	h := HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Header().Set("X-Path", r.URL.Path)
+ 	})
+@@ -1031,6 +1129,7 @@
+ 	if g, e := res.Header.Get("X-Path"), "/bar"; g != e {
+ 		t.Errorf("test 1: got %s, want %s", g, e)
+ 	}
++	res.Body.Close()
+ 
+ 	res, err = Get(ts.URL + "/bar")
+ 	if err != nil {
+@@ -1039,9 +1138,11 @@
+ 	if g, e := res.StatusCode, 404; g != e {
+ 		t.Errorf("test 2: got status %v, want %v", g, e)
+ 	}
++	res.Body.Close()
+ }
+ 
+ func TestRequestLimit(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		t.Fatalf("didn't expect to get request in Handler")
+ 	}))
+@@ -1058,6 +1159,7 @@
+ 		// we do support it (at least currently), so we expect a response below.
+ 		t.Fatalf("Do: %v", err)
+ 	}
++	defer res.Body.Close()
+ 	if res.StatusCode != 413 {
+ 		t.Fatalf("expected 413 response status; got: %d %s", res.StatusCode, res.Status)
+ 	}
+@@ -1084,6 +1186,7 @@
+ }
+ 
+ func TestRequestBodyLimit(t *testing.T) {
++	defer afterTest(t)
+ 	const limit = 1 << 20
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		r.Body = MaxBytesReader(w, r.Body, limit)
+@@ -1120,6 +1223,7 @@
+ // TestClientWriteShutdown tests that if the client shuts down the write
+ // side of their TCP connection, the server doesn't send a 400 Bad Request.
+ func TestClientWriteShutdown(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {}))
+ 	defer ts.Close()
+ 	conn, err := net.Dial("tcp", ts.Listener.Addr().String())
+@@ -1174,6 +1278,7 @@
+ // closing the TCP connection, causing the client to get a RST.
+ // See http://golang.org/issue/3595
+ func TestServerGracefulClose(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		Error(w, "bye", StatusUnauthorized)
+ 	}))
+@@ -1216,6 +1321,7 @@
+ }
+ 
+ func TestCaseSensitiveMethod(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.Method != "get" {
+ 			t.Errorf(`Got method %q; want "get"`, r.Method)
+@@ -1264,6 +1370,7 @@
+ }
+ 
+ func TestCloseNotifier(t *testing.T) {
++	defer afterTest(t)
+ 	gotReq := make(chan bool, 1)
+ 	sawClose := make(chan bool, 1)
+ 	ts := httptest.NewServer(HandlerFunc(func(rw ResponseWriter, req *Request) {
+@@ -1299,6 +1406,31 @@
+ 	ts.Close()
+ }
+ 
++func TestCloseNotifierChanLeak(t *testing.T) {
++	defer afterTest(t)
++	req := []byte(strings.Replace(`GET / HTTP/1.0
++Host: golang.org
++
++`, "\n", "\r\n", -1))
++	for i := 0; i < 20; i++ {
++		var output bytes.Buffer
++		conn := &rwTestConn{
++			Reader: bytes.NewReader(req),
++			Writer: &output,
++			closec: make(chan bool, 1),
++		}
++		ln := &oneConnListener{conn: conn}
++		handler := HandlerFunc(func(rw ResponseWriter, r *Request) {
++			// Ignore the return value and never read from
++			// it, testing that we don't leak goroutines
++			// on the sending side:
++			_ = rw.(CloseNotifier).CloseNotify()
++		})
++		go Serve(ln, handler)
++		<-conn.closec
++	}
++}
++
+ func TestOptions(t *testing.T) {
+ 	uric := make(chan string, 2) // only expect 1, but leave space for 2
+ 	mux := NewServeMux()
+@@ -1351,6 +1483,198 @@
+ 	}
+ }
+ 
++// Tests regarding the ordering of Write, WriteHeader, Header, and
++// Flush calls.  In Go 1.0, rw.WriteHeader immediately flushed the
++// (*response).header to the wire. In Go 1.1, the actual wire flush is
++// delayed, so we could maybe tack on a Content-Length and better
++// Content-Type after we see more (or all) of the output. To preserve
++// compatibility with Go 1, we need to be careful to track which
++// headers were live at the time of WriteHeader, so we write the same
++// ones, even if the handler modifies them (~erroneously) after the
++// first Write.
++func TestHeaderToWire(t *testing.T) {
++	req := []byte(strings.Replace(`GET / HTTP/1.1
++Host: golang.org
++
++`, "\n", "\r\n", -1))
++
++	tests := []struct {
++		name    string
++		handler func(ResponseWriter, *Request)
++		check   func(output string) error
++	}{
++		{
++			name: "write without Header",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Write([]byte("hello world"))
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Content-Length:") {
++					return errors.New("no content-length")
++				}
++				if !strings.Contains(got, "Content-Type: text/plain") {
++					return errors.New("no content-length")
++				}
++				return nil
++			},
++		},
++		{
++			name: "Header mutation before write",
++			handler: func(rw ResponseWriter, r *Request) {
++				h := rw.Header()
++				h.Set("Content-Type", "some/type")
++				rw.Write([]byte("hello world"))
++				h.Set("Too-Late", "bogus")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Content-Length:") {
++					return errors.New("no content-length")
++				}
++				if !strings.Contains(got, "Content-Type: some/type") {
++					return errors.New("wrong content-type")
++				}
++				if strings.Contains(got, "Too-Late") {
++					return errors.New("don't want too-late header")
++				}
++				return nil
++			},
++		},
++		{
++			name: "write then useless Header mutation",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Write([]byte("hello world"))
++				rw.Header().Set("Too-Late", "Write already wrote headers")
++			},
++			check: func(got string) error {
++				if strings.Contains(got, "Too-Late") {
++					return errors.New("header appeared from after WriteHeader")
++				}
++				return nil
++			},
++		},
++		{
++			name: "flush then write",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.(Flusher).Flush()
++				rw.Write([]byte("post-flush"))
++				rw.Header().Set("Too-Late", "Write already wrote headers")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Transfer-Encoding: chunked") {
++					return errors.New("not chunked")
++				}
++				if strings.Contains(got, "Too-Late") {
++					return errors.New("header appeared from after WriteHeader")
++				}
++				return nil
++			},
++		},
++		{
++			name: "header then flush",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Header().Set("Content-Type", "some/type")
++				rw.(Flusher).Flush()
++				rw.Write([]byte("post-flush"))
++				rw.Header().Set("Too-Late", "Write already wrote headers")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Transfer-Encoding: chunked") {
++					return errors.New("not chunked")
++				}
++				if strings.Contains(got, "Too-Late") {
++					return errors.New("header appeared from after WriteHeader")
++				}
++				if !strings.Contains(got, "Content-Type: some/type") {
++					return errors.New("wrong content-length")
++				}
++				return nil
++			},
++		},
++		{
++			name: "sniff-on-first-write content-type",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Write([]byte("<html><head></head><body>some html</body></html>"))
++				rw.Header().Set("Content-Type", "x/wrong")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Content-Type: text/html") {
++					return errors.New("wrong content-length; want html")
++				}
++				return nil
++			},
++		},
++		{
++			name: "explicit content-type wins",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Header().Set("Content-Type", "some/type")
++				rw.Write([]byte("<html><head></head><body>some html</body></html>"))
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Content-Type: some/type") {
++					return errors.New("wrong content-length; want html")
++				}
++				return nil
++			},
++		},
++		{
++			name: "empty handler",
++			handler: func(rw ResponseWriter, r *Request) {
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Content-Type: text/plain") {
++					return errors.New("wrong content-length; want text/plain")
++				}
++				if !strings.Contains(got, "Content-Length: 0") {
++					return errors.New("want 0 content-length")
++				}
++				return nil
++			},
++		},
++		{
++			name: "only Header, no write",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.Header().Set("Some-Header", "some-value")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "Some-Header") {
++					return errors.New("didn't get header")
++				}
++				return nil
++			},
++		},
++		{
++			name: "WriteHeader call",
++			handler: func(rw ResponseWriter, r *Request) {
++				rw.WriteHeader(404)
++				rw.Header().Set("Too-Late", "some-value")
++			},
++			check: func(got string) error {
++				if !strings.Contains(got, "404") {
++					return errors.New("wrong status")
++				}
++				if strings.Contains(got, "Some-Header") {
++					return errors.New("shouldn't have seen Too-Late")
++				}
++				return nil
++			},
++		},
++	}
++	for _, tc := range tests {
++		var output bytes.Buffer
++		conn := &rwTestConn{
++			Reader: bytes.NewReader(req),
++			Writer: &output,
++			closec: make(chan bool, 1),
++		}
++		ln := &oneConnListener{conn: conn}
++		go Serve(ln, HandlerFunc(tc.handler))
++		<-conn.closec
++		if err := tc.check(output.String()); err != nil {
++			t.Errorf("%s: %v\nGot response:\n%s", tc.name, err, output.Bytes())
++		}
++	}
++}
++
+ // goTimeout runs f, failing t if f takes more than ns to complete.
+ func goTimeout(t *testing.T, d time.Duration, f func()) {
+ 	ch := make(chan bool, 2)
+@@ -1524,3 +1848,179 @@
+ 		b.Errorf("Test failure: %v, with output: %s", err, out)
+ 	}
+ }
++
++func BenchmarkServerFakeConnNoKeepAlive(b *testing.B) {
++	b.ReportAllocs()
++	req := []byte(strings.Replace(`GET / HTTP/1.0
++Host: golang.org
++Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
++User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
++Accept-Encoding: gzip,deflate,sdch
++Accept-Language: en-US,en;q=0.8
++Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
++
++`, "\n", "\r\n", -1))
++	res := []byte("Hello world!\n")
++
++	conn := &testConn{
++		// testConn.Close will not push into the channel
++		// if it's full.
++		closec: make(chan bool, 1),
++	}
++	handler := HandlerFunc(func(rw ResponseWriter, r *Request) {
++		rw.Header().Set("Content-Type", "text/html; charset=utf-8")
++		rw.Write(res)
++	})
++	ln := new(oneConnListener)
++	for i := 0; i < b.N; i++ {
++		conn.readBuf.Reset()
++		conn.writeBuf.Reset()
++		conn.readBuf.Write(req)
++		ln.conn = conn
++		Serve(ln, handler)
++		<-conn.closec
++	}
++}
++
++// repeatReader reads content count times, then EOFs.
++type repeatReader struct {
++	content []byte
++	count   int
++	off     int
++}
++
++func (r *repeatReader) Read(p []byte) (n int, err error) {
++	if r.count <= 0 {
++		return 0, io.EOF
++	}
++	n = copy(p, r.content[r.off:])
++	r.off += n
++	if r.off == len(r.content) {
++		r.count--
++		r.off = 0
++	}
++	return
++}
++
++func BenchmarkServerFakeConnWithKeepAlive(b *testing.B) {
++	b.ReportAllocs()
++
++	req := []byte(strings.Replace(`GET / HTTP/1.1
++Host: golang.org
++Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
++User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
++Accept-Encoding: gzip,deflate,sdch
++Accept-Language: en-US,en;q=0.8
++Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
++
++`, "\n", "\r\n", -1))
++	res := []byte("Hello world!\n")
++
++	conn := &rwTestConn{
++		Reader: &repeatReader{content: req, count: b.N},
++		Writer: ioutil.Discard,
++		closec: make(chan bool, 1),
++	}
++	handled := 0
++	handler := HandlerFunc(func(rw ResponseWriter, r *Request) {
++		handled++
++		rw.Header().Set("Content-Type", "text/html; charset=utf-8")
++		rw.Write(res)
++	})
++	ln := &oneConnListener{conn: conn}
++	go Serve(ln, handler)
++	<-conn.closec
++	if b.N != handled {
++		b.Errorf("b.N=%d but handled %d", b.N, handled)
++	}
++}
++
++// same as above, but representing the most simple possible request
++// and handler. Notably: the handler does not call rw.Header().
++func BenchmarkServerFakeConnWithKeepAliveLite(b *testing.B) {
++	b.ReportAllocs()
++
++	req := []byte(strings.Replace(`GET / HTTP/1.1
++Host: golang.org
++
++`, "\n", "\r\n", -1))
++	res := []byte("Hello world!\n")
++
++	conn := &rwTestConn{
++		Reader: &repeatReader{content: req, count: b.N},
++		Writer: ioutil.Discard,
++		closec: make(chan bool, 1),
++	}
++	handled := 0
++	handler := HandlerFunc(func(rw ResponseWriter, r *Request) {
++		handled++
++		rw.Write(res)
++	})
++	ln := &oneConnListener{conn: conn}
++	go Serve(ln, handler)
++	<-conn.closec
++	if b.N != handled {
++		b.Errorf("b.N=%d but handled %d", b.N, handled)
++	}
++}
++
++const someResponse = "<html>some response</html>"
++
++// A Response that's just no bigger than 2KB, the buffer-before-chunking threshold.
++var response = bytes.Repeat([]byte(someResponse), 2<<10/len(someResponse))
++
++// Both Content-Type and Content-Length set. Should be no buffering.
++func BenchmarkServerHandlerTypeLen(b *testing.B) {
++	benchmarkHandler(b, HandlerFunc(func(w ResponseWriter, r *Request) {
++		w.Header().Set("Content-Type", "text/html")
++		w.Header().Set("Content-Length", strconv.Itoa(len(response)))
++		w.Write(response)
++	}))
++}
++
++// A Content-Type is set, but no length. No sniffing, but will count the Content-Length.
++func BenchmarkServerHandlerNoLen(b *testing.B) {
++	benchmarkHandler(b, HandlerFunc(func(w ResponseWriter, r *Request) {
++		w.Header().Set("Content-Type", "text/html")
++		w.Write(response)
++	}))
++}
++
++// A Content-Length is set, but the Content-Type will be sniffed.
++func BenchmarkServerHandlerNoType(b *testing.B) {
++	benchmarkHandler(b, HandlerFunc(func(w ResponseWriter, r *Request) {
++		w.Header().Set("Content-Length", strconv.Itoa(len(response)))
++		w.Write(response)
++	}))
++}
++
++// Neither a Content-Type or Content-Length, so sniffed and counted.
++func BenchmarkServerHandlerNoHeader(b *testing.B) {
++	benchmarkHandler(b, HandlerFunc(func(w ResponseWriter, r *Request) {
++		w.Write(response)
++	}))
++}
++
++func benchmarkHandler(b *testing.B, h Handler) {
++	b.ReportAllocs()
++	req := []byte(strings.Replace(`GET / HTTP/1.1
++Host: golang.org
++
++`, "\n", "\r\n", -1))
++	conn := &rwTestConn{
++		Reader: &repeatReader{content: req, count: b.N},
++		Writer: ioutil.Discard,
++		closec: make(chan bool, 1),
++	}
++	handled := 0
++	handler := HandlerFunc(func(rw ResponseWriter, r *Request) {
++		handled++
++		h.ServeHTTP(rw, r)
++	})
++	ln := &oneConnListener{conn: conn}
++	go Serve(ln, handler)
++	<-conn.closec
++	if b.N != handled {
++		b.Errorf("b.N=%d but handled %d", b.N, handled)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/sniff_test.go gcc-4.8.1/libgo/go/net/http/sniff_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/sniff_test.go	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/sniff_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -54,6 +54,7 @@
+ }
+ 
+ func TestServerContentType(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		i, _ := strconv.Atoi(r.FormValue("i"))
+ 		tt := sniffTests[i]
+@@ -84,6 +85,8 @@
+ }
+ 
+ func TestContentTypeWithCopy(t *testing.T) {
++	defer afterTest(t)
++
+ 	const (
+ 		input    = "\n<html>\n\t<head>\n"
+ 		expected = "text/html; charset=utf-8"
+@@ -116,6 +119,7 @@
+ }
+ 
+ func TestSniffWriteSize(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		size, _ := strconv.Atoi(r.FormValue("size"))
+ 		written, err := io.WriteString(w, strings.Repeat("a", size))
+@@ -133,6 +137,11 @@
+ 		if err != nil {
+ 			t.Fatalf("size %d: %v", size, err)
+ 		}
+-		res.Body.Close()
++		if _, err := io.Copy(ioutil.Discard, res.Body); err != nil {
++			t.Fatalf("size %d: io.Copy of body = %v", size, err)
++		}
++		if err := res.Body.Close(); err != nil {
++			t.Fatalf("size %d: body Close = %v", size, err)
++		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/status.go gcc-4.8.1/libgo/go/net/http/status.go
+--- gcc-4.8.1.orig/libgo/go/net/http/status.go	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/status.go	2013-07-16 01:55:04.520470000 -0500
+@@ -51,6 +51,13 @@
+ 	StatusServiceUnavailable      = 503
+ 	StatusGatewayTimeout          = 504
+ 	StatusHTTPVersionNotSupported = 505
++
++	// New HTTP status codes from RFC 6585. Not exported yet in Go 1.1.
++	// See discussion at https://codereview.appspot.com/7678043/
++	statusPreconditionRequired          = 428
++	statusTooManyRequests               = 429
++	statusRequestHeaderFieldsTooLarge   = 431
++	statusNetworkAuthenticationRequired = 511
+ )
+ 
+ var statusText = map[int]string{
+@@ -99,6 +106,11 @@
+ 	StatusServiceUnavailable:      "Service Unavailable",
+ 	StatusGatewayTimeout:          "Gateway Timeout",
+ 	StatusHTTPVersionNotSupported: "HTTP Version Not Supported",
++
++	statusPreconditionRequired:          "Precondition Required",
++	statusTooManyRequests:               "Too Many Requests",
++	statusRequestHeaderFieldsTooLarge:   "Request Header Fields Too Large",
++	statusNetworkAuthenticationRequired: "Network Authentication Required",
+ }
+ 
+ // StatusText returns a text for the HTTP status code. It returns the empty
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/transfer.go gcc-4.8.1/libgo/go/net/http/transfer.go
+--- gcc-4.8.1.orig/libgo/go/net/http/transfer.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/transfer.go	2013-07-16 01:55:04.520470000 -0500
+@@ -194,10 +194,11 @@
+ 			ncopy, err = io.Copy(w, t.Body)
+ 		} else {
+ 			ncopy, err = io.Copy(w, io.LimitReader(t.Body, t.ContentLength))
+-			nextra, err := io.Copy(ioutil.Discard, t.Body)
+ 			if err != nil {
+ 				return err
+ 			}
++			var nextra int64
++			nextra, err = io.Copy(ioutil.Discard, t.Body)
+ 			ncopy += nextra
+ 		}
+ 		if err != nil {
+@@ -208,7 +209,7 @@
+ 		}
+ 	}
+ 
+-	if t.ContentLength != -1 && t.ContentLength != ncopy {
++	if !t.ResponseToHEAD && t.ContentLength != -1 && t.ContentLength != ncopy {
+ 		return fmt.Errorf("http: Request.ContentLength=%d with Body length %d",
+ 			t.ContentLength, ncopy)
+ 	}
+@@ -326,9 +327,14 @@
+ 	// or close connection when finished, since multipart is not supported yet
+ 	switch {
+ 	case chunked(t.TransferEncoding):
+-		t.Body = &body{Reader: newChunkedReader(r), hdr: msg, r: r, closing: t.Close}
+-	case realLength >= 0:
+-		// TODO: limit the Content-Length. This is an easy DoS vector.
++		if noBodyExpected(t.RequestMethod) {
++			t.Body = &body{Reader: eofReader, closing: t.Close}
++		} else {
++			t.Body = &body{Reader: newChunkedReader(r), hdr: msg, r: r, closing: t.Close}
++		}
++	case realLength == 0:
++		t.Body = &body{Reader: eofReader, closing: t.Close}
++	case realLength > 0:
+ 		t.Body = &body{Reader: io.LimitReader(r, realLength), closing: t.Close}
+ 	default:
+ 		// realLength < 0, i.e. "Content-Length" not mentioned in header
+@@ -337,7 +343,7 @@
+ 			t.Body = &body{Reader: r, closing: t.Close}
+ 		} else {
+ 			// Persistent connection (i.e. HTTP/1.1)
+-			t.Body = &body{Reader: io.LimitReader(r, 0), closing: t.Close}
++			t.Body = &body{Reader: eofReader, closing: t.Close}
+ 		}
+ 	}
+ 
+@@ -449,13 +455,6 @@
+ 		return 0, nil
+ 	}
+ 
+-	// Logic based on media type. The purpose of the following code is just
+-	// to detect whether the unsupported "multipart/byteranges" is being
+-	// used. A proper Content-Type parser is needed in the future.
+-	if strings.Contains(strings.ToLower(header.get("Content-Type")), "multipart/byteranges") {
+-		return -1, ErrNotSupported
+-	}
+-
+ 	// Body-EOF logic based on other methods (like closing, or chunked coding)
+ 	return -1, nil
+ }
+@@ -614,30 +613,26 @@
+ 	if b.closed {
+ 		return nil
+ 	}
+-	defer func() {
+-		b.closed = true
+-	}()
+-	if b.hdr == nil && b.closing {
++	var err error
++	switch {
++	case b.hdr == nil && b.closing:
+ 		// no trailer and closing the connection next.
+ 		// no point in reading to EOF.
+-		return nil
+-	}
+-
+-	// In a server request, don't continue reading from the client
+-	// if we've already hit the maximum body size set by the
+-	// handler. If this is set, that also means the TCP connection
+-	// is about to be closed, so getting to the next HTTP request
+-	// in the stream is not necessary.
+-	if b.res != nil && b.res.requestBodyLimitHit {
+-		return nil
+-	}
+-
+-	// Fully consume the body, which will also lead to us reading
+-	// the trailer headers after the body, if present.
+-	if _, err := io.Copy(ioutil.Discard, b); err != nil {
+-		return err
++	case b.res != nil && b.res.requestBodyLimitHit:
++		// In a server request, don't continue reading from the client
++		// if we've already hit the maximum body size set by the
++		// handler. If this is set, that also means the TCP connection
++		// is about to be closed, so getting to the next HTTP request
++		// in the stream is not necessary.
++	case b.Reader == eofReader:
++		// Nothing to read. No need to io.Copy from it.
++	default:
++		// Fully consume the body, which will also lead to us reading
++		// the trailer headers after the body, if present.
++		_, err = io.Copy(ioutil.Discard, b)
+ 	}
+-	return nil
++	b.closed = true
++	return err
+ }
+ 
+ // parseContentLength trims whitespace from s and returns -1 if no value
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/transport.go gcc-4.8.1/libgo/go/net/http/transport.go
+--- gcc-4.8.1.orig/libgo/go/net/http/transport.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/transport.go	2013-07-16 01:55:04.520470000 -0500
+@@ -17,7 +17,6 @@
+ 	"errors"
+ 	"fmt"
+ 	"io"
+-	"io/ioutil"
+ 	"log"
+ 	"net"
+ 	"net/url"
+@@ -42,14 +41,13 @@
+ // https, and http proxies (for either http or https with CONNECT).
+ // Transport can also cache connections for future re-use.
+ type Transport struct {
+-	idleLk   sync.Mutex
+-	idleConn map[string][]*persistConn
+-	altLk    sync.RWMutex
+-	altProto map[string]RoundTripper // nil or map of URI scheme => RoundTripper
+-
+-	// TODO: tunable on global max cached connections
+-	// TODO: tunable on timeout on cached connections
+-	// TODO: optional pipelining
++	idleMu     sync.Mutex
++	idleConn   map[string][]*persistConn
++	idleConnCh map[string]chan *persistConn
++	reqMu      sync.Mutex
++	reqConn    map[*Request]*persistConn
++	altMu      sync.RWMutex
++	altProto   map[string]RoundTripper // nil or map of URI scheme => RoundTripper
+ 
+ 	// Proxy specifies a function to return a proxy for a given
+ 	// Request. If the function returns a non-nil error, the
+@@ -60,19 +58,39 @@
+ 	// Dial specifies the dial function for creating TCP
+ 	// connections.
+ 	// If Dial is nil, net.Dial is used.
+-	Dial func(net, addr string) (c net.Conn, err error)
++	Dial func(network, addr string) (net.Conn, error)
+ 
+ 	// TLSClientConfig specifies the TLS configuration to use with
+ 	// tls.Client. If nil, the default configuration is used.
+ 	TLSClientConfig *tls.Config
+ 
+-	DisableKeepAlives  bool
++	// DisableKeepAlives, if true, prevents re-use of TCP connections
++	// between different HTTP requests.
++	DisableKeepAlives bool
++
++	// DisableCompression, if true, prevents the Transport from
++	// requesting compression with an "Accept-Encoding: gzip"
++	// request header when the Request contains no existing
++	// Accept-Encoding value. If the Transport requests gzip on
++	// its own and gets a gzipped response, it's transparently
++	// decoded in the Response.Body. However, if the user
++	// explicitly requested gzip it is not automatically
++	// uncompressed.
+ 	DisableCompression bool
+ 
+ 	// MaxIdleConnsPerHost, if non-zero, controls the maximum idle
+ 	// (keep-alive) to keep per-host.  If zero,
+ 	// DefaultMaxIdleConnsPerHost is used.
+ 	MaxIdleConnsPerHost int
++
++	// ResponseHeaderTimeout, if non-zero, specifies the amount of
++	// time to wait for a server's response headers after fully
++	// writing the request (including its body, if any). This
++	// time does not include the time to read the response body.
++	ResponseHeaderTimeout time.Duration
++
++	// TODO: tunable on global max cached connections
++	// TODO: tunable on timeout on cached connections
+ }
+ 
+ // ProxyFromEnvironment returns the URL of the proxy to use for a
+@@ -125,6 +143,9 @@
+ }
+ 
+ // RoundTrip implements the RoundTripper interface.
++//
++// For higher-level HTTP client support (such as handling of cookies
++// and redirects), see Get, Post, and the Client type.
+ func (t *Transport) RoundTrip(req *Request) (resp *Response, err error) {
+ 	if req.URL == nil {
+ 		return nil, errors.New("http: nil Request.URL")
+@@ -133,12 +154,12 @@
+ 		return nil, errors.New("http: nil Request.Header")
+ 	}
+ 	if req.URL.Scheme != "http" && req.URL.Scheme != "https" {
+-		t.altLk.RLock()
++		t.altMu.RLock()
+ 		var rt RoundTripper
+ 		if t.altProto != nil {
+ 			rt = t.altProto[req.URL.Scheme]
+ 		}
+-		t.altLk.RUnlock()
++		t.altMu.RUnlock()
+ 		if rt == nil {
+ 			return nil, &badStringError{"unsupported protocol scheme", req.URL.Scheme}
+ 		}
+@@ -175,8 +196,8 @@
+ 	if scheme == "http" || scheme == "https" {
+ 		panic("protocol " + scheme + " already registered")
+ 	}
+-	t.altLk.Lock()
+-	defer t.altLk.Unlock()
++	t.altMu.Lock()
++	defer t.altMu.Unlock()
+ 	if t.altProto == nil {
+ 		t.altProto = make(map[string]RoundTripper)
+ 	}
+@@ -191,10 +212,10 @@
+ // a "keep-alive" state. It does not interrupt any connections currently
+ // in use.
+ func (t *Transport) CloseIdleConnections() {
+-	t.idleLk.Lock()
++	t.idleMu.Lock()
+ 	m := t.idleConn
+ 	t.idleConn = nil
+-	t.idleLk.Unlock()
++	t.idleMu.Unlock()
+ 	if m == nil {
+ 		return
+ 	}
+@@ -205,6 +226,17 @@
+ 	}
+ }
+ 
++// CancelRequest cancels an in-flight request by closing its
++// connection.
++func (t *Transport) CancelRequest(req *Request) {
++	t.reqMu.Lock()
++	pc := t.reqConn[req]
++	t.reqMu.Unlock()
++	if pc != nil {
++		pc.conn.Close()
++	}
++}
++
+ //
+ // Private implementation past this point.
+ //
+@@ -260,12 +292,23 @@
+ 	if max == 0 {
+ 		max = DefaultMaxIdleConnsPerHost
+ 	}
+-	t.idleLk.Lock()
++	t.idleMu.Lock()
++	select {
++	case t.idleConnCh[key] <- pconn:
++		// We're done with this pconn and somebody else is
++		// currently waiting for a conn of this type (they're
++		// actively dialing, but this conn is ready
++		// first). Chrome calls this socket late binding.  See
++		// https://insouciant.org/tech/connection-management-in-chromium/
++		t.idleMu.Unlock()
++		return true
++	default:
++	}
+ 	if t.idleConn == nil {
+ 		t.idleConn = make(map[string][]*persistConn)
+ 	}
+ 	if len(t.idleConn[key]) >= max {
+-		t.idleLk.Unlock()
++		t.idleMu.Unlock()
+ 		pconn.close()
+ 		return false
+ 	}
+@@ -275,14 +318,29 @@
+ 		}
+ 	}
+ 	t.idleConn[key] = append(t.idleConn[key], pconn)
+-	t.idleLk.Unlock()
++	t.idleMu.Unlock()
+ 	return true
+ }
+ 
++func (t *Transport) getIdleConnCh(cm *connectMethod) chan *persistConn {
++	key := cm.key()
++	t.idleMu.Lock()
++	defer t.idleMu.Unlock()
++	if t.idleConnCh == nil {
++		t.idleConnCh = make(map[string]chan *persistConn)
++	}
++	ch, ok := t.idleConnCh[key]
++	if !ok {
++		ch = make(chan *persistConn)
++		t.idleConnCh[key] = ch
++	}
++	return ch
++}
++
+ func (t *Transport) getIdleConn(cm *connectMethod) (pconn *persistConn) {
+-	key := cm.String()
+-	t.idleLk.Lock()
+-	defer t.idleLk.Unlock()
++	key := cm.key()
++	t.idleMu.Lock()
++	defer t.idleMu.Unlock()
+ 	if t.idleConn == nil {
+ 		return nil
+ 	}
+@@ -304,7 +362,19 @@
+ 			return
+ 		}
+ 	}
+-	panic("unreachable")
++}
++
++func (t *Transport) setReqConn(r *Request, pc *persistConn) {
++	t.reqMu.Lock()
++	defer t.reqMu.Unlock()
++	if t.reqConn == nil {
++		t.reqConn = make(map[*Request]*persistConn)
++	}
++	if pc != nil {
++		t.reqConn[r] = pc
++	} else {
++		delete(t.reqConn, r)
++	}
+ }
+ 
+ func (t *Transport) dial(network, addr string) (c net.Conn, err error) {
+@@ -323,6 +393,37 @@
+ 		return pc, nil
+ 	}
+ 
++	type dialRes struct {
++		pc  *persistConn
++		err error
++	}
++	dialc := make(chan dialRes)
++	go func() {
++		pc, err := t.dialConn(cm)
++		dialc <- dialRes{pc, err}
++	}()
++
++	idleConnCh := t.getIdleConnCh(cm)
++	select {
++	case v := <-dialc:
++		// Our dial finished.
++		return v.pc, v.err
++	case pc := <-idleConnCh:
++		// Another request finished first and its net.Conn
++		// became available before our dial. Or somebody
++		// else's dial that they didn't use.
++		// But our dial is still going, so give it away
++		// when it finishes:
++		go func() {
++			if v := <-dialc; v.err == nil {
++				t.putIdleConn(v.pc)
++			}
++		}()
++		return pc, nil
++	}
++}
++
++func (t *Transport) dialConn(cm *connectMethod) (*persistConn, error) {
+ 	conn, err := t.dial("tcp", cm.addr())
+ 	if err != nil {
+ 		if cm.proxyURL != nil {
+@@ -335,7 +436,7 @@
+ 
+ 	pconn := &persistConn{
+ 		t:        t,
+-		cacheKey: cm.String(),
++		cacheKey: cm.key(),
+ 		conn:     conn,
+ 		reqch:    make(chan requestAndChan, 50),
+ 		writech:  make(chan writeRequest, 50),
+@@ -485,6 +586,10 @@
+ 	targetAddr   string   // Not used if proxy + http targetScheme (4th example in table)
+ }
+ 
++func (ck *connectMethod) key() string {
++	return ck.String() // TODO: use a struct type instead
++}
++
+ func (ck *connectMethod) String() string {
+ 	proxyStr := ""
+ 	targetAddr := ck.targetAddr
+@@ -529,14 +634,13 @@
+ 	closech  chan struct{}       // broadcast close when readLoop (TCP connection) closes
+ 	isProxy  bool
+ 
++	lk                   sync.Mutex // guards following 3 fields
++	numExpectedResponses int
++	broken               bool // an error has happened on this connection; marked broken so it's not reused.
+ 	// mutateHeaderFunc is an optional func to modify extra
+ 	// headers on each outbound request before it's written. (the
+ 	// original Request given to RoundTrip is not modified)
+ 	mutateHeaderFunc func(Header)
+-
+-	lk                   sync.Mutex // guards numExpectedResponses and broken
+-	numExpectedResponses int
+-	broken               bool // an error has happened on this connection; marked broken so it's not reused.
+ }
+ 
+ func (pc *persistConn) isBroken() bool {
+@@ -561,7 +665,6 @@
+ func (pc *persistConn) readLoop() {
+ 	defer close(pc.closech)
+ 	alive := true
+-	var lastbody io.ReadCloser // last response body, if any, read on this connection
+ 
+ 	for alive {
+ 		pb, err := pc.br.Peek(1)
+@@ -580,22 +683,23 @@
+ 
+ 		rc := <-pc.reqch
+ 
+-		// Advance past the previous response's body, if the
+-		// caller hasn't done so.
+-		if lastbody != nil {
+-			lastbody.Close() // assumed idempotent
+-			lastbody = nil
+-		}
+-
+ 		var resp *Response
+ 		if err == nil {
+ 			resp, err = ReadResponse(pc.br, rc.req)
++			if err == nil && resp.StatusCode == 100 {
++				// Skip any 100-continue for now.
++				// TODO(bradfitz): if rc.req had "Expect: 100-continue",
++				// actually block the request body write and signal the
++				// writeLoop now to begin sending it. (Issue 2184) For now we
++				// eat it, since we're never expecting one.
++				resp, err = ReadResponse(pc.br, rc.req)
++			}
+ 		}
++		hasBody := resp != nil && rc.req.Method != "HEAD" && resp.ContentLength != 0
+ 
+ 		if err != nil {
+ 			pc.close()
+ 		} else {
+-			hasBody := rc.req.Method != "HEAD" && resp.ContentLength != 0
+ 			if rc.addedGzip && hasBody && resp.Header.Get("Content-Encoding") == "gzip" {
+ 				resp.Header.Del("Content-Encoding")
+ 				resp.Header.Del("Content-Length")
+@@ -605,21 +709,29 @@
+ 					pc.close()
+ 					err = zerr
+ 				} else {
+-					resp.Body = &readFirstCloseBoth{&discardOnCloseReadCloser{gzReader}, resp.Body}
++					resp.Body = &readerAndCloser{gzReader, resp.Body}
+ 				}
+ 			}
+ 			resp.Body = &bodyEOFSignal{body: resp.Body}
+ 		}
+ 
+-		if err != nil || resp.Close || rc.req.Close {
++		if err != nil || resp.Close || rc.req.Close || resp.StatusCode <= 199 {
++			// Don't do keep-alive on error if either party requested a close
++			// or we get an unexpected informational (1xx) response.
++			// StatusCode 100 is already handled above.
+ 			alive = false
+ 		}
+ 
+-		hasBody := resp != nil && rc.req.Method != "HEAD" && resp.ContentLength != 0
+ 		var waitForBodyRead chan bool
+ 		if hasBody {
+-			lastbody = resp.Body
+-			waitForBodyRead = make(chan bool, 1)
++			waitForBodyRead = make(chan bool, 2)
++			resp.Body.(*bodyEOFSignal).earlyCloseFn = func() error {
++				// Sending false here sets alive to
++				// false and closes the connection
++				// below.
++				waitForBodyRead <- false
++				return nil
++			}
+ 			resp.Body.(*bodyEOFSignal).fn = func(err error) {
+ 				alive1 := alive
+ 				if err != nil {
+@@ -636,15 +748,6 @@
+ 		}
+ 
+ 		if alive && !hasBody {
+-			// When there's no response body, we immediately
+-			// reuse the TCP connection (putIdleConn), but
+-			// we need to prevent ClientConn.Read from
+-			// closing the Response.Body on the next
+-			// loop, otherwise it might close the body
+-			// before the client code has had a chance to
+-			// read it (even though it'll just be 0, EOF).
+-			lastbody = nil
+-
+ 			if !pc.t.putIdleConn(pc) {
+ 				alive = false
+ 			}
+@@ -658,6 +761,8 @@
+ 			alive = <-waitForBodyRead
+ 		}
+ 
++		pc.t.setReqConn(rc.req, nil)
++
+ 		if !alive {
+ 			pc.close()
+ 		}
+@@ -711,8 +816,14 @@
+ }
+ 
+ func (pc *persistConn) roundTrip(req *transportRequest) (resp *Response, err error) {
+-	if pc.mutateHeaderFunc != nil {
+-		pc.mutateHeaderFunc(req.extraHeaders())
++	pc.t.setReqConn(req.Request, pc)
++	pc.lk.Lock()
++	pc.numExpectedResponses++
++	headerFn := pc.mutateHeaderFunc
++	pc.lk.Unlock()
++
++	if headerFn != nil {
++		headerFn(req.extraHeaders())
+ 	}
+ 
+ 	// Ask for a compressed version if the caller didn't set their
+@@ -728,10 +839,6 @@
+ 		req.extraHeaders().Set("Accept-Encoding", "gzip")
+ 	}
+ 
+-	pc.lk.Lock()
+-	pc.numExpectedResponses++
+-	pc.lk.Unlock()
+-
+ 	// Write the request concurrently with waiting for a response,
+ 	// in case the server decides to reply before reading our full
+ 	// request body.
+@@ -744,6 +851,7 @@
+ 	var re responseAndError
+ 	var pconnDeadCh = pc.closech
+ 	var failTicker <-chan time.Time
++	var respHeaderTimer <-chan time.Time
+ WaitResponse:
+ 	for {
+ 		select {
+@@ -753,6 +861,9 @@
+ 				pc.close()
+ 				break WaitResponse
+ 			}
++			if d := pc.t.ResponseHeaderTimeout; d > 0 {
++				respHeaderTimer = time.After(d)
++			}
+ 		case <-pconnDeadCh:
+ 			// The persist connection is dead. This shouldn't
+ 			// usually happen (only with Connection: close responses
+@@ -769,7 +880,11 @@
+ 			pconnDeadCh = nil                               // avoid spinning
+ 			failTicker = time.After(100 * time.Millisecond) // arbitrary time to wait for resc
+ 		case <-failTicker:
+-			re = responseAndError{nil, errors.New("net/http: transport closed before response was received")}
++			re = responseAndError{err: errors.New("net/http: transport closed before response was received")}
++			break WaitResponse
++		case <-respHeaderTimer:
++			pc.close()
++			re = responseAndError{err: errors.New("net/http: timeout awaiting response headers")}
+ 			break WaitResponse
+ 		case re = <-resc:
+ 			break WaitResponse
+@@ -780,6 +895,9 @@
+ 	pc.numExpectedResponses--
+ 	pc.lk.Unlock()
+ 
++	if re.err != nil {
++		pc.t.setReqConn(req.Request, nil)
++	}
+ 	return re.res, re.err
+ }
+ 
+@@ -823,13 +941,16 @@
+ 
+ // bodyEOFSignal wraps a ReadCloser but runs fn (if non-nil) at most
+ // once, right before its final (error-producing) Read or Close call
+-// returns.
++// returns. If earlyCloseFn is non-nil and Close is called before
++// io.EOF is seen, earlyCloseFn is called instead of fn, and its
++// return value is the return value from Close.
+ type bodyEOFSignal struct {
+-	body   io.ReadCloser
+-	mu     sync.Mutex  // guards closed, rerr and fn
+-	closed bool        // whether Close has been called
+-	rerr   error       // sticky Read error
+-	fn     func(error) // error will be nil on Read io.EOF
++	body         io.ReadCloser
++	mu           sync.Mutex   // guards following 4 fields
++	closed       bool         // whether Close has been called
++	rerr         error        // sticky Read error
++	fn           func(error)  // error will be nil on Read io.EOF
++	earlyCloseFn func() error // optional alt Close func used if io.EOF not seen
+ }
+ 
+ func (es *bodyEOFSignal) Read(p []byte) (n int, err error) {
+@@ -862,6 +983,9 @@
+ 		return nil
+ 	}
+ 	es.closed = true
++	if es.earlyCloseFn != nil && es.rerr != io.EOF {
++		return es.earlyCloseFn()
++	}
+ 	err := es.body.Close()
+ 	es.condfn(err)
+ 	return err
+@@ -879,28 +1003,7 @@
+ 	es.fn = nil
+ }
+ 
+-type readFirstCloseBoth struct {
+-	io.ReadCloser
++type readerAndCloser struct {
++	io.Reader
+ 	io.Closer
+ }
+-
+-func (r *readFirstCloseBoth) Close() error {
+-	if err := r.ReadCloser.Close(); err != nil {
+-		r.Closer.Close()
+-		return err
+-	}
+-	if err := r.Closer.Close(); err != nil {
+-		return err
+-	}
+-	return nil
+-}
+-
+-// discardOnCloseReadCloser consumes all its input on Close.
+-type discardOnCloseReadCloser struct {
+-	io.ReadCloser
+-}
+-
+-func (d *discardOnCloseReadCloser) Close() error {
+-	io.Copy(ioutil.Discard, d.ReadCloser) // ignore errors; likely invalid or already closed
+-	return d.ReadCloser.Close()
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/transport_test.go gcc-4.8.1/libgo/go/net/http/transport_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/transport_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/transport_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,6 +7,7 @@
+ package http_test
+ 
+ import (
++	"bufio"
+ 	"bytes"
+ 	"compress/gzip"
+ 	"crypto/rand"
+@@ -102,11 +103,13 @@
+ // Two subsequent requests and verify their response is the same.
+ // The response from the server is our own IP:port
+ func TestTransportKeepAlives(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(hostPortHandler)
+ 	defer ts.Close()
+ 
+ 	for _, disableKeepAlive := range []bool{false, true} {
+ 		tr := &Transport{DisableKeepAlives: disableKeepAlive}
++		defer tr.CloseIdleConnections()
+ 		c := &Client{Transport: tr}
+ 
+ 		fetch := func(n int) string {
+@@ -133,6 +136,7 @@
+ }
+ 
+ func TestTransportConnectionCloseOnResponse(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(hostPortHandler)
+ 	defer ts.Close()
+ 
+@@ -183,6 +187,7 @@
+ }
+ 
+ func TestTransportConnectionCloseOnRequest(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(hostPortHandler)
+ 	defer ts.Close()
+ 
+@@ -233,6 +238,7 @@
+ }
+ 
+ func TestTransportIdleCacheKeys(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(hostPortHandler)
+ 	defer ts.Close()
+ 
+@@ -265,6 +271,7 @@
+ }
+ 
+ func TestTransportMaxPerHostIdleConns(t *testing.T) {
++	defer afterTest(t)
+ 	resch := make(chan string)
+ 	gotReq := make(chan bool)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+@@ -333,6 +340,7 @@
+ }
+ 
+ func TestTransportServerClosingUnexpectedly(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(hostPortHandler)
+ 	defer ts.Close()
+ 
+@@ -389,6 +397,7 @@
+ // Test for http://golang.org/issue/2616 (appropriate issue number)
+ // This fails pretty reliably with GOMAXPROCS=100 or something high.
+ func TestStressSurpriseServerCloses(t *testing.T) {
++	defer afterTest(t)
+ 	if testing.Short() {
+ 		t.Skip("skipping test in short mode")
+ 	}
+@@ -444,6 +453,7 @@
+ // TestTransportHeadResponses verifies that we deal with Content-Lengths
+ // with no bodies properly
+ func TestTransportHeadResponses(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.Method != "HEAD" {
+ 			panic("expected HEAD; got " + r.Method)
+@@ -472,6 +482,7 @@
+ // TestTransportHeadChunkedResponse verifies that we ignore chunked transfer-encoding
+ // on responses to HEAD requests.
+ func TestTransportHeadChunkedResponse(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		if r.Method != "HEAD" {
+ 			panic("expected HEAD; got " + r.Method)
+@@ -513,6 +524,7 @@
+ 
+ // Test that the modification made to the Request by the RoundTripper is cleaned up
+ func TestRoundTripGzip(t *testing.T) {
++	defer afterTest(t)
+ 	const responseBody = "test response body"
+ 	ts := httptest.NewServer(HandlerFunc(func(rw ResponseWriter, req *Request) {
+ 		accept := req.Header.Get("Accept-Encoding")
+@@ -569,6 +581,7 @@
+ }
+ 
+ func TestTransportGzip(t *testing.T) {
++	defer afterTest(t)
+ 	const testString = "The test string aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+ 	const nRandBytes = 1024 * 1024
+ 	ts := httptest.NewServer(HandlerFunc(func(rw ResponseWriter, req *Request) {
+@@ -661,6 +674,7 @@
+ }
+ 
+ func TestTransportProxy(t *testing.T) {
++	defer afterTest(t)
+ 	ch := make(chan string, 1)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		ch <- "real server"
+@@ -689,6 +703,7 @@
+ // but checks that we don't recurse forever, and checks that
+ // Content-Encoding is removed.
+ func TestTransportGzipRecursive(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Header().Set("Content-Encoding", "gzip")
+ 		w.Write(rgz)
+@@ -715,6 +730,7 @@
+ 
+ // tests that persistent goroutine connections shut down when no longer desired.
+ func TestTransportPersistConnLeak(t *testing.T) {
++	defer afterTest(t)
+ 	gotReqCh := make(chan bool)
+ 	unblockCh := make(chan bool)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+@@ -780,6 +796,7 @@
+ // golang.org/issue/4531: Transport leaks goroutines when
+ // request.ContentLength is explicitly short
+ func TestTransportPersistConnLeakShortBody(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 	}))
+ 	defer ts.Close()
+@@ -818,6 +835,7 @@
+ 
+ // This used to crash; http://golang.org/issue/3266
+ func TestTransportIdleConnCrash(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &Transport{}
+ 	c := &Client{Transport: tr}
+ 
+@@ -847,6 +865,7 @@
+ // which sadly lacked a triggering test.  The large response body made
+ // the old race easier to trigger.
+ func TestIssue3644(t *testing.T) {
++	defer afterTest(t)
+ 	const numFoos = 5000
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.Header().Set("Connection", "close")
+@@ -874,6 +893,7 @@
+ // Test that a client receives a server's reply, even if the server doesn't read
+ // the entire request body.
+ func TestIssue3595(t *testing.T) {
++	defer afterTest(t)
+ 	const deniedMsg = "sorry, denied."
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		Error(w, deniedMsg, StatusUnauthorized)
+@@ -898,6 +918,7 @@
+ // From http://golang.org/issue/4454 ,
+ // "client fails to handle requests with no body and chunked encoding"
+ func TestChunkedNoContent(t *testing.T) {
++	defer afterTest(t)
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		w.WriteHeader(StatusNoContent)
+ 	}))
+@@ -920,20 +941,38 @@
+ }
+ 
+ func TestTransportConcurrency(t *testing.T) {
+-	const maxProcs = 16
+-	const numReqs = 500
++	defer afterTest(t)
++	maxProcs, numReqs := 16, 500
++	if testing.Short() {
++		maxProcs, numReqs = 4, 50
++	}
+ 	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(maxProcs))
+ 	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
+ 		fmt.Fprintf(w, "%v", r.FormValue("echo"))
+ 	}))
+ 	defer ts.Close()
+-	tr := &Transport{}
++
++	var wg sync.WaitGroup
++	wg.Add(numReqs)
++
++	tr := &Transport{
++		Dial: func(netw, addr string) (c net.Conn, err error) {
++			// Due to the Transport's "socket late
++			// binding" (see idleConnCh in transport.go),
++			// the numReqs HTTP requests below can finish
++			// with a dial still outstanding.  So count
++			// our dials as work too so the leak checker
++			// doesn't complain at us.
++			wg.Add(1)
++			defer wg.Done()
++			return net.Dial(netw, addr)
++		},
++	}
++	defer tr.CloseIdleConnections()
+ 	c := &Client{Transport: tr}
+ 	reqs := make(chan string)
+ 	defer close(reqs)
+ 
+-	var wg sync.WaitGroup
+-	wg.Add(numReqs)
+ 	for i := 0; i < maxProcs*2; i++ {
+ 		go func() {
+ 			for req := range reqs {
+@@ -952,8 +991,8 @@
+ 				if string(all) != req {
+ 					t.Errorf("body of req %s = %q; want %q", req, all, req)
+ 				}
+-				wg.Done()
+ 				res.Body.Close()
++				wg.Done()
+ 			}
+ 		}()
+ 	}
+@@ -964,12 +1003,14 @@
+ }
+ 
+ func TestIssue4191_InfiniteGetTimeout(t *testing.T) {
++	defer afterTest(t)
+ 	const debug = false
+ 	mux := NewServeMux()
+ 	mux.HandleFunc("/get", func(w ResponseWriter, r *Request) {
+ 		io.Copy(w, neverEnding('a'))
+ 	})
+ 	ts := httptest.NewServer(mux)
++	timeout := 100 * time.Millisecond
+ 
+ 	client := &Client{
+ 		Transport: &Transport{
+@@ -978,7 +1019,7 @@
+ 				if err != nil {
+ 					return nil, err
+ 				}
+-				conn.SetDeadline(time.Now().Add(100 * time.Millisecond))
++				conn.SetDeadline(time.Now().Add(timeout))
+ 				if debug {
+ 					conn = NewLoggingConn("client", conn)
+ 				}
+@@ -988,6 +1029,7 @@
+ 		},
+ 	}
+ 
++	getFailed := false
+ 	nRuns := 5
+ 	if testing.Short() {
+ 		nRuns = 1
+@@ -998,6 +1040,14 @@
+ 		}
+ 		sres, err := client.Get(ts.URL + "/get")
+ 		if err != nil {
++			if !getFailed {
++				// Make the timeout longer, once.
++				getFailed = true
++				t.Logf("increasing timeout")
++				i--
++				timeout *= 10
++				continue
++			}
+ 			t.Errorf("Error issuing GET: %v", err)
+ 			break
+ 		}
+@@ -1014,6 +1064,7 @@
+ }
+ 
+ func TestIssue4191_InfiniteGetToPutTimeout(t *testing.T) {
++	defer afterTest(t)
+ 	const debug = false
+ 	mux := NewServeMux()
+ 	mux.HandleFunc("/get", func(w ResponseWriter, r *Request) {
+@@ -1024,6 +1075,7 @@
+ 		io.Copy(ioutil.Discard, r.Body)
+ 	})
+ 	ts := httptest.NewServer(mux)
++	timeout := 100 * time.Millisecond
+ 
+ 	client := &Client{
+ 		Transport: &Transport{
+@@ -1032,7 +1084,7 @@
+ 				if err != nil {
+ 					return nil, err
+ 				}
+-				conn.SetDeadline(time.Now().Add(100 * time.Millisecond))
++				conn.SetDeadline(time.Now().Add(timeout))
+ 				if debug {
+ 					conn = NewLoggingConn("client", conn)
+ 				}
+@@ -1042,6 +1094,7 @@
+ 		},
+ 	}
+ 
++	getFailed := false
+ 	nRuns := 5
+ 	if testing.Short() {
+ 		nRuns = 1
+@@ -1052,6 +1105,14 @@
+ 		}
+ 		sres, err := client.Get(ts.URL + "/get")
+ 		if err != nil {
++			if !getFailed {
++				// Make the timeout longer, once.
++				getFailed = true
++				t.Logf("increasing timeout")
++				i--
++				timeout *= 10
++				continue
++			}
+ 			t.Errorf("Error issuing GET: %v", err)
+ 			break
+ 		}
+@@ -1070,6 +1131,171 @@
+ 	ts.Close()
+ }
+ 
++func TestTransportResponseHeaderTimeout(t *testing.T) {
++	defer afterTest(t)
++	if testing.Short() {
++		t.Skip("skipping timeout test in -short mode")
++	}
++	mux := NewServeMux()
++	mux.HandleFunc("/fast", func(w ResponseWriter, r *Request) {})
++	mux.HandleFunc("/slow", func(w ResponseWriter, r *Request) {
++		time.Sleep(2 * time.Second)
++	})
++	ts := httptest.NewServer(mux)
++	defer ts.Close()
++
++	tr := &Transport{
++		ResponseHeaderTimeout: 500 * time.Millisecond,
++	}
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	tests := []struct {
++		path    string
++		want    int
++		wantErr string
++	}{
++		{path: "/fast", want: 200},
++		{path: "/slow", wantErr: "timeout awaiting response headers"},
++		{path: "/fast", want: 200},
++	}
++	for i, tt := range tests {
++		res, err := c.Get(ts.URL + tt.path)
++		if err != nil {
++			if strings.Contains(err.Error(), tt.wantErr) {
++				continue
++			}
++			t.Errorf("%d. unexpected error: %v", i, err)
++			continue
++		}
++		if tt.wantErr != "" {
++			t.Errorf("%d. no error. expected error: %v", i, tt.wantErr)
++			continue
++		}
++		if res.StatusCode != tt.want {
++			t.Errorf("%d for path %q status = %d; want %d", i, tt.path, res.StatusCode, tt.want)
++		}
++	}
++}
++
++func TestTransportCancelRequest(t *testing.T) {
++	defer afterTest(t)
++	if testing.Short() {
++		t.Skip("skipping test in -short mode")
++	}
++	unblockc := make(chan bool)
++	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
++		fmt.Fprintf(w, "Hello")
++		w.(Flusher).Flush() // send headers and some body
++		<-unblockc
++	}))
++	defer ts.Close()
++	defer close(unblockc)
++
++	tr := &Transport{}
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	req, _ := NewRequest("GET", ts.URL, nil)
++	res, err := c.Do(req)
++	if err != nil {
++		t.Fatal(err)
++	}
++	go func() {
++		time.Sleep(1 * time.Second)
++		tr.CancelRequest(req)
++	}()
++	t0 := time.Now()
++	body, err := ioutil.ReadAll(res.Body)
++	d := time.Since(t0)
++
++	if err == nil {
++		t.Error("expected an error reading the body")
++	}
++	if string(body) != "Hello" {
++		t.Errorf("Body = %q; want Hello", body)
++	}
++	if d < 500*time.Millisecond {
++		t.Errorf("expected ~1 second delay; got %v", d)
++	}
++	// Verify no outstanding requests after readLoop/writeLoop
++	// goroutines shut down.
++	for tries := 3; tries > 0; tries-- {
++		n := tr.NumPendingRequestsForTesting()
++		if n == 0 {
++			break
++		}
++		time.Sleep(100 * time.Millisecond)
++		if tries == 1 {
++			t.Errorf("pending requests = %d; want 0", n)
++		}
++	}
++}
++
++// golang.org/issue/3672 -- Client can't close HTTP stream
++// Calling Close on a Response.Body used to just read until EOF.
++// Now it actually closes the TCP connection.
++func TestTransportCloseResponseBody(t *testing.T) {
++	defer afterTest(t)
++	writeErr := make(chan error, 1)
++	msg := []byte("young\n")
++	ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
++		for {
++			_, err := w.Write(msg)
++			if err != nil {
++				writeErr <- err
++				return
++			}
++			w.(Flusher).Flush()
++		}
++	}))
++	defer ts.Close()
++
++	tr := &Transport{}
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	req, _ := NewRequest("GET", ts.URL, nil)
++	defer tr.CancelRequest(req)
++
++	res, err := c.Do(req)
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	const repeats = 3
++	buf := make([]byte, len(msg)*repeats)
++	want := bytes.Repeat(msg, repeats)
++
++	_, err = io.ReadFull(res.Body, buf)
++	if err != nil {
++		t.Fatal(err)
++	}
++	if !bytes.Equal(buf, want) {
++		t.Errorf("read %q; want %q", buf, want)
++	}
++	didClose := make(chan error, 1)
++	go func() {
++		didClose <- res.Body.Close()
++	}()
++	select {
++	case err := <-didClose:
++		if err != nil {
++			t.Errorf("Close = %v", err)
++		}
++	case <-time.After(10 * time.Second):
++		t.Fatal("too long waiting for close")
++	}
++	select {
++	case err := <-writeErr:
++		if err == nil {
++			t.Errorf("expected non-nil write error")
++		}
++	case <-time.After(10 * time.Second):
++		t.Fatal("too long waiting for write error")
++	}
++}
++
+ type fooProto struct{}
+ 
+ func (fooProto) RoundTrip(req *Request) (*Response, error) {
+@@ -1083,6 +1309,7 @@
+ }
+ 
+ func TestTransportAltProto(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &Transport{}
+ 	c := &Client{Transport: tr}
+ 	tr.RegisterProtocol("foo", fooProto{})
+@@ -1101,6 +1328,7 @@
+ }
+ 
+ func TestTransportNoHost(t *testing.T) {
++	defer afterTest(t)
+ 	tr := &Transport{}
+ 	_, err := tr.RoundTrip(&Request{
+ 		Header: make(Header),
+@@ -1114,6 +1342,172 @@
+ 	}
+ }
+ 
++func TestTransportSocketLateBinding(t *testing.T) {
++	defer afterTest(t)
++
++	mux := NewServeMux()
++	fooGate := make(chan bool, 1)
++	mux.HandleFunc("/foo", func(w ResponseWriter, r *Request) {
++		w.Header().Set("foo-ipport", r.RemoteAddr)
++		w.(Flusher).Flush()
++		<-fooGate
++	})
++	mux.HandleFunc("/bar", func(w ResponseWriter, r *Request) {
++		w.Header().Set("bar-ipport", r.RemoteAddr)
++	})
++	ts := httptest.NewServer(mux)
++	defer ts.Close()
++
++	dialGate := make(chan bool, 1)
++	tr := &Transport{
++		Dial: func(n, addr string) (net.Conn, error) {
++			<-dialGate
++			return net.Dial(n, addr)
++		},
++		DisableKeepAlives: false,
++	}
++	defer tr.CloseIdleConnections()
++	c := &Client{
++		Transport: tr,
++	}
++
++	dialGate <- true // only allow one dial
++	fooRes, err := c.Get(ts.URL + "/foo")
++	if err != nil {
++		t.Fatal(err)
++	}
++	fooAddr := fooRes.Header.Get("foo-ipport")
++	if fooAddr == "" {
++		t.Fatal("No addr on /foo request")
++	}
++	time.AfterFunc(200*time.Millisecond, func() {
++		// let the foo response finish so we can use its
++		// connection for /bar
++		fooGate <- true
++		io.Copy(ioutil.Discard, fooRes.Body)
++		fooRes.Body.Close()
++	})
++
++	barRes, err := c.Get(ts.URL + "/bar")
++	if err != nil {
++		t.Fatal(err)
++	}
++	barAddr := barRes.Header.Get("bar-ipport")
++	if barAddr != fooAddr {
++		t.Fatalf("/foo came from conn %q; /bar came from %q instead", fooAddr, barAddr)
++	}
++	barRes.Body.Close()
++	dialGate <- true
++}
++
++// Issue 2184
++func TestTransportReading100Continue(t *testing.T) {
++	defer afterTest(t)
++
++	const numReqs = 5
++	reqBody := func(n int) string { return fmt.Sprintf("request body %d", n) }
++	reqID := func(n int) string { return fmt.Sprintf("REQ-ID-%d", n) }
++
++	send100Response := func(w *io.PipeWriter, r *io.PipeReader) {
++		defer w.Close()
++		defer r.Close()
++		br := bufio.NewReader(r)
++		n := 0
++		for {
++			n++
++			req, err := ReadRequest(br)
++			if err == io.EOF {
++				return
++			}
++			if err != nil {
++				t.Error(err)
++				return
++			}
++			slurp, err := ioutil.ReadAll(req.Body)
++			if err != nil {
++				t.Errorf("Server request body slurp: %v", err)
++				return
++			}
++			id := req.Header.Get("Request-Id")
++			resCode := req.Header.Get("X-Want-Response-Code")
++			if resCode == "" {
++				resCode = "100 Continue"
++				if string(slurp) != reqBody(n) {
++					t.Errorf("Server got %q, %v; want %q", slurp, err, reqBody(n))
++				}
++			}
++			body := fmt.Sprintf("Response number %d", n)
++			v := []byte(strings.Replace(fmt.Sprintf(`HTTP/1.1 %s
++Date: Thu, 28 Feb 2013 17:55:41 GMT
++
++HTTP/1.1 200 OK
++Content-Type: text/html
++Echo-Request-Id: %s
++Content-Length: %d
++
++%s`, resCode, id, len(body), body), "\n", "\r\n", -1))
++			w.Write(v)
++			if id == reqID(numReqs) {
++				return
++			}
++		}
++
++	}
++
++	tr := &Transport{
++		Dial: func(n, addr string) (net.Conn, error) {
++			sr, sw := io.Pipe() // server read/write
++			cr, cw := io.Pipe() // client read/write
++			conn := &rwTestConn{
++				Reader: cr,
++				Writer: sw,
++				closeFunc: func() error {
++					sw.Close()
++					cw.Close()
++					return nil
++				},
++			}
++			go send100Response(cw, sr)
++			return conn, nil
++		},
++		DisableKeepAlives: false,
++	}
++	defer tr.CloseIdleConnections()
++	c := &Client{Transport: tr}
++
++	testResponse := func(req *Request, name string, wantCode int) {
++		res, err := c.Do(req)
++		if err != nil {
++			t.Fatalf("%s: Do: %v", name, err)
++		}
++		if res.StatusCode != wantCode {
++			t.Fatalf("%s: Response Statuscode=%d; want %d", name, res.StatusCode, wantCode)
++		}
++		if id, idBack := req.Header.Get("Request-Id"), res.Header.Get("Echo-Request-Id"); id != "" && id != idBack {
++			t.Errorf("%s: response id %q != request id %q", name, idBack, id)
++		}
++		_, err = ioutil.ReadAll(res.Body)
++		if err != nil {
++			t.Fatalf("%s: Slurp error: %v", name, err)
++		}
++	}
++
++	// Few 100 responses, making sure we're not off-by-one.
++	for i := 1; i <= numReqs; i++ {
++		req, _ := NewRequest("POST", "http://dummy.tld/", strings.NewReader(reqBody(i)))
++		req.Header.Set("Request-Id", reqID(i))
++		testResponse(req, fmt.Sprintf("100, %d/%d", i, numReqs), 200)
++	}
++
++	// And some other informational 1xx but non-100 responses, to test
++	// we return them but don't re-use the connection.
++	for i := 1; i <= numReqs; i++ {
++		req, _ := NewRequest("POST", "http://other.tld/", strings.NewReader(reqBody(i)))
++		req.Header.Set("X-Want-Response-Code", "123 Sesame Street")
++		testResponse(req, fmt.Sprintf("123, %d/%d", i, numReqs), 123)
++	}
++}
++
+ type proxyFromEnvTest struct {
+ 	req     string // URL to fetch; blank means "http://example.com"
+ 	env     string
+diff -Naur gcc-4.8.1.orig/libgo/go/net/http/z_last_test.go gcc-4.8.1/libgo/go/net/http/z_last_test.go
+--- gcc-4.8.1.orig/libgo/go/net/http/z_last_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/http/z_last_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,98 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package http_test
++
++import (
++	"net/http"
++	"runtime"
++	"sort"
++	"strings"
++	"testing"
++	"time"
++)
++
++func interestingGoroutines() (gs []string) {
++	buf := make([]byte, 2<<20)
++	buf = buf[:runtime.Stack(buf, true)]
++	for _, g := range strings.Split(string(buf), "\n\n") {
++		sl := strings.SplitN(g, "\n", 2)
++		if len(sl) != 2 {
++			continue
++		}
++		stack := strings.TrimSpace(sl[1])
++		if stack == "" ||
++			strings.Contains(stack, "created by net.newPollServer") ||
++			strings.Contains(stack, "created by net.startServer") ||
++			strings.Contains(stack, "created by testing.RunTests") ||
++			strings.Contains(stack, "closeWriteAndWait") ||
++			strings.Contains(stack, "testing.Main(") ||
++			// These only show up with GOTRACEBACK=2; Issue 5005 (comment 28)
++			strings.Contains(stack, "runtime.goexit") ||
++			strings.Contains(stack, "created by runtime.gc") ||
++			strings.Contains(stack, "runtime.MHeap_Scavenger") {
++			continue
++		}
++		gs = append(gs, stack)
++	}
++	sort.Strings(gs)
++	return
++}
++
++// Verify the other tests didn't leave any goroutines running.
++// This is in a file named z_last_test.go so it sorts at the end.
++func TestGoroutinesRunning(t *testing.T) {
++	if testing.Short() {
++		t.Skip("not counting goroutines for leakage in -short mode")
++	}
++	gs := interestingGoroutines()
++
++	n := 0
++	stackCount := make(map[string]int)
++	for _, g := range gs {
++		stackCount[g]++
++		n++
++	}
++
++	t.Logf("num goroutines = %d", n)
++	if n > 0 {
++		t.Error("Too many goroutines.")
++		for stack, count := range stackCount {
++			t.Logf("%d instances of:\n%s", count, stack)
++		}
++	}
++}
++
++func afterTest(t *testing.T) {
++	http.DefaultTransport.(*http.Transport).CloseIdleConnections()
++	if testing.Short() {
++		return
++	}
++	var bad string
++	badSubstring := map[string]string{
++		").readLoop(":                                  "a Transport",
++		").writeLoop(":                                 "a Transport",
++		"created by net/http/httptest.(*Server).Start": "an httptest.Server",
++		"timeoutHandler":                               "a TimeoutHandler",
++		"net.(*netFD).connect(":                        "a timing out dial",
++		").noteClientGone(":                            "a closenotifier sender",
++	}
++	var stacks string
++	for i := 0; i < 4; i++ {
++		bad = ""
++		stacks = strings.Join(interestingGoroutines(), "\n\n")
++		for substr, what := range badSubstring {
++			if strings.Contains(stacks, substr) {
++				bad = what
++			}
++		}
++		if bad == "" {
++			return
++		}
++		// Bad stuff found, but goroutines might just still be
++		// shutting down, so give it some time.
++		time.Sleep(250 * time.Millisecond)
++	}
++	t.Errorf("Test appears to have leaked %s:\n%s", bad, stacks)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_bsd.go gcc-4.8.1/libgo/go/net/interface_bsd.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_bsd.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_bsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd netbsd openbsd
+ 
+-// Network interface identification for BSD variants
+-
+ package net
+ 
+ import (
+@@ -22,57 +20,60 @@
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseRoutingMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route message", err)
+ 	}
++	return parseInterfaceTable(ifindex, msgs)
++}
+ 
++func parseInterfaceTable(ifindex int, msgs []syscall.RoutingMessage) ([]Interface, error) {
+ 	var ift []Interface
++loop:
+ 	for _, m := range msgs {
+-		switch v := m.(type) {
++		switch m := m.(type) {
+ 		case *syscall.InterfaceMessage:
+-			if ifindex == 0 || ifindex == int(v.Header.Index) {
+-				ifi, err := newLink(v)
++			if ifindex == 0 || ifindex == int(m.Header.Index) {
++				ifi, err := newLink(m)
+ 				if err != nil {
+ 					return nil, err
+ 				}
+-				ift = append(ift, ifi...)
++				ift = append(ift, *ifi)
++				if ifindex == int(m.Header.Index) {
++					break loop
++				}
+ 			}
+ 		}
+ 	}
+ 	return ift, nil
+ }
+ 
+-func newLink(m *syscall.InterfaceMessage) ([]Interface, error) {
++func newLink(m *syscall.InterfaceMessage) (*Interface, error) {
+ 	sas, err := syscall.ParseRoutingSockaddr(m)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route sockaddr", err)
+ 	}
+-
+-	var ift []Interface
+-	for _, s := range sas {
+-		switch v := s.(type) {
++	ifi := &Interface{Index: int(m.Header.Index), Flags: linkFlags(m.Header.Flags)}
++	for _, sa := range sas {
++		switch sa := sa.(type) {
+ 		case *syscall.SockaddrDatalink:
+ 			// NOTE: SockaddrDatalink.Data is minimum work area,
+ 			// can be larger.
+-			m.Data = m.Data[unsafe.Offsetof(v.Data):]
+-			ifi := Interface{Index: int(m.Header.Index), Flags: linkFlags(m.Header.Flags)}
++			m.Data = m.Data[unsafe.Offsetof(sa.Data):]
+ 			var name [syscall.IFNAMSIZ]byte
+-			for i := 0; i < int(v.Nlen); i++ {
++			for i := 0; i < int(sa.Nlen); i++ {
+ 				name[i] = byte(m.Data[i])
+ 			}
+-			ifi.Name = string(name[:v.Nlen])
++			ifi.Name = string(name[:sa.Nlen])
+ 			ifi.MTU = int(m.Header.Data.Mtu)
+-			addr := make([]byte, v.Alen)
+-			for i := 0; i < int(v.Alen); i++ {
+-				addr[i] = byte(m.Data[int(v.Nlen)+i])
++			addr := make([]byte, sa.Alen)
++			for i := 0; i < int(sa.Alen); i++ {
++				addr[i] = byte(m.Data[int(sa.Nlen)+i])
+ 			}
+-			ifi.HardwareAddr = addr[:v.Alen]
+-			ift = append(ift, ifi)
++			ifi.HardwareAddr = addr[:sa.Alen]
+ 		}
+ 	}
+-	return ift, nil
++	return ifi, nil
+ }
+ 
+ func linkFlags(rawFlags int32) Flags {
+@@ -95,26 +96,42 @@
+ 	return f
+ }
+ 
+-// If the ifindex is zero, interfaceAddrTable returns addresses
+-// for all network interfaces.  Otherwise it returns addresses
+-// for a specific interface.
+-func interfaceAddrTable(ifindex int) ([]Addr, error) {
+-	tab, err := syscall.RouteRIB(syscall.NET_RT_IFLIST, ifindex)
++// If the ifi is nil, interfaceAddrTable returns addresses for all
++// network interfaces.  Otherwise it returns addresses for a specific
++// interface.
++func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
++	index := 0
++	if ifi != nil {
++		index = ifi.Index
++	}
++	tab, err := syscall.RouteRIB(syscall.NET_RT_IFLIST, index)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseRoutingMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route message", err)
+ 	}
+-
++	var ift []Interface
++	if index == 0 {
++		ift, err = parseInterfaceTable(index, msgs)
++		if err != nil {
++			return nil, err
++		}
++	}
+ 	var ifat []Addr
+ 	for _, m := range msgs {
+-		switch v := m.(type) {
++		switch m := m.(type) {
+ 		case *syscall.InterfaceAddrMessage:
+-			if ifindex == 0 || ifindex == int(v.Header.Index) {
+-				ifa, err := newAddr(v)
++			if index == 0 || index == int(m.Header.Index) {
++				if index == 0 {
++					var err error
++					ifi, err = interfaceByIndex(ift, int(m.Header.Index))
++					if err != nil {
++						return nil, err
++					}
++				}
++				ifa, err := newAddr(ifi, m)
+ 				if err != nil {
+ 					return nil, err
+ 				}
+@@ -127,35 +144,33 @@
+ 	return ifat, nil
+ }
+ 
+-func newAddr(m *syscall.InterfaceAddrMessage) (Addr, error) {
++func newAddr(ifi *Interface, m *syscall.InterfaceAddrMessage) (Addr, error) {
+ 	sas, err := syscall.ParseRoutingSockaddr(m)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route sockaddr", err)
+ 	}
+-
+ 	ifa := &IPNet{}
+-	for i, s := range sas {
+-		switch v := s.(type) {
++	for i, sa := range sas {
++		switch sa := sa.(type) {
+ 		case *syscall.SockaddrInet4:
+ 			switch i {
+ 			case 0:
+-				ifa.Mask = IPv4Mask(v.Addr[0], v.Addr[1], v.Addr[2], v.Addr[3])
++				ifa.Mask = IPv4Mask(sa.Addr[0], sa.Addr[1], sa.Addr[2], sa.Addr[3])
+ 			case 1:
+-				ifa.IP = IPv4(v.Addr[0], v.Addr[1], v.Addr[2], v.Addr[3])
++				ifa.IP = IPv4(sa.Addr[0], sa.Addr[1], sa.Addr[2], sa.Addr[3])
+ 			}
+ 		case *syscall.SockaddrInet6:
+ 			switch i {
+ 			case 0:
+ 				ifa.Mask = make(IPMask, IPv6len)
+-				copy(ifa.Mask, v.Addr[:])
++				copy(ifa.Mask, sa.Addr[:])
+ 			case 1:
+ 				ifa.IP = make(IP, IPv6len)
+-				copy(ifa.IP, v.Addr[:])
++				copy(ifa.IP, sa.Addr[:])
+ 				// NOTE: KAME based IPv6 protcol stack usually embeds
+ 				// the interface index in the interface-local or link-
+ 				// local address as the kernel-internal form.
+ 				if ifa.IP.IsLinkLocalUnicast() {
+-					// remove embedded scope zone ID
+ 					ifa.IP[2], ifa.IP[3] = 0, 0
+ 				}
+ 			}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_darwin.go gcc-4.8.1/libgo/go/net/interface_darwin.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_darwin.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_darwin.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for Darwin
+-
+ package net
+ 
+ import (
+@@ -11,26 +9,23 @@
+ 	"syscall"
+ )
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
+-	tab, err := syscall.RouteRIB(syscall.NET_RT_IFLIST2, ifindex)
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
++	tab, err := syscall.RouteRIB(syscall.NET_RT_IFLIST2, ifi.Index)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseRoutingMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route message", err)
+ 	}
+-
+ 	var ifmat []Addr
+ 	for _, m := range msgs {
+-		switch v := m.(type) {
++		switch m := m.(type) {
+ 		case *syscall.InterfaceMulticastAddrMessage:
+-			if ifindex == 0 || ifindex == int(v.Header.Index) {
+-				ifma, err := newMulticastAddr(v)
++			if ifi.Index == int(m.Header.Index) {
++				ifma, err := newMulticastAddr(ifi, m)
+ 				if err != nil {
+ 					return nil, err
+ 				}
+@@ -41,27 +36,24 @@
+ 	return ifmat, nil
+ }
+ 
+-func newMulticastAddr(m *syscall.InterfaceMulticastAddrMessage) ([]Addr, error) {
++func newMulticastAddr(ifi *Interface, m *syscall.InterfaceMulticastAddrMessage) ([]Addr, error) {
+ 	sas, err := syscall.ParseRoutingSockaddr(m)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route sockaddr", err)
+ 	}
+-
+ 	var ifmat []Addr
+-	for _, s := range sas {
+-		switch v := s.(type) {
++	for _, sa := range sas {
++		switch sa := sa.(type) {
+ 		case *syscall.SockaddrInet4:
+-			ifma := &IPAddr{IP: IPv4(v.Addr[0], v.Addr[1], v.Addr[2], v.Addr[3])}
++			ifma := &IPAddr{IP: IPv4(sa.Addr[0], sa.Addr[1], sa.Addr[2], sa.Addr[3])}
+ 			ifmat = append(ifmat, ifma.toAddr())
+ 		case *syscall.SockaddrInet6:
+ 			ifma := &IPAddr{IP: make(IP, IPv6len)}
+-			copy(ifma.IP, v.Addr[:])
+-			// NOTE: KAME based IPv6 protcol stack usually embeds
++			copy(ifma.IP, sa.Addr[:])
++			// NOTE: KAME based IPv6 protocol stack usually embeds
+ 			// the interface index in the interface-local or link-
+ 			// local address as the kernel-internal form.
+-			if ifma.IP.IsInterfaceLocalMulticast() ||
+-				ifma.IP.IsLinkLocalMulticast() {
+-				// remove embedded scope zone ID
++			if ifma.IP.IsInterfaceLocalMulticast() || ifma.IP.IsLinkLocalMulticast() {
+ 				ifma.IP[2], ifma.IP[3] = 0, 0
+ 			}
+ 			ifmat = append(ifmat, ifma.toAddr())
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_freebsd.go gcc-4.8.1/libgo/go/net/interface_freebsd.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_freebsd.go	2012-02-09 02:19:58.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_freebsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for FreeBSD
+-
+ package net
+ 
+ import (
+@@ -11,26 +9,23 @@
+ 	"syscall"
+ )
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
+-	tab, err := syscall.RouteRIB(syscall.NET_RT_IFMALIST, ifindex)
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
++	tab, err := syscall.RouteRIB(syscall.NET_RT_IFMALIST, ifi.Index)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseRoutingMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route message", err)
+ 	}
+-
+ 	var ifmat []Addr
+ 	for _, m := range msgs {
+-		switch v := m.(type) {
++		switch m := m.(type) {
+ 		case *syscall.InterfaceMulticastAddrMessage:
+-			if ifindex == 0 || ifindex == int(v.Header.Index) {
+-				ifma, err := newMulticastAddr(v)
++			if ifi.Index == int(m.Header.Index) {
++				ifma, err := newMulticastAddr(ifi, m)
+ 				if err != nil {
+ 					return nil, err
+ 				}
+@@ -41,27 +36,24 @@
+ 	return ifmat, nil
+ }
+ 
+-func newMulticastAddr(m *syscall.InterfaceMulticastAddrMessage) ([]Addr, error) {
++func newMulticastAddr(ifi *Interface, m *syscall.InterfaceMulticastAddrMessage) ([]Addr, error) {
+ 	sas, err := syscall.ParseRoutingSockaddr(m)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("route sockaddr", err)
+ 	}
+-
+ 	var ifmat []Addr
+-	for _, s := range sas {
+-		switch v := s.(type) {
++	for _, sa := range sas {
++		switch sa := sa.(type) {
+ 		case *syscall.SockaddrInet4:
+-			ifma := &IPAddr{IP: IPv4(v.Addr[0], v.Addr[1], v.Addr[2], v.Addr[3])}
++			ifma := &IPAddr{IP: IPv4(sa.Addr[0], sa.Addr[1], sa.Addr[2], sa.Addr[3])}
+ 			ifmat = append(ifmat, ifma.toAddr())
+ 		case *syscall.SockaddrInet6:
+ 			ifma := &IPAddr{IP: make(IP, IPv6len)}
+-			copy(ifma.IP, v.Addr[:])
+-			// NOTE: KAME based IPv6 protcol stack usually embeds
++			copy(ifma.IP, sa.Addr[:])
++			// NOTE: KAME based IPv6 protocol stack usually embeds
+ 			// the interface index in the interface-local or link-
+ 			// local address as the kernel-internal form.
+-			if ifma.IP.IsInterfaceLocalMulticast() ||
+-				ifma.IP.IsLinkLocalMulticast() {
+-				// remove embedded scope zone ID
++			if ifma.IP.IsInterfaceLocalMulticast() || ifma.IP.IsLinkLocalMulticast() {
+ 				ifma.IP[2], ifma.IP[3] = 0, 0
+ 			}
+ 			ifmat = append(ifmat, ifma.toAddr())
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface.go gcc-4.8.1/libgo/go/net/interface.go
+--- gcc-4.8.1.orig/libgo/go/net/interface.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/interface.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification
+-
+ package net
+ 
+ import "errors"
+@@ -66,7 +64,7 @@
+ 	if ifi == nil {
+ 		return nil, errInvalidInterface
+ 	}
+-	return interfaceAddrTable(ifi.Index)
++	return interfaceAddrTable(ifi)
+ }
+ 
+ // MulticastAddrs returns multicast, joined group addresses for
+@@ -75,7 +73,7 @@
+ 	if ifi == nil {
+ 		return nil, errInvalidInterface
+ 	}
+-	return interfaceMulticastAddrTable(ifi.Index)
++	return interfaceMulticastAddrTable(ifi)
+ }
+ 
+ // Interfaces returns a list of the system's network interfaces.
+@@ -86,7 +84,7 @@
+ // InterfaceAddrs returns a list of the system's network interface
+ // addresses.
+ func InterfaceAddrs() ([]Addr, error) {
+-	return interfaceAddrTable(0)
++	return interfaceAddrTable(nil)
+ }
+ 
+ // InterfaceByIndex returns the interface specified by index.
+@@ -98,8 +96,14 @@
+ 	if err != nil {
+ 		return nil, err
+ 	}
++	return interfaceByIndex(ift, index)
++}
++
++func interfaceByIndex(ift []Interface, index int) (*Interface, error) {
+ 	for _, ifi := range ift {
+-		return &ifi, nil
++		if index == ifi.Index {
++			return &ifi, nil
++		}
+ 	}
+ 	return nil, errNoSuchInterface
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_linux.go gcc-4.8.1/libgo/go/net/interface_linux.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_linux.go	2012-04-20 15:11:28.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/interface_linux.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for Linux
+-
+ package net
+ 
+ import (
+@@ -20,17 +18,16 @@
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("netlink rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseNetlinkMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("netlink message", err)
+ 	}
+-
+ 	var ift []Interface
++loop:
+ 	for _, m := range msgs {
+ 		switch m.Header.Type {
+ 		case syscall.NLMSG_DONE:
+-			goto done
++			break loop
+ 		case syscall.RTM_NEWLINK:
+ 			ifim := (*syscall.IfInfomsg)(unsafe.Pointer(&m.Data[0]))
+ 			if ifindex == 0 || ifindex == int(ifim.Index) {
+@@ -38,17 +35,18 @@
+ 				if err != nil {
+ 					return nil, os.NewSyscallError("netlink routeattr", err)
+ 				}
+-				ifi := newLink(ifim, attrs)
+-				ift = append(ift, ifi)
++				ift = append(ift, *newLink(ifim, attrs))
++				if ifindex == int(ifim.Index) {
++					break loop
++				}
+ 			}
+ 		}
+ 	}
+-done:
+ 	return ift, nil
+ }
+ 
+-func newLink(ifim *syscall.IfInfomsg, attrs []syscall.NetlinkRouteAttr) Interface {
+-	ifi := Interface{Index: int(ifim.Index), Flags: linkFlags(ifim.Flags)}
++func newLink(ifim *syscall.IfInfomsg, attrs []syscall.NetlinkRouteAttr) *Interface {
++	ifi := &Interface{Index: int(ifim.Index), Flags: linkFlags(ifim.Flags)}
+ 	for _, a := range attrs {
+ 		switch a.Attr.Type {
+ 		case syscall.IFLA_ADDRESS:
+@@ -90,81 +88,84 @@
+ 	return f
+ }
+ 
+-// If the ifindex is zero, interfaceAddrTable returns addresses
+-// for all network interfaces.  Otherwise it returns addresses
+-// for a specific interface.
+-func interfaceAddrTable(ifindex int) ([]Addr, error) {
++// If the ifi is nil, interfaceAddrTable returns addresses for all
++// network interfaces.  Otherwise it returns addresses for a specific
++// interface.
++func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
+ 	tab, err := syscall.NetlinkRIB(syscall.RTM_GETADDR, syscall.AF_UNSPEC)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("netlink rib", err)
+ 	}
+-
+ 	msgs, err := syscall.ParseNetlinkMessage(tab)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("netlink message", err)
+ 	}
+-
+-	ifat, err := addrTable(msgs, ifindex)
++	var ift []Interface
++	if ifi == nil {
++		var err error
++		ift, err = interfaceTable(0)
++		if err != nil {
++			return nil, err
++		}
++	}
++	ifat, err := addrTable(ift, ifi, msgs)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+ 	return ifat, nil
+ }
+ 
+-func addrTable(msgs []syscall.NetlinkMessage, ifindex int) ([]Addr, error) {
++func addrTable(ift []Interface, ifi *Interface, msgs []syscall.NetlinkMessage) ([]Addr, error) {
+ 	var ifat []Addr
++loop:
+ 	for _, m := range msgs {
+ 		switch m.Header.Type {
+ 		case syscall.NLMSG_DONE:
+-			goto done
++			break loop
+ 		case syscall.RTM_NEWADDR:
+ 			ifam := (*syscall.IfAddrmsg)(unsafe.Pointer(&m.Data[0]))
+-			if ifindex == 0 || ifindex == int(ifam.Index) {
++			if len(ift) != 0 || ifi.Index == int(ifam.Index) {
++				if len(ift) != 0 {
++					var err error
++					ifi, err = interfaceByIndex(ift, int(ifam.Index))
++					if err != nil {
++						return nil, err
++					}
++				}
+ 				attrs, err := syscall.ParseNetlinkRouteAttr(&m)
+ 				if err != nil {
+ 					return nil, os.NewSyscallError("netlink routeattr", err)
+ 				}
+-				ifat = append(ifat, newAddr(attrs, int(ifam.Family), int(ifam.Prefixlen)))
++				ifa := newAddr(ifi, ifam, attrs)
++				if ifa != nil {
++					ifat = append(ifat, ifa)
++				}
+ 			}
+ 		}
+ 	}
+-done:
+ 	return ifat, nil
+ }
+ 
+-func newAddr(attrs []syscall.NetlinkRouteAttr, family, pfxlen int) Addr {
+-	ifa := &IPNet{}
++func newAddr(ifi *Interface, ifam *syscall.IfAddrmsg, attrs []syscall.NetlinkRouteAttr) Addr {
+ 	for _, a := range attrs {
+-		switch a.Attr.Type {
+-		case syscall.IFA_ADDRESS:
+-			switch family {
++		if ifi.Flags&FlagPointToPoint != 0 && a.Attr.Type == syscall.IFA_LOCAL ||
++			ifi.Flags&FlagPointToPoint == 0 && a.Attr.Type == syscall.IFA_ADDRESS {
++			switch ifam.Family {
+ 			case syscall.AF_INET:
+-				ifa.IP = IPv4(a.Value[0], a.Value[1], a.Value[2], a.Value[3])
+-				ifa.Mask = CIDRMask(pfxlen, 8*IPv4len)
++				return &IPNet{IP: IPv4(a.Value[0], a.Value[1], a.Value[2], a.Value[3]), Mask: CIDRMask(int(ifam.Prefixlen), 8*IPv4len)}
+ 			case syscall.AF_INET6:
+-				ifa.IP = make(IP, IPv6len)
++				ifa := &IPNet{IP: make(IP, IPv6len), Mask: CIDRMask(int(ifam.Prefixlen), 8*IPv6len)}
+ 				copy(ifa.IP, a.Value[:])
+-				ifa.Mask = CIDRMask(pfxlen, 8*IPv6len)
++				return ifa
+ 			}
+ 		}
+ 	}
+-	return ifa
++	return nil
+ }
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
+-	var (
+-		err error
+-		ifi *Interface
+-	)
+-	if ifindex > 0 {
+-		ifi, err = InterfaceByIndex(ifindex)
+-		if err != nil {
+-			return nil, err
+-		}
+-	}
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
+ 	ifmat4 := parseProcNetIGMP("/proc/net/igmp", ifi)
+ 	ifmat6 := parseProcNetIGMP6("/proc/net/igmp6", ifi)
+ 	return append(ifmat4, ifmat6...), nil
+@@ -176,7 +177,6 @@
+ 		return nil
+ 	}
+ 	defer fd.close()
+-
+ 	var (
+ 		ifmat []Addr
+ 		name  string
+@@ -214,7 +214,6 @@
+ 		return nil
+ 	}
+ 	defer fd.close()
+-
+ 	var ifmat []Addr
+ 	b := make([]byte, IPv6len)
+ 	for l, ok := fd.readLine(); ok; l, ok = fd.readLine() {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_netbsd.go gcc-4.8.1/libgo/go/net/interface_netbsd.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_netbsd.go	2012-01-12 23:11:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_netbsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,13 +2,11 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for NetBSD
+-
+ package net
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
++	// TODO(mikio): Implement this like other platforms.
+ 	return nil, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_openbsd.go gcc-4.8.1/libgo/go/net/interface_openbsd.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_openbsd.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_openbsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,13 +2,11 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for OpenBSD
+-
+ package net
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
++	// TODO(mikio): Implement this like other platforms.
+ 	return nil, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_stub.go gcc-4.8.1/libgo/go/net/interface_stub.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_stub.go	2012-03-30 17:09:55.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/interface_stub.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build plan9
+ 
+-// Network interface identification
+-
+ package net
+ 
+ // If the ifindex is zero, interfaceTable returns mappings of all
+@@ -15,16 +13,15 @@
+ 	return nil, nil
+ }
+ 
+-// If the ifindex is zero, interfaceAddrTable returns addresses
+-// for all network interfaces.  Otherwise it returns addresses
+-// for a specific interface.
+-func interfaceAddrTable(ifindex int) ([]Addr, error) {
++// If the ifi is nil, interfaceAddrTable returns addresses for all
++// network interfaces.  Otherwise it returns addresses for a specific
++// interface.
++func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
+ 	return nil, nil
+ }
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
+ 	return nil, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_test.go gcc-4.8.1/libgo/go/net/interface_test.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/interface_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,18 +5,50 @@
+ package net
+ 
+ import (
+-	"bytes"
++	"reflect"
+ 	"testing"
+ )
+ 
+-func sameInterface(i, j *Interface) bool {
+-	if i == nil || j == nil {
+-		return false
++// loopbackInterface returns an available logical network interface
++// for loopback tests.  It returns nil if no suitable interface is
++// found.
++func loopbackInterface() *Interface {
++	ift, err := Interfaces()
++	if err != nil {
++		return nil
++	}
++	for _, ifi := range ift {
++		if ifi.Flags&FlagLoopback != 0 && ifi.Flags&FlagUp != 0 {
++			return &ifi
++		}
++	}
++	return nil
++}
++
++// ipv6LinkLocalUnicastAddr returns an IPv6 link-local unicast address
++// on the given network interface for tests. It returns "" if no
++// suitable address is found.
++func ipv6LinkLocalUnicastAddr(ifi *Interface) string {
++	if ifi == nil {
++		return ""
++	}
++	ifat, err := ifi.Addrs()
++	if err != nil {
++		return ""
+ 	}
+-	if i.Index == j.Index && i.Name == j.Name && bytes.Equal(i.HardwareAddr, j.HardwareAddr) {
+-		return true
++	for _, ifa := range ifat {
++		switch ifa := ifa.(type) {
++		case *IPAddr:
++			if ifa.IP.To4() == nil && ifa.IP.IsLinkLocalUnicast() {
++				return ifa.IP.String()
++			}
++		case *IPNet:
++			if ifa.IP.To4() == nil && ifa.IP.IsLinkLocalUnicast() {
++				return ifa.IP.String()
++			}
++		}
+ 	}
+-	return false
++	return ""
+ }
+ 
+ func TestInterfaces(t *testing.T) {
+@@ -29,17 +61,17 @@
+ 	for _, ifi := range ift {
+ 		ifxi, err := InterfaceByIndex(ifi.Index)
+ 		if err != nil {
+-			t.Fatalf("InterfaceByIndex(%q) failed: %v", ifi.Index, err)
++			t.Fatalf("InterfaceByIndex(%v) failed: %v", ifi.Index, err)
+ 		}
+-		if !sameInterface(ifxi, &ifi) {
+-			t.Fatalf("InterfaceByIndex(%q) = %v, want %v", ifi.Index, *ifxi, ifi)
++		if !reflect.DeepEqual(ifxi, &ifi) {
++			t.Fatalf("InterfaceByIndex(%v) = %v, want %v", ifi.Index, ifxi, ifi)
+ 		}
+ 		ifxn, err := InterfaceByName(ifi.Name)
+ 		if err != nil {
+ 			t.Fatalf("InterfaceByName(%q) failed: %v", ifi.Name, err)
+ 		}
+-		if !sameInterface(ifxn, &ifi) {
+-			t.Fatalf("InterfaceByName(%q) = %v, want %v", ifi.Name, *ifxn, ifi)
++		if !reflect.DeepEqual(ifxn, &ifi) {
++			t.Fatalf("InterfaceByName(%q) = %v, want %v", ifi.Name, ifxn, ifi)
+ 		}
+ 		t.Logf("%q: flags %q, ifindex %v, mtu %v", ifi.Name, ifi.Flags.String(), ifi.Index, ifi.MTU)
+ 		t.Logf("\thardware address %q", ifi.HardwareAddr.String())
+@@ -75,9 +107,9 @@
+ 
+ func testAddrs(t *testing.T, ifat []Addr) {
+ 	for _, ifa := range ifat {
+-		switch v := ifa.(type) {
++		switch ifa := ifa.(type) {
+ 		case *IPAddr, *IPNet:
+-			if v == nil {
++			if ifa == nil {
+ 				t.Errorf("\tunexpected value: %v", ifa)
+ 			} else {
+ 				t.Logf("\tinterface address %q", ifa.String())
+@@ -90,9 +122,9 @@
+ 
+ func testMulticastAddrs(t *testing.T, ifmat []Addr) {
+ 	for _, ifma := range ifmat {
+-		switch v := ifma.(type) {
++		switch ifma := ifma.(type) {
+ 		case *IPAddr:
+-			if v == nil {
++			if ifma == nil {
+ 				t.Errorf("\tunexpected value: %v", ifma)
+ 			} else {
+ 				t.Logf("\tjoined group address %q", ifma.String())
+@@ -102,3 +134,67 @@
+ 		}
+ 	}
+ }
++
++func BenchmarkInterfaces(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		if _, err := Interfaces(); err != nil {
++			b.Fatalf("Interfaces failed: %v", err)
++		}
++	}
++}
++
++func BenchmarkInterfaceByIndex(b *testing.B) {
++	ifi := loopbackInterface()
++	if ifi == nil {
++		b.Skip("loopback interface not found")
++	}
++	for i := 0; i < b.N; i++ {
++		if _, err := InterfaceByIndex(ifi.Index); err != nil {
++			b.Fatalf("InterfaceByIndex failed: %v", err)
++		}
++	}
++}
++
++func BenchmarkInterfaceByName(b *testing.B) {
++	ifi := loopbackInterface()
++	if ifi == nil {
++		b.Skip("loopback interface not found")
++	}
++	for i := 0; i < b.N; i++ {
++		if _, err := InterfaceByName(ifi.Name); err != nil {
++			b.Fatalf("InterfaceByName failed: %v", err)
++		}
++	}
++}
++
++func BenchmarkInterfaceAddrs(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		if _, err := InterfaceAddrs(); err != nil {
++			b.Fatalf("InterfaceAddrs failed: %v", err)
++		}
++	}
++}
++
++func BenchmarkInterfacesAndAddrs(b *testing.B) {
++	ifi := loopbackInterface()
++	if ifi == nil {
++		b.Skip("loopback interface not found")
++	}
++	for i := 0; i < b.N; i++ {
++		if _, err := ifi.Addrs(); err != nil {
++			b.Fatalf("Interface.Addrs failed: %v", err)
++		}
++	}
++}
++
++func BenchmarkInterfacesAndMulticastAddrs(b *testing.B) {
++	ifi := loopbackInterface()
++	if ifi == nil {
++		b.Skip("loopback interface not found")
++	}
++	for i := 0; i < b.N; i++ {
++		if _, err := ifi.MulticastAddrs(); err != nil {
++			b.Fatalf("Interface.MulticastAddrs failed: %v", err)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/interface_windows.go gcc-4.8.1/libgo/go/net/interface_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/interface_windows.go	2012-03-30 17:09:55.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/interface_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Network interface identification for Windows
+-
+ package net
+ 
+ import (
+@@ -25,6 +23,9 @@
+ 	b := make([]byte, 1000)
+ 	l := uint32(len(b))
+ 	a := (*syscall.IpAdapterInfo)(unsafe.Pointer(&b[0]))
++	// TODO(mikio): GetAdaptersInfo returns IP_ADAPTER_INFO that
++	// contains IPv4 address list only. We should use another API
++	// for fetching IPv6 stuff from the kernel.
+ 	err := syscall.GetAdaptersInfo(a, &l)
+ 	if err == syscall.ERROR_BUFFER_OVERFLOW {
+ 		b = make([]byte, l)
+@@ -38,7 +39,7 @@
+ }
+ 
+ func getInterfaceList() ([]syscall.InterfaceInfo, error) {
+-	s, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_DGRAM, syscall.IPPROTO_UDP)
++	s, err := sysSocket(syscall.AF_INET, syscall.SOCK_DGRAM, syscall.IPPROTO_UDP)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("Socket", err)
+ 	}
+@@ -126,10 +127,10 @@
+ 	return ift, nil
+ }
+ 
+-// If the ifindex is zero, interfaceAddrTable returns addresses
+-// for all network interfaces.  Otherwise it returns addresses
+-// for a specific interface.
+-func interfaceAddrTable(ifindex int) ([]Addr, error) {
++// If the ifi is nil, interfaceAddrTable returns addresses for all
++// network interfaces.  Otherwise it returns addresses for a specific
++// interface.
++func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
+ 	ai, err := getAdapterList()
+ 	if err != nil {
+ 		return nil, err
+@@ -138,11 +139,10 @@
+ 	var ifat []Addr
+ 	for ; ai != nil; ai = ai.Next {
+ 		index := ai.Index
+-		if ifindex == 0 || ifindex == int(index) {
++		if ifi == nil || ifi.Index == int(index) {
+ 			ipl := &ai.IpAddressList
+ 			for ; ipl != nil; ipl = ipl.Next {
+-				ifa := IPAddr{}
+-				ifa.IP = parseIPv4(bytePtrToString(&ipl.IpAddress.String[0]))
++				ifa := IPAddr{IP: parseIPv4(bytePtrToString(&ipl.IpAddress.String[0]))}
+ 				ifat = append(ifat, ifa.toAddr())
+ 			}
+ 		}
+@@ -150,9 +150,9 @@
+ 	return ifat, nil
+ }
+ 
+-// If the ifindex is zero, interfaceMulticastAddrTable returns
+-// addresses for all network interfaces.  Otherwise it returns
+-// addresses for a specific interface.
+-func interfaceMulticastAddrTable(ifindex int) ([]Addr, error) {
++// interfaceMulticastAddrTable returns addresses for a specific
++// interface.
++func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
++	// TODO(mikio): Implement this like other platforms.
+ 	return nil, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/ip.go gcc-4.8.1/libgo/go/net/ip.go
+--- gcc-4.8.1.orig/libgo/go/net/ip.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/ip.go	2013-07-16 01:55:04.520470000 -0500
+@@ -36,7 +36,6 @@
+ type IPNet struct {
+ 	IP   IP     // network number
+ 	Mask IPMask // network mask
+-	Zone string // IPv6 scoped addressing zone
+ }
+ 
+ // IPv4 returns the IP address (in 16-byte form) of the
+@@ -223,7 +222,6 @@
+ 	default:
+ 		return classCMask
+ 	}
+-	return nil // not reached
+ }
+ 
+ func allFF(b []byte) bool {
+@@ -433,6 +431,9 @@
+ 	return true
+ }
+ 
++// Network returns the address's network name, "ip+net".
++func (n *IPNet) Network() string { return "ip+net" }
++
+ // String returns the CIDR notation of n like "192.168.100.1/24"
+ // or "2001:DB8::/48" as defined in RFC 4632 and RFC 4291.
+ // If the mask is not in the canonical form, it returns the
+@@ -451,9 +452,6 @@
+ 	return nn.String() + "/" + itod(uint(l))
+ }
+ 
+-// Network returns the address's network name, "ip+net".
+-func (n *IPNet) Network() string { return "ip+net" }
+-
+ // Parse IPv4 address (d.d.d.d).
+ func parseIPv4(s string) IP {
+ 	var p [IPv4len]byte
+@@ -485,26 +483,26 @@
+ 	return IPv4(p[0], p[1], p[2], p[3])
+ }
+ 
+-// Parse IPv6 address.  Many forms.
+-// The basic form is a sequence of eight colon-separated
+-// 16-bit hex numbers separated by colons,
+-// as in 0123:4567:89ab:cdef:0123:4567:89ab:cdef.
+-// Two exceptions:
+-//	* A run of zeros can be replaced with "::".
+-//	* The last 32 bits can be in IPv4 form.
+-// Thus, ::ffff:1.2.3.4 is the IPv4 address 1.2.3.4.
+-func parseIPv6(s string) IP {
+-	p := make(IP, IPv6len)
++// parseIPv6 parses s as a literal IPv6 address described in RFC 4291
++// and RFC 5952.  It can also parse a literal scoped IPv6 address with
++// zone identifier which is described in RFC 4007 when zoneAllowed is
++// true.
++func parseIPv6(s string, zoneAllowed bool) (ip IP, zone string) {
++	ip = make(IP, IPv6len)
+ 	ellipsis := -1 // position of ellipsis in p
+ 	i := 0         // index in string s
+ 
++	if zoneAllowed {
++		s, zone = splitHostZone(s)
++	}
++
+ 	// Might have leading ellipsis
+ 	if len(s) >= 2 && s[0] == ':' && s[1] == ':' {
+ 		ellipsis = 0
+ 		i = 2
+ 		// Might be only ellipsis
+ 		if i == len(s) {
+-			return p
++			return ip, zone
+ 		}
+ 	}
+ 
+@@ -514,35 +512,35 @@
+ 		// Hex number.
+ 		n, i1, ok := xtoi(s, i)
+ 		if !ok || n > 0xFFFF {
+-			return nil
++			return nil, zone
+ 		}
+ 
+ 		// If followed by dot, might be in trailing IPv4.
+ 		if i1 < len(s) && s[i1] == '.' {
+ 			if ellipsis < 0 && j != IPv6len-IPv4len {
+ 				// Not the right place.
+-				return nil
++				return nil, zone
+ 			}
+ 			if j+IPv4len > IPv6len {
+ 				// Not enough room.
+-				return nil
++				return nil, zone
+ 			}
+-			p4 := parseIPv4(s[i:])
+-			if p4 == nil {
+-				return nil
++			ip4 := parseIPv4(s[i:])
++			if ip4 == nil {
++				return nil, zone
+ 			}
+-			p[j] = p4[12]
+-			p[j+1] = p4[13]
+-			p[j+2] = p4[14]
+-			p[j+3] = p4[15]
++			ip[j] = ip4[12]
++			ip[j+1] = ip4[13]
++			ip[j+2] = ip4[14]
++			ip[j+3] = ip4[15]
+ 			i = len(s)
+ 			j += IPv4len
+ 			break
+ 		}
+ 
+ 		// Save this 16-bit chunk.
+-		p[j] = byte(n >> 8)
+-		p[j+1] = byte(n)
++		ip[j] = byte(n >> 8)
++		ip[j+1] = byte(n)
+ 		j += 2
+ 
+ 		// Stop at end of string.
+@@ -553,14 +551,14 @@
+ 
+ 		// Otherwise must be followed by colon and more.
+ 		if s[i] != ':' || i+1 == len(s) {
+-			return nil
++			return nil, zone
+ 		}
+ 		i++
+ 
+ 		// Look for ellipsis.
+ 		if s[i] == ':' {
+ 			if ellipsis >= 0 { // already have one
+-				return nil
++				return nil, zone
+ 			}
+ 			ellipsis = j
+ 			if i++; i == len(s) { // can be at end
+@@ -571,23 +569,23 @@
+ 
+ 	// Must have used entire string.
+ 	if i != len(s) {
+-		return nil
++		return nil, zone
+ 	}
+ 
+ 	// If didn't parse enough, expand ellipsis.
+ 	if j < IPv6len {
+ 		if ellipsis < 0 {
+-			return nil
++			return nil, zone
+ 		}
+ 		n := IPv6len - j
+ 		for k := j - 1; k >= ellipsis; k-- {
+-			p[k+n] = p[k]
++			ip[k+n] = ip[k]
+ 		}
+ 		for k := ellipsis + n - 1; k >= ellipsis; k-- {
+-			p[k] = 0
++			ip[k] = 0
+ 		}
+ 	}
+-	return p
++	return ip, zone
+ }
+ 
+ // A ParseError represents a malformed text string and the type of string that was expected.
+@@ -600,26 +598,17 @@
+ 	return "invalid " + e.Type + ": " + e.Text
+ }
+ 
+-func parseIP(s string) IP {
+-	if p := parseIPv4(s); p != nil {
+-		return p
+-	}
+-	if p := parseIPv6(s); p != nil {
+-		return p
+-	}
+-	return nil
+-}
+-
+ // ParseIP parses s as an IP address, returning the result.
+ // The string s can be in dotted decimal ("74.125.19.99")
+ // or IPv6 ("2001:4860:0:2001::68") form.
+ // If s is not a valid textual representation of an IP address,
+ // ParseIP returns nil.
+ func ParseIP(s string) IP {
+-	if p := parseIPv4(s); p != nil {
+-		return p
++	if ip := parseIPv4(s); ip != nil {
++		return ip
+ 	}
+-	return parseIPv6(s)
++	ip, _ := parseIPv6(s, false)
++	return ip
+ }
+ 
+ // ParseCIDR parses s as a CIDR notation IP address and mask,
+@@ -634,15 +623,15 @@
+ 	if i < 0 {
+ 		return nil, nil, &ParseError{"CIDR address", s}
+ 	}
+-	ipstr, maskstr := s[:i], s[i+1:]
++	addr, mask := s[:i], s[i+1:]
+ 	iplen := IPv4len
+-	ip := parseIPv4(ipstr)
++	ip := parseIPv4(addr)
+ 	if ip == nil {
+ 		iplen = IPv6len
+-		ip = parseIPv6(ipstr)
++		ip, _ = parseIPv6(addr, false)
+ 	}
+-	n, i, ok := dtoi(maskstr, 0)
+-	if ip == nil || !ok || i != len(maskstr) || n < 0 || n > 8*iplen {
++	n, i, ok := dtoi(mask, 0)
++	if ip == nil || !ok || i != len(mask) || n < 0 || n > 8*iplen {
+ 		return nil, nil, &ParseError{"CIDR address", s}
+ 	}
+ 	m := CIDRMask(n, 8*iplen)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/iprawsock.go gcc-4.8.1/libgo/go/net/iprawsock.go
+--- gcc-4.8.1.orig/libgo/go/net/iprawsock.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/iprawsock.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Raw IP sockets
+-
+ package net
+ 
+ // IPAddr represents the address of an IP end point.
+@@ -19,17 +17,20 @@
+ 	if a == nil {
+ 		return "<nil>"
+ 	}
++	if a.Zone != "" {
++		return a.IP.String() + "%" + a.Zone
++	}
+ 	return a.IP.String()
+ }
+ 
+-// ResolveIPAddr parses addr as an IP address and resolves domain
+-// names to numeric addresses on the network net, which must be
+-// "ip", "ip4" or "ip6".
++// ResolveIPAddr parses addr as an IP address of the form "host" or
++// "ipv6-host%zone" and resolves the domain name on the network net,
++// which must be "ip", "ip4" or "ip6".
+ func ResolveIPAddr(net, addr string) (*IPAddr, error) {
+ 	if net == "" { // a hint wildcard for Go 1.0 undocumented behavior
+ 		net = "ip"
+ 	}
+-	afnet, _, err := parseDialNetwork(net)
++	afnet, _, err := parseNetwork(net)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/iprawsock_plan9.go gcc-4.8.1/libgo/go/net/iprawsock_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/iprawsock_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/iprawsock_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Raw IP sockets for Plan 9
+-
+ package net
+ 
+ import (
+@@ -34,7 +32,7 @@
+ }
+ 
+ // ReadMsgIP reads a packet from c, copying the payload into b and the
+-// associdated out-of-band data into oob.  It returns the number of
++// associated out-of-band data into oob.  It returns the number of
+ // bytes copied into b, the number of bytes copied into oob, the flags
+ // that were set on the packet and the source address of the packet.
+ func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error) {
+@@ -76,7 +74,7 @@
+ }
+ 
+ // ListenIP listens for incoming IP packets addressed to the local
+-// address laddr.  The returned connection c's ReadFrom and WriteTo
++// address laddr.  The returned connection's ReadFrom and WriteTo
+ // methods can be used to receive and send IP packets with per-packet
+ // addressing.
+ func ListenIP(netProto string, laddr *IPAddr) (*IPConn, error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/iprawsock_posix.go gcc-4.8.1/libgo/go/net/iprawsock_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/iprawsock_posix.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/iprawsock_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd linux netbsd openbsd windows
+ 
+-// Raw IP sockets for POSIX
+-
+ package net
+ 
+ import (
+@@ -51,8 +49,8 @@
+ 	return a
+ }
+ 
+-// IPConn is the implementation of the Conn and PacketConn
+-// interfaces for IP network connections.
++// IPConn is the implementation of the Conn and PacketConn interfaces
++// for IP network connections.
+ type IPConn struct {
+ 	conn
+ }
+@@ -98,7 +96,7 @@
+ }
+ 
+ // ReadMsgIP reads a packet from c, copying the payload into b and the
+-// associdated out-of-band data into oob.  It returns the number of
++// associated out-of-band data into oob.  It returns the number of
+ // bytes copied into b, the number of bytes copied into oob, the flags
+ // that were set on the packet and the source address of the packet.
+ func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error) {
+@@ -116,12 +114,13 @@
+ 	return
+ }
+ 
+-// WriteToIP writes an IP packet to addr via c, copying the payload from b.
++// WriteToIP writes an IP packet to addr via c, copying the payload
++// from b.
+ //
+-// WriteToIP can be made to time out and return
+-// an error with Timeout() == true after a fixed time limit;
+-// see SetDeadline and SetWriteDeadline.
+-// On packet-oriented connections, write timeouts are rare.
++// WriteToIP can be made to time out and return an error with
++// Timeout() == true after a fixed time limit; see SetDeadline and
++// SetWriteDeadline.  On packet-oriented connections, write timeouts
++// are rare.
+ func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error) {
+ 	if !c.ok() {
+ 		return 0, syscall.EINVAL
+@@ -159,14 +158,15 @@
+ 	return c.fd.WriteMsg(b, oob, sa)
+ }
+ 
+-// DialIP connects to the remote address raddr on the network protocol netProto,
+-// which must be "ip", "ip4", or "ip6" followed by a colon and a protocol number or name.
++// DialIP connects to the remote address raddr on the network protocol
++// netProto, which must be "ip", "ip4", or "ip6" followed by a colon
++// and a protocol number or name.
+ func DialIP(netProto string, laddr, raddr *IPAddr) (*IPConn, error) {
+ 	return dialIP(netProto, laddr, raddr, noDeadline)
+ }
+ 
+ func dialIP(netProto string, laddr, raddr *IPAddr, deadline time.Time) (*IPConn, error) {
+-	net, proto, err := parseDialNetwork(netProto)
++	net, proto, err := parseNetwork(netProto)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+@@ -185,12 +185,12 @@
+ 	return newIPConn(fd), nil
+ }
+ 
+-// ListenIP listens for incoming IP packets addressed to the
+-// local address laddr.  The returned connection c's ReadFrom
+-// and WriteTo methods can be used to receive and send IP
+-// packets with per-packet addressing.
++// ListenIP listens for incoming IP packets addressed to the local
++// address laddr.  The returned connection's ReadFrom and WriteTo
++// methods can be used to receive and send IP packets with per-packet
++// addressing.
+ func ListenIP(netProto string, laddr *IPAddr) (*IPConn, error) {
+-	net, proto, err := parseDialNetwork(netProto)
++	net, proto, err := parseNetwork(netProto)
+ 	if err != nil {
+ 		return nil, err
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/ipraw_test.go gcc-4.8.1/libgo/go/net/ipraw_test.go
+--- gcc-4.8.1.orig/libgo/go/net/ipraw_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/ipraw_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,32 +2,36 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// +build !plan9
+-
+ package net
+ 
+ import (
+ 	"bytes"
++	"errors"
++	"fmt"
+ 	"os"
+ 	"reflect"
+-	"syscall"
+ 	"testing"
+ 	"time"
+ )
+ 
+-var resolveIPAddrTests = []struct {
++type resolveIPAddrTest struct {
+ 	net     string
+ 	litAddr string
+ 	addr    *IPAddr
+ 	err     error
+-}{
++}
++
++var resolveIPAddrTests = []resolveIPAddrTest{
+ 	{"ip", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
+ 	{"ip4", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
+ 	{"ip4:icmp", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil},
+ 
+ 	{"ip", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
+ 	{"ip6", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
+-	{"ip6:icmp", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
++	{"ip6:ipv6-icmp", "::1", &IPAddr{IP: ParseIP("::1")}, nil},
++
++	{"ip", "::1%en0", &IPAddr{IP: ParseIP("::1"), Zone: "en0"}, nil},
++	{"ip6", "::1%911", &IPAddr{IP: ParseIP("::1"), Zone: "911"}, nil},
+ 
+ 	{"", "127.0.0.1", &IPAddr{IP: IPv4(127, 0, 0, 1)}, nil}, // Go 1.0 behavior
+ 	{"", "::1", &IPAddr{IP: ParseIP("::1")}, nil},           // Go 1.0 behavior
+@@ -37,208 +41,290 @@
+ 	{"tcp", "1.2.3.4:123", nil, UnknownNetworkError("tcp")},
+ }
+ 
++func init() {
++	if ifi := loopbackInterface(); ifi != nil {
++		index := fmt.Sprintf("%v", ifi.Index)
++		resolveIPAddrTests = append(resolveIPAddrTests, []resolveIPAddrTest{
++			{"ip6", "fe80::1%" + ifi.Name, &IPAddr{IP: ParseIP("fe80::1"), Zone: zoneToString(ifi.Index)}, nil},
++			{"ip6", "fe80::1%" + index, &IPAddr{IP: ParseIP("fe80::1"), Zone: index}, nil},
++		}...)
++	}
++}
++
+ func TestResolveIPAddr(t *testing.T) {
+ 	for _, tt := range resolveIPAddrTests {
+ 		addr, err := ResolveIPAddr(tt.net, tt.litAddr)
+ 		if err != tt.err {
+-			t.Fatalf("ResolveIPAddr(%v, %v) failed: %v", tt.net, tt.litAddr, err)
+-		}
+-		if !reflect.DeepEqual(addr, tt.addr) {
++			condFatalf(t, "ResolveIPAddr(%v, %v) failed: %v", tt.net, tt.litAddr, err)
++		} else if !reflect.DeepEqual(addr, tt.addr) {
+ 			t.Fatalf("got %#v; expected %#v", addr, tt.addr)
+ 		}
+ 	}
+ }
+ 
+-var icmpTests = []struct {
++var icmpEchoTests = []struct {
+ 	net   string
+ 	laddr string
+ 	raddr string
+-	ipv6  bool // test with underlying AF_INET6 socket
+ }{
+-	{"ip4:icmp", "", "127.0.0.1", false},
+-	{"ip6:ipv6-icmp", "", "::1", true},
++	{"ip4:icmp", "0.0.0.0", "127.0.0.1"},
++	{"ip6:ipv6-icmp", "::", "::1"},
+ }
+ 
+-func TestICMP(t *testing.T) {
++func TestConnICMPEcho(t *testing.T) {
+ 	if os.Getuid() != 0 {
+ 		t.Skip("skipping test; must be root")
+ 	}
+ 
+-	seqnum := 61455
+-	for _, tt := range icmpTests {
+-		if tt.ipv6 && !supportsIPv6 {
++	for i, tt := range icmpEchoTests {
++		net, _, err := parseNetwork(tt.net)
++		if err != nil {
++			t.Fatalf("parseNetwork failed: %v", err)
++		}
++		if net == "ip6" && !supportsIPv6 {
+ 			continue
+ 		}
+-		id := os.Getpid() & 0xffff
+-		seqnum++
+-		echo := newICMPEchoRequest(tt.net, id, seqnum, 128, []byte("Go Go Gadget Ping!!!"))
+-		exchangeICMPEcho(t, tt.net, tt.laddr, tt.raddr, echo)
+-	}
+-}
+-
+-func exchangeICMPEcho(t *testing.T, net, laddr, raddr string, echo []byte) {
+-	c, err := ListenPacket(net, laddr)
+-	if err != nil {
+-		t.Errorf("ListenPacket(%q, %q) failed: %v", net, laddr, err)
+-		return
+-	}
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	defer c.Close()
+ 
+-	ra, err := ResolveIPAddr(net, raddr)
+-	if err != nil {
+-		t.Errorf("ResolveIPAddr(%q, %q) failed: %v", net, raddr, err)
+-		return
+-	}
+-
+-	waitForReady := make(chan bool)
+-	go icmpEchoTransponder(t, net, raddr, waitForReady)
+-	<-waitForReady
+-
+-	_, err = c.WriteTo(echo, ra)
+-	if err != nil {
+-		t.Errorf("WriteTo failed: %v", err)
+-		return
+-	}
++		c, err := Dial(tt.net, tt.raddr)
++		if err != nil {
++			t.Fatalf("Dial failed: %v", err)
++		}
++		c.SetDeadline(time.Now().Add(100 * time.Millisecond))
++		defer c.Close()
+ 
+-	reply := make([]byte, 256)
+-	for {
+-		_, _, err := c.ReadFrom(reply)
++		typ := icmpv4EchoRequest
++		if net == "ip6" {
++			typ = icmpv6EchoRequest
++		}
++		xid, xseq := os.Getpid()&0xffff, i+1
++		b, err := (&icmpMessage{
++			Type: typ, Code: 0,
++			Body: &icmpEcho{
++				ID: xid, Seq: xseq,
++				Data: bytes.Repeat([]byte("Go Go Gadget Ping!!!"), 3),
++			},
++		}).Marshal()
+ 		if err != nil {
+-			t.Errorf("ReadFrom failed: %v", err)
+-			return
++			t.Fatalf("icmpMessage.Marshal failed: %v", err)
+ 		}
+-		switch c.(*IPConn).fd.family {
+-		case syscall.AF_INET:
+-			if reply[0] != ICMP4_ECHO_REPLY {
+-				continue
++		if _, err := c.Write(b); err != nil {
++			t.Fatalf("Conn.Write failed: %v", err)
++		}
++		var m *icmpMessage
++		for {
++			if _, err := c.Read(b); err != nil {
++				t.Fatalf("Conn.Read failed: %v", err)
++			}
++			if net == "ip4" {
++				b = ipv4Payload(b)
++			}
++			if m, err = parseICMPMessage(b); err != nil {
++				t.Fatalf("parseICMPMessage failed: %v", err)
+ 			}
+-		case syscall.AF_INET6:
+-			if reply[0] != ICMP6_ECHO_REPLY {
++			switch m.Type {
++			case icmpv4EchoRequest, icmpv6EchoRequest:
+ 				continue
+ 			}
++			break
+ 		}
+-		xid, xseqnum := parseICMPEchoReply(echo)
+-		rid, rseqnum := parseICMPEchoReply(reply)
+-		if rid != xid || rseqnum != xseqnum {
+-			t.Errorf("ID = %v, Seqnum = %v, want ID = %v, Seqnum = %v", rid, rseqnum, xid, xseqnum)
+-			return
++		switch p := m.Body.(type) {
++		case *icmpEcho:
++			if p.ID != xid || p.Seq != xseq {
++				t.Fatalf("got id=%v, seqnum=%v; expected id=%v, seqnum=%v", p.ID, p.Seq, xid, xseq)
++			}
++		default:
++			t.Fatalf("got type=%v, code=%v; expected type=%v, code=%v", m.Type, m.Code, typ, 0)
+ 		}
+-		break
+ 	}
+ }
+ 
+-func icmpEchoTransponder(t *testing.T, net, raddr string, waitForReady chan bool) {
+-	c, err := Dial(net, raddr)
+-	if err != nil {
+-		waitForReady <- true
+-		t.Errorf("Dial(%q, %q) failed: %v", net, raddr, err)
+-		return
++func TestPacketConnICMPEcho(t *testing.T) {
++	if os.Getuid() != 0 {
++		t.Skip("skipping test; must be root")
+ 	}
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	defer c.Close()
+-	waitForReady <- true
+ 
+-	echo := make([]byte, 256)
+-	var nr int
+-	for {
+-		nr, err = c.Read(echo)
++	for i, tt := range icmpEchoTests {
++		net, _, err := parseNetwork(tt.net)
+ 		if err != nil {
+-			t.Errorf("Read failed: %v", err)
+-			return
++			t.Fatalf("parseNetwork failed: %v", err)
+ 		}
+-		switch c.(*IPConn).fd.family {
+-		case syscall.AF_INET:
+-			if echo[0] != ICMP4_ECHO_REQUEST {
+-				continue
++		if net == "ip6" && !supportsIPv6 {
++			continue
++		}
++
++		c, err := ListenPacket(tt.net, tt.laddr)
++		if err != nil {
++			t.Fatalf("ListenPacket failed: %v", err)
++		}
++		c.SetDeadline(time.Now().Add(100 * time.Millisecond))
++		defer c.Close()
++
++		ra, err := ResolveIPAddr(tt.net, tt.raddr)
++		if err != nil {
++			t.Fatalf("ResolveIPAddr failed: %v", err)
++		}
++		typ := icmpv4EchoRequest
++		if net == "ip6" {
++			typ = icmpv6EchoRequest
++		}
++		xid, xseq := os.Getpid()&0xffff, i+1
++		b, err := (&icmpMessage{
++			Type: typ, Code: 0,
++			Body: &icmpEcho{
++				ID: xid, Seq: xseq,
++				Data: bytes.Repeat([]byte("Go Go Gadget Ping!!!"), 3),
++			},
++		}).Marshal()
++		if err != nil {
++			t.Fatalf("icmpMessage.Marshal failed: %v", err)
++		}
++		if _, err := c.WriteTo(b, ra); err != nil {
++			t.Fatalf("PacketConn.WriteTo failed: %v", err)
++		}
++		var m *icmpMessage
++		for {
++			if _, _, err := c.ReadFrom(b); err != nil {
++				t.Fatalf("PacketConn.ReadFrom failed: %v", err)
++			}
++			// TODO: fix issue 3944
++			//if net == "ip4" {
++			//	b = ipv4Payload(b)
++			//}
++			if m, err = parseICMPMessage(b); err != nil {
++				t.Fatalf("parseICMPMessage failed: %v", err)
+ 			}
+-		case syscall.AF_INET6:
+-			if echo[0] != ICMP6_ECHO_REQUEST {
++			switch m.Type {
++			case icmpv4EchoRequest, icmpv6EchoRequest:
+ 				continue
+ 			}
++			break
++		}
++		switch p := m.Body.(type) {
++		case *icmpEcho:
++			if p.ID != xid || p.Seq != xseq {
++				t.Fatalf("got id=%v, seqnum=%v; expected id=%v, seqnum=%v", p.ID, p.Seq, xid, xseq)
++			}
++		default:
++			t.Fatalf("got type=%v, code=%v; expected type=%v, code=%v", m.Type, m.Code, typ, 0)
+ 		}
+-		break
+-	}
+-
+-	switch c.(*IPConn).fd.family {
+-	case syscall.AF_INET:
+-		echo[0] = ICMP4_ECHO_REPLY
+-	case syscall.AF_INET6:
+-		echo[0] = ICMP6_ECHO_REPLY
+ 	}
++}
+ 
+-	_, err = c.Write(echo[:nr])
+-	if err != nil {
+-		t.Errorf("Write failed: %v", err)
+-		return
++func ipv4Payload(b []byte) []byte {
++	if len(b) < 20 {
++		return b
+ 	}
++	hdrlen := int(b[0]&0x0f) << 2
++	return b[hdrlen:]
+ }
+ 
+ const (
+-	ICMP4_ECHO_REQUEST = 8
+-	ICMP4_ECHO_REPLY   = 0
+-	ICMP6_ECHO_REQUEST = 128
+-	ICMP6_ECHO_REPLY   = 129
++	icmpv4EchoRequest = 8
++	icmpv4EchoReply   = 0
++	icmpv6EchoRequest = 128
++	icmpv6EchoReply   = 129
+ )
+ 
+-func newICMPEchoRequest(net string, id, seqnum, msglen int, filler []byte) []byte {
+-	afnet, _, _ := parseDialNetwork(net)
+-	switch afnet {
+-	case "ip4":
+-		return newICMPv4EchoRequest(id, seqnum, msglen, filler)
+-	case "ip6":
+-		return newICMPv6EchoRequest(id, seqnum, msglen, filler)
+-	}
+-	return nil
+-}
+-
+-func newICMPv4EchoRequest(id, seqnum, msglen int, filler []byte) []byte {
+-	b := newICMPInfoMessage(id, seqnum, msglen, filler)
+-	b[0] = ICMP4_ECHO_REQUEST
+-
+-	// calculate ICMP checksum
+-	cklen := len(b)
++// icmpMessage represents an ICMP message.
++type icmpMessage struct {
++	Type     int             // type
++	Code     int             // code
++	Checksum int             // checksum
++	Body     icmpMessageBody // body
++}
++
++// icmpMessageBody represents an ICMP message body.
++type icmpMessageBody interface {
++	Len() int
++	Marshal() ([]byte, error)
++}
++
++// Marshal returns the binary enconding of the ICMP echo request or
++// reply message m.
++func (m *icmpMessage) Marshal() ([]byte, error) {
++	b := []byte{byte(m.Type), byte(m.Code), 0, 0}
++	if m.Body != nil && m.Body.Len() != 0 {
++		mb, err := m.Body.Marshal()
++		if err != nil {
++			return nil, err
++		}
++		b = append(b, mb...)
++	}
++	switch m.Type {
++	case icmpv6EchoRequest, icmpv6EchoReply:
++		return b, nil
++	}
++	csumcv := len(b) - 1 // checksum coverage
+ 	s := uint32(0)
+-	for i := 0; i < cklen-1; i += 2 {
++	for i := 0; i < csumcv; i += 2 {
+ 		s += uint32(b[i+1])<<8 | uint32(b[i])
+ 	}
+-	if cklen&1 == 1 {
+-		s += uint32(b[cklen-1])
++	if csumcv&1 == 0 {
++		s += uint32(b[csumcv])
++	}
++	s = s>>16 + s&0xffff
++	s = s + s>>16
++	// Place checksum back in header; using ^= avoids the
++	// assumption the checksum bytes are zero.
++	b[2] ^= byte(^s & 0xff)
++	b[3] ^= byte(^s >> 8)
++	return b, nil
++}
++
++// parseICMPMessage parses b as an ICMP message.
++func parseICMPMessage(b []byte) (*icmpMessage, error) {
++	msglen := len(b)
++	if msglen < 4 {
++		return nil, errors.New("message too short")
++	}
++	m := &icmpMessage{Type: int(b[0]), Code: int(b[1]), Checksum: int(b[2])<<8 | int(b[3])}
++	if msglen > 4 {
++		var err error
++		switch m.Type {
++		case icmpv4EchoRequest, icmpv4EchoReply, icmpv6EchoRequest, icmpv6EchoReply:
++			m.Body, err = parseICMPEcho(b[4:])
++			if err != nil {
++				return nil, err
++			}
++		}
++	}
++	return m, nil
++}
++
++// imcpEcho represenets an ICMP echo request or reply message body.
++type icmpEcho struct {
++	ID   int    // identifier
++	Seq  int    // sequence number
++	Data []byte // data
++}
++
++func (p *icmpEcho) Len() int {
++	if p == nil {
++		return 0
++	}
++	return 4 + len(p.Data)
++}
++
++// Marshal returns the binary enconding of the ICMP echo request or
++// reply message body p.
++func (p *icmpEcho) Marshal() ([]byte, error) {
++	b := make([]byte, 4+len(p.Data))
++	b[0], b[1] = byte(p.ID>>8), byte(p.ID&0xff)
++	b[2], b[3] = byte(p.Seq>>8), byte(p.Seq&0xff)
++	copy(b[4:], p.Data)
++	return b, nil
++}
++
++// parseICMPEcho parses b as an ICMP echo request or reply message
++// body.
++func parseICMPEcho(b []byte) (*icmpEcho, error) {
++	bodylen := len(b)
++	p := &icmpEcho{ID: int(b[0])<<8 | int(b[1]), Seq: int(b[2])<<8 | int(b[3])}
++	if bodylen > 4 {
++		p.Data = make([]byte, bodylen-4)
++		copy(p.Data, b[4:])
+ 	}
+-	s = (s >> 16) + (s & 0xffff)
+-	s = s + (s >> 16)
+-	// place checksum back in header; using ^= avoids the
+-	// assumption the checksum bytes are zero
+-	b[2] ^= uint8(^s & 0xff)
+-	b[3] ^= uint8(^s >> 8)
+-
+-	return b
+-}
+-
+-func newICMPv6EchoRequest(id, seqnum, msglen int, filler []byte) []byte {
+-	b := newICMPInfoMessage(id, seqnum, msglen, filler)
+-	b[0] = ICMP6_ECHO_REQUEST
+-	return b
+-}
+-
+-func newICMPInfoMessage(id, seqnum, msglen int, filler []byte) []byte {
+-	b := make([]byte, msglen)
+-	copy(b[8:], bytes.Repeat(filler, (msglen-8)/len(filler)+1))
+-	b[0] = 0                    // type
+-	b[1] = 0                    // code
+-	b[2] = 0                    // checksum
+-	b[3] = 0                    // checksum
+-	b[4] = uint8(id >> 8)       // identifier
+-	b[5] = uint8(id & 0xff)     // identifier
+-	b[6] = uint8(seqnum >> 8)   // sequence number
+-	b[7] = uint8(seqnum & 0xff) // sequence number
+-	return b
+-}
+-
+-func parseICMPEchoReply(b []byte) (id, seqnum int) {
+-	id = int(b[4])<<8 | int(b[5])
+-	seqnum = int(b[6])<<8 | int(b[7])
+-	return
++	return p, nil
+ }
+ 
+ var ipConnLocalNameTests = []struct {
+@@ -258,14 +344,27 @@
+ 	for _, tt := range ipConnLocalNameTests {
+ 		c, err := ListenIP(tt.net, tt.laddr)
+ 		if err != nil {
+-			t.Errorf("ListenIP failed: %v", err)
+-			return
++			t.Fatalf("ListenIP failed: %v", err)
+ 		}
+ 		defer c.Close()
+-		la := c.LocalAddr()
+-		if la == nil {
+-			t.Error("IPConn.LocalAddr failed")
+-			return
++		if la := c.LocalAddr(); la == nil {
++			t.Fatal("IPConn.LocalAddr failed")
+ 		}
+ 	}
+ }
++
++func TestIPConnRemoteName(t *testing.T) {
++	if os.Getuid() != 0 {
++		t.Skip("skipping test; must be root")
++	}
++
++	raddr := &IPAddr{IP: IPv4(127, 0, 0, 10).To4()}
++	c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr)
++	if err != nil {
++		t.Fatalf("DialIP failed: %v", err)
++	}
++	defer c.Close()
++	if !reflect.DeepEqual(raddr, c.RemoteAddr()) {
++		t.Fatalf("got %#v, expected %#v", c.RemoteAddr(), raddr)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/ipsock.go gcc-4.8.1/libgo/go/net/ipsock.go
+--- gcc-4.8.1.orig/libgo/go/net/ipsock.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/ipsock.go	2013-07-16 01:55:04.520470000 -0500
+@@ -68,40 +68,94 @@
+ func (e InvalidAddrError) Timeout() bool   { return false }
+ func (e InvalidAddrError) Temporary() bool { return false }
+ 
+-// SplitHostPort splits a network address of the form
+-// "host:port" or "[host]:port" into host and port.
+-// The latter form must be used when host contains a colon.
++// SplitHostPort splits a network address of the form "host:port",
++// "[host]:port" or "[ipv6-host%zone]:port" into host or
++// ipv6-host%zone and port.  A literal address or host name for IPv6
++// must be enclosed in square brackets, as in "[::1]:80",
++// "[ipv6-host]:http" or "[ipv6-host%zone]:80".
+ func SplitHostPort(hostport string) (host, port string, err error) {
+-	host, port, _, err = splitHostPort(hostport)
+-	return
+-}
++	j, k := 0, 0
+ 
+-func splitHostPort(hostport string) (host, port, zone string, err error) {
+ 	// The port starts after the last colon.
+ 	i := last(hostport, ':')
+ 	if i < 0 {
+-		err = &AddrError{"missing port in address", hostport}
+-		return
++		goto missingPort
+ 	}
+-	host, port = hostport[:i], hostport[i+1:]
+-	// Can put brackets around host ...
+-	if len(host) > 0 && host[0] == '[' && host[len(host)-1] == ']' {
+-		host = host[1 : len(host)-1]
++
++	if hostport[0] == '[' {
++		// Expect the first ']' just before the last ':'.
++		end := byteIndex(hostport, ']')
++		if end < 0 {
++			err = &AddrError{"missing ']' in address", hostport}
++			return
++		}
++		switch end + 1 {
++		case len(hostport):
++			// There can't be a ':' behind the ']' now.
++			goto missingPort
++		case i:
++			// The expected result.
++		default:
++			// Either ']' isn't followed by a colon, or it is
++			// followed by a colon that is not the last one.
++			if hostport[end+1] == ':' {
++				goto tooManyColons
++			}
++			goto missingPort
++		}
++		host = hostport[1:end]
++		j, k = 1, end+1 // there can't be a '[' resp. ']' before these positions
+ 	} else {
+-		// ... but if there are no brackets, no colons.
++		host = hostport[:i]
+ 		if byteIndex(host, ':') >= 0 {
+-			err = &AddrError{"too many colons in address", hostport}
+-			return
++			goto tooManyColons
+ 		}
++		if byteIndex(host, '%') >= 0 {
++			goto missingBrackets
++		}
++	}
++	if byteIndex(hostport[j:], '[') >= 0 {
++		err = &AddrError{"unexpected '[' in address", hostport}
++		return
++	}
++	if byteIndex(hostport[k:], ']') >= 0 {
++		err = &AddrError{"unexpected ']' in address", hostport}
++		return
++	}
++
++	port = hostport[i+1:]
++	return
++
++missingPort:
++	err = &AddrError{"missing port in address", hostport}
++	return
++
++tooManyColons:
++	err = &AddrError{"too many colons in address", hostport}
++	return
++
++missingBrackets:
++	err = &AddrError{"missing brackets in address", hostport}
++	return
++}
++
++func splitHostZone(s string) (host, zone string) {
++	// The IPv6 scoped addressing zone identifer starts after the
++	// last percent sign.
++	if i := last(s, '%'); i > 0 {
++		host, zone = s[:i], s[i+1:]
++	} else {
++		host = s
+ 	}
+ 	return
+ }
+ 
+-// JoinHostPort combines host and port into a network address
+-// of the form "host:port" or, if host contains a colon, "[host]:port".
++// JoinHostPort combines host and port into a network address of the
++// form "host:port" or, if host contains a colon or a percent sign,
++// "[host]:port".
+ func JoinHostPort(host, port string) string {
+-	// If host has colons, have to bracket it.
+-	if byteIndex(host, ':') >= 0 {
++	// If host has colons or a percent sign, have to bracket it.
++	if byteIndex(host, ':') >= 0 || byteIndex(host, '%') >= 0 {
+ 		return "[" + host + "]:" + port
+ 	}
+ 	return host + ":" + port
+@@ -116,7 +170,7 @@
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6", "udp", "udp4", "udp6":
+ 		if addr != "" {
+-			if host, port, zone, err = splitHostPort(addr); err != nil {
++			if host, port, err = SplitHostPort(addr); err != nil {
+ 				return nil, err
+ 			}
+ 			if portnum, err = parsePort(net, port); err != nil {
+@@ -145,21 +199,25 @@
+ 		return inetaddr(net, nil, portnum, zone), nil
+ 	}
+ 	// Try as an IP address.
+-	if ip := ParseIP(host); ip != nil {
++	if ip := parseIPv4(host); ip != nil {
++		return inetaddr(net, ip, portnum, zone), nil
++	}
++	if ip, zone := parseIPv6(host, true); ip != nil {
+ 		return inetaddr(net, ip, portnum, zone), nil
+ 	}
++	// Try as a domain name.
++	host, zone = splitHostZone(host)
++	addrs, err := lookupHostDeadline(host, deadline)
++	if err != nil {
++		return nil, err
++	}
+ 	var filter func(IP) IP
+ 	if net != "" && net[len(net)-1] == '4' {
+ 		filter = ipv4only
+ 	}
+-	if net != "" && net[len(net)-1] == '6' {
++	if net != "" && net[len(net)-1] == '6' || zone != "" {
+ 		filter = ipv6only
+ 	}
+-	// Try as a DNS name.
+-	addrs, err := lookupHostDeadline(host, deadline)
+-	if err != nil {
+-		return nil, err
+-	}
+ 	ip := firstFavoriteAddr(filter, addrs)
+ 	if ip == nil {
+ 		// should not happen
+diff -Naur gcc-4.8.1.orig/libgo/go/net/ipsock_plan9.go gcc-4.8.1/libgo/go/net/ipsock_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/ipsock_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/ipsock_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ import (
+ 	"errors"
+ 	"os"
++	"syscall"
+ )
+ 
+ // /sys/include/ape/sys/socket.h:/SOMAXCONN
+@@ -104,72 +105,89 @@
+ 	return f, dest, proto, string(buf[:n]), nil
+ }
+ 
+-func dialPlan9(net string, laddr, raddr Addr) (*netFD, error) {
++func netErr(e error) {
++	oe, ok := e.(*OpError)
++	if !ok {
++		return
++	}
++	if pe, ok := oe.Err.(*os.PathError); ok {
++		if _, ok = pe.Err.(syscall.ErrorString); ok {
++			oe.Err = pe.Err
++		}
++	}
++}
++
++func dialPlan9(net string, laddr, raddr Addr) (fd *netFD, err error) {
++	defer func() { netErr(err) }()
+ 	f, dest, proto, name, err := startPlan9(net, raddr)
+ 	if err != nil {
+-		return nil, err
++		return nil, &OpError{"dial", net, raddr, err}
+ 	}
+ 	_, err = f.WriteString("connect " + dest)
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"dial", f.Name(), raddr, err}
+ 	}
+-	laddr, err = readPlan9Addr(proto, "/net/"+proto+"/"+name+"/local")
++	data, err := os.OpenFile("/net/"+proto+"/"+name+"/data", os.O_RDWR, 0)
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"dial", net, raddr, err}
+ 	}
+-	raddr, err = readPlan9Addr(proto, "/net/"+proto+"/"+name+"/remote")
++	laddr, err = readPlan9Addr(proto, "/net/"+proto+"/"+name+"/local")
+ 	if err != nil {
++		data.Close()
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"dial", proto, raddr, err}
+ 	}
+-	return newFD(proto, name, f, laddr, raddr), nil
++	return newFD(proto, name, f, data, laddr, raddr), nil
+ }
+ 
+-func listenPlan9(net string, laddr Addr) (*netFD, error) {
++func listenPlan9(net string, laddr Addr) (fd *netFD, err error) {
++	defer func() { netErr(err) }()
+ 	f, dest, proto, name, err := startPlan9(net, laddr)
+ 	if err != nil {
+-		return nil, err
++		return nil, &OpError{"listen", net, laddr, err}
+ 	}
+ 	_, err = f.WriteString("announce " + dest)
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"announce", proto, laddr, err}
+ 	}
+ 	laddr, err = readPlan9Addr(proto, "/net/"+proto+"/"+name+"/local")
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{Op: "listen", Net: net, Err: err}
+ 	}
+-	return &netFD{proto: proto, name: name, dir: "/net/" + proto + "/" + name, ctl: f, laddr: laddr}, nil
++	return newFD(proto, name, f, nil, laddr, nil), nil
+ }
+ 
+ func (l *netFD) netFD() *netFD {
+-	return newFD(l.proto, l.name, l.ctl, l.laddr, nil)
++	return newFD(l.proto, l.name, l.ctl, l.data, l.laddr, l.raddr)
+ }
+ 
+-func (l *netFD) acceptPlan9() (*netFD, error) {
++func (l *netFD) acceptPlan9() (fd *netFD, err error) {
++	defer func() { netErr(err) }()
+ 	f, err := os.Open(l.dir + "/listen")
+ 	if err != nil {
+-		return nil, err
++		return nil, &OpError{"accept", l.dir + "/listen", l.laddr, err}
+ 	}
+ 	var buf [16]byte
+ 	n, err := f.Read(buf[:])
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"accept", l.dir + "/listen", l.laddr, err}
+ 	}
+ 	name := string(buf[:n])
+-	laddr, err := readPlan9Addr(l.proto, l.dir+"/local")
++	data, err := os.OpenFile("/net/"+l.proto+"/"+name+"/data", os.O_RDWR, 0)
+ 	if err != nil {
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"accept", l.proto, l.laddr, err}
+ 	}
+-	raddr, err := readPlan9Addr(l.proto, l.dir+"/remote")
++	raddr, err := readPlan9Addr(l.proto, "/net/"+l.proto+"/"+name+"/remote")
+ 	if err != nil {
++		data.Close()
+ 		f.Close()
+-		return nil, err
++		return nil, &OpError{"accept", l.proto, l.laddr, err}
+ 	}
+-	return newFD(l.proto, name, f, laddr, raddr), nil
++	return newFD(l.proto, name, f, data, l.laddr, raddr), nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/ip_test.go gcc-4.8.1/libgo/go/net/ip_test.go
+--- gcc-4.8.1.orig/libgo/go/net/ip_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/ip_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,23 +5,12 @@
+ package net
+ 
+ import (
+-	"bytes"
+ 	"reflect"
+ 	"runtime"
+ 	"testing"
+ )
+ 
+-func isEqual(a, b []byte) bool {
+-	if a == nil && b == nil {
+-		return true
+-	}
+-	if a == nil || b == nil {
+-		return false
+-	}
+-	return bytes.Equal(a, b)
+-}
+-
+-var parseiptests = []struct {
++var parseIPTests = []struct {
+ 	in  string
+ 	out IP
+ }{
+@@ -33,22 +22,23 @@
+ 	{"::ffff:127.0.0.1", IPv4(127, 0, 0, 1)},
+ 	{"2001:4860:0:2001::68", IP{0x20, 0x01, 0x48, 0x60, 0, 0, 0x20, 0x01, 0, 0, 0, 0, 0, 0, 0x00, 0x68}},
+ 	{"::ffff:4a7d:1363", IPv4(74, 125, 19, 99)},
++	{"fe80::1%lo0", nil},
++	{"fe80::1%911", nil},
+ 	{"", nil},
+ }
+ 
+ func TestParseIP(t *testing.T) {
+-	for _, tt := range parseiptests {
+-		if out := ParseIP(tt.in); !isEqual(out, tt.out) {
++	for _, tt := range parseIPTests {
++		if out := ParseIP(tt.in); !reflect.DeepEqual(out, tt.out) {
+ 			t.Errorf("ParseIP(%q) = %v, want %v", tt.in, out, tt.out)
+ 		}
+ 	}
+ }
+ 
+-var ipstringtests = []struct {
++var ipStringTests = []struct {
+ 	in  IP
+-	out string
++	out string // see RFC 5952
+ }{
+-	// cf. RFC 5952 (A Recommendation for IPv6 Address Text Representation)
+ 	{IP{0x20, 0x1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0x1, 0x23, 0, 0x12, 0, 0x1}, "2001:db8::123:12:1"},
+ 	{IP{0x20, 0x1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1}, "2001:db8::1"},
+ 	{IP{0x20, 0x1, 0xd, 0xb8, 0, 0, 0, 0x1, 0, 0, 0, 0x1, 0, 0, 0, 0x1}, "2001:db8:0:1:0:1:0:1"},
+@@ -61,14 +51,14 @@
+ }
+ 
+ func TestIPString(t *testing.T) {
+-	for _, tt := range ipstringtests {
++	for _, tt := range ipStringTests {
+ 		if out := tt.in.String(); out != tt.out {
+ 			t.Errorf("IP.String(%v) = %q, want %q", tt.in, out, tt.out)
+ 		}
+ 	}
+ }
+ 
+-var ipmasktests = []struct {
++var ipMaskTests = []struct {
+ 	in   IP
+ 	mask IPMask
+ 	out  IP
+@@ -82,14 +72,14 @@
+ }
+ 
+ func TestIPMask(t *testing.T) {
+-	for _, tt := range ipmasktests {
++	for _, tt := range ipMaskTests {
+ 		if out := tt.in.Mask(tt.mask); out == nil || !tt.out.Equal(out) {
+ 			t.Errorf("IP(%v).Mask(%v) = %v, want %v", tt.in, tt.mask, out, tt.out)
+ 		}
+ 	}
+ }
+ 
+-var ipmaskstringtests = []struct {
++var ipMaskStringTests = []struct {
+ 	in  IPMask
+ 	out string
+ }{
+@@ -101,14 +91,14 @@
+ }
+ 
+ func TestIPMaskString(t *testing.T) {
+-	for _, tt := range ipmaskstringtests {
++	for _, tt := range ipMaskStringTests {
+ 		if out := tt.in.String(); out != tt.out {
+ 			t.Errorf("IPMask.String(%v) = %q, want %q", tt.in, out, tt.out)
+ 		}
+ 	}
+ }
+ 
+-var parsecidrtests = []struct {
++var parseCIDRTests = []struct {
+ 	in  string
+ 	ip  IP
+ 	net *IPNet
+@@ -138,18 +128,18 @@
+ }
+ 
+ func TestParseCIDR(t *testing.T) {
+-	for _, tt := range parsecidrtests {
++	for _, tt := range parseCIDRTests {
+ 		ip, net, err := ParseCIDR(tt.in)
+ 		if !reflect.DeepEqual(err, tt.err) {
+ 			t.Errorf("ParseCIDR(%q) = %v, %v; want %v, %v", tt.in, ip, net, tt.ip, tt.net)
+ 		}
+-		if err == nil && (!tt.ip.Equal(ip) || !tt.net.IP.Equal(net.IP) || !isEqual(net.Mask, tt.net.Mask)) {
+-			t.Errorf("ParseCIDR(%q) = %v, {%v, %v}; want %v {%v, %v}", tt.in, ip, net.IP, net.Mask, tt.ip, tt.net.IP, tt.net.Mask)
++		if err == nil && (!tt.ip.Equal(ip) || !tt.net.IP.Equal(net.IP) || !reflect.DeepEqual(net.Mask, tt.net.Mask)) {
++			t.Errorf("ParseCIDR(%q) = %v, {%v, %v}; want %v, {%v, %v}", tt.in, ip, net.IP, net.Mask, tt.ip, tt.net.IP, tt.net.Mask)
+ 		}
+ 	}
+ }
+ 
+-var ipnetcontainstests = []struct {
++var ipNetContainsTests = []struct {
+ 	ip  IP
+ 	net *IPNet
+ 	ok  bool
+@@ -165,14 +155,14 @@
+ }
+ 
+ func TestIPNetContains(t *testing.T) {
+-	for _, tt := range ipnetcontainstests {
++	for _, tt := range ipNetContainsTests {
+ 		if ok := tt.net.Contains(tt.ip); ok != tt.ok {
+ 			t.Errorf("IPNet(%v).Contains(%v) = %v, want %v", tt.net, tt.ip, ok, tt.ok)
+ 		}
+ 	}
+ }
+ 
+-var ipnetstringtests = []struct {
++var ipNetStringTests = []struct {
+ 	in  *IPNet
+ 	out string
+ }{
+@@ -183,14 +173,14 @@
+ }
+ 
+ func TestIPNetString(t *testing.T) {
+-	for _, tt := range ipnetstringtests {
++	for _, tt := range ipNetStringTests {
+ 		if out := tt.in.String(); out != tt.out {
+ 			t.Errorf("IPNet.String(%v) = %q, want %q", tt.in, out, tt.out)
+ 		}
+ 	}
+ }
+ 
+-var cidrmasktests = []struct {
++var cidrMaskTests = []struct {
+ 	ones int
+ 	bits int
+ 	out  IPMask
+@@ -210,8 +200,8 @@
+ }
+ 
+ func TestCIDRMask(t *testing.T) {
+-	for _, tt := range cidrmasktests {
+-		if out := CIDRMask(tt.ones, tt.bits); !isEqual(out, tt.out) {
++	for _, tt := range cidrMaskTests {
++		if out := CIDRMask(tt.ones, tt.bits); !reflect.DeepEqual(out, tt.out) {
+ 			t.Errorf("CIDRMask(%v, %v) = %v, want %v", tt.ones, tt.bits, out, tt.out)
+ 		}
+ 	}
+@@ -229,7 +219,7 @@
+ 	v4maskzero     = IPMask{0, 0, 0, 0}
+ )
+ 
+-var networknumberandmasktests = []struct {
++var networkNumberAndMaskTests = []struct {
+ 	in  IPNet
+ 	out IPNet
+ }{
+@@ -251,43 +241,90 @@
+ }
+ 
+ func TestNetworkNumberAndMask(t *testing.T) {
+-	for _, tt := range networknumberandmasktests {
++	for _, tt := range networkNumberAndMaskTests {
+ 		ip, m := networkNumberAndMask(&tt.in)
+ 		out := &IPNet{IP: ip, Mask: m}
+ 		if !reflect.DeepEqual(&tt.out, out) {
+-			t.Errorf("networkNumberAndMask(%v) = %v; want %v", tt.in, out, &tt.out)
++			t.Errorf("networkNumberAndMask(%v) = %v, want %v", tt.in, out, &tt.out)
+ 		}
+ 	}
+ }
+ 
+-var splitjointests = []struct {
+-	Host string
+-	Port string
+-	Join string
++var splitJoinTests = []struct {
++	host string
++	port string
++	join string
+ }{
+ 	{"www.google.com", "80", "www.google.com:80"},
+ 	{"127.0.0.1", "1234", "127.0.0.1:1234"},
+ 	{"::1", "80", "[::1]:80"},
++	{"fe80::1%lo0", "80", "[fe80::1%lo0]:80"},
++	{"localhost%lo0", "80", "[localhost%lo0]:80"},
++	{"", "0", ":0"},
++
+ 	{"google.com", "https%foo", "google.com:https%foo"}, // Go 1.0 behavior
++	{"127.0.0.1", "", "127.0.0.1:"},                     // Go 1.0 behaviour
++	{"www.google.com", "", "www.google.com:"},           // Go 1.0 behaviour
++}
++
++var splitFailureTests = []struct {
++	hostPort string
++	err      string
++}{
++	{"www.google.com", "missing port in address"},
++	{"127.0.0.1", "missing port in address"},
++	{"[::1]", "missing port in address"},
++	{"[fe80::1%lo0]", "missing port in address"},
++	{"[localhost%lo0]", "missing port in address"},
++	{"localhost%lo0", "missing port in address"},
++
++	{"::1", "too many colons in address"},
++	{"fe80::1%lo0", "too many colons in address"},
++	{"fe80::1%lo0:80", "too many colons in address"},
++
++	{"localhost%lo0:80", "missing brackets in address"},
++
++	// Test cases that didn't fail in Go 1.0
++
++	{"[foo:bar]", "missing port in address"},
++	{"[foo:bar]baz", "missing port in address"},
++	{"[foo]bar:baz", "missing port in address"},
++
++	{"[foo]:[bar]:baz", "too many colons in address"},
++
++	{"[foo]:[bar]baz", "unexpected '[' in address"},
++	{"foo[bar]:baz", "unexpected '[' in address"},
++
++	{"foo]bar:baz", "unexpected ']' in address"},
+ }
+ 
+ func TestSplitHostPort(t *testing.T) {
+-	for _, tt := range splitjointests {
+-		if host, port, err := SplitHostPort(tt.Join); host != tt.Host || port != tt.Port || err != nil {
+-			t.Errorf("SplitHostPort(%q) = %q, %q, %v; want %q, %q, nil", tt.Join, host, port, err, tt.Host, tt.Port)
++	for _, tt := range splitJoinTests {
++		if host, port, err := SplitHostPort(tt.join); host != tt.host || port != tt.port || err != nil {
++			t.Errorf("SplitHostPort(%q) = %q, %q, %v; want %q, %q, nil", tt.join, host, port, err, tt.host, tt.port)
++		}
++	}
++	for _, tt := range splitFailureTests {
++		if _, _, err := SplitHostPort(tt.hostPort); err == nil {
++			t.Errorf("SplitHostPort(%q) should have failed", tt.hostPort)
++		} else {
++			e := err.(*AddrError)
++			if e.Err != tt.err {
++				t.Errorf("SplitHostPort(%q) = _, _, %q; want %q", tt.hostPort, e.Err, tt.err)
++			}
+ 		}
+ 	}
+ }
+ 
+ func TestJoinHostPort(t *testing.T) {
+-	for _, tt := range splitjointests {
+-		if join := JoinHostPort(tt.Host, tt.Port); join != tt.Join {
+-			t.Errorf("JoinHostPort(%q, %q) = %q; want %q", tt.Host, tt.Port, join, tt.Join)
++	for _, tt := range splitJoinTests {
++		if join := JoinHostPort(tt.host, tt.port); join != tt.join {
++			t.Errorf("JoinHostPort(%q, %q) = %q; want %q", tt.host, tt.port, join, tt.join)
+ 		}
+ 	}
+ }
+ 
+-var ipaftests = []struct {
++var ipAddrFamilyTests = []struct {
+ 	in  IP
+ 	af4 bool
+ 	af6 bool
+@@ -310,7 +347,7 @@
+ }
+ 
+ func TestIPAddrFamily(t *testing.T) {
+-	for _, tt := range ipaftests {
++	for _, tt := range ipAddrFamilyTests {
+ 		if af := tt.in.To4() != nil; af != tt.af4 {
+ 			t.Errorf("verifying IPv4 address family for %q = %v, want %v", tt.in, af, tt.af4)
+ 		}
+@@ -320,7 +357,7 @@
+ 	}
+ }
+ 
+-var ipscopetests = []struct {
++var ipAddrScopeTests = []struct {
+ 	scope func(IP) bool
+ 	in    IP
+ 	ok    bool
+@@ -361,7 +398,7 @@
+ }
+ 
+ func TestIPAddrScope(t *testing.T) {
+-	for _, tt := range ipscopetests {
++	for _, tt := range ipAddrScopeTests {
+ 		if ok := tt.scope(tt.in); ok != tt.ok {
+ 			t.Errorf("%s(%q) = %v, want %v", name(tt.scope), tt.in, ok, tt.ok)
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/lookup_plan9.go gcc-4.8.1/libgo/go/net/lookup_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/lookup_plan9.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/lookup_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,7 +7,6 @@
+ import (
+ 	"errors"
+ 	"os"
+-	"syscall"
+ )
+ 
+ func query(filename, query string, bufSize int) (res []string, err error) {
+@@ -70,9 +69,26 @@
+ 	return query("/net/dns", addr+" "+typ, 1024)
+ }
+ 
++// lookupProtocol looks up IP protocol name and returns
++// the corresponding protocol number.
+ func lookupProtocol(name string) (proto int, err error) {
+-	// TODO: Implement this
+-	return 0, syscall.EPLAN9
++	lines, err := query("/net/cs", "!protocol="+name, 128)
++	if err != nil {
++		return 0, err
++	}
++	unknownProtoError := errors.New("unknown IP protocol specified: " + name)
++	if len(lines) == 0 {
++		return 0, unknownProtoError
++	}
++	f := getFields(lines[0])
++	if len(f) < 2 {
++		return 0, unknownProtoError
++	}
++	s := f[1]
++	if n, _, ok := dtoi(s, byteIndex(s, '=')+1); ok {
++		return n, nil
++	}
++	return 0, unknownProtoError
+ }
+ 
+ func lookupHost(host string) (addrs []string, err error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/lookup_windows.go gcc-4.8.1/libgo/go/net/lookup_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/lookup_windows.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/lookup_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,21 +6,17 @@
+ 
+ import (
+ 	"os"
+-	"sync"
++	"runtime"
+ 	"syscall"
+ 	"unsafe"
+ )
+ 
+ var (
+-	protoentLock sync.Mutex
+-	hostentLock  sync.Mutex
+-	serventLock  sync.Mutex
++	lookupPort = oldLookupPort
++	lookupIP   = oldLookupIP
+ )
+ 
+-// lookupProtocol looks up IP protocol name and returns correspondent protocol number.
+-func lookupProtocol(name string) (proto int, err error) {
+-	protoentLock.Lock()
+-	defer protoentLock.Unlock()
++func getprotobyname(name string) (proto int, err error) {
+ 	p, err := syscall.GetProtoByName(name)
+ 	if err != nil {
+ 		return 0, os.NewSyscallError("GetProtoByName", err)
+@@ -28,6 +24,25 @@
+ 	return int(p.Proto), nil
+ }
+ 
++// lookupProtocol looks up IP protocol name and returns correspondent protocol number.
++func lookupProtocol(name string) (proto int, err error) {
++	// GetProtoByName return value is stored in thread local storage.
++	// Start new os thread before the call to prevent races.
++	type result struct {
++		proto int
++		err   error
++	}
++	ch := make(chan result)
++	go func() {
++		runtime.LockOSThread()
++		defer runtime.UnlockOSThread()
++		proto, err := getprotobyname(name)
++		ch <- result{proto: proto, err: err}
++	}()
++	r := <-ch
++	return r.proto, r.err
++}
++
+ func lookupHost(name string) (addrs []string, err error) {
+ 	ips, err := LookupIP(name)
+ 	if err != nil {
+@@ -40,11 +55,7 @@
+ 	return
+ }
+ 
+-var lookupIP = oldLookupIP
+-
+-func oldLookupIP(name string) (addrs []IP, err error) {
+-	hostentLock.Lock()
+-	defer hostentLock.Unlock()
++func gethostbyname(name string) (addrs []IP, err error) {
+ 	h, err := syscall.GetHostByName(name)
+ 	if err != nil {
+ 		return nil, os.NewSyscallError("GetHostByName", err)
+@@ -63,6 +74,24 @@
+ 	return addrs, nil
+ }
+ 
++func oldLookupIP(name string) (addrs []IP, err error) {
++	// GetHostByName return value is stored in thread local storage.
++	// Start new os thread before the call to prevent races.
++	type result struct {
++		addrs []IP
++		err   error
++	}
++	ch := make(chan result)
++	go func() {
++		runtime.LockOSThread()
++		defer runtime.UnlockOSThread()
++		addrs, err := gethostbyname(name)
++		ch <- result{addrs: addrs, err: err}
++	}()
++	r := <-ch
++	return r.addrs, r.err
++}
++
+ func newLookupIP(name string) (addrs []IP, err error) {
+ 	hints := syscall.AddrinfoW{
+ 		Family:   syscall.AF_UNSPEC,
+@@ -92,15 +121,13 @@
+ 	return addrs, nil
+ }
+ 
+-func lookupPort(network, service string) (port int, err error) {
++func getservbyname(network, service string) (port int, err error) {
+ 	switch network {
+ 	case "tcp4", "tcp6":
+ 		network = "tcp"
+ 	case "udp4", "udp6":
+ 		network = "udp"
+ 	}
+-	serventLock.Lock()
+-	defer serventLock.Unlock()
+ 	s, err := syscall.GetServByName(service, network)
+ 	if err != nil {
+ 		return 0, os.NewSyscallError("GetServByName", err)
+@@ -108,6 +135,58 @@
+ 	return int(syscall.Ntohs(s.Port)), nil
+ }
+ 
++func oldLookupPort(network, service string) (port int, err error) {
++	// GetServByName return value is stored in thread local storage.
++	// Start new os thread before the call to prevent races.
++	type result struct {
++		port int
++		err  error
++	}
++	ch := make(chan result)
++	go func() {
++		runtime.LockOSThread()
++		defer runtime.UnlockOSThread()
++		port, err := getservbyname(network, service)
++		ch <- result{port: port, err: err}
++	}()
++	r := <-ch
++	return r.port, r.err
++}
++
++func newLookupPort(network, service string) (port int, err error) {
++	var stype int32
++	switch network {
++	case "tcp4", "tcp6":
++		stype = syscall.SOCK_STREAM
++	case "udp4", "udp6":
++		stype = syscall.SOCK_DGRAM
++	}
++	hints := syscall.AddrinfoW{
++		Family:   syscall.AF_UNSPEC,
++		Socktype: stype,
++		Protocol: syscall.IPPROTO_IP,
++	}
++	var result *syscall.AddrinfoW
++	e := syscall.GetAddrInfoW(nil, syscall.StringToUTF16Ptr(service), &hints, &result)
++	if e != nil {
++		return 0, os.NewSyscallError("GetAddrInfoW", e)
++	}
++	defer syscall.FreeAddrInfoW(result)
++	if result == nil {
++		return 0, os.NewSyscallError("LookupPort", syscall.EINVAL)
++	}
++	addr := unsafe.Pointer(result.Addr)
++	switch result.Family {
++	case syscall.AF_INET:
++		a := (*syscall.RawSockaddrInet4)(addr)
++		return int(syscall.Ntohs(a.Port)), nil
++	case syscall.AF_INET6:
++		a := (*syscall.RawSockaddrInet6)(addr)
++		return int(syscall.Ntohs(a.Port)), nil
++	}
++	return 0, os.NewSyscallError("LookupPort", syscall.EINVAL)
++}
++
+ func lookupCNAME(name string) (cname string, err error) {
+ 	var r *syscall.DNSRecord
+ 	e := syscall.DnsQuery(name, syscall.DNS_TYPE_CNAME, 0, nil, &r, nil)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/multicast_posix_test.go gcc-4.8.1/libgo/go/net/multicast_posix_test.go
+--- gcc-4.8.1.orig/libgo/go/net/multicast_posix_test.go	2013-02-07 11:04:24.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/multicast_posix_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,180 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build !plan9
+-
+-package net
+-
+-import (
+-	"errors"
+-	"os"
+-	"runtime"
+-	"testing"
+-)
+-
+-var multicastListenerTests = []struct {
+-	net   string
+-	gaddr *UDPAddr
+-	flags Flags
+-	ipv6  bool // test with underlying AF_INET6 socket
+-}{
+-	// cf. RFC 4727: Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6, UDP, and TCP Headers
+-
+-	{"udp", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}, FlagUp | FlagLoopback, false},
+-	{"udp", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}, 0, false},
+-	{"udp", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}, 0, true},
+-
+-	{"udp4", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}, FlagUp | FlagLoopback, false},
+-	{"udp4", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}, 0, false},
+-
+-	{"udp6", &UDPAddr{IP: ParseIP("ff01::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff01::114"), Port: 12345}, 0, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff02::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff02::114"), Port: 12345}, 0, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff04::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff04::114"), Port: 12345}, 0, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff05::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff05::114"), Port: 12345}, 0, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff08::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff08::114"), Port: 12345}, 0, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}, FlagUp | FlagLoopback, true},
+-	{"udp6", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}, 0, true},
+-}
+-
+-// TestMulticastListener tests both single and double listen to a test
+-// listener with same address family, same group address and same port.
+-func TestMulticastListener(t *testing.T) {
+-	switch runtime.GOOS {
+-	case "netbsd", "openbsd", "plan9", "solaris", "windows":
+-		t.Skipf("skipping test on %q", runtime.GOOS)
+-	case "linux":
+-		if runtime.GOARCH == "arm" || runtime.GOARCH == "alpha" {
+-			t.Skipf("skipping test on %q/%q", runtime.GOOS, runtime.GOARCH)
+-		}
+-	}
+-
+-	for _, tt := range multicastListenerTests {
+-		if tt.ipv6 && (!*testIPv6 || !supportsIPv6 || os.Getuid() != 0) {
+-			continue
+-		}
+-		ifi, err := availMulticastInterface(t, tt.flags)
+-		if err != nil {
+-			continue
+-		}
+-		c1, err := ListenMulticastUDP(tt.net, ifi, tt.gaddr)
+-		if err != nil {
+-			t.Fatalf("First ListenMulticastUDP failed: %v", err)
+-		}
+-		checkMulticastListener(t, err, c1, tt.gaddr)
+-		c2, err := ListenMulticastUDP(tt.net, ifi, tt.gaddr)
+-		if err != nil {
+-			t.Fatalf("Second ListenMulticastUDP failed: %v", err)
+-		}
+-		checkMulticastListener(t, err, c2, tt.gaddr)
+-		c2.Close()
+-		c1.Close()
+-	}
+-}
+-
+-func TestSimpleMulticastListener(t *testing.T) {
+-	switch runtime.GOOS {
+-	case "plan9":
+-		t.Skipf("skipping test on %q", runtime.GOOS)
+-	case "windows":
+-		if testing.Short() || !*testExternal {
+-			t.Skip("skipping test on windows to avoid firewall")
+-		}
+-	}
+-
+-	for _, tt := range multicastListenerTests {
+-		if tt.ipv6 {
+-			continue
+-		}
+-		tt.flags = FlagUp | FlagMulticast // for windows testing
+-		ifi, err := availMulticastInterface(t, tt.flags)
+-		if err != nil {
+-			continue
+-		}
+-		c1, err := ListenMulticastUDP(tt.net, ifi, tt.gaddr)
+-		if err != nil {
+-			t.Fatalf("First ListenMulticastUDP failed: %v", err)
+-		}
+-		checkSimpleMulticastListener(t, err, c1, tt.gaddr)
+-		c2, err := ListenMulticastUDP(tt.net, ifi, tt.gaddr)
+-		if err != nil {
+-			t.Fatalf("Second ListenMulticastUDP failed: %v", err)
+-		}
+-		checkSimpleMulticastListener(t, err, c2, tt.gaddr)
+-		c2.Close()
+-		c1.Close()
+-	}
+-}
+-
+-func checkMulticastListener(t *testing.T, err error, c *UDPConn, gaddr *UDPAddr) {
+-	if !multicastRIBContains(t, gaddr.IP) {
+-		t.Errorf("%q not found in RIB", gaddr.String())
+-		return
+-	}
+-	la := c.LocalAddr()
+-	if la == nil {
+-		t.Error("LocalAddr failed")
+-		return
+-	}
+-	if a, ok := la.(*UDPAddr); !ok || a.Port == 0 {
+-		t.Errorf("got %v; expected a proper address with non-zero port number", la)
+-		return
+-	}
+-}
+-
+-func checkSimpleMulticastListener(t *testing.T, err error, c *UDPConn, gaddr *UDPAddr) {
+-	la := c.LocalAddr()
+-	if la == nil {
+-		t.Error("LocalAddr failed")
+-		return
+-	}
+-	if a, ok := la.(*UDPAddr); !ok || a.Port == 0 {
+-		t.Errorf("got %v; expected a proper address with non-zero port number", la)
+-		return
+-	}
+-}
+-
+-func availMulticastInterface(t *testing.T, flags Flags) (*Interface, error) {
+-	var ifi *Interface
+-	if flags != Flags(0) {
+-		ift, err := Interfaces()
+-		if err != nil {
+-			t.Fatalf("Interfaces failed: %v", err)
+-		}
+-		for _, x := range ift {
+-			if x.Flags&flags == flags {
+-				ifi = &x
+-				break
+-			}
+-		}
+-		if ifi == nil {
+-			return nil, errors.New("an appropriate multicast interface not found")
+-		}
+-	}
+-	return ifi, nil
+-}
+-
+-func multicastRIBContains(t *testing.T, ip IP) bool {
+-	ift, err := Interfaces()
+-	if err != nil {
+-		t.Fatalf("Interfaces failed: %v", err)
+-	}
+-	for _, ifi := range ift {
+-		ifmat, err := ifi.MulticastAddrs()
+-		if err != nil {
+-			t.Fatalf("MulticastAddrs failed: %v", err)
+-		}
+-		for _, ifma := range ifmat {
+-			if ifma.(*IPAddr).IP.Equal(ip) {
+-				return true
+-			}
+-		}
+-	}
+-	return false
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/multicast_test.go gcc-4.8.1/libgo/go/net/multicast_test.go
+--- gcc-4.8.1.orig/libgo/go/net/multicast_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/multicast_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,184 @@
++// Copyright 2011 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package net
++
++import (
++	"fmt"
++	"os"
++	"runtime"
++	"testing"
++)
++
++var ipv4MulticastListenerTests = []struct {
++	net   string
++	gaddr *UDPAddr // see RFC 4727
++}{
++	{"udp", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}},
++
++	{"udp4", &UDPAddr{IP: IPv4(224, 0, 0, 254), Port: 12345}},
++}
++
++// TestIPv4MulticastListener tests both single and double listen to a
++// test listener with same address family, same group address and same
++// port.
++func TestIPv4MulticastListener(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
++	closer := func(cs []*UDPConn) {
++		for _, c := range cs {
++			if c != nil {
++				c.Close()
++			}
++		}
++	}
++
++	for _, ifi := range []*Interface{loopbackInterface(), nil} {
++		// Note that multicast interface assignment by system
++		// is not recommended because it usually relies on
++		// routing stuff for finding out an appropriate
++		// nexthop containing both network and link layer
++		// adjacencies.
++		if ifi == nil && !*testExternal {
++			continue
++		}
++		for _, tt := range ipv4MulticastListenerTests {
++			var err error
++			cs := make([]*UDPConn, 2)
++			if cs[0], err = ListenMulticastUDP(tt.net, ifi, tt.gaddr); err != nil {
++				t.Fatalf("First ListenMulticastUDP on %v failed: %v", ifi, err)
++			}
++			if err := checkMulticastListener(cs[0], tt.gaddr.IP); err != nil {
++				closer(cs)
++				t.Fatal(err)
++			}
++			if cs[1], err = ListenMulticastUDP(tt.net, ifi, tt.gaddr); err != nil {
++				closer(cs)
++				t.Fatalf("Second ListenMulticastUDP on %v failed: %v", ifi, err)
++			}
++			if err := checkMulticastListener(cs[1], tt.gaddr.IP); err != nil {
++				closer(cs)
++				t.Fatal(err)
++			}
++			closer(cs)
++		}
++	}
++}
++
++var ipv6MulticastListenerTests = []struct {
++	net   string
++	gaddr *UDPAddr // see RFC 4727
++}{
++	{"udp", &UDPAddr{IP: ParseIP("ff01::114"), Port: 12345}},
++	{"udp", &UDPAddr{IP: ParseIP("ff02::114"), Port: 12345}},
++	{"udp", &UDPAddr{IP: ParseIP("ff04::114"), Port: 12345}},
++	{"udp", &UDPAddr{IP: ParseIP("ff05::114"), Port: 12345}},
++	{"udp", &UDPAddr{IP: ParseIP("ff08::114"), Port: 12345}},
++	{"udp", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}},
++
++	{"udp6", &UDPAddr{IP: ParseIP("ff01::114"), Port: 12345}},
++	{"udp6", &UDPAddr{IP: ParseIP("ff02::114"), Port: 12345}},
++	{"udp6", &UDPAddr{IP: ParseIP("ff04::114"), Port: 12345}},
++	{"udp6", &UDPAddr{IP: ParseIP("ff05::114"), Port: 12345}},
++	{"udp6", &UDPAddr{IP: ParseIP("ff08::114"), Port: 12345}},
++	{"udp6", &UDPAddr{IP: ParseIP("ff0e::114"), Port: 12345}},
++}
++
++// TestIPv6MulticastListener tests both single and double listen to a
++// test listener with same address family, same group address and same
++// port.
++func TestIPv6MulticastListener(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9", "solaris":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++	if !supportsIPv6 {
++		t.Skip("ipv6 is not supported")
++	}
++	if os.Getuid() != 0 {
++		t.Skip("skipping test; must be root")
++	}
++
++	closer := func(cs []*UDPConn) {
++		for _, c := range cs {
++			if c != nil {
++				c.Close()
++			}
++		}
++	}
++
++	for _, ifi := range []*Interface{loopbackInterface(), nil} {
++		// Note that multicast interface assignment by system
++		// is not recommended because it usually relies on
++		// routing stuff for finding out an appropriate
++		// nexthop containing both network and link layer
++		// adjacencies.
++		if ifi == nil && (!*testExternal || !*testIPv6) {
++			continue
++		}
++		for _, tt := range ipv6MulticastListenerTests {
++			var err error
++			cs := make([]*UDPConn, 2)
++			if cs[0], err = ListenMulticastUDP(tt.net, ifi, tt.gaddr); err != nil {
++				t.Fatalf("First ListenMulticastUDP on %v failed: %v", ifi, err)
++			}
++			if err := checkMulticastListener(cs[0], tt.gaddr.IP); err != nil {
++				closer(cs)
++				t.Fatal(err)
++			}
++			if cs[1], err = ListenMulticastUDP(tt.net, ifi, tt.gaddr); err != nil {
++				closer(cs)
++				t.Fatalf("Second ListenMulticastUDP on %v failed: %v", ifi, err)
++			}
++			if err := checkMulticastListener(cs[1], tt.gaddr.IP); err != nil {
++				closer(cs)
++				t.Fatal(err)
++			}
++			closer(cs)
++		}
++	}
++}
++
++func checkMulticastListener(c *UDPConn, ip IP) error {
++	if ok, err := multicastRIBContains(ip); err != nil {
++		return err
++	} else if !ok {
++		return fmt.Errorf("%q not found in multicast RIB", ip.String())
++	}
++	la := c.LocalAddr()
++	if la, ok := la.(*UDPAddr); !ok || la.Port == 0 {
++		return fmt.Errorf("got %v; expected a proper address with non-zero port number", la)
++	}
++	return nil
++}
++
++func multicastRIBContains(ip IP) (bool, error) {
++	switch runtime.GOOS {
++	case "netbsd", "openbsd", "plan9", "solaris", "windows":
++		return true, nil // not implemented yet
++	case "linux":
++		if runtime.GOARCH == "arm" || runtime.GOARCH == "alpha" {
++			return true, nil // not implemented yet
++		}
++	}
++	ift, err := Interfaces()
++	if err != nil {
++		return false, err
++	}
++	for _, ifi := range ift {
++		ifmat, err := ifi.MulticastAddrs()
++		if err != nil {
++			return false, err
++		}
++		for _, ifma := range ifmat {
++			if ifma.(*IPAddr).IP.Equal(ip) {
++				return true, nil
++			}
++		}
++	}
++	return false, nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/net.go gcc-4.8.1/libgo/go/net/net.go
+--- gcc-4.8.1.orig/libgo/go/net/net.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/net.go	2013-07-16 01:55:04.520470000 -0500
+@@ -276,11 +276,23 @@
+ 
+ var errMissingAddress = errors.New("missing address")
+ 
++// OpError is the error type usually returned by functions in the net
++// package. It describes the operation, network type, and address of
++// an error.
+ type OpError struct {
+-	Op   string
+-	Net  string
++	// Op is the operation which caused the error, such as
++	// "read" or "write".
++	Op string
++
++	// Net is the network type on which this error occurred,
++	// such as "tcp" or "udp6".
++	Net string
++
++	// Addr is the network address on which this error occurred.
+ 	Addr Addr
+-	Err  error
++
++	// Err is the error that occurred during the operation.
++	Err error
+ }
+ 
+ func (e *OpError) Error() string {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/net_test.go gcc-4.8.1/libgo/go/net/net_test.go
+--- gcc-4.8.1.orig/libgo/go/net/net_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/net_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -173,6 +173,10 @@
+ }
+ 
+ func TestTCPClose(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
+ 	l, err := Listen("tcp", "127.0.0.1:0")
+ 	if err != nil {
+ 		t.Fatal(err)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/newpollserver_unix.go gcc-4.8.1/libgo/go/net/newpollserver_unix.go
+--- gcc-4.8.1.orig/libgo/go/net/newpollserver_unix.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/newpollserver_unix.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,46 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-// +build darwin freebsd linux netbsd openbsd
+-
+-package net
+-
+-import (
+-	"os"
+-	"syscall"
+-)
+-
+-func newPollServer() (s *pollServer, err error) {
+-	s = new(pollServer)
+-	if s.pr, s.pw, err = os.Pipe(); err != nil {
+-		return nil, err
+-	}
+-	if err = syscall.SetNonblock(int(s.pr.Fd()), true); err != nil {
+-		goto Errno
+-	}
+-	if err = syscall.SetNonblock(int(s.pw.Fd()), true); err != nil {
+-		goto Errno
+-	}
+-	if s.poll, err = newpollster(); err != nil {
+-		goto Error
+-	}
+-	if _, err = s.poll.AddFD(int(s.pr.Fd()), 'r', true); err != nil {
+-		s.poll.Close()
+-		goto Error
+-	}
+-	s.pending = make(map[int]*netFD)
+-	go s.Run()
+-	return s, nil
+-
+-Errno:
+-	err = &os.PathError{
+-		Op:   "setnonblock",
+-		Path: s.pr.Name(),
+-		Err:  err,
+-	}
+-Error:
+-	s.pr.Close()
+-	s.pw.Close()
+-	return nil, err
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/packetconn_test.go gcc-4.8.1/libgo/go/net/packetconn_test.go
+--- gcc-4.8.1.orig/libgo/go/net/packetconn_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/packetconn_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,12 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package net_test
++// This file implements API tests across platforms and will never have a build
++// tag.
++
++package net
+ 
+ import (
+-	"net"
+ 	"os"
+ 	"runtime"
+ 	"strings"
+@@ -13,18 +15,24 @@
+ 	"time"
+ )
+ 
++func strfunc(s string) func() string {
++	return func() string {
++		return s
++	}
++}
++
+ var packetConnTests = []struct {
+ 	net   string
+-	addr1 string
+-	addr2 string
++	addr1 func() string
++	addr2 func() string
+ }{
+-	{"udp", "127.0.0.1:0", "127.0.0.1:0"},
+-	{"ip:icmp", "127.0.0.1", "127.0.0.1"},
+-	{"unixgram", "/tmp/gotest.net1", "/tmp/gotest.net2"},
++	{"udp", strfunc("127.0.0.1:0"), strfunc("127.0.0.1:0")},
++	{"ip:icmp", strfunc("127.0.0.1"), strfunc("127.0.0.1")},
++	{"unixgram", testUnixAddr, testUnixAddr},
+ }
+ 
+ func TestPacketConn(t *testing.T) {
+-	closer := func(c net.PacketConn, net, addr1, addr2 string) {
++	closer := func(c PacketConn, net, addr1, addr2 string) {
+ 		c.Close()
+ 		switch net {
+ 		case "unixgram":
+@@ -33,7 +41,7 @@
+ 		}
+ 	}
+ 
+-	for _, tt := range packetConnTests {
++	for i, tt := range packetConnTests {
+ 		var wb []byte
+ 		netstr := strings.Split(tt.net, ":")
+ 		switch netstr[0] {
+@@ -47,59 +55,76 @@
+ 			if os.Getuid() != 0 {
+ 				continue
+ 			}
+-			id := os.Getpid() & 0xffff
+-			wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCONN TEST"))
++			var err error
++			wb, err = (&icmpMessage{
++				Type: icmpv4EchoRequest, Code: 0,
++				Body: &icmpEcho{
++					ID: os.Getpid() & 0xffff, Seq: i + 1,
++					Data: []byte("IP PACKETCONN TEST"),
++				},
++			}).Marshal()
++			if err != nil {
++				t.Fatalf("icmpMessage.Marshal failed: %v", err)
++			}
+ 		case "unixgram":
+ 			switch runtime.GOOS {
+ 			case "plan9", "windows":
+ 				continue
+ 			}
+-			os.Remove(tt.addr1)
+-			os.Remove(tt.addr2)
+ 			wb = []byte("UNIXGRAM PACKETCONN TEST")
+ 		default:
+ 			continue
+ 		}
+ 
+-		c1, err := net.ListenPacket(tt.net, tt.addr1)
++		addr1, addr2 := tt.addr1(), tt.addr2()
++		c1, err := ListenPacket(tt.net, addr1)
+ 		if err != nil {
+-			t.Fatalf("net.ListenPacket failed: %v", err)
++			t.Fatalf("ListenPacket failed: %v", err)
+ 		}
++		defer closer(c1, netstr[0], addr1, addr2)
+ 		c1.LocalAddr()
+ 		c1.SetDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-		defer closer(c1, netstr[0], tt.addr1, tt.addr2)
+ 
+-		c2, err := net.ListenPacket(tt.net, tt.addr2)
++		c2, err := ListenPacket(tt.net, addr2)
+ 		if err != nil {
+-			t.Fatalf("net.ListenPacket failed: %v", err)
++			t.Fatalf("ListenPacket failed: %v", err)
+ 		}
++		defer closer(c2, netstr[0], addr1, addr2)
+ 		c2.LocalAddr()
+ 		c2.SetDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-		defer closer(c2, netstr[0], tt.addr1, tt.addr2)
+ 
+ 		if _, err := c1.WriteTo(wb, c2.LocalAddr()); err != nil {
+-			t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
++			t.Fatalf("PacketConn.WriteTo failed: %v", err)
+ 		}
+ 		rb2 := make([]byte, 128)
+ 		if _, _, err := c2.ReadFrom(rb2); err != nil {
+-			t.Fatalf("net.PacketConn.ReadFrom failed: %v", err)
++			t.Fatalf("PacketConn.ReadFrom failed: %v", err)
+ 		}
+ 		if _, err := c2.WriteTo(wb, c1.LocalAddr()); err != nil {
+-			t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
++			t.Fatalf("PacketConn.WriteTo failed: %v", err)
+ 		}
+ 		rb1 := make([]byte, 128)
+ 		if _, _, err := c1.ReadFrom(rb1); err != nil {
+-			t.Fatalf("net.PacketConn.ReadFrom failed: %v", err)
++			t.Fatalf("PacketConn.ReadFrom failed: %v", err)
+ 		}
+ 	}
+ }
+ 
+ func TestConnAndPacketConn(t *testing.T) {
+-	for _, tt := range packetConnTests {
++	closer := func(c PacketConn, net, addr1, addr2 string) {
++		c.Close()
++		switch net {
++		case "unixgram":
++			os.Remove(addr1)
++			os.Remove(addr2)
++		}
++	}
++
++	for i, tt := range packetConnTests {
+ 		var wb []byte
+ 		netstr := strings.Split(tt.net, ":")
+ 		switch netstr[0] {
+@@ -113,52 +138,71 @@
+ 			if os.Getuid() != 0 {
+ 				continue
+ 			}
+-			id := os.Getpid() & 0xffff
+-			wb = newICMPEchoRequest(id, 1, 128, []byte("IP PACKETCONN TEST"))
++			var err error
++			wb, err = (&icmpMessage{
++				Type: icmpv4EchoRequest, Code: 0,
++				Body: &icmpEcho{
++					ID: os.Getpid() & 0xffff, Seq: i + 1,
++					Data: []byte("IP PACKETCONN TEST"),
++				},
++			}).Marshal()
++			if err != nil {
++				t.Fatalf("icmpMessage.Marshal failed: %v", err)
++			}
++		case "unixgram":
++			switch runtime.GOOS {
++			case "plan9", "windows":
++				continue
++			}
++			wb = []byte("UNIXGRAM PACKETCONN TEST")
+ 		default:
+ 			continue
+ 		}
+ 
+-		c1, err := net.ListenPacket(tt.net, tt.addr1)
++		addr1, addr2 := tt.addr1(), tt.addr2()
++		c1, err := ListenPacket(tt.net, addr1)
+ 		if err != nil {
+-			t.Fatalf("net.ListenPacket failed: %v", err)
++			t.Fatalf("ListenPacket failed: %v", err)
+ 		}
++		defer closer(c1, netstr[0], addr1, addr2)
+ 		c1.LocalAddr()
+ 		c1.SetDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-		defer c1.Close()
+ 
+-		c2, err := net.Dial(tt.net, c1.LocalAddr().String())
++		c2, err := Dial(tt.net, c1.LocalAddr().String())
+ 		if err != nil {
+-			t.Fatalf("net.Dial failed: %v", err)
++			t.Fatalf("Dial failed: %v", err)
+ 		}
++		defer c2.Close()
+ 		c2.LocalAddr()
+ 		c2.RemoteAddr()
+ 		c2.SetDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+ 		c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-		defer c2.Close()
+ 
+ 		if _, err := c2.Write(wb); err != nil {
+-			t.Fatalf("net.Conn.Write failed: %v", err)
++			t.Fatalf("Conn.Write failed: %v", err)
+ 		}
+ 		rb1 := make([]byte, 128)
+ 		if _, _, err := c1.ReadFrom(rb1); err != nil {
+-			t.Fatalf("net.PacetConn.ReadFrom failed: %v", err)
++			t.Fatalf("PacetConn.ReadFrom failed: %v", err)
+ 		}
+-		var dst net.Addr
+-		if netstr[0] == "ip" {
+-			dst = &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)}
+-		} else {
++		var dst Addr
++		switch netstr[0] {
++		case "ip":
++			dst = &IPAddr{IP: IPv4(127, 0, 0, 1)}
++		case "unixgram":
++			continue
++		default:
+ 			dst = c2.LocalAddr()
+ 		}
+ 		if _, err := c1.WriteTo(wb, dst); err != nil {
+-			t.Fatalf("net.PacketConn.WriteTo failed: %v", err)
++			t.Fatalf("PacketConn.WriteTo failed: %v", err)
+ 		}
+ 		rb2 := make([]byte, 128)
+ 		if _, err := c2.Read(rb2); err != nil {
+-			t.Fatalf("net.Conn.Read failed: %v", err)
++			t.Fatalf("Conn.Read failed: %v", err)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/port_test.go gcc-4.8.1/libgo/go/net/port_test.go
+--- gcc-4.8.1.orig/libgo/go/net/port_test.go	2011-03-07 17:37:12.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/port_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -46,7 +46,7 @@
+ 	for i := 0; i < len(porttests); i++ {
+ 		tt := porttests[i]
+ 		if port, err := LookupPort(tt.netw, tt.name); port != tt.port || (err == nil) != tt.ok {
+-			t.Errorf("LookupPort(%q, %q) = %v, %s; want %v",
++			t.Errorf("LookupPort(%q, %q) = %v, %v; want %v",
+ 				tt.netw, tt.name, port, err, tt.port)
+ 		}
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/protoconn_test.go gcc-4.8.1/libgo/go/net/protoconn_test.go
+--- gcc-4.8.1.orig/libgo/go/net/protoconn_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/protoconn_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,152 +2,161 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package net_test
++// This file implements API tests across platforms and will never have a build
++// tag.
++
++package net
+ 
+ import (
+-	"bytes"
+-	"net"
++	"io/ioutil"
+ 	"os"
+ 	"runtime"
+ 	"testing"
+ 	"time"
+ )
+ 
+-var condErrorf = func() func(*testing.T, string, ...interface{}) {
++// testUnixAddr uses ioutil.TempFile to get a name that is unique. It
++// also uses /tmp directory in case it is prohibited to create UNIX
++// sockets in TMPDIR.
++func testUnixAddr() string {
++	f, err := ioutil.TempFile("/tmp", "nettest")
++	if err != nil {
++		panic(err)
++	}
++	addr := f.Name()
++	f.Close()
++	os.Remove(addr)
++	return addr
++}
++
++var condFatalf = func() func(*testing.T, string, ...interface{}) {
+ 	// A few APIs are not implemented yet on both Plan 9 and Windows.
+ 	switch runtime.GOOS {
+ 	case "plan9", "windows":
+ 		return (*testing.T).Logf
+ 	}
+-	return (*testing.T).Errorf
++	return (*testing.T).Fatalf
+ }()
+ 
+ func TestTCPListenerSpecificMethods(t *testing.T) {
+-	la, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:0")
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
++	la, err := ResolveTCPAddr("tcp4", "127.0.0.1:0")
+ 	if err != nil {
+-		t.Fatalf("net.ResolveTCPAddr failed: %v", err)
++		t.Fatalf("ResolveTCPAddr failed: %v", err)
+ 	}
+-	ln, err := net.ListenTCP("tcp4", la)
++	ln, err := ListenTCP("tcp4", la)
+ 	if err != nil {
+-		t.Fatalf("net.ListenTCP failed: %v", err)
++		t.Fatalf("ListenTCP failed: %v", err)
+ 	}
++	defer ln.Close()
+ 	ln.Addr()
+ 	ln.SetDeadline(time.Now().Add(30 * time.Nanosecond))
+-	defer ln.Close()
+ 
+ 	if c, err := ln.Accept(); err != nil {
+-		if !err.(net.Error).Timeout() {
+-			t.Errorf("net.TCPListener.Accept failed: %v", err)
+-			return
++		if !err.(Error).Timeout() {
++			t.Fatalf("TCPListener.Accept failed: %v", err)
+ 		}
+ 	} else {
+ 		c.Close()
+ 	}
+ 	if c, err := ln.AcceptTCP(); err != nil {
+-		if !err.(net.Error).Timeout() {
+-			t.Errorf("net.TCPListener.AcceptTCP failed: %v", err)
+-			return
++		if !err.(Error).Timeout() {
++			t.Fatalf("TCPListener.AcceptTCP failed: %v", err)
+ 		}
+ 	} else {
+ 		c.Close()
+ 	}
+ 
+ 	if f, err := ln.File(); err != nil {
+-		condErrorf(t, "net.TCPListener.File failed: %v", err)
+-		return
++		condFatalf(t, "TCPListener.File failed: %v", err)
+ 	} else {
+ 		f.Close()
+ 	}
+ }
+ 
+ func TestTCPConnSpecificMethods(t *testing.T) {
+-	la, err := net.ResolveTCPAddr("tcp4", "127.0.0.1:0")
++	la, err := ResolveTCPAddr("tcp4", "127.0.0.1:0")
+ 	if err != nil {
+-		t.Fatalf("net.ResolveTCPAddr failed: %v", err)
++		t.Fatalf("ResolveTCPAddr failed: %v", err)
+ 	}
+-	ln, err := net.ListenTCP("tcp4", la)
++	ln, err := ListenTCP("tcp4", la)
+ 	if err != nil {
+-		t.Fatalf("net.ListenTCP failed: %v", err)
++		t.Fatalf("ListenTCP failed: %v", err)
+ 	}
+-	ln.Addr()
+ 	defer ln.Close()
++	ln.Addr()
+ 
+ 	done := make(chan int)
+ 	go transponder(t, ln, done)
+ 
+-	ra, err := net.ResolveTCPAddr("tcp4", ln.Addr().String())
++	ra, err := ResolveTCPAddr("tcp4", ln.Addr().String())
+ 	if err != nil {
+-		t.Errorf("net.ResolveTCPAddr failed: %v", err)
+-		return
++		t.Fatalf("ResolveTCPAddr failed: %v", err)
+ 	}
+-	c, err := net.DialTCP("tcp4", nil, ra)
++	c, err := DialTCP("tcp4", nil, ra)
+ 	if err != nil {
+-		t.Errorf("net.DialTCP failed: %v", err)
+-		return
++		t.Fatalf("DialTCP failed: %v", err)
+ 	}
++	defer c.Close()
+ 	c.SetKeepAlive(false)
+ 	c.SetLinger(0)
+ 	c.SetNoDelay(false)
+ 	c.LocalAddr()
+ 	c.RemoteAddr()
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
+-	defer c.Close()
++	c.SetDeadline(time.Now().Add(someTimeout))
++	c.SetReadDeadline(time.Now().Add(someTimeout))
++	c.SetWriteDeadline(time.Now().Add(someTimeout))
+ 
+ 	if _, err := c.Write([]byte("TCPCONN TEST")); err != nil {
+-		t.Errorf("net.TCPConn.Write failed: %v", err)
+-		return
++		t.Fatalf("TCPConn.Write failed: %v", err)
+ 	}
+ 	rb := make([]byte, 128)
+ 	if _, err := c.Read(rb); err != nil {
+-		t.Errorf("net.TCPConn.Read failed: %v", err)
+-		return
++		t.Fatalf("TCPConn.Read failed: %v", err)
+ 	}
+ 
+ 	<-done
+ }
+ 
+ func TestUDPConnSpecificMethods(t *testing.T) {
+-	la, err := net.ResolveUDPAddr("udp4", "127.0.0.1:0")
++	la, err := ResolveUDPAddr("udp4", "127.0.0.1:0")
+ 	if err != nil {
+-		t.Fatalf("net.ResolveUDPAddr failed: %v", err)
++		t.Fatalf("ResolveUDPAddr failed: %v", err)
+ 	}
+-	c, err := net.ListenUDP("udp4", la)
++	c, err := ListenUDP("udp4", la)
+ 	if err != nil {
+-		t.Fatalf("net.ListenUDP failed: %v", err)
++		t.Fatalf("ListenUDP failed: %v", err)
+ 	}
++	defer c.Close()
+ 	c.LocalAddr()
+ 	c.RemoteAddr()
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
++	c.SetDeadline(time.Now().Add(someTimeout))
++	c.SetReadDeadline(time.Now().Add(someTimeout))
++	c.SetWriteDeadline(time.Now().Add(someTimeout))
+ 	c.SetReadBuffer(2048)
+ 	c.SetWriteBuffer(2048)
+-	defer c.Close()
+ 
+ 	wb := []byte("UDPCONN TEST")
+ 	rb := make([]byte, 128)
+-	if _, err := c.WriteToUDP(wb, c.LocalAddr().(*net.UDPAddr)); err != nil {
+-		t.Errorf("net.UDPConn.WriteToUDP failed: %v", err)
+-		return
++	if _, err := c.WriteToUDP(wb, c.LocalAddr().(*UDPAddr)); err != nil {
++		t.Fatalf("UDPConn.WriteToUDP failed: %v", err)
+ 	}
+ 	if _, _, err := c.ReadFromUDP(rb); err != nil {
+-		t.Errorf("net.UDPConn.ReadFromUDP failed: %v", err)
+-		return
++		t.Fatalf("UDPConn.ReadFromUDP failed: %v", err)
+ 	}
+-	if _, _, err := c.WriteMsgUDP(wb, nil, c.LocalAddr().(*net.UDPAddr)); err != nil {
+-		condErrorf(t, "net.UDPConn.WriteMsgUDP failed: %v", err)
+-		return
++	if _, _, err := c.WriteMsgUDP(wb, nil, c.LocalAddr().(*UDPAddr)); err != nil {
++		condFatalf(t, "UDPConn.WriteMsgUDP failed: %v", err)
+ 	}
+ 	if _, _, _, _, err := c.ReadMsgUDP(rb, nil); err != nil {
+-		condErrorf(t, "net.UDPConn.ReadMsgUDP failed: %v", err)
+-		return
++		condFatalf(t, "UDPConn.ReadMsgUDP failed: %v", err)
+ 	}
+ 
+ 	if f, err := c.File(); err != nil {
+-		condErrorf(t, "net.UDPConn.File failed: %v", err)
+-		return
++		condFatalf(t, "UDPConn.File failed: %v", err)
+ 	} else {
+ 		f.Close()
+ 	}
+@@ -156,52 +165,55 @@
+ func TestIPConnSpecificMethods(t *testing.T) {
+ 	switch runtime.GOOS {
+ 	case "plan9":
+-		t.Skipf("skipping read test on %q", runtime.GOOS)
++		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 	if os.Getuid() != 0 {
+ 		t.Skipf("skipping test; must be root")
+ 	}
+ 
+-	la, err := net.ResolveIPAddr("ip4", "127.0.0.1")
++	la, err := ResolveIPAddr("ip4", "127.0.0.1")
+ 	if err != nil {
+-		t.Fatalf("net.ResolveIPAddr failed: %v", err)
++		t.Fatalf("ResolveIPAddr failed: %v", err)
+ 	}
+-	c, err := net.ListenIP("ip4:icmp", la)
++	c, err := ListenIP("ip4:icmp", la)
+ 	if err != nil {
+-		t.Fatalf("net.ListenIP failed: %v", err)
++		t.Fatalf("ListenIP failed: %v", err)
+ 	}
++	defer c.Close()
+ 	c.LocalAddr()
+ 	c.RemoteAddr()
+-	c.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
++	c.SetDeadline(time.Now().Add(someTimeout))
++	c.SetReadDeadline(time.Now().Add(someTimeout))
++	c.SetWriteDeadline(time.Now().Add(someTimeout))
+ 	c.SetReadBuffer(2048)
+ 	c.SetWriteBuffer(2048)
+-	defer c.Close()
+ 
+-	id := os.Getpid() & 0xffff
+-	wb := newICMPEchoRequest(id, 1, 128, []byte("IPCONN TEST "))
++	wb, err := (&icmpMessage{
++		Type: icmpv4EchoRequest, Code: 0,
++		Body: &icmpEcho{
++			ID: os.Getpid() & 0xffff, Seq: 1,
++			Data: []byte("IPCONN TEST "),
++		},
++	}).Marshal()
++	if err != nil {
++		t.Fatalf("icmpMessage.Marshal failed: %v", err)
++	}
+ 	rb := make([]byte, 20+128)
+-	if _, err := c.WriteToIP(wb, c.LocalAddr().(*net.IPAddr)); err != nil {
+-		t.Errorf("net.IPConn.WriteToIP failed: %v", err)
+-		return
++	if _, err := c.WriteToIP(wb, c.LocalAddr().(*IPAddr)); err != nil {
++		t.Fatalf("IPConn.WriteToIP failed: %v", err)
+ 	}
+ 	if _, _, err := c.ReadFromIP(rb); err != nil {
+-		t.Errorf("net.IPConn.ReadFromIP failed: %v", err)
+-		return
++		t.Fatalf("IPConn.ReadFromIP failed: %v", err)
+ 	}
+-	if _, _, err := c.WriteMsgIP(wb, nil, c.LocalAddr().(*net.IPAddr)); err != nil {
+-		condErrorf(t, "net.UDPConn.WriteMsgIP failed: %v", err)
+-		return
++	if _, _, err := c.WriteMsgIP(wb, nil, c.LocalAddr().(*IPAddr)); err != nil {
++		condFatalf(t, "IPConn.WriteMsgIP failed: %v", err)
+ 	}
+ 	if _, _, _, _, err := c.ReadMsgIP(rb, nil); err != nil {
+-		condErrorf(t, "net.UDPConn.ReadMsgIP failed: %v", err)
+-		return
++		condFatalf(t, "IPConn.ReadMsgIP failed: %v", err)
+ 	}
+ 
+ 	if f, err := c.File(); err != nil {
+-		condErrorf(t, "net.IPConn.File failed: %v", err)
+-		return
++		condFatalf(t, "IPConn.File failed: %v", err)
+ 	} else {
+ 		f.Close()
+ 	}
+@@ -210,44 +222,40 @@
+ func TestUnixListenerSpecificMethods(t *testing.T) {
+ 	switch runtime.GOOS {
+ 	case "plan9", "windows":
+-		t.Skipf("skipping read test on %q", runtime.GOOS)
++		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 
+-	p := "/tmp/gotest.net"
+-	os.Remove(p)
+-	la, err := net.ResolveUnixAddr("unix", p)
++	addr := testUnixAddr()
++	la, err := ResolveUnixAddr("unix", addr)
+ 	if err != nil {
+-		t.Fatalf("net.ResolveUnixAddr failed: %v", err)
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
+ 	}
+-	ln, err := net.ListenUnix("unix", la)
++	ln, err := ListenUnix("unix", la)
+ 	if err != nil {
+-		t.Fatalf("net.ListenUnix failed: %v", err)
++		t.Fatalf("ListenUnix failed: %v", err)
+ 	}
++	defer ln.Close()
++	defer os.Remove(addr)
+ 	ln.Addr()
+ 	ln.SetDeadline(time.Now().Add(30 * time.Nanosecond))
+-	defer ln.Close()
+-	defer os.Remove(p)
+ 
+ 	if c, err := ln.Accept(); err != nil {
+-		if !err.(net.Error).Timeout() {
+-			t.Errorf("net.TCPListener.AcceptTCP failed: %v", err)
+-			return
++		if !err.(Error).Timeout() {
++			t.Fatalf("UnixListener.Accept failed: %v", err)
+ 		}
+ 	} else {
+ 		c.Close()
+ 	}
+ 	if c, err := ln.AcceptUnix(); err != nil {
+-		if !err.(net.Error).Timeout() {
+-			t.Errorf("net.TCPListener.AcceptTCP failed: %v", err)
+-			return
++		if !err.(Error).Timeout() {
++			t.Fatalf("UnixListener.AcceptUnix failed: %v", err)
+ 		}
+ 	} else {
+ 		c.Close()
+ 	}
+ 
+ 	if f, err := ln.File(); err != nil {
+-		t.Errorf("net.UnixListener.File failed: %v", err)
+-		return
++		t.Fatalf("UnixListener.File failed: %v", err)
+ 	} else {
+ 		f.Close()
+ 	}
+@@ -259,145 +267,94 @@
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 
+-	p1, p2, p3 := "/tmp/gotest.net1", "/tmp/gotest.net2", "/tmp/gotest.net3"
+-	os.Remove(p1)
+-	os.Remove(p2)
+-	os.Remove(p3)
++	addr1, addr2, addr3 := testUnixAddr(), testUnixAddr(), testUnixAddr()
+ 
+-	a1, err := net.ResolveUnixAddr("unixgram", p1)
++	a1, err := ResolveUnixAddr("unixgram", addr1)
+ 	if err != nil {
+-		t.Fatalf("net.ResolveUnixAddr failed: %v", err)
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
+ 	}
+-	c1, err := net.DialUnix("unixgram", a1, nil)
++	c1, err := DialUnix("unixgram", a1, nil)
+ 	if err != nil {
+-		t.Fatalf("net.DialUnix failed: %v", err)
++		t.Fatalf("DialUnix failed: %v", err)
+ 	}
++	defer c1.Close()
++	defer os.Remove(addr1)
+ 	c1.LocalAddr()
+ 	c1.RemoteAddr()
+-	c1.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c1.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c1.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
++	c1.SetDeadline(time.Now().Add(someTimeout))
++	c1.SetReadDeadline(time.Now().Add(someTimeout))
++	c1.SetWriteDeadline(time.Now().Add(someTimeout))
+ 	c1.SetReadBuffer(2048)
+ 	c1.SetWriteBuffer(2048)
+-	defer c1.Close()
+-	defer os.Remove(p1)
+ 
+-	a2, err := net.ResolveUnixAddr("unixgram", p2)
++	a2, err := ResolveUnixAddr("unixgram", addr2)
+ 	if err != nil {
+-		t.Errorf("net.ResolveUnixAddr failed: %v", err)
+-		return
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
+ 	}
+-	c2, err := net.DialUnix("unixgram", a2, nil)
++	c2, err := DialUnix("unixgram", a2, nil)
+ 	if err != nil {
+-		t.Errorf("net.DialUnix failed: %v", err)
+-		return
++		t.Fatalf("DialUnix failed: %v", err)
+ 	}
++	defer c2.Close()
++	defer os.Remove(addr2)
+ 	c2.LocalAddr()
+ 	c2.RemoteAddr()
+-	c2.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c2.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c2.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
++	c2.SetDeadline(time.Now().Add(someTimeout))
++	c2.SetReadDeadline(time.Now().Add(someTimeout))
++	c2.SetWriteDeadline(time.Now().Add(someTimeout))
+ 	c2.SetReadBuffer(2048)
+ 	c2.SetWriteBuffer(2048)
+-	defer c2.Close()
+-	defer os.Remove(p2)
+ 
+-	a3, err := net.ResolveUnixAddr("unixgram", p3)
++	a3, err := ResolveUnixAddr("unixgram", addr3)
+ 	if err != nil {
+-		t.Errorf("net.ResolveUnixAddr failed: %v", err)
+-		return
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
+ 	}
+-	c3, err := net.ListenUnixgram("unixgram", a3)
++	c3, err := ListenUnixgram("unixgram", a3)
+ 	if err != nil {
+-		t.Errorf("net.ListenUnixgram failed: %v", err)
+-		return
++		t.Fatalf("ListenUnixgram failed: %v", err)
+ 	}
++	defer c3.Close()
++	defer os.Remove(addr3)
+ 	c3.LocalAddr()
+ 	c3.RemoteAddr()
+-	c3.SetDeadline(time.Now().Add(100 * time.Millisecond))
+-	c3.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
+-	c3.SetWriteDeadline(time.Now().Add(100 * time.Millisecond))
++	c3.SetDeadline(time.Now().Add(someTimeout))
++	c3.SetReadDeadline(time.Now().Add(someTimeout))
++	c3.SetWriteDeadline(time.Now().Add(someTimeout))
+ 	c3.SetReadBuffer(2048)
+ 	c3.SetWriteBuffer(2048)
+-	defer c3.Close()
+-	defer os.Remove(p3)
+ 
+ 	wb := []byte("UNIXCONN TEST")
+ 	rb1 := make([]byte, 128)
+ 	rb2 := make([]byte, 128)
+ 	rb3 := make([]byte, 128)
+ 	if _, _, err := c1.WriteMsgUnix(wb, nil, a2); err != nil {
+-		t.Errorf("net.UnixConn.WriteMsgUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.WriteMsgUnix failed: %v", err)
+ 	}
+ 	if _, _, _, _, err := c2.ReadMsgUnix(rb2, nil); err != nil {
+-		t.Errorf("net.UnixConn.ReadMsgUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.ReadMsgUnix failed: %v", err)
+ 	}
+ 	if _, err := c2.WriteToUnix(wb, a1); err != nil {
+-		t.Errorf("net.UnixConn.WriteToUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.WriteToUnix failed: %v", err)
+ 	}
+ 	if _, _, err := c1.ReadFromUnix(rb1); err != nil {
+-		t.Errorf("net.UnixConn.ReadFromUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.ReadFromUnix failed: %v", err)
+ 	}
+ 	if _, err := c3.WriteToUnix(wb, a1); err != nil {
+-		t.Errorf("net.UnixConn.WriteToUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.WriteToUnix failed: %v", err)
+ 	}
+ 	if _, _, err := c1.ReadFromUnix(rb1); err != nil {
+-		t.Errorf("net.UnixConn.ReadFromUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.ReadFromUnix failed: %v", err)
+ 	}
+ 	if _, err := c2.WriteToUnix(wb, a3); err != nil {
+-		t.Errorf("net.UnixConn.WriteToUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.WriteToUnix failed: %v", err)
+ 	}
+ 	if _, _, err := c3.ReadFromUnix(rb3); err != nil {
+-		t.Errorf("net.UnixConn.ReadFromUnix failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.ReadFromUnix failed: %v", err)
+ 	}
+ 
+ 	if f, err := c1.File(); err != nil {
+-		t.Errorf("net.UnixConn.File failed: %v", err)
+-		return
++		t.Fatalf("UnixConn.File failed: %v", err)
+ 	} else {
+ 		f.Close()
+ 	}
+ }
+-
+-func newICMPEchoRequest(id, seqnum, msglen int, filler []byte) []byte {
+-	b := newICMPInfoMessage(id, seqnum, msglen, filler)
+-	b[0] = 8
+-	// calculate ICMP checksum
+-	cklen := len(b)
+-	s := uint32(0)
+-	for i := 0; i < cklen-1; i += 2 {
+-		s += uint32(b[i+1])<<8 | uint32(b[i])
+-	}
+-	if cklen&1 == 1 {
+-		s += uint32(b[cklen-1])
+-	}
+-	s = (s >> 16) + (s & 0xffff)
+-	s = s + (s >> 16)
+-	// place checksum back in header; using ^= avoids the
+-	// assumption the checksum bytes are zero
+-	b[2] ^= byte(^s & 0xff)
+-	b[3] ^= byte(^s >> 8)
+-	return b
+-}
+-
+-func newICMPInfoMessage(id, seqnum, msglen int, filler []byte) []byte {
+-	b := make([]byte, msglen)
+-	copy(b[8:], bytes.Repeat(filler, (msglen-8)/len(filler)+1))
+-	b[0] = 0                   // type
+-	b[1] = 0                   // code
+-	b[2] = 0                   // checksum
+-	b[3] = 0                   // checksum
+-	b[4] = byte(id >> 8)       // identifier
+-	b[5] = byte(id & 0xff)     // identifier
+-	b[6] = byte(seqnum >> 8)   // sequence number
+-	b[7] = byte(seqnum & 0xff) // sequence number
+-	return b
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/rpc/client.go gcc-4.8.1/libgo/go/net/rpc/client.go
+--- gcc-4.8.1.orig/libgo/go/net/rpc/client.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/rpc/client.go	2013-07-16 01:55:04.520470000 -0500
+@@ -71,7 +71,7 @@
+ 
+ 	// Register this call.
+ 	client.mutex.Lock()
+-	if client.shutdown {
++	if client.shutdown || client.closing {
+ 		call.Error = ErrShutdown
+ 		client.mutex.Unlock()
+ 		call.done()
+@@ -105,9 +105,6 @@
+ 		response = Response{}
+ 		err = client.codec.ReadResponseHeader(&response)
+ 		if err != nil {
+-			if err == io.EOF && !client.closing {
+-				err = io.ErrUnexpectedEOF
+-			}
+ 			break
+ 		}
+ 		seq := response.Seq
+@@ -150,6 +147,13 @@
+ 	client.mutex.Lock()
+ 	client.shutdown = true
+ 	closing := client.closing
++	if err == io.EOF {
++		if closing {
++			err = ErrShutdown
++		} else {
++			err = io.ErrUnexpectedEOF
++		}
++	}
+ 	for _, call := range client.pending {
+ 		call.Error = err
+ 		call.done()
+diff -Naur gcc-4.8.1.orig/libgo/go/net/rpc/jsonrpc/all_test.go gcc-4.8.1/libgo/go/net/rpc/jsonrpc/all_test.go
+--- gcc-4.8.1.orig/libgo/go/net/rpc/jsonrpc/all_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/rpc/jsonrpc/all_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"errors"
+ 	"fmt"
+ 	"io"
++	"io/ioutil"
+ 	"net"
+ 	"net/rpc"
+ 	"testing"
+@@ -185,6 +186,22 @@
+ 	ServeConn(srv)                 // must return, not loop
+ }
+ 
++func TestMalformedOutput(t *testing.T) {
++	cli, srv := net.Pipe()
++	go srv.Write([]byte(`{"id":0,"result":null,"error":null}`))
++	go ioutil.ReadAll(srv)
++
++	client := NewClient(cli)
++	defer client.Close()
++
++	args := &Args{7, 8}
++	reply := new(Reply)
++	err := client.Call("Arith.Add", args, reply)
++	if err == nil {
++		t.Error("expected error")
++	}
++}
++
+ func TestUnexpectedError(t *testing.T) {
+ 	cli, srv := myPipe()
+ 	go cli.PipeWriter.CloseWithError(errors.New("unexpected error!")) // reader will get this error
+diff -Naur gcc-4.8.1.orig/libgo/go/net/rpc/jsonrpc/client.go gcc-4.8.1/libgo/go/net/rpc/jsonrpc/client.go
+--- gcc-4.8.1.orig/libgo/go/net/rpc/jsonrpc/client.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/rpc/jsonrpc/client.go	2013-07-16 01:55:04.520470000 -0500
+@@ -83,7 +83,7 @@
+ 
+ 	r.Error = ""
+ 	r.Seq = c.resp.Id
+-	if c.resp.Error != nil {
++	if c.resp.Error != nil || c.resp.Result == nil {
+ 		x, ok := c.resp.Error.(string)
+ 		if !ok {
+ 			return fmt.Errorf("invalid error %v", c.resp.Error)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/rpc/server_test.go gcc-4.8.1/libgo/go/net/rpc/server_test.go
+--- gcc-4.8.1.orig/libgo/go/net/rpc/server_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/rpc/server_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -399,12 +399,10 @@
+ 
+ func (WriteFailCodec) ReadResponseHeader(*Response) error {
+ 	select {}
+-	panic("unreachable")
+ }
+ 
+ func (WriteFailCodec) ReadResponseBody(interface{}) error {
+ 	select {}
+-	panic("unreachable")
+ }
+ 
+ func (WriteFailCodec) Close() error {
+@@ -445,8 +443,7 @@
+ 	return DialHTTP("tcp", httpServerAddr)
+ }
+ 
+-func countMallocs(dial func() (*Client, error), t *testing.T) uint64 {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++func countMallocs(dial func() (*Client, error), t *testing.T) float64 {
+ 	once.Do(startServer)
+ 	client, err := dial()
+ 	if err != nil {
+@@ -454,11 +451,7 @@
+ 	}
+ 	args := &Args{7, 8}
+ 	reply := new(Reply)
+-	memstats := new(runtime.MemStats)
+-	runtime.ReadMemStats(memstats)
+-	mallocs := 0 - memstats.Mallocs
+-	const count = 100
+-	for i := 0; i < count; i++ {
++	return testing.AllocsPerRun(100, func() {
+ 		err := client.Call("Arith.Add", args, reply)
+ 		if err != nil {
+ 			t.Errorf("Add: expected no error but got string %q", err.Error())
+@@ -466,18 +459,21 @@
+ 		if reply.C != args.A+args.B {
+ 			t.Errorf("Add: expected %d got %d", reply.C, args.A+args.B)
+ 		}
+-	}
+-	runtime.ReadMemStats(memstats)
+-	mallocs += memstats.Mallocs
+-	return mallocs / count
++	})
+ }
+ 
+ func TestCountMallocs(t *testing.T) {
+-	fmt.Printf("mallocs per rpc round trip: %d\n", countMallocs(dialDirect, t))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++	fmt.Printf("mallocs per rpc round trip: %v\n", countMallocs(dialDirect, t))
+ }
+ 
+ func TestCountMallocsOverHTTP(t *testing.T) {
+-	fmt.Printf("mallocs per HTTP rpc round trip: %d\n", countMallocs(dialHTTP, t))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++	fmt.Printf("mallocs per HTTP rpc round trip: %v\n", countMallocs(dialHTTP, t))
+ }
+ 
+ type writeCrasher struct {
+@@ -532,6 +528,23 @@
+ 	}
+ }
+ 
++func TestErrorAfterClientClose(t *testing.T) {
++	once.Do(startServer)
++
++	client, err := dialHTTP()
++	if err != nil {
++		t.Fatalf("dialing: %v", err)
++	}
++	err = client.Close()
++	if err != nil {
++		t.Fatal("close error:", err)
++	}
++	err = client.Call("Arith.Add", &Args{7, 9}, new(Reply))
++	if err != ErrShutdown {
++		t.Errorf("Forever: expected ErrShutdown got %v", err)
++	}
++}
++
+ func benchmarkEndToEnd(dial func() (*Client, error), b *testing.B) {
+ 	b.StopTimer()
+ 	once.Do(startServer)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sendfile_freebsd.go gcc-4.8.1/libgo/go/net/sendfile_freebsd.go
+--- gcc-4.8.1.orig/libgo/go/net/sendfile_freebsd.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sendfile_freebsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -83,7 +83,7 @@
+ 			break
+ 		}
+ 		if err1 == syscall.EAGAIN {
+-			if err1 = c.pollServer.WaitWrite(c); err1 == nil {
++			if err1 = c.pd.WaitWrite(); err1 == nil {
+ 				continue
+ 			}
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sendfile_linux.go gcc-4.8.1/libgo/go/net/sendfile_linux.go
+--- gcc-4.8.1.orig/libgo/go/net/sendfile_linux.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sendfile_linux.go	2013-07-16 01:55:04.520470000 -0500
+@@ -59,7 +59,7 @@
+ 			break
+ 		}
+ 		if err1 == syscall.EAGAIN {
+-			if err1 = c.pollServer.WaitWrite(c); err1 == nil {
++			if err1 = c.pd.WaitWrite(); err1 == nil {
+ 				continue
+ 			}
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/server_test.go gcc-4.8.1/libgo/go/net/server_test.go
+--- gcc-4.8.1.orig/libgo/go/net/server_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/server_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ 	"io"
+ 	"os"
+ 	"runtime"
++	"strconv"
+ 	"testing"
+ 	"time"
+ )
+@@ -41,6 +42,12 @@
+ 	return false
+ }
+ 
++func tempfile(filename string) string {
++	// use /tmp in case it is prohibited to create
++	// UNIX sockets in TMPDIR
++	return "/tmp/" + filename + "." + strconv.Itoa(os.Getpid())
++}
++
+ var streamConnServerTests = []struct {
+ 	snet    string // server side
+ 	saddr   string
+@@ -86,7 +93,7 @@
+ 
+ 	{snet: "tcp6", saddr: "[::1]", cnet: "tcp6", caddr: "[::1]", ipv6: true},
+ 
+-	{snet: "unix", saddr: "/tmp/gotest1.net", cnet: "unix", caddr: "/tmp/gotest1.net.local"},
++	{snet: "unix", saddr: tempfile("gotest1.net"), cnet: "unix", caddr: tempfile("gotest1.net.local")},
+ 	{snet: "unix", saddr: "@gotest2/net", cnet: "unix", caddr: "@gotest2/net.local", linux: true},
+ }
+ 
+@@ -113,8 +120,7 @@
+ 		case "tcp", "tcp4", "tcp6":
+ 			_, port, err := SplitHostPort(taddr)
+ 			if err != nil {
+-				t.Errorf("SplitHostPort(%q) failed: %v", taddr, err)
+-				return
++				t.Fatalf("SplitHostPort(%q) failed: %v", taddr, err)
+ 			}
+ 			taddr = tt.caddr + ":" + port
+ 		}
+@@ -136,7 +142,7 @@
+ 	caddr string // client address
+ 	empty bool   // test with empty data
+ }{
+-	{net: "unixpacket", saddr: "/tmp/gotest3.net", caddr: "/tmp/gotest3.net.local"},
++	{net: "unixpacket", saddr: tempfile("/gotest3.net"), caddr: tempfile("gotest3.net.local")},
+ 	{net: "unixpacket", saddr: "@gotest4/net", caddr: "@gotest4/net.local"},
+ }
+ 
+@@ -169,11 +175,11 @@
+ }
+ 
+ func runStreamConnServer(t *testing.T, net, laddr string, listening chan<- string, done chan<- int) {
++	defer close(done)
+ 	l, err := Listen(net, laddr)
+ 	if err != nil {
+ 		t.Errorf("Listen(%q, %q) failed: %v", net, laddr, err)
+ 		listening <- "<nil>"
+-		done <- 1
+ 		return
+ 	}
+ 	defer l.Close()
+@@ -188,13 +194,14 @@
+ 			}
+ 			rw.Write(buf[0:n])
+ 		}
+-		done <- 1
++		close(done)
+ 	}
+ 
+ run:
+ 	for {
+ 		c, err := l.Accept()
+ 		if err != nil {
++			t.Logf("Accept failed: %v", err)
+ 			continue run
+ 		}
+ 		echodone := make(chan int)
+@@ -203,14 +210,12 @@
+ 		c.Close()
+ 		break run
+ 	}
+-	done <- 1
+ }
+ 
+ func runStreamConnClient(t *testing.T, net, taddr string, isEmpty bool) {
+ 	c, err := Dial(net, taddr)
+ 	if err != nil {
+-		t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err)
+-		return
++		t.Fatalf("Dial(%q, %q) failed: %v", net, taddr, err)
+ 	}
+ 	defer c.Close()
+ 	c.SetReadDeadline(time.Now().Add(1 * time.Second))
+@@ -220,14 +225,12 @@
+ 		wb = []byte("StreamConnClient by Dial\n")
+ 	}
+ 	if n, err := c.Write(wb); err != nil || n != len(wb) {
+-		t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
+-		return
++		t.Fatalf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
+ 	}
+ 
+ 	rb := make([]byte, 1024)
+ 	if n, err := c.Read(rb[0:]); err != nil || n != len(wb) {
+-		t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
+-		return
++		t.Fatalf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
+ 	}
+ 
+ 	// Send explicit ending for unixpacket.
+@@ -298,10 +301,10 @@
+ 	{snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, empty: true},
+ 	{snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, dial: true, empty: true},
+ 
+-	{snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local"},
+-	{snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true},
+-	{snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", empty: true},
+-	{snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true, empty: true},
++	{snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local")},
++	{snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), dial: true},
++	{snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), empty: true},
++	{snet: "unixgram", saddr: tempfile("gotest5.net"), cnet: "unixgram", caddr: tempfile("gotest5.net.local"), dial: true, empty: true},
+ 
+ 	{snet: "unixgram", saddr: "@gotest6/net", cnet: "unixgram", caddr: "@gotest6/net.local", linux: true},
+ }
+@@ -333,8 +336,7 @@
+ 		case "udp", "udp4", "udp6":
+ 			_, port, err := SplitHostPort(taddr)
+ 			if err != nil {
+-				t.Errorf("SplitHostPort(%q) failed: %v", taddr, err)
+-				return
++				t.Fatalf("SplitHostPort(%q) failed: %v", taddr, err)
+ 			}
+ 			taddr = tt.caddr + ":" + port
+ 			tt.caddr += ":0"
+@@ -397,14 +399,12 @@
+ 	case "udp", "udp4", "udp6":
+ 		c, err = Dial(net, taddr)
+ 		if err != nil {
+-			t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err)
+-			return
++			t.Fatalf("Dial(%q, %q) failed: %v", net, taddr, err)
+ 		}
+ 	case "unixgram":
+-		c, err = DialUnix(net, &UnixAddr{laddr, net}, &UnixAddr{taddr, net})
++		c, err = DialUnix(net, &UnixAddr{Name: laddr, Net: net}, &UnixAddr{Name: taddr, Net: net})
+ 		if err != nil {
+-			t.Errorf("DialUnix(%q, {%q, %q}) failed: %v", net, laddr, taddr, err)
+-			return
++			t.Fatalf("DialUnix(%q, {%q, %q}) failed: %v", net, laddr, taddr, err)
+ 		}
+ 	}
+ 	defer c.Close()
+@@ -415,14 +415,12 @@
+ 		wb = []byte("DatagramConnClient by Dial\n")
+ 	}
+ 	if n, err := c.Write(wb[0:]); err != nil || n != len(wb) {
+-		t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
+-		return
++		t.Fatalf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb))
+ 	}
+ 
+ 	rb := make([]byte, 1024)
+ 	if n, err := c.Read(rb[0:]); err != nil || n != len(wb) {
+-		t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
+-		return
++		t.Fatalf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb))
+ 	}
+ }
+ 
+@@ -433,20 +431,17 @@
+ 	case "udp", "udp4", "udp6":
+ 		ra, err = ResolveUDPAddr(net, taddr)
+ 		if err != nil {
+-			t.Errorf("ResolveUDPAddr(%q, %q) failed: %v", net, taddr, err)
+-			return
++			t.Fatalf("ResolveUDPAddr(%q, %q) failed: %v", net, taddr, err)
+ 		}
+ 	case "unixgram":
+ 		ra, err = ResolveUnixAddr(net, taddr)
+ 		if err != nil {
+-			t.Errorf("ResolveUxixAddr(%q, %q) failed: %v", net, taddr, err)
+-			return
++			t.Fatalf("ResolveUxixAddr(%q, %q) failed: %v", net, taddr, err)
+ 		}
+ 	}
+ 	c, err := ListenPacket(net, laddr)
+ 	if err != nil {
+-		t.Errorf("ListenPacket(%q, %q) faild: %v", net, laddr, err)
+-		return
++		t.Fatalf("ListenPacket(%q, %q) faild: %v", net, laddr, err)
+ 	}
+ 	defer c.Close()
+ 	c.SetReadDeadline(time.Now().Add(1 * time.Second))
+@@ -456,13 +451,11 @@
+ 		wb = []byte("DatagramPacketConnClient by ListenPacket\n")
+ 	}
+ 	if n, err := c.WriteTo(wb[0:], ra); err != nil || n != len(wb) {
+-		t.Errorf("WriteTo(%v) failed: %v, %v; want %v, <nil>", ra, n, err, len(wb))
+-		return
++		t.Fatalf("WriteTo(%v) failed: %v, %v; want %v, <nil>", ra, n, err, len(wb))
+ 	}
+ 
+ 	rb := make([]byte, 1024)
+ 	if n, _, err := c.ReadFrom(rb[0:]); err != nil || n != len(wb) {
+-		t.Errorf("ReadFrom failed: %v, %v; want %v, <nil>", n, err, len(wb))
+-		return
++		t.Fatalf("ReadFrom failed: %v, %v; want %v, <nil>", n, err, len(wb))
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/smtp/auth.go gcc-4.8.1/libgo/go/net/smtp/auth.go
+--- gcc-4.8.1.orig/libgo/go/net/smtp/auth.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/smtp/auth.go	2013-07-16 01:55:04.520470000 -0500
+@@ -54,7 +54,16 @@
+ 
+ func (a *plainAuth) Start(server *ServerInfo) (string, []byte, error) {
+ 	if !server.TLS {
+-		return "", nil, errors.New("unencrypted connection")
++		advertised := false
++		for _, mechanism := range server.Auth {
++			if mechanism == "PLAIN" {
++				advertised = true
++				break
++			}
++		}
++		if !advertised {
++			return "", nil, errors.New("unencrypted connection")
++		}
+ 	}
+ 	if server.Name != a.host {
+ 		return "", nil, errors.New("wrong host name")
+diff -Naur gcc-4.8.1.orig/libgo/go/net/smtp/smtp_test.go gcc-4.8.1/libgo/go/net/smtp/smtp_test.go
+--- gcc-4.8.1.orig/libgo/go/net/smtp/smtp_test.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/smtp/smtp_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -57,6 +57,41 @@
+ 	}
+ }
+ 
++func TestAuthPlain(t *testing.T) {
++	auth := PlainAuth("foo", "bar", "baz", "servername")
++
++	tests := []struct {
++		server *ServerInfo
++		err    string
++	}{
++		{
++			server: &ServerInfo{Name: "servername", TLS: true},
++		},
++		{
++			// Okay; explicitly advertised by server.
++			server: &ServerInfo{Name: "servername", Auth: []string{"PLAIN"}},
++		},
++		{
++			server: &ServerInfo{Name: "servername", Auth: []string{"CRAM-MD5"}},
++			err:    "unencrypted connection",
++		},
++		{
++			server: &ServerInfo{Name: "attacker", TLS: true},
++			err:    "wrong host name",
++		},
++	}
++	for i, tt := range tests {
++		_, _, err := auth.Start(tt.server)
++		got := ""
++		if err != nil {
++			got = err.Error()
++		}
++		if got != tt.err {
++			t.Errorf("%d. got error = %q; want %q", i, got, tt.err)
++		}
++	}
++}
++
+ type faker struct {
+ 	io.ReadWriter
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_bsd.go gcc-4.8.1/libgo/go/net/sock_bsd.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_bsd.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_bsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd netbsd openbsd
+ 
+-// Sockets for BSD variants
+-
+ package net
+ 
+ import (
+@@ -29,34 +27,11 @@
+ 	if n == 0 || err != nil {
+ 		return syscall.SOMAXCONN
+ 	}
+-	return int(n)
+-}
+-
+-func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
+-	a := toAddr(la)
+-	if a == nil {
+-		return la, nil
+-	}
+-	switch v := a.(type) {
+-	case *TCPAddr, *UnixAddr:
+-		err := setDefaultListenerSockopts(s)
+-		if err != nil {
+-			return nil, err
+-		}
+-	case *UDPAddr:
+-		if v.IP.IsMulticast() {
+-			err := setDefaultMulticastSockopts(s)
+-			if err != nil {
+-				return nil, err
+-			}
+-			switch f {
+-			case syscall.AF_INET:
+-				v.IP = IPv4zero
+-			case syscall.AF_INET6:
+-				v.IP = IPv6unspecified
+-			}
+-			return v.sockaddr(f)
+-		}
++	// FreeBSD stores the backlog in a uint16, as does Linux.
++	// Assume the other BSDs do too. Truncate number to avoid wrapping.
++	// See issue 5030.
++	if n > 1<<16-1 {
++		n = 1<<16 - 1
+ 	}
+-	return la, nil
++	return int(n)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_cloexec.go gcc-4.8.1/libgo/go/net/sock_cloexec.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_cloexec.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_cloexec.go	2013-07-16 01:55:04.520470000 -0500
+@@ -44,20 +44,20 @@
+ func accept(fd int) (int, syscall.Sockaddr, error) {
+ 	nfd, sa, err := syscall.Accept4(fd, syscall.SOCK_NONBLOCK|syscall.SOCK_CLOEXEC)
+ 	// The accept4 system call was introduced in Linux 2.6.28.  If
+-	// we get an ENOSYS error, fall back to using accept.
+-	if err == nil || err != syscall.ENOSYS {
++	// we get an ENOSYS or EINVAL error, fall back to using accept.
++	if err == nil || (err != syscall.ENOSYS && err != syscall.EINVAL) {
+ 		return nfd, sa, err
+ 	}
+ 
+ 	// See ../syscall/exec_unix.go for description of ForkLock.
+-	// It is okay to hold the lock across syscall.Accept
++	// It is probably okay to hold the lock across syscall.Accept
+ 	// because we have put fd.sysfd into non-blocking mode.
+-	syscall.ForkLock.RLock()
++	// However, a call to the File method will put it back into
++	// blocking mode. We can't take that risk, so no use of ForkLock here.
+ 	nfd, sa, err = syscall.Accept(fd)
+ 	if err == nil {
+ 		syscall.CloseOnExec(nfd)
+ 	}
+-	syscall.ForkLock.RUnlock()
+ 	if err != nil {
+ 		return -1, nil, err
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_linux.go gcc-4.8.1/libgo/go/net/sock_linux.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_linux.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_linux.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Sockets for Linux
+-
+ package net
+ 
+ import "syscall"
+@@ -23,34 +21,11 @@
+ 	if n == 0 || !ok {
+ 		return syscall.SOMAXCONN
+ 	}
+-	return n
+-}
+-
+-func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
+-	a := toAddr(la)
+-	if a == nil {
+-		return la, nil
+-	}
+-	switch v := a.(type) {
+-	case *TCPAddr, *UnixAddr:
+-		err := setDefaultListenerSockopts(s)
+-		if err != nil {
+-			return nil, err
+-		}
+-	case *UDPAddr:
+-		if v.IP.IsMulticast() {
+-			err := setDefaultMulticastSockopts(s)
+-			if err != nil {
+-				return nil, err
+-			}
+-			switch f {
+-			case syscall.AF_INET:
+-				v.IP = IPv4zero
+-			case syscall.AF_INET6:
+-				v.IP = IPv6unspecified
+-			}
+-			return v.sockaddr(f)
+-		}
++	// Linux stores the backlog in a uint16.
++	// Truncate number to avoid wrapping.
++	// See issue 5030.
++	if n > 1<<16-1 {
++		n = 1<<16 - 1
+ 	}
+-	return la, nil
++	return n
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sockopt_posix.go gcc-4.8.1/libgo/go/net/sockopt_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/sockopt_posix.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sockopt_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -11,7 +11,6 @@
+ import (
+ 	"os"
+ 	"syscall"
+-	"time"
+ )
+ 
+ // Boolean to int.
+@@ -119,24 +118,6 @@
+ 	return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, syscall.SOL_SOCKET, syscall.SO_SNDBUF, bytes))
+ }
+ 
+-// TODO(dfc) these unused error returns could be removed
+-
+-func setReadDeadline(fd *netFD, t time.Time) error {
+-	fd.rdeadline.setTime(t)
+-	return nil
+-}
+-
+-func setWriteDeadline(fd *netFD, t time.Time) error {
+-	fd.wdeadline.setTime(t)
+-	return nil
+-}
+-
+-func setDeadline(fd *netFD, t time.Time) error {
+-	setReadDeadline(fd, t)
+-	setWriteDeadline(fd, t)
+-	return nil
+-}
+-
+ func setKeepAlive(fd *netFD, keepalive bool) error {
+ 	if err := fd.incref(false); err != nil {
+ 		return err
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sockopt_windows.go gcc-4.8.1/libgo/go/net/sockopt_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/sockopt_windows.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/sockopt_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,6 +9,7 @@
+ import (
+ 	"os"
+ 	"syscall"
++	"time"
+ )
+ 
+ func setDefaultSockopts(s syscall.Handle, f, t int, ipv6only bool) error {
+@@ -47,3 +48,21 @@
+ 	}
+ 	return nil
+ }
++
++// TODO(dfc) these unused error returns could be removed
++
++func setReadDeadline(fd *netFD, t time.Time) error {
++	fd.rdeadline.setTime(t)
++	return nil
++}
++
++func setWriteDeadline(fd *netFD, t time.Time) error {
++	fd.wdeadline.setTime(t)
++	return nil
++}
++
++func setDeadline(fd *netFD, t time.Time) error {
++	setReadDeadline(fd, t)
++	setWriteDeadline(fd, t)
++	return nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_posix.go gcc-4.8.1/libgo/go/net/sock_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_posix.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd linux netbsd openbsd windows
+ 
+-// Sockets
+-
+ package net
+ 
+ import (
+@@ -15,7 +13,7 @@
+ 
+ var listenerBacklog = maxListenerBacklog()
+ 
+-// Generic socket creation.
++// Generic POSIX socket creation.
+ func socket(net string, f, t, p int, ipv6only bool, ulsa, ursa syscall.Sockaddr, deadline time.Time, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) {
+ 	s, err := sysSocket(f, t, p)
+ 	if err != nil {
+@@ -27,7 +25,8 @@
+ 		return nil, err
+ 	}
+ 
+-	if ulsa != nil {
++	// This socket is used by a listener.
++	if ulsa != nil && ursa == nil {
+ 		// We provide a socket that listens to a wildcard
+ 		// address with reusable UDP port when the given ulsa
+ 		// is an appropriate UDP multicast address prefix.
+@@ -39,6 +38,9 @@
+ 			closesocket(s)
+ 			return nil, err
+ 		}
++	}
++
++	if ulsa != nil {
+ 		if err = syscall.Bind(s, ulsa); err != nil {
+ 			closesocket(s)
+ 			return nil, err
+@@ -50,19 +52,27 @@
+ 		return nil, err
+ 	}
+ 
++	// This socket is used by a dialer.
+ 	if ursa != nil {
+-		fd.wdeadline.setTime(deadline)
+-		if err = fd.connect(ursa); err != nil {
+-			closesocket(s)
++		if !deadline.IsZero() {
++			setWriteDeadline(fd, deadline)
++		}
++		if err = fd.connect(ulsa, ursa); err != nil {
++			fd.Close()
+ 			return nil, err
+ 		}
+ 		fd.isConnected = true
+-		fd.wdeadline.set(0)
++		if !deadline.IsZero() {
++			setWriteDeadline(fd, time.Time{})
++		}
+ 	}
+ 
+ 	lsa, _ := syscall.Getsockname(s)
+ 	laddr := toAddr(lsa)
+ 	rsa, _ := syscall.Getpeername(s)
++	if rsa == nil {
++		rsa = ursa
++	}
+ 	raddr := toAddr(rsa)
+ 	fd.setAddr(laddr, raddr)
+ 	return fd, nil
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_solaris.go gcc-4.8.1/libgo/go/net/sock_solaris.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_solaris.go	2012-04-24 23:26:12.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/sock_solaris.go	2013-07-23 15:39:05.853554000 -0500
+@@ -16,32 +16,3 @@
+ 	// The kernel does not track the limit.
+ 	return syscall.SOMAXCONN
+ }
+-
+-func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
+-	a := toAddr(la)
+-	if a == nil {
+-		return la, nil
+-	}
+-	switch v := a.(type) {
+-	case *TCPAddr, *UnixAddr:
+-		err := setDefaultListenerSockopts(s)
+-		if err != nil {
+-			return nil, err
+-		}
+-	case *UDPAddr:
+-		if v.IP.IsMulticast() {
+-			err := setDefaultMulticastSockopts(s)
+-			if err != nil {
+-				return nil, err
+-			}
+-			switch f {
+-			case syscall.AF_INET:
+-				v.IP = IPv4zero
+-			case syscall.AF_INET6:
+-				v.IP = IPv6unspecified
+-			}
+-			return v.sockaddr(f)
+-		}
+-	}
+-	return la, nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_unix.go gcc-4.8.1/libgo/go/net/sock_unix.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_unix.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,36 @@
++// Copyright 2009 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin freebsd linux netbsd openbsd
++
++package net
++
++import "syscall"
++
++func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
++	a := toAddr(la)
++	if a == nil {
++		return la, nil
++	}
++	switch a := a.(type) {
++	case *TCPAddr, *UnixAddr:
++		if err := setDefaultListenerSockopts(s); err != nil {
++			return nil, err
++		}
++	case *UDPAddr:
++		if a.IP.IsMulticast() {
++			if err := setDefaultMulticastSockopts(s); err != nil {
++				return nil, err
++			}
++			switch f {
++			case syscall.AF_INET:
++				a.IP = IPv4zero
++			case syscall.AF_INET6:
++				a.IP = IPv6unspecified
++			}
++			return a.sockaddr(f)
++		}
++	}
++	return la, nil
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sock_windows.go gcc-4.8.1/libgo/go/net/sock_windows.go
+--- gcc-4.8.1.orig/libgo/go/net/sock_windows.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sock_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,14 +2,13 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Sockets for Windows
+-
+ package net
+ 
+ import "syscall"
+ 
+ func maxListenerBacklog() int {
+ 	// TODO: Implement this
++	// NOTE: Never return a number bigger than 1<<16 - 1. See issue 5030.
+ 	return syscall.SOMAXCONN
+ }
+ 
+@@ -18,25 +17,23 @@
+ 	if a == nil {
+ 		return la, nil
+ 	}
+-	switch v := a.(type) {
++	switch a := a.(type) {
+ 	case *TCPAddr, *UnixAddr:
+-		err := setDefaultListenerSockopts(s)
+-		if err != nil {
++		if err := setDefaultListenerSockopts(s); err != nil {
+ 			return nil, err
+ 		}
+ 	case *UDPAddr:
+-		if v.IP.IsMulticast() {
+-			err := setDefaultMulticastSockopts(s)
+-			if err != nil {
++		if a.IP.IsMulticast() {
++			if err := setDefaultMulticastSockopts(s); err != nil {
+ 				return nil, err
+ 			}
+ 			switch f {
+ 			case syscall.AF_INET:
+-				v.IP = IPv4zero
++				a.IP = IPv4zero
+ 			case syscall.AF_INET6:
+-				v.IP = IPv6unspecified
++				a.IP = IPv6unspecified
+ 			}
+-			return v.sockaddr(f)
++			return a.sockaddr(f)
+ 		}
+ 	}
+ 	return la, nil
+diff -Naur gcc-4.8.1.orig/libgo/go/net/sys_cloexec.go gcc-4.8.1/libgo/go/net/sys_cloexec.go
+--- gcc-4.8.1.orig/libgo/go/net/sys_cloexec.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/sys_cloexec.go	2013-07-16 01:55:04.520470000 -0500
+@@ -35,14 +35,14 @@
+ // descriptor as nonblocking and close-on-exec.
+ func accept(fd int) (int, syscall.Sockaddr, error) {
+ 	// See ../syscall/exec_unix.go for description of ForkLock.
+-	// It is okay to hold the lock across syscall.Accept
++	// It is probably okay to hold the lock across syscall.Accept
+ 	// because we have put fd.sysfd into non-blocking mode.
+-	syscall.ForkLock.RLock()
++	// However, a call to the File method will put it back into
++	// blocking mode. We can't take that risk, so no use of ForkLock here.
+ 	nfd, sa, err := syscall.Accept(fd)
+ 	if err == nil {
+ 		syscall.CloseOnExec(nfd)
+ 	}
+-	syscall.ForkLock.RUnlock()
+ 	if err != nil {
+ 		return -1, nil, err
+ 	}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/tcpsock.go gcc-4.8.1/libgo/go/net/tcpsock.go
+--- gcc-4.8.1.orig/libgo/go/net/tcpsock.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/tcpsock.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// TCP sockets
+-
+ package net
+ 
+ // TCPAddr represents the address of a TCP end point.
+@@ -20,14 +18,18 @@
+ 	if a == nil {
+ 		return "<nil>"
+ 	}
++	if a.Zone != "" {
++		return JoinHostPort(a.IP.String()+"%"+a.Zone, itoa(a.Port))
++	}
+ 	return JoinHostPort(a.IP.String(), itoa(a.Port))
+ }
+ 
+-// ResolveTCPAddr parses addr as a TCP address of the form
+-// host:port and resolves domain names or port names to
+-// numeric addresses on the network net, which must be "tcp",
+-// "tcp4" or "tcp6".  A literal IPv6 host address must be
+-// enclosed in square brackets, as in "[::]:80".
++// ResolveTCPAddr parses addr as a TCP address of the form "host:port"
++// or "[ipv6-host%zone]:port" and resolves a pair of domain name and
++// port name on the network net, which must be "tcp", "tcp4" or
++// "tcp6".  A literal address or host name for IPv6 must be enclosed
++// in square brackets, as in "[::1]:80", "[ipv6-host]:http" or
++// "[ipv6-host%zone]:80".
+ func ResolveTCPAddr(net, addr string) (*TCPAddr, error) {
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6":
+diff -Naur gcc-4.8.1.orig/libgo/go/net/tcpsock_plan9.go gcc-4.8.1/libgo/go/net/tcpsock_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/tcpsock_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/tcpsock_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// TCP sockets for Plan 9
+-
+ package net
+ 
+ import (
+@@ -89,7 +87,7 @@
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6":
+ 	default:
+-		return nil, UnknownNetworkError(net)
++		return nil, &OpError{"dial", net, raddr, UnknownNetworkError(net)}
+ 	}
+ 	if raddr == nil {
+ 		return nil, &OpError{"dial", net, nil, errMissingAddress}
+@@ -98,7 +96,7 @@
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return &TCPConn{conn{fd}}, nil
++	return newTCPConn(fd), nil
+ }
+ 
+ // TCPListener is a TCP network listener.  Clients should typically
+@@ -141,7 +139,7 @@
+ 	}
+ 	if _, err := l.fd.ctl.WriteString("hangup"); err != nil {
+ 		l.fd.ctl.Close()
+-		return err
++		return &OpError{"close", l.fd.ctl.Name(), l.fd.laddr, err}
+ 	}
+ 	return l.fd.ctl.Close()
+ }
+@@ -161,17 +159,21 @@
+ // File returns a copy of the underlying os.File, set to blocking
+ // mode.  It is the caller's responsibility to close f when finished.
+ // Closing l does not affect f, and closing f does not affect l.
+-func (l *TCPListener) File() (f *os.File, err error) { return l.fd.dup() }
++//
++// The returned os.File's file descriptor is different from the
++// connection's.  Attempting to change properties of the original
++// using this duplicate may or may not have the desired effect.
++func (l *TCPListener) File() (f *os.File, err error) { return l.dup() }
+ 
+ // ListenTCP announces on the TCP address laddr and returns a TCP
+ // listener.  Net must be "tcp", "tcp4", or "tcp6".  If laddr has a
+-// port of 0, it means to listen on some available port.  The caller
+-// can use l.Addr() to retrieve the chosen address.
++// port of 0, ListenTCP will choose an available port.  The caller can
++// use the Addr method of TCPListener to retrieve the chosen address.
+ func ListenTCP(net string, laddr *TCPAddr) (*TCPListener, error) {
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6":
+ 	default:
+-		return nil, UnknownNetworkError(net)
++		return nil, &OpError{"listen", net, laddr, UnknownNetworkError(net)}
+ 	}
+ 	if laddr == nil {
+ 		laddr = &TCPAddr{}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/tcpsock_posix.go gcc-4.8.1/libgo/go/net/tcpsock_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/tcpsock_posix.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/tcpsock_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd linux netbsd openbsd windows
+ 
+-// TCP sockets
+-
+ package net
+ 
+ import (
+@@ -58,8 +56,8 @@
+ 	return a
+ }
+ 
+-// TCPConn is an implementation of the Conn interface
+-// for TCP network connections.
++// TCPConn is an implementation of the Conn interface for TCP network
++// connections.
+ type TCPConn struct {
+ 	conn
+ }
+@@ -96,17 +94,17 @@
+ 	return c.fd.CloseWrite()
+ }
+ 
+-// SetLinger sets the behavior of Close() on a connection
+-// which still has data waiting to be sent or to be acknowledged.
++// SetLinger sets the behavior of Close() on a connection which still
++// has data waiting to be sent or to be acknowledged.
+ //
+-// If sec < 0 (the default), Close returns immediately and
+-// the operating system finishes sending the data in the background.
++// If sec < 0 (the default), Close returns immediately and the
++// operating system finishes sending the data in the background.
+ //
+ // If sec == 0, Close returns immediately and the operating system
+ // discards any unsent or unacknowledged data.
+ //
+-// If sec > 0, Close blocks for at most sec seconds waiting for
+-// data to be sent and acknowledged.
++// If sec > 0, Close blocks for at most sec seconds waiting for data
++// to be sent and acknowledged.
+ func (c *TCPConn) SetLinger(sec int) error {
+ 	if !c.ok() {
+ 		return syscall.EINVAL
+@@ -124,9 +122,9 @@
+ }
+ 
+ // SetNoDelay controls whether the operating system should delay
+-// packet transmission in hopes of sending fewer packets
+-// (Nagle's algorithm).  The default is true (no delay), meaning
+-// that data is sent as soon as possible after a Write.
++// packet transmission in hopes of sending fewer packets (Nagle's
++// algorithm).  The default is true (no delay), meaning that data is
++// sent as soon as possible after a Write.
+ func (c *TCPConn) SetNoDelay(noDelay bool) error {
+ 	if !c.ok() {
+ 		return syscall.EINVAL
+@@ -135,8 +133,8 @@
+ }
+ 
+ // DialTCP connects to the remote address raddr on the network net,
+-// which must be "tcp", "tcp4", or "tcp6".  If laddr is not nil, it is used
+-// as the local address for the connection.
++// which must be "tcp", "tcp4", or "tcp6".  If laddr is not nil, it is
++// used as the local address for the connection.
+ func DialTCP(net string, laddr, raddr *TCPAddr) (*TCPConn, error) {
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6":
+@@ -216,16 +214,15 @@
+ 	return ok && e.Err == syscall.EADDRNOTAVAIL
+ }
+ 
+-// TCPListener is a TCP network listener.
+-// Clients should typically use variables of type Listener
+-// instead of assuming TCP.
++// TCPListener is a TCP network listener.  Clients should typically
++// use variables of type Listener instead of assuming TCP.
+ type TCPListener struct {
+ 	fd *netFD
+ }
+ 
+-// AcceptTCP accepts the next incoming call and returns the new connection
+-// and the remote address.
+-func (l *TCPListener) AcceptTCP() (c *TCPConn, err error) {
++// AcceptTCP accepts the next incoming call and returns the new
++// connection and the remote address.
++func (l *TCPListener) AcceptTCP() (*TCPConn, error) {
+ 	if l == nil || l.fd == nil {
+ 		return nil, syscall.EINVAL
+ 	}
+@@ -236,14 +233,14 @@
+ 	return newTCPConn(fd), nil
+ }
+ 
+-// Accept implements the Accept method in the Listener interface;
+-// it waits for the next call and returns a generic Conn.
+-func (l *TCPListener) Accept() (c Conn, err error) {
+-	c1, err := l.AcceptTCP()
++// Accept implements the Accept method in the Listener interface; it
++// waits for the next call and returns a generic Conn.
++func (l *TCPListener) Accept() (Conn, error) {
++	c, err := l.AcceptTCP()
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return c1, nil
++	return c, nil
+ }
+ 
+ // Close stops listening on the TCP address.
+@@ -267,15 +264,19 @@
+ 	return setDeadline(l.fd, t)
+ }
+ 
+-// File returns a copy of the underlying os.File, set to blocking mode.
+-// It is the caller's responsibility to close f when finished.
++// File returns a copy of the underlying os.File, set to blocking
++// mode.  It is the caller's responsibility to close f when finished.
+ // Closing l does not affect f, and closing f does not affect l.
++//
++// The returned os.File's file descriptor is different from the
++// connection's.  Attempting to change properties of the original
++// using this duplicate may or may not have the desired effect.
+ func (l *TCPListener) File() (f *os.File, err error) { return l.fd.dup() }
+ 
+-// ListenTCP announces on the TCP address laddr and returns a TCP listener.
+-// Net must be "tcp", "tcp4", or "tcp6".
+-// If laddr has a port of 0, it means to listen on some available port.
+-// The caller can use l.Addr() to retrieve the chosen address.
++// ListenTCP announces on the TCP address laddr and returns a TCP
++// listener.  Net must be "tcp", "tcp4", or "tcp6".  If laddr has a
++// port of 0, ListenTCP will choose an available port.  The caller can
++// use the Addr method of TCPListener to retrieve the chosen address.
+ func ListenTCP(net string, laddr *TCPAddr) (*TCPListener, error) {
+ 	switch net {
+ 	case "tcp", "tcp4", "tcp6":
+@@ -291,7 +292,7 @@
+ 	}
+ 	err = syscall.Listen(fd.sysfd, listenerBacklog)
+ 	if err != nil {
+-		closesocket(fd.sysfd)
++		fd.Close()
+ 		return nil, &OpError{"listen", net, laddr, err}
+ 	}
+ 	return &TCPListener{fd}, nil
+diff -Naur gcc-4.8.1.orig/libgo/go/net/tcp_test.go gcc-4.8.1/libgo/go/net/tcp_test.go
+--- gcc-4.8.1.orig/libgo/go/net/tcp_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/tcp_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,29 +5,58 @@
+ package net
+ 
+ import (
++	"fmt"
+ 	"reflect"
+ 	"runtime"
+ 	"testing"
+ 	"time"
+ )
+ 
+-func BenchmarkTCPOneShot(b *testing.B) {
+-	benchmarkTCP(b, false, false)
++func BenchmarkTCP4OneShot(b *testing.B) {
++	benchmarkTCP(b, false, false, "127.0.0.1:0")
+ }
+ 
+-func BenchmarkTCPOneShotTimeout(b *testing.B) {
+-	benchmarkTCP(b, false, true)
++func BenchmarkTCP4OneShotTimeout(b *testing.B) {
++	benchmarkTCP(b, false, true, "127.0.0.1:0")
+ }
+ 
+-func BenchmarkTCPPersistent(b *testing.B) {
+-	benchmarkTCP(b, true, false)
++func BenchmarkTCP4Persistent(b *testing.B) {
++	benchmarkTCP(b, true, false, "127.0.0.1:0")
+ }
+ 
+-func BenchmarkTCPPersistentTimeout(b *testing.B) {
+-	benchmarkTCP(b, true, true)
++func BenchmarkTCP4PersistentTimeout(b *testing.B) {
++	benchmarkTCP(b, true, true, "127.0.0.1:0")
+ }
+ 
+-func benchmarkTCP(b *testing.B, persistent, timeout bool) {
++func BenchmarkTCP6OneShot(b *testing.B) {
++	if !supportsIPv6 {
++		b.Skip("ipv6 is not supported")
++	}
++	benchmarkTCP(b, false, false, "[::1]:0")
++}
++
++func BenchmarkTCP6OneShotTimeout(b *testing.B) {
++	if !supportsIPv6 {
++		b.Skip("ipv6 is not supported")
++	}
++	benchmarkTCP(b, false, true, "[::1]:0")
++}
++
++func BenchmarkTCP6Persistent(b *testing.B) {
++	if !supportsIPv6 {
++		b.Skip("ipv6 is not supported")
++	}
++	benchmarkTCP(b, true, false, "[::1]:0")
++}
++
++func BenchmarkTCP6PersistentTimeout(b *testing.B) {
++	if !supportsIPv6 {
++		b.Skip("ipv6 is not supported")
++	}
++	benchmarkTCP(b, true, true, "[::1]:0")
++}
++
++func benchmarkTCP(b *testing.B, persistent, timeout bool, laddr string) {
+ 	const msgLen = 512
+ 	conns := b.N
+ 	numConcurrent := runtime.GOMAXPROCS(-1) * 16
+@@ -61,7 +90,7 @@
+ 		}
+ 		return true
+ 	}
+-	ln, err := Listen("tcp", "127.0.0.1:0")
++	ln, err := Listen("tcp", laddr)
+ 	if err != nil {
+ 		b.Fatalf("Listen failed: %v", err)
+ 	}
+@@ -118,24 +147,39 @@
+ 	}
+ }
+ 
+-var resolveTCPAddrTests = []struct {
++type resolveTCPAddrTest struct {
+ 	net     string
+ 	litAddr string
+ 	addr    *TCPAddr
+ 	err     error
+-}{
++}
++
++var resolveTCPAddrTests = []resolveTCPAddrTest{
+ 	{"tcp", "127.0.0.1:0", &TCPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil},
+ 	{"tcp4", "127.0.0.1:65535", &TCPAddr{IP: IPv4(127, 0, 0, 1), Port: 65535}, nil},
+ 
+ 	{"tcp", "[::1]:1", &TCPAddr{IP: ParseIP("::1"), Port: 1}, nil},
+ 	{"tcp6", "[::1]:65534", &TCPAddr{IP: ParseIP("::1"), Port: 65534}, nil},
+ 
++	{"tcp", "[::1%en0]:1", &TCPAddr{IP: ParseIP("::1"), Port: 1, Zone: "en0"}, nil},
++	{"tcp6", "[::1%911]:2", &TCPAddr{IP: ParseIP("::1"), Port: 2, Zone: "911"}, nil},
++
+ 	{"", "127.0.0.1:0", &TCPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil}, // Go 1.0 behavior
+ 	{"", "[::1]:0", &TCPAddr{IP: ParseIP("::1"), Port: 0}, nil},         // Go 1.0 behavior
+ 
+ 	{"http", "127.0.0.1:0", nil, UnknownNetworkError("http")},
+ }
+ 
++func init() {
++	if ifi := loopbackInterface(); ifi != nil {
++		index := fmt.Sprintf("%v", ifi.Index)
++		resolveTCPAddrTests = append(resolveTCPAddrTests, []resolveTCPAddrTest{
++			{"tcp6", "[fe80::1%" + ifi.Name + "]:3", &TCPAddr{IP: ParseIP("fe80::1"), Port: 3, Zone: zoneToString(ifi.Index)}, nil},
++			{"tcp6", "[fe80::1%" + index + "]:4", &TCPAddr{IP: ParseIP("fe80::1"), Port: 4, Zone: index}, nil},
++		}...)
++	}
++}
++
+ func TestResolveTCPAddr(t *testing.T) {
+ 	for _, tt := range resolveTCPAddrTests {
+ 		addr, err := ResolveTCPAddr(tt.net, tt.litAddr)
+@@ -165,14 +209,88 @@
+ 	for _, tt := range tcpListenerNameTests {
+ 		ln, err := ListenTCP(tt.net, tt.laddr)
+ 		if err != nil {
+-			t.Errorf("ListenTCP failed: %v", err)
+-			return
++			t.Fatalf("ListenTCP failed: %v", err)
+ 		}
+ 		defer ln.Close()
+ 		la := ln.Addr()
+ 		if a, ok := la.(*TCPAddr); !ok || a.Port == 0 {
+-			t.Errorf("got %v; expected a proper address with non-zero port number", la)
+-			return
++			t.Fatalf("got %v; expected a proper address with non-zero port number", la)
++		}
++	}
++}
++
++func TestIPv6LinkLocalUnicastTCP(t *testing.T) {
++	if testing.Short() || !*testExternal {
++		t.Skip("skipping test to avoid external network")
++	}
++	if !supportsIPv6 {
++		t.Skip("ipv6 is not supported")
++	}
++	ifi := loopbackInterface()
++	if ifi == nil {
++		t.Skip("loopback interface not found")
++	}
++	laddr := ipv6LinkLocalUnicastAddr(ifi)
++	if laddr == "" {
++		t.Skip("ipv6 unicast address on loopback not found")
++	}
++
++	type test struct {
++		net, addr  string
++		nameLookup bool
++	}
++	var tests = []test{
++		{"tcp", "[" + laddr + "%" + ifi.Name + "]:0", false},
++		{"tcp6", "[" + laddr + "%" + ifi.Name + "]:0", false},
++	}
++	switch runtime.GOOS {
++	case "darwin", "freebsd", "opensbd", "netbsd":
++		tests = append(tests, []test{
++			{"tcp", "[localhost%" + ifi.Name + "]:0", true},
++			{"tcp6", "[localhost%" + ifi.Name + "]:0", true},
++		}...)
++	case "linux":
++		tests = append(tests, []test{
++			{"tcp", "[ip6-localhost%" + ifi.Name + "]:0", true},
++			{"tcp6", "[ip6-localhost%" + ifi.Name + "]:0", true},
++		}...)
++	}
++	for _, tt := range tests {
++		ln, err := Listen(tt.net, tt.addr)
++		if err != nil {
++			// It might return "LookupHost returned no
++			// suitable address" error on some platforms.
++			t.Logf("Listen failed: %v", err)
++			continue
+ 		}
++		defer ln.Close()
++		if la, ok := ln.Addr().(*TCPAddr); !ok || !tt.nameLookup && la.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", la)
++		}
++
++		done := make(chan int)
++		go transponder(t, ln, done)
++
++		c, err := Dial(tt.net, ln.Addr().String())
++		if err != nil {
++			t.Fatalf("Dial failed: %v", err)
++		}
++		defer c.Close()
++		if la, ok := c.LocalAddr().(*TCPAddr); !ok || !tt.nameLookup && la.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", la)
++		}
++		if ra, ok := c.RemoteAddr().(*TCPAddr); !ok || !tt.nameLookup && ra.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", ra)
++		}
++
++		if _, err := c.Write([]byte("TCP OVER IPV6 LINKLOCAL TEST")); err != nil {
++			t.Fatalf("Conn.Write failed: %v", err)
++		}
++		b := make([]byte, 32)
++		if _, err := c.Read(b); err != nil {
++			t.Fatalf("Conn.Read failed: %v", err)
++		}
++
++		<-done
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/textproto/reader.go gcc-4.8.1/libgo/go/net/textproto/reader.go
+--- gcc-4.8.1.orig/libgo/go/net/textproto/reader.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/textproto/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -128,6 +128,17 @@
+ 		return line, nil
+ 	}
+ 
++	// Optimistically assume that we have started to buffer the next line
++	// and it starts with an ASCII letter (the next header key), so we can
++	// avoid copying that buffered data around in memory and skipping over
++	// non-existent whitespace.
++	if r.R.Buffered() > 1 {
++		peek, err := r.R.Peek(1)
++		if err == nil && isASCIILetter(peek[0]) {
++			return trim(line), nil
++		}
++	}
++
+ 	// ReadByte or the next readLineSlice will flush the read buffer;
+ 	// copy the slice into buf.
+ 	r.buf = append(r.buf[:0], trim(line)...)
+@@ -445,7 +456,7 @@
+ //	}
+ //
+ func (r *Reader) ReadMIMEHeader() (MIMEHeader, error) {
+-	m := make(MIMEHeader)
++	m := make(MIMEHeader, 4)
+ 	for {
+ 		kv, err := r.readContinuedLineSlice()
+ 		if len(kv) == 0 {
+@@ -478,7 +489,6 @@
+ 			return m, err
+ 		}
+ 	}
+-	panic("unreachable")
+ }
+ 
+ // CanonicalMIMEHeaderKey returns the canonical format of the
+@@ -564,6 +574,7 @@
+ 	"Content-Length",
+ 	"Content-Transfer-Encoding",
+ 	"Content-Type",
++	"Cookie",
+ 	"Date",
+ 	"Dkim-Signature",
+ 	"Etag",
+diff -Naur gcc-4.8.1.orig/libgo/go/net/textproto/reader_test.go gcc-4.8.1/libgo/go/net/textproto/reader_test.go
+--- gcc-4.8.1.orig/libgo/go/net/textproto/reader_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/textproto/reader_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -290,6 +290,7 @@
+ `, "\n", "\r\n", -1)
+ 
+ func BenchmarkReadMIMEHeader(b *testing.B) {
++	b.ReportAllocs()
+ 	var buf bytes.Buffer
+ 	br := bufio.NewReader(&buf)
+ 	r := NewReader(br)
+@@ -319,6 +320,7 @@
+ }
+ 
+ func BenchmarkUncommon(b *testing.B) {
++	b.ReportAllocs()
+ 	var buf bytes.Buffer
+ 	br := bufio.NewReader(&buf)
+ 	r := NewReader(br)
+diff -Naur gcc-4.8.1.orig/libgo/go/net/textproto/textproto.go gcc-4.8.1/libgo/go/net/textproto/textproto.go
+--- gcc-4.8.1.orig/libgo/go/net/textproto/textproto.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/net/textproto/textproto.go	2013-07-16 01:55:04.520470000 -0500
+@@ -147,3 +147,8 @@
+ func isASCIISpace(b byte) bool {
+ 	return b == ' ' || b == '\t' || b == '\n' || b == '\r'
+ }
++
++func isASCIILetter(b byte) bool {
++	b |= 0x20 // make lower case
++	return 'a' <= b && b <= 'z'
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/timeout_test.go gcc-4.8.1/libgo/go/net/timeout_test.go
+--- gcc-4.8.1.orig/libgo/go/net/timeout_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/timeout_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -420,6 +420,11 @@
+ }
+ 
+ func testVariousDeadlines(t *testing.T, maxProcs int) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
+ 	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(maxProcs))
+ 	ln := newLocalListener(t)
+ 	defer ln.Close()
+@@ -518,11 +523,16 @@
+ // TestReadDeadlineDataAvailable tests that read deadlines work, even
+ // if there's data ready to be read.
+ func TestReadDeadlineDataAvailable(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
+ 	ln := newLocalListener(t)
+ 	defer ln.Close()
+ 
+ 	servec := make(chan copyRes)
+-	const msg = "data client shouldn't read, even though it it'll be waiting"
++	const msg = "data client shouldn't read, even though it'll be waiting"
+ 	go func() {
+ 		c, err := ln.Accept()
+ 		if err != nil {
+@@ -552,6 +562,11 @@
+ // TestWriteDeadlineBufferAvailable tests that write deadlines work, even
+ // if there's buffer space available to write.
+ func TestWriteDeadlineBufferAvailable(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
+ 	ln := newLocalListener(t)
+ 	defer ln.Close()
+ 
+@@ -581,6 +596,64 @@
+ 	}
+ }
+ 
++// TestAcceptDeadlineConnectionAvailable tests that accept deadlines work, even
++// if there's incoming connections available.
++func TestAcceptDeadlineConnectionAvailable(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
++	ln := newLocalListener(t).(*TCPListener)
++	defer ln.Close()
++
++	go func() {
++		c, err := Dial("tcp", ln.Addr().String())
++		if err != nil {
++			t.Fatalf("Dial: %v", err)
++		}
++		defer c.Close()
++		var buf [1]byte
++		c.Read(buf[:]) // block until the connection or listener is closed
++	}()
++	time.Sleep(10 * time.Millisecond)
++	ln.SetDeadline(time.Now().Add(-5 * time.Second)) // in the past
++	c, err := ln.Accept()
++	if err == nil {
++		defer c.Close()
++	}
++	if !isTimeout(err) {
++		t.Fatalf("Accept: got %v; want timeout", err)
++	}
++}
++
++// TestConnectDeadlineInThePast tests that connect deadlines work, even
++// if the connection can be established w/o blocking.
++func TestConnectDeadlineInThePast(t *testing.T) {
++	switch runtime.GOOS {
++	case "plan9":
++		t.Skipf("skipping test on %q", runtime.GOOS)
++	}
++
++	ln := newLocalListener(t).(*TCPListener)
++	defer ln.Close()
++
++	go func() {
++		c, err := ln.Accept()
++		if err == nil {
++			defer c.Close()
++		}
++	}()
++	time.Sleep(10 * time.Millisecond)
++	c, err := DialTimeout("tcp", ln.Addr().String(), -5*time.Second) // in the past
++	if err == nil {
++		defer c.Close()
++	}
++	if !isTimeout(err) {
++		t.Fatalf("DialTimeout: got %v; want timeout", err)
++	}
++}
++
+ // TestProlongTimeout tests concurrent deadline modification.
+ // Known to cause data races in the past.
+ func TestProlongTimeout(t *testing.T) {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/udpsock.go gcc-4.8.1/libgo/go/net/udpsock.go
+--- gcc-4.8.1.orig/libgo/go/net/udpsock.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/udpsock.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// UDP sockets
+-
+ package net
+ 
+ import "errors"
+@@ -24,14 +22,18 @@
+ 	if a == nil {
+ 		return "<nil>"
+ 	}
++	if a.Zone != "" {
++		return JoinHostPort(a.IP.String()+"%"+a.Zone, itoa(a.Port))
++	}
+ 	return JoinHostPort(a.IP.String(), itoa(a.Port))
+ }
+ 
+-// ResolveUDPAddr parses addr as a UDP address of the form
+-// host:port and resolves domain names or port names to
+-// numeric addresses on the network net, which must be "udp",
+-// "udp4" or "udp6".  A literal IPv6 host address must be
+-// enclosed in square brackets, as in "[::]:80".
++// ResolveUDPAddr parses addr as a UDP address of the form "host:port"
++// or "[ipv6-host%zone]:port" and resolves a pair of domain name and
++// port name on the network net, which must be "udp", "udp4" or
++// "udp6".  A literal address or host name for IPv6 must be enclosed
++// in square brackets, as in "[::1]:80", "[ipv6-host]:http" or
++// "[ipv6-host%zone]:80".
+ func ResolveUDPAddr(net, addr string) (*UDPAddr, error) {
+ 	switch net {
+ 	case "udp", "udp4", "udp6":
+diff -Naur gcc-4.8.1.orig/libgo/go/net/udpsock_plan9.go gcc-4.8.1/libgo/go/net/udpsock_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/udpsock_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/udpsock_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// UDP sockets for Plan 9
+-
+ package net
+ 
+ import (
+@@ -13,12 +11,14 @@
+ 	"time"
+ )
+ 
+-// UDPConn is the implementation of the Conn and PacketConn
+-// interfaces for UDP network connections.
++// UDPConn is the implementation of the Conn and PacketConn interfaces
++// for UDP network connections.
+ type UDPConn struct {
+ 	conn
+ }
+ 
++func newUDPConn(fd *netFD) *UDPConn { return &UDPConn{conn{fd}} }
++
+ // ReadFromUDP reads a UDP packet from c, copying the payload into b.
+ // It returns the number of bytes copied into b and the return address
+ // that was on the packet.
+@@ -27,15 +27,9 @@
+ // Timeout() == true after a fixed time limit; see SetDeadline and
+ // SetReadDeadline.
+ func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error) {
+-	if !c.ok() {
++	if !c.ok() || c.fd.data == nil {
+ 		return 0, nil, syscall.EINVAL
+ 	}
+-	if c.fd.data == nil {
+-		c.fd.data, err = os.OpenFile(c.fd.dir+"/data", os.O_RDWR, 0)
+-		if err != nil {
+-			return 0, nil, err
+-		}
+-	}
+ 	buf := make([]byte, udpHeaderSize+len(b))
+ 	m, err := c.fd.data.Read(buf)
+ 	if err != nil {
+@@ -60,7 +54,7 @@
+ }
+ 
+ // ReadMsgUDP reads a packet from c, copying the payload into b and
+-// the associdated out-of-band data into oob.  It returns the number
++// the associated out-of-band data into oob.  It returns the number
+ // of bytes copied into b, the number of bytes copied into oob, the
+ // flags that were set on the packet and the source address of the
+ // packet.
+@@ -76,16 +70,9 @@
+ // SetWriteDeadline.  On packet-oriented connections, write timeouts
+ // are rare.
+ func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error) {
+-	if !c.ok() {
++	if !c.ok() || c.fd.data == nil {
+ 		return 0, syscall.EINVAL
+ 	}
+-	if c.fd.data == nil {
+-		f, err := os.OpenFile(c.fd.dir+"/data", os.O_RDWR, 0)
+-		if err != nil {
+-			return 0, err
+-		}
+-		c.fd.data = f
+-	}
+ 	h := new(udpHeader)
+ 	h.raddr = addr.IP.To16()
+ 	h.laddr = c.fd.laddr.(*UDPAddr).IP.To16()
+@@ -141,7 +128,7 @@
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return &UDPConn{conn{fd}}, nil
++	return newUDPConn(fd), nil
+ }
+ 
+ const udpHeaderSize = 16*3 + 2*2
+@@ -173,7 +160,10 @@
+ }
+ 
+ // ListenUDP listens for incoming UDP packets addressed to the local
+-// address laddr.  The returned connection c's ReadFrom and WriteTo
++// address laddr.  Net must be "udp", "udp4", or "udp6".  If laddr has
++// a port of 0, ListenUDP will choose an available port.
++// The LocalAddr method of the returned UDPConn can be used to
++// discover the port.  The returned connection's ReadFrom and WriteTo
+ // methods can be used to receive and send UDP packets with per-packet
+ // addressing.
+ func ListenUDP(net string, laddr *UDPAddr) (*UDPConn, error) {
+@@ -193,7 +183,11 @@
+ 	if err != nil {
+ 		return nil, err
+ 	}
+-	return &UDPConn{conn{l.netFD()}}, nil
++	l.data, err = os.OpenFile(l.dir+"/data", os.O_RDWR, 0)
++	if err != nil {
++		return nil, err
++	}
++	return newUDPConn(l.netFD()), nil
+ }
+ 
+ // ListenMulticastUDP listens for incoming multicast UDP packets
+diff -Naur gcc-4.8.1.orig/libgo/go/net/udpsock_posix.go gcc-4.8.1/libgo/go/net/udpsock_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/udpsock_posix.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/udpsock_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd linux netbsd openbsd windows
+ 
+-// UDP sockets for POSIX
+-
+ package net
+ 
+ import (
+@@ -51,8 +49,8 @@
+ 	return a
+ }
+ 
+-// UDPConn is the implementation of the Conn and PacketConn
+-// interfaces for UDP network connections.
++// UDPConn is the implementation of the Conn and PacketConn interfaces
++// for UDP network connections.
+ type UDPConn struct {
+ 	conn
+ }
+@@ -63,8 +61,9 @@
+ // It returns the number of bytes copied into b and the return address
+ // that was on the packet.
+ //
+-// ReadFromUDP can be made to time out and return an error with Timeout() == true
+-// after a fixed time limit; see SetDeadline and SetReadDeadline.
++// ReadFromUDP can be made to time out and return an error with
++// Timeout() == true after a fixed time limit; see SetDeadline and
++// SetReadDeadline.
+ func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error) {
+ 	if !c.ok() {
+ 		return 0, nil, syscall.EINVAL
+@@ -89,7 +88,7 @@
+ }
+ 
+ // ReadMsgUDP reads a packet from c, copying the payload into b and
+-// the associdated out-of-band data into oob.  It returns the number
++// the associated out-of-band data into oob.  It returns the number
+ // of bytes copied into b, the number of bytes copied into oob, the
+ // flags that were set on the packet and the source address of the
+ // packet.
+@@ -108,12 +107,13 @@
+ 	return
+ }
+ 
+-// WriteToUDP writes a UDP packet to addr via c, copying the payload from b.
++// WriteToUDP writes a UDP packet to addr via c, copying the payload
++// from b.
+ //
+-// WriteToUDP can be made to time out and return
+-// an error with Timeout() == true after a fixed time limit;
+-// see SetDeadline and SetWriteDeadline.
+-// On packet-oriented connections, write timeouts are rare.
++// WriteToUDP can be made to time out and return an error with
++// Timeout() == true after a fixed time limit; see SetDeadline and
++// SetWriteDeadline.  On packet-oriented connections, write timeouts
++// are rare.
+ func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error) {
+ 	if !c.ok() {
+ 		return 0, syscall.EINVAL
+@@ -158,8 +158,8 @@
+ }
+ 
+ // DialUDP connects to the remote address raddr on the network net,
+-// which must be "udp", "udp4", or "udp6".  If laddr is not nil, it is used
+-// as the local address for the connection.
++// which must be "udp", "udp4", or "udp6".  If laddr is not nil, it is
++// used as the local address for the connection.
+ func DialUDP(net string, laddr, raddr *UDPAddr) (*UDPConn, error) {
+ 	return dialUDP(net, laddr, raddr, noDeadline)
+ }
+@@ -180,10 +180,13 @@
+ 	return newUDPConn(fd), nil
+ }
+ 
+-// ListenUDP listens for incoming UDP packets addressed to the
+-// local address laddr.  The returned connection c's ReadFrom
+-// and WriteTo methods can be used to receive and send UDP
+-// packets with per-packet addressing.
++// ListenUDP listens for incoming UDP packets addressed to the local
++// address laddr.  Net must be "udp", "udp4", or "udp6".  If laddr has
++// a port of 0, ListenUDP will choose an available port.
++// The LocalAddr method of the returned UDPConn can be used to
++// discover the port.  The returned connection's ReadFrom and WriteTo
++// methods can be used to receive and send UDP packets with per-packet
++// addressing.
+ func ListenUDP(net string, laddr *UDPAddr) (*UDPConn, error) {
+ 	switch net {
+ 	case "udp", "udp4", "udp6":
+@@ -201,9 +204,9 @@
+ }
+ 
+ // ListenMulticastUDP listens for incoming multicast UDP packets
+-// addressed to the group address gaddr on ifi, which specifies
+-// the interface to join.  ListenMulticastUDP uses default
+-// multicast interface if ifi is nil.
++// addressed to the group address gaddr on ifi, which specifies the
++// interface to join.  ListenMulticastUDP uses default multicast
++// interface if ifi is nil.
+ func ListenMulticastUDP(net string, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error) {
+ 	switch net {
+ 	case "udp", "udp4", "udp6":
+diff -Naur gcc-4.8.1.orig/libgo/go/net/udp_test.go gcc-4.8.1/libgo/go/net/udp_test.go
+--- gcc-4.8.1.orig/libgo/go/net/udp_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/udp_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,29 +5,45 @@
+ package net
+ 
+ import (
++	"fmt"
+ 	"reflect"
+ 	"runtime"
+ 	"testing"
+ )
+ 
+-var resolveUDPAddrTests = []struct {
++type resolveUDPAddrTest struct {
+ 	net     string
+ 	litAddr string
+ 	addr    *UDPAddr
+ 	err     error
+-}{
++}
++
++var resolveUDPAddrTests = []resolveUDPAddrTest{
+ 	{"udp", "127.0.0.1:0", &UDPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil},
+ 	{"udp4", "127.0.0.1:65535", &UDPAddr{IP: IPv4(127, 0, 0, 1), Port: 65535}, nil},
+ 
+ 	{"udp", "[::1]:1", &UDPAddr{IP: ParseIP("::1"), Port: 1}, nil},
+ 	{"udp6", "[::1]:65534", &UDPAddr{IP: ParseIP("::1"), Port: 65534}, nil},
+ 
++	{"udp", "[::1%en0]:1", &UDPAddr{IP: ParseIP("::1"), Port: 1, Zone: "en0"}, nil},
++	{"udp6", "[::1%911]:2", &UDPAddr{IP: ParseIP("::1"), Port: 2, Zone: "911"}, nil},
++
+ 	{"", "127.0.0.1:0", &UDPAddr{IP: IPv4(127, 0, 0, 1), Port: 0}, nil}, // Go 1.0 behavior
+ 	{"", "[::1]:0", &UDPAddr{IP: ParseIP("::1"), Port: 0}, nil},         // Go 1.0 behavior
+ 
+ 	{"sip", "127.0.0.1:0", nil, UnknownNetworkError("sip")},
+ }
+ 
++func init() {
++	if ifi := loopbackInterface(); ifi != nil {
++		index := fmt.Sprintf("%v", ifi.Index)
++		resolveUDPAddrTests = append(resolveUDPAddrTests, []resolveUDPAddrTest{
++			{"udp6", "[fe80::1%" + ifi.Name + "]:3", &UDPAddr{IP: ParseIP("fe80::1"), Port: 3, Zone: zoneToString(ifi.Index)}, nil},
++			{"udp6", "[fe80::1%" + index + "]:4", &UDPAddr{IP: ParseIP("fe80::1"), Port: 4, Zone: index}, nil},
++		}...)
++	}
++}
++
+ func TestResolveUDPAddr(t *testing.T) {
+ 	for _, tt := range resolveUDPAddrTests {
+ 		addr, err := ResolveUDPAddr(tt.net, tt.litAddr)
+@@ -135,14 +151,125 @@
+ 	for _, tt := range udpConnLocalNameTests {
+ 		c, err := ListenUDP(tt.net, tt.laddr)
+ 		if err != nil {
+-			t.Errorf("ListenUDP failed: %v", err)
+-			return
++			t.Fatalf("ListenUDP failed: %v", err)
+ 		}
+ 		defer c.Close()
+ 		la := c.LocalAddr()
+ 		if a, ok := la.(*UDPAddr); !ok || a.Port == 0 {
+-			t.Errorf("got %v; expected a proper address with non-zero port number", la)
+-			return
++			t.Fatalf("got %v; expected a proper address with non-zero port number", la)
++		}
++	}
++}
++
++func TestUDPConnLocalAndRemoteNames(t *testing.T) {
++	for _, laddr := range []string{"", "127.0.0.1:0"} {
++		c1, err := ListenPacket("udp", "127.0.0.1:0")
++		if err != nil {
++			t.Fatalf("ListenUDP failed: %v", err)
++		}
++		defer c1.Close()
++
++		var la *UDPAddr
++		if laddr != "" {
++			var err error
++			if la, err = ResolveUDPAddr("udp", laddr); err != nil {
++				t.Fatalf("ResolveUDPAddr failed: %v", err)
++			}
++		}
++		c2, err := DialUDP("udp", la, c1.LocalAddr().(*UDPAddr))
++		if err != nil {
++			t.Fatalf("DialUDP failed: %v", err)
++		}
++		defer c2.Close()
++
++		var connAddrs = [4]struct {
++			got Addr
++			ok  bool
++		}{
++			{c1.LocalAddr(), true},
++			{c1.(*UDPConn).RemoteAddr(), false},
++			{c2.LocalAddr(), true},
++			{c2.RemoteAddr(), true},
++		}
++		for _, ca := range connAddrs {
++			if a, ok := ca.got.(*UDPAddr); ok != ca.ok || ok && a.Port == 0 {
++				t.Fatalf("got %v; expected a proper address with non-zero port number", ca.got)
++			}
++		}
++	}
++}
++
++func TestIPv6LinkLocalUnicastUDP(t *testing.T) {
++	if testing.Short() || !*testExternal {
++		t.Skip("skipping test to avoid external network")
++	}
++	if !supportsIPv6 {
++		t.Skip("ipv6 is not supported")
++	}
++	ifi := loopbackInterface()
++	if ifi == nil {
++		t.Skip("loopback interface not found")
++	}
++	laddr := ipv6LinkLocalUnicastAddr(ifi)
++	if laddr == "" {
++		t.Skip("ipv6 unicast address on loopback not found")
++	}
++
++	type test struct {
++		net, addr  string
++		nameLookup bool
++	}
++	var tests = []test{
++		{"udp", "[" + laddr + "%" + ifi.Name + "]:0", false},
++		{"udp6", "[" + laddr + "%" + ifi.Name + "]:0", false},
++	}
++	switch runtime.GOOS {
++	case "darwin", "freebsd", "openbsd", "netbsd":
++		tests = append(tests, []test{
++			{"udp", "[localhost%" + ifi.Name + "]:0", true},
++			{"udp6", "[localhost%" + ifi.Name + "]:0", true},
++		}...)
++	case "linux":
++		tests = append(tests, []test{
++			{"udp", "[ip6-localhost%" + ifi.Name + "]:0", true},
++			{"udp6", "[ip6-localhost%" + ifi.Name + "]:0", true},
++		}...)
++	}
++	for _, tt := range tests {
++		c1, err := ListenPacket(tt.net, tt.addr)
++		if err != nil {
++			// It might return "LookupHost returned no
++			// suitable address" error on some platforms.
++			t.Logf("ListenPacket failed: %v", err)
++			continue
++		}
++		defer c1.Close()
++		if la, ok := c1.LocalAddr().(*UDPAddr); !ok || !tt.nameLookup && la.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", la)
++		}
++
++		c2, err := Dial(tt.net, c1.LocalAddr().String())
++		if err != nil {
++			t.Fatalf("Dial failed: %v", err)
++		}
++		defer c2.Close()
++		if la, ok := c2.LocalAddr().(*UDPAddr); !ok || !tt.nameLookup && la.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", la)
++		}
++		if ra, ok := c2.RemoteAddr().(*UDPAddr); !ok || !tt.nameLookup && ra.Zone == "" {
++			t.Fatalf("got %v; expected a proper address with zone identifier", ra)
++		}
++
++		if _, err := c2.Write([]byte("UDP OVER IPV6 LINKLOCAL TEST")); err != nil {
++			t.Fatalf("Conn.Write failed: %v", err)
++		}
++		b := make([]byte, 32)
++		if _, from, err := c1.ReadFrom(b); err != nil {
++			t.Fatalf("PacketConn.ReadFrom failed: %v", err)
++		} else {
++			if ra, ok := from.(*UDPAddr); !ok || !tt.nameLookup && ra.Zone == "" {
++				t.Fatalf("got %v; expected a proper address with zone identifier", ra)
++			}
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/unicast_posix_test.go gcc-4.8.1/libgo/go/net/unicast_posix_test.go
+--- gcc-4.8.1.orig/libgo/go/net/unicast_posix_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/unicast_posix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -45,7 +45,7 @@
+ // same port.
+ func TestTCPListener(t *testing.T) {
+ 	switch runtime.GOOS {
+-	case "plan9", "windows":
++	case "plan9":
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 
+@@ -69,65 +69,8 @@
+ // same port.
+ func TestUDPListener(t *testing.T) {
+ 	switch runtime.GOOS {
+-	case "plan9", "windows":
+-		t.Skipf("skipping test on %q", runtime.GOOS)
+-	}
+-
+-	toudpnet := func(net string) string {
+-		switch net {
+-		case "tcp":
+-			return "udp"
+-		case "tcp4":
+-			return "udp4"
+-		case "tcp6":
+-			return "udp6"
+-		}
+-		return "<nil>"
+-	}
+-
+-	for _, tt := range listenerTests {
+-		if tt.wildcard && (testing.Short() || !*testExternal) {
+-			continue
+-		}
+-		if tt.ipv6 && !supportsIPv6 {
+-			continue
+-		}
+-		tt.net = toudpnet(tt.net)
+-		l1, port := usableListenPacketPort(t, tt.net, tt.laddr)
+-		checkFirstListener(t, tt.net, tt.laddr+":"+port, l1)
+-		l2, err := ListenPacket(tt.net, tt.laddr+":"+port)
+-		checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2)
+-		l1.Close()
+-	}
+-}
+-
+-func TestSimpleTCPListener(t *testing.T) {
+-	switch runtime.GOOS {
+-	case "plan9":
+-		t.Skipf("skipping test on %q", runtime.GOOS)
+-		return
+-	}
+-
+-	for _, tt := range listenerTests {
+-		if tt.wildcard && (testing.Short() || !*testExternal) {
+-			continue
+-		}
+-		if tt.ipv6 {
+-			continue
+-		}
+-		l1, port := usableListenPort(t, tt.net, tt.laddr)
+-		checkFirstListener(t, tt.net, tt.laddr+":"+port, l1)
+-		l2, err := Listen(tt.net, tt.laddr+":"+port)
+-		checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2)
+-		l1.Close()
+-	}
+-}
+-
+-func TestSimpleUDPListener(t *testing.T) {
+-	switch runtime.GOOS {
+ 	case "plan9":
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+-		return
+ 	}
+ 
+ 	toudpnet := func(net string) string {
+@@ -146,7 +89,7 @@
+ 		if tt.wildcard && (testing.Short() || !*testExternal) {
+ 			continue
+ 		}
+-		if tt.ipv6 {
++		if tt.ipv6 && !supportsIPv6 {
+ 			continue
+ 		}
+ 		tt.net = toudpnet(tt.net)
+@@ -231,7 +174,7 @@
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 	if !supportsIPv6 {
+-		return
++		t.Skip("ipv6 is not supported")
+ 	}
+ 
+ 	for _, tt := range dualStackListenerTests {
+@@ -263,7 +206,7 @@
+ 		t.Skipf("skipping test on %q", runtime.GOOS)
+ 	}
+ 	if !supportsIPv6 {
+-		return
++		t.Skip("ipv6 is not supported")
+ 	}
+ 
+ 	toudpnet := func(net string) string {
+diff -Naur gcc-4.8.1.orig/libgo/go/net/unixsock.go gcc-4.8.1/libgo/go/net/unixsock.go
+--- gcc-4.8.1.orig/libgo/go/net/unixsock.go	2011-12-02 20:17:34.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/unixsock.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Unix domain sockets
+-
+ package net
+ 
+ // UnixAddr represents the address of a Unix domain socket end point.
+@@ -12,7 +10,8 @@
+ 	Net  string
+ }
+ 
+-// Network returns the address's network name, "unix" or "unixgram".
++// Network returns the address's network name, "unix", "unixgram" or
++// "unixpacket".
+ func (a *UnixAddr) Network() string {
+ 	return a.Net
+ }
+@@ -36,11 +35,9 @@
+ // "unixpacket".
+ func ResolveUnixAddr(net, addr string) (*UnixAddr, error) {
+ 	switch net {
+-	case "unix":
+-	case "unixpacket":
+-	case "unixgram":
++	case "unix", "unixgram", "unixpacket":
++		return &UnixAddr{Name: addr, Net: net}, nil
+ 	default:
+ 		return nil, UnknownNetworkError(net)
+ 	}
+-	return &UnixAddr{addr, net}, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/unixsock_plan9.go gcc-4.8.1/libgo/go/net/unixsock_plan9.go
+--- gcc-4.8.1.orig/libgo/go/net/unixsock_plan9.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/unixsock_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// Unix domain sockets stubs for Plan 9
+-
+ package net
+ 
+ import (
+@@ -93,8 +91,7 @@
+ type UnixListener struct{}
+ 
+ // ListenUnix announces on the Unix domain socket laddr and returns a
+-// Unix listener.  The network net must be "unix", "unixgram" or
+-// "unixpacket".
++// Unix listener.  The network net must be "unix" or "unixpacket".
+ func ListenUnix(net string, laddr *UnixAddr) (*UnixListener, error) {
+ 	return nil, syscall.EPLAN9
+ }
+@@ -129,14 +126,18 @@
+ // File returns a copy of the underlying os.File, set to blocking
+ // mode.  It is the caller's responsibility to close f when finished.
+ // Closing l does not affect f, and closing f does not affect l.
++//
++// The returned os.File's file descriptor is different from the
++// connection's.  Attempting to change properties of the original
++// using this duplicate may or may not have the desired effect.
+ func (l *UnixListener) File() (*os.File, error) {
+ 	return nil, syscall.EPLAN9
+ }
+ 
+ // ListenUnixgram listens for incoming Unix datagram packets addressed
+-// to the local address laddr.  The returned connection c's ReadFrom
+-// and WriteTo methods can be used to receive and send packets with
+-// per-packet addressing.  The network net must be "unixgram".
++// to the local address laddr.  The network net must be "unixgram".
++// The returned connection's ReadFrom and WriteTo methods can be used
++// to receive and send packets with per-packet addressing.
+ func ListenUnixgram(net string, laddr *UnixAddr) (*UnixConn, error) {
+ 	return nil, syscall.EPLAN9
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/net/unixsock_posix.go gcc-4.8.1/libgo/go/net/unixsock_posix.go
+--- gcc-4.8.1.orig/libgo/go/net/unixsock_posix.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/unixsock_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -4,8 +4,6 @@
+ 
+ // +build darwin freebsd linux netbsd openbsd windows
+ 
+-// Unix domain sockets
+-
+ package net
+ 
+ import (
+@@ -15,6 +13,13 @@
+ 	"time"
+ )
+ 
++func (a *UnixAddr) isUnnamed() bool {
++	if a == nil || a.Name == "" {
++		return true
++	}
++	return false
++}
++
+ func unixSocket(net string, laddr, raddr *UnixAddr, mode string, deadline time.Time) (*netFD, error) {
+ 	var sotype int
+ 	switch net {
+@@ -31,12 +36,12 @@
+ 	var la, ra syscall.Sockaddr
+ 	switch mode {
+ 	case "dial":
+-		if laddr != nil {
++		if !laddr.isUnnamed() {
+ 			la = &syscall.SockaddrUnix{Name: laddr.Name}
+ 		}
+ 		if raddr != nil {
+ 			ra = &syscall.SockaddrUnix{Name: raddr.Name}
+-		} else if sotype != syscall.SOCK_DGRAM || laddr == nil {
++		} else if sotype != syscall.SOCK_DGRAM || laddr.isUnnamed() {
+ 			return nil, &OpError{Op: mode, Net: net, Err: errMissingAddress}
+ 		}
+ 	case "listen":
+@@ -69,21 +74,21 @@
+ 
+ func sockaddrToUnix(sa syscall.Sockaddr) Addr {
+ 	if s, ok := sa.(*syscall.SockaddrUnix); ok {
+-		return &UnixAddr{s.Name, "unix"}
++		return &UnixAddr{Name: s.Name, Net: "unix"}
+ 	}
+ 	return nil
+ }
+ 
+ func sockaddrToUnixgram(sa syscall.Sockaddr) Addr {
+ 	if s, ok := sa.(*syscall.SockaddrUnix); ok {
+-		return &UnixAddr{s.Name, "unixgram"}
++		return &UnixAddr{Name: s.Name, Net: "unixgram"}
+ 	}
+ 	return nil
+ }
+ 
+ func sockaddrToUnixpacket(sa syscall.Sockaddr) Addr {
+ 	if s, ok := sa.(*syscall.SockaddrUnix); ok {
+-		return &UnixAddr{s.Name, "unixpacket"}
++		return &UnixAddr{Name: s.Name, Net: "unixpacket"}
+ 	}
+ 	return nil
+ }
+@@ -92,14 +97,13 @@
+ 	switch sotype {
+ 	case syscall.SOCK_STREAM:
+ 		return "unix"
+-	case syscall.SOCK_SEQPACKET:
+-		return "unixpacket"
+ 	case syscall.SOCK_DGRAM:
+ 		return "unixgram"
++	case syscall.SOCK_SEQPACKET:
++		return "unixpacket"
+ 	default:
+ 		panic("sotypeToNet unknown socket type")
+ 	}
+-	return ""
+ }
+ 
+ // UnixConn is an implementation of the Conn interface for connections
+@@ -124,18 +128,20 @@
+ 	n, sa, err := c.fd.ReadFrom(b)
+ 	switch sa := sa.(type) {
+ 	case *syscall.SockaddrUnix:
+-		addr = &UnixAddr{sa.Name, sotypeToNet(c.fd.sotype)}
++		if sa.Name != "" {
++			addr = &UnixAddr{Name: sa.Name, Net: sotypeToNet(c.fd.sotype)}
++		}
+ 	}
+ 	return
+ }
+ 
+ // ReadFrom implements the PacketConn ReadFrom method.
+-func (c *UnixConn) ReadFrom(b []byte) (n int, addr Addr, err error) {
++func (c *UnixConn) ReadFrom(b []byte) (int, Addr, error) {
+ 	if !c.ok() {
+ 		return 0, nil, syscall.EINVAL
+ 	}
+-	n, uaddr, err := c.ReadFromUnix(b)
+-	return n, uaddr.toAddr(), err
++	n, addr, err := c.ReadFromUnix(b)
++	return n, addr.toAddr(), err
+ }
+ 
+ // ReadMsgUnix reads a packet from c, copying the payload into b and
+@@ -149,7 +155,9 @@
+ 	n, oobn, flags, sa, err := c.fd.ReadMsg(b, oob)
+ 	switch sa := sa.(type) {
+ 	case *syscall.SockaddrUnix:
+-		addr = &UnixAddr{sa.Name, sotypeToNet(c.fd.sotype)}
++		if sa.Name != "" {
++			addr = &UnixAddr{Name: sa.Name, Net: sotypeToNet(c.fd.sotype)}
++		}
+ 	}
+ 	return
+ }
+@@ -247,11 +255,10 @@
+ }
+ 
+ // ListenUnix announces on the Unix domain socket laddr and returns a
+-// Unix listener.  The network net must be "unix", "unixgram" or
+-// "unixpacket".
++// Unix listener.  The network net must be "unix" or "unixpacket".
+ func ListenUnix(net string, laddr *UnixAddr) (*UnixListener, error) {
+ 	switch net {
+-	case "unix", "unixgram", "unixpacket":
++	case "unix", "unixpacket":
+ 	default:
+ 		return nil, UnknownNetworkError(net)
+ 	}
+@@ -264,7 +271,7 @@
+ 	}
+ 	err = syscall.Listen(fd.sysfd, listenerBacklog)
+ 	if err != nil {
+-		closesocket(fd.sysfd)
++		fd.Close()
+ 		return nil, &OpError{Op: "listen", Net: net, Addr: laddr, Err: err}
+ 	}
+ 	return &UnixListener{fd, laddr.Name}, nil
+@@ -332,12 +339,16 @@
+ // File returns a copy of the underlying os.File, set to blocking
+ // mode.  It is the caller's responsibility to close f when finished.
+ // Closing l does not affect f, and closing f does not affect l.
++//
++// The returned os.File's file descriptor is different from the
++// connection's.  Attempting to change properties of the original
++// using this duplicate may or may not have the desired effect.
+ func (l *UnixListener) File() (f *os.File, err error) { return l.fd.dup() }
+ 
+ // ListenUnixgram listens for incoming Unix datagram packets addressed
+-// to the local address laddr.  The returned connection c's ReadFrom
+-// and WriteTo methods can be used to receive and send packets with
+-// per-packet addressing.  The network net must be "unixgram".
++// to the local address laddr.  The network net must be "unixgram".
++// The returned connection's ReadFrom and WriteTo methods can be used
++// to receive and send packets with per-packet addressing.
+ func ListenUnixgram(net string, laddr *UnixAddr) (*UnixConn, error) {
+ 	switch net {
+ 	case "unixgram":
+diff -Naur gcc-4.8.1.orig/libgo/go/net/unix_test.go gcc-4.8.1/libgo/go/net/unix_test.go
+--- gcc-4.8.1.orig/libgo/go/net/unix_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/unix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,246 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build !plan9,!windows
++
++package net
++
++import (
++	"bytes"
++	"os"
++	"reflect"
++	"runtime"
++	"syscall"
++	"testing"
++	"time"
++)
++
++func TestReadUnixgramWithUnnamedSocket(t *testing.T) {
++	addr := testUnixAddr()
++	la, err := ResolveUnixAddr("unixgram", addr)
++	if err != nil {
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
++	}
++	c, err := ListenUnixgram("unixgram", la)
++	if err != nil {
++		t.Fatalf("ListenUnixgram failed: %v", err)
++	}
++	defer func() {
++		c.Close()
++		os.Remove(addr)
++	}()
++
++	off := make(chan bool)
++	data := [5]byte{1, 2, 3, 4, 5}
++	go func() {
++		defer func() { off <- true }()
++		s, err := syscall.Socket(syscall.AF_UNIX, syscall.SOCK_DGRAM, 0)
++		if err != nil {
++			t.Errorf("syscall.Socket failed: %v", err)
++			return
++		}
++		defer syscall.Close(s)
++		rsa := &syscall.SockaddrUnix{Name: addr}
++		if err := syscall.Sendto(s, data[:], 0, rsa); err != nil {
++			t.Errorf("syscall.Sendto failed: %v", err)
++			return
++		}
++	}()
++
++	<-off
++	b := make([]byte, 64)
++	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
++	n, from, err := c.ReadFrom(b)
++	if err != nil {
++		t.Fatalf("UnixConn.ReadFrom failed: %v", err)
++	}
++	if from != nil {
++		t.Fatalf("neighbor address is %v", from)
++	}
++	if !bytes.Equal(b[:n], data[:]) {
++		t.Fatalf("got %v, want %v", b[:n], data[:])
++	}
++}
++
++func TestReadUnixgramWithZeroBytesBuffer(t *testing.T) {
++	// issue 4352: Recvfrom failed with "address family not
++	// supported by protocol family" if zero-length buffer provided
++
++	addr := testUnixAddr()
++	la, err := ResolveUnixAddr("unixgram", addr)
++	if err != nil {
++		t.Fatalf("ResolveUnixAddr failed: %v", err)
++	}
++	c, err := ListenUnixgram("unixgram", la)
++	if err != nil {
++		t.Fatalf("ListenUnixgram failed: %v", err)
++	}
++	defer func() {
++		c.Close()
++		os.Remove(addr)
++	}()
++
++	off := make(chan bool)
++	go func() {
++		defer func() { off <- true }()
++		c, err := DialUnix("unixgram", nil, la)
++		if err != nil {
++			t.Errorf("DialUnix failed: %v", err)
++			return
++		}
++		defer c.Close()
++		if _, err := c.Write([]byte{1, 2, 3, 4, 5}); err != nil {
++			t.Errorf("UnixConn.Write failed: %v", err)
++			return
++		}
++	}()
++
++	<-off
++	c.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
++	_, from, err := c.ReadFrom(nil)
++	if err != nil {
++		t.Fatalf("UnixConn.ReadFrom failed: %v", err)
++	}
++	if from != nil {
++		t.Fatalf("neighbor address is %v", from)
++	}
++}
++
++func TestUnixAutobind(t *testing.T) {
++	if runtime.GOOS != "linux" {
++		t.Skip("skipping: autobind is linux only")
++	}
++
++	laddr := &UnixAddr{Name: "", Net: "unixgram"}
++	c1, err := ListenUnixgram("unixgram", laddr)
++	if err != nil {
++		t.Fatalf("ListenUnixgram failed: %v", err)
++	}
++	defer c1.Close()
++
++	// retrieve the autobind address
++	autoAddr := c1.LocalAddr().(*UnixAddr)
++	if len(autoAddr.Name) <= 1 {
++		t.Fatalf("invalid autobind address: %v", autoAddr)
++	}
++	if autoAddr.Name[0] != '@' {
++		t.Fatalf("invalid autobind address: %v", autoAddr)
++	}
++
++	c2, err := DialUnix("unixgram", nil, autoAddr)
++	if err != nil {
++		t.Fatalf("DialUnix failed: %v", err)
++	}
++	defer c2.Close()
++
++	if !reflect.DeepEqual(c1.LocalAddr(), c2.RemoteAddr()) {
++		t.Fatalf("expected autobind address %v, got %v", c1.LocalAddr(), c2.RemoteAddr())
++	}
++}
++
++func TestUnixConnLocalAndRemoteNames(t *testing.T) {
++	for _, laddr := range []string{"", testUnixAddr()} {
++		taddr := testUnixAddr()
++		ta, err := ResolveUnixAddr("unix", taddr)
++		if err != nil {
++			t.Fatalf("ResolveUnixAddr failed: %v", err)
++		}
++		ln, err := ListenUnix("unix", ta)
++		if err != nil {
++			t.Fatalf("ListenUnix failed: %v", err)
++		}
++		defer func() {
++			ln.Close()
++			os.Remove(taddr)
++		}()
++
++		done := make(chan int)
++		go transponder(t, ln, done)
++
++		la, err := ResolveUnixAddr("unix", laddr)
++		if err != nil {
++			t.Fatalf("ResolveUnixAddr failed: %v", err)
++		}
++		c, err := DialUnix("unix", la, ta)
++		if err != nil {
++			t.Fatalf("DialUnix failed: %v", err)
++		}
++		defer func() {
++			c.Close()
++			if la != nil {
++				defer os.Remove(laddr)
++			}
++		}()
++		if _, err := c.Write([]byte("UNIXCONN LOCAL AND REMOTE NAME TEST")); err != nil {
++			t.Fatalf("UnixConn.Write failed: %v", err)
++		}
++
++		if runtime.GOOS == "linux" && laddr == "" {
++			laddr = "@" // autobind feature
++		}
++		var connAddrs = [3]struct{ got, want Addr }{
++			{ln.Addr(), ta},
++			{c.LocalAddr(), &UnixAddr{Name: laddr, Net: "unix"}},
++			{c.RemoteAddr(), ta},
++		}
++		for _, ca := range connAddrs {
++			if !reflect.DeepEqual(ca.got, ca.want) {
++				t.Fatalf("got %#v, expected %#v", ca.got, ca.want)
++			}
++		}
++
++		<-done
++	}
++}
++
++func TestUnixgramConnLocalAndRemoteNames(t *testing.T) {
++	for _, laddr := range []string{"", testUnixAddr()} {
++		taddr := testUnixAddr()
++		ta, err := ResolveUnixAddr("unixgram", taddr)
++		if err != nil {
++			t.Fatalf("ResolveUnixAddr failed: %v", err)
++		}
++		c1, err := ListenUnixgram("unixgram", ta)
++		if err != nil {
++			t.Fatalf("ListenUnixgram failed: %v", err)
++		}
++		defer func() {
++			c1.Close()
++			os.Remove(taddr)
++		}()
++
++		var la *UnixAddr
++		if laddr != "" {
++			var err error
++			if la, err = ResolveUnixAddr("unixgram", laddr); err != nil {
++				t.Fatalf("ResolveUnixAddr failed: %v", err)
++			}
++		}
++		c2, err := DialUnix("unixgram", la, ta)
++		if err != nil {
++			t.Fatalf("DialUnix failed: %v", err)
++		}
++		defer func() {
++			c2.Close()
++			if la != nil {
++				defer os.Remove(laddr)
++			}
++		}()
++
++		if runtime.GOOS == "linux" && laddr == "" {
++			laddr = "@" // autobind feature
++		}
++		var connAddrs = [4]struct{ got, want Addr }{
++			{c1.LocalAddr(), ta},
++			{c1.RemoteAddr(), nil},
++			{c2.LocalAddr(), &UnixAddr{Name: laddr, Net: "unixgram"}},
++			{c2.RemoteAddr(), ta},
++		}
++		for _, ca := range connAddrs {
++			if !reflect.DeepEqual(ca.got, ca.want) {
++				t.Fatalf("got %#v, expected %#v", ca.got, ca.want)
++			}
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/net/url/url.go gcc-4.8.1/libgo/go/net/url/url.go
+--- gcc-4.8.1.orig/libgo/go/net/url/url.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/url/url.go	2013-07-16 01:55:04.520470000 -0500
+@@ -220,6 +220,13 @@
+ //
+ //	scheme:opaque[?query][#fragment]
+ //
++// Note that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/.
++// A consequence is that it is impossible to tell which slashes in the Path were
++// slashes in the raw URL and which were %2f. This distinction is rarely important,
++// but when it is a client must use other routines to parse the raw URL or construct
++// the parsed URL. For example, an HTTP server can consult req.RequestURI, and
++// an HTTP client can use URL{Host: "example.com", Opaque: "//example.com/Go%2f"}
++// instead of URL{Host: "example.com", Path: "/Go/"}.
+ type URL struct {
+ 	Scheme   string
+ 	Opaque   string    // encoded opaque data
+@@ -310,23 +317,22 @@
+ // Maybe s is of the form t c u.
+ // If so, return t, c u (or t, u if cutc == true).
+ // If not, return s, "".
+-func split(s string, c byte, cutc bool) (string, string) {
+-	for i := 0; i < len(s); i++ {
+-		if s[i] == c {
+-			if cutc {
+-				return s[0:i], s[i+1:]
+-			}
+-			return s[0:i], s[i:]
+-		}
++func split(s string, c string, cutc bool) (string, string) {
++	i := strings.Index(s, c)
++	if i < 0 {
++		return s, ""
+ 	}
+-	return s, ""
++	if cutc {
++		return s[0:i], s[i+len(c):]
++	}
++	return s[0:i], s[i:]
+ }
+ 
+ // Parse parses rawurl into a URL structure.
+ // The rawurl may be relative or absolute.
+ func Parse(rawurl string) (url *URL, err error) {
+ 	// Cut off #frag
+-	u, frag := split(rawurl, '#', true)
++	u, frag := split(rawurl, "#", true)
+ 	if url, err = parse(u, false); err != nil {
+ 		return nil, err
+ 	}
+@@ -355,7 +361,7 @@
+ func parse(rawurl string, viaRequest bool) (url *URL, err error) {
+ 	var rest string
+ 
+-	if rawurl == "" {
++	if rawurl == "" && viaRequest {
+ 		err = errors.New("empty url")
+ 		goto Error
+ 	}
+@@ -371,8 +377,9 @@
+ 	if url.Scheme, rest, err = getscheme(rawurl); err != nil {
+ 		goto Error
+ 	}
++	url.Scheme = strings.ToLower(url.Scheme)
+ 
+-	rest, url.RawQuery = split(rest, '?', true)
++	rest, url.RawQuery = split(rest, "?", true)
+ 
+ 	if !strings.HasPrefix(rest, "/") {
+ 		if url.Scheme != "" {
+@@ -388,7 +395,7 @@
+ 
+ 	if (url.Scheme != "" || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//") {
+ 		var authority string
+-		authority, rest = split(rest[2:], '/', false)
++		authority, rest = split(rest[2:], "/", false)
+ 		url.User, url.Host, err = parseAuthority(authority)
+ 		if err != nil {
+ 			goto Error
+@@ -420,7 +427,7 @@
+ 		}
+ 		user = User(userinfo)
+ 	} else {
+-		username, password := split(userinfo, ':', true)
++		username, password := split(userinfo, ":", true)
+ 		if username, err = unescape(username, encodeUserPassword); err != nil {
+ 			return
+ 		}
+@@ -575,43 +582,39 @@
+ }
+ 
+ // resolvePath applies special path segments from refs and applies
+-// them to base, per RFC 2396.
+-func resolvePath(basepath string, refpath string) string {
+-	base := strings.Split(basepath, "/")
+-	refs := strings.Split(refpath, "/")
+-	if len(base) == 0 {
+-		base = []string{""}
++// them to base, per RFC 3986.
++func resolvePath(base, ref string) string {
++	var full string
++	if ref == "" {
++		full = base
++	} else if ref[0] != '/' {
++		i := strings.LastIndex(base, "/")
++		full = base[:i+1] + ref
++	} else {
++		full = ref
+ 	}
+-
+-	rm := true
+-	for idx, ref := range refs {
+-		switch {
+-		case ref == ".":
+-			if idx == 0 {
+-				base[len(base)-1] = ""
+-				rm = true
+-			} else {
+-				rm = false
+-			}
+-		case ref == "..":
+-			newLen := len(base) - 1
+-			if newLen < 1 {
+-				newLen = 1
+-			}
+-			base = base[0:newLen]
+-			if rm {
+-				base[len(base)-1] = ""
++	if full == "" {
++		return ""
++	}
++	var dst []string
++	src := strings.Split(full, "/")
++	for _, elem := range src {
++		switch elem {
++		case ".":
++			// drop
++		case "..":
++			if len(dst) > 0 {
++				dst = dst[:len(dst)-1]
+ 			}
+ 		default:
+-			if idx == 0 || base[len(base)-1] == "" {
+-				base[len(base)-1] = ref
+-			} else {
+-				base = append(base, ref)
+-			}
+-			rm = false
++			dst = append(dst, elem)
+ 		}
+ 	}
+-	return strings.Join(base, "/")
++	if last := src[len(src)-1]; last == "." || last == ".." {
++		// Add final slash to the joined path.
++		dst = append(dst, "")
++	}
++	return "/" + strings.TrimLeft(strings.Join(dst, "/"), "/")
+ }
+ 
+ // IsAbs returns true if the URL is absolute.
+@@ -631,43 +634,39 @@
+ }
+ 
+ // ResolveReference resolves a URI reference to an absolute URI from
+-// an absolute base URI, per RFC 2396 Section 5.2.  The URI reference
++// an absolute base URI, per RFC 3986 Section 5.2.  The URI reference
+ // may be relative or absolute.  ResolveReference always returns a new
+ // URL instance, even if the returned URL is identical to either the
+ // base or reference. If ref is an absolute URL, then ResolveReference
+ // ignores base and returns a copy of ref.
+ func (u *URL) ResolveReference(ref *URL) *URL {
+-	if ref.IsAbs() {
+-		url := *ref
++	url := *ref
++	if ref.Scheme == "" {
++		url.Scheme = u.Scheme
++	}
++	if ref.Scheme != "" || ref.Host != "" || ref.User != nil {
++		// The "absoluteURI" or "net_path" cases.
++		url.Path = resolvePath(ref.Path, "")
+ 		return &url
+ 	}
+-	// relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ]
+-	url := *u
+-	url.RawQuery = ref.RawQuery
+-	url.Fragment = ref.Fragment
+ 	if ref.Opaque != "" {
+-		url.Opaque = ref.Opaque
+ 		url.User = nil
+ 		url.Host = ""
+ 		url.Path = ""
+ 		return &url
+ 	}
+-	if ref.Host != "" || ref.User != nil {
+-		// The "net_path" case.
+-		url.Host = ref.Host
+-		url.User = ref.User
+-	}
+-	if strings.HasPrefix(ref.Path, "/") {
+-		// The "abs_path" case.
+-		url.Path = ref.Path
+-	} else {
+-		// The "rel_path" case.
+-		path := resolvePath(u.Path, ref.Path)
+-		if !strings.HasPrefix(path, "/") {
+-			path = "/" + path
++	if ref.Path == "" {
++		if ref.RawQuery == "" {
++			url.RawQuery = u.RawQuery
++			if ref.Fragment == "" {
++				url.Fragment = u.Fragment
++			}
+ 		}
+-		url.Path = path
+ 	}
++	// The "abs_path" or "rel_path" cases.
++	url.Host = u.Host
++	url.User = u.User
++	url.Path = resolvePath(u.Path, ref.Path)
+ 	return &url
+ }
+ 
+@@ -686,6 +685,10 @@
+ 		if result == "" {
+ 			result = "/"
+ 		}
++	} else {
++		if strings.HasPrefix(result, "//") {
++			result = u.Scheme + ":" + result
++		}
+ 	}
+ 	if u.RawQuery != "" {
+ 		result += "?" + u.RawQuery
+diff -Naur gcc-4.8.1.orig/libgo/go/net/url/url_test.go gcc-4.8.1/libgo/go/net/url/url_test.go
+--- gcc-4.8.1.orig/libgo/go/net/url/url_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/net/url/url_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -251,6 +251,15 @@
+ 		},
+ 		"file:///home/adg/rabbits",
+ 	},
++	// case-insensitive scheme
++	{
++		"MaIlTo:webmaster@golang.org",
++		&URL{
++			Scheme: "mailto",
++			Opaque: "webmaster@golang.org",
++		},
++		"mailto:webmaster@golang.org",
++	},
+ }
+ 
+ // more useful string for debugging than fmt's struct printer
+@@ -514,18 +523,18 @@
+ var resolvePathTests = []struct {
+ 	base, ref, expected string
+ }{
+-	{"a/b", ".", "a/"},
+-	{"a/b", "c", "a/c"},
+-	{"a/b", "..", ""},
+-	{"a/", "..", ""},
+-	{"a/", "../..", ""},
+-	{"a/b/c", "..", "a/"},
+-	{"a/b/c", "../d", "a/d"},
+-	{"a/b/c", ".././d", "a/d"},
+-	{"a/b", "./..", ""},
+-	{"a/./b", ".", "a/./"},
+-	{"a/../", ".", "a/../"},
+-	{"a/.././b", "c", "a/.././c"},
++	{"a/b", ".", "/a/"},
++	{"a/b", "c", "/a/c"},
++	{"a/b", "..", "/"},
++	{"a/", "..", "/"},
++	{"a/", "../..", "/"},
++	{"a/b/c", "..", "/a/"},
++	{"a/b/c", "../d", "/a/d"},
++	{"a/b/c", ".././d", "/a/d"},
++	{"a/b", "./..", "/"},
++	{"a/./b", ".", "/a/"},
++	{"a/../", ".", "/"},
++	{"a/.././b", "c", "/c"},
+ }
+ 
+ func TestResolvePath(t *testing.T) {
+@@ -578,16 +587,71 @@
+ 	{"http://foo.com/bar/baz", "quux/./dotdot/dotdot/././../../tail", "http://foo.com/bar/quux/tail"},
+ 	{"http://foo.com/bar/baz", "quux/./dotdot/dotdot/./.././../tail", "http://foo.com/bar/quux/tail"},
+ 	{"http://foo.com/bar/baz", "quux/./dotdot/dotdot/dotdot/./../../.././././tail", "http://foo.com/bar/quux/tail"},
+-	{"http://foo.com/bar/baz", "quux/./dotdot/../dotdot/../dot/./tail/..", "http://foo.com/bar/quux/dot"},
++	{"http://foo.com/bar/baz", "quux/./dotdot/../dotdot/../dot/./tail/..", "http://foo.com/bar/quux/dot/"},
+ 
+-	// "." and ".." in the base aren't special
+-	{"http://foo.com/dot/./dotdot/../foo/bar", "../baz", "http://foo.com/dot/./dotdot/../baz"},
++	// Remove any dot-segments prior to forming the target URI.
++	// http://tools.ietf.org/html/rfc3986#section-5.2.4
++	{"http://foo.com/dot/./dotdot/../foo/bar", "../baz", "http://foo.com/dot/baz"},
+ 
+ 	// Triple dot isn't special
+ 	{"http://foo.com/bar", "...", "http://foo.com/..."},
+ 
+ 	// Fragment
+ 	{"http://foo.com/bar", ".#frag", "http://foo.com/#frag"},
++
++	// RFC 3986: Normal Examples
++	// http://tools.ietf.org/html/rfc3986#section-5.4.1
++	{"http://a/b/c/d;p?q", "g:h", "g:h"},
++	{"http://a/b/c/d;p?q", "g", "http://a/b/c/g"},
++	{"http://a/b/c/d;p?q", "./g", "http://a/b/c/g"},
++	{"http://a/b/c/d;p?q", "g/", "http://a/b/c/g/"},
++	{"http://a/b/c/d;p?q", "/g", "http://a/g"},
++	{"http://a/b/c/d;p?q", "//g", "http://g"},
++	{"http://a/b/c/d;p?q", "?y", "http://a/b/c/d;p?y"},
++	{"http://a/b/c/d;p?q", "g?y", "http://a/b/c/g?y"},
++	{"http://a/b/c/d;p?q", "#s", "http://a/b/c/d;p?q#s"},
++	{"http://a/b/c/d;p?q", "g#s", "http://a/b/c/g#s"},
++	{"http://a/b/c/d;p?q", "g?y#s", "http://a/b/c/g?y#s"},
++	{"http://a/b/c/d;p?q", ";x", "http://a/b/c/;x"},
++	{"http://a/b/c/d;p?q", "g;x", "http://a/b/c/g;x"},
++	{"http://a/b/c/d;p?q", "g;x?y#s", "http://a/b/c/g;x?y#s"},
++	{"http://a/b/c/d;p?q", "", "http://a/b/c/d;p?q"},
++	{"http://a/b/c/d;p?q", ".", "http://a/b/c/"},
++	{"http://a/b/c/d;p?q", "./", "http://a/b/c/"},
++	{"http://a/b/c/d;p?q", "..", "http://a/b/"},
++	{"http://a/b/c/d;p?q", "../", "http://a/b/"},
++	{"http://a/b/c/d;p?q", "../g", "http://a/b/g"},
++	{"http://a/b/c/d;p?q", "../..", "http://a/"},
++	{"http://a/b/c/d;p?q", "../../", "http://a/"},
++	{"http://a/b/c/d;p?q", "../../g", "http://a/g"},
++
++	// RFC 3986: Abnormal Examples
++	// http://tools.ietf.org/html/rfc3986#section-5.4.2
++	{"http://a/b/c/d;p?q", "../../../g", "http://a/g"},
++	{"http://a/b/c/d;p?q", "../../../../g", "http://a/g"},
++	{"http://a/b/c/d;p?q", "/./g", "http://a/g"},
++	{"http://a/b/c/d;p?q", "/../g", "http://a/g"},
++	{"http://a/b/c/d;p?q", "g.", "http://a/b/c/g."},
++	{"http://a/b/c/d;p?q", ".g", "http://a/b/c/.g"},
++	{"http://a/b/c/d;p?q", "g..", "http://a/b/c/g.."},
++	{"http://a/b/c/d;p?q", "..g", "http://a/b/c/..g"},
++	{"http://a/b/c/d;p?q", "./../g", "http://a/b/g"},
++	{"http://a/b/c/d;p?q", "./g/.", "http://a/b/c/g/"},
++	{"http://a/b/c/d;p?q", "g/./h", "http://a/b/c/g/h"},
++	{"http://a/b/c/d;p?q", "g/../h", "http://a/b/c/h"},
++	{"http://a/b/c/d;p?q", "g;x=1/./y", "http://a/b/c/g;x=1/y"},
++	{"http://a/b/c/d;p?q", "g;x=1/../y", "http://a/b/c/y"},
++	{"http://a/b/c/d;p?q", "g?y/./x", "http://a/b/c/g?y/./x"},
++	{"http://a/b/c/d;p?q", "g?y/../x", "http://a/b/c/g?y/../x"},
++	{"http://a/b/c/d;p?q", "g#s/./x", "http://a/b/c/g#s/./x"},
++	{"http://a/b/c/d;p?q", "g#s/../x", "http://a/b/c/g#s/../x"},
++
++	// Extras.
++	{"https://a/b/c/d;p?q", "//g?q", "https://g?q"},
++	{"https://a/b/c/d;p?q", "//g#s", "https://g#s"},
++	{"https://a/b/c/d;p?q", "//g/d/e/f?y#s", "https://g/d/e/f?y#s"},
++	{"https://a/b/c/d;p#s", "?y", "https://a/b/c/d;p?y"},
++	{"https://a/b/c/d;p?q#s", "?y", "https://a/b/c/d;p?y"},
+ }
+ 
+ func TestResolveReference(t *testing.T) {
+@@ -598,91 +662,44 @@
+ 		}
+ 		return u
+ 	}
++	opaque := &URL{Scheme: "scheme", Opaque: "opaque"}
+ 	for _, test := range resolveReferenceTests {
+ 		base := mustParse(test.base)
+ 		rel := mustParse(test.rel)
+ 		url := base.ResolveReference(rel)
+-		urlStr := url.String()
+-		if urlStr != test.expected {
+-			t.Errorf("Resolving %q + %q != %q; got %q", test.base, test.rel, test.expected, urlStr)
++		if url.String() != test.expected {
++			t.Errorf("URL(%q).ResolveReference(%q) == %q, got %q", test.base, test.rel, test.expected, url.String())
+ 		}
+-	}
+-
+-	// Test that new instances are returned.
+-	base := mustParse("http://foo.com/")
+-	abs := base.ResolveReference(mustParse("."))
+-	if base == abs {
+-		t.Errorf("Expected no-op reference to return new URL instance.")
+-	}
+-	barRef := mustParse("http://bar.com/")
+-	abs = base.ResolveReference(barRef)
+-	if abs == barRef {
+-		t.Errorf("Expected resolution of absolute reference to return new URL instance.")
+-	}
+-
+-	// Test the convenience wrapper too
+-	base = mustParse("http://foo.com/path/one/")
+-	abs, _ = base.Parse("../two")
+-	expected := "http://foo.com/path/two"
+-	if abs.String() != expected {
+-		t.Errorf("Parse wrapper got %q; expected %q", abs.String(), expected)
+-	}
+-	_, err := base.Parse("")
+-	if err == nil {
+-		t.Errorf("Expected an error from Parse wrapper parsing an empty string.")
+-	}
+-
+-	// Ensure Opaque resets the URL.
+-	base = mustParse("scheme://user@foo.com/bar")
+-	abs = base.ResolveReference(&URL{Opaque: "opaque"})
+-	want := mustParse("scheme:opaque")
+-	if *abs != *want {
+-		t.Errorf("ResolveReference failed to resolve opaque URL: want %#v, got %#v", abs, want)
+-	}
+-}
+-
+-func TestResolveReferenceOpaque(t *testing.T) {
+-	mustParse := func(url string) *URL {
+-		u, err := Parse(url)
++		// Ensure that new instances are returned.
++		if base == url {
++			t.Errorf("Expected URL.ResolveReference to return new URL instance.")
++		}
++		// Test the convenience wrapper too.
++		url, err := base.Parse(test.rel)
+ 		if err != nil {
+-			t.Fatalf("Expected URL to parse: %q, got error: %v", url, err)
++			t.Errorf("URL(%q).Parse(%q) failed: %v", test.base, test.rel, err)
++		} else if url.String() != test.expected {
++			t.Errorf("URL(%q).Parse(%q) == %q, got %q", test.base, test.rel, test.expected, url.String())
++		} else if base == url {
++			// Ensure that new instances are returned for the wrapper too.
++			t.Errorf("Expected URL.Parse to return new URL instance.")
++		}
++		// Ensure Opaque resets the URL.
++		url = base.ResolveReference(opaque)
++		if *url != *opaque {
++			t.Errorf("ResolveReference failed to resolve opaque URL: want %#v, got %#v", url, opaque)
+ 		}
+-		return u
+-	}
+-	for _, test := range resolveReferenceTests {
+-		base := mustParse(test.base)
+-		rel := mustParse(test.rel)
+-		url := base.ResolveReference(rel)
+-		urlStr := url.String()
+-		if urlStr != test.expected {
+-			t.Errorf("Resolving %q + %q != %q; got %q", test.base, test.rel, test.expected, urlStr)
++		// Test the convenience wrapper with an opaque URL too.
++		url, err = base.Parse("scheme:opaque")
++		if err != nil {
++			t.Errorf(`URL(%q).Parse("scheme:opaque") failed: %v`, test.base, err)
++		} else if *url != *opaque {
++			t.Errorf("Parse failed to resolve opaque URL: want %#v, got %#v", url, opaque)
++		} else if base == url {
++			// Ensure that new instances are returned, again.
++			t.Errorf("Expected URL.Parse to return new URL instance.")
+ 		}
+ 	}
+-
+-	// Test that new instances are returned.
+-	base := mustParse("http://foo.com/")
+-	abs := base.ResolveReference(mustParse("."))
+-	if base == abs {
+-		t.Errorf("Expected no-op reference to return new URL instance.")
+-	}
+-	barRef := mustParse("http://bar.com/")
+-	abs = base.ResolveReference(barRef)
+-	if abs == barRef {
+-		t.Errorf("Expected resolution of absolute reference to return new URL instance.")
+-	}
+-
+-	// Test the convenience wrapper too
+-	base = mustParse("http://foo.com/path/one/")
+-	abs, _ = base.Parse("../two")
+-	expected := "http://foo.com/path/two"
+-	if abs.String() != expected {
+-		t.Errorf("Parse wrapper got %q; expected %q", abs.String(), expected)
+-	}
+-	_, err := base.Parse("")
+-	if err == nil {
+-		t.Errorf("Expected an error from Parse wrapper parsing an empty string.")
+-	}
+-
+ }
+ 
+ func TestQueryValues(t *testing.T) {
+@@ -789,6 +806,24 @@
+ 		},
+ 		"/a%20b",
+ 	},
++	// golang.org/issue/4860 variant 1
++	{
++		&URL{
++			Scheme: "http",
++			Host:   "example.com",
++			Opaque: "/%2F/%2F/",
++		},
++		"/%2F/%2F/",
++	},
++	// golang.org/issue/4860 variant 2
++	{
++		&URL{
++			Scheme: "http",
++			Host:   "example.com",
++			Opaque: "//other.example.com/%2F/%2F/",
++		},
++		"http://other.example.com/%2F/%2F/",
++	},
+ 	{
+ 		&URL{
+ 			Scheme:   "http",
+diff -Naur gcc-4.8.1.orig/libgo/go/old/netchan/common.go gcc-4.8.1/libgo/go/old/netchan/common.go
+--- gcc-4.8.1.orig/libgo/go/old/netchan/common.go	2012-01-25 15:54:22.000000000 -0600
++++ gcc-4.8.1/libgo/go/old/netchan/common.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,338 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package netchan
+-
+-import (
+-	"encoding/gob"
+-	"errors"
+-	"io"
+-	"reflect"
+-	"sync"
+-	"time"
+-)
+-
+-// The direction of a connection from the client's perspective.
+-type Dir int
+-
+-const (
+-	Recv Dir = iota
+-	Send
+-)
+-
+-func (dir Dir) String() string {
+-	switch dir {
+-	case Recv:
+-		return "Recv"
+-	case Send:
+-		return "Send"
+-	}
+-	return "???"
+-}
+-
+-// Payload types
+-const (
+-	payRequest = iota // request structure follows
+-	payError          // error structure follows
+-	payData           // user payload follows
+-	payAck            // acknowledgement; no payload
+-	payClosed         // channel is now closed
+-	payAckSend        // payload has been delivered.
+-)
+-
+-// A header is sent as a prefix to every transmission.  It will be followed by
+-// a request structure, an error structure, or an arbitrary user payload structure.
+-type header struct {
+-	Id          int
+-	PayloadType int
+-	SeqNum      int64
+-}
+-
+-// Sent with a header once per channel from importer to exporter to report
+-// that it wants to bind to a channel with the specified direction for count
+-// messages, with space for size buffered values. If count is -1, it means unlimited.
+-type request struct {
+-	Name  string
+-	Count int64
+-	Size  int
+-	Dir   Dir
+-}
+-
+-// Sent with a header to report an error.
+-type error_ struct {
+-	Error string
+-}
+-
+-// Used to unify management of acknowledgements for import and export.
+-type unackedCounter interface {
+-	unackedCount() int64
+-	ack() int64
+-	seq() int64
+-}
+-
+-// A channel and its direction.
+-type chanDir struct {
+-	ch  reflect.Value
+-	dir Dir
+-}
+-
+-// clientSet contains the objects and methods needed for tracking
+-// clients of an exporter and draining outstanding messages.
+-type clientSet struct {
+-	mu      sync.Mutex // protects access to channel and client maps
+-	names   map[string]*chanDir
+-	clients map[unackedCounter]bool
+-}
+-
+-// Mutex-protected encoder and decoder pair.
+-type encDec struct {
+-	decLock sync.Mutex
+-	dec     *gob.Decoder
+-	encLock sync.Mutex
+-	enc     *gob.Encoder
+-}
+-
+-func newEncDec(conn io.ReadWriter) *encDec {
+-	return &encDec{
+-		dec: gob.NewDecoder(conn),
+-		enc: gob.NewEncoder(conn),
+-	}
+-}
+-
+-// Decode an item from the connection.
+-func (ed *encDec) decode(value reflect.Value) error {
+-	ed.decLock.Lock()
+-	err := ed.dec.DecodeValue(value)
+-	if err != nil {
+-		// TODO: tear down connection?
+-	}
+-	ed.decLock.Unlock()
+-	return err
+-}
+-
+-// Encode a header and payload onto the connection.
+-func (ed *encDec) encode(hdr *header, payloadType int, payload interface{}) error {
+-	ed.encLock.Lock()
+-	hdr.PayloadType = payloadType
+-	err := ed.enc.Encode(hdr)
+-	if err == nil {
+-		if payload != nil {
+-			err = ed.enc.Encode(payload)
+-		}
+-	}
+-	if err != nil {
+-		// TODO: tear down connection if there is an error?
+-	}
+-	ed.encLock.Unlock()
+-	return err
+-}
+-
+-// See the comment for Exporter.Drain.
+-func (cs *clientSet) drain(timeout time.Duration) error {
+-	deadline := time.Now().Add(timeout)
+-	for {
+-		pending := false
+-		cs.mu.Lock()
+-		// Any messages waiting for a client?
+-		for _, chDir := range cs.names {
+-			if chDir.ch.Len() > 0 {
+-				pending = true
+-			}
+-		}
+-		// Any unacknowledged messages?
+-		for client := range cs.clients {
+-			n := client.unackedCount()
+-			if n > 0 { // Check for > rather than != just to be safe.
+-				pending = true
+-				break
+-			}
+-		}
+-		cs.mu.Unlock()
+-		if !pending {
+-			break
+-		}
+-		if timeout > 0 && time.Now().After(deadline) {
+-			return errors.New("timeout")
+-		}
+-		time.Sleep(100 * time.Millisecond)
+-	}
+-	return nil
+-}
+-
+-// See the comment for Exporter.Sync.
+-func (cs *clientSet) sync(timeout time.Duration) error {
+-	deadline := time.Now().Add(timeout)
+-	// seq remembers the clients and their seqNum at point of entry.
+-	seq := make(map[unackedCounter]int64)
+-	cs.mu.Lock()
+-	for client := range cs.clients {
+-		seq[client] = client.seq()
+-	}
+-	cs.mu.Unlock()
+-	for {
+-		pending := false
+-		cs.mu.Lock()
+-		// Any unacknowledged messages?  Look only at clients that existed
+-		// when we started and are still in this client set.
+-		for client := range seq {
+-			if _, ok := cs.clients[client]; ok {
+-				if client.ack() < seq[client] {
+-					pending = true
+-					break
+-				}
+-			}
+-		}
+-		cs.mu.Unlock()
+-		if !pending {
+-			break
+-		}
+-		if timeout > 0 && time.Now().After(deadline) {
+-			return errors.New("timeout")
+-		}
+-		time.Sleep(100 * time.Millisecond)
+-	}
+-	return nil
+-}
+-
+-// A netChan represents a channel imported or exported
+-// on a single connection. Flow is controlled by the receiving
+-// side by sending payAckSend messages when values
+-// are delivered into the local channel.
+-type netChan struct {
+-	*chanDir
+-	name   string
+-	id     int
+-	size   int // buffer size of channel.
+-	closed bool
+-
+-	// sender-specific state
+-	ackCh chan bool // buffered with space for all the acks we need
+-	space int       // available space.
+-
+-	// receiver-specific state
+-	sendCh chan reflect.Value // buffered channel of values received from other end.
+-	ed     *encDec            // so that we can send acks.
+-	count  int64              // number of values still to receive.
+-}
+-
+-// Create a new netChan with the given name (only used for
+-// messages), id, direction, buffer size, and count.
+-// The connection to the other side is represented by ed.
+-func newNetChan(name string, id int, ch *chanDir, ed *encDec, size int, count int64) *netChan {
+-	c := &netChan{chanDir: ch, name: name, id: id, size: size, ed: ed, count: count}
+-	if c.dir == Send {
+-		c.ackCh = make(chan bool, size)
+-		c.space = size
+-	}
+-	return c
+-}
+-
+-// Close the channel.
+-func (nch *netChan) close() {
+-	if nch.closed {
+-		return
+-	}
+-	if nch.dir == Recv {
+-		if nch.sendCh != nil {
+-			// If the sender goroutine is active, close the channel to it.
+-			// It will close nch.ch when it can.
+-			close(nch.sendCh)
+-		} else {
+-			nch.ch.Close()
+-		}
+-	} else {
+-		nch.ch.Close()
+-		close(nch.ackCh)
+-	}
+-	nch.closed = true
+-}
+-
+-// Send message from remote side to local receiver.
+-func (nch *netChan) send(val reflect.Value) {
+-	if nch.dir != Recv {
+-		panic("send on wrong direction of channel")
+-	}
+-	if nch.sendCh == nil {
+-		// If possible, do local send directly and ack immediately.
+-		if nch.ch.TrySend(val) {
+-			nch.sendAck()
+-			return
+-		}
+-		// Start sender goroutine to manage delayed delivery of values.
+-		nch.sendCh = make(chan reflect.Value, nch.size)
+-		go nch.sender()
+-	}
+-	select {
+-	case nch.sendCh <- val:
+-		// ok
+-	default:
+-		// TODO: should this be more resilient?
+-		panic("netchan: remote sender sent more values than allowed")
+-	}
+-}
+-
+-// sendAck sends an acknowledgment that a message has left
+-// the channel's buffer. If the messages remaining to be sent
+-// will fit in the channel's buffer, then we don't
+-// need to send an ack.
+-func (nch *netChan) sendAck() {
+-	if nch.count < 0 || nch.count > int64(nch.size) {
+-		nch.ed.encode(&header{Id: nch.id}, payAckSend, nil)
+-	}
+-	if nch.count > 0 {
+-		nch.count--
+-	}
+-}
+-
+-// The sender process forwards items from the sending queue
+-// to the destination channel, acknowledging each item.
+-func (nch *netChan) sender() {
+-	if nch.dir != Recv {
+-		panic("sender on wrong direction of channel")
+-	}
+-	// When Exporter.Hangup is called, the underlying channel is closed,
+-	// and so we may get a "too many operations on closed channel" error
+-	// if there are outstanding messages in sendCh.
+-	// Make sure that this doesn't panic the whole program.
+-	defer func() {
+-		if r := recover(); r != nil {
+-			// TODO check that r is "too many operations", otherwise re-panic.
+-		}
+-	}()
+-	for v := range nch.sendCh {
+-		nch.ch.Send(v)
+-		nch.sendAck()
+-	}
+-	nch.ch.Close()
+-}
+-
+-// Receive value from local side for sending to remote side.
+-func (nch *netChan) recv() (val reflect.Value, ok bool) {
+-	if nch.dir != Send {
+-		panic("recv on wrong direction of channel")
+-	}
+-
+-	if nch.space == 0 {
+-		// Wait for buffer space.
+-		<-nch.ackCh
+-		nch.space++
+-	}
+-	nch.space--
+-	return nch.ch.Recv()
+-}
+-
+-// acked is called when the remote side indicates that
+-// a value has been delivered.
+-func (nch *netChan) acked() {
+-	if nch.dir != Send {
+-		panic("recv on wrong direction of channel")
+-	}
+-	select {
+-	case nch.ackCh <- true:
+-		// ok
+-	default:
+-		// TODO: should this be more resilient?
+-		panic("netchan: remote receiver sent too many acks")
+-	}
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/old/netchan/export.go gcc-4.8.1/libgo/go/old/netchan/export.go
+--- gcc-4.8.1.orig/libgo/go/old/netchan/export.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/old/netchan/export.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,400 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-/*
+-	Package netchan implements type-safe networked channels:
+-	it allows the two ends of a channel to appear on different
+-	computers connected by a network.  It does this by transporting
+-	data sent to a channel on one machine so it can be recovered
+-	by a receive of a channel of the same type on the other.
+-
+-	An exporter publishes a set of channels by name.  An importer
+-	connects to the exporting machine and imports the channels
+-	by name. After importing the channels, the two machines can
+-	use the channels in the usual way.
+-
+-	Networked channels are not synchronized; they always behave
+-	as if they are buffered channels of at least one element.
+-*/
+-package netchan
+-
+-// BUG: can't use range clause to receive when using ImportNValues to limit the count.
+-
+-import (
+-	"errors"
+-	"io"
+-	"log"
+-	"net"
+-	"reflect"
+-	"strconv"
+-	"sync"
+-	"time"
+-)
+-
+-// Export
+-
+-// expLog is a logging convenience function.  The first argument must be a string.
+-func expLog(args ...interface{}) {
+-	args[0] = "netchan export: " + args[0].(string)
+-	log.Print(args...)
+-}
+-
+-// An Exporter allows a set of channels to be published on a single
+-// network port.  A single machine may have multiple Exporters
+-// but they must use different ports.
+-type Exporter struct {
+-	*clientSet
+-}
+-
+-type expClient struct {
+-	*encDec
+-	exp     *Exporter
+-	chans   map[int]*netChan // channels in use by client
+-	mu      sync.Mutex       // protects remaining fields
+-	errored bool             // client has been sent an error
+-	seqNum  int64            // sequences messages sent to client; has value of highest sent
+-	ackNum  int64            // highest sequence number acknowledged
+-	seqLock sync.Mutex       // guarantees messages are in sequence, only locked under mu
+-}
+-
+-func newClient(exp *Exporter, conn io.ReadWriter) *expClient {
+-	client := new(expClient)
+-	client.exp = exp
+-	client.encDec = newEncDec(conn)
+-	client.seqNum = 0
+-	client.ackNum = 0
+-	client.chans = make(map[int]*netChan)
+-	return client
+-}
+-
+-func (client *expClient) sendError(hdr *header, err string) {
+-	error := &error_{err}
+-	expLog("sending error to client:", error.Error)
+-	client.encode(hdr, payError, error) // ignore any encode error, hope client gets it
+-	client.mu.Lock()
+-	client.errored = true
+-	client.mu.Unlock()
+-}
+-
+-func (client *expClient) newChan(hdr *header, dir Dir, name string, size int, count int64) *netChan {
+-	exp := client.exp
+-	exp.mu.Lock()
+-	ech, ok := exp.names[name]
+-	exp.mu.Unlock()
+-	if !ok {
+-		client.sendError(hdr, "no such channel: "+name)
+-		return nil
+-	}
+-	if ech.dir != dir {
+-		client.sendError(hdr, "wrong direction for channel: "+name)
+-		return nil
+-	}
+-	nch := newNetChan(name, hdr.Id, ech, client.encDec, size, count)
+-	client.chans[hdr.Id] = nch
+-	return nch
+-}
+-
+-func (client *expClient) getChan(hdr *header, dir Dir) *netChan {
+-	nch := client.chans[hdr.Id]
+-	if nch == nil {
+-		return nil
+-	}
+-	if nch.dir != dir {
+-		client.sendError(hdr, "wrong direction for channel: "+nch.name)
+-	}
+-	return nch
+-}
+-
+-// The function run manages sends and receives for a single client.  For each
+-// (client Recv) request, this will launch a serveRecv goroutine to deliver
+-// the data for that channel, while (client Send) requests are handled as
+-// data arrives from the client.
+-func (client *expClient) run() {
+-	hdr := new(header)
+-	hdrValue := reflect.ValueOf(hdr)
+-	req := new(request)
+-	reqValue := reflect.ValueOf(req)
+-	error := new(error_)
+-	for {
+-		*hdr = header{}
+-		if err := client.decode(hdrValue); err != nil {
+-			if err != io.EOF {
+-				expLog("error decoding client header:", err)
+-			}
+-			break
+-		}
+-		switch hdr.PayloadType {
+-		case payRequest:
+-			*req = request{}
+-			if err := client.decode(reqValue); err != nil {
+-				expLog("error decoding client request:", err)
+-				break
+-			}
+-			if req.Size < 1 {
+-				panic("netchan: remote requested " + strconv.Itoa(req.Size) + " values")
+-			}
+-			switch req.Dir {
+-			case Recv:
+-				// look up channel before calling serveRecv to
+-				// avoid a lock around client.chans.
+-				if nch := client.newChan(hdr, Send, req.Name, req.Size, req.Count); nch != nil {
+-					go client.serveRecv(nch, *hdr, req.Count)
+-				}
+-			case Send:
+-				client.newChan(hdr, Recv, req.Name, req.Size, req.Count)
+-				// The actual sends will have payload type payData.
+-				// TODO: manage the count?
+-			default:
+-				error.Error = "request: can't handle channel direction"
+-				expLog(error.Error, req.Dir)
+-				client.encode(hdr, payError, error)
+-			}
+-		case payData:
+-			client.serveSend(*hdr)
+-		case payClosed:
+-			client.serveClosed(*hdr)
+-		case payAck:
+-			client.mu.Lock()
+-			if client.ackNum != hdr.SeqNum-1 {
+-				// Since the sequence number is incremented and the message is sent
+-				// in a single instance of locking client.mu, the messages are guaranteed
+-				// to be sent in order.  Therefore receipt of acknowledgement N means
+-				// all messages <=N have been seen by the recipient.  We check anyway.
+-				expLog("sequence out of order:", client.ackNum, hdr.SeqNum)
+-			}
+-			if client.ackNum < hdr.SeqNum { // If there has been an error, don't back up the count.
+-				client.ackNum = hdr.SeqNum
+-			}
+-			client.mu.Unlock()
+-		case payAckSend:
+-			if nch := client.getChan(hdr, Send); nch != nil {
+-				nch.acked()
+-			}
+-		default:
+-			log.Fatal("netchan export: unknown payload type", hdr.PayloadType)
+-		}
+-	}
+-	client.exp.delClient(client)
+-}
+-
+-// Send all the data on a single channel to a client asking for a Recv.
+-// The header is passed by value to avoid issues of overwriting.
+-func (client *expClient) serveRecv(nch *netChan, hdr header, count int64) {
+-	for {
+-		val, ok := nch.recv()
+-		if !ok {
+-			if err := client.encode(&hdr, payClosed, nil); err != nil {
+-				expLog("error encoding server closed message:", err)
+-			}
+-			break
+-		}
+-		// We hold the lock during transmission to guarantee messages are
+-		// sent in sequence number order.  Also, we increment first so the
+-		// value of client.SeqNum is the value of the highest used sequence
+-		// number, not one beyond.
+-		client.mu.Lock()
+-		client.seqNum++
+-		hdr.SeqNum = client.seqNum
+-		client.seqLock.Lock() // guarantee ordering of messages
+-		client.mu.Unlock()
+-		err := client.encode(&hdr, payData, val.Interface())
+-		client.seqLock.Unlock()
+-		if err != nil {
+-			expLog("error encoding client response:", err)
+-			client.sendError(&hdr, err.Error())
+-			break
+-		}
+-		// Negative count means run forever.
+-		if count >= 0 {
+-			if count--; count <= 0 {
+-				break
+-			}
+-		}
+-	}
+-}
+-
+-// Receive and deliver locally one item from a client asking for a Send
+-// The header is passed by value to avoid issues of overwriting.
+-func (client *expClient) serveSend(hdr header) {
+-	nch := client.getChan(&hdr, Recv)
+-	if nch == nil {
+-		return
+-	}
+-	// Create a new value for each received item.
+-	val := reflect.New(nch.ch.Type().Elem()).Elem()
+-	if err := client.decode(val); err != nil {
+-		expLog("value decode:", err, "; type ", nch.ch.Type())
+-		return
+-	}
+-	nch.send(val)
+-}
+-
+-// Report that client has closed the channel that is sending to us.
+-// The header is passed by value to avoid issues of overwriting.
+-func (client *expClient) serveClosed(hdr header) {
+-	nch := client.getChan(&hdr, Recv)
+-	if nch == nil {
+-		return
+-	}
+-	nch.close()
+-}
+-
+-func (client *expClient) unackedCount() int64 {
+-	client.mu.Lock()
+-	n := client.seqNum - client.ackNum
+-	client.mu.Unlock()
+-	return n
+-}
+-
+-func (client *expClient) seq() int64 {
+-	client.mu.Lock()
+-	n := client.seqNum
+-	client.mu.Unlock()
+-	return n
+-}
+-
+-func (client *expClient) ack() int64 {
+-	client.mu.Lock()
+-	n := client.seqNum
+-	client.mu.Unlock()
+-	return n
+-}
+-
+-// Serve waits for incoming connections on the listener
+-// and serves the Exporter's channels on each.
+-// It blocks until the listener is closed.
+-func (exp *Exporter) Serve(listener net.Listener) {
+-	for {
+-		conn, err := listener.Accept()
+-		if err != nil {
+-			expLog("listen:", err)
+-			break
+-		}
+-		go exp.ServeConn(conn)
+-	}
+-}
+-
+-// ServeConn exports the Exporter's channels on conn.
+-// It blocks until the connection is terminated.
+-func (exp *Exporter) ServeConn(conn io.ReadWriter) {
+-	exp.addClient(conn).run()
+-}
+-
+-// NewExporter creates a new Exporter that exports a set of channels.
+-func NewExporter() *Exporter {
+-	e := &Exporter{
+-		clientSet: &clientSet{
+-			names:   make(map[string]*chanDir),
+-			clients: make(map[unackedCounter]bool),
+-		},
+-	}
+-	return e
+-}
+-
+-// ListenAndServe exports the exporter's channels through the
+-// given network and local address defined as in net.Listen.
+-func (exp *Exporter) ListenAndServe(network, localaddr string) error {
+-	listener, err := net.Listen(network, localaddr)
+-	if err != nil {
+-		return err
+-	}
+-	go exp.Serve(listener)
+-	return nil
+-}
+-
+-// addClient creates a new expClient and records its existence
+-func (exp *Exporter) addClient(conn io.ReadWriter) *expClient {
+-	client := newClient(exp, conn)
+-	exp.mu.Lock()
+-	exp.clients[client] = true
+-	exp.mu.Unlock()
+-	return client
+-}
+-
+-// delClient forgets the client existed
+-func (exp *Exporter) delClient(client *expClient) {
+-	exp.mu.Lock()
+-	delete(exp.clients, client)
+-	exp.mu.Unlock()
+-}
+-
+-// Drain waits until all messages sent from this exporter/importer, including
+-// those not yet sent to any client and possibly including those sent while
+-// Drain was executing, have been received by the importer.  In short, it
+-// waits until all the exporter's messages have been received by a client.
+-// If the timeout is positive and Drain takes longer than that to complete,
+-// an error is returned.
+-func (exp *Exporter) Drain(timeout time.Duration) error {
+-	// This wrapper function is here so the method's comment will appear in godoc.
+-	return exp.clientSet.drain(timeout)
+-}
+-
+-// Sync waits until all clients of the exporter have received the messages
+-// that were sent at the time Sync was invoked.  Unlike Drain, it does not
+-// wait for messages sent while it is running or messages that have not been
+-// dispatched to any client.  If the timeout is positive and Sync takes longer
+-// than that to complete, an error is returned.
+-func (exp *Exporter) Sync(timeout time.Duration) error {
+-	// This wrapper function is here so the method's comment will appear in godoc.
+-	return exp.clientSet.sync(timeout)
+-}
+-
+-func checkChan(chT interface{}, dir Dir) (reflect.Value, error) {
+-	chanType := reflect.TypeOf(chT)
+-	if chanType.Kind() != reflect.Chan {
+-		return reflect.Value{}, errors.New("not a channel")
+-	}
+-	if dir != Send && dir != Recv {
+-		return reflect.Value{}, errors.New("unknown channel direction")
+-	}
+-	switch chanType.ChanDir() {
+-	case reflect.BothDir:
+-	case reflect.SendDir:
+-		if dir != Recv {
+-			return reflect.Value{}, errors.New("to import/export with Send, must provide <-chan")
+-		}
+-	case reflect.RecvDir:
+-		if dir != Send {
+-			return reflect.Value{}, errors.New("to import/export with Recv, must provide chan<-")
+-		}
+-	}
+-	return reflect.ValueOf(chT), nil
+-}
+-
+-// Export exports a channel of a given type and specified direction.  The
+-// channel to be exported is provided in the call and may be of arbitrary
+-// channel type.
+-// Despite the literal signature, the effective signature is
+-//	Export(name string, chT chan T, dir Dir)
+-func (exp *Exporter) Export(name string, chT interface{}, dir Dir) error {
+-	ch, err := checkChan(chT, dir)
+-	if err != nil {
+-		return err
+-	}
+-	exp.mu.Lock()
+-	defer exp.mu.Unlock()
+-	_, present := exp.names[name]
+-	if present {
+-		return errors.New("channel name already being exported:" + name)
+-	}
+-	exp.names[name] = &chanDir{ch, dir}
+-	return nil
+-}
+-
+-// Hangup disassociates the named channel from the Exporter and closes
+-// the channel.  Messages in flight for the channel may be dropped.
+-func (exp *Exporter) Hangup(name string) error {
+-	exp.mu.Lock()
+-	chDir, ok := exp.names[name]
+-	if ok {
+-		delete(exp.names, name)
+-	}
+-	// TODO drop all instances of channel from client sets
+-	exp.mu.Unlock()
+-	if !ok {
+-		return errors.New("netchan export: hangup: no such channel: " + name)
+-	}
+-	chDir.ch.Close()
+-	return nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/old/netchan/import.go gcc-4.8.1/libgo/go/old/netchan/import.go
+--- gcc-4.8.1.orig/libgo/go/old/netchan/import.go	2012-01-11 19:31:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/old/netchan/import.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,287 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package netchan
+-
+-import (
+-	"errors"
+-	"io"
+-	"log"
+-	"net"
+-	"reflect"
+-	"sync"
+-	"time"
+-)
+-
+-// Import
+-
+-// impLog is a logging convenience function.  The first argument must be a string.
+-func impLog(args ...interface{}) {
+-	args[0] = "netchan import: " + args[0].(string)
+-	log.Print(args...)
+-}
+-
+-// An Importer allows a set of channels to be imported from a single
+-// remote machine/network port.  A machine may have multiple
+-// importers, even from the same machine/network port.
+-type Importer struct {
+-	*encDec
+-	chanLock sync.Mutex // protects access to channel map
+-	names    map[string]*netChan
+-	chans    map[int]*netChan
+-	errors   chan error
+-	maxId    int
+-	mu       sync.Mutex // protects remaining fields
+-	unacked  int64      // number of unacknowledged sends.
+-	seqLock  sync.Mutex // guarantees messages are in sequence, only locked under mu
+-}
+-
+-// NewImporter creates a new Importer object to import a set of channels
+-// from the given connection. The Exporter must be available and serving when
+-// the Importer is created.
+-func NewImporter(conn io.ReadWriter) *Importer {
+-	imp := new(Importer)
+-	imp.encDec = newEncDec(conn)
+-	imp.chans = make(map[int]*netChan)
+-	imp.names = make(map[string]*netChan)
+-	imp.errors = make(chan error, 10)
+-	imp.unacked = 0
+-	go imp.run()
+-	return imp
+-}
+-
+-// Import imports a set of channels from the given network and address.
+-func Import(network, remoteaddr string) (*Importer, error) {
+-	conn, err := net.Dial(network, remoteaddr)
+-	if err != nil {
+-		return nil, err
+-	}
+-	return NewImporter(conn), nil
+-}
+-
+-// shutdown closes all channels for which we are receiving data from the remote side.
+-func (imp *Importer) shutdown() {
+-	imp.chanLock.Lock()
+-	for _, ich := range imp.chans {
+-		if ich.dir == Recv {
+-			ich.close()
+-		}
+-	}
+-	imp.chanLock.Unlock()
+-}
+-
+-// Handle the data from a single imported data stream, which will
+-// have the form
+-//	(response, data)*
+-// The response identifies by name which channel is transmitting data.
+-func (imp *Importer) run() {
+-	// Loop on responses; requests are sent by ImportNValues()
+-	hdr := new(header)
+-	hdrValue := reflect.ValueOf(hdr)
+-	ackHdr := new(header)
+-	err := new(error_)
+-	errValue := reflect.ValueOf(err)
+-	for {
+-		*hdr = header{}
+-		if e := imp.decode(hdrValue); e != nil {
+-			if e != io.EOF {
+-				impLog("header:", e)
+-				imp.shutdown()
+-			}
+-			return
+-		}
+-		switch hdr.PayloadType {
+-		case payData:
+-			// done lower in loop
+-		case payError:
+-			if e := imp.decode(errValue); e != nil {
+-				impLog("error:", e)
+-				return
+-			}
+-			if err.Error != "" {
+-				impLog("response error:", err.Error)
+-				select {
+-				case imp.errors <- errors.New(err.Error):
+-					continue // errors are not acknowledged
+-				default:
+-					imp.shutdown()
+-					return
+-				}
+-			}
+-		case payClosed:
+-			nch := imp.getChan(hdr.Id, false)
+-			if nch != nil {
+-				nch.close()
+-			}
+-			continue // closes are not acknowledged.
+-		case payAckSend:
+-			// we can receive spurious acks if the channel is
+-			// hung up, so we ask getChan to ignore any errors.
+-			nch := imp.getChan(hdr.Id, true)
+-			if nch != nil {
+-				nch.acked()
+-				imp.mu.Lock()
+-				imp.unacked--
+-				imp.mu.Unlock()
+-			}
+-			continue
+-		default:
+-			impLog("unexpected payload type:", hdr.PayloadType)
+-			return
+-		}
+-		nch := imp.getChan(hdr.Id, false)
+-		if nch == nil {
+-			continue
+-		}
+-		if nch.dir != Recv {
+-			impLog("cannot happen: receive from non-Recv channel")
+-			return
+-		}
+-		// Acknowledge receipt
+-		ackHdr.Id = hdr.Id
+-		ackHdr.SeqNum = hdr.SeqNum
+-		imp.encode(ackHdr, payAck, nil)
+-		// Create a new value for each received item.
+-		value := reflect.New(nch.ch.Type().Elem()).Elem()
+-		if e := imp.decode(value); e != nil {
+-			impLog("importer value decode:", e)
+-			return
+-		}
+-		nch.send(value)
+-	}
+-}
+-
+-func (imp *Importer) getChan(id int, errOk bool) *netChan {
+-	imp.chanLock.Lock()
+-	ich := imp.chans[id]
+-	imp.chanLock.Unlock()
+-	if ich == nil {
+-		if !errOk {
+-			impLog("unknown id in netchan request: ", id)
+-		}
+-		return nil
+-	}
+-	return ich
+-}
+-
+-// Errors returns a channel from which transmission and protocol errors
+-// can be read. Clients of the importer are not required to read the error
+-// channel for correct execution. However, if too many errors occur
+-// without being read from the error channel, the importer will shut down.
+-func (imp *Importer) Errors() chan error {
+-	return imp.errors
+-}
+-
+-// Import imports a channel of the given type, size and specified direction.
+-// It is equivalent to ImportNValues with a count of -1, meaning unbounded.
+-func (imp *Importer) Import(name string, chT interface{}, dir Dir, size int) error {
+-	return imp.ImportNValues(name, chT, dir, size, -1)
+-}
+-
+-// ImportNValues imports a channel of the given type and specified
+-// direction and then receives or transmits up to n values on that
+-// channel.  A value of n==-1 implies an unbounded number of values.  The
+-// channel will have buffer space for size values, or 1 value if size < 1.
+-// The channel to be bound to the remote site's channel is provided
+-// in the call and may be of arbitrary channel type.
+-// Despite the literal signature, the effective signature is
+-//	ImportNValues(name string, chT chan T, dir Dir, size, n int) error
+-// Example usage:
+-//	imp, err := NewImporter("tcp", "netchanserver.mydomain.com:1234")
+-//	if err != nil { log.Fatal(err) }
+-//	ch := make(chan myType)
+-//	err = imp.ImportNValues("name", ch, Recv, 1, 1)
+-//	if err != nil { log.Fatal(err) }
+-//	fmt.Printf("%+v\n", <-ch)
+-func (imp *Importer) ImportNValues(name string, chT interface{}, dir Dir, size, n int) error {
+-	ch, err := checkChan(chT, dir)
+-	if err != nil {
+-		return err
+-	}
+-	imp.chanLock.Lock()
+-	defer imp.chanLock.Unlock()
+-	_, present := imp.names[name]
+-	if present {
+-		return errors.New("channel name already being imported:" + name)
+-	}
+-	if size < 1 {
+-		size = 1
+-	}
+-	id := imp.maxId
+-	imp.maxId++
+-	nch := newNetChan(name, id, &chanDir{ch, dir}, imp.encDec, size, int64(n))
+-	imp.names[name] = nch
+-	imp.chans[id] = nch
+-	// Tell the other side about this channel.
+-	hdr := &header{Id: id}
+-	req := &request{Name: name, Count: int64(n), Dir: dir, Size: size}
+-	if err = imp.encode(hdr, payRequest, req); err != nil {
+-		impLog("request encode:", err)
+-		return err
+-	}
+-	if dir == Send {
+-		go func() {
+-			for i := 0; n == -1 || i < n; i++ {
+-				val, ok := nch.recv()
+-				if !ok {
+-					if err = imp.encode(hdr, payClosed, nil); err != nil {
+-						impLog("error encoding client closed message:", err)
+-					}
+-					return
+-				}
+-				// We hold the lock during transmission to guarantee messages are
+-				// sent in order.
+-				imp.mu.Lock()
+-				imp.unacked++
+-				imp.seqLock.Lock()
+-				imp.mu.Unlock()
+-				if err = imp.encode(hdr, payData, val.Interface()); err != nil {
+-					impLog("error encoding client send:", err)
+-					return
+-				}
+-				imp.seqLock.Unlock()
+-			}
+-		}()
+-	}
+-	return nil
+-}
+-
+-// Hangup disassociates the named channel from the Importer and closes
+-// the channel.  Messages in flight for the channel may be dropped.
+-func (imp *Importer) Hangup(name string) error {
+-	imp.chanLock.Lock()
+-	defer imp.chanLock.Unlock()
+-	nc := imp.names[name]
+-	if nc == nil {
+-		return errors.New("netchan import: hangup: no such channel: " + name)
+-	}
+-	delete(imp.names, name)
+-	delete(imp.chans, nc.id)
+-	nc.close()
+-	return nil
+-}
+-
+-func (imp *Importer) unackedCount() int64 {
+-	imp.mu.Lock()
+-	n := imp.unacked
+-	imp.mu.Unlock()
+-	return n
+-}
+-
+-// Drain waits until all messages sent from this exporter/importer, including
+-// those not yet sent to any server and possibly including those sent while
+-// Drain was executing, have been received by the exporter.  In short, it
+-// waits until all the importer's messages have been received.
+-// If the timeout (measured in nanoseconds) is positive and Drain takes
+-// longer than that to complete, an error is returned.
+-func (imp *Importer) Drain(timeout int64) error {
+-	deadline := time.Now().Add(time.Duration(timeout))
+-	for imp.unackedCount() > 0 {
+-		if timeout > 0 && time.Now().After(deadline) {
+-			return errors.New("timeout")
+-		}
+-		time.Sleep(100 * time.Millisecond)
+-	}
+-	return nil
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/old/netchan/netchan_test.go gcc-4.8.1/libgo/go/old/netchan/netchan_test.go
+--- gcc-4.8.1.orig/libgo/go/old/netchan/netchan_test.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/old/netchan/netchan_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,447 +0,0 @@
+-// Copyright 2010 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package netchan
+-
+-import (
+-	"net"
+-	"strings"
+-	"testing"
+-	"time"
+-)
+-
+-const count = 10     // number of items in most tests
+-const closeCount = 5 // number of items when sender closes early
+-
+-const base = 23
+-
+-func exportSend(exp *Exporter, n int, t *testing.T, done chan bool) {
+-	ch := make(chan int)
+-	err := exp.Export("exportedSend", ch, Send)
+-	if err != nil {
+-		t.Fatal("exportSend:", err)
+-	}
+-	go func() {
+-		for i := 0; i < n; i++ {
+-			ch <- base + i
+-		}
+-		close(ch)
+-		if done != nil {
+-			done <- true
+-		}
+-	}()
+-}
+-
+-func exportReceive(exp *Exporter, t *testing.T, expDone chan bool) {
+-	ch := make(chan int)
+-	err := exp.Export("exportedRecv", ch, Recv)
+-	expDone <- true
+-	if err != nil {
+-		t.Fatal("exportReceive:", err)
+-	}
+-	for i := 0; i < count; i++ {
+-		v, ok := <-ch
+-		if !ok {
+-			if i != closeCount {
+-				t.Errorf("exportReceive expected close at %d; got one at %d", closeCount, i)
+-			}
+-			break
+-		}
+-		if v != base+i {
+-			t.Errorf("export Receive: bad value: expected %d+%d=%d; got %d", base, i, base+i, v)
+-		}
+-	}
+-}
+-
+-func importSend(imp *Importer, n int, t *testing.T, done chan bool) {
+-	ch := make(chan int)
+-	err := imp.ImportNValues("exportedRecv", ch, Send, 3, -1)
+-	if err != nil {
+-		t.Fatal("importSend:", err)
+-	}
+-	go func() {
+-		for i := 0; i < n; i++ {
+-			ch <- base + i
+-		}
+-		close(ch)
+-		if done != nil {
+-			done <- true
+-		}
+-	}()
+-}
+-
+-func importReceive(imp *Importer, t *testing.T, done chan bool) {
+-	ch := make(chan int)
+-	err := imp.ImportNValues("exportedSend", ch, Recv, 3, count)
+-	if err != nil {
+-		t.Fatal("importReceive:", err)
+-	}
+-	for i := 0; i < count; i++ {
+-		v, ok := <-ch
+-		if !ok {
+-			if i != closeCount {
+-				t.Errorf("importReceive expected close at %d; got one at %d", closeCount, i)
+-			}
+-			break
+-		}
+-		if v != base+i {
+-			t.Errorf("importReceive: bad value: expected %d+%d=%d; got %+d", base, i, base+i, v)
+-		}
+-	}
+-	if done != nil {
+-		done <- true
+-	}
+-}
+-
+-func TestExportSendImportReceive(t *testing.T) {
+-	exp, imp := pair(t)
+-	exportSend(exp, count, t, nil)
+-	importReceive(imp, t, nil)
+-}
+-
+-func TestExportReceiveImportSend(t *testing.T) {
+-	exp, imp := pair(t)
+-	expDone := make(chan bool)
+-	done := make(chan bool)
+-	go func() {
+-		exportReceive(exp, t, expDone)
+-		done <- true
+-	}()
+-	<-expDone
+-	importSend(imp, count, t, nil)
+-	<-done
+-}
+-
+-func TestClosingExportSendImportReceive(t *testing.T) {
+-	exp, imp := pair(t)
+-	exportSend(exp, closeCount, t, nil)
+-	importReceive(imp, t, nil)
+-}
+-
+-func TestClosingImportSendExportReceive(t *testing.T) {
+-	exp, imp := pair(t)
+-	expDone := make(chan bool)
+-	done := make(chan bool)
+-	go func() {
+-		exportReceive(exp, t, expDone)
+-		done <- true
+-	}()
+-	<-expDone
+-	importSend(imp, closeCount, t, nil)
+-	<-done
+-}
+-
+-func TestErrorForIllegalChannel(t *testing.T) {
+-	exp, imp := pair(t)
+-	// Now export a channel.
+-	ch := make(chan int, 1)
+-	err := exp.Export("aChannel", ch, Send)
+-	if err != nil {
+-		t.Fatal("export:", err)
+-	}
+-	ch <- 1234
+-	close(ch)
+-	// Now try to import a different channel.
+-	ch = make(chan int)
+-	err = imp.Import("notAChannel", ch, Recv, 1)
+-	if err != nil {
+-		t.Fatal("import:", err)
+-	}
+-	// Expect an error now.  Start a timeout.
+-	timeout := make(chan bool, 1) // buffered so closure will not hang around.
+-	go func() {
+-		time.Sleep(10 * time.Second) // very long, to give even really slow machines a chance.
+-		timeout <- true
+-	}()
+-	select {
+-	case err = <-imp.Errors():
+-		if strings.Index(err.Error(), "no such channel") < 0 {
+-			t.Error("wrong error for nonexistent channel:", err)
+-		}
+-	case <-timeout:
+-		t.Error("import of nonexistent channel did not receive an error")
+-	}
+-}
+-
+-// Not a great test but it does at least invoke Drain.
+-func TestExportDrain(t *testing.T) {
+-	exp, imp := pair(t)
+-	done := make(chan bool)
+-	go func() {
+-		exportSend(exp, closeCount, t, nil)
+-		done <- true
+-	}()
+-	<-done
+-	go importReceive(imp, t, done)
+-	exp.Drain(0)
+-	<-done
+-}
+-
+-// Not a great test but it does at least invoke Drain.
+-func TestImportDrain(t *testing.T) {
+-	exp, imp := pair(t)
+-	expDone := make(chan bool)
+-	go exportReceive(exp, t, expDone)
+-	<-expDone
+-	importSend(imp, closeCount, t, nil)
+-	imp.Drain(0)
+-}
+-
+-// Not a great test but it does at least invoke Sync.
+-func TestExportSync(t *testing.T) {
+-	exp, imp := pair(t)
+-	done := make(chan bool)
+-	exportSend(exp, closeCount, t, nil)
+-	go importReceive(imp, t, done)
+-	exp.Sync(0)
+-	<-done
+-}
+-
+-// Test hanging up the send side of an export.
+-// TODO: test hanging up the receive side of an export.
+-func TestExportHangup(t *testing.T) {
+-	exp, imp := pair(t)
+-	ech := make(chan int)
+-	err := exp.Export("exportedSend", ech, Send)
+-	if err != nil {
+-		t.Fatal("export:", err)
+-	}
+-	// Prepare to receive two values. We'll actually deliver only one.
+-	ich := make(chan int)
+-	err = imp.ImportNValues("exportedSend", ich, Recv, 1, 2)
+-	if err != nil {
+-		t.Fatal("import exportedSend:", err)
+-	}
+-	// Send one value, receive it.
+-	const Value = 1234
+-	ech <- Value
+-	v := <-ich
+-	if v != Value {
+-		t.Fatal("expected", Value, "got", v)
+-	}
+-	// Now hang up the channel.  Importer should see it close.
+-	exp.Hangup("exportedSend")
+-	v, ok := <-ich
+-	if ok {
+-		t.Fatal("expected channel to be closed; got value", v)
+-	}
+-}
+-
+-// Test hanging up the send side of an import.
+-// TODO: test hanging up the receive side of an import.
+-func TestImportHangup(t *testing.T) {
+-	exp, imp := pair(t)
+-	ech := make(chan int)
+-	err := exp.Export("exportedRecv", ech, Recv)
+-	if err != nil {
+-		t.Fatal("export:", err)
+-	}
+-	// Prepare to Send two values. We'll actually deliver only one.
+-	ich := make(chan int)
+-	err = imp.ImportNValues("exportedRecv", ich, Send, 1, 2)
+-	if err != nil {
+-		t.Fatal("import exportedRecv:", err)
+-	}
+-	// Send one value, receive it.
+-	const Value = 1234
+-	ich <- Value
+-	v := <-ech
+-	if v != Value {
+-		t.Fatal("expected", Value, "got", v)
+-	}
+-	// Now hang up the channel.  Exporter should see it close.
+-	imp.Hangup("exportedRecv")
+-	v, ok := <-ech
+-	if ok {
+-		t.Fatal("expected channel to be closed; got value", v)
+-	}
+-}
+-
+-// loop back exportedRecv to exportedSend,
+-// but receive a value from ctlch before starting the loop.
+-func exportLoopback(exp *Exporter, t *testing.T) {
+-	inch := make(chan int)
+-	if err := exp.Export("exportedRecv", inch, Recv); err != nil {
+-		t.Fatal("exportRecv")
+-	}
+-
+-	outch := make(chan int)
+-	if err := exp.Export("exportedSend", outch, Send); err != nil {
+-		t.Fatal("exportSend")
+-	}
+-
+-	ctlch := make(chan int)
+-	if err := exp.Export("exportedCtl", ctlch, Recv); err != nil {
+-		t.Fatal("exportRecv")
+-	}
+-
+-	go func() {
+-		<-ctlch
+-		for i := 0; i < count; i++ {
+-			x := <-inch
+-			if x != base+i {
+-				t.Errorf("exportLoopback expected %d; got %d", i, x)
+-			}
+-			outch <- x
+-		}
+-	}()
+-}
+-
+-// This test checks that channel operations can proceed
+-// even when other concurrent operations are blocked.
+-func TestIndependentSends(t *testing.T) {
+-	if testing.Short() {
+-		t.Logf("disabled test during -short")
+-		return
+-	}
+-	exp, imp := pair(t)
+-
+-	exportLoopback(exp, t)
+-
+-	importSend(imp, count, t, nil)
+-	done := make(chan bool)
+-	go importReceive(imp, t, done)
+-
+-	// wait for export side to try to deliver some values.
+-	time.Sleep(250 * time.Millisecond)
+-
+-	ctlch := make(chan int)
+-	if err := imp.ImportNValues("exportedCtl", ctlch, Send, 1, 1); err != nil {
+-		t.Fatal("importSend:", err)
+-	}
+-	ctlch <- 0
+-
+-	<-done
+-}
+-
+-// This test cross-connects a pair of exporter/importer pairs.
+-type value struct {
+-	I      int
+-	Source string
+-}
+-
+-func TestCrossConnect(t *testing.T) {
+-	e1, i1 := pair(t)
+-	e2, i2 := pair(t)
+-
+-	crossExport(e1, e2, t)
+-	crossImport(i1, i2, t)
+-}
+-
+-// Export side of cross-traffic.
+-func crossExport(e1, e2 *Exporter, t *testing.T) {
+-	s := make(chan value)
+-	err := e1.Export("exportedSend", s, Send)
+-	if err != nil {
+-		t.Fatal("exportSend:", err)
+-	}
+-
+-	r := make(chan value)
+-	err = e2.Export("exportedReceive", r, Recv)
+-	if err != nil {
+-		t.Fatal("exportReceive:", err)
+-	}
+-
+-	go crossLoop("export", s, r, t)
+-}
+-
+-// Import side of cross-traffic.
+-func crossImport(i1, i2 *Importer, t *testing.T) {
+-	s := make(chan value)
+-	err := i2.Import("exportedReceive", s, Send, 2)
+-	if err != nil {
+-		t.Fatal("import of exportedReceive:", err)
+-	}
+-
+-	r := make(chan value)
+-	err = i1.Import("exportedSend", r, Recv, 2)
+-	if err != nil {
+-		t.Fatal("import of exported Send:", err)
+-	}
+-
+-	crossLoop("import", s, r, t)
+-}
+-
+-// Cross-traffic: send and receive 'count' numbers.
+-func crossLoop(name string, s, r chan value, t *testing.T) {
+-	for si, ri := 0, 0; si < count && ri < count; {
+-		select {
+-		case s <- value{si, name}:
+-			si++
+-		case v := <-r:
+-			if v.I != ri {
+-				t.Errorf("loop: bad value: expected %d, hello; got %+v", ri, v)
+-			}
+-			ri++
+-		}
+-	}
+-}
+-
+-const flowCount = 100
+-
+-// test flow control from exporter to importer.
+-func TestExportFlowControl(t *testing.T) {
+-	if testing.Short() {
+-		t.Logf("disabled test during -short")
+-		return
+-	}
+-	exp, imp := pair(t)
+-
+-	sendDone := make(chan bool, 1)
+-	exportSend(exp, flowCount, t, sendDone)
+-
+-	ch := make(chan int)
+-	err := imp.ImportNValues("exportedSend", ch, Recv, 20, -1)
+-	if err != nil {
+-		t.Fatal("importReceive:", err)
+-	}
+-
+-	testFlow(sendDone, ch, flowCount, t)
+-}
+-
+-// test flow control from importer to exporter.
+-func TestImportFlowControl(t *testing.T) {
+-	if testing.Short() {
+-		t.Logf("disabled test during -short")
+-		return
+-	}
+-	exp, imp := pair(t)
+-
+-	ch := make(chan int)
+-	err := exp.Export("exportedRecv", ch, Recv)
+-	if err != nil {
+-		t.Fatal("importReceive:", err)
+-	}
+-
+-	sendDone := make(chan bool, 1)
+-	importSend(imp, flowCount, t, sendDone)
+-	testFlow(sendDone, ch, flowCount, t)
+-}
+-
+-func testFlow(sendDone chan bool, ch <-chan int, N int, t *testing.T) {
+-	go func() {
+-		time.Sleep(500 * time.Millisecond)
+-		sendDone <- false
+-	}()
+-
+-	if <-sendDone {
+-		t.Fatal("send did not block")
+-	}
+-	n := 0
+-	for i := range ch {
+-		t.Log("after blocking, got value ", i)
+-		n++
+-	}
+-	if n != N {
+-		t.Fatalf("expected %d values; got %d", N, n)
+-	}
+-}
+-
+-func pair(t *testing.T) (*Exporter, *Importer) {
+-	c0, c1 := net.Pipe()
+-	exp := NewExporter()
+-	go exp.ServeConn(c0)
+-	imp := NewImporter(c1)
+-	return exp, imp
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/doc.go gcc-4.8.1/libgo/go/os/doc.go
+--- gcc-4.8.1.orig/libgo/go/os/doc.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -79,6 +79,8 @@
+ // SysUsage returns system-dependent resource usage information about
+ // the exited process.  Convert it to the appropriate underlying
+ // type, such as *syscall.Rusage on Unix, to access its contents.
++// (On Unix, *syscall.Rusage matches struct rusage as defined in the
++// getrusage(2) manual page.)
+ func (p *ProcessState) SysUsage() interface{} {
+ 	return p.sysUsage()
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/os/env_unix_test.go gcc-4.8.1/libgo/go/os/env_unix_test.go
+--- gcc-4.8.1.orig/libgo/go/os/env_unix_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/env_unix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,30 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin freebsd linux netbsd openbsd
++
++package os_test
++
++import (
++	. "os"
++	"testing"
++)
++
++var setenvEinvalTests = []struct {
++	k, v string
++}{
++	{"", ""},      // empty key
++	{"k=v", ""},   // '=' in key
++	{"\x00", ""},  // '\x00' in key
++	{"k", "\x00"}, // '\x00' in value
++}
++
++func TestSetenvUnixEinval(t *testing.T) {
++	for _, tt := range setenvEinvalTests {
++		err := Setenv(tt.k, tt.v)
++		if err == nil {
++			t.Errorf(`Setenv(%q, %q) == nil, want error`, tt.k, tt.v)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/exec.go gcc-4.8.1/libgo/go/os/exec/exec.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/exec.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/exec.go	2013-07-16 01:55:04.520470000 -0500
+@@ -235,6 +235,8 @@
+ // Start starts the specified command but does not wait for it to complete.
+ func (c *Cmd) Start() error {
+ 	if c.err != nil {
++		c.closeDescriptors(c.closeAfterStart)
++		c.closeDescriptors(c.closeAfterWait)
+ 		return c.err
+ 	}
+ 	if c.Process != nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/exec_test.go gcc-4.8.1/libgo/go/os/exec/exec_test.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/exec_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/exec_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -14,17 +14,23 @@
+ 	"net/http"
+ 	"net/http/httptest"
+ 	"os"
++	"path/filepath"
+ 	"runtime"
+ 	"strconv"
+ 	"strings"
+ 	"testing"
++	"time"
+ )
+ 
+ func helperCommand(s ...string) *Cmd {
+ 	cs := []string{"-test.run=TestHelperProcess", "--"}
+ 	cs = append(cs, s...)
+ 	cmd := Command(os.Args[0], cs...)
+-	cmd.Env = append([]string{"GO_WANT_HELPER_PROCESS=1"}, os.Environ()...)
++	cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"}
++	path := os.Getenv("LD_LIBRARY_PATH")
++	if path != "" {
++		cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+path)
++	}
+ 	return cmd
+ }
+ 
+@@ -83,10 +89,16 @@
+ 
+ func TestExitStatus(t *testing.T) {
+ 	// Test that exit values are returned correctly
+-	err := helperCommand("exit", "42").Run()
++	cmd := helperCommand("exit", "42")
++	err := cmd.Run()
++	want := "exit status 42"
++	switch runtime.GOOS {
++	case "plan9":
++		want = fmt.Sprintf("exit status: '%s %d: 42'", filepath.Base(cmd.Path), cmd.ProcessState.Pid())
++	}
+ 	if werr, ok := err.(*ExitError); ok {
+-		if s, e := werr.Error(), "exit status 42"; s != e {
+-			t.Errorf("from exit 42 got exit %q, want %q", s, e)
++		if s := werr.Error(); s != want {
++			t.Errorf("from exit 42 got exit %q, want %q", s, want)
+ 		}
+ 	} else {
+ 		t.Fatalf("expected *ExitError from exit 42; got %T: %v", err, err)
+@@ -144,8 +156,141 @@
+ 	check("Wait", err)
+ }
+ 
++// Issue 5071
++func TestPipeLookPathLeak(t *testing.T) {
++	fd0 := numOpenFDS(t)
++	for i := 0; i < 4; i++ {
++		cmd := Command("something-that-does-not-exist-binary")
++		cmd.StdoutPipe()
++		cmd.StderrPipe()
++		cmd.StdinPipe()
++		if err := cmd.Run(); err == nil {
++			t.Fatal("unexpected success")
++		}
++	}
++	fdGrowth := numOpenFDS(t) - fd0
++	if fdGrowth > 2 {
++		t.Errorf("leaked %d fds; want ~0", fdGrowth)
++	}
++}
++
++func numOpenFDS(t *testing.T) int {
++	lsof, err := Command("lsof", "-n", "-p", strconv.Itoa(os.Getpid())).Output()
++	if err != nil {
++		t.Skip("skipping test; error finding or running lsof")
++		return 0
++	}
++	return bytes.Count(lsof, []byte("\n"))
++}
++
+ var testedAlreadyLeaked = false
+ 
++// basefds returns the number of expected file descriptors
++// to be present in a process at start.
++func basefds() uintptr {
++	n := os.Stderr.Fd() + 1
++
++	// Go runtime for 32-bit Plan 9 requires that /dev/bintime
++	// be kept open.
++	// See ../../runtime/time_plan9_386.c:/^runtimeÂ·nanotime
++	if runtime.GOOS == "plan9" && runtime.GOARCH == "386" {
++		n++
++	}
++	return n
++}
++
++func TestExtraFilesFDShuffle(t *testing.T) {
++	t.Skip("TODO: TestExtraFilesFDShuffle is too non-portable; skipping")
++
++	// syscall.StartProcess maps all the FDs passed to it in
++	// ProcAttr.Files (the concatenation of stdin,stdout,stderr and
++	// ExtraFiles) into consecutive FDs in the child, that is:
++	// Files{11, 12, 6, 7, 9, 3} should result in the file
++	// represented by FD 11 in the parent being made available as 0
++	// in the child, 12 as 1, etc.
++	//
++	// We want to test that FDs in the child do not get overwritten
++	// by one another as this shuffle occurs. The original implementation
++	// was buggy in that in some data dependent cases it would ovewrite
++	// stderr in the child with one of the ExtraFile members.
++	// Testing for this case is difficult because it relies on using
++	// the same FD values as that case. In particular, an FD of 3
++	// must be at an index of 4 or higher in ProcAttr.Files and
++	// the FD of the write end of the Stderr pipe (as obtained by
++	// StderrPipe()) must be the same as the size of ProcAttr.Files;
++	// therefore we test that the read end of this pipe (which is what
++	// is returned to the parent by StderrPipe() being one less than
++	// the size of ProcAttr.Files, i.e. 3+len(cmd.ExtraFiles).
++	//
++	// Moving this test case around within the overall tests may
++	// affect the FDs obtained and hence the checks to catch these cases.
++	npipes := 2
++	c := helperCommand("extraFilesAndPipes", strconv.Itoa(npipes+1))
++	rd, wr, _ := os.Pipe()
++	defer rd.Close()
++	if rd.Fd() != 3 {
++		t.Errorf("bad test value for test pipe: fd %d", rd.Fd())
++	}
++	stderr, _ := c.StderrPipe()
++	wr.WriteString("_LAST")
++	wr.Close()
++
++	pipes := make([]struct {
++		r, w *os.File
++	}, npipes)
++	data := []string{"a", "b"}
++
++	for i := 0; i < npipes; i++ {
++		r, w, err := os.Pipe()
++		if err != nil {
++			t.Fatalf("unexpected error creating pipe: %s", err)
++		}
++		pipes[i].r = r
++		pipes[i].w = w
++		w.WriteString(data[i])
++		c.ExtraFiles = append(c.ExtraFiles, pipes[i].r)
++		defer func() {
++			r.Close()
++			w.Close()
++		}()
++	}
++	// Put fd 3 at the end.
++	c.ExtraFiles = append(c.ExtraFiles, rd)
++
++	stderrFd := int(stderr.(*os.File).Fd())
++	if stderrFd != ((len(c.ExtraFiles) + 3) - 1) {
++		t.Errorf("bad test value for stderr pipe")
++	}
++
++	expected := "child: " + strings.Join(data, "") + "_LAST"
++
++	err := c.Start()
++	if err != nil {
++		t.Fatalf("Run: %v", err)
++	}
++	ch := make(chan string, 1)
++	go func(ch chan string) {
++		buf := make([]byte, 512)
++		n, err := stderr.Read(buf)
++		if err != nil {
++			t.Fatalf("Read: %s", err)
++			ch <- err.Error()
++		} else {
++			ch <- string(buf[:n])
++		}
++		close(ch)
++	}(ch)
++	select {
++	case m := <-ch:
++		if m != expected {
++			t.Errorf("Read: '%s' not '%s'", m, expected)
++		}
++	case <-time.After(5 * time.Second):
++		t.Errorf("Read timedout")
++	}
++	c.Wait()
++}
++
+ func TestExtraFiles(t *testing.T) {
+ 	if runtime.GOOS == "windows" {
+ 		t.Skip("no operating system support; skipping")
+@@ -155,7 +300,7 @@
+ 	// our environment.
+ 	if !testedAlreadyLeaked {
+ 		testedAlreadyLeaked = true
+-		for fd := os.Stderr.Fd() + 1; fd <= 101; fd++ {
++		for fd := basefds(); fd <= 101; fd++ {
+ 			err := os.NewFile(fd, "").Close()
+ 			if err == nil {
+ 				t.Logf("Something already leaked - closed fd %d", fd)
+@@ -209,13 +354,16 @@
+ 	}
+ 
+ 	c := helperCommand("read3")
++	var stdout, stderr bytes.Buffer
++	c.Stdout = &stdout
++	c.Stderr = &stderr
+ 	c.ExtraFiles = []*os.File{tf}
+-	bs, err := c.CombinedOutput()
++	err = c.Run()
+ 	if err != nil {
+-		t.Fatalf("CombinedOutput: %v; output %q", err, bs)
++		t.Fatalf("Run: %v; stdout %q, stderr %q", err, stdout.Bytes(), stderr.Bytes())
+ 	}
+-	if string(bs) != text {
+-		t.Errorf("got %q; want %q", string(bs), text)
++	if stdout.String() != text {
++		t.Errorf("got stdout %q, stderr %q; want %q on stdout", stdout.String(), stderr.String(), text)
+ 	}
+ }
+ 
+@@ -265,6 +413,13 @@
+ 		}
+ 		la.Close()
+ 		lb.Close()
++		for _, f := range ca.ExtraFiles {
++			f.Close()
++		}
++		for _, f := range cb.ExtraFiles {
++			f.Close()
++		}
++
+ 	}
+ }
+ 
+@@ -360,7 +515,7 @@
+ 		default:
+ 			// Now verify that there are no other open fds.
+ 			var files []*os.File
+-			for wantfd := os.Stderr.Fd() + 2; wantfd <= 100; wantfd++ {
++			for wantfd := basefds() + 1; wantfd <= 100; wantfd++ {
+ 				f, err := os.Open(os.Args[0])
+ 				if err != nil {
+ 					fmt.Printf("error opening file with expected fd %d: %v", wantfd, err)
+@@ -384,7 +539,7 @@
+ 		// what we do with fd3 as long as we refer to it;
+ 		// closing it is the easy choice.
+ 		fd3.Close()
+-		os.Stderr.Write(bs)
++		os.Stdout.Write(bs)
+ 	case "exit":
+ 		n, _ := strconv.Atoi(args[0])
+ 		os.Exit(n)
+@@ -398,6 +553,35 @@
+ 			}
+ 		}
+ 		os.Exit(0)
++	case "extraFilesAndPipes":
++		n, _ := strconv.Atoi(args[0])
++		pipes := make([]*os.File, n)
++		for i := 0; i < n; i++ {
++			pipes[i] = os.NewFile(uintptr(3+i), strconv.Itoa(i))
++		}
++		response := ""
++		for i, r := range pipes {
++			ch := make(chan string, 1)
++			go func(c chan string) {
++				buf := make([]byte, 10)
++				n, err := r.Read(buf)
++				if err != nil {
++					fmt.Fprintf(os.Stderr, "Child: read error: %v on pipe %d\n", err, i)
++					os.Exit(1)
++				}
++				c <- string(buf[:n])
++				close(c)
++			}(ch)
++			select {
++			case m := <-ch:
++				response = response + m
++			case <-time.After(5 * time.Second):
++				fmt.Fprintf(os.Stderr, "Child: Timeout reading from pipe: %d\n", i)
++				os.Exit(1)
++			}
++		}
++		fmt.Fprintf(os.Stderr, "child: %s", response)
++		os.Exit(0)
+ 	default:
+ 		fmt.Fprintf(os.Stderr, "Unknown command %q\n", cmd)
+ 		os.Exit(2)
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/lp_plan9.go gcc-4.8.1/libgo/go/os/exec/lp_plan9.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/lp_plan9.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/lp_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,7 +8,6 @@
+ 	"errors"
+ 	"os"
+ 	"strings"
+-	"syscall"
+ )
+ 
+ // ErrNotFound is the error resulting if a path search failed to find an executable file.
+@@ -22,7 +21,7 @@
+ 	if m := d.Mode(); !m.IsDir() && m&0111 != 0 {
+ 		return nil
+ 	}
+-	return syscall.EPERM
++	return os.ErrPermission
+ }
+ 
+ // LookPath searches for an executable binary named file
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/lp_unix.go gcc-4.8.1/libgo/go/os/exec/lp_unix.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/lp_unix.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/lp_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -42,6 +42,9 @@
+ 		return "", &Error{file, err}
+ 	}
+ 	pathenv := os.Getenv("PATH")
++	if pathenv == "" {
++		return "", &Error{file, ErrNotFound}
++	}
+ 	for _, dir := range strings.Split(pathenv, ":") {
+ 		if dir == "" {
+ 			// Unix shell semantics: path element "" means "."
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/lp_unix_test.go gcc-4.8.1/libgo/go/os/exec/lp_unix_test.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/lp_unix_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/lp_unix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,55 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin freebsd linux netbsd openbsd
++
++package exec
++
++import (
++	"io/ioutil"
++	"os"
++	"testing"
++)
++
++func TestLookPathUnixEmptyPath(t *testing.T) {
++	tmp, err := ioutil.TempDir("", "TestLookPathUnixEmptyPath")
++	if err != nil {
++		t.Fatal("TempDir failed: ", err)
++	}
++	defer os.RemoveAll(tmp)
++	wd, err := os.Getwd()
++	if err != nil {
++		t.Fatal("Getwd failed: ", err)
++	}
++	err = os.Chdir(tmp)
++	if err != nil {
++		t.Fatal("Chdir failed: ", err)
++	}
++	defer os.Chdir(wd)
++
++	f, err := os.OpenFile("exec_me", os.O_CREATE|os.O_EXCL, 0700)
++	if err != nil {
++		t.Fatal("OpenFile failed: ", err)
++	}
++	err = f.Close()
++	if err != nil {
++		t.Fatal("Close failed: ", err)
++	}
++
++	pathenv := os.Getenv("PATH")
++	defer os.Setenv("PATH", pathenv)
++
++	err = os.Setenv("PATH", "")
++	if err != nil {
++		t.Fatal("Setenv failed: ", err)
++	}
++
++	path, err := LookPath("exec_me")
++	if err == nil {
++		t.Fatal("LookPath found exec_me in empty $PATH")
++	}
++	if path != "" {
++		t.Fatalf("LookPath path == %q when err != nil", path)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec/lp_windows.go gcc-4.8.1/libgo/go/os/exec/lp_windows.go
+--- gcc-4.8.1.orig/libgo/go/os/exec/lp_windows.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/exec/lp_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -72,7 +72,7 @@
+ 		return
+ 	}
+ 	if pathenv := os.Getenv(`PATH`); pathenv != `` {
+-		for _, dir := range strings.Split(pathenv, `;`) {
++		for _, dir := range splitList(pathenv) {
+ 			if f, err = findExecutable(dir+`\`+file, exts); err == nil {
+ 				return
+ 			}
+@@ -80,3 +80,36 @@
+ 	}
+ 	return ``, &Error{file, ErrNotFound}
+ }
++
++func splitList(path string) []string {
++	// The same implementation is used in SplitList in path/filepath;
++	// consider changing path/filepath when changing this.
++
++	if path == "" {
++		return []string{}
++	}
++
++	// Split path, respecting but preserving quotes.
++	list := []string{}
++	start := 0
++	quo := false
++	for i := 0; i < len(path); i++ {
++		switch c := path[i]; {
++		case c == '"':
++			quo = !quo
++		case c == os.PathListSeparator && !quo:
++			list = append(list, path[start:i])
++			start = i + 1
++		}
++	}
++	list = append(list, path[start:])
++
++	// Remove quotes.
++	for i, s := range list {
++		if strings.Contains(s, `"`) {
++			list[i] = strings.Replace(s, `"`, ``, -1)
++		}
++	}
++
++	return list
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/exec_posix.go gcc-4.8.1/libgo/go/os/exec_posix.go
+--- gcc-4.8.1.orig/libgo/go/os/exec_posix.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/os/exec_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -118,9 +118,9 @@
+ 	case status.Exited():
+ 		res = "exit status " + itod(status.ExitStatus())
+ 	case status.Signaled():
+-		res = "signal " + itod(int(status.Signal()))
++		res = "signal: " + status.Signal().String()
+ 	case status.Stopped():
+-		res = "stop signal " + itod(int(status.StopSignal()))
++		res = "stop signal: " + status.StopSignal().String()
+ 		if status.StopSignal() == syscall.SIGTRAP && status.TrapCause() != 0 {
+ 			res += " (trap " + itod(status.TrapCause()) + ")"
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/file_plan9.go gcc-4.8.1/libgo/go/os/file_plan9.go
+--- gcc-4.8.1.orig/libgo/go/os/file_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/file_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -104,7 +104,6 @@
+ 		append = true
+ 	}
+ 
+-	syscall.ForkLock.RLock()
+ 	if (create && trunc) || excl {
+ 		fd, e = syscall.Create(name, flag, syscallMode(perm))
+ 	} else {
+@@ -117,7 +116,6 @@
+ 			}
+ 		}
+ 	}
+-	syscall.ForkLock.RUnlock()
+ 
+ 	if e != nil {
+ 		return nil, &PathError{"open", name, e}
+@@ -246,13 +244,23 @@
+ 
+ // write writes len(b) bytes to the File.
+ // It returns the number of bytes written and an error, if any.
++// Since Plan 9 preserves message boundaries, never allow
++// a zero-byte write.
+ func (f *File) write(b []byte) (n int, err error) {
++	if len(b) == 0 {
++		return 0, nil
++	}
+ 	return syscall.Write(f.fd, b)
+ }
+ 
+ // pwrite writes len(b) bytes to the File starting at byte offset off.
+ // It returns the number of bytes written and an error, if any.
++// Since Plan 9 preserves message boundaries, never allow
++// a zero-byte write.
+ func (f *File) pwrite(b []byte, off int64) (n int, err error) {
++	if len(b) == 0 {
++		return 0, nil
++	}
+ 	return syscall.Pwrite(f.fd, b, off)
+ }
+ 
+@@ -300,7 +308,7 @@
+ 	d.Null()
+ 	d.Name = newname
+ 
+-	var buf [syscall.STATFIXLEN]byte
++	buf := make([]byte, syscall.STATFIXLEN+len(d.Name))
+ 	n, err := d.Marshal(buf[:])
+ 	if err != nil {
+ 		return &PathError{"rename", oldname, err}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/file_posix.go gcc-4.8.1/libgo/go/os/file_posix.go
+--- gcc-4.8.1.orig/libgo/go/os/file_posix.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/file_posix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -46,8 +46,6 @@
+ 			return string(b[0:n]), nil
+ 		}
+ 	}
+-	// Silence 6g.
+-	return "", nil
+ }
+ 
+ // Rename renames a file.
+diff -Naur gcc-4.8.1.orig/libgo/go/os/file_unix.go gcc-4.8.1/libgo/go/os/file_unix.go
+--- gcc-4.8.1.orig/libgo/go/os/file_unix.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/file_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -209,7 +209,6 @@
+ 
+ 		return n, err
+ 	}
+-	panic("not reached")
+ }
+ 
+ // pwrite writes len(b) bytes to the File starting at byte offset off.
+diff -Naur gcc-4.8.1.orig/libgo/go/os/getwd.go gcc-4.8.1/libgo/go/os/getwd.go
+--- gcc-4.8.1.orig/libgo/go/os/getwd.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/getwd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,9 +5,15 @@
+ package os
+ 
+ import (
++	"sync"
+ 	"syscall"
+ )
+ 
++var getwdCache struct {
++	sync.Mutex
++	dir string
++}
++
+ // Getwd returns a rooted path name corresponding to the
+ // current directory.  If the current directory can be
+ // reached via multiple paths (due to symbolic links),
+@@ -35,6 +41,17 @@
+ 		}
+ 	}
+ 
++	// Apply same kludge but to cached dir instead of $PWD.
++	getwdCache.Lock()
++	pwd = getwdCache.dir
++	getwdCache.Unlock()
++	if len(pwd) > 0 {
++		d, err := Stat(pwd)
++		if err == nil && SameFile(dot, d) {
++			return pwd, nil
++		}
++	}
++
+ 	// Root is a special case because it has no parent
+ 	// and ends in a slash.
+ 	root, err := Stat("/")
+@@ -73,8 +90,6 @@
+ 				}
+ 			}
+ 		}
+-		fd.Close()
+-		return "", ErrNotExist
+ 
+ 	Found:
+ 		pd, err := fd.Stat()
+@@ -88,5 +103,11 @@
+ 		// Set up for next round.
+ 		dot = pd
+ 	}
++
++	// Save answer as hint to avoid the expensive path next time.
++	getwdCache.Lock()
++	getwdCache.dir = pwd
++	getwdCache.Unlock()
++
+ 	return pwd, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/os/os_test.go gcc-4.8.1/libgo/go/os/os_test.go
+--- gcc-4.8.1.orig/libgo/go/os/os_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/os_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -39,7 +39,6 @@
+ 		sd = &sysDir{
+ 			Getenv("SystemRoot") + "\\system32\\drivers\\etc",
+ 			[]string{
+-				"hosts",
+ 				"networks",
+ 				"protocol",
+ 				"services",
+diff -Naur gcc-4.8.1.orig/libgo/go/os/signal/signal.go gcc-4.8.1/libgo/go/os/signal/signal.go
+--- gcc-4.8.1.orig/libgo/go/os/signal/signal.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/signal/signal.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,7 +5,7 @@
+ // Package signal implements access to incoming signals.
+ package signal
+ 
+-// BUG(rsc): This package is not yet implemented on Plan 9 and Windows.
++// BUG(rsc): This package is not yet implemented on Plan 9.
+ 
+ import (
+ 	"os"
+@@ -14,13 +14,20 @@
+ 
+ var handlers struct {
+ 	sync.Mutex
+-	list []handler
++	m   map[chan<- os.Signal]*handler
++	ref [numSig]int64
+ }
+ 
+ type handler struct {
+-	c   chan<- os.Signal
+-	sig os.Signal
+-	all bool
++	mask [(numSig + 31) / 32]uint32
++}
++
++func (h *handler) want(sig int) bool {
++	return (h.mask[sig/32]>>uint(sig&31))&1 != 0
++}
++
++func (h *handler) set(sig int) {
++	h.mask[sig/32] |= 1 << uint(sig&31)
+ }
+ 
+ // Notify causes package signal to relay incoming signals to c.
+@@ -32,6 +39,13 @@
+ // signal rate.  For a channel used for notification of just one signal value,
+ // a buffer of size 1 is sufficient.
+ //
++// It is allowed to call Notify multiple times with the same channel:
++// each call expands the set of signals sent to that channel.
++// The only way to remove signals from the set is to call Stop.
++//
++// It is allowed to call Notify multiple times with different channels
++// and the same signals: each channel receives copies of incoming
++// signals independently.
+ func Notify(c chan<- os.Signal, sig ...os.Signal) {
+ 	if c == nil {
+ 		panic("os/signal: Notify using nil channel")
+@@ -39,32 +53,77 @@
+ 
+ 	handlers.Lock()
+ 	defer handlers.Unlock()
++
++	h := handlers.m[c]
++	if h == nil {
++		if handlers.m == nil {
++			handlers.m = make(map[chan<- os.Signal]*handler)
++		}
++		h = new(handler)
++		handlers.m[c] = h
++	}
++
++	add := func(n int) {
++		if n < 0 {
++			return
++		}
++		if !h.want(n) {
++			h.set(n)
++			if handlers.ref[n] == 0 {
++				enableSignal(n)
++			}
++			handlers.ref[n]++
++		}
++	}
++
+ 	if len(sig) == 0 {
+-		enableSignal(nil)
+-		handlers.list = append(handlers.list, handler{c: c, all: true})
++		for n := 0; n < numSig; n++ {
++			add(n)
++		}
+ 	} else {
+ 		for _, s := range sig {
+-			// We use nil as a special wildcard value for enableSignal,
+-			// so filter it out of the list of arguments.  This is safe because
+-			// we will never get an incoming nil signal, so discarding the
+-			// registration cannot affect the observed behavior.
+-			if s != nil {
+-				enableSignal(s)
+-				handlers.list = append(handlers.list, handler{c: c, sig: s})
++			add(signum(s))
++		}
++	}
++}
++
++// Stop causes package signal to stop relaying incoming signals to c.
++// It undoes the effect of all prior calls to Notify using c.
++// When Stop returns, it is guaranteed that c will receive no more signals.
++func Stop(c chan<- os.Signal) {
++	handlers.Lock()
++	defer handlers.Unlock()
++
++	h := handlers.m[c]
++	if h == nil {
++		return
++	}
++	delete(handlers.m, c)
++
++	for n := 0; n < numSig; n++ {
++		if h.want(n) {
++			handlers.ref[n]--
++			if handlers.ref[n] == 0 {
++				disableSignal(n)
+ 			}
+ 		}
+ 	}
+ }
+ 
+ func process(sig os.Signal) {
++	n := signum(sig)
++	if n < 0 {
++		return
++	}
++
+ 	handlers.Lock()
+ 	defer handlers.Unlock()
+ 
+-	for _, h := range handlers.list {
+-		if h.all || h.sig == sig {
++	for c, h := range handlers.m {
++		if h.want(n) {
+ 			// send but do not block for it
+ 			select {
+-			case h.c <- sig:
++			case c <- sig:
+ 			default:
+ 			}
+ 		}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/signal/signal_stub.go gcc-4.8.1/libgo/go/os/signal/signal_stub.go
+--- gcc-4.8.1.orig/libgo/go/os/signal/signal_stub.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/signal/signal_stub.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,4 +8,10 @@
+ 
+ import "os"
+ 
+-func enableSignal(sig os.Signal) {}
++const numSig = 0
++
++func signum(sig os.Signal) int { return -1 }
++
++func disableSignal(int) {}
++
++func enableSignal(int) {}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/signal/signal_test.go gcc-4.8.1/libgo/go/os/signal/signal_test.go
+--- gcc-4.8.1.orig/libgo/go/os/signal/signal_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/signal/signal_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,15 +7,17 @@
+ package signal
+ 
+ import (
++	"flag"
++	"io/ioutil"
+ 	"os"
++	"os/exec"
+ 	"runtime"
++	"strconv"
+ 	"syscall"
+ 	"testing"
+ 	"time"
+ )
+ 
+-const sighup = syscall.SIGHUP
+-
+ func waitSig(t *testing.T, c <-chan os.Signal, sig os.Signal) {
+ 	select {
+ 	case s := <-c:
+@@ -27,15 +29,17 @@
+ 	}
+ }
+ 
++// Test that basic signal handling works.
+ func TestSignal(t *testing.T) {
+ 	// Ask for SIGHUP
+ 	c := make(chan os.Signal, 1)
+-	Notify(c, sighup)
++	Notify(c, syscall.SIGHUP)
++	defer Stop(c)
+ 
+ 	t.Logf("sighup...")
+ 	// Send this process a SIGHUP
+-	syscall.Kill(syscall.Getpid(), sighup)
+-	waitSig(t, c, sighup)
++	syscall.Kill(syscall.Getpid(), syscall.SIGHUP)
++	waitSig(t, c, syscall.SIGHUP)
+ 
+ 	// Ask for everything we can get.
+ 	c1 := make(chan os.Signal, 1)
+@@ -71,6 +75,7 @@
+ 	go func() {
+ 		sig := make(chan os.Signal, 1)
+ 		Notify(sig, syscall.SIGUSR1)
++		defer Stop(sig)
+ 	Loop:
+ 		for {
+ 			select {
+@@ -98,4 +103,106 @@
+ 	close(done)
+ 	<-finished
+ 	<-finished
++	// When run with 'go test -cpu=1,2,4' SIGUSR1 from this test can slip
++	// into subsequent TestSignal() causing failure.
++	// Sleep for a while to reduce the possibility of the failure.
++	time.Sleep(10 * time.Millisecond)
++}
++
++var sendUncaughtSighup = flag.Int("send_uncaught_sighup", 0, "send uncaught SIGHUP during TestStop")
++
++// Test that Stop cancels the channel's registrations.
++func TestStop(t *testing.T) {
++	sigs := []syscall.Signal{
++		syscall.SIGWINCH,
++		syscall.SIGHUP,
++	}
++
++	for _, sig := range sigs {
++		// Send the signal.
++		// If it's SIGWINCH, we should not see it.
++		// If it's SIGHUP, maybe we'll die. Let the flag tell us what to do.
++		if sig != syscall.SIGHUP || *sendUncaughtSighup == 1 {
++			syscall.Kill(syscall.Getpid(), sig)
++		}
++		time.Sleep(10 * time.Millisecond)
++
++		// Ask for signal
++		c := make(chan os.Signal, 1)
++		Notify(c, sig)
++		defer Stop(c)
++
++		// Send this process that signal
++		syscall.Kill(syscall.Getpid(), sig)
++		waitSig(t, c, sig)
++
++		Stop(c)
++		select {
++		case s := <-c:
++			t.Fatalf("unexpected signal %v", s)
++		case <-time.After(10 * time.Millisecond):
++			// nothing to read - good
++		}
++
++		// Send the signal.
++		// If it's SIGWINCH, we should not see it.
++		// If it's SIGHUP, maybe we'll die. Let the flag tell us what to do.
++		if sig != syscall.SIGHUP || *sendUncaughtSighup == 2 {
++			syscall.Kill(syscall.Getpid(), sig)
++		}
++
++		select {
++		case s := <-c:
++			t.Fatalf("unexpected signal %v", s)
++		case <-time.After(10 * time.Millisecond):
++			// nothing to read - good
++		}
++	}
++}
++
++// Test that when run under nohup, an uncaught SIGHUP does not kill the program,
++// but a
++func TestNohup(t *testing.T) {
++	// Ugly: ask for SIGHUP so that child will not have no-hup set
++	// even if test is running under nohup environment.
++	// We have no intention of reading from c.
++	c := make(chan os.Signal, 1)
++	Notify(c, syscall.SIGHUP)
++
++	// When run without nohup, the test should crash on an uncaught SIGHUP.
++	// When run under nohup, the test should ignore uncaught SIGHUPs,
++	// because the runtime is not supposed to be listening for them.
++	// Either way, TestStop should still be able to catch them when it wants them
++	// and then when it stops wanting them, the original behavior should resume.
++	//
++	// send_uncaught_sighup=1 sends the SIGHUP before starting to listen for SIGHUPs.
++	// send_uncaught_sighup=2 sends the SIGHUP after no longer listening for SIGHUPs.
++	//
++	// Both should fail without nohup and succeed with nohup.
++
++	for i := 1; i <= 2; i++ {
++		out, err := exec.Command(os.Args[0], "-test.run=TestStop", "-send_uncaught_sighup="+strconv.Itoa(i)).CombinedOutput()
++		if err == nil {
++			t.Fatalf("ran test with -send_uncaught_sighup=%d and it succeeded: expected failure.\nOutput:\n%s", i, out)
++		}
++	}
++
++	Stop(c)
++
++	// Again, this time with nohup, assuming we can find it.
++	_, err := os.Stat("/usr/bin/nohup")
++	if err != nil {
++		t.Skip("cannot find nohup; skipping second half of test")
++	}
++
++	for i := 1; i <= 2; i++ {
++		os.Remove("nohup.out")
++		out, err := exec.Command("/usr/bin/nohup", os.Args[0], "-test.run=TestStop", "-send_uncaught_sighup="+strconv.Itoa(i)).CombinedOutput()
++
++		data, _ := ioutil.ReadFile("nohup.out")
++		os.Remove("nohup.out")
++		if err != nil {
++			t.Fatalf("ran test with -send_uncaught_sighup=%d under nohup and it failed: expected success.\nError: %v\nOutput:\n%s%s", i, err, out, data)
++		}
++	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/os/signal/signal_unix.go gcc-4.8.1/libgo/go/os/signal/signal_unix.go
+--- gcc-4.8.1.orig/libgo/go/os/signal/signal_unix.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/signal/signal_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -12,6 +12,7 @@
+ )
+ 
+ // In assembly.
++func signal_disable(uint32)
+ func signal_enable(uint32)
+ func signal_recv() uint32
+ 
+@@ -26,13 +27,27 @@
+ 	go loop()
+ }
+ 
+-func enableSignal(sig os.Signal) {
++const (
++	numSig = 65 // max across all systems
++)
++
++func signum(sig os.Signal) int {
+ 	switch sig := sig.(type) {
+-	case nil:
+-		signal_enable(^uint32(0))
+ 	case syscall.Signal:
+-		signal_enable(uint32(sig))
++		i := int(sig)
++		if i < 0 || i >= numSig {
++			return -1
++		}
++		return i
+ 	default:
+-		// Can ignore: this signal (whatever it is) will never come in.
++		return -1
+ 	}
+ }
++
++func enableSignal(sig int) {
++	signal_enable(uint32(sig))
++}
++
++func disableSignal(sig int) {
++	signal_disable(uint32(sig))
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/os/stat_atimespec.go gcc-4.8.1/libgo/go/os/stat_atimespec.go
+--- gcc-4.8.1.orig/libgo/go/os/stat_atimespec.go	2013-01-24 12:12:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/stat_atimespec.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,9 +9,9 @@
+ 	"time"
+ )
+ 
+-func sameFile(sys1, sys2 interface{}) bool {
+-	stat1 := sys1.(*syscall.Stat_t)
+-	stat2 := sys2.(*syscall.Stat_t)
++func sameFile(fs1, fs2 *fileStat) bool {
++	stat1 := fs1.sys.(*syscall.Stat_t)
++	stat2 := fs2.sys.(*syscall.Stat_t)
+ 	return stat1.Dev == stat2.Dev && stat1.Ino == stat2.Ino
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/os/stat_atim.go gcc-4.8.1/libgo/go/os/stat_atim.go
+--- gcc-4.8.1.orig/libgo/go/os/stat_atim.go	2012-11-05 11:36:40.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/stat_atim.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,9 +9,9 @@
+ 	"time"
+ )
+ 
+-func sameFile(sys1, sys2 interface{}) bool {
+-	stat1 := sys1.(*syscall.Stat_t)
+-	stat2 := sys2.(*syscall.Stat_t)
++func sameFile(fs1, fs2 *fileStat) bool {
++	stat1 := fs1.sys.(*syscall.Stat_t)
++	stat2 := fs2.sys.(*syscall.Stat_t)
+ 	return stat1.Dev == stat2.Dev && stat1.Ino == stat2.Ino
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/os/stat.go gcc-4.8.1/libgo/go/os/stat.go
+--- gcc-4.8.1.orig/libgo/go/os/stat.go	2012-04-22 15:07:23.000000000 -0500
++++ gcc-4.8.1/libgo/go/os/stat.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,9 +9,9 @@
+ 	"time"
+ )
+ 
+-func sameFile(sys1, sys2 interface{}) bool {
+-	stat1 := sys1.(*syscall.Stat_t)
+-	stat2 := sys2.(*syscall.Stat_t)
++func sameFile(fs1, fs2 *fileStat) bool {
++	stat1 := fs1.sys.(*syscall.Stat_t)
++	stat2 := fs2.sys.(*syscall.Stat_t)
+ 	return stat1.Dev == stat2.Dev && stat1.Ino == stat2.Ino
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/os/stat_plan9.go gcc-4.8.1/libgo/go/os/stat_plan9.go
+--- gcc-4.8.1.orig/libgo/go/os/stat_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/stat_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,9 +9,9 @@
+ 	"time"
+ )
+ 
+-func sameFile(sys1, sys2 interface{}) bool {
+-	a := sys1.(*syscall.Dir)
+-	b := sys2.(*syscall.Dir)
++func sameFile(fs1, fs2 *fileStat) bool {
++	a := fs1.sys.(*syscall.Dir)
++	b := fs2.sys.(*syscall.Dir)
+ 	return a.Qid.Path == b.Qid.Path && a.Type == b.Type && a.Dev == b.Dev
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/os/stat_solaris.go gcc-4.8.1/libgo/go/os/stat_solaris.go
+--- gcc-4.8.1.orig/libgo/go/os/stat_solaris.go	2012-04-22 15:07:23.000000000 -0500
++++ gcc-4.8.1/libgo/go/os/stat_solaris.go	2013-07-16 01:55:04.520470000 -0500
+@@ -9,9 +9,9 @@
+ 	"time"
+ )
+ 
+-func sameFile(sys1, sys2 interface{}) bool {
+-	stat1 := sys1.(*syscall.Stat_t)
+-	stat2 := sys2.(*syscall.Stat_t)
++func sameFile(fs1, fs2 *fileStat) bool {
++	stat1 := fs1.sys.(*syscall.Stat_t)
++	stat2 := fs2.sys.(*syscall.Stat_t)
+ 	return stat1.Dev == stat2.Dev && stat1.Ino == stat2.Ino
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/os/types.go gcc-4.8.1/libgo/go/os/types.go
+--- gcc-4.8.1.orig/libgo/go/os/types.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/types.go	2013-07-16 01:55:04.520470000 -0500
+@@ -99,21 +99,8 @@
+ 	return m & ModePerm
+ }
+ 
+-// A fileStat is the implementation of FileInfo returned by Stat and Lstat.
+-type fileStat struct {
+-	name    string
+-	size    int64
+-	mode    FileMode
+-	modTime time.Time
+-	sys     interface{}
+-}
+-
+-func (fs *fileStat) Name() string       { return fs.name }
+-func (fs *fileStat) Size() int64        { return fs.size }
+-func (fs *fileStat) Mode() FileMode     { return fs.mode }
+-func (fs *fileStat) ModTime() time.Time { return fs.modTime }
+-func (fs *fileStat) IsDir() bool        { return fs.mode.IsDir() }
+-func (fs *fileStat) Sys() interface{}   { return fs.sys }
++func (fs *fileStat) Name() string { return fs.name }
++func (fs *fileStat) IsDir() bool  { return fs.Mode().IsDir() }
+ 
+ // SameFile reports whether fi1 and fi2 describe the same file.
+ // For example, on Unix this means that the device and inode fields
+@@ -127,5 +114,5 @@
+ 	if !ok1 || !ok2 {
+ 		return false
+ 	}
+-	return sameFile(fs1.sys, fs2.sys)
++	return sameFile(fs1, fs2)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/os/types_notwin.go gcc-4.8.1/libgo/go/os/types_notwin.go
+--- gcc-4.8.1.orig/libgo/go/os/types_notwin.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/types_notwin.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,25 @@
++// Copyright 2009 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build !windows
++
++package os
++
++import (
++	"time"
++)
++
++// A fileStat is the implementation of FileInfo returned by Stat and Lstat.
++type fileStat struct {
++	name    string
++	size    int64
++	mode    FileMode
++	modTime time.Time
++	sys     interface{}
++}
++
++func (fs *fileStat) Size() int64        { return fs.size }
++func (fs *fileStat) Mode() FileMode     { return fs.mode }
++func (fs *fileStat) ModTime() time.Time { return fs.modTime }
++func (fs *fileStat) Sys() interface{}   { return fs.sys }
+diff -Naur gcc-4.8.1.orig/libgo/go/os/types_windows.go gcc-4.8.1/libgo/go/os/types_windows.go
+--- gcc-4.8.1.orig/libgo/go/os/types_windows.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/os/types_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,104 @@
++// Copyright 2009 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package os
++
++import (
++	"sync"
++	"syscall"
++	"time"
++)
++
++// A fileStat is the implementation of FileInfo returned by Stat and Lstat.
++type fileStat struct {
++	name string
++	sys  syscall.Win32FileAttributeData
++
++	// used to implement SameFile
++	sync.Mutex
++	path  string
++	vol   uint32
++	idxhi uint32
++	idxlo uint32
++}
++
++func (fs *fileStat) Size() int64 {
++	return int64(fs.sys.FileSizeHigh)<<32 + int64(fs.sys.FileSizeLow)
++}
++
++func (fs *fileStat) Mode() (m FileMode) {
++	if fs == &devNullStat {
++		return ModeDevice | ModeCharDevice | 0666
++	}
++	if fs.sys.FileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 {
++		m |= ModeDir | 0111
++	}
++	if fs.sys.FileAttributes&syscall.FILE_ATTRIBUTE_READONLY != 0 {
++		m |= 0444
++	} else {
++		m |= 0666
++	}
++	return m
++}
++
++func (fs *fileStat) ModTime() time.Time {
++	return time.Unix(0, fs.sys.LastWriteTime.Nanoseconds())
++}
++
++// Sys returns syscall.Win32FileAttributeData for file fs.
++func (fs *fileStat) Sys() interface{} { return &fs.sys }
++
++func (fs *fileStat) loadFileId() error {
++	fs.Lock()
++	defer fs.Unlock()
++	if fs.path == "" {
++		// already done
++		return nil
++	}
++	pathp, err := syscall.UTF16PtrFromString(fs.path)
++	if err != nil {
++		return err
++	}
++	h, err := syscall.CreateFile(pathp, 0, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0)
++	if err != nil {
++		return err
++	}
++	defer syscall.CloseHandle(h)
++	var i syscall.ByHandleFileInformation
++	err = syscall.GetFileInformationByHandle(syscall.Handle(h), &i)
++	if err != nil {
++		return err
++	}
++	fs.path = ""
++	fs.vol = i.VolumeSerialNumber
++	fs.idxhi = i.FileIndexHigh
++	fs.idxlo = i.FileIndexLow
++	return nil
++}
++
++// devNullStat is fileStat structure describing DevNull file ("NUL").
++var devNullStat = fileStat{
++	name: DevNull,
++	// hopefully this will work for SameFile
++	vol:   0,
++	idxhi: 0,
++	idxlo: 0,
++}
++
++func sameFile(fs1, fs2 *fileStat) bool {
++	e := fs1.loadFileId()
++	if e != nil {
++		return false
++	}
++	e = fs2.loadFileId()
++	if e != nil {
++		return false
++	}
++	return fs1.vol == fs2.vol && fs1.idxhi == fs2.idxhi && fs1.idxlo == fs2.idxlo
++}
++
++// For testing.
++func atime(fi FileInfo) time.Time {
++	return time.Unix(0, fi.Sys().(*syscall.Win32FileAttributeData).LastAccessTime.Nanoseconds())
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/example_unix_test.go gcc-4.8.1/libgo/go/path/filepath/example_unix_test.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/example_unix_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/path/filepath/example_unix_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,39 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build !windows,!plan9
++
++package filepath_test
++
++import (
++	"fmt"
++	"path/filepath"
++)
++
++func ExampleSplitList() {
++	fmt.Println("On Unix:", filepath.SplitList("/a/b/c:/usr/bin"))
++	// Output:
++	// On Unix: [/a/b/c /usr/bin]
++}
++
++func ExampleRel() {
++	paths := []string{
++		"/a/b/c",
++		"/b/c",
++		"./b/c",
++	}
++	base := "/a"
++
++	fmt.Println("On Unix:")
++	for _, p := range paths {
++		rel, err := filepath.Rel(base, p)
++		fmt.Printf("%q: %q %v\n", p, rel, err)
++	}
++
++	// Output:
++	// On Unix:
++	// "/a/b/c": "b/c" <nil>
++	// "/b/c": "../b/c" <nil>
++	// "./b/c": "" Rel: can't make b/c relative to /a
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/match_test.go gcc-4.8.1/libgo/go/path/filepath/match_test.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/match_test.go	2012-03-30 17:09:55.000000000 -0500
++++ gcc-4.8.1/libgo/go/path/filepath/match_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,10 +2,9 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-package filepath_test
++package filepath
+ 
+ import (
+-	. "path/filepath"
+ 	"runtime"
+ 	"strings"
+ 	"testing"
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/path.go gcc-4.8.1/libgo/go/path/filepath/path.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/path.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/path/filepath/path.go	2013-07-16 01:55:04.520470000 -0500
+@@ -176,10 +176,7 @@
+ // usually found in PATH or GOPATH environment variables.
+ // Unlike strings.Split, SplitList returns an empty slice when passed an empty string.
+ func SplitList(path string) []string {
+-	if path == "" {
+-		return []string{}
+-	}
+-	return strings.Split(path, string(ListSeparator))
++	return splitList(path)
+ }
+ 
+ // Split splits path immediately following the final Separator,
+@@ -374,6 +371,7 @@
+ // and directories are filtered by walkFn. The files are walked in lexical
+ // order, which makes the output deterministic but means that for very
+ // large directories Walk can be inefficient.
++// Walk does not follow symbolic links.
+ func Walk(root string, walkFn WalkFunc) error {
+ 	info, err := os.Lstat(root)
+ 	if err != nil {
+@@ -436,7 +434,8 @@
+ }
+ 
+ // Dir returns all but the last element of path, typically the path's directory.
+-// Trailing path separators are removed before processing.
++// After dropping the final element, the path is Cleaned and trailing
++// slashes are removed.
+ // If the path is empty, Dir returns ".".
+ // If the path consists entirely of separators, Dir returns a single separator.
+ // The returned path does not end in a separator unless it is the root directory.
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/path_plan9.go gcc-4.8.1/libgo/go/path/filepath/path_plan9.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/path_plan9.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/path/filepath/path_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -21,3 +21,10 @@
+ func HasPrefix(p, prefix string) bool {
+ 	return strings.HasPrefix(p, prefix)
+ }
++
++func splitList(path string) []string {
++	if path == "" {
++		return []string{}
++	}
++	return strings.Split(path, string(ListSeparator))
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/path_test.go gcc-4.8.1/libgo/go/path/filepath/path_test.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/path_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/path/filepath/path_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -91,7 +91,6 @@
+ }
+ 
+ func TestClean(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
+ 	tests := cleantests
+ 	if runtime.GOOS == "windows" {
+ 		for i := range tests {
+@@ -108,22 +107,20 @@
+ 		}
+ 	}
+ 
+-	var ms runtime.MemStats
+-	runtime.ReadMemStats(&ms)
+-	allocs := -ms.Mallocs
+-	const rounds = 100
+-	for i := 0; i < rounds; i++ {
+-		for _, test := range tests {
+-			filepath.Clean(test.result)
+-		}
+-	}
+-	runtime.ReadMemStats(&ms)
+-	allocs += ms.Mallocs
+-	/* Fails with gccgo, which has no escape analysis.
+-	if allocs >= rounds {
+-		t.Errorf("Clean cleaned paths: %d allocations per test round, want zero", allocs/rounds)
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Log("skipping AllocsPerRun checks; GOMAXPROCS>1")
++		return
++	}
++
++	t.Log("Skipping AllocsPerRun for gccgo")
++	return
++
++	for _, test := range tests {
++		allocs := testing.AllocsPerRun(100, func() { filepath.Clean(test.result) })
++		if allocs > 0 {
++			t.Errorf("Clean(%q): %v allocs, want zero", test.result, allocs)
++		}
+ 	}
+-	*/
+ }
+ 
+ const sep = filepath.Separator
+@@ -159,10 +156,36 @@
+ 	{string([]byte{lsep, 'a', lsep, 'b'}), []string{"", "a", "b"}},
+ }
+ 
++var winsplitlisttests = []SplitListTest{
++	// quoted
++	{`"a"`, []string{`a`}},
++
++	// semicolon
++	{`";"`, []string{`;`}},
++	{`"a;b"`, []string{`a;b`}},
++	{`";";`, []string{`;`, ``}},
++	{`;";"`, []string{``, `;`}},
++
++	// partially quoted
++	{`a";"b`, []string{`a;b`}},
++	{`a; ""b`, []string{`a`, ` b`}},
++	{`"a;b`, []string{`a;b`}},
++	{`""a;b`, []string{`a`, `b`}},
++	{`"""a;b`, []string{`a;b`}},
++	{`""""a;b`, []string{`a`, `b`}},
++	{`a";b`, []string{`a;b`}},
++	{`a;b";c`, []string{`a`, `b;c`}},
++	{`"a";b";c`, []string{`a`, `b;c`}},
++}
++
+ func TestSplitList(t *testing.T) {
+-	for _, test := range splitlisttests {
++	tests := splitlisttests
++	if runtime.GOOS == "windows" {
++		tests = append(tests, winsplitlisttests...)
++	}
++	for _, test := range tests {
+ 		if l := filepath.SplitList(test.list); !reflect.DeepEqual(l, test.result) {
+-			t.Errorf("SplitList(%q) = %s, want %s", test.list, l, test.result)
++			t.Errorf("SplitList(%#q) = %#q, want %#q", test.list, l, test.result)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/path_unix.go gcc-4.8.1/libgo/go/path/filepath/path_unix.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/path_unix.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/path/filepath/path_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -23,3 +23,10 @@
+ func HasPrefix(p, prefix string) bool {
+ 	return strings.HasPrefix(p, prefix)
+ }
++
++func splitList(path string) []string {
++	if path == "" {
++		return []string{}
++	}
++	return strings.Split(path, string(ListSeparator))
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/path/filepath/path_windows.go gcc-4.8.1/libgo/go/path/filepath/path_windows.go
+--- gcc-4.8.1.orig/libgo/go/path/filepath/path_windows.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/path/filepath/path_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -70,3 +70,36 @@
+ 	}
+ 	return strings.HasPrefix(strings.ToLower(p), strings.ToLower(prefix))
+ }
++
++func splitList(path string) []string {
++	// The same implementation is used in LookPath in os/exec;
++	// consider changing os/exec when changing this.
++
++	if path == "" {
++		return []string{}
++	}
++
++	// Split path, respecting but preserving quotes.
++	list := []string{}
++	start := 0
++	quo := false
++	for i := 0; i < len(path); i++ {
++		switch c := path[i]; {
++		case c == '"':
++			quo = !quo
++		case c == ListSeparator && !quo:
++			list = append(list, path[start:i])
++			start = i + 1
++		}
++	}
++	list = append(list, path[start:])
++
++	// Remove quotes.
++	for i, s := range list {
++		if strings.Contains(s, `"`) {
++			list[i] = strings.Replace(s, `"`, ``, -1)
++		}
++	}
++
++	return list
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/path/path_test.go gcc-4.8.1/libgo/go/path/path_test.go
+--- gcc-4.8.1.orig/libgo/go/path/path_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/path/path_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -64,7 +64,6 @@
+ }
+ 
+ func TestClean(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
+ 	for _, test := range cleantests {
+ 		if s := Clean(test.path); s != test.result {
+ 			t.Errorf("Clean(%q) = %q, want %q", test.path, s, test.result)
+@@ -74,22 +73,20 @@
+ 		}
+ 	}
+ 
+-	var ms runtime.MemStats
+-	runtime.ReadMemStats(&ms)
+-	allocs := -ms.Mallocs
+-	const rounds = 100
+-	for i := 0; i < rounds; i++ {
+-		for _, test := range cleantests {
+-			Clean(test.result)
+-		}
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Log("skipping AllocsPerRun checks; GOMAXPROCS>1")
++		return
+ 	}
+-	runtime.ReadMemStats(&ms)
+-	allocs += ms.Mallocs
+-	/* Fails with gccgo, which has no escape analysis.
+-	if allocs >= rounds {
+-		t.Errorf("Clean cleaned paths: %d allocations per test round, want zero", allocs/rounds)
++
++	t.Log("Skipping AllocsPerRun for gccgo")
++	return
++
++	for _, test := range cleantests {
++		allocs := testing.AllocsPerRun(100, func() { Clean(test.result) })
++		if allocs > 0 {
++			t.Errorf("Clean(%q): %v allocs, want zero", test.result, allocs)
++		}
+ 	}
+-	*/
+ }
+ 
+ type SplitTest struct {
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/all_test.go gcc-4.8.1/libgo/go/reflect/all_test.go
+--- gcc-4.8.1.orig/libgo/go/reflect/all_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/all_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,7 +13,8 @@
+ 	"math/rand"
+ 	"os"
+ 	. "reflect"
+-	/*	"runtime" */
++	"runtime"
++	"sort"
+ 	"sync"
+ 	"testing"
+ 	"time"
+@@ -1464,7 +1465,7 @@
+ 
+ // This will be index 1.
+ func (p Point) Dist(scale int) int {
+-	//	println("Point.Dist", p.x, p.y, scale)
++	//println("Point.Dist", p.x, p.y, scale)
+ 	return p.x*p.x*scale + p.y*p.y*scale
+ }
+ 
+@@ -1480,23 +1481,23 @@
+ 	if !ok {
+ 		t.Fatalf("method by name failed")
+ 	}
+-	m.Func.Call([]Value{ValueOf(p), ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Type MethodByName returned %d; want 250", i)
++	i = m.Func.Call([]Value{ValueOf(p), ValueOf(11)})[0].Int()
++	if i != 275 {
++		t.Errorf("Type MethodByName returned %d; want 275", i)
+ 	}
+ 
+-	i = TypeOf(&p).Method(1).Func.Call([]Value{ValueOf(&p), ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Pointer Type Method returned %d; want 250", i)
++	i = TypeOf(&p).Method(1).Func.Call([]Value{ValueOf(&p), ValueOf(12)})[0].Int()
++	if i != 300 {
++		t.Errorf("Pointer Type Method returned %d; want 300", i)
+ 	}
+ 
+ 	m, ok = TypeOf(&p).MethodByName("Dist")
+ 	if !ok {
+ 		t.Fatalf("ptr method by name failed")
+ 	}
+-	i = m.Func.Call([]Value{ValueOf(&p), ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Pointer Type MethodByName returned %d; want 250", i)
++	i = m.Func.Call([]Value{ValueOf(&p), ValueOf(13)})[0].Int()
++	if i != 325 {
++		t.Errorf("Pointer Type MethodByName returned %d; want 325", i)
+ 	}
+ 
+ 	// Curried method of value.
+@@ -1505,7 +1506,76 @@
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Value Method Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
++	i = v.Call([]Value{ValueOf(14)})[0].Int()
++	if i != 350 {
++		t.Errorf("Value Method returned %d; want 350", i)
++	}
++	v = ValueOf(p).MethodByName("Dist")
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Value MethodByName Type is %s; want %s", tt, tfunc)
++	}
++	i = v.Call([]Value{ValueOf(15)})[0].Int()
++	if i != 375 {
++		t.Errorf("Value MethodByName returned %d; want 375", i)
++	}
++
++	// Curried method of pointer.
++	v = ValueOf(&p).Method(1)
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Pointer Value Method Type is %s; want %s", tt, tfunc)
++	}
++	i = v.Call([]Value{ValueOf(16)})[0].Int()
++	if i != 400 {
++		t.Errorf("Pointer Value Method returned %d; want 400", i)
++	}
++	v = ValueOf(&p).MethodByName("Dist")
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Pointer Value MethodByName Type is %s; want %s", tt, tfunc)
++	}
++	i = v.Call([]Value{ValueOf(17)})[0].Int()
++	if i != 425 {
++		t.Errorf("Pointer Value MethodByName returned %d; want 425", i)
++	}
++
++	// Curried method of interface value.
++	// Have to wrap interface value in a struct to get at it.
++	// Passing it to ValueOf directly would
++	// access the underlying Point, not the interface.
++	var x interface {
++		Dist(int) int
++	} = p
++	pv := ValueOf(&x).Elem()
++	v = pv.Method(0)
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Interface Method Type is %s; want %s", tt, tfunc)
++	}
++	i = v.Call([]Value{ValueOf(18)})[0].Int()
++	if i != 450 {
++		t.Errorf("Interface Method returned %d; want 450", i)
++	}
++	v = pv.MethodByName("Dist")
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Interface MethodByName Type is %s; want %s", tt, tfunc)
++	}
++	i = v.Call([]Value{ValueOf(19)})[0].Int()
++	if i != 475 {
++		t.Errorf("Interface MethodByName returned %d; want 475", i)
++	}
++}
++
++/* Not yet implemented for gccgo
++
++func TestMethodValue(t *testing.T) {
++	p := Point{3, 4}
++	var i int64
++
++	// Curried method of value.
++	tfunc := TypeOf((func(int) int)(nil))
++	v := ValueOf(p).Method(1)
++	if tt := v.Type(); tt != tfunc {
++		t.Errorf("Value Method Type is %s; want %s", tt, tfunc)
++	}
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(10)})[0].Int()
+ 	if i != 250 {
+ 		t.Errorf("Value Method returned %d; want 250", i)
+ 	}
+@@ -1513,9 +1583,9 @@
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Value MethodByName Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Value MethodByName returned %d; want 250", i)
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(11)})[0].Int()
++	if i != 275 {
++		t.Errorf("Value MethodByName returned %d; want 275", i)
+ 	}
+ 
+ 	// Curried method of pointer.
+@@ -1523,17 +1593,17 @@
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Pointer Value Method Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Pointer Value Method returned %d; want 250", i)
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(12)})[0].Int()
++	if i != 300 {
++		t.Errorf("Pointer Value Method returned %d; want 300", i)
+ 	}
+ 	v = ValueOf(&p).MethodByName("Dist")
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Pointer Value MethodByName Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Pointer Value MethodByName returned %d; want 250", i)
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(13)})[0].Int()
++	if i != 325 {
++		t.Errorf("Pointer Value MethodByName returned %d; want 325", i)
+ 	}
+ 
+ 	// Curried method of interface value.
+@@ -1550,18 +1620,207 @@
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Interface Method Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Interface Method returned %d; want 250", i)
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(14)})[0].Int()
++	if i != 350 {
++		t.Errorf("Interface Method returned %d; want 350", i)
+ 	}
+ 	v = pv.MethodByName("Dist")
+ 	if tt := v.Type(); tt != tfunc {
+ 		t.Errorf("Interface MethodByName Type is %s; want %s", tt, tfunc)
+ 	}
+-	i = v.Call([]Value{ValueOf(10)})[0].Int()
+-	if i != 250 {
+-		t.Errorf("Interface MethodByName returned %d; want 250", i)
++	i = ValueOf(v.Interface()).Call([]Value{ValueOf(15)})[0].Int()
++	if i != 375 {
++		t.Errorf("Interface MethodByName returned %d; want 375", i)
++	}
++}
++
++*/
++
++// Reflect version of $GOROOT/test/method5.go
++
++// Concrete types implementing M method.
++// Smaller than a word, word-sized, larger than a word.
++// Value and pointer receivers.
++
++type Tinter interface {
++	M(int, byte) (byte, int)
++}
++
++type Tsmallv byte
++
++func (v Tsmallv) M(x int, b byte) (byte, int) { return b, x + int(v) }
++
++type Tsmallp byte
++
++func (p *Tsmallp) M(x int, b byte) (byte, int) { return b, x + int(*p) }
++
++type Twordv uintptr
++
++func (v Twordv) M(x int, b byte) (byte, int) { return b, x + int(v) }
++
++type Twordp uintptr
++
++func (p *Twordp) M(x int, b byte) (byte, int) { return b, x + int(*p) }
++
++type Tbigv [2]uintptr
++
++func (v Tbigv) M(x int, b byte) (byte, int) { return b, x + int(v[0]) + int(v[1]) }
++
++type Tbigp [2]uintptr
++
++func (p *Tbigp) M(x int, b byte) (byte, int) { return b, x + int(p[0]) + int(p[1]) }
++
++// Again, with an unexported method.
++
++type tsmallv byte
++
++func (v tsmallv) m(x int, b byte) (byte, int) { return b, x + int(v) }
++
++type tsmallp byte
++
++func (p *tsmallp) m(x int, b byte) (byte, int) { return b, x + int(*p) }
++
++type twordv uintptr
++
++func (v twordv) m(x int, b byte) (byte, int) { return b, x + int(v) }
++
++type twordp uintptr
++
++func (p *twordp) m(x int, b byte) (byte, int) { return b, x + int(*p) }
++
++type tbigv [2]uintptr
++
++func (v tbigv) m(x int, b byte) (byte, int) { return b, x + int(v[0]) + int(v[1]) }
++
++type tbigp [2]uintptr
++
++func (p *tbigp) m(x int, b byte) (byte, int) { return b, x + int(p[0]) + int(p[1]) }
++
++type tinter interface {
++	m(int, byte) (byte, int)
++}
++
++// Embedding via pointer.
++
++type Tm1 struct {
++	Tm2
++}
++
++type Tm2 struct {
++	*Tm3
++}
++
++type Tm3 struct {
++	*Tm4
++}
++
++type Tm4 struct {
++}
++
++func (t4 Tm4) M(x int, b byte) (byte, int) { return b, x + 40 }
++
++func TestMethod5(t *testing.T) {
++	/* Not yet used for gccgo
++	CheckF := func(name string, f func(int, byte) (byte, int), inc int) {
++		b, x := f(1000, 99)
++		if b != 99 || x != 1000+inc {
++			t.Errorf("%s(1000, 99) = %v, %v, want 99, %v", name, b, x, 1000+inc)
++		}
+ 	}
++	*/
++
++	CheckV := func(name string, i Value, inc int) {
++		bx := i.Method(0).Call([]Value{ValueOf(1000), ValueOf(byte(99))})
++		b := bx[0].Interface()
++		x := bx[1].Interface()
++		if b != byte(99) || x != 1000+inc {
++			t.Errorf("direct %s.M(1000, 99) = %v, %v, want 99, %v", name, b, x, 1000+inc)
++		}
++
++		/* Not yet implemented for gccgo
++		CheckF(name+".M", i.Method(0).Interface().(func(int, byte) (byte, int)), inc)
++		*/
++	}
++
++	var TinterType = TypeOf(new(Tinter)).Elem()
++	var tinterType = TypeOf(new(tinter)).Elem()
++
++	CheckI := func(name string, i interface{}, inc int) {
++		v := ValueOf(i)
++		CheckV(name, v, inc)
++		CheckV("(i="+name+")", v.Convert(TinterType), inc)
++	}
++
++	sv := Tsmallv(1)
++	CheckI("sv", sv, 1)
++	CheckI("&sv", &sv, 1)
++
++	sp := Tsmallp(2)
++	CheckI("&sp", &sp, 2)
++
++	wv := Twordv(3)
++	CheckI("wv", wv, 3)
++	CheckI("&wv", &wv, 3)
++
++	wp := Twordp(4)
++	CheckI("&wp", &wp, 4)
++
++	bv := Tbigv([2]uintptr{5, 6})
++	CheckI("bv", bv, 11)
++	CheckI("&bv", &bv, 11)
++
++	bp := Tbigp([2]uintptr{7, 8})
++	CheckI("&bp", &bp, 15)
++
++	t4 := Tm4{}
++	t3 := Tm3{&t4}
++	t2 := Tm2{&t3}
++	t1 := Tm1{t2}
++	CheckI("t4", t4, 40)
++	CheckI("&t4", &t4, 40)
++	CheckI("t3", t3, 40)
++	CheckI("&t3", &t3, 40)
++	CheckI("t2", t2, 40)
++	CheckI("&t2", &t2, 40)
++	CheckI("t1", t1, 40)
++	CheckI("&t1", &t1, 40)
++
++	methodShouldPanic := func(name string, i interface{}) {
++		v := ValueOf(i)
++		m := v.Method(0)
++		shouldPanic(func() { m.Call([]Value{ValueOf(1000), ValueOf(byte(99))}) })
++		shouldPanic(func() { m.Interface() })
++
++		v = v.Convert(tinterType)
++		m = v.Method(0)
++		shouldPanic(func() { m.Call([]Value{ValueOf(1000), ValueOf(byte(99))}) })
++		shouldPanic(func() { m.Interface() })
++	}
++
++	_sv := tsmallv(1)
++	methodShouldPanic("_sv", _sv)
++	methodShouldPanic("&_sv", &_sv)
++
++	_sp := tsmallp(2)
++	methodShouldPanic("&_sp", &_sp)
++
++	_wv := twordv(3)
++	methodShouldPanic("_wv", _wv)
++	methodShouldPanic("&_wv", &_wv)
++
++	_wp := twordp(4)
++	methodShouldPanic("&_wp", &_wp)
++
++	_bv := tbigv([2]uintptr{5, 6})
++	methodShouldPanic("_bv", _bv)
++	methodShouldPanic("&_bv", &_bv)
++
++	_bp := tbigp([2]uintptr{7, 8})
++	methodShouldPanic("&_bp", &_bp)
++
++	var tnil Tinter
++	vnil := ValueOf(&tnil).Elem()
++	shouldPanic(func() { vnil.Method(0) })
+ }
+ 
+ func TestInterfaceSet(t *testing.T) {
+@@ -1891,6 +2150,7 @@
+ func (*outer) m() {}
+ 
+ func TestNestedMethods(t *testing.T) {
++	t.Skip("fails on gccgo due to function wrappers")
+ 	typ := TypeOf((*outer)(nil))
+ 	if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != ValueOf((*outer).m).Pointer() {
+ 		t.Errorf("Wrong method table for outer: (m=%p)", (*outer).m)
+@@ -1915,6 +2175,7 @@
+ }
+ 
+ func TestEmbeddedMethods(t *testing.T) {
++	/* This part of the test fails on gccgo due to function wrappers.
+ 	typ := TypeOf((*OuterInt)(nil))
+ 	if typ.NumMethod() != 1 || typ.Method(0).Func.Pointer() != ValueOf((*OuterInt).M).Pointer() {
+ 		t.Errorf("Wrong method table for OuterInt: (m=%p)", (*OuterInt).M)
+@@ -1923,6 +2184,7 @@
+ 			t.Errorf("\t%d: %s %#x\n", i, m.Name, m.Func.Pointer())
+ 		}
+ 	}
++	*/
+ 
+ 	i := &InnerInt{3}
+ 	if v := ValueOf(i).Method(0).Call(nil)[0].Int(); v != 3 {
+@@ -1955,6 +2217,30 @@
+ 	}
+ }
+ 
++func TestPtrToGC(t *testing.T) {
++	type T *uintptr
++	tt := TypeOf(T(nil))
++	pt := PtrTo(tt)
++	const n = 100
++	var x []interface{}
++	for i := 0; i < n; i++ {
++		v := New(pt)
++		p := new(*uintptr)
++		*p = new(uintptr)
++		**p = uintptr(i)
++		v.Elem().Set(ValueOf(p).Convert(pt))
++		x = append(x, v.Interface())
++	}
++	runtime.GC()
++
++	for i, xi := range x {
++		k := ValueOf(xi).Elem().Elem().Elem().Interface().(uintptr)
++		if k != uintptr(i) {
++			t.Errorf("lost x[%d] = %d, want %d", i, k, i)
++		}
++	}
++}
++
+ func TestAddr(t *testing.T) {
+ 	var p struct {
+ 		X, Y int
+@@ -2020,20 +2306,16 @@
+ /* gccgo does do allocations here.
+ 
+ func noAlloc(t *testing.T, n int, f func(int)) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
+-	// once to prime everything
+-	f(-1)
+-	memstats := new(runtime.MemStats)
+-	runtime.ReadMemStats(memstats)
+-	oldmallocs := memstats.Mallocs
+-
+-	for j := 0; j < n; j++ {
+-		f(j)
+-	}
+-	runtime.ReadMemStats(memstats)
+-	mallocs := memstats.Mallocs - oldmallocs
+-	if mallocs > 0 {
+-		t.Fatalf("%d mallocs after %d iterations", mallocs, n)
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++	i := -1
++	allocs := testing.AllocsPerRun(n, func() {
++		f(i)
++		i++
++	})
++	if allocs > 0 {
++		t.Errorf("%d iterations: got %v mallocs, want 0", n, allocs)
+ 	}
+ }
+ 
+@@ -2755,8 +3037,10 @@
+ 	type T int
+ 	st := SliceOf(TypeOf(T(1)))
+ 	v := MakeSlice(st, 10, 10)
++	runtime.GC()
+ 	for i := 0; i < v.Len(); i++ {
+ 		v.Index(i).Set(ValueOf(T(i)))
++		runtime.GC()
+ 	}
+ 	s := fmt.Sprint(v.Interface())
+ 	want := "[0 1 2 3 4 5 6 7 8 9]"
+@@ -2769,13 +3053,63 @@
+ 	checkSameType(t, Zero(SliceOf(TypeOf(T1(1)))).Interface(), []T1{})
+ }
+ 
++func TestSliceOverflow(t *testing.T) {
++	// check that MakeSlice panics when size of slice overflows uint
++	const S = 1e6
++	s := uint(S)
++	l := (1<<(unsafe.Sizeof((*byte)(nil))*8)-1)/s + 1
++	if l*s >= s {
++		t.Fatal("slice size does not overflow")
++	}
++	var x [S]byte
++	st := SliceOf(TypeOf(x))
++	defer func() {
++		err := recover()
++		if err == nil {
++			t.Fatal("slice overflow does not panic")
++		}
++	}()
++	MakeSlice(st, int(l), int(l))
++}
++
++func TestSliceOfGC(t *testing.T) {
++	type T *uintptr
++	tt := TypeOf(T(nil))
++	st := SliceOf(tt)
++	const n = 100
++	var x []interface{}
++	for i := 0; i < n; i++ {
++		v := MakeSlice(st, n, n)
++		for j := 0; j < v.Len(); j++ {
++			p := new(uintptr)
++			*p = uintptr(i*n + j)
++			v.Index(j).Set(ValueOf(p).Convert(tt))
++		}
++		x = append(x, v.Interface())
++	}
++	runtime.GC()
++
++	for i, xi := range x {
++		v := ValueOf(xi)
++		for j := 0; j < v.Len(); j++ {
++			k := v.Index(j).Elem().Interface()
++			if k != uintptr(i*n+j) {
++				t.Errorf("lost x[%d][%d] = %d, want %d", i, j, k, i*n+j)
++			}
++		}
++	}
++}
++
+ func TestChanOf(t *testing.T) {
+ 	// check construction and use of type not in binary
+ 	type T string
+ 	ct := ChanOf(BothDir, TypeOf(T("")))
+ 	v := MakeChan(ct, 2)
++	runtime.GC()
+ 	v.Send(ValueOf(T("hello")))
++	runtime.GC()
+ 	v.Send(ValueOf(T("world")))
++	runtime.GC()
+ 
+ 	sv1, _ := v.Recv()
+ 	sv2, _ := v.Recv()
+@@ -2790,13 +3124,63 @@
+ 	checkSameType(t, Zero(ChanOf(BothDir, TypeOf(T1(1)))).Interface(), (chan T1)(nil))
+ }
+ 
++func TestChanOfGC(t *testing.T) {
++	done := make(chan bool, 1)
++	go func() {
++		select {
++		case <-done:
++		case <-time.After(5 * time.Second):
++			panic("deadlock in TestChanOfGC")
++		}
++	}()
++
++	defer func() {
++		done <- true
++	}()
++
++	type T *uintptr
++	tt := TypeOf(T(nil))
++	ct := ChanOf(BothDir, tt)
++
++	// NOTE: The garbage collector handles allocated channels specially,
++	// so we have to save pointers to channels in x; the pointer code will
++	// use the gc info in the newly constructed chan type.
++	const n = 100
++	var x []interface{}
++	for i := 0; i < n; i++ {
++		v := MakeChan(ct, n)
++		for j := 0; j < n; j++ {
++			p := new(uintptr)
++			*p = uintptr(i*n + j)
++			v.Send(ValueOf(p).Convert(tt))
++		}
++		pv := New(ct)
++		pv.Elem().Set(v)
++		x = append(x, pv.Interface())
++	}
++	runtime.GC()
++
++	for i, xi := range x {
++		v := ValueOf(xi).Elem()
++		for j := 0; j < n; j++ {
++			pv, _ := v.Recv()
++			k := pv.Elem().Interface()
++			if k != uintptr(i*n+j) {
++				t.Errorf("lost x[%d][%d] = %d, want %d", i, j, k, i*n+j)
++			}
++		}
++	}
++}
++
+ func TestMapOf(t *testing.T) {
+ 	// check construction and use of type not in binary
+ 	type K string
+ 	type V float64
+ 
+ 	v := MakeMap(MapOf(TypeOf(K("")), TypeOf(V(0))))
++	runtime.GC()
+ 	v.SetMapIndex(ValueOf(K("a")), ValueOf(V(1)))
++	runtime.GC()
+ 
+ 	s := fmt.Sprint(v.Interface())
+ 	want := "map[a:1]"
+@@ -2806,6 +3190,81 @@
+ 
+ 	// check that type already in binary is found
+ 	checkSameType(t, Zero(MapOf(TypeOf(V(0)), TypeOf(K("")))).Interface(), map[V]K(nil))
++
++	// check that invalid key type panics
++	shouldPanic(func() { MapOf(TypeOf((func())(nil)), TypeOf(false)) })
++}
++
++func TestMapOfGCKeys(t *testing.T) {
++	type T *uintptr
++	tt := TypeOf(T(nil))
++	mt := MapOf(tt, TypeOf(false))
++
++	// NOTE: The garbage collector handles allocated maps specially,
++	// so we have to save pointers to maps in x; the pointer code will
++	// use the gc info in the newly constructed map type.
++	const n = 100
++	var x []interface{}
++	for i := 0; i < n; i++ {
++		v := MakeMap(mt)
++		for j := 0; j < n; j++ {
++			p := new(uintptr)
++			*p = uintptr(i*n + j)
++			v.SetMapIndex(ValueOf(p).Convert(tt), ValueOf(true))
++		}
++		pv := New(mt)
++		pv.Elem().Set(v)
++		x = append(x, pv.Interface())
++	}
++	runtime.GC()
++
++	for i, xi := range x {
++		v := ValueOf(xi).Elem()
++		var out []int
++		for _, kv := range v.MapKeys() {
++			out = append(out, int(kv.Elem().Interface().(uintptr)))
++		}
++		sort.Ints(out)
++		for j, k := range out {
++			if k != i*n+j {
++				t.Errorf("lost x[%d][%d] = %d, want %d", i, j, k, i*n+j)
++			}
++		}
++	}
++}
++
++func TestMapOfGCValues(t *testing.T) {
++	type T *uintptr
++	tt := TypeOf(T(nil))
++	mt := MapOf(TypeOf(1), tt)
++
++	// NOTE: The garbage collector handles allocated maps specially,
++	// so we have to save pointers to maps in x; the pointer code will
++	// use the gc info in the newly constructed map type.
++	const n = 100
++	var x []interface{}
++	for i := 0; i < n; i++ {
++		v := MakeMap(mt)
++		for j := 0; j < n; j++ {
++			p := new(uintptr)
++			*p = uintptr(i*n + j)
++			v.SetMapIndex(ValueOf(j), ValueOf(p).Convert(tt))
++		}
++		pv := New(mt)
++		pv.Elem().Set(v)
++		x = append(x, pv.Interface())
++	}
++	runtime.GC()
++
++	for i, xi := range x {
++		v := ValueOf(xi).Elem()
++		for j := 0; j < n; j++ {
++			k := v.MapIndex(ValueOf(j)).Elem().Interface().(uintptr)
++			if k != uintptr(i*n+j) {
++				t.Errorf("lost x[%d][%d] = %d, want %d", i, j, k, i*n+j)
++			}
++		}
++	}
+ }
+ 
+ type B1 struct {
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/deepequal.go gcc-4.8.1/libgo/go/reflect/deepequal.go
+--- gcc-4.8.1.orig/libgo/go/reflect/deepequal.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/deepequal.go	2013-07-16 01:55:04.520470000 -0500
+@@ -118,8 +118,6 @@
+ 		// Normal equality suffices
+ 		return valueInterface(v1, false) == valueInterface(v2, false)
+ 	}
+-
+-	panic("Not reached")
+ }
+ 
+ // DeepEqual tests for deep equality. It uses normal == equality where
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/makefunc.go gcc-4.8.1/libgo/go/reflect/makefunc.go
+--- gcc-4.8.1.orig/libgo/go/reflect/makefunc.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/reflect/makefunc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,6 +10,14 @@
+ 	"unsafe"
+ )
+ 
++// makeFuncImpl is the closure value implementing the function
++// returned by MakeFunc.
++type makeFuncImpl struct {
++	code uintptr
++	typ  *funcType
++	fn   func([]Value) []Value
++}
++
+ // MakeFunc returns a new function of the given Type
+ // that wraps the function fn. When called, that new function
+ // does the following:
+@@ -37,45 +45,35 @@
+ 		panic("reflect: call of MakeFunc with non-Func type")
+ 	}
+ 
+-	ft := (*funcType)(unsafe.Pointer(typ.common()))
++	t := typ.common()
++	ftyp := (*funcType)(unsafe.Pointer(t))
+ 
+-	// We will build a function that uses the C stdarg routines to
+-	// pull out the arguments.  Since the stdarg routines require
+-	// the first parameter to be available, we need to switch on
+-	// the possible first parameter types.  Note that this assumes
+-	// that the calling ABI for a stdarg function is the same as
+-	// that for a non-stdarg function.  The C standard does not
+-	// require this, but it is true for most implementations in
+-	// practice.
+-
+-	// Handling result types is a different problem.  There are a
+-	// few cases to handle:
+-	//   * No results.
+-	//   * One result.
+-	//   * More than one result, which is returned in a struct.
+-	//     + Struct returned in registers.
+-	//     + Struct returned in memory.
+-
+-	var result Kind
+-	var resultSize uintptr
+-	switch len(ft.out) {
+-	case 0:
+-		result = Invalid
+-	case 1:
+-		result = Kind(ft.out[0].kind)
+-		resultSize = ft.out[0].size
+-	default:
+-		result = Struct
+-	}
++	_, _ = t, ftyp
+ 
+ 	panic("reflect MakeFunc not implemented")
++}
++
++// makeMethodValue converts v from the rcvr+method index representation
++// of a method value to an actual method func value, which is
++// basically the receiver value with a special bit set, into a true
++// func value - a value holding an actual func. The output is
++// semantically equivalent to the input as far as the user of package
++// reflect can tell, but the true func representation can be handled
++// by code like Convert and Interface and Assign.
++func makeMethodValue(op string, v Value) Value {
++	if v.flag&flagMethod == 0 {
++		panic("reflect: internal error: invalid use of makePartialFunc")
++	}
+ 
+-	// stub := func(i int) {
+-	// 	var args __gnuc_va_list
+-	// 	__builtin_va_start(args, i)
+-	// 	v := makeInt(0, uint64(i), ft.in[0])
+-	// 	return callReflect(ft, fn, v, args)
+-	// }
++	// Ignoring the flagMethod bit, v describes the receiver, not the method type.
++	fl := v.flag & (flagRO | flagAddr | flagIndir)
++	fl |= flag(v.typ.Kind()) << flagKindShift
++	rcvr := Value{v.typ, v.val, fl}
++
++	// Cause panic if method is not appropriate.
++	// The panic would still happen during the call if we omit this,
++	// but we want Interface() and other operations to fail early.
++	methodReceiver(op, rcvr, int(v.flag)>>flagMethodShift)
+ 
+-	// return Value{t, unsafe.Pointer(&impl.code[0]), flag(Func) << flagKindShift}
++	panic("reflect makeMethodValue not implemented")
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/set_test.go gcc-4.8.1/libgo/go/reflect/set_test.go
+--- gcc-4.8.1.orig/libgo/go/reflect/set_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/set_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -81,7 +81,7 @@
+ 			t.Errorf("#5 after SetMapIndex(b1, b2): %p (!= %p), %t (map=%v)", x, b2, ok, m)
+ 		}
+ 		if p := mv.MapIndex(ValueOf(b1)).Elem().Pointer(); p != uintptr(unsafe.Pointer(b2)) {
+-			t.Errorf("#5 MapIndex(b1) = %p want %p", p, b2)
++			t.Errorf("#5 MapIndex(b1) = %#x want %p", p, b2)
+ 		}
+ 	}
+ 	{
+@@ -96,7 +96,7 @@
+ 			t.Errorf("#6 after SetMapIndex(c1, c2): %p (!= %p), %t (map=%v)", x, c2, ok, m)
+ 		}
+ 		if p := mv.MapIndex(ValueOf(c1)).Pointer(); p != ValueOf(c2).Pointer() {
+-			t.Errorf("#6 MapIndex(c1) = %p want %p", p, c2)
++			t.Errorf("#6 MapIndex(c1) = %#x want %p", p, c2)
+ 		}
+ 	}
+ 	{
+@@ -115,7 +115,7 @@
+ 			t.Errorf("#7 after SetMapIndex(b1, b2): %p (!= %p), %t (map=%v)", x, b2, ok, m)
+ 		}
+ 		if p := mv.MapIndex(ValueOf(b1)).Pointer(); p != uintptr(unsafe.Pointer(b2)) {
+-			t.Errorf("#7 MapIndex(b1) = %p want %p", p, b2)
++			t.Errorf("#7 MapIndex(b1) = %#x want %p", p, b2)
+ 		}
+ 	}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/tostring_test.go gcc-4.8.1/libgo/go/reflect/tostring_test.go
+--- gcc-4.8.1.orig/libgo/go/reflect/tostring_test.go	2011-12-14 09:41:54.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/tostring_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -92,5 +92,4 @@
+ 	default:
+ 		panic("valueToString: can't print type " + typ.String())
+ 	}
+-	return "valueToString: can't happen"
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/type.go gcc-4.8.1/libgo/go/reflect/type.go
+--- gcc-4.8.1.orig/libgo/go/reflect/type.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/type.go	2013-07-16 01:55:04.520470000 -0500
+@@ -243,8 +243,8 @@
+ 	size       uintptr // size in bytes
+ 	hash       uint32  // hash of type; avoids computation in hash tables
+ 
+-	hashfn  func(unsafe.Pointer, uintptr)                 // hash function
+-	equalfn func(unsafe.Pointer, unsafe.Pointer, uintptr) // equality function
++	hashfn  uintptr // hash function code
++	equalfn uintptr // equality function code
+ 
+ 	string        *string // string form; unnecessary  but undeniably useful
+ 	*uncommonType         // (relatively) uncommon fields
+@@ -349,6 +349,25 @@
+ 	fields []structField // sorted by offset
+ }
+ 
++// NOTE: These are copied from ../runtime/mgc0.h.
++// They must be kept in sync.
++const (
++	_GC_END = iota
++	_GC_PTR
++	_GC_APTR
++	_GC_ARRAY_START
++	_GC_ARRAY_NEXT
++	_GC_CALL
++	_GC_MAP_PTR
++	_GC_CHAN_PTR
++	_GC_STRING
++	_GC_EFACE
++	_GC_IFACE
++	_GC_SLICE
++	_GC_REGION
++	_GC_NUM_INSTR
++)
++
+ /*
+  * The compiler knows the exact layout of all the data structures above.
+  * The compiler does not know about the data structures and methods below.
+@@ -372,7 +391,10 @@
+ 
+ // High bit says whether type has
+ // embedded pointers,to help garbage collector.
+-const kindMask = 0x7f
++const (
++	kindMask       = 0x7f
++	kindNoPointers = 0x80
++)
+ 
+ func (k Kind) String() string {
+ 	if int(k) < len(kindNames) {
+@@ -485,7 +507,7 @@
+ 	mt := p.typ
+ 	m.Type = toType(mt)
+ 	x := new(unsafe.Pointer)
+-	*x = p.tfn
++	*x = unsafe.Pointer(&p.tfn)
+ 	m.Func = Value{mt, unsafe.Pointer(x), fl | flagIndir}
+ 	m.Index = i
+ 	return
+@@ -730,7 +752,7 @@
+ 	Tag       StructTag // field tag string
+ 	Offset    uintptr   // offset within struct, in bytes
+ 	Index     []int     // index sequence for Type.FieldByIndex
+-	Anonymous bool      // is an anonymous field
++	Anonymous bool      // is an embedded field
+ }
+ 
+ // A StructTag is the tag string in a struct field.
+@@ -1001,6 +1023,32 @@
+ 	m map[*rtype]*ptrType
+ }
+ 
++// garbage collection bytecode program for pointer to memory without pointers.
++// See ../../cmd/gc/reflect.c:/^dgcsym1 and :/^dgcsym.
++type ptrDataGC struct {
++	width uintptr // sizeof(ptr)
++	op    uintptr // _GC_APTR
++	off   uintptr // 0
++	end   uintptr // _GC_END
++}
++
++var ptrDataGCProg = ptrDataGC{
++	width: unsafe.Sizeof((*byte)(nil)),
++	op:    _GC_APTR,
++	off:   0,
++	end:   _GC_END,
++}
++
++// garbage collection bytecode program for pointer to memory with pointers.
++// See ../../cmd/gc/reflect.c:/^dgcsym1 and :/^dgcsym.
++type ptrGC struct {
++	width  uintptr        // sizeof(ptr)
++	op     uintptr        // _GC_PTR
++	off    uintptr        // 0
++	elemgc unsafe.Pointer // element gc type
++	end    uintptr        // _GC_END
++}
++
+ // PtrTo returns the pointer type with element t.
+ // For example, if t represents type Foo, PtrTo(t) represents *Foo.
+ func PtrTo(t Type) Type {
+@@ -1334,6 +1382,21 @@
+ 	return t
+ }
+ 
++// garbage collection bytecode program for chan or map.
++// See ../../cmd/gc/reflect.c:/^dgcsym1 and :/^dgcsym.
++type chanMapGC struct {
++	width uintptr // sizeof(map)
++	op    uintptr // _GC_MAP_PTR or _GC_CHAN_PTR
++	off   uintptr // 0
++	typ   *rtype  // map type
++	end   uintptr // _GC_END
++}
++
++type badGC struct {
++	width uintptr
++	end   uintptr
++}
++
+ // ChanOf returns the channel type with the given direction and element type.
+ // For example, if t represents int, ChanOf(RecvDir, t) represents <-chan int.
+ //
+@@ -1393,20 +1456,27 @@
+ 	ch.uncommonType = nil
+ 	ch.ptrToThis = nil
+ 
++	// INCORRECT. Uncomment to check that TestChanOfGC fails when ch.gc is wrong.
++	//ch.gc = unsafe.Pointer(&badGC{width: ch.size, end: _GC_END})
++
+ 	return cachePut(ckey, &ch.rtype)
+ }
+ 
++func ismapkey(*rtype) bool // implemented in runtime
++
+ // MapOf returns the map type with the given key and element types.
+ // For example, if k represents int and e represents string,
+ // MapOf(k, e) represents map[int]string.
+ //
+ // If the key type is not a valid map key type (that is, if it does
+-// not implement Go's == operator), MapOf panics. TODO(rsc).
++// not implement Go's == operator), MapOf panics.
+ func MapOf(key, elem Type) Type {
+ 	ktyp := key.(*rtype)
+ 	etyp := elem.(*rtype)
+ 
+-	// TODO: Check for invalid key types.
++	if !ismapkey(ktyp) {
++		panic("reflect.MapOf: invalid key type " + ktyp.String())
++	}
+ 
+ 	// Look in cache.
+ 	ckey := cacheKey{Map, ktyp, etyp, 0}
+@@ -1433,9 +1503,39 @@
+ 	mt.uncommonType = nil
+ 	mt.ptrToThis = nil
+ 
++	// INCORRECT. Uncomment to check that TestMapOfGC and TestMapOfGCValues
++	// fail when mt.gc is wrong.
++	//mt.gc = unsafe.Pointer(&badGC{width: mt.size, end: _GC_END})
++
+ 	return cachePut(ckey, &mt.rtype)
+ }
+ 
++// garbage collection bytecode program for slice of non-zero-length values.
++// See ../../cmd/gc/reflect.c:/^dgcsym1 and :/^dgcsym.
++type sliceGC struct {
++	width  uintptr        // sizeof(slice)
++	op     uintptr        // _GC_SLICE
++	off    uintptr        // 0
++	elemgc unsafe.Pointer // element gc program
++	end    uintptr        // _GC_END
++}
++
++// garbage collection bytecode program for slice of zero-length values.
++// See ../../cmd/gc/reflect.c:/^dgcsym1 and :/^dgcsym.
++type sliceEmptyGC struct {
++	width uintptr // sizeof(slice)
++	op    uintptr // _GC_APTR
++	off   uintptr // 0
++	end   uintptr // _GC_END
++}
++
++var sliceEmptyGCProg = sliceEmptyGC{
++	width: unsafe.Sizeof([]byte(nil)),
++	op:    _GC_APTR,
++	off:   0,
++	end:   _GC_END,
++}
++
+ // SliceOf returns the slice type with element type t.
+ // For example, if t represents int, SliceOf(t) represents []int.
+ func SliceOf(t Type) Type {
+@@ -1465,6 +1565,9 @@
+ 	slice.uncommonType = nil
+ 	slice.ptrToThis = nil
+ 
++	// INCORRECT. Uncomment to check that TestSliceOfOfGC fails when slice.gc is wrong.
++	//slice.gc = unsafe.Pointer(&badGC{width: slice.size, end: _GC_END})
++
+ 	return cachePut(ckey, &slice.rtype)
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/reflect/value.go gcc-4.8.1/libgo/go/reflect/value.go
+--- gcc-4.8.1.orig/libgo/go/reflect/value.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/reflect/value.go	2013-07-16 01:55:04.520470000 -0500
+@@ -245,7 +245,7 @@
+ 		panic(&ValueError{methodName(), 0})
+ 	}
+ 	if f&flagRO != 0 {
+-		panic(methodName() + " using value obtained using unexported field")
++		panic("reflect: " + methodName() + " using value obtained using unexported field")
+ 	}
+ }
+ 
+@@ -258,10 +258,10 @@
+ 	}
+ 	// Assignable if addressable and not read-only.
+ 	if f&flagRO != 0 {
+-		panic(methodName() + " using value obtained using unexported field")
++		panic("reflect: " + methodName() + " using value obtained using unexported field")
+ 	}
+ 	if f&flagAddr == 0 {
+-		panic(methodName() + " using unaddressable value")
++		panic("reflect: " + methodName() + " using unaddressable value")
+ 	}
+ }
+ 
+@@ -354,7 +354,7 @@
+ 	return v.call("CallSlice", in)
+ }
+ 
+-func (v Value) call(method string, in []Value) []Value {
++func (v Value) call(op string, in []Value) []Value {
+ 	// Get function pointer, type.
+ 	t := v.typ
+ 	var (
+@@ -362,36 +362,7 @@
+ 		rcvr iword
+ 	)
+ 	if v.flag&flagMethod != 0 {
+-		i := int(v.flag) >> flagMethodShift
+-		if v.typ.Kind() == Interface {
+-			tt := (*interfaceType)(unsafe.Pointer(v.typ))
+-			if i < 0 || i >= len(tt.methods) {
+-				panic("reflect: broken Value")
+-			}
+-			m := &tt.methods[i]
+-			if m.pkgPath != nil {
+-				panic(method + " of unexported method")
+-			}
+-			t = m.typ
+-			iface := (*nonEmptyInterface)(v.val)
+-			if iface.itab == nil {
+-				panic(method + " of method on nil interface value")
+-			}
+-			fn = iface.itab.fun[i]
+-			rcvr = iface.word
+-		} else {
+-			ut := v.typ.uncommon()
+-			if ut == nil || i < 0 || i >= len(ut.methods) {
+-				panic("reflect: broken Value")
+-			}
+-			m := &ut.methods[i]
+-			if m.pkgPath != nil {
+-				panic(method + " of unexported method")
+-			}
+-			fn = m.tfn
+-			t = m.mtyp
+-			rcvr = v.iword()
+-		}
++		t, fn, rcvr = methodReceiver(op, v, int(v.flag)>>flagMethodShift)
+ 	} else if v.flag&flagIndir != 0 {
+ 		fn = *(*unsafe.Pointer)(v.val)
+ 	} else {
+@@ -402,7 +373,7 @@
+ 		panic("reflect.Value.Call: call of nil function")
+ 	}
+ 
+-	isSlice := method == "CallSlice"
++	isSlice := op == "CallSlice"
+ 	n := t.NumIn()
+ 	if isSlice {
+ 		if !t.IsVariadic() {
+@@ -427,12 +398,12 @@
+ 	}
+ 	for _, x := range in {
+ 		if x.Kind() == Invalid {
+-			panic("reflect: " + method + " using zero Value argument")
++			panic("reflect: " + op + " using zero Value argument")
+ 		}
+ 	}
+ 	for i := 0; i < n; i++ {
+ 		if xt, targ := in[i].Type(), t.In(i); !xt.AssignableTo(targ) {
+-			panic("reflect: " + method + " using " + xt.String() + " as type " + targ.String())
++			panic("reflect: " + op + " using " + xt.String() + " as type " + targ.String())
+ 		}
+ 	}
+ 	if !isSlice && t.IsVariadic() {
+@@ -443,7 +414,7 @@
+ 		for i := 0; i < m; i++ {
+ 			x := in[n+i]
+ 			if xt := x.Type(); !xt.AssignableTo(elem) {
+-				panic("reflect: cannot use " + xt.String() + " as type " + elem.String() + " in " + method)
++				panic("reflect: cannot use " + xt.String() + " as type " + elem.String() + " in " + op)
+ 			}
+ 			slice.Index(i).Set(x)
+ 		}
+@@ -462,6 +433,10 @@
+ 	if v.flag&flagMethod != 0 {
+ 		nin++
+ 	}
++	firstPointer := len(in) > 0 && Kind(t.In(0).(*rtype).kind) != Ptr && v.flag&flagMethod == 0 && isMethod(v.typ)
++	if v.flag&flagMethod == 0 && !firstPointer {
++		nin++
++	}
+ 	params := make([]unsafe.Pointer, nin)
+ 	off := 0
+ 	if v.flag&flagMethod != 0 {
+@@ -471,7 +446,6 @@
+ 		params[0] = unsafe.Pointer(p)
+ 		off = 1
+ 	}
+-	first_pointer := false
+ 	for i, pv := range in {
+ 		pv.mustBeExported()
+ 		targ := t.In(i).(*rtype)
+@@ -483,14 +457,17 @@
+ 		} else {
+ 			params[off] = pv.val
+ 		}
+-		if i == 0 && Kind(targ.kind) != Ptr && v.flag&flagMethod == 0 && isMethod(v.typ) {
++		if i == 0 && firstPointer {
+ 			p := new(unsafe.Pointer)
+ 			*p = params[off]
+ 			params[off] = unsafe.Pointer(p)
+-			first_pointer = true
+ 		}
+ 		off++
+ 	}
++	if v.flag&flagMethod == 0 && !firstPointer {
++		// Closure argument.
++		params[off] = unsafe.Pointer(&fn)
++	}
+ 
+ 	ret := make([]Value, nout)
+ 	results := make([]unsafe.Pointer, nout)
+@@ -509,7 +486,7 @@
+ 		pr = &results[0]
+ 	}
+ 
+-	call(t, fn, v.flag&flagMethod != 0, first_pointer, pp, pr)
++	call(t, fn, v.flag&flagMethod != 0, firstPointer, pp, pr)
+ 
+ 	return ret
+ }
+@@ -547,7 +524,10 @@
+ // frame into a call using Values.
+ // It is in this file so that it can be next to the call method above.
+ // The remainder of the MakeFunc implementation is in makefunc.go.
+-func callReflect(ftyp *funcType, f func([]Value) []Value, frame unsafe.Pointer) {
++func callReflect(ctxt *makeFuncImpl, frame unsafe.Pointer) {
++	ftyp := ctxt.typ
++	f := ctxt.fn
++
+ 	// Copy argument frame into Values.
+ 	ptr := frame
+ 	off := uintptr(0)
+@@ -605,6 +585,91 @@
+ 	}
+ }
+ 
++// methodReceiver returns information about the receiver
++// described by v. The Value v may or may not have the
++// flagMethod bit set, so the kind cached in v.flag should
++// not be used.
++func methodReceiver(op string, v Value, methodIndex int) (t *rtype, fn unsafe.Pointer, rcvr iword) {
++	i := methodIndex
++	if v.typ.Kind() == Interface {
++		tt := (*interfaceType)(unsafe.Pointer(v.typ))
++		if i < 0 || i >= len(tt.methods) {
++			panic("reflect: internal error: invalid method index")
++		}
++		m := &tt.methods[i]
++		if m.pkgPath != nil {
++			panic("reflect: " + op + " of unexported method")
++		}
++		t = m.typ
++		iface := (*nonEmptyInterface)(v.val)
++		if iface.itab == nil {
++			panic("reflect: " + op + " of method on nil interface value")
++		}
++		fn = unsafe.Pointer(&iface.itab.fun[i])
++		rcvr = iface.word
++	} else {
++		ut := v.typ.uncommon()
++		if ut == nil || i < 0 || i >= len(ut.methods) {
++			panic("reflect: internal error: invalid method index")
++		}
++		m := &ut.methods[i]
++		if m.pkgPath != nil {
++			panic("reflect: " + op + " of unexported method")
++		}
++		fn = unsafe.Pointer(&m.tfn)
++		t = m.mtyp
++		rcvr = v.iword()
++	}
++	return
++}
++
++// align returns the result of rounding x up to a multiple of n.
++// n must be a power of two.
++func align(x, n uintptr) uintptr {
++	return (x + n - 1) &^ (n - 1)
++}
++
++// frameSize returns the sizes of the argument and result frame
++// for a function of the given type. The rcvr bool specifies whether
++// a one-word receiver should be included in the total.
++func frameSize(t *rtype, rcvr bool) (total, in, outOffset, out uintptr) {
++	if rcvr {
++		// extra word for receiver interface word
++		total += ptrSize
++	}
++
++	nin := t.NumIn()
++	in = -total
++	for i := 0; i < nin; i++ {
++		tv := t.In(i)
++		total = align(total, uintptr(tv.Align()))
++		total += tv.Size()
++	}
++	in += total
++	total = align(total, ptrSize)
++	nout := t.NumOut()
++	outOffset = total
++	out = -total
++	for i := 0; i < nout; i++ {
++		tv := t.Out(i)
++		total = align(total, uintptr(tv.Align()))
++		total += tv.Size()
++	}
++	out += total
++
++	// total must be > 0 in order for &args[0] to be valid.
++	// the argument copying is going to round it up to
++	// a multiple of ptrSize anyway, so make it ptrSize to begin with.
++	if total < ptrSize {
++		total = ptrSize
++	}
++
++	// round to pointer
++	total = align(total, ptrSize)
++
++	return
++}
++
+ // funcName returns the name of f, for use in error messages.
+ func funcName(f func([]Value) []Value) string {
+ 	pc := *(*uintptr)(unsafe.Pointer(&f))
+@@ -891,7 +956,7 @@
+ 	if v.flag == 0 {
+ 		panic(&ValueError{"reflect.Value.CanInterface", Invalid})
+ 	}
+-	return v.flag&(flagMethod|flagRO) == 0
++	return v.flag&flagRO == 0
+ }
+ 
+ // Interface returns v's current value as an interface{}.
+@@ -910,16 +975,15 @@
+ 	if v.flag == 0 {
+ 		panic(&ValueError{"reflect.Value.Interface", 0})
+ 	}
+-	if v.flag&flagMethod != 0 {
+-		panic("reflect.Value.Interface: cannot create interface value for method with bound receiver")
+-	}
+-
+ 	if safe && v.flag&flagRO != 0 {
+ 		// Do not allow access to unexported values via Interface,
+ 		// because they might be pointers that should not be
+ 		// writable or methods or function that should not be callable.
+ 		panic("reflect.Value.Interface: cannot return value obtained from unexported field or method")
+ 	}
++	if v.flag&flagMethod != 0 {
++		v = makeMethodValue("Interface", v)
++	}
+ 
+ 	k := v.kind()
+ 	if k == Interface {
+@@ -974,7 +1038,7 @@
+ 	switch k {
+ 	case Chan, Func, Map, Ptr:
+ 		if v.flag&flagMethod != 0 {
+-			panic("reflect: IsNil of method Value")
++			return false
+ 		}
+ 		ptr := v.val
+ 		if v.flag&flagIndir != 0 {
+@@ -1093,7 +1157,7 @@
+ // Method returns a function value corresponding to v's i'th method.
+ // The arguments to a Call on the returned function should not include
+ // a receiver; the returned function will always use v as the receiver.
+-// Method panics if i is out of range.
++// Method panics if i is out of range or if v is a nil interface value.
+ func (v Value) Method(i int) Value {
+ 	if v.typ == nil {
+ 		panic(&ValueError{"reflect.Value.Method", Invalid})
+@@ -1101,7 +1165,10 @@
+ 	if v.flag&flagMethod != 0 || i < 0 || i >= v.typ.NumMethod() {
+ 		panic("reflect: Method index out of range")
+ 	}
+-	fl := v.flag & (flagRO | flagAddr | flagIndir)
++	if v.typ.Kind() == Interface && v.IsNil() {
++		panic("reflect: Method on nil interface value")
++	}
++	fl := v.flag & (flagRO | flagIndir)
+ 	fl |= flag(Func) << flagKindShift
+ 	fl |= flag(i)<<flagMethodShift | flagMethod
+ 	return Value{v.typ, v.val, fl}
+@@ -1209,18 +1276,43 @@
+ // code using reflect cannot obtain unsafe.Pointers
+ // without importing the unsafe package explicitly.
+ // It panics if v's Kind is not Chan, Func, Map, Ptr, Slice, or UnsafePointer.
++//
++// If v's Kind is Func, the returned pointer is an underlying
++// code pointer, but not necessarily enough to identify a
++// single function uniquely. The only guarantee is that the
++// result is zero if and only if v is a nil func Value.
+ func (v Value) Pointer() uintptr {
+ 	k := v.kind()
+ 	switch k {
+-	case Chan, Func, Map, Ptr, UnsafePointer:
+-		if k == Func && v.flag&flagMethod != 0 {
+-			panic("reflect.Value.Pointer of method Value")
++	case Chan, Map, Ptr, UnsafePointer:
++		p := v.val
++		if v.flag&flagIndir != 0 {
++			p = *(*unsafe.Pointer)(p)
++		}
++		return uintptr(p)
++	case Func:
++		if v.flag&flagMethod != 0 {
++			// As the doc comment says, the returned pointer is an
++			// underlying code pointer but not necessarily enough to
++			// identify a single function uniquely. All method expressions
++			// created via reflect have the same underlying code pointer,
++			// so their Pointers are equal. The function used here must
++			// match the one used in makeMethodValue.
++			// This is not properly implemented for gccgo.
++			f := Zero
++			return **(**uintptr)(unsafe.Pointer(&f))
+ 		}
+ 		p := v.val
+ 		if v.flag&flagIndir != 0 {
+ 			p = *(*unsafe.Pointer)(p)
+ 		}
++		// Non-nil func value points at data block.
++		// First word of data block is actual code.
++		if p != nil {
++			p = *(*unsafe.Pointer)(p)
++		}
+ 		return uintptr(p)
++
+ 	case Slice:
+ 		return (*SliceHeader)(v.val).Data
+ 	}
+@@ -1243,7 +1335,7 @@
+ func (v Value) recv(nb bool) (val Value, ok bool) {
+ 	tt := (*chanType)(unsafe.Pointer(v.typ))
+ 	if ChanDir(tt.dir)&RecvDir == 0 {
+-		panic("recv on send-only channel")
++		panic("reflect: recv on send-only channel")
+ 	}
+ 	word, selected, ok := chanrecv(v.typ, *(*iword)(v.iword()), nb)
+ 	if selected {
+@@ -1271,7 +1363,7 @@
+ func (v Value) send(x Value, nb bool) (selected bool) {
+ 	tt := (*chanType)(unsafe.Pointer(v.typ))
+ 	if ChanDir(tt.dir)&SendDir == 0 {
+-		panic("send on recv-only channel")
++		panic("reflect: send on recv-only channel")
+ 	}
+ 	x.mustBeExported()
+ 	x = x.assignTo("reflect.Value.Send", tt.elem, nil)
+@@ -1444,7 +1536,7 @@
+ }
+ 
+ // Slice returns a slice of v.
+-// It panics if v's Kind is not Array, Slice, or String.
++// It panics if v's Kind is not Array, Slice or String, or if v is an unaddressable array.
+ func (v Value) Slice(beg, end int) Value {
+ 	var (
+ 		cap  int
+@@ -1554,7 +1646,7 @@
+ 		// Method on interface.
+ 		tt := (*interfaceType)(unsafe.Pointer(v.typ))
+ 		if i < 0 || i >= len(tt.methods) {
+-			panic("reflect: broken Value")
++			panic("reflect: internal error: invalid method index")
+ 		}
+ 		m := &tt.methods[i]
+ 		return toType(m.typ)
+@@ -1562,7 +1654,7 @@
+ 	// Method on concrete type.
+ 	ut := v.typ.uncommon()
+ 	if ut == nil || i < 0 || i >= len(ut.methods) {
+-		panic("reflect: broken Value")
++		panic("reflect: internal error: invalid method index")
+ 	}
+ 	m := &ut.methods[i]
+ 	return toType(m.mtyp)
+@@ -1611,14 +1703,22 @@
+ }
+ 
+ // StringHeader is the runtime representation of a string.
+-// It cannot be used safely or portably.
++// It cannot be used safely or portably and its representation may
++// change in a later release.
++// Moreover, the Data field is not sufficient to guarantee the data
++// it references will not be garbage collected, so programs must keep
++// a separate, correctly typed pointer to the underlying data.
+ type StringHeader struct {
+ 	Data uintptr
+ 	Len  int
+ }
+ 
+ // SliceHeader is the runtime representation of a slice.
+-// It cannot be used safely or portably.
++// It cannot be used safely or portably and its representation may
++// change in a later release.
++// Moreover, the Data field is not sufficient to guarantee the data
++// it references will not be garbage collected, so programs must keep
++// a separate, correctly typed pointer to the underlying data.
+ type SliceHeader struct {
+ 	Data uintptr
+ 	Len  int
+@@ -1787,8 +1887,9 @@
+ }
+ 
+ // Select executes a select operation described by the list of cases.
+-// Like the Go select statement, it blocks until one of the cases can
+-// proceed and then executes that case. It returns the index of the chosen case
++// Like the Go select statement, it blocks until at least one of the cases
++// can proceed, makes a uniform pseudo-random choice,
++// and then executes that case. It returns the index of the chosen case
+ // and, if that case was a receive operation, the value received and a
+ // boolean indicating whether the value corresponds to a send on the channel
+ // (as opposed to a zero value received because the channel is closed).
+@@ -2005,7 +2106,7 @@
+ // For a conversion to an interface type, target is a suggested scratch space to use.
+ func (v Value) assignTo(context string, dst *rtype, target *interface{}) Value {
+ 	if v.flag&flagMethod != 0 {
+-		panic(context + ": cannot assign method value to type " + dst.String())
++		v = makeMethodValue(context, v)
+ 	}
+ 
+ 	switch {
+@@ -2039,7 +2140,7 @@
+ // of the value v to type t, Convert panics.
+ func (v Value) Convert(t Type) Value {
+ 	if v.flag&flagMethod != 0 {
+-		panic("reflect.Value.Convert: cannot convert method values")
++		v = makeMethodValue("Convert", v)
+ 	}
+ 	op := convertOp(t.common(), v.typ)
+ 	if op == nil {
+diff -Naur gcc-4.8.1.orig/libgo/go/regexp/exec_test.go gcc-4.8.1/libgo/go/regexp/exec_test.go
+--- gcc-4.8.1.orig/libgo/go/regexp/exec_test.go	2013-02-10 00:02:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/regexp/exec_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -89,7 +89,7 @@
+ 		txt = f
+ 	}
+ 	lineno := 0
+-	r := bufio.NewReader(txt)
++	scanner := bufio.NewScanner(txt)
+ 	var (
+ 		str       []string
+ 		input     []string
+@@ -99,16 +99,8 @@
+ 		nfail     int
+ 		ncase     int
+ 	)
+-	for {
+-		line, err := r.ReadString('\n')
+-		if err != nil {
+-			if err == io.EOF {
+-				break
+-			}
+-			t.Fatalf("%s:%d: %v", file, lineno, err)
+-		}
+-		line = line[:len(line)-1] // chop \n
+-		lineno++
++	for lineno := 1; scanner.Scan(); lineno++ {
++		line := scanner.Text()
+ 		switch {
+ 		case line == "":
+ 			t.Fatalf("%s:%d: unexpected blank line", file, lineno)
+@@ -204,6 +196,9 @@
+ 			t.Fatalf("%s:%d: out of sync: %s\n", file, lineno, line)
+ 		}
+ 	}
++	if err := scanner.Err(); err != nil {
++		t.Fatalf("%s:%d: %v", file, lineno, err)
++	}
+ 	if len(input) != 0 {
+ 		t.Fatalf("%s:%d: out of sync: have %d strings left at EOF", file, lineno, len(input))
+ 	}
+@@ -706,3 +701,17 @@
+ func BenchmarkMatchHard_32K(b *testing.B)   { benchmark(b, hard, 32<<10) }
+ func BenchmarkMatchHard_1M(b *testing.B)    { benchmark(b, hard, 1<<20) }
+ func BenchmarkMatchHard_32M(b *testing.B)   { benchmark(b, hard, 32<<20) }
++
++func TestLongest(t *testing.T) {
++	re, err := Compile(`a(|b)`)
++	if err != nil {
++		t.Fatal(err)
++	}
++	if g, w := re.FindString("ab"), "a"; g != w {
++		t.Errorf("first match was %q, want %q", g, w)
++	}
++	re.Longest()
++	if g, w := re.FindString("ab"), "ab"; g != w {
++		t.Errorf("longest match was %q, want %q", g, w)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/regexp/regexp.go gcc-4.8.1/libgo/go/regexp/regexp.go
+--- gcc-4.8.1.orig/libgo/go/regexp/regexp.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/regexp/regexp.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,8 @@
+ // general syntax used by Perl, Python, and other languages.
+ // More precisely, it is the syntax accepted by RE2 and described at
+ // http://code.google.com/p/re2/wiki/Syntax, except for \C.
++// For an overview of the syntax, run
++//   godoc regexp/syntax
+ //
+ // All characters are UTF-8-encoded code points.
+ //
+@@ -27,11 +29,11 @@
+ // of bytes; return values are adjusted as appropriate.
+ //
+ // If 'Submatch' is present, the return value is a slice identifying the
+-// successive submatches of the expression.  Submatches are matches of
+-// parenthesized subexpressions within the regular expression, numbered from
+-// left to right in order of opening parenthesis.  Submatch 0 is the match of
+-// the entire expression, submatch 1 the match of the first parenthesized
+-// subexpression, and so on.
++// successive submatches of the expression. Submatches are matches of
++// parenthesized subexpressions (also known as capturing groups) within the
++// regular expression, numbered from left to right in order of opening
++// parenthesis. Submatch 0 is the match of the entire expression, submatch 1
++// the match of the first parenthesized subexpression, and so on.
+ //
+ // If 'Index' is present, matches and submatches are identified by byte index
+ // pairs within the input string: result[2*n:2*n+1] identifies the indexes of
+@@ -130,6 +132,14 @@
+ 	return compile(expr, syntax.POSIX, true)
+ }
+ 
++// Longest makes future searches prefer the leftmost-longest match.
++// That is, when matching against text, the regexp returns a match that
++// begins as early as possible in the input (leftmost), and among those
++// it chooses a match that is as long as possible.
++func (re *Regexp) Longest() {
++	re.longest = true
++}
++
+ func compile(expr string, mode syntax.Flags, longest bool) (*Regexp, error) {
+ 	re, err := syntax.Parse(expr, mode)
+ 	if err != nil {
+@@ -387,7 +397,7 @@
+ // MatchReader checks whether a textual regular expression matches the text
+ // read by the RuneReader.  More complicated queries need to use Compile and
+ // the full Regexp interface.
+-func MatchReader(pattern string, r io.RuneReader) (matched bool, error error) {
++func MatchReader(pattern string, r io.RuneReader) (matched bool, err error) {
+ 	re, err := Compile(pattern)
+ 	if err != nil {
+ 		return false, err
+@@ -398,7 +408,7 @@
+ // MatchString checks whether a textual regular expression
+ // matches a string.  More complicated queries need
+ // to use Compile and the full Regexp interface.
+-func MatchString(pattern string, s string) (matched bool, error error) {
++func MatchString(pattern string, s string) (matched bool, err error) {
+ 	re, err := Compile(pattern)
+ 	if err != nil {
+ 		return false, err
+@@ -409,7 +419,7 @@
+ // Match checks whether a textual regular expression
+ // matches a byte slice.  More complicated queries need
+ // to use Compile and the full Regexp interface.
+-func Match(pattern string, b []byte) (matched bool, error error) {
++func Match(pattern string, b []byte) (matched bool, err error) {
+ 	re, err := Compile(pattern)
+ 	if err != nil {
+ 		return false, err
+diff -Naur gcc-4.8.1.orig/libgo/go/regexp/syntax/doc.go gcc-4.8.1/libgo/go/regexp/syntax/doc.go
+--- gcc-4.8.1.orig/libgo/go/regexp/syntax/doc.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/regexp/syntax/doc.go	2013-07-16 01:55:04.520470000 -0500
+@@ -47,9 +47,9 @@
+   x{n}?          exactly n x
+ 
+ Grouping:
+-  (re)           numbered capturing group
+-  (?P<name>re)   named & numbered capturing group
+-  (?:re)         non-capturing group
++  (re)           numbered capturing group (submatch)
++  (?P<name>re)   named & numbered capturing group (submatch)
++  (?:re)         non-capturing group (submatch)
+   (?flags)       set flags within current group; non-capturing
+   (?flags:re)    set flags during re; non-capturing
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/append_test.go gcc-4.8.1/libgo/go/runtime/append_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/append_test.go	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/runtime/append_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -19,6 +19,67 @@
+ 	}
+ }
+ 
++func benchmarkAppendBytes(b *testing.B, length int) {
++	b.StopTimer()
++	x := make([]byte, 0, N)
++	y := make([]byte, length)
++	b.StartTimer()
++	for i := 0; i < b.N; i++ {
++		x = x[0:0]
++		x = append(x, y...)
++	}
++}
++
++func BenchmarkAppend1Byte(b *testing.B) {
++	benchmarkAppendBytes(b, 1)
++}
++
++func BenchmarkAppend4Bytes(b *testing.B) {
++	benchmarkAppendBytes(b, 4)
++}
++
++func BenchmarkAppend8Bytes(b *testing.B) {
++	benchmarkAppendBytes(b, 8)
++}
++
++func BenchmarkAppend16Bytes(b *testing.B) {
++	benchmarkAppendBytes(b, 16)
++}
++
++func BenchmarkAppend32Bytes(b *testing.B) {
++	benchmarkAppendBytes(b, 32)
++}
++
++func benchmarkAppendStr(b *testing.B, str string) {
++	b.StopTimer()
++	x := make([]byte, 0, N)
++	b.StartTimer()
++	for i := 0; i < b.N; i++ {
++		x = x[0:0]
++		x = append(x, str...)
++	}
++}
++
++func BenchmarkAppendStr1Byte(b *testing.B) {
++	benchmarkAppendStr(b, "1")
++}
++
++func BenchmarkAppendStr4Bytes(b *testing.B) {
++	benchmarkAppendStr(b, "1234")
++}
++
++func BenchmarkAppendStr8Bytes(b *testing.B) {
++	benchmarkAppendStr(b, "12345678")
++}
++
++func BenchmarkAppendStr16Bytes(b *testing.B) {
++	benchmarkAppendStr(b, "1234567890123456")
++}
++
++func BenchmarkAppendStr32Bytes(b *testing.B) {
++	benchmarkAppendStr(b, "12345678901234567890123456789012")
++}
++
+ func BenchmarkAppendSpecialCase(b *testing.B) {
+ 	b.StopTimer()
+ 	x := make([]int, 0, N)
+@@ -50,3 +111,13 @@
+ 		t.Error("append failed: ", x[0], x[1])
+ 	}
+ }
++
++func TestAppendOverlap(t *testing.T) {
++	x := []byte("1234")
++	x = append(x[1:], x...) // p > q in runtimeÂ·appendslice.
++	got := string(x)
++	want := "2341234"
++	if got != want {
++		t.Errorf("overlap failed: got %q want %q", got, want)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/crash_cgo_test.go gcc-4.8.1/libgo/go/runtime/crash_cgo_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/crash_cgo_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/runtime/crash_cgo_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -11,5 +11,80 @@
+ )
+ 
+ func TestCgoCrashHandler(t *testing.T) {
+-	testCrashHandler(t, &crashTest{Cgo: true})
++	testCrashHandler(t, true)
+ }
++
++func TestCgoSignalDeadlock(t *testing.T) {
++	/* gccgo does not have a go command
++	got := executeTest(t, cgoSignalDeadlockSource, nil)
++	want := "OK\n"
++	if got != want {
++		t.Fatalf("expected %q, but got %q", want, got)
++	}
++	*/
++}
++
++const cgoSignalDeadlockSource = `
++package main
++
++import "C"
++
++import (
++	"fmt"
++	"runtime"
++	"time"
++)
++
++func main() {
++	runtime.GOMAXPROCS(100)
++	ping := make(chan bool)
++	go func() {
++		for i := 0; ; i++ {
++			runtime.Gosched()
++			select {
++			case done := <-ping:
++				if done {
++					ping <- true
++					return
++				}
++				ping <- true
++			default:
++			}
++			func() {
++				defer func() {
++					recover()
++				}()
++				var s *string
++				*s = ""
++			}()
++		}
++	}()
++	time.Sleep(time.Millisecond)
++	for i := 0; i < 64; i++ {
++		go func() {
++			runtime.LockOSThread()
++			select {}
++		}()
++		go func() {
++			runtime.LockOSThread()
++			select {}
++		}()
++		time.Sleep(time.Millisecond)
++		ping <- false
++		select {
++		case <-ping:
++		case <-time.After(time.Second):
++			fmt.Printf("HANG\n")
++			return
++		}
++	}
++	ping <- true
++	select {
++	case <-ping:
++	case <-time.After(time.Second):
++		fmt.Printf("HANG\n")
++		return
++	}
++	fmt.Printf("OK\n")
++}
++`
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/crash_test.go gcc-4.8.1/libgo/go/runtime/crash_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/crash_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/crash_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,21 +7,33 @@
+ import (
+ 	"io/ioutil"
+ 	"os"
+-	// "os/exec"
++	"os/exec"
+ 	"path/filepath"
++	"strings"
+ 	"testing"
+ 	"text/template"
+ )
+ 
+-type crashTest struct {
+-	Cgo bool
++// testEnv excludes GOGCTRACE from the environment
++// to prevent its output from breaking tests that
++// are trying to parse other command output.
++func testEnv(cmd *exec.Cmd) *exec.Cmd {
++	if cmd.Env != nil {
++		panic("environment already set")
++	}
++	for _, env := range os.Environ() {
++		if strings.HasPrefix(env, "GOGCTRACE=") {
++			continue
++		}
++		cmd.Env = append(cmd.Env, env)
++	}
++	return cmd
+ }
+ 
+-// This test is a separate program, because it is testing
+-// both main (m0) and non-main threads (m).
++func executeTest(t *testing.T, templ string, data interface{}) string {
++	checkStaleRuntime(t)
+ 
+-func testCrashHandler(t *testing.T, ct *crashTest) {
+-	st := template.Must(template.New("crashSource").Parse(crashSource))
++	st := template.Must(template.New("crashSource").Parse(templ))
+ 
+ 	dir, err := ioutil.TempDir("", "go-build")
+ 	if err != nil {
+@@ -34,30 +46,79 @@
+ 	if err != nil {
+ 		t.Fatalf("failed to create %v: %v", src, err)
+ 	}
+-	err = st.Execute(f, ct)
++	err = st.Execute(f, data)
+ 	if err != nil {
+ 		f.Close()
+ 		t.Fatalf("failed to execute template: %v", err)
+ 	}
+ 	f.Close()
+ 
+-	/*
+-		 gccgo does not have a go command.
++	got, _ := testEnv(exec.Command("go", "run", src)).CombinedOutput()
++	return string(got)
++}
+ 
+-		got, err := exec.Command("go", "run", src).CombinedOutput()
+-		if err != nil {
+-			t.Fatalf("program exited with error: %v\n%v", err, string(got))
+-		}
+-		want := "main: recovered done\nnew-thread: recovered done\nsecond-new-thread: recovered done\nmain-again: recovered done\n"
+-		if string(got) != string(want) {
+-			t.Fatalf("expected %q, but got %q", string(want), string(got))
+-		}
++func checkStaleRuntime(t *testing.T) {
++	// 'go run' uses the installed copy of runtime.a, which may be out of date.
++	out, err := testEnv(exec.Command("go", "list", "-f", "{{.Stale}}", "runtime")).CombinedOutput()
++	if err != nil {
++		t.Fatalf("failed to execute 'go list': %v\n%v", err, string(out))
++	}
++	if string(out) != "false\n" {
++		t.Fatalf("Stale runtime.a. Run 'go install runtime'.")
++	}
++}
+ 
++func testCrashHandler(t *testing.T, cgo bool) {
++	/* gccgo does not have a go command
++	type crashTest struct {
++		Cgo bool
++	}
++	got := executeTest(t, crashSource, &crashTest{Cgo: cgo})
++	want := "main: recovered done\nnew-thread: recovered done\nsecond-new-thread: recovered done\nmain-again: recovered done\n"
++	if got != want {
++		t.Fatalf("expected %q, but got %q", want, got)
++	}
+ 	*/
+ }
+ 
+ func TestCrashHandler(t *testing.T) {
+-	testCrashHandler(t, &crashTest{Cgo: false})
++	testCrashHandler(t, false)
++}
++
++func testDeadlock(t *testing.T, source string) {
++	/* gccgo does not have a go command.
++	got := executeTest(t, source, nil)
++	want := "fatal error: all goroutines are asleep - deadlock!\n"
++	if !strings.HasPrefix(got, want) {
++		t.Fatalf("expected %q, but got %q", want, got)
++	}
++	*/
++}
++
++func TestSimpleDeadlock(t *testing.T) {
++	testDeadlock(t, simpleDeadlockSource)
++}
++
++func TestInitDeadlock(t *testing.T) {
++	testDeadlock(t, initDeadlockSource)
++}
++
++func TestLockedDeadlock(t *testing.T) {
++	testDeadlock(t, lockedDeadlockSource)
++}
++
++func TestLockedDeadlock2(t *testing.T) {
++	testDeadlock(t, lockedDeadlockSource2)
++}
++
++func TestGoexitDeadlock(t *testing.T) {
++	/* gccgo does not have a go command
++	got := executeTest(t, goexitDeadlockSource, nil)
++	want := ""
++	if got != want {
++		t.Fatalf("expected %q, but got %q", want, got)
++	}
++	*/
+ }
+ 
+ const crashSource = `
+@@ -103,3 +164,62 @@
+ 	test("main-again")
+ }
+ `
++
++const simpleDeadlockSource = `
++package main
++func main() {
++	select {}
++}
++`
++
++const initDeadlockSource = `
++package main
++func init() {
++	select {}
++}
++func main() {
++}
++`
++
++const lockedDeadlockSource = `
++package main
++import "runtime"
++func main() {
++	runtime.LockOSThread()
++	select {}
++}
++`
++
++const lockedDeadlockSource2 = `
++package main
++import (
++	"runtime"
++	"time"
++)
++func main() {
++	go func() {
++		runtime.LockOSThread()
++		select {}
++	}()
++	time.Sleep(time.Millisecond)
++	select {}
++}
++`
++
++const goexitDeadlockSource = `
++package main
++import (
++      "runtime"
++)
++
++func F() {
++      for i := 0; i < 10; i++ {
++      }
++}
++
++func main() {
++      go F()
++      go F()
++      runtime.Goexit()
++}
++`
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/debug/garbage.go gcc-4.8.1/libgo/go/runtime/debug/garbage.go
+--- gcc-4.8.1.orig/libgo/go/runtime/debug/garbage.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/debug/garbage.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,101 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package debug
++
++import (
++	"runtime"
++	"sort"
++	"time"
++)
++
++// GCStats collect information about recent garbage collections.
++type GCStats struct {
++	LastGC         time.Time       // time of last collection
++	NumGC          int64           // number of garbage collections
++	PauseTotal     time.Duration   // total pause for all collections
++	Pause          []time.Duration // pause history, most recent first
++	PauseQuantiles []time.Duration
++}
++
++// Implemented in package runtime.
++func readGCStats(*[]time.Duration)
++func enableGC(bool) bool
++func setGCPercent(int) int
++func freeOSMemory()
++
++// ReadGCStats reads statistics about garbage collection into stats.
++// The number of entries in the pause history is system-dependent;
++// stats.Pause slice will be reused if large enough, reallocated otherwise.
++// ReadGCStats may use the full capacity of the stats.Pause slice.
++// If stats.PauseQuantiles is non-empty, ReadGCStats fills it with quantiles
++// summarizing the distribution of pause time. For example, if
++// len(stats.PauseQuantiles) is 5, it will be filled with the minimum,
++// 25%, 50%, 75%, and maximum pause times.
++func ReadGCStats(stats *GCStats) {
++	// Create a buffer with space for at least two copies of the
++	// pause history tracked by the runtime. One will be returned
++	// to the caller and the other will be used as a temporary buffer
++	// for computing quantiles.
++	const maxPause = len(((*runtime.MemStats)(nil)).PauseNs)
++	if cap(stats.Pause) < 2*maxPause {
++		stats.Pause = make([]time.Duration, 2*maxPause)
++	}
++
++	// readGCStats fills in the pause history (up to maxPause entries)
++	// and then three more: Unix ns time of last GC, number of GC,
++	// and total pause time in nanoseconds. Here we depend on the
++	// fact that time.Duration's native unit is nanoseconds, so the
++	// pauses and the total pause time do not need any conversion.
++	readGCStats(&stats.Pause)
++	n := len(stats.Pause) - 3
++	stats.LastGC = time.Unix(0, int64(stats.Pause[n]))
++	stats.NumGC = int64(stats.Pause[n+1])
++	stats.PauseTotal = stats.Pause[n+2]
++	stats.Pause = stats.Pause[:n]
++
++	if len(stats.PauseQuantiles) > 0 {
++		if n == 0 {
++			for i := range stats.PauseQuantiles {
++				stats.PauseQuantiles[i] = 0
++			}
++		} else {
++			// There's room for a second copy of the data in stats.Pause.
++			// See the allocation at the top of the function.
++			sorted := stats.Pause[n : n+n]
++			copy(sorted, stats.Pause)
++			sort.Sort(byDuration(sorted))
++			nq := len(stats.PauseQuantiles) - 1
++			for i := 0; i < nq; i++ {
++				stats.PauseQuantiles[i] = sorted[len(sorted)*i/nq]
++			}
++			stats.PauseQuantiles[nq] = sorted[len(sorted)-1]
++		}
++	}
++}
++
++type byDuration []time.Duration
++
++func (x byDuration) Len() int           { return len(x) }
++func (x byDuration) Swap(i, j int)      { x[i], x[j] = x[j], x[i] }
++func (x byDuration) Less(i, j int) bool { return x[i] < x[j] }
++
++// SetGCPercent sets the garbage collection target percentage:
++// a collection is triggered when the ratio of freshly allocated data
++// to live data remaining after the previous collection reaches this percentage.
++// SetGCPercent returns the previous setting.
++// The initial setting is the value of the GOGC environment variable
++// at startup, or 100 if the variable is not set.
++// A negative percentage disables garbage collection.
++func SetGCPercent(percent int) int {
++	return setGCPercent(percent)
++}
++
++// FreeOSMemory forces a garbage collection followed by an
++// attempt to return as much memory to the operating system
++// as possible. (Even if this is not called, the runtime gradually
++// returns memory to the operating system in a background task.)
++func FreeOSMemory() {
++	freeOSMemory()
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/debug/garbage_test.go gcc-4.8.1/libgo/go/runtime/debug/garbage_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/debug/garbage_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/debug/garbage_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,102 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package debug
++
++import (
++	"runtime"
++	"testing"
++	"time"
++)
++
++func TestReadGCStats(t *testing.T) {
++	defer SetGCPercent(SetGCPercent(-1))
++
++	var stats GCStats
++	var mstats runtime.MemStats
++	var min, max time.Duration
++
++	// First ReadGCStats will allocate, second should not,
++	// especially if we follow up with an explicit garbage collection.
++	stats.PauseQuantiles = make([]time.Duration, 10)
++	ReadGCStats(&stats)
++	runtime.GC()
++
++	// Assume these will return same data: no GC during ReadGCStats.
++	ReadGCStats(&stats)
++	runtime.ReadMemStats(&mstats)
++
++	if stats.NumGC != int64(mstats.NumGC) {
++		t.Errorf("stats.NumGC = %d, but mstats.NumGC = %d", stats.NumGC, mstats.NumGC)
++	}
++	if stats.PauseTotal != time.Duration(mstats.PauseTotalNs) {
++		t.Errorf("stats.PauseTotal = %d, but mstats.PauseTotalNs = %d", stats.PauseTotal, mstats.PauseTotalNs)
++	}
++	if stats.LastGC.UnixNano() != int64(mstats.LastGC) {
++		t.Errorf("stats.LastGC.UnixNano = %d, but mstats.LastGC = %d", stats.LastGC.UnixNano(), mstats.LastGC)
++	}
++	n := int(mstats.NumGC)
++	if n > len(mstats.PauseNs) {
++		n = len(mstats.PauseNs)
++	}
++	if len(stats.Pause) != n {
++		t.Errorf("len(stats.Pause) = %d, want %d", len(stats.Pause), n)
++	} else {
++		off := (int(mstats.NumGC) + len(mstats.PauseNs) - 1) % len(mstats.PauseNs)
++		for i := 0; i < n; i++ {
++			dt := stats.Pause[i]
++			if dt != time.Duration(mstats.PauseNs[off]) {
++				t.Errorf("stats.Pause[%d] = %d, want %d", i, dt, mstats.PauseNs[off])
++			}
++			if max < dt {
++				max = dt
++			}
++			if min > dt || i == 0 {
++				min = dt
++			}
++			off = (off + len(mstats.PauseNs) - 1) % len(mstats.PauseNs)
++		}
++	}
++
++	q := stats.PauseQuantiles
++	nq := len(q)
++	if q[0] != min || q[nq-1] != max {
++		t.Errorf("stats.PauseQuantiles = [%d, ..., %d], want [%d, ..., %d]", q[0], q[nq-1], min, max)
++	}
++
++	for i := 0; i < nq-1; i++ {
++		if q[i] > q[i+1] {
++			t.Errorf("stats.PauseQuantiles[%d]=%d > stats.PauseQuantiles[%d]=%d", i, q[i], i+1, q[i+1])
++		}
++	}
++}
++
++var big = make([]byte, 1<<20)
++
++func TestFreeOSMemory(t *testing.T) {
++	var ms1, ms2 runtime.MemStats
++
++	if big == nil {
++		t.Skip("test is not reliable when run multiple times")
++	}
++	big = nil
++	runtime.GC()
++	runtime.ReadMemStats(&ms1)
++	FreeOSMemory()
++	runtime.ReadMemStats(&ms2)
++	if ms1.HeapReleased >= ms2.HeapReleased {
++		t.Errorf("released before=%d; released after=%d; did not go up", ms1.HeapReleased, ms2.HeapReleased)
++	}
++}
++
++func TestSetGCPercent(t *testing.T) {
++	// Test that the variable is being set and returned correctly.
++	// Assume the percentage itself is implemented fine during GC,
++	// which is harder to test.
++	old := SetGCPercent(123)
++	new := SetGCPercent(old)
++	if new != 123 {
++		t.Errorf("SetGCPercent(123); SetGCPercent(x) = %d, want 123", new)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/export_test.go gcc-4.8.1/libgo/go/runtime/export_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/export_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/runtime/export_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -59,3 +59,9 @@
+ 	begin, end := parforiters(desc, uintptr(tid))
+ 	return uint32(begin), uint32(end)
+ }
++
++func testSchedLocalQueue()
++func testSchedLocalQueueSteal()
++
++var TestSchedLocalQueue1 = testSchedLocalQueue
++var TestSchedLocalQueueSteal1 = testSchedLocalQueueSteal
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/extern.go gcc-4.8.1/libgo/go/runtime/extern.go
+--- gcc-4.8.1.orig/libgo/go/runtime/extern.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/extern.go	2013-07-16 01:55:04.520470000 -0500
+@@ -3,10 +3,54 @@
+ // license that can be found in the LICENSE file.
+ 
+ /*
+-	Package runtime contains operations that interact with Go's runtime system,
+-	such as functions to control goroutines. It also includes the low-level type information
+-	used by the reflect package; see reflect's documentation for the programmable
+-	interface to the run-time type system.
++Package runtime contains operations that interact with Go's runtime system,
++such as functions to control goroutines. It also includes the low-level type information
++used by the reflect package; see reflect's documentation for the programmable
++interface to the run-time type system.
++
++Environment Variables
++
++The following environment variables ($name or %name%, depending on the host
++operating system) control the run-time behavior of Go programs. The meanings
++and use may change from release to release.
++
++The GOGC variable sets the initial garbage collection target percentage.
++A collection is triggered when the ratio of freshly allocated data to live data
++remaining after the previous collection reaches this percentage. The default
++is GOGC=100. Setting GOGC=off disables the garbage collector entirely.
++The runtime/debug package's SetGCPercent function allows changing this
++percentage at run time. See http://golang.org/pkg/runtime/debug/#SetGCPercent.
++
++The GOGCTRACE variable controls debug output from the garbage collector.
++Setting GOGCTRACE=1 causes the garbage collector to emit a single line to standard
++error at each collection, summarizing the amount of memory collected and the
++length of the pause. Setting GOGCTRACE=2 emits the same summary but also
++repeats each collection.
++
++The GOMAXPROCS variable limits the number of operating system threads that
++can execute user-level Go code simultaneously. There is no limit to the number of threads
++that can be blocked in system calls on behalf of Go code; those do not count against
++the GOMAXPROCS limit. This package's GOMAXPROCS function queries and changes
++the limit.
++
++The GOTRACEBACK variable controls the amount of output generated when a Go
++program fails due to an unrecovered panic or an unexpected runtime condition.
++By default, a failure prints a stack trace for every extant goroutine, eliding functions
++internal to the run-time system, and then exits with exit code 2.
++If GOTRACEBACK=0, the per-goroutine stack traces are omitted entirely.
++If GOTRACEBACK=1, the default behavior is used.
++If GOTRACEBACK=2, the per-goroutine stack traces include run-time functions.
++If GOTRACEBACK=crash, the per-goroutine stack traces include run-time functions,
++and if possible the program crashes in an operating-specific manner instead of
++exiting. For example, on Unix systems, the program raises SIGABRT to trigger a
++core dump.
++
++The GOARCH, GOOS, GOPATH, and GOROOT environment variables complete
++the set of Go environment variables. They influence the building of Go programs
++(see http://golang.org/cmd/go and http://golang.org/pkg/go/build).
++GOARCH, GOOS, and GOROOT are recorded at compile time and made available by
++constants or functions in this package, but they do not influence the execution
++of the run-time system.
+ */
+ package runtime
+ 
+@@ -59,9 +103,6 @@
+ // implemented in symtab.c
+ func funcline_go(*Func, uintptr) (string, int)
+ 
+-// mid returns the current OS thread (m) id.
+-func mid() uint32
+-
+ // SetFinalizer sets the finalizer associated with x to f.
+ // When the garbage collector finds an unreachable block
+ // with an associated finalizer, it clears the association and runs
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/gc_test.go gcc-4.8.1/libgo/go/runtime/gc_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/gc_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/gc_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,12 +5,36 @@
+ package runtime_test
+ 
+ import (
++	// "os"
+ 	"runtime"
++	"runtime/debug"
+ 	"testing"
+ )
+ 
+ func TestGcSys(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	/* gccgo does not have a go command
++	if os.Getenv("GOGC") == "off" {
++		t.Skip("skipping test; GOGC=off in environment")
++	}
++	data := struct{ Short bool }{testing.Short()}
++	got := executeTest(t, testGCSysSource, &data)
++	want := "OK\n"
++	if got != want {
++		t.Fatalf("expected %q, but got %q", want, got)
++	}
++	*/
++}
++
++const testGCSysSource = `
++package main
++
++import (
++	"fmt"
++	"runtime"
++)
++
++func main() {
++	runtime.GOMAXPROCS(1)
+ 	memstats := new(runtime.MemStats)
+ 	runtime.GC()
+ 	runtime.ReadMemStats(memstats)
+@@ -19,9 +43,9 @@
+ 	runtime.MemProfileRate = 0 // disable profiler
+ 
+ 	itercount := 1000000
+-	if testing.Short() {
+-		itercount = 100000
+-	}
++{{if .Short}}
++	itercount = 100000
++{{end}}
+ 	for i := 0; i < itercount; i++ {
+ 		workthegc()
+ 	}
+@@ -34,15 +58,17 @@
+ 	} else {
+ 		sys = memstats.Sys - sys
+ 	}
+-	t.Logf("used %d extra bytes", sys)
+ 	if sys > 16<<20 {
+-		t.Fatalf("using too much memory: %d bytes", sys)
++		fmt.Printf("using too much memory: %d bytes\n", sys)
++		return
+ 	}
++	fmt.Printf("OK\n")
+ }
+ 
+ func workthegc() []byte {
+ 	return make([]byte, 1029)
+ }
++`
+ 
+ func TestGcDeepNesting(t *testing.T) {
+ 	type T [2][2][2][2][2][2][2][2][2][2]*int
+@@ -59,3 +85,69 @@
+ 		t.Fail()
+ 	}
+ }
++
++func TestGcHashmapIndirection(t *testing.T) {
++	defer debug.SetGCPercent(debug.SetGCPercent(1))
++	runtime.GC()
++	type T struct {
++		a [256]int
++	}
++	m := make(map[T]T)
++	for i := 0; i < 2000; i++ {
++		var a T
++		a.a[0] = i
++		m[a] = T{}
++	}
++}
++
++func TestGcArraySlice(t *testing.T) {
++	type X struct {
++		buf     [1]byte
++		nextbuf []byte
++		next    *X
++	}
++	var head *X
++	for i := 0; i < 10; i++ {
++		p := &X{}
++		p.buf[0] = 42
++		p.next = head
++		if head != nil {
++			p.nextbuf = head.buf[:]
++		}
++		head = p
++		runtime.GC()
++	}
++	for p := head; p != nil; p = p.next {
++		if p.buf[0] != 42 {
++			t.Fatal("corrupted heap")
++		}
++	}
++}
++
++func TestGcRescan(t *testing.T) {
++	type X struct {
++		c     chan error
++		nextx *X
++	}
++	type Y struct {
++		X
++		nexty *Y
++		p     *int
++	}
++	var head *Y
++	for i := 0; i < 10; i++ {
++		p := &Y{}
++		p.c = make(chan error)
++		p.nextx = &head.X
++		p.nexty = head
++		p.p = new(int)
++		*p.p = 42
++		head = p
++		runtime.GC()
++	}
++	for p := head; p != nil; p = p.nexty {
++		if *p.p != 42 {
++			t.Fatal("corrupted heap")
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/mapspeed_test.go gcc-4.8.1/libgo/go/runtime/mapspeed_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/mapspeed_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/mapspeed_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,208 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++package runtime_test
++
++import (
++	"fmt"
++	"strings"
++	"testing"
++)
++
++const size = 10
++
++func BenchmarkHashStringSpeed(b *testing.B) {
++	strings := make([]string, size)
++	for i := 0; i < size; i++ {
++		strings[i] = fmt.Sprintf("string#%d", i)
++	}
++	sum := 0
++	m := make(map[string]int, size)
++	for i := 0; i < size; i++ {
++		m[strings[i]] = 0
++	}
++	idx := 0
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		sum += m[strings[idx]]
++		idx++
++		if idx == size {
++			idx = 0
++		}
++	}
++}
++
++func BenchmarkHashInt32Speed(b *testing.B) {
++	ints := make([]int32, size)
++	for i := 0; i < size; i++ {
++		ints[i] = int32(i)
++	}
++	sum := 0
++	m := make(map[int32]int, size)
++	for i := 0; i < size; i++ {
++		m[ints[i]] = 0
++	}
++	idx := 0
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		sum += m[ints[idx]]
++		idx++
++		if idx == size {
++			idx = 0
++		}
++	}
++}
++
++func BenchmarkHashInt64Speed(b *testing.B) {
++	ints := make([]int64, size)
++	for i := 0; i < size; i++ {
++		ints[i] = int64(i)
++	}
++	sum := 0
++	m := make(map[int64]int, size)
++	for i := 0; i < size; i++ {
++		m[ints[i]] = 0
++	}
++	idx := 0
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		sum += m[ints[idx]]
++		idx++
++		if idx == size {
++			idx = 0
++		}
++	}
++}
++func BenchmarkHashStringArraySpeed(b *testing.B) {
++	stringpairs := make([][2]string, size)
++	for i := 0; i < size; i++ {
++		for j := 0; j < 2; j++ {
++			stringpairs[i][j] = fmt.Sprintf("string#%d/%d", i, j)
++		}
++	}
++	sum := 0
++	m := make(map[[2]string]int, size)
++	for i := 0; i < size; i++ {
++		m[stringpairs[i]] = 0
++	}
++	idx := 0
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		sum += m[stringpairs[idx]]
++		idx++
++		if idx == size {
++			idx = 0
++		}
++	}
++}
++
++func BenchmarkMegMap(b *testing.B) {
++	m := make(map[string]bool)
++	for suffix := 'A'; suffix <= 'G'; suffix++ {
++		m[strings.Repeat("X", 1<<20-1)+fmt.Sprint(suffix)] = true
++	}
++	key := strings.Repeat("X", 1<<20-1) + "k"
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[key]
++	}
++}
++
++func BenchmarkMegOneMap(b *testing.B) {
++	m := make(map[string]bool)
++	m[strings.Repeat("X", 1<<20)] = true
++	key := strings.Repeat("Y", 1<<20)
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[key]
++	}
++}
++
++func BenchmarkMegEqMap(b *testing.B) {
++	m := make(map[string]bool)
++	key1 := strings.Repeat("X", 1<<20)
++	key2 := strings.Repeat("X", 1<<20) // equal but different instance
++	m[key1] = true
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[key2]
++	}
++}
++
++func BenchmarkMegEmptyMap(b *testing.B) {
++	m := make(map[string]bool)
++	key := strings.Repeat("X", 1<<20)
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[key]
++	}
++}
++
++func BenchmarkSmallStrMap(b *testing.B) {
++	m := make(map[string]bool)
++	for suffix := 'A'; suffix <= 'G'; suffix++ {
++		m[fmt.Sprint(suffix)] = true
++	}
++	key := "k"
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[key]
++	}
++}
++
++func BenchmarkMapStringKeysEight_16(b *testing.B) { benchmarkMapStringKeysEight(b, 16) }
++func BenchmarkMapStringKeysEight_32(b *testing.B) { benchmarkMapStringKeysEight(b, 32) }
++func BenchmarkMapStringKeysEight_64(b *testing.B) { benchmarkMapStringKeysEight(b, 64) }
++func BenchmarkMapStringKeysEight_1M(b *testing.B) { benchmarkMapStringKeysEight(b, 1<<20) }
++
++func benchmarkMapStringKeysEight(b *testing.B, keySize int) {
++	m := make(map[string]bool)
++	for i := 0; i < 8; i++ {
++		m[strings.Repeat("K", i+1)] = true
++	}
++	key := strings.Repeat("K", keySize)
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_ = m[key]
++	}
++}
++
++func BenchmarkIntMap(b *testing.B) {
++	m := make(map[int]bool)
++	for i := 0; i < 8; i++ {
++		m[i] = true
++	}
++	b.ResetTimer()
++	for i := 0; i < b.N; i++ {
++		_, _ = m[7]
++	}
++}
++
++// Accessing the same keys in a row.
++func benchmarkRepeatedLookup(b *testing.B, lookupKeySize int) {
++	m := make(map[string]bool)
++	// At least bigger than a single bucket:
++	for i := 0; i < 64; i++ {
++		m[fmt.Sprintf("some key %d", i)] = true
++	}
++	base := strings.Repeat("x", lookupKeySize-1)
++	key1 := base + "1"
++	key2 := base + "2"
++	b.ResetTimer()
++	for i := 0; i < b.N/4; i++ {
++		_ = m[key1]
++		_ = m[key1]
++		_ = m[key2]
++		_ = m[key2]
++	}
++}
++
++func BenchmarkRepeatedLookupStrMapKey32(b *testing.B) { benchmarkRepeatedLookup(b, 32) }
++func BenchmarkRepeatedLookupStrMapKey1M(b *testing.B) { benchmarkRepeatedLookup(b, 1<<20) }
++
++func BenchmarkNewEmptyMap(b *testing.B) {
++	b.ReportAllocs()
++	for i := 0; i < b.N; i++ {
++		_ = make(map[int]int)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/map_test.go gcc-4.8.1/libgo/go/runtime/map_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/map_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/map_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,380 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package runtime_test
++
++import (
++	"fmt"
++	"math"
++	"reflect"
++	"runtime"
++	"sort"
++	"strings"
++	"sync"
++	"testing"
++)
++
++// negative zero is a good test because:
++//  1) 0 and -0 are equal, yet have distinct representations.
++//  2) 0 is represented as all zeros, -0 isn't.
++// I'm not sure the language spec actually requires this behavior,
++// but it's what the current map implementation does.
++func TestNegativeZero(t *testing.T) {
++	m := make(map[float64]bool, 0)
++
++	m[+0.0] = true
++	m[math.Copysign(0.0, -1.0)] = true // should overwrite +0 entry
++
++	if len(m) != 1 {
++		t.Error("length wrong")
++	}
++
++	/* gccgo fails this test; this is not required by the spec.
++	for k := range m {
++		if math.Copysign(1.0, k) > 0 {
++			t.Error("wrong sign")
++		}
++	}
++	*/
++
++	m = make(map[float64]bool, 0)
++	m[math.Copysign(0.0, -1.0)] = true
++	m[+0.0] = true // should overwrite -0.0 entry
++
++	if len(m) != 1 {
++		t.Error("length wrong")
++	}
++
++	/* gccgo fails this test; this is not required by the spec.
++	for k := range m {
++		if math.Copysign(1.0, k) < 0 {
++			t.Error("wrong sign")
++		}
++	}
++	*/
++}
++
++// nan is a good test because nan != nan, and nan has
++// a randomized hash value.
++func TestNan(t *testing.T) {
++	m := make(map[float64]int, 0)
++	nan := math.NaN()
++	m[nan] = 1
++	m[nan] = 2
++	m[nan] = 4
++	if len(m) != 3 {
++		t.Error("length wrong")
++	}
++	s := 0
++	for k, v := range m {
++		if k == k {
++			t.Error("nan disappeared")
++		}
++		if (v & (v - 1)) != 0 {
++			t.Error("value wrong")
++		}
++		s |= v
++	}
++	if s != 7 {
++		t.Error("values wrong")
++	}
++}
++
++// Maps aren't actually copied on assignment.
++func TestAlias(t *testing.T) {
++	m := make(map[int]int, 0)
++	m[0] = 5
++	n := m
++	n[0] = 6
++	if m[0] != 6 {
++		t.Error("alias didn't work")
++	}
++}
++
++func TestGrowWithNaN(t *testing.T) {
++	t.Skip("fails with gccgo")
++	m := make(map[float64]int, 4)
++	nan := math.NaN()
++	m[nan] = 1
++	m[nan] = 2
++	m[nan] = 4
++	cnt := 0
++	s := 0
++	growflag := true
++	for k, v := range m {
++		if growflag {
++			// force a hashtable resize
++			for i := 0; i < 100; i++ {
++				m[float64(i)] = i
++			}
++			growflag = false
++		}
++		if k != k {
++			cnt++
++			s |= v
++		}
++	}
++	t.Log("cnt:", cnt, "s:", s)
++	if cnt != 3 {
++		t.Error("NaN keys lost during grow")
++	}
++	if s != 7 {
++		t.Error("NaN values lost during grow")
++	}
++}
++
++type FloatInt struct {
++	x float64
++	y int
++}
++
++func TestGrowWithNegativeZero(t *testing.T) {
++	t.Skip("fails with gccgo")
++	negzero := math.Copysign(0.0, -1.0)
++	m := make(map[FloatInt]int, 4)
++	m[FloatInt{0.0, 0}] = 1
++	m[FloatInt{0.0, 1}] = 2
++	m[FloatInt{0.0, 2}] = 4
++	m[FloatInt{0.0, 3}] = 8
++	growflag := true
++	s := 0
++	cnt := 0
++	negcnt := 0
++	// The first iteration should return the +0 key.
++	// The subsequent iterations should return the -0 key.
++	// I'm not really sure this is required by the spec,
++	// but it makes sense.
++	// TODO: are we allowed to get the first entry returned again???
++	for k, v := range m {
++		if v == 0 {
++			continue
++		} // ignore entries added to grow table
++		cnt++
++		if math.Copysign(1.0, k.x) < 0 {
++			if v&16 == 0 {
++				t.Error("key/value not updated together 1")
++			}
++			negcnt++
++			s |= v & 15
++		} else {
++			if v&16 == 16 {
++				t.Error("key/value not updated together 2", k, v)
++			}
++			s |= v
++		}
++		if growflag {
++			// force a hashtable resize
++			for i := 0; i < 100; i++ {
++				m[FloatInt{3.0, i}] = 0
++			}
++			// then change all the entries
++			// to negative zero
++			m[FloatInt{negzero, 0}] = 1 | 16
++			m[FloatInt{negzero, 1}] = 2 | 16
++			m[FloatInt{negzero, 2}] = 4 | 16
++			m[FloatInt{negzero, 3}] = 8 | 16
++			growflag = false
++		}
++	}
++	if s != 15 {
++		t.Error("entry missing", s)
++	}
++	if cnt != 4 {
++		t.Error("wrong number of entries returned by iterator", cnt)
++	}
++	if negcnt != 3 {
++		t.Error("update to negzero missed by iteration", negcnt)
++	}
++}
++
++func TestIterGrowAndDelete(t *testing.T) {
++	m := make(map[int]int, 4)
++	for i := 0; i < 100; i++ {
++		m[i] = i
++	}
++	growflag := true
++	for k := range m {
++		if growflag {
++			// grow the table
++			for i := 100; i < 1000; i++ {
++				m[i] = i
++			}
++			// delete all odd keys
++			for i := 1; i < 1000; i += 2 {
++				delete(m, i)
++			}
++			growflag = false
++		} else {
++			if k&1 == 1 {
++				t.Error("odd value returned")
++			}
++		}
++	}
++}
++
++// make sure old bucket arrays don't get GCd while
++// an iterator is still using them.
++func TestIterGrowWithGC(t *testing.T) {
++	m := make(map[int]int, 4)
++	for i := 0; i < 16; i++ {
++		m[i] = i
++	}
++	growflag := true
++	bitmask := 0
++	for k := range m {
++		if k < 16 {
++			bitmask |= 1 << uint(k)
++		}
++		if growflag {
++			// grow the table
++			for i := 100; i < 1000; i++ {
++				m[i] = i
++			}
++			// trigger a gc
++			runtime.GC()
++			growflag = false
++		}
++	}
++	if bitmask != 1<<16-1 {
++		t.Error("missing key", bitmask)
++	}
++}
++
++func testConcurrentReadsAfterGrowth(t *testing.T, useReflect bool) {
++	if runtime.GOMAXPROCS(-1) == 1 {
++		defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(16))
++	}
++	numLoop := 10
++	numGrowStep := 250
++	numReader := 16
++	if testing.Short() {
++		numLoop, numGrowStep = 2, 500
++	}
++	for i := 0; i < numLoop; i++ {
++		m := make(map[int]int, 0)
++		for gs := 0; gs < numGrowStep; gs++ {
++			m[gs] = gs
++			var wg sync.WaitGroup
++			wg.Add(numReader * 2)
++			for nr := 0; nr < numReader; nr++ {
++				go func() {
++					defer wg.Done()
++					for _ = range m {
++					}
++				}()
++				go func() {
++					defer wg.Done()
++					for key := 0; key < gs; key++ {
++						_ = m[key]
++					}
++				}()
++				if useReflect {
++					wg.Add(1)
++					go func() {
++						defer wg.Done()
++						mv := reflect.ValueOf(m)
++						keys := mv.MapKeys()
++						for _, k := range keys {
++							mv.MapIndex(k)
++						}
++					}()
++				}
++			}
++			wg.Wait()
++		}
++	}
++}
++
++func TestConcurrentReadsAfterGrowth(t *testing.T) {
++	testConcurrentReadsAfterGrowth(t, false)
++}
++
++func TestConcurrentReadsAfterGrowthReflect(t *testing.T) {
++	testConcurrentReadsAfterGrowth(t, true)
++}
++
++func TestBigItems(t *testing.T) {
++	var key [256]string
++	for i := 0; i < 256; i++ {
++		key[i] = "foo"
++	}
++	m := make(map[[256]string][256]string, 4)
++	for i := 0; i < 100; i++ {
++		key[37] = fmt.Sprintf("string%02d", i)
++		m[key] = key
++	}
++	var keys [100]string
++	var values [100]string
++	i := 0
++	for k, v := range m {
++		keys[i] = k[37]
++		values[i] = v[37]
++		i++
++	}
++	sort.Strings(keys[:])
++	sort.Strings(values[:])
++	for i := 0; i < 100; i++ {
++		if keys[i] != fmt.Sprintf("string%02d", i) {
++			t.Errorf("#%d: missing key: %v", i, keys[i])
++		}
++		if values[i] != fmt.Sprintf("string%02d", i) {
++			t.Errorf("#%d: missing value: %v", i, values[i])
++		}
++	}
++}
++
++type empty struct {
++}
++
++func TestEmptyKeyAndValue(t *testing.T) {
++	a := make(map[int]empty, 4)
++	b := make(map[empty]int, 4)
++	c := make(map[empty]empty, 4)
++	a[0] = empty{}
++	b[empty{}] = 0
++	b[empty{}] = 1
++	c[empty{}] = empty{}
++
++	if len(a) != 1 {
++		t.Errorf("empty value insert problem")
++	}
++	if b[empty{}] != 1 {
++		t.Errorf("empty key returned wrong value")
++	}
++}
++
++// Tests a map with a single bucket, with same-lengthed short keys
++// ("quick keys") as well as long keys.
++func TestSingleBucketMapStringKeys_DupLen(t *testing.T) {
++	testMapLookups(t, map[string]string{
++		"x":    "x1val",
++		"xx":   "x2val",
++		"foo":  "fooval",
++		"bar":  "barval", // same key length as "foo"
++		"xxxx": "x4val",
++		strings.Repeat("x", 128): "longval1",
++		strings.Repeat("y", 128): "longval2",
++	})
++}
++
++// Tests a map with a single bucket, with all keys having different lengths.
++func TestSingleBucketMapStringKeys_NoDupLen(t *testing.T) {
++	testMapLookups(t, map[string]string{
++		"x":                      "x1val",
++		"xx":                     "x2val",
++		"foo":                    "fooval",
++		"xxxx":                   "x4val",
++		"xxxxx":                  "x5val",
++		"xxxxxx":                 "x6val",
++		strings.Repeat("x", 128): "longval",
++	})
++}
++
++func testMapLookups(t *testing.T, m map[string]string) {
++	for k, v := range m {
++		if m[k] != v {
++			t.Fatalf("m[%q] = %q; want %q", k, m[k], v)
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/parfor_test.go gcc-4.8.1/libgo/go/runtime/parfor_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/parfor_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/parfor_test.go	2013-06-18 18:50:42.020320000 -0500
+@@ -13,6 +13,8 @@
+ 	"unsafe"
+ )
+ 
++var gdata []uint64
++
+ // Simple serial sanity test for parallelfor.
+ func TestParFor(t *testing.T) {
+ 	const P = 1
+@@ -22,7 +24,12 @@
+ 		data[i] = i
+ 	}
+ 	desc := NewParFor(P)
++	// Avoid making func a closure: parfor cannot invoke them.
++	// Since it doesn't happen in the C code, it's not worth doing
++	// just for the test.
++	gdata = data
+ 	ParForSetup(desc, P, N, nil, true, func(desc *ParFor, i uint32) {
++		data := gdata
+ 		data[i] = data[i]*data[i] + 1
+ 	})
+ 	ParForDo(desc)
+@@ -111,7 +118,9 @@
+ 	P := GOMAXPROCS(-1)
+ 	c := make(chan bool, P)
+ 	desc := NewParFor(uint32(P))
++	gdata = data
+ 	ParForSetup(desc, uint32(P), uint32(N), nil, false, func(desc *ParFor, i uint32) {
++		data := gdata
+ 		data[i] = data[i]*data[i] + 1
+ 	})
+ 	for p := 1; p < P; p++ {
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/pprof/pprof.go gcc-4.8.1/libgo/go/runtime/pprof/pprof.go
+--- gcc-4.8.1.orig/libgo/go/runtime/pprof/pprof.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/pprof/pprof.go	2013-07-16 01:55:04.520470000 -0500
+@@ -318,21 +318,33 @@
+ // for a single stack trace.
+ func printStackRecord(w io.Writer, stk []uintptr, allFrames bool) {
+ 	show := allFrames
+-	for _, pc := range stk {
++	wasPanic := false
++	for i, pc := range stk {
+ 		f := runtime.FuncForPC(pc)
+ 		if f == nil {
+ 			show = true
+ 			fmt.Fprintf(w, "#\t%#x\n", pc)
++			wasPanic = false
+ 		} else {
+-			file, line := f.FileLine(pc)
++			tracepc := pc
++			// Back up to call instruction.
++			if i > 0 && pc > f.Entry() && !wasPanic {
++				if runtime.GOARCH == "386" || runtime.GOARCH == "amd64" {
++					tracepc--
++				} else {
++					tracepc -= 4 // arm, etc
++				}
++			}
++			file, line := f.FileLine(tracepc)
+ 			name := f.Name()
+ 			// Hide runtime.goexit and any runtime functions at the beginning.
+ 			// This is useful mainly for allocation traces.
++			wasPanic = name == "runtime.panic"
+ 			if name == "runtime.goexit" || !show && strings.HasPrefix(name, "runtime.") {
+ 				continue
+ 			}
+ 			show = true
+-			fmt.Fprintf(w, "#\t%#x\t%s+%#x\t%s:%d\n", pc, f.Name(), pc-f.Entry(), file, line)
++			fmt.Fprintf(w, "#\t%#x\t%s+%#x\t%s:%d\n", pc, name, pc-f.Entry(), file, line)
+ 		}
+ 	}
+ 	if !show {
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/proc_test.go gcc-4.8.1/libgo/go/runtime/proc_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/proc_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/runtime/proc_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,9 +5,11 @@
+ package runtime_test
+ 
+ import (
++	"math"
+ 	"runtime"
+ 	"sync/atomic"
+ 	"testing"
++	"time"
+ )
+ 
+ var stop = make(chan bool, 1)
+@@ -45,6 +47,66 @@
+ 	runtime.GOMAXPROCS(maxprocs)
+ }
+ 
++func TestYieldProgress(t *testing.T) {
++	testYieldProgress(t, false)
++}
++
++func TestYieldLockedProgress(t *testing.T) {
++	testYieldProgress(t, true)
++}
++
++func testYieldProgress(t *testing.T, locked bool) {
++	c := make(chan bool)
++	cack := make(chan bool)
++	go func() {
++		if locked {
++			runtime.LockOSThread()
++		}
++		for {
++			select {
++			case <-c:
++				cack <- true
++				return
++			default:
++				runtime.Gosched()
++			}
++		}
++	}()
++	time.Sleep(10 * time.Millisecond)
++	c <- true
++	<-cack
++}
++
++func TestYieldLocked(t *testing.T) {
++	const N = 10
++	c := make(chan bool)
++	go func() {
++		runtime.LockOSThread()
++		for i := 0; i < N; i++ {
++			runtime.Gosched()
++			time.Sleep(time.Millisecond)
++		}
++		c <- true
++		// runtime.UnlockOSThread() is deliberately omitted
++	}()
++	<-c
++}
++
++func TestBlockLocked(t *testing.T) {
++	const N = 10
++	c := make(chan bool)
++	go func() {
++		runtime.LockOSThread()
++		for i := 0; i < N; i++ {
++			c <- true
++		}
++		runtime.UnlockOSThread()
++	}()
++	for i := 0; i < N; i++ {
++		<-c
++	}
++}
++
+ func stackGrowthRecursive(i int) {
+ 	var pad [128]uint64
+ 	if i != 0 && pad[0] == 0 {
+@@ -52,6 +114,14 @@
+ 	}
+ }
+ 
++func TestSchedLocalQueue(t *testing.T) {
++	runtime.TestSchedLocalQueue1()
++}
++
++func TestSchedLocalQueueSteal(t *testing.T) {
++	runtime.TestSchedLocalQueueSteal1()
++}
++
+ func benchmarkStackGrowth(b *testing.B, rec int) {
+ 	const CallsPerSched = 1000
+ 	procs := runtime.GOMAXPROCS(-1)
+@@ -82,31 +152,24 @@
+ }
+ 
+ func BenchmarkSyscall(b *testing.B) {
+-	const CallsPerSched = 1000
+-	procs := runtime.GOMAXPROCS(-1)
+-	N := int32(b.N / CallsPerSched)
+-	c := make(chan bool, procs)
+-	for p := 0; p < procs; p++ {
+-		go func() {
+-			for atomic.AddInt32(&N, -1) >= 0 {
+-				runtime.Gosched()
+-				for g := 0; g < CallsPerSched; g++ {
+-					runtime.Entersyscall()
+-					runtime.Exitsyscall()
+-				}
+-			}
+-			c <- true
+-		}()
+-	}
+-	for p := 0; p < procs; p++ {
+-		<-c
+-	}
++	benchmarkSyscall(b, 0, 1)
+ }
+ 
+ func BenchmarkSyscallWork(b *testing.B) {
++	benchmarkSyscall(b, 100, 1)
++}
++
++func BenchmarkSyscallExcess(b *testing.B) {
++	benchmarkSyscall(b, 0, 4)
++}
++
++func BenchmarkSyscallExcessWork(b *testing.B) {
++	benchmarkSyscall(b, 100, 4)
++}
++
++func benchmarkSyscall(b *testing.B, work, excess int) {
+ 	const CallsPerSched = 1000
+-	const LocalWork = 100
+-	procs := runtime.GOMAXPROCS(-1)
++	procs := runtime.GOMAXPROCS(-1) * excess
+ 	N := int32(b.N / CallsPerSched)
+ 	c := make(chan bool, procs)
+ 	for p := 0; p < procs; p++ {
+@@ -116,7 +179,7 @@
+ 				runtime.Gosched()
+ 				for g := 0; g < CallsPerSched; g++ {
+ 					runtime.Entersyscall()
+-					for i := 0; i < LocalWork; i++ {
++					for i := 0; i < work; i++ {
+ 						foo *= 2
+ 						foo /= 2
+ 					}
+@@ -156,3 +219,67 @@
+ 		<-c
+ 	}
+ }
++
++type Matrix [][]float64
++
++func BenchmarkMatmult(b *testing.B) {
++	b.StopTimer()
++	// matmult is O(N**3) but testing expects O(b.N),
++	// so we need to take cube root of b.N
++	n := int(math.Cbrt(float64(b.N))) + 1
++	A := makeMatrix(n)
++	B := makeMatrix(n)
++	C := makeMatrix(n)
++	b.StartTimer()
++	matmult(nil, A, B, C, 0, n, 0, n, 0, n, 8)
++}
++
++func makeMatrix(n int) Matrix {
++	m := make(Matrix, n)
++	for i := 0; i < n; i++ {
++		m[i] = make([]float64, n)
++		for j := 0; j < n; j++ {
++			m[i][j] = float64(i*n + j)
++		}
++	}
++	return m
++}
++
++func matmult(done chan<- struct{}, A, B, C Matrix, i0, i1, j0, j1, k0, k1, threshold int) {
++	di := i1 - i0
++	dj := j1 - j0
++	dk := k1 - k0
++	if di >= dj && di >= dk && di >= threshold {
++		// divide in two by y axis
++		mi := i0 + di/2
++		done1 := make(chan struct{}, 1)
++		go matmult(done1, A, B, C, i0, mi, j0, j1, k0, k1, threshold)
++		matmult(nil, A, B, C, mi, i1, j0, j1, k0, k1, threshold)
++		<-done1
++	} else if dj >= dk && dj >= threshold {
++		// divide in two by x axis
++		mj := j0 + dj/2
++		done1 := make(chan struct{}, 1)
++		go matmult(done1, A, B, C, i0, i1, j0, mj, k0, k1, threshold)
++		matmult(nil, A, B, C, i0, i1, mj, j1, k0, k1, threshold)
++		<-done1
++	} else if dk >= threshold {
++		// divide in two by "k" axis
++		// deliberately not parallel because of data races
++		mk := k0 + dk/2
++		matmult(nil, A, B, C, i0, i1, j0, j1, k0, mk, threshold)
++		matmult(nil, A, B, C, i0, i1, j0, j1, mk, k1, threshold)
++	} else {
++		// the matrices are small enough, compute directly
++		for i := i0; i < i1; i++ {
++			for j := j0; j < j1; j++ {
++				for k := k0; k < k1; k++ {
++					C[i][j] += A[i][k] * B[k][j]
++				}
++			}
++		}
++	}
++	if done != nil {
++		done <- struct{}{}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/runtime/string_test.go gcc-4.8.1/libgo/go/runtime/string_test.go
+--- gcc-4.8.1.orig/libgo/go/runtime/string_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/runtime/string_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1,3 +1,7 @@
++// Copyright 2012 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
+ package runtime_test
+ 
+ import (
+@@ -43,3 +47,31 @@
+ 		}
+ 	}
+ }
++
++func BenchmarkCompareStringBigUnaligned(b *testing.B) {
++	bytes := make([]byte, 0, 1<<20)
++	for len(bytes) < 1<<20 {
++		bytes = append(bytes, "Hello Gophers!"...)
++	}
++	s1, s2 := string(bytes), "hello"+string(bytes)
++	for i := 0; i < b.N; i++ {
++		if s1 != s2[len("hello"):] {
++			b.Fatal("s1 != s2")
++		}
++	}
++	b.SetBytes(int64(len(s1)))
++}
++
++func BenchmarkCompareStringBig(b *testing.B) {
++	bytes := make([]byte, 0, 1<<20)
++	for len(bytes) < 1<<20 {
++		bytes = append(bytes, "Hello Gophers!"...)
++	}
++	s1, s2 := string(bytes), string(bytes)
++	for i := 0; i < b.N; i++ {
++		if s1 != s2 {
++			b.Fatal("s1 != s2")
++		}
++	}
++	b.SetBytes(int64(len(s1)))
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/example_keys_test.go gcc-4.8.1/libgo/go/sort/example_keys_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/example_keys_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/sort/example_keys_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,96 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package sort_test
++
++import (
++	"fmt"
++	"sort"
++)
++
++// A couple of type definitions to make the units clear.
++type earthMass float64
++type au float64
++
++// A Planet defines the properties of a solar system object.
++type Planet struct {
++	name     string
++	mass     earthMass
++	distance au
++}
++
++// By is the type of a "less" function that defines the ordering of its Planet arguments.
++type By func(p1, p2 *Planet) bool
++
++// Sort is a method on the function type, By, that sorts the argument slice according to the function.
++func (by By) Sort(planets []Planet) {
++	ps := &planetSorter{
++		planets: planets,
++		by:      by, // The Sort method's receiver is the function (closure) that defines the sort order.
++	}
++	sort.Sort(ps)
++}
++
++// planetSorter joins a By function and a slice of Planets to be sorted.
++type planetSorter struct {
++	planets []Planet
++	by      func(p1, p2 *Planet) bool // Closure used in the Less method.
++}
++
++// Len is part of sort.Interface.
++func (s *planetSorter) Len() int {
++	return len(s.planets)
++}
++
++// Swap is part of sort.Interface.
++func (s *planetSorter) Swap(i, j int) {
++	s.planets[i], s.planets[j] = s.planets[j], s.planets[i]
++}
++
++// Less is part of sort.Interface. It is implemented by calling the "by" closure in the sorter.
++func (s *planetSorter) Less(i, j int) bool {
++	return s.by(&s.planets[i], &s.planets[j])
++}
++
++var planets = []Planet{
++	{"Mercury", 0.055, 0.4},
++	{"Venus", 0.815, 0.7},
++	{"Earth", 1.0, 1.0},
++	{"Mars", 0.107, 1.5},
++}
++
++// ExampleSortKeys demonstrates a technique for sorting a struct type using programmable sort criteria.
++func Example_sortKeys() {
++	// Closures that order the Planet structure.
++	name := func(p1, p2 *Planet) bool {
++		return p1.name < p2.name
++	}
++	mass := func(p1, p2 *Planet) bool {
++		return p1.mass < p2.mass
++	}
++	distance := func(p1, p2 *Planet) bool {
++		return p1.distance < p2.distance
++	}
++	decreasingDistance := func(p1, p2 *Planet) bool {
++		return !distance(p1, p2)
++	}
++
++	// Sort the planets by the various criteria.
++	By(name).Sort(planets)
++	fmt.Println("By name:", planets)
++
++	By(mass).Sort(planets)
++	fmt.Println("By mass:", planets)
++
++	By(distance).Sort(planets)
++	fmt.Println("By distance:", planets)
++
++	By(decreasingDistance).Sort(planets)
++	fmt.Println("By decreasing distance:", planets)
++
++	// Output: By name: [{Earth 1 1} {Mars 0.107 1.5} {Mercury 0.055 0.4} {Venus 0.815 0.7}]
++	// By mass: [{Mercury 0.055 0.4} {Mars 0.107 1.5} {Venus 0.815 0.7} {Earth 1 1}]
++	// By distance: [{Mercury 0.055 0.4} {Venus 0.815 0.7} {Earth 1 1} {Mars 0.107 1.5}]
++	// By decreasing distance: [{Mars 0.107 1.5} {Earth 1 1} {Venus 0.815 0.7} {Mercury 0.055 0.4}]
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/example_multi_test.go gcc-4.8.1/libgo/go/sort/example_multi_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/example_multi_test.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/sort/example_multi_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,132 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package sort_test
++
++import (
++	"fmt"
++	"sort"
++)
++
++// A Change is a record of source code changes, recording user, language, and delta size.
++type Change struct {
++	user     string
++	language string
++	lines    int
++}
++
++type lessFunc func(p1, p2 *Change) bool
++
++// multiSorter implements the Sort interface, sorting the changes within.
++type multiSorter struct {
++	changes []Change
++	less    []lessFunc
++}
++
++// Sort sorts the argument slice according to the less functions passed to OrderedBy.
++func (ms *multiSorter) Sort(changes []Change) {
++	sort.Sort(ms)
++}
++
++// OrderedBy returns a Sorter that sorts using the less functions, in order.
++// Call its Sort method to sort the data.
++func OrderedBy(less ...lessFunc) *multiSorter {
++	return &multiSorter{
++		changes: changes,
++		less:    less,
++	}
++}
++
++// Len is part of sort.Interface.
++func (ms *multiSorter) Len() int {
++	return len(ms.changes)
++}
++
++// Swap is part of sort.Interface.
++func (ms *multiSorter) Swap(i, j int) {
++	ms.changes[i], ms.changes[j] = ms.changes[j], ms.changes[i]
++}
++
++// Less is part of sort.Interface. It is implemented by looping along the
++// less functions until it finds a comparison that is either Less or
++// !Less. Note that it can call the less functions twice per call. We
++// could change the functions to return -1, 0, 1 and reduce the
++// number of calls for greater efficiency: an exercise for the reader.
++func (ms *multiSorter) Less(i, j int) bool {
++	p, q := &ms.changes[i], &ms.changes[j]
++	// Try all but the last comparison.
++	var k int
++	for k = 0; k < len(ms.less)-1; k++ {
++		less := ms.less[k]
++		switch {
++		case less(p, q):
++			// p < q, so we have a decision.
++			return true
++		case less(q, p):
++			// p > q, so we have a decision.
++			return false
++		}
++		// p == q; try the next comparison.
++	}
++	// All comparisons to here said "equal", so just return whatever
++	// the final comparison reports.
++	return ms.less[k](p, q)
++}
++
++var changes = []Change{
++	{"gri", "Go", 100},
++	{"ken", "C", 150},
++	{"glenda", "Go", 200},
++	{"rsc", "Go", 200},
++	{"r", "Go", 100},
++	{"ken", "Go", 200},
++	{"dmr", "C", 100},
++	{"r", "C", 150},
++	{"gri", "Smalltalk", 80},
++}
++
++// ExampleMultiKeys demonstrates a technique for sorting a struct type using different
++// sets of multiple fields in the comparison. We chain together "Less" functions, each of
++// which compares a single field.
++func Example_sortMultiKeys() {
++	// Closures that order the Change structure.
++	user := func(c1, c2 *Change) bool {
++		return c1.user < c2.user
++	}
++	language := func(c1, c2 *Change) bool {
++		return c1.language < c2.language
++	}
++	increasingLines := func(c1, c2 *Change) bool {
++		return c1.lines < c2.lines
++	}
++	decreasingLines := func(c1, c2 *Change) bool {
++		return c1.lines > c2.lines // Note: > orders downwards.
++	}
++
++	// Simple use: Sort by user.
++	OrderedBy(user).Sort(changes)
++	fmt.Println("By user:", changes)
++
++	// multiSorter implements the Sort interface, so we can also do this.
++	sort.Sort(OrderedBy(user, increasingLines))
++	fmt.Println("By user,<lines:", changes)
++
++	// More examples.
++	OrderedBy(user, decreasingLines).Sort(changes)
++	fmt.Println("By user,>lines:", changes)
++
++	OrderedBy(language, increasingLines).Sort(changes)
++	fmt.Println("By language,<lines:", changes)
++
++	OrderedBy(language, increasingLines, user).Sort(changes)
++	fmt.Println("By language,<lines,user:", changes)
++
++	// Output:
++	//By user: [{dmr C 100} {glenda Go 200} {gri Smalltalk 80} {gri Go 100} {ken Go 200} {ken C 150} {r Go 100} {r C 150} {rsc Go 200}]
++	//By user,<lines: [{dmr C 100} {glenda Go 200} {gri Smalltalk 80} {gri Go 100} {ken C 150} {ken Go 200} {r Go 100} {r C 150} {rsc Go 200}]
++	//By user,>lines: [{dmr C 100} {glenda Go 200} {gri Go 100} {gri Smalltalk 80} {ken Go 200} {ken C 150} {r C 150} {r Go 100} {rsc Go 200}]
++	//By language,<lines: [{dmr C 100} {ken C 150} {r C 150} {gri Go 100} {r Go 100} {ken Go 200} {glenda Go 200} {rsc Go 200} {gri Smalltalk 80}]
++	//By language,<lines,user: [{dmr C 100} {ken C 150} {r C 150} {gri Go 100} {r Go 100} {glenda Go 200} {ken Go 200} {rsc Go 200} {gri Smalltalk 80}]
++
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/example_reverse_test.go gcc-4.8.1/libgo/go/sort/example_reverse_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/example_reverse_test.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/sort/example_reverse_test.go	1969-12-31 18:00:00.000000000 -0600
+@@ -1,30 +0,0 @@
+-// Copyright 2011 The Go Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package sort_test
+-
+-import (
+-	"fmt"
+-	"sort"
+-)
+-
+-// Reverse embeds a sort.Interface value and implements a reverse sort over
+-// that value.
+-type Reverse struct {
+-	// This embedded Interface permits Reverse to use the methods of
+-	// another Interface implementation.
+-	sort.Interface
+-}
+-
+-// Less returns the opposite of the embedded implementation's Less method.
+-func (r Reverse) Less(i, j int) bool {
+-	return r.Interface.Less(j, i)
+-}
+-
+-func ExampleInterface_reverse() {
+-	s := []int{5, 2, 6, 3, 1, 4} // unsorted
+-	sort.Sort(Reverse{sort.IntSlice(s)})
+-	fmt.Println(s)
+-	// Output: [6 5 4 3 2 1]
+-}
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/example_test.go gcc-4.8.1/libgo/go/sort/example_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/example_test.go	2012-03-02 14:01:37.000000000 -0600
++++ gcc-4.8.1/libgo/go/sort/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -15,3 +15,10 @@
+ 	fmt.Println(s)
+ 	// Output: [1 2 3 4 5 6]
+ }
++
++func ExampleReverse() {
++	s := []int{5, 2, 6, 3, 1, 4} // unsorted
++	sort.Sort(sort.Reverse(sort.IntSlice(s)))
++	fmt.Println(s)
++	// Output: [6 5 4 3 2 1]
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/search_test.go gcc-4.8.1/libgo/go/sort/search_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/search_test.go	2011-09-16 10:47:21.000000000 -0500
++++ gcc-4.8.1/libgo/go/sort/search_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,7 @@
+ package sort_test
+ 
+ import (
++	"runtime"
+ 	. "sort"
+ 	"testing"
+ )
+@@ -117,6 +118,32 @@
+ 	}
+ }
+ 
++func runSearchWrappers() {
++	SearchInts(data, 11)
++	SearchFloat64s(fdata, 2.1)
++	SearchStrings(sdata, "")
++	IntSlice(data).Search(0)
++	Float64Slice(fdata).Search(2.0)
++	StringSlice(sdata).Search("x")
++}
++
++func TestSearchWrappersDontAlloc(t *testing.T) {
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
++	t.Skip("skipping alloc test for gccgo")
++	allocs := testing.AllocsPerRun(100, runSearchWrappers)
++	if allocs != 0 {
++		t.Errorf("expected no allocs for runSearchWrappers, got %v", allocs)
++	}
++}
++
++func BenchmarkSearchWrappers(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		runSearchWrappers()
++	}
++}
++
+ // Abstract exhaustive test: all sizes up to 100,
+ // all possible return values.  If there are any small
+ // corner cases, this test exercises them.
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/sort.go gcc-4.8.1/libgo/go/sort/sort.go
+--- gcc-4.8.1.orig/libgo/go/sort/sort.go	2012-03-30 17:09:55.000000000 -0500
++++ gcc-4.8.1/libgo/go/sort/sort.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,8 +6,6 @@
+ // collections.
+ package sort
+ 
+-import "math"
+-
+ // A type, typically a collection, that satisfies sort.Interface can be
+ // sorted by the routines in this package.  The methods require that the
+ // elements of the collection be enumerated by an integer index.
+@@ -124,26 +122,31 @@
+ 	// into the middle of the slice.
+ 	pivot := lo
+ 	a, b, c, d := lo+1, lo+1, hi, hi
+-	for b < c {
+-		if data.Less(b, pivot) { // data[b] < pivot
+-			b++
+-			continue
+-		}
+-		if !data.Less(pivot, b) { // data[b] = pivot
+-			data.Swap(a, b)
+-			a++
+-			b++
+-			continue
+-		}
+-		if data.Less(pivot, c-1) { // data[c-1] > pivot
+-			c--
+-			continue
+-		}
+-		if !data.Less(c-1, pivot) { // data[c-1] = pivot
+-			data.Swap(c-1, d-1)
+-			c--
+-			d--
+-			continue
++	for {
++		for b < c {
++			if data.Less(b, pivot) { // data[b] < pivot
++				b++
++			} else if !data.Less(pivot, b) { // data[b] = pivot
++				data.Swap(a, b)
++				a++
++				b++
++			} else {
++				break
++			}
++		}
++		for b < c {
++			if data.Less(pivot, c-1) { // data[c-1] > pivot
++				c--
++			} else if !data.Less(c-1, pivot) { // data[c-1] = pivot
++				data.Swap(c-1, d-1)
++				c--
++				d--
++			} else {
++				break
++			}
++		}
++		if b >= c {
++			break
+ 		}
+ 		// data[b] > pivot; data[c-1] < pivot
+ 		data.Swap(b, c-1)
+@@ -197,6 +200,22 @@
+ 	quickSort(data, 0, n, maxDepth)
+ }
+ 
++type reverse struct {
++	// This embedded Interface permits Reverse to use the methods of
++	// another Interface implementation.
++	Interface
++}
++
++// Less returns the opposite of the embedded implementation's Less method.
++func (r reverse) Less(i, j int) bool {
++	return r.Interface.Less(j, i)
++}
++
++// Reverse returns the reverse order for data.
++func Reverse(data Interface) Interface {
++	return &reverse{data}
++}
++
+ // IsSorted reports whether data is sorted.
+ func IsSorted(data Interface) bool {
+ 	n := data.Len()
+@@ -224,9 +243,14 @@
+ type Float64Slice []float64
+ 
+ func (p Float64Slice) Len() int           { return len(p) }
+-func (p Float64Slice) Less(i, j int) bool { return p[i] < p[j] || math.IsNaN(p[i]) && !math.IsNaN(p[j]) }
++func (p Float64Slice) Less(i, j int) bool { return p[i] < p[j] || isNaN(p[i]) && !isNaN(p[j]) }
+ func (p Float64Slice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
+ 
++// isNaN is a copy of math.IsNaN to avoid a dependency on the math package.
++func isNaN(f float64) bool {
++	return f != f
++}
++
+ // Sort is a convenience method.
+ func (p Float64Slice) Sort() { Sort(p) }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/sort/sort_test.go gcc-4.8.1/libgo/go/sort/sort_test.go
+--- gcc-4.8.1.orig/libgo/go/sort/sort_test.go	2011-12-06 19:11:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/sort/sort_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -92,6 +92,23 @@
+ 	}
+ }
+ 
++func TestReverseSortIntSlice(t *testing.T) {
++	data := ints
++	data1 := ints
++	a := IntSlice(data[0:])
++	Sort(a)
++	r := IntSlice(data1[0:])
++	Sort(Reverse(r))
++	for i := 0; i < len(data); i++ {
++		if a[i] != r[len(data)-1-i] {
++			t.Errorf("reverse sort didn't sort")
++		}
++		if i > len(data)/2 {
++			break
++		}
++	}
++}
++
+ func BenchmarkSortString1K(b *testing.B) {
+ 	b.StopTimer()
+ 	for i := 0; i < b.N; i++ {
+@@ -151,15 +168,18 @@
+ )
+ 
+ type testingData struct {
+-	desc    string
+-	t       *testing.T
+-	data    []int
+-	maxswap int // number of swaps allowed
+-	nswap   int
++	desc        string
++	t           *testing.T
++	data        []int
++	maxswap     int // number of swaps allowed
++	ncmp, nswap int
+ }
+ 
+-func (d *testingData) Len() int           { return len(d.data) }
+-func (d *testingData) Less(i, j int) bool { return d.data[i] < d.data[j] }
++func (d *testingData) Len() int { return len(d.data) }
++func (d *testingData) Less(i, j int) bool {
++	d.ncmp++
++	return d.data[i] < d.data[j]
++}
+ func (d *testingData) Swap(i, j int) {
+ 	if d.nswap >= d.maxswap {
+ 		d.t.Errorf("%s: used %d swaps sorting slice of %d", d.desc, d.nswap, len(d.data))
+@@ -192,8 +212,7 @@
+ 	dists := []string{"sawtooth", "rand", "stagger", "plateau", "shuffle"}
+ 	modes := []string{"copy", "reverse", "reverse1", "reverse2", "sort", "dither"}
+ 	var tmp1, tmp2 [1025]int
+-	for ni := 0; ni < len(sizes); ni++ {
+-		n := sizes[ni]
++	for _, n := range sizes {
+ 		for m := 1; m < 2*n; m *= 2 {
+ 			for dist := 0; dist < _NDist; dist++ {
+ 				j := 0
+@@ -259,8 +278,10 @@
+ 					}
+ 
+ 					desc := fmt.Sprintf("n=%d m=%d dist=%s mode=%s", n, m, dists[dist], modes[mode])
+-					d := &testingData{desc, t, mdata[0:n], n * lg(n) * 12 / 10, 0}
++					d := &testingData{desc: desc, t: t, data: mdata[0:n], maxswap: n * lg(n) * 12 / 10}
+ 					sort(d)
++					// Uncomment if you are trying to improve the number of compares/swaps.
++					//t.Logf("%s: ncmp=%d, nswp=%d", desc, d.ncmp, d.nswap)
+ 
+ 					// If we were testing C qsort, we'd have to make a copy
+ 					// of the slice and sort it ourselves and then compare
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/atof_test.go gcc-4.8.1/libgo/go/strconv/atof_test.go
+--- gcc-4.8.1.orig/libgo/go/strconv/atof_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/strconv/atof_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -110,6 +110,7 @@
+ 	{"1e", "0", ErrSyntax},
+ 	{"1e-", "0", ErrSyntax},
+ 	{".e-1", "0", ErrSyntax},
++	{"1\x00.2", "0", ErrSyntax},
+ 
+ 	// http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
+ 	{"2.2250738585072012e-308", "2.2250738585072014e-308", nil},
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/atoi.go gcc-4.8.1/libgo/go/strconv/atoi.go
+--- gcc-4.8.1.orig/libgo/go/strconv/atoi.go	2012-10-03 00:27:36.000000000 -0500
++++ gcc-4.8.1/libgo/go/strconv/atoi.go	2013-07-16 01:55:04.520470000 -0500
+@@ -20,7 +20,7 @@
+ }
+ 
+ func (e *NumError) Error() string {
+-	return "strconv." + e.Func + ": " + `parsing "` + e.Num + `": ` + e.Err.Error()
++	return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + e.Err.Error()
+ }
+ 
+ func syntaxError(fn, str string) *NumError {
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/atoi_test.go gcc-4.8.1/libgo/go/strconv/atoi_test.go
+--- gcc-4.8.1.orig/libgo/go/strconv/atoi_test.go	2012-01-11 19:31:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/strconv/atoi_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,7 @@
+ package strconv_test
+ 
+ import (
++	"errors"
+ 	"reflect"
+ 	. "strconv"
+ 	"testing"
+@@ -146,6 +147,16 @@
+ 	{"-2147483649", -1 << 31, ErrRange},
+ }
+ 
++type numErrorTest struct {
++	num, want string
++}
++
++var numErrorTests = []numErrorTest{
++	{"0", `strconv.ParseFloat: parsing "0": failed`},
++	{"`", "strconv.ParseFloat: parsing \"`\": failed"},
++	{"1\x00.2", `strconv.ParseFloat: parsing "1\x00.2": failed`},
++}
++
+ func init() {
+ 	// The atoi routines return NumErrors wrapping
+ 	// the error and the string.  Convert the tables above.
+@@ -276,6 +287,19 @@
+ 		}
+ 	}
+ }
++
++func TestNumError(t *testing.T) {
++	for _, test := range numErrorTests {
++		err := &NumError{
++			Func: "ParseFloat",
++			Num:  test.num,
++			Err:  errors.New("failed"),
++		}
++		if got := err.Error(); got != test.want {
++			t.Errorf(`(&NumError{"ParseFloat", %q, "failed"}).Error() = %v, want %v`, test.num, got, test.want)
++		}
++	}
++}
+ 
+ func BenchmarkAtoi(b *testing.B) {
+ 	for i := 0; i < b.N; i++ {
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/extfloat.go gcc-4.8.1/libgo/go/strconv/extfloat.go
+--- gcc-4.8.1.orig/libgo/go/strconv/extfloat.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/strconv/extfloat.go	2013-07-16 01:55:04.520470000 -0500
+@@ -636,7 +636,6 @@
+ 				1<<shift, multiplier*2)
+ 		}
+ 	}
+-	return false
+ }
+ 
+ // adjustLastDigit modifies d = x-currentDiff*Îµ, to get closest to
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/fp_test.go gcc-4.8.1/libgo/go/strconv/fp_test.go
+--- gcc-4.8.1.orig/libgo/go/strconv/fp_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/strconv/fp_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -7,7 +7,6 @@
+ import (
+ 	"bufio"
+ 	"fmt"
+-	"io"
+ 	"os"
+ 	"strconv"
+ 	"strings"
+@@ -102,19 +101,10 @@
+ 	}
+ 	defer f.Close()
+ 
+-	b := bufio.NewReader(f)
++	s := bufio.NewScanner(f)
+ 
+-	lineno := 0
+-	for {
+-		line, err2 := b.ReadString('\n')
+-		if err2 == io.EOF {
+-			break
+-		}
+-		if err2 != nil {
+-			t.Fatal("testfp: read testdata/testfp.txt: " + err2.Error())
+-		}
+-		line = line[0 : len(line)-1]
+-		lineno++
++	for lineno := 1; s.Scan(); lineno++ {
++		line := s.Text()
+ 		if len(line) == 0 || line[0] == '#' {
+ 			continue
+ 		}
+@@ -148,4 +138,7 @@
+ 				"want ", a[3], " got ", s)
+ 		}
+ 	}
++	if s.Err() != nil {
++		t.Fatal("testfp: read testdata/testfp.txt: ", s.Err())
++	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/quote.go gcc-4.8.1/libgo/go/strconv/quote.go
+--- gcc-4.8.1.orig/libgo/go/strconv/quote.go	2012-03-30 16:27:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/strconv/quote.go	2013-07-16 01:55:04.520470000 -0500
+@@ -139,8 +139,9 @@
+ 	return append(dst, QuoteRuneToASCII(r)...)
+ }
+ 
+-// CanBackquote returns whether the string s would be
+-// a valid Go string literal if enclosed in backquotes.
++// CanBackquote reports whether the string s can be represented
++// unchanged as a single-line backquoted string without control
++// characters other than space and tab.
+ func CanBackquote(s string) bool {
+ 	for i := 0; i < len(s); i++ {
+ 		if (s[i] < ' ' && s[i] != '\t') || s[i] == '`' {
+diff -Naur gcc-4.8.1.orig/libgo/go/strconv/strconv_test.go gcc-4.8.1/libgo/go/strconv/strconv_test.go
+--- gcc-4.8.1.orig/libgo/go/strconv/strconv_test.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/strconv/strconv_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -24,14 +24,12 @@
+ 		desc  string
+ 		fn    func()
+ 	}{
+-		// TODO(bradfitz): this might be 0, once escape analysis is better
+-		{1, `AppendInt(localBuf[:0], 123, 10)`, func() {
++		{0, `AppendInt(localBuf[:0], 123, 10)`, func() {
+ 			var localBuf [64]byte
+ 			AppendInt(localBuf[:0], 123, 10)
+ 		}},
+ 		{0, `AppendInt(globalBuf[:0], 123, 10)`, func() { AppendInt(globalBuf[:0], 123, 10) }},
+-		// TODO(bradfitz): this might be 0, once escape analysis is better
+-		{1, `AppendFloat(localBuf[:0], 1.23, 'g', 5, 64)`, func() {
++		{0, `AppendFloat(localBuf[:0], 1.23, 'g', 5, 64)`, func() {
+ 			var localBuf [64]byte
+ 			AppendFloat(localBuf[:0], 1.23, 'g', 5, 64)
+ 		}},
+@@ -48,19 +46,13 @@
+ )
+ 
+ func TestCountMallocs(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
+ 	for _, mt := range mallocTest {
+-		const N = 100
+-		memstats := new(runtime.MemStats)
+-		runtime.ReadMemStats(memstats)
+-		mallocs := 0 - memstats.Mallocs
+-		for i := 0; i < N; i++ {
+-			mt.fn()
+-		}
+-		runtime.ReadMemStats(memstats)
+-		mallocs += memstats.Mallocs
+-		if mallocs/N > uint64(mt.count) {
+-			t.Errorf("%s: expected %d mallocs, got %d", mt.desc, mt.count, mallocs/N)
++		allocs := testing.AllocsPerRun(100, mt.fn)
++		if max := float64(mt.count); allocs > max {
++			t.Errorf("%s: %v allocs, want <=%v", mt.desc, allocs, max)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/strings/example_test.go gcc-4.8.1/libgo/go/strings/example_test.go
+--- gcc-4.8.1.orig/libgo/go/strings/example_test.go	2012-06-25 11:20:03.000000000 -0500
++++ gcc-4.8.1/libgo/go/strings/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -179,3 +179,19 @@
+ 	fmt.Println(strings.ToLower("Gopher"))
+ 	// Output: gopher
+ }
++
++func ExampleTrimSuffix() {
++	var s = "Hello, goodbye, etc!"
++	s = strings.TrimSuffix(s, "goodbye, etc!")
++	s = strings.TrimSuffix(s, "planet")
++	fmt.Print(s, "world!")
++	// Output: Hello, world!
++}
++
++func ExampleTrimPrefix() {
++	var s = "Goodbye,, world!"
++	s = strings.TrimPrefix(s, "Goodbye,")
++	s = strings.TrimPrefix(s, "Howdy,")
++	fmt.Print("Hello" + s)
++	// Output: Hello, world!
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/strings/strings.go gcc-4.8.1/libgo/go/strings/strings.go
+--- gcc-4.8.1.orig/libgo/go/strings/strings.go	2012-01-11 19:31:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/strings/strings.go	2013-07-16 01:55:04.520470000 -0500
+@@ -26,7 +26,11 @@
+ 	i, cur := 0, 0
+ 	for ; i+1 < n; i++ {
+ 		ch, size = utf8.DecodeRuneInString(s[cur:])
+-		a[i] = string(ch)
++		if ch == utf8.RuneError {
++			a[i] = string(utf8.RuneError)
++		} else {
++			a[i] = s[cur : cur+size]
++		}
+ 		cur += size
+ 	}
+ 	// add the rest, if there is any
+@@ -36,27 +40,69 @@
+ 	return a
+ }
+ 
++// primeRK is the prime base used in Rabin-Karp algorithm.
++const primeRK = 16777619
++
++// hashstr returns the hash and the appropriate multiplicative
++// factor for use in Rabin-Karp algorithm.
++func hashstr(sep string) (uint32, uint32) {
++	hash := uint32(0)
++	for i := 0; i < len(sep); i++ {
++		hash = hash*primeRK + uint32(sep[i])
++
++	}
++	var pow, sq uint32 = 1, primeRK
++	for i := len(sep); i > 0; i >>= 1 {
++		if i&1 != 0 {
++			pow *= sq
++		}
++		sq *= sq
++	}
++	return hash, pow
++}
++
+ // Count counts the number of non-overlapping instances of sep in s.
+ func Count(s, sep string) int {
+-	if sep == "" {
+-		return utf8.RuneCountInString(s) + 1
+-	}
+-	c := sep[0]
+-	l := len(sep)
+ 	n := 0
+-	if l == 1 {
++	// special cases
++	switch {
++	case len(sep) == 0:
++		return utf8.RuneCountInString(s) + 1
++	case len(sep) == 1:
+ 		// special case worth making fast
++		c := sep[0]
+ 		for i := 0; i < len(s); i++ {
+ 			if s[i] == c {
+ 				n++
+ 			}
+ 		}
+ 		return n
++	case len(sep) > len(s):
++		return 0
++	case len(sep) == len(s):
++		if sep == s {
++			return 1
++		}
++		return 0
+ 	}
+-	for i := 0; i+l <= len(s); i++ {
+-		if s[i] == c && s[i:i+l] == sep {
++	hashsep, pow := hashstr(sep)
++	h := uint32(0)
++	for i := 0; i < len(sep); i++ {
++		h = h*primeRK + uint32(s[i])
++	}
++	lastmatch := 0
++	if h == hashsep && s[:len(sep)] == sep {
++		n++
++		lastmatch = len(sep)
++	}
++	for i := len(sep); i < len(s); {
++		h *= primeRK
++		h += uint32(s[i])
++		h -= pow * uint32(s[i-len(sep)])
++		i++
++		if h == hashsep && lastmatch <= i-len(sep) && s[i-len(sep):i] == sep {
+ 			n++
+-			i += l - 1
++			lastmatch = i
+ 		}
+ 	}
+ 	return n
+@@ -80,11 +126,11 @@
+ // Index returns the index of the first instance of sep in s, or -1 if sep is not present in s.
+ func Index(s, sep string) int {
+ 	n := len(sep)
+-	if n == 0 {
++	switch {
++	case n == 0:
+ 		return 0
+-	}
+-	c := sep[0]
+-	if n == 1 {
++	case n == 1:
++		c := sep[0]
+ 		// special case worth making fast
+ 		for i := 0; i < len(s); i++ {
+ 			if s[i] == c {
+@@ -92,11 +138,30 @@
+ 			}
+ 		}
+ 		return -1
++	case n == len(s):
++		if sep == s {
++			return 0
++		}
++		return -1
++	case n > len(s):
++		return -1
+ 	}
+-	// n > 1
+-	for i := 0; i+n <= len(s); i++ {
+-		if s[i] == c && s[i:i+n] == sep {
+-			return i
++	// Hash sep.
++	hashsep, pow := hashstr(sep)
++	var h uint32
++	for i := 0; i < n; i++ {
++		h = h*primeRK + uint32(s[i])
++	}
++	if h == hashsep && s[:n] == sep {
++		return 0
++	}
++	for i := n; i < len(s); {
++		h *= primeRK
++		h += uint32(s[i])
++		h -= pow * uint32(s[i-n])
++		i++
++		if h == hashsep && s[i-n:i] == sep {
++			return i - n
+ 		}
+ 	}
+ 	return -1
+@@ -244,7 +309,8 @@
+ }
+ 
+ // Fields splits the string s around each instance of one or more consecutive white space
+-// characters, returning an array of substrings of s or an empty list if s contains only white space.
++// characters, as defined by unicode.IsSpace, returning an array of substrings of s or an
++// empty list if s contains only white space.
+ func Fields(s string) []string {
+ 	return FieldsFunc(s, unicode.IsSpace)
+ }
+@@ -426,10 +492,10 @@
+ 	return unicode.IsSpace(r)
+ }
+ 
+-// BUG(r): The rule Title uses for word boundaries does not handle Unicode punctuation properly.
+-
+ // Title returns a copy of the string s with all Unicode letters that begin words
+ // mapped to their title case.
++//
++// BUG: The rule Title uses for word boundaries does not handle Unicode punctuation properly.
+ func Title(s string) string {
+ 	// Use a closure here to remember state.
+ 	// Hackish but effective. Depends on Map scanning in order and calling
+@@ -558,6 +624,24 @@
+ 	return TrimFunc(s, unicode.IsSpace)
+ }
+ 
++// TrimPrefix returns s without the provided leading prefix string.
++// If s doesn't start with prefix, s is returned unchanged.
++func TrimPrefix(s, prefix string) string {
++	if HasPrefix(s, prefix) {
++		return s[len(prefix):]
++	}
++	return s
++}
++
++// TrimSuffix returns s without the provided trailing suffix string.
++// If s doesn't end with suffix, s is returned unchanged.
++func TrimSuffix(s, suffix string) string {
++	if HasSuffix(s, suffix) {
++		return s[:len(s)-len(suffix)]
++	}
++	return s
++}
++
+ // Replace returns a copy of the string s with the first n
+ // non-overlapping instances of old replaced by new.
+ // If n < 0, there is no limit on the number of replacements.
+diff -Naur gcc-4.8.1.orig/libgo/go/strings/strings_test.go gcc-4.8.1/libgo/go/strings/strings_test.go
+--- gcc-4.8.1.orig/libgo/go/strings/strings_test.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/strings/strings_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -496,8 +496,8 @@
+ func TestTrimSpace(t *testing.T) { runStringTests(t, TrimSpace, "TrimSpace", trimSpaceTests) }
+ 
+ var trimTests = []struct {
+-	f               string
+-	in, cutset, out string
++	f            string
++	in, arg, out string
+ }{
+ 	{"Trim", "abba", "a", "bb"},
+ 	{"Trim", "abba", "ab", ""},
+@@ -520,6 +520,10 @@
+ 	{"TrimRight", "", "123", ""},
+ 	{"TrimRight", "", "", ""},
+ 	{"TrimRight", "âº\xc0", "âº", "âº\xc0"},
++	{"TrimPrefix", "aabb", "a", "abb"},
++	{"TrimPrefix", "aabb", "b", "aabb"},
++	{"TrimSuffix", "aabb", "a", "aabb"},
++	{"TrimSuffix", "aabb", "b", "aab"},
+ }
+ 
+ func TestTrim(t *testing.T) {
+@@ -533,12 +537,16 @@
+ 			f = TrimLeft
+ 		case "TrimRight":
+ 			f = TrimRight
++		case "TrimPrefix":
++			f = TrimPrefix
++		case "TrimSuffix":
++			f = TrimSuffix
+ 		default:
+ 			t.Errorf("Undefined trim function %s", name)
+ 		}
+-		actual := f(tc.in, tc.cutset)
++		actual := f(tc.in, tc.arg)
+ 		if actual != tc.out {
+-			t.Errorf("%s(%q, %q) = %q; want %q", name, tc.in, tc.cutset, actual, tc.out)
++			t.Errorf("%s(%q, %q) = %q; want %q", name, tc.in, tc.arg, actual, tc.out)
+ 		}
+ 	}
+ }
+@@ -959,7 +967,7 @@
+ func TestContainsRune(t *testing.T) {
+ 	for _, ct := range ContainsRuneTests {
+ 		if ContainsRune(ct.str, ct.r) != ct.expected {
+-			t.Errorf("ContainsRune(%s, %s) = %v, want %v",
++			t.Errorf("ContainsRune(%q, %q) = %v, want %v",
+ 				ct.str, ct.r, !ct.expected, ct.expected)
+ 		}
+ 	}
+@@ -993,6 +1001,65 @@
+ 	}
+ }
+ 
++func makeBenchInputHard() string {
++	tokens := [...]string{
++		"<a>", "<p>", "<b>", "<strong>",
++		"</a>", "</p>", "</b>", "</strong>",
++		"hello", "world",
++	}
++	x := make([]byte, 0, 1<<20)
++	for len(x) < 1<<20 {
++		i := rand.Intn(len(tokens))
++		x = append(x, tokens[i]...)
++	}
++	return string(x)
++}
++
++var benchInputHard = makeBenchInputHard()
++
++func benchmarkIndexHard(b *testing.B, sep string) {
++	for i := 0; i < b.N; i++ {
++		Index(benchInputHard, sep)
++	}
++}
++
++func benchmarkCountHard(b *testing.B, sep string) {
++	for i := 0; i < b.N; i++ {
++		Count(benchInputHard, sep)
++	}
++}
++
++func BenchmarkIndexHard1(b *testing.B) { benchmarkIndexHard(b, "<>") }
++func BenchmarkIndexHard2(b *testing.B) { benchmarkIndexHard(b, "</pre>") }
++func BenchmarkIndexHard3(b *testing.B) { benchmarkIndexHard(b, "<b>hello world</b>") }
++
++func BenchmarkCountHard1(b *testing.B) { benchmarkCountHard(b, "<>") }
++func BenchmarkCountHard2(b *testing.B) { benchmarkCountHard(b, "</pre>") }
++func BenchmarkCountHard3(b *testing.B) { benchmarkCountHard(b, "<b>hello world</b>") }
++
++var benchInputTorture = Repeat("ABC", 1<<10) + "123" + Repeat("ABC", 1<<10)
++var benchNeedleTorture = Repeat("ABC", 1<<10+1)
++
++func BenchmarkIndexTorture(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		Index(benchInputTorture, benchNeedleTorture)
++	}
++}
++
++func BenchmarkCountTorture(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		Count(benchInputTorture, benchNeedleTorture)
++	}
++}
++
++func BenchmarkCountTortureOverlapping(b *testing.B) {
++	A := Repeat("ABC", 1<<20)
++	B := Repeat("ABC", 1<<10)
++	for i := 0; i < b.N; i++ {
++		Count(A, B)
++	}
++}
++
+ var makeFieldsInput = func() string {
+ 	x := make([]byte, 1<<20)
+ 	// Input is ~10% space, ~10% 2-byte UTF-8, rest ASCII non-space.
+@@ -1028,3 +1095,21 @@
+ 		FieldsFunc(fieldsInput, unicode.IsSpace)
+ 	}
+ }
++
++func BenchmarkSplit1(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		Split(benchInputHard, "")
++	}
++}
++
++func BenchmarkSplit2(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		Split(benchInputHard, "/")
++	}
++}
++
++func BenchmarkSplit3(b *testing.B) {
++	for i := 0; i < b.N; i++ {
++		Split(benchInputHard, "hello")
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/atomic/atomic_test.go gcc-4.8.1/libgo/go/sync/atomic/atomic_test.go
+--- gcc-4.8.1.orig/libgo/go/sync/atomic/atomic_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/sync/atomic/atomic_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -1119,7 +1119,7 @@
+ 					d1 := X.data1
+ 					d2 := X.data2
+ 					if d1 != i || d2 != float32(i) {
+-						t.Fatalf("incorrect data: %d/%d (%d)", d1, d2, i)
++						t.Fatalf("incorrect data: %d/%g (%d)", d1, d2, i)
+ 					}
+ 				}
+ 			}
+@@ -1167,7 +1167,7 @@
+ 					d1 := X.data1
+ 					d2 := X.data2
+ 					if d1 != i || d2 != float64(i) {
+-						t.Fatalf("incorrect data: %d/%d (%d)", d1, d2, i)
++						t.Fatalf("incorrect data: %d/%g (%d)", d1, d2, i)
+ 					}
+ 				}
+ 			}
+@@ -1177,3 +1177,31 @@
+ 	<-c
+ 	<-c
+ }
++
++func shouldPanic(t *testing.T, name string, f func()) {
++	defer func() {
++		if recover() == nil {
++			t.Errorf("%s did not panic", name)
++		}
++	}()
++	f()
++}
++
++func TestUnaligned64(t *testing.T) {
++	// Unaligned 64-bit atomics on 32-bit systems are
++	// a continual source of pain. Test that on 32-bit systems they crash
++	// instead of failing silently.
++	if unsafe.Sizeof(int(0)) != 4 {
++		t.Skip("test only runs on 32-bit systems")
++	}
++
++	t.Skip("skipping test for gccgo")
++
++	x := make([]uint32, 4)
++	p := (*uint64)(unsafe.Pointer(&x[1])) // misaligned
++
++	shouldPanic(t, "LoadUint64", func() { LoadUint64(p) })
++	shouldPanic(t, "StoreUint64", func() { StoreUint64(p, 1) })
++	shouldPanic(t, "CompareAndSwapUint64", func() { CompareAndSwapUint64(p, 1, 2) })
++	shouldPanic(t, "AddUint64", func() { AddUint64(p, 3) })
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/atomic/race.go gcc-4.8.1/libgo/go/sync/atomic/race.go
+--- gcc-4.8.1.orig/libgo/go/sync/atomic/race.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/sync/atomic/race.go	2013-07-16 01:55:04.520470000 -0500
+@@ -25,6 +25,7 @@
+ }
+ 
+ func CompareAndSwapUint32(val *uint32, old, new uint32) (swapped bool) {
++	_ = *val
+ 	swapped = false
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+@@ -43,6 +44,7 @@
+ }
+ 
+ func CompareAndSwapUint64(val *uint64, old, new uint64) (swapped bool) {
++	_ = *val
+ 	swapped = false
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+@@ -57,6 +59,7 @@
+ }
+ 
+ func CompareAndSwapPointer(val *unsafe.Pointer, old, new unsafe.Pointer) (swapped bool) {
++	_ = *val
+ 	swapped = false
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+@@ -71,6 +74,7 @@
+ }
+ 
+ func CompareAndSwapUintptr(val *uintptr, old, new uintptr) (swapped bool) {
++	_ = *val
+ 	swapped = false
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+@@ -89,6 +93,7 @@
+ }
+ 
+ func AddUint32(val *uint32, delta uint32) (new uint32) {
++	_ = *val
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+ 	runtime.RaceAcquire(unsafe.Pointer(val))
+@@ -105,6 +110,7 @@
+ }
+ 
+ func AddUint64(val *uint64, delta uint64) (new uint64) {
++	_ = *val
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+ 	runtime.RaceAcquire(unsafe.Pointer(val))
+@@ -117,6 +123,7 @@
+ }
+ 
+ func AddUintptr(val *uintptr, delta uintptr) (new uintptr) {
++	_ = *val
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(val))
+ 	runtime.RaceAcquire(unsafe.Pointer(val))
+@@ -133,6 +140,7 @@
+ }
+ 
+ func LoadUint32(addr *uint32) (val uint32) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	runtime.RaceAcquire(unsafe.Pointer(addr))
+@@ -146,6 +154,7 @@
+ }
+ 
+ func LoadUint64(addr *uint64) (val uint64) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	runtime.RaceAcquire(unsafe.Pointer(addr))
+@@ -155,6 +164,7 @@
+ }
+ 
+ func LoadPointer(addr *unsafe.Pointer) (val unsafe.Pointer) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	runtime.RaceAcquire(unsafe.Pointer(addr))
+@@ -164,6 +174,7 @@
+ }
+ 
+ func LoadUintptr(addr *uintptr) (val uintptr) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	runtime.RaceAcquire(unsafe.Pointer(addr))
+@@ -177,6 +188,7 @@
+ }
+ 
+ func StoreUint32(addr *uint32, val uint32) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	*addr = val
+@@ -189,6 +201,7 @@
+ }
+ 
+ func StoreUint64(addr *uint64, val uint64) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	*addr = val
+@@ -197,6 +210,7 @@
+ }
+ 
+ func StorePointer(addr *unsafe.Pointer, val unsafe.Pointer) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	*addr = val
+@@ -205,6 +219,7 @@
+ }
+ 
+ func StoreUintptr(addr *uintptr, val uintptr) {
++	_ = *addr
+ 	runtime.RaceSemacquire(&mtx)
+ 	runtime.RaceRead(unsafe.Pointer(addr))
+ 	*addr = val
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/cond.go gcc-4.8.1/libgo/go/sync/cond.go
+--- gcc-4.8.1.orig/libgo/go/sync/cond.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/sync/cond.go	2013-07-16 01:55:04.520470000 -0500
+@@ -57,6 +57,7 @@
+ //
+ func (c *Cond) Wait() {
+ 	if raceenabled {
++		_ = c.m.state
+ 		raceDisable()
+ 	}
+ 	c.m.Lock()
+@@ -80,6 +81,7 @@
+ // during the call.
+ func (c *Cond) Signal() {
+ 	if raceenabled {
++		_ = c.m.state
+ 		raceDisable()
+ 	}
+ 	c.m.Lock()
+@@ -106,6 +108,7 @@
+ // during the call.
+ func (c *Cond) Broadcast() {
+ 	if raceenabled {
++		_ = c.m.state
+ 		raceDisable()
+ 	}
+ 	c.m.Lock()
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/example_test.go gcc-4.8.1/libgo/go/sync/example_test.go
+--- gcc-4.8.1.orig/libgo/go/sync/example_test.go	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/go/sync/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -24,10 +24,10 @@
+ 		wg.Add(1)
+ 		// Launch a goroutine to fetch the URL.
+ 		go func(url string) {
++			// Decrement the counter when the goroutine completes.
++			defer wg.Done()
+ 			// Fetch the URL.
+ 			http.Get(url)
+-			// Decrement the counter.
+-			wg.Done()
+ 		}(url)
+ 	}
+ 	// Wait for all HTTP fetches to complete.
+@@ -37,7 +37,7 @@
+ func ExampleOnce() {
+ 	var once sync.Once
+ 	onceBody := func() {
+-		fmt.Printf("Only once\n")
++		fmt.Println("Only once")
+ 	}
+ 	done := make(chan bool)
+ 	for i := 0; i < 10; i++ {
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/mutex.go gcc-4.8.1/libgo/go/sync/mutex.go
+--- gcc-4.8.1.orig/libgo/go/sync/mutex.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/sync/mutex.go	2013-07-16 01:55:04.520470000 -0500
+@@ -81,6 +81,7 @@
+ // arrange for another goroutine to unlock it.
+ func (m *Mutex) Unlock() {
+ 	if raceenabled {
++		_ = m.state
+ 		raceRelease(unsafe.Pointer(m))
+ 	}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/rwmutex.go gcc-4.8.1/libgo/go/sync/rwmutex.go
+--- gcc-4.8.1.orig/libgo/go/sync/rwmutex.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/sync/rwmutex.go	2013-07-16 01:55:04.520470000 -0500
+@@ -28,6 +28,7 @@
+ // RLock locks rw for reading.
+ func (rw *RWMutex) RLock() {
+ 	if raceenabled {
++		_ = rw.w.state
+ 		raceDisable()
+ 	}
+ 	if atomic.AddInt32(&rw.readerCount, 1) < 0 {
+@@ -46,6 +47,7 @@
+ // on entry to RUnlock.
+ func (rw *RWMutex) RUnlock() {
+ 	if raceenabled {
++		_ = rw.w.state
+ 		raceReleaseMerge(unsafe.Pointer(&rw.writerSem))
+ 		raceDisable()
+ 	}
+@@ -69,6 +71,7 @@
+ // the lock.
+ func (rw *RWMutex) Lock() {
+ 	if raceenabled {
++		_ = rw.w.state
+ 		raceDisable()
+ 	}
+ 	// First, resolve competition with other writers.
+@@ -94,6 +97,7 @@
+ // arrange for another goroutine to RUnlock (Unlock) it.
+ func (rw *RWMutex) Unlock() {
+ 	if raceenabled {
++		_ = rw.w.state
+ 		raceRelease(unsafe.Pointer(&rw.readerSem))
+ 		raceRelease(unsafe.Pointer(&rw.writerSem))
+ 		raceDisable()
+diff -Naur gcc-4.8.1.orig/libgo/go/sync/waitgroup.go gcc-4.8.1/libgo/go/sync/waitgroup.go
+--- gcc-4.8.1.orig/libgo/go/sync/waitgroup.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/sync/waitgroup.go	2013-07-16 01:55:04.520470000 -0500
+@@ -34,10 +34,16 @@
+ // G3: Wait() // G1 still hasn't run, G3 finds sema == 1, unblocked! Bug.
+ 
+ // Add adds delta, which may be negative, to the WaitGroup counter.
+-// If the counter becomes zero, all goroutines blocked on Wait() are released.
++// If the counter becomes zero, all goroutines blocked on Wait are released.
+ // If the counter goes negative, Add panics.
++//
++// Note that calls with positive delta must happen before the call to Wait,
++// or else Wait may wait for too small a group. Typically this means the calls
++// to Add should execute before the statement creating the goroutine or
++// other event to be waited for. See the WaitGroup example.
+ func (wg *WaitGroup) Add(delta int) {
+ 	if raceenabled {
++		_ = wg.m.state
+ 		raceReleaseMerge(unsafe.Pointer(wg))
+ 		raceDisable()
+ 		defer raceEnable()
+@@ -66,6 +72,7 @@
+ // Wait blocks until the WaitGroup counter is zero.
+ func (wg *WaitGroup) Wait() {
+ 	if raceenabled {
++		_ = wg.m.state
+ 		raceDisable()
+ 	}
+ 	if atomic.LoadInt32(&wg.counter) == 0 {
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/dir_plan9.go gcc-4.8.1/libgo/go/syscall/dir_plan9.go
+--- gcc-4.8.1.orig/libgo/go/syscall/dir_plan9.go	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/dir_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -68,9 +68,9 @@
+ 	b = pbit16(b, uint16(n)-2)
+ 	b = pbit16(b, d.Type)
+ 	b = pbit32(b, d.Dev)
+-	b = pbit64(b, d.Qid.Path)
+-	b = pbit32(b, d.Qid.Vers)
+ 	b = pbit8(b, d.Qid.Type)
++	b = pbit32(b, d.Qid.Vers)
++	b = pbit64(b, d.Qid.Path)
+ 	b = pbit32(b, d.Mode)
+ 	b = pbit32(b, d.Atime)
+ 	b = pbit32(b, d.Mtime)
+@@ -101,9 +101,9 @@
+ 	var d Dir
+ 	d.Type, b = gbit16(b)
+ 	d.Dev, b = gbit32(b)
+-	d.Qid.Path, b = gbit64(b)
+-	d.Qid.Vers, b = gbit32(b)
+ 	d.Qid.Type, b = gbit8(b)
++	d.Qid.Vers, b = gbit32(b)
++	d.Qid.Path, b = gbit64(b)
+ 	d.Mode, b = gbit32(b)
+ 	d.Atime, b = gbit32(b)
+ 	d.Mtime, b = gbit32(b)
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/env_plan9.go gcc-4.8.1/libgo/go/syscall/env_plan9.go
+--- gcc-4.8.1.orig/libgo/go/syscall/env_plan9.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/env_plan9.go	2013-07-16 01:55:04.520470000 -0500
+@@ -15,12 +15,15 @@
+ 	// envOnce guards copyenv, which populates env.
+ 	envOnce sync.Once
+ 
+-	// envLock guards env.
++	// envLock guards env and envs.
+ 	envLock sync.RWMutex
+ 
+ 	// env maps from an environment variable to its value.
+ 	env = make(map[string]string)
+ 
++	// envs contains elements of env in the form "key=value".
++	envs []string
++
+ 	errZeroLengthKey = errors.New("zero length key")
+ 	errShortWrite    = errors.New("i/o count too small")
+ )
+@@ -71,12 +74,16 @@
+ 	if err != nil {
+ 		return
+ 	}
++	envs = make([]string, len(files))
++	i := 0
+ 	for _, key := range files {
+ 		v, err := readenv(key)
+ 		if err != nil {
+ 			continue
+ 		}
+ 		env[key] = v
++		envs[i] = key + "=" + v
++		i++
+ 	}
+ }
+ 
+@@ -96,6 +103,7 @@
+ 		return "", false
+ 	}
+ 	env[key] = v
++	envs = append(envs, key+"="+v)
+ 	return v, true
+ }
+ 
+@@ -112,6 +120,7 @@
+ 		return err
+ 	}
+ 	env[key] = value
++	envs = append(envs, key+"="+value)
+ 	return nil
+ }
+ 
+@@ -120,6 +129,7 @@
+ 	defer envLock.Unlock()
+ 
+ 	env = make(map[string]string)
++	envs = []string{}
+ 	RawSyscall(SYS_RFORK, RFCENVG, 0, 0)
+ }
+ 
+@@ -128,11 +138,5 @@
+ 	defer envLock.RUnlock()
+ 
+ 	envOnce.Do(copyenv)
+-	a := make([]string, len(env))
+-	i := 0
+-	for k, v := range env {
+-		a[i] = k + "=" + v
+-		i++
+-	}
+-	return a
++	return append([]string(nil), envs...)
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/env_unix.go gcc-4.8.1/libgo/go/syscall/env_unix.go
+--- gcc-4.8.1.orig/libgo/go/syscall/env_unix.go	2012-01-25 14:56:26.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/env_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -71,6 +71,16 @@
+ 	if len(key) == 0 {
+ 		return EINVAL
+ 	}
++	for i := 0; i < len(key); i++ {
++		if key[i] == '=' || key[i] == 0 {
++			return EINVAL
++		}
++	}
++	for i := 0; i < len(value); i++ {
++		if value[i] == 0 {
++			return EINVAL
++		}
++	}
+ 
+ 	envLock.Lock()
+ 	defer envLock.Unlock()
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/exec_bsd.go gcc-4.8.1/libgo/go/syscall/exec_bsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/exec_bsd.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/exec_bsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -38,10 +38,18 @@
+ 		i      int
+ 	)
+ 
++	// guard against side effects of shuffling fds below.
++	// Make sure that nextfd is beyond any currently open files so
++	// that we can't run the risk of overwriting any of them.
+ 	fd := make([]int, len(attr.Files))
++	nextfd = len(attr.Files)
+ 	for i, ufd := range attr.Files {
++		if nextfd < int(ufd) {
++			nextfd = int(ufd)
++		}
+ 		fd[i] = int(ufd)
+ 	}
++	nextfd++
+ 
+ 	// About to call fork.
+ 	// No more allocation or calls of non-assembly functions.
+@@ -136,7 +144,6 @@
+ 
+ 	// Pass 1: look for fd[i] < i and move those up above len(fd)
+ 	// so that pass 2 won't stomp on an fd it needs later.
+-	nextfd = int(len(fd))
+ 	if pipe < nextfd {
+ 		err1 = raw_dup2(pipe, nextfd)
+ 		if err1 != 0 {
+@@ -217,11 +224,6 @@
+ 	for {
+ 		raw_exit(253)
+ 	}
+-
+-	// Calling panic is not actually safe,
+-	// but the for loop above won't break
+-	// and this shuts up the compiler.
+-	panic("unreached")
+ }
+ 
+ // Try to open a pipe with O_CLOEXEC set on both file descriptors.
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/exec_linux.go gcc-4.8.1/libgo/go/syscall/exec_linux.go
+--- gcc-4.8.1.orig/libgo/go/syscall/exec_linux.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/exec_linux.go	2013-07-16 01:55:04.520470000 -0500
+@@ -43,11 +43,18 @@
+ 		i      int
+ 	)
+ 
+-	// guard against side effects of shuffling fds below.
++	// Guard against side effects of shuffling fds below.
++	// Make sure that nextfd is beyond any currently open files so
++	// that we can't run the risk of overwriting any of them.
+ 	fd := make([]int, len(attr.Files))
++	nextfd = len(attr.Files)
+ 	for i, ufd := range attr.Files {
++		if nextfd < int(ufd) {
++			nextfd = int(ufd)
++		}
+ 		fd[i] = int(ufd)
+ 	}
++	nextfd++
+ 
+ 	// About to call fork.
+ 	// No more allocation or calls of non-assembly functions.
+@@ -163,7 +170,6 @@
+ 
+ 	// Pass 1: look for fd[i] < i and move those up above len(fd)
+ 	// so that pass 2 won't stomp on an fd it needs later.
+-	nextfd = int(len(fd))
+ 	if pipe < nextfd {
+ 		err1 = raw_dup2(pipe, nextfd)
+ 		if err1 != 0 {
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/mksyscall.awk gcc-4.8.1/libgo/go/syscall/mksyscall.awk
+--- gcc-4.8.1.orig/libgo/go/syscall/mksyscall.awk	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/syscall/mksyscall.awk	2013-08-02 17:30:42.420406000 -0500
+@@ -53,7 +53,7 @@
+     }
+ 
+     # Sets a[1] = //sysnb, a[2] == function name.
+-    split(line, a, "[ 	(]*")
++    split(line, a, "[ 	(]+")
+     gofnname = a[2]
+ 
+     off = match(line, "\\([^()]*\\)")
+@@ -78,7 +78,7 @@
+ 	next
+     }
+ 
+-    split(line, a, "[ 	(]*")
++    split(line, a, "[ 	(]+")
+     cfnname = substr(a[1], 3, length(a[1]) - 2)
+ 
+     off = match(line, "\\([^()]*\\)")
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/passfd_test.go gcc-4.8.1/libgo/go/syscall/passfd_test.go
+--- gcc-4.8.1.orig/libgo/go/syscall/passfd_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/syscall/passfd_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2,7 +2,7 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
+-// +build linux darwin
++// +build linux darwin freebsd netbsd openbsd
+ 
+ package syscall_test
+ 
+@@ -49,7 +49,11 @@
+ 	defer readFile.Close()
+ 
+ 	cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir)
+-	cmd.Env = append([]string{"GO_WANT_HELPER_PROCESS=1"}, os.Environ()...)
++	cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"}
++	path := os.Getenv("LD_LIBRARY_PATH")
++	if path != "" {
++		cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+path)
++	}
+ 	cmd.ExtraFiles = []*os.File{writeFile}
+ 
+ 	out, err := cmd.CombinedOutput()
+@@ -149,3 +153,49 @@
+ 		return
+ 	}
+ }
++
++// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage,
++// and ParseUnixRights are able to successfully round-trip lists of file descriptors.
++func TestUnixRightsRoundtrip(t *testing.T) {
++	testCases := [...][][]int{
++		{{42}},
++		{{1, 2}},
++		{{3, 4, 5}},
++		{{}},
++		{{1, 2}, {3, 4, 5}, {}, {7}},
++	}
++	for _, testCase := range testCases {
++		b := []byte{}
++		var n int
++		for _, fds := range testCase {
++			// Last assignment to n wins
++			n = len(b) + syscall.CmsgLen(4*len(fds))
++			b = append(b, syscall.UnixRights(fds...)...)
++		}
++		// Truncate b
++		b = b[:n]
++
++		scms, err := syscall.ParseSocketControlMessage(b)
++		if err != nil {
++			t.Fatalf("ParseSocketControlMessage: %v", err)
++		}
++		if len(scms) != len(testCase) {
++			t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms)
++		}
++		for i, scm := range scms {
++			gotFds, err := syscall.ParseUnixRights(&scm)
++			if err != nil {
++				t.Fatalf("ParseUnixRights: %v", err)
++			}
++			wantFds := testCase[i]
++			if len(gotFds) != len(wantFds) {
++				t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds)
++			}
++			for j, fd := range gotFds {
++				if fd != wantFds[j] {
++					t.Fatalf("expected fd %v, got %v", wantFds[j], fd)
++				}
++			}
++		}
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/route_bsd.go gcc-4.8.1/libgo/go/syscall/route_bsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/route_bsd.go	2012-01-12 23:11:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/route_bsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -8,9 +8,7 @@
+ 
+ package syscall
+ 
+-import (
+-	"unsafe"
+-)
++import "unsafe"
+ 
+ // Round the length of a raw sockaddr up to align it properly.
+ func rsaAlignOf(salen int) int {
+@@ -31,7 +29,6 @@
+ // parameters.
+ func RouteRIB(facility, param int) ([]byte, error) {
+ 	mib := []_C_int{CTL_NET, AF_ROUTE, 0, 0, _C_int(facility), _C_int(param)}
+-
+ 	// Find size.
+ 	n := uintptr(0)
+ 	if err := sysctl(mib, nil, &n, nil, 0); err != nil {
+@@ -40,12 +37,10 @@
+ 	if n == 0 {
+ 		return nil, nil
+ 	}
+-
+ 	tab := make([]byte, n)
+ 	if err := sysctl(mib, &tab[0], &n, nil, 0); err != nil {
+ 		return nil, err
+ 	}
+-
+ 	return tab[:n], nil
+ }
+ 
+@@ -76,13 +71,12 @@
+ 		af  int
+ 		sas [4]Sockaddr
+ 	)
+-
+-	buf := m.Data[:]
++	b := m.Data[:]
+ 	for i := uint(0); i < RTAX_MAX; i++ {
+ 		if m.Header.Addrs&rtaRtMask&(1<<i) == 0 {
+ 			continue
+ 		}
+-		rsa := (*RawSockaddr)(unsafe.Pointer(&buf[0]))
++		rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))
+ 		switch i {
+ 		case RTAX_DST, RTAX_GATEWAY:
+ 			sa, err := anyToSockaddr((*RawSockaddrAny)(unsafe.Pointer(rsa)))
+@@ -96,14 +90,14 @@
+ 		case RTAX_NETMASK, RTAX_GENMASK:
+ 			switch af {
+ 			case AF_INET:
+-				rsa4 := (*RawSockaddrInet4)(unsafe.Pointer(&buf[0]))
++				rsa4 := (*RawSockaddrInet4)(unsafe.Pointer(&b[0]))
+ 				sa := new(SockaddrInet4)
+ 				for j := 0; rsa4.Len > 0 && j < int(rsa4.Len)-int(unsafe.Offsetof(rsa4.Addr)); j++ {
+ 					sa.Addr[j] = rsa4.Addr[j]
+ 				}
+ 				sas[i] = sa
+ 			case AF_INET6:
+-				rsa6 := (*RawSockaddrInet6)(unsafe.Pointer(&buf[0]))
++				rsa6 := (*RawSockaddrInet6)(unsafe.Pointer(&b[0]))
+ 				sa := new(SockaddrInet6)
+ 				for j := 0; rsa6.Len > 0 && j < int(rsa6.Len)-int(unsafe.Offsetof(rsa6.Addr)); j++ {
+ 					sa.Addr[j] = rsa6.Addr[j]
+@@ -111,9 +105,8 @@
+ 				sas[i] = sa
+ 			}
+ 		}
+-		buf = buf[rsaAlignOf(int(rsa.Len)):]
++		b = b[rsaAlignOf(int(rsa.Len)):]
+ 	}
+-
+ 	return sas[:]
+ }
+ 
+@@ -148,13 +141,12 @@
+ 	if m.Header.Addrs&rtaIfaMask == 0 {
+ 		return nil
+ 	}
+-
+-	buf := m.Data[:]
++	b := m.Data[:]
+ 	for i := uint(0); i < RTAX_MAX; i++ {
+ 		if m.Header.Addrs&rtaIfaMask&(1<<i) == 0 {
+ 			continue
+ 		}
+-		rsa := (*RawSockaddr)(unsafe.Pointer(&buf[0]))
++		rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))
+ 		switch i {
+ 		case RTAX_IFA:
+ 			sa, err := anyToSockaddr((*RawSockaddrAny)(unsafe.Pointer(rsa)))
+@@ -174,22 +166,21 @@
+ 		case RTAX_BRD:
+ 			// nothing to do
+ 		}
+-		buf = buf[rsaAlignOf(int(rsa.Len)):]
++		b = b[rsaAlignOf(int(rsa.Len)):]
+ 	}
+-
+ 	return sas
+ }
+ 
+-// ParseRoutingMessage parses buf as routing messages and returns
+-// the slice containing the RoutingMessage interfaces.
+-func ParseRoutingMessage(buf []byte) (msgs []RoutingMessage, err error) {
+-	for len(buf) >= anyMessageLen {
+-		any := (*anyMessage)(unsafe.Pointer(&buf[0]))
++// ParseRoutingMessage parses b as routing messages and returns the
++// slice containing the RoutingMessage interfaces.
++func ParseRoutingMessage(b []byte) (msgs []RoutingMessage, err error) {
++	for len(b) >= anyMessageLen {
++		any := (*anyMessage)(unsafe.Pointer(&b[0]))
+ 		if any.Version != RTM_VERSION {
+ 			return nil, EINVAL
+ 		}
+-		msgs = append(msgs, any.toRoutingMessage(buf))
+-		buf = buf[any.Msglen:]
++		msgs = append(msgs, any.toRoutingMessage(b))
++		b = b[any.Msglen:]
+ 	}
+ 	return msgs, nil
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/route_darwin.go gcc-4.8.1/libgo/go/syscall/route_darwin.go
+--- gcc-4.8.1.orig/libgo/go/syscall/route_darwin.go	2011-12-12 17:40:51.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/route_darwin.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,36 +6,22 @@
+ 
+ package syscall
+ 
+-import (
+-	"unsafe"
+-)
++import "unsafe"
+ 
+-func (any *anyMessage) toRoutingMessage(buf []byte) RoutingMessage {
++func (any *anyMessage) toRoutingMessage(b []byte) RoutingMessage {
+ 	switch any.Type {
+ 	case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
+ 		p := (*RouteMessage)(unsafe.Pointer(any))
+-		rtm := &RouteMessage{}
+-		rtm.Header = p.Header
+-		rtm.Data = buf[SizeofRtMsghdr:any.Msglen]
+-		return rtm
++		return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]}
+ 	case RTM_IFINFO:
+ 		p := (*InterfaceMessage)(unsafe.Pointer(any))
+-		ifm := &InterfaceMessage{}
+-		ifm.Header = p.Header
+-		ifm.Data = buf[SizeofIfMsghdr:any.Msglen]
+-		return ifm
++		return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]}
+ 	case RTM_NEWADDR, RTM_DELADDR:
+ 		p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
+-		ifam := &InterfaceAddrMessage{}
+-		ifam.Header = p.Header
+-		ifam.Data = buf[SizeofIfaMsghdr:any.Msglen]
+-		return ifam
++		return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]}
+ 	case RTM_NEWMADDR2, RTM_DELMADDR:
+ 		p := (*InterfaceMulticastAddrMessage)(unsafe.Pointer(any))
+-		ifmam := &InterfaceMulticastAddrMessage{}
+-		ifmam.Header = p.Header
+-		ifmam.Data = buf[SizeofIfmaMsghdr2:any.Msglen]
+-		return ifmam
++		return &InterfaceMulticastAddrMessage{Header: p.Header, Data: b[SizeofIfmaMsghdr2:any.Msglen]}
+ 	}
+ 	return nil
+ }
+@@ -53,13 +39,12 @@
+ 	if m.Header.Addrs&rtaIfmaMask == 0 {
+ 		return nil
+ 	}
+-
+-	buf := m.Data[:]
++	b := m.Data[:]
+ 	for i := uint(0); i < RTAX_MAX; i++ {
+ 		if m.Header.Addrs&rtaIfmaMask&(1<<i) == 0 {
+ 			continue
+ 		}
+-		rsa := (*RawSockaddr)(unsafe.Pointer(&buf[0]))
++		rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))
+ 		switch i {
+ 		case RTAX_IFA:
+ 			sa, e := anyToSockaddr((*RawSockaddrAny)(unsafe.Pointer(rsa)))
+@@ -70,8 +55,7 @@
+ 		case RTAX_GATEWAY, RTAX_IFP:
+ 			// nothing to do
+ 		}
+-		buf = buf[rsaAlignOf(int(rsa.Len)):]
++		b = b[rsaAlignOf(int(rsa.Len)):]
+ 	}
+-
+ 	return sas
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/route_freebsd.go gcc-4.8.1/libgo/go/syscall/route_freebsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/route_freebsd.go	2011-12-12 17:40:51.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/route_freebsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,40 +6,37 @@
+ 
+ package syscall
+ 
+-import (
+-	"unsafe"
+-)
++import "unsafe"
+ 
+-func (any *anyMessage) toRoutingMessage(buf []byte) RoutingMessage {
++func (any *anyMessage) toRoutingMessage(b []byte) RoutingMessage {
+ 	switch any.Type {
+ 	case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
+ 		p := (*RouteMessage)(unsafe.Pointer(any))
+-		rtm := &RouteMessage{}
+-		rtm.Header = p.Header
+-		rtm.Data = buf[SizeofRtMsghdr:any.Msglen]
+-		return rtm
++		return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]}
+ 	case RTM_IFINFO:
+ 		p := (*InterfaceMessage)(unsafe.Pointer(any))
+-		ifm := &InterfaceMessage{}
+-		ifm.Header = p.Header
+-		ifm.Data = buf[SizeofIfMsghdr:any.Msglen]
+-		return ifm
++		return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]}
++	case RTM_IFANNOUNCE:
++		p := (*InterfaceAnnounceMessage)(unsafe.Pointer(any))
++		return &InterfaceAnnounceMessage{Header: p.Header}
+ 	case RTM_NEWADDR, RTM_DELADDR:
+ 		p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
+-		ifam := &InterfaceAddrMessage{}
+-		ifam.Header = p.Header
+-		ifam.Data = buf[SizeofIfaMsghdr:any.Msglen]
+-		return ifam
++		return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]}
+ 	case RTM_NEWMADDR, RTM_DELMADDR:
+ 		p := (*InterfaceMulticastAddrMessage)(unsafe.Pointer(any))
+-		ifmam := &InterfaceMulticastAddrMessage{}
+-		ifmam.Header = p.Header
+-		ifmam.Data = buf[SizeofIfmaMsghdr:any.Msglen]
+-		return ifmam
++		return &InterfaceMulticastAddrMessage{Header: p.Header, Data: b[SizeofIfmaMsghdr:any.Msglen]}
+ 	}
+ 	return nil
+ }
+ 
++// InterfaceAnnounceMessage represents a routing message containing
++// network interface arrival and depature information.
++type InterfaceAnnounceMessage struct {
++	Header IfAnnounceMsghdr
++}
++
++func (m *InterfaceAnnounceMessage) sockaddr() (sas []Sockaddr) { return nil }
++
+ // InterfaceMulticastAddrMessage represents a routing message
+ // containing network interface address entries.
+ type InterfaceMulticastAddrMessage struct {
+@@ -53,13 +50,12 @@
+ 	if m.Header.Addrs&rtaIfmaMask == 0 {
+ 		return nil
+ 	}
+-
+-	buf := m.Data[:]
++	b := m.Data[:]
+ 	for i := uint(0); i < RTAX_MAX; i++ {
+ 		if m.Header.Addrs&rtaIfmaMask&(1<<i) == 0 {
+ 			continue
+ 		}
+-		rsa := (*RawSockaddr)(unsafe.Pointer(&buf[0]))
++		rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))
+ 		switch i {
+ 		case RTAX_IFA:
+ 			sa, e := anyToSockaddr((*RawSockaddrAny)(unsafe.Pointer(rsa)))
+@@ -70,8 +66,7 @@
+ 		case RTAX_GATEWAY, RTAX_IFP:
+ 			// nothing to do
+ 		}
+-		buf = buf[rsaAlignOf(int(rsa.Len)):]
++		b = b[rsaAlignOf(int(rsa.Len)):]
+ 	}
+-
+ 	return sas
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/route_netbsd.go gcc-4.8.1/libgo/go/syscall/route_netbsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/route_netbsd.go	2012-01-12 23:11:45.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/route_netbsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,30 +6,30 @@
+ 
+ package syscall
+ 
+-import (
+-	"unsafe"
+-)
++import "unsafe"
+ 
+-func (any *anyMessage) toRoutingMessage(buf []byte) RoutingMessage {
++func (any *anyMessage) toRoutingMessage(b []byte) RoutingMessage {
+ 	switch any.Type {
+ 	case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
+ 		p := (*RouteMessage)(unsafe.Pointer(any))
+-		rtm := &RouteMessage{}
+-		rtm.Header = p.Header
+-		rtm.Data = buf[SizeofRtMsghdr:any.Msglen]
+-		return rtm
++		return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]}
+ 	case RTM_IFINFO:
+ 		p := (*InterfaceMessage)(unsafe.Pointer(any))
+-		ifm := &InterfaceMessage{}
+-		ifm.Header = p.Header
+-		ifm.Data = buf[SizeofIfMsghdr:any.Msglen]
+-		return ifm
++		return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]}
++	case RTM_IFANNOUNCE:
++		p := (*InterfaceAnnounceMessage)(unsafe.Pointer(any))
++		return &InterfaceAnnounceMessage{Header: p.Header}
+ 	case RTM_NEWADDR, RTM_DELADDR:
+ 		p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
+-		ifam := &InterfaceAddrMessage{}
+-		ifam.Header = p.Header
+-		ifam.Data = buf[SizeofIfaMsghdr:any.Msglen]
+-		return ifam
++		return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]}
+ 	}
+ 	return nil
+ }
++
++// InterfaceAnnounceMessage represents a routing message containing
++// network interface arrival and depature information.
++type InterfaceAnnounceMessage struct {
++	Header IfAnnounceMsghdr
++}
++
++func (m *InterfaceAnnounceMessage) sockaddr() (sas []Sockaddr) { return nil }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/route_openbsd.go gcc-4.8.1/libgo/go/syscall/route_openbsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/route_openbsd.go	2011-10-23 14:04:37.000000000 -0500
++++ gcc-4.8.1/libgo/go/syscall/route_openbsd.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,30 +6,30 @@
+ 
+ package syscall
+ 
+-import (
+-	"unsafe"
+-)
++import "unsafe"
+ 
+-func (any *anyMessage) toRoutingMessage(buf []byte) RoutingMessage {
++func (any *anyMessage) toRoutingMessage(b []byte) RoutingMessage {
+ 	switch any.Type {
+ 	case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
+ 		p := (*RouteMessage)(unsafe.Pointer(any))
+-		rtm := &RouteMessage{}
+-		rtm.Header = p.Header
+-		rtm.Data = buf[SizeofRtMsghdr:any.Msglen]
+-		return rtm
++		return &RouteMessage{Header: p.Header, Data: b[SizeofRtMsghdr:any.Msglen]}
+ 	case RTM_IFINFO:
+ 		p := (*InterfaceMessage)(unsafe.Pointer(any))
+-		ifm := &InterfaceMessage{}
+-		ifm.Header = p.Header
+-		ifm.Data = buf[SizeofIfMsghdr:any.Msglen]
+-		return ifm
++		return &InterfaceMessage{Header: p.Header, Data: b[SizeofIfMsghdr:any.Msglen]}
++	case RTM_IFANNOUNCE:
++		p := (*InterfaceAnnounceMessage)(unsafe.Pointer(any))
++		return &InterfaceAnnounceMessage{Header: p.Header}
+ 	case RTM_NEWADDR, RTM_DELADDR:
+ 		p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
+-		ifam := &InterfaceAddrMessage{}
+-		ifam.Header = p.Header
+-		ifam.Data = buf[SizeofIfaMsghdr:any.Msglen]
+-		return ifam
++		return &InterfaceAddrMessage{Header: p.Header, Data: b[SizeofIfaMsghdr:any.Msglen]}
+ 	}
+ 	return nil
+ }
++
++// InterfaceAnnounceMessage represents a routing message containing
++// network interface arrival and depature information.
++type InterfaceAnnounceMessage struct {
++	Header IfAnnounceMsghdr
++}
++
++func (m *InterfaceAnnounceMessage) sockaddr() (sas []Sockaddr) { return nil }
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/security_windows.go gcc-4.8.1/libgo/go/syscall/security_windows.go
+--- gcc-4.8.1.orig/libgo/go/syscall/security_windows.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/syscall/security_windows.go	2013-07-16 01:55:04.520470000 -0500
+@@ -70,7 +70,7 @@
+ 
+ const (
+ 	// do not reorder
+-	SidTypeUser = 1 << iota
++	SidTypeUser = 1 + iota
+ 	SidTypeGroup
+ 	SidTypeDomain
+ 	SidTypeAlias
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/sockcmsg_unix.go gcc-4.8.1/libgo/go/syscall/sockcmsg_unix.go
+--- gcc-4.8.1.orig/libgo/go/syscall/sockcmsg_unix.go	2013-02-20 14:04:36.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/sockcmsg_unix.go	2013-07-16 01:55:04.520470000 -0500
+@@ -13,7 +13,7 @@
+ 	"unsafe"
+ )
+ 
+-// Round the length of a raw sockaddr up to align it propery.
++// Round the length of a raw sockaddr up to align it properly.
+ func cmsgAlignOf(salen int) int {
+ 	salign := int(sizeofPtr)
+ 	// NOTE: It seems like 64-bit Darwin kernel still requires 32-bit
+@@ -26,9 +26,6 @@
+ 	if runtime.GOOS == "solaris" {
+ 		salign = 4
+ 	}
+-	if salen == 0 {
+-		return salign
+-	}
+ 	return (salen + salign - 1) & ^(salign - 1)
+ }
+ 
+@@ -45,7 +42,7 @@
+ }
+ 
+ func cmsgData(h *Cmsghdr) unsafe.Pointer {
+-	return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + SizeofCmsghdr)
++	return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))
+ }
+ 
+ // SocketControlMessage represents a socket control message.
+@@ -58,14 +55,15 @@
+ // messages.
+ func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {
+ 	var msgs []SocketControlMessage
+-	for len(b) >= CmsgLen(0) {
+-		h, dbuf, err := socketControlMessageHeaderAndData(b)
++	i := 0
++	for i+CmsgLen(0) <= len(b) {
++		h, dbuf, err := socketControlMessageHeaderAndData(b[i:])
+ 		if err != nil {
+ 			return nil, err
+ 		}
+-		m := SocketControlMessage{Header: *h, Data: dbuf[:int(h.Len)-cmsgAlignOf(SizeofCmsghdr)]}
++		m := SocketControlMessage{Header: *h, Data: dbuf}
+ 		msgs = append(msgs, m)
+-		b = b[cmsgAlignOf(int(h.Len)):]
++		i += cmsgAlignOf(int(h.Len))
+ 	}
+ 	return msgs, nil
+ }
+@@ -75,7 +73,7 @@
+ 	if h.Len < SizeofCmsghdr || int(h.Len) > len(b) {
+ 		return nil, nil, EINVAL
+ 	}
+-	return h, b[cmsgAlignOf(SizeofCmsghdr):], nil
++	return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil
+ }
+ 
+ // UnixRights encodes a set of open file descriptors into a socket
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/socket_bsd.go gcc-4.8.1/libgo/go/syscall/socket_bsd.go
+--- gcc-4.8.1.orig/libgo/go/syscall/socket_bsd.go	2011-12-12 17:40:51.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/socket_bsd.go	2013-07-24 11:53:32.825493000 -0500
+@@ -11,11 +11,11 @@
+ const SizeofSockaddrUnix = 110
+ 
+ type RawSockaddrInet4 struct {
+-	Len uint8;
+-	Family uint8;
+-	Port uint16;
+-	Addr [4]byte /* in_addr */;
+-	Zero [8]uint8;
++	Len    uint8
++	Family uint8
++	Port   uint16
++	Addr   [4]byte /* in_addr */
++	Zero   [8]uint8
+ }
+ 
+ func (sa *RawSockaddrInet4) setLen() Socklen_t {
+@@ -24,12 +24,12 @@
+ }
+ 
+ type RawSockaddrInet6 struct {
+-	Len uint8;
+-	Family uint8;
+-	Port uint16;
+-	Flowinfo uint32;
+-	Addr [16]byte /* in6_addr */;
+-	Scope_id uint32;
++	Len      uint8
++	Family   uint8
++	Port     uint16
++	Flowinfo uint32
++	Addr     [16]byte /* in6_addr */
++	Scope_id uint32
+ }
+ 
+ func (sa *RawSockaddrInet6) setLen() Socklen_t {
+@@ -38,9 +38,9 @@
+ }
+ 
+ type RawSockaddrUnix struct {
+-	Len uint8;
+-	Family uint8;
+-	Path [108]int8;
++	Len    uint8
++	Family uint8
++	Path   [108]int8
+ }
+ 
+ func (sa *RawSockaddrUnix) setLen(n int) {
+@@ -62,10 +62,14 @@
+ 	return n, nil
+ }
+ 
++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t {
++	return sl
++}
++
+ type RawSockaddr struct {
+-	Len uint8;
+-	Family uint8;
+-	Data [14]int8;
++	Len    uint8
++	Family uint8
++	Data   [14]int8
+ }
+ 
+ // BindToDevice binds the socket associated with fd to device.
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/socket.go gcc-4.8.1/libgo/go/syscall/socket.go
+--- gcc-4.8.1.orig/libgo/go/syscall/socket.go	2013-02-20 14:04:36.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/socket.go	2013-07-24 11:53:32.825493000 -0500
+@@ -79,7 +79,7 @@
+ func (sa *SockaddrUnix) sockaddr() (*RawSockaddrAny, Socklen_t, error) {
+ 	name := sa.Name
+ 	n := len(name)
+-	if n >= len(sa.raw.Path) || n == 0 {
++	if n >= len(sa.raw.Path) {
+ 		return nil, 0, EINVAL
+ 	}
+ 	sa.raw.Family = AF_UNIX
+@@ -88,12 +88,11 @@
+ 		sa.raw.Path[i] = int8(name[i])
+ 	}
+ 	// length is family (uint16), name, NUL.
+-	sl := 2 + Socklen_t(n) + 1
+-	if sa.raw.Path[0] == '@' {
+-		sa.raw.Path[0] = 0
+-		// Don't count trailing NUL for abstract address.
+-		sl--
++	sl := Socklen_t(2)
++	if n > 0 {
++		sl += Socklen_t(n) + 1
+ 	}
++	sl = sa.raw.adjustAbstract(sl)
+ 
+ 	// length is family (uint16), name, NUL.
+ 	return (*RawSockaddrAny)(unsafe.Pointer(&sa.raw)), sl, nil
+@@ -307,7 +306,9 @@
+ 	if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {
+ 		return
+ 	}
+-	from, err = anyToSockaddr(&rsa)
++	if rsa.Addr.Family != AF_UNSPEC {
++		from, err = anyToSockaddr(&rsa)
++	}
+ 	return
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/socket_irix.go gcc-4.8.1/libgo/go/syscall/socket_irix.go
+--- gcc-4.8.1.orig/libgo/go/syscall/socket_irix.go	2012-01-27 16:37:14.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/socket_irix.go	2013-07-24 11:53:32.825493000 -0500
+@@ -64,6 +64,10 @@
+ 	return n, nil
+ }
+ 
++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t {
++	return sl
++}
++
+ type RawSockaddr struct {
+ 	Family uint16
+ 	Data   [14]int8
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/socket_linux.go gcc-4.8.1/libgo/go/syscall/socket_linux.go
+--- gcc-4.8.1.orig/libgo/go/syscall/socket_linux.go	2012-11-24 14:46:59.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/socket_linux.go	2013-07-24 11:53:32.825493000 -0500
+@@ -110,6 +110,15 @@
+ 	return n, nil
+ }
+ 
++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t {
++	if sa.Path[0] == '@' {
++		sa.Path[0] = 0
++		// Don't count trailing NUL for abstract address.
++		sl--
++	}
++	return sl
++}
++
+ type RawSockaddrLinklayer struct {
+ 	Family   uint16
+ 	Protocol uint16
+diff -Naur gcc-4.8.1.orig/libgo/go/syscall/socket_solaris.go gcc-4.8.1/libgo/go/syscall/socket_solaris.go
+--- gcc-4.8.1.orig/libgo/go/syscall/socket_solaris.go	2011-12-12 17:40:51.000000000 -0600
++++ gcc-4.8.1/libgo/go/syscall/socket_solaris.go	2013-07-24 11:53:32.825493000 -0500
+@@ -12,9 +12,9 @@
+ 
+ type RawSockaddrInet4 struct {
+ 	Family uint16
+-	Port uint16
+-	Addr [4]byte /* in_addr */
+-	Zero [8]uint8
++	Port   uint16
++	Addr   [4]byte /* in_addr */
++	Zero   [8]uint8
+ }
+ 
+ func (sa *RawSockaddrInet4) setLen() Socklen_t {
+@@ -22,12 +22,12 @@
+ }
+ 
+ type RawSockaddrInet6 struct {
+-	Family uint16
+-	Port uint16
++	Family   uint16
++	Port     uint16
+ 	Flowinfo uint32
+-	Addr [16]byte /* in6_addr */
++	Addr     [16]byte /* in6_addr */
+ 	Scope_id uint32
+-	Src_id uint32
++	Src_id   uint32
+ }
+ 
+ func (sa *RawSockaddrInet6) setLen() Socklen_t {
+@@ -36,38 +36,27 @@
+ 
+ type RawSockaddrUnix struct {
+ 	Family uint16
+-	Path [108]int8
++	Path   [108]int8
+ }
+ 
+ func (sa *RawSockaddrUnix) setLen(int) {
+ }
+ 
+ func (sa *RawSockaddrUnix) getLen() (int, error) {
+-	if sa.Path[0] == 0 {
+-		// "Abstract" Unix domain socket.
+-		// Rewrite leading NUL as @ for textual display.
+-		// (This is the standard convention.)
+-		// Not friendly to overwrite in place,
+-		// but the callers below don't care.
+-		sa.Path[0] = '@'
+-	}
+-
+-	// Assume path ends at NUL.
+-	// This is not technically the GNU/Linux semantics for
+-	// abstract Unix domain sockets--they are supposed
+-	// to be uninterpreted fixed-size binary blobs--but
+-	// everyone uses this convention.
+ 	n := 0
+-	for n < len(sa.Path) - 3 && sa.Path[n] != 0 {
++	for n < len(sa.Path) && sa.Path[n] != 0 {
+ 		n++
+ 	}
+-
+ 	return n, nil
+ }
+ 
++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t {
++	return sl
++}
++
+ type RawSockaddr struct {
+ 	Family uint16
+-	Data [14]int8
++	Data   [14]int8
+ }
+ 
+ // BindToDevice binds the socket associated with fd to device.
+diff -Naur gcc-4.8.1.orig/libgo/go/testing/allocs.go gcc-4.8.1/libgo/go/testing/allocs.go
+--- gcc-4.8.1.orig/libgo/go/testing/allocs.go	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/go/testing/allocs.go	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,41 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package testing
++
++import (
++	"runtime"
++)
++
++// AllocsPerRun returns the average number of allocations during calls to f.
++//
++// To compute the number of allocations, the function will first be run once as
++// a warm-up.  The average number of allocations over the specified number of
++// runs will then be measured and returned.
++//
++// AllocsPerRun sets GOMAXPROCS to 1 during its measurement and will restore
++// it before returning.
++func AllocsPerRun(runs int, f func()) (avg float64) {
++	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++
++	// Warm up the function
++	f()
++
++	// Measure the starting statistics
++	var memstats runtime.MemStats
++	runtime.ReadMemStats(&memstats)
++	mallocs := 0 - memstats.Mallocs
++
++	// Run the function the specified number of times
++	for i := 0; i < runs; i++ {
++		f()
++	}
++
++	// Read the final statistics
++	runtime.ReadMemStats(&memstats)
++	mallocs += memstats.Mallocs
++
++	// Average the mallocs over the runs (not counting the warm-up)
++	return float64(mallocs) / float64(runs)
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/testing/iotest/reader.go gcc-4.8.1/libgo/go/testing/iotest/reader.go
+--- gcc-4.8.1.orig/libgo/go/testing/iotest/reader.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/testing/iotest/reader.go	2013-07-16 01:55:04.520470000 -0500
+@@ -37,9 +37,11 @@
+ 	return r.r.Read(p[0 : (len(p)+1)/2])
+ }
+ 
+-// DataErrReader returns a Reader that returns the final
+-// error with the last data read, instead of by itself with
+-// zero bytes of data.
++// DataErrReader changes the way errors are handled by a Reader. Normally, a
++// Reader returns an error (typically EOF) from the first Read call after the
++// last piece of data is read. DataErrReader wraps a Reader and changes its
++// behavior so the final error is returned along with the final data, instead
++// of in the first call after the final data.
+ func DataErrReader(r io.Reader) io.Reader { return &dataErrReader{r, nil, make([]byte, 1024)} }
+ 
+ type dataErrReader struct {
+diff -Naur gcc-4.8.1.orig/libgo/go/testing/quick/quick.go gcc-4.8.1/libgo/go/testing/quick/quick.go
+--- gcc-4.8.1.orig/libgo/go/testing/quick/quick.go	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/testing/quick/quick.go	2013-07-16 01:55:04.520470000 -0500
+@@ -140,8 +140,6 @@
+ 	default:
+ 		return reflect.Value{}, false
+ 	}
+-
+-	return
+ }
+ 
+ // A Config structure contains options for running a test.
+diff -Naur gcc-4.8.1.orig/libgo/go/testing/testing.go gcc-4.8.1/libgo/go/testing/testing.go
+--- gcc-4.8.1.orig/libgo/go/testing/testing.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/testing/testing.go	2013-07-16 01:55:04.520470000 -0500
+@@ -10,7 +10,7 @@
+ // [a-z]) and serves to identify the test routine.
+ // These TestXxx routines should be declared within the package they are testing.
+ //
+-// Tests may be skipped if not applicable like this:
++// Tests and benchmarks may be skipped if not applicable like this:
+ //     func TestTimeConsuming(t *testing.T) {
+ //         if testing.Short() {
+ //             t.Skip("skipping test in short mode.")
+@@ -18,6 +18,8 @@
+ //         ...
+ //     }
+ //
++// Benchmarks
++//
+ // Functions of the form
+ //     func BenchmarkXxx(*testing.B)
+ // are considered benchmarks, and are executed by the "go test" command when
+@@ -33,6 +35,7 @@
+ //         }
+ //     }
+ //
++// The benchmark function must run the target code b.N times.
+ // The benchmark package will vary b.N until the benchmark function lasts
+ // long enough to be timed reliably.  The output
+ //     BenchmarkHello    10000000    282 ns/op
+@@ -48,8 +51,10 @@
+ //         }
+ //     }
+ //
++// Examples
++//
+ // The package also runs and verifies example code. Example functions may
+-// include a concluding comment that begins with "Output:" and is compared with
++// include a concluding line comment that begins with "Output:" and is compared with
+ // the standard output of the function when the tests are run. (The comparison
+ // ignores leading and trailing space.) These are examples of an example:
+ //
+@@ -129,9 +134,10 @@
+ // common holds the elements common between T and B and
+ // captures common methods such as Errorf.
+ type common struct {
+-	mu     sync.RWMutex // guards output and failed
+-	output []byte       // Output generated by test or benchmark.
+-	failed bool         // Test or benchmark has failed.
++	mu      sync.RWMutex // guards output and failed
++	output  []byte       // Output generated by test or benchmark.
++	failed  bool         // Test or benchmark has failed.
++	skipped bool         // Test of benchmark has been skipped.
+ 
+ 	start    time.Time // Time test or benchmark started
+ 	duration time.Duration
+@@ -165,21 +171,17 @@
+ 		line = 1
+ 	}
+ 	buf := new(bytes.Buffer)
++	// Every line is indented at least one tab.
++	buf.WriteByte('\t')
+ 	fmt.Fprintf(buf, "%s:%d: ", file, line)
+-
+ 	lines := strings.Split(s, "\n")
+ 	if l := len(lines); l > 1 && lines[l-1] == "" {
+ 		lines = lines[:l-1]
+ 	}
+ 	for i, line := range lines {
+ 		if i > 0 {
+-			buf.WriteByte('\n')
+-		}
+-		// Every line is indented at least one tab.
+-		buf.WriteByte('\t')
+-		if i > 0 {
+ 			// Second and subsequent lines are indented an extra tab.
+-			buf.WriteByte('\t')
++			buf.WriteString("\n\t\t")
+ 		}
+ 		buf.WriteString(line)
+ 	}
+@@ -193,7 +195,6 @@
+ 	common
+ 	name          string    // Name of test.
+ 	startParallel chan bool // Parallel tests will wait on this.
+-	skipped       bool      // Test has been skipped.
+ }
+ 
+ // Fail marks the function as having failed but continues execution.
+@@ -212,6 +213,10 @@
+ 
+ // FailNow marks the function as having failed and stops its execution.
+ // Execution will continue at the next test or benchmark.
++// FailNow must be called from the goroutine running the
++// test or benchmark function, not from other goroutines
++// created during the test. Calling FailNow does not stop
++// those other goroutines.
+ func (c *common) FailNow() {
+ 	c.Fail()
+ 
+@@ -244,40 +249,77 @@
+ 	c.output = append(c.output, decorate(s)...)
+ }
+ 
+-// Log formats its arguments using default formatting, analogous to Println(),
+-// and records the text in the error log.
++// Log formats its arguments using default formatting, analogous to Println,
++// and records the text in the error log. The text will be printed only if
++// the test fails or the -test.v flag is set.
+ func (c *common) Log(args ...interface{}) { c.log(fmt.Sprintln(args...)) }
+ 
+-// Logf formats its arguments according to the format, analogous to Printf(),
+-// and records the text in the error log.
++// Logf formats its arguments according to the format, analogous to Printf,
++// and records the text in the error log. The text will be printed only if
++// the test fails or the -test.v flag is set.
+ func (c *common) Logf(format string, args ...interface{}) { c.log(fmt.Sprintf(format, args...)) }
+ 
+-// Error is equivalent to Log() followed by Fail().
++// Error is equivalent to Log followed by Fail.
+ func (c *common) Error(args ...interface{}) {
+ 	c.log(fmt.Sprintln(args...))
+ 	c.Fail()
+ }
+ 
+-// Errorf is equivalent to Logf() followed by Fail().
++// Errorf is equivalent to Logf followed by Fail.
+ func (c *common) Errorf(format string, args ...interface{}) {
+ 	c.log(fmt.Sprintf(format, args...))
+ 	c.Fail()
+ }
+ 
+-// Fatal is equivalent to Log() followed by FailNow().
++// Fatal is equivalent to Log followed by FailNow.
+ func (c *common) Fatal(args ...interface{}) {
+ 	c.log(fmt.Sprintln(args...))
+ 	c.FailNow()
+ }
+ 
+-// Fatalf is equivalent to Logf() followed by FailNow().
++// Fatalf is equivalent to Logf followed by FailNow.
+ func (c *common) Fatalf(format string, args ...interface{}) {
+ 	c.log(fmt.Sprintf(format, args...))
+ 	c.FailNow()
+ }
+ 
++// Skip is equivalent to Log followed by SkipNow.
++func (c *common) Skip(args ...interface{}) {
++	c.log(fmt.Sprintln(args...))
++	c.SkipNow()
++}
++
++// Skipf is equivalent to Logf followed by SkipNow.
++func (c *common) Skipf(format string, args ...interface{}) {
++	c.log(fmt.Sprintf(format, args...))
++	c.SkipNow()
++}
++
++// SkipNow marks the test as having been skipped and stops its execution.
++// Execution will continue at the next test or benchmark. See also FailNow.
++// SkipNow must be called from the goroutine running the test, not from
++// other goroutines created during the test. Calling SkipNow does not stop
++// those other goroutines.
++func (c *common) SkipNow() {
++	c.skip()
++	runtime.Goexit()
++}
++
++func (c *common) skip() {
++	c.mu.Lock()
++	defer c.mu.Unlock()
++	c.skipped = true
++}
++
++// Skipped reports whether the test was skipped.
++func (c *common) Skipped() bool {
++	c.mu.RLock()
++	defer c.mu.RUnlock()
++	return c.skipped
++}
++
+ // Parallel signals that this test is to be run in parallel with (and only with)
+-// other parallel tests in this CPU group.
++// other parallel tests.
+ func (t *T) Parallel() {
+ 	t.signal <- (*T)(nil) // Release main testing loop
+ 	<-t.startParallel     // Wait for serial tests to finish
+@@ -301,6 +343,7 @@
+ 		t.duration = time.Now().Sub(t.start)
+ 		// If the test panicked, print any test output before dying.
+ 		if err := recover(); err != nil {
++			t.Fail()
+ 			t.report()
+ 			panic(err)
+ 		}
+@@ -345,38 +388,6 @@
+ 	}
+ }
+ 
+-// Skip is equivalent to Log() followed by SkipNow().
+-func (t *T) Skip(args ...interface{}) {
+-	t.log(fmt.Sprintln(args...))
+-	t.SkipNow()
+-}
+-
+-// Skipf is equivalent to Logf() followed by SkipNow().
+-func (t *T) Skipf(format string, args ...interface{}) {
+-	t.log(fmt.Sprintf(format, args...))
+-	t.SkipNow()
+-}
+-
+-// SkipNow marks the function as having been skipped and stops its execution.
+-// Execution will continue at the next test or benchmark. See also, t.FailNow.
+-func (t *T) SkipNow() {
+-	t.skip()
+-	runtime.Goexit()
+-}
+-
+-func (t *T) skip() {
+-	t.mu.Lock()
+-	defer t.mu.Unlock()
+-	t.skipped = true
+-}
+-
+-// Skipped reports whether the function was skipped.
+-func (t *T) Skipped() bool {
+-	t.mu.RLock()
+-	defer t.mu.RUnlock()
+-	return t.skipped
+-}
+-
+ func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool) {
+ 	ok = true
+ 	if len(tests) == 0 && !haveExamples {
+diff -Naur gcc-4.8.1.orig/libgo/go/text/template/exec.go gcc-4.8.1/libgo/go/text/template/exec.go
+--- gcc-4.8.1.orig/libgo/go/text/template/exec.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/text/template/exec.go	2013-07-16 01:55:04.520470000 -0500
+@@ -5,6 +5,7 @@
+ package template
+ 
+ import (
++	"bytes"
+ 	"fmt"
+ 	"io"
+ 	"reflect"
+@@ -125,8 +126,23 @@
+ 		wr:   wr,
+ 		vars: []variable{{"$", value}},
+ 	}
++	t.init()
+ 	if t.Tree == nil || t.Root == nil {
+-		state.errorf("%q is an incomplete or empty template", t.name)
++		var b bytes.Buffer
++		for name, tmpl := range t.tmpl {
++			if tmpl.Tree == nil || tmpl.Root == nil {
++				continue
++			}
++			if b.Len() > 0 {
++				b.WriteString(", ")
++			}
++			fmt.Fprintf(&b, "%q", name)
++		}
++		var s string
++		if b.Len() > 0 {
++			s = "; defined templates are: " + b.String()
++		}
++		state.errorf("%q is an incomplete or empty template%s", t.Name(), s)
+ 	}
+ 	state.walk(value, t.Root)
+ 	return
+@@ -603,6 +619,8 @@
+ 		return s.validateType(s.evalVariableNode(dot, arg, nil, zero), typ)
+ 	case *parse.PipeNode:
+ 		return s.validateType(s.evalPipeline(dot, arg), typ)
++	case *parse.IdentifierNode:
++		return s.evalFunction(dot, arg, arg, nil, zero)
+ 	}
+ 	switch typ.Kind() {
+ 	case reflect.Bool:
+diff -Naur gcc-4.8.1.orig/libgo/go/text/template/exec_test.go gcc-4.8.1/libgo/go/text/template/exec_test.go
+--- gcc-4.8.1.orig/libgo/go/text/template/exec_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/text/template/exec_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -499,6 +499,8 @@
+ 	{"bug8b", "{{4|dddArg 3}}", "", tVal, false},
+ 	// A bug was introduced that broke map lookups for lower-case names.
+ 	{"bug9", "{{.cause}}", "neglect", map[string]string{"cause": "neglect"}, true},
++	// Field chain starting with function did not work.
++	{"bug10", "{{mapOfThree.three}}-{{(mapOfThree).three}}", "3-3", 0, true},
+ }
+ 
+ func zeroArgs() string {
+@@ -560,19 +562,24 @@
+ 	return s.String()
+ }
+ 
++func mapOfThree() interface{} {
++	return map[string]int{"three": 3}
++}
++
+ func testExecute(execTests []execTest, template *Template, t *testing.T) {
+ 	b := new(bytes.Buffer)
+ 	funcs := FuncMap{
+-		"add":      add,
+-		"count":    count,
+-		"dddArg":   dddArg,
+-		"echo":     echo,
+-		"makemap":  makemap,
+-		"oneArg":   oneArg,
+-		"typeOf":   typeOf,
+-		"vfunc":    vfunc,
+-		"zeroArgs": zeroArgs,
+-		"stringer": stringer,
++		"add":        add,
++		"count":      count,
++		"dddArg":     dddArg,
++		"echo":       echo,
++		"makemap":    makemap,
++		"mapOfThree": mapOfThree,
++		"oneArg":     oneArg,
++		"stringer":   stringer,
++		"typeOf":     typeOf,
++		"vfunc":      vfunc,
++		"zeroArgs":   zeroArgs,
+ 	}
+ 	for _, test := range execTests {
+ 		var tmpl *Template
+@@ -816,3 +823,40 @@
+ 	// This is issue 3872.
+ 	_ = New("Name").Templates()
+ }
++
++const testTemplates = `{{define "one"}}one{{end}}{{define "two"}}two{{end}}`
++
++func TestMessageForExecuteEmpty(t *testing.T) {
++	// Test a truly empty template.
++	tmpl := New("empty")
++	var b bytes.Buffer
++	err := tmpl.Execute(&b, 0)
++	if err == nil {
++		t.Fatal("expected initial error")
++	}
++	got := err.Error()
++	want := `template: empty: "empty" is an incomplete or empty template`
++	if got != want {
++		t.Errorf("expected error %s got %s", want, got)
++	}
++	// Add a non-empty template to check that the error is helpful.
++	tests, err := New("").Parse(testTemplates)
++	if err != nil {
++		t.Fatal(err)
++	}
++	tmpl.AddParseTree("secondary", tests.Tree)
++	err = tmpl.Execute(&b, 0)
++	if err == nil {
++		t.Fatal("expected second error")
++	}
++	got = err.Error()
++	want = `template: empty: "empty" is an incomplete or empty template; defined templates are: "secondary"`
++	if got != want {
++		t.Errorf("expected error %s got %s", want, got)
++	}
++	// Make sure we can execute the secondary.
++	err = tmpl.ExecuteTemplate(&b, "secondary", 0)
++	if err != nil {
++		t.Fatal(err)
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/text/template/funcs.go gcc-4.8.1/libgo/go/text/template/funcs.go
+--- gcc-4.8.1.orig/libgo/go/text/template/funcs.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/text/template/funcs.go	2013-07-16 01:55:04.520470000 -0500
+@@ -18,7 +18,7 @@
+ // FuncMap is the type of the map defining the mapping from names to functions.
+ // Each function must have either a single return value, or two return values of
+ // which the second has type error. In that case, if the second (error)
+-// argument evaluates to non-nil during execution, execution terminates and
++// return value evaluates to non-nil during execution, execution terminates and
+ // Execute returns that error.
+ type FuncMap map[string]interface{}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/text/template/parse/parse.go gcc-4.8.1/libgo/go/text/template/parse/parse.go
+--- gcc-4.8.1.orig/libgo/go/text/template/parse/parse.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/text/template/parse/parse.go	2013-07-16 01:55:04.520470000 -0500
+@@ -429,7 +429,6 @@
+ 			t.unexpected(token, context)
+ 		}
+ 	}
+-	return
+ }
+ 
+ func (t *Tree) parseControl(context string) (pos Pos, line int, pipe *PipeNode, list, elseList *ListNode) {
+@@ -445,7 +444,6 @@
+ 		if next.Type() != nodeEnd {
+ 			t.errorf("expected end; found %s", next)
+ 		}
+-		elseList = elseList
+ 	}
+ 	return pipe.Position(), line, pipe, list, elseList
+ }
+diff -Naur gcc-4.8.1.orig/libgo/go/time/example_test.go gcc-4.8.1/libgo/go/time/example_test.go
+--- gcc-4.8.1.orig/libgo/go/time/example_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/example_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -58,15 +58,52 @@
+ }
+ 
+ func ExampleTime_Format() {
+-	const format = "Jan 2, 2006 at 3:04pm (MST)"
++	// layout shows by example how the reference time should be represented.
++	const layout = "Jan 2, 2006 at 3:04pm (MST)"
+ 	t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
+-	fmt.Println(t.Format(format))
+-	fmt.Println(t.UTC().Format(format))
++	fmt.Println(t.Format(layout))
++	fmt.Println(t.UTC().Format(layout))
+ 	// Output:
+ 	// Nov 10, 2009 at 3:00pm (PST)
+ 	// Nov 10, 2009 at 11:00pm (UTC)
+ }
+ 
++func ExampleParse() {
++	// longForm shows by example how the reference time would be represented in
++	// the desired layout.
++	const longForm = "Jan 2, 2006 at 3:04pm (MST)"
++	t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
++	fmt.Println(t)
++
++	// shortForm is another way the reference time would be represented
++	// in the desired layout; it has no time zone present.
++	// Note: without explicit zone, returns time in UTC.
++	const shortForm = "2006-Jan-02"
++	t, _ = time.Parse(shortForm, "2013-Feb-03")
++	fmt.Println(t)
++
++	// Output:
++	// 2013-02-03 19:54:00 -0800 PST
++	// 2013-02-03 00:00:00 +0000 UTC
++}
++
++func ExampleParseInLocation() {
++	loc, _ := time.LoadLocation("Europe/Berlin")
++
++	const longForm = "Jan 2, 2006 at 3:04pm (MST)"
++	t, _ := time.ParseInLocation(longForm, "Jul 9, 2012 at 5:02am (CEST)", loc)
++	fmt.Println(t)
++
++	// Note: without explicit zone, returns time in given location.
++	const shortForm = "2006-Jan-02"
++	t, _ = time.ParseInLocation(shortForm, "2012-Jul-09", loc)
++	fmt.Println(t)
++
++	// Output:
++	// 2012-07-09 05:02:00 +0200 CEST
++	// 2012-07-09 00:00:00 +0200 CEST
++}
++
+ func ExampleTime_Round() {
+ 	t := time.Date(0, 0, 0, 12, 15, 30, 918273645, time.UTC)
+ 	round := []time.Duration{
+diff -Naur gcc-4.8.1.orig/libgo/go/time/format.go gcc-4.8.1/libgo/go/time/format.go
+--- gcc-4.8.1.orig/libgo/go/time/format.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/format.go	2013-07-16 01:55:04.520470000 -0500
+@@ -6,15 +6,17 @@
+ 
+ import "errors"
+ 
+-// These are predefined layouts for use in Time.Format.
+-// The standard time used in the layouts is:
++// These are predefined layouts for use in Time.Format and Time.Parse.
++// The reference time used in the layouts is:
+ //	Mon Jan 2 15:04:05 MST 2006
+ // which is Unix time 1136239445. Since MST is GMT-0700,
+-// the standard time can be thought of as
++// the reference time can be thought of as
+ //	01/02 03:04:05PM '06 -0700
+-// To define your own format, write down what the standard time would look
++// To define your own format, write down what the reference time would look
+ // like formatted your way; see the values of constants like ANSIC,
+-// StampMicro or Kitchen for examples.
++// StampMicro or Kitchen for examples. The model is to demonstrate what the
++// reference time looks like so that the Format and Parse methods can apply
++// the same transformation to a general time value.
+ //
+ // Within the format string, an underscore _ represents a space that may be
+ // replaced by a digit if the following number (a day) has two digits; for
+@@ -367,13 +369,16 @@
+ }
+ 
+ // Format returns a textual representation of the time value formatted
+-// according to layout.  The layout defines the format by showing the
+-// representation of the standard time,
++// according to layout, which defines the format by showing how the reference
++// time,
+ //	Mon Jan 2 15:04:05 -0700 MST 2006
+-// which is then used to describe the time to be formatted. Predefined
+-// layouts ANSIC, UnixDate, RFC3339 and others describe standard
+-// representations. For more information about the formats and the
+-// definition of the standard time, see the documentation for ANSIC.
++// would be displayed if it were the value; it serves as an example of the
++// desired output. The same display rules will then be applied to the time
++// value.
++// Predefined layouts ANSIC, UnixDate, RFC3339 and others describe standard
++// and convenient representations of the reference time. For more information
++// about the formats and the definition of the reference time, see the
++// documentation for ANSIC and the other constants defined by this package.
+ func (t Time) Format(layout string) string {
+ 	var (
+ 		name, offset, abs = t.locabs()
+@@ -611,14 +616,14 @@
+ 	for len(prefix) > 0 {
+ 		if prefix[0] == ' ' {
+ 			if len(value) > 0 && value[0] != ' ' {
+-				return "", errBad
++				return value, errBad
+ 			}
+ 			prefix = cutspace(prefix)
+ 			value = cutspace(value)
+ 			continue
+ 		}
+ 		if len(value) == 0 || value[0] != prefix[0] {
+-			return "", errBad
++			return value, errBad
+ 		}
+ 		prefix = prefix[1:]
+ 		value = value[1:]
+@@ -627,13 +632,15 @@
+ }
+ 
+ // Parse parses a formatted string and returns the time value it represents.
+-// The layout defines the format by showing the representation of the
+-// standard time,
++// The layout  defines the format by showing how the reference time,
+ //	Mon Jan 2 15:04:05 -0700 MST 2006
+-// which is then used to describe the string to be parsed. Predefined layouts
+-// ANSIC, UnixDate, RFC3339 and others describe standard representations. For
+-// more information about the formats and the definition of the standard
+-// time, see the documentation for ANSIC.
++// would be interpreted if it were the value; it serves as an example of
++// the input format. The same interpretation will then be made to the
++// input string.
++// Predefined layouts ANSIC, UnixDate, RFC3339 and others describe standard
++// and convenient representations of the reference time. For more information
++// about the formats and the definition of the reference time, see the
++// documentation for ANSIC and the other constants defined by this package.
+ //
+ // Elements omitted from the value are assumed to be zero or, when
+ // zero is impossible, one, so parsing "3:04pm" returns the time
+@@ -641,7 +648,37 @@
+ // 0, this time is before the zero Time).
+ // Years must be in the range 0000..9999. The day of the week is checked
+ // for syntax but it is otherwise ignored.
++//
++// In the absence of a time zone indicator, Parse returns a time in UTC.
++//
++// When parsing a time with a zone offset like -0700, if the offset corresponds
++// to a time zone used by the current location (Local), then Parse uses that
++// location and zone in the returned time. Otherwise it records the time as
++// being in a fabricated location with time fixed at the given zone offset.
++//
++// When parsing a time with a zone abbreviation like MST, if the zone abbreviation
++// has a defined offset in the current location, then that offset is used.
++// The zone abbreviation "UTC" is recognized as UTC regardless of location.
++// If the zone abbreviation is unknown, Parse records the time as being
++// in a fabricated location with the given zone abbreviation and a zero offset.
++// This choice means that such a time can be parse and reformatted with the
++// same layout losslessly, but the exact instant used in the representation will
++// differ by the actual zone offset. To avoid such problems, prefer time layouts
++// that use a numeric zone offset, or use ParseInLocation.
+ func Parse(layout, value string) (Time, error) {
++	return parse(layout, value, UTC, Local)
++}
++
++// ParseInLocation is like Parse but differs in two important ways.
++// First, in the absence of time zone information, Parse interprets a time as UTC;
++// ParseInLocation interprets the time as in the given location.
++// Second, when given a zone offset or abbreviation, Parse tries to match it
++// against the Local location; ParseInLocation uses the given location.
++func ParseInLocation(layout, value string, loc *Location) (Time, error) {
++	return parse(layout, value, loc, loc)
++}
++
++func parse(layout, value string, defaultLocation, local *Location) (Time, error) {
+ 	alayout, avalue := layout, value
+ 	rangeErrString := "" // set if a value is out of range
+ 	amSet := false       // do we need to subtract 12 from the hour for midnight?
+@@ -892,20 +929,19 @@
+ 		hour = 0
+ 	}
+ 
+-	// TODO: be more aggressive checking day?
+ 	if z != nil {
+ 		return Date(year, Month(month), day, hour, min, sec, nsec, z), nil
+ 	}
+ 
+-	t := Date(year, Month(month), day, hour, min, sec, nsec, UTC)
+ 	if zoneOffset != -1 {
++		t := Date(year, Month(month), day, hour, min, sec, nsec, UTC)
+ 		t.sec -= int64(zoneOffset)
+ 
+ 		// Look for local zone with the given offset.
+ 		// If that zone was in effect at the given time, use it.
+-		name, offset, _, _, _ := Local.lookup(t.sec + internalToUnix)
++		name, offset, _, _, _ := local.lookup(t.sec + internalToUnix)
+ 		if offset == zoneOffset && (zoneName == "" || name == zoneName) {
+-			t.loc = Local
++			t.loc = local
+ 			return t, nil
+ 		}
+ 
+@@ -915,16 +951,14 @@
+ 	}
+ 
+ 	if zoneName != "" {
++		t := Date(year, Month(month), day, hour, min, sec, nsec, UTC)
+ 		// Look for local zone with the given offset.
+ 		// If that zone was in effect at the given time, use it.
+-		offset, _, ok := Local.lookupName(zoneName)
++		offset, _, ok := local.lookupName(zoneName, t.sec+internalToUnix)
+ 		if ok {
+-			name, off, _, _, _ := Local.lookup(t.sec + internalToUnix - int64(offset))
+-			if name == zoneName && off == offset {
+-				t.sec -= int64(offset)
+-				t.loc = Local
+-				return t, nil
+-			}
++			t.sec -= int64(offset)
++			t.loc = local
++			return t, nil
+ 		}
+ 
+ 		// Otherwise, create fake zone with unknown offset.
+@@ -932,8 +966,8 @@
+ 		return t, nil
+ 	}
+ 
+-	// Otherwise, fall back to UTC.
+-	return t, nil
++	// Otherwise, fall back to default.
++	return Date(year, Month(month), day, hour, min, sec, nsec, defaultLocation), nil
+ }
+ 
+ func parseNanoseconds(value string, nbytes int) (ns int, rangeErrString string, err error) {
+diff -Naur gcc-4.8.1.orig/libgo/go/time/sleep.go gcc-4.8.1/libgo/go/time/sleep.go
+--- gcc-4.8.1.orig/libgo/go/time/sleep.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/sleep.go	2013-07-16 01:55:04.520470000 -0500
+@@ -18,10 +18,25 @@
+ 	i      int32
+ 	when   int64
+ 	period int64
+-	f      func(int64, interface{})
++	f      func(int64, interface{}) // NOTE: must not be closure
+ 	arg    interface{}
+ }
+ 
++// when is a helper function for setting the 'when' field of a runtimeTimer.
++// It returns what the time will be, in nanoseconds, Duration d in the future.
++// If d is negative, it is ignored.  If the returned value would be less than
++// zero because of an overflow, MaxInt64 is returned.
++func when(d Duration) int64 {
++	if d <= 0 {
++		return nano()
++	}
++	t := nano() + int64(d)
++	if t < 0 {
++		t = 1<<63 - 1 // math.MaxInt64
++	}
++	return t
++}
++
+ func startTimer(*runtimeTimer)
+ func stopTimer(*runtimeTimer) bool
+ 
+@@ -49,7 +64,7 @@
+ 	t := &Timer{
+ 		C: c,
+ 		r: runtimeTimer{
+-			when: nano() + int64(d),
++			when: when(d),
+ 			f:    sendTime,
+ 			arg:  c,
+ 		},
+@@ -62,9 +77,9 @@
+ // It returns true if the timer had been active, false if the timer had
+ // expired or been stopped.
+ func (t *Timer) Reset(d Duration) bool {
+-	when := nano() + int64(d)
++	w := when(d)
+ 	active := stopTimer(&t.r)
+-	t.r.when = when
++	t.r.when = w
+ 	startTimer(&t.r)
+ 	return active
+ }
+@@ -94,7 +109,7 @@
+ func AfterFunc(d Duration, f func()) *Timer {
+ 	t := &Timer{
+ 		r: runtimeTimer{
+-			when: nano() + int64(d),
++			when: when(d),
+ 			f:    goFunc,
+ 			arg:  f,
+ 		},
+diff -Naur gcc-4.8.1.orig/libgo/go/time/sleep_test.go gcc-4.8.1/libgo/go/time/sleep_test.go
+--- gcc-4.8.1.orig/libgo/go/time/sleep_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/sleep_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -60,10 +60,11 @@
+ 			Sleep(Nanosecond)
+ 		}
+ 	}()
+-	c := Tick(1)
++	ticker := NewTicker(1)
+ 	for i := 0; i < 100; i++ {
+-		<-c
++		<-ticker.C
+ 	}
++	ticker.Stop()
+ 	atomic.StoreUint32(&stop, 1)
+ }
+ 
+@@ -294,3 +295,23 @@
+ 	}
+ 	t.Error(err)
+ }
++
++// Test that sleeping for an interval so large it overflows does not
++// result in a short sleep duration.
++func TestOverflowSleep(t *testing.T) {
++	const timeout = 25 * Millisecond
++	const big = Duration(int64(1<<63 - 1))
++	select {
++	case <-After(big):
++		t.Fatalf("big timeout fired")
++	case <-After(timeout):
++		// OK
++	}
++	const neg = Duration(-1 << 63)
++	select {
++	case <-After(neg):
++		// OK
++	case <-After(timeout):
++		t.Fatalf("negative timeout didn't fire")
++	}
++}
+diff -Naur gcc-4.8.1.orig/libgo/go/time/time_test.go gcc-4.8.1/libgo/go/time/time_test.go
+--- gcc-4.8.1.orig/libgo/go/time/time_test.go	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/time_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -479,6 +479,7 @@
+ 	{"RubyDate", RubyDate, "Thu Feb 04 21:00:57 -0800 2010", true, true, 1, 0},
+ 	{"RFC850", RFC850, "Thursday, 04-Feb-10 21:00:57 PST", true, true, 1, 0},
+ 	{"RFC1123", RFC1123, "Thu, 04 Feb 2010 21:00:57 PST", true, true, 1, 0},
++	{"RFC1123", RFC1123, "Thu, 04 Feb 2010 22:00:57 PDT", true, true, 1, 0},
+ 	{"RFC1123Z", RFC1123Z, "Thu, 04 Feb 2010 21:00:57 -0800", true, true, 1, 0},
+ 	{"RFC3339", RFC3339, "2010-02-04T21:00:57-08:00", true, false, 1, 0},
+ 	{"custom: \"2006-01-02 15:04:05-07\"", "2006-01-02 15:04:05-07", "2010-02-04 21:00:57-08", true, false, 1, 0},
+@@ -534,6 +535,42 @@
+ 	}
+ }
+ 
++func TestParseInSydney(t *testing.T) {
++	loc, err := LoadLocation("Australia/Sydney")
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	// Check that Parse (and ParseInLocation) understand
++	// that Feb EST and Aug EST are different time zones in Sydney
++	// even though both are called EST.
++	t1, err := ParseInLocation("Jan 02 2006 MST", "Feb 01 2013 EST", loc)
++	if err != nil {
++		t.Fatal(err)
++	}
++	t2 := Date(2013, February, 1, 00, 00, 00, 0, loc)
++	if t1 != t2 {
++		t.Fatalf("ParseInLocation(Feb 01 2013 EST, Sydney) = %v, want %v", t1, t2)
++	}
++	_, offset := t1.Zone()
++	if offset != 11*60*60 {
++		t.Fatalf("ParseInLocation(Feb 01 2013 EST, Sydney).Zone = _, %d, want _, %d", offset, 11*60*60)
++	}
++
++	t1, err = ParseInLocation("Jan 02 2006 MST", "Aug 01 2013 EST", loc)
++	if err != nil {
++		t.Fatal(err)
++	}
++	t2 = Date(2013, August, 1, 00, 00, 00, 0, loc)
++	if t1 != t2 {
++		t.Fatalf("ParseInLocation(Aug 01 2013 EST, Sydney) = %v, want %v", t1, t2)
++	}
++	_, offset = t1.Zone()
++	if offset != 10*60*60 {
++		t.Fatalf("ParseInLocation(Aug 01 2013 EST, Sydney).Zone = _, %d, want _, %d", offset, 10*60*60)
++	}
++}
++
+ var rubyTests = []ParseTest{
+ 	{"RubyDate", RubyDate, "Thu Feb 04 21:00:57 -0800 2010", true, true, 1, 0},
+ 	// Ignore the time zone in the test. If it parses, it'll be OK.
+@@ -640,6 +677,11 @@
+ 	// issue 4502. StampNano requires exactly 9 digits of precision.
+ 	{StampNano, "Dec  7 11:22:01.000000", `cannot parse ".000000" as ".000000000"`},
+ 	{StampNano, "Dec  7 11:22:01.0000000000", "extra text: 0"},
++	// issue 4493. Helpful errors.
++	{RFC3339, "2006-01-02T15:04:05Z07:00", `parsing time "2006-01-02T15:04:05Z07:00": extra text: 07:00`},
++	{RFC3339, "2006-01-02T15:04_abc", `parsing time "2006-01-02T15:04_abc" as "2006-01-02T15:04:05Z07:00": cannot parse "_abc" as ":"`},
++	{RFC3339, "2006-01-02T15:04:05_abc", `parsing time "2006-01-02T15:04:05_abc" as "2006-01-02T15:04:05Z07:00": cannot parse "_abc" as "Z07:00"`},
++	{RFC3339, "2006-01-02T15:04:05Z_abc", `parsing time "2006-01-02T15:04:05Z_abc": extra text: _abc`},
+ }
+ 
+ func TestParseErrors(t *testing.T) {
+@@ -1258,23 +1300,33 @@
+ }
+ 
+ func TestCountMallocs(t *testing.T) {
+-	defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1))
++	if runtime.GOMAXPROCS(0) > 1 {
++		t.Skip("skipping; GOMAXPROCS>1")
++	}
+ 	for _, mt := range mallocTest {
+-		const N = 100
+-		memstats := new(runtime.MemStats)
+-		runtime.ReadMemStats(memstats)
+-		mallocs := 0 - memstats.Mallocs
+-		for i := 0; i < N; i++ {
+-			mt.fn()
+-		}
+-		runtime.ReadMemStats(memstats)
+-		mallocs += memstats.Mallocs
+-		if mallocs/N > uint64(mt.count) {
+-			t.Errorf("%s: expected %d mallocs, got %d", mt.desc, mt.count, mallocs/N)
++		allocs := int(testing.AllocsPerRun(100, mt.fn))
++		if allocs > mt.count {
++			t.Errorf("%s: %d allocs, want %d", mt.desc, allocs, mt.count)
+ 		}
+ 	}
+ }
+ 
++func TestLoadFixed(t *testing.T) {
++	// Issue 4064: handle locations without any zone transitions.
++	loc, err := LoadLocation("Etc/GMT+1")
++	if err != nil {
++		t.Fatal(err)
++	}
++
++	// The tzdata name Etc/GMT+1 uses "east is negative",
++	// but Go and most other systems use "east is positive".
++	// So GMT+1 corresponds to -3600 in the Go zone, not +3600.
++	name, offset := Now().In(loc).Zone()
++	if name != "GMT+1" || offset != -1*60*60 {
++		t.Errorf("Now().In(loc).Zone() = %q, %d, want %q, %d", name, offset, "GMT+1", -1*60*60)
++	}
++}
++
+ func BenchmarkNow(b *testing.B) {
+ 	for i := 0; i < b.N; i++ {
+ 		t = Now()
+diff -Naur gcc-4.8.1.orig/libgo/go/time/zoneinfo.go gcc-4.8.1/libgo/go/time/zoneinfo.go
+--- gcc-4.8.1.orig/libgo/go/time/zoneinfo.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/time/zoneinfo.go	2013-07-16 01:55:04.520470000 -0500
+@@ -145,15 +145,36 @@
+ }
+ 
+ // lookupName returns information about the time zone with
+-// the given name (such as "EST").
+-func (l *Location) lookupName(name string) (offset int, isDST bool, ok bool) {
++// the given name (such as "EST") at the given pseudo-Unix time
++// (what the given time of day would be in UTC).
++func (l *Location) lookupName(name string, unix int64) (offset int, isDST bool, ok bool) {
+ 	l = l.get()
++
++	// First try for a zone with the right name that was actually
++	// in effect at the given time. (In Sydney, Australia, both standard
++	// and daylight-savings time are abbreviated "EST". Using the
++	// offset helps us pick the right one for the given time.
++	// It's not perfect: during the backward transition we might pick
++	// either one.)
++	for i := range l.zone {
++		zone := &l.zone[i]
++		if zone.name == name {
++			nam, offset, isDST, _, _ := l.lookup(unix - int64(zone.offset))
++			if nam == zone.name {
++				return offset, isDST, true
++			}
++		}
++	}
++
++	// Otherwise fall back to an ordinary name match.
+ 	for i := range l.zone {
+ 		zone := &l.zone[i]
+ 		if zone.name == name {
+ 			return zone.offset, zone.isDST, true
+ 		}
+ 	}
++
++	// Otherwise, give up.
+ 	return
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/time/zoneinfo_read.go gcc-4.8.1/libgo/go/time/zoneinfo_read.go
+--- gcc-4.8.1.orig/libgo/go/time/zoneinfo_read.go	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/go/time/zoneinfo_read.go	2013-07-16 01:55:04.520470000 -0500
+@@ -174,6 +174,12 @@
+ 		}
+ 	}
+ 
++	if len(tx) == 0 {
++		// Build fake transition to cover all time.
++		// This happens in fixed locations like "Etc/GMT0".
++		tx = append(tx, zoneTrans{when: -1 << 63, index: 0})
++	}
++
+ 	// Committed to succeed.
+ 	l = &Location{zone: zone, tx: tx}
+ 
+diff -Naur gcc-4.8.1.orig/libgo/go/unicode/letter.go gcc-4.8.1/libgo/go/unicode/letter.go
+--- gcc-4.8.1.orig/libgo/go/unicode/letter.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/unicode/letter.go	2013-07-16 01:55:04.520470000 -0500
+@@ -151,7 +151,7 @@
+ 	return false
+ }
+ 
+-// Is tests whether rune is in the specified table of ranges.
++// Is reports whether the rune is in the specified table of ranges.
+ func Is(rangeTab *RangeTable, r rune) bool {
+ 	r16 := rangeTab.R16
+ 	if len(r16) > 0 && r <= rune(r16[len(r16)-1].Hi) {
+diff -Naur gcc-4.8.1.orig/libgo/go/unicode/tables.go gcc-4.8.1/libgo/go/unicode/tables.go
+--- gcc-4.8.1.orig/libgo/go/unicode/tables.go	2012-11-21 01:03:38.000000000 -0600
++++ gcc-4.8.1/libgo/go/unicode/tables.go	2013-07-16 01:55:04.520470000 -0500
+@@ -2864,7 +2864,7 @@
+ 	Lo     = _Lo // Lo is the set of Unicode characters in category Lo.
+ 	Lower  = _Ll // Lower is the set of Unicode lower case letters.
+ 	Ll     = _Ll // Ll is the set of Unicode characters in category Ll.
+-	Mark   = _M  // Mark/M is the set of Unicode mark characters, category  M.
++	Mark   = _M  // Mark/M is the set of Unicode mark characters, category M.
+ 	M      = _M
+ 	Mc     = _Mc // Mc is the set of Unicode characters in category Mc.
+ 	Me     = _Me // Me is the set of Unicode characters in category Me.
+diff -Naur gcc-4.8.1.orig/libgo/go/unicode/utf8/utf8_test.go gcc-4.8.1/libgo/go/unicode/utf8/utf8_test.go
+--- gcc-4.8.1.orig/libgo/go/unicode/utf8/utf8_test.go	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/go/unicode/utf8/utf8_test.go	2013-07-16 01:55:04.520470000 -0500
+@@ -124,7 +124,7 @@
+ 		s := m.str
+ 		r, size = DecodeRuneInString(s)
+ 		if r != m.r || size != len(b) {
+-			t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", s, r, size, m.r, len(b))
++			t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, m.r, len(b))
+ 		}
+ 
+ 		// there's an extra byte that bytes left behind - make sure trailing byte works
+@@ -164,7 +164,7 @@
+ 			t.Errorf("DecodeRune(%q) = %#04x, %d want %#04x, %d", b, r, size, RuneError, 1)
+ 		}
+ 		s = string(b)
+-		r, size = DecodeRune(b)
++		r, size = DecodeRuneInString(s)
+ 		if r != RuneError || size != 1 {
+ 			t.Errorf("DecodeRuneInString(%q) = %#04x, %d want %#04x, %d", s, r, size, RuneError, 1)
+ 		}
+@@ -182,7 +182,7 @@
+ 		s := m.str
+ 		r, size = DecodeRuneInString(s)
+ 		if r != RuneError || size != 1 {
+-			t.Errorf("DecodeRune(%q) = %x, %d want %x, %d", b, r, size, RuneError, 1)
++			t.Errorf("DecodeRuneInString(%q) = %x, %d want %x, %d", b, r, size, RuneError, 1)
+ 		}
+ 	}
+ }
+diff -Naur gcc-4.8.1.orig/libgo/Makefile.am gcc-4.8.1/libgo/Makefile.am
+--- gcc-4.8.1.orig/libgo/Makefile.am	2013-02-20 14:04:36.000000000 -0600
++++ gcc-4.8.1/libgo/Makefile.am	2013-07-16 01:55:04.520470000 -0500
+@@ -211,40 +211,11 @@
+ 	encoding/pem.gox \
+ 	encoding/xml.gox
+ 
+-if LIBGO_IS_LINUX
+-# exp_inotify_gox = exp/inotify.gox
+-exp_inotify_gox =
+-else
+-exp_inotify_gox =
+-endif
+-
+ toolexeclibgoexpdir = $(toolexeclibgodir)/exp
+ 
+ toolexeclibgoexp_DATA = \
+-	exp/cookiejar.gox \
+-	exp/ebnf.gox \
+-	exp/html.gox \
+-	$(exp_inotify_gox) \
+-	exp/norm.gox \
+ 	exp/proxy.gox \
+-	exp/ssa.gox \
+-	exp/terminal.gox \
+-	exp/utf8string.gox
+-
+-toolexeclibgoexphtmldir = $(toolexeclibgoexpdir)/html
+-
+-toolexeclibgoexphtml_DATA = \
+-	exp/html/atom.gox
+-
+-toolexeclibgoexplocaledir = $(toolexeclibgoexpdir)/locale
+-
+-toolexeclibgoexplocale_DATA = \
+-	exp/locale/collate.gox
+-
+-toolexeclibgoexplocalecollatedir = $(toolexeclibgoexplocaledir)/collate
+-
+-toolexeclibgoexplocalecollate_DATA = \
+-	exp/locale/collate/build.gox
++	exp/terminal.gox
+ 
+ toolexeclibgogodir = $(toolexeclibgodir)/go
+ 
+@@ -256,8 +227,7 @@
+ 	go/parser.gox \
+ 	go/printer.gox \
+ 	go/scanner.gox \
+-	go/token.gox \
+-	go/types.gox
++	go/token.gox
+ 
+ toolexeclibgohashdir = $(toolexeclibgodir)/hash
+ 
+@@ -322,6 +292,7 @@
+ 
+ toolexeclibgonethttp_DATA = \
+ 	net/http/cgi.gox \
++	net/http/cookiejar.gox \
+ 	net/http/fcgi.gox \
+ 	net/http/httptest.gox \
+ 	net/http/httputil.gox \
+@@ -335,7 +306,6 @@
+ toolexeclibgoolddir = $(toolexeclibgodir)/old
+ 
+ toolexeclibgoold_DATA = \
+-	old/netchan.gox \
+ 	old/regexp.gox \
+ 	old/template.gox
+ 
+@@ -435,6 +405,16 @@
+ endif
+ endif
+ 
++if LIBGO_IS_LINUX
++runtime_netpoll_files = netpoll.c runtime/netpoll_epoll.c
++else
++if LIBGO_IS_DARWIN
++runtime_netpoll_files = netpoll.c runtime/netpoll_kqueue.c
++else
++runtime_netpoll_files = runtime/netpoll_stub.c
++endif
++endif
++
+ runtime_files = \
+ 	runtime/go-append.c \
+ 	runtime/go-assert.c \
+@@ -487,7 +467,6 @@
+ 	runtime/go-strplus.c \
+ 	runtime/go-strslice.c \
+ 	runtime/go-traceback.c \
+-	runtime/go-trampoline.c \
+ 	runtime/go-type-complex.c \
+ 	runtime/go-type-eface.c \
+ 	runtime/go-type-error.c \
+@@ -514,6 +493,7 @@
+ 	runtime/mgc0.c \
+ 	runtime/mheap.c \
+ 	runtime/msize.c \
++	$(runtime_netpoll_files) \
+ 	runtime/panic.c \
+ 	runtime/parfor.c \
+ 	runtime/print.c \
+@@ -549,6 +529,10 @@
+ 	./goc2c $< > $@.tmp
+ 	mv -f $@.tmp $@
+ 
++netpoll.c: $(srcdir)/runtime/netpoll.goc goc2c
++	./goc2c $< > $@.tmp
++	mv -f $@.tmp $@
++
+ reflect.c: $(srcdir)/runtime/reflect.goc goc2c
+ 	./goc2c $< > $@.tmp
+ 	mv -f $@.tmp $@
+@@ -574,7 +558,8 @@
+ 	mv -f $@.tmp $@
+ 
+ go_bufio_files = \
+-	go/bufio/bufio.go
++	go/bufio/bufio.go \
++	go/bufio/scan.go
+ 
+ go_bytes_files = \
+ 	go/bytes/buffer.go \
+@@ -679,17 +664,17 @@
+ go_net_newpollserver_file = go/net/newpollserver_rtems.go
+ else # !LIBGO_IS_RTEMS
+ if LIBGO_IS_LINUX
+-go_net_fd_os_file = go/net/fd_linux.go
+-go_net_newpollserver_file = go/net/newpollserver_unix.go
++go_net_fd_os_file =
++go_net_newpollserver_file =
+ else # !LIBGO_IS_LINUX && !LIBGO_IS_RTEMS
+ if LIBGO_IS_NETBSD
+ go_net_fd_os_file = go/net/fd_bsd.go
+-go_net_newpollserver_file = go/net/newpollserver_unix.go
++go_net_newpollserver_file =
+ else # !LIBGO_IS_NETBSD && !LIBGO_IS_LINUX && !LIBGO_IS_RTEMS
+ # By default use select with pipes.  Most systems should have
+ # something better.
+ go_net_fd_os_file = go/net/fd_select.go
+-go_net_newpollserver_file = go/net/newpollserver_unix.go
++go_net_newpollserver_file =
+ endif # !LIBGO_IS_NETBSD
+ endif # !LIBGO_IS_LINUX
+ endif # !LIBGO_IS_RTEMS
+@@ -760,6 +745,16 @@
+ go_net_cloexec_file = go/net/sys_cloexec.go
+ endif
+ 
++if LIBGO_IS_LINUX
++go_net_poll_file = go/net/fd_poll_runtime.go
++else
++if LIBGO_IS_DARWIN
++go_net_poll_file = go/net/fd_poll_runtime.go
++else
++go_net_poll_file = go/net/fd_poll_unix.go
++endif
++endif
++
+ go_net_files = \
+ 	go/net/cgo_unix.go \
+ 	$(go_net_cgo_file) \
+@@ -787,10 +782,12 @@
+ 	go/net/net.go \
+ 	go/net/parse.go \
+ 	go/net/pipe.go \
++	$(go_net_poll_file) \
+ 	go/net/port.go \
+ 	go/net/port_unix.go \
+ 	$(go_net_sendfile_file) \
+ 	go/net/sock_posix.go \
++	go/net/sock_unix.go \
+ 	$(go_net_sock_file) \
+ 	go/net/sockopt_posix.go \
+ 	$(go_net_sockopt_file) \
+@@ -891,7 +888,8 @@
+ 	$(go_os_stat_file) \
+ 	go/os/str.go \
+ 	$(go_os_sys_file) \
+-	go/os/types.go
++	go/os/types.go \
++	go/os/types_notwin.go
+ 
+ go_path_files = \
+ 	go/path/match.go \
+@@ -980,6 +978,7 @@
+ 	go/log/syslog/syslog_c.c
+ 
+ go_testing_files = \
++	go/testing/allocs.go \
+ 	go/testing/benchmark.go \
+ 	go/testing/example.go \
+ 	go/testing/testing.go
+@@ -1102,7 +1101,8 @@
+ 	go/crypto/rand/rand_unix.go \
+ 	go/crypto/rand/util.go
+ go_crypto_rc4_files = \
+-	go/crypto/rc4/rc4.go
++	go/crypto/rc4/rc4.go \
++	go/crypto/rc4/rc4_ref.go
+ go_crypto_rsa_files = \
+ 	go/crypto/rsa/pkcs1v15.go \
+ 	go/crypto/rsa/rsa.go
+@@ -1213,73 +1213,14 @@
+ 	go/encoding/xml/typeinfo.go \
+ 	go/encoding/xml/xml.go
+ 
+-go_exp_cookiejar_files = \
+-	go/exp/cookiejar/jar.go \
+-	go/exp/cookiejar/storage.go
+-go_exp_ebnf_files = \
+-	go/exp/ebnf/ebnf.go \
+-	go/exp/ebnf/parser.go
+-go_exp_html_files = \
+-	go/exp/html/const.go \
+-	go/exp/html/doc.go \
+-	go/exp/html/doctype.go \
+-	go/exp/html/entity.go \
+-	go/exp/html/escape.go \
+-	go/exp/html/foreign.go \
+-	go/exp/html/node.go \
+-	go/exp/html/parse.go \
+-	go/exp/html/render.go \
+-	go/exp/html/token.go
+-go_exp_html_atom_files = \
+-	go/exp/html/atom/atom.go \
+-	go/exp/html/atom/table.go
+-go_exp_inotify_files = \
+-	go/exp/inotify/inotify_linux.go
+-go_exp_locale_collate_files = \
+-	go/exp/locale/collate/colelem.go \
+-	go/exp/locale/collate/collate.go \
+-	go/exp/locale/collate/colltab.go \
+-	go/exp/locale/collate/contract.go \
+-	go/exp/locale/collate/export.go \
+-	go/exp/locale/collate/sort.go \
+-	go/exp/locale/collate/table.go \
+-	go/exp/locale/collate/tables.go \
+-	go/exp/locale/collate/trie.go
+-go_exp_locale_collate_build_files = \
+-	go/exp/locale/collate/build/builder.go \
+-	go/exp/locale/collate/build/colelem.go \
+-	go/exp/locale/collate/build/contract.go \
+-	go/exp/locale/collate/build/order.go \
+-	go/exp/locale/collate/build/table.go \
+-	go/exp/locale/collate/build/trie.go
+-go_exp_norm_files = \
+-	go/exp/norm/composition.go \
+-	go/exp/norm/forminfo.go \
+-	go/exp/norm/input.go \
+-	go/exp/norm/iter.go \
+-	go/exp/norm/normalize.go \
+-	go/exp/norm/readwriter.go \
+-	go/exp/norm/tables.go \
+-	go/exp/norm/trie.go
+ go_exp_proxy_files = \
+ 	go/exp/proxy/direct.go \
+ 	go/exp/proxy/per_host.go \
+ 	go/exp/proxy/proxy.go \
+ 	go/exp/proxy/socks5.go
+-go_exp_ssa_files = \
+-	go/exp/ssa/blockopt.go \
+-	go/exp/ssa/doc.go \
+-	go/exp/ssa/func.go \
+-	go/exp/ssa/sanity.go \
+-	go/exp/ssa/ssa.go \
+-	go/exp/ssa/literal.go \
+-	go/exp/ssa/print.go \
+-	go/exp/ssa/util.go
+ go_exp_terminal_files = \
+ 	go/exp/terminal/terminal.go \
+ 	go/exp/terminal/util.go
+-go_exp_utf8string_files = \
+-	go/exp/utf8string/string.go
+ 
+ go_go_ast_files = \
+ 	go/go/ast/ast.go \
+@@ -1318,24 +1259,6 @@
+ 	go/go/token/position.go \
+ 	go/go/token/serialize.go \
+ 	go/go/token/token.go
+-go_go_types_files = \
+-	go/go/types/api.go \
+-	go/go/types/builtins.go \
+-	go/go/types/check.go \
+-	go/go/types/const.go \
+-	go/go/types/conversions.go \
+-	go/go/types/errors.go \
+-	go/go/types/exportdata.go \
+-	go/go/types/expr.go \
+-	go/go/types/gcimporter.go \
+-	go/go/types/objects.go \
+-	go/go/types/operand.go \
+-	go/go/types/predicates.go \
+-	go/go/types/resolve.go \
+-	go/go/types/scope.go \
+-	go/go/types/stmt.go \
+-	go/go/types/types.go \
+-	go/go/types/universe.go
+ 
+ go_hash_adler32_files = \
+ 	go/hash/adler32/adler32.go
+@@ -1459,6 +1382,9 @@
+ go_net_http_cgi_files = \
+ 	go/net/http/cgi/child.go \
+ 	go/net/http/cgi/host.go
++go_net_http_cookiejar_files = \
++	go/net/http/cookiejar/jar.go \
++	go/net/http/cookiejar/punycode.go
+ go_net_http_fcgi_files = \
+ 	go/net/http/fcgi/child.go \
+ 	go/net/http/fcgi/fcgi.go
+@@ -1474,10 +1400,6 @@
+ 	go/net/http/httputil/reverseproxy.go
+ 
+ 
+-go_old_netchan_files = \
+-	go/old/netchan/common.go \
+-	go/old/netchan/export.go \
+-	go/old/netchan/import.go
+ go_old_regexp_files = \
+ 	go/old/regexp/regexp.go
+ go_old_template_files = \
+@@ -1519,6 +1441,7 @@
+ 	go/net/rpc/jsonrpc/server.go
+ 
+ go_runtime_debug_files = \
++	go/runtime/debug/garbage.go \
+ 	go/runtime/debug/stack.go
+ go_runtime_pprof_files = \
+ 	go/runtime/pprof/pprof.go
+@@ -1897,17 +1820,8 @@
+ 	encoding/json.lo \
+ 	encoding/pem.lo \
+ 	encoding/xml.lo \
+-	exp/cookiejar.lo \
+-	exp/ebnf.lo \
+-	exp/html.lo \
+-	exp/html/atom.lo \
+-	exp/locale/collate.lo \
+-	exp/locale/collate/build.lo \
+-	exp/norm.lo \
+ 	exp/proxy.lo \
+-	exp/ssa.lo \
+ 	exp/terminal.lo \
+-	exp/utf8string.lo \
+ 	html/template.lo \
+ 	go/ast.lo \
+ 	go/build.lo \
+@@ -1917,12 +1831,12 @@
+ 	go/printer.lo \
+ 	go/scanner.lo \
+ 	go/token.lo \
+-	go/types.lo \
+ 	hash/adler32.lo \
+ 	hash/crc32.lo \
+ 	hash/crc64.lo \
+ 	hash/fnv.lo \
+ 	net/http/cgi.lo \
++	net/http/cookiejar.lo \
+ 	net/http/fcgi.lo \
+ 	net/http/httptest.lo \
+ 	net/http/httputil.lo \
+@@ -1946,7 +1860,6 @@
+ 	net/smtp.lo \
+ 	net/textproto.lo \
+ 	net/url.lo \
+-	old/netchan.lo \
+ 	old/regexp.lo \
+ 	old/template.lo \
+ 	os/exec.lo \
+@@ -2731,69 +2644,6 @@
+ 	@$(CHECK)
+ .PHONY: encoding/xml/check
+ 
+-@go_include@ exp/cookiejar.lo.dep
+-exp/cookiejar.lo.dep: $(go_exp_cookiejar_files)
+-	$(BUILDDEPS)
+-exp/cookiejar.lo: $(go_exp_cookiejar_files)
+-	$(BUILDPACKAGE)
+-exp/cookiejar/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/cookiejar/check
+-
+-@go_include@ exp/ebnf.lo.dep
+-exp/ebnf.lo.dep: $(go_exp_ebnf_files)
+-	$(BUILDDEPS)
+-exp/ebnf.lo: $(go_exp_ebnf_files)
+-	$(BUILDPACKAGE)
+-exp/ebnf/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/ebnf/check
+-
+-@go_include@ exp/html.lo.dep
+-exp/html.lo.dep: $(go_exp_html_files)
+-	$(BUILDDEPS)
+-exp/html.lo: $(go_exp_html_files)
+-	$(BUILDPACKAGE)
+-exp/html/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/html/check
+-
+-@go_include@ exp/html/atom.lo.dep
+-exp/html/atom.lo.dep: $(go_exp_html_atom_files)
+-	$(BUILDDEPS)
+-exp/html/atom.lo: $(go_exp_html_atom_files)
+-	$(BUILDPACKAGE)
+-exp/html/atom/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/html/atom/check
+-
+-@go_include@ exp/locale/collate.lo.dep
+-exp/locale/collate.lo.dep: $(go_exp_locale_collate_files)
+-	$(BUILDDEPS)
+-exp/locale/collate.lo: $(go_exp_locale_collate_files)
+-	$(BUILDPACKAGE)
+-exp/locale/collate/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/locale/collate/check
+-
+-@go_include@ exp/locale/collate/build.lo.dep
+-exp/locale/collate/build.lo.dep: $(go_exp_locale_collate_build_files)
+-	$(BUILDDEPS)
+-exp/locale/collate/build.lo: $(go_exp_locale_collate_build_files)
+-	$(BUILDPACKAGE)
+-exp/locale/collate/build/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/locale/collate/build/check
+-
+-@go_include@ exp/norm.lo.dep
+-exp/norm.lo.dep: $(go_exp_norm_files)
+-	$(BUILDDEPS)
+-exp/norm.lo: $(go_exp_norm_files)
+-	$(BUILDPACKAGE)
+-exp/norm/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/norm/check
+-
+ @go_include@ exp/proxy.lo.dep
+ exp/proxy.lo.dep: $(go_exp_proxy_files)
+ 	$(BUILDDEPS)
+@@ -2803,15 +2653,6 @@
+ 	@$(CHECK)
+ .PHONY: exp/proxy/check
+ 
+-@go_include@ exp/ssa.lo.dep
+-exp/ssa.lo.dep: $(go_exp_ssa_files)
+-	$(BUILDDEPS)
+-exp/ssa.lo: $(go_exp_ssa_files)
+-	$(BUILDPACKAGE)
+-exp/ssa/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/ssa/check
+-
+ @go_include@ exp/terminal.lo.dep
+ exp/terminal.lo.dep: $(go_exp_terminal_files)
+ 	$(BUILDDEPS)
+@@ -2821,24 +2662,6 @@
+ 	@$(CHECK)
+ .PHONY: exp/terminal/check
+ 
+-@go_include@ exp/utf8string.lo.dep
+-exp/utf8string.lo.dep: $(go_exp_utf8string_files)
+-	$(BUILDDEPS)
+-exp/utf8string.lo: $(go_exp_utf8string_files)
+-	$(BUILDPACKAGE)
+-exp/utf8string/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/utf8string/check
+-
+-@go_include@ exp/inotify.lo.dep
+-exp/inotify.lo.dep: $(go_exp_inotify_files)
+-	$(BUILDDEPS)
+-exp/inotify.lo: $(go_exp_inotify_files)
+-	$(BUILDPACKAGE)
+-exp/inotify/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/inotify/check
+-
+ @go_include@ html/template.lo.dep
+ html/template.lo.dep: $(go_html_template_files)
+ 	$(BUILDDEPS)
+@@ -2929,15 +2752,6 @@
+ 	@$(CHECK)
+ .PHONY: go/token/check
+ 
+-@go_include@ go/types.lo.dep
+-go/types.lo.dep: $(go_go_types_files)
+-	$(BUILDDEPS)
+-go/types.lo: $(go_go_types_files)
+-	$(BUILDPACKAGE)
+-go/types/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: go/types/check
+-
+ @go_include@ hash/adler32.lo.dep
+ hash/adler32.lo.dep: $(go_hash_adler32_files)
+ 	$(BUILDDEPS)
+@@ -3148,6 +2962,15 @@
+ 	@$(CHECK)
+ .PHONY: net/http/cgi/check
+ 
++@go_include@ net/http/cookiejar.lo.dep
++net/http/cookiejar.lo.dep: $(go_net_http_cookiejar_files)
++	$(BUILDDEPS)
++net/http/cookiejar.lo: $(go_net_http_cookiejar_files)
++	$(BUILDPACKAGE)
++net/http/cookiejar/check: $(CHECK_DEPS)
++	@$(CHECK)
++.PHONY: net/http/cookiejar/check
++
+ @go_include@ net/http/fcgi.lo.dep
+ net/http/fcgi.lo.dep: $(go_net_http_fcgi_files)
+ 	$(BUILDDEPS)
+@@ -3193,15 +3016,6 @@
+ 	@$(CHECK)
+ .PHONY: net/rpc/jsonrpc/check
+ 
+-@go_include@ old/netchan.lo.dep
+-old/netchan.lo.dep: $(go_old_netchan_files)
+-	$(BUILDDEPS)
+-old/netchan.lo: $(go_old_netchan_files)
+-	$(BUILDPACKAGE)
+-old/netchan/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: old/netchan/check
+-
+ @go_include@ old/regexp.lo.dep
+ old/regexp.lo.dep: $(go_old_regexp_files)
+ 	$(BUILDDEPS)
+@@ -3550,30 +3364,10 @@
+ encoding/xml.gox: encoding/xml.lo
+ 	$(BUILDGOX)
+ 
+-exp/cookiejar.gox: exp/cookiejar.lo
+-	$(BUILDGOX)
+-exp/ebnf.gox: exp/ebnf.lo
+-	$(BUILDGOX)
+-exp/html.gox: exp/html.lo
+-	$(BUILDGOX)
+-exp/html/atom.gox: exp/html/atom.lo
+-	$(BUILDGOX)
+-exp/inotify.gox: exp/inotify.lo
+-	$(BUILDGOX)
+-exp/locale/collate.gox: exp/locale/collate.lo
+-	$(BUILDGOX)
+-exp/locale/collate/build.gox: exp/locale/collate/build.lo
+-	$(BUILDGOX)
+-exp/norm.gox: exp/norm.lo
+-	$(BUILDGOX)
+ exp/proxy.gox: exp/proxy.lo
+ 	$(BUILDGOX)
+-exp/ssa.gox: exp/ssa.lo
+-	$(BUILDGOX)
+ exp/terminal.gox: exp/terminal.lo
+ 	$(BUILDGOX)
+-exp/utf8string.gox: exp/utf8string.lo	
+-	$(BUILDGOX)
+ 
+ html/template.gox: html/template.lo
+ 	$(BUILDGOX)
+@@ -3594,8 +3388,6 @@
+ 	$(BUILDGOX)
+ go/token.gox: go/token.lo
+ 	$(BUILDGOX)
+-go/types.gox: go/types.lo
+-	$(BUILDGOX)
+ 
+ hash/adler32.gox: hash/adler32.lo
+ 	$(BUILDGOX)
+@@ -3651,6 +3443,8 @@
+ 
+ net/http/cgi.gox: net/http/cgi.lo
+ 	$(BUILDGOX)
++net/http/cookiejar.gox: net/http/cookiejar.lo
++	$(BUILDGOX)
+ net/http/fcgi.gox: net/http/fcgi.lo
+ 	$(BUILDGOX)
+ net/http/httptest.gox: net/http/httptest.lo
+@@ -3663,8 +3457,6 @@
+ net/rpc/jsonrpc.gox: net/rpc/jsonrpc.lo
+ 	$(BUILDGOX)
+ 
+-old/netchan.gox: old/netchan.lo
+-	$(BUILDGOX)
+ old/regexp.gox: old/regexp.lo
+ 	$(BUILDGOX)
+ old/template.gox: old/template.lo
+@@ -3710,13 +3502,6 @@
+ unicode/utf8.gox: unicode/utf8.lo
+ 	$(BUILDGOX)
+ 
+-if LIBGO_IS_LINUX
+-# exp_inotify_check = exp/inotify/check
+-exp_inotify_check =
+-else
+-exp_inotify_check =
+-endif
+-
+ TEST_PACKAGES = \
+ 	bufio/check \
+ 	bytes/check \
+@@ -3787,17 +3572,8 @@
+ 	encoding/json/check \
+ 	encoding/pem/check \
+ 	encoding/xml/check \
+-	exp/cookiejar/check \
+-	exp/ebnf/check \
+-	exp/html/check \
+-	exp/html/atom/check \
+-	$(exp_inotify_check) \
+-	exp/locale/collate/check \
+-	exp/locale/collate/build/check \
+-	exp/norm/check \
+ 	exp/proxy/check \
+ 	exp/terminal/check \
+-	exp/utf8string/check \
+ 	html/template/check \
+ 	go/ast/check \
+ 	$(go_build_check_omitted_since_it_calls_6g) \
+@@ -3807,7 +3583,6 @@
+ 	go/printer/check \
+ 	go/scanner/check \
+ 	go/token/check \
+-	go/types/check \
+ 	hash/adler32/check \
+ 	hash/crc32/check \
+ 	hash/crc64/check \
+@@ -3825,6 +3600,7 @@
+ 	mime/multipart/check \
+ 	net/http/check \
+ 	net/http/cgi/check \
++	net/http/cookiejar/check \
+ 	net/http/fcgi/check \
+ 	net/http/httptest/check \
+ 	net/http/httputil/check \
+@@ -3834,7 +3610,6 @@
+ 	net/textproto/check \
+ 	net/url/check \
+ 	net/rpc/jsonrpc/check \
+-	old/netchan/check \
+ 	old/regexp/check \
+ 	old/template/check \
+ 	os/exec/check \
+diff -Naur gcc-4.8.1.orig/libgo/Makefile.in gcc-4.8.1/libgo/Makefile.in
+--- gcc-4.8.1.orig/libgo/Makefile.in	2013-02-20 14:04:36.000000000 -0600
++++ gcc-4.8.1/libgo/Makefile.in	2013-07-16 01:55:04.520470000 -0500
+@@ -101,9 +101,6 @@
+ 	"$(DESTDIR)$(toolexeclibgodebugdir)" \
+ 	"$(DESTDIR)$(toolexeclibgoencodingdir)" \
+ 	"$(DESTDIR)$(toolexeclibgoexpdir)" \
+-	"$(DESTDIR)$(toolexeclibgoexphtmldir)" \
+-	"$(DESTDIR)$(toolexeclibgoexplocaledir)" \
+-	"$(DESTDIR)$(toolexeclibgoexplocalecollatedir)" \
+ 	"$(DESTDIR)$(toolexeclibgogodir)" \
+ 	"$(DESTDIR)$(toolexeclibgohashdir)" \
+ 	"$(DESTDIR)$(toolexeclibgohtmldir)" \
+@@ -153,22 +150,20 @@
+ 	debug/pe.lo encoding/ascii85.lo encoding/asn1.lo \
+ 	encoding/base32.lo encoding/base64.lo encoding/binary.lo \
+ 	encoding/csv.lo encoding/gob.lo encoding/hex.lo \
+-	encoding/json.lo encoding/pem.lo encoding/xml.lo \
+-	exp/cookiejar.lo exp/ebnf.lo exp/html.lo exp/html/atom.lo \
+-	exp/locale/collate.lo exp/locale/collate/build.lo exp/norm.lo \
+-	exp/proxy.lo exp/ssa.lo exp/terminal.lo exp/utf8string.lo \
+-	html/template.lo go/ast.lo go/build.lo go/doc.lo go/format.lo \
+-	go/parser.lo go/printer.lo go/scanner.lo go/token.lo \
+-	go/types.lo hash/adler32.lo hash/crc32.lo hash/crc64.lo \
+-	hash/fnv.lo net/http/cgi.lo net/http/fcgi.lo \
+-	net/http/httptest.lo net/http/httputil.lo net/http/pprof.lo \
+-	image/color.lo image/draw.lo image/gif.lo image/jpeg.lo \
+-	image/png.lo index/suffixarray.lo io/ioutil.lo log/syslog.lo \
++	encoding/json.lo encoding/pem.lo encoding/xml.lo exp/proxy.lo \
++	exp/terminal.lo html/template.lo go/ast.lo go/build.lo \
++	go/doc.lo go/format.lo go/parser.lo go/printer.lo \
++	go/scanner.lo go/token.lo hash/adler32.lo hash/crc32.lo \
++	hash/crc64.lo hash/fnv.lo net/http/cgi.lo \
++	net/http/cookiejar.lo net/http/fcgi.lo net/http/httptest.lo \
++	net/http/httputil.lo net/http/pprof.lo image/color.lo \
++	image/draw.lo image/gif.lo image/jpeg.lo image/png.lo \
++	index/suffixarray.lo io/ioutil.lo log/syslog.lo \
+ 	log/syslog/syslog_c.lo math/big.lo math/cmplx.lo math/rand.lo \
+ 	mime/multipart.lo net/http.lo net/mail.lo net/rpc.lo \
+-	net/smtp.lo net/textproto.lo net/url.lo old/netchan.lo \
+-	old/regexp.lo old/template.lo os/exec.lo $(am__DEPENDENCIES_1) \
+-	os/signal.lo os/user.lo path/filepath.lo regexp/syntax.lo \
++	net/smtp.lo net/textproto.lo net/url.lo old/regexp.lo \
++	old/template.lo os/exec.lo $(am__DEPENDENCIES_1) os/signal.lo \
++	os/user.lo path/filepath.lo regexp/syntax.lo \
+ 	net/rpc/jsonrpc.lo runtime/debug.lo runtime/pprof.lo \
+ 	sync/atomic.lo sync/atomic_c.lo text/scanner.lo \
+ 	text/tabwriter.lo text/template.lo text/template/parse.lo \
+@@ -183,16 +178,22 @@
+ @LIBGO_IS_LINUX_TRUE@am__objects_1 = lock_futex.lo thread-linux.lo
+ @HAVE_SYS_MMAN_H_FALSE@am__objects_2 = mem_posix_memalign.lo
+ @HAVE_SYS_MMAN_H_TRUE@am__objects_2 = mem.lo
+-@LIBGO_IS_RTEMS_TRUE@am__objects_3 = rtems-task-variable-add.lo
+-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-none.lo
+-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-bsd.lo
+-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_4 = getncpu-bsd.lo
+-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@am__objects_4 = getncpu-solaris.lo
+-@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_4 = getncpu-irix.lo
+-@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_4 =  \
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_LINUX_FALSE@am__objects_3 =  \
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_LINUX_FALSE@	netpoll_stub.lo
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_3 =  \
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@	netpoll.lo \
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@	netpoll_kqueue.lo
++@LIBGO_IS_LINUX_TRUE@am__objects_3 = netpoll.lo netpoll_epoll.lo
++@LIBGO_IS_RTEMS_TRUE@am__objects_4 = rtems-task-variable-add.lo
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_5 = getncpu-none.lo
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@am__objects_5 = getncpu-bsd.lo
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_FREEBSD_TRUE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_FALSE@am__objects_5 = getncpu-bsd.lo
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_SOLARIS_TRUE@am__objects_5 = getncpu-solaris.lo
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_5 = getncpu-irix.lo
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@am__objects_5 =  \
+ @LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@	getncpu-bsd.lo
+-@LIBGO_IS_LINUX_TRUE@am__objects_4 = getncpu-linux.lo
+-am__objects_5 = go-append.lo go-assert.lo go-assert-interface.lo \
++@LIBGO_IS_LINUX_TRUE@am__objects_5 = getncpu-linux.lo
++am__objects_6 = go-append.lo go-assert.lo go-assert-interface.lo \
+ 	go-byte-array-to-string.lo go-breakpoint.lo go-caller.lo \
+ 	go-callers.lo go-can-convert-interface.lo go-cgo.lo \
+ 	go-check-interface.lo go-construct-map.lo \
+@@ -208,19 +209,19 @@
+ 	go-reflect-call.lo go-reflect-map.lo go-rune.lo \
+ 	go-runtime-error.lo go-setenv.lo go-signal.lo go-strcmp.lo \
+ 	go-string-to-byte-array.lo go-string-to-int-array.lo \
+-	go-strplus.lo go-strslice.lo go-traceback.lo go-trampoline.lo \
++	go-strplus.lo go-strslice.lo go-traceback.lo \
+ 	go-type-complex.lo go-type-eface.lo go-type-error.lo \
+ 	go-type-float.lo go-type-identity.lo go-type-interface.lo \
+ 	go-type-string.lo go-typedesc-equal.lo go-typestring.lo \
+ 	go-unsafe-new.lo go-unsafe-newarray.lo go-unsafe-pointer.lo \
+ 	go-unwind.lo chan.lo cpuprof.lo env_posix.lo lfstack.lo \
+ 	$(am__objects_1) mcache.lo mcentral.lo $(am__objects_2) \
+-	mfinal.lo mfixalloc.lo mgc0.lo mheap.lo msize.lo panic.lo \
+-	parfor.lo print.lo proc.lo runtime.lo signal_unix.lo thread.lo \
+-	yield.lo $(am__objects_3) iface.lo malloc.lo map.lo mprof.lo \
+-	reflect.lo runtime1.lo sema.lo sigqueue.lo string.lo time.lo \
+-	$(am__objects_4)
+-am_libgo_la_OBJECTS = $(am__objects_5)
++	mfinal.lo mfixalloc.lo mgc0.lo mheap.lo msize.lo \
++	$(am__objects_3) panic.lo parfor.lo print.lo proc.lo \
++	runtime.lo signal_unix.lo thread.lo yield.lo $(am__objects_4) \
++	iface.lo malloc.lo map.lo mprof.lo reflect.lo runtime1.lo \
++	sema.lo sigqueue.lo string.lo time.lo $(am__objects_5)
++am_libgo_la_OBJECTS = $(am__objects_6)
+ libgo_la_OBJECTS = $(am_libgo_la_OBJECTS)
+ libgo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(libgo_la_LDFLAGS) \
+@@ -257,9 +258,7 @@
+ 	$(toolexeclibgocrypto_DATA) $(toolexeclibgocryptox509_DATA) \
+ 	$(toolexeclibgodatabase_DATA) $(toolexeclibgodatabasesql_DATA) \
+ 	$(toolexeclibgodebug_DATA) $(toolexeclibgoencoding_DATA) \
+-	$(toolexeclibgoexp_DATA) $(toolexeclibgoexphtml_DATA) \
+-	$(toolexeclibgoexplocale_DATA) \
+-	$(toolexeclibgoexplocalecollate_DATA) $(toolexeclibgogo_DATA) \
++	$(toolexeclibgoexp_DATA) $(toolexeclibgogo_DATA) \
+ 	$(toolexeclibgohash_DATA) $(toolexeclibgohtml_DATA) \
+ 	$(toolexeclibgoimage_DATA) $(toolexeclibgoindex_DATA) \
+ 	$(toolexeclibgoio_DATA) $(toolexeclibgolog_DATA) \
+@@ -606,33 +605,10 @@
+ 	encoding/pem.gox \
+ 	encoding/xml.gox
+ 
+-@LIBGO_IS_LINUX_FALSE@exp_inotify_gox = 
+-
+-# exp_inotify_gox = exp/inotify.gox
+-@LIBGO_IS_LINUX_TRUE@exp_inotify_gox = 
+ toolexeclibgoexpdir = $(toolexeclibgodir)/exp
+ toolexeclibgoexp_DATA = \
+-	exp/cookiejar.gox \
+-	exp/ebnf.gox \
+-	exp/html.gox \
+-	$(exp_inotify_gox) \
+-	exp/norm.gox \
+ 	exp/proxy.gox \
+-	exp/ssa.gox \
+-	exp/terminal.gox \
+-	exp/utf8string.gox
+-
+-toolexeclibgoexphtmldir = $(toolexeclibgoexpdir)/html
+-toolexeclibgoexphtml_DATA = \
+-	exp/html/atom.gox
+-
+-toolexeclibgoexplocaledir = $(toolexeclibgoexpdir)/locale
+-toolexeclibgoexplocale_DATA = \
+-	exp/locale/collate.gox
+-
+-toolexeclibgoexplocalecollatedir = $(toolexeclibgoexplocaledir)/collate
+-toolexeclibgoexplocalecollate_DATA = \
+-	exp/locale/collate/build.gox
++	exp/terminal.gox
+ 
+ toolexeclibgogodir = $(toolexeclibgodir)/go
+ toolexeclibgogo_DATA = \
+@@ -643,8 +619,7 @@
+ 	go/parser.gox \
+ 	go/printer.gox \
+ 	go/scanner.gox \
+-	go/token.gox \
+-	go/types.gox
++	go/token.gox
+ 
+ toolexeclibgohashdir = $(toolexeclibgodir)/hash
+ toolexeclibgohash_DATA = \
+@@ -699,6 +674,7 @@
+ toolexeclibgonethttpdir = $(toolexeclibgonetdir)/http
+ toolexeclibgonethttp_DATA = \
+ 	net/http/cgi.gox \
++	net/http/cookiejar.gox \
+ 	net/http/fcgi.gox \
+ 	net/http/httptest.gox \
+ 	net/http/httputil.gox \
+@@ -710,7 +686,6 @@
+ 
+ toolexeclibgoolddir = $(toolexeclibgodir)/old
+ toolexeclibgoold_DATA = \
+-	old/netchan.gox \
+ 	old/regexp.gox \
+ 	old/template.gox
+ 
+@@ -770,6 +745,9 @@
+ @LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_IRIX_TRUE@@LIBGO_IS_LINUX_FALSE@runtime_getncpu_file = runtime/getncpu-irix.c
+ @LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@runtime_getncpu_file = runtime/getncpu-bsd.c
+ @LIBGO_IS_LINUX_TRUE@runtime_getncpu_file = runtime/getncpu-linux.c
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_LINUX_FALSE@runtime_netpoll_files = runtime/netpoll_stub.c
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@runtime_netpoll_files = netpoll.c runtime/netpoll_kqueue.c
++@LIBGO_IS_LINUX_TRUE@runtime_netpoll_files = netpoll.c runtime/netpoll_epoll.c
+ runtime_files = \
+ 	runtime/go-append.c \
+ 	runtime/go-assert.c \
+@@ -822,7 +800,6 @@
+ 	runtime/go-strplus.c \
+ 	runtime/go-strslice.c \
+ 	runtime/go-traceback.c \
+-	runtime/go-trampoline.c \
+ 	runtime/go-type-complex.c \
+ 	runtime/go-type-eface.c \
+ 	runtime/go-type-error.c \
+@@ -849,6 +826,7 @@
+ 	runtime/mgc0.c \
+ 	runtime/mheap.c \
+ 	runtime/msize.c \
++	$(runtime_netpoll_files) \
+ 	runtime/panic.c \
+ 	runtime/parfor.c \
+ 	runtime/print.c \
+@@ -871,7 +849,8 @@
+ 	$(runtime_getncpu_file)
+ 
+ go_bufio_files = \
+-	go/bufio/bufio.go
++	go/bufio/bufio.go \
++	go/bufio/scan.go
+ 
+ go_bytes_files = \
+ 	go/bytes/buffer.go \
+@@ -976,11 +955,11 @@
+ # something better.
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_RTEMS_FALSE@go_net_fd_os_file = go/net/fd_select.go
+ @LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_fd_os_file = go/net/fd_bsd.go
+-@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_fd_os_file = go/net/fd_linux.go
++@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_fd_os_file = 
+ @LIBGO_IS_RTEMS_TRUE@go_net_fd_os_file = go/net/fd_select.go
+-@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = go/net/newpollserver_unix.go
+-@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = go/net/newpollserver_unix.go
+-@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = go/net/newpollserver_unix.go
++@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = 
++@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = 
++@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_RTEMS_FALSE@go_net_newpollserver_file = 
+ @LIBGO_IS_RTEMS_TRUE@go_net_newpollserver_file = go/net/newpollserver_rtems.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_FALSE@@LIBGO_IS_SOLARIS_FALSE@go_net_cgo_file = go/net/cgo_bsd.go
+ @LIBGO_IS_FREEBSD_FALSE@@LIBGO_IS_IRIX_FALSE@@LIBGO_IS_LINUX_FALSE@@LIBGO_IS_NETBSD_TRUE@@LIBGO_IS_SOLARIS_FALSE@go_net_cgo_file = go/net/cgo_netbsd.go
+@@ -1014,6 +993,9 @@
+ @LIBGO_IS_LINUX_TRUE@go_net_interface_file = go/net/interface_linux.go
+ @LIBGO_IS_LINUX_FALSE@go_net_cloexec_file = go/net/sys_cloexec.go
+ @LIBGO_IS_LINUX_TRUE@go_net_cloexec_file = go/net/sock_cloexec.go
++@LIBGO_IS_DARWIN_FALSE@@LIBGO_IS_LINUX_FALSE@go_net_poll_file = go/net/fd_poll_unix.go
++@LIBGO_IS_DARWIN_TRUE@@LIBGO_IS_LINUX_FALSE@go_net_poll_file = go/net/fd_poll_runtime.go
++@LIBGO_IS_LINUX_TRUE@go_net_poll_file = go/net/fd_poll_runtime.go
+ go_net_files = \
+ 	go/net/cgo_unix.go \
+ 	$(go_net_cgo_file) \
+@@ -1041,10 +1023,12 @@
+ 	go/net/net.go \
+ 	go/net/parse.go \
+ 	go/net/pipe.go \
++	$(go_net_poll_file) \
+ 	go/net/port.go \
+ 	go/net/port_unix.go \
+ 	$(go_net_sendfile_file) \
+ 	go/net/sock_posix.go \
++	go/net/sock_unix.go \
+ 	$(go_net_sock_file) \
+ 	go/net/sockopt_posix.go \
+ 	$(go_net_sockopt_file) \
+@@ -1096,7 +1080,8 @@
+ 	$(go_os_stat_file) \
+ 	go/os/str.go \
+ 	$(go_os_sys_file) \
+-	go/os/types.go
++	go/os/types.go \
++	go/os/types_notwin.go
+ 
+ go_path_files = \
+ 	go/path/match.go \
+@@ -1168,6 +1153,7 @@
+ 	go/log/syslog/syslog_c.c
+ 
+ go_testing_files = \
++	go/testing/allocs.go \
+ 	go/testing/benchmark.go \
+ 	go/testing/example.go \
+ 	go/testing/testing.go
+@@ -1286,7 +1272,8 @@
+ 	go/crypto/rand/util.go
+ 
+ go_crypto_rc4_files = \
+-	go/crypto/rc4/rc4.go
++	go/crypto/rc4/rc4.go \
++	go/crypto/rc4/rc4_ref.go
+ 
+ go_crypto_rsa_files = \
+ 	go/crypto/rsa/pkcs1v15.go \
+@@ -1418,85 +1405,16 @@
+ 	go/encoding/xml/typeinfo.go \
+ 	go/encoding/xml/xml.go
+ 
+-go_exp_cookiejar_files = \
+-	go/exp/cookiejar/jar.go \
+-	go/exp/cookiejar/storage.go
+-
+-go_exp_ebnf_files = \
+-	go/exp/ebnf/ebnf.go \
+-	go/exp/ebnf/parser.go
+-
+-go_exp_html_files = \
+-	go/exp/html/const.go \
+-	go/exp/html/doc.go \
+-	go/exp/html/doctype.go \
+-	go/exp/html/entity.go \
+-	go/exp/html/escape.go \
+-	go/exp/html/foreign.go \
+-	go/exp/html/node.go \
+-	go/exp/html/parse.go \
+-	go/exp/html/render.go \
+-	go/exp/html/token.go
+-
+-go_exp_html_atom_files = \
+-	go/exp/html/atom/atom.go \
+-	go/exp/html/atom/table.go
+-
+-go_exp_inotify_files = \
+-	go/exp/inotify/inotify_linux.go
+-
+-go_exp_locale_collate_files = \
+-	go/exp/locale/collate/colelem.go \
+-	go/exp/locale/collate/collate.go \
+-	go/exp/locale/collate/colltab.go \
+-	go/exp/locale/collate/contract.go \
+-	go/exp/locale/collate/export.go \
+-	go/exp/locale/collate/sort.go \
+-	go/exp/locale/collate/table.go \
+-	go/exp/locale/collate/tables.go \
+-	go/exp/locale/collate/trie.go
+-
+-go_exp_locale_collate_build_files = \
+-	go/exp/locale/collate/build/builder.go \
+-	go/exp/locale/collate/build/colelem.go \
+-	go/exp/locale/collate/build/contract.go \
+-	go/exp/locale/collate/build/order.go \
+-	go/exp/locale/collate/build/table.go \
+-	go/exp/locale/collate/build/trie.go
+-
+-go_exp_norm_files = \
+-	go/exp/norm/composition.go \
+-	go/exp/norm/forminfo.go \
+-	go/exp/norm/input.go \
+-	go/exp/norm/iter.go \
+-	go/exp/norm/normalize.go \
+-	go/exp/norm/readwriter.go \
+-	go/exp/norm/tables.go \
+-	go/exp/norm/trie.go
+-
+ go_exp_proxy_files = \
+ 	go/exp/proxy/direct.go \
+ 	go/exp/proxy/per_host.go \
+ 	go/exp/proxy/proxy.go \
+ 	go/exp/proxy/socks5.go
+ 
+-go_exp_ssa_files = \
+-	go/exp/ssa/blockopt.go \
+-	go/exp/ssa/doc.go \
+-	go/exp/ssa/func.go \
+-	go/exp/ssa/sanity.go \
+-	go/exp/ssa/ssa.go \
+-	go/exp/ssa/literal.go \
+-	go/exp/ssa/print.go \
+-	go/exp/ssa/util.go
+-
+ go_exp_terminal_files = \
+ 	go/exp/terminal/terminal.go \
+ 	go/exp/terminal/util.go
+ 
+-go_exp_utf8string_files = \
+-	go/exp/utf8string/string.go
+-
+ go_go_ast_files = \
+ 	go/go/ast/ast.go \
+ 	go/go/ast/commentmap.go \
+@@ -1542,25 +1460,6 @@
+ 	go/go/token/serialize.go \
+ 	go/go/token/token.go
+ 
+-go_go_types_files = \
+-	go/go/types/api.go \
+-	go/go/types/builtins.go \
+-	go/go/types/check.go \
+-	go/go/types/const.go \
+-	go/go/types/conversions.go \
+-	go/go/types/errors.go \
+-	go/go/types/exportdata.go \
+-	go/go/types/expr.go \
+-	go/go/types/gcimporter.go \
+-	go/go/types/objects.go \
+-	go/go/types/operand.go \
+-	go/go/types/predicates.go \
+-	go/go/types/resolve.go \
+-	go/go/types/scope.go \
+-	go/go/types/stmt.go \
+-	go/go/types/types.go \
+-	go/go/types/universe.go
+-
+ go_hash_adler32_files = \
+ 	go/hash/adler32/adler32.go
+ 
+@@ -1693,6 +1592,10 @@
+ 	go/net/http/cgi/child.go \
+ 	go/net/http/cgi/host.go
+ 
++go_net_http_cookiejar_files = \
++	go/net/http/cookiejar/jar.go \
++	go/net/http/cookiejar/punycode.go
++
+ go_net_http_fcgi_files = \
+ 	go/net/http/fcgi/child.go \
+ 	go/net/http/fcgi/fcgi.go
+@@ -1710,11 +1613,6 @@
+ 	go/net/http/httputil/persist.go \
+ 	go/net/http/httputil/reverseproxy.go
+ 
+-go_old_netchan_files = \
+-	go/old/netchan/common.go \
+-	go/old/netchan/export.go \
+-	go/old/netchan/import.go
+-
+ go_old_regexp_files = \
+ 	go/old/regexp/regexp.go
+ 
+@@ -1757,6 +1655,7 @@
+ 	go/net/rpc/jsonrpc/server.go
+ 
+ go_runtime_debug_files = \
++	go/runtime/debug/garbage.go \
+ 	go/runtime/debug/stack.go
+ 
+ go_runtime_pprof_files = \
+@@ -2006,17 +1905,8 @@
+ 	encoding/json.lo \
+ 	encoding/pem.lo \
+ 	encoding/xml.lo \
+-	exp/cookiejar.lo \
+-	exp/ebnf.lo \
+-	exp/html.lo \
+-	exp/html/atom.lo \
+-	exp/locale/collate.lo \
+-	exp/locale/collate/build.lo \
+-	exp/norm.lo \
+ 	exp/proxy.lo \
+-	exp/ssa.lo \
+ 	exp/terminal.lo \
+-	exp/utf8string.lo \
+ 	html/template.lo \
+ 	go/ast.lo \
+ 	go/build.lo \
+@@ -2026,12 +1916,12 @@
+ 	go/printer.lo \
+ 	go/scanner.lo \
+ 	go/token.lo \
+-	go/types.lo \
+ 	hash/adler32.lo \
+ 	hash/crc32.lo \
+ 	hash/crc64.lo \
+ 	hash/fnv.lo \
+ 	net/http/cgi.lo \
++	net/http/cookiejar.lo \
+ 	net/http/fcgi.lo \
+ 	net/http/httptest.lo \
+ 	net/http/httputil.lo \
+@@ -2055,7 +1945,6 @@
+ 	net/smtp.lo \
+ 	net/textproto.lo \
+ 	net/url.lo \
+-	old/netchan.lo \
+ 	old/regexp.lo \
+ 	old/template.lo \
+ 	os/exec.lo \
+@@ -2186,10 +2075,6 @@
+ 	f=`echo $< | sed -e 's/.lo$$/.o/'`; \
+ 	$(OBJCOPY) -j .go_export $$f $@.tmp && mv -f $@.tmp $@
+ 
+-@LIBGO_IS_LINUX_FALSE@exp_inotify_check = 
+-
+-# exp_inotify_check = exp/inotify/check
+-@LIBGO_IS_LINUX_TRUE@exp_inotify_check = 
+ TEST_PACKAGES = \
+ 	bufio/check \
+ 	bytes/check \
+@@ -2260,17 +2145,8 @@
+ 	encoding/json/check \
+ 	encoding/pem/check \
+ 	encoding/xml/check \
+-	exp/cookiejar/check \
+-	exp/ebnf/check \
+-	exp/html/check \
+-	exp/html/atom/check \
+-	$(exp_inotify_check) \
+-	exp/locale/collate/check \
+-	exp/locale/collate/build/check \
+-	exp/norm/check \
+ 	exp/proxy/check \
+ 	exp/terminal/check \
+-	exp/utf8string/check \
+ 	html/template/check \
+ 	go/ast/check \
+ 	$(go_build_check_omitted_since_it_calls_6g) \
+@@ -2280,7 +2156,6 @@
+ 	go/printer/check \
+ 	go/scanner/check \
+ 	go/token/check \
+-	go/types/check \
+ 	hash/adler32/check \
+ 	hash/crc32/check \
+ 	hash/crc64/check \
+@@ -2298,6 +2173,7 @@
+ 	mime/multipart/check \
+ 	net/http/check \
+ 	net/http/cgi/check \
++	net/http/cookiejar/check \
+ 	net/http/fcgi/check \
+ 	net/http/httptest/check \
+ 	net/http/httputil/check \
+@@ -2307,7 +2183,6 @@
+ 	net/textproto/check \
+ 	net/url/check \
+ 	net/rpc/jsonrpc/check \
+-	old/netchan/check \
+ 	old/regexp/check \
+ 	old/template/check \
+ 	os/exec/check \
+@@ -2519,7 +2394,6 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-strplus.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-strslice.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-traceback.Plo@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-trampoline.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-complex.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-eface.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-type-error.Plo@am__quote@
+@@ -2549,6 +2423,10 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mheap.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mprof.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msize.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netpoll.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netpoll_epoll.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netpoll_kqueue.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netpoll_stub.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panic.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parfor.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@
+@@ -2959,13 +2837,6 @@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-traceback.lo `test -f 'runtime/go-traceback.c' || echo '$(srcdir)/'`runtime/go-traceback.c
+ 
+-go-trampoline.lo: runtime/go-trampoline.c
+-@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-trampoline.lo -MD -MP -MF $(DEPDIR)/go-trampoline.Tpo -c -o go-trampoline.lo `test -f 'runtime/go-trampoline.c' || echo '$(srcdir)/'`runtime/go-trampoline.c
+-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/go-trampoline.Tpo $(DEPDIR)/go-trampoline.Plo
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime/go-trampoline.c' object='go-trampoline.lo' libtool=yes @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-trampoline.lo `test -f 'runtime/go-trampoline.c' || echo '$(srcdir)/'`runtime/go-trampoline.c
+-
+ go-type-complex.lo: runtime/go-type-complex.c
+ @am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-type-complex.lo -MD -MP -MF $(DEPDIR)/go-type-complex.Tpo -c -o go-type-complex.lo `test -f 'runtime/go-type-complex.c' || echo '$(srcdir)/'`runtime/go-type-complex.c
+ @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/go-type-complex.Tpo $(DEPDIR)/go-type-complex.Plo
+@@ -3176,6 +3047,27 @@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o msize.lo `test -f 'runtime/msize.c' || echo '$(srcdir)/'`runtime/msize.c
+ 
++netpoll_stub.lo: runtime/netpoll_stub.c
++@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netpoll_stub.lo -MD -MP -MF $(DEPDIR)/netpoll_stub.Tpo -c -o netpoll_stub.lo `test -f 'runtime/netpoll_stub.c' || echo '$(srcdir)/'`runtime/netpoll_stub.c
++@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/netpoll_stub.Tpo $(DEPDIR)/netpoll_stub.Plo
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime/netpoll_stub.c' object='netpoll_stub.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netpoll_stub.lo `test -f 'runtime/netpoll_stub.c' || echo '$(srcdir)/'`runtime/netpoll_stub.c
++
++netpoll_kqueue.lo: runtime/netpoll_kqueue.c
++@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netpoll_kqueue.lo -MD -MP -MF $(DEPDIR)/netpoll_kqueue.Tpo -c -o netpoll_kqueue.lo `test -f 'runtime/netpoll_kqueue.c' || echo '$(srcdir)/'`runtime/netpoll_kqueue.c
++@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/netpoll_kqueue.Tpo $(DEPDIR)/netpoll_kqueue.Plo
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime/netpoll_kqueue.c' object='netpoll_kqueue.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netpoll_kqueue.lo `test -f 'runtime/netpoll_kqueue.c' || echo '$(srcdir)/'`runtime/netpoll_kqueue.c
++
++netpoll_epoll.lo: runtime/netpoll_epoll.c
++@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netpoll_epoll.lo -MD -MP -MF $(DEPDIR)/netpoll_epoll.Tpo -c -o netpoll_epoll.lo `test -f 'runtime/netpoll_epoll.c' || echo '$(srcdir)/'`runtime/netpoll_epoll.c
++@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/netpoll_epoll.Tpo $(DEPDIR)/netpoll_epoll.Plo
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='runtime/netpoll_epoll.c' object='netpoll_epoll.lo' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netpoll_epoll.lo `test -f 'runtime/netpoll_epoll.c' || echo '$(srcdir)/'`runtime/netpoll_epoll.c
++
+ panic.lo: runtime/panic.c
+ @am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT panic.lo -MD -MP -MF $(DEPDIR)/panic.Tpo -c -o panic.lo `test -f 'runtime/panic.c' || echo '$(srcdir)/'`runtime/panic.c
+ @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/panic.Tpo $(DEPDIR)/panic.Plo
+@@ -3519,66 +3411,6 @@
+ 	test -n "$$files" || exit 0; \
+ 	echo " ( cd '$(DESTDIR)$(toolexeclibgoexpdir)' && rm -f" $$files ")"; \
+ 	cd "$(DESTDIR)$(toolexeclibgoexpdir)" && rm -f $$files
+-install-toolexeclibgoexphtmlDATA: $(toolexeclibgoexphtml_DATA)
+-	@$(NORMAL_INSTALL)
+-	test -z "$(toolexeclibgoexphtmldir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoexphtmldir)"
+-	@list='$(toolexeclibgoexphtml_DATA)'; test -n "$(toolexeclibgoexphtmldir)" || list=; \
+-	for p in $$list; do \
+-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; \
+-	done | $(am__base_list) | \
+-	while read files; do \
+-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoexphtmldir)'"; \
+-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoexphtmldir)" || exit $$?; \
+-	done
+-
+-uninstall-toolexeclibgoexphtmlDATA:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(toolexeclibgoexphtml_DATA)'; test -n "$(toolexeclibgoexphtmldir)" || list=; \
+-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+-	test -n "$$files" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(toolexeclibgoexphtmldir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(toolexeclibgoexphtmldir)" && rm -f $$files
+-install-toolexeclibgoexplocaleDATA: $(toolexeclibgoexplocale_DATA)
+-	@$(NORMAL_INSTALL)
+-	test -z "$(toolexeclibgoexplocaledir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoexplocaledir)"
+-	@list='$(toolexeclibgoexplocale_DATA)'; test -n "$(toolexeclibgoexplocaledir)" || list=; \
+-	for p in $$list; do \
+-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; \
+-	done | $(am__base_list) | \
+-	while read files; do \
+-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoexplocaledir)'"; \
+-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoexplocaledir)" || exit $$?; \
+-	done
+-
+-uninstall-toolexeclibgoexplocaleDATA:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(toolexeclibgoexplocale_DATA)'; test -n "$(toolexeclibgoexplocaledir)" || list=; \
+-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+-	test -n "$$files" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(toolexeclibgoexplocaledir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(toolexeclibgoexplocaledir)" && rm -f $$files
+-install-toolexeclibgoexplocalecollateDATA: $(toolexeclibgoexplocalecollate_DATA)
+-	@$(NORMAL_INSTALL)
+-	test -z "$(toolexeclibgoexplocalecollatedir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgoexplocalecollatedir)"
+-	@list='$(toolexeclibgoexplocalecollate_DATA)'; test -n "$(toolexeclibgoexplocalecollatedir)" || list=; \
+-	for p in $$list; do \
+-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; \
+-	done | $(am__base_list) | \
+-	while read files; do \
+-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgoexplocalecollatedir)'"; \
+-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgoexplocalecollatedir)" || exit $$?; \
+-	done
+-
+-uninstall-toolexeclibgoexplocalecollateDATA:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(toolexeclibgoexplocalecollate_DATA)'; test -n "$(toolexeclibgoexplocalecollatedir)" || list=; \
+-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+-	test -n "$$files" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(toolexeclibgoexplocalecollatedir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(toolexeclibgoexplocalecollatedir)" && rm -f $$files
+ install-toolexeclibgogoDATA: $(toolexeclibgogo_DATA)
+ 	@$(NORMAL_INSTALL)
+ 	test -z "$(toolexeclibgogodir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibgogodir)"
+@@ -4160,7 +3992,7 @@
+ 		config.h
+ installdirs: installdirs-recursive
+ installdirs-am:
+-	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibgoarchivedir)" "$(DESTDIR)$(toolexeclibgocompressdir)" "$(DESTDIR)$(toolexeclibgocontainerdir)" "$(DESTDIR)$(toolexeclibgocryptodir)" "$(DESTDIR)$(toolexeclibgocryptox509dir)" "$(DESTDIR)$(toolexeclibgodatabasedir)" "$(DESTDIR)$(toolexeclibgodatabasesqldir)" "$(DESTDIR)$(toolexeclibgodebugdir)" "$(DESTDIR)$(toolexeclibgoencodingdir)" "$(DESTDIR)$(toolexeclibgoexpdir)" "$(DESTDIR)$(toolexeclibgoexphtmldir)" "$(DESTDIR)$(toolexeclibgoexplocaledir)" "$(DESTDIR)$(toolexeclibgoexplocalecollatedir)" "$(DESTDIR)$(toolexeclibgogodir)" "$(DESTDIR)$(toolexeclibgohashdir)" "$(DESTDIR)$(toolexeclibgohtmldir)" "$(DESTDIR)$(toolexeclibgoimagedir)" "$(DESTDIR)$(toolexeclibgoindexdir)" "$(DESTDIR)$(toolexeclibgoiodir)" "$(DESTDIR)$(toolexeclibgologdir)" "$(DESTDIR)$(toolexeclibgomathdir)" "$(DESTDIR)$(toolexeclibgomimedir)" "$(DESTDIR)$(toolexeclibgonetdir)" "$(DESTDIR)$(toolexeclibgonethttpdir)" "$(DESTDIR)$(toolexeclibgonetrpcdir)" "$(DESTDIR)$(toolexeclibgoolddir)" "$(DESTDIR)$(toolexeclibgoosdir)" "$(DESTDIR)$(toolexeclibgopathdir)" "$(DESTDIR)$(toolexeclibgoregexpdir)" "$(DESTDIR)$(toolexeclibgoruntimedir)" "$(DESTDIR)$(toolexeclibgosyncdir)" "$(DESTDIR)$(toolexeclibgotestingdir)" "$(DESTDIR)$(toolexeclibgotextdir)" "$(DESTDIR)$(toolexeclibgotexttemplatedir)" "$(DESTDIR)$(toolexeclibgounicodedir)"; do \
++	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibgoarchivedir)" "$(DESTDIR)$(toolexeclibgocompressdir)" "$(DESTDIR)$(toolexeclibgocontainerdir)" "$(DESTDIR)$(toolexeclibgocryptodir)" "$(DESTDIR)$(toolexeclibgocryptox509dir)" "$(DESTDIR)$(toolexeclibgodatabasedir)" "$(DESTDIR)$(toolexeclibgodatabasesqldir)" "$(DESTDIR)$(toolexeclibgodebugdir)" "$(DESTDIR)$(toolexeclibgoencodingdir)" "$(DESTDIR)$(toolexeclibgoexpdir)" "$(DESTDIR)$(toolexeclibgogodir)" "$(DESTDIR)$(toolexeclibgohashdir)" "$(DESTDIR)$(toolexeclibgohtmldir)" "$(DESTDIR)$(toolexeclibgoimagedir)" "$(DESTDIR)$(toolexeclibgoindexdir)" "$(DESTDIR)$(toolexeclibgoiodir)" "$(DESTDIR)$(toolexeclibgologdir)" "$(DESTDIR)$(toolexeclibgomathdir)" "$(DESTDIR)$(toolexeclibgomimedir)" "$(DESTDIR)$(toolexeclibgonetdir)" "$(DESTDIR)$(toolexeclibgonethttpdir)" "$(DESTDIR)$(toolexeclibgonetrpcdir)" "$(DESTDIR)$(toolexeclibgoolddir)" "$(DESTDIR)$(toolexeclibgoosdir)" "$(DESTDIR)$(toolexeclibgopathdir)" "$(DESTDIR)$(toolexeclibgoregexpdir)" "$(DESTDIR)$(toolexeclibgoruntimedir)" "$(DESTDIR)$(toolexeclibgosyncdir)" "$(DESTDIR)$(toolexeclibgotestingdir)" "$(DESTDIR)$(toolexeclibgotextdir)" "$(DESTDIR)$(toolexeclibgotexttemplatedir)" "$(DESTDIR)$(toolexeclibgounicodedir)"; do \
+ 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ 	done
+ install: install-recursive
+@@ -4231,9 +4063,6 @@
+ 	install-toolexeclibgodatabasesqlDATA \
+ 	install-toolexeclibgodebugDATA \
+ 	install-toolexeclibgoencodingDATA install-toolexeclibgoexpDATA \
+-	install-toolexeclibgoexphtmlDATA \
+-	install-toolexeclibgoexplocaleDATA \
+-	install-toolexeclibgoexplocalecollateDATA \
+ 	install-toolexeclibgogoDATA install-toolexeclibgohashDATA \
+ 	install-toolexeclibgohtmlDATA install-toolexeclibgoimageDATA \
+ 	install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+@@ -4299,11 +4128,8 @@
+ 	uninstall-toolexeclibgodatabasesqlDATA \
+ 	uninstall-toolexeclibgodebugDATA \
+ 	uninstall-toolexeclibgoencodingDATA \
+-	uninstall-toolexeclibgoexpDATA \
+-	uninstall-toolexeclibgoexphtmlDATA \
+-	uninstall-toolexeclibgoexplocaleDATA \
+-	uninstall-toolexeclibgoexplocalecollateDATA \
+-	uninstall-toolexeclibgogoDATA uninstall-toolexeclibgohashDATA \
++	uninstall-toolexeclibgoexpDATA uninstall-toolexeclibgogoDATA \
++	uninstall-toolexeclibgohashDATA \
+ 	uninstall-toolexeclibgohtmlDATA \
+ 	uninstall-toolexeclibgoimageDATA \
+ 	uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
+@@ -4348,9 +4174,6 @@
+ 	install-toolexeclibgodatabasesqlDATA \
+ 	install-toolexeclibgodebugDATA \
+ 	install-toolexeclibgoencodingDATA install-toolexeclibgoexpDATA \
+-	install-toolexeclibgoexphtmlDATA \
+-	install-toolexeclibgoexplocaleDATA \
+-	install-toolexeclibgoexplocalecollateDATA \
+ 	install-toolexeclibgogoDATA install-toolexeclibgohashDATA \
+ 	install-toolexeclibgohtmlDATA install-toolexeclibgoimageDATA \
+ 	install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+@@ -4380,11 +4203,8 @@
+ 	uninstall-toolexeclibgodatabasesqlDATA \
+ 	uninstall-toolexeclibgodebugDATA \
+ 	uninstall-toolexeclibgoencodingDATA \
+-	uninstall-toolexeclibgoexpDATA \
+-	uninstall-toolexeclibgoexphtmlDATA \
+-	uninstall-toolexeclibgoexplocaleDATA \
+-	uninstall-toolexeclibgoexplocalecollateDATA \
+-	uninstall-toolexeclibgogoDATA uninstall-toolexeclibgohashDATA \
++	uninstall-toolexeclibgoexpDATA uninstall-toolexeclibgogoDATA \
++	uninstall-toolexeclibgohashDATA \
+ 	uninstall-toolexeclibgohtmlDATA \
+ 	uninstall-toolexeclibgoimageDATA \
+ 	uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
+@@ -4417,6 +4237,10 @@
+ 	./goc2c $< > $@.tmp
+ 	mv -f $@.tmp $@
+ 
++netpoll.c: $(srcdir)/runtime/netpoll.goc goc2c
++	./goc2c $< > $@.tmp
++	mv -f $@.tmp $@
++
+ reflect.c: $(srcdir)/runtime/reflect.goc goc2c
+ 	./goc2c $< > $@.tmp
+ 	mv -f $@.tmp $@
+@@ -5172,69 +4996,6 @@
+ 	@$(CHECK)
+ .PHONY: encoding/xml/check
+ 
+-@go_include@ exp/cookiejar.lo.dep
+-exp/cookiejar.lo.dep: $(go_exp_cookiejar_files)
+-	$(BUILDDEPS)
+-exp/cookiejar.lo: $(go_exp_cookiejar_files)
+-	$(BUILDPACKAGE)
+-exp/cookiejar/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/cookiejar/check
+-
+-@go_include@ exp/ebnf.lo.dep
+-exp/ebnf.lo.dep: $(go_exp_ebnf_files)
+-	$(BUILDDEPS)
+-exp/ebnf.lo: $(go_exp_ebnf_files)
+-	$(BUILDPACKAGE)
+-exp/ebnf/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/ebnf/check
+-
+-@go_include@ exp/html.lo.dep
+-exp/html.lo.dep: $(go_exp_html_files)
+-	$(BUILDDEPS)
+-exp/html.lo: $(go_exp_html_files)
+-	$(BUILDPACKAGE)
+-exp/html/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/html/check
+-
+-@go_include@ exp/html/atom.lo.dep
+-exp/html/atom.lo.dep: $(go_exp_html_atom_files)
+-	$(BUILDDEPS)
+-exp/html/atom.lo: $(go_exp_html_atom_files)
+-	$(BUILDPACKAGE)
+-exp/html/atom/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/html/atom/check
+-
+-@go_include@ exp/locale/collate.lo.dep
+-exp/locale/collate.lo.dep: $(go_exp_locale_collate_files)
+-	$(BUILDDEPS)
+-exp/locale/collate.lo: $(go_exp_locale_collate_files)
+-	$(BUILDPACKAGE)
+-exp/locale/collate/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/locale/collate/check
+-
+-@go_include@ exp/locale/collate/build.lo.dep
+-exp/locale/collate/build.lo.dep: $(go_exp_locale_collate_build_files)
+-	$(BUILDDEPS)
+-exp/locale/collate/build.lo: $(go_exp_locale_collate_build_files)
+-	$(BUILDPACKAGE)
+-exp/locale/collate/build/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/locale/collate/build/check
+-
+-@go_include@ exp/norm.lo.dep
+-exp/norm.lo.dep: $(go_exp_norm_files)
+-	$(BUILDDEPS)
+-exp/norm.lo: $(go_exp_norm_files)
+-	$(BUILDPACKAGE)
+-exp/norm/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/norm/check
+-
+ @go_include@ exp/proxy.lo.dep
+ exp/proxy.lo.dep: $(go_exp_proxy_files)
+ 	$(BUILDDEPS)
+@@ -5244,15 +5005,6 @@
+ 	@$(CHECK)
+ .PHONY: exp/proxy/check
+ 
+-@go_include@ exp/ssa.lo.dep
+-exp/ssa.lo.dep: $(go_exp_ssa_files)
+-	$(BUILDDEPS)
+-exp/ssa.lo: $(go_exp_ssa_files)
+-	$(BUILDPACKAGE)
+-exp/ssa/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/ssa/check
+-
+ @go_include@ exp/terminal.lo.dep
+ exp/terminal.lo.dep: $(go_exp_terminal_files)
+ 	$(BUILDDEPS)
+@@ -5262,24 +5014,6 @@
+ 	@$(CHECK)
+ .PHONY: exp/terminal/check
+ 
+-@go_include@ exp/utf8string.lo.dep
+-exp/utf8string.lo.dep: $(go_exp_utf8string_files)
+-	$(BUILDDEPS)
+-exp/utf8string.lo: $(go_exp_utf8string_files)
+-	$(BUILDPACKAGE)
+-exp/utf8string/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/utf8string/check
+-
+-@go_include@ exp/inotify.lo.dep
+-exp/inotify.lo.dep: $(go_exp_inotify_files)
+-	$(BUILDDEPS)
+-exp/inotify.lo: $(go_exp_inotify_files)
+-	$(BUILDPACKAGE)
+-exp/inotify/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: exp/inotify/check
+-
+ @go_include@ html/template.lo.dep
+ html/template.lo.dep: $(go_html_template_files)
+ 	$(BUILDDEPS)
+@@ -5370,15 +5104,6 @@
+ 	@$(CHECK)
+ .PHONY: go/token/check
+ 
+-@go_include@ go/types.lo.dep
+-go/types.lo.dep: $(go_go_types_files)
+-	$(BUILDDEPS)
+-go/types.lo: $(go_go_types_files)
+-	$(BUILDPACKAGE)
+-go/types/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: go/types/check
+-
+ @go_include@ hash/adler32.lo.dep
+ hash/adler32.lo.dep: $(go_hash_adler32_files)
+ 	$(BUILDDEPS)
+@@ -5589,6 +5314,15 @@
+ 	@$(CHECK)
+ .PHONY: net/http/cgi/check
+ 
++@go_include@ net/http/cookiejar.lo.dep
++net/http/cookiejar.lo.dep: $(go_net_http_cookiejar_files)
++	$(BUILDDEPS)
++net/http/cookiejar.lo: $(go_net_http_cookiejar_files)
++	$(BUILDPACKAGE)
++net/http/cookiejar/check: $(CHECK_DEPS)
++	@$(CHECK)
++.PHONY: net/http/cookiejar/check
++
+ @go_include@ net/http/fcgi.lo.dep
+ net/http/fcgi.lo.dep: $(go_net_http_fcgi_files)
+ 	$(BUILDDEPS)
+@@ -5634,15 +5368,6 @@
+ 	@$(CHECK)
+ .PHONY: net/rpc/jsonrpc/check
+ 
+-@go_include@ old/netchan.lo.dep
+-old/netchan.lo.dep: $(go_old_netchan_files)
+-	$(BUILDDEPS)
+-old/netchan.lo: $(go_old_netchan_files)
+-	$(BUILDPACKAGE)
+-old/netchan/check: $(CHECK_DEPS)
+-	@$(CHECK)
+-.PHONY: old/netchan/check
+-
+ @go_include@ old/regexp.lo.dep
+ old/regexp.lo.dep: $(go_old_regexp_files)
+ 	$(BUILDDEPS)
+@@ -5983,30 +5708,10 @@
+ encoding/xml.gox: encoding/xml.lo
+ 	$(BUILDGOX)
+ 
+-exp/cookiejar.gox: exp/cookiejar.lo
+-	$(BUILDGOX)
+-exp/ebnf.gox: exp/ebnf.lo
+-	$(BUILDGOX)
+-exp/html.gox: exp/html.lo
+-	$(BUILDGOX)
+-exp/html/atom.gox: exp/html/atom.lo
+-	$(BUILDGOX)
+-exp/inotify.gox: exp/inotify.lo
+-	$(BUILDGOX)
+-exp/locale/collate.gox: exp/locale/collate.lo
+-	$(BUILDGOX)
+-exp/locale/collate/build.gox: exp/locale/collate/build.lo
+-	$(BUILDGOX)
+-exp/norm.gox: exp/norm.lo
+-	$(BUILDGOX)
+ exp/proxy.gox: exp/proxy.lo
+ 	$(BUILDGOX)
+-exp/ssa.gox: exp/ssa.lo
+-	$(BUILDGOX)
+ exp/terminal.gox: exp/terminal.lo
+ 	$(BUILDGOX)
+-exp/utf8string.gox: exp/utf8string.lo	
+-	$(BUILDGOX)
+ 
+ html/template.gox: html/template.lo
+ 	$(BUILDGOX)
+@@ -6027,8 +5732,6 @@
+ 	$(BUILDGOX)
+ go/token.gox: go/token.lo
+ 	$(BUILDGOX)
+-go/types.gox: go/types.lo
+-	$(BUILDGOX)
+ 
+ hash/adler32.gox: hash/adler32.lo
+ 	$(BUILDGOX)
+@@ -6084,6 +5787,8 @@
+ 
+ net/http/cgi.gox: net/http/cgi.lo
+ 	$(BUILDGOX)
++net/http/cookiejar.gox: net/http/cookiejar.lo
++	$(BUILDGOX)
+ net/http/fcgi.gox: net/http/fcgi.lo
+ 	$(BUILDGOX)
+ net/http/httptest.gox: net/http/httptest.lo
+@@ -6096,8 +5801,6 @@
+ net/rpc/jsonrpc.gox: net/rpc/jsonrpc.lo
+ 	$(BUILDGOX)
+ 
+-old/netchan.gox: old/netchan.lo
+-	$(BUILDGOX)
+ old/regexp.gox: old/regexp.lo
+ 	$(BUILDGOX)
+ old/template.gox: old/template.lo
+diff -Naur gcc-4.8.1.orig/libgo/MERGE gcc-4.8.1/libgo/MERGE
+--- gcc-4.8.1.orig/libgo/MERGE	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/MERGE	2013-07-16 01:55:04.520470000 -0500
+@@ -1,4 +1,4 @@
+-229081515358
++a7bd9a33067b
+ 
+ The first line of this file holds the Mercurial revision number of the
+ last merge done from the master library sources.
+diff -Naur gcc-4.8.1.orig/libgo/merge.sh gcc-4.8.1/libgo/merge.sh
+--- gcc-4.8.1.orig/libgo/merge.sh	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/merge.sh	2013-07-16 01:55:04.520470000 -0500
+@@ -163,12 +163,12 @@
+   done
+ done
+ 
+-runtime="chan.c cpuprof.c env_posix.c lock_futex.c lock_sema.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mgc0.h mheap.c msize.c panic.c print.c proc.c race.h runtime.c runtime.h signal_unix.c malloc.h malloc.goc mprof.goc parfor.c runtime1.goc sema.goc sigqueue.goc string.goc time.goc"
++runtime="chan.c cpuprof.c env_posix.c lock_futex.c lock_sema.c mcache.c mcentral.c mfinal.c mfixalloc.c mgc0.c mgc0.h mheap.c msize.c netpoll.goc netpoll_epoll.c netpoll_kqueue.c netpoll_stub.c panic.c print.c proc.c race.h runtime.c runtime.h signal_unix.c signal_unix.h malloc.h malloc.goc mprof.goc parfor.c runtime1.goc sema.goc sigqueue.goc string.goc time.goc"
+ for f in $runtime; do
+   merge_c $f $f
+ done
+ 
+-merge_c thread_linux.c thread-linux.c
++merge_c os_linux.c thread-linux.c
+ merge_c mem_linux.c mem.c
+ 
+ (cd ${OLDDIR}/src/pkg && find . -name '*.go' -print) | while read f; do
+diff -Naur gcc-4.8.1.orig/libgo/runtime/chan.c gcc-4.8.1/libgo/runtime/chan.c
+--- gcc-4.8.1.orig/libgo/runtime/chan.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/chan.c	2013-07-16 01:55:04.520470000 -0500
+@@ -35,6 +35,8 @@
+ 	SudoG*	last;
+ };
+ 
++// The garbage collector is assuming that Hchan can only contain pointers into the stack
++// and cannot contain pointers into the heap.
+ struct	Hchan
+ {
+ 	uintgo	qcount;			// total data in the q
+@@ -49,6 +51,8 @@
+ 	Lock;
+ };
+ 
++uint32 runtime_Hchansize = sizeof(Hchan);
++
+ // Buffer follows Hchan immediately in memory.
+ // chanbuf(c, i) is pointer to the i'th slot in the buffer.
+ #define chanbuf(c, i) ((byte*)((c)+1)+(uintptr)(c)->elemsize*(i))
+@@ -107,6 +111,7 @@
+ 	c->elemsize = elem->__size;
+ 	c->elemalign = elem->__align;
+ 	c->dataqsiz = hint;
++	runtime_settype(c, (uintptr)t | TypeInfo_Chan);
+ 
+ 	if(debug)
+ 		runtime_printf("makechan: chan=%p; elemsize=%D; elemalign=%d; dataqsiz=%D\n",
+@@ -875,16 +880,27 @@
+ static void
+ selunlock(Select *sel)
+ {
+-	uint32 i;
+-	Hchan *c, *c0;
++	int32 i, n, r;
++	Hchan *c;
+ 
+-	c = nil;
+-	for(i=sel->ncase; i-->0;) {
+-		c0 = sel->lockorder[i];
+-		if(c0 && c0 != c) {
+-			c = c0;
+-			runtime_unlock(c);
+-		}
++	// We must be very careful here to not touch sel after we have unlocked
++	// the last lock, because sel can be freed right after the last unlock.
++	// Consider the following situation.
++	// First M calls runtime_park() in runtime_selectgo() passing the sel.
++	// Once runtime_park() has unlocked the last lock, another M makes
++	// the G that calls select runnable again and schedules it for execution.
++	// When the G runs on another M, it locks all the locks and frees sel.
++	// Now if the first M touches sel, it will access freed memory.
++	n = (int32)sel->ncase;
++	r = 0;
++	// skip the default case
++	if(n>0 && sel->lockorder[0] == nil)
++		r = 1;
++	for(i = n-1; i >= r; i--) {
++		c = sel->lockorder[i];
++		if(i>0 && sel->lockorder[i-1] == c)
++			continue;  // will unlock it on the next iteration
++		runtime_unlock(c);
+ 	}
+ }
+ 
+@@ -910,7 +926,7 @@
+ selectgo(Select **selp)
+ {
+ 	Select *sel;
+-	uint32 o, i, j;
++	uint32 o, i, j, k;
+ 	Scase *cas, *dfl;
+ 	Hchan *c;
+ 	SudoG *sg;
+@@ -946,12 +962,42 @@
+ 	}
+ 
+ 	// sort the cases by Hchan address to get the locking order.
++	// simple heap sort, to guarantee n log n time and constant stack footprint.
+ 	for(i=0; i<sel->ncase; i++) {
+-		c = sel->scase[i].chan;
+-		for(j=i; j>0 && sel->lockorder[j-1] >= c; j--)
+-			sel->lockorder[j] = sel->lockorder[j-1];
++		j = i;
++		c = sel->scase[j].chan;
++		while(j > 0 && sel->lockorder[k=(j-1)/2] < c) {
++			sel->lockorder[j] = sel->lockorder[k];
++			j = k;
++		}
++		sel->lockorder[j] = c;
++	}
++	for(i=sel->ncase; i-->0; ) {
++		c = sel->lockorder[i];
++		sel->lockorder[i] = sel->lockorder[0];
++		j = 0;
++		for(;;) {
++			k = j*2+1;
++			if(k >= i)
++				break;
++			if(k+1 < i && sel->lockorder[k] < sel->lockorder[k+1])
++				k++;
++			if(c < sel->lockorder[k]) {
++				sel->lockorder[j] = sel->lockorder[k];
++				j = k;
++				continue;
++			}
++			break;
++		}
+ 		sel->lockorder[j] = c;
+ 	}
++	/*
++	for(i=0; i+1<sel->ncase; i++)
++		if(sel->lockorder[i] > sel->lockorder[i+1]) {
++			runtime_printf("i=%d %p %p\n", i, sel->lockorder[i], sel->lockorder[i+1]);
++			runtime_throw("select: broken sort");
++		}
++	*/
+ 	sellock(sel);
+ 
+ loop:
+@@ -1048,7 +1094,7 @@
+ 	c = cas->chan;
+ 
+ 	if(c->dataqsiz > 0)
+-		runtime_throw("selectgo: shouldnt happen");
++		runtime_throw("selectgo: shouldn't happen");
+ 
+ 	if(debug)
+ 		runtime_printf("wait-return: sel=%p c=%p cas=%p kind=%d\n",
+diff -Naur gcc-4.8.1.orig/libgo/runtime/cpuprof.c gcc-4.8.1/libgo/runtime/cpuprof.c
+--- gcc-4.8.1.orig/libgo/runtime/cpuprof.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/cpuprof.c	2013-07-16 01:55:04.520470000 -0500
+@@ -121,7 +121,9 @@
+ // LostProfileData is a no-op function used in profiles
+ // to mark the number of profiling stack traces that were
+ // discarded due to slow data writers.
+-static void LostProfileData(void) {
++static void
++LostProfileData(void)
++{
+ }
+ 
+ extern void runtime_SetCPUProfileRate(intgo)
+@@ -365,7 +367,7 @@
+ 		return ret;
+ 
+ 	// Wait for new log.
+-	runtime_entersyscall();
++	runtime_entersyscallblock();
+ 	runtime_notesleep(&p->wait);
+ 	runtime_exitsyscall();
+ 	runtime_noteclear(&p->wait);
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-cgo.c gcc-4.8.1/libgo/runtime/go-cgo.c
+--- gcc-4.8.1.orig/libgo/runtime/go-cgo.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-cgo.c	2013-07-23 15:26:30.052588000 -0500
+@@ -35,6 +35,9 @@
+   M* m;
+   G* g;
+ 
++  if (runtime_needextram && runtime_cas (&runtime_needextram, 1, 0))
++    runtime_newextram ();
++
+   m = runtime_m ();
+   ++m->ncgocall;
+   g = runtime_g ();
+@@ -71,7 +74,24 @@
+ void
+ syscall_cgocallback ()
+ {
++  M *mp;
++
++  mp = runtime_m ();
++  if (mp == NULL)
++    {
++      runtime_needm ();
++      mp = runtime_m ();
++      mp->dropextram = true;
++    }
++
+   runtime_exitsyscall ();
++
++  mp = runtime_m ();
++  if (mp->needextram)
++    {
++      mp->needextram = 0;
++      runtime_newextram ();
++    }
+ }
+ 
+ /* Prepare to return to C/C++ code from a callback to Go code.  */
+@@ -79,7 +99,15 @@
+ void
+ syscall_cgocallbackdone ()
+ {
++  M *mp;
++
+   runtime_entersyscall ();
++  mp = runtime_m ();
++  if (mp->dropextram && runtime_g ()->ncgo == 0)
++    {
++      mp->dropextram = false;
++      runtime_dropm ();
++    }
+ }
+ 
+ /* Allocate memory and save it in a list visible to the Go garbage
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-defer.c gcc-4.8.1/libgo/runtime/go-defer.c
+--- gcc-4.8.1.orig/libgo/runtime/go-defer.c	2011-11-27 23:45:49.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-defer.c	2013-07-23 15:26:30.052588000 -0500
+@@ -42,6 +42,7 @@
+     {
+       struct __go_defer_stack *d;
+       void (*pfn) (void *);
++      M *m;
+ 
+       d = g->defer;
+       pfn = d->__pfn;
+@@ -51,7 +52,14 @@
+ 	(*pfn) (d->__arg);
+ 
+       g->defer = d->__next;
+-      __go_free (d);
++
++      /* This may be called by a cgo callback routine to defer the
++	 call to syscall.CgocallBackDone, in which case we will not
++	 have a memory context.  Don't try to free anything in that
++	 case--the GC will release it later.  */
++      m = runtime_m ();
++      if (m != NULL && m->mcache != NULL)
++	__go_free (d);
+ 
+       /* Since we are executing a defer function here, we know we are
+ 	 returning from the calling function.  If the calling
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-main.c gcc-4.8.1/libgo/runtime/go-main.c
+--- gcc-4.8.1.orig/libgo/runtime/go-main.c	2012-10-31 22:02:13.000000000 -0500
++++ gcc-4.8.1/libgo/runtime/go-main.c	2013-07-16 01:55:04.520470000 -0500
+@@ -30,9 +30,6 @@
+ 
+ extern char **environ;
+ 
+-extern void runtime_main (void);
+-static void mainstart (void *);
+-
+ /* The main function.  */
+ 
+ int
+@@ -42,13 +39,7 @@
+   runtime_args (argc, (byte **) argv);
+   runtime_osinit ();
+   runtime_schedinit ();
+-  __go_go (mainstart, NULL);
++  __go_go (runtime_main, NULL);
+   runtime_mstart (runtime_m ());
+   abort ();
+ }
+-
+-static void
+-mainstart (void *arg __attribute__ ((unused)))
+-{
+-  runtime_main ();
+-}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-map-index.c gcc-4.8.1/libgo/runtime/go-map-index.c
+--- gcc-4.8.1.orig/libgo/runtime/go-map-index.c	2012-01-17 08:18:39.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-map-index.c	2013-07-16 01:55:04.520470000 -0500
+@@ -98,7 +98,7 @@
+   key_descriptor = descriptor->__map_descriptor->__key_type;
+   key_offset = descriptor->__key_offset;
+   key_size = key_descriptor->__size;
+-  __go_assert (key_size != 0 && key_size != -1UL);
++  __go_assert (key_size != -1UL);
+   equalfn = key_descriptor->__equalfn;
+ 
+   key_hash = key_descriptor->__hashfn (key, key_size);
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-panic.c gcc-4.8.1/libgo/runtime/go-panic.c
+--- gcc-4.8.1.orig/libgo/runtime/go-panic.c	2012-10-31 22:02:13.000000000 -0500
++++ gcc-4.8.1/libgo/runtime/go-panic.c	2013-07-23 15:26:30.052588000 -0500
+@@ -54,6 +54,7 @@
+     {
+       struct __go_defer_stack *d;
+       void (*pfn) (void *);
++      M *m;
+ 
+       d = g->defer;
+       if (d == NULL)
+@@ -95,7 +96,14 @@
+ 	}
+ 
+       g->defer = d->__next;
+-      __go_free (d);
++
++      /* This may be called by a cgo callback routine to defer the
++	 call to syscall.CgocallBackDone, in which case we will not
++	 have a memory context.  Don't try to free anything in that
++	 case--the GC will release it later.  */
++      m = runtime_m ();
++      if (m != NULL && m->mcache != NULL)
++	__go_free (d);
+     }
+ 
+   /* The panic was not recovered.  */
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-reflect-call.c gcc-4.8.1/libgo/runtime/go-reflect-call.c
+--- gcc-4.8.1.orig/libgo/runtime/go-reflect-call.c	2013-03-01 13:26:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-reflect-call.c	2013-06-18 18:50:42.020320000 -0500
+@@ -302,7 +302,9 @@
+   in_types = ((const struct __go_type_descriptor **)
+ 	      func->__in.__values);
+ 
+-  num_args = num_params + (is_interface ? 1 : 0);
++  num_args = (num_params
++	      + (is_interface ? 1 : 0)
++	      + (!is_interface && !is_method ? 1 : 0));
+   args = (ffi_type **) __go_alloc (num_args * sizeof (ffi_type *));
+   i = 0;
+   off = 0;
+@@ -319,6 +321,12 @@
+   for (; i < num_params; ++i)
+     args[i + off] = go_type_to_ffi (in_types[i]);
+ 
++  if (!is_interface && !is_method)
++    {
++      // There is a closure argument, a pointer.
++      args[i + off] = &ffi_type_pointer;
++    }
++
+   rettype = go_func_return_ffi (func);
+ 
+   status = ffi_prep_cif (cif, FFI_DEFAULT_ABI, num_args, rettype, args);
+@@ -491,11 +499,24 @@
+ }
+ 
+ /* Call a function.  The type of the function is FUNC_TYPE, and the
+-   address is FUNC_ADDR.  PARAMS is an array of parameter addresses.
+-   RESULTS is an array of result addresses.  */
++   closure is FUNC_VAL.  PARAMS is an array of parameter addresses.
++   RESULTS is an array of result addresses.
++
++   If IS_INTERFACE is true this is a call to an interface method and
++   the first argument is the receiver, which is always a pointer.
++   This argument, the receiver, is not described in FUNC_TYPE.
++
++   If IS_METHOD is true this is a call to a method expression.  The
++   first argument is the receiver.  It is described in FUNC_TYPE, but
++   regardless of FUNC_TYPE, it is passed as a pointer.
++
++   If neither IS_INTERFACE nor IS_METHOD is true then we are calling a
++   function indirectly, and the caller is responsible for passing a
++   trailing closure argument, a pointer, which is not described in
++   FUNC_TYPE.  */
+ 
+ void
+-reflect_call (const struct __go_func_type *func_type, const void *func_addr,
++reflect_call (const struct __go_func_type *func_type, FuncVal *func_val,
+ 	      _Bool is_interface, _Bool is_method, void **params,
+ 	      void **results)
+ {
+@@ -507,7 +528,7 @@
+ 
+   call_result = (unsigned char *) malloc (go_results_size (func_type));
+ 
+-  ffi_call (&cif, func_addr, call_result, params);
++  ffi_call (&cif, func_val->fn, call_result, params);
+ 
+   /* Some day we may need to free result values if RESULTS is
+      NULL.  */
+@@ -521,7 +542,7 @@
+ 
+ void
+ reflect_call (const struct __go_func_type *func_type __attribute__ ((unused)),
+-	      const void *func_addr __attribute__ ((unused)),
++	      FuncVal *func_val __attribute__ ((unused)),
+ 	      _Bool is_interface __attribute__ ((unused)),
+ 	      _Bool is_method __attribute__ ((unused)),
+ 	      void **params __attribute__ ((unused)),
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-reflect-map.c gcc-4.8.1/libgo/runtime/go-reflect-map.c
+--- gcc-4.8.1.orig/libgo/runtime/go-reflect-map.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-reflect-map.c	2013-07-16 01:55:04.520470000 -0500
+@@ -238,3 +238,12 @@
+   __builtin_memcpy (ret, &map, sizeof (void *));
+   return (uintptr_t) ret;
+ }
++
++extern _Bool ismapkey (const struct __go_type_descriptor *)
++  __asm__ (GOSYM_PREFIX "reflect.ismapkey");
++
++_Bool
++ismapkey (const struct __go_type_descriptor *typ)
++{
++  return typ != NULL && typ->__hashfn != __go_type_hash_error;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-signal.c gcc-4.8.1/libgo/runtime/go-signal.c
+--- gcc-4.8.1.orig/libgo/runtime/go-signal.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-signal.c	2013-07-22 23:42:18.506577000 -0500
+@@ -12,6 +12,7 @@
+ #include "runtime.h"
+ #include "go-assert.h"
+ #include "go-panic.h"
++#include "signal_unix.h"
+ 
+ #ifndef SA_RESTART
+   #define SA_RESTART 0
+@@ -157,35 +158,45 @@
+ /* Handle a signal, for cases where we don't panic.  We can split the
+    stack here.  */
+ 
+-static void
+-sig_handler (int sig)
++void
++runtime_sighandler (int sig, Siginfo *info,
++		    void *context __attribute__ ((unused)), G *gp)
+ {
++  M *m;
+   int i;
+ 
+-  if (runtime_m () == NULL)
+-    {
+-      runtime_badsignal (sig);
+-      return;
+-    }
++  m = runtime_m ();
+ 
+ #ifdef SIGPROF
+   if (sig == SIGPROF)
+     {
+-      runtime_sigprof ();
++      if (m != NULL && gp != m->g0 && gp != m->gsignal)
++	runtime_sigprof ();
+       return;
+     }
+ #endif
+ 
++  if (m == NULL)
++    {
++      runtime_badsignal (sig);
++      return;
++    }
++
+   for (i = 0; runtime_sigtab[i].sig != -1; ++i)
+     {
+       SigTab *t;
++      bool notify, crash;
+ 
+       t = &runtime_sigtab[i];
+ 
+       if (t->sig != sig)
+ 	continue;
+ 
+-      if ((t->flags & SigNotify) != 0)
++      notify = false;
++#ifdef SA_SIGINFO
++      notify = info != NULL && info->si_code == SI_USER;
++#endif
++      if (notify || (t->flags & SigNotify) != 0)
+ 	{
+ 	  if (__go_sigsend (sig))
+ 	    return;
+@@ -210,9 +221,15 @@
+ 	  runtime_printf ("%s\n", name);
+       }
+ 
++      if (m->lockedg != NULL && m->ncgo > 0 && gp == m->g0)
++	{
++	  runtime_printf("signal arrived during cgo execution\n");
++	  gp = m->lockedg;
++	}
++
+       runtime_printf ("\n");
+ 
+-      if (runtime_gotraceback ())
++      if (runtime_gotraceback (&crash))
+ 	{
+ 	  G *g;
+ 
+@@ -225,6 +242,9 @@
+ 	     a readable form.  */
+ 	}
+ 
++      if (crash)
++	runtime_crash ();
++
+       runtime_exit (2);
+     }
+ 
+@@ -259,15 +279,14 @@
+    permitted to split the stack.  */
+ 
+ static void
+-sig_panic_info_handler (int sig, siginfo_t *info,
+-			void *context __attribute__ ((unused)))
++sig_panic_info_handler (int sig, Siginfo *info, void *context)
+ {
+   G *g;
+ 
+   g = runtime_g ();
+   if (g == NULL || info->si_code == SI_USER)
+     {
+-      sig_handler (sig);
++      runtime_sighandler (sig, info, context, g);
+       return;
+     }
+ 
+@@ -331,7 +350,7 @@
+   g = runtime_g ();
+   if (g == NULL)
+     {
+-      sig_handler (sig);
++      runtime_sighandler (sig, NULL, NULL, g);
+       return;
+     }
+ 
+@@ -373,10 +392,10 @@
+    the stack.  */
+ 
+ static void
+-sig_tramp (int) __attribute__ ((no_split_stack));
++sig_tramp_info (int, Siginfo *, void *) __attribute__ ((no_split_stack));
+ 
+ static void
+-sig_tramp (int sig)
++sig_tramp_info (int sig, Siginfo *info, void *context)
+ {
+   G *gp;
+   M *mp;
+@@ -403,7 +422,7 @@
+ #endif
+     }
+ 
+-  sig_handler (sig);
++  runtime_sighandler (sig, info, context, gp);
+ 
+   /* We are going to return back to the signal trampoline and then to
+      whatever we were doing before we got the signal.  Restore the
+@@ -418,8 +437,20 @@
+     }
+ }
+ 
++#ifndef SA_SIGINFO
++
++static void sig_tramp (int sig) __attribute__ ((no_split_stack));
++
++static void
++sig_tramp (int sig)
++{
++  sig_tramp_info (sig, NULL, NULL);
++}
++
++#endif
++
+ void
+-runtime_setsig (int32 i, bool def __attribute__ ((unused)), bool restart)
++runtime_setsig (int32 i, GoSighandler *fn, bool restart)
+ {
+   struct sigaction sa;
+   int r;
+@@ -434,17 +465,30 @@
+ 
+   if ((t->flags & SigPanic) == 0)
+     {
++#ifdef SA_SIGINFO
++      sa.sa_flags = SA_ONSTACK | SA_SIGINFO;
++      if (fn == runtime_sighandler)
++	fn = (void *) sig_tramp_info;
++      sa.sa_sigaction = (void *) fn;
++#else
+       sa.sa_flags = SA_ONSTACK;
+-      sa.sa_handler = sig_tramp;
++      if (fn == runtime_sighandler)
++	fn = (void *) sig_tramp;
++      sa.sa_handler = (void *) fn;
++#endif
+     }
+   else
+     {
+ #ifdef SA_SIGINFO
+       sa.sa_flags = SA_SIGINFO;
+-      sa.sa_sigaction = sig_panic_info_handler;
++      if (fn == runtime_sighandler)
++	fn = (void *) sig_panic_info_handler;
++      sa.sa_sigaction = (void *) fn;
+ #else
+       sa.sa_flags = 0;
+-      sa.sa_handler = sig_panic_handler;
++      if (fn == runtime_sighandler)
++	fn = (void *) sig_panic_handler;
++      sa.sa_handler = (void *) fn;
+ #endif
+     }
+ 
+@@ -455,6 +499,37 @@
+     __go_assert (0);
+ }
+ 
++GoSighandler*
++runtime_getsig (int32 i)
++{
++  struct sigaction sa;
++  int r;
++  SigTab *t;
++
++  memset (&sa, 0, sizeof sa);
++
++  r = sigemptyset (&sa.sa_mask);
++  __go_assert (r == 0);
++
++  t = &runtime_sigtab[i];
++
++  if (sigaction (t->sig, NULL, &sa) != 0)
++    runtime_throw ("sigaction read failure");
++
++  if ((void *) sa.sa_handler == sig_tramp_info)
++    return runtime_sighandler;
++#ifdef SA_SIGINFO
++  if ((void *) sa.sa_handler == sig_panic_info_handler)
++    return runtime_sighandler;
++#else
++  if ((void *) sa.sa_handler == sig_tramp
++      || (void *) sa.sa_handler == sig_panic_handler)
++    return runtime_sighandler;
++#endif
++
++  return (void *) sa.sa_handler;
++}
++
+ /* Used by the os package to raise SIGPIPE.  */
+ 
+ void os_sigpipe (void) __asm__ (GOSYM_PREFIX "os.sigpipe");
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-unsafe-newarray.c gcc-4.8.1/libgo/runtime/go-unsafe-newarray.c
+--- gcc-4.8.1.orig/libgo/runtime/go-unsafe-newarray.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-unsafe-newarray.c	2013-07-16 01:55:04.520470000 -0500
+@@ -21,21 +21,5 @@
+ void *
+ unsafe_NewArray (const struct __go_type_descriptor *descriptor, intgo n)
+ {
+-  uint64 size;
+-  void *ret;
+-
+-  size = n * descriptor->__size;
+-  if (size == 0)
+-    ret = &runtime_zerobase;
+-  else if ((descriptor->__code & GO_NO_POINTERS) != 0)
+-    ret = runtime_mallocgc (size, FlagNoPointers, 1, 1);
+-  else
+-    {
+-      ret = runtime_mallocgc (size, 0, 1, 1);
+-
+-      if (UseSpanType)
+-	runtime_settype (ret, (uintptr) descriptor | TypeInfo_Array);
+-    }
+-
+-  return ret;
++  return runtime_cnewarray (descriptor, n);
+ }
+diff -Naur gcc-4.8.1.orig/libgo/runtime/go-unsafe-new.c gcc-4.8.1/libgo/runtime/go-unsafe-new.c
+--- gcc-4.8.1.orig/libgo/runtime/go-unsafe-new.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/go-unsafe-new.c	2013-07-16 01:55:04.520470000 -0500
+@@ -21,14 +21,5 @@
+ void *
+ unsafe_New (const struct __go_type_descriptor *descriptor)
+ {
+-  uint32 flag;
+-  void *ret;
+-
+-  flag = (descriptor->__code & GO_NO_POINTERS) != 0 ? FlagNoPointers : 0;
+-  ret = runtime_mallocgc (descriptor->__size, flag, 1, 1);
+-
+-  if (UseSpanType && flag == 0)
+-    runtime_settype (ret, (uintptr) descriptor | TypeInfo_SingleObject);
+-
+-  return ret;
++  return runtime_cnew (descriptor);
+ }
+diff -Naur gcc-4.8.1.orig/libgo/runtime/lock_futex.c gcc-4.8.1/libgo/runtime/lock_futex.c
+--- gcc-4.8.1.orig/libgo/runtime/lock_futex.c	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/lock_futex.c	2013-07-16 01:55:04.520470000 -0500
+@@ -41,7 +41,7 @@
+ 		runtime_throw("runtime_lock: lock count");
+ 
+ 	// Speculative grab for lock.
+-	v = runtime_xchg(&l->key, MUTEX_LOCKED);
++	v = runtime_xchg((uint32*)&l->key, MUTEX_LOCKED);
+ 	if(v == MUTEX_UNLOCKED)
+ 		return;
+ 
+@@ -64,7 +64,7 @@
+ 		// Try for lock, spinning.
+ 		for(i = 0; i < spin; i++) {
+ 			while(l->key == MUTEX_UNLOCKED)
+-				if(runtime_cas(&l->key, MUTEX_UNLOCKED, wait))
++				if(runtime_cas((uint32*)&l->key, MUTEX_UNLOCKED, wait))
+ 					return;
+ 			runtime_procyield(ACTIVE_SPIN_CNT);
+ 		}
+@@ -72,17 +72,17 @@
+ 		// Try for lock, rescheduling.
+ 		for(i=0; i < PASSIVE_SPIN; i++) {
+ 			while(l->key == MUTEX_UNLOCKED)
+-				if(runtime_cas(&l->key, MUTEX_UNLOCKED, wait))
++				if(runtime_cas((uint32*)&l->key, MUTEX_UNLOCKED, wait))
+ 					return;
+ 			runtime_osyield();
+ 		}
+ 
+ 		// Sleep.
+-		v = runtime_xchg(&l->key, MUTEX_SLEEPING);
++		v = runtime_xchg((uint32*)&l->key, MUTEX_SLEEPING);
+ 		if(v == MUTEX_UNLOCKED)
+ 			return;
+ 		wait = MUTEX_SLEEPING;
+-		runtime_futexsleep(&l->key, MUTEX_SLEEPING, -1);
++		runtime_futexsleep((uint32*)&l->key, MUTEX_SLEEPING, -1);
+ 	}
+ }
+ 
+@@ -94,11 +94,11 @@
+ 	if(--runtime_m()->locks < 0)
+ 		runtime_throw("runtime_unlock: lock count");
+ 
+-	v = runtime_xchg(&l->key, MUTEX_UNLOCKED);
++	v = runtime_xchg((uint32*)&l->key, MUTEX_UNLOCKED);
+ 	if(v == MUTEX_UNLOCKED)
+ 		runtime_throw("unlock of unlocked lock");
+ 	if(v == MUTEX_SLEEPING)
+-		runtime_futexwakeup(&l->key, 1);
++		runtime_futexwakeup((uint32*)&l->key, 1);
+ }
+ 
+ // One-time notifications.
+@@ -111,9 +111,9 @@
+ void
+ runtime_notewakeup(Note *n)
+ {
+-	if(runtime_xchg(&n->key, 1))
++	if(runtime_xchg((uint32*)&n->key, 1))
+ 		runtime_throw("notewakeup - double wakeup");
+-	runtime_futexwakeup(&n->key, 1);
++	runtime_futexwakeup((uint32*)&n->key, 1);
+ }
+ 
+ void
+@@ -121,8 +121,8 @@
+ {
+ 	if(runtime_m()->profilehz > 0)
+ 		runtime_setprof(false);
+-	while(runtime_atomicload(&n->key) == 0)
+-		runtime_futexsleep(&n->key, 0, -1);
++	while(runtime_atomicload((uint32*)&n->key) == 0)
++		runtime_futexsleep((uint32*)&n->key, 0, -1);
+ 	if(runtime_m()->profilehz > 0)
+ 		runtime_setprof(true);
+ }
+@@ -137,15 +137,15 @@
+ 		return;
+ 	}
+ 
+-	if(runtime_atomicload(&n->key) != 0)
++	if(runtime_atomicload((uint32*)&n->key) != 0)
+ 		return;
+ 
+ 	if(runtime_m()->profilehz > 0)
+ 		runtime_setprof(false);
+ 	deadline = runtime_nanotime() + ns;
+ 	for(;;) {
+-		runtime_futexsleep(&n->key, 0, ns);
+-		if(runtime_atomicload(&n->key) != 0)
++		runtime_futexsleep((uint32*)&n->key, 0, ns);
++		if(runtime_atomicload((uint32*)&n->key) != 0)
+ 			break;
+ 		now = runtime_nanotime();
+ 		if(now >= deadline)
+diff -Naur gcc-4.8.1.orig/libgo/runtime/lock_sema.c gcc-4.8.1/libgo/runtime/lock_sema.c
+--- gcc-4.8.1.orig/libgo/runtime/lock_sema.c	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/lock_sema.c	2013-07-16 01:55:04.520470000 -0500
+@@ -43,7 +43,7 @@
+ 		runtime_throw("runtime_lock: lock count");
+ 
+ 	// Speculative grab for lock.
+-	if(runtime_casp(&l->waitm, nil, (void*)LOCKED))
++	if(runtime_casp((void**)&l->key, nil, (void*)LOCKED))
+ 		return;
+ 
+ 	if(m->waitsema == 0)
+@@ -56,10 +56,10 @@
+ 		spin = ACTIVE_SPIN;
+ 
+ 	for(i=0;; i++) {
+-		v = (uintptr)runtime_atomicloadp(&l->waitm);
++		v = (uintptr)runtime_atomicloadp((void**)&l->key);
+ 		if((v&LOCKED) == 0) {
+ unlocked:
+-			if(runtime_casp(&l->waitm, (void*)v, (void*)(v|LOCKED)))
++			if(runtime_casp((void**)&l->key, (void*)v, (void*)(v|LOCKED)))
+ 				return;
+ 			i = 0;
+ 		}
+@@ -74,9 +74,9 @@
+ 			// Queue this M.
+ 			for(;;) {
+ 				m->nextwaitm = (void*)(v&~LOCKED);
+-				if(runtime_casp(&l->waitm, (void*)v, (void*)((uintptr)m|LOCKED)))
++				if(runtime_casp((void**)&l->key, (void*)v, (void*)((uintptr)m|LOCKED)))
+ 					break;
+-				v = (uintptr)runtime_atomicloadp(&l->waitm);
++				v = (uintptr)runtime_atomicloadp((void**)&l->key);
+ 				if((v&LOCKED) == 0)
+ 					goto unlocked;
+ 			}
+@@ -99,15 +99,15 @@
+ 		runtime_throw("runtime_unlock: lock count");
+ 
+ 	for(;;) {
+-		v = (uintptr)runtime_atomicloadp(&l->waitm);
++		v = (uintptr)runtime_atomicloadp((void**)&l->key);
+ 		if(v == LOCKED) {
+-			if(runtime_casp(&l->waitm, (void*)LOCKED, nil))
++			if(runtime_casp((void**)&l->key, (void*)LOCKED, nil))
+ 				break;
+ 		} else {
+ 			// Other M's are waiting for the lock.
+ 			// Dequeue an M.
+ 			mp = (void*)(v&~LOCKED);
+-			if(runtime_casp(&l->waitm, (void*)v, mp->nextwaitm)) {
++			if(runtime_casp((void**)&l->key, (void*)v, mp->nextwaitm)) {
+ 				// Dequeued an M.  Wake it.
+ 				runtime_semawakeup(mp);
+ 				break;
+@@ -120,7 +120,7 @@
+ void
+ runtime_noteclear(Note *n)
+ {
+-	n->waitm = nil;
++	n->key = 0;
+ }
+ 
+ void
+@@ -129,8 +129,8 @@
+ 	M *mp;
+ 
+ 	do
+-		mp = runtime_atomicloadp(&n->waitm);
+-	while(!runtime_casp(&n->waitm, mp, (void*)LOCKED));
++		mp = runtime_atomicloadp((void**)&n->key);
++	while(!runtime_casp((void**)&n->key, mp, (void*)LOCKED));
+ 
+ 	// Successfully set waitm to LOCKED.
+ 	// What was it before?
+@@ -153,8 +153,8 @@
+ 	m = runtime_m();
+ 	if(m->waitsema == 0)
+ 		m->waitsema = runtime_semacreate();
+-	if(!runtime_casp(&n->waitm, nil, m)) {  // must be LOCKED (got wakeup)
+-		if(n->waitm != (void*)LOCKED)
++	if(!runtime_casp((void**)&n->key, nil, m)) {  // must be LOCKED (got wakeup)
++		if(n->key != LOCKED)
+ 			runtime_throw("notesleep - waitm out of sync");
+ 		return;
+ 	}
+@@ -183,8 +183,8 @@
+ 		m->waitsema = runtime_semacreate();
+ 
+ 	// Register for wakeup on n->waitm.
+-	if(!runtime_casp(&n->waitm, nil, m)) {  // must be LOCKED (got wakeup already)
+-		if(n->waitm != (void*)LOCKED)
++	if(!runtime_casp((void**)&n->key, nil, m)) {  // must be LOCKED (got wakeup already)
++		if(n->key != LOCKED)
+ 			runtime_throw("notetsleep - waitm out of sync");
+ 		return;
+ 	}
+@@ -219,10 +219,10 @@
+ 	// so that any notewakeup racing with the return does not
+ 	// try to grant us the semaphore when we don't expect it.
+ 	for(;;) {
+-		mp = runtime_atomicloadp(&n->waitm);
++		mp = runtime_atomicloadp((void**)&n->key);
+ 		if(mp == m) {
+ 			// No wakeup yet; unregister if possible.
+-			if(runtime_casp(&n->waitm, mp, nil))
++			if(runtime_casp((void**)&n->key, mp, nil))
+ 				return;
+ 		} else if(mp == (M*)LOCKED) {
+ 			// Wakeup happened so semaphore is available.
+diff -Naur gcc-4.8.1.orig/libgo/runtime/malloc.goc gcc-4.8.1/libgo/runtime/malloc.goc
+--- gcc-4.8.1.orig/libgo/runtime/malloc.goc	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/malloc.goc	2013-07-24 17:30:39.208579000 -0500
+@@ -18,7 +18,7 @@
+ #include "go-type.h"
+ #include "race.h"
+ 
+-MHeap runtime_mheap;
++MHeap *runtime_mheap;
+ 
+ int32	runtime_checking;
+ 
+@@ -41,12 +41,25 @@
+ 	uintptr npages;
+ 	MSpan *s;
+ 	void *v;
++	bool incallback;
+ 
+ 	m = runtime_m();
+ 	g = runtime_g();
+-	if(g->status == Gsyscall)
+-		dogc = 0;
+-	if(runtime_gcwaiting && g != m->g0 && m->locks == 0 && g->status != Gsyscall) {
++
++	incallback = false;
++	if(m->mcache == nil && g->ncgo > 0) {
++		// For gccgo this case can occur when a cgo or SWIG function
++		// has an interface return type and the function
++		// returns a non-pointer, so memory allocation occurs
++		// after syscall.Cgocall but before syscall.CgocallDone.
++		// We treat it as a callback.
++		runtime_exitsyscall();
++		m = runtime_m();
++		incallback = true;
++		dogc = false;
++	}
++
++	if(runtime_gcwaiting && g != m->g0 && m->locks == 0 && dogc) {
+ 		runtime_gosched();
+ 		m = runtime_m();
+ 	}
+@@ -78,7 +91,7 @@
+ 		npages = size >> PageShift;
+ 		if((size & PageMask) != 0)
+ 			npages++;
+-		s = runtime_MHeap_Alloc(&runtime_mheap, npages, 0, 1, zeroed);
++		s = runtime_MHeap_Alloc(runtime_mheap, npages, 0, 1, zeroed);
+ 		if(s == nil)
+ 			runtime_throw("out of memory");
+ 		size = npages<<PageShift;
+@@ -92,9 +105,9 @@
+ 
+ 	if (sizeof(void*) == 4 && c->local_total_alloc >= (1<<30)) {
+ 		// purge cache stats to prevent overflow
+-		runtime_lock(&runtime_mheap);
++		runtime_lock(runtime_mheap);
+ 		runtime_purgecachedstats(c);
+-		runtime_unlock(&runtime_mheap);
++		runtime_unlock(runtime_mheap);
+ 	}
+ 
+ 	if(!(flag & FlagNoGC))
+@@ -129,6 +142,10 @@
+ 		runtime_racemalloc(v, size, m->racepc);
+ 		m->racepc = nil;
+ 	}
++
++	if(incallback)
++		runtime_entersyscall();
++
+ 	return v;
+ }
+ 
+@@ -175,17 +192,17 @@
+ 	if(sizeclass == 0) {
+ 		// Large object.
+ 		size = s->npages<<PageShift;
+-		*(uintptr*)(s->start<<PageShift) = 1;	// mark as "needs to be zeroed"
++		*(uintptr*)(s->start<<PageShift) = (uintptr)0xfeedfeedfeedfeedll;	// mark as "needs to be zeroed"
+ 		// Must mark v freed before calling unmarkspan and MHeap_Free:
+ 		// they might coalesce v into other spans and change the bitmap further.
+ 		runtime_markfreed(v, size);
+ 		runtime_unmarkspan(v, 1<<PageShift);
+-		runtime_MHeap_Free(&runtime_mheap, s, 1);
++		runtime_MHeap_Free(runtime_mheap, s, 1);
+ 	} else {
+ 		// Small object.
+ 		size = runtime_class_to_size[sizeclass];
+ 		if(size > sizeof(uintptr))
+-			((uintptr*)v)[1] = 1;	// mark as "needs to be zeroed"
++			((uintptr*)v)[1] = (uintptr)0xfeedfeedfeedfeedll;	// mark as "needs to be zeroed"
+ 		// Must mark v freed before calling MCache_Free:
+ 		// it might coalesce v and other blocks into a bigger span
+ 		// and change the bitmap further.
+@@ -213,12 +230,12 @@
+ 	m->mcache->local_nlookup++;
+ 	if (sizeof(void*) == 4 && m->mcache->local_nlookup >= (1<<30)) {
+ 		// purge cache stats to prevent overflow
+-		runtime_lock(&runtime_mheap);
++		runtime_lock(runtime_mheap);
+ 		runtime_purgecachedstats(m->mcache);
+-		runtime_unlock(&runtime_mheap);
++		runtime_unlock(runtime_mheap);
+ 	}
+ 
+-	s = runtime_MHeap_LookupMaybe(&runtime_mheap, v);
++	s = runtime_MHeap_LookupMaybe(runtime_mheap, v);
+ 	if(sp)
+ 		*sp = s;
+ 	if(s == nil) {
+@@ -262,11 +279,11 @@
+ 	intgo rate;
+ 	MCache *c;
+ 
+-	runtime_lock(&runtime_mheap);
+-	c = runtime_FixAlloc_Alloc(&runtime_mheap.cachealloc);
+-	mstats.mcache_inuse = runtime_mheap.cachealloc.inuse;
+-	mstats.mcache_sys = runtime_mheap.cachealloc.sys;
+-	runtime_unlock(&runtime_mheap);
++	runtime_lock(runtime_mheap);
++	c = runtime_FixAlloc_Alloc(&runtime_mheap->cachealloc);
++	mstats.mcache_inuse = runtime_mheap->cachealloc.inuse;
++	mstats.mcache_sys = runtime_mheap->cachealloc.sys;
++	runtime_unlock(runtime_mheap);
+ 	runtime_memclr((byte*)c, sizeof(*c));
+ 
+ 	// Set first allocation sample size.
+@@ -283,10 +300,10 @@
+ runtime_freemcache(MCache *c)
+ {
+ 	runtime_MCache_ReleaseAll(c);
+-	runtime_lock(&runtime_mheap);
++	runtime_lock(runtime_mheap);
+ 	runtime_purgecachedstats(c);
+-	runtime_FixAlloc_Free(&runtime_mheap.cachealloc, c);
+-	runtime_unlock(&runtime_mheap);
++	runtime_FixAlloc_Free(&runtime_mheap->cachealloc, c);
++	runtime_unlock(runtime_mheap);
+ }
+ 
+ void
+@@ -319,7 +336,7 @@
+ {
+ 	byte *p;
+ 	uintptr arena_size, bitmap_size;
+-	extern byte end[];
++	extern byte _end[];
+ 	byte *want;
+ 	uintptr limit;
+ 
+@@ -334,9 +351,15 @@
+ 	USED(arena_size);
+ 	USED(bitmap_size);
+ 
++	if((runtime_mheap = runtime_SysAlloc(sizeof(*runtime_mheap))) == nil)
++		runtime_throw("runtime: cannot allocate heap metadata");
++
+ 	runtime_InitSizes();
+ 
+-	limit = runtime_memlimit();
++	// limit = runtime_memlimit();
++	// See https://code.google.com/p/go/issues/detail?id=5049
++	// TODO(rsc): Fix after 1.1.
++	limit = 0;
+ 
+ 	// Set up the allocation arena, a contiguous area of memory where
+ 	// allocated data will be found.  The arena begins with a bitmap large
+@@ -402,7 +425,7 @@
+ 		// So adjust it upward a little bit ourselves: 1/4 MB to get
+ 		// away from the running binary image and then round up
+ 		// to a MB boundary.
+-		want = (byte*)(((uintptr)end + (1<<18) + (1<<20) - 1)&~((1<<20)-1));
++		want = (byte*)(((uintptr)_end + (1<<18) + (1<<20) - 1)&~((1<<20)-1));
+ 		if(0xffffffff - (uintptr)want <= bitmap_size + arena_size)
+ 		  want = 0;
+ 		p = runtime_SysReserve(want, bitmap_size + arena_size);
+@@ -414,13 +437,13 @@
+ 	if((uintptr)p & (((uintptr)1<<PageShift)-1))
+ 		runtime_throw("runtime: SysReserve returned unaligned address");
+ 
+-	runtime_mheap.bitmap = p;
+-	runtime_mheap.arena_start = p + bitmap_size;
+-	runtime_mheap.arena_used = runtime_mheap.arena_start;
+-	runtime_mheap.arena_end = runtime_mheap.arena_start + arena_size;
++	runtime_mheap->bitmap = p;
++	runtime_mheap->arena_start = p + bitmap_size;
++	runtime_mheap->arena_used = runtime_mheap->arena_start;
++	runtime_mheap->arena_end = runtime_mheap->arena_start + arena_size;
+ 
+ 	// Initialize the rest of the allocator.	
+-	runtime_MHeap_Init(&runtime_mheap, runtime_SysAlloc);
++	runtime_MHeap_Init(runtime_mheap, runtime_SysAlloc);
+ 	runtime_m()->mcache = runtime_allocmcache();
+ 
+ 	// See if it works.
+@@ -519,8 +542,8 @@
+ 		// (Manually inlined copy of runtime_MHeap_Lookup)
+ 		p = (uintptr)v>>PageShift;
+ 		if(sizeof(void*) == 8)
+-			p -= (uintptr)runtime_mheap.arena_start >> PageShift;
+-		s = runtime_mheap.map[p];
++			p -= (uintptr)runtime_mheap->arena_start >> PageShift;
++		s = runtime_mheap->map[p];
+ 
+ 		if(s->sizeclass == 0) {
+ 			s->types.compression = MTypes_Single;
+@@ -537,9 +560,11 @@
+ 			nbytes3 = 8*sizeof(uintptr) + 1*ntypes;
+ 
+ 			if(!sysalloc) {
+-				data3 = runtime_mallocgc(nbytes3, FlagNoPointers, 0, 1);
++				data3 = runtime_mallocgc(nbytes3, FlagNoProfiling|FlagNoPointers, 0, 1);
+ 			} else {
+ 				data3 = runtime_SysAlloc(nbytes3);
++				if(data3 == nil)
++					runtime_throw("runtime: cannot allocate memory");
+ 				if(0) runtime_printf("settype(0->3): SysAlloc(%x) --> %p\n", (uint32)nbytes3, data3);
+ 			}
+ 
+@@ -573,9 +598,11 @@
+ 				nbytes2 = ntypes * sizeof(uintptr);
+ 
+ 				if(!sysalloc) {
+-					data2 = runtime_mallocgc(nbytes2, FlagNoPointers, 0, 1);
++					data2 = runtime_mallocgc(nbytes2, FlagNoProfiling|FlagNoPointers, 0, 1);
+ 				} else {
+ 					data2 = runtime_SysAlloc(nbytes2);
++					if(data2 == nil)
++						runtime_throw("runtime: cannot allocate memory");
+ 					if(0) runtime_printf("settype.(3->2): SysAlloc(%x) --> %p\n", (uint32)nbytes2, data2);
+ 				}
+ 
+@@ -633,7 +660,7 @@
+ 	}
+ 
+ 	if(DebugTypeAtBlockEnd) {
+-		s = runtime_MHeap_Lookup(&runtime_mheap, v);
++		s = runtime_MHeap_Lookup(runtime_mheap, v);
+ 		*(uintptr*)((uintptr)v+s->elemsize-sizeof(uintptr)) = t;
+ 	}
+ }
+@@ -672,7 +699,7 @@
+ 	uintptr t, ofs;
+ 	byte *data;
+ 
+-	s = runtime_MHeap_LookupMaybe(&runtime_mheap, v);
++	s = runtime_MHeap_LookupMaybe(runtime_mheap, v);
+ 	if(s != nil) {
+ 		t = 0;
+ 		switch(s->types.compression) {
+@@ -731,9 +758,8 @@
+ 		ret = runtime_mallocgc(typ->__size, flag, 1, 1);
+ 
+ 		if(UseSpanType && !flag) {
+-			if(false) {
++			if(false)
+ 				runtime_printf("new %S: %p\n", *typ->__reflection, ret);
+-			}
+ 			runtime_settype(ret, (uintptr)typ | TypeInfo_SingleObject);
+ 		}
+ 	}
+@@ -741,6 +767,45 @@
+ 	return ret;
+ }
+ 
++static void*
++cnew(const Type *typ, intgo n, int32 objtyp)
++{
++	uint32 flag;
++	void *ret;
++
++	if((objtyp&(PtrSize-1)) != objtyp)
++		runtime_throw("runtime: invalid objtyp");
++	if(n < 0 || (typ->__size > 0 && (uintptr)n > (MaxMem/typ->__size)))
++		runtime_panicstring("runtime: allocation size out of range");
++	if(typ->__size == 0 || n == 0) {
++		// All 0-length allocations use this pointer.
++		// The language does not require the allocations to
++		// have distinct values.
++		return &runtime_zerobase;
++	}
++	flag = typ->__code&GO_NO_POINTERS ? FlagNoPointers : 0;
++	ret = runtime_mallocgc(typ->__size*n, flag, 1, 1);
++	if(UseSpanType && !flag) {
++		if(false)
++			runtime_printf("cnew [%D]%S: %p\n", (int64)n, *typ->__reflection, ret);
++		runtime_settype(ret, (uintptr)typ | TypeInfo_SingleObject);
++	}
++	return ret;
++}
++
++// same as runtime_new, but callable from C
++void*
++runtime_cnew(const Type *typ)
++{
++	return cnew(typ, 1, TypeInfo_SingleObject);
++}
++
++void*
++runtime_cnewarray(const Type *typ, intgo n)
++{
++	return cnew(typ, n, TypeInfo_Array);
++}
++
+ func GC() {
+ 	runtime_gc(1);
+ }
+diff -Naur gcc-4.8.1.orig/libgo/runtime/malloc.h gcc-4.8.1/libgo/runtime/malloc.h
+--- gcc-4.8.1.orig/libgo/runtime/malloc.h	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/malloc.h	2013-07-16 01:55:04.520470000 -0500
+@@ -86,6 +86,7 @@
+ typedef struct MStats	MStats;
+ typedef struct MLink	MLink;
+ typedef struct MTypes	MTypes;
++typedef struct GCStats	GCStats;
+ 
+ enum
+ {
+@@ -114,10 +115,18 @@
+ 	HeapAllocChunk = 1<<20,		// Chunk size for heap growth
+ 
+ 	// Number of bits in page to span calculations (4k pages).
+-	// On 64-bit, we limit the arena to 128GB, or 37 bits.
++	// On Windows 64-bit we limit the arena to 32GB or 35 bits (see below for reason).
++	// On other 64-bit platforms, we limit the arena to 128GB, or 37 bits.
+ 	// On 32-bit, we don't bother limiting anything, so we use the full 32-bit address.
+ #if __SIZEOF_POINTER__ == 8
++#ifdef GOOS_windows
++	// Windows counts memory used by page table into committed memory
++	// of the process, so we can't reserve too much memory.
++	// See http://golang.org/issue/5402 and http://golang.org/issue/5236.
++	MHeapMap_Bits = 35 - PageShift,
++#else
+ 	MHeapMap_Bits = 37 - PageShift,
++#endif
+ #else
+ 	MHeapMap_Bits = 32 - PageShift,
+ #endif
+@@ -133,7 +142,7 @@
+ // This must be a #define instead of an enum because it
+ // is so large.
+ #if __SIZEOF_POINTER__ == 8
+-#define	MaxMem	(1ULL<<(MHeapMap_Bits+PageShift))	/* 128 GB */
++#define	MaxMem	(1ULL<<(MHeapMap_Bits+PageShift))	/* 128 GB or 32 GB */
+ #else
+ #define	MaxMem	((uintptr)-1)
+ #endif
+@@ -229,7 +238,7 @@
+ 	uint64	buckhash_sys;	// profiling bucket hash table
+ 
+ 	// Statistics about garbage collector.
+-	// Protected by stopping the world during GC.
++	// Protected by mheap or stopping the world during GC.
+ 	uint64	next_gc;	// next GC (in heap_alloc time)
+ 	uint64  last_gc;	// last GC (in absolute time)
+ 	uint64	pause_total_ns;
+@@ -249,7 +258,6 @@
+ extern MStats mstats
+   __asm__ (GOSYM_PREFIX "runtime.VmemStats");
+ 
+-
+ // Size classes.  Computed and initialized by InitSizes.
+ //
+ // SizeToClass(0 <= n <= MaxSmallSize) returns the size class,
+@@ -416,18 +424,18 @@
+ 	byte *arena_end;
+ 
+ 	// central free lists for small size classes.
+-	// the union makes sure that the MCentrals are
++	// the padding makes sure that the MCentrals are
+ 	// spaced CacheLineSize bytes apart, so that each MCentral.Lock
+ 	// gets its own cache line.
+-	union {
++	struct {
+ 		MCentral;
+-		byte pad[CacheLineSize];
++		byte pad[64];
+ 	} central[NumSizeClasses];
+ 
+ 	FixAlloc spanalloc;	// allocator for Span*
+ 	FixAlloc cachealloc;	// allocator for MCache*
+ };
+-extern MHeap runtime_mheap;
++extern MHeap *runtime_mheap;
+ 
+ void	runtime_MHeap_Init(MHeap *h, void *(*allocator)(uintptr));
+ MSpan*	runtime_MHeap_Alloc(MHeap *h, uintptr npage, int32 sizeclass, int32 acct, int32 zeroed);
+@@ -452,8 +460,8 @@
+ bool	runtime_blockspecial(void*);
+ void	runtime_setblockspecial(void*, bool);
+ void	runtime_purgecachedstats(MCache*);
+-void*	runtime_new(const Type *);
+-#define runtime_cnew(T) runtime_new(T)
++void*	runtime_cnew(const Type*);
++void*	runtime_cnewarray(const Type*, intgo);
+ 
+ void	runtime_settype(void*, uintptr);
+ void	runtime_settype_flush(M*, bool);
+@@ -485,7 +493,7 @@
+ void	runtime_gchelper(void);
+ 
+ struct __go_func_type;
+-bool	runtime_getfinalizer(void *p, bool del, void (**fn)(void*), const struct __go_func_type **ft);
++bool	runtime_getfinalizer(void *p, bool del, FuncVal **fn, const struct __go_func_type **ft);
+ void	runtime_walkfintab(void (*fn)(void*), void (*scan)(Obj));
+ 
+ enum
+@@ -493,6 +501,7 @@
+ 	TypeInfo_SingleObject = 0,
+ 	TypeInfo_Array = 1,
+ 	TypeInfo_Map = 2,
++	TypeInfo_Chan = 3,
+ 
+ 	// Enables type information at the end of blocks allocated from heap	
+ 	DebugTypeAtBlockEnd = 0,
+@@ -504,5 +513,5 @@
+ 
+ void	runtime_memorydump(void);
+ 
++void	runtime_proc_scan(void (*)(Obj));
+ void	runtime_time_scan(void (*)(Obj));
+-void	runtime_trampoline_scan(void (*)(Obj));
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mcache.c gcc-4.8.1/libgo/runtime/mcache.c
+--- gcc-4.8.1.orig/libgo/runtime/mcache.c	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/runtime/mcache.c	2013-07-16 01:55:04.520470000 -0500
+@@ -21,7 +21,7 @@
+ 	l = &c->list[sizeclass];
+ 	if(l->list == nil) {
+ 		// Replenish using central lists.
+-		n = runtime_MCentral_AllocList(&runtime_mheap.central[sizeclass],
++		n = runtime_MCentral_AllocList(&runtime_mheap->central[sizeclass],
+ 			runtime_class_to_transfercount[sizeclass], &first);
+ 		if(n == 0)
+ 			runtime_throw("out of memory");
+@@ -69,7 +69,7 @@
+ 	c->size -= n*runtime_class_to_size[sizeclass];
+ 
+ 	// Return them to central free list.
+-	runtime_MCentral_FreeList(&runtime_mheap.central[sizeclass], n, first);
++	runtime_MCentral_FreeList(&runtime_mheap->central[sizeclass], n, first);
+ }
+ 
+ void
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mcentral.c gcc-4.8.1/libgo/runtime/mcentral.c
+--- gcc-4.8.1.orig/libgo/runtime/mcentral.c	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mcentral.c	2013-07-16 01:55:04.520470000 -0500
+@@ -108,7 +108,7 @@
+ 	int32 size;
+ 
+ 	// Find span for v.
+-	s = runtime_MHeap_Lookup(&runtime_mheap, v);
++	s = runtime_MHeap_Lookup(runtime_mheap, v);
+ 	if(s == nil || s->ref == 0)
+ 		runtime_throw("invalid free");
+ 
+@@ -133,7 +133,7 @@
+ 		s->freelist = nil;
+ 		c->nfree -= (s->npages << PageShift) / size;
+ 		runtime_unlock(c);
+-		runtime_MHeap_Free(&runtime_mheap, s, 0);
++		runtime_MHeap_Free(runtime_mheap, s, 0);
+ 		runtime_lock(c);
+ 	}
+ }
+@@ -168,7 +168,7 @@
+ 		c->nfree -= (s->npages << PageShift) / size;
+ 		runtime_unlock(c);
+ 		runtime_unmarkspan((byte*)(s->start<<PageShift), s->npages<<PageShift);
+-		runtime_MHeap_Free(&runtime_mheap, s, 0);
++		runtime_MHeap_Free(runtime_mheap, s, 0);
+ 	} else {
+ 		runtime_unlock(c);
+ 	}
+@@ -200,7 +200,7 @@
+ 
+ 	runtime_unlock(c);
+ 	runtime_MGetSizeClassInfo(c->sizeclass, &size, &npages, &n);
+-	s = runtime_MHeap_Alloc(&runtime_mheap, npages, c->sizeclass, 0, 1);
++	s = runtime_MHeap_Alloc(runtime_mheap, npages, c->sizeclass, 0, 1);
+ 	if(s == nil) {
+ 		// TODO(rsc): Log out of memory
+ 		runtime_lock(c);
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mem.c gcc-4.8.1/libgo/runtime/mem.c
+--- gcc-4.8.1.orig/libgo/runtime/mem.c	2013-02-15 12:55:09.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mem.c	2013-07-16 01:55:04.520470000 -0500
+@@ -78,7 +78,7 @@
+ 	fd = dev_zero;
+ #endif
+ 
+-	p = runtime_mmap(nil, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, fd, 0);
++	p = runtime_mmap(nil, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, fd, 0);
+ 	if (p == MAP_FAILED) {
+ 		if(errno == EACCES) {
+ 			runtime_printf("runtime: mmap: access denied\n");
+@@ -169,7 +169,7 @@
+ 
+ 	// On 64-bit, we don't actually have v reserved, so tread carefully.
+ 	if(sizeof(void*) == 8 && (uintptr)v >= 0xffffffffU) {
+-		p = mmap_fixed(v, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, fd, 0);
++		p = mmap_fixed(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, fd, 0);
+ 		if(p == MAP_FAILED && errno == ENOMEM)
+ 			runtime_throw("runtime: out of memory");
+ 		if(p != v) {
+@@ -179,7 +179,9 @@
+ 		return;
+ 	}
+ 
+-	p = runtime_mmap(v, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_FIXED|MAP_PRIVATE, fd, 0);
++	p = runtime_mmap(v, n, PROT_READ|PROT_WRITE, MAP_ANON|MAP_FIXED|MAP_PRIVATE, fd, 0);
++	if(p == MAP_FAILED && errno == ENOMEM)
++		runtime_throw("runtime: out of memory");
+ 	if(p != v)
+ 		runtime_throw("runtime: cannot map pages in arena address space");
+ }
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mfinal.c gcc-4.8.1/libgo/runtime/mfinal.c
+--- gcc-4.8.1.orig/libgo/runtime/mfinal.c	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mfinal.c	2013-06-18 18:50:42.020320000 -0500
+@@ -11,7 +11,7 @@
+ typedef struct Fin Fin;
+ struct Fin
+ {
+-	void (*fn)(void*);
++	FuncVal *fn;
+ 	const struct __go_func_type *ft;
+ };
+ 
+@@ -42,7 +42,7 @@
+ } fintab[TABSZ];
+ 
+ static void
+-addfintab(Fintab *t, void *k, void (*fn)(void*), const struct __go_func_type *ft)
++addfintab(Fintab *t, void *k, FuncVal *fn, const struct __go_func_type *ft)
+ {
+ 	int32 i, j;
+ 
+@@ -137,7 +137,7 @@
+ }
+ 
+ bool
+-runtime_addfinalizer(void *p, void (*f)(void*), const struct __go_func_type *ft)
++runtime_addfinalizer(void *p, FuncVal *f, const struct __go_func_type *ft)
+ {
+ 	Fintab *tab;
+ 	byte *base;
+@@ -175,7 +175,7 @@
+ // get finalizer; if del, delete finalizer.
+ // caller is responsible for updating RefHasFinalizer (special) bit.
+ bool
+-runtime_getfinalizer(void *p, bool del, void (**fn)(void*), const struct __go_func_type **ft)
++runtime_getfinalizer(void *p, bool del, FuncVal **fn, const struct __go_func_type **ft)
+ {
+ 	Fintab *tab;
+ 	bool res;
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mfixalloc.c gcc-4.8.1/libgo/runtime/mfixalloc.c
+--- gcc-4.8.1.orig/libgo/runtime/mfixalloc.c	2011-10-26 18:57:58.000000000 -0500
++++ gcc-4.8.1/libgo/runtime/mfixalloc.c	2013-07-16 01:55:04.520470000 -0500
+@@ -30,6 +30,11 @@
+ runtime_FixAlloc_Alloc(FixAlloc *f)
+ {
+ 	void *v;
++	
++	if(f->size == 0) {
++		runtime_printf("runtime: use of FixAlloc_Alloc before FixAlloc_Init\n");
++		runtime_throw("runtime: internal error");
++	}
+ 
+ 	if(f->list) {
+ 		v = f->list;
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mgc0.c gcc-4.8.1/libgo/runtime/mgc0.c
+--- gcc-4.8.1.orig/libgo/runtime/mgc0.c	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mgc0.c	2013-07-16 01:55:04.520470000 -0500
+@@ -21,8 +21,11 @@
+ #define tab __methods
+ // Eface aka __go_empty_interface.
+ #define type __type_descriptor
++// Hmap aka __go_map
++typedef struct __go_map Hmap;
+ // Type aka __go_type_descriptor
+ #define kind __code
++#define string __reflection
+ #define KindPtr GO_PTR
+ #define KindNoPointers GO_NO_POINTERS
+ // PtrType aka __go_ptr_type
+@@ -41,6 +44,9 @@
+ enum {
+ 	Debug = 0,
+ 	DebugMark = 0,  // run second pass to check mark
++	CollectStats = 0,
++	ScanStackByFrames = 0,
++	IgnorePreciseGC = 0,
+ 
+ 	// Four bits per word (see #defines below).
+ 	wordsPerBitmapWord = sizeof(void*)*8/4,
+@@ -120,7 +126,7 @@
+ typedef struct Finalizer Finalizer;
+ struct Finalizer
+ {
+-	void (*fn)(void*);
++	FuncVal *fn;
+ 	void *arg;
+ 	const struct __go_func_type *ft;
+ };
+@@ -147,6 +153,7 @@
+ static Workbuf* getfull(Workbuf*);
+ static void	putempty(Workbuf*);
+ static Workbuf* handoff(Workbuf*);
++static void	gchelperstart(void);
+ 
+ static struct {
+ 	uint64	full;  // lock-free list of full blocks
+@@ -170,11 +177,114 @@
+ } work;
+ 
+ enum {
+-	// TODO(atom): to be expanded in a next CL
+ 	GC_DEFAULT_PTR = GC_NUM_INSTR,
++	GC_MAP_NEXT,
++	GC_CHAN,
++
++	GC_NUM_INSTR2
+ };
+ 
+-// PtrTarget and BitTarget are structures used by intermediate buffers.
++static struct {
++	struct {
++		uint64 sum;
++		uint64 cnt;
++	} ptr;
++	uint64 nbytes;
++	struct {
++		uint64 sum;
++		uint64 cnt;
++		uint64 notype;
++		uint64 typelookup;
++	} obj;
++	uint64 rescan;
++	uint64 rescanbytes;
++	uint64 instr[GC_NUM_INSTR2];
++	uint64 putempty;
++	uint64 getfull;
++} gcstats;
++
++// markonly marks an object. It returns true if the object
++// has been marked by this function, false otherwise.
++// This function doesn't append the object to any buffer.
++static bool
++markonly(void *obj)
++{
++	byte *p;
++	uintptr *bitp, bits, shift, x, xbits, off;
++	MSpan *s;
++	PageID k;
++
++	// Words outside the arena cannot be pointers.
++	if((byte*)obj < runtime_mheap->arena_start || (byte*)obj >= runtime_mheap->arena_used)
++		return false;
++
++	// obj may be a pointer to a live object.
++	// Try to find the beginning of the object.
++
++	// Round down to word boundary.
++	obj = (void*)((uintptr)obj & ~((uintptr)PtrSize-1));
++
++	// Find bits for this word.
++	off = (uintptr*)obj - (uintptr*)runtime_mheap->arena_start;
++	bitp = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
++	shift = off % wordsPerBitmapWord;
++	xbits = *bitp;
++	bits = xbits >> shift;
++
++	// Pointing at the beginning of a block?
++	if((bits & (bitAllocated|bitBlockBoundary)) != 0)
++		goto found;
++
++	// Otherwise consult span table to find beginning.
++	// (Manually inlined copy of MHeap_LookupMaybe.)
++	k = (uintptr)obj>>PageShift;
++	x = k;
++	if(sizeof(void*) == 8)
++		x -= (uintptr)runtime_mheap->arena_start>>PageShift;
++	s = runtime_mheap->map[x];
++	if(s == nil || k < s->start || k - s->start >= s->npages || s->state != MSpanInUse)
++		return false;
++	p = (byte*)((uintptr)s->start<<PageShift);
++	if(s->sizeclass == 0) {
++		obj = p;
++	} else {
++		if((byte*)obj >= (byte*)s->limit)
++			return false;
++		uintptr size = s->elemsize;
++		int32 i = ((byte*)obj - p)/size;
++		obj = p+i*size;
++	}
++
++	// Now that we know the object header, reload bits.
++	off = (uintptr*)obj - (uintptr*)runtime_mheap->arena_start;
++	bitp = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
++	shift = off % wordsPerBitmapWord;
++	xbits = *bitp;
++	bits = xbits >> shift;
++
++found:
++	// Now we have bits, bitp, and shift correct for
++	// obj pointing at the base of the object.
++	// Only care about allocated and not marked.
++	if((bits & (bitAllocated|bitMarked)) != bitAllocated)
++		return false;
++	if(work.nproc == 1)
++		*bitp |= bitMarked<<shift;
++	else {
++		for(;;) {
++			x = *bitp;
++			if(x & (bitMarked<<shift))
++				return false;
++			if(runtime_casp((void**)bitp, (void*)x, (void*)(x|(bitMarked<<shift))))
++				break;
++		}
++	}
++
++	// The object is now marked
++	return true;
++}
++
++// PtrTarget is a structure used by intermediate buffers.
+ // The intermediate buffers hold GC data before it
+ // is moved/flushed to the work buffer (Workbuf).
+ // The size of an intermediate buffer is very small,
+@@ -186,24 +296,16 @@
+ 	uintptr ti;
+ };
+ 
+-typedef struct BitTarget BitTarget;
+-struct BitTarget
+-{
+-	void *p;
+-	uintptr ti;
+-	uintptr *bitp, shift;
+-};
+-
+ typedef struct BufferList BufferList;
+ struct BufferList
+ {
+ 	PtrTarget ptrtarget[IntermediateBufferCapacity];
+-	BitTarget bittarget[IntermediateBufferCapacity];
+-	BufferList *next;
++	Obj obj[IntermediateBufferCapacity];
++	uint32 busy;
++	byte pad[CacheLineSize];
+ };
+-static BufferList *bufferList;
++static BufferList bufferList[MaxGcproc];
+ 
+-static Lock lock;
+ static Type *itabtype;
+ 
+ static void enqueue(Obj obj, Workbuf **_wbuf, Obj **_wp, uintptr *_nobj);
+@@ -214,7 +316,6 @@
+ // and are prepared to be scanned by the garbage collector.
+ //
+ // _wp, _wbuf, _nobj are input/output parameters and are specifying the work buffer.
+-// bitbuf holds temporary data generated by this function.
+ //
+ // A simplified drawing explaining how the todo-list moves from a structure to another:
+ //
+@@ -222,14 +323,12 @@
+ //  (find pointers)
+ //    Obj ------> PtrTarget (pointer targets)
+ //     â          |
+-//     |          | flushptrbuf (1st part,
+-//     |          | find block start)
+-//     |          â
+-//     `--------- BitTarget (pointer targets and the corresponding locations in bitmap)
+-//  flushptrbuf
+-//  (2nd part, mark and enqueue)
++//     |          |
++//     `----------'
++//     flushptrbuf
++//  (find block start, mark and enqueue)
+ static void
+-flushptrbuf(PtrTarget *ptrbuf, PtrTarget **ptrbufpos, Obj **_wp, Workbuf **_wbuf, uintptr *_nobj, BitTarget *bitbuf)
++flushptrbuf(PtrTarget *ptrbuf, PtrTarget **ptrbufpos, Obj **_wp, Workbuf **_wbuf, uintptr *_nobj)
+ {
+ 	byte *p, *arena_start, *obj;
+ 	uintptr size, *bitp, bits, shift, j, x, xbits, off, nobj, ti, n;
+@@ -238,9 +337,8 @@
+ 	Obj *wp;
+ 	Workbuf *wbuf;
+ 	PtrTarget *ptrbuf_end;
+-	BitTarget *bitbufpos, *bt;
+ 
+-	arena_start = runtime_mheap.arena_start;
++	arena_start = runtime_mheap->arena_start;
+ 
+ 	wp = *_wp;
+ 	wbuf = *_wbuf;
+@@ -250,6 +348,11 @@
+ 	n = ptrbuf_end - ptrbuf;
+ 	*ptrbufpos = ptrbuf;
+ 
++	if(CollectStats) {
++		runtime_xadd64(&gcstats.ptr.sum, n);
++		runtime_xadd64(&gcstats.ptr.cnt, 1);
++	}
++
+ 	// If buffer is nearly full, get a new one.
+ 	if(wbuf == nil || nobj+n >= nelem(wbuf->obj)) {
+ 		if(wbuf != nil)
+@@ -267,8 +370,6 @@
+ 	{
+ 		// Multi-threaded version.
+ 
+-		bitbufpos = bitbuf;
+-
+ 		while(ptrbuf < ptrbuf_end) {
+ 			obj = ptrbuf->p;
+ 			ti = ptrbuf->ti;
+@@ -276,7 +377,7 @@
+ 
+ 			// obj belongs to interval [mheap.arena_start, mheap.arena_used).
+ 			if(Debug > 1) {
+-				if(obj < runtime_mheap.arena_start || obj >= runtime_mheap.arena_used)
++				if(obj < runtime_mheap->arena_start || obj >= runtime_mheap->arena_used)
+ 					runtime_throw("object is outside of mheap");
+ 			}
+ 
+@@ -319,7 +420,7 @@
+ 			x = k;
+ 			if(sizeof(void*) == 8)
+ 				x -= (uintptr)arena_start>>PageShift;
+-			s = runtime_mheap.map[x];
++			s = runtime_mheap->map[x];
+ 			if(s == nil || k < s->start || k - s->start >= s->npages || s->state != MSpanInUse)
+ 				continue;
+ 			p = (byte*)((uintptr)s->start<<PageShift);
+@@ -346,40 +447,36 @@
+ 			// Only care about allocated and not marked.
+ 			if((bits & (bitAllocated|bitMarked)) != bitAllocated)
+ 				continue;
+-
+-			*bitbufpos++ = (BitTarget){obj, ti, bitp, shift};
+-		}
+-
+-		runtime_lock(&lock);
+-		for(bt=bitbuf; bt<bitbufpos; bt++){
+-			xbits = *bt->bitp;
+-			bits = xbits >> bt->shift;
+-			if((bits & bitMarked) != 0)
+-				continue;
+-
+-			// Mark the block
+-			*bt->bitp = xbits | (bitMarked << bt->shift);
++			if(work.nproc == 1)
++				*bitp |= bitMarked<<shift;
++			else {
++				for(;;) {
++					x = *bitp;
++					if(x & (bitMarked<<shift))
++						goto continue_obj;
++					if(runtime_casp((void**)bitp, (void*)x, (void*)(x|(bitMarked<<shift))))
++						break;
++				}
++			}
+ 
+ 			// If object has no pointers, don't need to scan further.
+ 			if((bits & bitNoPointers) != 0)
+ 				continue;
+ 
+-			obj = bt->p;
+-
+ 			// Ask span about size class.
+ 			// (Manually inlined copy of MHeap_Lookup.)
+ 			x = (uintptr)obj >> PageShift;
+ 			if(sizeof(void*) == 8)
+ 				x -= (uintptr)arena_start>>PageShift;
+-			s = runtime_mheap.map[x];
++			s = runtime_mheap->map[x];
+ 
+ 			PREFETCH(obj);
+ 
+-			*wp = (Obj){obj, s->elemsize, bt->ti};
++			*wp = (Obj){obj, s->elemsize, ti};
+ 			wp++;
+ 			nobj++;
++		continue_obj:;
+ 		}
+-		runtime_unlock(&lock);
+ 
+ 		// If another proc wants a pointer, give it some.
+ 		if(work.nwait > 0 && nobj > handoffThreshold && work.full == 0) {
+@@ -395,9 +492,73 @@
+ 	*_nobj = nobj;
+ }
+ 
++static void
++flushobjbuf(Obj *objbuf, Obj **objbufpos, Obj **_wp, Workbuf **_wbuf, uintptr *_nobj)
++{
++	uintptr nobj, off;
++	Obj *wp, obj;
++	Workbuf *wbuf;
++	Obj *objbuf_end;
++
++	wp = *_wp;
++	wbuf = *_wbuf;
++	nobj = *_nobj;
++
++	objbuf_end = *objbufpos;
++	*objbufpos = objbuf;
++
++	while(objbuf < objbuf_end) {
++		obj = *objbuf++;
++
++		// Align obj.b to a word boundary.
++		off = (uintptr)obj.p & (PtrSize-1);
++		if(off != 0) {
++			obj.p += PtrSize - off;
++			obj.n -= PtrSize - off;
++			obj.ti = 0;
++		}
++
++		if(obj.p == nil || obj.n == 0)
++			continue;
++
++		// If buffer is full, get a new one.
++		if(wbuf == nil || nobj >= nelem(wbuf->obj)) {
++			if(wbuf != nil)
++				wbuf->nobj = nobj;
++			wbuf = getempty(wbuf);
++			wp = wbuf->obj;
++			nobj = 0;
++		}
++
++		*wp = obj;
++		wp++;
++		nobj++;
++	}
++
++	// If another proc wants a pointer, give it some.
++	if(work.nwait > 0 && nobj > handoffThreshold && work.full == 0) {
++		wbuf->nobj = nobj;
++		wbuf = handoff(wbuf);
++		nobj = wbuf->nobj;
++		wp = wbuf->obj + nobj;
++	}
++
++	*_wp = wp;
++	*_wbuf = wbuf;
++	*_nobj = nobj;
++}
++
+ // Program that scans the whole block and treats every block element as a potential pointer
+ static uintptr defaultProg[2] = {PtrSize, GC_DEFAULT_PTR};
+ 
++#if 0
++// Hashmap iterator program
++static uintptr mapProg[2] = {0, GC_MAP_NEXT};
++
++// Hchan program
++static uintptr chanProg[2] = {0, GC_CHAN};
++#endif
++
+ // Local variables of a program fragment or loop
+ typedef struct Frame Frame;
+ struct Frame {
+@@ -405,6 +566,61 @@
+ 	uintptr *loop_or_ret;
+ };
+ 
++// Sanity check for the derived type info objti.
++static void
++checkptr(void *obj, uintptr objti)
++{
++	uintptr type, tisize, i, x;
++	byte *objstart;
++	Type *t;
++	MSpan *s;
++
++	if(!Debug)
++		runtime_throw("checkptr is debug only");
++
++	if((byte*)obj < runtime_mheap->arena_start || (byte*)obj >= runtime_mheap->arena_used)
++		return;
++	type = runtime_gettype(obj);
++	t = (Type*)(type & ~(uintptr)(PtrSize-1));
++	if(t == nil)
++		return;
++	x = (uintptr)obj >> PageShift;
++	if(sizeof(void*) == 8)
++		x -= (uintptr)(runtime_mheap->arena_start)>>PageShift;
++	s = runtime_mheap->map[x];
++	objstart = (byte*)((uintptr)s->start<<PageShift);
++	if(s->sizeclass != 0) {
++		i = ((byte*)obj - objstart)/s->elemsize;
++		objstart += i*s->elemsize;
++	}
++	tisize = *(uintptr*)objti;
++	// Sanity check for object size: it should fit into the memory block.
++	if((byte*)obj + tisize > objstart + s->elemsize)
++		runtime_throw("invalid gc type info");
++	if(obj != objstart)
++		return;
++	// If obj points to the beginning of the memory block,
++	// check type info as well.
++	if(t->string == nil ||
++		// Gob allocates unsafe pointers for indirection.
++		(runtime_strcmp((const char *)t->string->str, (const char*)"unsafe.Pointer") &&
++		// Runtime and gc think differently about closures.
++		 runtime_strstr((const char *)t->string->str, (const char*)"struct { F uintptr") != (const char *)t->string->str)) {
++#if 0
++		pc1 = (uintptr*)objti;
++		pc2 = (uintptr*)t->gc;
++		// A simple best-effort check until first GC_END.
++		for(j = 1; pc1[j] != GC_END && pc2[j] != GC_END; j++) {
++			if(pc1[j] != pc2[j]) {
++				runtime_printf("invalid gc type info for '%s' at %p, type info %p, block info %p\n",
++					t->string ? (const int8*)t->string->str : (const int8*)"?", j, pc1[j], pc2[j]);
++				runtime_throw("invalid gc type info");
++			}
++		}
++#endif
++	}
++}					
++
+ // scanblock scans a block of n bytes starting at pointer b for references
+ // to other objects, scanning any it finds recursively until there are no
+ // unscanned objects left.  Instead of using an explicit recursion, it keeps
+@@ -419,49 +635,64 @@
+ scanblock(Workbuf *wbuf, Obj *wp, uintptr nobj, bool keepworking)
+ {
+ 	byte *b, *arena_start, *arena_used;
+-	uintptr n, i, end_b, elemsize, ti, objti, count /* , type */;
++	uintptr n, i, end_b, elemsize, size, ti, objti, count /* , type */;
+ 	uintptr *pc, precise_type, nominal_size;
++#if 0
++	uintptr *map_ret, mapkey_size, mapval_size, mapkey_ti, mapval_ti, *chan_ret, chancap;
++#endif
+ 	void *obj;
+ 	const Type *t;
+ 	Slice *sliceptr;
+ 	Frame *stack_ptr, stack_top, stack[GC_STACK_CAPACITY+4];
+ 	BufferList *scanbuffers;
+ 	PtrTarget *ptrbuf, *ptrbuf_end, *ptrbufpos;
+-	BitTarget *bitbuf;
++	Obj *objbuf, *objbuf_end, *objbufpos;
+ 	Eface *eface;
+ 	Iface *iface;
++#if 0
++	Hmap *hmap;
++	MapType *maptype;
++	bool mapkey_kind, mapval_kind;
++	struct hash_gciter map_iter;
++	struct hash_gciter_data d;
++	Hchan *chan;
++	ChanType *chantype;
++#endif
+ 
+ 	if(sizeof(Workbuf) % PageSize != 0)
+ 		runtime_throw("scanblock: size of Workbuf is suboptimal");
+ 
+ 	// Memory arena parameters.
+-	arena_start = runtime_mheap.arena_start;
+-	arena_used = runtime_mheap.arena_used;
++	arena_start = runtime_mheap->arena_start;
++	arena_used = runtime_mheap->arena_used;
+ 
+ 	stack_ptr = stack+nelem(stack)-1;
+ 	
+ 	precise_type = false;
+ 	nominal_size = 0;
+ 
+-	// Allocate ptrbuf, bitbuf
++	// Allocate ptrbuf
+ 	{
+-		runtime_lock(&lock);
+-
+-		if(bufferList == nil) {
+-			bufferList = runtime_SysAlloc(sizeof(*bufferList));
+-			bufferList->next = nil;
+-		}
+-		scanbuffers = bufferList;
+-		bufferList = bufferList->next;
+-
++		scanbuffers = &bufferList[runtime_m()->helpgc];
+ 		ptrbuf = &scanbuffers->ptrtarget[0];
+ 		ptrbuf_end = &scanbuffers->ptrtarget[0] + nelem(scanbuffers->ptrtarget);
+-		bitbuf = &scanbuffers->bittarget[0];
+-
+-		runtime_unlock(&lock);
++		objbuf = &scanbuffers->obj[0];
++		objbuf_end = &scanbuffers->obj[0] + nelem(scanbuffers->obj);
+ 	}
+ 
+ 	ptrbufpos = ptrbuf;
++	objbufpos = objbuf;
++
++	// (Silence the compiler)
++#if 0
++	map_ret = nil;
++	mapkey_size = mapval_size = 0;
++	mapkey_kind = mapval_kind = false;
++	mapkey_ti = mapval_ti = 0;
++	chan = nil;
++	chantype = nil;
++	chan_ret = nil;
++#endif
+ 
+ 	goto next_block;
+ 
+@@ -472,7 +703,13 @@
+ 			runtime_printf("scanblock %p %D\n", b, (int64)n);
+ 		}
+ 
+-		if(ti != 0 && 0) {
++		if(CollectStats) {
++			runtime_xadd64(&gcstats.nbytes, n);
++			runtime_xadd64(&gcstats.obj.sum, nobj);
++			runtime_xadd64(&gcstats.obj.cnt, 1);
++		}
++
++		if(ti != 0 && false) {
+ 			pc = (uintptr*)(ti & ~(uintptr)PC_BITS);
+ 			precise_type = (ti & PRECISE);
+ 			stack_top.elemsize = pc[0];
+@@ -484,10 +721,27 @@
+ 			} else {
+ 				stack_top.count = 1;
+ 			}
+-		} else if(UseSpanType && 0) {
++			if(Debug) {
++				// Simple sanity check for provided type info ti:
++				// The declared size of the object must be not larger than the actual size
++				// (it can be smaller due to inferior pointers).
++				// It's difficult to make a comprehensive check due to inferior pointers,
++				// reflection, gob, etc.
++				if(pc[0] > n) {
++					runtime_printf("invalid gc type info: type info size %p, block size %p\n", pc[0], n);
++					runtime_throw("invalid gc type info");
++				}
++			}
++		} else if(UseSpanType && false) {
++			if(CollectStats)
++				runtime_xadd64(&gcstats.obj.notype, 1);
++
+ #if 0
+ 			type = runtime_gettype(b);
+ 			if(type != 0) {
++				if(CollectStats)
++					runtime_xadd64(&gcstats.obj.typelookup, 1);
++
+ 				t = (Type*)(type & ~(uintptr)(PtrSize-1));
+ 				switch(type & (PtrSize-1)) {
+ 				case TypeInfo_SingleObject:
+@@ -506,8 +760,27 @@
+ 					stack_top.loop_or_ret = pc+1;
+ 					break;
+ 				case TypeInfo_Map:
+-					// TODO(atom): to be expanded in a next CL
+-					pc = defaultProg;
++					hmap = (Hmap*)b;
++					maptype = (MapType*)t;
++					if(hash_gciter_init(hmap, &map_iter)) {
++						mapkey_size = maptype->key->size;
++						mapkey_kind = maptype->key->kind;
++						mapkey_ti   = (uintptr)maptype->key->gc | PRECISE;
++						mapval_size = maptype->elem->size;
++						mapval_kind = maptype->elem->kind;
++						mapval_ti   = (uintptr)maptype->elem->gc | PRECISE;
++
++						map_ret = nil;
++						pc = mapProg;
++					} else {
++						goto next_block;
++					}
++					break;
++				case TypeInfo_Chan:
++					chan = (Hchan*)b;
++					chantype = (ChanType*)t;
++					chan_ret = nil;
++					pc = chanProg;
+ 					break;
+ 				default:
+ 					runtime_throw("scanblock: invalid type");
+@@ -521,12 +794,18 @@
+ 			pc = defaultProg;
+ 		}
+ 
++		if(IgnorePreciseGC)
++			pc = defaultProg;
++
+ 		pc++;
+ 		stack_top.b = (uintptr)b;
+ 
+ 		end_b = (uintptr)b + n - PtrSize;
+ 
+ 	for(;;) {
++		if(CollectStats)
++			runtime_xadd64(&gcstats.instr[pc[0]], 1);
++
+ 		obj = nil;
+ 		objti = 0;
+ 		switch(pc[0]) {
+@@ -534,13 +813,19 @@
+ 			obj = *(void**)(stack_top.b + pc[1]);
+ 			objti = pc[2];
+ 			pc += 3;
++			if(Debug)
++				checkptr(obj, objti);
+ 			break;
+ 
+ 		case GC_SLICE:
+ 			sliceptr = (Slice*)(stack_top.b + pc[1]);
+ 			if(sliceptr->cap != 0) {
+ 				obj = sliceptr->array;
+-				objti = pc[2] | PRECISE | LOOP;
++				// Can't use slice element type for scanning,
++				// because if it points to an array embedded
++				// in the beginning of a struct,
++				// we will scan the whole struct as the slice.
++				// So just obtain type info from heap.
+ 			}
+ 			pc += 3;
+ 			break;
+@@ -552,17 +837,31 @@
+ 
+ 		case GC_STRING:
+ 			obj = *(void**)(stack_top.b + pc[1]);
++			markonly(obj);
+ 			pc += 2;
+-			break;
++			continue;
+ 
+ 		case GC_EFACE:
+ 			eface = (Eface*)(stack_top.b + pc[1]);
+ 			pc += 2;
+-			if(eface->type != nil && ((byte*)eface->__object >= arena_start && (byte*)eface->__object < arena_used)) {
+-				t = eface->type;
++			if(eface->type == nil)
++				continue;
++
++			// eface->type
++			t = eface->type;
++			if((const byte*)t >= arena_start && (const byte*)t < arena_used) {
++				union { const Type *tc; Type *tr; } u;
++				u.tc = t;
++				*ptrbufpos++ = (struct PtrTarget){(void*)u.tr, 0};
++				if(ptrbufpos == ptrbuf_end)
++					flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
++			}
++
++			// eface->__object
++			if((byte*)eface->__object >= arena_start && (byte*)eface->__object < arena_used) {
+ 				if(t->__size <= sizeof(void*)) {
+ 					if((t->kind & KindNoPointers))
+-						break;
++						continue;
+ 
+ 					obj = eface->__object;
+ 					if((t->kind & ~KindNoPointers) == KindPtr)
+@@ -580,14 +879,14 @@
+ 			iface = (Iface*)(stack_top.b + pc[1]);
+ 			pc += 2;
+ 			if(iface->tab == nil)
+-				break;
++				continue;
+ 			
+ 			// iface->tab
+ 			if((byte*)iface->tab >= arena_start && (byte*)iface->tab < arena_used) {
+ 				// *ptrbufpos++ = (struct PtrTarget){iface->tab, (uintptr)itabtype->gc};
+ 				*ptrbufpos++ = (struct PtrTarget){iface->tab, 0};
+ 				if(ptrbufpos == ptrbuf_end)
+-					flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
++					flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
+ 			}
+ 
+ 			// iface->data
+@@ -596,7 +895,7 @@
+ 				t = nil;
+ 				if(t->__size <= sizeof(void*)) {
+ 					if((t->kind & KindNoPointers))
+-						break;
++						continue;
+ 
+ 					obj = iface->__object;
+ 					if((t->kind & ~KindNoPointers) == KindPtr)
+@@ -611,13 +910,13 @@
+ 			break;
+ 
+ 		case GC_DEFAULT_PTR:
+-			while((i = stack_top.b) <= end_b) {
++			while(stack_top.b <= end_b) {
++				obj = *(byte**)stack_top.b;
+ 				stack_top.b += PtrSize;
+-				obj = *(byte**)i;
+ 				if((byte*)obj >= arena_start && (byte*)obj < arena_used) {
+ 					*ptrbufpos++ = (struct PtrTarget){obj, 0};
+ 					if(ptrbufpos == ptrbuf_end)
+-						flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
++						flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
+ 				}
+ 			}
+ 			goto next_block;
+@@ -625,9 +924,8 @@
+ 		case GC_END:
+ 			if(--stack_top.count != 0) {
+ 				// Next iteration of a loop if possible.
+-				elemsize = stack_top.elemsize;
+-				stack_top.b += elemsize;
+-				if(stack_top.b + elemsize <= end_b+PtrSize) {
++				stack_top.b += stack_top.elemsize;
++				if(stack_top.b + stack_top.elemsize <= end_b+PtrSize) {
+ 					pc = stack_top.loop_or_ret;
+ 					continue;
+ 				}
+@@ -648,6 +946,10 @@
+ 						// Found a value that may be a pointer.
+ 						// Do a rescan of the entire block.
+ 						enqueue((Obj){b, n, 0}, &wbuf, &wp, &nobj);
++						if(CollectStats) {
++							runtime_xadd64(&gcstats.rescan, 1);
++							runtime_xadd64(&gcstats.rescanbytes, n);
++						}
+ 						break;
+ 					}
+ 				}
+@@ -680,20 +982,136 @@
+ 			// Stack push.
+ 			*stack_ptr-- = stack_top;
+ 			stack_top = (Frame){1, 0, stack_top.b + pc[1], pc+3 /*return address*/};
+-			pc = (uintptr*)pc[2];  // target of the CALL instruction
++			pc = (uintptr*)((byte*)pc + *(int32*)(pc+2));  // target of the CALL instruction
+ 			continue;
+ 
++#if 0
+ 		case GC_MAP_PTR:
+-			// TODO(atom): to be expanded in a next CL. Same as GC_APTR for now.
+-			obj = *(void**)(stack_top.b + pc[1]);
+-			pc += 3;
+-			break;
++			hmap = *(Hmap**)(stack_top.b + pc[1]);
++			if(hmap == nil) {
++				pc += 3;
++				continue;
++			}
++			if(markonly(hmap)) {
++				maptype = (MapType*)pc[2];
++				if(hash_gciter_init(hmap, &map_iter)) {
++					mapkey_size = maptype->key->size;
++					mapkey_kind = maptype->key->kind;
++					mapkey_ti   = (uintptr)maptype->key->gc | PRECISE;
++					mapval_size = maptype->elem->size;
++					mapval_kind = maptype->elem->kind;
++					mapval_ti   = (uintptr)maptype->elem->gc | PRECISE;
++
++					// Start mapProg.
++					map_ret = pc+3;
++					pc = mapProg+1;
++				} else {
++					pc += 3;
++				}
++			} else {
++				pc += 3;
++			}
++			continue;
++
++		case GC_MAP_NEXT:
++			// Add all keys and values to buffers, mark all subtables.
++			while(hash_gciter_next(&map_iter, &d)) {
++				// buffers: reserve space for 2 objects.
++				if(ptrbufpos+2 >= ptrbuf_end)
++					flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
++				if(objbufpos+2 >= objbuf_end)
++					flushobjbuf(objbuf, &objbufpos, &wp, &wbuf, &nobj);
++
++				if(d.st != nil)
++					markonly(d.st);
++
++				if(d.key_data != nil) {
++					if(!(mapkey_kind & KindNoPointers) || d.indirectkey) {
++						if(!d.indirectkey)
++							*objbufpos++ = (Obj){d.key_data, mapkey_size, mapkey_ti};
++						else {
++							if(Debug) {
++								obj = *(void**)d.key_data;
++								if(!(arena_start <= obj && obj < arena_used))
++									runtime_throw("scanblock: inconsistent hashmap");
++							}
++							*ptrbufpos++ = (struct PtrTarget){*(void**)d.key_data, mapkey_ti};
++						}
++					}
++					if(!(mapval_kind & KindNoPointers) || d.indirectval) {
++						if(!d.indirectval)
++							*objbufpos++ = (Obj){d.val_data, mapval_size, mapval_ti};
++						else {
++							if(Debug) {
++								obj = *(void**)d.val_data;
++								if(!(arena_start <= obj && obj < arena_used))
++									runtime_throw("scanblock: inconsistent hashmap");
++							}
++							*ptrbufpos++ = (struct PtrTarget){*(void**)d.val_data, mapval_ti};
++						}
++					}
++				}
++			}
++			if(map_ret == nil)
++				goto next_block;
++			pc = map_ret;
++			continue;
++#endif
+ 
+ 		case GC_REGION:
+-			// TODO(atom): to be expanded in a next CL. Same as GC_APTR for now.
+ 			obj = (void*)(stack_top.b + pc[1]);
++			size = pc[2];
++			objti = pc[3];
+ 			pc += 4;
+-			break;
++
++			*objbufpos++ = (Obj){obj, size, objti};
++			if(objbufpos == objbuf_end)
++				flushobjbuf(objbuf, &objbufpos, &wp, &wbuf, &nobj);
++			continue;
++
++#if 0
++		case GC_CHAN_PTR:
++			// Similar to GC_MAP_PTR
++			chan = *(Hchan**)(stack_top.b + pc[1]);
++			if(chan == nil) {
++				pc += 3;
++				continue;
++			}
++			if(markonly(chan)) {
++				chantype = (ChanType*)pc[2];
++				if(!(chantype->elem->kind & KindNoPointers)) {
++					// Start chanProg.
++					chan_ret = pc+3;
++					pc = chanProg+1;
++					continue;
++				}
++			}
++			pc += 3;
++			continue;
++
++		case GC_CHAN:
++			// There are no heap pointers in struct Hchan,
++			// so we can ignore the leading sizeof(Hchan) bytes.
++			if(!(chantype->elem->kind & KindNoPointers)) {
++				// Channel's buffer follows Hchan immediately in memory.
++				// Size of buffer (cap(c)) is second int in the chan struct.
++				chancap = ((uintgo*)chan)[1];
++				if(chancap > 0) {
++					// TODO(atom): split into two chunks so that only the
++					// in-use part of the circular buffer is scanned.
++					// (Channel routines zero the unused part, so the current
++					// code does not lead to leaks, it's just a little inefficient.)
++					*objbufpos++ = (Obj){(byte*)chan+runtime_Hchansize, chancap*chantype->elem->size,
++						(uintptr)chantype->elem->gc | PRECISE | LOOP};
++					if(objbufpos == objbuf_end)
++						flushobjbuf(objbuf, &objbufpos, &wp, &wbuf, &nobj);
++				}
++			}
++			if(chan_ret == nil)
++				goto next_block;
++			pc = chan_ret;
++			continue;
++#endif
+ 
+ 		default:
+ 			runtime_throw("scanblock: invalid GC instruction");
+@@ -701,9 +1119,9 @@
+ 		}
+ 
+ 		if((byte*)obj >= arena_start && (byte*)obj < arena_used) {
+-			*ptrbufpos++ = (PtrTarget){obj, objti};
++			*ptrbufpos++ = (struct PtrTarget){obj, objti};
+ 			if(ptrbufpos == ptrbuf_end)
+-				flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
++				flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
+ 		}
+ 	}
+ 
+@@ -712,7 +1130,8 @@
+ 		// the loop by setting b, n, ti to the parameters for the next block.
+ 
+ 		if(nobj == 0) {
+-			flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj, bitbuf);
++			flushptrbuf(ptrbuf, &ptrbufpos, &wp, &wbuf, &nobj);
++			flushobjbuf(objbuf, &objbufpos, &wp, &wbuf, &nobj);
+ 
+ 			if(nobj == 0) {
+ 				if(!keepworking) {
+@@ -737,11 +1156,7 @@
+ 		nobj--;
+ 	}
+ 
+-endscan:
+-	runtime_lock(&lock);
+-	scanbuffers->next = bufferList;
+-	bufferList = scanbuffers;
+-	runtime_unlock(&lock);
++endscan:;
+ }
+ 
+ // debug_scanblock is the debug copy of scanblock.
+@@ -776,14 +1191,14 @@
+ 		obj = (byte*)vp[i];
+ 
+ 		// Words outside the arena cannot be pointers.
+-		if((byte*)obj < runtime_mheap.arena_start || (byte*)obj >= runtime_mheap.arena_used)
++		if((byte*)obj < runtime_mheap->arena_start || (byte*)obj >= runtime_mheap->arena_used)
+ 			continue;
+ 
+ 		// Round down to word boundary.
+ 		obj = (void*)((uintptr)obj & ~((uintptr)PtrSize-1));
+ 
+ 		// Consult span table to find beginning.
+-		s = runtime_MHeap_LookupMaybe(&runtime_mheap, obj);
++		s = runtime_MHeap_LookupMaybe(runtime_mheap, obj);
+ 		if(s == nil)
+ 			continue;
+ 
+@@ -799,8 +1214,8 @@
+ 		}
+ 
+ 		// Now that we know the object header, reload bits.
+-		off = (uintptr*)obj - (uintptr*)runtime_mheap.arena_start;
+-		bitp = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++		off = (uintptr*)obj - (uintptr*)runtime_mheap->arena_start;
++		bitp = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 		shift = off % wordsPerBitmapWord;
+ 		xbits = *bitp;
+ 		bits = xbits >> shift;
+@@ -906,6 +1321,8 @@
+ 		if(work.nchunk < sizeof *b) {
+ 			work.nchunk = 1<<20;
+ 			work.chunk = runtime_SysAlloc(work.nchunk);
++			if(work.chunk == nil)
++				runtime_throw("runtime: cannot allocate memory");
+ 		}
+ 		b = (Workbuf*)work.chunk;
+ 		work.chunk += sizeof *b;
+@@ -919,6 +1336,9 @@
+ static void
+ putempty(Workbuf *b)
+ {
++	if(CollectStats)
++		runtime_xadd64(&gcstats.putempty, 1);
++
+ 	runtime_lfstackpush(&work.empty, &b->node);
+ }
+ 
+@@ -929,6 +1349,9 @@
+ 	M *m;
+ 	int32 i;
+ 
++	if(CollectStats)
++		runtime_xadd64(&gcstats.getfull, 1);
++
+ 	if(b != nil)
+ 		runtime_lfstackpush(&work.empty, &b->node);
+ 	b = (Workbuf*)runtime_lfstackpop(&work.full);
+@@ -994,6 +1417,8 @@
+ 		if(cap < 2*work.rootcap)
+ 			cap = 2*work.rootcap;
+ 		new = (Obj*)runtime_SysAlloc(cap*sizeof(Obj));
++		if(new == nil)
++			runtime_throw("runtime: cannot allocate memory");
+ 		if(work.roots != nil) {
+ 			runtime_memmove(new, work.roots, work.rootcap*sizeof(Obj));
+ 			runtime_SysFree(work.roots, work.rootcap*sizeof(Obj));
+@@ -1081,13 +1506,14 @@
+ addfinroots(void *v)
+ {
+ 	uintptr size;
++	void *base;
+ 
+ 	size = 0;
+-	if(!runtime_mlookup(v, (byte**)&v, &size, nil) || !runtime_blockspecial(v))
++	if(!runtime_mlookup(v, (byte**)&base, &size, nil) || !runtime_blockspecial(base))
+ 		runtime_throw("mark - finalizer inconsistency");
+ 
+ 	// do not mark the finalizer block itself.  just mark the things it points at.
+-	addroot((Obj){v, size, 0});
++	addroot((Obj){base, size, 0});
+ }
+ 
+ static struct root_list* roots;
+@@ -1128,23 +1554,27 @@
+ 	addroot((Obj){(byte*)&runtime_g0, sizeof runtime_g0, 0});
+ 	addroot((Obj){(byte*)&runtime_allg, sizeof runtime_allg, 0});
+ 	addroot((Obj){(byte*)&runtime_allm, sizeof runtime_allm, 0});
++	addroot((Obj){(byte*)&runtime_allp, sizeof runtime_allp, 0});
++	runtime_proc_scan(addroot);
+ 	runtime_MProf_Mark(addroot);
+ 	runtime_time_scan(addroot);
+-	runtime_trampoline_scan(addroot);
+ 
+ 	// MSpan.types
+-	allspans = runtime_mheap.allspans;
+-	for(spanidx=0; spanidx<runtime_mheap.nspan; spanidx++) {
++	allspans = runtime_mheap->allspans;
++	for(spanidx=0; spanidx<runtime_mheap->nspan; spanidx++) {
+ 		s = allspans[spanidx];
+ 		if(s->state == MSpanInUse) {
++			// The garbage collector ignores type pointers stored in MSpan.types:
++			//  - Compiler-generated types are stored outside of heap.
++			//  - The reflect package has runtime-generated types cached in its data structures.
++			//    The garbage collector relies on finding the references via that cache.
+ 			switch(s->types.compression) {
+ 			case MTypes_Empty:
+ 			case MTypes_Single:
+ 				break;
+ 			case MTypes_Words:
+ 			case MTypes_Bytes:
+-				// TODO(atom): consider using defaultProg instead of 0
+-				addroot((Obj){(byte*)&s->types.data, sizeof(void*), 0});
++				markonly((byte*)s->types.data);
+ 				break;
+ 			}
+ 		}
+@@ -1182,7 +1612,7 @@
+ static bool
+ handlespecial(byte *p, uintptr size)
+ {
+-	void (*fn)(void*);
++	FuncVal *fn;
+ 	const struct __go_func_type *ft;
+ 	FinBlock *block;
+ 	Finalizer *f;
+@@ -1197,6 +1627,8 @@
+ 	if(finq == nil || finq->cnt == finq->cap) {
+ 		if(finc == nil) {
+ 			finc = runtime_SysAlloc(PageSize);
++			if(finc == nil)
++				runtime_throw("runtime: cannot allocate memory");
+ 			finc->cap = (PageSize - sizeof(FinBlock)) / sizeof(Finalizer) + 1;
+ 			finc->alllink = allfin;
+ 			allfin = finc;
+@@ -1236,10 +1668,10 @@
+ 	m = runtime_m();
+ 
+ 	USED(&desc);
+-	s = runtime_mheap.allspans[idx];
++	s = runtime_mheap->allspans[idx];
+ 	if(s->state != MSpanInUse)
+ 		return;
+-	arena_start = runtime_mheap.arena_start;
++	arena_start = runtime_mheap->arena_start;
+ 	p = (byte*)(s->start << PageShift);
+ 	cl = s->sizeclass;
+ 	size = s->elemsize;
+@@ -1302,8 +1734,8 @@
+ 		if(cl == 0) {
+ 			// Free large span.
+ 			runtime_unmarkspan(p, 1<<PageShift);
+-			*(uintptr*)p = 1;	// needs zeroing
+-			runtime_MHeap_Free(&runtime_mheap, s, 1);
++			*(uintptr*)p = (uintptr)0xdeaddeaddeaddeadll;	// needs zeroing
++			runtime_MHeap_Free(runtime_mheap, s, 1);
+ 			c->local_alloc -= size;
+ 			c->local_nfree++;
+ 		} else {
+@@ -1317,7 +1749,7 @@
+ 				break;
+ 			}
+ 			if(size > sizeof(uintptr))
+-				((uintptr*)p)[1] = 1;	// mark as "needs to be zeroed"
++				((uintptr*)p)[1] = (uintptr)0xdeaddeaddeaddeadll;	// mark as "needs to be zeroed"
+ 			
+ 			end->next = (MLink*)p;
+ 			end = (MLink*)p;
+@@ -1331,7 +1763,7 @@
+ 		c->local_nfree += nfree;
+ 		c->local_cachealloc -= nfree * size;
+ 		c->local_objects -= nfree;
+-		runtime_MCentral_FreeSpan(&runtime_mheap.central[cl], s, nfree, head.next, end);
++		runtime_MCentral_FreeSpan(&runtime_mheap->central[cl], s, nfree, head.next, end);
+ 	}
+ }
+ 
+@@ -1345,10 +1777,10 @@
+ 	MSpan *s;
+ 	bool allocated, special;
+ 
+-	s = runtime_mheap.allspans[idx];
++	s = runtime_mheap->allspans[idx];
+ 	if(s->state != MSpanInUse)
+ 		return;
+-	arena_start = runtime_mheap.arena_start;
++	arena_start = runtime_mheap->arena_start;
+ 	p = (byte*)(s->start << PageShift);
+ 	sizeclass = s->sizeclass;
+ 	size = s->elemsize;
+@@ -1406,7 +1838,7 @@
+ {
+ 	uint32 spanidx;
+ 
+-	for(spanidx=0; spanidx<runtime_mheap.nspan; spanidx++) {
++	for(spanidx=0; spanidx<runtime_mheap->nspan; spanidx++) {
+ 		dumpspan(spanidx);
+ 	}
+ }
+@@ -1414,6 +1846,8 @@
+ void
+ runtime_gchelper(void)
+ {
++	gchelperstart();
++
+ 	// parallel mark for over gc roots
+ 	runtime_parfordo(work.markfor);
+ 
+@@ -1427,10 +1861,13 @@
+ 	}
+ 
+ 	runtime_parfordo(work.sweepfor);
++	bufferList[runtime_m()->helpgc].busy = 0;
+ 	if(runtime_xadd(&work.ndone, +1) == work.nproc-1)
+ 		runtime_notewakeup(&work.alldone);
+ }
+ 
++#define GcpercentUnknown (-2)
++
+ // Initialized from $GOGC.  GOGC=off means no gc.
+ //
+ // Next gc is after we've allocated an extra amount of
+@@ -1440,22 +1877,14 @@
+ // proportion to the allocation cost.  Adjusting gcpercent
+ // just changes the linear constant (and also the amount of
+ // extra memory used).
+-static int32 gcpercent = -2;
+-
+-static void
+-stealcache(void)
+-{
+-	M *mp;
+-
+-	for(mp=runtime_allm; mp; mp=mp->alllink)
+-		runtime_MCache_ReleaseAll(mp->mcache);
+-}
++static int32 gcpercent = GcpercentUnknown;
+ 
+ static void
+ cachestats(GCStats *stats)
+ {
+ 	M *mp;
+ 	MCache *c;
++	P *p, **pp;
+ 	uint32 i;
+ 	uint64 stacks_inuse;
+ 	uint64 *src, *dst;
+@@ -1464,9 +1893,7 @@
+ 		runtime_memclr((byte*)stats, sizeof(*stats));
+ 	stacks_inuse = 0;
+ 	for(mp=runtime_allm; mp; mp=mp->alllink) {
+-		c = mp->mcache;
+-		runtime_purgecachedstats(c);
+-		// stacks_inuse += mp->stackinuse*FixedStack;
++		//stacks_inuse += mp->stackinuse*FixedStack;
+ 		if(stats) {
+ 			src = (uint64*)&mp->gcstats;
+ 			dst = (uint64*)stats;
+@@ -1474,6 +1901,12 @@
+ 				dst[i] += src[i];
+ 			runtime_memclr((byte*)&mp->gcstats, sizeof(mp->gcstats));
+ 		}
++	}
++	for(pp=runtime_allp; (p=*pp) != nil; pp++) {
++		c = p->mcache;
++		if(c==nil)
++			continue;
++		runtime_purgecachedstats(c);
+ 		for(i=0; i<nelem(c->local_by_size); i++) {
+ 			mstats.by_size[i].nmalloc += c->local_by_size[i].nmalloc;
+ 			c->local_by_size[i].nmalloc = 0;
+@@ -1493,6 +1926,19 @@
+ 
+ static void gc(struct gc_args *args);
+ 
++static int32
++readgogc(void)
++{
++	const byte *p;
++
++	p = runtime_getenv("GOGC");
++	if(p == nil || p[0] == '\0')
++		return 100;
++	if(runtime_strcmp((const char *)p, "off") == 0)
++		return -1;
++	return runtime_atoi(p);
++}
++
+ void
+ runtime_gc(int32 force)
+ {
+@@ -1505,6 +1951,8 @@
+ 	// a problem in the past.
+ 	if((((uintptr)&work.empty) & 7) != 0)
+ 		runtime_throw("runtime: gc work buffer is misaligned");
++	if((((uintptr)&work.full) & 7) != 0)
++		runtime_throw("runtime: gc work buffer is misaligned");
+ 
+ 	// Make sure all registers are saved on stack so that
+ 	// scanstack sees them.
+@@ -1522,14 +1970,8 @@
+ 	if(!mstats.enablegc || m->locks > 0 || runtime_panicking)
+ 		return;
+ 
+-	if(gcpercent == -2) {	// first time through
+-		p = runtime_getenv("GOGC");
+-		if(p == nil || p[0] == '\0')
+-			gcpercent = 100;
+-		else if(runtime_strcmp((const char*)p, "off") == 0)
+-			gcpercent = -1;
+-		else
+-			gcpercent = runtime_atoi(p);
++	if(gcpercent == GcpercentUnknown) {	// first time through
++		gcpercent = readgogc();
+ 
+ 		p = runtime_getenv("GOGCTRACE");
+ 		if(p != nil)
+@@ -1556,7 +1998,7 @@
+ {
+ 	M *m;
+ 	int64 t0, t1, t2, t3, t4;
+-	uint64 heap0, heap1, obj0, obj1;
++	uint64 heap0, heap1, obj0, obj1, ninstr;
+ 	GCStats stats;
+ 	M *mp;
+ 	uint32 i;
+@@ -1575,6 +2017,9 @@
+ 	m->gcing = 1;
+ 	runtime_stoptheworld();
+ 
++	if(CollectStats)
++		runtime_memclr((byte*)&gcstats, sizeof(gcstats));
++
+ 	for(mp=runtime_allm; mp; mp=mp->alllink)
+ 		runtime_settype_flush(mp, false);
+ 
+@@ -1605,7 +2050,7 @@
+ 	work.nproc = runtime_gcprocs();
+ 	addroots();
+ 	runtime_parforsetup(work.markfor, work.nproc, work.nroot, nil, false, markroot);
+-	runtime_parforsetup(work.sweepfor, work.nproc, runtime_mheap.nspan, nil, true, sweepspan);
++	runtime_parforsetup(work.sweepfor, work.nproc, runtime_mheap->nspan, nil, true, sweepspan);
+ 	if(work.nproc > 1) {
+ 		runtime_noteclear(&work.alldone);
+ 		runtime_helpgc(work.nproc);
+@@ -1613,6 +2058,7 @@
+ 
+ 	t1 = runtime_nanotime();
+ 
++	gchelperstart();
+ 	runtime_parfordo(work.markfor);
+ 	scanblock(nil, nil, 0, true);
+ 
+@@ -1624,14 +2070,14 @@
+ 	t2 = runtime_nanotime();
+ 
+ 	runtime_parfordo(work.sweepfor);
++	bufferList[m->helpgc].busy = 0;
+ 	t3 = runtime_nanotime();
+ 
+-	stealcache();
+-	cachestats(&stats);
+-
+ 	if(work.nproc > 1)
+ 		runtime_notesleep(&work.alldone);
+ 
++	cachestats(&stats);
++
+ 	stats.nprocyield += work.sweepfor->nprocyield;
+ 	stats.nosyield += work.sweepfor->nosyield;
+ 	stats.nsleep += work.sweepfor->nsleep;
+@@ -1671,6 +2117,27 @@
+ 			stats.nhandoff, stats.nhandoffcnt,
+ 			work.sweepfor->nsteal, work.sweepfor->nstealcnt,
+ 			stats.nprocyield, stats.nosyield, stats.nsleep);
++		if(CollectStats) {
++			runtime_printf("scan: %D bytes, %D objects, %D untyped, %D types from MSpan\n",
++				gcstats.nbytes, gcstats.obj.cnt, gcstats.obj.notype, gcstats.obj.typelookup);
++			if(gcstats.ptr.cnt != 0)
++				runtime_printf("avg ptrbufsize: %D (%D/%D)\n",
++					gcstats.ptr.sum/gcstats.ptr.cnt, gcstats.ptr.sum, gcstats.ptr.cnt);
++			if(gcstats.obj.cnt != 0)
++				runtime_printf("avg nobj: %D (%D/%D)\n",
++					gcstats.obj.sum/gcstats.obj.cnt, gcstats.obj.sum, gcstats.obj.cnt);
++			runtime_printf("rescans: %D, %D bytes\n", gcstats.rescan, gcstats.rescanbytes);
++
++			runtime_printf("instruction counts:\n");
++			ninstr = 0;
++			for(i=0; i<nelem(gcstats.instr); i++) {
++				runtime_printf("\t%d:\t%D\n", i, gcstats.instr[i]);
++				ninstr += gcstats.instr[i];
++			}
++			runtime_printf("\ttotal:\t%D\n", ninstr);
++
++			runtime_printf("putempty: %D, getfull: %D\n", gcstats.putempty, gcstats.getfull);
++		}
+ 	}
+ 
+ 	runtime_MProf_GC();
+@@ -1705,6 +2172,71 @@
+ 	runtime_starttheworld();
+ }
+ 
++void runtime_debug_readGCStats(Slice*)
++  __asm__("runtime_debug.readGCStats");
++
++void
++runtime_debug_readGCStats(Slice *pauses)
++{
++	uint64 *p;
++	uint32 i, n;
++
++	// Calling code in runtime/debug should make the slice large enough.
++	if((size_t)pauses->cap < nelem(mstats.pause_ns)+3)
++		runtime_throw("runtime: short slice passed to readGCStats");
++
++	// Pass back: pauses, last gc (absolute time), number of gc, total pause ns.
++	p = (uint64*)pauses->array;
++	runtime_lock(runtime_mheap);
++	n = mstats.numgc;
++	if(n > nelem(mstats.pause_ns))
++		n = nelem(mstats.pause_ns);
++	
++	// The pause buffer is circular. The most recent pause is at
++	// pause_ns[(numgc-1)%nelem(pause_ns)], and then backward
++	// from there to go back farther in time. We deliver the times
++	// most recent first (in p[0]).
++	for(i=0; i<n; i++)
++		p[i] = mstats.pause_ns[(mstats.numgc-1-i)%nelem(mstats.pause_ns)];
++
++	p[n] = mstats.last_gc;
++	p[n+1] = mstats.numgc;
++	p[n+2] = mstats.pause_total_ns;	
++	runtime_unlock(runtime_mheap);
++	pauses->__count = n+3;
++}
++
++intgo runtime_debug_setGCPercent(intgo)
++  __asm__("runtime_debug.setGCPercent");
++
++intgo
++runtime_debug_setGCPercent(intgo in)
++{
++	intgo out;
++
++	runtime_lock(runtime_mheap);
++	if(gcpercent == GcpercentUnknown)
++		gcpercent = readgogc();
++	out = gcpercent;
++	if(in < 0)
++		in = -1;
++	gcpercent = in;
++	runtime_unlock(runtime_mheap);
++	return out;
++}
++
++static void
++gchelperstart(void)
++{
++	M *m;
++
++	m = runtime_m();
++	if(m->helpgc < 0 || m->helpgc >= MaxGcproc)
++		runtime_throw("gchelperstart: bad m->helpgc");
++	if(runtime_xchg(&bufferList[m->helpgc].busy, 1))
++		runtime_throw("gchelperstart: already busy");
++}
++
+ static void
+ runfinq(void* dummy __attribute__ ((unused)))
+ {
+@@ -1731,11 +2263,12 @@
+ 		for(; fb; fb=next) {
+ 			next = fb->next;
+ 			for(i=0; i<(uint32)fb->cnt; i++) {
+-				void *params[1];
++				void *params[2];
+ 
+ 				f = &fb->fin[i];
+ 				params[0] = &f->arg;
+-				reflect_call(f->ft, (void*)f->fn, 0, 0, params, nil);
++				params[1] = f;
++				reflect_call(f->ft, f->fn, 0, 0, params, nil);
+ 				f->fn = nil;
+ 				f->arg = nil;
+ 			}
+@@ -1757,11 +2290,11 @@
+ 	if(0)
+ 		runtime_printf("markallocated %p+%p\n", v, n);
+ 
+-	if((byte*)v+n > (byte*)runtime_mheap.arena_used || (byte*)v < runtime_mheap.arena_start)
++	if((byte*)v+n > (byte*)runtime_mheap->arena_used || (byte*)v < runtime_mheap->arena_start)
+ 		runtime_throw("markallocated: bad pointer");
+ 
+-	off = (uintptr*)v - (uintptr*)runtime_mheap.arena_start;  // word offset
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	off = (uintptr*)v - (uintptr*)runtime_mheap->arena_start;  // word offset
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	shift = off % wordsPerBitmapWord;
+ 
+ 	for(;;) {
+@@ -1789,11 +2322,11 @@
+ 	if(0)
+ 		runtime_printf("markallocated %p+%p\n", v, n);
+ 
+-	if((byte*)v+n > (byte*)runtime_mheap.arena_used || (byte*)v < runtime_mheap.arena_start)
++	if((byte*)v+n > (byte*)runtime_mheap->arena_used || (byte*)v < runtime_mheap->arena_start)
+ 		runtime_throw("markallocated: bad pointer");
+ 
+-	off = (uintptr*)v - (uintptr*)runtime_mheap.arena_start;  // word offset
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	off = (uintptr*)v - (uintptr*)runtime_mheap->arena_start;  // word offset
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	shift = off % wordsPerBitmapWord;
+ 
+ 	for(;;) {
+@@ -1819,11 +2352,11 @@
+ 	if(!runtime_checking)
+ 		return;
+ 
+-	if((byte*)v+n > (byte*)runtime_mheap.arena_used || (byte*)v < runtime_mheap.arena_start)
++	if((byte*)v+n > (byte*)runtime_mheap->arena_used || (byte*)v < runtime_mheap->arena_start)
+ 		return;	// not allocated, so okay
+ 
+-	off = (uintptr*)v - (uintptr*)runtime_mheap.arena_start;  // word offset
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	off = (uintptr*)v - (uintptr*)runtime_mheap->arena_start;  // word offset
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	shift = off % wordsPerBitmapWord;
+ 
+ 	bits = *b>>shift;
+@@ -1842,7 +2375,7 @@
+ 	uintptr *b, off, shift;
+ 	byte *p;
+ 
+-	if((byte*)v+size*n > (byte*)runtime_mheap.arena_used || (byte*)v < runtime_mheap.arena_start)
++	if((byte*)v+size*n > (byte*)runtime_mheap->arena_used || (byte*)v < runtime_mheap->arena_start)
+ 		runtime_throw("markspan: bad pointer");
+ 
+ 	p = v;
+@@ -1853,8 +2386,8 @@
+ 		// the entire span, and each bitmap word has bits for only
+ 		// one span, so no other goroutines are changing these
+ 		// bitmap words.
+-		off = (uintptr*)p - (uintptr*)runtime_mheap.arena_start;  // word offset
+-		b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++		off = (uintptr*)p - (uintptr*)runtime_mheap->arena_start;  // word offset
++		b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 		shift = off % wordsPerBitmapWord;
+ 		*b = (*b & ~(bitMask<<shift)) | (bitBlockBoundary<<shift);
+ 	}
+@@ -1866,14 +2399,14 @@
+ {
+ 	uintptr *p, *b, off;
+ 
+-	if((byte*)v+n > (byte*)runtime_mheap.arena_used || (byte*)v < runtime_mheap.arena_start)
++	if((byte*)v+n > (byte*)runtime_mheap->arena_used || (byte*)v < runtime_mheap->arena_start)
+ 		runtime_throw("markspan: bad pointer");
+ 
+ 	p = v;
+-	off = p - (uintptr*)runtime_mheap.arena_start;  // word offset
++	off = p - (uintptr*)runtime_mheap->arena_start;  // word offset
+ 	if(off % wordsPerBitmapWord != 0)
+ 		runtime_throw("markspan: unaligned pointer");
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	n /= PtrSize;
+ 	if(n%wordsPerBitmapWord != 0)
+ 		runtime_throw("unmarkspan: unaligned length");
+@@ -1894,8 +2427,8 @@
+ 	if(DebugMark)
+ 		return true;
+ 
+-	off = (uintptr*)v - (uintptr*)runtime_mheap.arena_start;
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	off = (uintptr*)v - (uintptr*)runtime_mheap->arena_start;
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	shift = off % wordsPerBitmapWord;
+ 
+ 	return (*b & (bitSpecial<<shift)) != 0;
+@@ -1909,8 +2442,8 @@
+ 	if(DebugMark)
+ 		return;
+ 
+-	off = (uintptr*)v - (uintptr*)runtime_mheap.arena_start;
+-	b = (uintptr*)runtime_mheap.arena_start - off/wordsPerBitmapWord - 1;
++	off = (uintptr*)v - (uintptr*)runtime_mheap->arena_start;
++	b = (uintptr*)runtime_mheap->arena_start - off/wordsPerBitmapWord - 1;
+ 	shift = off % wordsPerBitmapWord;
+ 
+ 	for(;;) {
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mgc0.h gcc-4.8.1/libgo/runtime/mgc0.h
+--- gcc-4.8.1.orig/libgo/runtime/mgc0.h	2012-12-21 19:15:33.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mgc0.h	2013-07-16 01:55:04.520470000 -0500
+@@ -12,17 +12,22 @@
+ // Meaning of arguments:
+ //   off      Offset (in bytes) from the start of the current object
+ //   objgc    Pointer to GC info of an object
++//   objgcrel Offset to GC info of an object
+ //   len      Length of an array
+ //   elemsize Size (in bytes) of an element
+ //   size     Size (in bytes)
++//
++// NOTE: There is a copy of these in ../reflect/type.go.
++// They must be kept in sync.
+ enum {
+ 	GC_END,         // End of object, loop or subroutine. Args: none
+ 	GC_PTR,         // A typed pointer. Args: (off, objgc)
+ 	GC_APTR,        // Pointer to an arbitrary object. Args: (off)
+ 	GC_ARRAY_START, // Start an array with a fixed length. Args: (off, len, elemsize)
+ 	GC_ARRAY_NEXT,  // The next element of an array. Args: none
+-	GC_CALL,        // Call a subroutine. Args: (off, objgc)
++	GC_CALL,        // Call a subroutine. Args: (off, objgcrel)
+ 	GC_MAP_PTR,     // Go map. Args: (off, MapType*)
++	GC_CHAN_PTR,    // Go channel. Args: (off, ChanType*)
+ 	GC_STRING,      // Go string. Args: (off)
+ 	GC_EFACE,       // interface{}. Args: (off)
+ 	GC_IFACE,       // interface{...}. Args: (off)
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mheap.c gcc-4.8.1/libgo/runtime/mheap.c
+--- gcc-4.8.1.orig/libgo/runtime/mheap.c	2013-02-05 17:59:24.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mheap.c	2013-07-16 01:55:04.520470000 -0500
+@@ -37,6 +37,8 @@
+ 		if(cap < h->nspancap*3/2)
+ 			cap = h->nspancap*3/2;
+ 		all = (MSpan**)runtime_SysAlloc(cap*sizeof(all[0]));
++		if(all == nil)
++			runtime_throw("runtime: cannot allocate memory");
+ 		if(h->allspans) {
+ 			runtime_memmove(all, h->allspans, h->nspancap*sizeof(all[0]));
+ 			runtime_SysFree(h->allspans, h->nspancap*sizeof(all[0]));
+@@ -119,6 +121,25 @@
+ 	s->state = MSpanInUse;
+ 	mstats.heap_idle -= s->npages<<PageShift;
+ 	mstats.heap_released -= s->npreleased<<PageShift;
++	if(s->npreleased > 0) {
++		// We have called runtime_SysUnused with these pages, and on
++		// Unix systems it called madvise.  At this point at least
++		// some BSD-based kernels will return these pages either as
++		// zeros or with the old data.  For our caller, the first word
++		// in the page indicates whether the span contains zeros or
++		// not (this word was set when the span was freed by
++		// MCentral_Free or runtime_MCentral_FreeSpan).  If the first
++		// page in the span is returned as zeros, and some subsequent
++		// page is returned with the old data, then we will be
++		// returning a span that is assumed to be all zeros, but the
++		// actual data will not be all zeros.  Avoid that problem by
++		// explicitly marking the span as not being zeroed, just in
++		// case.  The beadbead constant we use here means nothing, it
++		// is just a unique constant not seen elsewhere in the
++		// runtime, as a clue in case it turns up unexpectedly in
++		// memory or in a stack trace.
++		*(uintptr*)(s->start<<PageShift) = (uintptr)0xbeadbeadbeadbeadULL;
++	}
+ 	s->npreleased = 0;
+ 
+ 	if(s->npages > npage) {
+@@ -356,23 +377,64 @@
+ 	runtime_notewakeup(note);
+ }
+ 
++static uintptr
++scavengelist(MSpan *list, uint64 now, uint64 limit)
++{
++	uintptr released, sumreleased;
++	MSpan *s;
++
++	if(runtime_MSpanList_IsEmpty(list))
++		return 0;
++
++	sumreleased = 0;
++	for(s=list->next; s != list; s=s->next) {
++		if((now - s->unusedsince) > limit) {
++			released = (s->npages - s->npreleased) << PageShift;
++			mstats.heap_released += released;
++			sumreleased += released;
++			s->npreleased = s->npages;
++			runtime_SysUnused((void*)(s->start << PageShift), s->npages << PageShift);
++		}
++	}
++	return sumreleased;
++}
++
++static uintptr
++scavenge(uint64 now, uint64 limit)
++{
++	uint32 i;
++	uintptr sumreleased;
++	MHeap *h;
++	
++	h = runtime_mheap;
++	sumreleased = 0;
++	for(i=0; i < nelem(h->free); i++)
++		sumreleased += scavengelist(&h->free[i], now, limit);
++	sumreleased += scavengelist(&h->large, now, limit);
++	return sumreleased;
++}
++
+ // Release (part of) unused memory to OS.
+ // Goroutine created at startup.
+ // Loop forever.
+ void
+ runtime_MHeap_Scavenger(void* dummy)
+ {
++	G *g;
+ 	MHeap *h;
+-	MSpan *s, *list;
+ 	uint64 tick, now, forcegc, limit;
+-	uint32 k, i;
+-	uintptr released, sumreleased;
++	uint32 k;
++	uintptr sumreleased;
+ 	const byte *env;
+ 	bool trace;
+ 	Note note, *notep;
+ 
+ 	USED(dummy);
+ 
++	g = runtime_g();
++	g->issystem = true;
++	g->isbackground = true;
++
+ 	// If we go two minutes without a garbage collection, force one to run.
+ 	forcegc = 2*60*1e9;
+ 	// If a span goes unused for 5 minutes after a garbage collection,
+@@ -389,10 +451,10 @@
+ 	if(env != nil)
+ 		trace = runtime_atoi(env) > 0;
+ 
+-	h = &runtime_mheap;
++	h = runtime_mheap;
+ 	for(k=0;; k++) {
+ 		runtime_noteclear(&note);
+-		runtime_entersyscall();
++		runtime_entersyscallblock();
+ 		runtime_notetsleep(&note, tick);
+ 		runtime_exitsyscall();
+ 
+@@ -406,7 +468,7 @@
+ 			runtime_noteclear(&note);
+ 			notep = &note;
+ 			__go_go(forcegchelper, (void*)notep);
+-			runtime_entersyscall();
++			runtime_entersyscallblock();
+ 			runtime_notesleep(&note);
+ 			runtime_exitsyscall();
+ 			if(trace)
+@@ -414,24 +476,7 @@
+ 			runtime_lock(h);
+ 			now = runtime_nanotime();
+ 		}
+-		sumreleased = 0;
+-		for(i=0; i < nelem(h->free)+1; i++) {
+-			if(i < nelem(h->free))
+-				list = &h->free[i];
+-			else
+-				list = &h->large;
+-			if(runtime_MSpanList_IsEmpty(list))
+-				continue;
+-			for(s=list->next; s != list; s=s->next) {
+-				if((now - s->unusedsince) > limit) {
+-					released = (s->npages - s->npreleased) << PageShift;
+-					mstats.heap_released += released;
+-					sumreleased += released;
+-					s->npreleased = s->npages;
+-					runtime_SysUnused((void*)(s->start << PageShift), s->npages << PageShift);
+-				}
+-			}
+-		}
++		sumreleased = scavenge(now, limit);
+ 		runtime_unlock(h);
+ 
+ 		if(trace) {
+@@ -444,6 +489,17 @@
+ 	}
+ }
+ 
++void runtime_debug_freeOSMemory(void) __asm__("runtime_debug.freeOSMemory");
++
++void
++runtime_debug_freeOSMemory(void)
++{
++	runtime_gc(1);
++	runtime_lock(runtime_mheap);
++	scavenge(~(uintptr)0, 0);
++	runtime_unlock(runtime_mheap);
++}
++
+ // Initialize a new span with the given start and npages.
+ void
+ runtime_MSpan_Init(MSpan *span, PageID start, uintptr npages)
+diff -Naur gcc-4.8.1.orig/libgo/runtime/mprof.goc gcc-4.8.1/libgo/runtime/mprof.goc
+--- gcc-4.8.1.orig/libgo/runtime/mprof.goc	2013-01-30 16:24:40.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/mprof.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -14,7 +14,43 @@
+ #include "go-string.h"
+ 
+ // NOTE(rsc): Everything here could use cas if contention became an issue.
+-static Lock proflock;
++static Lock proflock, alloclock;
++
++// All memory allocations are local and do not escape outside of the profiler.
++// The profiler is forbidden from referring to garbage-collected memory.
++
++static byte *pool;        // memory allocation pool
++static uintptr poolfree;  // number of bytes left in the pool
++enum {
++	Chunk = 32*PageSize,  // initial size of the pool
++};
++
++// Memory allocation local to this file.
++// There is no way to return the allocated memory back to the OS.
++static void*
++allocate(uintptr size)
++{
++	void *v;
++
++	if(size == 0)
++		return nil;
++
++	if(size >= Chunk/2)
++		return runtime_SysAlloc(size);
++
++	runtime_lock(&alloclock);
++	if(size > poolfree) {
++		pool = runtime_SysAlloc(Chunk);
++		if(pool == nil)
++			runtime_throw("runtime: cannot allocate memory");
++		poolfree = Chunk;
++	}
++	v = pool;
++	pool += size;
++	poolfree -= size;
++	runtime_unlock(&alloclock);
++	return v;
++}
+ 
+ enum { MProf, BProf };  // profile types
+ 
+@@ -26,6 +62,8 @@
+ 	Bucket	*next;	// next in hash list
+ 	Bucket	*allnext;	// next in list of all mbuckets/bbuckets
+ 	int32	typ;
++	// Generally unions can break precise GC,
++	// this one is fine because it does not contain pointers.
+ 	union
+ 	{
+ 		struct  // typ == MProf
+@@ -67,6 +105,8 @@
+ 
+ 	if(buckhash == nil) {
+ 		buckhash = runtime_SysAlloc(BuckHashSize*sizeof buckhash[0]);
++		if(buckhash == nil)
++			runtime_throw("runtime: cannot allocate memory");
+ 		mstats.buckhash_sys += BuckHashSize*sizeof buckhash[0];
+ 	}
+ 
+@@ -97,7 +137,9 @@
+ 	if(!alloc)
+ 		return nil;
+ 
+-	b = runtime_mallocgc(sizeof *b + nstk*sizeof stk[0], FlagNoProfiling, 0, 1);
++	b = allocate(sizeof *b + nstk*sizeof stk[0]);
++	if(b == nil)
++		runtime_throw("runtime: cannot allocate memory");
+ 	bucketmem += sizeof *b + nstk*sizeof stk[0];
+ 	runtime_memmove(b->stk, stk, nstk*sizeof stk[0]);
+ 	b->typ = typ;
+@@ -115,13 +157,11 @@
+ 	return b;
+ }
+ 
+-// Record that a gc just happened: all the 'recent' statistics are now real.
+-void
+-runtime_MProf_GC(void)
++static void
++MProf_GC(void)
+ {
+ 	Bucket *b;
+-	
+-	runtime_lock(&proflock);
++
+ 	for(b=mbuckets; b; b=b->allnext) {
+ 		b->allocs += b->recent_allocs;
+ 		b->frees += b->recent_frees;
+@@ -132,6 +172,14 @@
+ 		b->recent_alloc_bytes = 0;
+ 		b->recent_free_bytes = 0;
+ 	}
++}
++
++// Record that a gc just happened: all the 'recent' statistics are now real.
++void
++runtime_MProf_GC(void)
++{
++	runtime_lock(&proflock);
++	MProf_GC();
+ 	runtime_unlock(&proflock);
+ }
+ 
+@@ -166,7 +214,7 @@
+ 	Bucket *b;
+ };
+ 
+-static AddrHash *addrhash[1<<AddrHashBits];
++static AddrHash **addrhash;	// points to (AddrHash*)[1<<AddrHashBits]
+ static AddrEntry *addrfree;
+ static uintptr addrmem;
+ 
+@@ -193,7 +241,7 @@
+ 		if(ah->addr == (addr>>AddrHashShift))
+ 			goto found;
+ 
+-	ah = runtime_mallocgc(sizeof *ah, FlagNoProfiling, 0, 1);
++	ah = allocate(sizeof *ah);
+ 	addrmem += sizeof *ah;
+ 	ah->next = addrhash[h];
+ 	ah->addr = addr>>AddrHashShift;
+@@ -201,7 +249,7 @@
+ 
+ found:
+ 	if((e = addrfree) == nil) {
+-		e = runtime_mallocgc(64*sizeof *e, FlagNoProfiling, 0, 0);
++		e = allocate(64*sizeof *e);
+ 		addrmem += 64*sizeof *e;
+ 		for(i=0; i+1<64; i++)
+ 			e[i].next = &e[i+1];
+@@ -353,12 +401,28 @@
+ func MemProfile(p Slice, include_inuse_zero bool) (n int, ok bool) {
+ 	Bucket *b;
+ 	Record *r;
++	bool clear;
+ 
+ 	runtime_lock(&proflock);
+ 	n = 0;
+-	for(b=mbuckets; b; b=b->allnext)
++	clear = true;
++	for(b=mbuckets; b; b=b->allnext) {
+ 		if(include_inuse_zero || b->alloc_bytes != b->free_bytes)
+ 			n++;
++		if(b->allocs != 0 || b->frees != 0)
++			clear = false;
++	}
++	if(clear) {
++		// Absolutely no data, suggesting that a garbage collection
++		// has not yet happened. In order to allow profiling when
++		// garbage collection is disabled from the beginning of execution,
++		// accumulate stats as if a GC just happened, and recount buckets.
++		MProf_GC();
++		n = 0;
++		for(b=mbuckets; b; b=b->allnext)
++			if(include_inuse_zero || b->alloc_bytes != b->free_bytes)
++				n++;
++	}
+ 	ok = false;
+ 	if(n <= p.__count) {
+ 		ok = true;
+@@ -531,3 +595,8 @@
+ 	}
+ }
+ 
++void
++runtime_mprofinit(void)
++{
++	addrhash = allocate((1<<AddrHashBits)*sizeof *addrhash);
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/netpoll_epoll.c gcc-4.8.1/libgo/runtime/netpoll_epoll.c
+--- gcc-4.8.1.orig/libgo/runtime/netpoll_epoll.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/netpoll_epoll.c	2013-07-23 15:32:35.171520000 -0500
+@@ -0,0 +1,158 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build linux
++
++#include <errno.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <sys/epoll.h>
++
++#include "runtime.h"
++#include "defs.h"
++
++#ifndef EPOLLRDHUP
++#define EPOLLRDHUP 0x2000
++#endif
++
++#ifndef EPOLL_CLOEXEC
++#define EPOLL_CLOEXEC 02000000
++#endif
++
++#ifndef HAVE_EPOLL_CREATE1
++extern int epoll_create1(int __flags);
++#endif
++
++typedef struct epoll_event EpollEvent;
++
++static int32
++runtime_epollcreate(int32 size)
++{
++	int r;
++
++	r = epoll_create(size);
++	if(r >= 0)
++		return r;
++	return - errno;
++}
++
++static int32
++runtime_epollcreate1(int32 flags)
++{
++	int r;
++
++	r = epoll_create1(flags);
++	if(r >= 0)
++		return r;
++	return - errno;
++}
++
++static int32
++runtime_epollctl(int32 epfd, int32 op, int32 fd, EpollEvent *ev)
++{
++	int r;
++
++	r = epoll_ctl(epfd, op, fd, ev);
++	if(r >= 0)
++		return r;
++	return - errno;
++}
++
++static int32
++runtime_epollwait(int32 epfd, EpollEvent *ev, int32 nev, int32 timeout)
++{
++	int r;
++
++	r = epoll_wait(epfd, ev, nev, timeout);
++	if(r >= 0)
++		return r;
++	return - errno;
++}
++
++static void
++runtime_closeonexec(int32 fd)
++{
++	fcntl(fd, F_SETFD, FD_CLOEXEC);
++}
++
++static int32 epfd = -1;  // epoll descriptor
++
++void
++runtime_netpollinit(void)
++{
++	epfd = runtime_epollcreate1(EPOLL_CLOEXEC);
++	if(epfd >= 0)
++		return;
++	epfd = runtime_epollcreate(1024);
++	if(epfd >= 0) {
++		runtime_closeonexec(epfd);
++		return;
++	}
++	runtime_printf("netpollinit: failed to create descriptor (%d)\n", -epfd);
++	runtime_throw("netpollinit: failed to create descriptor");
++}
++
++int32
++runtime_netpollopen(int32 fd, PollDesc *pd)
++{
++	EpollEvent ev;
++	int32 res;
++
++	ev.events = EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET;
++	ev.data.ptr = (void*)pd;
++	res = runtime_epollctl(epfd, EPOLL_CTL_ADD, fd, &ev);
++	return -res;
++}
++
++int32
++runtime_netpollclose(int32 fd)
++{
++	EpollEvent ev;
++	int32 res;
++
++	res = runtime_epollctl(epfd, EPOLL_CTL_DEL, fd, &ev);
++	return -res;
++}
++
++// polls for ready network connections
++// returns list of goroutines that become runnable
++G*
++runtime_netpoll(bool block)
++{
++	static int32 lasterr;
++	EpollEvent events[128], *ev;
++	int32 n, i, waitms, mode;
++	G *gp;
++
++	if(epfd == -1)
++		return nil;
++	waitms = -1;
++	if(!block)
++		waitms = 0;
++retry:
++	n = runtime_epollwait(epfd, events, nelem(events), waitms);
++	if(n < 0) {
++		if(n != -EINTR && n != lasterr) {
++			lasterr = n;
++			runtime_printf("runtime: epollwait on fd %d failed with %d\n", epfd, -n);
++		}
++		goto retry;
++	}
++	gp = nil;
++	for(i = 0; i < n; i++) {
++		ev = &events[i];
++		if(ev->events == 0)
++			continue;
++		mode = 0;
++		if(ev->events & (EPOLLIN|EPOLLRDHUP|EPOLLHUP|EPOLLERR))
++			mode += 'r';
++		if(ev->events & (EPOLLOUT|EPOLLHUP|EPOLLERR))
++			mode += 'w';
++		if(mode)
++			runtime_netpollready(&gp, (void*)ev->data.ptr, mode);
++	}
++	if(block && gp == nil)
++		goto retry;
++	return gp;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/netpoll.goc gcc-4.8.1/libgo/runtime/netpoll.goc
+--- gcc-4.8.1.orig/libgo/runtime/netpoll.goc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/netpoll.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,356 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin linux
++
++package net
++
++#include "runtime.h"
++#include "defs.h"
++#include "arch.h"
++#include "malloc.h"
++
++// Map gccgo field names to gc field names.
++// Eface aka __go_empty_interface.
++#define type __type_descriptor
++#define data __object
++
++// Integrated network poller (platform-independent part).
++// A particular implementation (epoll/kqueue) must define the following functions:
++// void runtime_netpollinit(void);			// to initialize the poller
++// int32 runtime_netpollopen(int32 fd, PollDesc *pd);	// to arm edge-triggered notifications
++							// and associate fd with pd.
++// An implementation must call the following function to denote that the pd is ready.
++// void runtime_netpollready(G **gpp, PollDesc *pd, int32 mode);
++
++#define READY ((G*)1)
++
++struct PollDesc
++{
++	PollDesc* link;	// in pollcache, protected by pollcache.Lock
++	Lock;		// protectes the following fields
++	int32	fd;
++	bool	closing;
++	uintptr	seq;	// protects from stale timers and ready notifications
++	G*	rg;	// G waiting for read or READY (binary semaphore)
++	Timer	rt;	// read deadline timer (set if rt.fv != nil)
++	int64	rd;	// read deadline
++	G*	wg;	// the same for writes
++	Timer	wt;
++	int64	wd;
++};
++
++static struct
++{
++	Lock;
++	PollDesc*	first;
++	// PollDesc objects must be type-stable,
++	// because we can get ready notification from epoll/kqueue
++	// after the descriptor is closed/reused.
++	// Stale notifications are detected using seq variable,
++	// seq is incremented when deadlines are changed or descriptor is reused.
++} pollcache;
++
++static void	netpollblock(PollDesc*, int32);
++static G*	netpollunblock(PollDesc*, int32);
++static void	deadline(int64, Eface);
++static void	readDeadline(int64, Eface);
++static void	writeDeadline(int64, Eface);
++static PollDesc*	allocPollDesc(void);
++static intgo	checkerr(PollDesc *pd, int32 mode);
++
++static FuncVal deadlineFn	= {(void(*)(void))deadline};
++static FuncVal readDeadlineFn	= {(void(*)(void))readDeadline};
++static FuncVal writeDeadlineFn	= {(void(*)(void))writeDeadline};
++
++func runtime_pollServerInit() {
++	runtime_netpollinit();
++}
++
++func runtime_pollOpen(fd int) (pd *PollDesc, errno int) {
++	pd = allocPollDesc();
++	runtime_lock(pd);
++	if(pd->wg != nil && pd->wg != READY)
++		runtime_throw("runtime_pollOpen: blocked write on free descriptor");
++	if(pd->rg != nil && pd->rg != READY)
++		runtime_throw("runtime_pollOpen: blocked read on free descriptor");
++	pd->fd = fd;
++	pd->closing = false;
++	pd->seq++;
++	pd->rg = nil;
++	pd->rd = 0;
++	pd->wg = nil;
++	pd->wd = 0;
++	runtime_unlock(pd);
++
++	errno = runtime_netpollopen(fd, pd);
++}
++
++func runtime_pollClose(pd *PollDesc) {
++	if(!pd->closing)
++		runtime_throw("runtime_pollClose: close w/o unblock");
++	if(pd->wg != nil && pd->wg != READY)
++		runtime_throw("runtime_pollClose: blocked write on closing descriptor");
++	if(pd->rg != nil && pd->rg != READY)
++		runtime_throw("runtime_pollClose: blocked read on closing descriptor");
++	runtime_netpollclose(pd->fd);
++	runtime_lock(&pollcache);
++	pd->link = pollcache.first;
++	pollcache.first = pd;
++	runtime_unlock(&pollcache);
++}
++
++func runtime_pollReset(pd *PollDesc, mode int) (err int) {
++	runtime_lock(pd);
++	err = checkerr(pd, mode);
++	if(err)
++		goto ret;
++	if(mode == 'r')
++		pd->rg = nil;
++	else if(mode == 'w')
++		pd->wg = nil;
++ret:
++	runtime_unlock(pd);
++}
++
++func runtime_pollWait(pd *PollDesc, mode int) (err int) {
++	runtime_lock(pd);
++	err = checkerr(pd, mode);
++	if(err)
++		goto ret;
++	netpollblock(pd, mode);
++	err = checkerr(pd, mode);
++ret:
++	runtime_unlock(pd);
++}
++
++func runtime_pollSetDeadline(pd *PollDesc, d int64, mode int) {
++	runtime_lock(pd);
++	if(pd->closing)
++		goto ret;
++	pd->seq++;  // invalidate current timers
++	// Reset current timers.
++	if(pd->rt.fv) {
++		runtime_deltimer(&pd->rt);
++		pd->rt.fv = nil;
++	}
++	if(pd->wt.fv) {
++		runtime_deltimer(&pd->wt);
++		pd->wt.fv = nil;
++	}
++	// Setup new timers.
++	if(d != 0 && d <= runtime_nanotime()) {
++		d = -1;
++	}
++	if(mode == 'r' || mode == 'r'+'w')
++		pd->rd = d;
++	if(mode == 'w' || mode == 'r'+'w')
++		pd->wd = d;
++	if(pd->rd > 0 && pd->rd == pd->wd) {
++		pd->rt.fv = &deadlineFn;
++		pd->rt.when = pd->rd;
++		// Copy current seq into the timer arg.
++		// Timer func will check the seq against current descriptor seq,
++		// if they differ the descriptor was reused or timers were reset.
++		pd->rt.arg.type = (Type*)pd->seq;
++		pd->rt.arg.data = pd;
++		runtime_addtimer(&pd->rt);
++	} else {
++		if(pd->rd > 0) {
++			pd->rt.fv = &readDeadlineFn;
++			pd->rt.when = pd->rd;
++			pd->rt.arg.type = (Type*)pd->seq;
++			pd->rt.arg.data = pd;
++			runtime_addtimer(&pd->rt);
++		}
++		if(pd->wd > 0) {
++			pd->wt.fv = &writeDeadlineFn;
++			pd->wt.when = pd->wd;
++			pd->wt.arg.type = (Type*)pd->seq;
++			pd->wt.arg.data = pd;
++			runtime_addtimer(&pd->wt);
++		}
++	}
++ret:
++	runtime_unlock(pd);
++}
++
++func runtime_pollUnblock(pd *PollDesc) {
++	G *rg, *wg;
++
++	runtime_lock(pd);
++	if(pd->closing)
++		runtime_throw("runtime_pollUnblock: already closing");
++	pd->closing = true;
++	pd->seq++;
++	rg = netpollunblock(pd, 'r');
++	wg = netpollunblock(pd, 'w');
++	if(pd->rt.fv) {
++		runtime_deltimer(&pd->rt);
++		pd->rt.fv = nil;
++	}
++	if(pd->wt.fv) {
++		runtime_deltimer(&pd->wt);
++		pd->wt.fv = nil;
++	}
++	runtime_unlock(pd);
++	if(rg)
++		runtime_ready(rg);
++	if(wg)
++		runtime_ready(wg);
++}
++
++// make pd ready, newly runnable goroutines (if any) are enqueued info gpp list
++void
++runtime_netpollready(G **gpp, PollDesc *pd, int32 mode)
++{
++	G *rg, *wg;
++
++	rg = wg = nil;
++	runtime_lock(pd);
++	if(mode == 'r' || mode == 'r'+'w')
++		rg = netpollunblock(pd, 'r');
++	if(mode == 'w' || mode == 'r'+'w')
++		wg = netpollunblock(pd, 'w');
++	runtime_unlock(pd);
++	if(rg) {
++		rg->schedlink = *gpp;
++		*gpp = rg;
++	}
++	if(wg) {
++		wg->schedlink = *gpp;
++		*gpp = wg;
++	}
++}
++
++static intgo
++checkerr(PollDesc *pd, int32 mode)
++{
++	if(pd->closing)
++		return 1;  // errClosing
++	if((mode == 'r' && pd->rd < 0) || (mode == 'w' && pd->wd < 0))
++		return 2;  // errTimeout
++	return 0;
++}
++
++static void
++netpollblock(PollDesc *pd, int32 mode)
++{
++	G **gpp;
++
++	gpp = &pd->rg;
++	if(mode == 'w')
++		gpp = &pd->wg;
++	if(*gpp == READY) {
++		*gpp = nil;
++		return;
++	}
++	if(*gpp != nil)
++		runtime_throw("epoll: double wait");
++	*gpp = runtime_g();
++	runtime_park(runtime_unlock, &pd->Lock, "IO wait");
++	runtime_lock(pd);
++}
++
++static G*
++netpollunblock(PollDesc *pd, int32 mode)
++{
++	G **gpp, *old;
++
++	gpp = &pd->rg;
++	if(mode == 'w')
++		gpp = &pd->wg;
++	if(*gpp == READY)
++		return nil;
++	if(*gpp == nil) {
++		*gpp = READY;
++		return nil;
++	}
++	old = *gpp;
++	*gpp = nil;
++	return old;
++}
++
++static void
++deadlineimpl(int64 now, Eface arg, bool read, bool write)
++{
++	PollDesc *pd;
++	uint32 seq;
++	G *rg, *wg;
++
++	USED(now);
++	pd = (PollDesc*)arg.data;
++	// This is the seq when the timer was set.
++	// If it's stale, ignore the timer event.
++	seq = (uintptr)arg.type;
++	rg = wg = nil;
++	runtime_lock(pd);
++	if(seq != pd->seq) {
++		// The descriptor was reused or timers were reset.
++		runtime_unlock(pd);
++		return;
++	}
++	if(read) {
++		if(pd->rd <= 0 || pd->rt.fv == nil)
++			runtime_throw("deadlineimpl: inconsistent read deadline");
++		pd->rd = -1;
++		pd->rt.fv = nil;
++		rg = netpollunblock(pd, 'r');
++	}
++	if(write) {
++		if(pd->wd <= 0 || (pd->wt.fv == nil && !read))
++			runtime_throw("deadlineimpl: inconsistent write deadline");
++		pd->wd = -1;
++		pd->wt.fv = nil;
++		wg = netpollunblock(pd, 'w');
++	}
++	runtime_unlock(pd);
++	if(rg)
++		runtime_ready(rg);
++	if(wg)
++		runtime_ready(wg);
++}
++
++static void
++deadline(int64 now, Eface arg)
++{
++	deadlineimpl(now, arg, true, true);
++}
++
++static void
++readDeadline(int64 now, Eface arg)
++{
++	deadlineimpl(now, arg, true, false);
++}
++
++static void
++writeDeadline(int64 now, Eface arg)
++{
++	deadlineimpl(now, arg, false, true);
++}
++
++static PollDesc*
++allocPollDesc(void)
++{
++	PollDesc *pd;
++	uint32 i, n;
++
++	runtime_lock(&pollcache);
++	if(pollcache.first == nil) {
++		n = PageSize/sizeof(*pd);
++		if(n == 0)
++			n = 1;
++		// Must be in non-GC memory because can be referenced
++		// only from epoll/kqueue internals.
++		pd = runtime_SysAlloc(n*sizeof(*pd));
++		for(i = 0; i < n; i++) {
++			pd[i].link = pollcache.first;
++			pollcache.first = &pd[i];
++		}
++	}
++	pd = pollcache.first;
++	pollcache.first = pd->link;
++	runtime_unlock(&pollcache);
++	return pd;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/netpoll_kqueue.c gcc-4.8.1/libgo/runtime/netpoll_kqueue.c
+--- gcc-4.8.1.orig/libgo/runtime/netpoll_kqueue.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/netpoll_kqueue.c	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,108 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build darwin
++
++#include "runtime.h"
++#include "defs_GOOS_GOARCH.h"
++
++// Integrated network poller (kqueue-based implementation).
++
++int32	runtime_kqueue(void);
++int32	runtime_kevent(int32, Kevent*, int32, Kevent*, int32, Timespec*);
++void	runtime_closeonexec(int32);
++
++static int32 kq = -1;
++
++void
++runtime_netpollinit(void)
++{
++	kq = runtime_kqueue();
++	if(kq < 0) {
++		runtime_printf("netpollinit: kqueue failed with %d\n", -kq);
++		runtime_throw("netpollinit: kqueue failed");
++	}
++	runtime_closeonexec(kq);
++}
++
++int32
++runtime_netpollopen(int32 fd, PollDesc *pd)
++{
++	Kevent ev[2];
++	int32 n;
++
++	// Arm both EVFILT_READ and EVFILT_WRITE in edge-triggered mode (EV_CLEAR)
++	// for the whole fd lifetime.  The notifications are automatically unregistered
++	// when fd is closed.
++	ev[0].ident = fd;
++	ev[0].filter = EVFILT_READ;
++	ev[0].flags = EV_ADD|EV_RECEIPT|EV_CLEAR;
++	ev[0].fflags = 0;
++	ev[0].data = 0;
++	ev[0].udata = (byte*)pd;
++	ev[1] = ev[0];
++	ev[1].filter = EVFILT_WRITE;
++	n = runtime_kevent(kq, ev, 2, ev, 2, nil);
++	if(n < 0)
++		return -n;
++	if(n != 2 ||
++		(ev[0].flags&EV_ERROR) == 0 || ev[0].ident != fd || ev[0].filter != EVFILT_READ ||
++		(ev[1].flags&EV_ERROR) == 0 || ev[1].ident != fd || ev[1].filter != EVFILT_WRITE)
++		return EFAULT;  // just to mark out from other errors
++	if(ev[0].data != 0)
++		return ev[0].data;
++	if(ev[1].data != 0)
++		return ev[1].data;
++	return 0;
++}
++
++int32
++runtime_netpollclose(int32 fd)
++{
++	// Don't need to unregister because calling close()
++	// on fd will remove any kevents that reference the descriptor.
++	USED(fd);
++	return 0;
++}
++
++// Polls for ready network connections.
++// Returns list of goroutines that become runnable.
++G*
++runtime_netpoll(bool block)
++{
++	static int32 lasterr;
++	Kevent events[64], *ev;
++	Timespec ts, *tp;
++	int32 n, i;
++	G *gp;
++
++	if(kq == -1)
++		return nil;
++	tp = nil;
++	if(!block) {
++		ts.tv_sec = 0;
++		ts.tv_nsec = 0;
++		tp = &ts;
++	}
++	gp = nil;
++retry:
++	n = runtime_kevent(kq, nil, 0, events, nelem(events), tp);
++	if(n < 0) {
++		if(n != -EINTR && n != lasterr) {
++			lasterr = n;
++			runtime_printf("runtime: kevent on fd %d failed with %d\n", kq, -n);
++		}
++		goto retry;
++	}
++	for(i = 0; i < n; i++) {
++		ev = &events[i];
++		if(ev->filter == EVFILT_READ)
++			runtime_netpollready(&gp, (PollDesc*)ev->udata, 'r');
++		if(ev->filter == EVFILT_WRITE)
++			runtime_netpollready(&gp, (PollDesc*)ev->udata, 'w');
++	}
++	if(block && gp == nil)
++		goto retry;
++	return gp;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/netpoll_stub.c gcc-4.8.1/libgo/runtime/netpoll_stub.c
+--- gcc-4.8.1.orig/libgo/runtime/netpoll_stub.c	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/netpoll_stub.c	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,18 @@
++// Copyright 2013 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// +build freebsd netbsd openbsd plan9 windows
++
++#include "runtime.h"
++
++// Polls for ready network connections.
++// Returns list of goroutines that become runnable.
++G*
++runtime_netpoll(bool block)
++{
++	// Implementation for platforms that do not support
++	// integrated network poller.
++	USED(block);
++	return nil;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/panic.c gcc-4.8.1/libgo/runtime/panic.c
+--- gcc-4.8.1.orig/libgo/runtime/panic.c	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/panic.c	2013-07-16 01:55:04.520470000 -0500
+@@ -3,6 +3,7 @@
+ // license that can be found in the LICENSE file.
+ 
+ #include "runtime.h"
++#include "malloc.h"
+ #include "go-defer.h"
+ #include "go-panic.h"
+ 
+@@ -37,6 +38,11 @@
+ 	M *m;
+ 
+ 	m = runtime_m();
++	if(runtime_mheap == 0 || runtime_mheap->cachealloc.size == 0) { // very early
++		runtime_printf("runtime: panic before malloc heap initialized\n");
++		m->mallocing = 1; // tell rest of panic not to try to malloc
++	} else if(m->mcache == nil) // can happen if called from signal handler or throw
++		m->mcache = runtime_allocmcache();
+ 	if(m->dying) {
+ 		runtime_printf("panic during panic\n");
+ 		runtime_exit(3);
+@@ -51,13 +57,14 @@
+ {
+ 	G *g;
+ 	static bool didothers;
++	bool crash;
+ 
+ 	g = runtime_g();
+ 	if(g->sig != 0)
+ 		runtime_printf("[signal %x code=%p addr=%p]\n",
+ 			       g->sig, (void*)g->sigcode0, (void*)g->sigcode1);
+ 
+-	if(runtime_gotraceback()){
++	if(runtime_gotraceback(&crash)){
+ 		if(g != runtime_m()->g0) {
+ 			runtime_printf("\n");
+ 			runtime_goroutineheader(g);
+@@ -79,6 +86,9 @@
+ 		runtime_lock(&deadlock);
+ 		runtime_lock(&deadlock);
+ 	}
++	
++	if(crash)
++		runtime_crash();
+ 
+ 	runtime_exit(2);
+ }
+diff -Naur gcc-4.8.1.orig/libgo/runtime/parfor.c gcc-4.8.1/libgo/runtime/parfor.c
+--- gcc-4.8.1.orig/libgo/runtime/parfor.c	2013-01-24 13:44:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/parfor.c	2013-07-16 01:55:04.520470000 -0500
+@@ -49,6 +49,7 @@
+ runtime_parforsetup(ParFor *desc, uint32 nthr, uint32 n, void *ctx, bool wait, void (*body)(ParFor*, uint32))
+ {
+ 	uint32 i, begin, end;
++	uint64 *pos;
+ 
+ 	if(desc == nil || nthr == 0 || nthr > desc->nthrmax || body == nil) {
+ 		runtime_printf("desc=%p nthr=%d count=%d body=%p\n", desc, nthr, n, body);
+@@ -70,7 +71,10 @@
+ 	for(i=0; i<nthr; i++) {
+ 		begin = (uint64)n*i / nthr;
+ 		end = (uint64)n*(i+1) / nthr;
+-		desc->thr[i].pos = (uint64)begin | (((uint64)end)<<32);
++		pos = &desc->thr[i].pos;
++		if(((uintptr)pos & 7) != 0)
++			runtime_throw("parforsetup: pos is not aligned");
++		*pos = (uint64)begin | (((uint64)end)<<32);
+ 	}
+ }
+ 
+@@ -83,7 +87,7 @@
+ void
+ runtime_parforsetup2(ParFor *desc, uint32 nthr, uint32 n, void *ctx, bool wait, void *body)
+ {
+-	runtime_parforsetup(desc, nthr, n, ctx, wait, (void(*)(ParFor*, uint32))body);
++	runtime_parforsetup(desc, nthr, n, ctx, wait, *(void(**)(ParFor*, uint32))body);
+ }
+ 
+ void
+@@ -152,7 +156,7 @@
+ 				// See if it has any work.
+ 				begin = (uint32)pos;
+ 				end = (uint32)(pos>>32);
+-				if(begin >= end-1) {
++				if(begin+1 >= end) {
+ 					begin = end = 0;
+ 					break;
+ 				}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/print.c gcc-4.8.1/libgo/runtime/print.c
+--- gcc-4.8.1.orig/libgo/runtime/print.c	2012-12-04 00:18:07.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/print.c	2013-07-16 01:55:04.520470000 -0500
+@@ -88,6 +88,9 @@
+ 		case 'a':
+ 			runtime_printslice(va_arg(va, Slice));
+ 			break;
++		case 'c':
++			runtime_printbyte(va_arg(va, int32));
++			break;
+ 		case 'd':
+ 			runtime_printint(va_arg(va, int32));
+ 			break;
+@@ -154,6 +157,12 @@
+ }
+ 
+ void
++runtime_printbyte(int8 c)
++{
++	gwrite(&c, 1);
++}
++
++void
+ runtime_printfloat(double v)
+ {
+ 	byte buf[20];
+diff -Naur gcc-4.8.1.orig/libgo/runtime/proc.c gcc-4.8.1/libgo/runtime/proc.c
+--- gcc-4.8.1.orig/libgo/runtime/proc.c	2013-02-28 15:56:14.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/proc.c	2013-07-23 15:26:30.052588000 -0500
+@@ -56,15 +56,8 @@
+ 
+ uintptr runtime_stacks_sys;
+ 
+-static void schedule(G*);
+-
+ static void gtraceback(G*);
+ 
+-typedef struct Sched Sched;
+-
+-M	runtime_m0;
+-G	runtime_g0;	// idle goroutine for m0
+-
+ #ifdef __rtems__
+ #define __thread
+ #endif
+@@ -166,194 +159,61 @@
+ 	return m;
+ }
+ 
+-int32	runtime_gcwaiting;
+-
+-G*	runtime_allg;
+-G*	runtime_lastg;
+-M*	runtime_allm;
+-
+-int8*	runtime_goos;
+-int32	runtime_ncpu;
+-
+-// The static TLS size.  See runtime_newm.
+-static int tlssize;
+-
+-#ifdef HAVE_DL_ITERATE_PHDR
+-
+-// Called via dl_iterate_phdr.
+-
+-static int
+-addtls(struct dl_phdr_info* info, size_t size __attribute__ ((unused)), void *data)
+-{
+-	size_t *total = (size_t *)data;
+-	unsigned int i;
+-
+-	for(i = 0; i < info->dlpi_phnum; ++i) {
+-		if(info->dlpi_phdr[i].p_type == PT_TLS)
+-			*total += info->dlpi_phdr[i].p_memsz;
+-	}
+-	return 0;
+-}
+-
+-// Set the total TLS size.
+-
+-static void
+-inittlssize()
++// Set m and g.
++void
++runtime_setmg(M* mp, G* gp)
+ {
+-	size_t total = 0;
+-
+-	dl_iterate_phdr(addtls, (void *)&total);
+-	tlssize = total;
++	m = mp;
++	g = gp;
+ }
+ 
+-#else
++// The static TLS size.  See runtime_newm.
++static int tlssize;
+ 
++// Start a new thread.
+ static void
+-inittlssize()
++runtime_newosproc(M *mp)
+ {
+-}
+-
+-#endif
+-
+-// Go scheduler
+-//
+-// The go scheduler's job is to match ready-to-run goroutines (`g's)
+-// with waiting-for-work schedulers (`m's).  If there are ready g's
+-// and no waiting m's, ready() will start a new m running in a new
+-// OS thread, so that all ready g's can run simultaneously, up to a limit.
+-// For now, m's never go away.
+-//
+-// By default, Go keeps only one kernel thread (m) running user code
+-// at a single time; other threads may be blocked in the operating system.
+-// Setting the environment variable $GOMAXPROCS or calling
+-// runtime.GOMAXPROCS() will change the number of user threads
+-// allowed to execute simultaneously.  $GOMAXPROCS is thus an
+-// approximation of the maximum number of cores to use.
+-//
+-// Even a program that can run without deadlock in a single process
+-// might use more m's if given the chance.  For example, the prime
+-// sieve will use as many m's as there are primes (up to runtime_sched.mmax),
+-// allowing different stages of the pipeline to execute in parallel.
+-// We could revisit this choice, only kicking off new m's for blocking
+-// system calls, but that would limit the amount of parallel computation
+-// that go would try to do.
+-//
+-// In general, one could imagine all sorts of refinements to the
+-// scheduler, but the goal now is just to get something working on
+-// Linux and OS X.
+-
+-struct Sched {
+-	Lock;
+-
+-	G *gfree;	// available g's (status == Gdead)
+-	int64 goidgen;
+-
+-	G *ghead;	// g's waiting to run
+-	G *gtail;
+-	int32 gwait;	// number of g's waiting to run
+-	int32 gcount;	// number of g's that are alive
+-	int32 grunning;	// number of g's running on cpu or in syscall
+-
+-	M *mhead;	// m's waiting for work
+-	int32 mwait;	// number of m's waiting for work
+-	int32 mcount;	// number of m's that have been created
++	pthread_attr_t attr;
++	size_t stacksize;
++	sigset_t clear, old;
++	pthread_t tid;
++	int ret;
+ 
+-	volatile uint32 atomic;	// atomic scheduling word (see below)
++	if(pthread_attr_init(&attr) != 0)
++		runtime_throw("pthread_attr_init");
++	if(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) != 0)
++		runtime_throw("pthread_attr_setdetachstate");
+ 
+-	int32 profilehz;	// cpu profiling rate
++	stacksize = PTHREAD_STACK_MIN;
+ 
+-	bool init;  // running initialization
+-	bool lockmain;  // init called runtime.LockOSThread
++	// With glibc before version 2.16 the static TLS size is taken
++	// out of the stack size, and we get an error or a crash if
++	// there is not enough stack space left.  Add it back in if we
++	// can, in case the program uses a lot of TLS space.  FIXME:
++	// This can be disabled in glibc 2.16 and later, if the bug is
++	// indeed fixed then.
++	stacksize += tlssize;
+ 
+-	Note	stopped;	// one g can set waitstop and wait here for m's to stop
+-};
++	if(pthread_attr_setstacksize(&attr, stacksize) != 0)
++		runtime_throw("pthread_attr_setstacksize");
+ 
+-// The atomic word in sched is an atomic uint32 that
+-// holds these fields.
+-//
+-//	[15 bits] mcpu		number of m's executing on cpu
+-//	[15 bits] mcpumax	max number of m's allowed on cpu
+-//	[1 bit] waitstop	some g is waiting on stopped
+-//	[1 bit] gwaiting	gwait != 0
+-//
+-// These fields are the information needed by entersyscall
+-// and exitsyscall to decide whether to coordinate with the
+-// scheduler.  Packing them into a single machine word lets
+-// them use a fast path with a single atomic read/write and
+-// no lock/unlock.  This greatly reduces contention in
+-// syscall- or cgo-heavy multithreaded programs.
+-//
+-// Except for entersyscall and exitsyscall, the manipulations
+-// to these fields only happen while holding the schedlock,
+-// so the routines holding schedlock only need to worry about
+-// what entersyscall and exitsyscall do, not the other routines
+-// (which also use the schedlock).
+-//
+-// In particular, entersyscall and exitsyscall only read mcpumax,
+-// waitstop, and gwaiting.  They never write them.  Thus, writes to those
+-// fields can be done (holding schedlock) without fear of write conflicts.
+-// There may still be logic conflicts: for example, the set of waitstop must
+-// be conditioned on mcpu >= mcpumax or else the wait may be a
+-// spurious sleep.  The Promela model in proc.p verifies these accesses.
+-enum {
+-	mcpuWidth = 15,
+-	mcpuMask = (1<<mcpuWidth) - 1,
+-	mcpuShift = 0,
+-	mcpumaxShift = mcpuShift + mcpuWidth,
+-	waitstopShift = mcpumaxShift + mcpuWidth,
+-	gwaitingShift = waitstopShift+1,
+-
+-	// The max value of GOMAXPROCS is constrained
+-	// by the max value we can store in the bit fields
+-	// of the atomic word.  Reserve a few high values
+-	// so that we can detect accidental decrement
+-	// beyond zero.
+-	maxgomaxprocs = mcpuMask - 10,
+-};
++	// Block signals during pthread_create so that the new thread
++	// starts with signals disabled.  It will enable them in minit.
++	sigfillset(&clear);
+ 
+-#define atomic_mcpu(v)		(((v)>>mcpuShift)&mcpuMask)
+-#define atomic_mcpumax(v)	(((v)>>mcpumaxShift)&mcpuMask)
+-#define atomic_waitstop(v)	(((v)>>waitstopShift)&1)
+-#define atomic_gwaiting(v)	(((v)>>gwaitingShift)&1)
+-
+-Sched runtime_sched;
+-int32 runtime_gomaxprocs;
+-bool runtime_singleproc;
+-
+-static bool canaddmcpu(void);
+-
+-// An m that is waiting for notewakeup(&m->havenextg).  This may
+-// only be accessed while the scheduler lock is held.  This is used to
+-// minimize the number of times we call notewakeup while the scheduler
+-// lock is held, since the m will normally move quickly to lock the
+-// scheduler itself, producing lock contention.
+-static M* mwakeup;
+-
+-// Scheduling helpers.  Sched must be locked.
+-static void gput(G*);	// put/get on ghead/gtail
+-static G* gget(void);
+-static void mput(M*);	// put/get on mhead
+-static M* mget(G*);
+-static void gfput(G*);	// put/get on gfree
+-static G* gfget(void);
+-static void matchmg(void);	// match m's to g's
+-static void readylocked(G*);	// ready, but sched is locked
+-static void mnextg(M*, G*);
+-static void mcommoninit(M*);
++#ifdef SIGTRAP
++	// Blocking SIGTRAP reportedly breaks gdb on Alpha GNU/Linux.
++	sigdelset(&clear, SIGTRAP);
++#endif
+ 
+-void
+-setmcpumax(uint32 n)
+-{
+-	uint32 v, w;
++	sigemptyset(&old);
++	sigprocmask(SIG_BLOCK, &clear, &old);
++	ret = pthread_create(&tid, &attr, runtime_mstart, mp);
++	sigprocmask(SIG_SETMASK, &old, nil);
+ 
+-	for(;;) {
+-		v = runtime_sched.atomic;
+-		w = v;
+-		w &= ~(mcpuMask<<mcpumaxShift);
+-		w |= n<<mcpumaxShift;
+-		if(runtime_cas(&runtime_sched.atomic, v, w))
+-			break;
+-	}
++	if (ret != 0)
++		runtime_throw("pthread_create");
+ }
+ 
+ // First function run by a new goroutine.  This replaces gogocall.
+@@ -449,8 +309,143 @@
+ 	}
+ }
+ 
+-// Keep trace of scavenger's goroutine for deadlock detection.
+-static G *scvg;
++#ifdef HAVE_DL_ITERATE_PHDR
++
++// Called via dl_iterate_phdr.
++
++static int
++addtls(struct dl_phdr_info* info, size_t size __attribute__ ((unused)), void *data)
++{
++	size_t *total = (size_t *)data;
++	unsigned int i;
++
++	for(i = 0; i < info->dlpi_phnum; ++i) {
++		if(info->dlpi_phdr[i].p_type == PT_TLS)
++			*total += info->dlpi_phdr[i].p_memsz;
++	}
++	return 0;
++}
++
++// Set the total TLS size.
++
++static void
++inittlssize()
++{
++	size_t total = 0;
++
++	dl_iterate_phdr(addtls, (void *)&total);
++	tlssize = total;
++}
++
++#else
++
++static void
++inittlssize()
++{
++}
++
++#endif
++
++// Goroutine scheduler
++// The scheduler's job is to distribute ready-to-run goroutines over worker threads.
++//
++// The main concepts are:
++// G - goroutine.
++// M - worker thread, or machine.
++// P - processor, a resource that is required to execute Go code.
++//     M must have an associated P to execute Go code, however it can be
++//     blocked or in a syscall w/o an associated P.
++//
++// Design doc at http://golang.org/s/go11sched.
++
++typedef struct Sched Sched;
++struct Sched {
++	Lock;
++
++	uint64	goidgen;
++	M*	midle;	 // idle m's waiting for work
++	int32	nmidle;	 // number of idle m's waiting for work
++	int32	mlocked; // number of locked m's waiting for work
++	int32	mcount;	 // number of m's that have been created
++
++	P*	pidle;  // idle P's
++	uint32	npidle;
++	uint32	nmspinning;
++
++	// Global runnable queue.
++	G*	runqhead;
++	G*	runqtail;
++	int32	runqsize;
++
++	// Global cache of dead G's.
++	Lock	gflock;
++	G*	gfree;
++
++	int32	stopwait;
++	Note	stopnote;
++	uint32	sysmonwait;
++	Note	sysmonnote;
++	uint64	lastpoll;
++
++	int32	profilehz;	// cpu profiling rate
++};
++
++// The max value of GOMAXPROCS.
++// There are no fundamental restrictions on the value.
++enum { MaxGomaxprocs = 1<<8 };
++
++Sched	runtime_sched;
++int32	runtime_gomaxprocs;
++bool	runtime_singleproc;
++bool	runtime_iscgo = true;
++uint32	runtime_needextram = 1;
++uint32	runtime_gcwaiting;
++M	runtime_m0;
++G	runtime_g0;	 // idle goroutine for m0
++G*	runtime_allg;
++G*	runtime_lastg;
++M*	runtime_allm;
++P**	runtime_allp;
++M*	runtime_extram;
++int8*	runtime_goos;
++int32	runtime_ncpu;
++static int32	newprocs;
++
++void* runtime_mstart(void*);
++static void runqput(P*, G*);
++static G* runqget(P*);
++static void runqgrow(P*);
++static G* runqsteal(P*, P*);
++static void mput(M*);
++static M* mget(void);
++static void mcommoninit(M*);
++static void schedule(void);
++static void procresize(int32);
++static void acquirep(P*);
++static P* releasep(void);
++static void newm(void(*)(void), P*);
++static void stopm(void);
++static void startm(P*, bool);
++static void handoffp(P*);
++static void wakep(void);
++static void stoplockedm(void);
++static void startlockedm(G*);
++static void sysmon(void);
++static uint32 retake(uint32*);
++static void inclocked(int32);
++static void checkdead(void);
++static void exitsyscall0(G*);
++static void park0(G*);
++static void gosched0(G*);
++static void goexit0(G*);
++static void gfput(P*, G*);
++static G* gfget(P*);
++static void gfpurge(P*);
++static void globrunqput(G*);
++static G* globrunqget(P*);
++static P* pidleget(void);
++static void pidleput(P*);
++static void injectglist(G*);
+ 
+ // The bootstrap sequence is:
+ //
+@@ -463,7 +458,7 @@
+ void
+ runtime_schedinit(void)
+ {
+-	int32 n;
++	int32 n, procs;
+ 	const byte *p;
+ 
+ 	m = &runtime_m0;
+@@ -476,6 +471,7 @@
+ 	inittlssize();
+ 
+ 	m->nomemprof++;
++	runtime_mprofinit();
+ 	runtime_mallocinit();
+ 	mcommoninit(m);
+ 
+@@ -487,28 +483,20 @@
+ 	// so that we don't need to call malloc when we crash.
+ 	// runtime_findfunc(0);
+ 
+-	runtime_gomaxprocs = 1;
++	runtime_sched.lastpoll = runtime_nanotime();
++	procs = 1;
+ 	p = runtime_getenv("GOMAXPROCS");
+-	if(p != nil && (n = runtime_atoi(p)) != 0) {
+-		if(n > maxgomaxprocs)
+-			n = maxgomaxprocs;
+-		runtime_gomaxprocs = n;
+-	}
+-	// wait for the main goroutine to start before taking
+-	// GOMAXPROCS into account.
+-	setmcpumax(1);
+-	runtime_singleproc = runtime_gomaxprocs == 1;
+-
+-	canaddmcpu();	// mcpu++ to account for bootstrap m
+-	m->helpgc = 1;	// flag to tell schedule() to mcpu--
+-	runtime_sched.grunning++;
++	if(p != nil && (n = runtime_atoi(p)) > 0) {
++		if(n > MaxGomaxprocs)
++			n = MaxGomaxprocs;
++		procs = n;
++	}
++	runtime_allp = runtime_malloc((MaxGomaxprocs+1)*sizeof(runtime_allp[0]));
++	procresize(procs);
+ 
+ 	// Can not enable GC until all roots are registered.
+ 	// mstats.enablegc = 1;
+ 	m->nomemprof--;
+-
+-	if(raceenabled)
+-		runtime_raceinit();
+ }
+ 
+ extern void main_init(void) __asm__ (GOSYM_PREFIX "__go_init_main");
+@@ -516,70 +504,44 @@
+ 
+ // The main goroutine.
+ void
+-runtime_main(void)
++runtime_main(void* dummy __attribute__((unused)))
+ {
++	newm(sysmon, nil);
++
+ 	// Lock the main goroutine onto this, the main OS thread,
+ 	// during initialization.  Most programs won't care, but a few
+ 	// do require certain calls to be made by the main thread.
+ 	// Those can arrange for main.main to run in the main thread
+ 	// by calling runtime.LockOSThread during initialization
+ 	// to preserve the lock.
+-	runtime_LockOSThread();
+-	// From now on, newgoroutines may use non-main threads.
+-	setmcpumax(runtime_gomaxprocs);
+-	runtime_sched.init = true;
+-	scvg = __go_go(runtime_MHeap_Scavenger, nil);
+-	scvg->issystem = true;
++	runtime_lockOSThread();
++	if(m != &runtime_m0)
++		runtime_throw("runtime_main not on m0");
++	__go_go(runtime_MHeap_Scavenger, nil);
+ 	main_init();
+-	runtime_sched.init = false;
+-	if(!runtime_sched.lockmain)
+-		runtime_UnlockOSThread();
++	runtime_unlockOSThread();
+ 
+ 	// For gccgo we have to wait until after main is initialized
+ 	// to enable GC, because initializing main registers the GC
+ 	// roots.
+ 	mstats.enablegc = 1;
+ 
+-	// The deadlock detection has false negatives.
+-	// Let scvg start up, to eliminate the false negative
+-	// for the trivial program func main() { select{} }.
+-	runtime_gosched();
+-
+ 	main_main();
+ 	if(raceenabled)
+ 		runtime_racefini();
++
++	// Make racy client program work: if panicking on
++	// another goroutine at the same time as main returns,
++	// let the other goroutine finish printing the panic trace.
++	// Once it does, it will exit. See issue 3934.
++	if(runtime_panicking)
++		runtime_park(nil, nil, "panicwait");
++
+ 	runtime_exit(0);
+ 	for(;;)
+ 		*(int32*)0 = 0;
+ }
+ 
+-// Lock the scheduler.
+-static void
+-schedlock(void)
+-{
+-	runtime_lock(&runtime_sched);
+-}
+-
+-// Unlock the scheduler.
+-static void
+-schedunlock(void)
+-{
+-	M *mp;
+-
+-	mp = mwakeup;
+-	mwakeup = nil;
+-	runtime_unlock(&runtime_sched);
+-	if(mp != nil)
+-		runtime_notewakeup(&mp->havenextg);
+-}
+-
+-void
+-runtime_goexit(void)
+-{
+-	g->status = Gmoribund;
+-	runtime_gosched();
+-}
+-
+ void
+ runtime_goroutineheader(G *gp)
+ {
+@@ -604,9 +566,6 @@
+ 		else
+ 			status = "waiting";
+ 		break;
+-	case Gmoribund:
+-		status = "moribund";
+-		break;
+ 	default:
+ 		status = "???";
+ 		break;
+@@ -644,7 +603,7 @@
+ 	int32 traceback;
+ 
+ 	tb.gp = me;
+-	traceback = runtime_gotraceback();
++	traceback = runtime_gotraceback(nil);
+ 	for(gp = runtime_allg; gp != nil; gp = gp->alllink) {
+ 		if(gp == me || gp->status == Gdead)
+ 			continue;
+@@ -698,28 +657,20 @@
+ 	runtime_gogo(traceback->gp);
+ }
+ 
+-// Mark this g as m's idle goroutine.
+-// This functionality might be used in environments where programs
+-// are limited to a single thread, to simulate a select-driven
+-// network server.  It is not exposed via the standard runtime API.
+-void
+-runtime_idlegoroutine(void)
+-{
+-	if(g->idlem != nil)
+-		runtime_throw("g is already an idle goroutine");
+-	g->idlem = m;
+-}
+-
+ static void
+ mcommoninit(M *mp)
+ {
+-	mp->id = runtime_sched.mcount++;
++	// If there is no mcache runtime_callers() will crash,
++	// and we are most likely in sysmon thread so the stack is senseless anyway.
++	if(m->mcache)
++		runtime_callers(1, mp->createstack, nelem(mp->createstack));
++
+ 	mp->fastrand = 0x49f6428aUL + mp->id + runtime_cputicks();
+ 
+-	if(mp->mcache == nil)
+-		mp->mcache = runtime_allocmcache();
++	runtime_lock(&runtime_sched);
++	mp->id = runtime_sched.mcount++;
+ 
+-	runtime_callers(1, mp->createstack, nelem(mp->createstack));
++	runtime_mpreinit(mp);
+ 
+ 	// Add to runtime_allm so garbage collector doesn't free m
+ 	// when it is just in a register or thread-local storage.
+@@ -727,382 +678,182 @@
+ 	// runtime_NumCgoCall() iterates over allm w/o schedlock,
+ 	// so we need to publish it safely.
+ 	runtime_atomicstorep(&runtime_allm, mp);
++	runtime_unlock(&runtime_sched);
+ }
+ 
+-// Try to increment mcpu.  Report whether succeeded.
+-static bool
+-canaddmcpu(void)
++// Mark gp ready to run.
++void
++runtime_ready(G *gp)
+ {
+-	uint32 v;
+-
+-	for(;;) {
+-		v = runtime_sched.atomic;
+-		if(atomic_mcpu(v) >= atomic_mcpumax(v))
+-			return 0;
+-		if(runtime_cas(&runtime_sched.atomic, v, v+(1<<mcpuShift)))
+-			return 1;
++	// Mark runnable.
++	if(gp->status != Gwaiting) {
++		runtime_printf("goroutine %D has status %d\n", gp->goid, gp->status);
++		runtime_throw("bad g->status in ready");
+ 	}
++	gp->status = Grunnable;
++	runqput(m->p, gp);
++	if(runtime_atomicload(&runtime_sched.npidle) != 0 && runtime_atomicload(&runtime_sched.nmspinning) == 0)  // TODO: fast atomic
++		wakep();
+ }
+ 
+-// Put on `g' queue.  Sched must be locked.
+-static void
+-gput(G *gp)
++int32
++runtime_gcprocs(void)
+ {
+-	M *mp;
+-
+-	// If g is wired, hand it off directly.
+-	if((mp = gp->lockedm) != nil && canaddmcpu()) {
+-		mnextg(mp, gp);
+-		return;
+-	}
++	int32 n;
+ 
+-	// If g is the idle goroutine for an m, hand it off.
+-	if(gp->idlem != nil) {
+-		if(gp->idlem->idleg != nil) {
+-			runtime_printf("m%d idle out of sync: g%D g%D\n",
+-				gp->idlem->id,
+-				gp->idlem->idleg->goid, gp->goid);
+-			runtime_throw("runtime: double idle");
+-		}
+-		gp->idlem->idleg = gp;
+-		return;
+-	}
++	// Figure out how many CPUs to use during GC.
++	// Limited by gomaxprocs, number of actual CPUs, and MaxGcproc.
++	runtime_lock(&runtime_sched);
++	n = runtime_gomaxprocs;
++	if(n > runtime_ncpu)
++		n = runtime_ncpu > 0 ? runtime_ncpu : 1;
++	if(n > MaxGcproc)
++		n = MaxGcproc;
++	if(n > runtime_sched.nmidle+1) // one M is currently running
++		n = runtime_sched.nmidle+1;
++	runtime_unlock(&runtime_sched);
++	return n;
++}
+ 
+-	gp->schedlink = nil;
+-	if(runtime_sched.ghead == nil)
+-		runtime_sched.ghead = gp;
+-	else
+-		runtime_sched.gtail->schedlink = gp;
+-	runtime_sched.gtail = gp;
++static bool
++needaddgcproc(void)
++{
++	int32 n;
+ 
+-	// increment gwait.
+-	// if it transitions to nonzero, set atomic gwaiting bit.
+-	if(runtime_sched.gwait++ == 0)
+-		runtime_xadd(&runtime_sched.atomic, 1<<gwaitingShift);
++	runtime_lock(&runtime_sched);
++	n = runtime_gomaxprocs;
++	if(n > runtime_ncpu)
++		n = runtime_ncpu;
++	if(n > MaxGcproc)
++		n = MaxGcproc;
++	n -= runtime_sched.nmidle+1; // one M is currently running
++	runtime_unlock(&runtime_sched);
++	return n > 0;
+ }
+ 
+-// Report whether gget would return something.
+-static bool
+-haveg(void)
++void
++runtime_helpgc(int32 nproc)
+ {
+-	return runtime_sched.ghead != nil || m->idleg != nil;
++	M *mp;
++	int32 n, pos;
++
++	runtime_lock(&runtime_sched);
++	pos = 0;
++	for(n = 1; n < nproc; n++) {  // one M is currently running
++		if(runtime_allp[pos]->mcache == m->mcache)
++			pos++;
++		mp = mget();
++		if(mp == nil)
++			runtime_throw("runtime_gcprocs inconsistency");
++		mp->helpgc = n;
++		mp->mcache = runtime_allp[pos]->mcache;
++		pos++;
++		runtime_notewakeup(&mp->park);
++	}
++	runtime_unlock(&runtime_sched);
+ }
+ 
+-// Get from `g' queue.  Sched must be locked.
+-static G*
+-gget(void)
++void
++runtime_stoptheworld(void)
+ {
+-	G *gp;
++	int32 i;
++	uint32 s;
++	P *p;
++	bool wait;
+ 
+-	gp = runtime_sched.ghead;
+-	if(gp) {
+-		runtime_sched.ghead = gp->schedlink;
+-		if(runtime_sched.ghead == nil)
+-			runtime_sched.gtail = nil;
+-		// decrement gwait.
+-		// if it transitions to zero, clear atomic gwaiting bit.
+-		if(--runtime_sched.gwait == 0)
+-			runtime_xadd(&runtime_sched.atomic, -1<<gwaitingShift);
+-	} else if(m->idleg != nil) {
+-		gp = m->idleg;
+-		m->idleg = nil;
++	runtime_lock(&runtime_sched);
++	runtime_sched.stopwait = runtime_gomaxprocs;
++	runtime_atomicstore((uint32*)&runtime_gcwaiting, 1);
++	// stop current P
++	m->p->status = Pgcstop;
++	runtime_sched.stopwait--;
++	// try to retake all P's in Psyscall status
++	for(i = 0; i < runtime_gomaxprocs; i++) {
++		p = runtime_allp[i];
++		s = p->status;
++		if(s == Psyscall && runtime_cas(&p->status, s, Pgcstop))
++			runtime_sched.stopwait--;
++	}
++	// stop idle P's
++	while((p = pidleget()) != nil) {
++		p->status = Pgcstop;
++		runtime_sched.stopwait--;
++	}
++	wait = runtime_sched.stopwait > 0;
++	runtime_unlock(&runtime_sched);
++
++	// wait for remaining P's to stop voluntary
++	if(wait) {
++		runtime_notesleep(&runtime_sched.stopnote);
++		runtime_noteclear(&runtime_sched.stopnote);
++	}
++	if(runtime_sched.stopwait)
++		runtime_throw("stoptheworld: not stopped");
++	for(i = 0; i < runtime_gomaxprocs; i++) {
++		p = runtime_allp[i];
++		if(p->status != Pgcstop)
++			runtime_throw("stoptheworld: not stopped");
+ 	}
+-	return gp;
+ }
+ 
+-// Put on `m' list.  Sched must be locked.
+ static void
+-mput(M *mp)
++mhelpgc(void)
+ {
+-	mp->schedlink = runtime_sched.mhead;
+-	runtime_sched.mhead = mp;
+-	runtime_sched.mwait++;
++	m->helpgc = -1;
+ }
+ 
+-// Get an `m' to run `g'.  Sched must be locked.
+-static M*
+-mget(G *gp)
+-{
+-	M *mp;
+-
+-	// if g has its own m, use it.
+-	if(gp && (mp = gp->lockedm) != nil)
+-		return mp;
+-
+-	// otherwise use general m pool.
+-	if((mp = runtime_sched.mhead) != nil) {
+-		runtime_sched.mhead = mp->schedlink;
+-		runtime_sched.mwait--;
+-	}
+-	return mp;
+-}
+-
+-// Mark g ready to run.
+ void
+-runtime_ready(G *gp)
+-{
+-	schedlock();
+-	readylocked(gp);
+-	schedunlock();
+-}
+-
+-// Mark g ready to run.  Sched is already locked.
+-// G might be running already and about to stop.
+-// The sched lock protects g->status from changing underfoot.
+-static void
+-readylocked(G *gp)
+-{
+-	if(gp->m) {
+-		// Running on another machine.
+-		// Ready it when it stops.
+-		gp->readyonstop = 1;
+-		return;
+-	}
+-
+-	// Mark runnable.
+-	if(gp->status == Grunnable || gp->status == Grunning) {
+-		runtime_printf("goroutine %D has status %d\n", gp->goid, gp->status);
+-		runtime_throw("bad g->status in ready");
+-	}
+-	gp->status = Grunnable;
+-
+-	gput(gp);
+-	matchmg();
+-}
+-
+-// Same as readylocked but a different symbol so that
+-// debuggers can set a breakpoint here and catch all
+-// new goroutines.
+-static void
+-newprocreadylocked(G *gp)
+-{
+-	readylocked(gp);
+-}
+-
+-// Pass g to m for running.
+-// Caller has already incremented mcpu.
+-static void
+-mnextg(M *mp, G *gp)
+-{
+-	runtime_sched.grunning++;
+-	mp->nextg = gp;
+-	if(mp->waitnextg) {
+-		mp->waitnextg = 0;
+-		if(mwakeup != nil)
+-			runtime_notewakeup(&mwakeup->havenextg);
+-		mwakeup = mp;
+-	}
+-}
+-
+-// Get the next goroutine that m should run.
+-// Sched must be locked on entry, is unlocked on exit.
+-// Makes sure that at most $GOMAXPROCS g's are
+-// running on cpus (not in system calls) at any given time.
+-static G*
+-nextgandunlock(void)
++runtime_starttheworld(void)
+ {
++	P *p, *p1;
++	M *mp;
+ 	G *gp;
+-	uint32 v;
+-
+-top:
+-	if(atomic_mcpu(runtime_sched.atomic) >= maxgomaxprocs)
+-		runtime_throw("negative mcpu");
++	bool add;
+ 
+-	// If there is a g waiting as m->nextg, the mcpu++
+-	// happened before it was passed to mnextg.
+-	if(m->nextg != nil) {
+-		gp = m->nextg;
+-		m->nextg = nil;
+-		schedunlock();
+-		return gp;
+-	}
++	gp = runtime_netpoll(false);  // non-blocking
++	injectglist(gp);
++	add = needaddgcproc();
++	runtime_lock(&runtime_sched);
++	if(newprocs) {
++		procresize(newprocs);
++		newprocs = 0;
++	} else
++		procresize(runtime_gomaxprocs);
++	runtime_gcwaiting = 0;
+ 
+-	if(m->lockedg != nil) {
+-		// We can only run one g, and it's not available.
+-		// Make sure some other cpu is running to handle
+-		// the ordinary run queue.
+-		if(runtime_sched.gwait != 0) {
+-			matchmg();
+-			// m->lockedg might have been on the queue.
+-			if(m->nextg != nil) {
+-				gp = m->nextg;
+-				m->nextg = nil;
+-				schedunlock();
+-				return gp;
+-			}
++	p1 = nil;
++	while((p = pidleget()) != nil) {
++		// procresize() puts p's with work at the beginning of the list.
++		// Once we reach a p without a run queue, the rest don't have one either.
++		if(p->runqhead == p->runqtail) {
++			pidleput(p);
++			break;
+ 		}
+-	} else {
+-		// Look for work on global queue.
+-		while(haveg() && canaddmcpu()) {
+-			gp = gget();
+-			if(gp == nil)
+-				runtime_throw("gget inconsistency");
+-
+-			if(gp->lockedm) {
+-				mnextg(gp->lockedm, gp);
+-				continue;
+-			}
+-			runtime_sched.grunning++;
+-			schedunlock();
+-			return gp;
++		mp = mget();
++		if(mp == nil) {
++			p->link = p1;
++			p1 = p;
++			continue;
+ 		}
+-
+-		// The while loop ended either because the g queue is empty
+-		// or because we have maxed out our m procs running go
+-		// code (mcpu >= mcpumax).  We need to check that
+-		// concurrent actions by entersyscall/exitsyscall cannot
+-		// invalidate the decision to end the loop.
+-		//
+-		// We hold the sched lock, so no one else is manipulating the
+-		// g queue or changing mcpumax.  Entersyscall can decrement
+-		// mcpu, but if does so when there is something on the g queue,
+-		// the gwait bit will be set, so entersyscall will take the slow path
+-		// and use the sched lock.  So it cannot invalidate our decision.
+-		//
+-		// Wait on global m queue.
+-		mput(m);
+-	}
+-
+-	// Look for deadlock situation.
+-	// There is a race with the scavenger that causes false negatives:
+-	// if the scavenger is just starting, then we have
+-	//	scvg != nil && grunning == 0 && gwait == 0
+-	// and we do not detect a deadlock.  It is possible that we should
+-	// add that case to the if statement here, but it is too close to Go 1
+-	// to make such a subtle change.  Instead, we work around the
+-	// false negative in trivial programs by calling runtime.gosched
+-	// from the main goroutine just before main.main.
+-	// See runtime_main above.
+-	//
+-	// On a related note, it is also possible that the scvg == nil case is
+-	// wrong and should include gwait, but that does not happen in
+-	// standard Go programs, which all start the scavenger.
+-	//
+-	if((scvg == nil && runtime_sched.grunning == 0) ||
+-	   (scvg != nil && runtime_sched.grunning == 1 && runtime_sched.gwait == 0 &&
+-	    (scvg->status == Grunning || scvg->status == Gsyscall))) {
+-		m->throwing = -1;  // do not dump full stacks
+-		runtime_throw("all goroutines are asleep - deadlock!");
+-	}
+-
+-	m->nextg = nil;
+-	m->waitnextg = 1;
+-	runtime_noteclear(&m->havenextg);
+-
+-	// Stoptheworld is waiting for all but its cpu to go to stop.
+-	// Entersyscall might have decremented mcpu too, but if so
+-	// it will see the waitstop and take the slow path.
+-	// Exitsyscall never increments mcpu beyond mcpumax.
+-	v = runtime_atomicload(&runtime_sched.atomic);
+-	if(atomic_waitstop(v) && atomic_mcpu(v) <= atomic_mcpumax(v)) {
+-		// set waitstop = 0 (known to be 1)
+-		runtime_xadd(&runtime_sched.atomic, -1<<waitstopShift);
+-		runtime_notewakeup(&runtime_sched.stopped);
+-	}
+-	schedunlock();
+-
+-	runtime_notesleep(&m->havenextg);
+-	if(m->helpgc) {
+-		runtime_gchelper();
+-		m->helpgc = 0;
+-		runtime_lock(&runtime_sched);
+-		goto top;
+-	}
+-	if((gp = m->nextg) == nil)
+-		runtime_throw("bad m->nextg in nextgoroutine");
+-	m->nextg = nil;
+-	return gp;
+-}
+-
+-int32
+-runtime_gcprocs(void)
+-{
+-	int32 n;
+-	
+-	// Figure out how many CPUs to use during GC.
+-	// Limited by gomaxprocs, number of actual CPUs, and MaxGcproc.
+-	n = runtime_gomaxprocs;
+-	if(n > runtime_ncpu)
+-		n = runtime_ncpu > 0 ? runtime_ncpu : 1;
+-	if(n > MaxGcproc)
+-		n = MaxGcproc;
+-	if(n > runtime_sched.mwait+1) // one M is currently running
+-		n = runtime_sched.mwait+1;
+-	return n;
+-}
+-
+-void
+-runtime_helpgc(int32 nproc)
+-{
+-	M *mp;
+-	int32 n;
+-
+-	runtime_lock(&runtime_sched);
+-	for(n = 1; n < nproc; n++) { // one M is currently running
+-		mp = mget(nil);
+-		if(mp == nil)
+-			runtime_throw("runtime_gcprocs inconsistency");
+-		mp->helpgc = 1;
+-		mp->waitnextg = 0;
+-		runtime_notewakeup(&mp->havenextg);
++		if(mp->nextp)
++			runtime_throw("starttheworld: inconsistent mp->nextp");
++		mp->nextp = p;
++		runtime_notewakeup(&mp->park);
++	}
++	if(runtime_sched.sysmonwait) {
++		runtime_sched.sysmonwait = false;
++		runtime_notewakeup(&runtime_sched.sysmonnote);
+ 	}
+ 	runtime_unlock(&runtime_sched);
+-}
+-
+-void
+-runtime_stoptheworld(void)
+-{
+-	uint32 v;
+ 
+-	schedlock();
+-	runtime_gcwaiting = 1;
+-
+-	setmcpumax(1);
+-
+-	// while mcpu > 1
+-	for(;;) {
+-		v = runtime_sched.atomic;
+-		if(atomic_mcpu(v) <= 1)
+-			break;
+-
+-		// It would be unsafe for multiple threads to be using
+-		// the stopped note at once, but there is only
+-		// ever one thread doing garbage collection.
+-		runtime_noteclear(&runtime_sched.stopped);
+-		if(atomic_waitstop(v))
+-			runtime_throw("invalid waitstop");
+-
+-		// atomic { waitstop = 1 }, predicated on mcpu <= 1 check above
+-		// still being true.
+-		if(!runtime_cas(&runtime_sched.atomic, v, v+(1<<waitstopShift)))
+-			continue;
+-
+-		schedunlock();
+-		runtime_notesleep(&runtime_sched.stopped);
+-		schedlock();
++	while(p1) {
++		p = p1;
++		p1 = p1->link;
++		add = false;
++		newm(nil, p);
+ 	}
+-	runtime_singleproc = runtime_gomaxprocs == 1;
+-	schedunlock();
+-}
+ 
+-void
+-runtime_starttheworld(void)
+-{
+-	M *mp;
+-	int32 max;
+-	
+-	// Figure out how many CPUs GC could possibly use.
+-	max = runtime_gomaxprocs;
+-	if(max > runtime_ncpu)
+-		max = runtime_ncpu > 0 ? runtime_ncpu : 1;
+-	if(max > MaxGcproc)
+-		max = MaxGcproc;
+-
+-	schedlock();
+-	runtime_gcwaiting = 0;
+-	setmcpumax(runtime_gomaxprocs);
+-	matchmg();
+-	if(runtime_gcprocs() < max && canaddmcpu()) {
++	if(add) {
+ 		// If GC could have used another helper proc, start one now,
+ 		// in the hope that it will be available next time.
+ 		// It would have been even better to start it before the collection,
+@@ -1110,17 +861,8 @@
+ 		// coordinate.  This lazy approach works out in practice:
+ 		// we don't mind if the first couple gc rounds don't have quite
+ 		// the maximum number of procs.
+-		// canaddmcpu above did mcpu++
+-		// (necessary, because m will be doing various
+-		// initialization work so is definitely running),
+-		// but m is not running a specific goroutine,
+-		// so set the helpgc flag as a signal to m's
+-		// first schedule(nil) to mcpu-- and grunning--.
+-		mp = runtime_newm();
+-		mp->helpgc = 1;
+-		runtime_sched.grunning++;
++		newm(mhelpgc, nil);
+ 	}
+-	schedunlock();
+ }
+ 
+ // Called to start an M.
+@@ -1160,17 +902,30 @@
+ 
+ #ifdef USING_SPLIT_STACK
+ 	{
+-	  int dont_block_signals = 0;
+-	  __splitstack_block_signals(&dont_block_signals, nil);
++		int dont_block_signals = 0;
++		__splitstack_block_signals(&dont_block_signals, nil);
+ 	}
+ #endif
+ 
+ 	// Install signal handlers; after minit so that minit can
+ 	// prepare the thread to be able to handle the signals.
+-	if(m == &runtime_m0)
++	if(m == &runtime_m0) {
+ 		runtime_initsig();
++		if(runtime_iscgo)
++			runtime_newextram();
++	}
++	
++	if(m->mstartfn)
++		m->mstartfn();
+ 
+-	schedule(nil);
++	if(m->helpgc) {
++		m->helpgc = 0;
++		stopm();
++	} else if(m != &runtime_m0) {
++		acquirep(m->nextp);
++		m->nextp = nil;
++	}
++	schedule();
+ 
+ 	// TODO(brainman): This point is never reached, because scheduler
+ 	// does not release os threads at the moment. But once this path
+@@ -1187,43 +942,17 @@
+ 	void (*fn)(void);
+ };
+ 
+-// Kick off new m's as needed (up to mcpumax).
+-// Sched is locked.
+-static void
+-matchmg(void)
+-{
+-	G *gp;
+-	M *mp;
+-
+-	if(m->mallocing || m->gcing)
+-		return;
+-
+-	while(haveg() && canaddmcpu()) {
+-		gp = gget();
+-		if(gp == nil)
+-			runtime_throw("gget inconsistency");
+-
+-		// Find the m that will run gp.
+-		if((mp = mget(gp)) == nil)
+-			mp = runtime_newm();
+-		mnextg(mp, gp);
+-	}
+-}
+-
+-// Create a new m.  It will start off with a call to runtime_mstart.
++// Allocate a new m unassociated with any thread.
++// Can use p for allocation context if needed.
+ M*
+-runtime_newm(void)
++runtime_allocm(P *p, int32 stacksize, byte** ret_g0_stack, size_t* ret_g0_stacksize)
+ {
+ 	M *mp;
+-	pthread_attr_t attr;
+-	pthread_t tid;
+-	size_t stacksize;
+-	sigset_t clear;
+-	sigset_t old;
+-	int ret;
+ 
++	m->locks++;  // disable GC because it can be called from sysmon
++	if(m->p == nil)
++		acquirep(p);  // temporarily borrow p for mallocs in this function
+ #if 0
+-	static const Type *mtype;  // The Go type M
+ 	if(mtype == nil) {
+ 		Eface e;
+ 		runtime_gc_m_ptr(&e);
+@@ -1233,114 +962,482 @@
+ 
+ 	mp = runtime_mal(sizeof *mp);
+ 	mcommoninit(mp);
+-	mp->g0 = runtime_malg(-1, nil, nil);
++	mp->g0 = runtime_malg(stacksize, ret_g0_stack, ret_g0_stacksize);
+ 
+-	if(pthread_attr_init(&attr) != 0)
+-		runtime_throw("pthread_attr_init");
+-	if(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) != 0)
+-		runtime_throw("pthread_attr_setdetachstate");
++	if(p == m->p)
++		releasep();
++	m->locks--;
+ 
+-	stacksize = PTHREAD_STACK_MIN;
++	return mp;
++}
+ 
+-	// With glibc before version 2.16 the static TLS size is taken
+-	// out of the stack size, and we get an error or a crash if
+-	// there is not enough stack space left.  Add it back in if we
+-	// can, in case the program uses a lot of TLS space.  FIXME:
+-	// This can be disabled in glibc 2.16 and later, if the bug is
+-	// indeed fixed then.
+-	stacksize += tlssize;
++static M* lockextra(bool nilokay);
++static void unlockextra(M*);
+ 
+-	if(pthread_attr_setstacksize(&attr, stacksize) != 0)
+-		runtime_throw("pthread_attr_setstacksize");
++// needm is called when a cgo callback happens on a
++// thread without an m (a thread not created by Go).
++// In this case, needm is expected to find an m to use
++// and return with m, g initialized correctly.
++// Since m and g are not set now (likely nil, but see below)
++// needm is limited in what routines it can call. In particular
++// it can only call nosplit functions (textflag 7) and cannot
++// do any scheduling that requires an m.
++//
++// In order to avoid needing heavy lifting here, we adopt
++// the following strategy: there is a stack of available m's
++// that can be stolen. Using compare-and-swap
++// to pop from the stack has ABA races, so we simulate
++// a lock by doing an exchange (via casp) to steal the stack
++// head and replace the top pointer with MLOCKED (1).
++// This serves as a simple spin lock that we can use even
++// without an m. The thread that locks the stack in this way
++// unlocks the stack by storing a valid stack head pointer.
++//
++// In order to make sure that there is always an m structure
++// available to be stolen, we maintain the invariant that there
++// is always one more than needed. At the beginning of the
++// program (if cgo is in use) the list is seeded with a single m.
++// If needm finds that it has taken the last m off the list, its job
++// is - once it has installed its own m so that it can do things like
++// allocate memory - to create a spare m and put it on the list.
++//
++// Each of these extra m's also has a g0 and a curg that are
++// pressed into service as the scheduling stack and current
++// goroutine for the duration of the cgo callback.
++//
++// When the callback is done with the m, it calls dropm to
++// put the m back on the list.
++//
++// Unlike the gc toolchain, we start running on curg, since we are
++// just going to return and let the caller continue.
++void
++runtime_needm(void)
++{
++	M *mp;
+ 
+-	// Block signals during pthread_create so that the new thread
+-	// starts with signals disabled.  It will enable them in minit.
+-	sigfillset(&clear);
++	// Lock extra list, take head, unlock popped list.
++	// nilokay=false is safe here because of the invariant above,
++	// that the extra list always contains or will soon contain
++	// at least one m.
++	mp = lockextra(false);
++
++	// Set needextram when we've just emptied the list,
++	// so that the eventual call into cgocallbackg will
++	// allocate a new m for the extra list. We delay the
++	// allocation until then so that it can be done
++	// after exitsyscall makes sure it is okay to be
++	// running at all (that is, there's no garbage collection
++	// running right now).
++	mp->needextram = mp->schedlink == nil;
++	unlockextra(mp->schedlink);
+ 
+-#ifdef SIGTRAP
+-	// Blocking SIGTRAP reportedly breaks gdb on Alpha GNU/Linux.
+-	sigdelset(&clear, SIGTRAP);
++	// Install m and g (= m->curg).
++	runtime_setmg(mp, mp->curg);
++
++	// Initialize g's context as in mstart.
++	initcontext();
++	g->status = Gsyscall;
++	g->entry = nil;
++	g->param = nil;
++#ifdef USING_SPLIT_STACK
++	__splitstack_getcontext(&g->stack_context[0]);
++#else
++	g->gcinitial_sp = &mp;
++	g->gcstack_size = 0;
++	g->gcnext_sp = &mp;
+ #endif
++	getcontext(&g->context);
+ 
+-	sigemptyset(&old);
+-	sigprocmask(SIG_BLOCK, &clear, &old);
+-	ret = pthread_create(&tid, &attr, runtime_mstart, mp);
+-	sigprocmask(SIG_SETMASK, &old, nil);
++	if(g->entry != nil) {
++		// Got here from mcall.
++		void (*pfn)(G*) = (void (*)(G*))g->entry;
++		G* gp = (G*)g->param;
++		pfn(gp);
++		*(int*)0x22 = 0x22;
++	}
+ 
+-	if (ret != 0)
+-		runtime_throw("pthread_create");
++	// Initialize this thread to use the m.
++	runtime_minit();
++
++#ifdef USING_SPLIT_STACK
++	{
++		int dont_block_signals = 0;
++		__splitstack_block_signals(&dont_block_signals, nil);
++	}
++#endif
++}
++
++// newextram allocates an m and puts it on the extra list.
++// It is called with a working local m, so that it can do things
++// like call schedlock and allocate.
++void
++runtime_newextram(void)
++{
++	M *mp, *mnext;
++	G *gp;
++	byte *g0_sp, *sp;
++	size_t g0_spsize, spsize;
++
++	// Create extra goroutine locked to extra m.
++	// The goroutine is the context in which the cgo callback will run.
++	// The sched.pc will never be returned to, but setting it to
++	// runtime.goexit makes clear to the traceback routines where
++	// the goroutine stack ends.
++	mp = runtime_allocm(nil, StackMin, &g0_sp, &g0_spsize);
++	gp = runtime_malg(StackMin, &sp, &spsize);
++	gp->status = Gdead;
++	mp->curg = gp;
++	mp->locked = LockInternal;
++	mp->lockedg = gp;
++	gp->lockedm = mp;
++	// put on allg for garbage collector
++	runtime_lock(&runtime_sched);
++	if(runtime_lastg == nil)
++		runtime_allg = gp;
++	else
++		runtime_lastg->alllink = gp;
++	runtime_lastg = gp;
++	runtime_unlock(&runtime_sched);
++	gp->goid = runtime_xadd64(&runtime_sched.goidgen, 1);
++
++	// The context for gp will be set up in runtime_needm.  But
++	// here we need to set up the context for g0.
++	getcontext(&mp->g0->context);
++	mp->g0->context.uc_stack.ss_sp = g0_sp;
++#ifdef MAKECONTEXT_STACK_TOP
++	mp->g0->context.uc_stack.ss_sp += g0_spsize;
++#endif
++	mp->g0->context.uc_stack.ss_size = g0_spsize;
++	makecontext(&mp->g0->context, kickoff, 0);
++
++	// Add m to the extra list.
++	mnext = lockextra(true);
++	mp->schedlink = mnext;
++	unlockextra(mp);
++}
++
++// dropm is called when a cgo callback has called needm but is now
++// done with the callback and returning back into the non-Go thread.
++// It puts the current m back onto the extra list.
++//
++// The main expense here is the call to signalstack to release the
++// m's signal stack, and then the call to needm on the next callback
++// from this thread. It is tempting to try to save the m for next time,
++// which would eliminate both these costs, but there might not be
++// a next time: the current thread (which Go does not control) might exit.
++// If we saved the m for that thread, there would be an m leak each time
++// such a thread exited. Instead, we acquire and release an m on each
++// call. These should typically not be scheduling operations, just a few
++// atomics, so the cost should be small.
++//
++// TODO(rsc): An alternative would be to allocate a dummy pthread per-thread
++// variable using pthread_key_create. Unlike the pthread keys we already use
++// on OS X, this dummy key would never be read by Go code. It would exist
++// only so that we could register at thread-exit-time destructor.
++// That destructor would put the m back onto the extra list.
++// This is purely a performance optimization. The current version,
++// in which dropm happens on each cgo call, is still correct too.
++// We may have to keep the current version on systems with cgo
++// but without pthreads, like Windows.
++void
++runtime_dropm(void)
++{
++	M *mp, *mnext;
++
++	// Undo whatever initialization minit did during needm.
++	runtime_unminit();
+ 
++	// Clear m and g, and return m to the extra list.
++	// After the call to setmg we can only call nosplit functions.
++	mp = m;
++	runtime_setmg(nil, nil);
++
++	mp->curg->status = Gdead;
++
++	mnext = lockextra(true);
++	mp->schedlink = mnext;
++	unlockextra(mp);
++}
++
++#define MLOCKED ((M*)1)
++
++// lockextra locks the extra list and returns the list head.
++// The caller must unlock the list by storing a new list head
++// to runtime.extram. If nilokay is true, then lockextra will
++// return a nil list head if that's what it finds. If nilokay is false,
++// lockextra will keep waiting until the list head is no longer nil.
++static M*
++lockextra(bool nilokay)
++{
++	M *mp;
++	void (*yield)(void);
++
++	for(;;) {
++		mp = runtime_atomicloadp(&runtime_extram);
++		if(mp == MLOCKED) {
++			yield = runtime_osyield;
++			yield();
++			continue;
++		}
++		if(mp == nil && !nilokay) {
++			runtime_usleep(1);
++			continue;
++		}
++		if(!runtime_casp(&runtime_extram, mp, MLOCKED)) {
++			yield = runtime_osyield;
++			yield();
++			continue;
++		}
++		break;
++	}
+ 	return mp;
+ }
+ 
+-// One round of scheduler: find a goroutine and run it.
+-// The argument is the goroutine that was running before
+-// schedule was called, or nil if this is the first call.
+-// Never returns.
+ static void
+-schedule(G *gp)
++unlockextra(M *mp)
+ {
+-	int32 hz;
+-	uint32 v;
++	runtime_atomicstorep(&runtime_extram, mp);
++}
+ 
+-	schedlock();
+-	if(gp != nil) {
+-		// Just finished running gp.
+-		gp->m = nil;
+-		runtime_sched.grunning--;
+-
+-		// atomic { mcpu-- }
+-		v = runtime_xadd(&runtime_sched.atomic, -1<<mcpuShift);
+-		if(atomic_mcpu(v) > maxgomaxprocs)
+-			runtime_throw("negative mcpu in scheduler");
+-
+-		switch(gp->status) {
+-		case Grunnable:
+-		case Gdead:
+-			// Shouldn't have been running!
+-			runtime_throw("bad gp->status in sched");
+-		case Grunning:
+-			gp->status = Grunnable;
+-			gput(gp);
+-			break;
+-		case Gmoribund:
+-			if(raceenabled)
+-				runtime_racegoend(gp->goid);
+-			gp->status = Gdead;
+-			if(gp->lockedm) {
+-				gp->lockedm = nil;
+-				m->lockedg = nil;
+-			}
+-			gp->idlem = nil;
+-			runtime_memclr(&gp->context, sizeof gp->context);
+-			gfput(gp);
+-			if(--runtime_sched.gcount == 0)
+-				runtime_exit(0);
+-			break;
++static int32
++countextra()
++{
++	M *mp, *mc;
++	int32 c;
++
++	for(;;) {
++		mp = runtime_atomicloadp(&runtime_extram);
++		if(mp == MLOCKED) {
++			runtime_osyield();
++			continue;
++		}
++		if(!runtime_casp(&runtime_extram, mp, MLOCKED)) {
++			runtime_osyield();
++			continue;
+ 		}
+-		if(gp->readyonstop) {
+-			gp->readyonstop = 0;
+-			readylocked(gp);
+-		}
+-	} else if(m->helpgc) {
+-		// Bootstrap m or new m started by starttheworld.
+-		// atomic { mcpu-- }
+-		v = runtime_xadd(&runtime_sched.atomic, -1<<mcpuShift);
+-		if(atomic_mcpu(v) > maxgomaxprocs)
+-			runtime_throw("negative mcpu in scheduler");
+-		// Compensate for increment in starttheworld().
+-		runtime_sched.grunning--;
++		c = 0;
++		for(mc = mp; mc != nil; mc = mc->schedlink)
++			c++;
++		runtime_atomicstorep(&runtime_extram, mp);
++		return c;
++	}
++}
++
++// Create a new m.  It will start off with a call to fn, or else the scheduler.
++static void
++newm(void(*fn)(void), P *p)
++{
++	M *mp;
++
++	mp = runtime_allocm(p, -1, nil, nil);
++	mp->nextp = p;
++	mp->mstartfn = fn;
++
++	runtime_newosproc(mp);
++}
++
++// Stops execution of the current m until new work is available.
++// Returns with acquired P.
++static void
++stopm(void)
++{
++	if(m->locks)
++		runtime_throw("stopm holding locks");
++	if(m->p)
++		runtime_throw("stopm holding p");
++	if(m->spinning) {
++		m->spinning = false;
++		runtime_xadd(&runtime_sched.nmspinning, -1);
++	}
++
++retry:
++	runtime_lock(&runtime_sched);
++	mput(m);
++	runtime_unlock(&runtime_sched);
++	runtime_notesleep(&m->park);
++	runtime_noteclear(&m->park);
++	if(m->helpgc) {
++		runtime_gchelper();
+ 		m->helpgc = 0;
+-	} else if(m->nextg != nil) {
+-		// New m started by matchmg.
+-	} else {
+-		runtime_throw("invalid m state in scheduler");
++		m->mcache = nil;
++		goto retry;
+ 	}
++	acquirep(m->nextp);
++	m->nextp = nil;
++}
++
++static void
++mspinning(void)
++{
++	m->spinning = true;
++}
++
++// Schedules some M to run the p (creates an M if necessary).
++// If p==nil, tries to get an idle P, if no idle P's returns false.
++static void
++startm(P *p, bool spinning)
++{
++	M *mp;
++	void (*fn)(void);
++
++	runtime_lock(&runtime_sched);
++	if(p == nil) {
++		p = pidleget();
++		if(p == nil) {
++			runtime_unlock(&runtime_sched);
++			if(spinning)
++				runtime_xadd(&runtime_sched.nmspinning, -1);
++			return;
++		}
++	}
++	mp = mget();
++	runtime_unlock(&runtime_sched);
++	if(mp == nil) {
++		fn = nil;
++		if(spinning)
++			fn = mspinning;
++		newm(fn, p);
++		return;
++	}
++	if(mp->spinning)
++		runtime_throw("startm: m is spinning");
++	if(mp->nextp)
++		runtime_throw("startm: m has p");
++	mp->spinning = spinning;
++	mp->nextp = p;
++	runtime_notewakeup(&mp->park);
++}
++
++// Hands off P from syscall or locked M.
++static void
++handoffp(P *p)
++{
++	// if it has local work, start it straight away
++	if(p->runqhead != p->runqtail || runtime_sched.runqsize) {
++		startm(p, false);
++		return;
++	}
++	// no local work, check that there are no spinning/idle M's,
++	// otherwise our help is not required
++	if(runtime_atomicload(&runtime_sched.nmspinning) + runtime_atomicload(&runtime_sched.npidle) == 0 &&  // TODO: fast atomic
++		runtime_cas(&runtime_sched.nmspinning, 0, 1)) {
++		startm(p, true);
++		return;
++	}
++	runtime_lock(&runtime_sched);
++	if(runtime_gcwaiting) {
++		p->status = Pgcstop;
++		if(--runtime_sched.stopwait == 0)
++			runtime_notewakeup(&runtime_sched.stopnote);
++		runtime_unlock(&runtime_sched);
++		return;
++	}
++	if(runtime_sched.runqsize) {
++		runtime_unlock(&runtime_sched);
++		startm(p, false);
++		return;
++	}
++	// If this is the last running P and nobody is polling network,
++	// need to wakeup another M to poll network.
++	if(runtime_sched.npidle == (uint32)runtime_gomaxprocs-1 && runtime_atomicload64(&runtime_sched.lastpoll) != 0) {
++		runtime_unlock(&runtime_sched);
++		startm(p, false);
++		return;
++	}
++	pidleput(p);
++	runtime_unlock(&runtime_sched);
++}
++
++// Tries to add one more P to execute G's.
++// Called when a G is made runnable (newproc, ready).
++static void
++wakep(void)
++{
++	// be conservative about spinning threads
++	if(!runtime_cas(&runtime_sched.nmspinning, 0, 1))
++		return;
++	startm(nil, true);
++}
++
++// Stops execution of the current m that is locked to a g until the g is runnable again.
++// Returns with acquired P.
++static void
++stoplockedm(void)
++{
++	P *p;
+ 
+-	// Find (or wait for) g to run.  Unlocks runtime_sched.
+-	gp = nextgandunlock();
+-	gp->readyonstop = 0;
++	if(m->lockedg == nil || m->lockedg->lockedm != m)
++		runtime_throw("stoplockedm: inconsistent locking");
++	if(m->p) {
++		// Schedule another M to run this p.
++		p = releasep();
++		handoffp(p);
++	}
++	inclocked(1);
++	// Wait until another thread schedules lockedg again.
++	runtime_notesleep(&m->park);
++	runtime_noteclear(&m->park);
++	if(m->lockedg->status != Grunnable)
++		runtime_throw("stoplockedm: not runnable");
++	acquirep(m->nextp);
++	m->nextp = nil;
++}
++
++// Schedules the locked m to run the locked gp.
++static void
++startlockedm(G *gp)
++{
++	M *mp;
++	P *p;
++
++	mp = gp->lockedm;
++	if(mp == m)
++		runtime_throw("startlockedm: locked to me");
++	if(mp->nextp)
++		runtime_throw("startlockedm: m has p");
++	// directly handoff current P to the locked m
++	inclocked(-1);
++	p = releasep();
++	mp->nextp = p;
++	runtime_notewakeup(&mp->park);
++	stopm();
++}
++
++// Stops the current m for stoptheworld.
++// Returns when the world is restarted.
++static void
++gcstopm(void)
++{
++	P *p;
++
++	if(!runtime_gcwaiting)
++		runtime_throw("gcstopm: not waiting for gc");
++	if(m->spinning) {
++		m->spinning = false;
++		runtime_xadd(&runtime_sched.nmspinning, -1);
++	}
++	p = releasep();
++	runtime_lock(&runtime_sched);
++	p->status = Pgcstop;
++	if(--runtime_sched.stopwait == 0)
++		runtime_notewakeup(&runtime_sched.stopnote);
++	runtime_unlock(&runtime_sched);
++	stopm();
++}
++
++// Schedules gp to run on the current M.
++// Never returns.
++static void
++execute(G *gp)
++{
++	int32 hz;
++
++	if(gp->status != Grunnable) {
++		runtime_printf("execute: bad g status %d\n", gp->status);
++		runtime_throw("execute: bad g status");
++	}
+ 	gp->status = Grunning;
++	m->p->tick++;
+ 	m->curg = gp;
+ 	gp->m = m;
+ 
+@@ -1352,30 +1449,261 @@
+ 	runtime_gogo(gp);
+ }
+ 
+-// Enter scheduler.  If g->status is Grunning,
+-// re-queues g and runs everyone else who is waiting
+-// before running g again.  If g->status is Gmoribund,
+-// kills off g.
+-void
+-runtime_gosched(void)
++// Finds a runnable goroutine to execute.
++// Tries to steal from other P's, get g from global queue, poll network.
++static G*
++findrunnable(void)
+ {
+-	if(m->locks != 0)
+-		runtime_throw("gosched holding locks");
+-	if(g == m->g0)
+-		runtime_throw("gosched of g0");
+-	runtime_mcall(schedule);
++	G *gp;
++	P *p;
++	int32 i;
++
++top:
++	if(runtime_gcwaiting) {
++		gcstopm();
++		goto top;
++	}
++	// local runq
++	gp = runqget(m->p);
++	if(gp)
++		return gp;
++	// global runq
++	if(runtime_sched.runqsize) {
++		runtime_lock(&runtime_sched);
++		gp = globrunqget(m->p);
++		runtime_unlock(&runtime_sched);
++		if(gp)
++			return gp;
++	}
++	// poll network
++	gp = runtime_netpoll(false);  // non-blocking
++	if(gp) {
++		injectglist(gp->schedlink);
++		gp->status = Grunnable;
++		return gp;
++	}
++	// If number of spinning M's >= number of busy P's, block.
++	// This is necessary to prevent excessive CPU consumption
++	// when GOMAXPROCS>>1 but the program parallelism is low.
++	if(!m->spinning && 2 * runtime_atomicload(&runtime_sched.nmspinning) >= runtime_gomaxprocs - runtime_atomicload(&runtime_sched.npidle))  // TODO: fast atomic
++		goto stop;
++	if(!m->spinning) {
++		m->spinning = true;
++		runtime_xadd(&runtime_sched.nmspinning, 1);
++	}
++	// random steal from other P's
++	for(i = 0; i < 2*runtime_gomaxprocs; i++) {
++		if(runtime_gcwaiting)
++			goto top;
++		p = runtime_allp[runtime_fastrand1()%runtime_gomaxprocs];
++		if(p == m->p)
++			gp = runqget(p);
++		else
++			gp = runqsteal(m->p, p);
++		if(gp)
++			return gp;
++	}
++stop:
++	// return P and block
++	runtime_lock(&runtime_sched);
++	if(runtime_gcwaiting) {
++		runtime_unlock(&runtime_sched);
++		goto top;
++	}
++	if(runtime_sched.runqsize) {
++		gp = globrunqget(m->p);
++		runtime_unlock(&runtime_sched);
++		return gp;
++	}
++	p = releasep();
++	pidleput(p);
++	runtime_unlock(&runtime_sched);
++	if(m->spinning) {
++		m->spinning = false;
++		runtime_xadd(&runtime_sched.nmspinning, -1);
++	}
++	// check all runqueues once again
++	for(i = 0; i < runtime_gomaxprocs; i++) {
++		p = runtime_allp[i];
++		if(p && p->runqhead != p->runqtail) {
++			runtime_lock(&runtime_sched);
++			p = pidleget();
++			runtime_unlock(&runtime_sched);
++			if(p) {
++				acquirep(p);
++				goto top;
++			}
++			break;
++		}
++	}
++	// poll network
++	if(runtime_xchg64(&runtime_sched.lastpoll, 0) != 0) {
++		if(m->p)
++			runtime_throw("findrunnable: netpoll with p");
++		if(m->spinning)
++			runtime_throw("findrunnable: netpoll with spinning");
++		gp = runtime_netpoll(true);  // block until new work is available
++		runtime_atomicstore64(&runtime_sched.lastpoll, runtime_nanotime());
++		if(gp) {
++			runtime_lock(&runtime_sched);
++			p = pidleget();
++			runtime_unlock(&runtime_sched);
++			if(p) {
++				acquirep(p);
++				injectglist(gp->schedlink);
++				gp->status = Grunnable;
++				return gp;
++			}
++			injectglist(gp);
++		}
++	}
++	stopm();
++	goto top;
++}
++
++// Injects the list of runnable G's into the scheduler.
++// Can run concurrently with GC.
++static void
++injectglist(G *glist)
++{
++	int32 n;
++	G *gp;
++
++	if(glist == nil)
++		return;
++	runtime_lock(&runtime_sched);
++	for(n = 0; glist; n++) {
++		gp = glist;
++		glist = gp->schedlink;
++		gp->status = Grunnable;
++		globrunqput(gp);
++	}
++	runtime_unlock(&runtime_sched);
++
++	for(; n && runtime_sched.npidle; n--)
++		startm(nil, false);
++}
++
++// One round of scheduler: find a runnable goroutine and execute it.
++// Never returns.
++static void
++schedule(void)
++{
++	G *gp;
++
++	if(m->locks)
++		runtime_throw("schedule: holding locks");
++
++top:
++	if(runtime_gcwaiting) {
++		gcstopm();
++		goto top;
++	}
++
++	gp = runqget(m->p);
++	if(gp == nil)
++		gp = findrunnable();
++
++	if(m->spinning) {
++		m->spinning = false;
++		runtime_xadd(&runtime_sched.nmspinning, -1);
++	}
++
++	// M wakeup policy is deliberately somewhat conservative (see nmspinning handling),
++	// so see if we need to wakeup another M here.
++	if (m->p->runqhead != m->p->runqtail &&
++		runtime_atomicload(&runtime_sched.nmspinning) == 0 &&
++		runtime_atomicload(&runtime_sched.npidle) > 0)  // TODO: fast atomic
++		wakep();
++
++	if(gp->lockedm) {
++		startlockedm(gp);
++		goto top;
++	}
++
++	execute(gp);
+ }
+ 
+ // Puts the current goroutine into a waiting state and unlocks the lock.
+ // The goroutine can be made runnable again by calling runtime_ready(gp).
+ void
+-runtime_park(void (*unlockf)(Lock*), Lock *lock, const char *reason)
++runtime_park(void(*unlockf)(Lock*), Lock *lock, const char *reason)
++{
++	m->waitlock = lock;
++	m->waitunlockf = unlockf;
++	g->waitreason = reason;
++	runtime_mcall(park0);
++}
++
++// runtime_park continuation on g0.
++static void
++park0(G *gp)
++{
++	gp->status = Gwaiting;
++	gp->m = nil;
++	m->curg = nil;
++	if(m->waitunlockf) {
++		m->waitunlockf(m->waitlock);
++		m->waitunlockf = nil;
++		m->waitlock = nil;
++	}
++	if(m->lockedg) {
++		stoplockedm();
++		execute(gp);  // Never returns.
++	}
++	schedule();
++}
++
++// Scheduler yield.
++void
++runtime_gosched(void)
++{
++	runtime_mcall(gosched0);
++}
++
++// runtime_gosched continuation on g0.
++static void
++gosched0(G *gp)
++{
++	gp->status = Grunnable;
++	gp->m = nil;
++	m->curg = nil;
++	runtime_lock(&runtime_sched);
++	globrunqput(gp);
++	runtime_unlock(&runtime_sched);
++	if(m->lockedg) {
++		stoplockedm();
++		execute(gp);  // Never returns.
++	}
++	schedule();
++}
++
++// Finishes execution of the current goroutine.
++void
++runtime_goexit(void)
++{
++	if(raceenabled)
++		runtime_racegoend();
++	runtime_mcall(goexit0);
++}
++
++// runtime_goexit continuation on g0.
++static void
++goexit0(G *gp)
+ {
+-	g->status = Gwaiting;
+-	g->waitreason = reason;
+-	if(unlockf)
+-		unlockf(lock);
+-	runtime_gosched();
++	gp->status = Gdead;
++	gp->entry = nil;
++	gp->m = nil;
++	gp->lockedm = nil;
++	m->curg = nil;
++	m->lockedg = nil;
++	if(m->locked & ~LockExternal) {
++		runtime_printf("invalid m->locked = %d", m->locked);
++		runtime_throw("internal lockOSThread error");
++	}	
++	m->locked = 0;
++	gfput(m->p, gp);
++	schedule();
+ }
+ 
+ // The goroutine g is about to enter a system call.
+@@ -1386,17 +1714,12 @@
+ // Entersyscall cannot split the stack: the runtime_gosave must
+ // make g->sched refer to the caller's stack segment, because
+ // entersyscall is going to return immediately after.
+-// It's okay to call matchmg and notewakeup even after
+-// decrementing mcpu, because we haven't released the
+-// sched lock yet, so the garbage collector cannot be running.
+ 
+ void runtime_entersyscall(void) __attribute__ ((no_split_stack));
+ 
+ void
+-runtime_entersyscall(void)
++runtime_entersyscall()
+ {
+-	uint32 v;
+-
+ 	if(m->profilehz > 0)
+ 		runtime_setprof(false);
+ 
+@@ -1406,7 +1729,11 @@
+ 				       &g->gcnext_segment, &g->gcnext_sp,
+ 				       &g->gcinitial_sp);
+ #else
+-	g->gcnext_sp = (byte *) &v;
++	{
++		uint32 v;
++
++		g->gcnext_sp = (byte *) &v;
++	}
+ #endif
+ 
+ 	// Save the registers in the g structure so that any pointers
+@@ -1415,30 +1742,57 @@
+ 
+ 	g->status = Gsyscall;
+ 
+-	// Fast path.
+-	// The slow path inside the schedlock/schedunlock will get
+-	// through without stopping if it does:
+-	//	mcpu--
+-	//	gwait not true
+-	//	waitstop && mcpu <= mcpumax not true
+-	// If we can do the same with a single atomic add,
+-	// then we can skip the locks.
+-	v = runtime_xadd(&runtime_sched.atomic, -1<<mcpuShift);
+-	if(!atomic_gwaiting(v) && (!atomic_waitstop(v) || atomic_mcpu(v) > atomic_mcpumax(v)))
+-		return;
++	if(runtime_atomicload(&runtime_sched.sysmonwait)) {  // TODO: fast atomic
++		runtime_lock(&runtime_sched);
++		if(runtime_atomicload(&runtime_sched.sysmonwait)) {
++			runtime_atomicstore(&runtime_sched.sysmonwait, 0);
++			runtime_notewakeup(&runtime_sched.sysmonnote);
++		}
++		runtime_unlock(&runtime_sched);
++	}
+ 
+-	schedlock();
+-	v = runtime_atomicload(&runtime_sched.atomic);
+-	if(atomic_gwaiting(v)) {
+-		matchmg();
+-		v = runtime_atomicload(&runtime_sched.atomic);
+-	}
+-	if(atomic_waitstop(v) && atomic_mcpu(v) <= atomic_mcpumax(v)) {
+-		runtime_xadd(&runtime_sched.atomic, -1<<waitstopShift);
+-		runtime_notewakeup(&runtime_sched.stopped);
++	m->mcache = nil;
++	m->p->tick++;
++	m->p->m = nil;
++	runtime_atomicstore(&m->p->status, Psyscall);
++	if(runtime_gcwaiting) {
++		runtime_lock(&runtime_sched);
++		if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) {
++			if(--runtime_sched.stopwait == 0)
++				runtime_notewakeup(&runtime_sched.stopnote);
++		}
++		runtime_unlock(&runtime_sched);
+ 	}
++}
++
++// The same as runtime_entersyscall(), but with a hint that the syscall is blocking.
++void
++runtime_entersyscallblock(void)
++{
++	P *p;
++
++	if(m->profilehz > 0)
++		runtime_setprof(false);
++
++	// Leave SP around for gc and traceback.
++#ifdef USING_SPLIT_STACK
++	g->gcstack = __splitstack_find(nil, nil, &g->gcstack_size,
++				       &g->gcnext_segment, &g->gcnext_sp,
++				       &g->gcinitial_sp);
++#else
++	g->gcnext_sp = (byte *) &p;
++#endif
++
++	// Save the registers in the g structure so that any pointers
++	// held in registers will be seen by the garbage collector.
++	getcontext(&g->gcregs);
++
++	g->status = Gsyscall;
+ 
+-	schedunlock();
++	p = releasep();
++	handoffp(p);
++	if(g->isbackground)  // do not consider blocked scavenger for deadlock detection
++		inclocked(1);
+ }
+ 
+ // The goroutine g exited its system call.
+@@ -1449,46 +1803,53 @@
+ runtime_exitsyscall(void)
+ {
+ 	G *gp;
+-	uint32 v;
++	P *p;
++
++	// Check whether the profiler needs to be turned on.
++	if(m->profilehz > 0)
++		runtime_setprof(true);
+ 
+-	// Fast path.
+-	// If we can do the mcpu++ bookkeeping and
+-	// find that we still have mcpu <= mcpumax, then we can
+-	// start executing Go code immediately, without having to
+-	// schedlock/schedunlock.
+-	// Also do fast return if any locks are held, so that
+-	// panic code can use syscalls to open a file.
+ 	gp = g;
+-	v = runtime_xadd(&runtime_sched.atomic, (1<<mcpuShift));
+-	if((m->profilehz == runtime_sched.profilehz && atomic_mcpu(v) <= atomic_mcpumax(v)) || m->locks > 0) {
++	// Try to re-acquire the last P.
++	if(m->p && m->p->status == Psyscall && runtime_cas(&m->p->status, Psyscall, Prunning)) {
+ 		// There's a cpu for us, so we can run.
++		m->mcache = m->p->mcache;
++		m->p->m = m;
++		m->p->tick++;
+ 		gp->status = Grunning;
+ 		// Garbage collector isn't running (since we are),
+-		// so okay to clear gcstack.
++		// so okay to clear gcstack and gcsp.
+ #ifdef USING_SPLIT_STACK
+ 		gp->gcstack = nil;
+ #endif
+ 		gp->gcnext_sp = nil;
+ 		runtime_memclr(&gp->gcregs, sizeof gp->gcregs);
+-
+-		if(m->profilehz > 0)
+-			runtime_setprof(true);
+ 		return;
+ 	}
+ 
+-	// Tell scheduler to put g back on the run queue:
+-	// mostly equivalent to g->status = Grunning,
+-	// but keeps the garbage collector from thinking
+-	// that g is running right now, which it's not.
+-	gp->readyonstop = 1;
+-
+-	// All the cpus are taken.
+-	// The scheduler will ready g and put this m to sleep.
+-	// When the scheduler takes g away from m,
+-	// it will undo the runtime_sched.mcpu++ above.
+-	runtime_gosched();
++	if(gp->isbackground)  // do not consider blocked scavenger for deadlock detection
++		inclocked(-1);
++	// Try to get any other idle P.
++	m->p = nil;
++	if(runtime_sched.pidle) {
++		runtime_lock(&runtime_sched);
++		p = pidleget();
++		runtime_unlock(&runtime_sched);
++		if(p) {
++			acquirep(p);
++#ifdef USING_SPLIT_STACK
++			gp->gcstack = nil;
++#endif
++			gp->gcnext_sp = nil;
++			runtime_memclr(&gp->gcregs, sizeof gp->gcregs);
++			return;
++		}
++	}
+ 
+-	// Gosched returned, so we're allowed to run now.
++	// Call the scheduler.
++	runtime_mcall(exitsyscall0);
++
++	// Scheduler returned, so we're allowed to run now.
+ 	// Delete the gcstack information that we left for
+ 	// the garbage collector during the system call.
+ 	// Must wait until now because until gosched returns
+@@ -1501,6 +1862,34 @@
+ 	runtime_memclr(&gp->gcregs, sizeof gp->gcregs);
+ }
+ 
++// runtime_exitsyscall slow path on g0.
++// Failed to acquire P, enqueue gp as runnable.
++static void
++exitsyscall0(G *gp)
++{
++	P *p;
++
++	gp->status = Grunnable;
++	gp->m = nil;
++	m->curg = nil;
++	runtime_lock(&runtime_sched);
++	p = pidleget();
++	if(p == nil)
++		globrunqput(gp);
++	runtime_unlock(&runtime_sched);
++	if(p) {
++		acquirep(p);
++		execute(gp);  // Never returns.
++	}
++	if(m->lockedg) {
++		// Wait until another thread schedules gp and so m again.
++		stoplockedm();
++		execute(gp);  // Never returns.
++	}
++	stopm();
++	schedule();  // Never returns.
++}
++
+ // Allocate a new g, with a stack big enough for stacksize bytes.
+ G*
+ runtime_malg(int32 stacksize, byte** ret_stack, size_t* ret_stacksize)
+@@ -1554,15 +1943,10 @@
+ 	byte *sp;
+ 	size_t spsize;
+ 	G *newg;
+-	int64 goid;
+-
+-	goid = runtime_xadd64((uint64*)&runtime_sched.goidgen, 1);
+-	if(raceenabled)
+-		runtime_racegostart(goid, runtime_getcallerpc(&fn));
+ 
+-	schedlock();
++	m->locks++;  // disable preemption because it can be holding p in a local var
+ 
+-	if((newg = gfget()) != nil) {
++	if((newg = gfget(m->p)) != nil) {
+ #ifdef USING_SPLIT_STACK
+ 		int dont_block_signals = 0;
+ 
+@@ -1579,24 +1963,20 @@
+ #endif
+ 	} else {
+ 		newg = runtime_malg(StackMin, &sp, &spsize);
++		runtime_lock(&runtime_sched);
+ 		if(runtime_lastg == nil)
+ 			runtime_allg = newg;
+ 		else
+ 			runtime_lastg->alllink = newg;
+ 		runtime_lastg = newg;
++		runtime_unlock(&runtime_sched);
+ 	}
+-	newg->status = Gwaiting;
+-	newg->waitreason = "new goroutine";
+ 
+ 	newg->entry = (byte*)fn;
+ 	newg->param = arg;
+ 	newg->gopc = (uintptr)__builtin_return_address(0);
+-
+-	runtime_sched.gcount++;
+-	newg->goid = goid;
+-
+-	if(sp == nil)
+-		runtime_throw("nil g->stack0");
++	newg->status = Grunnable;
++	newg->goid = runtime_xadd64(&runtime_sched.goidgen, 1);
+ 
+ 	{
+ 		// Avoid warnings about variables clobbered by
+@@ -1613,33 +1993,87 @@
+ 		vnewg->context.uc_stack.ss_size = vspsize;
+ 		makecontext(&vnewg->context, kickoff, 0);
+ 
+-		newprocreadylocked(vnewg);
+-		schedunlock();
++		runqput(m->p, vnewg);
+ 
++		if(runtime_atomicload(&runtime_sched.npidle) != 0 && runtime_atomicload(&runtime_sched.nmspinning) == 0 && fn != runtime_main)  // TODO: fast atomic
++			wakep();
++		m->locks--;
+ 		return vnewg;
+ 	}
+ }
+ 
+-// Put on gfree list.  Sched must be locked.
++// Put on gfree list.
++// If local list is too long, transfer a batch to the global list.
+ static void
+-gfput(G *gp)
++gfput(P *p, G *gp)
+ {
+-	gp->schedlink = runtime_sched.gfree;
+-	runtime_sched.gfree = gp;
++	gp->schedlink = p->gfree;
++	p->gfree = gp;
++	p->gfreecnt++;
++	if(p->gfreecnt >= 64) {
++		runtime_lock(&runtime_sched.gflock);
++		while(p->gfreecnt >= 32) {
++			p->gfreecnt--;
++			gp = p->gfree;
++			p->gfree = gp->schedlink;
++			gp->schedlink = runtime_sched.gfree;
++			runtime_sched.gfree = gp;
++		}
++		runtime_unlock(&runtime_sched.gflock);
++	}
+ }
+ 
+-// Get from gfree list.  Sched must be locked.
++// Get from gfree list.
++// If local list is empty, grab a batch from global list.
+ static G*
+-gfget(void)
++gfget(P *p)
+ {
+ 	G *gp;
+ 
+-	gp = runtime_sched.gfree;
+-	if(gp)
+-		runtime_sched.gfree = gp->schedlink;
++retry:
++	gp = p->gfree;
++	if(gp == nil && runtime_sched.gfree) {
++		runtime_lock(&runtime_sched.gflock);
++		while(p->gfreecnt < 32 && runtime_sched.gfree) {
++			p->gfreecnt++;
++			gp = runtime_sched.gfree;
++			runtime_sched.gfree = gp->schedlink;
++			gp->schedlink = p->gfree;
++			p->gfree = gp;
++		}
++		runtime_unlock(&runtime_sched.gflock);
++		goto retry;
++	}
++	if(gp) {
++		p->gfree = gp->schedlink;
++		p->gfreecnt--;
++	}
+ 	return gp;
+ }
+ 
++// Purge all cached G's from gfree list to the global list.
++static void
++gfpurge(P *p)
++{
++	G *gp;
++
++	runtime_lock(&runtime_sched.gflock);
++	while(p->gfreecnt) {
++		p->gfreecnt--;
++		gp = p->gfree;
++		p->gfree = gp->schedlink;
++		gp->schedlink = runtime_sched.gfree;
++		runtime_sched.gfree = gp;
++	}
++	runtime_unlock(&runtime_sched.gflock);
++}
++
++void
++runtime_Breakpoint(void)
++{
++	runtime_breakpoint();
++}
++
+ void runtime_Gosched (void) __asm__ (GOSYM_PREFIX "runtime.Gosched");
+ 
+ void
+@@ -1649,67 +2083,82 @@
+ }
+ 
+ // Implementation of runtime.GOMAXPROCS.
+-// delete when scheduler is stronger
++// delete when scheduler is even stronger
+ int32
+ runtime_gomaxprocsfunc(int32 n)
+ {
+ 	int32 ret;
+-	uint32 v;
+ 
+-	schedlock();
++	if(n > MaxGomaxprocs)
++		n = MaxGomaxprocs;
++	runtime_lock(&runtime_sched);
+ 	ret = runtime_gomaxprocs;
+-	if(n <= 0)
+-		n = ret;
+-	if(n > maxgomaxprocs)
+-		n = maxgomaxprocs;
+-	runtime_gomaxprocs = n;
+-	if(runtime_gomaxprocs > 1)
+-		runtime_singleproc = false;
+- 	if(runtime_gcwaiting != 0) {
+- 		if(atomic_mcpumax(runtime_sched.atomic) != 1)
+- 			runtime_throw("invalid mcpumax during gc");
+-		schedunlock();
++	if(n <= 0 || n == ret) {
++		runtime_unlock(&runtime_sched);
+ 		return ret;
+ 	}
++	runtime_unlock(&runtime_sched);
+ 
+-	setmcpumax(n);
++	runtime_semacquire(&runtime_worldsema);
++	m->gcing = 1;
++	runtime_stoptheworld();
++	newprocs = n;
++	m->gcing = 0;
++	runtime_semrelease(&runtime_worldsema);
++	runtime_starttheworld();
+ 
+-	// If there are now fewer allowed procs
+-	// than procs running, stop.
+-	v = runtime_atomicload(&runtime_sched.atomic);
+-	if((int32)atomic_mcpu(v) > n) {
+-		schedunlock();
+-		runtime_gosched();
+-		return ret;
+-	}
+-	// handle more procs
+-	matchmg();
+-	schedunlock();
+ 	return ret;
+ }
+ 
+-void
+-runtime_LockOSThread(void)
++static void
++LockOSThread(void)
+ {
+-	if(m == &runtime_m0 && runtime_sched.init) {
+-		runtime_sched.lockmain = true;
+-		return;
+-	}
+ 	m->lockedg = g;
+ 	g->lockedm = m;
+ }
+ 
++void	runtime_LockOSThread(void) __asm__ (GOSYM_PREFIX "runtime.LockOSThread");
+ void
+-runtime_UnlockOSThread(void)
++runtime_LockOSThread(void)
++{
++	m->locked |= LockExternal;
++	LockOSThread();
++}
++
++void
++runtime_lockOSThread(void)
++{
++	m->locked += LockInternal;
++	LockOSThread();
++}
++
++static void
++UnlockOSThread(void)
+ {
+-	if(m == &runtime_m0 && runtime_sched.init) {
+-		runtime_sched.lockmain = false;
++	if(m->locked != 0)
+ 		return;
+-	}
+ 	m->lockedg = nil;
+ 	g->lockedm = nil;
+ }
+ 
++void	runtime_UnlockOSThread(void) __asm__ (GOSYM_PREFIX "runtime.UnlockOSThread");
++
++void
++runtime_UnlockOSThread(void)
++{
++	m->locked &= ~LockExternal;
++	UnlockOSThread();
++}
++
++void
++runtime_unlockOSThread(void)
++{
++	if(m->locked < LockInternal)
++		runtime_throw("runtime: internal error: misuse of lockOSThread/unlockOSThread");
++	m->locked -= LockInternal;
++	UnlockOSThread();
++}
++
+ bool
+ runtime_lockedOSThread(void)
+ {
+@@ -1740,13 +2189,28 @@
+ intgo
+ runtime_NumGoroutine()
+ {
+-	return runtime_sched.gcount;
++	return runtime_gcount();
+ }
+ 
+ int32
+ runtime_gcount(void)
+ {
+-	return runtime_sched.gcount;
++	G *gp;
++	int32 n, s;
++
++	n = 0;
++	runtime_lock(&runtime_sched);
++	// TODO(dvyukov): runtime.NumGoroutine() is O(N).
++	// We do not want to increment/decrement centralized counter in newproc/goexit,
++	// just to make runtime.NumGoroutine() faster.
++	// Compromise solution is to introduce per-P counters of active goroutines.
++	for(gp = runtime_allg; gp; gp = gp->alllink) {
++		s = gp->status;
++		if(s == Grunnable || s == Grunning || s == Gsyscall || s == Gwaiting)
++			n++;
++	}
++	runtime_unlock(&runtime_sched);
++	return n;
+ }
+ 
+ int32
+@@ -1769,6 +2233,9 @@
+ {
+ 	int32 n, i;
+ 
++	// Windows does profiling in a dedicated thread w/o m.
++	if(!Windows && (m == nil || m->mcache == nil))
++		return;
+ 	if(prof.fn == nil || prof.hz == 0)
+ 		return;
+ 
+@@ -1813,3 +2280,555 @@
+ 	if(hz != 0)
+ 		runtime_resetcpuprofiler(hz);
+ }
++
++// Change number of processors.  The world is stopped, sched is locked.
++static void
++procresize(int32 new)
++{
++	int32 i, old;
++	G *gp;
++	P *p;
++
++	old = runtime_gomaxprocs;
++	if(old < 0 || old > MaxGomaxprocs || new <= 0 || new >MaxGomaxprocs)
++		runtime_throw("procresize: invalid arg");
++	// initialize new P's
++	for(i = 0; i < new; i++) {
++		p = runtime_allp[i];
++		if(p == nil) {
++			p = (P*)runtime_mallocgc(sizeof(*p), 0, 0, 1);
++			p->status = Pgcstop;
++			runtime_atomicstorep(&runtime_allp[i], p);
++		}
++		if(p->mcache == nil) {
++			if(old==0 && i==0)
++				p->mcache = m->mcache;  // bootstrap
++			else
++				p->mcache = runtime_allocmcache();
++		}
++		if(p->runq == nil) {
++			p->runqsize = 128;
++			p->runq = (G**)runtime_mallocgc(p->runqsize*sizeof(G*), 0, 0, 1);
++		}
++	}
++
++	// redistribute runnable G's evenly
++	for(i = 0; i < old; i++) {
++		p = runtime_allp[i];
++		while((gp = runqget(p)) != nil)
++			globrunqput(gp);
++	}
++	// start at 1 because current M already executes some G and will acquire allp[0] below,
++	// so if we have a spare G we want to put it into allp[1].
++	for(i = 1; runtime_sched.runqhead; i++) {
++		gp = runtime_sched.runqhead;
++		runtime_sched.runqhead = gp->schedlink;
++		runqput(runtime_allp[i%new], gp);
++	}
++	runtime_sched.runqtail = nil;
++	runtime_sched.runqsize = 0;
++
++	// free unused P's
++	for(i = new; i < old; i++) {
++		p = runtime_allp[i];
++		runtime_freemcache(p->mcache);
++		p->mcache = nil;
++		gfpurge(p);
++		p->status = Pdead;
++		// can't free P itself because it can be referenced by an M in syscall
++	}
++
++	if(m->p)
++		m->p->m = nil;
++	m->p = nil;
++	m->mcache = nil;
++	p = runtime_allp[0];
++	p->m = nil;
++	p->status = Pidle;
++	acquirep(p);
++	for(i = new-1; i > 0; i--) {
++		p = runtime_allp[i];
++		p->status = Pidle;
++		pidleput(p);
++	}
++	runtime_singleproc = new == 1;
++	runtime_atomicstore((uint32*)&runtime_gomaxprocs, new);
++}
++
++// Associate p and the current m.
++static void
++acquirep(P *p)
++{
++	if(m->p || m->mcache)
++		runtime_throw("acquirep: already in go");
++	if(p->m || p->status != Pidle) {
++		runtime_printf("acquirep: p->m=%p(%d) p->status=%d\n", p->m, p->m ? p->m->id : 0, p->status);
++		runtime_throw("acquirep: invalid p state");
++	}
++	m->mcache = p->mcache;
++	m->p = p;
++	p->m = m;
++	p->status = Prunning;
++}
++
++// Disassociate p and the current m.
++static P*
++releasep(void)
++{
++	P *p;
++
++	if(m->p == nil || m->mcache == nil)
++		runtime_throw("releasep: invalid arg");
++	p = m->p;
++	if(p->m != m || p->mcache != m->mcache || p->status != Prunning) {
++		runtime_printf("releasep: m=%p m->p=%p p->m=%p m->mcache=%p p->mcache=%p p->status=%d\n",
++			m, m->p, p->m, m->mcache, p->mcache, p->status);
++		runtime_throw("releasep: invalid p state");
++	}
++	m->p = nil;
++	m->mcache = nil;
++	p->m = nil;
++	p->status = Pidle;
++	return p;
++}
++
++static void
++inclocked(int32 v)
++{
++	runtime_lock(&runtime_sched);
++	runtime_sched.mlocked += v;
++	if(v > 0)
++		checkdead();
++	runtime_unlock(&runtime_sched);
++}
++
++// Check for deadlock situation.
++// The check is based on number of running M's, if 0 -> deadlock.
++static void
++checkdead(void)
++{
++	G *gp;
++	int32 run, grunning, s;
++
++	// -1 for sysmon
++	run = runtime_sched.mcount - runtime_sched.nmidle - runtime_sched.mlocked - 1 - countextra();
++	if(run > 0)
++		return;
++	if(run < 0) {
++		runtime_printf("checkdead: nmidle=%d mlocked=%d mcount=%d\n",
++			runtime_sched.nmidle, runtime_sched.mlocked, runtime_sched.mcount);
++		runtime_throw("checkdead: inconsistent counts");
++	}
++	grunning = 0;
++	for(gp = runtime_allg; gp; gp = gp->alllink) {
++		if(gp->isbackground)
++			continue;
++		s = gp->status;
++		if(s == Gwaiting)
++			grunning++;
++		else if(s == Grunnable || s == Grunning || s == Gsyscall) {
++			runtime_printf("checkdead: find g %D in status %d\n", gp->goid, s);
++			runtime_throw("checkdead: runnable g");
++		}
++	}
++	if(grunning == 0)  // possible if main goroutine calls runtime_Goexit()
++		runtime_exit(0);
++	m->throwing = -1;  // do not dump full stacks
++	runtime_throw("all goroutines are asleep - deadlock!");
++}
++
++static void
++sysmon(void)
++{
++	uint32 idle, delay;
++	int64 now, lastpoll;
++	G *gp;
++	uint32 ticks[MaxGomaxprocs];
++
++	idle = 0;  // how many cycles in succession we had not wokeup somebody
++	delay = 0;
++	for(;;) {
++		if(idle == 0)  // start with 20us sleep...
++			delay = 20;
++		else if(idle > 50)  // start doubling the sleep after 1ms...
++			delay *= 2;
++		if(delay > 10*1000)  // up to 10ms
++			delay = 10*1000;
++		runtime_usleep(delay);
++		if(runtime_gcwaiting || runtime_atomicload(&runtime_sched.npidle) == (uint32)runtime_gomaxprocs) {  // TODO: fast atomic
++			runtime_lock(&runtime_sched);
++			if(runtime_atomicload(&runtime_gcwaiting) || runtime_atomicload(&runtime_sched.npidle) == (uint32)runtime_gomaxprocs) {
++				runtime_atomicstore(&runtime_sched.sysmonwait, 1);
++				runtime_unlock(&runtime_sched);
++				runtime_notesleep(&runtime_sched.sysmonnote);
++				runtime_noteclear(&runtime_sched.sysmonnote);
++				idle = 0;
++				delay = 20;
++			} else
++				runtime_unlock(&runtime_sched);
++		}
++		// poll network if not polled for more than 10ms
++		lastpoll = runtime_atomicload64(&runtime_sched.lastpoll);
++		now = runtime_nanotime();
++		if(lastpoll != 0 && lastpoll + 10*1000*1000 > now) {
++			gp = runtime_netpoll(false);  // non-blocking
++			injectglist(gp);
++		}
++		// retake P's blocked in syscalls
++		if(retake(ticks))
++			idle = 0;
++		else
++			idle++;
++	}
++}
++
++static uint32
++retake(uint32 *ticks)
++{
++	uint32 i, s, n;
++	int64 t;
++	P *p;
++
++	n = 0;
++	for(i = 0; i < (uint32)runtime_gomaxprocs; i++) {
++		p = runtime_allp[i];
++		if(p==nil)
++			continue;
++		t = p->tick;
++		if(ticks[i] != t) {
++			ticks[i] = t;
++			continue;
++		}
++		s = p->status;
++		if(s != Psyscall)
++			continue;
++		if(p->runqhead == p->runqtail && runtime_atomicload(&runtime_sched.nmspinning) + runtime_atomicload(&runtime_sched.npidle) > 0)  // TODO: fast atomic
++			continue;
++		// Need to increment number of locked M's before the CAS.
++		// Otherwise the M from which we retake can exit the syscall,
++		// increment nmidle and report deadlock.
++		inclocked(-1);
++		if(runtime_cas(&p->status, s, Pidle)) {
++			n++;
++			handoffp(p);
++		}
++		inclocked(1);
++	}
++	return n;
++}
++
++// Put mp on midle list.
++// Sched must be locked.
++static void
++mput(M *mp)
++{
++	mp->schedlink = runtime_sched.midle;
++	runtime_sched.midle = mp;
++	runtime_sched.nmidle++;
++	checkdead();
++}
++
++// Try to get an m from midle list.
++// Sched must be locked.
++static M*
++mget(void)
++{
++	M *mp;
++
++	if((mp = runtime_sched.midle) != nil){
++		runtime_sched.midle = mp->schedlink;
++		runtime_sched.nmidle--;
++	}
++	return mp;
++}
++
++// Put gp on the global runnable queue.
++// Sched must be locked.
++static void
++globrunqput(G *gp)
++{
++	gp->schedlink = nil;
++	if(runtime_sched.runqtail)
++		runtime_sched.runqtail->schedlink = gp;
++	else
++		runtime_sched.runqhead = gp;
++	runtime_sched.runqtail = gp;
++	runtime_sched.runqsize++;
++}
++
++// Try get a batch of G's from the global runnable queue.
++// Sched must be locked.
++static G*
++globrunqget(P *p)
++{
++	G *gp, *gp1;
++	int32 n;
++
++	if(runtime_sched.runqsize == 0)
++		return nil;
++	n = runtime_sched.runqsize/runtime_gomaxprocs+1;
++	if(n > runtime_sched.runqsize)
++		n = runtime_sched.runqsize;
++	runtime_sched.runqsize -= n;
++	if(runtime_sched.runqsize == 0)
++		runtime_sched.runqtail = nil;
++	gp = runtime_sched.runqhead;
++	runtime_sched.runqhead = gp->schedlink;
++	n--;
++	while(n--) {
++		gp1 = runtime_sched.runqhead;
++		runtime_sched.runqhead = gp1->schedlink;
++		runqput(p, gp1);
++	}
++	return gp;
++}
++
++// Put p to on pidle list.
++// Sched must be locked.
++static void
++pidleput(P *p)
++{
++	p->link = runtime_sched.pidle;
++	runtime_sched.pidle = p;
++	runtime_xadd(&runtime_sched.npidle, 1);  // TODO: fast atomic
++}
++
++// Try get a p from pidle list.
++// Sched must be locked.
++static P*
++pidleget(void)
++{
++	P *p;
++
++	p = runtime_sched.pidle;
++	if(p) {
++		runtime_sched.pidle = p->link;
++		runtime_xadd(&runtime_sched.npidle, -1);  // TODO: fast atomic
++	}
++	return p;
++}
++
++// Put g on local runnable queue.
++// TODO(dvyukov): consider using lock-free queue.
++static void
++runqput(P *p, G *gp)
++{
++	int32 h, t, s;
++
++	runtime_lock(p);
++retry:
++	h = p->runqhead;
++	t = p->runqtail;
++	s = p->runqsize;
++	if(t == h-1 || (h == 0 && t == s-1)) {
++		runqgrow(p);
++		goto retry;
++	}
++	p->runq[t++] = gp;
++	if(t == s)
++		t = 0;
++	p->runqtail = t;
++	runtime_unlock(p);
++}
++
++// Get g from local runnable queue.
++static G*
++runqget(P *p)
++{
++	G *gp;
++	int32 t, h, s;
++
++	if(p->runqhead == p->runqtail)
++		return nil;
++	runtime_lock(p);
++	h = p->runqhead;
++	t = p->runqtail;
++	s = p->runqsize;
++	if(t == h) {
++		runtime_unlock(p);
++		return nil;
++	}
++	gp = p->runq[h++];
++	if(h == s)
++		h = 0;
++	p->runqhead = h;
++	runtime_unlock(p);
++	return gp;
++}
++
++// Grow local runnable queue.
++// TODO(dvyukov): consider using fixed-size array
++// and transfer excess to the global list (local queue can grow way too big).
++static void
++runqgrow(P *p)
++{
++	G **q;
++	int32 s, t, h, t2;
++
++	h = p->runqhead;
++	t = p->runqtail;
++	s = p->runqsize;
++	t2 = 0;
++	q = runtime_malloc(2*s*sizeof(*q));
++	while(t != h) {
++		q[t2++] = p->runq[h++];
++		if(h == s)
++			h = 0;
++	}
++	runtime_free(p->runq);
++	p->runq = q;
++	p->runqhead = 0;
++	p->runqtail = t2;
++	p->runqsize = 2*s;
++}
++
++// Steal half of elements from local runnable queue of p2
++// and put onto local runnable queue of p.
++// Returns one of the stolen elements (or nil if failed).
++static G*
++runqsteal(P *p, P *p2)
++{
++	G *gp, *gp1;
++	int32 t, h, s, t2, h2, s2, c, i;
++
++	if(p2->runqhead == p2->runqtail)
++		return nil;
++	// sort locks to prevent deadlocks
++	if(p < p2)
++		runtime_lock(p);
++	runtime_lock(p2);
++	if(p2->runqhead == p2->runqtail) {
++		runtime_unlock(p2);
++		if(p < p2)
++			runtime_unlock(p);
++		return nil;
++	}
++	if(p >= p2)
++		runtime_lock(p);
++	// now we've locked both queues and know the victim is not empty
++	h = p->runqhead;
++	t = p->runqtail;
++	s = p->runqsize;
++	h2 = p2->runqhead;
++	t2 = p2->runqtail;
++	s2 = p2->runqsize;
++	gp = p2->runq[h2++];  // return value
++	if(h2 == s2)
++		h2 = 0;
++	// steal roughly half
++	if(t2 > h2)
++		c = (t2 - h2) / 2;
++	else
++		c = (s2 - h2 + t2) / 2;
++	// copy
++	for(i = 0; i != c; i++) {
++		// the target queue is full?
++		if(t == h-1 || (h == 0 && t == s-1))
++			break;
++		// the victim queue is empty?
++		if(t2 == h2)
++			break;
++		gp1 = p2->runq[h2++];
++		if(h2 == s2)
++			h2 = 0;
++		p->runq[t++] = gp1;
++		if(t == s)
++			t = 0;
++	}
++	p->runqtail = t;
++	p2->runqhead = h2;
++	runtime_unlock(p2);
++	runtime_unlock(p);
++	return gp;
++}
++
++void runtime_testSchedLocalQueue(void)
++  __asm__("runtime.testSchedLocalQueue");
++
++void
++runtime_testSchedLocalQueue(void)
++{
++	P p;
++	G gs[1000];
++	int32 i, j;
++
++	runtime_memclr((byte*)&p, sizeof(p));
++	p.runqsize = 1;
++	p.runqhead = 0;
++	p.runqtail = 0;
++	p.runq = runtime_malloc(p.runqsize*sizeof(*p.runq));
++
++	for(i = 0; i < (int32)nelem(gs); i++) {
++		if(runqget(&p) != nil)
++			runtime_throw("runq is not empty initially");
++		for(j = 0; j < i; j++)
++			runqput(&p, &gs[i]);
++		for(j = 0; j < i; j++) {
++			if(runqget(&p) != &gs[i]) {
++				runtime_printf("bad element at iter %d/%d\n", i, j);
++				runtime_throw("bad element");
++			}
++		}
++		if(runqget(&p) != nil)
++			runtime_throw("runq is not empty afterwards");
++	}
++}
++
++void runtime_testSchedLocalQueueSteal(void)
++  __asm__("runtime.testSchedLocalQueueSteal");
++
++void
++runtime_testSchedLocalQueueSteal(void)
++{
++	P p1, p2;
++	G gs[1000], *gp;
++	int32 i, j, s;
++
++	runtime_memclr((byte*)&p1, sizeof(p1));
++	p1.runqsize = 1;
++	p1.runqhead = 0;
++	p1.runqtail = 0;
++	p1.runq = runtime_malloc(p1.runqsize*sizeof(*p1.runq));
++
++	runtime_memclr((byte*)&p2, sizeof(p2));
++	p2.runqsize = nelem(gs);
++	p2.runqhead = 0;
++	p2.runqtail = 0;
++	p2.runq = runtime_malloc(p2.runqsize*sizeof(*p2.runq));
++
++	for(i = 0; i < (int32)nelem(gs); i++) {
++		for(j = 0; j < i; j++) {
++			gs[j].sig = 0;
++			runqput(&p1, &gs[j]);
++		}
++		gp = runqsteal(&p2, &p1);
++		s = 0;
++		if(gp) {
++			s++;
++			gp->sig++;
++		}
++		while((gp = runqget(&p2)) != nil) {
++			s++;
++			gp->sig++;
++		}
++		while((gp = runqget(&p1)) != nil)
++			gp->sig++;
++		for(j = 0; j < i; j++) {
++			if(gs[j].sig != 1) {
++				runtime_printf("bad element %d(%d) at iter %d\n", j, gs[j].sig, i);
++				runtime_throw("bad element");
++			}
++		}
++		if(s != i/2 && s != i/2+1) {
++			runtime_printf("bad steal %d, want %d or %d, iter %d\n",
++				s, i/2, i/2+1, i);
++			runtime_throw("bad steal");
++		}
++	}
++}
++
++void
++runtime_proc_scan(void (*addroot)(Obj))
++{
++	addroot((Obj){(byte*)&runtime_sched, sizeof runtime_sched, 0});
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/race.h gcc-4.8.1/libgo/runtime/race.h
+--- gcc-4.8.1.orig/libgo/runtime/race.h	2012-12-12 17:13:29.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/race.h	2013-07-16 01:55:04.520470000 -0500
+@@ -11,17 +11,19 @@
+ #endif
+ 
+ // Initialize race detection subsystem.
+-void	runtime_raceinit(void);
++uintptr	runtime_raceinit(void);
+ // Finalize race detection subsystem, does not return.
+ void	runtime_racefini(void);
+ 
+ void	runtime_racemapshadow(void *addr, uintptr size);
+ void	runtime_racemalloc(void *p, uintptr sz, void *pc);
+ void	runtime_racefree(void *p);
+-void	runtime_racegostart(int32 goid, void *pc);
+-void	runtime_racegoend(int32 goid);
++uintptr	runtime_racegostart(void *pc);
++void	runtime_racegoend(void);
+ void	runtime_racewritepc(void *addr, void *callpc, void *pc);
+ void	runtime_racereadpc(void *addr, void *callpc, void *pc);
++void	runtime_racewriterangepc(void *addr, uintptr sz, uintptr step, void *callpc, void *pc);
++void	runtime_racereadrangepc(void *addr, uintptr sz, uintptr step, void *callpc, void *pc);
+ void	runtime_racefingo(void);
+ void	runtime_raceacquire(void *addr);
+ void	runtime_raceacquireg(G *gp, void *addr);
+diff -Naur gcc-4.8.1.orig/libgo/runtime/runtime.c gcc-4.8.1/libgo/runtime/runtime.c
+--- gcc-4.8.1.orig/libgo/runtime/runtime.c	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/runtime.c	2013-07-24 08:19:00.431058000 -0500
+@@ -2,6 +2,7 @@
+ // Use of this source code is governed by a BSD-style
+ // license that can be found in the LICENSE file.
+ 
++#include <signal.h>
+ #include <unistd.h>
+ 
+ #include "config.h"
+@@ -10,14 +11,27 @@
+ #include "array.h"
+ #include "go-panic.h"
+ 
++// The GOTRACEBACK environment variable controls the
++// behavior of a Go program that is crashing and exiting.
++//	GOTRACEBACK=0   suppress all tracebacks
++//	GOTRACEBACK=1   default behavior - show tracebacks but exclude runtime frames
++//	GOTRACEBACK=2   show tracebacks including runtime frames
++//	GOTRACEBACK=crash   show tracebacks including runtime frames, then crash (core dump etc)
+ int32
+-runtime_gotraceback(void)
++runtime_gotraceback(bool *crash)
+ {
+ 	const byte *p;
+ 
++	if(crash != nil)
++		*crash = false;
+ 	p = runtime_getenv("GOTRACEBACK");
+ 	if(p == nil || p[0] == '\0')
+ 		return 1;	// default is on
++	if(runtime_strcmp((const char *)p, "crash") == 0) {
++		if(crash != nil)
++			*crash = true;
++		return 2;	// extra information
++	}
+ 	return runtime_atoi(p);
+ }
+ 
+@@ -44,6 +58,11 @@
+   return argc == 0 ? nil : argv[0];
+ }
+ 
++// Information about what cpu features are available.
++// Set on startup in asm_{x86/amd64}.s.
++uint32 runtime_cpuid_ecx;
++uint32 runtime_cpuid_edx;
++
+ void
+ runtime_goargs(void)
+ {
+@@ -90,6 +109,52 @@
+ 	return n;
+ }
+ 
++static struct root_list runtime_roots =
++{ nil,
++  { { &syscall_Envs, sizeof syscall_Envs },
++    { &os_Args, sizeof os_Args },
++    { nil, 0 } },
++};
++
++static void
++TestAtomic64(void)
++{
++	uint64 z64, x64;
++
++	z64 = 42;
++	x64 = 0;
++	PREFETCH(&z64);
++	if(runtime_cas64(&z64, &x64, 1))
++		runtime_throw("cas64 failed");
++	if(x64 != 42)
++		runtime_throw("cas64 failed");
++	if(!runtime_cas64(&z64, &x64, 1))
++		runtime_throw("cas64 failed");
++	if(x64 != 42 || z64 != 1)
++		runtime_throw("cas64 failed");
++	if(runtime_atomicload64(&z64) != 1)
++		runtime_throw("load64 failed");
++	runtime_atomicstore64(&z64, (1ull<<40)+1);
++	if(runtime_atomicload64(&z64) != (1ull<<40)+1)
++		runtime_throw("store64 failed");
++	if(runtime_xadd64(&z64, (1ull<<40)+1) != (2ull<<40)+2)
++		runtime_throw("xadd64 failed");
++	if(runtime_atomicload64(&z64) != (2ull<<40)+2)
++		runtime_throw("xadd64 failed");
++	if(runtime_xchg64(&z64, (3ull<<40)+3) != (2ull<<40)+2)
++		runtime_throw("xchg64 failed");
++	if(runtime_atomicload64(&z64) != (3ull<<40)+3)
++		runtime_throw("xchg64 failed");
++}
++
++void
++runtime_check(void)
++{
++	__go_register_gc_roots(&runtime_roots);
++
++	TestAtomic64();
++}
++
+ uint32
+ runtime_fastrand1(void)
+ {
+@@ -105,19 +170,6 @@
+ 	return x;
+ }
+ 
+-static struct root_list runtime_roots =
+-{ nil,
+-  { { &syscall_Envs, sizeof syscall_Envs },
+-    { &os_Args, sizeof os_Args },
+-    { nil, 0 } },
+-};
+-
+-void
+-runtime_check(void)
+-{
+-	__go_register_gc_roots(&runtime_roots);
+-}
+-
+ int64
+ runtime_cputicks(void)
+ {
+@@ -139,7 +191,7 @@
+ 	if(current && runtime_m()->throwing > 0)
+ 		return 1;
+ 	if(traceback < 0)
+-		traceback = runtime_gotraceback();
++		traceback = runtime_gotraceback(nil);
+ 	return traceback > 1 || (__builtin_memchr(s.str, '.', s.len) != nil && __builtin_memcmp(s.str, "runtime.", 7) != 0);
+ }
+ 
+@@ -181,3 +233,49 @@
+ {
+ 	return runtime_tickspersecond();
+ }
++
++// Called to initialize a new m (including the bootstrap m).
++// Called on the parent thread (main thread in case of bootstrap), can allocate memory.
++void
++runtime_mpreinit(M *mp)
++{
++	mp->gsignal = runtime_malg(32*1024, &mp->gsignalstack, &mp->gsignalstacksize);	// OS X wants >=8K, Linux >=2K
++}
++
++// Called to initialize a new m (including the bootstrap m).
++// Called on the new thread, can not allocate memory.
++void
++runtime_minit(void)
++{
++	M* m;
++	sigset_t sigs;
++
++	// Initialize signal handling.
++	m = runtime_m();
++	runtime_signalstack(m->gsignalstack, m->gsignalstacksize);
++	if (sigemptyset(&sigs) != 0)
++		runtime_throw("sigemptyset");
++	sigprocmask(SIG_SETMASK, &sigs, nil);
++}
++
++// Called from dropm to undo the effect of an minit.
++void
++runtime_unminit(void)
++{
++	runtime_signalstack(nil, 0);
++}
++
++
++void
++runtime_signalstack(byte *p, int32 n)
++{
++	stack_t st;
++
++	st.ss_sp = p;
++	st.ss_size = n;
++	st.ss_flags = 0;
++	if(p == nil)
++		st.ss_flags = SS_DISABLE;
++	if(sigaltstack(&st, nil) < 0)
++		*(int *)0xf1 = 0xf1;
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/runtime.h gcc-4.8.1/libgo/runtime/runtime.h
+--- gcc-4.8.1.orig/libgo/runtime/runtime.h	2013-01-30 16:24:40.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/runtime.h	2013-07-23 15:26:30.052588000 -0500
+@@ -54,23 +54,26 @@
+ typedef	uint8			byte;
+ typedef	struct	Func		Func;
+ typedef	struct	G		G;
+-typedef	union	Lock		Lock;
++typedef	struct	Lock		Lock;
+ typedef	struct	M		M;
+-typedef	union	Note		Note;
++typedef	struct	P		P;
++typedef	struct	Note		Note;
++typedef	struct	String		String;
++typedef	struct	FuncVal		FuncVal;
+ typedef	struct	SigTab		SigTab;
+ typedef	struct	MCache		MCache;
+ typedef struct	FixAlloc	FixAlloc;
+ typedef	struct	Hchan		Hchan;
+ typedef	struct	Timers		Timers;
+ typedef	struct	Timer		Timer;
+-typedef struct	GCStats		GCStats;
+-typedef struct	LFNode		LFNode;
+-typedef struct	ParFor		ParFor;
+-typedef struct	ParForThread	ParForThread;
+-typedef struct	CgoMal		CgoMal;
++typedef	struct	GCStats		GCStats;
++typedef	struct	LFNode		LFNode;
++typedef	struct	ParFor		ParFor;
++typedef	struct	ParForThread	ParForThread;
++typedef	struct	CgoMal		CgoMal;
++typedef	struct	PollDesc	PollDesc;
+ 
+ typedef	struct	__go_open_array		Slice;
+-typedef	struct	String			String;
+ typedef struct	__go_interface		Iface;
+ typedef	struct	__go_empty_interface	Eface;
+ typedef	struct	__go_type_descriptor	Type;
+@@ -80,6 +83,7 @@
+ typedef struct	__go_ptr_type		PtrType;
+ typedef struct	__go_func_type		FuncType;
+ typedef struct	__go_map_type		MapType;
++typedef struct	__go_channel_type	ChanType;
+ 
+ typedef struct  Traceback	Traceback;
+ 
+@@ -109,11 +113,20 @@
+ 	Grunning,
+ 	Gsyscall,
+ 	Gwaiting,
+-	Gmoribund,
++	Gmoribund_unused,  // currently unused, but hardcoded in gdb scripts
+ 	Gdead,
+ };
+ enum
+ {
++	// P status
++	Pidle,
++	Prunning,
++	Psyscall,
++	Pgcstop,
++	Pdead,
++};
++enum
++{
+ 	true	= 1,
+ 	false	= 0,
+ };
+@@ -128,25 +141,33 @@
+ 	// Global <-> per-M stack segment cache transfer batch size.
+ 	StackCacheBatch = 16,
+ };
+-
+ /*
+  * structures
+  */
+-union	Lock
++struct	Lock
+ {
+-	uint32	key;	// futex-based impl
+-	M*	waitm;	// linked list of waiting M's (sema-based impl)
+-};
+-union	Note
+-{
+-	uint32	key;	// futex-based impl
+-	M*	waitm;	// waiting M (sema-based impl)
++	// Futex-based impl treats it as uint32 key,
++	// while sema-based impl as M* waitm.
++	// Used to be a union, but unions break precise GC.
++	uintptr	key;
++};
++struct	Note
++{
++	// Futex-based impl treats it as uint32 key,
++	// while sema-based impl as M* waitm.
++	// Used to be a union, but unions break precise GC.
++	uintptr	key;
+ };
+ struct String
+ {
+ 	const byte*	str;
+ 	intgo		len;
+ };
++struct FuncVal
++{
++	void	(*fn)(void);
++	// variable-size, fn-specific data here
++};
+ struct	GCStats
+ {
+ 	// the struct must consist of only uint64's,
+@@ -188,13 +209,12 @@
+ 	uint32	selgen;		// valid sudog pointer
+ 	const char*	waitreason;	// if status==Gwaiting
+ 	G*	schedlink;
+-	bool	readyonstop;
+ 	bool	ispanic;
+-	bool	issystem;
+-	int8	raceignore; // ignore race detection events
++	bool	issystem;	// do not output in stack dump
++	bool	isbackground;	// ignore in deadlock detector
++	bool	blockingsyscall;	// hint that the next syscall will block
+ 	M*	m;		// for debuggers, but offset not hard-coded
+ 	M*	lockedm;
+-	M*	idlem;
+ 	int32	sig;
+ 	int32	writenbuf;
+ 	byte*	writebuf;
+@@ -218,34 +238,45 @@
+ {
+ 	G*	g0;		// goroutine with scheduling stack
+ 	G*	gsignal;	// signal-handling G
++	byte*	gsignalstack;
++	size_t	gsignalstacksize;
++	void	(*mstartfn)(void);
+ 	G*	curg;		// current running goroutine
++	P*	p;		// attached P for executing Go code (nil if not executing Go code)
++	P*	nextp;
+ 	int32	id;
+ 	int32	mallocing;
+ 	int32	throwing;
+ 	int32	gcing;
+ 	int32	locks;
+ 	int32	nomemprof;
+-	int32	waitnextg;
+ 	int32	dying;
+ 	int32	profilehz;
+ 	int32	helpgc;
++	bool	blockingsyscall;
++	bool	spinning;
+ 	uint32	fastrand;
+ 	uint64	ncgocall;	// number of cgo calls in total
+-	Note	havenextg;
+-	G*	nextg;
++	int32	ncgo;		// number of cgo calls currently in progress
++	CgoMal*	cgomal;
++	Note	park;
+ 	M*	alllink;	// on allm
+ 	M*	schedlink;
+ 	MCache	*mcache;
+ 	G*	lockedg;
+-	G*	idleg;
+ 	Location createstack[32];	// Stack that created this thread.
++	uint32	locked;	// tracking for LockOSThread
+ 	M*	nextwaitm;	// next M waiting for lock
+ 	uintptr	waitsema;	// semaphore for parking on locks
+ 	uint32	waitsemacount;
+ 	uint32	waitsemalock;
+ 	GCStats	gcstats;
+ 	bool	racecall;
++	bool	needextram;
++	bool	dropextram;	// for gccgo: drop after call is done.
+ 	void*	racepc;
++	void	(*waitunlockf)(Lock*);
++	void*	waitlock;
+ 
+ 	uintptr	settype_buf[1024];
+ 	uintptr	settype_bufsize;
+@@ -253,6 +284,38 @@
+ 	uintptr	end[];
+ };
+ 
++struct P
++{
++	Lock;
++
++	uint32	status;  // one of Pidle/Prunning/...
++	P*	link;
++	uint32	tick;   // incremented on every scheduler or system call
++	M*	m;	// back-link to associated M (nil if idle)
++	MCache*	mcache;
++
++	// Queue of runnable goroutines.
++	G**	runq;
++	int32	runqhead;
++	int32	runqtail;
++	int32	runqsize;
++
++	// Available G's (status == Gdead)
++	G*	gfree;
++	int32	gfreecnt;
++
++	byte	pad[64];
++};
++
++// The m->locked word holds a single bit saying whether
++// external calls to LockOSThread are in effect, and then a counter
++// of the internal nesting depth of lockOSThread / unlockOSThread.
++enum
++{
++	LockExternal = 1,
++	LockInternal = 2,
++};
++
+ struct	SigTab
+ {
+ 	int32	sig;
+@@ -265,6 +328,8 @@
+ 	SigThrow = 1<<2,	// if signal.Notify doesn't take it, exit loudly
+ 	SigPanic = 1<<3,	// if the signal is from the kernel, panic
+ 	SigDefault = 1<<4,	// if the signal isn't explicitly requested, don't monitor it
++	SigHandling = 1<<5,	// our signal handler is registered
++	SigIgnored = 1<<6,	// the signal was ignored before we registered for it
+ };
+ 
+ #ifndef NSIG
+@@ -313,7 +378,7 @@
+ 	// a well-behaved function and not block.
+ 	int64	when;
+ 	int64	period;
+-	void	(*f)(int64, Eface);
++	FuncVal	*fv;
+ 	Eface	arg;
+ };
+ 
+@@ -337,6 +402,7 @@
+ 	bool wait;			// if true, wait while all threads finish processing,
+ 					// otherwise parfor may return while other threads are still working
+ 	ParForThread *thr;		// array of thread descriptors
++	uint32 pad;			// to align ParForThread.pos for 64-bit atomic operations
+ 	// stats
+ 	uint64 nsteal;
+ 	uint64 nstealcnt;
+@@ -350,7 +416,7 @@
+ struct CgoMal
+ {
+ 	CgoMal	*next;
+-	byte	*alloc;
++	void	*alloc;
+ };
+ 
+ /*
+@@ -363,6 +429,19 @@
+ #define USED(v)		((void) v)
+ #define	ROUND(x, n)	(((x)+(n)-1)&~((n)-1)) /* all-caps to mark as macro: it evaluates n twice */
+ 
++byte*	runtime_startup_random_data;
++uint32	runtime_startup_random_data_len;
++void	runtime_get_random_data(byte**, int32*);
++
++enum {
++	// hashinit wants this many random bytes
++	HashRandomBytes = 32
++};
++void	runtime_hashinit(void);
++
++void	runtime_traceback();
++void	runtime_tracebackothers(G*);
++
+ /*
+  * external data
+  */
+@@ -370,21 +449,28 @@
+ extern	G*	runtime_allg;
+ extern	G*	runtime_lastg;
+ extern	M*	runtime_allm;
++extern	P**	runtime_allp;
+ extern	int32	runtime_gomaxprocs;
++extern	uint32	runtime_needextram;
+ extern	bool	runtime_singleproc;
+ extern	uint32	runtime_panicking;
+-extern	int32	runtime_gcwaiting;		// gc is waiting to run
++extern	uint32	runtime_gcwaiting;		// gc is waiting to run
++extern	int8*	runtime_goos;
+ extern	int32	runtime_ncpu;
++extern 	void	(*runtime_sysargs)(int32, uint8**);
+ 
+ /*
+  * common functions and data
+  */
++#define runtime_strcmp(s1, s2) __builtin_strcmp((s1), (s2))
++#define runtime_strstr(s1, s2) __builtin_strstr((s1), (s2))
+ intgo	runtime_findnull(const byte*);
+ void	runtime_dump(byte*, int32);
+ 
+ /*
+  * very low level c-called
+  */
++struct __go_func_type;
+ void	runtime_args(int32, byte**);
+ void	runtime_osinit();
+ void	runtime_goargs(void);
+@@ -394,42 +480,100 @@
+ void	runtime_panicstring(const char*) __attribute__ ((noreturn));
+ void	runtime_prints(const char*);
+ void	runtime_printf(const char*, ...);
++#define runtime_mcmp(a, b, s) __builtin_memcmp((a), (b), (s))
++#define runtime_memmove(a, b, s) __builtin_memmove((a), (b), (s))
+ void*	runtime_mal(uintptr);
++String	runtime_gostring(const byte*);
++String	runtime_gostringnocopy(const byte*);
+ void	runtime_schedinit(void);
+ void	runtime_initsig(void);
+ void	runtime_sigenable(uint32 sig);
+-int32	runtime_gotraceback(void);
++void	runtime_sigdisable(uint32 sig);
++int32	runtime_gotraceback(bool *crash);
+ void	runtime_goroutineheader(G*);
+ void	runtime_goroutinetrailer(G*);
+-void	runtime_traceback();
+-void	runtime_tracebackothers(G*);
+ void	runtime_printtrace(Location*, int32, bool);
+-String	runtime_gostring(const byte*);
+-String	runtime_gostringnocopy(const byte*);
++#define runtime_open(p, f, m) open((p), (f), (m))
++#define runtime_read(d, v, n) read((d), (v), (n))
++#define runtime_write(d, v, n) write((d), (v), (n))
++#define runtime_close(d) close(d)
++#define runtime_cas(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
++#define runtime_cas64(pval, pold, new) __atomic_compare_exchange_n (pval, pold, new, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
++#define runtime_casp(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
++// Don't confuse with XADD x86 instruction,
++// this one is actually 'addx', that is, add-and-fetch.
++#define runtime_xadd(p, v) __sync_add_and_fetch (p, v)
++#define runtime_xadd64(p, v) __sync_add_and_fetch (p, v)
++#define runtime_xchg(p, v) __atomic_exchange_n (p, v, __ATOMIC_SEQ_CST)
++#define runtime_xchg64(p, v) __atomic_exchange_n (p, v, __ATOMIC_SEQ_CST)
++#define runtime_atomicload(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
++#define runtime_atomicstore(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
++#define runtime_atomicstore64(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
++#define runtime_atomicload64(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
++#define runtime_atomicloadp(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
++#define runtime_atomicstorep(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
++void	runtime_ready(G*);
++const byte*	runtime_getenv(const char*);
++int32	runtime_atoi(const byte*);
+ void*	runtime_mstart(void*);
+ G*	runtime_malg(int32, byte**, size_t*);
++void	runtime_mpreinit(M*);
+ void	runtime_minit(void);
++void	runtime_unminit(void);
++void	runtime_needm(void);
++void	runtime_dropm(void);
++void	runtime_signalstack(byte*, int32);
++MCache*	runtime_allocmcache(void);
++void	runtime_freemcache(MCache*);
+ void	runtime_mallocinit(void);
++void	runtime_mprofinit(void);
++#define runtime_malloc(s) __go_alloc(s)
++#define runtime_free(p) __go_free(p)
++bool	runtime_addfinalizer(void*, FuncVal *fn, const struct __go_func_type *);
++#define runtime_getcallersp(p) __builtin_frame_address(1)
++int32	runtime_mcount(void);
++int32	runtime_gcount(void);
++uint32	runtime_fastrand1(void);
++
++void runtime_setmg(M*, G*);
++void runtime_newextram(void);
++#define runtime_exit(s) exit(s)
++#define runtime_breakpoint() __builtin_trap()
+ void	runtime_gosched(void);
+ void	runtime_park(void(*)(Lock*), Lock*, const char*);
+ void	runtime_tsleep(int64, const char*);
+ M*	runtime_newm(void);
+ void	runtime_goexit(void);
+ void	runtime_entersyscall(void) __asm__ (GOSYM_PREFIX "syscall.Entersyscall");
++void	runtime_entersyscallblock(void);
+ void	runtime_exitsyscall(void) __asm__ (GOSYM_PREFIX "syscall.Exitsyscall");
++G*	__go_go(void (*pfn)(void*), void*);
+ void	siginit(void);
+ bool	__go_sigsend(int32 sig);
+ int32	runtime_callers(int32, Location*, int32);
+ int64	runtime_nanotime(void);
++void	runtime_dopanic(int32) __attribute__ ((noreturn));
++void	runtime_startpanic(void);
++void	runtime_sigprof();
++void	runtime_resetcpuprofiler(int32);
++void	runtime_setcpuprofilerate(void(*)(uintptr*, int32), int32);
++void	runtime_usleep(uint32);
+ int64	runtime_cputicks(void);
+ int64	runtime_tickspersecond(void);
+ void	runtime_blockevent(int64, int32);
+ extern int64 runtime_blockprofilerate;
++void	runtime_addtimer(Timer*);
++bool	runtime_deltimer(Timer*);
++G*	runtime_netpoll(bool);
++void	runtime_netpollinit(void);
++int32	runtime_netpollopen(int32, PollDesc*);
++int32   runtime_netpollclose(int32);
++void	runtime_netpollready(G**, PollDesc*, int32);
++void	runtime_crash(void);
+ 
+ void	runtime_stoptheworld(void);
+ void	runtime_starttheworld(void);
+ extern uint32 runtime_worldsema;
+-G*	__go_go(void (*pfn)(void*), void*);
+ 
+ /*
+  * mutual exclusion locks.  in the uncontended case,
+@@ -527,6 +671,7 @@
+  * runtime go-called
+  */
+ void	runtime_printbool(_Bool);
++void	runtime_printbyte(int8);
+ void	runtime_printfloat(double);
+ void	runtime_printint(int64);
+ void	runtime_printiface(Iface);
+@@ -538,53 +683,10 @@
+ void	runtime_printhex(uint64);
+ void	runtime_printslice(Slice);
+ void	runtime_printcomplex(__complex double);
+-
+-struct __go_func_type;
+-void reflect_call(const struct __go_func_type *, const void *, _Bool, _Bool,
++void reflect_call(const struct __go_func_type *, FuncVal *, _Bool, _Bool,
+ 		  void **, void **)
+   __asm__ (GOSYM_PREFIX "reflect.call");
+-
+-/* Functions.  */
+ #define runtime_panic __go_panic
+-#define runtime_write(d, v, n) write((d), (v), (n))
+-#define runtime_malloc(s) __go_alloc(s)
+-#define runtime_free(p) __go_free(p)
+-#define runtime_strcmp(s1, s2) __builtin_strcmp((s1), (s2))
+-#define runtime_mcmp(a, b, s) __builtin_memcmp((a), (b), (s))
+-#define runtime_memmove(a, b, s) __builtin_memmove((a), (b), (s))
+-#define runtime_exit(s) exit(s)
+-MCache*	runtime_allocmcache(void);
+-void	free(void *v);
+-#define runtime_cas(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
+-#define runtime_casp(pval, old, new) __sync_bool_compare_and_swap (pval, old, new)
+-#define runtime_cas64(pval, pold, new) __atomic_compare_exchange_n (pval, pold, new, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
+-#define runtime_xadd(p, v) __sync_add_and_fetch (p, v)
+-#define runtime_xadd64(p, v) __sync_add_and_fetch (p, v)
+-#define runtime_xchg(p, v) __atomic_exchange_n (p, v, __ATOMIC_SEQ_CST)
+-#define runtime_atomicload(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
+-#define runtime_atomicstore(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
+-#define runtime_atomicloadp(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
+-#define runtime_atomicstorep(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
+-#define runtime_atomicload64(p) __atomic_load_n (p, __ATOMIC_SEQ_CST)
+-#define runtime_atomicstore64(p, v) __atomic_store_n (p, v, __ATOMIC_SEQ_CST)
+-#define PREFETCH(p) __builtin_prefetch(p)
+-
+-struct __go_func_type;
+-bool	runtime_addfinalizer(void*, void(*fn)(void*), const struct __go_func_type *);
+-#define runtime_getcallersp(p) __builtin_frame_address(1)
+-int32	runtime_mcount(void);
+-int32	runtime_gcount(void);
+-void	runtime_dopanic(int32) __attribute__ ((noreturn));
+-void	runtime_startpanic(void);
+-void	runtime_ready(G*);
+-const byte*	runtime_getenv(const char*);
+-int32	runtime_atoi(const byte*);
+-uint32	runtime_fastrand1(void);
+-
+-void	runtime_sigprof();
+-void	runtime_resetcpuprofiler(int32);
+-void	runtime_setcpuprofilerate(void(*)(uintptr*, int32), int32);
+-void	runtime_usleep(uint32);
+ 
+ /*
+  * runtime c-called (but written in Go)
+@@ -599,14 +701,13 @@
+ /*
+  * wrapped for go users
+  */
+-#define ISNAN(f) __builtin_isnan(f)
+ void	runtime_semacquire(uint32 volatile *);
+ void	runtime_semrelease(uint32 volatile *);
+ int32	runtime_gomaxprocsfunc(int32 n);
+ void	runtime_procyield(uint32);
+ void	runtime_osyield(void);
+-void	runtime_LockOSThread(void) __asm__ (GOSYM_PREFIX "runtime.LockOSThread");
+-void	runtime_UnlockOSThread(void) __asm__ (GOSYM_PREFIX "runtime.UnlockOSThread");
++void	runtime_lockOSThread(void);
++void	runtime_unlockOSThread(void);
+ 
+ bool	runtime_showframe(String, bool);
+ 
+@@ -622,12 +723,13 @@
+ // This is a no-op on other systems.
+ void	runtime_setprof(bool);
+ 
++#define ISNAN(f) __builtin_isnan(f)
++
+ enum
+ {
+-	UseSpanType = 1,
++	UseSpanType = 0,
+ };
+ 
+-void	runtime_setsig(int32, bool, bool);
+ #define runtime_setitimer setitimer
+ 
+ void	runtime_check(void);
+@@ -652,5 +754,8 @@
+ extern struct backtrace_state *__go_get_backtrace_state(void);
+ extern _Bool __go_file_line(uintptr, String*, String*, intgo *);
+ extern byte* runtime_progname();
++extern void runtime_main(void*);
+ 
+ int32 getproccount(void);
++
++#define PREFETCH(p) __builtin_prefetch(p)
+diff -Naur gcc-4.8.1.orig/libgo/runtime/sema.goc gcc-4.8.1/libgo/runtime/sema.goc
+--- gcc-4.8.1.orig/libgo/runtime/sema.goc	2012-10-22 23:31:11.000000000 -0500
++++ gcc-4.8.1/libgo/runtime/sema.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -44,12 +44,12 @@
+ // Prime to not correlate with any user patterns.
+ #define SEMTABLESZ 251
+ 
+-union semtable
++struct semtable
+ {
+ 	SemaRoot;
+-	uint8 pad[CacheLineSize];
++	uint8 pad[CacheLineSize-sizeof(SemaRoot)];
+ };
+-static union semtable semtable[SEMTABLESZ];
++static struct semtable semtable[SEMTABLESZ];
+ 
+ static SemaRoot*
+ semroot(uint32 volatile *addr)
+diff -Naur gcc-4.8.1.orig/libgo/runtime/signal_unix.c gcc-4.8.1/libgo/runtime/signal_unix.c
+--- gcc-4.8.1.orig/libgo/runtime/signal_unix.c	2012-03-02 10:38:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/signal_unix.c	2013-07-16 01:55:04.520470000 -0500
+@@ -8,6 +8,7 @@
+ 
+ #include "runtime.h"
+ #include "defs.h"
++#include "signal_unix.h"
+ 
+ extern SigTab runtime_sigtab[];
+ 
+@@ -22,7 +23,21 @@
+ 		t = &runtime_sigtab[i];
+ 		if((t->flags == 0) || (t->flags & SigDefault))
+ 			continue;
+-		runtime_setsig(i, false, true);
++
++		// For some signals, we respect an inherited SIG_IGN handler
++		// rather than insist on installing our own default handler.
++		// Even these signals can be fetched using the os/signal package.
++		switch(t->sig) {
++		case SIGHUP:
++		case SIGINT:
++			if(runtime_getsig(i) == GO_SIG_IGN) {
++				t->flags = SigNotify | SigIgnored;
++				continue;
++			}
++		}
++
++		t->flags |= SigHandling;
++		runtime_setsig(i, runtime_sighandler, true);
+ 	}
+ }
+ 
+@@ -32,16 +47,49 @@
+ 	int32 i;
+ 	SigTab *t;
+ 
++	t = nil;
+ 	for(i = 0; runtime_sigtab[i].sig != -1; i++) {
+-		// ~0 means all signals.
+-		if(~sig == 0 || runtime_sigtab[i].sig == (int32)sig) {
++		if(runtime_sigtab[i].sig == (int32)sig) {
+ 			t = &runtime_sigtab[i];
+-			if(t->flags & SigDefault) {
+-				runtime_setsig(i, false, true);
+-				t->flags &= ~SigDefault;  // make this idempotent
+-			}
++			break;
++		}
++	}
++
++	if(t == nil)
++		return;
++
++	if((t->flags & SigNotify) && !(t->flags & SigHandling)) {
++		t->flags |= SigHandling;
++		if(runtime_getsig(i) == GO_SIG_IGN)
++			t->flags |= SigIgnored;
++		runtime_setsig(i, runtime_sighandler, true);
++	}
++}
++
++void
++runtime_sigdisable(uint32 sig)
++{
++	int32 i;
++	SigTab *t;
++
++	t = nil;
++	for(i = 0; runtime_sigtab[i].sig != -1; i++) {
++		if(runtime_sigtab[i].sig == (int32)sig) {
++			t = &runtime_sigtab[i];
++			break;
+ 		}
+ 	}
++
++	if(t == nil)
++		return;
++
++	if((t->flags & SigNotify) && (t->flags & SigHandling)) {
++		t->flags &= ~SigHandling;
++		if(t->flags & SigIgnored)
++			runtime_setsig(i, GO_SIG_IGN, true);
++		else
++			runtime_setsig(i, GO_SIG_DFL, true);
++	}
+ }
+ 
+ void
+@@ -62,3 +110,44 @@
+ 	}
+ 	runtime_m()->profilehz = hz;
+ }
++
++void
++os_sigpipe(void)
++{
++	int32 i;
++
++	for(i = 0; runtime_sigtab[i].sig != -1; i++)
++		if(runtime_sigtab[i].sig == SIGPIPE)
++			break;
++	runtime_setsig(i, GO_SIG_DFL, false);
++	runtime_raise(SIGPIPE);
++}
++
++void
++runtime_crash(void)
++{
++	int32 i;
++
++#ifdef GOOS_darwin
++	// OS X core dumps are linear dumps of the mapped memory,
++	// from the first virtual byte to the last, with zeros in the gaps.
++	// Because of the way we arrange the address space on 64-bit systems,
++	// this means the OS X core file will be >128 GB and even on a zippy
++	// workstation can take OS X well over an hour to write (uninterruptible).
++	// Save users from making that mistake.
++	if(sizeof(void*) == 8)
++		return;
++#endif
++
++	for(i = 0; runtime_sigtab[i].sig != -1; i++)
++		if(runtime_sigtab[i].sig == SIGABRT)
++			break;
++	runtime_setsig(i, GO_SIG_DFL, false);
++	runtime_raise(SIGABRT);
++}
++
++void
++runtime_raise(int32 sig)
++{
++	raise(sig);
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/signal_unix.h gcc-4.8.1/libgo/runtime/signal_unix.h
+--- gcc-4.8.1.orig/libgo/runtime/signal_unix.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/signal_unix.h	2013-07-16 01:55:04.520470000 -0500
+@@ -0,0 +1,22 @@
++// Copyright 2013 The Go Authors.  All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++#include <signal.h>
++
++#define GO_SIG_DFL ((void*)SIG_DFL)
++#define GO_SIG_IGN ((void*)SIG_IGN)
++
++#ifdef SA_SIGINFO
++typedef siginfo_t Siginfo;
++#else
++typedef void *Siginfo;
++#endif
++
++typedef void GoSighandler(int32, Siginfo*, void*, G*);
++void	runtime_setsig(int32, GoSighandler*, bool);
++GoSighandler* runtime_getsig(int32);
++
++void	runtime_sighandler(int32 sig, Siginfo *info, void *context, G *gp);
++void	runtime_raise(int32);
++
+diff -Naur gcc-4.8.1.orig/libgo/runtime/sigqueue.goc gcc-4.8.1/libgo/runtime/sigqueue.goc
+--- gcc-4.8.1.orig/libgo/runtime/sigqueue.goc	2013-01-29 14:52:43.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/sigqueue.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -107,7 +107,7 @@
+ 				new = HASWAITER;
+ 			if(runtime_cas(&sig.state, old, new)) {
+ 				if (new == HASWAITER) {
+-					runtime_entersyscall();
++					runtime_entersyscallblock();
+ 					runtime_notesleep(&sig);
+ 					runtime_exitsyscall();
+ 					runtime_noteclear(&sig);
+@@ -135,8 +135,6 @@
+ 
+ // Must only be called from a single goroutine at a time.
+ func signal_enable(s uint32) {
+-	int32 i;
+-
+ 	if(!sig.inuse) {
+ 		// The first call to signal_enable is for us
+ 		// to use for initialization.  It does not pass
+@@ -146,16 +144,16 @@
+ 		return;
+ 	}
+ 	
+-	if(~s == 0) {
+-		// Special case: want everything.
+-		for(i=0; (size_t)i<nelem(sig.wanted); i++)
+-			sig.wanted[i] = ~(uint32)0;
+-		runtime_sigenable(s);
+-		return;
+-	}
+-
+ 	if(s >= nelem(sig.wanted)*32)
+ 		return;
+ 	sig.wanted[s/32] |= 1U<<(s&31);
+ 	runtime_sigenable(s);
+ }
++
++// Must only be called from a single goroutine at a time.
++func signal_disable(s uint32) {
++	if(s >= nelem(sig.wanted)*32)
++		return;
++	sig.wanted[s/32] &= ~(1U<<(s&31));
++	runtime_sigdisable(s);
++}
+diff -Naur gcc-4.8.1.orig/libgo/runtime/string.goc gcc-4.8.1/libgo/runtime/string.goc
+--- gcc-4.8.1.orig/libgo/runtime/string.goc	2013-01-30 16:24:40.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/string.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -7,6 +7,7 @@
+ #include "arch.h"
+ #include "malloc.h"
+ #include "go-string.h"
++#include "race.h"
+ 
+ #define charntorune(pv, str, len) __go_get_rune(str, len, pv)
+ 
+diff -Naur gcc-4.8.1.orig/libgo/runtime/thread.c gcc-4.8.1/libgo/runtime/thread.c
+--- gcc-4.8.1.orig/libgo/runtime/thread.c	2012-03-06 11:57:23.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/thread.c	2013-07-16 01:55:04.520470000 -0500
+@@ -133,27 +133,6 @@
+ 
+ #endif
+ 
+-// Called to initialize a new m (including the bootstrap m).
+-void
+-runtime_minit(void)
+-{
+-	byte* stack;
+-	size_t stacksize;
+-	stack_t ss;
+-	sigset_t sigs;
+-
+-	// Initialize signal handling.
+-	runtime_m()->gsignal = runtime_malg(32*1024, &stack, &stacksize);	// OS X wants >=8K, Linux >=2K
+-	ss.ss_sp = stack;
+-	ss.ss_flags = 0;
+-	ss.ss_size = stacksize;
+-	if(sigaltstack(&ss, nil) < 0)
+-		*(int *)0xf1 = 0xf1;
+-	if (sigemptyset(&sigs) != 0)
+-		runtime_throw("sigemptyset");
+-	sigprocmask(SIG_SETMASK, &sigs, nil);
+-}
+-
+ uintptr
+ runtime_memlimit(void)
+ {
+diff -Naur gcc-4.8.1.orig/libgo/runtime/time.goc gcc-4.8.1/libgo/runtime/time.goc
+--- gcc-4.8.1.orig/libgo/runtime/time.goc	2013-01-29 19:37:13.000000000 -0600
++++ gcc-4.8.1/libgo/runtime/time.goc	2013-07-16 01:55:04.520470000 -0500
+@@ -14,7 +14,6 @@
+ 
+ static Timers timers;
+ static void addtimer(Timer*);
+-static bool deltimer(Timer*);
+ 
+ // Package time APIs.
+ // Godoc uses the comments in package time, not these.
+@@ -30,15 +29,13 @@
+ func startTimer(t *Timer) {
+ 	if(raceenabled)
+ 		runtime_racerelease(t);
+-	runtime_lock(&timers);
+-	addtimer(t);
+-	runtime_unlock(&timers);
++	runtime_addtimer(t);
+ }
+ 
+ // stopTimer removes t from the timer heap if it is there.
+ // It returns true if t was removed, false if t wasn't even there.
+ func stopTimer(t *Timer) (stopped bool) {
+-	stopped = deltimer(t);
++	stopped = runtime_deltimer(t);
+ }
+ 
+ // C runtime.
+@@ -49,13 +46,16 @@
+ 
+ // Ready the goroutine e.data.
+ static void
+-ready(int64 now, Eface e)
++ready(int64 now, Eface e, void *closure)
+ {
+ 	USED(now);
++	USED(closure);
+ 
+ 	runtime_ready(e.__object);
+ }
+ 
++static FuncVal readyv = {(void(*)(void))ready};
++
+ // Put the current goroutine to sleep for ns nanoseconds.
+ void
+ runtime_tsleep(int64 ns, const char *reason)
+@@ -70,13 +70,21 @@
+ 
+ 	t.when = runtime_nanotime() + ns;
+ 	t.period = 0;
+-	t.f = ready;
++	t.fv = &readyv;
+ 	t.arg.__object = g;
+ 	runtime_lock(&timers);
+ 	addtimer(&t);
+ 	runtime_park(runtime_unlock, &timers, reason);
+ }
+ 
++void
++runtime_addtimer(Timer *t)
++{
++	runtime_lock(&timers);
++	addtimer(t);
++	runtime_unlock(&timers);
++}
++
+ // Add a timer to the heap and start or kick the timer proc
+ // if the new timer is earlier than any of the others.
+ static void
+@@ -119,8 +127,8 @@
+ // Delete timer t from the heap.
+ // Do not need to update the timerproc:
+ // if it wakes up early, no big deal.
+-static bool
+-deltimer(Timer *t)
++bool
++runtime_deltimer(Timer *t)
+ {
+ 	int32 i;
+ 
+@@ -158,7 +166,7 @@
+ {
+ 	int64 delta, now;
+ 	Timer *t;
+-	void (*f)(int64, Eface);
++	void (*f)(int64, Eface, void *);
+ 	Eface arg;
+ 
+ 	for(;;) {
+@@ -184,12 +192,12 @@
+ 				siftdown(0);
+ 				t->i = -1;  // mark as removed
+ 			}
+-			f = t->f;
++			f = (void*)t->fv->fn;
+ 			arg = t->arg;
+ 			runtime_unlock(&timers);
+ 			if(raceenabled)
+ 				runtime_raceacquire(t);
+-			f(now, arg);
++			f(now, arg, &t->fv);
+ 			runtime_lock(&timers);
+ 		}
+ 		if(delta < 0) {
+@@ -202,7 +210,7 @@
+ 		timers.sleeping = true;
+ 		runtime_noteclear(&timers.waitnote);
+ 		runtime_unlock(&timers);
+-		runtime_entersyscall();
++		runtime_entersyscallblock();
+ 		runtime_notetsleep(&timers.waitnote, delta);
+ 		runtime_exitsyscall();
+ 	}
+diff -Naur gcc-4.8.1.orig/libitm/acinclude.m4 gcc-4.8.1/libitm/acinclude.m4
+--- gcc-4.8.1.orig/libitm/acinclude.m4	2012-10-30 23:46:20.000000000 -0500
++++ gcc-4.8.1/libitm/acinclude.m4	2013-08-02 10:41:10.548493000 -0500
+@@ -121,6 +121,17 @@
+     AC_DEFINE(HAVE_AS_RTM, 1, [Define to 1 if the assembler supports RTM.])
+   fi
+   ;;
++s390*)
++  AC_CACHE_CHECK([if the assembler supports HTM], libitm_cv_as_htm, [
++    save_CFLAGS="$CFLAGS"
++    CFLAGS="$CFLAGS -march=zEC12"
++    AC_TRY_COMPILE([], [asm("tbegin 0,0; tend");],
++		   [libitm_cv_as_htm=yes], [libitm_cv_as_htm=no])
++    CFLAGS="$save_CFLAGS"])
++  if test x$libitm_cv_as_htm = xyes; then
++    AC_DEFINE(HAVE_AS_HTM, 1, [Define to 1 if the assembler supports HTM.])
++  fi
++  ;;
+ esac])
+ 
+ sinclude(../libtool.m4)
+diff -Naur gcc-4.8.1.orig/libitm/config/s390/sjlj.S gcc-4.8.1/libitm/config/s390/sjlj.S
+--- gcc-4.8.1.orig/libitm/config/s390/sjlj.S	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libitm/config/s390/sjlj.S	2013-08-14 14:04:44.393213000 -0500
+@@ -0,0 +1,108 @@
++/* Copyright (C) 2013 Free Software Foundation, Inc.
++   Contributed by Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++
++   This file is part of the GNU Transactional Memory Library (libitm).
++
++   Libitm 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 3 of the License, or
++   (at your option) any later version.
++
++   Libitm 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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++
++#include "asmcfi.h"
++
++.text
++	.align 4
++.globl	_ITM_beginTransaction
++	.type _ITM_beginTransaction, @function
++
++	/* _ITM_beginTransaction (int props); props -> r2 */
++_ITM_beginTransaction:
++	cfi_startproc
++#ifdef __s390x__
++	lgr	%r3,%r15	/* backup stack pointer */
++	aghi	%r15,-304	/* jump buffer (144) + reg save area (160) */
++	cfi_adjust_cfa_offset(304)
++	stmg	%r6,%r14,160(%r15)
++	stg	%r3,72+160(%r15) /* store the old stack pointer */
++	std	%f8,80+160(%r15)
++	std	%f9,88+160(%r15)
++	std	%f10,96+160(%r15)
++	std	%f11,104+160(%r15)
++	std	%f12,112+160(%r15)
++	std	%f13,120+160(%r15)
++	std	%f14,128+160(%r15)
++	std	%f15,136+160(%r15)
++	la	%r3,160(%r15)	/* second argument to GTM_begin_transaction */
++	brasl	%r14,GTM_begin_transaction
++	lg	%r1,64+160(%r15)
++	aghi	%r15,304
++	cfi_adjust_cfa_offset(-304)
++	br	%r1
++#else
++	lr	%r3,%r15	/* backup stack pointer */
++	ahi	%r15,-152	/* jump buffer (56) + reg save area (96) */
++	cfi_adjust_cfa_offset(152)
++	stm	%r6,%r14,96(%r15)
++	st	%r3,36+96(%r15)	/* store the old stack pointer */
++	std	%f4,40+96(%r15)
++	std	%f6,48+96(%r15)
++	la	%r3,96(%r15)	/* second argument to GTM_begin_transaction */
++	/* begin_transaction (uint32_t prop, const gtm_jmpbuf *jb) */
++	brasl	%r14,GTM_begin_transaction /* requires mzarch */
++	l	%r1,32+96(%r15)
++	ahi	%r15,152
++	cfi_adjust_cfa_offset(-152)
++	br	%r1
++#endif
++	cfi_endproc
++
++	.size _ITM_beginTransaction, .-_ITM_beginTransaction
++
++	.align 4
++.globl	GTM_longjmp
++	.type GTM_longjmp, @function
++	.hidden GTM_longjmp
++
++	/* uint32_t GTM_longjmp (uint32_t, const gtm_jmpbuf *, uint32_t) */
++GTM_longjmp:
++	/* First parameter becomes the return value of
++	   _ITM_beginTransaction (r2).
++	   Third parameter is ignored for now.  */
++	cfi_startproc
++#ifdef __s390x__
++	ld	%f8,80(%r3)
++	ld	%f9,88(%r3)
++	ld	%f10,96(%r3)
++	ld	%f11,104(%r3)
++	ld	%f12,112(%r3)
++	ld	%f13,120(%r3)
++	ld	%f14,128(%r3)
++	ld	%f15,136(%r3)
++	lmg	%r6,%r15,0(%r3)
++	br	%r14
++#else
++	ld	%f4,40(%r3)
++	ld	%f6,48(%r3)
++	lm	%r6,%r15,0(%r3)
++	br	%r14
++#endif
++	cfi_endproc
++
++	.size GTM_longjmp, .-GTM_longjmp
++
++	.section .note.GNU-stack, "", @progbits
+diff -Naur gcc-4.8.1.orig/libitm/config/s390/target.h gcc-4.8.1/libitm/config/s390/target.h
+--- gcc-4.8.1.orig/libitm/config/s390/target.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libitm/config/s390/target.h	2013-08-14 14:04:44.393213000 -0500
+@@ -0,0 +1,127 @@
++/* Copyright (C) 2013 Free Software Foundation, Inc.
++   Contributed by Andreas Krebbel <krebbel@linux.vnet.ibm.com>.
++
++   This file is part of the GNU Transactional Memory Library (libitm).
++
++   Libitm 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 3 of the License, or
++   (at your option) any later version.
++
++   Libitm 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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#ifdef HAVE_SYS_AUXV_H
++#include <sys/auxv.h>
++#endif
++
++namespace GTM HIDDEN {
++
++#define HW_CACHELINE_SIZE 256
++
++typedef struct gtm_jmpbuf
++{
++  /* We save registers r6-r14.  */
++  long int __gregs[9];
++  /* r15 is stored into cfa field.  It needs to be named that way
++     since tls.h is accessing the field by name.  Be aware that this
++     is not actually what we consider the CFA on s390 (since there is
++     a fix offset between sp and CFA).  It is merely the saved stack
++     pointer.  */
++  void *cfa;
++
++#ifdef __s390x__
++  /* We save fpu registers f8 - f15.  */
++  long __fpregs[8];
++#else
++  /* We save fpu registers f4 and f6.  */
++  long __fpregs[4];
++#endif
++} gtm_jmpbuf;
++
++static inline void
++cpu_relax (void)
++{
++  __asm volatile ("" : : : "memory");
++}
++
++
++// Use HTM if it is supported by the system.
++// See gtm_thread::begin_transaction for how these functions are used.
++#if defined (__linux__) \
++    && defined (HAVE_AS_HTM) \
++    && defined (HAVE_GETAUXVAL) \
++    && defined (HWCAP_S390_TE)
++
++#include <htmintrin.h>
++
++/* Number of retries for transient failures.  */
++#define _HTM_ITM_RETRIES 10
++#define USE_HTM_FASTPATH
++
++static inline bool
++htm_available ()
++{
++  return (getauxval (AT_HWCAP) & HWCAP_S390_TE) ? true : false;
++}
++
++static inline uint32_t
++htm_init ()
++{
++  return htm_available () ? _HTM_ITM_RETRIES : 0;
++}
++
++static inline uint32_t
++htm_begin ()
++{
++  __asm volatile (".machine \"all\"  \n\t");
++  return __builtin_tbegin_nofloat (NULL);
++}
++
++static inline bool
++htm_begin_success (uint32_t begin_ret)
++{
++  return begin_ret == _HTM_TBEGIN_STARTED;
++}
++
++static inline void
++htm_commit ()
++{
++  __asm volatile (".machine \"all\"  \n\t");
++  __builtin_tend ();
++}
++
++static inline void
++htm_abort ()
++{
++  __asm volatile (".machine \"all\"  \n\t");
++  __builtin_tabort (_HTM_FIRST_USER_ABORT_CODE);
++}
++
++static inline bool
++htm_abort_should_retry (uint32_t begin_ret)
++{
++  return begin_ret == _HTM_TBEGIN_TRANSIENT;
++}
++
++static inline bool
++htm_transaction_active ()
++{
++  __asm volatile (".machine \"all\"  \n\t");
++  return __builtin_tx_nesting_depth() != 0;
++}
++
++#endif
++
++} // namespace GTM
+diff -Naur gcc-4.8.1.orig/libitm/config.h.in gcc-4.8.1/libitm/config.h.in
+--- gcc-4.8.1.orig/libitm/config.h.in	2013-05-31 04:09:26.000000000 -0500
++++ gcc-4.8.1/libitm/config.h.in	2013-08-02 10:41:10.548493000 -0500
+@@ -12,6 +12,9 @@
+ /* Define if your assembler supports .cfi_* directives. */
+ #undef HAVE_AS_CFI_PSEUDO_OP
+ 
++/* Define to 1 if the assembler supports HTM. */
++#undef HAVE_AS_HTM
++
+ /* Define to 1 if the assembler supports RTM. */
+ #undef HAVE_AS_RTM
+ 
+@@ -36,6 +39,9 @@
+ /* Define to 1 if target has a weakref that works like the ELF one. */
+ #undef HAVE_ELF_STYLE_WEAKREF
+ 
++/* Define to 1 if you have the `getauxval' function. */
++#undef HAVE_GETAUXVAL
++
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+ 
+@@ -81,6 +87,9 @@
+ /* Define to 1 if the target supports __sync_*_compare_and_swap */
+ #undef HAVE_SYNC_BUILTINS
+ 
++/* Define to 1 if you have the <sys/auxv.h> header file. */
++#undef HAVE_SYS_AUXV_H
++
+ /* Define to 1 if you have the <sys/stat.h> header file. */
+ #undef HAVE_SYS_STAT_H
+ 
+diff -Naur gcc-4.8.1.orig/libitm/configure gcc-4.8.1/libitm/configure
+--- gcc-4.8.1.orig/libitm/configure	2013-05-31 04:09:26.000000000 -0500
++++ gcc-4.8.1/libitm/configure	2013-08-02 10:41:10.548493000 -0500
+@@ -15349,7 +15349,7 @@
+ 
+ fi
+ 
+-for ac_header in unistd.h semaphore.h sys/time.h malloc.h
++for ac_header in unistd.h semaphore.h sys/time.h sys/auxv.h malloc.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+@@ -16184,7 +16184,7 @@
+     conftest$ac_exeext conftest.$ac_ext
+ 
+ # Check for functions needed.
+-for ac_func in strtoull memalign posix_memalign
++for ac_func in strtoull memalign posix_memalign getauxval
+ do :
+   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+@@ -17362,7 +17362,44 @@
+ 
+   fi
+   ;;
++s390*)
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the assembler supports HTM" >&5
++$as_echo_n "checking if the assembler supports HTM... " >&6; }
++if test "${libitm_cv_as_htm+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++
++    save_CFLAGS="$CFLAGS"
++    CFLAGS="$CFLAGS -march=zEC12"
++    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++asm("tbegin 0,0; tend");
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  libitm_cv_as_htm=yes
++else
++  libitm_cv_as_htm=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++    CFLAGS="$save_CFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libitm_cv_as_htm" >&5
++$as_echo "$libitm_cv_as_htm" >&6; }
++  if test x$libitm_cv_as_htm = xyes; then
++
++$as_echo "#define HAVE_AS_HTM 1" >>confdefs.h
++
++  fi
++  ;;
+ esac
++LIBITM_CHECK_AS_HTM
+ 
+ 
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether weak refs work like ELF" >&5
+diff -Naur gcc-4.8.1.orig/libitm/configure.ac gcc-4.8.1/libitm/configure.ac
+--- gcc-4.8.1.orig/libitm/configure.ac	2013-02-03 11:46:11.000000000 -0600
++++ gcc-4.8.1/libitm/configure.ac	2013-08-02 10:41:10.548493000 -0500
+@@ -160,7 +160,7 @@
+ AC_STDC_HEADERS
+ AC_HEADER_TIME
+ ACX_HEADER_STRING
+-AC_CHECK_HEADERS(unistd.h semaphore.h sys/time.h malloc.h)
++AC_CHECK_HEADERS(unistd.h semaphore.h sys/time.h sys/auxv.h malloc.h)
+ 
+ GCC_HEADER_STDINT(gstdint.h)
+ 
+@@ -193,7 +193,7 @@
+    [AC_MSG_ERROR([Pthreads are required to build libitm])])])
+ 
+ # Check for functions needed.
+-AC_CHECK_FUNCS(strtoull memalign posix_memalign)
++AC_CHECK_FUNCS(strtoull memalign posix_memalign getauxval)
+ 
+ # Check for broken semaphore implementation on darwin.
+ # sem_init returns: sem_init error: Function not implemented.
+@@ -245,6 +245,7 @@
+ LIBITM_CHECK_64BIT_SYNC_BUILTINS
+ LIBITM_CHECK_AS_AVX
+ LIBITM_CHECK_AS_RTM
++LIBITM_CHECK_AS_HTM
+ 
+ GCC_CHECK_ELF_STYLE_WEAKREF
+ 
+diff -Naur gcc-4.8.1.orig/libitm/configure.tgt gcc-4.8.1/libitm/configure.tgt
+--- gcc-4.8.1.orig/libitm/configure.tgt	2013-02-03 11:46:11.000000000 -0600
++++ gcc-4.8.1/libitm/configure.tgt	2013-08-14 15:39:49.674614000 -0500
+@@ -105,6 +105,10 @@
+ 	XCFLAGS="${XCFLAGS} -mrtm"
+ 	ARCH=x86
+ 	;;
++  s390|s390x)
++	XCFLAGS="${XCFLAGS} -mzarch -mhtm"
++	ARCH=s390
++	;;
+ 
+   *)
+ 	ARCH="${target_cpu}"
+diff -Naur gcc-4.8.1.orig/libitm/libitm.info gcc-4.8.1/libitm/libitm.info
+--- gcc-4.8.1.orig/libitm/libitm.info	2013-05-31 05:12:52.000000000 -0500
++++ gcc-4.8.1/libitm/libitm.info	1969-12-31 18:00:00.000000000 -0600
+@@ -1,1307 +0,0 @@
+-This is libitm.info, produced by makeinfo version 4.13 from
+-/d/gcc-4.8.1/gcc-4.8.1/libitm/libitm.texi.
+-
+-Copyright (C) 2011-2013 Free Software Foundation, Inc.
+-
+-   Permission is granted to copy, distribute and/or modify this document
+-under the terms of the GNU Free Documentation License, Version 1.2 or
+-any later version published by the Free Software Foundation; with no
+-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+-copy of the license is included in the section entitled "GNU Free
+-Documentation License".
+-
+-INFO-DIR-SECTION GNU Libraries
+-START-INFO-DIR-ENTRY
+-* libitm: (libitm).                    GNU Transactional Memory Library
+-END-INFO-DIR-ENTRY
+-
+-   This manual documents the GNU Transactional Memory Library.
+-
+-   Copyright (C) 2011-2013 Free Software Foundation, Inc.
+-
+-   Permission is granted to copy, distribute and/or modify this document
+-under the terms of the GNU Free Documentation License, Version 1.2 or
+-any later version published by the Free Software Foundation; with no
+-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+-copy of the license is included in the section entitled "GNU Free
+-Documentation License".
+-
+-
+-File: libitm.info,  Node: Top,  Next: Enabling libitm,  Up: (dir)
+-
+-Introduction
+-************
+-
+-This manual documents the usage and internals of libitm, the GNU
+-Transactional Memory Library. It provides transaction support for
+-accesses to a process' memory, enabling easy-to-use synchronization of
+-accesses to shared memory by several threads.
+-
+-* Menu:
+-
+-* Enabling libitm::            How to enable libitm for your applications.
+-* C/C++ Language Constructs for TM::
+-                               Notes on the language-level interface supported
+-                               by gcc.
+-* The libitm ABI::             Notes on the external ABI provided by libitm.
+-* Internals::                  Notes on libitm's internal synchronization.
+-* GNU Free Documentation License::
+-                               How you can copy and share this manual.
+-* Index::                      Index of this documentation.
+-
+-
+-File: libitm.info,  Node: Enabling libitm,  Next: C/C++ Language Constructs for TM,  Prev: Top,  Up: Top
+-
+-1 Enabling libitm
+-*****************
+-
+-To activate support for TM in C/C++, the compile-time flag `-fgnu-tm'
+-must be specified. This enables TM language-level constructs such as
+-transaction statements (e.g., `__transaction_atomic', *note C/C++
+-Language Constructs for TM:: for details).
+-
+-
+-File: libitm.info,  Node: C/C++ Language Constructs for TM,  Next: The libitm ABI,  Prev: Enabling libitm,  Up: Top
+-
+-2 C/C++ Language Constructs for TM
+-**********************************
+-
+-Transactions are supported in C++ and C in the form of transaction
+-statements, transaction expressions, and function transactions. In the
+-following example, both `a' and `b' will be read and the difference
+-will be written to `c', all atomically and isolated from other
+-transactions:
+-
+-     __transaction_atomic { c = a - b; }
+-
+-   Therefore, another thread can use the following code to concurrently
+-update `b' without ever causing `c' to hold a negative value (and
+-without having to use other synchronization constructs such as locks or
+-C++11 atomics):
+-
+-     __transaction_atomic { if (a > b) b++; }
+-
+-   GCC follows the Draft Specification of Transactional Language
+-Constructs for C++ (v1.1)
+-(https://sites.google.com/site/tmforcplusplus/) in its implementation
+-of transactions.
+-
+-   The precise semantics of transactions are defined in terms of the
+-C++11/C11 memory model (see the specification). Roughly, transactions
+-provide synchronization guarantees that are similar to what would be
+-guaranteed when using a single global lock as a guard for all
+-transactions. Note that like other synchronization constructs in C/C++,
+-transactions rely on a data-race-free program (e.g., a nontransactional
+-write that is concurrent with a transactional read to the same memory
+-location is a data race).
+-
+-
+-File: libitm.info,  Node: The libitm ABI,  Next: Internals,  Prev: C/C++ Language Constructs for TM,  Up: Top
+-
+-3 The libitm ABI
+-****************
+-
+-The ABI provided by libitm is basically equal to the Linux variant of
+-Intel's current TM ABI specification document (Revision 1.1, May 6
+-2009) but with the differences listed in this chapter. It would be good
+-if these changes would eventually be merged into a future version of
+-this specification. To ease look-up, the following subsections mirror
+-the structure of this specification.
+-
+-3.1 [No changes] Objectives
+-===========================
+-
+-3.2 [No changes] Non-objectives
+-===============================
+-
+-3.3 Library design principles
+-=============================
+-
+-3.3.1 [No changes] Calling conventions
+---------------------------------------
+-
+-3.3.2 [No changes] TM library algorithms
+-----------------------------------------
+-
+-3.3.3 [No changes] Optimized load and store routines
+-----------------------------------------------------
+-
+-3.3.4 [No changes] Aligned load and store routines
+---------------------------------------------------
+-
+-3.3.5 Data logging functions
+-----------------------------
+-
+-The memory locations accessed with transactional loads and stores and
+-the memory locations whose values are logged must not overlap. This
+-required separation only extends to the scope of the execution of one
+-transaction including all the executions of all nested transactions.
+-
+-   The compiler must be consistent (within the scope of a single
+-transaction) about which memory locations are shared and which are not
+-shared with other threads (i.e., data must be accessed either
+-transactionally or nontransactionally). Otherwise, non-write-through TM
+-algorithms would not work.
+-
+-   For memory locations on the stack, this requirement extends to only
+-the lifetime of the stack frame that the memory location belongs to (or
+-the lifetime of the transaction, whichever is shorter).  Thus, memory
+-that is reused for several stack frames could be target of both data
+-logging and transactional accesses; however, this is harmless because
+-these stack frames' lifetimes will end before the transaction finishes.
+-
+-3.3.6 [No changes] Scatter/gather calls
+----------------------------------------
+-
+-3.3.7 [No changes] Serial and irrevocable mode
+-----------------------------------------------
+-
+-3.3.8 [No changes] Transaction descriptor
+------------------------------------------
+-
+-3.3.9 Store allocation
+-----------------------
+-
+-There is no `getTransaction' function.
+-
+-3.3.10 [No changes] Naming conventions
+---------------------------------------
+-
+-3.3.11 Function pointer encryption
+-----------------------------------
+-
+-Currently, this is not implemented.
+-
+-3.4 Types and macros list
+-=========================
+-
+-`_ITM_codeProperties' has changed, *note Starting a transaction:
+-txn-code-properties.  `_ITM_srcLocation' is not used.
+-
+-3.5 Function list
+-=================
+-
+-3.5.1 Initialization and finalization functions
+------------------------------------------------
+-
+-These functions are not part of the ABI.
+-
+-3.5.2 [No changes] Version checking
+------------------------------------
+-
+-3.5.3 [No changes] Error reporting
+-----------------------------------
+-
+-3.5.4 [No changes] inTransaction call
+--------------------------------------
+-
+-3.5.5 State manipulation functions
+-----------------------------------
+-
+-There is no `getTransaction' function. Transaction identifiers for
+-nested transactions will be ordered but not necessarily sequential
+-(i.e., for a nested transaction's identifier IN and its enclosing
+-transaction's identifier IE, it is guaranteed that IN >= IE).
+-
+-3.5.6 [No changes] Source locations
+------------------------------------
+-
+-3.5.7 Starting a transaction
+-----------------------------
+-
+-3.5.7.1 Transaction code properties
+-...................................
+-
+-The bit `hasNoXMMUpdate' is instead called `hasNoVectorUpdate'.  Iff it
+-is set, vector register save/restore is not necessary for any target
+-machine.
+-
+-   The `hasNoFloatUpdate' bit (`0x0010') is new. Iff it is set, floating
+-point register save/restore is not necessary for any target machine.
+-
+-   `undoLogCode' is not supported and a fatal runtime error will be
+-raised if this bit is set. It is not properly defined in the ABI why
+-barriers other than undo logging are not present; Are they not
+-necessary (e.g., a transaction operating purely on thread-local data)
+-or have they been omitted by the compiler because it thinks that some
+-kind of global synchronization (e.g., serial mode) might perform
+-better? The specification suggests that the latter might be the case,
+-but the former seems to be more useful.
+-
+-   The `readOnly' bit (`0x4000') is new. *TODO* Lexical or dynamic
+-scope?
+-
+-   `hasNoRetry' is not supported. If this bit is not set, but
+-`hasNoAbort' is set, the library can assume that transaction rollback
+-will not be requested.
+-
+-   It would be useful if the absence of externally-triggered rollbacks
+-would be reported for the dynamic scope as well, not just for the
+-lexical scope (`hasNoAbort'). Without this, a library cannot exploit
+-this together with flat nesting.
+-
+-   `exceptionBlock' is not supported because exception blocks are not
+-used.
+-
+-3.5.7.2 [No changes] Windows exception state
+-............................................
+-
+-3.5.7.3 [No changes] Other machine state
+-........................................
+-
+-3.5.7.4 [No changes] Results from beginTransaction
+-..................................................
+-
+-3.5.8 Aborting a transaction
+-----------------------------
+-
+-`_ITM_rollbackTransaction' is not supported. `_ITM_abortTransaction' is
+-supported but the abort reasons `exceptionBlockAbort', `TMConflict',
+-and `userRetry' are not supported. There are no exception blocks in
+-general, so the related cases also do not have to be considered. To
+-encode `__transaction_cancel [[outer]]', compilers must set the new
+-`outerAbort' bit (`0x10') additionally to the `userAbort' bit in the
+-abort reason.
+-
+-3.5.9 Committing a transaction
+-------------------------------
+-
+-The exception handling (EH) scheme is different. The Intel ABI requires
+-the `_ITM_tryCommitTransaction' function that will return even when the
+-commit failed and will have to be matched with calls to either
+-`_ITM_abortTransaction' or `_ITM_commitTransaction'. In contrast, gcc
+-relies on transactional wrappers for the functions of the Exception
+-Handling ABI and on one additional commit function (shown below). This
+-allows the TM to keep track of EH internally and thus it does not have
+-to embed the cleanup of EH state into the existing EH code in the
+-program.  `_ITM_tryCommitTransaction' is not supported.
+-`_ITM_commitTransactionToId' is also not supported because the
+-propagation of thrown exceptions will not bypass commits of nested
+-transactions.
+-
+-     void _ITM_commitTransactionEH(void *exc_ptr) ITM_REGPARM;
+-     void *_ITM_cxa_allocate_exception (size_t);
+-     void _ITM_cxa_throw (void *obj, void *tinfo, void *dest);
+-     void *_ITM_cxa_begin_catch (void *exc_ptr);
+-     void _ITM_cxa_end_catch (void);
+-
+-   `_ITM_commitTransactionEH' must be called to commit a transaction if
+-an exception could be in flight at this position in the code. `exc_ptr'
+-is the current exception or zero if there is no current exception.  The
+-`_ITM_cxa...' functions are transactional wrappers for the respective
+-`__cxa...' functions and must be called instead of these in
+-transactional code.
+-
+-   To support this EH scheme, libstdc++ needs to provide one additional
+-function (`_cxa_tm_cleanup'), which is used by the TM to clean up the
+-exception handling state while rolling back a transaction:
+-
+-     void __cxa_tm_cleanup (void *unthrown_obj, void *cleanup_exc,
+-                            unsigned int caught_count);
+-
+-   `unthrown_obj' is non-null if the program called
+-`__cxa_allocate_exception' for this exception but did not yet called
+-`__cxa_throw' for it. `cleanup_exc' is non-null if the program is
+-currently processing a cleanup along an exception path but has not
+-caught this exception yet. `caught_count' is the nesting depth of
+-`__cxa_begin_catch' within the transaction (which can be counted by the
+-TM using `_ITM_cxa_begin_catch' and `_ITM_cxa_end_catch');
+-`__cxa_tm_cleanup' then performs rollback by essentially performing
+-`__cxa_end_catch' that many times.
+-
+-3.5.10 Exception handling support
+----------------------------------
+-
+-Currently, there is no support for functionality like
+-`__transaction_cancel throw' as described in the C++ TM specification.
+-Supporting this should be possible with the EH scheme explained
+-previously because via the transactional wrappers for the EH ABI, the
+-TM is able to observe and intercept EH.
+-
+-3.5.11 [No changes] Transition to serial-irrevocable mode
+----------------------------------------------------------
+-
+-3.5.12 [No changes] Data transfer functions
+--------------------------------------------
+-
+-3.5.13 [No changes] Transactional memory copies
+------------------------------------------------
+-
+-3.5.14 Transactional versions of memmove
+-----------------------------------------
+-
+-If either the source or destination memory region is to be accessed
+-nontransactionally, then source and destination regions must not be
+-overlapping. The respective `_ITM_memmove' functions are still
+-available but a fatal runtime error will be raised if such regions do
+-overlap.  To support this functionality, the ABI would have to specify
+-how the intersection of the regions has to be accessed (i.e.,
+-transactionally or nontransactionally).
+-
+-3.5.15 [No changes] Transactional versions of memset
+-----------------------------------------------------
+-
+-3.5.16 [No changes] Logging functions
+--------------------------------------
+-
+-3.5.17 User-registered commit and undo actions
+-----------------------------------------------
+-
+-Commit actions will get executed in the same order in which the
+-respective calls to `_ITM_addUserCommitAction' happened. Only
+-`_ITM_noTransactionId' is allowed as value for the
+-`resumingTransactionId' argument. Commit actions get executed after
+-privatization safety has been ensured.
+-
+-   Undo actions will get executed in reverse order compared to the
+-order in which the respective calls to `_ITM_addUserUndoAction'
+-happened. The ordering of undo actions w.r.t. the roll-back of other
+-actions (e.g., data transfers or memory allocations) is undefined.
+-
+-   `_ITM_getThreadnum' is not supported currently because its only
+-purpose is to provide a thread ID that matches some assumed performance
+-tuning output, but this output is not part of the ABI nor further
+-defined by it.
+-
+-   `_ITM_dropReferences' is not supported currently because its
+-semantics and the intention behind it is not entirely clear. The
+-specification suggests that this function is necessary because of
+-certain orderings of data transfer undos and the releasing of memory
+-regions (i.e., privatization). However, this ordering is never defined,
+-nor is the ordering of dropping references w.r.t. other events.
+-
+-3.5.18 [New] Transactional indirect calls
+------------------------------------------
+-
+-Indirect calls (i.e., calls through a function pointer) within
+-transactions should execute the transactional clone of the original
+-function (i.e., a clone of the original that has been fully
+-instrumented to use the TM runtime), if such a clone is available. The
+-runtime provides two functions to register/deregister clone tables:
+-
+-     struct clone_entry
+-     {
+-       void *orig, *clone;
+-     };
+-
+-     void _ITM_registerTMCloneTable (clone_entry *table, size_t entries);
+-     void _ITM_deregisterTMCloneTable (clone_entry *table);
+-
+-   Registered tables must be writable by the TM runtime, and must be
+-live throughout the life-time of the TM runtime.
+-
+-   *TODO* The intention was always to drop the registration functions
+-entirely, and create a new ELF Phdr describing the linker-sorted table.
+-Much like what currently happens for `PT_GNU_EH_FRAME'.  This work kept
+-getting bogged down in how to represent the N different code generation
+-variants.  We clearly needed at least two--SW and HW transactional
+-clones--but there was always a suggestion of more variants for
+-different TM assumptions/invariants.
+-
+-   The compiler can then use two TM runtime functions to perform
+-indirect calls in transactions:
+-     void *_ITM_getTMCloneOrIrrevocable (void *function) ITM_REGPARM;
+-     void *_ITM_getTMCloneSafe (void *function) ITM_REGPARM;
+-
+-   If there is a registered clone for supplied function, both will
+-return a pointer to the clone. If not, the first runtime function will
+-attempt to switch to serial-irrevocable mode and return the original
+-pointer, whereas the second will raise a fatal runtime error.
+-
+-3.5.19 [New] Transactional dynamic memory management
+-----------------------------------------------------
+-
+-     void *_ITM_malloc (size_t)
+-            __attribute__((__malloc__)) ITM_PURE;
+-     void *_ITM_calloc (size_t, size_t)
+-            __attribute__((__malloc__)) ITM_PURE;
+-     void _ITM_free (void *) ITM_PURE;
+-
+-   These functions are essentially transactional wrappers for `malloc',
+-`calloc', and `free'. Within transactions, the compiler should replace
+-calls to the original functions with calls to the wrapper functions.
+-
+-3.6 [No changes] Future Enhancements to the ABI
+-===============================================
+-
+-3.7 Sample code
+-===============
+-
+-The code examples might not be correct w.r.t. the current version of
+-the ABI, especially everything related to exception handling.
+-
+-3.8 [New] Memory model
+-======================
+-
+-The ABI should define a memory model and the ordering that is
+-guaranteed for data transfers and commit/undo actions, or at least
+-refer to another memory model that needs to be preserved. Without that,
+-the compiler cannot ensure the memory model specified on the level of
+-the programming language (e.g., by the C++ TM specification).
+-
+-   For example, if a transactional load is ordered before another
+-load/store, then the TM runtime must also ensure this ordering when
+-accessing shared state. If not, this might break the kind of
+-publication safety used in the C++ TM specification. Likewise, the TM
+-runtime must ensure privatization safety.
+-
+-
+-File: libitm.info,  Node: Internals,  Next: GNU Free Documentation License,  Prev: The libitm ABI,  Up: Top
+-
+-4 Internals
+-***********
+-
+-4.1 TM methods and method groups
+-================================
+-
+-libitm supports several ways of synchronizing transactions with each
+-other.  These TM methods (or TM algorithms) are implemented in the form
+-of subclasses of `abi_dispatch', which provide methods for
+-transactional loads and stores as well as callbacks for rollback and
+-commit.  All methods that are compatible with each other (i.e., that
+-let concurrently running transactions still synchronize correctly even
+-if different methods are used) belong to the same TM method group.
+-Pointers to TM methods can be obtained using the factory methods
+-prefixed with `dispatch_' in `libitm_i.h'. There are two special
+-methods, `dispatch_serial' and `dispatch_serialirr', that are
+-compatible with all methods because they run transactions completely in
+-serial mode.
+-
+-4.1.1 TM method life cycle
+---------------------------
+-
+-The state of TM methods does not change after construction, but they do
+-alter the state of transactions that use this method. However, because
+-per-transaction data gets used by several methods, `gtm_thread' is
+-responsible for setting an initial state that is useful for all methods.
+-After that, methods are responsible for resetting/clearing this state
+-on each rollback or commit (of outermost transactions), so that the
+-transaction executed next is not affected by the previous transaction.
+-
+-   There is also global state associated with each method group, which
+-is initialized and shut down (`method_group::init()' and `fini()') when
+-switching between method groups (see `retry.cc').
+-
+-4.1.2 Selecting the default method
+-----------------------------------
+-
+-The default method that libitm uses for freshly started transactions
+-(but not necessarily for restarted transactions) can be set via an
+-environment variable (`ITM_DEFAULT_METHOD'), whose value should be
+-equal to the name of one of the factory methods returning abi_dispatch
+-subclasses but without the "dispatch_" prefix (e.g., "serialirr"
+-instead of `GTM::dispatch_serialirr()').
+-
+-   Note that this environment variable is only a hint for libitm and
+-might not be supported in the future.
+-
+-4.2 Nesting: flat vs. closed
+-============================
+-
+-We support two different kinds of nesting of transactions. In the case
+-of _flat nesting_, the nesting structure is flattened and all nested
+-transactions are subsumed by the enclosing transaction. In contrast,
+-with _closed nesting_, nested transactions that have not yet committed
+-can be rolled back separately from the enclosing transactions; when they
+-commit, they are subsumed by the enclosing transaction, and their
+-effects will be finally committed when the outermost transaction
+-commits.  _Open nesting_ (where nested transactions can commit
+-independently of the enclosing transactions) are not supported.
+-
+-   Flat nesting is the default nesting mode, but closed nesting is
+-supported and used when transactions contain user-controlled aborts
+-(`__transaction_cancel' statements). We assume that user-controlled
+-aborts are rare in typical code and used mostly in exceptional
+-situations.  Thus, it makes more sense to use flat nesting by default
+-to avoid the performance overhead of the additional checkpoints
+-required for closed nesting. User-controlled aborts will correctly
+-abort the innermost enclosing transaction, whereas the whole (i.e.,
+-outermost) transaction will be restarted otherwise (e.g., when a
+-transaction encounters data conflicts during optimistic execution).
+-
+-4.3 Locking conventions
+-=======================
+-
+-This section documents the locking scheme and rules for all uses of
+-locking in libitm. We have to support serial(-irrevocable) mode, which
+-is implemented using a global lock as explained next (called the
+-_serial lock_). To simplify the overall design, we use the same lock as
+-catch-all locking mechanism for other infrequent tasks such as
+-(de)registering clone tables or threads. Besides the serial lock, there
+-are _per-method-group locks_ that are managed by specific method groups
+-(i.e., groups of similar TM concurrency control algorithms), and
+-lock-like constructs for quiescence-based operations such as ensuring
+-privatization safety.
+-
+-   Thus, the actions that participate in the libitm-internal locking
+-are either _active transactions_ that do not run in serial mode, _serial
+-transactions_ (which (are about to) run in serial mode), and management
+-tasks that do not execute within a transaction but have acquired the
+-serial mode like a serial transaction would do (e.g., to be able to
+-register threads with libitm). Transactions become active as soon as
+-they have successfully used the serial lock to announce this globally
+-(*note Serial lock implementation: serial-lock-impl.). Likewise,
+-transactions become serial transactions as soon as they have acquired
+-the exclusive rights provided by the serial lock (i.e., serial mode,
+-which also means that there are no other concurrent active or serial
+-transactions). Note that active transactions can become serial
+-transactions when they enter serial mode during the runtime of the
+-transaction.
+-
+-4.3.1 State-to-lock mapping
+----------------------------
+-
+-Application data is protected by the serial lock if there is a serial
+-transaction and no concurrently running active transaction (i.e.,
+-non-serial).  Otherwise, application data is protected by the currently
+-selected method group, which might use per-method-group locks or other
+-mechanisms. Also note that application data that is about to be
+-privatized might not be allowed to be accessed by nontransactional code
+-until privatization safety has been ensured; the details of this are
+-handled by the current method group.
+-
+-   libitm-internal state is either protected by the serial lock or
+-accessed through custom concurrent code. The latter applies to the
+-public/shared part of a transaction object and most typical
+-method-group-specific state.
+-
+-   The former category (protected by the serial lock) includes:
+-   * The list of active threads that have used transactions.
+-
+-   * The tables that map functions to their transactional clones.
+-
+-   * The current selection of which method group to use.
+-
+-   * Some method-group-specific data, or invariants of this data. For
+-     example, resetting a method group to its initial state is handled
+-     by switching to the same method group, so the serial lock protects
+-     such resetting as well.
+-   In general, such state is immutable whenever there exists an active
+-(non-serial) transaction. If there is no active transaction, a serial
+-transaction (or a thread that is not currently executing a transaction
+-but has acquired the serial lock) is allowed to modify this state (but
+-must of course be careful to not surprise the current method group's
+-implementation with such modifications).
+-
+-4.3.2 Lock acquisition order
+-----------------------------
+-
+-To prevent deadlocks, locks acquisition must happen in a globally
+-agreed-upon order. Note that this applies to other forms of blocking
+-too, but does not necessarily apply to lock acquisitions that do not
+-block (e.g., trylock() calls that do not get retried forever). Note
+-that serial transactions are never return back to active transactions
+-until the transaction has committed.  Likewise, active transactions
+-stay active until they have committed.  Per-method-group locks are
+-typically also not released before commit.
+-
+-   Lock acquisition / blocking rules:
+-   * Transactions must become active or serial before they are allowed
+-     to use method-group-specific locks or blocking (i.e., the serial
+-     lock must be acquired before those other locks, either in serial
+-     or nonserial mode).
+-
+-   * Any number of threads that do not currently run active
+-     transactions can block while trying to get the serial lock in
+-     exclusive mode. Note that active transactions must not block when
+-     trying to upgrade to serial mode unless there is no other
+-     transaction that is trying that (the latter is ensured by the
+-     serial lock implementation.
+-
+-   * Method groups must prevent deadlocks on their locks. In
+-     particular, they must also be prepared for another active
+-     transaction that has acquired method-group-specific locks but is
+-     blocked during an attempt to upgrade to being a serial
+-     transaction. See below for details.
+-
+-   * Serial transactions can acquire method-group-specific locks
+-     because there will be no other active nor serial transaction.
+-
+-
+-   There is no single rule for per-method-group blocking because this
+-depends on when a TM method might acquire locks. If no active
+-transaction can upgrade to being a serial transaction after it has
+-acquired per-method-group locks (e.g., when those locks are only
+-acquired during an attempt to commit), then the TM method does not need
+-to consider a potential deadlock due to serial mode.
+-
+-   If there can be upgrades to serial mode after the acquisition of
+-per-method-group locks, then TM methods need to avoid those deadlocks:
+-   * When upgrading to a serial transaction, after acquiring exclusive
+-     rights to the serial lock but before waiting for concurrent active
+-     transactions to finish (*note Serial lock implementation:
+-     serial-lock-impl. for details), we have to wake up all active
+-     transactions waiting on the upgrader's per-method-group locks.
+-
+-   * Active transactions blocking on per-method-group locks need to
+-     check the serial lock and abort if there is a pending serial
+-     transaction.
+-
+-   * Lost wake-ups have to be prevented (e.g., by changing a bit in each
+-     per-method-group lock before doing the wake-up, and only blocking
+-     on this lock using a futex if this bit is not group).
+-
+-   *TODO*: Can reuse serial lock for gl-*? And if we can, does it make
+-sense to introduce further complexity in the serial lock? For gl-*, we
+-can really only avoid an abort if we do -wb and -vbv.
+-
+-4.3.3 Serial lock implementation
+---------------------------------
+-
+-The serial lock implementation is optimized towards assuming that serial
+-transactions are infrequent and not the common case. However, the
+-performance of entering serial mode can matter because when only few
+-transactions are run concurrently or if there are few threads, then it
+-can be efficient to run transactions serially.
+-
+-   The serial lock is similar to a multi-reader-single-writer lock in
+-that there can be several active transactions but only one serial
+-transaction. However, we do want to avoid contention (in the lock
+-implementation) between active transactions, so we split up the reader
+-side of the lock into per-transaction flags that are true iff the
+-transaction is active. The exclusive writer side remains a shared
+-single flag, which is acquired using a CAS, for example.  On the
+-fast-path, the serial lock then works similar to Dekker's algorithm but
+-with several reader flags that a serial transaction would have to check.
+-A serial transaction thus requires a list of all threads with
+-potentially active transactions; we can use the serial lock itself to
+-protect this list (i.e., only threads that have acquired the serial
+-lock can modify this list).
+-
+-   We want starvation-freedom for the serial lock to allow for using it
+-to ensure progress for potentially starved transactions (*note Progress
+-Guarantees: progress-guarantees. for details). However, this is
+-currently not enforced by the implementation of the serial lock.
+-
+-   Here is pseudo-code for the read/write fast paths of acquiring the
+-serial lock (read-to-write upgrade is similar to write_lock:
+-     // read_lock:
+-     tx->shared_state |= active;
+-     __sync_synchronize(); // or STLD membar, or C++0x seq-cst fence
+-     while (!serial_lock.exclusive)
+-       if (spinning_for_too_long) goto slowpath;
+-
+-     // write_lock:
+-     if (CAS(&serial_lock.exclusive, 0, this) != 0)
+-       goto slowpath; // writer-writer contention
+-     // need a membar here, but CAS already has full membar semantics
+-     bool need_blocking = false;
+-     for (t: all txns)
+-       {
+-         for (;t->shared_state & active;)
+-           if (spinning_for_too_long) { need_blocking = true; break; }
+-       }
+-     if (need_blocking) goto slowpath;
+-
+-   Releasing a lock in this spin-lock version then just consists of
+-resetting `tx->shared_state' to inactive or clearing
+-`serial_lock.exclusive'.
+-
+-   However, we can't rely on a pure spinlock because we need to get the
+-OS involved at some time (e.g., when there are more threads than CPUs
+-to run on).  Therefore, the real implementation falls back to a
+-blocking slow path, either based on pthread mutexes or Linux futexes.
+-
+-4.3.4 Reentrancy
+-----------------
+-
+-libitm has to consider the following cases of reentrancy:
+-   * Transaction calls unsafe code that starts a new transaction: The
+-     outer transaction will become a serial transaction before
+-     executing unsafe code.  Therefore, nesting within serial
+-     transactions must work, even if the nested transaction is called
+-     from within uninstrumented code.
+-
+-   * Transaction calls either a transactional wrapper or safe code,
+-     which in turn starts a new transaction: It is not yet defined in
+-     the specification whether this is allowed. Thus, it is undefined
+-     whether libitm supports this.
+-
+-   * Code that starts new transactions might be called from within any
+-     part of libitm: This kind of reentrancy would likely be rather
+-     complex and can probably be avoided. Therefore, it is not
+-     supported.
+-
+-
+-4.3.5 Privatization safety
+---------------------------
+-
+-Privatization safety is ensured by libitm using a quiescence-based
+-approach.  Basically, a privatizing transaction waits until all
+-concurrent active transactions will either have finished (are not
+-active anymore) or operate on a sufficiently recent snapshot to not
+-access the privatized data anymore. This happens after the privatizing
+-transaction has stopped being an active transaction, so waiting for
+-quiescence does not contribute to deadlocks.
+-
+-   In method groups that need to ensure publication safety explicitly,
+-active transactions maintain a flag or timestamp in the public/shared
+-part of the transaction descriptor. Before blocking, privatizers need
+-to let the other transactions know that they should wake up the
+-privatizer.
+-
+-   *TODO* Ho to implement the waiters? Should those flags be
+-per-transaction or at a central place? We want to avoid one wake/wait
+-call per active transactions, so we might want to use either a tree or
+-combining to reduce the syscall overhead, or rather spin for a long
+-amount of time instead of doing blocking. Also, it would be good if
+-only the last transaction that the privatizer waits for would do the
+-wake-up.
+-
+-4.3.6 Progress guarantees
+--------------------------
+-
+-Transactions that do not make progress when using the current TM method
+-will eventually try to execute in serial mode. Thus, the serial lock's
+-progress guarantees determine the progress guarantees of the whole TM.
+-Obviously, we at least need deadlock-freedom for the serial lock, but
+-it would also be good to provide starvation-freedom (informally, all
+-threads will finish executing a transaction eventually iff they get
+-enough cycles).
+-
+-   However, the scheduling of transactions (e.g., thread scheduling by
+-the OS) also affects the handling of progress guarantees by the TM.
+-First, the TM can only guarantee deadlock-freedom if threads do not get
+-stopped. Likewise, low-priority threads can starve if they do not get
+-scheduled when other high-priority threads get those cycles instead.
+-
+-   If all threads get scheduled eventually, correct lock
+-implementations will provide deadlock-freedom, but might not provide
+-starvation-freedom. We can either enforce the latter in the TM's lock
+-implementation, or assume that the scheduling is sufficiently random to
+-yield a probabilistic guarantee that no thread will starve (because
+-eventually, a transaction will encounter a scheduling that will allow
+-it to run). This can indeed work well in practice but is not
+-necessarily guaranteed to work (e.g., simple spin locks can be pretty
+-efficient).
+-
+-   Because enforcing stronger progress guarantees in the TM has a
+-higher runtime overhead, we focus on deadlock-freedom right now and
+-assume that the threads will get scheduled eventually by the OS (but
+-don't consider threads with different priorities). We should support
+-starvation-freedom for serial transactions in the future. Everything
+-beyond that is highly related to proper contention management across
+-all of the TM (including with TM method to choose), and is future work.
+-
+-   *TODO* Handling thread priorities: We want to avoid priority
+-inversion but it's unclear how often that actually matters in practice.
+-Workloads that have threads with different priorities will likely also
+-require lower latency or higher throughput for high-priority threads.
+-Therefore, it probably makes not that much sense (except for eventual
+-progress guarantees) to use priority inheritance until the TM has
+-priority-aware contention management.
+-
+-
+-File: libitm.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Internals,  Up: Top
+-
+-GNU Free Documentation License
+-******************************
+-
+-                     Version 1.3, 3 November 2008
+-
+-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+-     `http://fsf.org/'
+-
+-     Everyone is permitted to copy and distribute verbatim copies
+-     of this license document, but changing it is not allowed.
+-
+-  0. PREAMBLE
+-
+-     The purpose of this License is to make a manual, textbook, or other
+-     functional and useful document "free" in the sense of freedom: to
+-     assure everyone the effective freedom to copy and redistribute it,
+-     with or without modifying it, either commercially or
+-     noncommercially.  Secondarily, this License preserves for the
+-     author and publisher a way to get credit for their work, while not
+-     being considered responsible for modifications made by others.
+-
+-     This License is a kind of "copyleft", which means that derivative
+-     works of the document must themselves be free in the same sense.
+-     It complements the GNU General Public License, which is a copyleft
+-     license designed for free software.
+-
+-     We have designed this License in order to use it for manuals for
+-     free software, because free software needs free documentation: a
+-     free program should come with manuals providing the same freedoms
+-     that the software does.  But this License is not limited to
+-     software manuals; it can be used for any textual work, regardless
+-     of subject matter or whether it is published as a printed book.
+-     We recommend this License principally for works whose purpose is
+-     instruction or reference.
+-
+-  1. APPLICABILITY AND DEFINITIONS
+-
+-     This License applies to any manual or other work, in any medium,
+-     that contains a notice placed by the copyright holder saying it
+-     can be distributed under the terms of this License.  Such a notice
+-     grants a world-wide, royalty-free license, unlimited in duration,
+-     to use that work under the conditions stated herein.  The
+-     "Document", below, refers to any such manual or work.  Any member
+-     of the public is a licensee, and is addressed as "you".  You
+-     accept the license if you copy, modify or distribute the work in a
+-     way requiring permission under copyright law.
+-
+-     A "Modified Version" of the Document means any work containing the
+-     Document or a portion of it, either copied verbatim, or with
+-     modifications and/or translated into another language.
+-
+-     A "Secondary Section" is a named appendix or a front-matter section
+-     of the Document that deals exclusively with the relationship of the
+-     publishers or authors of the Document to the Document's overall
+-     subject (or to related matters) and contains nothing that could
+-     fall directly within that overall subject.  (Thus, if the Document
+-     is in part a textbook of mathematics, a Secondary Section may not
+-     explain any mathematics.)  The relationship could be a matter of
+-     historical connection with the subject or with related matters, or
+-     of legal, commercial, philosophical, ethical or political position
+-     regarding them.
+-
+-     The "Invariant Sections" are certain Secondary Sections whose
+-     titles are designated, as being those of Invariant Sections, in
+-     the notice that says that the Document is released under this
+-     License.  If a section does not fit the above definition of
+-     Secondary then it is not allowed to be designated as Invariant.
+-     The Document may contain zero Invariant Sections.  If the Document
+-     does not identify any Invariant Sections then there are none.
+-
+-     The "Cover Texts" are certain short passages of text that are
+-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+-     that says that the Document is released under this License.  A
+-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+-     be at most 25 words.
+-
+-     A "Transparent" copy of the Document means a machine-readable copy,
+-     represented in a format whose specification is available to the
+-     general public, that is suitable for revising the document
+-     straightforwardly with generic text editors or (for images
+-     composed of pixels) generic paint programs or (for drawings) some
+-     widely available drawing editor, and that is suitable for input to
+-     text formatters or for automatic translation to a variety of
+-     formats suitable for input to text formatters.  A copy made in an
+-     otherwise Transparent file format whose markup, or absence of
+-     markup, has been arranged to thwart or discourage subsequent
+-     modification by readers is not Transparent.  An image format is
+-     not Transparent if used for any substantial amount of text.  A
+-     copy that is not "Transparent" is called "Opaque".
+-
+-     Examples of suitable formats for Transparent copies include plain
+-     ASCII without markup, Texinfo input format, LaTeX input format,
+-     SGML or XML using a publicly available DTD, and
+-     standard-conforming simple HTML, PostScript or PDF designed for
+-     human modification.  Examples of transparent image formats include
+-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+-     can be read and edited only by proprietary word processors, SGML or
+-     XML for which the DTD and/or processing tools are not generally
+-     available, and the machine-generated HTML, PostScript or PDF
+-     produced by some word processors for output purposes only.
+-
+-     The "Title Page" means, for a printed book, the title page itself,
+-     plus such following pages as are needed to hold, legibly, the
+-     material this License requires to appear in the title page.  For
+-     works in formats which do not have any title page as such, "Title
+-     Page" means the text near the most prominent appearance of the
+-     work's title, preceding the beginning of the body of the text.
+-
+-     The "publisher" means any person or entity that distributes copies
+-     of the Document to the public.
+-
+-     A section "Entitled XYZ" means a named subunit of the Document
+-     whose title either is precisely XYZ or contains XYZ in parentheses
+-     following text that translates XYZ in another language.  (Here XYZ
+-     stands for a specific section name mentioned below, such as
+-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+-     To "Preserve the Title" of such a section when you modify the
+-     Document means that it remains a section "Entitled XYZ" according
+-     to this definition.
+-
+-     The Document may include Warranty Disclaimers next to the notice
+-     which states that this License applies to the Document.  These
+-     Warranty Disclaimers are considered to be included by reference in
+-     this License, but only as regards disclaiming warranties: any other
+-     implication that these Warranty Disclaimers may have is void and
+-     has no effect on the meaning of this License.
+-
+-  2. VERBATIM COPYING
+-
+-     You may copy and distribute the Document in any medium, either
+-     commercially or noncommercially, provided that this License, the
+-     copyright notices, and the license notice saying this License
+-     applies to the Document are reproduced in all copies, and that you
+-     add no other conditions whatsoever to those of this License.  You
+-     may not use technical measures to obstruct or control the reading
+-     or further copying of the copies you make or distribute.  However,
+-     you may accept compensation in exchange for copies.  If you
+-     distribute a large enough number of copies you must also follow
+-     the conditions in section 3.
+-
+-     You may also lend copies, under the same conditions stated above,
+-     and you may publicly display copies.
+-
+-  3. COPYING IN QUANTITY
+-
+-     If you publish printed copies (or copies in media that commonly
+-     have printed covers) of the Document, numbering more than 100, and
+-     the Document's license notice requires Cover Texts, you must
+-     enclose the copies in covers that carry, clearly and legibly, all
+-     these Cover Texts: Front-Cover Texts on the front cover, and
+-     Back-Cover Texts on the back cover.  Both covers must also clearly
+-     and legibly identify you as the publisher of these copies.  The
+-     front cover must present the full title with all words of the
+-     title equally prominent and visible.  You may add other material
+-     on the covers in addition.  Copying with changes limited to the
+-     covers, as long as they preserve the title of the Document and
+-     satisfy these conditions, can be treated as verbatim copying in
+-     other respects.
+-
+-     If the required texts for either cover are too voluminous to fit
+-     legibly, you should put the first ones listed (as many as fit
+-     reasonably) on the actual cover, and continue the rest onto
+-     adjacent pages.
+-
+-     If you publish or distribute Opaque copies of the Document
+-     numbering more than 100, you must either include a
+-     machine-readable Transparent copy along with each Opaque copy, or
+-     state in or with each Opaque copy a computer-network location from
+-     which the general network-using public has access to download
+-     using public-standard network protocols a complete Transparent
+-     copy of the Document, free of added material.  If you use the
+-     latter option, you must take reasonably prudent steps, when you
+-     begin distribution of Opaque copies in quantity, to ensure that
+-     this Transparent copy will remain thus accessible at the stated
+-     location until at least one year after the last time you
+-     distribute an Opaque copy (directly or through your agents or
+-     retailers) of that edition to the public.
+-
+-     It is requested, but not required, that you contact the authors of
+-     the Document well before redistributing any large number of
+-     copies, to give them a chance to provide you with an updated
+-     version of the Document.
+-
+-  4. MODIFICATIONS
+-
+-     You may copy and distribute a Modified Version of the Document
+-     under the conditions of sections 2 and 3 above, provided that you
+-     release the Modified Version under precisely this License, with
+-     the Modified Version filling the role of the Document, thus
+-     licensing distribution and modification of the Modified Version to
+-     whoever possesses a copy of it.  In addition, you must do these
+-     things in the Modified Version:
+-
+-       A. Use in the Title Page (and on the covers, if any) a title
+-          distinct from that of the Document, and from those of
+-          previous versions (which should, if there were any, be listed
+-          in the History section of the Document).  You may use the
+-          same title as a previous version if the original publisher of
+-          that version gives permission.
+-
+-       B. List on the Title Page, as authors, one or more persons or
+-          entities responsible for authorship of the modifications in
+-          the Modified Version, together with at least five of the
+-          principal authors of the Document (all of its principal
+-          authors, if it has fewer than five), unless they release you
+-          from this requirement.
+-
+-       C. State on the Title page the name of the publisher of the
+-          Modified Version, as the publisher.
+-
+-       D. Preserve all the copyright notices of the Document.
+-
+-       E. Add an appropriate copyright notice for your modifications
+-          adjacent to the other copyright notices.
+-
+-       F. Include, immediately after the copyright notices, a license
+-          notice giving the public permission to use the Modified
+-          Version under the terms of this License, in the form shown in
+-          the Addendum below.
+-
+-       G. Preserve in that license notice the full lists of Invariant
+-          Sections and required Cover Texts given in the Document's
+-          license notice.
+-
+-       H. Include an unaltered copy of this License.
+-
+-       I. Preserve the section Entitled "History", Preserve its Title,
+-          and add to it an item stating at least the title, year, new
+-          authors, and publisher of the Modified Version as given on
+-          the Title Page.  If there is no section Entitled "History" in
+-          the Document, create one stating the title, year, authors,
+-          and publisher of the Document as given on its Title Page,
+-          then add an item describing the Modified Version as stated in
+-          the previous sentence.
+-
+-       J. Preserve the network location, if any, given in the Document
+-          for public access to a Transparent copy of the Document, and
+-          likewise the network locations given in the Document for
+-          previous versions it was based on.  These may be placed in
+-          the "History" section.  You may omit a network location for a
+-          work that was published at least four years before the
+-          Document itself, or if the original publisher of the version
+-          it refers to gives permission.
+-
+-       K. For any section Entitled "Acknowledgements" or "Dedications",
+-          Preserve the Title of the section, and preserve in the
+-          section all the substance and tone of each of the contributor
+-          acknowledgements and/or dedications given therein.
+-
+-       L. Preserve all the Invariant Sections of the Document,
+-          unaltered in their text and in their titles.  Section numbers
+-          or the equivalent are not considered part of the section
+-          titles.
+-
+-       M. Delete any section Entitled "Endorsements".  Such a section
+-          may not be included in the Modified Version.
+-
+-       N. Do not retitle any existing section to be Entitled
+-          "Endorsements" or to conflict in title with any Invariant
+-          Section.
+-
+-       O. Preserve any Warranty Disclaimers.
+-
+-     If the Modified Version includes new front-matter sections or
+-     appendices that qualify as Secondary Sections and contain no
+-     material copied from the Document, you may at your option
+-     designate some or all of these sections as invariant.  To do this,
+-     add their titles to the list of Invariant Sections in the Modified
+-     Version's license notice.  These titles must be distinct from any
+-     other section titles.
+-
+-     You may add a section Entitled "Endorsements", provided it contains
+-     nothing but endorsements of your Modified Version by various
+-     parties--for example, statements of peer review or that the text
+-     has been approved by an organization as the authoritative
+-     definition of a standard.
+-
+-     You may add a passage of up to five words as a Front-Cover Text,
+-     and a passage of up to 25 words as a Back-Cover Text, to the end
+-     of the list of Cover Texts in the Modified Version.  Only one
+-     passage of Front-Cover Text and one of Back-Cover Text may be
+-     added by (or through arrangements made by) any one entity.  If the
+-     Document already includes a cover text for the same cover,
+-     previously added by you or by arrangement made by the same entity
+-     you are acting on behalf of, you may not add another; but you may
+-     replace the old one, on explicit permission from the previous
+-     publisher that added the old one.
+-
+-     The author(s) and publisher(s) of the Document do not by this
+-     License give permission to use their names for publicity for or to
+-     assert or imply endorsement of any Modified Version.
+-
+-  5. COMBINING DOCUMENTS
+-
+-     You may combine the Document with other documents released under
+-     this License, under the terms defined in section 4 above for
+-     modified versions, provided that you include in the combination
+-     all of the Invariant Sections of all of the original documents,
+-     unmodified, and list them all as Invariant Sections of your
+-     combined work in its license notice, and that you preserve all
+-     their Warranty Disclaimers.
+-
+-     The combined work need only contain one copy of this License, and
+-     multiple identical Invariant Sections may be replaced with a single
+-     copy.  If there are multiple Invariant Sections with the same name
+-     but different contents, make the title of each such section unique
+-     by adding at the end of it, in parentheses, the name of the
+-     original author or publisher of that section if known, or else a
+-     unique number.  Make the same adjustment to the section titles in
+-     the list of Invariant Sections in the license notice of the
+-     combined work.
+-
+-     In the combination, you must combine any sections Entitled
+-     "History" in the various original documents, forming one section
+-     Entitled "History"; likewise combine any sections Entitled
+-     "Acknowledgements", and any sections Entitled "Dedications".  You
+-     must delete all sections Entitled "Endorsements."
+-
+-  6. COLLECTIONS OF DOCUMENTS
+-
+-     You may make a collection consisting of the Document and other
+-     documents released under this License, and replace the individual
+-     copies of this License in the various documents with a single copy
+-     that is included in the collection, provided that you follow the
+-     rules of this License for verbatim copying of each of the
+-     documents in all other respects.
+-
+-     You may extract a single document from such a collection, and
+-     distribute it individually under this License, provided you insert
+-     a copy of this License into the extracted document, and follow
+-     this License in all other respects regarding verbatim copying of
+-     that document.
+-
+-  7. AGGREGATION WITH INDEPENDENT WORKS
+-
+-     A compilation of the Document or its derivatives with other
+-     separate and independent documents or works, in or on a volume of
+-     a storage or distribution medium, is called an "aggregate" if the
+-     copyright resulting from the compilation is not used to limit the
+-     legal rights of the compilation's users beyond what the individual
+-     works permit.  When the Document is included in an aggregate, this
+-     License does not apply to the other works in the aggregate which
+-     are not themselves derivative works of the Document.
+-
+-     If the Cover Text requirement of section 3 is applicable to these
+-     copies of the Document, then if the Document is less than one half
+-     of the entire aggregate, the Document's Cover Texts may be placed
+-     on covers that bracket the Document within the aggregate, or the
+-     electronic equivalent of covers if the Document is in electronic
+-     form.  Otherwise they must appear on printed covers that bracket
+-     the whole aggregate.
+-
+-  8. TRANSLATION
+-
+-     Translation is considered a kind of modification, so you may
+-     distribute translations of the Document under the terms of section
+-     4.  Replacing Invariant Sections with translations requires special
+-     permission from their copyright holders, but you may include
+-     translations of some or all Invariant Sections in addition to the
+-     original versions of these Invariant Sections.  You may include a
+-     translation of this License, and all the license notices in the
+-     Document, and any Warranty Disclaimers, provided that you also
+-     include the original English version of this License and the
+-     original versions of those notices and disclaimers.  In case of a
+-     disagreement between the translation and the original version of
+-     this License or a notice or disclaimer, the original version will
+-     prevail.
+-
+-     If a section in the Document is Entitled "Acknowledgements",
+-     "Dedications", or "History", the requirement (section 4) to
+-     Preserve its Title (section 1) will typically require changing the
+-     actual title.
+-
+-  9. TERMINATION
+-
+-     You may not copy, modify, sublicense, or distribute the Document
+-     except as expressly provided under this License.  Any attempt
+-     otherwise to copy, modify, sublicense, or distribute it is void,
+-     and will automatically terminate your rights under this License.
+-
+-     However, if you cease all violation of this License, then your
+-     license from a particular copyright holder is reinstated (a)
+-     provisionally, unless and until the copyright holder explicitly
+-     and finally terminates your license, and (b) permanently, if the
+-     copyright holder fails to notify you of the violation by some
+-     reasonable means prior to 60 days after the cessation.
+-
+-     Moreover, your license from a particular copyright holder is
+-     reinstated permanently if the copyright holder notifies you of the
+-     violation by some reasonable means, this is the first time you have
+-     received notice of violation of this License (for any work) from
+-     that copyright holder, and you cure the violation prior to 30 days
+-     after your receipt of the notice.
+-
+-     Termination of your rights under this section does not terminate
+-     the licenses of parties who have received copies or rights from
+-     you under this License.  If your rights have been terminated and
+-     not permanently reinstated, receipt of a copy of some or all of
+-     the same material does not give you any rights to use it.
+-
+- 10. FUTURE REVISIONS OF THIS LICENSE
+-
+-     The Free Software Foundation may publish new, revised versions of
+-     the GNU Free Documentation License from time to time.  Such new
+-     versions will be similar in spirit to the present version, but may
+-     differ in detail to address new problems or concerns.  See
+-     `http://www.gnu.org/copyleft/'.
+-
+-     Each version of the License is given a distinguishing version
+-     number.  If the Document specifies that a particular numbered
+-     version of this License "or any later version" applies to it, you
+-     have the option of following the terms and conditions either of
+-     that specified version or of any later version that has been
+-     published (not as a draft) by the Free Software Foundation.  If
+-     the Document does not specify a version number of this License,
+-     you may choose any version ever published (not as a draft) by the
+-     Free Software Foundation.  If the Document specifies that a proxy
+-     can decide which future versions of this License can be used, that
+-     proxy's public statement of acceptance of a version permanently
+-     authorizes you to choose that version for the Document.
+-
+- 11. RELICENSING
+-
+-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+-     World Wide Web server that publishes copyrightable works and also
+-     provides prominent facilities for anybody to edit those works.  A
+-     public wiki that anybody can edit is an example of such a server.
+-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+-     site means any set of copyrightable works thus published on the MMC
+-     site.
+-
+-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+-     license published by Creative Commons Corporation, a not-for-profit
+-     corporation with a principal place of business in San Francisco,
+-     California, as well as future copyleft versions of that license
+-     published by that same organization.
+-
+-     "Incorporate" means to publish or republish a Document, in whole or
+-     in part, as part of another Document.
+-
+-     An MMC is "eligible for relicensing" if it is licensed under this
+-     License, and if all works that were first published under this
+-     License somewhere other than this MMC, and subsequently
+-     incorporated in whole or in part into the MMC, (1) had no cover
+-     texts or invariant sections, and (2) were thus incorporated prior
+-     to November 1, 2008.
+-
+-     The operator of an MMC Site may republish an MMC contained in the
+-     site under CC-BY-SA on the same site at any time before August 1,
+-     2009, provided the MMC is eligible for relicensing.
+-
+-
+-ADDENDUM: How to use this License for your documents
+-====================================================
+-
+-To use this License in a document you have written, include a copy of
+-the License in the document and put the following copyright and license
+-notices just after the title page:
+-
+-       Copyright (C)  YEAR  YOUR NAME.
+-       Permission is granted to copy, distribute and/or modify this document
+-       under the terms of the GNU Free Documentation License, Version 1.3
+-       or any later version published by the Free Software Foundation;
+-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+-       Texts.  A copy of the license is included in the section entitled ``GNU
+-       Free Documentation License''.
+-
+-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+-Texts, replace the "with...Texts." line with this:
+-
+-         with the Invariant Sections being LIST THEIR TITLES, with
+-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+-         being LIST.
+-
+-   If you have Invariant Sections without Cover Texts, or some other
+-combination of the three, merge those two alternatives to suit the
+-situation.
+-
+-   If your document contains nontrivial examples of program code, we
+-recommend releasing these examples in parallel under your choice of
+-free software license, such as the GNU General Public License, to
+-permit their use in free software.
+-
+-
+-File: libitm.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+-
+-Index
+-*****
+-
+-[index]
+-* Menu:
+-
+-* FDL, GNU Free Documentation License:   GNU Free Documentation License.
+-                                                                (line 6)
+-* Introduction:                          Top.                   (line 6)
+-
+-
+-
+-Tag Table:
+-Node: Top1173
+-Node: Enabling libitm2076
+-Node: C/C++ Language Constructs for TM2470
+-Node: The libitm ABI3950
+-Ref: txn-code-properties7743
+-Node: Internals18018
+-Ref: serial-lock-impl28043
+-Ref: progress-guarantees32793
+-Node: GNU Free Documentation License35067
+-Node: Index60208
+-
+-End Tag Table
+diff -Naur gcc-4.8.1.orig/libjava/classpath/configure gcc-4.8.1/libjava/classpath/configure
+--- gcc-4.8.1.orig/libjava/classpath/configure	2012-12-19 11:03:15.000000000 -0600
++++ gcc-4.8.1/libjava/classpath/configure	2013-06-20 08:12:44.938633000 -0500
+@@ -18779,8 +18779,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -18806,7 +18807,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -18820,6 +18820,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -18876,8 +18933,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -18903,7 +18961,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -18917,6 +18974,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -19751,8 +19865,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -19778,7 +19893,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -19792,6 +19906,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -19848,8 +20019,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -19875,7 +20047,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -19889,6 +20060,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -19945,8 +20173,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -19972,7 +20201,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -19986,6 +20214,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20042,8 +20327,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20069,7 +20355,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20083,13 +20368,70 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
+   fi
++done
++  done
++IFS=$as_save_IFS
+ 
+-  if test "$PKG_CONFIG" = "no" ; then
+-     echo "*** The pkg-config script could not be found. Make sure it is"
+-     echo "*** in your path, or set the PKG_CONFIG environment variable"
+-     echo "*** to the full path to pkg-config."
+-     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
++  fi
++
++  if test "$PKG_CONFIG" = "no" ; then
++     echo "*** The pkg-config script could not be found. Make sure it is"
++     echo "*** in your path, or set the PKG_CONFIG environment variable"
++     echo "*** to the full path to pkg-config."
++     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+   else
+      PKG_CONFIG_MIN_VERSION=0.9.0
+      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+@@ -20245,8 +20587,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20272,7 +20615,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20286,6 +20628,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20344,8 +20743,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20371,7 +20771,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20385,6 +20784,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20453,8 +20909,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20480,7 +20937,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20494,6 +20950,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20553,8 +21066,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20580,7 +21094,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20594,6 +21107,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20653,8 +21223,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20680,7 +21251,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20694,6 +21264,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -20756,8 +21383,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20783,7 +21411,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20797,22 +21424,79 @@
+ fi
+ 
+ 
+-  fi
+-
+-  if test "$PKG_CONFIG" = "no" ; then
+-     echo "*** The pkg-config script could not be found. Make sure it is"
+-     echo "*** in your path, or set the PKG_CONFIG environment variable"
+-     echo "*** to the full path to pkg-config."
+-     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+-  else
+-     PKG_CONFIG_MIN_VERSION=0.9.0
+-     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdk-2.0 >= 2.8" >&5
+-$as_echo_n "checking for gdk-2.0 >= 2.8... " >&6; }
+-
+-        if $PKG_CONFIG --exists "gdk-2.0 >= 2.8" ; then
+-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+-$as_echo "yes" >&6; }
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
++  fi
++
++  if test "$PKG_CONFIG" = "no" ; then
++     echo "*** The pkg-config script could not be found. Make sure it is"
++     echo "*** in your path, or set the PKG_CONFIG environment variable"
++     echo "*** to the full path to pkg-config."
++     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
++  else
++     PKG_CONFIG_MIN_VERSION=0.9.0
++     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
++        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdk-2.0 >= 2.8" >&5
++$as_echo_n "checking for gdk-2.0 >= 2.8... " >&6; }
++
++        if $PKG_CONFIG --exists "gdk-2.0 >= 2.8" ; then
++            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
+             succeeded=yes
+ 
+             { $as_echo "$as_me:${as_lineno-$LINENO}: checking GDK_CFLAGS" >&5
+@@ -20863,8 +21547,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -20890,7 +21575,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -20904,6 +21588,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21242,8 +21983,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21269,7 +22011,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21283,6 +22024,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21340,8 +22138,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21367,7 +22166,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21381,6 +22179,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21439,8 +22294,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21466,7 +22322,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21480,6 +22335,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21538,8 +22450,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21565,7 +22478,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21579,6 +22491,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21637,8 +22606,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21664,7 +22634,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21678,6 +22647,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21736,8 +22762,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21763,7 +22790,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21777,6 +22803,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21835,8 +22918,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21862,7 +22946,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21876,6 +22959,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -21937,8 +23077,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -21964,7 +23105,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -21978,6 +23118,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -22034,8 +23231,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -22061,7 +23259,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -22075,6 +23272,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -24046,7 +25300,7 @@
+ JAVA_TEST=Object.java
+ CLASS_TEST=Object.class
+ cat << \EOF > $JAVA_TEST
+-/* #line 24049 "configure" */
++/* #line 25303 "configure" */
+ package java.lang;
+ 
+ public class Object
+@@ -24139,7 +25393,7 @@
+ if uudecode$EXEEXT Test.uue; then
+         ac_cv_prog_uudecode_base64=yes
+ else
+-        echo "configure: 24142: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
++        echo "configure: 25396: uudecode had trouble decoding base 64 file 'Test.uue'" >&5
+         echo "configure: failed file was:" >&5
+         cat Test.uue >&5
+         ac_cv_prog_uudecode_base64=no
+@@ -24167,7 +25421,7 @@
+ CLASS_TEST=Test.class
+ TEST=Test
+ cat << \EOF > $JAVA_TEST
+-/* [#]line 24170 "configure" */
++/* [#]line 25424 "configure" */
+ public class Test {
+ public static void main (String args[]) {
+         System.exit (0);
+@@ -24375,7 +25629,7 @@
+   JAVA_TEST=Test.java
+   CLASS_TEST=Test.class
+   cat << \EOF > $JAVA_TEST
+-  /* #line 24378 "configure" */
++  /* #line 25632 "configure" */
+   public class Test
+   {
+     public static void main(String args)
+diff -Naur gcc-4.8.1.orig/libjava/classpath/m4/pkg.m4 gcc-4.8.1/libjava/classpath/m4/pkg.m4
+--- gcc-4.8.1.orig/libjava/classpath/m4/pkg.m4	2005-09-23 12:31:48.000000000 -0500
++++ gcc-4.8.1/libjava/classpath/m4/pkg.m4	2013-06-20 08:12:44.938633000 -0500
+@@ -6,7 +6,7 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
++    AC_PATH_TOOL(PKG_CONFIG, pkg-config, no)
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+diff -Naur gcc-4.8.1.orig/libjava/configure gcc-4.8.1/libjava/configure
+--- gcc-4.8.1.orig/libjava/configure	2012-12-12 07:40:15.000000000 -0600
++++ gcc-4.8.1/libjava/configure	2013-06-20 08:12:44.938633000 -0500
+@@ -3206,7 +3206,7 @@
+     -I\$(top_builddir)/../libstdc++-v3/include/\$(target_noncanonical) \
+     -I\$(top_srcdir)/../libstdc++-v3/libsupc++"
+   LIBSTDCXX_RAW_CXX_LDFLAGS="\
+-    -I\$(top_builddir)/../libstdc++-v3/src/libstdc++.la"
++    \$(top_builddir)/../libstdc++-v3/src/libstdc++.la"
+ 
+ 
+ 
+@@ -22806,8 +22806,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -22833,7 +22834,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -22847,6 +22847,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -22906,8 +22963,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -22933,7 +22991,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -22947,6 +23004,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+@@ -23006,8 +23120,9 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    # Extract the first word of "pkg-config", so it can be a program name with args.
+-set dummy pkg-config; ac_word=$2
++    if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+@@ -23033,7 +23148,6 @@
+   done
+ IFS=$as_save_IFS
+ 
+-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+   ;;
+ esac
+ fi
+@@ -23047,6 +23161,63 @@
+ fi
+ 
+ 
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
++  # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++  case $ac_pt_PKG_CONFIG in
++  [\\/]* | ?:[\\/]*)
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++  ;;
++  *)
++  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++  ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG="no"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
++  fi
++else
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+diff -Naur gcc-4.8.1.orig/libjava/pkg.m4 gcc-4.8.1/libjava/pkg.m4
+--- gcc-4.8.1.orig/libjava/pkg.m4	2004-01-30 16:01:11.000000000 -0600
++++ gcc-4.8.1/libjava/pkg.m4	2013-06-20 08:12:44.938633000 -0500
+@@ -6,7 +6,7 @@
+   succeeded=no
+ 
+   if test -z "$PKG_CONFIG"; then
+-    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
++    AC_PATH_TOOL(PKG_CONFIG, pkg-config, no)
+   fi
+ 
+   if test "$PKG_CONFIG" = "no" ; then
+diff -Naur gcc-4.8.1.orig/libobjc/exception.c gcc-4.8.1/libobjc/exception.c
+--- gcc-4.8.1.orig/libobjc/exception.c	2013-02-03 05:16:21.000000000 -0600
++++ gcc-4.8.1/libobjc/exception.c	2013-07-04 04:04:47.837967000 -0500
+@@ -202,7 +202,7 @@
+ #ifdef SJLJ_EXCEPTIONS
+ #define PERSONALITY_FUNCTION	__gnu_objc_personality_sj0
+ #define __builtin_eh_return_data_regno(x) x
+-#elif defined(__SEH__)
++#elif defined(__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
+ #define PERSONALITY_FUNCTION	__gnu_objc_personality_imp
+ #else
+ #define PERSONALITY_FUNCTION	__gnu_objc_personality_v0
+@@ -227,7 +227,7 @@
+ 
+ #define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
+ 
+-#ifdef __SEH__
++#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
+ static
+ #endif
+ _Unwind_Reason_Code
+@@ -524,7 +524,7 @@
+   abort ();
+ }
+ 
+-#ifdef __SEH__
++#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__)
+ EXCEPTION_DISPOSITION
+ __gnu_objc_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame,
+ 			     PCONTEXT ms_orig_context,
+@@ -533,4 +533,4 @@
+   return _GCC_specific_handler (ms_exc, this_frame, ms_orig_context,
+ 				ms_disp, __gnu_objc_personality_imp);
+ }
+-#endif /* SEH */
++#endif
+diff -Naur gcc-4.8.1.orig/libquadmath/libquadmath.info gcc-4.8.1/libquadmath/libquadmath.info
+--- gcc-4.8.1.orig/libquadmath/libquadmath.info	2013-05-31 05:01:34.000000000 -0500
++++ gcc-4.8.1/libquadmath/libquadmath.info	1969-12-31 18:00:00.000000000 -0600
+@@ -1,924 +0,0 @@
+-This is libquadmath.info, produced by makeinfo version 4.13 from
+-/d/gcc-4.8.1/gcc-4.8.1/libquadmath/libquadmath.texi.
+-
+-Copyright (C) 2010-2013 Free Software Foundation, Inc.
+-
+-     Permission is granted to copy, distribute and/or modify this
+-     document under the terms of the GNU Free Documentation License,
+-     Version 1.2 or any later version published by the Free Software
+-     Foundation; with no Invariant Sections, with the Front-Cover Texts
+-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+-     below.  A copy of the license is included in the section entitled
+-     "GNU Free Documentation License."
+-
+-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy
+-     and modify this GNU manual.
+-
+-INFO-DIR-SECTION GNU Libraries
+-START-INFO-DIR-ENTRY
+-* libquadmath: (libquadmath).                  GCC Quad-Precision Math Library
+-END-INFO-DIR-ENTRY
+-
+-   This manual documents the GCC Quad-Precision Math Library API.
+-
+-   Published by the Free Software Foundation 51 Franklin Street, Fifth
+-Floor Boston, MA 02110-1301 USA
+-
+-   Copyright (C) 2010-2013 Free Software Foundation, Inc.
+-
+-     Permission is granted to copy, distribute and/or modify this
+-     document under the terms of the GNU Free Documentation License,
+-     Version 1.2 or any later version published by the Free Software
+-     Foundation; with no Invariant Sections, with the Front-Cover Texts
+-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
+-     below.  A copy of the license is included in the section entitled
+-     "GNU Free Documentation License."
+-
+-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy
+-     and modify this GNU manual.
+-
+-
+-File: libquadmath.info,  Node: Top,  Next: Typedef and constants,  Up: (dir)
+-
+-Introduction
+-************
+-
+-This manual documents the usage of libquadmath, the GCC Quad-Precision
+-Math Library Application Programming Interface (API).
+-
+-* Menu:
+-
+-* Typedef and constants::      Defined data types and constants
+-* Math Library Routines::      The Libquadmath math runtime application
+-                               programming interface.
+-* I/O Library Routines::       The Libquadmath I/O runtime application
+-                               programming interface.
+-* GNU Free Documentation License::
+-                               How you can copy and share this manual.
+-* Reporting Bugs::             How to report bugs in GCC Libquadmath.
+-
+-
+-File: libquadmath.info,  Node: Typedef and constants,  Next: Math Library Routines,  Prev: Top,  Up: Top
+-
+-1 Typedef and constants
+-***********************
+-
+-The following data type has been defined via `typedef'.
+-
+-`__complex128': `__float128'-based complex number
+-
+-   The following macros are defined, which give the numeric limits of
+-the `__float128' data type.
+-
+-`FLT128_MAX': largest finite number
+-
+-`FLT128_MIN': smallest positive number with full precision
+-
+-`FLT128_EPSILON': difference between 1 and the next larger
+-     representable number
+-
+-`FLT128_DENORM_MIN': smallest positive denormalized number
+-
+-`FLT128_MANT_DIG': number of digits in the mantissa (bit precision)
+-
+-`FLT128_MIN_EXP': maximal negative exponent
+-
+-`FLT128_MAX_EXP': maximal positive exponent
+-
+-`FLT128_DIG': number of decimal digits in the mantissa
+-
+-`FLT128_MIN_10_EXP': maximal negative decimal exponent
+-
+-`FLT128_MAX_10_EXP': maximal positive decimal exponent
+-
+-   The following mathematical constants of type `__float128' are
+-defined.
+-
+-`M_Eq': the constant e (Euler's number)
+-
+-`M_LOG2Eq': binary logarithm of 2
+-
+-`M_LOG10Eq': common, decimal logarithm of 2
+-
+-`M_LN2q': natural logarithm of 2
+-
+-`M_LN10q': natural logarithm of 10
+-
+-`M_PIq': pi
+-
+-`M_PI_2q': pi divided by two
+-
+-`M_PI_4q': pi divided by four
+-
+-`M_1_PIq': one over pi
+-
+-`M_2_PIq': one over two pi
+-
+-`M_2_SQRTPIq': two over square root of pi
+-
+-`M_SQRT2q': square root of 2
+-
+-`M_SQRT1_2q': one over square root of 2
+-
+-
+-File: libquadmath.info,  Node: Math Library Routines,  Next: I/O Library Routines,  Prev: Typedef and constants,  Up: Top
+-
+-2 Math Library Routines
+-***********************
+-
+-The following mathematical functions are available:
+-
+-`acosq': arc cosine function
+-
+-`acoshq': inverse hyperbolic cosine function
+-
+-`asinq': arc sine function
+-
+-`asinhq': inverse hyperbolic sine function
+-
+-`atanq': arc tangent function
+-
+-`atanhq': inverse hyperbolic tangent function
+-
+-`atan2q': arc tangent function
+-
+-`cbrtq': cube root function
+-
+-`ceilq': ceiling value function
+-
+-`copysignq': copy sign of a number
+-
+-`coshq': hyperbolic cosine function
+-
+-`cosq': cosine function
+-
+-`erfq': error function
+-
+-`erfcq': complementary error function
+-
+-`expq': exponential function
+-
+-`expm1q': exponential minus 1 function
+-
+-`fabsq': absolute value function
+-
+-`fdimq': positive difference function
+-
+-`finiteq': check finiteness of value
+-
+-`floorq': floor value function
+-
+-`fmaq': fused multiply and add
+-
+-`fmaxq': determine maximum of two values
+-
+-`fminq': determine minimum of two values
+-
+-`fmodq': remainder value function
+-
+-`frexpq': extract mantissa and exponent
+-
+-`hypotq': Eucledian distance function
+-
+-`ilogbq': get exponent of the value
+-
+-`isinfq': check for infinity
+-
+-`isnanq': check for not a number
+-
+-`j0q': Bessel function of the first kind, first order
+-
+-`j1q': Bessel function of the first kind, second order
+-
+-`jnq': Bessel function of the first kind, N-th order
+-
+-`ldexpq': load exponent of the value
+-
+-`lgammaq': logarithmic gamma function
+-
+-`llrintq': round to nearest integer value
+-
+-`llroundq': round to nearest integer value away from zero
+-
+-`logq': natural logarithm function
+-
+-`log10q': base 10 logarithm function
+-
+-`log1pq': compute natural logarithm of the value plus one
+-
+-`log2q': base 2 logarithm function
+-
+-`lrintq': round to nearest integer value
+-
+-`lroundq': round to nearest integer value away from zero
+-
+-`modfq': decompose the floating-point number
+-
+-`nanq': return quiet NaN
+-
+-`nearbyintq': round to nearest integer
+-
+-`nextafterq': next representable floating-point number
+-
+-`powq': power function
+-
+-`remainderq': remainder function
+-
+-`remquoq': remainder and part of quotient
+-
+-`rintq': round-to-nearest integral value
+-
+-`roundq': round-to-nearest integral value, return `__float128'
+-
+-`scalblnq': compute exponent using `FLT_RADIX'
+-
+-`scalbnq': compute exponent using `FLT_RADIX'
+-
+-`signbitq': return sign bit
+-
+-`sincosq': calculate sine and cosine simulataneously
+-
+-`sinhq': hyperbolic sine function
+-
+-`sinq': sine function
+-
+-`sqrtq': square root function
+-
+-`tanq': tangent function
+-
+-`tanhq': hyperbolic tangent function
+-
+-`tgammaq': true gamma function
+-
+-`truncq': round to integer, towards zero
+-
+-`y0q': Bessel function of the second kind, first order
+-
+-`y1q': Bessel function of the second kind, second order
+-
+-`ynq': Bessel function of the second kind, N-th order
+-
+-`cabsq' complex absolute value function
+-
+-`cargq': calculate the argument
+-
+-`cimagq' imaginary part of complex number
+-
+-`crealq': real part of complex number
+-
+-`cacoshq': complex arc hyperbolic cosine function
+-
+-`cacosq': complex arc cosine function
+-
+-`casinhq': complex arc hyperbolic sine function
+-
+-`casinq': complex arc sine function
+-
+-`catanhq': complex arc hyperbolic tangent function
+-
+-`catanq': complex arc tangent function
+-
+-`ccosq' complex cosine function:
+-
+-`ccoshq': complex hyperbolic cosine function
+-
+-`cexpq': complex exponential function
+-
+-`cexpiq': computes the exponential function of "i" times a
+-     real value
+-
+-`clogq': complex natural logarithm
+-
+-`clog10q': complex base 10 logarithm
+-
+-`conjq': complex conjugate function
+-
+-`cpowq': complex power function
+-
+-`cprojq': project into Riemann Sphere
+-
+-`csinq': complex sine function
+-
+-`csinhq': complex hyperbolic sine function
+-
+-`csqrtq': complex square root
+-
+-`ctanq': complex tangent function
+-
+-`ctanhq': complex hyperbolic tangent function
+-
+-
+-File: libquadmath.info,  Node: I/O Library Routines,  Next: GNU Free Documentation License,  Prev: Math Library Routines,  Up: Top
+-
+-3 I/O Library Routines
+-**********************
+-
+-* Menu:
+-
+-* `strtoflt128':          strtoflt128,          Convert from string
+-* `quadmath_snprintf':    quadmath_snprintf,    Convert to string
+-
+-
+-File: libquadmath.info,  Node: strtoflt128,  Next: quadmath_snprintf,  Up: I/O Library Routines
+-
+-3.1 `strtoflt128' -- Convert from string
+-========================================
+-
+-The function `strtoflt128' converts a string into a `__float128' number.
+-
+-Syntax
+-     `__float128 strtoflt128 (const char *s, char **sp)'
+-
+-_Arguments_:
+-     S          input string
+-     SP         the address of the next character in the string
+-
+-     The argument SP contains, if not `NULL', the address of the next
+-     character following the parts of the string, which have been read.
+-
+-Example
+-          #include <quadmath.h>
+-
+-          int main ()
+-          {
+-            __float128 r;
+-
+-            r = strtoflt128 ("1.2345678", NULL);
+-
+-            return 0;
+-          }
+-
+-
+-File: libquadmath.info,  Node: quadmath_snprintf,  Prev: strtoflt128,  Up: I/O Library Routines
+-
+-3.2 `quadmath_snprintf' -- Convert to string
+-============================================
+-
+-The function `quadmath_snprintf' converts a `__float128' floating-point
+-number into a string.  It is a specialized alternative to `snprintf',
+-where the format string is restricted to a single conversion specifier
+-with `Q' modifier and conversion specifier `e', `E', `f', `F', `g',
+-`G', `a' or `A', with no extra characters before or after the
+-conversion specifier.  The `%m$' or `*m$' style must not be used in the
+-format.
+-
+-Syntax
+-     `int quadmath_snprintf (char *s, size_t size, const char *format,
+-     ...)'
+-
+-_Arguments_:
+-     S          output string
+-     SIZE       byte size of the string, including tailing NUL
+-     FORMAT     conversion specifier string
+-
+-Note
+-     On some targets when supported by the C library hooks are installed
+-     for `printf' family of functions, so that `printf ("%Qe", 1.2Q);'
+-     etc. works too.
+-
+-Example
+-          #include <quadmath.h>
+-          #include <stdlib.h>
+-          #include <stdio.h>
+-
+-          int main ()
+-          {
+-            __float128 r;
+-            int prec = 20;
+-            int width = 46;
+-            char buf[128];
+-
+-            r = 2.0q;
+-            r = sqrtq (r);
+-            int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r);
+-            if ((size_t) n < sizeof buf)
+-              printf ("%s\n", buf);
+-              /* Prints: +1.41421356237309504880e+00 */
+-            quadmath_snprintf (buf, sizeof buf, "%Qa", r);
+-            if ((size_t) n < sizeof buf)
+-              printf ("%s\n", buf);
+-              /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0 */
+-            n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r);
+-            if (n > -1)
+-              {
+-                char *str = malloc (n + 1);
+-                if (str)
+-                  {
+-                    quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r);
+-                    printf ("%s\n", str);
+-                    /* Prints: +1.41421356237309504880e+00 */
+-                  }
+-                free (str);
+-              }
+-            return 0;
+-          }
+-
+-
+-
+-File: libquadmath.info,  Node: GNU Free Documentation License,  Next: Reporting Bugs,  Prev: I/O Library Routines,  Up: Top
+-
+-GNU Free Documentation License
+-******************************
+-
+-                     Version 1.3, 3 November 2008
+-
+-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+-     `http://fsf.org/'
+-
+-     Everyone is permitted to copy and distribute verbatim copies
+-     of this license document, but changing it is not allowed.
+-
+-  0. PREAMBLE
+-
+-     The purpose of this License is to make a manual, textbook, or other
+-     functional and useful document "free" in the sense of freedom: to
+-     assure everyone the effective freedom to copy and redistribute it,
+-     with or without modifying it, either commercially or
+-     noncommercially.  Secondarily, this License preserves for the
+-     author and publisher a way to get credit for their work, while not
+-     being considered responsible for modifications made by others.
+-
+-     This License is a kind of "copyleft", which means that derivative
+-     works of the document must themselves be free in the same sense.
+-     It complements the GNU General Public License, which is a copyleft
+-     license designed for free software.
+-
+-     We have designed this License in order to use it for manuals for
+-     free software, because free software needs free documentation: a
+-     free program should come with manuals providing the same freedoms
+-     that the software does.  But this License is not limited to
+-     software manuals; it can be used for any textual work, regardless
+-     of subject matter or whether it is published as a printed book.
+-     We recommend this License principally for works whose purpose is
+-     instruction or reference.
+-
+-  1. APPLICABILITY AND DEFINITIONS
+-
+-     This License applies to any manual or other work, in any medium,
+-     that contains a notice placed by the copyright holder saying it
+-     can be distributed under the terms of this License.  Such a notice
+-     grants a world-wide, royalty-free license, unlimited in duration,
+-     to use that work under the conditions stated herein.  The
+-     "Document", below, refers to any such manual or work.  Any member
+-     of the public is a licensee, and is addressed as "you".  You
+-     accept the license if you copy, modify or distribute the work in a
+-     way requiring permission under copyright law.
+-
+-     A "Modified Version" of the Document means any work containing the
+-     Document or a portion of it, either copied verbatim, or with
+-     modifications and/or translated into another language.
+-
+-     A "Secondary Section" is a named appendix or a front-matter section
+-     of the Document that deals exclusively with the relationship of the
+-     publishers or authors of the Document to the Document's overall
+-     subject (or to related matters) and contains nothing that could
+-     fall directly within that overall subject.  (Thus, if the Document
+-     is in part a textbook of mathematics, a Secondary Section may not
+-     explain any mathematics.)  The relationship could be a matter of
+-     historical connection with the subject or with related matters, or
+-     of legal, commercial, philosophical, ethical or political position
+-     regarding them.
+-
+-     The "Invariant Sections" are certain Secondary Sections whose
+-     titles are designated, as being those of Invariant Sections, in
+-     the notice that says that the Document is released under this
+-     License.  If a section does not fit the above definition of
+-     Secondary then it is not allowed to be designated as Invariant.
+-     The Document may contain zero Invariant Sections.  If the Document
+-     does not identify any Invariant Sections then there are none.
+-
+-     The "Cover Texts" are certain short passages of text that are
+-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+-     that says that the Document is released under this License.  A
+-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+-     be at most 25 words.
+-
+-     A "Transparent" copy of the Document means a machine-readable copy,
+-     represented in a format whose specification is available to the
+-     general public, that is suitable for revising the document
+-     straightforwardly with generic text editors or (for images
+-     composed of pixels) generic paint programs or (for drawings) some
+-     widely available drawing editor, and that is suitable for input to
+-     text formatters or for automatic translation to a variety of
+-     formats suitable for input to text formatters.  A copy made in an
+-     otherwise Transparent file format whose markup, or absence of
+-     markup, has been arranged to thwart or discourage subsequent
+-     modification by readers is not Transparent.  An image format is
+-     not Transparent if used for any substantial amount of text.  A
+-     copy that is not "Transparent" is called "Opaque".
+-
+-     Examples of suitable formats for Transparent copies include plain
+-     ASCII without markup, Texinfo input format, LaTeX input format,
+-     SGML or XML using a publicly available DTD, and
+-     standard-conforming simple HTML, PostScript or PDF designed for
+-     human modification.  Examples of transparent image formats include
+-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+-     can be read and edited only by proprietary word processors, SGML or
+-     XML for which the DTD and/or processing tools are not generally
+-     available, and the machine-generated HTML, PostScript or PDF
+-     produced by some word processors for output purposes only.
+-
+-     The "Title Page" means, for a printed book, the title page itself,
+-     plus such following pages as are needed to hold, legibly, the
+-     material this License requires to appear in the title page.  For
+-     works in formats which do not have any title page as such, "Title
+-     Page" means the text near the most prominent appearance of the
+-     work's title, preceding the beginning of the body of the text.
+-
+-     The "publisher" means any person or entity that distributes copies
+-     of the Document to the public.
+-
+-     A section "Entitled XYZ" means a named subunit of the Document
+-     whose title either is precisely XYZ or contains XYZ in parentheses
+-     following text that translates XYZ in another language.  (Here XYZ
+-     stands for a specific section name mentioned below, such as
+-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+-     To "Preserve the Title" of such a section when you modify the
+-     Document means that it remains a section "Entitled XYZ" according
+-     to this definition.
+-
+-     The Document may include Warranty Disclaimers next to the notice
+-     which states that this License applies to the Document.  These
+-     Warranty Disclaimers are considered to be included by reference in
+-     this License, but only as regards disclaiming warranties: any other
+-     implication that these Warranty Disclaimers may have is void and
+-     has no effect on the meaning of this License.
+-
+-  2. VERBATIM COPYING
+-
+-     You may copy and distribute the Document in any medium, either
+-     commercially or noncommercially, provided that this License, the
+-     copyright notices, and the license notice saying this License
+-     applies to the Document are reproduced in all copies, and that you
+-     add no other conditions whatsoever to those of this License.  You
+-     may not use technical measures to obstruct or control the reading
+-     or further copying of the copies you make or distribute.  However,
+-     you may accept compensation in exchange for copies.  If you
+-     distribute a large enough number of copies you must also follow
+-     the conditions in section 3.
+-
+-     You may also lend copies, under the same conditions stated above,
+-     and you may publicly display copies.
+-
+-  3. COPYING IN QUANTITY
+-
+-     If you publish printed copies (or copies in media that commonly
+-     have printed covers) of the Document, numbering more than 100, and
+-     the Document's license notice requires Cover Texts, you must
+-     enclose the copies in covers that carry, clearly and legibly, all
+-     these Cover Texts: Front-Cover Texts on the front cover, and
+-     Back-Cover Texts on the back cover.  Both covers must also clearly
+-     and legibly identify you as the publisher of these copies.  The
+-     front cover must present the full title with all words of the
+-     title equally prominent and visible.  You may add other material
+-     on the covers in addition.  Copying with changes limited to the
+-     covers, as long as they preserve the title of the Document and
+-     satisfy these conditions, can be treated as verbatim copying in
+-     other respects.
+-
+-     If the required texts for either cover are too voluminous to fit
+-     legibly, you should put the first ones listed (as many as fit
+-     reasonably) on the actual cover, and continue the rest onto
+-     adjacent pages.
+-
+-     If you publish or distribute Opaque copies of the Document
+-     numbering more than 100, you must either include a
+-     machine-readable Transparent copy along with each Opaque copy, or
+-     state in or with each Opaque copy a computer-network location from
+-     which the general network-using public has access to download
+-     using public-standard network protocols a complete Transparent
+-     copy of the Document, free of added material.  If you use the
+-     latter option, you must take reasonably prudent steps, when you
+-     begin distribution of Opaque copies in quantity, to ensure that
+-     this Transparent copy will remain thus accessible at the stated
+-     location until at least one year after the last time you
+-     distribute an Opaque copy (directly or through your agents or
+-     retailers) of that edition to the public.
+-
+-     It is requested, but not required, that you contact the authors of
+-     the Document well before redistributing any large number of
+-     copies, to give them a chance to provide you with an updated
+-     version of the Document.
+-
+-  4. MODIFICATIONS
+-
+-     You may copy and distribute a Modified Version of the Document
+-     under the conditions of sections 2 and 3 above, provided that you
+-     release the Modified Version under precisely this License, with
+-     the Modified Version filling the role of the Document, thus
+-     licensing distribution and modification of the Modified Version to
+-     whoever possesses a copy of it.  In addition, you must do these
+-     things in the Modified Version:
+-
+-       A. Use in the Title Page (and on the covers, if any) a title
+-          distinct from that of the Document, and from those of
+-          previous versions (which should, if there were any, be listed
+-          in the History section of the Document).  You may use the
+-          same title as a previous version if the original publisher of
+-          that version gives permission.
+-
+-       B. List on the Title Page, as authors, one or more persons or
+-          entities responsible for authorship of the modifications in
+-          the Modified Version, together with at least five of the
+-          principal authors of the Document (all of its principal
+-          authors, if it has fewer than five), unless they release you
+-          from this requirement.
+-
+-       C. State on the Title page the name of the publisher of the
+-          Modified Version, as the publisher.
+-
+-       D. Preserve all the copyright notices of the Document.
+-
+-       E. Add an appropriate copyright notice for your modifications
+-          adjacent to the other copyright notices.
+-
+-       F. Include, immediately after the copyright notices, a license
+-          notice giving the public permission to use the Modified
+-          Version under the terms of this License, in the form shown in
+-          the Addendum below.
+-
+-       G. Preserve in that license notice the full lists of Invariant
+-          Sections and required Cover Texts given in the Document's
+-          license notice.
+-
+-       H. Include an unaltered copy of this License.
+-
+-       I. Preserve the section Entitled "History", Preserve its Title,
+-          and add to it an item stating at least the title, year, new
+-          authors, and publisher of the Modified Version as given on
+-          the Title Page.  If there is no section Entitled "History" in
+-          the Document, create one stating the title, year, authors,
+-          and publisher of the Document as given on its Title Page,
+-          then add an item describing the Modified Version as stated in
+-          the previous sentence.
+-
+-       J. Preserve the network location, if any, given in the Document
+-          for public access to a Transparent copy of the Document, and
+-          likewise the network locations given in the Document for
+-          previous versions it was based on.  These may be placed in
+-          the "History" section.  You may omit a network location for a
+-          work that was published at least four years before the
+-          Document itself, or if the original publisher of the version
+-          it refers to gives permission.
+-
+-       K. For any section Entitled "Acknowledgements" or "Dedications",
+-          Preserve the Title of the section, and preserve in the
+-          section all the substance and tone of each of the contributor
+-          acknowledgements and/or dedications given therein.
+-
+-       L. Preserve all the Invariant Sections of the Document,
+-          unaltered in their text and in their titles.  Section numbers
+-          or the equivalent are not considered part of the section
+-          titles.
+-
+-       M. Delete any section Entitled "Endorsements".  Such a section
+-          may not be included in the Modified Version.
+-
+-       N. Do not retitle any existing section to be Entitled
+-          "Endorsements" or to conflict in title with any Invariant
+-          Section.
+-
+-       O. Preserve any Warranty Disclaimers.
+-
+-     If the Modified Version includes new front-matter sections or
+-     appendices that qualify as Secondary Sections and contain no
+-     material copied from the Document, you may at your option
+-     designate some or all of these sections as invariant.  To do this,
+-     add their titles to the list of Invariant Sections in the Modified
+-     Version's license notice.  These titles must be distinct from any
+-     other section titles.
+-
+-     You may add a section Entitled "Endorsements", provided it contains
+-     nothing but endorsements of your Modified Version by various
+-     parties--for example, statements of peer review or that the text
+-     has been approved by an organization as the authoritative
+-     definition of a standard.
+-
+-     You may add a passage of up to five words as a Front-Cover Text,
+-     and a passage of up to 25 words as a Back-Cover Text, to the end
+-     of the list of Cover Texts in the Modified Version.  Only one
+-     passage of Front-Cover Text and one of Back-Cover Text may be
+-     added by (or through arrangements made by) any one entity.  If the
+-     Document already includes a cover text for the same cover,
+-     previously added by you or by arrangement made by the same entity
+-     you are acting on behalf of, you may not add another; but you may
+-     replace the old one, on explicit permission from the previous
+-     publisher that added the old one.
+-
+-     The author(s) and publisher(s) of the Document do not by this
+-     License give permission to use their names for publicity for or to
+-     assert or imply endorsement of any Modified Version.
+-
+-  5. COMBINING DOCUMENTS
+-
+-     You may combine the Document with other documents released under
+-     this License, under the terms defined in section 4 above for
+-     modified versions, provided that you include in the combination
+-     all of the Invariant Sections of all of the original documents,
+-     unmodified, and list them all as Invariant Sections of your
+-     combined work in its license notice, and that you preserve all
+-     their Warranty Disclaimers.
+-
+-     The combined work need only contain one copy of this License, and
+-     multiple identical Invariant Sections may be replaced with a single
+-     copy.  If there are multiple Invariant Sections with the same name
+-     but different contents, make the title of each such section unique
+-     by adding at the end of it, in parentheses, the name of the
+-     original author or publisher of that section if known, or else a
+-     unique number.  Make the same adjustment to the section titles in
+-     the list of Invariant Sections in the license notice of the
+-     combined work.
+-
+-     In the combination, you must combine any sections Entitled
+-     "History" in the various original documents, forming one section
+-     Entitled "History"; likewise combine any sections Entitled
+-     "Acknowledgements", and any sections Entitled "Dedications".  You
+-     must delete all sections Entitled "Endorsements."
+-
+-  6. COLLECTIONS OF DOCUMENTS
+-
+-     You may make a collection consisting of the Document and other
+-     documents released under this License, and replace the individual
+-     copies of this License in the various documents with a single copy
+-     that is included in the collection, provided that you follow the
+-     rules of this License for verbatim copying of each of the
+-     documents in all other respects.
+-
+-     You may extract a single document from such a collection, and
+-     distribute it individually under this License, provided you insert
+-     a copy of this License into the extracted document, and follow
+-     this License in all other respects regarding verbatim copying of
+-     that document.
+-
+-  7. AGGREGATION WITH INDEPENDENT WORKS
+-
+-     A compilation of the Document or its derivatives with other
+-     separate and independent documents or works, in or on a volume of
+-     a storage or distribution medium, is called an "aggregate" if the
+-     copyright resulting from the compilation is not used to limit the
+-     legal rights of the compilation's users beyond what the individual
+-     works permit.  When the Document is included in an aggregate, this
+-     License does not apply to the other works in the aggregate which
+-     are not themselves derivative works of the Document.
+-
+-     If the Cover Text requirement of section 3 is applicable to these
+-     copies of the Document, then if the Document is less than one half
+-     of the entire aggregate, the Document's Cover Texts may be placed
+-     on covers that bracket the Document within the aggregate, or the
+-     electronic equivalent of covers if the Document is in electronic
+-     form.  Otherwise they must appear on printed covers that bracket
+-     the whole aggregate.
+-
+-  8. TRANSLATION
+-
+-     Translation is considered a kind of modification, so you may
+-     distribute translations of the Document under the terms of section
+-     4.  Replacing Invariant Sections with translations requires special
+-     permission from their copyright holders, but you may include
+-     translations of some or all Invariant Sections in addition to the
+-     original versions of these Invariant Sections.  You may include a
+-     translation of this License, and all the license notices in the
+-     Document, and any Warranty Disclaimers, provided that you also
+-     include the original English version of this License and the
+-     original versions of those notices and disclaimers.  In case of a
+-     disagreement between the translation and the original version of
+-     this License or a notice or disclaimer, the original version will
+-     prevail.
+-
+-     If a section in the Document is Entitled "Acknowledgements",
+-     "Dedications", or "History", the requirement (section 4) to
+-     Preserve its Title (section 1) will typically require changing the
+-     actual title.
+-
+-  9. TERMINATION
+-
+-     You may not copy, modify, sublicense, or distribute the Document
+-     except as expressly provided under this License.  Any attempt
+-     otherwise to copy, modify, sublicense, or distribute it is void,
+-     and will automatically terminate your rights under this License.
+-
+-     However, if you cease all violation of this License, then your
+-     license from a particular copyright holder is reinstated (a)
+-     provisionally, unless and until the copyright holder explicitly
+-     and finally terminates your license, and (b) permanently, if the
+-     copyright holder fails to notify you of the violation by some
+-     reasonable means prior to 60 days after the cessation.
+-
+-     Moreover, your license from a particular copyright holder is
+-     reinstated permanently if the copyright holder notifies you of the
+-     violation by some reasonable means, this is the first time you have
+-     received notice of violation of this License (for any work) from
+-     that copyright holder, and you cure the violation prior to 30 days
+-     after your receipt of the notice.
+-
+-     Termination of your rights under this section does not terminate
+-     the licenses of parties who have received copies or rights from
+-     you under this License.  If your rights have been terminated and
+-     not permanently reinstated, receipt of a copy of some or all of
+-     the same material does not give you any rights to use it.
+-
+- 10. FUTURE REVISIONS OF THIS LICENSE
+-
+-     The Free Software Foundation may publish new, revised versions of
+-     the GNU Free Documentation License from time to time.  Such new
+-     versions will be similar in spirit to the present version, but may
+-     differ in detail to address new problems or concerns.  See
+-     `http://www.gnu.org/copyleft/'.
+-
+-     Each version of the License is given a distinguishing version
+-     number.  If the Document specifies that a particular numbered
+-     version of this License "or any later version" applies to it, you
+-     have the option of following the terms and conditions either of
+-     that specified version or of any later version that has been
+-     published (not as a draft) by the Free Software Foundation.  If
+-     the Document does not specify a version number of this License,
+-     you may choose any version ever published (not as a draft) by the
+-     Free Software Foundation.  If the Document specifies that a proxy
+-     can decide which future versions of this License can be used, that
+-     proxy's public statement of acceptance of a version permanently
+-     authorizes you to choose that version for the Document.
+-
+- 11. RELICENSING
+-
+-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+-     World Wide Web server that publishes copyrightable works and also
+-     provides prominent facilities for anybody to edit those works.  A
+-     public wiki that anybody can edit is an example of such a server.
+-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+-     site means any set of copyrightable works thus published on the MMC
+-     site.
+-
+-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+-     license published by Creative Commons Corporation, a not-for-profit
+-     corporation with a principal place of business in San Francisco,
+-     California, as well as future copyleft versions of that license
+-     published by that same organization.
+-
+-     "Incorporate" means to publish or republish a Document, in whole or
+-     in part, as part of another Document.
+-
+-     An MMC is "eligible for relicensing" if it is licensed under this
+-     License, and if all works that were first published under this
+-     License somewhere other than this MMC, and subsequently
+-     incorporated in whole or in part into the MMC, (1) had no cover
+-     texts or invariant sections, and (2) were thus incorporated prior
+-     to November 1, 2008.
+-
+-     The operator of an MMC Site may republish an MMC contained in the
+-     site under CC-BY-SA on the same site at any time before August 1,
+-     2009, provided the MMC is eligible for relicensing.
+-
+-
+-ADDENDUM: How to use this License for your documents
+-====================================================
+-
+-To use this License in a document you have written, include a copy of
+-the License in the document and put the following copyright and license
+-notices just after the title page:
+-
+-       Copyright (C)  YEAR  YOUR NAME.
+-       Permission is granted to copy, distribute and/or modify this document
+-       under the terms of the GNU Free Documentation License, Version 1.3
+-       or any later version published by the Free Software Foundation;
+-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+-       Texts.  A copy of the license is included in the section entitled ``GNU
+-       Free Documentation License''.
+-
+-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+-Texts, replace the "with...Texts." line with this:
+-
+-         with the Invariant Sections being LIST THEIR TITLES, with
+-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+-         being LIST.
+-
+-   If you have Invariant Sections without Cover Texts, or some other
+-combination of the three, merge those two alternatives to suit the
+-situation.
+-
+-   If your document contains nontrivial examples of program code, we
+-recommend releasing these examples in parallel under your choice of
+-free software license, such as the GNU General Public License, to
+-permit their use in free software.
+-
+-
+-File: libquadmath.info,  Node: Reporting Bugs,  Prev: GNU Free Documentation License,  Up: Top
+-
+-4 Reporting Bugs
+-****************
+-
+-Bugs in the GCC Quad-Precision Math Library implementation should be
+-reported via `http://gcc.gnu.org/bugs.html'.
+-
+-
+-
+-Tag Table:
+-Node: Top1670
+-Node: Typedef and constants2404
+-Node: Math Library Routines3844
+-Node: I/O Library Routines7649
+-Node: strtoflt1287974
+-Node: quadmath_snprintf8732
+-Node: GNU Free Documentation License10940
+-Node: Reporting Bugs36106
+-
+-End Tag Table
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt gcc-4.8.1/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
+--- gcc-4.8.1.orig/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt	2012-02-10 02:15:37.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt	2013-06-07 04:52:21.201975000 -0500
+@@ -543,6 +543,7 @@
+ FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
+ FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
+ FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
++FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
+ FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
+ FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
+ FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
+@@ -732,6 +733,8 @@
+ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
+ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
+ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
++FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18
++FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18
+ FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
+ FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
+ FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
+@@ -1353,6 +1356,7 @@
+ FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
++FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@@GLIBCXX_3.4.18
+ FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
+ FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
+ FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
+@@ -1635,6 +1639,11 @@
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
++FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18
++FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18
++FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18
++FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
++FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
+ FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+@@ -2119,6 +2128,8 @@
+ FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
+ FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
+ FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
++FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
++FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
+ FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+ FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
+ FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
+@@ -2678,6 +2689,7 @@
+ FUNC:__cxa_guard_release@@CXXABI_1.3
+ FUNC:__cxa_pure_virtual@@CXXABI_1.3
+ FUNC:__cxa_rethrow@@CXXABI_1.3
++FUNC:__cxa_thread_atexit@@CXXABI_1.3.7
+ FUNC:__cxa_throw@@CXXABI_1.3
+ FUNC:__cxa_tm_cleanup@@CXXABI_TM_1
+ FUNC:__cxa_vec_cctor@@CXXABI_1.3
+@@ -2724,6 +2736,7 @@
+ OBJECT:0:CXXABI_1.3.4
+ OBJECT:0:CXXABI_1.3.5
+ OBJECT:0:CXXABI_1.3.6
++OBJECT:0:CXXABI_1.3.7
+ OBJECT:0:CXXABI_LDBL_1.3
+ OBJECT:0:CXXABI_TM_1
+ OBJECT:0:GLIBCXX_3.4
+@@ -2736,6 +2749,8 @@
+ OBJECT:0:GLIBCXX_3.4.15
+ OBJECT:0:GLIBCXX_3.4.16
+ OBJECT:0:GLIBCXX_3.4.17
++OBJECT:0:GLIBCXX_3.4.18
++OBJECT:0:GLIBCXX_3.4.19
+ OBJECT:0:GLIBCXX_3.4.2
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+@@ -3193,6 +3208,8 @@
+ OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
++OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19
++OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19
+ OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
+ OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
+ OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/configure.host gcc-4.8.1/libstdc++-v3/configure.host
+--- gcc-4.8.1.orig/libstdc++-v3/configure.host	2012-10-15 16:12:23.000000000 -0500
++++ gcc-4.8.1/libstdc++-v3/configure.host	2013-06-18 20:18:38.348158000 -0500
+@@ -330,7 +330,7 @@
+       mips64*)
+ 	abi_baseline_pair=mips64-linux-gnu
+ 	;;
+-      powerpc64)
++      powerpc64*)
+         abi_baseline_pair=powerpc64-linux-gnu
+         ;;
+       s390)
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/c++config gcc-4.8.1/libstdc++-v3/include/bits/c++config
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/c++config	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/c++config	2013-06-12 15:44:17.319811000 -0500
+@@ -84,6 +84,12 @@
+ # define _GLIBCXX_DEPRECATED
+ #endif
+ 
++// Macros for ABI tag attributes.
++#ifndef _GLIBCXX_ABI_TAG_CXX11
++# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
++#endif
++
++
+ #if __cplusplus
+ 
+ // Macro for constexpr, to support in mixed 03/0x mode.
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/random.h gcc-4.8.1/libstdc++-v3/include/bits/random.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/random.h	2013-02-04 13:28:40.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/random.h	2013-08-07 07:13:24.193280000 -0500
+@@ -2178,7 +2178,7 @@
+        */
+       result_type
+       min() const
+-      { return std::numeric_limits<result_type>::min(); }
++      { return std::numeric_limits<result_type>::lowest(); }
+ 
+       /**
+        * @brief Returns the least upper bound value of the distribution.
+@@ -3011,7 +3011,7 @@
+        */
+       result_type
+       min() const
+-      { return std::numeric_limits<result_type>::min(); }
++      { return std::numeric_limits<result_type>::lowest(); }
+ 
+       /**
+        * @brief Returns the least upper bound value of the distribution.
+@@ -3428,7 +3428,7 @@
+        */
+       result_type
+       min() const
+-      { return std::numeric_limits<result_type>::min(); }
++      { return std::numeric_limits<result_type>::lowest(); }
+ 
+       /**
+        * @brief Returns the least upper bound value of the distribution.
+@@ -3978,7 +3978,8 @@
+ 
+       template<typename _UniformRandomNumberGenerator>
+ 	result_type
+-	_M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t);
++	_M_waiting(_UniformRandomNumberGenerator& __urng,
++		   _IntType __t, double __q);
+ 
+       param_type _M_param;
+ 
+@@ -5135,7 +5136,7 @@
+        */
+       result_type
+       min() const
+-      { return std::numeric_limits<result_type>::min(); }
++      { return std::numeric_limits<result_type>::lowest(); }
+ 
+       /**
+        * @brief Returns the least upper bound value of the distribution.
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/random.tcc gcc-4.8.1/libstdc++-v3/include/bits/random.tcc
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/random.tcc	2013-02-12 04:26:54.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/random.tcc	2013-06-22 16:07:22.456114000 -0500
+@@ -1648,7 +1648,8 @@
+     template<typename _UniformRandomNumberGenerator>
+       typename binomial_distribution<_IntType>::result_type
+       binomial_distribution<_IntType>::
+-      _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t)
++      _M_waiting(_UniformRandomNumberGenerator& __urng,
++		 _IntType __t, double __q)
+       {
+ 	_IntType __x = 0;
+ 	double __sum = 0.0;
+@@ -1663,7 +1664,7 @@
+ 	    __sum += __e / (__t - __x);
+ 	    __x += 1;
+ 	  }
+-	while (__sum <= _M_param._M_q);
++	while (__sum <= __q);
+ 
+ 	return __x - 1;
+       }
+@@ -1784,12 +1785,13 @@
+ 
+ 	    __x += __np + __naf;
+ 
+-	    const _IntType __z = _M_waiting(__urng, __t - _IntType(__x));
++	    const _IntType __z = _M_waiting(__urng, __t - _IntType(__x),
++					    __param._M_q);
+ 	    __ret = _IntType(__x) + __z;
+ 	  }
+ 	else
+ #endif
+-	  __ret = _M_waiting(__urng, __t);
++	  __ret = _M_waiting(__urng, __t, __param._M_q);
+ 
+ 	if (__p12 != __p)
+ 	  __ret = __t - __ret;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_bvector.h gcc-4.8.1/libstdc++-v3/include/bits/stl_bvector.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_bvector.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_bvector.h	2013-07-31 09:36:35.897570000 -0500
+@@ -520,7 +520,7 @@
+     typedef _Bvector_base<_Alloc>			 _Base;
+ 
+ #if __cplusplus >= 201103L
+-    template<typename> friend class hash;
++    template<typename> friend struct hash;
+ #endif
+ 
+   public:
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_map.h gcc-4.8.1/libstdc++-v3/include/bits/stl_map.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_map.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_map.h	2013-06-12 15:44:17.319811000 -0500
+@@ -690,7 +690,8 @@
+       erase(const_iterator __position)
+       { return _M_t.erase(__position); }
+ 
+-      // LWG 2059.
++      // LWG 2059
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(iterator __position)
+       { return _M_t.erase(__position); }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_multimap.h gcc-4.8.1/libstdc++-v3/include/bits/stl_multimap.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_multimap.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_multimap.h	2013-06-12 15:44:17.319811000 -0500
+@@ -596,6 +596,7 @@
+       { return _M_t.erase(__position); }
+ 
+       // LWG 2059.
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(iterator __position)
+       { return _M_t.erase(__position); }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_multiset.h gcc-4.8.1/libstdc++-v3/include/bits/stl_multiset.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_multiset.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_multiset.h	2013-06-12 15:44:17.319811000 -0500
+@@ -532,6 +532,7 @@
+        *  not touched in any way.  Managing the pointer is the user's
+        *  responsibility.
+        */
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __position)
+       { return _M_t.erase(__position); }
+@@ -583,6 +584,7 @@
+        *  touched in any way.  Managing the pointer is the user's
+        *  responsibility.
+        */
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __first, const_iterator __last)
+       { return _M_t.erase(__first, __last); }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_set.h gcc-4.8.1/libstdc++-v3/include/bits/stl_set.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_set.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_set.h	2013-06-12 15:44:17.319811000 -0500
+@@ -546,6 +546,7 @@
+        *  touched in any way.  Managing the pointer is the user's
+        *  responsibility.
+        */
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __position)
+       { return _M_t.erase(__position); }
+@@ -597,6 +598,7 @@
+        *  the element is itself a pointer, the pointed-to memory is not touched
+        *  in any way.  Managing the pointer is the user's responsibility.
+        */
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __first, const_iterator __last)
+       { return _M_t.erase(__first, __last); }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_tree.h gcc-4.8.1/libstdc++-v3/include/bits/stl_tree.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/stl_tree.h	2013-03-14 18:28:11.000000000 -0500
++++ gcc-4.8.1/libstdc++-v3/include/bits/stl_tree.h	2013-06-12 15:44:17.319811000 -0500
+@@ -336,21 +336,21 @@
+               _Node_allocator;
+ 
+     protected:
+-      typedef _Rb_tree_node_base* _Base_ptr;
+-      typedef const _Rb_tree_node_base* _Const_Base_ptr;
++      typedef _Rb_tree_node_base* 		_Base_ptr;
++      typedef const _Rb_tree_node_base* 	_Const_Base_ptr;
+ 
+     public:
+-      typedef _Key key_type;
+-      typedef _Val value_type;
+-      typedef value_type* pointer;
+-      typedef const value_type* const_pointer;
+-      typedef value_type& reference;
+-      typedef const value_type& const_reference;
+-      typedef _Rb_tree_node<_Val>* _Link_type;
+-      typedef const _Rb_tree_node<_Val>* _Const_Link_type;
+-      typedef size_t size_type;
+-      typedef ptrdiff_t difference_type;
+-      typedef _Alloc allocator_type;
++      typedef _Key 				key_type;
++      typedef _Val 				value_type;
++      typedef value_type* 			pointer;
++      typedef const value_type* 		const_pointer;
++      typedef value_type& 			reference;
++      typedef const value_type& 		const_reference;
++      typedef _Rb_tree_node<_Val>* 		_Link_type;
++      typedef const _Rb_tree_node<_Val>*	_Const_Link_type;
++      typedef size_t 				size_type;
++      typedef ptrdiff_t 			difference_type;
++      typedef _Alloc 				allocator_type;
+ 
+       _Node_allocator&
+       _M_get_Node_allocator() _GLIBCXX_NOEXCEPT
+@@ -800,6 +800,7 @@
+ #if __cplusplus >= 201103L
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // DR 130. Associative erase should return an iterator.
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __position)
+       {
+@@ -810,6 +811,7 @@
+       }
+ 
+       // LWG 2059.
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(iterator __position)
+       {
+@@ -833,6 +835,7 @@
+ #if __cplusplus >= 201103L
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // DR 130. Associative erase should return an iterator.
++      _GLIBCXX_ABI_TAG_CXX11
+       iterator
+       erase(const_iterator __first, const_iterator __last)
+       {
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/bits/unordered_map.h gcc-4.8.1/libstdc++-v3/include/bits/unordered_map.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/bits/unordered_map.h	2013-01-16 17:56:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/bits/unordered_map.h	2013-06-14 18:38:33.460951000 -0500
+@@ -367,7 +367,7 @@
+ 						    _Pair&&>::value>::type>
+ 	std::pair<iterator, bool>
+ 	insert(_Pair&& __x)
+-	{ return _M_h.insert(std::move(__x)); }
++        { return _M_h.insert(std::forward<_Pair>(__x)); }
+       //@}
+ 
+       //@{
+@@ -401,7 +401,7 @@
+ 						    _Pair&&>::value>::type>
+ 	iterator
+ 	insert(const_iterator __hint, _Pair&& __x)
+-	{ return _M_h.insert(__hint, std::move(__x)); }
++	{ return _M_h.insert(__hint, std::forward<_Pair>(__x)); }
+       //@}
+ 
+       /**
+@@ -1032,7 +1032,7 @@
+ 						    _Pair&&>::value>::type>
+ 	iterator
+ 	insert(_Pair&& __x)
+-	{ return _M_h.insert(std::move(__x)); }
++        { return _M_h.insert(std::forward<_Pair>(__x)); }
+       //@}
+ 
+       //@{
+@@ -1064,7 +1064,7 @@
+ 						    _Pair&&>::value>::type>
+ 	iterator
+ 	insert(const_iterator __hint, _Pair&& __x)
+-	{ return _M_h.insert(__hint, std::move(__x)); }
++        { return _M_h.insert(__hint, std::forward<_Pair>(__x)); }
+       //@}
+ 
+       /**
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/ext/atomicity.h gcc-4.8.1/libstdc++-v3/include/ext/atomicity.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/ext/atomicity.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/ext/atomicity.h	2013-08-07 09:26:29.899636000 -0500
+@@ -29,6 +29,8 @@
+ #ifndef _GLIBCXX_ATOMICITY_H
+ #define _GLIBCXX_ATOMICITY_H	1
+ 
++#pragma GCC system_header
++
+ #include <bits/c++config.h>
+ #include <bits/gthr.h>
+ #include <bits/atomic_word.h>
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/ext/random gcc-4.8.1/libstdc++-v3/include/ext/random
+--- gcc-4.8.1.orig/libstdc++-v3/include/ext/random	2013-03-04 10:24:58.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/ext/random	2013-08-07 07:13:24.193280000 -0500
+@@ -791,7 +791,7 @@
+       result_type
+       min() const
+       { result_type __res;
+-	__res.fill(std::numeric_limits<_RealType>::min());
++	__res.fill(std::numeric_limits<_RealType>::lowest());
+ 	return __res; }
+ 
+       /**
+@@ -2848,7 +2848,7 @@
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace __gnu_cxx
+ 
+-#include "opt_random.h"
++#include "ext/opt_random.h"
+ #include "random.tcc"
+ 
+ #endif // _GLIBCXX_USE_C99_STDINT_TR1
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/Makefile.am gcc-4.8.1/libstdc++-v3/include/Makefile.am
+--- gcc-4.8.1.orig/libstdc++-v3/include/Makefile.am	2013-05-08 14:10:42.000000000 -0500
++++ gcc-4.8.1/libstdc++-v3/include/Makefile.am	2013-07-31 14:29:13.979450000 -0500
+@@ -172,8 +172,7 @@
+ 	${bits_srcdir}/valarray_array.tcc \
+ 	${bits_srcdir}/valarray_before.h \
+ 	${bits_srcdir}/valarray_after.h \
+-	${bits_srcdir}/vector.tcc \
+-	${bits_host_headers}
++	${bits_srcdir}/vector.tcc
+ 
+ bits_host_headers = \
+ 	${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
+@@ -535,8 +534,7 @@
+ 	${ext_srcdir}/vstring.tcc \
+ 	${ext_srcdir}/vstring_fwd.h \
+ 	${ext_srcdir}/vstring_util.h \
+-	${ext_compat_headers} \
+-	${ext_host_headers}
++	${ext_compat_headers}
+ 
+ ext_compat_headers = \
+ 	${backward_srcdir}/hash_set \
+@@ -787,6 +785,7 @@
+ profile_headers = \
+ 	${profile_srcdir}/array \
+ 	${profile_srcdir}/base.h \
++	${profile_srcdir}/unordered_base.h \
+ 	${profile_srcdir}/unordered_map \
+ 	${profile_srcdir}/unordered_set \
+ 	${profile_srcdir}/vector \
+@@ -1048,13 +1047,14 @@
+ 
+ stamp-${host_alias}:
+ 	@-mkdir -p ${host_builddir}
++	@-mkdir -p ${host_builddir}/../ext
+ 	@$(STAMP) stamp-${host_alias}
+ 
+ # Host includes static.
+ # XXX Missing dependency info for {host_headers_extra}
+-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
++stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
+ 	@cd ${host_builddir} && {\
+-	  $(LN_S) ${host_headers} . || true ;\
++	  $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
+@@ -1064,6 +1064,9 @@
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
+ 	} 2>/dev/null
++	@cd ${host_builddir}/../ext && {\
++	  $(LN_S) ${ext_host_headers} . || true ;\
++	} 2>/dev/null
+ 	$(STAMP) stamp-host
+ 
+ # Host includes dynamic.
+@@ -1290,9 +1293,12 @@
+ 	for file in ${profile_impl_headers}; do \
+ 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
+ 	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+-	for file in ${host_headers} ${host_headers_extra} \
++	for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
+ 	 ${thread_host_headers}; do \
+ 	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
++	$(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
++	for file in ${ext_host_headers}; do \
++	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
+ 
+ # By adding these files here, automake will remove them for 'make clean'
+ CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/Makefile.in gcc-4.8.1/libstdc++-v3/include/Makefile.in
+--- gcc-4.8.1.orig/libstdc++-v3/include/Makefile.in	2013-05-08 14:10:42.000000000 -0500
++++ gcc-4.8.1/libstdc++-v3/include/Makefile.in	2013-07-31 14:29:13.979450000 -0500
+@@ -434,8 +434,7 @@
+ 	${bits_srcdir}/valarray_array.tcc \
+ 	${bits_srcdir}/valarray_before.h \
+ 	${bits_srcdir}/valarray_after.h \
+-	${bits_srcdir}/vector.tcc \
+-	${bits_host_headers}
++	${bits_srcdir}/vector.tcc
+ 
+ bits_host_headers = \
+ 	${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
+@@ -795,8 +794,7 @@
+ 	${ext_srcdir}/vstring.tcc \
+ 	${ext_srcdir}/vstring_fwd.h \
+ 	${ext_srcdir}/vstring_util.h \
+-	${ext_compat_headers} \
+-	${ext_host_headers}
++	${ext_compat_headers}
+ 
+ ext_compat_headers = \
+ 	${backward_srcdir}/hash_set \
+@@ -1044,6 +1042,7 @@
+ profile_headers = \
+ 	${profile_srcdir}/array \
+ 	${profile_srcdir}/base.h \
++	${profile_srcdir}/unordered_base.h \
+ 	${profile_srcdir}/unordered_map \
+ 	${profile_srcdir}/unordered_set \
+ 	${profile_srcdir}/vector \
+@@ -1461,13 +1460,14 @@
+ 
+ stamp-${host_alias}:
+ 	@-mkdir -p ${host_builddir}
++	@-mkdir -p ${host_builddir}/../ext
+ 	@$(STAMP) stamp-${host_alias}
+ 
+ # Host includes static.
+ # XXX Missing dependency info for {host_headers_extra}
+-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
++stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
+ 	@cd ${host_builddir} && {\
+-	  $(LN_S) ${host_headers} . || true ;\
++	  $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
+@@ -1477,6 +1477,9 @@
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
+ 	  $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
+ 	} 2>/dev/null
++	@cd ${host_builddir}/../ext && {\
++	  $(LN_S) ${ext_host_headers} . || true ;\
++	} 2>/dev/null
+ 	$(STAMP) stamp-host
+ 
+ # Host includes dynamic.
+@@ -1688,9 +1691,12 @@
+ 	for file in ${profile_impl_headers}; do \
+ 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
+ 	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+-	for file in ${host_headers} ${host_headers_extra} \
++	for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
+ 	 ${thread_host_headers}; do \
+ 	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
++	$(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
++	for file in ${ext_host_headers}; do \
++	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
+ 
+ # To remove directories.
+ clean-local:
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/profile/impl/profiler.h gcc-4.8.1/libstdc++-v3/include/profile/impl/profiler.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/profile/impl/profiler.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/profile/impl/profiler.h	2013-07-31 14:29:13.979450000 -0500
+@@ -188,7 +188,7 @@
+   _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_invalid())
+ #define __profcxx_is_on() \
+   _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_on())
+-#define __profcxx__is_off() \
++#define __profcxx_is_off() \
+   _GLIBCXX_PROFILE_REENTRANCE_GUARD(__gnu_profile::__is_off())
+ #else
+ #define __profcxx_report()
+@@ -237,6 +237,8 @@
+ 
+ // Turn on/off instrumentation for INEFFICIENT_HASH.
+ #if defined(_GLIBCXX_PROFILE_INEFFICIENT_HASH)
++#define __profcxx_inefficient_hash_is_on() \
++  __gnu_profile::__is_on()
+ #define __profcxx_hashtable_construct2(__x...) \
+   _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+       __gnu_profile::__trace_hash_func_construct(__x))
+@@ -244,8 +246,9 @@
+   _GLIBCXX_PROFILE_REENTRANCE_GUARD( \
+       __gnu_profile::__trace_hash_func_destruct(__x))
+ #else
+-#define __profcxx_hashtable_destruct2(__x...) 
+-#define __profcxx_hashtable_construct2(__x...)  
++#define __profcxx_inefficient_hash_is_on() false
++#define __profcxx_hashtable_destruct2(__x...)
++#define __profcxx_hashtable_construct2(__x...)
+ #endif
+ 
+ // Turn on/off instrumentation for VECTOR_TO_LIST.
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_base.h gcc-4.8.1/libstdc++-v3/include/profile/unordered_base.h
+--- gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_base.h	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/profile/unordered_base.h	2013-07-31 14:29:13.979450000 -0500
+@@ -0,0 +1,262 @@
++// Profiling unordered containers implementation details -*- C++ -*-
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++/** @file profile/unordered_base.h
++ *  This file is a GNU profile extension to the Standard C++ Library.
++ */
++
++#ifndef _GLIBCXX_PROFILE_UNORDERED
++#define _GLIBCXX_PROFILE_UNORDERED 1
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++namespace __profile
++{
++  template<typename _UnorderedCont,
++	   typename _Value, bool _Cache_hash_code>
++    struct _Bucket_index_helper;
++
++  template<typename _UnorderedCont, typename _Value>
++    struct _Bucket_index_helper<_UnorderedCont, _Value, true>
++    {
++      static std::size_t
++      bucket(const _UnorderedCont& __uc,
++	     const __detail::_Hash_node<_Value, true>* __node)
++      { return __node->_M_hash_code % __uc.bucket_count(); }
++    };
++
++  template<typename _UnorderedCont, typename _Value>
++    struct _Bucket_index_helper<_UnorderedCont, _Value, false>
++    {
++      static std::size_t
++      bucket(const _UnorderedCont& __uc,
++	     const __detail::_Hash_node<_Value, false>* __node)
++      { return __uc.bucket(__node->_M_v); }
++    };
++
++  template<typename _UnorderedCont, typename _Key, typename _Mapped>
++    struct _Bucket_index_helper<_UnorderedCont,
++				std::pair<const _Key, _Mapped>, false>
++    {
++      typedef std::pair<const _Key, _Mapped> _Value;
++
++      static std::size_t
++      bucket(const _UnorderedCont& __uc,
++	     const __detail::_Hash_node<_Value, false>* __node)
++      { return __uc.bucket(__node->_M_v.first); }
++    };
++
++  template<typename _UnorderedCont, typename _Value, bool _Cache_hash_code>
++    std::size_t
++    __get_bucket_index(const _UnorderedCont& __uc,
++		       const __detail::_Hash_node<_Value, _Cache_hash_code>* __node)
++    {
++      using __bucket_index_helper
++	= _Bucket_index_helper<_UnorderedCont, _Value, _Cache_hash_code>;
++      return __bucket_index_helper::bucket(__uc, __node);
++    }
++
++  template<typename _UnorderedCont,
++	   typename _Value, bool _Cache_hash_code>
++    struct _Equal_helper;
++
++  template<typename _UnorderedCont, typename _Value>
++    struct _Equal_helper<_UnorderedCont, _Value, true>
++    {
++      static std::size_t
++      are_equal(const _UnorderedCont& __uc,
++		const __detail::_Hash_node<_Value, true>* __lhs,
++		const __detail::_Hash_node<_Value, true>* __rhs)
++      {
++	return __lhs->_M_hash_code == __rhs->_M_hash_code
++	  && __uc.key_eq()(__lhs->_M_v, __rhs->_M_v);
++      }
++    };
++
++  template<typename _UnorderedCont,
++	   typename _Value>
++    struct _Equal_helper<_UnorderedCont, _Value, false>
++    {
++      static std::size_t
++      are_equal(const _UnorderedCont& __uc,
++		const __detail::_Hash_node<_Value, false>* __lhs,
++		const __detail::_Hash_node<_Value, false>* __rhs)
++      { return __uc.key_eq()(__lhs->_M_v, __rhs->_M_v); }
++    };
++
++  template<typename _UnorderedCont,
++	   typename _Key, typename _Mapped>
++    struct _Equal_helper<_UnorderedCont, std::pair<const _Key, _Mapped>, true>
++    {
++      typedef std::pair<const _Key, _Mapped> _Value;
++
++      static std::size_t
++      are_equal(const _UnorderedCont& __uc,
++		const __detail::_Hash_node<_Value, true>* __lhs,
++		const __detail::_Hash_node<_Value, true>* __rhs)
++      {
++	return __lhs->_M_hash_code == __rhs->_M_hash_code
++	  && __uc.key_eq()(__lhs->_M_v.first, __rhs->_M_v.first);
++      }
++    };
++
++  template<typename _UnorderedCont,
++	   typename _Key, typename _Mapped>
++    struct _Equal_helper<_UnorderedCont, std::pair<const _Key, _Mapped>, false>
++    {
++      typedef std::pair<const _Key, _Mapped> _Value;
++
++      static std::size_t
++      are_equal(const _UnorderedCont& __uc,
++		const __detail::_Hash_node<_Value, false>* __lhs,
++		const __detail::_Hash_node<_Value, false>* __rhs)
++      { return __uc.key_eq()(__lhs->_M_v.first, __rhs->_M_v.first); }
++    };
++
++  template<typename _UnorderedCont, typename _Value, bool _Cache_hash_code>
++    bool
++    __are_equal(const _UnorderedCont& __uc,
++		const __detail::_Hash_node<_Value, _Cache_hash_code>* __lhs,
++		const __detail::_Hash_node<_Value, _Cache_hash_code>* __rhs)
++  {
++    using __equal_helper
++      = _Equal_helper<_UnorderedCont, _Value, _Cache_hash_code>;
++    return __equal_helper::are_equal(__uc, __lhs, __rhs);
++  }
++
++  template<typename _UnorderedCont, bool _Unique_keys>
++    class _Unordered_profile
++    {
++      _UnorderedCont&
++      _M_conjure()
++      { return *(static_cast<_UnorderedCont*>(this)); }
++
++      using __unique_keys = std::integral_constant<bool, _Unique_keys>;
++
++    protected:
++      _Unordered_profile()
++      {
++	auto& __uc = _M_conjure();
++        __profcxx_hashtable_construct(&__uc, __uc.bucket_count());
++	__profcxx_hashtable_construct2(&__uc);
++      }
++      _Unordered_profile(const _Unordered_profile&)
++	: _Unordered_profile() { }
++      _Unordered_profile(_Unordered_profile&&)
++	: _Unordered_profile() { }
++
++      ~_Unordered_profile() noexcept
++      {
++	auto& __uc = _M_conjure();
++        __profcxx_hashtable_destruct(&__uc, __uc.bucket_count(), __uc.size());
++        _M_profile_destruct();
++      }
++
++      _Unordered_profile&
++      operator=(const _Unordered_profile&) = default;
++
++      _Unordered_profile&
++      operator=(_Unordered_profile&&) = default;
++
++      void
++      _M_profile_destruct()
++      {
++	if (!__profcxx_inefficient_hash_is_on())
++	  return;
++
++	_M_profile_destruct(__unique_keys());
++      }
++
++    private:
++      void
++      _M_profile_destruct(std::true_type);
++
++      void
++      _M_profile_destruct(std::false_type);
++    };
++
++  template<typename _UnorderedCont, bool _Unique_keys>
++    void
++    _Unordered_profile<_UnorderedCont, _Unique_keys>::
++    _M_profile_destruct(std::true_type)
++    {
++      auto& __uc = _M_conjure();
++      std::size_t __hops = 0, __lc = 0, __chain = 0;
++      auto __it = __uc.begin();
++      while (__it != __uc.end())
++	{
++	  auto __bkt = __get_bucket_index(__uc, __it._M_cur);
++	  auto __lit = __uc.begin(__bkt);
++	  auto __lend = __uc.end(__bkt);
++	  for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
++	    ++__chain;
++	  if (__chain)
++	    {
++	      ++__chain;
++	      __lc = __lc > __chain ? __lc : __chain;
++	      __hops += __chain * (__chain - 1) / 2;
++	      __chain = 0;
++	    }
++	}
++      __profcxx_hashtable_destruct2(&__uc, __lc, __uc.size(), __hops);
++    }
++
++  template<typename _UnorderedCont, bool _Unique_keys>
++    void
++    _Unordered_profile<_UnorderedCont, _Unique_keys>::
++    _M_profile_destruct(std::false_type)
++    {
++      auto& __uc = _M_conjure();
++      std::size_t __hops = 0, __lc = 0, __chain = 0, __unique_size = 0;
++      auto __it = __uc.begin();
++      while (__it != __uc.end())
++	{
++	  auto __bkt = __get_bucket_index(__uc, __it._M_cur);
++	  auto __lit = __uc.begin(__bkt);
++	  auto __lend = __uc.end(__bkt);
++	  auto __pit = __it;
++	  ++__unique_size;
++	  for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
++	    {
++	      if (!__are_equal(__uc, __pit._M_cur, __it._M_cur))
++		{
++		  ++__chain;
++		  ++__unique_size;
++		  __pit = __it;
++		}
++	    }
++	  if (__chain)
++	    {
++	      ++__chain;
++	      __lc = __lc > __chain ? __lc : __chain;
++	      __hops += __chain * (__chain - 1) / 2;
++	      __chain = 0;
++	    }
++	}
++      __profcxx_hashtable_destruct2(&__uc, __lc, __unique_size, __hops);
++    }
++
++} // namespace __profile
++} // namespace std
++
++#endif
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_map gcc-4.8.1/libstdc++-v3/include/profile/unordered_map
+--- gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_map	2013-01-16 17:56:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/profile/unordered_map	2013-07-31 14:29:13.979450000 -0500
+@@ -34,6 +34,7 @@
+ # include <unordered_map>
+ 
+ #include <profile/base.h>
++#include <profile/unordered_base.h>
+ 
+ #define _GLIBCXX_BASE unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>
+ #define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+@@ -44,14 +45,22 @@
+ {
+   /// Class std::unordered_map wrapper with performance instrumentation.
+   template<typename _Key, typename _Tp,
+-	   typename _Hash  = std::hash<_Key>,
++	   typename _Hash = std::hash<_Key>,
+ 	   typename _Pred = std::equal_to<_Key>,
+-	   typename _Alloc =  std::allocator<_Key> >
++	   typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+     class unordered_map
+-    : public _GLIBCXX_STD_BASE
++    : public _GLIBCXX_STD_BASE,
++      public _Unordered_profile<unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>,
++				true>
+     {
+       typedef typename _GLIBCXX_STD_BASE _Base;
+ 
++      _Base&
++      _M_base() noexcept       { return *this; }
++
++      const _Base&
++      _M_base() const noexcept { return *this; }
++
+     public:
+       typedef typename _Base::size_type       size_type;
+       typedef typename _Base::hasher          hasher;
+@@ -72,11 +81,8 @@
+ 		    const hasher& __hf = hasher(),
+ 		    const key_equal& __eql = key_equal(),
+ 		    const allocator_type& __a = allocator_type())
+-      : _Base(__n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	: _Base(__n, __hf, __eql, __a)
++      { }
+ 
+       template<typename _InputIterator>
+         unordered_map(_InputIterator __f, _InputIterator __l,
+@@ -84,85 +90,45 @@
+ 		      const hasher& __hf = hasher(),
+ 		      const key_equal& __eql = key_equal(),
+ 		      const allocator_type& __a = allocator_type())
+-      : _Base(__f, __l, __n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	  : _Base(__f, __l, __n, __hf, __eql, __a)
++        { }
+ 
+-      unordered_map(const unordered_map& __x)
+-      : _Base(__x) 
+-      { 
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++      unordered_map(const unordered_map&) = default;
+ 
+       unordered_map(const _Base& __x)
+-      : _Base(__x) 
+-      { 
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	: _Base(__x)
++      { }
+ 
+-      unordered_map(unordered_map&& __x)
+-      : _Base(std::move(__x)) 
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++      unordered_map(unordered_map&&) = default;
+ 
+       unordered_map(initializer_list<value_type> __l,
+ 		    size_type __n = 0,
+ 		    const hasher& __hf = hasher(),
+ 		    const key_equal& __eql = key_equal(),
+ 		    const allocator_type& __a = allocator_type())
+-      : _Base(__l, __n, __hf, __eql, __a) { }
++	: _Base(__l, __n, __hf, __eql, __a)
++      { }
+ 
+       unordered_map&
+-      operator=(const unordered_map& __x)
+-      {
+-	*static_cast<_Base*>(this) = __x;
+-	return *this;
+-      }
++      operator=(const unordered_map&) = default;
+ 
+       unordered_map&
+-      operator=(unordered_map&& __x)
+-      {
+-	// NB: DR 1204.
+-	// NB: DR 675.
+-	this->clear();
+-	this->swap(__x);
+-	return *this;
+-      }
++      operator=(unordered_map&&) = default;
+ 
+       unordered_map&
+       operator=(initializer_list<value_type> __l)
+       {
+-	this->clear();
+-	this->insert(__l);
++	_M_base() = __l;
+ 	return *this;
+       }
+ 
+-      ~unordered_map() noexcept
+-      {
+-        __profcxx_hashtable_destruct(this, _Base::bucket_count(),
+-				     _Base::size());
+-        _M_profile_destruct();
+-      }
+-
+-      _Base&
+-      _M_base() noexcept       { return *this; }
+-
+-      const _Base&
+-      _M_base() const noexcept { return *this; }
+-
+       void
+       clear() noexcept
+       {
+         __profcxx_hashtable_destruct(this, _Base::bucket_count(),
+ 				     _Base::size());
+-        _M_profile_destruct();
+-        _Base::clear();
++        this->_M_profile_destruct();
++	_Base::clear();
+       }
+ 
+       template<typename... _Args>
+@@ -247,14 +213,6 @@
+ 	  _M_profile_resize(__old_size); 
+ 	}
+ 
+-      void
+-      insert(const value_type* __first, const value_type* __last)
+-      {
+-        size_type __old_size = _Base::bucket_count(); 
+-        _Base::insert(__first, __last);
+-        _M_profile_resize(__old_size); 
+-      }
+-
+       // operator[]
+       mapped_type&
+       operator[](const _Key& __k)
+@@ -276,7 +234,7 @@
+ 
+       void
+       swap(unordered_map& __x)
+-      { _Base::swap(__x); }
++      { _Base::swap(__x._M_base()); }
+ 
+       void rehash(size_type __n)
+       {
+@@ -293,29 +251,6 @@
+ 	if (__old_size != __new_size)
+ 	  __profcxx_hashtable_resize(this, __old_size, __new_size);
+       }
+-
+-      void
+-      _M_profile_destruct()
+-      {
+-	size_type __hops = 0, __lc = 0, __chain = 0;
+-	iterator __it = this->begin();
+-	while (__it != this->end())
+-	  {
+-	    size_type __bkt = this->bucket(__it->first);
+-	    auto __lit = this->begin(__bkt);
+-	    auto __lend = this->end(__bkt);
+-	    for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
+-	      ++__chain;
+-	    if (__chain)
+-	      {
+-		++__chain;
+-		__lc = __lc > __chain ? __lc : __chain;
+-		__hops += __chain * (__chain - 1) / 2;
+-		__chain = 0;
+-	      }
+-	  }
+-	__profcxx_hashtable_destruct2(this, __lc, _Base::size(), __hops);
+-      }
+   };
+ 
+   template<typename _Key, typename _Tp, typename _Hash,
+@@ -346,14 +281,23 @@
+ 
+   /// Class std::unordered_multimap wrapper with performance instrumentation.
+   template<typename _Key, typename _Tp,
+-	   typename _Hash  = std::hash<_Key>,
++	   typename _Hash = std::hash<_Key>,
+ 	   typename _Pred = std::equal_to<_Key>,
+-	   typename _Alloc =  std::allocator<_Key> >
++	   typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+     class unordered_multimap
+-    : public _GLIBCXX_STD_BASE
++    : public _GLIBCXX_STD_BASE,
++      public _Unordered_profile<unordered_multimap<_Key, _Tp,
++						   _Hash, _Pred, _Alloc>,
++				false>
+     {      
+       typedef typename _GLIBCXX_STD_BASE _Base;
+ 
++      _Base&
++      _M_base() noexcept       { return *this; }
++
++      const _Base&
++      _M_base() const noexcept { return *this; }
++
+     public:
+       typedef typename _Base::size_type       size_type;
+       typedef typename _Base::hasher          hasher;
+@@ -373,85 +317,54 @@
+ 			 const hasher& __hf = hasher(),
+ 			 const key_equal& __eql = key_equal(),
+ 			 const allocator_type& __a = allocator_type())
+-      : _Base(__n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	: _Base(__n, __hf, __eql, __a)
++      { }
++
+       template<typename _InputIterator>
+         unordered_multimap(_InputIterator __f, _InputIterator __l,
+ 			   size_type __n = 0,
+ 			   const hasher& __hf = hasher(),
+ 			   const key_equal& __eql = key_equal(),
+ 			   const allocator_type& __a = allocator_type())
+-      : _Base(__f, __l, __n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	  : _Base(__f, __l, __n, __hf, __eql, __a)
++      { }
+ 
+-      unordered_multimap(const unordered_multimap& __x)
+-      : _Base(__x)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++      unordered_multimap(const unordered_multimap&) = default;
+ 
+       unordered_multimap(const _Base& __x)
+-      : _Base(__x)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	: _Base(__x)
++      { }
+ 
+-      unordered_multimap(unordered_multimap&& __x)
+-      : _Base(std::move(__x))
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++      unordered_multimap(unordered_multimap&&) = default;
+ 
+       unordered_multimap(initializer_list<value_type> __l,
+ 			 size_type __n = 0,
+ 			 const hasher& __hf = hasher(),
+ 			 const key_equal& __eql = key_equal(),
+ 			 const allocator_type& __a = allocator_type())
+-      : _Base(__l, __n, __hf, __eql, __a) { }
++      : _Base(__l, __n, __hf, __eql, __a)
++      { }
+ 
+       unordered_multimap&
+-      operator=(const unordered_multimap& __x)
+-      {
+-	*static_cast<_Base*>(this) = __x;
+-	return *this;
+-      }
++      operator=(const unordered_multimap&) = default;
+ 
+       unordered_multimap&
+-      operator=(unordered_multimap&& __x)
+-      {
+-	// NB: DR 1204.
+-	// NB: DR 675.
+-	this->clear();
+-	this->swap(__x);
+-	return *this;
+-      }
++      operator=(unordered_multimap&&) = default;
+ 
+       unordered_multimap&
+       operator=(initializer_list<value_type> __l)
+       {
+-	this->clear();
+-	this->insert(__l);
++	_M_base() = __l;
+ 	return *this;
+       }
+ 
+-      ~unordered_multimap() noexcept
+-      {
+-        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+-				     _Base::size());
+-        _M_profile_destruct();
+-      }
+-
+       void
+       clear() noexcept
+       {
+-        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
++	__profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+ 				     _Base::size());
+-        _M_profile_destruct();
+-        _Base::clear();
++	this->_M_profile_destruct();
++	_Base::clear();
+       }
+ 
+       template<typename... _Args>
+@@ -536,18 +449,11 @@
+ 	}
+ 
+       void
+-      insert(const value_type* __first, const value_type* __last)
+-      {
+-        size_type __old_size = _Base::bucket_count(); 
+-        _Base::insert(__first, __last);
+-        _M_profile_resize(__old_size); 
+-      }
+-
+-      void
+       swap(unordered_multimap& __x)
+-      { _Base::swap(__x); }
++      { _Base::swap(__x._M_base()); }
+ 
+-      void rehash(size_type __n)
++      void
++      rehash(size_type __n)
+       {
+         size_type __old_size = _Base::bucket_count();
+         _Base::rehash(__n);
+@@ -562,29 +468,6 @@
+         if (__old_size != __new_size)
+           __profcxx_hashtable_resize(this, __old_size, __new_size);
+       }
+-
+-      void
+-      _M_profile_destruct()
+-      {
+-	size_type __hops = 0, __lc = 0, __chain = 0;
+-	iterator __it = this->begin();
+-	while (__it != this->end())
+-	  {
+-	    size_type __bkt = this->bucket(__it->first);
+-	    auto __lit = this->begin(__bkt);
+-	    auto __lend = this->end(__bkt);
+-	    for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
+-	      ++__chain;
+-	    if (__chain)
+-	      {
+-		++__chain;
+-		__lc = __lc > __chain ? __lc : __chain;
+-		__hops += __chain * (__chain - 1) / 2;
+-		__chain = 0;
+-	      }
+-	  }
+-	__profcxx_hashtable_destruct2(this, __lc, _Base::size(), __hops);
+-      }
+   };
+ 
+   template<typename _Key, typename _Tp, typename _Hash,
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_set gcc-4.8.1/libstdc++-v3/include/profile/unordered_set
+--- gcc-4.8.1.orig/libstdc++-v3/include/profile/unordered_set	2013-01-16 17:56:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/profile/unordered_set	2013-07-31 14:29:13.979450000 -0500
+@@ -34,6 +34,7 @@
+ # include <unordered_set>
+ 
+ #include <profile/base.h>
++#include <profile/unordered_base.h>
+ 
+ #define _GLIBCXX_BASE unordered_set<_Key, _Hash, _Pred, _Alloc>
+ #define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE
+@@ -44,14 +45,22 @@
+ {
+   /** @brief Unordered_set wrapper with performance instrumentation.  */
+   template<typename _Key, 
+-	   typename _Hash  = std::hash<_Key>,
++	   typename _Hash = std::hash<_Key>,
+ 	   typename _Pred = std::equal_to<_Key>,
+ 	   typename _Alloc =  std::allocator<_Key> >
+     class unordered_set
+-    : public _GLIBCXX_STD_BASE
++    : public _GLIBCXX_STD_BASE,
++      public _Unordered_profile<unordered_set<_Key, _Hash, _Pred, _Alloc>,
++				true>
+     {
+       typedef _GLIBCXX_STD_BASE _Base;
+ 
++      _Base&
++      _M_base() noexcept       { return *this; }
++
++      const _Base&
++      _M_base() const noexcept { return *this; }
++
+     public:
+       typedef typename _Base::size_type       size_type;
+       typedef typename _Base::hasher          hasher;
+@@ -71,11 +80,8 @@
+ 		    const hasher& __hf = hasher(),
+ 		    const key_equal& __eql = key_equal(),
+ 		    const allocator_type& __a = allocator_type())
+-      : _Base(__n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	: _Base(__n, __hf, __eql, __a)
++      { }
+ 
+       template<typename _InputIterator>
+         unordered_set(_InputIterator __f, _InputIterator __l,
+@@ -83,84 +89,48 @@
+ 		      const hasher& __hf = hasher(),
+ 		      const key_equal& __eql = key_equal(),
+ 		      const allocator_type& __a = allocator_type())
+-      : _Base(__f, __l, __n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	  : _Base(__f, __l, __n, __hf, __eql, __a)
++      { }
+ 
+-      unordered_set(const unordered_set& __x)
+-      : _Base(__x) 
+-      { 
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++      unordered_set(const unordered_set&) = default;
+ 
+       unordered_set(const _Base& __x)
+-      : _Base(__x) 
+-      { 
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++	: _Base(__x)
++      { }
+ 
+-      unordered_set(unordered_set&& __x)
+-      : _Base(std::move(__x)) 
+-      { 
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-        __profcxx_hashtable_construct2(this);
+-      }
++      unordered_set(unordered_set&&) = default;
+ 
+       unordered_set(initializer_list<value_type> __l,
+ 		    size_type __n = 0,
+ 		    const hasher& __hf = hasher(),
+ 		    const key_equal& __eql = key_equal(),
+ 		    const allocator_type& __a = allocator_type())
+-      : _Base(__l, __n, __hf, __eql, __a) { }
++      : _Base(__l, __n, __hf, __eql, __a)
++      { }
+ 
+       unordered_set&
+-      operator=(const unordered_set& __x)
+-      {
+-	*static_cast<_Base*>(this) = __x;
+-	return *this;
+-      }
++      operator=(const unordered_set&) = default;
+ 
+       unordered_set&
+-      operator=(unordered_set&& __x)
+-      {
+-	// NB: DR 1204.
+-	// NB: DR 675.
+-	this->clear();
+-	this->swap(__x);
+-	return *this;
+-      }
++      operator=(unordered_set&&) = default;
+ 
+       unordered_set&
+       operator=(initializer_list<value_type> __l)
+       {
+-	this->clear();
+-	this->insert(__l);
++	_M_base() = __l;
+ 	return *this;
+       }
+ 
+-      ~unordered_set() noexcept
+-      {
+-        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+-                                     _Base::size());
+-        _M_profile_destruct();
+-      }
+-
+       void
+       swap(unordered_set& __x)
+-      {
+-        _Base::swap(__x);
+-      }
++      { _Base::swap(__x); }
+ 
+       void
+       clear() noexcept
+       {
+         __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                      _Base::size());
+-        _M_profile_destruct();
++        this->_M_profile_destruct();
+         _Base::clear();
+       }
+ 
+@@ -240,14 +210,7 @@
+ 	}
+ 
+       void
+-      insert(const value_type* __first, const value_type* __last)
+-      {
+-        size_type __old_size = _Base::bucket_count(); 
+-        _Base::insert(__first, __last);
+-        _M_profile_resize(__old_size); 
+-      }
+-     
+-      void rehash(size_type __n)
++      rehash(size_type __n)
+       {
+         size_type __old_size = _Base::bucket_count();
+         _Base::rehash(__n);
+@@ -262,29 +225,6 @@
+ 	if (__old_size != __new_size)
+ 	  __profcxx_hashtable_resize(this, __old_size, __new_size);
+       }
+-
+-      void
+-      _M_profile_destruct()
+-      {
+-	size_type __hops = 0, __lc = 0, __chain = 0;
+-	iterator __it = this->begin();
+-	while (__it != this->end())
+-	  {
+-	    size_type __bkt = this->bucket(*__it);
+-	    auto __lit = this->begin(__bkt);
+-	    auto __lend = this->end(__bkt);
+-	    for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
+-	      ++__chain;
+-	    if (__chain)
+-	      {
+-		++__chain;
+-		__lc = __lc > __chain ? __lc : __chain;
+-		__hops += __chain * (__chain - 1) / 2;
+-		__chain = 0;
+-	      }
+-	  }
+-        __profcxx_hashtable_destruct2(this, __lc, _Base::size(), __hops);
+-      }
+   };
+ 
+   template<typename _Key, typename _Hash, typename _Pred, typename _Alloc>
+@@ -312,14 +252,23 @@
+ 
+   /** @brief Unordered_multiset wrapper with performance instrumentation.  */
+   template<typename _Value,
+-       typename _Hash  = std::hash<_Value>,
+-       typename _Pred = std::equal_to<_Value>,
+-       typename _Alloc =  std::allocator<_Value> >
++	   typename _Hash = std::hash<_Value>,
++	   typename _Pred = std::equal_to<_Value>,
++	   typename _Alloc =  std::allocator<_Value> >
+     class unordered_multiset
+-    : public _GLIBCXX_STD_BASE
++    : public _GLIBCXX_STD_BASE,
++      public _Unordered_profile<unordered_multiset<_Value,
++						   _Hash, _Pred, _Alloc>,
++				false>
+     {
+       typedef _GLIBCXX_STD_BASE _Base;
+ 
++      _Base&
++      _M_base() noexcept       { return *this; }
++
++      const _Base&
++      _M_base() const noexcept { return *this; }
++
+     public:
+       typedef typename _Base::size_type       size_type;
+       typedef typename _Base::hasher          hasher;
+@@ -339,10 +288,8 @@
+ 			 const hasher& __hf = hasher(),
+ 			 const key_equal& __eql = key_equal(),
+ 			 const allocator_type& __a = allocator_type())
+-      : _Base(__n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	: _Base(__n, __hf, __eql, __a)
++      { }
+ 
+       template<typename _InputIterator>
+         unordered_multiset(_InputIterator __f, _InputIterator __l,
+@@ -350,80 +297,48 @@
+ 			   const hasher& __hf = hasher(),
+ 			   const key_equal& __eql = key_equal(),
+ 			   const allocator_type& __a = allocator_type())
+-      : _Base(__f, __l, __n, __hf, __eql, __a)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	  : _Base(__f, __l, __n, __hf, __eql, __a)
++      { }
+ 
+-      unordered_multiset(const unordered_multiset& __x)
+-      : _Base(__x)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++      unordered_multiset(const unordered_multiset&) = default;
+ 
+       unordered_multiset(const _Base& __x)
+-      : _Base(__x)
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++	: _Base(__x)
++      { }
+ 
+-      unordered_multiset(unordered_multiset&& __x)
+-      : _Base(std::move(__x))
+-      {
+-        __profcxx_hashtable_construct(this, _Base::bucket_count());
+-      }
++      unordered_multiset(unordered_multiset&&) = default;
+ 
+       unordered_multiset(initializer_list<value_type> __l,
+ 			 size_type __n = 0,
+ 			 const hasher& __hf = hasher(),
+ 			 const key_equal& __eql = key_equal(),
+ 			 const allocator_type& __a = allocator_type())
+-      : _Base(__l, __n, __hf, __eql, __a) { }
++	: _Base(__l, __n, __hf, __eql, __a)
++      { }
+ 
+       unordered_multiset&
+-      operator=(const unordered_multiset& __x)
+-      {
+-	*static_cast<_Base*>(this) = __x;
+-	return *this;
+-      }
++      operator=(const unordered_multiset&) = default;
+ 
+       unordered_multiset&
+-      operator=(unordered_multiset&& __x)
+-      {
+-	// NB: DR 1204.
+-	// NB: DR 675.
+-	this->clear();
+-	this->swap(__x);
+-	return *this;
+-      }
++      operator=(unordered_multiset&&) = default;
+ 
+       unordered_multiset&
+       operator=(initializer_list<value_type> __l)
+       {
+-	this->clear();
+-	this->insert(__l);
++	_M_base() = __l;
+ 	return *this;
+       }
+ 
+-      ~unordered_multiset() noexcept
+-      {
+-        __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+-                                     _Base::size());
+-        _M_profile_destruct();
+-      }
+-
+       void
+       swap(unordered_multiset& __x)
+-      {
+-        _Base::swap(__x);
+-      }
++      { _Base::swap(__x); }
+ 
+       void
+       clear() noexcept
+       {
+         __profcxx_hashtable_destruct(this, _Base::bucket_count(), 
+                                      _Base::size());
+-        _M_profile_destruct();
++        this->_M_profile_destruct();
+         _Base::clear();
+       }
+ 
+@@ -502,14 +417,7 @@
+ 	}
+ 
+       void
+-      insert(const value_type* __first, const value_type* __last)
+-      {
+-        size_type __old_size = _Base::bucket_count(); 
+-        _Base::insert(__first, __last);
+-        _M_profile_resize(__old_size); 
+-      }
+-     
+-      void rehash(size_type __n)
++      rehash(size_type __n)
+       {
+         size_type __old_size = _Base::bucket_count();
+         _Base::rehash(__n);
+@@ -524,29 +432,6 @@
+         if (__old_size != __new_size)
+           __profcxx_hashtable_resize(this, __old_size, __new_size);
+       }
+-
+-      void
+-      _M_profile_destruct()
+-      {
+-	size_type __hops = 0, __lc = 0, __chain = 0;
+-	iterator __it = this->begin();
+-	while (__it != this->end())
+-	  {
+-	    size_type __bkt = this->bucket(*__it);
+-	    auto __lit = this->begin(__bkt);
+-	    auto __lend = this->end(__bkt);
+-	    for (++__it, ++__lit; __lit != __lend; ++__it, ++__lit)
+-	      ++__chain;
+-	    if (__chain)
+-	      {
+-		++__chain;
+-		__lc = __lc > __chain ? __lc : __chain;
+-		__hops += __chain * (__chain - 1) / 2;
+-		__chain = 0;
+-	      }
+-	  }
+-        __profcxx_hashtable_destruct2(this, __lc, _Base::size(), __hops);
+-      }
+    };
+ 
+   template<typename _Value, typename _Hash, typename _Pred, typename _Alloc>
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/profile/vector gcc-4.8.1/libstdc++-v3/include/profile/vector
+--- gcc-4.8.1.orig/libstdc++-v3/include/profile/vector	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/profile/vector	2013-06-27 14:06:35.737183000 -0500
+@@ -374,6 +374,16 @@
+ 	return iterator(__res, this);
+       }
+ 
++      template<typename... _Args>
++        iterator
++        emplace(iterator __position, _Args&&... __args)
++        {
++	  typename _Base::iterator __res
++	    = _Base::emplace(__position.base(),
++			     std::forward<_Args>(__args)...);
++	  return iterator(__res, this);
++	}
++
+       void
+       insert(iterator __position, initializer_list<value_type> __l)
+       { this->insert(__position, __l.begin(), __l.end()); }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/std/bitset gcc-4.8.1/libstdc++-v3/include/std/bitset
+--- gcc-4.8.1.orig/libstdc++-v3/include/std/bitset	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/std/bitset	2013-07-31 09:36:35.897570000 -0500
+@@ -760,7 +760,7 @@
+       }
+ 
+ #if __cplusplus >= 201103L
+-      template<typename> friend class hash;
++      template<typename> friend struct hash;
+ #endif
+ 
+     public:
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/std/complex gcc-4.8.1/libstdc++-v3/include/std/complex
+--- gcc-4.8.1.orig/libstdc++-v3/include/std/complex	2013-02-13 15:58:53.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/std/complex	2013-06-12 15:44:17.319811000 -0500
+@@ -142,11 +142,11 @@
+ #if __cplusplus >= 201103L
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // DR 387. std::complex over-encapsulated.
+-      __attribute ((__abi_tag__ ("cxx11")))
++      _GLIBCXX_ABI_TAG_CXX11
+       constexpr _Tp 
+       real() { return _M_real; }
+ 
+-      __attribute ((__abi_tag__ ("cxx11")))
++      _GLIBCXX_ABI_TAG_CXX11
+       constexpr _Tp 
+       imag() { return _M_imag; }
+ #else
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/include/std/valarray gcc-4.8.1/libstdc++-v3/include/std/valarray
+--- gcc-4.8.1.orig/libstdc++-v3/include/std/valarray	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/include/std/valarray	2013-06-21 09:23:29.754164000 -0500
+@@ -819,8 +819,21 @@
+     inline valarray<_Tp>&
+     valarray<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e)
+     {
+-      _GLIBCXX_DEBUG_ASSERT(_M_size == __e.size());
+-      std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data));
++      // _GLIBCXX_RESOLVE_LIB_DEFECTS
++      // 630. arrays of valarray.
++      if (_M_size == __e.size())
++	std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data));
++      else
++	{
++	  if (_M_data)
++	    {
++	      std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
++	      std::__valarray_release_memory(_M_data);
++	    }
++	  _M_size = __e.size();
++	  _M_data = __valarray_get_storage<_Tp>(_M_size);
++	  std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data));
++	}
+       return *this;
+     }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/libsupc++/atexit_thread.cc gcc-4.8.1/libstdc++-v3/libsupc++/atexit_thread.cc
+--- gcc-4.8.1.orig/libstdc++-v3/libsupc++/atexit_thread.cc	2013-02-25 22:39:04.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/libsupc++/atexit_thread.cc	2013-07-27 21:33:01.689404000 -0500
+@@ -58,8 +58,13 @@
+   void run (void *p)
+   {
+     elt *e = static_cast<elt*>(p);
+-    for (; e; e = e->next)
+-      e->destructor (e->object);
++    while (e)
++      {
++	elt *old_e = e;
++	e->destructor (e->object);
++	e = e->next;
++	delete (old_e);
++      }
+   }
+ 
+   // Run the stack of cleanups for the current thread.
+@@ -67,9 +72,15 @@
+   {
+     void *e;
+     if (__gthread_active_p ())
+-      e = __gthread_getspecific (key);
++      {
++	e = __gthread_getspecific (key);
++	__gthread_setspecific (key, NULL);
++      }
+     else
+-      e = single_thread;
++      {
++	e = single_thread;
++	single_thread = NULL;
++      }
+     run (e);
+   }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/src/c++98/compatibility.cc gcc-4.8.1/libstdc++-v3/src/c++98/compatibility.cc
+--- gcc-4.8.1.orig/libstdc++-v3/src/c++98/compatibility.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/src/c++98/compatibility.cc	2013-08-16 12:43:39.524436000 -0500
+@@ -517,14 +517,21 @@
+ extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
+ extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
+ extern __attribute__((used, weak)) const void * const _ZTIe[2]
+-  = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
+-      (void *) _ZTSe };
++  = { reinterpret_cast<const void *>
++      (&_ZTVN10__cxxabiv123__fundamental_type_infoE[2]),
++      reinterpret_cast<const void *>(_ZTSe) };
+ extern __attribute__((used, weak)) const void * const _ZTIPe[4]
+-  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
+-      (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
++  = { reinterpret_cast<const void *>
++      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
++      reinterpret_cast<const void *>(_ZTSPe),
++      reinterpret_cast<const void *>(0L),
++      reinterpret_cast<const void *>(_ZTIe) };
+ extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
+-  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
+-      (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
++  = { reinterpret_cast<const void *>
++      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
++      reinterpret_cast<const void *>(_ZTSPKe),
++      reinterpret_cast<const void *>(1L),
++      reinterpret_cast<const void *>(_ZTIe) };
+ #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
+ 
+ #ifdef _GLIBCXX_SYMVER_DARWIN
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/dr130.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/dr130.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,77 +0,0 @@
+-// { dg-options "-std=gnu++0x" }
+-// 2008-07-22  Edward Smith-Rowland  <3dw4rd@verizon.net>
+-//
+-// Copyright (C) 2009-2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <map>
+-#include <testsuite_hooks.h>
+-
+-//  DR 130. Associative erase should return an iterator.
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  map<int, int> m0;
+-  typedef map<int, int>::iterator iterator;
+-  typedef map<int, int>::const_iterator const_iterator;
+-  typedef map<int, int>::value_type value_type;
+-  typedef pair<iterator, bool> insert_return_type;
+-
+-  m0.insert(value_type(1, 1));
+-  insert_return_type irt1 = m0.insert(value_type(2, 2));
+-  insert_return_type irt2 = m0.insert(value_type(3, 3));
+-
+-  iterator pos1 = m0.erase(irt1.first);
+-  VERIFY( pos1 == irt2.first );
+-
+-  iterator pos2 = m0.erase(irt2.first);
+-  VERIFY( pos2 == m0.end() );
+-}
+-
+-void
+-test02()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  map<int, int> m0;
+-  typedef map<int, int>::iterator iterator;
+-  typedef map<int, int>::const_iterator const_iterator;
+-  typedef map<int, int>::value_type value_type;
+-  typedef pair<iterator, bool> insert_return_type;
+-
+-  insert_return_type irt0 = m0.insert(value_type(1, 1));
+-  m0.insert(value_type(2, 2));
+-  insert_return_type irt2 = m0.insert(value_type(3, 3));
+-  insert_return_type irt3 = m0.insert(value_type(4, 4));
+-
+-  iterator pos1 = m0.erase(irt0.first, irt2.first);
+-  VERIFY( pos1 == irt2.first );
+-
+-  iterator pos2 = m0.erase(irt2.first, ++irt3.first);
+-  VERIFY( pos2 == m0.end() );
+-}
+-
+-int
+-main()
+-{
+-  test01();
+-  test02();
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,77 @@
++// { dg-options "-std=gnu++0x" }
++// 2008-07-22  Edward Smith-Rowland  <3dw4rd@verizon.net>
++//
++// Copyright (C) 2009-2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <map>
++#include <testsuite_hooks.h>
++
++//  DR 130. Associative erase should return an iterator.
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  map<int, int> m0;
++  typedef map<int, int>::iterator iterator;
++  typedef map<int, int>::const_iterator const_iterator;
++  typedef map<int, int>::value_type value_type;
++  typedef pair<iterator, bool> insert_return_type;
++
++  m0.insert(value_type(1, 1));
++  insert_return_type irt1 = m0.insert(value_type(2, 2));
++  insert_return_type irt2 = m0.insert(value_type(3, 3));
++
++  iterator pos1 = m0.erase(irt1.first);
++  VERIFY( pos1 == irt2.first );
++
++  iterator pos2 = m0.erase(irt2.first);
++  VERIFY( pos2 == m0.end() );
++}
++
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  map<int, int> m0;
++  typedef map<int, int>::iterator iterator;
++  typedef map<int, int>::const_iterator const_iterator;
++  typedef map<int, int>::value_type value_type;
++  typedef pair<iterator, bool> insert_return_type;
++
++  insert_return_type irt0 = m0.insert(value_type(1, 1));
++  m0.insert(value_type(2, 2));
++  insert_return_type irt2 = m0.insert(value_type(3, 3));
++  insert_return_type irt3 = m0.insert(value_type(4, 4));
++
++  iterator pos1 = m0.erase(irt0.first, irt2.first);
++  VERIFY( pos1 == irt2.first );
++
++  iterator pos2 = m0.erase(irt2.first, ++irt3.first);
++  VERIFY( pos2 == m0.end() );
++}
++
++int
++main()
++{
++  test01();
++  test02();
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc	2013-06-25 19:30:14.613476000 -0500
+@@ -0,0 +1,36 @@
++// { dg-do compile }
++// { dg-options -std=c++11 }
++// { dg-require-normal-mode "" }
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Test that the C++11 variants have an ABI tag
++
++#include <map>
++
++using container = std::map<int, int>;
++using iterator = typename container::iterator;
++using const_iterator = typename container::const_iterator;
++
++// { dg-final { scan-assembler "_ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS4_E" } }
++iterator (container::*p1)(iterator) = &container::erase;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,40 @@
++// { dg-require-effective-target ia32 }
++// { dg-require-sharedlib "" }
++// { dg-options "-fno-inline -std=gnu++11 ./testsuite_shared.so" }
++// 2013-06-03  Benjamin Kosnik  <bkoz@redhat..com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <testsuite_containers.h>
++
++int main()
++{
++  typedef std::map<int, int>		container_type;
++
++  {
++    container_type s { {0,0} , {1,1} , {2,2} };
++    __gnu_test::linkage_check_cxx98_cxx11_erase(s);
++  }
++
++  {
++    container_type s { {0,0} , {1,1} , {2,2} };
++    __gnu_test::linkage_check_cxx98_cxx11_erase_iterators(s);
++  }
++
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/dr130.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/dr130.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,87 +0,0 @@
+-// { dg-options "-std=gnu++0x" }
+-
+-// Copyright (C) 2009-2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-
+-// NOTE: This makes use of the fact that we know how moveable
+-// is implemented on multiset (via swap). If the implementation changed
+-// this test may begin to fail.
+-
+-#include <map>
+-#include <vector>
+-#include <testsuite_hooks.h>
+-
+-using namespace std;
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  multimap<int, int> mm0;
+-  typedef multimap<int, int>::iterator iterator;
+-  typedef multimap<int, int>::const_iterator const_iterator;
+-  typedef multimap<int, int>::value_type value_type;
+-  typedef iterator insert_return_type;
+-
+-  vector<insert_return_type> irt;
+-  for (int i = 1; i <= 4; ++i)
+-    for (int j = 1; j <= i; ++j)
+-      irt.push_back( mm0.insert( value_type( i, i ) ) );
+-
+-  iterator pos1 = mm0.erase(irt[1]);
+-  VERIFY( pos1 == irt[2] );
+-
+-  iterator pos2 = mm0.erase(irt[2]);
+-  VERIFY( pos2 == irt[3] );
+-
+-  iterator pos3 = mm0.erase(irt[9]);
+-  VERIFY( pos3 == mm0.end() );
+-}
+-
+-void
+-test02()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  multimap<int, int> mm0;
+-  typedef multimap<int, int>::iterator iterator;
+-  typedef multimap<int, int>::const_iterator const_iterator;
+-  typedef multimap<int, int>::value_type value_type;
+-  typedef iterator insert_return_type;
+-
+-  vector<insert_return_type> irt;
+-  for (int i = 1; i <= 4; ++i)
+-    for (int j = 1; j <= i; ++j)
+-      irt.push_back( mm0.insert( value_type( i, i ) ) );
+-
+-  iterator pos1 = mm0.erase(irt[3], irt[6]);
+-  VERIFY( pos1 == irt[6] );
+-
+-  iterator pos2 = mm0.erase(irt[6], ++irt[9]);
+-  VERIFY( pos2 == mm0.end() );
+-}
+-
+-int
+-main()
+-{
+-  test01();
+-  test02();
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,87 @@
++// { dg-options "-std=gnu++0x" }
++
++// Copyright (C) 2009-2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++
++// NOTE: This makes use of the fact that we know how moveable
++// is implemented on multiset (via swap). If the implementation changed
++// this test may begin to fail.
++
++#include <map>
++#include <vector>
++#include <testsuite_hooks.h>
++
++using namespace std;
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  multimap<int, int> mm0;
++  typedef multimap<int, int>::iterator iterator;
++  typedef multimap<int, int>::const_iterator const_iterator;
++  typedef multimap<int, int>::value_type value_type;
++  typedef iterator insert_return_type;
++
++  vector<insert_return_type> irt;
++  for (int i = 1; i <= 4; ++i)
++    for (int j = 1; j <= i; ++j)
++      irt.push_back( mm0.insert( value_type( i, i ) ) );
++
++  iterator pos1 = mm0.erase(irt[1]);
++  VERIFY( pos1 == irt[2] );
++
++  iterator pos2 = mm0.erase(irt[2]);
++  VERIFY( pos2 == irt[3] );
++
++  iterator pos3 = mm0.erase(irt[9]);
++  VERIFY( pos3 == mm0.end() );
++}
++
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  multimap<int, int> mm0;
++  typedef multimap<int, int>::iterator iterator;
++  typedef multimap<int, int>::const_iterator const_iterator;
++  typedef multimap<int, int>::value_type value_type;
++  typedef iterator insert_return_type;
++
++  vector<insert_return_type> irt;
++  for (int i = 1; i <= 4; ++i)
++    for (int j = 1; j <= i; ++j)
++      irt.push_back( mm0.insert( value_type( i, i ) ) );
++
++  iterator pos1 = mm0.erase(irt[3], irt[6]);
++  VERIFY( pos1 == irt[6] );
++
++  iterator pos2 = mm0.erase(irt[6], ++irt[9]);
++  VERIFY( pos2 == mm0.end() );
++}
++
++int
++main()
++{
++  test01();
++  test02();
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc	2013-06-25 19:30:14.613476000 -0500
+@@ -0,0 +1,36 @@
++// { dg-do compile }
++// { dg-options -std=c++11 }
++// { dg-require-normal-mode "" }
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Test that the C++11 variants have an ABI tag
++
++#include <map>
++
++using container = std::multimap<int, int>;
++using iterator = typename container::iterator;
++using const_iterator = typename container::const_iterator;
++
++// { dg-final { scan-assembler "_ZNSt8multimapIiiSt4lessIiESaISt4pairIKiiEEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS4_E" } }
++iterator (container::*p1)(iterator) = &container::erase;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,40 @@
++// { dg-require-effective-target ia32 }
++// { dg-require-sharedlib "" }
++// { dg-options "-fno-inline -std=gnu++11 ./testsuite_shared.so" }
++// 2013-06-03  Benjamin Kosnik  <bkoz@redhat..com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <testsuite_containers.h>
++
++int main()
++{
++  typedef std::multimap<int, int>		container_type;
++
++  {
++    container_type s { {0,0} , {1,1} , {2,2} };
++    __gnu_test::linkage_check_cxx98_cxx11_erase(s);
++  }
++
++  {
++    container_type s { {0,0} , {1,1} , {2,2} };
++    __gnu_test::linkage_check_cxx98_cxx11_erase_iterators(s);
++  }
++
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/dr130.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/dr130.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,85 +0,0 @@
+-// { dg-options "-std=gnu++0x" }
+-
+-// Copyright (C) 2009-2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-
+-// NOTE: This makes use of the fact that we know how moveable
+-// is implemented on multiset (via swap). If the implementation changed
+-// this test may begin to fail.
+-
+-#include <set>
+-#include <vector>
+-#include <testsuite_hooks.h>
+-
+-using namespace std;
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  multiset<int> ms0;
+-  typedef multiset<int>::iterator iterator;
+-  typedef multiset<int>::const_iterator const_iterator;
+-  typedef iterator insert_return_type;
+-
+-  vector<insert_return_type> irt;
+-  for ( int i = 1; i <= 4; ++i )
+-    for (int j = 1; j <= i; ++j)
+-      irt.push_back( ms0.insert( i ) );
+-
+-  iterator pos1 = ms0.erase(irt[1]);
+-  VERIFY( pos1 == irt[2] );
+-
+-  iterator pos2 = ms0.erase(irt[2]);
+-  VERIFY( pos2 == irt[3] );
+-
+-  iterator pos3 = ms0.erase(irt[9]);
+-  VERIFY( pos3 == ms0.end() );
+-}
+-
+-void
+-test02()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  multiset<int> ms0;
+-  typedef multiset<int>::iterator iterator;
+-  typedef multiset<int>::const_iterator const_iterator;
+-  typedef iterator insert_return_type;
+-
+-  vector<insert_return_type> irt;
+-  for ( int i = 1; i <= 4; ++i )
+-    for (int j = 1; j <= i; ++j)
+-      irt.push_back( ms0.insert( i ) );
+-
+-  iterator pos1 = ms0.erase(irt[3], irt[6]);
+-  VERIFY( pos1 == irt[6] );
+-
+-  iterator pos2 = ms0.erase(irt[6], ++irt[9]);
+-  VERIFY( pos2 == ms0.end() );
+-}
+-
+-int
+-main()
+-{
+-  test01();
+-  test02();
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,85 @@
++// { dg-options "-std=gnu++0x" }
++
++// Copyright (C) 2009-2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++
++// NOTE: This makes use of the fact that we know how moveable
++// is implemented on multiset (via swap). If the implementation changed
++// this test may begin to fail.
++
++#include <set>
++#include <vector>
++#include <testsuite_hooks.h>
++
++using namespace std;
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  multiset<int> ms0;
++  typedef multiset<int>::iterator iterator;
++  typedef multiset<int>::const_iterator const_iterator;
++  typedef iterator insert_return_type;
++
++  vector<insert_return_type> irt;
++  for ( int i = 1; i <= 4; ++i )
++    for (int j = 1; j <= i; ++j)
++      irt.push_back( ms0.insert( i ) );
++
++  iterator pos1 = ms0.erase(irt[1]);
++  VERIFY( pos1 == irt[2] );
++
++  iterator pos2 = ms0.erase(irt[2]);
++  VERIFY( pos2 == irt[3] );
++
++  iterator pos3 = ms0.erase(irt[9]);
++  VERIFY( pos3 == ms0.end() );
++}
++
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  multiset<int> ms0;
++  typedef multiset<int>::iterator iterator;
++  typedef multiset<int>::const_iterator const_iterator;
++  typedef iterator insert_return_type;
++
++  vector<insert_return_type> irt;
++  for ( int i = 1; i <= 4; ++i )
++    for (int j = 1; j <= i; ++j)
++      irt.push_back( ms0.insert( i ) );
++
++  iterator pos1 = ms0.erase(irt[3], irt[6]);
++  VERIFY( pos1 == irt[6] );
++
++  iterator pos2 = ms0.erase(irt[6], ++irt[9]);
++  VERIFY( pos2 == ms0.end() );
++}
++
++int
++main()
++{
++  test01();
++  test02();
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc	2013-06-25 19:30:14.613476000 -0500
+@@ -0,0 +1,39 @@
++// { dg-do compile }
++// { dg-options -std=c++11 }
++// { dg-require-normal-mode "" }
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Test that the C++11 variants have an ABI tag
++
++#include <set>
++
++using container = std::multiset<int>;
++using iterator = typename container::iterator;
++using const_iterator = typename container::const_iterator;
++
++// { dg-final { scan-assembler "_ZNSt8multisetIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiE" } }
++iterator (container::*p1)(const_iterator) = &container::erase;
++
++// { dg-final { scan-assembler "_ZNSt8multisetIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiES5_" } }
++iterator (container::*p2)(const_iterator, const_iterator) = &container::erase;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,40 @@
++// { dg-require-effective-target ia32 }
++// { dg-require-sharedlib "" }
++// { dg-options "-fno-inline -std=gnu++11 ./testsuite_shared.so" }
++// 2013-06-03  Benjamin Kosnik  <bkoz@redhat..com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <testsuite_containers.h>
++
++int main()
++{
++  typedef std::multiset<int>			container_type;
++
++  {
++    container_type s { 0, 1, 2 };
++    __gnu_test::linkage_check_cxx98_cxx11_erase(s);
++  }
++
++  {
++    container_type s { 0, 1, 2 };
++    __gnu_test::linkage_check_cxx98_cxx11_erase_iterators(s);
++  }
++
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/dr130.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/dr130.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,75 +0,0 @@
+-// { dg-options "-std=gnu++0x" }
+-// 2008-07-22  Edward Smith-Rowland  <3dw4rd@verizon.net>
+-//
+-// Copyright (C) 2009-2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <set>
+-#include <testsuite_hooks.h>
+-
+-//  DR 130. Associative erase should return an iterator.
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  set<int> s0;
+-  typedef set<int>::iterator iterator;
+-  typedef set<int>::const_iterator const_iterator;
+-  typedef pair<iterator, bool> insert_return_type;
+-
+-  s0.insert(1);
+-  insert_return_type irt1 = s0.insert(2);
+-  insert_return_type irt2 = s0.insert(3);
+-
+-  iterator pos1 = s0.erase(irt1.first);
+-  VERIFY( pos1 == irt2.first );
+-
+-  iterator pos2 = s0.erase(irt2.first);
+-  VERIFY( pos2 == s0.end() );
+-}
+-
+-void
+-test02()
+-{
+-  bool test __attribute__((unused)) = true;
+-  using namespace std;
+-
+-  set<int> s0;
+-  typedef set<int>::iterator iterator;
+-  typedef set<int>::const_iterator const_iterator;
+-  typedef pair<iterator, bool> insert_return_type;
+-
+-  insert_return_type irt0 = s0.insert(1);
+-  s0.insert(2);
+-  insert_return_type irt2 = s0.insert(3);
+-  insert_return_type irt3 = s0.insert(4);
+-
+-  iterator pos1 = s0.erase(irt0.first, irt2.first);
+-  VERIFY( pos1 == irt2.first );
+-
+-  iterator pos2 = s0.erase(irt2.first, ++irt3.first);
+-  VERIFY( pos2 == s0.end() );
+-}
+-
+-int
+-main()
+-{
+-  test01();
+-  test02();
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,75 @@
++// { dg-options "-std=gnu++0x" }
++// 2008-07-22  Edward Smith-Rowland  <3dw4rd@verizon.net>
++//
++// Copyright (C) 2009-2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <set>
++#include <testsuite_hooks.h>
++
++//  DR 130. Associative erase should return an iterator.
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  set<int> s0;
++  typedef set<int>::iterator iterator;
++  typedef set<int>::const_iterator const_iterator;
++  typedef pair<iterator, bool> insert_return_type;
++
++  s0.insert(1);
++  insert_return_type irt1 = s0.insert(2);
++  insert_return_type irt2 = s0.insert(3);
++
++  iterator pos1 = s0.erase(irt1.first);
++  VERIFY( pos1 == irt2.first );
++
++  iterator pos2 = s0.erase(irt2.first);
++  VERIFY( pos2 == s0.end() );
++}
++
++void
++test02()
++{
++  bool test __attribute__((unused)) = true;
++  using namespace std;
++
++  set<int> s0;
++  typedef set<int>::iterator iterator;
++  typedef set<int>::const_iterator const_iterator;
++  typedef pair<iterator, bool> insert_return_type;
++
++  insert_return_type irt0 = s0.insert(1);
++  s0.insert(2);
++  insert_return_type irt2 = s0.insert(3);
++  insert_return_type irt3 = s0.insert(4);
++
++  iterator pos1 = s0.erase(irt0.first, irt2.first);
++  VERIFY( pos1 == irt2.first );
++
++  iterator pos2 = s0.erase(irt2.first, ++irt3.first);
++  VERIFY( pos2 == s0.end() );
++}
++
++int
++main()
++{
++  test01();
++  test02();
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc	2013-06-25 19:30:14.613476000 -0500
+@@ -0,0 +1,39 @@
++// { dg-do compile }
++// { dg-options -std=c++11 }
++// { dg-require-normal-mode "" }
++
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++// Test that the C++11 variants have an ABI tag
++
++#include <set>
++
++using container = std::set<int>;
++using iterator = typename container::iterator;
++using const_iterator = typename container::const_iterator;
++
++// { dg-final { scan-assembler "_ZNSt3setIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiE" } }
++iterator (container::*p1)(const_iterator) = &container::erase;
++
++// { dg-final { scan-assembler "_ZNSt3setIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiES5_" } }
++iterator (container::*p2)(const_iterator, const_iterator) = &container::erase;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -0,0 +1,40 @@
++// { dg-require-effective-target ia32 }
++// { dg-require-sharedlib "" }
++// { dg-options "-fno-inline -std=gnu++11 ./testsuite_shared.so" }
++// 2013-06-03  Benjamin Kosnik  <bkoz@redhat..com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <testsuite_containers.h>
++
++int main()
++{
++  typedef std::set<int>			container_type;
++
++  {
++    container_type s { 0, 1, 2 };
++    __gnu_test::linkage_check_cxx98_cxx11_erase(s);
++  }
++
++  {
++    container_type s { 0, 1, 2 };
++    __gnu_test::linkage_check_cxx98_cxx11_erase_iterators(s);
++  }
++
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.C gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.C
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.C	2013-06-14 18:38:33.460951000 -0500
+@@ -0,0 +1,51 @@
++// { dg-options "-std=gnu++11" }
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <unordered_map>
++#include <string>
++#include <testsuite_hooks.h>
++
++void test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  {
++    std::unordered_map<std::string, std::string> mymap;
++    std::pair<std::string, std::string> mypair{std::string("key"),
++	                                       std::string("value")};
++    mymap.insert(mypair);
++
++    VERIFY( mypair.first.length() && mypair.second.length() );
++  }
++
++  {
++    std::unordered_map<std::string, std::string> mymap;
++    std::pair<std::string, std::string> mypair{std::string("key"),
++	                                       std::string("value")};
++    mymap.insert(mymap.begin(), mypair);
++
++    VERIFY( mypair.first.length() && mypair.second.length() );
++  }
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.C gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.C
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.C	2013-06-14 18:38:33.460951000 -0500
+@@ -0,0 +1,51 @@
++// { dg-options "-std=gnu++11" }
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <unordered_map>
++#include <string>
++#include <testsuite_hooks.h>
++
++void test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  {
++    std::unordered_multimap<std::string, std::string> mymmap;
++    std::pair<std::string, std::string> mypair{std::string("key"),
++	                                       std::string("value")};
++    mymmap.insert(mypair);
++
++    VERIFY( mypair.first.length() && mypair.second.length() );
++  }
++
++  {
++    std::unordered_multimap<std::string, std::string> mymmap;
++    std::pair<std::string, std::string> mypair{std::string("key"),
++	                                       std::string("value")};
++    mymmap.insert(mymmap.begin(), mypair);
++
++    VERIFY( mypair.first.length() && mypair.second.length() );
++  }
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc	2013-02-20 15:23:44.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc	2013-07-31 14:29:13.979450000 -0500
+@@ -30,7 +30,7 @@
+ };
+ 
+ struct equal {
+-  bool operator()(const MoveOnly&, const MoveOnly) const { return true; }
++  bool operator()(const MoveOnly&, const MoveOnly&) const { return true; }
+ };
+ struct hash {
+   std::size_t operator()(const MoveOnly&) const { return 0; }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc	2013-06-22 16:07:22.456114000 -0500
+@@ -43,6 +43,17 @@
+   std::binomial_distribution<> bd3(10, 0.75);
+   auto bbd3 = std::bind(bd3, eng);
+   testDiscreteDist(bbd3, [](int n) { return binomial_pdf(n, 10, 0.75); } );
++
++  // libstdc++/57674
++  std::binomial_distribution<> bd4(1, 0.8);
++  const std::binomial_distribution<>::param_type pm4(1, 0.3);
++  auto bbd4 = std::bind(bd4, eng, pm4);
++  testDiscreteDist(bbd4, [](int n) { return binomial_pdf(n, 1, 0.3); } );
++
++  std::binomial_distribution<> bd5(100, 0.3);
++  const std::binomial_distribution<>::param_type pm5(100, 0.8);
++  auto bbd5 = std::bind(bd5, eng, pm5);
++  testDiscreteDist(bbd5, [](int n) { return binomial_pdf(n, 100, 0.8); } );
+ }
+ 
+ int main()
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.a() == 0.0 );
+   VERIFY( u.b() == 1.0 );
+   typedef std::cauchy_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.a() == 5.0 );
+   VERIFY( u.b() == 2.0 );
+   typedef std::cauchy_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -34,7 +34,7 @@
+   std::exponential_distribution<> u;
+   VERIFY( u.lambda() == 1.0 );
+   typedef std::exponential_distribution<>::result_type result_type;
+-  VERIFY( u.min() == 0 );
++  VERIFY( u.min() == 0.0 );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -34,7 +34,7 @@
+   std::exponential_distribution<> u(0.5);
+   VERIFY( u.lambda() == 0.5 );
+   typedef std::exponential_distribution<>::result_type result_type;
+-  VERIFY( u.min() == 0 );
++  VERIFY( u.min() == 0.0 );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.a() == 0.0 );
+   VERIFY( u.b() == 1.0 );
+   typedef std::extreme_value_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.a() == 5.0 );
+   VERIFY( u.b() == 2.0 );
+   typedef std::extreme_value_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.mean() == 0.0 );
+   VERIFY( u.stddev() == 1.0 );
+   typedef std::normal_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -35,7 +35,7 @@
+   VERIFY( u.mean() == 5.0 );
+   VERIFY( u.stddev() == 2.0 );
+   typedef std::normal_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -34,7 +34,7 @@
+   std::student_t_distribution<> u;
+   VERIFY( u.n() == 1.0 );
+   typedef std::student_t_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -34,7 +34,7 @@
+   std::student_t_distribution<> u(1.5);
+   VERIFY( u.n() == 1.5 );
+   typedef std::student_t_distribution<>::result_type result_type;
+-  VERIFY( u.min() == std::numeric_limits<result_type>::min() );
++  VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
+   VERIFY( u.max() == std::numeric_limits<result_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C	2013-06-21 09:23:29.754164000 -0500
+@@ -0,0 +1,37 @@
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <valarray>
++#include <testsuite_hooks.h>
++
++// libstdc++/57666
++void test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  std::valarray<int> a(3), b(3), d1, d2;
++  d1 = a;
++  VERIFY( d1.size() == 3 );
++  d2 = a + b;
++  VERIFY( d2.size() == 3 );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -25,4 +25,4 @@
+ 
+ #include <vector>
+ 
+-// { dg-error "multiple inlined namespaces" "" { target *-*-* } 269 }
++// { dg-error "multiple inlined namespaces" "" { target *-*-* } 275 }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -36,9 +36,9 @@
+   VERIFY( u.varcov()[1] == 0.0 );
+   VERIFY( u.varcov()[2] == 1.0 );
+   typedef __gnu_cxx::normal_mv_distribution<2>::result_type result_type;
+-  VERIFY( u.min()[0] == std::numeric_limits<result_type::value_type>::min() );
++  VERIFY( u.min()[0] == std::numeric_limits<result_type::value_type>::lowest() );
+   VERIFY( u.max()[0] == std::numeric_limits<result_type::value_type>::max() );
+-  VERIFY( u.min()[1] == std::numeric_limits<result_type::value_type>::min() );
++  VERIFY( u.min()[1] == std::numeric_limits<result_type::value_type>::lowest() );
+   VERIFY( u.max()[1] == std::numeric_limits<result_type::value_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc	2013-08-07 07:13:24.193280000 -0500
+@@ -36,9 +36,9 @@
+   VERIFY( u.varcov()[1] == 0.0 );
+   VERIFY( u.varcov()[2] == 3.0 );
+   typedef __gnu_cxx::normal_mv_distribution<2>::result_type result_type;
+-  VERIFY( u.min()[0] == std::numeric_limits<result_type::value_type>::min() );
++  VERIFY( u.min()[0] == std::numeric_limits<result_type::value_type>::lowest() );
+   VERIFY( u.max()[0] == std::numeric_limits<result_type::value_type>::max() );
+-  VERIFY( u.min()[1] == std::numeric_limits<result_type::value_type>::min() );
++  VERIFY( u.min()[1] == std::numeric_limits<result_type::value_type>::lowest() );
+   VERIFY( u.max()[1] == std::numeric_limits<result_type::value_type>::max() );
+ }
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,44 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::triangular_distribution<> u;
++  VERIFY( u.a() == 0.0 );
++  VERIFY( u.b() == 0.5 );
++  VERIFY( u.c() == 1.0 );
++  VERIFY( u.min() == 0.0 );
++  VERIFY( u.max() == 1.0 );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,44 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::triangular_distribution<> u(1.5, 3.0, 3.5);
++  VERIFY( u.a() == 1.5 );
++  VERIFY( u.b() == 3.0 );
++  VERIFY( u.c() == 3.5 );
++  VERIFY( u.min() == 1.5 );
++  VERIFY( u.max() == 3.5 );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,42 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 4.0), v, w;
++
++  VERIFY( v == w );
++  VERIFY( !(u == v) );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,42 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 5.0), v, w;
++
++  VERIFY( u != v );
++  VERIFY( !(v != w) );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,44 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2009-08-14  Edward M. Smith-Rowland  <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <sstream>
++
++void
++test01()
++{
++  std::stringstream str;
++  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 4.5), v;
++  std::minstd_rand0 rng;
++
++  u(rng); // advance
++  str << u;
++
++  str >> v;
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,26 @@
++// { dg-do compile }
++// { dg-options "-std=c++11" }
++// { dg-require-cstdint "" }
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++
++template class __gnu_cxx::triangular_distribution<float>;
++template class __gnu_cxx::triangular_distribution<double>;
++template class __gnu_cxx::triangular_distribution<long double>;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,34 @@
++// { dg-do compile }
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++
++void
++test01()
++{
++  typedef __gnu_cxx::triangular_distribution<double> test_type;
++
++  typedef test_type::result_type result_type;
++  typedef test_type::param_type param_type;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,43 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::von_mises_distribution<> u;
++  VERIFY( u.mu() == 0.0 );
++  VERIFY( u.kappa() == 1.0 );
++  VERIFY( u.min() == -__gnu_cxx::__math_constants<double>::__pi );
++  VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,43 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::von_mises_distribution<> u(1.5, 3.0);
++  VERIFY( u.mu() == 1.5 );
++  VERIFY( u.kappa() == 3.0 );
++  VERIFY( u.min() == -__gnu_cxx::__math_constants<double>::__pi );
++  VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,42 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v, w;
++
++  VERIFY( v == w );
++  VERIFY( !(u == v) );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,42 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++  bool test __attribute__((unused)) = true;
++
++  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v, w;
++
++  VERIFY( u != v );
++  VERIFY( !(v != w) );
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,44 @@
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2009-08-14  Edward M. Smith-Rowland  <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++#include <sstream>
++
++void
++test01()
++{
++  std::stringstream str;
++  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v;
++  std::minstd_rand0 rng;
++
++  u(rng); // advance
++  str << u;
++
++  str >> v;
++}
++
++int main()
++{
++  test01();
++  return 0;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,26 @@
++// { dg-do compile }
++// { dg-options "-std=c++11" }
++// { dg-require-cstdint "" }
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++
++template class __gnu_cxx::von_mises_distribution<float>;
++template class __gnu_cxx::von_mises_distribution<double>;
++template class __gnu_cxx::von_mises_distribution<long double>;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc	1969-12-31 18:00:00.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc	2013-08-07 07:23:15.522175000 -0500
+@@ -0,0 +1,34 @@
++// { dg-do compile }
++// { dg-options "-std=c++0x" }
++// { dg-require-cstdint "" }
++//
++// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
++// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
++//
++// Copyright (C) 2013 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
++// any later version.
++//
++// This library 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 library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++#include <ext/random>
++
++void
++test01()
++{
++  typedef __gnu_cxx::von_mises_distribution<double> test_type;
++
++  typedef test_type::result_type result_type;
++  typedef test_type::param_type param_type;
++}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/cons/default.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,44 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::triangular_distribution<> u;
+-  VERIFY( u.a() == 0.0 );
+-  VERIFY( u.b() == 0.5 );
+-  VERIFY( u.c() == 1.0 );
+-  VERIFY( u.min() == 0.0 );
+-  VERIFY( u.max() == 1.0 );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/cons/parms.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,44 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::triangular_distribution<> u(1.5, 3.0, 3.5);
+-  VERIFY( u.a() == 1.5 );
+-  VERIFY( u.b() == 3.0 );
+-  VERIFY( u.c() == 3.5 );
+-  VERIFY( u.min() == 1.5 );
+-  VERIFY( u.max() == 3.5 );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/equal.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,42 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 4.0), v, w;
+-
+-  VERIFY( v == w );
+-  VERIFY( !(u == v) );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/inequal.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,42 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 5.0), v, w;
+-
+-  VERIFY( u != v );
+-  VERIFY( !(v != w) );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/operators/serialize.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,44 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2009-08-14  Edward M. Smith-Rowland  <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <sstream>
+-
+-void
+-test01()
+-{
+-  std::stringstream str;
+-  __gnu_cxx::triangular_distribution<double> u(1.5, 3.0, 4.5), v;
+-  std::minstd_rand0 rng;
+-
+-  u(rng); // advance
+-  str << u;
+-
+-  str >> v;
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/explicit_instantiation/1.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,26 +0,0 @@
+-// { dg-do compile }
+-// { dg-options "-std=c++11" }
+-// { dg-require-cstdint "" }
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-
+-template class __gnu_cxx::triangular_distribution<float>;
+-template class __gnu_cxx::triangular_distribution<double>;
+-template class __gnu_cxx::triangular_distribution<long double>;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/triangular_distribution/requirements/typedefs.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,34 +0,0 @@
+-// { dg-do compile }
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-
+-void
+-test01()
+-{
+-  typedef __gnu_cxx::triangular_distribution<double> test_type;
+-
+-  typedef test_type::result_type result_type;
+-  typedef test_type::param_type param_type;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/default.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,43 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::von_mises_distribution<> u;
+-  VERIFY( u.mu() == 0.0 );
+-  VERIFY( u.kappa() == 1.0 );
+-  VERIFY( u.min() == -__gnu_cxx::__math_constants<double>::__pi );
+-  VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/cons/parms.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,43 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::von_mises_distribution<> u(1.5, 3.0);
+-  VERIFY( u.mu() == 1.5 );
+-  VERIFY( u.kappa() == 3.0 );
+-  VERIFY( u.min() == -__gnu_cxx::__math_constants<double>::__pi );
+-  VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/equal.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,42 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v, w;
+-
+-  VERIFY( v == w );
+-  VERIFY( !(u == v) );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/inequal.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,42 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2010-03-16  Paolo Carlini  <paolo.carlini@oracle.com>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <testsuite_hooks.h>
+-
+-void
+-test01()
+-{
+-  bool test __attribute__((unused)) = true;
+-
+-  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v, w;
+-
+-  VERIFY( u != v );
+-  VERIFY( !(v != w) );
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/operators/serialize.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,44 +0,0 @@
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2009-08-14  Edward M. Smith-Rowland  <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper  <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-#include <sstream>
+-
+-void
+-test01()
+-{
+-  std::stringstream str;
+-  __gnu_cxx::von_mises_distribution<double> u(1.5, 3.0), v;
+-  std::minstd_rand0 rng;
+-
+-  u(rng); // advance
+-  str << u;
+-
+-  str >> v;
+-}
+-
+-int main()
+-{
+-  test01();
+-  return 0;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/explicit_instantiation/1.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,26 +0,0 @@
+-// { dg-do compile }
+-// { dg-options "-std=c++11" }
+-// { dg-require-cstdint "" }
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-
+-template class __gnu_cxx::von_mises_distribution<float>;
+-template class __gnu_cxx::von_mises_distribution<double>;
+-template class __gnu_cxx::von_mises_distribution<long double>;
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc	2013-03-02 18:12:28.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/ext/von_mises_distribution/requirements/typedefs.cc	1969-12-31 18:00:00.000000000 -0600
+@@ -1,34 +0,0 @@
+-// { dg-do compile }
+-// { dg-options "-std=c++0x" }
+-// { dg-require-cstdint "" }
+-//
+-// 2008-11-24  Edward M. Smith-Rowland <3dw4rd@verizon.net>
+-// 2013-03-02  Ulrich Drepper <drepper@gmail.com>
+-//
+-// Copyright (C) 2013 Free Software Foundation, Inc.
+-//
+-// This file is part of the GNU ISO C++ Library.  This library 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 3, or (at your option)
+-// any later version.
+-//
+-// This library 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 library; see the file COPYING3.  If not see
+-// <http://www.gnu.org/licenses/>.
+-
+-#include <ext/random>
+-
+-void
+-test01()
+-{
+-  typedef __gnu_cxx::von_mises_distribution<double> test_type;
+-
+-  typedef test_type::result_type result_type;
+-  typedef test_type::param_type param_type;
+-}
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-4.8.1/libstdc++-v3/testsuite/lib/libstdc++.exp
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/lib/libstdc++.exp	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/lib/libstdc++.exp	2013-06-12 15:44:17.319811000 -0500
+@@ -626,7 +626,7 @@
+ 	    # Compile with "-w" so that warnings issued by the compiler
+ 	    # do not prevent compilation.
+ 	    if { [v3_target_compile $srcdir/util/$f $object_file "sharedlib" \
+-	     [list "incdir=$srcdir" "additional_flags=-w -shared -fPIC -DPIC"]]
++	     [list "incdir=$srcdir" "additional_flags=-fno-inline -w -shared -fPIC -DPIC"]]
+ 		 != "" } {
+ 		error "could not compile $f"
+ 	    }
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/util/testsuite_containers.h gcc-4.8.1/libstdc++-v3/testsuite/util/testsuite_containers.h
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/util/testsuite_containers.h	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/util/testsuite_containers.h	2013-06-12 15:44:17.319811000 -0500
+@@ -223,6 +223,58 @@
+   template<typename _Tp>
+   _Tp citerator<_Tp>::_S_container;
+ 
++  // DR 130 vs. C++98 vs. C++11.
++  // Defined in testsuite_shared.cc.
++  void 
++  erase_external(std::set<int>& s);
++
++  void 
++  erase_external(std::multiset<int>& s);
++
++  void 
++  erase_external(std::map<int, int>& s);
++
++  void 
++  erase_external(std::multimap<int, int>& s);
++
++  void 
++  erase_external_iterators(std::set<int>& s);
++
++  void 
++  erase_external_iterators(std::multiset<int>& s);
++
++  void 
++  erase_external_iterators(std::map<int, int>& s);
++
++  void 
++  erase_external_iterators(std::multimap<int, int>& s);
++
++// NB: "must be compiled with C++11"
++#if __cplusplus >= 201103L
++template<typename _Tp>
++  void 
++  linkage_check_cxx98_cxx11_erase(_Tp& container)
++  {
++    // Crashing when exteral reference and internal reference symbols are
++    // equivalently mangled but have different size return types in C++98
++    // and C++11 signatures.
++    erase_external(container); 		// C++98
++    container.erase(container.begin());	// C++11
++  }
++
++template<typename _Tp>
++  void 
++  linkage_check_cxx98_cxx11_erase_iterators(_Tp& container)
++  {
++    // Crashing when exteral reference and internal reference symbols are
++    // equivalently mangled but have different size return types in C++98
++    // and C++11 signatures.
++    erase_external_iterators(container);// C++98
++
++    auto iter = container.begin();
++    container.erase(iter, ++iter);	// C++11
++  }
++#endif
+ 
+ } // namespace __gnu_test
+ 
+diff -Naur gcc-4.8.1.orig/libstdc++-v3/testsuite/util/testsuite_shared.cc gcc-4.8.1/libstdc++-v3/testsuite/util/testsuite_shared.cc
+--- gcc-4.8.1.orig/libstdc++-v3/testsuite/util/testsuite_shared.cc	2013-02-03 11:54:05.000000000 -0600
++++ gcc-4.8.1/libstdc++-v3/testsuite/util/testsuite_shared.cc	2013-06-12 15:44:17.319811000 -0500
+@@ -19,9 +19,13 @@
+ #include <stdexcept>
+ #include <iostream>
+ #include <sstream>
++#include <set>
++#include <map>
+ #include <ext/mt_allocator.h>
+ #include <bits/functexcept.h>
+ 
++namespace __gnu_test
++{
+ // libstdc++/22309
+ extern "C" void
+ try_allocation()
+@@ -70,3 +74,57 @@
+   // Randomly throw. See if other threads cleanup.
+   std::__throw_bad_exception();
+ }
++
++#if __cplusplus < 201103L
++// "must be compiled with C++98"
++  void 
++  erase_external(std::set<int>& s)
++  { s.erase(s.begin()); }
++
++  void 
++  erase_external(std::multiset<int>& s)
++  { s.erase(s.begin()); }
++  
++  void 
++  erase_external(std::map<int, int>& s)
++  { s.erase(s.begin()); }
++  
++  void 
++  erase_external(std::multimap<int, int>& s)
++  { s.erase(s.begin()); }
++
++  void 
++  erase_external_iterators(std::set<int>& s)
++  {
++    typedef typename std::set<int>::iterator iterator_type;
++    iterator_type iter = s.begin();
++    s.erase(iter, ++iter);
++  }
++
++  void 
++  erase_external_iterators(std::multiset<int>& s)
++  {
++    typedef typename std::multiset<int>::iterator iterator_type;
++    iterator_type iter = s.begin();
++    s.erase(iter, ++iter);
++  }
++
++  void 
++  erase_external_iterators(std::map<int, int>& s)
++  {
++    typedef typename std::map<int, int>::iterator iterator_type;
++    iterator_type iter = s.begin();
++    s.erase(iter, ++iter);
++  }
++
++  
++  void 
++  erase_external_iterators(std::multimap<int, int>& s)
++  {
++    typedef typename std::multimap<int, int>::iterator iterator_type;
++    iterator_type iter = s.begin();
++    s.erase(iter, ++iter);
++  }
++#endif
++
++} // end namepace __gnu_test
