Imported Upstream version 2.1.1 upstream/2.1.1
authorDevon Kearns <dookie@kali.org>
Fri, 14 Mar 2014 16:58:55 +0000 (10:58 -0600)
committerDevon Kearns <dookie@kali.org>
Fri, 14 Mar 2014 16:58:55 +0000 (10:58 -0600)
191 files changed:
.gitignore
COMPILE [deleted file]
COMPILE.TXT [new file with mode: 0644]
CONFIG [deleted file]
ChangeLog [new file with mode: 0644]
HACK [deleted file]
HACK.TXT [new file with mode: 0644]
LICENSE.TXT
MCDisassembler.h
MCInst.c
MCInst.h
MCRegisterInfo.c
Makefile
MathExtras.h
README
RELEASE_NOTES [new file with mode: 0644]
SStream.c
TODO
arch/AArch64/AArch64BaseInfo.c
arch/AArch64/AArch64BaseInfo.h
arch/AArch64/AArch64Disassembler.c
arch/AArch64/AArch64Disassembler.h
arch/AArch64/AArch64GenAsmWriter.inc
arch/AArch64/AArch64GenDisassemblerTables.inc
arch/AArch64/AArch64GenInstrInfo.inc
arch/AArch64/AArch64GenRegisterInfo.inc
arch/AArch64/AArch64GenSubtargetInfo.inc
arch/AArch64/AArch64InstPrinter.c
arch/AArch64/AArch64Mapping.c [new file with mode: 0644]
arch/AArch64/AArch64Mapping.h [new file with mode: 0644]
arch/AArch64/AArch64Module.c [new file with mode: 0644]
arch/AArch64/mapping.c [deleted file]
arch/AArch64/mapping.h [deleted file]
arch/ARM/ARMAddressingModes.h
arch/ARM/ARMDisassembler.c
arch/ARM/ARMGenAsmWriter.inc
arch/ARM/ARMGenDisassemblerTables.inc
arch/ARM/ARMGenInstrInfo.inc
arch/ARM/ARMGenRegisterInfo.inc
arch/ARM/ARMGenSubtargetInfo.inc
arch/ARM/ARMInstPrinter.c
arch/ARM/ARMMapping.c [new file with mode: 0644]
arch/ARM/ARMMapping.h [new file with mode: 0644]
arch/ARM/ARMModule.c [new file with mode: 0644]
arch/ARM/mapping.c [deleted file]
arch/ARM/mapping.h [deleted file]
arch/Mips/MipsDisassembler.c
arch/Mips/MipsGenAsmWriter.inc
arch/Mips/MipsGenDisassemblerTables.inc
arch/Mips/MipsGenInstrInfo.inc
arch/Mips/MipsGenRegisterInfo.inc
arch/Mips/MipsGenSubtargetInfo.inc
arch/Mips/MipsInstPrinter.c
arch/Mips/MipsMapping.c [new file with mode: 0644]
arch/Mips/MipsMapping.h [new file with mode: 0644]
arch/Mips/MipsModule.c [new file with mode: 0644]
arch/Mips/mapping.c [deleted file]
arch/Mips/mapping.h [deleted file]
arch/PowerPC/PPCDisassembler.c [new file with mode: 0644]
arch/PowerPC/PPCDisassembler.h [new file with mode: 0644]
arch/PowerPC/PPCGenAsmWriter.inc [new file with mode: 0644]
arch/PowerPC/PPCGenDisassemblerTables.inc [new file with mode: 0644]
arch/PowerPC/PPCGenInstrInfo.inc [new file with mode: 0644]
arch/PowerPC/PPCGenRegisterInfo.inc [new file with mode: 0644]
arch/PowerPC/PPCGenSubtargetInfo.inc [new file with mode: 0644]
arch/PowerPC/PPCInstPrinter.c [new file with mode: 0644]
arch/PowerPC/PPCInstPrinter.h [new file with mode: 0644]
arch/PowerPC/PPCMapping.c [new file with mode: 0644]
arch/PowerPC/PPCMapping.h [new file with mode: 0644]
arch/PowerPC/PPCModule.c [new file with mode: 0644]
arch/PowerPC/PPCPredicates.h [new file with mode: 0644]
arch/X86/X86ATTInstPrinter.c
arch/X86/X86Disassembler.c
arch/X86/X86Disassembler.h
arch/X86/X86DisassemblerDecoder.c
arch/X86/X86DisassemblerDecoder.h
arch/X86/X86DisassemblerDecoderCommon.h
arch/X86/X86GenAsmWriter.inc
arch/X86/X86GenAsmWriter1.inc
arch/X86/X86GenDisassemblerTables.inc
arch/X86/X86GenInstrInfo.inc
arch/X86/X86GenRegisterInfo.inc
arch/X86/X86InstPrinter.h
arch/X86/X86IntelInstPrinter.c
arch/X86/X86Mapping.c [new file with mode: 0644]
arch/X86/X86Mapping.h [new file with mode: 0644]
arch/X86/X86Module.c [new file with mode: 0644]
arch/X86/mapping.c [deleted file]
arch/X86/mapping.h [deleted file]
bindings/const_generator.py
bindings/java/Makefile
bindings/java/README
bindings/java/Test.java
bindings/java/TestArm.java
bindings/java/TestArm64.java
bindings/java/TestMips.java
bindings/java/TestPpc.java [new file with mode: 0644]
bindings/java/TestX86.java
bindings/java/capstone/Arm.java
bindings/java/capstone/Arm64.java
bindings/java/capstone/Arm_const.java
bindings/java/capstone/Capstone.java
bindings/java/capstone/Mips.java
bindings/java/capstone/Mips_const.java
bindings/java/capstone/Ppc.java [new file with mode: 0644]
bindings/java/capstone/Ppc_const.java [new file with mode: 0644]
bindings/java/capstone/X86.java
bindings/java/capstone/X86_const.java
bindings/java/run.sh
bindings/ocaml/Makefile [new file with mode: 0644]
bindings/ocaml/README [new file with mode: 0644]
bindings/ocaml/arm.ml [new file with mode: 0644]
bindings/ocaml/arm64.ml [new file with mode: 0644]
bindings/ocaml/capstone.ml [new file with mode: 0644]
bindings/ocaml/mips.ml [new file with mode: 0644]
bindings/ocaml/ocaml.c [new file with mode: 0644]
bindings/ocaml/test.ml [new file with mode: 0644]
bindings/ocaml/test_arm.ml [new file with mode: 0644]
bindings/ocaml/test_arm64.ml [new file with mode: 0644]
bindings/ocaml/test_detail.ml [new file with mode: 0644]
bindings/ocaml/test_mips.ml [new file with mode: 0644]
bindings/ocaml/test_x86.ml [new file with mode: 0644]
bindings/ocaml/x86.ml [new file with mode: 0644]
bindings/python/Makefile
bindings/python/README
bindings/python/capstone/.gitignore [deleted file]
bindings/python/capstone/__init__.py
bindings/python/capstone/arm.py
bindings/python/capstone/arm64.py
bindings/python/capstone/arm_const.py
bindings/python/capstone/capstone.py
bindings/python/capstone/mips.py
bindings/python/capstone/mips_const.py
bindings/python/capstone/ppc.py [new file with mode: 0644]
bindings/python/capstone/ppc_const.py [new file with mode: 0644]
bindings/python/capstone/x86.py
bindings/python/capstone/x86_const.py
bindings/python/pyx/README [new file with mode: 0644]
bindings/python/pyx/ccapstone.pxd [new file with mode: 0644]
bindings/python/pyx/ccapstone.pyx [new file with mode: 0644]
bindings/python/setup.py
bindings/python/setup_cython.py [new file with mode: 0644]
bindings/python/test.py
bindings/python/test_arm.py
bindings/python/test_arm64.py
bindings/python/test_detail.py
bindings/python/test_lite.py [new file with mode: 0755]
bindings/python/test_mips.py
bindings/python/test_ppc.py [new file with mode: 0755]
bindings/python/test_x86.py
compile.sh [deleted file]
config.mk [new file with mode: 0644]
cs.c
cs_priv.h
docs/README [new file with mode: 0644]
include/arm.h
include/arm64.h
include/capstone.h
include/mips.h
include/ppc.h [new file with mode: 0644]
include/x86.h
make.sh [new file with mode: 0755]
packages/freebsd/ports/devel/capstone/Makefile [new file with mode: 0644]
packages/freebsd/ports/devel/capstone/distinfo [new file with mode: 0644]
packages/freebsd/ports/devel/capstone/files/patch-Makefile [new file with mode: 0644]
packages/freebsd/ports/devel/capstone/files/patch-tests_Makefile [new file with mode: 0644]
packages/freebsd/ports/devel/capstone/pkg-descr [new file with mode: 0644]
packages/freebsd/ports/devel/capstone/pkg-plist [new file with mode: 0644]
packages/homebrew/README [new file with mode: 0644]
packages/homebrew/capstone.rb [new file with mode: 0644]
packages/homebrew/patch-Makefile-2.1 [new file with mode: 0644]
packages/macports/devel/capstone/Portfile [new file with mode: 0644]
packages/macports/devel/capstone/files/patch-Makefile.diff [new file with mode: 0644]
pkgconfig.mk [new file with mode: 0644]
suite/README [new file with mode: 0644]
suite/benchmark.py [new file with mode: 0755]
suite/compile_all.sh [new file with mode: 0755]
suite/fuzz.py [new file with mode: 0755]
suite/test_all.sh [new file with mode: 0755]
suite/test_c.sh [new file with mode: 0755]
suite/test_python.sh [new file with mode: 0755]
tests/Makefile
tests/test.c
tests/test_arm.c
tests/test_arm64.c
tests/test_detail.c
tests/test_mips.c
tests/test_ppc.c [new file with mode: 0644]
tests/test_x86.c
utils.c
utils.h

index 8e94f00..8496c5e 100644 (file)
 # python
 bindings/python/build/
 *.pyc
