public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/7] kvx: New port.
@ 2023-07-21  7:49 Paul Iannetta
  2023-07-21  7:49 ` [PATCH 1/7] kvx: Add bf files Paul Iannetta
                   ` (11 more replies)
  0 siblings, 12 replies; 34+ messages in thread
From: Paul Iannetta @ 2023-07-21  7:49 UTC (permalink / raw)
  To: binutils; +Cc: Paul Iannetta

On behalf of Kalray - a semiconductor company based in the south of France - I
would like to contribute the binutils port for the KVX ISA, with the following
sub-architectures:
  - kv3-v1: 3rd gen (Coolidge),  1st revision (stable);
  - kv3-v2: 3rd gen (Coolidge),  2nd revision (stable);
  - kv4-v1: 4th gen (Dolomites), 1st revision (experimental).

I will be the maintainer of the port.

I've split up the port into as many parts as subdirectories we have changes in,
the current set of patch covers the binutils without gdb (that we plan to upstream
in a second time.)

Kalray has completed the copyright assignment forms from FSF for the binutils.

Please let me know if I am missing anything.

Regards,
Paul Iannetta,
Kalray






^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 1/7] kvx: Add bf files.
  2023-07-21  7:49 [PATCH 0/7] kvx: New port Paul Iannetta
@ 2023-07-21  7:49 ` Paul Iannetta
  2023-07-21  7:49 ` [PATCH 2/7] kvx: Add binutils files Paul Iannetta
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Paul Iannetta @ 2023-07-21  7:49 UTC (permalink / raw)
  To: binutils; +Cc: Paul Iannetta

bfd/ChangeLog:

2023-07-20  Paul Iannetta  <piannetta@kalrayinc.com>

	* Makefile.am (ALL_MACHINES): Add cpu-kvx.lo.
	(ALL_MACHINES_CFILES): Add cpu-kvx.c.
	(BFD32_BACKENDS): Add elf32-kvx.lo, elfxx-kvx.lo.
	(BFD32_BACKENDS_CFILES): Add elfxx-kvx.c.
	(BFD64_BACKENDS): Add elfxx-kvx.lo.
	(BFD64_BACKENDS_CFILES): Add elfxx-kvx.c.
	(BUILD_CFILES): Add elf32-kvx.c elf64-kvx.c.
	* Makefile.in: Regenerate.
	* archures.c (bfd_architecture): Define bfd_mach_kv3_unknown,
	bfd_mach_kv3_1, bfd_mach_kv3_1_64, bfd_mach_kv3_1_usr, bfd_mach_kv3_2,
	bfd_mach_kv3_2_64, bfd_mach_kv3_2_usr, bfd_mach_kv4_1,
	bfd_mach_kv4_1_64, bfd_mach_kv4_1_usr.
	(bfd_arch_info): Add bfd_kvx_arch.
	(bfd_archures_list): Add bfd_kvx_arch.
	* bfd-in2.h: Regenerate.
	* config.bfd: Handle kvx-*-* and kvx-*-linux*
	* configure: Regenerate.
	* configure.ac: Handle kvx_elf32_vec, kvx_elf64_vec,
	  kvx_elf64_linux_vec.
	* cpu-kvx.c: New file.
	* elf-bfd.h (enum elf_target_id): Define KVX_ELF_DATA.
	* elfnn-kvx.c: New file.
	* elfxx-kvx-relocs.h: New file.
	* elfxx-kvx.c: New file.
	* elfxx-kvx.h: New file.
	* libbfd.h: Regenerate.
	* po/BLD-POTFILES.in: Add elf32-kvx.c, elf64-kvx.c.
	* po/SRC-POTFILES.in: Add cpu-kvx.c, elfxx-kvx.c.
	* reloc.c: Add BFD_RELOC_KVX_{NONE, 16, 32, 64, S16_PCREL, PCREL17,
	  PCREL27, 32_PCREL, S37_PCREL_LO10, S37_PCREL_UP27, S43_PCREL_LO10,
	  S43_PCREL_UP27, S43_PCREL_EX6, S64_PCREL_LO10, S64_PCREL_UP27,
	  S64_PCREL_EX27, 64_PCREL, S16, S32_LO5, S32_UP27, S37_LO10, S37_UP27,
	  S37_GOTOFF_LO10, S37_GOTOFF_UP27, S43_GOTOFF_LO10, S43_GOTOFF_UP27,
	  S43_GOTOFF_EX6, 32_GOTOFF, 64_GOTOFF, 32_GOT, S37_GOT_LO10,
	  S37_GOT_UP27, S43_GOT_LO10, S43_GOT_UP27, S43_GOT_EX6, 64_GOT,
	  GLOB_DAT, COPY, JMP_SLOT, RELATIVE, S43_LO10, S43_UP27, S43_EX6,
	  S64_LO10, S64_UP27, S64_EX27, S37_GOTADDR_LO10, S37_GOTADDR_UP27,
	  S43_GOTADDR_LO10, S43_GOTADDR_UP27, S43_GOTADDR_EX6,
	  S64_GOTADDR_LO10, S64_GOTADDR_UP27, S64_GOTADDR_EX27, 64_DTPMOD,
	  64_DTPOFF, S37_TLS_DTPOFF_LO10, S37_TLS_DTPOFF_UP27,
	  S43_TLS_DTPOFF_LO10, S43_TLS_DTPOFF_UP27, S43_TLS_DTPOFF_EX6,
	  S37_TLS_GD_LO10, S37_TLS_GD_UP27, S43_TLS_GD_LO10, S43_TLS_GD_UP27,
	  S43_TLS_GD_EX6, S37_TLS_LD_LO10, S37_TLS_LD_UP27, S43_TLS_LD_LO10,
	  S43_TLS_LD_UP27, S43_TLS_LD_EX6, 64_TPOFF, S37_TLS_IE_LO10,
	  S37_TLS_IE_UP27, S43_TLS_IE_LO10, S43_TLS_IE_UP27, S43_TLS_IE_EX6,
	  S37_TLS_LE_LO10, S37_TLS_LE_UP27, S43_TLS_LE_LO10, S43_TLS_LE_UP27,
	  S43_TLS_LE_EX6, 8}.
	* targets.c (kvx_elf32_vec): Declare.
	  (kvx_elf64_vec): Declare.
	  (kvx_elf64_linux_vec): Declare.
	  (_bfd_target_vector): Add kvx_elf32_vec, kvx_elf64_vec,
	  kvx_elf64_linux_vec.
---
 bfd/Makefile.am        |   20 +
 bfd/Makefile.in        |   25 +
 bfd/archures.c         |   13 +
 bfd/bfd-in2.h          |  111 +
 bfd/config.bfd         |   16 +
 bfd/configure          |    3 +
 bfd/configure.ac       |    3 +
 bfd/cpu-kvx.c          |  124 ++
 bfd/elf-bfd.h          |    1 +
 bfd/elfnn-kvx.c        | 4798 ++++++++++++++++++++++++++++++++++++++++
 bfd/elfxx-kvx-relocs.h | 1105 +++++++++
 bfd/elfxx-kvx.c        |  218 ++
 bfd/elfxx-kvx.h        |   71 +
 bfd/libbfd.h           |   85 +
 bfd/po/BLD-POTFILES.in |    2 +
 bfd/po/SRC-POTFILES.in |    2 +
 bfd/reloc.c            |  186 +-
 bfd/targets.c          |   10 +
 18 files changed, 6792 insertions(+), 1 deletion(-)
 create mode 100644 bfd/cpu-kvx.c
 create mode 100644 bfd/elfnn-kvx.c
 create mode 100644 bfd/elfxx-kvx-relocs.h
 create mode 100644 bfd/elfxx-kvx.c
 create mode 100644 bfd/elfxx-kvx.h

diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index 5c5fdefd3b8..5fc2b822974 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -122,6 +122,7 @@ ALL_MACHINES = \
 	cpu-ip2k.lo \
 	cpu-iq2000.lo \
 	cpu-lm32.lo \
+	cpu-kvx.lo \
 	cpu-loongarch.lo \
 	cpu-m10200.lo \
 	cpu-m10300.lo \
@@ -201,6 +202,7 @@ ALL_MACHINES_CFILES = \
 	cpu-hppa.c \
 	cpu-i386.c \
 	cpu-iamcu.c \
+	cpu-kvx.c \
 	cpu-ia64.c \
 	cpu-ip2k.c \
 	cpu-iq2000.c \
@@ -317,6 +319,8 @@ BFD32_BACKENDS = \
 	elfxx-x86.lo \
 	elf32-ip2k.lo \
 	elf32-iq2000.lo \
+	elf32-kvx.lo \
+	elfxx-kvx.lo \
 	elf32-lm32.lo \
 	elf32-m32c.lo \
 	elf32-m32r.lo \
@@ -452,6 +456,7 @@ BFD32_BACKENDS_CFILES = \
 	elfxx-x86.c \
 	elf32-ip2k.c \
 	elf32-iq2000.c \
+	elfxx-kvx.c \
 	elf32-lm32.c \
 	elf32-m32c.c \
 	elf32-m32r.c \
@@ -556,6 +561,7 @@ BFD64_BACKENDS = \
 	elf64-ia64.lo \
 	elf64-ia64-vms.lo \
 	elfxx-ia64.lo \
+	elfxx-kvx.lo \
 	elf32-loongarch.lo \
 	elf64-loongarch.lo \
 	elfxx-loongarch.lo \
@@ -618,6 +624,7 @@ BFD64_BACKENDS_CFILES = \
 	elfn32-mips.c \
 	elfxx-aarch64.c \
 	elfxx-ia64.c \
+	elfxx-kvx.c \
 	elfxx-loongarch.c \
 	elfxx-mips.c \
 	elfxx-riscv.c \
@@ -681,6 +688,7 @@ SOURCE_CFILES = \
 
 BUILD_CFILES = \
 	elf32-aarch64.c elf64-aarch64.c \
+	elf32-kvx.c elf64-kvx.c \
 	elf32-ia64.c elf64-ia64.c \
 	elf32-loongarch.c elf64-loongarch.c \
 	elf32-riscv.c elf64-riscv.c \
@@ -850,6 +858,18 @@ elf64-ia64.c : elfnn-ia64.c
 	$(AM_V_at)echo "#line 1 \"elfnn-ia64.c\"" > $@
 	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
 
+elf32-kvx.c : elfnn-kvx.c
+	rm -f elf32-kvx.c
+	echo "#line 1 \"$(srcdir)/elfnn-kvx.c\"" > elf32-kvx.new
+	sed -e s/NN/32/g < $(srcdir)/elfnn-kvx.c >> elf32-kvx.new
+	mv -f elf32-kvx.new elf32-kvx.c
+
+elf64-kvx.c : elfnn-kvx.c
+	rm -f elf64-kvx.c
+	echo "#line 1 \"$(srcdir)/elfnn-kvx.c\"" > elf64-kvx.new
+	sed -e s/NN/64/g < $(srcdir)/elfnn-kvx.c >> elf64-kvx.new
+	mv -f elf64-kvx.new elf64-kvx.c
+
 elf32-loongarch.c : elfnn-loongarch.c
 	$(AM_V_at)echo "#line 1 \"elfnn-loongarch.c\"" > $@
 	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index 4edfedee924..c80fba86a0b 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -468,6 +468,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -573,6 +574,7 @@ ALL_MACHINES = \
 	cpu-hppa.lo \
 	cpu-i386.lo \
 	cpu-iamcu.lo \
+	cpu-kvx.lo \
 	cpu-ia64.lo \
 	cpu-ip2k.lo \
 	cpu-iq2000.lo \
@@ -656,6 +658,7 @@ ALL_MACHINES_CFILES = \
 	cpu-hppa.c \
 	cpu-i386.c \
 	cpu-iamcu.c \
+	cpu-kvx.c \
 	cpu-ia64.c \
 	cpu-ip2k.c \
 	cpu-iq2000.c \
@@ -773,6 +776,8 @@ BFD32_BACKENDS = \
 	elfxx-x86.lo \
 	elf32-ip2k.lo \
 	elf32-iq2000.lo \
+	elf32-kvx.lo \
+	elfxx-kvx.lo \
 	elf32-lm32.lo \
 	elf32-m32c.lo \
 	elf32-m32r.lo \
@@ -908,6 +913,7 @@ BFD32_BACKENDS_CFILES = \
 	elfxx-x86.c \
 	elf32-ip2k.c \
 	elf32-iq2000.c \
+	elfxx-kvx.c \
 	elf32-lm32.c \
 	elf32-m32c.c \
 	elf32-m32r.c \
@@ -1013,6 +1019,7 @@ BFD64_BACKENDS = \
 	elf64-ia64.lo \
 	elf64-ia64-vms.lo \
 	elfxx-ia64.lo \
+	elfxx-kvx.lo \
 	elf32-loongarch.lo \
 	elf64-loongarch.lo \
 	elfxx-loongarch.lo \
@@ -1075,6 +1082,7 @@ BFD64_BACKENDS_CFILES = \
 	elfn32-mips.c \
 	elfxx-aarch64.c \
 	elfxx-ia64.c \
+	elfxx-kvx.c \
 	elfxx-loongarch.c \
 	elfxx-mips.c \
 	elfxx-riscv.c \
@@ -1137,6 +1145,7 @@ SOURCE_CFILES = \
 
 BUILD_CFILES = \
 	elf32-aarch64.c elf64-aarch64.c \
+	elf32-kvx.c elf64-kvx.c \
 	elf32-ia64.c elf64-ia64.c \
 	elf32-loongarch.c elf64-loongarch.c \
 	elf32-riscv.c elf64-riscv.c \
@@ -1483,6 +1492,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iamcu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ip2k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iq2000.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-lm32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m10200.Plo@am__quote@
@@ -1577,6 +1587,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ia64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ip2k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-iq2000.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-lm32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m32c.Plo@am__quote@
@@ -1629,6 +1640,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-hppa.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64-vms.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mmix.Plo@am__quote@
@@ -1644,6 +1656,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfn32-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-aarch64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-ia64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-riscv.Plo@am__quote@
@@ -2348,6 +2361,18 @@ elf64-ia64.c : elfnn-ia64.c
 	$(AM_V_at)echo "#line 1 \"elfnn-ia64.c\"" > $@
 	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
 
+elf32-kvx.c : elfnn-kvx.c
+	rm -f elf32-kvx.c
+	echo "#line 1 \"$(srcdir)/elfnn-kvx.c\"" > elf32-kvx.new
+	sed -e s/NN/32/g < $(srcdir)/elfnn-kvx.c >> elf32-kvx.new
+	mv -f elf32-kvx.new elf32-kvx.c
+
+elf64-kvx.c : elfnn-kvx.c
+	rm -f elf64-kvx.c
+	echo "#line 1 \"$(srcdir)/elfnn-kvx.c\"" > elf64-kvx.new
+	sed -e s/NN/64/g < $(srcdir)/elfnn-kvx.c >> elf64-kvx.new
+	mv -f elf64-kvx.new elf64-kvx.c
+
 elf32-loongarch.c : elfnn-loongarch.c
 	$(AM_V_at)echo "#line 1 \"elfnn-loongarch.c\"" > $@
 	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
diff --git a/bfd/archures.c b/bfd/archures.c
index 5a2a76c3de1..b59979e60ac 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -515,6 +515,17 @@ DESCRIPTION
 .  bfd_arch_lm32,      {* Lattice Mico32.  *}
 .#define bfd_mach_lm32		1
 .  bfd_arch_microblaze,{* Xilinx MicroBlaze.  *}
+.  bfd_arch_kvx,        {* Kalray VLIW core of the MPPA processor family *}
+.#define bfd_mach_kv3_unknown       0
+.#define bfd_mach_kv3_1             1
+.#define bfd_mach_kv3_1_64          2
+.#define bfd_mach_kv3_1_usr         3
+.#define bfd_mach_kv3_2             4
+.#define bfd_mach_kv3_2_64          5
+.#define bfd_mach_kv3_2_usr         6
+.#define bfd_mach_kv4_1             7
+.#define bfd_mach_kv4_1_64          8
+.#define bfd_mach_kv4_1_usr         9
 .  bfd_arch_tilepro,   {* Tilera TILEPro.  *}
 .  bfd_arch_tilegx,    {* Tilera TILE-Gx.  *}
 .#define bfd_mach_tilepro	1
@@ -642,6 +653,7 @@ extern const bfd_arch_info_type bfd_iamcu_arch;
 extern const bfd_arch_info_type bfd_ia64_arch;
 extern const bfd_arch_info_type bfd_ip2k_arch;
 extern const bfd_arch_info_type bfd_iq2000_arch;
+extern const bfd_arch_info_type bfd_kvx_arch;
 extern const bfd_arch_info_type bfd_lm32_arch;
 extern const bfd_arch_info_type bfd_loongarch_arch;
 extern const bfd_arch_info_type bfd_m32c_arch;
@@ -730,6 +742,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
     &bfd_ia64_arch,
     &bfd_ip2k_arch,
     &bfd_iq2000_arch,
+    &bfd_kvx_arch,
     &bfd_lm32_arch,
     &bfd_loongarch_arch,
     &bfd_m32c_arch,
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 1b9a801966c..e2ddcb8dedc 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1771,6 +1771,17 @@ enum bfd_architecture
   bfd_arch_lm32,      /* Lattice Mico32.  */
 #define bfd_mach_lm32          1
   bfd_arch_microblaze,/* Xilinx MicroBlaze.  */
+  bfd_arch_kvx,        /* Kalray VLIW core of the MPPA processor family */
+#define bfd_mach_kv3_unknown       0
+#define bfd_mach_kv3_1             1
+#define bfd_mach_kv3_1_64          2
+#define bfd_mach_kv3_1_usr         3
+#define bfd_mach_kv3_2             4
+#define bfd_mach_kv3_2_64          5
+#define bfd_mach_kv3_2_usr         6
+#define bfd_mach_kv4_1             7
+#define bfd_mach_kv4_1_64          8
+#define bfd_mach_kv4_1_usr         9
   bfd_arch_tilepro,   /* Tilera TILEPro.  */
   bfd_arch_tilegx,    /* Tilera TILE-Gx.  */
 #define bfd_mach_tilepro       1
@@ -6497,6 +6508,106 @@ value in two words (with an imm instruction).  The relocation is
 relative offset from start of TEXT.  */
   BFD_RELOC_MICROBLAZE_64_TEXTREL,
 
+/* KVX pseudo relocation code to mark the start of the KVX
+relocation enumerators.  N.B. the order of the enumerators is
+important as several tables in the KVX bfd backend are indexed
+by these enumerators; make sure they are all synced.";  */
+  BFD_RELOC_KVX_RELOC_START,
+
+/* KVX null relocation code.  */
+  BFD_RELOC_KVX_NONE,
+
+/* KVX Relocations.  */
+  BFD_RELOC_KVX_16,
+  BFD_RELOC_KVX_32,
+  BFD_RELOC_KVX_64,
+  BFD_RELOC_KVX_S16_PCREL,
+  BFD_RELOC_KVX_PCREL17,
+  BFD_RELOC_KVX_PCREL27,
+  BFD_RELOC_KVX_32_PCREL,
+  BFD_RELOC_KVX_S37_PCREL_LO10,
+  BFD_RELOC_KVX_S37_PCREL_UP27,
+  BFD_RELOC_KVX_S43_PCREL_LO10,
+  BFD_RELOC_KVX_S43_PCREL_UP27,
+  BFD_RELOC_KVX_S43_PCREL_EX6,
+  BFD_RELOC_KVX_S64_PCREL_LO10,
+  BFD_RELOC_KVX_S64_PCREL_UP27,
+  BFD_RELOC_KVX_S64_PCREL_EX27,
+  BFD_RELOC_KVX_64_PCREL,
+  BFD_RELOC_KVX_S16,
+  BFD_RELOC_KVX_S32_LO5,
+  BFD_RELOC_KVX_S32_UP27,
+  BFD_RELOC_KVX_S37_LO10,
+  BFD_RELOC_KVX_S37_UP27,
+  BFD_RELOC_KVX_S37_GOTOFF_LO10,
+  BFD_RELOC_KVX_S37_GOTOFF_UP27,
+  BFD_RELOC_KVX_S43_GOTOFF_LO10,
+  BFD_RELOC_KVX_S43_GOTOFF_UP27,
+  BFD_RELOC_KVX_S43_GOTOFF_EX6,
+  BFD_RELOC_KVX_32_GOTOFF,
+  BFD_RELOC_KVX_64_GOTOFF,
+  BFD_RELOC_KVX_32_GOT,
+  BFD_RELOC_KVX_S37_GOT_LO10,
+  BFD_RELOC_KVX_S37_GOT_UP27,
+  BFD_RELOC_KVX_S43_GOT_LO10,
+  BFD_RELOC_KVX_S43_GOT_UP27,
+  BFD_RELOC_KVX_S43_GOT_EX6,
+  BFD_RELOC_KVX_64_GOT,
+  BFD_RELOC_KVX_GLOB_DAT,
+  BFD_RELOC_KVX_COPY,
+  BFD_RELOC_KVX_JMP_SLOT,
+  BFD_RELOC_KVX_RELATIVE,
+  BFD_RELOC_KVX_S43_LO10,
+  BFD_RELOC_KVX_S43_UP27,
+  BFD_RELOC_KVX_S43_EX6,
+  BFD_RELOC_KVX_S64_LO10,
+  BFD_RELOC_KVX_S64_UP27,
+  BFD_RELOC_KVX_S64_EX27,
+  BFD_RELOC_KVX_S37_GOTADDR_LO10,
+  BFD_RELOC_KVX_S37_GOTADDR_UP27,
+  BFD_RELOC_KVX_S43_GOTADDR_LO10,
+  BFD_RELOC_KVX_S43_GOTADDR_UP27,
+  BFD_RELOC_KVX_S43_GOTADDR_EX6,
+  BFD_RELOC_KVX_S64_GOTADDR_LO10,
+  BFD_RELOC_KVX_S64_GOTADDR_UP27,
+  BFD_RELOC_KVX_S64_GOTADDR_EX27,
+  BFD_RELOC_KVX_64_DTPMOD,
+  BFD_RELOC_KVX_64_DTPOFF,
+  BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10,
+  BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6,
+  BFD_RELOC_KVX_S37_TLS_GD_LO10,
+  BFD_RELOC_KVX_S37_TLS_GD_UP27,
+  BFD_RELOC_KVX_S43_TLS_GD_LO10,
+  BFD_RELOC_KVX_S43_TLS_GD_UP27,
+  BFD_RELOC_KVX_S43_TLS_GD_EX6,
+  BFD_RELOC_KVX_S37_TLS_LD_LO10,
+  BFD_RELOC_KVX_S37_TLS_LD_UP27,
+  BFD_RELOC_KVX_S43_TLS_LD_LO10,
+  BFD_RELOC_KVX_S43_TLS_LD_UP27,
+  BFD_RELOC_KVX_S43_TLS_LD_EX6,
+  BFD_RELOC_KVX_64_TPOFF,
+  BFD_RELOC_KVX_S37_TLS_IE_LO10,
+  BFD_RELOC_KVX_S37_TLS_IE_UP27,
+  BFD_RELOC_KVX_S43_TLS_IE_LO10,
+  BFD_RELOC_KVX_S43_TLS_IE_UP27,
+  BFD_RELOC_KVX_S43_TLS_IE_EX6,
+  BFD_RELOC_KVX_S37_TLS_LE_LO10,
+  BFD_RELOC_KVX_S37_TLS_LE_UP27,
+  BFD_RELOC_KVX_S43_TLS_LE_LO10,
+  BFD_RELOC_KVX_S43_TLS_LE_UP27,
+  BFD_RELOC_KVX_S43_TLS_LE_EX6,
+  BFD_RELOC_KVX_8,
+
+/* KVX pseudo relocation code to mark the end of the KVX
+relocation enumerators that have direct mapping to ELF reloc codes.
+There are a few more enumerators after this one; those are mainly
+used by the KVX assembler for the internal fixup or to select
+one of the above enumerators.  */
+  BFD_RELOC_KVX_RELOC_END,
+
 /* AArch64 pseudo relocation code to mark the start of the AArch64
 relocation enumerators.  N.B. the order of the enumerators is
 important as several tables in the AArch64 bfd backend are indexed
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 81ddbcd09c9..3ac1f72f1ff 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -196,6 +196,7 @@ fido*)		 targ_archs=bfd_m68k_arch ;;
 hppa*)		 targ_archs=bfd_hppa_arch ;;
 i[3-7]86)	 targ_archs=bfd_i386_arch ;;
 ia16)		 targ_archs=bfd_i386_arch ;;
+kvx)		 targ_archs=bfd_kvx_arch ;;
 loongarch*)	 targ_archs=bfd_loongarch_arch ;;
 m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
 m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
@@ -797,6 +798,21 @@ case "${targ}" in
     targ_defvec=iq2000_elf32_vec
     ;;
 
+#ifdef BFD64
+  kvx-*-linux*)
+    targ_defvec=kvx_elf64_vec
+    want64=true
+    ;;
+#endif
+
+  kvx-*-*)
+    targ_defvec=kvx_elf32_vec
+    targ_selvecs="kvx_elf32_vec"
+#ifdef BFD64
+    targ64_selvecs=kvx_elf64_vec
+#endif
+    ;;
+
   lm32-*-elf | lm32-*-rtems*)
     targ_defvec=lm32_elf32_vec
     targ_selvecs=lm32_elf32_fdpic_vec
diff --git a/bfd/configure b/bfd/configure
index 3d6ec5721f1..03c89b41bef 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -13928,6 +13928,9 @@ do
     ia64_pei_vec)		 tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
     ip2k_elf32_vec)		 tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)		 tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
+    kvx_elf32_vec)		 tb="$tb elf32-kvx.lo elfxx-kvx.lo elf32.lo $elf $ipa" ;;
+    kvx_elf64_vec)		 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;;
+    kvx_elf64_linux_vec)	 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;;
     lm32_elf32_vec)		 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     lm32_elf32_fdpic_vec)	 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     loongarch_elf32_vec)	 tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;;
diff --git a/bfd/configure.ac b/bfd/configure.ac
index f044616f4d9..0d1cd814af6 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -495,6 +495,9 @@ do
     ia64_pei_vec)		 tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
     ip2k_elf32_vec)		 tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)		 tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
+    kvx_elf32_vec)		 tb="$tb elf32-kvx.lo elfxx-kvx.lo elf32.lo $elf $ipa" ;;
+    kvx_elf64_vec)		 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;;
+    kvx_elf64_linux_vec)	 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa" ;;
     lm32_elf32_vec)		 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     lm32_elf32_fdpic_vec)	 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     loongarch_elf32_vec)	 tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;;
diff --git a/bfd/cpu-kvx.c b/bfd/cpu-kvx.c
new file mode 100644
index 00000000000..61d9d5daf69
--- /dev/null
+++ b/bfd/cpu-kvx.c
@@ -0,0 +1,124 @@
+/* BFD support for KVX.
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+/* This routine is provided two arch_infos and returns if machines
+   are compatible.
+*/
+
+static const bfd_arch_info_type *
+kvx_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
+{
+  long amach =  a->mach, bmach =  b->mach;
+  /* If a & b are for different architecture we can do nothing.  */
+  if (a->arch != b->arch)
+    return NULL;
+
+  if ((amach == bfd_mach_kv3_1_64 && bmach == bfd_mach_kv3_1_usr)
+      || (amach == bfd_mach_kv3_2_64 && bmach == bfd_mach_kv3_2_usr))
+    return b;
+
+  if ((bmach == bfd_mach_kv3_1_64 && amach == bfd_mach_kv3_1_usr)
+      || (bmach == bfd_mach_kv3_2_64 && amach == bfd_mach_kv3_2_usr))
+    return a;
+
+  /* Otherwise if either a or b is the 'default' machine
+   * then it can be polymorphed into the other.
+   * This will enable to execute merge_private_bfd_data
+   */
+  if (a->the_default)
+    return b;
+
+  if (b->the_default)
+    return a;
+
+  /* We do not want to transmute some machine into another one */
+  if (amach != bmach)
+    return NULL;
+
+  /* If a & b are for the same machine then all is well.  */
+  if (amach == bmach)
+    return a;
+
+  return NULL;
+}
+
+static bool
+scan (const struct bfd_arch_info *info, const char *string)
+{
+  /* First test for an exact match.  */
+  if (strcasecmp (string, info->printable_name) == 0)
+    return true;
+
+  /* Finally check for the default architecture.  */
+  if (strcasecmp (string, "kvx") == 0)
+    return info->the_default;
+
+  return false;
+}
+
+#define N(addr_bits, machine, print, default, next)            \
+{                                                              \
+  32,                          /* 32 bits in a word.  */       \
+  addr_bits,                   /* bits in an address.  */      \
+  8,                           /* 8 bits in a byte.  */        \
+  bfd_arch_kvx,                                                 \
+  machine,                     /* Machine number.  */          \
+  "kvx",                        /* Architecture name.   */      \
+  print,                       /* Printable name.  */          \
+  4,                           /* Section align power.  */     \
+  default,                     /* Is this the default ?  */    \
+  kvx_compatible,					       \
+  scan,                                                        \
+  bfd_arch_default_fill,                                       \
+  next,                                                \
+          0                                            \
+}
+
+
+const bfd_arch_info_type bfd_kv4_1_usr_arch =
+  N (64 , bfd_mach_kv4_1_usr , "kvx:kv4-1:usr" , false , NULL);
+
+const bfd_arch_info_type bfd_kv3_2_usr_arch =
+  N (64 , bfd_mach_kv3_2_usr , "kvx:kv3-2:usr" , false , &bfd_kv4_1_usr_arch);
+
+const bfd_arch_info_type bfd_kv3_1_usr_arch =
+  N (64 , bfd_mach_kv3_1_usr , "kvx:kv3-1:usr" , false , &bfd_kv3_2_usr_arch);
+
+const bfd_arch_info_type bfd_kv4_1_64_arch =
+  N (64 , bfd_mach_kv4_1_64  , "kvx:kv4-1:64"  , false , &bfd_kv3_1_usr_arch);
+
+const bfd_arch_info_type bfd_kv3_2_64_arch =
+  N (64 , bfd_mach_kv3_2_64  , "kvx:kv3-2:64"  , false , &bfd_kv4_1_64_arch);
+
+const bfd_arch_info_type bfd_kv3_1_64_arch =
+  N (64 , bfd_mach_kv3_1_64  , "kvx:kv3-1:64"  , false , &bfd_kv3_2_64_arch);
+
+const bfd_arch_info_type bfd_kv4_1_arch =
+  N (32 , bfd_mach_kv4_1     , "kvx:kv4-1"     , false , &bfd_kv3_1_64_arch);
+
+const bfd_arch_info_type bfd_kv3_2_arch =
+  N (32 , bfd_mach_kv3_2     , "kvx:kv3-2"     , false , &bfd_kv4_1_arch);
+
+const bfd_arch_info_type bfd_kvx_arch =
+  N (32 , bfd_mach_kv3_1     , "kvx:kv3-1"     , true  , &bfd_kv3_2_arch);
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index ec856764519..869e86b7749 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -545,6 +545,7 @@ enum elf_target_id
   HPPA64_ELF_DATA,
   I386_ELF_DATA,
   IA64_ELF_DATA,
+  KVX_ELF_DATA,
   LM32_ELF_DATA,
   LARCH_ELF_DATA,
   M32R_ELF_DATA,
diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
new file mode 100644
index 00000000000..1cd000d62de
--- /dev/null
+++ b/bfd/elfnn-kvx.c
@@ -0,0 +1,4798 @@
+/* KVX-specific support for NN-bit ELF.
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "bfdlink.h"
+#include "objalloc.h"
+#include "elf/kvx.h"
+#include "elfxx-kvx.h"
+
+#define ARCH_SIZE	NN
+
+#if ARCH_SIZE == 64
+#define LOG_FILE_ALIGN	3
+#endif
+
+#if ARCH_SIZE == 32
+#define LOG_FILE_ALIGN	2
+#endif
+
+#define IS_KVX_TLS_RELOC(R_TYPE)			\
+  ((R_TYPE) == BFD_RELOC_KVX_S37_TLS_LE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_IE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_IE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_GD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_GD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_EX6	\
+   )
+
+#define IS_KVX_TLS_RELAX_RELOC(R_TYPE) 0
+
+#define ELIMINATE_COPY_RELOCS 0
+
+/* Return size of a relocation entry.  HTAB is the bfd's
+   elf_kvx_link_hash_entry.  */
+#define RELOC_SIZE(HTAB) (sizeof (ElfNN_External_Rela))
+
+/* GOT Entry size - 8 bytes in ELF64 and 4 bytes in ELF32.  */
+#define GOT_ENTRY_SIZE                  (ARCH_SIZE / 8)
+#define PLT_ENTRY_SIZE                  (32)
+
+#define PLT_SMALL_ENTRY_SIZE            (4*4)
+
+/* Encoding of the nop instruction */
+#define INSN_NOP 0x00f0037f
+
+#define kvx_compute_jump_table_size(htab)		\
+  (((htab)->root.srelplt == NULL) ? 0			\
+   : (htab)->root.srelplt->reloc_count * GOT_ENTRY_SIZE)
+
+static const bfd_byte elfNN_kvx_small_plt0_entry[PLT_ENTRY_SIZE] =
+{
+ /* FIXME KVX: no first entry, not used yet */
+  0
+};
+
+/* Per function entry in a procedure linkage table looks like this
+   if the distance between the PLTGOT and the PLT is < 4GB use
+   these PLT entries.  */
+static const bfd_byte elfNN_kvx_small_plt_entry[PLT_SMALL_ENTRY_SIZE] =
+{
+  0x10, 0x00, 0xc4, 0x0f,       /* get $r16 = $pc     ;; */
+#if ARCH_SIZE == 32
+  0x10, 0x00, 0x40, 0xb0,       /* lwz $r16 = 0[$r16]   ;; */
+#else
+  0x10, 0x00, 0x40, 0xb8,       /* ld $r16 = 0[$r16] ;; */
+#endif
+  0x00, 0x00, 0x00, 0x18,       /* upper 27 bits for LSU */
+  0x10, 0x00, 0xd8, 0x0f,	/* igoto $r16          ;; */
+};
+
+/* Long stub use 43bits format of make. */
+static const uint32_t elfNN_kvx_long_branch_stub[] =
+{
+  0xe0400000,      /* make $r16 = LO10<emm43> EX6<imm43> */
+  0x00000000,      /* UP27<imm43> ;; */
+  0x0fd80010,      /* igoto "r16  ;; */
+};
+
+#define elf_info_to_howto               elfNN_kvx_info_to_howto
+#define elf_info_to_howto_rel           elfNN_kvx_info_to_howto
+
+#define KVX_ELF_ABI_VERSION		0
+
+/* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
+#define ALL_ONES (~ (bfd_vma) 0)
+
+/* Indexed by the bfd interal reloc enumerators.
+   Therefore, the table needs to be synced with BFD_RELOC_KVX_*
+   in reloc.c.   */
+
+#define KVX_KV3_V1_KV3_V2_KV4_V1
+#include "elfxx-kvx-relocs.h"
+#undef KVX_KV3_V1_KV3_V2_KV4_V1
+
+/* Given HOWTO, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_kvx_bfd_reloc_from_howto (reloc_howto_type *howto)
+{
+  const int size = (int) ARRAY_SIZE (elf_kvx_howto_table);
+  const ptrdiff_t offset = howto - elf_kvx_howto_table;
+
+  if (offset >= 0 && offset < size)
+    return BFD_RELOC_KVX_RELOC_START + offset + 1;
+
+  return BFD_RELOC_KVX_RELOC_START + 1;
+}
+
+/* Given R_TYPE, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_kvx_bfd_reloc_from_type (bfd *abfd ATTRIBUTE_UNUSED, unsigned int r_type)
+{
+  static bool initialized_p = false;
+  /* Indexed by R_TYPE, values are offsets in the howto_table.  */
+  static unsigned int offsets[R_KVX_end];
+
+  if (!initialized_p)
+    {
+      unsigned int i;
+
+      for (i = 0; i < ARRAY_SIZE (elf_kvx_howto_table); ++i)
+        offsets[elf_kvx_howto_table[i].type] = i;
+
+      initialized_p = true;
+    }
+
+  /* PR 17512: file: b371e70a.  */
+  if (r_type >= R_KVX_end)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return BFD_RELOC_KVX_RELOC_END;
+    }
+
+  return (BFD_RELOC_KVX_RELOC_START + 1) + offsets[r_type];
+}
+
+struct elf_kvx_reloc_map
+{
+  bfd_reloc_code_real_type from;
+  bfd_reloc_code_real_type to;
+};
+
+/* Map bfd generic reloc to KVX-specific reloc.  */
+static const struct elf_kvx_reloc_map elf_kvx_reloc_map[] =
+{
+  {BFD_RELOC_NONE, BFD_RELOC_KVX_NONE},
+
+  /* Basic data relocations.  */
+  {BFD_RELOC_CTOR, BFD_RELOC_KVX_NN},
+  {BFD_RELOC_64, BFD_RELOC_KVX_64},
+  {BFD_RELOC_32, BFD_RELOC_KVX_32},
+  {BFD_RELOC_16, BFD_RELOC_KVX_16},
+  {BFD_RELOC_8,  BFD_RELOC_KVX_8},
+
+  {BFD_RELOC_64_PCREL, BFD_RELOC_KVX_64_PCREL},
+  {BFD_RELOC_32_PCREL, BFD_RELOC_KVX_32_PCREL},
+};
+
+/* Given the bfd internal relocation enumerator in CODE, return the
+   corresponding howto entry.  */
+
+static reloc_howto_type *
+elfNN_kvx_howto_from_bfd_reloc (bfd_reloc_code_real_type code)
+{
+  unsigned int i;
+
+  /* Convert bfd generic reloc to KVX-specific reloc.  */
+  if (code < BFD_RELOC_KVX_RELOC_START || code > BFD_RELOC_KVX_RELOC_END)
+    for (i = 0; i < ARRAY_SIZE (elf_kvx_reloc_map) ; i++)
+      if (elf_kvx_reloc_map[i].from == code)
+	{
+	  code = elf_kvx_reloc_map[i].to;
+	  break;
+	}
+
+  if (code > BFD_RELOC_KVX_RELOC_START && code < BFD_RELOC_KVX_RELOC_END)
+      return &elf_kvx_howto_table[code - (BFD_RELOC_KVX_RELOC_START + 1)];
+
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_kvx_howto_from_type (bfd *abfd, unsigned int r_type)
+{
+  bfd_reloc_code_real_type val;
+  reloc_howto_type *howto;
+
+#if ARCH_SIZE == 32
+  if (r_type > 256)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return NULL;
+    }
+#endif
+
+  val = elfNN_kvx_bfd_reloc_from_type (abfd, r_type);
+  howto = elfNN_kvx_howto_from_bfd_reloc (val);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static bool
+elfNN_kvx_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
+			     Elf_Internal_Rela *elf_reloc)
+{
+  unsigned int r_type;
+
+  r_type = ELFNN_R_TYPE (elf_reloc->r_info);
+  bfd_reloc->howto = elfNN_kvx_howto_from_type (abfd, r_type);
+
+  if (bfd_reloc->howto == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
+      return false;
+    }
+  return true;
+}
+
+static reloc_howto_type *
+elfNN_kvx_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				 bfd_reloc_code_real_type code)
+{
+  reloc_howto_type *howto = elfNN_kvx_howto_from_bfd_reloc (code);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_kvx_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				 const char *r_name)
+{
+  unsigned int i;
+
+  for (i = 0; i < ARRAY_SIZE (elf_kvx_howto_table); ++i)
+    if (elf_kvx_howto_table[i].name != NULL
+	&& strcasecmp (elf_kvx_howto_table[i].name, r_name) == 0)
+      return &elf_kvx_howto_table[i];
+
+  return NULL;
+}
+
+#define TARGET_LITTLE_SYM               kvx_elfNN_vec
+#define TARGET_LITTLE_NAME              "elfNN-kvx"
+
+/* The linker script knows the section names for placement.
+   The entry_names are used to do simple name mangling on the stubs.
+   Given a function name, and its type, the stub can be found. The
+   name can be changed. The only requirement is the %s be present.  */
+#define STUB_ENTRY_NAME   "__%s_veneer"
+
+/* The name of the dynamic interpreter.  This is put in the .interp
+   section.  */
+#define ELF_DYNAMIC_INTERPRETER     "/lib/ld.so.1"
+
+
+/* PCREL 27 is signed-extended and scaled by 4 */
+#define KVX_MAX_FWD_CALL_OFFSET \
+  (((1 << 26) - 1) << 2)
+#define KVX_MAX_BWD_CALL_OFFSET \
+  (-((1 << 26) << 2))
+
+/* Check that the destination of the call is within the PCREL27
+   range. */
+static int
+kvx_valid_call_p (bfd_vma value, bfd_vma place)
+{
+  bfd_signed_vma offset = (bfd_signed_vma) (value - place);
+  return (offset <= KVX_MAX_FWD_CALL_OFFSET
+	  && offset >= KVX_MAX_BWD_CALL_OFFSET);
+}
+
+/* Section name for stubs is the associated section name plus this
+   string.  */
+#define STUB_SUFFIX ".stub"
+
+enum elf_kvx_stub_type
+{
+  kvx_stub_none,
+  kvx_stub_long_branch,
+};
+
+struct elf_kvx_stub_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+
+  /* The stub section.  */
+  asection *stub_sec;
+
+  /* Offset within stub_sec of the beginning of this stub.  */
+  bfd_vma stub_offset;
+
+  /* Given the symbol's value and its section we can determine its final
+     value when building the stubs (so the stub knows where to jump).  */
+  bfd_vma target_value;
+  asection *target_section;
+
+  enum elf_kvx_stub_type stub_type;
+
+  /* The symbol table entry, if any, that this was derived from.  */
+  struct elf_kvx_link_hash_entry *h;
+
+  /* Destination symbol type */
+  unsigned char st_type;
+
+  /* Where this stub is being called from, or, in the case of combined
+     stub sections, the first input section in the group.  */
+  asection *id_sec;
+
+  /* The name for the local symbol at the start of this stub.  The
+     stub name in the hash table has to be unique; this does not, so
+     it can be friendlier.  */
+  char *output_name;
+};
+
+/* Used to build a map of a section.  This is required for mixed-endian
+   code/data.  */
+
+typedef struct elf_elf_section_map
+{
+  bfd_vma vma;
+  char type;
+}
+elf_kvx_section_map;
+
+
+typedef struct _kvx_elf_section_data
+{
+  struct bfd_elf_section_data elf;
+  unsigned int mapcount;
+  unsigned int mapsize;
+  elf_kvx_section_map *map;
+}
+_kvx_elf_section_data;
+
+#define elf_kvx_section_data(sec) \
+  ((_kvx_elf_section_data *) elf_section_data (sec))
+
+struct elf_kvx_local_symbol
+{
+  unsigned int got_type;
+  bfd_signed_vma got_refcount;
+  bfd_vma got_offset;
+};
+
+struct elf_kvx_obj_tdata
+{
+  struct elf_obj_tdata root;
+
+  /* local symbol descriptors */
+  struct elf_kvx_local_symbol *locals;
+
+  /* Zero to warn when linking objects with incompatible enum sizes.  */
+  int no_enum_size_warning;
+
+  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
+  int no_wchar_size_warning;
+};
+
+#define elf_kvx_tdata(bfd)				\
+  ((struct elf_kvx_obj_tdata *) (bfd)->tdata.any)
+
+#define elf_kvx_locals(bfd) (elf_kvx_tdata (bfd)->locals)
+
+#define is_kvx_elf(bfd)				\
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour	\
+   && elf_tdata (bfd) != NULL				\
+   && elf_object_id (bfd) == KVX_ELF_DATA)
+
+static bool
+elfNN_kvx_mkobject (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_kvx_obj_tdata),
+				  KVX_ELF_DATA);
+}
+
+#define elf_kvx_hash_entry(ent) \
+  ((struct elf_kvx_link_hash_entry *)(ent))
+
+#define GOT_UNKNOWN    0
+#define GOT_NORMAL     1
+
+#define GOT_TLS_GD     2
+#define GOT_TLS_IE     4
+#define GOT_TLS_LD     8
+
+/* KVX ELF linker hash entry.  */
+struct elf_kvx_link_hash_entry
+{
+  struct elf_link_hash_entry root;
+
+  /* Since PLT entries have variable size, we need to record the
+     index into .got.plt instead of recomputing it from the PLT
+     offset.  */
+  bfd_signed_vma plt_got_offset;
+
+  /* Bit mask representing the type of GOT entry(s) if any required by
+     this symbol.  */
+  unsigned int got_type;
+
+  /* A pointer to the most recently used stub hash entry against this
+     symbol.  */
+  struct elf_kvx_stub_hash_entry *stub_cache;
+};
+
+/* Get the KVX elf linker hash table from a link_info structure.  */
+#define elf_kvx_hash_table(info)					\
+  ((struct elf_kvx_link_hash_table *) ((info)->hash))
+
+#define kvx_stub_hash_lookup(table, string, create, copy)		\
+  ((struct elf_kvx_stub_hash_entry *)				\
+   bfd_hash_lookup ((table), (string), (create), (copy)))
+
+/* KVX ELF linker hash table.  */
+struct elf_kvx_link_hash_table
+{
+  /* The main hash table.  */
+  struct elf_link_hash_table root;
+
+  /* Nonzero to force PIC branch veneers.  */
+  int pic_veneer;
+
+  /* The number of bytes in the initial entry in the PLT.  */
+  bfd_size_type plt_header_size;
+
+  /* The number of bytes in the subsequent PLT etries.  */
+  bfd_size_type plt_entry_size;
+
+  /* The bytes of the subsequent PLT entry.  */
+  const bfd_byte *plt_entry;
+
+  /* Short-cuts to get to dynamic linker sections.  */
+  asection *sdynbss;
+  asection *srelbss;
+
+  /* Small local sym cache.  */
+  struct sym_cache sym_cache;
+
+  /* For convenience in allocate_dynrelocs.  */
+  bfd *obfd;
+
+  /* The amount of space used by the reserved portion of the sgotplt
+     section, plus whatever space is used by the jump slots.  */
+  bfd_vma sgotplt_jump_table_size;
+
+  /* The stub hash table.  */
+  struct bfd_hash_table stub_hash_table;
+
+  /* Linker stub bfd.  */
+  bfd *stub_bfd;
+
+  /* Linker call-backs.  */
+  asection *(*add_stub_section) (const char *, asection *);
+  void (*layout_sections_again) (void);
+
+  /* Array to keep track of which stub sections have been created, and
+     information on stub grouping.  */
+  struct map_stub
+  {
+    /* This is the section to which stubs in the group will be
+       attached.  */
+    asection *link_sec;
+    /* The stub section.  */
+    asection *stub_sec;
+  } *stub_group;
+
+  /* Assorted information used by elfNN_kvx_size_stubs.  */
+  unsigned int bfd_count;
+  unsigned int top_index;
+  asection **input_list;
+};
+
+/* Create an entry in an KVX ELF linker hash table.  */
+
+static struct bfd_hash_entry *
+elfNN_kvx_link_hash_newfunc (struct bfd_hash_entry *entry,
+				 struct bfd_hash_table *table,
+				 const char *string)
+{
+  struct elf_kvx_link_hash_entry *ret =
+    (struct elf_kvx_link_hash_entry *) entry;
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (ret == NULL)
+    ret = bfd_hash_allocate (table,
+			     sizeof (struct elf_kvx_link_hash_entry));
+  if (ret == NULL)
+    return (struct bfd_hash_entry *) ret;
+
+  /* Call the allocation method of the superclass.  */
+  ret = ((struct elf_kvx_link_hash_entry *)
+	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+				     table, string));
+  if (ret != NULL)
+    {
+      ret->got_type = GOT_UNKNOWN;
+      ret->plt_got_offset = (bfd_vma) - 1;
+      ret->stub_cache = NULL;
+    }
+
+  return (struct bfd_hash_entry *) ret;
+}
+
+/* Initialize an entry in the stub hash table.  */
+
+static struct bfd_hash_entry *
+stub_hash_newfunc (struct bfd_hash_entry *entry,
+		   struct bfd_hash_table *table, const char *string)
+{
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (entry == NULL)
+    {
+      entry = bfd_hash_allocate (table,
+				 sizeof (struct
+					 elf_kvx_stub_hash_entry));
+      if (entry == NULL)
+	return entry;
+    }
+
+  /* Call the allocation method of the superclass.  */
+  entry = bfd_hash_newfunc (entry, table, string);
+  if (entry != NULL)
+    {
+      struct elf_kvx_stub_hash_entry *eh;
+
+      /* Initialize the local fields.  */
+      eh = (struct elf_kvx_stub_hash_entry *) entry;
+      eh->stub_sec = NULL;
+      eh->stub_offset = 0;
+      eh->target_value = 0;
+      eh->target_section = NULL;
+      eh->stub_type = kvx_stub_none;
+      eh->h = NULL;
+      eh->id_sec = NULL;
+    }
+
+  return entry;
+}
+
+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
+
+static void
+elfNN_kvx_copy_indirect_symbol (struct bfd_link_info *info,
+				    struct elf_link_hash_entry *dir,
+				    struct elf_link_hash_entry *ind)
+{
+  struct elf_kvx_link_hash_entry *edir, *eind;
+
+  edir = (struct elf_kvx_link_hash_entry *) dir;
+  eind = (struct elf_kvx_link_hash_entry *) ind;
+
+  if (ind->root.type == bfd_link_hash_indirect)
+    {
+      /* Copy over PLT info.  */
+      if (dir->got.refcount <= 0)
+	{
+	  edir->got_type = eind->got_type;
+	  eind->got_type = GOT_UNKNOWN;
+	}
+    }
+
+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
+}
+
+/* Destroy a KVX elf linker hash table.  */
+
+static void
+elfNN_kvx_link_hash_table_free (bfd *obfd)
+{
+  struct elf_kvx_link_hash_table *ret
+    = (struct elf_kvx_link_hash_table *) obfd->link.hash;
+
+  bfd_hash_table_free (&ret->stub_hash_table);
+  _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Create a KVX elf linker hash table.  */
+
+static struct bfd_link_hash_table *
+elfNN_kvx_link_hash_table_create (bfd *abfd)
+{
+  struct elf_kvx_link_hash_table *ret;
+  bfd_size_type amt = sizeof (struct elf_kvx_link_hash_table);
+
+  ret = bfd_zmalloc (amt);
+  if (ret == NULL)
+    return NULL;
+
+  if (!_bfd_elf_link_hash_table_init
+      (&ret->root, abfd, elfNN_kvx_link_hash_newfunc,
+       sizeof (struct elf_kvx_link_hash_entry), KVX_ELF_DATA))
+    {
+      free (ret);
+      return NULL;
+    }
+
+  ret->plt_header_size = PLT_ENTRY_SIZE;
+  ret->plt_entry_size = PLT_SMALL_ENTRY_SIZE;
+  ret->plt_entry = elfNN_kvx_small_plt_entry;
+
+  ret->obfd = abfd;
+
+  if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
+			    sizeof (struct elf_kvx_stub_hash_entry)))
+    {
+      _bfd_elf_link_hash_table_free (abfd);
+      return NULL;
+    }
+
+  ret->root.root.hash_table_free = elfNN_kvx_link_hash_table_free;
+
+  return &ret->root.root;
+}
+
+static bfd_reloc_status_type
+kvx_relocate (unsigned int r_type, bfd *input_bfd, asection *input_section,
+              bfd_vma offset, bfd_vma value)
+{
+  reloc_howto_type *howto;
+  bfd_vma place;
+
+  howto = elfNN_kvx_howto_from_type (input_bfd, r_type);
+  place = (input_section->output_section->vma + input_section->output_offset
+	   + offset);
+
+  r_type = elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+  value = _bfd_kvx_elf_resolve_relocation (r_type, place, value, 0, false);
+  return _bfd_kvx_elf_put_addend (input_bfd,
+                                  input_section->contents + offset, r_type,
+                                  howto, value);
+}
+
+/* Determine the type of stub needed, if any, for a call.  */
+
+static enum elf_kvx_stub_type
+kvx_type_of_stub (asection *input_sec,
+		      const Elf_Internal_Rela *rel,
+		      asection *sym_sec,
+		      unsigned char st_type,
+		      bfd_vma destination)
+{
+  bfd_vma location;
+  bfd_signed_vma branch_offset;
+  unsigned int r_type;
+  enum elf_kvx_stub_type stub_type = kvx_stub_none;
+
+  if (st_type != STT_FUNC
+      && (sym_sec == input_sec))
+    return stub_type;
+
+  /* Determine where the call point is.  */
+  location = (input_sec->output_offset
+              + input_sec->output_section->vma + rel->r_offset);
+
+  branch_offset = (bfd_signed_vma) (destination - location);
+
+  r_type = ELFNN_R_TYPE (rel->r_info);
+
+  /* We don't want to redirect any old unconditional jump in this way,
+     only one which is being used for a sibcall, where it is
+     acceptable for the R16 and R17 registers to be clobbered.  */
+  if (r_type == R_KVX_PCREL27
+      && (branch_offset > KVX_MAX_FWD_CALL_OFFSET
+	  || branch_offset < KVX_MAX_BWD_CALL_OFFSET))
+    {
+      stub_type = kvx_stub_long_branch;
+    }
+
+  return stub_type;
+}
+
+/* Build a name for an entry in the stub hash table.  */
+
+static char *
+elfNN_kvx_stub_name (const asection *input_section,
+                     const asection *sym_sec,
+                     const struct elf_kvx_link_hash_entry *hash,
+                     const Elf_Internal_Rela *rel)
+{
+  char *stub_name;
+  bfd_size_type len;
+
+  if (hash)
+    {
+      len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%s+%" PRIx64 "x",
+		  (unsigned int) input_section->id,
+		  hash->root.root.root.string,
+		  rel->r_addend);
+    }
+  else
+    {
+      len = 8 + 1 + 8 + 1 + 8 + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%x:%x+%" PRIx64 "x",
+		  (unsigned int) input_section->id,
+		  (unsigned int) sym_sec->id,
+		  (unsigned int) ELFNN_R_SYM (rel->r_info),
+		  rel->r_addend);
+    }
+
+  return stub_name;
+}
+
+/* Return true if symbol H should be hashed in the `.gnu.hash' section.  For
+   executable PLT slots where the executable never takes the address of those
+   functions, the function symbols are not added to the hash table.  */
+
+static bool
+elf_kvx_hash_symbol (struct elf_link_hash_entry *h)
+{
+  if (h->plt.offset != (bfd_vma) -1
+      && !h->def_regular
+      && !h->pointer_equality_needed)
+    return false;
+
+  return _bfd_elf_hash_symbol (h);
+}
+
+
+/* Look up an entry in the stub hash.  Stub entries are cached because
+   creating the stub name takes a bit of time.  */
+
+static struct elf_kvx_stub_hash_entry *
+elfNN_kvx_get_stub_entry (const asection *input_section,
+                          const asection *sym_sec,
+                          struct elf_link_hash_entry *hash,
+                          const Elf_Internal_Rela *rel,
+                          struct elf_kvx_link_hash_table *htab)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  struct elf_kvx_link_hash_entry *h =
+    (struct elf_kvx_link_hash_entry *) hash;
+  const asection *id_sec;
+
+  if ((input_section->flags & SEC_CODE) == 0)
+    return NULL;
+
+  /* If this input section is part of a group of sections sharing one
+     stub section, then use the id of the first section in the group.
+     Stub names need to include a section id, as there may well be
+     more than one stub used to reach say, printf, and we need to
+     distinguish between them.  */
+  id_sec = htab->stub_group[input_section->id].link_sec;
+
+  if (h != NULL && h->stub_cache != NULL
+      && h->stub_cache->h == h && h->stub_cache->id_sec == id_sec)
+    {
+      stub_entry = h->stub_cache;
+    }
+  else
+    {
+      char *stub_name;
+
+      stub_name = elfNN_kvx_stub_name (id_sec, sym_sec, h, rel);
+      if (stub_name == NULL)
+	return NULL;
+
+      stub_entry = kvx_stub_hash_lookup (&htab->stub_hash_table,
+                                         stub_name, false, false);
+      if (h != NULL)
+	h->stub_cache = stub_entry;
+
+      free (stub_name);
+    }
+
+  return stub_entry;
+}
+
+
+/* Create a stub section.  */
+
+static asection *
+_bfd_kvx_create_stub_section (asection *section,
+                              struct elf_kvx_link_hash_table *htab)
+
+{
+  size_t namelen;
+  bfd_size_type len;
+  char *s_name;
+
+  namelen = strlen (section->name);
+  len = namelen + sizeof (STUB_SUFFIX);
+  s_name = bfd_alloc (htab->stub_bfd, len);
+  if (s_name == NULL)
+    return NULL;
+
+  memcpy (s_name, section->name, namelen);
+  memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX));
+  return (*htab->add_stub_section) (s_name, section);
+}
+
+
+/* Find or create a stub section for a link section.
+
+   Fix or create the stub section used to collect stubs attached to
+   the specified link section.  */
+
+static asection *
+_bfd_kvx_get_stub_for_link_section (asection *link_section,
+                                    struct elf_kvx_link_hash_table *htab)
+{
+  if (htab->stub_group[link_section->id].stub_sec == NULL)
+    htab->stub_group[link_section->id].stub_sec
+      = _bfd_kvx_create_stub_section (link_section, htab);
+  return htab->stub_group[link_section->id].stub_sec;
+}
+
+
+/* Find or create a stub section in the stub group for an input
+   section.  */
+
+static asection *
+_bfd_kvx_create_or_find_stub_sec (asection *section,
+                                  struct elf_kvx_link_hash_table *htab)
+{
+  asection *link_sec = htab->stub_group[section->id].link_sec;
+  return _bfd_kvx_get_stub_for_link_section (link_sec, htab);
+}
+
+
+/* Add a new stub entry in the stub group associated with an input
+   section to the stub hash.  Not all fields of the new stub entry are
+   initialised.  */
+
+static struct elf_kvx_stub_hash_entry *
+_bfd_kvx_add_stub_entry_in_group (const char *stub_name,
+                                  asection *section,
+                                  struct elf_kvx_link_hash_table *htab)
+{
+  asection *link_sec;
+  asection *stub_sec;
+  struct elf_kvx_stub_hash_entry *stub_entry;
+
+  link_sec = htab->stub_group[section->id].link_sec;
+  stub_sec = _bfd_kvx_create_or_find_stub_sec (section, htab);
+
+  /* Enter this entry into the linker stub hash table.  */
+  stub_entry = kvx_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+                                     true, false);
+  if (stub_entry == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
+                          section->owner, stub_name);
+      return NULL;
+    }
+
+  stub_entry->stub_sec = stub_sec;
+  stub_entry->stub_offset = 0;
+  stub_entry->id_sec = link_sec;
+
+  return stub_entry;
+}
+
+static bool
+kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
+                    void *in_arg)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  asection *stub_sec;
+  bfd *stub_bfd;
+  bfd_byte *loc;
+  bfd_vma sym_value;
+  unsigned int template_size;
+  const uint32_t *template;
+  unsigned int i;
+  struct bfd_link_info *info;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_kvx_stub_hash_entry *) gen_entry;
+
+  info = (struct bfd_link_info *) in_arg;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without "
+			      "--enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
+  stub_sec = stub_entry->stub_sec;
+
+  /* Make a note of the offset within the stubs for this entry.  */
+  stub_entry->stub_offset = stub_sec->size;
+  loc = stub_sec->contents + stub_entry->stub_offset;
+
+  stub_bfd = stub_sec->owner;
+
+  /* This is the address of the stub destination.  */
+  sym_value = (stub_entry->target_value
+	       + stub_entry->target_section->output_offset
+	       + stub_entry->target_section->output_section->vma);
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      template = elfNN_kvx_long_branch_stub;
+      template_size = sizeof (elfNN_kvx_long_branch_stub);
+      break;
+    default:
+      abort ();
+    }
+
+  for (i = 0; i < (template_size / sizeof template[0]); i++)
+    {
+      bfd_putl32 (template[i], loc);
+      loc += 4;
+    }
+
+  stub_sec->size += template_size;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      /*
+	The stub uses a make insn with 43bits immediate.
+	We need to apply 3 relocations:
+	     BFD_RELOC_KVX_S43_LO10
+	     BFD_RELOC_KVX_S43_UP27
+	     BFD_RELOC_KVX_S43_EX6
+      */
+      if (kvx_relocate (R_KVX_S43_LO10, stub_bfd, stub_sec,
+                        stub_entry->stub_offset , sym_value) != bfd_reloc_ok)
+        BFD_FAIL ();
+      if (kvx_relocate (R_KVX_S43_EX6, stub_bfd, stub_sec,
+                        stub_entry->stub_offset , sym_value) != bfd_reloc_ok)
+        BFD_FAIL ();
+      if (kvx_relocate (R_KVX_S43_UP27, stub_bfd, stub_sec,
+                        stub_entry->stub_offset  + 4, sym_value) != bfd_reloc_ok)
+      	BFD_FAIL ();
+      break;
+    default:
+      abort ();
+    }
+
+  return true;
+}
+
+/* As above, but don't actually build the stub.  Just bump offset so
+   we know stub section sizes.  */
+
+static bool
+kvx_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  int size;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_kvx_stub_hash_entry *) gen_entry;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      size = sizeof (elfNN_kvx_long_branch_stub);
+      break;
+    default:
+      abort ();
+    }
+
+  stub_entry->stub_sec->size += size;
+  return true;
+}
+
+/* External entry points for sizing and building linker stubs.  */
+
+/* Set up various things so that we can make a list of input sections
+   for each output section included in the link.  Returns -1 on error,
+   0 when no stubs will be needed, and 1 on success.  */
+
+int
+elfNN_kvx_setup_section_lists (bfd *output_bfd,
+                               struct bfd_link_info *info)
+{
+  bfd *input_bfd;
+  unsigned int bfd_count;
+  unsigned int top_id, top_index;
+  asection *section;
+  asection **input_list, **list;
+  bfd_size_type amt;
+  struct elf_kvx_link_hash_table *htab =
+    elf_kvx_hash_table (info);
+
+  if (!is_elf_hash_table ((const struct bfd_link_hash_table *)htab))
+    return 0;
+
+  /* Count the number of input BFDs and find the top input section id.  */
+  for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
+       input_bfd != NULL; input_bfd = input_bfd->link.next)
+    {
+      bfd_count += 1;
+      for (section = input_bfd->sections;
+	   section != NULL; section = section->next)
+	{
+	  if (top_id < section->id)
+	    top_id = section->id;
+	}
+    }
+  htab->bfd_count = bfd_count;
+
+  amt = sizeof (struct map_stub) * (top_id + 1);
+  htab->stub_group = bfd_zmalloc (amt);
+  if (htab->stub_group == NULL)
+    return -1;
+
+  /* We can't use output_bfd->section_count here to find the top output
+     section index as some sections may have been removed, and
+     _bfd_strip_section_from_output doesn't renumber the indices.  */
+  for (section = output_bfd->sections, top_index = 0;
+       section != NULL; section = section->next)
+    {
+      if (top_index < section->index)
+	top_index = section->index;
+    }
+
+  htab->top_index = top_index;
+  amt = sizeof (asection *) * (top_index + 1);
+  input_list = bfd_malloc (amt);
+  htab->input_list = input_list;
+  if (input_list == NULL)
+    return -1;
+
+  /* For sections we aren't interested in, mark their entries with a
+     value we can check later.  */
+  list = input_list + top_index;
+  do
+    *list = bfd_abs_section_ptr;
+  while (list-- != input_list);
+
+  for (section = output_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      if ((section->flags & SEC_CODE) != 0)
+	input_list[section->index] = NULL;
+    }
+
+  return 1;
+}
+
+/* Used by elfNN_kvx_next_input_section and group_sections.  */
+#define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec)
+
+/* The linker repeatedly calls this function for each input section,
+   in the order that input sections are linked into output sections.
+   Build lists of input sections to determine groupings between which
+   we may insert linker stubs.  */
+
+void
+elfNN_kvx_next_input_section (struct bfd_link_info *info, asection *isec)
+{
+  struct elf_kvx_link_hash_table *htab =
+    elf_kvx_hash_table (info);
+
+  if (isec->output_section->index <= htab->top_index)
+    {
+      asection **list = htab->input_list + isec->output_section->index;
+
+      if (*list != bfd_abs_section_ptr)
+	{
+	  /* Steal the link_sec pointer for our list.  */
+	  /* This happens to make the list in reverse order,
+	     which is what we want.  */
+	  PREV_SEC (isec) = *list;
+	  *list = isec;
+	}
+    }
+}
+
+/* See whether we can group stub sections together.  Grouping stub
+   sections may result in fewer stubs.  More importantly, we need to
+   put all .init* and .fini* stubs at the beginning of the .init or
+   .fini output sections respectively, because glibc splits the
+   _init and _fini functions into multiple parts.  Putting a stub in
+   the middle of a function is not a good idea.  */
+
+static void
+group_sections (struct elf_kvx_link_hash_table *htab,
+		bfd_size_type stub_group_size,
+		bool stubs_always_after_branch)
+{
+  asection **list = htab->input_list;
+
+  do
+    {
+      asection *tail = *list;
+      asection *head;
+
+      if (tail == bfd_abs_section_ptr)
+	continue;
+
+      /* Reverse the list: we must avoid placing stubs at the
+	 beginning of the section because the beginning of the text
+	 section may be required for an interrupt vector in bare metal
+	 code.  */
+#define NEXT_SEC PREV_SEC
+      head = NULL;
+      while (tail != NULL)
+	{
+	  /* Pop from tail.  */
+	  asection *item = tail;
+	  tail = PREV_SEC (item);
+
+	  /* Push on head.  */
+	  NEXT_SEC (item) = head;
+	  head = item;
+	}
+
+      while (head != NULL)
+	{
+	  asection *curr;
+	  asection *next;
+	  bfd_vma stub_group_start = head->output_offset;
+	  bfd_vma end_of_next;
+
+	  curr = head;
+	  while (NEXT_SEC (curr) != NULL)
+	    {
+	      next = NEXT_SEC (curr);
+	      end_of_next = next->output_offset + next->size;
+	      if (end_of_next - stub_group_start >= stub_group_size)
+		/* End of NEXT is too far from start, so stop.  */
+		break;
+	      /* Add NEXT to the group.  */
+	      curr = next;
+	    }
+
+	  /* OK, the size from the start to the start of CURR is less
+	     than stub_group_size and thus can be handled by one stub
+	     section.  (Or the head section is itself larger than
+	     stub_group_size, in which case we may be toast.)
+	     We should really be keeping track of the total size of
+	     stubs added here, as stubs contribute to the final output
+	     section size.  */
+	  do
+	    {
+	      next = NEXT_SEC (head);
+	      /* Set up this stub group.  */
+	      htab->stub_group[head->id].link_sec = curr;
+	    }
+	  while (head != curr && (head = next) != NULL);
+
+	  /* But wait, there's more!  Input sections up to stub_group_size
+	     bytes after the stub section can be handled by it too.  */
+	  if (!stubs_always_after_branch)
+	    {
+	      stub_group_start = curr->output_offset + curr->size;
+
+	      while (next != NULL)
+		{
+		  end_of_next = next->output_offset + next->size;
+		  if (end_of_next - stub_group_start >= stub_group_size)
+		    /* End of NEXT is too far from stubs, so stop.  */
+		    break;
+		  /* Add NEXT to the stub group.  */
+		  head = next;
+		  next = NEXT_SEC (head);
+		  htab->stub_group[head->id].link_sec = curr;
+		}
+	    }
+	  head = next;
+	}
+    }
+  while (list++ != htab->input_list + htab->top_index);
+
+  free (htab->input_list);
+}
+
+static void
+_bfd_kvx_resize_stubs (struct elf_kvx_link_hash_table *htab)
+{
+  asection *section;
+
+  /* OK, we've added some stubs.  Find out the new size of the
+     stub sections.  */
+  for (section = htab->stub_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      /* Ignore non-stub sections.  */
+      if (!strstr (section->name, STUB_SUFFIX))
+	continue;
+      section->size = 0;
+    }
+
+  bfd_hash_traverse (&htab->stub_hash_table, kvx_size_one_stub, htab);
+}
+
+/* Satisfy the ELF linker by filling in some fields in our fake bfd.  */
+
+bool
+kvx_elfNN_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd)
+{
+  struct elf_kvx_link_hash_table *htab;
+
+  elf_elfheader (stub_bfd)->e_ident[EI_CLASS] = ELFCLASSNN;
+
+/* Always hook our dynamic sections into the first bfd, which is the
+   linker created stub bfd.  This ensures that the GOT header is at
+   the start of the output TOC section.  */
+  htab = elf_kvx_hash_table (info);
+  if (htab == NULL)
+    return false;
+
+  return true;
+}
+
+/* Determine and set the size of the stub section for a final link.
+
+   The basic idea here is to examine all the relocations looking for
+   PC-relative calls to a target that is unreachable with a 27bits
+   immediate (found in call and goto).  */
+
+bool
+elfNN_kvx_size_stubs (bfd *output_bfd,
+		     bfd *stub_bfd,
+		     struct bfd_link_info *info,
+		     bfd_signed_vma group_size,
+		     asection * (*add_stub_section) (const char *,
+						     asection *),
+		     void (*layout_sections_again) (void))
+{
+  bfd_size_type stub_group_size;
+  bool stubs_always_before_branch;
+  bool stub_changed = false;
+  struct elf_kvx_link_hash_table *htab = elf_kvx_hash_table (info);
+
+  /* Propagate mach to stub bfd, because it may not have been
+     finalized when we created stub_bfd.  */
+  bfd_set_arch_mach (stub_bfd, bfd_get_arch (output_bfd),
+		     bfd_get_mach (output_bfd));
+
+  /* Stash our params away.  */
+  htab->stub_bfd = stub_bfd;
+  htab->add_stub_section = add_stub_section;
+  htab->layout_sections_again = layout_sections_again;
+  stubs_always_before_branch = group_size < 0;
+  if (group_size < 0)
+    stub_group_size = -group_size;
+  else
+    stub_group_size = group_size;
+
+  if (stub_group_size == 1)
+    {
+      /* Default values.  */
+      /* KVX branch range is +-256MB. The value used is 1MB less.  */
+      stub_group_size = 255 * 1024 * 1024;
+    }
+
+  group_sections (htab, stub_group_size, stubs_always_before_branch);
+
+  (*htab->layout_sections_again) ();
+
+  while (1)
+    {
+      bfd *input_bfd;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL; input_bfd = input_bfd->link.next)
+	{
+	  Elf_Internal_Shdr *symtab_hdr;
+	  asection *section;
+	  Elf_Internal_Sym *local_syms = NULL;
+
+	  if (!is_kvx_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
+	  /* We'll need the symbol table in a second.  */
+	  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+	  if (symtab_hdr->sh_info == 0)
+	    continue;
+
+	  /* Walk over each section attached to the input bfd.  */
+	  for (section = input_bfd->sections;
+	       section != NULL; section = section->next)
+	    {
+	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
+
+	      /* If there aren't any relocs, then there's nothing more
+		 to do.  */
+	      if ((section->flags & SEC_RELOC) == 0
+		  || section->reloc_count == 0
+		  || (section->flags & SEC_CODE) == 0)
+		continue;
+
+	      /* If this section is a link-once section that will be
+		 discarded, then don't create any stubs.  */
+	      if (section->output_section == NULL
+		  || section->output_section->owner != output_bfd)
+		continue;
+
+	      /* Get the relocs.  */
+	      internal_relocs
+		= _bfd_elf_link_read_relocs (input_bfd, section, NULL,
+					     NULL, info->keep_memory);
+	      if (internal_relocs == NULL)
+		goto error_ret_free_local;
+
+	      /* Now examine each relocation.  */
+	      irela = internal_relocs;
+	      irelaend = irela + section->reloc_count;
+	      for (; irela < irelaend; irela++)
+		{
+		  unsigned int r_type, r_indx;
+		  enum elf_kvx_stub_type stub_type;
+		  struct elf_kvx_stub_hash_entry *stub_entry;
+		  asection *sym_sec;
+		  bfd_vma sym_value;
+		  bfd_vma destination;
+		  struct elf_kvx_link_hash_entry *hash;
+		  const char *sym_name;
+		  char *stub_name;
+		  const asection *id_sec;
+		  unsigned char st_type;
+		  bfd_size_type len;
+
+		  r_type = ELFNN_R_TYPE (irela->r_info);
+		  r_indx = ELFNN_R_SYM (irela->r_info);
+
+		  if (r_type >= (unsigned int) R_KVX_end)
+		    {
+		      bfd_set_error (bfd_error_bad_value);
+		    error_ret_free_internal:
+		      if (elf_section_data (section)->relocs == NULL)
+			free (internal_relocs);
+		      goto error_ret_free_local;
+		    }
+
+		  /* Only look for stubs on unconditional branch and
+		     branch and link instructions.  */
+		  /* This catches CALL and GOTO insn */
+		  if (r_type != (unsigned int) R_KVX_PCREL27)
+		    continue;
+
+		  /* Now determine the call target, its name, value,
+		     section.  */
+		  sym_sec = NULL;
+		  sym_value = 0;
+		  destination = 0;
+		  hash = NULL;
+		  sym_name = NULL;
+		  if (r_indx < symtab_hdr->sh_info)
+		    {
+		      /* It's a local symbol.  */
+		      Elf_Internal_Sym *sym;
+		      Elf_Internal_Shdr *hdr;
+
+		      if (local_syms == NULL)
+			{
+			  local_syms
+			    = (Elf_Internal_Sym *) symtab_hdr->contents;
+			  if (local_syms == NULL)
+			    local_syms
+			      = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
+						      symtab_hdr->sh_info, 0,
+						      NULL, NULL, NULL);
+			  if (local_syms == NULL)
+			    goto error_ret_free_internal;
+			}
+
+		      sym = local_syms + r_indx;
+		      hdr = elf_elfsections (input_bfd)[sym->st_shndx];
+		      sym_sec = hdr->bfd_section;
+		      if (!sym_sec)
+			/* This is an undefined symbol.  It can never
+			   be resolved.  */
+			continue;
+
+		      if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
+			sym_value = sym->st_value;
+		      destination = (sym_value + irela->r_addend
+				     + sym_sec->output_offset
+				     + sym_sec->output_section->vma);
+		      st_type = ELF_ST_TYPE (sym->st_info);
+		      sym_name
+			= bfd_elf_string_from_elf_section (input_bfd,
+							   symtab_hdr->sh_link,
+							   sym->st_name);
+		    }
+		  else
+		    {
+		      int e_indx;
+
+		      e_indx = r_indx - symtab_hdr->sh_info;
+		      hash = ((struct elf_kvx_link_hash_entry *)
+			      elf_sym_hashes (input_bfd)[e_indx]);
+
+		      while (hash->root.root.type == bfd_link_hash_indirect
+			     || hash->root.root.type == bfd_link_hash_warning)
+			hash = ((struct elf_kvx_link_hash_entry *)
+				hash->root.root.u.i.link);
+
+		      if (hash->root.root.type == bfd_link_hash_defined
+			  || hash->root.root.type == bfd_link_hash_defweak)
+			{
+			  struct elf_kvx_link_hash_table *globals =
+			    elf_kvx_hash_table (info);
+			  sym_sec = hash->root.root.u.def.section;
+			  sym_value = hash->root.root.u.def.value;
+			  /* For a destination in a shared library,
+			     use the PLT stub as target address to
+			     decide whether a branch stub is
+			     needed.  */
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       +
+					       sym_sec->output_section->vma);
+			    }
+			  else if (sym_sec->output_section != NULL)
+			    destination = (sym_value + irela->r_addend
+					   + sym_sec->output_offset
+					   + sym_sec->output_section->vma);
+			}
+		      else if (hash->root.root.type == bfd_link_hash_undefined
+			       || (hash->root.root.type
+				   == bfd_link_hash_undefweak))
+			{
+			  /* For a shared library, use the PLT stub as
+			     target address to decide whether a long
+			     branch stub is needed.
+			     For absolute code, they cannot be handled.  */
+			  struct elf_kvx_link_hash_table *globals =
+			    elf_kvx_hash_table (info);
+
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       +
+					       sym_sec->output_section->vma);
+			    }
+			  else
+			    continue;
+			}
+		      else
+			{
+			  bfd_set_error (bfd_error_bad_value);
+			  goto error_ret_free_internal;
+			}
+		      st_type = ELF_ST_TYPE (hash->root.type);
+		      sym_name = hash->root.root.root.string;
+		    }
+
+		  /* Determine what (if any) linker stub is needed.  */
+		  stub_type = kvx_type_of_stub (section, irela, sym_sec,
+                                                st_type, destination);
+		  if (stub_type == kvx_stub_none)
+		    continue;
+
+		  /* Support for grouping stub sections.  */
+		  id_sec = htab->stub_group[section->id].link_sec;
+
+		  /* Get the name of this stub.  */
+		  stub_name = elfNN_kvx_stub_name (id_sec, sym_sec, hash,
+						  irela);
+		  if (!stub_name)
+		    goto error_ret_free_internal;
+
+		  stub_entry =
+		    kvx_stub_hash_lookup (&htab->stub_hash_table,
+					 stub_name, false, false);
+		  if (stub_entry != NULL)
+		    {
+		      /* The proper stub has already been created.  */
+		      free (stub_name);
+                      /* Always update this stub's target since it may have
+			 changed after layout.  */
+		      stub_entry->target_value = sym_value + irela->r_addend;
+		      continue;
+		    }
+
+		  stub_entry = _bfd_kvx_add_stub_entry_in_group
+		    (stub_name, section, htab);
+		  if (stub_entry == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  stub_entry->target_value = sym_value + irela->r_addend;
+		  stub_entry->target_section = sym_sec;
+		  stub_entry->stub_type = stub_type;
+		  stub_entry->h = hash;
+		  stub_entry->st_type = st_type;
+
+		  if (sym_name == NULL)
+		    sym_name = "unnamed";
+		  len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
+		  stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
+		  if (stub_entry->output_name == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  snprintf (stub_entry->output_name, len, STUB_ENTRY_NAME,
+			    sym_name);
+
+		  stub_changed = true;
+		}
+
+	      /* We're done with the internal relocs, free them.  */
+	      if (elf_section_data (section)->relocs == NULL)
+		free (internal_relocs);
+	    }
+	}
+
+      if (!stub_changed)
+	break;
+
+      _bfd_kvx_resize_stubs (htab);
+
+      /* Ask the linker to do its stuff.  */
+      (*htab->layout_sections_again) ();
+      stub_changed = false;
+    }
+
+  return true;
+
+error_ret_free_local:
+  return false;
+
+}
+
+/* Build all the stubs associated with the current output file.  The
+   stubs are kept in a hash table attached to the main linker hash
+   table.  We also set up the .plt entries for statically linked PIC
+   functions here.  This function is called via kvx_elf_finish in the
+   linker.  */
+
+bool
+elfNN_kvx_build_stubs (struct bfd_link_info *info)
+{
+  asection *stub_sec;
+  struct bfd_hash_table *table;
+  struct elf_kvx_link_hash_table *htab;
+
+  htab = elf_kvx_hash_table (info);
+
+  for (stub_sec = htab->stub_bfd->sections;
+       stub_sec != NULL; stub_sec = stub_sec->next)
+    {
+      bfd_size_type size;
+
+      /* Ignore non-stub sections.  */
+      if (!strstr (stub_sec->name, STUB_SUFFIX))
+	continue;
+
+      /* Allocate memory to hold the linker stubs.  */
+      size = stub_sec->size;
+      stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
+      if (stub_sec->contents == NULL && size != 0)
+	return false;
+      stub_sec->size = 0;
+    }
+
+  /* Build the stubs as directed by the stub hash table.  */
+  table = &htab->stub_hash_table;
+  bfd_hash_traverse (table, kvx_build_one_stub, info);
+
+  return true;
+}
+
+static bfd_vma
+kvx_calculate_got_entry_vma (struct elf_link_hash_entry *h,
+				 struct elf_kvx_link_hash_table
+				 *globals, struct bfd_link_info *info,
+				 bfd_vma value, bfd *output_bfd,
+				 bool *unresolved_reloc_p)
+{
+  bfd_vma off = (bfd_vma) - 1;
+  asection *basegot = globals->root.sgot;
+  bool dyn = globals->root.dynamic_sections_created;
+
+  if (h != NULL)
+    {
+      BFD_ASSERT (basegot != NULL);
+      off = h->got.offset;
+      BFD_ASSERT (off != (bfd_vma) - 1);
+      if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
+	  || (bfd_link_pic (info)
+	      && SYMBOL_REFERENCES_LOCAL (info, h))
+	  || (ELF_ST_VISIBILITY (h->other)
+	      && h->root.type == bfd_link_hash_undefweak))
+	{
+	  /* This is actually a static link, or it is a -Bsymbolic link
+	     and the symbol is defined locally.  We must initialize this
+	     entry in the global offset table.  Since the offset must
+	     always be a multiple of 8 (4 in the case of ILP32), we use
+	     the least significant bit to record whether we have
+	     initialized it already.
+	     When doing a dynamic link, we create a .rel(a).got relocation
+	     entry to initialize the value.  This is done in the
+	     finish_dynamic_symbol routine.  */
+	  if ((off & 1) != 0)
+	    off &= ~1;
+	  else
+	    {
+	      bfd_put_NN (output_bfd, value, basegot->contents + off);
+	      h->got.offset |= 1;
+	    }
+	}
+      else
+	*unresolved_reloc_p = false;
+    }
+
+  return off;
+}
+
+static unsigned int
+kvx_reloc_got_type (bfd_reloc_code_real_type r_type)
+{
+  switch (r_type)
+    {
+      /* Extracted with:
+	 awk 'match ($0, /HOWTO.*R_(KVX.*_GOT(OFF)?(64)?_.*),/,ary) {print "case BFD_RELOC_" ary[1] ":";}' elfxx-kvxc.def
+	 */
+    case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+    case BFD_RELOC_KVX_S37_GOT_LO10:
+    case BFD_RELOC_KVX_S37_GOT_UP27:
+
+    case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+    case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+    case BFD_RELOC_KVX_S43_GOT_LO10:
+    case BFD_RELOC_KVX_S43_GOT_UP27:
+    case BFD_RELOC_KVX_S43_GOT_EX6:
+      return GOT_NORMAL;
+ 
+    case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+    case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+    case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+      return GOT_TLS_GD;
+
+    case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+    case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+    case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+      return GOT_TLS_LD;
+
+    case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+    case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+    case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+      return GOT_TLS_IE;
+
+    default:
+      break;
+    }
+  return GOT_UNKNOWN;
+}
+
+static bool
+kvx_can_relax_tls (bfd *input_bfd ATTRIBUTE_UNUSED,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
+		       bfd_reloc_code_real_type r_type ATTRIBUTE_UNUSED,
+		       struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
+		       unsigned long r_symndx ATTRIBUTE_UNUSED)
+{
+  if (! IS_KVX_TLS_RELAX_RELOC (r_type))
+    return false;
+
+  /* Relaxing hook. Disabled on KVX. */
+  /* See elfnn-aarch64.c */
+  return true;
+}
+
+/* Given the relocation code R_TYPE, return the relaxed bfd reloc
+   enumerator.  */
+
+static bfd_reloc_code_real_type
+kvx_tls_transition (bfd *input_bfd,
+			struct bfd_link_info *info,
+			unsigned int r_type,
+			struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+
+  if (! kvx_can_relax_tls (input_bfd, info, bfd_r_type, h, r_symndx))
+    return bfd_r_type;
+
+  return bfd_r_type;
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_KVX_*_TLS_GD_* and R_KVX_*_TLS_LD_* relocation.  */
+
+static bfd_vma
+dtpoff_base (struct bfd_link_info *info)
+{
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL);
+  return elf_hash_table (info)->tls_sec->vma;
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_KVX_*_TLS_IE_* and R_KVX_*_TLS_LE_* relocations.  */
+
+static bfd_vma
+tpoff_base (struct bfd_link_info *info)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (htab->tls_sec != NULL);
+
+  bfd_vma base = align_power ((bfd_vma) 0,
+			      htab->tls_sec->alignment_power);
+  return htab->tls_sec->vma - base;
+}
+
+static bfd_vma *
+symbol_got_offset_ref (bfd *input_bfd, struct elf_link_hash_entry *h,
+		       unsigned long r_symndx)
+{
+  /* Calculate the address of the GOT entry for symbol
+     referred to in h.  */
+  if (h != NULL)
+    return &h->got.offset;
+  else
+    {
+      /* local symbol */
+      struct elf_kvx_local_symbol *l;
+
+      l = elf_kvx_locals (input_bfd);
+      return &l[r_symndx].got_offset;
+    }
+}
+
+static void
+symbol_got_offset_mark (bfd *input_bfd, struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_vma *p;
+  p = symbol_got_offset_ref (input_bfd, h, r_symndx);
+  *p |= 1;
+}
+
+static int
+symbol_got_offset_mark_p (bfd *input_bfd, struct elf_link_hash_entry *h,
+			  unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  return value & 1;
+}
+
+static bfd_vma
+symbol_got_offset (bfd *input_bfd, struct elf_link_hash_entry *h,
+		   unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  value &= ~1;
+  return value;
+}
+
+/* N_ONES produces N one bits, without overflowing machine arithmetic.  */
+#define N_ONES(n) (((((bfd_vma) 1 << ((n) -1)) - 1) << 1) | 1)
+
+/*
+ * This is a copy/paste + modification from
+ * reloc.c:_bfd_relocate_contents. Relocations are applied to 32bits
+ * words, so all overflow checks will overflow for values above
+ * 32bits.
+ */
+static bfd_reloc_status_type
+check_signed_overflow (enum complain_overflow complain_on_overflow,
+		       bfd_reloc_code_real_type bfd_r_type, bfd *input_bfd,
+		       bfd_vma relocation)
+{
+  bfd_reloc_status_type flag = bfd_reloc_ok;
+  bfd_vma addrmask, fieldmask, signmask, ss;
+  bfd_vma a, b, sum;
+  bfd_vma x = 0;
+
+  /* These usually come from howto struct. As we don't check for
+   * values fitting in bitfields or in subpart of words, we set all
+   * these to values to check as if the field is starting from first
+   * bit.
+   */
+  unsigned int rightshift = 0;
+  unsigned int bitpos = 0;
+  unsigned int bitsize = 0;
+  bfd_vma src_mask = -1;
+
+  /* Only regular symbol relocations are checked here. Others
+     relocations (GOT, TLS) could be checked if the need is
+     confirmed. At the moment, we keep previous behavior
+     (ie. unchecked) for those. */
+  switch (bfd_r_type)
+    {
+    case BFD_RELOC_KVX_S37_LO10:
+    case BFD_RELOC_KVX_S37_UP27:
+      bitsize = 37;
+      break;
+
+    case BFD_RELOC_KVX_S32_LO5:
+    case BFD_RELOC_KVX_S32_UP27:
+      bitsize = 32;
+      break;
+
+    case BFD_RELOC_KVX_S43_LO10:
+    case BFD_RELOC_KVX_S43_UP27:
+    case BFD_RELOC_KVX_S43_EX6:
+      bitsize = 43;
+      break;
+
+    case BFD_RELOC_KVX_S64_LO10:
+    case BFD_RELOC_KVX_S64_UP27:
+    case BFD_RELOC_KVX_S64_EX27:
+      bitsize = 64;
+      break;
+
+    default:
+      return bfd_reloc_ok;
+    }
+
+  /* direct copy/paste from reloc.c below */
+
+  /* Get the values to be added together.  For signed and unsigned
+     relocations, we assume that all values should be truncated to
+     the size of an address.  For bitfields, all the bits matter.
+     See also bfd_check_overflow.  */
+  fieldmask = N_ONES (bitsize);
+  signmask = ~fieldmask;
+  addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
+	      | (fieldmask << rightshift));
+  a = (relocation & addrmask) >> rightshift;
+  b = (x & src_mask & addrmask) >> bitpos;
+  addrmask >>= rightshift;
+
+  switch (complain_on_overflow)
+    {
+    case complain_overflow_signed:
+      /* If any sign bits are set, all sign bits must be set.
+	 That is, A must be a valid negative address after
+	 shifting.  */
+      signmask = ~(fieldmask >> 1);
+      /* Fall thru */
+
+    case complain_overflow_bitfield:
+      /* Much like the signed check, but for a field one bit
+	 wider.  We allow a bitfield to represent numbers in the
+	 range -2**n to 2**n-1, where n is the number of bits in the
+	 field.  Note that when bfd_vma is 32 bits, a 32-bit reloc
+	 can't overflow, which is exactly what we want.  */
+      ss = a & signmask;
+      if (ss != 0 && ss != (addrmask & signmask))
+	flag = bfd_reloc_overflow;
+
+      /* We only need this next bit of code if the sign bit of B
+	 is below the sign bit of A.  This would only happen if
+	 SRC_MASK had fewer bits than BITSIZE.  Note that if
+	 SRC_MASK has more bits than BITSIZE, we can get into
+	 trouble; we would need to verify that B is in range, as
+	 we do for A above.  */
+      ss = ((~src_mask) >> 1) & src_mask;
+      ss >>= bitpos;
+
+      /* Set all the bits above the sign bit.  */
+      b = (b ^ ss) - ss;
+
+      /* Now we can do the addition.  */
+      sum = a + b;
+
+      /* See if the result has the correct sign.  Bits above the
+	 sign bit are junk now; ignore them.  If the sum is
+	 positive, make sure we did not have all negative inputs;
+	 if the sum is negative, make sure we did not have all
+	 positive inputs.  The test below looks only at the sign
+	 bits, and it really just
+	 SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
+
+	 We mask with addrmask here to explicitly allow an address
+	 wrap-around.  The Linux kernel relies on it, and it is
+	 the only way to write assembler code which can run when
+	 loaded at a location 0x80000000 away from the location at
+	 which it is linked.  */
+      if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
+	flag = bfd_reloc_overflow;
+      break;
+
+    case complain_overflow_unsigned:
+      /* Checking for an unsigned overflow is relatively easy:
+	 trim the addresses and add, and trim the result as well.
+	 Overflow is normally indicated when the result does not
+	 fit in the field.  However, we also need to consider the
+	 case when, e.g., fieldmask is 0x7fffffff or smaller, an
+	 input is 0x80000000, and bfd_vma is only 32 bits; then we
+	 will get sum == 0, but there is an overflow, since the
+	 inputs did not fit in the field.  Instead of doing a
+	 separate test, we can check for this by or-ing in the
+	 operands when testing for the sum overflowing its final
+	 field.  */
+      sum = (a + b) & addrmask;
+      if ((a | b | sum) & signmask)
+	flag = bfd_reloc_overflow;
+      break;
+
+    default:
+      abort ();
+    }
+  return flag;
+}
+
+/* Perform a relocation as part of a final link.  */
+static bfd_reloc_status_type
+elfNN_kvx_final_link_relocate (reloc_howto_type *howto,
+				   bfd *input_bfd,
+				   bfd *output_bfd,
+				   asection *input_section,
+				   bfd_byte *contents,
+				   Elf_Internal_Rela *rel,
+				   bfd_vma value,
+				   struct bfd_link_info *info,
+				   asection *sym_sec,
+				   struct elf_link_hash_entry *h,
+				   bool *unresolved_reloc_p,
+				   bool save_addend,
+				   bfd_vma *saved_addend,
+				   Elf_Internal_Sym *sym)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  unsigned int r_type = howto->type;
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_kvx_bfd_reloc_from_howto (howto);
+  bfd_reloc_code_real_type new_bfd_r_type;
+  unsigned long r_symndx;
+  bfd_byte *hit_data = contents + rel->r_offset;
+  bfd_vma place, off;
+  bfd_signed_vma signed_addend;
+  struct elf_kvx_link_hash_table *globals;
+  bool weak_undef_p;
+  asection *base_got;
+  bfd_reloc_status_type rret = bfd_reloc_ok;
+  globals = elf_kvx_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+
+  BFD_ASSERT (is_kvx_elf (input_bfd));
+
+  r_symndx = ELFNN_R_SYM (rel->r_info);
+
+  /* It is possible to have linker relaxations on some TLS access
+     models.  Update our information here.  */
+  new_bfd_r_type = kvx_tls_transition (input_bfd, info, r_type, h, r_symndx);
+  if (new_bfd_r_type != bfd_r_type)
+    {
+      bfd_r_type = new_bfd_r_type;
+      howto = elfNN_kvx_howto_from_bfd_reloc (bfd_r_type);
+      BFD_ASSERT (howto != NULL);
+      r_type = howto->type;
+    }
+
+  place = input_section->output_section->vma
+    + input_section->output_offset + rel->r_offset;
+
+  /* Get addend, accumulating the addend for consecutive relocs
+     which refer to the same offset.  */
+  signed_addend = saved_addend ? *saved_addend : 0;
+  signed_addend += rel->r_addend;
+
+  weak_undef_p = (h ? h->root.type == bfd_link_hash_undefweak
+		  : bfd_is_und_section (sym_sec));
+
+  switch (bfd_r_type)
+    {
+    case BFD_RELOC_KVX_NN:
+#if ARCH_SIZE == 64
+    case BFD_RELOC_KVX_32:
+#endif
+    case BFD_RELOC_KVX_S37_LO10:
+    case BFD_RELOC_KVX_S37_UP27:
+
+    case BFD_RELOC_KVX_S32_LO5:
+    case BFD_RELOC_KVX_S32_UP27:
+
+    case BFD_RELOC_KVX_S43_LO10:
+    case BFD_RELOC_KVX_S43_UP27:
+    case BFD_RELOC_KVX_S43_EX6:
+
+    case BFD_RELOC_KVX_S64_LO10:
+    case BFD_RELOC_KVX_S64_UP27:
+    case BFD_RELOC_KVX_S64_EX27:
+      /* When generating a shared object or relocatable executable, these
+         relocations are copied into the output file to be resolved at
+         run time.  */
+      if (((bfd_link_pic (info) == true)
+	    || globals->root.is_relocatable_executable)
+	  && (input_section->flags & SEC_ALLOC)
+	  && (h == NULL
+	      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	      || h->root.type != bfd_link_hash_undefweak))
+	{
+	  Elf_Internal_Rela outrel;
+	  bfd_byte *loc;
+	  bool skip, relocate;
+	  asection *sreloc;
+
+	  *unresolved_reloc_p = false;
+
+	  skip = false;
+	  relocate = false;
+
+	  outrel.r_addend = signed_addend;
+	  outrel.r_offset =
+	    _bfd_elf_section_offset (output_bfd, info, input_section,
+				     rel->r_offset);
+	  if (outrel.r_offset == (bfd_vma) - 1)
+	    skip = true;
+	  else if (outrel.r_offset == (bfd_vma) - 2)
+	    {
+	      skip = true;
+	      relocate = true;
+	    }
+
+	  outrel.r_offset += (input_section->output_section->vma
+			      + input_section->output_offset);
+
+	  if (skip)
+	    memset (&outrel, 0, sizeof outrel);
+	  else if (h != NULL
+		   && h->dynindx != -1
+		   && (!bfd_link_pic (info) || !info->symbolic || !h->def_regular))
+	    outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+	  else if (bfd_r_type == BFD_RELOC_KVX_32
+		   || bfd_r_type == BFD_RELOC_KVX_64)
+	    {
+	      int symbol;
+
+	      /* On SVR4-ish systems, the dynamic loader cannot
+		 relocate the text and data segments independently,
+		 so the symbol does not matter.  */
+	      symbol = 0;
+	      outrel.r_info = ELFNN_R_INFO (symbol, R_KVX_RELATIVE);
+	      outrel.r_addend += value;
+	    }
+	  else if (bfd_link_pic (info) && info->symbolic)
+	    {
+	      goto skip_because_pic;
+	    }
+	  else
+	    {
+	      /* We may endup here from bad input code trying to
+		 insert relocation on symbols within code.  We do not
+		 want that currently, and such code should use GOT +
+		 KVX_32/64 reloc that translate in KVX_RELATIVE
+	      */
+		const char *name;
+		if (h && h->root.root.string)
+		  name = h->root.root.string;
+		else
+		  name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
+					   NULL);
+
+		(*_bfd_error_handler)
+                        /* xgettext:c-format */
+                        (_("%pB(%pA+%#" PRIx64 "): "
+                                "unresolvable %s relocation in section `%s'"),
+                                input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
+                                name);
+		return bfd_reloc_notsupported;
+	    }
+
+	  sreloc = elf_section_data (input_section)->sreloc;
+	  if (sreloc == NULL || sreloc->contents == NULL)
+	    return bfd_reloc_notsupported;
+
+	  loc = sreloc->contents + sreloc->reloc_count++ * RELOC_SIZE (globals);
+	  bfd_elfNN_swap_reloca_out (output_bfd, &outrel, loc);
+
+	  if (sreloc->reloc_count * RELOC_SIZE (globals) > sreloc->size)
+	    {
+	      /* Sanity to check that we have previously allocated
+		 sufficient space in the relocation section for the
+		 number of relocations we actually want to emit.  */
+	      abort ();
+	    }
+
+	  /* If this reloc is against an external symbol, we do not want to
+	     fiddle with the addend.  Otherwise, we need to include the symbol
+	     value so that it becomes an addend for the dynamic reloc.  */
+	  if (!relocate)
+	    return bfd_reloc_ok;
+
+	  rret = check_signed_overflow (complain_overflow_signed, bfd_r_type,
+					input_bfd, value + signed_addend);
+	  if (rret != bfd_reloc_ok)
+	    return rret;
+
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, value,
+					   signed_addend);
+	}
+
+    skip_because_pic:
+      rret = check_signed_overflow (complain_overflow_signed, bfd_r_type,
+				    input_bfd, value + signed_addend);
+      if (rret != bfd_reloc_ok)
+	return rret;
+
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset, value,
+				       signed_addend);
+      break;
+
+    case BFD_RELOC_KVX_PCREL17:
+    case BFD_RELOC_KVX_PCREL27:
+      {
+	/*
+	 * BCU insn are always first in a bundle, so there is no need
+	 * to correct the address using offset within bundle
+	 */
+
+	asection *splt = globals->root.splt;
+	bool via_plt_p =
+	  splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
+
+	/* A call to an undefined weak symbol is converted to a jump to
+	   the next instruction unless a PLT entry will be created.
+	   The jump to the next instruction is optimized as a NOP.
+	   Do the same for local undefined symbols.  */
+	if (weak_undef_p && ! via_plt_p)
+	  {
+	    bfd_putl32 (INSN_NOP, hit_data);
+	    return bfd_reloc_ok;
+	  }
+
+	/* If the call goes through a PLT entry, make sure to
+	   check distance to the right destination address.  */
+	if (via_plt_p)
+	  value = (splt->output_section->vma
+		   + splt->output_offset + h->plt.offset);
+
+	/* Check if a stub has to be inserted because the destination
+	   is too far away.  */
+	struct elf_kvx_stub_hash_entry *stub_entry = NULL;
+
+	/* If the target symbol is global and marked as a function the
+	   relocation applies a function call or a tail call.  In this
+	   situation we can veneer out of range branches.  The veneers
+	   use R16 and R17 hence cannot be used arbitrary out of range
+	   branches that occur within the body of a function.  */
+
+	/* Check if a stub has to be inserted because the destination
+	   is too far away.  */
+	if (! kvx_valid_call_p (value, place))
+	  {
+	    /* The target is out of reach, so redirect the branch to
+	       the local stub for this function.  */
+	    stub_entry = elfNN_kvx_get_stub_entry (input_section,
+						  sym_sec, h,
+						  rel, globals);
+	    if (stub_entry != NULL)
+	      value = (stub_entry->stub_offset
+		       + stub_entry->stub_sec->output_offset
+		       + stub_entry->stub_sec->output_section->vma);
+	    /* We have redirected the destination to stub entry address,
+	       so ignore any addend record in the original rela entry.  */
+	    signed_addend = 0;
+	  }
+      }
+      *unresolved_reloc_p = false;
+
+      /* FALLTHROUGH */
+
+      /* PCREL 32 are used in dwarf2 table for exception handling */
+    case BFD_RELOC_KVX_32_PCREL:
+    case BFD_RELOC_KVX_S64_PCREL_LO10:
+    case BFD_RELOC_KVX_S64_PCREL_UP27:
+    case BFD_RELOC_KVX_S64_PCREL_EX27:
+    case BFD_RELOC_KVX_S37_PCREL_LO10:
+    case BFD_RELOC_KVX_S37_PCREL_UP27:
+    case BFD_RELOC_KVX_S43_PCREL_LO10:
+    case BFD_RELOC_KVX_S43_PCREL_UP27:
+    case BFD_RELOC_KVX_S43_PCREL_EX6:
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset, value,
+				       signed_addend);
+      break;
+
+    case BFD_RELOC_KVX_S37_TLS_LE_LO10:
+    case BFD_RELOC_KVX_S37_TLS_LE_UP27:
+
+    case BFD_RELOC_KVX_S43_TLS_LE_LO10:
+    case BFD_RELOC_KVX_S43_TLS_LE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LE_EX6:
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value - tpoff_base (info),
+					 signed_addend);
+      break;
+
+    case BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10:
+    case BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27:
+
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10:
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27:
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6:
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value - dtpoff_base (info),
+					 signed_addend);
+
+    case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+    case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+
+    case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+    case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+
+    case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+    case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+
+      if (globals->root.sgot == NULL)
+    	return bfd_reloc_notsupported;
+      value = symbol_got_offset (input_bfd, h, r_symndx);
+
+      _bfd_final_link_relocate (howto, input_bfd, input_section,
+				contents, rel->r_offset, value,
+				signed_addend);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_KVX_S37_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S37_GOTADDR_LO10:
+
+    case BFD_RELOC_KVX_S43_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S43_GOTADDR_EX6:
+    case BFD_RELOC_KVX_S43_GOTADDR_LO10:
+
+    case BFD_RELOC_KVX_S64_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S64_GOTADDR_EX27:
+    case BFD_RELOC_KVX_S64_GOTADDR_LO10:
+      {
+	if (globals->root.sgot == NULL)
+	  BFD_ASSERT (h != NULL);
+
+	value = globals->root.sgot->output_section->vma
+	  + globals->root.sgot->output_offset;
+
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value,
+					 signed_addend);
+      }
+      break;
+
+    case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+    case BFD_RELOC_KVX_32_GOTOFF:
+    case BFD_RELOC_KVX_64_GOTOFF:
+
+    case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+    case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+      {
+	asection *basegot = globals->root.sgot;
+	/* BFD_ASSERT(h == NULL); */
+	BFD_ASSERT(globals->root.sgot != NULL);
+	value -= basegot->output_section->vma + basegot->output_offset;
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value,
+					 signed_addend);
+      }
+      break;
+
+    case BFD_RELOC_KVX_S37_GOT_LO10:
+    case BFD_RELOC_KVX_S37_GOT_UP27:
+
+    case BFD_RELOC_KVX_32_GOT:
+    case BFD_RELOC_KVX_64_GOT:
+
+    case BFD_RELOC_KVX_S43_GOT_LO10:
+    case BFD_RELOC_KVX_S43_GOT_UP27:
+    case BFD_RELOC_KVX_S43_GOT_EX6:
+
+      if (globals->root.sgot == NULL)
+	BFD_ASSERT (h != NULL);
+
+      if (h != NULL)
+	{
+	  value = kvx_calculate_got_entry_vma (h, globals, info, value,
+						   output_bfd,
+						   unresolved_reloc_p);
+#ifdef UGLY_DEBUG
+	  printf("GOT_LO/HI for %s, value %x\n", h->root.root.string, value);
+#endif
+
+	  /* value = _bfd_kvx_elf_resolve_relocation (bfd_r_type, place, value, */
+	  /* 					       0, weak_undef_p); */
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, value,
+					   signed_addend);
+	}
+      else
+	{
+#ifdef UGLY_DEBUG
+	  printf("GOT_LO/HI with h NULL, initial value %x\n", value);
+#endif
+
+	bfd_vma addend = 0;
+	struct elf_kvx_local_symbol *locals
+	  = elf_kvx_locals (input_bfd);
+
+	if (locals == NULL)
+	  {
+	    int howto_index = bfd_r_type - BFD_RELOC_KVX_RELOC_START;
+	    _bfd_error_handler
+                    /* xgettext:c-format */
+                    (_("%pB: local symbol descriptor table be NULL when applying "
+                            "relocation %s against local symbol"),
+                            input_bfd, elf_kvx_howto_table[howto_index].name);
+	    abort ();
+	  }
+
+	off = symbol_got_offset (input_bfd, h, r_symndx);
+	base_got = globals->root.sgot;
+	bfd_vma got_entry_addr = (base_got->output_section->vma
+				  + base_got->output_offset + off);
+
+	if (!symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	  {
+	    bfd_put_64 (output_bfd, value, base_got->contents + off);
+
+	    if (bfd_link_pic (info))
+	      {
+		asection *s;
+		Elf_Internal_Rela outrel;
+
+		/* For local symbol, we have done absolute relocation in static
+		   linking stageh. While for share library, we need to update
+		   the content of GOT entry according to the share objects
+		   loading base address. So we need to generate a
+		   R_AARCH64_RELATIVE reloc for dynamic linker.  */
+		s = globals->root.srelgot;
+		if (s == NULL)
+		  abort ();
+
+		outrel.r_offset = got_entry_addr;
+		outrel.r_info = ELFNN_R_INFO (0, R_KVX_RELATIVE);
+		outrel.r_addend = value;
+		elf_append_rela (output_bfd, s, &outrel);
+	      }
+
+	    symbol_got_offset_mark (input_bfd, h, r_symndx);
+	  }
+
+	/* Update the relocation value to GOT entry addr as we have transformed
+	   the direct data access into indirect data access through GOT.  */
+	value = got_entry_addr;
+
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, off,
+					 addend);
+	}
+      break;
+
+    default:
+      return bfd_reloc_notsupported;
+    }
+
+  if (saved_addend)
+    *saved_addend = value;
+
+  /* Only apply the final relocation in a sequence.  */
+  if (save_addend)
+    return bfd_reloc_continue;
+
+  return _bfd_kvx_elf_put_addend (input_bfd, hit_data, bfd_r_type,
+				      howto, value);
+}
+
+
+
+/* Relocate a KVX ELF section.  */
+
+static int
+elfNN_kvx_relocate_section (bfd *output_bfd,
+				struct bfd_link_info *info,
+				bfd *input_bfd,
+				asection *input_section,
+				bfd_byte *contents,
+				Elf_Internal_Rela *relocs,
+				Elf_Internal_Sym *local_syms,
+				asection **local_sections)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  Elf_Internal_Rela *rel;
+  Elf_Internal_Rela *relend;
+  const char *name;
+  struct elf_kvx_link_hash_table *globals;
+  bool save_addend = false;
+  bfd_vma addend = 0;
+
+  globals = elf_kvx_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  sym_hashes = elf_sym_hashes (input_bfd);
+
+  rel = relocs;
+  relend = relocs + input_section->reloc_count;
+  for (; rel < relend; rel++)
+    {
+      unsigned int r_type;
+      bfd_reloc_code_real_type bfd_r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+      bfd_reloc_status_type r;
+      arelent bfd_reloc;
+      char sym_type;
+      bool unresolved_reloc = false;
+      char *error_message = NULL;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      bfd_reloc.howto = elfNN_kvx_howto_from_type (input_bfd, r_type);
+      howto = bfd_reloc.howto;
+
+      if (howto == NULL)
+        return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
+
+      bfd_r_type = elfNN_kvx_bfd_reloc_from_howto (howto);
+
+      h = NULL;
+      sym = NULL;
+      sec = NULL;
+
+      if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
+	{
+	  sym = local_syms + r_symndx;
+	  sym_type = ELFNN_ST_TYPE (sym->st_info);
+	  sec = local_sections[r_symndx];
+
+	  /* An object file might have a reference to a local
+	     undefined symbol.  This is a draft object file, but we
+	     should at least do something about it.  */
+	  if (r_type != R_KVX_NONE
+	      && r_type != R_KVX_S37_GOTADDR_LO10
+	      && r_type != R_KVX_S37_GOTADDR_UP27
+	      && r_type != R_KVX_S64_GOTADDR_LO10
+	      && r_type != R_KVX_S64_GOTADDR_UP27
+	      && r_type != R_KVX_S64_GOTADDR_EX27
+	      && r_type != R_KVX_S43_GOTADDR_LO10
+	      && r_type != R_KVX_S43_GOTADDR_UP27
+	      && r_type != R_KVX_S43_GOTADDR_EX6
+	      && bfd_is_und_section (sec)
+	      && ELF_ST_BIND (sym->st_info) != STB_WEAK)
+                  (*info->callbacks->undefined_symbol)
+                          (info, bfd_elf_string_from_elf_section
+                                  (input_bfd, symtab_hdr->sh_link, sym->st_name),
+                                  input_bfd, input_section, rel->r_offset, true);
+
+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+	}
+      else
+	{
+	  bool warned, ignored;
+
+	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+				   r_symndx, symtab_hdr, sym_hashes,
+				   h, sec, relocation,
+				   unresolved_reloc, warned, ignored);
+
+	  sym_type = h->type;
+	}
+
+      if (sec != NULL && discarded_section (sec))
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, howto, 0, contents);
+
+      if (bfd_link_relocatable (info))
+	continue;
+
+      if (h != NULL)
+	name = h->root.root.string;
+      else
+	{
+	  name = (bfd_elf_string_from_elf_section
+		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
+	  if (name == NULL || *name == '\0')
+	    name = bfd_section_name (sec);
+	}
+
+      if (r_symndx != 0
+	  && r_type != R_KVX_NONE
+	  && (h == NULL
+	      || h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	  && IS_KVX_TLS_RELOC (bfd_r_type) != (sym_type == STT_TLS))
+	{
+	  (*_bfd_error_handler)
+	    ((sym_type == STT_TLS
+              /* xgettext:c-format */
+              ? _("%pB(%pA+%#" PRIx64 "): %s used with TLS symbol %s")
+              /* xgettext:c-format */
+              : _("%pB(%pA+%#" PRIx64 "): %s used with non-TLS symbol %s")),
+	     input_bfd,
+	     input_section, (long) rel->r_offset, howto->name, name);
+	}
+
+      /* Original aarch64 has relaxation handling for TLS here. */
+      r = bfd_reloc_continue;
+
+      /* There may be multiple consecutive relocations for the
+         same offset.  In that case we are supposed to treat the
+         output of each relocation as the addend for the next.  */
+      if (rel + 1 < relend
+	  && rel->r_offset == rel[1].r_offset
+	  && ELFNN_R_TYPE (rel[1].r_info) != R_KVX_NONE)
+
+	save_addend = true;
+      else
+	save_addend = false;
+
+      if (r == bfd_reloc_continue)
+	r = elfNN_kvx_final_link_relocate (howto, input_bfd, output_bfd,
+					       input_section, contents, rel,
+					       relocation, info, sec,
+					       h, &unresolved_reloc,
+					       save_addend, &addend, sym);
+
+      switch (elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type))
+      	{
+	case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+      	case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+
+      	case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+      	case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+      	case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+
+      	case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+      	case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+
+      	case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+      	case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+      	case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+
+      	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+      	    {
+      	      bool need_relocs = false;
+      	      bfd_byte *loc;
+      	      int indx;
+      	      bfd_vma off;
+
+      	      off = symbol_got_offset (input_bfd, h, r_symndx);
+      	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+      	      need_relocs = 
+      		(bfd_link_pic (info) || indx != 0) &&
+      		(h == NULL
+      		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+      		 || h->root.type != bfd_link_hash_undefweak);
+
+      	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+      	      if (need_relocs)
+      		{
+      		  Elf_Internal_Rela rela;
+      		  rela.r_info = ELFNN_R_INFO (indx, R_KVX_64_DTPMOD);
+      		  rela.r_addend = 0;
+      		  rela.r_offset = globals->root.sgot->output_section->vma +
+      		    globals->root.sgot->output_offset + off;
+
+      		  loc = globals->root.srelgot->contents;
+      		  loc += globals->root.srelgot->reloc_count++
+      		    * RELOC_SIZE (htab);
+      		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_reloc_code_real_type real_type =
+		    elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+
+		  if (real_type == BFD_RELOC_KVX_S37_TLS_LD_LO10
+		      || real_type == BFD_RELOC_KVX_S37_TLS_LD_UP27
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_LO10
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_UP27
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_EX6)
+		    {
+		      /* For local dynamic, don't generate DTPOFF in any case.
+			 Initialize the DTPOFF slot into zero, so we get module
+			 base address when invoke runtime TLS resolver.  */
+		      bfd_put_NN (output_bfd, 0,
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+      		  else if (indx == 0)
+      		    {
+      		      bfd_put_NN (output_bfd,
+      				  relocation - dtpoff_base (info),
+      				  globals->root.sgot->contents + off
+      				  + GOT_ENTRY_SIZE);
+      		    }
+      		  else
+      		    {
+      		      /* This TLS symbol is global. We emit a
+      			 relocation to fixup the tls offset at load
+      			 time.  */
+      		      rela.r_info =
+      			ELFNN_R_INFO (indx, R_KVX_64_DTPOFF);
+      		      rela.r_addend = 0;
+      		      rela.r_offset =
+      			(globals->root.sgot->output_section->vma
+      			 + globals->root.sgot->output_offset + off
+      			 + GOT_ENTRY_SIZE);
+
+      		      loc = globals->root.srelgot->contents;
+      		      loc += globals->root.srelgot->reloc_count++
+      			* RELOC_SIZE (globals);
+      		      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+      		      bfd_put_NN (output_bfd, (bfd_vma) 0,
+      				  globals->root.sgot->contents + off
+      				  + GOT_ENTRY_SIZE);
+      		    }
+      		}
+      	      else
+      		{
+      		  bfd_put_NN (output_bfd, (bfd_vma) 1,
+      			      globals->root.sgot->contents + off);
+      		  bfd_put_NN (output_bfd,
+      			      relocation - dtpoff_base (info),
+      			      globals->root.sgot->contents + off
+      			      + GOT_ENTRY_SIZE);
+      		}
+
+      	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+      	    }
+      	  break;
+
+      	case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+      	case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+
+      	case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+      	case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+      	case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      bfd_byte *loc;
+	      int indx;
+	      bfd_vma off;
+
+	      off = symbol_got_offset (input_bfd, h, r_symndx);
+
+	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+	      need_relocs =
+		(bfd_link_pic (info) || indx != 0) &&
+		(h == NULL
+		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		 || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+	      if (need_relocs)
+		{
+		  Elf_Internal_Rela rela;
+
+		  if (indx == 0)
+		    rela.r_addend = relocation - dtpoff_base (info);
+		  else
+		    rela.r_addend = 0;
+
+		  rela.r_info = ELFNN_R_INFO (indx, R_KVX_64_TPOFF);
+		  rela.r_offset = globals->root.sgot->output_section->vma +
+		    globals->root.sgot->output_offset + off;
+
+		  loc = globals->root.srelgot->contents;
+		  loc += globals->root.srelgot->reloc_count++
+		    * RELOC_SIZE (htab);
+
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_put_NN (output_bfd, rela.r_addend,
+			      globals->root.sgot->contents + off);
+		}
+	      else
+		bfd_put_NN (output_bfd, relocation - tpoff_base (info),
+			    globals->root.sgot->contents + off);
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+
+      	default:
+      	  break;
+      	}
+
+      /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
+         because such sections are not SEC_ALLOC and thus ld.so will
+         not process them.  */
+      if (unresolved_reloc
+	  && !((input_section->flags & SEC_DEBUGGING) != 0
+	       && h->def_dynamic)
+	  && _bfd_elf_section_offset (output_bfd, info, input_section,
+				      +rel->r_offset) != (bfd_vma) - 1)
+	{
+	  (*_bfd_error_handler)
+	    /* xgettext:c-format */
+	    (_("%pB(%pA+%#" PRIx64 "): "
+	       "unresolvable %s relocation against symbol `%s'"),
+	     input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
+	     h->root.root.string);
+	  return false;
+	}
+
+      if (r != bfd_reloc_ok && r != bfd_reloc_continue)
+	{
+	  switch (r)
+	    {
+	    case bfd_reloc_overflow:
+                    (*info->callbacks->reloc_overflow)
+                            (info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
+                                    input_bfd, input_section, rel->r_offset);
+
+	      /* Original aarch64 code had a check for alignement correctness */
+	      break;
+
+	    case bfd_reloc_undefined:
+                    (*info->callbacks->undefined_symbol)
+                            (info, name, input_bfd, input_section, rel->r_offset, true);
+	      break;
+
+	    case bfd_reloc_outofrange:
+	      error_message = _("out of range");
+	      goto common_error;
+
+	    case bfd_reloc_notsupported:
+	      error_message = _("unsupported relocation");
+	      goto common_error;
+
+	    case bfd_reloc_dangerous:
+	      /* error_message should already be set.  */
+	      goto common_error;
+
+	    default:
+	      error_message = _("unknown error");
+	      /* Fall through.  */
+
+	    common_error:
+	      BFD_ASSERT (error_message != NULL);
+	      (*info->callbacks->reloc_dangerous)
+                      (info, error_message, input_bfd, input_section, rel->r_offset);
+	      break;
+	    }
+	}
+
+      if (!save_addend)
+	addend = 0;
+    }
+
+  return true;
+}
+
+/* Set the right machine number.  */
+
+static bool
+elfNN_kvx_object_p (bfd *abfd)
+{
+  /* must be coherent with default arch in cpu-kvx.c */
+  int e_set = bfd_mach_kv3_1;
+
+  if (elf_elfheader (abfd)->e_machine == EM_KVX)
+    {
+      int e_core = elf_elfheader (abfd)->e_flags & ELF_KVX_CORE_MASK;
+      switch(e_core)
+	{
+#if ARCH_SIZE == 64
+	case ELF_KVX_CORE_KV3_1 : e_set = bfd_mach_kv3_1_64; break;
+	case ELF_KVX_CORE_KV3_2 : e_set = bfd_mach_kv3_2_64; break;
+	case ELF_KVX_CORE_KV4_1 : e_set = bfd_mach_kv4_1_64; break;
+#else
+	case ELF_KVX_CORE_KV3_1 : e_set = bfd_mach_kv3_1; break;
+	case ELF_KVX_CORE_KV3_2 : e_set = bfd_mach_kv3_2; break;
+	case ELF_KVX_CORE_KV4_1 : e_set = bfd_mach_kv4_1; break;
+#endif
+	default:
+	  (*_bfd_error_handler)(_("%s: Bad ELF id: `%d'"),
+				abfd->filename, e_core);
+	}
+    }
+  return bfd_default_set_arch_mach (abfd, bfd_arch_kvx, e_set);
+    
+}
+
+/* Function to keep KVX specific flags in the ELF header.  */
+
+static bool
+elfNN_kvx_set_private_flags (bfd *abfd, flagword flags)
+{
+  if (elf_flags_init (abfd) && elf_elfheader (abfd)->e_flags != flags)
+    {
+    }
+  else
+    {
+      elf_elfheader (abfd)->e_flags = flags;
+      elf_flags_init (abfd) = true;
+    }
+
+  return true;
+}
+
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bool
+elfNN_kvx_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
+{
+        bfd *obfd = info->output_bfd;
+  flagword out_flags;
+  flagword in_flags;
+  bool flags_compatible = true;
+  asection *sec;
+
+  /* Check if we have the same endianess.  */
+  if (!_bfd_generic_verify_endian_match (ibfd, info))
+    return false;
+
+  if (!is_kvx_elf (ibfd) || !is_kvx_elf (obfd))
+    return true;
+
+  /* The input BFD must have had its flags initialised.  */
+  /* The following seems bogus to me -- The flags are initialized in
+     the assembler but I don't think an elf_flags_init field is
+     written into the object.  */
+  /* BFD_ASSERT (elf_flags_init (ibfd)); */
+
+  if (bfd_get_arch_size (ibfd) != bfd_get_arch_size (obfd))
+    {
+      const char *msg;
+
+      if (bfd_get_arch_size (ibfd) == 32
+	  && bfd_get_arch_size (obfd) == 64)
+	msg = _("%s: compiled as 32-bit object and %s is 64-bit");
+      else if (bfd_get_arch_size (ibfd) == 64
+	       && bfd_get_arch_size (obfd) == 32)
+	msg = _("%s: compiled as 64-bit object and %s is 32-bit");
+      else
+	msg = _("%s: object size does not match that of target %s");
+
+      (*_bfd_error_handler) (msg, bfd_get_filename (ibfd),
+			     bfd_get_filename (obfd));
+      bfd_set_error (bfd_error_wrong_format);
+      return false;
+    }
+
+  in_flags = elf_elfheader (ibfd)->e_flags;
+  out_flags = elf_elfheader (obfd)->e_flags;
+
+  if (!elf_flags_init (obfd))
+    {
+      /* If the input is the default architecture and had the default
+         flags then do not bother setting the flags for the output
+         architecture, instead allow future merges to do this.  If no
+         future merges ever set these flags then they will retain their
+         uninitialised values, which surprise surprise, correspond
+         to the default values.  */
+      if (bfd_get_arch_info (ibfd)->the_default
+	  && elf_elfheader (ibfd)->e_flags == 0)
+	return true;
+
+      elf_flags_init (obfd) = true;
+      elf_elfheader (obfd)->e_flags = in_flags;
+
+      if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
+	  && bfd_get_arch_info (obfd)->the_default)
+	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
+				  bfd_get_mach (ibfd));
+
+      return true;
+    }
+
+  /* Identical flags must be compatible.  */
+  if (in_flags == out_flags)
+    return true;
+
+  /* Check to see if the input BFD actually contains any sections.  If
+     not, its flags may not have been initialised either, but it
+     cannot actually cause any incompatiblity.  Do not short-circuit
+     dynamic objects; their section list may be emptied by
+     elf_link_add_object_symbols.
+
+     Also check to see if there are no code sections in the input.
+     In this case there is no need to check for code specific flags.
+     XXX - do we need to worry about floating-point format compatability
+     in data sections ?  */
+  if (!(ibfd->flags & DYNAMIC))
+          {
+                  bool null_input_bfd = true;
+                  bool only_data_sections = true;
+
+                  for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+                          {
+                                  if ((bfd_section_flags (sec)
+                                                  & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+                                          == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+                                          only_data_sections = false;
+
+                                  null_input_bfd = false;
+                                  break;
+                          }
+
+                  if (null_input_bfd || only_data_sections)
+                          return true;
+          }
+  return flags_compatible;
+}
+
+/* Display the flags field.  */
+
+static bool
+elfNN_kvx_print_private_bfd_data (bfd *abfd, void *ptr)
+{
+  FILE *file = (FILE *) ptr;
+  unsigned long flags;
+
+  BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+  /* Print normal ELF private data.  */
+  _bfd_elf_print_private_bfd_data (abfd, ptr);
+
+  flags = elf_elfheader (abfd)->e_flags;
+  /* Ignore init flag - it may not be set, despite the flags field
+     containing valid data.  */
+
+  /* xgettext:c-format */
+  fprintf (file, _("Private flags = 0x%lx : "), elf_elfheader (abfd)->e_flags);
+  if((flags & ELF_KVX_ABI_64B_ADDR_BIT) == ELF_KVX_ABI_64B_ADDR_BIT)
+    {
+      if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_1))
+	fprintf (file, _("Coolidge (kv3) V1 64 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_2))
+	fprintf (file, _("Coolidge (kv3) V2 64 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV4_1))
+	fprintf (file, _("Coolidge (kv4) V1 64 bits"));
+    }
+  else
+    {
+      if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_1))
+	fprintf (file, _("Coolidge (kv3) V1 32 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_2))
+	fprintf (file, _("Coolidge (kv3) V2 32 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV4_1))
+	fprintf (file, _("Coolidge (kv4) V1 32 bits"));
+    }
+  
+  fputc ('\n', file);
+
+  return true;
+}
+
+/* Adjust a symbol defined by a dynamic object and referenced by a
+   regular object.  The current definition is in some section of the
+   dynamic object, but we're not including those sections.  We have to
+   change the definition to something the rest of the link can
+   understand.	*/
+
+static bool
+elfNN_kvx_adjust_dynamic_symbol (struct bfd_link_info *info,
+				     struct elf_link_hash_entry *h)
+{
+  struct elf_kvx_link_hash_table *htab;
+  asection *s;
+
+  /* If this is a function, put it in the procedure linkage table.  We
+     will fill in the contents of the procedure linkage table later,
+     when we know the address of the .got section.  */
+  if (h->type == STT_FUNC || h->needs_plt)
+    {
+      if (h->plt.refcount <= 0
+	  || ((SYMBOL_CALLS_LOCAL (info, h)
+		  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+		      && h->root.type == bfd_link_hash_undefweak))))
+	{
+	  /* This case can occur if we saw a CALL26 reloc in
+	     an input file, but the symbol wasn't referred to
+	     by a dynamic object or all references were
+	     garbage collected. In which case we can end up
+	     resolving.  */
+	  h->plt.offset = (bfd_vma) - 1;
+	  h->needs_plt = 0;
+	}
+
+      return true;
+    }
+  else
+    /* Otherwise, reset to -1.  */
+    h->plt.offset = (bfd_vma) - 1;
+
+
+  /* If this is a weak symbol, and there is a real definition, the
+     processor independent code will have arranged for us to see the
+     real definition first, and we can just use the same value.  */
+  if (h->is_weakalias)
+    {
+            struct elf_link_hash_entry *def = weakdef (h);
+            BFD_ASSERT (def->root.type == bfd_link_hash_defined);
+            h->root.u.def.section = def->root.u.def.section;
+            h->root.u.def.value = def->root.u.def.value;
+            if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
+                    h->non_got_ref = def->non_got_ref;
+            return true;
+    }
+
+  /* If we are creating a shared library, we must presume that the
+     only references to the symbol are via the global offset table.
+     For such cases we need not do anything here; the relocations will
+     be handled correctly by relocate_section.  */
+  if (bfd_link_pic (info))
+    return true;
+
+  /* If there are no references to this symbol that do not use the
+     GOT, we don't need to generate a copy reloc.  */
+  if (!h->non_got_ref)
+    return true;
+
+  /* If -z nocopyreloc was given, we won't generate them either.  */
+  if (info->nocopyreloc)
+    {
+      h->non_got_ref = 0;
+      return true;
+    }
+
+  /* We must allocate the symbol in our .dynbss section, which will
+     become part of the .bss section of the executable.  There will be
+     an entry for this symbol in the .dynsym section.  The dynamic
+     object will contain position independent code, so all references
+     from the dynamic object to this symbol will go through the global
+     offset table.  The dynamic linker will use the .dynsym entry to
+     determine the address it must put in the global offset table, so
+     both the dynamic object and the regular object will refer to the
+     same memory location for the variable.  */
+
+  htab = elf_kvx_hash_table (info);
+
+  /* We must generate a R_KVX_COPY reloc to tell the dynamic linker
+     to copy the initial value out of the dynamic object and into the
+     runtime process image.  */
+  if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
+    {
+      htab->srelbss->size += RELOC_SIZE (htab);
+      h->needs_copy = 1;
+    }
+
+  s = htab->sdynbss;
+
+  return _bfd_elf_adjust_dynamic_copy (info, h, s);
+
+}
+
+static bool
+elfNN_kvx_allocate_local_symbols (bfd *abfd, unsigned number)
+{
+  struct elf_kvx_local_symbol *locals;
+  locals = elf_kvx_locals (abfd);
+  if (locals == NULL)
+    {
+      locals = (struct elf_kvx_local_symbol *)
+	bfd_zalloc (abfd, number * sizeof (struct elf_kvx_local_symbol));
+      if (locals == NULL)
+	return false;
+      elf_kvx_locals (abfd) = locals;
+    }
+  return true;
+}
+
+/* Create the .got section to hold the global offset table.  */
+
+static bool
+kvx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  flagword flags;
+  asection *s;
+  struct elf_link_hash_entry *h;
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* This function may be called more than once.  */
+  s = bfd_get_linker_section (abfd, ".got");
+  if (s != NULL)
+    return true;
+
+  flags = bed->dynamic_sec_flags;
+
+  s = bfd_make_section_anyway_with_flags (abfd,
+					  (bed->rela_plts_and_copies_p
+					   ? ".rela.got" : ".rel.got"),
+					  (bed->dynamic_sec_flags
+					   | SEC_READONLY));
+  if (s == NULL
+          || !bfd_set_section_alignment (s, bed->s->log_file_align))
+
+    return false;
+  htab->srelgot = s;
+
+  s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
+  if (s == NULL
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
+    return false;
+  htab->sgot = s;
+  htab->sgot->size += GOT_ENTRY_SIZE;
+
+  if (bed->want_got_sym)
+    {
+      /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
+	 (or .got.plt) section.  We don't do this in the linker script
+	 because we don't want to define the symbol if we are not creating
+	 a global offset table.  */
+      h = _bfd_elf_define_linkage_sym (abfd, info, s,
+				       "_GLOBAL_OFFSET_TABLE_");
+      elf_hash_table (info)->hgot = h;
+      if (h == NULL)
+	return false;
+    }
+
+  if (bed->want_got_plt)
+    {
+      s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
+      if (s == NULL
+	  || !bfd_set_section_alignment (s,
+					 bed->s->log_file_align))
+	return false;
+      htab->sgotplt = s;
+    }
+
+  /* The first bit of the global offset table is the header.  */
+  s->size += bed->got_header_size;
+
+  /* we still need to handle got content when doing static link with PIC */
+  if (bfd_link_executable (info) && !bfd_link_pic (info)) {
+    htab->dynobj = abfd;
+  }
+
+  return true;
+}
+
+/* Look through the relocs for a section during the first phase.  */
+
+static bool
+elfNN_kvx_check_relocs (bfd *abfd, struct bfd_link_info *info,
+			    asection *sec, const Elf_Internal_Rela *relocs)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
+  asection *sreloc;
+
+  struct elf_kvx_link_hash_table *htab;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  BFD_ASSERT (is_kvx_elf (abfd));
+
+  htab = elf_kvx_hash_table (info);
+  sreloc = NULL;
+
+  symtab_hdr = &elf_symtab_hdr (abfd);
+  sym_hashes = elf_sym_hashes (abfd);
+
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      struct elf_link_hash_entry *h;
+      unsigned int r_symndx;
+      unsigned int r_type;
+      bfd_reloc_code_real_type bfd_r_type;
+      Elf_Internal_Sym *isym;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd, r_symndx);
+	  return false;
+	}
+
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* A local symbol.  */
+	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+					abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+
+          h = NULL;
+	}
+      else
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	}
+
+      /* Could be done earlier, if h were already available.  */
+      bfd_r_type = kvx_tls_transition (abfd, info, r_type, h, r_symndx);
+
+      if (h != NULL)
+	{
+	  /* Create the ifunc sections for static executables.  If we
+	     never see an indirect function symbol nor we are building
+	     a static executable, those sections will be empty and
+	     won't appear in output.  */
+	  switch (bfd_r_type)
+	    {
+	    default:
+	      break;
+	    }
+
+	  /* It is referenced by a non-shared object. */
+	  h->ref_regular = 1;
+	}
+
+      switch (bfd_r_type)
+	{
+
+	case BFD_RELOC_KVX_S43_LO10:
+	case BFD_RELOC_KVX_S43_UP27:
+	case BFD_RELOC_KVX_S43_EX6:
+
+	case BFD_RELOC_KVX_S37_LO10:
+	case BFD_RELOC_KVX_S37_UP27:
+
+	case BFD_RELOC_KVX_S64_LO10:
+	case BFD_RELOC_KVX_S64_UP27:
+	case BFD_RELOC_KVX_S64_EX27:
+
+	case BFD_RELOC_KVX_32:
+	case BFD_RELOC_KVX_64:
+
+	  /* We don't need to handle relocs into sections not going into
+	     the "real" output.  */
+	  if ((sec->flags & SEC_ALLOC) == 0)
+	    break;
+
+	  if (h != NULL)
+	    {
+	      if (!bfd_link_pic (info))
+		h->non_got_ref = 1;
+
+	      h->plt.refcount += 1;
+	      h->pointer_equality_needed = 1;
+	    }
+
+	  /* No need to do anything if we're not creating a shared
+	     object.  */
+	  if (! bfd_link_pic (info))
+	    break;
+
+	  {
+	    struct elf_dyn_relocs *p;
+	    struct elf_dyn_relocs **head;
+
+	    /* We must copy these reloc types into the output file.
+	       Create a reloc section in dynobj and make room for
+	       this reloc.  */
+	    if (sreloc == NULL)
+	      {
+		if (htab->root.dynobj == NULL)
+		  htab->root.dynobj = abfd;
+
+		sreloc = _bfd_elf_make_dynamic_reloc_section
+		  (sec, htab->root.dynobj, LOG_FILE_ALIGN, abfd, /*rela? */ true);
+
+		if (sreloc == NULL)
+		  return false;
+	      }
+
+	    /* If this is a global symbol, we count the number of
+	       relocations we need for this symbol.  */
+	    if (h != NULL)
+	      {
+                head = &h->dyn_relocs;
+	      }
+	    else
+	      {
+		/* Track dynamic relocs needed for local syms too.
+		   We really need local syms available to do this
+		   easily.  Oh well.  */
+
+		asection *s;
+		void **vpp;
+
+		isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+					      abfd, r_symndx);
+		if (isym == NULL)
+		  return false;
+
+		s = bfd_section_from_elf_index (abfd, isym->st_shndx);
+		if (s == NULL)
+		  s = sec;
+
+		/* Beware of type punned pointers vs strict aliasing
+		   rules.  */
+		vpp = &(elf_section_data (s)->local_dynrel);
+		head = (struct elf_dyn_relocs **) vpp;
+	      }
+
+	    p = *head;
+	    if (p == NULL || p->sec != sec)
+	      {
+		bfd_size_type amt = sizeof *p;
+		p = ((struct elf_dyn_relocs *)
+		     bfd_zalloc (htab->root.dynobj, amt));
+		if (p == NULL)
+		  return false;
+		p->next = *head;
+		*head = p;
+		p->sec = sec;
+	      }
+
+	    p->count += 1;
+
+	  }
+	  break;
+
+	case BFD_RELOC_KVX_S37_GOT_LO10:
+	case BFD_RELOC_KVX_S37_GOT_UP27:
+
+	case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+	case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+	case BFD_RELOC_KVX_S43_GOT_LO10:
+	case BFD_RELOC_KVX_S43_GOT_UP27:
+	case BFD_RELOC_KVX_S43_GOT_EX6:
+
+	case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+	case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+	case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+	case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+	  {
+	    unsigned got_type;
+	    unsigned old_got_type;
+
+	    got_type = kvx_reloc_got_type (bfd_r_type);
+
+	    if (h)
+	      {
+		h->got.refcount += 1;
+		old_got_type = elf_kvx_hash_entry (h)->got_type;
+	      }
+	    else
+	      {
+		struct elf_kvx_local_symbol *locals;
+
+		if (!elfNN_kvx_allocate_local_symbols
+		    (abfd, symtab_hdr->sh_info))
+		  return false;
+
+		locals = elf_kvx_locals (abfd);
+		BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
+		locals[r_symndx].got_refcount += 1;
+		old_got_type = locals[r_symndx].got_type;
+	      }
+
+	    /* We will already have issued an error message if there
+	       is a TLS/non-TLS mismatch, based on the symbol type.
+	       So just combine any TLS types needed.  */
+	    if (old_got_type != GOT_UNKNOWN && old_got_type != GOT_NORMAL
+		&& got_type != GOT_NORMAL)
+	      got_type |= old_got_type;
+
+	    /* If the symbol is accessed by both IE and GD methods, we
+	       are able to relax.  Turn off the GD flag, without
+	       messing up with any other kind of TLS types that may be
+	       involved.  */
+	    /* Disabled untested and unused TLS */
+	    /* if ((got_type & GOT_TLS_IE) && GOT_TLS_GD_ANY_P (got_type)) */
+	    /*   got_type &= ~ (GOT_TLSDESC_GD | GOT_TLS_GD); */
+
+	    if (old_got_type != got_type)
+	      {
+		if (h != NULL)
+		  elf_kvx_hash_entry (h)->got_type = got_type;
+		else
+		  {
+		    struct elf_kvx_local_symbol *locals;
+		    locals = elf_kvx_locals (abfd);
+		    BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
+		    locals[r_symndx].got_type = got_type;
+		  }
+	      }
+
+	    if (htab->root.dynobj == NULL)
+	      htab->root.dynobj = abfd;
+	    if (! kvx_elf_create_got_section (htab->root.dynobj, info))
+	      return false;
+	    break;
+	  }
+
+	case BFD_RELOC_KVX_S64_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S64_GOTADDR_UP27:
+	case BFD_RELOC_KVX_S64_GOTADDR_EX27:
+
+	case BFD_RELOC_KVX_S43_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S43_GOTADDR_UP27:
+	case BFD_RELOC_KVX_S43_GOTADDR_EX6:
+
+	case BFD_RELOC_KVX_S37_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S37_GOTADDR_UP27:
+
+	    if (htab->root.dynobj == NULL)
+	      htab->root.dynobj = abfd;
+	    if (! kvx_elf_create_got_section (htab->root.dynobj, info))
+	      return false;
+	    break;
+
+	case BFD_RELOC_KVX_PCREL27:
+	case BFD_RELOC_KVX_PCREL17:
+	  /* If this is a local symbol then we resolve it
+	     directly without creating a PLT entry.  */
+	  if (h == NULL)
+	    continue;
+
+	  h->needs_plt = 1;
+	  if (h->plt.refcount <= 0)
+	    h->plt.refcount = 1;
+	  else
+	    h->plt.refcount += 1;
+	  break;
+
+	default:
+	  break;
+	}
+    }
+
+  return true;
+}
+
+static bool
+elfNN_kvx_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
+{
+  Elf_Internal_Ehdr *i_ehdrp;	/* ELF file header, internal form.  */
+
+  if (!_bfd_elf_init_file_header (abfd, link_info))
+    return false;
+
+  i_ehdrp = elf_elfheader (abfd);
+  i_ehdrp->e_ident[EI_ABIVERSION] = KVX_ELF_ABI_VERSION;
+  return true;
+}
+
+static enum elf_reloc_type_class
+elfNN_kvx_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+				const asection *rel_sec ATTRIBUTE_UNUSED,
+				const Elf_Internal_Rela *rela)
+{
+  switch ((int) ELFNN_R_TYPE (rela->r_info))
+    {
+    case R_KVX_RELATIVE:
+      return reloc_class_relative;
+    case R_KVX_JMP_SLOT:
+      return reloc_class_plt;
+    case R_KVX_COPY:
+      return reloc_class_copy;
+    default:
+      return reloc_class_normal;
+    }
+}
+
+/* A structure used to record a list of sections, independently
+   of the next and prev fields in the asection structure.  */
+typedef struct section_list
+{
+  asection *sec;
+  struct section_list *next;
+  struct section_list *prev;
+}
+section_list;
+
+typedef struct
+{
+  void *finfo;
+  struct bfd_link_info *info;
+  asection *sec;
+  int sec_shndx;
+  int (*func) (void *, const char *, Elf_Internal_Sym *,
+	       asection *, struct elf_link_hash_entry *);
+} output_arch_syminfo;
+
+/* Output a single local symbol for a generated stub.  */
+
+static bool
+elfNN_kvx_output_stub_sym (output_arch_syminfo *osi, const char *name,
+			       bfd_vma offset, bfd_vma size)
+{
+  Elf_Internal_Sym sym;
+
+  sym.st_value = (osi->sec->output_section->vma
+		  + osi->sec->output_offset + offset);
+  sym.st_size = size;
+  sym.st_other = 0;
+  sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
+  sym.st_shndx = osi->sec_shndx;
+  return osi->func (osi->finfo, name, &sym, osi->sec, NULL) == 1;
+}
+
+static bool
+kvx_map_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  asection *stub_sec;
+  bfd_vma addr;
+  char *stub_name;
+  output_arch_syminfo *osi;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_kvx_stub_hash_entry *) gen_entry;
+  osi = (output_arch_syminfo *) in_arg;
+
+  stub_sec = stub_entry->stub_sec;
+
+  /* Ensure this stub is attached to the current section being
+     processed.  */
+  if (stub_sec != osi->sec)
+    return true;
+
+  addr = (bfd_vma) stub_entry->stub_offset;
+
+  stub_name = stub_entry->output_name;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      if (!elfNN_kvx_output_stub_sym
+	  (osi, stub_name, addr, sizeof (elfNN_kvx_long_branch_stub)))
+	return false;
+      break;
+
+    default:
+      abort ();
+    }
+
+  return true;
+}
+
+/* Output mapping symbols for linker generated sections.  */
+
+static bool
+elfNN_kvx_output_arch_local_syms (bfd *output_bfd,
+				      struct bfd_link_info *info,
+				      void *finfo,
+				      int (*func) (void *, const char *,
+						   Elf_Internal_Sym *,
+						   asection *,
+						   struct elf_link_hash_entry
+						   *))
+{
+  output_arch_syminfo osi;
+  struct elf_kvx_link_hash_table *htab;
+
+  htab = elf_kvx_hash_table (info);
+
+  osi.finfo = finfo;
+  osi.info = info;
+  osi.func = func;
+
+  /* Long calls stubs.  */
+  if (htab->stub_bfd && htab->stub_bfd->sections)
+    {
+      asection *stub_sec;
+
+      for (stub_sec = htab->stub_bfd->sections;
+	   stub_sec != NULL; stub_sec = stub_sec->next)
+	{
+	  /* Ignore non-stub sections.  */
+	  if (!strstr (stub_sec->name, STUB_SUFFIX))
+	    continue;
+
+	  osi.sec = stub_sec;
+
+	  osi.sec_shndx = _bfd_elf_section_from_bfd_section
+	    (output_bfd, osi.sec->output_section);
+
+	  bfd_hash_traverse (&htab->stub_hash_table, kvx_map_one_stub,
+			     &osi);
+	}
+    }
+
+  /* Finally, output mapping symbols for the PLT.  */
+  if (!htab->root.splt || htab->root.splt->size == 0)
+    return true;
+
+  osi.sec_shndx = _bfd_elf_section_from_bfd_section
+    (output_bfd, htab->root.splt->output_section);
+  osi.sec = htab->root.splt;
+
+  return true;
+
+}
+
+/* Allocate target specific section data.  */
+
+static bool
+elfNN_kvx_new_section_hook (bfd *abfd, asection *sec)
+{
+  if (!sec->used_by_bfd)
+    {
+      _kvx_elf_section_data *sdata;
+      bfd_size_type amt = sizeof (*sdata);
+
+      sdata = bfd_zalloc (abfd, amt);
+      if (sdata == NULL)
+	return false;
+      sec->used_by_bfd = sdata;
+    }
+
+  return _bfd_elf_new_section_hook (abfd, sec);
+}
+
+/* Create dynamic sections. This is different from the ARM backend in that
+   the got, plt, gotplt and their relocation sections are all created in the
+   standard part of the bfd elf backend.  */
+
+static bool
+elfNN_kvx_create_dynamic_sections (bfd *dynobj,
+				       struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+
+  /* We need to create .got section.  */
+  if (!kvx_elf_create_got_section (dynobj, info))
+    return false;
+
+  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+    return false;
+
+  htab = elf_kvx_hash_table (info);
+  htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
+  if (!bfd_link_pic (info))
+    htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
+
+  if (!htab->sdynbss || (!bfd_link_pic (info) && !htab->srelbss))
+    abort ();
+
+  return true;
+}
+
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   dynamic relocs.  */
+
+static bool
+elfNN_kvx_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
+{
+  struct bfd_link_info *info;
+  struct elf_kvx_link_hash_table *htab;
+  struct elf_dyn_relocs *p;
+
+  /* An example of a bfd_link_hash_indirect symbol is versioned
+     symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
+     -> __gxx_personality_v0(bfd_link_hash_defined)
+
+     There is no need to process bfd_link_hash_indirect symbols here
+     because we will also be presented with the concrete instance of
+     the symbol and elfNN_kvx_copy_indirect_symbol () will have been
+     called to copy all relevant data from the generic to the concrete
+     symbol instance.
+   */
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  info = (struct bfd_link_info *) inf;
+  htab = elf_kvx_hash_table (info);
+
+  if (htab->root.dynamic_sections_created && h->plt.refcount > 0)
+    {
+      /* Make sure this symbol is output as a dynamic symbol.
+         Undefined weak syms won't yet be marked as dynamic.  */
+      if (h->dynindx == -1 && !h->forced_local)
+	{
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+      if (bfd_link_pic (info) || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
+	{
+	  asection *s = htab->root.splt;
+
+	  /* If this is the first .plt entry, make room for the special
+	     first entry.  */
+	  if (s->size == 0)
+	    s->size += htab->plt_header_size;
+
+	  h->plt.offset = s->size;
+
+	  /* If this symbol is not defined in a regular file, and we are
+	     not generating a shared library, then set the symbol to this
+	     location in the .plt.  This is required to make function
+	     pointers compare as equal between the normal executable and
+	     the shared library.  */
+	  if (!bfd_link_pic (info) && !h->def_regular)
+	    {
+	      h->root.u.def.section = s;
+	      h->root.u.def.value = h->plt.offset;
+	    }
+
+	  /* Make room for this entry. For now we only create the
+	     small model PLT entries. We later need to find a way
+	     of relaxing into these from the large model PLT entries.  */
+	  s->size += PLT_SMALL_ENTRY_SIZE;
+
+	  /* We also need to make an entry in the .got.plt section, which
+	     will be placed in the .got section by the linker script.  */
+	  htab->root.sgotplt->size += GOT_ENTRY_SIZE;
+
+	  /* We also need to make an entry in the .rela.plt section.  */
+	  htab->root.srelplt->size += RELOC_SIZE (htab);
+
+	  /* We need to ensure that all GOT entries that serve the PLT
+	     are consecutive with the special GOT slots [0] [1] and
+	     [2]. Any addtional relocations must be placed after the
+	     PLT related entries.  We abuse the reloc_count such that
+	     during sizing we adjust reloc_count to indicate the
+	     number of PLT related reserved entries.  In subsequent
+	     phases when filling in the contents of the reloc entries,
+	     PLT related entries are placed by computing their PLT
+	     index (0 .. reloc_count). While other none PLT relocs are
+	     placed at the slot indicated by reloc_count and
+	     reloc_count is updated.  */
+
+	  htab->root.srelplt->reloc_count++;
+	}
+      else
+	{
+	  h->plt.offset = (bfd_vma) - 1;
+	  h->needs_plt = 0;
+	}
+    }
+  else
+    {
+      h->plt.offset = (bfd_vma) - 1;
+      h->needs_plt = 0;
+    }
+
+  if (h->got.refcount > 0)
+    {
+      bool dyn;
+      unsigned got_type = elf_kvx_hash_entry (h)->got_type;
+
+      h->got.offset = (bfd_vma) - 1;
+
+      dyn = htab->root.dynamic_sections_created;
+
+      /* Make sure this symbol is output as a dynamic symbol.
+         Undefined weak syms won't yet be marked as dynamic.  */
+      if (dyn && h->dynindx == -1 && !h->forced_local)
+	{
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+      if (got_type == GOT_UNKNOWN)
+	{
+	  (*_bfd_error_handler)
+	    (_("relocation against `%s' has faulty GOT type "),
+	     (h) ? h->root.root.string : "a local symbol");
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
+      else if (got_type == GOT_NORMAL)
+	{
+	  h->got.offset = htab->root.sgot->size;
+	  htab->root.sgot->size += GOT_ENTRY_SIZE;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+	    {
+	      htab->root.srelgot->size += RELOC_SIZE (htab);
+	    }
+	}
+      else
+	{
+	  int indx;
+
+	  /* Any of these will require 2 GOT slots because
+	   * they use __tls_get_addr() */
+	  if (got_type & (GOT_TLS_GD | GOT_TLS_LD))
+	    {
+	      h->got.offset = htab->root.sgot->size;
+	      htab->root.sgot->size += GOT_ENTRY_SIZE * 2;
+	    }
+
+	  if (got_type & GOT_TLS_IE)
+	    {
+	      h->got.offset = htab->root.sgot->size;
+	      htab->root.sgot->size += GOT_ENTRY_SIZE;
+	    }
+
+	  indx = h && h->dynindx != -1 ? h->dynindx : 0;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || indx != 0
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+	    {
+	      /* Only the GD case requires 2 relocations. */
+	      if (got_type & GOT_TLS_GD)
+	      	htab->root.srelgot->size += RELOC_SIZE (htab) * 2;
+
+	      /* LD needs a DTPMOD reloc, IE needs a DTPOFF. */
+	      if (got_type & (GOT_TLS_LD | GOT_TLS_IE))
+	      	htab->root.srelgot->size += RELOC_SIZE (htab);
+	    }
+	}
+    }
+  else
+    {
+      h->got.offset = (bfd_vma) - 1;
+    }
+
+  if (h->dyn_relocs == NULL)
+    return true;
+
+  /* In the shared -Bsymbolic case, discard space allocated for
+     dynamic pc-relative relocs against symbols which turn out to be
+     defined in regular objects.  For the normal shared case, discard
+     space for pc-relative relocs that have become local due to symbol
+     visibility changes.  */
+
+  if (bfd_link_pic (info))
+    {
+      /* Relocs that use pc_count are those that appear on a call
+         insn, or certain REL relocs that can generated via assembly.
+         We want calls to protected symbols to resolve directly to the
+         function rather than going via the plt.  If people want
+         function pointer comparisons to work as expected then they
+         should avoid writing weird assembly.  */
+      if (SYMBOL_CALLS_LOCAL (info, h))
+	{
+	  struct elf_dyn_relocs **pp;
+
+          for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
+	    {
+	      p->count -= p->pc_count;
+	      p->pc_count = 0;
+	      if (p->count == 0)
+		*pp = p->next;
+	      else
+		pp = &p->next;
+	    }
+	}
+
+      /* Also discard relocs on undefined weak syms with non-default
+         visibility.  */
+      if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
+	{
+	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+	    h->dyn_relocs = NULL;
+
+	  /* Make sure undefined weak symbols are output as a dynamic
+	     symbol in PIEs.  */
+	  else if (h->dynindx == -1
+		   && !h->forced_local
+		   && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+    }
+  else if (ELIMINATE_COPY_RELOCS)
+    {
+      /* For the non-shared case, discard space for relocs against
+         symbols which turn out to need copy relocs or are not
+         dynamic.  */
+
+      if (!h->non_got_ref
+	  && ((h->def_dynamic
+	       && !h->def_regular)
+	      || (htab->root.dynamic_sections_created
+		  && (h->root.type == bfd_link_hash_undefweak
+		      || h->root.type == bfd_link_hash_undefined))))
+	{
+	  /* Make sure this symbol is output as a dynamic symbol.
+	     Undefined weak syms won't yet be marked as dynamic.  */
+	  if (h->dynindx == -1
+	      && !h->forced_local
+	      && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+
+	  /* If that succeeded, we know we'll be keeping all the
+	     relocs.  */
+	  if (h->dynindx != -1)
+	    goto keep;
+	}
+
+      h->dyn_relocs = NULL;
+
+    keep:;
+    }
+
+  /* Finally, allocate space.  */
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *sreloc;
+
+      sreloc = elf_section_data (p->sec)->sreloc;
+
+      BFD_ASSERT (sreloc != NULL);
+
+      sreloc->size += p->count * RELOC_SIZE (htab);
+    }
+
+  return true;
+}
+
+/* Find any dynamic relocs that apply to read-only sections.  */
+
+static bool
+kvx_readonly_dynrelocs (struct elf_link_hash_entry * h, void * inf)
+{
+  struct elf_dyn_relocs * p;
+
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *s = p->sec;
+
+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	{
+	  struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+	  info->flags |= DF_TEXTREL;
+
+	  /* Not an error, just cut short the traversal.  */
+	  return false;
+	}
+    }
+  return true;
+}
+
+/* This is the most important function of all . Innocuosly named
+   though !  */
+static bool
+elfNN_kvx_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				     struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+  bfd *dynobj;
+  asection *s;
+  bool relocs;
+  bfd *ibfd;
+
+  htab = elf_kvx_hash_table ((info));
+  dynobj = htab->root.dynobj;
+
+  BFD_ASSERT (dynobj != NULL);
+
+  if (htab->root.dynamic_sections_created)
+    {
+      if (bfd_link_executable (info) && !info->nointerp)
+	{
+	  s = bfd_get_linker_section (dynobj, ".interp");
+	  if (s == NULL)
+	    abort ();
+	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
+	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	}
+    }
+
+  /* Set up .got offsets for local syms, and space for local dynamic
+     relocs.  */
+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+    {
+      struct elf_kvx_local_symbol *locals = NULL;
+      Elf_Internal_Shdr *symtab_hdr;
+      asection *srel;
+      unsigned int i;
+
+      if (!is_kvx_elf (ibfd))
+	continue;
+
+      for (s = ibfd->sections; s != NULL; s = s->next)
+	{
+	  struct elf_dyn_relocs *p;
+
+	  for (p = (struct elf_dyn_relocs *)
+	       (elf_section_data (s)->local_dynrel); p != NULL; p = p->next)
+	    {
+	      if (!bfd_is_abs_section (p->sec)
+		  && bfd_is_abs_section (p->sec->output_section))
+		{
+		  /* Input section has been discarded, either because
+		     it is a copy of a linkonce section or due to
+		     linker script /DISCARD/, so we'll be discarding
+		     the relocs too.  */
+		}
+	      else if (p->count != 0)
+		{
+		  srel = elf_section_data (p->sec)->sreloc;
+		  srel->size += p->count * RELOC_SIZE (htab);
+		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+		    info->flags |= DF_TEXTREL;
+		}
+	    }
+	}
+
+      locals = elf_kvx_locals (ibfd);
+      if (!locals)
+	continue;
+
+      symtab_hdr = &elf_symtab_hdr (ibfd);
+      srel = htab->root.srelgot;
+      for (i = 0; i < symtab_hdr->sh_info; i++)
+	{
+	  locals[i].got_offset = (bfd_vma) - 1;
+	  if (locals[i].got_refcount > 0)
+	    {
+	      unsigned got_type = locals[i].got_type;
+	      if (got_type & (GOT_TLS_GD | GOT_TLS_LD))
+	      	{
+	      	  locals[i].got_offset = htab->root.sgot->size;
+	      	  htab->root.sgot->size += GOT_ENTRY_SIZE * 2;
+	      	}
+
+	      if (got_type & (GOT_NORMAL | GOT_TLS_IE ))
+		{
+		  locals[i].got_offset = htab->root.sgot->size;
+		  htab->root.sgot->size += GOT_ENTRY_SIZE;
+		}
+
+	      if (got_type == GOT_UNKNOWN)
+		{
+		}
+
+	      if (bfd_link_pic (info))
+		{
+		  if (got_type & GOT_TLS_GD)
+		    htab->root.srelgot->size += RELOC_SIZE (htab) * 2;
+
+		  if (got_type & GOT_TLS_IE
+		      || got_type & GOT_TLS_LD
+		      || got_type & GOT_NORMAL)
+		    htab->root.srelgot->size += RELOC_SIZE (htab);
+		}
+	    }
+	  else
+	    {
+	      locals[i].got_refcount = (bfd_vma) - 1;
+	    }
+	}
+    }
+
+
+  /* Allocate global sym .plt and .got entries, and space for global
+     sym dynamic relocs.  */
+  elf_link_hash_traverse (&htab->root, elfNN_kvx_allocate_dynrelocs,
+			  info);
+
+  /* For every jump slot reserved in the sgotplt, reloc_count is
+     incremented.  However, when we reserve space for TLS descriptors,
+     it's not incremented, so in order to compute the space reserved
+     for them, it suffices to multiply the reloc count by the jump
+     slot size.  */
+
+  if (htab->root.srelplt)
+    htab->sgotplt_jump_table_size = kvx_compute_jump_table_size (htab);
+
+  /* We now have determined the sizes of the various dynamic sections.
+     Allocate memory for them.  */
+  relocs = false;
+  for (s = dynobj->sections; s != NULL; s = s->next)
+    {
+      if ((s->flags & SEC_LINKER_CREATED) == 0)
+	continue;
+
+      if (s == htab->root.splt
+	  || s == htab->root.sgot
+	  || s == htab->root.sgotplt
+	  || s == htab->root.iplt
+	  || s == htab->root.igotplt || s == htab->sdynbss)
+	{
+	  /* Strip this section if we don't need it; see the
+	     comment below.  */
+	}
+      else if (startswith (bfd_section_name (s), ".rela"))
+	{
+	  if (s->size != 0 && s != htab->root.srelplt)
+	    relocs = true;
+
+	  /* We use the reloc_count field as a counter if we need
+	     to copy relocs into the output file.  */
+	  if (s != htab->root.srelplt)
+	    s->reloc_count = 0;
+	}
+      else
+	{
+	  /* It's not one of our sections, so don't allocate space.  */
+	  continue;
+	}
+
+      if (s->size == 0)
+	{
+	  /* If we don't need this section, strip it from the
+	     output file.  This is mostly to handle .rela.bss and
+	     .rela.plt.  We must create both sections in
+	     create_dynamic_sections, because they must be created
+	     before the linker maps input sections to output
+	     sections.  The linker does that before
+	     adjust_dynamic_symbol is called, and it is that
+	     function which decides whether anything needs to go
+	     into these sections.  */
+
+	  s->flags |= SEC_EXCLUDE;
+	  continue;
+	}
+
+      if ((s->flags & SEC_HAS_CONTENTS) == 0)
+	continue;
+
+      /* Allocate memory for the section contents.  We use bfd_zalloc
+         here in case unused entries are not reclaimed before the
+         section's contents are written out.  This should not happen,
+         but this way if it does, we get a R_KVX_NONE reloc instead
+         of garbage.  */
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
+      if (s->contents == NULL)
+	return false;
+    }
+
+  if (htab->root.dynamic_sections_created)
+    {
+      /* Add some entries to the .dynamic section.  We fill in the
+         values later, in elfNN_kvx_finish_dynamic_sections, but we
+         must add the entries now so that we get the correct size for
+         the .dynamic section.  The DT_DEBUG entry is filled in by the
+         dynamic linker and used by the debugger.  */
+#define add_dynamic_entry(TAG, VAL)			\
+      _bfd_elf_add_dynamic_entry (info, TAG, VAL)
+
+      if (bfd_link_executable (info))
+	{
+	  if (!add_dynamic_entry (DT_DEBUG, 0))
+	    return false;
+	}
+
+      if (htab->root.splt->size != 0)
+	{
+	  if (!add_dynamic_entry (DT_PLTGOT, 0)
+	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
+	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
+	      || !add_dynamic_entry (DT_JMPREL, 0))
+	    return false;
+	}
+
+      if (relocs)
+	{
+	  if (!add_dynamic_entry (DT_RELA, 0)
+	      || !add_dynamic_entry (DT_RELASZ, 0)
+	      || !add_dynamic_entry (DT_RELAENT, RELOC_SIZE (htab)))
+	    return false;
+
+	  /* If any dynamic relocs apply to a read-only section,
+	     then we need a DT_TEXTREL entry.  */
+	  if ((info->flags & DF_TEXTREL) == 0)
+	    elf_link_hash_traverse (& htab->root, kvx_readonly_dynrelocs,
+				    info);
+
+	  if ((info->flags & DF_TEXTREL) != 0)
+	    {
+	      if (!add_dynamic_entry (DT_TEXTREL, 0))
+		return false;
+	    }
+	}
+    }
+#undef add_dynamic_entry
+
+  return true;
+}
+
+static inline void
+elf_kvx_update_plt_entry (bfd *output_bfd,
+			      bfd_reloc_code_real_type r_type,
+			      bfd_byte *plt_entry, bfd_vma value)
+{
+  reloc_howto_type *howto = elfNN_kvx_howto_from_bfd_reloc (r_type);
+  BFD_ASSERT(howto != NULL);
+  _bfd_kvx_elf_put_addend (output_bfd, plt_entry, r_type, howto, value);
+}
+
+static void
+elfNN_kvx_create_small_pltn_entry (struct elf_link_hash_entry *h,
+                                   struct elf_kvx_link_hash_table
+                                   *htab, bfd *output_bfd)
+{
+  bfd_byte *plt_entry;
+  bfd_vma plt_index;
+  bfd_vma got_offset;
+  bfd_vma gotplt_entry_address;
+  bfd_vma plt_entry_address;
+  Elf_Internal_Rela rela;
+  bfd_byte *loc;
+  asection *plt, *gotplt, *relplt;
+
+  plt = htab->root.splt;
+  gotplt = htab->root.sgotplt;
+  relplt = htab->root.srelplt;
+
+  /* Get the index in the procedure linkage table which
+     corresponds to this symbol.  This is the index of this symbol
+     in all the symbols for which we are making plt entries.  The
+     first entry in the procedure linkage table is reserved.
+
+     Get the offset into the .got table of the entry that
+     corresponds to this function.	Each .got entry is GOT_ENTRY_SIZE
+     bytes. The first three are reserved for the dynamic linker.
+
+     For static executables, we don't reserve anything.  */
+
+  if (plt == htab->root.splt)
+    {
+      plt_index = (h->plt.offset - htab->plt_header_size) / htab->plt_entry_size;
+      got_offset = (plt_index + 3) * GOT_ENTRY_SIZE;
+    }
+  else
+    {
+      plt_index = h->plt.offset / htab->plt_entry_size;
+      got_offset = plt_index * GOT_ENTRY_SIZE;
+    }
+
+  plt_entry = plt->contents + h->plt.offset;
+  plt_entry_address = plt->output_section->vma
+    + plt->output_offset + h->plt.offset;
+  gotplt_entry_address = gotplt->output_section->vma +
+    gotplt->output_offset + got_offset;
+
+  /* Copy in the boiler-plate for the PLTn entry.  */
+  memcpy (plt_entry, elfNN_kvx_small_plt_entry, PLT_SMALL_ENTRY_SIZE);
+
+  /* Patch the loading of the GOT entry, relative to the PLT entry
+   * address
+   */
+
+  /* Use 37bits offset for both 32 and 64bits mode */
+  /* Fill the LO10 of of lw $r9 = 0[$r14] */
+  elf_kvx_update_plt_entry(output_bfd, BFD_RELOC_KVX_S37_LO10,
+			  plt_entry+4,
+			  gotplt_entry_address - plt_entry_address);
+
+  /* Fill the UP27 of of lw $r9 = 0[$r14] */
+  elf_kvx_update_plt_entry(output_bfd, BFD_RELOC_KVX_S37_UP27,
+			  plt_entry+8,
+			  gotplt_entry_address - plt_entry_address);
+
+  rela.r_offset = gotplt_entry_address;
+
+  /* Fill in the entry in the .rela.plt section.  */
+  rela.r_info = ELFNN_R_INFO (h->dynindx, R_KVX_JMP_SLOT);
+  rela.r_addend = 0;
+
+  /* Compute the relocation entry to used based on PLT index and do
+     not adjust reloc_count. The reloc_count has already been adjusted
+     to account for this entry.  */
+  loc = relplt->contents + plt_index * RELOC_SIZE (htab);
+  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+}
+
+/* Size sections even though they're not dynamic.  We use it to setup
+   _TLS_MODULE_BASE_, if needed.  */
+
+static bool
+elfNN_kvx_always_size_sections (bfd *output_bfd,
+				    struct bfd_link_info *info)
+{
+  asection *tls_sec;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  tls_sec = elf_hash_table (info)->tls_sec;
+
+  if (tls_sec)
+    {
+      struct elf_link_hash_entry *tlsbase;
+
+      tlsbase = elf_link_hash_lookup (elf_hash_table (info),
+				      "_TLS_MODULE_BASE_", true, true, false);
+
+      if (tlsbase)
+	{
+	  struct bfd_link_hash_entry *h = NULL;
+	  const struct elf_backend_data *bed =
+	    get_elf_backend_data (output_bfd);
+
+	  if (!(_bfd_generic_link_add_one_symbol
+		(info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
+		 tls_sec, 0, NULL, false, bed->collect, &h)))
+	    return false;
+
+	  tlsbase->type = STT_TLS;
+	  tlsbase = (struct elf_link_hash_entry *) h;
+	  tlsbase->def_regular = 1;
+	  tlsbase->other = STV_HIDDEN;
+	  (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
+	}
+    }
+
+  return true;
+}
+
+/* Finish up dynamic symbol handling.  We set the contents of various
+   dynamic sections here.  */
+static bool
+elfNN_kvx_finish_dynamic_symbol (bfd *output_bfd,
+				     struct bfd_link_info *info,
+				     struct elf_link_hash_entry *h,
+				     Elf_Internal_Sym *sym)
+{
+  struct elf_kvx_link_hash_table *htab;
+  htab = elf_kvx_hash_table (info);
+
+  if (h->plt.offset != (bfd_vma) - 1)
+    {
+      asection *plt = NULL, *gotplt = NULL, *relplt = NULL;
+
+      /* This symbol has an entry in the procedure linkage table.  Set
+         it up.  */
+
+      if (htab->root.splt != NULL)
+	{
+	  plt = htab->root.splt;
+	  gotplt = htab->root.sgotplt;
+	  relplt = htab->root.srelplt;
+	}
+
+      /* This symbol has an entry in the procedure linkage table.  Set
+	 it up.	 */
+      if ((h->dynindx == -1
+	   && !((h->forced_local || bfd_link_executable (info))
+		&& h->def_regular
+		&& h->type == STT_GNU_IFUNC))
+	  || plt == NULL
+	  || gotplt == NULL
+	  || relplt == NULL)
+	abort ();
+
+      elfNN_kvx_create_small_pltn_entry (h, htab, output_bfd);
+      if (!h->def_regular)
+	{
+	  /* Mark the symbol as undefined, rather than as defined in
+	     the .plt section.  */
+	  sym->st_shndx = SHN_UNDEF;
+	  /* If the symbol is weak we need to clear the value.
+	     Otherwise, the PLT entry would provide a definition for
+	     the symbol even if the symbol wasn't defined anywhere,
+	     and so the symbol would never be NULL.  Leave the value if
+	     there were any relocations where pointer equality matters
+	     (this is a clue for the dynamic linker, to make function
+	     pointer comparisons work between an application and shared
+	     library).  */
+	  if (!h->ref_regular_nonweak || !h->pointer_equality_needed)
+	    sym->st_value = 0;
+	}
+    }
+
+  if (h->got.offset != (bfd_vma) - 1
+      && elf_kvx_hash_entry (h)->got_type == GOT_NORMAL)
+    {
+      Elf_Internal_Rela rela;
+      bfd_byte *loc;
+
+      /* This symbol has an entry in the global offset table.  Set it
+         up.  */
+      if (htab->root.sgot == NULL || htab->root.srelgot == NULL)
+	abort ();
+
+      rela.r_offset = (htab->root.sgot->output_section->vma
+		       + htab->root.sgot->output_offset
+		       + (h->got.offset & ~(bfd_vma) 1));
+
+#ifdef UGLY_DEBUG
+      printf("setting rela at offset 0x%x(0x%x + 0x%x + 0x%x) for %s\n",
+	     rela.r_offset,
+	     htab->root.sgot->output_section->vma,
+	     htab->root.sgot->output_offset,
+	     h->got.offset,
+	     h->root.root.string);
+#endif
+
+	if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h))
+	{
+	  if (!h->def_regular)
+	    return false;
+
+	  /* in case of PLT related GOT entry, it is not clear who is
+	     supposed to set the LSB of GOT entry...
+	     kvx_calculate_got_entry_vma() would be a good candidate,
+	     but it is not called currently
+	     So we are commenting it ATM
+	  */
+	  // BFD_ASSERT ((h->got.offset & 1) != 0);
+	  rela.r_info = ELFNN_R_INFO (0, R_KVX_RELATIVE);
+	  rela.r_addend = (h->root.u.def.value
+			   + h->root.u.def.section->output_section->vma
+			   + h->root.u.def.section->output_offset);
+	}
+      else
+	{
+	  BFD_ASSERT ((h->got.offset & 1) == 0);
+	  bfd_put_NN (output_bfd, (bfd_vma) 0,
+		      htab->root.sgot->contents + h->got.offset);
+	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_KVX_GLOB_DAT);
+	  rela.r_addend = 0;
+	}
+
+      loc = htab->root.srelgot->contents;
+      loc += htab->root.srelgot->reloc_count++ * RELOC_SIZE (htab);
+      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+    }
+
+  if (h->needs_copy)
+    {
+      Elf_Internal_Rela rela;
+      bfd_byte *loc;
+
+      /* This symbol needs a copy reloc.  Set it up.  */
+
+      if (h->dynindx == -1
+	  || (h->root.type != bfd_link_hash_defined
+	      && h->root.type != bfd_link_hash_defweak)
+	  || htab->srelbss == NULL)
+	abort ();
+
+      rela.r_offset = (h->root.u.def.value
+		       + h->root.u.def.section->output_section->vma
+		       + h->root.u.def.section->output_offset);
+      rela.r_info = ELFNN_R_INFO (h->dynindx, R_KVX_COPY);
+      rela.r_addend = 0;
+      loc = htab->srelbss->contents;
+      loc += htab->srelbss->reloc_count++ * RELOC_SIZE (htab);
+      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+    }
+
+  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute.  SYM may
+     be NULL for local symbols.  */
+  if (sym != NULL
+      && (h == elf_hash_table (info)->hdynamic
+	  || h == elf_hash_table (info)->hgot))
+    sym->st_shndx = SHN_ABS;
+
+  return true;
+}
+
+static void
+elfNN_kvx_init_small_plt0_entry (bfd *output_bfd ATTRIBUTE_UNUSED,
+				     struct elf_kvx_link_hash_table
+				     *htab)
+{
+  memcpy (htab->root.splt->contents, elfNN_kvx_small_plt0_entry,
+	  PLT_ENTRY_SIZE);
+  elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize =
+    PLT_ENTRY_SIZE;
+}
+
+static bool
+elfNN_kvx_finish_dynamic_sections (bfd *output_bfd,
+				       struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+  bfd *dynobj;
+  asection *sdyn;
+
+  htab = elf_kvx_hash_table (info);
+  dynobj = htab->root.dynobj;
+  sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+
+  if (htab->root.dynamic_sections_created)
+    {
+      ElfNN_External_Dyn *dyncon, *dynconend;
+
+      if (sdyn == NULL || htab->root.sgot == NULL)
+	abort ();
+
+      dyncon = (ElfNN_External_Dyn *) sdyn->contents;
+      dynconend = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->size);
+      for (; dyncon < dynconend; dyncon++)
+	{
+	  Elf_Internal_Dyn dyn;
+	  asection *s;
+
+	  bfd_elfNN_swap_dyn_in (dynobj, dyncon, &dyn);
+
+	  switch (dyn.d_tag)
+	    {
+	    default:
+	      continue;
+
+	    case DT_PLTGOT:
+	      s = htab->root.sgotplt;
+	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	      break;
+
+	    case DT_JMPREL:
+	      dyn.d_un.d_ptr = htab->root.srelplt->output_section->vma;
+	      break;
+
+	    case DT_PLTRELSZ:
+	      s = htab->root.srelplt;
+	      dyn.d_un.d_val = s->size;
+	      break;
+
+	    case DT_RELASZ:
+	      /* The procedure linkage table relocs (DT_JMPREL) should
+		 not be included in the overall relocs (DT_RELA).
+		 Therefore, we override the DT_RELASZ entry here to
+		 make it not include the JMPREL relocs.  Since the
+		 linker script arranges for .rela.plt to follow all
+		 other relocation sections, we don't have to worry
+		 about changing the DT_RELA entry.  */
+	      if (htab->root.srelplt != NULL)
+		{
+		  s = htab->root.srelplt;
+		  dyn.d_un.d_val -= s->size;
+		}
+	      break;
+	    }
+
+	  bfd_elfNN_swap_dyn_out (output_bfd, &dyn, dyncon);
+	}
+
+    }
+
+  /* Fill in the special first entry in the procedure linkage table.  */
+  if (htab->root.splt && htab->root.splt->size > 0)
+    {
+      elfNN_kvx_init_small_plt0_entry (output_bfd, htab);
+
+      elf_section_data (htab->root.splt->output_section)->
+	this_hdr.sh_entsize = htab->plt_entry_size;
+    }
+
+  if (htab->root.sgotplt)
+    {
+      if (bfd_is_abs_section (htab->root.sgotplt->output_section))
+	{
+	  (*_bfd_error_handler)
+	    (_("discarded output section: `%pA'"), htab->root.sgotplt);
+	  return false;
+	}
+
+      /* Fill in the first three entries in the global offset table.  */
+      if (htab->root.sgotplt->size > 0)
+	{
+	  bfd_put_NN (output_bfd, (bfd_vma) 0, htab->root.sgotplt->contents);
+
+	  /* Write GOT[1] and GOT[2], needed for the dynamic linker.  */
+	  bfd_put_NN (output_bfd,
+		      (bfd_vma) 0,
+		      htab->root.sgotplt->contents + GOT_ENTRY_SIZE);
+	  bfd_put_NN (output_bfd,
+		      (bfd_vma) 0,
+		      htab->root.sgotplt->contents + GOT_ENTRY_SIZE * 2);
+	}
+
+      if (htab->root.sgot)
+	{
+	  if (htab->root.sgot->size > 0)
+	    {
+	      bfd_vma addr =
+		sdyn ? sdyn->output_section->vma + sdyn->output_offset : 0;
+	      bfd_put_NN (output_bfd, addr, htab->root.sgot->contents);
+	    }
+	}
+
+      elf_section_data (htab->root.sgotplt->output_section)->
+	this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+    }
+
+  if (htab->root.sgot && htab->root.sgot->size > 0)
+    elf_section_data (htab->root.sgot->output_section)->this_hdr.sh_entsize
+      = GOT_ENTRY_SIZE;
+
+  return true;
+}
+
+/* Return address for Ith PLT stub in section PLT, for relocation REL
+   or (bfd_vma) -1 if it should not be included.  */
+
+static bfd_vma
+elfNN_kvx_plt_sym_val (bfd_vma i, const asection *plt,
+			   const arelent *rel ATTRIBUTE_UNUSED)
+{
+  return plt->vma + PLT_ENTRY_SIZE + i * PLT_SMALL_ENTRY_SIZE;
+}
+
+#define ELF_ARCH			bfd_arch_kvx
+#define ELF_MACHINE_CODE		EM_KVX
+#define ELF_MAXPAGESIZE			0x10000
+#define ELF_MINPAGESIZE			0x1000
+#define ELF_COMMONPAGESIZE		0x1000
+
+#define bfd_elfNN_bfd_link_hash_table_create    \
+  elfNN_kvx_link_hash_table_create
+
+#define bfd_elfNN_bfd_merge_private_bfd_data	\
+  elfNN_kvx_merge_private_bfd_data
+
+#define bfd_elfNN_bfd_print_private_bfd_data	\
+  elfNN_kvx_print_private_bfd_data
+
+#define bfd_elfNN_bfd_reloc_type_lookup		\
+  elfNN_kvx_reloc_type_lookup
+
+#define bfd_elfNN_bfd_reloc_name_lookup		\
+  elfNN_kvx_reloc_name_lookup
+
+#define bfd_elfNN_bfd_set_private_flags		\
+  elfNN_kvx_set_private_flags
+
+#define bfd_elfNN_mkobject			\
+  elfNN_kvx_mkobject
+
+#define bfd_elfNN_new_section_hook		\
+  elfNN_kvx_new_section_hook
+
+#define elf_backend_adjust_dynamic_symbol	\
+  elfNN_kvx_adjust_dynamic_symbol
+
+#define elf_backend_always_size_sections	\
+  elfNN_kvx_always_size_sections
+
+#define elf_backend_check_relocs		\
+  elfNN_kvx_check_relocs
+
+#define elf_backend_copy_indirect_symbol	\
+  elfNN_kvx_copy_indirect_symbol
+
+/* Create .dynbss, and .rela.bss sections in DYNOBJ, and set up shortcuts
+   to them in our hash.  */
+#define elf_backend_create_dynamic_sections	\
+  elfNN_kvx_create_dynamic_sections
+
+#define elf_backend_init_index_section		\
+  _bfd_elf_init_2_index_sections
+
+#define elf_backend_finish_dynamic_sections	\
+  elfNN_kvx_finish_dynamic_sections
+
+#define elf_backend_finish_dynamic_symbol	\
+  elfNN_kvx_finish_dynamic_symbol
+
+#define elf_backend_object_p			\
+  elfNN_kvx_object_p
+
+#define elf_backend_output_arch_local_syms      \
+  elfNN_kvx_output_arch_local_syms
+
+#define elf_backend_plt_sym_val			\
+  elfNN_kvx_plt_sym_val
+
+#define elf_backend_init_file_header		\
+  elfNN_kvx_init_file_header
+
+#define elf_backend_init_process_headers	\
+  elfNN_kvx_init_process_headers
+
+#define elf_backend_relocate_section		\
+  elfNN_kvx_relocate_section
+
+#define elf_backend_reloc_type_class		\
+  elfNN_kvx_reloc_type_class
+
+#define elf_backend_size_dynamic_sections	\
+  elfNN_kvx_size_dynamic_sections
+
+#define elf_backend_can_refcount       1
+#define elf_backend_can_gc_sections    1
+#define elf_backend_plt_readonly       1
+#define elf_backend_want_got_plt       1
+#define elf_backend_want_plt_sym       0
+#define elf_backend_may_use_rel_p      0
+#define elf_backend_may_use_rela_p     1
+#define elf_backend_default_use_rela_p 1
+#define elf_backend_rela_normal        1
+#define elf_backend_got_header_size (GOT_ENTRY_SIZE * 3)
+#define elf_backend_default_execstack  0
+#define elf_backend_extern_protected_data 1
+#define elf_backend_hash_symbol elf_kvx_hash_symbol
+
+#include "elfNN-target.h"
diff --git a/bfd/elfxx-kvx-relocs.h b/bfd/elfxx-kvx-relocs.h
new file mode 100644
index 00000000000..7cfd0ff952c
--- /dev/null
+++ b/bfd/elfxx-kvx-relocs.h
@@ -0,0 +1,1105 @@
+/* KVX-specific relocations table.
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#ifdef KVX_KV3_V1_KV3_V2_KV4_V1
+static reloc_howto_type elf_kvx_howto_table[] =
+{
+  HOWTO (R_KVX_NONE,			/* type */
+	 0,				/* rightshift */
+	 0,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_NONE",			/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 false),			/* pcrel_offset */
+  HOWTO (R_KVX_16,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_16",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S16_PCREL,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S16_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_PCREL17,			/* type */
+	 2,				/* rightshift */
+	 3,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 17,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_PCREL17",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7fffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_PCREL27,			/* type */
+	 2,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_PCREL27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_32_PCREL,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_64_PCREL,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S16,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S16",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S32_LO5,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 5,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S32_LO5",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7c0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S32_UP27,			/* type */
+	 5,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S32_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32_GOTOFF,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_GOTOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_GOTOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_GOTOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32_GOT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_GOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOT_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOT_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOT_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOT_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_GOT,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_GOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_GLOB_DAT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_GLOB_DAT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_COPY,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_COPY",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_JMP_SLOT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_JMP_SLOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_RELATIVE,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_RELATIVE",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_64_DTPMOD,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_DTPMOD",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_DTPOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_DTPOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_DTPOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_DTPOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_DTPOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_DTPOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_GD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_GD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_GD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_GD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_TPOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_TPOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_IE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_IE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_IE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_IE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_8,			/* type */
+	 0,				/* rightshift */
+	 1,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 8,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_8",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xff,			/* dst_mask */
+	 false),			/* pc_offset */
+};
+
+#endif /* KVX_KV3_V1_KV3_V2_KV4_V1 */
diff --git a/bfd/elfxx-kvx.c b/bfd/elfxx-kvx.c
new file mode 100644
index 00000000000..fec2d88c152
--- /dev/null
+++ b/bfd/elfxx-kvx.c
@@ -0,0 +1,218 @@
+/* KVX-specific support for ELF.
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "elfxx-kvx.h"
+#include <stdarg.h>
+#include <string.h>
+
+/* Return non-zero if the indicated VALUE has overflowed the maximum
+   range expressible by a unsigned number with the indicated number of
+   BITS.  */
+
+static bfd_reloc_status_type
+kvx_unsigned_overflow (bfd_vma value, unsigned int bits)
+{
+  bfd_vma lim;
+  if (bits >= sizeof (bfd_vma) * 8)
+    return bfd_reloc_ok;
+  lim = (bfd_vma) 1 << bits;
+  if (value >= lim)
+    return bfd_reloc_overflow;
+  return bfd_reloc_ok;
+}
+
+/* Return non-zero if the indicated VALUE has overflowed the maximum
+   range expressible by an signed number with the indicated number of
+   BITS.  */
+
+static bfd_reloc_status_type
+kvx_signed_overflow (bfd_vma value, unsigned int bits)
+{
+  bfd_signed_vma svalue = (bfd_signed_vma) value;
+  bfd_signed_vma lim;
+
+  if (bits >= sizeof (bfd_vma) * 8)
+    return bfd_reloc_ok;
+  lim = (bfd_signed_vma) 1 << (bits - 1);
+  if (svalue < -lim || svalue >= lim)
+    return bfd_reloc_overflow;
+  return bfd_reloc_ok;
+}
+
+/* Insert the addend/value into the instruction or data object being
+   relocated.  */
+bfd_reloc_status_type
+_bfd_kvx_elf_put_addend (bfd *abfd,
+        bfd_byte *address, bfd_reloc_code_real_type r_type ATTRIBUTE_UNUSED,
+        reloc_howto_type *howto, bfd_signed_vma addend)
+{
+  bfd_reloc_status_type status = bfd_reloc_ok;
+  bfd_vma contents;
+  int size;
+
+  size = bfd_get_reloc_size (howto);
+  switch (size)
+    {
+    case 2:
+      contents = bfd_get_16 (abfd, address);
+      break;
+    case 4:
+      if (howto->src_mask != 0xffffffff)
+	/* Must be 32-bit instruction, always little-endian.  */
+	contents = bfd_getl32 (address);
+      else
+	/* Must be 32-bit data (endianness dependent).  */
+	contents = bfd_get_32 (abfd, address);
+      break;
+    case 8:
+      contents = bfd_get_64 (abfd, address);
+      break;
+    default:
+      abort ();
+    }
+
+  switch (howto->complain_on_overflow)
+    {
+    case complain_overflow_dont:
+      break;
+    case complain_overflow_signed:
+      status = kvx_signed_overflow (addend,
+					howto->bitsize + howto->rightshift);
+      break;
+    case complain_overflow_unsigned:
+      status = kvx_unsigned_overflow (addend,
+					  howto->bitsize + howto->rightshift);
+      break;
+    case complain_overflow_bitfield:
+    default:
+      abort ();
+    }
+
+  addend >>= howto->rightshift;
+
+  /* FIXME KVX : AARCH64 is "redoing" what the link_relocate bfd
+   * function does ie. extract bitfields and apply then to the
+   * existing content (insn) (howto's job) Not sure exactly
+   * why. Maybe because we need this even when not applying reloc
+   * against a input_bfd (eg. when doing PLT).  On KVX, we have not
+   * reached a point where we would need to write similar
+   * functions for each insn. So we'll simply enrich the default
+   * case for handling a bit more than "right aligned bitfields"
+   * 
+   * Beware that this won't be able to apply generic howto !
+   */
+
+  /* if (howto->dst_mask & (howto->dst_mask + 1)) */
+  /* 	return bfd_reloc_notsupported; */
+  addend <<= howto->bitpos;
+  contents = ((contents & ~howto->dst_mask) | (addend & howto->dst_mask));
+
+  switch (size)
+    {
+    case 2:
+      bfd_put_16 (abfd, contents, address);
+      break;
+    case 4:
+      if (howto->dst_mask != 0xffffffff)
+	/* must be 32-bit instruction, always little-endian */
+	bfd_putl32 (contents, address);
+      else
+	/* must be 32-bit data (endianness dependent) */
+	bfd_put_32 (abfd, contents, address);
+      break;
+    case 8:
+      bfd_put_64 (abfd, contents, address);
+      break;
+    default:
+      abort ();
+    }
+
+  return status;
+}
+
+bfd_vma
+_bfd_kvx_elf_resolve_relocation (bfd_reloc_code_real_type r_type ATTRIBUTE_UNUSED,
+        bfd_vma place ATTRIBUTE_UNUSED, bfd_vma value,
+        bfd_vma addend ATTRIBUTE_UNUSED, bool weak_undef_p ATTRIBUTE_UNUSED)
+{
+  return value;
+}
+
+bool
+_bfd_kvx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
+{
+  int offset;
+  size_t size;
+
+  switch (note->descsz)
+    {
+    case 680: /* sizeof(struct elf_prstatus) on Linux/kvx.  */
+      /* pr_cursig */
+      elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
+
+      /* pr_pid */
+      elf_tdata (abfd)->core->lwpid = bfd_get_32 (abfd, note->descdata + 32);
+
+      /* pr_reg */
+      offset = 112;
+      size = 560;
+      break;
+
+    default:
+      return false;
+    }
+
+  /* Make a ".reg/999" section.  */
+  return _bfd_elfcore_make_pseudosection (abfd, ".reg", size,
+					  note->descpos + offset);
+}
+
+bool
+_bfd_kvx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+  switch (note->descsz)
+    {
+    case 136: /* This is sizeof(struct elf_prpsinfo) on Linux/kvx.  */
+      elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24);
+      elf_tdata (abfd)->core->program
+	= _bfd_elfcore_strndup (abfd, note->descdata + 40, 16);
+      elf_tdata (abfd)->core->command
+	= _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
+      break;
+
+    default:
+      return false;
+    }
+
+  /* Note that for some reason, a spurious space is tacked
+     onto the end of the args in some (at least one anyway)
+     implementations, so strip it off if it exists.  */
+
+  {
+    char *command = elf_tdata (abfd)->core->command;
+    int n = strlen (command);
+
+    if (n > 0 && command[n - 1] == ' ')
+      command[n - 1] = 0;
+  }
+
+  return true;
+}
diff --git a/bfd/elfxx-kvx.h b/bfd/elfxx-kvx.h
new file mode 100644
index 00000000000..06ddc3c8616
--- /dev/null
+++ b/bfd/elfxx-kvx.h
@@ -0,0 +1,71 @@
+/* KVX-specific backend routines.
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "stdint.h"
+
+
+/* KVX stub generation support for ELF64.  Called from the linker.  */
+extern int elf64_kvx_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf64_kvx_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bool elf64_kvx_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bool elf64_kvx_build_stubs
+  (struct bfd_link_info *);
+/* Kvx stub generation support for ELF32.  Called from the linker.  */
+extern int elf32_kvx_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf32_kvx_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bool elf32_kvx_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bool elf32_kvx_build_stubs
+  (struct bfd_link_info *);
+
+
+extern bfd_reloc_status_type
+_bfd_kvx_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
+			     reloc_howto_type *, bfd_signed_vma);
+
+bfd_vma
+_bfd_kvx_elf_resolve_relocation (bfd_reloc_code_real_type r_type,
+				bfd_vma place, bfd_vma value,
+				bfd_vma addend, bool weak_undef_p);
+
+bool
+kvx_elf32_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd);
+bool
+kvx_elf64_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd);
+
+bool _bfd_kvx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note);
+
+bool _bfd_kvx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note);
+
+#define elf_backend_grok_prstatus _bfd_kvx_elf_grok_prstatus
+#define elf_backend_grok_psinfo _bfd_kvx_elf_grok_psinfo
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index d4fb3107597..32dc1a0c477 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -3031,6 +3031,91 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_MICROBLAZE_64_TLSTPREL",
   "BFD_RELOC_MICROBLAZE_64_TEXTPCREL",
   "BFD_RELOC_MICROBLAZE_64_TEXTREL",
+  "BFD_RELOC_KVX_RELOC_START",
+  "BFD_RELOC_KVX_NONE",
+  "BFD_RELOC_KVX_16",
+  "BFD_RELOC_KVX_32",
+  "BFD_RELOC_KVX_64",
+  "BFD_RELOC_KVX_S16_PCREL",
+  "BFD_RELOC_KVX_PCREL17",
+  "BFD_RELOC_KVX_PCREL27",
+  "BFD_RELOC_KVX_32_PCREL",
+  "BFD_RELOC_KVX_S37_PCREL_LO10",
+  "BFD_RELOC_KVX_S37_PCREL_UP27",
+  "BFD_RELOC_KVX_S43_PCREL_LO10",
+  "BFD_RELOC_KVX_S43_PCREL_UP27",
+  "BFD_RELOC_KVX_S43_PCREL_EX6",
+  "BFD_RELOC_KVX_S64_PCREL_LO10",
+  "BFD_RELOC_KVX_S64_PCREL_UP27",
+  "BFD_RELOC_KVX_S64_PCREL_EX27",
+  "BFD_RELOC_KVX_64_PCREL",
+  "BFD_RELOC_KVX_S16",
+  "BFD_RELOC_KVX_S32_LO5",
+  "BFD_RELOC_KVX_S32_UP27",
+  "BFD_RELOC_KVX_S37_LO10",
+  "BFD_RELOC_KVX_S37_UP27",
+  "BFD_RELOC_KVX_S37_GOTOFF_LO10",
+  "BFD_RELOC_KVX_S37_GOTOFF_UP27",
+  "BFD_RELOC_KVX_S43_GOTOFF_LO10",
+  "BFD_RELOC_KVX_S43_GOTOFF_UP27",
+  "BFD_RELOC_KVX_S43_GOTOFF_EX6",
+  "BFD_RELOC_KVX_32_GOTOFF",
+  "BFD_RELOC_KVX_64_GOTOFF",
+  "BFD_RELOC_KVX_32_GOT",
+  "BFD_RELOC_KVX_S37_GOT_LO10",
+  "BFD_RELOC_KVX_S37_GOT_UP27",
+  "BFD_RELOC_KVX_S43_GOT_LO10",
+  "BFD_RELOC_KVX_S43_GOT_UP27",
+  "BFD_RELOC_KVX_S43_GOT_EX6",
+  "BFD_RELOC_KVX_64_GOT",
+  "BFD_RELOC_KVX_GLOB_DAT",
+  "BFD_RELOC_KVX_COPY",
+  "BFD_RELOC_KVX_JMP_SLOT",
+  "BFD_RELOC_KVX_RELATIVE",
+  "BFD_RELOC_KVX_S43_LO10",
+  "BFD_RELOC_KVX_S43_UP27",
+  "BFD_RELOC_KVX_S43_EX6",
+  "BFD_RELOC_KVX_S64_LO10",
+  "BFD_RELOC_KVX_S64_UP27",
+  "BFD_RELOC_KVX_S64_EX27",
+  "BFD_RELOC_KVX_S37_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S37_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S43_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S43_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S43_GOTADDR_EX6",
+  "BFD_RELOC_KVX_S64_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S64_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S64_GOTADDR_EX27",
+  "BFD_RELOC_KVX_64_DTPMOD",
+  "BFD_RELOC_KVX_64_DTPOFF",
+  "BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10",
+  "BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6",
+  "BFD_RELOC_KVX_S37_TLS_GD_LO10",
+  "BFD_RELOC_KVX_S37_TLS_GD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_GD_LO10",
+  "BFD_RELOC_KVX_S43_TLS_GD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_GD_EX6",
+  "BFD_RELOC_KVX_S37_TLS_LD_LO10",
+  "BFD_RELOC_KVX_S37_TLS_LD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LD_LO10",
+  "BFD_RELOC_KVX_S43_TLS_LD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LD_EX6",
+  "BFD_RELOC_KVX_64_TPOFF",
+  "BFD_RELOC_KVX_S37_TLS_IE_LO10",
+  "BFD_RELOC_KVX_S37_TLS_IE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_IE_LO10",
+  "BFD_RELOC_KVX_S43_TLS_IE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_IE_EX6",
+  "BFD_RELOC_KVX_S37_TLS_LE_LO10",
+  "BFD_RELOC_KVX_S37_TLS_LE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LE_LO10",
+  "BFD_RELOC_KVX_S43_TLS_LE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LE_EX6",
+  "BFD_RELOC_KVX_8",
+  "BFD_RELOC_KVX_RELOC_END",
   "BFD_RELOC_AARCH64_RELOC_START",
   "BFD_RELOC_AARCH64_NULL",
   "BFD_RELOC_AARCH64_NONE",
diff --git a/bfd/po/BLD-POTFILES.in b/bfd/po/BLD-POTFILES.in
index 73b5cb86912..497c89f8f57 100644
--- a/bfd/po/BLD-POTFILES.in
+++ b/bfd/po/BLD-POTFILES.in
@@ -1,11 +1,13 @@
 bfdver.h
 elf32-aarch64.c
 elf32-ia64.c
+elf32-kvx.c
 elf32-loongarch.c
 elf32-riscv.c
 elf32-target.h
 elf64-aarch64.c
 elf64-ia64.c
+elf64-kvx.c
 elf64-loongarch.c
 elf64-riscv.c
 elf64-target.h
diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in
index a127ac0904c..c259931dc5b 100644
--- a/bfd/po/SRC-POTFILES.in
+++ b/bfd/po/SRC-POTFILES.in
@@ -69,6 +69,7 @@ cpu-ia64.c
 cpu-iamcu.c
 cpu-ip2k.c
 cpu-iq2000.c
+cpu-kvx.c
 cpu-lm32.c
 cpu-loongarch.c
 cpu-m10200.c
@@ -261,6 +262,7 @@ elfxx-aarch64.c
 elfxx-aarch64.h
 elfxx-ia64.c
 elfxx-ia64.h
+elfxx-kvx.c
 elfxx-loongarch.c
 elfxx-loongarch.h
 elfxx-mips.c
diff --git a/bfd/reloc.c b/bfd/reloc.c
index fbc67ac7280..e9d0082b0e4 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -6786,7 +6786,191 @@ ENUMDOC
   This is a 64 bit reloc that stores the 32 bit offset
   value in two words (with an imm instruction).  The relocation is
   relative offset from start of TEXT.
-
+ENUM
+  BFD_RELOC_KVX_RELOC_START
+ENUMDOC
+  KVX pseudo relocation code to mark the start of the KVX
+  relocation enumerators.  N.B. the order of the enumerators is
+  important as several tables in the KVX bfd backend are indexed
+  by these enumerators; make sure they are all synced.";
+ENUM
+  BFD_RELOC_KVX_NONE
+ENUMDOC
+  KVX null relocation code.
+ENUM
+BFD_RELOC_KVX_16
+ENUMX
+BFD_RELOC_KVX_32
+ENUMX
+BFD_RELOC_KVX_64
+ENUMX
+BFD_RELOC_KVX_S16_PCREL
+ENUMX
+BFD_RELOC_KVX_PCREL17
+ENUMX
+BFD_RELOC_KVX_PCREL27
+ENUMX
+BFD_RELOC_KVX_32_PCREL
+ENUMX
+BFD_RELOC_KVX_S37_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S37_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_EX6
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_EX27
+ENUMX
+BFD_RELOC_KVX_64_PCREL
+ENUMX
+BFD_RELOC_KVX_S16
+ENUMX
+BFD_RELOC_KVX_S32_LO5
+ENUMX
+BFD_RELOC_KVX_S32_UP27
+ENUMX
+BFD_RELOC_KVX_S37_LO10
+ENUMX
+BFD_RELOC_KVX_S37_UP27
+ENUMX
+BFD_RELOC_KVX_S37_GOTOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOTOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_EX6
+ENUMX
+BFD_RELOC_KVX_32_GOTOFF
+ENUMX
+BFD_RELOC_KVX_64_GOTOFF
+ENUMX
+BFD_RELOC_KVX_32_GOT
+ENUMX
+BFD_RELOC_KVX_S37_GOT_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOT_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOT_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOT_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOT_EX6
+ENUMX
+BFD_RELOC_KVX_64_GOT
+ENUMX
+BFD_RELOC_KVX_GLOB_DAT
+ENUMX
+BFD_RELOC_KVX_COPY
+ENUMX
+BFD_RELOC_KVX_JMP_SLOT
+ENUMX
+BFD_RELOC_KVX_RELATIVE
+ENUMX
+BFD_RELOC_KVX_S43_LO10
+ENUMX
+BFD_RELOC_KVX_S43_UP27
+ENUMX
+BFD_RELOC_KVX_S43_EX6
+ENUMX
+BFD_RELOC_KVX_S64_LO10
+ENUMX
+BFD_RELOC_KVX_S64_UP27
+ENUMX
+BFD_RELOC_KVX_S64_EX27
+ENUMX
+BFD_RELOC_KVX_S37_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_EX6
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_EX27
+ENUMX
+BFD_RELOC_KVX_64_DTPMOD
+ENUMX
+BFD_RELOC_KVX_64_DTPOFF
+ENUMX
+BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_GD_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_GD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LD_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_EX6
+ENUMX
+BFD_RELOC_KVX_64_TPOFF
+ENUMX
+BFD_RELOC_KVX_S37_TLS_IE_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_IE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LE_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_EX6
+ENUMX
+BFD_RELOC_KVX_8
+ENUMDOC
+  KVX Relocations.
+ENUM
+  BFD_RELOC_KVX_RELOC_END
+ENUMDOC
+  KVX pseudo relocation code to mark the end of the KVX
+  relocation enumerators that have direct mapping to ELF reloc codes.
+  There are a few more enumerators after this one; those are mainly
+  used by the KVX assembler for the internal fixup or to select
+  one of the above enumerators.
 ENUM
   BFD_RELOC_AARCH64_RELOC_START
 ENUMDOC
diff --git a/bfd/targets.c b/bfd/targets.c
index 3dbcd088966..b966685c2f0 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -769,6 +769,9 @@ extern const bfd_target ia64_elf64_vms_vec;
 extern const bfd_target ia64_pei_vec;
 extern const bfd_target ip2k_elf32_vec;
 extern const bfd_target iq2000_elf32_vec;
+extern const bfd_target kvx_elf32_vec;
+extern const bfd_target kvx_elf64_vec;
+extern const bfd_target kvx_elf64_linux_vec;
 extern const bfd_target lm32_elf32_vec;
 extern const bfd_target lm32_elf32_fdpic_vec;
 extern const bfd_target loongarch_elf64_vec;
@@ -1128,6 +1131,13 @@ static const bfd_target * const _bfd_target_vector[] =
 	&ip2k_elf32_vec,
 	&iq2000_elf32_vec,
 
+	&kvx_elf32_vec,
+
+#ifdef BFD64
+	&kvx_elf64_vec,
+	&kvx_elf64_linux_vec,
+#endif
+
 	&lm32_elf32_vec,
 
 	&m32c_elf32_vec,
-- 
2.35.1.500.gb896f729e2






^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 2/7] kvx: Add binutils files.
  2023-07-21  7:49 [PATCH 0/7] kvx: New port Paul Iannetta
  2023-07-21  7:49 ` [PATCH 1/7] kvx: Add bf files Paul Iannetta
@ 2023-07-21  7:49 ` Paul Iannetta
  2023-07-21  7:49 ` [PATCH 3/7] kvx: Add gas file Paul Iannetta
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Paul Iannetta @ 2023-07-21  7:49 UTC (permalink / raw)
  To: binutils; +Cc: Paul Iannetta

binutils/ChangeLog:

2023-07-20  Paul Iannetta  <piannetta@kalrayinc.com>

	* readelf.c (guess_is_rela): Add EM_KVX.
	(dump_relocations): Likewise.
	(get_machine_flags): Likewise.
	(is_32bit_abs_reloc): Likewise.
	(is_32bit_pcrel_reloc): Likewise.
	(is_64bit_abs_reloc): Likewise.
	(is_16bit_abs_reloc): Likewise.
	(is_none_reloc): Likewise.
	* testsuite/binutils-all/dw2-decodedline-2.S: New test.
	* testsuite/binutils-all/kvx/kvx.exp: New file.
	* testsuite/binutils-all/kvx/pcrel_bundle.d: New test.
	* testsuite/binutils-all/kvx/pcrel_bundle.s: New test.
	* testsuite/binutils-all/kvx/pcrel_bundle32bits.d: New test.
	* testsuite/binutils-all/kvx/pcrel_bundle32bits.s: New test.
	* testsuite/binutils-all/objcopy.exp:
	* testsuite/binutils-all/objdump.exp:
	* testsuite/lib/binutils-common.exp:
---
 binutils/readelf.c                            | 26 +++++++++++++
 .../binutils-all/dw2-decodedline-2.S          | 18 +++++++++
 binutils/testsuite/binutils-all/kvx/kvx.exp   | 37 +++++++++++++++++++
 .../testsuite/binutils-all/kvx/pcrel_bundle.d | 33 +++++++++++++++++
 .../testsuite/binutils-all/kvx/pcrel_bundle.s | 25 +++++++++++++
 .../binutils-all/kvx/pcrel_bundle32bits.d     | 33 +++++++++++++++++
 .../binutils-all/kvx/pcrel_bundle32bits.s     | 25 +++++++++++++
 binutils/testsuite/binutils-all/objcopy.exp   |  1 +
 binutils/testsuite/binutils-all/objdump.exp   |  2 +
 binutils/testsuite/lib/binutils-common.exp    |  6 +++
 10 files changed, 206 insertions(+)
 create mode 100644 binutils/testsuite/binutils-all/dw2-decodedline-2.S
 create mode 100644 binutils/testsuite/binutils-all/kvx/kvx.exp
 create mode 100644 binutils/testsuite/binutils-all/kvx/pcrel_bundle.d
 create mode 100644 binutils/testsuite/binutils-all/kvx/pcrel_bundle.s
 create mode 100644 binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.d
 create mode 100644 binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.s

diff --git a/binutils/readelf.c b/binutils/readelf.c
index bb488ef2a5e..d675440eddd 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -121,6 +121,7 @@
 #include "elf/i960.h"
 #include "elf/ia64.h"
 #include "elf/ip2k.h"
+#include "elf/kvx.h"
 #include "elf/lm32.h"
 #include "elf/iq2000.h"
 #include "elf/m32c.h"
@@ -1083,6 +1084,7 @@ guess_is_rela (unsigned int e_machine)
     case EM_IP2K:
     case EM_IP2K_OLD:
     case EM_IQ2000:
+    case EM_KVX:
     case EM_LATTICEMICO32:
     case EM_M32C_OLD:
     case EM_M32C:
@@ -1767,6 +1769,10 @@ dump_relocations (Filedata *filedata,
 	  rtype = elf_ia64_reloc_type (type);
 	  break;
 
+	case EM_KVX:
+	  rtype = elf_kvx_reloc_type (type);
+	  break;
+
 	case EM_CRIS:
 	  rtype = elf_cris_reloc_type (type);
 	  break;
@@ -4351,6 +4357,17 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine)
 	    strcat (buf, ", relocatable module");
 	  break;
 
+	case EM_KVX:
+	  if ((e_flags & (ELF_KVX_CORE_MAJOR_MASK | ELF_KVX_CORE_MINOR_MASK)) == ELF_KVX_CORE_KV3_1)
+	    strcat (buf, ", Kalray VLIW kv3-1");
+	  else if ((e_flags & (ELF_KVX_CORE_MAJOR_MASK | ELF_KVX_CORE_MINOR_MASK)) == ELF_KVX_CORE_KV3_2)
+	    strcat (buf, ", Kalray VLIW kv3-2");
+	  else if ((e_flags & (ELF_KVX_CORE_MAJOR_MASK | ELF_KVX_CORE_MINOR_MASK)) == ELF_KVX_CORE_KV4_1)
+	    strcat (buf, ", Kalray VLIW kv4-1");
+	  else
+	    strcat (buf, ", unknown KVX MPPA");
+	  break;
+
 	case EM_MSP430:
 	  strcat (buf, _(": architecture variant: "));
 	  switch (e_flags & EF_MSP430_MACH)
@@ -14385,6 +14402,8 @@ is_32bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
       return reloc_type == 2; /* R_IP2K_32.  */
     case EM_IQ2000:
       return reloc_type == 2; /* R_IQ2000_32.  */
+    case EM_KVX:
+      return reloc_type == 2; /* R_KVX_32.  */
     case EM_LATTICEMICO32:
       return reloc_type == 3; /* R_LM32_32.  */
     case EM_LOONGARCH:
@@ -14582,6 +14601,8 @@ is_32bit_pcrel_reloc (Filedata * filedata, unsigned int reloc_type)
     case EM_XTENSA_OLD:
     case EM_XTENSA:
       return reloc_type == 14; /* R_XTENSA_32_PCREL.  */
+    case EM_KVX:
+      return reloc_type == 7; /* R_KVX_32_PCREL */
     default:
       /* Do not abort or issue an error message here.  Not all targets use
 	 pc-relative 32-bit relocs in their DWARF debug information and we
@@ -14633,6 +14654,8 @@ is_64bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
       return reloc_type == 1; /* R_TILEGX_64.  */
     case EM_MIPS:
       return reloc_type == 18;	/* R_MIPS_64.  */
+    case EM_KVX:
+      return reloc_type == 3; /* R_KVX_64 */
     default:
       return false;
     }
@@ -14736,6 +14759,8 @@ is_16bit_abs_reloc (Filedata * filedata, unsigned int reloc_type)
     case EM_CYGNUS_MN10300:
     case EM_MN10300:
       return reloc_type == 2; /* R_MN10300_16.  */
+    case EM_KVX:
+      return reloc_type == 1; /* R_KVX_16 */
     case EM_MSP430:
       if (uses_msp430x_relocs (filedata))
 	return reloc_type == 2; /* R_MSP430_ABS16.  */
@@ -14998,6 +15023,7 @@ is_none_reloc (Filedata * filedata, unsigned int reloc_type)
     case EM_FT32:    /* R_FT32_NONE.  */
     case EM_IA_64:   /* R_IA64_NONE.  */
     case EM_K1OM:    /* R_X86_64_NONE.  */
+    case EM_KVX:      /* R_KVX_NONE.  */
     case EM_L1OM:    /* R_X86_64_NONE.  */
     case EM_M32R:    /* R_M32R_NONE.  */
     case EM_MIPS:    /* R_MIPS_NONE.  */
diff --git a/binutils/testsuite/binutils-all/dw2-decodedline-2.S b/binutils/testsuite/binutils-all/dw2-decodedline-2.S
new file mode 100644
index 00000000000..333cd3626a6
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw2-decodedline-2.S
@@ -0,0 +1,18 @@
+	.file	"dw2-decodedline.c"
+	.file 1 "dw2-decodedline.c"
+	.file 2 "directory/file1.c"
+	.text
+	.globl f1
+	.type	f1, %function
+f1:
+	.loc 2 1 0
+	nop
+	;;
+	.size	f1, .-f1
+	.globl main
+	.type	main, %function
+main:
+	.loc 1 2 0
+	nop
+	;;
+	.size	main, .-main
diff --git a/binutils/testsuite/binutils-all/kvx/kvx.exp b/binutils/testsuite/binutils-all/kvx/kvx.exp
new file mode 100644
index 00000000000..e096bebb65a
--- /dev/null
+++ b/binutils/testsuite/binutils-all/kvx/kvx.exp
@@ -0,0 +1,37 @@
+#   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+#   Contributed by Kalray SA.
+
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 3 of the License, or
+#   (at your option) any later version.
+
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+
+#   You should have received a copy of the GNU General Public License
+#   along with this program; see the file COPYING3. If not,
+#   see <http://www.gnu.org/licenses/>.  */
+
+if {!([istarget "kvx*-*-*"])
+    || ![is_elf_format]
+    || [is_remote host]} then {
+    return
+}
+
+global tempfile
+global copyfile
+set tempfile tmpdir/kvxtemp.o
+set copyfile tmpdir/kvxcopy
+
+## binutils test framework does not support the 'dump' EXTRA args to
+## simply share a single .s for 32 and 64bits test.
+# So we duplicate the source .s
+
+# 32bits test
+run_dump_test "pcrel_bundle32bits"
+
+# 64bits test
+run_dump_test "pcrel_bundle"
diff --git a/binutils/testsuite/binutils-all/kvx/pcrel_bundle.d b/binutils/testsuite/binutils-all/kvx/pcrel_bundle.d
new file mode 100644
index 00000000000..ff8df45bb0e
--- /dev/null
+++ b/binutils/testsuite/binutils-all/kvx/pcrel_bundle.d
@@ -0,0 +1,33 @@
+#name: pcrel_bundle
+#source: pcrel_bundle.s
+#PROG: objcopy
+#as:
+#objdump: -dr
+#...
+
+Disassembly of section .text:
+
+0000000000000000 <foo>:
+   0:	00 0e 00 f0 00 00 00 80 00 00 00 00             	pcrel \$r0 = 56 \(0x38\);;
+
+   c:	0d 00 00 98                                     	call 40 <bar>
+  10:	00 0b 00 f0 00 00 00 80 00 00 00 00             	pcrel \$r0 = 44 \(0x2c\);;
+
+  1c:	09 00 00 98                                     	call 40 <bar>
+  20:	00 07 00 f0 00 00 00 b8 00 00 00 80             	pcrel \$r0 = 28 \(0x1c\)
+  2c:	00 00 00 00                                     	ld \$r0 = 0 \(0x0\)\[\$r0\];;
+
+  30:	00 f0 03 7f                                     	nop;;
+
+  34:	00 f0 03 7f                                     	nop;;
+
+
+0000000000000038 <.table>:
+  38:	00 f0 03 7f                                     	nop;;
+
+  3c:	00 f0 03 7f                                     	nop;;
+
+
+0000000000000040 <bar>:
+  40:	00 f0 03 7f                                     	nop;;
+
diff --git a/binutils/testsuite/binutils-all/kvx/pcrel_bundle.s b/binutils/testsuite/binutils-all/kvx/pcrel_bundle.s
new file mode 100644
index 00000000000..feaa581ce8f
--- /dev/null
+++ b/binutils/testsuite/binutils-all/kvx/pcrel_bundle.s
@@ -0,0 +1,25 @@
+foo:
+	pcrel $r0 = @pcrel(.table)
+	;;
+	call bar
+	pcrel $r0 = @pcrel(.table)
+	;;
+	call bar
+	ld $r0 = 0[$r0]
+	pcrel $r0 = @pcrel(.table)
+	;;
+	nop
+	;;
+	nop
+	;;
+.table:
+	nop
+	;;
+	nop
+	;; 
+bar:
+	nop
+	;;
+	
+
+	
diff --git a/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.d b/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.d
new file mode 100644
index 00000000000..732b3c50507
--- /dev/null
+++ b/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.d
@@ -0,0 +1,33 @@
+#name: pcrel_bundle
+#source: pcrel_bundle.s
+#PROG: objcopy
+#as: -m32
+#objdump: -dr
+#...
+
+Disassembly of section .text:
+
+00000000 <foo>:
+   0:	00 0b 00 f0 00 00 00 00                         	pcrel \$r0 = 44 \(0x2c\);;
+
+   8:	0b 00 00 98                                     	call 34 <bar>
+   c:	00 09 00 f0 00 00 00 00                         	pcrel \$r0 = 36 \(0x24\);;
+
+  14:	08 00 00 98                                     	call 34 <bar>
+  18:	00 06 00 f0 00 00 00 b8                         	pcrel \$r0 = 24 \(0x18\)
+  20:	00 00 00 00                                     	ld \$r0 = 0 \(0x0\)\[\$r0\];;
+
+  24:	00 f0 03 7f                                     	nop;;
+
+  28:	00 f0 03 7f                                     	nop;;
+
+
+0000002c <.table>:
+  2c:	00 f0 03 7f                                     	nop;;
+
+  30:	00 f0 03 7f                                     	nop;;
+
+
+00000034 <bar>:
+  34:	00 f0 03 7f                                     	nop;;
+
diff --git a/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.s b/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.s
new file mode 100644
index 00000000000..feaa581ce8f
--- /dev/null
+++ b/binutils/testsuite/binutils-all/kvx/pcrel_bundle32bits.s
@@ -0,0 +1,25 @@
+foo:
+	pcrel $r0 = @pcrel(.table)
+	;;
+	call bar
+	pcrel $r0 = @pcrel(.table)
+	;;
+	call bar
+	ld $r0 = 0[$r0]
+	pcrel $r0 = @pcrel(.table)
+	;;
+	nop
+	;;
+	nop
+	;;
+.table:
+	nop
+	;;
+	nop
+	;; 
+bar:
+	nop
+	;;
+	
+
+	
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index 41add0fecda..16d9c8dad59 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -693,6 +693,7 @@ proc copy_setup { } {
     }
 
     if { [istarget *-*-linux*]
+	 || [istarget kvx-*-*]
 	 || [istarget *-*-gnu*] } {
 	foreach i $gcc_gas_flag {
 	    set flags "additional_flags=$i $flags"
diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp
index 28a7ad671cd..4fe9e499d49 100644
--- a/binutils/testsuite/binutils-all/objdump.exp
+++ b/binutils/testsuite/binutils-all/objdump.exp
@@ -482,6 +482,8 @@ if { ![is_elf_format]
 } else {
     if { [istarget "or1k*-*-*"] } then {
         set decodedline_testsrc $srcdir/$subdir/dw2-decodedline-1.S
+    } elseif { [istarget "kvx*-*-*"] } {
+        set decodedline_testsrc $srcdir/$subdir/dw2-decodedline-2.S
     } else {
         set decodedline_testsrc $srcdir/$subdir/dw2-decodedline.S
     }
diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index 7e6bf16ee6e..0dd9bae98fc 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -41,6 +41,7 @@ proc is_elf_format {} {
 	 && ![istarget *-*-irix5*]
 	 && ![istarget *-*-irix6*]
 	 && ![istarget *-*-kaos*]
+   && ![istarget kvx-*-*]
 	 && ![istarget *-*-*linux*]
 	 && ![istarget *-*-lynxos*]
 	 && ![istarget *-*-nacl*]
@@ -371,6 +372,11 @@ proc check_pie_support { } {
     global pie_available_saved
     global ld
 
+    ## kvx-*-cos does support -shared but not PIE.
+    if { [istarget "kvx-*-cos"] } {
+        set pie_available_saved 0
+    }
+
     if {![info exists pie_available_saved]} {
 	set ld_output [remote_exec host $ld "-pie"]
 	if { [ string first "not supported" $ld_output ] >= 0 } {
-- 
2.35.1.500.gb896f729e2






^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 3/7] kvx: Add gas file
  2023-07-21  7:49 [PATCH 0/7] kvx: New port Paul Iannetta
  2023-07-21  7:49 ` [PATCH 1/7] kvx: Add bf files Paul Iannetta
  2023-07-21  7:49 ` [PATCH 2/7] kvx: Add binutils files Paul Iannetta
@ 2023-07-21  7:49 ` Paul Iannetta
  2023-07-21  7:49 ` [PATCH 4/7] kvx: Add ld files Paul Iannetta
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 34+ messages in thread
From: Paul Iannetta @ 2023-07-21  7:49 UTC (permalink / raw)
  To: binutils; +Cc: Paul Iannetta

gas/ChangeLog:

2023-07-20  Paul Iannetta  <piannetta@kalrayinc.com>

	* Makefile.am: (TARGET_CPU_CFILES) Add config/tc-kvx.c.
	(TARGET_CPU_HFILES) Add config/tc-kvx.h.
	(TARGET_CPU_EXTRA_FILES) Add config/kvx-parse.{c,h}.
	* Makefile.in: Regenerate.
	* config/kvx-parse.c: New file.
	* config/kvx-parse.h: New file.
	* config/tc-kvx.c: New file.
	* config/tc-kvx.h: New file.
	* configure: Regenerate.
	* configure.ac: Handling of kvx-parse.{c,h} in extra_objects.
	* configure.tgt:
	(cpu) Add kvx.
	(generic_target) Add kvx-*-* and kvx-*-linux*.
	(cpu_type) Add kvx.
	* doc/all.texi: Add kvx.
	* doc/as.texi: Likewise.
	* doc/c-kvx.texi: New file.
	* doc/local.mk: Add c-kvx.texi
	* testsuite/gas/all/org-1.d: Disable on kvx.
	* testsuite/gas/elf/bad-bss.d: Add kvx.
	* testsuite/gas/elf/bss.d: Add kvx.
	* testsuite/gas/kvx/kvx.exp: New file.
	* testsuite/gas/kvx/nop-align.d: New test.
	* testsuite/gas/kvx/nop-align.s: New test.
	* testsuite/gas/lns/lns-common-1-kvx.s: New test.
	* testsuite/gas/lns/lns.exp: Specialiaze lns-common-1 to use
	  lns-common-1-kvx.s.
---
 gas/Makefile.am                          |     6 +-
 gas/Makefile.in                          |    18 +-
 gas/config/kvx-parse.c                   |  1018 +
 gas/config/kvx-parse.h                   | 33815 +++++++++++++++++++++
 gas/config/tc-kvx.c                      |  2673 ++
 gas/config/tc-kvx.h                      |   317 +
 gas/configure                            |    15 +-
 gas/configure.ac                         |     8 +
 gas/configure.tgt                        |     6 +-
 gas/doc/all.texi                         |     1 +
 gas/doc/as.texi                          |     7 +
 gas/doc/c-kvx.texi                       |   147 +
 gas/doc/local.mk                         |     1 +
 gas/testsuite/gas/all/org-1.d            |     1 +
 gas/testsuite/gas/elf/bad-bss.d          |     2 +-
 gas/testsuite/gas/elf/bss.d              |     2 +-
 gas/testsuite/gas/kvx/kvx.exp            |    23 +
 gas/testsuite/gas/kvx/nop-align.d        |    31 +
 gas/testsuite/gas/kvx/nop-align.s        |    35 +
 gas/testsuite/gas/lns/lns-common-1-kvx.s |    33 +
 gas/testsuite/gas/lns/lns.exp            |     2 +
 21 files changed, 38151 insertions(+), 10 deletions(-)
 create mode 100644 gas/config/kvx-parse.c
 create mode 100644 gas/config/kvx-parse.h
 create mode 100644 gas/config/tc-kvx.c
 create mode 100644 gas/config/tc-kvx.h
 create mode 100644 gas/doc/c-kvx.texi
 create mode 100644 gas/testsuite/gas/kvx/kvx.exp
 create mode 100644 gas/testsuite/gas/kvx/nop-align.d
 create mode 100644 gas/testsuite/gas/kvx/nop-align.s
 create mode 100644 gas/testsuite/gas/lns/lns-common-1-kvx.s

diff --git a/gas/Makefile.am b/gas/Makefile.am
index f8770e839d2..0e98ca3ec85 100644
--- a/gas/Makefile.am
+++ b/gas/Makefile.am
@@ -160,6 +160,7 @@ TARGET_CPU_CFILES = \
 	config/tc-i386.c \
 	config/tc-ip2k.c \
 	config/tc-iq2000.c \
+	config/tc-kvx.c \
 	config/tc-lm32.c \
 	config/tc-loongarch.c \
 	config/tc-m32c.c \
@@ -235,6 +236,7 @@ TARGET_CPU_HFILES = \
 	config/tc-i386.h \
 	config/tc-ip2k.h \
 	config/tc-iq2000.h \
+	config/tc-kvx.h \
 	config/tc-lm32.h \
 	config/tc-m32c.h \
 	config/tc-m32r.h \
@@ -286,7 +288,9 @@ TARGET_CPU_HFILES = \
 TARGET_EXTRA_FILES = \
 	config/bfin-lex-wrapper.c \
 	config/xtensa-relax.c \
-	config/xtensa-relax.h
+	config/xtensa-relax.h \
+	config/kvx-parse.h \
+	config/kvx-parse.c
 
 # OBJ files in config
 
diff --git a/gas/Makefile.in b/gas/Makefile.in
index 427f42dfa3a..4434bdc5653 100644
--- a/gas/Makefile.in
+++ b/gas/Makefile.in
@@ -176,8 +176,8 @@ am__objects_1 = app.$(OBJEXT) as.$(OBJEXT) atof-generic.$(OBJEXT) \
 am_as_new_OBJECTS = $(am__objects_1)
 am__dirstamp = $(am__leading_dot)dirstamp
 as_new_OBJECTS = $(am_as_new_OBJECTS)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = ../bfd/libbfd.la ../libiberty/libiberty.a
+am__DEPENDENCIES_1 = ../bfd/libbfd.la ../libiberty/libiberty.a
+am__DEPENDENCIES_2 =
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -185,7 +185,7 @@ am__v_lt_1 =
 am_itbl_test_OBJECTS = itbl-parse.$(OBJEXT) itbl-lex.$(OBJEXT)
 itbl_test_OBJECTS = $(am_itbl_test_OBJECTS)
 itbl_test_DEPENDENCIES = itbl-tops.@OBJEXT@ itbl-test.@OBJEXT@ \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1)
 SCRIPTS = $(noinst_SCRIPTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -647,6 +647,7 @@ TARGET_CPU_CFILES = \
 	config/tc-i386.c \
 	config/tc-ip2k.c \
 	config/tc-iq2000.c \
+	config/tc-kvx.c \
 	config/tc-lm32.c \
 	config/tc-loongarch.c \
 	config/tc-m32c.c \
@@ -722,6 +723,7 @@ TARGET_CPU_HFILES = \
 	config/tc-i386.h \
 	config/tc-ip2k.h \
 	config/tc-iq2000.h \
+	config/tc-kvx.h \
 	config/tc-lm32.h \
 	config/tc-m32c.h \
 	config/tc-m32r.h \
@@ -773,7 +775,9 @@ TARGET_CPU_HFILES = \
 TARGET_EXTRA_FILES = \
 	config/bfin-lex-wrapper.c \
 	config/xtensa-relax.c \
-	config/xtensa-relax.h
+	config/xtensa-relax.h \
+	config/kvx-parse.h \
+	config/kvx-parse.c
 
 
 # OBJ files in config
@@ -1128,6 +1132,8 @@ config/tc-ip2k.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
 config/tc-iq2000.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
+config/tc-kvx.$(OBJEXT): config/$(am__dirstamp) \
+	config/$(DEPDIR)/$(am__dirstamp)
 config/tc-lm32.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
 config/tc-loongarch.$(OBJEXT): config/$(am__dirstamp) \
@@ -1230,6 +1236,8 @@ config/bfin-lex-wrapper.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
 config/xtensa-relax.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
+config/kvx-parse.$(OBJEXT): config/$(am__dirstamp) \
+	config/$(DEPDIR)/$(am__dirstamp)
 config/te-vms.$(OBJEXT): config/$(am__dirstamp) \
 	config/$(DEPDIR)/$(am__dirstamp)
 config/obj-aout.$(OBJEXT): config/$(am__dirstamp) \
@@ -1344,6 +1352,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/e-i386coff.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/e-i386elf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/e-mipself.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/kvx-parse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/loongarch-lex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/loongarch-parse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/m68k-parse.Po@am__quote@
@@ -1382,6 +1391,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-ia64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-ip2k.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-iq2000.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-kvx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-lm32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-loongarch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@config/$(DEPDIR)/tc-m32c.Po@am__quote@
diff --git a/gas/config/kvx-parse.c b/gas/config/kvx-parse.c
new file mode 100644
index 00000000000..d9584a57b25
--- /dev/null
+++ b/gas/config/kvx-parse.c
@@ -0,0 +1,1018 @@
+/* kvx-parse.c -- Recursive decent parser driver for the KVX ISA
+
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of GAS.
+
+   GAS is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the license, or
+   (at your option) any later version.
+
+   GAS is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "as.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <elf/kvx_elfids.h>
+#include "kvx-parse.h"
+
+/* This is bad! */
+struct node_list_s {
+  struct node_s *node;
+  struct node_list_s *nxt;
+};
+
+struct node_s {
+  char *val;
+  int len;
+  struct node_list_s *succs;
+  int nb_succs;
+};
+
+\f
+
+static int
+has_relocation_of_size (const struct kvx_reloc **relocs)
+{
+  const int symbol_size = env.params.arch_size;
+
+  /*
+   * This is a bit hackish: in case of PCREL here, it means we are
+   * trying to fit a symbol in the insn, not a pseudo function
+   * (eg. @gotaddr, ...).
+   * We don't want to use a GOTADDR (pcrel) in any insn that tries to fit a symbol.
+   * One way to filter out these is to use the following assumption:
+   * - Any insn that accepts a pcrel immediate has only one immediate variant.
+   * Example:
+   * - call accepts only a pcrel27 -> allow pcrel reloc here
+   * - cb accepts only a pcrel17 -> allow pcrel reloc here
+   * - addd accepts signed10,37,64 -> deny pcrel reloc here
+   *
+   * The motivation here is to prevent the function to allow a 64bits
+   * symbol in a 37bits variant of any ALU insn (that would match with
+   * the GOTADDR 37bits reloc switch case below)
+   */
+
+  if (!relocs)
+    return 0;
+
+  struct kvx_reloc **relocs_it = (struct kvx_reloc **) relocs;
+  int has_only_one_p = relocs[0] && !relocs[1];
+
+  while (*relocs_it)
+    {
+      switch ((*relocs_it)->relative)
+      {
+	/* An absolute reloc needs a full size symbol reloc */
+	case KVX_REL_ABS:
+	  if ((*relocs_it)->bitsize >= symbol_size)
+	    return 1;
+	  break;
+
+	  /* Most likely relative jumps. Let something else check size is
+	     OK. We don't currently have several relocations for such insns */
+	case KVX_REL_PC:
+	  if (has_only_one_p)
+	    return 1;
+	  break;
+
+	  /* These relocations should be handled elsewhere with pseudo functions */
+	case KVX_REL_GP:
+	case KVX_REL_TP:
+	case KVX_REL_GOT:
+	case KVX_REL_BASE:
+	  break;
+      }
+      relocs_it++;
+    }
+
+  return 0;
+}
+
+struct pseudo_func *
+kvx_get_pseudo_func2 (symbolS * sym, struct kvx_reloc **relocs);
+struct pseudo_func *
+kvx_get_pseudo_func2 (symbolS *sym, struct kvx_reloc **relocs)
+{
+  if (!relocs)
+    return NULL;
+
+  struct kvx_reloc **relocs_it = (struct kvx_reloc **) relocs;
+
+  for (int i = 0; i < 26; i++)
+  {
+    if (sym == kvx_core_info->pseudo_funcs[i].sym)
+    {
+      relocs_it = relocs;
+      while (*relocs_it)
+	{
+	  if (*relocs_it == kvx_core_info->pseudo_funcs[i].pseudo_relocs.kreloc
+	      && (env.params.arch_size == (int) kvx_core_info->pseudo_funcs[i].pseudo_relocs.avail_modes
+		|| kvx_core_info->pseudo_funcs[i].pseudo_relocs.avail_modes == PSEUDO_ALL))
+	    return &kvx_core_info->pseudo_funcs[i];
+	  relocs_it++;
+	}
+    }
+  }
+
+  return NULL;
+}
+\f
+/* Trie */
+
+static
+struct node_list_s *
+insert_in_succ_list (struct node_s *node, struct node_s *base)
+{
+  struct node_list_s *new_hd = NULL;
+  if (!(new_hd = calloc (1, sizeof (*new_hd))))
+    return NULL;
+
+  new_hd->node = node;
+  new_hd->nxt = base->succs;
+  base->nb_succs += 1;
+  return new_hd;
+}
+
+static
+struct node_s *
+make_node (const char *str, int len)
+{
+  struct node_s *n = NULL;
+  if (!(n = calloc (1, sizeof (*n))))
+    goto err;
+
+  n->len = len;
+  n->succs = NULL;
+  if (!(n->val = calloc (n->len + 1, sizeof (*n->val))))
+    goto err1;
+
+  strncpy (n->val, str, n->len);
+  return n;
+
+err1:
+  free (n), n = NULL;
+err:
+  return NULL;
+}
+
+static
+struct node_s *
+insert (const char *str, struct node_s *node)
+{
+  int i = 0;
+  int len = strlen (str);
+
+  if (!node)
+    {
+      struct node_s *n = make_node (str, len);
+      n->succs = insert_in_succ_list (NULL, n);
+      return n;
+    }
+
+  while (i < len && i < node->len && str[i] == node->val[i])
+    ++i;
+
+  /* The strings share a prefix. */
+  if (i < len && i < node->len)
+    {
+      /* Split the current node on that common prefix. */
+
+      /* Create a new node with only the unshared suffix, and makes it inherit
+         the successor of the node under consideration. */
+      struct node_s *suf = make_node (node->val + i, node->len - i);
+      suf->succs = node->succs;
+      suf->nb_succs = node->nb_succs;
+      /* Insert the remainder on the other branch */
+      struct node_s *rem = make_node (str + i, len - i);
+      rem->succs = insert_in_succ_list (NULL, rem);
+
+      node->val[i] = '\0';
+      node->len = i;
+      node->succs = NULL;
+      node->nb_succs = 0;
+      node->succs = insert_in_succ_list (suf, node);
+      node->succs = insert_in_succ_list (rem, node);
+      return node;
+    }
+
+  /* str is a strict prefix of node->val */
+  if (i == len && i < node->len)
+    {
+      /* Split the current node at position */
+      struct node_s *suf = make_node (node->val + i, node->len - i);
+      suf->succs = node->succs;
+      suf->nb_succs = node->nb_succs;
+      node->val[i] = '\0';
+      node->len = i;
+      /* Insert an empty leaf */
+      node->succs = NULL;
+      node->nb_succs = 0;
+      node->succs = insert_in_succ_list (NULL, node);
+      node->succs = insert_in_succ_list (suf, node);
+      return node;
+    }
+
+  /* node->val is a prefix of str */
+  if (i == node->len)
+    {
+      /* Find a successor of node into which the remainder can be inserted. */
+      struct node_list_s *cur_succ = node->succs;
+      while (cur_succ)
+	{
+	  struct node_s *n = cur_succ->node;
+	  if (n && n->val && n->val[0] == str[i])
+	    {
+	      cur_succ->node = insert (str + i, cur_succ->node);
+	      break;
+	    }
+	  cur_succ = cur_succ->nxt;
+	}
+      /* No successor shares a common prefix */
+      if (cur_succ == NULL)
+	{
+	  struct node_s *suf = make_node (str + i, len - i);
+	  suf->succs = insert_in_succ_list (NULL, suf);
+	  node->succs = insert_in_succ_list (suf, node);
+	}
+      return node;
+    }
+
+  return node;
+}
+
+static
+void
+free_node (struct node_s *node)
+{
+  if (!node)
+    return;
+
+  free (node->val);
+
+  struct node_list_s *cur_succ = node->succs;
+  struct node_list_s *tmp = NULL;
+  while ((tmp = cur_succ))
+  {
+    struct node_s *n = cur_succ->node;
+    if (n)
+      free_node (n), n = NULL;
+    cur_succ = cur_succ->nxt;
+    free (tmp);
+  }
+
+  free (node);
+}
+
+#define max(a,b) (((a)>(b))?(a):(b))
+static
+int
+longest_match (const char *str, int len, struct node_s *node)
+{
+  int i = 0;
+  int last_mark = 0;
+  struct node_s *cur = node;
+
+  while (1)
+    {
+      if (i + cur->len > len
+	  || strncmp (str + i, cur->val, max(0, cur->len)))
+	return last_mark;
+
+      i += cur->len;
+      struct node_list_s *cur_succ = cur->succs;
+      cur = NULL;
+      while (cur_succ)
+	{
+	  struct node_s *n = cur_succ->node;
+	  if (!n)
+	    last_mark = i;
+	  else if (n->val[0] == str[i])
+	    cur = n;
+	  cur_succ = cur_succ->nxt;
+	}
+      if (!cur)
+	return last_mark;
+    }
+}
+
+__attribute__((unused))
+static void
+dump_graph_1 (FILE *fd, struct node_s *node, int id)
+{
+  struct node_list_s *cur_succ = node->succs;
+  int i = 0;
+
+  if (id == 1)
+    fprintf (fd, "\t%d [label=\"%s\"];\n", id, node->val);
+
+  while (cur_succ)
+    {
+      if (cur_succ->node == NULL)
+	fprintf (fd, "\t%d -> \"()\";\n", id);
+      else
+	{
+	  fprintf (fd, "\t%d [label=\"%s\"];\n",
+		   node->nb_succs * id + i, cur_succ->node->val);
+	  fprintf (fd, "\t%d -> %d;\n", id, node->nb_succs * id + i);
+	  dump_graph_1 (fd, cur_succ->node, node->nb_succs * id + i);
+	}
+      i += 1;
+      cur_succ = cur_succ->nxt;
+    }
+}
+
+__attribute__((unused))
+static void
+dump_graph (char *name, char *path, struct node_s *node)
+{
+  FILE *fd = fopen (path, "w");
+  fprintf (fd, "digraph %s {\n", name);
+
+  dump_graph_1 (fd, node, 1);
+
+  fprintf (fd, "}\n");
+  fclose (fd);
+}
+
+__attribute__((unused))
+static void
+print_n (const char *str, int n)
+{
+  for (int i = 0 ; i < n ; ++i)
+    putchar (str[i]);
+  putchar('\n');
+}
+
+\f
+int debug_level = 0;
+
+__attribute__((unused))
+static int
+printf_debug (int lvl, const char *fmt, ...)
+{
+  int ret = 0;
+  if (debug_level >= lvl)
+    {
+      va_list args;
+      va_start (args, fmt);
+      ret = vprintf (fmt, args);
+      va_end (args);
+    }
+
+  return ret;
+}
+
+static int
+is_delim (char c)
+{
+  char delims[] = { '[', ']', '?', ',', '=' };
+  int nb_delims = sizeof (delims) / (sizeof (*delims));
+  for (int i = 0; i < nb_delims; ++i)
+    if (c == delims[i])
+      return 1;
+  return 0;
+}
+
+#define TOKEN_STR(token) \
+__extension__({ \
+char __buf_##token[256] = { 0 }; \
+print_token(token, __buf_##token, 256), __buf_##token; \
+})
+
+__attribute__((unused))
+static void
+print_token (struct token_s token, char *buf, int bufsz)
+{
+  for (int i = 0; i < token.end - token.begin && i < bufsz; ++i)
+    buf[i] = token.insn[token.begin + i];
+  for (int i = token.end - token.begin ; i < bufsz; ++i)
+    buf[i] = 0;
+}
+
+static long long
+promote_token (struct token_s tok)
+{
+  long long cur_class = tok.class_id & -tok.class_id;
+  switch (tok.category)
+    {
+      case CAT_REGISTER:
+      case CAT_MODIFIER:
+	return (cur_class != tok.class_id)
+	  ? tok.class_id ^ cur_class
+	  : tok.class_id;
+      case CAT_IMMEDIATE:
+	{
+	  expressionS exp = { 0 };
+	  char *ilp_save = input_line_pointer;
+	  input_line_pointer = tok.insn + tok.begin;
+	  expression (&exp);
+	  input_line_pointer = ilp_save;
+	  long long new_class_id = tok.class_id;
+	  long long old_class_id = tok.class_id;
+	  while ((new_class_id = env.promote_immediate (old_class_id)) != old_class_id
+	      && ((exp.X_op == O_symbol && !has_relocation_of_size (str_hash_find (env.reloc_hash, TOKEN_NAME (new_class_id))))
+		|| (exp.X_op == 64 && !kvx_get_pseudo_func2 (exp.X_op_symbol, str_hash_find (env.reloc_hash, TOKEN_NAME (new_class_id))))))
+	    old_class_id = new_class_id;
+	  return new_class_id;
+	}
+      default:
+	return tok.class_id;
+    }
+}
+
+static int
+is_insn (const struct token_s *token, struct token_class *classes)
+{
+  int res = false;
+  int i = 0;
+  int tok_sz = token->end - token->begin;
+  char *tok = token->insn + token->begin;
+  while (!res && classes[i].class_values != NULL)
+    {
+      res = !strncmp (classes[i].class_values[0], tok, tok_sz);
+      i += 1;
+    }
+
+  return res;
+}
+
+static long long
+get_token_class (struct token_s *token, struct token_classes *classes, int insn_p, int modifier_p)
+{
+  int cur = 0;
+  int found = 0;
+  int tok_sz = token->end - token->begin;
+  char *tok = token->insn + token->begin;
+  expressionS exp = {0};
+
+  token->val = 0;
+  int token_val_p = 0;
+
+  struct token_class *class;
+  if (tok[0] == '$')
+    {
+      class = classes->reg_classes;
+      token->category = CAT_REGISTER;
+    }
+  else if (modifier_p && tok[0] == '.')
+    {
+      class = classes->mod_classes;
+      token->category = CAT_MODIFIER;
+    }
+  else if (isdigit (tok[0]) || tok[0] == '+' || tok[0] == '-')
+    {
+      class = classes->imm_classes;
+      token->category = CAT_IMMEDIATE;
+      char *ilp_save = input_line_pointer;
+      input_line_pointer = tok;
+      expression (&exp);
+      token->val = exp.X_add_number;
+      token_val_p = 1;
+      input_line_pointer = ilp_save;
+    }
+  else if (tok_sz == 1 && is_delim (tok[0]))
+    {
+      class = classes->sep_classes;
+      token->category = CAT_SEPARATOR;
+    }
+  else if (insn_p && is_insn (token, classes->insn_classes))
+    {
+      class = classes->insn_classes;
+      token->category = CAT_INSTRUCTION;
+    }
+  else
+    {
+      /* We are in fact dealing with a symbol.  */
+      class = classes->imm_classes;
+      token->category = CAT_IMMEDIATE;
+
+      char *ilp_save = input_line_pointer;
+      input_line_pointer = tok;
+      expression (&exp);
+
+      /* If the symbol can be resolved easily takes it value now.  Otherwise it
+         means that is either a symbol which will need a real relocation or an
+         internal fixup (ie, a pseudo-function, or a computation on symbols).  */
+      if (exp.X_op != O_symbol && exp.X_op != 64)
+	{
+	  token->val = exp.X_add_number;
+	  token_val_p = 1;
+	}
+
+      input_line_pointer = ilp_save;
+    }
+
+  if (class == classes->imm_classes)
+    {
+      unsigned long long uval = token_val_p
+	? token->val
+	: strtoull (tok + (tok[0] == '-') + (tok[0] == '+'), NULL, 0);
+      long long val = uval;
+      long long pval = val < 0 ? -val : val;
+      int neg_power2_p = val < 0 && !(pval & (pval - 1));
+      unsigned int len = 8 * sizeof (pval) - __builtin_clzll (pval);
+      for (; class[cur].class_id != -1
+	  && ((unsigned int) (class[cur].sz < 0 ? - class[cur].sz - !neg_power2_p : class[cur].sz) < len
+	      || (exp.X_op == O_symbol && !has_relocation_of_size (str_hash_find (env.reloc_hash, TOKEN_NAME (class[cur].class_id))))
+	      || (exp.X_op == 64 && !kvx_get_pseudo_func2 (exp.X_op_symbol, str_hash_find (env.reloc_hash, TOKEN_NAME (class[cur].class_id)))))
+	  ; ++cur)
+	;
+
+      token->val = uval;
+//      if (exp.X_op == 64)
+//	  token->val = (uintptr_t) !kvx_get_pseudo_func2 (exp.X_op_symbol, str_hash_find (env.reloc_hash, TOKEN_NAME (class[cur].class_id)));
+      found = 1;
+    }
+  else
+    {
+      do
+	{
+	  for (int i = 0; !found && i < class[cur].sz; ++i)
+	    {
+	      const char *ref = class[cur].class_values[i];
+	      found = ((long) strlen (ref) == tok_sz) && !strncmp (tok, ref, tok_sz);
+	      token->val = i;
+	    }
+
+	  cur += !(found);
+	}
+      while (!found && class[cur].class_id != -1);
+    }
+
+  if (!found)
+    {
+      token->category = CAT_IMMEDIATE;
+      return token->class_id = classes->imm_classes[0].class_id;
+    }
+
+#define unset(w, rg) ((w) & (~(1ULL << ((rg) - env.fst_reg))))
+  if (class == classes->reg_classes && !env.opts.allow_all_sfr)
+    return token->class_id = unset (class[cur].class_id, env.sys_reg);
+#undef unset
+
+  return token->class_id = class[cur].class_id;
+}
+
+static int
+read_token (struct token_s *tok)
+{
+  int insn_p = tok->begin == 0;
+  int modifier_p = 0;
+  char *str = tok->insn;
+  int *begin = &tok->begin;
+  int *end = &tok->end;
+
+  /* Eat up all leading spaces.  */
+  while (str[*begin] && (str[*begin] == ' ' || str[*begin] == '\n'))
+    *begin += 1;
+
+  *end = *begin;
+
+  if (!str[*begin])
+    return 0;
+
+  /* Special case, we're reading an instruction. Try to read as much as possible
+     as long as the prefix is a valid instruction.  */
+  if (insn_p)
+    *end += longest_match (str + *begin, strlen (str + *begin), env.insns);
+  else
+    {
+      if (is_delim (str[*begin]))
+      {
+	*end += 1;
+	get_token_class (tok, env.token_classes, insn_p, modifier_p);
+	return 1;
+      }
+
+      if (str[*begin] == '.' && !(*begin > 0 && (str[*begin - 1] == ' ' || is_delim(str[*begin - 1]))))
+	modifier_p = 1;
+
+      /* This is a modifier or a register */
+      if (str[*begin] == '.' || str[*begin] == '$')
+	*end += 1;
+
+      /* Stop when reaching the start of the new token. */
+      while (!(!str[*end] || is_delim (str[*end]) || str[*end] == ' ' || (modifier_p && str[*end] == '.')))
+	*end += 1;
+
+    }
+
+  get_token_class (tok, env.token_classes, insn_p, modifier_p);
+  return 1;
+}
+
+/* Rewrite with as_bad. */
+static void
+rule_expect_error (int rule_id, char *buf, int bufsz __attribute__((unused)))
+{
+  int i = 0;
+  int pos = 0;
+  int comma = 0;
+  pos += sprintf (buf + pos, "expected one of [");
+  struct steering_rule *rules = env.rules[rule_id].rules;
+  while (rules[i].steering != -1)
+    {
+      if ((env.opts.allow_all_sfr || rules[i].steering != env.sys_reg)
+	  && rules[i].steering != -3)
+	{
+	  pos += sprintf (buf + pos, "%s%s", comma ? ", " : "", TOKEN_NAME (rules[i].steering));
+	  comma = 1;
+	}
+      i += 1;
+    }
+  pos += sprintf (buf + pos, "].");
+}
+
+static struct token_list *
+create_token (struct token_s tok, int len, int loc)
+{
+  struct token_list *tl = calloc (1, sizeof *tl);
+  int tok_sz = tok.end - tok.begin;
+  tl->tok = calloc (tok_sz + 1, sizeof (char));
+  memcpy (tl->tok, tok.insn + tok.begin, tok_sz * sizeof (char));
+  tl->val = tok.val;
+  tl->class_id = tok.class_id;
+  tl->category = tok.category;
+  tl->next = NULL;
+  tl->len = len;
+  tl->loc = loc;
+  return tl;
+}
+
+void
+print_token_list (struct token_list *lst)
+{
+  struct token_list *cur = lst;
+  while (cur)
+    {
+      printf_debug (1, "%s (%d : %s : %d) / ",
+	      cur->tok, cur->val, TOKEN_NAME (cur->class_id), cur->loc);
+      cur = cur->next;
+    }
+  printf_debug (1, "\n");
+}
+
+void
+free_token_list (struct token_list *tok_list)
+{
+  struct token_list *cur = tok_list;
+  struct token_list *tmp;
+  while (cur)
+    {
+      tmp = cur->next;
+      free (cur->tok);
+      free (cur);
+      cur = tmp;
+    }
+}
+
+static struct token_list *
+token_list_append (struct token_list *lst1, struct token_list *lst2)
+{
+  if (lst1 == NULL)
+    return lst2;
+
+  if (lst2 == NULL)
+    return NULL;
+
+  struct token_list *hd = lst1;
+  while (hd->next)
+    {
+      hd->len += lst2->len;
+      hd = hd->next;
+    }
+
+  hd->len += lst2->len;
+  hd->next = lst2;
+  return lst1;
+}
+
+struct error_list
+{
+  int loc, rule;
+  struct error_list *nxt;
+};
+
+static struct error_list *
+error_list_insert (int rule, int loc, struct error_list *nxt)
+{
+  struct error_list *n = calloc (1, sizeof (*n));
+  n->loc = loc > 0 ? loc - 1 : loc;
+  n->rule = rule;
+  n->nxt = nxt;
+  return n;
+}
+
+static void
+free_error_list (struct error_list *l)
+{
+  struct error_list *tmp, *cur_err = l;
+  while ((tmp = cur_err))
+  {
+    cur_err = cur_err->nxt;
+    free (tmp);
+  }
+}
+
+static int
+CLASS_ID (struct token_s tok)
+{
+  int offset = __builtin_ctzll (tok.class_id & -tok.class_id);
+  switch (tok.category)
+  {
+    case CAT_REGISTER:
+      return env.fst_reg + offset;
+    case CAT_MODIFIER:
+      return env.fst_mod + offset;
+    default:
+      return tok.class_id;
+  }
+}
+
+struct parser {
+
+};
+
+static struct token_list *
+parse_with_restarts (struct token_s tok, int jump_target, struct rule rules[],
+		     struct error_list **errs)
+{
+  int end_of_line = 0;
+  struct steering_rule *cur_rule = rules[jump_target].rules;
+
+  if (!tok.insn[tok.begin])
+    tok.class_id = -3;
+
+  if (CLASS_ID (tok) == -1)
+    {
+      /* Unknown token */
+      *errs = error_list_insert (jump_target, tok.begin, *errs);
+      return NULL;
+    }
+
+  printf_debug (1, "\nEntering rule: %d (Trying to match: %s (%s)[%d])\n", jump_target,
+		TOKEN_NAME (CLASS_ID (tok)), TOKEN_STR (tok), CLASS_ID (tok));
+
+  /* 1. Find a rule that can be used with the current token. */
+  int i = 0;
+  while (cur_rule[i].steering != -1 && cur_rule[i].steering != CLASS_ID (tok))
+    i += 1;
+
+  printf_debug (1, "steering: %d (%s), jump_target: %d, stack_it: %d\n",
+		cur_rule[i].steering, TOKEN_NAME (cur_rule[i].steering),
+		cur_rule[i].jump_target, cur_rule[i].stack_it);
+
+  struct token_s init_tok = tok;
+retry:;
+      tok = init_tok;
+  if (cur_rule[i].jump_target == -2 && cur_rule[i].stack_it == -2)
+    {
+      /* We're reading eps. */
+      printf_debug (1, "successfully ignored: %s\n", TOKEN_NAME (jump_target));
+      struct token_s tok_ =
+      { (char *)".", 0, 1, CAT_MODIFIER, jump_target, 0 };
+      return create_token (tok_, 0, tok.begin);
+    }
+  else if (cur_rule[i].jump_target == -1 && cur_rule[i].stack_it == -1)
+    {
+      /* We're handling the rule for a terminal (not eps) */
+      if (cur_rule[i].steering == CLASS_ID (tok))
+	  // && tok.begin != tok.end) -- only fails when eps is last, eg. fence.
+	{
+	  /* We matched a token */
+	  printf_debug (1, "matched %s\n", TOKEN_NAME (CLASS_ID (tok)));
+	  tok.class_id = CLASS_ID (tok);
+	  return create_token (tok, 1, tok.begin);
+	}
+      else
+	{
+	  /* This is a mandatory modifier */
+	  *errs = error_list_insert (jump_target, tok.begin, *errs);
+	  return NULL;
+	}
+    }
+
+  /* Not on a terminal */
+  struct token_list *fst_part =
+    parse_with_restarts (tok, cur_rule[i].jump_target, rules, errs);
+  /* While parsing fails but there is hope since the current token can be
+     promoted.  */
+  while (!fst_part && tok.class_id != (long long) promote_token (tok))
+    {
+      free_token_list (fst_part);
+      tok.class_id = promote_token (tok);
+      printf_debug (1, "> Restart with %s?\n", TOKEN_NAME (CLASS_ID (tok)));
+      fst_part = parse_with_restarts (tok, cur_rule[i].jump_target, rules, errs);
+    };
+
+  if (!fst_part)
+    {
+      i += 1;
+      while (cur_rule[i].steering != CLASS_ID(tok) && cur_rule[i].steering != -1)
+	i += 1;
+      if (cur_rule[i].steering != -1)
+	goto retry;
+    }
+
+  if (!fst_part)
+    {
+      printf_debug (1, "fst_part == NULL (Exiting %d)\n", jump_target);
+      return NULL;
+    }
+
+  for (int _ = 0; _ < fst_part->len; ++_)
+    {
+      tok.begin = tok.end;
+      end_of_line = !read_token (&tok);
+    }
+
+  if (end_of_line && cur_rule[i].stack_it == -1)
+    {
+      /* No more tokens and no more place to go */
+      printf_debug (1, "return fst_part.\n");
+      return fst_part;
+    }
+  else if (!end_of_line && cur_rule[i].stack_it == -1)
+    {
+      /* Too much tokens. */
+      printf_debug (1, "too much tokens\n");
+      *errs = error_list_insert (cur_rule[i].stack_it, tok.begin, *errs);
+      return NULL;
+    }
+  else if (cur_rule[i].stack_it == -1)
+    {
+      printf_debug (1, "return fst_part. (end of rule)\n");
+      return fst_part;
+    }
+
+  printf_debug (1, "snd_part: Trying to match: %s\n", TOKEN_NAME (CLASS_ID (tok)));
+  struct token_list *snd_part = parse_with_restarts (tok, cur_rule[i].stack_it, rules, errs);
+  while (!snd_part && tok.class_id != (long long) promote_token (tok))
+    {
+      tok.class_id = promote_token (tok);
+      printf_debug (1, ">> Restart with %s?\n", TOKEN_NAME (CLASS_ID (tok)));
+      snd_part = parse_with_restarts (tok, cur_rule[i].stack_it, rules, errs);
+    }
+
+  if (!snd_part)
+    {
+      free_token_list (fst_part);
+      i += 1;
+      tok = init_tok;
+      while (cur_rule[i].steering != CLASS_ID (tok) && cur_rule[i].steering != -1)
+	i += 1;
+      if (cur_rule[i].steering != -1)
+	goto retry;
+    }
+
+  if (!snd_part)
+    {
+      printf_debug (1, "snd_part == NULL (Exiting %d)\n", jump_target);
+      return NULL;
+    }
+
+  printf_debug (1, "Exiting rule: %d\n", jump_target,
+		TOKEN_NAME (CLASS_ID (tok)), tok.class_id);
+
+  /* Combine fst & snd parts */
+  return token_list_append (fst_part, snd_part);
+}
+
+/* During the parsing the modifiers and registers are handled through pseudo
+   classes such that each register and modifier appears in at most one pseudo
+   class.  Since the pseudo-classes are not correlated with how the modifiers
+   and registers are encoded we fix that after a successful match instead of
+   updating it many times during the parsing.
+
+   Currently, only assigning correct values to modifiers is of interest.  The
+   real value of registers is computed in tc-kvx.c:insert_operand.  */
+
+static void
+assign_final_values (struct token_list *lst)
+{
+  (void) lst;
+  struct token_list *cur = lst;
+
+  while (cur)
+    {
+      if (cur->category == CAT_MODIFIER)
+	{
+	  int idx = cur->class_id - env.fst_mod;
+	  int found = 0;
+	  for (int i = 0 ; !found && kvx_modifiers[idx][i]; ++i)
+	    if ((found = !strcmp (cur->tok, kvx_modifiers[idx][i])))
+	      cur->val = i;
+	}
+      cur = cur->next;
+    }
+}
+
+struct token_list *
+parse (struct token_s tok)
+{
+  int error_code = 0;
+  int error_char = 0;
+  struct error_list *errs = NULL;
+  read_token (&tok);
+
+  struct token_list *tok_list =
+    parse_with_restarts (tok, 0, env.rules, &errs);
+
+  if (!tok_list)
+    {
+      struct error_list *cur_err = errs;
+      while (cur_err)
+	{
+	  if (cur_err->loc > error_char)
+	    {
+	      error_char = cur_err->loc;
+	      error_code = cur_err->rule;
+	    }
+	  cur_err = cur_err->nxt;
+	}
+    }
+
+  free_error_list (errs);
+
+  if (!tok_list)
+    {
+      if (error_code != -1)
+	{
+	  char buf[256] = { 0 };
+	  const char * msg = "Unexpected token when parsing %s.";
+	    for (int i = 0; i < (int) (strlen (msg) + error_char + 1 - 4) ; ++i)
+	      buf[i] = ' ';
+	    buf[strlen (msg) + error_char + 1 - 4] = '^';
+	  as_bad (msg, tok.insn);
+	  if (env.opts.diagnostics)
+	    {
+	      as_bad ("%s", buf);
+	      char err_buf[10000] = { 0 };
+	      rule_expect_error (error_code, err_buf, 10000);
+	      as_bad ("%s", err_buf);
+	    }
+	}
+      else
+	{
+	  char buf[256] = { 0 };
+	  const char * msg = "Extra token when parsing %s.";
+	    for (int i = 0; i < (int) (strlen (msg) + error_char + 1 - 4) ; ++i)
+	      buf[i] = ' ';
+	    buf[strlen (msg) + error_char + 1 - 4] = '^';
+	  as_bad (msg, tok.insn);
+	  if (env.opts.diagnostics)
+	    as_bad ("%s\n", buf);
+	}
+    }
+  else
+    {
+      printf_debug (1, "[PASS] Successfully matched %s\n", tok.insn);
+      assign_final_values (tok_list);
+//      print_token_list (tok_list);
+//      free_token_list (tok_list);
+    }
+  return tok_list;
+}
+
+void
+setup (int core)
+{
+  switch (core)
+  {
+  case ELF_KVX_CORE_KV3_1:
+    setup_kv3_v1 ();
+    break;
+  case ELF_KVX_CORE_KV3_2:
+    setup_kv3_v2 ();
+    break;
+  case ELF_KVX_CORE_KV4_1:
+    setup_kv4_v1 ();
+    break;
+  default:
+    as_bad ("Unknown architecture");
+    abort ();
+  }
+
+  for (int i = 0; env.token_classes->insn_classes[i].class_values ; ++i)
+    env.insns =
+      insert (env.token_classes->insn_classes[i].class_values[0], env.insns);
+}
+
+void
+cleanup ()
+{
+  free_node (env.insns);
+}
diff --git a/gas/config/kvx-parse.h b/gas/config/kvx-parse.h
new file mode 100644
index 00000000000..5056a73fb5b
--- /dev/null
+++ b/gas/config/kvx-parse.h
@@ -0,0 +1,33815 @@
+/* kvx-parse.h -- Recursive decent parser tables for the KVX ISA
+
+   Copyright (C) 2009-2023 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   This file is part of GAS.
+
+   GAS is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the license, or
+   (at your option) any later version.
+
+   GAS is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#ifndef __H_KVX_PARSER__
+#define __H_KVX_PARSER__
+
+struct token_list* parse (struct token_s tok);
+void free_token_list (struct token_list* tok_list);
+void setup (int version);
+void cleanup (void);
+
+\f
+
+/* KV3_V1 BEGIN {{{ */
+static const char *tokens_names_kv3_v1[] = {
+  "Immediate_kv3_v1_pcrel17", "Immediate_kv3_v1_pcrel27", "Immediate_kv3_v1_signed10",
+  "Immediate_kv3_v1_signed16", "Immediate_kv3_v1_signed27", "Immediate_kv3_v1_signed37",
+  "Immediate_kv3_v1_signed43", "Immediate_kv3_v1_signed54", "Immediate_kv3_v1_sysnumber",
+  "Immediate_kv3_v1_unsigned6", "Immediate_kv3_v1_wrapped32", "Immediate_kv3_v1_wrapped64",
+  "Modifier_kv3_v1_column", "Modifier_kv3_v1_comparison", "Modifier_kv3_v1_doscale",
+  "Modifier_kv3_v1_exunum", "Modifier_kv3_v1_floatcomp", "Modifier_kv3_v1_qindex",
+  "Modifier_kv3_v1_rectify", "Modifier_kv3_v1_rounding", "Modifier_kv3_v1_roundint",
+  "Modifier_kv3_v1_saturate", "Modifier_kv3_v1_scalarcond", "Modifier_kv3_v1_silent",
+  "Modifier_kv3_v1_simplecond", "Modifier_kv3_v1_speculate", "Modifier_kv3_v1_splat32",
+  "Modifier_kv3_v1_variant", "RegClass_kv3_v1_aloneReg", "RegClass_kv3_v1_blockReg",
+  "RegClass_kv3_v1_blockReg0M4", "RegClass_kv3_v1_blockReg1M4", "RegClass_kv3_v1_blockReg2M4",
+  "RegClass_kv3_v1_blockReg3M4", "RegClass_kv3_v1_blockRegE", "RegClass_kv3_v1_blockRegO",
+  "RegClass_kv3_v1_blockReg_0", "RegClass_kv3_v1_blockReg_1", "RegClass_kv3_v1_buffer16Reg",
+  "RegClass_kv3_v1_buffer2Reg", "RegClass_kv3_v1_buffer32Reg", "RegClass_kv3_v1_buffer4Reg",
+  "RegClass_kv3_v1_buffer64Reg", "RegClass_kv3_v1_buffer8Reg", "RegClass_kv3_v1_coproReg",
+  "RegClass_kv3_v1_coproReg0M4", "RegClass_kv3_v1_coproReg1M4", "RegClass_kv3_v1_coproReg2M4",
+  "RegClass_kv3_v1_coproReg3M4", "RegClass_kv3_v1_matrixReg", "RegClass_kv3_v1_matrixReg_0",
+  "RegClass_kv3_v1_matrixReg_1", "RegClass_kv3_v1_matrixReg_2", "RegClass_kv3_v1_matrixReg_3",
+  "RegClass_kv3_v1_onlyfxReg", "RegClass_kv3_v1_onlygetReg", "RegClass_kv3_v1_onlyraReg",
+  "RegClass_kv3_v1_onlysetReg", "RegClass_kv3_v1_onlyswapReg", "RegClass_kv3_v1_pairedReg",
+  "RegClass_kv3_v1_pairedReg_0", "RegClass_kv3_v1_pairedReg_1", "RegClass_kv3_v1_quadReg",
+  "RegClass_kv3_v1_quadReg_0", "RegClass_kv3_v1_quadReg_1", "RegClass_kv3_v1_quadReg_2",
+  "RegClass_kv3_v1_quadReg_3", "RegClass_kv3_v1_singleReg", "RegClass_kv3_v1_systemReg",
+  "RegClass_kv3_v1_tileReg", "RegClass_kv3_v1_tileReg_0", "RegClass_kv3_v1_tileReg_1",
+  "RegClass_kv3_v1_vectorReg", "RegClass_kv3_v1_vectorRegE", "RegClass_kv3_v1_vectorRegO",
+  "RegClass_kv3_v1_vectorReg_0", "RegClass_kv3_v1_vectorReg_1", "RegClass_kv3_v1_vectorReg_2",
+  "RegClass_kv3_v1_vectorReg_3", "abdd", "abdd.@",
+  "abdhq", "abdw", "abdwp",
+  "absd", "abshq", "absw",
+  "abswp", "acswapd", "acswapw",
+  "addcd", "addcd.i", "addd",
+  "addd.@", "addhcp.c", "addhq",
+  "addsd", "addshq", "addsw",
+  "addswp", "adduwd", "addw",
+  "addwc.c", "addwd", "addwp",
+  "addx16d", "addx16hq", "addx16uwd",
+  "addx16w", "addx16wd", "addx16wp",
+  "addx2d", "addx2hq", "addx2uwd",
+  "addx2w", "addx2wd", "addx2wp",
+  "addx4d", "addx4hq", "addx4uwd",
+  "addx4w", "addx4wd", "addx4wp",
+  "addx8d", "addx8hq", "addx8uwd",
+  "addx8w", "addx8wd", "addx8wp",
+  "aladdd", "aladdw", "alclrd",
+  "alclrw", "aligno", "alignv",
+  "andd", "andd.@", "andnd",
+  "andnd.@", "andnw", "andw",
+  "avghq", "avgrhq", "avgruhq",
+  "avgruw", "avgruwp", "avgrw",
+  "avgrwp", "avguhq", "avguw",
+  "avguwp", "avgw", "avgwp",
+  "await", "barrier", "call",
+  "cb", "cbsd", "cbsw",
+  "cbswp", "clrf", "clsd",
+  "clsw", "clswp", "clzd",
+  "clzw", "clzwp", "cmoved",
+  "cmovehq", "cmovewp", "cmuldt",
+  "cmulghxdt", "cmulglxdt", "cmulgmxdt",
+  "cmulxdt", "compd", "compnhq",
+  "compnwp", "compuwd", "compw",
+  "compwd", "convdhv0", "convdhv1",
+  "convwbv0", "convwbv1", "convwbv2",
+  "convwbv3", "copyd", "copyo",
+  "copyq", "copyw", "crcbellw",
+  "crcbelmw", "crclellw", "crclelmw",
+  "ctzd", "ctzw", "ctzwp",
+  "d1inval", "dinvall", "dot2suwd",
+  "dot2suwdp", "dot2uwd", "dot2uwdp",
+  "dot2w", "dot2wd", "dot2wdp",
+  "dot2wzp", "dtouchl", "dzerol",
+  "errop", "extfs", "extfz",
+  "fabsd", "fabshq", "fabsw",
+  "fabswp", "faddd", "fadddc",
+  "fadddc.c", "fadddp", "faddhq",
+  "faddw", "faddwc", "faddwc.c",
+  "faddwcp", "faddwcp.c", "faddwp",
+  "faddwq", "fcdivd", "fcdivw",
+  "fcdivwp", "fcompd", "fcompnhq",
+  "fcompnwp", "fcompw", "fdot2w",
+  "fdot2wd", "fdot2wdp", "fdot2wzp",
+  "fence", "ffmad", "ffmahq",
+  "ffmahw", "ffmahwq", "ffmaw",
+  "ffmawd", "ffmawdp", "ffmawp",
+  "ffmsd", "ffmshq", "ffmshw",
+  "ffmshwq", "ffmsw", "ffmswd",
+  "ffmswdp", "ffmswp", "fixedd",
+  "fixedud", "fixeduw", "fixeduwp",
+  "fixedw", "fixedwp", "floatd",
+  "floatud", "floatuw", "floatuwp",
+  "floatw", "floatwp", "fmaxd",
+  "fmaxhq", "fmaxw", "fmaxwp",
+  "fmind", "fminhq", "fminw",
+  "fminwp", "fmm212w", "fmma212w",
+  "fmma242hw0", "fmma242hw1", "fmma242hw2",
+  "fmma242hw3", "fmms212w", "fmuld",
+  "fmulhq", "fmulhw", "fmulhwq",
+  "fmulw", "fmulwc", "fmulwc.c",
+  "fmulwd", "fmulwdc", "fmulwdc.c",
+  "fmulwdp", "fmulwp", "fmulwq",
+  "fnarrow44wh", "fnarrowdw", "fnarrowdwp",
+  "fnarrowwh", "fnarrowwhq", "fnegd",
+  "fneghq", "fnegw", "fnegwp",
+  "frecw", "frsrw", "fsbfd",
+  "fsbfdc", "fsbfdc.c", "fsbfdp",
+  "fsbfhq", "fsbfw", "fsbfwc",
+  "fsbfwc.c", "fsbfwcp", "fsbfwcp.c",
+  "fsbfwp", "fsbfwq", "fscalewv",
+  "fsdivd", "fsdivw", "fsdivwp",
+  "fsrecd", "fsrecw", "fsrecwp",
+  "fsrsrd", "fsrsrw", "fsrsrwp",
+  "fwidenlhw", "fwidenlhwp", "fwidenlwd",
+  "fwidenmhw", "fwidenmhwp", "fwidenmwd",
+  "get", "goto", "i1inval",
+  "i1invals", "icall", "iget",
+  "igoto", "insf", "landd",
+  "landhq", "landw", "landwp",
+  "lbs", "lbz", "ld",
+  "lhs", "lhz", "lnandd",
+  "lnandhq", "lnandw", "lnandwp",
+  "lnord", "lnorhq", "lnorw",
+  "lnorwp", "lo", "loopdo",
+  "lord", "lorhq", "lorw",
+  "lorwp", "lq", "lws",
+  "lwz", "maddd", "madddt",
+  "maddhq", "maddhwq", "maddsudt",
+  "maddsuhwq", "maddsuwd", "maddsuwdp",
+  "maddudt", "madduhwq", "madduwd",
+  "madduwdp", "madduzdt", "maddw",
+  "maddwd", "maddwdp", "maddwp",
+  "make", "maxd", "maxd.@",
+  "maxhq", "maxud", "maxud.@",
+  "maxuhq", "maxuw", "maxuwp",
+  "maxw", "maxwp", "mind",
+  "mind.@", "minhq", "minud",
+  "minud.@", "minuhq", "minuw",
+  "minuwp", "minw", "minwp",
+  "mm212w", "mma212w", "mma444hbd0",
+  "mma444hbd1", "mma444hd", "mma444suhbd0",
+  "mma444suhbd1", "mma444suhd", "mma444uhbd0",
+  "mma444uhbd1", "mma444uhd", "mma444ushbd0",
+  "mma444ushbd1", "mma444ushd", "mms212w",
+  "movetq", "msbfd", "msbfdt",
+  "msbfhq", "msbfhwq", "msbfsudt",
+  "msbfsuhwq", "msbfsuwd", "msbfsuwdp",
+  "msbfudt", "msbfuhwq", "msbfuwd",
+  "msbfuwdp", "msbfuzdt", "msbfw",
+  "msbfwd", "msbfwdp", "msbfwp",
+  "muld", "muldt", "mulhq",
+  "mulhwq", "mulsudt", "mulsuhwq",
+  "mulsuwd", "mulsuwdp", "muludt",
+  "muluhwq", "muluwd", "muluwdp",
+  "mulw", "mulwc", "mulwc.c",
+  "mulwd", "mulwdc", "mulwdc.c",
+  "mulwdp", "mulwp", "mulwq",
+  "nandd", "nandd.@", "nandw",
+  "negd", "neghq", "negw",
+  "negwp", "nop", "nord",
+  "nord.@", "norw", "notd",
+  "notw", "nxord", "nxord.@",
+  "nxorw", "ord", "ord.@",
+  "ornd", "ornd.@", "ornw",
+  "orw", "pcrel", "ret",
+  "rfe", "rolw", "rolwps",
+  "rorw", "rorwps", "rswap",
+  "satd", "satdh", "satdw",
+  "sb", "sbfcd", "sbfcd.i",
+  "sbfd", "sbfd.@", "sbfhcp.c",
+  "sbfhq", "sbfsd", "sbfshq",
+  "sbfsw", "sbfswp", "sbfuwd",
+  "sbfw", "sbfwc.c", "sbfwd",
+  "sbfwp", "sbfx16d", "sbfx16hq",
+  "sbfx16uwd", "sbfx16w", "sbfx16wd",
+  "sbfx16wp", "sbfx2d", "sbfx2hq",
+  "sbfx2uwd", "sbfx2w", "sbfx2wd",
+  "sbfx2wp", "sbfx4d", "sbfx4hq",
+  "sbfx4uwd", "sbfx4w", "sbfx4wd",
+  "sbfx4wp", "sbfx8d", "sbfx8hq",
+  "sbfx8uwd", "sbfx8w", "sbfx8wd",
+  "sbfx8wp", "sbmm8", "sbmm8.@",
+  "sbmmt8", "sbmmt8.@", "scall",
+  "sd", "set", "sh",
+  "sleep", "slld", "sllhqs",
+  "sllw", "sllwps", "slsd",
+  "slshqs", "slsw", "slswps",
+  "so", "sq", "srad",
+  "srahqs", "sraw", "srawps",
+  "srld", "srlhqs", "srlw",
+  "srlwps", "srsd", "srshqs",
+  "srsw", "srswps", "stop",
+  "stsud", "stsuw", "sw",
+  "sxbd", "sxhd", "sxlbhq",
+  "sxlhwp", "sxmbhq", "sxmhwp",
+  "sxwd", "syncgroup", "tlbdinval",
+  "tlbiinval", "tlbprobe", "tlbread",
+  "tlbwrite", "waitit", "wfxl",
+  "wfxm", "xcopyo", "xlo",
+  "xmma484bw", "xmma484subw", "xmma484ubw",
+  "xmma484usbw", "xmovefo", "xmovetq",
+  "xmt44d", "xord", "xord.@",
+  "xorw", "xso", "zxbd",
+  "zxhd", "zxwd", "comma",
+  "equal", "qmark", "rsbracket",
+  "lsbracket",
+};
+
+\f
+static const char *insn_kv3_v1_abdd[] = { "abdd" };
+static const char *insn_kv3_v1_abdd_abase[] = { "abdd.@" };
+static const char *insn_kv3_v1_abdhq[] = { "abdhq" };
+static const char *insn_kv3_v1_abdw[] = { "abdw" };
+static const char *insn_kv3_v1_abdwp[] = { "abdwp" };
+static const char *insn_kv3_v1_absd[] = { "absd" };
+static const char *insn_kv3_v1_abshq[] = { "abshq" };
+static const char *insn_kv3_v1_absw[] = { "absw" };
+static const char *insn_kv3_v1_abswp[] = { "abswp" };
+static const char *insn_kv3_v1_acswapd[] = { "acswapd" };
+static const char *insn_kv3_v1_acswapw[] = { "acswapw" };
+static const char *insn_kv3_v1_addcd[] = { "addcd" };
+static const char *insn_kv3_v1_addcd_i[] = { "addcd.i" };
+static const char *insn_kv3_v1_addd[] = { "addd" };
+static const char *insn_kv3_v1_addd_abase[] = { "addd.@" };
+static const char *insn_kv3_v1_addhcp_c[] = { "addhcp.c" };
+static const char *insn_kv3_v1_addhq[] = { "addhq" };
+static const char *insn_kv3_v1_addsd[] = { "addsd" };
+static const char *insn_kv3_v1_addshq[] = { "addshq" };
+static const char *insn_kv3_v1_addsw[] = { "addsw" };
+static const char *insn_kv3_v1_addswp[] = { "addswp" };
+static const char *insn_kv3_v1_adduwd[] = { "adduwd" };
+static const char *insn_kv3_v1_addw[] = { "addw" };
+static const char *insn_kv3_v1_addwc_c[] = { "addwc.c" };
+static const char *insn_kv3_v1_addwd[] = { "addwd" };
+static const char *insn_kv3_v1_addwp[] = { "addwp" };
+static const char *insn_kv3_v1_addx16d[] = { "addx16d" };
+static const char *insn_kv3_v1_addx16hq[] = { "addx16hq" };
+static const char *insn_kv3_v1_addx16uwd[] = { "addx16uwd" };
+static const char *insn_kv3_v1_addx16w[] = { "addx16w" };
+static const char *insn_kv3_v1_addx16wd[] = { "addx16wd" };
+static const char *insn_kv3_v1_addx16wp[] = { "addx16wp" };
+static const char *insn_kv3_v1_addx2d[] = { "addx2d" };
+static const char *insn_kv3_v1_addx2hq[] = { "addx2hq" };
+static const char *insn_kv3_v1_addx2uwd[] = { "addx2uwd" };
+static const char *insn_kv3_v1_addx2w[] = { "addx2w" };
+static const char *insn_kv3_v1_addx2wd[] = { "addx2wd" };
+static const char *insn_kv3_v1_addx2wp[] = { "addx2wp" };
+static const char *insn_kv3_v1_addx4d[] = { "addx4d" };
+static const char *insn_kv3_v1_addx4hq[] = { "addx4hq" };
+static const char *insn_kv3_v1_addx4uwd[] = { "addx4uwd" };
+static const char *insn_kv3_v1_addx4w[] = { "addx4w" };
+static const char *insn_kv3_v1_addx4wd[] = { "addx4wd" };
+static const char *insn_kv3_v1_addx4wp[] = { "addx4wp" };
+static const char *insn_kv3_v1_addx8d[] = { "addx8d" };
+static const char *insn_kv3_v1_addx8hq[] = { "addx8hq" };
+static const char *insn_kv3_v1_addx8uwd[] = { "addx8uwd" };
+static const char *insn_kv3_v1_addx8w[] = { "addx8w" };
+static const char *insn_kv3_v1_addx8wd[] = { "addx8wd" };
+static const char *insn_kv3_v1_addx8wp[] = { "addx8wp" };
+static const char *insn_kv3_v1_aladdd[] = { "aladdd" };
+static const char *insn_kv3_v1_aladdw[] = { "aladdw" };
+static const char *insn_kv3_v1_alclrd[] = { "alclrd" };
+static const char *insn_kv3_v1_alclrw[] = { "alclrw" };
+static const char *insn_kv3_v1_aligno[] = { "aligno" };
+static const char *insn_kv3_v1_alignv[] = { "alignv" };
+static const char *insn_kv3_v1_andd[] = { "andd" };
+static const char *insn_kv3_v1_andd_abase[] = { "andd.@" };
+static const char *insn_kv3_v1_andnd[] = { "andnd" };
+static const char *insn_kv3_v1_andnd_abase[] = { "andnd.@" };
+static const char *insn_kv3_v1_andnw[] = { "andnw" };
+static const char *insn_kv3_v1_andw[] = { "andw" };
+static const char *insn_kv3_v1_avghq[] = { "avghq" };
+static const char *insn_kv3_v1_avgrhq[] = { "avgrhq" };
+static const char *insn_kv3_v1_avgruhq[] = { "avgruhq" };
+static const char *insn_kv3_v1_avgruw[] = { "avgruw" };
+static const char *insn_kv3_v1_avgruwp[] = { "avgruwp" };
+static const char *insn_kv3_v1_avgrw[] = { "avgrw" };
+static const char *insn_kv3_v1_avgrwp[] = { "avgrwp" };
+static const char *insn_kv3_v1_avguhq[] = { "avguhq" };
+static const char *insn_kv3_v1_avguw[] = { "avguw" };
+static const char *insn_kv3_v1_avguwp[] = { "avguwp" };
+static const char *insn_kv3_v1_avgw[] = { "avgw" };
+static const char *insn_kv3_v1_avgwp[] = { "avgwp" };
+static const char *insn_kv3_v1_await[] = { "await" };
+static const char *insn_kv3_v1_barrier[] = { "barrier" };
+static const char *insn_kv3_v1_call[] = { "call" };
+static const char *insn_kv3_v1_cb[] = { "cb" };
+static const char *insn_kv3_v1_cbsd[] = { "cbsd" };
+static const char *insn_kv3_v1_cbsw[] = { "cbsw" };
+static const char *insn_kv3_v1_cbswp[] = { "cbswp" };
+static const char *insn_kv3_v1_clrf[] = { "clrf" };
+static const char *insn_kv3_v1_clsd[] = { "clsd" };
+static const char *insn_kv3_v1_clsw[] = { "clsw" };
+static const char *insn_kv3_v1_clswp[] = { "clswp" };
+static const char *insn_kv3_v1_clzd[] = { "clzd" };
+static const char *insn_kv3_v1_clzw[] = { "clzw" };
+static const char *insn_kv3_v1_clzwp[] = { "clzwp" };
+static const char *insn_kv3_v1_cmoved[] = { "cmoved" };
+static const char *insn_kv3_v1_cmovehq[] = { "cmovehq" };
+static const char *insn_kv3_v1_cmovewp[] = { "cmovewp" };
+static const char *insn_kv3_v1_cmuldt[] = { "cmuldt" };
+static const char *insn_kv3_v1_cmulghxdt[] = { "cmulghxdt" };
+static const char *insn_kv3_v1_cmulglxdt[] = { "cmulglxdt" };
+static const char *insn_kv3_v1_cmulgmxdt[] = { "cmulgmxdt" };
+static const char *insn_kv3_v1_cmulxdt[] = { "cmulxdt" };
+static const char *insn_kv3_v1_compd[] = { "compd" };
+static const char *insn_kv3_v1_compnhq[] = { "compnhq" };
+static const char *insn_kv3_v1_compnwp[] = { "compnwp" };
+static const char *insn_kv3_v1_compuwd[] = { "compuwd" };
+static const char *insn_kv3_v1_compw[] = { "compw" };
+static const char *insn_kv3_v1_compwd[] = { "compwd" };
+static const char *insn_kv3_v1_convdhv0[] = { "convdhv0" };
+static const char *insn_kv3_v1_convdhv1[] = { "convdhv1" };
+static const char *insn_kv3_v1_convwbv0[] = { "convwbv0" };
+static const char *insn_kv3_v1_convwbv1[] = { "convwbv1" };
+static const char *insn_kv3_v1_convwbv2[] = { "convwbv2" };
+static const char *insn_kv3_v1_convwbv3[] = { "convwbv3" };
+static const char *insn_kv3_v1_copyd[] = { "copyd" };
+static const char *insn_kv3_v1_copyo[] = { "copyo" };
+static const char *insn_kv3_v1_copyq[] = { "copyq" };
+static const char *insn_kv3_v1_copyw[] = { "copyw" };
+static const char *insn_kv3_v1_crcbellw[] = { "crcbellw" };
+static const char *insn_kv3_v1_crcbelmw[] = { "crcbelmw" };
+static const char *insn_kv3_v1_crclellw[] = { "crclellw" };
+static const char *insn_kv3_v1_crclelmw[] = { "crclelmw" };
+static const char *insn_kv3_v1_ctzd[] = { "ctzd" };
+static const char *insn_kv3_v1_ctzw[] = { "ctzw" };
+static const char *insn_kv3_v1_ctzwp[] = { "ctzwp" };
+static const char *insn_kv3_v1_d1inval[] = { "d1inval" };
+static const char *insn_kv3_v1_dinvall[] = { "dinvall" };
+static const char *insn_kv3_v1_dot2suwd[] = { "dot2suwd" };
+static const char *insn_kv3_v1_dot2suwdp[] = { "dot2suwdp" };
+static const char *insn_kv3_v1_dot2uwd[] = { "dot2uwd" };
+static const char *insn_kv3_v1_dot2uwdp[] = { "dot2uwdp" };
+static const char *insn_kv3_v1_dot2w[] = { "dot2w" };
+static const char *insn_kv3_v1_dot2wd[] = { "dot2wd" };
+static const char *insn_kv3_v1_dot2wdp[] = { "dot2wdp" };
+static const char *insn_kv3_v1_dot2wzp[] = { "dot2wzp" };
+static const char *insn_kv3_v1_dtouchl[] = { "dtouchl" };
+static const char *insn_kv3_v1_dzerol[] = { "dzerol" };
+static const char *insn_kv3_v1_errop[] = { "errop" };
+static const char *insn_kv3_v1_extfs[] = { "extfs" };
+static const char *insn_kv3_v1_extfz[] = { "extfz" };
+static const char *insn_kv3_v1_fabsd[] = { "fabsd" };
+static const char *insn_kv3_v1_fabshq[] = { "fabshq" };
+static const char *insn_kv3_v1_fabsw[] = { "fabsw" };
+static const char *insn_kv3_v1_fabswp[] = { "fabswp" };
+static const char *insn_kv3_v1_faddd[] = { "faddd" };
+static const char *insn_kv3_v1_fadddc[] = { "fadddc" };
+static const char *insn_kv3_v1_fadddc_c[] = { "fadddc.c" };
+static const char *insn_kv3_v1_fadddp[] = { "fadddp" };
+static const char *insn_kv3_v1_faddhq[] = { "faddhq" };
+static const char *insn_kv3_v1_faddw[] = { "faddw" };
+static const char *insn_kv3_v1_faddwc[] = { "faddwc" };
+static const char *insn_kv3_v1_faddwc_c[] = { "faddwc.c" };
+static const char *insn_kv3_v1_faddwcp[] = { "faddwcp" };
+static const char *insn_kv3_v1_faddwcp_c[] = { "faddwcp.c" };
+static const char *insn_kv3_v1_faddwp[] = { "faddwp" };
+static const char *insn_kv3_v1_faddwq[] = { "faddwq" };
+static const char *insn_kv3_v1_fcdivd[] = { "fcdivd" };
+static const char *insn_kv3_v1_fcdivw[] = { "fcdivw" };
+static const char *insn_kv3_v1_fcdivwp[] = { "fcdivwp" };
+static const char *insn_kv3_v1_fcompd[] = { "fcompd" };
+static const char *insn_kv3_v1_fcompnhq[] = { "fcompnhq" };
+static const char *insn_kv3_v1_fcompnwp[] = { "fcompnwp" };
+static const char *insn_kv3_v1_fcompw[] = { "fcompw" };
+static const char *insn_kv3_v1_fdot2w[] = { "fdot2w" };
+static const char *insn_kv3_v1_fdot2wd[] = { "fdot2wd" };
+static const char *insn_kv3_v1_fdot2wdp[] = { "fdot2wdp" };
+static const char *insn_kv3_v1_fdot2wzp[] = { "fdot2wzp" };
+static const char *insn_kv3_v1_fence[] = { "fence" };
+static const char *insn_kv3_v1_ffmad[] = { "ffmad" };
+static const char *insn_kv3_v1_ffmahq[] = { "ffmahq" };
+static const char *insn_kv3_v1_ffmahw[] = { "ffmahw" };
+static const char *insn_kv3_v1_ffmahwq[] = { "ffmahwq" };
+static const char *insn_kv3_v1_ffmaw[] = { "ffmaw" };
+static const char *insn_kv3_v1_ffmawd[] = { "ffmawd" };
+static const char *insn_kv3_v1_ffmawdp[] = { "ffmawdp" };
+static const char *insn_kv3_v1_ffmawp[] = { "ffmawp" };
+static const char *insn_kv3_v1_ffmsd[] = { "ffmsd" };
+static const char *insn_kv3_v1_ffmshq[] = { "ffmshq" };
+static const char *insn_kv3_v1_ffmshw[] = { "ffmshw" };
+static const char *insn_kv3_v1_ffmshwq[] = { "ffmshwq" };
+static const char *insn_kv3_v1_ffmsw[] = { "ffmsw" };
+static const char *insn_kv3_v1_ffmswd[] = { "ffmswd" };
+static const char *insn_kv3_v1_ffmswdp[] = { "ffmswdp" };
+static const char *insn_kv3_v1_ffmswp[] = { "ffmswp" };
+static const char *insn_kv3_v1_fixedd[] = { "fixedd" };
+static const char *insn_kv3_v1_fixedud[] = { "fixedud" };
+static const char *insn_kv3_v1_fixeduw[] = { "fixeduw" };
+static const char *insn_kv3_v1_fixeduwp[] = { "fixeduwp" };
+static const char *insn_kv3_v1_fixedw[] = { "fixedw" };
+static const char *insn_kv3_v1_fixedwp[] = { "fixedwp" };
+static const char *insn_kv3_v1_floatd[] = { "floatd" };
+static const char *insn_kv3_v1_floatud[] = { "floatud" };
+static const char *insn_kv3_v1_floatuw[] = { "floatuw" };
+static const char *insn_kv3_v1_floatuwp[] = { "floatuwp" };
+static const char *insn_kv3_v1_floatw[] = { "floatw" };
+static const char *insn_kv3_v1_floatwp[] = { "floatwp" };
+static const char *insn_kv3_v1_fmaxd[] = { "fmaxd" };
+static const char *insn_kv3_v1_fmaxhq[] = { "fmaxhq" };
+static const char *insn_kv3_v1_fmaxw[] = { "fmaxw" };
+static const char *insn_kv3_v1_fmaxwp[] = { "fmaxwp" };
+static const char *insn_kv3_v1_fmind[] = { "fmind" };
+static const char *insn_kv3_v1_fminhq[] = { "fminhq" };
+static const char *insn_kv3_v1_fminw[] = { "fminw" };
+static const char *insn_kv3_v1_fminwp[] = { "fminwp" };
+static const char *insn_kv3_v1_fmm212w[] = { "fmm212w" };
+static const char *insn_kv3_v1_fmma212w[] = { "fmma212w" };
+static const char *insn_kv3_v1_fmma242hw0[] = { "fmma242hw0" };
+static const char *insn_kv3_v1_fmma242hw1[] = { "fmma242hw1" };
+static const char *insn_kv3_v1_fmma242hw2[] = { "fmma242hw2" };
+static const char *insn_kv3_v1_fmma242hw3[] = { "fmma242hw3" };
+static const char *insn_kv3_v1_fmms212w[] = { "fmms212w" };
+static const char *insn_kv3_v1_fmuld[] = { "fmuld" };
+static const char *insn_kv3_v1_fmulhq[] = { "fmulhq" };
+static const char *insn_kv3_v1_fmulhw[] = { "fmulhw" };
+static const char *insn_kv3_v1_fmulhwq[] = { "fmulhwq" };
+static const char *insn_kv3_v1_fmulw[] = { "fmulw" };
+static const char *insn_kv3_v1_fmulwc[] = { "fmulwc" };
+static const char *insn_kv3_v1_fmulwc_c[] = { "fmulwc.c" };
+static const char *insn_kv3_v1_fmulwd[] = { "fmulwd" };
+static const char *insn_kv3_v1_fmulwdc[] = { "fmulwdc" };
+static const char *insn_kv3_v1_fmulwdc_c[] = { "fmulwdc.c" };
+static const char *insn_kv3_v1_fmulwdp[] = { "fmulwdp" };
+static const char *insn_kv3_v1_fmulwp[] = { "fmulwp" };
+static const char *insn_kv3_v1_fmulwq[] = { "fmulwq" };
+static const char *insn_kv3_v1_fnarrow44wh[] = { "fnarrow44wh" };
+static const char *insn_kv3_v1_fnarrowdw[] = { "fnarrowdw" };
+static const char *insn_kv3_v1_fnarrowdwp[] = { "fnarrowdwp" };
+static const char *insn_kv3_v1_fnarrowwh[] = { "fnarrowwh" };
+static const char *insn_kv3_v1_fnarrowwhq[] = { "fnarrowwhq" };
+static const char *insn_kv3_v1_fnegd[] = { "fnegd" };
+static const char *insn_kv3_v1_fneghq[] = { "fneghq" };
+static const char *insn_kv3_v1_fnegw[] = { "fnegw" };
+static const char *insn_kv3_v1_fnegwp[] = { "fnegwp" };
+static const char *insn_kv3_v1_frecw[] = { "frecw" };
+static const char *insn_kv3_v1_frsrw[] = { "frsrw" };
+static const char *insn_kv3_v1_fsbfd[] = { "fsbfd" };
+static const char *insn_kv3_v1_fsbfdc[] = { "fsbfdc" };
+static const char *insn_kv3_v1_fsbfdc_c[] = { "fsbfdc.c" };
+static const char *insn_kv3_v1_fsbfdp[] = { "fsbfdp" };
+static const char *insn_kv3_v1_fsbfhq[] = { "fsbfhq" };
+static const char *insn_kv3_v1_fsbfw[] = { "fsbfw" };
+static const char *insn_kv3_v1_fsbfwc[] = { "fsbfwc" };
+static const char *insn_kv3_v1_fsbfwc_c[] = { "fsbfwc.c" };
+static const char *insn_kv3_v1_fsbfwcp[] = { "fsbfwcp" };
+static const char *insn_kv3_v1_fsbfwcp_c[] = { "fsbfwcp.c" };
+static const char *insn_kv3_v1_fsbfwp[] = { "fsbfwp" };
+static const char *insn_kv3_v1_fsbfwq[] = { "fsbfwq" };
+static const char *insn_kv3_v1_fscalewv[] = { "fscalewv" };
+static const char *insn_kv3_v1_fsdivd[] = { "fsdivd" };
+static const char *insn_kv3_v1_fsdivw[] = { "fsdivw" };
+static const char *insn_kv3_v1_fsdivwp[] = { "fsdivwp" };
+static const char *insn_kv3_v1_fsrecd[] = { "fsrecd" };
+static const char *insn_kv3_v1_fsrecw[] = { "fsrecw" };
+static const char *insn_kv3_v1_fsrecwp[] = { "fsrecwp" };
+static const char *insn_kv3_v1_fsrsrd[] = { "fsrsrd" };
+static const char *insn_kv3_v1_fsrsrw[] = { "fsrsrw" };
+static const char *insn_kv3_v1_fsrsrwp[] = { "fsrsrwp" };
+static const char *insn_kv3_v1_fwidenlhw[] = { "fwidenlhw" };
+static const char *insn_kv3_v1_fwidenlhwp[] = { "fwidenlhwp" };
+static const char *insn_kv3_v1_fwidenlwd[] = { "fwidenlwd" };
+static const char *insn_kv3_v1_fwidenmhw[] = { "fwidenmhw" };
+static const char *insn_kv3_v1_fwidenmhwp[] = { "fwidenmhwp" };
+static const char *insn_kv3_v1_fwidenmwd[] = { "fwidenmwd" };
+static const char *insn_kv3_v1_get[] = { "get" };
+static const char *insn_kv3_v1_goto[] = { "goto" };
+static const char *insn_kv3_v1_i1inval[] = { "i1inval" };
+static const char *insn_kv3_v1_i1invals[] = { "i1invals" };
+static const char *insn_kv3_v1_icall[] = { "icall" };
+static const char *insn_kv3_v1_iget[] = { "iget" };
+static const char *insn_kv3_v1_igoto[] = { "igoto" };
+static const char *insn_kv3_v1_insf[] = { "insf" };
+static const char *insn_kv3_v1_landd[] = { "landd" };
+static const char *insn_kv3_v1_landhq[] = { "landhq" };
+static const char *insn_kv3_v1_landw[] = { "landw" };
+static const char *insn_kv3_v1_landwp[] = { "landwp" };
+static const char *insn_kv3_v1_lbs[] = { "lbs" };
+static const char *insn_kv3_v1_lbz[] = { "lbz" };
+static const char *insn_kv3_v1_ld[] = { "ld" };
+static const char *insn_kv3_v1_lhs[] = { "lhs" };
+static const char *insn_kv3_v1_lhz[] = { "lhz" };
+static const char *insn_kv3_v1_lnandd[] = { "lnandd" };
+static const char *insn_kv3_v1_lnandhq[] = { "lnandhq" };
+static const char *insn_kv3_v1_lnandw[] = { "lnandw" };
+static const char *insn_kv3_v1_lnandwp[] = { "lnandwp" };
+static const char *insn_kv3_v1_lnord[] = { "lnord" };
+static const char *insn_kv3_v1_lnorhq[] = { "lnorhq" };
+static const char *insn_kv3_v1_lnorw[] = { "lnorw" };
+static const char *insn_kv3_v1_lnorwp[] = { "lnorwp" };
+static const char *insn_kv3_v1_lo[] = { "lo" };
+static const char *insn_kv3_v1_loopdo[] = { "loopdo" };
+static const char *insn_kv3_v1_lord[] = { "lord" };
+static const char *insn_kv3_v1_lorhq[] = { "lorhq" };
+static const char *insn_kv3_v1_lorw[] = { "lorw" };
+static const char *insn_kv3_v1_lorwp[] = { "lorwp" };
+static const char *insn_kv3_v1_lq[] = { "lq" };
+static const char *insn_kv3_v1_lws[] = { "lws" };
+static const char *insn_kv3_v1_lwz[] = { "lwz" };
+static const char *insn_kv3_v1_maddd[] = { "maddd" };
+static const char *insn_kv3_v1_madddt[] = { "madddt" };
+static const char *insn_kv3_v1_maddhq[] = { "maddhq" };
+static const char *insn_kv3_v1_maddhwq[] = { "maddhwq" };
+static const char *insn_kv3_v1_maddsudt[] = { "maddsudt" };
+static const char *insn_kv3_v1_maddsuhwq[] = { "maddsuhwq" };
+static const char *insn_kv3_v1_maddsuwd[] = { "maddsuwd" };
+static const char *insn_kv3_v1_maddsuwdp[] = { "maddsuwdp" };
+static const char *insn_kv3_v1_maddudt[] = { "maddudt" };
+static const char *insn_kv3_v1_madduhwq[] = { "madduhwq" };
+static const char *insn_kv3_v1_madduwd[] = { "madduwd" };
+static const char *insn_kv3_v1_madduwdp[] = { "madduwdp" };
+static const char *insn_kv3_v1_madduzdt[] = { "madduzdt" };
+static const char *insn_kv3_v1_maddw[] = { "maddw" };
+static const char *insn_kv3_v1_maddwd[] = { "maddwd" };
+static const char *insn_kv3_v1_maddwdp[] = { "maddwdp" };
+static const char *insn_kv3_v1_maddwp[] = { "maddwp" };
+static const char *insn_kv3_v1_make[] = { "make" };
+static const char *insn_kv3_v1_maxd[] = { "maxd" };
+static const char *insn_kv3_v1_maxd_abase[] = { "maxd.@" };
+static const char *insn_kv3_v1_maxhq[] = { "maxhq" };
+static const char *insn_kv3_v1_maxud[] = { "maxud" };
+static const char *insn_kv3_v1_maxud_abase[] = { "maxud.@" };
+static const char *insn_kv3_v1_maxuhq[] = { "maxuhq" };
+static const char *insn_kv3_v1_maxuw[] = { "maxuw" };
+static const char *insn_kv3_v1_maxuwp[] = { "maxuwp" };
+static const char *insn_kv3_v1_maxw[] = { "maxw" };
+static const char *insn_kv3_v1_maxwp[] = { "maxwp" };
+static const char *insn_kv3_v1_mind[] = { "mind" };
+static const char *insn_kv3_v1_mind_abase[] = { "mind.@" };
+static const char *insn_kv3_v1_minhq[] = { "minhq" };
+static const char *insn_kv3_v1_minud[] = { "minud" };
+static const char *insn_kv3_v1_minud_abase[] = { "minud.@" };
+static const char *insn_kv3_v1_minuhq[] = { "minuhq" };
+static const char *insn_kv3_v1_minuw[] = { "minuw" };
+static const char *insn_kv3_v1_minuwp[] = { "minuwp" };
+static const char *insn_kv3_v1_minw[] = { "minw" };
+static const char *insn_kv3_v1_minwp[] = { "minwp" };
+static const char *insn_kv3_v1_mm212w[] = { "mm212w" };
+static const char *insn_kv3_v1_mma212w[] = { "mma212w" };
+static const char *insn_kv3_v1_mma444hbd0[] = { "mma444hbd0" };
+static const char *insn_kv3_v1_mma444hbd1[] = { "mma444hbd1" };
+static const char *insn_kv3_v1_mma444hd[] = { "mma444hd" };
+static const char *insn_kv3_v1_mma444suhbd0[] = { "mma444suhbd0" };
+static const char *insn_kv3_v1_mma444suhbd1[] = { "mma444suhbd1" };
+static const char *insn_kv3_v1_mma444suhd[] = { "mma444suhd" };
+static const char *insn_kv3_v1_mma444uhbd0[] = { "mma444uhbd0" };
+static const char *insn_kv3_v1_mma444uhbd1[] = { "mma444uhbd1" };
+static const char *insn_kv3_v1_mma444uhd[] = { "mma444uhd" };
+static const char *insn_kv3_v1_mma444ushbd0[] = { "mma444ushbd0" };
+static const char *insn_kv3_v1_mma444ushbd1[] = { "mma444ushbd1" };
+static const char *insn_kv3_v1_mma444ushd[] = { "mma444ushd" };
+static const char *insn_kv3_v1_mms212w[] = { "mms212w" };
+static const char *insn_kv3_v1_movetq[] = { "movetq" };
+static const char *insn_kv3_v1_msbfd[] = { "msbfd" };
+static const char *insn_kv3_v1_msbfdt[] = { "msbfdt" };
+static const char *insn_kv3_v1_msbfhq[] = { "msbfhq" };
+static const char *insn_kv3_v1_msbfhwq[] = { "msbfhwq" };
+static const char *insn_kv3_v1_msbfsudt[] = { "msbfsudt" };
+static const char *insn_kv3_v1_msbfsuhwq[] = { "msbfsuhwq" };
+static const char *insn_kv3_v1_msbfsuwd[] = { "msbfsuwd" };
+static const char *insn_kv3_v1_msbfsuwdp[] = { "msbfsuwdp" };
+static const char *insn_kv3_v1_msbfudt[] = { "msbfudt" };
+static const char *insn_kv3_v1_msbfuhwq[] = { "msbfuhwq" };
+static const char *insn_kv3_v1_msbfuwd[] = { "msbfuwd" };
+static const char *insn_kv3_v1_msbfuwdp[] = { "msbfuwdp" };
+static const char *insn_kv3_v1_msbfuzdt[] = { "msbfuzdt" };
+static const char *insn_kv3_v1_msbfw[] = { "msbfw" };
+static const char *insn_kv3_v1_msbfwd[] = { "msbfwd" };
+static const char *insn_kv3_v1_msbfwdp[] = { "msbfwdp" };
+static const char *insn_kv3_v1_msbfwp[] = { "msbfwp" };
+static const char *insn_kv3_v1_muld[] = { "muld" };
+static const char *insn_kv3_v1_muldt[] = { "muldt" };
+static const char *insn_kv3_v1_mulhq[] = { "mulhq" };
+static const char *insn_kv3_v1_mulhwq[] = { "mulhwq" };
+static const char *insn_kv3_v1_mulsudt[] = { "mulsudt" };
+static const char *insn_kv3_v1_mulsuhwq[] = { "mulsuhwq" };
+static const char *insn_kv3_v1_mulsuwd[] = { "mulsuwd" };
+static const char *insn_kv3_v1_mulsuwdp[] = { "mulsuwdp" };
+static const char *insn_kv3_v1_muludt[] = { "muludt" };
+static const char *insn_kv3_v1_muluhwq[] = { "muluhwq" };
+static const char *insn_kv3_v1_muluwd[] = { "muluwd" };
+static const char *insn_kv3_v1_muluwdp[] = { "muluwdp" };
+static const char *insn_kv3_v1_mulw[] = { "mulw" };
+static const char *insn_kv3_v1_mulwc[] = { "mulwc" };
+static const char *insn_kv3_v1_mulwc_c[] = { "mulwc.c" };
+static const char *insn_kv3_v1_mulwd[] = { "mulwd" };
+static const char *insn_kv3_v1_mulwdc[] = { "mulwdc" };
+static const char *insn_kv3_v1_mulwdc_c[] = { "mulwdc.c" };
+static const char *insn_kv3_v1_mulwdp[] = { "mulwdp" };
+static const char *insn_kv3_v1_mulwp[] = { "mulwp" };
+static const char *insn_kv3_v1_mulwq[] = { "mulwq" };
+static const char *insn_kv3_v1_nandd[] = { "nandd" };
+static const char *insn_kv3_v1_nandd_abase[] = { "nandd.@" };
+static const char *insn_kv3_v1_nandw[] = { "nandw" };
+static const char *insn_kv3_v1_negd[] = { "negd" };
+static const char *insn_kv3_v1_neghq[] = { "neghq" };
+static const char *insn_kv3_v1_negw[] = { "negw" };
+static const char *insn_kv3_v1_negwp[] = { "negwp" };
+static const char *insn_kv3_v1_nop[] = { "nop" };
+static const char *insn_kv3_v1_nord[] = { "nord" };
+static const char *insn_kv3_v1_nord_abase[] = { "nord.@" };
+static const char *insn_kv3_v1_norw[] = { "norw" };
+static const char *insn_kv3_v1_notd[] = { "notd" };
+static const char *insn_kv3_v1_notw[] = { "notw" };
+static const char *insn_kv3_v1_nxord[] = { "nxord" };
+static const char *insn_kv3_v1_nxord_abase[] = { "nxord.@" };
+static const char *insn_kv3_v1_nxorw[] = { "nxorw" };
+static const char *insn_kv3_v1_ord[] = { "ord" };
+static const char *insn_kv3_v1_ord_abase[] = { "ord.@" };
+static const char *insn_kv3_v1_ornd[] = { "ornd" };
+static const char *insn_kv3_v1_ornd_abase[] = { "ornd.@" };
+static const char *insn_kv3_v1_ornw[] = { "ornw" };
+static const char *insn_kv3_v1_orw[] = { "orw" };
+static const char *insn_kv3_v1_pcrel[] = { "pcrel" };
+static const char *insn_kv3_v1_ret[] = { "ret" };
+static const char *insn_kv3_v1_rfe[] = { "rfe" };
+static const char *insn_kv3_v1_rolw[] = { "rolw" };
+static const char *insn_kv3_v1_rolwps[] = { "rolwps" };
+static const char *insn_kv3_v1_rorw[] = { "rorw" };
+static const char *insn_kv3_v1_rorwps[] = { "rorwps" };
+static const char *insn_kv3_v1_rswap[] = { "rswap" };
+static const char *insn_kv3_v1_satd[] = { "satd" };
+static const char *insn_kv3_v1_satdh[] = { "satdh" };
+static const char *insn_kv3_v1_satdw[] = { "satdw" };
+static const char *insn_kv3_v1_sb[] = { "sb" };
+static const char *insn_kv3_v1_sbfcd[] = { "sbfcd" };
+static const char *insn_kv3_v1_sbfcd_i[] = { "sbfcd.i" };
+static const char *insn_kv3_v1_sbfd[] = { "sbfd" };
+static const char *insn_kv3_v1_sbfd_abase[] = { "sbfd.@" };
+static const char *insn_kv3_v1_sbfhcp_c[] = { "sbfhcp.c" };
+static const char *insn_kv3_v1_sbfhq[] = { "sbfhq" };
+static const char *insn_kv3_v1_sbfsd[] = { "sbfsd" };
+static const char *insn_kv3_v1_sbfshq[] = { "sbfshq" };
+static const char *insn_kv3_v1_sbfsw[] = { "sbfsw" };
+static const char *insn_kv3_v1_sbfswp[] = { "sbfswp" };
+static const char *insn_kv3_v1_sbfuwd[] = { "sbfuwd" };
+static const char *insn_kv3_v1_sbfw[] = { "sbfw" };
+static const char *insn_kv3_v1_sbfwc_c[] = { "sbfwc.c" };
+static const char *insn_kv3_v1_sbfwd[] = { "sbfwd" };
+static const char *insn_kv3_v1_sbfwp[] = { "sbfwp" };
+static const char *insn_kv3_v1_sbfx16d[] = { "sbfx16d" };
+static const char *insn_kv3_v1_sbfx16hq[] = { "sbfx16hq" };
+static const char *insn_kv3_v1_sbfx16uwd[] = { "sbfx16uwd" };
+static const char *insn_kv3_v1_sbfx16w[] = { "sbfx16w" };
+static const char *insn_kv3_v1_sbfx16wd[] = { "sbfx16wd" };
+static const char *insn_kv3_v1_sbfx16wp[] = { "sbfx16wp" };
+static const char *insn_kv3_v1_sbfx2d[] = { "sbfx2d" };
+static const char *insn_kv3_v1_sbfx2hq[] = { "sbfx2hq" };
+static const char *insn_kv3_v1_sbfx2uwd[] = { "sbfx2uwd" };
+static const char *insn_kv3_v1_sbfx2w[] = { "sbfx2w" };
+static const char *insn_kv3_v1_sbfx2wd[] = { "sbfx2wd" };
+static const char *insn_kv3_v1_sbfx2wp[] = { "sbfx2wp" };
+static const char *insn_kv3_v1_sbfx4d[] = { "sbfx4d" };
+static const char *insn_kv3_v1_sbfx4hq[] = { "sbfx4hq" };
+static const char *insn_kv3_v1_sbfx4uwd[] = { "sbfx4uwd" };
+static const char *insn_kv3_v1_sbfx4w[] = { "sbfx4w" };
+static const char *insn_kv3_v1_sbfx4wd[] = { "sbfx4wd" };
+static const char *insn_kv3_v1_sbfx4wp[] = { "sbfx4wp" };
+static const char *insn_kv3_v1_sbfx8d[] = { "sbfx8d" };
+static const char *insn_kv3_v1_sbfx8hq[] = { "sbfx8hq" };
+static const char *insn_kv3_v1_sbfx8uwd[] = { "sbfx8uwd" };
+static const char *insn_kv3_v1_sbfx8w[] = { "sbfx8w" };
+static const char *insn_kv3_v1_sbfx8wd[] = { "sbfx8wd" };
+static const char *insn_kv3_v1_sbfx8wp[] = { "sbfx8wp" };
+static const char *insn_kv3_v1_sbmm8[] = { "sbmm8" };
+static const char *insn_kv3_v1_sbmm8_abase[] = { "sbmm8.@" };
+static const char *insn_kv3_v1_sbmmt8[] = { "sbmmt8" };
+static const char *insn_kv3_v1_sbmmt8_abase[] = { "sbmmt8.@" };
+static const char *insn_kv3_v1_scall[] = { "scall" };
+static const char *insn_kv3_v1_sd[] = { "sd" };
+static const char *insn_kv3_v1_set[] = { "set" };
+static const char *insn_kv3_v1_sh[] = { "sh" };
+static const char *insn_kv3_v1_sleep[] = { "sleep" };
+static const char *insn_kv3_v1_slld[] = { "slld" };
+static const char *insn_kv3_v1_sllhqs[] = { "sllhqs" };
+static const char *insn_kv3_v1_sllw[] = { "sllw" };
+static const char *insn_kv3_v1_sllwps[] = { "sllwps" };
+static const char *insn_kv3_v1_slsd[] = { "slsd" };
+static const char *insn_kv3_v1_slshqs[] = { "slshqs" };
+static const char *insn_kv3_v1_slsw[] = { "slsw" };
+static const char *insn_kv3_v1_slswps[] = { "slswps" };
+static const char *insn_kv3_v1_so[] = { "so" };
+static const char *insn_kv3_v1_sq[] = { "sq" };
+static const char *insn_kv3_v1_srad[] = { "srad" };
+static const char *insn_kv3_v1_srahqs[] = { "srahqs" };
+static const char *insn_kv3_v1_sraw[] = { "sraw" };
+static const char *insn_kv3_v1_srawps[] = { "srawps" };
+static const char *insn_kv3_v1_srld[] = { "srld" };
+static const char *insn_kv3_v1_srlhqs[] = { "srlhqs" };
+static const char *insn_kv3_v1_srlw[] = { "srlw" };
+static const char *insn_kv3_v1_srlwps[] = { "srlwps" };
+static const char *insn_kv3_v1_srsd[] = { "srsd" };
+static const char *insn_kv3_v1_srshqs[] = { "srshqs" };
+static const char *insn_kv3_v1_srsw[] = { "srsw" };
+static const char *insn_kv3_v1_srswps[] = { "srswps" };
+static const char *insn_kv3_v1_stop[] = { "stop" };
+static const char *insn_kv3_v1_stsud[] = { "stsud" };
+static const char *insn_kv3_v1_stsuw[] = { "stsuw" };
+static const char *insn_kv3_v1_sw[] = { "sw" };
+static const char *insn_kv3_v1_sxbd[] = { "sxbd" };
+static const char *insn_kv3_v1_sxhd[] = { "sxhd" };
+static const char *insn_kv3_v1_sxlbhq[] = { "sxlbhq" };
+static const char *insn_kv3_v1_sxlhwp[] = { "sxlhwp" };
+static const char *insn_kv3_v1_sxmbhq[] = { "sxmbhq" };
+static const char *insn_kv3_v1_sxmhwp[] = { "sxmhwp" };
+static const char *insn_kv3_v1_sxwd[] = { "sxwd" };
+static const char *insn_kv3_v1_syncgroup[] = { "syncgroup" };
+static const char *insn_kv3_v1_tlbdinval[] = { "tlbdinval" };
+static const char *insn_kv3_v1_tlbiinval[] = { "tlbiinval" };
+static const char *insn_kv3_v1_tlbprobe[] = { "tlbprobe" };
+static const char *insn_kv3_v1_tlbread[] = { "tlbread" };
+static const char *insn_kv3_v1_tlbwrite[] = { "tlbwrite" };
+static const char *insn_kv3_v1_waitit[] = { "waitit" };
+static const char *insn_kv3_v1_wfxl[] = { "wfxl" };
+static const char *insn_kv3_v1_wfxm[] = { "wfxm" };
+static const char *insn_kv3_v1_xcopyo[] = { "xcopyo" };
+static const char *insn_kv3_v1_xlo[] = { "xlo" };
+static const char *insn_kv3_v1_xmma484bw[] = { "xmma484bw" };
+static const char *insn_kv3_v1_xmma484subw[] = { "xmma484subw" };
+static const char *insn_kv3_v1_xmma484ubw[] = { "xmma484ubw" };
+static const char *insn_kv3_v1_xmma484usbw[] = { "xmma484usbw" };
+static const char *insn_kv3_v1_xmovefo[] = { "xmovefo" };
+static const char *insn_kv3_v1_xmovetq[] = { "xmovetq" };
+static const char *insn_kv3_v1_xmt44d[] = { "xmt44d" };
+static const char *insn_kv3_v1_xord[] = { "xord" };
+static const char *insn_kv3_v1_xord_abase[] = { "xord.@" };
+static const char *insn_kv3_v1_xorw[] = { "xorw" };
+static const char *insn_kv3_v1_xso[] = { "xso" };
+static const char *insn_kv3_v1_zxbd[] = { "zxbd" };
+static const char *insn_kv3_v1_zxhd[] = { "zxhd" };
+static const char *insn_kv3_v1_zxwd[] = { "zxwd" };
+static const char *sep_kv3_v1_comma[] = { "," };
+static const char *sep_kv3_v1_equal[] = { "=" };
+static const char *sep_kv3_v1_qmark[] = { "?" };
+static const char *sep_kv3_v1_rsbracket[] = { "[" };
+static const char *sep_kv3_v1_lsbracket[] = { "]" };
+
+#define _enc(x) (1ULL << ((x) - RegClass_kv3_v1_aloneReg))
+enum prc_kv3_v1_id_t {
+  prc_kv3_v1_id_00 = _enc (RegClass_kv3_v1_aloneReg)
+   | _enc (RegClass_kv3_v1_onlyfxReg)
+   | _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlysetReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_01 = _enc (RegClass_kv3_v1_aloneReg)
+   | _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlysetReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_02 = _enc (RegClass_kv3_v1_aloneReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_03 = _enc (RegClass_kv3_v1_blockReg)
+   | _enc (RegClass_kv3_v1_blockReg0M4)
+   | _enc (RegClass_kv3_v1_blockRegE),
+  prc_kv3_v1_id_04 = _enc (RegClass_kv3_v1_blockReg)
+   | _enc (RegClass_kv3_v1_blockReg1M4)
+   | _enc (RegClass_kv3_v1_blockRegO),
+  prc_kv3_v1_id_05 = _enc (RegClass_kv3_v1_blockReg)
+   | _enc (RegClass_kv3_v1_blockReg2M4)
+   | _enc (RegClass_kv3_v1_blockRegE),
+  prc_kv3_v1_id_06 = _enc (RegClass_kv3_v1_blockReg)
+   | _enc (RegClass_kv3_v1_blockReg3M4)
+   | _enc (RegClass_kv3_v1_blockRegO),
+  prc_kv3_v1_id_07 = _enc (RegClass_kv3_v1_blockReg_0)
+   | _enc (RegClass_kv3_v1_coproReg)
+   | _enc (RegClass_kv3_v1_coproReg0M4)
+   | _enc (RegClass_kv3_v1_vectorReg_0),
+  prc_kv3_v1_id_08 = _enc (RegClass_kv3_v1_blockReg_0)
+   | _enc (RegClass_kv3_v1_coproReg)
+   | _enc (RegClass_kv3_v1_coproReg2M4)
+   | _enc (RegClass_kv3_v1_vectorReg_2),
+  prc_kv3_v1_id_09 = _enc (RegClass_kv3_v1_blockReg_1)
+   | _enc (RegClass_kv3_v1_coproReg)
+   | _enc (RegClass_kv3_v1_coproReg1M4)
+   | _enc (RegClass_kv3_v1_vectorReg_1),
+  prc_kv3_v1_id_10 = _enc (RegClass_kv3_v1_blockReg_1)
+   | _enc (RegClass_kv3_v1_coproReg)
+   | _enc (RegClass_kv3_v1_coproReg3M4)
+   | _enc (RegClass_kv3_v1_vectorReg_3),
+  prc_kv3_v1_id_11 = _enc (RegClass_kv3_v1_buffer16Reg),
+  prc_kv3_v1_id_12 = _enc (RegClass_kv3_v1_buffer2Reg),
+  prc_kv3_v1_id_13 = _enc (RegClass_kv3_v1_buffer32Reg),
+  prc_kv3_v1_id_14 = _enc (RegClass_kv3_v1_buffer4Reg),
+  prc_kv3_v1_id_15 = _enc (RegClass_kv3_v1_buffer64Reg),
+  prc_kv3_v1_id_16 = _enc (RegClass_kv3_v1_buffer8Reg),
+  prc_kv3_v1_id_17 = _enc (RegClass_kv3_v1_matrixReg),
+  prc_kv3_v1_id_18 = _enc (RegClass_kv3_v1_matrixReg_0)
+   | _enc (RegClass_kv3_v1_tileReg_0)
+   | _enc (RegClass_kv3_v1_vectorReg)
+   | _enc (RegClass_kv3_v1_vectorRegE),
+  prc_kv3_v1_id_19 = _enc (RegClass_kv3_v1_matrixReg_1)
+   | _enc (RegClass_kv3_v1_tileReg_1)
+   | _enc (RegClass_kv3_v1_vectorReg)
+   | _enc (RegClass_kv3_v1_vectorRegO),
+  prc_kv3_v1_id_20 = _enc (RegClass_kv3_v1_matrixReg_2)
+   | _enc (RegClass_kv3_v1_tileReg_0)
+   | _enc (RegClass_kv3_v1_vectorReg)
+   | _enc (RegClass_kv3_v1_vectorRegE),
+  prc_kv3_v1_id_21 = _enc (RegClass_kv3_v1_matrixReg_3)
+   | _enc (RegClass_kv3_v1_tileReg_1)
+   | _enc (RegClass_kv3_v1_vectorReg)
+   | _enc (RegClass_kv3_v1_vectorRegO),
+  prc_kv3_v1_id_22 = _enc (RegClass_kv3_v1_onlyfxReg)
+   | _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlysetReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_23 = _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_24 = _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlyraReg)
+   | _enc (RegClass_kv3_v1_onlysetReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_25 = _enc (RegClass_kv3_v1_onlygetReg)
+   | _enc (RegClass_kv3_v1_onlysetReg)
+   | _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_26 = _enc (RegClass_kv3_v1_onlyswapReg)
+   | _enc (RegClass_kv3_v1_systemReg),
+  prc_kv3_v1_id_27 = _enc (RegClass_kv3_v1_pairedReg),
+  prc_kv3_v1_id_28 = _enc (RegClass_kv3_v1_pairedReg_0)
+   | _enc (RegClass_kv3_v1_quadReg_0)
+   | _enc (RegClass_kv3_v1_singleReg),
+  prc_kv3_v1_id_29 = _enc (RegClass_kv3_v1_pairedReg_0)
+   | _enc (RegClass_kv3_v1_quadReg_2)
+   | _enc (RegClass_kv3_v1_singleReg),
+  prc_kv3_v1_id_30 = _enc (RegClass_kv3_v1_pairedReg_1)
+   | _enc (RegClass_kv3_v1_quadReg_1)
+   | _enc (RegClass_kv3_v1_singleReg),
+  prc_kv3_v1_id_31 = _enc (RegClass_kv3_v1_pairedReg_1)
+   | _enc (RegClass_kv3_v1_quadReg_3)
+   | _enc (RegClass_kv3_v1_singleReg),
+  prc_kv3_v1_id_32 = _enc (RegClass_kv3_v1_quadReg),
+  prc_kv3_v1_id_33 = _enc (RegClass_kv3_v1_tileReg),
+};
+#undef _enc
+
+static const char *prc_kv3_v1_00[] = {
+  "$mmc", "$s28", "$sps", "$s132",
+  "$sps_pl0", "$s68", "$sps_pl1", "$s69",
+  "$sps_pl2", "$s70", "$sps_pl3", "$s71",
+};
+
+static const char *prc_kv3_v1_01[] = {
+  "$ps", "$s1",
+};
+
+static const char *prc_kv3_v1_02[] = {
+  "$syow", "$s96", "$htow", "$s97",
+  "$itow", "$s98", "$dow", "$s99",
+  "$mow", "$s100", "$psow", "$s101",
+};
+
+static const char *prc_kv3_v1_03[] = {
+  "$a0_lo", "$a0.lo", "$a2_lo", "$a2.lo",
+  "$a4_lo", "$a4.lo", "$a6_lo", "$a6.lo",
+  "$a8_lo", "$a8.lo", "$a10_lo", "$a10.lo",
+  "$a12_lo", "$a12.lo", "$a14_lo", "$a14.lo",
+  "$a16_lo", "$a16.lo", "$a18_lo", "$a18.lo",
+  "$a20_lo", "$a20.lo", "$a22_lo", "$a22.lo",
+  "$a24_lo", "$a24.lo", "$a26_lo", "$a26.lo",
+  "$a28_lo", "$a28.lo", "$a30_lo", "$a30.lo",
+  "$a32_lo", "$a32.lo", "$a34_lo", "$a34.lo",
+  "$a36_lo", "$a36.lo", "$a38_lo", "$a38.lo",
+  "$a40_lo", "$a40.lo", "$a42_lo", "$a42.lo",
+  "$a44_lo", "$a44.lo", "$a46_lo", "$a46.lo",
+  "$a48_lo", "$a48.lo", "$a50_lo", "$a50.lo",
+  "$a52_lo", "$a52.lo", "$a54_lo", "$a54.lo",
+  "$a56_lo", "$a56.lo", "$a58_lo", "$a58.lo",
+  "$a60_lo", "$a60.lo", "$a62_lo", "$a62.lo",
+};
+
+static const char *prc_kv3_v1_04[] = {
+  "$a0_hi", "$a0.hi", "$a2_hi", "$a2.hi",
+  "$a4_hi", "$a4.hi", "$a6_hi", "$a6.hi",
+  "$a8_hi", "$a8.hi", "$a10_hi", "$a10.hi",
+  "$a12_hi", "$a12.hi", "$a14_hi", "$a14.hi",
+  "$a16_hi", "$a16.hi", "$a18_hi", "$a18.hi",
+  "$a20_hi", "$a20.hi", "$a22_hi", "$a22.hi",
+  "$a24_hi", "$a24.hi", "$a26_hi", "$a26.hi",
+  "$a28_hi", "$a28.hi", "$a30_hi", "$a30.hi",
+  "$a32_hi", "$a32.hi", "$a34_hi", "$a34.hi",
+  "$a36_hi", "$a36.hi", "$a38_hi", "$a38.hi",
+  "$a40_hi", "$a40.hi", "$a42_hi", "$a42.hi",
+  "$a44_hi", "$a44.hi", "$a46_hi", "$a46.hi",
+  "$a48_hi", "$a48.hi", "$a50_hi", "$a50.hi",
+  "$a52_hi", "$a52.hi", "$a54_hi", "$a54.hi",
+  "$a56_hi", "$a56.hi", "$a58_hi", "$a58.hi",
+  "$a60_hi", "$a60.hi", "$a62_hi", "$a62.hi",
+};
+
+static const char *prc_kv3_v1_05[] = {
+  "$a1_lo", "$a1.lo", "$a3_lo", "$a3.lo",
+  "$a5_lo", "$a5.lo", "$a7_lo", "$a7.lo",
+  "$a9_lo", "$a9.lo", "$a11_lo", "$a11.lo",
+  "$a13_lo", "$a13.lo", "$a15_lo", "$a15.lo",
+  "$a17_lo", "$a17.lo", "$a19_lo", "$a19.lo",
+  "$a21_lo", "$a21.lo", "$a23_lo", "$a23.lo",
+  "$a25_lo", "$a25.lo", "$a27_lo", "$a27.lo",
+  "$a29_lo", "$a29.lo", "$a31_lo", "$a31.lo",
+  "$a33_lo", "$a33.lo", "$a35_lo", "$a35.lo",
+  "$a37_lo", "$a37.lo", "$a39_lo", "$a39.lo",
+  "$a41_lo", "$a41.lo", "$a43_lo", "$a43.lo",
+  "$a45_lo", "$a45.lo", "$a47_lo", "$a47.lo",
+  "$a49_lo", "$a49.lo", "$a51_lo", "$a51.lo",
+  "$a53_lo", "$a53.lo", "$a55_lo", "$a55.lo",
+  "$a57_lo", "$a57.lo", "$a59_lo", "$a59.lo",
+  "$a61_lo", "$a61.lo", "$a63_lo", "$a63.lo",
+};
+
+static const char *prc_kv3_v1_06[] = {
+  "$a1_hi", "$a1.hi", "$a3_hi", "$a3.hi",
+  "$a5_hi", "$a5.hi", "$a7_hi", "$a7.hi",
+  "$a9_hi", "$a9.hi", "$a11_hi", "$a11.hi",
+  "$a13_hi", "$a13.hi", "$a15_hi", "$a15.hi",
+  "$a17_hi", "$a17.hi", "$a19_hi", "$a19.hi",
+  "$a21_hi", "$a21.hi", "$a23_hi", "$a23.hi",
+  "$a25_hi", "$a25.hi", "$a27_hi", "$a27.hi",
+  "$a29_hi", "$a29.hi", "$a31_hi", "$a31.hi",
+  "$a33_hi", "$a33.hi", "$a35_hi", "$a35.hi",
+  "$a37_hi", "$a37.hi", "$a39_hi", "$a39.hi",
+  "$a41_hi", "$a41.hi", "$a43_hi", "$a43.hi",
+  "$a45_hi", "$a45.hi", "$a47_hi", "$a47.hi",
+  "$a49_hi", "$a49.hi", "$a51_hi", "$a51.hi",
+  "$a53_hi", "$a53.hi", "$a55_hi", "$a55.hi",
+  "$a57_hi", "$a57.hi", "$a59_hi", "$a59.hi",
+  "$a61_hi", "$a61.hi", "$a63_hi", "$a63.hi",
+};
+
+static const char *prc_kv3_v1_07[] = {
+  "$a0_x", "$a0.x", "$a1_x", "$a1.x",
+  "$a2_x", "$a2.x", "$a3_x", "$a3.x",
+  "$a4_x", "$a4.x", "$a5_x", "$a5.x",
+  "$a6_x", "$a6.x", "$a7_x", "$a7.x",
+  "$a8_x", "$a8.x", "$a9_x", "$a9.x",
+  "$a10_x", "$a10.x", "$a11_x", "$a11.x",
+  "$a12_x", "$a12.x", "$a13_x", "$a13.x",
+  "$a14_x", "$a14.x", "$a15_x", "$a15.x",
+  "$a16_x", "$a16.x", "$a17_x", "$a17.x",
+  "$a18_x", "$a18.x", "$a19_x", "$a19.x",
+  "$a20_x", "$a20.x", "$a21_x", "$a21.x",
+  "$a22_x", "$a22.x", "$a23_x", "$a23.x",
+  "$a24_x", "$a24.x", "$a25_x", "$a25.x",
+  "$a26_x", "$a26.x", "$a27_x", "$a27.x",
+  "$a28_x", "$a28.x", "$a29_x", "$a29.x",
+  "$a30_x", "$a30.x", "$a31_x", "$a31.x",
+  "$a32_x", "$a32.x", "$a33_x", "$a33.x",
+  "$a34_x", "$a34.x", "$a35_x", "$a35.x",
+  "$a36_x", "$a36.x", "$a37_x", "$a37.x",
+  "$a38_x", "$a38.x", "$a39_x", "$a39.x",
+  "$a40_x", "$a40.x", "$a41_x", "$a41.x",
+  "$a42_x", "$a42.x", "$a43_x", "$a43.x",
+  "$a44_x", "$a44.x", "$a45_x", "$a45.x",
+  "$a46_x", "$a46.x", "$a47_x", "$a47.x",
+  "$a48_x", "$a48.x", "$a49_x", "$a49.x",
+  "$a50_x", "$a50.x", "$a51_x", "$a51.x",
+  "$a52_x", "$a52.x", "$a53_x", "$a53.x",
+  "$a54_x", "$a54.x", "$a55_x", "$a55.x",
+  "$a56_x", "$a56.x", "$a57_x", "$a57.x",
+  "$a58_x", "$a58.x", "$a59_x", "$a59.x",
+  "$a60_x", "$a60.x", "$a61_x", "$a61.x",
+  "$a62_x", "$a62.x", "$a63_x", "$a63.x",
+};
+
+static const char *prc_kv3_v1_08[] = {
+  "$a0_z", "$a0.z", "$a1_z", "$a1.z",
+  "$a2_z", "$a2.z", "$a3_z", "$a3.z",
+  "$a4_z", "$a4.z", "$a5_z", "$a5.z",
+  "$a6_z", "$a6.z", "$a7_z", "$a7.z",
+  "$a8_z", "$a8.z", "$a9_z", "$a9.z",
+  "$a10_z", "$a10.z", "$a11_z", "$a11.z",
+  "$a12_z", "$a12.z", "$a13_z", "$a13.z",
+  "$a14_z", "$a14.z", "$a15_z", "$a15.z",
+  "$a16_z", "$a16.z", "$a17_z", "$a17.z",
+  "$a18_z", "$a18.z", "$a19_z", "$a19.z",
+  "$a20_z", "$a20.z", "$a21_z", "$a21.z",
+  "$a22_z", "$a22.z", "$a23_z", "$a23.z",
+  "$a24_z", "$a24.z", "$a25_z", "$a25.z",
+  "$a26_z", "$a26.z", "$a27_z", "$a27.z",
+  "$a28_z", "$a28.z", "$a29_z", "$a29.z",
+  "$a30_z", "$a30.z", "$a31_z", "$a31.z",
+  "$a32_z", "$a32.z", "$a33_z", "$a33.z",
+  "$a34_z", "$a34.z", "$a35_z", "$a35.z",
+  "$a36_z", "$a36.z", "$a37_z", "$a37.z",
+  "$a38_z", "$a38.z", "$a39_z", "$a39.z",
+  "$a40_z", "$a40.z", "$a41_z", "$a41.z",
+  "$a42_z", "$a42.z", "$a43_z", "$a43.z",
+  "$a44_z", "$a44.z", "$a45_z", "$a45.z",
+  "$a46_z", "$a46.z", "$a47_z", "$a47.z",
+  "$a48_z", "$a48.z", "$a49_z", "$a49.z",
+  "$a50_z", "$a50.z", "$a51_z", "$a51.z",
+  "$a52_z", "$a52.z", "$a53_z", "$a53.z",
+  "$a54_z", "$a54.z", "$a55_z", "$a55.z",
+  "$a56_z", "$a56.z", "$a57_z", "$a57.z",
+  "$a58_z", "$a58.z", "$a59_z", "$a59.z",
+  "$a60_z", "$a60.z", "$a61_z", "$a61.z",
+  "$a62_z", "$a62.z", "$a63_z", "$a63.z",
+};
+
+static const char *prc_kv3_v1_09[] = {
+  "$a0_y", "$a0.y", "$a1_y", "$a1.y",
+  "$a2_y", "$a2.y", "$a3_y", "$a3.y",
+  "$a4_y", "$a4.y", "$a5_y", "$a5.y",
+  "$a6_y", "$a6.y", "$a7_y", "$a7.y",
+  "$a8_y", "$a8.y", "$a9_y", "$a9.y",
+  "$a10_y", "$a10.y", "$a11_y", "$a11.y",
+  "$a12_y", "$a12.y", "$a13_y", "$a13.y",
+  "$a14_y", "$a14.y", "$a15_y", "$a15.y",
+  "$a16_y", "$a16.y", "$a17_y", "$a17.y",
+  "$a18_y", "$a18.y", "$a19_y", "$a19.y",
+  "$a20_y", "$a20.y", "$a21_y", "$a21.y",
+  "$a22_y", "$a22.y", "$a23_y", "$a23.y",
+  "$a24_y", "$a24.y", "$a25_y", "$a25.y",
+  "$a26_y", "$a26.y", "$a27_y", "$a27.y",
+  "$a28_y", "$a28.y", "$a29_y", "$a29.y",
+  "$a30_y", "$a30.y", "$a31_y", "$a31.y",
+  "$a32_y", "$a32.y", "$a33_y", "$a33.y",
+  "$a34_y", "$a34.y", "$a35_y", "$a35.y",
+  "$a36_y", "$a36.y", "$a37_y", "$a37.y",
+  "$a38_y", "$a38.y", "$a39_y", "$a39.y",
+  "$a40_y", "$a40.y", "$a41_y", "$a41.y",
+  "$a42_y", "$a42.y", "$a43_y", "$a43.y",
+  "$a44_y", "$a44.y", "$a45_y", "$a45.y",
+  "$a46_y", "$a46.y", "$a47_y", "$a47.y",
+  "$a48_y", "$a48.y", "$a49_y", "$a49.y",
+  "$a50_y", "$a50.y", "$a51_y", "$a51.y",
+  "$a52_y", "$a52.y", "$a53_y", "$a53.y",
+  "$a54_y", "$a54.y", "$a55_y", "$a55.y",
+  "$a56_y", "$a56.y", "$a57_y", "$a57.y",
+  "$a58_y", "$a58.y", "$a59_y", "$a59.y",
+  "$a60_y", "$a60.y", "$a61_y", "$a61.y",
+  "$a62_y", "$a62.y", "$a63_y", "$a63.y",
+};
+
+static const char *prc_kv3_v1_10[] = {
+  "$a0_t", "$a0.t", "$a1_t", "$a1.t",
+  "$a2_t", "$a2.t", "$a3_t", "$a3.t",
+  "$a4_t", "$a4.t", "$a5_t", "$a5.t",
+  "$a6_t", "$a6.t", "$a7_t", "$a7.t",
+  "$a8_t", "$a8.t", "$a9_t", "$a9.t",
+  "$a10_t", "$a10.t", "$a11_t", "$a11.t",
+  "$a12_t", "$a12.t", "$a13_t", "$a13.t",
+  "$a14_t", "$a14.t", "$a15_t", "$a15.t",
+  "$a16_t", "$a16.t", "$a17_t", "$a17.t",
+  "$a18_t", "$a18.t", "$a19_t", "$a19.t",
+  "$a20_t", "$a20.t", "$a21_t", "$a21.t",
+  "$a22_t", "$a22.t", "$a23_t", "$a23.t",
+  "$a24_t", "$a24.t", "$a25_t", "$a25.t",
+  "$a26_t", "$a26.t", "$a27_t", "$a27.t",
+  "$a28_t", "$a28.t", "$a29_t", "$a29.t",
+  "$a30_t", "$a30.t", "$a31_t", "$a31.t",
+  "$a32_t", "$a32.t", "$a33_t", "$a33.t",
+  "$a34_t", "$a34.t", "$a35_t", "$a35.t",
+  "$a36_t", "$a36.t", "$a37_t", "$a37.t",
+  "$a38_t", "$a38.t", "$a39_t", "$a39.t",
+  "$a40_t", "$a40.t", "$a41_t", "$a41.t",
+  "$a42_t", "$a42.t", "$a43_t", "$a43.t",
+  "$a44_t", "$a44.t", "$a45_t", "$a45.t",
+  "$a46_t", "$a46.t", "$a47_t", "$a47.t",
+  "$a48_t", "$a48.t", "$a49_t", "$a49.t",
+  "$a50_t", "$a50.t", "$a51_t", "$a51.t",
+  "$a52_t", "$a52.t", "$a53_t", "$a53.t",
+  "$a54_t", "$a54.t", "$a55_t", "$a55.t",
+  "$a56_t", "$a56.t", "$a57_t", "$a57.t",
+  "$a58_t", "$a58.t", "$a59_t", "$a59.t",
+  "$a60_t", "$a60.t", "$a61_t", "$a61.t",
+  "$a62_t", "$a62.t", "$a63_t", "$a63.t",
+};
+
+static const char *prc_kv3_v1_11[] = {
+  "$a0..a15", "$a16..a31", "$a32..a47", "$a48..a63",
+};
+
+static const char *prc_kv3_v1_12[] = {
+  "$a0..a1", "$a2..a3", "$a4..a5", "$a6..a7",
+  "$a8..a9", "$a10..a11", "$a12..a13", "$a14..a15",
+  "$a16..a17", "$a18..a19", "$a20..a21", "$a22..a23",
+  "$a24..a25", "$a26..a27", "$a28..a29", "$a30..a31",
+  "$a32..a33", "$a34..a35", "$a36..a37", "$a38..a39",
+  "$a40..a41", "$a42..a43", "$a44..a45", "$a46..a47",
+  "$a48..a49", "$a50..a51", "$a52..a53", "$a54..a55",
+  "$a56..a57", "$a58..a59", "$a60..a61", "$a62..a63",
+};
+
+static const char *prc_kv3_v1_13[] = {
+  "$a0..a31", "$a32..a63",
+};
+
+static const char *prc_kv3_v1_14[] = {
+  "$a0..a3", "$a4..a7", "$a8..a11", "$a12..a15",
+  "$a16..a19", "$a20..a23", "$a24..a27", "$a28..a31",
+  "$a32..a35", "$a36..a39", "$a40..a43", "$a44..a47",
+  "$a48..a51", "$a52..a55", "$a56..a59", "$a60..a63",
+};
+
+static const char *prc_kv3_v1_15[] = {
+  "$a0..a63",
+};
+
+static const char *prc_kv3_v1_16[] = {
+  "$a0..a7", "$a8..a15", "$a16..a23", "$a24..a31",
+  "$a32..a39", "$a40..a47", "$a48..a55", "$a56..a63",
+};
+
+static const char *prc_kv3_v1_17[] = {
+  "$a0a1a2a3", "$a4a5a6a7", "$a8a9a10a11", "$a12a13a14a15",
+  "$a16a17a18a19", "$a20a21a22a23", "$a24a25a26a27", "$a28a29a30a31",
+  "$a32a33a34a35", "$a36a37a38a39", "$a40a41a42a43", "$a44a45a46a47",
+  "$a48a49a50a51", "$a52a53a54a55", "$a56a57a58a59", "$a60a61a62a63",
+};
+
+static const char *prc_kv3_v1_18[] = {
+  "$a0", "$a0a1.lo", "$a0a1a2a3.x", "$a4",
+  "$a4a5.lo", "$a4a5a6a7.x", "$a8", "$a8a9.lo",
+  "$a8a9a10a11.x", "$a12", "$a12a13.lo", "$a12a13a14a15.x",
+  "$a16", "$a16a17.lo", "$a16a17a18a19.x", "$a20",
+  "$a20a21.lo", "$a20a21a22a23.x", "$a24", "$a24a25.lo",
+  "$a24a25a26a27.x", "$a28", "$a28a29.lo", "$a28a29a30a31.x",
+  "$a32", "$a32a33.lo", "$a32a33a34a35.x", "$a36",
+  "$a36a37.lo", "$a36a37a38a39.x", "$a40", "$a40a41.lo",
+  "$a40a41a42a43.x", "$a44", "$a44a45.lo", "$a44a45a46a47.x",
+  "$a48", "$a48a49.lo", "$a48a49a50a51.x", "$a52",
+  "$a52a53.lo", "$a52a53a54a55.x", "$a56", "$a56a57.lo",
+  "$a56a57a58a59.x", "$a60", "$a60a61.lo", "$a60a61a62a63.x",
+};
+
+static const char *prc_kv3_v1_19[] = {
+  "$a1", "$a0a1.hi", "$a0a1a2a3.y", "$a5",
+  "$a4a5.hi", "$a4a5a6a7.y", "$a9", "$a8a9.hi",
+  "$a8a9a10a11.y", "$a13", "$a12a13.hi", "$a12a13a14a15.y",
+  "$a17", "$a16a17.hi", "$a16a17a18a19.y", "$a21",
+  "$a20a21.hi", "$a20a21a22a23.y", "$a25", "$a24a25.hi",
+  "$a24a25a26a27.y", "$a29", "$a28a29.hi", "$a28a29a30a31.y",
+  "$a33", "$a32a33.hi", "$a32a33a34a35.y", "$a37",
+  "$a36a37.hi", "$a36a37a38a39.y", "$a41", "$a40a41.hi",
+  "$a40a41a42a43.y", "$a45", "$a44a45.hi", "$a44a45a46a47.y",
+  "$a49", "$a48a49.hi", "$a48a49a50a51.y", "$a53",
+  "$a52a53.hi", "$a52a53a54a55.y", "$a57", "$a56a57.hi",
+  "$a56a57a58a59.y", "$a61", "$a60a61.hi", "$a60a61a62a63.y",
+};
+
+static const char *prc_kv3_v1_20[] = {
+  "$a2", "$a2a3.lo", "$a0a1a2a3.z", "$a6",
+  "$a6a7.lo", "$a4a5a6a7.z", "$a10", "$a10a11.lo",
+  "$a8a9a10a11.z", "$a14", "$a14a15.lo", "$a12a13a14a15.z",
+  "$a18", "$a18a19.lo", "$a16a17a18a19.z", "$a22",
+  "$a22a23.lo", "$a20a21a22a23.z", "$a26", "$a26a27.lo",
+  "$a24a25a26a27.z", "$a30", "$a30a31.lo", "$a28a29a30a31.z",
+  "$a34", "$a34a35.lo", "$a32a33a34a35.z", "$a38",
+  "$a38a39.lo", "$a36a37a38a39.z", "$a42", "$a42a43.lo",
+  "$a40a41a42a43.z", "$a46", "$a46a47.lo", "$a44a45a46a47.z",
+  "$a50", "$a50a51.lo", "$a48a49a50a51.z", "$a54",
+  "$a54a55.lo", "$a52a53a54a55.z", "$a58", "$a58a59.lo",
+  "$a56a57a58a59.z", "$a62", "$a62a63.lo", "$a60a61a62a63.z",
+};
+
+static const char *prc_kv3_v1_21[] = {
+  "$a3", "$a2a3.hi", "$a0a1a2a3.t", "$a7",
+  "$a6a7.hi", "$a4a5a6a7.t", "$a11", "$a10a11.hi",
+  "$a8a9a10a11.t", "$a15", "$a14a15.hi", "$a12a13a14a15.t",
+  "$a19", "$a18a19.hi", "$a16a17a18a19.t", "$a23",
+  "$a22a23.hi", "$a20a21a22a23.t", "$a27", "$a26a27.hi",
+  "$a24a25a26a27.t", "$a31", "$a30a31.hi", "$a28a29a30a31.t",
+  "$a35", "$a34a35.hi", "$a32a33a34a35.t", "$a39",
+  "$a38a39.hi", "$a36a37a38a39.t", "$a43", "$a42a43.hi",
+  "$a40a41a42a43.t", "$a47", "$a46a47.hi", "$a44a45a46a47.t",
+  "$a51", "$a50a51.hi", "$a48a49a50a51.t", "$a55",
+  "$a54a55.hi", "$a52a53a54a55.t", "$a59", "$a58a59.hi",
+  "$a56a57a58a59.t", "$a63", "$a62a63.hi", "$a60a61a62a63.t",
+};
+
+static const char *prc_kv3_v1_22[] = {
+  "$pcr", "$s2", "$cs", "$s4",
+  "$csit", "$s5", "$ipe", "$s10",
+  "$men", "$s11", "$pmc", "$s12",
+  "$tcr", "$s18", "$ile", "$s25",
+  "$ill", "$s26", "$ilr", "$s27",
+  "$tel", "$s29", "$teh", "$s30",
+  "$dc", "$s40", "$mes", "$s45",
+  "$ws", "$s46", "$es_pl0", "$s84",
+  "$es_pl1", "$s85", "$es_pl2", "$s86",
+  "$es_pl3", "$s87", "$es", "$s148",
+};
+
+static const char *prc_kv3_v1_23[] = {
+  "$pc", "$s0", "$syo", "$s32",
+  "$hto", "$s33", "$ito", "$s34",
+  "$do", "$s35", "$mo", "$s36",
+  "$pso", "$s37",
+};
+
+static const char *prc_kv3_v1_24[] = {
+  "$ra", "$s3",
+};
+
+static const char *prc_kv3_v1_25[] = {
+  "$aespc", "$s6", "$ls", "$s7",
+  "$le", "$s8", "$lc", "$s9",
+  "$pm0", "$s13", "$pm1", "$s14",
+  "$pm2", "$s15", "$pm3", "$s16",
+  "$pmsa", "$s17", "$t0v", "$s19",
+  "$t1v", "$s20", "$t0r", "$s21",
+  "$t1r", "$s22", "$wdv", "$s23",
+  "$wdr", "$s24", "$ixc", "$s31",
+  "$res38", "$s38", "$res39", "$s39",
+  "$dba0", "$s41", "$dba1", "$s42",
+  "$dwa0", "$s43", "$dwa1", "$s44",
+  "$res47", "$s47", "$res48", "$s48",
+  "$res49", "$s49", "$res50", "$s50",
+  "$res51", "$s51", "$res52", "$s52",
+  "$res53", "$s53", "$res54", "$s54",
+  "$res55", "$s55", "$res56", "$s56",
+  "$res57", "$s57", "$res58", "$s58",
+  "$res59", "$s59", "$res60", "$s60",
+  "$res61", "$s61", "$res62", "$s62",
+  "$res63", "$s63", "$spc_pl0", "$s64",
+  "$spc_pl1", "$s65", "$spc_pl2", "$s66",
+  "$spc_pl3", "$s67", "$ea_pl0", "$s72",
+  "$ea_pl1", "$s73", "$ea_pl2", "$s74",
+  "$ea_pl3", "$s75", "$ev_pl0", "$s76",
+  "$ev_pl1", "$s77", "$ev_pl2", "$s78",
+  "$ev_pl3", "$s79", "$sr_pl0", "$s80",
+  "$sr_pl1", "$s81", "$sr_pl2", "$s82",
+  "$sr_pl3", "$s83", "$res88", "$s88",
+  "$res89", "$s89", "$res90", "$s90",
+  "$res91", "$s91", "$res92", "$s92",
+  "$res93", "$s93", "$res94", "$s94",
+  "$res95", "$s95", "$res104", "$s104",
+  "$res105", "$s105", "$res106", "$s106",
+  "$res107", "$s107", "$spc", "$s128",
+  "$ea", "$s136", "$ev", "$s140",
+  "$sr", "$s144", "$res152", "$s152",
+  "$res156", "$s156", "$res168", "$s168",
+  "$vsfr0", "$s256", "$vsfr1", "$s257",
+  "$vsfr2", "$s258", "$vsfr3", "$s259",
+  "$vsfr4", "$s260", "$vsfr5", "$s261",
+  "$vsfr6", "$s262", "$vsfr7", "$s263",
+  "$vsfr8", "$s264", "$vsfr9", "$s265",
+  "$vsfr10", "$s266", "$vsfr11", "$s267",
+  "$vsfr12", "$s268", "$vsfr13", "$s269",
+  "$vsfr14", "$s270", "$vsfr15", "$s271",
+  "$vsfr16", "$s272", "$vsfr17", "$s273",
+  "$vsfr18", "$s274", "$vsfr19", "$s275",
+  "$vsfr20", "$s276", "$vsfr21", "$s277",
+  "$vsfr22", "$s278", "$vsfr23", "$s279",
+  "$vsfr24", "$s280", "$vsfr25", "$s281",
+  "$vsfr26", "$s282", "$vsfr27", "$s283",
+  "$vsfr28", "$s284", "$vsfr29", "$s285",
+  "$vsfr30", "$s286", "$vsfr31", "$s287",
+  "$vsfr32", "$s288", "$vsfr33", "$s289",
+  "$vsfr34", "$s290", "$vsfr35", "$s291",
+  "$vsfr36", "$s292", "$vsfr37", "$s293",
+  "$vsfr38", "$s294", "$vsfr39", "$s295",
+  "$vsfr40", "$s296", "$vsfr41", "$s297",
+  "$vsfr42", "$s298", "$vsfr43", "$s299",
+  "$vsfr44", "$s300", "$vsfr45", "$s301",
+  "$vsfr46", "$s302", "$vsfr47", "$s303",
+  "$vsfr48", "$s304", "$vsfr49", "$s305",
+  "$vsfr50", "$s306", "$vsfr51", "$s307",
+  "$vsfr52", "$s308", "$vsfr53", "$s309",
+  "$vsfr54", "$s310", "$vsfr55", "$s311",
+  "$vsfr56", "$s312", "$vsfr57", "$s313",
+  "$vsfr58", "$s314", "$vsfr59", "$s315",
+  "$vsfr60", "$s316", "$vsfr61", "$s317",
+  "$vsfr62", "$s318", "$vsfr63", "$s319",
+  "$vsfr64", "$s320", "$vsfr65", "$s321",
+  "$vsfr66", "$s322", "$vsfr67", "$s323",
+  "$vsfr68", "$s324", "$vsfr69", "$s325",
+  "$vsfr70", "$s326", "$vsfr71", "$s327",
+  "$vsfr72", "$s328", "$vsfr73", "$s329",
+  "$vsfr74", "$s330", "$vsfr75", "$s331",
+  "$vsfr76", "$s332", "$vsfr77", "$s333",
+  "$vsfr78", "$s334", "$vsfr79", "$s335",
+  "$vsfr80", "$s336", "$vsfr81", "$s337",
+  "$vsfr82", "$s338", "$vsfr83", "$s339",
+  "$vsfr84", "$s340", "$vsfr85", "$s341",
+  "$vsfr86", "$s342", "$vsfr87", "$s343",
+  "$vsfr88", "$s344", "$vsfr89", "$s345",
+  "$vsfr90", "$s346", "$vsfr91", "$s347",
+  "$vsfr92", "$s348", "$vsfr93", "$s349",
+  "$vsfr94", "$s350", "$vsfr95", "$s351",
+  "$vsfr96", "$s352", "$vsfr97", "$s353",
+  "$vsfr98", "$s354", "$vsfr99", "$s355",
+  "$vsfr100", "$s356", "$vsfr101", "$s357",
+  "$vsfr102", "$s358", "$vsfr103", "$s359",
+  "$vsfr104", "$s360", "$vsfr105", "$s361",
+  "$vsfr106", "$s362", "$vsfr107", "$s363",
+  "$vsfr108", "$s364", "$vsfr109", "$s365",
+  "$vsfr110", "$s366", "$vsfr111", "$s367",
+  "$vsfr112", "$s368", "$vsfr113", "$s369",
+  "$vsfr114", "$s370", "$vsfr115", "$s371",
+  "$vsfr116", "$s372", "$vsfr117", "$s373",
+  "$vsfr118", "$s374", "$vsfr119", "$s375",
+  "$vsfr120", "$s376", "$vsfr121", "$s377",
+  "$vsfr122", "$s378", "$vsfr123", "$s379",
+  "$vsfr124", "$s380", "$vsfr125", "$s381",
+  "$vsfr126", "$s382", "$vsfr127", "$s383",
+  "$vsfr128", "$s384", "$vsfr129", "$s385",
+  "$vsfr130", "$s386", "$vsfr131", "$s387",
+  "$vsfr132", "$s388", "$vsfr133", "$s389",
+  "$vsfr134", "$s390", "$vsfr135", "$s391",
+  "$vsfr136", "$s392", "$vsfr137", "$s393",
+  "$vsfr138", "$s394", "$vsfr139", "$s395",
+  "$vsfr140", "$s396", "$vsfr141", "$s397",
+  "$vsfr142", "$s398", "$vsfr143", "$s399",
+  "$vsfr144", "$s400", "$vsfr145", "$s401",
+  "$vsfr146", "$s402", "$vsfr147", "$s403",
+  "$vsfr148", "$s404", "$vsfr149", "$s405",
+  "$vsfr150", "$s406", "$vsfr151", "$s407",
+  "$vsfr152", "$s408", "$vsfr153", "$s409",
+  "$vsfr154", "$s410", "$vsfr155", "$s411",
+  "$vsfr156", "$s412", "$vsfr157", "$s413",
+  "$vsfr158", "$s414", "$vsfr159", "$s415",
+  "$vsfr160", "$s416", "$vsfr161", "$s417",
+  "$vsfr162", "$s418", "$vsfr163", "$s419",
+  "$vsfr164", "$s420", "$vsfr165", "$s421",
+  "$vsfr166", "$s422", "$vsfr167", "$s423",
+  "$vsfr168", "$s424", "$vsfr169", "$s425",
+  "$vsfr170", "$s426", "$vsfr171", "$s427",
+  "$vsfr172", "$s428", "$vsfr173", "$s429",
+  "$vsfr174", "$s430", "$vsfr175", "$s431",
+  "$vsfr176", "$s432", "$vsfr177", "$s433",
+  "$vsfr178", "$s434", "$vsfr179", "$s435",
+  "$vsfr180", "$s436", "$vsfr181", "$s437",
+  "$vsfr182", "$s438", "$vsfr183", "$s439",
+  "$vsfr184", "$s440", "$vsfr185", "$s441",
+  "$vsfr186", "$s442", "$vsfr187", "$s443",
+  "$vsfr188", "$s444", "$vsfr189", "$s445",
+  "$vsfr190", "$s446", "$vsfr191", "$s447",
+  "$vsfr192", "$s448", "$vsfr193", "$s449",
+  "$vsfr194", "$s450", "$vsfr195", "$s451",
+  "$vsfr196", "$s452", "$vsfr197", "$s453",
+  "$vsfr198", "$s454", "$vsfr199", "$s455",
+  "$vsfr200", "$s456", "$vsfr201", "$s457",
+  "$vsfr202", "$s458", "$vsfr203", "$s459",
+  "$vsfr204", "$s460", "$vsfr205", "$s461",
+  "$vsfr206", "$s462", "$vsfr207", "$s463",
+  "$vsfr208", "$s464", "$vsfr209", "$s465",
+  "$vsfr210", "$s466", "$vsfr211", "$s467",
+  "$vsfr212", "$s468", "$vsfr213", "$s469",
+  "$vsfr214", "$s470", "$vsfr215", "$s471",
+  "$vsfr216", "$s472", "$vsfr217", "$s473",
+  "$vsfr218", "$s474", "$vsfr219", "$s475",
+  "$vsfr220", "$s476", "$vsfr221", "$s477",
+  "$vsfr222", "$s478", "$vsfr223", "$s479",
+  "$vsfr224", "$s480", "$vsfr225", "$s481",
+  "$vsfr226", "$s482", "$vsfr227", "$s483",
+  "$vsfr228", "$s484", "$vsfr229", "$s485",
+  "$vsfr230", "$s486", "$vsfr231", "$s487",
+  "$vsfr232", "$s488", "$vsfr233", "$s489",
+  "$vsfr234", "$s490", "$vsfr235", "$s491",
+  "$vsfr236", "$s492", "$vsfr237", "$s493",
+  "$vsfr238", "$s494", "$vsfr239", "$s495",
+  "$vsfr240", "$s496", "$vsfr241", "$s497",
+  "$vsfr242", "$s498", "$vsfr243", "$s499",
+  "$vsfr244", "$s500", "$vsfr245", "$s501",
+  "$vsfr246", "$s502", "$vsfr247", "$s503",
+  "$vsfr248", "$s504", "$vsfr249", "$s505",
+  "$vsfr250", "$s506", "$vsfr251", "$s507",
+  "$vsfr252", "$s508", "$vsfr253", "$s509",
+  "$vsfr254", "$s510", "$vsfr255", "$s511",
+};
+
+static const char *prc_kv3_v1_26[] = {
+  "$res102", "$s102", "$res103", "$s103",
+  "$res108", "$s108", "$res109", "$s109",
+  "$res110", "$s110", "$res111", "$s111",
+  "$res112", "$s112", "$res113", "$s113",
+  "$res114", "$s114", "$res115", "$s115",
+  "$res116", "$s116", "$res117", "$s117",
+  "$res118", "$s118", "$res119", "$s119",
+  "$res120", "$s120", "$res121", "$s121",
+  "$res122", "$s122", "$res123", "$s123",
+  "$res124", "$s124", "$res125", "$s125",
+  "$res126", "$s126", "$res127", "$s127",
+  "$res129", "$s129", "$res130", "$s130",
+  "$res131", "$s131", "$res133", "$s133",
+  "$res134", "$s134", "$res135", "$s135",
+  "$res137", "$s137", "$res138", "$s138",
+  "$res139", "$s139", "$res141", "$s141",
+  "$res142", "$s142", "$res143", "$s143",
+  "$res145", "$s145", "$res146", "$s146",
+  "$res147", "$s147", "$res149", "$s149",
+  "$res150", "$s150", "$res151", "$s151",
+  "$res153", "$s153", "$res154", "$s154",
+  "$res155", "$s155", "$res157", "$s157",
+  "$res158", "$s158", "$res159", "$s159",
+  "$res160", "$s160", "$res161", "$s161",
+  "$res162", "$s162", "$res163", "$s163",
+  "$res164", "$s164", "$res165", "$s165",
+  "$res166", "$s166", "$res167", "$s167",
+  "$res169", "$s169", "$res170", "$s170",
+  "$res171", "$s171", "$res172", "$s172",
+  "$res173", "$s173", "$res174", "$s174",
+  "$res175", "$s175", "$res176", "$s176",
+  "$res177", "$s177", "$res178", "$s178",
+  "$res179", "$s179", "$res180", "$s180",
+  "$res181", "$s181", "$res182", "$s182",
+  "$res183", "$s183", "$res184", "$s184",
+  "$res185", "$s185", "$res186", "$s186",
+  "$res187", "$s187", "$res188", "$s188",
+  "$res189", "$s189", "$res190", "$s190",
+  "$res191", "$s191", "$res192", "$s192",
+  "$res193", "$s193", "$res194", "$s194",
+  "$res195", "$s195", "$res196", "$s196",
+  "$res197", "$s197", "$res198", "$s198",
+  "$res199", "$s199", "$res200", "$s200",
+  "$res201", "$s201", "$res202", "$s202",
+  "$res203", "$s203", "$res204", "$s204",
+  "$res205", "$s205", "$res206", "$s206",
+  "$res207", "$s207", "$res208", "$s208",
+  "$res209", "$s209", "$res210", "$s210",
+  "$res211", "$s211", "$res212", "$s212",
+  "$res213", "$s213", "$res214", "$s214",
+  "$res215", "$s215", "$res216", "$s216",
+  "$res217", "$s217", "$res218", "$s218",
+  "$res219", "$s219", "$res220", "$s220",
+  "$res221", "$s221", "$res222", "$s222",
+  "$res223", "$s223", "$res224", "$s224",
+  "$res225", "$s225", "$res226", "$s226",
+  "$res227", "$s227", "$res228", "$s228",
+  "$res229", "$s229", "$res230", "$s230",
+  "$res231", "$s231", "$res232", "$s232",
+  "$res233", "$s233", "$res234", "$s234",
+  "$res235", "$s235", "$res236", "$s236",
+  "$res237", "$s237", "$res238", "$s238",
+  "$res239", "$s239", "$res240", "$s240",
+  "$res241", "$s241", "$res242", "$s242",
+  "$res243", "$s243", "$res244", "$s244",
+  "$res245", "$s245", "$res246", "$s246",
+  "$res247", "$s247", "$res248", "$s248",
+  "$res249", "$s249", "$res250", "$s250",
+  "$res251", "$s251", "$res252", "$s252",
+  "$res253", "$s253", "$res254", "$s254",
+  "$res255", "$s255",
+};
+
+static const char *prc_kv3_v1_27[] = {
+  "$r0r1", "$r0r1r2r3.lo", "$r2r3", "$r0r1r2r3.hi",
+  "$r4r5", "$r4r5r6r7.lo", "$r6r7", "$r4r5r6r7.hi",
+  "$r8r9", "$r8r9r10r11.lo", "$r10r11", "$r8r9r10r11.hi",
+  "$r12r13", "$r12r13r14r15.lo", "$r14r15", "$r12r13r14r15.hi",
+  "$r16r17", "$r16r17r18r19.lo", "$r18r19", "$r16r17r18r19.hi",
+  "$r20r21", "$r20r21r22r23.lo", "$r22r23", "$r20r21r22r23.hi",
+  "$r24r25", "$r24r25r26r27.lo", "$r26r27", "$r24r25r26r27.hi",
+  "$r28r29", "$r28r29r30r31.lo", "$r30r31", "$r28r29r30r31.hi",
+  "$r32r33", "$r32r33r34r35.lo", "$r34r35", "$r32r33r34r35.hi",
+  "$r36r37", "$r36r37r38r39.lo", "$r38r39", "$r36r37r38r39.hi",
+  "$r40r41", "$r40r41r42r43.lo", "$r42r43", "$r40r41r42r43.hi",
+  "$r44r45", "$r44r45r46r47.lo", "$r46r47", "$r44r45r46r47.hi",
+  "$r48r49", "$r48r49r50r51.lo", "$r50r51", "$r48r49r50r51.hi",
+  "$r52r53", "$r52r53r54r55.lo", "$r54r55", "$r52r53r54r55.hi",
+  "$r56r57", "$r56r57r58r59.lo", "$r58r59", "$r56r57r58r59.hi",
+  "$r60r61", "$r60r61r62r63.lo", "$r62r63", "$r60r61r62r63.hi",
+};
+
+static const char *prc_kv3_v1_28[] = {
+  "$r0", "$r0r1.lo", "$r0r1r2r3.x", "$r4",
+  "$r4r5.lo", "$r4r5r6r7.x", "$r8", "$r8r9.lo",
+  "$r8r9r10r11.x", "$r12", "$sp", "$r16",
+  "$r16r17.lo", "$r16r17r18r19.x", "$r20", "$r20r21.lo",
+  "$r20r21r22r23.x", "$r24", "$r24r25.lo", "$r24r25r26r27.x",
+  "$r28", "$r28r29.lo", "$r28r29r30r31.x", "$r32",
+  "$r32r33.lo", "$r32r33r34r35.x", "$r36", "$r36r37.lo",
+  "$r36r37r38r39.x", "$r40", "$r40r41.lo", "$r40r41r42r43.x",
+  "$r44", "$r44r45.lo", "$r44r45r46r47.x", "$r48",
+  "$r48r49.lo", "$r48r49r50r51.x", "$r52", "$r52r53.lo",
+  "$r52r53r54r55.x", "$r56", "$r56r57.lo", "$r56r57r58r59.x",
+  "$r60", "$r60r61.lo", "$r60r61r62r63.x",
+};
+
+static const char *prc_kv3_v1_29[] = {
+  "$r2", "$r2r3.lo", "$r0r1r2r3.z", "$r6",
+  "$r6r7.lo", "$r4r5r6r7.z", "$r10", "$r10r11.lo",
+  "$r8r9r10r11.z", "$r14", "$fp", "$r18",
+  "$r18r19.lo", "$r16r17r18r19.z", "$r22", "$r22r23.lo",
+  "$r20r21r22r23.z", "$r26", "$r26r27.lo", "$r24r25r26r27.z",
+  "$r30", "$r30r31.lo", "$r28r29r30r31.z", "$r34",
+  "$r34r35.lo", "$r32r33r34r35.z", "$r38", "$r38r39.lo",
+  "$r36r37r38r39.z", "$r42", "$r42r43.lo", "$r40r41r42r43.z",
+  "$r46", "$r46r47.lo", "$r44r45r46r47.z", "$r50",
+  "$r50r51.lo", "$r48r49r50r51.z", "$r54", "$r54r55.lo",
+  "$r52r53r54r55.z", "$r58", "$r58r59.lo", "$r56r57r58r59.z",
+  "$r62", "$r62r63.lo", "$r60r61r62r63.z",
+};
+
+static const char *prc_kv3_v1_30[] = {
+  "$r1", "$r0r1.hi", "$r0r1r2r3.y", "$r5",
+  "$r4r5.hi", "$r4r5r6r7.y", "$r9", "$r8r9.hi",
+  "$r8r9r10r11.y", "$r13", "$tp", "$r17",
+  "$r16r17.hi", "$r16r17r18r19.y", "$r21", "$r20r21.hi",
+  "$r20r21r22r23.y", "$r25", "$r24r25.hi", "$r24r25r26r27.y",
+  "$r29", "$r28r29.hi", "$r28r29r30r31.y", "$r33",
+  "$r32r33.hi", "$r32r33r34r35.y", "$r37", "$r36r37.hi",
+  "$r36r37r38r39.y", "$r41", "$r40r41.hi", "$r40r41r42r43.y",
+  "$r45", "$r44r45.hi", "$r44r45r46r47.y", "$r49",
+  "$r48r49.hi", "$r48r49r50r51.y", "$r53", "$r52r53.hi",
+  "$r52r53r54r55.y", "$r57", "$r56r57.hi", "$r56r57r58r59.y",
+  "$r61", "$r60r61.hi", "$r60r61r62r63.y",
+};
+
+static const char *prc_kv3_v1_31[] = {
+  "$r3", "$r2r3.hi", "$r0r1r2r3.t", "$r7",
+  "$r6r7.hi", "$r4r5r6r7.t", "$r11", "$r10r11.hi",
+  "$r8r9r10r11.t", "$r15", "$rp", "$r19",
+  "$r18r19.hi", "$r16r17r18r19.t", "$r23", "$r22r23.hi",
+  "$r20r21r22r23.t", "$r27", "$r26r27.hi", "$r24r25r26r27.t",
+  "$r31", "$r30r31.hi", "$r28r29r30r31.t", "$r35",
+  "$r34r35.hi", "$r32r33r34r35.t", "$r39", "$r38r39.hi",
+  "$r36r37r38r39.t", "$r43", "$r42r43.hi", "$r40r41r42r43.t",
+  "$r47", "$r46r47.hi", "$r44r45r46r47.t", "$r51",
+  "$r50r51.hi", "$r48r49r50r51.t", "$r55", "$r54r55.hi",
+  "$r52r53r54r55.t", "$r59", "$r58r59.hi", "$r56r57r58r59.t",
+  "$r63", "$r62r63.hi", "$r60r61r62r63.t",
+};
+
+static const char *prc_kv3_v1_32[] = {
+  "$r0r1r2r3", "$r4r5r6r7", "$r8r9r10r11", "$r12r13r14r15",
+  "$r16r17r18r19", "$r20r21r22r23", "$r24r25r26r27", "$r28r29r30r31",
+  "$r32r33r34r35", "$r36r37r38r39", "$r40r41r42r43", "$r44r45r46r47",
+  "$r48r49r50r51", "$r52r53r54r55", "$r56r57r58r59", "$r60r61r62r63",
+};
+
+static const char *prc_kv3_v1_33[] = {
+  "$a0a1", "$a0a1a2a3.lo", "$a2a3", "$a0a1a2a3.hi",
+  "$a4a5", "$a4a5a6a7.lo", "$a6a7", "$a4a5a6a7.hi",
+  "$a8a9", "$a8a9a10a11.lo", "$a10a11", "$a8a9a10a11.hi",
+  "$a12a13", "$a12a13a14a15.lo", "$a14a15", "$a12a13a14a15.hi",
+  "$a16a17", "$a16a17a18a19.lo", "$a18a19", "$a16a17a18a19.hi",
+  "$a20a21", "$a20a21a22a23.lo", "$a22a23", "$a20a21a22a23.hi",
+  "$a24a25", "$a24a25a26a27.lo", "$a26a27", "$a24a25a26a27.hi",
+  "$a28a29", "$a28a29a30a31.lo", "$a30a31", "$a28a29a30a31.hi",
+  "$a32a33", "$a32a33a34a35.lo", "$a34a35", "$a32a33a34a35.hi",
+  "$a36a37", "$a36a37a38a39.lo", "$a38a39", "$a36a37a38a39.hi",
+  "$a40a41", "$a40a41a42a43.lo", "$a42a43", "$a40a41a42a43.hi",
+  "$a44a45", "$a44a45a46a47.lo", "$a46a47", "$a44a45a46a47.hi",
+  "$a48a49", "$a48a49a50a51.lo", "$a50a51", "$a48a49a50a51.hi",
+  "$a52a53", "$a52a53a54a55.lo", "$a54a55", "$a52a53a54a55.hi",
+  "$a56a57", "$a56a57a58a59.lo", "$a58a59", "$a56a57a58a59.hi",
+  "$a60a61", "$a60a61a62a63.lo", "$a62a63", "$a60a61a62a63.hi",
+};
+\f
+#define _enc(x) (1ULL << ((x) - Modifier_kv3_v1_column))
+enum pmd_kv3_v1_id_t {
+  pmd_kv3_v1_id_00 = _enc (Modifier_kv3_v1_column),
+  pmd_kv3_v1_id_01 = _enc (Modifier_kv3_v1_comparison),
+  pmd_kv3_v1_id_02 = _enc (Modifier_kv3_v1_doscale)
+   | _enc (Modifier_kv3_v1_rectify)
+   | _enc (Modifier_kv3_v1_rounding)
+   | _enc (Modifier_kv3_v1_silent)
+   | _enc (Modifier_kv3_v1_splat32)
+   | _enc (Modifier_kv3_v1_variant),
+  pmd_kv3_v1_id_03 = _enc (Modifier_kv3_v1_doscale),
+  pmd_kv3_v1_id_04 = _enc (Modifier_kv3_v1_exunum),
+  pmd_kv3_v1_id_05 = _enc (Modifier_kv3_v1_floatcomp),
+  pmd_kv3_v1_id_06 = _enc (Modifier_kv3_v1_qindex),
+  pmd_kv3_v1_id_07 = _enc (Modifier_kv3_v1_rectify),
+  pmd_kv3_v1_id_08 = _enc (Modifier_kv3_v1_rounding)
+   | _enc (Modifier_kv3_v1_roundint),
+  pmd_kv3_v1_id_09 = _enc (Modifier_kv3_v1_rounding),
+  pmd_kv3_v1_id_10 = _enc (Modifier_kv3_v1_roundint),
+  pmd_kv3_v1_id_11 = _enc (Modifier_kv3_v1_saturate),
+  pmd_kv3_v1_id_12 = _enc (Modifier_kv3_v1_scalarcond),
+  pmd_kv3_v1_id_13 = _enc (Modifier_kv3_v1_scalarcond)
+   | _enc (Modifier_kv3_v1_simplecond),
+  pmd_kv3_v1_id_14 = _enc (Modifier_kv3_v1_silent)
+   | _enc (Modifier_kv3_v1_variant),
+  pmd_kv3_v1_id_15 = _enc (Modifier_kv3_v1_simplecond),
+  pmd_kv3_v1_id_16 = _enc (Modifier_kv3_v1_speculate)
+   | _enc (Modifier_kv3_v1_variant),
+  pmd_kv3_v1_id_17 = _enc (Modifier_kv3_v1_splat32),
+};
+#undef _enc
+
+static const char *pmd_kv3_v1_00[] = {
+  ".c0", ".c1", ".c2", ".c3",
+};
+
+static const char *pmd_kv3_v1_01[] = {
+  ".ne", ".eq", ".lt", ".ge",
+  ".le", ".gt", ".ltu", ".geu",
+  ".leu", ".gtu", ".all", ".nall",
+  ".any", ".none",
+};
+
+static const char *pmd_kv3_v1_02[] = {
+  ".",
+};
+
+static const char *pmd_kv3_v1_03[] = {
+  ".xs",
+};
+
+static const char *pmd_kv3_v1_04[] = {
+  "alu0", "alu1", "mau", "lsu",
+};
+
+static const char *pmd_kv3_v1_05[] = {
+  ".one", ".ueq", ".oeq", ".une",
+  ".olt", ".uge", ".oge", ".ult",
+};
+
+static const char *pmd_kv3_v1_06[] = {
+  ".q0", ".q1", ".q2", ".q3",
+};
+
+static const char *pmd_kv3_v1_07[] = {
+  ".relu",
+};
+
+static const char *pmd_kv3_v1_08[] = {
+  ".rn", ".ru", ".rd", ".rz",
+};
+
+static const char *pmd_kv3_v1_09[] = {
+  ".rna", ".rnz", ".ro",
+};
+
+static const char *pmd_kv3_v1_10[] = {
+  ".rhu",
+};
+
+static const char *pmd_kv3_v1_11[] = {
+  ".sat", ".satu",
+};
+
+static const char *pmd_kv3_v1_12[] = {
+  ".dnez", ".deqz", ".dltz", ".dgez",
+  ".dlez", ".dgtz", ".wnez", ".weqz",
+  ".wltz", ".wgez", ".wlez", ".wgtz",
+};
+
+static const char *pmd_kv3_v1_13[] = {
+  ".odd", ".even",
+};
+
+static const char *pmd_kv3_v1_14[] = {
+  ".s",
+};
+
+static const char *pmd_kv3_v1_15[] = {
+  ".nez", ".eqz", ".ltz", ".gez",
+  ".lez", ".gtz",
+};
+
+static const char *pmd_kv3_v1_16[] = {
+  ".u", ".us",
+};
+
+static const char *pmd_kv3_v1_17[] = {
+  ".@",
+};
+\f
+#define arr_len(arr) sizeof(arr)/(sizeof(*arr))
+static struct token_class reg_classes_kv3_v1[] = {
+  { prc_kv3_v1_00, prc_kv3_v1_id_00, arr_len (prc_kv3_v1_00) },
+  { prc_kv3_v1_01, prc_kv3_v1_id_01, arr_len (prc_kv3_v1_01) },
+  { prc_kv3_v1_02, prc_kv3_v1_id_02, arr_len (prc_kv3_v1_02) },
+  { prc_kv3_v1_03, prc_kv3_v1_id_03, arr_len (prc_kv3_v1_03) },
+  { prc_kv3_v1_04, prc_kv3_v1_id_04, arr_len (prc_kv3_v1_04) },
+  { prc_kv3_v1_05, prc_kv3_v1_id_05, arr_len (prc_kv3_v1_05) },
+  { prc_kv3_v1_06, prc_kv3_v1_id_06, arr_len (prc_kv3_v1_06) },
+  { prc_kv3_v1_07, prc_kv3_v1_id_07, arr_len (prc_kv3_v1_07) },
+  { prc_kv3_v1_08, prc_kv3_v1_id_08, arr_len (prc_kv3_v1_08) },
+  { prc_kv3_v1_09, prc_kv3_v1_id_09, arr_len (prc_kv3_v1_09) },
+  { prc_kv3_v1_10, prc_kv3_v1_id_10, arr_len (prc_kv3_v1_10) },
+  { prc_kv3_v1_11, prc_kv3_v1_id_11, arr_len (prc_kv3_v1_11) },
+  { prc_kv3_v1_12, prc_kv3_v1_id_12, arr_len (prc_kv3_v1_12) },
+  { prc_kv3_v1_13, prc_kv3_v1_id_13, arr_len (prc_kv3_v1_13) },
+  { prc_kv3_v1_14, prc_kv3_v1_id_14, arr_len (prc_kv3_v1_14) },
+  { prc_kv3_v1_15, prc_kv3_v1_id_15, arr_len (prc_kv3_v1_15) },
+  { prc_kv3_v1_16, prc_kv3_v1_id_16, arr_len (prc_kv3_v1_16) },
+  { prc_kv3_v1_17, prc_kv3_v1_id_17, arr_len (prc_kv3_v1_17) },
+  { prc_kv3_v1_18, prc_kv3_v1_id_18, arr_len (prc_kv3_v1_18) },
+  { prc_kv3_v1_19, prc_kv3_v1_id_19, arr_len (prc_kv3_v1_19) },
+  { prc_kv3_v1_20, prc_kv3_v1_id_20, arr_len (prc_kv3_v1_20) },
+  { prc_kv3_v1_21, prc_kv3_v1_id_21, arr_len (prc_kv3_v1_21) },
+  { prc_kv3_v1_22, prc_kv3_v1_id_22, arr_len (prc_kv3_v1_22) },
+  { prc_kv3_v1_23, prc_kv3_v1_id_23, arr_len (prc_kv3_v1_23) },
+  { prc_kv3_v1_24, prc_kv3_v1_id_24, arr_len (prc_kv3_v1_24) },
+  { prc_kv3_v1_25, prc_kv3_v1_id_25, arr_len (prc_kv3_v1_25) },
+  { prc_kv3_v1_26, prc_kv3_v1_id_26, arr_len (prc_kv3_v1_26) },
+  { prc_kv3_v1_27, prc_kv3_v1_id_27, arr_len (prc_kv3_v1_27) },
+  { prc_kv3_v1_28, prc_kv3_v1_id_28, arr_len (prc_kv3_v1_28) },
+  { prc_kv3_v1_29, prc_kv3_v1_id_29, arr_len (prc_kv3_v1_29) },
+  { prc_kv3_v1_30, prc_kv3_v1_id_30, arr_len (prc_kv3_v1_30) },
+  { prc_kv3_v1_31, prc_kv3_v1_id_31, arr_len (prc_kv3_v1_31) },
+  { prc_kv3_v1_32, prc_kv3_v1_id_32, arr_len (prc_kv3_v1_32) },
+  { prc_kv3_v1_33, prc_kv3_v1_id_33, arr_len (prc_kv3_v1_33) },
+  { NULL, -1, -1 },
+};
+
+static struct token_class mod_classes_kv3_v1[] = {
+  { pmd_kv3_v1_00, pmd_kv3_v1_id_00, arr_len (pmd_kv3_v1_00) },
+  { pmd_kv3_v1_01, pmd_kv3_v1_id_01, arr_len (pmd_kv3_v1_01) },
+  { pmd_kv3_v1_02, pmd_kv3_v1_id_02, arr_len (pmd_kv3_v1_02) },
+  { pmd_kv3_v1_03, pmd_kv3_v1_id_03, arr_len (pmd_kv3_v1_03) },
+  { pmd_kv3_v1_04, pmd_kv3_v1_id_04, arr_len (pmd_kv3_v1_04) },
+  { pmd_kv3_v1_05, pmd_kv3_v1_id_05, arr_len (pmd_kv3_v1_05) },
+  { pmd_kv3_v1_06, pmd_kv3_v1_id_06, arr_len (pmd_kv3_v1_06) },
+  { pmd_kv3_v1_07, pmd_kv3_v1_id_07, arr_len (pmd_kv3_v1_07) },
+  { pmd_kv3_v1_08, pmd_kv3_v1_id_08, arr_len (pmd_kv3_v1_08) },
+  { pmd_kv3_v1_09, pmd_kv3_v1_id_09, arr_len (pmd_kv3_v1_09) },
+  { pmd_kv3_v1_10, pmd_kv3_v1_id_10, arr_len (pmd_kv3_v1_10) },
+  { pmd_kv3_v1_11, pmd_kv3_v1_id_11, arr_len (pmd_kv3_v1_11) },
+  { pmd_kv3_v1_12, pmd_kv3_v1_id_12, arr_len (pmd_kv3_v1_12) },
+  { pmd_kv3_v1_13, pmd_kv3_v1_id_13, arr_len (pmd_kv3_v1_13) },
+  { pmd_kv3_v1_14, pmd_kv3_v1_id_14, arr_len (pmd_kv3_v1_14) },
+  { pmd_kv3_v1_15, pmd_kv3_v1_id_15, arr_len (pmd_kv3_v1_15) },
+  { pmd_kv3_v1_16, pmd_kv3_v1_id_16, arr_len (pmd_kv3_v1_16) },
+  { pmd_kv3_v1_17, pmd_kv3_v1_id_17, arr_len (pmd_kv3_v1_17) },
+  { NULL, -1, -1 },
+};
+
+static struct token_class imm_classes_kv3_v1[] = {
+  { NULL, Immediate_kv3_v1_unsigned6, 6 },
+  { NULL, Immediate_kv3_v1_signed10, -10 },
+  { NULL, Immediate_kv3_v1_sysnumber, 12 },
+  { NULL, Immediate_kv3_v1_signed16, -16 },
+  { NULL, Immediate_kv3_v1_pcrel17, 17 },
+  { NULL, Immediate_kv3_v1_pcrel27, 27 },
+  { NULL, Immediate_kv3_v1_signed27, -27 },
+  { NULL, Immediate_kv3_v1_wrapped32, 32 },
+  { NULL, Immediate_kv3_v1_signed37, -37 },
+  { NULL, Immediate_kv3_v1_signed43, -43 },
+  { NULL, Immediate_kv3_v1_signed54, -54 },
+  { NULL, Immediate_kv3_v1_wrapped64, 64 },
+  { NULL, -1, -1 },
+};
+
+static struct token_class insn_classes_kv3_v1[] = {
+  { insn_kv3_v1_abdd, Instruction_kv3_v1_abdd, arr_len (insn_kv3_v1_abdd) },
+  { insn_kv3_v1_abdd_abase, Instruction_kv3_v1_abdd_abase, arr_len (insn_kv3_v1_abdd_abase) },
+  { insn_kv3_v1_abdhq, Instruction_kv3_v1_abdhq, arr_len (insn_kv3_v1_abdhq) },
+  { insn_kv3_v1_abdw, Instruction_kv3_v1_abdw, arr_len (insn_kv3_v1_abdw) },
+  { insn_kv3_v1_abdwp, Instruction_kv3_v1_abdwp, arr_len (insn_kv3_v1_abdwp) },
+  { insn_kv3_v1_absd, Instruction_kv3_v1_absd, arr_len (insn_kv3_v1_absd) },
+  { insn_kv3_v1_abshq, Instruction_kv3_v1_abshq, arr_len (insn_kv3_v1_abshq) },
+  { insn_kv3_v1_absw, Instruction_kv3_v1_absw, arr_len (insn_kv3_v1_absw) },
+  { insn_kv3_v1_abswp, Instruction_kv3_v1_abswp, arr_len (insn_kv3_v1_abswp) },
+  { insn_kv3_v1_acswapd, Instruction_kv3_v1_acswapd, arr_len (insn_kv3_v1_acswapd) },
+  { insn_kv3_v1_acswapw, Instruction_kv3_v1_acswapw, arr_len (insn_kv3_v1_acswapw) },
+  { insn_kv3_v1_addcd, Instruction_kv3_v1_addcd, arr_len (insn_kv3_v1_addcd) },
+  { insn_kv3_v1_addcd_i, Instruction_kv3_v1_addcd_i, arr_len (insn_kv3_v1_addcd_i) },
+  { insn_kv3_v1_addd, Instruction_kv3_v1_addd, arr_len (insn_kv3_v1_addd) },
+  { insn_kv3_v1_addd_abase, Instruction_kv3_v1_addd_abase, arr_len (insn_kv3_v1_addd_abase) },
+  { insn_kv3_v1_addhcp_c, Instruction_kv3_v1_addhcp_c, arr_len (insn_kv3_v1_addhcp_c) },
+  { insn_kv3_v1_addhq, Instruction_kv3_v1_addhq, arr_len (insn_kv3_v1_addhq) },
+  { insn_kv3_v1_addsd, Instruction_kv3_v1_addsd, arr_len (insn_kv3_v1_addsd) },
+  { insn_kv3_v1_addshq, Instruction_kv3_v1_addshq, arr_len (insn_kv3_v1_addshq) },
+  { insn_kv3_v1_addsw, Instruction_kv3_v1_addsw, arr_len (insn_kv3_v1_addsw) },
+  { insn_kv3_v1_addswp, Instruction_kv3_v1_addswp, arr_len (insn_kv3_v1_addswp) },
+  { insn_kv3_v1_adduwd, Instruction_kv3_v1_adduwd, arr_len (insn_kv3_v1_adduwd) },
+  { insn_kv3_v1_addw, Instruction_kv3_v1_addw, arr_len (insn_kv3_v1_addw) },
+  { insn_kv3_v1_addwc_c, Instruction_kv3_v1_addwc_c, arr_len (insn_kv3_v1_addwc_c) },
+  { insn_kv3_v1_addwd, Instruction_kv3_v1_addwd, arr_len (insn_kv3_v1_addwd) },
+  { insn_kv3_v1_addwp, Instruction_kv3_v1_addwp, arr_len (insn_kv3_v1_addwp) },
+  { insn_kv3_v1_addx16d, Instruction_kv3_v1_addx16d, arr_len (insn_kv3_v1_addx16d) },
+  { insn_kv3_v1_addx16hq, Instruction_kv3_v1_addx16hq, arr_len (insn_kv3_v1_addx16hq) },
+  { insn_kv3_v1_addx16uwd, Instruction_kv3_v1_addx16uwd, arr_len (insn_kv3_v1_addx16uwd) },
+  { insn_kv3_v1_addx16w, Instruction_kv3_v1_addx16w, arr_len (insn_kv3_v1_addx16w) },
+  { insn_kv3_v1_addx16wd, Instruction_kv3_v1_addx16wd, arr_len (insn_kv3_v1_addx16wd) },
+  { insn_kv3_v1_addx16wp, Instruction_kv3_v1_addx16wp, arr_len (insn_kv3_v1_addx16wp) },
+  { insn_kv3_v1_addx2d, Instruction_kv3_v1_addx2d, arr_len (insn_kv3_v1_addx2d) },
+  { insn_kv3_v1_addx2hq, Instruction_kv3_v1_addx2hq, arr_len (insn_kv3_v1_addx2hq) },
+  { insn_kv3_v1_addx2uwd, Instruction_kv3_v1_addx2uwd, arr_len (insn_kv3_v1_addx2uwd) },
+  { insn_kv3_v1_addx2w, Instruction_kv3_v1_addx2w, arr_len (insn_kv3_v1_addx2w) },
+  { insn_kv3_v1_addx2wd, Instruction_kv3_v1_addx2wd, arr_len (insn_kv3_v1_addx2wd) },
+  { insn_kv3_v1_addx2wp, Instruction_kv3_v1_addx2wp, arr_len (insn_kv3_v1_addx2wp) },
+  { insn_kv3_v1_addx4d, Instruction_kv3_v1_addx4d, arr_len (insn_kv3_v1_addx4d) },
+  { insn_kv3_v1_addx4hq, Instruction_kv3_v1_addx4hq, arr_len (insn_kv3_v1_addx4hq) },
+  { insn_kv3_v1_addx4uwd, Instruction_kv3_v1_addx4uwd, arr_len (insn_kv3_v1_addx4uwd) },
+  { insn_kv3_v1_addx4w, Instruction_kv3_v1_addx4w, arr_len (insn_kv3_v1_addx4w) },
+  { insn_kv3_v1_addx4wd, Instruction_kv3_v1_addx4wd, arr_len (insn_kv3_v1_addx4wd) },
+  { insn_kv3_v1_addx4wp, Instruction_kv3_v1_addx4wp, arr_len (insn_kv3_v1_addx4wp) },
+  { insn_kv3_v1_addx8d, Instruction_kv3_v1_addx8d, arr_len (insn_kv3_v1_addx8d) },
+  { insn_kv3_v1_addx8hq, Instruction_kv3_v1_addx8hq, arr_len (insn_kv3_v1_addx8hq) },
+  { insn_kv3_v1_addx8uwd, Instruction_kv3_v1_addx8uwd, arr_len (insn_kv3_v1_addx8uwd) },
+  { insn_kv3_v1_addx8w, Instruction_kv3_v1_addx8w, arr_len (insn_kv3_v1_addx8w) },
+  { insn_kv3_v1_addx8wd, Instruction_kv3_v1_addx8wd, arr_len (insn_kv3_v1_addx8wd) },
+  { insn_kv3_v1_addx8wp, Instruction_kv3_v1_addx8wp, arr_len (insn_kv3_v1_addx8wp) },
+  { insn_kv3_v1_aladdd, Instruction_kv3_v1_aladdd, arr_len (insn_kv3_v1_aladdd) },
+  { insn_kv3_v1_aladdw, Instruction_kv3_v1_aladdw, arr_len (insn_kv3_v1_aladdw) },
+  { insn_kv3_v1_alclrd, Instruction_kv3_v1_alclrd, arr_len (insn_kv3_v1_alclrd) },
+  { insn_kv3_v1_alclrw, Instruction_kv3_v1_alclrw, arr_len (insn_kv3_v1_alclrw) },
+  { insn_kv3_v1_aligno, Instruction_kv3_v1_aligno, arr_len (insn_kv3_v1_aligno) },
+  { insn_kv3_v1_alignv, Instruction_kv3_v1_alignv, arr_len (insn_kv3_v1_alignv) },
+  { insn_kv3_v1_andd, Instruction_kv3_v1_andd, arr_len (insn_kv3_v1_andd) },
+  { insn_kv3_v1_andd_abase, Instruction_kv3_v1_andd_abase, arr_len (insn_kv3_v1_andd_abase) },
+  { insn_kv3_v1_andnd, Instruction_kv3_v1_andnd, arr_len (insn_kv3_v1_andnd) },
+  { insn_kv3_v1_andnd_abase, Instruction_kv3_v1_andnd_abase, arr_len (insn_kv3_v1_andnd_abase) },
+  { insn_kv3_v1_andnw, Instruction_kv3_v1_andnw, arr_len (insn_kv3_v1_andnw) },
+  { insn_kv3_v1_andw, Instruction_kv3_v1_andw, arr_len (insn_kv3_v1_andw) },
+  { insn_kv3_v1_avghq, Instruction_kv3_v1_avghq, arr_len (insn_kv3_v1_avghq) },
+  { insn_kv3_v1_avgrhq, Instruction_kv3_v1_avgrhq, arr_len (insn_kv3_v1_avgrhq) },
+  { insn_kv3_v1_avgruhq, Instruction_kv3_v1_avgruhq, arr_len (insn_kv3_v1_avgruhq) },
+  { insn_kv3_v1_avgruw, Instruction_kv3_v1_avgruw, arr_len (insn_kv3_v1_avgruw) },
+  { insn_kv3_v1_avgruwp, Instruction_kv3_v1_avgruwp, arr_len (insn_kv3_v1_avgruwp) },
+  { insn_kv3_v1_avgrw, Instruction_kv3_v1_avgrw, arr_len (insn_kv3_v1_avgrw) },
+  { insn_kv3_v1_avgrwp, Instruction_kv3_v1_avgrwp, arr_len (insn_kv3_v1_avgrwp) },
+  { insn_kv3_v1_avguhq, Instruction_kv3_v1_avguhq, arr_len (insn_kv3_v1_avguhq) },
+  { insn_kv3_v1_avguw, Instruction_kv3_v1_avguw, arr_len (insn_kv3_v1_avguw) },
+  { insn_kv3_v1_avguwp, Instruction_kv3_v1_avguwp, arr_len (insn_kv3_v1_avguwp) },
+  { insn_kv3_v1_avgw, Instruction_kv3_v1_avgw, arr_len (insn_kv3_v1_avgw) },
+  { insn_kv3_v1_avgwp, Instruction_kv3_v1_avgwp, arr_len (insn_kv3_v1_avgwp) },
+  { insn_kv3_v1_await, Instruction_kv3_v1_await, arr_len (insn_kv3_v1_await) },
+  { insn_kv3_v1_barrier, Instruction_kv3_v1_barrier, arr_len (insn_kv3_v1_barrier) },
+  { insn_kv3_v1_call, Instruction_kv3_v1_call, arr_len (insn_kv3_v1_call) },
+  { insn_kv3_v1_cb, Instruction_kv3_v1_cb, arr_len (insn_kv3_v1_cb) },
+  { insn_kv3_v1_cbsd, Instruction_kv3_v1_cbsd, arr_len (insn_kv3_v1_cbsd) },
+  { insn_kv3_v1_cbsw, Instruction_kv3_v1_cbsw, arr_len (insn_kv3_v1_cbsw) },
+  { insn_kv3_v1_cbswp, Instruction_kv3_v1_cbswp, arr_len (insn_kv3_v1_cbswp) },
+  { insn_kv3_v1_clrf, Instruction_kv3_v1_clrf, arr_len (insn_kv3_v1_clrf) },
+  { insn_kv3_v1_clsd, Instruction_kv3_v1_clsd, arr_len (insn_kv3_v1_clsd) },
+  { insn_kv3_v1_clsw, Instruction_kv3_v1_clsw, arr_len (insn_kv3_v1_clsw) },
+  { insn_kv3_v1_clswp, Instruction_kv3_v1_clswp, arr_len (insn_kv3_v1_clswp) },
+  { insn_kv3_v1_clzd, Instruction_kv3_v1_clzd, arr_len (insn_kv3_v1_clzd) },
+  { insn_kv3_v1_clzw, Instruction_kv3_v1_clzw, arr_len (insn_kv3_v1_clzw) },
+  { insn_kv3_v1_clzwp, Instruction_kv3_v1_clzwp, arr_len (insn_kv3_v1_clzwp) },
+  { insn_kv3_v1_cmoved, Instruction_kv3_v1_cmoved, arr_len (insn_kv3_v1_cmoved) },
+  { insn_kv3_v1_cmovehq, Instruction_kv3_v1_cmovehq, arr_len (insn_kv3_v1_cmovehq) },
+  { insn_kv3_v1_cmovewp, Instruction_kv3_v1_cmovewp, arr_len (insn_kv3_v1_cmovewp) },
+  { insn_kv3_v1_cmuldt, Instruction_kv3_v1_cmuldt, arr_len (insn_kv3_v1_cmuldt) },
+  { insn_kv3_v1_cmulghxdt, Instruction_kv3_v1_cmulghxdt, arr_len (insn_kv3_v1_cmulghxdt) },
+  { insn_kv3_v1_cmulglxdt, Instruction_kv3_v1_cmulglxdt, arr_len (insn_kv3_v1_cmulglxdt) },
+  { insn_kv3_v1_cmulgmxdt, Instruction_kv3_v1_cmulgmxdt, arr_len (insn_kv3_v1_cmulgmxdt) },
+  { insn_kv3_v1_cmulxdt, Instruction_kv3_v1_cmulxdt, arr_len (insn_kv3_v1_cmulxdt) },
+  { insn_kv3_v1_compd, Instruction_kv3_v1_compd, arr_len (insn_kv3_v1_compd) },
+  { insn_kv3_v1_compnhq, Instruction_kv3_v1_compnhq, arr_len (insn_kv3_v1_compnhq) },
+  { insn_kv3_v1_compnwp, Instruction_kv3_v1_compnwp, arr_len (insn_kv3_v1_compnwp) },
+  { insn_kv3_v1_compuwd, Instruction_kv3_v1_compuwd, arr_len (insn_kv3_v1_compuwd) },
+  { insn_kv3_v1_compw, Instruction_kv3_v1_compw, arr_len (insn_kv3_v1_compw) },
+  { insn_kv3_v1_compwd, Instruction_kv3_v1_compwd, arr_len (insn_kv3_v1_compwd) },
+  { insn_kv3_v1_convdhv0, Instruction_kv3_v1_convdhv0, arr_len (insn_kv3_v1_convdhv0) },
+  { insn_kv3_v1_convdhv1, Instruction_kv3_v1_convdhv1, arr_len (insn_kv3_v1_convdhv1) },
+  { insn_kv3_v1_convwbv0, Instruction_kv3_v1_convwbv0, arr_len (insn_kv3_v1_convwbv0) },
+  { insn_kv3_v1_convwbv1, Instruction_kv3_v1_convwbv1, arr_len (insn_kv3_v1_convwbv1) },
+  { insn_kv3_v1_convwbv2, Instruction_kv3_v1_convwbv2, arr_len (insn_kv3_v1_convwbv2) },
+  { insn_kv3_v1_convwbv3, Instruction_kv3_v1_convwbv3, arr_len (insn_kv3_v1_convwbv3) },
+  { insn_kv3_v1_copyd, Instruction_kv3_v1_copyd, arr_len (insn_kv3_v1_copyd) },
+  { insn_kv3_v1_copyo, Instruction_kv3_v1_copyo, arr_len (insn_kv3_v1_copyo) },
+  { insn_kv3_v1_copyq, Instruction_kv3_v1_copyq, arr_len (insn_kv3_v1_copyq) },
+  { insn_kv3_v1_copyw, Instruction_kv3_v1_copyw, arr_len (insn_kv3_v1_copyw) },
+  { insn_kv3_v1_crcbellw, Instruction_kv3_v1_crcbellw, arr_len (insn_kv3_v1_crcbellw) },
+  { insn_kv3_v1_crcbelmw, Instruction_kv3_v1_crcbelmw, arr_len (insn_kv3_v1_crcbelmw) },
+  { insn_kv3_v1_crclellw, Instruction_kv3_v1_crclellw, arr_len (insn_kv3_v1_crclellw) },
+  { insn_kv3_v1_crclelmw, Instruction_kv3_v1_crclelmw, arr_len (insn_kv3_v1_crclelmw) },
+  { insn_kv3_v1_ctzd, Instruction_kv3_v1_ctzd, arr_len (insn_kv3_v1_ctzd) },
+  { insn_kv3_v1_ctzw, Instruction_kv3_v1_ctzw, arr_len (insn_kv3_v1_ctzw) },
+  { insn_kv3_v1_ctzwp, Instruction_kv3_v1_ctzwp, arr_len (insn_kv3_v1_ctzwp) },
+  { insn_kv3_v1_d1inval, Instruction_kv3_v1_d1inval, arr_len (insn_kv3_v1_d1inval) },
+  { insn_kv3_v1_dinvall, Instruction_kv3_v1_dinvall, arr_len (insn_kv3_v1_dinvall) },
+  { insn_kv3_v1_dot2suwd, Instruction_kv3_v1_dot2suwd, arr_len (insn_kv3_v1_dot2suwd) },
+  { insn_kv3_v1_dot2suwdp, Instruction_kv3_v1_dot2suwdp, arr_len (insn_kv3_v1_dot2suwdp) },
+  { insn_kv3_v1_dot2uwd, Instruction_kv3_v1_dot2uwd, arr_len (insn_kv3_v1_dot2uwd) },
+  { insn_kv3_v1_dot2uwdp, Instruction_kv3_v1_dot2uwdp, arr_len (insn_kv3_v1_dot2uwdp) },
+  { insn_kv3_v1_dot2w, Instruction_kv3_v1_dot2w, arr_len (insn_kv3_v1_dot2w) },
+  { insn_kv3_v1_dot2wd, Instruction_kv3_v1_dot2wd, arr_len (insn_kv3_v1_dot2wd) },
+  { insn_kv3_v1_dot2wdp, Instruction_kv3_v1_dot2wdp, arr_len (insn_kv3_v1_dot2wdp) },
+  { insn_kv3_v1_dot2wzp, Instruction_kv3_v1_dot2wzp, arr_len (insn_kv3_v1_dot2wzp) },
+  { insn_kv3_v1_dtouchl, Instruction_kv3_v1_dtouchl, arr_len (insn_kv3_v1_dtouchl) },
+  { insn_kv3_v1_dzerol, Instruction_kv3_v1_dzerol, arr_len (insn_kv3_v1_dzerol) },
+  { insn_kv3_v1_errop, Instruction_kv3_v1_errop, arr_len (insn_kv3_v1_errop) },
+  { insn_kv3_v1_extfs, Instruction_kv3_v1_extfs, arr_len (insn_kv3_v1_extfs) },
+  { insn_kv3_v1_extfz, Instruction_kv3_v1_extfz, arr_len (insn_kv3_v1_extfz) },
+  { insn_kv3_v1_fabsd, Instruction_kv3_v1_fabsd, arr_len (insn_kv3_v1_fabsd) },
+  { insn_kv3_v1_fabshq, Instruction_kv3_v1_fabshq, arr_len (insn_kv3_v1_fabshq) },
+  { insn_kv3_v1_fabsw, Instruction_kv3_v1_fabsw, arr_len (insn_kv3_v1_fabsw) },
+  { insn_kv3_v1_fabswp, Instruction_kv3_v1_fabswp, arr_len (insn_kv3_v1_fabswp) },
+  { insn_kv3_v1_faddd, Instruction_kv3_v1_faddd, arr_len (insn_kv3_v1_faddd) },
+  { insn_kv3_v1_fadddc, Instruction_kv3_v1_fadddc, arr_len (insn_kv3_v1_fadddc) },
+  { insn_kv3_v1_fadddc_c, Instruction_kv3_v1_fadddc_c, arr_len (insn_kv3_v1_fadddc_c) },
+  { insn_kv3_v1_fadddp, Instruction_kv3_v1_fadddp, arr_len (insn_kv3_v1_fadddp) },
+  { insn_kv3_v1_faddhq, Instruction_kv3_v1_faddhq, arr_len (insn_kv3_v1_faddhq) },
+  { insn_kv3_v1_faddw, Instruction_kv3_v1_faddw, arr_len (insn_kv3_v1_faddw) },
+  { insn_kv3_v1_faddwc, Instruction_kv3_v1_faddwc, arr_len (insn_kv3_v1_faddwc) },
+  { insn_kv3_v1_faddwc_c, Instruction_kv3_v1_faddwc_c, arr_len (insn_kv3_v1_faddwc_c) },
+  { insn_kv3_v1_faddwcp, Instruction_kv3_v1_faddwcp, arr_len (insn_kv3_v1_faddwcp) },
+  { insn_kv3_v1_faddwcp_c, Instruction_kv3_v1_faddwcp_c, arr_len (insn_kv3_v1_faddwcp_c) },
+  { insn_kv3_v1_faddwp, Instruction_kv3_v1_faddwp, arr_len (insn_kv3_v1_faddwp) },
+  { insn_kv3_v1_faddwq, Instruction_kv3_v1_faddwq, arr_len (insn_kv3_v1_faddwq) },
+  { insn_kv3_v1_fcdivd, Instruction_kv3_v1_fcdivd, arr_len (insn_kv3_v1_fcdivd) },
+  { insn_kv3_v1_fcdivw, Instruction_kv3_v1_fcdivw, arr_len (insn_kv3_v1_fcdivw) },
+  { insn_kv3_v1_fcdivwp, Instruction_kv3_v1_fcdivwp, arr_len (insn_kv3_v1_fcdivwp) },
+  { insn_kv3_v1_fcompd, Instruction_kv3_v1_fcompd, arr_len (insn_kv3_v1_fcompd) },
+  { insn_kv3_v1_fcompnhq, Instruction_kv3_v1_fcompnhq, arr_len (insn_kv3_v1_fcompnhq) },
+  { insn_kv3_v1_fcompnwp, Instruction_kv3_v1_fcompnwp, arr_len (insn_kv3_v1_fcompnwp) },
+  { insn_kv3_v1_fcompw, Instruction_kv3_v1_fcompw, arr_len (insn_kv3_v1_fcompw) },
+  { insn_kv3_v1_fdot2w, Instruction_kv3_v1_fdot2w, arr_len (insn_kv3_v1_fdot2w) },
+  { insn_kv3_v1_fdot2wd, Instruction_kv3_v1_fdot2wd, arr_len (insn_kv3_v1_fdot2wd) },
+  { insn_kv3_v1_fdot2wdp, Instruction_kv3_v1_fdot2wdp, arr_len (insn_kv3_v1_fdot2wdp) },
+  { insn_kv3_v1_fdot2wzp, Instruction_kv3_v1_fdot2wzp, arr_len (insn_kv3_v1_fdot2wzp) },
+  { insn_kv3_v1_fence, Instruction_kv3_v1_fence, arr_len (insn_kv3_v1_fence) },
+  { insn_kv3_v1_ffmad, Instruction_kv3_v1_ffmad, arr_len (insn_kv3_v1_ffmad) },
+  { insn_kv3_v1_ffmahq, Instruction_kv3_v1_ffmahq, arr_len (insn_kv3_v1_ffmahq) },
+  { insn_kv3_v1_ffmahw, Instruction_kv3_v1_ffmahw, arr_len (insn_kv3_v1_ffmahw) },
+  { insn_kv3_v1_ffmahwq, Instruction_kv3_v1_ffmahwq, arr_len (insn_kv3_v1_ffmahwq) },
+  { insn_kv3_v1_ffmaw, Instruction_kv3_v1_ffmaw, arr_len (insn_kv3_v1_ffmaw) },
+  { insn_kv3_v1_ffmawd, Instruction_kv3_v1_ffmawd, arr_len (insn_kv3_v1_ffmawd) },
+  { insn_kv3_v1_ffmawdp, Instruction_kv3_v1_ffmawdp, arr_len (insn_kv3_v1_ffmawdp) },
+  { insn_kv3_v1_ffmawp, Instruction_kv3_v1_ffmawp, arr_len (insn_kv3_v1_ffmawp) },
+  { insn_kv3_v1_ffmsd, Instruction_kv3_v1_ffmsd, arr_len (insn_kv3_v1_ffmsd) },
+  { insn_kv3_v1_ffmshq, Instruction_kv3_v1_ffmshq, arr_len (insn_kv3_v1_ffmshq) },
+  { insn_kv3_v1_ffmshw, Instruction_kv3_v1_ffmshw, arr_len (insn_kv3_v1_ffmshw) },
+  { insn_kv3_v1_ffmshwq, Instruction_kv3_v1_ffmshwq, arr_len (insn_kv3_v1_ffmshwq) },
+  { insn_kv3_v1_ffmsw, Instruction_kv3_v1_ffmsw, arr_len (insn_kv3_v1_ffmsw) },
+  { insn_kv3_v1_ffmswd, Instruction_kv3_v1_ffmswd, arr_len (insn_kv3_v1_ffmswd) },
+  { insn_kv3_v1_ffmswdp, Instruction_kv3_v1_ffmswdp, arr_len (insn_kv3_v1_ffmswdp) },
+  { insn_kv3_v1_ffmswp, Instruction_kv3_v1_ffmswp, arr_len (insn_kv3_v1_ffmswp) },
+  { insn_kv3_v1_fixedd, Instruction_kv3_v1_fixedd, arr_len (insn_kv3_v1_fixedd) },
+  { insn_kv3_v1_fixedud, Instruction_kv3_v1_fixedud, arr_len (insn_kv3_v1_fixedud) },
+  { insn_kv3_v1_fixeduw, Instruction_kv3_v1_fixeduw, arr_len (insn_kv3_v1_fixeduw) },
+  { insn_kv3_v1_fixeduwp, Instruction_kv3_v1_fixeduwp, arr_len (insn_kv3_v1_fixeduwp) },
+  { insn_kv3_v1_fixedw, Instruction_kv3_v1_fixedw, arr_len (insn_kv3_v1_fixedw) },
+  { insn_kv3_v1_fixedwp, Instruction_kv3_v1_fixedwp, arr_len (insn_kv3_v1_fixedwp) },
+  { insn_kv3_v1_floatd, Instruction_kv3_v1_floatd, arr_len (insn_kv3_v1_floatd) },
+  { insn_kv3_v1_floatud, Instruction_kv3_v1_floatud, arr_len (insn_kv3_v1_floatud) },
+  { insn_kv3_v1_floatuw, Instruction_kv3_v1_floatuw, arr_len (insn_kv3_v1_floatuw) },
+  { insn_kv3_v1_floatuwp, Instruction_kv3_v1_floatuwp, arr_len (insn_kv3_v1_floatuwp) },
+  { insn_kv3_v1_floatw, Instruction_kv3_v1_floatw, arr_len (insn_kv3_v1_floatw) },
+  { insn_kv3_v1_floatwp, Instruction_kv3_v1_floatwp, arr_len (insn_kv3_v1_floatwp) },
+  { insn_kv3_v1_fmaxd, Instruction_kv3_v1_fmaxd, arr_len (insn_kv3_v1_fmaxd) },
+  { insn_kv3_v1_fmaxhq, Instruction_kv3_v1_fmaxhq, arr_len (insn_kv3_v1_fmaxhq) },
+  { insn_kv3_v1_fmaxw, Instruction_kv3_v1_fmaxw, arr_len (insn_kv3_v1_fmaxw) },
+  { insn_kv3_v1_fmaxwp, Instruction_kv3_v1_fmaxwp, arr_len (insn_kv3_v1_fmaxwp) },
+  { insn_kv3_v1_fmind, Instruction_kv3_v1_fmind, arr_len (insn_kv3_v1_fmind) },
+  { insn_kv3_v1_fminhq, Instruction_kv3_v1_fminhq, arr_len (insn_kv3_v1_fminhq) },
+  { insn_kv3_v1_fminw, Instruction_kv3_v1_fminw, arr_len (insn_kv3_v1_fminw) },
+  { insn_kv3_v1_fminwp, Instruction_kv3_v1_fminwp, arr_len (insn_kv3_v1_fminwp) },
+  { insn_kv3_v1_fmm212w, Instruction_kv3_v1_fmm212w, arr_len (insn_kv3_v1_fmm212w) },
+  { insn_kv3_v1_fmma212w, Instruction_kv3_v1_fmma212w, arr_len (insn_kv3_v1_fmma212w) },
+  { insn_kv3_v1_fmma242hw0, Instruction_kv3_v1_fmma242hw0, arr_len (insn_kv3_v1_fmma242hw0) },
+  { insn_kv3_v1_fmma242hw1, Instruction_kv3_v1_fmma242hw1, arr_len (insn_kv3_v1_fmma242hw1) },
+  { insn_kv3_v1_fmma242hw2, Instruction_kv3_v1_fmma242hw2, arr_len (insn_kv3_v1_fmma242hw2) },
+  { insn_kv3_v1_fmma242hw3, Instruction_kv3_v1_fmma242hw3, arr_len (insn_kv3_v1_fmma242hw3) },
+  { insn_kv3_v1_fmms212w, Instruction_kv3_v1_fmms212w, arr_len (insn_kv3_v1_fmms212w) },
+  { insn_kv3_v1_fmuld, Instruction_kv3_v1_fmuld, arr_len (insn_kv3_v1_fmuld) },
+  { insn_kv3_v1_fmulhq, Instruction_kv3_v1_fmulhq, arr_len (insn_kv3_v1_fmulhq) },
+  { insn_kv3_v1_fmulhw, Instruction_kv3_v1_fmulhw, arr_len (insn_kv3_v1_fmulhw) },
+  { insn_kv3_v1_fmulhwq, Instruction_kv3_v1_fmulhwq, arr_len (insn_kv3_v1_fmulhwq) },
+  { insn_kv3_v1_fmulw, Instruction_kv3_v1_fmulw, arr_len (insn_kv3_v1_fmulw) },
+  { insn_kv3_v1_fmulwc, Instruction_kv3_v1_fmulwc, arr_len (insn_kv3_v1_fmulwc) },
+  { insn_kv3_v1_fmulwc_c, Instruction_kv3_v1_fmulwc_c, arr_len (insn_kv3_v1_fmulwc_c) },
+  { insn_kv3_v1_fmulwd, Instruction_kv3_v1_fmulwd, arr_len (insn_kv3_v1_fmulwd) },
+  { insn_kv3_v1_fmulwdc, Instruction_kv3_v1_fmulwdc, arr_len (insn_kv3_v1_fmulwdc) },
+  { insn_kv3_v1_fmulwdc_c, Instruction_kv3_v1_fmulwdc_c, arr_len (insn_kv3_v1_fmulwdc_c) },
+  { insn_kv3_v1_fmulwdp, Instruction_kv3_v1_fmulwdp, arr_len (insn_kv3_v1_fmulwdp) },
+  { insn_kv3_v1_fmulwp, Instruction_kv3_v1_fmulwp, arr_len (insn_kv3_v1_fmulwp) },
+  { insn_kv3_v1_fmulwq, Instruction_kv3_v1_fmulwq, arr_len (insn_kv3_v1_fmulwq) },
+  { insn_kv3_v1_fnarrow44wh, Instruction_kv3_v1_fnarrow44wh, arr_len (insn_kv3_v1_fnarrow44wh) },
+  { insn_kv3_v1_fnarrowdw, Instruction_kv3_v1_fnarrowdw, arr_len (insn_kv3_v1_fnarrowdw) },
+  { insn_kv3_v1_fnarrowdwp, Instruction_kv3_v1_fnarrowdwp, arr_len (insn_kv3_v1_fnarrowdwp) },
+  { insn_kv3_v1_fnarrowwh, Instruction_kv3_v1_fnarrowwh, arr_len (insn_kv3_v1_fnarrowwh) },
+  { insn_kv3_v1_fnarrowwhq, Instruction_kv3_v1_fnarrowwhq, arr_len (insn_kv3_v1_fnarrowwhq) },
+  { insn_kv3_v1_fnegd, Instruction_kv3_v1_fnegd, arr_len (insn_kv3_v1_fnegd) },
+  { insn_kv3_v1_fneghq, Instruction_kv3_v1_fneghq, arr_len (insn_kv3_v1_fneghq) },
+  { insn_kv3_v1_fnegw, Instruction_kv3_v1_fnegw, arr_len (insn_kv3_v1_fnegw) },
+  { insn_kv3_v1_fnegwp, Instruction_kv3_v1_fnegwp, arr_len (insn_kv3_v1_fnegwp) },
+  { insn_kv3_v1_frecw, Instruction_kv3_v1_frecw, arr_len (insn_kv3_v1_frecw) },
+  { insn_kv3_v1_frsrw, Instruction_kv3_v1_frsrw, arr_len (insn_kv3_v1_frsrw) },
+  { insn_kv3_v1_fsbfd, Instruction_kv3_v1_fsbfd, arr_len (insn_kv3_v1_fsbfd) },
+  { insn_kv3_v1_fsbfdc, Instruction_kv3_v1_fsbfdc, arr_len (insn_kv3_v1_fsbfdc) },
+  { insn_kv3_v1_fsbfdc_c, Instruction_kv3_v1_fsbfdc_c, arr_len (insn_kv3_v1_fsbfdc_c) },
+  { insn_kv3_v1_fsbfdp, Instruction_kv3_v1_fsbfdp, arr_len (insn_kv3_v1_fsbfdp) },
+  { insn_kv3_v1_fsbfhq, Instruction_kv3_v1_fsbfhq, arr_len (insn_kv3_v1_fsbfhq) },
+  { insn_kv3_v1_fsbfw, Instruction_kv3_v1_fsbfw, arr_len (insn_kv3_v1_fsbfw) },
+  { insn_kv3_v1_fsbfwc, Instruction_kv3_v1_fsbfwc, arr_len (insn_kv3_v1_fsbfwc) },
+  { insn_kv3_v1_fsbfwc_c, Instruction_kv3_v1_fsbfwc_c, arr_len (insn_kv3_v1_fsbfwc_c) },
+  { insn_kv3_v1_fsbfwcp, Instruction_kv3_v1_fsbfwcp, arr_len (insn_kv3_v1_fsbfwcp) },
+  { insn_kv3_v1_fsbfwcp_c, Instruction_kv3_v1_fsbfwcp_c, arr_len (insn_kv3_v1_fsbfwcp_c) },
+  { insn_kv3_v1_fsbfwp, Instruction_kv3_v1_fsbfwp, arr_len (insn_kv3_v1_fsbfwp) },
+  { insn_kv3_v1_fsbfwq, Instruction_kv3_v1_fsbfwq, arr_len (insn_kv3_v1_fsbfwq) },
+  { insn_kv3_v1_fscalewv, Instruction_kv3_v1_fscalewv, arr_len (insn_kv3_v1_fscalewv) },
+  { insn_kv3_v1_fsdivd, Instruction_kv3_v1_fsdivd, arr_len (insn_kv3_v1_fsdivd) },
+  { insn_kv3_v1_fsdivw, Instruction_kv3_v1_fsdivw, arr_len (insn_kv3_v1_fsdivw) },
+  { insn_kv3_v1_fsdivwp, Instruction_kv3_v1_fsdivwp, arr_len (insn_kv3_v1_fsdivwp) },
+  { insn_kv3_v1_fsrecd, Instruction_kv3_v1_fsrecd, arr_len (insn_kv3_v1_fsrecd) },
+  { insn_kv3_v1_fsrecw, Instruction_kv3_v1_fsrecw, arr_len (insn_kv3_v1_fsrecw) },
+  { insn_kv3_v1_fsrecwp, Instruction_kv3_v1_fsrecwp, arr_len (insn_kv3_v1_fsrecwp) },
+  { insn_kv3_v1_fsrsrd, Instruction_kv3_v1_fsrsrd, arr_len (insn_kv3_v1_fsrsrd) },
+  { insn_kv3_v1_fsrsrw, Instruction_kv3_v1_fsrsrw, arr_len (insn_kv3_v1_fsrsrw) },
+  { insn_kv3_v1_fsrsrwp, Instruction_kv3_v1_fsrsrwp, arr_len (insn_kv3_v1_fsrsrwp) },
+  { insn_kv3_v1_fwidenlhw, Instruction_kv3_v1_fwidenlhw, arr_len (insn_kv3_v1_fwidenlhw) },
+  { insn_kv3_v1_fwidenlhwp, Instruction_kv3_v1_fwidenlhwp, arr_len (insn_kv3_v1_fwidenlhwp) },
+  { insn_kv3_v1_fwidenlwd, Instruction_kv3_v1_fwidenlwd, arr_len (insn_kv3_v1_fwidenlwd) },
+  { insn_kv3_v1_fwidenmhw, Instruction_kv3_v1_fwidenmhw, arr_len (insn_kv3_v1_fwidenmhw) },
+  { insn_kv3_v1_fwidenmhwp, Instruction_kv3_v1_fwidenmhwp, arr_len (insn_kv3_v1_fwidenmhwp) },
+  { insn_kv3_v1_fwidenmwd, Instruction_kv3_v1_fwidenmwd, arr_len (insn_kv3_v1_fwidenmwd) },
+  { insn_kv3_v1_get, Instruction_kv3_v1_get, arr_len (insn_kv3_v1_get) },
+  { insn_kv3_v1_goto, Instruction_kv3_v1_goto, arr_len (insn_kv3_v1_goto) },
+  { insn_kv3_v1_i1inval, Instruction_kv3_v1_i1inval, arr_len (insn_kv3_v1_i1inval) },
+  { insn_kv3_v1_i1invals, Instruction_kv3_v1_i1invals, arr_len (insn_kv3_v1_i1invals) },
+  { insn_kv3_v1_icall, Instruction_kv3_v1_icall, arr_len (insn_kv3_v1_icall) },
+  { insn_kv3_v1_iget, Instruction_kv3_v1_iget, arr_len (insn_kv3_v1_iget) },
+  { insn_kv3_v1_igoto, Instruction_kv3_v1_igoto, arr_len (insn_kv3_v1_igoto) },
+  { insn_kv3_v1_insf, Instruction_kv3_v1_insf, arr_len (insn_kv3_v1_insf) },
+  { insn_kv3_v1_landd, Instruction_kv3_v1_landd, arr_len (insn_kv3_v1_landd) },
+  { insn_kv3_v1_landhq, Instruction_kv3_v1_landhq, arr_len (insn_kv3_v1_landhq) },
+  { insn_kv3_v1_landw, Instruction_kv3_v1_landw, arr_len (insn_kv3_v1_landw) },
+  { insn_kv3_v1_landwp, Instruction_kv3_v1_landwp, arr_len (insn_kv3_v1_landwp) },
+  { insn_kv3_v1_lbs, Instruction_kv3_v1_lbs, arr_len (insn_kv3_v1_lbs) },
+  { insn_kv3_v1_lbz, Instruction_kv3_v1_lbz, arr_len (insn_kv3_v1_lbz) },
+  { insn_kv3_v1_ld, Instruction_kv3_v1_ld, arr_len (insn_kv3_v1_ld) },
+  { insn_kv3_v1_lhs, Instruction_kv3_v1_lhs, arr_len (insn_kv3_v1_lhs) },
+  { insn_kv3_v1_lhz, Instruction_kv3_v1_lhz, arr_len (insn_kv3_v1_lhz) },
+  { insn_kv3_v1_lnandd, Instruction_kv3_v1_lnandd, arr_len (insn_kv3_v1_lnandd) },
+  { insn_kv3_v1_lnandhq, Instruction_kv3_v1_lnandhq, arr_len (insn_kv3_v1_lnandhq) },
+  { insn_kv3_v1_lnandw, Instruction_kv3_v1_lnandw, arr_len (insn_kv3_v1_lnandw) },
+  { insn_kv3_v1_lnandwp, Instruction_kv3_v1_lnandwp, arr_len (insn_kv3_v1_lnandwp) },
+  { insn_kv3_v1_lnord, Instruction_kv3_v1_lnord, arr_len (insn_kv3_v1_lnord) },
+  { insn_kv3_v1_lnorhq, Instruction_kv3_v1_lnorhq, arr_len (insn_kv3_v1_lnorhq) },
+  { insn_kv3_v1_lnorw, Instruction_kv3_v1_lnorw, arr_len (insn_kv3_v1_lnorw) },
+  { insn_kv3_v1_lnorwp, Instruction_kv3_v1_lnorwp, arr_len (insn_kv3_v1_lnorwp) },
+  { insn_kv3_v1_lo, Instruction_kv3_v1_lo, arr_len (insn_kv3_v1_lo) },
+  { insn_kv3_v1_loopdo, Instruction_kv3_v1_loopdo, arr_len (insn_kv3_v1_loopdo) },
+  { insn_kv3_v1_lord, Instruction_kv3_v1_lord, arr_len (insn_kv3_v1_lord) },
+  { insn_kv3_v1_lorhq, Instruction_kv3_v1_lorhq, arr_len (insn_kv3_v1_lorhq) },
+  { insn_kv3_v1_lorw, Instruction_kv3_v1_lorw, arr_len (insn_kv3_v1_lorw) },
+  { insn_kv3_v1_lorwp, Instruction_kv3_v1_lorwp, arr_len (insn_kv3_v1_lorwp) },
+  { insn_kv3_v1_lq, Instruction_kv3_v1_lq, arr_len (insn_kv3_v1_lq) },
+  { insn_kv3_v1_lws, Instruction_kv3_v1_lws, arr_len (insn_kv3_v1_lws) },
+  { insn_kv3_v1_lwz, Instruction_kv3_v1_lwz, arr_len (insn_kv3_v1_lwz) },
+  { insn_kv3_v1_maddd, Instruction_kv3_v1_maddd, arr_len (insn_kv3_v1_maddd) },
+  { insn_kv3_v1_madddt, Instruction_kv3_v1_madddt, arr_len (insn_kv3_v1_madddt) },
+  { insn_kv3_v1_maddhq, Instruction_kv3_v1_maddhq, arr_len (insn_kv3_v1_maddhq) },
+  { insn_kv3_v1_maddhwq, Instruction_kv3_v1_maddhwq, arr_len (insn_kv3_v1_maddhwq) },
+  { insn_kv3_v1_maddsudt, Instruction_kv3_v1_maddsudt, arr_len (insn_kv3_v1_maddsudt) },
+  { insn_kv3_v1_maddsuhwq, Instruction_kv3_v1_maddsuhwq, arr_len (insn_kv3_v1_maddsuhwq) },
+  { insn_kv3_v1_maddsuwd, Instruction_kv3_v1_maddsuwd, arr_len (insn_kv3_v1_maddsuwd) },
+  { insn_kv3_v1_maddsuwdp, Instruction_kv3_v1_maddsuwdp, arr_len (insn_kv3_v1_maddsuwdp) },
+  { insn_kv3_v1_maddudt, Instruction_kv3_v1_maddudt, arr_len (insn_kv3_v1_maddudt) },
+  { insn_kv3_v1_madduhwq, Instruction_kv3_v1_madduhwq, arr_len (insn_kv3_v1_madduhwq) },
+  { insn_kv3_v1_madduwd, Instruction_kv3_v1_madduwd, arr_len (insn_kv3_v1_madduwd) },
+  { insn_kv3_v1_madduwdp, Instruction_kv3_v1_madduwdp, arr_len (insn_kv3_v1_madduwdp) },
+  { insn_kv3_v1_madduzdt, Instruction_kv3_v1_madduzdt, arr_len (insn_kv3_v1_madduzdt) },
+  { insn_kv3_v1_maddw, Instruction_kv3_v1_maddw, arr_len (insn_kv3_v1_maddw) },
+  { insn_kv3_v1_maddwd, Instruction_kv3_v1_maddwd, arr_len (insn_kv3_v1_maddwd) },
+  { insn_kv3_v1_maddwdp, Instruction_kv3_v1_maddwdp, arr_len (insn_kv3_v1_maddwdp) },
+  { insn_kv3_v1_maddwp, Instruction_kv3_v1_maddwp, arr_len (insn_kv3_v1_maddwp) },
+  { insn_kv3_v1_make, Instruction_kv3_v1_make, arr_len (insn_kv3_v1_make) },
+  { insn_kv3_v1_maxd, Instruction_kv3_v1_maxd, arr_len (insn_kv3_v1_maxd) },
+  { insn_kv3_v1_maxd_abase, Instruction_kv3_v1_maxd_abase, arr_len (insn_kv3_v1_maxd_abase) },
+  { insn_kv3_v1_maxhq, Instruction_kv3_v1_maxhq, arr_len (insn_kv3_v1_maxhq) },
+  { insn_kv3_v1_maxud, Instruction_kv3_v1_maxud, arr_len (insn_kv3_v1_maxud) },
+  { insn_kv3_v1_maxud_abase, Instruction_kv3_v1_maxud_abase, arr_len (insn_kv3_v1_maxud_abase) },
+  { insn_kv3_v1_maxuhq, Instruction_kv3_v1_maxuhq, arr_len (insn_kv3_v1_maxuhq) },
+  { insn_kv3_v1_maxuw, Instruction_kv3_v1_maxuw, arr_len (insn_kv3_v1_maxuw) },
+  { insn_kv3_v1_maxuwp, Instruction_kv3_v1_maxuwp, arr_len (insn_kv3_v1_maxuwp) },
+  { insn_kv3_v1_maxw, Instruction_kv3_v1_maxw, arr_len (insn_kv3_v1_maxw) },
+  { insn_kv3_v1_maxwp, Instruction_kv3_v1_maxwp, arr_len (insn_kv3_v1_maxwp) },
+  { insn_kv3_v1_mind, Instruction_kv3_v1_mind, arr_len (insn_kv3_v1_mind) },
+  { insn_kv3_v1_mind_abase, Instruction_kv3_v1_mind_abase, arr_len (insn_kv3_v1_mind_abase) },
+  { insn_kv3_v1_minhq, Instruction_kv3_v1_minhq, arr_len (insn_kv3_v1_minhq) },
+  { insn_kv3_v1_minud, Instruction_kv3_v1_minud, arr_len (insn_kv3_v1_minud) },
+  { insn_kv3_v1_minud_abase, Instruction_kv3_v1_minud_abase, arr_len (insn_kv3_v1_minud_abase) },
+  { insn_kv3_v1_minuhq, Instruction_kv3_v1_minuhq, arr_len (insn_kv3_v1_minuhq) },
+  { insn_kv3_v1_minuw, Instruction_kv3_v1_minuw, arr_len (insn_kv3_v1_minuw) },
+  { insn_kv3_v1_minuwp, Instruction_kv3_v1_minuwp, arr_len (insn_kv3_v1_minuwp) },
+  { insn_kv3_v1_minw, Instruction_kv3_v1_minw, arr_len (insn_kv3_v1_minw) },
+  { insn_kv3_v1_minwp, Instruction_kv3_v1_minwp, arr_len (insn_kv3_v1_minwp) },
+  { insn_kv3_v1_mm212w, Instruction_kv3_v1_mm212w, arr_len (insn_kv3_v1_mm212w) },
+  { insn_kv3_v1_mma212w, Instruction_kv3_v1_mma212w, arr_len (insn_kv3_v1_mma212w) },
+  { insn_kv3_v1_mma444hbd0, Instruction_kv3_v1_mma444hbd0, arr_len (insn_kv3_v1_mma444hbd0) },
+  { insn_kv3_v1_mma444hbd1, Instruction_kv3_v1_mma444hbd1, arr_len (insn_kv3_v1_mma444hbd1) },
+  { insn_kv3_v1_mma444hd, Instruction_kv3_v1_mma444hd, arr_len (insn_kv3_v1_mma444hd) },
+  { insn_kv3_v1_mma444suhbd0, Instruction_kv3_v1_mma444suhbd0, arr_len (insn_kv3_v1_mma444suhbd0) },
+  { insn_kv3_v1_mma444suhbd1, Instruction_kv3_v1_mma444suhbd1, arr_len (insn_kv3_v1_mma444suhbd1) },
+  { insn_kv3_v1_mma444suhd, Instruction_kv3_v1_mma444suhd, arr_len (insn_kv3_v1_mma444suhd) },
+  { insn_kv3_v1_mma444uhbd0, Instruction_kv3_v1_mma444uhbd0, arr_len (insn_kv3_v1_mma444uhbd0) },
+  { insn_kv3_v1_mma444uhbd1, Instruction_kv3_v1_mma444uhbd1, arr_len (insn_kv3_v1_mma444uhbd1) },
+  { insn_kv3_v1_mma444uhd, Instruction_kv3_v1_mma444uhd, arr_len (insn_kv3_v1_mma444uhd) },
+  { insn_kv3_v1_mma444ushbd0, Instruction_kv3_v1_mma444ushbd0, arr_len (insn_kv3_v1_mma444ushbd0) },
+  { insn_kv3_v1_mma444ushbd1, Instruction_kv3_v1_mma444ushbd1, arr_len (insn_kv3_v1_mma444ushbd1) },
+  { insn_kv3_v1_mma444ushd, Instruction_kv3_v1_mma444ushd, arr_len (insn_kv3_v1_mma444ushd) },
+  { insn_kv3_v1_mms212w, Instruction_kv3_v1_mms212w, arr_len (insn_kv3_v1_mms212w) },
+  { insn_kv3_v1_movetq, Instruction_kv3_v1_movetq, arr_len (insn_kv3_v1_movetq) },
+  { insn_kv3_v1_msbfd, Instruction_kv3_v1_msbfd, arr_len (insn_kv3_v1_msbfd) },
+  { insn_kv3_v1_msbfdt, Instruction_kv3_v1_msbfdt, arr_len (insn_kv3_v1_msbfdt) },
+  { insn_kv3_v1_msbfhq, Instruction_kv3_v1_msbfhq, arr_len (insn_kv3_v1_msbfhq) },
+  { insn_kv3_v1_msbfhwq, Instruction_kv3_v1_msbfhwq, arr_len (insn_kv3_v1_msbfhwq) },
+  { insn_kv3_v1_msbfsudt, Instruction_kv3_v1_msbfsudt, arr_len (insn_kv3_v1_msbfsudt) },
+  { insn_kv3_v1_msbfsuhwq, Instruction_kv3_v1_msbfsuhwq, arr_len (insn_kv3_v1_msbfsuhwq) },
+  { insn_kv3_v1_msbfsuwd, Instruction_kv3_v1_msbfsuwd, arr_len (insn_kv3_v1_msbfsuwd) },
+  { insn_kv3_v1_msbfsuwdp, Instruction_kv3_v1_msbfsuwdp, arr_len (insn_kv3_v1_msbfsuwdp) },
+  { insn_kv3_v1_msbfudt, Instruction_kv3_v1_msbfudt, arr_len (insn_kv3_v1_msbfudt) },
+  { insn_kv3_v1_msbfuhwq, Instruction_kv3_v1_msbfuhwq, arr_len (insn_kv3_v1_msbfuhwq) },
+  { insn_kv3_v1_msbfuwd, Instruction_kv3_v1_msbfuwd, arr_len (insn_kv3_v1_msbfuwd) },
+  { insn_kv3_v1_msbfuwdp, Instruction_kv3_v1_msbfuwdp, arr_len (insn_kv3_v1_msbfuwdp) },
+  { insn_kv3_v1_msbfuzdt, Instruction_kv3_v1_msbfuzdt, arr_len (insn_kv3_v1_msbfuzdt) },
+  { insn_kv3_v1_msbfw, Instruction_kv3_v1_msbfw, arr_len (insn_kv3_v1_msbfw) },
+  { insn_kv3_v1_msbfwd, Instruction_kv3_v1_msbfwd, arr_len (insn_kv3_v1_msbfwd) },
+  { insn_kv3_v1_msbfwdp, Instruction_kv3_v1_msbfwdp, arr_len (insn_kv3_v1_msbfwdp) },
+  { insn_kv3_v1_msbfwp, Instruction_kv3_v1_msbfwp, arr_len (insn_kv3_v1_msbfwp) },
+  { insn_kv3_v1_muld, Instruction_kv3_v1_muld, arr_len (insn_kv3_v1_muld) },
+  { insn_kv3_v1_muldt, Instruction_kv3_v1_muldt, arr_len (insn_kv3_v1_muldt) },
+  { insn_kv3_v1_mulhq, Instruction_kv3_v1_mulhq, arr_len (insn_kv3_v1_mulhq) },
+  { insn_kv3_v1_mulhwq, Instruction_kv3_v1_mulhwq, arr_len (insn_kv3_v1_mulhwq) },
+  { insn_kv3_v1_mulsudt, Instruction_kv3_v1_mulsudt, arr_len (insn_kv3_v1_mulsudt) },
+  { insn_kv3_v1_mulsuhwq, Instruction_kv3_v1_mulsuhwq, arr_len (insn_kv3_v1_mulsuhwq) },
+  { insn_kv3_v1_mulsuwd, Instruction_kv3_v1_mulsuwd, arr_len (insn_kv3_v1_mulsuwd) },
+  { insn_kv3_v1_mulsuwdp, Instruction_kv3_v1_mulsuwdp, arr_len (insn_kv3_v1_mulsuwdp) },
+  { insn_kv3_v1_muludt, Instruction_kv3_v1_muludt, arr_len (insn_kv3_v1_muludt) },
+  { insn_kv3_v1_muluhwq, Instruction_kv3_v1_muluhwq, arr_len (insn_kv3_v1_muluhwq) },
+  { insn_kv3_v1_muluwd, Instruction_kv3_v1_muluwd, arr_len (insn_kv3_v1_muluwd) },
+  { insn_kv3_v1_muluwdp, Instruction_kv3_v1_muluwdp, arr_len (insn_kv3_v1_muluwdp) },
+  { insn_kv3_v1_mulw, Instruction_kv3_v1_mulw, arr_len (insn_kv3_v1_mulw) },
+  { insn_kv3_v1_mulwc, Instruction_kv3_v1_mulwc, arr_len (insn_kv3_v1_mulwc) },
+  { insn_kv3_v1_mulwc_c, Instruction_kv3_v1_mulwc_c, arr_len (insn_kv3_v1_mulwc_c) },
+  { insn_kv3_v1_mulwd, Instruction_kv3_v1_mulwd, arr_len (insn_kv3_v1_mulwd) },
+  { insn_kv3_v1_mulwdc, Instruction_kv3_v1_mulwdc, arr_len (insn_kv3_v1_mulwdc) },
+  { insn_kv3_v1_mulwdc_c, Instruction_kv3_v1_mulwdc_c, arr_len (insn_kv3_v1_mulwdc_c) },
+  { insn_kv3_v1_mulwdp, Instruction_kv3_v1_mulwdp, arr_len (insn_kv3_v1_mulwdp) },
+  { insn_kv3_v1_mulwp, Instruction_kv3_v1_mulwp, arr_len (insn_kv3_v1_mulwp) },
+  { insn_kv3_v1_mulwq, Instruction_kv3_v1_mulwq, arr_len (insn_kv3_v1_mulwq) },
+  { insn_kv3_v1_nandd, Instruction_kv3_v1_nandd, arr_len (insn_kv3_v1_nandd) },
+  { insn_kv3_v1_nandd_abase, Instruction_kv3_v1_nandd_abase, arr_len (insn_kv3_v1_nandd_abase) },
+  { insn_kv3_v1_nandw, Instruction_kv3_v1_nandw, arr_len (insn_kv3_v1_nandw) },
+  { insn_kv3_v1_negd, Instruction_kv3_v1_negd, arr_len (insn_kv3_v1_negd) },
+  { insn_kv3_v1_neghq, Instruction_kv3_v1_neghq, arr_len (insn_kv3_v1_neghq) },
+  { insn_kv3_v1_negw, Instruction_kv3_v1_negw, arr_len (insn_kv3_v1_negw) },
+  { insn_kv3_v1_negwp, Instruction_kv3_v1_negwp, arr_len (insn_kv3_v1_negwp) },
+  { insn_kv3_v1_nop, Instruction_kv3_v1_nop, arr_len (insn_kv3_v1_nop) },
+  { insn_kv3_v1_nord, Instruction_kv3_v1_nord, arr_len (insn_kv3_v1_nord) },
+  { insn_kv3_v1_nord_abase, Instruction_kv3_v1_nord_abase, arr_len (insn_kv3_v1_nord_abase) },
+  { insn_kv3_v1_norw, Instruction_kv3_v1_norw, arr_len (insn_kv3_v1_norw) },
+  { insn_kv3_v1_notd, Instruction_kv3_v1_notd, arr_len (insn_kv3_v1_notd) },
+  { insn_kv3_v1_notw, Instruction_kv3_v1_notw, arr_len (insn_kv3_v1_notw) },
+  { insn_kv3_v1_nxord, Instruction_kv3_v1_nxord, arr_len (insn_kv3_v1_nxord) },
+  { insn_kv3_v1_nxord_abase, Instruction_kv3_v1_nxord_abase, arr_len (insn_kv3_v1_nxord_abase) },
+  { insn_kv3_v1_nxorw, Instruction_kv3_v1_nxorw, arr_len (insn_kv3_v1_nxorw) },
+  { insn_kv3_v1_ord, Instruction_kv3_v1_ord, arr_len (insn_kv3_v1_ord) },
+  { insn_kv3_v1_ord_abase, Instruction_kv3_v1_ord_abase, arr_len (insn_kv3_v1_ord_abase) },
+  { insn_kv3_v1_ornd, Instruction_kv3_v1_ornd, arr_len (insn_kv3_v1_ornd) },
+  { insn_kv3_v1_ornd_abase, Instruction_kv3_v1_ornd_abase, arr_len (insn_kv3_v1_ornd_abase) },
+  { insn_kv3_v1_ornw, Instruction_kv3_v1_ornw, arr_len (insn_kv3_v1_ornw) },
+  { insn_kv3_v1_orw, Instruction_kv3_v1_orw, arr_len (insn_kv3_v1_orw) },
+  { insn_kv3_v1_pcrel, Instruction_kv3_v1_pcrel, arr_len (insn_kv3_v1_pcrel) },
+  { insn_kv3_v1_ret, Instruction_kv3_v1_ret, arr_len (insn_kv3_v1_ret) },
+  { insn_kv3_v1_rfe, Instruction_kv3_v1_rfe, arr_len (insn_kv3_v1_rfe) },
+  { insn_kv3_v1_rolw, Instruction_kv3_v1_rolw, arr_len (insn_kv3_v1_rolw) },
+  { insn_kv3_v1_rolwps, Instruction_kv3_v1_rolwps, arr_len (insn_kv3_v1_rolwps) },
+  { insn_kv3_v1_rorw, Instruction_kv3_v1_rorw, arr_len (insn_kv3_v1_rorw) },
+  { insn_kv3_v1_rorwps, Instruction_kv3_v1_rorwps, arr_len (insn_kv3_v1_rorwps) },
+  { insn_kv3_v1_rswap, Instruction_kv3_v1_rswap, arr_len (insn_kv3_v1_rswap) },
+  { insn_kv3_v1_satd, Instruction_kv3_v1_satd, arr_len (insn_kv3_v1_satd) },
+  { insn_kv3_v1_satdh, Instruction_kv3_v1_satdh, arr_len (insn_kv3_v1_satdh) },
+  { insn_kv3_v1_satdw, Instruction_kv3_v1_satdw, arr_len (insn_kv3_v1_satdw) },
+  { insn_kv3_v1_sb, Instruction_kv3_v1_sb, arr_len (insn_kv3_v1_sb) },
+  { insn_kv3_v1_sbfcd, Instruction_kv3_v1_sbfcd, arr_len (insn_kv3_v1_sbfcd) },
+  { insn_kv3_v1_sbfcd_i, Instruction_kv3_v1_sbfcd_i, arr_len (insn_kv3_v1_sbfcd_i) },
+  { insn_kv3_v1_sbfd, Instruction_kv3_v1_sbfd, arr_len (insn_kv3_v1_sbfd) },
+  { insn_kv3_v1_sbfd_abase, Instruction_kv3_v1_sbfd_abase, arr_len (insn_kv3_v1_sbfd_abase) },
+  { insn_kv3_v1_sbfhcp_c, Instruction_kv3_v1_sbfhcp_c, arr_len (insn_kv3_v1_sbfhcp_c) },
+  { insn_kv3_v1_sbfhq, Instruction_kv3_v1_sbfhq, arr_len (insn_kv3_v1_sbfhq) },
+  { insn_kv3_v1_sbfsd, Instruction_kv3_v1_sbfsd, arr_len (insn_kv3_v1_sbfsd) },
+  { insn_kv3_v1_sbfshq, Instruction_kv3_v1_sbfshq, arr_len (insn_kv3_v1_sbfshq) },
+  { insn_kv3_v1_sbfsw, Instruction_kv3_v1_sbfsw, arr_len (insn_kv3_v1_sbfsw) },
+  { insn_kv3_v1_sbfswp, Instruction_kv3_v1_sbfswp, arr_len (insn_kv3_v1_sbfswp) },
+  { insn_kv3_v1_sbfuwd, Instruction_kv3_v1_sbfuwd, arr_len (insn_kv3_v1_sbfuwd) },
+  { insn_kv3_v1_sbfw, Instruction_kv3_v1_sbfw, arr_len (insn_kv3_v1_sbfw) },
+  { insn_kv3_v1_sbfwc_c, Instruction_kv3_v1_sbfwc_c, arr_len (insn_kv3_v1_sbfwc_c) },
+  { insn_kv3_v1_sbfwd, Instruction_kv3_v1_sbfwd, arr_len (insn_kv3_v1_sbfwd) },
+  { insn_kv3_v1_sbfwp, Instruction_kv3_v1_sbfwp, arr_len (insn_kv3_v1_sbfwp) },
+  { insn_kv3_v1_sbfx16d, Instruction_kv3_v1_sbfx16d, arr_len (insn_kv3_v1_sbfx16d) },
+  { insn_kv3_v1_sbfx16hq, Instruction_kv3_v1_sbfx16hq, arr_len (insn_kv3_v1_sbfx16hq) },
+  { insn_kv3_v1_sbfx16uwd, Instruction_kv3_v1_sbfx16uwd, arr_len (insn_kv3_v1_sbfx16uwd) },
+  { insn_kv3_v1_sbfx16w, Instruction_kv3_v1_sbfx16w, arr_len (insn_kv3_v1_sbfx16w) },
+  { insn_kv3_v1_sbfx16wd, Instruction_kv3_v1_sbfx16wd, arr_len (insn_kv3_v1_sbfx16wd) },
+  { insn_kv3_v1_sbfx16wp, Instruction_kv3_v1_sbfx16wp, arr_len (insn_kv3_v1_sbfx16wp) },
+  { insn_kv3_v1_sbfx2d, Instruction_kv3_v1_sbfx2d, arr_len (insn_kv3_v1_sbfx2d) },
+  { insn_kv3_v1_sbfx2hq, Instruction_kv3_v1_sbfx2hq, arr_len (insn_kv3_v1_sbfx2hq) },
+  { insn_kv3_v1_sbfx2uwd, Instruction_kv3_v1_sbfx2uwd, arr_len (insn_kv3_v1_sbfx2uwd) },
+  { insn_kv3_v1_sbfx2w, Instruction_kv3_v1_sbfx2w, arr_len (insn_kv3_v1_sbfx2w) },
+  { insn_kv3_v1_sbfx2wd, Instruction_kv3_v1_sbfx2wd, arr_len (insn_kv3_v1_sbfx2wd) },
+  { insn_kv3_v1_sbfx2wp, Instruction_kv3_v1_sbfx2wp, arr_len (insn_kv3_v1_sbfx2wp) },
+  { insn_kv3_v1_sbfx4d, Instruction_kv3_v1_sbfx4d, arr_len (insn_kv3_v1_sbfx4d) },
+  { insn_kv3_v1_sbfx4hq, Instruction_kv3_v1_sbfx4hq, arr_len (insn_kv3_v1_sbfx4hq) },
+  { insn_kv3_v1_sbfx4uwd, Instruction_kv3_v1_sbfx4uwd, arr_len (insn_kv3_v1_sbfx4uwd) },
+  { insn_kv3_v1_sbfx4w, Instruction_kv3_v1_sbfx4w, arr_len (insn_kv3_v1_sbfx4w) },
+  { insn_kv3_v1_sbfx4wd, Instruction_kv3_v1_sbfx4wd, arr_len (insn_kv3_v1_sbfx4wd) },
+  { insn_kv3_v1_sbfx4wp, Instruction_kv3_v1_sbfx4wp, arr_len (insn_kv3_v1_sbfx4wp) },
+  { insn_kv3_v1_sbfx8d, Instruction_kv3_v1_sbfx8d, arr_len (insn_kv3_v1_sbfx8d) },
+  { insn_kv3_v1_sbfx8hq, Instruction_kv3_v1_sbfx8hq, arr_len (insn_kv3_v1_sbfx8hq) },
+  { insn_kv3_v1_sbfx8uwd, Instruction_kv3_v1_sbfx8uwd, arr_len (insn_kv3_v1_sbfx8uwd) },
+  { insn_kv3_v1_sbfx8w, Instruction_kv3_v1_sbfx8w, arr_len (insn_kv3_v1_sbfx8w) },
+  { insn_kv3_v1_sbfx8wd, Instruction_kv3_v1_sbfx8wd, arr_len (insn_kv3_v1_sbfx8wd) },
+  { insn_kv3_v1_sbfx8wp, Instruction_kv3_v1_sbfx8wp, arr_len (insn_kv3_v1_sbfx8wp) },
+  { insn_kv3_v1_sbmm8, Instruction_kv3_v1_sbmm8, arr_len (insn_kv3_v1_sbmm8) },
+  { insn_kv3_v1_sbmm8_abase, Instruction_kv3_v1_sbmm8_abase, arr_len (insn_kv3_v1_sbmm8_abase) },
+  { insn_kv3_v1_sbmmt8, Instruction_kv3_v1_sbmmt8, arr_len (insn_kv3_v1_sbmmt8) },
+  { insn_kv3_v1_sbmmt8_abase, Instruction_kv3_v1_sbmmt8_abase, arr_len (insn_kv3_v1_sbmmt8_abase) },
+  { insn_kv3_v1_scall, Instruction_kv3_v1_scall, arr_len (insn_kv3_v1_scall) },
+  { insn_kv3_v1_sd, Instruction_kv3_v1_sd, arr_len (insn_kv3_v1_sd) },
+  { insn_kv3_v1_set, Instruction_kv3_v1_set, arr_len (insn_kv3_v1_set) },
+  { insn_kv3_v1_sh, Instruction_kv3_v1_sh, arr_len (insn_kv3_v1_sh) },
+  { insn_kv3_v1_sleep, Instruction_kv3_v1_sleep, arr_len (insn_kv3_v1_sleep) },
+  { insn_kv3_v1_slld, Instruction_kv3_v1_slld, arr_len (insn_kv3_v1_slld) },
+  { insn_kv3_v1_sllhqs, Instruction_kv3_v1_sllhqs, arr_len (insn_kv3_v1_sllhqs) },
+  { insn_kv3_v1_sllw, Instruction_kv3_v1_sllw, arr_len (insn_kv3_v1_sllw) },
+  { insn_kv3_v1_sllwps, Instruction_kv3_v1_sllwps, arr_len (insn_kv3_v1_sllwps) },
+  { insn_kv3_v1_slsd, Instruction_kv3_v1_slsd, arr_len (insn_kv3_v1_slsd) },
+  { insn_kv3_v1_slshqs, Instruction_kv3_v1_slshqs, arr_len (insn_kv3_v1_slshqs) },
+  { insn_kv3_v1_slsw, Instruction_kv3_v1_slsw, arr_len (insn_kv3_v1_slsw) },
+  { insn_kv3_v1_slswps, Instruction_kv3_v1_slswps, arr_len (insn_kv3_v1_slswps) },
+  { insn_kv3_v1_so, Instruction_kv3_v1_so, arr_len (insn_kv3_v1_so) },
+  { insn_kv3_v1_sq, Instruction_kv3_v1_sq, arr_len (insn_kv3_v1_sq) },
+  { insn_kv3_v1_srad, Instruction_kv3_v1_srad, arr_len (insn_kv3_v1_srad) },
+  { insn_kv3_v1_srahqs, Instruction_kv3_v1_srahqs, arr_len (insn_kv3_v1_srahqs) },
+  { insn_kv3_v1_sraw, Instruction_kv3_v1_sraw, arr_len (insn_kv3_v1_sraw) },
+  { insn_kv3_v1_srawps, Instruction_kv3_v1_srawps, arr_len (insn_kv3_v1_srawps) },
+  { insn_kv3_v1_srld, Instruction_kv3_v1_srld, arr_len (insn_kv3_v1_srld) },
+  { insn_kv3_v1_srlhqs, Instruction_kv3_v1_srlhqs, arr_len (insn_kv3_v1_srlhqs) },
+  { insn_kv3_v1_srlw, Instruction_kv3_v1_srlw, arr_len (insn_kv3_v1_srlw) },
+  { insn_kv3_v1_srlwps, Instruction_kv3_v1_srlwps, arr_len (insn_kv3_v1_srlwps) },
+  { insn_kv3_v1_srsd, Instruction_kv3_v1_srsd, arr_len (insn_kv3_v1_srsd) },
+  { insn_kv3_v1_srshqs, Instruction_kv3_v1_srshqs, arr_len (insn_kv3_v1_srshqs) },
+  { insn_kv3_v1_srsw, Instruction_kv3_v1_srsw, arr_len (insn_kv3_v1_srsw) },
+  { insn_kv3_v1_srswps, Instruction_kv3_v1_srswps, arr_len (insn_kv3_v1_srswps) },
+  { insn_kv3_v1_stop, Instruction_kv3_v1_stop, arr_len (insn_kv3_v1_stop) },
+  { insn_kv3_v1_stsud, Instruction_kv3_v1_stsud, arr_len (insn_kv3_v1_stsud) },
+  { insn_kv3_v1_stsuw, Instruction_kv3_v1_stsuw, arr_len (insn_kv3_v1_stsuw) },
+  { insn_kv3_v1_sw, Instruction_kv3_v1_sw, arr_len (insn_kv3_v1_sw) },
+  { insn_kv3_v1_sxbd, Instruction_kv3_v1_sxbd, arr_len (insn_kv3_v1_sxbd) },
+  { insn_kv3_v1_sxhd, Instruction_kv3_v1_sxhd, arr_len (insn_kv3_v1_sxhd) },
+  { insn_kv3_v1_sxlbhq, Instruction_kv3_v1_sxlbhq, arr_len (insn_kv3_v1_sxlbhq) },
+  { insn_kv3_v1_sxlhwp, Instruction_kv3_v1_sxlhwp, arr_len (insn_kv3_v1_sxlhwp) },
+  { insn_kv3_v1_sxmbhq, Instruction_kv3_v1_sxmbhq, arr_len (insn_kv3_v1_sxmbhq) },
+  { insn_kv3_v1_sxmhwp, Instruction_kv3_v1_sxmhwp, arr_len (insn_kv3_v1_sxmhwp) },
+  { insn_kv3_v1_sxwd, Instruction_kv3_v1_sxwd, arr_len (insn_kv3_v1_sxwd) },
+  { insn_kv3_v1_syncgroup, Instruction_kv3_v1_syncgroup, arr_len (insn_kv3_v1_syncgroup) },
+  { insn_kv3_v1_tlbdinval, Instruction_kv3_v1_tlbdinval, arr_len (insn_kv3_v1_tlbdinval) },
+  { insn_kv3_v1_tlbiinval, Instruction_kv3_v1_tlbiinval, arr_len (insn_kv3_v1_tlbiinval) },
+  { insn_kv3_v1_tlbprobe, Instruction_kv3_v1_tlbprobe, arr_len (insn_kv3_v1_tlbprobe) },
+  { insn_kv3_v1_tlbread, Instruction_kv3_v1_tlbread, arr_len (insn_kv3_v1_tlbread) },
+  { insn_kv3_v1_tlbwrite, Instruction_kv3_v1_tlbwrite, arr_len (insn_kv3_v1_tlbwrite) },
+  { insn_kv3_v1_waitit, Instruction_kv3_v1_waitit, arr_len (insn_kv3_v1_waitit) },
+  { insn_kv3_v1_wfxl, Instruction_kv3_v1_wfxl, arr_len (insn_kv3_v1_wfxl) },
+  { insn_kv3_v1_wfxm, Instruction_kv3_v1_wfxm, arr_len (insn_kv3_v1_wfxm) },
+  { insn_kv3_v1_xcopyo, Instruction_kv3_v1_xcopyo, arr_len (insn_kv3_v1_xcopyo) },
+  { insn_kv3_v1_xlo, Instruction_kv3_v1_xlo, arr_len (insn_kv3_v1_xlo) },
+  { insn_kv3_v1_xmma484bw, Instruction_kv3_v1_xmma484bw, arr_len (insn_kv3_v1_xmma484bw) },
+  { insn_kv3_v1_xmma484subw, Instruction_kv3_v1_xmma484subw, arr_len (insn_kv3_v1_xmma484subw) },
+  { insn_kv3_v1_xmma484ubw, Instruction_kv3_v1_xmma484ubw, arr_len (insn_kv3_v1_xmma484ubw) },
+  { insn_kv3_v1_xmma484usbw, Instruction_kv3_v1_xmma484usbw, arr_len (insn_kv3_v1_xmma484usbw) },
+  { insn_kv3_v1_xmovefo, Instruction_kv3_v1_xmovefo, arr_len (insn_kv3_v1_xmovefo) },
+  { insn_kv3_v1_xmovetq, Instruction_kv3_v1_xmovetq, arr_len (insn_kv3_v1_xmovetq) },
+  { insn_kv3_v1_xmt44d, Instruction_kv3_v1_xmt44d, arr_len (insn_kv3_v1_xmt44d) },
+  { insn_kv3_v1_xord, Instruction_kv3_v1_xord, arr_len (insn_kv3_v1_xord) },
+  { insn_kv3_v1_xord_abase, Instruction_kv3_v1_xord_abase, arr_len (insn_kv3_v1_xord_abase) },
+  { insn_kv3_v1_xorw, Instruction_kv3_v1_xorw, arr_len (insn_kv3_v1_xorw) },
+  { insn_kv3_v1_xso, Instruction_kv3_v1_xso, arr_len (insn_kv3_v1_xso) },
+  { insn_kv3_v1_zxbd, Instruction_kv3_v1_zxbd, arr_len (insn_kv3_v1_zxbd) },
+  { insn_kv3_v1_zxhd, Instruction_kv3_v1_zxhd, arr_len (insn_kv3_v1_zxhd) },
+  { insn_kv3_v1_zxwd, Instruction_kv3_v1_zxwd, arr_len (insn_kv3_v1_zxwd) },
+  { NULL, -1, -1 }
+};
+
+static struct token_class sep_classes_kv3_v1[] = {
+  { sep_kv3_v1_comma, Separator_kv3_v1_comma, arr_len (sep_kv3_v1_comma) },
+  { sep_kv3_v1_equal, Separator_kv3_v1_equal, arr_len (sep_kv3_v1_equal) },
+  { sep_kv3_v1_qmark, Separator_kv3_v1_qmark, arr_len (sep_kv3_v1_qmark) },
+  { sep_kv3_v1_rsbracket, Separator_kv3_v1_rsbracket, arr_len (sep_kv3_v1_rsbracket) },
+  { sep_kv3_v1_lsbracket, Separator_kv3_v1_lsbracket, arr_len (sep_kv3_v1_lsbracket) },
+  { NULL, -1, -1 }
+};
+
+
+\f
+struct token_classes token_classes_kv3_v1 = {
+  .reg_classes  = reg_classes_kv3_v1,
+  .mod_classes  = mod_classes_kv3_v1,
+  .imm_classes  = imm_classes_kv3_v1,
+  .insn_classes = insn_classes_kv3_v1,
+  .sep_classes  = sep_classes_kv3_v1,
+};
+
+\f
+static struct steering_rule rule_kv3_v1_0000[] = {
+  { .steering =   80, .jump_target =  787, .stack_it = 1215 },
+  { .steering =   81, .jump_target = 1045, .stack_it =   -1 },
+  { .steering =   82, .jump_target =   82, .stack_it = 1217 },
+  { .steering =   83, .jump_target =  788, .stack_it = 1218 },
+  { .steering =   84, .jump_target =   84, .stack_it = 1217 },
+  { .steering =   85, .jump_target =  789, .stack_it =   -1 },
+  { .steering =   86, .jump_target =  790, .stack_it =   -1 },
+  { .steering =   87, .jump_target =  791, .stack_it =   -1 },
+  { .steering =   88, .jump_target =  792, .stack_it =   -1 },
+  { .steering =   89, .jump_target =   89, .stack_it = 1207 },
+  { .steering =   90, .jump_target =   90, .stack_it = 1207 },
+  { .steering =   91, .jump_target =  793, .stack_it = 1219 },
+  { .steering =   92, .jump_target =  794, .stack_it = 1219 },
+  { .steering =   93, .jump_target =  795, .stack_it = 1215 },
+  { .steering =   94, .jump_target = 1046, .stack_it =   -1 },
+  { .steering =   95, .jump_target =   95, .stack_it = 1217 },
+  { .steering =   96, .jump_target =   96, .stack_it = 1217 },
+  { .steering =   97, .jump_target =  796, .stack_it = 1216 },
+  { .steering =   98, .jump_target =   98, .stack_it = 1217 },
+  { .steering =   99, .jump_target =  797, .stack_it = 1219 },
+  { .steering =  100, .jump_target =  100, .stack_it = 1217 },
+  { .steering =  101, .jump_target =  101, .stack_it = 1217 },
+  { .steering =  102, .jump_target =  798, .stack_it = 1218 },
+  { .steering =  103, .jump_target =  103, .stack_it = 1217 },
+  { .steering =  104, .jump_target =  104, .stack_it = 1217 },
+  { .steering =  105, .jump_target =  105, .stack_it = 1217 },
+  { .steering =  106, .jump_target =  106, .stack_it = 1217 },
+  { .steering =  107, .jump_target =  107, .stack_it = 1217 },
+  { .steering =  108, .jump_target =  799, .stack_it = 1219 },
+  { .steering =  109, .jump_target =  800, .stack_it = 1219 },
+  { .steering =  110, .jump_target =  801, .stack_it = 1219 },
+  { .steering =  111, .jump_target =  111, .stack_it = 1217 },
+  { .steering =  112, .jump_target =  112, .stack_it = 1217 },
+  { .steering =  113, .jump_target =  113, .stack_it = 1217 },
+  { .steering =  114, .jump_target =  802, .stack_it = 1219 },
+  { .steering =  115, .jump_target =  803, .stack_it = 1219 },
+  { .steering =  116, .jump_target =  804, .stack_it = 1219 },
+  { .steering =  117, .jump_target =  117, .stack_it = 1217 },
+  { .steering =  118, .jump_target =  118, .stack_it = 1217 },
+  { .steering =  119, .jump_target =  119, .stack_it = 1217 },
+  { .steering =  120, .jump_target =  805, .stack_it = 1219 },
+  { .steering =  121, .jump_target =  806, .stack_it = 1219 },
+  { .steering =  122, .jump_target =  807, .stack_it = 1219 },
+  { .steering =  123, .jump_target =  123, .stack_it = 1217 },
+  { .steering =  124, .jump_target =  124, .stack_it = 1217 },
+  { .steering =  125, .jump_target =  125, .stack_it = 1217 },
+  { .steering =  126, .jump_target =  808, .stack_it = 1219 },
+  { .steering =  127, .jump_target =  809, .stack_it = 1219 },
+  { .steering =  128, .jump_target =  810, .stack_it = 1219 },
+  { .steering =  129, .jump_target =  129, .stack_it = 1217 },
+  { .steering =  130, .jump_target =  130, .stack_it = 1205 },
+  { .steering =  131, .jump_target =  131, .stack_it = 1205 },
+  { .steering =  132, .jump_target =  132, .stack_it = 1213 },
+  { .steering =  133, .jump_target =  133, .stack_it = 1213 },
+  { .steering =  134, .jump_target =  709, .stack_it = 1227 },
+  { .steering =  135, .jump_target =  710, .stack_it = 1227 },
+  { .steering =  136, .jump_target =  811, .stack_it = 1215 },
+  { .steering =  137, .jump_target = 1047, .stack_it =   -1 },
+  { .steering =  138, .jump_target =  812, .stack_it = 1215 },
+  { .steering =  139, .jump_target = 1048, .stack_it =   -1 },
+  { .steering =  140, .jump_target =  813, .stack_it = 1218 },
+  { .steering =  141, .jump_target =  814, .stack_it = 1218 },
+  { .steering =  142, .jump_target =  142, .stack_it = 1217 },
+  { .steering =  143, .jump_target =  143, .stack_it = 1217 },
+  { .steering =  144, .jump_target =  144, .stack_it = 1217 },
+  { .steering =  145, .jump_target =  815, .stack_it = 1219 },
+  { .steering =  146, .jump_target =  146, .stack_it = 1217 },
+  { .steering =  147, .jump_target =  816, .stack_it = 1219 },
+  { .steering =  148, .jump_target =  148, .stack_it = 1217 },
+  { .steering =  149, .jump_target =  149, .stack_it = 1217 },
+  { .steering =  150, .jump_target =  817, .stack_it = 1219 },
+  { .steering =  151, .jump_target =  151, .stack_it = 1217 },
+  { .steering =  152, .jump_target =  818, .stack_it = 1219 },
+  { .steering =  153, .jump_target =  153, .stack_it = 1217 },
+  { .steering =  154, .jump_target =  154, .stack_it =   -1 },
+  { .steering =  155, .jump_target =  155, .stack_it =   -1 },
+  { .steering =  156, .jump_target =  634, .stack_it =   -1 },
+  { .steering =  157, .jump_target =  819, .stack_it =   -1 },
+  { .steering =  158, .jump_target =  820, .stack_it =   -1 },
+  { .steering =  159, .jump_target =  821, .stack_it =   -1 },
+  { .steering =  160, .jump_target =  822, .stack_it =   -1 },
+  { .steering =  161, .jump_target = 1049, .stack_it =   -1 },
+  { .steering =  162, .jump_target =  824, .stack_it =   -1 },
+  { .steering =  163, .jump_target =  825, .stack_it =   -1 },
+  { .steering =  164, .jump_target =  826, .stack_it =   -1 },
+  { .steering =  165, .jump_target =  827, .stack_it =   -1 },
+  { .steering =  166, .jump_target =  828, .stack_it =   -1 },
+  { .steering =  167, .jump_target =  829, .stack_it =   -1 },
+  { .steering =  168, .jump_target = 1050, .stack_it = 1216 },
+  { .steering =  169, .jump_target = 1051, .stack_it =   -1 },
+  { .steering =  170, .jump_target = 1052, .stack_it =   -1 },
+  { .steering =  171, .jump_target =  832, .stack_it = 1216 },
+  { .steering =  172, .jump_target = 1053, .stack_it =   -1 },
+  { .steering =  173, .jump_target = 1054, .stack_it =   -1 },
+  { .steering =  174, .jump_target = 1055, .stack_it =   -1 },
+  { .steering =  175, .jump_target = 1056, .stack_it =   -1 },
+  { .steering =  176, .jump_target = 1057, .stack_it = 1216 },
+  { .steering =  177, .jump_target =  639, .stack_it = 1217 },
+  { .steering =  178, .jump_target =  640, .stack_it = 1217 },
+  { .steering =  179, .jump_target = 1058, .stack_it = 1219 },
+  { .steering =  180, .jump_target = 1059, .stack_it = 1219 },
+  { .steering =  181, .jump_target = 1060, .stack_it = 1219 },
+  { .steering =  182, .jump_target = 1061, .stack_it =   -1 },
+  { .steering =  183, .jump_target = 1062, .stack_it =   -1 },
+  { .steering =  184, .jump_target = 1063, .stack_it =   -1 },
+  { .steering =  185, .jump_target = 1064, .stack_it =   -1 },
+  { .steering =  186, .jump_target = 1065, .stack_it =   -1 },
+  { .steering =  187, .jump_target = 1066, .stack_it =   -1 },
+  { .steering =  188, .jump_target =  841, .stack_it =   -1 },
+  { .steering =  189, .jump_target =  842, .stack_it =   -1 },
+  { .steering =  190, .jump_target = 1067, .stack_it =   -1 },
+  { .steering =  191, .jump_target =  843, .stack_it =   -1 },
+  { .steering =  192, .jump_target =  844, .stack_it = 1219 },
+  { .steering =  193, .jump_target =  845, .stack_it = 1219 },
+  { .steering =  194, .jump_target =  846, .stack_it = 1219 },
+  { .steering =  195, .jump_target =  847, .stack_it = 1219 },
+  { .steering =  196, .jump_target =  848, .stack_it =   -1 },
+  { .steering =  197, .jump_target =  849, .stack_it =   -1 },
+  { .steering =  198, .jump_target =  850, .stack_it =   -1 },
+  { .steering =  199, .jump_target =  199, .stack_it =   -1 },
+  { .steering =  200, .jump_target =  200, .stack_it = 1214 },
+  { .steering =  201, .jump_target =  851, .stack_it = 1216 },
+  { .steering =  202, .jump_target = 1068, .stack_it =   -1 },
+  { .steering =  203, .jump_target =  853, .stack_it = 1216 },
+  { .steering =  204, .jump_target = 1069, .stack_it =   -1 },
+  { .steering =  205, .jump_target =  854, .stack_it = 1216 },
+  { .steering =  206, .jump_target =  855, .stack_it = 1216 },
+  { .steering =  207, .jump_target = 1070, .stack_it =   -1 },
+  { .steering =  208, .jump_target = 1071, .stack_it =   -1 },
+  { .steering =  209, .jump_target =  209, .stack_it = 1214 },
+  { .steering =  210, .jump_target =  210, .stack_it = 1214 },
+  { .steering =  211, .jump_target =  211, .stack_it =   -1 },
+  { .steering =  212, .jump_target = 1072, .stack_it =   -1 },
+  { .steering =  213, .jump_target = 1073, .stack_it =   -1 },
+  { .steering =  214, .jump_target =  856, .stack_it =   -1 },
+  { .steering =  215, .jump_target =  857, .stack_it =   -1 },
+  { .steering =  216, .jump_target =  858, .stack_it =   -1 },
+  { .steering =  217, .jump_target =  859, .stack_it =   -1 },
+  { .steering =  218, .jump_target =  218, .stack_it = 1223 },
+  { .steering =  219, .jump_target = 1074, .stack_it =   -1 },
+  { .steering =  220, .jump_target = 1075, .stack_it =   -1 },
+  { .steering =  221, .jump_target = 1076, .stack_it =   -1 },
+  { .steering =  222, .jump_target =  222, .stack_it = 1223 },
+  { .steering =  223, .jump_target =  223, .stack_it = 1223 },
+  { .steering =  224, .jump_target = 1077, .stack_it =   -1 },
+  { .steering =  225, .jump_target =  225, .stack_it = 1223 },
+  { .steering =  226, .jump_target = 1078, .stack_it =   -1 },
+  { .steering =  227, .jump_target = 1079, .stack_it =   -1 },
+  { .steering =  228, .jump_target =  228, .stack_it = 1223 },
+  { .steering =  229, .jump_target = 1080, .stack_it =   -1 },
+  { .steering =  230, .jump_target =  862, .stack_it =   -1 },
+  { .steering =  231, .jump_target =  863, .stack_it =   -1 },
+  { .steering =  232, .jump_target =  864, .stack_it =   -1 },
+  { .steering =  233, .jump_target = 1081, .stack_it = 1219 },
+  { .steering =  234, .jump_target =  648, .stack_it = 1217 },
+  { .steering =  235, .jump_target =  649, .stack_it = 1217 },
+  { .steering =  236, .jump_target = 1082, .stack_it = 1219 },
+  { .steering =  237, .jump_target =  237, .stack_it = 1223 },
+  { .steering =  238, .jump_target =  238, .stack_it = 1223 },
+  { .steering =  239, .jump_target = 1083, .stack_it =   -1 },
+  { .steering =  240, .jump_target = 1084, .stack_it =   -1 },
+  { .steering =  241, .jump_target =  241, .stack_it =   -1 },
+  { .steering =  242, .jump_target =  242, .stack_it = 1223 },
+  { .steering =  243, .jump_target =  243, .stack_it = 1223 },
+  { .steering =  244, .jump_target =  244, .stack_it = 1223 },
+  { .steering =  245, .jump_target =  245, .stack_it = 1225 },
+  { .steering =  246, .jump_target =  246, .stack_it = 1223 },
+  { .steering =  247, .jump_target =  247, .stack_it = 1223 },
+  { .steering =  248, .jump_target =  248, .stack_it = 1225 },
+  { .steering =  249, .jump_target =  249, .stack_it = 1223 },
+  { .steering =  250, .jump_target =  250, .stack_it = 1223 },
+  { .steering =  251, .jump_target =  251, .stack_it = 1223 },
+  { .steering =  252, .jump_target =  252, .stack_it = 1223 },
+  { .steering =  253, .jump_target =  253, .stack_it = 1225 },
+  { .steering =  254, .jump_target =  254, .stack_it = 1223 },
+  { .steering =  255, .jump_target =  255, .stack_it = 1223 },
+  { .steering =  256, .jump_target =  256, .stack_it = 1225 },
+  { .steering =  257, .jump_target =  257, .stack_it = 1223 },
+  { .steering =  258, .jump_target = 1085, .stack_it =   -1 },
+  { .steering =  259, .jump_target = 1086, .stack_it =   -1 },
+  { .steering =  260, .jump_target = 1087, .stack_it =   -1 },
+  { .steering =  261, .jump_target = 1088, .stack_it =   -1 },
+  { .steering =  262, .jump_target = 1089, .stack_it =   -1 },
+  { .steering =  263, .jump_target = 1090, .stack_it =   -1 },
+  { .steering =  264, .jump_target = 1091, .stack_it =   -1 },
+  { .steering =  265, .jump_target = 1092, .stack_it =   -1 },
+  { .steering =  266, .jump_target = 1093, .stack_it =   -1 },
+  { .steering =  267, .jump_target = 1094, .stack_it =   -1 },
+  { .steering =  268, .jump_target = 1095, .stack_it =   -1 },
+  { .steering =  269, .jump_target = 1096, .stack_it =   -1 },
+  { .steering =  270, .jump_target = 1097, .stack_it =   -1 },
+  { .steering =  271, .jump_target = 1098, .stack_it =   -1 },
+  { .steering =  272, .jump_target = 1099, .stack_it =   -1 },
+  { .steering =  273, .jump_target = 1100, .stack_it =   -1 },
+  { .steering =  274, .jump_target = 1101, .stack_it =   -1 },
+  { .steering =  275, .jump_target = 1102, .stack_it =   -1 },
+  { .steering =  276, .jump_target = 1103, .stack_it =   -1 },
+  { .steering =  277, .jump_target = 1104, .stack_it =   -1 },
+  { .steering =  278, .jump_target = 1105, .stack_it =   -1 },
+  { .steering =  279, .jump_target = 1106, .stack_it =   -1 },
+  { .steering =  280, .jump_target = 1107, .stack_it =   -1 },
+  { .steering =  281, .jump_target = 1108, .stack_it =   -1 },
+  { .steering =  282, .jump_target = 1109, .stack_it =   -1 },
+  { .steering =  283, .jump_target = 1110, .stack_it =   -1 },
+  { .steering =  284, .jump_target = 1111, .stack_it =   -1 },
+  { .steering =  285, .jump_target =  285, .stack_it = 1223 },
+  { .steering =  286, .jump_target =  286, .stack_it = 1223 },
+  { .steering =  287, .jump_target =  287, .stack_it = 1223 },
+  { .steering =  288, .jump_target =  288, .stack_it = 1225 },
+  { .steering =  289, .jump_target =  289, .stack_it = 1223 },
+  { .steering =  290, .jump_target =  290, .stack_it = 1223 },
+  { .steering =  291, .jump_target =  291, .stack_it = 1223 },
+  { .steering =  292, .jump_target =  292, .stack_it = 1223 },
+  { .steering =  293, .jump_target =  293, .stack_it = 1225 },
+  { .steering =  294, .jump_target =  294, .stack_it = 1225 },
+  { .steering =  295, .jump_target =  295, .stack_it = 1225 },
+  { .steering =  296, .jump_target =  296, .stack_it = 1223 },
+  { .steering =  297, .jump_target = 1112, .stack_it =   -1 },
+  { .steering =  298, .jump_target = 1113, .stack_it =   -1 },
+  { .steering =  299, .jump_target = 1114, .stack_it =   -1 },
+  { .steering =  300, .jump_target = 1115, .stack_it =   -1 },
+  { .steering =  301, .jump_target = 1116, .stack_it =   -1 },
+  { .steering =  302, .jump_target = 1117, .stack_it =   -1 },
+  { .steering =  303, .jump_target =  876, .stack_it =   -1 },
+  { .steering =  304, .jump_target =  877, .stack_it =   -1 },
+  { .steering =  305, .jump_target =  878, .stack_it =   -1 },
+  { .steering =  306, .jump_target =  879, .stack_it =   -1 },
+  { .steering =  307, .jump_target = 1118, .stack_it =   -1 },
+  { .steering =  308, .jump_target = 1119, .stack_it =   -1 },
+  { .steering =  309, .jump_target =  309, .stack_it = 1223 },
+  { .steering =  310, .jump_target = 1120, .stack_it =   -1 },
+  { .steering =  311, .jump_target = 1121, .stack_it =   -1 },
+  { .steering =  312, .jump_target = 1122, .stack_it =   -1 },
+  { .steering =  313, .jump_target =  313, .stack_it = 1223 },
+  { .steering =  314, .jump_target =  314, .stack_it = 1223 },
+  { .steering =  315, .jump_target = 1123, .stack_it =   -1 },
+  { .steering =  316, .jump_target =  316, .stack_it = 1223 },
+  { .steering =  317, .jump_target = 1124, .stack_it =   -1 },
+  { .steering =  318, .jump_target = 1125, .stack_it =   -1 },
+  { .steering =  319, .jump_target =  319, .stack_it = 1223 },
+  { .steering =  320, .jump_target = 1126, .stack_it =   -1 },
+  { .steering =  321, .jump_target = 1127, .stack_it =   -1 },
+  { .steering =  322, .jump_target =  881, .stack_it =   -1 },
+  { .steering =  323, .jump_target =  882, .stack_it =   -1 },
+  { .steering =  324, .jump_target =  883, .stack_it =   -1 },
+  { .steering =  325, .jump_target =  884, .stack_it =   -1 },
+  { .steering =  326, .jump_target =  885, .stack_it =   -1 },
+  { .steering =  327, .jump_target =  886, .stack_it =   -1 },
+  { .steering =  328, .jump_target =  887, .stack_it =   -1 },
+  { .steering =  329, .jump_target =  888, .stack_it =   -1 },
+  { .steering =  330, .jump_target =  889, .stack_it =   -1 },
+  { .steering =  331, .jump_target =  890, .stack_it =   -1 },
+  { .steering =  332, .jump_target =  891, .stack_it =   -1 },
+  { .steering =  333, .jump_target =  892, .stack_it =   -1 },
+  { .steering =  334, .jump_target =  893, .stack_it =   -1 },
+  { .steering =  335, .jump_target =  894, .stack_it =   -1 },
+  { .steering =  336, .jump_target =  895, .stack_it =   -1 },
+  { .steering =  337, .jump_target =  739, .stack_it = 1194 },
+  { .steering =  338, .jump_target =  657, .stack_it =   -1 },
+  { .steering =  339, .jump_target =  339, .stack_it =   -1 },
+  { .steering =  340, .jump_target =  340, .stack_it = 1214 },
+  { .steering =  341, .jump_target =  658, .stack_it =   -1 },
+  { .steering =  342, .jump_target =  659, .stack_it =   -1 },
+  { .steering =  343, .jump_target =  660, .stack_it =   -1 },
+  { .steering =  344, .jump_target = 1128, .stack_it =   -1 },
+  { .steering =  345, .jump_target =  345, .stack_it = 1217 },
+  { .steering =  346, .jump_target =  346, .stack_it = 1217 },
+  { .steering =  347, .jump_target =  896, .stack_it = 1219 },
+  { .steering =  348, .jump_target =  348, .stack_it = 1217 },
+  { .steering =  349, .jump_target =  661, .stack_it = 1197 },
+  { .steering =  350, .jump_target =  662, .stack_it = 1197 },
+  { .steering =  351, .jump_target =  663, .stack_it = 1197 },
+  { .steering =  352, .jump_target =  664, .stack_it = 1197 },
+  { .steering =  353, .jump_target =  665, .stack_it = 1197 },
+  { .steering =  354, .jump_target =  354, .stack_it = 1217 },
+  { .steering =  355, .jump_target =  355, .stack_it = 1217 },
+  { .steering =  356, .jump_target =  897, .stack_it = 1219 },
+  { .steering =  357, .jump_target =  357, .stack_it = 1217 },
+  { .steering =  358, .jump_target =  358, .stack_it = 1217 },
+  { .steering =  359, .jump_target =  359, .stack_it = 1217 },
+  { .steering =  360, .jump_target =  898, .stack_it = 1219 },
+  { .steering =  361, .jump_target =  361, .stack_it = 1217 },
+  { .steering =  362, .jump_target =  666, .stack_it = 1201 },
+  { .steering =  363, .jump_target =  899, .stack_it =   -1 },
+  { .steering =  364, .jump_target =  364, .stack_it = 1217 },
+  { .steering =  365, .jump_target =  365, .stack_it = 1217 },
+  { .steering =  366, .jump_target =  900, .stack_it = 1219 },
+  { .steering =  367, .jump_target =  367, .stack_it = 1217 },
+  { .steering =  368, .jump_target =  667, .stack_it = 1200 },
+  { .steering =  369, .jump_target =  668, .stack_it = 1197 },
+  { .steering =  370, .jump_target =  669, .stack_it = 1197 },
+  { .steering =  371, .jump_target =  901, .stack_it = 1216 },
+  { .steering =  372, .jump_target =  902, .stack_it = 1216 },
+  { .steering =  373, .jump_target =  903, .stack_it = 1216 },
+  { .steering =  374, .jump_target = 1129, .stack_it =   -1 },
+  { .steering =  375, .jump_target =  904, .stack_it = 1216 },
+  { .steering =  376, .jump_target = 1130, .stack_it =   -1 },
+  { .steering =  377, .jump_target =  905, .stack_it = 1219 },
+  { .steering =  378, .jump_target = 1131, .stack_it =   -1 },
+  { .steering =  379, .jump_target =  906, .stack_it = 1216 },
+  { .steering =  380, .jump_target = 1132, .stack_it =   -1 },
+  { .steering =  381, .jump_target =  907, .stack_it = 1219 },
+  { .steering =  382, .jump_target = 1133, .stack_it =   -1 },
+  { .steering =  383, .jump_target =  908, .stack_it = 1216 },
+  { .steering =  384, .jump_target =  909, .stack_it = 1219 },
+  { .steering =  385, .jump_target =  910, .stack_it = 1219 },
+  { .steering =  386, .jump_target = 1134, .stack_it =   -1 },
+  { .steering =  387, .jump_target =  911, .stack_it = 1216 },
+  { .steering =  388, .jump_target =  741, .stack_it = 1222 },
+  { .steering =  389, .jump_target =  912, .stack_it = 1215 },
+  { .steering =  390, .jump_target = 1135, .stack_it =   -1 },
+  { .steering =  391, .jump_target =  391, .stack_it = 1217 },
+  { .steering =  392, .jump_target =  913, .stack_it = 1215 },
+  { .steering =  393, .jump_target = 1136, .stack_it =   -1 },
+  { .steering =  394, .jump_target =  394, .stack_it = 1217 },
+  { .steering =  395, .jump_target =  914, .stack_it = 1218 },
+  { .steering =  396, .jump_target =  396, .stack_it = 1217 },
+  { .steering =  397, .jump_target =  915, .stack_it = 1218 },
+  { .steering =  398, .jump_target =  398, .stack_it = 1217 },
+  { .steering =  399, .jump_target =  916, .stack_it = 1215 },
+  { .steering =  400, .jump_target = 1137, .stack_it =   -1 },
+  { .steering =  401, .jump_target =  401, .stack_it = 1217 },
+  { .steering =  402, .jump_target =  917, .stack_it = 1215 },
+  { .steering =  403, .jump_target = 1138, .stack_it =   -1 },
+  { .steering =  404, .jump_target =  404, .stack_it = 1217 },
+  { .steering =  405, .jump_target =  918, .stack_it = 1218 },
+  { .steering =  406, .jump_target =  406, .stack_it = 1217 },
+  { .steering =  407, .jump_target =  919, .stack_it = 1218 },
+  { .steering =  408, .jump_target =  408, .stack_it = 1217 },
+  { .steering =  409, .jump_target = 1139, .stack_it =   -1 },
+  { .steering =  410, .jump_target = 1140, .stack_it =   -1 },
+  { .steering =  411, .jump_target = 1141, .stack_it =   -1 },
+  { .steering =  412, .jump_target = 1142, .stack_it =   -1 },
+  { .steering =  413, .jump_target = 1143, .stack_it =   -1 },
+  { .steering =  414, .jump_target = 1144, .stack_it =   -1 },
+  { .steering =  415, .jump_target = 1145, .stack_it =   -1 },
+  { .steering =  416, .jump_target = 1146, .stack_it =   -1 },
+  { .steering =  417, .jump_target = 1147, .stack_it =   -1 },
+  { .steering =  418, .jump_target = 1148, .stack_it =   -1 },
+  { .steering =  419, .jump_target = 1149, .stack_it =   -1 },
+  { .steering =  420, .jump_target = 1150, .stack_it =   -1 },
+  { .steering =  421, .jump_target = 1151, .stack_it =   -1 },
+  { .steering =  422, .jump_target = 1152, .stack_it =   -1 },
+  { .steering =  423, .jump_target = 1153, .stack_it =   -1 },
+  { .steering =  424, .jump_target =  424, .stack_it = 1226 },
+  { .steering =  425, .jump_target = 1154, .stack_it =   -1 },
+  { .steering =  426, .jump_target = 1155, .stack_it =   -1 },
+  { .steering =  427, .jump_target = 1156, .stack_it =   -1 },
+  { .steering =  428, .jump_target = 1157, .stack_it =   -1 },
+  { .steering =  429, .jump_target = 1158, .stack_it =   -1 },
+  { .steering =  430, .jump_target = 1159, .stack_it =   -1 },
+  { .steering =  431, .jump_target =  921, .stack_it = 1219 },
+  { .steering =  432, .jump_target = 1160, .stack_it =   -1 },
+  { .steering =  433, .jump_target = 1161, .stack_it =   -1 },
+  { .steering =  434, .jump_target = 1162, .stack_it =   -1 },
+  { .steering =  435, .jump_target =  922, .stack_it = 1219 },
+  { .steering =  436, .jump_target = 1163, .stack_it =   -1 },
+  { .steering =  437, .jump_target = 1164, .stack_it =   -1 },
+  { .steering =  438, .jump_target =  923, .stack_it = 1219 },
+  { .steering =  439, .jump_target =  924, .stack_it = 1219 },
+  { .steering =  440, .jump_target = 1165, .stack_it =   -1 },
+  { .steering =  441, .jump_target = 1166, .stack_it =   -1 },
+  { .steering =  442, .jump_target =  925, .stack_it = 1216 },
+  { .steering =  443, .jump_target =  926, .stack_it = 1216 },
+  { .steering =  444, .jump_target =  927, .stack_it = 1216 },
+  { .steering =  445, .jump_target = 1167, .stack_it =   -1 },
+  { .steering =  446, .jump_target =  928, .stack_it = 1216 },
+  { .steering =  447, .jump_target = 1168, .stack_it =   -1 },
+  { .steering =  448, .jump_target =  929, .stack_it = 1219 },
+  { .steering =  449, .jump_target = 1169, .stack_it =   -1 },
+  { .steering =  450, .jump_target =  930, .stack_it = 1216 },
+  { .steering =  451, .jump_target = 1170, .stack_it =   -1 },
+  { .steering =  452, .jump_target =  931, .stack_it = 1219 },
+  { .steering =  453, .jump_target = 1171, .stack_it =   -1 },
+  { .steering =  454, .jump_target =  932, .stack_it = 1219 },
+  { .steering =  455, .jump_target =  933, .stack_it = 1216 },
+  { .steering =  456, .jump_target = 1172, .stack_it =   -1 },
+  { .steering =  457, .jump_target =  934, .stack_it = 1219 },
+  { .steering =  458, .jump_target = 1173, .stack_it =   -1 },
+  { .steering =  459, .jump_target = 1174, .stack_it =   -1 },
+  { .steering =  460, .jump_target = 1175, .stack_it =   -1 },
+  { .steering =  461, .jump_target =  935, .stack_it = 1216 },
+  { .steering =  462, .jump_target = 1176, .stack_it =   -1 },
+  { .steering =  463, .jump_target =  936, .stack_it = 1215 },
+  { .steering =  464, .jump_target = 1177, .stack_it =   -1 },
+  { .steering =  465, .jump_target =  937, .stack_it = 1218 },
+  { .steering =  466, .jump_target =  938, .stack_it =   -1 },
+  { .steering =  467, .jump_target =  939, .stack_it =   -1 },
+  { .steering =  468, .jump_target =  940, .stack_it =   -1 },
+  { .steering =  469, .jump_target =  941, .stack_it =   -1 },
+  { .steering =  470, .jump_target =  470, .stack_it =   -1 },
+  { .steering =  471, .jump_target =  942, .stack_it = 1215 },
+  { .steering =  472, .jump_target = 1178, .stack_it =   -1 },
+  { .steering =  473, .jump_target =  943, .stack_it = 1218 },
+  { .steering =  474, .jump_target =  944, .stack_it =   -1 },
+  { .steering =  475, .jump_target =  945, .stack_it =   -1 },
+  { .steering =  476, .jump_target =  946, .stack_it = 1215 },
+  { .steering =  477, .jump_target = 1179, .stack_it =   -1 },
+  { .steering =  478, .jump_target =  947, .stack_it = 1218 },
+  { .steering =  479, .jump_target =  948, .stack_it = 1215 },
+  { .steering =  480, .jump_target = 1180, .stack_it =   -1 },
+  { .steering =  481, .jump_target =  949, .stack_it = 1215 },
+  { .steering =  482, .jump_target = 1181, .stack_it =   -1 },
+  { .steering =  483, .jump_target =  950, .stack_it = 1218 },
+  { .steering =  484, .jump_target =  951, .stack_it = 1218 },
+  { .steering =  485, .jump_target =  743, .stack_it = 1222 },
+  { .steering =  486, .jump_target =  486, .stack_it =   -1 },
+  { .steering =  487, .jump_target =  487, .stack_it =   -1 },
+  { .steering =  488, .jump_target =  952, .stack_it = 1220 },
+  { .steering =  489, .jump_target =  953, .stack_it = 1221 },
+  { .steering =  490, .jump_target =  954, .stack_it = 1220 },
+  { .steering =  491, .jump_target =  955, .stack_it = 1221 },
+  { .steering =  492, .jump_target =  744, .stack_it = 1196 },
+  { .steering =  493, .jump_target =  956, .stack_it = 1220 },
+  { .steering =  494, .jump_target =  957, .stack_it =   -1 },
+  { .steering =  495, .jump_target =  958, .stack_it =   -1 },
+  { .steering =  496, .jump_target =  496, .stack_it = 1205 },
+  { .steering =  497, .jump_target =  959, .stack_it = 1219 },
+  { .steering =  498, .jump_target =  960, .stack_it = 1219 },
+  { .steering =  499, .jump_target =  961, .stack_it = 1215 },
+  { .steering =  500, .jump_target = 1182, .stack_it =   -1 },
+  { .steering =  501, .jump_target =  501, .stack_it = 1217 },
+  { .steering =  502, .jump_target =  502, .stack_it = 1217 },
+  { .steering =  503, .jump_target =  962, .stack_it = 1216 },
+  { .steering =  504, .jump_target =  504, .stack_it = 1217 },
+  { .steering =  505, .jump_target =  963, .stack_it = 1219 },
+  { .steering =  506, .jump_target =  506, .stack_it = 1217 },
+  { .steering =  507, .jump_target =  507, .stack_it = 1217 },
+  { .steering =  508, .jump_target =  964, .stack_it = 1218 },
+  { .steering =  509, .jump_target =  509, .stack_it = 1217 },
+  { .steering =  510, .jump_target =  510, .stack_it = 1217 },
+  { .steering =  511, .jump_target =  511, .stack_it = 1217 },
+  { .steering =  512, .jump_target =  512, .stack_it = 1217 },
+  { .steering =  513, .jump_target =  513, .stack_it = 1217 },
+  { .steering =  514, .jump_target =  965, .stack_it = 1219 },
+  { .steering =  515, .jump_target =  966, .stack_it = 1219 },
+  { .steering =  516, .jump_target =  967, .stack_it = 1219 },
+  { .steering =  517, .jump_target =  517, .stack_it = 1217 },
+  { .steering =  518, .jump_target =  518, .stack_it = 1217 },
+  { .steering =  519, .jump_target =  519, .stack_it = 1217 },
+  { .steering =  520, .jump_target =  968, .stack_it = 1219 },
+  { .steering =  521, .jump_target =  969, .stack_it = 1219 },
+  { .steering =  522, .jump_target =  970, .stack_it = 1219 },
+  { .steering =  523, .jump_target =  523, .stack_it = 1217 },
+  { .steering =  524, .jump_target =  524, .stack_it = 1217 },
+  { .steering =  525, .jump_target =  525, .stack_it = 1217 },
+  { .steering =  526, .jump_target =  971, .stack_it = 1219 },
+  { .steering =  527, .jump_target =  972, .stack_it = 1219 },
+  { .steering =  528, .jump_target =  973, .stack_it = 1219 },
+  { .steering =  529, .jump_target =  529, .stack_it = 1217 },
+  { .steering =  530, .jump_target =  530, .stack_it = 1217 },
+  { .steering =  531, .jump_target =  531, .stack_it = 1217 },
+  { .steering =  532, .jump_target =  974, .stack_it = 1219 },
+  { .steering =  533, .jump_target =  975, .stack_it = 1219 },
+  { .steering =  534, .jump_target =  976, .stack_it = 1219 },
+  { .steering =  535, .jump_target =  535, .stack_it = 1217 },
+  { .steering =  536, .jump_target =  977, .stack_it = 1215 },
+  { .steering =  537, .jump_target = 1183, .stack_it =   -1 },
+  { .steering =  538, .jump_target =  978, .stack_it = 1215 },
+  { .steering =  539, .jump_target = 1184, .stack_it =   -1 },
+  { .steering =  540, .jump_target =  540, .stack_it = 1192 },
+  { .steering =  541, .jump_target =  541, .stack_it = 1205 },
+  { .steering =  542, .jump_target =  542, .stack_it = 1195 },
+  { .steering =  543, .jump_target =  543, .stack_it = 1205 },
+  { .steering =  544, .jump_target =  544, .stack_it =   -1 },
+  { .steering =  545, .jump_target =  979, .stack_it = 1221 },
+  { .steering =  546, .jump_target =  980, .stack_it = 1221 },
+  { .steering =  547, .jump_target =  981, .stack_it = 1220 },
+  { .steering =  548, .jump_target =  982, .stack_it = 1221 },
+  { .steering =  549, .jump_target =  983, .stack_it = 1221 },
+  { .steering =  550, .jump_target =  984, .stack_it = 1221 },
+  { .steering =  551, .jump_target =  985, .stack_it = 1220 },
+  { .steering =  552, .jump_target =  986, .stack_it = 1221 },
+  { .steering =  553, .jump_target =  553, .stack_it = 1209 },
+  { .steering =  554, .jump_target =  554, .stack_it = 1207 },
+  { .steering =  555, .jump_target =  987, .stack_it = 1221 },
+  { .steering =  556, .jump_target =  988, .stack_it = 1221 },
+  { .steering =  557, .jump_target =  989, .stack_it = 1220 },
+  { .steering =  558, .jump_target =  990, .stack_it = 1221 },
+  { .steering =  559, .jump_target =  991, .stack_it = 1221 },
+  { .steering =  560, .jump_target =  992, .stack_it = 1221 },
+  { .steering =  561, .jump_target =  993, .stack_it = 1220 },
+  { .steering =  562, .jump_target =  994, .stack_it = 1221 },
+  { .steering =  563, .jump_target =  995, .stack_it = 1221 },
+  { .steering =  564, .jump_target =  996, .stack_it = 1221 },
+  { .steering =  565, .jump_target =  997, .stack_it = 1220 },
+  { .steering =  566, .jump_target =  998, .stack_it = 1221 },
+  { .steering =  567, .jump_target =  567, .stack_it =   -1 },
+  { .steering =  568, .jump_target = 1185, .stack_it =   -1 },
+  { .steering =  569, .jump_target = 1186, .stack_it =   -1 },
+  { .steering =  570, .jump_target =  570, .stack_it = 1205 },
+  { .steering =  571, .jump_target =  999, .stack_it =   -1 },
+  { .steering =  572, .jump_target = 1000, .stack_it =   -1 },
+  { .steering =  573, .jump_target = 1001, .stack_it =   -1 },
+  { .steering =  574, .jump_target = 1002, .stack_it =   -1 },
+  { .steering =  575, .jump_target = 1003, .stack_it =   -1 },
+  { .steering =  576, .jump_target = 1004, .stack_it =   -1 },
+  { .steering =  577, .jump_target = 1005, .stack_it =   -1 },
+  { .steering =  578, .jump_target =  671, .stack_it =   -1 },
+  { .steering =  579, .jump_target =  579, .stack_it =   -1 },
+  { .steering =  580, .jump_target =  580, .stack_it =   -1 },
+  { .steering =  581, .jump_target =  581, .stack_it =   -1 },
+  { .steering =  582, .jump_target =  582, .stack_it =   -1 },
+  { .steering =  583, .jump_target =  583, .stack_it =   -1 },
+  { .steering =  584, .jump_target =  672, .stack_it =   -1 },
+  { .steering =  585, .jump_target =  585, .stack_it = 1193 },
+  { .steering =  586, .jump_target =  586, .stack_it = 1193 },
+  { .steering =  587, .jump_target =  745, .stack_it = 1228 },
+  { .steering =  588, .jump_target =  673, .stack_it = 1202 },
+  { .steering =  589, .jump_target = 1187, .stack_it =   -1 },
+  { .steering =  590, .jump_target = 1188, .stack_it =   -1 },
+  { .steering =  591, .jump_target = 1189, .stack_it =   -1 },
+  { .steering =  592, .jump_target = 1190, .stack_it =   -1 },
+  { .steering =  593, .jump_target =  747, .stack_it = 1228 },
+  { .steering =  594, .jump_target =  594, .stack_it = 1226 },
+  { .steering =  595, .jump_target = 1007, .stack_it =   -1 },
+  { .steering =  596, .jump_target = 1008, .stack_it = 1215 },
+  { .steering =  597, .jump_target = 1191, .stack_it =   -1 },
+  { .steering =  598, .jump_target = 1009, .stack_it = 1218 },
+  { .steering =  599, .jump_target =  599, .stack_it = 1211 },
+  { .steering =  600, .jump_target = 1010, .stack_it =   -1 },
+  { .steering =  601, .jump_target = 1011, .stack_it =   -1 },
+  { .steering =  602, .jump_target = 1012, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0001[] = {
+  { .steering =    1, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0002[] = {
+  { .steering =    2, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0003[] = {
+  { .steering =    3, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0004[] = {
+  { .steering =    4, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0005[] = {
+  { .steering =    5, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0006[] = {
+  { .steering =    6, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0007[] = {
+  { .steering =    7, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0008[] = {
+  { .steering =    8, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0009[] = {
+  { .steering =    9, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0010[] = {
+  { .steering =   10, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0011[] = {
+  { .steering =   11, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0012[] = {
+  { .steering =   12, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0013[] = {
+  { .steering =   13, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0014[] = {
+  { .steering =   14, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0015[] = {
+  { .steering =   15, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   50, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   60, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   63, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   68, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   73, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0016[] = {
+  { .steering =   16, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0017[] = {
+  { .steering =   17, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0018[] = {
+  { .steering =   18, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0019[] = {
+  { .steering =   19, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   73, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0020[] = {
+  { .steering =   19, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   20, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   24, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   60, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   68, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   73, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0021[] = {
+  { .steering =   21, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0022[] = {
+  { .steering =   22, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0023[] = {
+  { .steering =   23, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0024[] = {
+  { .steering =   19, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   24, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   60, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   68, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   73, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0025[] = {
+  { .steering =   25, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0026[] = {
+  { .steering =   26, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0027[] = {
+  { .steering =   27, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0028[] = {
+  { .steering =   15, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   23, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   28, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   60, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   63, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   68, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0029[] = {
+  { .steering =   29, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0030[] = {
+  { .steering =   30, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0031[] = {
+  { .steering =   31, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0032[] = {
+  { .steering =   32, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0033[] = {
+  { .steering =   33, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0034[] = {
+  { .steering =   34, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0035[] = {
+  { .steering =   35, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0036[] = {
+  { .steering =   36, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0037[] = {
+  { .steering =   37, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0038[] = {
+  { .steering =   38, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0039[] = {
+  { .steering =   39, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0040[] = {
+  { .steering =   40, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0041[] = {
+  { .steering =   41, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0042[] = {
+  { .steering =   42, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0043[] = {
+  { .steering =   43, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0044[] = {
+  { .steering =   44, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0045[] = {
+  { .steering =   45, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0046[] = {
+  { .steering =   46, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0047[] = {
+  { .steering =   47, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0048[] = {
+  { .steering =   48, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0049[] = {
+  { .steering =   49, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0050[] = {
+  { .steering =   50, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0051[] = {
+  { .steering =   51, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0052[] = {
+  { .steering =   52, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0053[] = {
+  { .steering =   53, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0054[] = {
+  { .steering =   54, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0055[] = {
+  { .steering =   55, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0056[] = {
+  { .steering =   56, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0057[] = {
+  { .steering =   57, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0058[] = {
+  { .steering =   58, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0059[] = {
+  { .steering =   59, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0060[] = {
+  { .steering =   60, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0061[] = {
+  { .steering =   61, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0062[] = {
+  { .steering =   62, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0063[] = {
+  { .steering =   63, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0064[] = {
+  { .steering =   64, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0065[] = {
+  { .steering =   65, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0066[] = {
+  { .steering =   66, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0067[] = {
+  { .steering =   67, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0068[] = {
+  { .steering =   68, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0069[] = {
+  { .steering =   69, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0070[] = {
+  { .steering =   70, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0071[] = {
+  { .steering =   71, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0072[] = {
+  { .steering =   72, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0073[] = {
+  { .steering =   73, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0074[] = {
+  { .steering =   74, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0075[] = {
+  { .steering =   75, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0076[] = {
+  { .steering =   76, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0077[] = {
+  { .steering =   77, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0078[] = {
+  { .steering =   78, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0079[] = {
+  { .steering =   79, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0080[] = {
+  { .steering =   80, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0081[] = {
+  { .steering =   81, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0082[] = {
+  { .steering =   82, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0083[] = {
+  { .steering =   83, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0084[] = {
+  { .steering =   84, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0085[] = {
+  { .steering =   85, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0086[] = {
+  { .steering =   86, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0087[] = {
+  { .steering =   87, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0088[] = {
+  { .steering =   88, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0089[] = {
+  { .steering =   89, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0090[] = {
+  { .steering =   90, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0091[] = {
+  { .steering =   91, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0092[] = {
+  { .steering =   92, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0093[] = {
+  { .steering =   93, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0094[] = {
+  { .steering =   94, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0095[] = {
+  { .steering =   95, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0096[] = {
+  { .steering =   96, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0097[] = {
+  { .steering =   97, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0098[] = {
+  { .steering =   98, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0099[] = {
+  { .steering =   99, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0100[] = {
+  { .steering =  100, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0101[] = {
+  { .steering =  101, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0102[] = {
+  { .steering =  102, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0103[] = {
+  { .steering =  103, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0104[] = {
+  { .steering =  104, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0105[] = {
+  { .steering =  105, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0106[] = {
+  { .steering =  106, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0107[] = {
+  { .steering =  107, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0108[] = {
+  { .steering =  108, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0109[] = {
+  { .steering =  109, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0110[] = {
+  { .steering =  110, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0111[] = {
+  { .steering =  111, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0112[] = {
+  { .steering =  112, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0113[] = {
+  { .steering =  113, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0114[] = {
+  { .steering =  114, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0115[] = {
+  { .steering =  115, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0116[] = {
+  { .steering =  116, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0117[] = {
+  { .steering =  117, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0118[] = {
+  { .steering =  118, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0119[] = {
+  { .steering =  119, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0120[] = {
+  { .steering =  120, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0121[] = {
+  { .steering =  121, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0122[] = {
+  { .steering =  122, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0123[] = {
+  { .steering =  123, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0124[] = {
+  { .steering =  124, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0125[] = {
+  { .steering =  125, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0126[] = {
+  { .steering =  126, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0127[] = {
+  { .steering =  127, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0128[] = {
+  { .steering =  128, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0129[] = {
+  { .steering =  129, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0130[] = {
+  { .steering =  130, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0131[] = {
+  { .steering =  131, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0132[] = {
+  { .steering =  132, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0133[] = {
+  { .steering =  133, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0134[] = {
+  { .steering =  134, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0135[] = {
+  { .steering =  135, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0136[] = {
+  { .steering =  136, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0137[] = {
+  { .steering =  137, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0138[] = {
+  { .steering =  138, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0139[] = {
+  { .steering =  139, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0140[] = {
+  { .steering =  140, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0141[] = {
+  { .steering =  141, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0142[] = {
+  { .steering =  142, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0143[] = {
+  { .steering =  143, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0144[] = {
+  { .steering =  144, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0145[] = {
+  { .steering =  145, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0146[] = {
+  { .steering =  146, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0147[] = {
+  { .steering =  147, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0148[] = {
+  { .steering =  148, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0149[] = {
+  { .steering =  149, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0150[] = {
+  { .steering =  150, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0151[] = {
+  { .steering =  151, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0152[] = {
+  { .steering =  152, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0153[] = {
+  { .steering =  153, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0154[] = {
+  { .steering =  154, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0155[] = {
+  { .steering =  155, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0156[] = {
+  { .steering =  156, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0157[] = {
+  { .steering =  157, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0158[] = {
+  { .steering =  158, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0159[] = {
+  { .steering =  159, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0160[] = {
+  { .steering =  160, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0161[] = {
+  { .steering =  161, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0162[] = {
+  { .steering =  162, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0163[] = {
+  { .steering =  163, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0164[] = {
+  { .steering =  164, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0165[] = {
+  { .steering =  165, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0166[] = {
+  { .steering =  166, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0167[] = {
+  { .steering =  167, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0168[] = {
+  { .steering =  168, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0169[] = {
+  { .steering =  169, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0170[] = {
+  { .steering =  170, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0171[] = {
+  { .steering =  171, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0172[] = {
+  { .steering =  172, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0173[] = {
+  { .steering =  173, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0174[] = {
+  { .steering =  174, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0175[] = {
+  { .steering =  175, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0176[] = {
+  { .steering =  176, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0177[] = {
+  { .steering =  177, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0178[] = {
+  { .steering =  178, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0179[] = {
+  { .steering =  179, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0180[] = {
+  { .steering =  180, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0181[] = {
+  { .steering =  181, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0182[] = {
+  { .steering =  182, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0183[] = {
+  { .steering =  183, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0184[] = {
+  { .steering =  184, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0185[] = {
+  { .steering =  185, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0186[] = {
+  { .steering =  186, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0187[] = {
+  { .steering =  187, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0188[] = {
+  { .steering =  188, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0189[] = {
+  { .steering =  189, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0190[] = {
+  { .steering =  190, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0191[] = {
+  { .steering =  191, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0192[] = {
+  { .steering =  192, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0193[] = {
+  { .steering =  193, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0194[] = {
+  { .steering =  194, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0195[] = {
+  { .steering =  195, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0196[] = {
+  { .steering =  196, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0197[] = {
+  { .steering =  197, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0198[] = {
+  { .steering =  198, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0199[] = {
+  { .steering =  199, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0200[] = {
+  { .steering =  200, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0201[] = {
+  { .steering =  201, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0202[] = {
+  { .steering =  202, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0203[] = {
+  { .steering =  203, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0204[] = {
+  { .steering =  204, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0205[] = {
+  { .steering =  205, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0206[] = {
+  { .steering =  206, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0207[] = {
+  { .steering =  207, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0208[] = {
+  { .steering =  208, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0209[] = {
+  { .steering =  209, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0210[] = {
+  { .steering =  210, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0211[] = {
+  { .steering =  211, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0212[] = {
+  { .steering =  212, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0213[] = {
+  { .steering =  213, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0214[] = {
+  { .steering =  214, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0215[] = {
+  { .steering =  215, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0216[] = {
+  { .steering =  216, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0217[] = {
+  { .steering =  217, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0218[] = {
+  { .steering =  218, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0219[] = {
+  { .steering =  219, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0220[] = {
+  { .steering =  220, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0221[] = {
+  { .steering =  221, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0222[] = {
+  { .steering =  222, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0223[] = {
+  { .steering =  223, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0224[] = {
+  { .steering =  224, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0225[] = {
+  { .steering =  225, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0226[] = {
+  { .steering =  226, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0227[] = {
+  { .steering =  227, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0228[] = {
+  { .steering =  228, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0229[] = {
+  { .steering =  229, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0230[] = {
+  { .steering =  230, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0231[] = {
+  { .steering =  231, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0232[] = {
+  { .steering =  232, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0233[] = {
+  { .steering =  233, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0234[] = {
+  { .steering =  234, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0235[] = {
+  { .steering =  235, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0236[] = {
+  { .steering =  236, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0237[] = {
+  { .steering =  237, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0238[] = {
+  { .steering =  238, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0239[] = {
+  { .steering =  239, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0240[] = {
+  { .steering =  240, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0241[] = {
+  { .steering =  241, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0242[] = {
+  { .steering =  242, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0243[] = {
+  { .steering =  243, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0244[] = {
+  { .steering =  244, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0245[] = {
+  { .steering =  245, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0246[] = {
+  { .steering =  246, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0247[] = {
+  { .steering =  247, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0248[] = {
+  { .steering =  248, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0249[] = {
+  { .steering =  249, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0250[] = {
+  { .steering =  250, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0251[] = {
+  { .steering =  251, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0252[] = {
+  { .steering =  252, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0253[] = {
+  { .steering =  253, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0254[] = {
+  { .steering =  254, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0255[] = {
+  { .steering =  255, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0256[] = {
+  { .steering =  256, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0257[] = {
+  { .steering =  257, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0258[] = {
+  { .steering =  258, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0259[] = {
+  { .steering =  259, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0260[] = {
+  { .steering =  260, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0261[] = {
+  { .steering =  261, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0262[] = {
+  { .steering =  262, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0263[] = {
+  { .steering =  263, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0264[] = {
+  { .steering =  264, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0265[] = {
+  { .steering =  265, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0266[] = {
+  { .steering =  266, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0267[] = {
+  { .steering =  267, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0268[] = {
+  { .steering =  268, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0269[] = {
+  { .steering =  269, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0270[] = {
+  { .steering =  270, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0271[] = {
+  { .steering =  271, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0272[] = {
+  { .steering =  272, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0273[] = {
+  { .steering =  273, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0274[] = {
+  { .steering =  274, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0275[] = {
+  { .steering =  275, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0276[] = {
+  { .steering =  276, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0277[] = {
+  { .steering =  277, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0278[] = {
+  { .steering =  278, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0279[] = {
+  { .steering =  279, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0280[] = {
+  { .steering =  280, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0281[] = {
+  { .steering =  281, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0282[] = {
+  { .steering =  282, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0283[] = {
+  { .steering =  283, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0284[] = {
+  { .steering =  284, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0285[] = {
+  { .steering =  285, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0286[] = {
+  { .steering =  286, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0287[] = {
+  { .steering =  287, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0288[] = {
+  { .steering =  288, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0289[] = {
+  { .steering =  289, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0290[] = {
+  { .steering =  290, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0291[] = {
+  { .steering =  291, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0292[] = {
+  { .steering =  292, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0293[] = {
+  { .steering =  293, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0294[] = {
+  { .steering =  294, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0295[] = {
+  { .steering =  295, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0296[] = {
+  { .steering =  296, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0297[] = {
+  { .steering =  297, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0298[] = {
+  { .steering =  298, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0299[] = {
+  { .steering =  299, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0300[] = {
+  { .steering =  300, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0301[] = {
+  { .steering =  301, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0302[] = {
+  { .steering =  302, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0303[] = {
+  { .steering =  303, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0304[] = {
+  { .steering =  304, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0305[] = {
+  { .steering =  305, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0306[] = {
+  { .steering =  306, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0307[] = {
+  { .steering =  307, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0308[] = {
+  { .steering =  308, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0309[] = {
+  { .steering =  309, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0310[] = {
+  { .steering =  310, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0311[] = {
+  { .steering =  311, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0312[] = {
+  { .steering =  312, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0313[] = {
+  { .steering =  313, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0314[] = {
+  { .steering =  314, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0315[] = {
+  { .steering =  315, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0316[] = {
+  { .steering =  316, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0317[] = {
+  { .steering =  317, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0318[] = {
+  { .steering =  318, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0319[] = {
+  { .steering =  319, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0320[] = {
+  { .steering =  320, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0321[] = {
+  { .steering =  321, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0322[] = {
+  { .steering =  322, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0323[] = {
+  { .steering =  323, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0324[] = {
+  { .steering =  324, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0325[] = {
+  { .steering =  325, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0326[] = {
+  { .steering =  326, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0327[] = {
+  { .steering =  327, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0328[] = {
+  { .steering =  328, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0329[] = {
+  { .steering =  329, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0330[] = {
+  { .steering =  330, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0331[] = {
+  { .steering =  331, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0332[] = {
+  { .steering =  332, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0333[] = {
+  { .steering =  333, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0334[] = {
+  { .steering =  334, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0335[] = {
+  { .steering =  335, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0336[] = {
+  { .steering =  336, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0337[] = {
+  { .steering =  337, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0338[] = {
+  { .steering =  338, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0339[] = {
+  { .steering =  339, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0340[] = {
+  { .steering =  340, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0341[] = {
+  { .steering =  341, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0342[] = {
+  { .steering =  342, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0343[] = {
+  { .steering =  343, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0344[] = {
+  { .steering =  344, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0345[] = {
+  { .steering =  345, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0346[] = {
+  { .steering =  346, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0347[] = {
+  { .steering =  347, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0348[] = {
+  { .steering =  348, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0349[] = {
+  { .steering =  349, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0350[] = {
+  { .steering =  350, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0351[] = {
+  { .steering =  351, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0352[] = {
+  { .steering =  352, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0353[] = {
+  { .steering =  353, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0354[] = {
+  { .steering =  354, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0355[] = {
+  { .steering =  355, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0356[] = {
+  { .steering =  356, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0357[] = {
+  { .steering =  357, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0358[] = {
+  { .steering =  358, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0359[] = {
+  { .steering =  359, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0360[] = {
+  { .steering =  360, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0361[] = {
+  { .steering =  361, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0362[] = {
+  { .steering =  362, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0363[] = {
+  { .steering =  363, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0364[] = {
+  { .steering =  364, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0365[] = {
+  { .steering =  365, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0366[] = {
+  { .steering =  366, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0367[] = {
+  { .steering =  367, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0368[] = {
+  { .steering =  368, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0369[] = {
+  { .steering =  369, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0370[] = {
+  { .steering =  370, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0371[] = {
+  { .steering =  371, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0372[] = {
+  { .steering =  372, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0373[] = {
+  { .steering =  373, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0374[] = {
+  { .steering =  374, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0375[] = {
+  { .steering =  375, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0376[] = {
+  { .steering =  376, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0377[] = {
+  { .steering =  377, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0378[] = {
+  { .steering =  378, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0379[] = {
+  { .steering =  379, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0380[] = {
+  { .steering =  380, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0381[] = {
+  { .steering =  381, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0382[] = {
+  { .steering =  382, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0383[] = {
+  { .steering =  383, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0384[] = {
+  { .steering =  384, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0385[] = {
+  { .steering =  385, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0386[] = {
+  { .steering =  386, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0387[] = {
+  { .steering =  387, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0388[] = {
+  { .steering =  388, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0389[] = {
+  { .steering =  389, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0390[] = {
+  { .steering =  390, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0391[] = {
+  { .steering =  391, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0392[] = {
+  { .steering =  392, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0393[] = {
+  { .steering =  393, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0394[] = {
+  { .steering =  394, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0395[] = {
+  { .steering =  395, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0396[] = {
+  { .steering =  396, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0397[] = {
+  { .steering =  397, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0398[] = {
+  { .steering =  398, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0399[] = {
+  { .steering =  399, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0400[] = {
+  { .steering =  400, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0401[] = {
+  { .steering =  401, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0402[] = {
+  { .steering =  402, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0403[] = {
+  { .steering =  403, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0404[] = {
+  { .steering =  404, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0405[] = {
+  { .steering =  405, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0406[] = {
+  { .steering =  406, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0407[] = {
+  { .steering =  407, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0408[] = {
+  { .steering =  408, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0409[] = {
+  { .steering =  409, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0410[] = {
+  { .steering =  410, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0411[] = {
+  { .steering =  411, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0412[] = {
+  { .steering =  412, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0413[] = {
+  { .steering =  413, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0414[] = {
+  { .steering =  414, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0415[] = {
+  { .steering =  415, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0416[] = {
+  { .steering =  416, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0417[] = {
+  { .steering =  417, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0418[] = {
+  { .steering =  418, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0419[] = {
+  { .steering =  419, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0420[] = {
+  { .steering =  420, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0421[] = {
+  { .steering =  421, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0422[] = {
+  { .steering =  422, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0423[] = {
+  { .steering =  423, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0424[] = {
+  { .steering =  424, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0425[] = {
+  { .steering =  425, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0426[] = {
+  { .steering =  426, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0427[] = {
+  { .steering =  427, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0428[] = {
+  { .steering =  428, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0429[] = {
+  { .steering =  429, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0430[] = {
+  { .steering =  430, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0431[] = {
+  { .steering =  431, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0432[] = {
+  { .steering =  432, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0433[] = {
+  { .steering =  433, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0434[] = {
+  { .steering =  434, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0435[] = {
+  { .steering =  435, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0436[] = {
+  { .steering =  436, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0437[] = {
+  { .steering =  437, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0438[] = {
+  { .steering =  438, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0439[] = {
+  { .steering =  439, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0440[] = {
+  { .steering =  440, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0441[] = {
+  { .steering =  441, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0442[] = {
+  { .steering =  442, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0443[] = {
+  { .steering =  443, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0444[] = {
+  { .steering =  444, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0445[] = {
+  { .steering =  445, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0446[] = {
+  { .steering =  446, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0447[] = {
+  { .steering =  447, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0448[] = {
+  { .steering =  448, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0449[] = {
+  { .steering =  449, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0450[] = {
+  { .steering =  450, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0451[] = {
+  { .steering =  451, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0452[] = {
+  { .steering =  452, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0453[] = {
+  { .steering =  453, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0454[] = {
+  { .steering =  454, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0455[] = {
+  { .steering =  455, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0456[] = {
+  { .steering =  456, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0457[] = {
+  { .steering =  457, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0458[] = {
+  { .steering =  458, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0459[] = {
+  { .steering =  459, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0460[] = {
+  { .steering =  460, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0461[] = {
+  { .steering =  461, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0462[] = {
+  { .steering =  462, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0463[] = {
+  { .steering =  463, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0464[] = {
+  { .steering =  464, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0465[] = {
+  { .steering =  465, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0466[] = {
+  { .steering =  466, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0467[] = {
+  { .steering =  467, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0468[] = {
+  { .steering =  468, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0469[] = {
+  { .steering =  469, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0470[] = {
+  { .steering =  470, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0471[] = {
+  { .steering =  471, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0472[] = {
+  { .steering =  472, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0473[] = {
+  { .steering =  473, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0474[] = {
+  { .steering =  474, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0475[] = {
+  { .steering =  475, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0476[] = {
+  { .steering =  476, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0477[] = {
+  { .steering =  477, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0478[] = {
+  { .steering =  478, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0479[] = {
+  { .steering =  479, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0480[] = {
+  { .steering =  480, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0481[] = {
+  { .steering =  481, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0482[] = {
+  { .steering =  482, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0483[] = {
+  { .steering =  483, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0484[] = {
+  { .steering =  484, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0485[] = {
+  { .steering =  485, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0486[] = {
+  { .steering =  486, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0487[] = {
+  { .steering =  487, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0488[] = {
+  { .steering =  488, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0489[] = {
+  { .steering =  489, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0490[] = {
+  { .steering =  490, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0491[] = {
+  { .steering =  491, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0492[] = {
+  { .steering =  492, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0493[] = {
+  { .steering =  493, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0494[] = {
+  { .steering =  494, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0495[] = {
+  { .steering =  495, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0496[] = {
+  { .steering =  496, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0497[] = {
+  { .steering =  497, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0498[] = {
+  { .steering =  498, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0499[] = {
+  { .steering =  499, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0500[] = {
+  { .steering =  500, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0501[] = {
+  { .steering =  501, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0502[] = {
+  { .steering =  502, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0503[] = {
+  { .steering =  503, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0504[] = {
+  { .steering =  504, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0505[] = {
+  { .steering =  505, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0506[] = {
+  { .steering =  506, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0507[] = {
+  { .steering =  507, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0508[] = {
+  { .steering =  508, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0509[] = {
+  { .steering =  509, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0510[] = {
+  { .steering =  510, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0511[] = {
+  { .steering =  511, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0512[] = {
+  { .steering =  512, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0513[] = {
+  { .steering =  513, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0514[] = {
+  { .steering =  514, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0515[] = {
+  { .steering =  515, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0516[] = {
+  { .steering =  516, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0517[] = {
+  { .steering =  517, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0518[] = {
+  { .steering =  518, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0519[] = {
+  { .steering =  519, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0520[] = {
+  { .steering =  520, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0521[] = {
+  { .steering =  521, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0522[] = {
+  { .steering =  522, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0523[] = {
+  { .steering =  523, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0524[] = {
+  { .steering =  524, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0525[] = {
+  { .steering =  525, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0526[] = {
+  { .steering =  526, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0527[] = {
+  { .steering =  527, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0528[] = {
+  { .steering =  528, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0529[] = {
+  { .steering =  529, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0530[] = {
+  { .steering =  530, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0531[] = {
+  { .steering =  531, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0532[] = {
+  { .steering =  532, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0533[] = {
+  { .steering =  533, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0534[] = {
+  { .steering =  534, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0535[] = {
+  { .steering =  535, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0536[] = {
+  { .steering =  536, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0537[] = {
+  { .steering =  537, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0538[] = {
+  { .steering =  538, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0539[] = {
+  { .steering =  539, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0540[] = {
+  { .steering =  540, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0541[] = {
+  { .steering =  541, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0542[] = {
+  { .steering =  542, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0543[] = {
+  { .steering =  543, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0544[] = {
+  { .steering =  544, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0545[] = {
+  { .steering =  545, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0546[] = {
+  { .steering =  546, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0547[] = {
+  { .steering =  547, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0548[] = {
+  { .steering =  548, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0549[] = {
+  { .steering =  549, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0550[] = {
+  { .steering =  550, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0551[] = {
+  { .steering =  551, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0552[] = {
+  { .steering =  552, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0553[] = {
+  { .steering =  553, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0554[] = {
+  { .steering =  554, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0555[] = {
+  { .steering =  555, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0556[] = {
+  { .steering =  556, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0557[] = {
+  { .steering =  557, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0558[] = {
+  { .steering =  558, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0559[] = {
+  { .steering =  559, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0560[] = {
+  { .steering =  560, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0561[] = {
+  { .steering =  561, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0562[] = {
+  { .steering =  562, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0563[] = {
+  { .steering =  563, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0564[] = {
+  { .steering =  564, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0565[] = {
+  { .steering =  565, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0566[] = {
+  { .steering =  566, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0567[] = {
+  { .steering =  567, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0568[] = {
+  { .steering =  568, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0569[] = {
+  { .steering =  569, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0570[] = {
+  { .steering =  570, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0571[] = {
+  { .steering =  571, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0572[] = {
+  { .steering =  572, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0573[] = {
+  { .steering =  573, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0574[] = {
+  { .steering =  574, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0575[] = {
+  { .steering =  575, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0576[] = {
+  { .steering =  576, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0577[] = {
+  { .steering =  577, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0578[] = {
+  { .steering =  578, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0579[] = {
+  { .steering =  579, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0580[] = {
+  { .steering =  580, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0581[] = {
+  { .steering =  581, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0582[] = {
+  { .steering =  582, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0583[] = {
+  { .steering =  583, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0584[] = {
+  { .steering =  584, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0585[] = {
+  { .steering =  585, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0586[] = {
+  { .steering =  586, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0587[] = {
+  { .steering =  587, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0588[] = {
+  { .steering =  588, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0589[] = {
+  { .steering =  589, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0590[] = {
+  { .steering =  590, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0591[] = {
+  { .steering =  591, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0592[] = {
+  { .steering =  592, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0593[] = {
+  { .steering =  593, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0594[] = {
+  { .steering =  594, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0595[] = {
+  { .steering =  595, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0596[] = {
+  { .steering =  596, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0597[] = {
+  { .steering =  597, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0598[] = {
+  { .steering =  598, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0599[] = {
+  { .steering =  599, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0600[] = {
+  { .steering =  600, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0601[] = {
+  { .steering =  601, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0602[] = {
+  { .steering =  602, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0603[] = {
+  { .steering =  603, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0604[] = {
+  { .steering =  604, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0605[] = {
+  { .steering =  605, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0606[] = {
+  { .steering =  606, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0607[] = {
+  { .steering =  607, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0608[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  607 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0609[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0610[] = {
+  { .steering =  604, .jump_target =  604, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0611[] = {
+  { .steering =  607, .jump_target =  607, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0612[] = {
+  { .steering =  604, .jump_target =  604, .stack_it =   63 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0613[] = {
+  { .steering =  604, .jump_target =  604, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0614[] = {
+  { .steering =  604, .jump_target =  604, .stack_it =   73 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0615[] = {
+  { .steering =   50, .jump_target =   50, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0616[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  606 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0617[] = {
+  { .steering =   60, .jump_target =   60, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0618[] = {
+  { .steering =   63, .jump_target =   63, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0619[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0620[] = {
+  { .steering =   73, .jump_target =   73, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0621[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  605 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0622[] = {
+  { .steering =   19, .jump_target =   20, .stack_it =   24 },
+  { .steering =   20, .jump_target =   20, .stack_it =   24 },
+  { .steering =   24, .jump_target =   20, .stack_it =   24 },
+  { .steering =   60, .jump_target =   20, .stack_it =   24 },
+  { .steering =   68, .jump_target =   20, .stack_it =   24 },
+  { .steering =   73, .jump_target =   20, .stack_it =   24 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0623[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0624[] = {
+  { .steering =   19, .jump_target =   24, .stack_it =   60 },
+  { .steering =   24, .jump_target =   24, .stack_it =   60 },
+  { .steering =   60, .jump_target =   24, .stack_it =   60 },
+  { .steering =   68, .jump_target =   24, .stack_it =   60 },
+  { .steering =   73, .jump_target =   24, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0625[] = {
+  { .steering =  603, .jump_target =  603, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0626[] = {
+  { .steering =   19, .jump_target =   24, .stack_it =   68 },
+  { .steering =   24, .jump_target =   24, .stack_it =   68 },
+  { .steering =   60, .jump_target =   24, .stack_it =   68 },
+  { .steering =   68, .jump_target =   24, .stack_it =   68 },
+  { .steering =   73, .jump_target =   24, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0627[] = {
+  { .steering =   23, .jump_target =   23, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0628[] = {
+  { .steering =  605, .jump_target =  605, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0629[] = {
+  { .steering =   35, .jump_target =   35, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0630[] = {
+  { .steering =   36, .jump_target =   36, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0631[] = {
+  { .steering =  605, .jump_target =  605, .stack_it =   73 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0632[] = {
+  { .steering =  603, .jump_target =  603, .stack_it =   75 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0633[] = {
+  { .steering =  603, .jump_target =  603, .stack_it =   74 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0634[] = {
+  { .steering =  156, .jump_target =  156, .stack_it =    2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0635[] = {
+  { .steering =  605, .jump_target =  605, .stack_it =    1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0636[] = {
+  { .steering =   10, .jump_target =   10, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0637[] = {
+  { .steering =   25, .jump_target =   25, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0638[] = {
+  { .steering =   14, .jump_target =   14, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0639[] = {
+  { .steering =  177, .jump_target =  177, .stack_it =   14 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0640[] = {
+  { .steering =  178, .jump_target =  178, .stack_it =   14 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0641[] = {
+  { .steering =   21, .jump_target =   21, .stack_it =   22 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0642[] = {
+  { .steering =   46, .jump_target =   46, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0643[] = {
+  { .steering =   47, .jump_target =   47, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0644[] = {
+  { .steering =   48, .jump_target =   48, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0645[] = {
+  { .steering =   49, .jump_target =   49, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0646[] = {
+  { .steering =   60, .jump_target =   60, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0647[] = {
+  { .steering =   17, .jump_target =   17, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0648[] = {
+  { .steering =  234, .jump_target =  234, .stack_it =   17 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0649[] = {
+  { .steering =  235, .jump_target =  235, .stack_it =   17 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0650[] = {
+  { .steering =   31, .jump_target =   31, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0651[] = {
+  { .steering =   70, .jump_target =   70, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0652[] = {
+  { .steering =   73, .jump_target =   73, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0653[] = {
+  { .steering =   32, .jump_target =   32, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0654[] = {
+  { .steering =   33, .jump_target =   33, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0655[] = {
+  { .steering =   34, .jump_target =   34, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0656[] = {
+  { .steering =   19, .jump_target =   19, .stack_it =   73 },
+  { .steering =   73, .jump_target =   19, .stack_it =   73 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0657[] = {
+  { .steering =  338, .jump_target =  338, .stack_it =    2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0658[] = {
+  { .steering =  341, .jump_target =  341, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0659[] = {
+  { .steering =  342, .jump_target =  342, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0660[] = {
+  { .steering =  343, .jump_target =  343, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0661[] = {
+  { .steering =  349, .jump_target =  349, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0662[] = {
+  { .steering =  350, .jump_target =  350, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0663[] = {
+  { .steering =  351, .jump_target =  351, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0664[] = {
+  { .steering =  352, .jump_target =  352, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0665[] = {
+  { .steering =  353, .jump_target =  353, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0666[] = {
+  { .steering =  362, .jump_target =  362, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0667[] = {
+  { .steering =  368, .jump_target =  368, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0668[] = {
+  { .steering =  369, .jump_target =  369, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0669[] = {
+  { .steering =  370, .jump_target =  370, .stack_it =   28 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0670[] = {
+  { .steering =   50, .jump_target =   50, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0671[] = {
+  { .steering =  578, .jump_target =  578, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0672[] = {
+  { .steering =  584, .jump_target =  584, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0673[] = {
+  { .steering =  588, .jump_target =  588, .stack_it =   26 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0674[] = {
+  { .steering =   70, .jump_target =   70, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0675[] = {
+  { .steering =  606, .jump_target =  609, .stack_it =  607 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0676[] = {
+  { .steering =  606, .jump_target =  609, .stack_it =  611 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0677[] = {
+  { .steering =   68, .jump_target =  616, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0678[] = {
+  { .steering =   50, .jump_target =  615, .stack_it =  616 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0679[] = {
+  { .steering =   60, .jump_target =  617, .stack_it =  616 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0680[] = {
+  { .steering =   63, .jump_target =  618, .stack_it =  616 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0681[] = {
+  { .steering =   68, .jump_target =  619, .stack_it =  616 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0682[] = {
+  { .steering =   68, .jump_target =  608, .stack_it =  610 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0683[] = {
+  { .steering =   68, .jump_target =  608, .stack_it =  612 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0684[] = {
+  { .steering =   68, .jump_target =  608, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0685[] = {
+  { .steering =   68, .jump_target =  608, .stack_it =  614 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0686[] = {
+  { .steering =   73, .jump_target =  620, .stack_it =  616 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0687[] = {
+  { .steering =   68, .jump_target =  621, .stack_it =  615 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0688[] = {
+  { .steering =  604, .jump_target =  613, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0689[] = {
+  { .steering =   24, .jump_target =  624, .stack_it =  613 },
+  { .steering =   60, .jump_target =  624, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0690[] = {
+  { .steering =   24, .jump_target =  626, .stack_it =  613 },
+  { .steering =   68, .jump_target =  626, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0691[] = {
+  { .steering =   23, .jump_target =   23, .stack_it =  621 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0692[] = {
+  { .steering =   68, .jump_target =  621, .stack_it =  617 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0693[] = {
+  { .steering =   68, .jump_target =  621, .stack_it =  618 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0694[] = {
+  { .steering =   68, .jump_target =  621, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0695[] = {
+  { .steering =   68, .jump_target =  619, .stack_it =  623 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0696[] = {
+  { .steering =   29, .jump_target =   29, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0697[] = {
+  { .steering =   29, .jump_target =   29, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0698[] = {
+  { .steering =   55, .jump_target =   55, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0699[] = {
+  { .steering =   57, .jump_target =   57, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0700[] = {
+  { .steering =   58, .jump_target =   58, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0701[] = {
+  { .steering =  604, .jump_target =  613, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0702[] = {
+  { .steering =  605, .jump_target =  631, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0703[] = {
+  { .steering =   69, .jump_target =   69, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0704[] = {
+  { .steering =   69, .jump_target =   69, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0705[] = {
+  { .steering =  603, .jump_target =  632, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0706[] = {
+  { .steering =  603, .jump_target =  633, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0707[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0708[] = {
+  { .steering =   68, .jump_target =  619, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0709[] = {
+  { .steering =  134, .jump_target =  134, .stack_it =  618 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0710[] = {
+  { .steering =  135, .jump_target =  135, .stack_it =  620 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0711[] = {
+  { .steering =   23, .jump_target =  627, .stack_it =  635 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0712[] = {
+  { .steering =   10, .jump_target =  636, .stack_it =   10 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0713[] = {
+  { .steering =   23, .jump_target =  627, .stack_it =  628 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0714[] = {
+  { .steering =   25, .jump_target =  637, .stack_it =  628 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0715[] = {
+  { .steering =   60, .jump_target =  617, .stack_it =  623 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0716[] = {
+  { .steering =   68, .jump_target =  623, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0717[] = {
+  { .steering =   14, .jump_target =  638, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0718[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  629 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0719[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  630 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0720[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  642 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0721[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  643 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0722[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  644 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0723[] = {
+  { .steering =   21, .jump_target =  641, .stack_it =  645 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0724[] = {
+  { .steering =   63, .jump_target =  618, .stack_it =   63 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0725[] = {
+  { .steering =   60, .jump_target =  646, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0726[] = {
+  { .steering =   60, .jump_target =  617, .stack_it =  646 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0727[] = {
+  { .steering =   19, .jump_target =  622, .stack_it =  617 },
+  { .steering =   20, .jump_target =  622, .stack_it =  617 },
+  { .steering =   24, .jump_target =  622, .stack_it =  617 },
+  { .steering =   60, .jump_target =  622, .stack_it =  617 },
+  { .steering =   68, .jump_target =  622, .stack_it =  617 },
+  { .steering =   73, .jump_target =  622, .stack_it =  617 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0728[] = {
+  { .steering =   19, .jump_target =  622, .stack_it =  619 },
+  { .steering =   20, .jump_target =  622, .stack_it =  619 },
+  { .steering =   24, .jump_target =  622, .stack_it =  619 },
+  { .steering =   60, .jump_target =  622, .stack_it =  619 },
+  { .steering =   68, .jump_target =  622, .stack_it =  619 },
+  { .steering =   73, .jump_target =  622, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0729[] = {
+  { .steering =   24, .jump_target =  626, .stack_it =  610 },
+  { .steering =   68, .jump_target =  626, .stack_it =  610 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0730[] = {
+  { .steering =   17, .jump_target =  647, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0731[] = {
+  { .steering =   68, .jump_target =  623, .stack_it =   10 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0732[] = {
+  { .steering =   31, .jump_target =  650, .stack_it =  651 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0733[] = {
+  { .steering =   73, .jump_target =  652, .stack_it =   73 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0734[] = {
+  { .steering =   32, .jump_target =  653, .stack_it =  651 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0735[] = {
+  { .steering =   33, .jump_target =  654, .stack_it =  651 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0736[] = {
+  { .steering =   34, .jump_target =  655, .stack_it =  651 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0737[] = {
+  { .steering =   19, .jump_target =  622, .stack_it =  620 },
+  { .steering =   20, .jump_target =  622, .stack_it =  620 },
+  { .steering =   24, .jump_target =  622, .stack_it =  620 },
+  { .steering =   60, .jump_target =  622, .stack_it =  620 },
+  { .steering =   68, .jump_target =  622, .stack_it =  620 },
+  { .steering =   73, .jump_target =  622, .stack_it =  620 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0738[] = {
+  { .steering =   19, .jump_target =  622, .stack_it =  656 },
+  { .steering =   20, .jump_target =  622, .stack_it =  656 },
+  { .steering =   24, .jump_target =  622, .stack_it =  656 },
+  { .steering =   60, .jump_target =  622, .stack_it =  656 },
+  { .steering =   68, .jump_target =  622, .stack_it =  656 },
+  { .steering =   73, .jump_target =  622, .stack_it =  656 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0739[] = {
+  { .steering =  337, .jump_target =  337, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0740[] = {
+  { .steering =   68, .jump_target =  623, .stack_it =    1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0741[] = {
+  { .steering =  388, .jump_target =  388, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0742[] = {
+  { .steering =   50, .jump_target =  615, .stack_it =  670 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0743[] = {
+  { .steering =  485, .jump_target =  485, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0744[] = {
+  { .steering =  492, .jump_target =  492, .stack_it =  619 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0745[] = {
+  { .steering =  587, .jump_target =  587, .stack_it =  620 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0746[] = {
+  { .steering =   70, .jump_target =  674, .stack_it =  651 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0747[] = {
+  { .steering =  593, .jump_target =  593, .stack_it =  618 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0748[] = {
+  { .steering =   50, .jump_target =  615, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0749[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0750[] = {
+  { .steering =  606, .jump_target =  676, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0751[] = {
+  { .steering =  606, .jump_target =  676, .stack_it =   63 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0752[] = {
+  { .steering =  606, .jump_target =  676, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0753[] = {
+  { .steering =  606, .jump_target =  676, .stack_it =   73 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0754[] = {
+  { .steering =    5, .jump_target =    5, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0755[] = {
+  { .steering =    6, .jump_target =    6, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0756[] = {
+  { .steering =    8, .jump_target =    8, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0757[] = {
+  { .steering =   12, .jump_target =   12, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0758[] = {
+  { .steering =   50, .jump_target =  678, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0759[] = {
+  { .steering =   60, .jump_target =  679, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0760[] = {
+  { .steering =   63, .jump_target =  680, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0761[] = {
+  { .steering =   68, .jump_target =  681, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0762[] = {
+  { .steering =   68, .jump_target =  677, .stack_it =  610 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0763[] = {
+  { .steering =   68, .jump_target =  677, .stack_it =  612 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0764[] = {
+  { .steering =   68, .jump_target =  677, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0765[] = {
+  { .steering =   68, .jump_target =  677, .stack_it =  614 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0766[] = {
+  { .steering =   73, .jump_target =  686, .stack_it =  608 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0767[] = {
+  { .steering =   18, .jump_target =   18, .stack_it =  687 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0768[] = {
+  { .steering =   24, .jump_target =  689, .stack_it =  625 },
+  { .steering =   60, .jump_target =  689, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0769[] = {
+  { .steering =   24, .jump_target =  690, .stack_it =  625 },
+  { .steering =   68, .jump_target =  690, .stack_it =  625 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0770[] = {
+  { .steering =   23, .jump_target =   23, .stack_it =  692 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0771[] = {
+  { .steering =   23, .jump_target =   23, .stack_it =  693 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0772[] = {
+  { .steering =   23, .jump_target =   23, .stack_it =  694 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0773[] = {
+  { .steering =   68, .jump_target =  695, .stack_it =   11 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0774[] = {
+  { .steering =   35, .jump_target =   35, .stack_it =  688 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0775[] = {
+  { .steering =   36, .jump_target =   36, .stack_it =  688 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0776[] = {
+  { .steering =   60, .jump_target =   60, .stack_it =  701 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0777[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  701 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0778[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  688 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0779[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  702 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0780[] = {
+  { .steering =   68, .jump_target =   68, .stack_it =  675 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0781[] = {
+  { .steering =   74, .jump_target =   74, .stack_it =  705 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0782[] = {
+  { .steering =   75, .jump_target =   75, .stack_it =  706 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0783[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =  682 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0784[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =  683 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0785[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =  684 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0786[] = {
+  { .steering =  606, .jump_target =  606, .stack_it =  685 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0787[] = {
+  { .steering =   80, .jump_target =   80, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0788[] = {
+  { .steering =   83, .jump_target =   83, .stack_it =  695 },
+  { ..steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0789[] = {
+  { .steering =   85, .jump_target =   85, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0790[] = {
+  { .steering =   86, .jump_target =   86, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0791[] = {
+  { .steering =   87, .jump_target =   87, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0792[] = {
+  { .steering =   88, .jump_target =   88, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0793[] = {
+  { .steering =   91, .jump_target =   91, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0794[] = {
+  { .steering =   92, .jump_target =   92, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0795[] = {
+  { .steering =   93, .jump_target =   93, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0796[] = {
+  { .steering =   97, .jump_target =   97, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0797[] = {
+  { .steering =   99, .jump_target =   99, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0798[] = {
+  { .steering =  102, .jump_target =  102, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0799[] = {
+  { .steering =  108, .jump_target =  108, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0800[] = {
+  { .steering =  109, .jump_target =  109, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0801[] = {
+  { .steering =  110, .jump_target =  110, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0802[] = {
+  { .steering =  114, .jump_target =  114, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0803[] = {
+  { .steering =  115, .jump_target =  115, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0804[] = {
+  { .steering =  116, .jump_target =  116, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0805[] = {
+  { .steering =  120, .jump_target =  120, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0806[] = {
+  { .steering =  121, .jump_target =  121, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0807[] = {
+  { .steering =  122, .jump_target =  122, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0808[] = {
+  { .steering =  126, .jump_target =  126, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0809[] = {
+  { .steering =  127, .jump_target =  127, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0810[] = {
+  { .steering =  128, .jump_target =  128, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0811[] = {
+  { .steering =  136, .jump_target =  136, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0812[] = {
+  { .steering =  138, .jump_target =  138, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0813[] = {
+  { .steering =  140, .jump_target =  140, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0814[] = {
+  { .steering =  141, .jump_target =  141, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0815[] = {
+  { .steering =  145, .jump_target =  145, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0816[] = {
+  { .steering =  147, .jump_target =  147, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0817[] = {
+  { .steering =  150, .jump_target =  150, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0818[] = {
+  { .steering =  152, .jump_target =  152, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0819[] = {
+  { .steering =  157, .jump_target =  157, .stack_it =  711 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0820[] = {
+  { .steering =  158, .jump_target =  158, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0821[] = {
+  { .steering =  159, .jump_target =  159, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0822[] = {
+  { .steering =  160, .jump_target =  160, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0823[] = {
+  { .steering =   68, .jump_target =  695, .stack_it =  712 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0824[] = {
+  { .steering =  162, .jump_target =  162, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0825[] = {
+  { .steering =  163, .jump_target =  163, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0826[] = {
+  { .steering =  164, .jump_target =  164, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0827[] = {
+  { .steering =  165, .jump_target =  165, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0828[] = {
+  { .steering =  166, .jump_target =  166, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0829[] = {
+  { .steering =  167, .jump_target =  167, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0830[] = {
+  { .steering =   23, .jump_target =  713, .stack_it =  604 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0831[] = {
+  { .steering =   25, .jump_target =  714, .stack_it =  613 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0832[] = {
+  { .steering =  171, .jump_target =  171, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0833[] = {
+  { .steering =   60, .jump_target =  715, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0834[] = {
+  { .steering =   14, .jump_target =  717, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0835[] = {
+  { .steering =   21, .jump_target =  718, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0836[] = {
+  { .steering =   21, .jump_target =  719, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0837[] = {
+  { .steering =   21, .jump_target =  720, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0838[] = {
+  { .steering =   21, .jump_target =  721, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0839[] = {
+  { .steering =   21, .jump_target =  722, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0840[] = {
+  { .steering =   21, .jump_target =  723, .stack_it =   50 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0841[] = {
+  { .steering =  188, .jump_target =  188, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0842[] = {
+  { .steering =  189, .jump_target =  189, .stack_it =  724 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0843[] = {
+  { .steering =  191, .jump_target =  191, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0844[] = {
+  { .steering =  192, .jump_target =  192, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0845[] = {
+  { .steering =  193, .jump_target =  193, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0846[] = {
+  { .steering =  194, .jump_target =  194, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0847[] = {
+  { .steering =  195, .jump_target =  195, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0848[] = {
+  { .steering =  196, .jump_target =  196, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0849[] = {
+  { .steering =  197, .jump_target =  197, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0850[] = {
+  { .steering =  198, .jump_target =  198, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0851[] = {
+  { .steering =  201, .jump_target =  201, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0852[] = {
+  { .steering =   60, .jump_target =  726, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0853[] = {
+  { .steering =  203, .jump_target =  203, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0854[] = {
+  { .steering =  205, .jump_target =  205, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0855[] = {
+  { .steering =  206, .jump_target =  206, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0856[] = {
+  { .steering =  214, .jump_target =  214, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0857[] = {
+  { .steering =  215, .jump_target =  215, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0858[] = {
+  { .steering =  216, .jump_target =  216, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0859[] = {
+  { .steering =  217, .jump_target =  217, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0860[] = {
+  { .steering =   20, .jump_target =  727, .stack_it =  725 },
+  { .steering =   24, .jump_target =  727, .stack_it =  725 },
+  { .steering =   60, .jump_target =  727, .stack_it =  725 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0861[] = {
+  { .steering =   20, .jump_target =  728, .stack_it =  716 },
+  { .steering =   24, .jump_target =  728, .stack_it =  716 },
+  { .steering =   68, .jump_target =  728, .stack_it =  716 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0862[] = {
+  { .steering =  230, .jump_target =  230, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0863[] = {
+  { .steering =  231, .jump_target =  231, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0864[] = {
+  { .steering =  232, .jump_target =  232, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0865[] = {
+  { .steering =   17, .jump_target =  730, .stack_it =  603 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0866[] = {
+  { .steering =   20, .jump_target =  728, .stack_it =  731 },
+  { .steering =   24, .jump_target =  728, .stack_it =  731 },
+  { .steering =   68, .jump_target =  728, .stack_it =  731 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0867[] = {
+  { .steering =   68, .jump_target =  695, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0868[] = {
+  { .steering =   20, .jump_target =  727, .stack_it =  716 },
+  { .steering =   24, .jump_target =  727, .stack_it =  716 },
+  { .steering =   60, .jump_target =  727, .stack_it =  716 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0869[] = {
+  { .steering =   31, .jump_target =  732, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0870[] = {
+  { .steering =   32, .jump_target =  734, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0871[] = {
+  { .steering =   33, .jump_target =  735, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0872[] = {
+  { .steering =   34, .jump_target =  736, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0873[] = {
+  { .steering =   20, .jump_target =  737, .stack_it =   70 },
+  { .steering =   24, .jump_target =  737, .stack_it =   70 },
+  { ..steering =   73, .jump_target =  737, .stack_it =   70 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0874[] = {
+  { .steering =   20, .jump_target =  728, .stack_it =   68 },
+  { .steering =   24, .jump_target =  728, .stack_it =   68 },
+  { .steering =   68, .jump_target =  728, .stack_it =   68 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0875[] = {
+  { .steering =   20, .jump_target =  728, .stack_it =   60 },
+  { .steering =   24, .jump_target =  728, .stack_it =   60 },
+  { .steering =   68, .jump_target =  728, .stack_it =   60 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0876[] = {
+  { .steering =  303, .jump_target =  303, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0877[] = {
+  { .steering =  304, .jump_target =  304, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0878[] = {
+  { .steering =  305, .jump_target =  305, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0879[] = {
+  { .steering =  306, .jump_target =  306, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0880[] = {
+  { .steering =   19, .jump_target =  738, .stack_it =  614 },
+  { .steering =   20, .jump_target =  738, .stack_it =  614 },
+  { .steering =   24, .jump_target =  738, .stack_it =  614 },
+  { .steering =   73, .jump_target =  738, .stack_it =  614 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0881[] = {
+  { .steering =  322, .jump_target =  322, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0882[] = {
+  { .steering =  323, .jump_target =  323, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0883[] = {
+  { .steering =  324, .jump_target =  324, .stack_it =  729 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0884[] = {
+  { .steering =  325, .jump_target =  325, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0885[] = {
+  { .steering =  326, .jump_target =  326, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0886[] = {
+  { .steering =  327, .jump_target =  327, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0887[] = {
+  { .steering =  328, .jump_target =  328, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0888[] = {
+  { .steering =  329, .jump_target =  329, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0889[] = {
+  { .steering =  330, .jump_target =  330, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0890[] = {
+  { .steering =  331, .jump_target =  331, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0891[] = {
+  { .steering =  332, .jump_target =  332, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0892[] = {
+  { .steering =  333, .jump_target =  333, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0893[] = {
+  { .steering =  334, .jump_target =  334, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0894[] = {
+  { .steering =  335, .jump_target =  335, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0895[] = {
+  { .steering =  336, .jump_target =  336, .stack_it =  690 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0896[] = {
+  { .steering =  347, .jump_target =  347, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0897[] = {
+  { .steering =  356, .jump_target =  356, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0898[] = {
+  { .steering =  360, .jump_target =  360, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0899[] = {
+  { .steering =  363, .jump_target =  363, .stack_it =  740 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0900[] = {
+  { .steering =  366, .jump_target =  366, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0901[] = {
+  { .steering =  371, .jump_target =  371, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0902[] = {
+  { .steering =  372, .jump_target =  372, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0903[] = {
+  { .steering =  373, .jump_target =  373, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0904[] = {
+  { .steering =  375, .jump_target =  375, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0905[] = {
+  { .steering =  377, .jump_target =  377, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0906[] = {
+  { .steering =  379, .jump_target =  379, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0907[] = {
+  { .steering =  381, .jump_target =  381, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0908[] = {
+  { .steering =  383, .jump_target =  383, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0909[] = {
+  { .steering =  384, .jump_target =  384, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0910[] = {
+  { .steering =  385, .jump_target =  385, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0911[] = {
+  { .steering =  387, .jump_target =  387, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0912[] = {
+  { .steering =  389, .jump_target =  389, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0913[] = {
+  { .steering =  392, .jump_target =  392, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0914[] = {
+  { .steering =  395, .jump_target =  395, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0915[] = {
+  { .steering =  397, .jump_target =  397, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0916[] = {
+  { .steering =  399, .jump_target =  399, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0917[] = {
+  { .steering =  402, .jump_target =  402, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0918[] = {
+  { .steering =  405, .jump_target =  405, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0919[] = {
+  { .steering =  407, .jump_target =  407, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0920[] = {
+  { .steering =   50, .jump_target =  742, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0921[] = {
+  { .steering =  431, .jump_target =  431, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0922[] = {
+  { .steering =  435, .jump_target =  435, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0923[] = {
+  { .steering =  438, .jump_target =  438, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0924[] = {
+  { .steering =  439, .jump_target =  439, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0925[] = {
+  { .steering =  442, .jump_target =  442, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0926[] = {
+  { .steering =  443, .jump_target =  443, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0927[] = {
+  { .steering =  444, .jump_target =  444, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0928[] = {
+  { .steering =  446, .jump_target =  446, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0929[] = {
+  { .steering =  448, .jump_target =  448, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0930[] = {
+  { .steering =  450, .jump_target =  450, .stack_it =  715 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0931[] = {
+  { .steering =  452, .jump_target =  452, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0932[] = {
+  { .steering =  454, .jump_target =  454, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0933[] = {
+  { .steering =  455, .jump_target =  455, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0934[] = {
+  { .steering =  457, .jump_target =  457, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0935[] = {
+  { .steering =  461, .jump_target =  461, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0936[] = {
+  { .steering =  463, .jump_target =  463, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0937[] = {
+  { .steering =  465, .jump_target =  465, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0938[] = {
+  { .steering =  466, .jump_target =  466, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0939[] = {
+  { .steering =  467, .jump_target =  467, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0940[] = {
+  { .steering =  468, .jump_target =  468, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0941[] = {
+  { .steering =  469, .jump_target =  469, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0942[] = {
+  { .steering =  471, .jump_target =  471, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0943[] = {
+  { .steering =  473, .jump_target =  473, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0944[] = {
+  { .steering =  474, .jump_target =  474, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0945[] = {
+  { .steering =  475, .jump_target =  475, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0946[] = {
+  { .steering =  476, .jump_target =  476, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0947[] = {
+  { .steering =  478, .jump_target =  478, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0948[] = {
+  { .steering =  479, .jump_target =  479, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0949[] = {
+  { .steering =  481, .jump_target =  481, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0950[] = {
+  { .steering =  483, .jump_target =  483, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0951[] = {
+  { .steering =  484, .jump_target =  484, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0952[] = {
+  { .steering =  488, .jump_target =  488, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0953[] = {
+  { .steering =  489, .jump_target =  489, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0954[] = {
+  { .steering =  490, .jump_target =  490, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0955[] = {
+  { .steering =  491, .jump_target =  491, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0956[] = {
+  { .steering =  493, .jump_target =  493, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0957[] = {
+  { .steering =  494, .jump_target =  494, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0958[] = {
+  { .steering =  495, .jump_target =  495, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0959[] = {
+  { .steering =  497, .jump_target =  497, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0960[] = {
+  { .steering =  498, .jump_target =  498, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0961[] = {
+  { .steering =  499, .jump_target =  499, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0962[] = {
+  { .steering =  503, .jump_target =  503, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0963[] = {
+  { .steering =  505, .jump_target =  505, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0964[] = {
+  { .steering =  508, .jump_target =  508, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0965[] = {
+  { .steering =  514, .jump_target =  514, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0966[] = {
+  { .steering =  515, .jump_target =  515, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0967[] = {
+  { .steering =  516, .jump_target =  516, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0968[] = {
+  { .steering =  520, .jump_target =  520, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0969[] = {
+  { .steering =  521, .jump_target =  521, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0970[] = {
+  { .steering =  522, .jump_target =  522, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0971[] = {
+  { .steering =  526, .jump_target =  526, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0972[] = {
+  { .steering =  527, .jump_target =  527, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0973[] = {
+  { .steering =  528, .jump_target =  528, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0974[] = {
+  { .steering =  532, .jump_target =  532, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0975[] = {
+  { .steering =  533, .jump_target =  533, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0976[] = {
+  { .steering =  534, .jump_target =  534, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0977[] = {
+  { .steering =  536, .jump_target =  536, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0978[] = {
+  { .steering =  538, .jump_target =  538, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0979[] = {
+  { .steering =  545, .jump_target =  545, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0980[] = {
+  { .steering =  546, .jump_target =  546, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0981[] = {
+  { .steering =  547, .jump_target =  547, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0982[] = {
+  { .steering =  548, .jump_target =  548, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0983[] = {
+  { .steering =  549, .jump_target =  549, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0984[] = {
+  { .steering =  550, .jump_target =  550, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0985[] = {
+  { .steering =  551, .jump_target =  551, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0986[] = {
+  { .steering =  552, .jump_target =  552, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0987[] = {
+  { .steering =  555, .jump_target =  555, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0988[] = {
+  { .steering =  556, .jump_target =  556, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0989[] = {
+  { .steering =  557, .jump_target =  557, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0990[] = {
+  { .steering =  558, .jump_target =  558, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0991[] = {
+  { .steering =  559, .jump_target =  559, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0992[] = {
+  { .steering =  560, .jump_target =  560, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0993[] = {
+  { .steering =  561, .jump_target =  561, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0994[] = {
+  { .steering =  562, .jump_target =  562, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0995[] = {
+  { .steering =  563, .jump_target =  563, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0996[] = {
+  { .steering =  564, .jump_target =  564, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0997[] = {
+  { .steering =  565, .jump_target =  565, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0998[] = {
+  { .steering =  566, .jump_target =  566, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_0999[] = {
+  { .steering =  571, .jump_target =  571, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1000[] = {
+  { .steering =  572, .jump_target =  572, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1001[] = {
+  { .steering =  573, .jump_target =  573, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1002[] = {
+  { .steering =  574, .jump_target =  574, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1003[] = {
+  { .steering =  575, .jump_target =  575, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1004[] = {
+  { .steering =  576, .jump_target =  576, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1005[] = {
+  { .steering =  577, .jump_target =  577, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1006[] = {
+  { .steering =   70, .jump_target =  746, .stack_it =  733 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1007[] = {
+  { .steering =  595, .jump_target =  595, .stack_it =  748 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1008[] = {
+  { .steering =  596, .jump_target =  596, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1009[] = {
+  { .steering =  598, .jump_target =  598, .stack_it =  695 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1010[] = {
+  { .steering =  600, .jump_target =  600, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1011[] = {
+  { .steering =  601, .jump_target =  601, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1012[] = {
+  { .steering =  602, .jump_target =  602, .stack_it =  708 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1013[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =  750 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1014[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =  751 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1015[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =  752 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1016[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =  753 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1017[] = {
+  { .steering =    5, .jump_target =    5, .stack_it =  750 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1018[] = {
+  { .steering =    5, .jump_target =    5, .stack_it =  751 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1019[] = {
+  { .steering =    5, .jump_target =    5, .stack_it =  752 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1020[] = {
+  { .steering =    5, .jump_target =    5, .stack_it =  753 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1021[] = {
+  { .steering =    6, .jump_target =    6, .stack_it =  750 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1022[] = {
+  { .steering =    6, .jump_target =    6, .stack_it =  751 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1023[] = {
+  { .steering =    6, .jump_target =    6, .stack_it =  752 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1024[] = {
+  { .steering =    6, .jump_target =    6, .stack_it =  753 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1025[] = {
+  { .steering =    8, .jump_target =    8, .stack_it =  750 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1026[] = {
+  { .steering =    8, .jump_target =    8, .stack_it =  751 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1027[] = {
+  { .steering =    8, .jump_target =    8, .stack_it =  752 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1028[] = {
+  { .steering =    8, .jump_target =    8, .stack_it =  753 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1029[] = {
+  { .steering =   12, .jump_target =   12, .stack_it =  750 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1030[] = {
+  { .steering =   12, .jump_target =   12, .stack_it =  751 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1031[] = {
+  { .steering =   12, .jump_target =   12, .stack_it =  752 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1032[] = {
+  { .steering =   12, .jump_target =   12, .stack_it =  753 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1033[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  758 },
+  { .steering =   50, .jump_target =   15, .stack_it =  758 },
+  { .steering =   60, .jump_target =   15, .stack_it =  758 },
+  { .steering =   63, .jump_target =   15, .stack_it =  758 },
+  { .steering =   68, .jump_target =   15, .stack_it =  758 },
+  { .steering =   73, .jump_target =   15, .stack_it =  758 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1034[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  759 },
+  { .steering =   50, .jump_target =   15, .stack_it =  759 },
+  { .steering =   60, .jump_target =   15, .stack_it =  759 },
+  { .steering =   63, .jump_target =   15, .stack_it =  759 },
+  { .steering =   68, .jump_target =   15, .stack_it =  759 },
+  { .steering =   73, .jump_target =   15, .stack_it =  759 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1035[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  760 },
+  { .steering =   50, .jump_target =   15, .stack_it =  760 },
+  { .steering =   60, .jump_target =   15, .stack_it =  760 },
+  { .steering =   63, .jump_target =   15, .stack_it =  760 },
+  { .steering =   68, .jump_target =   15, .stack_it =  760 },
+  { .steering =   73, .jump_target =   15, .stack_it =  760 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1036[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  761 },
+  { .steering =   50, .jump_target =   15, .stack_it =  761 },
+  { .steering =   60, .jump_target =   15, .stack_it =  761 },
+  { .steering =   63, .jump_target =   15, .stack_it =  761 },
+  { .steering =   68, .jump_target =   15, .stack_it =  761 },
+  { .steering =   73, .jump_target =   15, .stack_it =  761 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1037[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  762 },
+  { .steering =   50, .jump_target =   15, .stack_it =  762 },
+  { .steering =   60, .jump_target =   15, .stack_it =  762 },
+  { .steering =   63, .jump_target =   15, .stack_it =  762 },
+  { .steering =   68, .jump_target =   15, .stack_it =  762 },
+  { .steering =   73, .jump_target =   15, .stack_it =  762 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1038[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  763 },
+  { .steering =   50, .jump_target =   15, .stack_it =  763 },
+  { .steering =   60, .jump_target =   15, .stack_it =  763 },
+  { .steering =   63, .jump_target =   15, .stack_it =  763 },
+  { .steering =   68, .jump_target =   15, .stack_it =  763 },
+  { .steering =   73, .jump_target =   15, .stack_it =  763 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1039[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  764 },
+  { .steering =   50, .jump_target =   15, .stack_it =  764 },
+  { .steering =   60, .jump_target =   15, .stack_it =  764 },
+  { .steering =   63, .jump_target =   15, .stack_it =  764 },
+  { .steering =   68, .jump_target =   15, .stack_it =  764 },
+  { .steering =   73, .jump_target =   15, .stack_it =  764 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1040[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  765 },
+  { .steering =   50, .jump_target =   15, .stack_it =  765 },
+  { .steering =   60, .jump_target =   15, .stack_it =  765 },
+  { .steering =   63, .jump_target =   15, .stack_it =  765 },
+  { .steering =   68, .jump_target =   15, .stack_it =  765 },
+  { .steering =   73, .jump_target =   15, .stack_it =  765 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1041[] = {
+  { .steering =   15, .jump_target =   15, .stack_it =  766 },
+  { .steering =   50, .jump_target =   15, .stack_it =  766 },
+  { .steering =   60, .jump_target =   15, .stack_it =  766 },
+  { .steering =   63, .jump_target =   15, .stack_it =  766 },
+  { .steering =   68, .jump_target =   15, .stack_it =  766 },
+  { .steering =   73, .jump_target =   15, .stack_it =  766 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1042[] = {
+  { .steering =   19, .jump_target =   20, .stack_it =  768 },
+  { .steering =   20, .jump_target =   20, .stack_it =  768 },
+  { .steering =   24, .jump_target =   20, .stack_it =  768 },
+  { .steering =   60, .jump_target =   20, .stack_it =  768 },
+  { .steering =   68, .jump_target =   20, .stack_it =  768 },
+  { .steering =   73, .jump_target =   20, .stack_it =  768 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1043[] = {
+  { .steering =   19, .jump_target =   20, .stack_it =  769 },
+  { .steering =   20, .jump_target =   20, .stack_it =  769 },
+  { .steering =   24, .jump_target =   20, .stack_it =  769 },
+  { .steering =   60, .jump_target =   20, .stack_it =  769 },
+  { .steering =   68, .jump_target =   20, .stack_it =  769 },
+  { .steering =   73, .jump_target =   20, .stack_it =  769 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1044[] = {
+  { .steering =   27, .jump_target =   27, .stack_it =  773 },
+  { .steering =   68, .jump_target =   27, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1045[] = {
+  { .steering =   81, .jump_target =   81, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1046[] = {
+  { .steering =   94, .jump_target =   94, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1047[] = {
+  { .steering =  137, .jump_target =  137, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1048[] = {
+  { .steering =  139, .jump_target =  139, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1049[] = {
+  { .steering =  161, .jump_target =  161, .stack_it =  823 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1050[] = {
+  { .steering =  168, .jump_target =  168, .stack_it =  830 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1051[] = {
+  { .steering =  169, .jump_target =  169, .stack_it =  831 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1052[] = {
+  { .steering =  170, .jump_target =  170, .stack_it =  831 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1053[] = {
+  { .steering =  172, .jump_target =  172, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1054[] = {
+  { .steering =  173, .jump_target =  173, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1055[] = {
+  { .steering =  174, .jump_target =  174, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1056[] = {
+  { .steering =  175, .jump_target =  175, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1057[] = {
+  { .steering =  176, .jump_target =  176, .stack_it =  834 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1058[] = {
+  { .steering =  179, .jump_target =  179, .stack_it =  834 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1059[] = {
+  { .steering =  180, .jump_target =  180, .stack_it =  834 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1060[] = {
+  { .steering =  181, .jump_target =  181, .stack_it =  834 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1061[] = {
+  { .steering =  182, .jump_target =  182, .stack_it =  835 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1062[] = {
+  { .steering =  183, .jump_target =  183, .stack_it =  836 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1063[] = {
+  { .steering =  184, .jump_target =  184, .stack_it =  837 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1064[] = {
+  { .steering =  185, .jump_target =  185, .stack_it =  838 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1065[] = {
+  { .steering =  186, .jump_target =  186, .stack_it =  839 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1066[] = {
+  { .steering =  187, .jump_target =  187, .stack_it =  840 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1067[] = {
+  { .steering =  190, .jump_target =  190, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1068[] = {
+  { .steering =  202, .jump_target =  202, .stack_it =  852 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1069[] = {
+  { .steering =  204, .jump_target =  204, .stack_it =  852 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1070[] = {
+  { .steering =  207, .jump_target =  207, .stack_it =  852 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1071[] = {
+  { .steering =  208, .jump_target =  208, .stack_it =  852 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1072[] = {
+  { .steering =  212, .jump_target =  212, .stack_it =  823 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1073[] = {
+  { .steering =  213, .jump_target =  213, .stack_it =  823 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1074[] = {
+  { .steering =  219, .jump_target =  219, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1075[] = {
+  { .steering =  220, .jump_target =  220, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1076[] = {
+  { .steering =  221, .jump_target =  221, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1077[] = {
+  { .steering =  224, .jump_target =  224, .stack_it =  861 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1078[] = {
+  { .steering =  226, .jump_target =  226, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1079[] = {
+  { .steering =  227, .jump_target =  227, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1080[] = {
+  { .steering =  229, .jump_target =  229, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1081[] = {
+  { .steering =  233, .jump_target =  233, .stack_it =  865 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1082[] = {
+  { .steering =  236, .jump_target =  236, .stack_it =  865 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1083[] = {
+  { .steering =  239, .jump_target =  239, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1084[] = {
+  { .steering =  240, .jump_target =  240, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1085[] = {
+  { .steering =  258, .jump_target =  258, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1086[] = {
+  { .steering =  259, .jump_target =  259, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1087[] = {
+  { .steering =  260, .jump_target =  260, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1088[] = {
+  { .steering =  261, .jump_target =  261, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1089[] = {
+  { .steering =  262, .jump_target =  262, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1090[] = {
+  { .steering =  263, .jump_target =  263, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1091[] = {
+  { .steering =  264, .jump_target =  264, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1092[] = {
+  { .steering =  265, .jump_target =  265, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1093[] = {
+  { .steering =  266, .jump_target =  266, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1094[] = {
+  { .steering =  267, .jump_target =  267, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1095[] = {
+  { .steering =  268, .jump_target =  268, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1096[] = {
+  { .steering =  269, .jump_target =  269, .stack_it =  866 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1097[] = {
+  { .steering =  270, .jump_target =  270, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1098[] = {
+  { .steering =  271, .jump_target =  271, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1099[] = {
+  { .steering =  272, .jump_target =  272, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1100[] = {
+  { .steering =  273, .jump_target =  273, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1101[] = {
+  { .steering =  274, .jump_target =  274, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1102[] = {
+  { .steering =  275, .jump_target =  275, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1103[] = {
+  { .steering =  276, .jump_target =  276, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1104[] = {
+  { .steering =  277, .jump_target =  277, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1105[] = {
+  { .steering =  278, .jump_target =  278, .stack_it =  868 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1106[] = {
+  { .steering =  279, .jump_target =  279, .stack_it =  868 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1107[] = {
+  { .steering =  280, .jump_target =  280, .stack_it =  869 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1108[] = {
+  { .steering =  281, .jump_target =  281, .stack_it =  870 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1109[] = {
+  { .steering =  282, .jump_target =  282, .stack_it =  871 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1110[] = {
+  { .steering =  283, .jump_target =  283, .stack_it =  872 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1111[] = {
+  { .steering =  284, .jump_target =  284, .stack_it =  868 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1112[] = {
+  { .steering =  297, .jump_target =  297, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1113[] = {
+  { .steering =  298, .jump_target =  298, .stack_it =  873 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1114[] = {
+  { .steering =  299, .jump_target =  299, .stack_it =  874 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1115[] = {
+  { .steering =  300, .jump_target =  300, .stack_it =  875 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1116[] = {
+  { .steering =  301, .jump_target =  301, .stack_it =  874 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1117[] = {
+  { .steering =  302, .jump_target =  302, .stack_it =  875 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1118[] = {
+  { .steering =  307, .jump_target =  307, .stack_it =  874 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1119[] = {
+  { .steering =  308, .jump_target =  308, .stack_it =  874 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1120[] = {
+  { .steering =  310, .jump_target =  310, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1121[] = {
+  { .steering =  311, .jump_target =  311, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1122[] = {
+  { .steering =  312, .jump_target =  312, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1123[] = {
+  { .steering =  315, .jump_target =  315, .stack_it =  861 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1124[] = {
+  { .steering =  317, .jump_target =  317, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1125[] = {
+  { .steering =  318, .jump_target =  318, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1126[] = {
+  { .steering =  320, .jump_target =  320, .stack_it =  860 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1127[] = {
+  { .steering =  321, .jump_target =  321, .stack_it =  880 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1128[] = {
+  { .steering =  344, .jump_target =  344, .stack_it =  823 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1129[] = {
+  { .steering =  374, .jump_target =  374, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1130[] = {
+  { .steering =  376, .jump_target =  376, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1131[] = {
+  { .steering =  378, .jump_target =  378, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1132[] = {
+  { .steering =  380, .jump_target =  380, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1133[] = {
+  { .steering =  382, .jump_target =  382, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1134[] = {
+  { .steering =  386, .jump_target =  386, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1135[] = {
+  { .steering =  390, .jump_target =  390, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1136[] = {
+  { .steering =  393, .jump_target =  393, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1137[] = {
+  { .steering =  400, .jump_target =  400, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1138[] = {
+  { .steering =  403, .jump_target =  403, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1139[] = {
+  { .steering =  409, .jump_target =  409, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1140[] = {
+  { .steering =  410, .jump_target =  410, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1141[] = {
+  { .steering =  411, .jump_target =  411, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1142[] = {
+  { .steering =  412, .jump_target =  412, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1143[] = {
+  { .steering =  413, .jump_target =  413, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1144[] = {
+  { .steering =  414, .jump_target =  414, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1145[] = {
+  { .steering =  415, .jump_target =  415, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1146[] = {
+  { .steering =  416, .jump_target =  416, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1147[] = {
+  { .steering =  417, .jump_target =  417, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1148[] = {
+  { .steering =  418, .jump_target =  418, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1149[] = {
+  { .steering =  419, .jump_target =  419, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1150[] = {
+  { .steering =  420, .jump_target =  420, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1151[] = {
+  { .steering =  421, .jump_target =  421, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1152[] = {
+  { .steering =  422, .jump_target =  422, .stack_it =  920 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1153[] = {
+  { .steering =  423, .jump_target =  423, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1154[] = {
+  { .steering =  425, .jump_target =  425, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1155[] = {
+  { .steering =  426, .jump_target =  426, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1156[] = {
+  { .steering =  427, .jump_target =  427, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1157[] = {
+  { .steering =  428, .jump_target =  428, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1158[] = {
+  { .steering =  429, .jump_target =  429, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1159[] = {
+  { .steering =  430, .jump_target =  430, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1160[] = {
+  { .steering =  432, .jump_target =  432, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1161[] = {
+  { .steering =  433, .jump_target =  433, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1162[] = {
+  { .steering =  434, .jump_target =  434, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1163[] = {
+  { .steering =  436, .jump_target =  436, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1164[] = {
+  { .steering =  437, .jump_target =  437, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1165[] = {
+  { .steering =  440, .jump_target =  440, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1166[] = {
+  { .steering =  441, .jump_target =  441, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1167[] = {
+  { .steering =  445, .jump_target =  445, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1168[] = {
+  { .steering =  447, .jump_target =  447, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1169[] = {
+  { .steering =  449, .jump_target =  449, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1170[] = {
+  { .steering =  451, .jump_target =  451, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1171[] = {
+  { .steering =  453, .jump_target =  453, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1172[] = {
+  { .steering =  456, .jump_target =  456, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1173[] = {
+  { .steering =  458, .jump_target =  458, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1174[] = {
+  { .steering =  459, .jump_target =  459, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1175[] = {
+  { .steering =  460, .jump_target =  460, .stack_it =  833 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1176[] = {
+  { .steering =  462, .jump_target =  462, .stack_it =  852 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1177[] = {
+  { .steering =  464, .jump_target =  464, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1178[] = {
+  { .steering =  472, .jump_target =  472, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1179[] = {
+  { .steering =  477, .jump_target =  477, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1180[] = {
+  { .steering =  480, .jump_target =  480, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1181[] = {
+  { .steering =  482, .jump_target =  482, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1182[] = {
+  { .steering =  500, .jump_target =  500, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1183[] = {
+  { .steering =  537, .jump_target =  537, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1184[] = {
+  { .steering =  539, .jump_target =  539, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1185[] = {
+  { .steering =  568, .jump_target =  568, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1186[] = {
+  { .steering =  569, .jump_target =  569, .stack_it =  867 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1187[] = {
+  { .steering =  589, .jump_target =  589, .stack_it = 1006 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1188[] = {
+  { .steering =  590, .jump_target =  590, .stack_it = 1006 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1189[] = {
+  { .steering =  591, .jump_target =  591, .stack_it = 1006 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1190[] = {
+  { .steering =  592, .jump_target =  592, .stack_it = 1006 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1191[] = {
+  { .steering =  597, .jump_target =  597, .stack_it =  773 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1192[] = {
+  { .steering =    9, .jump_target =    9, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1193[] = {
+  { .steering =   29, .jump_target =  696, .stack_it =   -1 },
+  { .steering =   55, .jump_target =  698, .stack_it =   -1 },
+  { .steering =   69, .jump_target =  703, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1194[] = {
+  { .steering =   56, .jump_target =   56, .stack_it =   -1 },
+  { .steering =   69, .jump_target =   69, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1195[] = {
+  { .steering =   29, .jump_target =  697, .stack_it =   -1 },
+  { .steering =   57, .jump_target =  699, .stack_it =   -1 },
+  { .steering =   58, .jump_target =  700, .stack_it =   -1 },
+  { .steering =   69, .jump_target =  704, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1196[] = {
+  { .steering =   29, .jump_target =   29, .stack_it =   -1 },
+  { .steering =   59, .jump_target =   59, .stack_it =   -1 },
+  { .steering =   69, .jump_target =   69, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1197[] = {
+  { .steering =   15, .jump_target = 1036, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  772, .stack_it = 1199 },
+  { .steering =   68, .jump_target =  619, .stack_it = 1198 },
+  { .steering =   68, .jump_target = 1036, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1198[] = {
+  { .steering =    3, .jump_target =  749, .stack_it =   -1 },
+  { .steering =    6, .jump_target =  755, .stack_it =   -1 },
+  { .steering =   12, .jump_target =  757, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1199[] = {
+  { .steering =    5, .jump_target =  754, .stack_it =   -1 },
+  { .steering =    8, .jump_target =  756, .stack_it =   -1 },
+  { .steering =  606, .jump_target =  707, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1200[] = {
+  { .steering =   15, .jump_target = 1034, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  770, .stack_it = 1199 },
+  { .steering =   60, .jump_target =  617, .stack_it = 1198 },
+  { .steering =   60, .jump_target = 1034, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1201[] = {
+  { .steering =   15, .jump_target = 1035, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  771, .stack_it = 1199 },
+  { .steering =   63, .jump_target =  618, .stack_it = 1198 },
+  { .steering =   63, .jump_target = 1035, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1202[] = {
+  { .steering =   15, .jump_target = 1041, .stack_it =   -1 },
+  { .steering =   18, .jump_target =   18, .stack_it = 1204 },
+  { .steering =   23, .jump_target =   23, .stack_it = 1203 },
+  { .steering =   73, .jump_target =  620, .stack_it = 1198 },
+  { .steering =   73, .jump_target = 1041, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1203[] = {
+  { .steering =   18, .jump_target =  767, .stack_it = 1199 },
+  { .steering =   68, .jump_target =  779, .stack_it = 1199 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1204[] = {
+  { .steering =   15, .jump_target = 1033, .stack_it =   -1 },
+  { .steering =   50, .jump_target =  615, .stack_it = 1198 },
+  { .steering =   50, .jump_target = 1033, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1205[] = {
+  { .steering =    3, .jump_target = 1015, .stack_it =   -1 },
+  { .steering =    6, .jump_target = 1023, .stack_it =   -1 },
+  { .steering =   12, .jump_target = 1031, .stack_it =   -1 },
+  { .steering =   15, .jump_target = 1039, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  691, .stack_it = 1206 },
+  { .steering =   68, .jump_target = 1039, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1206[] = {
+  { .steering =    5, .jump_target = 1019, .stack_it =   -1 },
+  { .steering =    8, .jump_target = 1027, .stack_it =   -1 },
+  { .steering =  606, .jump_target =  785, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1207[] = {
+  { .steering =    3, .jump_target = 1013, .stack_it =   -1 },
+  { .steering =    6, .jump_target = 1021, .stack_it =   -1 },
+  { .steering =   12, .jump_target = 1029, .stack_it =   -1 },
+  { .steering =   15, .jump_target = 1037, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  691, .stack_it = 1208 },
+  { .steering =   68, .jump_target = 1037, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1208[] = {
+  { .steering =    5, .jump_target = 1017, .stack_it =   -1 },
+  { .steering =    8, .jump_target = 1025, .stack_it =   -1 },
+  { .steering =  606, .jump_target =  783, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1209[] = {
+  { .steering =    3, .jump_target = 1014, .stack_it =   -1 },
+  { .steering =    6, .jump_target = 1022, .stack_it =   -1 },
+  { .steering =   12, .jump_target = 1030, .stack_it =   -1 },
+  { .steering =   15, .jump_target = 1038, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  691, .stack_it = 1210 },
+  { .steering =   68, .jump_target = 1038, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1210[] = {
+  { .steering =    5, .jump_target = 1018, .stack_it =   -1 },
+  { .steering =    8, .jump_target = 1026, .stack_it =   -1 },
+  { .steering =  606, .jump_target =  784, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1211[] = {
+  { .steering =    3, .jump_target = 1016, .stack_it =   -1 },
+  { .steering =    6, .jump_target = 1024, .stack_it =   -1 },
+  { .steering =   12, .jump_target = 1032, .stack_it =   -1 },
+  { .steering =   15, .jump_target = 1040, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  691, .stack_it = 1212 },
+  { .steering =   68, .jump_target = 1040, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1212[] = {
+  { .steering =    5, .jump_target = 1020, .stack_it =   -1 },
+  { .steering =    8, .jump_target = 1028, .stack_it =   -1 },
+  { .steering =  606, .jump_target =  786, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1213[] = {
+  { .steering =   15, .jump_target = 1036, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  772, .stack_it = 1199 },
+  { .steering =   68, .jump_target =  619, .stack_it = 1198 },
+  { .steering =   68, .jump_target = 1036, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1214[] = {
+  { .steering =    3, .jump_target =  749, .stack_it =   -1 },
+  { .steering =    6, .jump_target =  755, .stack_it =   -1 },
+  { .steering =   12, .jump_target =  757, .stack_it =   -1 },
+  { .steering =   23, .jump_target =  691, .stack_it = 1199 },
+  { .steering =   68, .jump_target =  780, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1215[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =   -1 },
+  { .steering =    6, .jump_target =    6, .stack_it =   -1 },
+  { .steering =   12, .jump_target =   12, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1216[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =   -1 },
+  { .steering =    6, .jump_target =    6, .stack_it =   -1 },
+  { .steering =   12, .jump_target =   12, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1217[] = {
+  { .steering =   27, .jump_target = 1044, .stack_it =   -1 },
+  { .steering =   68, .jump_target =  778, .stack_it =   -1 },
+  { .steering =   68, .jump_target = 1044, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1218[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =   -1 },
+  { .steering =    6, .jump_target =    6, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1219[] = {
+  { .steering =   11, .jump_target =   11, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1220[] = {
+  { .steering =   10, .jump_target =   10, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1221[] = {
+  { .steering =   10, .jump_target =   10, .stack_it =   -1 },
+  { .steering =   68, .jump_target =   68, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1222[] = {
+  { .steering =    4, .jump_target =    4, .stack_it =   -1 },
+  { .steering =    7, .jump_target =    7, .stack_it =   -1 },
+  { .steering =   12, .jump_target =   12, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1223[] = {
+  { .steering =   20, .jump_target = 1043, .stack_it =   -1 },
+  { .steering =   24, .jump_target = 1043, .stack_it =   -1 },
+  { .steering =   68, .jump_target =  777, .stack_it = 1224 },
+  { .steering =   68, .jump_target = 1043, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1224[] = {
+  { .steering =    3, .jump_target =    3, .stack_it =   -1 },
+  { .steering =    6, .jump_target =    6, .stack_it =   -1 },
+  { .steering =   12, .jump_target =   12, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1225[] = {
+  { .steering =   20, .jump_target = 1042, .stack_it =   -1 },
+  { .steering =   24, .jump_target = 1042, .stack_it =   -1 },
+  { .steering =   60, .jump_target =  776, .stack_it = 1224 },
+  { .steering =   60, .jump_target = 1042, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1226[] = {
+  { .steering =   35, .jump_target =  774, .stack_it =   -1 },
+  { .steering =   36, .jump_target =  775, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1227[] = {
+  { .steering =   74, .jump_target =  781, .stack_it = 1221 },
+  { .steering =   75, .jump_target =  782, .stack_it = 1221 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v1_1228[] = {
+  { .steering =   74, .jump_target =   74, .stack_it =   -1 },
+  { .steering =   75, .jump_target =   75, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct rule rules_kv3_v1[] = {
+  { rule_kv3_v1_0000 }, { rule_kv3_v1_0001 }, { rule_kv3_v1_0002 }, { rule_kv3_v1_0003 }, { rule_kv3_v1_0004 },
+  { rule_kv3_v1_0005 }, { rule_kv3_v1_0006 }, { rule_kv3_v1_0007 }, { rule_kv3_v1_0008 }, { rule_kv3_v1_0009 },
+  { rule_kv3_v1_0010 }, { rule_kv3_v1_0011 }, { rule_kv3_v1_0012 }, { rule_kv3_v1_0013 }, { rule_kv3_v1_0014 },
+  { rule_kv3_v1_0015 }, { rule_kv3_v1_0016 }, { rule_kv3_v1_0017 }, { rule_kv3_v1_0018 }, { rule_kv3_v1_0019 },
+  { rule_kv3_v1_0020 }, { rule_kv3_v1_0021 }, { rule_kv3_v1_0022 }, { rule_kv3_v1_0023 }, { rule_kv3_v1_0024 },
+  { rule_kv3_v1_0025 }, { rule_kv3_v1_0026 }, { rule_kv3_v1_0027 }, { rule_kv3_v1_0028 }, { rule_kv3_v1_0029 },
+  { rule_kv3_v1_0030 }, { rule_kv3_v1_0031 }, { rule_kv3_v1_0032 }, { rule_kv3_v1_0033 }, { rule_kv3_v1_0034 },
+  { rule_kv3_v1_0035 }, { rule_kv3_v1_0036 }, { rule_kv3_v1_0037 }, { rule_kv3_v1_0038 }, { rule_kv3_v1_0039 },
+  { rule_kv3_v1_0040 }, { rule_kv3_v1_0041 }, { rule_kv3_v1_0042 }, { rule_kv3_v1_0043 }, { rule_kv3_v1_0044 },
+  { rule_kv3_v1_0045 }, { rule_kv3_v1_0046 }, { rule_kv3_v1_0047 }, { rule_kv3_v1_0048 }, { rule_kv3_v1_0049 },
+  { rule_kv3_v1_0050 }, { rule_kv3_v1_0051 }, { rule_kv3_v1_0052 }, { rule_kv3_v1_0053 }, { rule_kv3_v1_0054 },
+  { rule_kv3_v1_0055 }, { rule_kv3_v1_0056 }, { rule_kv3_v1_0057 }, { rule_kv3_v1_0058 }, { rule_kv3_v1_0059 },
+  { rule_kv3_v1_0060 }, { rule_kv3_v1_0061 }, { rule_kv3_v1_0062 }, { rule_kv3_v1_0063 }, { rule_kv3_v1_0064 },
+  { rule_kv3_v1_0065 }, { rule_kv3_v1_0066 }, { rule_kv3_v1_0067 }, { rule_kv3_v1_0068 }, { rule_kv3_v1_0069 },
+  { rule_kv3_v1_0070 }, { rule_kv3_v1_0071 }, { rule_kv3_v1_0072 }, { rule_kv3_v1_0073 }, { rule_kv3_v1_0074 },
+  { rule_kv3_v1_0075 }, { rule_kv3_v1_0076 }, { rule_kv3_v1_0077 }, { rule_kv3_v1_0078 }, { rule_kv3_v1_0079 },
+  { rule_kv3_v1_0080 }, { rule_kv3_v1_0081 }, { rule_kv3_v1_0082 }, { rule_kv3_v1_0083 }, { rule_kv3_v1_0084 },
+  { rule_kv3_v1_0085 }, { rule_kv3_v1_0086 }, { rule_kv3_v1_0087 }, { rule_kv3_v1_0088 }, { rule_kv3_v1_0089 },
+  { rule_kv3_v1_0090 }, { rule_kv3_v1_0091 }, { rule_kv3_v1_0092 }, { rule_kv3_v1_0093 }, { rule_kv3_v1_0094 },
+  { rule_kv3_v1_0095 }, { rule_kv3_v1_0096 }, { rule_kv3_v1_0097 }, { rule_kv3_v1_0098 }, { rule_kv3_v1_0099 },
+  { rule_kv3_v1_0100 }, { rule_kv3_v1_0101 }, { rule_kv3_v1_0102 }, { rule_kv3_v1_0103 }, { rule_kv3_v1_0104 },
+  { rule_kv3_v1_0105 }, { rule_kv3_v1_0106 }, { rule_kv3_v1_0107 }, { rule_kv3_v1_0108 }, { rule_kv3_v1_0109 },
+  { rule_kv3_v1_0110 }, { rule_kv3_v1_0111 }, { rule_kv3_v1_0112 }, { rule_kv3_v1_0113 }, { rule_kv3_v1_0114 },
+  { rule_kv3_v1_0115 }, { rule_kv3_v1_0116 }, { rule_kv3_v1_0117 }, { rule_kv3_v1_0118 }, { rule_kv3_v1_0119 },
+  { rule_kv3_v1_0120 }, { rule_kv3_v1_0121 }, { rule_kv3_v1_0122 }, { rule_kv3_v1_0123 }, { rule_kv3_v1_0124 },
+  { rule_kv3_v1_0125 }, { rule_kv3_v1_0126 }, { rule_kv3_v1_0127 }, { rule_kv3_v1_0128 }, { rule_kv3_v1_0129 },
+  { rule_kv3_v1_0130 }, { rule_kv3_v1_0131 }, { rule_kv3_v1_0132 }, { rule_kv3_v1_0133 }, { rule_kv3_v1_0134 },
+  { rule_kv3_v1_0135 }, { rule_kv3_v1_0136 }, { rule_kv3_v1_0137 }, { rule_kv3_v1_0138 }, { rule_kv3_v1_0139 },
+  { rule_kv3_v1_0140 }, { rule_kv3_v1_0141 }, { rule_kv3_v1_0142 }, { rule_kv3_v1_0143 }, { rule_kv3_v1_0144 },
+  { rule_kv3_v1_0145 }, { rule_kv3_v1_0146 }, { rule_kv3_v1_0147 }, { rule_kv3_v1_0148 }, { rule_kv3_v1_0149 },
+  { rule_kv3_v1_0150 }, { rule_kv3_v1_0151 }, { rule_kv3_v1_0152 }, { rule_kv3_v1_0153 }, { rule_kv3_v1_0154 },
+  { rule_kv3_v1_0155 }, { rule_kv3_v1_0156 }, { rule_kv3_v1_0157 }, { rule_kv3_v1_0158 }, { rule_kv3_v1_0159 },
+  { rule_kv3_v1_0160 }, { rule_kv3_v1_0161 }, { rule_kv3_v1_0162 }, { rule_kv3_v1_0163 }, { rule_kv3_v1_0164 },
+  { rule_kv3_v1_0165 }, { rule_kv3_v1_0166 }, { rule_kv3_v1_0167 }, { rule_kv3_v1_0168 }, { rule_kv3_v1_0169 },
+  { rule_kv3_v1_0170 }, { rule_kv3_v1_0171 }, { rule_kv3_v1_0172 }, { rule_kv3_v1_0173 }, { rule_kv3_v1_0174 },
+  { rule_kv3_v1_0175 }, { rule_kv3_v1_0176 }, { rule_kv3_v1_0177 }, { rule_kv3_v1_0178 }, { rule_kv3_v1_0179 },
+  { rule_kv3_v1_0180 }, { rule_kv3_v1_0181 }, { rule_kv3_v1_0182 }, { rule_kv3_v1_0183 }, { rule_kv3_v1_0184 },
+  { rule_kv3_v1_0185 }, { rule_kv3_v1_0186 }, { rule_kv3_v1_0187 }, { rule_kv3_v1_0188 }, { rule_kv3_v1_0189 },
+  { rule_kv3_v1_0190 }, { rule_kv3_v1_0191 }, { rule_kv3_v1_0192 }, { rule_kv3_v1_0193 }, { rule_kv3_v1_0194 },
+  { rule_kv3_v1_0195 }, { rule_kv3_v1_0196 }, { rule_kv3_v1_0197 }, { rule_kv3_v1_0198 }, { rule_kv3_v1_0199 },
+  { rule_kv3_v1_0200 }, { rule_kv3_v1_0201 }, { rule_kv3_v1_0202 }, { rule_kv3_v1_0203 }, { rule_kv3_v1_0204 },
+  { rule_kv3_v1_0205 }, { rule_kv3_v1_0206 }, { rule_kv3_v1_0207 }, { rule_kv3_v1_0208 }, { rule_kv3_v1_0209 },
+  { rule_kv3_v1_0210 }, { rule_kv3_v1_0211 }, { rule_kv3_v1_0212 }, { rule_kv3_v1_0213 }, { rule_kv3_v1_0214 },
+  { rule_kv3_v1_0215 }, { rule_kv3_v1_0216 }, { rule_kv3_v1_0217 }, { rule_kv3_v1_0218 }, { rule_kv3_v1_0219 },
+  { rule_kv3_v1_0220 }, { rule_kv3_v1_0221 }, { rule_kv3_v1_0222 }, { rule_kv3_v1_0223 }, { rule_kv3_v1_0224 },
+  { rule_kv3_v1_0225 }, { rule_kv3_v1_0226 }, { rule_kv3_v1_0227 }, { rule_kv3_v1_0228 }, { rule_kv3_v1_0229 },
+  { rule_kv3_v1_0230 }, { rule_kv3_v1_0231 }, { rule_kv3_v1_0232 }, { rule_kv3_v1_0233 }, { rule_kv3_v1_0234 },
+  { rule_kv3_v1_0235 }, { rule_kv3_v1_0236 }, { rule_kv3_v1_0237 }, { rule_kv3_v1_0238 }, { rule_kv3_v1_0239 },
+  { rule_kv3_v1_0240 }, { rule_kv3_v1_0241 }, { rule_kv3_v1_0242 }, { rule_kv3_v1_0243 }, { rule_kv3_v1_0244 },
+  { rule_kv3_v1_0245 }, { rule_kv3_v1_0246 }, { rule_kv3_v1_0247 }, { rule_kv3_v1_0248 }, { rule_kv3_v1_0249 },
+  { rule_kv3_v1_0250 }, { rule_kv3_v1_0251 }, { rule_kv3_v1_0252 }, { rule_kv3_v1_0253 }, { rule_kv3_v1_0254 },
+  { rule_kv3_v1_0255 }, { rule_kv3_v1_0256 }, { rule_kv3_v1_0257 }, { rule_kv3_v1_0258 }, { rule_kv3_v1_0259 },
+  { rule_kv3_v1_0260 }, { rule_kv3_v1_0261 }, { rule_kv3_v1_0262 }, { rule_kv3_v1_0263 }, { rule_kv3_v1_0264 },
+  { rule_kv3_v1_0265 }, { rule_kv3_v1_0266 }, { rule_kv3_v1_0267 }, { rule_kv3_v1_0268 }, { rule_kv3_v1_0269 },
+  { rule_kv3_v1_0270 }, { rule_kv3_v1_0271 }, { rule_kv3_v1_0272 }, { rule_kv3_v1_0273 }, { rule_kv3_v1_0274 },
+  { rule_kv3_v1_0275 }, { rule_kv3_v1_0276 }, { rule_kv3_v1_0277 }, { rule_kv3_v1_0278 }, { rule_kv3_v1_0279 },
+  { rule_kv3_v1_0280 }, { rule_kv3_v1_0281 }, { rule_kv3_v1_0282 }, { rule_kv3_v1_0283 }, { rule_kv3_v1_0284 },
+  { rule_kv3_v1_0285 }, { rule_kv3_v1_0286 }, { rule_kv3_v1_0287 }, { rule_kv3_v1_0288 }, { rule_kv3_v1_0289 },
+  { rule_kv3_v1_0290 }, { rule_kv3_v1_0291 }, { rule_kv3_v1_0292 }, { rule_kv3_v1_0293 }, { rule_kv3_v1_0294 },
+  { rule_kv3_v1_0295 }, { rule_kv3_v1_0296 }, { rule_kv3_v1_0297 }, { rule_kv3_v1_0298 }, { rule_kv3_v1_0299 },
+  { rule_kv3_v1_0300 }, { rule_kv3_v1_0301 }, { rule_kv3_v1_0302 }, { rule_kv3_v1_0303 }, { rule_kv3_v1_0304 },
+  { rule_kv3_v1_0305 }, { rule_kv3_v1_0306 }, { rule_kv3_v1_0307 }, { rule_kv3_v1_0308 }, { rule_kv3_v1_0309 },
+  { rule_kv3_v1_0310 }, { rule_kv3_v1_0311 }, { rule_kv3_v1_0312 }, { rule_kv3_v1_0313 }, { rule_kv3_v1_0314 },
+  { rule_kv3_v1_0315 }, { rule_kv3_v1_0316 }, { rule_kv3_v1_0317 }, { rule_kv3_v1_0318 }, { rule_kv3_v1_0319 },
+  { rule_kv3_v1_0320 }, { rule_kv3_v1_0321 }, { rule_kv3_v1_0322 }, { rule_kv3_v1_0323 }, { rule_kv3_v1_0324 },
+  { rule_kv3_v1_0325 }, { rule_kv3_v1_0326 }, { rule_kv3_v1_0327 }, { rule_kv3_v1_0328 }, { rule_kv3_v1_0329 },
+  { rule_kv3_v1_0330 }, { rule_kv3_v1_0331 }, { rule_kv3_v1_0332 }, { rule_kv3_v1_0333 }, { rule_kv3_v1_0334 },
+  { rule_kv3_v1_0335 }, { rule_kv3_v1_0336 }, { rule_kv3_v1_0337 }, { rule_kv3_v1_0338 }, { rule_kv3_v1_0339 },
+  { rule_kv3_v1_0340 }, { rule_kv3_v1_0341 }, { rule_kv3_v1_0342 }, { rule_kv3_v1_0343 }, { rule_kv3_v1_0344 },
+  { rule_kv3_v1_0345 }, { rule_kv3_v1_0346 }, { rule_kv3_v1_0347 }, { rule_kv3_v1_0348 }, { rule_kv3_v1_0349 },
+  { rule_kv3_v1_0350 }, { rule_kv3_v1_0351 }, { rule_kv3_v1_0352 }, { rule_kv3_v1_0353 }, { rule_kv3_v1_0354 },
+  { rule_kv3_v1_0355 }, { rule_kv3_v1_0356 }, { rule_kv3_v1_0357 }, { rule_kv3_v1_0358 }, { rule_kv3_v1_0359 },
+  { rule_kv3_v1_0360 }, { rule_kv3_v1_0361 }, { rule_kv3_v1_0362 }, { rule_kv3_v1_0363 }, { rule_kv3_v1_0364 },
+  { rule_kv3_v1_0365 }, { rule_kv3_v1_0366 }, { rule_kv3_v1_0367 }, { rule_kv3_v1_0368 }, { rule_kv3_v1_0369 },
+  { rule_kv3_v1_0370 }, { rule_kv3_v1_0371 }, { rule_kv3_v1_0372 }, { rule_kv3_v1_0373 }, { rule_kv3_v1_0374 },
+  { rule_kv3_v1_0375 }, { rule_kv3_v1_0376 }, { rule_kv3_v1_0377 }, { rule_kv3_v1_0378 }, { rule_kv3_v1_0379 },
+  { rule_kv3_v1_0380 }, { rule_kv3_v1_0381 }, { rule_kv3_v1_0382 }, { rule_kv3_v1_0383 }, { rule_kv3_v1_0384 },
+  { rule_kv3_v1_0385 }, { rule_kv3_v1_0386 }, { rule_kv3_v1_0387 }, { rule_kv3_v1_0388 }, { rule_kv3_v1_0389 },
+  { rule_kv3_v1_0390 }, { rule_kv3_v1_0391 }, { rule_kv3_v1_0392 }, { rule_kv3_v1_0393 }, { rule_kv3_v1_0394 },
+  { rule_kv3_v1_0395 }, { rule_kv3_v1_0396 }, { rule_kv3_v1_0397 }, { rule_kv3_v1_0398 }, { rule_kv3_v1_0399 },
+  { rule_kv3_v1_0400 }, { rule_kv3_v1_0401 }, { rule_kv3_v1_0402 }, { rule_kv3_v1_0403 }, { rule_kv3_v1_0404 },
+  { rule_kv3_v1_0405 }, { rule_kv3_v1_0406 }, { rule_kv3_v1_0407 }, { rule_kv3_v1_0408 }, { rule_kv3_v1_0409 },
+  { rule_kv3_v1_0410 }, { rule_kv3_v1_0411 }, { rule_kv3_v1_0412 }, { rule_kv3_v1_0413 }, { rule_kv3_v1_0414 },
+  { rule_kv3_v1_0415 }, { rule_kv3_v1_0416 }, { rule_kv3_v1_0417 }, { rule_kv3_v1_0418 }, { rule_kv3_v1_0419 },
+  { rule_kv3_v1_0420 }, { rule_kv3_v1_0421 }, { rule_kv3_v1_0422 }, { rule_kv3_v1_0423 }, { rule_kv3_v1_0424 },
+  { rule_kv3_v1_0425 }, { rule_kv3_v1_0426 }, { rule_kv3_v1_0427 }, { rule_kv3_v1_0428 }, { rule_kv3_v1_0429 },
+  { rule_kv3_v1_0430 }, { rule_kv3_v1_0431 }, { rule_kv3_v1_0432 }, { rule_kv3_v1_0433 }, { rule_kv3_v1_0434 },
+  { rule_kv3_v1_0435 }, { rule_kv3_v1_0436 }, { rule_kv3_v1_0437 }, { rule_kv3_v1_0438 }, { rule_kv3_v1_0439 },
+  { rule_kv3_v1_0440 }, { rule_kv3_v1_0441 }, { rule_kv3_v1_0442 }, { rule_kv3_v1_0443 }, { rule_kv3_v1_0444 },
+  { rule_kv3_v1_0445 }, { rule_kv3_v1_0446 }, { rule_kv3_v1_0447 }, { rule_kv3_v1_0448 }, { rule_kv3_v1_0449 },
+  { rule_kv3_v1_0450 }, { rule_kv3_v1_0451 }, { rule_kv3_v1_0452 }, { rule_kv3_v1_0453 }, { rule_kv3_v1_0454 },
+  { rule_kv3_v1_0455 }, { rule_kv3_v1_0456 }, { rule_kv3_v1_0457 }, { rule_kv3_v1_0458 }, { rule_kv3_v1_0459 },
+  { rule_kv3_v1_0460 }, { rule_kv3_v1_0461 }, { rule_kv3_v1_0462 }, { rule_kv3_v1_0463 }, { rule_kv3_v1_0464 },
+  { rule_kv3_v1_0465 }, { rule_kv3_v1_0466 }, { rule_kv3_v1_0467 }, { rule_kv3_v1_0468 }, { rule_kv3_v1_0469 },
+  { rule_kv3_v1_0470 }, { rule_kv3_v1_0471 }, { rule_kv3_v1_0472 }, { rule_kv3_v1_0473 }, { rule_kv3_v1_0474 },
+  { rule_kv3_v1_0475 }, { rule_kv3_v1_0476 }, { rule_kv3_v1_0477 }, { rule_kv3_v1_0478 }, { rule_kv3_v1_0479 },
+  { rule_kv3_v1_0480 }, { rule_kv3_v1_0481 }, { rule_kv3_v1_0482 }, { rule_kv3_v1_0483 }, { rule_kv3_v1_0484 },
+  { rule_kv3_v1_0485 }, { rule_kv3_v1_0486 }, { rule_kv3_v1_0487 }, { rule_kv3_v1_0488 }, { rule_kv3_v1_0489 },
+  { rule_kv3_v1_0490 }, { rule_kv3_v1_0491 }, { rule_kv3_v1_0492 }, { rule_kv3_v1_0493 }, { rule_kv3_v1_0494 },
+  { rule_kv3_v1_0495 }, { rule_kv3_v1_0496 }, { rule_kv3_v1_0497 }, { rule_kv3_v1_0498 }, { rule_kv3_v1_0499 },
+  { rule_kv3_v1_0500 }, { rule_kv3_v1_0501 }, { rule_kv3_v1_0502 }, { rule_kv3_v1_0503 }, { rule_kv3_v1_0504 },
+  { rule_kv3_v1_0505 }, { rule_kv3_v1_0506 }, { rule_kv3_v1_0507 }, { rule_kv3_v1_0508 }, { rule_kv3_v1_0509 },
+  { rule_kv3_v1_0510 }, { rule_kv3_v1_0511 }, { rule_kv3_v1_0512 }, { rule_kv3_v1_0513 }, { rule_kv3_v1_0514 },
+  { rule_kv3_v1_0515 }, { rule_kv3_v1_0516 }, { rule_kv3_v1_0517 }, { rule_kv3_v1_0518 }, { rule_kv3_v1_0519 },
+  { rule_kv3_v1_0520 }, { rule_kv3_v1_0521 }, { rule_kv3_v1_0522 }, { rule_kv3_v1_0523 }, { rule_kv3_v1_0524 },
+  { rule_kv3_v1_0525 }, { rule_kv3_v1_0526 }, { rule_kv3_v1_0527 }, { rule_kv3_v1_0528 }, { rule_kv3_v1_0529 },
+  { rule_kv3_v1_0530 }, { rule_kv3_v1_0531 }, { rule_kv3_v1_0532 }, { rule_kv3_v1_0533 }, { rule_kv3_v1_0534 },
+  { rule_kv3_v1_0535 }, { rule_kv3_v1_0536 }, { rule_kv3_v1_0537 }, { rule_kv3_v1_0538 }, { rule_kv3_v1_0539 },
+  { rule_kv3_v1_0540 }, { rule_kv3_v1_0541 }, { rule_kv3_v1_0542 }, { rule_kv3_v1_0543 }, { rule_kv3_v1_0544 },
+  { rule_kv3_v1_0545 }, { rule_kv3_v1_0546 }, { rule_kv3_v1_0547 }, { rule_kv3_v1_0548 }, { rule_kv3_v1_0549 },
+  { rule_kv3_v1_0550 }, { rule_kv3_v1_0551 }, { rule_kv3_v1_0552 }, { rule_kv3_v1_0553 }, { rule_kv3_v1_0554 },
+  { rule_kv3_v1_0555 }, { rule_kv3_v1_0556 }, { rule_kv3_v1_0557 }, { rule_kv3_v1_0558 }, { rule_kv3_v1_0559 },
+  { rule_kv3_v1_0560 }, { rule_kv3_v1_0561 }, { rule_kv3_v1_0562 }, { rule_kv3_v1_0563 }, { rule_kv3_v1_0564 },
+  { rule_kv3_v1_0565 }, { rule_kv3_v1_0566 }, { rule_kv3_v1_0567 }, { rule_kv3_v1_0568 }, { rule_kv3_v1_0569 },
+  { rule_kv3_v1_0570 }, { rule_kv3_v1_0571 }, { rule_kv3_v1_0572 }, { rule_kv3_v1_0573 }, { rule_kv3_v1_0574 },
+  { rule_kv3_v1_0575 }, { rule_kv3_v1_0576 }, { rule_kv3_v1_0577 }, { rule_kv3_v1_0578 }, { rule_kv3_v1_0579 },
+  { rule_kv3_v1_0580 }, { rule_kv3_v1_0581 }, { rule_kv3_v1_0582 }, { rule_kv3_v1_0583 }, { rule_kv3_v1_0584 },
+  { rule_kv3_v1_0585 }, { rule_kv3_v1_0586 }, { rule_kv3_v1_0587 }, { rule_kv3_v1_0588 }, { rule_kv3_v1_0589 },
+  { rule_kv3_v1_0590 }, { rule_kv3_v1_0591 }, { rule_kv3_v1_0592 }, { rule_kv3_v1_0593 }, { rule_kv3_v1_0594 },
+  { rule_kv3_v1_0595 }, { rule_kv3_v1_0596 }, { rule_kv3_v1_0597 }, { rule_kv3_v1_0598 }, { rule_kv3_v1_0599 },
+  { rule_kv3_v1_0600 }, { rule_kv3_v1_0601 }, { rule_kv3_v1_0602 }, { rule_kv3_v1_0603 }, { rule_kv3_v1_0604 },
+  { rule_kv3_v1_0605 }, { rule_kv3_v1_0606 }, { rule_kv3_v1_0607 }, { rule_kv3_v1_0608 }, { rule_kv3_v1_0609 },
+  { rule_kv3_v1_0610 }, { rule_kv3_v1_0611 }, { rule_kv3_v1_0612 }, { rule_kv3_v1_0613 }, { rule_kv3_v1_0614 },
+  { rule_kv3_v1_0615 }, { rule_kv3_v1_0616 }, { rule_kv3_v1_0617 }, { rule_kv3_v1_0618 }, { rule_kv3_v1_0619 },
+  { rule_kv3_v1_0620 }, { rule_kv3_v1_0621 }, { rule_kv3_v1_0622 }, { rule_kv3_v1_0623 }, { rule_kv3_v1_0624 },
+  { rule_kv3_v1_0625 }, { rule_kv3_v1_0626 }, { rule_kv3_v1_0627 }, { rule_kv3_v1_0628 }, { rule_kv3_v1_0629 },
+  { rule_kv3_v1_0630 }, { rule_kv3_v1_0631 }, { rule_kv3_v1_0632 }, { rule_kv3_v1_0633 }, { rule_kv3_v1_0634 },
+  { rule_kv3_v1_0635 }, { rule_kv3_v1_0636 }, { rule_kv3_v1_0637 }, { rule_kv3_v1_0638 }, { rule_kv3_v1_0639 },
+  { rule_kv3_v1_0640 }, { rule_kv3_v1_0641 }, { rule_kv3_v1_0642 }, { rule_kv3_v1_0643 }, { rule_kv3_v1_0644 },
+  { rule_kv3_v1_0645 }, { rule_kv3_v1_0646 }, { rule_kv3_v1_0647 }, { rule_kv3_v1_0648 }, { rule_kv3_v1_0649 },
+  { rule_kv3_v1_0650 }, { rule_kv3_v1_0651 }, { rule_kv3_v1_0652 }, { rule_kv3_v1_0653 }, { rule_kv3_v1_0654 },
+  { rule_kv3_v1_0655 }, { rule_kv3_v1_0656 }, { rule_kv3_v1_0657 }, { rule_kv3_v1_0658 }, { rule_kv3_v1_0659 },
+  { rule_kv3_v1_0660 }, { rule_kv3_v1_0661 }, { rule_kv3_v1_0662 }, { rule_kv3_v1_0663 }, { rule_kv3_v1_0664 },
+  { rule_kv3_v1_0665 }, { rule_kv3_v1_0666 }, { rule_kv3_v1_0667 }, { rule_kv3_v1_0668 }, { rule_kv3_v1_0669 },
+  { rule_kv3_v1_0670 }, { rule_kv3_v1_0671 }, { rule_kv3_v1_0672 }, { rule_kv3_v1_0673 }, { rule_kv3_v1_0674 },
+  { rule_kv3_v1_0675 }, { rule_kv3_v1_0676 }, { rule_kv3_v1_0677 }, { rule_kv3_v1_0678 }, { rule_kv3_v1_0679 },
+  { rule_kv3_v1_0680 }, { rule_kv3_v1_0681 }, { rule_kv3_v1_0682 }, { rule_kv3_v1_0683 }, { rule_kv3_v1_0684 },
+  { rule_kv3_v1_0685 }, { rule_kv3_v1_0686 }, { rule_kv3_v1_0687 }, { rule_kv3_v1_0688 }, { rule_kv3_v1_0689 },
+  { rule_kv3_v1_0690 }, { rule_kv3_v1_0691 }, { rule_kv3_v1_0692 }, { rule_kv3_v1_0693 }, { rule_kv3_v1_0694 },
+  { rule_kv3_v1_0695 }, { rule_kv3_v1_0696 }, { rule_kv3_v1_0697 }, { rule_kv3_v1_0698 }, { rule_kv3_v1_0699 },
+  { rule_kv3_v1_0700 }, { rule_kv3_v1_0701 }, { rule_kv3_v1_0702 }, { rule_kv3_v1_0703 }, { rule_kv3_v1_0704 },
+  { rule_kv3_v1_0705 }, { rule_kv3_v1_0706 }, { rule_kv3_v1_0707 }, { rule_kv3_v1_0708 }, { rule_kv3_v1_0709 },
+  { rule_kv3_v1_0710 }, { rule_kv3_v1_0711 }, { rule_kv3_v1_0712 }, { rule_kv3_v1_0713 }, { rule_kv3_v1_0714 },
+  { rule_kv3_v1_0715 }, { rule_kv3_v1_0716 }, { rule_kv3_v1_0717 }, { rule_kv3_v1_0718 }, { rule_kv3_v1_0719 },
+  { rule_kv3_v1_0720 }, { rule_kv3_v1_0721 }, { rule_kv3_v1_0722 }, { rule_kv3_v1_0723 }, { rule_kv3_v1_0724 },
+  { rule_kv3_v1_0725 }, { rule_kv3_v1_0726 }, { rule_kv3_v1_0727 }, { rule_kv3_v1_0728 }, { rule_kv3_v1_0729 },
+  { rule_kv3_v1_0730 }, { rule_kv3_v1_0731 }, { rule_kv3_v1_0732 }, { rule_kv3_v1_0733 }, { rule_kv3_v1_0734 },
+  { rule_kv3_v1_0735 }, { rule_kv3_v1_0736 }, { rule_kv3_v1_0737 }, { rule_kv3_v1_0738 }, { rule_kv3_v1_0739 },
+  { rule_kv3_v1_0740 }, { rule_kv3_v1_0741 }, { rule_kv3_v1_0742 }, { rule_kv3_v1_0743 }, { rule_kv3_v1_0744 },
+  { rule_kv3_v1_0745 }, { rule_kv3_v1_0746 }, { rule_kv3_v1_0747 }, { rule_kv3_v1_0748 }, { rule_kv3_v1_0749 },
+  { rule_kv3_v1_0750 }, { rule_kv3_v1_0751 }, { rule_kv3_v1_0752 }, { rule_kv3_v1_0753 }, { rule_kv3_v1_0754 },
+  { rule_kv3_v1_0755 }, { rule_kv3_v1_0756 }, { rule_kv3_v1_0757 }, { rule_kv3_v1_0758 }, { rule_kv3_v1_0759 },
+  { rule_kv3_v1_0760 }, { rule_kv3_v1_0761 }, { rule_kv3_v1_0762 }, { rule_kv3_v1_0763 }, { rule_kv3_v1_0764 },
+  { rule_kv3_v1_0765 }, { rule_kv3_v1_0766 }, { rule_kv3_v1_0767 }, { rule_kv3_v1_0768 }, { rule_kv3_v1_0769 },
+  { rule_kv3_v1_0770 }, { rule_kv3_v1_0771 }, { rule_kv3_v1_0772 }, { rule_kv3_v1_0773 }, { rule_kv3_v1_0774 },
+  { rule_kv3_v1_0775 }, { rule_kv3_v1_0776 }, { rule_kv3_v1_0777 }, { rule_kv3_v1_0778 }, { rule_kv3_v1_0779 },
+  { rule_kv3_v1_0780 }, { rule_kv3_v1_0781 }, { rule_kv3_v1_0782 }, { rule_kv3_v1_0783 }, { rule_kv3_v1_0784 },
+  { rule_kv3_v1_0785 }, { rule_kv3_v1_0786 }, { rule_kv3_v1_0787 }, { rule_kv3_v1_0788 }, { rule_kv3_v1_0789 },
+  { rule_kv3_v1_0790 }, { rule_kv3_v1_0791 }, { rule_kv3_v1_0792 }, { rule_kv3_v1_0793 }, { rule_kv3_v1_0794 },
+  { rule_kv3_v1_0795 }, { rule_kv3_v1_0796 }, { rule_kv3_v1_0797 }, { rule_kv3_v1_0798 }, { rule_kv3_v1_0799 },
+  { rule_kv3_v1_0800 }, { rule_kv3_v1_0801 }, { rule_kv3_v1_0802 }, { rule_kv3_v1_0803 }, { rule_kv3_v1_0804 },
+  { rule_kv3_v1_0805 }, { rule_kv3_v1_0806 }, { rule_kv3_v1_0807 }, { rule_kv3_v1_0808 }, { rule_kv3_v1_0809 },
+  { rule_kv3_v1_0810 }, { rule_kv3_v1_0811 }, { rule_kv3_v1_0812 }, { rule_kv3_v1_0813 }, { rule_kv3_v1_0814 },
+  { rule_kv3_v1_0815 }, { rule_kv3_v1_0816 }, { rule_kv3_v1_0817 }, { rule_kv3_v1_0818 }, { rule_kv3_v1_0819 },
+  { rule_kv3_v1_0820 }, { rule_kv3_v1_0821 }, { rule_kv3_v1_0822 }, { rule_kv3_v1_0823 }, { rule_kv3_v1_0824 },
+  { rule_kv3_v1_0825 }, { rule_kv3_v1_0826 }, { rule_kv3_v1_0827 }, { rule_kv3_v1_0828 }, { rule_kv3_v1_0829 },
+  { rule_kv3_v1_0830 }, { rule_kv3_v1_0831 }, { rule_kv3_v1_0832 }, { rule_kv3_v1_0833 }, { rule_kv3_v1_0834 },
+  { rule_kv3_v1_0835 }, { rule_kv3_v1_0836 }, { rule_kv3_v1_0837 }, { rule_kv3_v1_0838 }, { rule_kv3_v1_0839 },
+  { rule_kv3_v1_0840 }, { rule_kv3_v1_0841 }, { rule_kv3_v1_0842 }, { rule_kv3_v1_0843 }, { rule_kv3_v1_0844 },
+  { rule_kv3_v1_0845 }, { rule_kv3_v1_0846 }, { rule_kv3_v1_0847 }, { rule_kv3_v1_0848 }, { rule_kv3_v1_0849 },
+  { rule_kv3_v1_0850 }, { rule_kv3_v1_0851 }, { rule_kv3_v1_0852 }, { rule_kv3_v1_0853 }, { rule_kv3_v1_0854 },
+  { rule_kv3_v1_0855 }, { rule_kv3_v1_0856 }, { rule_kv3_v1_0857 }, { rule_kv3_v1_0858 }, { rule_kv3_v1_0859 },
+  { rule_kv3_v1_0860 }, { rule_kv3_v1_0861 }, { rule_kv3_v1_0862 }, { rule_kv3_v1_0863 }, { rule_kv3_v1_0864 },
+  { rule_kv3_v1_0865 }, { rule_kv3_v1_0866 }, { rule_kv3_v1_0867 }, { rule_kv3_v1_0868 }, { rule_kv3_v1_0869 },
+  { rule_kv3_v1_0870 }, { rule_kv3_v1_0871 }, { rule_kv3_v1_0872 }, { rule_kv3_v1_0873 }, { rule_kv3_v1_0874 },
+  { rule_kv3_v1_0875 }, { rule_kv3_v1_0876 }, { rule_kv3_v1_0877 }, { rule_kv3_v1_0878 }, { rule_kv3_v1_0879 },
+  { rule_kv3_v1_0880 }, { rule_kv3_v1_0881 }, { rule_kv3_v1_0882 }, { rule_kv3_v1_0883 }, { rule_kv3_v1_0884 },
+  { rule_kv3_v1_0885 }, { rule_kv3_v1_0886 }, { rule_kv3_v1_0887 }, { rule_kv3_v1_0888 }, { rule_kv3_v1_0889 },
+  { rule_kv3_v1_0890 }, { rule_kv3_v1_0891 }, { rule_kv3_v1_0892 }, { rule_kv3_v1_0893 }, { rule_kv3_v1_0894 },
+  { rule_kv3_v1_0895 }, { rule_kv3_v1_0896 }, { rule_kv3_v1_0897 }, { rule_kv3_v1_0898 }, { rule_kv3_v1_0899 },
+  { rule_kv3_v1_0900 }, { rule_kv3_v1_0901 }, { rule_kv3_v1_0902 }, { rule_kv3_v1_0903 }, { rule_kv3_v1_0904 },
+  { rule_kv3_v1_0905 }, { rule_kv3_v1_0906 }, { rule_kv3_v1_0907 }, { rule_kv3_v1_0908 }, { rule_kv3_v1_0909 },
+  { rule_kv3_v1_0910 }, { rule_kv3_v1_0911 }, { rule_kv3_v1_0912 }, { rule_kv3_v1_0913 }, { rule_kv3_v1_0914 },
+  { rule_kv3_v1_0915 }, { rule_kv3_v1_0916 }, { rule_kv3_v1_0917 }, { rule_kv3_v1_0918 }, { rule_kv3_v1_0919 },
+  { rule_kv3_v1_0920 }, { rule_kv3_v1_0921 }, { rule_kv3_v1_0922 }, { rule_kv3_v1_0923 }, { rule_kv3_v1_0924 },
+  { rule_kv3_v1_0925 }, { rule_kv3_v1_0926 }, { rule_kv3_v1_0927 }, { rule_kv3_v1_0928 }, { rule_kv3_v1_0929 },
+  { rule_kv3_v1_0930 }, { rule_kv3_v1_0931 }, { rule_kv3_v1_0932 }, { rule_kv3_v1_0933 }, { rule_kv3_v1_0934 },
+  { rule_kv3_v1_0935 }, { rule_kv3_v1_0936 }, { rule_kv3_v1_0937 }, { rule_kv3_v1_0938 }, { rule_kv3_v1_0939 },
+  { rule_kv3_v1_0940 }, { rule_kv3_v1_0941 }, { rule_kv3_v1_0942 }, { rule_kv3_v1_0943 }, { rule_kv3_v1_0944 },
+  { rule_kv3_v1_0945 }, { rule_kv3_v1_0946 }, { rule_kv3_v1_0947 }, { rule_kv3_v1_0948 }, { rule_kv3_v1_0949 },
+  { rule_kv3_v1_0950 }, { rule_kv3_v1_0951 }, { rule_kv3_v1_0952 }, { rule_kv3_v1_0953 }, { rule_kv3_v1_0954 },
+  { rule_kv3_v1_0955 }, { rule_kv3_v1_0956 }, { rule_kv3_v1_0957 }, { rule_kv3_v1_0958 }, { rule_kv3_v1_0959 },
+  { rule_kv3_v1_0960 }, { rule_kv3_v1_0961 }, { rule_kv3_v1_0962 }, { rule_kv3_v1_0963 }, { rule_kv3_v1_0964 },
+  { rule_kv3_v1_0965 }, { rule_kv3_v1_0966 }, { rule_kv3_v1_0967 }, { rule_kv3_v1_0968 }, { rule_kv3_v1_0969 },
+  { rule_kv3_v1_0970 }, { rule_kv3_v1_0971 }, { rule_kv3_v1_0972 }, { rule_kv3_v1_0973 }, { rule_kv3_v1_0974 },
+  { rule_kv3_v1_0975 }, { rule_kv3_v1_0976 }, { rule_kv3_v1_0977 }, { rule_kv3_v1_0978 }, { rule_kv3_v1_0979 },
+  { rule_kv3_v1_0980 }, { rule_kv3_v1_0981 }, { rule_kv3_v1_0982 }, { rule_kv3_v1_0983 }, { rule_kv3_v1_0984 },
+  { rule_kv3_v1_0985 }, { rule_kv3_v1_0986 }, { rule_kv3_v1_0987 }, { rule_kv3_v1_0988 }, { rule_kv3_v1_0989 },
+  { rule_kv3_v1_0990 }, { rule_kv3_v1_0991 }, { rule_kv3_v1_0992 }, { rule_kv3_v1_0993 }, { rule_kv3_v1_0994 },
+  { rule_kv3_v1_0995 }, { rule_kv3_v1_0996 }, { rule_kv3_v1_0997 }, { rule_kv3_v1_0998 }, { rule_kv3_v1_0999 },
+  { rule_kv3_v1_1000 }, { rule_kv3_v1_1001 }, { rule_kv3_v1_1002 }, { rule_kv3_v1_1003 }, { rule_kv3_v1_1004 },
+  { rule_kv3_v1_1005 }, { rule_kv3_v1_1006 }, { rule_kv3_v1_1007 }, { rule_kv3_v1_1008 }, { rule_kv3_v1_1009 },
+  { rule_kv3_v1_1010 }, { rule_kv3_v1_1011 }, { rule_kv3_v1_1012 }, { rule_kv3_v1_1013 }, { rule_kv3_v1_1014 },
+  { rule_kv3_v1_1015 }, { rule_kv3_v1_1016 }, { rule_kv3_v1_1017 }, { rule_kv3_v1_1018 }, { rule_kv3_v1_1019 },
+  { rule_kv3_v1_1020 }, { rule_kv3_v1_1021 }, { rule_kv3_v1_1022 }, { rule_kv3_v1_1023 }, { rule_kv3_v1_1024 },
+  { rule_kv3_v1_1025 }, { rule_kv3_v1_1026 }, { rule_kv3_v1_1027 }, { rule_kv3_v1_1028 }, { rule_kv3_v1_1029 },
+  { rule_kv3_v1_1030 }, { rule_kv3_v1_1031 }, { rule_kv3_v1_1032 }, { rule_kv3_v1_1033 }, { rule_kv3_v1_1034 },
+  { rule_kv3_v1_1035 }, { rule_kv3_v1_1036 }, { rule_kv3_v1_1037 }, { rule_kv3_v1_1038 }, { rule_kv3_v1_1039 },
+  { rule_kv3_v1_1040 }, { rule_kv3_v1_1041 }, { rule_kv3_v1_1042 }, { rule_kv3_v1_1043 }, { rule_kv3_v1_1044 },
+  { rule_kv3_v1_1045 }, { rule_kv3_v1_1046 }, { rule_kv3_v1_1047 }, { rule_kv3_v1_1048 }, { rule_kv3_v1_1049 },
+  { rule_kv3_v1_1050 }, { rule_kv3_v1_1051 }, { rule_kv3_v1_1052 }, { rule_kv3_v1_1053 }, { rule_kv3_v1_1054 },
+  { rule_kv3_v1_1055 }, { rule_kv3_v1_1056 }, { rule_kv3_v1_1057 }, { rule_kv3_v1_1058 }, { rule_kv3_v1_1059 },
+  { rule_kv3_v1_1060 }, { rule_kv3_v1_1061 }, { rule_kv3_v1_1062 }, { rule_kv3_v1_1063 }, { rule_kv3_v1_1064 },
+  { rule_kv3_v1_1065 }, { rule_kv3_v1_1066 }, { rule_kv3_v1_1067 }, { rule_kv3_v1_1068 }, { rule_kv3_v1_1069 },
+  { rule_kv3_v1_1070 }, { rule_kv3_v1_1071 }, { rule_kv3_v1_1072 }, { rule_kv3_v1_1073 }, { rule_kv3_v1_1074 },
+  { rule_kv3_v1_1075 }, { rule_kv3_v1_1076 }, { rule_kv3_v1_1077 }, { rule_kv3_v1_1078 }, { rule_kv3_v1_1079 },
+  { rule_kv3_v1_1080 }, { rule_kv3_v1_1081 }, { rule_kv3_v1_1082 }, { rule_kv3_v1_1083 }, { rule_kv3_v1_1084 },
+  { rule_kv3_v1_1085 }, { rule_kv3_v1_1086 }, { rule_kv3_v1_1087 }, { rule_kv3_v1_1088 }, { rule_kv3_v1_1089 },
+  { rule_kv3_v1_1090 }, { rule_kv3_v1_1091 }, { rule_kv3_v1_1092 }, { rule_kv3_v1_1093 }, { rule_kv3_v1_1094 },
+  { rule_kv3_v1_1095 }, { rule_kv3_v1_1096 }, { rule_kv3_v1_1097 }, { rule_kv3_v1_1098 }, { rule_kv3_v1_1099 },
+  { rule_kv3_v1_1100 }, { rule_kv3_v1_1101 }, { rule_kv3_v1_1102 }, { rule_kv3_v1_1103 }, { rule_kv3_v1_1104 },
+  { rule_kv3_v1_1105 }, { rule_kv3_v1_1106 }, { rule_kv3_v1_1107 }, { rule_kv3_v1_1108 }, { rule_kv3_v1_1109 },
+  { rule_kv3_v1_1110 }, { rule_kv3_v1_1111 }, { rule_kv3_v1_1112 }, { rule_kv3_v1_1113 }, { rule_kv3_v1_1114 },
+  { rule_kv3_v1_1115 }, { rule_kv3_v1_1116 }, { rule_kv3_v1_1117 }, { rule_kv3_v1_1118 }, { rule_kv3_v1_1119 },
+  { rule_kv3_v1_1120 }, { rule_kv3_v1_1121 }, { rule_kv3_v1_1122 }, { rule_kv3_v1_1123 }, { rule_kv3_v1_1124 },
+  { rule_kv3_v1_1125 }, { rule_kv3_v1_1126 }, { rule_kv3_v1_1127 }, { rule_kv3_v1_1128 }, { rule_kv3_v1_1129 },
+  { rule_kv3_v1_1130 }, { rule_kv3_v1_1131 }, { rule_kv3_v1_1132 }, { rule_kv3_v1_1133 }, { rule_kv3_v1_1134 },
+  { rule_kv3_v1_1135 }, { rule_kv3_v1_1136 }, { rule_kv3_v1_1137 }, { rule_kv3_v1_1138 }, { rule_kv3_v1_1139 },
+  { rule_kv3_v1_1140 }, { rule_kv3_v1_1141 }, { rule_kv3_v1_1142 }, { rule_kv3_v1_1143 }, { rule_kv3_v1_1144 },
+  { rule_kv3_v1_1145 }, { rule_kv3_v1_1146 }, { rule_kv3_v1_1147 }, { rule_kv3_v1_1148 }, { rule_kv3_v1_1149 },
+  { rule_kv3_v1_1150 }, { rule_kv3_v1_1151 }, { rule_kv3_v1_1152 }, { rule_kv3_v1_1153 }, { rule_kv3_v1_1154 },
+  { rule_kv3_v1_1155 }, { rule_kv3_v1_1156 }, { rule_kv3_v1_1157 }, { rule_kv3_v1_1158 }, { rule_kv3_v1_1159 },
+  { rule_kv3_v1_1160 }, { rule_kv3_v1_1161 }, { rule_kv3_v1_1162 }, { rule_kv3_v1_1163 }, { rule_kv3_v1_1164 },
+  { rule_kv3_v1_1165 }, { rule_kv3_v1_1166 }, { rule_kv3_v1_1167 }, { rule_kv3_v1_1168 }, { rule_kv3_v1_1169 },
+  { rule_kv3_v1_1170 }, { rule_kv3_v1_1171 }, { rule_kv3_v1_1172 }, { rule_kv3_v1_1173 }, { rule_kv3_v1_1174 },
+  { rule_kv3_v1_1175 }, { rule_kv3_v1_1176 }, { rule_kv3_v1_1177 }, { rule_kv3_v1_1178 }, { rule_kv3_v1_1179 },
+  { rule_kv3_v1_1180 }, { rule_kv3_v1_1181 }, { rule_kv3_v1_1182 }, { rule_kv3_v1_1183 }, { rule_kv3_v1_1184 },
+  { rule_kv3_v1_1185 }, { rule_kv3_v1_1186 }, { rule_kv3_v1_1187 }, { rule_kv3_v1_1188 }, { rule_kv3_v1_1189 },
+  { rule_kv3_v1_1190 }, { rule_kv3_v1_1191 }, { rule_kv3_v1_1192 }, { rule_kv3_v1_1193 }, { rule_kv3_v1_1194 },
+  { rule_kv3_v1_1195 }, { rule_kv3_v1_1196 }, { rule_kv3_v1_1197 }, { rule_kv3_v1_1198 }, { rule_kv3_v1_1199 },
+  { rule_kv3_v1_1200 }, { rule_kv3_v1_1201 }, { rule_kv3_v1_1202 }, { rule_kv3_v1_1203 }, { rule_kv3_v1_1204 },
+  { rule_kv3_v1_1205 }, { rule_kv3_v1_1206 }, { rule_kv3_v1_1207 }, { rule_kv3_v1_1208 }, { rule_kv3_v1_1209 },
+  { rule_kv3_v1_1210 }, { rule_kv3_v1_1211 }, { rule_kv3_v1_1212 }, { rule_kv3_v1_1213 }, { rule_kv3_v1_1214 },
+  { rule_kv3_v1_1215 }, { rule_kv3_v1_1216 }, { rule_kv3_v1_1217 }, { rule_kv3_v1_1218 }, { rule_kv3_v1_1219 },
+  { rule_kv3_v1_1220 }, { rule_kv3_v1_1221 }, { rule_kv3_v1_1222 }, { rule_kv3_v1_1223 }, { rule_kv3_v1_1224 },
+  { rule_kv3_v1_1225 }, { rule_kv3_v1_1226 }, { rule_kv3_v1_1227 }, { rule_kv3_v1_1228 },
+};
+
+static inline /* enum kvx_tokens_kv3_v1 */ int
+promote_immediate_kv3_v1 (/* enum kvx_tokens_kv3_v1 */ int tok)
+{
+  switch (tok)
+    {
+      case Immediate_kv3_v1_unsigned6:
+	return Immediate_kv3_v1_signed10;
+      case Immediate_kv3_v1_signed10:
+	return Immediate_kv3_v1_sysnumber;
+      case Immediate_kv3_v1_sysnumber:
+	return Immediate_kv3_v1_signed16;
+      case Immediate_kv3_v1_signed16:
+	return Immediate_kv3_v1_pcrel17;
+      case Immediate_kv3_v1_pcrel17:
+	return Immediate_kv3_v1_pcrel27;
+      case Immediate_kv3_v1_pcrel27:
+	return Immediate_kv3_v1_signed27;
+      case Immediate_kv3_v1_signed27:
+	return Immediate_kv3_v1_wrapped32;
+      case Immediate_kv3_v1_wrapped32:
+	return Immediate_kv3_v1_signed37;
+      case Immediate_kv3_v1_signed37:
+	return Immediate_kv3_v1_signed43;
+      case Immediate_kv3_v1_signed43:
+	return Immediate_kv3_v1_signed54;
+      case Immediate_kv3_v1_signed54:
+	return Immediate_kv3_v1_wrapped64;
+      default:
+	return tok;
+    }
+}
+
+__attribute__((unused))
+static void
+setup_kv3_v1 (void)
+{
+  env.tokens_names      = tokens_names_kv3_v1;
+  env.fst_reg           = RegClass_kv3_v1_aloneReg;
+  env.sys_reg           = RegClass_kv3_v1_systemReg;
+  env.fst_mod           = Modifier_kv3_v1_column;
+  env.promote_immediate = promote_immediate_kv3_v1;
+  env.rules             = rules_kv3_v1;
+  env.token_classes     = &token_classes_kv3_v1;
+  env.insns             = NULL;
+//  env.allow_all_sfr     = allow_all_sfr;
+}
+
+/* }}} KV3_V1 END */
+/* KV3_V2 BEGIN {{{ */
+static const char *tokens_names_kv3_v2[] = {
+  "Immediate_kv3_v2_brknumber", "Immediate_kv3_v2_pcrel17", "Immediate_kv3_v2_pcrel27",
+  "Immediate_kv3_v2_signed10", "Immediate_kv3_v2_signed16", "Immediate_kv3_v2_signed27",
+  "Immediate_kv3_v2_signed37", "Immediate_kv3_v2_signed43", "Immediate_kv3_v2_signed54",
+  "Immediate_kv3_v2_sysnumber", "Immediate_kv3_v2_unsigned6", "Immediate_kv3_v2_wrapped32",
+  "Immediate_kv3_v2_wrapped64", "Immediate_kv3_v2_wrapped8", "Modifier_kv3_v2_accesses",
+  "Modifier_kv3_v2_boolcas", "Modifier_kv3_v2_cachelev", "Modifier_kv3_v2_channel",
+  "Modifier_kv3_v2_coherency", "Modifier_kv3_v2_comparison", "Modifier_kv3_v2_conjugate",
+  "Modifier_kv3_v2_doscale", "Modifier_kv3_v2_exunum", "Modifier_kv3_v2_floatcomp",
+  "Modifier_kv3_v2_hindex", "Modifier_kv3_v2_lsomask", "Modifier_kv3_v2_lsumask",
+  "Modifier_kv3_v2_lsupack", "Modifier_kv3_v2_qindex", "Modifier_kv3_v2_rounding",
+  "Modifier_kv3_v2_scalarcond", "Modifier_kv3_v2_shuffleV", "Modifier_kv3_v2_shuffleX",
+  "Modifier_kv3_v2_silent", "Modifier_kv3_v2_simplecond", "Modifier_kv3_v2_speculate",
+  "Modifier_kv3_v2_splat32", "Modifier_kv3_v2_transpose", "Modifier_kv3_v2_variant",
+  "RegClass_kv3_v2_aloneReg", "RegClass_kv3_v2_blockReg", "RegClass_kv3_v2_blockRegE",
+  "RegClass_kv3_v2_blockRegO", "RegClass_kv3_v2_blockReg_0", "RegClass_kv3_v2_blockReg_1",
+  "RegClass_kv3_v2_buffer16Reg", "RegClass_kv3_v2_buffer2Reg", "RegClass_kv3_v2_buffer32Reg",
+  "RegClass_kv3_v2_buffer4Reg", "RegClass_kv3_v2_buffer64Reg", "RegClass_kv3_v2_buffer8Reg",
+  "RegClass_kv3_v2_coproReg", "RegClass_kv3_v2_coproReg0M4", "RegClass_kv3_v2_coproReg1M4",
+  "RegClass_kv3_v2_coproReg2M4", "RegClass_kv3_v2_coproReg3M4", "RegClass_kv3_v2_matrixReg",
+  "RegClass_kv3_v2_matrixReg_0", "RegClass_kv3_v2_matrixReg_1", "RegClass_kv3_v2_matrixReg_2",
+  "RegClass_kv3_v2_matrixReg_3", "RegClass_kv3_v2_onlyfxReg", "RegClass_kv3_v2_onlygetReg",
+  "RegClass_kv3_v2_onlyraReg", "RegClass_kv3_v2_onlysetReg", "RegClass_kv3_v2_onlyswapReg",
+  "RegClass_kv3_v2_pairedReg", "RegClass_kv3_v2_pairedReg_0", "RegClass_kv3_v2_pairedReg_1",
+  "RegClass_kv3_v2_quadReg", "RegClass_kv3_v2_quadReg_0", "RegClass_kv3_v2_quadReg_1",
+  "RegClass_kv3_v2_quadReg_2", "RegClass_kv3_v2_quadReg_3", "RegClass_kv3_v2_singleReg",
+  "RegClass_kv3_v2_systemReg", "RegClass_kv3_v2_tileReg", "RegClass_kv3_v2_tileReg_0",
+  "RegClass_kv3_v2_tileReg_1", "RegClass_kv3_v2_vectorReg", "RegClass_kv3_v2_vectorReg_0",
+  "RegClass_kv3_v2_vectorReg_1", "RegClass_kv3_v2_vectorReg_2", "RegClass_kv3_v2_vectorReg_3",
+  "abdbo", "abdd", "abdd.@",
+  "abdhq", "abdsbo", "abdsd",
+  "abdshq", "abdsw", "abdswp",
+  "abdubo", "abdud", "abduhq",
+  "abduw", "abduwp", "abdw",
+  "abdwp", "absbo", "absd",
+  "abshq", "abssbo", "abssd",
+  "absshq", "abssw", "absswp",
+  "absw", "abswp", "acswapd",
+  "acswapq", "acswapw", "addbo",
+  "addcd", "addcd.i", "addd",
+  "addd.@", "addhq", "addrbod",
+  "addrhqd", "addrwpd", "addsbo",
+  "addsd", "addshq", "addsw",
+  "addswp", "addurbod", "addurhqd",
+  "addurwpd", "addusbo", "addusd",
+  "addushq", "addusw", "adduswp",
+  "adduwd", "addw", "addwd",
+  "addwp", "addx16bo", "addx16d",
+  "addx16hq", "addx16uwd", "addx16w",
+  "addx16wd", "addx16wp", "addx2bo",
+  "addx2d", "addx2hq", "addx2uwd",
+  "addx2w", "addx2wd", "addx2wp",
+  "addx32d", "addx32uwd", "addx32w",
+  "addx32wd", "addx4bo", "addx4d",
+  "addx4hq", "addx4uwd", "addx4w",
+  "addx4wd", "addx4wp", "addx64d",
+  "addx64uwd", "addx64w", "addx64wd",
+  "addx8bo", "addx8d", "addx8hq",
+  "addx8uwd", "addx8w", "addx8wd",
+  "addx8wp", "aladdd", "aladdw",
+  "alclrd", "alclrw", "ald",
+  "alw", "andd", "andd.@",
+  "andnd", "andnd.@", "andnw",
+  "andrbod", "andrhqd", "andrwpd",
+  "andw", "asd", "asw",
+  "avgbo", "avghq", "avgrbo",
+  "avgrhq", "avgrubo", "avgruhq",
+  "avgruw", "avgruwp", "avgrw",
+  "avgrwp", "avgubo", "avguhq",
+  "avguw", "avguwp", "avgw",
+  "avgwp", "await", "barrier",
+  "break", "call", "cb",
+  "cbsd", "cbsw", "cbswp",
+  "clrf", "clsd", "clsw",
+  "clswp", "clzd", "clzw",
+  "clzwp", "cmovebo", "cmoved",
+  "cmovehq", "cmovewp", "cmuldt",
+  "cmulghxdt", "cmulglxdt", "cmulgmxdt",
+  "cmulxdt", "compd", "compnbo",
+  "compnd", "compnhq", "compnw",
+  "compnwp", "compuwd", "compw",
+  "compwd", "copyd", "copyo",
+  "copyq", "copyw", "crcbellw",
+  "crcbelmw", "crclellw", "crclelmw",
+  "ctzd", "ctzw", "ctzwp",
+  "d1inval", "dflushl", "dflushsw",
+  "dinvall", "dinvalsw", "dot2suwd",
+  "dot2suwdp", "dot2uwd", "dot2uwdp",
+  "dot2w", "dot2wd", "dot2wdp",
+  "dot2wzp", "dpurgel", "dpurgesw",
+  "dtouchl", "errop", "extfs",
+  "extfz", "fabsd", "fabshq",
+  "fabsw", "fabswp", "faddd",
+  "fadddc", "fadddc.c", "fadddp",
+  "faddho", "faddhq", "faddw",
+  "faddwc", "faddwc.c", "faddwcp",
+  "faddwcp.c", "faddwp", "faddwq",
+  "fcdivd", "fcdivw", "fcdivwp",
+  "fcompd", "fcompnd", "fcompnhq",
+  "fcompnw", "fcompnwp", "fcompw",
+  "fdot2w", "fdot2wd", "fdot2wdp",
+  "fdot2wzp", "fence", "ffdmasw",
+  "ffdmaswp", "ffdmaswq", "ffdmaw",
+  "ffdmawp", "ffdmawq", "ffdmdaw",
+  "ffdmdawp", "ffdmdawq", "ffdmdsw",
+  "ffdmdswp", "ffdmdswq", "ffdmsaw",
+  "ffdmsawp", "ffdmsawq", "ffdmsw",
+  "ffdmswp", "ffdmswq", "ffmad",
+  "ffmaho", "ffmahq", "ffmahw",
+  "ffmahwq", "ffmaw", "ffmawc",
+  "ffmawcp", "ffmawd", "ffmawdp",
+  "ffmawp", "ffmawq", "ffmsd",
+  "ffmsho", "ffmshq", "ffmshw",
+  "ffmshwq", "ffmsw", "ffmswc",
+  "ffmswcp", "ffmswd", "ffmswdp",
+  "ffmswp", "ffmswq", "fixedd",
+  "fixedud", "fixeduw", "fixeduwp",
+  "fixedw", "fixedwp", "floatd",
+  "floatud", "floatuw", "floatuwp",
+  "floatw", "floatwp", "fmaxd",
+  "fmaxhq", "fmaxw", "fmaxwp",
+  "fmind", "fminhq", "fminw",
+  "fminwp", "fmm212w", "fmm222w",
+  "fmma212w", "fmma222w", "fmms212w",
+  "fmms222w", "fmuld", "fmulho",
+  "fmulhq", "fmulhw", "fmulhwq",
+  "fmulw", "fmulwc", "fmulwcp",
+  "fmulwd", "fmulwdp", "fmulwp",
+  "fmulwq", "fnarrowdw", "fnarrowdwp",
+  "fnarrowwh", "fnarrowwhq", "fnegd",
+  "fneghq", "fnegw", "fnegwp",
+  "frecw", "frsrw", "fsbfd",
+  "fsbfdc", "fsbfdc.c", "fsbfdp",
+  "fsbfho", "fsbfhq", "fsbfw",
+  "fsbfwc", "fsbfwc.c", "fsbfwcp",
+  "fsbfwcp.c", "fsbfwp", "fsbfwq",
+  "fsdivd", "fsdivw", "fsdivwp",
+  "fsrecd", "fsrecw", "fsrecwp",
+  "fsrsrd", "fsrsrw", "fsrsrwp",
+  "fwidenlhw", "fwidenlhwp", "fwidenlwd",
+  "fwidenmhw", "fwidenmhwp", "fwidenmwd",
+  "get", "goto", "i1inval",
+  "i1invals", "icall", "iget",
+  "igoto", "insf", "landd",
+  "landw", "lbs", "lbz",
+  "ld", "lhs", "lhz",
+  "lnandd", "lnandw", "lnord",
+  "lnorw", "lo", "loopdo",
+  "lord", "lorw", "lq",
+  "lws", "lwz", "maddd",
+  "madddt", "maddhq", "maddhwq",
+  "maddmwq", "maddsudt", "maddsuhwq",
+  "maddsumwq", "maddsuwd", "maddsuwdp",
+  "maddudt", "madduhwq", "maddumwq",
+  "madduwd", "madduwdp", "madduzdt",
+  "maddw", "maddwd", "maddwdp",
+  "maddwp", "maddwq", "make",
+  "maxbo", "maxd", "maxd.@",
+  "maxhq", "maxrbod", "maxrhqd",
+  "maxrwpd", "maxubo", "maxud",
+  "maxud.@", "maxuhq", "maxurbod",
+  "maxurhqd", "maxurwpd", "maxuw",
+  "maxuwp", "maxw", "maxwp",
+  "minbo", "mind", "mind.@",
+  "minhq", "minrbod", "minrhqd",
+  "minrwpd", "minubo", "minud",
+  "minud.@", "minuhq", "minurbod",
+  "minurhqd", "minurwpd", "minuw",
+  "minuwp", "minw", "minwp",
+  "mm212w", "mma212w", "mms212w",
+  "msbfd", "msbfdt", "msbfhq",
+  "msbfhwq", "msbfmwq", "msbfsudt",
+  "msbfsuhwq", "msbfsumwq", "msbfsuwd",
+  "msbfsuwdp", "msbfudt", "msbfuhwq",
+  "msbfumwq", "msbfuwd", "msbfuwdp",
+  "msbfuzdt", "msbfw", "msbfwd",
+  "msbfwdp", "msbfwp", "msbfwq",
+  "muld", "muldt", "mulhq",
+  "mulhwq", "mulmwq", "mulsudt",
+  "mulsuhwq", "mulsumwq", "mulsuwd",
+  "mulsuwdp", "muludt", "muluhwq",
+  "mulumwq", "muluwd", "muluwdp",
+  "mulw", "mulwd", "mulwdp",
+  "mulwp", "mulwq", "nandd",
+  "nandd.@", "nandw", "negbo",
+  "negd", "neghq", "negsbo",
+  "negsd", "negshq", "negsw",
+  "negswp", "negw", "negwp",
+  "nop", "nord", "nord.@",
+  "norw", "notd", "notw",
+  "nxord", "nxord.@", "nxorw",
+  "ord", "ord.@", "ornd",
+  "ornd.@", "ornw", "orrbod",
+  "orrhqd", "orrwpd", "orw",
+  "pcrel", "ret", "rfe",
+  "rolw", "rolwps", "rorw",
+  "rorwps", "rswap", "sb",
+  "sbfbo", "sbfcd", "sbfcd.i",
+  "sbfd", "sbfd.@", "sbfhq",
+  "sbfsbo", "sbfsd", "sbfshq",
+  "sbfsw", "sbfswp", "sbfusbo",
+  "sbfusd", "sbfushq", "sbfusw",
+  "sbfuswp", "sbfuwd", "sbfw",
+  "sbfwd", "sbfwp", "sbfx16bo",
+  "sbfx16d", "sbfx16hq", "sbfx16uwd",
+  "sbfx16w", "sbfx16wd", "sbfx16wp",
+  "sbfx2bo", "sbfx2d", "sbfx2hq",
+  "sbfx2uwd", "sbfx2w", "sbfx2wd",
+  "sbfx2wp", "sbfx32d", "sbfx32uwd",
+  "sbfx32w", "sbfx32wd", "sbfx4bo",
+  "sbfx4d", "sbfx4hq", "sbfx4uwd",
+  "sbfx4w", "sbfx4wd", "sbfx4wp",
+  "sbfx64d", "sbfx64uwd", "sbfx64w",
+  "sbfx64wd", "sbfx8bo", "sbfx8d",
+  "sbfx8hq", "sbfx8uwd", "sbfx8w",
+  "sbfx8wd", "sbfx8wp", "sbmm8",
+  "sbmm8.@", "sbmmt8", "sbmmt8.@",
+  "scall", "sd", "set",
+  "sh", "sleep", "sllbos",
+  "slld", "sllhqs", "sllw",
+  "sllwps", "slsbos", "slsd",
+  "slshqs", "slsw", "slswps",
+  "slusbos", "slusd", "slushqs",
+  "slusw", "sluswps", "so",
+  "sq", "srabos", "srad",
+  "srahqs", "sraw", "srawps",
+  "srlbos", "srld", "srlhqs",
+  "srlw", "srlwps", "srsbos",
+  "srsd", "srshqs", "srsw",
+  "srswps", "stop", "stsud",
+  "stsuhq", "stsuw", "stsuwp",
+  "sw", "sxbd", "sxhd",
+  "sxlbhq", "sxlhwp", "sxmbhq",
+  "sxmhwp", "sxwd", "syncgroup",
+  "tlbdinval", "tlbiinval", "tlbprobe",
+  "tlbread", "tlbwrite", "waitit",
+  "wfxl", "wfxm", "xaccesso",
+  "xaligno", "xandno", "xando",
+  "xclampwo", "xcopyo", "xcopyv",
+  "xcopyx", "xffma44hw", "xfmaxhx",
+  "xfminhx", "xfmma484hw", "xfnarrow44wh",
+  "xfscalewo", "xlo", "xmadd44bw0",
+  "xmadd44bw1", "xmaddifwo", "xmaddsu44bw0",
+  "xmaddsu44bw1", "xmaddu44bw0", "xmaddu44bw1",
+  "xmma4164bw", "xmma484bw", "xmmasu4164bw",
+  "xmmasu484bw", "xmmau4164bw", "xmmau484bw",
+  "xmmaus4164bw", "xmmaus484bw", "xmovefd",
+  "xmovefo", "xmovefq", "xmovetd",
+  "xmovetq", "xmsbfifwo", "xmt44d",
+  "xnando", "xnoro", "xnxoro",
+  "xord", "xord.@", "xorno",
+  "xoro", "xorrbod", "xorrhqd",
+  "xorrwpd", "xorw", "xrecvo",
+  "xsbmm8dq", "xsbmmt8dq", "xsendo",
+  "xsendrecvo", "xso", "xsplatdo",
+  "xsplatov", "xsplatox", "xsx48bw",
+  "xtrunc48wb", "xxoro", "xzx48bw",
+  "zxbd", "zxhd", "zxlbhq",
+  "zxlhwp", "zxmbhq", "zxmhwp",
+  "zxwd", "comma", "equal",
+  "qmark", "rsbracket", "lsbracket",
+};
+
+\f
+static const char *insn_kv3_v2_abdbo[] = { "abdbo" };
+static const char *insn_kv3_v2_abdd[] = { "abdd" };
+static const char *insn_kv3_v2_abdd_abase[] = { "abdd.@" };
+static const char *insn_kv3_v2_abdhq[] = { "abdhq" };
+static const char *insn_kv3_v2_abdsbo[] = { "abdsbo" };
+static const char *insn_kv3_v2_abdsd[] = { "abdsd" };
+static const char *insn_kv3_v2_abdshq[] = { "abdshq" };
+static const char *insn_kv3_v2_abdsw[] = { "abdsw" };
+static const char *insn_kv3_v2_abdswp[] = { "abdswp" };
+static const char *insn_kv3_v2_abdubo[] = { "abdubo" };
+static const char *insn_kv3_v2_abdud[] = { "abdud" };
+static const char *insn_kv3_v2_abduhq[] = { "abduhq" };
+static const char *insn_kv3_v2_abduw[] = { "abduw" };
+static const char *insn_kv3_v2_abduwp[] = { "abduwp" };
+static const char *insn_kv3_v2_abdw[] = { "abdw" };
+static const char *insn_kv3_v2_abdwp[] = { "abdwp" };
+static const char *insn_kv3_v2_absbo[] = { "absbo" };
+static const char *insn_kv3_v2_absd[] = { "absd" };
+static const char *insn_kv3_v2_abshq[] = { "abshq" };
+static const char *insn_kv3_v2_abssbo[] = { "abssbo" };
+static const char *insn_kv3_v2_abssd[] = { "abssd" };
+static const char *insn_kv3_v2_absshq[] = { "absshq" };
+static const char *insn_kv3_v2_abssw[] = { "abssw" };
+static const char *insn_kv3_v2_absswp[] = { "absswp" };
+static const char *insn_kv3_v2_absw[] = { "absw" };
+static const char *insn_kv3_v2_abswp[] = { "abswp" };
+static const char *insn_kv3_v2_acswapd[] = { "acswapd" };
+static const char *insn_kv3_v2_acswapq[] = { "acswapq" };
+static const char *insn_kv3_v2_acswapw[] = { "acswapw" };
+static const char *insn_kv3_v2_addbo[] = { "addbo" };
+static const char *insn_kv3_v2_addcd[] = { "addcd" };
+static const char *insn_kv3_v2_addcd_i[] = { "addcd.i" };
+static const char *insn_kv3_v2_addd[] = { "addd" };
+static const char *insn_kv3_v2_addd_abase[] = { "addd.@" };
+static const char *insn_kv3_v2_addhq[] = { "addhq" };
+static const char *insn_kv3_v2_addrbod[] = { "addrbod" };
+static const char *insn_kv3_v2_addrhqd[] = { "addrhqd" };
+static const char *insn_kv3_v2_addrwpd[] = { "addrwpd" };
+static const char *insn_kv3_v2_addsbo[] = { "addsbo" };
+static const char *insn_kv3_v2_addsd[] = { "addsd" };
+static const char *insn_kv3_v2_addshq[] = { "addshq" };
+static const char *insn_kv3_v2_addsw[] = { "addsw" };
+static const char *insn_kv3_v2_addswp[] = { "addswp" };
+static const char *insn_kv3_v2_addurbod[] = { "addurbod" };
+static const char *insn_kv3_v2_addurhqd[] = { "addurhqd" };
+static const char *insn_kv3_v2_addurwpd[] = { "addurwpd" };
+static const char *insn_kv3_v2_addusbo[] = { "addusbo" };
+static const char *insn_kv3_v2_addusd[] = { "addusd" };
+static const char *insn_kv3_v2_addushq[] = { "addushq" };
+static const char *insn_kv3_v2_addusw[] = { "addusw" };
+static const char *insn_kv3_v2_adduswp[] = { "adduswp" };
+static const char *insn_kv3_v2_adduwd[] = { "adduwd" };
+static const char *insn_kv3_v2_addw[] = { "addw" };
+static const char *insn_kv3_v2_addwd[] = { "addwd" };
+static const char *insn_kv3_v2_addwp[] = { "addwp" };
+static const char *insn_kv3_v2_addx16bo[] = { "addx16bo" };
+static const char *insn_kv3_v2_addx16d[] = { "addx16d" };
+static const char *insn_kv3_v2_addx16hq[] = { "addx16hq" };
+static const char *insn_kv3_v2_addx16uwd[] = { "addx16uwd" };
+static const char *insn_kv3_v2_addx16w[] = { "addx16w" };
+static const char *insn_kv3_v2_addx16wd[] = { "addx16wd" };
+static const char *insn_kv3_v2_addx16wp[] = { "addx16wp" };
+static const char *insn_kv3_v2_addx2bo[] = { "addx2bo" };
+static const char *insn_kv3_v2_addx2d[] = { "addx2d" };
+static const char *insn_kv3_v2_addx2hq[] = { "addx2hq" };
+static const char *insn_kv3_v2_addx2uwd[] = { "addx2uwd" };
+static const char *insn_kv3_v2_addx2w[] = { "addx2w" };
+static const char *insn_kv3_v2_addx2wd[] = { "addx2wd" };
+static const char *insn_kv3_v2_addx2wp[] = { "addx2wp" };
+static const char *insn_kv3_v2_addx32d[] = { "addx32d" };
+static const char *insn_kv3_v2_addx32uwd[] = { "addx32uwd" };
+static const char *insn_kv3_v2_addx32w[] = { "addx32w" };
+static const char *insn_kv3_v2_addx32wd[] = { "addx32wd" };
+static const char *insn_kv3_v2_addx4bo[] = { "addx4bo" };
+static const char *insn_kv3_v2_addx4d[] = { "addx4d" };
+static const char *insn_kv3_v2_addx4hq[] = { "addx4hq" };
+static const char *insn_kv3_v2_addx4uwd[] = { "addx4uwd" };
+static const char *insn_kv3_v2_addx4w[] = { "addx4w" };
+static const char *insn_kv3_v2_addx4wd[] = { "addx4wd" };
+static const char *insn_kv3_v2_addx4wp[] = { "addx4wp" };
+static const char *insn_kv3_v2_addx64d[] = { "addx64d" };
+static const char *insn_kv3_v2_addx64uwd[] = { "addx64uwd" };
+static const char *insn_kv3_v2_addx64w[] = { "addx64w" };
+static const char *insn_kv3_v2_addx64wd[] = { "addx64wd" };
+static const char *insn_kv3_v2_addx8bo[] = { "addx8bo" };
+static const char *insn_kv3_v2_addx8d[] = { "addx8d" };
+static const char *insn_kv3_v2_addx8hq[] = { "addx8hq" };
+static const char *insn_kv3_v2_addx8uwd[] = { "addx8uwd" };
+static const char *insn_kv3_v2_addx8w[] = { "addx8w" };
+static const char *insn_kv3_v2_addx8wd[] = { "addx8wd" };
+static const char *insn_kv3_v2_addx8wp[] = { "addx8wp" };
+static const char *insn_kv3_v2_aladdd[] = { "aladdd" };
+static const char *insn_kv3_v2_aladdw[] = { "aladdw" };
+static const char *insn_kv3_v2_alclrd[] = { "alclrd" };
+static const char *insn_kv3_v2_alclrw[] = { "alclrw" };
+static const char *insn_kv3_v2_ald[] = { "ald" };
+static const char *insn_kv3_v2_alw[] = { "alw" };
+static const char *insn_kv3_v2_andd[] = { "andd" };
+static const char *insn_kv3_v2_andd_abase[] = { "andd.@" };
+static const char *insn_kv3_v2_andnd[] = { "andnd" };
+static const char *insn_kv3_v2_andnd_abase[] = { "andnd.@" };
+static const char *insn_kv3_v2_andnw[] = { "andnw" };
+static const char *insn_kv3_v2_andrbod[] = { "andrbod" };
+static const char *insn_kv3_v2_andrhqd[] = { "andrhqd" };
+static const char *insn_kv3_v2_andrwpd[] = { "andrwpd" };
+static const char *insn_kv3_v2_andw[] = { "andw" };
+static const char *insn_kv3_v2_asd[] = { "asd" };
+static const char *insn_kv3_v2_asw[] = { "asw" };
+static const char *insn_kv3_v2_avgbo[] = { "avgbo" };
+static const char *insn_kv3_v2_avghq[] = { "avghq" };
+static const char *insn_kv3_v2_avgrbo[] = { "avgrbo" };
+static const char *insn_kv3_v2_avgrhq[] = { "avgrhq" };
+static const char *insn_kv3_v2_avgrubo[] = { "avgrubo" };
+static const char *insn_kv3_v2_avgruhq[] = { "avgruhq" };
+static const char *insn_kv3_v2_avgruw[] = { "avgruw" };
+static const char *insn_kv3_v2_avgruwp[] = { "avgruwp" };
+static const char *insn_kv3_v2_avgrw[] = { "avgrw" };
+static const char *insn_kv3_v2_avgrwp[] = { "avgrwp" };
+static const char *insn_kv3_v2_avgubo[] = { "avgubo" };
+static const char *insn_kv3_v2_avguhq[] = { "avguhq" };
+static const char *insn_kv3_v2_avguw[] = { "avguw" };
+static const char *insn_kv3_v2_avguwp[] = { "avguwp" };
+static const char *insn_kv3_v2_avgw[] = { "avgw" };
+static const char *insn_kv3_v2_avgwp[] = { "avgwp" };
+static const char *insn_kv3_v2_await[] = { "await" };
+static const char *insn_kv3_v2_barrier[] = { "barrier" };
+static const char *insn_kv3_v2_break[] = { "break" };
+static const char *insn_kv3_v2_call[] = { "call" };
+static const char *insn_kv3_v2_cb[] = { "cb" };
+static const char *insn_kv3_v2_cbsd[] = { "cbsd" };
+static const char *insn_kv3_v2_cbsw[] = { "cbsw" };
+static const char *insn_kv3_v2_cbswp[] = { "cbswp" };
+static const char *insn_kv3_v2_clrf[] = { "clrf" };
+static const char *insn_kv3_v2_clsd[] = { "clsd" };
+static const char *insn_kv3_v2_clsw[] = { "clsw" };
+static const char *insn_kv3_v2_clswp[] = { "clswp" };
+static const char *insn_kv3_v2_clzd[] = { "clzd" };
+static const char *insn_kv3_v2_clzw[] = { "clzw" };
+static const char *insn_kv3_v2_clzwp[] = { "clzwp" };
+static const char *insn_kv3_v2_cmovebo[] = { "cmovebo" };
+static const char *insn_kv3_v2_cmoved[] = { "cmoved" };
+static const char *insn_kv3_v2_cmovehq[] = { "cmovehq" };
+static const char *insn_kv3_v2_cmovewp[] = { "cmovewp" };
+static const char *insn_kv3_v2_cmuldt[] = { "cmuldt" };
+static const char *insn_kv3_v2_cmulghxdt[] = { "cmulghxdt" };
+static const char *insn_kv3_v2_cmulglxdt[] = { "cmulglxdt" };
+static const char *insn_kv3_v2_cmulgmxdt[] = { "cmulgmxdt" };
+static const char *insn_kv3_v2_cmulxdt[] = { "cmulxdt" };
+static const char *insn_kv3_v2_compd[] = { "compd" };
+static const char *insn_kv3_v2_compnbo[] = { "compnbo" };
+static const char *insn_kv3_v2_compnd[] = { "compnd" };
+static const char *insn_kv3_v2_compnhq[] = { "compnhq" };
+static const char *insn_kv3_v2_compnw[] = { "compnw" };
+static const char *insn_kv3_v2_compnwp[] = { "compnwp" };
+static const char *insn_kv3_v2_compuwd[] = { "compuwd" };
+static const char *insn_kv3_v2_compw[] = { "compw" };
+static const char *insn_kv3_v2_compwd[] = { "compwd" };
+static const char *insn_kv3_v2_copyd[] = { "copyd" };
+static const char *insn_kv3_v2_copyo[] = { "copyo" };
+static const char *insn_kv3_v2_copyq[] = { "copyq" };
+static const char *insn_kv3_v2_copyw[] = { "copyw" };
+static const char *insn_kv3_v2_crcbellw[] = { "crcbellw" };
+static const char *insn_kv3_v2_crcbelmw[] = { "crcbelmw" };
+static const char *insn_kv3_v2_crclellw[] = { "crclellw" };
+static const char *insn_kv3_v2_crclelmw[] = { "crclelmw" };
+static const char *insn_kv3_v2_ctzd[] = { "ctzd" };
+static const char *insn_kv3_v2_ctzw[] = { "ctzw" };
+static const char *insn_kv3_v2_ctzwp[] = { "ctzwp" };
+static const char *insn_kv3_v2_d1inval[] = { "d1inval" };
+static const char *insn_kv3_v2_dflushl[] = { "dflushl" };
+static const char *insn_kv3_v2_dflushsw[] = { "dflushsw" };
+static const char *insn_kv3_v2_dinvall[] = { "dinvall" };
+static const char *insn_kv3_v2_dinvalsw[] = { "dinvalsw" };
+static const char *insn_kv3_v2_dot2suwd[] = { "dot2suwd" };
+static const char *insn_kv3_v2_dot2suwdp[] = { "dot2suwdp" };
+static const char *insn_kv3_v2_dot2uwd[] = { "dot2uwd" };
+static const char *insn_kv3_v2_dot2uwdp[] = { "dot2uwdp" };
+static const char *insn_kv3_v2_dot2w[] = { "dot2w" };
+static const char *insn_kv3_v2_dot2wd[] = { "dot2wd" };
+static const char *insn_kv3_v2_dot2wdp[] = { "dot2wdp" };
+static const char *insn_kv3_v2_dot2wzp[] = { "dot2wzp" };
+static const char *insn_kv3_v2_dpurgel[] = { "dpurgel" };
+static const char *insn_kv3_v2_dpurgesw[] = { "dpurgesw" };
+static const char *insn_kv3_v2_dtouchl[] = { "dtouchl" };
+static const char *insn_kv3_v2_errop[] = { "errop" };
+static const char *insn_kv3_v2_extfs[] = { "extfs" };
+static const char *insn_kv3_v2_extfz[] = { "extfz" };
+static const char *insn_kv3_v2_fabsd[] = { "fabsd" };
+static const char *insn_kv3_v2_fabshq[] = { "fabshq" };
+static const char *insn_kv3_v2_fabsw[] = { "fabsw" };
+static const char *insn_kv3_v2_fabswp[] = { "fabswp" };
+static const char *insn_kv3_v2_faddd[] = { "faddd" };
+static const char *insn_kv3_v2_fadddc[] = { "fadddc" };
+static const char *insn_kv3_v2_fadddc_c[] = { "fadddc.c" };
+static const char *insn_kv3_v2_fadddp[] = { "fadddp" };
+static const char *insn_kv3_v2_faddho[] = { "faddho" };
+static const char *insn_kv3_v2_faddhq[] = { "faddhq" };
+static const char *insn_kv3_v2_faddw[] = { "faddw" };
+static const char *insn_kv3_v2_faddwc[] = { "faddwc" };
+static const char *insn_kv3_v2_faddwc_c[] = { "faddwc.c" };
+static const char *insn_kv3_v2_faddwcp[] = { "faddwcp" };
+static const char *insn_kv3_v2_faddwcp_c[] = { "faddwcp.c" };
+static const char *insn_kv3_v2_faddwp[] = { "faddwp" };
+static const char *insn_kv3_v2_faddwq[] = { "faddwq" };
+static const char *insn_kv3_v2_fcdivd[] = { "fcdivd" };
+static const char *insn_kv3_v2_fcdivw[] = { "fcdivw" };
+static const char *insn_kv3_v2_fcdivwp[] = { "fcdivwp" };
+static const char *insn_kv3_v2_fcompd[] = { "fcompd" };
+static const char *insn_kv3_v2_fcompnd[] = { "fcompnd" };
+static const char *insn_kv3_v2_fcompnhq[] = { "fcompnhq" };
+static const char *insn_kv3_v2_fcompnw[] = { "fcompnw" };
+static const char *insn_kv3_v2_fcompnwp[] = { "fcompnwp" };
+static const char *insn_kv3_v2_fcompw[] = { "fcompw" };
+static const char *insn_kv3_v2_fdot2w[] = { "fdot2w" };
+static const char *insn_kv3_v2_fdot2wd[] = { "fdot2wd" };
+static const char *insn_kv3_v2_fdot2wdp[] = { "fdot2wdp" };
+static const char *insn_kv3_v2_fdot2wzp[] = { "fdot2wzp" };
+static const char *insn_kv3_v2_fence[] = { "fence" };
+static const char *insn_kv3_v2_ffdmasw[] = { "ffdmasw" };
+static const char *insn_kv3_v2_ffdmaswp[] = { "ffdmaswp" };
+static const char *insn_kv3_v2_ffdmaswq[] = { "ffdmaswq" };
+static const char *insn_kv3_v2_ffdmaw[] = { "ffdmaw" };
+static const char *insn_kv3_v2_ffdmawp[] = { "ffdmawp" };
+static const char *insn_kv3_v2_ffdmawq[] = { "ffdmawq" };
+static const char *insn_kv3_v2_ffdmdaw[] = { "ffdmdaw" };
+static const char *insn_kv3_v2_ffdmdawp[] = { "ffdmdawp" };
+static const char *insn_kv3_v2_ffdmdawq[] = { "ffdmdawq" };
+static const char *insn_kv3_v2_ffdmdsw[] = { "ffdmdsw" };
+static const char *insn_kv3_v2_ffdmdswp[] = { "ffdmdswp" };
+static const char *insn_kv3_v2_ffdmdswq[] = { "ffdmdswq" };
+static const char *insn_kv3_v2_ffdmsaw[] = { "ffdmsaw" };
+static const char *insn_kv3_v2_ffdmsawp[] = { "ffdmsawp" };
+static const char *insn_kv3_v2_ffdmsawq[] = { "ffdmsawq" };
+static const char *insn_kv3_v2_ffdmsw[] = { "ffdmsw" };
+static const char *insn_kv3_v2_ffdmswp[] = { "ffdmswp" };
+static const char *insn_kv3_v2_ffdmswq[] = { "ffdmswq" };
+static const char *insn_kv3_v2_ffmad[] = { "ffmad" };
+static const char *insn_kv3_v2_ffmaho[] = { "ffmaho" };
+static const char *insn_kv3_v2_ffmahq[] = { "ffmahq" };
+static const char *insn_kv3_v2_ffmahw[] = { "ffmahw" };
+static const char *insn_kv3_v2_ffmahwq[] = { "ffmahwq" };
+static const char *insn_kv3_v2_ffmaw[] = { "ffmaw" };
+static const char *insn_kv3_v2_ffmawc[] = { "ffmawc" };
+static const char *insn_kv3_v2_ffmawcp[] = { "ffmawcp" };
+static const char *insn_kv3_v2_ffmawd[] = { "ffmawd" };
+static const char *insn_kv3_v2_ffmawdp[] = { "ffmawdp" };
+static const char *insn_kv3_v2_ffmawp[] = { "ffmawp" };
+static const char *insn_kv3_v2_ffmawq[] = { "ffmawq" };
+static const char *insn_kv3_v2_ffmsd[] = { "ffmsd" };
+static const char *insn_kv3_v2_ffmsho[] = { "ffmsho" };
+static const char *insn_kv3_v2_ffmshq[] = { "ffmshq" };
+static const char *insn_kv3_v2_ffmshw[] = { "ffmshw" };
+static const char *insn_kv3_v2_ffmshwq[] = { "ffmshwq" };
+static const char *insn_kv3_v2_ffmsw[] = { "ffmsw" };
+static const char *insn_kv3_v2_ffmswc[] = { "ffmswc" };
+static const char *insn_kv3_v2_ffmswcp[] = { "ffmswcp" };
+static const char *insn_kv3_v2_ffmswd[] = { "ffmswd" };
+static const char *insn_kv3_v2_ffmswdp[] = { "ffmswdp" };
+static const char *insn_kv3_v2_ffmswp[] = { "ffmswp" };
+static const char *insn_kv3_v2_ffmswq[] = { "ffmswq" };
+static const char *insn_kv3_v2_fixedd[] = { "fixedd" };
+static const char *insn_kv3_v2_fixedud[] = { "fixedud" };
+static const char *insn_kv3_v2_fixeduw[] = { "fixeduw" };
+static const char *insn_kv3_v2_fixeduwp[] = { "fixeduwp" };
+static const char *insn_kv3_v2_fixedw[] = { "fixedw" };
+static const char *insn_kv3_v2_fixedwp[] = { "fixedwp" };
+static const char *insn_kv3_v2_floatd[] = { "floatd" };
+static const char *insn_kv3_v2_floatud[] = { "floatud" };
+static const char *insn_kv3_v2_floatuw[] = { "floatuw" };
+static const char *insn_kv3_v2_floatuwp[] = { "floatuwp" };
+static const char *insn_kv3_v2_floatw[] = { "floatw" };
+static const char *insn_kv3_v2_floatwp[] = { "floatwp" };
+static const char *insn_kv3_v2_fmaxd[] = { "fmaxd" };
+static const char *insn_kv3_v2_fmaxhq[] = { "fmaxhq" };
+static const char *insn_kv3_v2_fmaxw[] = { "fmaxw" };
+static const char *insn_kv3_v2_fmaxwp[] = { "fmaxwp" };
+static const char *insn_kv3_v2_fmind[] = { "fmind" };
+static const char *insn_kv3_v2_fminhq[] = { "fminhq" };
+static const char *insn_kv3_v2_fminw[] = { "fminw" };
+static const char *insn_kv3_v2_fminwp[] = { "fminwp" };
+static const char *insn_kv3_v2_fmm212w[] = { "fmm212w" };
+static const char *insn_kv3_v2_fmm222w[] = { "fmm222w" };
+static const char *insn_kv3_v2_fmma212w[] = { "fmma212w" };
+static const char *insn_kv3_v2_fmma222w[] = { "fmma222w" };
+static const char *insn_kv3_v2_fmms212w[] = { "fmms212w" };
+static const char *insn_kv3_v2_fmms222w[] = { "fmms222w" };
+static const char *insn_kv3_v2_fmuld[] = { "fmuld" };
+static const char *insn_kv3_v2_fmulho[] = { "fmulho" };
+static const char *insn_kv3_v2_fmulhq[] = { "fmulhq" };
+static const char *insn_kv3_v2_fmulhw[] = { "fmulhw" };
+static const char *insn_kv3_v2_fmulhwq[] = { "fmulhwq" };
+static const char *insn_kv3_v2_fmulw[] = { "fmulw" };
+static const char *insn_kv3_v2_fmulwc[] = { "fmulwc" };
+static const char *insn_kv3_v2_fmulwcp[] = { "fmulwcp" };
+static const char *insn_kv3_v2_fmulwd[] = { "fmulwd" };
+static const char *insn_kv3_v2_fmulwdp[] = { "fmulwdp" };
+static const char *insn_kv3_v2_fmulwp[] = { "fmulwp" };
+static const char *insn_kv3_v2_fmulwq[] = { "fmulwq" };
+static const char *insn_kv3_v2_fnarrowdw[] = { "fnarrowdw" };
+static const char *insn_kv3_v2_fnarrowdwp[] = { "fnarrowdwp" };
+static const char *insn_kv3_v2_fnarrowwh[] = { "fnarrowwh" };
+static const char *insn_kv3_v2_fnarrowwhq[] = { "fnarrowwhq" };
+static const char *insn_kv3_v2_fnegd[] = { "fnegd" };
+static const char *insn_kv3_v2_fneghq[] = { "fneghq" };
+static const char *insn_kv3_v2_fnegw[] = { "fnegw" };
+static const char *insn_kv3_v2_fnegwp[] = { "fnegwp" };
+static const char *insn_kv3_v2_frecw[] = { "frecw" };
+static const char *insn_kv3_v2_frsrw[] = { "frsrw" };
+static const char *insn_kv3_v2_fsbfd[] = { "fsbfd" };
+static const char *insn_kv3_v2_fsbfdc[] = { "fsbfdc" };
+static const char *insn_kv3_v2_fsbfdc_c[] = { "fsbfdc.c" };
+static const char *insn_kv3_v2_fsbfdp[] = { "fsbfdp" };
+static const char *insn_kv3_v2_fsbfho[] = { "fsbfho" };
+static const char *insn_kv3_v2_fsbfhq[] = { "fsbfhq" };
+static const char *insn_kv3_v2_fsbfw[] = { "fsbfw" };
+static const char *insn_kv3_v2_fsbfwc[] = { "fsbfwc" };
+static const char *insn_kv3_v2_fsbfwc_c[] = { "fsbfwc.c" };
+static const char *insn_kv3_v2_fsbfwcp[] = { "fsbfwcp" };
+static const char *insn_kv3_v2_fsbfwcp_c[] = { "fsbfwcp.c" };
+static const char *insn_kv3_v2_fsbfwp[] = { "fsbfwp" };
+static const char *insn_kv3_v2_fsbfwq[] = { "fsbfwq" };
+static const char *insn_kv3_v2_fsdivd[] = { "fsdivd" };
+static const char *insn_kv3_v2_fsdivw[] = { "fsdivw" };
+static const char *insn_kv3_v2_fsdivwp[] = { "fsdivwp" };
+static const char *insn_kv3_v2_fsrecd[] = { "fsrecd" };
+static const char *insn_kv3_v2_fsrecw[] = { "fsrecw" };
+static const char *insn_kv3_v2_fsrecwp[] = { "fsrecwp" };
+static const char *insn_kv3_v2_fsrsrd[] = { "fsrsrd" };
+static const char *insn_kv3_v2_fsrsrw[] = { "fsrsrw" };
+static const char *insn_kv3_v2_fsrsrwp[] = { "fsrsrwp" };
+static const char *insn_kv3_v2_fwidenlhw[] = { "fwidenlhw" };
+static const char *insn_kv3_v2_fwidenlhwp[] = { "fwidenlhwp" };
+static const char *insn_kv3_v2_fwidenlwd[] = { "fwidenlwd" };
+static const char *insn_kv3_v2_fwidenmhw[] = { "fwidenmhw" };
+static const char *insn_kv3_v2_fwidenmhwp[] = { "fwidenmhwp" };
+static const char *insn_kv3_v2_fwidenmwd[] = { "fwidenmwd" };
+static const char *insn_kv3_v2_get[] = { "get" };
+static const char *insn_kv3_v2_goto[] = { "goto" };
+static const char *insn_kv3_v2_i1inval[] = { "i1inval" };
+static const char *insn_kv3_v2_i1invals[] = { "i1invals" };
+static const char *insn_kv3_v2_icall[] = { "icall" };
+static const char *insn_kv3_v2_iget[] = { "iget" };
+static const char *insn_kv3_v2_igoto[] = { "igoto" };
+static const char *insn_kv3_v2_insf[] = { "insf" };
+static const char *insn_kv3_v2_landd[] = { "landd" };
+static const char *insn_kv3_v2_landw[] = { "landw" };
+static const char *insn_kv3_v2_lbs[] = { "lbs" };
+static const char *insn_kv3_v2_lbz[] = { "lbz" };
+static const char *insn_kv3_v2_ld[] = { "ld" };
+static const char *insn_kv3_v2_lhs[] = { "lhs" };
+static const char *insn_kv3_v2_lhz[] = { "lhz" };
+static const char *insn_kv3_v2_lnandd[] = { "lnandd" };
+static const char *insn_kv3_v2_lnandw[] = { "lnandw" };
+static const char *insn_kv3_v2_lnord[] = { "lnord" };
+static const char *insn_kv3_v2_lnorw[] = { "lnorw" };
+static const char *insn_kv3_v2_lo[] = { "lo" };
+static const char *insn_kv3_v2_loopdo[] = { "loopdo" };
+static const char *insn_kv3_v2_lord[] = { "lord" };
+static const char *insn_kv3_v2_lorw[] = { "lorw" };
+static const char *insn_kv3_v2_lq[] = { "lq" };
+static const char *insn_kv3_v2_lws[] = { "lws" };
+static const char *insn_kv3_v2_lwz[] = { "lwz" };
+static const char *insn_kv3_v2_maddd[] = { "maddd" };
+static const char *insn_kv3_v2_madddt[] = { "madddt" };
+static const char *insn_kv3_v2_maddhq[] = { "maddhq" };
+static const char *insn_kv3_v2_maddhwq[] = { "maddhwq" };
+static const char *insn_kv3_v2_maddmwq[] = { "maddmwq" };
+static const char *insn_kv3_v2_maddsudt[] = { "maddsudt" };
+static const char *insn_kv3_v2_maddsuhwq[] = { "maddsuhwq" };
+static const char *insn_kv3_v2_maddsumwq[] = { "maddsumwq" };
+static const char *insn_kv3_v2_maddsuwd[] = { "maddsuwd" };
+static const char *insn_kv3_v2_maddsuwdp[] = { "maddsuwdp" };
+static const char *insn_kv3_v2_maddudt[] = { "maddudt" };
+static const char *insn_kv3_v2_madduhwq[] = { "madduhwq" };
+static const char *insn_kv3_v2_maddumwq[] = { "maddumwq" };
+static const char *insn_kv3_v2_madduwd[] = { "madduwd" };
+static const char *insn_kv3_v2_madduwdp[] = { "madduwdp" };
+static const char *insn_kv3_v2_madduzdt[] = { "madduzdt" };
+static const char *insn_kv3_v2_maddw[] = { "maddw" };
+static const char *insn_kv3_v2_maddwd[] = { "maddwd" };
+static const char *insn_kv3_v2_maddwdp[] = { "maddwdp" };
+static const char *insn_kv3_v2_maddwp[] = { "maddwp" };
+static const char *insn_kv3_v2_maddwq[] = { "maddwq" };
+static const char *insn_kv3_v2_make[] = { "make" };
+static const char *insn_kv3_v2_maxbo[] = { "maxbo" };
+static const char *insn_kv3_v2_maxd[] = { "maxd" };
+static const char *insn_kv3_v2_maxd_abase[] = { "maxd.@" };
+static const char *insn_kv3_v2_maxhq[] = { "maxhq" };
+static const char *insn_kv3_v2_maxrbod[] = { "maxrbod" };
+static const char *insn_kv3_v2_maxrhqd[] = { "maxrhqd" };
+static const char *insn_kv3_v2_maxrwpd[] = { "maxrwpd" };
+static const char *insn_kv3_v2_maxubo[] = { "maxubo" };
+static const char *insn_kv3_v2_maxud[] = { "maxud" };
+static const char *insn_kv3_v2_maxud_abase[] = { "maxud.@" };
+static const char *insn_kv3_v2_maxuhq[] = { "maxuhq" };
+static const char *insn_kv3_v2_maxurbod[] = { "maxurbod" };
+static const char *insn_kv3_v2_maxurhqd[] = { "maxurhqd" };
+static const char *insn_kv3_v2_maxurwpd[] = { "maxurwpd" };
+static const char *insn_kv3_v2_maxuw[] = { "maxuw" };
+static const char *insn_kv3_v2_maxuwp[] = { "maxuwp" };
+static const char *insn_kv3_v2_maxw[] = { "maxw" };
+static const char *insn_kv3_v2_maxwp[] = { "maxwp" };
+static const char *insn_kv3_v2_minbo[] = { "minbo" };
+static const char *insn_kv3_v2_mind[] = { "mind" };
+static const char *insn_kv3_v2_mind_abase[] = { "mind.@" };
+static const char *insn_kv3_v2_minhq[] = { "minhq" };
+static const char *insn_kv3_v2_minrbod[] = { "minrbod" };
+static const char *insn_kv3_v2_minrhqd[] = { "minrhqd" };
+static const char *insn_kv3_v2_minrwpd[] = { "minrwpd" };
+static const char *insn_kv3_v2_minubo[] = { "minubo" };
+static const char *insn_kv3_v2_minud[] = { "minud" };
+static const char *insn_kv3_v2_minud_abase[] = { "minud.@" };
+static const char *insn_kv3_v2_minuhq[] = { "minuhq" };
+static const char *insn_kv3_v2_minurbod[] = { "minurbod" };
+static const char *insn_kv3_v2_minurhqd[] = { "minurhqd" };
+static const char *insn_kv3_v2_minurwpd[] = { "minurwpd" };
+static const char *insn_kv3_v2_minuw[] = { "minuw" };
+static const char *insn_kv3_v2_minuwp[] = { "minuwp" };
+static const char *insn_kv3_v2_minw[] = { "minw" };
+static const char *insn_kv3_v2_minwp[] = { "minwp" };
+static const char *insn_kv3_v2_mm212w[] = { "mm212w" };
+static const char *insn_kv3_v2_mma212w[] = { "mma212w" };
+static const char *insn_kv3_v2_mms212w[] = { "mms212w" };
+static const char *insn_kv3_v2_msbfd[] = { "msbfd" };
+static const char *insn_kv3_v2_msbfdt[] = { "msbfdt" };
+static const char *insn_kv3_v2_msbfhq[] = { "msbfhq" };
+static const char *insn_kv3_v2_msbfhwq[] = { "msbfhwq" };
+static const char *insn_kv3_v2_msbfmwq[] = { "msbfmwq" };
+static const char *insn_kv3_v2_msbfsudt[] = { "msbfsudt" };
+static const char *insn_kv3_v2_msbfsuhwq[] = { "msbfsuhwq" };
+static const char *insn_kv3_v2_msbfsumwq[] = { "msbfsumwq" };
+static const char *insn_kv3_v2_msbfsuwd[] = { "msbfsuwd" };
+static const char *insn_kv3_v2_msbfsuwdp[] = { "msbfsuwdp" };
+static const char *insn_kv3_v2_msbfudt[] = { "msbfudt" };
+static const char *insn_kv3_v2_msbfuhwq[] = { "msbfuhwq" };
+static const char *insn_kv3_v2_msbfumwq[] = { "msbfumwq" };
+static const char *insn_kv3_v2_msbfuwd[] = { "msbfuwd" };
+static const char *insn_kv3_v2_msbfuwdp[] = { "msbfuwdp" };
+static const char *insn_kv3_v2_msbfuzdt[] = { "msbfuzdt" };
+static const char *insn_kv3_v2_msbfw[] = { "msbfw" };
+static const char *insn_kv3_v2_msbfwd[] = { "msbfwd" };
+static const char *insn_kv3_v2_msbfwdp[] = { "msbfwdp" };
+static const char *insn_kv3_v2_msbfwp[] = { "msbfwp" };
+static const char *insn_kv3_v2_msbfwq[] = { "msbfwq" };
+static const char *insn_kv3_v2_muld[] = { "muld" };
+static const char *insn_kv3_v2_muldt[] = { "muldt" };
+static const char *insn_kv3_v2_mulhq[] = { "mulhq" };
+static const char *insn_kv3_v2_mulhwq[] = { "mulhwq" };
+static const char *insn_kv3_v2_mulmwq[] = { "mulmwq" };
+static const char *insn_kv3_v2_mulsudt[] = { "mulsudt" };
+static const char *insn_kv3_v2_mulsuhwq[] = { "mulsuhwq" };
+static const char *insn_kv3_v2_mulsumwq[] = { "mulsumwq" };
+static const char *insn_kv3_v2_mulsuwd[] = { "mulsuwd" };
+static const char *insn_kv3_v2_mulsuwdp[] = { "mulsuwdp" };
+static const char *insn_kv3_v2_muludt[] = { "muludt" };
+static const char *insn_kv3_v2_muluhwq[] = { "muluhwq" };
+static const char *insn_kv3_v2_mulumwq[] = { "mulumwq" };
+static const char *insn_kv3_v2_muluwd[] = { "muluwd" };
+static const char *insn_kv3_v2_muluwdp[] = { "muluwdp" };
+static const char *insn_kv3_v2_mulw[] = { "mulw" };
+static const char *insn_kv3_v2_mulwd[] = { "mulwd" };
+static const char *insn_kv3_v2_mulwdp[] = { "mulwdp" };
+static const char *insn_kv3_v2_mulwp[] = { "mulwp" };
+static const char *insn_kv3_v2_mulwq[] = { "mulwq" };
+static const char *insn_kv3_v2_nandd[] = { "nandd" };
+static const char *insn_kv3_v2_nandd_abase[] = { "nandd.@" };
+static const char *insn_kv3_v2_nandw[] = { "nandw" };
+static const char *insn_kv3_v2_negbo[] = { "negbo" };
+static const char *insn_kv3_v2_negd[] = { "negd" };
+static const char *insn_kv3_v2_neghq[] = { "neghq" };
+static const char *insn_kv3_v2_negsbo[] = { "negsbo" };
+static const char *insn_kv3_v2_negsd[] = { "negsd" };
+static const char *insn_kv3_v2_negshq[] = { "negshq" };
+static const char *insn_kv3_v2_negsw[] = { "negsw" };
+static const char *insn_kv3_v2_negswp[] = { "negswp" };
+static const char *insn_kv3_v2_negw[] = { "negw" };
+static const char *insn_kv3_v2_negwp[] = { "negwp" };
+static const char *insn_kv3_v2_nop[] = { "nop" };
+static const char *insn_kv3_v2_nord[] = { "nord" };
+static const char *insn_kv3_v2_nord_abase[] = { "nord.@" };
+static const char *insn_kv3_v2_norw[] = { "norw" };
+static const char *insn_kv3_v2_notd[] = { "notd" };
+static const char *insn_kv3_v2_notw[] = { "notw" };
+static const char *insn_kv3_v2_nxord[] = { "nxord" };
+static const char *insn_kv3_v2_nxord_abase[] = { "nxord.@" };
+static const char *insn_kv3_v2_nxorw[] = { "nxorw" };
+static const char *insn_kv3_v2_ord[] = { "ord" };
+static const char *insn_kv3_v2_ord_abase[] = { "ord.@" };
+static const char *insn_kv3_v2_ornd[] = { "ornd" };
+static const char *insn_kv3_v2_ornd_abase[] = { "ornd.@" };
+static const char *insn_kv3_v2_ornw[] = { "ornw" };
+static const char *insn_kv3_v2_orrbod[] = { "orrbod" };
+static const char *insn_kv3_v2_orrhqd[] = { "orrhqd" };
+static const char *insn_kv3_v2_orrwpd[] = { "orrwpd" };
+static const char *insn_kv3_v2_orw[] = { "orw" };
+static const char *insn_kv3_v2_pcrel[] = { "pcrel" };
+static const char *insn_kv3_v2_ret[] = { "ret" };
+static const char *insn_kv3_v2_rfe[] = { "rfe" };
+static const char *insn_kv3_v2_rolw[] = { "rolw" };
+static const char *insn_kv3_v2_rolwps[] = { "rolwps" };
+static const char *insn_kv3_v2_rorw[] = { "rorw" };
+static const char *insn_kv3_v2_rorwps[] = { "rorwps" };
+static const char *insn_kv3_v2_rswap[] = { "rswap" };
+static const char *insn_kv3_v2_sb[] = { "sb" };
+static const char *insn_kv3_v2_sbfbo[] = { "sbfbo" };
+static const char *insn_kv3_v2_sbfcd[] = { "sbfcd" };
+static const char *insn_kv3_v2_sbfcd_i[] = { "sbfcd.i" };
+static const char *insn_kv3_v2_sbfd[] = { "sbfd" };
+static const char *insn_kv3_v2_sbfd_abase[] = { "sbfd.@" };
+static const char *insn_kv3_v2_sbfhq[] = { "sbfhq" };
+static const char *insn_kv3_v2_sbfsbo[] = { "sbfsbo" };
+static const char *insn_kv3_v2_sbfsd[] = { "sbfsd" };
+static const char *insn_kv3_v2_sbfshq[] = { "sbfshq" };
+static const char *insn_kv3_v2_sbfsw[] = { "sbfsw" };
+static const char *insn_kv3_v2_sbfswp[] = { "sbfswp" };
+static const char *insn_kv3_v2_sbfusbo[] = { "sbfusbo" };
+static const char *insn_kv3_v2_sbfusd[] = { "sbfusd" };
+static const char *insn_kv3_v2_sbfushq[] = { "sbfushq" };
+static const char *insn_kv3_v2_sbfusw[] = { "sbfusw" };
+static const char *insn_kv3_v2_sbfuswp[] = { "sbfuswp" };
+static const char *insn_kv3_v2_sbfuwd[] = { "sbfuwd" };
+static const char *insn_kv3_v2_sbfw[] = { "sbfw" };
+static const char *insn_kv3_v2_sbfwd[] = { "sbfwd" };
+static const char *insn_kv3_v2_sbfwp[] = { "sbfwp" };
+static const char *insn_kv3_v2_sbfx16bo[] = { "sbfx16bo" };
+static const char *insn_kv3_v2_sbfx16d[] = { "sbfx16d" };
+static const char *insn_kv3_v2_sbfx16hq[] = { "sbfx16hq" };
+static const char *insn_kv3_v2_sbfx16uwd[] = { "sbfx16uwd" };
+static const char *insn_kv3_v2_sbfx16w[] = { "sbfx16w" };
+static const char *insn_kv3_v2_sbfx16wd[] = { "sbfx16wd" };
+static const char *insn_kv3_v2_sbfx16wp[] = { "sbfx16wp" };
+static const char *insn_kv3_v2_sbfx2bo[] = { "sbfx2bo" };
+static const char *insn_kv3_v2_sbfx2d[] = { "sbfx2d" };
+static const char *insn_kv3_v2_sbfx2hq[] = { "sbfx2hq" };
+static const char *insn_kv3_v2_sbfx2uwd[] = { "sbfx2uwd" };
+static const char *insn_kv3_v2_sbfx2w[] = { "sbfx2w" };
+static const char *insn_kv3_v2_sbfx2wd[] = { "sbfx2wd" };
+static const char *insn_kv3_v2_sbfx2wp[] = { "sbfx2wp" };
+static const char *insn_kv3_v2_sbfx32d[] = { "sbfx32d" };
+static const char *insn_kv3_v2_sbfx32uwd[] = { "sbfx32uwd" };
+static const char *insn_kv3_v2_sbfx32w[] = { "sbfx32w" };
+static const char *insn_kv3_v2_sbfx32wd[] = { "sbfx32wd" };
+static const char *insn_kv3_v2_sbfx4bo[] = { "sbfx4bo" };
+static const char *insn_kv3_v2_sbfx4d[] = { "sbfx4d" };
+static const char *insn_kv3_v2_sbfx4hq[] = { "sbfx4hq" };
+static const char *insn_kv3_v2_sbfx4uwd[] = { "sbfx4uwd" };
+static const char *insn_kv3_v2_sbfx4w[] = { "sbfx4w" };
+static const char *insn_kv3_v2_sbfx4wd[] = { "sbfx4wd" };
+static const char *insn_kv3_v2_sbfx4wp[] = { "sbfx4wp" };
+static const char *insn_kv3_v2_sbfx64d[] = { "sbfx64d" };
+static const char *insn_kv3_v2_sbfx64uwd[] = { "sbfx64uwd" };
+static const char *insn_kv3_v2_sbfx64w[] = { "sbfx64w" };
+static const char *insn_kv3_v2_sbfx64wd[] = { "sbfx64wd" };
+static const char *insn_kv3_v2_sbfx8bo[] = { "sbfx8bo" };
+static const char *insn_kv3_v2_sbfx8d[] = { "sbfx8d" };
+static const char *insn_kv3_v2_sbfx8hq[] = { "sbfx8hq" };
+static const char *insn_kv3_v2_sbfx8uwd[] = { "sbfx8uwd" };
+static const char *insn_kv3_v2_sbfx8w[] = { "sbfx8w" };
+static const char *insn_kv3_v2_sbfx8wd[] = { "sbfx8wd" };
+static const char *insn_kv3_v2_sbfx8wp[] = { "sbfx8wp" };
+static const char *insn_kv3_v2_sbmm8[] = { "sbmm8" };
+static const char *insn_kv3_v2_sbmm8_abase[] = { "sbmm8.@" };
+static const char *insn_kv3_v2_sbmmt8[] = { "sbmmt8" };
+static const char *insn_kv3_v2_sbmmt8_abase[] = { "sbmmt8.@" };
+static const char *insn_kv3_v2_scall[] = { "scall" };
+static const char *insn_kv3_v2_sd[] = { "sd" };
+static const char *insn_kv3_v2_set[] = { "set" };
+static const char *insn_kv3_v2_sh[] = { "sh" };
+static const char *insn_kv3_v2_sleep[] = { "sleep" };
+static const char *insn_kv3_v2_sllbos[] = { "sllbos" };
+static const char *insn_kv3_v2_slld[] = { "slld" };
+static const char *insn_kv3_v2_sllhqs[] = { "sllhqs" };
+static const char *insn_kv3_v2_sllw[] = { "sllw" };
+static const char *insn_kv3_v2_sllwps[] = { "sllwps" };
+static const char *insn_kv3_v2_slsbos[] = { "slsbos" };
+static const char *insn_kv3_v2_slsd[] = { "slsd" };
+static const char *insn_kv3_v2_slshqs[] = { "slshqs" };
+static const char *insn_kv3_v2_slsw[] = { "slsw" };
+static const char *insn_kv3_v2_slswps[] = { "slswps" };
+static const char *insn_kv3_v2_slusbos[] = { "slusbos" };
+static const char *insn_kv3_v2_slusd[] = { "slusd" };
+static const char *insn_kv3_v2_slushqs[] = { "slushqs" };
+static const char *insn_kv3_v2_slusw[] = { "slusw" };
+static const char *insn_kv3_v2_sluswps[] = { "sluswps" };
+static const char *insn_kv3_v2_so[] = { "so" };
+static const char *insn_kv3_v2_sq[] = { "sq" };
+static const char *insn_kv3_v2_srabos[] = { "srabos" };
+static const char *insn_kv3_v2_srad[] = { "srad" };
+static const char *insn_kv3_v2_srahqs[] = { "srahqs" };
+static const char *insn_kv3_v2_sraw[] = { "sraw" };
+static const char *insn_kv3_v2_srawps[] = { "srawps" };
+static const char *insn_kv3_v2_srlbos[] = { "srlbos" };
+static const char *insn_kv3_v2_srld[] = { "srld" };
+static const char *insn_kv3_v2_srlhqs[] = { "srlhqs" };
+static const char *insn_kv3_v2_srlw[] = { "srlw" };
+static const char *insn_kv3_v2_srlwps[] = { "srlwps" };
+static const char *insn_kv3_v2_srsbos[] = { "srsbos" };
+static const char *insn_kv3_v2_srsd[] = { "srsd" };
+static const char *insn_kv3_v2_srshqs[] = { "srshqs" };
+static const char *insn_kv3_v2_srsw[] = { "srsw" };
+static const char *insn_kv3_v2_srswps[] = { "srswps" };
+static const char *insn_kv3_v2_stop[] = { "stop" };
+static const char *insn_kv3_v2_stsud[] = { "stsud" };
+static const char *insn_kv3_v2_stsuhq[] = { "stsuhq" };
+static const char *insn_kv3_v2_stsuw[] = { "stsuw" };
+static const char *insn_kv3_v2_stsuwp[] = { "stsuwp" };
+static const char *insn_kv3_v2_sw[] = { "sw" };
+static const char *insn_kv3_v2_sxbd[] = { "sxbd" };
+static const char *insn_kv3_v2_sxhd[] = { "sxhd" };
+static const char *insn_kv3_v2_sxlbhq[] = { "sxlbhq" };
+static const char *insn_kv3_v2_sxlhwp[] = { "sxlhwp" };
+static const char *insn_kv3_v2_sxmbhq[] = { "sxmbhq" };
+static const char *insn_kv3_v2_sxmhwp[] = { "sxmhwp" };
+static const char *insn_kv3_v2_sxwd[] = { "sxwd" };
+static const char *insn_kv3_v2_syncgroup[] = { "syncgroup" };
+static const char *insn_kv3_v2_tlbdinval[] = { "tlbdinval" };
+static const char *insn_kv3_v2_tlbiinval[] = { "tlbiinval" };
+static const char *insn_kv3_v2_tlbprobe[] = { "tlbprobe" };
+static const char *insn_kv3_v2_tlbread[] = { "tlbread" };
+static const char *insn_kv3_v2_tlbwrite[] = { "tlbwrite" };
+static const char *insn_kv3_v2_waitit[] = { "waitit" };
+static const char *insn_kv3_v2_wfxl[] = { "wfxl" };
+static const char *insn_kv3_v2_wfxm[] = { "wfxm" };
+static const char *insn_kv3_v2_xaccesso[] = { "xaccesso" };
+static const char *insn_kv3_v2_xaligno[] = { "xaligno" };
+static const char *insn_kv3_v2_xandno[] = { "xandno" };
+static const char *insn_kv3_v2_xando[] = { "xando" };
+static const char *insn_kv3_v2_xclampwo[] = { "xclampwo" };
+static const char *insn_kv3_v2_xcopyo[] = { "xcopyo" };
+static const char *insn_kv3_v2_xcopyv[] = { "xcopyv" };
+static const char *insn_kv3_v2_xcopyx[] = { "xcopyx" };
+static const char *insn_kv3_v2_xffma44hw[] = { "xffma44hw" };
+static const char *insn_kv3_v2_xfmaxhx[] = { "xfmaxhx" };
+static const char *insn_kv3_v2_xfminhx[] = { "xfminhx" };
+static const char *insn_kv3_v2_xfmma484hw[] = { "xfmma484hw" };
+static const char *insn_kv3_v2_xfnarrow44wh[] = { "xfnarrow44wh" };
+static const char *insn_kv3_v2_xfscalewo[] = { "xfscalewo" };
+static const char *insn_kv3_v2_xlo[] = { "xlo" };
+static const char *insn_kv3_v2_xmadd44bw0[] = { "xmadd44bw0" };
+static const char *insn_kv3_v2_xmadd44bw1[] = { "xmadd44bw1" };
+static const char *insn_kv3_v2_xmaddifwo[] = { "xmaddifwo" };
+static const char *insn_kv3_v2_xmaddsu44bw0[] = { "xmaddsu44bw0" };
+static const char *insn_kv3_v2_xmaddsu44bw1[] = { "xmaddsu44bw1" };
+static const char *insn_kv3_v2_xmaddu44bw0[] = { "xmaddu44bw0" };
+static const char *insn_kv3_v2_xmaddu44bw1[] = { "xmaddu44bw1" };
+static const char *insn_kv3_v2_xmma4164bw[] = { "xmma4164bw" };
+static const char *insn_kv3_v2_xmma484bw[] = { "xmma484bw" };
+static const char *insn_kv3_v2_xmmasu4164bw[] = { "xmmasu4164bw" };
+static const char *insn_kv3_v2_xmmasu484bw[] = { "xmmasu484bw" };
+static const char *insn_kv3_v2_xmmau4164bw[] = { "xmmau4164bw" };
+static const char *insn_kv3_v2_xmmau484bw[] = { "xmmau484bw" };
+static const char *insn_kv3_v2_xmmaus4164bw[] = { "xmmaus4164bw" };
+static const char *insn_kv3_v2_xmmaus484bw[] = { "xmmaus484bw" };
+static const char *insn_kv3_v2_xmovefd[] = { "xmovefd" };
+static const char *insn_kv3_v2_xmovefo[] = { "xmovefo" };
+static const char *insn_kv3_v2_xmovefq[] = { "xmovefq" };
+static const char *insn_kv3_v2_xmovetd[] = { "xmovetd" };
+static const char *insn_kv3_v2_xmovetq[] = { "xmovetq" };
+static const char *insn_kv3_v2_xmsbfifwo[] = { "xmsbfifwo" };
+static const char *insn_kv3_v2_xmt44d[] = { "xmt44d" };
+static const char *insn_kv3_v2_xnando[] = { "xnando" };
+static const char *insn_kv3_v2_xnoro[] = { "xnoro" };
+static const char *insn_kv3_v2_xnxoro[] = { "xnxoro" };
+static const char *insn_kv3_v2_xord[] = { "xord" };
+static const char *insn_kv3_v2_xord_abase[] = { "xord.@" };
+static const char *insn_kv3_v2_xorno[] = { "xorno" };
+static const char *insn_kv3_v2_xoro[] = { "xoro" };
+static const char *insn_kv3_v2_xorrbod[] = { "xorrbod" };
+static const char *insn_kv3_v2_xorrhqd[] = { "xorrhqd" };
+static const char *insn_kv3_v2_xorrwpd[] = { "xorrwpd" };
+static const char *insn_kv3_v2_xorw[] = { "xorw" };
+static const char *insn_kv3_v2_xrecvo[] = { "xrecvo" };
+static const char *insn_kv3_v2_xsbmm8dq[] = { "xsbmm8dq" };
+static const char *insn_kv3_v2_xsbmmt8dq[] = { "xsbmmt8dq" };
+static const char *insn_kv3_v2_xsendo[] = { "xsendo" };
+static const char *insn_kv3_v2_xsendrecvo[] = { "xsendrecvo" };
+static const char *insn_kv3_v2_xso[] = { "xso" };
+static const char *insn_kv3_v2_xsplatdo[] = { "xsplatdo" };
+static const char *insn_kv3_v2_xsplatov[] = { "xsplatov" };
+static const char *insn_kv3_v2_xsplatox[] = { "xsplatox" };
+static const char *insn_kv3_v2_xsx48bw[] = { "xsx48bw" };
+static const char *insn_kv3_v2_xtrunc48wb[] = { "xtrunc48wb" };
+static const char *insn_kv3_v2_xxoro[] = { "xxoro" };
+static const char *insn_kv3_v2_xzx48bw[] = { "xzx48bw" };
+static const char *insn_kv3_v2_zxbd[] = { "zxbd" };
+static const char *insn_kv3_v2_zxhd[] = { "zxhd" };
+static const char *insn_kv3_v2_zxlbhq[] = { "zxlbhq" };
+static const char *insn_kv3_v2_zxlhwp[] = { "zxlhwp" };
+static const char *insn_kv3_v2_zxmbhq[] = { "zxmbhq" };
+static const char *insn_kv3_v2_zxmhwp[] = { "zxmhwp" };
+static const char *insn_kv3_v2_zxwd[] = { "zxwd" };
+static const char *sep_kv3_v2_comma[] = { "," };
+static const char *sep_kv3_v2_equal[] = { "=" };
+static const char *sep_kv3_v2_qmark[] = { "?" };
+static const char *sep_kv3_v2_rsbracket[] = { "[" };
+static const char *sep_kv3_v2_lsbracket[] = { "]" };
+
+#define _enc(x) (1ULL << ((x) - RegClass_kv3_v2_aloneReg))
+enum prc_kv3_v2_id_t {
+  prc_kv3_v2_id_00 = _enc (RegClass_kv3_v2_aloneReg)
+   | _enc (RegClass_kv3_v2_onlyfxReg)
+   | _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlysetReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_01 = _enc (RegClass_kv3_v2_aloneReg)
+   | _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlysetReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_02 = _enc (RegClass_kv3_v2_aloneReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_03 = _enc (RegClass_kv3_v2_blockReg)
+   | _enc (RegClass_kv3_v2_blockRegE),
+  prc_kv3_v2_id_04 = _enc (RegClass_kv3_v2_blockReg)
+   | _enc (RegClass_kv3_v2_blockRegO),
+  prc_kv3_v2_id_05 = _enc (RegClass_kv3_v2_blockReg_0)
+   | _enc (RegClass_kv3_v2_coproReg)
+   | _enc (RegClass_kv3_v2_coproReg0M4)
+   | _enc (RegClass_kv3_v2_vectorReg_0),
+  prc_kv3_v2_id_06 = _enc (RegClass_kv3_v2_blockReg_0)
+   | _enc (RegClass_kv3_v2_coproReg)
+   | _enc (RegClass_kv3_v2_coproReg2M4)
+   | _enc (RegClass_kv3_v2_vectorReg_2),
+  prc_kv3_v2_id_07 = _enc (RegClass_kv3_v2_blockReg_1)
+   | _enc (RegClass_kv3_v2_coproReg)
+   | _enc (RegClass_kv3_v2_coproReg1M4)
+   | _enc (RegClass_kv3_v2_vectorReg_1),
+  prc_kv3_v2_id_08 = _enc (RegClass_kv3_v2_blockReg_1)
+   | _enc (RegClass_kv3_v2_coproReg)
+   | _enc (RegClass_kv3_v2_coproReg3M4)
+   | _enc (RegClass_kv3_v2_vectorReg_3),
+  prc_kv3_v2_id_09 = _enc (RegClass_kv3_v2_buffer16Reg),
+  prc_kv3_v2_id_10 = _enc (RegClass_kv3_v2_buffer2Reg),
+  prc_kv3_v2_id_11 = _enc (RegClass_kv3_v2_buffer32Reg),
+  prc_kv3_v2_id_12 = _enc (RegClass_kv3_v2_buffer4Reg),
+  prc_kv3_v2_id_13 = _enc (RegClass_kv3_v2_buffer64Reg),
+  prc_kv3_v2_id_14 = _enc (RegClass_kv3_v2_buffer8Reg),
+  prc_kv3_v2_id_15 = _enc (RegClass_kv3_v2_matrixReg),
+  prc_kv3_v2_id_16 = _enc (RegClass_kv3_v2_matrixReg_0)
+   | _enc (RegClass_kv3_v2_tileReg_0)
+   | _enc (RegClass_kv3_v2_vectorReg),
+  prc_kv3_v2_id_17 = _enc (RegClass_kv3_v2_matrixReg_1)
+   | _enc (RegClass_kv3_v2_tileReg_1)
+   | _enc (RegClass_kv3_v2_vectorReg),
+  prc_kv3_v2_id_18 = _enc (RegClass_kv3_v2_matrixReg_2)
+   | _enc (RegClass_kv3_v2_tileReg_0)
+   | _enc (RegClass_kv3_v2_vectorReg),
+  prc_kv3_v2_id_19 = _enc (RegClass_kv3_v2_matrixReg_3)
+   | _enc (RegClass_kv3_v2_tileReg_1)
+   | _enc (RegClass_kv3_v2_vectorReg),
+  prc_kv3_v2_id_20 = _enc (RegClass_kv3_v2_onlyfxReg)
+   | _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlysetReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_21 = _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_22 = _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlyraReg)
+   | _enc (RegClass_kv3_v2_onlysetReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_23 = _enc (RegClass_kv3_v2_onlygetReg)
+   | _enc (RegClass_kv3_v2_onlysetReg)
+   | _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_24 = _enc (RegClass_kv3_v2_onlyswapReg)
+   | _enc (RegClass_kv3_v2_systemReg),
+  prc_kv3_v2_id_25 = _enc (RegClass_kv3_v2_pairedReg),
+  prc_kv3_v2_id_26 = _enc (RegClass_kv3_v2_pairedReg_0)
+   | _enc (RegClass_kv3_v2_quadReg_0)
+   | _enc (RegClass_kv3_v2_singleReg),
+  prc_kv3_v2_id_27 = _enc (RegClass_kv3_v2_pairedReg_0)
+   | _enc (RegClass_kv3_v2_quadReg_2)
+   | _enc (RegClass_kv3_v2_singleReg),
+  prc_kv3_v2_id_28 = _enc (RegClass_kv3_v2_pairedReg_1)
+   | _enc (RegClass_kv3_v2_quadReg_1)
+   | _enc (RegClass_kv3_v2_singleReg),
+  prc_kv3_v2_id_29 = _enc (RegClass_kv3_v2_pairedReg_1)
+   | _enc (RegClass_kv3_v2_quadReg_3)
+   | _enc (RegClass_kv3_v2_singleReg),
+  prc_kv3_v2_id_30 = _enc (RegClass_kv3_v2_quadReg),
+  prc_kv3_v2_id_31 = _enc (RegClass_kv3_v2_tileReg),
+};
+#undef _enc
+
+static const char *prc_kv3_v2_00[] = {
+  "$mmc", "$s28", "$sps", "$s132",
+  "$sps_pl0", "$s68", "$sps_pl1", "$s69",
+  "$sps_pl2", "$s70", "$sps_pl3", "$s71",
+};
+
+static const char *prc_kv3_v2_01[] = {
+  "$ps", "$s1",
+};
+
+static const char *prc_kv3_v2_02[] = {
+  "$syow", "$s96", "$htow", "$s97",
+  "$itow", "$s98", "$dow", "$s99",
+  "$mow", "$s100", "$psow", "$s101",
+};
+
+static const char *prc_kv3_v2_03[] = {
+  "$a0_lo", "$a0.lo", "$a1_lo", "$a1.lo",
+  "$a2_lo", "$a2.lo", "$a3_lo", "$a3.lo",
+  "$a4_lo", "$a4.lo", "$a5_lo", "$a5.lo",
+  "$a6_lo", "$a6.lo", "$a7_lo", "$a7.lo",
+  "$a8_lo", "$a8.lo", "$a9_lo", "$a9.lo",
+  "$a10_lo", "$a10.lo", "$a11_lo", "$a11.lo",
+  "$a12_lo", "$a12.lo", "$a13_lo", "$a13.lo",
+  "$a14_lo", "$a14.lo", "$a15_lo", "$a15.lo",
+  "$a16_lo", "$a16.lo", "$a17_lo", "$a17.lo",
+  "$a18_lo", "$a18.lo", "$a19_lo", "$a19.lo",
+  "$a20_lo", "$a20.lo", "$a21_lo", "$a21.lo",
+  "$a22_lo", "$a22.lo", "$a23_lo", "$a23.lo",
+  "$a24_lo", "$a24.lo", "$a25_lo", "$a25.lo",
+  "$a26_lo", "$a26.lo", "$a27_lo", "$a27.lo",
+  "$a28_lo", "$a28.lo", "$a29_lo", "$a29.lo",
+  "$a30_lo", "$a30.lo", "$a31_lo", "$a31.lo",
+  "$a32_lo", "$a32.lo", "$a33_lo", "$a33.lo",
+  "$a34_lo", "$a34.lo", "$a35_lo", "$a35.lo",
+  "$a36_lo", "$a36.lo", "$a37_lo", "$a37.lo",
+  "$a38_lo", "$a38.lo", "$a39_lo", "$a39.lo",
+  "$a40_lo", "$a40.lo", "$a41_lo", "$a41.lo",
+  "$a42_lo", "$a42.lo", "$a43_lo", "$a43.lo",
+  "$a44_lo", "$a44.lo", "$a45_lo", "$a45.lo",
+  "$a46_lo", "$a46.lo", "$a47_lo", "$a47.lo",
+  "$a48_lo", "$a48.lo", "$a49_lo", "$a49.lo",
+  "$a50_lo", "$a50.lo", "$a51_lo", "$a51.lo",
+  "$a52_lo", "$a52.lo", "$a53_lo", "$a53.lo",
+  "$a54_lo", "$a54.lo", "$a55_lo", "$a55.lo",
+  "$a56_lo", "$a56.lo", "$a57_lo", "$a57.lo",
+  "$a58_lo", "$a58.lo", "$a59_lo", "$a59.lo",
+  "$a60_lo", "$a60.lo", "$a61_lo", "$a61.lo",
+  "$a62_lo", "$a62.lo", "$a63_lo", "$a63.lo",
+};
+
+static const char *prc_kv3_v2_04[] = {
+  "$a0_hi", "$a0.hi", "$a1_hi", "$a1.hi",
+  "$a2_hi", "$a2.hi", "$a3_hi", "$a3.hi",
+  "$a4_hi", "$a4.hi", "$a5_hi", "$a5.hi",
+  "$a6_hi", "$a6.hi", "$a7_hi", "$a7.hi",
+  "$a8_hi", "$a8.hi", "$a9_hi", "$a9.hi",
+  "$a10_hi", "$a10.hi", "$a11_hi", "$a11.hi",
+  "$a12_hi", "$a12.hi", "$a13_hi", "$a13.hi",
+  "$a14_hi", "$a14.hi", "$a15_hi", "$a15.hi",
+  "$a16_hi", "$a16.hi", "$a17_hi", "$a17.hi",
+  "$a18_hi", "$a18.hi", "$a19_hi", "$a19.hi",
+  "$a20_hi", "$a20.hi", "$a21_hi", "$a21.hi",
+  "$a22_hi", "$a22.hi", "$a23_hi", "$a23.hi",
+  "$a24_hi", "$a24.hi", "$a25_hi", "$a25.hi",
+  "$a26_hi", "$a26.hi", "$a27_hi", "$a27.hi",
+  "$a28_hi", "$a28.hi", "$a29_hi", "$a29.hi",
+  "$a30_hi", "$a30.hi", "$a31_hi", "$a31.hi",
+  "$a32_hi", "$a32.hi", "$a33_hi", "$a33.hi",
+  "$a34_hi", "$a34.hi", "$a35_hi", "$a35.hi",
+  "$a36_hi", "$a36.hi", "$a37_hi", "$a37.hi",
+  "$a38_hi", "$a38.hi", "$a39_hi", "$a39.hi",
+  "$a40_hi", "$a40.hi", "$a41_hi", "$a41.hi",
+  "$a42_hi", "$a42.hi", "$a43_hi", "$a43.hi",
+  "$a44_hi", "$a44.hi", "$a45_hi", "$a45.hi",
+  "$a46_hi", "$a46.hi", "$a47_hi", "$a47.hi",
+  "$a48_hi", "$a48.hi", "$a49_hi", "$a49.hi",
+  "$a50_hi", "$a50.hi", "$a51_hi", "$a51.hi",
+  "$a52_hi", "$a52.hi", "$a53_hi", "$a53.hi",
+  "$a54_hi", "$a54.hi", "$a55_hi", "$a55.hi",
+  "$a56_hi", "$a56.hi", "$a57_hi", "$a57.hi",
+  "$a58_hi", "$a58.hi", "$a59_hi", "$a59.hi",
+  "$a60_hi", "$a60.hi", "$a61_hi", "$a61.hi",
+  "$a62_hi", "$a62.hi", "$a63_hi", "$a63.hi",
+};
+
+static const char *prc_kv3_v2_05[] = {
+  "$a0_x", "$a0.x", "$a1_x", "$a1.x",
+  "$a2_x", "$a2.x", "$a3_x", "$a3.x",
+  "$a4_x", "$a4.x", "$a5_x", "$a5.x",
+  "$a6_x", "$a6.x", "$a7_x", "$a7.x",
+  "$a8_x", "$a8.x", "$a9_x", "$a9.x",
+  "$a10_x", "$a10.x", "$a11_x", "$a11.x",
+  "$a12_x", "$a12.x", "$a13_x", "$a13.x",
+  "$a14_x", "$a14.x", "$a15_x", "$a15.x",
+  "$a16_x", "$a16.x", "$a17_x", "$a17.x",
+  "$a18_x", "$a18.x", "$a19_x", "$a19.x",
+  "$a20_x", "$a20.x", "$a21_x", "$a21.x",
+  "$a22_x", "$a22.x", "$a23_x", "$a23.x",
+  "$a24_x", "$a24.x", "$a25_x", "$a25.x",
+  "$a26_x", "$a26.x", "$a27_x", "$a27.x",
+  "$a28_x", "$a28.x", "$a29_x", "$a29.x",
+  "$a30_x", "$a30.x", "$a31_x", "$a31.x",
+  "$a32_x", "$a32.x", "$a33_x", "$a33.x",
+  "$a34_x", "$a34.x", "$a35_x", "$a35.x",
+  "$a36_x", "$a36.x", "$a37_x", "$a37.x",
+  "$a38_x", "$a38.x", "$a39_x", "$a39.x",
+  "$a40_x", "$a40.x", "$a41_x", "$a41.x",
+  "$a42_x", "$a42.x", "$a43_x", "$a43.x",
+  "$a44_x", "$a44.x", "$a45_x", "$a45.x",
+  "$a46_x", "$a46.x", "$a47_x", "$a47.x",
+  "$a48_x", "$a48.x", "$a49_x", "$a49.x",
+  "$a50_x", "$a50.x", "$a51_x", "$a51.x",
+  "$a52_x", "$a52.x", "$a53_x", "$a53.x",
+  "$a54_x", "$a54.x", "$a55_x", "$a55.x",
+  "$a56_x", "$a56.x", "$a57_x", "$a57.x",
+  "$a58_x", "$a58.x", "$a59_x", "$a59.x",
+  "$a60_x", "$a60.x", "$a61_x", "$a61.x",
+  "$a62_x", "$a62.x", "$a63_x", "$a63.x",
+};
+
+static const char *prc_kv3_v2_06[] = {
+  "$a0_z", "$a0.z", "$a1_z", "$a1.z",
+  "$a2_z", "$a2.z", "$a3_z", "$a3.z",
+  "$a4_z", "$a4.z", "$a5_z", "$a5.z",
+  "$a6_z", "$a6.z", "$a7_z", "$a7.z",
+  "$a8_z", "$a8.z", "$a9_z", "$a9.z",
+  "$a10_z", "$a10.z", "$a11_z", "$a11.z",
+  "$a12_z", "$a12.z", "$a13_z", "$a13.z",
+  "$a14_z", "$a14.z", "$a15_z", "$a15.z",
+  "$a16_z", "$a16.z", "$a17_z", "$a17.z",
+  "$a18_z", "$a18.z", "$a19_z", "$a19.z",
+  "$a20_z", "$a20.z", "$a21_z", "$a21.z",
+  "$a22_z", "$a22.z", "$a23_z", "$a23.z",
+  "$a24_z", "$a24.z", "$a25_z", "$a25.z",
+  "$a26_z", "$a26.z", "$a27_z", "$a27.z",
+  "$a28_z", "$a28.z", "$a29_z", "$a29.z",
+  "$a30_z", "$a30.z", "$a31_z", "$a31.z",
+  "$a32_z", "$a32.z", "$a33_z", "$a33.z",
+  "$a34_z", "$a34.z", "$a35_z", "$a35.z",
+  "$a36_z", "$a36.z", "$a37_z", "$a37.z",
+  "$a38_z", "$a38.z", "$a39_z", "$a39.z",
+  "$a40_z", "$a40.z", "$a41_z", "$a41.z",
+  "$a42_z", "$a42.z", "$a43_z", "$a43.z",
+  "$a44_z", "$a44.z", "$a45_z", "$a45.z",
+  "$a46_z", "$a46.z", "$a47_z", "$a47.z",
+  "$a48_z", "$a48.z", "$a49_z", "$a49.z",
+  "$a50_z", "$a50.z", "$a51_z", "$a51.z",
+  "$a52_z", "$a52.z", "$a53_z", "$a53.z",
+  "$a54_z", "$a54.z", "$a55_z", "$a55.z",
+  "$a56_z", "$a56.z", "$a57_z", "$a57.z",
+  "$a58_z", "$a58.z", "$a59_z", "$a59.z",
+  "$a60_z", "$a60.z", "$a61_z", "$a61.z",
+  "$a62_z", "$a62.z", "$a63_z", "$a63.z",
+};
+
+static const char *prc_kv3_v2_07[] = {
+  "$a0_y", "$a0.y", "$a1_y", "$a1.y",
+  "$a2_y", "$a2.y", "$a3_y", "$a3.y",
+  "$a4_y", "$a4.y", "$a5_y", "$a5.y",
+  "$a6_y", "$a6.y", "$a7_y", "$a7.y",
+  "$a8_y", "$a8.y", "$a9_y", "$a9.y",
+  "$a10_y", "$a10.y", "$a11_y", "$a11.y",
+  "$a12_y", "$a12.y", "$a13_y", "$a13.y",
+  "$a14_y", "$a14.y", "$a15_y", "$a15.y",
+  "$a16_y", "$a16.y", "$a17_y", "$a17.y",
+  "$a18_y", "$a18.y", "$a19_y", "$a19.y",
+  "$a20_y", "$a20.y", "$a21_y", "$a21.y",
+  "$a22_y", "$a22.y", "$a23_y", "$a23.y",
+  "$a24_y", "$a24.y", "$a25_y", "$a25.y",
+  "$a26_y", "$a26.y", "$a27_y", "$a27.y",
+  "$a28_y", "$a28.y", "$a29_y", "$a29.y",
+  "$a30_y", "$a30.y", "$a31_y", "$a31.y",
+  "$a32_y", "$a32.y", "$a33_y", "$a33.y",
+  "$a34_y", "$a34.y", "$a35_y", "$a35.y",
+  "$a36_y", "$a36.y", "$a37_y", "$a37.y",
+  "$a38_y", "$a38.y", "$a39_y", "$a39.y",
+  "$a40_y", "$a40.y", "$a41_y", "$a41.y",
+  "$a42_y", "$a42.y", "$a43_y", "$a43.y",
+  "$a44_y", "$a44.y", "$a45_y", "$a45.y",
+  "$a46_y", "$a46.y", "$a47_y", "$a47.y",
+  "$a48_y", "$a48.y", "$a49_y", "$a49.y",
+  "$a50_y", "$a50.y", "$a51_y", "$a51.y",
+  "$a52_y", "$a52.y", "$a53_y", "$a53.y",
+  "$a54_y", "$a54.y", "$a55_y", "$a55.y",
+  "$a56_y", "$a56.y", "$a57_y", "$a57.y",
+  "$a58_y", "$a58.y", "$a59_y", "$a59.y",
+  "$a60_y", "$a60.y", "$a61_y", "$a61.y",
+  "$a62_y", "$a62.y", "$a63_y", "$a63.y",
+};
+
+static const char *prc_kv3_v2_08[] = {
+  "$a0_t", "$a0.t", "$a1_t", "$a1.t",
+  "$a2_t", "$a2.t", "$a3_t", "$a3.t",
+  "$a4_t", "$a4.t", "$a5_t", "$a5.t",
+  "$a6_t", "$a6.t", "$a7_t", "$a7.t",
+  "$a8_t", "$a8.t", "$a9_t", "$a9.t",
+  "$a10_t", "$a10.t", "$a11_t", "$a11.t",
+  "$a12_t", "$a12.t", "$a13_t", "$a13.t",
+  "$a14_t", "$a14.t", "$a15_t", "$a15.t",
+  "$a16_t", "$a16.t", "$a17_t", "$a17.t",
+  "$a18_t", "$a18.t", "$a19_t", "$a19.t",
+  "$a20_t", "$a20.t", "$a21_t", "$a21.t",
+  "$a22_t", "$a22.t", "$a23_t", "$a23.t",
+  "$a24_t", "$a24.t", "$a25_t", "$a25.t",
+  "$a26_t", "$a26.t", "$a27_t", "$a27.t",
+  "$a28_t", "$a28.t", "$a29_t", "$a29.t",
+  "$a30_t", "$a30.t", "$a31_t", "$a31.t",
+  "$a32_t", "$a32.t", "$a33_t", "$a33.t",
+  "$a34_t", "$a34.t", "$a35_t", "$a35.t",
+  "$a36_t", "$a36.t", "$a37_t", "$a37.t",
+  "$a38_t", "$a38.t", "$a39_t", "$a39.t",
+  "$a40_t", "$a40.t", "$a41_t", "$a41.t",
+  "$a42_t", "$a42.t", "$a43_t", "$a43.t",
+  "$a44_t", "$a44.t", "$a45_t", "$a45.t",
+  "$a46_t", "$a46.t", "$a47_t", "$a47.t",
+  "$a48_t", "$a48.t", "$a49_t", "$a49.t",
+  "$a50_t", "$a50.t", "$a51_t", "$a51.t",
+  "$a52_t", "$a52.t", "$a53_t", "$a53.t",
+  "$a54_t", "$a54.t", "$a55_t", "$a55.t",
+  "$a56_t", "$a56.t", "$a57_t", "$a57.t",
+  "$a58_t", "$a58.t", "$a59_t", "$a59.t",
+  "$a60_t", "$a60.t", "$a61_t", "$a61.t",
+  "$a62_t", "$a62.t", "$a63_t", "$a63.t",
+};
+
+static const char *prc_kv3_v2_09[] = {
+  "$a0..a15", "$a16..a31", "$a32..a47", "$a48..a63",
+};
+
+static const char *prc_kv3_v2_10[] = {
+  "$a0..a1", "$a2..a3", "$a4..a5", "$a6..a7",
+  "$a8..a9", "$a10..a11", "$a12..a13", "$a14..a15",
+  "$a16..a17", "$a18..a19", "$a20..a21", "$a22..a23",
+  "$a24..a25", "$a26..a27", "$a28..a29", "$a30..a31",
+  "$a32..a33", "$a34..a35", "$a36..a37", "$a38..a39",
+  "$a40..a41", "$a42..a43", "$a44..a45", "$a46..a47",
+  "$a48..a49", "$a50..a51", "$a52..a53", "$a54..a55",
+  "$a56..a57", "$a58..a59", "$a60..a61", "$a62..a63",
+};
+
+static const char *prc_kv3_v2_11[] = {
+  "$a0..a31", "$a32..a63",
+};
+
+static const char *prc_kv3_v2_12[] = {
+  "$a0..a3", "$a4..a7", "$a8..a11", "$a12..a15",
+  "$a16..a19", "$a20..a23", "$a24..a27", "$a28..a31",
+  "$a32..a35", "$a36..a39", "$a40..a43", "$a44..a47",
+  "$a48..a51", "$a52..a55", "$a56..a59", "$a60..a63",
+};
+
+static const char *prc_kv3_v2_13[] = {
+  "$a0..a63",
+};
+
+static const char *prc_kv3_v2_14[] = {
+  "$a0..a7", "$a8..a15", "$a16..a23", "$a24..a31",
+  "$a32..a39", "$a40..a47", "$a48..a55", "$a56..a63",
+};
+
+static const char *prc_kv3_v2_15[] = {
+  "$a0a1a2a3", "$a4a5a6a7", "$a8a9a10a11", "$a12a13a14a15",
+  "$a16a17a18a19", "$a20a21a22a23", "$a24a25a26a27", "$a28a29a30a31",
+  "$a32a33a34a35", "$a36a37a38a39", "$a40a41a42a43", "$a44a45a46a47",
+  "$a48a49a50a51", "$a52a53a54a55", "$a56a57a58a59", "$a60a61a62a63",
+};
+
+static const char *prc_kv3_v2_16[] = {
+  "$a0", "$a0a1.lo", "$a0a1a2a3.x", "$a4",
+  "$a4a5.lo", "$a4a5a6a7.x", "$a8", "$a8a9.lo",
+  "$a8a9a10a11.x", "$a12", "$a12a13.lo", "$a12a13a14a15.x",
+  "$a16", "$a16a17.lo", "$a16a17a18a19.x", "$a20",
+  "$a20a21.lo", "$a20a21a22a23.x", "$a24", "$a24a25.lo",
+  "$a24a25a26a27.x", "$a28", "$a28a29.lo", "$a28a29a30a31.x",
+  "$a32", "$a32a33.lo", "$a32a33a34a35.x", "$a36",
+  "$a36a37.lo", "$a36a37a38a39.x", "$a40", "$a40a41.lo",
+  "$a40a41a42a43.x", "$a44", "$a44a45.lo", "$a44a45a46a47.x",
+  "$a48", "$a48a49.lo", "$a48a49a50a51.x", "$a52",
+  "$a52a53.lo", "$a52a53a54a55.x", "$a56", "$a56a57.lo",
+  "$a56a57a58a59.x", "$a60", "$a60a61.lo", "$a60a61a62a63.x",
+};
+
+static const char *prc_kv3_v2_17[] = {
+  "$a1", "$a0a1.hi", "$a0a1a2a3.y", "$a5",
+  "$a4a5.hi", "$a4a5a6a7.y", "$a9", "$a8a9.hi",
+  "$a8a9a10a11.y", "$a13", "$a12a13.hi", "$a12a13a14a15.y",
+  "$a17", "$a16a17.hi", "$a16a17a18a19.y", "$a21",
+  "$a20a21.hi", "$a20a21a22a23.y", "$a25", "$a24a25.hi",
+  "$a24a25a26a27.y", "$a29", "$a28a29.hi", "$a28a29a30a31.y",
+  "$a33", "$a32a33.hi", "$a32a33a34a35.y", "$a37",
+  "$a36a37.hi", "$a36a37a38a39.y", "$a41", "$a40a41.hi",
+  "$a40a41a42a43.y", "$a45", "$a44a45.hi", "$a44a45a46a47.y",
+  "$a49", "$a48a49.hi", "$a48a49a50a51.y", "$a53",
+  "$a52a53.hi", "$a52a53a54a55.y", "$a57", "$a56a57.hi",
+  "$a56a57a58a59.y", "$a61", "$a60a61.hi", "$a60a61a62a63.y",
+};
+
+static const char *prc_kv3_v2_18[] = {
+  "$a2", "$a2a3.lo", "$a0a1a2a3.z", "$a6",
+  "$a6a7.lo", "$a4a5a6a7.z", "$a10", "$a10a11.lo",
+  "$a8a9a10a11.z", "$a14", "$a14a15.lo", "$a12a13a14a15.z",
+  "$a18", "$a18a19.lo", "$a16a17a18a19.z", "$a22",
+  "$a22a23..lo", "$a20a21a22a23.z", "$a26", "$a26a27.lo",
+  "$a24a25a26a27.z", "$a30", "$a30a31.lo", "$a28a29a30a31.z",
+  "$a34", "$a34a35.lo", "$a32a33a34a35.z", "$a38",
+  "$a38a39.lo", "$a36a37a38a39.z", "$a42", "$a42a43.lo",
+  "$a40a41a42a43.z", "$a46", "$a46a47.lo", "$a44a45a46a47.z",
+  "$a50", "$a50a51.lo", "$a48a49a50a51.z", "$a54",
+  "$a54a55.lo", "$a52a53a54a55.z", "$a58", "$a58a59.lo",
+  "$a56a57a58a59.z", "$a62", "$a62a63.lo", "$a60a61a62a63.z",
+};
+
+static const char *prc_kv3_v2_19[] = {
+  "$a3", "$a2a3.hi", "$a0a1a2a3.t", "$a7",
+  "$a6a7.hi", "$a4a5a6a7.t", "$a11", "$a10a11.hi",
+  "$a8a9a10a11.t", "$a15", "$a14a15.hi", "$a12a13a14a15.t",
+  "$a19", "$a18a19.hi", "$a16a17a18a19.t", "$a23",
+  "$a22a23.hi", "$a20a21a22a23.t", "$a27", "$a26a27.hi",
+  "$a24a25a26a27.t", "$a31", "$a30a31.hi", "$a28a29a30a31.t",
+  "$a35", "$a34a35.hi", "$a32a33a34a35.t", "$a39",
+  "$a38a39.hi", "$a36a37a38a39.t", "$a43", "$a42a43.hi",
+  "$a40a41a42a43.t", "$a47", "$a46a47.hi", "$a44a45a46a47.t",
+  "$a51", "$a50a51.hi", "$a48a49a50a51.t", "$a55",
+  "$a54a55.hi", "$a52a53a54a55.t", "$a59", "$a58a59.hi",
+  "$a56a57a58a59.t", "$a63", "$a62a63.hi", "$a60a61a62a63.t",
+};
+
+static const char *prc_kv3_v2_20[] = {
+  "$pcr", "$s2", "$cs", "$s4",
+  "$csit", "$s5", "$ipe", "$s10",
+  "$men", "$s11", "$pmc", "$s12",
+  "$tcr", "$s18", "$ile", "$s25",
+  "$ill", "$s26", "$ilr", "$s27",
+  "$tel", "$s29", "$teh", "$s30",
+  "$ixc", "$s31", "$mes", "$s45",
+  "$ws", "$s46", "$dc0", "$s47",
+  "$dc1", "$s48", "$dc2", "$s49",
+  "$dc3", "$s50", "$pmc2", "$s61",
+  "$es_pl0", "$s84", "$es_pl1", "$s85",
+  "$es_pl2", "$s86", "$es_pl3", "$s87",
+  "$es", "$s148", "$tpcc_pl0", "$s104",
+  "$tpcc_pl1", "$s105", "$tpcc_pl2", "$s106",
+  "$tpcc_pl3", "$s107", "$tpcc", "$s168",
+};
+
+static const char *prc_kv3_v2_21[] = {
+  "$pc", "$s0", "$syo", "$s32",
+  "$hto", "$s33", "$ito", "$s34",
+  "$do", "$s35", "$mo", "$s36",
+  "$pso", "$s37",
+};
+
+static const char *prc_kv3_v2_22[] = {
+  "$ra", "$s3",
+};
+
+static const char *prc_kv3_v2_23[] = {
+  "$aespc", "$s6", "$ls", "$s7",
+  "$le", "$s8", "$lc", "$s9",
+  "$pm0", "$s13", "$pm1", "$s14",
+  "$pm2", "$s15", "$pm3", "$s16",
+  "$pmsa", "$s17", "$t0v", "$s19",
+  "$t1v", "$s20", "$t0r", "$s21",
+  "$t1r", "$s22", "$wdv", "$s23",
+  "$wdr", "$s24", "$tpcm0", "$s38",
+  "$tpcm1", "$s39", "$res40", "$s40",
+  "$dba0", "$s41", "$dba1", "$s42",
+  "$dwa0", "$s43", "$dwa1", "$s44",
+  "$dba2", "$s51", "$dba3", "$s52",
+  "$dwa2", "$s53", "$dwa3", "$s54",
+  "$tpcm2", "$s55", "$tpcmc", "$s56",
+  "$pm4", "$s57", "$pm5", "$s58",
+  "$pm6", "$s59", "$pm7", "$s60",
+  "$srhpc", "$s62", "$frcc", "$s63",
+  "$spc_pl0", "$s64", "$spc_pl1", "$s65",
+  "$spc_pl2", "$s66", "$spc_pl3", "$s67",
+  "$ea_pl0", "$s72", "$ea_pl1", "$s73",
+  "$ea_pl2", "$s74", "$ea_pl3", "$s75",
+  "$ev_pl0", "$s76", "$ev_pl1", "$s77",
+  "$ev_pl2", "$s78", "$ev_pl3", "$s79",
+  "$sr_pl0", "$s80", "$sr_pl1", "$s81",
+  "$sr_pl2", "$s82", "$sr_pl3", "$s83",
+  "$sid_pl0", "$s88", "$sid_pl1", "$s89",
+  "$sid_pl2", "$s90", "$sid_pl3", "$s91",
+  "$sr1_pl0", "$s92", "$sr1_pl1", "$s93",
+  "$sr1_pl2", "$s94", "$sr1_pl3", "$s95",
+  "$spc", "$s128", "$ea", "$s136",
+  "$ev", "$s140", "$sr", "$s144",
+  "$sid", "$s152", "$sr1", "$s156",
+  "$vsfr0", "$s256", "$vsfr1", "$s257",
+  "$vsfr2", "$s258", "$vsfr3", "$s259",
+  "$vsfr4", "$s260", "$vsfr5", "$s261",
+  "$vsfr6", "$s262", "$vsfr7", "$s263",
+  "$vsfr8", "$s264", "$vsfr9", "$s265",
+  "$vsfr10", "$s266", "$vsfr11", "$s267",
+  "$vsfr12", "$s268", "$vsfr13", "$s269",
+  "$vsfr14", "$s270", "$vsfr15", "$s271",
+  "$vsfr16", "$s272", "$vsfr17", "$s273",
+  "$vsfr18", "$s274", "$vsfr19", "$s275",
+  "$vsfr20", "$s276", "$vsfr21", "$s277",
+  "$vsfr22", "$s278", "$vsfr23", "$s279",
+  "$vsfr24", "$s280", "$vsfr25", "$s281",
+  "$vsfr26", "$s282", "$vsfr27", "$s283",
+  "$vsfr28", "$s284", "$vsfr29", "$s285",
+  "$vsfr30", "$s286", "$vsfr31", "$s287",
+  "$vsfr32", "$s288", "$vsfr33", "$s289",
+  "$vsfr34", "$s290", "$vsfr35", "$s291",
+  "$vsfr36", "$s292", "$vsfr37", "$s293",
+  "$vsfr38", "$s294", "$vsfr39", "$s295",
+  "$vsfr40", "$s296", "$vsfr41", "$s297",
+  "$vsfr42", "$s298", "$vsfr43", "$s299",
+  "$vsfr44", "$s300", "$vsfr45", "$s301",
+  "$vsfr46", "$s302", "$vsfr47", "$s303",
+  "$vsfr48", "$s304", "$vsfr49", "$s305",
+  "$vsfr50", "$s306", "$vsfr51", "$s307",
+  "$vsfr52", "$s308", "$vsfr53", "$s309",
+  "$vsfr54", "$s310", "$vsfr55", "$s311",
+  "$vsfr56", "$s312", "$vsfr57", "$s313",
+  "$vsfr58", "$s314", "$vsfr59", "$s315",
+  "$vsfr60", "$s316", "$vsfr61", "$s317",
+  "$vsfr62", "$s318", "$vsfr63", "$s319",
+  "$vsfr64", "$s320", "$vsfr65", "$s321",
+  "$vsfr66", "$s322", "$vsfr67", "$s323",
+  "$vsfr68", "$s324", "$vsfr69", "$s325",
+  "$vsfr70", "$s326", "$vsfr71", "$s327",
+  "$vsfr72", "$s328", "$vsfr73", "$s329",
+  "$vsfr74", "$s330", "$vsfr75", "$s331",
+  "$vsfr76", "$s332", "$vsfr77", "$s333",
+  "$vsfr78", "$s334", "$vsfr79", "$s335",
+  "$vsfr80", "$s336", "$vsfr81", "$s337",
+  "$vsfr82", "$s338", "$vsfr83", "$s339",
+  "$vsfr84", "$s340", "$vsfr85", "$s341",
+  "$vsfr86", "$s342", "$vsfr87", "$s343",
+  "$vsfr88", "$s344", "$vsfr89", "$s345",
+  "$vsfr90", "$s346", "$vsfr91", "$s347",
+  "$vsfr92", "$s348", "$vsfr93", "$s349",
+  "$vsfr94", "$s350", "$vsfr95", "$s351",
+  "$vsfr96", "$s352", "$vsfr97", "$s353",
+  "$vsfr98", "$s354", "$vsfr99", "$s355",
+  "$vsfr100", "$s356", "$vsfr101", "$s357",
+  "$vsfr102", "$s358", "$vsfr103", "$s359",
+  "$vsfr104", "$s360", "$vsfr105", "$s361",
+  "$vsfr106", "$s362", "$vsfr107", "$s363",
+  "$vsfr108", "$s364", "$vsfr109", "$s365",
+  "$vsfr110", "$s366", "$vsfr111", "$s367",
+  "$vsfr112", "$s368", "$vsfr113", "$s369",
+  "$vsfr114", "$s370", "$vsfr115", "$s371",
+  "$vsfr116", "$s372", "$vsfr117", "$s373",
+  "$vsfr118", "$s374", "$vsfr119", "$s375",
+  "$vsfr120", "$s376", "$vsfr121", "$s377",
+  "$vsfr122", "$s378", "$vsfr123", "$s379",
+  "$vsfr124", "$s380", "$vsfr125", "$s381",
+  "$vsfr126", "$s382", "$vsfr127", "$s383",
+  "$vsfr128", "$s384", "$vsfr129", "$s385",
+  "$vsfr130", "$s386", "$vsfr131", "$s387",
+  "$vsfr132", "$s388", "$vsfr133", "$s389",
+  "$vsfr134", "$s390", "$vsfr135", "$s391",
+  "$vsfr136", "$s392", "$vsfr137", "$s393",
+  "$vsfr138", "$s394", "$vsfr139", "$s395",
+  "$vsfr140", "$s396", "$vsfr141", "$s397",
+  "$vsfr142", "$s398", "$vsfr143", "$s399",
+  "$vsfr144", "$s400", "$vsfr145", "$s401",
+  "$vsfr146", "$s402", "$vsfr147", "$s403",
+  "$vsfr148", "$s404", "$vsfr149", "$s405",
+  "$vsfr150", "$s406", "$vsfr151", "$s407",
+  "$vsfr152", "$s408", "$vsfr153", "$s409",
+  "$vsfr154", "$s410", "$vsfr155", "$s411",
+  "$vsfr156", "$s412", "$vsfr157", "$s413",
+  "$vsfr158", "$s414", "$vsfr159", "$s415",
+  "$vsfr160", "$s416", "$vsfr161", "$s417",
+  "$vsfr162", "$s418", "$vsfr163", "$s419",
+  "$vsfr164", "$s420", "$vsfr165", "$s421",
+  "$vsfr166", "$s422", "$vsfr167", "$s423",
+  "$vsfr168", "$s424", "$vsfr169", "$s425",
+  "$vsfr170", "$s426", "$vsfr171", "$s427",
+  "$vsfr172", "$s428", "$vsfr173", "$s429",
+  "$vsfr174", "$s430", "$vsfr175", "$s431",
+  "$vsfr176", "$s432", "$vsfr177", "$s433",
+  "$vsfr178", "$s434", "$vsfr179", "$s435",
+  "$vsfr180", "$s436", "$vsfr181", "$s437",
+  "$vsfr182", "$s438", "$vsfr183", "$s439",
+  "$vsfr184", "$s440", "$vsfr185", "$s441",
+  "$vsfr186", "$s442", "$vsfr187", "$s443",
+  "$vsfr188", "$s444", "$vsfr189", "$s445",
+  "$vsfr190", "$s446", "$vsfr191", "$s447",
+  "$vsfr192", "$s448", "$vsfr193", "$s449",
+  "$vsfr194", "$s450", "$vsfr195", "$s451",
+  "$vsfr196", "$s452", "$vsfr197", "$s453",
+  "$vsfr198", "$s454", "$vsfr199", "$s455",
+  "$vsfr200", "$s456", "$vsfr201", "$s457",
+  "$vsfr202", "$s458", "$vsfr203", "$s459",
+  "$vsfr204", "$s460", "$vsfr205", "$s461",
+  "$vsfr206", "$s462", "$vsfr207", "$s463",
+  "$vsfr208", "$s464", "$vsfr209", "$s465",
+  "$vsfr210", "$s466", "$vsfr211", "$s467",
+  "$vsfr212", "$s468", "$vsfr213", "$s469",
+  "$vsfr214", "$s470", "$vsfr215", "$s471",
+  "$vsfr216", "$s472", "$vsfr217", "$s473",
+  "$vsfr218", "$s474", "$vsfr219", "$s475",
+  "$vsfr220", "$s476", "$vsfr221", "$s477",
+  "$vsfr222", "$s478", "$vsfr223", "$s479",
+  "$vsfr224", "$s480", "$vsfr225", "$s481",
+  "$vsfr226", "$s482", "$vsfr227", "$s483",
+  "$vsfr228", "$s484", "$vsfr229", "$s485",
+  "$vsfr230", "$s486", "$vsfr231", "$s487",
+  "$vsfr232", "$s488", "$vsfr233", "$s489",
+  "$vsfr234", "$s490", "$vsfr235", "$s491",
+  "$vsfr236", "$s492", "$vsfr237", "$s493",
+  "$vsfr238", "$s494", "$vsfr239", "$s495",
+  "$vsfr240", "$s496", "$vsfr241", "$s497",
+  "$vsfr242", "$s498", "$vsfr243", "$s499",
+  "$vsfr244", "$s500", "$vsfr245", "$s501",
+  "$vsfr246", "$s502", "$vsfr247", "$s503",
+  "$vsfr248", "$s504", "$vsfr249", "$s505",
+  "$vsfr250", "$s506", "$vsfr251", "$s507",
+  "$vsfr252", "$s508", "$vsfr253", "$s509",
+  "$vsfr254", "$s510", "$vsfr255", "$s511",
+};
+
+static const char *prc_kv3_v2_24[] = {
+  "$res102", "$s102", "$res103", "$s103",
+  "$res108", "$s108", "$res109", "$s109",
+  "$res110", "$s110", "$res111", "$s111",
+  "$res112", "$s112", "$res113", "$s113",
+  "$res114", "$s114", "$res115", "$s115",
+  "$res116", "$s116", "$res117", "$s117",
+  "$res118", "$s118", "$res119", "$s119",
+  "$res120", "$s120", "$res121", "$s121",
+  "$res122", "$s122", "$res123", "$s123",
+  "$res124", "$s124", "$res125", "$s125",
+  "$res126", "$s126", "$res127", "$s127",
+  "$res129", "$s129", "$res130", "$s130",
+  "$res131", "$s131", "$res133", "$s133",
+  "$res134", "$s134", "$res135", "$s135",
+  "$res137", "$s137", "$res138", "$s138",
+  "$res139", "$s139", "$res141", "$s141",
+  "$res142", "$s142", "$res143", "$s143",
+  "$res145", "$s145", "$res146", "$s146",
+  "$res147", "$s147", "$res149", "$s149",
+  "$res150", "$s150", "$res151", "$s151",
+  "$res153", "$s153", "$res154", "$s154",
+  "$res155", "$s155", "$res157", "$s157",
+  "$res158", "$s158", "$res159", "$s159",
+  "$res160", "$s160", "$res161", "$s161",
+  "$res162", "$s162", "$res163", "$s163",
+  "$res164", "$s164", "$res165", "$s165",
+  "$res166", "$s166", "$res167", "$s167",
+  "$res169", "$s169", "$res170", "$s170",
+  "$res171", "$s171", "$res172", "$s172",
+  "$res173", "$s173", "$res174", "$s174",
+  "$res175", "$s175", "$res176", "$s176",
+  "$res177", "$s177", "$res178", "$s178",
+  "$res179", "$s179", "$res180", "$s180",
+  "$res181", "$s181", "$res182", "$s182",
+  "$res183", "$s183", "$res184", "$s184",
+  "$res185", "$s185", "$res186", "$s186",
+  "$res187", "$s187", "$res188", "$s188",
+  "$res189", "$s189", "$res190", "$s190",
+  "$res191", "$s191", "$res192", "$s192",
+  "$res193", "$s193", "$res194", "$s194",
+  "$res195", "$s195", "$res196", "$s196",
+  "$res197", "$s197", "$res198", "$s198",
+  "$res199", "$s199", "$res200", "$s200",
+  "$res201", "$s201", "$res202", "$s202",
+  "$res203", "$s203", "$res204", "$s204",
+  "$res205", "$s205", "$res206", "$s206",
+  "$res207", "$s207", "$res208", "$s208",
+  "$res209", "$s209", "$res210", "$s210",
+  "$res211", "$s211", "$res212", "$s212",
+  "$res213", "$s213", "$res214", "$s214",
+  "$res215", "$s215", "$res216", "$s216",
+  "$res217", "$s217", "$res218", "$s218",
+  "$res219", "$s219", "$res220", "$s220",
+  "$res221", "$s221", "$res222", "$s222",
+  "$res223", "$s223", "$res224", "$s224",
+  "$res225", "$s225", "$res226", "$s226",
+  "$res227", "$s227", "$res228", "$s228",
+  "$res229", "$s229", "$res230", "$s230",
+  "$res231", "$s231", "$res232", "$s232",
+  "$res233", "$s233", "$res234", "$s234",
+  "$res235", "$s235", "$res236", "$s236",
+  "$res237", "$s237", "$res238", "$s238",
+  "$res239", "$s239", "$res240", "$s240",
+  "$res241", "$s241", "$res242", "$s242",
+  "$res243", "$s243", "$res244", "$s244",
+  "$res245", "$s245", "$res246", "$s246",
+  "$res247", "$s247", "$res248", "$s248",
+  "$res249", "$s249", "$res250", "$s250",
+  "$res251", "$s251", "$res252", "$s252",
+  "$res253", "$s253", "$res254", "$s254",
+  "$res255", "$s255",
+};
+
+static const char *prc_kv3_v2_25[] = {
+  "$r0r1", "$r0r1r2r3.lo", "$r2r3", "$r0r1r2r3.hi",
+  "$r4r5", "$r4r5r6r7.lo", "$r6r7", "$r4r5r6r7.hi",
+  "$r8r9", "$r8r9r10r11.lo", "$r10r11", "$r8r9r10r11.hi",
+  "$r12r13", "$r12r13r14r15.lo", "$r14r15", "$r12r13r14r15.hi",
+  "$r16r17", "$r16r17r18r19.lo", "$r18r19", "$r16r17r18r19.hi",
+  "$r20r21", "$r20r21r22r23.lo", "$r22r23", "$r20r21r22r23.hi",
+  "$r24r25", "$r24r25r26r27.lo", "$r26r27", "$r24r25r26r27.hi",
+  "$r28r29", "$r28r29r30r31.lo", "$r30r31", "$r28r29r30r31.hi",
+  "$r32r33", "$r32r33r34r35.lo", "$r34r35", "$r32r33r34r35.hi",
+  "$r36r37", "$r36r37r38r39.lo", "$r38r39", "$r36r37r38r39.hi",
+  "$r40r41", "$r40r41r42r43.lo", "$r42r43", "$r40r41r42r43.hi",
+  "$r44r45", "$r44r45r46r47.lo", "$r46r47", "$r44r45r46r47.hi",
+  "$r48r49", "$r48r49r50r51.lo", "$r50r51", "$r48r49r50r51.hi",
+  "$r52r53", "$r52r53r54r55.lo", "$r54r55", "$r52r53r54r55.hi",
+  "$r56r57", "$r56r57r58r59.lo", "$r58r59", "$r56r57r58r59.hi",
+  "$r60r61", "$r60r61r62r63.lo", "$r62r63", "$r60r61r62r63.hi",
+};
+
+static const char *prc_kv3_v2_26[] = {
+  "$r0", "$r0r1.lo", "$r0r1r2r3.x", "$r4",
+  "$r4r5.lo", "$r4r5r6r7.x", "$r8", "$r8r9.lo",
+  "$r8r9r10r11.x", "$r12", "$sp", "$r16",
+  "$r16r17.lo", "$r16r17r18r19.x", "$r20", "$r20r21.lo",
+  "$r20r21r22r23.x", "$r24", "$r24r25.lo", "$r24r25r26r27.x",
+  "$r28", "$r28r29.lo", "$r28r29r30r31.x", "$r32",
+  "$r32r33.lo", "$r32r33r34r35.x", "$r36", "$r36r37.lo",
+  "$r36r37r38r39.x", "$r40", "$r40r41.lo", "$r40r41r42r43.x",
+  "$r44", "$r44r45.lo", "$r44r45r46r47.x", "$r48",
+  "$r48r49.lo", "$r48r49r50r51.x", "$r52", "$r52r53.lo",
+  "$r52r53r54r55.x", "$r56", "$r56r57.lo", "$r56r57r58r59.x",
+  "$r60", "$r60r61.lo", "$r60r61r62r63.x",
+};
+
+static const char *prc_kv3_v2_27[] = {
+  "$r2", "$r2r3.lo", "$r0r1r2r3.z", "$r6",
+  "$r6r7.lo", "$r4r5r6r7.z", "$r10", "$r10r11.lo",
+  "$r8r9r10r11.z", "$r14", "$fp", "$r18",
+  "$r18r19.lo", "$r16r17r18r19.z", "$r22", "$r22r23.lo",
+  "$r20r21r22r23.z", "$r26", "$r26r27.lo", "$r24r25r26r27.z",
+  "$r30", "$r30r31.lo", "$r28r29r30r31.z", "$r34",
+  "$r34r35.lo", "$r32r33r34r35.z", "$r38", "$r38r39.lo",
+  "$r36r37r38r39.z", "$r42", "$r42r43.lo", "$r40r41r42r43.z",
+  "$r46", "$r46r47.lo", "$r44r45r46r47.z", "$r50",
+  "$r50r51.lo", "$r48r49r50r51.z", "$r54", "$r54r55.lo",
+  "$r52r53r54r55.z", "$r58", "$r58r59.lo", "$r56r57r58r59.z",
+  "$r62", "$r62r63.lo", "$r60r61r62r63.z",
+};
+
+static const char *prc_kv3_v2_28[] = {
+  "$r1", "$r0r1.hi", "$r0r1r2r3.y", "$r5",
+  "$r4r5.hi", "$r4r5r6r7.y", "$r9", "$r8r9.hi",
+  "$r8r9r10r11.y", "$r13", "$tp", "$r17",
+  "$r16r17.hi", "$r16r17r18r19.y", "$r21", "$r20r21.hi",
+  "$r20r21r22r23.y", "$r25", "$r24r25.hi", "$r24r25r26r27.y",
+  "$r29", "$r28r29.hi", "$r28r29r30r31.y", "$r33",
+  "$r32r33.hi", "$r32r33r34r35.y", "$r37", "$r36r37.hi",
+  "$r36r37r38r39.y", "$r41", "$r40r41.hi", "$r40r41r42r43.y",
+  "$r45", "$r44r45.hi", "$r44r45r46r47.y", "$r49",
+  "$r48r49.hi", "$r48r49r50r51.y", "$r53", "$r52r53.hi",
+  "$r52r53r54r55.y", "$r57", "$r56r57.hi", "$r56r57r58r59.y",
+  "$r61", "$r60r61.hi", "$r60r61r62r63.y",
+};
+
+static const char *prc_kv3_v2_29[] = {
+  "$r3", "$r2r3.hi", "$r0r1r2r3.t", "$r7",
+  "$r6r7.hi", "$r4r5r6r7.t", "$r11", "$r10r11.hi",
+  "$r8r9r10r11.t", "$r15", "$rp", "$r19",
+  "$r18r19.hi", "$r16r17r18r19.t", "$r23", "$r22r23.hi",
+  "$r20r21r22r23.t", "$r27", "$r26r27.hi", "$r24r25r26r27.t",
+  "$r31", "$r30r31.hi", "$r28r29r30r31.t", "$r35",
+  "$r34r35.hi", "$r32r33r34r35.t", "$r39", "$r38r39.hi",
+  "$r36r37r38r39.t", "$r43", "$r42r43.hi", "$r40r41r42r43.t",
+  "$r47", "$r46r47.hi", "$r44r45r46r47.t", "$r51",
+  "$r50r51.hi", "$r48r49r50r51.t", "$r55", "$r54r55.hi",
+  "$r52r53r54r55.t", "$r59", "$r58r59.hi", "$r56r57r58r59.t",
+  "$r63", "$r62r63.hi", "$r60r61r62r63.t",
+};
+
+static const char *prc_kv3_v2_30[] = {
+  "$r0r1r2r3", "$r4r5r6r7", "$r8r9r10r11", "$r12r13r14r15",
+  "$r16r17r18r19", "$r20r21r22r23", "$r24r25r26r27", "$r28r29r30r31",
+  "$r32r33r34r35", "$r36r37r38r39", "$r40r41r42r43", "$r44r45r46r47",
+  "$r48r49r50r51", "$r52r53r54r55", "$r56r57r58r59", "$r60r61r62r63",
+};
+
+static const char *prc_kv3_v2_31[] = {
+  "$a0a1", "$a0a1a2a3.lo", "$a2a3", "$a0a1a2a3.hi",
+  "$a4a5", "$a4a5a6a7.lo", "$a6a7", "$a4a5a6a7.hi",
+  "$a8a9", "$a8a9a10a11.lo", "$a10a11", "$a8a9a10a11.hi",
+  "$a12a13", "$a12a13a14a15.lo", "$a14a15", "$a12a13a14a15.hi",
+  "$a16a17", "$a16a17a18a19.lo", "$a18a19", "$a16a17a18a19.hi",
+  "$a20a21", "$a20a21a22a23.lo", "$a22a23", "$a20a21a22a23.hi",
+  "$a24a25", "$a24a25a26a27.lo", "$a26a27", "$a24a25a26a27.hi",
+  "$a28a29", "$a28a29a30a31.lo", "$a30a31", "$a28a29a30a31.hi",
+  "$a32a33", "$a32a33a34a35.lo", "$a34a35", "$a32a33a34a35.hi",
+  "$a36a37", "$a36a37a38a39.lo", "$a38a39", "$a36a37a38a39.hi",
+  "$a40a41", "$a40a41a42a43.lo", "$a42a43", "$a40a41a42a43.hi",
+  "$a44a45", "$a44a45a46a47.lo", "$a46a47", "$a44a45a46a47.hi",
+  "$a48a49", "$a48a49a50a51.lo", "$a50a51", "$a48a49a50a51.hi",
+  "$a52a53", "$a52a53a54a55.lo", "$a54a55", "$a52a53a54a55.hi",
+  "$a56a57", "$a56a57a58a59.lo", "$a58a59", "$a56a57a58a59.hi",
+  "$a60a61", "$a60a61a62a63.lo", "$a62a63", "$a60a61a62a63.hi",
+};
+\f
+#define _enc(x) (1ULL << ((x) - Modifier_kv3_v2_accesses))
+enum pmd_kv3_v2_id_t {
+  pmd_kv3_v2_id_00 = _enc (Modifier_kv3_v2_accesses)
+   | _enc (Modifier_kv3_v2_boolcas)
+   | _enc (Modifier_kv3_v2_coherency)
+   | _enc (Modifier_kv3_v2_conjugate)
+   | _enc (Modifier_kv3_v2_doscale)
+   | _enc (Modifier_kv3_v2_lsupack)
+   | _enc (Modifier_kv3_v2_rounding)
+   | _enc (Modifier_kv3_v2_shuffleV)
+   | _enc (Modifier_kv3_v2_shuffleX)
+   | _enc (Modifier_kv3_v2_silent)
+   | _enc (Modifier_kv3_v2_splat32)
+   | _enc (Modifier_kv3_v2_transpose)
+   | _enc (Modifier_kv3_v2_variant),
+  pmd_kv3_v2_id_01 = _enc (Modifier_kv3_v2_accesses)
+   | _enc (Modifier_kv3_v2_lsupack),
+  pmd_kv3_v2_id_02 = _enc (Modifier_kv3_v2_accesses),
+  pmd_kv3_v2_id_03 = _enc (Modifier_kv3_v2_boolcas),
+  pmd_kv3_v2_id_04 = _enc (Modifier_kv3_v2_cachelev),
+  pmd_kv3_v2_id_05 = _enc (Modifier_kv3_v2_channel),
+  pmd_kv3_v2_id_06 = _enc (Modifier_kv3_v2_channel)
+   | _enc (Modifier_kv3_v2_lsupack),
+  pmd_kv3_v2_id_07 = _enc (Modifier_kv3_v2_coherency),
+  pmd_kv3_v2_id_08 = _enc (Modifier_kv3_v2_coherency)
+   | _enc (Modifier_kv3_v2_silent)
+   | _enc (Modifier_kv3_v2_variant),
+  pmd_kv3_v2_id_09 = _enc (Modifier_kv3_v2_comparison),
+  pmd_kv3_v2_id_10 = _enc (Modifier_kv3_v2_conjugate),
+  pmd_kv3_v2_id_11 = _enc (Modifier_kv3_v2_doscale),
+  pmd_kv3_v2_id_12 = _enc (Modifier_kv3_v2_exunum),
+  pmd_kv3_v2_id_13 = _enc (Modifier_kv3_v2_floatcomp),
+  pmd_kv3_v2_id_14 = _enc (Modifier_kv3_v2_hindex),
+  pmd_kv3_v2_id_15 = _enc (Modifier_kv3_v2_lsomask),
+  pmd_kv3_v2_id_16 = _enc (Modifier_kv3_v2_lsomask)
+   | _enc (Modifier_kv3_v2_lsumask),
+  pmd_kv3_v2_id_17 = _enc (Modifier_kv3_v2_lsumask)
+   | _enc (Modifier_kv3_v2_scalarcond),
+  pmd_kv3_v2_id_18 = _enc (Modifier_kv3_v2_lsupack),
+  pmd_kv3_v2_id_19 = _enc (Modifier_kv3_v2_qindex),
+  pmd_kv3_v2_id_20 = _enc (Modifier_kv3_v2_rounding),
+  pmd_kv3_v2_id_21 = _enc (Modifier_kv3_v2_scalarcond),
+  pmd_kv3_v2_id_22 = _enc (Modifier_kv3_v2_scalarcond)
+   | _enc (Modifier_kv3_v2_simplecond),
+  pmd_kv3_v2_id_23 = _enc (Modifier_kv3_v2_shuffleV),
+  pmd_kv3_v2_id_24 = _enc (Modifier_kv3_v2_shuffleX),
+  pmd_kv3_v2_id_25 = _enc (Modifier_kv3_v2_simplecond),
+  pmd_kv3_v2_id_26 = _enc (Modifier_kv3_v2_speculate)
+   | _enc (Modifier_kv3_v2_variant),
+  pmd_kv3_v2_id_27 = _enc (Modifier_kv3_v2_splat32),
+  pmd_kv3_v2_id_28 = _enc (Modifier_kv3_v2_transpose),
+};
+#undef _enc
+
+static const char *pmd_kv3_v2_00[] = {
+  ".",
+};
+
+static const char *pmd_kv3_v2_01[] = {
+  ".w",
+};
+
+static const char *pmd_kv3_v2_02[] = {
+  ".r", ".wa",
+};
+
+static const char *pmd_kv3_v2_03[] = {
+  ".v",
+};
+
+static const char *pmd_kv3_v2_04[] = {
+  ".l1", ".l2",
+};
+
+static const char *pmd_kv3_v2_05[] = {
+  ".f",
+};
+
+static const char *pmd_kv3_v2_06[] = {
+  ".b",
+};
+
+static const char *pmd_kv3_v2_07[] = {
+  ".g",
+};
+
+static const char *pmd_kv3_v2_08[] = {
+  ".s",
+};
+
+static const char *pmd_kv3_v2_09[] = {
+  ".ne", ".eq", ".lt", ".ge",
+  ".le", ".gt", ".ltu", ".geu",
+  ".leu", ".gtu", ".all", ".nall",
+  ".any", ".none",
+};
+
+static const char *pmd_kv3_v2_10[] = {
+  ".c",
+};
+
+static const char *pmd_kv3_v2_11[] = {
+  ".xs",
+};
+
+static const char *pmd_kv3_v2_12[] = {
+  "alu0", "alu1", "mau", "lsu",
+};
+
+static const char *pmd_kv3_v2_13[] = {
+  ".one", ".ueq", ".oeq", ".une",
+  ".olt", ".uge", ".oge", ".ult",
+};
+
+static const char *pmd_kv3_v2_14[] = {
+  ".h0", ".h1",
+};
+
+static const char *pmd_kv3_v2_15[] = {
+  ".u0", ".u1", ".u2", ".u3",
+};
+
+static const char *pmd_kv3_v2_16[] = {
+  ".mt", ".mf", ".mtc", ".mfc",
+};
+
+static const char *pmd_kv3_v2_17[] = {
+  ".dnez", ".deqz", ".wnez", ".weqz",
+};
+
+static const char *pmd_kv3_v2_18[] = {
+  ".q", ".d", ".h",
+};
+
+static const char *pmd_kv3_v2_19[] = {
+  ".q0", ".q1", ".q2", ".q3",
+};
+
+static const char *pmd_kv3_v2_20[] = {
+  ".rn", ".ru", ".rd", ".rz",
+  ".rna", ".rnz", ".ro",
+};
+
+static const char *pmd_kv3_v2_21[] = {
+  ".dltz", ".dgez", ".dlez", ".dgtz",
+  ".wltz", ".wgez", ".wlez", ".wgtz",
+};
+
+static const char *pmd_kv3_v2_22[] = {
+  ".odd", ".even",
+};
+
+static const char *pmd_kv3_v2_23[] = {
+  ".td",
+};
+
+static const char *pmd_kv3_v2_24[] = {
+  ".zd", ".ud", ".tq", ".tw",
+  ".zw", ".uw",
+};
+
+static const char *pmd_kv3_v2_25[] = {
+  ".nez", ".eqz", ".ltz", ".gez",
+  ".lez", ".gtz",
+};
+
+static const char *pmd_kv3_v2_26[] = {
+  ".u", ".us",
+};
+
+static const char *pmd_kv3_v2_27[] = {
+  ".@",
+};
+
+static const char *pmd_kv3_v2_28[] = {
+  ".tn", ".nt", ".tt",
+};
+\f
+#define arr_len(arr) sizeof(arr)/(sizeof(*arr))
+static struct token_class reg_classes_kv3_v2[] = {
+  { prc_kv3_v2_00, prc_kv3_v2_id_00, arr_len (prc_kv3_v2_00) },
+  { prc_kv3_v2_01, prc_kv3_v2_id_01, arr_len (prc_kv3_v2_01) },
+  { prc_kv3_v2_02, prc_kv3_v2_id_02, arr_len (prc_kv3_v2_02) },
+  { prc_kv3_v2_03, prc_kv3_v2_id_03, arr_len (prc_kv3_v2_03) },
+  { prc_kv3_v2_04, prc_kv3_v2_id_04, arr_len (prc_kv3_v2_04) },
+  { prc_kv3_v2_05, prc_kv3_v2_id_05, arr_len (prc_kv3_v2_05) },
+  { prc_kv3_v2_06, prc_kv3_v2_id_06, arr_len (prc_kv3_v2_06) },
+  { prc_kv3_v2_07, prc_kv3_v2_id_07, arr_len (prc_kv3_v2_07) },
+  { prc_kv3_v2_08, prc_kv3_v2_id_08, arr_len (prc_kv3_v2_08) },
+  { prc_kv3_v2_09, prc_kv3_v2_id_09, arr_len (prc_kv3_v2_09) },
+  { prc_kv3_v2_10, prc_kv3_v2_id_10, arr_len (prc_kv3_v2_10) },
+  { prc_kv3_v2_11, prc_kv3_v2_id_11, arr_len (prc_kv3_v2_11) },
+  { prc_kv3_v2_12, prc_kv3_v2_id_12, arr_len (prc_kv3_v2_12) },
+  { prc_kv3_v2_13, prc_kv3_v2_id_13, arr_len (prc_kv3_v2_13) },
+  { prc_kv3_v2_14, prc_kv3_v2_id_14, arr_len (prc_kv3_v2_14) },
+  { prc_kv3_v2_15, prc_kv3_v2_id_15, arr_len (prc_kv3_v2_15) },
+  { prc_kv3_v2_16, prc_kv3_v2_id_16, arr_len (prc_kv3_v2_16) },
+  { prc_kv3_v2_17, prc_kv3_v2_id_17, arr_len (prc_kv3_v2_17) },
+  { prc_kv3_v2_18, prc_kv3_v2_id_18, arr_len (prc_kv3_v2_18) },
+  { prc_kv3_v2_19, prc_kv3_v2_id_19, arr_len (prc_kv3_v2_19) },
+  { prc_kv3_v2_20, prc_kv3_v2_id_20, arr_len (prc_kv3_v2_20) },
+  { prc_kv3_v2_21, prc_kv3_v2_id_21, arr_len (prc_kv3_v2_21) },
+  { prc_kv3_v2_22, prc_kv3_v2_id_22, arr_len (prc_kv3_v2_22) },
+  { prc_kv3_v2_23, prc_kv3_v2_id_23, arr_len (prc_kv3_v2_23) },
+  { prc_kv3_v2_24, prc_kv3_v2_id_24, arr_len (prc_kv3_v2_24) },
+  { prc_kv3_v2_25, prc_kv3_v2_id_25, arr_len (prc_kv3_v2_25) },
+  { prc_kv3_v2_26, prc_kv3_v2_id_26, arr_len (prc_kv3_v2_26) },
+  { prc_kv3_v2_27, prc_kv3_v2_id_27, arr_len (prc_kv3_v2_27) },
+  { prc_kv3_v2_28, prc_kv3_v2_id_28, arr_len (prc_kv3_v2_28) },
+  { prc_kv3_v2_29, prc_kv3_v2_id_29, arr_len (prc_kv3_v2_29) },
+  { prc_kv3_v2_30, prc_kv3_v2_id_30, arr_len (prc_kv3_v2_30) },
+  { prc_kv3_v2_31, prc_kv3_v2_id_31, arr_len (prc_kv3_v2_31) },
+  { NULL, -1, -1 },
+};
+
+static struct token_class mod_classes_kv3_v2[] = {
+  { pmd_kv3_v2_00, pmd_kv3_v2_id_00, arr_len (pmd_kv3_v2_00) },
+  { pmd_kv3_v2_01, pmd_kv3_v2_id_01, arr_len (pmd_kv3_v2_01) },
+  { pmd_kv3_v2_02, pmd_kv3_v2_id_02, arr_len (pmd_kv3_v2_02) },
+  { pmd_kv3_v2_03, pmd_kv3_v2_id_03, arr_len (pmd_kv3_v2_03) },
+  { pmd_kv3_v2_04, pmd_kv3_v2_id_04, arr_len (pmd_kv3_v2_04) },
+  { pmd_kv3_v2_05, pmd_kv3_v2_id_05, arr_len (pmd_kv3_v2_05) },
+  { pmd_kv3_v2_06, pmd_kv3_v2_id_06, arr_len (pmd_kv3_v2_06) },
+  { pmd_kv3_v2_07, pmd_kv3_v2_id_07, arr_len (pmd_kv3_v2_07) },
+  { pmd_kv3_v2_08, pmd_kv3_v2_id_08, arr_len (pmd_kv3_v2_08) },
+  { pmd_kv3_v2_09, pmd_kv3_v2_id_09, arr_len (pmd_kv3_v2_09) },
+  { pmd_kv3_v2_10, pmd_kv3_v2_id_10, arr_len (pmd_kv3_v2_10) },
+  { pmd_kv3_v2_11, pmd_kv3_v2_id_11, arr_len (pmd_kv3_v2_11) },
+  { pmd_kv3_v2_12, pmd_kv3_v2_id_12, arr_len (pmd_kv3_v2_12) },
+  { pmd_kv3_v2_13, pmd_kv3_v2_id_13, arr_len (pmd_kv3_v2_13) },
+  { pmd_kv3_v2_14, pmd_kv3_v2_id_14, arr_len (pmd_kv3_v2_14) },
+  { pmd_kv3_v2_15, pmd_kv3_v2_id_15, arr_len (pmd_kv3_v2_15) },
+  { pmd_kv3_v2_16, pmd_kv3_v2_id_16, arr_len (pmd_kv3_v2_16) },
+  { pmd_kv3_v2_17, pmd_kv3_v2_id_17, arr_len (pmd_kv3_v2_17) },
+  { pmd_kv3_v2_18, pmd_kv3_v2_id_18, arr_len (pmd_kv3_v2_18) },
+  { pmd_kv3_v2_19, pmd_kv3_v2_id_19, arr_len (pmd_kv3_v2_19) },
+  { pmd_kv3_v2_20, pmd_kv3_v2_id_20, arr_len (pmd_kv3_v2_20) },
+  { pmd_kv3_v2_21, pmd_kv3_v2_id_21, arr_len (pmd_kv3_v2_21) },
+  { pmd_kv3_v2_22, pmd_kv3_v2_id_22, arr_len (pmd_kv3_v2_22) },
+  { pmd_kv3_v2_23, pmd_kv3_v2_id_23, arr_len (pmd_kv3_v2_23) },
+  { pmd_kv3_v2_24, pmd_kv3_v2_id_24, arr_len (pmd_kv3_v2_24) },
+  { pmd_kv3_v2_25, pmd_kv3_v2_id_25, arr_len (pmd_kv3_v2_25) },
+  { pmd_kv3_v2_26, pmd_kv3_v2_id_26, arr_len (pmd_kv3_v2_26) },
+  { pmd_kv3_v2_27, pmd_kv3_v2_id_27, arr_len (pmd_kv3_v2_27) },
+  { pmd_kv3_v2_28, pmd_kv3_v2_id_28, arr_len (pmd_kv3_v2_28) },
+  { NULL, -1, -1 },
+};
+
+static struct token_class imm_classes_kv3_v2[] = {
+  { NULL, Immediate_kv3_v2_brknumber, 2 },
+  { NULL, Immediate_kv3_v2_unsigned6, 6 },
+  { NULL, Immediate_kv3_v2_wrapped8, 8 },
+  { NULL, Immediate_kv3_v2_signed10, -10 },
+  { NULL, Immediate_kv3_v2_sysnumber, 12 },
+  { NULL, Immediate_kv3_v2_signed16, -16 },
+  { NULL, Immediate_kv3_v2_pcrel17, 17 },
+  { NULL, Immediate_kv3_v2_pcrel27, 27 },
+  { NULL, Immediate_kv3_v2_signed27, -27 },
+  { NULL, Immediate_kv3_v2_wrapped32, 32 },
+  { NULL, Immediate_kv3_v2_signed37, -37 },
+  { NULL, Immediate_kv3_v2_signed43, -43 },
+  { NULL, Immediate_kv3_v2_signed54, -54 },
+  { NULL, Immediate_kv3_v2_wrapped64, 64 },
+  { NULL, -1, -1 },
+};
+
+static struct token_class insn_classes_kv3_v2[] = {
+  { insn_kv3_v2_abdbo, Instruction_kv3_v2_abdbo, arr_len (insn_kv3_v2_abdbo) },
+  { insn_kv3_v2_abdd, Instruction_kv3_v2_abdd, arr_len (insn_kv3_v2_abdd) },
+  { insn_kv3_v2_abdd_abase, Instruction_kv3_v2_abdd_abase, arr_len (insn_kv3_v2_abdd_abase) },
+  { insn_kv3_v2_abdhq, Instruction_kv3_v2_abdhq, arr_len (insn_kv3_v2_abdhq) },
+  { insn_kv3_v2_abdsbo, Instruction_kv3_v2_abdsbo, arr_len (insn_kv3_v2_abdsbo) },
+  { insn_kv3_v2_abdsd, Instruction_kv3_v2_abdsd, arr_len (insn_kv3_v2_abdsd) },
+  { insn_kv3_v2_abdshq, Instruction_kv3_v2_abdshq, arr_len (insn_kv3_v2_abdshq) },
+  { insn_kv3_v2_abdsw, Instruction_kv3_v2_abdsw, arr_len (insn_kv3_v2_abdsw) },
+  { insn_kv3_v2_abdswp, Instruction_kv3_v2_abdswp, arr_len (insn_kv3_v2_abdswp) },
+  { insn_kv3_v2_abdubo, Instruction_kv3_v2_abdubo, arr_len (insn_kv3_v2_abdubo) },
+  { insn_kv3_v2_abdud, Instruction_kv3_v2_abdud, arr_len (insn_kv3_v2_abdud) },
+  { insn_kv3_v2_abduhq, Instruction_kv3_v2_abduhq, arr_len (insn_kv3_v2_abduhq) },
+  { insn_kv3_v2_abduw, Instruction_kv3_v2_abduw, arr_len (insn_kv3_v2_abduw) },
+  { insn_kv3_v2_abduwp, Instruction_kv3_v2_abduwp, arr_len (insn_kv3_v2_abduwp) },
+  { insn_kv3_v2_abdw, Instruction_kv3_v2_abdw, arr_len (insn_kv3_v2_abdw) },
+  { insn_kv3_v2_abdwp, Instruction_kv3_v2_abdwp, arr_len (insn_kv3_v2_abdwp) },
+  { insn_kv3_v2_absbo, Instruction_kv3_v2_absbo, arr_len (insn_kv3_v2_absbo) },
+  { insn_kv3_v2_absd, Instruction_kv3_v2_absd, arr_len (insn_kv3_v2_absd) },
+  { insn_kv3_v2_abshq, Instruction_kv3_v2_abshq, arr_len (insn_kv3_v2_abshq) },
+  { insn_kv3_v2_abssbo, Instruction_kv3_v2_abssbo, arr_len (insn_kv3_v2_abssbo) },
+  { insn_kv3_v2_abssd, Instruction_kv3_v2_abssd, arr_len (insn_kv3_v2_abssd) },
+  { insn_kv3_v2_absshq, Instruction_kv3_v2_absshq, arr_len (insn_kv3_v2_absshq) },
+  { insn_kv3_v2_abssw, Instruction_kv3_v2_abssw, arr_len (insn_kv3_v2_abssw) },
+  { insn_kv3_v2_absswp, Instruction_kv3_v2_absswp, arr_len (insn_kv3_v2_absswp) },
+  { insn_kv3_v2_absw, Instruction_kv3_v2_absw, arr_len (insn_kv3_v2_absw) },
+  { insn_kv3_v2_abswp, Instruction_kv3_v2_abswp, arr_len (insn_kv3_v2_abswp) },
+  { insn_kv3_v2_acswapd, Instruction_kv3_v2_acswapd, arr_len (insn_kv3_v2_acswapd) },
+  { insn_kv3_v2_acswapq, Instruction_kv3_v2_acswapq, arr_len (insn_kv3_v2_acswapq) },
+  { insn_kv3_v2_acswapw, Instruction_kv3_v2_acswapw, arr_len (insn_kv3_v2_acswapw) },
+  { insn_kv3_v2_addbo, Instruction_kv3_v2_addbo, arr_len (insn_kv3_v2_addbo) },
+  { insn_kv3_v2_addcd, Instruction_kv3_v2_addcd, arr_len (insn_kv3_v2_addcd) },
+  { insn_kv3_v2_addcd_i, Instruction_kv3_v2_addcd_i, arr_len (insn_kv3_v2_addcd_i) },
+  { insn_kv3_v2_addd, Instruction_kv3_v2_addd, arr_len (insn_kv3_v2_addd) },
+  { insn_kv3_v2_addd_abase, Instruction_kv3_v2_addd_abase, arr_len (insn_kv3_v2_addd_abase) },
+  { insn_kv3_v2_addhq, Instruction_kv3_v2_addhq, arr_len (insn_kv3_v2_addhq) },
+  { insn_kv3_v2_addrbod, Instruction_kv3_v2_addrbod, arr_len (insn_kv3_v2_addrbod) },
+  { insn_kv3_v2_addrhqd, Instruction_kv3_v2_addrhqd, arr_len (insn_kv3_v2_addrhqd) },
+  { insn_kv3_v2_addrwpd, Instruction_kv3_v2_addrwpd, arr_len (insn_kv3_v2_addrwpd) },
+  { insn_kv3_v2_addsbo, Instruction_kv3_v2_addsbo, arr_len (insn_kv3_v2_addsbo) },
+  { insn_kv3_v2_addsd, Instruction_kv3_v2_addsd, arr_len (insn_kv3_v2_addsd) },
+  { insn_kv3_v2_addshq, Instruction_kv3_v2_addshq, arr_len (insn_kv3_v2_addshq) },
+  { insn_kv3_v2_addsw, Instruction_kv3_v2_addsw, arr_len (insn_kv3_v2_addsw) },
+  { insn_kv3_v2_addswp, Instruction_kv3_v2_addswp, arr_len (insn_kv3_v2_addswp) },
+  { insn_kv3_v2_addurbod, Instruction_kv3_v2_addurbod, arr_len (insn_kv3_v2_addurbod) },
+  { insn_kv3_v2_addurhqd, Instruction_kv3_v2_addurhqd, arr_len (insn_kv3_v2_addurhqd) },
+  { insn_kv3_v2_addurwpd, Instruction_kv3_v2_addurwpd, arr_len (insn_kv3_v2_addurwpd) },
+  { insn_kv3_v2_addusbo, Instruction_kv3_v2_addusbo, arr_len (insn_kv3_v2_addusbo) },
+  { insn_kv3_v2_addusd, Instruction_kv3_v2_addusd, arr_len (insn_kv3_v2_addusd) },
+  { insn_kv3_v2_addushq, Instruction_kv3_v2_addushq, arr_len (insn_kv3_v2_addushq) },
+  { insn_kv3_v2_addusw, Instruction_kv3_v2_addusw, arr_len (insn_kv3_v2_addusw) },
+  { insn_kv3_v2_adduswp, Instruction_kv3_v2_adduswp, arr_len (insn_kv3_v2_adduswp) },
+  { insn_kv3_v2_adduwd, Instruction_kv3_v2_adduwd, arr_len (insn_kv3_v2_adduwd) },
+  { insn_kv3_v2_addw, Instruction_kv3_v2_addw, arr_len (insn_kv3_v2_addw) },
+  { insn_kv3_v2_addwd, Instruction_kv3_v2_addwd, arr_len (insn_kv3_v2_addwd) },
+  { insn_kv3_v2_addwp, Instruction_kv3_v2_addwp, arr_len (insn_kv3_v2_addwp) },
+  { insn_kv3_v2_addx16bo, Instruction_kv3_v2_addx16bo, arr_len (insn_kv3_v2_addx16bo) },
+  { insn_kv3_v2_addx16d, Instruction_kv3_v2_addx16d, arr_len (insn_kv3_v2_addx16d) },
+  { insn_kv3_v2_addx16hq, Instruction_kv3_v2_addx16hq, arr_len (insn_kv3_v2_addx16hq) },
+  { insn_kv3_v2_addx16uwd, Instruction_kv3_v2_addx16uwd, arr_len (insn_kv3_v2_addx16uwd) },
+  { insn_kv3_v2_addx16w, Instruction_kv3_v2_addx16w, arr_len (insn_kv3_v2_addx16w) },
+  { insn_kv3_v2_addx16wd, Instruction_kv3_v2_addx16wd, arr_len (insn_kv3_v2_addx16wd) },
+  { insn_kv3_v2_addx16wp, Instruction_kv3_v2_addx16wp, arr_len (insn_kv3_v2_addx16wp) },
+  { insn_kv3_v2_addx2bo, Instruction_kv3_v2_addx2bo, arr_len (insn_kv3_v2_addx2bo) },
+  { insn_kv3_v2_addx2d, Instruction_kv3_v2_addx2d, arr_len (insn_kv3_v2_addx2d) },
+  { insn_kv3_v2_addx2hq, Instruction_kv3_v2_addx2hq, arr_len (insn_kv3_v2_addx2hq) },
+  { insn_kv3_v2_addx2uwd, Instruction_kv3_v2_addx2uwd, arr_len (insn_kv3_v2_addx2uwd) },
+  { insn_kv3_v2_addx2w, Instruction_kv3_v2_addx2w, arr_len (insn_kv3_v2_addx2w) },
+  { insn_kv3_v2_addx2wd, Instruction_kv3_v2_addx2wd, arr_len (insn_kv3_v2_addx2wd) },
+  { insn_kv3_v2_addx2wp, Instruction_kv3_v2_addx2wp, arr_len (insn_kv3_v2_addx2wp) },
+  { insn_kv3_v2_addx32d, Instruction_kv3_v2_addx32d, arr_len (insn_kv3_v2_addx32d) },
+  { insn_kv3_v2_addx32uwd, Instruction_kv3_v2_addx32uwd, arr_len (insn_kv3_v2_addx32uwd) },
+  { insn_kv3_v2_addx32w, Instruction_kv3_v2_addx32w, arr_len (insn_kv3_v2_addx32w) },
+  { insn_kv3_v2_addx32wd, Instruction_kv3_v2_addx32wd, arr_len (insn_kv3_v2_addx32wd) },
+  { insn_kv3_v2_addx4bo, Instruction_kv3_v2_addx4bo, arr_len (insn_kv3_v2_addx4bo) },
+  { insn_kv3_v2_addx4d, Instruction_kv3_v2_addx4d, arr_len (insn_kv3_v2_addx4d) },
+  { insn_kv3_v2_addx4hq, Instruction_kv3_v2_addx4hq, arr_len (insn_kv3_v2_addx4hq) },
+  { insn_kv3_v2_addx4uwd, Instruction_kv3_v2_addx4uwd, arr_len (insn_kv3_v2_addx4uwd) },
+  { insn_kv3_v2_addx4w, Instruction_kv3_v2_addx4w, arr_len (insn_kv3_v2_addx4w) },
+  { insn_kv3_v2_addx4wd, Instruction_kv3_v2_addx4wd, arr_len (insn_kv3_v2_addx4wd) },
+  { insn_kv3_v2_addx4wp, Instruction_kv3_v2_addx4wp, arr_len (insn_kv3_v2_addx4wp) },
+  { insn_kv3_v2_addx64d, Instruction_kv3_v2_addx64d, arr_len (insn_kv3_v2_addx64d) },
+  { insn_kv3_v2_addx64uwd, Instruction_kv3_v2_addx64uwd, arr_len (insn_kv3_v2_addx64uwd) },
+  { insn_kv3_v2_addx64w, Instruction_kv3_v2_addx64w, arr_len (insn_kv3_v2_addx64w) },
+  { insn_kv3_v2_addx64wd, Instruction_kv3_v2_addx64wd, arr_len (insn_kv3_v2_addx64wd) },
+  { insn_kv3_v2_addx8bo, Instruction_kv3_v2_addx8bo, arr_len (insn_kv3_v2_addx8bo) },
+  { insn_kv3_v2_addx8d, Instruction_kv3_v2_addx8d, arr_len (insn_kv3_v2_addx8d) },
+  { insn_kv3_v2_addx8hq, Instruction_kv3_v2_addx8hq, arr_len (insn_kv3_v2_addx8hq) },
+  { insn_kv3_v2_addx8uwd, Instruction_kv3_v2_addx8uwd, arr_len (insn_kv3_v2_addx8uwd) },
+  { insn_kv3_v2_addx8w, Instruction_kv3_v2_addx8w, arr_len (insn_kv3_v2_addx8w) },
+  { insn_kv3_v2_addx8wd, Instruction_kv3_v2_addx8wd, arr_len (insn_kv3_v2_addx8wd) },
+  { insn_kv3_v2_addx8wp, Instruction_kv3_v2_addx8wp, arr_len (insn_kv3_v2_addx8wp) },
+  { insn_kv3_v2_aladdd, Instruction_kv3_v2_aladdd, arr_len (insn_kv3_v2_aladdd) },
+  { insn_kv3_v2_aladdw, Instruction_kv3_v2_aladdw, arr_len (insn_kv3_v2_aladdw) },
+  { insn_kv3_v2_alclrd, Instruction_kv3_v2_alclrd, arr_len (insn_kv3_v2_alclrd) },
+  { insn_kv3_v2_alclrw, Instruction_kv3_v2_alclrw, arr_len (insn_kv3_v2_alclrw) },
+  { insn_kv3_v2_ald, Instruction_kv3_v2_ald, arr_len (insn_kv3_v2_ald) },
+  { insn_kv3_v2_alw, Instruction_kv3_v2_alw, arr_len (insn_kv3_v2_alw) },
+  { insn_kv3_v2_andd, Instruction_kv3_v2_andd, arr_len (insn_kv3_v2_andd) },
+  { insn_kv3_v2_andd_abase, Instruction_kv3_v2_andd_abase, arr_len (insn_kv3_v2_andd_abase) },
+  { insn_kv3_v2_andnd, Instruction_kv3_v2_andnd, arr_len (insn_kv3_v2_andnd) },
+  { insn_kv3_v2_andnd_abase, Instruction_kv3_v2_andnd_abase, arr_len (insn_kv3_v2_andnd_abase) },
+  { insn_kv3_v2_andnw, Instruction_kv3_v2_andnw, arr_len (insn_kv3_v2_andnw) },
+  { insn_kv3_v2_andrbod, Instruction_kv3_v2_andrbod, arr_len (insn_kv3_v2_andrbod) },
+  { insn_kv3_v2_andrhqd, Instruction_kv3_v2_andrhqd, arr_len (insn_kv3_v2_andrhqd) },
+  { insn_kv3_v2_andrwpd, Instruction_kv3_v2_andrwpd, arr_len (insn_kv3_v2_andrwpd) },
+  { insn_kv3_v2_andw, Instruction_kv3_v2_andw, arr_len (insn_kv3_v2_andw) },
+  { insn_kv3_v2_asd, Instruction_kv3_v2_asd, arr_len (insn_kv3_v2_asd) },
+  { insn_kv3_v2_asw, Instruction_kv3_v2_asw, arr_len (insn_kv3_v2_asw) },
+  { insn_kv3_v2_avgbo, Instruction_kv3_v2_avgbo, arr_len (insn_kv3_v2_avgbo) },
+  { insn_kv3_v2_avghq, Instruction_kv3_v2_avghq, arr_len (insn_kv3_v2_avghq) },
+  { insn_kv3_v2_avgrbo, Instruction_kv3_v2_avgrbo, arr_len (insn_kv3_v2_avgrbo) },
+  { insn_kv3_v2_avgrhq, Instruction_kv3_v2_avgrhq, arr_len (insn_kv3_v2_avgrhq) },
+  { insn_kv3_v2_avgrubo, Instruction_kv3_v2_avgrubo, arr_len (insn_kv3_v2_avgrubo) },
+  { insn_kv3_v2_avgruhq, Instruction_kv3_v2_avgruhq, arr_len (insn_kv3_v2_avgruhq) },
+  { insn_kv3_v2_avgruw, Instruction_kv3_v2_avgruw, arr_len (insn_kv3_v2_avgruw) },
+  { insn_kv3_v2_avgruwp, Instruction_kv3_v2_avgruwp, arr_len (insn_kv3_v2_avgruwp) },
+  { insn_kv3_v2_avgrw, Instruction_kv3_v2_avgrw, arr_len (insn_kv3_v2_avgrw) },
+  { insn_kv3_v2_avgrwp, Instruction_kv3_v2_avgrwp, arr_len (insn_kv3_v2_avgrwp) },
+  { insn_kv3_v2_avgubo, Instruction_kv3_v2_avgubo, arr_len (insn_kv3_v2_avgubo) },
+  { insn_kv3_v2_avguhq, Instruction_kv3_v2_avguhq, arr_len (insn_kv3_v2_avguhq) },
+  { insn_kv3_v2_avguw, Instruction_kv3_v2_avguw, arr_len (insn_kv3_v2_avguw) },
+  { insn_kv3_v2_avguwp, Instruction_kv3_v2_avguwp, arr_len (insn_kv3_v2_avguwp) },
+  { insn_kv3_v2_avgw, Instruction_kv3_v2_avgw, arr_len (insn_kv3_v2_avgw) },
+  { insn_kv3_v2_avgwp, Instruction_kv3_v2_avgwp, arr_len (insn_kv3_v2_avgwp) },
+  { insn_kv3_v2_await, Instruction_kv3_v2_await, arr_len (insn_kv3_v2_await) },
+  { insn_kv3_v2_barrier, Instruction_kv3_v2_barrier, arr_len (insn_kv3_v2_barrier) },
+  { insn_kv3_v2_break, Instruction_kv3_v2_break, arr_len (insn_kv3_v2_break) },
+  { insn_kv3_v2_call, Instruction_kv3_v2_call, arr_len (insn_kv3_v2_call) },
+  { insn_kv3_v2_cb, Instruction_kv3_v2_cb, arr_len (insn_kv3_v2_cb) },
+  { insn_kv3_v2_cbsd, Instruction_kv3_v2_cbsd, arr_len (insn_kv3_v2_cbsd) },
+  { insn_kv3_v2_cbsw, Instruction_kv3_v2_cbsw, arr_len (insn_kv3_v2_cbsw) },
+  { insn_kv3_v2_cbswp, Instruction_kv3_v2_cbswp, arr_len (insn_kv3_v2_cbswp) },
+  { insn_kv3_v2_clrf, Instruction_kv3_v2_clrf, arr_len (insn_kv3_v2_clrf) },
+  { insn_kv3_v2_clsd, Instruction_kv3_v2_clsd, arr_len (insn_kv3_v2_clsd) },
+  { insn_kv3_v2_clsw, Instruction_kv3_v2_clsw, arr_len (insn_kv3_v2_clsw) },
+  { insn_kv3_v2_clswp, Instruction_kv3_v2_clswp, arr_len (insn_kv3_v2_clswp) },
+  { insn_kv3_v2_clzd, Instruction_kv3_v2_clzd, arr_len (insn_kv3_v2_clzd) },
+  { insn_kv3_v2_clzw, Instruction_kv3_v2_clzw, arr_len (insn_kv3_v2_clzw) },
+  { insn_kv3_v2_clzwp, Instruction_kv3_v2_clzwp, arr_len (insn_kv3_v2_clzwp) },
+  { insn_kv3_v2_cmovebo, Instruction_kv3_v2_cmovebo, arr_len (insn_kv3_v2_cmovebo) },
+  { insn_kv3_v2_cmoved, Instruction_kv3_v2_cmoved, arr_len (insn_kv3_v2_cmoved) },
+  { insn_kv3_v2_cmovehq, Instruction_kv3_v2_cmovehq, arr_len (insn_kv3_v2_cmovehq) },
+  { insn_kv3_v2_cmovewp, Instruction_kv3_v2_cmovewp, arr_len (insn_kv3_v2_cmovewp) },
+  { insn_kv3_v2_cmuldt, Instruction_kv3_v2_cmuldt, arr_len (insn_kv3_v2_cmuldt) },
+  { insn_kv3_v2_cmulghxdt, Instruction_kv3_v2_cmulghxdt, arr_len (insn_kv3_v2_cmulghxdt) },
+  { insn_kv3_v2_cmulglxdt, Instruction_kv3_v2_cmulglxdt, arr_len (insn_kv3_v2_cmulglxdt) },
+  { insn_kv3_v2_cmulgmxdt, Instruction_kv3_v2_cmulgmxdt, arr_len (insn_kv3_v2_cmulgmxdt) },
+  { insn_kv3_v2_cmulxdt, Instruction_kv3_v2_cmulxdt, arr_len (insn_kv3_v2_cmulxdt) },
+  { insn_kv3_v2_compd, Instruction_kv3_v2_compd, arr_len (insn_kv3_v2_compd) },
+  { insn_kv3_v2_compnbo, Instruction_kv3_v2_compnbo, arr_len (insn_kv3_v2_compnbo) },
+  { insn_kv3_v2_compnd, Instruction_kv3_v2_compnd, arr_len (insn_kv3_v2_compnd) },
+  { insn_kv3_v2_compnhq, Instruction_kv3_v2_compnhq, arr_len (insn_kv3_v2_compnhq) },
+  { insn_kv3_v2_compnw, Instruction_kv3_v2_compnw, arr_len (insn_kv3_v2_compnw) },
+  { insn_kv3_v2_compnwp, Instruction_kv3_v2_compnwp, arr_len (insn_kv3_v2_compnwp) },
+  { insn_kv3_v2_compuwd, Instruction_kv3_v2_compuwd, arr_len (insn_kv3_v2_compuwd) },
+  { insn_kv3_v2_compw, Instruction_kv3_v2_compw, arr_len (insn_kv3_v2_compw) },
+  { insn_kv3_v2_compwd, Instruction_kv3_v2_compwd, arr_len (insn_kv3_v2_compwd) },
+  { insn_kv3_v2_copyd, Instruction_kv3_v2_copyd, arr_len (insn_kv3_v2_copyd) },
+  { insn_kv3_v2_copyo, Instruction_kv3_v2_copyo, arr_len (insn_kv3_v2_copyo) },
+  { insn_kv3_v2_copyq, Instruction_kv3_v2_copyq, arr_len (insn_kv3_v2_copyq) },
+  { insn_kv3_v2_copyw, Instruction_kv3_v2_copyw, arr_len (insn_kv3_v2_copyw) },
+  { insn_kv3_v2_crcbellw, Instruction_kv3_v2_crcbellw, arr_len (insn_kv3_v2_crcbellw) },
+  { insn_kv3_v2_crcbelmw, Instruction_kv3_v2_crcbelmw, arr_len (insn_kv3_v2_crcbelmw) },
+  { insn_kv3_v2_crclellw, Instruction_kv3_v2_crclellw, arr_len (insn_kv3_v2_crclellw) },
+  { insn_kv3_v2_crclelmw, Instruction_kv3_v2_crclelmw, arr_len (insn_kv3_v2_crclelmw) },
+  { insn_kv3_v2_ctzd, Instruction_kv3_v2_ctzd, arr_len (insn_kv3_v2_ctzd) },
+  { insn_kv3_v2_ctzw, Instruction_kv3_v2_ctzw, arr_len (insn_kv3_v2_ctzw) },
+  { insn_kv3_v2_ctzwp, Instruction_kv3_v2_ctzwp, arr_len (insn_kv3_v2_ctzwp) },
+  { insn_kv3_v2_d1inval, Instruction_kv3_v2_d1inval, arr_len (insn_kv3_v2_d1inval) },
+  { insn_kv3_v2_dflushl, Instruction_kv3_v2_dflushl, arr_len (insn_kv3_v2_dflushl) },
+  { insn_kv3_v2_dflushsw, Instruction_kv3_v2_dflushsw, arr_len (insn_kv3_v2_dflushsw) },
+  { insn_kv3_v2_dinvall, Instruction_kv3_v2_dinvall, arr_len (insn_kv3_v2_dinvall) },
+  { insn_kv3_v2_dinvalsw, Instruction_kv3_v2_dinvalsw, arr_len (insn_kv3_v2_dinvalsw) },
+  { insn_kv3_v2_dot2suwd, Instruction_kv3_v2_dot2suwd, arr_len (insn_kv3_v2_dot2suwd) },
+  { insn_kv3_v2_dot2suwdp, Instruction_kv3_v2_dot2suwdp, arr_len (insn_kv3_v2_dot2suwdp) },
+  { insn_kv3_v2_dot2uwd, Instruction_kv3_v2_dot2uwd, arr_len (insn_kv3_v2_dot2uwd) },
+  { insn_kv3_v2_dot2uwdp, Instruction_kv3_v2_dot2uwdp, arr_len (insn_kv3_v2_dot2uwdp) },
+  { insn_kv3_v2_dot2w, Instruction_kv3_v2_dot2w, arr_len (insn_kv3_v2_dot2w) },
+  { insn_kv3_v2_dot2wd, Instruction_kv3_v2_dot2wd, arr_len (insn_kv3_v2_dot2wd) },
+  { insn_kv3_v2_dot2wdp, Instruction_kv3_v2_dot2wdp, arr_len (insn_kv3_v2_dot2wdp) },
+  { insn_kv3_v2_dot2wzp, Instruction_kv3_v2_dot2wzp, arr_len (insn_kv3_v2_dot2wzp) },
+  { insn_kv3_v2_dpurgel, Instruction_kv3_v2_dpurgel, arr_len (insn_kv3_v2_dpurgel) },
+  { insn_kv3_v2_dpurgesw, Instruction_kv3_v2_dpurgesw, arr_len (insn_kv3_v2_dpurgesw) },
+  { insn_kv3_v2_dtouchl, Instruction_kv3_v2_dtouchl, arr_len (insn_kv3_v2_dtouchl) },
+  { insn_kv3_v2_errop, Instruction_kv3_v2_errop, arr_len (insn_kv3_v2_errop) },
+  { insn_kv3_v2_extfs, Instruction_kv3_v2_extfs, arr_len (insn_kv3_v2_extfs) },
+  { insn_kv3_v2_extfz, Instruction_kv3_v2_extfz, arr_len (insn_kv3_v2_extfz) },
+  { insn_kv3_v2_fabsd, Instruction_kv3_v2_fabsd, arr_len (insn_kv3_v2_fabsd) },
+  { insn_kv3_v2_fabshq, Instruction_kv3_v2_fabshq, arr_len (insn_kv3_v2_fabshq) },
+  { insn_kv3_v2_fabsw, Instruction_kv3_v2_fabsw, arr_len (insn_kv3_v2_fabsw) },
+  { insn_kv3_v2_fabswp, Instruction_kv3_v2_fabswp, arr_len (insn_kv3_v2_fabswp) },
+  { insn_kv3_v2_faddd, Instruction_kv3_v2_faddd, arr_len (insn_kv3_v2_faddd) },
+  { insn_kv3_v2_fadddc, Instruction_kv3_v2_fadddc, arr_len (insn_kv3_v2_fadddc) },
+  { insn_kv3_v2_fadddc_c, Instruction_kv3_v2_fadddc_c, arr_len (insn_kv3_v2_fadddc_c) },
+  { insn_kv3_v2_fadddp, Instruction_kv3_v2_fadddp, arr_len (insn_kv3_v2_fadddp) },
+  { insn_kv3_v2_faddho, Instruction_kv3_v2_faddho, arr_len (insn_kv3_v2_faddho) },
+  { insn_kv3_v2_faddhq, Instruction_kv3_v2_faddhq, arr_len (insn_kv3_v2_faddhq) },
+  { insn_kv3_v2_faddw, Instruction_kv3_v2_faddw, arr_len (insn_kv3_v2_faddw) },
+  { insn_kv3_v2_faddwc, Instruction_kv3_v2_faddwc, arr_len (insn_kv3_v2_faddwc) },
+  { insn_kv3_v2_faddwc_c, Instruction_kv3_v2_faddwc_c, arr_len (insn_kv3_v2_faddwc_c) },
+  { insn_kv3_v2_faddwcp, Instruction_kv3_v2_faddwcp, arr_len (insn_kv3_v2_faddwcp) },
+  { insn_kv3_v2_faddwcp_c, Instruction_kv3_v2_faddwcp_c, arr_len (insn_kv3_v2_faddwcp_c) },
+  { insn_kv3_v2_faddwp, Instruction_kv3_v2_faddwp, arr_len (insn_kv3_v2_faddwp) },
+  { insn_kv3_v2_faddwq, Instruction_kv3_v2_faddwq, arr_len (insn_kv3_v2_faddwq) },
+  { insn_kv3_v2_fcdivd, Instruction_kv3_v2_fcdivd, arr_len (insn_kv3_v2_fcdivd) },
+  { insn_kv3_v2_fcdivw, Instruction_kv3_v2_fcdivw, arr_len (insn_kv3_v2_fcdivw) },
+  { insn_kv3_v2_fcdivwp, Instruction_kv3_v2_fcdivwp, arr_len (insn_kv3_v2_fcdivwp) },
+  { insn_kv3_v2_fcompd, Instruction_kv3_v2_fcompd, arr_len (insn_kv3_v2_fcompd) },
+  { insn_kv3_v2_fcompnd, Instruction_kv3_v2_fcompnd, arr_len (insn_kv3_v2_fcompnd) },
+  { insn_kv3_v2_fcompnhq, Instruction_kv3_v2_fcompnhq, arr_len (insn_kv3_v2_fcompnhq) },
+  { insn_kv3_v2_fcompnw, Instruction_kv3_v2_fcompnw, arr_len (insn_kv3_v2_fcompnw) },
+  { insn_kv3_v2_fcompnwp, Instruction_kv3_v2_fcompnwp, arr_len (insn_kv3_v2_fcompnwp) },
+  { insn_kv3_v2_fcompw, Instruction_kv3_v2_fcompw, arr_len (insn_kv3_v2_fcompw) },
+  { insn_kv3_v2_fdot2w, Instruction_kv3_v2_fdot2w, arr_len (insn_kv3_v2_fdot2w) },
+  { insn_kv3_v2_fdot2wd, Instruction_kv3_v2_fdot2wd, arr_len (insn_kv3_v2_fdot2wd) },
+  { insn_kv3_v2_fdot2wdp, Instruction_kv3_v2_fdot2wdp, arr_len (insn_kv3_v2_fdot2wdp) },
+  { insn_kv3_v2_fdot2wzp, Instruction_kv3_v2_fdot2wzp, arr_len (insn_kv3_v2_fdot2wzp) },
+  { insn_kv3_v2_fence, Instruction_kv3_v2_fence, arr_len (insn_kv3_v2_fence) },
+  { insn_kv3_v2_ffdmasw, Instruction_kv3_v2_ffdmasw, arr_len (insn_kv3_v2_ffdmasw) },
+  { insn_kv3_v2_ffdmaswp, Instruction_kv3_v2_ffdmaswp, arr_len (insn_kv3_v2_ffdmaswp) },
+  { insn_kv3_v2_ffdmaswq, Instruction_kv3_v2_ffdmaswq, arr_len (insn_kv3_v2_ffdmaswq) },
+  { insn_kv3_v2_ffdmaw, Instruction_kv3_v2_ffdmaw, arr_len (insn_kv3_v2_ffdmaw) },
+  { insn_kv3_v2_ffdmawp, Instruction_kv3_v2_ffdmawp, arr_len (insn_kv3_v2_ffdmawp) },
+  { insn_kv3_v2_ffdmawq, Instruction_kv3_v2_ffdmawq, arr_len (insn_kv3_v2_ffdmawq) },
+  { insn_kv3_v2_ffdmdaw, Instruction_kv3_v2_ffdmdaw, arr_len (insn_kv3_v2_ffdmdaw) },
+  { insn_kv3_v2_ffdmdawp, Instruction_kv3_v2_ffdmdawp, arr_len (insn_kv3_v2_ffdmdawp) },
+  { insn_kv3_v2_ffdmdawq, Instruction_kv3_v2_ffdmdawq, arr_len (insn_kv3_v2_ffdmdawq) },
+  { insn_kv3_v2_ffdmdsw, Instruction_kv3_v2_ffdmdsw, arr_len (insn_kv3_v2_ffdmdsw) },
+  { insn_kv3_v2_ffdmdswp, Instruction_kv3_v2_ffdmdswp, arr_len (insn_kv3_v2_ffdmdswp) },
+  { insn_kv3_v2_ffdmdswq, Instruction_kv3_v2_ffdmdswq, arr_len (insn_kv3_v2_ffdmdswq) },
+  { insn_kv3_v2_ffdmsaw, Instruction_kv3_v2_ffdmsaw, arr_len (insn_kv3_v2_ffdmsaw) },
+  { insn_kv3_v2_ffdmsawp, Instruction_kv3_v2_ffdmsawp, arr_len (insn_kv3_v2_ffdmsawp) },
+  { insn_kv3_v2_ffdmsawq, Instruction_kv3_v2_ffdmsawq, arr_len (insn_kv3_v2_ffdmsawq) },
+  { insn_kv3_v2_ffdmsw, Instruction_kv3_v2_ffdmsw, arr_len (insn_kv3_v2_ffdmsw) },
+  { insn_kv3_v2_ffdmswp, Instruction_kv3_v2_ffdmswp, arr_len (insn_kv3_v2_ffdmswp) },
+  { insn_kv3_v2_ffdmswq, Instruction_kv3_v2_ffdmswq, arr_len (insn_kv3_v2_ffdmswq) },
+  { insn_kv3_v2_ffmad, Instruction_kv3_v2_ffmad, arr_len (insn_kv3_v2_ffmad) },
+  { insn_kv3_v2_ffmaho, Instruction_kv3_v2_ffmaho, arr_len (insn_kv3_v2_ffmaho) },
+  { insn_kv3_v2_ffmahq, Instruction_kv3_v2_ffmahq, arr_len (insn_kv3_v2_ffmahq) },
+  { insn_kv3_v2_ffmahw, Instruction_kv3_v2_ffmahw, arr_len (insn_kv3_v2_ffmahw) },
+  { insn_kv3_v2_ffmahwq, Instruction_kv3_v2_ffmahwq, arr_len (insn_kv3_v2_ffmahwq) },
+  { insn_kv3_v2_ffmaw, Instruction_kv3_v2_ffmaw, arr_len (insn_kv3_v2_ffmaw) },
+  { insn_kv3_v2_ffmawc, Instruction_kv3_v2_ffmawc, arr_len (insn_kv3_v2_ffmawc) },
+  { insn_kv3_v2_ffmawcp, Instruction_kv3_v2_ffmawcp, arr_len (insn_kv3_v2_ffmawcp) },
+  { insn_kv3_v2_ffmawd, Instruction_kv3_v2_ffmawd, arr_len (insn_kv3_v2_ffmawd) },
+  { insn_kv3_v2_ffmawdp, Instruction_kv3_v2_ffmawdp, arr_len (insn_kv3_v2_ffmawdp) },
+  { insn_kv3_v2_ffmawp, Instruction_kv3_v2_ffmawp, arr_len (insn_kv3_v2_ffmawp) },
+  { insn_kv3_v2_ffmawq, Instruction_kv3_v2_ffmawq, arr_len (insn_kv3_v2_ffmawq) },
+  { insn_kv3_v2_ffmsd, Instruction_kv3_v2_ffmsd, arr_len (insn_kv3_v2_ffmsd) },
+  { insn_kv3_v2_ffmsho, Instruction_kv3_v2_ffmsho, arr_len (insn_kv3_v2_ffmsho) },
+  { insn_kv3_v2_ffmshq, Instruction_kv3_v2_ffmshq, arr_len (insn_kv3_v2_ffmshq) },
+  { insn_kv3_v2_ffmshw, Instruction_kv3_v2_ffmshw, arr_len (insn_kv3_v2_ffmshw) },
+  { insn_kv3_v2_ffmshwq, Instruction_kv3_v2_ffmshwq, arr_len (insn_kv3_v2_ffmshwq) },
+  { insn_kv3_v2_ffmsw, Instruction_kv3_v2_ffmsw, arr_len (insn_kv3_v2_ffmsw) },
+  { insn_kv3_v2_ffmswc, Instruction_kv3_v2_ffmswc, arr_len (insn_kv3_v2_ffmswc) },
+  { insn_kv3_v2_ffmswcp, Instruction_kv3_v2_ffmswcp, arr_len (insn_kv3_v2_ffmswcp) },
+  { insn_kv3_v2_ffmswd, Instruction_kv3_v2_ffmswd, arr_len (insn_kv3_v2_ffmswd) },
+  { insn_kv3_v2_ffmswdp, Instruction_kv3_v2_ffmswdp, arr_len (insn_kv3_v2_ffmswdp) },
+  { insn_kv3_v2_ffmswp, Instruction_kv3_v2_ffmswp, arr_len (insn_kv3_v2_ffmswp) },
+  { insn_kv3_v2_ffmswq, Instruction_kv3_v2_ffmswq, arr_len (insn_kv3_v2_ffmswq) },
+  { insn_kv3_v2_fixedd, Instruction_kv3_v2_fixedd, arr_len (insn_kv3_v2_fixedd) },
+  { insn_kv3_v2_fixedud, Instruction_kv3_v2_fixedud, arr_len (insn_kv3_v2_fixedud) },
+  { insn_kv3_v2_fixeduw, Instruction_kv3_v2_fixeduw, arr_len (insn_kv3_v2_fixeduw) },
+  { insn_kv3_v2_fixeduwp, Instruction_kv3_v2_fixeduwp, arr_len (insn_kv3_v2_fixeduwp) },
+  { insn_kv3_v2_fixedw, Instruction_kv3_v2_fixedw, arr_len (insn_kv3_v2_fixedw) },
+  { insn_kv3_v2_fixedwp, Instruction_kv3_v2_fixedwp, arr_len (insn_kv3_v2_fixedwp) },
+  { insn_kv3_v2_floatd, Instruction_kv3_v2_floatd, arr_len (insn_kv3_v2_floatd) },
+  { insn_kv3_v2_floatud, Instruction_kv3_v2_floatud, arr_len (insn_kv3_v2_floatud) },
+  { insn_kv3_v2_floatuw, Instruction_kv3_v2_floatuw, arr_len (insn_kv3_v2_floatuw) },
+  { insn_kv3_v2_floatuwp, Instruction_kv3_v2_floatuwp, arr_len (insn_kv3_v2_floatuwp) },
+  { insn_kv3_v2_floatw, Instruction_kv3_v2_floatw, arr_len (insn_kv3_v2_floatw) },
+  { insn_kv3_v2_floatwp, Instruction_kv3_v2_floatwp, arr_len (insn_kv3_v2_floatwp) },
+  { insn_kv3_v2_fmaxd, Instruction_kv3_v2_fmaxd, arr_len (insn_kv3_v2_fmaxd) },
+  { insn_kv3_v2_fmaxhq, Instruction_kv3_v2_fmaxhq, arr_len (insn_kv3_v2_fmaxhq) },
+  { insn_kv3_v2_fmaxw, Instruction_kv3_v2_fmaxw, arr_len (insn_kv3_v2_fmaxw) },
+  { insn_kv3_v2_fmaxwp, Instruction_kv3_v2_fmaxwp, arr_len (insn_kv3_v2_fmaxwp) },
+  { insn_kv3_v2_fmind, Instruction_kv3_v2_fmind, arr_len (insn_kv3_v2_fmind) },
+  { insn_kv3_v2_fminhq, Instruction_kv3_v2_fminhq, arr_len (insn_kv3_v2_fminhq) },
+  { insn_kv3_v2_fminw, Instruction_kv3_v2_fminw, arr_len (insn_kv3_v2_fminw) },
+  { insn_kv3_v2_fminwp, Instruction_kv3_v2_fminwp, arr_len (insn_kv3_v2_fminwp) },
+  { insn_kv3_v2_fmm212w, Instruction_kv3_v2_fmm212w, arr_len (insn_kv3_v2_fmm212w) },
+  { insn_kv3_v2_fmm222w, Instruction_kv3_v2_fmm222w, arr_len (insn_kv3_v2_fmm222w) },
+  { insn_kv3_v2_fmma212w, Instruction_kv3_v2_fmma212w, arr_len (insn_kv3_v2_fmma212w) },
+  { insn_kv3_v2_fmma222w, Instruction_kv3_v2_fmma222w, arr_len (insn_kv3_v2_fmma222w) },
+  { insn_kv3_v2_fmms212w, Instruction_kv3_v2_fmms212w, arr_len (insn_kv3_v2_fmms212w) },
+  { insn_kv3_v2_fmms222w, Instruction_kv3_v2_fmms222w, arr_len (insn_kv3_v2_fmms222w) },
+  { insn_kv3_v2_fmuld, Instruction_kv3_v2_fmuld, arr_len (insn_kv3_v2_fmuld) },
+  { insn_kv3_v2_fmulho, Instruction_kv3_v2_fmulho, arr_len (insn_kv3_v2_fmulho) },
+  { insn_kv3_v2_fmulhq, Instruction_kv3_v2_fmulhq, arr_len (insn_kv3_v2_fmulhq) },
+  { insn_kv3_v2_fmulhw, Instruction_kv3_v2_fmulhw, arr_len (insn_kv3_v2_fmulhw) },
+  { insn_kv3_v2_fmulhwq, Instruction_kv3_v2_fmulhwq, arr_len (insn_kv3_v2_fmulhwq) },
+  { insn_kv3_v2_fmulw, Instruction_kv3_v2_fmulw, arr_len (insn_kv3_v2_fmulw) },
+  { insn_kv3_v2_fmulwc, Instruction_kv3_v2_fmulwc, arr_len (insn_kv3_v2_fmulwc) },
+  { insn_kv3_v2_fmulwcp, Instruction_kv3_v2_fmulwcp, arr_len (insn_kv3_v2_fmulwcp) },
+  { insn_kv3_v2_fmulwd, Instruction_kv3_v2_fmulwd, arr_len (insn_kv3_v2_fmulwd) },
+  { insn_kv3_v2_fmulwdp, Instruction_kv3_v2_fmulwdp, arr_len (insn_kv3_v2_fmulwdp) },
+  { insn_kv3_v2_fmulwp, Instruction_kv3_v2_fmulwp, arr_len (insn_kv3_v2_fmulwp) },
+  { insn_kv3_v2_fmulwq, Instruction_kv3_v2_fmulwq, arr_len (insn_kv3_v2_fmulwq) },
+  { insn_kv3_v2_fnarrowdw, Instruction_kv3_v2_fnarrowdw, arr_len (insn_kv3_v2_fnarrowdw) },
+  { insn_kv3_v2_fnarrowdwp, Instruction_kv3_v2_fnarrowdwp, arr_len (insn_kv3_v2_fnarrowdwp) },
+  { insn_kv3_v2_fnarrowwh, Instruction_kv3_v2_fnarrowwh, arr_len (insn_kv3_v2_fnarrowwh) },
+  { insn_kv3_v2_fnarrowwhq, Instruction_kv3_v2_fnarrowwhq, arr_len (insn_kv3_v2_fnarrowwhq) },
+  { insn_kv3_v2_fnegd, Instruction_kv3_v2_fnegd, arr_len (insn_kv3_v2_fnegd) },
+  { insn_kv3_v2_fneghq, Instruction_kv3_v2_fneghq, arr_len (insn_kv3_v2_fneghq) },
+  { insn_kv3_v2_fnegw, Instruction_kv3_v2_fnegw, arr_len (insn_kv3_v2_fnegw) },
+  { insn_kv3_v2_fnegwp, Instruction_kv3_v2_fnegwp, arr_len (insn_kv3_v2_fnegwp) },
+  { insn_kv3_v2_frecw, Instruction_kv3_v2_frecw, arr_len (insn_kv3_v2_frecw) },
+  { insn_kv3_v2_frsrw, Instruction_kv3_v2_frsrw, arr_len (insn_kv3_v2_frsrw) },
+  { insn_kv3_v2_fsbfd, Instruction_kv3_v2_fsbfd, arr_len (insn_kv3_v2_fsbfd) },
+  { insn_kv3_v2_fsbfdc, Instruction_kv3_v2_fsbfdc, arr_len (insn_kv3_v2_fsbfdc) },
+  { insn_kv3_v2_fsbfdc_c, Instruction_kv3_v2_fsbfdc_c, arr_len (insn_kv3_v2_fsbfdc_c) },
+  { insn_kv3_v2_fsbfdp, Instruction_kv3_v2_fsbfdp, arr_len (insn_kv3_v2_fsbfdp) },
+  { insn_kv3_v2_fsbfho, Instruction_kv3_v2_fsbfho, arr_len (insn_kv3_v2_fsbfho) },
+  { insn_kv3_v2_fsbfhq, Instruction_kv3_v2_fsbfhq, arr_len (insn_kv3_v2_fsbfhq) },
+  { insn_kv3_v2_fsbfw, Instruction_kv3_v2_fsbfw, arr_len (insn_kv3_v2_fsbfw) },
+  { insn_kv3_v2_fsbfwc, Instruction_kv3_v2_fsbfwc, arr_len (insn_kv3_v2_fsbfwc) },
+  { insn_kv3_v2_fsbfwc_c, Instruction_kv3_v2_fsbfwc_c, arr_len (insn_kv3_v2_fsbfwc_c) },
+  { insn_kv3_v2_fsbfwcp, Instruction_kv3_v2_fsbfwcp, arr_len (insn_kv3_v2_fsbfwcp) },
+  { insn_kv3_v2_fsbfwcp_c, Instruction_kv3_v2_fsbfwcp_c, arr_len (insn_kv3_v2_fsbfwcp_c) },
+  { insn_kv3_v2_fsbfwp, Instruction_kv3_v2_fsbfwp, arr_len (insn_kv3_v2_fsbfwp) },
+  { insn_kv3_v2_fsbfwq, Instruction_kv3_v2_fsbfwq, arr_len (insn_kv3_v2_fsbfwq) },
+  { insn_kv3_v2_fsdivd, Instruction_kv3_v2_fsdivd, arr_len (insn_kv3_v2_fsdivd) },
+  { insn_kv3_v2_fsdivw, Instruction_kv3_v2_fsdivw, arr_len (insn_kv3_v2_fsdivw) },
+  { insn_kv3_v2_fsdivwp, Instruction_kv3_v2_fsdivwp, arr_len (insn_kv3_v2_fsdivwp) },
+  { insn_kv3_v2_fsrecd, Instruction_kv3_v2_fsrecd, arr_len (insn_kv3_v2_fsrecd) },
+  { insn_kv3_v2_fsrecw, Instruction_kv3_v2_fsrecw, arr_len (insn_kv3_v2_fsrecw) },
+  { insn_kv3_v2_fsrecwp, Instruction_kv3_v2_fsrecwp, arr_len (insn_kv3_v2_fsrecwp) },
+  { insn_kv3_v2_fsrsrd, Instruction_kv3_v2_fsrsrd, arr_len (insn_kv3_v2_fsrsrd) },
+  { insn_kv3_v2_fsrsrw, Instruction_kv3_v2_fsrsrw, arr_len (insn_kv3_v2_fsrsrw) },
+  { insn_kv3_v2_fsrsrwp, Instruction_kv3_v2_fsrsrwp, arr_len (insn_kv3_v2_fsrsrwp) },
+  { insn_kv3_v2_fwidenlhw, Instruction_kv3_v2_fwidenlhw, arr_len (insn_kv3_v2_fwidenlhw) },
+  { insn_kv3_v2_fwidenlhwp, Instruction_kv3_v2_fwidenlhwp, arr_len (insn_kv3_v2_fwidenlhwp) },
+  { insn_kv3_v2_fwidenlwd, Instruction_kv3_v2_fwidenlwd, arr_len (insn_kv3_v2_fwidenlwd) },
+  { insn_kv3_v2_fwidenmhw, Instruction_kv3_v2_fwidenmhw, arr_len (insn_kv3_v2_fwidenmhw) },
+  { insn_kv3_v2_fwidenmhwp, Instruction_kv3_v2_fwidenmhwp, arr_len (insn_kv3_v2_fwidenmhwp) },
+  { insn_kv3_v2_fwidenmwd, Instruction_kv3_v2_fwidenmwd, arr_len (insn_kv3_v2_fwidenmwd) },
+  { insn_kv3_v2_get, Instruction_kv3_v2_get, arr_len (insn_kv3_v2_get) },
+  { insn_kv3_v2_goto, Instruction_kv3_v2_goto, arr_len (insn_kv3_v2_goto) },
+  { insn_kv3_v2_i1inval, Instruction_kv3_v2_i1inval, arr_len (insn_kv3_v2_i1inval) },
+  { insn_kv3_v2_i1invals, Instruction_kv3_v2_i1invals, arr_len (insn_kv3_v2_i1invals) },
+  { insn_kv3_v2_icall, Instruction_kv3_v2_icall, arr_len (insn_kv3_v2_icall) },
+  { insn_kv3_v2_iget, Instruction_kv3_v2_iget, arr_len (insn_kv3_v2_iget) },
+  { insn_kv3_v2_igoto, Instruction_kv3_v2_igoto, arr_len (insn_kv3_v2_igoto) },
+  { insn_kv3_v2_insf, Instruction_kv3_v2_insf, arr_len (insn_kv3_v2_insf) },
+  { insn_kv3_v2_landd, Instruction_kv3_v2_landd, arr_len (insn_kv3_v2_landd) },
+  { insn_kv3_v2_landw, Instruction_kv3_v2_landw, arr_len (insn_kv3_v2_landw) },
+  { insn_kv3_v2_lbs, Instruction_kv3_v2_lbs, arr_len (insn_kv3_v2_lbs) },
+  { insn_kv3_v2_lbz, Instruction_kv3_v2_lbz, arr_len (insn_kv3_v2_lbz) },
+  { insn_kv3_v2_ld, Instruction_kv3_v2_ld, arr_len (insn_kv3_v2_ld) },
+  { insn_kv3_v2_lhs, Instruction_kv3_v2_lhs, arr_len (insn_kv3_v2_lhs) },
+  { insn_kv3_v2_lhz, Instruction_kv3_v2_lhz, arr_len (insn_kv3_v2_lhz) },
+  { insn_kv3_v2_lnandd, Instruction_kv3_v2_lnandd, arr_len (insn_kv3_v2_lnandd) },
+  { insn_kv3_v2_lnandw, Instruction_kv3_v2_lnandw, arr_len (insn_kv3_v2_lnandw) },
+  { insn_kv3_v2_lnord, Instruction_kv3_v2_lnord, arr_len (insn_kv3_v2_lnord) },
+  { insn_kv3_v2_lnorw, Instruction_kv3_v2_lnorw, arr_len (insn_kv3_v2_lnorw) },
+  { insn_kv3_v2_lo, Instruction_kv3_v2_lo, arr_len (insn_kv3_v2_lo) },
+  { insn_kv3_v2_loopdo, Instruction_kv3_v2_loopdo, arr_len (insn_kv3_v2_loopdo) },
+  { insn_kv3_v2_lord, Instruction_kv3_v2_lord, arr_len (insn_kv3_v2_lord) },
+  { insn_kv3_v2_lorw, Instruction_kv3_v2_lorw, arr_len (insn_kv3_v2_lorw) },
+  { insn_kv3_v2_lq, Instruction_kv3_v2_lq, arr_len (insn_kv3_v2_lq) },
+  { insn_kv3_v2_lws, Instruction_kv3_v2_lws, arr_len (insn_kv3_v2_lws) },
+  { insn_kv3_v2_lwz, Instruction_kv3_v2_lwz, arr_len (insn_kv3_v2_lwz) },
+  { insn_kv3_v2_maddd, Instruction_kv3_v2_maddd, arr_len (insn_kv3_v2_maddd) },
+  { insn_kv3_v2_madddt, Instruction_kv3_v2_madddt, arr_len (insn_kv3_v2_madddt) },
+  { insn_kv3_v2_maddhq, Instruction_kv3_v2_maddhq, arr_len (insn_kv3_v2_maddhq) },
+  { insn_kv3_v2_maddhwq, Instruction_kv3_v2_maddhwq, arr_len (insn_kv3_v2_maddhwq) },
+  { insn_kv3_v2_maddmwq, Instruction_kv3_v2_maddmwq, arr_len (insn_kv3_v2_maddmwq) },
+  { insn_kv3_v2_maddsudt, Instruction_kv3_v2_maddsudt, arr_len (insn_kv3_v2_maddsudt) },
+  { insn_kv3_v2_maddsuhwq, Instruction_kv3_v2_maddsuhwq, arr_len (insn_kv3_v2_maddsuhwq) },
+  { insn_kv3_v2_maddsumwq, Instruction_kv3_v2_maddsumwq, arr_len (insn_kv3_v2_maddsumwq) },
+  { insn_kv3_v2_maddsuwd, Instruction_kv3_v2_maddsuwd, arr_len (insn_kv3_v2_maddsuwd) },
+  { insn_kv3_v2_maddsuwdp, Instruction_kv3_v2_maddsuwdp, arr_len (insn_kv3_v2_maddsuwdp) },
+  { insn_kv3_v2_maddudt, Instruction_kv3_v2_maddudt, arr_len (insn_kv3_v2_maddudt) },
+  { insn_kv3_v2_madduhwq, Instruction_kv3_v2_madduhwq, arr_len (insn_kv3_v2_madduhwq) },
+  { insn_kv3_v2_maddumwq, Instruction_kv3_v2_maddumwq, arr_len (insn_kv3_v2_maddumwq) },
+  { insn_kv3_v2_madduwd, Instruction_kv3_v2_madduwd, arr_len (insn_kv3_v2_madduwd) },
+  { insn_kv3_v2_madduwdp, Instruction_kv3_v2_madduwdp, arr_len (insn_kv3_v2_madduwdp) },
+  { insn_kv3_v2_madduzdt, Instruction_kv3_v2_madduzdt, arr_len (insn_kv3_v2_madduzdt) },
+  { insn_kv3_v2_maddw, Instruction_kv3_v2_maddw, arr_len (insn_kv3_v2_maddw) },
+  { insn_kv3_v2_maddwd, Instruction_kv3_v2_maddwd, arr_len (insn_kv3_v2_maddwd) },
+  { insn_kv3_v2_maddwdp, Instruction_kv3_v2_maddwdp, arr_len (insn_kv3_v2_maddwdp) },
+  { insn_kv3_v2_maddwp, Instruction_kv3_v2_maddwp, arr_len (insn_kv3_v2_maddwp) },
+  { insn_kv3_v2_maddwq, Instruction_kv3_v2_maddwq, arr_len (insn_kv3_v2_maddwq) },
+  { insn_kv3_v2_make, Instruction_kv3_v2_make, arr_len (insn_kv3_v2_make) },
+  { insn_kv3_v2_maxbo, Instruction_kv3_v2_maxbo, arr_len (insn_kv3_v2_maxbo) },
+  { insn_kv3_v2_maxd, Instruction_kv3_v2_maxd, arr_len (insn_kv3_v2_maxd) },
+  { insn_kv3_v2_maxd_abase, Instruction_kv3_v2_maxd_abase, arr_len (insn_kv3_v2_maxd_abase) },
+  { insn_kv3_v2_maxhq, Instruction_kv3_v2_maxhq, arr_len (insn_kv3_v2_maxhq) },
+  { insn_kv3_v2_maxrbod, Instruction_kv3_v2_maxrbod, arr_len (insn_kv3_v2_maxrbod) },
+  { insn_kv3_v2_maxrhqd, Instruction_kv3_v2_maxrhqd, arr_len (insn_kv3_v2_maxrhqd) },
+  { insn_kv3_v2_maxrwpd, Instruction_kv3_v2_maxrwpd, arr_len (insn_kv3_v2_maxrwpd) },
+  { insn_kv3_v2_maxubo, Instruction_kv3_v2_maxubo, arr_len (insn_kv3_v2_maxubo) },
+  { insn_kv3_v2_maxud, Instruction_kv3_v2_maxud, arr_len (insn_kv3_v2_maxud) },
+  { insn_kv3_v2_maxud_abase, Instruction_kv3_v2_maxud_abase, arr_len (insn_kv3_v2_maxud_abase) },
+  { insn_kv3_v2_maxuhq, Instruction_kv3_v2_maxuhq, arr_len (insn_kv3_v2_maxuhq) },
+  { insn_kv3_v2_maxurbod, Instruction_kv3_v2_maxurbod, arr_len (insn_kv3_v2_maxurbod) },
+  { insn_kv3_v2_maxurhqd, Instruction_kv3_v2_maxurhqd, arr_len (insn_kv3_v2_maxurhqd) },
+  { insn_kv3_v2_maxurwpd, Instruction_kv3_v2_maxurwpd, arr_len (insn_kv3_v2_maxurwpd) },
+  { insn_kv3_v2_maxuw, Instruction_kv3_v2_maxuw, arr_len (insn_kv3_v2_maxuw) },
+  { insn_kv3_v2_maxuwp, Instruction_kv3_v2_maxuwp, arr_len (insn_kv3_v2_maxuwp) },
+  { insn_kv3_v2_maxw, Instruction_kv3_v2_maxw, arr_len (insn_kv3_v2_maxw) },
+  { insn_kv3_v2_maxwp, Instruction_kv3_v2_maxwp, arr_len (insn_kv3_v2_maxwp) },
+  { insn_kv3_v2_minbo, Instruction_kv3_v2_minbo, arr_len (insn_kv3_v2_minbo) },
+  { insn_kv3_v2_mind, Instruction_kv3_v2_mind, arr_len (insn_kv3_v2_mind) },
+  { insn_kv3_v2_mind_abase, Instruction_kv3_v2_mind_abase, arr_len (insn_kv3_v2_mind_abase) },
+  { insn_kv3_v2_minhq, Instruction_kv3_v2_minhq, arr_len (insn_kv3_v2_minhq) },
+  { insn_kv3_v2_minrbod, Instruction_kv3_v2_minrbod, arr_len (insn_kv3_v2_minrbod) },
+  { insn_kv3_v2_minrhqd, Instruction_kv3_v2_minrhqd, arr_len (insn_kv3_v2_minrhqd) },
+  { insn_kv3_v2_minrwpd, Instruction_kv3_v2_minrwpd, arr_len (insn_kv3_v2_minrwpd) },
+  { insn_kv3_v2_minubo, Instruction_kv3_v2_minubo, arr_len (insn_kv3_v2_minubo) },
+  { insn_kv3_v2_minud, Instruction_kv3_v2_minud, arr_len (insn_kv3_v2_minud) },
+  { insn_kv3_v2_minud_abase, Instruction_kv3_v2_minud_abase, arr_len (insn_kv3_v2_minud_abase) },
+  { insn_kv3_v2_minuhq, Instruction_kv3_v2_minuhq, arr_len (insn_kv3_v2_minuhq) },
+  { insn_kv3_v2_minurbod, Instruction_kv3_v2_minurbod, arr_len (insn_kv3_v2_minurbod) },
+  { insn_kv3_v2_minurhqd, Instruction_kv3_v2_minurhqd, arr_len (insn_kv3_v2_minurhqd) },
+  { insn_kv3_v2_minurwpd, Instruction_kv3_v2_minurwpd, arr_len (insn_kv3_v2_minurwpd) },
+  { insn_kv3_v2_minuw, Instruction_kv3_v2_minuw, arr_len (insn_kv3_v2_minuw) },
+  { insn_kv3_v2_minuwp, Instruction_kv3_v2_minuwp, arr_len (insn_kv3_v2_minuwp) },
+  { insn_kv3_v2_minw, Instruction_kv3_v2_minw, arr_len (insn_kv3_v2_minw) },
+  { insn_kv3_v2_minwp, Instruction_kv3_v2_minwp, arr_len (insn_kv3_v2_minwp) },
+  { insn_kv3_v2_mm212w, Instruction_kv3_v2_mm212w, arr_len (insn_kv3_v2_mm212w) },
+  { insn_kv3_v2_mma212w, Instruction_kv3_v2_mma212w, arr_len (insn_kv3_v2_mma212w) },
+  { insn_kv3_v2_mms212w, Instruction_kv3_v2_mms212w, arr_len (insn_kv3_v2_mms212w) },
+  { insn_kv3_v2_msbfd, Instruction_kv3_v2_msbfd, arr_len (insn_kv3_v2_msbfd) },
+  { insn_kv3_v2_msbfdt, Instruction_kv3_v2_msbfdt, arr_len (insn_kv3_v2_msbfdt) },
+  { insn_kv3_v2_msbfhq, Instruction_kv3_v2_msbfhq, arr_len (insn_kv3_v2_msbfhq) },
+  { insn_kv3_v2_msbfhwq, Instruction_kv3_v2_msbfhwq, arr_len (insn_kv3_v2_msbfhwq) },
+  { insn_kv3_v2_msbfmwq, Instruction_kv3_v2_msbfmwq, arr_len (insn_kv3_v2_msbfmwq) },
+  { insn_kv3_v2_msbfsudt, Instruction_kv3_v2_msbfsudt, arr_len (insn_kv3_v2_msbfsudt) },
+  { insn_kv3_v2_msbfsuhwq, Instruction_kv3_v2_msbfsuhwq, arr_len (insn_kv3_v2_msbfsuhwq) },
+  { insn_kv3_v2_msbfsumwq, Instruction_kv3_v2_msbfsumwq, arr_len (insn_kv3_v2_msbfsumwq) },
+  { insn_kv3_v2_msbfsuwd, Instruction_kv3_v2_msbfsuwd, arr_len (insn_kv3_v2_msbfsuwd) },
+  { insn_kv3_v2_msbfsuwdp, Instruction_kv3_v2_msbfsuwdp, arr_len (insn_kv3_v2_msbfsuwdp) },
+  { insn_kv3_v2_msbfudt, Instruction_kv3_v2_msbfudt, arr_len (insn_kv3_v2_msbfudt) },
+  { insn_kv3_v2_msbfuhwq, Instruction_kv3_v2_msbfuhwq, arr_len (insn_kv3_v2_msbfuhwq) },
+  { insn_kv3_v2_msbfumwq, Instruction_kv3_v2_msbfumwq, arr_len (insn_kv3_v2_msbfumwq) },
+  { insn_kv3_v2_msbfuwd, Instruction_kv3_v2_msbfuwd, arr_len (insn_kv3_v2_msbfuwd) },
+  { insn_kv3_v2_msbfuwdp, Instruction_kv3_v2_msbfuwdp, arr_len (insn_kv3_v2_msbfuwdp) },
+  { insn_kv3_v2_msbfuzdt, Instruction_kv3_v2_msbfuzdt, arr_len (insn_kv3_v2_msbfuzdt) },
+  { insn_kv3_v2_msbfw, Instruction_kv3_v2_msbfw, arr_len (insn_kv3_v2_msbfw) },
+  { insn_kv3_v2_msbfwd, Instruction_kv3_v2_msbfwd, arr_len (insn_kv3_v2_msbfwd) },
+  { insn_kv3_v2_msbfwdp, Instruction_kv3_v2_msbfwdp, arr_len (insn_kv3_v2_msbfwdp) },
+  { insn_kv3_v2_msbfwp, Instruction_kv3_v2_msbfwp, arr_len (insn_kv3_v2_msbfwp) },
+  { insn_kv3_v2_msbfwq, Instruction_kv3_v2_msbfwq, arr_len (insn_kv3_v2_msbfwq) },
+  { insn_kv3_v2_muld, Instruction_kv3_v2_muld, arr_len (insn_kv3_v2_muld) },
+  { insn_kv3_v2_muldt, Instruction_kv3_v2_muldt, arr_len (insn_kv3_v2_muldt) },
+  { insn_kv3_v2_mulhq, Instruction_kv3_v2_mulhq, arr_len (insn_kv3_v2_mulhq) },
+  { insn_kv3_v2_mulhwq, Instruction_kv3_v2_mulhwq, arr_len (insn_kv3_v2_mulhwq) },
+  { insn_kv3_v2_mulmwq, Instruction_kv3_v2_mulmwq, arr_len (insn_kv3_v2_mulmwq) },
+  { insn_kv3_v2_mulsudt, Instruction_kv3_v2_mulsudt, arr_len (insn_kv3_v2_mulsudt) },
+  { insn_kv3_v2_mulsuhwq, Instruction_kv3_v2_mulsuhwq, arr_len (insn_kv3_v2_mulsuhwq) },
+  { insn_kv3_v2_mulsumwq, Instruction_kv3_v2_mulsumwq, arr_len (insn_kv3_v2_mulsumwq) },
+  { insn_kv3_v2_mulsuwd, Instruction_kv3_v2_mulsuwd, arr_len (insn_kv3_v2_mulsuwd) },
+  { insn_kv3_v2_mulsuwdp, Instruction_kv3_v2_mulsuwdp, arr_len (insn_kv3_v2_mulsuwdp) },
+  { insn_kv3_v2_muludt, Instruction_kv3_v2_muludt, arr_len (insn_kv3_v2_muludt) },
+  { insn_kv3_v2_muluhwq, Instruction_kv3_v2_muluhwq, arr_len (insn_kv3_v2_muluhwq) },
+  { insn_kv3_v2_mulumwq, Instruction_kv3_v2_mulumwq, arr_len (insn_kv3_v2_mulumwq) },
+  { insn_kv3_v2_muluwd, Instruction_kv3_v2_muluwd, arr_len (insn_kv3_v2_muluwd) },
+  { insn_kv3_v2_muluwdp, Instruction_kv3_v2_muluwdp, arr_len (insn_kv3_v2_muluwdp) },
+  { insn_kv3_v2_mulw, Instruction_kv3_v2_mulw, arr_len (insn_kv3_v2_mulw) },
+  { insn_kv3_v2_mulwd, Instruction_kv3_v2_mulwd, arr_len (insn_kv3_v2_mulwd) },
+  { insn_kv3_v2_mulwdp, Instruction_kv3_v2_mulwdp, arr_len (insn_kv3_v2_mulwdp) },
+  { insn_kv3_v2_mulwp, Instruction_kv3_v2_mulwp, arr_len (insn_kv3_v2_mulwp) },
+  { insn_kv3_v2_mulwq, Instruction_kv3_v2_mulwq, arr_len (insn_kv3_v2_mulwq) },
+  { insn_kv3_v2_nandd, Instruction_kv3_v2_nandd, arr_len (insn_kv3_v2_nandd) },
+  { insn_kv3_v2_nandd_abase, Instruction_kv3_v2_nandd_abase, arr_len (insn_kv3_v2_nandd_abase) },
+  { insn_kv3_v2_nandw, Instruction_kv3_v2_nandw, arr_len (insn_kv3_v2_nandw) },
+  { insn_kv3_v2_negbo, Instruction_kv3_v2_negbo, arr_len (insn_kv3_v2_negbo) },
+  { insn_kv3_v2_negd, Instruction_kv3_v2_negd, arr_len (insn_kv3_v2_negd) },
+  { insn_kv3_v2_neghq, Instruction_kv3_v2_neghq, arr_len (insn_kv3_v2_neghq) },
+  { insn_kv3_v2_negsbo, Instruction_kv3_v2_negsbo, arr_len (insn_kv3_v2_negsbo) },
+  { insn_kv3_v2_negsd, Instruction_kv3_v2_negsd, arr_len (insn_kv3_v2_negsd) },
+  { insn_kv3_v2_negshq, Instruction_kv3_v2_negshq, arr_len (insn_kv3_v2_negshq) },
+  { insn_kv3_v2_negsw, Instruction_kv3_v2_negsw, arr_len (insn_kv3_v2_negsw) },
+  { insn_kv3_v2_negswp, Instruction_kv3_v2_negswp, arr_len (insn_kv3_v2_negswp) },
+  { insn_kv3_v2_negw, Instruction_kv3_v2_negw, arr_len (insn_kv3_v2_negw) },
+  { insn_kv3_v2_negwp, Instruction_kv3_v2_negwp, arr_len (insn_kv3_v2_negwp) },
+  { insn_kv3_v2_nop, Instruction_kv3_v2_nop, arr_len (insn_kv3_v2_nop) },
+  { insn_kv3_v2_nord, Instruction_kv3_v2_nord, arr_len (insn_kv3_v2_nord) },
+  { insn_kv3_v2_nord_abase, Instruction_kv3_v2_nord_abase, arr_len (insn_kv3_v2_nord_abase) },
+  { insn_kv3_v2_norw, Instruction_kv3_v2_norw, arr_len (insn_kv3_v2_norw) },
+  { insn_kv3_v2_notd, Instruction_kv3_v2_notd, arr_len (insn_kv3_v2_notd) },
+  { insn_kv3_v2_notw, Instruction_kv3_v2_notw, arr_len (insn_kv3_v2_notw) },
+  { insn_kv3_v2_nxord, Instruction_kv3_v2_nxord, arr_len (insn_kv3_v2_nxord) },
+  { insn_kv3_v2_nxord_abase, Instruction_kv3_v2_nxord_abase, arr_len (insn_kv3_v2_nxord_abase) },
+  { insn_kv3_v2_nxorw, Instruction_kv3_v2_nxorw, arr_len (insn_kv3_v2_nxorw) },
+  { insn_kv3_v2_ord, Instruction_kv3_v2_ord, arr_len (insn_kv3_v2_ord) },
+  { insn_kv3_v2_ord_abase, Instruction_kv3_v2_ord_abase, arr_len (insn_kv3_v2_ord_abase) },
+  { insn_kv3_v2_ornd, Instruction_kv3_v2_ornd, arr_len (insn_kv3_v2_ornd) },
+  { insn_kv3_v2_ornd_abase, Instruction_kv3_v2_ornd_abase, arr_len (insn_kv3_v2_ornd_abase) },
+  { insn_kv3_v2_ornw, Instruction_kv3_v2_ornw, arr_len (insn_kv3_v2_ornw) },
+  { insn_kv3_v2_orrbod, Instruction_kv3_v2_orrbod, arr_len (insn_kv3_v2_orrbod) },
+  { insn_kv3_v2_orrhqd, Instruction_kv3_v2_orrhqd, arr_len (insn_kv3_v2_orrhqd) },
+  { insn_kv3_v2_orrwpd, Instruction_kv3_v2_orrwpd, arr_len (insn_kv3_v2_orrwpd) },
+  { insn_kv3_v2_orw, Instruction_kv3_v2_orw, arr_len (insn_kv3_v2_orw) },
+  { insn_kv3_v2_pcrel, Instruction_kv3_v2_pcrel, arr_len (insn_kv3_v2_pcrel) },
+  { insn_kv3_v2_ret, Instruction_kv3_v2_ret, arr_len (insn_kv3_v2_ret) },
+  { insn_kv3_v2_rfe, Instruction_kv3_v2_rfe, arr_len (insn_kv3_v2_rfe) },
+  { insn_kv3_v2_rolw, Instruction_kv3_v2_rolw, arr_len (insn_kv3_v2_rolw) },
+  { insn_kv3_v2_rolwps, Instruction_kv3_v2_rolwps, arr_len (insn_kv3_v2_rolwps) },
+  { insn_kv3_v2_rorw, Instruction_kv3_v2_rorw, arr_len (insn_kv3_v2_rorw) },
+  { insn_kv3_v2_rorwps, Instruction_kv3_v2_rorwps, arr_len (insn_kv3_v2_rorwps) },
+  { insn_kv3_v2_rswap, Instruction_kv3_v2_rswap, arr_len (insn_kv3_v2_rswap) },
+  { insn_kv3_v2_sb, Instruction_kv3_v2_sb, arr_len (insn_kv3_v2_sb) },
+  { insn_kv3_v2_sbfbo, Instruction_kv3_v2_sbfbo, arr_len (insn_kv3_v2_sbfbo) },
+  { insn_kv3_v2_sbfcd, Instruction_kv3_v2_sbfcd, arr_len (insn_kv3_v2_sbfcd) },
+  { insn_kv3_v2_sbfcd_i, Instruction_kv3_v2_sbfcd_i, arr_len (insn_kv3_v2_sbfcd_i) },
+  { insn_kv3_v2_sbfd, Instruction_kv3_v2_sbfd, arr_len (insn_kv3_v2_sbfd) },
+  { insn_kv3_v2_sbfd_abase, Instruction_kv3_v2_sbfd_abase, arr_len (insn_kv3_v2_sbfd_abase) },
+  { insn_kv3_v2_sbfhq, Instruction_kv3_v2_sbfhq, arr_len (insn_kv3_v2_sbfhq) },
+  { insn_kv3_v2_sbfsbo, Instruction_kv3_v2_sbfsbo, arr_len (insn_kv3_v2_sbfsbo) },
+  { insn_kv3_v2_sbfsd, Instruction_kv3_v2_sbfsd, arr_len (insn_kv3_v2_sbfsd) },
+  { insn_kv3_v2_sbfshq, Instruction_kv3_v2_sbfshq, arr_len (insn_kv3_v2_sbfshq) },
+  { insn_kv3_v2_sbfsw, Instruction_kv3_v2_sbfsw, arr_len (insn_kv3_v2_sbfsw) },
+  { insn_kv3_v2_sbfswp, Instruction_kv3_v2_sbfswp, arr_len (insn_kv3_v2_sbfswp) },
+  { insn_kv3_v2_sbfusbo, Instruction_kv3_v2_sbfusbo, arr_len (insn_kv3_v2_sbfusbo) },
+  { insn_kv3_v2_sbfusd, Instruction_kv3_v2_sbfusd, arr_len (insn_kv3_v2_sbfusd) },
+  { insn_kv3_v2_sbfushq, Instruction_kv3_v2_sbfushq, arr_len (insn_kv3_v2_sbfushq) },
+  { insn_kv3_v2_sbfusw, Instruction_kv3_v2_sbfusw, arr_len (insn_kv3_v2_sbfusw) },
+  { insn_kv3_v2_sbfuswp, Instruction_kv3_v2_sbfuswp, arr_len (insn_kv3_v2_sbfuswp) },
+  { insn_kv3_v2_sbfuwd, Instruction_kv3_v2_sbfuwd, arr_len (insn_kv3_v2_sbfuwd) },
+  { insn_kv3_v2_sbfw, Instruction_kv3_v2_sbfw, arr_len (insn_kv3_v2_sbfw) },
+  { insn_kv3_v2_sbfwd, Instruction_kv3_v2_sbfwd, arr_len (insn_kv3_v2_sbfwd) },
+  { insn_kv3_v2_sbfwp, Instruction_kv3_v2_sbfwp, arr_len (insn_kv3_v2_sbfwp) },
+  { insn_kv3_v2_sbfx16bo, Instruction_kv3_v2_sbfx16bo, arr_len (insn_kv3_v2_sbfx16bo) },
+  { insn_kv3_v2_sbfx16d, Instruction_kv3_v2_sbfx16d, arr_len (insn_kv3_v2_sbfx16d) },
+  { insn_kv3_v2_sbfx16hq, Instruction_kv3_v2_sbfx16hq, arr_len (insn_kv3_v2_sbfx16hq) },
+  { insn_kv3_v2_sbfx16uwd, Instruction_kv3_v2_sbfx16uwd, arr_len (insn_kv3_v2_sbfx16uwd) },
+  { insn_kv3_v2_sbfx16w, Instruction_kv3_v2_sbfx16w, arr_len (insn_kv3_v2_sbfx16w) },
+  { insn_kv3_v2_sbfx16wd, Instruction_kv3_v2_sbfx16wd, arr_len (insn_kv3_v2_sbfx16wd) },
+  { insn_kv3_v2_sbfx16wp, Instruction_kv3_v2_sbfx16wp, arr_len (insn_kv3_v2_sbfx16wp) },
+  { insn_kv3_v2_sbfx2bo, Instruction_kv3_v2_sbfx2bo, arr_len (insn_kv3_v2_sbfx2bo) },
+  { insn_kv3_v2_sbfx2d, Instruction_kv3_v2_sbfx2d, arr_len (insn_kv3_v2_sbfx2d) },
+  { insn_kv3_v2_sbfx2hq, Instruction_kv3_v2_sbfx2hq, arr_len (insn_kv3_v2_sbfx2hq) },
+  { insn_kv3_v2_sbfx2uwd, Instruction_kv3_v2_sbfx2uwd, arr_len (insn_kv3_v2_sbfx2uwd) },
+  { insn_kv3_v2_sbfx2w, Instruction_kv3_v2_sbfx2w, arr_len (insn_kv3_v2_sbfx2w) },
+  { insn_kv3_v2_sbfx2wd, Instruction_kv3_v2_sbfx2wd, arr_len (insn_kv3_v2_sbfx2wd) },
+  { insn_kv3_v2_sbfx2wp, Instruction_kv3_v2_sbfx2wp, arr_len (insn_kv3_v2_sbfx2wp) },
+  { insn_kv3_v2_sbfx32d, Instruction_kv3_v2_sbfx32d, arr_len (insn_kv3_v2_sbfx32d) },
+  { insn_kv3_v2_sbfx32uwd, Instruction_kv3_v2_sbfx32uwd, arr_len (insn_kv3_v2_sbfx32uwd) },
+  { insn_kv3_v2_sbfx32w, Instruction_kv3_v2_sbfx32w, arr_len (insn_kv3_v2_sbfx32w) },
+  { insn_kv3_v2_sbfx32wd, Instruction_kv3_v2_sbfx32wd, arr_len (insn_kv3_v2_sbfx32wd) },
+  { insn_kv3_v2_sbfx4bo, Instruction_kv3_v2_sbfx4bo, arr_len (insn_kv3_v2_sbfx4bo) },
+  { insn_kv3_v2_sbfx4d, Instruction_kv3_v2_sbfx4d, arr_len (insn_kv3_v2_sbfx4d) },
+  { insn_kv3_v2_sbfx4hq, Instruction_kv3_v2_sbfx4hq, arr_len (insn_kv3_v2_sbfx4hq) },
+  { insn_kv3_v2_sbfx4uwd, Instruction_kv3_v2_sbfx4uwd, arr_len (insn_kv3_v2_sbfx4uwd) },
+  { insn_kv3_v2_sbfx4w, Instruction_kv3_v2_sbfx4w, arr_len (insn_kv3_v2_sbfx4w) },
+  { insn_kv3_v2_sbfx4wd, Instruction_kv3_v2_sbfx4wd, arr_len (insn_kv3_v2_sbfx4wd) },
+  { insn_kv3_v2_sbfx4wp, Instruction_kv3_v2_sbfx4wp, arr_len (insn_kv3_v2_sbfx4wp) },
+  { insn_kv3_v2_sbfx64d, Instruction_kv3_v2_sbfx64d, arr_len (insn_kv3_v2_sbfx64d) },
+  { insn_kv3_v2_sbfx64uwd, Instruction_kv3_v2_sbfx64uwd, arr_len (insn_kv3_v2_sbfx64uwd) },
+  { insn_kv3_v2_sbfx64w, Instruction_kv3_v2_sbfx64w, arr_len (insn_kv3_v2_sbfx64w) },
+  { insn_kv3_v2_sbfx64wd, Instruction_kv3_v2_sbfx64wd, arr_len (insn_kv3_v2_sbfx64wd) },
+  { insn_kv3_v2_sbfx8bo, Instruction_kv3_v2_sbfx8bo, arr_len (insn_kv3_v2_sbfx8bo) },
+  { insn_kv3_v2_sbfx8d, Instruction_kv3_v2_sbfx8d, arr_len (insn_kv3_v2_sbfx8d) },
+  { insn_kv3_v2_sbfx8hq, Instruction_kv3_v2_sbfx8hq, arr_len (insn_kv3_v2_sbfx8hq) },
+  { insn_kv3_v2_sbfx8uwd, Instruction_kv3_v2_sbfx8uwd, arr_len (insn_kv3_v2_sbfx8uwd) },
+  { insn_kv3_v2_sbfx8w, Instruction_kv3_v2_sbfx8w, arr_len (insn_kv3_v2_sbfx8w) },
+  { insn_kv3_v2_sbfx8wd, Instruction_kv3_v2_sbfx8wd, arr_len (insn_kv3_v2_sbfx8wd) },
+  { insn_kv3_v2_sbfx8wp, Instruction_kv3_v2_sbfx8wp, arr_len (insn_kv3_v2_sbfx8wp) },
+  { insn_kv3_v2_sbmm8, Instruction_kv3_v2_sbmm8, arr_len (insn_kv3_v2_sbmm8) },
+  { insn_kv3_v2_sbmm8_abase, Instruction_kv3_v2_sbmm8_abase, arr_len (insn_kv3_v2_sbmm8_abase) },
+  { insn_kv3_v2_sbmmt8, Instruction_kv3_v2_sbmmt8, arr_len (insn_kv3_v2_sbmmt8) },
+  { insn_kv3_v2_sbmmt8_abase, Instruction_kv3_v2_sbmmt8_abase, arr_len (insn_kv3_v2_sbmmt8_abase) },
+  { insn_kv3_v2_scall, Instruction_kv3_v2_scall, arr_len (insn_kv3_v2_scall) },
+  { insn_kv3_v2_sd, Instruction_kv3_v2_sd, arr_len (insn_kv3_v2_sd) },
+  { insn_kv3_v2_set, Instruction_kv3_v2_set, arr_len (insn_kv3_v2_set) },
+  { insn_kv3_v2_sh, Instruction_kv3_v2_sh, arr_len (insn_kv3_v2_sh) },
+  { insn_kv3_v2_sleep, Instruction_kv3_v2_sleep, arr_len (insn_kv3_v2_sleep) },
+  { insn_kv3_v2_sllbos, Instruction_kv3_v2_sllbos, arr_len (insn_kv3_v2_sllbos) },
+  { insn_kv3_v2_slld, Instruction_kv3_v2_slld, arr_len (insn_kv3_v2_slld) },
+  { insn_kv3_v2_sllhqs, Instruction_kv3_v2_sllhqs, arr_len (insn_kv3_v2_sllhqs) },
+  { insn_kv3_v2_sllw, Instruction_kv3_v2_sllw, arr_len (insn_kv3_v2_sllw) },
+  { insn_kv3_v2_sllwps, Instruction_kv3_v2_sllwps, arr_len (insn_kv3_v2_sllwps) },
+  { insn_kv3_v2_slsbos, Instruction_kv3_v2_slsbos, arr_len (insn_kv3_v2_slsbos) },
+  { insn_kv3_v2_slsd, Instruction_kv3_v2_slsd, arr_len (insn_kv3_v2_slsd) },
+  { insn_kv3_v2_slshqs, Instruction_kv3_v2_slshqs, arr_len (insn_kv3_v2_slshqs) },
+  { insn_kv3_v2_slsw, Instruction_kv3_v2_slsw, arr_len (insn_kv3_v2_slsw) },
+  { insn_kv3_v2_slswps, Instruction_kv3_v2_slswps, arr_len (insn_kv3_v2_slswps) },
+  { insn_kv3_v2_slusbos, Instruction_kv3_v2_slusbos, arr_len (insn_kv3_v2_slusbos) },
+  { insn_kv3_v2_slusd, Instruction_kv3_v2_slusd, arr_len (insn_kv3_v2_slusd) },
+  { insn_kv3_v2_slushqs, Instruction_kv3_v2_slushqs, arr_len (insn_kv3_v2_slushqs) },
+  { insn_kv3_v2_slusw, Instruction_kv3_v2_slusw, arr_len (insn_kv3_v2_slusw) },
+  { insn_kv3_v2_sluswps, Instruction_kv3_v2_sluswps, arr_len (insn_kv3_v2_sluswps) },
+  { insn_kv3_v2_so, Instruction_kv3_v2_so, arr_len (insn_kv3_v2_so) },
+  { insn_kv3_v2_sq, Instruction_kv3_v2_sq, arr_len (insn_kv3_v2_sq) },
+  { insn_kv3_v2_srabos, Instruction_kv3_v2_srabos, arr_len (insn_kv3_v2_srabos) },
+  { insn_kv3_v2_srad, Instruction_kv3_v2_srad, arr_len (insn_kv3_v2_srad) },
+  { insn_kv3_v2_srahqs, Instruction_kv3_v2_srahqs, arr_len (insn_kv3_v2_srahqs) },
+  { insn_kv3_v2_sraw, Instruction_kv3_v2_sraw, arr_len (insn_kv3_v2_sraw) },
+  { insn_kv3_v2_srawps, Instruction_kv3_v2_srawps, arr_len (insn_kv3_v2_srawps) },
+  { insn_kv3_v2_srlbos, Instruction_kv3_v2_srlbos, arr_len (insn_kv3_v2_srlbos) },
+  { insn_kv3_v2_srld, Instruction_kv3_v2_srld, arr_len (insn_kv3_v2_srld) },
+  { insn_kv3_v2_srlhqs, Instruction_kv3_v2_srlhqs, arr_len (insn_kv3_v2_srlhqs) },
+  { insn_kv3_v2_srlw, Instruction_kv3_v2_srlw, arr_len (insn_kv3_v2_srlw) },
+  { insn_kv3_v2_srlwps, Instruction_kv3_v2_srlwps, arr_len (insn_kv3_v2_srlwps) },
+  { insn_kv3_v2_srsbos, Instruction_kv3_v2_srsbos, arr_len (insn_kv3_v2_srsbos) },
+  { insn_kv3_v2_srsd, Instruction_kv3_v2_srsd, arr_len (insn_kv3_v2_srsd) },
+  { insn_kv3_v2_srshqs, Instruction_kv3_v2_srshqs, arr_len (insn_kv3_v2_srshqs) },
+  { insn_kv3_v2_srsw, Instruction_kv3_v2_srsw, arr_len (insn_kv3_v2_srsw) },
+  { insn_kv3_v2_srswps, Instruction_kv3_v2_srswps, arr_len (insn_kv3_v2_srswps) },
+  { insn_kv3_v2_stop, Instruction_kv3_v2_stop, arr_len (insn_kv3_v2_stop) },
+  { insn_kv3_v2_stsud, Instruction_kv3_v2_stsud, arr_len (insn_kv3_v2_stsud) },
+  { insn_kv3_v2_stsuhq, Instruction_kv3_v2_stsuhq, arr_len (insn_kv3_v2_stsuhq) },
+  { insn_kv3_v2_stsuw, Instruction_kv3_v2_stsuw, arr_len (insn_kv3_v2_stsuw) },
+  { insn_kv3_v2_stsuwp, Instruction_kv3_v2_stsuwp, arr_len (insn_kv3_v2_stsuwp) },
+  { insn_kv3_v2_sw, Instruction_kv3_v2_sw, arr_len (insn_kv3_v2_sw) },
+  { insn_kv3_v2_sxbd, Instruction_kv3_v2_sxbd, arr_len (insn_kv3_v2_sxbd) },
+  { insn_kv3_v2_sxhd, Instruction_kv3_v2_sxhd, arr_len (insn_kv3_v2_sxhd) },
+  { insn_kv3_v2_sxlbhq, Instruction_kv3_v2_sxlbhq, arr_len (insn_kv3_v2_sxlbhq) },
+  { insn_kv3_v2_sxlhwp, Instruction_kv3_v2_sxlhwp, arr_len (insn_kv3_v2_sxlhwp) },
+  { insn_kv3_v2_sxmbhq, Instruction_kv3_v2_sxmbhq, arr_len (insn_kv3_v2_sxmbhq) },
+  { insn_kv3_v2_sxmhwp, Instruction_kv3_v2_sxmhwp, arr_len (insn_kv3_v2_sxmhwp) },
+  { insn_kv3_v2_sxwd, Instruction_kv3_v2_sxwd, arr_len (insn_kv3_v2_sxwd) },
+  { insn_kv3_v2_syncgroup, Instruction_kv3_v2_syncgroup, arr_len (insn_kv3_v2_syncgroup) },
+  { insn_kv3_v2_tlbdinval, Instruction_kv3_v2_tlbdinval, arr_len (insn_kv3_v2_tlbdinval) },
+  { insn_kv3_v2_tlbiinval, Instruction_kv3_v2_tlbiinval, arr_len (insn_kv3_v2_tlbiinval) },
+  { insn_kv3_v2_tlbprobe, Instruction_kv3_v2_tlbprobe, arr_len (insn_kv3_v2_tlbprobe) },
+  { insn_kv3_v2_tlbread, Instruction_kv3_v2_tlbread, arr_len (insn_kv3_v2_tlbread) },
+  { insn_kv3_v2_tlbwrite, Instruction_kv3_v2_tlbwrite, arr_len (insn_kv3_v2_tlbwrite) },
+  { insn_kv3_v2_waitit, Instruction_kv3_v2_waitit, arr_len (insn_kv3_v2_waitit) },
+  { insn_kv3_v2_wfxl, Instruction_kv3_v2_wfxl, arr_len (insn_kv3_v2_wfxl) },
+  { insn_kv3_v2_wfxm, Instruction_kv3_v2_wfxm, arr_len (insn_kv3_v2_wfxm) },
+  { insn_kv3_v2_xaccesso, Instruction_kv3_v2_xaccesso, arr_len (insn_kv3_v2_xaccesso) },
+  { insn_kv3_v2_xaligno, Instruction_kv3_v2_xaligno, arr_len (insn_kv3_v2_xaligno) },
+  { insn_kv3_v2_xandno, Instruction_kv3_v2_xandno, arr_len (insn_kv3_v2_xandno) },
+  { insn_kv3_v2_xando, Instruction_kv3_v2_xando, arr_len (insn_kv3_v2_xando) },
+  { insn_kv3_v2_xclampwo, Instruction_kv3_v2_xclampwo, arr_len (insn_kv3_v2_xclampwo) },
+  { insn_kv3_v2_xcopyo, Instruction_kv3_v2_xcopyo, arr_len (insn_kv3_v2_xcopyo) },
+  { insn_kv3_v2_xcopyv, Instruction_kv3_v2_xcopyv, arr_len (insn_kv3_v2_xcopyv) },
+  { insn_kv3_v2_xcopyx, Instruction_kv3_v2_xcopyx, arr_len (insn_kv3_v2_xcopyx) },
+  { insn_kv3_v2_xffma44hw, Instruction_kv3_v2_xffma44hw, arr_len (insn_kv3_v2_xffma44hw) },
+  { insn_kv3_v2_xfmaxhx, Instruction_kv3_v2_xfmaxhx, arr_len (insn_kv3_v2_xfmaxhx) },
+  { insn_kv3_v2_xfminhx, Instruction_kv3_v2_xfminhx, arr_len (insn_kv3_v2_xfminhx) },
+  { insn_kv3_v2_xfmma484hw, Instruction_kv3_v2_xfmma484hw, arr_len (insn_kv3_v2_xfmma484hw) },
+  { insn_kv3_v2_xfnarrow44wh, Instruction_kv3_v2_xfnarrow44wh, arr_len (insn_kv3_v2_xfnarrow44wh) },
+  { insn_kv3_v2_xfscalewo, Instruction_kv3_v2_xfscalewo, arr_len (insn_kv3_v2_xfscalewo) },
+  { insn_kv3_v2_xlo, Instruction_kv3_v2_xlo, arr_len (insn_kv3_v2_xlo) },
+  { insn_kv3_v2_xmadd44bw0, Instruction_kv3_v2_xmadd44bw0, arr_len (insn_kv3_v2_xmadd44bw0) },
+  { insn_kv3_v2_xmadd44bw1, Instruction_kv3_v2_xmadd44bw1, arr_len (insn_kv3_v2_xmadd44bw1) },
+  { insn_kv3_v2_xmaddifwo, Instruction_kv3_v2_xmaddifwo, arr_len (insn_kv3_v2_xmaddifwo) },
+  { insn_kv3_v2_xmaddsu44bw0, Instruction_kv3_v2_xmaddsu44bw0, arr_len (insn_kv3_v2_xmaddsu44bw0) },
+  { insn_kv3_v2_xmaddsu44bw1, Instruction_kv3_v2_xmaddsu44bw1, arr_len (insn_kv3_v2_xmaddsu44bw1) },
+  { insn_kv3_v2_xmaddu44bw0, Instruction_kv3_v2_xmaddu44bw0, arr_len (insn_kv3_v2_xmaddu44bw0) },
+  { insn_kv3_v2_xmaddu44bw1, Instruction_kv3_v2_xmaddu44bw1, arr_len (insn_kv3_v2_xmaddu44bw1) },
+  { insn_kv3_v2_xmma4164bw, Instruction_kv3_v2_xmma4164bw, arr_len (insn_kv3_v2_xmma4164bw) },
+  { insn_kv3_v2_xmma484bw, Instruction_kv3_v2_xmma484bw, arr_len (insn_kv3_v2_xmma484bw) },
+  { insn_kv3_v2_xmmasu4164bw, Instruction_kv3_v2_xmmasu4164bw, arr_len (insn_kv3_v2_xmmasu4164bw) },
+  { insn_kv3_v2_xmmasu484bw, Instruction_kv3_v2_xmmasu484bw, arr_len (insn_kv3_v2_xmmasu484bw) },
+  { insn_kv3_v2_xmmau4164bw, Instruction_kv3_v2_xmmau4164bw, arr_len (insn_kv3_v2_xmmau4164bw) },
+  { insn_kv3_v2_xmmau484bw, Instruction_kv3_v2_xmmau484bw, arr_len (insn_kv3_v2_xmmau484bw) },
+  { insn_kv3_v2_xmmaus4164bw, Instruction_kv3_v2_xmmaus4164bw, arr_len (insn_kv3_v2_xmmaus4164bw) },
+  { insn_kv3_v2_xmmaus484bw, Instruction_kv3_v2_xmmaus484bw, arr_len (insn_kv3_v2_xmmaus484bw) },
+  { insn_kv3_v2_xmovefd, Instruction_kv3_v2_xmovefd, arr_len (insn_kv3_v2_xmovefd) },
+  { insn_kv3_v2_xmovefo, Instruction_kv3_v2_xmovefo, arr_len (insn_kv3_v2_xmovefo) },
+  { insn_kv3_v2_xmovefq, Instruction_kv3_v2_xmovefq, arr_len (insn_kv3_v2_xmovefq) },
+  { insn_kv3_v2_xmovetd, Instruction_kv3_v2_xmovetd, arr_len (insn_kv3_v2_xmovetd) },
+  { insn_kv3_v2_xmovetq, Instruction_kv3_v2_xmovetq, arr_len (insn_kv3_v2_xmovetq) },
+  { insn_kv3_v2_xmsbfifwo, Instruction_kv3_v2_xmsbfifwo, arr_len (insn_kv3_v2_xmsbfifwo) },
+  { insn_kv3_v2_xmt44d, Instruction_kv3_v2_xmt44d, arr_len (insn_kv3_v2_xmt44d) },
+  { insn_kv3_v2_xnando, Instruction_kv3_v2_xnando, arr_len (insn_kv3_v2_xnando) },
+  { insn_kv3_v2_xnoro, Instruction_kv3_v2_xnoro, arr_len (insn_kv3_v2_xnoro) },
+  { insn_kv3_v2_xnxoro, Instruction_kv3_v2_xnxoro, arr_len (insn_kv3_v2_xnxoro) },
+  { insn_kv3_v2_xord, Instruction_kv3_v2_xord, arr_len (insn_kv3_v2_xord) },
+  { insn_kv3_v2_xord_abase, Instruction_kv3_v2_xord_abase, arr_len (insn_kv3_v2_xord_abase) },
+  { insn_kv3_v2_xorno, Instruction_kv3_v2_xorno, arr_len (insn_kv3_v2_xorno) },
+  { insn_kv3_v2_xoro, Instruction_kv3_v2_xoro, arr_len (insn_kv3_v2_xoro) },
+  { insn_kv3_v2_xorrbod, Instruction_kv3_v2_xorrbod, arr_len (insn_kv3_v2_xorrbod) },
+  { insn_kv3_v2_xorrhqd, Instruction_kv3_v2_xorrhqd, arr_len (insn_kv3_v2_xorrhqd) },
+  { insn_kv3_v2_xorrwpd, Instruction_kv3_v2_xorrwpd, arr_len (insn_kv3_v2_xorrwpd) },
+  { insn_kv3_v2_xorw, Instruction_kv3_v2_xorw, arr_len (insn_kv3_v2_xorw) },
+  { insn_kv3_v2_xrecvo, Instruction_kv3_v2_xrecvo, arr_len (insn_kv3_v2_xrecvo) },
+  { insn_kv3_v2_xsbmm8dq, Instruction_kv3_v2_xsbmm8dq, arr_len (insn_kv3_v2_xsbmm8dq) },
+  { insn_kv3_v2_xsbmmt8dq, Instruction_kv3_v2_xsbmmt8dq, arr_len (insn_kv3_v2_xsbmmt8dq) },
+  { insn_kv3_v2_xsendo, Instruction_kv3_v2_xsendo, arr_len (insn_kv3_v2_xsendo) },
+  { insn_kv3_v2_xsendrecvo, Instruction_kv3_v2_xsendrecvo, arr_len (insn_kv3_v2_xsendrecvo) },
+  { insn_kv3_v2_xso, Instruction_kv3_v2_xso, arr_len (insn_kv3_v2_xso) },
+  { insn_kv3_v2_xsplatdo, Instruction_kv3_v2_xsplatdo, arr_len (insn_kv3_v2_xsplatdo) },
+  { insn_kv3_v2_xsplatov, Instruction_kv3_v2_xsplatov, arr_len (insn_kv3_v2_xsplatov) },
+  { insn_kv3_v2_xsplatox, Instruction_kv3_v2_xsplatox, arr_len (insn_kv3_v2_xsplatox) },
+  { insn_kv3_v2_xsx48bw, Instruction_kv3_v2_xsx48bw, arr_len (insn_kv3_v2_xsx48bw) },
+  { insn_kv3_v2_xtrunc48wb, Instruction_kv3_v2_xtrunc48wb, arr_len (insn_kv3_v2_xtrunc48wb) },
+  { insn_kv3_v2_xxoro, Instruction_kv3_v2_xxoro, arr_len (insn_kv3_v2_xxoro) },
+  { insn_kv3_v2_xzx48bw, Instruction_kv3_v2_xzx48bw, arr_len (insn_kv3_v2_xzx48bw) },
+  { insn_kv3_v2_zxbd, Instruction_kv3_v2_zxbd, arr_len (insn_kv3_v2_zxbd) },
+  { insn_kv3_v2_zxhd, Instruction_kv3_v2_zxhd, arr_len (insn_kv3_v2_zxhd) },
+  { insn_kv3_v2_zxlbhq, Instruction_kv3_v2_zxlbhq, arr_len (insn_kv3_v2_zxlbhq) },
+  { insn_kv3_v2_zxlhwp, Instruction_kv3_v2_zxlhwp, arr_len (insn_kv3_v2_zxlhwp) },
+  { insn_kv3_v2_zxmbhq, Instruction_kv3_v2_zxmbhq, arr_len (insn_kv3_v2_zxmbhq) },
+  { insn_kv3_v2_zxmhwp, Instruction_kv3_v2_zxmhwp, arr_len (insn_kv3_v2_zxmhwp) },
+  { insn_kv3_v2_zxwd, Instruction_kv3_v2_zxwd, arr_len (insn_kv3_v2_zxwd) },
+  { NULL, -1, -1 }
+};
+
+static struct token_class sep_classes_kv3_v2[] = {
+  { sep_kv3_v2_comma, Separator_kv3_v2_comma, arr_len (sep_kv3_v2_comma) },
+  { sep_kv3_v2_equal, Separator_kv3_v2_equal, arr_len (sep_kv3_v2_equal) },
+  { sep_kv3_v2_qmark, Separator_kv3_v2_qmark, arr_len (sep_kv3_v2_qmark) },
+  { sep_kv3_v2_rsbracket, Separator_kv3_v2_rsbracket, arr_len (sep_kv3_v2_rsbracket) },
+  { sep_kv3_v2_lsbracket, Separator_kv3_v2_lsbracket, arr_len (sep_kv3_v2_lsbracket) },
+  { NULL, -1, -1 }
+};
+
+
+\f
+struct token_classes token_classes_kv3_v2 = {
+  .reg_classes  = reg_classes_kv3_v2,
+  .mod_classes  = mod_classes_kv3_v2,
+  .imm_classes  = imm_classes_kv3_v2,
+  .insn_classes = insn_classes_kv3_v2,
+  .sep_classes  = sep_classes_kv3_v2,
+};
+
+\f
+static struct steering_rule rule_kv3_v2_0000[] = {
+  { .steering =   85, .jump_target =   85, .stack_it = 1596 },
+  { .steering =   86, .jump_target =  990, .stack_it = 1597 },
+  { .steering =   87, .jump_target = 1323, .stack_it =   -1 },
+  { .steering =   88, .jump_target =   88, .stack_it = 1596 },
+  { .steering =   89, .jump_target =   89, .stack_it = 1596 },
+  { .steering =   90, .jump_target =   90, .stack_it = 1596 },
+  { .steering =   91, .jump_target =   91, .stack_it = 1596 },
+  { .steering =   92, .jump_target =  991, .stack_it = 1598 },
+  { .steering =   93, .jump_target =   93, .stack_it = 1596 },
+  { .steering =   94, .jump_target =   94, .stack_it = 1596 },
+  { .steering =   95, .jump_target =   95, .stack_it = 1596 },
+  { .steering =   96, .jump_target =   96, .stack_it = 1596 },
+  { .steering =   97, .jump_target =  992, .stack_it = 1598 },
+  { .steering =   98, .jump_target =   98, .stack_it = 1596 },
+  { .steering =   99, .jump_target =  993, .stack_it = 1599 },
+  { .steering =  100, .jump_target =  100, .stack_it = 1596 },
+  { .steering =  101, .jump_target =  994, .stack_it =   -1 },
+  { .steering =  102, .jump_target =  995, .stack_it =   -1 },
+  { .steering =  103, .jump_target =  996, .stack_it =   -1 },
+  { .steering =  104, .jump_target =  997, .stack_it =   -1 },
+  { .steering =  105, .jump_target =  998, .stack_it =   -1 },
+  { .steering =  106, .jump_target =  999, .stack_it =   -1 },
+  { .steering =  107, .jump_target = 1000, .stack_it =   -1 },
+  { .steering =  108, .jump_target = 1001, .stack_it =   -1 },
+  { .steering =  109, .jump_target = 1002, .stack_it =   -1 },
+  { .steering =  110, .jump_target = 1003, .stack_it =   -1 },
+  { .steering =  111, .jump_target = 1004, .stack_it = 1590 },
+  { .steering =  112, .jump_target = 1005, .stack_it = 1592 },
+  { .steering =  113, .jump_target = 1006, .stack_it = 1590 },
+  { .steering =  114, .jump_target =  114, .stack_it = 1596 },
+  { .steering =  115, .jump_target = 1007, .stack_it = 1598 },
+  { .steering =  116, .jump_target = 1008, .stack_it = 1598 },
+  { .steering =  117, .jump_target = 1009, .stack_it = 1597 },
+  { .steering =  118, .jump_target = 1324, .stack_it =   -1 },
+  { .steering =  119, .jump_target =  119, .stack_it = 1596 },
+  { .steering =  120, .jump_target = 1010, .stack_it =   -1 },
+  { .steering =  121, .jump_target = 1011, .stack_it =   -1 },
+  { .steering =  122, .jump_target = 1012, .stack_it =   -1 },
+  { .steering =  123, .jump_target =  123, .stack_it = 1596 },
+  { .steering =  124, .jump_target =  124, .stack_it = 1596 },
+  { .steering =  125, .jump_target =  125, .stack_it = 1596 },
+  { .steering =  126, .jump_target = 1013, .stack_it = 1598 },
+  { .steering =  127, .jump_target =  127, .stack_it = 1596 },
+  { .steering =  128, .jump_target = 1014, .stack_it =   -1 },
+  { .steering =  129, .jump_target = 1015, .stack_it =   -1 },
+  { .steering =  130, .jump_target = 1016, .stack_it =   -1 },
+  { .steering =  131, .jump_target =  131, .stack_it = 1596 },
+  { .steering =  132, .jump_target =  132, .stack_it = 1596 },
+  { .steering =  133, .jump_target =  133, .stack_it = 1596 },
+  { .steering =  134, .jump_target = 1017, .stack_it = 1598 },
+  { .steering =  135, .jump_target =  135, .stack_it = 1596 },
+  { .steering =  136, .jump_target = 1018, .stack_it = 1598 },
+  { .steering =  137, .jump_target = 1019, .stack_it = 1599 },
+  { .steering =  138, .jump_target = 1020, .stack_it = 1598 },
+  { .steering =  139, .jump_target =  139, .stack_it = 1596 },
+  { .steering =  140, .jump_target =  140, .stack_it = 1596 },
+  { .steering =  141, .jump_target =  141, .stack_it = 1596 },
+  { .steering =  142, .jump_target =  142, .stack_it = 1596 },
+  { .steering =  143, .jump_target = 1021, .stack_it = 1598 },
+  { .steering =  144, .jump_target = 1022, .stack_it = 1598 },
+  { .steering =  145, .jump_target = 1023, .stack_it = 1598 },
+  { .steering =  146, .jump_target =  146, .stack_it = 1596 },
+  { .steering =  147, .jump_target =  147, .stack_it = 1596 },
+  { .steering =  148, .jump_target =  148, .stack_it = 1596 },
+  { .steering =  149, .jump_target =  149, .stack_it = 1596 },
+  { .steering =  150, .jump_target = 1024, .stack_it = 1598 },
+  { .steering =  151, .jump_target = 1025, .stack_it = 1598 },
+  { .steering =  152, .jump_target = 1026, .stack_it = 1598 },
+  { .steering =  153, .jump_target =  153, .stack_it = 1596 },
+  { .steering =  154, .jump_target =  154, .stack_it = 1596 },
+  { .steering =  155, .jump_target = 1027, .stack_it = 1598 },
+  { .steering =  156, .jump_target = 1028, .stack_it = 1598 },
+  { .steering =  157, .jump_target = 1029, .stack_it = 1598 },
+  { .steering =  158, .jump_target =  158, .stack_it = 1596 },
+  { .steering =  159, .jump_target =  159, .stack_it = 1596 },
+  { .steering =  160, .jump_target =  160, .stack_it = 1596 },
+  { .steering =  161, .jump_target = 1030, .stack_it = 1598 },
+  { .steering =  162, .jump_target = 1031, .stack_it = 1598 },
+  { .steering =  163, .jump_target = 1032, .stack_it = 1598 },
+  { .steering =  164, .jump_target =  164, .stack_it = 1596 },
+  { .steering =  165, .jump_target =  165, .stack_it = 1596 },
+  { .steering =  166, .jump_target = 1033, .stack_it = 1598 },
+  { .steering =  167, .jump_target = 1034, .stack_it = 1598 },
+  { .steering =  168, .jump_target = 1035, .stack_it = 1598 },
+  { .steering =  169, .jump_target =  169, .stack_it = 1596 },
+  { .steering =  170, .jump_target =  170, .stack_it = 1596 },
+  { .steering =  171, .jump_target =  171, .stack_it = 1596 },
+  { .steering =  172, .jump_target = 1036, .stack_it = 1598 },
+  { .steering =  173, .jump_target = 1037, .stack_it = 1598 },
+  { .steering =  174, .jump_target = 1038, .stack_it = 1598 },
+  { .steering =  175, .jump_target =  175, .stack_it = 1596 },
+  { .steering =  176, .jump_target =  803, .stack_it = 1588 },
+  { .steering =  177, .jump_target =  804, .stack_it = 1588 },
+  { .steering =  178, .jump_target = 1039, .stack_it = 1580 },
+  { .steering =  179, .jump_target = 1040, .stack_it = 1580 },
+  { .steering =  180, .jump_target = 1041, .stack_it = 1580 },
+  { .steering =  181, .jump_target = 1042, .stack_it = 1580 },
+  { .steering =  182, .jump_target = 1043, .stack_it = 1597 },
+  { .steering =  183, .jump_target = 1325, .stack_it =   -1 },
+  { .steering =  184, .jump_target = 1044, .stack_it = 1597 },
+  { .steering =  185, .jump_target = 1326, .stack_it =   -1 },
+  { .steering =  186, .jump_target = 1045, .stack_it = 1599 },
+  { .steering =  187, .jump_target = 1046, .stack_it =   -1 },
+  { .steering =  188, .jump_target = 1047, .stack_it =   -1 },
+  { .steering =  189, .jump_target = 1048, .stack_it =   -1 },
+  { .steering =  190, .jump_target = 1049, .stack_it = 1599 },
+  { .steering =  191, .jump_target =  805, .stack_it = 1588 },
+  { .steering =  192, .jump_target =  806, .stack_it = 1588 },
+  { .steering =  193, .jump_target =  193, .stack_it = 1596 },
+  { .steering =  194, .jump_target =  194, .stack_it = 1596 },
+  { .steering =  195, .jump_target =  195, .stack_it = 1596 },
+  { .steering =  196, .jump_target =  196, .stack_it = 1596 },
+  { .steering =  197, .jump_target =  197, .stack_it = 1596 },
+  { .steering =  198, .jump_target =  198, .stack_it = 1596 },
+  { .steering =  199, .jump_target = 1050, .stack_it = 1598 },
+  { .steering =  200, .jump_target =  200, .stack_it = 1596 },
+  { .steering =  201, .jump_target = 1051, .stack_it = 1598 },
+  { .steering =  202, .jump_target =  202, .stack_it = 1596 },
+  { .steering =  203, .jump_target =  203, .stack_it = 1596 },
+  { .steering =  204, .jump_target =  204, .stack_it = 1596 },
+  { .steering =  205, .jump_target = 1052, .stack_it = 1598 },
+  { .steering =  206, .jump_target =  206, .stack_it = 1596 },
+  { .steering =  207, .jump_target = 1053, .stack_it = 1598 },
+  { .steering =  208, .jump_target =  208, .stack_it = 1596 },
+  { .steering =  209, .jump_target =  209, .stack_it =   -1 },
+  { .steering =  210, .jump_target =  210, .stack_it =   -1 },
+  { .steering =  211, .jump_target =  807, .stack_it =   -1 },
+  { .steering =  212, .jump_target =  808, .stack_it =   -1 },
+  { .steering =  213, .jump_target = 1054, .stack_it =   -1 },
+  { .steering =  214, .jump_target = 1055, .stack_it =   -1 },
+  { .steering =  215, .jump_target = 1056, .stack_it =   -1 },
+  { .steering =  216, .jump_target = 1057, .stack_it =   -1 },
+  { .steering =  217, .jump_target = 1327, .stack_it =   -1 },
+  { .steering =  218, .jump_target = 1059, .stack_it =   -1 },
+  { .steering =  219, .jump_target = 1060, .stack_it =   -1 },
+  { .steering =  220, .jump_target = 1061, .stack_it =   -1 },
+  { .steering =  221, .jump_target = 1062, .stack_it =   -1 },
+  { .steering =  222, .jump_target = 1063, .stack_it =   -1 },
+  { .steering =  223, .jump_target = 1064, .stack_it =   -1 },
+  { .steering =  224, .jump_target = 1328, .stack_it =   -1 },
+  { .steering =  225, .jump_target = 1329, .stack_it = 1602 },
+  { .steering =  226, .jump_target = 1330, .stack_it =   -1 },
+  { .steering =  227, .jump_target = 1331, .stack_it =   -1 },
+  { .steering =  228, .jump_target = 1332, .stack_it =   -1 },
+  { .steering =  229, .jump_target = 1333, .stack_it =   -1 },
+  { .steering =  230, .jump_target = 1334, .stack_it =   -1 },
+  { .steering =  231, .jump_target = 1335, .stack_it =   -1 },
+  { .steering =  232, .jump_target = 1336, .stack_it =   -1 },
+  { .steering =  233, .jump_target = 1337, .stack_it = 1602 },
+  { .steering =  234, .jump_target =  813, .stack_it = 1596 },
+  { .steering =  235, .jump_target = 1338, .stack_it = 1598 },
+  { .steering =  236, .jump_target =  814, .stack_it = 1596 },
+  { .steering =  237, .jump_target = 1339, .stack_it = 1598 },
+  { .steering =  238, .jump_target =  815, .stack_it = 1596 },
+  { .steering =  239, .jump_target = 1340, .stack_it = 1598 },
+  { .steering =  240, .jump_target = 1341, .stack_it = 1598 },
+  { .steering =  241, .jump_target = 1342, .stack_it = 1598 },
+  { .steering =  242, .jump_target = 1069, .stack_it =   -1 },
+  { .steering =  243, .jump_target = 1070, .stack_it =   -1 },
+  { .steering =  244, .jump_target = 1343, .stack_it =   -1 },
+  { .steering =  245, .jump_target = 1071, .stack_it =   -1 },
+  { .steering =  246, .jump_target = 1072, .stack_it = 1598 },
+  { .steering =  247, .jump_target = 1073, .stack_it = 1598 },
+  { .steering =  248, .jump_target = 1074, .stack_it = 1598 },
+  { .steering =  249, .jump_target = 1075, .stack_it = 1598 },
+  { .steering =  250, .jump_target = 1076, .stack_it =   -1 },
+  { .steering =  251, .jump_target = 1077, .stack_it =   -1 },
+  { .steering =  252, .jump_target = 1078, .stack_it =   -1 },
+  { .steering =  253, .jump_target =  253, .stack_it =   -1 },
+  { .steering =  254, .jump_target =  254, .stack_it = 1595 },
+  { .steering =  255, .jump_target = 1079, .stack_it =   -1 },
+  { .steering =  256, .jump_target =  256, .stack_it = 1595 },
+  { .steering =  257, .jump_target = 1080, .stack_it =   -1 },
+  { .steering =  258, .jump_target = 1344, .stack_it =   -1 },
+  { .steering =  259, .jump_target = 1345, .stack_it =   -1 },
+  { .steering =  260, .jump_target = 1346, .stack_it =   -1 },
+  { .steering =  261, .jump_target = 1347, .stack_it =   -1 },
+  { .steering =  262, .jump_target = 1348, .stack_it =   -1 },
+  { .steering =  263, .jump_target = 1349, .stack_it =   -1 },
+  { .steering =  264, .jump_target = 1350, .stack_it =   -1 },
+  { .steering =  265, .jump_target = 1351, .stack_it =   -1 },
+  { .steering =  266, .jump_target =  266, .stack_it = 1595 },
+  { .steering =  267, .jump_target = 1083, .stack_it =   -1 },
+  { .steering =  268, .jump_target =  268, .stack_it = 1595 },
+  { .steering =  269, .jump_target =  269, .stack_it =   -1 },
+  { .steering =  270, .jump_target = 1352, .stack_it =   -1 },
+  { .steering =  271, .jump_target = 1353, .stack_it =   -1 },
+  { .steering =  272, .jump_target = 1084, .stack_it =   -1 },
+  { .steering =  273, .jump_target = 1085, .stack_it =   -1 },
+  { .steering =  274, .jump_target = 1086, .stack_it =   -1 },
+  { .steering =  275, .jump_target = 1087, .stack_it =   -1 },
+  { .steering =  276, .jump_target = 1354, .stack_it =   -1 },
+  { .steering =  277, .jump_target = 1355, .stack_it =   -1 },
+  { .steering =  278, .jump_target = 1356, .stack_it =   -1 },
+  { .steering =  279, .jump_target = 1357, .stack_it =   -1 },
+  { .steering =  280, .jump_target = 1358, .stack_it =   -1 },
+  { .steering =  281, .jump_target = 1359, .stack_it =   -1 },
+  { .steering =  282, .jump_target = 1360, .stack_it =   -1 },
+  { .steering =  283, .jump_target = 1361, .stack_it =   -1 },
+  { .steering =  284, .jump_target = 1362, .stack_it =   -1 },
+  { .steering =  285, .jump_target = 1363, .stack_it =   -1 },
+  { .steering =  286, .jump_target = 1364, .stack_it =   -1 },
+  { .steering =  287, .jump_target = 1365, .stack_it =   -1 },
+  { .steering =  288, .jump_target = 1366, .stack_it =   -1 },
+  { .steering =  289, .jump_target = 1090, .stack_it =   -1 },
+  { .steering =  290, .jump_target = 1091, .stack_it =   -1 },
+  { .steering =  291, .jump_target = 1092, .stack_it =   -1 },
+  { .steering =  292, .jump_target = 1367, .stack_it = 1598 },
+  { .steering =  293, .jump_target = 1368, .stack_it = 1598 },
+  { .steering =  294, .jump_target =  822, .stack_it = 1596 },
+  { .steering =  295, .jump_target = 1369, .stack_it = 1598 },
+  { .steering =  296, .jump_target =  823, .stack_it = 1596 },
+  { .steering =  297, .jump_target = 1370, .stack_it = 1598 },
+  { .steering =  298, .jump_target = 1371, .stack_it =   -1 },
+  { .steering =  299, .jump_target = 1372, .stack_it =   -1 },
+  { .steering =  300, .jump_target = 1373, .stack_it =   -1 },
+  { .steering =  301, .jump_target = 1374, .stack_it =   -1 },
+  { .steering =  302, .jump_target =  824, .stack_it =   -1 },
+  { .steering =  303, .jump_target = 1375, .stack_it =   -1 },
+  { .steering =  304, .jump_target = 1376, .stack_it =   -1 },
+  { .steering =  305, .jump_target = 1377, .stack_it =   -1 },
+  { .steering =  306, .jump_target = 1378, .stack_it =   -1 },
+  { .steering =  307, .jump_target = 1379, .stack_it =   -1 },
+  { .steering =  308, .jump_target = 1380, .stack_it =   -1 },
+  { .steering =  309, .jump_target = 1381, .stack_it =   -1 },
+  { .steering =  310, .jump_target = 1382, .stack_it =   -1 },
+  { .steering =  311, .jump_target = 1383, .stack_it =   -1 },
+  { .steering =  312, .jump_target = 1384, .stack_it =   -1 },
+  { .steering =  313, .jump_target = 1385, .stack_it =   -1 },
+  { .steering =  314, .jump_target = 1386, .stack_it =   -1 },
+  { .steering =  315, .jump_target = 1387, .stack_it =   -1 },
+  { .steering =  316, .jump_target = 1388, .stack_it =   -1 },
+  { .steering =  317, .jump_target = 1389, .stack_it =   -1 },
+  { .steering =  318, .jump_target = 1390, .stack_it =   -1 },
+  { .steering =  319, .jump_target = 1391, .stack_it =   -1 },
+  { .steering =  320, .jump_target = 1392, .stack_it =   -1 },
+  { .steering =  321, .jump_target = 1393, .stack_it =   -1 },
+  { .steering =  322, .jump_target = 1394, .stack_it =   -1 },
+  { .steering =  323, .jump_target = 1395, .stack_it =   -1 },
+  { .steering =  324, .jump_target = 1396, .stack_it =   -1 },
+  { .steering =  325, .jump_target = 1397, .stack_it =   -1 },
+  { .steering =  326, .jump_target = 1398, .stack_it =   -1 },
+  { .steering =  327, .jump_target = 1399, .stack_it =   -1 },
+  { .steering =  328, .jump_target = 1400, .stack_it =   -1 },
+  { .steering =  329, .jump_target = 1401, .stack_it =   -1 },
+  { .steering =  330, .jump_target = 1402, .stack_it =   -1 },
+  { .steering =  331, .jump_target = 1403, .stack_it =   -1 },
+  { .steering =  332, .jump_target = 1404, .stack_it =   -1 },
+  { .steering =  333, .jump_target = 1405, .stack_it =   -1 },
+  { .steering =  334, .jump_target = 1406, .stack_it =   -1 },
+  { .steering =  335, .jump_target = 1407, .stack_it =   -1 },
+  { .steering =  336, .jump_target = 1408, .stack_it =   -1 },
+  { .steering =  337, .jump_target = 1409, .stack_it =   -1 },
+  { .steering =  338, .jump_target = 1410, .stack_it =   -1 },
+  { .steering =  339, .jump_target = 1411, .stack_it =   -1 },
+  { .steering =  340, .jump_target = 1412, .stack_it =   -1 },
+  { .steering =  341, .jump_target = 1413, .stack_it =   -1 },
+  { .steering =  342, .jump_target = 1414, .stack_it =   -1 },
+  { .steering =  343, .jump_target = 1415, .stack_it =   -1 },
+  { .steering =  344, .jump_target = 1416, .stack_it =   -1 },
+  { .steering =  345, .jump_target = 1417, .stack_it =   -1 },
+  { .steering =  346, .jump_target = 1418, .stack_it =   -1 },
+  { .steering =  347, .jump_target = 1419, .stack_it =   -1 },
+  { .steering =  348, .jump_target = 1420, .stack_it =   -1 },
+  { .steering =  349, .jump_target = 1421, .stack_it =   -1 },
+  { .steering =  350, .jump_target = 1422, .stack_it =   -1 },
+  { .steering =  351, .jump_target = 1423, .stack_it =   -1 },
+  { .steering =  352, .jump_target = 1424, .stack_it =   -1 },
+  { .steering =  353, .jump_target = 1425, .stack_it =   -1 },
+  { .steering =  354, .jump_target = 1426, .stack_it =   -1 },
+  { .steering =  355, .jump_target = 1427, .stack_it =   -1 },
+  { .steering =  356, .jump_target = 1428, .stack_it =   -1 },
+  { .steering =  357, .jump_target = 1429, .stack_it =   -1 },
+  { .steering =  358, .jump_target = 1430, .stack_it =   -1 },
+  { .steering =  359, .jump_target = 1431, .stack_it =   -1 },
+  { .steering =  360, .jump_target = 1432, .stack_it =   -1 },
+  { .steering =  361, .jump_target = 1433, .stack_it =   -1 },
+  { .steering =  362, .jump_target = 1434, .stack_it =   -1 },
+  { .steering =  363, .jump_target = 1435, .stack_it =   -1 },
+  { .steering =  364, .jump_target = 1436, .stack_it =   -1 },
+  { .steering =  365, .jump_target = 1437, .stack_it =   -1 },
+  { .steering =  366, .jump_target = 1438, .stack_it =   -1 },
+  { .steering =  367, .jump_target = 1439, .stack_it =   -1 },
+  { .steering =  368, .jump_target = 1440, .stack_it =   -1 },
+  { .steering =  369, .jump_target = 1441, .stack_it =   -1 },
+  { .steering =  370, .jump_target = 1442, .stack_it =   -1 },
+  { .steering =  371, .jump_target = 1443, .stack_it =   -1 },
+  { .steering =  372, .jump_target = 1444, .stack_it =   -1 },
+  { .steering =  373, .jump_target = 1445, .stack_it =   -1 },
+  { .steering =  374, .jump_target = 1446, .stack_it =   -1 },
+  { .steering =  375, .jump_target = 1447, .stack_it =   -1 },
+  { .steering =  376, .jump_target = 1448, .stack_it =   -1 },
+  { .steering =  377, .jump_target = 1449, .stack_it =   -1 },
+  { .steering =  378, .jump_target = 1450, .stack_it =   -1 },
+  { .steering =  379, .jump_target = 1451, .stack_it =   -1 },
+  { .steering =  380, .jump_target = 1452, .stack_it =   -1 },
+  { .steering =  381, .jump_target = 1453, .stack_it =   -1 },
+  { .steering =  382, .jump_target = 1454, .stack_it =   -1 },
+  { .steering =  383, .jump_target = 1455, .stack_it =   -1 },
+  { .steering =  384, .jump_target = 1456, .stack_it =   -1 },
+  { .steering =  385, .jump_target = 1457, .stack_it =   -1 },
+  { .steering =  386, .jump_target = 1458, .stack_it =   -1 },
+  { .steering =  387, .jump_target = 1103, .stack_it =   -1 },
+  { .steering =  388, .jump_target = 1104, .stack_it =   -1 },
+  { .steering =  389, .jump_target = 1105, .stack_it =   -1 },
+  { .steering =  390, .jump_target = 1106, .stack_it =   -1 },
+  { .steering =  391, .jump_target = 1459, .stack_it =   -1 },
+  { .steering =  392, .jump_target = 1460, .stack_it =   -1 },
+  { .steering =  393, .jump_target = 1461, .stack_it =   -1 },
+  { .steering =  394, .jump_target = 1462, .stack_it =   -1 },
+  { .steering =  395, .jump_target = 1463, .stack_it =   -1 },
+  { .steering =  396, .jump_target = 1464, .stack_it =   -1 },
+  { .steering =  397, .jump_target = 1465, .stack_it =   -1 },
+  { .steering =  398, .jump_target = 1466, .stack_it =   -1 },
+  { .steering =  399, .jump_target = 1467, .stack_it =   -1 },
+  { .steering =  400, .jump_target = 1468, .stack_it =   -1 },
+  { .steering =  401, .jump_target = 1469, .stack_it =   -1 },
+  { .steering =  402, .jump_target = 1470, .stack_it =   -1 },
+  { .steering =  403, .jump_target = 1471, .stack_it =   -1 },
+  { .steering =  404, .jump_target = 1472, .stack_it =   -1 },
+  { .steering =  405, .jump_target = 1473, .stack_it =   -1 },
+  { .steering =  406, .jump_target = 1107, .stack_it =   -1 },
+  { .steering =  407, .jump_target = 1108, .stack_it =   -1 },
+  { .steering =  408, .jump_target = 1109, .stack_it =   -1 },
+  { .steering =  409, .jump_target = 1110, .stack_it =   -1 },
+  { .steering =  410, .jump_target = 1111, .stack_it =   -1 },
+  { .steering =  411, .jump_target = 1112, .stack_it =   -1 },
+  { .steering =  412, .jump_target = 1113, .stack_it =   -1 },
+  { .steering =  413, .jump_target = 1114, .stack_it =   -1 },
+  { .steering =  414, .jump_target = 1115, .stack_it =   -1 },
+  { .steering =  415, .jump_target = 1116, .stack_it =   -1 },
+  { .steering =  416, .jump_target = 1117, .stack_it =   -1 },
+  { .steering =  417, .jump_target = 1118, .stack_it =   -1 },
+  { .steering =  418, .jump_target = 1119, .stack_it =   -1 },
+  { .steering =  419, .jump_target = 1120, .stack_it =   -1 },
+  { .steering =  420, .jump_target = 1121, .stack_it =   -1 },
+  { .steering =  421, .jump_target =  921, .stack_it = 1575 },
+  { .steering =  422, .jump_target =  828, .stack_it =   -1 },
+  { .steering =  423, .jump_target =  423, .stack_it =   -1 },
+  { .steering =  424, .jump_target =  424, .stack_it = 1595 },
+  { .steering =  425, .jump_target =  829, .stack_it =   -1 },
+  { .steering =  426, .jump_target =  830, .stack_it =   -1 },
+  { .steering =  427, .jump_target =  831, .stack_it =   -1 },
+  { .steering =  428, .jump_target = 1474, .stack_it =   -1 },
+  { .steering =  429, .jump_target = 1475, .stack_it =   -1 },
+  { .steering =  430, .jump_target = 1122, .stack_it = 1598 },
+  { .steering =  431, .jump_target =  832, .stack_it = 1578 },
+  { .steering =  432, .jump_target =  833, .stack_it = 1578 },
+  { .steering =  433, .jump_target =  834, .stack_it = 1578 },
+  { .steering =  434, .jump_target =  835, .stack_it = 1578 },
+  { .steering =  435, .jump_target =  836, .stack_it = 1578 },
+  { .steering =  436, .jump_target = 1476, .stack_it =   -1 },
+  { .steering =  437, .jump_target = 1123, .stack_it = 1598 },
+  { .steering =  438, .jump_target = 1477, .stack_it =   -1 },
+  { .steering =  439, .jump_target = 1124, .stack_it = 1598 },
+  { .steering =  440, .jump_target =  837, .stack_it = 1582 },
+  { .steering =  441, .jump_target = 1125, .stack_it =   -1 },
+  { .steering =  442, .jump_target = 1478, .stack_it =   -1 },
+  { .steering =  443, .jump_target = 1126, .stack_it = 1598 },
+  { .steering =  444, .jump_target =  838, .stack_it = 1581 },
+  { .steering =  445, .jump_target =  839, .stack_it = 1578 },
+  { .steering =  446, .jump_target =  840, .stack_it = 1578 },
+  { .steering =  447, .jump_target = 1127, .stack_it = 1598 },
+  { .steering =  448, .jump_target = 1479, .stack_it =   -1 },
+  { .steering =  449, .jump_target = 1128, .stack_it = 1598 },
+  { .steering =  450, .jump_target = 1480, .stack_it =   -1 },
+  { .steering =  451, .jump_target = 1481, .stack_it =   -1 },
+  { .steering =  452, .jump_target = 1482, .stack_it =   -1 },
+  { .steering =  453, .jump_target = 1483, .stack_it =   -1 },
+  { .steering =  454, .jump_target = 1484, .stack_it =   -1 },
+  { .steering =  455, .jump_target = 1129, .stack_it = 1598 },
+  { .steering =  456, .jump_target = 1485, .stack_it =   -1 },
+  { .steering =  457, .jump_target = 1486, .stack_it =   -1 },
+  { .steering =  458, .jump_target = 1487, .stack_it =   -1 },
+  { .steering =  459, .jump_target = 1488, .stack_it =   -1 },
+  { .steering =  460, .jump_target = 1130, .stack_it = 1598 },
+  { .steering =  461, .jump_target = 1489, .stack_it =   -1 },
+  { .steering =  462, .jump_target = 1490, .stack_it =   -1 },
+  { .steering =  463, .jump_target = 1131, .stack_it = 1598 },
+  { .steering =  464, .jump_target = 1132, .stack_it = 1598 },
+  { .steering =  465, .jump_target = 1491, .stack_it =   -1 },
+  { .steering =  466, .jump_target = 1133, .stack_it = 1598 },
+  { .steering =  467, .jump_target = 1492, .stack_it =   -1 },
+  { .steering =  468, .jump_target =  923, .stack_it = 1603 },
+  { .steering =  469, .jump_target =  469, .stack_it = 1596 },
+  { .steering =  470, .jump_target = 1134, .stack_it = 1597 },
+  { .steering =  471, .jump_target = 1493, .stack_it =   -1 },
+  { .steering =  472, .jump_target =  472, .stack_it = 1596 },
+  { .steering =  473, .jump_target = 1135, .stack_it =   -1 },
+  { .steering =  474, .jump_target = 1136, .stack_it =   -1 },
+  { .steering =  475, .jump_target = 1137, .stack_it =   -1 },
+  { .steering =  476, .jump_target =  476, .stack_it = 1596 },
+  { .steering =  477, .jump_target = 1138, .stack_it = 1597 },
+  { .steering =  478, .jump_target = 1494, .stack_it =   -1 },
+  { .steering =  479, .jump_target =  479, .stack_it = 1596 },
+  { .steering =  480, .jump_target = 1139, .stack_it =   -1 },
+  { .steering =  481, .jump_target = 1140, .stack_it =   -1 },
+  { .steering =  482, .jump_target = 1141, .stack_it =   -1 },
+  { .steering =  483, .jump_target = 1142, .stack_it = 1599 },
+  { .steering =  484, .jump_target =  484, .stack_it = 1596 },
+  { .steering =  485, .jump_target = 1143, .stack_it = 1599 },
+  { .steering =  486, .jump_target =  486, .stack_it = 1596 },
+  { .steering =  487, .jump_target =  487, .stack_it = 1596 },
+  { .steering =  488, .jump_target = 1144, .stack_it = 1597 },
+  { .steering =  489, .jump_target = 1495, .stack_it =   -1 },
+  { .steering =  490, .jump_target =  490, .stack_it = 1596 },
+  { .steering =  491, .jump_target = 1145, .stack_it =   -1 },
+  { .steering =  492, .jump_target = 1146, .stack_it =   -1 },
+  { .steering =  493, .jump_target = 1147, .stack_it =   -1 },
+  { .steering =  494, .jump_target =  494, .stack_it = 1596 },
+  { .steering =  495, .jump_target = 1148, .stack_it = 1597 },
+  { .steering =  496, .jump_target = 1496, .stack_it =   -1 },
+  { .steering =  497, .jump_target =  497, .stack_it = 1596 },
+  { .steering =  498, .jump_target = 1149, .stack_it =   -1 },
+  { .steering =  499, .jump_target = 1150, .stack_it =   -1 },
+  { .steering =  500, .jump_target = 1151, .stack_it =   -1 },
+  { .steering =  501, .jump_target = 1152, .stack_it = 1599 },
+  { .steering =  502, .jump_target =  502, .stack_it = 1596 },
+  { .steering =  503, .jump_target = 1153, .stack_it = 1599 },
+  { .steering =  504, .jump_target =  504, .stack_it = 1596 },
+  { .steering =  505, .jump_target = 1497, .stack_it =   -1 },
+  { .steering =  506, .jump_target = 1498, .stack_it =   -1 },
+  { .steering =  507, .jump_target = 1499, .stack_it =   -1 },
+  { .steering =  508, .jump_target = 1500, .stack_it =   -1 },
+  { .steering =  509, .jump_target = 1501, .stack_it =   -1 },
+  { .steering =  510, .jump_target = 1502, .stack_it =   -1 },
+  { .steering =  511, .jump_target = 1503, .stack_it =   -1 },
+  { .steering =  512, .jump_target = 1504, .stack_it =   -1 },
+  { .steering =  513, .jump_target = 1505, .stack_it =   -1 },
+  { .steering =  514, .jump_target = 1506, .stack_it =   -1 },
+  { .steering =  515, .jump_target = 1507, .stack_it =   -1 },
+  { .steering =  516, .jump_target = 1154, .stack_it = 1598 },
+  { .steering =  517, .jump_target = 1508, .stack_it =   -1 },
+  { .steering =  518, .jump_target = 1509, .stack_it =   -1 },
+  { .steering =  519, .jump_target = 1510, .stack_it =   -1 },
+  { .steering =  520, .jump_target = 1511, .stack_it =   -1 },
+  { .steering =  521, .jump_target = 1155, .stack_it = 1598 },
+  { .steering =  522, .jump_target = 1512, .stack_it =   -1 },
+  { .steering =  523, .jump_target = 1513, .stack_it =   -1 },
+  { .steering =  524, .jump_target = 1156, .stack_it = 1598 },
+  { .steering =  525, .jump_target = 1157, .stack_it = 1598 },
+  { .steering =  526, .jump_target = 1514, .stack_it =   -1 },
+  { .steering =  527, .jump_target = 1515, .stack_it =   -1 },
+  { .steering =  528, .jump_target = 1516, .stack_it =   -1 },
+  { .steering =  529, .jump_target = 1158, .stack_it = 1598 },
+  { .steering =  530, .jump_target = 1517, .stack_it =   -1 },
+  { .steering =  531, .jump_target = 1159, .stack_it = 1598 },
+  { .steering =  532, .jump_target = 1518, .stack_it =   -1 },
+  { .steering =  533, .jump_target = 1519, .stack_it =   -1 },
+  { .steering =  534, .jump_target = 1520, .stack_it =   -1 },
+  { .steering =  535, .jump_target = 1521, .stack_it =   -1 },
+  { .steering =  536, .jump_target = 1522, .stack_it =   -1 },
+  { .steering =  537, .jump_target = 1160, .stack_it = 1598 },
+  { .steering =  538, .jump_target = 1523, .stack_it =   -1 },
+  { .steering =  539, .jump_target = 1524, .stack_it =   -1 },
+  { .steering =  540, .jump_target = 1525, .stack_it =   -1 },
+  { .steering =  541, .jump_target = 1526, .stack_it =   -1 },
+  { .steering =  542, .jump_target = 1161, .stack_it = 1598 },
+  { .steering =  543, .jump_target = 1527, .stack_it =   -1 },
+  { .steering =  544, .jump_target = 1162, .stack_it = 1598 },
+  { .steering =  545, .jump_target = 1163, .stack_it = 1598 },
+  { .steering =  546, .jump_target = 1528, .stack_it =   -1 },
+  { .steering =  547, .jump_target = 1164, .stack_it = 1598 },
+  { .steering =  548, .jump_target = 1529, .stack_it =   -1 },
+  { .steering =  549, .jump_target = 1165, .stack_it = 1597 },
+  { .steering =  550, .jump_target = 1530, .stack_it =   -1 },
+  { .steering =  551, .jump_target = 1166, .stack_it = 1599 },
+  { .steering =  552, .jump_target = 1167, .stack_it =   -1 },
+  { .steering =  553, .jump_target = 1168, .stack_it =   -1 },
+  { .steering =  554, .jump_target = 1169, .stack_it =   -1 },
+  { .steering =  555, .jump_target = 1170, .stack_it =   -1 },
+  { .steering =  556, .jump_target = 1171, .stack_it =   -1 },
+  { .steering =  557, .jump_target = 1172, .stack_it =   -1 },
+  { .steering =  558, .jump_target = 1173, .stack_it =   -1 },
+  { .steering =  559, .jump_target = 1174, .stack_it =   -1 },
+  { .steering =  560, .jump_target = 1175, .stack_it =   -1 },
+  { .steering =  561, .jump_target = 1176, .stack_it =   -1 },
+  { .steering =  562, .jump_target =  562, .stack_it =   -1 },
+  { .steering =  563, .jump_target = 1177, .stack_it = 1597 },
+  { .steering =  564, .jump_target = 1531, .stack_it =   -1 },
+  { .steering =  565, .jump_target = 1178, .stack_it = 1599 },
+  { .steering =  566, .jump_target = 1179, .stack_it =   -1 },
+  { .steering =  567, .jump_target = 1180, .stack_it =   -1 },
+  { .steering =  568, .jump_target = 1181, .stack_it = 1597 },
+  { .steering =  569, .jump_target = 1532, .stack_it =   -1 },
+  { .steering =  570, .jump_target = 1182, .stack_it = 1599 },
+  { .steering =  571, .jump_target = 1183, .stack_it = 1597 },
+  { .steering =  572, .jump_target = 1533, .stack_it =   -1 },
+  { .steering =  573, .jump_target = 1184, .stack_it = 1597 },
+  { .steering =  574, .jump_target = 1534, .stack_it =   -1 },
+  { .steering =  575, .jump_target = 1185, .stack_it = 1599 },
+  { .steering =  576, .jump_target = 1186, .stack_it =   -1 },
+  { .steering =  577, .jump_target = 1187, .stack_it =   -1 },
+  { .steering =  578, .jump_target = 1188, .stack_it =   -1 },
+  { .steering =  579, .jump_target = 1189, .stack_it = 1599 },
+  { .steering =  580, .jump_target =  924, .stack_it = 1603 },
+  { .steering =  581, .jump_target =  581, .stack_it =   -1 },
+  { .steering =  582, .jump_target =  582, .stack_it =   -1 },
+  { .steering =  583, .jump_target = 1190, .stack_it = 1601 },
+  { .steering =  584, .jump_target = 1191, .stack_it = 1600 },
+  { .steering =  585, .jump_target = 1192, .stack_it = 1601 },
+  { .steering =  586, .jump_target = 1193, .stack_it = 1600 },
+  { .steering =  587, .jump_target =  925, .stack_it = 1577 },
+  { .steering =  588, .jump_target =  588, .stack_it = 1587 },
+  { .steering =  589, .jump_target =  589, .stack_it = 1596 },
+  { .steering =  590, .jump_target = 1194, .stack_it = 1598 },
+  { .steering =  591, .jump_target = 1195, .stack_it = 1598 },
+  { .steering =  592, .jump_target = 1196, .stack_it = 1597 },
+  { .steering =  593, .jump_target = 1535, .stack_it =   -1 },
+  { .steering =  594, .jump_target =  594, .stack_it = 1596 },
+  { .steering =  595, .jump_target =  595, .stack_it = 1596 },
+  { .steering =  596, .jump_target =  596, .stack_it = 1596 },
+  { .steering =  597, .jump_target =  597, .stack_it = 1596 },
+  { .steering =  598, .jump_target = 1197, .stack_it = 1598 },
+  { .steering =  599, .jump_target =  599, .stack_it = 1596 },
+  { .steering =  600, .jump_target =  600, .stack_it = 1596 },
+  { .steering =  601, .jump_target =  601, .stack_it = 1596 },
+  { .steering =  602, .jump_target =  602, .stack_it = 1596 },
+  { .steering =  603, .jump_target = 1198, .stack_it = 1598 },
+  { .steering =  604, .jump_target =  604, .stack_it = 1596 },
+  { .steering =  605, .jump_target = 1199, .stack_it = 1598 },
+  { .steering =  606, .jump_target = 1200, .stack_it = 1599 },
+  { .steering =  607, .jump_target = 1201, .stack_it = 1598 },
+  { .steering =  608, .jump_target =  608, .stack_it = 1596 },
+  { .steering =  609, .jump_target =  609, .stack_it = 1596 },
+  { .steering =  610, .jump_target =  610, .stack_it = 1596 },
+  { .steering =  611, .jump_target =  611, .stack_it = 1596 },
+  { .steering =  612, .jump_target = 1202, .stack_it = 1598 },
+  { .steering =  613, .jump_target = 1203, .stack_it = 1598 },
+  { .steering =  614, .jump_target = 1204, .stack_it = 1598 },
+  { .steering =  615, .jump_target =  615, .stack_it = 1596 },
+  { .steering =  616, .jump_target =  616, .stack_it = 1596 },
+  { .steering =  617, .jump_target =  617, .stack_it = 1596 },
+  { .steering =  618, .jump_target =  618, .stack_it = 1596 },
+  { .steering =  619, .jump_target = 1205, .stack_it = 1598 },
+  { .steering =  620, .jump_target = 1206, .stack_it = 1598 },
+  { .steering =  621, .jump_target = 1207, .stack_it = 1598 },
+  { .steering =  622, .jump_target =  622, .stack_it = 1596 },
+  { .steering =  623, .jump_target =  623, .stack_it = 1596 },
+  { .steering =  624, .jump_target = 1208, .stack_it = 1598 },
+  { .steering =  625, .jump_target = 1209, .stack_it = 1598 },
+  { .steering =  626, .jump_target = 1210, .stack_it = 1598 },
+  { .steering =  627, .jump_target =  627, .stack_it = 1596 },
+  { .steering =  628, .jump_target =  628, .stack_it = 1596 },
+  { .steering =  629, .jump_target =  629, .stack_it = 1596 },
+  { .steering =  630, .jump_target = 1211, .stack_it = 1598 },
+  { .steering =  631, .jump_target = 1212, .stack_it = 1598 },
+  { .steering =  632, .jump_target = 1213, .stack_it = 1598 },
+  { .steering =  633, .jump_target =  633, .stack_it = 1596 },
+  { .steering =  634, .jump_target =  634, .stack_it = 1596 },
+  { .steering =  635, .jump_target = 1214, .stack_it = 1598 },
+  { .steering =  636, .jump_target = 1215, .stack_it = 1598 },
+  { .steering =  637, .jump_target = 1216, .stack_it = 1598 },
+  { .steering =  638, .jump_target =  638, .stack_it = 1596 },
+  { .steering =  639, .jump_target =  639, .stack_it = 1596 },
+  { .steering =  640, .jump_target =  640, .stack_it = 1596 },
+  { .steering =  641, .jump_target = 1217, .stack_it = 1598 },
+  { .steering =  642, .jump_target = 1218, .stack_it = 1598 },
+  { .steering =  643, .jump_target = 1219, .stack_it = 1598 },
+  { .steering =  644, .jump_target =  644, .stack_it = 1596 },
+  { .steering =  645, .jump_target = 1220, .stack_it = 1597 },
+  { .steering =  646, .jump_target = 1536, .stack_it =   -1 },
+  { .steering =  647, .jump_target = 1221, .stack_it = 1597 },
+  { .steering =  648, .jump_target = 1537, .stack_it =   -1 },
+  { .steering =  649, .jump_target =  649, .stack_it = 1573 },
+  { .steering =  650, .jump_target =  650, .stack_it = 1587 },
+  { .steering =  651, .jump_target =  651, .stack_it = 1576 },
+  { .steering =  652, .jump_target =  652, .stack_it = 1587 },
+  { .steering =  653, .jump_target =  653, .stack_it =   -1 },
+  { .steering =  654, .jump_target = 1222, .stack_it = 1600 },
+  { .steering =  655, .jump_target = 1223, .stack_it = 1600 },
+  { .steering =  656, .jump_target = 1224, .stack_it = 1600 },
+  { .steering =  657, .jump_target = 1225, .stack_it = 1601 },
+  { .steering =  658, .jump_target = 1226, .stack_it = 1600 },
+  { .steering =  659, .jump_target = 1227, .stack_it = 1600 },
+  { .steering =  660, .jump_target = 1228, .stack_it = 1600 },
+  { .steering =  661, .jump_target = 1229, .stack_it = 1600 },
+  { .steering =  662, .jump_target = 1230, .stack_it = 1601 },
+  { .steering =  663, .jump_target = 1231, .stack_it = 1600 },
+  { .steering =  664, .jump_target = 1232, .stack_it = 1600 },
+  { .steering =  665, .jump_target = 1233, .stack_it = 1600 },
+  { .steering =  666, .jump_target = 1234, .stack_it = 1600 },
+  { .steering =  667, .jump_target = 1235, .stack_it = 1601 },
+  { .steering =  668, .jump_target = 1236, .stack_it = 1600 },
+  { .steering =  669, .jump_target =  669, .stack_it = 1591 },
+  { .steering =  670, .jump_target =  670, .stack_it = 1589 },
+  { .steering =  671, .jump_target = 1237, .stack_it = 1600 },
+  { .steering =  672, .jump_target = 1238, .stack_it = 1600 },
+  { .steering =  673, .jump_target = 1239, .stack_it = 1600 },
+  { .steering =  674, .jump_target = 1240, .stack_it = 1601 },
+  { .steering =  675, .jump_target = 1241, .stack_it = 1600 },
+  { .steering =  676, .jump_target = 1242, .stack_it = 1600 },
+  { .steering =  677, .jump_target = 1243, .stack_it = 1600 },
+  { .steering =  678, .jump_target = 1244, .stack_it = 1600 },
+  { .steering =  679, .jump_target = 1245, .stack_it = 1601 },
+  { .steering =  680, .jump_target = 1246, .stack_it = 1600 },
+  { .steering =  681, .jump_target = 1247, .stack_it = 1600 },
+  { .steering =  682, .jump_target = 1248, .stack_it = 1600 },
+  { .steering =  683, .jump_target = 1249, .stack_it = 1600 },
+  { .steering =  684, .jump_target = 1250, .stack_it = 1601 },
+  { .steering =  685, .jump_target = 1251, .stack_it = 1600 },
+  { .steering =  686, .jump_target =  686, .stack_it =   -1 },
+  { .steering =  687, .jump_target =  687, .stack_it = 1596 },
+  { .steering =  688, .jump_target =  688, .stack_it = 1596 },
+  { .steering =  689, .jump_target = 1252, .stack_it = 1598 },
+  { .steering =  690, .jump_target =  690, .stack_it = 1596 },
+  { .steering =  691, .jump_target =  691, .stack_it = 1587 },
+  { .steering =  692, .jump_target = 1253, .stack_it =   -1 },
+  { .steering =  693, .jump_target = 1254, .stack_it =   -1 },
+  { .steering =  694, .jump_target = 1255, .stack_it =   -1 },
+  { .steering =  695, .jump_target = 1256, .stack_it =   -1 },
+  { .steering =  696, .jump_target = 1257, .stack_it =   -1 },
+  { .steering =  697, .jump_target = 1258, .stack_it =   -1 },
+  { .steering =  698, .jump_target = 1259, .stack_it =   -1 },
+  { .steering =  699, .jump_target =  841, .stack_it =   -1 },
+  { .steering =  700, .jump_target =  700, .stack_it =   -1 },
+  { .steering =  701, .jump_target =  701, .stack_it =   -1 },
+  { .steering =  702, .jump_target =  702, .stack_it =   -1 },
+  { .steering =  703, .jump_target =  703, .stack_it =   -1 },
+  { .steering =  704, .jump_target =  704, .stack_it =   -1 },
+  { .steering =  705, .jump_target =  842, .stack_it =   -1 },
+  { .steering =  706, .jump_target =  706, .stack_it = 1574 },
+  { .steering =  707, .jump_target =  707, .stack_it = 1574 },
+  { .steering =  708, .jump_target =  926, .stack_it = 1606 },
+  { .steering =  709, .jump_target =  927, .stack_it = 1606 },
+  { .steering =  710, .jump_target = 1538, .stack_it =   -1 },
+  { .steering =  711, .jump_target = 1539, .stack_it =   -1 },
+  { .steering =  712, .jump_target = 1540, .stack_it =   -1 },
+  { .steering =  713, .jump_target = 1261, .stack_it =   -1 },
+  { .steering =  714, .jump_target = 1262, .stack_it =   -1 },
+  { .steering =  715, .jump_target = 1263, .stack_it =   -1 },
+  { .steering =  716, .jump_target = 1541, .stack_it =   -1 },
+  { .steering =  717, .jump_target = 1542, .stack_it =   -1 },
+  { .steering =  718, .jump_target = 1543, .stack_it =   -1 },
+  { .steering =  719, .jump_target = 1544, .stack_it =   -1 },
+  { .steering =  720, .jump_target = 1545, .stack_it =   -1 },
+  { .steering =  721, .jump_target = 1546, .stack_it =   -1 },
+  { .steering =  722, .jump_target =  850, .stack_it = 1583 },
+  { .steering =  723, .jump_target = 1547, .stack_it =   -1 },
+  { .steering =  724, .jump_target = 1548, .stack_it =   -1 },
+  { .steering =  725, .jump_target = 1549, .stack_it =   -1 },
+  { .steering =  726, .jump_target = 1550, .stack_it =   -1 },
+  { .steering =  727, .jump_target = 1551, .stack_it =   -1 },
+  { .steering =  728, .jump_target = 1552, .stack_it =   -1 },
+  { .steering =  729, .jump_target = 1553, .stack_it =   -1 },
+  { .steering =  730, .jump_target = 1554, .stack_it =   -1 },
+  { .steering =  731, .jump_target = 1555, .stack_it =   -1 },
+  { .steering =  732, .jump_target = 1556, .stack_it =   -1 },
+  { .steering =  733, .jump_target = 1557, .stack_it =   -1 },
+  { .steering =  734, .jump_target = 1558, .stack_it =   -1 },
+  { .steering =  735, .jump_target = 1559, .stack_it =   -1 },
+  { .steering =  736, .jump_target = 1560, .stack_it =   -1 },
+  { .steering =  737, .jump_target = 1561, .stack_it =   -1 },
+  { .steering =  738, .jump_target = 1271, .stack_it =   -1 },
+  { .steering =  739, .jump_target = 1272, .stack_it =   -1 },
+  { .steering =  740, .jump_target = 1273, .stack_it =   -1 },
+  { .steering =  741, .jump_target =  741, .stack_it = 1604 },
+  { .steering =  742, .jump_target =  742, .stack_it = 1605 },
+  { .steering =  743, .jump_target = 1562, .stack_it =   -1 },
+  { .steering =  744, .jump_target = 1274, .stack_it =   -1 },
+  { .steering =  745, .jump_target = 1563, .stack_it =   -1 },
+  { .steering =  746, .jump_target = 1564, .stack_it =   -1 },
+  { .steering =  747, .jump_target = 1565, .stack_it =   -1 },
+  { .steering =  748, .jump_target = 1275, .stack_it = 1597 },
+  { .steering =  749, .jump_target = 1566, .stack_it =   -1 },
+  { .steering =  750, .jump_target = 1567, .stack_it =   -1 },
+  { .steering =  751, .jump_target = 1568, .stack_it =   -1 },
+  { .steering =  752, .jump_target = 1276, .stack_it =   -1 },
+  { .steering =  753, .jump_target = 1277, .stack_it =   -1 },
+  { .steering =  754, .jump_target = 1278, .stack_it =   -1 },
+  { .steering =  755, .jump_target = 1279, .stack_it = 1599 },
+  { .steering =  756, .jump_target =  943, .stack_it =   -1 },
+  { .steering =  757, .jump_target = 1569, .stack_it =   -1 },
+  { .steering =  758, .jump_target = 1570, .stack_it =   -1 },
+  { .steering =  759, .jump_target =  944, .stack_it =   -1 },
+  { .steering =  760, .jump_target = 1571, .stack_it =   -1 },
+  { .steering =  761, .jump_target =  761, .stack_it = 1593 },
+  { .steering =  762, .jump_target =  946, .stack_it = 1603 },
+  { .steering =  763, .jump_target = 1281, .stack_it =   -1 },
+  { .steering =  764, .jump_target = 1282, .stack_it =   -1 },
+  { .steering =  765, .jump_target = 1283, .stack_it =   -1 },
+  { .steering =  766, .jump_target = 1284, .stack_it =   -1 },
+  { .steering =  767, .jump_target = 1572, .stack_it =   -1 },
+  { .steering =  768, .jump_target = 1285, .stack_it =   -1 },
+  { .steering =  769, .jump_target = 1286, .stack_it =   -1 },
+  { .steering =  770, .jump_target = 1287, .stack_it =   -1 },
+  { .steering =  771, .jump_target = 1288, .stack_it =   -1 },
+  { .steering =  772, .jump_target = 1289, .stack_it =   -1 },
+  { .steering =  773, .jump_target = 1290, .stack_it =   -1 },
+  { .steering =  774, .jump_target = 1291, .stack_it =   -1 },
+  { .steering =  775, .jump_target = 1292, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0001[] = {
+  { .steering =    1, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0002[] = {
+  { .steering =    2, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0003[] = {
+  { .steering =    3, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0004[] = {
+  { .steering =    4, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0005[] = {
+  { .steering =    5, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0006[] = {
+  { .steering =    6, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0007[] = {
+  { .steering =    7, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0008[] = {
+  { .steering =    8, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0009[] = {
+  { .steering =    9, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0010[] = {
+  { .steering =   10, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0011[] = {
+  { .steering =   11, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0012[] = {
+  { .steering =   12, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0013[] = {
+  { .steering =   13, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0014[] = {
+  { .steering =   14, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0015[] = {
+  { .steering =   -3, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   15, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0016[] = {
+  { .steering =    6, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =    9, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   16, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   19, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =  779, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0017[] = {
+  { .steering =   17, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0018[] = {
+  { .steering =   18, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0019[] = {
+  { .steering =    6, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =    9, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   19, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =  779, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0020[] = {
+  { .steering =   20, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0021[] = {
+  { .steering =   21, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   30, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   34, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   77, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0022[] = {
+  { .steering =   22, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   29, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   70, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0023[] = {
+  { .steering =   23, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0024[] = {
+  { .steering =   24, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0025[] = {
+  { .steering =   25, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0026[] = {
+  { .steering =   26, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0027[] = {
+  { .steering =   27, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0028[] = {
+  { .steering =   28, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   46, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   47, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   48, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   49, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   50, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   51, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0029[] = {
+  { .steering =   29, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0030[] = {
+  { .steering =   30, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   34, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   77, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0031[] = {
+  { .steering =   31, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0032[] = {
+  { .steering =   32, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   57, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0033[] = {
+  { .steering =   33, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   77, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0034[] = {
+  { .steering =   34, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   77, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0035[] = {
+  { .steering =   35, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0036[] = {
+  { .steering =   36, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0037[] = {
+  { .steering =   37, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0038[] = {
+  { .steering =   30, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   34, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   38, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   77, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0039[] = {
+  { .steering =   22, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   26, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   27, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   28, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   29, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   31, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   39, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   46, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   47, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   48, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   49, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   50, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   51, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   67, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   70, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   75, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   80, .jump_target =   -2, .stack_it =   -2 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0040[] = {
+  { .steering =   40, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0041[] = {
+  { .steering =   41, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0042[] = {
+  { .steering =   42, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0043[] = {
+  { .steering =   43, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0044[] = {
+  { .steering =   44, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0045[] = {
+  { .steering =   45, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0046[] = {
+  { .steering =   46, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0047[] = {
+  { .steering =   47, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0048[] = {
+  { .steering =   48, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0049[] = {
+  { .steering =   49, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0050[] = {
+  { .steering =   50, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0051[] = {
+  { .steering =   51, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0052[] = {
+  { .steering =   52, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0053[] = {
+  { .steering =   53, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0054[] = {
+  { .steering =   54, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0055[] = {
+  { .steering =   55, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0056[] = {
+  { .steering =   56, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0057[] = {
+  { .steering =   57, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0058[] = {
+  { .steering =   58, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0059[] = {
+  { .steering =   59, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0060[] = {
+  { .steering =   60, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0061[] = {
+  { .steering =   61, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0062[] = {
+  { .steering =   62, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0063[] = {
+  { .steering =   63, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0064[] = {
+  { .steering =   64, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0065[] = {
+  { .steering =   65, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0066[] = {
+  { .steering =   66, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0067[] = {
+  { .steering =   67, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0068[] = {
+  { .steering =   68, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0069[] = {
+  { .steering =   69, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0070[] = {
+  { .steering =   70, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0071[] = {
+  { .steering =   71, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0072[] = {
+  { .steering =   72, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0073[] = {
+  { .steering =   73, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0074[] = {
+  { .steering =   74, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0075[] = {
+  { .steering =   75, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0076[] = {
+  { .steering =   76, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0077[] = {
+  { .steering =   77, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0078[] = {
+  { .steering =   78, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0079[] = {
+  { .steering =   79, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0080[] = {
+  { .steering =   80, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0081[] = {
+  { .steering =   81, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0082[] = {
+  { .steering =   82, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0083[] = {
+  { .steering =   83, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0084[] = {
+  { .steering =   84, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0085[] = {
+  { .steering =   85, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0086[] = {
+  { .steering =   86, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0087[] = {
+  { .steering =   87, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0088[] = {
+  { .steering =   88, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0089[] = {
+  { .steering =   89, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0090[] = {
+  { .steering =   90, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0091[] = {
+  { .steering =   91, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0092[] = {
+  { .steering =   92, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0093[] = {
+  { .steering =   93, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0094[] = {
+  { .steering =   94, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0095[] = {
+  { .steering =   95, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0096[] = {
+  { .steering =   96, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0097[] = {
+  { .steering =   97, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0098[] = {
+  { .steering =   98, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0099[] = {
+  { .steering =   99, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0100[] = {
+  { .steering =  100, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0101[] = {
+  { .steering =  101, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0102[] = {
+  { .steering =  102, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0103[] = {
+  { .steering =  103, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0104[] = {
+  { .steering =  104, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0105[] = {
+  { .steering =  105, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0106[] = {
+  { .steering =  106, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0107[] = {
+  { .steering =  107, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0108[] = {
+  { .steering =  108, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0109[] = {
+  { .steering =  109, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0110[] = {
+  { .steering =  110, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0111[] = {
+  { .steering =  111, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0112[] = {
+  { .steering =  112, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0113[] = {
+  { .steering =  113, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0114[] = {
+  { .steering =  114, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0115[] = {
+  { .steering =  115, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0116[] = {
+  { .steering =  116, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0117[] = {
+  { .steering =  117, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0118[] = {
+  { .steering =  118, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0119[] = {
+  { .steering =  119, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0120[] = {
+  { .steering =  120, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0121[] = {
+  { .steering =  121, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0122[] = {
+  { .steering =  122, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0123[] = {
+  { .steering =  123, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0124[] = {
+  { .steering =  124, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0125[] = {
+  { .steering =  125, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0126[] = {
+  { .steering =  126, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0127[] = {
+  { .steering =  127, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0128[] = {
+  { .steering =  128, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0129[] = {
+  { .steering =  129, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0130[] = {
+  { .steering =  130, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0131[] = {
+  { .steering =  131, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0132[] = {
+  { .steering =  132, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0133[] = {
+  { .steering =  133, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0134[] = {
+  { .steering =  134, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0135[] = {
+  { .steering =  135, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0136[] = {
+  { .steering =  136, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0137[] = {
+  { .steering =  137, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0138[] = {
+  { .steering =  138, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0139[] = {
+  { .steering =  139, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0140[] = {
+  { .steering =  140, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0141[] = {
+  { .steering =  141, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0142[] = {
+  { .steering =  142, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0143[] = {
+  { .steering =  143, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0144[] = {
+  { .steering =  144, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0145[] = {
+  { .steering =  145, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0146[] = {
+  { .steering =  146, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0147[] = {
+  { .steering =  147, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0148[] = {
+  { .steering =  148, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0149[] = {
+  { .steering =  149, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0150[] = {
+  { .steering =  150, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0151[] = {
+  { .steering =  151, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0152[] = {
+  { .steering =  152, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0153[] = {
+  { .steering =  153, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0154[] = {
+  { .steering =  154, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0155[] = {
+  { .steering =  155, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0156[] = {
+  { .steering =  156, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0157[] = {
+  { .steering =  157, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0158[] = {
+  { .steering =  158, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0159[] = {
+  { .steering =  159, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0160[] = {
+  { .steering =  160, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0161[] = {
+  { .steering =  161, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0162[] = {
+  { .steering =  162, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0163[] = {
+  { .steering =  163, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0164[] = {
+  { .steering =  164, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0165[] = {
+  { .steering =  165, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0166[] = {
+  { .steering =  166, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0167[] = {
+  { .steering =  167, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0168[] = {
+  { .steering =  168, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0169[] = {
+  { .steering =  169, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0170[] = {
+  { .steering =  170, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0171[] = {
+  { .steering =  171, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0172[] = {
+  { .steering =  172, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0173[] = {
+  { .steering =  173, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0174[] = {
+  { .steering =  174, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0175[] = {
+  { .steering =  175, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0176[] = {
+  { .steering =  176, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0177[] = {
+  { .steering =  177, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0178[] = {
+  { .steering =  178, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0179[] = {
+  { .steering =  179, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0180[] = {
+  { .steering =  180, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0181[] = {
+  { .steering =  181, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0182[] = {
+  { .steering =  182, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0183[] = {
+  { .steering =  183, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0184[] = {
+  { .steering =  184, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0185[] = {
+  { .steering =  185, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0186[] = {
+  { .steering =  186, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0187[] = {
+  { .steering =  187, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0188[] = {
+  { .steering =  188, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0189[] = {
+  { .steering =  189, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0190[] = {
+  { .steering =  190, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0191[] = {
+  { .steering =  191, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0192[] = {
+  { .steering =  192, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0193[] = {
+  { .steering =  193, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0194[] = {
+  { .steering =  194, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0195[] = {
+  { .steering =  195, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0196[] = {
+  { .steering =  196, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0197[] = {
+  { .steering =  197, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0198[] = {
+  { .steering =  198, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0199[] = {
+  { .steering =  199, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0200[] = {
+  { .steering =  200, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0201[] = {
+  { .steering =  201, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0202[] = {
+  { .steering =  202, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0203[] = {
+  { .steering =  203, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0204[] = {
+  { .steering =  204, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0205[] = {
+  { .steering =  205, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0206[] = {
+  { .steering =  206, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0207[] = {
+  { .steering =  207, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0208[] = {
+  { .steering =  208, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0209[] = {
+  { .steering =  209, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0210[] = {
+  { .steering =  210, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0211[] = {
+  { .steering =  211, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0212[] = {
+  { .steering =  212, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0213[] = {
+  { .steering =  213, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0214[] = {
+  { .steering =  214, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0215[] = {
+  { .steering =  215, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0216[] = {
+  { .steering =  216, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0217[] = {
+  { .steering =  217, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0218[] = {
+  { .steering =  218, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0219[] = {
+  { .steering =  219, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0220[] = {
+  { .steering =  220, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0221[] = {
+  { .steering =  221, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0222[] = {
+  { .steering =  222, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .stack_it =   -1 },
+};
+
+static struct steering_rule rule_kv3_v2_0223[] = {
+  { .steering =  223, .jump_target =   -1, .stack_it =   -1 },
+  { .steering =   -1, .jump_target =   -1, .st