diff --git a/generator/make_unused_opcodes.py b/generator/make_unused_opcodes.py
new file mode 100644
index 0000000000000000000000000000000000000000..b3132cb51c49693b5b792b46a4c5c64171f0e194
--- /dev/null
+++ b/generator/make_unused_opcodes.py
@@ -0,0 +1,1079 @@
+from disasm_to_iclass import lookup_table
+
+all_opcodes = set(lookup_table.keys()) 
+used_opcodes = set(["adcb", "adcl", "adcq"
+                  , "adcw"
+                  , "addb"
+                  , "addl"
+                  , "addpd"
+                  , "addps"
+                  , "addq"
+                  , "addsd"
+                  , "addss"
+                  , "addsubpd"
+                  , "addsubps"
+                  , "addw"
+                  , "andb"
+                  , "andl"
+                  , "andnl"
+                  , "andnpd"
+                  , "andnps"
+                  , "andnq"
+                  , "andpd"
+                  , "andps"
+                  , "andq"
+                  , "andw"
+                  , "bextrl"
+                  , "bextrq"
+                  , "blendpd"
+                  , "blendps"
+                  , "blendvpd"
+                  , "blendvps"
+                  , "blsil"
+                  , "blsiq"
+                  , "blsmskl"
+                  , "blsmskq"
+                  , "blsrl"
+                  , "blsrq"
+                  , "bswap"
+                  , "btcl"
+                  , "btcq"
+                  , "btcw"
+                  , "btl"
+                  , "btq"
+                  , "btrl"
+                  , "btrq"
+                  , "btrw"
+                  , "btsl"
+                  , "btsq"
+                  , "btsw"
+                  , "btw"
+                  , "bzhil"
+                  , "bzhiq"
+                  , "cbtw"
+                  , "clc"
+                  , "cltd"
+                  , "cltq"
+                  , "cmc"
+                  , "cmovael"
+                  , "cmovaeq"
+                  , "cmovaew"
+                  , "cmoval"
+                  , "cmovaq"
+                  , "cmovaw"
+                  , "cmovbel"
+                  , "cmovbeq"
+                  , "cmovbew"
+                  , "cmovbe"
+                  , "cmovbl"
+                  , "cmovbq"
+                  , "cmovbw"
+                  , "cmovcl"
+                  , "cmovcq"
+                  , "cmovcw"
+                  , "cmovc"
+                  , "cmovel"
+                  , "cmoveq"
+                  , "cmovew"
+                  , "cmovgel"
+                  , "cmovgeq"
+                  , "cmovgew"
+                  , "cmovge"
+                  , "cmovgl"
+                  , "cmovgq"
+                  , "cmovgw"
+                  , "cmovlel"
+                  , "cmovleq"
+                  , "cmovlew"
+                  , "cmovll"
+                  , "cmovlq"
+                  , "cmovlw"
+                  , "cmovnael"
+                  , "cmovnaeq"
+                  , "cmovnaew"
+                  , "cmovnal"
+                  , "cmovnaq"
+                  , "cmovnaw"
+                  , "cmovnbel"
+                  , "cmovnbeq"
+                  , "cmovnbew"
+                  , "cmovnbl"
+                  , "cmovnbq"
+                  , "cmovnbw"
+                  , "cmovncl"
+                  , "cmovncq"
+                  , "cmovncw"
+                  , "cmovnel"
+                  , "cmovne"
+                  , "cmovneq"
+                  , "cmovnew"
+                  , "cmovngel"
+                  , "cmovngeq"
+                  , "cmovngew"
+                  , "cmovngl"
+                  , "cmovngq"
+                  , "cmovngw"
+                  , "cmovnlel"
+                  , "cmovnleq"
+                  , "cmovnlew"
+                  , "cmovnll"
+                  , "cmovnlq"
+                  , "cmovnlw"
+                  , "cmovnol"
+                  , "cmovnoq"
+                  , "cmovnow"
+                  , "cmovnpl"
+                  , "cmovnpq"
+                  , "cmovnpw"
+                  , "cmovnsl"
+                  , "cmovnsq"
+                  , "cmovnsw"
+                  , "cmovnzl"
+                  , "cmovnzq"
+                  , "cmovnzw"
+                  , "cmovol"
+                  , "cmovoq"
+                  , "cmovow"
+                  , "cmovpel"
+                  , "cmovpeq"
+                  , "cmovpew"
+                  , "cmovpl"
+                  , "cmovpol"
+                  , "cmovpoq"
+                  , "cmovpow"
+                  , "cmovpq"
+                  , "cmovpw"
+                  , "cmovsl"
+                  , "cmovsq"
+                  , "cmovsw"
+                  , "cmovzl"
+                  , "cmovzq"
+                  , "cmovzw"
+                  , "cmpb"
+                  , "cmpl"
+                  , "cmppd"
+                  , "cmpps"
+                  , "cmpq"
+                  , "cmpsd"
+                  , "cmpss"
+                  , "cmpw"
+                  , "cmpxchg16b"
+                  , "cmpxchg8b"
+                  , "cmpxchgb"
+                  , "cmpxchgl"
+                  , "cmpxchgq"
+                  , "cmpxchgw"
+                  , "comisd"
+                  , "comiss"
+                  , "cqto"
+                  , "cvtdq2pd"
+                  , "cvtdq2ps"
+                  , "cvtpd2dq"
+                  , "cvtpd2ps"
+                  , "cvtpi2pd"
+                  , "cvtpi2ps"
+                  , "cvtps2dq"
+                  , "cvtps2pd"
+                  , "cvtsd2sil"
+                  , "cvtsd2siq"
+                  , "cvtsd2ss"
+                  , "cvtsi2sdl"
+                  , "cvtsi2sdq"
+                  , "cvtsi2ssl"
+                  , "cvtsi2ssq"
+                  , "cvtss2sd"
+                  , "cvtss2sil"
+                  , "cvtss2siq"
+                  , "cvttpd2dq"
+                  , "cvttps2dq"
+                  , "cvttsd2sil"
+                  , "cvttsd2siq"
+                  , "cvttss2sil"
+                  , "cvttss2siq"
+                  , "cwtd"
+                  , "cwtl"
+                  , "decb"
+                  , "decl"
+                  , "decq"
+                  , "decw"
+                  , "divb"
+                  , "divl"
+                  , "divpd"
+                  , "divps"
+                  , "divq"
+                  , "divsd"
+                  , "divss"
+                  , "divw"
+                  , "dppd"
+                  , "dpps"
+                  , "extractps"
+                  , "haddpd"
+                  , "haddps"
+                  , "hsubpd"
+                  , "hsubps"
+                  , "idivb"
+                  , "idivl"
+                  , "idivq"
+                  , "idivw"
+                  , "imulb"
+                  , "imull"
+                  , "imulq"
+                  , "imulw"
+                  , "incb"
+                  , "incl"
+                  , "incq"
+                  , "incw"
+                  , "insertps"
+                  , "lddqu"
+                  , "leal"
+                  , "leaq"
+                  , "leaw"
+                  , "lzcntl"
+                  , "lzcntq"
+                  , "lzcntw"
+                  , "maxpd"
+                  , "maxps"
+                  , "maxsd"
+                  , "maxss"
+                  , "minpd"
+                  , "minps"
+                  , "minsd"
+                  , "minss"
+                  , "movapd"
+                  , "movaps"
+                  , "movb"
+                  , "movbel"
+                  , "movbeq"
+                  , "movbew"
+                  , "movbe"
+                  , "movd"
+                  , "movddup"
+                  , "movdqa"
+                  , "movdqu"
+                  , "movhlps"
+                  , "movhpd"
+                  , "movhps"
+                  , "movl"
+                  , "movlhps"
+                  , "movlpd"
+                  , "movlps"
+                  , "movmskpd"
+                  , "movmskps"
+                  , "movntdq"
+                  , "movntdqa"
+                  , "movnti"
+                  , "movntpd"
+                  , "movntps"
+                  , "movq"
+                  , "movsbl"
+                  , "movsbq"
+                  , "movsbw"
+                  , "movsd"
+                  , "movshdup"
+                  , "movsldup"
+                  , "movslq"
+                  , "movss"
+                  , "movswl"
+                  , "movswq"
+                  , "movupd"
+                  , "movups"
+                  , "movw"
+                  , "movzbl"
+                  , "movzbq"
+                  , "movzbw"
+                  , "movzwl"
+                  , "movzwq"
+                  , "mpsadbw"
+                  , "mulb"
+                  , "mull"
+                  , "mulpd"
+                  , "mulps"
+                  , "mulq"
+                  , "mulsd"
+                  , "mulss"
+                  , "mulw"
+                  , "mulxl"
+                  , "mulxq"
+                  , "mulx"
+                  , "negb"
+                  , "negl"
+                  , "negq"
+                  , "negw"
+                  , "nop"
+                  , "nopl"
+                  , "nopw"
+                  , "notb"
+                  , "notl"
+                  , "notq"
+                  , "notw"
+                  , "orb"
+                  , "orl"
+                  , "orpd"
+                  , "orps"
+                  , "orq"
+                  , "orw"
+                  , "pabsb"
+                  , "pabsd"
+                  , "pabsw"
+                  , "packssdw"
+                  , "packsswb"
+                  , "packusdw"
+                  , "packuswb"
+                  , "paddb"
+                  , "paddd"
+                  , "paddq"
+                  , "paddsb"
+                  , "paddsw"
+                  , "paddusb"
+                  , "paddusw"
+                  , "paddw"
+                  , "palignr"
+                  , "pand"
+                  , "pandn"
+                  , "pavgb"
+                  , "pavgw"
+                  , "pblendvb"
+                  , "pblendw"
+                  , "pclmulqdq"
+                  , "pcmpeqb"
+                  , "pcmpeqd"
+                  , "pcmpeqq"
+                  , "pcmpeqw"
+                  , "pcmpestri"
+                  , "pcmpestrm"
+                  , "pcmpgtb"
+                  , "pcmpgtd"
+                  , "pcmpgtq"
+                  , "pcmpgtw"
+                  , "pcmpistri"
+                  , "pcmpistrm"
+                  , "pdepl"
+                  , "pdepq"
+                  , "pextl"
+                  , "pextq"
+                  , "pextrb"
+                  , "pextrd"
+                  , "pextrq"
+                  , "pextrw"
+                  , "phaddd"
+                  , "phaddsw"
+                  , "phaddw"
+                  , "phminposuw"
+                  , "phsubd"
+                  , "phsubsw"
+                  , "phsubw"
+                  , "pinsrb"
+                  , "pinsrd"
+                  , "pinsrw"
+                  , "pmaddubsw"
+                  , "pmaddwd"
+                  , "pmaxsb"
+                  , "pmaxsd"
+                  , "pmaxsw"
+                  , "pmaxub"
+                  , "pmaxud"
+                  , "pmaxuw"
+                  , "pminsb"
+                  , "pminsd"
+                  , "pminsw"
+                  , "pminub"
+                  , "pminud"
+                  , "pminuw"
+                  , "pmovmskb"
+                  , "pmovsxbd"
+                  , "pmovsxbq"
+                  , "pmovsxbw"
+                  , "pmovsxdq"
+                  , "pmovsxwd"
+                  , "pmovsxwq"
+                  , "pmovzxbd"
+                  , "pmovzxbq"
+                  , "pmovzxbw"
+                  , "pmovzxdq"
+                  , "pmovzxwd"
+                  , "pmovzxwq"
+                  , "pmuldq"
+                  , "pmulhrsw"
+                  , "pmulhuw"
+                  , "pmulhw"
+                  , "pmulld"
+                  , "pmullw"
+                  , "pmuludq"
+                  , "popcntl"
+                  , "popcntq"
+                  , "popcntw"
+                  , "popq"
+                  , "popw"
+                  , "por"
+                  , "psadbw"
+                  , "pshufb"
+                  , "pshufd"
+                  , "pshufhw"
+                  , "pshuflw"
+                  , "psignb"
+                  , "psignd"
+                  , "psignw"
+                  , "pslld"
+                  , "pslldq"
+                  , "psllq"
+                  , "psllw"
+                  , "psrad"
+                  , "psraw"
+                  , "psrld"
+                  , "psrldq"
+                  , "psrlq"
+                  , "psrlw"
+                  , "psubb"
+                  , "psubd"
+                  , "psubq"
+                  , "psubsb"
+                  , "psubsw"
+                  , "psubusb"
+                  , "psubusw"
+                  , "psubw"
+                  , "ptest"
+                  , "punpckhbw"
+                  , "punpckhdq"
+                  , "punpckhqdq"
+                  , "punpckhwd"
+                  , "punpcklbw"
+                  , "punpckldq"
+                  , "punpcklqdq"
+                  , "punpcklwd"
+                  , "pushq"
+                  , "pushw"
+                  , "pxor"
+                  , "rclb"
+                  , "rcll"
+                  , "rclq"
+                  , "rclw"
+                  , "rcpps"
+                  , "rcpss"
+                  , "rcrb"
+                  , "rcrl"
+                  , "rcrq"
+                  , "rcrw"
+                  , "rolb"
+                  , "roll"
+                  , "rolq"
+                  , "rolw"
+                  , "rorb"
+                  , "rorl"
+                  , "rorq"
+                  , "rorw"
+                  , "rorxl"
+                  , "rorxq"
+                  , "rorx"
+                  , "roundpd"
+                  , "roundps"
+                  , "roundsd"
+                  , "roundss"
+                  , "rsqrtps"
+                  , "rsqrtss"
+                  , "salb"
+                  , "sall"
+                  , "salq"
+                  , "salw"
+                  , "sarb"
+                  , "sarl"
+                  , "sarq"
+                  , "sarw"
+                  , "sarxl"
+                  , "sarxq"
+                  , "sbbb"
+                  , "sbbl"
+                  , "sbbq"
+                  , "sbbw"
+                  , "seta"
+                  , "setae"
+                  , "setb"
+                  , "setbe"
+                  , "setc"
+                  , "sete"
+                  , "setg"
+                  , "setge"
+                  , "setl"
+                  , "setle"
+                  , "setna"
+                  , "setnae"
+                  , "setnb"
+                  , "setnbe"
+                  , "setnc"
+                  , "setne"
+                  , "setng"
+                  , "setnge"
+                  , "setnl"
+                  , "setnle"
+                  , "setno"
+                  , "setnp"
+                  , "setns"
+                  , "setnz"
+                  , "seto"
+                  , "setp"
+                  , "setpe"
+                  , "setpo"
+                  , "sets"
+                  , "setz"
+                  , "shlb"
+                  , "shll"
+                  , "shlq"
+                  , "shlw"
+                  , "shlxl"
+                  , "shlxq"
+                  , "shrb"
+                  , "shrl"
+                  , "shrq"
+                  , "shrw"
+                  , "shrxl"
+                  , "shrxq"
+                  , "shufpd"
+                  , "shufps"
+                  , "sqrtpd"
+                  , "sqrtps"
+                  , "sqrtsd"
+                  , "sqrtss"
+                  , "stc"
+                  , "subb"
+                  , "subl"
+                  , "subpd"
+                  , "subps"
+                  , "subq"
+                  , "subsd"
+                  , "subss"
+                  , "subw"
+                  , "testb"
+                  , "testl"
+                  , "testq"
+                  , "testw"
+                  , "tzcntl"
+                  , "tzcntq"
+                  , "tzcntw"
+                  , "ucomisd"
+                  , "ucomiss"
+                  , "unpckhpd"
+                  , "unpckhps"
+                  , "unpcklpd"
+                  , "unpcklps"
+                  , "vaddpd"
+                  , "vaddps"
+                  , "vaddsd"
+                  , "vaddss"
+                  , "vaddsubpd"
+                  , "vaddsubps"
+                  , "vandnpd"
+                  , "vandnps"
+                  , "vandpd"
+                  , "vandps"
+                  , "vblendpd"
+                  , "vblendps"
+                  , "vblendvpd"
+                  , "vblendvps"
+                  , "vbroadcastf128"
+                  , "vbroadcastsd"
+                  , "vbroadcastss"
+                  , "vcmppd"
+                  , "vcmpps"
+                  , "vcmpsd"
+                  , "vcmpss"
+                  , "vcomisd"
+                  , "vcomiss"
+                  , "vcvtdq2pd"
+                  , "vcvtdq2ps"
+                  , "vcvtpd2dq"
+                  , "vcvtpd2dqx"
+                  , "vcvtpd2ps"
+                  , "vcvtph2ps"
+                  , "vcvtps2dq"
+                  , "vcvtps2pd"
+                  , "vcvtps2ph"
+                  , "vcvtsd2sil"
+                  , "vcvtsd2siq"
+                  , "vcvtsd2ss"
+                  , "vcvtsi2sdl"
+                  , "vcvtsi2sdq"
+                  , "vcvtsi2ssl"
+                  , "vcvtsi2ssq"
+                  , "vcvtsi2ss"
+                  , "vcvtss2sd"
+                  , "vcvtss2sil"
+                  , "vcvtss2siq"
+                  , "vcvttpd2dq"
+                  , "vcvttps2dq"
+                  , "vcvttsd2sil"
+                  , "vcvttsd2siq"
+                  , "vcvttsd2si"
+                  , "vcvttss2sil"
+                  , "vcvttss2siq"
+                  , "vcvttss2si"
+                  , "vdivpd"
+                  , "vdivps"
+                  , "vdivsd"
+                  , "vdivss"
+                  , "vdppd"
+                  , "vdpps"
+                  , "vextractf128"
+                  , "vextracti128"
+                  , "vextractps"
+                  , "vfmadd132pd"
+                  , "vfmadd132ps"
+                  , "vfmadd132sd"
+                  , "vfmadd132ss"
+                  , "vfmadd213pd"
+                  , "vfmadd213ps"
+                  , "vfmadd213sd"
+                  , "vfmadd213ss"
+                  , "vfmadd231pd"
+                  , "vfmadd231ps"
+                  , "vfmadd231sd"
+                  , "vfmadd231ss"
+                  , "vfmaddsub132pd"
+                  , "vfmaddsub132ps"
+                  , "vfmaddsub213pd"
+                  , "vfmaddsub213ps"
+                  , "vfmaddsub231pd"
+                  , "vfmaddsub231ps"
+                  , "vfmsub132pd"
+                  , "vfmsub132ps"
+                  , "vfmsub132sd"
+                  , "vfmsub132ss"
+                  , "vfmsub213pd"
+                  , "vfmsub213ps"
+                  , "vfmsub213sd"
+                  , "vfmsub213ss"
+                  , "vfmsub231pd"
+                  , "vfmsub231ps"
+                  , "vfmsub231sd"
+                  , "vfmsub231ss"
+                  , "vfmsubadd132pd"
+                  , "vfmsubadd132ps"
+                  , "vfmsubadd213pd"
+                  , "vfmsubadd213ps"
+                  , "vfmsubadd231pd"
+                  , "vfmsubadd231ps"
+                  , "vfnmadd132pd"
+                  , "vfnmadd132ps"
+                  , "vfnmadd132sd"
+                  , "vfnmadd132ss"
+                  , "vfnmadd213pd"
+                  , "vfnmadd213ps"
+                  , "vfnmadd213sd"
+                  , "vfnmadd213ss"
+                  , "vfnmadd231pd"
+                  , "vfnmadd231ps"
+                  , "vfnmadd231sd"
+                  , "vfnmadd231ss"
+                  , "vfnmsub132pd"
+                  , "vfnmsub132ps"
+                  , "vfnmsub132sd"
+                  , "vfnmsub132ss"
+                  , "vfnmsub213pd"
+                  , "vfnmsub213ps"
+                  , "vfnmsub213sd"
+                  , "vfnmsub213ss"
+                  , "vfnmsub231pd"
+                  , "vfnmsub231ps"
+                  , "vfnmsub231sd"
+                  , "vfnmsub231ss"
+                  , "vhaddpd"
+                  , "vhaddps"
+                  , "vhsubpd"
+                  , "vhsubps"
+                  , "vinsertf128"
+                  , "vinserti128"
+                  , "vinsertps"
+                  , "vlddqu"
+                  , "vmaskmovpd"
+                  , "vmaskmovps"
+                  , "vmaxpd"
+                  , "vmaxps"
+                  , "vmaxsd"
+                  , "vmaxss"
+                  , "vminpd"
+                  , "vminps"
+                  , "vminsd"
+                  , "vminss"
+                  , "vmovapd"
+                  , "vmovaps"
+                  , "vmovd"
+                  , "vmovddup"
+                  , "vmovdqa"
+                  , "vmovdqu"
+                  , "vmovhlps"
+                  , "vmovhpd"
+                  , "vmovhps"
+                  , "vmovlhps"
+                  , "vmovlpd"
+                  , "vmovlps"
+                  , "vmovmskpd"
+                  , "vmovmskps"
+                  , "vmovntdqa"
+                  , "vmovntpd"
+                  , "vmovntps"
+                  , "vmovq"
+                  , "vmovsd"
+                  , "vmovshdup"
+                  , "vmovsldup"
+                  , "vmovss"
+                  , "vmovupd"
+                  , "vmovups"
+                  , "vmpsadbw"
+                  , "vmulpd"
+                  , "vmulps"
+                  , "vmulsd"
+                  , "vmulss"
+                  , "vorpd"
+                  , "vorps"
+                  , "vpabsb"
+                  , "vpabsd"
+                  , "vpabsw"
+                  , "vpackssdw"
+                  , "vpacksswb"
+                  , "vpackusdw"
+                  , "vpackuswb"
+                  , "vpaddb"
+                  , "vpaddd"
+                  , "vpaddq"
+                  , "vpaddsb"
+                  , "vpaddsw"
+                  , "vpaddusb"
+                  , "vpaddusw"
+                  , "vpaddw"
+                  , "vpalignr"
+                  , "vpand"
+                  , "vpandn"
+                  , "vpavgb"
+                  , "vpavgw"
+                  , "vpblendd"
+                  , "vpblendvb"
+                  , "vpblendw"
+                  , "vpbroadcastb"
+                  , "vpbroadcastd"
+                  , "vpbroadcasti128"
+                  , "vpbroadcastq"
+                  , "vpbroadcastw"
+                  , "vpclmulqdq"
+                  , "vpcmpeqb"
+                  , "vpcmpeqd"
+                  , "vpcmpeqq"
+                  , "vpcmpeqw"
+                  , "vpcmpestri"
+                  , "vpcmpestrm"
+                  , "vpcmpgtb"
+                  , "vpcmpgtd"
+                  , "vpcmpgtq"
+                  , "vpcmpgtw"
+                  , "vpcmpistri"
+                  , "vpcmpistrm"
+                  , "vperm2f128"
+                  , "vperm2i128"
+                  , "vpermd"
+                  , "vpermilpd"
+                  , "vpermilps"
+                  , "vpermpd"
+                  , "vpermps"
+                  , "vpermq"
+                  , "vpextrb"
+                  , "vpextrd"
+                  , "vpextrq"
+                  , "vpextrw"
+                  , "vphaddd"
+                  , "vphaddsw"
+                  , "vphaddw"
+                  , "vphminposuw"
+                  , "vphsubd"
+                  , "vphsubsw"
+                  , "vphsubw"
+                  , "vpinsrb"
+                  , "vpinsrd"
+                  , "vpinsrq"
+                  , "vpinsrw"
+                  , "vpmaddubsw"
+                  , "vpmaddwd"
+                  , "vpmaskmovd"
+                  , "vpmaskmovq"
+                  , "vpmaxsb"
+                  , "vpmaxsd"
+                  , "vpmaxsw"
+                  , "vpmaxub"
+                  , "vpmaxud"
+                  , "vpmaxuw"
+                  , "vpminsb"
+                  , "vpminsd"
+                  , "vpminsw"
+                  , "vpminub"
+                  , "vpminud"
+                  , "vpminuw"
+                  , "vpmovmskb"
+                  , "vpmovsxbd"
+                  , "vpmovsxbq"
+                  , "vpmovsxbw"
+                  , "vpmovsxdq"
+                  , "vpmovsxwd"
+                  , "vpmovsxwq"
+                  , "vpmovzxbd"
+                  , "vpmovzxbq"
+                  , "vpmovzxbw"
+                  , "vpmovzxdq"
+                  , "vpmovzxwd"
+                  , "vpmovzxwq"
+                  , "vpmuldq"
+                  , "vpmulhrsw"
+                  , "vpmulhuw"
+                  , "vpmulhw"
+                  , "vpmulld"
+                  , "vpmullw"
+                  , "vpmuludq"
+                  , "vpor"
+                  , "vpsadbw"
+                  , "vpshufb"
+                  , "vpshufd"
+                  , "vpshufhw"
+                  , "vpshuflw"
+                  , "vpsignb"
+                  , "vpsignd"
+                  , "vpsignw"
+                  , "vpslld"
+                  , "vpslldq"
+                  , "vpsllq"
+                  , "vpsllvd"
+                  , "vpsllvq"
+                  , "vpsllw"
+                  , "vpsrad"
+                  , "vpsravd"
+                  , "vpsraw"
+                  , "vpsrld"
+                  , "vpsrldq"
+                  , "vpsrlq"
+                  , "vpsrlvd"
+                  , "vpsrlvq"
+                  , "vpsrlw"
+                  , "vpsubb"
+                  , "vpsubd"
+                  , "vpsubq"
+                  , "vpsubsb"
+                  , "vpsubsw"
+                  , "vpsubusb"
+                  , "vpsubusw"
+                  , "vpsubw"
+                  , "vptest"
+                  , "vpunpckhbw"
+                  , "vpunpckhdq"
+                  , "vpunpckhqdq"
+                  , "vpunpckhwd"
+                  , "vpunpcklbw"
+                  , "vpunpckldq"
+                  , "vpunpcklqdq"
+                  , "vpunpcklwd"
+                  , "vpvmpgtq"
+                  , "vpxor"
+                  , "vrcpps"
+                  , "vrcpss"
+                  , "vroundpd"
+                  , "vroundps"
+                  , "vroundsd"
+                  , "vroundss"
+                  , "vrsqrtps"
+                  , "vrsqrtss"
+                  , "vshufpd"
+                  , "vshufps"
+                  , "vsqrtpd"
+                  , "vsqrtps"
+                  , "vsqrtsd"
+                  , "vsqrtss"
+                  , "vsubpd"
+                  , "vsubps"
+                  , "vsubsd"
+                  , "vsubss"
+                  , "vtestpd"
+                  , "vtestps"
+                  , "vucomisd"
+                  , "vucomiss"
+                  , "vunpckhpd"
+                  , "vunpckhps"
+                  , "vunpcklpd"
+                  , "vunpcklps"
+                  , "vxorpd"
+                  , "vxorps"
+                  , "vzeroall"
+                  , "vzeroupper"
+                  , "xaddb"
+                  , "xaddl"
+                  , "xaddq"
+                  , "xaddw"
+                  , "xchgb"
+                  , "xchgl"
+                  , "xchgq"
+                  , "xchgw"
+                  , "xorb"
+                  , "xorl"
+                  , "xorpd"
+                  , "xorps"
+                  , "xorq"
+                  , "xorw"
+                  , "call"
+                  , "ret"
+                  , "leave"
+                  , "jmp"
+                  , "je"
+                  , "jne"
+                  , "jns"
+                  , "js"
+                  , "jnc"
+                  , "jb"
+                  , "jae"
+                  , "jnb"
+                  , "jle"
+                  , "jg"
+                  , "jge"
+                  , "jl"
+                  , "jbe"
+                  , "ja"
+                  , "jp"
+                  , "jc"
+                  , "jecxz"
+                  , "jna"
+                  , "jnae"
+                  , "jnbe"
+                  , "jng"
+                  , "jnge"
+                  , "jnl"
+                  , "jnle"
+                  , "jno"
+                  , "jnp"
+                  , "jnz"
+                  , "jo"
+                  , "jpe"
+                  , "jpo"
+                  , "jrcxz"
+                  , "jz"
+                  , "movabsq"
+                  , "vcvtsi2sd"
+                  , "sarx"
+                  , "shlx"
+                  , "shrx"
+                  , "cmovs"
+                  , "cmovns"
+                  , "cmovge"
+                  , "cmove"
+                  , "cmovle"
+                  , "cmovbe"
+                  , "ud2"
+                  , "bsfl"
+                  , "bsfq"
+                  , "bsfw"
+                  , "bsrw"
+                  , "bsrl"
+                  , "bsrq"
+                  , "shldq"
+                  , "shldl"
+                  , "shldw"
+                  , "shrdq"
+                  , "shrdl"
+                  , "shrdw"
+                  , "pcmpestri"
+                  , "pcmpestrm"
+                  , "pcmpistri"
+                  , "pcmpistrm"
+                  , "loop"
+                  , "loope"
+                  , "loopne"
+                  , "loopz"
+                  , "loopnz"
+                  , "scasb"
+                  , "repz scasb"
+                  , "repe scasb"
+                  , "repnz scasb"
+                  , "repne scasb"
+                  , "scasw"
+                  , "repz scasw"
+                  , "repe scasw"
+                  , "repnz scasw"
+                  , "repne scasw"
+                  , "scasl"
+                  , "repz scasl"
+                  , "repe scasl"
+                  , "repnz scasl"
+                  , "repne scasl"
+                  , "scasq"
+                  , "repz scasq"
+                  , "repe scasq"
+                  , "repnz scasq"
+                  , "repne scasq"
+                  , "std"
+                  , "cld"
+                  , "stosb"
+                  , "rep stosb"
+                  , "stosw"
+                  , "rep stosw"
+                  , "rep stosl"
+                  , "stosl"
+                  , "stosq"
+                  , "rep stosq"
+                  , "cmpsb"
+                  , "repz cmpsb"
+                  , "repe cmpsb"
+                  , "repnz cmpsb"
+                  , "repne cmpsb"
+                  , "cmpsw"
+                  , "repz cmpsw"
+                  , "repe cmpsw"
+                  , "repnz cmpsw"
+                  , "repne cmpsw"
+                  , "cmpsl"
+                  , "repz cmpsl"
+                  , "repe cmpsl"
+                  , "repnz cmpsl"
+                  , "repne cmpsl"
+                  , "cmpsq"
+                  , "repz cmpsq"
+                  , "repe cmpsq"
+                  , "repnz cmpsq"
+                  , "repne cmpsq"
+                  , "lodsb"
+                  , "rep lodsb"
+                  , "lodsw"
+                  , "rep lodsw"
+                  , "lodsl"
+                  , "rep lodsl"
+                  , "lodsq"
+                  , "rep lodsq"
+                  , "movsb"
+                  , "rep movsb"
+                  , "movsw"
+                  , "rep movsw"
+                  , "movsl"
+                  , "rep movsl"
+                  , "movsq"
+                  , "rep movsq"
+                  , "maskmovdqu"
+                  , "vmaskmovdqu"
+                  , "push"
+                  , "pop"
+                  , "mov"
+                  , "sub"
+                  , "dec"
+                  , "cmp"
+                  , "lea"
+                  , "add"
+                  , "inc"
+                  , "nop"
+                  , "retq"
+                  , "callq"
+                  , "jmpq"
+                  , "leaveq"])
+
+
+def remove_prefix(opcode):
+    return opcode[opcode.find(" ") + 1:]
+
+removed_prefixes = set([remove_prefix(opcode) for opcode in used_opcodes])
+
+#assert used_opcodes & all_opcodes == used_opcodes
+print(len(removed_prefixes))
+
+troublesome_opcodes = removed_prefixes - all_opcodes # We have definitions for opcodes we can't ever decode.
+
+print(len(troublesome_opcodes))
+print(troublesome_opcodes)
+
+unused_opcodes = all_opcodes - used_opcodes
diff --git a/semantics-glue.k b/semantics-glue.k
new file mode 100644
index 0000000000000000000000000000000000000000..10af82c3d0e27657ff3ea8eca4d74747e77eea0d
--- /dev/null
+++ b/semantics-glue.k
@@ -0,0 +1,254 @@
+require "x86-syntax.k"
+require "registers.k"
+
+module DISASSEMBLER-TO-SEMANTICS
+  imports DOMAINS
+  imports X86-SYNTAX 
+
+  syntax Register ::= DissassemblerRegisterToSemanticsRegister(K, Bool) [function]
+  syntax Opcode ::= DissassemblerToOpcode(Int, String, String) [function]
+
+  syntax String ::= RegisterToString(K,Bool) [function]
+  rule DisassemblerRegisterToSemanticsRegister(REG_INVALID, _) => %invalid
+  rule DisassemblerRegisterToSemanticsRegister(REG_BND0, _) => %bnd0
+  rule DisassemblerRegisterToSemanticsRegister(REG_BND1, _) => %bnd1
+  rule DisassemblerRegisterToSemanticsRegister(REG_BND2, _) => %bnd2
+  rule DisassemblerRegisterToSemanticsRegister(REG_BND3, _) => %bnd3
+  rule DisassemblerRegisterToSemanticsRegister(REG_CR0, _) => %cr0
+  rule DisassemblerRegisterToSemanticsRegister(REG_CR2, _) => %cr2
+  rule DisassemblerRegisterToSemanticsRegister(REG_CR3, _) => %cr3
+  rule DisassemblerRegisterToSemanticsRegister(REG_CR4, _) => %cr4
+  rule DisassemblerRegisterToSemanticsRegister(REG_CR8, _) => %cr8
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR0, _) => %dr0
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR1, _) => %dr1
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR2, _) => %dr2
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR3, _) => %dr3
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR4, _) => %dr4
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR5, _) => %dr5
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR6, _) => %dr6
+  rule DisassemblerRegisterToSemanticsRegister(REG_DR7, _) => %dr7
+  rule DisassemblerRegisterToSemanticsRegister(REG_FLAGS, _) => %flags
+  rule DisassemblerRegisterToSemanticsRegister(REG_EFLAGS, _) => %eflags
+  rule DisassemblerRegisterToSemanticsRegister(REG_RFLAGS, _) => %rflags
+  rule DisassemblerRegisterToSemanticsRegister(REG_AX, _) => %ax
+  rule DisassemblerRegisterToSemanticsRegister(REG_CX, _) => %cx
+  rule DisassemblerRegisterToSemanticsRegister(REG_DX, _) => %dx
+  rule DisassemblerRegisterToSemanticsRegister(REG_BX, _) => %bx
+  rule DisassemblerRegisterToSemanticsRegister(REG_SP, _) => %sp
+  rule DisassemblerRegisterToSemanticsRegister(REG_BP, _) => %bp
+  rule DisassemblerRegisterToSemanticsRegister(REG_SI, _) => %si
+  rule DisassemblerRegisterToSemanticsRegister(REG_DI, _) => %di
+  rule DisassemblerRegisterToSemanticsRegister(REG_R8W, _) => %r8w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R9W, _) => %r9w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R10W, _) => %r10w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R11W, _) => %r11w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R12W, _) => %r12w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R13W, _) => %r13w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R14W, _) => %r14w
+  rule DisassemblerRegisterToSemanticsRegister(REG_R15W, _) => %r15w
+  rule DisassemblerRegisterToSemanticsRegister(REG_EAX, _) => %eax
+  rule DisassemblerRegisterToSemanticsRegister(REG_ECX, _) => %ecx
+  rule DisassemblerRegisterToSemanticsRegister(REG_EDX, _) => %edx
+  rule DisassemblerRegisterToSemanticsRegister(REG_EBX, _) => %ebx
+  rule DisassemblerRegisterToSemanticsRegister(REG_ESP, _) => %esp
+  rule DisassemblerRegisterToSemanticsRegister(REG_EBP, _) => %ebp
+  rule DisassemblerRegisterToSemanticsRegister(REG_ESI, _) => %esi
+  rule DisassemblerRegisterToSemanticsRegister(REG_EDI, _) => %edi
+  rule DisassemblerRegisterToSemanticsRegister(REG_R8D, _) => %r8d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R9D, _) => %r9d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R10D, _) => %r10d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R11D, _) => %r11d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R12D, _) => %r12d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R13D, _) => %r13d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R14D, _) => %r14d
+  rule DisassemblerRegisterToSemanticsRegister(REG_R15D, _) => %r15d
+  rule DisassemblerRegisterToSemanticsRegister(REG_RAX, _) => %rax
+  rule DisassemblerRegisterToSemanticsRegister(REG_RCX, _) => %rcx
+  rule DisassemblerRegisterToSemanticsRegister(REG_RDX, _) => %rdx
+  rule DisassemblerRegisterToSemanticsRegister(REG_RBX, _) => %rbx
+  rule DisassemblerRegisterToSemanticsRegister(REG_RSP, _) => %rsp
+  rule DisassemblerRegisterToSemanticsRegister(REG_RBP, _) => %rbp
+  rule DisassemblerRegisterToSemanticsRegister(REG_RSI, _) => %rsi
+  rule DisassemblerRegisterToSemanticsRegister(REG_RDI, _) => %rdi
+  rule DisassemblerRegisterToSemanticsRegister(REG_R8, _) => %r8
+  rule DisassemblerRegisterToSemanticsRegister(REG_R9, _) => %r9
+  rule DisassemblerRegisterToSemanticsRegister(REG_R10, _) => %r10
+  rule DisassemblerRegisterToSemanticsRegister(REG_R11, _) => %r11
+  rule DisassemblerRegisterToSemanticsRegister(REG_R12, _) => %r12
+  rule DisassemblerRegisterToSemanticsRegister(REG_R13, _) => %r13
+  rule DisassemblerRegisterToSemanticsRegister(REG_R14, _) => %r14
+  rule DisassemblerRegisterToSemanticsRegister(REG_R15, _) => %r15
+  rule DisassemblerRegisterToSemanticsRegister(REG_AL, _) => %al
+  rule DisassemblerRegisterToSemanticsRegister(REG_CL, _) => %cl
+  rule DisassemblerRegisterToSemanticsRegister(REG_DL, _) => %dl
+  rule DisassemblerRegisterToSemanticsRegister(REG_BL, _) => %bl
+  rule DisassemblerRegisterToSemanticsRegister(REG_SPL, _) => %spl
+  rule DisassemblerRegisterToSemanticsRegister(REG_BPL, _) => %bpl
+  rule DisassemblerRegisterToSemanticsRegister(REG_SIL, _) => %sil
+  rule DisassemblerRegisterToSemanticsRegister(REG_DIL, _) => %dil
+  rule DisassemblerRegisterToSemanticsRegister(REG_R8B, _) => %r8b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R9B, _) => %r9b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R10B, _) => %r10b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R11B, _) => %r11b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R12B, _) => %r12b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R13B, _) => %r13b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R14B, _) => %r14b
+  rule DisassemblerRegisterToSemanticsRegister(REG_R15B, _) => %r15b
+  rule DisassemblerRegisterToSemanticsRegister(REG_AH, _) => %ah
+  rule DisassemblerRegisterToSemanticsRegister(REG_CH, _) => %ch
+  rule DisassemblerRegisterToSemanticsRegister(REG_DH, _) => %dh
+  rule DisassemblerRegisterToSemanticsRegister(REG_BH, _) => %bh
+  rule DisassemblerRegisterToSemanticsRegister(REG_ERROR, _) => %error
+  rule DisassemblerRegisterToSemanticsRegister(REG_RIP, _) => %rip
+  rule DisassemblerRegisterToSemanticsRegister(REG_EIP, _) => %eip
+  rule DisassemblerRegisterToSemanticsRegister(REG_IP, _) => %ip
+  rule DisassemblerRegisterToSemanticsRegister(REG_K0, _) => %k0
+  rule DisassemblerRegisterToSemanticsRegister(REG_K1, _) => %k1
+  rule DisassemblerRegisterToSemanticsRegister(REG_K2, _) => %k2
+  rule DisassemblerRegisterToSemanticsRegister(REG_K3, _) => %k3
+  rule DisassemblerRegisterToSemanticsRegister(REG_K4, _) => %k4
+  rule DisassemblerRegisterToSemanticsRegister(REG_K5, _) => %k5
+  rule DisassemblerRegisterToSemanticsRegister(REG_K6, _) => %k6
+  rule DisassemblerRegisterToSemanticsRegister(REG_K7, _) => %k7
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX0, _) => %mmx0
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX1, _) => %mmx1
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX2, _) => %mmx2
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX3, _) => %mmx3
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX4, _) => %mmx4
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX5, _) => %mmx5
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX6, _) => %mmx6
+  rule DisassemblerRegisterToSemanticsRegister(REG_MMX7, _) => %mmx7
+  rule DisassemblerRegisterToSemanticsRegister(REG_SSP, _) => %ssp
+  rule DisassemblerRegisterToSemanticsRegister(REG_MXCSR, _) => %mxcsr
+  rule DisassemblerRegisterToSemanticsRegister(REG_STACKPUSH, _) => %stackpush
+  rule DisassemblerRegisterToSemanticsRegister(REG_STACKPOP, _) => %stackpop
+  rule DisassemblerRegisterToSemanticsRegister(REG_GDTR, _) => %gdtr
+  rule DisassemblerRegisterToSemanticsRegister(REG_LDTR, _) => %ldtr
+  rule DisassemblerRegisterToSemanticsRegister(REG_IDTR, _) => %idtr
+  rule DisassemblerRegisterToSemanticsRegister(REG_TR, _) => %tr
+  rule DisassemblerRegisterToSemanticsRegister(REG_TSC, _) => %tsc
+  rule DisassemblerRegisterToSemanticsRegister(REG_TSCAUX, _) => %tscaux
+  rule DisassemblerRegisterToSemanticsRegister(REG_MSRS, _) => %msrs
+  rule DisassemblerRegisterToSemanticsRegister(REG_FSBASE, _) => %fsbase
+  rule DisassemblerRegisterToSemanticsRegister(REG_GSBASE, _) => %gsbase
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87CONTROL, _) => %x87control
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87STATUS, _) => %x87status
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87TAG, _) => %x87tag
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87PUSH, _) => %x87push
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87POP, _) => %x87pop
+  rule DisassemblerRegisterToSemanticsRegister(REG_X87POP2, _) => %x87pop2
+  rule DisassemblerRegisterToSemanticsRegister(REG_CS, _) => %cs
+  rule DisassemblerRegisterToSemanticsRegister(REG_DS, _) => %ds
+  rule DisassemblerRegisterToSemanticsRegister(REG_ES, _) => %es
+  rule DisassemblerRegisterToSemanticsRegister(REG_SS, _) => %ss
+  rule DisassemblerRegisterToSemanticsRegister(REG_FS, _) => %fs
+    rule DisassemblerRegisterToSemanticsRegister(REG_GS, _) => %gs
+rule DisassemblerRegisterToSemanticsRegister(REG_ST0, false) => %st(0)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST0, true) => %st
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST1, _) => %st(1)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST2, _) => %st(2)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST3, _) => %st(3)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST4, _) => %st(4)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST5, _) => %st(5)
+    rule DisassemblerRegisterToSemanticsRegister(REG_ST6, _) => %st(6)
+rule DisassemblerRegisterToSemanticsRegister(REG_ST7, _) => %st(7)
+    rule DisassemblerRegisterToSemanticsRegister(REG_XCR0, _) => %xcr0
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM0, _) => %xmm0
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM1, _) => %xmm1
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM2, _) => %xmm2
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM3, _) => %xmm3
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM4, _) => %xmm4
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM5, _) => %xmm5
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM6, _) => %xmm6
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM7, _) => %xmm7
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM8, _) => %xmm8
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM9, _) => %xmm9
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM10, _) => %xmm10
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM11, _) => %xmm11
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM12, _) => %xmm12
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM13, _) => %xmm13
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM14, _) => %xmm14
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM15, _) => %xmm15
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM16, _) => %xmm16
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM17, _) => %xmm17
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM18, _) => %xmm18
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM19, _) => %xmm19
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM20, _) => %xmm20
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM21, _) => %xmm21
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM22, _) => %xmm22
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM23, _) => %xmm23
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM24, _) => %xmm24
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM25, _) => %xmm25
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM26, _) => %xmm26
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM27, _) => %xmm27
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM28, _) => %xmm28
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM29, _) => %xmm29
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM30, _) => %xmm30
+    rule DisassemblerRegisterToSemanticsRegister(REG_XMM31, _) => %xmm31
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM0, _) => %ymm0
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM1, _) => %ymm1
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM2, _) => %ymm2
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM3, _) => %ymm3
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM4, _) => %ymm4
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM5, _) => %ymm5
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM6, _) => %ymm6
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM7, _) => %ymm7
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM8, _) => %ymm8
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM9, _) => %ymm9
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM10, _) => %ymm10
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM11, _) => %ymm11
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM12, _) => %ymm12
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM13, _) => %ymm13
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM14, _) => %ymm14
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM15, _) => %ymm15
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM16, _) => %ymm16
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM17, _) => %ymm17
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM18, _) => %ymm18
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM19, _) => %ymm19
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM20, _) => %ymm20
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM21, _) => %ymm21
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM22, _) => %ymm22
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM23, _) => %ymm23
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM24, _) => %ymm24
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM25, _) => %ymm25
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM26, _) => %ymm26
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM27, _) => %ymm27
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM28, _) => %ymm28
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM29, _) => %ymm29
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM30, _) => %ymm30
+    rule DisassemblerRegisterToSemanticsRegister(REG_YMM31, _) => %ymm31
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM0, _) => %zmm0
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM1, _) => %zmm1
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM2, _) => %zmm2
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM3, _) => %zmm3
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM4, _) => %zmm4
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM5, _) => %zmm5
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM6, _) => %zmm6
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM7, _) => %zmm7
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM8, _) => %zmm8
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM9, _) => %zmm9
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM10, _) => %zmm10
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM11, _) => %zmm11
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM12, _) => %zmm12
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM13, _) => %zmm13
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM14, _) => %zmm14
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM15, _) => %zmm15
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM16, _) => %zmm16
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM17, _) => %zmm17
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM18, _) => %zmm18
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM19, _) => %zmm19
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM20, _) => %zmm20
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM21, _) => %zmm21
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM22, _) => %zmm22
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM23, _) => %zmm23
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM24, _) => %zmm24
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM25, _) => %zmm25
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM26, _) => %zmm26
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM27, _) => %zmm27
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM28, _) => %zmm28
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM29, _) => %zmm29
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM30, _) => %zmm30
+    rule DisassemblerRegisterToSemanticsRegister(REG_ZMM31, _) => %zmm31
+
+
+endmodule