+bindings/python/pyx/*.c
+bindings/python/pyx/arm.pyx
+bindings/python/pyx/arm64.pyx
+bindings/python/pyx/arm64_const.pyx
+bindings/python/pyx/arm_const.pyx
+bindings/python/pyx/capstone.pyx
+bindings/python/pyx/mips.pyx
+bindings/python/pyx/mips_const.pyx
+bindings/python/pyx/ppc.pyx
+bindings/python/pyx/ppc_const.pyx
+bindings/python/pyx/x86.pyx
+bindings/python/pyx/x86_const.pyx
+
 
 # java
 bindings/java/capstone.jar
@@ -31,6 +44,8 @@ tests/test_arm
 tests/test_arm64
 tests/test_mips
 tests/test_x86
+tests/test_ppc
+tests/*.static
 
 # vim tmp file
 *.swp
diff --git a/COMPILE b/COMPILE
deleted file mode 100644 (file)
index 0d664b8..0000000
--- a/COMPILE
+++ /dev/null
@@ -1,82 +0,0 @@
-How To Compile & Run Capstone for Linux, Mac OSX, *nix and Windows
-                        *-*-*-*-*-*
-
-
-Capstone requires no prerequisite packages, so it is easy to compile & install.
-
-
-(1) On *nix (such as MacOSX, Linux & FreeBSD):
-
-- To compile for current platform, run either:
-               $ ./compile.sh
-       or:
-               $ make
-
-       For FreeBSD/OpenBSD, use 'gmake' instread of 'make':
-
-               $ gmake
-
-       Then run "./tests/test*" to see the tests disassembling sample code.
-
-- On 64-bit OS, run command below to cross-compile Capstone for 32-bit binary:
-
-       $ ./compile.sh nix32
-
-       Then similarly, run "./tests/test*" to see the tests disassembling sample code.
-
-
-
-(2) To install Capstone, run:
-
-       $ sudo make install
-       
-       For FreeBSD/OpenBSD, use 'gmake' instead of 'make':
-
-       $ sudo gmake install
-
-Users are then required to enter root password to copy Capstone into machine
-system directories.
-
-NOTE: The core framework that will be installed by "make install" consist of
-only following files:
-
-       /usr/include/capstone/capstone.h
-       /usr/include/capstone/x86.h
-       /usr/include/capstone/arm.h
-       /usr/include/capstone/arm64.h
-       /usr/include/capstone/mips.h
-       /usr/lib/libcapstone.so (for Linux/*nix), or /usr/lib/libcapstone.dylib (OSX)
-       /usr/lib/libcapstone.a
-
-
-
-(3) To cross-compile for Windows, Linux & gcc-mingw-w64-i686 (and also gcc-mingw-w64-x86-64
-for 64-bit binaries) are required.
-
-       - To cross-compile Windows 32-bit binary, simply run
-               $ ./compile.sh cross-win32
-
-       - To cross-compile Windows 64-bit binary, simply run
-               $ ./compile.sh cross-win64
-
-Resulted files "capstone.dll" and "tests/test*.exe" can then be used on Windows machine.
-
-
-
-(4) To compile under Cygwin gcc-mingw-w64-i686 or x86_64-w64-mingw32 run:
-
-        - To compile Windows 32-bit binary under Cygwin, simply run
-                $ ./compile.sh cygwin-mingw32
-
-        - To compile Windows 64-bit binary under Cygwin, simply run
-                $ ./compile.sh cygwin-mingw64
-
-
-(5) By default, gcc is used as compiler. To use "clang" compiler instead, run command below:
-
-       $ ./compile.sh clang
-
-
-(6) So far, Python, Ruby, Ocaml, Java, C# and Go are supported by bindings. Look for
-the bindings under directory bindings/, and refer to README file of corresponding languages.
-
diff --git a/COMPILE.TXT b/COMPILE.TXT
new file mode 100644 (file)
index 0000000..a8b9855
--- /dev/null
@@ -0,0 +1,111 @@
+How To Compile, install & run Capstone for Linux, Mac OSX, *BSD and Windows
+                        *-*-*-*-*-*
+
+Capstone requires no prerequisite packages, so it is easy to compile & install.
+
+
+
+(0) Tailor Capstone to your need.
+
+  Out of 5 archtitectures supported by Capstone (Arm, Arm64, Mips, PPC & X86),
+  if you just need several selected archs, you can choose which ones you want
+  to compile in by modifying config.mk before going to next steps.
+
+  By default, all 5 architectures are compiled.
+
+
+
+(1) Compile from source
+
+  On *nix (such as MacOSX, Linux, *BSD, Solaris):
+
+  - To compile for current platform, run:
+
+               $ ./make.sh
+
+  - On 64-bit OS, run command below to cross-compile Capstone for 32-bit binary:
+
+       $ ./make.sh nix32
+
+
+
+(2) Install Capstone on *nix
+
+  To install Capstone, run:
+
+       $ sudo ./make.sh install
+       
+       For FreeBSD/OpenBSD, where sudo is unavailable, run:
+
+       $ su; ./make.sh install
+
+  Users are then required to enter root password to copy Capstone into machine
+  system directories.
+
+  Afterwards, run ./tests/test* to see the tests disassembling sample code.
+
+
+  NOTE: The core framework installed by "./make.sh install" consist of
+  following files:
+
+       /usr/include/capstone/capstone.h
+       /usr/include/capstone/x86.h
+       /usr/include/capstone/arm.h
+       /usr/include/capstone/arm64.h
+       /usr/include/capstone/mips.h
+       /usr/include/capstone/ppc.h
+       /usr/lib/libcapstone.so (for Linux/*nix), or /usr/lib/libcapstone.dylib (OSX)
+       /usr/lib/libcapstone.a
+
+
+
+(3) Cross-compile Windows from *nix
+
+  To cross-compile for Windows, Linux & gcc-mingw-w64-i686 (and also gcc-mingw-w64-x86-64
+  for 64-bit binaries) are required.
+
+       - To cross-compile Windows 32-bit binary, simply run:
+               $ ./make.sh cross-win32
+
+       - To cross-compile Windows 64-bit binary, run:
+               $ ./make.sh cross-win64
+
+  Resulted files libcapstone.dll, libcapstone.dll.a & tests/test*.exe can then
+  be used on Windows machine.
+
+
+
+(4) Compile on Windows with Cygwin
+
+  To compile under Cygwin gcc-mingw-w64-i686 or x86_64-w64-mingw32 run:
+
+        - To compile Windows 32-bit binary under Cygwin, simply run
+                $ ./make.sh cygwin-mingw32
+
+        - To compile Windows 64-bit binary under Cygwin, run
+                $ ./make.sh cygwin-mingw64
+
+  Resulted files libcapstone.dll, libcapstone.dll.a & tests/test*.exe can then
+  be used on Windows machine.
+
+
+(5) By default, "cc" (default C compiler on the system) is used as compiler.
+
+       - To use "clang" compiler instead, run command below:
+
+               $ ./make.sh clang
+
+       - To use "gcc" compiler instead, run:
+
+               $ ./make.sh gcc
+
+
+
+(6) Language bindings
+
+  So far, Python, Ocaml & Java are supported by bindings in the main code.
+  Look for the bindings under directory bindings/, and refer to README file
+  of corresponding languages.
+
+  Community also provide bindings for C#, Go, Ruby & Vala. Links to these can
+  be found at address http://capstone-engine.org/download.html
diff --git a/CONFIG b/CONFIG
deleted file mode 100644 (file)
index 429500a..0000000
--- a/CONFIG
+++ /dev/null
@@ -1,6 +0,0 @@
-// Package version
-
-#define PKG_MAJOR 1
-#define PKG_MINOR 0
-
-
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..fb4de2c
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,163 @@
+This file details the changelog of Capstone.
+
+---------------------------------
+Version 2.1.1: March 13th, 2014
+
+This is a stable release to fix some bugs deep in the core. There is no update
+to any architectures or bindings, so bindings version 2.1 can be used with this
+version 2.1.1 just fine.
+
+[ Core changes]
+
+- Fix a buffer overflow bug in Thumb mode (ARM). Some special input can
+  trigger this flaw.
+- Fix a crash issue when embedding Capstone into OSX kernel. This should
+  also enable Capstone to be embedded into other systems with limited stack
+  memory size such as Linux kernel or some firmwares.
+- Use a proper SONAME for library versioning (Linux).
+
+---------------------------------
+Version 2.1: March 5th, 2014
+
+[ API changes ]
+
+- API version has been bumped to 2.1.
+- Change prototype of cs_close() to be able to invalidate closed handle.
+  See http://capstone-engine.org/version_2.1_API.html for more information.
+- Extend cs_support() to handle more query types, not only about supported
+  architectures. This change is backward compatible, however, so existent code
+  do not need to be modified to support this.
+- New query type CS_SUPPORT_DIET for cs_support() to ask about diet status of
+  the engine.
+- New error code CS_ERR_DIET to report errors about newly added diet mode.
+- New error code CS_ERR_VERSION to report issue of incompatible versions between
+  bindings & core engine.
+
+
+[ Core changes ]
+
+- On memory usage, Capstone uses about 40% less memory, while still faster
+  than version 2.0.
+- All architectures are much smaller: binaries size reduce at least 30%.
+  Especially, X86-only binary reduces from 1.9MB to just 720KB.
+- Support "diet" mode, in which engine size is further reduced (by around 40%)
+  for embedding purpose. The price to pay is that we have to sacrifice some
+  non-critical data fields. See http://capstone-engine.org/diet.html for more
+  details.
+
+
+[ Architectures ]
+
+- Update all 5 architectures to fix bugs.
+- PowerPC:
+       - New instructions: FMR & MSYNC.
+- Mips:
+       - New instruction: DLSA
+- X86:
+       - Properly handle AVX-512 instructions.
+       - New instructions: PSETPM, SALC, INT1, GETSEC.
+       - Fix some memory leaking issues in case of prefixed instructions such
+         as LOCK, REP, REPNE.
+
+
+[ Python binding ]
+
+- Verify the core version at initialization time. Refuse to run if its version
+  is different from the core's version.
+- New API disasm_lite() added to Cs class. This light API only returns tuples of
+  (address, size, mnemonic, op_str), rather than list of CsInsn objects. This
+  improves performance by around 30% in some benchmarks.
+- New API version_bind() returns binding's version, which might differ from
+  the core's API version if the binding is out-of-date.
+- New API debug() returns information on Cython support, diet status & archs
+  compiled in.
+- Fixed some memory leaking bugs for Cython binding.
+- Fix a bug crashing Cython code when accessing @regs_read/regs_write/groups.
+- Support diet mode.
+
+
+[ Java binding ]
+
+- Fix some memory leaking bugs.
+- New API version() returns combined version.
+- Support diet mode.
+- Better support for detail option.
+
+
+[ Miscellaneous ]
+
+- make.sh now can uninstall the core engine. This is done with:
+
+       $ sudo ./make.sh uninstall
+
+----------------------------------
+Version 2.0: January 22nd, 2014
+
+Release 2.0 deprecates verison 1.0 and brings a lot of crucial changes.
+
+[ API changes ]
+
+- API version has been bumped to 2.0 (see cs_version() API)
+- New API cs_strerror(errno) returns a string describing error code given
+  in its only argument.
+- cs_version() now returns combined version encoding both major & minor versions.
+- New option CS_OPT_MODE allows to change engine’s mode at run-time with
+  cs_option().
+- New option CS_OPT_MEM allows to specify user-defined functions for dynamically
+  memory management used internally by Capstone. This is useful to embed Capstone
+  into special environments such as kernel or firware.
+- New API cs_support() can be used to check if this lib supports a particular
+  architecture (this is necessary since we now allow to choose which architectures
+  to compile in).
+- The detail option is OFF by default now. To get detail information, it should be
+  explicitly turned ON. The details then can be accessed using cs_insn.detail
+  pointer (to newly added structure cs_detail)
+
+
+[ Core changes ]
+
+- On memory usage, Capstone uses much less memory, but a lot faster now.
+- User now can choose which architectures to be supported by modifying config.mk
+  before compiling/installing.
+
+
+[ Architectures ]
+
+- Arm
+     - Support Big-Endian mode (besides Little-Endian mode).
+     - Support friendly register, so instead of output sub "r12,r11,0x14",
+        we have "sub ip,fp,0x14".
+- Arm64: support Big-Endian mode (besides Little-Endian mode).
+- PowerPC: newly added.
+- Mips: support friendly register, so instead of output "srl $2,$1,0x1f",
+     we have "srl $v0,$at,0x1f".
+- X86: bug fixes.
+
+
+[ Python binding ]
+
+- Python binding is vastly improved in performance: around 3 ~ 4 times faster
+  than in 1.0.
+- Cython support has been added, which can further speed up over the default
+  pure Python binding (up to 30% in some cases)
+- Function cs_disasm_quick() & Cs.disasm() now use generator (rather than a list)
+  to return succesfully disassembled instructions. This improves the performance
+  and reduces memory usage.
+
+
+[ Java binding ]
+
+- Better performance & bug fixes.
+
+
+[ Miscellaneous ]
+
+- Fixed some installation issues with Gentoo Linux.
+- Capstone now can easily compile/install on all *nix, including Linux, OSX,
+  {Net, Free, Open}BSD & Solaris.
+
+----------------------------------
+[Version 1.0]: December 18th, 2013
+
+- Initial public release.
+
diff --git a/HACK b/HACK
deleted file mode 100644 (file)
index 568d720..0000000
--- a/HACK
+++ /dev/null
@@ -1,33 +0,0 @@
-Capstone source is organized as followings.
-
-
-.                   <- core engine + README + COMPILE etc
-├── arch            <- code handling disasm engine for each arch
-│   ├── AArch64     <- ARM64 (aka ARMv8) engine
-│   ├── ARM         <- ARM engine
-│   ├── Mips        <- Mips engine
-│   └── X86         <- X86 engine
-├── bindings        <- all bindings are under this dir
-│   ├── csharp      <- C# bindings + test code
-│   ├── java        <- Java bindings + test code
-│   ├── ocaml       <- Ocaml bindings + test code
-│   ├── python      <- Python bindings + test code
-│   └── ruby        <- Ruby bindings + test code
-├── include         <- API headers in C language (*.h)
-├── release         <- Precompiled binaries
-│   ├── linux       <- .deb, .rpm, python packages, etc
-│   ├── mac         <- .dmg
-│   └── windows     <- .msi, .exe, .dll, etc
-├── tests           <- Test code (in C language)
-
-
-Follow COMPILE to see how to compile and run code.
-
-Note: if you find some strange bugs, it is recommended to firstly clean
-the code and try to recompile/reinstall again. This can be done with:
-
-       $ make clean
-       $ make
-       $ sudo make install
-
-
diff --git a/HACK.TXT b/HACK.TXT
new file mode 100644 (file)
index 0000000..2462169
--- /dev/null
+++ b/HACK.TXT
@@ -0,0 +1,29 @@
+Capstone source is organized as followings.
+
+
+.                   <- core engine + README + COMPILE.TXT etc
+├── arch            <- code handling disasm engine for each arch
+│   ├── AArch64     <- ARM64 (aka ARMv8) engine
+│   ├── ARM         <- ARM engine
+│   ├── Mips        <- Mips engine
+│   ├── PowerPC     <- PowerPC engine
+│   └── X86         <- X86 engine
+├── bindings        <- all bindings are under this dir
+│   ├── java        <- Java bindings + test code
+│   ├── ocaml       <- Ocaml bindings + test code
+│   ├── python      <- Python bindings + test code
+├── include         <- API headers in C language (*.h)
+├── suite           <- Development test tools - for Capstone developers only
+├── tests           <- Test code (in C language)
+
+
+Follow instructions in COMPILE.TXT to see how to compile and run code.
+
+Note: if you find some strange bugs, it is recommended to firstly clean
+the code and try to recompile/reinstall again. This can be done with:
+
+       $ make clean
+       $ make
+       $ sudo make install
+
+
index 9edde0b..0dabdc7 100644 (file)
@@ -1,5 +1,6 @@
 This is the software license for Capstone disassembly framework.
 Capstone has been designed & implemented by Nguyen Anh Quynh <aquynh@gmail.com>
+
 See http://www.capstone-engine.org for further information.
 
 Copyright (c) 2013, COSEINC.
index c81ed1b..6bf0537 100644 (file)
@@ -1,8 +1,8 @@
 /* Capstone Disassembler Engine */
 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> */
 
-#ifndef __CS_MCDISASSEMBLER_H__
-#define __CS_MCDISASSEMBLER_H__ 
+#ifndef CS_MCDISASSEMBLER_H
+#define CS_MCDISASSEMBLER_H
 
 typedef enum DecodeStatus {
        MCDisassembler_Fail = 0,
index f911257..46bb4e6 100644 (file)
--- a/MCInst.c
+++ b/MCInst.c
@@ -30,7 +30,7 @@ void MCInst_insert(MCInst *inst, int index, MCOperand *Op)
        inst->Operands[index] = *Op;
        inst->size++;
 
-       free(Op);
+       cs_mem_free(Op);
 }
 
 void MCInst_setOpcode(MCInst *inst, unsigned Op)
@@ -71,7 +71,7 @@ int MCInst_addOperand(MCInst *inst, MCOperand *Op)
                return -1;
 
        inst->Operands[inst->size] = *Op;
-       free(Op);
+       cs_mem_free(Op);
 
        inst->size++;
 
@@ -152,7 +152,7 @@ void MCOperand_setFPImm(MCOperand *op, double Val)
 
 MCOperand *MCOperand_CreateReg(unsigned Reg)
 {
-       MCOperand *op = malloc(sizeof(*op)); 
+       MCOperand *op = cs_mem_malloc(sizeof(*op));
 
        op->Kind = kRegister;
        op->RegVal = Reg;
@@ -162,7 +162,7 @@ MCOperand *MCOperand_CreateReg(unsigned Reg)
 
 MCOperand *MCOperand_CreateImm(int64_t Val)
 {
-       MCOperand *op = malloc(sizeof(*op)); 
+       MCOperand *op = cs_mem_malloc(sizeof(*op));
 
        op->Kind = kImmediate;
        op->ImmVal = Val;
@@ -172,7 +172,7 @@ MCOperand *MCOperand_CreateImm(int64_t Val)
 
 MCOperand *MCOperand_CreateFPImm(double Val)
 {
-       MCOperand *op = malloc(sizeof(*op)); 
+       MCOperand *op = cs_mem_malloc(sizeof(*op));
 
        op->Kind = kFPImmediate;
        op->FPImmVal = Val;
index f75a815..87fb5a1 100644 (file)
--- a/MCInst.h
+++ b/MCInst.h
@@ -16,8 +16,8 @@
 /* Capstone Disassembler Engine */
 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> */
 
-#ifndef __CS_MC_MCINST_H
-#define __CS_MC_MCINST_H
+#ifndef CS_MCINST_H
+#define CS_MCINST_H
 
 #include <stdint.h>
 #include <stdbool.h>
@@ -25,6 +25,7 @@
 #include "include/capstone.h"
 
 typedef struct MCInst MCInst;
+typedef struct cs_struct cs_struct;
 typedef struct MCOperand MCOperand;
 
 /// MCOperand - Instances of this class represent operands of the MCInst class.
@@ -81,19 +82,66 @@ MCOperand *MCOperand_CreateImm(int64_t Val);
 
 MCOperand *MCOperand_CreateFPImm(double Val);
 
+// NOTE: this structure is a flatten version of cs_insn struct
+// Detail information of disassembled instruction
+typedef struct cs_insn_flat {
+       // Instruction ID
+       // Find the instruction id from header file of corresponding architecture,
+       // such as arm.h for ARM, x86.h for X86, etc...
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       unsigned int id;
+
+       // Address (EIP) of this instruction
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       uint64_t address;
+
+       // Size of this instruction
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       uint16_t size;
+       // Machine bytes of this instruction, with number of bytes indicated by @size above
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       uint8_t bytes[16];
+
+       // Ascii text of instruction mnemonic
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       char mnemonic[32];
+
+       // Ascii text of instruction operands
+       // This information is available even when CS_OPT_DETAIL = CS_OPT_OFF
+       char op_str[160];
+
+       // NOTE: All information below is not available when CS_OPT_DETAIL = CS_OPT_OFF
+
+       uint8_t regs_read[12]; // list of implicit registers read by this insn
+       uint8_t regs_read_count; // number of implicit registers read by this insn
+
+       uint8_t regs_write[20]; // list of implicit registers modified by this insn
+       uint8_t regs_write_count; // number of implicit registers modified by this insn
+
+       uint8_t groups[8]; // list of group this instruction belong to
+       uint8_t groups_count; // number of groups this insn belongs to
+
+       // Architecture-specific instruction info
+       union {
+               cs_x86 x86;     // X86 architecture, including 16-bit, 32-bit & 64-bit mode
+               cs_arm64 arm64; // ARM64 architecture (aka AArch64)
+               cs_arm arm;             // ARM architecture (including Thumb/Thumb2)
+               cs_mips mips;   // MIPS architecture
+               cs_ppc ppc;     // PowerPC architecture
+       };
+} cs_insn_flat;
+
 /// MCInst - Instances of this class represent a single low-level machine
 /// instruction.
 struct MCInst {
        unsigned Opcode;
        MCOperand Operands[32];
        unsigned size;  // number of operands
-       cs_insn pub_insn;       // insn to be exposed to public
-       cs_mode mode;   // to be referenced by internal code
+       cs_insn_flat flat_insn; // insn to be exposed to public
        unsigned OpcodePub;
-       cs_opt_value detail;
        int insn_size;  // instruction size
-       int x86_segment;        // remove when segment mem ref hack is redundant.
        uint64_t address;       // address of this insn
+       cs_struct *csh; // save the main csh
 };
 
 void MCInst_Init(MCInst *inst);
index 7b6ee1b..e7cb452 100644 (file)
@@ -63,10 +63,12 @@ static uint16_t DiffListIterator_getVal(DiffListIterator *d)
 
 static bool DiffListIterator_next(DiffListIterator *d)
 {
+       MCPhysReg D;
+
        if (d->List == 0)
                return false;
 
-       MCPhysReg D = *d->List;
+       D = *d->List;
        d->List++;
        d->Val += D;
 
@@ -89,7 +91,7 @@ unsigned MCRegisterInfo_getMatchingSuperReg(MCRegisterInfo *RI, unsigned Reg, un
                return 0;
        }
 
-       DiffListIterator_init(&iter, Reg, RI->DiffLists + RI->Desc[Reg].SuperRegs);
+       DiffListIterator_init(&iter, (MCPhysReg)Reg, RI->DiffLists + RI->Desc[Reg].SuperRegs);
        DiffListIterator_next(&iter);
 
        while(DiffListIterator_isValid(&iter)) {
@@ -108,7 +110,7 @@ unsigned MCRegisterInfo_getSubReg(MCRegisterInfo *RI, unsigned Reg, unsigned Idx
        DiffListIterator iter;
        uint16_t *SRI = RI->SubRegIndices + RI->Desc[Reg].SubRegIndices;
 
-       DiffListIterator_init(&iter, Reg, RI->DiffLists + RI->Desc[Reg].SubRegs);
+       DiffListIterator_init(&iter, (MCPhysReg)Reg, RI->DiffLists + RI->Desc[Reg].SubRegs);
        DiffListIterator_next(&iter);
 
        while(DiffListIterator_isValid(&iter)) {
index bf94e86..b29867a 100644 (file)
--- a/Makefile
+++ b/Makefile
-# Capstone Disassembler Engine
+# Capstone Disassembly Engine
 # By Nguyen Anh Quynh <aquynh@gmail.com>, 2013>
 
+include config.mk
+include pkgconfig.mk   # package version
+
+ifeq ($(CROSS),)
+CC ?= cc
+AR ?= ar
+RANLIB ?= ranlib
+STRIP ?= strip
+else
 CC = $(CROSS)gcc
-AR ?= $(CROSS)ar
-RANLIB ?= $(CROSS)ranlib
-STRIP ?= $(CROSS)strip
+AR = $(CROSS)ar
+RANLIB = $(CROSS)ranlib
+STRIP = $(CROSS)strip
+endif
 
 CFLAGS += -fPIC -O3 -Wall -Iinclude
+
+ifeq ($(USE_SYS_DYN_MEM),yes)
+CFLAGS += -DUSE_SYS_DYN_MEM
+endif
+
 LDFLAGS += -shared
 
 PREFIX ?= /usr
 DESTDIR ?=
 INCDIR = $(DESTDIR)$(PREFIX)/include
+
 LIBDIR = $(DESTDIR)$(PREFIX)/lib
+# on x86_64, we might have /usr/lib64 directory instead of /usr/lib
+UNAME_M := $(shell uname -m)
+ifeq ($(UNAME_M), x86_64)
+ifeq (,$(wildcard $(LIBDIR)))
+LIBDIR = $(DESTDIR)$(PREFIX)/lib64
+else
+LIBDIR = $(DESTDIR)$(PREFIX)/lib
+endif
+endif
 
-INSTALL_DATA ?= install -m0644
-INSTALL_LIBRARY ?= install -m0755
+INSTALL_BIN ?= install
+INSTALL_DATA ?= $(INSTALL_BIN) -m0644
+INSTALL_LIBRARY ?= $(INSTALL_BIN) -m0755
 
 LIBNAME = capstone
 
+
+DEP_ARM =
+DEP_ARM += arch/ARM/ARMGenAsmWriter.inc
+DEP_ARM += arch/ARM/ARMGenDisassemblerTables.inc
+DEP_ARM += arch/ARM/ARMGenInstrInfo.inc
+DEP_ARM += arch/ARM/ARMGenRegisterInfo.inc
+DEP_ARM += arch/ARM/ARMGenSubtargetInfo.inc
+
+LIBOBJ_ARM =
+ifneq (,$(findstring arm,$(CAPSTONE_ARCHS)))
+       CFLAGS += -DCAPSTONE_HAS_ARM
+       LIBOBJ_ARM += arch/ARM/ARMDisassembler.o
+       LIBOBJ_ARM += arch/ARM/ARMInstPrinter.o
+       LIBOBJ_ARM += arch/ARM/ARMMapping.o
+       LIBOBJ_ARM += arch/ARM/ARMModule.o
+endif
+
+DEP_ARM64 =
+DEP_ARM64 += arch/AArch64/AArch64GenAsmWriter.inc
+DEP_ARM64 += arch/AArch64/AArch64GenInstrInfo.inc
+DEP_ARM64 += arch/AArch64/AArch64GenSubtargetInfo.inc
+DEP_ARM64 += arch/AArch64/AArch64GenDisassemblerTables.inc
+DEP_ARM64 += arch/AArch64/AArch64GenRegisterInfo.inc
+
+LIBOBJ_ARM64 =
+ifneq (,$(findstring aarch64,$(CAPSTONE_ARCHS)))
+       CFLAGS += -DCAPSTONE_HAS_ARM64
+       LIBOBJ_ARM64 += arch/AArch64/AArch64BaseInfo.o
+       LIBOBJ_ARM64 += arch/AArch64/AArch64Disassembler.o
+       LIBOBJ_ARM64 += arch/AArch64/AArch64InstPrinter.o
+       LIBOBJ_ARM64 += arch/AArch64/AArch64Mapping.o
+       LIBOBJ_ARM64 += arch/AArch64/AArch64Module.o
+endif
+
+
+DEP_MIPS =
+DEP_MIPS += arch/Mips/MipsGenAsmWriter.inc
+DEP_MIPS += arch/Mips/MipsGenDisassemblerTables.inc
+DEP_MIPS += arch/Mips/MipsGenInstrInfo.inc
+DEP_MIPS += arch/Mips/MipsGenRegisterInfo.inc
+DEP_MIPS += arch/Mips/MipsGenSubtargetInfo.inc
+
+LIBOBJ_MIPS =
+ifneq (,$(findstring mips,$(CAPSTONE_ARCHS)))
+       CFLAGS += -DCAPSTONE_HAS_MIPS
+       LIBOBJ_MIPS += arch/Mips/MipsDisassembler.o
+       LIBOBJ_MIPS += arch/Mips/MipsInstPrinter.o
+       LIBOBJ_MIPS += arch/Mips/MipsMapping.o
+       LIBOBJ_MIPS += arch/Mips/MipsModule.o
+endif
+
+
+DEP_PPC =
+DEP_PPC += arch/PowerPC/PPCGenAsmWriter.inc
+DEP_PPC += arch/PowerPC/PPCGenInstrInfo.inc
+DEP_PPC += arch/PowerPC/PPCGenSubtargetInfo.inc
+DEP_PPC += arch/PowerPC/PPCGenDisassemblerTables.inc
+DEP_PPC += arch/PowerPC/PPCGenRegisterInfo.inc
+
+LIBOBJ_PPC =
+ifneq (,$(findstring powerpc,$(CAPSTONE_ARCHS)))
+       CFLAGS += -DCAPSTONE_HAS_POWERPC
+       LIBOBJ_PPC += arch/PowerPC/PPCDisassembler.o
+       LIBOBJ_PPC += arch/PowerPC/PPCInstPrinter.o
+       LIBOBJ_PPC += arch/PowerPC/PPCMapping.o
+       LIBOBJ_PPC += arch/PowerPC/PPCModule.o
+endif
+
+
+DEP_X86 =
+DEP_X86 += arch/X86/X86GenAsmWriter.inc
+DEP_X86 += arch/X86/X86GenAsmWriter1.inc
+DEP_X86 += arch/X86/X86GenDisassemblerTables.inc
+DEP_X86 += arch/X86/X86GenInstrInfo.inc
+DEP_X86 += arch/X86/X86GenRegisterInfo.inc
+
+LIBOBJ_X86 =
+ifneq (,$(findstring x86,$(CAPSTONE_ARCHS)))
+       CFLAGS += -DCAPSTONE_HAS_X86
+       LIBOBJ_X86 += arch/X86/X86DisassemblerDecoder.o
+       LIBOBJ_X86 += arch/X86/X86Disassembler.o
+       LIBOBJ_X86 += arch/X86/X86IntelInstPrinter.o
+       LIBOBJ_X86 += arch/X86/X86ATTInstPrinter.o
+       LIBOBJ_X86 += arch/X86/X86Mapping.o
+       LIBOBJ_X86 += arch/X86/X86Module.o
+endif
+
 LIBOBJ =
 LIBOBJ += cs.o utils.o SStream.o MCInstrDesc.o MCRegisterInfo.o
-LIBOBJ += arch/Mips/MipsDisassembler.o arch/Mips/MipsInstPrinter.o arch/Mips/mapping.o
-LIBOBJ += arch/AArch64/AArch64BaseInfo.o arch/AArch64/AArch64Disassembler.o arch/AArch64/AArch64InstPrinter.o arch/AArch64/mapping.o
-LIBOBJ += arch/ARM/ARMDisassembler.o arch/ARM/ARMInstPrinter.o arch/ARM/mapping.o
-LIBOBJ += arch/X86/X86DisassemblerDecoder.o arch/X86/X86Disassembler.o arch/X86/X86IntelInstPrinter.o arch/X86/X86ATTInstPrinter.o arch/X86/mapping.o
+LIBOBJ += $(LIBOBJ_ARM) $(LIBOBJ_ARM64) $(LIBOBJ_MIPS) $(LIBOBJ_PPC) $(LIBOBJ_X86)
 LIBOBJ += MCInst.o
 
-EXT = so
-AR_EXT = a
 
-# OSX?
 UNAME_S := $(shell uname -s)
+PKGCFCGDIR = $(LIBDIR)/pkgconfig
+
+# OSX?
 ifeq ($(UNAME_S),Darwin)
 EXT = dylib
+AR_EXT = a
+ifneq ($(USE_SYS_DYN_MEM),yes)
+# remove string check because OSX kernel complains about missing symbols
+CFLAGS += -D_FORTIFY_SOURCE=0
+endif
+# By default, suppose that Brew is installed & use Brew path for pkgconfig file
+PKGCFCGDIR = /usr/local/lib/pkgconfig
+# is Macport installed instead?
+ifneq (,$(wildcard /opt/local/bin/port))
+# then correct the path for pkgconfig file
+PKGCFCGDIR = /opt/local/lib/pkgconfig
+endif
 else
 # Cygwin?
 IS_CYGWIN := $(shell $(CC) -dumpmachine | grep -i cygwin | wc -l)
@@ -52,6 +174,13 @@ AR_EXT = dll.a
 # mingw doesn't like -fPIC either
 CFLAGS := $(CFLAGS:-fPIC=)
 # On Windows we need the shared library to be executable
+else
+# Linux, *BSD
+EXT = so
+AR_EXT = a
+API_MAJOR=$(shell echo `grep -e CS_API_MAJOR include/capstone.h | grep -v = | awk '{print $$3}'` | awk '{print $$1}')
+
+LDFLAGS += -Wl,-soname,lib$(LIBNAME)$(API_MAJOR)
 endif
 endif
 endif
@@ -60,9 +189,7 @@ LIBRARY = lib$(LIBNAME).$(EXT)
 ARCHIVE = lib$(LIBNAME).$(AR_EXT)
 PKGCFGF = $(LIBNAME).pc
 
-VERSION=$(shell echo `grep -e PKG_MAJOR -e PKG_MINOR CONFIG | grep -v = | awk '{print $$3}'` | awk '{print $$1"."$$2}')
-
-.PHONY: all clean install uninstall
+.PHONY: all clean install uninstall dist
 
 all: $(LIBRARY) $(ARCHIVE) $(PKGCFGF)
        $(MAKE) -C tests
@@ -71,43 +198,84 @@ all: $(LIBRARY) $(ARCHIVE) $(PKGCFGF)
 $(LIBRARY): $(LIBOBJ)
        $(CC) $(LDFLAGS) $(LIBOBJ) -o $(LIBRARY)
 
+$(LIBOBJ): include/diet.h
+
+$(LIBOBJ_ARM): $(DEP_ARM)
+$(LIBOBJ_ARM64): $(DEP_ARM64)
+$(LIBOBJ_MIPS): $(DEP_MIPS)
+$(LIBOBJ_PPC): $(DEP_PPC)
+$(LIBOBJ_X86): $(DEP_X86)
+
+# auto-generate include/diet.h
+include/diet.h: config.mk
+       @echo "// File auto-generated by Makefile for Capstone framework. DO NOT MODIFY!" > include/diet.h
+       @echo "" >> include/diet.h
+       @echo "#ifndef CAPSTONE_DIET_H" >> include/diet.h
+       @echo "#define CAPSTONE_DIET_H" >> include/diet.h
+       @echo "" >> include/diet.h
+ifneq (,$(findstring yes,$(CAPSTONE_DIET)))
+       @echo "// Capstone is in DIET mode" >> include/diet.h
+       @echo "#define CAPSTONE_DIET" >> include/diet.h
+else
+       @echo "// Capstone is in standard mode (NOT diet)" >> include/diet.h
+       @echo "#undef CAPSTONE_DIET" >> include/diet.h
+endif
+       @echo "" >> include/diet.h
+       @echo "#endif" >> include/diet.h
+
 $(ARCHIVE): $(LIBOBJ)
        rm -f $(ARCHIVE)
        $(AR) q $(ARCHIVE) $(LIBOBJ)
        $(RANLIB) $(ARCHIVE)
 
 $(PKGCFGF):
-       echo Name: capstone > $(PKGCFGF)
-       echo Description: Capstone disassembler engine >> $(PKGCFGF)
-       echo Version: $(VERSION) >> $(PKGCFGF)
-       echo Libs: -L$(LIBDIR) -lcapstone >> $(PKGCFGF)
-       echo Cflags: -I$(PREFIX)/include/capstone >> $(PKGCFGF)
+       echo 'Name: capstone' > $(PKGCFGF)
+       echo 'Description: Capstone disassembly engine' >> $(PKGCFGF)
+ifeq ($(PKG_EXTRA),)
+       echo 'Version: $(PKG_MAJOR).$(PKG_MINOR)' >> $(PKGCFGF)
+else
+       echo 'Version: $(PKG_MAJOR).$(PKG_MINOR).$(PKG_EXTRA)' >> $(PKGCFGF)
+endif
+       echo 'libdir=$(LIBDIR)' >> $(PKGCFGF)
+       echo 'includedir=$(PREFIX)/include/capstone' >> $(PKGCFGF)
+       echo 'archive=$${libdir}/libcapstone.a' >> $(PKGCFGF)
+       echo 'Libs: -L$${libdir} -lcapstone' >> $(PKGCFGF)
+       echo 'Cflags: -I$${includedir}' >> $(PKGCFGF)
 
 install: $(PKGCFGF) $(ARCHIVE) $(LIBRARY)
        mkdir -p $(LIBDIR)
        $(INSTALL_LIBRARY) lib$(LIBNAME).$(EXT) $(LIBDIR)
        $(INSTALL_DATA) lib$(LIBNAME).$(AR_EXT) $(LIBDIR)
        mkdir -p $(INCDIR)/$(LIBNAME)
-       $(INSTALL_DATA) include/capstone.h $(INCDIR)/$(LIBNAME)
-       $(INSTALL_DATA) include/x86.h $(INCDIR)/$(LIBNAME)
-       $(INSTALL_DATA) include/arm.h $(INCDIR)/$(LIBNAME)
-       $(INSTALL_DATA) include/arm64.h $(INCDIR)/$(LIBNAME)
-       $(INSTALL_DATA) include/mips.h $(INCDIR)/$(LIBNAME)
-       mkdir -p $(LIBDIR)/pkgconfig
-       $(INSTALL_DATA) $(PKGCFGF) $(LIBDIR)/pkgconfig/
+       $(INSTALL_DATA) include/*.h $(INCDIR)/$(LIBNAME)
+       mkdir -p $(PKGCFCGDIR)
+       $(INSTALL_DATA) $(PKGCFGF) $(PKGCFCGDIR)/
 
 uninstall:
        rm -rf $(INCDIR)/$(LIBNAME)
        rm -f $(LIBDIR)/lib$(LIBNAME).$(EXT)
        rm -f $(LIBDIR)/lib$(LIBNAME).$(AR_EXT)
-       rm -f $(LIBDIR)/pkgconfig/$(LIBNAME).pc
+       rm -f $(PKGCFCGDIR)/$(LIBNAME).pc
 
 clean:
        rm -f $(LIBOBJ) lib$(LIBNAME).*
-       #cd bindings/ruby; $(MAKE) clean; rm -rf Makefile
+       rm -f $(PKGCFGF)
+       rm -f include/diet.h
        $(MAKE) -C bindings/python clean
        $(MAKE) -C bindings/java clean
+       $(MAKE) -C bindings/ocaml clean
        $(MAKE) -C tests clean
 
+
+TAG ?= HEAD
+ifeq ($(TAG), HEAD)
+DIST_VERSION = latest
+else
+DIST_VERSION = $(TAG)
+endif
+
+dist:
+       git archive --format=tar.gz --prefix=capstone-$(DIST_VERSION)/ $(TAG) > capstone-$(DIST_VERSION).tgz
+
 .c.o:
        $(CC) $(CFLAGS) -c $< -o $@
index 98a6cb6..d330b4a 100644 (file)
@@ -95,10 +95,11 @@ static inline unsigned CountLeadingZeros_32(uint32_t Value) {
 #endif
        Count = __builtin_clz(Value);
 #else
+       unsigned Shift;
        if (!Value) return 32;
        Count = 0;
        // bisection method for count leading zeros
-       for (unsigned Shift = 32 >> 1; Shift; Shift >>= 1) {
+       for (Shift = 32 >> 1; Shift; Shift >>= 1) {
                uint32_t Tmp = Value >> Shift;
                if (Tmp) {
                        Value = Tmp;
@@ -131,11 +132,14 @@ static inline unsigned CountLeadingZeros_64(uint64_t Value) {
 #endif
        Count = __builtin_clzll(Value);
 #else
-       if (sizeof(long) == sizeof(int64_t)) {
+#ifndef _MSC_VER
+       unsigned Shift;
+       if (sizeof(long) == sizeof(int64_t))
+       {
                if (!Value) return 64;
                Count = 0;
                // bisection method for count leading zeros
-               for (unsigned Shift = 64 >> 1; Shift; Shift >>= 1) {
+               for (Shift = 64 >> 1; Shift; Shift >>= 1) {
                        uint64_t Tmp = Value >> Shift;
                        if (Tmp) {
                                Value = Tmp;
@@ -143,7 +147,10 @@ static inline unsigned CountLeadingZeros_64(uint64_t Value) {
                                Count |= Shift;
                        }
                }
-       } else {
+       }
+       else
+#endif
+       {
                // get hi portion
                uint32_t Hi = Hi_32(Value);
 
@@ -237,7 +244,7 @@ static inline unsigned CountPopulation_32(uint32_t Value) {
 #else
        uint32_t v = Value - ((Value >> 1) & 0x55555555);
        v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
-       return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
+       return (((v + (v >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24;
 #endif
 }
 
@@ -250,7 +257,7 @@ static inline unsigned CountPopulation_64(uint64_t Value) {
        uint64_t v = Value - ((Value >> 1) & 0x5555555555555555ULL);
        v = (v & 0x3333333333333333ULL) + ((v >> 2) & 0x3333333333333333ULL);
        v = (v + (v >> 4)) & 0x0F0F0F0F0F0F0F0FULL;
-       return unsigned((uint64_t)(v * 0x0101010101010101ULL) >> 56);
+       return (uint64_t)((v * 0x0101010101010101ULL) >> 56);
 #endif
 }
 
diff --git a/README b/README
index eefc86f..1c40b1a 100644 (file)
--- a/README
+++ b/README
@@ -4,22 +4,26 @@ disasm engine for binary analysis and reversing in the security community.
 Created by Nguyen Anh Quynh, then developed and maintained by a small community,
 Capstone offers some unparalleled features:
 
-- Support multiple hardware architectures: ARM, ARM64 (aka ARMv8), Mips & X86.
+- Support multiple hardware architectures: ARM, ARM64 (ARMv8), Mips, PPC & X86.
 
 - Having clean/simple/lightweight/intuitive architecture-neutral API.
 
 - Provide details on disassembled instruction (called “decomposer” by others).
 
 - Provide semantics of the disassembled instruction, such as list of implicit
-     registers read & written.
+  registers read & written.
 
-- Implemented in pure C language, with lightweight wrappers for C++, Python,
-     Ruby, OCaml, C#, Java and Go available.
+- Implemented in pure C language, with lightweight wrappers for C++, C#, Go,
+  Java, Ocaml, Python, Ruby & Vala ready (either available in main code,
+  or provided externally by community).
 
-- Native support for Windows & *nix platforms (MacOSX, Linux & *BSD confirmed).
+- Native support for Windows & *nix platforms (with OSX, Linux, *BSD & Solaris
+  have been confirmed).
 
 - Thread-safe by design.
 
+- Special support for embedding into firmware or OS kernel.
+
 - Distributed under the open source BSD license.
 
 Further information is available at http://www.capstone-engine.org
@@ -27,7 +31,7 @@ Further information is available at http://www.capstone-engine.org
 
 [Compile]
 
-See COMPILE file for how to compile and install Capstone
+See COMPILE.TXT file for how to compile and install Capstone
 
 
 [Status]
@@ -45,7 +49,7 @@ refer to the corresponding git repositories.
 
 [Hack]
 
-See HACK file for the structuture of the source code.
+See HACK.TXT file for the structuture of the source code.
 
 
 [License]
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
new file mode 100644 (file)
index 0000000..f01334a
--- /dev/null
@@ -0,0 +1,7 @@
+Version 2.1.1 is a stable release that fixes some bugs deep in the core.
+There is no update to any architectures or bindings, so older bindings
+of release 2.1 can be used with this version 2.1.1 just fine.
+
+For this reason, after upgrading to 2.1.1, users do NOT need to upgrade
+their bindings from release 2.1.
+
index e6678ad..380a1f6 100644 (file)
--- a/SStream.c
+++ b/SStream.c
@@ -6,6 +6,7 @@
 #include <stdio.h>
 
 #include "SStream.h"
+#include "cs_priv.h"
 
 void SStream_Init(SStream *ss)
 {
@@ -15,12 +16,14 @@ void SStream_Init(SStream *ss)
 
 void SStream_concat(SStream *ss, const char *fmt, ...)
 {
+#ifndef CAPSTONE_DIET
        va_list ap;
 
        va_start(ap, fmt);
-       int ret = vsnprintf(ss->buffer + ss->index, sizeof(ss->buffer) - (ss->index + 1), fmt, ap);
+       int ret = cs_vsnprintf(ss->buffer + ss->index, sizeof(ss->buffer) - (ss->index + 1), fmt, ap);
        va_end(ap);
        ss->index += ret;
+#endif
 }
 
 /*
diff --git a/TODO b/TODO
index 6b61ac8..a2e573d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -16,8 +16,11 @@ Issues to be solved in next versions
   to port the code over to Visual Studio, so those only have Windows can still
   compile Capstone without needing to have Linux machine for cross-compiling.
 
+- Reduce the binary size of libraries, so Capstone can be embeded into products.
+
+
 [Bindings]
 
-- OCaml & C# bindings are broken due to many API changes. This should be fixed ASAP.
+- OCaml binding are broken due to many API changes. This should be fixed ASAP.
 
 - Python 3 support is needed.
index 1b9ead0..e95e0ff 100644 (file)
@@ -39,12 +39,12 @@ char *NamedImmMapper_toString(NamedImmMapper *N, uint32_t Value, bool *Valid)
 // return true if s1 == lower(f2), and false otherwise
 static bool compare_lower_str(char *s1, char *s2)
 {
-       char *lower = strdup(s2), *c;
+       char *lower = cs_strdup(s2), *c;
        for (c = lower; *c; c++)
-               *c = tolower((int) *c);
+               *c = (char)tolower((int) *c);
 
        bool res = (strcmp(s1, lower) == 0);
-       free(lower);
+       cs_mem_free(lower);
 
        return res;
 }
@@ -60,7 +60,7 @@ uint32_t NamedImmMapper_fromString(NamedImmMapper *N, char *Name, bool *Valid)
        }
 
        *Valid = false;
-       return -1;
+       return (uint32_t)-1;
 }
 
 bool NamedImmMapper_validImm(NamedImmMapper *N, uint32_t Value)
@@ -85,7 +85,7 @@ static char *utostr(uint64_t X, bool isNeg)
 
        if (isNeg) *--BufPtr = '-';   // Add negative sign...
 
-       char *result = strdup(BufPtr);
+       char *result = cs_strdup(BufPtr);
        return result;
 }
 
@@ -615,10 +615,10 @@ void SysRegMapper_toString(SysRegMapper *S, uint32_t Bits, bool *Valid, char *re
        int dummy = sprintf(result, "s3_%s_c%s_c%s_%s", Op1S, CRnS, CRmS, Op2S);
        (void)dummy;
 
-       free(Op1S);
-       free(CRnS);
-       free(CRmS);
-       free(Op2S);
+       cs_mem_free(Op1S);
+       cs_mem_free(CRnS);
+       cs_mem_free(CRmS);
+       cs_mem_free(Op2S);
 }
 
 static NamedImmMapper_Mapping TLBIPairs[] = {
@@ -656,7 +656,7 @@ static NamedImmMapper_Mapping TLBIPairs[] = {
        {"vaale1", A64TLBI_VAALE1}
 };
 
-NamedImmMapper AArch64_TLBIMapper = {
+NamedImmMapper A64TLBI_TLBIMapper = {
        .Pairs = TLBIPairs,
        .NumPairs = ARR_SIZE(TLBIPairs),
        .TooBigImm = 0,
@@ -677,7 +677,7 @@ static NamedImmMapper_Mapping ATPairs[] = {
        {"s12e0w", A64AT_S12E0W},
 };
 
-NamedImmMapper AArch64_ATMapper = {
+NamedImmMapper A64AT_ATMapper = {
        .Pairs = ATPairs,
        .NumPairs = ARR_SIZE(ATPairs),
        .TooBigImm = 0,
@@ -698,7 +698,7 @@ static NamedImmMapper_Mapping DBarrierPairs[] = {
        {"sy", A64DB_SY}
 };
 
-NamedImmMapper AArch64_DBarrierMapper = {
+NamedImmMapper A64DB_DBarrierMapper = {
        .Pairs = DBarrierPairs,
        .NumPairs = ARR_SIZE(DBarrierPairs),
        .TooBigImm = 16,
@@ -715,7 +715,7 @@ static NamedImmMapper_Mapping DCPairs[] = {
        {"cisw", A64DC_CISW}
 };
 
-NamedImmMapper AArch64_DCMapper = {
+NamedImmMapper A64DC_DCMapper = {
        .Pairs = DCPairs,
        .NumPairs = ARR_SIZE(DCPairs),
        .TooBigImm = 0,
@@ -727,7 +727,7 @@ static NamedImmMapper_Mapping ICPairs[] = {
        {"ivau", A64IC_IVAU}
 };
 
-NamedImmMapper AArch64_ICMapper = {
+NamedImmMapper A64IC_ICMapper = {
        .Pairs = ICPairs,
        .NumPairs = ARR_SIZE(ICPairs),
        .TooBigImm = 0,
@@ -737,7 +737,7 @@ static NamedImmMapper_Mapping ISBPairs[] = {
        {"sy",  A64DB_SY},
 };
 
-NamedImmMapper AArch64_ISBMapper = {
+NamedImmMapper A64ISB_ISBMapper = {
        .Pairs = ISBPairs,
        .NumPairs = ARR_SIZE(ISBPairs),
        .TooBigImm = 16,
@@ -764,7 +764,7 @@ static NamedImmMapper_Mapping PRFMPairs[] = {
        {"pstl3strm", A64PRFM_PSTL3STRM}
 };
 
-NamedImmMapper AArch64_PRFMMapper = {
+NamedImmMapper A64PRFM_PRFMMapper = {
        .Pairs = PRFMPairs,
        .NumPairs = ARR_SIZE(PRFMPairs),
        .TooBigImm = 32,
@@ -776,7 +776,7 @@ static NamedImmMapper_Mapping PStatePairs[] = {
        {"daifclr", A64PState_DAIFClr}
 };
 
-NamedImmMapper AArch64_PStateMapper = {
+NamedImmMapper A64PState_PStateMapper = {
        .Pairs = PStatePairs,
        .NumPairs = ARR_SIZE(PStatePairs),
        .TooBigImm = 0,
index a2a0313..672232f 100644 (file)
@@ -56,14 +56,14 @@ typedef struct SysRegMapper {
 extern SysRegMapper AArch64_MSRMapper;
 extern SysRegMapper AArch64_MRSMapper;
 
-extern NamedImmMapper AArch64_DBarrierMapper;
-extern NamedImmMapper AArch64_ATMapper;
-extern NamedImmMapper AArch64_DCMapper;
-extern NamedImmMapper AArch64_ICMapper;
-extern NamedImmMapper AArch64_ISBMapper;
-extern NamedImmMapper AArch64_PRFMMapper;
-extern NamedImmMapper AArch64_PStateMapper;
-extern NamedImmMapper AArch64_TLBIMapper;
+extern NamedImmMapper A64DB_DBarrierMapper;
+extern NamedImmMapper A64AT_ATMapper;
+extern NamedImmMapper A64DC_DCMapper;
+extern NamedImmMapper A64IC_ICMapper;
+extern NamedImmMapper A64ISB_ISBMapper;
+extern NamedImmMapper A64PRFM_PRFMMapper;
+extern NamedImmMapper A64PState_PStateMapper;
+extern NamedImmMapper A64TLBI_TLBIMapper;
 
 // // Enums corresponding to AArch64 condition codes
 // The CondCodes constants map directly to the 4-bit encoding of the
index 4b5eb70..9bcac86 100644 (file)
@@ -212,10 +212,10 @@ static bool Check(DecodeStatus *Out, DecodeStatus In);
 #include "AArch64GenSubtargetInfo.inc"
 
 // Hacky: enable all features for disassembler
-static uint64_t AArch64_getFeatureBits(void)
+static uint64_t getFeatureBits(int feature)
 {
        // enable all features
-       return -1;
+       return (uint64_t)-1;
 }
 
 #include "AArch64GenDisassemblerTables.inc"
@@ -247,40 +247,18 @@ static bool Check(DecodeStatus *Out, DecodeStatus In)
 #include "AArch64GenRegisterInfo.inc"
 void AArch64_init(MCRegisterInfo *MRI)
 {
-         /*
-         RI->InitMCRegisterInfo(AArch64RegDesc, 228,
-         RA, PC,
-         AArch64MCRegisterClasses, 15,
-         AArch64RegUnitRoots, 66,
-         AArch64RegDiffLists,
-         AArch64RegStrings,
-         AArch64SubRegIdxLists, 6,
-          AArch64SubRegIdxRanges,   AArch64RegEncodingTable);
-         */
-
-       /*
-       RI->InitMCRegisterInfo(AArch64RegDesc, 420,
-                       RA, PC,
-                       AArch64MCRegisterClasses, 61,
-                       AArch64RegUnitRoots, 66,
-                       AArch64RegDiffLists,
-                       AArch64RegStrings,
-                       AArch64SubRegIdxLists, 53,
-                       AArch64SubRegIdxRanges, AArch64RegEncodingTable);
-       */
-
        MCRegisterInfo_InitMCRegisterInfo(MRI, AArch64RegDesc, 420,
                        0, 0, 
                        AArch64MCRegisterClasses, 61,
                        0, 0, 
                        AArch64RegDiffLists,
                        0, 
-                       AArch64SubRegIdxLists, 53,
+                       AArch64SubRegIdxLists, 52,
                        0);
 }
 
 
-static DecodeStatus _getInstruction(MCInst *MI,
+static DecodeStatus _getInstruction(cs_struct *ud, MCInst *MI,
                const uint8_t *code, size_t code_len,
                uint16_t *Size,
                uint64_t Address, MCRegisterInfo *MRI)
@@ -291,14 +269,16 @@ static DecodeStatus _getInstruction(MCInst *MI,
                return MCDisassembler_Fail;
        }
 
-       // Encoded as a small-endian 32-bit word in the stream.
-       uint32_t insn = (code[3] << 24) | (code[2] << 16) |
-               (code[1] <<  8) | (code[0] <<  0);
+       uint32_t insn;
+       if (ud->big_endian)
+               insn = (code[3] << 0) | (code[2] << 8) |
+                       (code[1] <<  16) | (code[0] <<  24);
+       else
+               insn = (code[3] << 24) | (code[2] << 16) |
+                       (code[1] <<  8) | (code[0] <<  0);
 
-       //printf("insn: %u\n", insn);
        // Calling the auto-generated decoder function.
-       DecodeStatus result = decodeInstruction(DecoderTableA6432, MI, insn, Address, MRI);
-       //printf("result: %u\n", result);
+       DecodeStatus result = decodeInstruction(DecoderTableA6432, MI, insn, Address, MRI, 0);
        if (result != MCDisassembler_Fail) {
                *Size = 4;
                return result;
@@ -311,7 +291,7 @@ static DecodeStatus _getInstruction(MCInst *MI,
 
 bool AArch64_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info)
 {
-       DecodeStatus status = _getInstruction(instr,
+       DecodeStatus status = _getInstruction((cs_struct *)ud, instr,
                        code, code_len,
                        size,
                        address, (MCRegisterInfo *)info);
@@ -328,22 +308,25 @@ static unsigned getReg(MCRegisterInfo *MRI, unsigned RC, unsigned RegNo)
 static DecodeStatus DecodeGPR64RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_GPR64RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_GPR64RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeGPR64xspRegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeGPR64xspRegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_GPR64xspRegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_GPR64xspRegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
@@ -352,77 +335,83 @@ static DecodeStatus DecodeGPR32RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address,
                void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_GPR32RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_GPR32RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeGPR32wspRegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeGPR32wspRegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_GPR32wspRegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_GPR32wspRegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeFPR8RegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR8RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_FPR8RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_FPR8RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeFPR16RegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR16RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_FPR16RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_FPR16RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
 
-static DecodeStatus
-DecodeFPR32RegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR32RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_FPR32RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_FPR32RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeFPR64RegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR64RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_FPR64RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_FPR64RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeFPR64LoRegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR64LoRegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
        if (RegNo > 15)
@@ -431,20 +420,20 @@ DecodeFPR64LoRegisterClass(MCInst *Inst, unsigned RegNo,
        return DecodeFPR64RegisterClass(Inst, RegNo, Address, Decoder);
 }
 
-static DecodeStatus
-DecodeFPR128RegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR128RegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_FPR128RegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_FPR128RegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeFPR128LoRegisterClass(MCInst *Inst, unsigned RegNo,
+static DecodeStatus DecodeFPR128LoRegisterClass(MCInst *Inst, unsigned RegNo,
                uint64_t Address, void *Decoder)
 {
        if (RegNo > 15)
@@ -458,10 +447,12 @@ static DecodeStatus DecodeGPR64noxzrRegisterClass(MCInst *Inst,
                uint64_t Address,
                void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 30)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, AArch64_GPR64noxzrRegClassID, RegNo);
+       Register = (uint16_t)getReg(Decoder, AArch64_GPR64noxzrRegClassID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
@@ -470,10 +461,12 @@ static DecodeStatus DecodeRegisterClassByID(MCInst *Inst, unsigned RegNo,
                unsigned RegID,
                void *Decoder)
 {
+       uint16_t Register;
+
        if (RegNo > 31)
                return MCDisassembler_Fail;
 
-       uint16_t Register = getReg(Decoder, RegID, RegNo);
+       Register = (uint16_t)getReg(Decoder, RegID, RegNo);
        MCInst_addOperand(Inst, MCOperand_CreateReg(Register));
        return MCDisassembler_Success;
 }
@@ -1048,8 +1041,7 @@ static DecodeStatus DecodeSingleIndexedInstruction(MCInst *Inst,
                return MCDisassembler_Success;
 }
 
-static DecodeStatus
-DecodeNeonMovImmShiftOperand(MCInst *Inst, unsigned ShiftAmount,
+static DecodeStatus DecodeNeonMovImmShiftOperand(MCInst *Inst, unsigned ShiftAmount,
                uint64_t Address, void *Decoder, A64SE_ShiftExtSpecifiers Ext, bool IsHalf)
 {
        bool IsLSL = false;
index 65853f4..1318a68 100644 (file)
@@ -1,8 +1,8 @@
 /* Capstone Disassembler Engine */
 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> */
 
-#ifndef __SB_AARCH64DISASSEMBLER_H
-#define __SB_AARCH64DISASSEMBLER_H
+#ifndef CS_AARCH64_DISASSEMBLER_H
+#define CS_AARCH64_DISASSEMBLER_H
 
 #include <stdint.h>
 
index 9c4870c..0de6bf8 100644 (file)
@@ -6,14 +6,14 @@
 |*                                                                            *|
 \*===----------------------------------------------------------------------===*/
 
-/* Capstone Disassembler Engine */
+/* Capstone Disassembly Engine, http://www.capstone-engine.org */
 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> */
 
 /// printInstruction - This method is automatically generated by tablegen
 /// from the instruction set description.
-static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
+static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
 {
-  static uint32_t OpInfo[] = {
+  static const uint32_t OpInfo[] = {
     0U,        // PHI
     0U,        // INLINEASM
     0U,        // PROLOG_LABEL
@@ -2800,7 +2800,7 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     0U
   };
 
-  static uint32_t OpInfo2[] = {
+  static const uint32_t OpInfo2[] = {
     0U,        // PHI
     0U,        // INLINEASM
     0U,        // PROLOG_LABEL
@@ -5587,7 +5587,8 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     0U
   };
 
-  char AsmStrs[] = {
+#ifndef CAPSTONE_DIET
+  static char AsmStrs[] = {
   /* 0 */ 's', 'h', 'a', '1', 's', 'u', '0', 9, 0,
   /* 9 */ 's', 'h', 'a', '2', '5', '6', 's', 'u', '0', 9, 0,
   /* 20 */ 'l', 'd', '1', 9, 0,
@@ -5994,12 +5995,17 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   /* 2804 */ 'd', 'r', 'p', 's', 0,
   /* 2809 */ 'e', 'r', 'e', 't', 0,
   };
+#endif
 
   // Emit the opcode for the instruction.
   uint64_t Bits1 = OpInfo[MCInst_getOpcode(MI)];
   uint64_t Bits2 = OpInfo2[MCInst_getOpcode(MI)];
   uint64_t Bits = (Bits2 << 32) | Bits1;
-  SStream_concat(O, "%s",AsmStrs+(Bits & 4095)-1);
+  // assert(Bits != 0 && "Cannot print this instruction.");
+#ifndef CAPSTONE_DIET
+  SStream_concat(O, "%s", AsmStrs+(Bits & 4095)-1);
+#endif
+
 
   // Fragment 0 encoded into 8 bits for 159 unique commands.
   //printf("Frag-0: %"PRIu64"\n", (Bits >> 12) & 255);
@@ -6019,7 +6025,7 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 3:
     // ATix
-    printNamedImmOperand(&AArch64_ATMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64AT_ATMapper); 
     SStream_concat(O, ", "); 
     printOperand(MI, 1, O); 
     return;
@@ -6038,312 +6044,312 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 6:
     // DCix
-    printNamedImmOperand(&AArch64_DCMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64DC_DCMapper); 
     SStream_concat(O, ", "); 
     printOperand(MI, 1, O); 
     return;
     break;
   case 7:
     // DMBi, DSBi
-    printNamedImmOperand(&AArch64_DBarrierMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64DB_DBarrierMapper); 
     return;
     break;
   case 8:
     // ICi, ICix
-    printNamedImmOperand(&AArch64_ICMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64IC_ICMapper); 
     break;
   case 9:
     // ISBi
-    printNamedImmOperand(&AArch64_ISBMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64ISB_ISBMapper); 
     return;
     break;
   case 10:
     // LD1LN_B, LD1LN_WB_B_fixed, LD1LN_WB_B_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_B, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_B, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 11:
     // LD1LN_D, LD1LN_WB_D_fixed, LD1LN_WB_D_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_D, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_D, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 12:
     // LD1LN_H, LD1LN_WB_H_fixed, LD1LN_WB_H_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_H, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_H, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 13:
     // LD1LN_S, LD1LN_WB_S_fixed, LD1LN_WB_S_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_S, 1);
+    printVectorList(MI, 0, O, A64Layout_VL_S, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 14:
     // LD1R_16B, LD1R_WB_16B_fixed, LD1R_WB_16B_register, LD1WB_16B_fixed, LD...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_16B, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_16B, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 15:
     // LD1R_1D, LD1R_WB_1D_fixed, LD1R_WB_1D_register, LD1WB_1D_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_1D, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_1D, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 16:
     // LD1R_2D, LD1R_WB_2D_fixed, LD1R_WB_2D_register, LD1WB_2D_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2D, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_2D, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 17:
     // LD1R_2S, LD1R_WB_2S_fixed, LD1R_WB_2S_register, LD1WB_2S_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2S, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_2S, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 18:
     // LD1R_4H, LD1R_WB_4H_fixed, LD1R_WB_4H_register, LD1WB_4H_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4H, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_4H, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 19:
     // LD1R_4S, LD1R_WB_4S_fixed, LD1R_WB_4S_register, LD1WB_4S_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4S, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_4S, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 20:
     // LD1R_8B, LD1R_WB_8B_fixed, LD1R_WB_8B_register, LD1WB_8B_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8B, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_8B, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 21:
     // LD1R_8H, LD1R_WB_8H_fixed, LD1R_WB_8H_register, LD1WB_8H_fixed, LD1WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8H, 1); 
+    printVectorList(MI, 0, O, A64Layout_VL_8H, 1, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 22:
     // LD1x2WB_16B_fixed, LD1x2WB_16B_register, LD1x2_16B, LD2R_16B, LD2R_WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_16B, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_16B, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 23:
     // LD1x2WB_1D_fixed, LD1x2WB_1D_register, LD1x2_1D, LD2R_1D, LD2R_WB_1D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_1D, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_1D, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 24:
     // LD1x2WB_2D_fixed, LD1x2WB_2D_register, LD1x2_2D, LD2R_2D, LD2R_WB_2D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2D, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_2D, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 25:
     // LD1x2WB_2S_fixed, LD1x2WB_2S_register, LD1x2_2S, LD2R_2S, LD2R_WB_2S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2S, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_2S, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 26:
     // LD1x2WB_4H_fixed, LD1x2WB_4H_register, LD1x2_4H, LD2R_4H, LD2R_WB_4H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4H, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_4H, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 27:
     // LD1x2WB_4S_fixed, LD1x2WB_4S_register, LD1x2_4S, LD2R_4S, LD2R_WB_4S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4S, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_4S, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 28:
     // LD1x2WB_8B_fixed, LD1x2WB_8B_register, LD1x2_8B, LD2R_8B, LD2R_WB_8B_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8B, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_8B, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 29:
     // LD1x2WB_8H_fixed, LD1x2WB_8H_register, LD1x2_8H, LD2R_8H, LD2R_WB_8H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8H, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_8H, 2, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 30:
     // LD1x3WB_16B_fixed, LD1x3WB_16B_register, LD1x3_16B, LD3R_16B, LD3R_WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_16B, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_16B, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 31:
     // LD1x3WB_1D_fixed, LD1x3WB_1D_register, LD1x3_1D, LD3R_1D, LD3R_WB_1D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_1D, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_1D, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 32:
     // LD1x3WB_2D_fixed, LD1x3WB_2D_register, LD1x3_2D, LD3R_2D, LD3R_WB_2D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2D, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_2D, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 33:
     // LD1x3WB_2S_fixed, LD1x3WB_2S_register, LD1x3_2S, LD3R_2S, LD3R_WB_2S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2S, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_2S, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 34:
     // LD1x3WB_4H_fixed, LD1x3WB_4H_register, LD1x3_4H, LD3R_4H, LD3R_WB_4H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4H, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_4H, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 35:
     // LD1x3WB_4S_fixed, LD1x3WB_4S_register, LD1x3_4S, LD3R_4S, LD3R_WB_4S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4S, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_4S, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 36:
     // LD1x3WB_8B_fixed, LD1x3WB_8B_register, LD1x3_8B, LD3R_8B, LD3R_WB_8B_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8B, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_8B, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 37:
     // LD1x3WB_8H_fixed, LD1x3WB_8H_register, LD1x3_8H, LD3R_8H, LD3R_WB_8H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8H, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_8H, 3, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 38:
     // LD1x4WB_16B_fixed, LD1x4WB_16B_register, LD1x4_16B, LD4R_16B, LD4R_WB_...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_16B, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_16B, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 39:
     // LD1x4WB_1D_fixed, LD1x4WB_1D_register, LD1x4_1D, LD4R_1D, LD4R_WB_1D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_1D, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_1D, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 40:
     // LD1x4WB_2D_fixed, LD1x4WB_2D_register, LD1x4_2D, LD4R_2D, LD4R_WB_2D_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2D, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_2D, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 41:
     // LD1x4WB_2S_fixed, LD1x4WB_2S_register, LD1x4_2S, LD4R_2S, LD4R_WB_2S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_2S, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_2S, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 42:
     // LD1x4WB_4H_fixed, LD1x4WB_4H_register, LD1x4_4H, LD4R_4H, LD4R_WB_4H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4H, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_4H, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 43:
     // LD1x4WB_4S_fixed, LD1x4WB_4S_register, LD1x4_4S, LD4R_4S, LD4R_WB_4S_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_4S, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_4S, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 44:
     // LD1x4WB_8B_fixed, LD1x4WB_8B_register, LD1x4_8B, LD4R_8B, LD4R_WB_8B_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8B, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_8B, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 45:
     // LD1x4WB_8H_fixed, LD1x4WB_8H_register, LD1x4_8H, LD4R_8H, LD4R_WB_8H_f...
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_8H, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_8H, 4, MRI); 
     SStream_concat(O, ", ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 46:
     // LD2LN_B, LD2LN_WB_B_fixed, LD2LN_WB_B_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_B, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_B, 2, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 47:
     // LD2LN_D, LD2LN_WB_D_fixed, LD2LN_WB_D_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_D, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_D, 2, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 48:
     // LD2LN_H, LD2LN_WB_H_fixed, LD2LN_WB_H_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_H, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_H, 2, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 49:
     // LD2LN_S, LD2LN_WB_S_fixed, LD2LN_WB_S_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_S, 2); 
+    printVectorList(MI, 0, O, A64Layout_VL_S, 2, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 50:
     // LD3LN_B, LD3LN_WB_B_fixed, LD3LN_WB_B_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_B, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_B, 3, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 51:
     // LD3LN_D, LD3LN_WB_D_fixed, LD3LN_WB_D_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_D, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_D, 3, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 52:
     // LD3LN_H, LD3LN_WB_H_fixed, LD3LN_WB_H_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_H, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_H, 3, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 53:
     // LD3LN_S, LD3LN_WB_S_fixed, LD3LN_WB_S_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_S, 3); 
+    printVectorList(MI, 0, O, A64Layout_VL_S, 3, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 54:
     // LD4LN_B, LD4LN_WB_B_fixed, LD4LN_WB_B_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_B, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_B, 4, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 55:
     // LD4LN_D, LD4LN_WB_D_fixed, LD4LN_WB_D_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_D, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_D, 4, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 56:
     // LD4LN_H, LD4LN_WB_H_fixed, LD4LN_WB_H_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_H, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_H, 4, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 57:
     // LD4LN_S, LD4LN_WB_S_fixed, LD4LN_WB_S_register
-    printVectorList(MI, 0, O, MRI, A64Layout_VL_S, 4); 
+    printVectorList(MI, 0, O, A64Layout_VL_S, 4, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     break;
   case 58:
     // LS16_PostInd_STR, LS16_PreInd_STR, LS32_PostInd_STR, LS32_PreInd_STR, ...
@@ -6351,7 +6357,7 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 59:
     // MSRii
-    printNamedImmOperand(&AArch64_PStateMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64PState_PStateMapper); 
     SStream_concat(O, ", "); 
     printOperand(MI, 1, O); 
     return;
@@ -6365,1147 +6371,1147 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 61:
     // PRFM, PRFM_Wm_RegOffset, PRFM_Xm_RegOffset, PRFM_lit, PRFUM
-    printNamedImmOperand(&AArch64_PRFMMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64PRFM_PRFMMapper); 
     break;
   case 62:
     // ST1LN_B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_B, 1); 
+    printVectorList(MI, 1, O, A64Layout_VL_B, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
+    set_mem_access(MI, false);
     SStream_concat(O, "], ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
     SStream_concat(O, "]"); 
-       set_mem_access(MI, false);
+    set_mem_access(MI, false);
     return;
     break;
   case 63:
     // ST1LN_D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_D, 1); 
+    printVectorList(MI, 1, O, A64Layout_VL_D, 1, MRI); 
     SStream_concat(O, "["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
+    set_mem_access(MI, false);
     SStream_concat(O, "], ["); 
-       set_mem_access(MI, true);
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 64:
     // ST1LN_H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_H, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_H, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 65:
     // ST1LN_S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_S, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_S, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 66:
     // ST1LN_WB_B_fixed, ST1LN_WB_B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_B, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_B, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 67:
     // ST1LN_WB_D_fixed, ST1LN_WB_D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_D, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_D, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 68:
     // ST1LN_WB_H_fixed, ST1LN_WB_H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_H, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_H, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 69:
     // ST1LN_WB_S_fixed, ST1LN_WB_S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_S, 1); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_S, 1, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 70:
     // ST1WB_16B_fixed, ST1WB_16B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_16B, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_16B, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 71:
     // ST1WB_1D_fixed, ST1WB_1D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_1D, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_1D, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 72:
     // ST1WB_2D_fixed, ST1WB_2D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2D, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2D, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 73:
     // ST1WB_2S_fixed, ST1WB_2S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2S, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2S, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 74:
     // ST1WB_4H_fixed, ST1WB_4H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4H, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4H, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 75:
     // ST1WB_4S_fixed, ST1WB_4S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4S, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4S, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 76:
     // ST1WB_8B_fixed, ST1WB_8B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8B, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8B, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 77:
     // ST1WB_8H_fixed, ST1WB_8H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8H, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8H, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 78:
     // ST1_16B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 79:
     // ST1_1D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_1D, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_1D, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 80:
     // ST1_2D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2D, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2D, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 81:
     // ST1_2S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2S, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2S, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 82:
     // ST1_4H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4H, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4H, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 83:
     // ST1_4S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4S, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4S, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 84:
     // ST1_8B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8B, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8B, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 85:
     // ST1_8H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8H, 1); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8H, 1, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 86:
     // ST1x2WB_16B_fixed, ST1x2WB_16B_register, ST2WB_16B_fixed, ST2WB_16B_re...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_16B, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_16B, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 87:
     // ST1x2WB_1D_fixed, ST1x2WB_1D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_1D, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_1D, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 88:
     // ST1x2WB_2D_fixed, ST1x2WB_2D_register, ST2WB_2D_fixed, ST2WB_2D_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2D, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2D, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 89:
     // ST1x2WB_2S_fixed, ST1x2WB_2S_register, ST2WB_2S_fixed, ST2WB_2S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2S, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2S, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 90:
     // ST1x2WB_4H_fixed, ST1x2WB_4H_register, ST2WB_4H_fixed, ST2WB_4H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4H, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4H, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 91:
     // ST1x2WB_4S_fixed, ST1x2WB_4S_register, ST2WB_4S_fixed, ST2WB_4S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4S, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4S, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 92:
     // ST1x2WB_8B_fixed, ST1x2WB_8B_register, ST2WB_8B_fixed, ST2WB_8B_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8B, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8B, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 93:
     // ST1x2WB_8H_fixed, ST1x2WB_8H_register, ST2WB_8H_fixed, ST2WB_8H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8H, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8H, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 94:
     // ST1x2_16B, ST2_16B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 95:
     // ST1x2_1D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_1D, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_1D, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 96:
     // ST1x2_2D, ST2_2D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2D, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2D, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 97:
     // ST1x2_2S, ST2_2S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2S, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2S, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 98:
     // ST1x2_4H, ST2_4H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4H, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4H, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 99:
     // ST1x2_4S, ST2_4S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4S, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4S, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 100:
     // ST1x2_8B, ST2_8B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8B, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8B, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 101:
     // ST1x2_8H, ST2_8H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8H, 2); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8H, 2, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 102:
     // ST1x3WB_16B_fixed, ST1x3WB_16B_register, ST3WB_16B_fixed, ST3WB_16B_re...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_16B, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_16B, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 103:
     // ST1x3WB_1D_fixed, ST1x3WB_1D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_1D, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_1D, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 104:
     // ST1x3WB_2D_fixed, ST1x3WB_2D_register, ST3WB_2D_fixed, ST3WB_2D_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2D, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2D, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 105:
     // ST1x3WB_2S_fixed, ST1x3WB_2S_register, ST3WB_2S_fixed, ST3WB_2S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2S, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2S, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 106:
     // ST1x3WB_4H_fixed, ST1x3WB_4H_register, ST3WB_4H_fixed, ST3WB_4H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4H, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4H, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 107:
     // ST1x3WB_4S_fixed, ST1x3WB_4S_register, ST3WB_4S_fixed, ST3WB_4S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4S, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4S, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 108:
     // ST1x3WB_8B_fixed, ST1x3WB_8B_register, ST3WB_8B_fixed, ST3WB_8B_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8B, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8B, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 109:
     // ST1x3WB_8H_fixed, ST1x3WB_8H_register, ST3WB_8H_fixed, ST3WB_8H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8H, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8H, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 110:
     // ST1x3_16B, ST3_16B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 111:
     // ST1x3_1D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_1D, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_1D, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 112:
     // ST1x3_2D, ST3_2D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2D, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2D, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 113:
     // ST1x3_2S, ST3_2S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2S, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2S, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 114:
     // ST1x3_4H, ST3_4H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4H, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4H, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 115:
     // ST1x3_4S, ST3_4S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4S, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4S, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 116:
     // ST1x3_8B, ST3_8B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8B, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8B, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 117:
     // ST1x3_8H, ST3_8H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8H, 3); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8H, 3, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 118:
     // ST1x4WB_16B_fixed, ST1x4WB_16B_register, ST4WB_16B_fixed, ST4WB_16B_re...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_16B, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_16B, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 119:
     // ST1x4WB_1D_fixed, ST1x4WB_1D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_1D, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_1D, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 120:
     // ST1x4WB_2D_fixed, ST1x4WB_2D_register, ST4WB_2D_fixed, ST4WB_2D_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2D, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2D, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 121:
     // ST1x4WB_2S_fixed, ST1x4WB_2S_register, ST4WB_2S_fixed, ST4WB_2S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_2S, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_2S, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 122:
     // ST1x4WB_4H_fixed, ST1x4WB_4H_register, ST4WB_4H_fixed, ST4WB_4H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4H, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4H, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 123:
     // ST1x4WB_4S_fixed, ST1x4WB_4S_register, ST4WB_4S_fixed, ST4WB_4S_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_4S, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_4S, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 124:
     // ST1x4WB_8B_fixed, ST1x4WB_8B_register, ST4WB_8B_fixed, ST4WB_8B_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8B, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8B, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 125:
     // ST1x4WB_8H_fixed, ST1x4WB_8H_register, ST4WB_8H_fixed, ST4WB_8H_regist...
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_8H, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_8H, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 126:
     // ST1x4_16B, ST4_16B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 127:
     // ST1x4_1D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_1D, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_1D, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 128:
     // ST1x4_2D, ST4_2D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2D, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2D, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 129:
     // ST1x4_2S, ST4_2S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_2S, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_2S, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 130:
     // ST1x4_4H, ST4_4H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4H, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4H, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 131:
     // ST1x4_4S, ST4_4S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_4S, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_4S, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 132:
     // ST1x4_8B, ST4_8B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8B, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8B, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 133:
     // ST1x4_8H, ST4_8H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_8H, 4); 
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_8H, 4, MRI); 
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 134:
     // ST2LN_B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_B, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_B, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 135:
     // ST2LN_D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_D, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_D, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 136:
     // ST2LN_H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_H, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_H, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 137:
     // ST2LN_S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_S, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_S, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 138:
     // ST2LN_WB_B_fixed, ST2LN_WB_B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_B, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_B, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 139:
     // ST2LN_WB_D_fixed, ST2LN_WB_D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_D, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_D, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 140:
     // ST2LN_WB_H_fixed, ST2LN_WB_H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_H, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_H, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 141:
     // ST2LN_WB_S_fixed, ST2LN_WB_S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_S, 2); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_S, 2, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 142:
     // ST3LN_B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_B, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_B, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 143:
     // ST3LN_D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_D, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_D, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 144:
     // ST3LN_H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_H, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_H, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 145:
     // ST3LN_S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_S, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_S, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 146:
     // ST3LN_WB_B_fixed, ST3LN_WB_B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_B, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_B, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 147:
     // ST3LN_WB_D_fixed, ST3LN_WB_D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_D, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_D, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 148:
     // ST3LN_WB_H_fixed, ST3LN_WB_H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_H, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_H, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 149:
     // ST3LN_WB_S_fixed, ST3LN_WB_S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_S, 3); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_S, 3, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 150:
     // ST4LN_B
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_B, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_B, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 151:
     // ST4LN_D
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_D, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_D, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 152:
     // ST4LN_H
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_H, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_H, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 153:
     // ST4LN_S
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_S, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 1, O, A64Layout_VL_S, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 2, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 0, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 154:
     // ST4LN_WB_B_fixed, ST4LN_WB_B_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_B, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_B, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 155:
     // ST4LN_WB_D_fixed, ST4LN_WB_D_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_D, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_D, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 156:
     // ST4LN_WB_H_fixed, ST4LN_WB_H_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_H, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_H, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 157:
     // ST4LN_WB_S_fixed, ST4LN_WB_S_register
-    printVectorList(MI, 3, O, MRI, A64Layout_VL_S, 4); 
-    SStream_concat(O, "[");
-       set_mem_access(MI, true);
+    printVectorList(MI, 3, O, A64Layout_VL_S, 4, MRI); 
+    SStream_concat(O, "["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 2, O); 
     return;
     break;
   case 158:
     // TLBIi, TLBIix
-    printNamedImmOperand(&AArch64_TLBIMapper, MI, 0, O); 
+    printNamedImmOperand(MI, 0, O, &A64TLBI_TLBIMapper); 
     break;
   }
 
@@ -7516,35 +7522,35 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   default:   // unreachable.
   case 0:
     // ABS16b, ADDHN2vvv_16b8h, ADDP_16B, ADDvvv_16B, AESD, AESE, AESIMC, AES...
-    SStream_concat(O, ".16b, ");
+    SStream_concat(O, ".16b, "); 
     break;
   case 1:
     // ABS2d, ADDP_2D, ADDvvv_2D, CMEQvvi_2D, CMEQvvv_2D, CMGEvvi_2D, CMGEvvv...
-    SStream_concat(O, ".2d, ");
+    SStream_concat(O, ".2d, "); 
     break;
   case 2:
     // ABS2s, ADDHNvvv_2s2d, ADDP_2S, ADDvvv_2S, BICvi_lsl_2S, CLS2s, CLZ2s, ...
-    SStream_concat(O, ".2s, ");
+    SStream_concat(O, ".2s, "); 
     break;
   case 3:
     // ABS4h, ADDHNvvv_4h4s, ADDP_4H, ADDvvv_4H, BICvi_lsl_4H, CLS4h, CLZ4h, ...
-    SStream_concat(O, ".4h, ");
+    SStream_concat(O, ".4h, "); 
     break;
   case 4:
     // ABS4s, ADDHN2vvv_4s2d, ADDP_4S, ADDvvv_4S, BICvi_lsl_4S, CLS4s, CLZ4s,...
-    SStream_concat(O, ".4s, ");
+    SStream_concat(O, ".4s, "); 
     break;
   case 5:
     // ABS8b, ADDHNvvv_8b8h, ADDP_8B, ADDvvv_8B, ANDvvv_8B, BICvvv_8B, BIFvvv...
-    SStream_concat(O, ".8b, ");
+    SStream_concat(O, ".8b, "); 
     break;
   case 6:
     // ABS8h, ADDHN2vvv_8h4s, ADDP_8H, ADDvvv_8H, BICvi_lsl_8H, CLS8h, CLZ8h,...
-    SStream_concat(O, ".8h, ");
+    SStream_concat(O, ".8h, "); 
     break;
   case 7:
     // ABSdd, ADCSwww, ADCSxxx, ADCwww, ADCxxx, ADDPvv_D_2D, ADDSwww_asr, ADD...
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     break;
   case 8:
     // BLRx, BRKi, BRx, CLREXi, DCPS1i, DCPS2i, DCPS3i, HINTi, HLTi, HVCi, IC...
@@ -7552,84 +7558,84 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 9:
     // FMOVvx, INSELd, INSdx
-    SStream_concat(O, ".d[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".d["); 
+    set_mem_access(MI, true);
     break;
   case 10:
     // INSELb, INSbw
-    SStream_concat(O, ".b[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".b["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 3, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     break;
   case 11:
     // INSELh, INShw
-    SStream_concat(O, ".h[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".h["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 3, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     break;
   case 12:
     // INSELs, INSsw
-    SStream_concat(O, ".s[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".s["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 3, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     break;
   case 13:
     // LD1LN_B, LD1LN_D, LD1LN_H, LD1LN_S, LD2LN_B, LD2LN_D, LD2LN_H, LD2LN_S...
     printUImmBareOperand(MI, 3, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 1, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 14:
     // LD1LN_WB_B_fixed, LD1LN_WB_B_register, LD1LN_WB_D_fixed, LD1LN_WB_D_re...
     printUImmBareOperand(MI, 5, O); 
-       set_mem_access(MI, false);
-    SStream_concat(O, "], [");
-       set_mem_access(MI, true);
+    set_mem_access(MI, false);
+    SStream_concat(O, "], ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 2, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 3, O); 
     return;
     break;
   case 15:
     // LD1R_16B, LD1R_1D, LD1R_2D, LD1R_2S, LD1R_4H, LD1R_4S, LD1R_8B, LD1R_8...
     printOperand(MI, 1, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 16:
     // LD1R_WB_16B_fixed, LD1R_WB_16B_register, LD1R_WB_1D_fixed, LD1R_WB_1D_...
     printOperand(MI, 2, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 3, O); 
     return;
     break;
   case 17:
     // LDAR_byte, LDAR_dword, LDAR_hword, LDAR_word, LDAXR_byte, LDAXR_dword,...
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     break;
   case 18:
     // PMULL2vvv_1q2d, PMULLvvv_1q1d
-    SStream_concat(O, ".1q, ");
+    SStream_concat(O, ".1q, "); 
     printVPRRegister(MI, 1, O); 
     break;
   case 19:
     // SADALP2s1d, SADDLP2s1d, UADALP2s1d, UADDLP2s1d
-    SStream_concat(O, ".1d, ");
+    SStream_concat(O, ".1d, "); 
     break;
   }
 
@@ -7696,16 +7702,16 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 12:
     // FMOVvx
     printBareImmOperand(MI, 2, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOperand(MI, 1, O); 
     return;
     break;
   case 13:
     // INSELd, INSdx
     printUImmBareOperand(MI, 3, O); 
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     break;
   case 14:
     // MOVIdi, MOVIvi_2D
@@ -7733,75 +7739,75 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 19:
     // PMULL2vvv_1q2d
-    SStream_concat(O, ".2d, ");
+    SStream_concat(O, ".2d, "); 
     printVPRRegister(MI, 2, O); 
-    SStream_concat(O, ".2d");
+    SStream_concat(O, ".2d"); 
     return;
     break;
   case 20:
     // PMULLvvv_1q1d
-    SStream_concat(O, ".1d, ");
+    SStream_concat(O, ".1d, "); 
     printVPRRegister(MI, 2, O); 
-    SStream_concat(O, ".1d");
+    SStream_concat(O, ".1d"); 
     return;
     break;
   case 21:
     // SYSiccix
     printCRxOperand(MI, 1, O); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printCRxOperand(MI, 2, O); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printOperand(MI, 3, O); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printOperand(MI, 4, O); 
     return;
     break;
   case 22:
     // TBL1_16b, TBL1_8b
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 1); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 1, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 2, O); 
     break;
   case 23:
     // TBL2_16b, TBL2_8b
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 2); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 2, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 2, O); 
     break;
   case 24:
     // TBL3_16b, TBL3_8b
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 3); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 3, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 2, O); 
     break;
   case 25:
     // TBL4_16b, TBL4_8b
-    printVectorList(MI, 1, O, MRI, A64Layout_VL_16B, 4); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 1, O, A64Layout_VL_16B, 4, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 2, O); 
     break;
   case 26:
     // TBX1_16b, TBX1_8b
-    printVectorList(MI, 2, O, MRI, A64Layout_VL_16B, 1); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 2, O, A64Layout_VL_16B, 1, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 3, O); 
     break;
   case 27:
     // TBX2_16b, TBX2_8b
-    printVectorList(MI, 2, O, MRI, A64Layout_VL_16B, 2); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 2, O, A64Layout_VL_16B, 2, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 3, O); 
     break;
   case 28:
     // TBX3_16b, TBX3_8b
-    printVectorList(MI, 2, O, MRI, A64Layout_VL_16B, 3); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 2, O, A64Layout_VL_16B, 3, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 3, O); 
     break;
   case 29:
     // TBX4_16b, TBX4_8b
-    printVectorList(MI, 2, O, MRI, A64Layout_VL_16B, 4); 
-    SStream_concat(O, ", ");
+    printVectorList(MI, 2, O, A64Layout_VL_16B, 4, MRI); 
+    SStream_concat(O, ", "); 
     printVPRRegister(MI, 3, O); 
     break;
   }
@@ -7813,37 +7819,37 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   default:   // unreachable.
   case 0:
     // ABS16b, ADDV_1b16b, AESD, AESE, AESIMC, AESMC, CLS16b, CLZ16b, CNT16b,...
-    SStream_concat(O, ".16b");
+    SStream_concat(O, ".16b"); 
     return;
     break;
   case 1:
     // ABS2d, ADDPvv_D_2D, FABS2d, FADDPvv_D_2D, FCVTAS_2d, FCVTAU_2d, FCVTMS...
-    SStream_concat(O, ".2d");
+    SStream_concat(O, ".2d"); 
     return;
     break;
   case 2:
     // ABS2s, CLS2s, CLZ2s, FABS2s, FADDPvv_S_2S, FCVTAS_2s, FCVTAU_2s, FCVTL...
-    SStream_concat(O, ".2s");
+    SStream_concat(O, ".2s"); 
     return;
     break;
   case 3:
     // ABS4h, ADDV_1h4h, CLS4h, CLZ4h, FCVTL4h4s, NEG4h, REV32_4h, REV64_4h, ...
-    SStream_concat(O, ".4h");
+    SStream_concat(O, ".4h"); 
     return;
     break;
   case 4:
     // ABS4s, ADDV_1s4s, CLS4s, CLZ4s, FABS4s, FCVTAS_4s, FCVTAU_4s, FCVTL4s2...
-    SStream_concat(O, ".4s");
+    SStream_concat(O, ".4s"); 
     return;
     break;
   case 5:
     // ABS8b, ADDV_1b8b, CLS8b, CLZ8b, CNT8b, NEG8b, NOT8b, RBIT8b, REV16_8b,...
-    SStream_concat(O, ".8b");
+    SStream_concat(O, ".8b"); 
     return;
     break;
   case 6:
     // ABS8h, ADDV_1h8h, CLS8h, CLZ8h, FCVTL8h4s, NEG8h, REV32_8h, REV64_8h, ...
-    SStream_concat(O, ".8h");
+    SStream_concat(O, ".8h"); 
     return;
     break;
   case 7:
@@ -7852,35 +7858,35 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 8:
     // ADCSwww, ADCSxxx, ADCwww, ADCxxx, ADDSwww_asr, ADDSwww_lsl, ADDSwww_ls...
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     break;
   case 9:
     // ADDHN2vvv_16b8h, ADDHNvvv_8b8h, ADDP_8H, ADDvvv_8H, CMEQvvi_8H, CMEQvv...
-    SStream_concat(O, ".8h, ");
+    SStream_concat(O, ".8h, "); 
     break;
   case 10:
     // ADDHN2vvv_4s2d, ADDHNvvv_2s2d, ADDP_2D, ADDvvv_2D, CMEQvvi_2D, CMEQvvv...
-    SStream_concat(O, ".2d, ");
+    SStream_concat(O, ".2d, "); 
     break;
   case 11:
     // ADDHN2vvv_8h4s, ADDHNvvv_4h4s, ADDP_4S, ADDvvv_4S, CMEQvvi_4S, CMEQvvv...
-    SStream_concat(O, ".4s, ");
+    SStream_concat(O, ".4s, "); 
     break;
   case 12:
     // ADDP_16B, ADDvvv_16B, ANDvvv_16B, BICvvv_16B, BIFvvv_16B, BITvvv_16B, ...
-    SStream_concat(O, ".16b, ");
+    SStream_concat(O, ".16b, "); 
     break;
   case 13:
     // ADDP_2S, ADDvvv_2S, CMEQvvi_2S, CMEQvvv_2S, CMGEvvi_2S, CMGEvvv_2S, CM...
-    SStream_concat(O, ".2s, ");
+    SStream_concat(O, ".2s, "); 
     break;
   case 14:
     // ADDP_4H, ADDvvv_4H, CMEQvvi_4H, CMEQvvv_4H, CMGEvvi_4H, CMGEvvv_4H, CM...
-    SStream_concat(O, ".4h, ");
+    SStream_concat(O, ".4h, "); 
     break;
   case 15:
     // ADDP_8B, ADDvvv_8B, ANDvvv_8B, BICvvv_8B, BIFvvv_8B, BITvvv_8B, BSLvvv...
-    SStream_concat(O, ".8b, ");
+    SStream_concat(O, ".8b, "); 
     break;
   case 16:
     // BICvi_lsl_2S, BICvi_lsl_4S, ORRvi_lsl_2S, ORRvi_lsl_4S
@@ -7894,32 +7900,32 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 18:
     // DUPELT16b, DUPELT8b, DUPbv_B, INSELb, SMOVwb, SMOVxb, UMOVwb
-    SStream_concat(O, ".b[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".b["); 
+    set_mem_access(MI, true);
     break;
   case 19:
     // DUPELT2d, DUPdv_D, FMOVxv, UMOVxd
-    SStream_concat(O, ".d[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".d["); 
+    set_mem_access(MI, true);
     break;
   case 20:
     // DUPELT2s, DUPELT4s, DUPsv_S, INSELs, SMOVxs, UMOVws
-    SStream_concat(O, ".s[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".s["); 
+    set_mem_access(MI, true);
     break;
   case 21:
     // DUPELT4h, DUPELT8h, DUPhv_H, INSELh, SMOVwh, SMOVxh, UMOVwh
-    SStream_concat(O, ".h[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".h["); 
+    set_mem_access(MI, true);
     break;
   case 22:
     // INSELd
     printVPRRegister(MI, 2, O); 
-    SStream_concat(O, ".d[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".d["); 
+    set_mem_access(MI, true);
     printUImmBareOperand(MI, 4, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 23:
@@ -7929,19 +7935,19 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 24:
     // LDAR_byte, LDAR_dword, LDAR_hword, LDAR_word, LDAXR_byte, LDAXR_dword,...
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 25:
     // LDAXP_dword, LDAXP_word, LDPSWx, LDPSWx_PostInd, LDPSWx_PreInd, LDXP_d...
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     break;
   case 26:
     // LDRSBw_PostInd, LDRSBx_PostInd, LDRSHw_PostInd, LDRSHx_PostInd, LDRSWx...
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     printOffsetSImm9Operand(MI, 3, O); 
     return;
     break;
@@ -8002,14 +8008,14 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 7:
     // BFIwwii
     printBFILSBOperand(MI, 3, O, 32); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printBFIWidthOperand(MI, 4, O); 
     return;
     break;
   case 8:
     // BFIxxii
     printBFILSBOperand(MI, 3, O, 64); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printBFIWidthOperand(MI, 4, O); 
     return;
     break;
@@ -8080,8 +8086,8 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 22:
     // DUPELT16b, DUPELT2d, DUPELT2s, DUPELT4h, DUPELT4s, DUPELT8b, DUPELT8h,...
     printUImmBareOperand(MI, 2, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 23:
@@ -8097,64 +8103,64 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 25:
     // FMOVxv
     printBareImmOperand(MI, 2, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 26:
     // INSELb, INSELh, INSELs
     printUImmBareOperand(MI, 4, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 27:
     // LDRSBw, LDRSBx, LS8_LDR, LS8_STR, LSFP8_LDR, LSFP8_STR
     printOffsetUImm12Operand(MI, 2, O, 1); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 28:
     // LDRSBw_PreInd, LDRSBx_PreInd, LDRSHw_PreInd, LDRSHx_PreInd, LDRSWx_Pre...
     printOffsetSImm9Operand(MI, 3, O); 
-    SStream_concat(O, "]!");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]!"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 29:
     // LDRSBw_U, LDRSBx_U, LDRSHw_U, LDRSHx_U, LDTRSBw, LDTRSBx, LDTRSHw, LDT...
     printOffsetSImm9Operand(MI, 2, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 30:
     // LDRSHw, LDRSHx, LS16_LDR, LS16_STR, LSFP16_LDR, LSFP16_STR
     printOffsetUImm12Operand(MI, 2, O, 2); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 31:
     // LDRSWx, LS32_LDR, LS32_STR, LSFP32_LDR, LSFP32_STR
     printOffsetUImm12Operand(MI, 2, O, 4); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 32:
     // LS64_LDR, LS64_STR, LSFP64_LDR, LSFP64_STR, PRFM
     printOffsetUImm12Operand(MI, 2, O, 8); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 33:
     // LSFP128_LDR, LSFP128_STR
     printOffsetUImm12Operand(MI, 2, O, 16); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 34:
@@ -8165,23 +8171,23 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 35:
     // SBFIZwwii, UBFIZwwii
     printBFILSBOperand(MI, 2, O, 32); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printBFIWidthOperand(MI, 3, O); 
     return;
     break;
   case 36:
     // SBFIZxxii, UBFIZxxii
     printBFILSBOperand(MI, 2, O, 64); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printBFIWidthOperand(MI, 3, O); 
     return;
     break;
   case 37:
     // SYSLxicci
     printCRxOperand(MI, 2, O); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printCRxOperand(MI, 3, O); 
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     printOperand(MI, 4, O); 
     return;
     break;
@@ -8203,88 +8209,88 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
     break;
   case 1:
     // ADDHN2vvv_16b8h, ADDHNvvv_8b8h, ADDP_8H, ADDvvv_8H, CMEQvvv_8H, CMGEvv...
-    SStream_concat(O, ".8h");
+    SStream_concat(O, ".8h"); 
     return;
     break;
   case 2:
     // ADDHN2vvv_4s2d, ADDHNvvv_2s2d, ADDP_2D, ADDvvv_2D, CMEQvvv_2D, CMGEvvv...
-    SStream_concat(O, ".2d");
+    SStream_concat(O, ".2d"); 
     return;
     break;
   case 3:
     // ADDHN2vvv_8h4s, ADDHNvvv_4h4s, ADDP_4S, ADDvvv_4S, CMEQvvv_4S, CMGEvvv...
-    SStream_concat(O, ".4s");
+    SStream_concat(O, ".4s"); 
     return;
     break;
   case 4:
     // ADDP_16B, ADDvvv_16B, ANDvvv_16B, BICvvv_16B, BIFvvv_16B, BITvvv_16B, ...
-    SStream_concat(O, ".16b");
+    SStream_concat(O, ".16b"); 
     return;
     break;
   case 5:
     // ADDP_2S, ADDvvv_2S, CMEQvvv_2S, CMGEvvv_2S, CMGTvvv_2S, CMHIvvv_2S, CM...
-    SStream_concat(O, ".2s");
+    SStream_concat(O, ".2s"); 
     return;
     break;
   case 6:
     // ADDP_4H, ADDvvv_4H, CMEQvvv_4H, CMGEvvv_4H, CMGTvvv_4H, CMHIvvv_4H, CM...
-    SStream_concat(O, ".4h");
+    SStream_concat(O, ".4h"); 
     return;
     break;
   case 7:
     // ADDP_8B, ADDvvv_8B, ANDvvv_8B, BICvvv_8B, BIFvvv_8B, BITvvv_8B, BSLvvv...
-    SStream_concat(O, ".8b");
+    SStream_concat(O, ".8b"); 
     return;
     break;
   case 8:
     // ADDSwww_asr, ADDSwww_lsl, ADDSwww_lsr, ADDSwww_sxtb, ADDSwww_sxth, ADD...
-    SStream_concat(O, ", ");
+    SStream_concat(O, ", "); 
     break;
   case 9:
     // EXTvvvi_16b
-    SStream_concat(O, ".16b, ");
+    SStream_concat(O, ".16b, "); 
     printUImmHexOperand(MI, 3, O); 
     return;
     break;
   case 10:
     // EXTvvvi_8b
-    SStream_concat(O, ".8b, ");
+    SStream_concat(O, ".8b, "); 
     printUImmHexOperand(MI, 3, O); 
     return;
     break;
   case 11:
     // FMLAddv_2D, FMLAvve_2d2d, FMLSddv_2D, FMLSvve_2d2d, FMULXddv_2D, FMULX...
-    SStream_concat(O, ".d[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".d["); 
+    set_mem_access(MI, true);
     break;
   case 12:
     // FMLAssv_4S, FMLAvve_2s4s, FMLAvve_4s4s, FMLSssv_4S, FMLSvve_2s4s, FMLS...
-    SStream_concat(O, ".s[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".s["); 
+    set_mem_access(MI, true);
     break;
   case 13:
     // LDAXP_dword, LDAXP_word, LDXP_dword, LDXP_word, STLXR_byte, STLXR_dwor...
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 14:
     // LDPSWx_PostInd, LSFPPair128_PostInd_LDR, LSFPPair128_PostInd_STR, LSFP...
-    SStream_concat(O, "], ");
-       set_mem_access(MI, false);
+    SStream_concat(O, "], "); 
+    set_mem_access(MI, false);
     break;
   case 15:
     // MLAvve_4h8h, MLAvve_8h8h, MLSvve_4h8h, MLSvve_8h8h, MULve_4h8h, MULve_...
-    SStream_concat(O, ".h[");
-       set_mem_access(MI, true);
+    SStream_concat(O, ".h["); 
+    set_mem_access(MI, true);
     break;
   case 16:
     // STLXP_dword, STLXP_word, STXP_dword, STXP_word
-    SStream_concat(O, ", [");
-       set_mem_access(MI, true);
+    SStream_concat(O, ", ["); 
+    set_mem_access(MI, true);
     printOperand(MI, 3, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   }
@@ -8377,22 +8383,22 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 16:
     // FMLAddv_2D, FMLAssv_4S, FMLAvve_2d2d, FMLAvve_2s4s, FMLAvve_4s4s, FMLS...
     printUImmBareOperand(MI, 4, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 17:
     // FMULXddv_2D, FMULXssv_4S, FMULXve_2d2d, FMULXve_2s4s, FMULXve_4s4s, FM...
     printUImmBareOperand(MI, 3, O); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 18:
     // LDPSWx, LSFPPair32_LDR, LSFPPair32_NonTemp_LDR, LSFPPair32_NonTemp_STR...
     printSImm7ScaledOperand(MI, 3, O, 4); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 19:
@@ -8402,78 +8408,78 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 20:
     // LDRSBw_Wm_RegOffset, LDRSBx_Wm_RegOffset, LS8_Wm_RegOffset_LDR, LS8_Wm...
     printAddrRegExtendOperand(MI, 3, O, 1, 32); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 21:
     // LDRSBw_Xm_RegOffset, LDRSBx_Xm_RegOffset, LS8_Xm_RegOffset_LDR, LS8_Xm...
     printAddrRegExtendOperand(MI, 3, O, 1, 64); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 22:
     // LDRSHw_Wm_RegOffset, LDRSHx_Wm_RegOffset, LS16_Wm_RegOffset_LDR, LS16_...
     printAddrRegExtendOperand(MI, 3, O, 2, 32); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 23:
     // LDRSHw_Xm_RegOffset, LDRSHx_Xm_RegOffset, LS16_Xm_RegOffset_LDR, LS16_...
     printAddrRegExtendOperand(MI, 3, O, 2, 64); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 24:
     // LDRSWx_Wm_RegOffset, LS32_Wm_RegOffset_LDR, LS32_Wm_RegOffset_STR, LSF...
     printAddrRegExtendOperand(MI, 3, O, 4, 32); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 25:
     // LDRSWx_Xm_RegOffset, LS32_Xm_RegOffset_LDR, LS32_Xm_RegOffset_STR, LSF...
     printAddrRegExtendOperand(MI, 3, O, 4, 64); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 26:
     // LS64_Wm_RegOffset_LDR, LS64_Wm_RegOffset_STR, LSFP64_Wm_RegOffset_LDR,...
     printAddrRegExtendOperand(MI, 3, O, 8, 32); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 27:
     // LS64_Xm_RegOffset_LDR, LS64_Xm_RegOffset_STR, LSFP64_Xm_RegOffset_LDR,...
     printAddrRegExtendOperand(MI, 3, O, 8, 64); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 28:
     // LSFP128_Wm_RegOffset_LDR, LSFP128_Wm_RegOffset_STR
     printAddrRegExtendOperand(MI, 3, O, 16, 32); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 29:
     // LSFP128_Xm_RegOffset_LDR, LSFP128_Xm_RegOffset_STR
     printAddrRegExtendOperand(MI, 3, O, 16, 64); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 30:
     // LSFPPair128_LDR, LSFPPair128_NonTemp_LDR, LSFPPair128_NonTemp_STR, LSF...
     printSImm7ScaledOperand(MI, 3, O, 16); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 31:
@@ -8483,8 +8489,8 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   case 32:
     // LSFPPair64_LDR, LSFPPair64_NonTemp_LDR, LSFPPair64_NonTemp_STR, LSFPPa...
     printSImm7ScaledOperand(MI, 3, O, 8); 
-    SStream_concat(O, "]");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]"); 
+    set_mem_access(MI, false);
     return;
     break;
   case 33:
@@ -8503,13 +8509,14 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
   //printf("Frag-7: %"PRIu64"\n", (Bits >> 52) & 1);
   if ((Bits >> 52) & 1) {
     // LDPSWx_PreInd, LSFPPair128_PreInd_LDR, LSFPPair128_PreInd_STR, LSFPPai...
-    SStream_concat(O, "]!");
-       set_mem_access(MI, false);
+    SStream_concat(O, "]!"); 
+    set_mem_access(MI, false);
     return;
   } else {
     // LDPSWx_PostInd, LSFPPair128_PostInd_LDR, LSFPPair128_PostInd_STR, LSFP...
     return;
   }
+
 }
 
 
@@ -8518,8 +8525,9 @@ static void AArch64InstPrinter_printInstruction(MCInst *MI, SStream *O, MCRegist
 /// for the specified register.
 static char *getRegisterName(unsigned RegNo)
 {
-  //assert(RegNo && RegNo < 420 && "Invalid register number!");
+  // assert(RegNo && RegNo < 420 && "Invalid register number!");
 
+#ifndef CAPSTONE_DIET
   static char AsmStrs[] = {
   /* 0 */ 'D', '7', '_', 'D', '8', '_', 'D', '9', '_', 'D', '1', '0', 0,
   /* 13 */ 'Q', '7', '_', 'Q', '8', '_', 'Q', '9', '_', 'Q', '1', '0', 0,
@@ -8813,7 +8821,7 @@ static char *getRegisterName(unsigned RegNo)
   /* 1774 */ 'n', 'z', 'c', 'v', 0,
   };
 
-  static uint32_t RegAsmOffset[] = {
+  static const uint32_t RegAsmOffset[] = {
     1774, 1762, 1766, 1763, 1770, 204, 421, 586, 751, 916, 1081, 1246, 1411, 1576, 
     1741, 26, 253, 472, 639, 804, 969, 1134, 1299, 1464, 1629, 86, 313, 532, 
     699, 864, 1029, 1194, 1359, 1524, 1689, 146, 373, 207, 424, 589, 754, 919, 
@@ -8846,108 +8854,92 @@ static char *getRegisterName(unsigned RegNo)
     516, 683, 848, 1013, 1178, 1343, 1508, 1673, 130, 357, 189, 407, 573, 
   };
 
-  //assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
-  //       "Invalid alt name index for register!");
   //int i;
   //for (i = 0; i < sizeof(RegAsmOffset)/4; i++)
-  //     printf("%s = %u\n", AsmStrs+RegAsmOffset[i], i + 1);
+  //     printf("%s = %u\n", AsmStrs+RegAsmOffset[i], i + 1);
   //printf("*************************\n");
   return AsmStrs+RegAsmOffset[RegNo-1];
+#else
+  return NULL;
+#endif
 }
 
 #ifdef PRINT_ALIAS_INSTR
 #undef PRINT_ALIAS_INSTR
 
-static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
+static char *printAliasInstr(MCInst *MI, SStream *OS, void *info)
 {
-  char *AsmString;
-
-#define GETREGCLASS_CONTAIN(_class, _reg) MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, _class), MCOperand_getReg(MCInst_getOperand(MI, _reg)))
-
+  #define GETREGCLASS_CONTAIN(_class, _reg) MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, _class), MCOperand_getReg(MCInst_getOperand(MI, _reg)))
+  const char *AsmString;
   MCRegisterInfo *MRI = (MCRegisterInfo *)info;
-
   switch (MCInst_getOpcode(MI)) {
-  default: return false;
+  default: return NULL;
   case AArch64_ADDSwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDSwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "adds $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDSwww_uxtw:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDSwww_uxtw GPR32:$Rd, Rwsp:$Rn, GPR32:$Rm, 0)
       AsmString = "adds $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDSxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDSxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "adds $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDSxxx_uxtx:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDSxxx_uxtx GPR64:$Rd, Rxsp:$Rn, GPR64:$Rm, 0)
       AsmString = "adds $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDwwi_lsl0_s:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32wspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (ADDwwi_lsl0_s GPR32wsp:$Rd, Rwsp:$Rn, 0)
@@ -8956,47 +8948,39 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
     }
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32wspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (ADDwwi_lsl0_s Rwsp:$Rd, GPR32wsp:$Rn, 0)
       AsmString = "mov $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "add $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDwww_uxtw:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32wspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDwww_uxtw Rwsp:$Rd, GPR32wsp:$Rn, GPR32:$Rm, 0)
@@ -9005,29 +8989,24 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
     }
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32wspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32wspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDwww_uxtw GPR32wsp:$Rd, Rwsp:$Rn, GPR32:$Rm, 0)
       AsmString = "add $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDxxi_lsl0_s:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (ADDxxi_lsl0_s GPR64xsp:$Rd, Rxsp:$Rn, 0)
@@ -9036,47 +9015,39 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
     }
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (ADDxxi_lsl0_s Rxsp:$Rd, GPR64xsp:$Rn, 0)
       AsmString = "mov $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "add $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ADDxxx_uxtx:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDxxx_uxtx Rxsp:$Rd, GPR64xsp:$Rn, GPR64:$Rm, 0)
@@ -9085,165 +9056,138 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
     }
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ADDxxx_uxtx GPR64xsp:$Rd, Rxsp:$Rn, GPR64:$Rm, 0)
       AsmString = "add $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ANDSwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ANDSwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "ands $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ANDSxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ANDSxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "ands $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ANDwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ANDwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "and $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ANDxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (ANDxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "and $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_BICSwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (BICSwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "bics $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_BICSxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (BICSxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "bics $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_BICwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (BICwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "bic $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_BICxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (BICxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "bic $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CLREXi:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9252,127 +9196,111 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "clrex";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMNww_lsl:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMNww_lsl GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "cmn $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMNww_uxtw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMNww_uxtw Rwsp:$Rn, GPR32:$Rm, 0)
       AsmString = "cmn $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMNxx_lsl:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMNxx_lsl GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "cmn $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMNxx_uxtx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMNxx_uxtx Rxsp:$Rn, GPR64:$Rm, 0)
       AsmString = "cmn $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMPww_lsl:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMPww_lsl GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "cmp $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMPww_uxtw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RwspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RwspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMPww_uxtw Rwsp:$Rn, GPR32:$Rm, 0)
       AsmString = "cmp $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMPxx_lsl:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMPxx_lsl GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "cmp $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_CMPxx_uxtx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_RxspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_RxspRegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (CMPxx_uxtx Rxsp:$Rn, GPR64:$Rm, 0)
       AsmString = "cmp $\x01, $\x02";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_DCPS1i:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9381,7 +9309,7 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "dcps1";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_DCPS2i:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9390,7 +9318,7 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "dcps2";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_DCPS3i:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9399,79 +9327,67 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "dcps3";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_EONwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (EONwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "eon $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_EONxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (EONxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "eon $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_EORwww_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (EORwww_lsl GPR32:$Rd, GPR32:$Rn, GPR32:$Rm, 0)
       AsmString = "eor $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_EORxxx_lsl:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (EORxxx_lsl GPR64:$Rd, GPR64:$Rn, GPR64:$Rm, 0)
       AsmString = "eor $\x01, $\x02, $\x03";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_HINTi:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9515,7 +9431,7 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "sevl";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_ISBi:
     if (MCInst_getNumOperands(MI) == 1 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
@@ -9524,1767 +9440,1501 @@ static bool printAliasInstr(MCInst *MI, SStream *OS, void *info)
       AsmString = "isb";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDPSWx:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LDPSWx GPR64:$Rt, GPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldpsw $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSBw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDRSBw GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrsb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSBw_Xm_RegOffset:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LDRSBw_Xm_RegOffset GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrsb $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSBx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDRSBx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrsb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSBx_Xm_RegOffset:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LDRSBx_Xm_RegOffset GPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrsb $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSHw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDRSHw GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrsh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSHw_Xm_RegOffset:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LDRSHw_Xm_RegOffset GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrsh $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSHx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDRSHx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrsh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSHx_Xm_RegOffset:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LDRSHx_Xm_RegOffset GPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrsh $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSWx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDRSWx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrsw $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDRSWx_Xm_RegOffset:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LDRSWx_Xm_RegOffset GPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrsw $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDTRSBw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDTRSBw GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrsb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDTRSBx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDTRSBx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrsb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDTRSHw:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDTRSHw GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrsh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDTRSHx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDTRSHx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrsh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDTRSWx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDTRSWx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrsw $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LDURSWx:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LDURSWx GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldursw $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_LDUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldurh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "strh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_STUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sturh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_UnPriv_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_UnPriv_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_UnPriv_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS16_UnPriv_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sttrh $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS16_Xm_RegOffset_LDR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrh $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS16_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS16_Xm_RegOffset_STR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "strh $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_LDUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_STUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_UnPriv_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_UnPriv_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_UnPriv_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS32_UnPriv_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sttr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS32_Xm_RegOffset_LDR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS32_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS32_Xm_RegOffset_STR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_LDR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_LDUR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_STR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_STUR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_UnPriv_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_UnPriv_LDR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_UnPriv_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS64_UnPriv_STR GPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sttr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS64_Xm_RegOffset_LDR GPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS64_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS64_Xm_RegOffset_STR GPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldrb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_LDUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldurb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "strb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_STUR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sturb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_UnPriv_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_UnPriv_LDR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldtrb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_UnPriv_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LS8_UnPriv_STR GPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "sttrb $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS8_Xm_RegOffset_LDR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldrb $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LS8_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LS8_Xm_RegOffset_STR GPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "strb $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP128_LDR FPR128:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP128_LDUR FPR128:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP128_STR FPR128:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP128_STUR FPR128:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP128_Xm_RegOffset_LDR FPR128:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP128_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP128_Xm_RegOffset_STR FPR128:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP16_LDR FPR16:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP16_LDUR FPR16:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP16_STR FPR16:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP16_STUR FPR16:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP16_Xm_RegOffset_LDR FPR16:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP16_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR16RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR16RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP16_Xm_RegOffset_STR FPR16:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP32_LDR FPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP32_LDUR FPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP32_STR FPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP32_STUR FPR32:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP32_Xm_RegOffset_LDR FPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP32_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP32_Xm_RegOffset_STR FPR32:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP64_LDR FPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP64_LDUR FPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP64_STR FPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP64_STUR FPR64:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP64_Xm_RegOffset_LDR FPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP64_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP64_Xm_RegOffset_STR FPR64:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_LDR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP8_LDR FPR8:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldr $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_LDUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP8_LDUR FPR8:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "ldur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_STR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP8_STR FPR8:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "str $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_STUR:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
       // (LSFP8_STUR FPR8:$Rt, GPR64xsp:$Rn, 0)
       AsmString = "stur $\x01, [$\x02]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_Xm_RegOffset_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP8_Xm_RegOffset_LDR FPR8:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "ldr $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFP8_Xm_RegOffset_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR8RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR8RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 2) {
       // (LSFP8_Xm_RegOffset_STR FPR8:$Rt, GPR64xsp:$Rn, GPR64:$Rm, 2)
       AsmString = "str $\x01, [$\x02, $\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair128_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair128_LDR FPR128:$Rt, FPR128:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair128_NonTemp_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair128_NonTemp_LDR FPR128:$Rt, FPR128:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair128_NonTemp_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair128_NonTemp_STR FPR128:$Rt, FPR128:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair128_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR128RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR128RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair128_STR FPR128:$Rt, FPR128:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair32_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair32_LDR FPR32:$Rt, FPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair32_NonTemp_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair32_NonTemp_LDR FPR32:$Rt, FPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair32_NonTemp_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair32_NonTemp_STR FPR32:$Rt, FPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair32_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair32_STR FPR32:$Rt, FPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair64_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair64_LDR FPR64:$Rt, FPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair64_NonTemp_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair64_NonTemp_LDR FPR64:$Rt, FPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair64_NonTemp_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair64_NonTemp_STR FPR64:$Rt, FPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSFPPair64_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_FPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_FPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSFPPair64_STR FPR64:$Rt, FPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair32_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSPair32_LDR GPR32:$Rt, GPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair32_NonTemp_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSPair32_NonTemp_LDR GPR32:$Rt, GPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair32_NonTemp_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSPair32_NonTemp_STR GPR32:$Rt, GPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stnp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair32_STR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR32RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR32RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSPair32_STR GPR32:$Rt, GPR32:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "stp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair64_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(MI, 2)) &&
-        //MRI.getRegClass(AArch64_GPR64xspRegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 2))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64xspRegClassID, 2) &&
         MCOperand_isImm(MCInst_getOperand(MI, 3)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 3)) == 0) {
       // (LSPair64_LDR GPR64:$Rt, GPR64:$Rt2, GPR64xsp:$Rn, 0)
       AsmString = "ldp $\x01, $\x02, [$\x03]";
       break;
     }
-    return false;
+    return NULL;
   case AArch64_LSPair64_NonTemp_LDR:
     if (MCInst_getNumOperands(MI) == 4 &&
         MCOperand_isReg(MCInst_getOperand(MI, 0)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 0))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 0) &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        //MRI.getRegClass(AArch64_GPR64RegClassID).contains(MCOperand_getReg(MCInst_getOperand(MI, 1))) &&
-               GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
+        GETREGCLASS_CONTAIN(AArch64_GPR64RegClassID, 1) &&
         MCOperand_isReg(MCInst_getOperand(M